Subversion Repositories filter_foundry

Compare Revisions

No changes between revisions

Regard whitespace Rev 1 → Rev 2

/trunk/68k.r
0,0 → 1,65
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/* PiPL resource (68K) */
 
#include "mactypes.r"
#include "systypes.r" // in old interfaces (CW1), this has 'vers'
#include "AEDataModel.r"
 
#include "PIResDefines.h" // Defines plug-in versions.
#include "PiPL.r"
#include "PiMI.r"
 
#include "ui.h"
#include "version.h"
 
resource 'PiPL' (16000, purgeable)
{
{
Category { "Telegraphics" },
Name { "Filter FoundryÉ" },
HasTerminology { plugInClassID, plugInEventID, AETE_ID, vendorName " " plugInName },
#include "PiPL_common.r"
Code68K { Filter, 16000 },
}
};
 
type 'DATA' as 'PiPL';
resource 'DATA' (16000, purgeable)
{
{
#include "pipl_common.r"
Code68K { Filter, 16000 },
}
};
 
resource 'vers' (1){
VERS_RSRC " (68K)"
};
 
#include "PiMI.r"
 
resource 'PiMI' (16000, purgeable)
{
latestFilterVersion, latestFilterSubVersion,
0,
supportsGrayScale|supportsRGBColor|supportsMultichannel,
' ',
{ }
};
/trunk/BUILDING.txt
0,0 → 1,83
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
Building the Filter Foundry plugin for Photoshop
------------------------------------------------
 
Notes on source code
 
Source code, makefiles and IDE projects under GPL license are provided for MPW (Classic & Carbon PowerPC targets),
CodeWarrior 7 (Classic & Carbon PowerPC, Win32, 68K targets) and mingw32 (Win32 target).
 
A Photoshop SDK is required (available from Adobe Systems, http://www.adobe.com/).
The SDK was also distributed with Photoshop 6.0 and earlier.
 
The source was built with SDK 6.0 but earlier versions of the SDK can be used.
(If building with SDK v4, edit 68k.r, carbon.r, classic.r, and PiMI_68k.r
to remove references to "PIResDefines.h", "PiPL.r" and "PiMI.r" and replace with
a single #include "PIGeneral.r"; also remove "fmtCanWriteTransparency" from PiPL_common.r.)
 
Before attempting to build, you must edit the makefiles ("FilterFoundry.make" for MPW, "Makefile" for mingw32),
or change your CodeWarrior project's access paths, to reflect the SDK's installed location.
 
In order to build the Carbon plugin with an SDK prior to version 7.0, it is necessary to edit
the SDK file :PhotoshopAPI:Resources:PIPL.r as follows:
1. find the line "case CodePowerPC:"
2. duplicate the next 15 lines
3. in the copy only, change "case CodePowerPC:" to "case CodePowerPCbundle:"
and change the 5 occurrences of "pwpc" to "ppcb"
This code has not been tested with the Photoshop v7.0 SDK.
 
 
Mac notes
 
The Mac build requires Apple's MoreFiles library, which can be obtained via
http://developer.apple.com/samplecode/Sample_Code/Files/MoreFiles.htm
 
Before building with MPW, create the "debug" directory:
newfolder debug
 
Depending on how the source files were extracted, it may be necessary to set
the correct Mac file types before attempting to build. In MPW, this can be done as follows.
First set the current directory to the Filter Foundry source directory, then:
setfile -t TEXT -c 'MPS ' Å.[chrly] Å.make Å.rc ::common:tt:Å ::common:adobeplugin:Å
This can also be necessary after regenerating parser.c and lexer.c.
These files are generated from the parser and lexical analyser definitions, parser.y and lexer.l,
by a UNIX (not MPW!) command such as:
make parser.c lexer.c
Pre-generated versions of these files (and y.tab.h, which is a byproduct) are included
in the source archive.
 
If building with MPW, finished binaries are left in the "debug" directory; these should be used
for testing and debugging, as they can be re-built and re-run without having to restart Photoshop.
 
The finished "universal" binary, which contains separate executables for Classic and Carbon,
is left in the "dist" directory.
Development systems
 
While a CodeWarrior 7 project is provided, MPW and mingw32 are recommended
as they produce much smaller executables.
 
These industrial strength development tools can be freely downloaded from
http://developer.apple.com/tools/mpw-tools/ and http://www.mingw.org/ respectively.
 
Mingw32 can be hosted on virtually any UNIX or Linux system, or under Windows.
MPW runs on PowerPC and 68K Macs under Mac OS 9 or earlier, or Classic mode under OS X.
 
/trunk/ColorTalk_Tech_Note.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/FF Decompiler (68k) Folder/FF Decompiler (68k)
___________________________________________________________________
Added: svn:executable
/trunk/FF Decompiler (68k) Folder/FFL Guide
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/Filter Factory Examples/Filter Factory Example.afs
+
Property changes:
Added: svn:executable
/trunk/Filter Factory Examples/Lite Pegs Example/Filter Factory Tutorial.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/Filter Factory Examples/Lite Pegs Example/Lights.afs
+
Property changes:
Added: svn:executable
/trunk/Filter Factory Examples/Transparency Suite Examples/Add Remove Transparency
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/Filter Factory Examples/Transparency Suite Examples/EditTrans.afs
+
Property changes:
Added: svn:executable
/trunk/Filter Factory Examples/Transparency Suite Examples/LumOpac.afs
+
Property changes:
Added: svn:executable
/trunk/Filter Factory Examples/Transparency Suite Examples/Luminosity->Opacity
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/Filter Factory Examples/Transparency Suite Examples/OpacLum.afs
+
Property changes:
Added: svn:executable
/trunk/Filter Factory Examples/Transparency Suite Examples/Opacity->Luminosity
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/Filter Factory Examples/Transparency Suite Examples/Read Me.pdf
+%âãÏÓ
+stream
+stream
+stream
+stream
+stream
+%%EOF
Property changes:
Added: svn:executable
/trunk/Filter Factory Examples/Transparency Suite Examples/Set Transparency
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/Filter Factory Examples/Transparency Suite Examples/SetTrans.afs
+
Property changes:
Added: svn:executable
/trunk/Filter Factory.pdf
+%âãÏÓ
+stream
+H‰c```¢C ¬ \Ÿ@(ÆÆÀÂÀ±ÂA ,2ي±ÃaFCì¥ü1lJ@‘æ€ë¯ L:³ÙVz-dYÁ€XD’Ø->óúºN•pîW¼YzLÑ7tèC6Ņ7K·_îc]$è!»ýF‘èbŸB wÅĔã"-Ebb>Ž­
+stream
+†2|~%#J1ÁÀ\1–Ëæ#1¨€×ŒÅÓYÜ@3æ’pi˜‚A¡¨Œ>#ŠÅå„xɤA %KD©ˆÊjw c¤Ñl»2apÙ¶ÕCM€Ò˜4gl[®ò•ÒÔ8 í Ù× ¹ÝE¸ÈsbmðÜÝkdo×¼­æ픓d†£‰
+;n‘Bt؋ö/!§ãµúˬ®aÍưѠÚ
+ÎùâJ4ðÜgÝYdo®w–ÅHÈf(2
+F‚ƒyˆÊ
+øÚ0Ï¨e%„â€BAHq
+U’çÊÒkKÝofcw†r só¨(ižÁ„M…Øì5µA¦eG)җŽ"ò)[ó>nåMyNP˜bJS©<é8Û×æÏ%œwº*èyÓ
+áÕ ¤Tr
+EµvÚü›ˆumÌ3µöƒЋñna!Ē
+DI I% ´ Ÿ1[  ,¨DˆúÄJ­(‚€ÚÜÏú
+€å‚¾u0Ù`?ð5¶C$.ýhTIí­¤V¼C0f ¨‚ ðƂÁ@hl¸2†ÀæÚACíP¡‘ð˜ã¶ÑÂŒHT2†èÊøÃv ±¼í¶FôC`p‹Ap‚ސè3kÁ”0ÅtéÛ¤<T[“Z‚ᥱ¨ @’(kÑ Å‚åäCŸÐ4(/ø‚Ò\ „£ià 9‡¦C2(CÇî
+¿›à–Ôƒsz
+éÀc÷dyõŒ €& Pj†èØcns°ÌƒêÛÎ\‰)§'´!Eн§~¢4KGßKëk!²N
+ޚÈ
+GÔû„p„ܤ¬Ä…
+0–O§øCe!ò
+–*K¤T”ådŸ/ê~V”ûO¼CAÙSpÒÞ"øuAÑ6DËÐÓa YPÎh7†âƒzjaª Yj+[b3¬ ¤œÊËjbŒS“%ñ TDìlˆCQ¶y>jl-¼imJƒÄZꅮe7ž4-ôT8–|›|o‚‚"Cì
+†!!x„‡[} !ÂW/‚ ½°0Qً5g,eŸ’-UÆZÄ=k¤Hd±âªGì=ë%DA¡„4§èP»íž7söRÊyDrå]ØIWi
+µÙC_t„¢†òԋÒ
+/]p¡“Û!ÇÍk7J­y«Eü0->˜­`7Eùם!”X
+¶†\( o–µè6X
+OmÒAµXƒô>˜z.c˜Šé3½cr)¡q³’¹ÞW1îd·9³¾HäñBäí…Z`†‚)ôUÀ *œÁC
+¡L*òÈ‚HLHh*P¤âC°c/¦Ö:QÃ6M;ߦR·£Úi[9™’§”ÈÝã:'mŸð²k J
++s Ñá´·¶žžîetªß4'ºÖðx1µ1]
+mnG>‹óãR¿½OƝ1ë•xúrÞR}P;ƒp³yÄN‘'#¾ú]ƒ¥g©žt䍟¸ÙχŸ•µj¡Ì1Á,%±d‚çPNÁËkÅ.li—šæ`ë¼%ú5¡r5T¤°/òJ]9
+ÛW×t"’ ž<µùƒTDëE…BëÍ:àCq•ÎãsØ æ˜(u€Îæ%*B¡ÔIÿ'[Äâ»èí
+{·*[ë‡ïÆO¿‰‚Ùà/‹°ÜÁ^OÌá;‡2Å÷x?tj׊ªÒÞ÷­HfÔÛZå3—ðóϦâÍ|ê$|·?`ê$&‚d§>+B
+Y/¦xåÞG#Ä£vNΔ†y0:Gf)§jß–wMöw¯ž:¢ÙfXúŽúî
+Ȅ—o$K%Ì+C[M™Ã¾EŽäx!ÇHúPÐ øÆ7’*&C¯¶ß°8L#Uî-0!‡— g¢á°P*ätsÂâ'éü…ØüƔã/*¢ÍX©N‚£Žp£ÆÐJ
+Ž˜„¬âÄ îž.å,²´mr)æû&Ñý‰Êê+(Қ±Í„K,Œ̍T÷2î’,
+óHl~^«.jnH‹jÔR4õ„*õÏ ç=*ï3%R þi†¿@êBOF ¯Jôälõ/VñÍ+«ƒìÃ"í¬öl!4 d,÷Ü÷Dl÷‚;j²Q ,ømH¬ÌƔ‘F$ʛdD÷àÔnCÃî–P”A£þóí%Ò8ÂS ÀÇ*gÊPª7&ê\Ü ë& ¼$<@êðǓ# GÇ-§Ü@†½&R¡1Â$Â
+dli×%‹\‚hâ?àëÄ#98êï*Íè´®nkÄ =HJI$•Èî1Ê èñŒñ±ÞђÙ-Ò;j }Tåè&· ³ ޘ‚.@k2ås!.q4Ï $jÂò^lá(è—<1J‰†Ã7-Æ&¢½
+Œ0þkˆhå,>4m>tp²@¨PŽÞ¶¯HÆoòä¤PÿGj+5³ˆÁ2Η©nTÇ.ó
+²Fêñ@ÖÔo&‰o+GÔH+ÄkSdÅȺºJ*¾$
+¦RîfÚ]äÐ ±®ûÂ:Â}`ï­
+mç
+µg
+stream
+ÒÈ9 Ãn?MSéu
+…\jµ¿­‰Ì+/f!D™6Ƈ†¥èÁy¶CäÐ愛ü‰è–±Ã5mÙèü¶––²³ÜGm¥æpˆcöGŽ ̈håébcZ‹~v'KÂ2Ìz?qe38\¿қݻžkVƒrÓ¿‡T²/‰ƒÏLr&á죯®\ëEnãf‹Ý¡Wxu[#.‚3”
+ìh»¶0éò誃$R!`~¬7»×Ç$šKŸ3u¨ä'|4NՊ-6ÎXG,B§ª.:ÀÊ©Êýó[‘úU…ûhÜÏgã"7‡,ñóÅAœ†f£öÓ#ƶ“´BQqPŽ- vý’Ùž¿ÜuGÔˆ…ÎÏü¼ä¿_±R£šm«_Ÿ>;K¶bo‡ƒjæ¡ ŠK´ð8Ç1=ŠØàÁ6sn©€º«à³ÐZIðúWNy÷6&°ëau9˜@ædéøn¶r©PxY,6Öwªz¸(Úàí&Ûyé|ºÁ0¿T)Æ[ø„ëÜ鯝Ū:ÍÚ¸Öꯅ‘ýÑrá%/é¢ù\TÀë_·]]6"ë^µ yØ¥®z“±\¬;ÙqÇ!©ÖWZ|ÿ¨/‡ÏzFoÖPz‡9¯§!m!ä¡ÓtZÕþm[´:ÕX¡òo½u‹€¼e;ª
+ٞzK©§§¥
+¢—*ÓÄ^†þ´Ú ¨9B§€7îÙU‹¨‡œ(ƒQ—O ¥é¬Þ;3UêïAr<‹q!šÍé TÀ[µZ­q1°¸ÁLɑÙE‘ÑË®ÞP$üÆ""ޓ\®e2‡>îèú¦ídQ¯(Ž‹H#/^,|•\«ˆj¿‘C.DÊá®\}Jôñ·CèA¥D×»9îTæ>¿Øö=N`gî„ nö M©pbT¼›WÙõ]«Õåèô)ˆ mÎ>¿ aG9¦ßÍÅæaÍxê\Áó×hYîÜϐt"c[
+éÖñÒ¸©QsTÈj]_ÌLŽDB”_="+ÍWÃô#Daãr_¹ kbIÇÉ5m§i x›Ëè–î¥x¤¬Î½ø0!Ùˆž£ÿJFR›’°ˆúmtYxÁÆav¢±4E?–‰){îàäŒ&Ï¡ä–,…˨Eø& ­¶Ë§‘`.ŒƗy¢kÒô¦5§h篥@ܓå~U8ʯ")°EóëÓónHhúæ üÿv( hUÈQS{ n-9»Þ׸žŒ³°:e?ŠÑåA×$*zŠ“cò^l¡T½ƒèî· ùÏ8Ë\ÖÃëÖ9÷ ndA¥t‚Öø ¼Öɕ¶ Na˜`’uð£C·žLˆï‹ûZ™–:ò‰ì›…ӍSFŽ1"¹â®Gpëê‰B #3Fôœ•”¶BÉÜUÒ¥5‘1»
+^œ–8\¾ëšœ¼«vVb+Áü fMFËéCm—ÈúÀXï6Ò6K[™U8÷í«u&AëØḤB³¢Žb vÿ†#ʵ<bJ.…DõÄÍÖ¯@}èÎ Zù‰·â(ˆNOìcd Ç ˆá`Ó% Íd–óµSѯˆbÁ
+Òh®ÐäÓ‡0µk³¥[ ¡æ…`½Ãß)²P÷o›jºp‘L3:WGKÅS]´ª[ƒ,Kˆ_
+íˆXŒ¨˜ó£3?À7R_Ï°)JŸ¯óÎH:¥v†Î2ê³"9†˜¡¼
+š¹àå¯ïGõ<_!­øÆ4®#•?’]âOâR=iò—\U= Œ™±MµeÍíê¹ÍÕޑ1tÿ†8ÈãGÞôG¦û‹ÞÅ^#u–K¾ž‰+àþ¹=Œ@”M(þ߬´@Ř8½£Ñ·‚¢1Ž^gjžø͖ݿ„=eK’~<|«©zÝ©SD>PÆ#wDÝ[zïH؁
+ï[°ìõßâLÃ
+–-0 [y“ñ7Ü¡v~á²´ xCÄí—ïÛ§~bX‚Á7æÍÿʒ8A6ý…œ%Ïڛ4’êa¼CK{éϱ»¬mλ“£ïÌÍMç­Ù¶Ü­Uç›±K™ám+ró͔£)íà7>­¬q«­?ÊÿW¼Æ†U˘ ¾¼(Šèæl# ÏA'ëtÍ–cßà'Š‘tJÍ>æsqðë>“Ӥ걻ßæÂséë튇©­µmQü~¢øÇÔØÌÂéªË¬ò`äD– #;Ïiv‰“SOòU!`~¬7»×;4Ž¡=þ»ˆÌûè Ø)e•á«:îbÙݽ.ñˆ1/n<»€kZ2-sTå~v,Íç,«&MOæroŠ'Ō¦S4É^ÓsÁ"¿’¯Oÿ%ëœU ·ý"#ýøHø7ÉüÉn°.i¾-C߉F’y<r‘{ÒÄ Ã3P¤° 
+<†)[ì§èR§›û© øì}Ÿ§‘'ØXvgY ^HF/K·c*P½H„s¤óKgÊ\O\A‡F¼§ô¿‹y2ùDo²z {‰¬šVŽ@Mæ@Ïsg­Pv[¯2N í*ùvb‡‡ÅŠ§!Φ#Ïu‹¥8ålÆ8 _|†¹Lx
+ÿÖûc¾Êõ„ÏóayÚKj͑›(v‰ç'sû7â]ríõ9Ύô‰¸6~õIHð´ÍNs»´»¦‘ŠÞ×âA…øp푍Œ´¨»ðØÚwÚbuŠ>]ñV˝ÿ80¯»ñ$6 ½;eµcke¹Wç6½oÆú'!Ý°íXñ8ézŽeÆR˙:’U§ãË L*Kc£ËÁ2xоͳüIc黫îééÔεE¯òmÔd^Ù>ÌéõŒB
+‡)¯RÓVšÊ
+-{‘ŽÜâl®_UŽ°¿
+9
+@L}ñ Û¡¾•Ôx¿Ê·7ï@M ­«.|+4Ñû3ù
+sÂFNjyÖªÏí½›¯A0ð¥J›ðyÙVoÒõ
+²/èžG+!ýôqnÉ»ŠF‡µ§'ÞˆêwDº\‰’\¯å®°ó#$ïiUo„÷à|ÐC´Ým:‡Êà æÒ1–„ö„àڂ_]½‚R¬>cO}öDÌtÿ§¦éþ\ò]ˆLÔGQ­Í?n~•†ý½¡4ÞgP•@
+*!ù'Ëè*?Ó¦¾°?˜½bͼj_å rJ_ç•Q“Æ‘lÓÒ&0žÖpxJþBœ™ØŽaØL‹A¥–_Hgv° ¶óú<9ÇÎuºîk&ú±‰‹eÅ,x¶ÿ'3!G„ax„ùôP‰9j#ÙrÖ[ Ž*R’æ?Ž2¦îC(y6l;wBd®9}³
+!]vcá.•ìY†X·,¨þö@T¡;´Úƒ÷±gȜv"6Û;&~Hb“À+ÀGÉ!®×ô @œ={÷Ú´+;B[œÆø 1”?œ›çjQjKqµœÅñ¾ÏÎP*’0ßË'ÎOÖ Mæ]
+n«ÇggŽêFyÖzdóoîkZ².¨=2Â[^ ¨,¶éXÆ9ëß®G8}o–„)µù~D*½°¿°ÚY¤™ª(¢+x³y Ñc|ß¡Õ²ÇL}’³ Ìr²ŸŠ
+`r÷D×2 ~&\22¦G‹vpVùÔ«£9ºÃ‰Ž‚fEô[}åN õ³W?rNÀ’ûgÿ…ÐRîÁñG6y¹s$Jh® ÕÓ\Ø5¸¬…¡V;1€¬Dd\¾öI6ìˆ9E.ŽÖ20Ñ0Š
+¶¹9“;˜Çí°¨¨T‚f3¾Ša„kªQ‘hÛö~g3A÷«J|§9œü
+Þî´û«§ó9ÝBM f´oˆê¢íg«v8Åñ†ÈUò¹W·VŒ·ÑýͶÉjX{¾÷÷¥åºdD½šŠ~‡*(‹oZŽZˆ{€T0'CН(~a^ÄÓ £+IrÓ<¨~¼4r)›ÂÕú‘ê<ëÞ5ò› Ž¡ùë%d`–Gÿ^msrIö獑uŒ îÖýÖÖMÉ£ÿi]Y°P
+BqÑ^F/—!aö÷¾¸š¬ŽÓ}³JF½"5ßÕ8tÞohm ²ÇÉO'RYL½LîÕx\ÒÀ]šY]¢!Ißœz­9»S¸ïŽ´xGÊW`…DêЁ%îTœö ؋±†swôü* )¿†·a”ïð.ƒ`uvSýËfE™¼cŸtÚÀ,˜ó…C‘4O 9™zj*©^É«óâ¬5À?xÖëút£%ô„ÑRëJ½ß¨ðÓÀ±cd1«â+—Ʀ½ä1µÀ1k6fFÓc¡ ËMïñ&10 ïÁìçñž¥)(Ôåî?÷ä“.6Þfl8þš9ýª¯h¥­×n;Û폾öÙ<'Û²{$OÃ’¦ß`¡]_Ö|׊¿Ilr4Ü_áû¾¼Ð{ܽ‡Š6>5¬È¤«ä']©< YöKL[kîgÔZäŸÙ&2èÙø™S`ê%H¡œ¨1À„ÞÌ8ââ¯0kï_ÙÊ]œØºב|ù[o
+÷¡ô-¥Ux•‹îzp¼µÿ?ëCuÝö+áL€ W—ìð“æ¡ñç·Ù¸ÓŒ
+ìst²«º#§z®¡ÃØÈfD=Q„¨b>tϼàWÈ5I>›Âí:ÕË?¨Tە]drãf/•‚O,dNÙú/ ‘%|“_ í‘+}»_kyY'7I¶¬Åá§-Òՙ³|)šÚICó;i °Y@
+†#°\Ê/ì±"ž%†
+4+éŸk‚ |Td£r§AÉ1þ©±¹½ßÓMA±T±§ÝT’ʹd„=‰´ßFÚæM–’Ë3•pž{Ò·a»XîO… =pH{ø﷌‚ðÐ+Ð÷†8¶v^լϸM=U¤ÃŠ‰mü
+®¾y‘ƒ7u~iW­#j[q·Ýñ§Ø‹Æ÷¨ Ë-@¦êE½›÷Ýs9Ò¸ÝáCš¹77™“Àâ³Ù³¯gøÈ¿Ë~4´m
+–͇7÷‘¨×ãPt ì¥#kÜ,€ ,â¢ö1^`áê¿gšVâ‰Æ¢íeßú‹“tm“é¾`t¡ H]´ ‘¢ídExZÒ lҌ$Š:Ì]Xm.«\´ñùO®¯NZgß.ùx ¡àÀÙÿº"0ҝÑÌ]54ÊÛäx…¨¿MŠ“+Ûl¢]˜å™ù‰ûÉ»ù‚ê€|
+ÚLüj&úëù
+ÊP…îis¸RhìlÎ\Åpï\õplx¯5m+µbÿ ÏáÆm»µ4֙Ná£^Âíƒ!
+¾nö—&(=§¶fÝèñ ¸K-ßý Tg³‡ýë³òô˜—km¶o"½¢^Áo êљN´Ÿ]¸°¤Ï¥îq®¿¿’ç®_•îO„Jùï¯< ÏQRzdãñ@,»;~ÐÔxÁwÅxK%-3î
+ï™ë“1£vÎãb|øý`»YÉv&Ó "¸ùgúÌAÙ¤Ÿ’ lè䓺ٹ'”ÁÉ߶[C۝$pª÷ä»Ö6@(C?…Ç–ä‹2§‡lА·0.®Ïsr©{TUœvD¿Ì!ï‘økÞ[§ÏlºAV‡O™­ÁPL}Y·À xB¦ÐpÍ©¨¡¬£³·tiøqóCXÛ•–ï
+aÉmP°õ£¤‘AœõÌÝÊþŠüN NúøŽQg®é[GS‰í³JٞL°W•„¥ËÇñTW4 ¶q˜þ\)Ò*ao Èø9†ùÏwΒs£ 7Vš©¹uõzIƵEüL†¨-Sڷ퀅ÓzV&‚«èÛ˜»ÖS›0·A’i±æ}:ëø™DåŸÕ¸Î>²\óW¸Ü<ކÿ0äD-ñ£h«Ä˟ÊÞ I5?Š]¢±ï,ù¦1pD3 …åßT ™ ê
+tëÉ4W¬KàO”U£Qƒåã§ÚX Öé·JÒº>R·š˜×˜`ñOªJ#Ïh‚—mxÍ¥`éëeº}BKqèh ¸-‰•Ù[Y~±¾t6ôð¬åyÑw;çíµ“uã]]ípÔèWþsö´bú#Xô¼–w—ö kµ,¹'¶
+ác»&Í&w©¤aS¥äíX÷.z–6º”›¢×¾âIxü½Ñ›‘¢¥€MÊ×VJoƒ“—å”$wß$Z!¾mê•âþÃÜßr†Æx»ëgèü#ôkÞòµEÂñבðªàxFN‹²È $1±ÈhÆË{¬_‡0ô8+èˆç§ÜÅìò™Òðf«uà¼#-hŦlãñvdX¬Á²4ÀX•=8¢ñrҋ%Uƒ²Ä¾¢bʛû
+xrå
+*îòŒfîÄ{2gjعJ…ñ³iœ¤2±
+C63:ÿ<Z_ A¡#Ò1”õe¿»Ùá0ÒôÎÖ<ñk·QýpY¨eŠLœ¼³‚¶QüŠl¸ŽØÁ¿VNßܐ
+–ÑëiہÅól¬üÀ :»A°ËÊ&Êç!囓X
+<?|Ìq½~g™X1üö_Û@D:µç]ônApv¹bô«¼Ä‰ø=íܾÆ,ۙ[s¿3 ~µ³Üm8ßflý.@ÙXàÅuÙd‡¶søyýŽªX÷Q@q_.$/•Î—=É@*§Hì&„î™CP¬J„>’FCsÅ_¤øv.”g‚Ì«Ûå©~o„R7çfÌX×0–uò.r˜Cô5žÀùêÞ-Ô­û Fh€Î‚
+iQ‚9.ü}6rg,};qTþÕY9›£µßÜÚzή;1Êýc1zg3ږ
+œëº^»bV
+H?}p‡-ÇÒMMÚ­€ï+ír ¦012Y3ðB"±Úì2™”
+}a)‚þʉU!J ˜°‚Œ ?äaÐWœÕís¿FþÜ>Cªböt™¨É3:eYb@ò®ÒPÔC¨eŒEϹ/
+jŽÁºöc¨8ì×ÖlïäÞn¢hwñ¸†õd7UåÖuM\[ˆ|¿þ¬å8Ÿç)hŽ0-ºBLòËXùÌ0oàn3ƒ¹ÍålUæÉ çj)ƒ ˜T~YÝÄ$–©
+O®-Ø
+ZÔ˜ú¡Æ®2žD(¤Â%t§•d”‹8~+9ó+Ùf,—­ä8bŠå™ø¦Í]5Ç3µ˜C'ÿ-·¬åG¥‘ 'šJ®ßþВž°«ó¤36[¦„‡”ãEEéu{Ä Ø£ä? Ö¦Ñîú1uI÷¸:ÏdÏfIÇη ¢ËÀÿ]¾Ìf!YÜ]ɖr)•Î[Û«š7Lß~lq'ÉìKo=¾¶cCÞù°“;Ž'&׎CS¡÷È^ÀüŽa[K͜mh59L»ù ï­kuЪaÖÓUÖR³ô]ݵlÒVsžV Üš8†é×S'»É_„ºV½©šž¹¾Õg®í&0÷µÔ:d„aîi¾ƒ}¾‚ ëú=mÜr] €eÐv—÷ÓèRß)^ß5°ÜÈÓ÷¾åAÚ(E~"(_ Oɞ¨›d)ô¹[0­ 鯧WwiYÓø¡©uޓçˆÑÝu痜Érz#BðµK_ÃnG™ðÍFÒªæv<AÅ­\whçdÛ¨iµô¯“QÞÒl¥ÈÖzæ„ÂR.¹ŠÑ¤è. X‚Ã4J2«YðŽV]’³Ì?²'þ¹¯Ì8'BC*;—FTɄJŸzR—š8Œ†ƒ(þÈ
+¹øoËv£äñ*Ô¢˜øÈ+žšpiܸ £…Ê㾸¼W¥S¯áD^D\Åôæÿ–NxŸ­9LÅC!{½.Ä؅b³É-úx
+öҗúd»™­MâߦÖhïQ^É#**Èî^©°ê *Z3ÏέäEËH¹š[¢O”æä/¯Œ:"$‡É_s‡1åjE!qI»,¡Œ‡¤§8~!àÉ֛9>¹~‡OqZaõ‹ýLö[•I‡/¤ÃtièÎfú_“4OŸë︸‚ö+‚¥´¢D¡qI^í9p°”’4µ¼¦j&Ô$ݳ?
+w7­çÀ>i ¢ tÑï!‹XŸù™Éüã(¢ƒ"ªtÿ]¥f}G‡™ï{!#?¢ª?Œxm ‡GT9;PǎãŒTólü8ê‘#ÛéT5ëcw¡\ÿíäÍÝ$^?eÆڎÀ×ÞڛÙmâ÷-ò¿:¢alX?»á3OÉÝR·$E>àÓùÙwÄùŒ‘©0øŠ&æ
+XFÿÞQ~;Õ¿2‰?Ú禷üÈ>•Î››0Wëá ‡¾Ò ò&ºåÎ1Ã]ޗŒõä¿kv3å»ë)±w ÜÄaËF,Ü×߯î!ƊìRmeK…üëÂ0Е§‚f±2g6?ÕÅ΂U‘oñU^o‘ª^ýý²uAW·EՕï1ô“]sM“ìƒ2ºioä:©’©vNg”­ãfÕÕßۀåÊn_T÷‚Xr/¶¶У[m_Õ^Kbwyøic‘Æ'?K|^ø“ª«Ì.Çãƒ>ˆþUã *(]…]Š²eµ”æüÏÜ-n ¶
+OqJϺ9=]&0³oÉÊ
+ؒ1=g|&þpGΎ
+¿Eªåâ♩ÅZŒ*g»ë®/,"qCFüC'ï.Bc‰A# ¾Z:'ß8é÷ºÕm‘:wge7n~Ùç½f{DepâmÙù&ØjŸáíÏu5WuȲŠI^…Š•ª'—³‰¹@ŠàÁæ%:%JôŒÎ¥)|a%O—
+Š¼6Ó%ÏÎCHEbð͆çì­BìùA‹—'àÎSbËK&ô#Lq*‘;o»žé2³¿ !òܹ|о·
+ ²%Ölù^ÔÊ¢;¶_f¡Ö¡öÏvøuÁ*µ
+Àë^€¶´[Z‘Å…MvLÞ?…nðÇý)Á‡;1Êáçê`D[N[B5ÏÛG+Ü̓
+ȱ%ÜضLeR—î~ÚöUb믘ŠH§c%7ÏGCëÛ<5{±lR^Õ²äÐNTnP­(ãø=pPÌŒªGÍÚZjßÝ9X„¸d/ל éóN­`ælh˜åÅ~;â…;•ªå·À3#\š;gÆ®êÌ@Þ8>Éo‹?ÇÌÐEìù†¨°æþB™)8å1Ó éàÙÏñ+Ùë韊©Ë}\q²näüÖ²Dr:Ô«àÁó?ŒìY£#XønñFeM€ФnÞgºŠÛæɜpB L¦JhCÝ+­cØmÂR¦Í°æc€ÂBo›g`<)5¶°×E–\9¥hñf¨£Æ‰‡Gÿì} O}•„>|áÖx¿ì~ǟï»SŠâ@£« Uä/§Ò9‘4݊À$0®ÄEIaÈRê[ÅD¯PŽ E—£u<ÙtýYYª4u
+¯ç’Ò‚MŒ5G‘ÍÝ»ñ…~”5¨¥cYH›tìÇ& f¦ƽŸ½éÐ0~Í?BĤâá!”ˈí-EsdÀÚûxFÜ·½—@®½½Gª–f2ÑÏێS:~“Ì—Aš·ŸÅ¬ß~[§U67žG¼?…ï§1ÀÚÞTÿ™²{H3³)lY&,à!ï¹Û¾´ò@«ôë3‹
+ºxŠfèÉ;Âǵ­˜1ŽF¢Â
+2®À©"W¯a#Zôڑ´yi=᪗-¡`Ð#ed)ˆ±Ù •yMÉ«©¹³Ú¥™ÓN#^Q%Û#‡Îó>¼aæ¡<¼vîõÚì uoí»‹æR0l|3÷®pAy]ŠòÌÊ Áӗº%Ö`>ÆPO[ÐPñûtª›ŒÙ°ŀt®8¡@•A`ÓØ[φ ې³¥äVK3ùîühô¼êÚÚh^œ‰z4¶Ÿ;ÒuÐAïè®xϪ<·ýÕx£Eð”ó‹°þÙü~’÷
+°& 6ԈLf¨ØøVo¸Å-m:¼üš.Qx°írøÛá㼇N"S6²‡tû_˜Ç]’Ý/k+ÖõqX–ß²_Ðãäz--¥0â;MkYõ+6*;ÐÇ
+‘BßF°a¢Ý•Dd^žÿB‰M{y¶¹j£LvÚ˗lW«œž›,ÞöØãw<œÔVÿR´ÎN
+ A˜§É˜­¾ÿIa=[héªtŒ6ݍ{@ðHøsæ»âžÕ´Å­å UJ¬¨™£†[cæEA*ö5\xÀˆŸºn𐮸/í–fÕF$ó@Qi"
+kÞ!ÝR®9î&ŸÚ,{;3øl}¡ªN©îÙ(Öµ}%Ÿ&M;úPwW´j ÇªTɵ壆òõÑY¦÷{<O…ÎËCL²‹€
+äX!w.{[rRÍz&Ô«ÛV6­„7SP¹ó1$n0z±'>¢¬ E|¥b'„Úéµ4øã›VÕq»6¢ ä‡}Ȏ³êüÆØu+üøÆ(2Ô:<¾ò“¢dÊ¥BΤ¿©›GTâûÀiør›úlÆ:æIfÚ…Vļ‡®äÜ`©{k¹ºS´ËšËÁ£å¨¾ê£tÚkTa7®å™QwYhrè?¦ŒN¤2rÅoß·Á0ü"Q R!D£–ê>I’ $Zf½ãí»ï&š:5éQTlÖssí`›’Ð'Npå§ÞölÓmØL²R.f (ÝQ!'ÖtÅ%ɒm©–›ý2yˆlËå²
+N•EStjyóinf;&/Ñ­ÝÃȌ¾Å:ÖZ‰Ûîā¼äbmÅ(7/ÏDIhØÇ|¬ýÑÖB®fqghóWÉ‚zþ´Þ./qÍ+í÷IKÆÌ??#•xñl€þšèãÇ]3å…ZvÏ
+½âè Cã Àý­Ï¿ð_ ”wòíÀÿG9§ÙäҬ÷H"ÏèOÚÆO÷sy=9TóՏDüA?¼–Ÿ=Ò:­[>µï\_ÉnøíHGbô͌2¡ÊÓß>•©Î/¥f´Þnü_e-õdÒS'.òÂ:,*꾟IàG~k'ó@3,¶žÀ·óÍE1&™=-/‰¦A³˜¶[T*֗v>,>D1º¥,Nìy«²t9’ ¶u^è¡%²CëíÿŽPUäÅܙLkrÝA¶¾~izI‚Nè•Øg¶3°8' Ìƛ,@Šgp
+Òâ­=žÙ£ëj³F6ÅËO²Ûc£ìb‰äCö\¦ö:…{³À}.®¢g2øVÐñ٨iiDŽ;ûK3< ]b—Û)P—ŸG·È¨ÀÈJ ¸¬êô
+ˆ¸é9þø’²&_‘Ú>®ãj÷™˜•VÒ^–”ôݹò?ÐjÖË7ª<<ƜvŽ Â^TE[‚¬Ï-–Ñ ¬Èo8õ±Þȋ ÀWWÍúH vùø žá!`¯^Kk"{J¹w,É^5`‰‰Îˆ|/îŒ6l[FÐd¹ý®y…¯ê+áÌRþš¬)¸›£1¤úÆØ®_u(9_Tw™7+L<ёç¨Ô´Š¦‡ ?ú5©‡wÚèÚ3NɹzNiäúï)Érlßø2»±Ë²ÉÒÉôŽí4Cú·dCùMQg˸pð:,­‚h2ØHOž;";XW”³P·yŽ²æÈí¬À}w¾g™øfk/CšÓßÒ°P›r)}õ^Y½ϝՂ4À8Ú¡ùµT9Ïæ-œÃòª{"„š¹yôÛ24ø0›+ìãRímvV>•႑
+(JKðpP*„]=ˆN·ü­¤áÀX”Zÿ.tDdq ñ±8Oh½i̜—ž´ÖüwÀÄz•‹M•,ILŅ×Õƒ9ØÈî?Ýf¬YÇÌÎÑ/JÚHMIú}uñƒè‚&L}Ï1ºÉ%âQªž¤¿ŸÕŒ„óf›\8Ûì4{@·¶Ô¼Ý6½}ÎÜ­5Zk¾Àœ¹…nɪ‡hm9…ÁªÈuøâX®‚¾ì R¼TÓ{bŠ=+õËm ,¾ò¦´çÌÍ+íO £Ña(ŠÅeeí¥ÛE¬kíe_·itǘí˼št¹©¦êXI]‘>šY¼)‚ÊPɶS7Ôø7ô”|Iý|ÖՑç¹#_(„ µHÁTi
+ ŠûÈE‡î¥î¯™r€jú•›±–I?ƒû•WsÎÛÞ!tz{¡”n‹Í¹#I(9[ ÈWÉõ]XÚcÊ@pá=Wûg
+L<Úm³Í¶—è¼zž±iƦ«^÷ìø^5ã¤fYY£tZ^õöê_7Š_™®Ñ@…¨x<ìh^v½Z*ðè §\›ëN½Pù-ô¹ÔÇ%ûàÈîúÖy*Štý$Pˆ¦¯¿r*G±âuõIúÍÁgJ`ÊøÐY—Ñ)ù:
+stream
+¹Ø?J¾fÍÿ8‡¶'ëÜ Y«Ô›! ƒ±`ѓ[Dzý!B­çT–¡óRþ’<L¯äÈp*EIÞc:>¸\TN>}ƒ¦YŒG3è­R.‘«Q¨N›v5úÛϲª’8y 蓮hÞó‡Žuv,î
+ò:ÄAÎ:ðÊv#,| ì…>v@ÿõƒ«ÝôyËFâïºL"Ãü|ðCmq—ýöç{ì‹á¨Õq¶Fr¤´¶71lÈç&éyU“\Ȏ¬÷
+ýE·,tæ Qö49oD#vç-ê‰Ó8¯º¸Rº¹bMFü÷b]7›JEz´P`MÀïuL_Ù³ÔÉI‚¦àeyÄ¹@0©$d)ÛQ'àNcÏq,s)?¬B†"Ÿªà%åƋ£×X¶œ {|WB‰-_r%^¯žs&,sBg•ÖPÊcÝiˆ¾Ê/¯ŒÐÅÞ.o—òâöì6ôXE‰¿‹Å3–ÿ":×0®Tˊ¤«"¬äkH>)4üÌêJSOÑØGxGÇW#…Ó¢ûëê1»h·™Èc9_Ô*ú.-±·^ M¸–ˆ(ùÈw?ǚ
+ ~(|»H‰:¸ ÿ!…+À¿æÞÚ¦ì»ÞƤkSñ~äU.0©0ð×uQÇ¿n|Í¥!k¡Ã;f®Þ:ªEé¿r{܄ç:ýjÌðåV§eÓ<i]Õ®ZzM;ìQ¾ù .m°>Üß'ý6ëG?èãé3PMÑYÚÿ
+»sä#÷.vrR܆czä”ê[[Ez…*Û=çHœÓdŒàß­ Ù˜jæ]ýÐÓ§E…ÿu)ÿº+hý]§©)Z»ÓËÚ:¢ž¶Ô€Á1ad[Ȉø•‹X0l`E·=|)“–,ŒîK$1ëM/g.9-–ÚÝýq’ ͔—Öì/2ûçë IÚþZ,O†´ÚôI„íx`â¬b¹Ó¿&Ò_„:C ¥u¤ýG¸³5=˜çxßúo%bÐÊyèÚgÙ¾ÇGçý”§çä¦øhû¡ÏÿúfÉi‰·q3úïÚäGLñ?ëÞÂ%Þ<¦«ÐAÖ-¹>u¯¥ Ž¾ÊËáéï¥ÿ׉‘[_ðQXDvê5æþ(çï%ñÑ,ä– Áñ«È@ÿîD‘Ÿª¨•*6Lo?©?SÒ(C±èé­ëµ?ôЄ®<&—Ýo‚GÕÛÂ.3¹Î×IzÜ·P^”
+o:4ß´Y‹gm¥…î°„§%"ìg__v¥H@xæë:tÀ7QVs´wû—@?á&áŽK‡p=Ï®¾4ç̽6y%=L¬ú¯óâ}‰ö©ƒ?`Yl—CÛa¶êÜñ#ÉÝpÃ4â«$i~"Ï a?N¤ŠØ&‡Q¸ÜºØf3­àJÅ,}xšҺFîHA,q+ò¡“×¥·¼+(„æ³’ÊÑÄ`k±þšG2"ˆ©7þW9 êe´Gˆ;tæ+¹¡é'Ÿ÷k»*æ bZo3gœþºxàˆY»Q¼ÐxYFnÐÄ®çI‘y'˅áz³àÁ×AVC±¶‰7;W´¥B´útaÏ$5»qrå’
+þT,!ñKƒC[€â=±5U»sç Ø`7«‚Ñ…>eë˜ 3$T9Ýç½[“/<ÈÓFí|®$Åûû½ ]×:1 ’ñv˜Õ9w֟ãÇۀ{»Á2²Åƒ(Víf1‘ÅŇA‚•Ë”Ÿ´ú\˜ZÜÕDAâ,θ«Í°õ™À¾Ùžå¥Åz6iyô/iÐ_ÐG1»Ÿ^‘Rù[{!ûe°” ¦Óöޜs<ºþËä¡_I¿ô1œ`OŒßºyD‰-p·9ëN=*ø•Ø¤DAÚ<€uQA žÐ3ôJö””. Éy[ûí¶n÷[ú*›¨fg¯–þãHždcœ«kXDtl§_¨IÀŸfe*7·.l¾¦«,þ÷½6© ùͯ-ˆb/Y.{ÆUzݝ›Á:ÒÔµ£Žý¹q½¹öIr‘éÈü¼µÒíÁ‚%»dEùgM^£"ŒXg‰Bœ^î¾*¢ïœiQCQÄær‚áy‘4‚!”©±Íõ ÷þèÍ<°$%- ­¥ß*rÔ
+8íAfx<ÝÚ¸¯‹Ÿ1®5¸n/¹;7®CÅA*¨ú:ÒÙà†^cš¾ÌÏè“»Ë6ÌŸçk´³F¶.aR…÷ʎ?|ÄÁ~.c:ШÊ<\Š¡<PÈ÷v‡Oñ¥ÐMͺAÊ蓻Û)D©ÄÈ®1kŠJÊèp“¸7üâFfFÎZu)¶îa×+Ø' åw‘ÛEŽÔú¦­v©Ïh†Âmn4ÐÉ=î&wòðˆÜ“4ÏíMíõ)%e¢ráÄäǨõ’$»EÄ*òñ;ˆXñã»&Փ—ñÂÿÒJó8 òy\øô÷í¾Ä06/h`'‰ÖWqª‡Þv°4¨Þb_N)2—GóNJyz‚
+ÁpQV@W³:¦­ã·(£í…µÊ0ôØFž6׍<‘…ÎMiüêßèՒ`
+úh«î›ÑŠªÝ“æ‘=UÐ3~øÖeˆé«Ú•õ8NüiÿÐNÀ)tÈÕ4ïÁˆúñ¬÷Ñf^ØÇä
+ä¦Í\KpœÕíÂ(xcF½b~EoowTEÇ.÷[“‘”á€ÆÝ@Çc8Þ`»Q
+ÿ¿€¯[\ÃÃúÝÆy3Òúez‚CëEÍ°?iÐ<BŒþT:ÏÉЗH‰¥š¾£ ë›2ß¼\ʬóò?‡X;–¹þ¡íÍÈ04.x}lù½2m=¬áà€Êd½MðÍDOV¹Ï(]!àe¸R¡¸Ó€¡ÿ…嚦Än­•îysꈇï*'‚ù¥Â#7ù‡–áÍO3ŒCz`|¢ÂN†.¬V¦;ëWfB3}YfÜ{]F,p‡NH"!y¼­îçRãTF¸µ#Úßeë0y/ñÏ¿#¹¸d¨fü<Ý:ã0­¨Q#dß×7@P‚¾0Ò4r/ñ
+À¢!8Î:a0?ËÙ/¥¡%ÂÛ,_¡ýûÕ5ú\kšßÉب ¨ÏˆÊÚxã¥yڃTš–¸,ª§Íx”ŸN]²ét¸CÄ„LýÖ8€.ÅàÍþ#"¸O §oÔ¥“˜øwˆñg›è…whú‚Œ-ÜéÿàVËxåsGðН•“`X…Ó(·]ÜÛµ].xp2M¯7ÇIO`mà©FŽÀK4”šU³íƒéAOt(µBË4Þ»‘k½±œšÓ èSXŸŠæ$ëÍ°7â©"ì­:äð’Û°–(ëʆ9â¼à%‘×£šºÔåÈv°ÕMâOé'=lŠ¦ʕØ ºERCzß,H(³Œu)&ÌÑ6N
+/ׄyèûyÂÕMŒGKCrFNeö…íš ºÔà«QnÐPíüÀ~$¨p ›‡ÍDÚþ‹Æ§¦T=î%’©ü3‰Ý”Ic>I†Wtª;2~C,FgáóMkÝ˱Á[JO¦0¿,íŸJP¿n.˜Žî¤‹ÏãBï>ï>5[*øœ íöö¥lºcM/†±÷
+#÷¢Zßøóå>WûMN·1ilüe Ö¼·Q=K‰>)„{Û‘ä$*#Ñ®¸Ww¯Þ”èU¼ u
+>2…˜§ºÄÓ;Ãg_FFãs(dL@ºsäö×VdÞiöÏQÞYÊS<Pìùäù—Ž¹ÝkRõéDóñs1žÆ%¾:τdMóƒ»—UxÎ` qÍq¡ÆݱY_:ïˆ.·úÞ6½KDðTñ̓›2~†ýx™ì2Á»ÎÈKuÎôQUB’DŽEƒ§°Ø†üY¯ßZv B0TÅJ¥—P¡BÀ½‰Ïkfv>cÖ6–ʆ×ÄILŸ`¦?EJ„
+40–³«¬ FÂÀU­}/ªÜ@%6„yKyÍå™ÿbӛÔ€€HSAŸÖÁSü,(±9î(ÃàÍþ¦-éTó1x*6Lœ.û:°¹;Ÿàì5…׈×n%ƒ6î{¶WhéÀ;ÇÙ½´-ØP«Mnb‚@‘ÍßýcjµëÑöCær‚áy‘4‡))„©ÿaÓ$¥XïêÀß·rÂÖcíßáj}…7£gø9åçQ/ꨡdTK@—³ÎÚÞð©û”ÄV_¸7—î˜-÷ÀjNÓpï¡yýœÌ¾dä¹Uˆö]³ -h.è$õ⒒˜äÑkÿ5
+f7ºÏhòFeR8ïˆØ÷€_ºqdˆç
+õuÓ~}úøt”“­/a7MõŽü9šN—~ø7,À7øé™3Õø}Õ2€…€å¤ûÓ'T—o¡$J~ºÊÙ§qU-ñaÿ*›¨fg¯–þãHždcœ«oX°; Þ¯<Õ3Fÿ’k=QvZ.9‡-=%÷H-¥j.~p¢|BV†6vL ÎªLGøÅçl¼ÒøC2¸§-M®tÜ_qûéÛ«t3ÄL2£$amá2ÎQ`øîò03,«öŠT÷‡àꏆK‰?|ƏÖÓ¼ä;·ttœXîଏçÑT]ÄËl2ϜÇH^ÇŒÖå¿^|=+ njZU1•ò±ü·_þWQö"Êàð/‘žÑxÑW%³—Y‚Ý×ÚÂgwÜcÔBD·7öH@гðᏄ?÷"§Ô‰ZáAo@CÖªÒqÝ)…Ô~˜P­Ì¾ûÊH³8PptE›áêÍO{­Éž$3|uç*)±…¥ÜÕ3ڍˬO“A›Ïž½$˜î‡óbßxú«¢Žðö†Û:3ƐrA‘Š±ŸÙ×=ås*˜ 4$:ðéE½è€Ë}Ædn†-<êc 9WiÀš÷Ël?íÒUkÏ£mSÑuC°"ƒªP4Ê)Ú°¶=xi(ŸðSæ ·@CþxÍû^òR­WQ<ÌÉâk°lcp§N¢+sPi …;i
+Üh°!s1à¯NWîÕŸ‘Ëp~òÖÜ3ˆ(
+·€ÒS±>’À€ÿëÌhõxaÝ(.^R’¸±ä¾Õ)?TÕ¸r¾Q˜?ºø:þuߋìÆåø¤Ù a2ЭdŽ«¥lÈã«ð²x5ÎSÒܟ÷#†ñ+):$Üج®ï °úÂsòÜ_2)£#û6^¯sq¦ª«kç¤$˾r{jÛûoy›k'Þ
+Î÷™Ù*ZðùÖì¬Çx%ñ¼¼½qÕ˜LڴߜË?¼ºgN‚I*DÈè¶G$~Ú1còùŽ6üš–‚ùJ ¹ 6òåvÆì}zS*1®WΘݖfì^+å4Wn͌$KwR›4€ùì^=Ap¢òp»!͔/ûLvìv­–4[v—wÐ./ˆcSÇñ͘}V'²ñ;&öaIª\ªˆIw»ÈåÄ=fl d‚ø’2ƒß:÷›…*äI}y!¾´Dˆ),Óxã\Ü`Z 
+5«‡GâfSÏ"Ÿ2z…gAí~ØP­€©vRª¯*Âw¥©
+ÈBy05Èb<®¸ïüÃ֐‘/aåTíö›–Õ5€I«o¹¼ê¹U©ãȞÚÍjûç§=ÓFHÒü–h‹‡Í¼ú–£ÉˆLNƒ4¸ c.?;ŒìY·pf¡ròØî@ô‹r+ô¤Ú¦>¨VØx(»p77–Ÿ¯Å ‘&G"ĶÞ¾—¸¾’¿iFº3qØß
+ÒF¨Šê°íéò›ÝÌGQQìwU—@.9¶ ù?YóU9Ó
+‹<—y*4iDÚX—| P…„ö.^–ZQí…0ø\è¢3$…³œ:‰ºyMÜù ÒË›ÂëÉø³™ÂCÌ!'­æ äÛ J©MfÖ]<§ã£Rɳ‹ƒ bÝlt|;¬Ù„(ìªÁ¢…Ô²“yäŠ0ýâ¬@}쐏‹´õ]S[^R(GRŒ°åºZ¬¹ê!’ÒaHüSïfö¤Ì:UÖ¶eR^ÊrËi¤ù"ž© h¤ ¼u=פFæÏTOP@ۀOcx”}ÉDDÍC·Ãz1%èûäEé'î¥u9Þg:JOð×WeSXFfóڊUú!ÕtŽìƲâs¼p¯¨¯)z¿à¯4ÚA<ä çØ [y'¸ AŒŽwüdҊ‰q2Ç>ýÁ– 02cP–‘‡Hx$G|¿ó¿cø,'²ùÆU/+šK.ÒJ‡!-ΝÝë˜UmXF䌈-(é¾M& ¾iƒ²ö¹ÛÿžºŒ·ª^ãP8dxç¸ò\q×3h¤›Þ–œGú Æ
+{ޑj]àOÛP‰X²-"²¥ˆ{ŒÜï7å,\ ܽ½Ù:¥éÜ.Âg¤\¼lJã̑ÒHeìáŒñ¹ž ʏhGGÐ-&l°áÙ›öùV¬×ÊL¶\—n“ˆÉÄQ R>ËT‡¸9å¨C3‚¡ÆØãи}² 7à#Àß@ÿßlií
+½ÀM搼Äà,ˆE²Ým2w×è„
+stream
+\ï‘þ¾gTñ­êz¢`ËFÜȶá]ðóª
+Åâ>ºo~+ÝÂ]½´“Pa^pÛ8E~3E¸„ܐ?¥Æ”õôHI˜áœ“6ŸTŽ¿|¹µÇÍ?¨½¶3ãIÚÏ´Dl\*¤H 0ûÝ<ßÚ,âή'ä]sK“Ž¹+ìjå:ø±ÓÁm¢â
+xd²¶Ø/Ç©òwõ&¡SΦADè5é]0[‰^²NëÁŠ±¥lysqʽ%HuCö04øªîä‘û”ßG¿Ìì!BBÞeŽ—ˆcH’¡-”•XI ÍFjšS“~&ö]d“mJۄœ Íó©NmP£+bæpbˆ=2TÑඒ®Ër”À)x?‰GP
+ñ—ûï¤å´1Êp™Ú*6GæÎì[eöŒ&§•h¸¬áF*´K:ä–ÄcSéu<Á{v$—‹©“Ïo‘œƒÚgåúç¾.±27³½eŠÎ,©Âq‹p[׬®[œ°J’œÀ#4Q‡yžã¢"à%²Ý%¢>&¬A×QÜâp˜x®ÚYî(-3!dÙɨ`Æ*nÎ$¶J¯Ž÷Oî7ò|&:ÙÊʺd *UP§,+î‚SqiÀ “”͸Ŵù
+¬ç­;Í|»ïãœo#õÅ ²æÿ›Áß7Ò,žN֏HÊÐÏÄ<²¾&ñ£Y¡¬Ž\¸ƒFA‰¦YÑY^µ
+›×ÓdNDäkÇõ,ÉÍ¿@~]ž®¸ºJ#ÙßWZ‡'¢Ð’®c5;V¡fá¸ÿ¥(X˜!]O¡Ô¶V(œRH¹ó@‘Vè(aÓ®…–žÄÔ
+0WãÈ»ËüŽLRMz¸ŒÏ_•
+OÏ  ¾0¼õ´Í¥äÊxs¥ 3²þUÅ×{†U×µžMB!zäÖºH›ª‰\}p9?9h1šßú
+{K3Ñk’BCÍg]þˆ?þÁ"ÞÁÉ:ÒÒKH֍¨Ö±*}bãxWYbÈ¥ôêzêL·,î¶0ïgžû•l£g©#dÄ'èÀ—qåœzëûÖRû~ò^åŏUJSöFI
+ÎO'ôÙñv,Ãè
+ê• ˜?þ
+v“&¡Ýmô¤×¹6áºcæ7i«)œò 6=*Ç!òÐSÛRÖªk“‹U€‹.˜b¥î"žrxðÂØhg#R¡\}Äç»É@“Ô.²kW–ÈE^eg„‰ž`]<.üìú½M0s‰:ïÏ+~,1…CT/óaõ\¢ðî<èʑƒ?~2~Æç°‚Þàø(yšl¤,÷¸z=1Ï°ÙwÏØ-&Ù<hՂŒ¨1Ìõ(&û*ÁøFš“š®®KÍð@ÝwëÅ5 6rO8KiöÍÊÝ/æÁ´;zHU&"²êl:Q‹að—”)éÀú–{ØWYnE4ª¥:˜ù5C†*?9Jx"‡ú¹âã½ÑŒÙߙRÆd
+³ÃØ¦*ڗ½Ëx5ù­Ë£*xúDAÞ¯k_<„ ¬€îf\Gä;Ú°Gõ(87ƒÎ y'  ´g¾lÀ‡ÎX»Þ¼õÊ [Ü2øÛdF…½O<: ¾\E|Pä™hüv£Ð¦áëyÑÆÛãú¸¡sëuÖùÿƏxÛæÏ#ŸOþTŸª›–$4d‚…¶%ýoŒ:"q UœgViJâËDÙd …dQÏ1ðo=òÊ¿àvH%⍼®
+6%½] >¹äٝb•Îge÷oéóqÿé"V¼éZh‰´)¯•¸ûÍÌߥ‹ô¶ƒ )%^
+ÆZzüТ#,hµ T®móð½å%zK—kE+loô+Än‡S˜+]2»…й>©>#Ïhpiú<•b@×áÁÁª{|iÓf&É=¿L)à<9Ì|ºYÕ!ŸM£¬@Ï?ÓñïÑi€žI7•~z좯\ -~¿ݏéÁ3 ºJ{TÓµ#éT·ÍÒ¶f×,»cúA:†Óȏ)–”¼ØÅ7œú¤S¤zS•‚Ãß'…øíÃܚ?S‡¤ªÊ´2ÚþµÿfÝ= hªãÄúÿ¸à8†“nçÊX«Á¯®ÔFß'Gÿ2Æ/_ €ò[D7uØ×hž KM*kd°Çþ¹%M£X
+­-EÏÉÐה3‡¹Ûޙ~‚ȚýÝæ©–~{ð%žM¾WȐ9*¼ZÆò҅]GCÞe¾læ0µ<¹Hu2O\#¾YÖ2’¿á”A3Ť^¹IE\¸ç :pyƒ'öOòO£|„juß½,:é„O‚eعêоpÁ ¤}=ŠÜxן7ưћ¾ÞYþìØNÕôþ‡Å’Îf|,‡é¯)¡¬Š bDÁ’‘AæFo<–`¿e
+÷ÜæƒO8¢™(›!Fò8ü5¯÷¢Heۋfožº
+ÃA·0°͜ÜȤ´-ÌTf*JZ°Ïþäö¢:
+³ªÔm±&ó÷g”æéñNí 3'[)ÎõJ|Ž¸8Ì%æՃåSŸV3^!
+pg…ÇrEV¿˜œv–JÅ",ŠuÞû{.e²£WIí5Oò½•ô?úӎv{~mÓãጤ5(ZmEb›>I÷¶¢9õU.+)ïâibfA©9±9-qn
+ü#žh›Ë>Ýâ”Ú-¨þ>ÀL¥IŠE0aÃÌ$"{¸çÅ&‹÷9Òl¸‰£$}q`j×F«V+Gr^{ ã)ü8š4%›
+F”.BçÀ¡À’vkM¶
+Á-Q§è²è²“°",n·?ï¼ÙÅ;kZ‹[ZKڃÚrÔÿ=uÃR£AAÐd×|"‰Xìù÷Þ~ºy¿>"Λ%âAAfÚh01¿Š®³íÇ{½›gÏâԕm-¹A°Ìn±õ–K) j)Ò³k~c@ï¿Q`2*7,`éOdä­&Íû
+ÄÚéžwg ž›.Ÿ£_Ò黦¥VÊU·=qӘIuÎ
+_­“UñLÿÁ.ü4AªŒÍR¨J-pêel{Ü?Æ풐f]OKyï`çÁ뤶gÉ(7
+·î,$D¥Q…uï%·{µ÷­œÌa‚ß*üO%Šo*Nny¯4ú«U<[ÇϪÒn1$ha°¥s’dX}’ «€M”RhTÆøÁ䞳™‡¶Tªbض96vsïd«Fj Û´öÈÄÖº°Ú#çL߸p¨´›„b
+‚M†?ÜΡ±ž̇‡ì6ÜE~( €sh“ìåî½’8‰3Á?lka¥â
+%êEÔÚÆ¢䛎õ¡O«f99_hæóSڋO…<yWõ‡’  ”AAÞ9^¬Q;’/ÞB‚Xp°¨¶h¡¢›™dõÌó”6ÔáVÖxLB²ÚÇ.KÎP#ËÕänäEù-ÝZµî²Ýè-ˆ¯&1ýÊéC‚Mó?£W_~ð;r4c¯Àµ†„ÝQö7eÅbÑeé™Ù[í0?w[ö.ìŠÙ-»ßM««7jîCr6AÛ_736T=°í¦B® Ïò|\ÉÌgòž„ùõ[”Kã›í?vŽ‡5zš:㕆ž"ÖV}™B
+¤q¬“ûPʈ†š»0Ò!gàæ~}Þã˗ž.IïB E¶IrÍTä¶ÐŒ1_cƛÅîÓjÁô¬˜áß«Õ, 2êȌRHaõ9HÎÍÈ>çû&GkÊÎ<ì
+¬‹å¤‰u,!½_Q“&âx.°öìKºÝpbR{·ž˜ MMaÛá
+wgDϟâÊ ô¿¬õ}#’Ø’ôËì±ÐôL† “è4tÁR´±ò‚¹z»`Ä'vûZ¿<X°J r´#ò%L‚Ñ;Ã(¦36ñÙë “
+stream
+Ö4ðå%ë }~Ǝ¹‘9íìýt%%ᭇIÙ{]f½B^=“œ{ž;J#£ˆ˜)ð¦”u¾wÚ-½þS(¯ò¿H*=n„8Òú*c#ÿn×Ö}Ž&Üðl)`œF²Æž1iJôMx®Íìn²e’uEô}¸“+þgÝc¯‡{G¤*>|r^¹†Í)¯ÃcGqT¹Átÿz•F²³r¾­D*!¼ù~³ð¸í4ÿÃúâsŽº¾%÷G=l╕ÓðVÇNK÷ôøUÉÇ$#µ7Ø*!+ï
+þ‘[ ®¾™Ð‘¾¨DfTªÑ
+^Qô…Å»öîÈpº
+èÙþ¥ÔŽTJ4çNKºÉ^ዩëò‘”sŁÆí§·¶÷s£ v{zµ«Éõá”±²^º[ρìÁ”3ÿw˜èĒ1¬‚%OÞצºA“ƒ\H?„ãN®¡æÔe:‰²±M5끈ßË1\~í
+ˆ˜ðÄbÍv ℁é¯ÁÈm­Mi|Už_ÿ ®Í>Šúüòî‰syÔ8k_nñ=&Ǔ¸r¦™àËþB´FÝV'tÔl÷7ä4$pášP¡%Õ½±†µ˜òk.¬|5ÕT=OÍç¤J‰îg-„¶<Ü«ô‡Ârª :sé倲þ}™¤‰ß=@¾Ðþ¬³ê–—J8F^
+w‰—̨¨€ŠIªD*ç¡2ÿ8¥1,ÞDaA>[䤬B yH(6œfqóLr[óÌê®HX³‹ƒÚÃPuOxd°}‚_a{Oª‹Õ.'aŽ
+ùK00Ø)íh6 ƒ÷Lu¶ÑÒA”²ó^Ó1ƒÒq ÚÍun¬G60y5ÔòDï+èÇ«|q:é$Ynå&Jç|Ö±¬Ï¿ø¬Îä¼”¤Ú§É¹àÅìaúZd֐=E8`¶c~Ç®7x-vùHœÏ>©I¬•ÉïÞÍê0BÍMǪ2¶`0J­ÓOˆ³\ |”ïq[¥@‡ÿrü͔”úW}ã€P2áYïuë0
+R=ËI¨±%sà%ƇˆÖ–ú«Œªwü"²ùÀÎâ†â1¯¬¤_§=ù-O^=3˜;™2A6+&þ'uu·yðyƋ¨„Žý £¸&‘/³ëœœŽ\¼¶dÞ RÚV¥îì½@H;µœ‡3‘èHœ/C#I6 ©#tYQoTÉy¨Í.ê*Ɛ³x¿>0Ö>—â ÿ•zuΪwÖê&uðz?O3½q­¥‰Ë lªÐ¶@¿>;¶è=
+:ƒCV¦uI[i»á=¢éØ+7Aœf9´ld§ä¿[3Œg.äEžIÂs­¯b ¿ã
+ŽÑ0Å:yF ¢0ÍQU L>ÒǕå†è0¸&íôÉÐ
+™¸ðù)l&N]p6$‡Ë•p¡ŒxR´ŠaD8¼#+ä5цèXF½¥R ÒôçbÿÝBª>ʇ’cŽJß}¼FE4ÓÇù7qá61ºôÚh¦ÛNk‚OžÊTüYÃ$m¦ <GËjö¤žÑÚBWV?IRȪ°šyÎh3PwxhȤ¦Ëãë¸Aµ~íÛz•=^MHE¡;䧁s¥DD]ʼYËh%É@j¿H”4NPÂùw”V’â¢~0ëÕh€ÙW›oüdÿ텊Ú~›U@·ë¨LŒÖÞõ'ýš;Š.'¸# €—åÎ|“g‘«3ç;¦%Su+,¥ç% ­ Žy©P¨ú,bû“ÖæÔ}ɾ¹|oéGGë<ô"Ãmp+ebï£`CµR¾)wΑŸ‹wIØË|9p†vʃÐNn÷*aŽ» v¶¬h
+Ó.ŸlõÜ؊ºMí9àFëÔ҅ÙGX >>ázÎKEú`ÿv§˜%¢oe[œ¡B„¢‰UÕCi˜3х*b˽ÌFøù33nã ^9’edÊLK_…·G.Ña ‚*=´ü¶€`"ª{‘F¤C9 +bÃçÃæ<÷¤1ÊÎqSºšæ®J[=i¥¯Ë&lú/«ã=ßKtÎM‹–õC¸abÌ‹ kH·
+Ȣ˾¿­æ¾v“mž¿§|÷5Uç6q鮯V\󅀈quŽÎ½fÌGº(^Cé@`›·œû¸2 ”jM„"QʶÐ-l³º3:Ï¢AûK82Qìq­Ý\üaŽ‘¿´÷ŠS¨vWÖaá2ÄSFÕq›šœÁÏàþh¡—7ÿî°Ý‡µ¸è œ_LAÓp`‚”($÷á _ïOh\ûљàùäøTÖ$}ziþHè ¯Î`Îè‡Ã/ìFÂt&¯Ùƒ|ÇÁ¬‰ŠñÞÊ¿wx¬µՌ=fêîÿ2,쟁{"óÊZƒ`µñHÈ öؒd3p_8vP’§¼Ù;F(nʘÀrwå^]‚ñFϳc¼‚ÁÛ"OAÅÞ2ì#>-}ÿÅ$ñ%w¤Î¹ ßkãU®_&HoŸç˜lSr&“HeÑYš÷ÅÎId!¤HðYƒž!æ?˜ö¸¹üåØŸ-ý+)}M=4vaÑ;>U¨ÇñÎÐÖÄxfúØ«µz¥õú9òn2ƒâè9ö6…ßWώQäñ@ÕÃB•²™•;Š®P%ěŸãz/bC’¥Ï0ºè×궼†‚]¨ƞÖ2'*·Ûö L¸km´‘ߎÄêr?ü¯£¦  –U”à6O 
+b^‚‰€ï\çŠN)·ú®ŸŸL×Ö×u™¤wÚèˆUÖ'µ×sˆ7‰žBm’º§©á?Ž¾4j¸ÊénF GU_3,ÁÒ¢€õ
+¶¥²ÔÓ­œ'ºHlïOž•:”¾w×]þË­.ƝF{ªøO1]½Áî\-H:x׃¼2%]%Š)YV‹
+­Aû˜}üÜEÛûBá£á&I¥tÌH[,g’oÀä0º«ÿçˆÇKÝötý‹-Q³Ð‡ß 隞NSÇñŽIøëÅ¿î¾çQŠU o·¥WK¾öw]aX×Ì$úîëœ>Â5@æ+£º„¾üB¬5PŠä´})¼«þNÛ]ãá&r„ÉàõJh£9@qj¨Ÿ“VQӏu÷á•Õ™‘?„欕T7ØX­€UE²ªæ9/m{fyä#ד«9 {èIÈä©¿J?£ß%ï âU¹©þöÿ•ÖG½Éšÿ©! õÎØÄ! «£SÂéCã²'½'Äl¶+³Ü‰àv?1€,¨ê<eŒLÿÀ•ðåÂÀ<éö.1 ¦Ò%%÷UEp¹¯Ï9?Ê˜vàÉۑ®âÀÅ.3ä˜Èя>6GO¶Hý `ÐSýù¯ŒÆOî[¬Ÿ\w¸MVáb§Š÷œ×¶>òÜß*`[þa%» `¤ÏÅ«æv}¾0˜­ëÔOñ²iºàÎb“ ñxô€czOÏlïºämù¦°ìýajf|:–ìAHÎOü8£QÆ$[À¶tÜ×Þ,v˜ñÏc”âî3ŠûëÚï¯Å‰?S=æn®ìZG›š+%mj›JÙ:ÅõëáÚ~ÃVgÒEÓ#6"µTÕ?hy~YÍ­#~îGB»Îo/Œ½ÞŶärd·ñ¢Ãúa\­œ¸@lõÕ:CFzg›ÝBÂ*#ۉ˜Àh3ÞÉÿ“º(^쒷]ü9‘^ÞP3ߜ½»rÑàïöÆpZðÑ#38‘t=yK¯d‡gã«pû÷9ó[µdèuléðç 8§ÎZ½RŸ”ò.ƒInÆEIj¢Ýe!
+†Ýoó亍ŀÃý®š™²ÕZ-Ùqŏ¹6'žoö=¢â©g8íˆHÅÆwéVfi BAšæú¿3÷’™Å&yíðJñŒX‰Ž3`è&»ìúÈwiœ†xÛã[?mOC!­°,áP*B´ôœÞæ l6,Ü5YiGTsˆB¬0ŽX:¦(ç]3 ؼ-xÈà5òÒüô¯ç ©ÿÄb8ƒ\( ôs¤Lè‚V¼s"^Y°oÿºÛŠ•‹ÙivH?ڇ1/fÝà,
+Qö❕DrˆÊPQ2·ÜÑ4›¹–¾ƒˆQhòwé+#î%Zþ$Y›ŒÎ1W|ZI­Yfx¡äT­÷PšîjÁS¢ìVhcèÎoÔ˜‡WžŠ"¸,˜H‹W”.±*3Ä^Á’Nü©¥s÷˺ýˆ*Š‰­ëÓɾ3>G±Î×Q«Äìd\"ì Q@¦„©N~ƅE¾¥îŠ6[íOK ¨¨šËÒªZž Êiù+
+LEZ‡Y_!YälFWoJ5U]£–©±Ìã·XBWn–u\œ®„΋<™èœEå’aº\_3*ޟºèÚ[²h2X%s ‚v…’éæ«ø××öhëó3·Å9ʺÙbbÒ Ê¿aÁ/­ô·úyÍ+VGwb5éQ-ª“³¼}‹‡©'8ÝF­hå­ṡ¨QÃKwó*‘ÇbA,W6­@'ÌUû¡ÿ“n؈âÉöwϐ)™ÞeτģƒÎ›’4ù´½õ¬ 4”60ðÄù?>"on?xÿÇ<Ð~101ÍúWÍX§ûÂ.IùÄ{ù½ô4™¤èÚ!hÉL^=ð¿Ð9ÃÏP‘ùºž¬ñì&Í÷ˆ#\yÃï¤VÈ=·‚±x9%„`±ÿI˜õ0s\[w†Q7ëàKcùëÀÇÁn mÁÇPþùiaۍŒÐ^Vü¥Ï<ݟč¹bXE×K¤¸j-·0Fo¤±±§ë{g„þïL&Thd>.-°÷ˆ7ÀNŠC²¿¢TÁ¼d¾ð¤:a°ÐL<¢x¬p`£+2*֑ýô®ŒÏò’ÀÀ¸_n¨¶L D6c~l¯ŽÕ;„2"Úkpëý`Üçã˜Tnô¢°AÔË=څef÷4VåÕÍ3*Ÿœo6m ®¬‘%¹òÔn&OJÔ¶½»eHïm–&‚zS„&
+(‹YŽ¼@ùÀ“XñЀºLŸþavJ*Ý=âùhIjÇ±ßÑû´ë¹è¼`ڀ‡aj‹ÙO¿
+`ú†è§mcÑu#º²
+nü(Î@Çâ;Ɯj‚æ“v÷ßp‡XãƒÊW’4Åt°£»“Ù’ƒë›¥ºÌ´åyvýÎèÅ]Yÿr¢­®f¼7˜:*]oµË3°vmN(Ë\…«
+\*ÛäsŠFšÕAñ¼æL0ÒìêEºHèíO›PÖE5ç6ál9zÉ£[ފÂ$DA:ª[[üûJúKºôÞbÏûZáñ‚©$z0´¥žîD–æp§ìÖ·Ú1¿‡”žMM]0Wõ‹oQ1™Z®·ŸþÖùº¤ŸGä2øüª<’­¥m’3MÄt+[4!ãGўà
+2=aKKœ¹
+öՎ{4̕…Žãˆ@Îú¤7v1›M5ÕwϾ°Ör9é²w°
+KÆø•£ŒÙÅ"D“DÒÙwVÙæ߬
+Xs2¬*¢ÑRh—n¾ÌY3þ7l˜ÈPpâÓë“,{9î“ 1àN`táiAǏ¾`ä\Å!R©0ÉN’ÉÌþù»x°"¿£:=õö_Zù±J¢½c
+ªRTëÛ¡Oì€d̔š Cm´wM" N§$%sßø‰¹}h PY.À
+þãÜÏXpĖ8ìD°ÖŸ6æÎÚoM¾ùãÈ㨻LáMØ¥ïû#X¬äa¨—½ÌäbïçY´ìEœ)e³ò$E@™O\œ'‰Ál”6ÅSytq1u;‚©B™D2–œ
+>§à+ÞzTqüwÓ»çX1ß5¬¾È°º·Özô/PœýŒB–6D
+ÂD³ÛRV˜Ú„SèìF:gÛ30ìjCòX>î¨säp}×)DxÛ¸Ó·/x³òœC’Å©²+€«‡ØÝÍq5÷­ôІ’àU•Tæ­{³Ê4€ÙþM%œñ-ý
+íðQ££AçïeP|ž½^—hÙ
+<¼ºþñù4™ry¼hF G³¿ªYÌñ…«GË{֋
+ø,÷™õœ“Ó`®Ñ8~Î-Ò;J
+ò*b“ƙۑ;³§6£€ÿyãºsONôeÓã
+#ÝDŒÿCß&™R
+œŒÈw_Zê¤µÉ öøEAGû—ÃNlÎ~Žu>X‡"ŽÌ0¶7ÁûAˇ±Í¢(B(ZCƒ'X}‡‚ùôÇт(bc•"ÿå¡!î­uã¤ÝÓ9ñ´(9»ö¨1am¾Ÿn_Û¾¶½šíaVJB¤Ÿ¡`ìÔÚоRýGî£ú禂Ðì0ìê[î_åèñíŽL¯v¹ëJ’%îþ–ÔÆͯkݑM~œš(ÝG»ûtÒ´ É$ÏÏSÑuÌJÿ&ș&Šâ M|+¼Uz„}þ;*A‘¿iÛ®^t‡h ý㣆.Öó™ÙPç†é¼ÏöLÄnJh³æ_fƒ­\ÄT
+1¥ÄܾK?$NµáiI„.ë*íȆ
+Ó:ÛeAº\ÇÆ­ÇFJ4_
+æ#/‡å÷¼ qþ“úãœO¥Öì×4=ß?àRó
+T¾ÃçnÜ™ÞÐo@Ð9}§²Š ®JÍÍlóÞøtç”
+| EqÓ¹Ž«ƒ h©h´2šGÖßÇ­oÏÏ|¼ò/®÷ÂLx¥\Ïÿ%¸r¾7ˆ *•¼ÓõHÙ$­ô*˜èŸPg{(Ö,z•Mè1hÒæ!I«}W»@å«ø?ŽŠÄŽpwp«‚}º¾•’Ì[¨\iî5¯dÍÿ÷PÈC多ÙÁgîå_aÊf¯òÎ7ìÛ>³ˆ þ©J{€—¦8ƒ¿S7
+âOӖp¶Ù^2ZÐ_T6]à ˆ&Õ;°Z|'i FŽÈT¤e >Z2Á1Í2ü¦Lx|²ýEf}̄š9:ñÙWTb­Cx-*—鸤!5†îvÂVR²/\6¸ÊÍUŒO¨d_NPž¶cCÝKì¤ ìph9ÆÝDËëžË;+¶¤„Eê D‰\Ó¨; Pc&Xè¹¥Û
+ªº"€[mv lÓV<«Š-×ˎ®uíg ÷ôÄ |;i|§ØZ©¾Å-¾(6CùܒWŠÙg “Ël’Z·Q´~ )aÆç€ô#£äŽ±(¬Ž1T»Ñ$mŒË¯u2éW:’FjŽÙ”þÈbrÒ¶cW‰=ç@8Þ¸N¼Úž‘`‹w´eß5@ ù:‰îŠµ
+ø†‚°ÇÚ®?¡Àˆ›ç³¹†ÝS«‹Ì„±'7JáЋ—"λÅ.þ¬ÔڎXÛÃvp”¥_K èùG|‡ŽÉa*Ñczög]ð@L ù3η—ë؀‘ÉÒÁo„³¬¦jˆŠa7NëÕþGxsy¶€®’òeiÅYCµF’•¼<ÀîVÌ$àìÿhø~aðCTÁ?"ñBWIÕ¯c±ê¸Wÿe:nØ#Ù;ƒT˜s¤[F.ÔìL¶8ÊÊ @B .™¥°mW¢X˲˜}^Anl!®^(ýºÒFæ'i˜,ŸoxûáO°ši²AƧ:ŽVLd&jŽ×DÑôŸKö1d¸û']¥ëN½”áËƾ/ù
+"ž n#à*½ÓŸ«Û’üõODÛýÁÙMÎA'†µ^yG•Å֐®8LˆÛ«A »žíõ355…"-gяÏ2ó\¹ûÂYe,‘Inã¤!–jÉ4Õ
+O`ú,C9ʬOâÜýpß6rWÚ$NJ~JÕ<á3Wre¥PÖÐFëÎØ3$Þ¯v•Œ¬5Ö¼Ðn @.W<JðéÔá9ÉJSR-²§ŽËþN©˜kp1ÊÎk!{ªnäáa1uØd‡¹¯aÂ04#XÙ0?RŠÒ_Nk£ÞißW4Ép®çÀQ.WÄ °r°ãÿ¤ i{!: ^ ‚€Ö*8hÎ&Zö2ÿS+«Ìžl
+stream
+~ê-}~ÊÌÞÞÙøÑõ”ÜFÏûøEœ¦ËݕÆ‹êÉz¤Xüx|•!‚º’³Úš^aV˜q*ô¾âöI]èIŠŠ¥ ½L‰5{ g|°\Ë´‡]|ÌêŒÕ4ë= H)Žâ(¯6³¼ôZ D:ÀüQÕ[".{l †øÃAEm,&ˆ¯ñ» +³?ÁnËdž/ÓÑÕfÄÍ'3ŠÝH 4ˆFÿò%íÅð ÿ,ˆ.
+7՛W÷Ü+ –š&£¥¢~-Cúr‰”æ[À®mÌQ´ãð
+sWµsU0è²ÔK±HId èðS(VlègÔࡃTb¦¨tKó©zÞ6:”~ˌU÷döÑDÃüÂI]è9䌌åšÈzï?¿p.ÈVÍ/ot~Øiäf<*¾Þ™¢ö”ºåͽ™u¿q Y¶c¬ 8R5*þ'^4;œ‰=TU EksITÁà«Ë“©Â`mš©÷sža˜—+;´(]ú‘ ï˜dKìƒØyÖ¢éêWÔ-C[wÕLüýŒã’JB¯´ÅÁ“nT
+pŒã–”—Ú¹Y%Sés¼Fª´Jºùuçlj¿¡ÜMs©þˆÕì½üýó})i†HPG9…Qø‚m½-×îˆR•‘ÐDŒ¸{1³¥*b&~Łç“CGÓ<N Ô<®|è¬fû@”•LÓûÍο´vÓ¤ÝɃ2¢ì@ßD’н»|ÎκÔêùRû.v1€$-þpƎÜ®áìcÐ %fHG™t0q ò¨`LV«fJ·ØÂQ¢…‹6rDB½Ñ:¼ƒî¸cªîý5⚽³dˆ1þù¨„ì¥Ï¹?þªüǟ”WdÇ)Dù I™NTòì…STìá‚ŠB9H²T=+¤á
+‚ҐíSýÄ_QìW)‹ÚÒÐðâò_ÆÍ?öæ3hý/Iò© #dI4œ©´=Æ=×P‚òñhp+á›Æ ïkÕ𭡀Ò
+³Ï]ùxâ^ÛGb³g͹̏‰´K¥ä¾ÝcáÀfZM×.m‡ ܐ÷gŸYÔ»Œ+îŸpñ âòÃ$Þµcæ]º!8îU³}µ“Øùt¬£G^tôçÒ8êYo.¸x÷ŸKŽk¸‹
+å<«Ÿ?ér–ìNhýíØ+.+dÍ1ÈÀ†¼¾³ÿ}ƒi6Š1“D`+øªƒ–Âp±ö³AõhšèHhVæwû7õwNÍø¹<Ñ¢â"ŸÌõü‚ «ô„+OØɧš¬Jâx9’=œÜ—osx©½ò°=“:Pˆ½t¢ç ö´ bó/Ęë”3ߑoþ
+ˆ]Œ±ÒJ'±’Õöjàâæ؞z†4 ½Øoc¼¦žÐiâ"¤žP†ßÜÎ*|(á¨Oÿm”Ò˜dR~ë­©v¾º`rø$ìÁ´`[^@øˆŽP;Ø·ø±£^†·Ê9áææÝk~5K z"Z3[!ÚÖx©V]×á6ÙeCׄul­Ñl;n…‘9*o— ië{݀#{Ú2¬ŸO¨g1­ŽÍ@w´åM¾÷ë0éÑl­OÕ±RWèü”…ÀG_Þ&ê¶{Ï­b[½±ƨÔa´‰™ÅÂÑä°ç2¤¬É[$oo(ډ͕i’O|ƒ……]EølZ¶Ø3cod ŠKŠy
+ˆßE¹1n:Õ#Û¡LµöO§ 3§Ú»Àhæ‡öC^Ü駏:IÖ5s’/HôoŠè™r#Éa¶ÇÕèSežìa_2õsµ:[íQææˆ[¢râZË WJ1¯=~†cX Ô0¤Pª¼>ƒ¯â G]@§ÙÒ=d¢Yü2¦ÊDòœÕ”½1ïy¬äªG6nâæö˾·xïj
+ÕKnoèÞÁÇ¥fÝóÃO⎀—ÞkuJ ¬½ñÖßETÉ^Û±ðæŒ5„€Jáf¨ñöÁFkí ‚—·íè~ùÒ=¿D²o üüÏy=´,¨«¯‡Ñ¡åáØÜӈ‚öžãxÇWxênBÿœ“ÅHÒÓÊÌ<)ž)O¾/a…¢ÕÌ}_E^ŠöÌ7ÿ?ˉIþÇê›x“å¥Jæ{ÔÃEö[^Yë—ziTo×WŒmâ/2Ý5?áÈÀрjñ} WYxä’A¸kÑ[S¸„ ’î/ÌÃ:Û0ë8Š¨œ3ÓñœÝS›Ö3óÞiäò5Ë<¿hˆ¿W›Tp
+q؇tiNrŌ\ìÇ`hزÿ¡6ä.´tçD[Oˆ½S ààªXlCø› ©_±ÅYž¦ÊôÍ}Z܉&¿? 3C ç÷ÿ’Çg‰LwØHnɌì+̝Bø½ý
+C¾‚ÅL•,ñ7ìl„Ï£ÿù··;­moŠ™C'¬s©:ý™úÀú˜Q÷¿Ù‹îA¿ŒaÃu3Áœs¸Á¶ÌSsFcM½ò”†é}ÿïCáp¾éçÌKúÿée!…€RõM(¾ w6®\¯[9º·Íïiv´€­ïÈЗ²ø[FŽnKc‡ó¢à
+M“¯Z8 <襔m§-¤ªãb1fø,{ï—Àßgø„}¯¯aºàŠØ[…ÜLA?æ™f7*Ïd
+ogRˆ@—K¦)Pá¤îÀUÖ0'ÑeÒàI}¬ê°/[EW½WŠÛɔ“l°wm\nRV½§ˆW(Ô<[M7·†;ÁKêAõ¡JÚç»GϗܴO<LAý¿6i
+eÐfíùd0øåYmÓ1âmþa™;vm-:ZsüžsÕWQÐ9O ÝI‚À‰
+œMcÑ.úzqý"\#’Š$ó%Ëì¾v w£*)­'‚-xî›éz>öÕZj˜úÈî?£2ƒ¡0ã{ÞôNÊ]:‰çÊé3`®ž¡–ŒskÊʤaÝhxWªîÔDéøÂ¥f-¾ÖêË"åìíKÞÏ')nRŽŠ …–›AW´SBK/)/÷¹ü· —;2©IÈiO´î¡²€À@¯ø(·o™üwÏÙq§àZ¬UÔf{ùUMš){xÈÊ`ݚ7&öŠÈØÛóì™ì<óÆÙ "_ܹ.ٸʝ$[9»Ñ×ú}Á„H°œLØ(6ÁÒ1ÓDBôyº>×tç9UÑÇZÔèý×¹ 7UfŽþ+ÿ)¹Í£ 3ADNC@Ǧ¶Ë=¶ŠÀ{sÆ=T.Lô
+ò¢~’ÅGøšn½{Æ2úr•W¥>î_0Qgÿ×ЇY
+k¼Ñ/¿Ô³ígJ2òÌÓèit©+’ù‚Ð~Äo½'{7¼ñˆ§üT*ä!ŒY ¸Ú¡ž#Ð&'øÜA©r›O8Âdæ;;Î9nP –û¶Ñ#ƒ9žrJ 0ô)Þ
+µCá´Kùüu8Ôml€¨xZÑìJB0îõ(Ž^*d=‹tìk{Â&Žxæ[»š£±èZxåøÑþ1;ÒõbDG)rÕîšfí³OD&Ä¢‘ÿîÚ1$þ³¿ o9夋MÞ<Ú£ÿõ®“…(‡c€AT¾H˜$âŒq?<•ð"Aô°A•<MK9‡üÒXÇÚ1u؄jzâü$šgÕ ´eõAlÂ‚`DâÑÊ/˜ÖÅ9‹Þ|dpȒÌwÅÎ-(ªñ­ž3·y;©ú@GF‚̲èW¢êïïyn’Qw}‹¹"Ù'€
+©_Þj>&%qó1ÔJ†wøsMªØ Þ؉´[-”¸Ø>Ècžo
+ƒ¸˜E #.ãAÆFÓÀÒ­3Gϯh!um¡vw:"ÊJØDþÐ÷”ÃxnÝ‡ÇŠÕ ¬ö eß>>>$¢líiW;Œ¯ˆ¨óÕ|íºÉºqà‡ g9;(©ÌV¯ ÷Ó®¤²7cJCÁW+ö_ wîª4Ž0Ld…¤tT
+[QÃQ’³<  v2;ì¦êñ€3;„aë2Ÿ²ß
+ÙKgÏ©æò4#ˍ™ª†Ò\„vå&1¢cͅ7ív­I»6NµZï&Kšêl
+‹æifïoþ ÀaV´‰Ì°svs~)o~róÞx~üŠß‘ð9ƒ‹Ÿ¡7;‘…wHwÍ >S˜»Þ Ìcš Dã]ýóà}¯cR%WQé\Ï^f@.ÒY¼ž•Kí1&ã‰ìF
+Çun½ÿ¼Â´üÜòj2]%,ò†D‹œÓߨ~ÇÑÁWäÏ\µ òdó±å~¨
+ù‹T§¿pã䠅² ɯñ3RB©:G^¾š*Ãœ—6/a°G*íÑ Ã#x’àמ([¬ÒPÉ/Ý4.êL^¬@¬2\ÿštÀáyåd‰Øšõ.=q—IÒZٓ³f|ï H}¹Å¹èL· QuÑ /©º˜;Ÿ]÷ÔZy¶Ö§ $¼‡Á(1í‘ –¶Ç/7à/+E–î“X;bößSÁ½ý8?æ×âúø
+L”Éݑ:Ám"fõ0¥g‘‹•‹£sÀš9J”4_ûÍà髉1¸VÀQäØ
+K"$凤«f ng¯¨ÚCó ž³ï@1=î7ËuÚx‚=5%Ñ
+ðïGð(Æ"_Œë~[•KZ¹Wٝ˜ô£K!ëœB÷Ùö°/ÿBd$0@(3~’ÁmF7˜dûÊBô­¤®8Ç¿í£â ³¬kfÈDæE"ÙiY§9 šâ?Ô$s.`ݨºÄl_š…YNPJEXƒFV_!›hü¡ù¦%g5«UZ`cT­æáØy?ovQŒ-é
+ó¡eßdY1¡ŒSa}ÅLƒ7H-¾ê¿)ÁæØõ%¾w<¼šš…=%‰&ÀKž’,³V0‚Ål‡§9`2»Žžâá ¨ŸWÁËuËß~ä6ôv®´(²L\ •ÞŸ|ÅÖ¶!6“ù'9 ë1
+1sà–_sãgÎ>‡ìe´
+6eKþOÇö¦!q$ðCœQƒØs¶ßp†1^´öÎÊBìN¦­Nâ'Ý×dD‘[5 jÄWâ ÂÄï^{CPŠTTš[Õ®Þô\¡`O¢âUWâ!Ó!£²PðRõÀWétkL¦Ì†4(íü}ð;˜kyÍE¤î0•ò?¤AˆGK ¥a·/Îèˆç17G0H¿æʃ¡Q-ÒA ~¢ga71Öû"ùÃÓX©¦ãtÇ/Ǔ<>TAF’ñfʤ˜ªïÇQùå« ¨ÕN(öÁ봍y eÍ[ÓüJ”ñgQ(´YQ^‡rá,­ªÂ:ínëtÜÞ9€jd8n‡è÷¡ÊA¢·LýÂöuIÄ^¼›¯”wG&åáý˜1û'•Y%‰ÄÊPoUœ÷ë퍲iù™ž:õ`‹æj¾bXø29ì@BÉêþ
+º¬À¶ø«()*ô›»`Ÿ“}¤d’"傽¶œà‚ûÁ¯³dÊì:¶ö¼Išhö‰Mþô‡Do¬
+h‹–ÏxnûÆ[C¢Õ°]X
+.Šò@ù¥*‘ZZ<Í%­§ónE~F®‚ë™ 9ÿA‡„Seëi
+stream
+±Ê1È(
+J† hà\4Ãib
+ƒÁ†°Ñ Ú
+§¢vž§ê
+xè†!Œf9Ç!HlŒ4‘Ü £”@Â…±ðLJ1˜å*Ró*!˜s!xnÌl°t¯ªhFB0(JR¸S,áL]-…²èQ/¤A@\3O¼¤6Œ¡Hº* @jöû»aª†þ¿ð
+tž'ÊF¢(ÊD2±Ã ’ÖÁÈj?±o.±@P&45 ãŽ0ŽrT}&„€Â3Ñ4]G± S1Èë"ö6°h@Ì3Lâ#¯ò©‡«ßÛ) lZ¯Öï$¹)ËLº¡´aÐ„-A²†ß¨±#‚á†!ÍV§-á b¹sch(ahl¯†5Zrßê¬î\öòn%éŠf«”Ü“Òð%4†Á Ú
+#(È|ç'q#0ßB…hÂ:pƒpYK!É>ÏºîáÃÍoñpß¿JœÓՅ=¬l&ǁ¬¥"ÑTcÈه^`µz*6kô#OGÃËŸ-^ïõÜ©Cޕ⻶ð3 Ã,®9…Ý‚°*w>Eÿå±þ϶ qàd÷Ÿú|p…À‡
+ä7¶û
+—WZºØ*cB¨å+Š½º
+YKbô oÒÚa!«Í7[«”fÔA³R9uQîÌÏ»dt‚ƒ™©®uâ•Ì¼“BdÌÙ¨(7¶÷Í[ã2H­ô›·Ù¬ëTQS ·Ù-GµI™7¯¾Øs†rª€iƒ¯öÊÂ[0DMå«<¬t³&Q[´­à¿ðѱ¡þQÍèÚ­>"¤$((pŽAðI„gŸÃ&«z=‰F›H (ÙÑ8Tñ5<Û
+æm¼kšcÎNJ¡›Å½Ò‚w\µ,<+x•É\HØÐ4T›à«—†§0ËöþÕ×ˀ‘Œ ,¦…ùæbΙ±ÃfßàŒ3‰klØUB]ïØD*6¬¾«‚?¤oÙå%4¢åtºÏÑI±¥:ªFI¥Ù<:Øíà oNéÍPî¶è(,ƒuKB
+bào–ï-lùà`ﯼléÖúúÎ"ØO ؉Ìd<C0¶Â ÖÙl°žE\‘PÌrïÎóª~O$d
+~Kîr…trÎXJ®\VÊàE„|Ee¨@æìtïþ7 ‡¸ÄB°q'q¤léÍ®LNIÊ{Ðóg̒äªGÐJ1„ ÐVÇJþ… ‰hÓçs§ ©P2Ë®8ý,n”kØRG.{äxK$V_ P F䟠èєÎȦ«àÞõT¨(v'“l˜{è E‡þ¢1Z‰HЉ¬¨ŸÀȇÀÜGL>’‹dåM,ý°î¸PôKÑGÑNþNZVӉS ȕâ¸ëéfdœ÷0†ePŠ—€Z?eJ½ ~½møø øÍ^hí
+¬+Rò*B¤l„ˆ(uÄTt V‚4‚p>ª-¦ )<±Ÿ<óƒ4Ð>çcST  ‹R¢ÓbÆó¼eñ´¸$dF„lGt† yˆ¶©f`³ü©Ó& ¹kšmë ¶gFë%ÎÏdl0}KâG TÄBÂ!åH÷íòôØï­þù'NI¿NžE¯£ Œ#°ÀØ.(ÁÖl%V_-ã/ñÕ9D{?B°uO0ˆ°ëìÐÓ'uSg‚JD‘/Ïü­LFr4ÎÈàÅhPÊçqˆ·çþFf¸•l¸ärH¬úFqR¡„PðvyÍWM©
+ô
+s¢’†îu€Æӂ’TÑ#/tÀ$z6Ž!éÞ?rÕ¶Õ¶Å
+VÈâ lâ„;ò5\Öªú¶ß]RC uÖMì¿fAnµ sÖ^¯EdœNd²JdúìOjþÑÒçÍ´ªÐ$ôO,g-3¤mwövD¤K—l7rOé;7‹<r´Á¦2zl¸—ì(A &ÐÜA çSӁÀñTO_mT'Åê+¥ª‚
+stream
+%CP4r.œGc»ûi¿¥ôûHÔ¨¨cçÁ¥±AR2Š ‚‘  Þb2ˆ
+ "Yl‘x6Xʈé<8 µwjIÂ臋¥›ˆWód?±­sºàKõMm´û‡´÷«˜vͼ‡¼4ñc»lQ€ûôÞæNÈoo'Ú‡WÞ^ÔlÐ.=ÐÜÚcù×´0†³Îsk|‡Ò2‡ñ ƒŸY…n"š¦/T:Ö_tޑÔV•‰Ê
+Ž¤P°E
+aL$„ðœψO
+@€!ˬ¥@T !8#Ÿ’)é
+"g®Ù9$ó+'eúq-yÍ?a
+{ ‚=·¶¾
+ÀÆÏÏDú^÷ĕƒ<9E¢9Eü0¨6‡ã lS a
+ÇZô1ølÏlÔ žÕ Šzƨ¦ªÜ‘"×ì̪£GEX±‘œ ð­HF!d…ÿ%MQ¸ÁhYðL¼)Ô¯‘È'`p‡KÒ¿¨|œÐdÃÉ×Ȓ±h› f1 ¨©pÑ
+/èo`ØÏÓB;OØiöî*@ã´ºnÞàrfªeOî#°"Ì­5#À$˜5qœ/òJ«àhÄ6+b„b?
+ ÌÏÌèÿ'K/jˆÈ
+stream
+ŒEÃ(„„n2L´j¤v6(Vë¤Yô
+Ãu»ˆnÀA²ŽemäD ªntÛýN|q ·Çj’(OG™ªŽ(vþ@6Esîp6›`h··»R|<Ý ËÉæãt¾Ÿ^U,ÁàÃXhÐl‚…©Â(§©ú‚(ª:²#¡Œ»l
+¦ªŠŠº²½¡ËjÈ)Ûô¬+Š`º*¨Ú:*àh¶!Hd… RxÄ2„€Ð7ŽHbÆ£œv†Á@àÃHÙÁÁ@Ê9Ið` !H[ qèsŽR°e"2´ ƁÈ^…ó#.a”¬¦„h#Ҕ©,…2ØÞÆè[/…
+DÃ4üʃhÊ‹¢ ”¯Ã¸¨oô'Iâ| $j"Œ¤Ck$4¹­ \†©ýñ"í`SDQrÌ:9ç&Hx@8 #=FÑô‹ű¡Ž²Okm Ë6Πa¢:ÿ¡* qk°.¶°6Õ®õ¶apnòR‹˜l§­a²†ÒwRv¨n‹8N"VÝk€h®aœÚچ
+Z,Zœ§x‡l;·MÀ„ÛÉzb™¤ªç+¡8`¿ ª‹†°ˆk ‹ÓP0eÓ芲Gê"ÄÀ*Kª¬üBêå Ÿ%p*•ÓÐT‚.yƒÆ.xrCÕÙ½_Œu€FàÊQ”vw y Òä©:+”gÊ
+.A+¹'„åܲ.uϺF—3¨F…Õ»ç¦öà ´vÊø69è.ó
+TF!å<ǜô“Ô~Ì¥·´ì£YQêp¡ –ƒ ¹A FäyU2aJ¾•`Ãxmˆ2†àèôÃxfrÁà8%Ö“ k¢z¯…H²hÈÈqdÄP÷TÐXk/oe•XzÛÜD?R,õMÆxl‚Ú"2ñå¥Pr‰Ü3p#N%
+‰í8‡ì•ßhn ïP2ÔÙ©6CœÛ¨A¥ÂI‡X} ”O~—IX–ó©”ø+)Ö+×Ô¡Cˆu®cµª¦Šè>šhÍ؛D’š‹rT8ó@jÄäëdFÞ¢AÚPR¼ç´®z¤š•S'\Zµ®L7Ui54ªÔ“©ôúaÐ8ü
+$I6ŸsÊËOP@‘s¦V¶Nʫژ•ª[¸ ̐·Ác¨:5r«aG´12KTÌ!±Ìp’dcJ Õ-¥Tþ
+ÂzOű@Ú
+Ò‚®!Hs¡À6Ë8 i IfþKyB¢ðT°¸“Óc†¬é¸(Óñ>Q<*êf࠘}ó”gÔ M 0ā+ s,4å-¢´æÉ@ë,ËԗZ±9}w?ªsÔ²´Jø ôÐp+´õÍ[IÀðö埙nÆð²4Ý´ˆù0=:ë@µd¬º yáÚ AÜZ°œI6r—(JP¦Úy]Ó°w•µ³À…;þaïB²À%öõÙd:ðŸÍœyvŠp(Ò_¨Ž9N©–Å—°9»*ëR.8iÊà‡“;à ٠xmèI)(q€Tž|Ûll„qÑðWIÃRíèTWk*ê¿ R$܇‰CÊæV͈ÜEâ0Q‰R‡J|T¥‹f®µ°0„34: —ãB Y˜²$'™Õ ÍZ@ƒpg›Pš+Ɔå* ÓjâÛZÎ¥ý‘gƒ $uÏ­¢5 ØÙ̼4Ž:¹Ÿ}à[ã~ÑÍõ¤øÈý¥=SO(Î+™é«OЭ^¡vi
+I¦õ\•QVÏUnÍÝŞŸvì/Öó©Ã¹^³§MùEÖÈÝ_Ôjÿ^¨âÎQgP>:úÝ¡óLÎ^Šæ̐¶²}Êï‰EH*‘§¢]¬+fþÀÆÿ RôØEp–IhH§ž¶l1›°
+pö‰H:äÉBý
+æø.Ìà$€àl”,˜û,žHTû¨ʤôÛìGn„–ZªJE`ôÊÍ<§G ãjKŒŽÖ*2ËJ8¥B³Ìq0–d]@ØîïæþÐuo.ýJófڌÂdâ0φî/ôåZõ(àn/Xkhè@ÇÏÆòðqc´&@r  fpm*iÉP$1Œî0lóÌôf„ô¢ˆôímÍ-Q.Ñ/DÑfðѦ÷`påN9Q")1&pït
+xÚ§ÌàŒ–Çû¯¸ËH/
+Иü$|/Œ{0¶Œ8 ‡J&@l!.ÒýËȾ
+‹‚«ªFª¥iIŽ»LvÅæ/¬ìó±4óæÇ/Ef]£&È¿­
+©4 (iu@àx2’ƤCEþ`ÎZ¼mžÚ+ƐÀ²ždô¯­ J^¢çœ÷ðvÇI.þtXØN:ç-®£ÏŠ ÚŠmÎߨ´Æ^Ø0dél °pþÐfÁt~¸ÏØÄ_(`äj×1Ä`¤N‚®pNu‹ C1Ì\ÞÂ4ÿ-ø‰ªö•Ñô´î¾zp- ”ȲÑÜWðЖ§ ÇŽ’ ˆ> ´{
+bŽßbÄn‡íNLŠDŽ
+ç¥[̪s©ÞñX4ù(vv—/ú—²“)…î+Å®‚
+stream
+%CP4r.œGc»ûi¿¥ì
+›HÔ¨¨w–ÅHÈf(2
+Óx×®:g[4ê×´µHKU•¨Ž£a@jÝ·³¢‚6(J臢,â,ŒHöL”Óµ1íœó%á«i¹´»jݑÓBÈ_2M–Ôρ¨`൘Ž&Ð²¼—‚¶÷Cœ1¹Îƒ¤ê=ƒÎ:ƃpè9„ ó>©Ì1’Ìa@Ò:<Ãê7fOóٛNy7eó^T4 £˜Ó– #pɖ蹈æ2èît0ç/®ž1DCô o(dî:¡@Ú6Ís«4úF¡“å9[u9%Oòl' ˆè…š;ÁjöKô8j:N”7ÃžÔµ70øcD»ïÁ…ÀÂ6Ž`ÊmmÈé·s/Ď|^y…p¸Bä,'`䧂àSÁjÁ@í ?c`ë¬9֒@;&¿Ñ»üL
+’í¶ù‰C*eª ©9—qUOYú«îQ£ûG!\-¤±RJÏI«#Õ¥rΖ×Ý^$ezyÚ)Ö:æbœÖ“©–B¾Ø ä×}1â%Z›JªT€q‰¾Tw›I[hhM3²ÓÊ{ùþ?gÄ0ÎJß`{ŒiŽ$K€æí9Þií
+ÄzM͆)K†ÕŽœÓs‰X^0_L<±f(G_ó'`@h¦ÛË`æՐJÐ\ÄÛ̱·Ï{"†®òq¶Ï
+\O7º÷ítòˆUyÑ£H‹Ý7oÌñÀ¿ÀËvÙã¯÷¥5Þ°Ý_-õԈUž 2£XNý¸¿ñƒÎØȆºE'Ÿ?Y øÈoË®õâ"@å#sPf­7Di2ADHˆ®2ÈðØíT+oÒ:ƒ›™8Øã»Nfõ;VëVZӜ7ì͛57þôkÆfÁg GqÒÔÇë\ÿ)¸ÀCAj@ÊéNÞaì€W~(6K̈bÒ(½òÆlãrD¼q٧ǫ¥k.܂Ãq’üȧ‹¯üŒNÁ± „'.}å”Í; 6¹i·fº;›C.o˗ÐͼÁ§õ„r>òT|
+¤x/”ÛÔSs–Á,lÁ¼2]_?t×ËñØûë8O©n·Y¼í£-áÒ¶w §&ÌÑ!ÍÈaº¶¡\™'±ju|rNQ²¹zAóñm’§=ÐڜNÁˆ%+vJܨvðÚËÇÌ•rkëq²r&Ì5{9Om‘´ÍîÕJ¤,‡¾ €‚~ßÜ;Ãr/]ϋ÷ÂûI›³ò—¼83cÝá…Ö²7VúÉ;õŠï̗ÀAàJ™Dço6?£EÕçê­y™ôßÓ¨ÇÈîç4ky úúæjW^ºZý§öNœð{DÓ;ý­¯‘×^¡ÛSæݺú¸ë+uD×ÝN€; UÏ;ç?Œ0é:^±AŸ”©œO/qnhï+ÀìüâÑ¢KJô½¯ë¶¯ÞÉRsÀÌLɾsÇR’þë‹ÐuZ·
+Ê¡ÏümËNµ$0ldÊÐ
+øNÿ‹Ø@x¸¯ŒþG„þ˜7$zæg‹,®¤R­+8­lÎÿ)ä®Fj¶g׉X•Ä 4éb´
+†‰Žª¥ÎÎùhl¬mb®ƒê›Jԇ
+ø ç˜|ã¶Øf|دЂfnþ &ìÐBí*F´›þjdÌèí0"J´lh‘f蝎oV”o`æOÜÓÆXh@Æ̇ŽŽ´7 x±|‘à}‡B{HÀé-€ zØèº!Ĩ)hol¬C‚
+њLÑìù
+}Jkè4Íƃ!Ζ Ëæq&TêCÊêŠüÇ8ë1ëŠø04¼ã쮼Pto€c¤{"1m2(þîF•.¡lø†JRhþtøònxÑõ"k2{%Q†ëàcBA&Ññ) 2õ´2v¬r (¡Rj£ñi"QoDøíàŒÙMôîM ñÍÄ!-¤Þ gÀ\CBÖ!åzÁRàðÄïÅmÊ$â*ñ0ß/ƬÆànÚ $džò„èòìbñF óÌóo>$¬Î
+stream
+ŒEÔἄn2L´j¤v6(Vë¤Yô
+Ãu»ˆnÀA²ŽemäD ªntÛýN|q ·Çj’(OG™ªŽ*¹Îß×à큢Þß 2¤÷øA—‹ÉÆéyý#(ïWEÁàÃXhÐl‚…©Â(§©ú‚(ª:²#¡Š:§;Ì
+¦ªŠŠº²½¡ËjÈ)Ûô¬+Š`º*¨Ú:*àh¶!Hd… RxÄ2„€Ð7ŽHbÆ£œv†Á@àÃHÙÁÁ@Ê9Ið` !H[ qèsŽR°e"2°r‡1 r†á|ÊˇA˜e+) aÂ4¥*K!L¶7…1„ºËáD‘pÍ?†ò Ú2…"è¨%«âX»áª†ÿ@tž'ÊF¢(ÊD6²CKšœÁÈj?ÑÛ ®ÑPP&4M ã0Žrd'„€Â3єu!I1,[1èë$ö6Ðp@̳lê#¯úªËà[© n[/SšÚï,¹†ÁÊÕ/¨m gv! Xl¡¸Âö¸m¸b­·jà+˜g76¡‚††Ëb¶§)Þ
+2ú`:)„Ù&#¢O“˺çRüâtÍn`ð­(`'´
+‹ó~?°WÊè¥â‰G³ßÐ}@ <È Ó.„Ï ACt×+3d9`Ø×ò4|i]"ÈuFÒ*ˆF.@¤›tHiÄyà]K«uªü7LD¦£"Ëá|i÷>y/D¥(qOP7QðàÛKЏÌ=ºíù`EåÝÓh AFjà¡$¿:^ Ò>yI„¤PÞ^ÃÚ{‘ÎK‚XcÛmFîZ2ÕÉ0ý¤Ôe1ÆE·èp‹‘¤$¢Ê2Œ'
+5a å²3&3Iäf¢Bân ¥KˆC¥Œ~/¼ª$G]©¢w¶·Ö´P¬ "[‚ ¬É{E-%“q.ÙFøÍe"”t‡öü;â%|#‘ºAÝç!ýÁ Z3r'Dž»1þæNÚ;㔠‹Ñ×8a ”p†Á¢›Cµt +ÕÅp6<؈zíî¹×Âʕ™ŠIf*Qc¸Y:g…u+•ôâÂÈX.-%IÝ€ž†“%0$Ò²¢NEYkA@ê3VhQMÐgQ©¢°V™ê’h
+wá:RҚ9Èí,¢b@ ×
+T‚N’ïÌöOПI<竅iìŸàŸOäê©þéäVÙjƒª™ŠLš Þ Š †$Š ÚFäºcàPðÇ܄¦ÜÍÐzg¬QnN‡H¶Xš¬Ž­nuPT—Oޗ¤¦—ïæêÏêéî:¯ªäӎ¨ÿ
+Í] Ç '°‘°þÄ­ï<Eq±žåx±ÐÞØ)?Oã ©û ‡j™0n¡1Dñ.¬Ù§ŒñŠÀÚ,Î"Qip0ø ÝÑaQ ªï“@P™ñ„}­lñ1v¢L"Ƃv-¢È-«tÅdHÃcÆ ,!b¾ÒÓlLÅú fL0,Z"V"ƒeƅÂfl”Çp- vj$JÇò$%R8ȦˆÉl’A¦’ÉŠúA`Cl¤B²Nj6Î<w
+ àÜðp’àÄrfæî§9èN ¯¾p2ªÏêi(‘Nºî^n*šÕ$p¢M*ÒîÊvÏ5GŽ øéÀ¼éÀüéÀx‰*…î®À|¥B´&`P )8Ok’KIª èâ4B³.p¬êà½,hŒndnÏê¨|Ñîõ
+âKÐâ‘×+²Òù$VÓ)§*ýç2sc~k©ò£ ZÖïxŽ"â)/т²@àxʇR¾nh'̈́ø,ì Ê¢ø("†Âb
+,‚
+4CÒÇr æ!2:¢‰!EVí¨E`˜ Œ
+€@ °
+¤ ¦
+`’ àœKÀh^`P
+@’à‘<SÉ<ÓÑ=SØNl;%g<¨qSå>€¨JÂi(s¿<&ß@sê¢R2]ÒÃL€Ã…þÌ>!ÄÈ&DwJRžÊ¢°ãÎ<C p`jâí Pãî>CÀE¦{Eä~GòRY"Š1‚:Y£"2eÒ_¥¤Zƒ8uRÂ7"â_‚¨i hó­-GãÖ&CÄEâ†RÓ¨t~*”¨š-BF.c€b…Hô¯K#qLt»CùL$ÇL‚eLÄÈRôKãÀ]Ä”BRÆÉÂæ*”ñNBÕDÀ9¦
+.ùLƒÍOôÞ.t¬< I5BôúµK"T´ëJEûHµ _†”.'R´Sä6_%WR¸vä7OŸQuRµKP•OPå1Uu)Uµ-KƒÿV#fÄCÅQõiIÕCWM55Eô\ l‚
+stream
+@ÑȺqŽïl¦ö–7ØÊ£{3¨¨w–ÅHÈf(2
+ã|Õ¸2xd†!pp!,¸\ã¹(ê6é
+CHÏ <ã@詌#›æó¾Áà0Œñ¬oÇiRY¥ÉƒVš ²p5Iò€¡ r
+BØ.j«0„­ÁŒJˆM´íí#CъĂ…Á̱L-Ý;O†Áº·F§!KC)s*†l¥)VRH@]X§B7 ‡…[Rסœ4—¤’+:Ï´-ÓI«[€-kRÀØ
+ŠCnÜ·u늆ÙöÕ<…uí/R†RÝej¹M°olGM
+‚ ͂臢,â,ŒIT–Óµ1ížó%áÊ
+?¶"àQ¸
+ 4P ,Ýð–WÉZåX ÷űÝ<)…¥£3˜N‰îA§Ä
+,5üjo.5Ë ¸cµ²M±Uᾌ]Î(Ç^hž ê(Ô®—Ä!‚™ÿ`ì-û&ˆb›3ìܝ©Ï¸&Ø\û=Ìû,EH¬æυauÝ #øŠ\KkE MʨÍhB§Å°æS¬
+«µº‰QPxµè|æw}ò£ZÊÑř½A1Lœ›GJ#i-(4±×Ó(’áh‰XÁœy1jQ‚®™ßŒè
+îìh˜ŸlÖ·kP;ærm@@Ëk¤èÌEƒÎÔmºÔ~oò)¹k$N$Îiï\ïèLëG¯
+ˆ¿ï6ìf@PÊ*ü5n¤š,IJ@`òg6þŽ`ÈäôIbïJ¶ðøµëě0¸:Pæê6îáƒlˆ¸ç+é$;ñê‘çQ
+}­¶ÈdH{‚xO«”6ëcð&{«¨ðÑ#°–¹°p@ƒJ²¿ éoöÉÏü’„dÛn°l0BtNš¶ÉðHS G}çôoOvÝiÔ÷ã
+Þ/ÀžC¬!ÀlV–ùªb]Î^.£Î
+$â*úªhúåøáÎ¥*«娎*Þn.á*kïÐã±ú'oÔ`'þýêŠå äC‘ ”ÁãÝ/ì#OT¿ª®
+(€µàŠƒÊž{‘ÉàÜàÞ Š'25#ôšh°JO®Â!ȕ,\€d§!(ªnGIÏ$Åì{.ñ(<>‹ª&`‘Àωˆsrþ¬°êuQrÄ |ªãï!Œ"¾z‹æ•@bfc¾±±d‡­$
+a+£¾»P"i¢A b·.Ëã,«Èù2«+Rú 2|'l hîuÒ=-
+Pƒ­¶l2Êìǯ5³6l@ҏ(q[7P dr³'üߋÈ
+咜´R ŽGHtм;ˆ2í$h° æí¦¼ˆÒüÃ+g ¬ˆÇ€¬@ʸH«<(¸?Pqtè_¨°ÁK1&‹4ì²ò“× È,ŽR¾ÐÚCl&eª¢Èàèõ'ЃÊ~ „Ck|e«ò¸S¾J¬P™S¿=.æ6àÚ²Ñ]ÈI§ðrÊ:QhwÀg#Nst>³ÐîSÅCdÕC°Œð0…4Jl+‘L2qM^qÌòÊÞzDêG¢6:K
+stream
+ŒEÃ(„„n2L´j¤v6(Vë¤Yô
+Ãu»ˆnÀA²ŽemäD ªntÛýN|q ·Çj’(OG™ªŽ(vþ@6Esîp6›`h··»T4üÝ ËÉæãt¾Ÿ^U,ÁàÃXhÐl‚…©Â(§©ú‚(ª:²#¡Š:†J*¢º*¢¢®¬¯@hrÚ²
+d8ýë
+ãÊ
+#dy(å#Ç¡€P0…!l~1ǁÌh9J¡”ˆ<Ê¡ÈfÆaÈ^…ó#.B¨bš˜Œ#J2œ°ËCxSˁl¼L P Óèo)£(R.Š‚P¾?àj¡¿Ð'‰ò€‘¨Š2‘,Ú涁pr¤ôFĨÔR MEGã0èä #œ—ÉÁà0ŒôUGR KƄ z:É=­´3,Û:†ˆëþ„ªÅ¬À¸ÒBÀÛ6³ÂöÁ»ÉI®a°rµKÊHÝ(BÖ(nŠÙ®n§Õ—Rà+˜g6¡‚††ËcV')Þ¡ÚîíÑo¡6ê^˜¦ij¹ÊÈNLÀÊ;Yë%Ÿ:¬
+¦¬+J⪍ÊÁ¸\¢ã·X*ŠÀŠ< #hà6 £œ3H/È,&Ò°ˆk ‹äÜO j.L¢Âd'•£°¶_–hiòWéÙñ† žM².xzB¶UºÔM¬Œo+h)ê4Q
+ÿG'ô7Pýƒ(iIpd
+åia€Ð¨
+Õ#x‘ÒL…W©Ñ-%Dü
+ºyO¥±@Fôòó!£Üˆª@†Ûâ,t‰(Ü0LJð›ôÃGñ©ù‡FøC0foáÑèÃR€„[ C¦\! ÊŠ¢eʊuÏFÔÆ˄’fåQJADâp¶·×XÚ²‹Á¸7W8D҄à¡%$à¸
+£DQ0í5Δ}:é;:Á
+•tM<‹Û^¤Šq¶6
+¡„5£ÕgߝKX'!üÇùú#Z0’¨I',`$’’5ÔÅ©o)$
+=FaÝ7$JëÜüP«áÀÅPuFHëÞ|5ñ" ¥]ޘrh8W‚»Fg(¨#س
+¡¬Ë
+ÇÅFlA²¶גÕ^ìSrÀÀ›7e_b4HJê¸;å룂uîIÄ¥g6d$pqòÞ¬%Ôa,ž Õ¡®qþžgP]ûÁ™À4»$ÿC£¼m ‘¾XHÞæªIY¹"‰àƒ,W‚ÞÃ=ãDøYËYnࢆ»ð­Ã¥lIÎ'»Jç&úUx‰ºÛۗàý_º;z©>ø§XgwE ¸mòj¿&š=xÓ"×R°E X!’r½ÉÎQi¬êl󴙘¥<Yi]žŠ…6¢h©gÒŸ³ýÍP é[Ã
+4ps«pN®£Ú¿p -c~R×IL•gžýèUõ¡=&ðQ[µn —Õ"ßzê뽝°àºÐWÐQ_åi`6QaEï-ˆÖV2ʆ}–6h(;BÈÄUe6HbÚûdmɕ·‘]›Ú;þZðý敫Vúò(»x©lïݶѷùöjÛ{/ߖÓ·ÒÜkµrní˹¨µ"]  ~úG?Ž
+éÊΉ‘ÄwuÞ}Ü
+½ïÖù%+é{­|Rh7àHg-ã<B~Õ¾Béo
+Þ\¨T¿æ¾¦²¶eÍMž¶£ÜøK¯«Î¸ç*ŒªDÈ՝sEèÛw¤&CŽ—Q6ý@‡Y-Ÿ¼-šµOªº¥<yvÔ6£kW×õ.F’š¢±<ýWY¯&¼Ö'ckJÕ­ëkŒ×|Âû[ ñ°^æ°Ø¶/cÙ[PËØ ŒˆB`ٍœ¢àYÀPÙàRó'ºÚN>±­’ÚЏP
+stream
+°ÁiXõŠ±U¸Ú/kpÔq °Çi(NÛX²×0V›^ÜQŒÆìãq¬4h6‚‹`±0i˜B*Eäiì@TÏO&Z½PÌi`„iéÒ¡È(
+J† hä]8ŽÇwÖ Ó}Kì¥Q½¡Ü[E#!˜ È)
+æ#(€ h7#hçà…ÒlñOS—·Æ0E"ß)Ä»C“ö=CËö†a˲…á¸_'a€t†OØbAƒ²#Ï»òÿ0Þº°[2DÃ4L¿#hÊ‹¢ ”ˆ­b«8j­²ìË6Š3ÍDÒ$ÛPÞ·í[…&†A¸b²˅ÎC”Ž£n€¤4Œð³Ê4Š˜Â9¾/+èÏƱ¼r•%‘Ú\˜5i `›' ÓTŸ(
+t6ƒT*9΀¨4;¢àf¨¾Hpù¾£ ˕*#pÊ2=?é”nìfõKð8@O#æ9ŽcHÞ7aÂ2 šˆÜ7:}»Z3p0ƒf|4i3Sº1½!@Ð0Ù°Ø9…ÎœÓåÚ7Ž£tÊ7ŒÏØgžÆ‘²Tþ&ÁÂp*ŽxQ«ë.èÒ7(ô=CF¼r›VÙ·ÈA™<Y|fxP6ñù¾sòùûº9ƒNdúí »ÒoOÛÕ¤º£~߸­MÆO”åa°å4r;N‹£ìº^›§ù(xP;BÏÈØ:Œ=–ÜÎ h¨¡löNIÅuÁaÙMzè:qã8A<}èÛõv=šk¹xCG<›uqÍD:´p™ÛÝ !È3‡Tdޟ˜o>¯¥Óæp›ÉþiÁ¹à70’×éepuï²6J
+KëO¹øçä灀,$‰´aŸœ~A½'¨³Ø{A•¨ŸöºÏSÜ3ƒè·óq
+_Ëí ¯½ø¹Ö¢O!‰ÓeðÒ
+Å ¢*ԗ–zä½UiáÌT”ꧯ€ )dÖçqƒ>‹8‡ VÀÐrL`dç ^²“ŠùXÜ&Jâ‚luy¾Ùç,Ë]òzT2¹¦Sƒ(iá=G¹2äj¥’^{‡¨ÂžXöYsÛ}!Š¸bŒ(ÖÑ—tEÑËʸê\ìMg¡¥2¹êÒÒ¤¾tPNg!“"MÄKˆÜjI¿™«Ë†Ï¾s¡©ë])ÕLÁ±Æ‰¦;BoA¦—U
+±b)?²vkž¥´æÎWÁ9Ά”€[ÈbÌ\IËl±PÎÝëlâùþ
+ÈõG2vïCÜc@ž’ÔCdDj=KêÞ¬vºÀwëMÇ<T,÷QN€Y—¨‹¬;WIŒ ;o©øéü>Ã븚&Â-5ÔÈÖÏáÕ@ȜòՉ;º¹ÄC@@ÖÉظCf?Á™3Ž8¬ª×XÇø6\`as²æ^ö—ÜìØýØ(÷·?¾ëœpt3_°ÍÝ8ŽJ€`’™}ùü€g=ìAFYø>܃ðÅð§µø^ø1¿ƒðýmüêG;kŒõQN}:ŸSA<] ¿v‡ÚXê"ͨ¦¤æ¡ ðñ§ô#¨Â#Ò? B¤Ð? Û,FBÀ`eé`R!cpÜI¤Ý.Ž†ŽèíM.sÏÜÍ
+&®ß É s¦ ˆf§ŽÛ i} °œ§Ðæn ÊÄjÔ¯ú{(àŽDRBÄæɼßXjF¨¦°ªìðj™q3±6sÉ4 Cħv?j0™J
+>j~ªî§LT†j"Ñ«&¡Ãðv£ð¥M²I$t‡Ž +4pDæGb6:JÂ
+stream
+>AoŽÕ$Pž†ÏW¡PíâÆçÛàí¸€Ñokz2¤ø:ûl¶ã‹åãôA¾[Y+¢Æàða¬4h ¡jpŠ'iê~ ¤
+*Ž¬ˆêò7hꢺ*¢¢®¬¯`hrÛ¬Û¾¨,+Ša
+£(R.Š‚P¾¥€k¶¨oü§Iâ| $j"Œ¤CŒŒ<Çá \†©ÿñ"5`SCÑQðÌ:;ƒç%GÒh@8 #=FQԃÆ1Á Ž²oc‰³lë>†ˆì„ªÅ¬Á86ÒBÁ[6³ÔڅÁ»ÇJ.a°r²¡²†Ó)ÖýM.¨n òá=­ÈbÕ·Rà;Єص†
+Zµ`jr»Ê®î47Žn¥éŠf-ˆtޓÓ02€(°V³0…ÜÀªJ¤0®CU
+#ƕ© @¸·qe$É¢àSEÑ´züª N¡¬:/M@ôîD¨«${“4l§
+ªñ.V¾'É^=SÐZó‚.|Ä.yˆlí¿ŽÂʪ7Ð q5`,ǗÜf:„Ž£œm¡FÜ·…A²ŽcxëÛÊӨ˷0ê7JãHÞ7h3ÄfÊ(—S&J‘twƒ…ïp4ÑHxP;G¯©èöl„hÚF•¦iچ¥BǑpÞ6êÚÄÜ}ßµkÊՈUR©•Ì*E`ØÂ,HmŒ4pÉQâC|y&'Ðp”–AhoÑ,<ôü
+á°6'¤Þ
+œb 
+Q€Á··lôÃB‰ D¸›ÝÄQàÄx“ b`)mÀ¼ÃH»D€È¤#ÃÒ³â„Bˆ‘)ƒh” b¼@‹Aâ:ÅXð
+btzˆQv:ÇvÝã+ÿ
+€©X(ÜîÁDXJÑÉ6GH¾ ”yŽ1n>ÂY3 $”A‹rKÉù¤Z°2<½?øl»!ÁF` *47vÚ°rW`E$8”C„@j!Íå<ÇbÔ`ÓµvéEÝ<g&+ÍO/@¬Ì'ª
+°0$*"tRHf É5é†PÜ® D
+I²<钯Û
+­7¡^»*
+N—¥çñ­¶-p£ª ín‰-¹ª)ç²ý"t ¢ X3@Ó²UP@
+‚ÙcÂÄ$²{$ã†l•Bˆ¤'…Š‚T áH)¦èìø‚ EÁ$'¨BxNø¯ýVûT 07¯qg‘6ä¹A™Þð–oô¢Ã(qjËz'âÀ}??†d<- PÞ]š-§yÀLÀXø„¨%θ €Þ àÒuƖÐ…°†¦Ki‘„S@ ЀZU'0„ñ`îÅmÀ@ê«#‰xÆiéˆgp'0QmŠß*Vz° {¤zH`ŠýFœh ß ÜGIyJ~OPnŸ pŸŠ’Þ²t+Pž}
+p²ÐzOÀj_…b˜h4h𠌬y‰àý ë`é¢4"l®WÐÓ Ï@é‡ÓhÌs¨U¨9r€Í|I•„2!à]â_ïà–`y
+àɘ¨p,W(æJ‡6`¤T­q< Ä€ä $ï P0´`æ
+l¹Ââ=¢¨f"„TÀqÃÂ&Cƈ¯XeØg"æ*’(‚fÂF.qÿÃr&‹æ6mlsr²$\¦7qî;ËÀ=¦Ð(¢¨&…Lþ¢› ƒì eSâç ‹ #2PÄpžB„6ñþ^%õ%ò01ÂÄ6òNRS&ãÐ-R$2|=§8Tr‡(¢“)²u)RF.dº.i(’m*'7*cY$R`1Àh²…#Rµ%RÅ,’“+ò—*Ñ,²k-l+ò×%Òª1Àa+!.2/2½.Ò ’Õ/rÏ&ó/òÁ'ìµ.“ *ˆûòë1#Ú;Ë»1²¶Ã+!ãÇ2G3!r³1Ò=2%^[Àl‚
+stream
+°ÁiXõŠ±U¸Ú/kpÔq °Çi(NÛX²×0V›^ÜQŒÆìãq¬4h6‚‹`±0i˜B*Eäiì@TÏO&Z½Pε„iéÒ¡È(
+J† hä]8ŽÇwÖ Ó}Kì¥Q½¡Ü[E#!˜ È)
+æ#(€ h7#hçà…ÒlñOS—·Æ0E"ß)Ä»C“ö=CËö†a˲…á¸_'a€t†OØbAƒ²#Ï»òÿ0Þº°[2DÃ4L¿#hÊ‹¢ ”ˆ­b«8j­²ìË6Š3ÍDÒ$ÛPÞ·í[…&†A¸b²˅ÎC”Ž£n€¤4Œð³Ê4Š˜Â9¾/+èÏƱ¼r•%‘Ú\˜5i `›' ÓTŸ(
+Óy]¸Èm›lSˆS]^R ³XZn[nòZÒ:×%3ÎMšäµÈ*„ܶ«v¬¡›)!ÐÈ] -b ˆÛ‰÷Læ ‚º!è‹8‹#5‘$´íLwf¼ŽÞrÛNÛK»s{Îl†%$YMLö†Y•å©ØlJÒSgÜ͠ƕ
+ñP6–×Èß_@lpA¸ðÀFˆùÚCJiŽóˀèÕØo½7ÇÌߚpf?`ÌüC7%,!±É?„ØC¶s^ü@–Ó˜·fÚÓßcs‹Šn&Xxàsì„à ;0j|Ã$prQÉÊ.ãVrA 0Gnij9Åð ÔÓ!ÀÍ)r SЬ%Ž»#£'vò}ÝJ4wHLyz¯
+“<ZtÅ\¤”HEå<ç eRœ;•læWCW¹Kå¤ìŒ‘&3†ÐÚeëR—è
+Aº(…Ì`n”ùµpÄxCDë|A–\ÌfÛ7Ú4
+–2¦JË+Õ€0<4ÁìD¨óž` :X©+”/†'uÈ£yñ?gÔ9Ÿ®ž½ðß<‹,õ Uà4תù kô&ÀÚÛuF掼…›(Èí!Z+Ғ®“†å­ø1P€Õ(ºFrŽ€VD‡©¡†Âƒ`evVM×ZˆT‰v$œŠÓ™;NêM='tüIW¨Î$ÅE“r:ð2ªšåªQ;¸k&óÉw¯UhÐ 4AXÇì"²3H6>3ÆvCº=N&^C Isî‹Wq <óµc«ý«°6ºé[u(㸣ÌpCUI#Ò÷, Ú>™ª¢¿)„„ºÒìSiwXß© ZøSóKŠ*éÆRqÛc²óo†H”ľúU6Bö©U|³]zkv©¾8½‘ÎðãÜKp®Åõ•˜¦™Üˆ²2åî”9&÷Dö‰É„ïw'#Êòêñ4uùcÈڎò/ÄÇ' ^Œíz³5ìÈ×ÅæfÒ´–n&LΌó1π`那;³DelöCdUÜÏ×4»œ¼†åBÐÄnLÔmIm¯~Íd]¥å“t£Â¹We}Avݞ9ȺSƒ*ƒo5ÎBÏžOTœ‘¬¥*QÈ#IIlÆö/Λkmª,]F¯tùØãaf‰$±)7Ì9×Vh˜ u.Œe÷¾âÀlu¾“È9ڊç="5þYÔ{Hh~”w^ÉÐùEk ×´ ÆƇ ӈë÷+t͝:KÝ ¤$꡸d<DT˄âR:gT#„'WÓ|äQ±EƇbNèc}!Œ:†Ê×A.<gT7ÍZuòÿ[³îYĽÊÁG-Œa¡µ·øÝ àB ¼ëÖ‘¹Ðlçœù¥·‡øCYãF~t£'øQ“ô7W,ƒ¦Æãñˆ9àd.
+^þ¶÷ÏH8Ã~†ïöüI0 O–Æ°öO槐Øïøám–öoyoìû jsïÀõNã ^{PãnðëœãÌ>„£NŒïÌÁFŒñ餚Žz‚nn€ @먢}äFžª¶ŒÈ–:c²¢«„>fˆFÊèE;IªåC¨ê.\éŽÇD³IüªËÊÿÇ´ÝG¼:èDgÚ ö} ª¬K”E`tžËf4‚¶w
+-²M8 í9‘dff¦
+€àꎦ걽Heªñ²¡Ñ¹Ï
+ðí,¥‰f{èŽÀrC@P
+Ë&ž1¬±ÑïàÜêÍ8éoàÊÄ×ñà}J  ðŒ:°¦òŒHœ ÇÁ‘öãFŒÓ€êӊ+E&; †çpŽ‡!‘¢‹è:jñè«Rñ§ÔÂ`²
+ò(ƒ ØàÒ †‘0S¤æŽFñÃ7-1 Q¢—*ʗs΅ãèinÃ>2©*Òe>óò²&‚L
+¬'3àØàÂ&®#«©6Ó,éÂu–‡‚T›Iæ¯5€i6³+7ÆéÀP ³} ”}!9œjôd®4‹243‚§IR?K”JWJtÇ2æÅ3#ob}I”÷>æÿ='Ó=
+stream
+%CP4p.§Ãib
+eÒ¸È]0Ѫ‘ØØ¢G[®‘gÐ($
+ãÊ
+#dy(å#Ç¡€P0…!l~1ǁÌh9J¡”ˆ<Ê¡ÈfÆaÈ^…ó#,a”ª¦„f#Ҍ§,2ÐÞÅòà[/DÃ4üÊchÊ‹¢ ”¯I`íªý@IÒxŸ( ˆ£)ã1q\†©ý†ñ*5…`SDQqøÌ:;cç%Çòp@8 #=FÑô‹ıaŽ²[… Ã4Î a¢:ÿ¡* qk¯íý¶¯öÕ®ï½ApnñR«ˆl†,l¡´aÔ„]Ê~ü8cl‡5mÖ·Žè@Í«H`¡…«FV§)Ûº¡ÛÛ=y\M¼—¦)š@µ!ӂOM/‘þÒ0Hk‹Óp5=áÊ*ǃ¦¿ªpª¯|C
+—äÆ$¾©í(çËRŠ±]7Ì蹊ԃ<‹´"ŠÜN3tnÀµøŸâDeI ¦1Ó ËãLk1¼9Gp#¤v,0ǸûãdՐolÈgÿ*àß ’ÆxÉ1BÞ䖝t>!Nø.Á áÉ!Pv«—TÁVe=M•5>nUCè,ä–sžOØ# ¥Ü™žx¸°@jX õcA5ÑWµ¥Kå.
+”¢LصGÃ,Ñ<åeûÈ)¯S!ek!Ò"MæU8 <f5‘ ÌYÑC$¼ì«²ùó¦2ܪ=d´Ôd¬ªí*<ª­´
+Å }֞´P×ÁW%퓍öĐә`èTQŸV!9Û¬&e±õ›SD‹M©Äj©(Ü6G
+n®&²OîܑEÛJJ5+¥¥&뢪c½ QðGéR¬¼þ›Vê€Ùå;h+£ªÖάBªïT®E{µ“À0]J)üwsÞáÛ@P­½j·5³Ãúó8mø8®wEíZŠñj®L” ·2L"v,°ÇŽùÒû±GµšJÊ?ˆÎD’¨8Jaº8‚
+°{ÜÜ©R'V´0‡Œ½˜Òy+ ÀÐðÀ,E¹(¥gÐòÊQFz
+Éæ,­ŸèzjhÈ2I­TCA버ÀõH‡M£IR®Ü¢Fj
+7{rpjC5ۅïÆÍ×9"¬±–¯½B¿U>F°Þ’¨3JWŒ4¤øá˜#DjÞÅd$ç®Py9^ÓÉÔ÷˜FÍɃª¸äü§•§ì•´ÖŒštïwáw÷’M¿5¹a·R¶ß»Ûg$FR
+s·v0P“zSa…dªo3Ò{ådu0õQ½;ð ŠñuՑUÝOà 8‡^[ß#_:åê+Ÿ#`é·R"‹ôyœŽí<¬îóZ(n¨‚–2
+~;`@Õ@Ò¼@ÂàÂÿpÌLÖwfæUªP“ëâÎL– ê@äàAËú@ÞÌ/4æ%}
+Í î&ÜÑ
+è÷
+‰rw%apHJqXïÃÈ2d^
+ô€Ò ÀÍmW2Q,ÄIòɐ|Ó Ï'K‰(( Òe$'j ä_)i)hó¼§s#/¢'/ò½'Œ­'Ï>r/BÌs'F` P
+ Ð’•=ÀÐmñ28Ñä+üøq0ãSê¦òÊ@ìÑ´Ì,¸‚"NFðãñŒÜÀÐð” é@…qE„­)HÙßA±]+
+nwÏäVæ&¶éÐæ_ô
+oJŠè¿N…©J©b|XâŠ1B:Yc2%Î=¥ ZC7 "R¨n+çÒ."¨i#º]¨’.#À&CÄt~]beG¢©JBˆB \$tœ\´z6ɀTãæRâÞ=‚©L">u4µI£ëHbÝHèn)4Î$bdø£ü)%îU4Ê.$ ]´¦-ÎT!4ú6”žb…÷OTàvÊ/NuNÂgPì;´Þ=…¬+ôÿP4ëP€aSÛR”ö`cš6•SuD-Ôº55ANñT•N•`g7RUUQCج]SUcWSMÕBb…W5`øµ€võ{UcØ<âÑS5†!5•V•}Nd95…QõZ•VÂâKÕPbUtøµ¹Z‘[d!ZµLªÿ[5+[c\Õb&Õ=O5Ö1d}]ÕÁ^µÕT%ùQµ_Zˆ”Uå_Cÿ^ϑ`uz6t¾8uÇK4ý[՛a•ÄU徔
+stream
+Ms4&«ûÁ°£+ס\†‘Ì7î³xË-Qønå,’+‚ÍŠmpf…Á¼‚ÍI®ƒã%ʲ¼‡';rŠÒÉRd‰-7²Hs%¶¡°nÜD
+Ê/K.JÒlÇÑ ”ÇÏòÉ2M¤ç:¼2C`÷ɎAC>!¨lúQ“mB‡3%J=³éLSAN¬Á½?H2«MGF¶6ÒŒÈ  7¨# ¨2¢âh’#À@-¼¡…Ù-UJ¡ŒƒRÇÓtD.„ z⹁¢©¼LШ9Å⠙[ÃÕd3ŒÂ2°6×õÚ+« Ž6'¶$„ÈJØ`¶ªƒ@Â9^w«4Í«m¬"
+"YA kА`Ëã$‰À€;zK uA¸¦Å(¨ßÊW‹1–ƈ;á fBpÖ8Ç8rÿAD[‹±~#ÓÎcd §1>˜ü W(!7‡pçb9
+Cfí4V
+-mŒ3F>Ö3ûD”,]‰€4 »]l1ì¶vòßkDˆ--§³,ŒãZ÷$‘íê>¨Èˆ³Y֐eSª=¹‰2ÒÂÿq.•Âªs0ڋt‰nZ{9@Ô
+aÉõJ1ô¶ aœS^ñ[þ
+¸9È")# Œ…^„P;IèÁc ¡°67úÄÌë%œjÉÞQlu„g]A~8VDø²F¤õB¡gI坑ñöÈYB«¿àä   ( €°6ãIƒ±¾m§¸ï8Ö¬•_>€ÏÅêd|øüqþKÓ9ßA>} –7aÀ6ÄS
+bçÍjÖìÊ÷àÞø ÜøoŠóüm´§Í*á HÎ¥ŒÈúÂĂåC†ò*b”°ÅàPÆo4üNBü ðN^¶
+ÜÚ0*¶.ýÍÎõnO°7Ð<¯‰@
+0fËÒ8ʚDŒ1LËæ¼P¢+hj·ž9L–D
+‹Á
+Ô2æœIq úƒ4<G:{„v{åÂ|D„
+…ÌÃçÌ©æ \'ÚeçߏãĪ1 ûfT*¨‡È€ˆHˆˆÍŽ‰H˜‰ÂX¢×¨ª’(°!ID‹ÈÀY ÚÐVå$J… oêɜ š)¦ |÷l´ðz‘i Œ¼’B!ÑÝ¥'2(“Èu!)H LÉz(©U#)Z•éb–ij–æ\+e"òjÙNù!ì„-ûMM%ÉA"é¡')¨ ¬› µ¬mðҐU%2 I(ÜZpdâÕ²¼D&JòHêGn—š¦of÷(~ˆ(†ˆ¯uȚ‰òoòHŠÒ(Ž>˜R¹(êž«©"©B‹’”¤B1I1ržšI\ò‡2>"‰ÒG/Í(ÇÎ<ãa+òÏèê‘òø‹2a!rf•;&èõ* ` d—Òz—%©"`JˆG0²˜Ž©v+҇)Òq2u*M]*‰q §t Ü
+äBùÃ1-8õ$^0T1gÎM"Ë:ƖG¢ÀMÓÂ1¬„U%E;‘š4ç®FÌ?<ÌDáªì¨G&“ é(Ãä†#d[Åbñˆj>ÔiÓê™N²
+‰`äšègoA`ʗãRèŠ@æ*âb¡Úÿ-¬Á# Žê
+„¾SržTž³ìë%~+(´'.p~À@
+É €\ÚÓô,Óââ3ªe•ÛVÓzeUðÓàaÔz¥SªDfFN4Ï4FU?
+ŽÊ£4Ëö›bàDà@u@D k1馗 høƒL0£WàÆ4·?-ïu2¬ª'n‰ˆ¨WWj7âÐJÈ^¨±p7‘u4l]BWÃCb&-fw1<R̸69i6]i—`"ˆ¤<_ wöf‹6mk´îØã52é×·’…ÅD7ë`ƒÈ^DWýT*÷@c8NÏuzd‘8&Šx+GËH:­žÚ˜>Øø(v‰„vƒ†Bńð}‚˜b‡$Èe÷ô¡¶à­±âRh^TCc…õoeåþç·ó2ÖY€"›€tÝz×÷ydB<Æ><oKet_É_yH"t¬I(À(¶Ù€wã(é~Ó%X¤¦½Âº,¢»wX¶Ú˜Ð¨ø€[JèŒËHYŠDEŠ+‚׎ø´@-©p`að+zý‹#/‘Õn_“ˆSäDá@-©‚Ph·­4茲Ò“Œ|ýêRY<bãߑõgX°Îž
+Œý™_
+\¡„—‘6ekX®@X6Yc‰v¹NÀçFÀŠÕ×¹[Mt*X)C€Ò!M ·‚0êf'CM¢·­Bøä=˜’íã^X¹¼Ú˜LªH1 ÜcÀ ҁ5N ãK•6ߓ§ 6ћõCM·À‰t«D‘ôÔÕjâw¢ˆ¥žByž¢Š ,«¦ÌȖ¸å™Äªš~<Ãϟ æ‰rï ™/R= /u41…v~IáZë:8H– Í2šÑmšr4ºçZ @ :̑íüO•Gâ¸ô‚,©û®ú0à҇ ’€z ˆ—u$S[›¯à| ‘²¢¥ƒ`k³s å›«{Ÿ ˜›#³ºE5à“–ˆ?‹gÏ´£Í´ùep› ôG’Gë^1»h¿Ú„ ˆ
+stream
+…ÃYt„n2Lµ:¬lP1Vë¤Yô
+î‹IÅÓÈ8QĂߪH¡<ý–«@8¡ÛčϵÀÚðÁ¢ÞÎðeIïõ¶¹]¿É¢è|ÿ®®WEÁàÃXhÐl‚…©Â(§©ú‚(ª:²#¡Š:§=
+¨ª#¢¢®¬¯@hrÛ,Û¼‚†ë
+â˜.ˆê7
+Žàh¶!Hd… RxÄ2„€Ð7ŽHbÆ£œv†Á@àÃHÙÁÁ@Ê9Ið` !H[ qèsŽR°e"2°r‡1 r†á|ÊÌA˜e+/aÂ4¥*K!L¶7…1„ºËáD‘pÍ?†ò Ú2…"è¨%«âX»Aª†ÿ@tž'ÊF¢(ÊD8ÈCÌlB*p@ÿDj„&ºÅA@˜Ñ4d€3ŽØÂ9ɒžÏFQԅ$ılh@Ç£¬“ÖáÁÁ4Î3ÈhŽ¿èJ¨[
+“n$*•·l=- \¼T²æ!‹((m(gu¡z†à? ØÜ!Ê¡v.£ºsrÖ(ajՁ* Êvî¨v˶Ð^w
+o¥éŠf-ˆrð“Óp*€¤Á)Ú ²*³ *Â¹X©p\¼a3’ÀùŠ‚"°'Ã4’ý*M †°È½9Sù*¢¬‘ú™°*­XeËÚ|•äP=AAØ:禼!‚æ†ÉmjPµa
+Œok„(b¤SŠƒDp6#À@.Àð:²ì' H@3£t²4ãp@1ÇÁ”ko£Ò7 £˜@:nÜØï;á.8µÈì0ƒ¯2£Ÿ.3ó|èæ8 £Ò.`¡°Ê2póøq<œ`ÜEÒÚµbíÁpp…ã̧–£gAnÞ »•b ÷²·~0ñ|h@7ŒÒ°g)¨zAÁWßQÀQ@ÝÍs‘Ä«²´|ÉÝô©aûÿ Èù‹žtˆ7:GLêPsx‡ $€ö;Úx džÀÞÑÂZro¢¾„œúŸbVQ/½ã¨ðQUzÈ®»ƒt•ä€ÀÓºÊ )Y !¹Þ²€`›Þ pZ 9´õÊɃÊ0ò>·ŸsðvNÕȹ7%!“¥† 2À·ŒÝ[»y¯‰ò(ØM
+Yr 4C·0' ‚°^ Ó*ÞGC K„ªB4P¶ CUŒÞ¥Îîh‡KœKÁŸ¡\Ö:ʋýw•ìWÐÝ_ì «ˆvÄƒÇl»ƒnó~—ºÄ<+}Av„'"éýU*ª…\ԈÑRß«¨o•~5†(é\Ae!Ô4ÄxjCr¹·’­UÀéVÁ@0pµz°ÀYskEH‘í)“™Rµä³-—Eu˜ƒWœ`Á™_#å&P‚†y.å! òœÁ‘ˆE%[Yi2½§4ÙfM/Œ*–äj\Ê2U+%þ l-|ÈLVÆÙHR?6ʽ
+*š6
+•Íq¦aÜCpʗb^aŒ×0ÜÄÚ3U­ÌF…œ¸m˜¤_Ê4¹ÎÐÏ=MÌs:ic­²™^ÊÓ+åó+íQzs2ڗ5¼)“ßsÿ•˜IҜLrA°69¬Úms{ÍÎOBPæøåãºD®ˆ¹"ÙH#9C|ç¨Z`¬Ò[Ó^ABv¡‡u;pí5¨®aâª
+l2IÓ¡$^l
+J !ŠŠØº“ÃUˆfÉü™Ã†þŸ À(ë¯Ñ×ãi¶ðµ$ J:#%WD¨¥äÁxt|<__³|¯–òÿ ªA å¤†ÊV½CƀÍñ¾ÀTYݨ3‚³Î
+®p)|Çò¼ZÄ
+ŒjüDV‰…îîp®t²‡à „+'hJào.(IÀØ킲‡âJ8/òÎkDþ)åÉjø¯ÀÊ°
+xß®h!ðÈ0PÆ°Úå…i„Å$_%Àlâ
+stream
+ôûÈZžnOã~rf”£5¹0ï\PÚzƒ ¢‹UN¾焿é:A‹¨o¢»"ôâ.IîMAí7A¡h¯?뚸¥(òK­1ݟFabªø¦aÛYC:”õA-„DmÅACz¦bd7ëa=Žf!Hc…Bˆ õ m±²}èø‡Tì'œ{®'ÙìcRi¸õÕ.$¸¡øl'èt‹6´E8ðúÙÃ+ê÷cG" Ý^IÔ¼…T¿Tteîª|+ÀŠ´ÖÄëŠwˆáiT™„×I\I؏(;
+<V•y±OŽ—nÄÚði$–4ZZ[ž!iO *õ!Êf!°ÂýçÚE©M…(лð,ä– j–¢:ÕVmë®í▟ÖÛ²šðŸir®þ#(Ÿ¦®šÖ y³rä:IL”œïn…acò¦âê™e5p yóó#ù˜Mx’‡ª„µ¨}5O°89,`ñÈɧäÛ!N˜Þ"Hg;Yé‹/«å=e®'PT,­ÑÝ~ŸiW|Í1q5)J»ƒPÊ =Üÿ ØZ-C4:|)Q:ªúâVˆ’0G¹Ÿýöç)gœ»{=€¬yÓç•Ùö¸}ï¬<Ä^ÝÆDÂ\Nž{ÆÕÜœ³ !KÏY…P·Š~!©&ùßîT™ä%¡S–6„cåïö*9X–äTÔÆÿÐ÷¸Mc´‹¢<¶š¹eµËwft' ÿ9]Oˆ¾&ýÇÉ°;ó]òH:RˆAäê¥À⫦Næ² `d¢¼G4/?¸– .«5¾$C/Žž’Ô¥qYª™/ôÅü…'`ñž-,‰!(1ù¼+•vþ˜uùɟ}Ջõ¸}u#ˆJÛ'¡Ø=ü,v\@8–!ևù¶…ªÜ©â‚J´G4ÓéLBžßúwOz¤&À;‰ªXŒìæVÔ²W‚ûï,æÌý­o{ Ѽ@¤O>]­}E~JL'çé˜qlàÖè6ø’Ø–Œgp؆³nºd€vÂHǵÊà~ïøPb
+¸Ú㝶ÂõìÆ Xªv†[*¥U°rév†f5yåÔrÁ>Š^@ï/qoˆÿ‘ä5@aQ†°úÃÄ-ܟrM¹|cĄv’ž¤íÙ/WÍ«$bí3Ù±úxh¡g.š¥Þ˜}µþm}kLùt•¾5¾6 šÜÇ,™¸Õ2ßT«Æ|‹uB}[ý¢háú} ÚÍ+Zw2Ÿm²!q?úÈΏ&¬t‘3áô°/!ˆi< ‘† *ù‘ä5@aQAŸÖ7pòšEŒâÍáÖ)[­>wõËÆ{2IzBƼ´Fwþøµ|¤ìUã7„T „þx1îÝ¿ª{.C¯Ì&\~»FQ"zV*\½Š¥«ÅFNA]Ûôõ5ûòd_å/ y· Á87^¸þ ámîƒRžñj¨ XH‹‰9ÚÓýÊ!7K|%ÈÑz½àÌÒÐܬWU)óuOÏL3ñŒnáDSMçôzø¬­«MÜߜ7â—ý†ÉÛ9»†§Îtèı’@©`öã+#°p“7µ)ý4UTèâg®ÝÞ§#¾ËÇr]R¸š>{ Ü+ÍÛîŅmîÕz]äŒòÍ¥ÐOFåÒ2žc2˜;/“ð<òÞnSxàœSïtÇÆ£
+L™ÑÍòv9]Rz¿£ý~MñiètúÁ&,|+ì@ӐÚڨ܂Ò"Óæ¼Áháûö1­fˆWéôM+«Q:"ࠐFt­îŠ7ºÅ¹M®¯¨ÚɅÿr)Ž¶WľáŽ©"ƒ(!T‹Ýy ª¶™ti×;éøDp±ÖJ«AIðGúmÅ=11!¥òÑ}J"X `êëüÊ¢ÄÔ !fä¹Y•‹IýêÐ}=ðŸ“+Ÿfüñ#’ ñVgW.5K.Â-mçCvd®Èt_¥pšG fåc$õ%IþhéÅ5ï÷uêg©ßŠæŠÐ1¬çŽ„|ïÎU,~߄5½4h gÎ{Ö~Ÿë„ñ8#d$E;TÎÝnÌo`@Œzâ0K
+ÔdI¬réOWm÷ªAÈÀJ§q§¦FßÅ£Ö¾`ƒdÔ
+<‘zxaIÞHÜ2°'©Û>pÙº`ÆlŠë-Æ 3†Ìç‹×¥ üå³z¨›=ôlP,ØDºÜ†Ùu¶(ÃP&&¾d{×!¸Ë9+Ìs$›Ø¶©,Ê°×\q»ltc „løíF, 1ÖW‘^}BîÑh0R'G@…Èå§ôÄB+ó¥2q0Óòö†Nö^"=€ö9©FÀeéb„Pýƒçh±Ù&x9gKçcÚ÷éê3‹!”ÎS-­B·nüõ#îÚ¿t <–ÅZ*i敹<[±ÙÖîE›¬kÇÿž‘ï9Ã'±(™çº“dNL$3©ÐŽ•Â>%ò‚&êÛNËýîpŸêØG^“#kx='t°†¤†Õ,–Z•ð£¿èÇGÛÞÄ#3ŽíhG¸W·¡â&øpè{d\—0ûþ–K) àÊæ)p~óǑ  Ÿ\w¸MVçlFá×ÁÕC¹–ZKk æÚQa™8?ߚ“J,FX‚ ÁÒ9­ü]¦ N\HÙ,o0˪Ñ)Lwý€4Dl]5Ÿd_n"ax²­+?1_~c¨ Y!tî§âB¤ÌiÇkïAè–z+8Ü~–—˜kÛ©¦%¬l[þ€º”hO -ì˔Ð,Þy¤ ã¡a}²6>¾Ÿ‡K³ Ñä»Õ‘4é¡T…À§a»lËiNñ([ûævŽò\Â$Y,0Rj/ú÷`|ûÒÚ·¨pKn¢‰ÆY@w~ ÙW}Di=.ãzâ~\œæ@$àJ©¯×CÙ ª6
+NÐdÜêÕêy~Ñò태± '¼¸?OqÐ@ìü“0• [‡9o™ç# «,ú
+Õ%ÏÎC
+·Aw*€¦O쟖=¤‚æËCYãìAûäÁ!0åDø-`ÑîGö;ÄLãI;"o]†S¨<ïºé?a€X@ž®¿‡8¶«fBýNÜ,wˆÔm¬V?Nš‡À­Ef(å°*ˆ9HbUFëöÙNSd†tf^’ûœ¸÷¸1°Ï EŽn¿úÿçŠpJŁ
+åç?q‘ŽR.С’FĐ Ku@ök-H‚ïžó‰ª®Öê™6kÕjÃZ©Ý\»9Ëÿ`Ê=­Hz§
+ÇìPúQ±ºcÌ«Ïü•ÿ;ÑGq•Az•÷ܺ¬·æú'©yosÐ^èV…`B/1ŸûІ¸èˆÖª¡\T´áŸ·–‰LZŒTÔÞ}h[,Á#êùSË«¡a܍M0ÞÊÛhíuvÇVgL©E‡ÔR7ÏK‘æˆÝê€}x¯
+)•»ÍɲS{?‹EÇ*DÃM”çÒ]A3îC}¯ÁՃv;
+Jºò˜Î#½Rì<d¤‘Et0Ÿ;À“C5´Êòñløþ¬W‚õkášÓ×Í°¿¾P¯¯K\¸¨
+ábí‡xq^ݱ/Cz@OjÐâ®Ú©ùßz'Xg>fâO¶fќ–ÈԔí'=yW…,!Ùx*$VXñã»&Փž]üÓáš0fÿ‰zhÓ[á;!¢¬Ê^-æ?ŽpT<}[ üÃÀÔZäï§Óù$CӜW¡ò½Ï\ÕÇЃ€A¬s«>ÔHHe^$}ôÝT??}ù‰˜¤æ×#jG²<L$óú߈5뫕^>&Má&‰–,è1P_q!H€1#ºp4¥ÊòL¯ä¹ßnD#¥íÜLYk ‘„*sÃÊ]„a¨»x…:ï]Í`µÚTŒgÆÛçÞ×cğ<÷mbåü 8qµhÄ5zî$µäæÔ
+°:¶¹I½kˆ7‡œ±ÅÐ1¥¶UeÍB?b¤àºoŸ¨$e#ˆiO€?3T„q%ÕÜÅUOm6äՁü{ìÂdgbQ|º”8P+&Tü‘O³ù:¹Sù{WÒ­«Kž/ÕA+½(Žìû› `ÍÚú>÷
+~ã`SûÑ·}@À“H3Îy¸ýœ(ÑR:e…-eå•~ x &ªÊ;ÆØH+©|èáF^Ö •å´,ÁÈä'bS`j±. uxÛOy°¿CIÔ‰×^T~Ë£-hzÐY§ÉÎETÿÔº¶C†¤"†óºðéöGbT³ GÆÙÿ'@+;+jTÿøÄ?o˒9½zwd2F9:!°Úû,A*4¦Ô_»[Ž-¹í Ë_üø8øƨÞÃ=5ˆtú[Ö%ÔT\ƒýÈ$‰nkl[˜?©¥Ó÷ß
+–Á‹!]CÇj͸>ÔL”ïB;¿7:µ#ð`ºcGàü‚ñ0ÄÌôR±JߤAFYF³;gªgôÕá§-zÊËÏ0ä=ØëëªɕÚïﺹãЌøoŸnÝyÓ4Ë«‡´¥À©"ÅË2[J¨²·ô6´U,VwxóKpÉ ³ó2)‚åL¸!Ùç÷Ob€ŠRúî*‹BÞ]7»1ª_U†}HÏ+ðjr …’ î yvEt›¾‚È…úß$Ö¨ãÀ(­¡®"9².Õ|3{?Ep¸ £¿Ø%¹Ü…“‘²¯¼‡QJM2¸’Ý
+3Y•zå~”¤XƋDÞ{ñX¦rIíHŽ
++–K3UD¯I!žUFš“.UñO7ìþ…Έ…b£Evr ¨æ ý‡x×"P03z`ˆÒkžz³«/šZ‹Ç„V
+CµÄº&3\pàlékiã²jɔx=
+€~QÍDoR­ÓnáUþqkœà}üÑîX0ÚÁ³ÇJÛ§=JÙ¼5>i~±^uÞõ)°3Yd×ìL،1Uœô³í Ï)Ÿ+ÁùwŸðƒ¸hM]ªû{ȃê«Ø‚:)kWú»˜•cìt̗Ž÷W‘öœøZv¬“ˆJ¼ÙGÇ'‹0ßY¤Ægâ¡¿f(ôk2Z½Ã–¹0†É.Z!²ú9·Mr.ÑÒb€H¶AH«Â OhD¢ûƒ‡±ÓÙ ¬PsJ4U¥*ç^»îo¬Ñ?ÅÊ#Âæ~î̞þ ŐeÖùڅ{ß”†Kåfþ=! ÏS8,_}«ñ¦…Ö¿˜Hy÷ÈZ]ªG
+K²šXtArWQ)ä– u)øYu ÇápœtY‡S¤pµ3[kÈÅu‘ŽÜÞ?\–>J9œ
+R>÷f˜R
+ÿÞß1ÿa.ÎcŒ( ü\*h1¥IC—É
+Ï–J9½] >¹äά,ÀÚÌà©q.¬]ôçOXÊ­EÎN'I>5ÕVìv°QȜyÊ®gkZ‹¬¿X(†B#R
+BówLÛ|«Ž‰ë–üï>Xœ_ùÀQ©ý¼£á ÓåIÃE¾3Ym%OiŽûî@¹àè¼N¹äúwÞ_áÄþ_íŒ=¸ô¯¯i‰Ô×TBPÒHãèÀ=
+€RLt”–ÝIW  NŽ§N,›NäÈÙJ"&Íㅐ•ïìuç9ìd¼ÎÞµ'«'¼Ù½³<¼¼^Ž¤š‰WU©–—”p{-œCqŠ5sè
+6Ósï$4E›¯Ç-ÜÏÞ\Rªl˜AfžwŠ¤ÖûS4"ß=æWæĆw—z[,|Ùu³W¼Q€9N¢
+8ñB–L'꛳/ åeޒӏqž÷šþ']¾–÷¥›I›É?<Ïk„’ÇÍf +s°¦LàÞG9ÖצŒkŒMð¥»ZŒ‘ØŸ*Œ¥4þMu9€ñ`®¹ü³_hÿÍ Íy¯¡ÝÍT© byex3¬=F_°6;\’NMŠq÷ ª¬›i êòÌ?øÅ'Õ$óêîl?ÎßU]Z0}ØsÌûĵ„㪠°›6ûËP ”R%YNý]Å©HwòD½¤ý‹§]Û»? þ£<wÇO ì´=¯ÉF²ú-ÝúÖïlÌlý’Y
+ó!~òÄE´ÈOdþ£úHêÒª»¿!¶cßU'ìÀš”.ž†¿~‡õ?2²-ÉÍH Cêa‡.‹ãXメyøÕS{Üs—·ìô ¢3ݧ3cÎã5“.ðµc¸ÄZ՜ô¥¼HžîžØÔÌj€Vy¼w܏ÎÓëz§
+­ª9ÈU0v½'wE\Ös Ž)A9Ú õÃÅj5{‘a1Ds,”$їåê…Nî ×UèÄÒYŠ.5ÊX¸ñHt®îŠâŽâŸêòÂMzõ€D>Bšš‚È—X3™JÉ÷ÆG@*¨›vgxýÑTƒ*ÑJšôü•‚HÁüÔ3\ë37ž¾1 hœ;”pOœXXŸ|º¡F{šBÊñ;°‘ÅX7`®ºª$Ö.ŒY€a2K,µæwRtÿ¶„¢m#—ZSâPÄ –¾ºhs9½¸ ·äbed‡G´„Òt]²-ȓMïƤ—îVö4m
+¥ÊŽø˜°Û]‚8PßP
+G‹Al²|—›
+ËÊÎõIJô ƂÓ^ëvœI¼Ÿy™ûUWЮ¹k:{#mÍo"λEÛÖH7+ðÂЭË.+äåÒiç\õª%­²n‚LÝÏQãgªñ•HïÁ™)`‚´.¹Ã¾u2¿ÆL1ÅÇÇ>¥;N,:<_ÔËy^»èœ9Lù҂½qä\`XÞ9
+ ÏÓÑ X6p–q? G¼!#LtVUn¼øíÍ6ÀýûU®Fµ~2×kÆí??aÇîyn#M¨qP–T:•Ÿ/ű(ï«HoK`dôæï,o|H9I,!R° ‘o”^ „É3DÀÐpÀ݄á¤w±R©µ”dÖ3$ƒµÅíà £œêÉ8ºÎe±’‚ h‹•­F†-ÒÅrj’ƽ‰ ~–øÂ6Oœ€¡r˜fE7ûTRnö›îenýÚBhíe¿…%¯ Êràˆºê‹-ŸQˆ¥ò²ŽK ž¤º¢:\'Æ!ÄŔV²òg˜Üb¯<y×ÎDÉ>\â|¬´
+ÝÞn<Çìü<šÒ r‘(Âr/æác×½yMõŠÖǁMþß÷»\ÝqN׌è ñpš×Š¯«OFGøh­ó-Xðhé.£^ã\l©MͲ_rê¬_ðy¾ÞÿCØßÑ5­¼Ãõ~0Xâ%õ%.5 D6ç …!!)µ[Ð9¡Õþ¶ -\8+¿mpj/Ò.cà’F|ƒ„å¯Î¤ØÜ3=išW“’zrƒÀi“¬ê!f܌¡ƒªQNÁ)x"/x¦U`'B%»êX¾Qû†hž½ÏNi\ZL7Ë(ªäVwM¤NۑiTwýrBòSæ<7MŠ–²Œ@±©w$wÚXvr©@´9£Â-Rq äzrý¦%ŽÒáßðgëi.þh¿8ƒ8cm_g^¿á¹‚Z6{›k¾Úšaçا(óÚH汐4…K{Õ|òSv¶:å=Õ=³’oê
+~ÔÄ@ú2×K Ó¿ð‡¥4Ýíê–Dèq->3jEÃ'à|"þa'↝¥‘Àr©–‚•~v|Ž ûo5B5Áâ»ÚŸGd6Ëgy6òáÇr¡,'ù#šÝM;KQ@¬#Œ×–¾ Ynú+WT »˜WC•÷h0F-¬©ëØL@agôV7ù‚zE7û}‰Ðw|Â!Ÿ}0"”3žÂû É,ˆÏã$N@i” Œøx°z-‘›^ Œwébvä*Ø Œ©X6õ¢}4OVÇ
+L€¿´'%x­”ÈSl…NÚ7¾øŸØ‚¢µb
+필v›;_
+Í‹ú$ 6¼Ÿjü#qŠ¹¥’ö°?>ÇÆBæÈPÏm˯;W ^T»°9pNk{cGúAøPU*>xi¢N`š„ŽR–BžÝŸµß9ú<l̪šN<Óu%¡Û°n&„Í/ßQ(À|lfúµ»"°óäópªM[öäBï4ÐÛàŸ@ WƒA'­Öx^ªÊžözUÂf-Ä©Å76A,ׂ$Ͳû•<-7i"½ÈPiÌjúCœ5ƒ±¤²‘æé
+DÂ$Ù”—ßh*ò¤4$­atLØæf%uÞ!Í7DÐw*­¢—Se6VU&«¬6+K3ÃxÛT6áÐ ò‡¥ §Ép(¤Ä“ËÈÔn–å‰,굚¿‰/¶&ÈðGF‡NE· ß¿5ÖF“åUOñ"RÑî¡@ᘷ*f«¬mb9çGB2%Y˜ù©*k_Ó$3zkÓ¿H á@ÒK©ƒ©_8büe´ÈªìרEø%›ñ(”‹y„œ^•ŸÏ--‚Ý@¸vÑ5DÇ^bƒ13t÷?@c„Yp{åD+«Eu¸%fúÌÕK’kR¹YUÙÿÖê•qÔçÙF^±Ëݓ+G½ä‹JC}:{,vJóÌÐLò¯["?ܨΝ‡_Ӎ0À­‘ùG~¾R£kH#‹Œˆ˜óŠ‘A{fæ¾ôÇùõn
+®’°C‹Šv÷üKK7Cp•A¢N?&qeÕ5Æã‚%OFTPÀø˜Ú×ÍÖصÌn
+é¯ :u‚.ãâѪÃ*èAeюxô½|Üpì¦
+stream
+­òH@V;~ N6×í&d€4$ öAÆe„Ÿ™„éó‹"â’²®Ö]`2–v>SDL¼Rpï¤ÊImÛfê5ƒ~­…¥ž»7ە(ÿòÛIªø¡Î’½ú.5þÿ é¢„ó§Y÷…Ä0ýpJ_JàT)?hZâÙTYáõµ¸ë0]ÆÚvSÜAü
+Á³ã7•jL³j[Ž×T›@«Þöt;ÚÊùD
+)ÁåËù£´Bð•Ôìú/.09Çd—ß­­nxtc«¿Üb6†uÎÌP,¡»¶X†môÛgtYs8ê›]aâcl©‹1oFóÙ¨z.f‡Ù㏶ØómYÎú~ãÑ)<;³j¶™n$šR†‡éƒ‚EÜ>OÕ;ÿ®ø9M]17ãÌ®dEƒ>Ç„Ɩ+TÛôï¼Á¦u s‰/¯X¢›°Ì±»"ì!¯—¡oAEê·CәdU`ûC™˜[]@Ù®}Ü×¹<TôɃ¡räIÍ^âTØçEñÇuá9}E •ÕÒ¥¨P éæ Ø(\‚§Á¶ì­å^‘sõÝeåHv/æ†FOc{Țg8Ç)
+B¾#»ùpŠ¡~‰þ€È4Q™I¢/H…’ D®À¾Q ?ÎVèbžœ;LU)c??cG6o
+xwKñ½uB“çy8ÉvFIq=xVdC¨¡ì°»ƒQ‹¹i.@ö*–ÿ'´&p/Ë! x«àÌUï‹ÈÑÜiyáÂASÈÑÜŽõD炜FøFÇ©ò"ÚPòÈ·Î@W)ξg’ò’9M[YS;Oû¯< ™5(8ªÒñmû¤³ŒãE$úÜUáeÜ͜¦6sùÎû䘣\¸@ľ+ÎP!ßAóË?äèùÏPÀ«‘0ë#ª½tLÁÁ£Ys7h!L’}Ò!D x‘ ¦ iە5Åôü;ÅXšx„gق[ÔÄ|ÖÉԞ¤1+­é2¡Æß¿K‘cæFZ¡aª6sÞbi›ˆòÇwý‘ý•%Œ´fçãX•c!ý#dµRRÏ.’¹á¬¿sö‘קÇ>“º:Å_‡…Y |^çù°¯‰%¿Zè7ƒú” '`ƒ"ë¢2bþÀÙ͂fzÀbƒZcUý±î5g¾ö !C%¨ƒS µ¿ÚÊc•3_«y6]Ùï¤r)•*Î3¦v=^´:ÕXq±ø¶éš™û×>—UÒÑûjãÎ+¦]‡„æÖ:öŽêÅË0Ò]`-‹—VK)äÍí ȑCó¡ õ–Sè{&õ#‡ŠÊøz§scÓé3ƒß›ZÑ ®°Ë‚PYÖj?ëÝ"Y4I•#{> È'(SÌK”X·A™§ë'?U2kåoÁÐè)Ö›Ó ¢oû«O\3RÉò‰83Kc¿ï¼8îø”ã—_®Y´Ì†Õ°þÍ[B—‹7JÕâG'ßÓï®ä!9ނÐúfVkðÖjï˜ÓÙ¹ap¼A'Ë2´YX[ÕF³„ýó©³ey–ª³À§Wɓò
+A’ºœö>%@ÏÀ2º› Œ6œ¨y4á4‚¤_Pè-Ðø1Á ®`=äûÌþ(¦CèQÿ–æË¡ù´ÓÚ¼ÆÂgéëöÙNSdƒêŠé9¢Í¢iš=…ÁùwŸðƒ¸n~¯Ø÷8+'B>þ̋¡mi»
+$±z.auè£ɽÓ¢ÇޟKù+¯0ª(‡ÍڗQÊQÏ¡oÅ«™Ö§kÊk´ûå.„qêA2.
+[ gÜßOvæ`-Pè@Ù5!;;Q;€5·©rªqÖԞ׽w,J-ãý_؎*G­«6¨Ì!ဗ…pþo-<,ÍÛfhÀF¢Öq ¾îâ%¹·Æ—Tß¾y%1Ö¹ÙxF^T:ñÄ)œ' $dÄÛr|ÒrÿËtõ253hØ\Ó'‹(ðvò‹Ôôb&‘’Ù+ÏÄ`ÐùZqÄãk`f¬qdLU‚}üzNÂþA¸<BŒH©Syìn—v¨‚mK›µ³‚~ÜÖ_Ç-ÀmDþ¼Îd噥¨z+§1³ó
+¦úàÒ^b®pÊp2¬±.-v†à™Uzhºñ ž§÷ ˆTV>“+};Z§MÀ‡nF õ}ÑX8çñ<¥µ֐½Dóê•Mü^4‹5¹”d†·‰Œ
+„?Èx¾‰þxXT$¤z$”5*EyYAWHá7 G”lš
+Ê8ôâX‡é÷{¨‡5®Jå(\öº‰Ýa°Uo'‚-ÃæýUŽ„9 :Ûq52ø¢L
+‰³ì¿
+stream
+×ͱ±ÄÔ/sòÍ쪘ӻ1ˆ@ÍÀg¸_XÞ6µ1÷)AÈ켒šoýlš§ˆÌú8Ú|º7J#¢e’‚îj<¦ÂÈy˜ÊûÇb•”K˜Ë@ê Bò†{ܦó
+˜|Ëì¦2á¢fp¤
+#Uáx
+\Û
+=xêi¼¯y—ŸÈ¥ŽÂN—Å»8¶fêpÊÄáƒD×ÃTٖÀ \›ùF32¥Úõ%yƒ«þ¦¡ÁÚ)‹´ Ûb †ÒÉÍä*äæ!Ù"ÑÔq[T‡ZOd»S"‚pÆÇU÷3\÷yyg’¸7ÓÄ$«P0Óü£¾ûJYí »Z!Xÿ;4åɞÎ+§Ú›Ô5¾0Ÿq(+O2 ¯Oÿ¥Kãxqf@¨¦jžFÄB"ìó™à…)÷¡!?ΧJÆTÒßÑ$°Ûñ8ò¤FՏ¤Ÿªðû3¹œ•gÄn°¥ðaë; ³/DMßõVˆ<ï4&~}æ ÒmJ+uђù‹CçÍú0ÌMd†%Ù%ûä÷Ø´p³_ËÓÐTfñµ PéõY
+ó¯KŒÎ0õ”õŸçk´³B|À)­Ù—¡aC=h£$ДáÍý'’%µ‹ìª*¾m{Ÿ°‡„úמùœ%¾e~eDÛqÄ.—Ér\êܳµQŒ¹ˆÑWGžoýâãNæ;ø—É2ÿ¦û‘7´^kþf5%Ó$ˆë)éh¼aúG'·¹ø>•í§³nij]ÒÞÞâbfòCê*äprÎ
+þŠOt¶¹øžl³M ‹ÛEùæ`MÄ÷Ÿ¬ËÖԃ½»ï)UwáTßâ¯ÂåQ·‰f+YfÕ¯ÑÅÏB–13‰ˆX½¿b‚Óš‘’gkJ]h` Õá§- E¤n×°;ÁSªc–
+ÚH`Û™®’9»c™˜k=“_yuðQbWÙæÈ>!«ET?³3ïªÑºÐÆÑU&3Æ«
+À$ˀ#3$è,Õüo>ù£·Õ"ª¿TALãK÷½O=ZTT<©öRÏO¹þۙ³7Ƽ¢”&r6pÞo9ŸËŠ<vŽµÖ˜³$fØâ¿ŽÝûUE…O³ß«8Ç®¶V—|ÛM|Õºýa[ěÜþ‰ý$h ŽÁ€ýù1>üŠ¯¦æ™ –‰Vàø…eÆ¥h0ñó;'wîÖ(“F“Ü¡!Ï'¯Ý¦g_ ³RMui«¯~§À˜RD£v«KÞ®bÙ?¢|\q²G‹¹¶-Ý*"Ð
+.¥ñÿ]L
+€µOŽ¸Ùç&éTÞ¼xmSِé_ù(¸Lš™•Gsú&‡¹$|ã?K¼ñN>áЀœ$tº ðÍ|¯·`2Hµ5TŒ”7î
+ƒß{Â4*»sGem“ÖaóÒűCÜ@F;ÓtÀÛ;¼åxæLÅ\ÿõ¸æFp·D˜ä€Ž!ni×t
+]U†…zyşî
+`øKcA¨Xw%ÁUÛ,xe–d~‘ŒÑ’ôÕr¯Ú¨x&žd*Sëøx“ÿ²Ú ùÕ½²ðqâ?ézô­ÄnƒÄ•µafl©ÒÆà?±kž‰A6HÛÞG ôêJƂT©ž)ÌÌÿ¹»¾6é^k٘Õ˜K¢\{ƒ·®|è4e=œMKp·`P°u番ìlœé&òª!“¸?§9¡ŸàTš›qF ºaŽ›éQä
+Ф™²ÞÃEÜ2àÞÙ²ê1ä³;}(zÚP„ËŸu<~çøëo[rw¢PiÁ˜©ÔièÝð¥•Cõ&»ˆ#FP‰{ˆb}ë
+re
+­ áe>Wíî'¾É$ª\€–v‘¾9ɘAâên{()±3aÁ*„D*¡™1 fÚ#‚îûú¬”4…ÖÛqW²~ÖxºæV*хGÛȟ$c%ÃÐ/j¬Cã÷ÿ›'NÁ.‚\̔ Ð!‹û—eײ’r´¥v®òÒۜÑȐ/÷XÏ{Ãôý8Ó
+RÙze-ëÅKÂTHN\â9Snȸ:â¯e¬ÊÖ½ûªÖLîëq¬ã.V-€4ë·Ät·%ž?g$,çX°îÂ`jµ>²85™;ìÙ»D¶é§žvI F½¼¹!„_µ­œÆW¾€e–îw%SÛúöÊØ¡×|´§•Ðüßê&M
+‘fšÃ ÆTL¿|« ~4&Ê·¡úyïR}
+¶Âm{S¨ðKQ샜zXysÁÄê€
+Ô²WGlRJ›9ŠŸééð×_ö òÄ9nQ¸S?Ofï/„ã£RQš„KZ›Õ} Pˆ+`M¨Õȅ—.E¬×:Žq}¥M·jB6øeÚ©°(s}G!g0 ±2H­®Ò2r(·¹»4©0õ”]-pvzúGf‰-6í …Z2T@øy
+¡1üÕ‘‹Q4ÝÙdî
+l1–gê
+Pþ…GÐ&K¢’fÌÚn(Âc"´fÙe@.Ó{¬É¾…ªI‡š¿>L˜DêîüÖ4È5 4¨§EKl¦u!>:ðÚ AR|Uç'2ÅpP•—Ѽ®Ÿ?¸yuq¤óO1uPŽ2CDõ|ÊXqÜVTWï¶öZôÎq÷†ÿÊQ iö€Yyo\@Ñ¶Á‘v,r¨³}?`hF󡎢¨Y®ÖörÊ>…ÕÑGrÔ´æ·àÀHæ ?"–¥.j¯t‡ißV€/°?nÈŒ§éæ沦_6º¿]"j!ÁԚŒy8%vò|Åx-"ƒÁBÅ(†<ÏÕØxØeÏ
+.ß4ùjsä”8yP°}§/ b"¨2ó9ǚˆ8öÎ«êVóšEì’ÃÈY<Z˜v0ÈýMÊÒ>,4œ&JW’5†‰âLJúí,Q6”¾>)-–ãUx^SÊPiLÐyƒM%02$•˜Ñ¿NœV0ÖÝG7ÌÁ
+Ø.¶0!ñüãFߺÆqQ¶ë9$´—½ßþGÊj!çߥ¨ãÉñ%M-¤ú¤Éö
+†mÉR'眔Ô†ž¢§ÆÂû4>¶eP%–^/¥«•m
+te}S°À(ȸýþ]À³!ÊéŸòXÎ2¨Mñ”Ì•‘£At#
+ÉÓjdò죌M5^ œóŒ68¼ÍœsBãÓóŸwL‡{3âj}®1×w”Šœ]q#SøÒ¨ÿ¶HÂÊfÊÀJŒJeôw8dÊ8—°҂ïçDÃ
+œ¸áAƒ|
+— þ]Ŏäøpn “R ^«­z £@øóîB(u¾X¶@Q­2ˆu›Î^
+×S exÇûnµì2¢~òÅB?ÖêX–MÕë0
+OKi ¢=Ôù2«·†iºw/X*¾G+§™³’ÉKa}™ÜE—37äÇ¤©UÕ ë7­èÓè eD
+pgÆI†%êï²i§œ”,§Á¼7p¯¸!M’«ÖO©' YÓ#»f”…¬‘'0  ½Gœ"¬Õ¿u•ç“U¨¦~¢‹ƒæHá4¨0"NÓYVMø4>ҕǞSˆ•Ÿ2ü68 tÆóã-[ål,lfHï¤Ù’?P‹F×z.$ßÿ¥¤’@Äã;?8ÃMˆ*ÜñyÎ抹gâ±Q·)URCbOZƒ-¶îjP!ò܋)äD÷f]^`•i•¼} :ãXa–FT Òæ½Q¤¼“8.ù °¥áˆÕ÷[«–ù ëÊãTŸæDU©ô{æ'‘#¶âµ 6‰åyø†^;¼TU±·g“!‘UZy 1|/Hnª=­¨?x"¼k²Õ¹,ÖÁÖ_ !á\,+žÓÑspÒ‘¥ŸwÆô&‹£ÕÕ94µ°ÔÎe]^‰À6h¢üsÛ܆1É®£T>»]æ ª>»!¿ÛӂZ$¥rŠøÙYU{OµŽæp¯Wt”Üßø²ÊRÓËQÊ =Â÷òGg£{ã¬ÀÖÑ*Pš‘ÌX›ÕȌץ{‹Án 9óׯëu„à`àø¹µû/@;êýpTˆ±-Nè¡+¨"´z¤5íaŸãPÛÂ0÷µÉ(ðdm.g咑!š€®Z)Ùk¹?"#¼),¥‚Ð´ohæ#ÐÚzo°ª}ÖY†â¾vä¢ãåÝÙQt©Ç–¦ÒçÇÈÛ&¯•‹Ëœ»b•n™b¡bÊoâJühëMbTèhÐʚ°QÎf¼!Ýf)w‘kkjí­B[Ü÷ÙüdóÙRۀ†ÐÕ·˜~>2Š”Ú‰/*Zôª"€`Õìð6Ó·BêPM#¹ïP]W&0ÀÿDì³D.gˆ4¸WZ¬ÊœÛ¢Ý_ؼé×Ò‹9ï§e¿àSŽª*f€&â+óÎVÛs¤ë=F>}EJ"‰h½}5×cûÁ|¦’ƒ’g©;èGÒ7üœJB8O HþCSöÕM“iu³a\’ä$ŒJÚ/àó.— ön;W-nçìîç{i‚ྒsÄ°¢V]ÆÏ!ΈiÜÈ·Y@¤ý<*­>}n™!jÆCcÒ_œØ ÿÕR8•çÂr„™É¢ƒ‚Ð÷[µXâ€`,\bÍèlc&]Á ´9B‰ 󜝰ç®p½À”ÃQþÝPĽ±ª
+񳭬
+ : Íî20úvÃÏ&癥„ž7²­MôÃc-ÁJ¯È†)åX#²>§»º&v,¢Ì¿5¶)†ïTpí½šqcӂ>ã^‰l]Ö±B›ÂÙI˼,/Þxú]µ©ï8Yûä¦á>­°°;r®ªòºwU‡5ВM¨>´MNx„–cÕÈG˜/)É)ÏØ­&ƍ¦$ñ|©2ñ0Ój QÛOC&Åé¾?aC=NøÔÇU†ö»Œj©$!¸ü¿ÕŸ³ .ÿ½ktLWð³áèŽÎÓÚÍ7`Ÿ-!¡™ÊÅúD@¾ÿŸžaKŒÖ}}Ü, KcØÓ"*êÞªÕ_
+?÷FõU`ÀlSOK1Ú\“KÚtÑé+—³:kkÕcŠ6jðç>øA›óf!æ}Ÿ˜‡’Ý8Â{«¯>dýËá¦Þ0›"ªbY›…À0e …f龅‹ÂЭó3Er·)±ÔßA yÖ᦯ˆÖÜp.Jä
+stream
+‘~r4xø­¤#\K¥•óŠ!uQJ’aîíUßIHN<B™Ÿv„k¤HBâöj!bø„Y4B¨ù_6X<\ВÖÌæñ‹¹@ÑǺýæ)G\4çÂj;û%¸Ì¡ò×ãPÕEòîo‰»ïð«`—çM*ü|»©vÂR´Š5Ê6E×gžtV‚Lq9o'%’‹ ]:æG–¯¸ŒŸbÁkÒÓtFŸ"ÝØ·8ªDåÊ´`œ Ÿ\­+óG8*…u…ô€g²û%‰õ¾JKߥñº½K…«éÑãubo
+|Øü«Í•g¾î²ëWêDóÐJ}m¶OƏ“2 ÎcG™ùU¼~µh'ý{Á§Å©<p߈¿×Ÿaœ›´ýjÞC0Ng•ákøXÀWD1êœã7ÖQÐüêYtš1ÈW>×ã•DùͲ˙o¯+ˆlAÜÍXIîÎ;vø¦»Ž·Á÷Ãs"ûÈ4Íøê³Oæª9Gþ 8Ó[kÓ¹ŠuzXÿ=ÉÙâ£V¥{Ÿ Ä-¾³³‘WyöÜ UnÍ,
+Ò_
+¥M ð,¯¬(¤QÃWÐBx•I!·ÒÚi$ŸìæG1èG¿ÈÈÂeì·Å©²çÐ}8ØQÛÐã4‘û
+q’úà­ûëVtºØaŸ‰ìr×8‹·M®[l%w#ɉ&÷ó{²z¸¼úüF»LmØOô=Ô/‘!¢…Q‰‰FÊ׏Š¿lØåÇS[ÈêŠÛ>èۃàúU?9%z©j4ߟ2¢ìÓee‰J±çJ+Ú@ùYE'*e"½©ÒÛ×êqfç‚ùÐs‚•mïŽð˜ë¯Îé"AMCâ¦'°Ý½«…jRŒª±¾o#žœ ò”Îd¥âmÞMªy&»³»¤ÙQŽ2ˆ<¶arސ܋
+i‡+íƒ3ºeÇÔ_–ã³xwÕ]ìA´ò Tù(¼÷íÕ¬vö¶ç´àW%kÐ
+cÑ+h 1!”Ñ{Èé7˜Ÿ7e9ÔG¾wÉ@A
+üÑ·[%@á ~EC¦]ù:á¨Z©QÜX¨
+Y÷ ùÉnLj°„„ªÙÜíýBrÚ ùÕ½²ðsE‚¢ÀïÈ"¯ã,Coà~À~µò9Ê8Å‹ó5ÆCYÞêb<Ô˔$VPì:аÀ}ß %¹£GN_¤ØLqTC¡ðÓЉ²#´¿û®vî¹Ýó
+Íl@6Jàþ^#р!<ÖÅí8W³3…ÄÉÌ¢0þÒ`”ô©ç¼—…Ož:pó#ã„úO) xÓÓa#º¢û…Fyþ=ƒø”HpꐺØ¡}5”zq”‘é51mØ6O@Ð{"ÆÊ¡—KjݶŒâ ‰w‰3>²ÀÜM¾‹Ú0NÈҘëvÁ’MˆT0ä×ÀTJ ý…™Ñjí.àVkÄLàe–‚‹ŸVóÔZµD13rµ ¤ÙŒ%,}„U°¯`(Ò¿ Êì sßVÕ®þC?OŠ¤ôxêîyCxlÑr.¾Ü{Ò´³!«(Fo¡pŠHžcü„Ä‘
+ñ’êØ0֖;õZ˜5›g+Þ\ªÆÒÌÙ÷9Z¯+×NHårÕúU®TTÿ²G¢ w-bƒÚ:ڇ›†} ¹‰Îä;þà.ÎÕ˦^|ºm5{d( 5Ž1uQSÅ¿Ô¦‰åÕªKæ‚?h5}6—aÊ8uA(*)@L%h|0‚`…Ilagz¼‡¡3ۈ%
+lRW³Í(éÈFaXm+?½(Ù2؛‘-~eMΤçëðæ•›‡éó‚Õ­O.
+°º
+,™Ù/¯#£´{ ¯­­»:G¢„Ë2%cÅyCë\eX óæ4¨_]Zû ã¢]òŠC¼v©£F‹„A„¯‰Y;qkPd­KéîYKI·ÒŽ^®ñ!¡. ô—,myB×Js©ð.U_Kf´”°‘ÕÔ4„}“í¶<(}s
+áÓº‚KDw
+ˆì^`Ñ™dÉ:Ù­É5;oì«_'ìK|‡Íì¸A&4§ñ V5é®­ò<ëÄ`Y
+èÚÊ@Î}q°Sb9b[y-ºÈœ·ï¯ˆž¤;$’Fq`
+zºôèBB¾1nçՊ¥šnnF‘bxԏ[sΎ’'îÙA®eöÀΊ¥^{š û“èŒW"–Ù5®44qñ„»FßÙV×èí> nn“óÕmD†KÏFF&åè  kݯ֧1›bØ]]iäO2$¯ˆ=îӉ²vX
+K†°…l_ÏmßX¯Ðn^†–1‹J<8/pýÈ>Û¦†„Š"ï]БÑ:éüPoŸJj£ñ|êW¯ÊN(ҍæWUÛXc8°ë%K ’Œ©’ßÂ<ßd<q&­U*¡¡®"9lqúeëØ\5Rr'‡Wi¤os˸ÙF˱£=dŽUGLTû5jóÝ ¨‚£b7A–±¡× êã÷ºò?zaœæ@riGOˆÑ}·Q¬ßT:MžÎìêp¶ÚÂG‰‚5#%ð'<·LÃ]‹/ÚÆè3
+ZÄ0ؽFjY_®8ùÄÈ+ÜzSNp~A‹‚˜uˆ]$¸2Q=^¤åˆB¥£^¸UdøX3÷m£W£E=NH98êV/Œy»§çÉL¯žÓS{>¾ŽŒŠi$ƒ«ù¯²•
+Ÿ¢y®à¾bÞªoɓ„ÒÊÄâ•áª?Rö•“9¹LëuoÛ7Ç ØeZk犗”HzgC0
+ÅùRôH·Ï›?];¯ä¥û—F¸5µXc†€ÎfÉv«é vP„ß> ÄÖÁÀ ·aߥ×ZÅîyÞAðg•$t‘<j¬­}}Ãáó³Ã*wž‡€UÛ¼ôÝwæÐNöú¦‘ÈLæ÷ê[Ÿâ.î-!'åM²îZÌÓ»ÔáFzrþ¬ŸTD·+ðíÔɐIæÐ%ËÊQ·b¡"þ3î`¨‚‘¹Å+ SòWIþ 7$¡Ég†ò%/ËÞARòWœŠó,µ°¶Õ-ºïvqºÓ.ÔVeM¤‹LúÄ÷¨ºTz„ÞÈ'3Ÿò4`øÙˍáÝ_õ•kqΣµ£ø`Ü֔ÅØ0ÛSÑÄ|¢bÔ曼¿)Yäņ›¶i’EÆñ‚T2ëaõ/Bœòá«
+ •È F’£šWꚛhŸ©r…=Ýr‡vù¦åۈœ{0Ðéu‡—Y@ŒZ‹lW«îbÈ$ônhUIԎ}Ÿ;5IôÛb›NÈn —ïÌø™öÇÑHHöäF…ãºäBw¥\|±ÃÝäZ:±|̹A0"=àO¼ÉX†Fƒ›'z;§›q
+2ÖD5ï?ǺÇüEÙ¤,£r.ÑR·œ€NeWD¢~ÿ}oÑ0ÕwSî1Gm¹f?*¢ø3(“u
+´)t’Í蕈wa…t1Ž£ôîˆæcJŠaêßì{Ke¶±«é‘* Öû&2š+5ʚΈµÞª­*Ÿ®÷xy z â`ø‡òít€úá3òryÆ҈#¶¥y¥õxÂÄ/WÃLC)E*І¿Ï#ŽÞ<ˆ]äR4Å6fã[,®Î·
+‹“£u™K1Ù¾ÿHÀ7±o‡Ôëш`óȑý_Nǚ1¯×?”&p)“pÿ¼­V{‰×¬ÈüâFfFȺ*9Ï꒱a²Óþ“ðù½÷‹1-%ÎÐÙ&FTH¯÷¸,qâ#?{|þz;;|„ÁEŠ%B6mã
+”9ÉP0ûn¤<Ž6ÄÆy¨À áÄz›ááÌÊgMxÖlނáÓYpø;úm5~ŸG‰ö‡l:œ¡C•¡z¶¹)ÑX­ªÙRØÁØêA
+Nqwïöj¬¯ÝÇ %Ý k€"æû¦œ7*—7hkêˆ0r&н»äZb@‰æƒa߶S\ô©ÜûüȍšSýh?Ò­&|~¦;•0Æ\ûóI–”KÇ xÓ¸bÎöâwø¥ÝX$v à)Ð:oaÅ'ÈU਎&­õ˜…Tåª ®Û#Œ^ÃÌ/Ïqš©Š° OzS·p ÐÞ ÙV¥8žª žù"¿ž=Ù#
+;šß_6H¢Ùè”vhŒ³š%Îé:Ïò™Xôé‡1zÿr¤¹§Kg•µJ ³;§"ÖÂ×y„œ¤-X?`a¨™•”p$¯³±ˆ
+4-Gµ ÖghS1Ê"ÿN-þ`’ïMƒºéw^Këˆ “ppÆ>q–ŠMàE*•P¢èˆÅ“@ˆ›Á`dʀ‹!L²nŒIÕÀ£¼ˆ=>öǒ;{»÷l»Û‰•X‹“‘§³kµw­¬^ôl½CÙ2<ßü½ö7€Â©U"|&[¤ÙÖ¯*¸Hãs?ÅÑLmoК?ð)]O¯T“šŠûî$ÓÂí_؈™å賉k_“d’nÓ<[Nhl¥ WeícyØnåR„Çʦå¾æ"òbýŒà>=b™SWðJÝÉqí I¦Þݏ/Œê-b9‚‹hÒ }9Èw??:\´‚‡Õ܏10:7n÷£
+1Ij¤“b%±àDv_æ·®A‡©ÁA«Y %Šv±†Óì‚?Yì&Wç4X­ü¦ÃkŠ¹ JJèë øm¤5$wLýÓLHòÏ?é0*‘x^ï˜9[#²s g=ÕõöüʏV‹3cP"ì!p3·£Ûïú­m³I…LÓØùŽl휮ôLºÛÞ;Dìøò6“;Ž^Ö7ÅܽôÇÇâRCÝ;0eÁ„<;ä¤pA§ŽS¥ŽS‹0Ÿz5:¹MY€å]4»Š†äG`{Xdºü7q'è<ÖVKîgÂN²VØÐÃÅÞ§žÀ> M%L²©Z+=7ÏÄ2žÇ·Ü¶RšT·­šª£Ó³iáƒíïNQ³Rà {÷+åÒ{ð%5wóä9UўºU—$`œ<r*èîïRN’]³>#ÏùI t{‚wn×Á4ãšÐ†ZƒºRuç”g‹kq\#S€4W"ï©ë/ô7á­éã;é¿émOs 7 ”.«@<'$Q„š›#ÿ#1$×èL½x.|Â{„Ù{' ° Áç­ÑÙÝC’0ËuÂh›/࣫‘Ä×1‹'3ñ‰2ƒ9Öø¥nè:uD}ayM ›Ùo!Ô];£é¸Â¾e¨ª¢i1‰•|Å#/s»”Ø+
+Ž±ÒhºS
+Ô±’¡”®ö6æDS½Üä»»‘[©ûÍü!Kô4¤–¹Ð[À!‚¼Î^™ܯÔÏßòtï4y™ íköµdpÒ,šÄxTÒn肟±C õYÙf—»*Yì,䆟7¤ÌÀG_aƒ¢«ÒZ®GÌn·Ò7+“I~Ûüº“§ÜN…³ØÞD¯Gׇ„€«݈ë¹,VÂXpÚWi ÙÇm[•œ=À‚šðNìÐA}†$ûµð‚Ývù¤õ‰
+™ÝCuö¶×áç5œÇÒÀã~ÓËè-ÜéøÎýŒØ)pÚJÅRüQæ4¿‹R÷bŠß²(Ý!›s¸ÈÐÇ6k
+8Š–îÕ¨¾ÛYö8´×xÄ6ø#¬´@Ã[ÀŠÔôðv²5¬
+ìèL“õ¡zvÃdØ؞À8<Üyˆ‹’]›âñ4H‹‰ì)ÚV²é«Çwݍö[tƒf±å[qD<g P•ôç9½Ç•sÑ6prJƕÌP M/oS5Ðȃï$êžyÒY
+'aÙR€sja…?ó^øy*/câX-6úTëBÀ-ÜÙiú'µÿ•Ëè¾±³1Ah¤/Ù —›Ð  G‡ý-½³QܱõCýZZ'þ¬uxnWÝsºG:‘³{!U+JJs¨ê¿Â?”e„äç|Üúß<I˜é\9ï+ñwä‹ñrHH%qw´
+–r¢€íèu§É›-_*8MD{ü¥ DNÔFp/9$lxÀÇ·{o%ΞýÒ#çϾ=øB|Šâþh—âým¿ú8¥1½Q£8¡“V¬281ËÒŸš¤}**åúOg¼(•‘(ÿØ~zW‚½N6' 3o_q”©z%]÷×R5Õäš=ê—/§”àQ€~Þ?æIû”»oÒT‰¬O¨Š”"¤:ê±Y»õ²Æ*Ć~­73{„ÓþÄrè°d©YX
+†4cŒOÊÀòGtƒôÕab@\ÄÌó4\ñUWŽ/¶
+[å¯iÎ=ÕÚ^aé£NÉ B‘þí –®4ïxô¨åO͔Ýþ+ì£,zÈTbôà3¢…W{Ò É±ãcjÍfD‚­2
+Äs(ø©È©¼7êøÇ¤ó{ðZYéh®w/ uëLµSeΎY4{@†åÊO·lZûfù&=
+
/trunk/FilterFoundry.make
0,0 → 1,181
# This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
# Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
## MPW Makefile
 
EXEC = FilterFoundry
 
EXEC_UNI = :dist:{EXEC}
 
# Macintosh type/creator code for plugin file
PLUGINTYPE = 8BFM
PLUGINCREATOR = 8BIM
FILETYPE = -t ¶'{PLUGINTYPE}¶' -c ¶'{PLUGINCREATOR}¶'
 
# variables controlling fat build
PLUGIN68K = #68k.rsrc # uncomment this VALUE (after =) to build 68K (fat)
BUILD68K = #-d BUILD68K # uncomment this VALUE (after =) to build 68K (fat)
 
# these two variables reflect my personal directory layout
# and are not used by distribution
COMMONA = ::common:adobeplugin:
COMMONT = ::common:tt:
 
# where the Photoshop API header files are located
PSAPI = ::PhotoshopAPI:
PSHEADERS = {PSAPI}Photoshop:,{PSAPI}Pica_sp:,{PSAPI}Resources:
REZHEADERS = -i {PSAPI}Photoshop: -i {PSAPI}Resources:
 
# list object files in project
# each kind of object file (Classic, Carbon, 68K) has its own list,
# of the same series of input files, but with the respective extension (.cl.x, .ca.x, .o) to differentiate
# "implicit" rules are used to build these object files from corresponding .c source; see below
 
OBJ_CLASSIC = main.cl.x ui_mac.cl.x ui.cl.x ui_build.cl.x ¶
preview.cl.x read.cl.x save.cl.x make_mac.cl.x load_mac.cl.x make.cl.x scripting.cl.x ¶
parser.cl.x lexer.cl.x node.cl.x symtab.cl.x funcs.cl.x process.cl.x trigtab.cl.x ¶
{COMMONT}dbg_mac.cl.x {COMMONT}str.cl.x {COMMONT}ui_compat_mac.cl.x ¶
{COMMONT}choosefile_nav.cl.x {COMMONT}sprintf_tiny.cl.x ¶
::MoreFiles:Sources:MoreFilesExtras.cl.x ¶
::MoreFiles:Sources:MoreFiles.cl.x ¶
::MoreFiles:Sources:MoreDesktopMgr.cl.x ¶
::MoreFiles:Sources:FileCopy.cl.x
 
OBJ_CARBON = main.ca.x ui_mac.ca.x ui.ca.x ui_build.ca.x ¶
preview.ca.x read.ca.x save.ca.x make_mac.ca.x load_mac.ca.x make.ca.x scripting.ca.x ¶
parser.ca.x lexer.ca.x node.ca.x symtab.ca.x funcs.ca.x process.ca.x trigtab.ca.x ¶
{COMMONT}dbg_mac.ca.x {COMMONT}str.ca.x {COMMONT}ui_compat_mac.ca.x ¶
{COMMONT}choosefile_nav.ca.x {COMMONT}sprintf_tiny.ca.x ¶
::MoreFiles:Sources:MoreFilesExtras.ca.x ¶
::MoreFiles:Sources:MoreFiles.ca.x ¶
::MoreFiles:Sources:MoreDesktopMgr.ca.x ¶
::MoreFiles:Sources:FileCopy.ca.x
 
OBJ_68K = main.68k.o #{COMMONA}dbg_mac.o {COMMONT}str.o {COMMONT}sprintf_tiny.o
REZFILES = ui_mac.r scripting.r
 
# this is a hack to work around a missing UNIX include
'sys/cdefs.h' Ä FilterFoundry.make
echo '#define __IDSTRING(a,b)' > 'sys/cdefs.h'
echo '#define __P(protos) protos /* full-blown ANSI C */' >> 'sys/cdefs.h'
 
parser.c Ä parser.y
echo "parser.c is out of date; in UNIX, 'make parser.c' before retrying MPW build"
lexer.c Ä lexer.l
echo "lexer.c is out of date; in UNIX, 'make lexer.c' before retrying MPW build"
 
parser.cl.x ÄÄ 'sys/cdefs.h'
parser.ca.x ÄÄ 'sys/cdefs.h'
 
funcs.cl.x ÄÄ parser.c
funcs.ca.x ÄÄ parser.c
lexer.cl.x ÄÄ parser.c
lexer.ca.x ÄÄ parser.c
node.cl.x ÄÄ parser.c
node.ca.x ÄÄ parser.c
preview.cl.x ÄÄ parser.c
preview.ca.x ÄÄ parser.c
ui.cl.x ÄÄ parser.c
ui.ca.x ÄÄ parser.c
 
# look for include files in these directories
ACCESSPATHS = -i :,{PSHEADERS},"{COMMONT}","{COMMONA}",::MoreFiles:CHeaders:,::MoreFiles:Sources:
 
# executable files to build (the Classic executable will be a fat binary containing both PPC and 68K code)
EXEC_CLASSIC = :debug:{EXEC}.classic
EXEC_CARBON = :debug:{EXEC}.carbon
 
# build "universal" plugin with both Classic and Carbon binaries in one file
{EXEC_UNI} ÄÄ {EXEC_CARBON} {EXEC_CLASSIC} universal.r pipl_common.r version.h
catenate {EXEC_CARBON} {EXEC_CLASSIC} > temp && duplicate -y -d temp {EXEC_UNI} # copy just data fork, without junk resources
ls -x b {EXEC_CARBON} {EXEC_CLASSIC} > temp
target temp
find ¥
find /[0-9]+/ && set CARBON_LENGTH `catenate {target}.¤`
find /[0-9]+/ && set CLASSIC_LENGTH `catenate {target}.¤`
close
Rez universal.r -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS} ¶
-d CARBON_LENGTH={CARBON_LENGTH} -d CLASSIC_LENGTH={CLASSIC_LENGTH}
 
{EXEC} Ä {EXEC_UNI}
files -x brtc {EXEC_UNI}
 
# libraries linked with project
LIBS_CLASSIC = ¶
"{SharedLibraries}InterfaceLib" ¶
"{SharedLibraries}StdCLib" ¶
"{SharedLibraries}MathLib" ¶
"{SharedLibraries}NavigationLib" ¶
"{SharedLibraries}AppearanceLib" ¶
"{SharedLibraries}WindowsLib" ¶
"{SharedLibraries}ControlsLib" ¶
"{PPCLibraries}StdCRuntime.o" ¶
"{PPCLibraries}PPCCRuntime.o" ¶
#"{PPCLibraries}PPCToolLibs.o" ¶
#"{PPCLibraries}"CarbonAccessors.o
 
LIBS_CARBON = ¶
"{SharedLibraries}CarbonLib" ¶
"{SharedLibraries}StdCLib" ¶
"{PPCLibraries}PPCCRuntime.o"
 
LIBS_68K = ¶
"{Libraries}MathLib.o" ¶
#"{CLibraries}Complex.o" ¶
"{CLibraries}StdCLib.o" ¶
"{Libraries}MacRuntime.o" ¶
#"{Libraries}IntEnv.o" ¶
#"{Libraries}ToolLibs.o" ¶
"{Libraries}Interface.o"
 
### little below should need to change ###
 
COPT = -tb on -opt speed -d MAC_ENV {ACCESSPATHS} -proto strict -w 2,35 ¶
-d YY_USE_PROTOS #-typecheck relaxed -w 2,17,29,35
PPCLINKOPTS = -t {PLUGINTYPE} -c {PLUGINCREATOR} -m main
REZOPTS = -a -s : -d SystemSevenOrLater=1
 
# implicit build rules for each variety of object file
.ca.x Ä .c # Carbon PowerPC object
mrc {depdir}{default}.c -o {targ} {copt} -d TARGET_CARBON
.cl.x Ä .c # Classic PowerPC object
mrc {depdir}{default}.c -o {targ} {copt}
.68k.o Ä .c # 68K object
sc {depdir}{default}.c -o {targ} -b {copt}
 
{EXEC_CLASSIC} ÄÄ {OBJ_CLASSIC}
PPCLink -o {Targ} {PPCLINKOPTS} {OBJ_CLASSIC} {LIBS_CLASSIC}
{EXEC_CARBON} ÄÄ {OBJ_CARBON}
PPCLink -o {Targ} {PPCLINKOPTS} -d {OBJ_CARBON} {LIBS_CARBON}
 
# put 68K code resource in intermediate file
68k.rsrc ÄÄ {OBJ_68K}
Link -o {TARG} -t 'rsrc' -c 'RSED' -sg {EXEC} -rt {PLUGINTYPE}=16000 -m MAIN {OBJ_68K} {LIBS_68K}
rezdet -l {targ}
 
{EXEC_CLASSIC} ÄÄ classic.r pipl_common.r version.h {PLUGIN68K}
Rez classic.r -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS} {BUILD68K}
{EXEC_CARBON} ÄÄ carbon.r pipl_common.r version.h
Rez carbon.r -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS}
 
{EXEC_CLASSIC} ÄÄ {REZFILES} ui.h version.h
Rez {REZFILES} -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS}
{EXEC_CARBON} ÄÄ {REZFILES} ui.h version.h
Rez {REZFILES} -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS}
{EXEC_UNI} ÄÄ {REZFILES} ui.h version.h
Rez {REZFILES} -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS}
/trunk/FilterFoundry.make-old
0,0 → 1,137
# This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
# Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
## MPW Makefile
 
EXEC = "FilterFoundry"
 
# Macintosh type/creator code for plugin file
PLUGINTYPE = 8BFM
PLUGINCREATOR = 8BIM
 
# variables controlling fat build
PLUGIN68K = #68k.rsrc # uncomment this VALUE (after =) to build 68K (fat)
BUILD68K = #-d BUILD68K # uncomment this VALUE (after =) to build 68K (fat)
 
# these two variables reflect my personal directory layout
# and are not used by distribution
COMMONA = ::common:adobeplugin:
COMMONT = ::common:tt:
 
# where the Photoshop API header files are located
PSAPI = ::PhotoshopAPI:
PSHEADERS = {PSAPI}Photoshop:,{PSAPI}Pica_sp:,{PSAPI}Resources:
REZHEADERS = -i {PSAPI}Photoshop: -i {PSAPI}Resources:
 
# list object files in project
# each kind of object file (Classic, Carbon, 68K) has its own list,
# of the same series of input files, but with the respective extension (.cl.x, .ca.x, .o) to differentiate
# "implicit" rules are used to build these object files from corresponding .c source; see below
OBJ_CLASSIC = main.cl.x ui_mac.cl.x ui.cl.x preview.cl.x read.cl.x save.cl.x ¶
parser.cl.x lexer.cl.x node.cl.x symtab.cl.x funcs.cl.x process.cl.x ¶
{COMMONA}dbg_mac.cl.x {COMMONT}str.cl.x {COMMONT}ui_compat_mac.cl.x ¶
{COMMONT}choosefile_nav.cl.x {COMMONT}sprintf_tiny.cl.x
OBJ_CARBON = main.ca.x ui_mac.ca.x ui.ca.x preview.ca.x read.ca.x save.ca.x ¶
parser.ca.x lexer.ca.x node.ca.x symtab.ca.x funcs.ca.x process.ca.x ¶
{COMMONA}dbg_mac.ca.x {COMMONT}str.ca.x {COMMONT}ui_compat_mac.ca.x ¶
{COMMONT}choosefile_nav.ca.x {COMMONT}sprintf_tiny.ca.x
OBJ_68K = main.68k.o #{COMMONA}dbg_mac.o {COMMONT}str.o {COMMONT}sprintf_tiny.o
REZFILES = ui_mac.r
 
parser.c ÄÄ parser.y
echo "parser.c is out of date; in UNIX, 'make parser.c' before retrying MPW build"
lexer.c ÄÄ lexer.l
echo "lexer.c is out of date; in UNIX, 'make lexer.c' before retrying MPW build"
 
# look for include files in these directories
ACCESSPATHS = -i :,{PSHEADERS},"{COMMONT}","{COMMONA}"
 
# executable files to build (the Classic executable will be a fat binary containing both PPC and 68K code)
EXEC_CLASSIC = :{EXEC}:Contents:MacOSClassic:{EXEC}
EXEC_CARBON = :{EXEC}:Contents:MacOS:{EXEC}
 
# ensure both Classic and Carbon get built
{EXEC} ÄÄ {EXEC_CARBON} {EXEC_CLASSIC}
echo -n "{PLUGINTYPE}{PLUGINCREATOR}" > :{EXEC}:Contents:PkgInfo
setfile -a B {EXEC}
files -x brtc {EXEC_CARBON} {EXEC_CLASSIC}
 
# libraries linked with project
LIBS_CLASSIC = ¶
"{SharedLibraries}InterfaceLib" ¶
"{SharedLibraries}StdCLib" ¶
"{SharedLibraries}MathLib" ¶
"{SharedLibraries}NavigationLib" ¶
"{SharedLibraries}AppearanceLib" ¶
"{SharedLibraries}WindowsLib" ¶
"{SharedLibraries}ControlsLib" ¶
"{PPCLibraries}StdCRuntime.o" ¶
"{PPCLibraries}PPCCRuntime.o" ¶
#"{PPCLibraries}PPCToolLibs.o" ¶
#"{PPCLibraries}"CarbonAccessors.o
 
LIBS_CARBON = ¶
"{SharedLibraries}CarbonLib" ¶
"{SharedLibraries}StdCLib" ¶
"{PPCLibraries}PPCCRuntime.o"
 
LIBS_68K = ¶
"{Libraries}MathLib.o" ¶
#"{CLibraries}Complex.o" ¶
"{CLibraries}StdCLib.o" ¶
"{Libraries}MacRuntime.o" ¶
#"{Libraries}IntEnv.o" ¶
#"{Libraries}ToolLibs.o" ¶
"{Libraries}Interface.o"
 
### little below should need to change ###
 
CARBONOPTS = -d TARGET_API_MAC_CARBON=1
 
COPT = -d MAC_ENV {ACCESSPATHS} -proto strict -w 2,35,29 ¶
-d YY_USE_PROTOS #-typecheck relaxed -w 2,17,29,35
PPCLINKOPTS = -t {PLUGINTYPE} -c {PLUGINCREATOR} -m main #-packdata off
REZOPTS = -a -s : -d SystemSevenOrLater=1
 
# implicit build rules for each variety of object file
.ca.x Ä .c # Carbon PowerPC object
mrc {depdir}{default}.c -o {targ} {copt} {CARBONOPTS}
.cl.x Ä .c # Classic PowerPC object
mrc {depdir}{default}.c -o {targ} {copt}
.68k.o Ä .c # 68K object
sc {depdir}{default}.c -o {targ} -b -opt all {copt}
 
{EXEC_CLASSIC} ÄÄ {OBJ_CLASSIC}
PPCLink -o {Targ} {PPCLINKOPTS} {OBJ_CLASSIC} {LIBS_CLASSIC}
{EXEC_CARBON} ÄÄ {OBJ_CARBON}
PPCLink -o {Targ} {PPCLINKOPTS} -d {OBJ_CARBON} {LIBS_CARBON}
 
# put 68K code resource in intermediate file
68k.rsrc ÄÄ {OBJ_68K}
Link -o {TARG} -t 'rsrc' -c 'RSED' -sg {EXEC} -rt {PLUGINTYPE}=16000 -m MAIN {OBJ_68K} {LIBS_68K}
rezdet -l {targ}
 
{EXEC_CLASSIC} ÄÄ classic.r pipl_common.r version.h {PLUGIN68K}
Rez -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS} classic.r {BUILD68K}
{EXEC_CARBON} ÄÄ carbon.r pipl_common.r version.h
Rez -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS} carbon.r
 
{EXEC_CLASSIC} ÄÄ {REZFILES} version.h
Rez -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS} {REZFILES}
{EXEC_CARBON} ÄÄ {REZFILES} version.h
Rez -o {Targ} {FILETYPE} {REZHEADERS} {REZOPTS} {REZFILES}
/trunk/Info.plist
/trunk/Makefile
0,0 → 1,141
# This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
# Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
# mingw32 Makefile
 
CC = i386-mingw32msvc-gcc
DLLWRAP = i386-mingw32msvc-dllwrap
WINDRES = i386-mingw32msvc-windres
#CC = mingw32-gcc
#DLLWRAP = mingw32-dllwrap
#WINDRES = mingw32-windres
 
# use GNU flex and bison
# these lines can be commented to use system lex and yacc
# although this may result in a larger overall executable
LEX = flex
YACC = bison -y
 
YFLAGS = -d
 
#PSAPI = "c:/program files/adobe/adobe photoshop 6.0 sdk/photoshopapi"
PSAPI = "../PhotoshopAPI"
CFLAGS += -O2 -DWIN_ENV \
-I$(PSAPI)/Pica_sp -I$(PSAPI)/Photoshop -I$(PSAPI)/General \
-I../common/adobeplugin -I../common/tt
 
OBJ = main.o ui_win.o ui.o ui_build.o ui_build_win.o preview.o read.o save.o \
parser.o lexer.o node.o symtab.o funcs.o trigtab.o process.o \
load_win.o make_win.o make.o scripting.o \
../common/tt/str.o ../common/tt/sprintf_tiny.o \
../common/tt/ui_compat_win.o ../common/tt/file_compat_win.o \
../common/tt/choosefile_win.o ../common/tt/compat_string.o \
../common/tt/compat_win.o \
../common/tt/dbg_win.o ../common/adobeplugin/dllmain.o \
res.o
 
EXEC = dist/FilterFoundry.8bf
DISTARCHIVE = dist/FilterFoundry-win.zip
SRCARCHIVE = dist/FilterFoundry-src.zip
 
all : $(EXEC)
 
funcs.o : ff.h funcs.h symtab.h ui.h PARM.h parser.c
lexer.o : node.h symtab.h parser.c
load_mac.o : ff.h funcs.h symtab.h ui.h PARM.h
load_win.o : ff.h funcs.h symtab.h ui.h PARM.h
main.o : ff.h funcs.h symtab.h ui.h PARM.h node.h parser.h scripting.h
make.o : ff.h funcs.h symtab.h ui.h PARM.h
make_mac.o : ff.h funcs.h symtab.h ui.h PARM.h
make_win.o : ff.h funcs.h symtab.h ui.h PARM.h
node.o : node.h parser.c funcs.h symtab.h ui.h PARM.h
parser.o : node.h parser.h
preview.o : ff.h funcs.h symtab.h ui.h PARM.h node.h parser.h parser.c
process.o : ff.h funcs.h symtab.h ui.h PARM.h node.h parser.h
read.o : ff.h funcs.h symtab.h ui.h PARM.h
save.o : ff.h funcs.h symtab.h ui.h PARM.h
scripting.o : ff.h funcs.h symtab.h ui.h PARM.h scripting.h
symtab.o : symtab.h
ui.o : ff.h funcs.h symtab.h ui.h PARM.h node.h parser.h parser.c
ui_build.o : ff.h funcs.h symtab.h ui.h PARM.h
ui_build_win.o : ff.h funcs.h symtab.h ui.h PARM.h version.h
ui_mac.o : ff.h funcs.h symtab.h ui.h PARM.h
ui_win.o : ff.h funcs.h symtab.h ui.h PARM.h version.h
 
parser.o : node.h parser.h
 
clean :
rm -f $(OBJ) $(EXEC) parser.c lexer.c $(DISTARCHIVE) $(SRCARCHIVE)
 
dist : $(DISTARCHIVE)
 
$(DISTARCHIVE) : $(EXEC) dist/README.txt dist/COPYING.txt dist/examples
zip -9 -r $@ $^
ls -l $@
 
src : $(SRCARCHIVE)
 
$(SRCARCHIVE) : \
dist/README.txt dist/COPYING.txt dist/examples BUILDING.txt \
Makefile FilterFoundry.make cw7/filterfoundry_cw7.mcp \
funcs.c gentab.c load_mac.c load_win.c main.c make.c make_mac.c make_win.c \
node.c preview.c process.c read.c save.c symtab.c trigtab.c \
ui.c ui_build.c ui_build_win.c ui_mac.c ui_win.c scripting.[chr] \
lexer.[lc] parser.[yc] y.tab.h \
ff.h funcs.h node.h PARM.h parser.h resource.h symtab.h \
ui.h version.h \
68k.r carbon.r classic.r universal.r pipl_common.r ui_mac.r \
PiPL.rc PiPL_body.rc ui_win.rc win_res.rc \
caution.ico zoomin.ico zoomout.ico \
../common/tt/str.[ch] ../common/tt/sprintf_tiny.[ch] \
../common/tt/dlg.[ch] ../common/tt/menu.[ch] \
../common/tt/ui_compat.h ../common/tt/ui_compat_win.c ../common/tt/ui_compat_mac.c \
../common/tt/file_compat.h ../common/tt/file_compat_win.c \
../common/tt/compat_string.[ch] \
../common/tt/compat_win.[ch] \
../common/tt/dbg.h ../common/tt/dbg_mac.c ../common/tt/dbg_win.c \
../common/tt/carbonstuff.h \
../common/tt/choosefile.h ../common/tt/choosefile_win.c ../common/tt/choosefile_nav.c \
../common/adobeplugin/dllmain.c ../common/adobeplugin/entry.h ../common/adobeplugin/world.h
zip -r -9 $@ $^ -x \*/.DS_Store \*/.FBC\*
ls -l $@
 
$(EXEC) : exports.def $(OBJ)
$(DLLWRAP) -o $@ -def exports.def $(OBJ) -mwindows -s -Xlinker -M > dist/FilterFoundry.map
date
ls -l $@
 
test : $(EXEC)
cp $(EXEC) ../../pcshare
 
res.o : win_res.rc PiPL.rc PiPL_body.rc ui_win.rc caution.ico
$(WINDRES) --language=0 --include-dir=$(PSAPI)/Photoshop --include-dir=$(PSAPI)/Pica_sp -i win_res.rc -o $@
 
lexer.o : lexer.l parser.c
 
parser.o : parser.y
 
gentab : gentab.c funcs.h
gcc -o gentab gentab.c -lm
 
trigtab.c : gentab
./gentab > $@
 
#CC=gcc
#CFLAGS=-DDEBUG -DPARSERTEST
parsertest : lexer.o parser.o node.o testmain.o symtab.o funcs.o
$(CC) -o $@ $^ -lm
/trunk/PARM.h
0,0 → 1,69
/*
http://visca.com/ffactory/archives/7-99/msg00011.html
 
Hi Dave,
 
Here's my reverse-engineered version of the Filter Factory PARM
resource block. Is this what you need? It seems to be good for
most known (PC) versions of FF. You can use the Win32 FindResource
API to locate the PARM resource. E-mail me privately if you need
more details.
 
Cheers,
-Alex Hunter
alex@afh.com
FilterMeister Developer
*/
 
#define PARM_SIZE 8296
#define PARM_SIG 7272 // don't know WHERE this value comes from...but it's in valid FF resources
 
#ifdef Rez
 
type 'PARM' {
longint = PARM_SIG; // cbSize; //size of this structure
longint FilterFactory,standaloneFilter; // nVersion; //0=original FF, 1=standalone filter
array[8] { longint; }; // val[8]; //initial values of controls
longint noParameters,parametersDialog; // popDialog; //true if need to pop a parameter dialog
longint; // unknown1;
longint; // unknown2;
longint; // unknown3;
array[4] { longint; }; // map_used[4]; //true if map(n) is used
array[8] { longint; }; // ctl_used[8]; //true if ctl(n) is used
pstring[251]; //Category name
// Michael Johannhanwahr's protect flag...
longint notProtected,isProtected; // iProtected; // == 1 means protected
pstring[255]; //Filter title
pstring[255]; //Copyright info
pstring[255]; //Filter author(s)
array[4] { pstring[255]; }; //4 map labels
array[8] { pstring[255]; }; //8 control labels
array[4] { cstring[1024]; }; //4 channel formulas
};
 
#else
 
/* N.B. under Windows, the strings are all C strings (!) */
 
typedef struct { //structure of FF PARM resource
long cbSize; //size of this structure
long nVersion; //0=original FF, 1=standalone filter
long val[8]; //initial values of controls
long popDialog; //true if need to pop a parameter dialog
long unknown1;
long unknown2;
long unknown3;
long map_used[4]; //true if map(n) is used
long ctl_used[8]; //true if ctl(n) is used
unsigned char category[252]; //Category name
// Michael Johannhanwahr's protect flag...
long iProtected; // == 1 means protected
unsigned char title[256]; //Filter title
unsigned char copyright[256]; //Copyright info
unsigned char author[256]; //Filter author(s)
unsigned char map[4][256]; //4 map labels
unsigned char ctl[8][256]; //8 control labels
char formula[4][1024]; //4 channel formulas
} PARM_T;
 
#endif
/trunk/PiPL.rc
0,0 → 1,196
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include "PIResDefines.h"
#include "PIActions.h"
 
#include "ui.h"
#include "version.h"
 
#define LC(a,b,c,d) #d, #c, #b, #a
 
#define VENDORID LC(8,B,I,M)
#define NULLID 0L
 
/* LANGUAGE LANG_NEUTRAL,SUBLANG_NEUTRAL */
 
16000 PiPL DISCARDABLE
BEGIN
0x0001, /* Reserved (for Photoshop) */
0L, /* kCurrentPiPLVersion */
8L, /* Property Count */
VENDORID, LC(c,a,t,g), NULLID, 13L, "\014Telegraphics\0\0\0", /* PString */
VENDORID, LC(n,a,m,e), NULLID, 18L, "\021Filter Foundry...\0\0", /* PString */
 
/* HasTerminology { plugInClassID, plugInEventID, AETE_ID, vendorName " " plugInName }, */
VENDORID, LC(h,s,t,m), NULLID, 41L, /* = 14 + sizeof(c string) */
0L, /* version */
LC(f,i,F,o), /* Class ID, always required. Can be Suite ID. */
LC(f,i,F,o), /* Event ID, or typeNULL if not Filter/Color Picker/Selection. */
AETE_ID, /* Dictionary ('AETE') resource ID. */
"Telegraphics FilterFoundry\0\0\0\0", /* Unique scope string, C format, long padded.
Always required in Photoshop 5.0 and later. */
#include "PiPL_body.rc"
END
 
16000 RCDATA DISCARDABLE
BEGIN
0x0001, /* Reserved (for Photoshop) */
0L, /* kCurrentPiPLVersion */
5L, /* Property Count */
#include "PiPL_body.rc"
END
 
/* Dictionary (scripting) resource */
/* also see ui.h */
 
/*
#define NO_REPLY \
noReply, \
"", \
replyRequired, singleItem, notEnumerated, notTightBindingFunction, \
reserved, reserved, reserved, reserved, \
reserved, reserved, reserved, reserved, \
verbEvent, reserved, reserved, reserved
#define IMAGE_DIRECT_PARAMETER \
typeImageReference, \
"", \
flagsOptionalEnumeratedChangesDirect
#define flagsOptionalEnumeratedChangesDirect \
directParamOptional, singleItem, enumerated, changesState, \
reserved, reserved, reserved, reserved, \
reserved, reserved, reserved, reserved, \
reserved, reserved, reserved, reserved
#define flagsSingleParameter \
required, singleItem, notEnumerated, reserved, \
reserved, reserved, reserved, reserved, \
reserved, reserved, reserved, reserved, \
prepositionParam, notFeminine, notMasculine, singular
#define flagsSingleProperty \
reserved, singleItem, notEnumerated, readWrite, \
reserved, reserved, reserved, reserved, \
reserved, reserved, reserved, reserved, \
noApostrophe, notFeminine, notMasculine, singular
*/
#define RC_NO_REPLY \
LC(n,u,l,l), /*noReply*/ \
"\0", \
"\000\000" /* 00 000 000|00 000 000 */
#define RC_IMAGE_DIRECT_PARAM \
LC(#,I,m,R), /*typeImageReference*/ \
"\0", \
"\260\000" /* 10 110 000|00 000 000 */
#define FLAGS_SINGLE_PROP "\020\000" /* 00 010 000|00 000 000 */
#define FLAGS_1_OPT_PARAM "\200\000" /* 10 000 000|00 000 000 */
 
#define RC_typeChar LC(T,E,X,T)
#define RC_typeInteger LC(l,o,n,g)
 
/* Nota Bene: UNLIKE the Macintosh format of the 'aete' resource,
the Windows resource does NOT have word alignment constraints
after its embedded strings. */
 
AETE_ID aete
{
0x0001, /* Reserved (for Photoshop) */
 
"\1\0", english, roman, /* aete version and language specifiers */
 
1, /*suites*/
"\014Telegraphics", /* vendor suite name */
"\0", /* optional description */
LC(t,E,L,E), /* suite ID */
1, /* suite code, must be 1 */
1, /* suite level, must be 1 */
 
1, /*events*/ /* structure for filters */
 
"\015FilterFoundry", /* event name */
"\0", /* event description */
LC(f,i,F,o), /* event class */
LC(f,i,F,o), /* event ID */
RC_NO_REPLY,
RC_IMAGE_DIRECT_PARAM,
12,
"\001R", LC(x,p,r,R), RC_typeChar, "\024R channel expression", FLAGS_1_OPT_PARAM,
"\001G", LC(x,p,r,G), RC_typeChar, "\024G channel expression", FLAGS_1_OPT_PARAM,
"\001B", LC(x,p,r,B), RC_typeChar, "\024B channel expression", FLAGS_1_OPT_PARAM,
"\001A", LC(x,p,r,A), RC_typeChar, "\024A channel expression", FLAGS_1_OPT_PARAM,
"\004ctl0", LC(c,T,l,0), RC_typeInteger, "\016ctl(0) setting", FLAGS_1_OPT_PARAM,
"\004ctl1", LC(c,T,l,1), RC_typeInteger, "\016ctl(1) setting", FLAGS_1_OPT_PARAM,
"\004ctl2", LC(c,T,l,2), RC_typeInteger, "\016ctl(2) setting", FLAGS_1_OPT_PARAM,
"\004ctl3", LC(c,T,l,3), RC_typeInteger, "\016ctl(3) setting", FLAGS_1_OPT_PARAM,
"\004ctl4", LC(c,T,l,4), RC_typeInteger, "\016ctl(4) setting", FLAGS_1_OPT_PARAM,
"\004ctl5", LC(c,T,l,5), RC_typeInteger, "\016ctl(5) setting", FLAGS_1_OPT_PARAM,
"\004ctl6", LC(c,T,l,6), RC_typeInteger, "\016ctl(6) setting", FLAGS_1_OPT_PARAM,
"\004ctl7", LC(c,T,l,7), RC_typeInteger, "\016ctl(7) setting", FLAGS_1_OPT_PARAM,
 
0, /*classes*/ /* non-filter plug-in class here */
 
0, /* comparison ops (not supported) */
 
0, /* any enumerations */
 
0L /* padding */
}
 
/* Version info resource
see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcesdkr/html/_Tools_VERSIONINFO_Resource.asp
and http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tools/tools/versioninfo_resource.asp */
 
#include "winver.h"
 
VS_VERSION_INFO VERSIONINFO
FILEVERSION VI_VERS_NUM
PRODUCTVERSION VI_VERS_NUM
FILEFLAGSMASK 0x3fL
FILEFLAGS VI_FLAGS
FILEOS VOS__WINDOWS32
FILETYPE VFT_DLL
FILESUBTYPE VFT2_UNKNOWN
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "04090000"
BEGIN
VALUE "Comments", VI_COMMENTS
VALUE "CompanyName", "Telegraphics Pty Ltd, www.telegraphics.com.au\0"
VALUE "FileDescription", "Filter Foundry plugin for Photoshop(R)\0"
VALUE "FileVersion", VERSION_STR "\0"
VALUE "InternalName", "FilterFoundry\0"
VALUE "LegalCopyright", "Copyright (C) 2005 Toby Thain\0"
VALUE "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.\0"
/*VALUE "LegalTrademarks", "\0"*/
VALUE "OriginalFilename", "FilterFoundry.8bi\0"
/*VALUE "PrivateBuild", "\0"*/
VALUE "ProductName", "Filter Foundry\0"
VALUE "ProductVersion", VERSION_STR "\0"
/*VALUE "SpecialBuild", "\0"*/
END
END
BLOCK "VarFileInfo" /* see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcesdkr/html/_tools_VarFileInfo_Block.asp */
BEGIN
VALUE "Translation", 0x0809, 1200 /* UK English, Unicode */
END
END
/trunk/PiPL_body.rc
0,0 → 1,33
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
VENDORID, LC(k,i,n,d), NULLID, 4L, LC(8,B,F,M), /* Filter module */
VENDORID, LC(v,e,r,s), NULLID, 4L, latestFilterSubVersion,latestFilterVersion, /* Version Number */
VENDORID, LC(w,x,8,6), NULLID, 11L, "PluginMain\0\0", /* Entrypoint Name (Long Word padded C String) */
VENDORID, LC(m,o,d,e), NULLID, 2L, flagSupportsGrayScale+flagSupportsRGBColor+flagSupportsMultichannel,0,
/* FilterCaseInfo - in all cases:
inStraightData,
outStraightData,
doNotWriteOutsideSelection,
doesNotFilterLayerMasks,
worksWithBlankData,
doNotCopySourceToDestination */
VENDORID, LC(f,i,c,i), NULLID, 28L,
"\001\001\003\000","\001\001\003\000","\001\001\003\000","\001\001\003\000",
"\001\001\003\000","\001\001\003\000","\001\001\003\000"
/trunk/ROADMAP
/trunk/TODO
0,0 → 1,6
FilterFoundry
Copyright (C) 2003 Toby Thain <toby@telegraphics.com.au>
 
TO DO
- "Make" function to package a standalone filter
- FFL import, read compiled 8BFs
/trunk/bad1.afs
/trunk/bad2.afs
/trunk/c.h
0,0 → 1,0
enum{ FALSE, TRUE };
/trunk/carbon.r
0,0 → 1,51
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include "mactypes.r"
#include "AEDataModel.r"
 
#include "PIResDefines.h" // Defines plug-in versions.
#include "PiPL.r"
 
#include "ui.h"
#include "version.h"
 
resource 'PiPL' (16000, purgeable)
{
{
Category { "Telegraphics" },
Name { "Filter FoundryÉ" },
HasTerminology { plugInClassID, plugInEventID, AETE_ID, vendorName " " plugInName },
#include "pipl_common.r"
CodePowerPCbundle { 0, 0, "" },
}
};
 
type 'DATA' as 'PiPL';
resource 'DATA' (16000, purgeable)
{
{
#include "pipl_common.r"
CodePowerPCbundle { 0, 0, "" },
}
};
 
resource 'vers' (1){
VERS_RSRC " (Carbon)"
};
/trunk/caution.ai
/trunk/caution.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/caution.ico
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/caution.pict
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/caution.psd
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/classic.r
0,0 → 1,79
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include "mactypes.r"
#include "AEDataModel.r"
 
#include "PIResDefines.h" // Defines plug-in versions.
#include "PiPL.r"
 
#include "ui.h"
#include "version.h"
 
resource 'PiPL' (16000, purgeable)
{
{
Category { "Telegraphics" },
Name { "Filter FoundryÉ" },
HasTerminology { plugInClassID, plugInEventID, AETE_ID, vendorName " " plugInName },
#include "pipl_common.r"
CodePowerPC { 0, 0, "" },
#ifdef BUILD68K
Code68K { Filter, 16000 },
#endif
}
};
 
type 'DATA' as 'PiPL';
resource 'DATA' (16000, purgeable)
{
{
#include "pipl_common.r"
CodePowerPC { 0, 0, "" },
#ifdef BUILD68K
Code68K { Filter, 16000 },
#endif
}
};
 
 
#ifdef BUILD68K
include "68k.rsrc" ;
 
#include "PiMI.r"
resource 'PiMI' (16000, purgeable)
{
latestFilterVersion, latestFilterSubVersion,
0,
supportsGrayScale|supportsRGBColor|supportsMultichannel,
' ',
{ }
};
 
#endif
 
resource 'vers' (1){
VERS_RSRC
#ifdef BUILDFAT
" (Classic/68K)"
#else
" (Classic)"
#endif
};
/trunk/cw1/filterfoundry_cw1.mcp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/cw1/filterfoundry_cw1.mcp Data/CW Settings.stg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/cw7/FilterFoundry(carbon)
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/cw7/FilterFoundry(classic)
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/cw7/filterfoundry_cw7 Data/CWSettingsMacOS.stg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/cw7/filterfoundry_cw7.mcp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/cwprefix.h
0,0 → 1,2
#define ACCESSOR_CALLS_ARE_FUNCTIONS 0
#define OPAQUE_TOOLBOX_STRUCTS 0
/trunk/dist/COPYING.txt
0,0 → 1,340
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
 
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
 
Preamble
 
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
 
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
 
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
 
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
 
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
 
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
 
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
 
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
 
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
 
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
 
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
 
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
 
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
 
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
 
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
 
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
 
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
 
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
 
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
 
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
 
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
 
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
 
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
 
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
 
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
 
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
 
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
 
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
 
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
 
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
 
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
 
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
 
NO WARRANTY
 
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
 
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
 
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
 
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
 
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
 
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
 
Also add information on how to contact you by electronic and paper mail.
 
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
 
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
 
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
 
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
 
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
 
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
 
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
/trunk/dist/FilterFoundry
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/FilterFoundry(68K)
--- dist/FilterFoundry.map (nonexistent)
+++ dist/FilterFoundry.map (revision 2)
@@ -0,0 +1,4740 @@
+Archive member included because of file (symbol)
+
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(gccmain.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (__main)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(pseudo-reloc.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (_pei386_runtime_relocator)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(pseudo-reloc-list.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(pseudo-reloc.o) (__RUNTIME_PSEUDO_RELOC_LIST_END__)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/crtbegin.o (__w32_sharedptr_initialize)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(_chkstk.o)
+ parser.o (_alloca)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(_ctors.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(gccmain.o) (__CTOR_LIST__)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o)
+ node.o (pow)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(fp_consts.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (__QNAN)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(powi.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (__powi)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(signbit.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (__signbit)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(fpclassify.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (__fpclassify)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(isnan.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (__isnan)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (__dllonexit)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00537.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (fflush)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00552.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (free)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00147.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (_errno)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00603.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (malloc)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00640.o)
+ ui_win.o (strcat)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00636.o)
+ ui_win.o (sprintf)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00648.o)
+ ui.o (strlen)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00644.o)
+ ui_build.o (strcpy)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00611.o)
+ preview.o (memset)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00638.o)
+ preview.o (srand)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00609.o)
+ read.o (memcpy)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00519.o)
+ read.o (atoi)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00222.o)
+ lexer.o (_imp___iob)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00625.o)
+ lexer.o (realloc)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00531.o)
+ lexer.o (exit)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00546.o)
+ lexer.o (fprintf)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00670.o)
+ lexer.o (toupper)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00047.o)
+ node.o (_imp____mb_cur_max)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00344.o)
+ node.o (_imp___pctype)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00616.o)
+ node.o (printf)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00619.o)
+ node.o (puts)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00224.o)
+ node.o (_isctype)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00176.o)
+ node.o (_flsbuf)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00642.o)
+ symtab.o (strcmp)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00516.o)
+ funcs.o (atan2)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00634.o)
+ funcs.o (sin)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00526.o)
+ funcs.o (cos)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00624.o)
+ funcs.o (rand)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00395.o)
+ load_win.o (_stricmp)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00610.o)
+ ../common/tt/str.o (memmove)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00510.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o) (abort)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00543.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (floor)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00596.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (ldexp)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00554.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (frexp)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznch.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o) (_head_libmsvcrt_a)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznct.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznch.o) (_libmsvcrt_a_iname)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o)
+ ui_win.o (GetStockObject@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00038.o)
+ ../common/tt/ui_compat_win.o (CreateDIBSection@24)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00072.o)
+ ../common/tt/ui_compat_win.o (DeleteObject@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbh.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o) (_head_libgdi32_a)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbt.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbh.o) (_libgdi32_a_iname)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o)
+ ../common/tt/choosefile_win.o (GetOpenFileNameA@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00011.o)
+ ../common/tt/choosefile_win.o (GetSaveFileNameA@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbh.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o) (_head_libcomdlg32_a)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbt.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbh.o) (_libcomdlg32_a_iname)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o)
+ main.o (MessageBeep@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00430.o)
+ ui_win.o (MessageBoxA@16)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00252.o)
+ ui_win.o (GetDlgItem@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00235.o)
+ ui_win.o (GetClientRect@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00494.o)
+ ui_win.o (SendDlgItemMessageA@20)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00251.o)
+ ui_win.o (GetDlgCtrlID@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00482.o)
+ ui_win.o (ReleaseCapture@0)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00246.o)
+ ui_win.o (GetCursorPos@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00181.o)
+ ui_win.o (EndDialog@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00506.o)
+ ui_win.o (SetCapture@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00146.o)
+ ui_win.o (DialogBoxParamA@20)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00518.o)
+ ui.o (SetDlgItemInt@16)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00519.o)
+ ui.o (SetDlgItemTextA@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00522.o)
+ ui.o (SetFocus@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00254.o)
+ ui.o (GetDlgItemTextA@16)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00574.o)
+ ui.o (ShowWindow@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00253.o)
+ ui.o (GetDlgItemInt@16)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00179.o)
+ ui.o (EnableWindow@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00053.o)
+ ui_build.o (CheckDlgButton@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00383.o)
+ ui_build.o (IsDlgButtonChecked@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00247.o)
+ preview.o (GetDC@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00483.o)
+ preview.o (ReleaseDC@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00249.o)
+ ../common/tt/ui_compat_win.o (GetDesktopWindow@0)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00346.o)
+ ../common/tt/ui_compat_win.o (GetWindowRect@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00438.o)
+ ../common/tt/ui_compat_win.o (MoveWindow@24)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbh.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o) (_head_libuser32_a)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbt.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbh.o) (_libuser32_a_iname)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o)
+ process.o (GetTickCount@0)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00196.o)
+ load_win.o (FindResourceA@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00527.o)
+ load_win.o (LoadResource@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00541.o)
+ load_win.o (LockResource@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00523.o)
+ load_win.o (LoadLibraryExA@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00213.o)
+ load_win.o (FreeLibrary@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00323.o)
+ make_win.o (GetLastError@0)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00208.o)
+ make_win.o (FormatMessageA@28)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00019.o)
+ make_win.o (BeginUpdateResourceA@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00746.o)
+ make_win.o (SizeofResource@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00776.o)
+ make_win.o (UpdateResourceA@24)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00123.o)
+ make_win.o (EndUpdateResourceA@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00333.o)
+ make_win.o (GetModuleFileNameA@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00053.o)
+ make_win.o (CopyFileA@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00038.o)
+ ../common/tt/file_compat_win.o (CloseHandle@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00822.o)
+ ../common/tt/file_compat_win.o (WriteFile@20)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00613.o)
+ ../common/tt/file_compat_win.o (ReadFile@20)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00068.o)
+ ../common/tt/file_compat_win.o (CreateFileA@28)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00108.o)
+ ../common/tt/file_compat_win.o (DeleteFileA@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00699.o)
+ ../common/tt/file_compat_win.o (SetFilePointer@16)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00311.o)
+ ../common/tt/file_compat_win.o (GetFileSize@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00690.o)
+ ../common/tt/file_compat_win.o (SetEndOfFile@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00431.o)
+ ../common/tt/compat_win.o (GetVersionExA@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00175.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o) (FindAtomA@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00001.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o) (AddAtomA@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00220.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o) (GetAtomNameA@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbh.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o) (_head_libkernel32_a)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbt.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbh.o) (_libkernel32_a_iname)
+
+Allocating common symbols
+Common symbol size file
+
+varused 0x400 node.o
+__DTOR_LIST__ 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(_ctors.o)
+__w32_sharedptr_terminate
+ 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+ctls 0x20 ui_build.o
+yychar 0x10 parser.o
+map 0x1000 main.o
+preview_hwnd 0x10 ui_win.o
+errstart 0x10 main.o
+cell 0x400 main.o
+preview_rect 0x10 preview.o
+needinput 0x10 process.o
+maps 0x10 ui_build.o
+errstr 0x10 parser.o
+zoomfactor 0x10 ui.o
+inarglist 0x190 parser.o
+hash_table 0x200 symtab.o
+var 0x400 node.o
+srcradused 0x10 main.o
+arglistptr 0x10 parser.o
+gpb 0x10 main.o
+__w32_sharedptr 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+errpos 0x10 main.o
+tokstart 0x10 lexer.o
+err 0x10 main.o
+preview_handle 0x10 preview.o
+node_list 0x10 node.o
+yyleng 0x10 lexer.o
+__CTOR_LIST__ 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(_ctors.o)
+fitzoom 0x10 ui.o
+preview_h 0x10 preview.o
+gdata 0x10 main.o
+parsetree 0x10 parser.o
+yynerrs 0x10 parser.o
+preview_w 0x10 preview.o
+preview_pmap 0x40 preview.o
+yylval 0x10 parser.o
+tokpos 0x10 lexer.o
+expr 0x10 main.o
+__w32_sharedptr_unexpected
+ 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+preview_scroll 0x10 preview.o
+chunksize 0x10 main.o
+preview_pmask 0x20 preview.o
+nplanes 0x10 main.o
+allocs 0x10 node.o
+toprow 0x10 main.o
+event_id 0x10 make.o
+yytext 0x10 lexer.o
+slider 0x20 main.o
+tree 0x10 main.o
+
+Memory Configuration
+
+Name Origin Length Attributes
+*default* 0x00000000 0xffffffff
+
+Linker script and memory map
+
+ 0x6d640000 __image_base__ = 0x6d640000
+ 0x00000001 __dll__ = 0x1
+ 0x00001000 __section_alignment__ = 0x1000
+ 0x00000200 __file_alignment__ = 0x200
+ 0x00000004 __major_os_version__ = 0x4
+ 0x00000000 __minor_os_version__ = 0x0
+ 0x00000001 __major_image_version__ = 0x1
+ 0x00000000 __minor_image_version__ = 0x0
+ 0x00000004 __major_subsystem_version__ = 0x4
+ 0x00000000 __minor_subsystem_version__ = 0x0
+ 0x00000002 __subsystem__ = 0x2
+ 0x00200000 __size_of_stack_reserve__ = 0x200000
+ 0x00001000 __size_of_stack_commit__ = 0x1000
+ 0x00100000 __size_of_heap_reserve__ = 0x100000
+ 0x00001000 __size_of_heap_commit__ = 0x1000
+ 0x00000000 __loader_flags__ = 0x0
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/crtbegin.o
+LOAD main.o
+LOAD ui_win.o
+LOAD ui.o
+LOAD ui_build.o
+LOAD ui_build_win.o
+LOAD preview.o
+LOAD read.o
+LOAD save.o
+LOAD parser.o
+LOAD lexer.o
+LOAD node.o
+LOAD symtab.o
+LOAD funcs.o
+LOAD trigtab.o
+LOAD process.o
+LOAD load_win.o
+LOAD make_win.o
+LOAD make.o
+LOAD scripting.o
+LOAD ../common/tt/str.o
+LOAD ../common/tt/sprintf_tiny.o
+LOAD ../common/tt/ui_compat_win.o
+LOAD ../common/tt/file_compat_win.o
+LOAD ../common/tt/choosefile_win.o
+LOAD ../common/tt/compat_string.o
+LOAD ../common/tt/compat_win.o
+LOAD ../common/tt/dbg_win.o
+LOAD ../common/adobeplugin/dllmain.o
+LOAD res.o
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmoldname.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libadvapi32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libshell32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmoldname.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/crtend.o
+
+.text 0x6d641000 0xd200
+ *(.init)
+ *(.text)
+ .text 0x6d641000 0x160 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o
+ 0x6d641100 atexit
+ 0x6d641130 _onexit
+ 0x6d641000 DllMainCRTStartup@12
+ .text 0x6d641160 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/crtbegin.o
+ 0x6d641160 __do_sjlj_init
+ .text 0x6d641170 0x580 main.o
+ 0x6d641180 PluginMain
+ 0x6d641550 DoStart
+ 0x6d6414d0 RequestNext
+ 0x6d641340 checkandinitparams
+ 0x6d6415a0 DoContinue
+ 0x6d641690 DoFinish
+ 0x6d641480 DoPrepare
+ .text 0x6d6416f0 0x760 ui_win.o
+ 0x6d641df0 maindialog
+ 0x6d6419d0 simplealert
+ 0x6d641a10 maindlgproc@16
+ 0x6d6418c0 DoAbout
+ .text 0x6d641e50 0x1300 ui.o
+ 0x6d642390 checksl
+ 0x6d6426e0 maindlgupdate
+ 0x6d642930 maindlginit
+ 0x6d642140 updateexpr
+ 0x6d642060 updateglobals
+ 0x6d642cc0 maindlgitem
+ 0x6d6425a0 slidermoved
+ 0x6d6430c0 alertuser
+ 0x6d642610 slidertextchanged
+ 0x6d642270 updatezoom
+ 0x6d642510 checksliders
+ 0x6d641e70 updatedialog
+ .text 0x6d643150 0x750 ui_build.o
+ 0x6d6435f0 builddlgitem
+ 0x6d643180 builddlginit
+ .text 0x6d6438a0 0xd0 ui_build_win.o
+ 0x6d6438a0 builddlgproc@16
+ 0x6d643920 builddialog
+ .text 0x6d643970 0xa20 preview.o
+ 0x6d643ad0 dispose_preview
+ 0x6d643970 setup_preview
+ 0x6d6441e0 drawpreview
+ 0x6d643b90 recalc_preview
+ .text 0x6d644390 0x6a0 read.o
+ 0x6d6447a0 readPARM
+ 0x6d644980 readfile
+ 0x6d6444c0 readparams
+ 0x6d6448b0 readfileintohandle
+ .text 0x6d644a30 0x500 save.o
+ 0x6d644d50 savehandleintofile
+ 0x6d644af0 saveparams
+ 0x6d644a30 putstr
+ 0x6d644e20 savefile
+ .text 0x6d644f30 0x1cc0 parser.o
+ 0x6d644f60 pushflag
+ 0x6d646480 yyparse
+ 0x6d646b60 parseexpr
+ 0x6d646bd0 yyerror
+ .text 0x6d646bf0 0x15a0 lexer.o
+ 0x6d647ec0 yy_create_buffer
+ 0x6d647e80 yy_load_buffer_state
+ 0x6d647e20 yy_switch_to_buffer
+ 0x6d647dd0 yyrestart
+ 0x6d647ff0 yy_scan_buffer
+ 0x6d647fa0 yy_flush_buffer
+ 0x6d6480b0 yy_scan_bytes
+ 0x6d647f10 yy_delete_buffer
+ 0x6d648080 yy_scan_string
+ 0x6d647f70 yy_init_buffer
+ 0x6d6472b0 yylex
+ .text 0x6d648190 0xd20 node.o
+ 0x6d648190 newnode
+ 0x6d648dd0 freetree
+ 0x6d648480 eval
+ 0x6d6481d0 freenodes
+ 0x6d648210 freeallnodes
+ 0x6d648e20 checkvars
+ 0x6d6482e0 dumptree
+ .text 0x6d648eb0 0x2a0 symtab.o
+ 0x6d648eb0 djb2
+ 0x6d649120 insert
+ 0x6d648f20 init_symtab
+ 0x6d6490c0 lookup
+ 0x6d649000 dump_symbols
+ .text 0x6d649150 0x7d0 funcs.o
+ 0x6d649530 ff_sqr
+ 0x6d649300 ff_min
+ 0x6d649230 ff_ctl
+ 0x6d6494a0 ff_scl
+ 0x6d649450 ff_mix
+ 0x6d6493b0 ff_dif
+ 0x6d6495a0 ff_tan
+ 0x6d649740 ff_put
+ 0x6d649320 ff_max
+ 0x6d649700 ff_c2m
+ 0x6d649380 ff_sub
+ 0x6d649360 ff_add
+ 0x6d649760 ff_cnv
+ 0x6d6492a0 ff_map
+ 0x6d649150 ff_src
+ 0x6d6493d0 ff_rnd
+ 0x6d649550 ff_sin
+ 0x6d649250 ff_val
+ 0x6d6495e0 ff_r2x
+ 0x6d649340 ff_abs
+ 0x6d6496a0 ff_c2d
+ 0x6d6491d0 ff_rad
+ 0x6d649640 ff_r2y
+ 0x6d649720 ff_get
+ 0x6d6494f0 isqrt
+ 0x6d649560 ff_cos
+ .text 0x6d649920 0x7a0 process.o
+ 0x6d649cd0 process
+ 0x6d649f00 process_scaled
+ 0x6d649920 setup
+ 0x6d649a70 evalpixel
+ .text 0x6d64a0c0 0x280 load_win.o
+ 0x6d64a0d0 readPARMresource
+ 0x6d64a220 loadfile
+ .text 0x6d64a340 0x6e0 make_win.o
+ 0x6d64a970 make_standalone
+ 0x6d64a470 doresources
+ 0x6d64a350 dbglasterror
+ .text 0x6d64aa20 0x2e0 make.o
+ 0x6d64ac10 fixaete
+ 0x6d64aa20 printablehash
+ 0x6d64aad0 fixpipl
+ .text 0x6d64ad00 0x5d0 scripting.o
+ 0x6d64ae50 ReadScriptParamsOnRead
+ 0x6d64b150 HostDescriptorAvailable
+ 0x6d64aff0 WriteScriptParamsOnRead
+ 0x6d64b270 HostCloseWriter
+ 0x6d64ad90 get_cstring
+ 0x6d64b220 HostCloseReader
+ 0x6d64ad00 put_cstring
+ .text 0x6d64b2d0 0x270 ../common/tt/str.o
+ 0x6d64b440 my_strdup
+ 0x6d64b490 PLcstrcpy
+ 0x6d64b3e0 cat
+ 0x6d64b4e0 PLcstrcat
+ 0x6d64b410 my_memset
+ 0x6d64b390 myc2pstrcpy
+ 0x6d64b350 myp2cstrcpy
+ 0x6d64b2d0 myc2pstr
+ 0x6d64b310 myp2cstr
+ .text 0x6d64b540 0x3e0 ../common/tt/sprintf_tiny.o
+ 0x6d64b720 vsprintf_tiny
+ 0x6d64b5e0 int_str
+ 0x6d64b540 int_exp
+ 0x6d64b8f0 sprintf_tiny
+ 0x6d64b590 udigits
+ 0x6d64b670 float_str
+ 0x6d64b620 int_strpad
+ .text 0x6d64b920 0x230 ../common/tt/ui_compat_win.o
+ 0x6d64b940 newbitmap
+ 0x6d64ba40 disposebitmap
+ 0x6d64ba80 centre_window
+ .text 0x6d64bb50 0x330 ../common/tt/file_compat_win.o
+ 0x6d64bd30 FSpDelete
+ 0x6d64bc30 FSpOpenDF
+ 0x6d64be30 SetEOF
+ 0x6d64be00 GetEOF
+ 0x6d64bdb0 SetFPos
+ 0x6d64bcb0 FSpCreate
+ 0x6d64bd70 GetFPos
+ 0x6d64bbd0 FSRead
+ 0x6d64bb80 FSWrite
+ 0x6d64bb50 FSClose
+ .text 0x6d64be80 0x220 ../common/tt/choosefile_win.o
+ 0x6d64c090 completesave
+ 0x6d64be80 choosefiletypes
+ 0x6d64bfa0 putfile
+ 0x6d64bec0 choosefile
+ .text 0x6d64c0a0 0x170 ../common/tt/compat_string.o
+ 0x6d64c160 PLstrcmp
+ 0x6d64c1d0 NumToString
+ 0x6d64c120 PLstrrchr
+ 0x6d64c0a0 PLstrcpy
+ 0x6d64c0d0 PLstrcat
+ .text 0x6d64c210 0x50 ../common/tt/compat_win.o
+ 0x6d64c210 isWin32NT
+ .text 0x6d64c260 0x40 ../common/tt/dbg_win.o
+ 0x6d64c270 dbg
+ .text 0x6d64c2a0 0x20 ../common/adobeplugin/dllmain.o
+ 0x6d64c2a0 DllMain@12
+ .text 0x6d64c2c0 0xb0 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(gccmain.o)
+ 0x6d64c350 __main
+ 0x6d64c2c0 __do_global_dtors
+ 0x6d64c2f0 __do_global_ctors
+ .text 0x6d64c370 0x70 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(pseudo-reloc.o)
+ 0x6d64c3b0 _pei386_runtime_relocator
+ .text 0x6d64c3e0 0x320 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+ 0x6d64c4a0 __w32_sharedptr_initialize
+ .text 0x6d64c700 0x30 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(_chkstk.o)
+ 0x6d64c700 __chkstk
+ 0x6d64c700 _alloca
+ .text 0x6d64c730 0xfc0 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o)
+ 0x6d64c940 pow
+ .text 0x6d64d6f0 0x50 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(fp_consts.o)
+ 0x6d64d6f0 __QNAN
+ 0x6d64d730 nan
+ 0x6d64d700 __SNAN
+ 0x6d64d720 __DENORM
+ 0x6d64d710 __INF
+ .text 0x6d64d740 0x300 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(powi.o)
+ 0x6d64d780 __powi
+ .text 0x6d64da40 0x30 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(signbit.o)
+ 0x6d64da40 __signbit
+ 0x6d64da40 signbit
+ .text 0x6d64da70 0x30 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(fpclassify.o)
+ 0x6d64da70 __fpclassify
+ .text 0x6d64daa0 0x50 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(isnan.o)
+ 0x6d64daa0 isnan
+ 0x6d64daa0 __isnan
+ .text 0x6d64daf0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o)
+ 0x6d64daf0 __dllonexit
+ *fill* 0x6d64daf8 0x8 00
+ .text 0x6d64db00 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00537.o)
+ 0x6d64db00 fflush
+ *fill* 0x6d64db08 0x8 00
+ .text 0x6d64db10 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00552.o)
+ 0x6d64db10 free
+ *fill* 0x6d64db18 0x8 00
+ .text 0x6d64db20 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00147.o)
+ 0x6d64db20 _errno
+ *fill* 0x6d64db28 0x8 00
+ .text 0x6d64db30 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00603.o)
+ 0x6d64db30 malloc
+ *fill* 0x6d64db38 0x8 00
+ .text 0x6d64db40 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00640.o)
+ 0x6d64db40 strcat
+ *fill* 0x6d64db48 0x8 00
+ .text 0x6d64db50 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00636.o)
+ 0x6d64db50 sprintf
+ *fill* 0x6d64db58 0x8 00
+ .text 0x6d64db60 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00648.o)
+ 0x6d64db60 strlen
+ *fill* 0x6d64db68 0x8 00
+ .text 0x6d64db70 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00644.o)
+ 0x6d64db70 strcpy
+ *fill* 0x6d64db78 0x8 00
+ .text 0x6d64db80 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00611.o)
+ 0x6d64db80 memset
+ *fill* 0x6d64db88 0x8 00
+ .text 0x6d64db90 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00638.o)
+ 0x6d64db90 srand
+ *fill* 0x6d64db98 0x8 00
+ .text 0x6d64dba0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00609.o)
+ 0x6d64dba0 memcpy
+ *fill* 0x6d64dba8 0x8 00
+ .text 0x6d64dbb0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00519.o)
+ 0x6d64dbb0 atoi
+ *fill* 0x6d64dbb8 0x8 00
+ .text 0x6d64dbc0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00625.o)
+ 0x6d64dbc0 realloc
+ *fill* 0x6d64dbc8 0x8 00
+ .text 0x6d64dbd0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00531.o)
+ 0x6d64dbd0 exit
+ *fill* 0x6d64dbd8 0x8 00
+ .text 0x6d64dbe0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00546.o)
+ 0x6d64dbe0 fprintf
+ *fill* 0x6d64dbe8 0x8 00
+ .text 0x6d64dbf0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00670.o)
+ 0x6d64dbf0 toupper
+ *fill* 0x6d64dbf8 0x8 00
+ .text 0x6d64dc00 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00616.o)
+ 0x6d64dc00 printf
+ *fill* 0x6d64dc08 0x8 00
+ .text 0x6d64dc10 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00619.o)
+ 0x6d64dc10 puts
+ *fill* 0x6d64dc18 0x8 00
+ .text 0x6d64dc20 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00224.o)
+ 0x6d64dc20 _isctype
+ *fill* 0x6d64dc28 0x8 00
+ .text 0x6d64dc30 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00176.o)
+ 0x6d64dc30 _flsbuf
+ *fill* 0x6d64dc38 0x8 00
+ .text 0x6d64dc40 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00642.o)
+ 0x6d64dc40 strcmp
+ *fill* 0x6d64dc48 0x8 00
+ .text 0x6d64dc50 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00516.o)
+ 0x6d64dc50 atan2
+ *fill* 0x6d64dc58 0x8 00
+ .text 0x6d64dc60 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00634.o)
+ 0x6d64dc60 sin
+ *fill* 0x6d64dc68 0x8 00
+ .text 0x6d64dc70 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00526.o)
+ 0x6d64dc70 cos
+ *fill* 0x6d64dc78 0x8 00
+ .text 0x6d64dc80 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00624.o)
+ 0x6d64dc80 rand
+ *fill* 0x6d64dc88 0x8 00
+ .text 0x6d64dc90 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00395.o)
+ 0x6d64dc90 _stricmp
+ *fill* 0x6d64dc98 0x8 00
+ .text 0x6d64dca0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00610.o)
+ 0x6d64dca0 memmove
+ *fill* 0x6d64dca8 0x8 00
+ .text 0x6d64dcb0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00510.o)
+ 0x6d64dcb0 abort
+ *fill* 0x6d64dcb8 0x8 00
+ .text 0x6d64dcc0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00543.o)
+ 0x6d64dcc0 floor
+ *fill* 0x6d64dcc8 0x8 00
+ .text 0x6d64dcd0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00596.o)
+ 0x6d64dcd0 ldexp
+ *fill* 0x6d64dcd8 0x8 00
+ .text 0x6d64dce0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00554.o)
+ 0x6d64dce0 frexp
+ *fill* 0x6d64dce8 0x8 00
+ .text 0x6d64dcf0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o)
+ 0x6d64dcf0 GetStockObject@4
+ *fill* 0x6d64dcf8 0x8 00
+ .text 0x6d64dd00 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00038.o)
+ 0x6d64dd00 CreateDIBSection@24
+ *fill* 0x6d64dd08 0x8 00
+ .text 0x6d64dd10 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00072.o)
+ 0x6d64dd10 DeleteObject@4
+ *fill* 0x6d64dd18 0x8 00
+ .text 0x6d64dd20 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o)
+ 0x6d64dd20 GetOpenFileNameA@4
+ *fill* 0x6d64dd28 0x8 00
+ .text 0x6d64dd30 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00011.o)
+ 0x6d64dd30 GetSaveFileNameA@4
+ *fill* 0x6d64dd38 0x8 00
+ .text 0x6d64dd40 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o)
+ 0x6d64dd40 MessageBeep@4
+ *fill* 0x6d64dd48 0x8 00
+ .text 0x6d64dd50 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00430.o)
+ 0x6d64dd50 MessageBoxA@16
+ *fill* 0x6d64dd58 0x8 00
+ .text 0x6d64dd60 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00252.o)
+ 0x6d64dd60 GetDlgItem@8
+ *fill* 0x6d64dd68 0x8 00
+ .text 0x6d64dd70 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00235.o)
+ 0x6d64dd70 GetClientRect@8
+ *fill* 0x6d64dd78 0x8 00
+ .text 0x6d64dd80 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00494.o)
+ 0x6d64dd80 SendDlgItemMessageA@20
+ *fill* 0x6d64dd88 0x8 00
+ .text 0x6d64dd90 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00251.o)
+ 0x6d64dd90 GetDlgCtrlID@4
+ *fill* 0x6d64dd98 0x8 00
+ .text 0x6d64dda0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00482.o)
+ 0x6d64dda0 ReleaseCapture@0
+ *fill* 0x6d64dda8 0x8 00
+ .text 0x6d64ddb0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00246.o)
+ 0x6d64ddb0 GetCursorPos@4
+ *fill* 0x6d64ddb8 0x8 00
+ .text 0x6d64ddc0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00181.o)
+ 0x6d64ddc0 EndDialog@8
+ *fill* 0x6d64ddc8 0x8 00
+ .text 0x6d64ddd0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00506.o)
+ 0x6d64ddd0 SetCapture@4
+ *fill* 0x6d64ddd8 0x8 00
+ .text 0x6d64dde0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00146.o)
+ 0x6d64dde0 DialogBoxParamA@20
+ *fill* 0x6d64dde8 0x8 00
+ .text 0x6d64ddf0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00518.o)
+ 0x6d64ddf0 SetDlgItemInt@16
+ *fill* 0x6d64ddf8 0x8 00
+ .text 0x6d64de00 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00519.o)
+ 0x6d64de00 SetDlgItemTextA@12
+ *fill* 0x6d64de08 0x8 00
+ .text 0x6d64de10 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00522.o)
+ 0x6d64de10 SetFocus@4
+ *fill* 0x6d64de18 0x8 00
+ .text 0x6d64de20 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00254.o)
+ 0x6d64de20 GetDlgItemTextA@16
+ *fill* 0x6d64de28 0x8 00
+ .text 0x6d64de30 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00574.o)
+ 0x6d64de30 ShowWindow@8
+ *fill* 0x6d64de38 0x8 00
+ .text 0x6d64de40 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00253.o)
+ 0x6d64de40 GetDlgItemInt@16
+ *fill* 0x6d64de48 0x8 00
+ .text 0x6d64de50 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00179.o)
+ 0x6d64de50 EnableWindow@8
+ *fill* 0x6d64de58 0x8 00
+ .text 0x6d64de60 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00053.o)
+ 0x6d64de60 CheckDlgButton@12
+ *fill* 0x6d64de68 0x8 00
+ .text 0x6d64de70 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00383.o)
+ 0x6d64de70 IsDlgButtonChecked@8
+ *fill* 0x6d64de78 0x8 00
+ .text 0x6d64de80 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00247.o)
+ 0x6d64de80 GetDC@4
+ *fill* 0x6d64de88 0x8 00
+ .text 0x6d64de90 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00483.o)
+ 0x6d64de90 ReleaseDC@8
+ *fill* 0x6d64de98 0x8 00
+ .text 0x6d64dea0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00249.o)
+ 0x6d64dea0 GetDesktopWindow@0
+ *fill* 0x6d64dea8 0x8 00
+ .text 0x6d64deb0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00346.o)
+ 0x6d64deb0 GetWindowRect@8
+ *fill* 0x6d64deb8 0x8 00
+ .text 0x6d64dec0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00438.o)
+ 0x6d64dec0 MoveWindow@24
+ *fill* 0x6d64dec8 0x8 00
+ .text 0x6d64ded0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o)
+ 0x6d64ded0 GetTickCount@0
+ *fill* 0x6d64ded8 0x8 00
+ .text 0x6d64dee0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00196.o)
+ 0x6d64dee0 FindResourceA@12
+ *fill* 0x6d64dee8 0x8 00
+ .text 0x6d64def0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00527.o)
+ 0x6d64def0 LoadResource@8
+ *fill* 0x6d64def8 0x8 00
+ .text 0x6d64df00 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00541.o)
+ 0x6d64df00 LockResource@4
+ *fill* 0x6d64df08 0x8 00
+ .text 0x6d64df10 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00523.o)
+ 0x6d64df10 LoadLibraryExA@12
+ *fill* 0x6d64df18 0x8 00
+ .text 0x6d64df20 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00213.o)
+ 0x6d64df20 FreeLibrary@4
+ *fill* 0x6d64df28 0x8 00
+ .text 0x6d64df30 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00323.o)
+ 0x6d64df30 GetLastError@0
+ *fill* 0x6d64df38 0x8 00
+ .text 0x6d64df40 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00208.o)
+ 0x6d64df40 FormatMessageA@28
+ *fill* 0x6d64df48 0x8 00
+ .text 0x6d64df50 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00019.o)
+ 0x6d64df50 BeginUpdateResourceA@8
+ *fill* 0x6d64df58 0x8 00
+ .text 0x6d64df60 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00746.o)
+ 0x6d64df60 SizeofResource@8
+ *fill* 0x6d64df68 0x8 00
+ .text 0x6d64df70 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00776.o)
+ 0x6d64df70 UpdateResourceA@24
+ *fill* 0x6d64df78 0x8 00
+ .text 0x6d64df80 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00123.o)
+ 0x6d64df80 EndUpdateResourceA@8
+ *fill* 0x6d64df88 0x8 00
+ .text 0x6d64df90 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00333.o)
+ 0x6d64df90 GetModuleFileNameA@12
+ *fill* 0x6d64df98 0x8 00
+ .text 0x6d64dfa0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00053.o)
+ 0x6d64dfa0 CopyFileA@12
+ *fill* 0x6d64dfa8 0x8 00
+ .text 0x6d64dfb0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00038.o)
+ 0x6d64dfb0 CloseHandle@4
+ *fill* 0x6d64dfb8 0x8 00
+ .text 0x6d64dfc0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00822.o)
+ 0x6d64dfc0 WriteFile@20
+ *fill* 0x6d64dfc8 0x8 00
+ .text 0x6d64dfd0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00613.o)
+ 0x6d64dfd0 ReadFile@20
+ *fill* 0x6d64dfd8 0x8 00
+ .text 0x6d64dfe0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00068.o)
+ 0x6d64dfe0 CreateFileA@28
+ *fill* 0x6d64dfe8 0x8 00
+ .text 0x6d64dff0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00108.o)
+ 0x6d64dff0 DeleteFileA@4
+ *fill* 0x6d64dff8 0x8 00
+ .text 0x6d64e000 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00699.o)
+ 0x6d64e000 SetFilePointer@16
+ *fill* 0x6d64e008 0x8 00
+ .text 0x6d64e010 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00311.o)
+ 0x6d64e010 GetFileSize@8
+ *fill* 0x6d64e018 0x8 00
+ .text 0x6d64e020 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00690.o)
+ 0x6d64e020 SetEndOfFile@4
+ *fill* 0x6d64e028 0x8 00
+ .text 0x6d64e030 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00431.o)
+ 0x6d64e030 GetVersionExA@4
+ *fill* 0x6d64e038 0x8 00
+ .text 0x6d64e040 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00175.o)
+ 0x6d64e040 FindAtomA@4
+ *fill* 0x6d64e048 0x8 00
+ .text 0x6d64e050 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00001.o)
+ 0x6d64e050 AddAtomA@4
+ *fill* 0x6d64e058 0x8 00
+ .text 0x6d64e060 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00220.o)
+ 0x6d64e060 GetAtomNameA@12
+ *fill* 0x6d64e068 0x8 00
+ .text 0x6d64e070 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/crtend.o
+ *(SORT(.text$*))
+ *(.glue_7t)
+ *(.glue_7)
+ 0x6d64e080 ___CTOR_LIST__ = .
+ 0x6d64e080 __CTOR_LIST__ = .
+ 0x6d64e080 0x4 LONG 0xffffffff
+ *(SORT(.ctors.*))
+ *(.ctors)
+ .ctors 0x6d64e084 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/crtend.o
+ *(.ctor)
+ 0x6d64e088 0x4 LONG 0x0
+ 0x6d64e08c ___DTOR_LIST__ = .
+ 0x6d64e08c __DTOR_LIST__ = .
+ 0x6d64e08c 0x4 LONG 0xffffffff
+ *(SORT(.dtors.*))
+ *(.dtors)
+ *(.dtor)
+ 0x6d64e090 0x4 LONG 0x0
+ *(.fini)
+ *(.gcc_exc)
+ 0x6d64e094 PROVIDE (etext, .)
+ *(.gcc_except_table)
+
+.data 0x6d64f000 0x1c00
+ 0x6d64f000 __data_start__ = .
+ *(.data)
+ .data 0x6d64f000 0x10 main.o
+ 0x6d64f000 defaultexpr
+ .data 0x6d64f010 0x80 ui.o
+ 0x6d64f010 doupdates
+ .data 0x6d64f090 0x10 save.o
+ .data 0x6d64f0a0 0x10 lexer.o
+ .data 0x6d64f0b0 0x240 funcs.o
+ 0x6d64f0b0 predefs
+ .data 0x6d64f2f0 0x1800 trigtab.o
+ 0x6d64f2f0 costab
+ 0x6d6502f0 tantab
+ .data 0x6d650af0 0x20 ../common/tt/file_compat_win.o
+ .data 0x6d650b10 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(gccmain.o)
+ .data 0x6d650b20 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+ *(.data2)
+ *(SORT(.data$*))
+ 0x6d650b30 __data_end__ = .
+ *(.data_cygwin_nocopy)
+
+.rdata 0x6d651000 0x0
+ *(.rdata)
+ *(SORT(.rdata$*))
+ *(.eh_frame)
+ 0x6d651000 ___RUNTIME_PSEUDO_RELOC_LIST__ = .
+ 0x6d651000 __RUNTIME_PSEUDO_RELOC_LIST__ = .
+ *(.rdata_runtime_pseudo_reloc)
+ 0x6d651000 ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .
+ 0x6d651000 __RUNTIME_PSEUDO_RELOC_LIST_END__ = .
+
+.pdata
+ *(.pdata)
+
+.bss 0x6d651000 0x2420
+ 0x6d651000 __bss_start__ = .
+ *(.bss)
+ .bss 0x6d651000 0x20 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o
+ .bss 0x6d651020 0x10 main.o
+ .bss 0x6d651030 0x50 ui_win.o
+ .bss 0x6d651080 0x10 preview.o
+ 0x6d651080 preview_complete
+ .bss 0x6d651090 0x90 lexer.o
+ 0x6d651090 yyin
+ 0x6d651094 yyout
+ .bss 0x6d651120 0x10 funcs.o
+ 0x6d651120 zero_val
+ .bss 0x6d651130 0x10 ../common/adobeplugin/dllmain.o
+ 0x6d651130 hDllInstance
+ .bss 0x6d651140 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(gccmain.o)
+ .bss 0x6d651150 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(pseudo-reloc-list.o)
+ .bss 0x6d651160 0x20 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+ *(COMMON)
+ COMMON 0x6d651180 0x14d0 main.o
+ 0x0 (size before relaxing)
+ 0x6d651180 map
+ 0x6d652180 errstart
+ 0x6d652190 cell
+ 0x6d652590 srcradused
+ 0x6d6525a0 gpb
+ 0x6d6525b0 errpos
+ 0x6d6525c0 err
+ 0x6d6525d0 gdata
+ 0x6d6525e0 expr
+ 0x6d6525f0 chunksize
+ 0x6d652600 nplanes
+ 0x6d652610 toprow
+ 0x6d652620 slider
+ 0x6d652640 tree
+ COMMON 0x6d652650 0x10 ui_win.o
+ 0x0 (size before relaxing)
+ 0x6d652650 preview_hwnd
+ COMMON 0x6d652660 0x20 ui.o
+ 0x0 (size before relaxing)
+ 0x6d652660 zoomfactor
+ 0x6d652670 fitzoom
+ COMMON 0x6d652680 0x30 ui_build.o
+ 0x0 (size before relaxing)
+ 0x6d652680 ctls
+ 0x6d6526a0 maps
+ COMMON 0x6d6526b0 0xb0 preview.o
+ 0x0 (size before relaxing)
+ 0x6d6526b0 preview_rect
+ 0x6d6526c0 preview_handle
+ 0x6d6526d0 preview_h
+ 0x6d6526e0 preview_w
+ 0x6d6526f0 preview_pmap
+ 0x6d652730 preview_scroll
+ 0x6d652740 preview_pmask
+ COMMON 0x6d652760 0x1f0 parser.o
+ 0x0 (size before relaxing)
+ 0x6d652760 yychar
+ 0x6d652770 errstr
+ 0x6d652780 inarglist
+ 0x6d652910 arglistptr
+ 0x6d652920 parsetree
+ 0x6d652930 yynerrs
+ 0x6d652940 yylval
+ COMMON 0x6d652950 0x40 lexer.o
+ 0x0 (size before relaxing)
+ 0x6d652950 tokstart
+ 0x6d652960 yyleng
+ 0x6d652970 tokpos
+ 0x6d652980 yytext
+ COMMON 0x6d652990 0x820 node.o
+ 0x0 (size before relaxing)
+ 0x6d652990 varused
+ 0x6d652d90 var
+ 0x6d653190 node_list
+ 0x6d6531a0 allocs
+ COMMON 0x6d6531b0 0x200 symtab.o
+ 0x0 (size before relaxing)
+ 0x6d6531b0 hash_table
+ COMMON 0x6d6533b0 0x10 process.o
+ 0x0 (size before relaxing)
+ 0x6d6533b0 needinput
+ COMMON 0x6d6533c0 0x10 make.o
+ 0x0 (size before relaxing)
+ 0x6d6533c0 event_id
+ COMMON 0x6d6533d0 0x30 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+ 0x0 (size before relaxing)
+ 0x6d6533d0 __w32_sharedptr_terminate
+ 0x6d6533e0 __w32_sharedptr
+ 0x6d6533f0 __w32_sharedptr_unexpected
+ COMMON 0x6d653400 0x20 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(_ctors.o)
+ 0x0 (size before relaxing)
+ 0x6d653420 __bss_end__ = .
+
+.edata 0x6d654000 0x200
+ *(.edata)
+ .edata 0x6d654000 0x4f dll stuff
+
+/DISCARD/
+ *(.debug$S)
+ *(.debug$T)
+ *(.debug$F)
+ *(.drectve)
+
+.idata 0x6d655000 0xc00
+ SORT(*)(.idata$2)
+ .idata$2 0x6d655000 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbh.o)
+ 0x6d655000 _head_libcomdlg32_a
+ .idata$2 0x6d655014 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbh.o)
+ 0x6d655014 _head_libgdi32_a
+ .idata$2 0x6d655028 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbh.o)
+ 0x6d655028 _head_libkernel32_a
+ .idata$2 0x6d65503c 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznch.o)
+ 0x6d65503c _head_libmsvcrt_a
+ .idata$2 0x6d655050 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbh.o)
+ 0x6d655050 _head_libuser32_a
+ SORT(*)(.idata$3)
+ 0x6d655064 0x4 LONG 0x0
+ 0x6d655068 0x4 LONG 0x0
+ 0x6d65506c 0x4 LONG 0x0
+ 0x6d655070 0x4 LONG 0x0
+ 0x6d655074 0x4 LONG 0x0
+ SORT(*)(.idata$4)
+ .idata$4 0x6d655078 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbh.o)
+ .idata$4 0x6d65507c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o)
+ .idata$4 0x6d655080 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00011.o)
+ .idata$4 0x6d655084 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbt.o)
+ .idata$4 0x6d655088 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbh.o)
+ .idata$4 0x6d65508c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00038.o)
+ .idata$4 0x6d655090 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00072.o)
+ .idata$4 0x6d655094 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o)
+ .idata$4 0x6d655098 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbt.o)
+ .idata$4 0x6d65509c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbh.o)
+ .idata$4 0x6d6550a0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00001.o)
+ .idata$4 0x6d6550a4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00019.o)
+ .idata$4 0x6d6550a8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00038.o)
+ .idata$4 0x6d6550ac 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00053.o)
+ .idata$4 0x6d6550b0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00068.o)
+ .idata$4 0x6d6550b4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00108.o)
+ .idata$4 0x6d6550b8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00123.o)
+ .idata$4 0x6d6550bc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00175.o)
+ .idata$4 0x6d6550c0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00196.o)
+ .idata$4 0x6d6550c4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00208.o)
+ .idata$4 0x6d6550c8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00213.o)
+ .idata$4 0x6d6550cc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00220.o)
+ .idata$4 0x6d6550d0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00311.o)
+ .idata$4 0x6d6550d4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00323.o)
+ .idata$4 0x6d6550d8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00333.o)
+ .idata$4 0x6d6550dc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o)
+ .idata$4 0x6d6550e0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00431.o)
+ .idata$4 0x6d6550e4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00523.o)
+ .idata$4 0x6d6550e8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00527.o)
+ .idata$4 0x6d6550ec 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00541.o)
+ .idata$4 0x6d6550f0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00613.o)
+ .idata$4 0x6d6550f4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00690.o)
+ .idata$4 0x6d6550f8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00699.o)
+ .idata$4 0x6d6550fc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00746.o)
+ .idata$4 0x6d655100 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00776.o)
+ .idata$4 0x6d655104 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00822.o)
+ .idata$4 0x6d655108 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbt.o)
+ .idata$4 0x6d65510c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznch.o)
+ .idata$4 0x6d655110 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o)
+ .idata$4 0x6d655114 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00047.o)
+ .idata$4 0x6d655118 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00147.o)
+ .idata$4 0x6d65511c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00176.o)
+ .idata$4 0x6d655120 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00222.o)
+ .idata$4 0x6d655124 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00224.o)
+ .idata$4 0x6d655128 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00344.o)
+ .idata$4 0x6d65512c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00395.o)
+ .idata$4 0x6d655130 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00510.o)
+ .idata$4 0x6d655134 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00516.o)
+ .idata$4 0x6d655138 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00519.o)
+ .idata$4 0x6d65513c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00526.o)
+ .idata$4 0x6d655140 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00531.o)
+ .idata$4 0x6d655144 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00537.o)
+ .idata$4 0x6d655148 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00543.o)
+ .idata$4 0x6d65514c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00546.o)
+ .idata$4 0x6d655150 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00552.o)
+ .idata$4 0x6d655154 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00554.o)
+ .idata$4 0x6d655158 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00596.o)
+ .idata$4 0x6d65515c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00603.o)
+ .idata$4 0x6d655160 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00609.o)
+ .idata$4 0x6d655164 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00610.o)
+ .idata$4 0x6d655168 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00611.o)
+ .idata$4 0x6d65516c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00616.o)
+ .idata$4 0x6d655170 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00619.o)
+ .idata$4 0x6d655174 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00624.o)
+ .idata$4 0x6d655178 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00625.o)
+ .idata$4 0x6d65517c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00634.o)
+ .idata$4 0x6d655180 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00636.o)
+ .idata$4 0x6d655184 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00638.o)
+ .idata$4 0x6d655188 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00640.o)
+ .idata$4 0x6d65518c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00642.o)
+ .idata$4 0x6d655190 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00644.o)
+ .idata$4 0x6d655194 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00648.o)
+ .idata$4 0x6d655198 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00670.o)
+ .idata$4 0x6d65519c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznct.o)
+ .idata$4 0x6d6551a0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbh.o)
+ .idata$4 0x6d6551a4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00053.o)
+ .idata$4 0x6d6551a8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00146.o)
+ .idata$4 0x6d6551ac 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00179.o)
+ .idata$4 0x6d6551b0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00181.o)
+ .idata$4 0x6d6551b4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00235.o)
+ .idata$4 0x6d6551b8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00246.o)
+ .idata$4 0x6d6551bc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00247.o)
+ .idata$4 0x6d6551c0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00249.o)
+ .idata$4 0x6d6551c4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00251.o)
+ .idata$4 0x6d6551c8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00252.o)
+ .idata$4 0x6d6551cc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00253.o)
+ .idata$4 0x6d6551d0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00254.o)
+ .idata$4 0x6d6551d4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00346.o)
+ .idata$4 0x6d6551d8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00383.o)
+ .idata$4 0x6d6551dc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o)
+ .idata$4 0x6d6551e0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00430.o)
+ .idata$4 0x6d6551e4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00438.o)
+ .idata$4 0x6d6551e8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00482.o)
+ .idata$4 0x6d6551ec 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00483.o)
+ .idata$4 0x6d6551f0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00494.o)
+ .idata$4 0x6d6551f4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00506.o)
+ .idata$4 0x6d6551f8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00518.o)
+ .idata$4 0x6d6551fc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00519.o)
+ .idata$4 0x6d655200 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00522.o)
+ .idata$4 0x6d655204 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00574.o)
+ .idata$4 0x6d655208 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbt.o)
+ SORT(*)(.idata$5)
+ .idata$5 0x6d65520c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbh.o)
+ .idata$5 0x6d655210 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o)
+ 0x6d655210 _imp__GetOpenFileNameA@4
+ .idata$5 0x6d655214 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00011.o)
+ 0x6d655214 _imp__GetSaveFileNameA@4
+ .idata$5 0x6d655218 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbt.o)
+ .idata$5 0x6d65521c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbh.o)
+ .idata$5 0x6d655220 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00038.o)
+ 0x6d655220 _imp__CreateDIBSection@24
+ .idata$5 0x6d655224 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00072.o)
+ 0x6d655224 _imp__DeleteObject@4
+ .idata$5 0x6d655228 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o)
+ 0x6d655228 _imp__GetStockObject@4
+ .idata$5 0x6d65522c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbt.o)
+ .idata$5 0x6d655230 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbh.o)
+ .idata$5 0x6d655234 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00001.o)
+ 0x6d655234 _imp__AddAtomA@4
+ .idata$5 0x6d655238 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00019.o)
+ 0x6d655238 _imp__BeginUpdateResourceA@8
+ .idata$5 0x6d65523c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00038.o)
+ 0x6d65523c _imp__CloseHandle@4
+ .idata$5 0x6d655240 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00053.o)
+ 0x6d655240 _imp__CopyFileA@12
+ .idata$5 0x6d655244 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00068.o)
+ 0x6d655244 _imp__CreateFileA@28
+ .idata$5 0x6d655248 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00108.o)
+ 0x6d655248 _imp__DeleteFileA@4
+ .idata$5 0x6d65524c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00123.o)
+ 0x6d65524c _imp__EndUpdateResourceA@8
+ .idata$5 0x6d655250 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00175.o)
+ 0x6d655250 _imp__FindAtomA@4
+ .idata$5 0x6d655254 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00196.o)
+ 0x6d655254 _imp__FindResourceA@12
+ .idata$5 0x6d655258 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00208.o)
+ 0x6d655258 _imp__FormatMessageA@28
+ .idata$5 0x6d65525c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00213.o)
+ 0x6d65525c _imp__FreeLibrary@4
+ .idata$5 0x6d655260 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00220.o)
+ 0x6d655260 _imp__GetAtomNameA@12
+ .idata$5 0x6d655264 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00311.o)
+ 0x6d655264 _imp__GetFileSize@8
+ .idata$5 0x6d655268 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00323.o)
+ 0x6d655268 _imp__GetLastError@0
+ .idata$5 0x6d65526c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00333.o)
+ 0x6d65526c _imp__GetModuleFileNameA@12
+ .idata$5 0x6d655270 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o)
+ 0x6d655270 _imp__GetTickCount@0
+ .idata$5 0x6d655274 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00431.o)
+ 0x6d655274 _imp__GetVersionExA@4
+ .idata$5 0x6d655278 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00523.o)
+ 0x6d655278 _imp__LoadLibraryExA@12
+ .idata$5 0x6d65527c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00527.o)
+ 0x6d65527c _imp__LoadResource@8
+ .idata$5 0x6d655280 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00541.o)
+ 0x6d655280 _imp__LockResource@4
+ .idata$5 0x6d655284 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00613.o)
+ 0x6d655284 _imp__ReadFile@20
+ .idata$5 0x6d655288 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00690.o)
+ 0x6d655288 _imp__SetEndOfFile@4
+ .idata$5 0x6d65528c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00699.o)
+ 0x6d65528c _imp__SetFilePointer@16
+ .idata$5 0x6d655290 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00746.o)
+ 0x6d655290 _imp__SizeofResource@8
+ .idata$5 0x6d655294 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00776.o)
+ 0x6d655294 _imp__UpdateResourceA@24
+ .idata$5 0x6d655298 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00822.o)
+ 0x6d655298 _imp__WriteFile@20
+ .idata$5 0x6d65529c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbt.o)
+ .idata$5 0x6d6552a0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznch.o)
+ .idata$5 0x6d6552a4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o)
+ 0x6d6552a4 _imp____dllonexit
+ .idata$5 0x6d6552a8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00047.o)
+ 0x6d6552a8 _imp____mb_cur_max
+ .idata$5 0x6d6552ac 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00147.o)
+ 0x6d6552ac _imp___errno
+ .idata$5 0x6d6552b0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00176.o)
+ 0x6d6552b0 _imp___flsbuf
+ .idata$5 0x6d6552b4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00222.o)
+ 0x6d6552b4 _imp___iob
+ .idata$5 0x6d6552b8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00224.o)
+ 0x6d6552b8 _imp___isctype
+ .idata$5 0x6d6552bc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00344.o)
+ 0x6d6552bc _imp___pctype
+ .idata$5 0x6d6552c0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00395.o)
+ 0x6d6552c0 _imp___stricmp
+ .idata$5 0x6d6552c4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00510.o)
+ 0x6d6552c4 _imp__abort
+ .idata$5 0x6d6552c8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00516.o)
+ 0x6d6552c8 _imp__atan2
+ .idata$5 0x6d6552cc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00519.o)
+ 0x6d6552cc _imp__atoi
+ .idata$5 0x6d6552d0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00526.o)
+ 0x6d6552d0 _imp__cos
+ .idata$5 0x6d6552d4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00531.o)
+ 0x6d6552d4 _imp__exit
+ .idata$5 0x6d6552d8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00537.o)
+ 0x6d6552d8 _imp__fflush
+ .idata$5 0x6d6552dc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00543.o)
+ 0x6d6552dc _imp__floor
+ .idata$5 0x6d6552e0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00546.o)
+ 0x6d6552e0 _imp__fprintf
+ .idata$5 0x6d6552e4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00552.o)
+ 0x6d6552e4 _imp__free
+ .idata$5 0x6d6552e8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00554.o)
+ 0x6d6552e8 _imp__frexp
+ .idata$5 0x6d6552ec 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00596.o)
+ 0x6d6552ec _imp__ldexp
+ .idata$5 0x6d6552f0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00603.o)
+ 0x6d6552f0 _imp__malloc
+ .idata$5 0x6d6552f4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00609.o)
+ 0x6d6552f4 _imp__memcpy
+ .idata$5 0x6d6552f8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00610.o)
+ 0x6d6552f8 _imp__memmove
+ .idata$5 0x6d6552fc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00611.o)
+ 0x6d6552fc _imp__memset
+ .idata$5 0x6d655300 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00616.o)
+ 0x6d655300 _imp__printf
+ .idata$5 0x6d655304 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00619.o)
+ 0x6d655304 _imp__puts
+ .idata$5 0x6d655308 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00624.o)
+ 0x6d655308 _imp__rand
+ .idata$5 0x6d65530c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00625.o)
+ 0x6d65530c _imp__realloc
+ .idata$5 0x6d655310 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00634.o)
+ 0x6d655310 _imp__sin
+ .idata$5 0x6d655314 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00636.o)
+ 0x6d655314 _imp__sprintf
+ .idata$5 0x6d655318 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00638.o)
+ 0x6d655318 _imp__srand
+ .idata$5 0x6d65531c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00640.o)
+ 0x6d65531c _imp__strcat
+ .idata$5 0x6d655320 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00642.o)
+ 0x6d655320 _imp__strcmp
+ .idata$5 0x6d655324 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00644.o)
+ 0x6d655324 _imp__strcpy
+ .idata$5 0x6d655328 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00648.o)
+ 0x6d655328 _imp__strlen
+ .idata$5 0x6d65532c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00670.o)
+ 0x6d65532c _imp__toupper
+ .idata$5 0x6d655330 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznct.o)
+ .idata$5 0x6d655334 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbh.o)
+ .idata$5 0x6d655338 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00053.o)
+ 0x6d655338 _imp__CheckDlgButton@12
+ .idata$5 0x6d65533c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00146.o)
+ 0x6d65533c _imp__DialogBoxParamA@20
+ .idata$5 0x6d655340 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00179.o)
+ 0x6d655340 _imp__EnableWindow@8
+ .idata$5 0x6d655344 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00181.o)
+ 0x6d655344 _imp__EndDialog@8
+ .idata$5 0x6d655348 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00235.o)
+ 0x6d655348 _imp__GetClientRect@8
+ .idata$5 0x6d65534c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00246.o)
+ 0x6d65534c _imp__GetCursorPos@4
+ .idata$5 0x6d655350 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00247.o)
+ 0x6d655350 _imp__GetDC@4
+ .idata$5 0x6d655354 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00249.o)
+ 0x6d655354 _imp__GetDesktopWindow@0
+ .idata$5 0x6d655358 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00251.o)
+ 0x6d655358 _imp__GetDlgCtrlID@4
+ .idata$5 0x6d65535c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00252.o)
+ 0x6d65535c _imp__GetDlgItem@8
+ .idata$5 0x6d655360 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00253.o)
+ 0x6d655360 _imp__GetDlgItemInt@16
+ .idata$5 0x6d655364 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00254.o)
+ 0x6d655364 _imp__GetDlgItemTextA@16
+ .idata$5 0x6d655368 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00346.o)
+ 0x6d655368 _imp__GetWindowRect@8
+ .idata$5 0x6d65536c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00383.o)
+ 0x6d65536c _imp__IsDlgButtonChecked@8
+ .idata$5 0x6d655370 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o)
+ 0x6d655370 _imp__MessageBeep@4
+ .idata$5 0x6d655374 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00430.o)
+ 0x6d655374 _imp__MessageBoxA@16
+ .idata$5 0x6d655378 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00438.o)
+ 0x6d655378 _imp__MoveWindow@24
+ .idata$5 0x6d65537c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00482.o)
+ 0x6d65537c _imp__ReleaseCapture@0
+ .idata$5 0x6d655380 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00483.o)
+ 0x6d655380 _imp__ReleaseDC@8
+ .idata$5 0x6d655384 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00494.o)
+ 0x6d655384 _imp__SendDlgItemMessageA@20
+ .idata$5 0x6d655388 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00506.o)
+ 0x6d655388 _imp__SetCapture@4
+ .idata$5 0x6d65538c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00518.o)
+ 0x6d65538c _imp__SetDlgItemInt@16
+ .idata$5 0x6d655390 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00519.o)
+ 0x6d655390 _imp__SetDlgItemTextA@12
+ .idata$5 0x6d655394 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00522.o)
+ 0x6d655394 _imp__SetFocus@4
+ .idata$5 0x6d655398 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00574.o)
+ 0x6d655398 _imp__ShowWindow@8
+ .idata$5 0x6d65539c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbt.o)
+ SORT(*)(.idata$6)
+ .idata$6 0x6d6553a0 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o)
+ .idata$6 0x6d6553b4 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00011.o)
+ .idata$6 0x6d6553c8 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00038.o)
+ .idata$6 0x6d6553dc 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00072.o)
+ .idata$6 0x6d6553ec 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o)
+ *fill* 0x6d6553fe 0x2 00
+ .idata$6 0x6d655400 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00001.o)
+ .idata$6 0x6d65540c 0x18 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00019.o)
+ .idata$6 0x6d655424 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00038.o)
+ *fill* 0x6d655432 0x2 00
+ .idata$6 0x6d655434 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00053.o)
+ .idata$6 0x6d655440 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00068.o)
+ *fill* 0x6d65544e 0x2 00
+ .idata$6 0x6d655450 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00108.o)
+ *fill* 0x6d65545e 0x2 00
+ .idata$6 0x6d655460 0x16 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00123.o)
+ *fill* 0x6d655476 0x2 00
+ .idata$6 0x6d655478 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00175.o)
+ .idata$6 0x6d655484 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00196.o)
+ .idata$6 0x6d655494 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00208.o)
+ *fill* 0x6d6554a6 0x2 00
+ .idata$6 0x6d6554a8 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00213.o)
+ *fill* 0x6d6554b6 0x2 00
+ .idata$6 0x6d6554b8 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00220.o)
+ .idata$6 0x6d6554c8 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00311.o)
+ *fill* 0x6d6554d6 0x2 00
+ .idata$6 0x6d6554d8 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00323.o)
+ .idata$6 0x6d6554e8 0x16 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00333.o)
+ *fill* 0x6d6554fe 0x2 00
+ .idata$6 0x6d655500 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o)
+ .idata$6 0x6d655510 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00431.o)
+ .idata$6 0x6d655520 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00523.o)
+ *fill* 0x6d655532 0x2 00
+ .idata$6 0x6d655534 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00527.o)
+ .idata$6 0x6d655544 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00541.o)
+ .idata$6 0x6d655554 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00613.o)
+ .idata$6 0x6d655560 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00690.o)
+ .idata$6 0x6d655570 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00699.o)
+ *fill* 0x6d655582 0x2 00
+ .idata$6 0x6d655584 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00746.o)
+ *fill* 0x6d655596 0x2 00
+ .idata$6 0x6d655598 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00776.o)
+ *fill* 0x6d6555aa 0x2 00
+ .idata$6 0x6d6555ac 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00822.o)
+ .idata$6 0x6d6555b8 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o)
+ *fill* 0x6d6555c6 0x2 00
+ .idata$6 0x6d6555c8 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00047.o)
+ .idata$6 0x6d6555d8 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00147.o)
+ *fill* 0x6d6555e2 0x2 00
+ .idata$6 0x6d6555e4 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00176.o)
+ *fill* 0x6d6555ee 0x2 00
+ .idata$6 0x6d6555f0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00222.o)
+ .idata$6 0x6d6555f8 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00224.o)
+ .idata$6 0x6d655604 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00344.o)
+ *fill* 0x6d65560e 0x2 00
+ .idata$6 0x6d655610 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00395.o)
+ .idata$6 0x6d65561c 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00510.o)
+ .idata$6 0x6d655624 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00516.o)
+ .idata$6 0x6d65562c 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00519.o)
+ .idata$6 0x6d655634 0x6 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00526.o)
+ *fill* 0x6d65563a 0x2 00
+ .idata$6 0x6d65563c 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00531.o)
+ .idata$6 0x6d655644 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00537.o)
+ *fill* 0x6d65564e 0x2 00
+ .idata$6 0x6d655650 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00543.o)
+ .idata$6 0x6d655658 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00546.o)
+ *fill* 0x6d655662 0x2 00
+ .idata$6 0x6d655664 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00552.o)
+ .idata$6 0x6d65566c 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00554.o)
+ .idata$6 0x6d655674 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00596.o)
+ .idata$6 0x6d65567c 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00603.o)
+ *fill* 0x6d655686 0x2 00
+ .idata$6 0x6d655688 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00609.o)
+ *fill* 0x6d655692 0x2 00
+ .idata$6 0x6d655694 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00610.o)
+ *fill* 0x6d65569e 0x2 00
+ .idata$6 0x6d6556a0 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00611.o)
+ *fill* 0x6d6556aa 0x2 00
+ .idata$6 0x6d6556ac 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00616.o)
+ *fill* 0x6d6556b6 0x2 00
+ .idata$6 0x6d6556b8 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00619.o)
+ .idata$6 0x6d6556c0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00624.o)
+ .idata$6 0x6d6556c8 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00625.o)
+ *fill* 0x6d6556d2 0x2 00
+ .idata$6 0x6d6556d4 0x6 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00634.o)
+ *fill* 0x6d6556da 0x2 00
+ .idata$6 0x6d6556dc 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00636.o)
+ *fill* 0x6d6556e6 0x2 00
+ .idata$6 0x6d6556e8 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00638.o)
+ .idata$6 0x6d6556f0 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00640.o)
+ *fill* 0x6d6556fa 0x2 00
+ .idata$6 0x6d6556fc 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00642.o)
+ *fill* 0x6d655706 0x2 00
+ .idata$6 0x6d655708 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00644.o)
+ *fill* 0x6d655712 0x2 00
+ .idata$6 0x6d655714 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00648.o)
+ *fill* 0x6d65571e 0x2 00
+ .idata$6 0x6d655720 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00670.o)
+ *fill* 0x6d65572a 0x2 00
+ .idata$6 0x6d65572c 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00053.o)
+ *fill* 0x6d65573e 0x2 00
+ .idata$6 0x6d655740 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00146.o)
+ *fill* 0x6d655752 0x2 00
+ .idata$6 0x6d655754 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00179.o)
+ .idata$6 0x6d655764 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00181.o)
+ .idata$6 0x6d655770 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00235.o)
+ .idata$6 0x6d655780 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00246.o)
+ .idata$6 0x6d655790 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00247.o)
+ .idata$6 0x6d655798 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00249.o)
+ .idata$6 0x6d6557ac 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00251.o)
+ .idata$6 0x6d6557bc 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00252.o)
+ *fill* 0x6d6557ca 0x2 00
+ .idata$6 0x6d6557cc 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00253.o)
+ .idata$6 0x6d6557dc 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00254.o)
+ *fill* 0x6d6557ee 0x2 00
+ .idata$6 0x6d6557f0 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00346.o)
+ .idata$6 0x6d655800 0x16 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00383.o)
+ *fill* 0x6d655816 0x2 00
+ .idata$6 0x6d655818 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o)
+ *fill* 0x6d655826 0x2 00
+ .idata$6 0x6d655828 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00430.o)
+ *fill* 0x6d655836 0x2 00
+ .idata$6 0x6d655838 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00438.o)
+ *fill* 0x6d655846 0x2 00
+ .idata$6 0x6d655848 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00482.o)
+ *fill* 0x6d65585a 0x2 00
+ .idata$6 0x6d65585c 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00483.o)
+ .idata$6 0x6d655868 0x16 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00494.o)
+ *fill* 0x6d65587e 0x2 00
+ .idata$6 0x6d655880 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00506.o)
+ *fill* 0x6d65588e 0x2 00
+ .idata$6 0x6d655890 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00518.o)
+ .idata$6 0x6d6558a0 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00519.o)
+ *fill* 0x6d6558b2 0x2 00
+ .idata$6 0x6d6558b4 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00522.o)
+ .idata$6 0x6d6558c0 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00574.o)
+ SORT(*)(.idata$7)
+ *fill* 0x6d6558ce 0x2 00
+ .idata$7 0x6d6558d0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o)
+ .idata$7 0x6d6558d4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00011.o)
+ .idata$7 0x6d6558d8 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbt.o)
+ 0x6d6558d8 _libcomdlg32_a_iname
+ .idata$7 0x6d6558e8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00038.o)
+ .idata$7 0x6d6558ec 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00072.o)
+ .idata$7 0x6d6558f0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o)
+ .idata$7 0x6d6558f4 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbt.o)
+ 0x6d6558f4 _libgdi32_a_iname
+ .idata$7 0x6d655900 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00001.o)
+ .idata$7 0x6d655904 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00019.o)
+ .idata$7 0x6d655908 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00038.o)
+ .idata$7 0x6d65590c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00053.o)
+ .idata$7 0x6d655910 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00068.o)
+ .idata$7 0x6d655914 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00108.o)
+ .idata$7 0x6d655918 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00123.o)
+ .idata$7 0x6d65591c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00175.o)
+ .idata$7 0x6d655920 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00196.o)
+ .idata$7 0x6d655924 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00208.o)
+ .idata$7 0x6d655928 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00213.o)
+ .idata$7 0x6d65592c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00220.o)
+ .idata$7 0x6d655930 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00311.o)
+ .idata$7 0x6d655934 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00323.o)
+ .idata$7 0x6d655938 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00333.o)
+ .idata$7 0x6d65593c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o)
+ .idata$7 0x6d655940 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00431.o)
+ .idata$7 0x6d655944 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00523.o)
+ .idata$7 0x6d655948 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00527.o)
+ .idata$7 0x6d65594c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00541.o)
+ .idata$7 0x6d655950 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00613.o)
+ .idata$7 0x6d655954 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00690.o)
+ .idata$7 0x6d655958 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00699.o)
+ .idata$7 0x6d65595c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00746.o)
+ .idata$7 0x6d655960 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00776.o)
+ .idata$7 0x6d655964 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00822.o)
+ .idata$7 0x6d655968 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbt.o)
+ 0x6d655968 _libkernel32_a_iname
+ .idata$7 0x6d655978 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o)
+ .idata$7 0x6d65597c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00047.o)
+ .idata$7 0x6d655980 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00147.o)
+ .idata$7 0x6d655984 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00176.o)
+ .idata$7 0x6d655988 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00222.o)
+ .idata$7 0x6d65598c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00224.o)
+ .idata$7 0x6d655990 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00344.o)
+ .idata$7 0x6d655994 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00395.o)
+ .idata$7 0x6d655998 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00510.o)
+ .idata$7 0x6d65599c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00516.o)
+ .idata$7 0x6d6559a0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00519.o)
+ .idata$7 0x6d6559a4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00526.o)
+ .idata$7 0x6d6559a8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00531.o)
+ .idata$7 0x6d6559ac 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00537.o)
+ .idata$7 0x6d6559b0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00543.o)
+ .idata$7 0x6d6559b4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00546.o)
+ .idata$7 0x6d6559b8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00552.o)
+ .idata$7 0x6d6559bc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00554.o)
+ .idata$7 0x6d6559c0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00596.o)
+ .idata$7 0x6d6559c4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00603.o)
+ .idata$7 0x6d6559c8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00609.o)
+ .idata$7 0x6d6559cc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00610.o)
+ .idata$7 0x6d6559d0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00611.o)
+ .idata$7 0x6d6559d4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00616.o)
+ .idata$7 0x6d6559d8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00619.o)
+ .idata$7 0x6d6559dc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00624.o)
+ .idata$7 0x6d6559e0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00625.o)
+ .idata$7 0x6d6559e4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00634.o)
+ .idata$7 0x6d6559e8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00636.o)
+ .idata$7 0x6d6559ec 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00638.o)
+ .idata$7 0x6d6559f0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00640.o)
+ .idata$7 0x6d6559f4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00642.o)
+ .idata$7 0x6d6559f8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00644.o)
+ .idata$7 0x6d6559fc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00648.o)
+ .idata$7 0x6d655a00 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00670.o)
+ .idata$7 0x6d655a04 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznct.o)
+ 0x6d655a04 _libmsvcrt_a_iname
+ .idata$7 0x6d655a10 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00053.o)
+ .idata$7 0x6d655a14 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00146.o)
+ .idata$7 0x6d655a18 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00179.o)
+ .idata$7 0x6d655a1c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00181.o)
+ .idata$7 0x6d655a20 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00235.o)
+ .idata$7 0x6d655a24 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00246.o)
+ .idata$7 0x6d655a28 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00247.o)
+ .idata$7 0x6d655a2c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00249.o)
+ .idata$7 0x6d655a30 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00251.o)
+ .idata$7 0x6d655a34 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00252.o)
+ .idata$7 0x6d655a38 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00253.o)
+ .idata$7 0x6d655a3c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00254.o)
+ .idata$7 0x6d655a40 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00346.o)
+ .idata$7 0x6d655a44 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00383.o)
+ .idata$7 0x6d655a48 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o)
+ .idata$7 0x6d655a4c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00430.o)
+ .idata$7 0x6d655a50 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00438.o)
+ .idata$7 0x6d655a54 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00482.o)
+ .idata$7 0x6d655a58 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00483.o)
+ .idata$7 0x6d655a5c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00494.o)
+ .idata$7 0x6d655a60 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00506.o)
+ .idata$7 0x6d655a64 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00518.o)
+ .idata$7 0x6d655a68 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00519.o)
+ .idata$7 0x6d655a6c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00522.o)
+ .idata$7 0x6d655a70 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00574.o)
+ .idata$7 0x6d655a74 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbt.o)
+ 0x6d655a74 _libuser32_a_iname
+
+.CRT
+ *(SORT(.CRT$*))
+
+.endjunk 0x6d656000 0x0
+ 0x6d656000 PROVIDE (end, .)
+ 0x6d656000 PROVIDE (_end, .)
+ 0x6d656000 __end__ = .
+
+.rsrc 0x6d656000 0x2800
+ *(.rsrc)
+ .rsrc 0x6d656000 0x270c res.o
+ *(SORT(.rsrc$*))
+
+.reloc 0x6d659000 0xe00
+ *(.reloc)
+ .reloc 0x6d659000 0xc78 dll stuff
+
+.stab
+ *(.stab)
+
+.stabstr
+ *(.stabstr)
+OUTPUT(dist/FilterFoundry.8bf pei-i386)
+LOAD dll stuff
+Archive member included because of file (symbol)
+
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(gccmain.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (__main)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(pseudo-reloc.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (_pei386_runtime_relocator)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(pseudo-reloc-list.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(pseudo-reloc.o) (__RUNTIME_PSEUDO_RELOC_LIST_END__)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/crtbegin.o (__w32_sharedptr_initialize)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(_chkstk.o)
+ parser.o (_alloca)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(_ctors.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(gccmain.o) (__CTOR_LIST__)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o)
+ node.o (pow)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(fp_consts.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (__QNAN)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(powi.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (__powi)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(signbit.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (__signbit)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(fpclassify.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (__fpclassify)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(isnan.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (__isnan)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (__dllonexit)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00537.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (fflush)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00552.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (free)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00147.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (_errno)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00603.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (malloc)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00640.o)
+ ui_win.o (strcat)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00636.o)
+ ui_win.o (sprintf)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00648.o)
+ ui.o (strlen)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00644.o)
+ ui_build.o (strcpy)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00611.o)
+ preview.o (memset)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00638.o)
+ preview.o (srand)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00609.o)
+ read.o (memcpy)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00519.o)
+ read.o (atoi)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00222.o)
+ lexer.o (_imp___iob)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00625.o)
+ lexer.o (realloc)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00531.o)
+ lexer.o (exit)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00546.o)
+ lexer.o (fprintf)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00670.o)
+ lexer.o (toupper)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00047.o)
+ node.o (_imp____mb_cur_max)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00344.o)
+ node.o (_imp___pctype)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00616.o)
+ node.o (printf)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00619.o)
+ node.o (puts)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00224.o)
+ node.o (_isctype)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00176.o)
+ node.o (_flsbuf)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00642.o)
+ symtab.o (strcmp)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00516.o)
+ funcs.o (atan2)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00634.o)
+ funcs.o (sin)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00526.o)
+ funcs.o (cos)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00624.o)
+ funcs.o (rand)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00395.o)
+ load_win.o (_stricmp)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00610.o)
+ ../common/tt/str.o (memmove)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00510.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o) (abort)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00543.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (floor)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00596.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (ldexp)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00554.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (frexp)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznch.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o) (_head_libmsvcrt_a)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznct.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznch.o) (_libmsvcrt_a_iname)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o)
+ ui_win.o (GetStockObject@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00038.o)
+ ../common/tt/ui_compat_win.o (CreateDIBSection@24)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00072.o)
+ ../common/tt/ui_compat_win.o (DeleteObject@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbh.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o) (_head_libgdi32_a)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbt.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbh.o) (_libgdi32_a_iname)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o)
+ ../common/tt/choosefile_win.o (GetOpenFileNameA@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00011.o)
+ ../common/tt/choosefile_win.o (GetSaveFileNameA@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbh.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o) (_head_libcomdlg32_a)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbt.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbh.o) (_libcomdlg32_a_iname)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o)
+ main.o (MessageBeep@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00430.o)
+ ui_win.o (MessageBoxA@16)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00252.o)
+ ui_win.o (GetDlgItem@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00235.o)
+ ui_win.o (GetClientRect@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00494.o)
+ ui_win.o (SendDlgItemMessageA@20)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00251.o)
+ ui_win.o (GetDlgCtrlID@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00482.o)
+ ui_win.o (ReleaseCapture@0)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00246.o)
+ ui_win.o (GetCursorPos@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00181.o)
+ ui_win.o (EndDialog@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00506.o)
+ ui_win.o (SetCapture@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00146.o)
+ ui_win.o (DialogBoxParamA@20)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00518.o)
+ ui.o (SetDlgItemInt@16)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00519.o)
+ ui.o (SetDlgItemTextA@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00522.o)
+ ui.o (SetFocus@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00254.o)
+ ui.o (GetDlgItemTextA@16)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00574.o)
+ ui.o (ShowWindow@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00253.o)
+ ui.o (GetDlgItemInt@16)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00179.o)
+ ui.o (EnableWindow@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00053.o)
+ ui_build.o (CheckDlgButton@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00383.o)
+ ui_build.o (IsDlgButtonChecked@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00247.o)
+ preview.o (GetDC@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00483.o)
+ preview.o (ReleaseDC@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00249.o)
+ ../common/tt/ui_compat_win.o (GetDesktopWindow@0)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00346.o)
+ ../common/tt/ui_compat_win.o (GetWindowRect@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00438.o)
+ ../common/tt/ui_compat_win.o (MoveWindow@24)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbh.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o) (_head_libuser32_a)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbt.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbh.o) (_libuser32_a_iname)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o)
+ process.o (GetTickCount@0)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00196.o)
+ load_win.o (FindResourceA@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00527.o)
+ load_win.o (LoadResource@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00541.o)
+ load_win.o (LockResource@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00523.o)
+ load_win.o (LoadLibraryExA@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00213.o)
+ load_win.o (FreeLibrary@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00323.o)
+ make_win.o (GetLastError@0)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00208.o)
+ make_win.o (FormatMessageA@28)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00019.o)
+ make_win.o (BeginUpdateResourceA@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00746.o)
+ make_win.o (SizeofResource@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00776.o)
+ make_win.o (UpdateResourceA@24)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00123.o)
+ make_win.o (EndUpdateResourceA@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00333.o)
+ make_win.o (GetModuleFileNameA@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00053.o)
+ make_win.o (CopyFileA@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00038.o)
+ ../common/tt/file_compat_win.o (CloseHandle@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00822.o)
+ ../common/tt/file_compat_win.o (WriteFile@20)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00613.o)
+ ../common/tt/file_compat_win.o (ReadFile@20)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00068.o)
+ ../common/tt/file_compat_win.o (CreateFileA@28)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00108.o)
+ ../common/tt/file_compat_win.o (DeleteFileA@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00699.o)
+ ../common/tt/file_compat_win.o (SetFilePointer@16)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00311.o)
+ ../common/tt/file_compat_win.o (GetFileSize@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00690.o)
+ ../common/tt/file_compat_win.o (SetEndOfFile@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00431.o)
+ ../common/tt/compat_win.o (GetVersionExA@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00175.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o) (FindAtomA@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00001.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o) (AddAtomA@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00220.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o) (GetAtomNameA@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbh.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o) (_head_libkernel32_a)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbt.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbh.o) (_libkernel32_a_iname)
+
+Allocating common symbols
+Common symbol size file
+
+varused 0x400 node.o
+__DTOR_LIST__ 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(_ctors.o)
+__w32_sharedptr_terminate
+ 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+ctls 0x20 ui_build.o
+yychar 0x10 parser.o
+map 0x1000 main.o
+preview_hwnd 0x10 ui_win.o
+errstart 0x10 main.o
+cell 0x400 main.o
+preview_rect 0x10 preview.o
+needinput 0x10 process.o
+maps 0x10 ui_build.o
+errstr 0x10 parser.o
+zoomfactor 0x10 ui.o
+inarglist 0x190 parser.o
+hash_table 0x200 symtab.o
+var 0x400 node.o
+srcradused 0x10 main.o
+arglistptr 0x10 parser.o
+gpb 0x10 main.o
+__w32_sharedptr 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+errpos 0x10 main.o
+tokstart 0x10 lexer.o
+err 0x10 main.o
+preview_handle 0x10 preview.o
+node_list 0x10 node.o
+yyleng 0x10 lexer.o
+__CTOR_LIST__ 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(_ctors.o)
+fitzoom 0x10 ui.o
+preview_h 0x10 preview.o
+gdata 0x10 main.o
+parsetree 0x10 parser.o
+yynerrs 0x10 parser.o
+preview_w 0x10 preview.o
+preview_pmap 0x40 preview.o
+yylval 0x10 parser.o
+tokpos 0x10 lexer.o
+expr 0x10 main.o
+__w32_sharedptr_unexpected
+ 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+preview_scroll 0x10 preview.o
+chunksize 0x10 main.o
+preview_pmask 0x20 preview.o
+nplanes 0x10 main.o
+allocs 0x10 node.o
+toprow 0x10 main.o
+event_id 0x10 make.o
+yytext 0x10 lexer.o
+slider 0x20 main.o
+tree 0x10 main.o
+
+Memory Configuration
+
+Name Origin Length Attributes
+*default* 0x00000000 0xffffffff
+
+Linker script and memory map
+
+ 0x6d640000 __image_base__ = 0x6d640000
+ 0x00000001 __dll__ = 0x1
+ 0x00001000 __section_alignment__ = 0x1000
+ 0x00000200 __file_alignment__ = 0x200
+ 0x00000004 __major_os_version__ = 0x4
+ 0x00000000 __minor_os_version__ = 0x0
+ 0x00000001 __major_image_version__ = 0x1
+ 0x00000000 __minor_image_version__ = 0x0
+ 0x00000004 __major_subsystem_version__ = 0x4
+ 0x00000000 __minor_subsystem_version__ = 0x0
+ 0x00000002 __subsystem__ = 0x2
+ 0x00200000 __size_of_stack_reserve__ = 0x200000
+ 0x00001000 __size_of_stack_commit__ = 0x1000
+ 0x00100000 __size_of_heap_reserve__ = 0x100000
+ 0x00001000 __size_of_heap_commit__ = 0x1000
+ 0x00000000 __loader_flags__ = 0x0
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/crtbegin.o
+LOAD FilterFoundry.exp
+LOAD main.o
+LOAD ui_win.o
+LOAD ui.o
+LOAD ui_build.o
+LOAD ui_build_win.o
+LOAD preview.o
+LOAD read.o
+LOAD save.o
+LOAD parser.o
+LOAD lexer.o
+LOAD node.o
+LOAD symtab.o
+LOAD funcs.o
+LOAD trigtab.o
+LOAD process.o
+LOAD load_win.o
+LOAD make_win.o
+LOAD make.o
+LOAD scripting.o
+LOAD ../common/tt/str.o
+LOAD ../common/tt/sprintf_tiny.o
+LOAD ../common/tt/ui_compat_win.o
+LOAD ../common/tt/file_compat_win.o
+LOAD ../common/tt/choosefile_win.o
+LOAD ../common/tt/compat_string.o
+LOAD ../common/tt/compat_win.o
+LOAD ../common/tt/dbg_win.o
+LOAD ../common/adobeplugin/dllmain.o
+LOAD res.o
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmoldname.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libadvapi32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libshell32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmoldname.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/crtend.o
+
+.text 0x6d641000 0xd200
+ *(.init)
+ *(.text)
+ .text 0x6d641000 0x160 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o
+ 0x6d641100 atexit
+ 0x6d641130 _onexit
+ 0x6d641000 DllMainCRTStartup@12
+ .text 0x6d641160 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/crtbegin.o
+ 0x6d641160 __do_sjlj_init
+ .text 0x6d641170 0x580 main.o
+ 0x6d641180 PluginMain
+ 0x6d641550 DoStart
+ 0x6d6414d0 RequestNext
+ 0x6d641340 checkandinitparams
+ 0x6d6415a0 DoContinue
+ 0x6d641690 DoFinish
+ 0x6d641480 DoPrepare
+ .text 0x6d6416f0 0x760 ui_win.o
+ 0x6d641df0 maindialog
+ 0x6d6419d0 simplealert
+ 0x6d641a10 maindlgproc@16
+ 0x6d6418c0 DoAbout
+ .text 0x6d641e50 0x1300 ui.o
+ 0x6d642390 checksl
+ 0x6d6426e0 maindlgupdate
+ 0x6d642930 maindlginit
+ 0x6d642140 updateexpr
+ 0x6d642060 updateglobals
+ 0x6d642cc0 maindlgitem
+ 0x6d6425a0 slidermoved
+ 0x6d6430c0 alertuser
+ 0x6d642610 slidertextchanged
+ 0x6d642270 updatezoom
+ 0x6d642510 checksliders
+ 0x6d641e70 updatedialog
+ .text 0x6d643150 0x750 ui_build.o
+ 0x6d6435f0 builddlgitem
+ 0x6d643180 builddlginit
+ .text 0x6d6438a0 0xd0 ui_build_win.o
+ 0x6d6438a0 builddlgproc@16
+ 0x6d643920 builddialog
+ .text 0x6d643970 0xa20 preview.o
+ 0x6d643ad0 dispose_preview
+ 0x6d643970 setup_preview
+ 0x6d6441e0 drawpreview
+ 0x6d643b90 recalc_preview
+ .text 0x6d644390 0x6a0 read.o
+ 0x6d6447a0 readPARM
+ 0x6d644980 readfile
+ 0x6d6444c0 readparams
+ 0x6d6448b0 readfileintohandle
+ .text 0x6d644a30 0x500 save.o
+ 0x6d644d50 savehandleintofile
+ 0x6d644af0 saveparams
+ 0x6d644a30 putstr
+ 0x6d644e20 savefile
+ .text 0x6d644f30 0x1cc0 parser.o
+ 0x6d644f60 pushflag
+ 0x6d646480 yyparse
+ 0x6d646b60 parseexpr
+ 0x6d646bd0 yyerror
+ .text 0x6d646bf0 0x15a0 lexer.o
+ 0x6d647ec0 yy_create_buffer
+ 0x6d647e80 yy_load_buffer_state
+ 0x6d647e20 yy_switch_to_buffer
+ 0x6d647dd0 yyrestart
+ 0x6d647ff0 yy_scan_buffer
+ 0x6d647fa0 yy_flush_buffer
+ 0x6d6480b0 yy_scan_bytes
+ 0x6d647f10 yy_delete_buffer
+ 0x6d648080 yy_scan_string
+ 0x6d647f70 yy_init_buffer
+ 0x6d6472b0 yylex
+ .text 0x6d648190 0xd20 node.o
+ 0x6d648190 newnode
+ 0x6d648dd0 freetree
+ 0x6d648480 eval
+ 0x6d6481d0 freenodes
+ 0x6d648210 freeallnodes
+ 0x6d648e20 checkvars
+ 0x6d6482e0 dumptree
+ .text 0x6d648eb0 0x2a0 symtab.o
+ 0x6d648eb0 djb2
+ 0x6d649120 insert
+ 0x6d648f20 init_symtab
+ 0x6d6490c0 lookup
+ 0x6d649000 dump_symbols
+ .text 0x6d649150 0x7d0 funcs.o
+ 0x6d649530 ff_sqr
+ 0x6d649300 ff_min
+ 0x6d649230 ff_ctl
+ 0x6d6494a0 ff_scl
+ 0x6d649450 ff_mix
+ 0x6d6493b0 ff_dif
+ 0x6d6495a0 ff_tan
+ 0x6d649740 ff_put
+ 0x6d649320 ff_max
+ 0x6d649700 ff_c2m
+ 0x6d649380 ff_sub
+ 0x6d649360 ff_add
+ 0x6d649760 ff_cnv
+ 0x6d6492a0 ff_map
+ 0x6d649150 ff_src
+ 0x6d6493d0 ff_rnd
+ 0x6d649550 ff_sin
+ 0x6d649250 ff_val
+ 0x6d6495e0 ff_r2x
+ 0x6d649340 ff_abs
+ 0x6d6496a0 ff_c2d
+ 0x6d6491d0 ff_rad
+ 0x6d649640 ff_r2y
+ 0x6d649720 ff_get
+ 0x6d6494f0 isqrt
+ 0x6d649560 ff_cos
+ .text 0x6d649920 0x7a0 process.o
+ 0x6d649cd0 process
+ 0x6d649f00 process_scaled
+ 0x6d649920 setup
+ 0x6d649a70 evalpixel
+ .text 0x6d64a0c0 0x280 load_win.o
+ 0x6d64a0d0 readPARMresource
+ 0x6d64a220 loadfile
+ .text 0x6d64a340 0x6e0 make_win.o
+ 0x6d64a970 make_standalone
+ 0x6d64a470 doresources
+ 0x6d64a350 dbglasterror
+ .text 0x6d64aa20 0x2e0 make.o
+ 0x6d64ac10 fixaete
+ 0x6d64aa20 printablehash
+ 0x6d64aad0 fixpipl
+ .text 0x6d64ad00 0x5d0 scripting.o
+ 0x6d64ae50 ReadScriptParamsOnRead
+ 0x6d64b150 HostDescriptorAvailable
+ 0x6d64aff0 WriteScriptParamsOnRead
+ 0x6d64b270 HostCloseWriter
+ 0x6d64ad90 get_cstring
+ 0x6d64b220 HostCloseReader
+ 0x6d64ad00 put_cstring
+ .text 0x6d64b2d0 0x270 ../common/tt/str.o
+ 0x6d64b440 my_strdup
+ 0x6d64b490 PLcstrcpy
+ 0x6d64b3e0 cat
+ 0x6d64b4e0 PLcstrcat
+ 0x6d64b410 my_memset
+ 0x6d64b390 myc2pstrcpy
+ 0x6d64b350 myp2cstrcpy
+ 0x6d64b2d0 myc2pstr
+ 0x6d64b310 myp2cstr
+ .text 0x6d64b540 0x3e0 ../common/tt/sprintf_tiny.o
+ 0x6d64b720 vsprintf_tiny
+ 0x6d64b5e0 int_str
+ 0x6d64b540 int_exp
+ 0x6d64b8f0 sprintf_tiny
+ 0x6d64b590 udigits
+ 0x6d64b670 float_str
+ 0x6d64b620 int_strpad
+ .text 0x6d64b920 0x230 ../common/tt/ui_compat_win.o
+ 0x6d64b940 newbitmap
+ 0x6d64ba40 disposebitmap
+ 0x6d64ba80 centre_window
+ .text 0x6d64bb50 0x330 ../common/tt/file_compat_win.o
+ 0x6d64bd30 FSpDelete
+ 0x6d64bc30 FSpOpenDF
+ 0x6d64be30 SetEOF
+ 0x6d64be00 GetEOF
+ 0x6d64bdb0 SetFPos
+ 0x6d64bcb0 FSpCreate
+ 0x6d64bd70 GetFPos
+ 0x6d64bbd0 FSRead
+ 0x6d64bb80 FSWrite
+ 0x6d64bb50 FSClose
+ .text 0x6d64be80 0x220 ../common/tt/choosefile_win.o
+ 0x6d64c090 completesave
+ 0x6d64be80 choosefiletypes
+ 0x6d64bfa0 putfile
+ 0x6d64bec0 choosefile
+ .text 0x6d64c0a0 0x170 ../common/tt/compat_string.o
+ 0x6d64c160 PLstrcmp
+ 0x6d64c1d0 NumToString
+ 0x6d64c120 PLstrrchr
+ 0x6d64c0a0 PLstrcpy
+ 0x6d64c0d0 PLstrcat
+ .text 0x6d64c210 0x50 ../common/tt/compat_win.o
+ 0x6d64c210 isWin32NT
+ .text 0x6d64c260 0x40 ../common/tt/dbg_win.o
+ 0x6d64c270 dbg
+ .text 0x6d64c2a0 0x20 ../common/adobeplugin/dllmain.o
+ 0x6d64c2a0 DllMain@12
+ .text 0x6d64c2c0 0xb0 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(gccmain.o)
+ 0x6d64c350 __main
+ 0x6d64c2c0 __do_global_dtors
+ 0x6d64c2f0 __do_global_ctors
+ .text 0x6d64c370 0x70 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(pseudo-reloc.o)
+ 0x6d64c3b0 _pei386_runtime_relocator
+ .text 0x6d64c3e0 0x320 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+ 0x6d64c4a0 __w32_sharedptr_initialize
+ .text 0x6d64c700 0x30 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(_chkstk.o)
+ 0x6d64c700 __chkstk
+ 0x6d64c700 _alloca
+ .text 0x6d64c730 0xfc0 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o)
+ 0x6d64c940 pow
+ .text 0x6d64d6f0 0x50 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(fp_consts.o)
+ 0x6d64d6f0 __QNAN
+ 0x6d64d730 nan
+ 0x6d64d700 __SNAN
+ 0x6d64d720 __DENORM
+ 0x6d64d710 __INF
+ .text 0x6d64d740 0x300 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(powi.o)
+ 0x6d64d780 __powi
+ .text 0x6d64da40 0x30 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(signbit.o)
+ 0x6d64da40 __signbit
+ 0x6d64da40 signbit
+ .text 0x6d64da70 0x30 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(fpclassify.o)
+ 0x6d64da70 __fpclassify
+ .text 0x6d64daa0 0x50 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(isnan.o)
+ 0x6d64daa0 isnan
+ 0x6d64daa0 __isnan
+ .text 0x6d64daf0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o)
+ 0x6d64daf0 __dllonexit
+ *fill* 0x6d64daf8 0x8 00
+ .text 0x6d64db00 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00537.o)
+ 0x6d64db00 fflush
+ *fill* 0x6d64db08 0x8 00
+ .text 0x6d64db10 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00552.o)
+ 0x6d64db10 free
+ *fill* 0x6d64db18 0x8 00
+ .text 0x6d64db20 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00147.o)
+ 0x6d64db20 _errno
+ *fill* 0x6d64db28 0x8 00
+ .text 0x6d64db30 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00603.o)
+ 0x6d64db30 malloc
+ *fill* 0x6d64db38 0x8 00
+ .text 0x6d64db40 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00640.o)
+ 0x6d64db40 strcat
+ *fill* 0x6d64db48 0x8 00
+ .text 0x6d64db50 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00636.o)
+ 0x6d64db50 sprintf
+ *fill* 0x6d64db58 0x8 00
+ .text 0x6d64db60 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00648.o)
+ 0x6d64db60 strlen
+ *fill* 0x6d64db68 0x8 00
+ .text 0x6d64db70 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00644.o)
+ 0x6d64db70 strcpy
+ *fill* 0x6d64db78 0x8 00
+ .text 0x6d64db80 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00611.o)
+ 0x6d64db80 memset
+ *fill* 0x6d64db88 0x8 00
+ .text 0x6d64db90 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00638.o)
+ 0x6d64db90 srand
+ *fill* 0x6d64db98 0x8 00
+ .text 0x6d64dba0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00609.o)
+ 0x6d64dba0 memcpy
+ *fill* 0x6d64dba8 0x8 00
+ .text 0x6d64dbb0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00519.o)
+ 0x6d64dbb0 atoi
+ *fill* 0x6d64dbb8 0x8 00
+ .text 0x6d64dbc0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00625.o)
+ 0x6d64dbc0 realloc
+ *fill* 0x6d64dbc8 0x8 00
+ .text 0x6d64dbd0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00531.o)
+ 0x6d64dbd0 exit
+ *fill* 0x6d64dbd8 0x8 00
+ .text 0x6d64dbe0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00546.o)
+ 0x6d64dbe0 fprintf
+ *fill* 0x6d64dbe8 0x8 00
+ .text 0x6d64dbf0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00670.o)
+ 0x6d64dbf0 toupper
+ *fill* 0x6d64dbf8 0x8 00
+ .text 0x6d64dc00 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00616.o)
+ 0x6d64dc00 printf
+ *fill* 0x6d64dc08 0x8 00
+ .text 0x6d64dc10 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00619.o)
+ 0x6d64dc10 puts
+ *fill* 0x6d64dc18 0x8 00
+ .text 0x6d64dc20 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00224.o)
+ 0x6d64dc20 _isctype
+ *fill* 0x6d64dc28 0x8 00
+ .text 0x6d64dc30 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00176.o)
+ 0x6d64dc30 _flsbuf
+ *fill* 0x6d64dc38 0x8 00
+ .text 0x6d64dc40 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00642.o)
+ 0x6d64dc40 strcmp
+ *fill* 0x6d64dc48 0x8 00
+ .text 0x6d64dc50 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00516.o)
+ 0x6d64dc50 atan2
+ *fill* 0x6d64dc58 0x8 00
+ .text 0x6d64dc60 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00634.o)
+ 0x6d64dc60 sin
+ *fill* 0x6d64dc68 0x8 00
+ .text 0x6d64dc70 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00526.o)
+ 0x6d64dc70 cos
+ *fill* 0x6d64dc78 0x8 00
+ .text 0x6d64dc80 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00624.o)
+ 0x6d64dc80 rand
+ *fill* 0x6d64dc88 0x8 00
+ .text 0x6d64dc90 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00395.o)
+ 0x6d64dc90 _stricmp
+ *fill* 0x6d64dc98 0x8 00
+ .text 0x6d64dca0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00610.o)
+ 0x6d64dca0 memmove
+ *fill* 0x6d64dca8 0x8 00
+ .text 0x6d64dcb0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00510.o)
+ 0x6d64dcb0 abort
+ *fill* 0x6d64dcb8 0x8 00
+ .text 0x6d64dcc0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00543.o)
+ 0x6d64dcc0 floor
+ *fill* 0x6d64dcc8 0x8 00
+ .text 0x6d64dcd0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00596.o)
+ 0x6d64dcd0 ldexp
+ *fill* 0x6d64dcd8 0x8 00
+ .text 0x6d64dce0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00554.o)
+ 0x6d64dce0 frexp
+ *fill* 0x6d64dce8 0x8 00
+ .text 0x6d64dcf0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o)
+ 0x6d64dcf0 GetStockObject@4
+ *fill* 0x6d64dcf8 0x8 00
+ .text 0x6d64dd00 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00038.o)
+ 0x6d64dd00 CreateDIBSection@24
+ *fill* 0x6d64dd08 0x8 00
+ .text 0x6d64dd10 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00072.o)
+ 0x6d64dd10 DeleteObject@4
+ *fill* 0x6d64dd18 0x8 00
+ .text 0x6d64dd20 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o)
+ 0x6d64dd20 GetOpenFileNameA@4
+ *fill* 0x6d64dd28 0x8 00
+ .text 0x6d64dd30 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00011.o)
+ 0x6d64dd30 GetSaveFileNameA@4
+ *fill* 0x6d64dd38 0x8 00
+ .text 0x6d64dd40 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o)
+ 0x6d64dd40 MessageBeep@4
+ *fill* 0x6d64dd48 0x8 00
+ .text 0x6d64dd50 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00430.o)
+ 0x6d64dd50 MessageBoxA@16
+ *fill* 0x6d64dd58 0x8 00
+ .text 0x6d64dd60 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00252.o)
+ 0x6d64dd60 GetDlgItem@8
+ *fill* 0x6d64dd68 0x8 00
+ .text 0x6d64dd70 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00235.o)
+ 0x6d64dd70 GetClientRect@8
+ *fill* 0x6d64dd78 0x8 00
+ .text 0x6d64dd80 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00494.o)
+ 0x6d64dd80 SendDlgItemMessageA@20
+ *fill* 0x6d64dd88 0x8 00
+ .text 0x6d64dd90 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00251.o)
+ 0x6d64dd90 GetDlgCtrlID@4
+ *fill* 0x6d64dd98 0x8 00
+ .text 0x6d64dda0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00482.o)
+ 0x6d64dda0 ReleaseCapture@0
+ *fill* 0x6d64dda8 0x8 00
+ .text 0x6d64ddb0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00246.o)
+ 0x6d64ddb0 GetCursorPos@4
+ *fill* 0x6d64ddb8 0x8 00
+ .text 0x6d64ddc0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00181.o)
+ 0x6d64ddc0 EndDialog@8
+ *fill* 0x6d64ddc8 0x8 00
+ .text 0x6d64ddd0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00506.o)
+ 0x6d64ddd0 SetCapture@4
+ *fill* 0x6d64ddd8 0x8 00
+ .text 0x6d64dde0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00146.o)
+ 0x6d64dde0 DialogBoxParamA@20
+ *fill* 0x6d64dde8 0x8 00
+ .text 0x6d64ddf0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00518.o)
+ 0x6d64ddf0 SetDlgItemInt@16
+ *fill* 0x6d64ddf8 0x8 00
+ .text 0x6d64de00 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00519.o)
+ 0x6d64de00 SetDlgItemTextA@12
+ *fill* 0x6d64de08 0x8 00
+ .text 0x6d64de10 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00522.o)
+ 0x6d64de10 SetFocus@4
+ *fill* 0x6d64de18 0x8 00
+ .text 0x6d64de20 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00254.o)
+ 0x6d64de20 GetDlgItemTextA@16
+ *fill* 0x6d64de28 0x8 00
+ .text 0x6d64de30 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00574.o)
+ 0x6d64de30 ShowWindow@8
+ *fill* 0x6d64de38 0x8 00
+ .text 0x6d64de40 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00253.o)
+ 0x6d64de40 GetDlgItemInt@16
+ *fill* 0x6d64de48 0x8 00
+ .text 0x6d64de50 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00179.o)
+ 0x6d64de50 EnableWindow@8
+ *fill* 0x6d64de58 0x8 00
+ .text 0x6d64de60 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00053.o)
+ 0x6d64de60 CheckDlgButton@12
+ *fill* 0x6d64de68 0x8 00
+ .text 0x6d64de70 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00383.o)
+ 0x6d64de70 IsDlgButtonChecked@8
+ *fill* 0x6d64de78 0x8 00
+ .text 0x6d64de80 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00247.o)
+ 0x6d64de80 GetDC@4
+ *fill* 0x6d64de88 0x8 00
+ .text 0x6d64de90 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00483.o)
+ 0x6d64de90 ReleaseDC@8
+ *fill* 0x6d64de98 0x8 00
+ .text 0x6d64dea0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00249.o)
+ 0x6d64dea0 GetDesktopWindow@0
+ *fill* 0x6d64dea8 0x8 00
+ .text 0x6d64deb0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00346.o)
+ 0x6d64deb0 GetWindowRect@8
+ *fill* 0x6d64deb8 0x8 00
+ .text 0x6d64dec0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00438.o)
+ 0x6d64dec0 MoveWindow@24
+ *fill* 0x6d64dec8 0x8 00
+ .text 0x6d64ded0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o)
+ 0x6d64ded0 GetTickCount@0
+ *fill* 0x6d64ded8 0x8 00
+ .text 0x6d64dee0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00196.o)
+ 0x6d64dee0 FindResourceA@12
+ *fill* 0x6d64dee8 0x8 00
+ .text 0x6d64def0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00527.o)
+ 0x6d64def0 LoadResource@8
+ *fill* 0x6d64def8 0x8 00
+ .text 0x6d64df00 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00541.o)
+ 0x6d64df00 LockResource@4
+ *fill* 0x6d64df08 0x8 00
+ .text 0x6d64df10 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00523.o)
+ 0x6d64df10 LoadLibraryExA@12
+ *fill* 0x6d64df18 0x8 00
+ .text 0x6d64df20 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00213.o)
+ 0x6d64df20 FreeLibrary@4
+ *fill* 0x6d64df28 0x8 00
+ .text 0x6d64df30 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00323.o)
+ 0x6d64df30 GetLastError@0
+ *fill* 0x6d64df38 0x8 00
+ .text 0x6d64df40 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00208.o)
+ 0x6d64df40 FormatMessageA@28
+ *fill* 0x6d64df48 0x8 00
+ .text 0x6d64df50 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00019.o)
+ 0x6d64df50 BeginUpdateResourceA@8
+ *fill* 0x6d64df58 0x8 00
+ .text 0x6d64df60 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00746.o)
+ 0x6d64df60 SizeofResource@8
+ *fill* 0x6d64df68 0x8 00
+ .text 0x6d64df70 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00776.o)
+ 0x6d64df70 UpdateResourceA@24
+ *fill* 0x6d64df78 0x8 00
+ .text 0x6d64df80 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00123.o)
+ 0x6d64df80 EndUpdateResourceA@8
+ *fill* 0x6d64df88 0x8 00
+ .text 0x6d64df90 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00333.o)
+ 0x6d64df90 GetModuleFileNameA@12
+ *fill* 0x6d64df98 0x8 00
+ .text 0x6d64dfa0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00053.o)
+ 0x6d64dfa0 CopyFileA@12
+ *fill* 0x6d64dfa8 0x8 00
+ .text 0x6d64dfb0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00038.o)
+ 0x6d64dfb0 CloseHandle@4
+ *fill* 0x6d64dfb8 0x8 00
+ .text 0x6d64dfc0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00822.o)
+ 0x6d64dfc0 WriteFile@20
+ *fill* 0x6d64dfc8 0x8 00
+ .text 0x6d64dfd0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00613.o)
+ 0x6d64dfd0 ReadFile@20
+ *fill* 0x6d64dfd8 0x8 00
+ .text 0x6d64dfe0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00068.o)
+ 0x6d64dfe0 CreateFileA@28
+ *fill* 0x6d64dfe8 0x8 00
+ .text 0x6d64dff0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00108.o)
+ 0x6d64dff0 DeleteFileA@4
+ *fill* 0x6d64dff8 0x8 00
+ .text 0x6d64e000 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00699.o)
+ 0x6d64e000 SetFilePointer@16
+ *fill* 0x6d64e008 0x8 00
+ .text 0x6d64e010 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00311.o)
+ 0x6d64e010 GetFileSize@8
+ *fill* 0x6d64e018 0x8 00
+ .text 0x6d64e020 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00690.o)
+ 0x6d64e020 SetEndOfFile@4
+ *fill* 0x6d64e028 0x8 00
+ .text 0x6d64e030 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00431.o)
+ 0x6d64e030 GetVersionExA@4
+ *fill* 0x6d64e038 0x8 00
+ .text 0x6d64e040 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00175.o)
+ 0x6d64e040 FindAtomA@4
+ *fill* 0x6d64e048 0x8 00
+ .text 0x6d64e050 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00001.o)
+ 0x6d64e050 AddAtomA@4
+ *fill* 0x6d64e058 0x8 00
+ .text 0x6d64e060 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00220.o)
+ 0x6d64e060 GetAtomNameA@12
+ *fill* 0x6d64e068 0x8 00
+ .text 0x6d64e070 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/crtend.o
+ *(SORT(.text$*))
+ *(.glue_7t)
+ *(.glue_7)
+ 0x6d64e080 ___CTOR_LIST__ = .
+ 0x6d64e080 __CTOR_LIST__ = .
+ 0x6d64e080 0x4 LONG 0xffffffff
+ *(SORT(.ctors.*))
+ *(.ctors)
+ .ctors 0x6d64e084 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/crtend.o
+ *(.ctor)
+ 0x6d64e088 0x4 LONG 0x0
+ 0x6d64e08c ___DTOR_LIST__ = .
+ 0x6d64e08c __DTOR_LIST__ = .
+ 0x6d64e08c 0x4 LONG 0xffffffff
+ *(SORT(.dtors.*))
+ *(.dtors)
+ *(.dtor)
+ 0x6d64e090 0x4 LONG 0x0
+ *(.fini)
+ *(.gcc_exc)
+ 0x6d64e094 PROVIDE (etext, .)
+ *(.gcc_except_table)
+
+.data 0x6d64f000 0x1c00
+ 0x6d64f000 __data_start__ = .
+ *(.data)
+ .data 0x6d64f000 0x10 main.o
+ 0x6d64f000 defaultexpr
+ .data 0x6d64f010 0x80 ui.o
+ 0x6d64f010 doupdates
+ .data 0x6d64f090 0x10 save.o
+ .data 0x6d64f0a0 0x10 lexer.o
+ .data 0x6d64f0b0 0x240 funcs.o
+ 0x6d64f0b0 predefs
+ .data 0x6d64f2f0 0x1800 trigtab.o
+ 0x6d64f2f0 costab
+ 0x6d6502f0 tantab
+ .data 0x6d650af0 0x20 ../common/tt/file_compat_win.o
+ .data 0x6d650b10 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(gccmain.o)
+ .data 0x6d650b20 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+ *(.data2)
+ *(SORT(.data$*))
+ 0x6d650b30 __data_end__ = .
+ *(.data_cygwin_nocopy)
+
+.rdata 0x6d651000 0x0
+ *(.rdata)
+ *(SORT(.rdata$*))
+ *(.eh_frame)
+ 0x6d651000 ___RUNTIME_PSEUDO_RELOC_LIST__ = .
+ 0x6d651000 __RUNTIME_PSEUDO_RELOC_LIST__ = .
+ *(.rdata_runtime_pseudo_reloc)
+ 0x6d651000 ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .
+ 0x6d651000 __RUNTIME_PSEUDO_RELOC_LIST_END__ = .
+
+.pdata
+ *(.pdata)
+
+.bss 0x6d651000 0x2420
+ 0x6d651000 __bss_start__ = .
+ *(.bss)
+ .bss 0x6d651000 0x20 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o
+ .bss 0x6d651020 0x10 main.o
+ .bss 0x6d651030 0x50 ui_win.o
+ .bss 0x6d651080 0x10 preview.o
+ 0x6d651080 preview_complete
+ .bss 0x6d651090 0x90 lexer.o
+ 0x6d651090 yyin
+ 0x6d651094 yyout
+ .bss 0x6d651120 0x10 funcs.o
+ 0x6d651120 zero_val
+ .bss 0x6d651130 0x10 ../common/adobeplugin/dllmain.o
+ 0x6d651130 hDllInstance
+ .bss 0x6d651140 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(gccmain.o)
+ .bss 0x6d651150 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(pseudo-reloc-list.o)
+ .bss 0x6d651160 0x20 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+ *(COMMON)
+ COMMON 0x6d651180 0x14d0 main.o
+ 0x0 (size before relaxing)
+ 0x6d651180 map
+ 0x6d652180 errstart
+ 0x6d652190 cell
+ 0x6d652590 srcradused
+ 0x6d6525a0 gpb
+ 0x6d6525b0 errpos
+ 0x6d6525c0 err
+ 0x6d6525d0 gdata
+ 0x6d6525e0 expr
+ 0x6d6525f0 chunksize
+ 0x6d652600 nplanes
+ 0x6d652610 toprow
+ 0x6d652620 slider
+ 0x6d652640 tree
+ COMMON 0x6d652650 0x10 ui_win.o
+ 0x0 (size before relaxing)
+ 0x6d652650 preview_hwnd
+ COMMON 0x6d652660 0x20 ui.o
+ 0x0 (size before relaxing)
+ 0x6d652660 zoomfactor
+ 0x6d652670 fitzoom
+ COMMON 0x6d652680 0x30 ui_build.o
+ 0x0 (size before relaxing)
+ 0x6d652680 ctls
+ 0x6d6526a0 maps
+ COMMON 0x6d6526b0 0xb0 preview.o
+ 0x0 (size before relaxing)
+ 0x6d6526b0 preview_rect
+ 0x6d6526c0 preview_handle
+ 0x6d6526d0 preview_h
+ 0x6d6526e0 preview_w
+ 0x6d6526f0 preview_pmap
+ 0x6d652730 preview_scroll
+ 0x6d652740 preview_pmask
+ COMMON 0x6d652760 0x1f0 parser.o
+ 0x0 (size before relaxing)
+ 0x6d652760 yychar
+ 0x6d652770 errstr
+ 0x6d652780 inarglist
+ 0x6d652910 arglistptr
+ 0x6d652920 parsetree
+ 0x6d652930 yynerrs
+ 0x6d652940 yylval
+ COMMON 0x6d652950 0x40 lexer.o
+ 0x0 (size before relaxing)
+ 0x6d652950 tokstart
+ 0x6d652960 yyleng
+ 0x6d652970 tokpos
+ 0x6d652980 yytext
+ COMMON 0x6d652990 0x820 node.o
+ 0x0 (size before relaxing)
+ 0x6d652990 varused
+ 0x6d652d90 var
+ 0x6d653190 node_list
+ 0x6d6531a0 allocs
+ COMMON 0x6d6531b0 0x200 symtab.o
+ 0x0 (size before relaxing)
+ 0x6d6531b0 hash_table
+ COMMON 0x6d6533b0 0x10 process.o
+ 0x0 (size before relaxing)
+ 0x6d6533b0 needinput
+ COMMON 0x6d6533c0 0x10 make.o
+ 0x0 (size before relaxing)
+ 0x6d6533c0 event_id
+ COMMON 0x6d6533d0 0x30 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+ 0x0 (size before relaxing)
+ 0x6d6533d0 __w32_sharedptr_terminate
+ 0x6d6533e0 __w32_sharedptr
+ 0x6d6533f0 __w32_sharedptr_unexpected
+ COMMON 0x6d653400 0x20 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(_ctors.o)
+ 0x0 (size before relaxing)
+ 0x6d653420 __bss_end__ = .
+
+.edata 0x6d654000 0x200
+ *(.edata)
+ .edata 0x6d654000 0x54 FilterFoundry.exp
+ .edata 0x6d654054 0x4f dll stuff
+
+/DISCARD/
+ *(.debug$S)
+ *(.debug$T)
+ *(.debug$F)
+ *(.drectve)
+
+.idata 0x6d655000 0xc00
+ SORT(*)(.idata$2)
+ .idata$2 0x6d655000 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbh.o)
+ 0x6d655000 _head_libcomdlg32_a
+ .idata$2 0x6d655014 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbh.o)
+ 0x6d655014 _head_libgdi32_a
+ .idata$2 0x6d655028 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbh.o)
+ 0x6d655028 _head_libkernel32_a
+ .idata$2 0x6d65503c 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznch.o)
+ 0x6d65503c _head_libmsvcrt_a
+ .idata$2 0x6d655050 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbh.o)
+ 0x6d655050 _head_libuser32_a
+ SORT(*)(.idata$3)
+ 0x6d655064 0x4 LONG 0x0
+ 0x6d655068 0x4 LONG 0x0
+ 0x6d65506c 0x4 LONG 0x0
+ 0x6d655070 0x4 LONG 0x0
+ 0x6d655074 0x4 LONG 0x0
+ SORT(*)(.idata$4)
+ .idata$4 0x6d655078 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbh.o)
+ .idata$4 0x6d65507c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o)
+ .idata$4 0x6d655080 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00011.o)
+ .idata$4 0x6d655084 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbt.o)
+ .idata$4 0x6d655088 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbh.o)
+ .idata$4 0x6d65508c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00038.o)
+ .idata$4 0x6d655090 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00072.o)
+ .idata$4 0x6d655094 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o)
+ .idata$4 0x6d655098 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbt.o)
+ .idata$4 0x6d65509c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbh.o)
+ .idata$4 0x6d6550a0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00001.o)
+ .idata$4 0x6d6550a4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00019.o)
+ .idata$4 0x6d6550a8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00038.o)
+ .idata$4 0x6d6550ac 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00053.o)
+ .idata$4 0x6d6550b0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00068.o)
+ .idata$4 0x6d6550b4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00108.o)
+ .idata$4 0x6d6550b8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00123.o)
+ .idata$4 0x6d6550bc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00175.o)
+ .idata$4 0x6d6550c0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00196.o)
+ .idata$4 0x6d6550c4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00208.o)
+ .idata$4 0x6d6550c8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00213.o)
+ .idata$4 0x6d6550cc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00220.o)
+ .idata$4 0x6d6550d0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00311.o)
+ .idata$4 0x6d6550d4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00323.o)
+ .idata$4 0x6d6550d8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00333.o)
+ .idata$4 0x6d6550dc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o)
+ .idata$4 0x6d6550e0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00431.o)
+ .idata$4 0x6d6550e4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00523.o)
+ .idata$4 0x6d6550e8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00527.o)
+ .idata$4 0x6d6550ec 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00541.o)
+ .idata$4 0x6d6550f0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00613.o)
+ .idata$4 0x6d6550f4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00690.o)
+ .idata$4 0x6d6550f8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00699.o)
+ .idata$4 0x6d6550fc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00746.o)
+ .idata$4 0x6d655100 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00776.o)
+ .idata$4 0x6d655104 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00822.o)
+ .idata$4 0x6d655108 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbt.o)
+ .idata$4 0x6d65510c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznch.o)
+ .idata$4 0x6d655110 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o)
+ .idata$4 0x6d655114 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00047.o)
+ .idata$4 0x6d655118 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00147.o)
+ .idata$4 0x6d65511c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00176.o)
+ .idata$4 0x6d655120 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00222.o)
+ .idata$4 0x6d655124 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00224.o)
+ .idata$4 0x6d655128 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00344.o)
+ .idata$4 0x6d65512c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00395.o)
+ .idata$4 0x6d655130 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00510.o)
+ .idata$4 0x6d655134 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00516.o)
+ .idata$4 0x6d655138 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00519.o)
+ .idata$4 0x6d65513c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00526.o)
+ .idata$4 0x6d655140 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00531.o)
+ .idata$4 0x6d655144 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00537.o)
+ .idata$4 0x6d655148 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00543.o)
+ .idata$4 0x6d65514c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00546.o)
+ .idata$4 0x6d655150 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00552.o)
+ .idata$4 0x6d655154 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00554.o)
+ .idata$4 0x6d655158 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00596.o)
+ .idata$4 0x6d65515c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00603.o)
+ .idata$4 0x6d655160 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00609.o)
+ .idata$4 0x6d655164 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00610.o)
+ .idata$4 0x6d655168 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00611.o)
+ .idata$4 0x6d65516c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00616.o)
+ .idata$4 0x6d655170 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00619.o)
+ .idata$4 0x6d655174 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00624.o)
+ .idata$4 0x6d655178 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00625.o)
+ .idata$4 0x6d65517c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00634.o)
+ .idata$4 0x6d655180 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00636.o)
+ .idata$4 0x6d655184 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00638.o)
+ .idata$4 0x6d655188 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00640.o)
+ .idata$4 0x6d65518c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00642.o)
+ .idata$4 0x6d655190 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00644.o)
+ .idata$4 0x6d655194 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00648.o)
+ .idata$4 0x6d655198 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00670.o)
+ .idata$4 0x6d65519c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznct.o)
+ .idata$4 0x6d6551a0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbh.o)
+ .idata$4 0x6d6551a4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00053.o)
+ .idata$4 0x6d6551a8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00146.o)
+ .idata$4 0x6d6551ac 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00179.o)
+ .idata$4 0x6d6551b0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00181.o)
+ .idata$4 0x6d6551b4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00235.o)
+ .idata$4 0x6d6551b8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00246.o)
+ .idata$4 0x6d6551bc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00247.o)
+ .idata$4 0x6d6551c0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00249.o)
+ .idata$4 0x6d6551c4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00251.o)
+ .idata$4 0x6d6551c8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00252.o)
+ .idata$4 0x6d6551cc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00253.o)
+ .idata$4 0x6d6551d0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00254.o)
+ .idata$4 0x6d6551d4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00346.o)
+ .idata$4 0x6d6551d8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00383.o)
+ .idata$4 0x6d6551dc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o)
+ .idata$4 0x6d6551e0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00430.o)
+ .idata$4 0x6d6551e4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00438.o)
+ .idata$4 0x6d6551e8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00482.o)
+ .idata$4 0x6d6551ec 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00483.o)
+ .idata$4 0x6d6551f0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00494.o)
+ .idata$4 0x6d6551f4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00506.o)
+ .idata$4 0x6d6551f8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00518.o)
+ .idata$4 0x6d6551fc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00519.o)
+ .idata$4 0x6d655200 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00522.o)
+ .idata$4 0x6d655204 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00574.o)
+ .idata$4 0x6d655208 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbt.o)
+ SORT(*)(.idata$5)
+ .idata$5 0x6d65520c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbh.o)
+ .idata$5 0x6d655210 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o)
+ 0x6d655210 _imp__GetOpenFileNameA@4
+ .idata$5 0x6d655214 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00011.o)
+ 0x6d655214 _imp__GetSaveFileNameA@4
+ .idata$5 0x6d655218 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbt.o)
+ .idata$5 0x6d65521c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbh.o)
+ .idata$5 0x6d655220 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00038.o)
+ 0x6d655220 _imp__CreateDIBSection@24
+ .idata$5 0x6d655224 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00072.o)
+ 0x6d655224 _imp__DeleteObject@4
+ .idata$5 0x6d655228 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o)
+ 0x6d655228 _imp__GetStockObject@4
+ .idata$5 0x6d65522c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbt.o)
+ .idata$5 0x6d655230 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbh.o)
+ .idata$5 0x6d655234 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00001.o)
+ 0x6d655234 _imp__AddAtomA@4
+ .idata$5 0x6d655238 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00019.o)
+ 0x6d655238 _imp__BeginUpdateResourceA@8
+ .idata$5 0x6d65523c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00038.o)
+ 0x6d65523c _imp__CloseHandle@4
+ .idata$5 0x6d655240 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00053.o)
+ 0x6d655240 _imp__CopyFileA@12
+ .idata$5 0x6d655244 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00068.o)
+ 0x6d655244 _imp__CreateFileA@28
+ .idata$5 0x6d655248 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00108.o)
+ 0x6d655248 _imp__DeleteFileA@4
+ .idata$5 0x6d65524c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00123.o)
+ 0x6d65524c _imp__EndUpdateResourceA@8
+ .idata$5 0x6d655250 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00175.o)
+ 0x6d655250 _imp__FindAtomA@4
+ .idata$5 0x6d655254 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00196.o)
+ 0x6d655254 _imp__FindResourceA@12
+ .idata$5 0x6d655258 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00208.o)
+ 0x6d655258 _imp__FormatMessageA@28
+ .idata$5 0x6d65525c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00213.o)
+ 0x6d65525c _imp__FreeLibrary@4
+ .idata$5 0x6d655260 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00220.o)
+ 0x6d655260 _imp__GetAtomNameA@12
+ .idata$5 0x6d655264 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00311.o)
+ 0x6d655264 _imp__GetFileSize@8
+ .idata$5 0x6d655268 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00323.o)
+ 0x6d655268 _imp__GetLastError@0
+ .idata$5 0x6d65526c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00333.o)
+ 0x6d65526c _imp__GetModuleFileNameA@12
+ .idata$5 0x6d655270 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o)
+ 0x6d655270 _imp__GetTickCount@0
+ .idata$5 0x6d655274 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00431.o)
+ 0x6d655274 _imp__GetVersionExA@4
+ .idata$5 0x6d655278 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00523.o)
+ 0x6d655278 _imp__LoadLibraryExA@12
+ .idata$5 0x6d65527c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00527.o)
+ 0x6d65527c _imp__LoadResource@8
+ .idata$5 0x6d655280 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00541.o)
+ 0x6d655280 _imp__LockResource@4
+ .idata$5 0x6d655284 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00613.o)
+ 0x6d655284 _imp__ReadFile@20
+ .idata$5 0x6d655288 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00690.o)
+ 0x6d655288 _imp__SetEndOfFile@4
+ .idata$5 0x6d65528c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00699.o)
+ 0x6d65528c _imp__SetFilePointer@16
+ .idata$5 0x6d655290 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00746.o)
+ 0x6d655290 _imp__SizeofResource@8
+ .idata$5 0x6d655294 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00776.o)
+ 0x6d655294 _imp__UpdateResourceA@24
+ .idata$5 0x6d655298 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00822.o)
+ 0x6d655298 _imp__WriteFile@20
+ .idata$5 0x6d65529c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbt.o)
+ .idata$5 0x6d6552a0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznch.o)
+ .idata$5 0x6d6552a4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o)
+ 0x6d6552a4 _imp____dllonexit
+ .idata$5 0x6d6552a8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00047.o)
+ 0x6d6552a8 _imp____mb_cur_max
+ .idata$5 0x6d6552ac 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00147.o)
+ 0x6d6552ac _imp___errno
+ .idata$5 0x6d6552b0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00176.o)
+ 0x6d6552b0 _imp___flsbuf
+ .idata$5 0x6d6552b4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00222.o)
+ 0x6d6552b4 _imp___iob
+ .idata$5 0x6d6552b8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00224.o)
+ 0x6d6552b8 _imp___isctype
+ .idata$5 0x6d6552bc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00344.o)
+ 0x6d6552bc _imp___pctype
+ .idata$5 0x6d6552c0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00395.o)
+ 0x6d6552c0 _imp___stricmp
+ .idata$5 0x6d6552c4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00510.o)
+ 0x6d6552c4 _imp__abort
+ .idata$5 0x6d6552c8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00516.o)
+ 0x6d6552c8 _imp__atan2
+ .idata$5 0x6d6552cc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00519.o)
+ 0x6d6552cc _imp__atoi
+ .idata$5 0x6d6552d0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00526.o)
+ 0x6d6552d0 _imp__cos
+ .idata$5 0x6d6552d4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00531.o)
+ 0x6d6552d4 _imp__exit
+ .idata$5 0x6d6552d8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00537.o)
+ 0x6d6552d8 _imp__fflush
+ .idata$5 0x6d6552dc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00543.o)
+ 0x6d6552dc _imp__floor
+ .idata$5 0x6d6552e0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00546.o)
+ 0x6d6552e0 _imp__fprintf
+ .idata$5 0x6d6552e4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00552.o)
+ 0x6d6552e4 _imp__free
+ .idata$5 0x6d6552e8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00554.o)
+ 0x6d6552e8 _imp__frexp
+ .idata$5 0x6d6552ec 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00596.o)
+ 0x6d6552ec _imp__ldexp
+ .idata$5 0x6d6552f0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00603.o)
+ 0x6d6552f0 _imp__malloc
+ .idata$5 0x6d6552f4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00609.o)
+ 0x6d6552f4 _imp__memcpy
+ .idata$5 0x6d6552f8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00610.o)
+ 0x6d6552f8 _imp__memmove
+ .idata$5 0x6d6552fc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00611.o)
+ 0x6d6552fc _imp__memset
+ .idata$5 0x6d655300 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00616.o)
+ 0x6d655300 _imp__printf
+ .idata$5 0x6d655304 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00619.o)
+ 0x6d655304 _imp__puts
+ .idata$5 0x6d655308 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00624.o)
+ 0x6d655308 _imp__rand
+ .idata$5 0x6d65530c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00625.o)
+ 0x6d65530c _imp__realloc
+ .idata$5 0x6d655310 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00634.o)
+ 0x6d655310 _imp__sin
+ .idata$5 0x6d655314 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00636.o)
+ 0x6d655314 _imp__sprintf
+ .idata$5 0x6d655318 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00638.o)
+ 0x6d655318 _imp__srand
+ .idata$5 0x6d65531c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00640.o)
+ 0x6d65531c _imp__strcat
+ .idata$5 0x6d655320 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00642.o)
+ 0x6d655320 _imp__strcmp
+ .idata$5 0x6d655324 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00644.o)
+ 0x6d655324 _imp__strcpy
+ .idata$5 0x6d655328 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00648.o)
+ 0x6d655328 _imp__strlen
+ .idata$5 0x6d65532c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00670.o)
+ 0x6d65532c _imp__toupper
+ .idata$5 0x6d655330 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznct.o)
+ .idata$5 0x6d655334 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbh.o)
+ .idata$5 0x6d655338 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00053.o)
+ 0x6d655338 _imp__CheckDlgButton@12
+ .idata$5 0x6d65533c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00146.o)
+ 0x6d65533c _imp__DialogBoxParamA@20
+ .idata$5 0x6d655340 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00179.o)
+ 0x6d655340 _imp__EnableWindow@8
+ .idata$5 0x6d655344 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00181.o)
+ 0x6d655344 _imp__EndDialog@8
+ .idata$5 0x6d655348 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00235.o)
+ 0x6d655348 _imp__GetClientRect@8
+ .idata$5 0x6d65534c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00246.o)
+ 0x6d65534c _imp__GetCursorPos@4
+ .idata$5 0x6d655350 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00247.o)
+ 0x6d655350 _imp__GetDC@4
+ .idata$5 0x6d655354 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00249.o)
+ 0x6d655354 _imp__GetDesktopWindow@0
+ .idata$5 0x6d655358 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00251.o)
+ 0x6d655358 _imp__GetDlgCtrlID@4
+ .idata$5 0x6d65535c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00252.o)
+ 0x6d65535c _imp__GetDlgItem@8
+ .idata$5 0x6d655360 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00253.o)
+ 0x6d655360 _imp__GetDlgItemInt@16
+ .idata$5 0x6d655364 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00254.o)
+ 0x6d655364 _imp__GetDlgItemTextA@16
+ .idata$5 0x6d655368 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00346.o)
+ 0x6d655368 _imp__GetWindowRect@8
+ .idata$5 0x6d65536c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00383.o)
+ 0x6d65536c _imp__IsDlgButtonChecked@8
+ .idata$5 0x6d655370 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o)
+ 0x6d655370 _imp__MessageBeep@4
+ .idata$5 0x6d655374 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00430.o)
+ 0x6d655374 _imp__MessageBoxA@16
+ .idata$5 0x6d655378 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00438.o)
+ 0x6d655378 _imp__MoveWindow@24
+ .idata$5 0x6d65537c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00482.o)
+ 0x6d65537c _imp__ReleaseCapture@0
+ .idata$5 0x6d655380 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00483.o)
+ 0x6d655380 _imp__ReleaseDC@8
+ .idata$5 0x6d655384 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00494.o)
+ 0x6d655384 _imp__SendDlgItemMessageA@20
+ .idata$5 0x6d655388 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00506.o)
+ 0x6d655388 _imp__SetCapture@4
+ .idata$5 0x6d65538c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00518.o)
+ 0x6d65538c _imp__SetDlgItemInt@16
+ .idata$5 0x6d655390 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00519.o)
+ 0x6d655390 _imp__SetDlgItemTextA@12
+ .idata$5 0x6d655394 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00522.o)
+ 0x6d655394 _imp__SetFocus@4
+ .idata$5 0x6d655398 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00574.o)
+ 0x6d655398 _imp__ShowWindow@8
+ .idata$5 0x6d65539c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbt.o)
+ SORT(*)(.idata$6)
+ .idata$6 0x6d6553a0 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o)
+ .idata$6 0x6d6553b4 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00011.o)
+ .idata$6 0x6d6553c8 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00038.o)
+ .idata$6 0x6d6553dc 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00072.o)
+ .idata$6 0x6d6553ec 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o)
+ *fill* 0x6d6553fe 0x2 00
+ .idata$6 0x6d655400 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00001.o)
+ .idata$6 0x6d65540c 0x18 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00019.o)
+ .idata$6 0x6d655424 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00038.o)
+ *fill* 0x6d655432 0x2 00
+ .idata$6 0x6d655434 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00053.o)
+ .idata$6 0x6d655440 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00068.o)
+ *fill* 0x6d65544e 0x2 00
+ .idata$6 0x6d655450 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00108.o)
+ *fill* 0x6d65545e 0x2 00
+ .idata$6 0x6d655460 0x16 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00123.o)
+ *fill* 0x6d655476 0x2 00
+ .idata$6 0x6d655478 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00175.o)
+ .idata$6 0x6d655484 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00196.o)
+ .idata$6 0x6d655494 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00208.o)
+ *fill* 0x6d6554a6 0x2 00
+ .idata$6 0x6d6554a8 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00213.o)
+ *fill* 0x6d6554b6 0x2 00
+ .idata$6 0x6d6554b8 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00220.o)
+ .idata$6 0x6d6554c8 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00311.o)
+ *fill* 0x6d6554d6 0x2 00
+ .idata$6 0x6d6554d8 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00323.o)
+ .idata$6 0x6d6554e8 0x16 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00333.o)
+ *fill* 0x6d6554fe 0x2 00
+ .idata$6 0x6d655500 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o)
+ .idata$6 0x6d655510 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00431.o)
+ .idata$6 0x6d655520 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00523.o)
+ *fill* 0x6d655532 0x2 00
+ .idata$6 0x6d655534 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00527.o)
+ .idata$6 0x6d655544 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00541.o)
+ .idata$6 0x6d655554 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00613.o)
+ .idata$6 0x6d655560 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00690.o)
+ .idata$6 0x6d655570 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00699.o)
+ *fill* 0x6d655582 0x2 00
+ .idata$6 0x6d655584 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00746.o)
+ *fill* 0x6d655596 0x2 00
+ .idata$6 0x6d655598 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00776.o)
+ *fill* 0x6d6555aa 0x2 00
+ .idata$6 0x6d6555ac 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00822.o)
+ .idata$6 0x6d6555b8 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o)
+ *fill* 0x6d6555c6 0x2 00
+ .idata$6 0x6d6555c8 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00047.o)
+ .idata$6 0x6d6555d8 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00147.o)
+ *fill* 0x6d6555e2 0x2 00
+ .idata$6 0x6d6555e4 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00176.o)
+ *fill* 0x6d6555ee 0x2 00
+ .idata$6 0x6d6555f0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00222.o)
+ .idata$6 0x6d6555f8 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00224.o)
+ .idata$6 0x6d655604 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00344.o)
+ *fill* 0x6d65560e 0x2 00
+ .idata$6 0x6d655610 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00395.o)
+ .idata$6 0x6d65561c 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00510.o)
+ .idata$6 0x6d655624 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00516.o)
+ .idata$6 0x6d65562c 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00519.o)
+ .idata$6 0x6d655634 0x6 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00526.o)
+ *fill* 0x6d65563a 0x2 00
+ .idata$6 0x6d65563c 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00531.o)
+ .idata$6 0x6d655644 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00537.o)
+ *fill* 0x6d65564e 0x2 00
+ .idata$6 0x6d655650 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00543.o)
+ .idata$6 0x6d655658 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00546.o)
+ *fill* 0x6d655662 0x2 00
+ .idata$6 0x6d655664 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00552.o)
+ .idata$6 0x6d65566c 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00554.o)
+ .idata$6 0x6d655674 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00596.o)
+ .idata$6 0x6d65567c 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00603.o)
+ *fill* 0x6d655686 0x2 00
+ .idata$6 0x6d655688 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00609.o)
+ *fill* 0x6d655692 0x2 00
+ .idata$6 0x6d655694 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00610.o)
+ *fill* 0x6d65569e 0x2 00
+ .idata$6 0x6d6556a0 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00611.o)
+ *fill* 0x6d6556aa 0x2 00
+ .idata$6 0x6d6556ac 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00616.o)
+ *fill* 0x6d6556b6 0x2 00
+ .idata$6 0x6d6556b8 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00619.o)
+ .idata$6 0x6d6556c0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00624.o)
+ .idata$6 0x6d6556c8 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00625.o)
+ *fill* 0x6d6556d2 0x2 00
+ .idata$6 0x6d6556d4 0x6 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00634.o)
+ *fill* 0x6d6556da 0x2 00
+ .idata$6 0x6d6556dc 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00636.o)
+ *fill* 0x6d6556e6 0x2 00
+ .idata$6 0x6d6556e8 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00638.o)
+ .idata$6 0x6d6556f0 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00640.o)
+ *fill* 0x6d6556fa 0x2 00
+ .idata$6 0x6d6556fc 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00642.o)
+ *fill* 0x6d655706 0x2 00
+ .idata$6 0x6d655708 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00644.o)
+ *fill* 0x6d655712 0x2 00
+ .idata$6 0x6d655714 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00648.o)
+ *fill* 0x6d65571e 0x2 00
+ .idata$6 0x6d655720 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00670.o)
+ *fill* 0x6d65572a 0x2 00
+ .idata$6 0x6d65572c 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00053.o)
+ *fill* 0x6d65573e 0x2 00
+ .idata$6 0x6d655740 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00146.o)
+ *fill* 0x6d655752 0x2 00
+ .idata$6 0x6d655754 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00179.o)
+ .idata$6 0x6d655764 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00181.o)
+ .idata$6 0x6d655770 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00235.o)
+ .idata$6 0x6d655780 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00246.o)
+ .idata$6 0x6d655790 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00247.o)
+ .idata$6 0x6d655798 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00249.o)
+ .idata$6 0x6d6557ac 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00251.o)
+ .idata$6 0x6d6557bc 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00252.o)
+ *fill* 0x6d6557ca 0x2 00
+ .idata$6 0x6d6557cc 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00253.o)
+ .idata$6 0x6d6557dc 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00254.o)
+ *fill* 0x6d6557ee 0x2 00
+ .idata$6 0x6d6557f0 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00346.o)
+ .idata$6 0x6d655800 0x16 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00383.o)
+ *fill* 0x6d655816 0x2 00
+ .idata$6 0x6d655818 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o)
+ *fill* 0x6d655826 0x2 00
+ .idata$6 0x6d655828 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00430.o)
+ *fill* 0x6d655836 0x2 00
+ .idata$6 0x6d655838 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00438.o)
+ *fill* 0x6d655846 0x2 00
+ .idata$6 0x6d655848 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00482.o)
+ *fill* 0x6d65585a 0x2 00
+ .idata$6 0x6d65585c 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00483.o)
+ .idata$6 0x6d655868 0x16 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00494.o)
+ *fill* 0x6d65587e 0x2 00
+ .idata$6 0x6d655880 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00506.o)
+ *fill* 0x6d65588e 0x2 00
+ .idata$6 0x6d655890 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00518.o)
+ .idata$6 0x6d6558a0 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00519.o)
+ *fill* 0x6d6558b2 0x2 00
+ .idata$6 0x6d6558b4 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00522.o)
+ .idata$6 0x6d6558c0 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00574.o)
+ SORT(*)(.idata$7)
+ *fill* 0x6d6558ce 0x2 00
+ .idata$7 0x6d6558d0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o)
+ .idata$7 0x6d6558d4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00011.o)
+ .idata$7 0x6d6558d8 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbt.o)
+ 0x6d6558d8 _libcomdlg32_a_iname
+ .idata$7 0x6d6558e8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00038.o)
+ .idata$7 0x6d6558ec 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00072.o)
+ .idata$7 0x6d6558f0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o)
+ .idata$7 0x6d6558f4 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbt.o)
+ 0x6d6558f4 _libgdi32_a_iname
+ .idata$7 0x6d655900 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00001.o)
+ .idata$7 0x6d655904 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00019.o)
+ .idata$7 0x6d655908 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00038.o)
+ .idata$7 0x6d65590c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00053.o)
+ .idata$7 0x6d655910 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00068.o)
+ .idata$7 0x6d655914 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00108.o)
+ .idata$7 0x6d655918 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00123.o)
+ .idata$7 0x6d65591c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00175.o)
+ .idata$7 0x6d655920 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00196.o)
+ .idata$7 0x6d655924 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00208.o)
+ .idata$7 0x6d655928 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00213.o)
+ .idata$7 0x6d65592c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00220.o)
+ .idata$7 0x6d655930 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00311.o)
+ .idata$7 0x6d655934 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00323.o)
+ .idata$7 0x6d655938 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00333.o)
+ .idata$7 0x6d65593c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o)
+ .idata$7 0x6d655940 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00431.o)
+ .idata$7 0x6d655944 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00523.o)
+ .idata$7 0x6d655948 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00527.o)
+ .idata$7 0x6d65594c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00541.o)
+ .idata$7 0x6d655950 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00613.o)
+ .idata$7 0x6d655954 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00690.o)
+ .idata$7 0x6d655958 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00699.o)
+ .idata$7 0x6d65595c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00746.o)
+ .idata$7 0x6d655960 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00776.o)
+ .idata$7 0x6d655964 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00822.o)
+ .idata$7 0x6d655968 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbt.o)
+ 0x6d655968 _libkernel32_a_iname
+ .idata$7 0x6d655978 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o)
+ .idata$7 0x6d65597c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00047.o)
+ .idata$7 0x6d655980 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00147.o)
+ .idata$7 0x6d655984 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00176.o)
+ .idata$7 0x6d655988 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00222.o)
+ .idata$7 0x6d65598c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00224.o)
+ .idata$7 0x6d655990 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00344.o)
+ .idata$7 0x6d655994 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00395.o)
+ .idata$7 0x6d655998 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00510.o)
+ .idata$7 0x6d65599c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00516.o)
+ .idata$7 0x6d6559a0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00519.o)
+ .idata$7 0x6d6559a4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00526.o)
+ .idata$7 0x6d6559a8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00531.o)
+ .idata$7 0x6d6559ac 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00537.o)
+ .idata$7 0x6d6559b0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00543.o)
+ .idata$7 0x6d6559b4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00546.o)
+ .idata$7 0x6d6559b8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00552.o)
+ .idata$7 0x6d6559bc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00554.o)
+ .idata$7 0x6d6559c0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00596.o)
+ .idata$7 0x6d6559c4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00603.o)
+ .idata$7 0x6d6559c8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00609.o)
+ .idata$7 0x6d6559cc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00610.o)
+ .idata$7 0x6d6559d0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00611.o)
+ .idata$7 0x6d6559d4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00616.o)
+ .idata$7 0x6d6559d8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00619.o)
+ .idata$7 0x6d6559dc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00624.o)
+ .idata$7 0x6d6559e0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00625.o)
+ .idata$7 0x6d6559e4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00634.o)
+ .idata$7 0x6d6559e8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00636.o)
+ .idata$7 0x6d6559ec 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00638.o)
+ .idata$7 0x6d6559f0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00640.o)
+ .idata$7 0x6d6559f4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00642.o)
+ .idata$7 0x6d6559f8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00644.o)
+ .idata$7 0x6d6559fc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00648.o)
+ .idata$7 0x6d655a00 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00670.o)
+ .idata$7 0x6d655a04 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznct.o)
+ 0x6d655a04 _libmsvcrt_a_iname
+ .idata$7 0x6d655a10 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00053.o)
+ .idata$7 0x6d655a14 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00146.o)
+ .idata$7 0x6d655a18 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00179.o)
+ .idata$7 0x6d655a1c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00181.o)
+ .idata$7 0x6d655a20 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00235.o)
+ .idata$7 0x6d655a24 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00246.o)
+ .idata$7 0x6d655a28 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00247.o)
+ .idata$7 0x6d655a2c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00249.o)
+ .idata$7 0x6d655a30 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00251.o)
+ .idata$7 0x6d655a34 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00252.o)
+ .idata$7 0x6d655a38 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00253.o)
+ .idata$7 0x6d655a3c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00254.o)
+ .idata$7 0x6d655a40 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00346.o)
+ .idata$7 0x6d655a44 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00383.o)
+ .idata$7 0x6d655a48 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o)
+ .idata$7 0x6d655a4c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00430.o)
+ .idata$7 0x6d655a50 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00438.o)
+ .idata$7 0x6d655a54 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00482.o)
+ .idata$7 0x6d655a58 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00483.o)
+ .idata$7 0x6d655a5c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00494.o)
+ .idata$7 0x6d655a60 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00506.o)
+ .idata$7 0x6d655a64 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00518.o)
+ .idata$7 0x6d655a68 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00519.o)
+ .idata$7 0x6d655a6c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00522.o)
+ .idata$7 0x6d655a70 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00574.o)
+ .idata$7 0x6d655a74 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbt.o)
+ 0x6d655a74 _libuser32_a_iname
+
+.CRT
+ *(SORT(.CRT$*))
+
+.endjunk 0x6d656000 0x0
+ 0x6d656000 PROVIDE (end, .)
+ 0x6d656000 PROVIDE (_end, .)
+ 0x6d656000 __end__ = .
+
+.rsrc 0x6d656000 0x2800
+ *(.rsrc)
+ .rsrc 0x6d656000 0x270c res.o
+ *(SORT(.rsrc$*))
+
+.reloc 0x6d659000 0x1a00
+ *(.reloc)
+ .reloc 0x6d659000 0xc78 FilterFoundry.exp
+ .reloc 0x6d659c78 0xc78 dll stuff
+
+.stab
+ *(.stab)
+
+.stabstr
+ *(.stabstr)
+OUTPUT(dist/FilterFoundry.8bf pei-i386)
+LOAD dll stuff
+Archive member included because of file (symbol)
+
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(gccmain.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (__main)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(pseudo-reloc.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (_pei386_runtime_relocator)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(pseudo-reloc-list.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(pseudo-reloc.o) (__RUNTIME_PSEUDO_RELOC_LIST_END__)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/crtbegin.o (__w32_sharedptr_initialize)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(_chkstk.o)
+ parser.o (_alloca)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(_ctors.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(gccmain.o) (__CTOR_LIST__)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o)
+ node.o (pow)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(fp_consts.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (__QNAN)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(powi.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (__powi)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(signbit.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (__signbit)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(fpclassify.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (__fpclassify)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(isnan.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (__isnan)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (__dllonexit)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00537.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (fflush)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00552.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (free)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00147.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (_errno)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00603.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o (malloc)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00640.o)
+ ui_win.o (strcat)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00636.o)
+ ui_win.o (sprintf)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00648.o)
+ ui.o (strlen)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00644.o)
+ ui_build.o (strcpy)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00611.o)
+ preview.o (memset)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00638.o)
+ preview.o (srand)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00609.o)
+ read.o (memcpy)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00519.o)
+ read.o (atoi)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00222.o)
+ lexer.o (_imp___iob)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00625.o)
+ lexer.o (realloc)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00531.o)
+ lexer.o (exit)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00546.o)
+ lexer.o (fprintf)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00670.o)
+ lexer.o (toupper)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00047.o)
+ node.o (_imp____mb_cur_max)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00344.o)
+ node.o (_imp___pctype)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00616.o)
+ node.o (printf)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00619.o)
+ node.o (puts)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00224.o)
+ node.o (_isctype)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00176.o)
+ node.o (_flsbuf)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00642.o)
+ symtab.o (strcmp)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00516.o)
+ funcs.o (atan2)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00634.o)
+ funcs.o (sin)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00526.o)
+ funcs.o (cos)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00624.o)
+ funcs.o (rand)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00395.o)
+ load_win.o (_stricmp)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00610.o)
+ ../common/tt/str.o (memmove)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00510.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o) (abort)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00543.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (floor)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00596.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (ldexp)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00554.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o) (frexp)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznch.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o) (_head_libmsvcrt_a)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznct.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznch.o) (_libmsvcrt_a_iname)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o)
+ ui_win.o (GetStockObject@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00038.o)
+ ../common/tt/ui_compat_win.o (CreateDIBSection@24)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00072.o)
+ ../common/tt/ui_compat_win.o (DeleteObject@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbh.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o) (_head_libgdi32_a)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbt.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbh.o) (_libgdi32_a_iname)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o)
+ ../common/tt/choosefile_win.o (GetOpenFileNameA@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00011.o)
+ ../common/tt/choosefile_win.o (GetSaveFileNameA@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbh.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o) (_head_libcomdlg32_a)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbt.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbh.o) (_libcomdlg32_a_iname)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o)
+ main.o (MessageBeep@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00430.o)
+ ui_win.o (MessageBoxA@16)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00252.o)
+ ui_win.o (GetDlgItem@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00235.o)
+ ui_win.o (GetClientRect@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00494.o)
+ ui_win.o (SendDlgItemMessageA@20)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00251.o)
+ ui_win.o (GetDlgCtrlID@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00482.o)
+ ui_win.o (ReleaseCapture@0)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00246.o)
+ ui_win.o (GetCursorPos@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00181.o)
+ ui_win.o (EndDialog@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00506.o)
+ ui_win.o (SetCapture@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00146.o)
+ ui_win.o (DialogBoxParamA@20)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00518.o)
+ ui.o (SetDlgItemInt@16)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00519.o)
+ ui.o (SetDlgItemTextA@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00522.o)
+ ui.o (SetFocus@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00254.o)
+ ui.o (GetDlgItemTextA@16)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00574.o)
+ ui.o (ShowWindow@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00253.o)
+ ui.o (GetDlgItemInt@16)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00179.o)
+ ui.o (EnableWindow@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00053.o)
+ ui_build.o (CheckDlgButton@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00383.o)
+ ui_build.o (IsDlgButtonChecked@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00247.o)
+ preview.o (GetDC@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00483.o)
+ preview.o (ReleaseDC@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00249.o)
+ ../common/tt/ui_compat_win.o (GetDesktopWindow@0)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00346.o)
+ ../common/tt/ui_compat_win.o (GetWindowRect@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00438.o)
+ ../common/tt/ui_compat_win.o (MoveWindow@24)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbh.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o) (_head_libuser32_a)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbt.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbh.o) (_libuser32_a_iname)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o)
+ process.o (GetTickCount@0)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00196.o)
+ load_win.o (FindResourceA@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00527.o)
+ load_win.o (LoadResource@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00541.o)
+ load_win.o (LockResource@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00523.o)
+ load_win.o (LoadLibraryExA@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00213.o)
+ load_win.o (FreeLibrary@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00323.o)
+ make_win.o (GetLastError@0)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00208.o)
+ make_win.o (FormatMessageA@28)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00019.o)
+ make_win.o (BeginUpdateResourceA@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00746.o)
+ make_win.o (SizeofResource@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00776.o)
+ make_win.o (UpdateResourceA@24)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00123.o)
+ make_win.o (EndUpdateResourceA@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00333.o)
+ make_win.o (GetModuleFileNameA@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00053.o)
+ make_win.o (CopyFileA@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00038.o)
+ ../common/tt/file_compat_win.o (CloseHandle@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00822.o)
+ ../common/tt/file_compat_win.o (WriteFile@20)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00613.o)
+ ../common/tt/file_compat_win.o (ReadFile@20)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00068.o)
+ ../common/tt/file_compat_win.o (CreateFileA@28)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00108.o)
+ ../common/tt/file_compat_win.o (DeleteFileA@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00699.o)
+ ../common/tt/file_compat_win.o (SetFilePointer@16)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00311.o)
+ ../common/tt/file_compat_win.o (GetFileSize@8)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00690.o)
+ ../common/tt/file_compat_win.o (SetEndOfFile@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00431.o)
+ ../common/tt/compat_win.o (GetVersionExA@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00175.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o) (FindAtomA@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00001.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o) (AddAtomA@4)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00220.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o) (GetAtomNameA@12)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbh.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o) (_head_libkernel32_a)
+/opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbt.o)
+ /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbh.o) (_libkernel32_a_iname)
+
+Allocating common symbols
+Common symbol size file
+
+varused 0x400 node.o
+__DTOR_LIST__ 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(_ctors.o)
+__w32_sharedptr_terminate
+ 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+ctls 0x20 ui_build.o
+yychar 0x10 parser.o
+map 0x1000 main.o
+preview_hwnd 0x10 ui_win.o
+errstart 0x10 main.o
+cell 0x400 main.o
+preview_rect 0x10 preview.o
+needinput 0x10 process.o
+maps 0x10 ui_build.o
+errstr 0x10 parser.o
+zoomfactor 0x10 ui.o
+inarglist 0x190 parser.o
+hash_table 0x200 symtab.o
+var 0x400 node.o
+srcradused 0x10 main.o
+arglistptr 0x10 parser.o
+gpb 0x10 main.o
+__w32_sharedptr 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+errpos 0x10 main.o
+tokstart 0x10 lexer.o
+err 0x10 main.o
+preview_handle 0x10 preview.o
+node_list 0x10 node.o
+yyleng 0x10 lexer.o
+__CTOR_LIST__ 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(_ctors.o)
+fitzoom 0x10 ui.o
+preview_h 0x10 preview.o
+gdata 0x10 main.o
+parsetree 0x10 parser.o
+yynerrs 0x10 parser.o
+preview_w 0x10 preview.o
+preview_pmap 0x40 preview.o
+yylval 0x10 parser.o
+tokpos 0x10 lexer.o
+expr 0x10 main.o
+__w32_sharedptr_unexpected
+ 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+preview_scroll 0x10 preview.o
+chunksize 0x10 main.o
+preview_pmask 0x20 preview.o
+nplanes 0x10 main.o
+allocs 0x10 node.o
+toprow 0x10 main.o
+event_id 0x10 make.o
+yytext 0x10 lexer.o
+slider 0x20 main.o
+tree 0x10 main.o
+
+Memory Configuration
+
+Name Origin Length Attributes
+*default* 0x00000000 0xffffffff
+
+Linker script and memory map
+
+ 0x6d640000 __image_base__ = 0x6d640000
+ 0x00000001 __dll__ = 0x1
+ 0x00001000 __section_alignment__ = 0x1000
+ 0x00000200 __file_alignment__ = 0x200
+ 0x00000004 __major_os_version__ = 0x4
+ 0x00000000 __minor_os_version__ = 0x0
+ 0x00000001 __major_image_version__ = 0x1
+ 0x00000000 __minor_image_version__ = 0x0
+ 0x00000004 __major_subsystem_version__ = 0x4
+ 0x00000000 __minor_subsystem_version__ = 0x0
+ 0x00000002 __subsystem__ = 0x2
+ 0x00200000 __size_of_stack_reserve__ = 0x200000
+ 0x00001000 __size_of_stack_commit__ = 0x1000
+ 0x00100000 __size_of_heap_reserve__ = 0x100000
+ 0x00001000 __size_of_heap_commit__ = 0x1000
+ 0x00000000 __loader_flags__ = 0x0
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/crtbegin.o
+LOAD FilterFoundry.exp
+LOAD main.o
+LOAD ui_win.o
+LOAD ui.o
+LOAD ui_build.o
+LOAD ui_build_win.o
+LOAD preview.o
+LOAD read.o
+LOAD save.o
+LOAD parser.o
+LOAD lexer.o
+LOAD node.o
+LOAD symtab.o
+LOAD funcs.o
+LOAD trigtab.o
+LOAD process.o
+LOAD load_win.o
+LOAD make_win.o
+LOAD make.o
+LOAD scripting.o
+LOAD ../common/tt/str.o
+LOAD ../common/tt/sprintf_tiny.o
+LOAD ../common/tt/ui_compat_win.o
+LOAD ../common/tt/file_compat_win.o
+LOAD ../common/tt/choosefile_win.o
+LOAD ../common/tt/compat_string.o
+LOAD ../common/tt/compat_win.o
+LOAD ../common/tt/dbg_win.o
+LOAD ../common/adobeplugin/dllmain.o
+LOAD res.o
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmoldname.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libadvapi32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libshell32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmoldname.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a
+LOAD /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/crtend.o
+
+.text 0x6d641000 0xd200
+ *(.init)
+ *(.text)
+ .text 0x6d641000 0x160 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o
+ 0x6d641100 atexit
+ 0x6d641130 _onexit
+ 0x6d641000 DllMainCRTStartup@12
+ .text 0x6d641160 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/crtbegin.o
+ 0x6d641160 __do_sjlj_init
+ .text 0x6d641170 0x580 main.o
+ 0x6d641180 PluginMain
+ 0x6d641550 DoStart
+ 0x6d6414d0 RequestNext
+ 0x6d641340 checkandinitparams
+ 0x6d6415a0 DoContinue
+ 0x6d641690 DoFinish
+ 0x6d641480 DoPrepare
+ .text 0x6d6416f0 0x760 ui_win.o
+ 0x6d641df0 maindialog
+ 0x6d6419d0 simplealert
+ 0x6d641a10 maindlgproc@16
+ 0x6d6418c0 DoAbout
+ .text 0x6d641e50 0x1300 ui.o
+ 0x6d642390 checksl
+ 0x6d6426e0 maindlgupdate
+ 0x6d642930 maindlginit
+ 0x6d642140 updateexpr
+ 0x6d642060 updateglobals
+ 0x6d642cc0 maindlgitem
+ 0x6d6425a0 slidermoved
+ 0x6d6430c0 alertuser
+ 0x6d642610 slidertextchanged
+ 0x6d642270 updatezoom
+ 0x6d642510 checksliders
+ 0x6d641e70 updatedialog
+ .text 0x6d643150 0x750 ui_build.o
+ 0x6d6435f0 builddlgitem
+ 0x6d643180 builddlginit
+ .text 0x6d6438a0 0xd0 ui_build_win.o
+ 0x6d6438a0 builddlgproc@16
+ 0x6d643920 builddialog
+ .text 0x6d643970 0xa20 preview.o
+ 0x6d643ad0 dispose_preview
+ 0x6d643970 setup_preview
+ 0x6d6441e0 drawpreview
+ 0x6d643b90 recalc_preview
+ .text 0x6d644390 0x6a0 read.o
+ 0x6d6447a0 readPARM
+ 0x6d644980 readfile
+ 0x6d6444c0 readparams
+ 0x6d6448b0 readfileintohandle
+ .text 0x6d644a30 0x500 save.o
+ 0x6d644d50 savehandleintofile
+ 0x6d644af0 saveparams
+ 0x6d644a30 putstr
+ 0x6d644e20 savefile
+ .text 0x6d644f30 0x1cc0 parser.o
+ 0x6d644f60 pushflag
+ 0x6d646480 yyparse
+ 0x6d646b60 parseexpr
+ 0x6d646bd0 yyerror
+ .text 0x6d646bf0 0x15a0 lexer.o
+ 0x6d647ec0 yy_create_buffer
+ 0x6d647e80 yy_load_buffer_state
+ 0x6d647e20 yy_switch_to_buffer
+ 0x6d647dd0 yyrestart
+ 0x6d647ff0 yy_scan_buffer
+ 0x6d647fa0 yy_flush_buffer
+ 0x6d6480b0 yy_scan_bytes
+ 0x6d647f10 yy_delete_buffer
+ 0x6d648080 yy_scan_string
+ 0x6d647f70 yy_init_buffer
+ 0x6d6472b0 yylex
+ .text 0x6d648190 0xd20 node.o
+ 0x6d648190 newnode
+ 0x6d648dd0 freetree
+ 0x6d648480 eval
+ 0x6d6481d0 freenodes
+ 0x6d648210 freeallnodes
+ 0x6d648e20 checkvars
+ 0x6d6482e0 dumptree
+ .text 0x6d648eb0 0x2a0 symtab.o
+ 0x6d648eb0 djb2
+ 0x6d649120 insert
+ 0x6d648f20 init_symtab
+ 0x6d6490c0 lookup
+ 0x6d649000 dump_symbols
+ .text 0x6d649150 0x7d0 funcs.o
+ 0x6d649530 ff_sqr
+ 0x6d649300 ff_min
+ 0x6d649230 ff_ctl
+ 0x6d6494a0 ff_scl
+ 0x6d649450 ff_mix
+ 0x6d6493b0 ff_dif
+ 0x6d6495a0 ff_tan
+ 0x6d649740 ff_put
+ 0x6d649320 ff_max
+ 0x6d649700 ff_c2m
+ 0x6d649380 ff_sub
+ 0x6d649360 ff_add
+ 0x6d649760 ff_cnv
+ 0x6d6492a0 ff_map
+ 0x6d649150 ff_src
+ 0x6d6493d0 ff_rnd
+ 0x6d649550 ff_sin
+ 0x6d649250 ff_val
+ 0x6d6495e0 ff_r2x
+ 0x6d649340 ff_abs
+ 0x6d6496a0 ff_c2d
+ 0x6d6491d0 ff_rad
+ 0x6d649640 ff_r2y
+ 0x6d649720 ff_get
+ 0x6d6494f0 isqrt
+ 0x6d649560 ff_cos
+ .text 0x6d649920 0x7a0 process.o
+ 0x6d649cd0 process
+ 0x6d649f00 process_scaled
+ 0x6d649920 setup
+ 0x6d649a70 evalpixel
+ .text 0x6d64a0c0 0x280 load_win.o
+ 0x6d64a0d0 readPARMresource
+ 0x6d64a220 loadfile
+ .text 0x6d64a340 0x6e0 make_win.o
+ 0x6d64a970 make_standalone
+ 0x6d64a470 doresources
+ 0x6d64a350 dbglasterror
+ .text 0x6d64aa20 0x2e0 make.o
+ 0x6d64ac10 fixaete
+ 0x6d64aa20 printablehash
+ 0x6d64aad0 fixpipl
+ .text 0x6d64ad00 0x5d0 scripting.o
+ 0x6d64ae50 ReadScriptParamsOnRead
+ 0x6d64b150 HostDescriptorAvailable
+ 0x6d64aff0 WriteScriptParamsOnRead
+ 0x6d64b270 HostCloseWriter
+ 0x6d64ad90 get_cstring
+ 0x6d64b220 HostCloseReader
+ 0x6d64ad00 put_cstring
+ .text 0x6d64b2d0 0x270 ../common/tt/str.o
+ 0x6d64b440 my_strdup
+ 0x6d64b490 PLcstrcpy
+ 0x6d64b3e0 cat
+ 0x6d64b4e0 PLcstrcat
+ 0x6d64b410 my_memset
+ 0x6d64b390 myc2pstrcpy
+ 0x6d64b350 myp2cstrcpy
+ 0x6d64b2d0 myc2pstr
+ 0x6d64b310 myp2cstr
+ .text 0x6d64b540 0x3e0 ../common/tt/sprintf_tiny.o
+ 0x6d64b720 vsprintf_tiny
+ 0x6d64b5e0 int_str
+ 0x6d64b540 int_exp
+ 0x6d64b8f0 sprintf_tiny
+ 0x6d64b590 udigits
+ 0x6d64b670 float_str
+ 0x6d64b620 int_strpad
+ .text 0x6d64b920 0x230 ../common/tt/ui_compat_win.o
+ 0x6d64b940 newbitmap
+ 0x6d64ba40 disposebitmap
+ 0x6d64ba80 centre_window
+ .text 0x6d64bb50 0x330 ../common/tt/file_compat_win.o
+ 0x6d64bd30 FSpDelete
+ 0x6d64bc30 FSpOpenDF
+ 0x6d64be30 SetEOF
+ 0x6d64be00 GetEOF
+ 0x6d64bdb0 SetFPos
+ 0x6d64bcb0 FSpCreate
+ 0x6d64bd70 GetFPos
+ 0x6d64bbd0 FSRead
+ 0x6d64bb80 FSWrite
+ 0x6d64bb50 FSClose
+ .text 0x6d64be80 0x220 ../common/tt/choosefile_win.o
+ 0x6d64c090 completesave
+ 0x6d64be80 choosefiletypes
+ 0x6d64bfa0 putfile
+ 0x6d64bec0 choosefile
+ .text 0x6d64c0a0 0x170 ../common/tt/compat_string.o
+ 0x6d64c160 PLstrcmp
+ 0x6d64c1d0 NumToString
+ 0x6d64c120 PLstrrchr
+ 0x6d64c0a0 PLstrcpy
+ 0x6d64c0d0 PLstrcat
+ .text 0x6d64c210 0x50 ../common/tt/compat_win.o
+ 0x6d64c210 isWin32NT
+ .text 0x6d64c260 0x40 ../common/tt/dbg_win.o
+ 0x6d64c270 dbg
+ .text 0x6d64c2a0 0x20 ../common/adobeplugin/dllmain.o
+ 0x6d64c2a0 DllMain@12
+ .text 0x6d64c2c0 0xb0 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(gccmain.o)
+ 0x6d64c350 __main
+ 0x6d64c2c0 __do_global_dtors
+ 0x6d64c2f0 __do_global_ctors
+ .text 0x6d64c370 0x70 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(pseudo-reloc.o)
+ 0x6d64c3b0 _pei386_runtime_relocator
+ .text 0x6d64c3e0 0x320 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+ 0x6d64c4a0 __w32_sharedptr_initialize
+ .text 0x6d64c700 0x30 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(_chkstk.o)
+ 0x6d64c700 __chkstk
+ 0x6d64c700 _alloca
+ .text 0x6d64c730 0xfc0 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(pow.o)
+ 0x6d64c940 pow
+ .text 0x6d64d6f0 0x50 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(fp_consts.o)
+ 0x6d64d6f0 __QNAN
+ 0x6d64d730 nan
+ 0x6d64d700 __SNAN
+ 0x6d64d720 __DENORM
+ 0x6d64d710 __INF
+ .text 0x6d64d740 0x300 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(powi.o)
+ 0x6d64d780 __powi
+ .text 0x6d64da40 0x30 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(signbit.o)
+ 0x6d64da40 __signbit
+ 0x6d64da40 signbit
+ .text 0x6d64da70 0x30 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(fpclassify.o)
+ 0x6d64da70 __fpclassify
+ .text 0x6d64daa0 0x50 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingwex.a(isnan.o)
+ 0x6d64daa0 isnan
+ 0x6d64daa0 __isnan
+ .text 0x6d64daf0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o)
+ 0x6d64daf0 __dllonexit
+ *fill* 0x6d64daf8 0x8 00
+ .text 0x6d64db00 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00537.o)
+ 0x6d64db00 fflush
+ *fill* 0x6d64db08 0x8 00
+ .text 0x6d64db10 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00552.o)
+ 0x6d64db10 free
+ *fill* 0x6d64db18 0x8 00
+ .text 0x6d64db20 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00147.o)
+ 0x6d64db20 _errno
+ *fill* 0x6d64db28 0x8 00
+ .text 0x6d64db30 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00603.o)
+ 0x6d64db30 malloc
+ *fill* 0x6d64db38 0x8 00
+ .text 0x6d64db40 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00640.o)
+ 0x6d64db40 strcat
+ *fill* 0x6d64db48 0x8 00
+ .text 0x6d64db50 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00636.o)
+ 0x6d64db50 sprintf
+ *fill* 0x6d64db58 0x8 00
+ .text 0x6d64db60 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00648.o)
+ 0x6d64db60 strlen
+ *fill* 0x6d64db68 0x8 00
+ .text 0x6d64db70 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00644.o)
+ 0x6d64db70 strcpy
+ *fill* 0x6d64db78 0x8 00
+ .text 0x6d64db80 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00611.o)
+ 0x6d64db80 memset
+ *fill* 0x6d64db88 0x8 00
+ .text 0x6d64db90 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00638.o)
+ 0x6d64db90 srand
+ *fill* 0x6d64db98 0x8 00
+ .text 0x6d64dba0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00609.o)
+ 0x6d64dba0 memcpy
+ *fill* 0x6d64dba8 0x8 00
+ .text 0x6d64dbb0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00519.o)
+ 0x6d64dbb0 atoi
+ *fill* 0x6d64dbb8 0x8 00
+ .text 0x6d64dbc0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00625.o)
+ 0x6d64dbc0 realloc
+ *fill* 0x6d64dbc8 0x8 00
+ .text 0x6d64dbd0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00531.o)
+ 0x6d64dbd0 exit
+ *fill* 0x6d64dbd8 0x8 00
+ .text 0x6d64dbe0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00546.o)
+ 0x6d64dbe0 fprintf
+ *fill* 0x6d64dbe8 0x8 00
+ .text 0x6d64dbf0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00670.o)
+ 0x6d64dbf0 toupper
+ *fill* 0x6d64dbf8 0x8 00
+ .text 0x6d64dc00 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00616.o)
+ 0x6d64dc00 printf
+ *fill* 0x6d64dc08 0x8 00
+ .text 0x6d64dc10 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00619.o)
+ 0x6d64dc10 puts
+ *fill* 0x6d64dc18 0x8 00
+ .text 0x6d64dc20 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00224.o)
+ 0x6d64dc20 _isctype
+ *fill* 0x6d64dc28 0x8 00
+ .text 0x6d64dc30 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00176.o)
+ 0x6d64dc30 _flsbuf
+ *fill* 0x6d64dc38 0x8 00
+ .text 0x6d64dc40 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00642.o)
+ 0x6d64dc40 strcmp
+ *fill* 0x6d64dc48 0x8 00
+ .text 0x6d64dc50 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00516.o)
+ 0x6d64dc50 atan2
+ *fill* 0x6d64dc58 0x8 00
+ .text 0x6d64dc60 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00634.o)
+ 0x6d64dc60 sin
+ *fill* 0x6d64dc68 0x8 00
+ .text 0x6d64dc70 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00526.o)
+ 0x6d64dc70 cos
+ *fill* 0x6d64dc78 0x8 00
+ .text 0x6d64dc80 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00624.o)
+ 0x6d64dc80 rand
+ *fill* 0x6d64dc88 0x8 00
+ .text 0x6d64dc90 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00395.o)
+ 0x6d64dc90 _stricmp
+ *fill* 0x6d64dc98 0x8 00
+ .text 0x6d64dca0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00610.o)
+ 0x6d64dca0 memmove
+ *fill* 0x6d64dca8 0x8 00
+ .text 0x6d64dcb0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00510.o)
+ 0x6d64dcb0 abort
+ *fill* 0x6d64dcb8 0x8 00
+ .text 0x6d64dcc0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00543.o)
+ 0x6d64dcc0 floor
+ *fill* 0x6d64dcc8 0x8 00
+ .text 0x6d64dcd0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00596.o)
+ 0x6d64dcd0 ldexp
+ *fill* 0x6d64dcd8 0x8 00
+ .text 0x6d64dce0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00554.o)
+ 0x6d64dce0 frexp
+ *fill* 0x6d64dce8 0x8 00
+ .text 0x6d64dcf0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o)
+ 0x6d64dcf0 GetStockObject@4
+ *fill* 0x6d64dcf8 0x8 00
+ .text 0x6d64dd00 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00038.o)
+ 0x6d64dd00 CreateDIBSection@24
+ *fill* 0x6d64dd08 0x8 00
+ .text 0x6d64dd10 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00072.o)
+ 0x6d64dd10 DeleteObject@4
+ *fill* 0x6d64dd18 0x8 00
+ .text 0x6d64dd20 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o)
+ 0x6d64dd20 GetOpenFileNameA@4
+ *fill* 0x6d64dd28 0x8 00
+ .text 0x6d64dd30 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00011.o)
+ 0x6d64dd30 GetSaveFileNameA@4
+ *fill* 0x6d64dd38 0x8 00
+ .text 0x6d64dd40 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o)
+ 0x6d64dd40 MessageBeep@4
+ *fill* 0x6d64dd48 0x8 00
+ .text 0x6d64dd50 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00430.o)
+ 0x6d64dd50 MessageBoxA@16
+ *fill* 0x6d64dd58 0x8 00
+ .text 0x6d64dd60 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00252.o)
+ 0x6d64dd60 GetDlgItem@8
+ *fill* 0x6d64dd68 0x8 00
+ .text 0x6d64dd70 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00235.o)
+ 0x6d64dd70 GetClientRect@8
+ *fill* 0x6d64dd78 0x8 00
+ .text 0x6d64dd80 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00494.o)
+ 0x6d64dd80 SendDlgItemMessageA@20
+ *fill* 0x6d64dd88 0x8 00
+ .text 0x6d64dd90 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00251.o)
+ 0x6d64dd90 GetDlgCtrlID@4
+ *fill* 0x6d64dd98 0x8 00
+ .text 0x6d64dda0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00482.o)
+ 0x6d64dda0 ReleaseCapture@0
+ *fill* 0x6d64dda8 0x8 00
+ .text 0x6d64ddb0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00246.o)
+ 0x6d64ddb0 GetCursorPos@4
+ *fill* 0x6d64ddb8 0x8 00
+ .text 0x6d64ddc0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00181.o)
+ 0x6d64ddc0 EndDialog@8
+ *fill* 0x6d64ddc8 0x8 00
+ .text 0x6d64ddd0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00506.o)
+ 0x6d64ddd0 SetCapture@4
+ *fill* 0x6d64ddd8 0x8 00
+ .text 0x6d64dde0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00146.o)
+ 0x6d64dde0 DialogBoxParamA@20
+ *fill* 0x6d64dde8 0x8 00
+ .text 0x6d64ddf0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00518.o)
+ 0x6d64ddf0 SetDlgItemInt@16
+ *fill* 0x6d64ddf8 0x8 00
+ .text 0x6d64de00 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00519.o)
+ 0x6d64de00 SetDlgItemTextA@12
+ *fill* 0x6d64de08 0x8 00
+ .text 0x6d64de10 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00522.o)
+ 0x6d64de10 SetFocus@4
+ *fill* 0x6d64de18 0x8 00
+ .text 0x6d64de20 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00254.o)
+ 0x6d64de20 GetDlgItemTextA@16
+ *fill* 0x6d64de28 0x8 00
+ .text 0x6d64de30 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00574.o)
+ 0x6d64de30 ShowWindow@8
+ *fill* 0x6d64de38 0x8 00
+ .text 0x6d64de40 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00253.o)
+ 0x6d64de40 GetDlgItemInt@16
+ *fill* 0x6d64de48 0x8 00
+ .text 0x6d64de50 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00179.o)
+ 0x6d64de50 EnableWindow@8
+ *fill* 0x6d64de58 0x8 00
+ .text 0x6d64de60 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00053.o)
+ 0x6d64de60 CheckDlgButton@12
+ *fill* 0x6d64de68 0x8 00
+ .text 0x6d64de70 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00383.o)
+ 0x6d64de70 IsDlgButtonChecked@8
+ *fill* 0x6d64de78 0x8 00
+ .text 0x6d64de80 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00247.o)
+ 0x6d64de80 GetDC@4
+ *fill* 0x6d64de88 0x8 00
+ .text 0x6d64de90 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00483.o)
+ 0x6d64de90 ReleaseDC@8
+ *fill* 0x6d64de98 0x8 00
+ .text 0x6d64dea0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00249.o)
+ 0x6d64dea0 GetDesktopWindow@0
+ *fill* 0x6d64dea8 0x8 00
+ .text 0x6d64deb0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00346.o)
+ 0x6d64deb0 GetWindowRect@8
+ *fill* 0x6d64deb8 0x8 00
+ .text 0x6d64dec0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00438.o)
+ 0x6d64dec0 MoveWindow@24
+ *fill* 0x6d64dec8 0x8 00
+ .text 0x6d64ded0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o)
+ 0x6d64ded0 GetTickCount@0
+ *fill* 0x6d64ded8 0x8 00
+ .text 0x6d64dee0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00196.o)
+ 0x6d64dee0 FindResourceA@12
+ *fill* 0x6d64dee8 0x8 00
+ .text 0x6d64def0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00527.o)
+ 0x6d64def0 LoadResource@8
+ *fill* 0x6d64def8 0x8 00
+ .text 0x6d64df00 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00541.o)
+ 0x6d64df00 LockResource@4
+ *fill* 0x6d64df08 0x8 00
+ .text 0x6d64df10 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00523.o)
+ 0x6d64df10 LoadLibraryExA@12
+ *fill* 0x6d64df18 0x8 00
+ .text 0x6d64df20 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00213.o)
+ 0x6d64df20 FreeLibrary@4
+ *fill* 0x6d64df28 0x8 00
+ .text 0x6d64df30 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00323.o)
+ 0x6d64df30 GetLastError@0
+ *fill* 0x6d64df38 0x8 00
+ .text 0x6d64df40 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00208.o)
+ 0x6d64df40 FormatMessageA@28
+ *fill* 0x6d64df48 0x8 00
+ .text 0x6d64df50 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00019.o)
+ 0x6d64df50 BeginUpdateResourceA@8
+ *fill* 0x6d64df58 0x8 00
+ .text 0x6d64df60 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00746.o)
+ 0x6d64df60 SizeofResource@8
+ *fill* 0x6d64df68 0x8 00
+ .text 0x6d64df70 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00776.o)
+ 0x6d64df70 UpdateResourceA@24
+ *fill* 0x6d64df78 0x8 00
+ .text 0x6d64df80 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00123.o)
+ 0x6d64df80 EndUpdateResourceA@8
+ *fill* 0x6d64df88 0x8 00
+ .text 0x6d64df90 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00333.o)
+ 0x6d64df90 GetModuleFileNameA@12
+ *fill* 0x6d64df98 0x8 00
+ .text 0x6d64dfa0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00053.o)
+ 0x6d64dfa0 CopyFileA@12
+ *fill* 0x6d64dfa8 0x8 00
+ .text 0x6d64dfb0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00038.o)
+ 0x6d64dfb0 CloseHandle@4
+ *fill* 0x6d64dfb8 0x8 00
+ .text 0x6d64dfc0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00822.o)
+ 0x6d64dfc0 WriteFile@20
+ *fill* 0x6d64dfc8 0x8 00
+ .text 0x6d64dfd0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00613.o)
+ 0x6d64dfd0 ReadFile@20
+ *fill* 0x6d64dfd8 0x8 00
+ .text 0x6d64dfe0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00068.o)
+ 0x6d64dfe0 CreateFileA@28
+ *fill* 0x6d64dfe8 0x8 00
+ .text 0x6d64dff0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00108.o)
+ 0x6d64dff0 DeleteFileA@4
+ *fill* 0x6d64dff8 0x8 00
+ .text 0x6d64e000 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00699.o)
+ 0x6d64e000 SetFilePointer@16
+ *fill* 0x6d64e008 0x8 00
+ .text 0x6d64e010 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00311.o)
+ 0x6d64e010 GetFileSize@8
+ *fill* 0x6d64e018 0x8 00
+ .text 0x6d64e020 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00690.o)
+ 0x6d64e020 SetEndOfFile@4
+ *fill* 0x6d64e028 0x8 00
+ .text 0x6d64e030 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00431.o)
+ 0x6d64e030 GetVersionExA@4
+ *fill* 0x6d64e038 0x8 00
+ .text 0x6d64e040 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00175.o)
+ 0x6d64e040 FindAtomA@4
+ *fill* 0x6d64e048 0x8 00
+ .text 0x6d64e050 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00001.o)
+ 0x6d64e050 AddAtomA@4
+ *fill* 0x6d64e058 0x8 00
+ .text 0x6d64e060 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00220.o)
+ 0x6d64e060 GetAtomNameA@12
+ *fill* 0x6d64e068 0x8 00
+ .text 0x6d64e070 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/crtend.o
+ *(SORT(.text$*))
+ *(.glue_7t)
+ *(.glue_7)
+ 0x6d64e080 ___CTOR_LIST__ = .
+ 0x6d64e080 __CTOR_LIST__ = .
+ 0x6d64e080 0x4 LONG 0xffffffff
+ *(SORT(.ctors.*))
+ *(.ctors)
+ .ctors 0x6d64e084 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/crtend.o
+ *(.ctor)
+ 0x6d64e088 0x4 LONG 0x0
+ 0x6d64e08c ___DTOR_LIST__ = .
+ 0x6d64e08c __DTOR_LIST__ = .
+ 0x6d64e08c 0x4 LONG 0xffffffff
+ *(SORT(.dtors.*))
+ *(.dtors)
+ *(.dtor)
+ 0x6d64e090 0x4 LONG 0x0
+ *(.fini)
+ *(.gcc_exc)
+ 0x6d64e094 PROVIDE (etext, .)
+ *(.gcc_except_table)
+
+.data 0x6d64f000 0x1c00
+ 0x6d64f000 __data_start__ = .
+ *(.data)
+ .data 0x6d64f000 0x10 main.o
+ 0x6d64f000 defaultexpr
+ .data 0x6d64f010 0x80 ui.o
+ 0x6d64f010 doupdates
+ .data 0x6d64f090 0x10 save.o
+ .data 0x6d64f0a0 0x10 lexer.o
+ .data 0x6d64f0b0 0x240 funcs.o
+ 0x6d64f0b0 predefs
+ .data 0x6d64f2f0 0x1800 trigtab.o
+ 0x6d64f2f0 costab
+ 0x6d6502f0 tantab
+ .data 0x6d650af0 0x20 ../common/tt/file_compat_win.o
+ .data 0x6d650b10 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(gccmain.o)
+ .data 0x6d650b20 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+ *(.data2)
+ *(SORT(.data$*))
+ 0x6d650b30 __data_end__ = .
+ *(.data_cygwin_nocopy)
+
+.rdata 0x6d651000 0x0
+ *(.rdata)
+ *(SORT(.rdata$*))
+ *(.eh_frame)
+ 0x6d651000 ___RUNTIME_PSEUDO_RELOC_LIST__ = .
+ 0x6d651000 __RUNTIME_PSEUDO_RELOC_LIST__ = .
+ *(.rdata_runtime_pseudo_reloc)
+ 0x6d651000 ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .
+ 0x6d651000 __RUNTIME_PSEUDO_RELOC_LIST_END__ = .
+
+.pdata
+ *(.pdata)
+
+.bss 0x6d651000 0x2420
+ 0x6d651000 __bss_start__ = .
+ *(.bss)
+ .bss 0x6d651000 0x20 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/dllcrt2.o
+ .bss 0x6d651020 0x10 main.o
+ .bss 0x6d651030 0x50 ui_win.o
+ .bss 0x6d651080 0x10 preview.o
+ 0x6d651080 preview_complete
+ .bss 0x6d651090 0x90 lexer.o
+ 0x6d651090 yyin
+ 0x6d651094 yyout
+ .bss 0x6d651120 0x10 funcs.o
+ 0x6d651120 zero_val
+ .bss 0x6d651130 0x10 ../common/adobeplugin/dllmain.o
+ 0x6d651130 hDllInstance
+ .bss 0x6d651140 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(gccmain.o)
+ .bss 0x6d651150 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmingw32.a(pseudo-reloc-list.o)
+ .bss 0x6d651160 0x20 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+ *(COMMON)
+ COMMON 0x6d651180 0x14d0 main.o
+ 0x0 (size before relaxing)
+ 0x6d651180 map
+ 0x6d652180 errstart
+ 0x6d652190 cell
+ 0x6d652590 srcradused
+ 0x6d6525a0 gpb
+ 0x6d6525b0 errpos
+ 0x6d6525c0 err
+ 0x6d6525d0 gdata
+ 0x6d6525e0 expr
+ 0x6d6525f0 chunksize
+ 0x6d652600 nplanes
+ 0x6d652610 toprow
+ 0x6d652620 slider
+ 0x6d652640 tree
+ COMMON 0x6d652650 0x10 ui_win.o
+ 0x0 (size before relaxing)
+ 0x6d652650 preview_hwnd
+ COMMON 0x6d652660 0x20 ui.o
+ 0x0 (size before relaxing)
+ 0x6d652660 zoomfactor
+ 0x6d652670 fitzoom
+ COMMON 0x6d652680 0x30 ui_build.o
+ 0x0 (size before relaxing)
+ 0x6d652680 ctls
+ 0x6d6526a0 maps
+ COMMON 0x6d6526b0 0xb0 preview.o
+ 0x0 (size before relaxing)
+ 0x6d6526b0 preview_rect
+ 0x6d6526c0 preview_handle
+ 0x6d6526d0 preview_h
+ 0x6d6526e0 preview_w
+ 0x6d6526f0 preview_pmap
+ 0x6d652730 preview_scroll
+ 0x6d652740 preview_pmask
+ COMMON 0x6d652760 0x1f0 parser.o
+ 0x0 (size before relaxing)
+ 0x6d652760 yychar
+ 0x6d652770 errstr
+ 0x6d652780 inarglist
+ 0x6d652910 arglistptr
+ 0x6d652920 parsetree
+ 0x6d652930 yynerrs
+ 0x6d652940 yylval
+ COMMON 0x6d652950 0x40 lexer.o
+ 0x0 (size before relaxing)
+ 0x6d652950 tokstart
+ 0x6d652960 yyleng
+ 0x6d652970 tokpos
+ 0x6d652980 yytext
+ COMMON 0x6d652990 0x820 node.o
+ 0x0 (size before relaxing)
+ 0x6d652990 varused
+ 0x6d652d90 var
+ 0x6d653190 node_list
+ 0x6d6531a0 allocs
+ COMMON 0x6d6531b0 0x200 symtab.o
+ 0x0 (size before relaxing)
+ 0x6d6531b0 hash_table
+ COMMON 0x6d6533b0 0x10 process.o
+ 0x0 (size before relaxing)
+ 0x6d6533b0 needinput
+ COMMON 0x6d6533c0 0x10 make.o
+ 0x0 (size before relaxing)
+ 0x6d6533c0 event_id
+ COMMON 0x6d6533d0 0x30 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(w32-shared-ptr.o)
+ 0x0 (size before relaxing)
+ 0x6d6533d0 __w32_sharedptr_terminate
+ 0x6d6533e0 __w32_sharedptr
+ 0x6d6533f0 __w32_sharedptr_unexpected
+ COMMON 0x6d653400 0x20 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/libgcc.a(_ctors.o)
+ 0x0 (size before relaxing)
+ 0x6d653420 __bss_end__ = .
+
+.edata 0x6d654000 0x200
+ *(.edata)
+ .edata 0x6d654000 0x54 FilterFoundry.exp
+ .edata 0x6d654054 0x4f dll stuff
+
+/DISCARD/
+ *(.debug$S)
+ *(.debug$T)
+ *(.debug$F)
+ *(.drectve)
+
+.idata 0x6d655000 0xc00
+ SORT(*)(.idata$2)
+ .idata$2 0x6d655000 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbh.o)
+ 0x6d655000 _head_libcomdlg32_a
+ .idata$2 0x6d655014 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbh.o)
+ 0x6d655014 _head_libgdi32_a
+ .idata$2 0x6d655028 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbh.o)
+ 0x6d655028 _head_libkernel32_a
+ .idata$2 0x6d65503c 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznch.o)
+ 0x6d65503c _head_libmsvcrt_a
+ .idata$2 0x6d655050 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbh.o)
+ 0x6d655050 _head_libuser32_a
+ SORT(*)(.idata$3)
+ 0x6d655064 0x4 LONG 0x0
+ 0x6d655068 0x4 LONG 0x0
+ 0x6d65506c 0x4 LONG 0x0
+ 0x6d655070 0x4 LONG 0x0
+ 0x6d655074 0x4 LONG 0x0
+ SORT(*)(.idata$4)
+ .idata$4 0x6d655078 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbh.o)
+ .idata$4 0x6d65507c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o)
+ .idata$4 0x6d655080 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00011.o)
+ .idata$4 0x6d655084 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbt.o)
+ .idata$4 0x6d655088 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbh.o)
+ .idata$4 0x6d65508c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00038.o)
+ .idata$4 0x6d655090 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00072.o)
+ .idata$4 0x6d655094 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o)
+ .idata$4 0x6d655098 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbt.o)
+ .idata$4 0x6d65509c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbh.o)
+ .idata$4 0x6d6550a0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00001.o)
+ .idata$4 0x6d6550a4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00019.o)
+ .idata$4 0x6d6550a8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00038.o)
+ .idata$4 0x6d6550ac 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00053.o)
+ .idata$4 0x6d6550b0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00068.o)
+ .idata$4 0x6d6550b4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00108.o)
+ .idata$4 0x6d6550b8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00123.o)
+ .idata$4 0x6d6550bc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00175.o)
+ .idata$4 0x6d6550c0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00196.o)
+ .idata$4 0x6d6550c4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00208.o)
+ .idata$4 0x6d6550c8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00213.o)
+ .idata$4 0x6d6550cc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00220.o)
+ .idata$4 0x6d6550d0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00311.o)
+ .idata$4 0x6d6550d4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00323.o)
+ .idata$4 0x6d6550d8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00333.o)
+ .idata$4 0x6d6550dc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o)
+ .idata$4 0x6d6550e0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00431.o)
+ .idata$4 0x6d6550e4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00523.o)
+ .idata$4 0x6d6550e8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00527.o)
+ .idata$4 0x6d6550ec 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00541.o)
+ .idata$4 0x6d6550f0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00613.o)
+ .idata$4 0x6d6550f4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00690.o)
+ .idata$4 0x6d6550f8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00699.o)
+ .idata$4 0x6d6550fc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00746.o)
+ .idata$4 0x6d655100 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00776.o)
+ .idata$4 0x6d655104 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00822.o)
+ .idata$4 0x6d655108 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbt.o)
+ .idata$4 0x6d65510c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznch.o)
+ .idata$4 0x6d655110 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o)
+ .idata$4 0x6d655114 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00047.o)
+ .idata$4 0x6d655118 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00147.o)
+ .idata$4 0x6d65511c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00176.o)
+ .idata$4 0x6d655120 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00222.o)
+ .idata$4 0x6d655124 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00224.o)
+ .idata$4 0x6d655128 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00344.o)
+ .idata$4 0x6d65512c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00395.o)
+ .idata$4 0x6d655130 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00510.o)
+ .idata$4 0x6d655134 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00516.o)
+ .idata$4 0x6d655138 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00519.o)
+ .idata$4 0x6d65513c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00526.o)
+ .idata$4 0x6d655140 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00531.o)
+ .idata$4 0x6d655144 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00537.o)
+ .idata$4 0x6d655148 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00543.o)
+ .idata$4 0x6d65514c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00546.o)
+ .idata$4 0x6d655150 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00552.o)
+ .idata$4 0x6d655154 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00554.o)
+ .idata$4 0x6d655158 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00596.o)
+ .idata$4 0x6d65515c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00603.o)
+ .idata$4 0x6d655160 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00609.o)
+ .idata$4 0x6d655164 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00610.o)
+ .idata$4 0x6d655168 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00611.o)
+ .idata$4 0x6d65516c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00616.o)
+ .idata$4 0x6d655170 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00619.o)
+ .idata$4 0x6d655174 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00624.o)
+ .idata$4 0x6d655178 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00625.o)
+ .idata$4 0x6d65517c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00634.o)
+ .idata$4 0x6d655180 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00636.o)
+ .idata$4 0x6d655184 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00638.o)
+ .idata$4 0x6d655188 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00640.o)
+ .idata$4 0x6d65518c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00642.o)
+ .idata$4 0x6d655190 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00644.o)
+ .idata$4 0x6d655194 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00648.o)
+ .idata$4 0x6d655198 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00670.o)
+ .idata$4 0x6d65519c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznct.o)
+ .idata$4 0x6d6551a0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbh.o)
+ .idata$4 0x6d6551a4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00053.o)
+ .idata$4 0x6d6551a8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00146.o)
+ .idata$4 0x6d6551ac 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00179.o)
+ .idata$4 0x6d6551b0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00181.o)
+ .idata$4 0x6d6551b4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00235.o)
+ .idata$4 0x6d6551b8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00246.o)
+ .idata$4 0x6d6551bc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00247.o)
+ .idata$4 0x6d6551c0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00249.o)
+ .idata$4 0x6d6551c4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00251.o)
+ .idata$4 0x6d6551c8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00252.o)
+ .idata$4 0x6d6551cc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00253.o)
+ .idata$4 0x6d6551d0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00254.o)
+ .idata$4 0x6d6551d4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00346.o)
+ .idata$4 0x6d6551d8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00383.o)
+ .idata$4 0x6d6551dc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o)
+ .idata$4 0x6d6551e0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00430.o)
+ .idata$4 0x6d6551e4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00438.o)
+ .idata$4 0x6d6551e8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00482.o)
+ .idata$4 0x6d6551ec 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00483.o)
+ .idata$4 0x6d6551f0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00494.o)
+ .idata$4 0x6d6551f4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00506.o)
+ .idata$4 0x6d6551f8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00518.o)
+ .idata$4 0x6d6551fc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00519.o)
+ .idata$4 0x6d655200 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00522.o)
+ .idata$4 0x6d655204 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00574.o)
+ .idata$4 0x6d655208 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbt.o)
+ SORT(*)(.idata$5)
+ .idata$5 0x6d65520c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbh.o)
+ .idata$5 0x6d655210 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o)
+ 0x6d655210 _imp__GetOpenFileNameA@4
+ .idata$5 0x6d655214 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00011.o)
+ 0x6d655214 _imp__GetSaveFileNameA@4
+ .idata$5 0x6d655218 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbt.o)
+ .idata$5 0x6d65521c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbh.o)
+ .idata$5 0x6d655220 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00038.o)
+ 0x6d655220 _imp__CreateDIBSection@24
+ .idata$5 0x6d655224 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00072.o)
+ 0x6d655224 _imp__DeleteObject@4
+ .idata$5 0x6d655228 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o)
+ 0x6d655228 _imp__GetStockObject@4
+ .idata$5 0x6d65522c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbt.o)
+ .idata$5 0x6d655230 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbh.o)
+ .idata$5 0x6d655234 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00001.o)
+ 0x6d655234 _imp__AddAtomA@4
+ .idata$5 0x6d655238 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00019.o)
+ 0x6d655238 _imp__BeginUpdateResourceA@8
+ .idata$5 0x6d65523c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00038.o)
+ 0x6d65523c _imp__CloseHandle@4
+ .idata$5 0x6d655240 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00053.o)
+ 0x6d655240 _imp__CopyFileA@12
+ .idata$5 0x6d655244 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00068.o)
+ 0x6d655244 _imp__CreateFileA@28
+ .idata$5 0x6d655248 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00108.o)
+ 0x6d655248 _imp__DeleteFileA@4
+ .idata$5 0x6d65524c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00123.o)
+ 0x6d65524c _imp__EndUpdateResourceA@8
+ .idata$5 0x6d655250 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00175.o)
+ 0x6d655250 _imp__FindAtomA@4
+ .idata$5 0x6d655254 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00196.o)
+ 0x6d655254 _imp__FindResourceA@12
+ .idata$5 0x6d655258 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00208.o)
+ 0x6d655258 _imp__FormatMessageA@28
+ .idata$5 0x6d65525c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00213.o)
+ 0x6d65525c _imp__FreeLibrary@4
+ .idata$5 0x6d655260 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00220.o)
+ 0x6d655260 _imp__GetAtomNameA@12
+ .idata$5 0x6d655264 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00311.o)
+ 0x6d655264 _imp__GetFileSize@8
+ .idata$5 0x6d655268 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00323.o)
+ 0x6d655268 _imp__GetLastError@0
+ .idata$5 0x6d65526c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00333.o)
+ 0x6d65526c _imp__GetModuleFileNameA@12
+ .idata$5 0x6d655270 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o)
+ 0x6d655270 _imp__GetTickCount@0
+ .idata$5 0x6d655274 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00431.o)
+ 0x6d655274 _imp__GetVersionExA@4
+ .idata$5 0x6d655278 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00523.o)
+ 0x6d655278 _imp__LoadLibraryExA@12
+ .idata$5 0x6d65527c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00527.o)
+ 0x6d65527c _imp__LoadResource@8
+ .idata$5 0x6d655280 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00541.o)
+ 0x6d655280 _imp__LockResource@4
+ .idata$5 0x6d655284 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00613.o)
+ 0x6d655284 _imp__ReadFile@20
+ .idata$5 0x6d655288 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00690.o)
+ 0x6d655288 _imp__SetEndOfFile@4
+ .idata$5 0x6d65528c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00699.o)
+ 0x6d65528c _imp__SetFilePointer@16
+ .idata$5 0x6d655290 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00746.o)
+ 0x6d655290 _imp__SizeofResource@8
+ .idata$5 0x6d655294 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00776.o)
+ 0x6d655294 _imp__UpdateResourceA@24
+ .idata$5 0x6d655298 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00822.o)
+ 0x6d655298 _imp__WriteFile@20
+ .idata$5 0x6d65529c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbt.o)
+ .idata$5 0x6d6552a0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznch.o)
+ .idata$5 0x6d6552a4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o)
+ 0x6d6552a4 _imp____dllonexit
+ .idata$5 0x6d6552a8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00047.o)
+ 0x6d6552a8 _imp____mb_cur_max
+ .idata$5 0x6d6552ac 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00147.o)
+ 0x6d6552ac _imp___errno
+ .idata$5 0x6d6552b0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00176.o)
+ 0x6d6552b0 _imp___flsbuf
+ .idata$5 0x6d6552b4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00222.o)
+ 0x6d6552b4 _imp___iob
+ .idata$5 0x6d6552b8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00224.o)
+ 0x6d6552b8 _imp___isctype
+ .idata$5 0x6d6552bc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00344.o)
+ 0x6d6552bc _imp___pctype
+ .idata$5 0x6d6552c0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00395.o)
+ 0x6d6552c0 _imp___stricmp
+ .idata$5 0x6d6552c4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00510.o)
+ 0x6d6552c4 _imp__abort
+ .idata$5 0x6d6552c8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00516.o)
+ 0x6d6552c8 _imp__atan2
+ .idata$5 0x6d6552cc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00519.o)
+ 0x6d6552cc _imp__atoi
+ .idata$5 0x6d6552d0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00526.o)
+ 0x6d6552d0 _imp__cos
+ .idata$5 0x6d6552d4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00531.o)
+ 0x6d6552d4 _imp__exit
+ .idata$5 0x6d6552d8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00537.o)
+ 0x6d6552d8 _imp__fflush
+ .idata$5 0x6d6552dc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00543.o)
+ 0x6d6552dc _imp__floor
+ .idata$5 0x6d6552e0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00546.o)
+ 0x6d6552e0 _imp__fprintf
+ .idata$5 0x6d6552e4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00552.o)
+ 0x6d6552e4 _imp__free
+ .idata$5 0x6d6552e8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00554.o)
+ 0x6d6552e8 _imp__frexp
+ .idata$5 0x6d6552ec 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00596.o)
+ 0x6d6552ec _imp__ldexp
+ .idata$5 0x6d6552f0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00603.o)
+ 0x6d6552f0 _imp__malloc
+ .idata$5 0x6d6552f4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00609.o)
+ 0x6d6552f4 _imp__memcpy
+ .idata$5 0x6d6552f8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00610.o)
+ 0x6d6552f8 _imp__memmove
+ .idata$5 0x6d6552fc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00611.o)
+ 0x6d6552fc _imp__memset
+ .idata$5 0x6d655300 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00616.o)
+ 0x6d655300 _imp__printf
+ .idata$5 0x6d655304 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00619.o)
+ 0x6d655304 _imp__puts
+ .idata$5 0x6d655308 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00624.o)
+ 0x6d655308 _imp__rand
+ .idata$5 0x6d65530c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00625.o)
+ 0x6d65530c _imp__realloc
+ .idata$5 0x6d655310 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00634.o)
+ 0x6d655310 _imp__sin
+ .idata$5 0x6d655314 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00636.o)
+ 0x6d655314 _imp__sprintf
+ .idata$5 0x6d655318 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00638.o)
+ 0x6d655318 _imp__srand
+ .idata$5 0x6d65531c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00640.o)
+ 0x6d65531c _imp__strcat
+ .idata$5 0x6d655320 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00642.o)
+ 0x6d655320 _imp__strcmp
+ .idata$5 0x6d655324 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00644.o)
+ 0x6d655324 _imp__strcpy
+ .idata$5 0x6d655328 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00648.o)
+ 0x6d655328 _imp__strlen
+ .idata$5 0x6d65532c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00670.o)
+ 0x6d65532c _imp__toupper
+ .idata$5 0x6d655330 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznct.o)
+ .idata$5 0x6d655334 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbh.o)
+ .idata$5 0x6d655338 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00053.o)
+ 0x6d655338 _imp__CheckDlgButton@12
+ .idata$5 0x6d65533c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00146.o)
+ 0x6d65533c _imp__DialogBoxParamA@20
+ .idata$5 0x6d655340 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00179.o)
+ 0x6d655340 _imp__EnableWindow@8
+ .idata$5 0x6d655344 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00181.o)
+ 0x6d655344 _imp__EndDialog@8
+ .idata$5 0x6d655348 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00235.o)
+ 0x6d655348 _imp__GetClientRect@8
+ .idata$5 0x6d65534c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00246.o)
+ 0x6d65534c _imp__GetCursorPos@4
+ .idata$5 0x6d655350 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00247.o)
+ 0x6d655350 _imp__GetDC@4
+ .idata$5 0x6d655354 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00249.o)
+ 0x6d655354 _imp__GetDesktopWindow@0
+ .idata$5 0x6d655358 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00251.o)
+ 0x6d655358 _imp__GetDlgCtrlID@4
+ .idata$5 0x6d65535c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00252.o)
+ 0x6d65535c _imp__GetDlgItem@8
+ .idata$5 0x6d655360 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00253.o)
+ 0x6d655360 _imp__GetDlgItemInt@16
+ .idata$5 0x6d655364 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00254.o)
+ 0x6d655364 _imp__GetDlgItemTextA@16
+ .idata$5 0x6d655368 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00346.o)
+ 0x6d655368 _imp__GetWindowRect@8
+ .idata$5 0x6d65536c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00383.o)
+ 0x6d65536c _imp__IsDlgButtonChecked@8
+ .idata$5 0x6d655370 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o)
+ 0x6d655370 _imp__MessageBeep@4
+ .idata$5 0x6d655374 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00430.o)
+ 0x6d655374 _imp__MessageBoxA@16
+ .idata$5 0x6d655378 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00438.o)
+ 0x6d655378 _imp__MoveWindow@24
+ .idata$5 0x6d65537c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00482.o)
+ 0x6d65537c _imp__ReleaseCapture@0
+ .idata$5 0x6d655380 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00483.o)
+ 0x6d655380 _imp__ReleaseDC@8
+ .idata$5 0x6d655384 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00494.o)
+ 0x6d655384 _imp__SendDlgItemMessageA@20
+ .idata$5 0x6d655388 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00506.o)
+ 0x6d655388 _imp__SetCapture@4
+ .idata$5 0x6d65538c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00518.o)
+ 0x6d65538c _imp__SetDlgItemInt@16
+ .idata$5 0x6d655390 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00519.o)
+ 0x6d655390 _imp__SetDlgItemTextA@12
+ .idata$5 0x6d655394 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00522.o)
+ 0x6d655394 _imp__SetFocus@4
+ .idata$5 0x6d655398 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00574.o)
+ 0x6d655398 _imp__ShowWindow@8
+ .idata$5 0x6d65539c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbt.o)
+ SORT(*)(.idata$6)
+ .idata$6 0x6d6553a0 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o)
+ .idata$6 0x6d6553b4 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00011.o)
+ .idata$6 0x6d6553c8 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00038.o)
+ .idata$6 0x6d6553dc 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00072.o)
+ .idata$6 0x6d6553ec 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o)
+ *fill* 0x6d6553fe 0x2 00
+ .idata$6 0x6d655400 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00001.o)
+ .idata$6 0x6d65540c 0x18 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00019.o)
+ .idata$6 0x6d655424 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00038.o)
+ *fill* 0x6d655432 0x2 00
+ .idata$6 0x6d655434 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00053.o)
+ .idata$6 0x6d655440 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00068.o)
+ *fill* 0x6d65544e 0x2 00
+ .idata$6 0x6d655450 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00108.o)
+ *fill* 0x6d65545e 0x2 00
+ .idata$6 0x6d655460 0x16 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00123.o)
+ *fill* 0x6d655476 0x2 00
+ .idata$6 0x6d655478 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00175.o)
+ .idata$6 0x6d655484 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00196.o)
+ .idata$6 0x6d655494 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00208.o)
+ *fill* 0x6d6554a6 0x2 00
+ .idata$6 0x6d6554a8 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00213.o)
+ *fill* 0x6d6554b6 0x2 00
+ .idata$6 0x6d6554b8 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00220.o)
+ .idata$6 0x6d6554c8 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00311.o)
+ *fill* 0x6d6554d6 0x2 00
+ .idata$6 0x6d6554d8 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00323.o)
+ .idata$6 0x6d6554e8 0x16 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00333.o)
+ *fill* 0x6d6554fe 0x2 00
+ .idata$6 0x6d655500 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o)
+ .idata$6 0x6d655510 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00431.o)
+ .idata$6 0x6d655520 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00523.o)
+ *fill* 0x6d655532 0x2 00
+ .idata$6 0x6d655534 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00527.o)
+ .idata$6 0x6d655544 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00541.o)
+ .idata$6 0x6d655554 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00613.o)
+ .idata$6 0x6d655560 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00690.o)
+ .idata$6 0x6d655570 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00699.o)
+ *fill* 0x6d655582 0x2 00
+ .idata$6 0x6d655584 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00746.o)
+ *fill* 0x6d655596 0x2 00
+ .idata$6 0x6d655598 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00776.o)
+ *fill* 0x6d6555aa 0x2 00
+ .idata$6 0x6d6555ac 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00822.o)
+ .idata$6 0x6d6555b8 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o)
+ *fill* 0x6d6555c6 0x2 00
+ .idata$6 0x6d6555c8 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00047.o)
+ .idata$6 0x6d6555d8 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00147.o)
+ *fill* 0x6d6555e2 0x2 00
+ .idata$6 0x6d6555e4 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00176.o)
+ *fill* 0x6d6555ee 0x2 00
+ .idata$6 0x6d6555f0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00222.o)
+ .idata$6 0x6d6555f8 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00224.o)
+ .idata$6 0x6d655604 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00344.o)
+ *fill* 0x6d65560e 0x2 00
+ .idata$6 0x6d655610 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00395.o)
+ .idata$6 0x6d65561c 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00510.o)
+ .idata$6 0x6d655624 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00516.o)
+ .idata$6 0x6d65562c 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00519.o)
+ .idata$6 0x6d655634 0x6 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00526.o)
+ *fill* 0x6d65563a 0x2 00
+ .idata$6 0x6d65563c 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00531.o)
+ .idata$6 0x6d655644 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00537.o)
+ *fill* 0x6d65564e 0x2 00
+ .idata$6 0x6d655650 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00543.o)
+ .idata$6 0x6d655658 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00546.o)
+ *fill* 0x6d655662 0x2 00
+ .idata$6 0x6d655664 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00552.o)
+ .idata$6 0x6d65566c 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00554.o)
+ .idata$6 0x6d655674 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00596.o)
+ .idata$6 0x6d65567c 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00603.o)
+ *fill* 0x6d655686 0x2 00
+ .idata$6 0x6d655688 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00609.o)
+ *fill* 0x6d655692 0x2 00
+ .idata$6 0x6d655694 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00610.o)
+ *fill* 0x6d65569e 0x2 00
+ .idata$6 0x6d6556a0 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00611.o)
+ *fill* 0x6d6556aa 0x2 00
+ .idata$6 0x6d6556ac 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00616.o)
+ *fill* 0x6d6556b6 0x2 00
+ .idata$6 0x6d6556b8 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00619.o)
+ .idata$6 0x6d6556c0 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00624.o)
+ .idata$6 0x6d6556c8 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00625.o)
+ *fill* 0x6d6556d2 0x2 00
+ .idata$6 0x6d6556d4 0x6 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00634.o)
+ *fill* 0x6d6556da 0x2 00
+ .idata$6 0x6d6556dc 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00636.o)
+ *fill* 0x6d6556e6 0x2 00
+ .idata$6 0x6d6556e8 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00638.o)
+ .idata$6 0x6d6556f0 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00640.o)
+ *fill* 0x6d6556fa 0x2 00
+ .idata$6 0x6d6556fc 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00642.o)
+ *fill* 0x6d655706 0x2 00
+ .idata$6 0x6d655708 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00644.o)
+ *fill* 0x6d655712 0x2 00
+ .idata$6 0x6d655714 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00648.o)
+ *fill* 0x6d65571e 0x2 00
+ .idata$6 0x6d655720 0xa /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00670.o)
+ *fill* 0x6d65572a 0x2 00
+ .idata$6 0x6d65572c 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00053.o)
+ *fill* 0x6d65573e 0x2 00
+ .idata$6 0x6d655740 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00146.o)
+ *fill* 0x6d655752 0x2 00
+ .idata$6 0x6d655754 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00179.o)
+ .idata$6 0x6d655764 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00181.o)
+ .idata$6 0x6d655770 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00235.o)
+ .idata$6 0x6d655780 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00246.o)
+ .idata$6 0x6d655790 0x8 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00247.o)
+ .idata$6 0x6d655798 0x14 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00249.o)
+ .idata$6 0x6d6557ac 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00251.o)
+ .idata$6 0x6d6557bc 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00252.o)
+ *fill* 0x6d6557ca 0x2 00
+ .idata$6 0x6d6557cc 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00253.o)
+ .idata$6 0x6d6557dc 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00254.o)
+ *fill* 0x6d6557ee 0x2 00
+ .idata$6 0x6d6557f0 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00346.o)
+ .idata$6 0x6d655800 0x16 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00383.o)
+ *fill* 0x6d655816 0x2 00
+ .idata$6 0x6d655818 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o)
+ *fill* 0x6d655826 0x2 00
+ .idata$6 0x6d655828 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00430.o)
+ *fill* 0x6d655836 0x2 00
+ .idata$6 0x6d655838 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00438.o)
+ *fill* 0x6d655846 0x2 00
+ .idata$6 0x6d655848 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00482.o)
+ *fill* 0x6d65585a 0x2 00
+ .idata$6 0x6d65585c 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00483.o)
+ .idata$6 0x6d655868 0x16 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00494.o)
+ *fill* 0x6d65587e 0x2 00
+ .idata$6 0x6d655880 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00506.o)
+ *fill* 0x6d65588e 0x2 00
+ .idata$6 0x6d655890 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00518.o)
+ .idata$6 0x6d6558a0 0x12 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00519.o)
+ *fill* 0x6d6558b2 0x2 00
+ .idata$6 0x6d6558b4 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00522.o)
+ .idata$6 0x6d6558c0 0xe /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00574.o)
+ SORT(*)(.idata$7)
+ *fill* 0x6d6558ce 0x2 00
+ .idata$7 0x6d6558d0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00009.o)
+ .idata$7 0x6d6558d4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbs00011.o)
+ .idata$7 0x6d6558d8 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libcomdlg32.a(dkfvbt.o)
+ 0x6d6558d8 _libcomdlg32_a_iname
+ .idata$7 0x6d6558e8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00038.o)
+ .idata$7 0x6d6558ec 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00072.o)
+ .idata$7 0x6d6558f0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbs00195.o)
+ .idata$7 0x6d6558f4 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libgdi32.a(dihvbt.o)
+ 0x6d6558f4 _libgdi32_a_iname
+ .idata$7 0x6d655900 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00001.o)
+ .idata$7 0x6d655904 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00019.o)
+ .idata$7 0x6d655908 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00038.o)
+ .idata$7 0x6d65590c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00053.o)
+ .idata$7 0x6d655910 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00068.o)
+ .idata$7 0x6d655914 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00108.o)
+ .idata$7 0x6d655918 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00123.o)
+ .idata$7 0x6d65591c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00175.o)
+ .idata$7 0x6d655920 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00196.o)
+ .idata$7 0x6d655924 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00208.o)
+ .idata$7 0x6d655928 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00213.o)
+ .idata$7 0x6d65592c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00220.o)
+ .idata$7 0x6d655930 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00311.o)
+ .idata$7 0x6d655934 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00323.o)
+ .idata$7 0x6d655938 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00333.o)
+ .idata$7 0x6d65593c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00421.o)
+ .idata$7 0x6d655940 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00431.o)
+ .idata$7 0x6d655944 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00523.o)
+ .idata$7 0x6d655948 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00527.o)
+ .idata$7 0x6d65594c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00541.o)
+ .idata$7 0x6d655950 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00613.o)
+ .idata$7 0x6d655954 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00690.o)
+ .idata$7 0x6d655958 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00699.o)
+ .idata$7 0x6d65595c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00746.o)
+ .idata$7 0x6d655960 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00776.o)
+ .idata$7 0x6d655964 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbs00822.o)
+ .idata$7 0x6d655968 0x10 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libkernel32.a(dmivbt.o)
+ 0x6d655968 _libkernel32_a_iname
+ .idata$7 0x6d655978 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00036.o)
+ .idata$7 0x6d65597c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00047.o)
+ .idata$7 0x6d655980 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00147.o)
+ .idata$7 0x6d655984 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00176.o)
+ .idata$7 0x6d655988 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00222.o)
+ .idata$7 0x6d65598c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00224.o)
+ .idata$7 0x6d655990 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00344.o)
+ .idata$7 0x6d655994 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00395.o)
+ .idata$7 0x6d655998 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00510.o)
+ .idata$7 0x6d65599c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00516.o)
+ .idata$7 0x6d6559a0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00519.o)
+ .idata$7 0x6d6559a4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00526.o)
+ .idata$7 0x6d6559a8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00531.o)
+ .idata$7 0x6d6559ac 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00537.o)
+ .idata$7 0x6d6559b0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00543.o)
+ .idata$7 0x6d6559b4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00546.o)
+ .idata$7 0x6d6559b8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00552.o)
+ .idata$7 0x6d6559bc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00554.o)
+ .idata$7 0x6d6559c0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00596.o)
+ .idata$7 0x6d6559c4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00603.o)
+ .idata$7 0x6d6559c8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00609.o)
+ .idata$7 0x6d6559cc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00610.o)
+ .idata$7 0x6d6559d0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00611.o)
+ .idata$7 0x6d6559d4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00616.o)
+ .idata$7 0x6d6559d8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00619.o)
+ .idata$7 0x6d6559dc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00624.o)
+ .idata$7 0x6d6559e0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00625.o)
+ .idata$7 0x6d6559e4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00634.o)
+ .idata$7 0x6d6559e8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00636.o)
+ .idata$7 0x6d6559ec 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00638.o)
+ .idata$7 0x6d6559f0 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00640.o)
+ .idata$7 0x6d6559f4 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00642.o)
+ .idata$7 0x6d6559f8 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00644.o)
+ .idata$7 0x6d6559fc 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00648.o)
+ .idata$7 0x6d655a00 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dzncs00670.o)
+ .idata$7 0x6d655a04 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libmsvcrt.a(dznct.o)
+ 0x6d655a04 _libmsvcrt_a_iname
+ .idata$7 0x6d655a10 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00053.o)
+ .idata$7 0x6d655a14 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00146.o)
+ .idata$7 0x6d655a18 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00179.o)
+ .idata$7 0x6d655a1c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00181.o)
+ .idata$7 0x6d655a20 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00235.o)
+ .idata$7 0x6d655a24 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00246.o)
+ .idata$7 0x6d655a28 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00247.o)
+ .idata$7 0x6d655a2c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00249.o)
+ .idata$7 0x6d655a30 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00251.o)
+ .idata$7 0x6d655a34 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00252.o)
+ .idata$7 0x6d655a38 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00253.o)
+ .idata$7 0x6d655a3c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00254.o)
+ .idata$7 0x6d655a40 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00346.o)
+ .idata$7 0x6d655a44 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00383.o)
+ .idata$7 0x6d655a48 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00429.o)
+ .idata$7 0x6d655a4c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00430.o)
+ .idata$7 0x6d655a50 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00438.o)
+ .idata$7 0x6d655a54 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00482.o)
+ .idata$7 0x6d655a58 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00483.o)
+ .idata$7 0x6d655a5c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00494.o)
+ .idata$7 0x6d655a60 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00506.o)
+ .idata$7 0x6d655a64 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00518.o)
+ .idata$7 0x6d655a68 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00519.o)
+ .idata$7 0x6d655a6c 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00522.o)
+ .idata$7 0x6d655a70 0x4 /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbs00574.o)
+ .idata$7 0x6d655a74 0xc /opt/xmingw/lib/gcc-lib/i386-mingw32msvc/3.3.1/../../../../i386-mingw32msvc/lib/libuser32.a(dynvbt.o)
+ 0x6d655a74 _libuser32_a_iname
+
+.CRT
+ *(SORT(.CRT$*))
+
+.endjunk 0x6d656000 0x0
+ 0x6d656000 PROVIDE (end, .)
+ 0x6d656000 PROVIDE (_end, .)
+ 0x6d656000 __end__ = .
+
+.rsrc 0x6d656000 0x2800
+ *(.rsrc)
+ .rsrc 0x6d656000 0x270c res.o
+ *(SORT(.rsrc$*))
+
+.reloc 0x6d659000 0x1a00
+ *(.reloc)
+ .reloc 0x6d659000 0xc78 FilterFoundry.exp
+ .reloc 0x6d659c78 0xc78 dll stuff
+
+.stab
+ *(.stab)
+
+.stabstr
+ *(.stabstr)
+OUTPUT(dist/FilterFoundry.8bf pei-i386)
+LOAD dll stuff
/trunk/dist/README.txt
0,0 → 1,18
FilterFoundry
Copyright (C) 2003-4 Toby Thain <toby@telegraphics.com.au>
 
This is a Photoshop filter plugin compatible with Adobe's Filter Factory.
 
For more information, see:
http://thepluginsite.com/knowhow/ffpg/ffpg.htm
 
Please note the following limitations of version 1.0.
* Trig functions use the Mac Filter Factory definition,
a range of -1024..+1024 (rather than Windows FF's -512..+512).
This is likely to be a user preference in future.
 
* The 68K Macintosh build requires 68020 or later CPU and FPU.
 
Contact support@telegraphics.com.au with any questions, comments, bug fixes etc.
 
/trunk/dist/examples/bwtv.afs
/trunk/dist/examples/checks.afs
/trunk/dist/examples/chess.afs
/trunk/dist/examples/conv.afs
/trunk/dist/examples/doublevision.afs
/trunk/dist/examples/edge2.afs
/trunk/dist/examples/edgedetect.afs
/trunk/dist/examples/life.afs
/trunk/dist/examples/lolo2.afs
/trunk/dist/examples/lolo3.afs
/trunk/dist/examples/octagon.afs
/trunk/dist/examples/rgb-gingham.afs
/trunk/dist/examples/spacy.afs
/trunk/dist/examples/twisted.afs
/trunk/dist/examples/wobble-2d.afs
/trunk/dist/examples/wobble.afs
/trunk/dist/examples/wobble2.afs
/trunk/dist/releases/FilterFoundry(68K)-0.5b4.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-0.5b7.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-0.6b1.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-0.6b3.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-0.6b4.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-0.8b1.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-0.8b2.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-0.9b1.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-0.9b2.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-0.9b3.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-0.9b4.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-0.9b5.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-0.9b6.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-1.0b1.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-1.0f1.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-1.0f3.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-1.0f6.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-1.1b1.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-1.1b2.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-1.1b5.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-1.1b6.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-1.1b7.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry(68K)-1.1b8.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-0.5b3.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-0.5b4.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-0.5b5.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-0.5b7.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-0.6b1.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-0.6b3.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-0.6b4.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-0.7b1.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-0.7b2.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-0.7b3.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-0.8b1.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-0.8b2.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-0.8b3.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-0.9b1.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-0.9b2.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-0.9b3.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-0.9b4.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-0.9b5.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-0.9b6.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.0b1.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.0f1-GPL-src.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.0f1.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.0f2.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.0f3.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.0f4-GPL-src.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.0f4-win.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.0f5-GPL-src.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.0f5-win.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.0f5r2-GPL-src.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.0f6-GPL-src.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.0f6-win.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.0f6.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.1a1.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.1b1-GPL-src.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.1b1-win.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.1b1.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.1b3-win.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.1b4-win.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.1b5.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.1b6-GPL-src.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.1b6-win.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.1b6.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.1b7-GPL-src.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.1b7-win.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.1b7.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.1b8-GPL-src.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.1b8-win.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-1.1b8.sit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-win-0.5b2.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-win-0.5b4.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-win-0.5b5.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-win-0.5b6.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-win-0.6b1.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-win-0.6b2.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-win-0.6b3.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-win-0.6b4.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-win-0.8b4.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-win-0.8b5.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-win-0.9b1.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-win-0.9b2.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-win-0.9b3.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-win-0.9b4.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-win-1.0b1.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-win-1.0f1.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/dist/releases/FilterFoundry-win-1.0f3.zip
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/exports.def
0,0 → 1,3
EXPORTS
 
PluginMain
/trunk/ff.h
0,0 → 1,128
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#include "carbonstuff.h"
 
#include "spconfig.h"
#include "PIFilter.h"
 
#include "entry.h"
#include "choosefile.h"
 
#include "ui.h"
#include "file_compat.h"
#include "symtab.h"
#include "PARM.h"
 
enum{
TAB = 011,
LF = 012,
CR = 015,
 
CHUNK_ROWS = 64,
 
PARM_TYPE = 'PARM',
PARM_ID = 16000,
TEXT_FILETYPE = 'TEXT',
SIG_SIMPLETEXT = 'ttxt',
PS_FILTER_FILETYPE = '8BFM'
};
 
typedef struct{
Boolean standalone,parmloaded;
PARM_T parm;
} globals_t;
 
extern globals_t *gdata;
extern FilterRecordPtr gpb;
 
extern struct node *tree[4];
extern char *err[4];
extern int errpos[4],errstart[4],nplanes;
extern value_type slider[8],cell[0x100],map[4][0x100];
extern char *expr[4];
 
extern int tokpos,tokstart,varused[];
extern char *errstr;
 
#if 1
#define PINEWHANDLE gpb->handleProcs->newProc
#define PIDISPOSEHANDLE gpb->handleProcs->disposeProc
#define PIGETHANDLESIZE gpb->handleProcs->getSizeProc
#define PISETHANDLESIZE gpb->handleProcs->setSizeProc
#define PILOCKHANDLE gpb->handleProcs->lockProc
#define PIUNLOCKHANDLE gpb->handleProcs->unlockProc
#else
// avoid host callbacks for AE
#define PINEWHANDLE NewHandle
#define PIDISPOSEHANDLE DisposeHandle
#define PIGETHANDLESIZE GetHandleSize
#define PISETHANDLESIZE(h,s) ( SetHandleSize(h,s),MemError() )
#define PILOCKHANDLE(h,f) ( HLock(h),*(h) )
#define PIUNLOCKHANDLE HUnlock
#endif
 
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#define MAX(a,b) ((a) > (b) ? (a) : (b))
 
#define DBG(x)
//#define DEBUG
 
 
DLLEXPORT MACPASCAL
void ENTRYPOINT(short selector,FilterRecordPtr epb,long *data,short *result);
 
void DoPrepare (FilterRecordPtr epb);
void DoStart (FilterRecordPtr epb);
OSErr DoContinue (FilterRecordPtr epb);
void DoFinish (FilterRecordPtr epb);
void RequestNext (FilterRecordPtr epb,long);
 
Boolean readparams(Handle h,Boolean alerts,char **reason);
Handle readfileintohandle(FILEREF r);
Boolean readfile(StandardFileReply *sfr,char **reason);
Boolean readPARM(Ptr h,PARM_T *parm,char **reasonstr);
 
OSErr saveparams(Handle h);
OSErr savehandleintofile(Handle h,FILEREF r);
Boolean savefile(StandardFileReply *sfr);
 
OSErr make_standalone(StandardFileReply *sfr);
 
Boolean setup(FilterRecordPtr pb);
void evalpixel(unsigned char *outp,unsigned char *inp);
OSErr process(FilterRecordPtr pb,Boolean progress,
Rect *inRect,Rect *filterRect,Rect *outRect,
void *outData,long outRowBytes);
OSErr process_scaled(FilterRecordPtr pb,Boolean progress,
Rect *inRect,Rect *filterRect,Rect *outRect,
void *outData,long outRowBytes,double zoom);
 
unsigned long printablehash(unsigned long hash);
long fixpipl(PIPropertyList *pipl,long origsize,StringPtr title);
long fixaete(unsigned char *p,long origsize,StringPtr title);
 
Boolean loadfile(StandardFileReply *sfr,char **reason);
Boolean readPARMresource(HMODULE hm,char **reason);
 
void dbglasterror(char*);
/trunk/ffgraphic.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/funcs.c
0,0 → 1,302
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#ifdef MAC_ENV
#include <fp.h>
#endif
 
#include <math.h>
#include <stdlib.h>
 
#ifndef PARSERTEST
#include "ff.h"
#endif
#include "funcs.h"
#include "y.tab.h"
 
#define RINT //no rounding for now
 
//#if TARGET_API_MAC_CARBON
// this is another incompatibility between Classic stdclib and OS X stdclib
// ***FIXME: need to access real OS X includes for Carbon build
//#undef RAND_MAX
//#define RAND_MAX 0x7fffffff
//#endif
 
extern value_type slider[],cell[],var[],map[][0x100];
 
/* src(x,y,z) Channel z for the pixel at coordinates x,y */
value_type ff_src(value_type x,value_type y,value_type z){
#ifdef PARSERTEST
return 0;
#else
if(x<0)
x = 0;
else if(x>=var['X'])
x = var['X']-1;
if(y<0)
y = 0;
else if(y>=var['Y'])
y = var['Y']-1;
return z>=0 && z<var['Z'] ? ((unsigned char*)gpb->inData)[ (long)gpb->inRowBytes*y + (long)nplanes*x + z ] : 0;
#endif
}
 
/* rad(d,m,z) Channel z in the source image, which is m units away, at an
angle of d, from the center of the image */
value_type ff_rad(value_type d,value_type m,value_type z){
return ff_src(ff_r2x(d,m)+var['X']/2,ff_r2y(d,m)+var['Y']/2,z);
}
 
/* ctl(i) Value of slider i, where i is an integer between 0 and 7, inclusive */
value_type ff_ctl(value_type i){
return i>=0 && i<=7 ? slider[i] : 0;
}
 
/* val(i,a,b) Value of slider i, mapped onto the range a to b */
value_type ff_val(value_type i,value_type a,value_type b){
return ((long)ff_ctl(i)*(b-a))/255 + a;
}
 
/* map(i,n) Item n from mapping table i, where i is an integer between
0 and 3, inclusive, and n is and integer between 0 and 255,
inclusive */
value_type ff_map(value_type i,value_type n){
/*
if( i>=0 && i<=3 && n>=0 && n<=255 ){
int H = slider[i*2],L = slider[i*2+1];
return n<=L || H==L ? 0 : ( n>=H ? 255 : ((n-L)*255L)/(H-L) );
}else
return 0;
*/
// this code is from GIMP User Filter
value_type x = ff_ctl(i*2),
y = ff_ctl(i*2+1);
return abs(((long)n*(y-x) / 255)+x);
}
 
/* min(a,b) Lesser of a and b */
value_type ff_min(value_type a,value_type b){
return a < b ? a : b;
}
 
/* max(a,b) Greater of a and b */
value_type ff_max(value_type a,value_type b){
return a > b ? a : b;
}
 
/* abs(a) Absolute value of a */
value_type ff_abs(value_type a){
return abs(a);
}
 
/* add(a,b,c) Sum of a and b, or c, whichever is lesser */
value_type ff_add(value_type a,value_type b,value_type c){
return ff_min(a+b,c);
}
 
/* sub(a,b,c) Difference of a and b, or c, whichever is greater */
value_type ff_sub(value_type a,value_type b,value_type c){
return ff_max(ff_dif(a,b),c);
}
 
/* dif(a,b) Absolute value of the difference of a and b */
value_type ff_dif(value_type a,value_type b){
return abs(a-b);
}
 
/* rnd(a,b) Random number between a and b, inclusive */
value_type ff_rnd(value_type a,value_type b){
return (int)((abs(a-b)+1)*(rand()/(RAND_MAX+1.))) + ff_min(a,b);
// return ((unsigned)rand() % (ff_dif(a,b)+1)) + ff_min(a,b);
}
 
/* mix(a,b,n,d) Mixture of a and b by fraction n/d, a*n/d+b*(d-n)/d */
value_type ff_mix(value_type a,value_type b,value_type n,value_type d){
return d ? ((long)a*n)/d + ((long)b*(d-n))/d : 0;
}
 
/* scl(a,il,ih,ol,oh) Scale a from input range (il to ih)
to output range (ol to oh) */
value_type ff_scl(value_type a,value_type il,value_type ih,
value_type ol,value_type oh){
return ih==il ? 0 : ol + ((long)(oh-ol)*(a-il))/(ih-il);
}
 
/* adapted from http://remus.rutgers.edu/~rhoads/Code/isqrt.c */
/* also see http://www.freaknet.org/martin/tape/gos/misc/personal/msc/sqrt/sqrt.c */
#define NBITS (sizeof(long)*8)
#define TOP2BITS(x) (x>>(NBITS-2))
 
unsigned long isqrt (unsigned long x)
{
int i;
unsigned long a = 0, e = 0, r = 0;
 
 
for (i=0; i < (NBITS >> 1); i++)
{
r <<= 2;
r += TOP2BITS(x);
x <<= 2;
 
a <<= 1;
e = (a<<1) | 1;
 
if (r >= e)
{
r -= e;
a++;
}
}
 
return a;
}
 
/* sqr(x) Square root of x */
value_type ff_sqr(value_type x){
return x < 0 ? 0 : isqrt(x);
}
 
/* sin(x) Sine function of x, where x is an integer between 0 and
1024, inclusive, and the value returned is an integer
between -512 and 512, inclusive (Windows) or -1024 and
1024, inclusive (Mac OS) */
value_type ff_sin(value_type x){
return ff_cos(x-256); //RINT(TRIGAMP*sin(FFANGLE(x)));
}
 
/* cos(x) Cosine function of x */
value_type ff_cos(value_type x){
return costab[abs(x) % COSTABSIZE]; //RINT(TRIGAMP*cos(FFANGLE(x)));
}
 
/* tan(x)
Bounded tangent function of x, where x is an integer
between -256 and 256, inclusive, and the value returned is
*/
value_type ff_tan(value_type x){
return tantab[(x+256) % TANTABSIZE]; //RINT(TRIGAMP*tan(FFANGLE(x)));
}
 
/* r2x(d,m) x displacement of the pixel m units away, at an angle of d,
from an arbitrary center */
value_type ff_r2x(value_type d,value_type m){
return RINT(m*cos(FFANGLE(d)));
}
 
/* r2y(d,m) y displacement of the pixel m units away, at an angle of d,
from an arbitrary center */
value_type ff_r2y(value_type d,value_type m){
return RINT(m*sin(FFANGLE(d)));
}
 
/* c2d(x,y) Angle displacement of the pixel at coordinates x,y */
/* note, sign of y difference is negated, as we are dealing with top-down coordinates
angle is "observed" */
value_type ff_c2d(value_type x,value_type y){
return RINT(TO_FFANGLE(atan2(-y,-x))); /* FIXME: why must we negate x here? */
}
 
/* c2m(x,y) Magnitude displacement of the pixel at coordinates x,y */
value_type ff_c2m(value_type x,value_type y){
return isqrt((long)x*x + (long)y*y);
}
 
/* get(i) Returns the current cell value at i */
value_type ff_get(value_type i){
return i>=0 && i<=0xff ? cell[i] : 0;
}
 
/* put(v,i) Puts the new value v into cell i */
value_type ff_put(value_type v,value_type i){
if(i>=0 && i<=0xff)
cell[i] = v;
return v;
}
 
value_type ff_cnv(value_type m11,value_type m12,value_type m13,
value_type m21,value_type m22,value_type m23,
value_type m31,value_type m32,value_type m33,
value_type d ){
long total = 0;
int x=var['x'],y=var['y'];
unsigned char *p = (unsigned char*)gpb->inData + y*(long)gpb->inRowBytes + (x-1)*(long)nplanes + var['z'];
/* left column */
if(x > 0){
if(y > 0) total += m11*p[ -gpb->inRowBytes ];
total += m21*p[ 0 ];
if(y < var['Y']-1) total += m31*p[ gpb->inRowBytes ];
}
 
/* centre column */
p += nplanes;
if(y > 0) total += m12*p[ -gpb->inRowBytes ];
total += m22*p[ 0 ];
if(y < var['Y']-1) total += m32*p[ gpb->inRowBytes ];
 
/* right column */
if(x < var['X']-1){
p += nplanes;
if(y > 0) total += m13*p[ -gpb->inRowBytes ];
total += m23*p[ 0 ];
if(y < var['Y']-1) total += m33*p[ gpb->inRowBytes ];
}
 
return d ? total/d : 0;
}
 
value_type zero_val = 0;
 
/* predefined symbols */
struct sym_rec predefs[]={
/* functions */
{0,TOK_FN3,"src", (pfunc_type)ff_src, 0},
{0,TOK_FN3,"rad", (pfunc_type)ff_rad, 0},
{0,TOK_FN1,"ctl", (pfunc_type)ff_ctl, 0},
{0,TOK_FN3,"val", (pfunc_type)ff_val, 0},
{0,TOK_FN2,"map", (pfunc_type)ff_map, 0},
{0,TOK_FN2,"min", (pfunc_type)ff_min, 0},
{0,TOK_FN2,"max", (pfunc_type)ff_max, 0},
{0,TOK_FN1,"abs", (pfunc_type)ff_abs, 0},
{0,TOK_FN3,"add", (pfunc_type)ff_add, 0},
{0,TOK_FN3,"sub", (pfunc_type)ff_sub, 0},
{0,TOK_FN2,"dif", (pfunc_type)ff_dif, 0},
{0,TOK_FN2,"rnd", (pfunc_type)ff_rnd, 0},
{0,TOK_FN4,"mix", (pfunc_type)ff_mix, 0},
{0,TOK_FN5,"scl", (pfunc_type)ff_scl, 0},
{0,TOK_FN1,"sqr", (pfunc_type)ff_sqr, 0},
{0,TOK_FN1,"sin", (pfunc_type)ff_sin, 0},
{0,TOK_FN1,"cos", (pfunc_type)ff_cos, 0},
{0,TOK_FN1,"tan", (pfunc_type)ff_tan, 0},
{0,TOK_FN2,"r2x", (pfunc_type)ff_r2x, 0},
{0,TOK_FN2,"r2y", (pfunc_type)ff_r2y, 0},
{0,TOK_FN2,"c2d", (pfunc_type)ff_c2d, 0},
{0,TOK_FN2,"c2m", (pfunc_type)ff_c2m, 0},
{0,TOK_FN1,"get", (pfunc_type)ff_get, 0},
{0,TOK_FN2,"put", (pfunc_type)ff_put, 0},
{0,TOK_FN10,"cnv",(pfunc_type)ff_cnv, 0},
/* predefined variables (names >1 characters) */
{0,TOK_VAR,"dmin",0, &zero_val},
{0,TOK_VAR,"mmin",0, &zero_val},
{0,0,0,0,0}
};
 
/trunk/funcs.h
0,0 → 1,74
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include <math.h>
 
 
#ifndef M_PI
#define M_PI 3.14159265358979323846264338327
#endif
 
 
#include "symtab.h"
 
enum{ COSTABSIZE=1024,TANTABSIZE=512 };
 
extern value_type costab[],tantab[];
 
#define DEG2RAD(x) ((x)*M_PI/180.)
#define RAD2DEG(x) ((x)*180./M_PI)
 
/* [trig functions return] an integer between -512 and 512, inclusive (Windows)
or -1024 and 1024, inclusive (Mac OS) */
#define TRIGAMP 1024
#define FFANGLE(v) ((v)*M_PI/512.)
#define TO_FFANGLE(v) ((v)*512./M_PI)
 
#define INITRANDSEED() srand(691204)
 
value_type ff_src(value_type x,value_type y,value_type z);
value_type ff_rad(value_type d,value_type m,value_type z);
value_type ff_ctl(value_type i);
value_type ff_val(value_type i,value_type a,value_type b);
value_type ff_map(value_type i,value_type n);
value_type ff_min(value_type a,value_type b);
value_type ff_max(value_type a,value_type b);
value_type ff_abs(value_type a);
value_type ff_add(value_type a,value_type b,value_type c);
value_type ff_sub(value_type a,value_type b,value_type c);
value_type ff_dif(value_type a,value_type b);
value_type ff_rnd(value_type a,value_type b);
value_type ff_mix(value_type a,value_type b,value_type n,value_type d);
value_type ff_scl(value_type a,value_type il,value_type ih,
value_type ol,value_type oh);
unsigned long isqrt (unsigned long x);
value_type ff_sqr(value_type x);
value_type ff_sin(value_type x);
value_type ff_cos(value_type x);
value_type ff_tan(value_type x);
value_type ff_r2x(value_type d,value_type m);
value_type ff_r2y(value_type d,value_type m);
value_type ff_c2d(value_type d,value_type m);
value_type ff_c2m(value_type d,value_type m);
value_type ff_get(value_type i);
value_type ff_put(value_type v,value_type i);
value_type ff_cnv(value_type m11,value_type m12,value_type m13,
value_type m21,value_type m22,value_type m23,
value_type m31,value_type m32,value_type m33,
value_type d );
/trunk/gentab
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/gentab.c
0,0 → 1,49
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include <stdio.h>
#include <math.h>
 
#include "funcs.h"
 
 
int main(){
int i;
 
puts("#include \"funcs.h\"\n");
fputs("value_type costab[COSTABSIZE] = {",stdout);
for(i=0;i<COSTABSIZE;++i){
if(!(i%16)){
putchar('\n');
putchar('\t');
}
printf("%5d,",(int)( TRIGAMP*cos(FFANGLE(i)) ));
}
fputs("},\ntantab[TANTABSIZE] = {",stdout);
for(i=0;i<TANTABSIZE;++i){
if(!(i%16)){
putchar('\n');
putchar('\t');
}
printf("%5d,",(int)( TRIGAMP*tan(FFANGLE(i-256)) ));
}
puts("};");
return EXIT_SUCCESS;
}
/trunk/jglatt/Resource.c
0,0 → 1,1951
/* this code by Jeff Glatt, http://www.borg.com/~jglatt/ */
 
/* Based on work by Erik Kallen. His original sources were in C++.
* These have been converted and rewritten in plain C, and turned into
* a Dynamic Link Library.
*
* There are 2 important limitations to this code:
*
* 1) It doesn't work on an EXE/DLL that doesn't already have an ".rsrc"
* section. In order to do otherwise, we would need to add features to
* rewrite the PE header and perhaps fix up relocations in code sections.
*
* 2) It can't modify the resources of an EXE/DLL whose ".rsrc" section
* comes before relocatable code. In order to do otherwise, we would
* need to add features to fix-up the code sections of the EXE/DLL. (If
* someone wants to add them, go right ahead).
*
* The benefits of plain C code:
*
* 1) No hassle with exceptions, especially raised by memory allocations
* such as C++'s new, nor no need for C++ language extensions nor
* C++ compiler library concerns.
* 2) Because of 1, it was very easy to convert this to a DLL for use in
* a program written in any language.
* 3) It can be compiled with any C compiler, including freeware offerings.
*
* Format of a .rsrc section of a PE file:
* NOTE: A bunch of RSRCDIRENTRY always follow a RSRCDIRTABLEHEAD. The
* number of RSRCDIRENTRY is RSRCDIRTABLEHEAD.NumNameEntries +
* RSRCDIRTABLEHEAD.NumIDEntries, and the RSRCDIRENTRY's for the items
* with name-strings come first (before the items with ID-numbers).
*
* master RSRCDIRTABLEHEAD
* Named Type 1 (RSRCDIRENTRY)
* Named Type 2
* ...
* Named Type XXX
* ID Type 1 (RSRCDIRENTRY)
* ID Type 2
* ...
* ID Type XXX
 
* RSRCDIRTABLEHEAD for Named Type 1
* Named Item 1 for Named Type 1 (RSRCDIRENTRY)
* Named Item 2 for Named Type 1
* ...
* Named Item XX for Named Type 1
* ID'ed Item 1 for Named Type 1 (RSRCDIRENTRY)
* ID'ed Item 2 for Named Type 1
* ...
* ID'ed Item XX for Type 1
 
* RSRCDIRTABLEHEAD for Named Item 1 for Named Type 1
* Language 1 for Named Item 1 for Named Type 1 (RSRCDIRENTRY)
* Language 2 for Named Item 1 for Named Type 1
* ...
* Language XXX for Named Item 1 for Named Type 1
 
* RSRCDIRTABLEHEAD for ID'ed Item 1 for Named Type 1
* Language 1 for ID'ed Item 1 for Named Type 1 (RSRCDIRENTRY)
* Language 2 for ID'ed Item 1 for Named Type 1
* ...
* Language XXX for ID'ed Item 1 for Named Type 1
 
* RSRCDATAENTRY for Language 1 for Named Item 1 for Named Type 1
* RSRCDATAENTRY for Language 2 for Named Item 1 for Named Type 1
* ...
* RSRCDATAENTRY for Language 1 for ID'ed Item 1 for Named Type 1
* RSRCDATAENTRY for Language 2 for ID'ed Item 1 for Named Type 1
* ...
*/
 
#include <windows.h>
#include "UpdateResource.h"
#include "RsrcStructs.h"
 
 
 
 
////////////////////////// Global data /////////////////////////
 
#if defined(_MSC_VER)
#pragma data_seg("Shared")
#endif
 
const unsigned char RsrcSectionName[] = ".rsrc";
const long DaysInLeapYear[] = {30, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365};
const long DaysInYear[] = {30, 58, 89, 119, 150, 180, 211, 242, 272, 303, 333, 364};
 
#if defined(_MSC_VER)
#pragma data_seg()
#endif
 
unsigned long TimezoneOffset = 0;
unsigned char DaylightFlag = 1;
 
 
 
 
 
////////////////////////////////////////////////////////////////////////
// Helper functions called only internally, not by some application.
 
#define _BASE_DOW 4
#define _LEAP_YEAR_ADJUST 17L
#define _BASE_YEAR 70L
 
/* ********************** set_time_zone() ********************
* Fetches the values for 'TimezoneOffset' (ie, # of seconds
* difference between the system's current time zone and GMT)
* and DaylightFlag (ie, 1 if the system is set to observe
* USA Daylight Savings Time).
*
* NOTES: This must be called once before any of the other
* time functions are called, such as FTIME, GMTIME, LOCALTIME,
* etc.
*/
 
static void set_time_zone(void)
{
TIME_ZONE_INFORMATION tzinfo;
 
// Get timezone information
if (GetTimeZoneInformation(&tzinfo) != 0xffffffff)
{
// Calculate a time offset (in seconds) from GMT
TimezoneOffset = tzinfo.Bias * 60L;
 
if (tzinfo.StandardDate.wMonth)
TimezoneOffset += (tzinfo.StandardBias * 60L);
 
// Check to see if daylight savings is not applicable
if (!tzinfo.DaylightDate.wMonth && !tzinfo.DaylightBias)
DaylightFlag = 0;
}
}
 
/* ************************* is_savings() ***********************
* Checks if a Date/Time falls within USA Daylight Savings Time.
*
* This is the rule for years before 1987:
* A time is in DST if it is on or after 02:00:00 on the last Sunday
* in April and before 01:00:00 on the last Sunday in October.
* This is the rule for years starting with 1987:
* A time is in DST if it is on or after 02:00:00 on the first Sunday
* in April and before 01:00:00 on the last Sunday in October.
*
* tb = Pointer to TM struct holding the Date/Time.
*
* RETURNS: 1 if in DST, 0 otherwise.
*/
 
static BOOL is_savings(TM *tb)
{
int yr;
int mdays;
int critsun;
 
// If Year < 1967, then it's before DST was instituted. Also, if the
// month is before April or after October, it cannot be DST.
if (tb->tm_year < 67 || tb->tm_mon < 3 || tb->tm_mon > 9)
return(0);
 
// If the month is after April and before October, it must be DST.
if (tb->tm_mon > 3 && tb->tm_mon < 9)
return(1);
 
// Month is April or October, so we need to see if it falls between
// appropriate Sundays.
 
// For years before 1987 (or after 1986), we check if the day is on or
// after 2:00 am on the last (or first) Sunday in April, or before 1:00
// am on the last Sunday in October.
 
// We can get the Day of Year (0..365) from the tm struct. We need to
// calculate the Day of Year for the last (or first) Sunday in this month,
// April or October, and then do the comparison.
 
// To calculate the Day of Year of the last Sunday:
// 1. Get the Day Of Year of the last day of the current month (Apr or Oct)
// 2. Determine the Day of Week of that day
// 3. Subtract Day of Week from Day of Year
 
// To calculate the Day of Year of the first Sunday:
// 1. Get the Day of Year of the 7th day of the current month (April)
// 2. Determine the Day of Week of that day
// 3. Subtract Day of Week from Day of Year
 
// First we get #1. The Day of Year for the first day of each month is
// stored in _DaysInYear[]. They're all off by -1
if (((yr = tb->tm_year) > 86) && (tb->tm_mon == 3))
mdays = 7 + DaysInYear[tb->tm_mon - 1];
else
mdays = DaysInYear[tb->tm_mon];
 
// If this is a leap-year, add an extra day
if (!(yr & 3))
mdays++;
 
// Now get #2. We know the Day of Week of January 1, 1970, which is
// defined as the constant _BASE_DOW. Add to this the number of elapsed
// days since then, take the result mod 7, and we have our day number.
 
// To obtain #3, we just subtract this from mdays.
critsun = mdays - ((mdays + 365 * (yr - 70) + ((yr - 1) >> 2) - _LEAP_YEAR_ADJUST + _BASE_DOW) % 7);
 
return ( (tb->tm_mon == 3) ?
((tb->tm_yday > critsun) || ((tb->tm_yday == critsun) && (tb->tm_hour >= 2))) :
((tb->tm_yday < critsun) || ((tb->tm_yday == critsun) && (tb->tm_hour < 1))) );
}
 
static DWORD get_time(void)
{
SYSTEMTIME dt;
DWORD totaldays;
DWORD totaltime;
TM tb;
 
GetLocalTime(&dt);
 
dt.wYear -= 1900;
totaldays = dt.wDay + DaysInYear[dt.wMonth - 1];
if (!(dt.wYear & 3) && (dt.wMonth > 2)) totaldays++;
totaltime = ((((DWORD)(dt.wYear - _BASE_YEAR) * 365L + ((dt.wYear - 1) >> 2) - _LEAP_YEAR_ADJUST + totaldays) * 24L + dt.wHour) * 60L + dt.wMinute) * 60L + dt.wSecond + TimezoneOffset;
 
if (DaylightFlag)
{
tb.tm_yday = totaldays;
tb.tm_year = dt.wYear;
tb.tm_mon = dt.wMonth - 1;
tb.tm_hour = dt.wHour;
if (is_savings(&tb)) totaltime -= 3600L;
}
 
return(totaltime);
}
 
/************************ wstrnicmp_a() ************************
* Compares 2 UNICODE strings, case-insensitive. The second
* string's nul-termination determines when to stop the
* compare, and the second string must be shorter or same size
* as the first.
*
* str1 = Pointer to first string.
* str2 = Pointer to the second string.
*
* RETURNS: 0 if equal or non-zero if not equal.
*/
 
static DWORD wstrnicmp_a(const unsigned short *str1, const unsigned short *str2)
{
unsigned short chr1, chr2;
 
do
{
if (!(chr2 = (unsigned short)CharUpperA((LPTSTR)*(str2)++))) return(0);
chr1 = (unsigned short)CharUpperA((LPTSTR)*(str1)++);
} while (chr2 == chr1);
 
return(chr2 - chr1);
}
 
/************************ strlen_w() ************************
* Counts the length of a nul-terminated UNICODE string.
*
* RETURNS: Length in WCHARs (ie, shorts).
*/
 
static DWORD strlen_w(LPCWSTR str)
{
LPCWSTR strstart;
 
strstart = str;
while (*(str)++);
 
return((str - strstart - 1) >> 1);
}
 
////////////////////////////////////////////////////////////////////////
// This is the BeginUpdateResource() API, and any helper functions.
// (Helper functions are called only by BeginUpdateResource(), not by
// some application).
 
/************************** getRsrcString() ***************************
* Puts a nul-terminated copy of the passed WCHAR[] string into our list
* of strings, and returns a pointer to that copy.
*
* pInfo = Pointer to RSRCINFO for the current exe/dll.
* pRsrc = Pointer to the string resource.
* offset = Byte offset (from pRsrc) to where the length of
* string is stored as a WORD.
*
* RETURN: Pointer to nul-terminated WCHAR[] copy of pRsrc's string, or
* 0 if a memory allocation error.
*/
 
static LPWSTR getRsrcString(LPRSRCINFO pInfo, char *pRsrc, DWORD offset)
{
LPSTRINGHEAD lpStr, lpPrev;
LPWSTR orig;
WORD size;
 
// Get the length of the string
size = *(WORD *)(pRsrc + offset);
 
// Get the start of the WCHAR[] string
orig = (LPWSTR)(pRsrc + offset + 2);
 
// See if we already have a string resource matching this string. If so, return that string
lpPrev = (LPSTRINGHEAD)&pInfo->vtrStrings;
if ((lpStr = pInfo->vtrStrings))
{
do
{
if (lpStr->Size == size && !wstrnicmp_a(orig, &lpStr->String[0])) goto gotit;
lpPrev = lpStr;
} while ((lpStr = lpStr->Next));
}
 
// No, we don't already have this string. Create a nul-terminated copy and put it into our list of resources.
// NOTE: We are copying a WSTR[] so size is 2 bytes per char (plus 2 bytes of nul)
if ((lpStr = (LPSTRINGHEAD)GlobalAlloc(GMEM_FIXED, (size << 1) + sizeof(STRINGHEAD))))
{
lpStr->Size = size;
// lpStr->Next = pInfo->vtrStrings;
// pInfo->vtrStrings = lpStr;
 
lpPrev->Next = lpStr;
lpStr->Next = 0;
 
memcpy(&lpStr->String[0], orig, size << 1);
lpStr->String[size] = 0;
gotit: return(&lpStr->String[0]);
}
 
return(0);
}
 
/************************** linkIntoNameList() *************************
* Creates a RESOURCENAME struct for the specified Type and links it
* into that Type's list of RESOURCENAMEs, and returns a pointer to that
* RESOURCENAME.
*
* pInfo = Pointer to RESOURCETYPE.
* dwName = Name of resource. Could be a DWORD number or a
* pointer to a string.
* info = Pointer to RESOURCEINFO, or 0 if none.
*
* RETURN: Pointer to RESOURCENAME for this Type, or 0 if a memory
* allocation error.
*/
 
static LPRESOURCENAME linkIntoNameList(LPRESOURCETYPE type, LPWSTR dwName, LPRESOURCEINFO info)
{
LPRESOURCENAME lpRes, lpPrev;
 
// See if we already have a RESOURCENAME matching this name. If so, return that RESOURCENAME
lpPrev = (LPRESOURCENAME)&type->Names;
if ((lpRes = type->Names))
{
do
{
if (lpRes->NameString == dwName) goto gotit;
lpPrev = lpRes;
} while ((lpRes = lpRes->Next));
}
 
// No, we don't already have this RESOURCENAME. Create a new RESOURCENAME and link it at the tail
// of our list of named resources for this Type
if ((lpRes = (LPRESOURCENAME)GlobalAlloc(GMEM_FIXED, sizeof(RESOURCENAME))))
{
lpPrev->Next = lpRes;
lpRes->Next = 0;
lpRes->Languages = 0;
lpRes->NameString = dwName; // Store the name
 
memcpy(&lpRes->Characteristics, info, sizeof(RESOURCEINFO));
}
 
gotit:
return(lpRes);
}
 
/*************************** add_resource() *****************************
* Called by fillRsrcEntries() to parse a resource (ie, load/store info
* about each language-specific instance of this Type/Name of resource).
*
* pInfo = Pointer to RSRCINFO for the current exe/dll.
*
* RETURNS: TRUE if successful, or FALSE if an error.
*/
 
static BOOL add_resource(LPRSRCINFO pInfo, char *pRsrc, RSRCDIRENTRY *pNameEntry, LPWSTR dwName, LPRESOURCETYPE type)
{
LPRESOURCENAME name;
RSRCDIRTABLEHEAD *pLangHead;
RSRCDIRENTRY *pLangEntry;
DWORD langIndex;
 
// Locate the RSRCDIRTABLEHEAD for this named resource's languages
pLangHead = (RSRCDIRTABLEHEAD *)(pRsrc + (pNameEntry->SubdirectoryRVA & ~0x80000000));
 
// Allocate a RESOURCENAME to store info about this RSRCDIRTABLEHEAD, and link into list
if (!(name = (LPRESOURCENAME)linkIntoNameList(type, dwName, (LPRESOURCEINFO)pLangHead))) goto bad;
 
// Locate the RSRCDIRENTRY for the first language (immediately follows the RSRCDIRTABLEHEAD)
pLangEntry = (RSRCDIRENTRY *)((char *)pLangHead + sizeof(RSRCDIRTABLEHEAD));
 
// Do all of the RSRCDIRENTRY's (ie, language versions of this resource)
if ((langIndex = pLangHead->NumIDEntries))
{
do
{
RSRCDATAENTRY *pData;
LPRESOURCE rsc;
 
// Can't have a subdir here, so we don't find any RSRCDIRTABLEHEAD struct
 
// Allocate a RESOURCE struct to store info
if (!(rsc = (LPRESOURCE)GlobalAlloc(GMEM_FIXED, sizeof(RESOURCE)))) goto bad;
 
// Locate the actual resource data
pData = (RSRCDATAENTRY *)(pRsrc + (pLangEntry->DataEntryRVA & ~0x80000000));
 
// Store info
rsc->Codepage = pData->Codepage;
rsc->DataSize = pData->Size;
rsc->Reserved = pData->Reserved;
rsc->LanguageID = (WORD)pLangEntry->IntegerID;
 
// Allocate a buffer and copy the resource data
if (!(rsc->Data = (char *)GlobalAlloc(GMEM_FIXED, pData->Size)))
{
GlobalFree(rsc);
bad: return(FALSE);
}
memcpy(rsc->Data, pRsrc + pData->DataRVA - pInfo->SectionHeader.VirtualAddress, pData->Size);
 
// Link RESOURCE struct into this RESOURCENAME's list of languages
rsc->Next = name->Languages;
name->Languages = rsc;
 
// Next language
++pLangEntry;
 
} while (--langIndex);
}
 
return(TRUE);
}
 
/************************** linkIntoTypeList() *************************
* Creates a RESOURCETYPE struct for the specified type and links it
* into our list of RESOURCETYPEs, and returns a pointer to that
* RESOURCETYPE.
*
* pInfo = Pointer to RSRCINFO for the current exe/dll.
* dwType = Type of resource. Could be a DWORD Type number or a
* pointer to a Type string.
* info = Pointer to RESOURCEINFO, or 0 if none.
*
* RETURN: Pointer to RESOURCETYPE for this Type, or 0 if a memory
* allocation error.
*/
 
static LPRESOURCETYPE linkIntoTypeList(LPRSRCINFO pInfo, LPWSTR dwType, LPRESOURCEINFO info)
{
LPRESOURCETYPE lpType, lpPrev;
 
// See if we already have a RESOURCETYPE matching this type. If so, return that RESOURCETYPE
lpPrev = (LPRESOURCETYPE)&pInfo->Types;
if ((lpType = pInfo->Types))
{
do
{
if (lpType->TypeString == dwType) goto gotit;
lpPrev = lpType;
} while ((lpType = lpType->Next));
}
 
// No, we don't already have this RESOURCETYPE. Create a new RESOURCETYPE and link it at the tail
// of our list of resources
if ((lpType = (LPRESOURCETYPE)GlobalAlloc(GMEM_FIXED, sizeof(RESOURCETYPE))))
{
lpPrev->Next = lpType;
lpType->Next = 0;
lpType->Names = 0;
lpType->TypeString = dwType; // Store the type
 
memcpy(&lpType->Characteristics, info, sizeof(RESOURCEINFO));
}
 
gotit:
return(lpType);
}
 
/************************* add_resource_type() **************************
* Called by fillRsrcEntries() to parse a Type of resource (ie, load/store
* info about each Named/ID'ed instance of this Type of resource).
*
* pInfo = Pointer to RSRCINFO for the current exe/dll.
*
* RETURNS: TRUE if successful, or FALSE if an error.
*/
 
static BOOL add_resource_type(LPRSRCINFO pInfo, char *pRsrc, RSRCDIRENTRY *pTypeEntry, LPWSTR dwType)
{
LPRESOURCETYPE type;
RSRCDIRTABLEHEAD *pNameHead;
DWORD nameIndex;
RSRCDIRENTRY *pNameEntry;
 
// Locate the RSRCDIRTABLEHEAD struct for this resource Type
pNameHead = (RSRCDIRTABLEHEAD *)(pRsrc + (pTypeEntry->SubdirectoryRVA & ~0x80000000));
 
// Allocate a RESOURCETYPE to store info about this RSRCDIRTABLEHEAD, and link into list
if (!(type = (LPRESOURCETYPE)linkIntoTypeList(pInfo, dwType, (LPRESOURCEINFO)pNameHead))) goto bad;
 
// Start with the first RSRCDIRENTRY (immediately after the RSRCDIRTABLEHEAD)
pNameEntry = (RSRCDIRENTRY *)((char *)pNameHead + sizeof(RSRCDIRTABLEHEAD));
 
// Do the items that have a Name string (instead of ID number)
if ((nameIndex = pNameHead->NumNameEntries))
{
do
{
// Make sure that there is no Name number. There shouldn't be both a string *and* a number
if (pNameEntry->DataEntryRVA >> 31)
{
LPWSTR dwName;
 
// Put a copy of the name in our list of strings and use that copy
if (!(dwName = getRsrcString(pInfo, pRsrc, pNameEntry->NameRVA & ~(1<<31))) ||
 
// Load/store info about each language-specific instance of this Named item
!add_resource(pInfo, pRsrc, pNameEntry, dwName, type))
{
bad: return(FALSE);
}
}
 
// Next RSRCDIRENTRY
++pNameEntry;
 
} while (--nameIndex);
}
 
// Do the items that have an ID number
if ((nameIndex = pNameHead->NumIDEntries))
{
do
{
// Load/store info about each language-specific instance of this ID'ed item
if ((pNameEntry->DataEntryRVA >> 31) && !add_resource(pInfo, pRsrc, pNameEntry, (LPWSTR)pNameEntry->IntegerID, type)) goto bad;
++pNameEntry;
} while (--nameIndex);
}
 
return(TRUE);
}
 
/************************** fillRsrcEntries() ***************************
* Called by BeginUpdateResource() to parse the resources (ie, '.rsrc'
* section) of a PE file (which we have already loaded into one block of
* memory) and add those resources to our internal table in RAM. In other
* words, this implements loading the original, existing resources within
* the file.
*
* pInfo = Pointer to RSRCINFO for the current exe/dll.
* pRsrc = Pointer to memory buffer containing the exe/dll's '.rsrc'
* section.
*
* RETURNS: 0 if successful, or an appropriate error number as returned by
* GetLastError().
*/
 
static DWORD fillRsrcEntries(LPRSRCINFO pInfo, char *pRsrc)
{
DWORD numIndex;
RSRCDIRENTRY *pTypeEntry;
LPWSTR dwType;
 
// The master RSRCDIRTABLEHEAD struct starts right at the beginning of the loaded '.rsrc' section.
// Store it in our RSRCINFO
pInfo->Characteristics = ((RSRCDIRTABLEHEAD *)pRsrc)->Characteristics;
pInfo->TimeDateStamp = ((RSRCDIRTABLEHEAD *)pRsrc)->TimeDateStamp;
pInfo->VersionMajor = ((RSRCDIRTABLEHEAD *)pRsrc)->VersionMajor;
pInfo->VersionMinor = ((RSRCDIRTABLEHEAD *)pRsrc)->VersionMinor;
 
// Start with the first RSRCDIRENTRY (immediately after the master RSRCDIRTABLEHEAD)
pTypeEntry = (RSRCDIRENTRY *)(pRsrc + sizeof(RSRCDIRTABLEHEAD));
 
// Enumerate resources that have a Type string (instead of Type number)
if ((numIndex = ((RSRCDIRTABLEHEAD *)pRsrc)->NumNameEntries))
{
do
{
// Make sure that this resource doesn't also have a Type number. That is not legal. (If illegal, just
// skip it)
if (pTypeEntry->DataEntryRVA >> 31) //pTypeEntry->DataEntryRVA & 0x80000000
{
// Put a copy of the Type string in our list of strings and use that copy
if (!(dwType = getRsrcString(pInfo, pRsrc, pTypeEntry->NameRVA & ~(1 << 31))) ||
 
// Load/store info about each instance of this Type
!add_resource_type(pInfo, pRsrc, pTypeEntry, dwType))
{
bad: return(ERROR_NOT_ENOUGH_MEMORY);
}
}
// Next RSRCDIRENTRY
++pTypeEntry;
 
} while (--numIndex);
}
 
// Enumerate resources that have a Type number
if ((numIndex = ((RSRCDIRTABLEHEAD *)pRsrc)->NumIDEntries))
{
do
{
if ((pTypeEntry->DataEntryRVA >> 31) && !add_resource_type(pInfo, pRsrc, pTypeEntry, (LPWSTR)pTypeEntry->IntegerID)) goto bad;
 
// Next RSRCDIRENTRY
++pTypeEntry;
 
} while (--numIndex);
}
 
// Success
return(0);
}
 
/*********************** _BeginUpdateResourceA() ************************
* An implementation of the Win32 API BeginUpdateResource(). This is the
* ansi version.
*
* This must be called once before UpdateResource() can be used to change
* the resources in an EXE/DLL, or before GetRsrcData() can be used to
* fetch some resource.
*
* lpFileName = Pointer to nul-terminated filename of DLL/EXE.
* bDelete = TRUE if deleting the existing resources, or FALSE if
* retaining them.
*
* RETURNS: Handle to exe/dll resources, or 0 if an error. If an error,
* then no cleanup need be done by the application, and GetLastError()
* will return an appropriate error number.
*/
 
HANDLE WINAPI _BeginUpdateResourceA(LPCSTR lpFileName, BOOL bDelete)
{
LPRSRCINFO pInfo;
DWORD dw, result, id;
 
// Allocate a RSRCINFO struct
if ((pInfo = (LPRSRCINFO)GlobalAlloc(GMEM_FIXED, sizeof(RSRCINFO))))
{
// Clear the lists
pInfo->Types = 0;
pInfo->vtrStrings = 0;
 
// Open the file for reading
if ((pInfo->File = CreateFile(lpFileName, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE)
{
result = GetLastError(); // Preserve error across call to GlobalFree()
GlobalFree(pInfo);
SetLastError(result);
// SetLastError(ERROR_OPEN_FAILED);
return(NULL);
}
 
// Seek to the beginning of the PE header
SetFilePointer(pInfo->File, 0x3c, 0, FILE_BEGIN);
if (GetLastError() != NO_ERROR)
{
bad: result = ERROR_RESOURCE_DATA_NOT_FOUND;
bad2: _EndUpdateResource(pInfo, 1);
SetLastError(result);
return(NULL);
}
 
// Read the long offset to file ID
if (!ReadFile(pInfo->File, &dw, 4, &result, NULL) || result != 4) goto bad;
 
// Seek to that offet
SetFilePointer(pInfo->File, dw, 0, FILE_BEGIN);
if (GetLastError() != NO_ERROR ||
 
// Read a long ID
!ReadFile(pInfo->File, &id, 4, &result, NULL) || result != 4 ||
 
// Check the ID
id != IMAGE_NT_SIGNATURE)
{
// A non-PE file does not contain resources
goto bad;
}
 
pInfo->FilePtrToPEHdr = dw + 4;
 
// Read in the file header
if (!ReadFile(pInfo->File, &pInfo->PEHeader, sizeof(IMAGE_FILE_HEADER), &result, NULL) || result != sizeof(IMAGE_FILE_HEADER))
goto bad;
 
// Skip the optional header
SetFilePointer(pInfo->File, pInfo->PEHeader.SizeOfOptionalHeader, 0, FILE_CURRENT);
if (GetLastError() != NO_ERROR) goto bad;
 
// Locate the '.rsrc' section
dw = pInfo->PEHeader.NumberOfSections;
while (dw--)
{
// Read in the next section's header
if (!ReadFile(pInfo->File, &pInfo->SectionHeader, sizeof(IMAGE_SECTION_HEADER), &result, NULL) || result != sizeof(IMAGE_SECTION_HEADER))
goto bad;
 
// Is this the '.rsrc' section?
if (!strcasecmp((const unsigned char *)pInfo->SectionHeader.Name, &RsrcSectionName[0])) // IMAGE_SIZEOF_SHORT_NAME?
{
// Go to the start of that section's data within the file
SetFilePointer(pInfo->File, pInfo->SectionHeader.PointerToRawData, 0, FILE_BEGIN);
if (GetLastError() != NO_ERROR) goto bad;
 
// We got the '.rsrc', so we can continue processing it
break;
}
}
 
// Did we find a ".rsrc" section?
if (dw == (DWORD)-1) goto bad;
 
// Delete the existing resources? NOTE: Deleting existing resources is implemented by not
// reading them in right now and adding them to the resource table in memory. So later,
// when we write out the final resources, the original ones will have been "deleted"
if (!bDelete)
{
char *pRsrc;
 
// Allocate mem to read in the '.rsrc' section
if (!(pRsrc = GlobalAlloc(GMEM_FIXED, pInfo->SectionHeader.SizeOfRawData)))
{
result = ERROR_NOT_ENOUGH_MEMORY;
goto bad2;
}
 
// Read in the section
if (!ReadFile(pInfo->File, pRsrc, pInfo->SectionHeader.SizeOfRawData, &result, NULL) || result != pInfo->SectionHeader.SizeOfRawData)
{
GlobalFree(pRsrc);
goto bad;
}
 
// Parse '.rsrc' section into internal structs and link into our RSRCINFO lists
result = fillRsrcEntries(pInfo, pRsrc);
 
// Free the '.rsrc'
GlobalFree(pRsrc);
 
// If an error, delete any allocated resources
if (result) goto bad2;
}
 
// Get timezone settings for our timestamp
set_time_zone();
 
// Success
SetLastError(0);
}
 
// Return the pointer to our RSRCINFO struct for this EXE/DLL. The app will pass it
// to our other functions such as UpdateResource()
return((HANDLE)pInfo);
}
 
/*********************** _BeginUpdateResourceW() ************************
* An implementation of the Win32 API BeginUpdateResource(). This is the
* unicode version. It merely calls the ansi version after converting
* filename from unicode to ansi.
*
* This must be called once before UpdateResource() can be used to change
* the resources in an EXE/DLL, or before GetRsrcData() can be used to
* fetch some resource.
*/
 
HANDLE WINAPI _BeginUpdateResourceW(LPCWSTR lpFileName, BOOL bDelete)
{
LPSTR lpsFileName;
HANDLE result;
DWORD nLen;
 
nLen = WideCharToMultiByte(CP_ACP, 0, lpFileName, -1, NULL, 0, NULL, 0);
if ((lpsFileName = (LPSTR)GlobalAlloc(GMEM_FIXED, nLen)))
{
WideCharToMultiByte(CP_ACP, 0, lpFileName, -1, lpsFileName, nLen, NULL, 0);
 
result = _BeginUpdateResourceA(lpsFileName, bDelete);
 
nLen = GetLastError();
GlobalFree(lpsFileName);
if (nLen) SetLastError(nLen);
return(result);
}
 
return(0);
}
 
////////////////////////////////////////////////////////////////////////
// This is the UpdateResource() API, and any helper functions.
// (Helper functions are called only by UpdateResource(), not by
// some application).
 
/************************** addRsrcString() ***************************
* Puts a nul-terminated copy of the passed WCHAR[] string into our list
* of strings, and returns a pointer to that copy.
*
* pInfo = Pointer to RSRCINFO for the current exe/dll.
* pRsrc = Pointer to the string resource.
* offset = Byte offset (from pRsrc) to where the length of
* string is stored as a WORD.
*
* RETURN: Pointer to nul-terminated WCHAR[] copy of pRsrc's string, or
* 0 if a memory allocation error.
*/
 
static LPCWSTR addRsrcString(LPRSRCINFO pInfo, LPCWSTR orig, LPVOID lpData)
{
LPSTRINGHEAD lpStr;
DWORD size;
 
size = strlen_w(orig);
 
// See if we already have a string resource matching this string. If so, use that string
if ((lpStr = pInfo->vtrStrings))
{
do
{
if (lpStr->Size == size && !wstrnicmp_a(orig, &lpStr->String[0]))
{
// Use the string pointer in our list
return(&lpStr->String[0]);
}
} while ((lpStr = lpStr->Next));
}
 
// No, we don't already have this string. Create a nul-terminated copy and put it into our list of resources.
// NOTE: We are copying a WSTR[] so size is 2 bytes per char (plus 2 bytes of nul)
if (lpData && (lpStr = (LPSTRINGHEAD)GlobalAlloc(GMEM_FIXED, (size << 1) + sizeof(STRINGHEAD))))
{
lpStr->Size = size;
lpStr->Next = pInfo->vtrStrings;
pInfo->vtrStrings = lpStr;
memcpy(&lpStr->String[0], (PVOID)orig, size << 1);
lpStr->String[size] = 0;
return((LPCWSTR)&lpStr->String[0]);
}
 
return(0);
}
 
/************************** _UpdateResourceA() **************************
* An implementation of the Win32 API UpdateResource(). This is the ansi
* version. It merely calls the unicode version after converting any Type
* and Name strings from ANSI to UNICODE.
*/
 
BOOL WINAPI _UpdateResourceA(HANDLE hUpdateResource, LPCSTR lpType, LPCSTR lpName, WORD wLanguage, LPVOID lpData, DWORD cbDataSize)
{
LPCWSTR lpwType, lpwName;
BOOL retCode;
 
// Assume ID numbers (rather than string pointers)
lpwType = (LPCWSTR)lpType;
lpwName = (LPCWSTR)lpName;
 
// Assume failure
retCode = 0;
 
// If Type is a string pointer (rather than an ID number), allocate and convert to Wide character string
if (HIWORD(lpType))
{
DWORD nLen;
 
nLen = MultiByteToWideChar(CP_ACP, 0, lpType, -1, NULL, 0);
if (!(lpwType = (LPCWSTR)GlobalAlloc(GMEM_FIXED, nLen * sizeof(WCHAR)))) goto bad;
MultiByteToWideChar(CP_ACP, 0, lpType, -1, (LPWSTR)lpwType, nLen);
}
 
// If Name is a string pointer (rather than an ID number), allocate and convert to Wide character string
if (HIWORD(lpName))
{
DWORD nLen;
 
nLen = MultiByteToWideChar(CP_ACP, 0, lpName, -1, NULL, 0);
if (!(lpwName = (LPCWSTR)GlobalAlloc(GMEM_FIXED, nLen * sizeof(WCHAR))))
{
if (HIWORD(lpType)) GlobalFree((void *)lpwType);
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
goto bad;
}
MultiByteToWideChar(CP_ACP, 0, lpName, -1, (LPWSTR)lpwName, nLen);
}
 
retCode = _UpdateResourceW(hUpdateResource, lpwType, lpwName, wLanguage, lpData, cbDataSize);
 
// If pointing to strings, free the Type and Name
if (HIWORD(lpName)) GlobalFree((void *)lpwName);
if (HIWORD(lpType)) GlobalFree((void *)lpwType);
bad:
return(retCode);
}
 
/************************** _UpdateResourceW() **************************
* An implementation of the Win32 API UpdateResource(). This is the
* unicode version.
*
* Adds the passed resource to the internal list of resources for a DLL/EXE.
* If another resource with the same lpType, lpName, and wLanguage already
* exists, it is replaced.
*
* hUpdateResource = Handle returned by BeginUpdateResource().
* lpType = DWORD Type number of resource, or pointer to a
* WCHAR[] containing the Type as a nul-terminated
* string.
* lpName = DWORD Name number of resource, or pointer to a
* WCHAR[] containing the Name as a nul-terminated
* string.
* wLanguage = Language ID number.
* lpData = Pointer to buffer containing the data. If 0, then
* the specified resource is deleted from memory.
* cbDataSize = Size (in bytes) of lpData.
*
* RETURNS: TRUE if successful, or FALSE if failure. GetLastError()
* returns an appropriate error number.
*/
 
BOOL WINAPI _UpdateResourceW(HANDLE hUpdateResource, LPCWSTR lpType, LPCWSTR lpName, WORD wLanguage, LPVOID lpData, DWORD cbDataSize)
{
LPRESOURCETYPE type, prevtype;
LPRESOURCENAME name;
LPRESOURCE rsc;
 
// Make sure that the handle is valid. This is actually the pointer to the RSRCINFO struct allocated and
// returned by BeginUpdateResource()
if (!hUpdateResource)
{
SetLastError(ERROR_INVALID_HANDLE);
return(FALSE);
}
 
// Is the Type a string pointer (instead of an ID number)?
if (HIWORD(lpType))
{
// It's a string. Let's see if we can find this string in our list of strings. If not,
// then there's no way that we could have an existing resource with this type
if (!(lpType = addRsrcString((const LPRSRCINFO)hUpdateResource, lpType, lpData)))
{
badmem2: if (!lpData) goto success;
badmem: SetLastError(ERROR_NOT_ENOUGH_MEMORY);
return(FALSE);
}
}
 
// Is the Name a string pointer (instead of an ID number)?
if (HIWORD(lpName) &&
!(lpName = addRsrcString((const LPRSRCINFO)hUpdateResource, lpName, lpData)))
{
goto badmem2;
}
 
// If a RESOURCE with the same dwType, dwName, and wLanguage already exists in our list,
// then set its data.
 
// Assume there isn't already an existing resource
type = 0;
name = 0;
rsc = 0;
 
// Start with root of the list. This works because the 'Next' field is the first field in the struct
{
prevtype = type = (LPRESOURCETYPE)(&((LPRSRCINFO)hUpdateResource)->Types);
while ((type = type->Next))
{
if (type->TypeString == lpType)
{
LPRESOURCENAME prevname;
 
// We matched the type, now we need to find a matching name within this type
prevname = name = (LPRESOURCENAME)&type->Names;
while ((name = name->Next))
{
if (name->NameString == lpName)
{
LPRESOURCE prevrsc;
 
// We matched the name, now we need to find a matching language with this name
prevrsc = rsc = (LPRESOURCE)&name->Languages;
while ((rsc = rsc->Next))
{
if (rsc->LanguageID == wLanguage)
{
// Found it!
 
// Free any existing data for this RESOURCE
if (rsc->Data) GlobalFree(rsc->Data);
 
// If caller supplied some data, make a copy of it
if (lpData) goto copydata;
 
// Caller did not supply data, so unlink/delete this RESOURCE
prevrsc->Next = rsc->Next;
GlobalFree(rsc);
 
// If there are no more RESOURCE's in this RESOURCENAME, then we can unlink/delete
// the RESOURCENAME too
if (!name->Languages)
{
prevname->Next = name->Next;
GlobalFree(name);
 
// If there are no more RESOURCENAME's in this RESOURCETYPE, then we can
// unlink/delete the RESOURCETYPE too
if (!type->Names)
{
prevtype->Next = type->Next;
GlobalFree(type);
}
}
 
goto success;
}
 
// Save this RESOURCE in case we need to unlink from the list
prevrsc = rsc;
}
 
// We at least found a matching type and name, if not a matching language. We need
// to allocate a RESOURCE struct now
break;
}
 
// Save this RESOURCENAME in case we need to unlink from the list
prevname = name;
}
 
// We at least found a matching type, if not a matching name and language. We need to
// allocate a RESOURCENAME and RESOURCE struct now
break;
}
 
// Save this RESOURCETYPE in case we need to unlink from the list
prevtype = type;
}
}
 
if (lpData)
{
DWORD timeval;
 
// Get the current time
timeval = get_time();
 
// Ok, do we need to make a RESOURCETYPE?
if (!type)
{
// Allocate a RESOURCETYPE
if (!(type = (LPRESOURCETYPE)GlobalAlloc(GMEM_FIXED, sizeof(RESOURCETYPE)))) goto badmem;
bzero(type, sizeof(RESOURCETYPE));
 
// If a Type ID, put it after any Named Types. If a Named Type, put it at the head of
// the list. That way, we keep them in order with the Named Types first
if (HIWORD(lpType))
{
type->Next = ((LPRSRCINFO)hUpdateResource)->Types;
((LPRSRCINFO)hUpdateResource)->Types = type;
}
else
{
type->Next = prevtype->Next;
prevtype->Next = type;
}
 
// Update the time on the RESOURCETYPE
type->TimeDateStamp = timeval;
 
// Store the type name/ID
type->TypeString = (LPWSTR)lpType;
}
 
// Ok, do we need to make a RESOURCENAME?
if (!name)
{
// Allocate a RESOURCETYPE
if (!(name = (LPRESOURCENAME)GlobalAlloc(GMEM_FIXED, sizeof(RESOURCENAME)))) goto badmem;
bzero(name, sizeof(RESOURCENAME));
 
// If an ID, put it after any Named items. If a Name, put it at the head of
// the list. That way, we keep them in order with the Named items first
if (HIWORD(lpName))
{
name->Next = type->Names;
type->Names = name;
}
else
{
LPRESOURCENAME prevname;
 
prevname = (LPRESOURCENAME)&type->Names;
while (prevname->Next && HIWORD(prevname->Next->NameString)) prevname = prevname->Next;
name->Next = prevname->Next;
prevname->Next = name;
}
 
// Update the time on the RESOURCENAME
name->TimeDateStamp = timeval;
// Store the name/ID
name->NameString = (LPWSTR)lpName;
}
 
// Allocate and link in a RESOURCE
if (!(rsc = (LPRESOURCE)GlobalAlloc(GMEM_FIXED, sizeof(RESOURCE)))) goto badmem;
bzero(rsc, sizeof(RESOURCE));
rsc->Next = name->Languages;
name->Languages = rsc;
rsc->LanguageID = wLanguage;
 
copydata:
if (!(rsc->Data = (char *)GlobalAlloc(GMEM_FIXED, (rsc->DataSize = cbDataSize)))) goto badmem;
memcpy(rsc->Data, lpData, cbDataSize);
}
 
success:
SetLastError(0);
return(TRUE);
}
 
////////////////////////////////////////////////////////////////////////
// This is the GetRsrcData() API. There is no equivalent WIN32 API, but
// this is meant to be used as a sort of substitute to EnumResourceTypes()
// and such APIs to enumerate resources in an EXE/DLL.
 
LPBYTE WINAPI _GetRsrcDataA(HANDLE hUpdateResource, LPCSTR lpType, LPCSTR lpName, WORD wLanguage, DWORD *pDataSize)
{
LPWSTR lpwType, lpwName;
LPBYTE ptr;
 
// Assume ID numbers (rather than string pointers)
lpwType = (LPWSTR)lpType;
lpwName = (LPWSTR)lpName;
 
// Assume failure
ptr = 0;
 
// If Type is a string pointer (rather than an ID number), allocate and convert to Wide character string
if (HIWORD(lpType))
{
DWORD nLen;
 
nLen = MultiByteToWideChar(CP_ACP, 0, lpType, -1, NULL, 0);
if (!(lpwType = (LPWSTR)GlobalAlloc(GMEM_FIXED, nLen * sizeof(WCHAR)))) goto bad;
MultiByteToWideChar(CP_ACP, 0, lpType, -1, lpwType, nLen);
}
 
// If Name is a string pointer (rather than an ID number), allocate and convert to Wide character string
if (HIWORD(lpName))
{
DWORD nLen;
 
nLen = MultiByteToWideChar(CP_ACP, 0, lpName, -1, NULL, 0);
if (!(lpwName = (LPWSTR)GlobalAlloc(GMEM_FIXED, nLen * sizeof(WCHAR))))
{
if (HIWORD(lpType)) GlobalFree(lpwType);
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
goto bad;
}
MultiByteToWideChar(CP_ACP, 0, lpName, -1, lpwName, nLen);
}
 
ptr = _GetRsrcDataW(hUpdateResource, lpwType, lpwName, wLanguage, pDataSize);
 
// If pointing to strings, free the Type and Name
if (HIWORD(lpName)) GlobalFree(lpwName);
if (HIWORD(lpType)) GlobalFree(lpwType);
bad:
return(ptr);
}
 
LPBYTE WINAPI _GetRsrcDataW(HANDLE hUpdateResource, LPCWSTR lpType, LPCWSTR lpName, WORD wLanguage, DWORD *pDataSize)
{
if (!hUpdateResource)
{
SetLastError(ERROR_INVALID_HANDLE);
return(0);
}
 
// Is the Type a string pointer (instead of an ID number)?
if (HIWORD(lpType))
{
LPSTRINGHEAD lpStr;
DWORD size;
 
// It's a string. Let's see if we can find this string in our list of strings. If not,
// then there's no way that we could have an existing resource with this type
 
size = strlen_w(lpType);
 
// See if we already have a string resource matching this string. If so, use that string
if ((lpStr = ((LPRSRCINFO)hUpdateResource)->vtrStrings))
{
do
{
if (lpStr->Size == size && !wstrnicmp_a(lpType, &lpStr->String[0])) goto gotit;
} while ((lpStr = lpStr->Next));
}
 
// No, we don't already have this string
goto notfound;
 
// Use the string pointer in our list
gotit: lpType = &lpStr->String[0];
}
 
// Is the Name a string pointer (instead of an ID number)?
if (HIWORD(lpName))
{
LPSTRINGHEAD lpStr;
DWORD size;
 
size = strlen_w(lpName);
 
if ((lpStr = ((LPRSRCINFO)hUpdateResource)->vtrStrings))
{
do
{
if (lpStr->Size == size && !wstrnicmp_a(lpName, &lpStr->String[0])) goto gotit2;
} while ((lpStr = lpStr->Next));
}
 
goto notfound;
 
gotit2: lpName = &lpStr->String[0];
}
 
// If a RESOURCE with the same dwType, dwName, and wLanguage already exists in our list,
// then return its data and size
 
// Start with root of the list. This works because the 'Next' field is the first field in the struct
{
LPRESOURCETYPE type;
type = (LPRESOURCETYPE)(&((LPRSRCINFO)hUpdateResource)->Types);
while ((type = type->Next))
{
if (type->TypeString == lpType)
{
LPRESOURCENAME name;
 
// We matched the type, now we need to find a matching name within this type
name = (LPRESOURCENAME)&type->Names;
while ((name = name->Next))
{
if (name->NameString == lpName)
{
LPRESOURCE rsc;
 
// We matched the name, now we need to find a matching language with this name
rsc = (LPRESOURCE)&name->Languages;
while ((rsc = rsc->Next))
{
if (rsc->LanguageID == wLanguage)
{
// Found it
if (pDataSize) *pDataSize = rsc->DataSize;
SetLastError(0);
return(rsc->Data);
}
}
}
}
}
}
}
 
notfound:
// Can't find the resource
if (pDataSize) *pDataSize = 0;
SetLastError(ERROR_RESOURCE_DATA_NOT_FOUND); // was ERROR_RESOURCE_NOT_FOUND ??
return(0);
}
 
////////////////////////////////////////////////////////////////////////
// This is the EndUpdateResource() API, and any helper functions.
// (Helper functions are called only by EndUpdateResource(), not by
// some application).
 
/*********************** calcDirTableSize() ************************
* Calculates the size (in bytes) of all of the RSRCDIRTABLEHEAD,
* RSRCDIRENTRY, and RSRCDATAENTRY structs needed to store our
* resources in the EXE/DLL's '.rsrc' section. Also calculates the
* size of all raw data.
*
* pInfo = Pointer to RSRCINFO for the current exe/dll.
*
* RETURN: Size in bytes.
*/
 
static DWORD calcDirTableSize(const LPRSRCINFO pInfo, DWORD *raw)
{
LPRESOURCETYPE type;
DWORD size, rawsize;
 
// We need a master RSRCDIRTABLEHEAD
size = sizeof(RSRCDIRTABLEHEAD);
 
rawsize = 0;
 
type = (LPRESOURCETYPE)&pInfo->Types;
while ((type = type->Next))
{
LPRESOURCENAME name;
 
// We need a RSRCDIRTABLEHEAD and RSRCDIRENTRY for each Type
size += sizeof(RSRCDIRENTRY) + sizeof(RSRCDIRTABLEHEAD);
 
name = (LPRESOURCENAME)&type->Names;
while ((name = name->Next))
{
LPRESOURCE rsc;
// We need a RSRCDIRTABLEHEAD and RSRCDIRENTRY for each Name under this Type
size += sizeof(RSRCDIRENTRY) + sizeof(RSRCDIRTABLEHEAD);
 
rsc = (LPRESOURCE)&name->Languages;
while ((rsc = rsc->Next))
{
// We need a RSRCDIRENTRY and RSRCDATAENTRY for each Language under this Type/Name
size += sizeof(RSRCDIRENTRY) + sizeof(RSRCDATAENTRY);
 
rawsize += rsc->DataSize;
 
// NOTE: Each resource's individual size must be rounded up to the
// nearest DWORD
DWORD_ALIGN(rawsize);
}
}
}
 
// Store size of raw data
*raw = rawsize;
 
// Return size of dir structs
return(size);
}
 
/*********************** calcStringTableSize() ************************
* Calculates the size (in bytes) of all of the strings in our list of
* strings, when they are saved into a StringTable in the EXE/DLL.
*
* pInfo = Pointer to RSRCINFO for the current exe/dll.
*
* RETURN: Size in bytes.
*
* NOTE: Each string is saved as a WCHAR[] with the first WORD being
* the string's length. Think of it like a pascal-style string but
* as a WCHAR[] instead of char[].
*/
 
static DWORD calcStringTableSize(const LPRSRCINFO pInfo)
{
LPSTRINGHEAD lpStr;
DWORD size;
 
size = 0;
 
if ((lpStr = pInfo->vtrStrings))
{
do
{
// NOTE: +1 for the length WORD. x2 to count 2 bytes for each WCHAR
size += ((lpStr->Size + 1) << 1);
} while ((lpStr = lpStr->Next));
}
 
return(size);
}
 
static void calcNumDirEntries(LPRESOURCENAME list, WORD *numNames, WORD *numIDs)
{
WORD names;
WORD ids;
 
names = ids = 0;
 
if (list)
{
do
{
if (HIWORD(list->NameString)) names++;
else ids++;
} while ((list = list->Next));
}
 
*numNames = names;
*numIDs = ids;
}
 
/************************ getStringOffset() *************************
* Retrieves the offset of the specified string within the .rsrc
* section. This offset was set by generateStringTable().
*
* string = Pointer to string. This pointer must be to some
* STRINGHEAD in our list.
*
* RETURNS: The offset in bytes.
*/
 
static DWORD getStringOffset(LPWSTR string)
{
LPSTRINGHEAD lpStr;
 
lpStr = (LPSTRINGHEAD)((char *)string - sizeof(STRINGHEAD) + 2);
return(lpStr->Size | (1 << 31));
}
 
/********************** generateStringTable() ***********************
* Creates an image (in memory) of the string table portion of the
* '.rsrc' section that will be written to the EXE/DLL.
*
* pInfo = Pointer to RSRCINFO for the current exe/dll.
* pRsrc = A block of memory into which the image will be created.
* offset = Byte offset to where the string table will start
* within the .rsrc.
*/
 
static void generateStringTable(const LPRSRCINFO pInfo, WORD *pStringTable, DWORD offset)
{
LPSTRINGHEAD lpStr;
WORD len;
 
lpStr = (LPSTRINGHEAD)&pInfo->vtrStrings;
while ((lpStr = lpStr->Next))
{
// Get the length in WORDs
len = (WORD)lpStr->Size;
 
// Change the STRINGHEAD's Size to an offset expressed in bytes
lpStr->Size = offset;
 
// Copy the length
*(pStringTable)++ = len;
 
// Copy the string
len <<= 1;
memcpy(pStringTable, &lpStr->String[0], len);
 
// Next position in string table
pStringTable = (WORD *)((char *)pStringTable + len);
offset += len + 2;
}
}
 
/************************* generateCode() **************************
* Creates an image (in memory) of the '.rsrc' section that will be
* written to the EXE/DLL. This includes all of the directory
* structures, and resource data.
*
* pInfo = Pointer to RSRCINFO for the current exe/dll.
* pRsrc = A block of memory into which the image will be created.
* RawDataOffset = Byte offset to where the resource data will start
* within the EXE/DLL. (This is after the string table).
*
* NOTE: The string table (for Named Types and Named Items) is
* formatted by generateStringTable().
*/
 
static void generateCode(const LPRSRCINFO pInfo, char *pRsrc, DWORD RawDataOffset)
{
RSRCDIRTABLEHEAD TypeHead, NameHead, LangHead;
LPRESOURCETYPE type;
LPRESOURCENAME name;
LPRESOURCE rsc;
DWORD TableAddress;
RSRCDIRENTRY *typeEntry;
 
// Create master RSRCDIRTABLEHEAD
 
// Copy over the Characteristics, TimeDateStamp, VersionMajor, and VersionMinor
memcpy(&TypeHead.Characteristics, &pInfo->Characteristics, sizeof(RESOURCEINFO));
 
// Set the NumNameEntries and NumIDEntries
calcNumDirEntries((LPRESOURCENAME)pInfo->Types, &TypeHead.NumNameEntries, &TypeHead.NumIDEntries);
 
memcpy(pRsrc, &TypeHead, sizeof(RSRCDIRTABLEHEAD));
 
// Calculate offset to where we'll start the RSRCDIRTABLEHEAD for Named Type 1
TableAddress = sizeof(RSRCDIRTABLEHEAD) + ((TypeHead.NumNameEntries + TypeHead.NumIDEntries) * sizeof(RSRCDIRENTRY));
 
// Do all Types (starting with Named Types)
type = (LPRESOURCETYPE)&pInfo->Types;
typeEntry = (RSRCDIRENTRY *)(pRsrc + sizeof(RSRCDIRTABLEHEAD));
while ((type = type->Next))
{
RSRCDIRENTRY *pEntry;
DWORD NameHeadAddress;
 
// Create the RSRCDIRENTRY for this Type
 
// Set the offset to the string within the StringTable if a Named item
if (HIWORD(type->TypeString))
typeEntry->NameRVA = getStringOffset(type->TypeString);
 
// Set the integer ID if an ID number
else
typeEntry->IntegerID = type->TypeID;
 
// Set the offset to the item's RSRCDIRTABLEHEAD
typeEntry->SubdirectoryRVA = TableAddress | (1<<31);
 
typeEntry++;
 
// Create RSRCDIRTABLEHEAD for this Type
 
// Copy over the Characteristics, TimeDateStamp, VersionMajor, and VersionMinor
memcpy(&NameHead.Characteristics, &type->Characteristics, sizeof(RESOURCEINFO));
 
// Set the NumNameEntries and NumIDEntries
calcNumDirEntries((LPRESOURCENAME)type->Names, &NameHead.NumNameEntries, &NameHead.NumIDEntries);
 
memcpy(&pRsrc[TableAddress], &NameHead, sizeof(RSRCDIRTABLEHEAD));
 
// Calculate offset to where we'll start the RSRCDIRENTRY for Named Item 1 for Named Type 1
NameHeadAddress = TableAddress + sizeof(RSRCDIRTABLEHEAD);
 
// Calculate offset to where we'll start the RSRCDIRTABLEHEAD for Named Item 1 for Named Type 1
TableAddress += sizeof(RSRCDIRTABLEHEAD) + (NameHead.NumNameEntries + NameHead.NumIDEntries) * sizeof(RSRCDIRENTRY);
 
// Create the RSRCDIRENTRY table for all items for this Type, starting with Named items
name = (LPRESOURCENAME)&type->Names;
while (name = name->Next)
{
RSRCDATAENTRY *pDataEntry;
DWORD Lang;
 
// Create the RSRCDIRTABLEHEAD for this Item
 
// Copy over the Characteristics, TimeDateStamp, VersionMajor, and VersionMinor
memcpy(&LangHead.Characteristics, &name->Characteristics, sizeof(RESOURCEINFO));
 
// Set the NumNameEntries and NumIDEntries
LangHead.NumNameEntries = LangHead.NumIDEntries = 0;
rsc = (LPRESOURCE)&name->Languages;
while (rsc = rsc->Next) LangHead.NumIDEntries++;
 
memcpy(&pRsrc[TableAddress], &LangHead, sizeof(RSRCDIRTABLEHEAD));
 
// Create the RSRCDIRENTRY for this Item
pEntry = (RSRCDIRENTRY *)(pRsrc + NameHeadAddress);
NameHeadAddress += sizeof(RSRCDIRENTRY);
 
// Set the offset to the string within the StringTable if a Named item
if (HIWORD(name->NameString))
pEntry->NameRVA = getStringOffset(name->NameString);
 
// Set the integer ID if an ID number
else
pEntry->IntegerID = name->NameID;
 
// Set the offset to the item's RSRCDIRTABLEHEAD
pEntry->SubdirectoryRVA = TableAddress | (1<<31);
 
// Calculate offset to where we'll start the RSRCDIRENTRY for Language 1 for Named Item 1 for Named Type 1
Lang = TableAddress + sizeof(RSRCDIRTABLEHEAD);
pEntry = (RSRCDIRENTRY *)(pRsrc + Lang);
 
// Calculate offset to where we'll start the RSRCDATAENTRY for Language 1 for Named Item 1 for Named Type 1
TableAddress = Lang + ((LangHead.NumNameEntries + LangHead.NumIDEntries) * sizeof(RSRCDIRENTRY));
pDataEntry = (RSRCDATAENTRY *)(pRsrc + TableAddress);
 
// Create the RSRCDATAENTRY and RSRCDIRENTRY tables for all Languages for this Item
rsc = (LPRESOURCE)&name->Languages;
while (rsc = rsc->Next)
{
// Create next RSRCDATAENTRY for this Language's data block
pDataEntry->DataRVA = RawDataOffset + pInfo->SectionHeader.VirtualAddress;
pDataEntry->Size = rsc->DataSize;
pDataEntry->Codepage = rsc->Codepage;
pDataEntry->Reserved = rsc->Reserved;
++pDataEntry;
 
// Copy data block
memcpy(pRsrc + RawDataOffset, rsc->Data, rsc->DataSize);
 
// Calculate offset to next data block
RawDataOffset += rsc->DataSize;
DWORD_ALIGN(RawDataOffset);
 
// Create next RSRCDIRENTRY for this Language
pEntry->IntegerID = rsc->LanguageID;
pEntry->DataEntryRVA = TableAddress;
++pEntry;
 
TableAddress += sizeof(RSRCDATAENTRY);
}
}
}
}
 
/******************** removeUnreferencedStrings() ********************
* Removes strings (from our list of strings) which are no longer
* referenced by any resource. This is called in preparation of
* writing out the StringTable to the EXE/DLL. We don't want to put
* unneeded strings into that table.
*
* pInfo = Pointer to RSRCINFO for the current exe/dll.
*/
 
static void removeUnreferencedStrings(LPRSRCINFO pInfo)
{
LPSTRINGHEAD str;
LPSTRINGHEAD prevstr;
 
// Go through the list of strings, and check each one
prevstr = (LPSTRINGHEAD)&pInfo->vtrStrings;
next:
while ((str = prevstr->Next))
{
LPRESOURCETYPE type;
 
// Go through the list of resources and check to see if any
// RESOURCE's TypeString or NameString point to this string
type = (LPRESOURCETYPE)&pInfo->Types;
while ((type = type->Next))
{
LPRESOURCENAME name;
 
if (type->TypeString == &str->String[0]) goto next2;
name = (LPRESOURCENAME)&type->Names;
while ((name = name->Next))
{
if (name->NameString == &str->String[0])
{
next2: prevstr = str;
goto next;
}
}
}
 
// If we didn't find a RESOURCE referencing this string above, then unlink the string
// from the list and delete it
prevstr->Next = str->Next;
GlobalFree(str);
}
}
 
/*********************** cleanupRsrcInfo() ************************
* Frees the RSRCINFO and any allocated resources for it.
*
* pInfo = Pointer to RSRCINFO for the current exe/dll.
*/
 
static void cleanupRsrcInfo(LPRSRCINFO pInfo)
{
// Close the EXE/DLL handle
CloseHandle(pInfo->File);
 
// Go through the list of resources and free the data
{
LPRESOURCETYPE type, typenext;
 
typenext = pInfo->Types;
while ((type = typenext))
{
LPRESOURCENAME name, namenext;
 
namenext = type->Names;
while ((name = namenext))
{
LPRESOURCE rsc, rscnext;
 
rscnext = name->Languages;
while ((rsc = rscnext))
{
if (rsc->Data) GlobalFree(rsc->Data);
rscnext = rsc->Next;
GlobalFree(rsc);
}
 
namenext = name->Next;
GlobalFree(name);
}
 
typenext = type->Next;
GlobalFree(type);
}
}
 
// Go through the list of strings, and free them
{
LPSTRINGHEAD str, strnext;
 
strnext = pInfo->vtrStrings;
while ((str = strnext))
{
strnext = str->Next;
GlobalFree(str);
}
}
 
// Free the RSRCINFO itself
GlobalFree(pInfo);
}
 
/************************** relocateSections() *************************
* Rewrites the sections of the specified exe/dll file in preparation
* for writing out the resources.
*
* pInfo = Pointer to RSRCINFO for the current exe/dll.
* newRsrcSize = Byte size of the new .rsrc section.
*
* RETURN: ERROR_SUCCESS if success, or otherwise if error.
*/
 
static DWORD relocateSections(LPRSRCINFO pInfo, DWORD newRsrcSize, DWORD alignedRsrcSize, IMAGE_OPTIONAL_HEADER *oh)
{
IMAGE_SECTION_HEADER sh;
DWORD alignedImageSize, result;
DWORD section;
 
SetFilePointer(pInfo->File, pInfo->FilePtrToPEHdr + sizeof(IMAGE_FILE_HEADER) + pInfo->PEHeader.SizeOfOptionalHeader, 0, FILE_BEGIN);
 
section = pInfo->PEHeader.NumberOfSections;
if (newRsrcSize < pInfo->SectionHeader.SizeOfRawData)
{
// We don't have to relocate anything - just change the size
while (section--)
{
if (!ReadFile(pInfo->File, &sh, sizeof(IMAGE_SECTION_HEADER), &result, NULL) || result != sizeof(IMAGE_SECTION_HEADER))
{
bad: return(GetLastError());
}
 
if (!strcasecmp((char *)sh.Name, &RsrcSectionName[0]))
{
sh.SizeOfRawData = alignedRsrcSize;
sh.Misc.VirtualSize = newRsrcSize;
SetFilePointer(pInfo->File, - sizeof(IMAGE_SECTION_HEADER), 0, FILE_CURRENT);
if (!WriteFile(pInfo->File, &sh, sizeof(IMAGE_SECTION_HEADER), &result, NULL) || result != sizeof(IMAGE_SECTION_HEADER)) goto bad;
alignedImageSize = oh->SizeOfImage - sh.Misc.VirtualSize + newRsrcSize;
 
alignedImageSize = (alignedImageSize + oh->SectionAlignment - 1) & ~(oh->SectionAlignment - 1);
// if (alignedImageSize % oh->SectionAlignment) alignedImageSize += (alignedImageSize % oh->SectionAlignment);
 
break;
}
}
 
SetFilePointer(pInfo->File, pInfo->FilePtrToPEHdr + sizeof(IMAGE_FILE_HEADER) + offsetof(IMAGE_OPTIONAL_HEADER, DataDirectory[2]) + 4, 0, FILE_BEGIN);
if (!WriteFile(pInfo->File, &newRsrcSize, 4, &result, NULL) || result != 4) goto bad;
 
SetFilePointer(pInfo->File, pInfo->FilePtrToPEHdr + sizeof(IMAGE_FILE_HEADER) + offsetof(IMAGE_OPTIONAL_HEADER, SizeOfImage), 0, FILE_BEGIN);
if (!WriteFile(pInfo->File, &alignedImageSize, 4, &result, NULL) || result != 4) goto bad;
 
return(ERROR_SUCCESS);
}
 
{
DWORD filePtrToRsrc = 0;
 
while (section--)
{
if (!ReadFile(pInfo->File, &sh, sizeof(IMAGE_SECTION_HEADER), &result, NULL) || result != sizeof(IMAGE_SECTION_HEADER)) goto bad;
 
if (sh.VirtualAddress > pInfo->SectionHeader.VirtualAddress || sh.PointerToRawData > pInfo->SectionHeader.PointerToRawData)
return(ERROR_CANT_MOVE_SECTION);
 
if (!filePtrToRsrc && !strcasecmp((unsigned char *)sh.Name, &RsrcSectionName[0]))
{
filePtrToRsrc = SetFilePointer(pInfo->File, 0, 0, FILE_CURRENT) - sizeof(IMAGE_SECTION_HEADER);
alignedImageSize = oh->SizeOfImage - sh.Misc.VirtualSize + newRsrcSize;
alignedImageSize = (alignedImageSize + oh->SectionAlignment - 1) & ~(oh->SectionAlignment - 1);
// if (alignedImageSize % oh->SectionAlignment) alignedImageSize += (alignedImageSize % oh->SectionAlignment);
}
}
 
SetFilePointer(pInfo->File, filePtrToRsrc, 0, FILE_BEGIN);
 
pInfo->SectionHeader.SizeOfRawData = alignedRsrcSize;
pInfo->SectionHeader.Misc.VirtualSize = newRsrcSize;
if (!WriteFile(pInfo->File, &pInfo->SectionHeader, sizeof(IMAGE_SECTION_HEADER), &result, NULL) || result != sizeof(IMAGE_SECTION_HEADER)) goto bad;
 
SetFilePointer(pInfo->File, pInfo->FilePtrToPEHdr + sizeof(IMAGE_FILE_HEADER) + offsetof(IMAGE_OPTIONAL_HEADER, DataDirectory[2]) + 4, 0, FILE_BEGIN);
if (!WriteFile(pInfo->File, &newRsrcSize, 4, &result, NULL) || result != 4) goto bad;
 
SetFilePointer(pInfo->File, pInfo->FilePtrToPEHdr + sizeof(IMAGE_FILE_HEADER) + offsetof(IMAGE_OPTIONAL_HEADER, SizeOfImage), 0, FILE_BEGIN);
if (!WriteFile(pInfo->File, &alignedImageSize, 4, &result, NULL) || result != 4) goto bad;
}
 
return(ERROR_SUCCESS);
}
 
/************************** _EndUpdateResource() *************************
* Writes the resources in memory to the specified exe/dll file, and frees
* the loaded resources.
*
* hUpdateResource = Pointer to RSRCINFO for the current exe/dll.
* fDiscard = TRUE if the resources should not be written to
* the exe/dll.
*
* RETURN: TRUE if success, or FALSE if error.
*/
 
BOOL WINAPI _EndUpdateResource(HANDLE hUpdateResource, BOOL fDiscard)
{
if (!hUpdateResource)
{
SetLastError(ERROR_INVALID_HANDLE);
return(FALSE);
}
 
// Do not discard the changes?
if (!fDiscard)
{
IMAGE_OPTIONAL_HEADER oh;
DWORD dirTableSize, stringTableSize, rawDataSize, totalSize, alignedSize;
DWORD error;
unsigned char *pRsrc;
 
// We need to save our internal table of RESOURCES to the EXE/DLL file, modifying the actual executable
 
// Get rid of strings that are no longer referenced by some resource
removeUnreferencedStrings((LPRSRCINFO)hUpdateResource);
 
// Seek to where to PE Header begins (actually, after the IMAGE_FILE_HEADER)
SetFilePointer(((LPRSRCINFO)hUpdateResource)->File,
((LPRSRCINFO)hUpdateResource)->FilePtrToPEHdr + sizeof(IMAGE_FILE_HEADER), 0, FILE_BEGIN);
 
// Read in the IMAGE_OPTIONAL_HEADER
if (!ReadFile(((LPRSRCINFO)hUpdateResource)->File, &oh, sizeof(IMAGE_OPTIONAL_HEADER), &error, NULL) || error != sizeof(IMAGE_OPTIONAL_HEADER))
{
bad2: error = GetLastError();
goto bad;
}
 
// First we calculate all sizes and put the '.rsrc' section last in the dll/exe file and Virtual memory
dirTableSize = calcDirTableSize((LPRSRCINFO)hUpdateResource, &rawDataSize);
stringTableSize = calcStringTableSize((LPRSRCINFO)hUpdateResource);
 
DWORD_ALIGN(dirTableSize);
DWORD_ALIGN(stringTableSize);
 
alignedSize = totalSize = dirTableSize + stringTableSize + rawDataSize;
alignedSize = (totalSize + oh.FileAlignment - 1) & ~(oh.FileAlignment - 1);
 
if ((error = relocateSections((LPRSRCINFO)hUpdateResource, totalSize, alignedSize, &oh)) != ERROR_SUCCESS)
{
bad: cleanupRsrcInfo((LPRSRCINFO)hUpdateResource);
SetLastError(error);
return(FALSE);
}
 
// Allocate a block of memory to hold all of the directory structures, StringTable, and resource data. We will
// be forming the '.rsrc' section in memory, and then writing it out to the EXE/DLL file
if (!(pRsrc = GlobalAlloc(GMEM_FIXED, alignedSize))) goto bad2;
bzero(pRsrc, alignedSize);
 
// Form the stringtable within the '.rsrc' section
generateStringTable((LPRSRCINFO)hUpdateResource, (WORD *)(pRsrc + dirTableSize), dirTableSize);
 
// Form the rest of the '.rsrc' section
generateCode((LPRSRCINFO)hUpdateResource, pRsrc, dirTableSize + stringTableSize);
 
// Write '.rsrc' to file
SetFilePointer(((LPRSRCINFO)hUpdateResource)->File,
((LPRSRCINFO)hUpdateResource)->SectionHeader.PointerToRawData, 0, FILE_BEGIN);
if (!WriteFile(((LPRSRCINFO)hUpdateResource)->File, pRsrc, alignedSize, &error, NULL) || error != alignedSize)
{
GlobalFree(pRsrc);
goto bad2;
}
 
// Free the image in memory now that it is written out
GlobalFree(pRsrc);
}
 
// Free up the RSRCINFO and its lists
cleanupRsrcInfo((LPRSRCINFO)hUpdateResource);
 
// Success
return(TRUE);
}
 
 
 
#if 0
 
/******************************** DllMain() ********************************
* Automatically called by Win32 when the DLL is loaded or unloaded.
***************************************************************************/
 
#if defined(_MSC_VER)
#ifndef _DEBUG
BOOL WINAPI _DllMainCRTStartup(HANDLE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
#else
BOOL WINAPI DllMain(HANDLE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) /* <--- Doesn't replace startup code */
#endif
#else
BOOL WINAPI DllMain(HANDLE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
#endif
{
switch(fdwReason)
{
/* ============================================================== */
case DLL_PROCESS_ATTACH:
{
/*
* Here you would do any initialization that you want to do when
* the DLL loads. The OS calls this every time another program
* runs which uses this DLL. You should put some complementary
* cleanup code in the DLL_PROCESS_DETACH case.
*/
break;
}
 
/* ============================================================== */
case DLL_THREAD_ATTACH:
{
/* We don't need to do any initialization for each thread of
* the program which uses this DLL, so disable thread messages.
*/
DisableThreadLibraryCalls(hinstDLL);
break;
}
 
/*
case DLL_THREAD_DETACH:
{
break;
}
*/
/* ============================================================== */
case DLL_PROCESS_DETACH:
{
}
}
 
/* Success */
return(1);
}
#endif
/trunk/jglatt/Resource.def
0,0 → 1,9
LIBRARY RESOURCE
EXPORTS
_BeginUpdateResourceA
_BeginUpdateResourceW
_EndUpdateResource
_UpdateResourceA
_UpdateResourceW
_GetRsrcDataA
_GetRsrcDataW
Property changes:
Added: svn:executable
/trunk/jglatt/Resource.mak
0,0 → 1,223
# Microsoft Developer Studio Generated NMAKE File, Format Version 40001
# ** DO NOT EDIT **
 
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
 
!IF "$(CFG)" == ""
CFG=Resource - Win32 Debug
!MESSAGE No configuration specified. Defaulting to Resource - Win32 Debug.
!ENDIF
 
!IF "$(CFG)" != "Resource - Win32 Release" && "$(CFG)" !=\
"Resource - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE on this makefile
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "Resource.mak" CFG="Resource - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "Resource - Win32 Release" (based on\
"Win32 (x86) Dynamic-Link Library")
!MESSAGE "Resource - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
 
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
################################################################################
# Begin Project
# PROP Target_Last_Scanned "Resource - Win32 Debug"
RSC=rc.exe
MTL=mktyplib.exe
CPP=cl.exe
 
!IF "$(CFG)" == "Resource - Win32 Release"
 
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
OUTDIR=.\Release
INTDIR=.\Release
 
ALL : "$(OUTDIR)\Resource.dll"
 
CLEAN :
-@erase ".\Release\Resource.dll"
-@erase ".\Release\Resource.obj"
-@erase ".\Release\Resource.lib"
-@erase ".\Release\Resource.exp"
 
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
 
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /MT /W3 /GX- /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
CPP_PROJ=/nologo /MT /W3 /GX- /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\
/Fp"$(INTDIR)/Resource.pch" /YX /Fo"$(INTDIR)/" /c
CPP_OBJS=.\Release/
CPP_SBRS=
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /win32
MTL_PROJ=/nologo /D "NDEBUG" /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/Resource.bsc"
BSC32_SBRS=
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:I386 /nodefaultlib
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\
/subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)/Resource.pdb"\
/machine:I386 /nodefaultlib /def:".\Resource.def" /out:"$(OUTDIR)/Resource.dll"\
/implib:"$(OUTDIR)/Resource.lib"
DEF_FILE= \
".\Resource.def"
LINK32_OBJS= \
".\Release\Resource.obj"
 
"$(OUTDIR)\Resource.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
 
!ELSEIF "$(CFG)" == "Resource - Win32 Debug"
 
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
OUTDIR=.\Debug
INTDIR=.\Debug
 
ALL : "$(OUTDIR)\Resource.dll"
 
CLEAN :
-@erase ".\Debug\vc40.pdb"
-@erase ".\Debug\vc40.idb"
-@erase ".\Debug\Resource.dll"
-@erase ".\Debug\Resource.obj"
-@erase ".\Debug\Resource.ilk"
-@erase ".\Debug\Resource.lib"
-@erase ".\Debug\Resource.exp"
-@erase ".\Debug\Resource.pdb"
 
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
 
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
CPP_PROJ=/nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\
/Fp"$(INTDIR)/Resource.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c
CPP_OBJS=.\Debug/
CPP_SBRS=
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /win32
MTL_PROJ=/nologo /D "_DEBUG" /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/Resource.bsc"
BSC32_SBRS=
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\
/subsystem:windows /dll /incremental:yes /pdb:"$(OUTDIR)/Resource.pdb" /debug\
/machine:I386 /def:".\Resource.def" /out:"$(OUTDIR)/Resource.dll"\
/implib:"$(OUTDIR)/Resource.lib"
DEF_FILE= \
".\Resource.def"
LINK32_OBJS= \
".\Debug\Resource.obj"
 
"$(OUTDIR)\Resource.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
 
!ENDIF
 
.c{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
 
.cpp{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
 
.cxx{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
 
.c{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
 
.cpp{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
 
.cxx{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
 
################################################################################
# Begin Target
 
# Name "Resource - Win32 Release"
# Name "Resource - Win32 Debug"
 
!IF "$(CFG)" == "Resource - Win32 Release"
 
!ELSEIF "$(CFG)" == "Resource - Win32 Debug"
 
!ENDIF
 
################################################################################
# Begin Source File
 
SOURCE=.\Resource.def
 
!IF "$(CFG)" == "Resource - Win32 Release"
 
!ELSEIF "$(CFG)" == "Resource - Win32 Debug"
 
!ENDIF
 
# End Source File
################################################################################
# Begin Source File
 
SOURCE=.\Resource.c
DEP_CPP_RESOU=\
".\UpdateResource.h"\
".\RsrcStructs.h"\
 
"$(INTDIR)\Resource.obj" : $(SOURCE) $(DEP_CPP_RESOU) "$(INTDIR)"
 
 
# End Source File
# End Target
# End Project
################################################################################
Property changes:
Added: svn:executable
/trunk/jglatt/Resource.mdp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/jglatt/RsrcStructs.h
0,0 → 1,165
#ifndef __RSRCSTRUCTS_H__
#define __RSRCSTRUCTS_H__
 
// Structures found embedded in an EXE/DLL's resources
 
#define DWORD_ALIGN(i) (i = (i + 3) & ~3)
 
typedef struct {
DWORD Characteristics;
DWORD TimeDateStamp;
WORD VersionMajor;
WORD VersionMinor;
WORD NumNameEntries;
WORD NumIDEntries;
} RSRCDIRTABLEHEAD;
 
typedef struct {
union {
DWORD NameRVA;
DWORD IntegerID;
};
union {
DWORD DataEntryRVA;
DWORD SubdirectoryRVA;
};
} RSRCDIRENTRY;
 
typedef struct {
DWORD DataRVA;
DWORD Size;
DWORD Codepage;
DWORD Reserved;
} RSRCDATAENTRY;
 
 
 
 
 
// Internal structures we use to maintain information about an EXE/DLL's loaded resources
 
typedef struct {
DWORD Characteristics;
DWORD TimeDateStamp;
WORD VersionMajor;
WORD VersionMinor;
} RESOURCEINFO, *LPRESOURCEINFO;
 
#pragma pack(1)
typedef struct StringHead {
 
// To link the next StringHead in a linked list. Must be the first field!
struct StringHead *Next;
 
// Size of the string
DWORD Size;
 
// The actual string is embedded here, so this struct's size can vary
WCHAR String[1];
 
} STRINGHEAD, *LPSTRINGHEAD;
#pragma pack()
 
typedef struct Resource {
 
// To link the next Resource in a linked list
struct Resource *Next;
 
// Information associated with this resource
LPBYTE Data;
DWORD DataSize;
DWORD Codepage;
DWORD Reserved;
WORD LanguageID;
} RESOURCE, *LPRESOURCE;
 
// Holds info about each Named instance of a given Type of resource in the EXE/DLL
typedef struct ResourceName {
 
// To link the next RESOURCENAME in a linked list. Must be the first field!
struct ResourceName *Next;
 
// The resource Name string or number. Must be the second field!
union {
DWORD NameID;
LPWSTR NameString;
};
 
// A linked list of the Language Resources for this Type/Name
LPRESOURCE Languages;
 
// Information associated with this resource Type
DWORD Characteristics;
DWORD TimeDateStamp;
WORD VersionMajor;
WORD VersionMinor;
 
} RESOURCENAME, *LPRESOURCENAME;
 
// Holds info about each Type of resource in the EXE/DLL
typedef struct ResourceType {
 
// To link the next RESOURCETYPE in a linked list. Must be the first field!
struct ResourceType *Next;
 
// The resource Type string or number. Must be the second field!
union {
DWORD TypeID;
LPWSTR TypeString;
};
 
// A linked list of the Named/ID'ed resources for this Type
LPRESOURCENAME Names;
 
// Information associated with this resource Type
DWORD Characteristics;
DWORD TimeDateStamp;
WORD VersionMajor;
WORD VersionMinor;
 
} RESOURCETYPE, *LPRESOURCETYPE;
 
// An internal structure we use to maintain information about an EXE/DLL's loaded resources
typedef struct RsrcInfo {
// Handle to open file
HANDLE *File;
 
// Byte offset within file to the resources
DWORD FilePtrToPEHdr;
 
// To load the Section Header
IMAGE_SECTION_HEADER SectionHeader;
 
// To load the PE Header
IMAGE_FILE_HEADER PEHeader;
 
// A linked list of the Named/ID'ed Types in the EXE/DLL
LPRESOURCETYPE Types;
 
// Information from the master RsrcDirTableHead in the EXE/DLL
DWORD Characteristics;
DWORD TimeDateStamp;
WORD VersionMajor;
WORD VersionMinor;
 
// A linked list of strings
LPSTRINGHEAD vtrStrings;
 
} RSRCINFO, *LPRSRCINFO;
 
// Used for get_time()
typedef struct {
int tm_sec; // Seconds [0 to 59]
int tm_min; // Minutes [0 to 59]
int tm_hour; // Hour [0 to 23, where 0 = Midnight]
int tm_mday; // Day of the month [1 to 31]
int tm_mon; // Months [0 to 11, where 0 = Jan]
int tm_year; // Current Year - 1900
int tm_wday; // Day of week [0 to 6 where 0 = Sunday]
int tm_yday; // Day of the Year [0 to 365 where 0 = Jan 1]
int tm_isdst; // Daylight Savings Time flag [0=none, 1=yes]
} TM;
 
#define offsetof(s,m) (size_t)&(((s *)0)->m)
 
#endif //__RSRCSTRUCTS_H__
/trunk/jglatt/UpdateResource.h
0,0 → 1,63
#ifndef __UPDATERESOURCE_H__
#define __UPDATERESOURCE_H__
 
#include <windows.h> //WORD, DWORD, HANDLE...
 
#define ERROR_CANT_MOVE_SECTION (1 | (1 << 29))
 
#ifdef __cplusplus
extern "C" {
#endif
 
HANDLE WINAPI _BeginUpdateResourceA(LPCSTR, BOOL);
typedef HANDLE WINAPI BeginUpdateResourceAPtr(LPCSTR, BOOL);
HANDLE WINAPI _BeginUpdateResourceW(LPCWSTR, BOOL);
typedef HANDLE WINAPI BeginUpdateResourceWPtr(LPCWSTR, BOOL);
#define BeginUpdateResourceNameA "_BeginUpdateResourceA"
#define BeginUpdateResourceNameW "_BeginUpdateResourceW"
 
BOOL WINAPI _UpdateResourceA(HANDLE, LPCSTR, LPCSTR, WORD, LPVOID, DWORD);
typedef BOOL WINAPI UpdateResourceAPtr(HANDLE, LPCSTR, LPCSTR, WORD, LPVOID, DWORD);
BOOL WINAPI _UpdateResourceW(HANDLE, LPCWSTR, LPCWSTR, WORD, LPVOID, DWORD);
typedef BOOL WINAPI UpdateResourceWPtr(HANDLE, LPCWSTR, LPCWSTR, WORD, LPVOID, DWORD);
#define UpdateResourceNameA "_UpdateResourceA"
#define UpdateResourceNameW "_UpdateResourceW"
 
LPBYTE WINAPI _GetRsrcDataA(HANDLE, LPCSTR, LPCSTR, WORD, DWORD *);
typedef LPBYTE WINAPI GetRsrcDataAPtr(HANDLE, LPCSTR, LPCSTR, WORD, DWORD *);
LPBYTE WINAPI _GetRsrcDataW(HANDLE, LPCWSTR, LPCWSTR, WORD, DWORD *);
typedef LPBYTE WINAPI GetRsrcDataWPtr(HANDLE, LPCWSTR, LPCWSTR, WORD, DWORD *);
#define GetRsrcDataNameA "_GetRsrcDataA"
#define GetRsrcDataNameW "_GetRsrcDataW"
 
BOOL WINAPI _EndUpdateResource(HANDLE, BOOL);
typedef BOOL WINAPI EndUpdateResourcePtr(HANDLE, BOOL);
#define EndUpdateResourceName "_EndUpdateResource"
 
#ifdef _UNICODE
# define _BeginUpdateResource _BeginUpdateResourceW
# define _UpdateResource _UpdateResourceW
# define _GetRsrcData _GetRsrcDataW
# define BeginUpdateResourcePtr BeginUpdateResourceWPtr
# define UpdateResourcePtr UpdateResourceWPtr
# define GetRsrcDataPtr GetRsrcDataWPtr
# define BeginUpdateResourceName BeginUpdateResourceNameW
# define UpdateResourceName UpdateResourceNameW
# define GetRsrcDataName GetRsrcDataNameW
#else
# define _BeginUpdateResource _BeginUpdateResourceA
# define _UpdateResource _UpdateResourceA
# define _GetRsrcData _GetRsrcDataA
# define BeginUpdateResourcePtr BeginUpdateResourceAPtr
# define UpdateResourcePtr UpdateResourceAPtr
# define GetRsrcDataPtr GetRsrcDataAPtr
# define BeginUpdateResourceName BeginUpdateResourceNameA
# define UpdateResourceName UpdateResourceNameA
# define GetRsrcDataName GetRsrcDataNameA
#endif
 
#ifdef __cplusplus
}
#endif
 
#endif //__UPDATERESOURCE_H__
/trunk/jglatt/example/Example.c
0,0 → 1,90
/* Tests the resource.dll Dynamic Link Library, containing the functions
* _BeginUpdateResource(), _UpdateResource(), _EndUpdateResource(), and
* _GetRsrcData().
*/
 
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
 
/* Must include this special .h for our resource.dll */
#include "..\UpdateResource.h"
 
int main(int argc, char *argv[], char *envp[])
{
HINSTANCE ResourceDll;
BeginUpdateResourcePtr *BeginUpdateResource;
EndUpdateResourcePtr *EndUpdateResource;
UpdateResourcePtr *UpdateResource;
GetRsrcDataPtr *GetRsrcData;
 
HANDLE rsc;
 
/* Check if any parameters were given, if not, display some help info */
if (argc < 2)
{
_cputs("Tests resource.dll.\r\n\nSyntax is '");
_cputs(argv[0]);
_cputs( " name'.\r\n where name is the name of some exe/dll whose resources are to be listed.\r\n");
return(-1);
}
 
/* Open resource.dll */
if (!(ResourceDll = LoadLibrary("..\\..\\debug\\resource.dll")))
{
_cputs("Can't find resource.dll!\r\n");
return(-2);
}
 
/* Get the address of the _BeginUpdateResource() function */
if (!(BeginUpdateResource = (BeginUpdateResourcePtr *)GetProcAddress(ResourceDll, BeginUpdateResourceName)) ||
 
/* Get the address of the _EndUpdateResource() function */
!(EndUpdateResource = (EndUpdateResourcePtr *)GetProcAddress(ResourceDll, EndUpdateResourceName)) ||
 
/* Get the address of the _UpdateResource() function */
!(UpdateResource = (UpdateResourcePtr *)GetProcAddress(ResourceDll, UpdateResourceName)) ||
 
/* Get the address of the _GetRsrcData() function */
!(GetRsrcData = (GetRsrcDataPtr *)GetProcAddress(ResourceDll, GetRsrcDataName)))
{
FreeLibrary((HMODULE)ResourceDll);
_cputs("Not the resource.dll version we need!\r\n");
return(-3);
}
 
/* Load the resources for the specified exe/dll */
if (!(rsc = BeginUpdateResource(argv[1], FALSE)))
{
FreeLibrary((HMODULE)ResourceDll);
_cputs("Can't load the resources for \"");
_cputs(argv[1]);
_cputs("\"!\r\n");
return(-4);
}
 
/* End the resource.dll usage */
if (!EndUpdateResource(rsc, FALSE))
{
UCHAR strError[256];
DWORD errornum;
 
errornum = GetLastError();
 
// Get the error message associated with this error # from Windows
// except for ERROR_CANT_MOVE_SECTION
if (errornum != ERROR_CANT_MOVE_SECTION)
{
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, errornum, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), &strError[0], 256, 0);
}
else
strcpy(&strError[0], "This exe/dll is in a format that can't be processed by resource.dll!");
 
MessageBox(0, &strError[0], "ERROR", MB_OK);
}
 
/* Free the library */
FreeLibrary((HMODULE)ResourceDll);
 
return(0);
}
Property changes:
Added: svn:executable
/trunk/jglatt/example/Example.mak
0,0 → 1,192
# Microsoft Developer Studio Generated NMAKE File, Format Version 40001
# ** DO NOT EDIT **
 
# TARGTYPE "Win32 (x86) Console Application" 0x0103
 
!IF "$(CFG)" == ""
CFG=Example - Win32 Debug
!MESSAGE No configuration specified. Defaulting to Example - Win32 Debug.
!ENDIF
 
!IF "$(CFG)" != "Example - Win32 Release" && "$(CFG)" !=\
"Example - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE on this makefile
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "Example.mak" CFG="Example - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "Example - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "Example - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
 
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
################################################################################
# Begin Project
# PROP Target_Last_Scanned "Example - Win32 Debug"
CPP=cl.exe
RSC=rc.exe
 
!IF "$(CFG)" == "Example - Win32 Release"
 
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
OUTDIR=.\Release
INTDIR=.\Release
 
ALL : "$(OUTDIR)\Example.exe"
 
CLEAN :
-@erase ".\Release\Example.exe"
-@erase ".\Release\Example.obj"
 
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
 
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE"\
/Fp"$(INTDIR)/Example.pch" /YX /Fo"$(INTDIR)/" /c
CPP_OBJS=.\Release/
CPP_SBRS=
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/Example.bsc"
BSC32_SBRS=
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\
/subsystem:console /incremental:no /pdb:"$(OUTDIR)/Example.pdb" /machine:I386\
/out:"$(OUTDIR)/Example.exe"
LINK32_OBJS= \
".\Release\Example.obj"
 
"$(OUTDIR)\Example.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
 
!ELSEIF "$(CFG)" == "Example - Win32 Debug"
 
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
OUTDIR=.\Debug
INTDIR=.\Debug
 
ALL : "$(OUTDIR)\Example.exe"
 
CLEAN :
-@erase ".\Debug\vc40.pdb"
-@erase ".\Debug\vc40.idb"
-@erase ".\Debug\Example.exe"
-@erase ".\Debug\Example.obj"
-@erase ".\Debug\Example.ilk"
-@erase ".\Debug\Example.pdb"
 
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
 
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE"\
/Fp"$(INTDIR)/Example.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c
CPP_OBJS=.\Debug/
CPP_SBRS=
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/Example.bsc"
BSC32_SBRS=
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\
/subsystem:console /incremental:yes /pdb:"$(OUTDIR)/Example.pdb" /debug\
/machine:I386 /out:"$(OUTDIR)/Example.exe"
LINK32_OBJS= \
".\Debug\Example.obj"
 
"$(OUTDIR)\Example.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
 
!ENDIF
 
.c{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
 
.cpp{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
 
.cxx{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
 
.c{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
 
.cpp{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
 
.cxx{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
 
################################################################################
# Begin Target
 
# Name "Example - Win32 Release"
# Name "Example - Win32 Debug"
 
!IF "$(CFG)" == "Example - Win32 Release"
 
!ELSEIF "$(CFG)" == "Example - Win32 Debug"
 
!ENDIF
 
################################################################################
# Begin Source File
 
SOURCE=.\Example.c
DEP_CPP_EXAMP=\
".\..\UpdateResource.h"\
 
"$(INTDIR)\Example.obj" : $(SOURCE) $(DEP_CPP_EXAMP) "$(INTDIR)"
 
 
# End Source File
# End Target
# End Project
################################################################################
Property changes:
Added: svn:executable
/trunk/jglatt/example/Example.mdp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/lexer.l
0,0 → 1,142
%{
 
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
//#ifdef TARGET_API_MAC_CARBON
// /* can't use StdCLib ctype.h, it refers to symbols which aren't in OS X stdclib */
// int toupper(int);
//#else
#include <ctype.h>
//#endif
 
#include "node.h"
#include "dbg.h"
#include "y.tab.h"
 
#define yywrap() 1
 
/* the reason for these hacks is to prevent any references to stdlib,
which cause load failures in OS X due to mismatch of headers/libraries
when project is built with MPW */
 
#if defined(__MRC__) && TARGET_CARBON
#define stdin 0
#define stdout 0
#define stderr 0
#endif
 
#define YY_FATAL_ERROR(msg)
#define YY_INPUT
#define YYDECL int yylex(void)
#define ECHO
#define YY_NEVER_INTERACTIVE 1
 
YYDECL;
 
int tokpos,tokstart;
 
extern YYSTYPE yylval;
extern int inarglist[],arglistptr,varused[];
 
#define OP(x) \
yylval = newnode(x); \
return x;
 
#define YY_USER_ACTION \
tokstart = tokpos; \
tokpos += yyleng;
 
%}
 
DIGIT [0-9]
HEXDIGIT [0-9A-Fa-f]
 
%%
 
[ \t\n\r]+|"//"[^\n\r]* ; /* ignore whitespace, comments */
 
0[xX]{HEXDIGIT}+ { /* hex constant; make new tree node */
int i,c;
value_type v;
char *p;
 
for( i=yyleng-2,p=yytext+2,v = 0 ; i-- ; ){
c = toupper(*p++);
v *= 16;
v += c - (c>='A' ? 'A'-10 : '0');
}
yylval = newnode(TOK_NUM);
yylval->v.value = v;
return TOK_NUM;
}
 
{DIGIT}+ { /* decimal constant; make new tree node */
/* {DIGIT}*(\.{DIGIT}+)?([eE][\+\-]?{DIGIT}+)? */
yylval = newnode(TOK_NUM);
#ifdef FP_VALUE
yylval->v.value = atof(yytext);
#else
yylval->v.value = atoi(yytext);
#endif
return TOK_NUM;
}
 
"<<" { OP(SHLEFT); }
">>" { OP(SHRIGHT); }
"<=" { OP(LE); }
">=" { OP(GE); }
"==" { OP(EQ); }
"!=" { OP(NE); }
"&&" { OP(LOGAND); }
"||" { OP(LOGOR); }
/* "**" { OP(EXP); } */
 
 
[!~+\-*/%<>&^|?] { OP(yytext[0]); } /* an operator; make new tree node */
 
, { /* comma is special; sometimes it's an operator, and sometimes a function argument separator */
if(inarglist[arglistptr])
return TOK_ARGSEP;
else{
OP(yytext[0]);
}
}
 
[():] return yytext[0]; /* these tokens are just sugar; never tree nodes */
 
[a-zA-Z][a-zA-Z0-9]+ { /* an identifier (more than one character); look it up */
struct sym_rec *s = lookup(yytext);
if(s){ /* a known function or variable; make a tree node for it */
yylval = newnode(s->token);
yylval->v.sym = s;
return s->token;
}else
return TOK_UNKNOWN;
}
[rgbaciuvxyzdmXYZDM] { /* single character variable */
yylval = newnode(TOK_SPECIALVAR);
yylval->v.specialvar = yytext[0];
return TOK_SPECIALVAR;
}
 
. return TOK_BADCHAR;
 
%%
/trunk/load_mac.c
0,0 → 1,60
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include "ff.h"
 
#include "file_compat.h"
 
Boolean readPARMresource(HMODULE hm,char **reason){
Boolean res = false;
Handle h;
if(h = Get1Resource(PARM_TYPE,PARM_ID)){
HLock(h);
res = readPARM(*h,&gdata->parm,reason);
ReleaseResource(h);
}
return res;
}
 
Boolean loadfile(StandardFileReply *sfr,char **reason){
Boolean readok = false;
FInfo fndrInfo;
short rrn;
 
if(!FSpGetFInfo(&sfr->sfFile,&fndrInfo))
switch(fndrInfo.fdType){
case TEXT_FILETYPE:
if(readok = readfile(sfr,reason))
gdata->parmloaded = false;
break;
case PS_FILTER_FILETYPE:
if( (rrn = FSpOpenResFile(&sfr->sfFile,fsRdPerm)) != -1 ){
if(readPARMresource(NULL,reason)){
if(gdata->parm.iProtected)
*reason = ("The filter is protected.");
else
readok = gdata->parmloaded = true;
}else *reason = ("It is not a standalone filter made by Filter Factory/Filter Foundry.");
CloseResFile(rrn);
}else *reason = "Could not open file.";
break;
}
 
return readok;
}
/trunk/load_win.c
0,0 → 1,70
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include "ff.h"
 
#include "file_compat.h"
 
#include <string.h>
 
Boolean readPARMresource(HMODULE hm,char **reason){
Boolean res = false;
HRSRC resinfo;
HANDLE h;
Ptr pparm;
 
if( (resinfo = FindResource(hm,MAKEINTRESOURCE(PARM_ID),"PARM"))
&& (h = LoadResource(hm,resinfo))
&& (pparm = LockResource(h)) ){
res = readPARM(pparm,&gdata->parm,reason);
}
return res;
}
 
// see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/loadlibraryex.asp
 
Boolean loadfile(StandardFileReply *sfr,char **reason){
Boolean readok = false;
HANDLE h;
HMODULE hm;
 
sfr->sfFile.name[*sfr->sfFile.name+1] = 0; // add terminating null
 
if(sfr->nFileExtension){
if(!strcasecmp((char*)sfr->sfFile.name + 1 + sfr->nFileExtension,"8bf")){
if( hm = LoadLibraryEx((char*)sfr->sfFile.name+1,NULL,LOAD_LIBRARY_AS_DATAFILE) ){
if(readPARMresource(hm,reason)){
if(gdata->parm.iProtected)
*reason = ("The filter is protected.");
else
readok = gdata->parmloaded = true;
}else *reason = ("It is not a standalone filter made by Filter Factory/Filter Foundry.");
FreeLibrary(hm);
}else{
*reason = "Could not open file (LoadLibrary failed).";
dbglasterror("LoadLibrary");
}
}else{
if(readok = readfile(sfr,reason))
gdata->parmloaded = false;
}
}
 
return readok;
}
/trunk/main.c
0,0 → 1,220
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
//#include <stdio.h>
//#include <sound.h>
 
#include "ff.h"
#include "node.h"
#include "parser.h"
#include "scripting.h"
 
struct node *tree[4];
char *err[4];
int errpos[4],errstart[4],nplanes,srcradused,chunksize,toprow;
value_type slider[8],cell[0x100],map[4][0x100];
char *expr[4],*defaultexpr[]={"r","g","b","a"};
 
#ifdef MAC_ENV
/* fake this Windows-only global */
Handle hDllInstance = NULL;
#endif
 
extern struct sym_rec predefs[];
extern int nplanes,varused[],srcradused;
 
globals_t *gdata;
FilterRecordPtr gpb;
 
void checkandinitparams(long *data,Handle params);
 
DLLEXPORT MACPASCAL
void ENTRYPOINT(short selector,FilterRecordPtr pb,long *data,short *result){
OSErr e = noErr;
static Boolean wantdialog = false;
EnterCodeResource();
gpb = pb;
if(!*data){
gdata = (globals_t*)( *data = (long)malloc(sizeof(globals_t)) ) ;
gdata->standalone = gdata->parmloaded = false;
}else
gdata = (globals_t*)*data;
nplanes = MIN(pb->planes,4);
 
switch (selector){
case filterSelectorAbout:
DoAbout((AboutRecordPtr)pb);
break;
case filterSelectorParameters:
// dbg("filterSelectorParameters");
wantdialog = true; // was: true;
break;
case filterSelectorPrepare:
// dbg("filterSelectorPrepare");
DoPrepare(pb);
init_symtab(predefs); // ready for parser calls
break;
case filterSelectorStart:
// dbg("filterSelectorStart");
if(!pb->parameters)
pb->parameters = PINEWHANDLE(0);
 
checkandinitparams(data,pb->parameters);
 
if( wantdialog && (!gdata->standalone || gdata->parm.popDialog) ){
if( maindialog(pb) ){
/* update parameters */
saveparams(pb->parameters);
}else
e = userCanceledErr;
wantdialog = false;
}
 
if(!e){
if(setup(pb)){
DoStart(pb);
}else{
SYSBEEP(1);
e = filterBadParameters;
}
}
break;
case filterSelectorContinue:
e = DoContinue(pb);
break;
case filterSelectorFinish:
DoFinish(pb);
break;
default:
e = filterBadParameters;
}
*result = e;
 
ExitCodeResource();
}
 
void checkandinitparams(long *data,Handle params){
char *reasonstr;
int i;
char *reason;
if(!(params && readparams(params,false,&reasonstr))){
/* either the parameter handle was uninitialised,
or the parameter data couldn't be read; set default values */
 
if(readPARMresource(hDllInstance,&reason))
gdata->standalone = true;
else{
/* no scripted parameters - dialog wanted */
for(i=0;i<8;++i)
slider[i] = i*10+100;
for(i=4;i--;)
expr[i] = my_strdup(defaultexpr[i]);
}
}
if( ! ReadScriptParamsOnRead() )
saveparams(gpb->parameters); /* save the scripted params */
 
/* check for NULL expression pointers (?) */
for(i=4;i--;)
if(!expr[i]) expr[i] = my_strdup(defaultexpr[i]);
}
 
void DoPrepare(FilterRecordPtr pb){
int i;
 
for(i=4;i--;){
if(expr[i]||tree[i]) DBG("expr[] or tree[] nonzero in Prepare!");
expr[i] = NULL;
tree[i] = NULL;
}
}
 
void RequestNext(FilterRecordPtr pb,long toprow){
/* Request next block of the image */
 
pb->inLoPlane = pb->outLoPlane = 0;
pb->inHiPlane = pb->outHiPlane = nplanes-1;
 
if(srcradused){
SETRECT(pb->inRect,0,0,pb->imageSize.h,pb->imageSize.v);
}else{
pb->inRect.left = pb->filterRect.left;
pb->inRect.right = pb->filterRect.right;
pb->inRect.top = toprow;
pb->inRect.bottom = MIN(toprow + chunksize,pb->filterRect.bottom);
}
pb->outRect = pb->inRect;
/*
{char s[0x100];sprintf(s,"RequestNext srcradused=%d inRect=(%d,%d,%d,%d) filterRect=(%d,%d,%d,%d)",
srcradused,
pb->inRect.left,pb->inRect.top,pb->inRect.right,pb->inRect.bottom,
pb->filterRect.left,pb->filterRect.top,pb->filterRect.right,pb->filterRect.bottom);dbg(s);}
*/
}
 
void DoStart(FilterRecordPtr pb){
//dbg("DoStart");
/* if src() or rad() functions are used, random access to the image data is required,
so we must request the entire image in a single chunk. */
chunksize = srcradused ? (pb->filterRect.bottom - pb->filterRect.top) : CHUNK_ROWS;
toprow = pb->filterRect.top;
RequestNext(pb,toprow);
}
 
OSErr DoContinue(FilterRecordPtr pb){
OSErr e = noErr;
Rect *fr = srcradused ? &pb->filterRect : &pb->inRect;
long outoffset = (long)pb->outRowBytes*(fr->top - pb->outRect.top)
+ (long)nplanes*(fr->left - pb->outRect.left);
 
// {char s[0x100];sprintf(s,"DoContinue: outoffset=%d\n",outoffset);dbg(s);}
if(!(e = process_scaled(pb,true,
&pb->inRect,
fr,
fr,//&pb->outRect,
(Ptr)pb->outData+outoffset,pb->outRowBytes, 1.))){
toprow += chunksize;
if(toprow < pb->filterRect.bottom)
RequestNext(pb,toprow);
else{
SETRECT(pb->inRect,0,0,0,0);
pb->outRect = pb->maskRect = pb->inRect;
}
}
return e;
}
 
void DoFinish(FilterRecordPtr pb){
int i;
WriteScriptParamsOnRead();
 
for(i=4;i--;){
freetree(tree[i]);
if(expr[i]) free(expr[i]);
}
}
/trunk/make.c
0,0 → 1,171
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include <stddef.h>
 
#include "ff.h"
#include "symtab.h"
 
#include "PIActions.h"
 
#include "compat_string.h"
 
long event_id;
 
/*
Find a printable 4-character key, remembering (see PS API guide):
All IDÕs starting with an uppercase letter are reserved by Adobe.
All IDÕs that are all uppercase are reserved by Apple.
All IDÕs that are all lowercase are reserved by Apple.
This leaves all IDÕs that begin with a lowercase letter and have at least
one uppercase letter for you and other plug-in developers.
*/
unsigned long printablehash(unsigned long hash){
unsigned long key = 'a' + (hash % 26); hash /= 26; // first lower case
key <<= 8; key |= ' ' + (hash % 95); hash /= 95; // second and third any printable
key <<= 8; key |= ' ' + (hash % 95); hash /= 95;
return (key<<8) | ('A' + (hash % 26)); // last upper case
}
 
/* original version with any four printables
unsigned long printablehash(unsigned long hash){
unsigned long key;
int i;
for(key=0,i=4;i--;){
key <<= 8;
key |= ' ' + (hash % 95); // get a printable character from hash
hash /= 95;
}
return key;
}
*/
 
long fixpipl(PIPropertyList *pipl,long origsize,StringPtr title){
PIProperty *prop;
struct hstm_data{
/* this structure must be 14+1 bytes long, to match PiPL structure */
long version; /* = 0 */
long class_id;
long event_id;
short aete_resid;
char scope[1];
};
struct hstm_data *hstm;
int scopelen;
unsigned long hash;
 
pipl->count += 3; // more keys in PiPL
 
prop = (PIProperty*)((char*)pipl + origsize);
 
/* add Title/Name property key */
prop->vendorID = kPhotoshopSignature;
prop->propertyKey = PINameProperty;
prop->propertyID = 0;
prop->propertyLength = title[0]+1;
PLstrcpy((StringPtr)prop->propertyData,title);
(char*)prop += (offsetof(PIProperty,propertyData) + prop->propertyLength + 3) & -4;
/* add Category property key */
prop->vendorID = kPhotoshopSignature;
prop->propertyKey = PICategoryProperty;
prop->propertyID = 0;
prop->propertyLength = gdata->parm.category[0]+1;
PLstrcpy((StringPtr)prop->propertyData,gdata->parm.category);
(char*)prop += (offsetof(PIProperty,propertyData) + prop->propertyLength + 3) & -4;
 
/* add HasTerminology property key */
 
/* construct scope string by concatenating Category and Title - hopefully unique! */
hstm = (struct hstm_data*)prop->propertyData;
scopelen = sprintf(hstm->scope,"%s %s",
INPLACEP2CSTR(gdata->parm.category),
INPLACEP2CSTR(title));
 
/* make up a new event ID for this aete, based on printable base-95 hash of scope */
hash = djb2(hstm->scope);
event_id = printablehash(hash); /* this is used by fix_aete later... */
 
prop->vendorID = kPhotoshopSignature;
prop->propertyKey = PIHasTerminologyProperty;
prop->propertyID = 0;
prop->propertyLength = offsetof(struct hstm_data,scope) + scopelen + 1;
hstm->version = 0;
hstm->class_id = plugInClassID;
hstm->event_id = event_id;
hstm->aete_resid = AETE_ID;
(char*)prop += (16+prop->propertyLength+3) & -4;
 
return (char*)prop - (char*)pipl;
}
 
/* Mac aete resources include word alignments after string pairs; Windows ones apparently don't */
#ifdef MAC_ENV
#define ALIGNWORD(j) (j += j & 1)
#else
#define ALIGNWORD(j)
#endif
#define SKIP_PSTR(j) (j += 1+aete[j])
 
long fixaete(unsigned char *aete,long origsize,StringPtr title){
int offset,oldlen,newlen,desclen,oldpad,newpad;
Str255 desc;
offset = 8; /* point at suite name */
 
SKIP_PSTR(offset); /* skip suite name (vendor) [maybe this should become author??] */
SKIP_PSTR(offset); /* skip suite description [set this from dialog field??] */
ALIGNWORD(offset);
offset += 4+2+2+2; /* offset now points to filter name. */
 
oldlen = aete[offset];
newlen = title[0];
 
/* shift aete data taking into account new title string */
desclen = aete[offset+1+oldlen];
PLstrcpy(desc,(StringPtr)(aete+offset+1+oldlen)); /* save description string... */
#ifdef MAC_ENV
/* see if alignment padding is necessary */
oldpad = (oldlen + desclen) & 1;
newpad = (newlen + desclen) & 1;
#else
oldpad = newpad = 0;
#endif
/* shift latter part of aete data, taking into account new string lengths */
memcpy(aete+offset+1+newlen+newpad,
aete+offset+1+oldlen+oldpad,
origsize-offset-1-oldlen-oldpad); /* phew! */
/* copy in new title string */
PLstrcpy((StringPtr)(aete+offset),title);
/* copy description string into right place... [this could be new description from dialog field??] */
PLstrcpy((StringPtr)(aete+offset+1+newlen),desc);
SKIP_PSTR(offset); /* skip (new) event name */
SKIP_PSTR(offset); /* skip event description */
ALIGNWORD(offset);
/* set event ID */
*(unsigned long*)(aete+offset+4) = event_id; /* FIXME: this might be unaligned access on some platforms?? */
 
return origsize-oldlen-oldpad+newlen+newpad;
}
/trunk/make_mac.c
0,0 → 1,194
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include <plstringfuncs.h>
#include <ASRegistry.h>
 
#include "ff.h"
 
#include "file_compat.h"
 
// MoreFiles headers
#include "FileCopy.h"
#include "MoreFilesExtras.h"
 
OSErr wrstr(FILEREF rn,char *s);
OSErr dopkginfo(FILEREF rn);
OSErr make_bundle(StandardFileReply *sfr, short plugvol,long plugdir,StringPtr plugname);
OSErr doresources(FSSpec *srcplug, short dstvol,long dstdir,StringPtr dstname);
OSErr make_singlefile(StandardFileReply *sfr, short plugvol,long plugdir,StringPtr plugname);
 
OSErr wrstr(FILEREF rn,char *s){
long count = strlen(s);
return FSWrite(rn,&count,s);
}
 
OSErr doresources(FSSpec *srcplug, short dstvol,long dstdir,StringPtr dstname){
short srcrn,dstrn;
Handle hpipl,h;
long origsize,newsize;
OSErr e = noErr;
Str255 title;
 
if( -1 != (srcrn = FSpOpenResFile(srcplug,fsCurPerm)) ){
 
hpipl = Get1Resource('DATA',16000);
 
if( -1 != (dstrn = HOpenResFile(dstvol,dstdir,dstname,fsWrPerm)) ){
/* create a new PiPL resource for the standalone plugin,
with updated title and category strings */
if(h = Get1Resource('PiPL',16000)){
RemoveResource(h);
DetachResource(hpipl);
 
PLstrcpy(title,gdata->parm.title);
if(gdata->parm.popDialog)
PLstrcat(title,"\pÉ");
 
origsize = GetHandleSize(hpipl);
SetHandleSize(hpipl,origsize+0x300); /* some slop for fixup to work with */
HLock(hpipl);
newsize = fixpipl((PIPropertyList*) *hpipl,origsize,title);
HUnlock(hpipl);
SetHandleSize(hpipl,newsize);
AddResource(hpipl,'PiPL',16000,"\p");
}
 
/* do a similar trick with the terminology resource,
so the scripting system can distinguish the standalone plugin */
 
if(h = Get1Resource(typeAETE,AETE_ID)){
origsize = GetHandleSize(h);
SetHandleSize(h,origsize+0x100); /* slop for fixup to work with */
HLock(h);
newsize = fixaete((unsigned char*)*h,origsize,gdata->parm.title);
HUnlock(h);
SetHandleSize(h,newsize);
ChangedResource(h);
}
 
if( !(e = ResError()) ){
/* now add PARM resource */
if( !(e = PtrToHand(&gdata->parm,&h,sizeof(PARM_T))) ){
AddResource(h,'PARM',PARM_ID,"\p");
e = ResError();
}
}
CloseResFile(dstrn);
 
}else e = ResError();
 
CloseResFile(srcrn);
 
}else e = ResError();
return e;
}
 
#if 0
OSErr make_bundle(StandardFileReply *sfr, short plugvol,long plugdir,StringPtr plugname){
short dstvol = sfr->sfFile.vRefNum;
long bundledir,contentsdir,macosdir,macoscdir;
DInfo fndrInfo;
OSErr e;
Str255 temp;
FSSpec fss,macosfss,macoscfss;
 
if( !(e = FSpDirCreate(&sfr->sfFile,sfr->sfScript,&bundledir)) ){
if(!(e = FSpGetDInfo(&sfr->sfFile,&fndrInfo)) ){
fndrInfo.frFlags |= kHasBundle;
FSpSetDInfo(&sfr->sfFile,&fndrInfo);
}
if( !(e = DirCreate(dstvol,bundledir,"\pContents",&contentsdir)) ){
if( !(e = DirCreate(dstvol,contentsdir,"\pMacOS",&macosdir)) ){
if( !(e = DirCreate(dstvol,contentsdir,"\pMacOSClassic",&macoscdir)) ){
 
/* directories created ; now we need to copy the Info.plist file, and the two binaries */
 
if( !(e = FSMakeFSSpec(plugvol,plugdir,"\p::Info.plist",&fss))
&& !(e = FileCopy(fss.vRefNum,fss.parID,fss.name, dstvol,contentsdir,NULL, NULL,NULL,0,false)) ){
PLstrcpy(temp,"\p::MacOSClassic:");
PLstrcat(temp,plugname);
if( !(e = FSMakeFSSpec(plugvol,plugdir,temp,&macoscfss))
&& !(e = FileCopy(macoscfss.vRefNum,macoscfss.parID,macoscfss.name, dstvol,macoscdir,NULL, NULL,NULL,0,false)) ){
PLstrcpy(temp,"\p::MacOS:");
PLstrcat(temp,plugname);
if( !(e = FSMakeFSSpec(plugvol,plugdir,temp,&macosfss))
&& !(e = FileCopy(macosfss.vRefNum,macosfss.parID,macosfss.name, dstvol,macosdir,NULL, NULL,NULL,0,false)) ){
/* now we add PARM resources to each binary, and edit PiPLs */
doresources(&macosfss, dstvol,macosdir,plugname);
doresources(&macoscfss, dstvol,macoscdir,plugname);
}
else HDelete(0,macoscdir,plugname);
}else HDelete(0,contentsdir,"\pInfo.plist");
}
if(e) HDelete(0,contentsdir,"\pMacOSClassic");
}
if(e) HDelete(0,contentsdir,"\pMacOS");
}
if(e) HDelete(0,bundledir,"\pContents");
}
if(e) FSpDelete(&sfr->sfFile);
}
return e;
}
#endif
 
OSErr make_singlefile(StandardFileReply *sfr, short plugvol,long plugdir,StringPtr plugname){
OSErr e;
FSSpec origfss;
 
e = FSpDelete(&sfr->sfFile);
if(e && e != fnfErr){
alertuser("Can't replace the existing plugin. Try a different name or location.","");
return userCanceledErr;
}
 
if( !(e = FileCopy(plugvol,plugdir,plugname, sfr->sfFile.vRefNum,sfr->sfFile.parID,NULL, sfr->sfFile.name,NULL,0,false))
&& !(e = FSMakeFSSpec(plugvol,plugdir,plugname,&origfss)) )
/* now we add PARM resources, and edit PiPL */
e = doresources(&origfss, sfr->sfFile.vRefNum,sfr->sfFile.parID,sfr->sfFile.name);
 
return e;
}
 
OSErr make_standalone(StandardFileReply *sfr){
OSErr e;
short plugvol;
long plugdir;
Str255 plugname;
if(!(e = GetFileLocation(CurResFile(),&plugvol,&plugdir,plugname)))
e = make_singlefile(sfr,plugvol,plugdir,plugname); //make_bundle(sfr,plugvol,plugdir,plugname);
 
if(e && e != userCanceledErr)
alertuser("Could not create standalone plugin.","");
return e;
}
/trunk/make_win.c
0,0 → 1,158
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include "ff.h"
 
#include "file_compat.h"
#include "compat_string.h"
 
//#include "UpdateResource.h"
 
extern HANDLE hDllInstance;
 
Boolean doresources(HMODULE srcmod,char *dstname);
 
void dbglasterror(char *func){
char s[0x100];
strcpy(s,func);
strcat(s," failed: ");
FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,s+strlen(s),0x100,NULL );
DBG(s);
}
 
/*
BOOL CALLBACK enumfunc(HMODULE hModule,LPCTSTR lpszType,LPCTSTR lpszName,WORD wIDLanguage,LONG lParam){
char s[0x100];
sprintf(s,"EnumResourceLanguages callback: module=%#x type=%s name=%s lang=%d",
hModule,lpszType,lpszName,wIDLanguage);
dbg(s);
return TRUE;
}
*/
 
Boolean doresources(HMODULE srcmod,char *dstname){
OSErr e = noErr;
int i;
 
HRSRC datarsrc,piplrsrc,aetersrc;
HANDLE datah,aeteh,hpipl,hupdate;
Ptr newpipl = NULL,newaete = NULL,datap,aetep;
PARM_T *pparm = NULL;
 
PIPropertyList *pipl;
short srcrn,dstrn;
Handle h;
long piplsize,aetesize,titlesize,catsize,*lp,origsize;
Str255 title;
char s[0x100];
Boolean discard = true;
 
// if(!EnumResourceLanguages(srcmod,"PiPL",MAKEINTRESOURCE(16000),enumfunc,0))
// dbglasterror("EnumResourceLanguages");
 
if(hupdate = BeginUpdateResource(dstname,false)){
DBG("BeginUpdateResource OK");
if( (datarsrc = FindResource(srcmod,MAKEINTRESOURCE(16000),RT_RCDATA))
&& (datah = LoadResource(srcmod,datarsrc))
&& (datap = LockResource(datah))
&& (aetersrc = FindResource(srcmod,MAKEINTRESOURCE(16000),"AETE"))
&& (aeteh = LoadResource(srcmod,aetersrc))
&& (aetep = LockResource(aeteh))
){
DBG("loaded DATA, PiPL");
 
PLstrcpy(title,gdata->parm.title);
if(gdata->parm.popDialog)
PLstrcat(title,(StringPtr)"\003...");
 
origsize = SizeofResource(srcmod,datarsrc);
aetesize = SizeofResource(srcmod,aetersrc);
 
if( (newpipl = malloc(origsize+0x300))
&& (newaete = malloc(aetesize+0x100))
&& (pparm = malloc(sizeof(PARM_T))) ){
 
/* add user-specified title and category to new PiPL */
memcpy(newpipl,datap,origsize);
/* note that Windows PiPLs have 2 byte version datum in front
that isn't reflected in struct definition or Mac resource template: */
 
piplsize = fixpipl((PIPropertyList*)(newpipl+2),origsize-2,title) + 2;
//sprintf(s,"origsize=%d titlesize=%d catsize=%d piplsize=%d",origsize,titlesize,catsize,piplsize);dbg(s);
 
/* copy old aete data to new block */
/* Windows 'aete' also has 2 byte version prefix */
memcpy(newaete,aetep,aetesize);
 
aetesize = fixaete((unsigned char*)newaete+2,aetesize-2,gdata->parm.title) + 2;
 
/* set up the PARM resource with saved parameters */
memcpy(pparm,&gdata->parm,sizeof(PARM_T));
 
/* convert to C strings for Windows PARM resource */
myp2cstr(pparm->category);
myp2cstr(pparm->title);
myp2cstr(pparm->copyright);
myp2cstr(pparm->author);
for(i=0;i<4;++i)
myp2cstr(pparm->map[i]);
for(i=0;i<8;++i)
myp2cstr(pparm->ctl[i]);
 
if( UpdateResource(hupdate,"PIPL" /* note: caps!! */,MAKEINTRESOURCE(16000),
MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),newpipl,piplsize)
&& UpdateResource(hupdate,"AETE" /* note: caps!! */,MAKEINTRESOURCE(16000),
MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),newaete,aetesize)
&& UpdateResource(hupdate,"PARM",MAKEINTRESOURCE(PARM_ID),
MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),pparm,sizeof(PARM_T)) )
discard = false;
else
dbglasterror("UpdateResource");
}
 
}else dbglasterror("Find-, Load- or LockResource");
 
if(!EndUpdateResource(hupdate,discard))
dbglasterror("EndUpdateResource");
 
if(pparm) free(pparm);
if(newpipl) free(newpipl);
if(newaete) free(newaete);
}else
dbglasterror("BeginUpdateResource");
return !discard;
}
 
OSErr make_standalone(StandardFileReply *sfr){
Boolean res;
char dstname[0x100],srcname[MAX_PATH+1];
 
//FSpDelete(&sfr->sfFile);
myp2cstrcpy(dstname,sfr->sfFile.name);
res = GetModuleFileName(hDllInstance,srcname,MAX_PATH)
&& CopyFile(srcname,dstname,false)
&& doresources(hDllInstance,dstname);
 
if(!res)
alertuser("Could not create standalone plugin.","");
 
return res ? ioErr : noErr;
}
/trunk/node.c
0,0 → 1,228
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
 
// The following ugly workaround is obviated by Carbon StdCLib headers;
// see: http://developer.apple.com/tools/mpw-tools/relnotes/carbonstdclib.html
// (via http://developer.apple.com/tools/mpw-tools/updates.html )
 
//#ifdef TARGET_API_MAC_CARBON
// /* can't use StdCLib ctype.h, it refers to symbols which aren't in OS X stdclib */
// int isprint(int);
//#else
#include <ctype.h>
//#endif
 
#include "node.h"
#include "y.tab.h"
#include "funcs.h"
 
void freenodes(struct node *p);
 
int varused[0x100],allocs; /* one flag per special variable, indicating if it's used */
value_type var[0x100];
 
struct node *node_list;
 
struct node *newnode(int k){
struct node *p;
int i;
 
if(NEW(p)){
#ifdef DEBUG
// fprintf(stderr,"NEW(%#x)\n",p);
++allocs;
#endif
p->kind = k;
for( i = 0 ; i < MAXCHILDREN ; ++i )
p->child[i] = 0;
/* add this new node to the list of allocated nodes */
p->next = node_list;
node_list = p;
}
return p;
}
 
void freenodes(struct node *p){
/* undo recorded allocations */
if(p){
freenodes(p->next);
free(p);
#ifdef DEBUG
// fprintf(stderr,"FREE(%#x)\n",p);
--allocs;
#endif
}
}
void freeallnodes(){
freenodes(node_list);
node_list = 0;
}
 
/* pretty-print the tree */
 
void dumptree(struct node *root,int level){
int i;
 
if(level>20)
puts("## dumptree: sorry, not going deeper than this.");
else
if(root){
for(i=level;i--;)
putchar('\t');
switch(root->kind){
case TOK_NUM:
#ifdef FP_VALUE
printf("constant: %g\n",root->v.value);
#else
printf("constant: %ld\n",root->v.value);
#endif
break;
case TOK_SPECIALVAR:
printf("special variable: %c\n",root->v.specialvar);
break;
case TOK_VAR:
#ifdef FP_VALUE
printf("variable: %s (%g)\n",root->v.sym->name,*root->v.sym->pvar);
#else
printf("variable: %s (%ld)\n",root->v.sym->name,*root->v.sym->pvar);
#endif
break;
case TOK_FN1:
case TOK_FN2:
case TOK_FN3:
printf("function: %s\n",root->v.sym->name);
break;
default:
printf(isprint(root->kind) ? "operator: %c\n" : "operator: %d\n",root->kind);
break;
}
++level;
for( i = 0 ; i < MAXCHILDREN ; ++i )
dumptree(root->child[i],level);
}
}
 
/* evaluate the expression tree (using current values of variables) */
 
value_type eval(struct node *root){
value_type t;
if(root){
switch(root->kind){
case TOK_NUM: return root->v.value;
case TOK_SPECIALVAR: return var[root->v.specialvar];
case TOK_VAR: return *root->v.sym->pvar;
case TOK_FN1: return root->v.sym->fn(eval(root->child[0]));
case TOK_FN2: return root->v.sym->fn(
eval(root->child[0]),
eval(root->child[1]) );
case TOK_FN3: return root->v.sym->fn(
eval(root->child[0]),
eval(root->child[1]),
eval(root->child[2]) );
case TOK_FN4: return root->v.sym->fn(
eval(root->child[0]),
eval(root->child[1]),
eval(root->child[2]),
eval(root->child[3]) );
case TOK_FN5: return root->v.sym->fn(
eval(root->child[0]),
eval(root->child[1]),
eval(root->child[2]),
eval(root->child[3]),
eval(root->child[4]) );
case TOK_FN10: return root->v.sym->fn(
eval(root->child[0]),
eval(root->child[1]),
eval(root->child[2]),
eval(root->child[3]),
eval(root->child[4]),
eval(root->child[5]),
eval(root->child[6]),
eval(root->child[7]),
eval(root->child[8]),
eval(root->child[9]) );
 
case '+': return eval(root->child[0]) + eval(root->child[1]);
case '-': return eval(root->child[0]) - eval(root->child[1]);
case '*': return eval(root->child[0]) * eval(root->child[1]);
case '/': t = eval(root->child[1]); return t ? eval(root->child[0]) / t : 0;
case '%': t = eval(root->child[1]); return t ? eval(root->child[0]) % t : 0;
case EXP: return pow(eval(root->child[0]),eval(root->child[1]));
 
case EQ: return eval(root->child[0]) == eval(root->child[1]);
case NE: return eval(root->child[0]) != eval(root->child[1]);
case '<': return eval(root->child[0]) < eval(root->child[1]);
case LE: return eval(root->child[0]) <= eval(root->child[1]);
case '>': return eval(root->child[0]) > eval(root->child[1]);
case GE: return eval(root->child[0]) >= eval(root->child[1]);
 
case LOGAND: return eval(root->child[0]) && eval(root->child[1]);
case LOGOR: return eval(root->child[0]) || eval(root->child[1]);
case '!': return !eval(root->child[0]);
 
case '?': return eval(root->child[0]) ? eval(root->child[1]) : eval(root->child[2]);
 
case '&': return eval(root->child[0]) & eval(root->child[1]);
case '^': return eval(root->child[0]) ^ eval(root->child[1]);
case '|': return eval(root->child[0]) | eval(root->child[1]);
case SHLEFT: return eval(root->child[0]) << eval(root->child[1]);
case SHRIGHT: return eval(root->child[0]) >> eval(root->child[1]);
case '~': return ~eval(root->child[0]);
 
case ',': eval(root->child[0]); return eval(root->child[1]);
}
}
return 0.;
}
 
/* free the memory for a tree's nodes */
 
void freetree(struct node *root){
int i;
 
if(root){
for( i = 0 ; i < MAXCHILDREN ; ++i )
freetree(root->child[i]);
free(root);
}
}
 
/* tabulate usage of special variables, or any invocations of src()/rad()/cnv(), in the tree */
 
void checkvars(struct node*p,int f[],int *srcrad /* ,int *mapused */ ){
int i;
if(p){
if(p->kind==TOK_SPECIALVAR)
f[p->v.specialvar] = 1;
else if( (p->kind==TOK_FN3 && (p->v.sym->fn == (pfunc_type)ff_src || p->v.sym->fn == (pfunc_type)ff_rad ) )
|| (p->kind==TOK_FN10 && p->v.sym->fn == (pfunc_type)ff_cnv) )
*srcrad = 1;
// else if(p->kind==TOK_FN2 && (p->v.sym->fn == (pfunc_type)ff_map))
// *mapused = 1;
for( i = 0 ; i < MAXCHILDREN ; ++i )
checkvars(p->child[i],f,srcrad);
}
}
/trunk/node.h
0,0 → 1,52
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#ifndef NODE_H
#define NODE_H
 
#include "symtab.h"
 
enum{ MAXCHILDREN = 10 };
 
struct node{
int kind;
struct node *child[MAXCHILDREN],*next;
/* next is a link, used to track allocated nodes - see global node_list */
union{
value_type value;
struct sym_rec *sym;
int specialvar;
} v;
};
 
#undef YYSTYPE
#define YYSTYPE struct node *
 
extern struct node *node_list;
 
struct node *newnode(int kind);
//void freenodes(struct node *p);
void freeallnodes();
 
void dumptree(struct node *root,int level);
value_type eval(struct node *root);
void freetree(struct node*);
void checkvars(struct node*p,int varflags[],int *srcrad);
 
#endif
/trunk/notused/prah.c
/trunk/notused/read-old.c
0,0 → 1,122
/*
This file is part of icoformat, a Windows Icon (ICO) File Format
plugin for Adobe Photoshop
Copyright (C) 2002-3 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include "ff.h"
 
#include "file_compat.h"
 
enum{
BUFSIZE = (4L<<10),
MAXLINE = 0x200,
};
 
char *readbuf;
long bytesinbuf,bufptr;
int readeof;
 
int bufgetc(FILEREF r);
 
int bufgetc(FILEREF r){
OSErr e;
char s[0x100];
if(bufptr >= bytesinbuf){ /* need to refill buffer */
long count = BUFSIZE;
e = FSRead(r,&count,readbuf);
// sprintf(s,"FSRead: %d ; readeof=%d",e,readeof); syntaxalert(s);
if(readeof || !count){
readeof = true;
return EOF;
}
bytesinbuf = count;
bufptr = 0;
}
return readbuf[bufptr++];
}
 
void readfile(DIALOGREF dp,StandardFileReply *sfr){
FILEREF r;
char linebuf[MAXLINE],s[0x100],curexpr[MAXEXPR+1];
int c,line,lineptr,doneexpr;
 
if(readbuf = malloc(BUFSIZE)){
bytesinbuf = readeof = bufptr = 0;
if(!FSpOpenDF(&sfr->sfFile,fsRdPerm,&r)){
 
curexpr[0] = 0;
doneexpr = 0;
for( line=lineptr=0 ; (c = bufgetc(r)) != EOF ; ){
if(c==CR || c==LF){
/* detected end of line */
if(c == CR){
/* look ahead to see if we need to skip a line feed (DOS EOL convention) */
c = bufgetc(r);
if(c != EOF && c != LF)
--bufptr; /* put back: we can always do this after bufgetc */
}
linebuf[lineptr] = 0;
// sprintf(s,"got line %d = \"%s\"",line,linebuf); syntaxalert(s);
 
/* process complete line */
if(line==0 && strcmp(linebuf,"%RGB-1.0")){
syntaxalert("This doesn't look like a Filter Factory file (first line is not \"%RGB-1.0\").");
break;
}else if(line<=8){
SetDlgControlValue(dp,FIRSTCTLITEM+(line-1),atoi(linebuf));
}else{
if(lineptr)
strcat(curexpr,linebuf);
else{
SetDlgItemText(dp,FIRSTEXPRITEM+doneexpr,curexpr);
curexpr[0] = 0;
if(++doneexpr == 4)
break; /* got everything we want */
}
}
++line;
lineptr = 0;
}else{
 
if(c=='\\'){ /* character escape sequence */
c = bufgetc(r);
if(c=='r')
c = CR;
else{
c = ' ';
syntaxalert("unknown escape sequence in input");
}
}
 
if(lineptr < MAXLINE-1)
linebuf[lineptr++] = c;
}
}
// if(c == EOF) syntaxalert("end of file");
 
FSClose(r);
 
}else syntaxalert("Could not open the file.");
 
free(readbuf);
}else syntaxalert("Could not get memory for input buffer.");
}
/trunk/notused/save-old.c
0,0 → 1,76
/*
This file is part of icoformat, a Windows Icon (ICO) File Format
plugin for Adobe Photoshop
Copyright (C) 2002-3 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include "ff.h"
 
#include "file_compat.h"
#include "sprintf_tiny.h"
 
enum{ CHOPLINES = 63 };
 
OSErr putstr(FILEREF r,char *s);
 
OSErr putstr(FILEREF r,char *s){
long count = strlen(s);
return FSWrite(r,&count,s);
}
 
void savefile(DIALOGREF dp,StandardFileReply *sfr){
FILEREF r;
char s[MAXEXPR+1],outbuf[CHOPLINES*2+2],*q,*p;
int i,j,chunk,n;
 
FSpDelete(&sfr->sfFile);
if(!FSpCreate(&sfr->sfFile,kPhotoshopSignature,'TEXT',sfr->sfScript))
if(!FSpOpenDF(&sfr->sfFile,fsWrPerm,&r)){
/* signature */
putstr(r,"%RGB-1.0\n");
/* slider values */
for(i=0;i<8;++i){
q = int_str(s,GetDlgControlValue(dp,FIRSTCTLITEM+i),10);
*q++ = '\n';
*q = 0;
putstr(r,s);
}
/* expressions */
for(i=0;i<4;++i){
GetDlgItemText(dp,FIRSTEXPRITEM+i,s,MAXEXPR);
for( n = strlen(s),p = s ; n ; n -= chunk ){
chunk = n>CHOPLINES ? CHOPLINES : n;
for( j = chunk,q = outbuf ; j-- ; )
if(*p == CR){
*q++ = '\\';
*q++ = 'r';
++p;
}else *q++ = *p++;
*q++ = '\n';
*q = 0;
putstr(r,outbuf);
}
putstr(r,"\n");
}
FSClose(r);
}else syntaxalert("Could not open the file.");
else syntaxalert("Could not create the file.");
}
/trunk/notused/testmain.c
0,0 → 1,127
/*
This file is part of exprparser, a lex/yacc based expression parser
Copyright (C) 2002-3 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include <stdio.h>
#include <math.h>
 
#include "parser.h"
#include "node.h"
#include "y.tab.h"
 
value_type t=.123,u=.456,v=.789,s[8],pi = M_PI;
 
value_type fxy(value_type x,value_type y){ return x*y; }
value_type fxyz(value_type x,value_type y,value_type z){ return x*y*z; }
 
/* predefined symbols */
extern struct sym_rec predefs[];
value_type cell[0x100],map[4][0x100],slider[8];
#if 0
struct sym_rec predefs[]={
/* variables */
{0,TOK_VAR,"t", 0, &t},
{0,TOK_VAR,"u", 0, &u},
{0,TOK_VAR,"v", 0, &v},
{0,TOK_VAR,"s0", 0, &s[0]},
{0,TOK_VAR,"s1", 0, &s[1]},
{0,TOK_VAR,"s2", 0, &s[2]},
{0,TOK_VAR,"s3", 0, &s[3]},
{0,TOK_VAR,"s4", 0, &s[4]},
{0,TOK_VAR,"s5", 0, &s[5]},
{0,TOK_VAR,"s6", 0, &s[6]},
{0,TOK_VAR,"s7", 0, &s[7]},
/* constants */
{0,TOK_VAR,"PI", 0, &pi},
/* functions */
{0,TOK_FN1,"sin", &sin, 0},
{0,TOK_FN1,"cos", &cos, 0},
{0,TOK_FN1,"tan", &tan, 0},
{0,TOK_FN1,"exp", &exp, 0},
{0,TOK_FN1,"log", &log, 0},
{0,TOK_FN1,"log10", &log10, 0},
{0,TOK_FN1,"sqrt", &sqrt, 0},
{0,TOK_FN2,"fxy", &fxy, 0}, /* example 2-arg function */
{0,TOK_FN3,"fxyz", &fxyz, 0}, /* example 3-arg function */
{0,0,0}
};
#endif
 
 
int test1(int x,int y){
int d = abs(x) + abs(y);
int h;
if (d == 0) return 0;
h = x*x + y*y; //easily overflows!
d = (h/d + d) >> 1; //1st N-R iteration
d = (h/d + d) >> 1; //2nd N-R iteration
return d;
}
int test2(int x,int y){
return isqrt(x*x + y*y);
}
double test3(int x,int y){
return sqrt(x*x + y*y);
}
 
int main(int argc,char *argv[]){
int i,n;
struct node *tree;
char expr[0x100];
extern int tokpos,varused[],allocs;
int srcradused;
extern char *errstr;
 
init_symtab(predefs);
 
while( fgets(expr,0x100,stdin) ){
tokpos = 0;
 
if(tree = parseformula(expr)){
dumptree(tree,0);
#ifdef FP_VALUE
printf("= %g\n",eval(tree));
#else
printf("= %ld\n",eval(tree));
#endif
/* initialise flags for tracking special variable usage */
for( i=0 ; i<0x100 ; i++ )
varused[i] = 0;
checkvars(tree,varused,&srcradused);
for(i=n=0;i<0x100;i++)
if(varused[i]){
if(n) putchar(',');
else printf("special variables used: ");
putchar(i);
++n;
}
if(n) putchar('\n');
}else
printf("%*s\n%s\n",tokpos,"^",errstr);
 
freeallnodes(); // we're done with the parse tree
printf("### leaked allocs = %d\n", allocs);
}
/*
for(i=0;i<40;++i){
int x = (i*123)%1000, y = (i*234)%1000;
printf("c2m(%4d,%4d) FM= %6d FF= %6d FP= %12.3f\n",x,y,test1(x,y),test2(x,y),test3(x,y));
}
*/
return 0;
}
/trunk/notused/ui_edittext.c
0,0 → 1,293
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2002-3 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
/* This is PLATFORM INDEPENDENT user interface code - mainly dialog logic */
 
#include "ff.h"
 
#include "node.h"
#include "parser.h"
#include "funcs.h"
#include "y.tab.h"
#include "choosefile.h"
 
#ifdef macintosh
#define GETSLIDERVALUE GetDlgControlValue
#define SETSLIDERVALUE SetDlgControlValue
#else
#include <commctrl.h>
#define GETSLIDERVALUE(d,i) SendDlgItemMessage(d,i,TBM_GETPOS,0,0)
#define SETSLIDERVALUE(d,i,v) SendDlgItemMessage(d,i,TBM_SETPOS,TRUE,v)
#endif
 
Boolean doupdates = true;
 
void updateglobals(DIALOGREF dp);
struct node *doexpr(DIALOGREF dp,int i);
void updatedialog(DIALOGREF dp);
void slidertextchanged(DIALOGREF dp,int item);
 
void updatedialog(DIALOGREF dp){
int i;
 
doupdates = false;
 
for( i=0 ; i<8 ; ++i ){
SETSLIDERVALUE(dp,FIRSTCTLITEM+i,slider[i]);
SetDlgItemInt(dp,FIRSTCTLTEXTITEM+i,slider[i],false);
}
for( i=0 ; i<4 ; ++i ){
SetDlgItemText(dp,FIRSTEXPRITEM+i,expr[i] ? expr[i] : "oups! expr[i] is nil!");
if(i<nplanes)
doexpr(dp,FIRSTEXPRITEM+i);
}
 
SELECTDLGITEMTEXT(dp,FIRSTEXPRITEM,0,-1);
 
doupdates = true;
}
 
/* copy dialog settings to global variables (sliders, expressions) */
 
void updateglobals(DIALOGREF dp){
int i,j;
char s[MAXEXPR+1];
 
for( i=0 ; i<8 ; ++i )
slider[i] = GETSLIDERVALUE(dp,FIRSTCTLITEM+i);
 
for( i=0 ; i<4 ; ++i ){
/* stash expression strings */
if(GetDlgItemText(dp,FIRSTEXPRITEM+i,s,MAXEXPR)){
if(expr[i])
free(expr[i]);
if(!(expr[i] = my_strdup(s)))
dbg("updateglobals: my_strdup returned zero??");
}else
dbg("updateglobals: GetDlgItemText returned zero??");
}
}
 
struct node *doexpr(DIALOGREF dp,int i){
char s[MAXEXPR+1];
 
//dbg("doexpr");
GetDlgItemText(dp,i,s,MAXEXPR);
i -= FIRSTEXPRITEM;
freetree(tree[i]);
if(tree[i] = parseexpr(s))
HideDialogItem(dp,FIRSTICONITEM+i);
else{
err[i] = errstr;
errstart[i] = tokstart;
errpos[i] = tokpos;
ShowDialogItem(dp,FIRSTICONITEM+i);
}
return tree[i];
}
 
/* traverse expression tree, looking for constant references to sliders */
 
int checksl(struct node*p,int flags[]);
int checksl(struct node*p,int flags[]){
if(p){
int s;
if( (p->kind==TOK_FN1 && p->v.sym->fn == (pfunc_type)ff_ctl)
|| (p->kind==TOK_FN3 && p->v.sym->fn == (pfunc_type)ff_val) ){
if(p->child[0]->kind == TOK_NUM){
s = p->child[0]->v.value;
if(s>=0 && s<=7)
flags[s] = 1;
}else
return true; /* can't determine which slider */
}else if( p->kind==TOK_FN2 && p->v.sym->fn == (pfunc_type)ff_map )
if(p->child[0]->kind == TOK_NUM){
s = p->child[0]->v.value;
if(s>=0 && s<=3)
flags[s*2] = flags[s*2+1] = 1;
}else
return true; /* can't determine which slider */
 
return checksl(p->child[0],flags)
|| checksl(p->child[1],flags)
|| checksl(p->child[2],flags)
|| checksl(p->child[3],flags)
|| checksl(p->child[4],flags);
}else return false;
}
 
void checksliders(DIALOGREF dp);
void checksliders(DIALOGREF dp){
int i,f[8] = {0,0,0,0,0,0,0,0},unknown;
 
for(i=0;i<nplanes;i++)
if(checksl(tree[i],f))
break;
 
unknown = i < nplanes;
for(i=0;i<8;i++)
if(unknown || f[i]){
ENABLECONTROL(dp,FIRSTCTLITEM+i);
ShowDialogItem(dp,FIRSTCTLTEXTITEM+i);
}else{
DISABLECONTROL(dp,FIRSTCTLITEM+i);
HideDialogItem(dp,FIRSTCTLTEXTITEM+i);
}
}
 
void slidermoved(DIALOGREF dp,int i){
int v = GETSLIDERVALUE(dp,i);
i -= FIRSTCTLITEM;
slider[i] = v;
SetDlgItemInt(dp,i+FIRSTCTLTEXTITEM,v,false);
}
 
void slidertextchanged(DIALOGREF dp,int i){
int v = GetDlgItemInt(dp,i,NULL,false);
i -= FIRSTCTLTEXTITEM;
SETSLIDERVALUE(dp,i+FIRSTCTLITEM,v);
slider[i] = v;
}
 
void maindlgupdate(DIALOGREF dp){
int i;
 
checksliders(dp);
 
for( i=0 ; i<nplanes && tree[i] ; i++ )
;
 
if(i==nplanes){
updateglobals(dp);
if(setup(gpb))
recalc_preview(gpb,dp);
 
ENABLECONTROL(dp,IDOK);
}else
DISABLECONTROL(dp,IDOK);
}
 
/* one-time initialisation of dialog box */
 
void maindlginit(DIALOGREF dp){
int i;
/* hide unused expression items */
for(i=nplanes;i<4;++i){
HideDialogItem(dp,FIRSTICONITEM+i);
HideDialogItem(dp,FIRSTEXPRITEM+i);
HideDialogItem(dp,FIRSTLABELITEM+i);
}
// DISABLECONTROL(dp,MAKEITEM);
 
setup_preview(gpb);
updatedialog(dp);
maindlgupdate(dp);
}
 
 
/* process an item hit. return false if the dialog is finished; otherwise return true. */
 
Boolean maindlgitem(DIALOGREF dp,int item){
int i,j;
StandardFileReply sfr;
NavReplyRecord reply;
static char filefilters[]="Filter Factory settings\0*.TXT;*.AFS\0\0";
 
switch(item){
case IDOK:
updateglobals(dp);
case IDCANCEL:
dispose_preview();
return false; // end dialog
case OPENITEM:
if(choosefile("\pChoose filter settings",&sfr,&reply,'TEXT',filefilters)
&& readfile(&sfr)){
updatedialog(dp);
maindlgupdate(dp);
}
break;
case SAVEITEM:
if(putfile("\pSave filter settings","\p",'TEXT',SIG_SIMPLETEXT,&reply,&sfr)){
updateglobals(dp);
if(savefile(&sfr))
completesave(&reply);
}
break;
/*case PREVIEWITEM:
trackpreview();
break;*/
case FIRSTCTLITEM:
case FIRSTCTLITEM+1:
case FIRSTCTLITEM+2:
case FIRSTCTLITEM+3:
case FIRSTCTLITEM+4:
case FIRSTCTLITEM+5:
case FIRSTCTLITEM+6:
case FIRSTCTLITEM+7:
slidermoved(dp,item);
recalc_preview(gpb,dp);
break;
case FIRSTCTLTEXTITEM:
case FIRSTCTLTEXTITEM+1:
case FIRSTCTLTEXTITEM+2:
case FIRSTCTLTEXTITEM+3:
case FIRSTCTLTEXTITEM+4:
case FIRSTCTLTEXTITEM+5:
case FIRSTCTLTEXTITEM+6:
case FIRSTCTLTEXTITEM+7:
slidertextchanged(dp,item);
recalc_preview(gpb,dp);
break;
case FIRSTICONITEM:
case FIRSTICONITEM+1:
case FIRSTICONITEM+2:
case FIRSTICONITEM+3:
item -= FIRSTICONITEM;
alertuser(err[item],"");
SELECTDLGITEMTEXT(dp,FIRSTEXPRITEM+item,errstart[item],errpos[item]);
break;
case FIRSTEXPRITEM:
case FIRSTEXPRITEM+1:
case FIRSTEXPRITEM+2:
case FIRSTEXPRITEM+3:
if( (item-FIRSTEXPRITEM)<nplanes ){
doexpr(dp,item);
maindlgupdate(dp);
}
break;
}
 
return true; // keep going
}
 
Boolean alertuser(char *err,char *more){
char *s = malloc(strlen(err)+strlen(more)+2),*q;
Boolean res;
q = cat(s,err);
if(more){
*q++ = '\n';
q = cat(q,more);
}
*q = 0;
res = simplealert(s);
free(s);
return res;
}
/trunk/parser.y
0,0 → 1,178
%{
 
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include <stdio.h>
#include <string.h>
 
#ifndef false
#define false 0
#define true 1
#endif
 
//#ifdef MAC_ENV
int yyparse(void);
int yylex(void); // hack. correct prototype is buried in lex output
//#endif
 
#include "node.h"
#include "parser.h"
 
void yyerror(char*);
 
#define DPARSE
 
struct node *parsetree;
char *errstr;
 
enum{ PARENSTACK = 100 };
 
int inarglist[PARENSTACK],arglistptr; // keep track of whether a comma is an function argument separator, or operator
 
int pushflag(int x);
 
int pushflag(int x){
if(arglistptr < (PARENSTACK-1))
inarglist[++arglistptr] = x;
else{
yyerror("too many nested parentheses or function calls");
return true;
}
return false;
}
 
#define POP() --arglistptr
 
#define ENTERARGS() if(pushflag(true)) YYERROR
#define ENTERPAREN() if(pushflag(false)) YYERROR
#define LEAVEARGS POP
#define LEAVEPAREN POP
 
%}
 
%token TOK_NUM TOK_EOF TOK_ARGSEP
%token TOK_FN1 TOK_FN2 TOK_FN3 TOK_FN4 TOK_FN5 TOK_FN10
%token TOK_SPECIALVAR TOK_VAR TOK_UNKNOWN TOK_BADCHAR
 
%left ','
%left '?' ':'
%left LOGAND LOGOR
%left '&' '^' '|'
%left EQ NE
%left '<' LE '>' GE
%left SHLEFT SHRIGHT
%left '-' '+'
%left '*' '/' '%'
%right EXP
%left NEG
 
%%
 
input : expr { parsetree = $1; } ;
 
expr : TOK_NUM
| TOK_VAR
| TOK_SPECIALVAR
| TOK_FN1 '(' {ENTERARGS();} expr ')' {LEAVEARGS();}
{ $$ = $1; $$->child[0] = $4; }
| TOK_FN2 '(' {ENTERARGS();} expr TOK_ARGSEP expr ')' {LEAVEARGS();}
{ $$ = $1; $$->child[0] = $4; $$->child[1] = $6; }
| TOK_FN3 '(' {ENTERARGS();} expr TOK_ARGSEP expr TOK_ARGSEP expr ')' {LEAVEARGS();}
{ $$ = $1; $$->child[0] = $4; $$->child[1] = $6; $$->child[2] = $8; }
| TOK_FN4 '(' {ENTERARGS();} expr TOK_ARGSEP expr TOK_ARGSEP expr TOK_ARGSEP expr ')' {LEAVEARGS();}
{ $$ = $1; $$->child[0] = $4; $$->child[1] = $6; $$->child[2] = $8; $$->child[3] = $10; }
| TOK_FN5 '(' {ENTERARGS();} expr TOK_ARGSEP expr TOK_ARGSEP expr TOK_ARGSEP expr TOK_ARGSEP expr ')' {LEAVEARGS();}
{ $$ = $1; $$->child[0] = $4; $$->child[1] = $6; $$->child[2] = $8; $$->child[3] = $10; $$->child[4] = $12; }
| TOK_FN10 '(' {ENTERARGS();}
expr TOK_ARGSEP expr TOK_ARGSEP expr TOK_ARGSEP expr TOK_ARGSEP expr TOK_ARGSEP
expr TOK_ARGSEP expr TOK_ARGSEP expr TOK_ARGSEP expr TOK_ARGSEP expr
')' {LEAVEARGS();}
{ $$ = $1;
$$->child[0] = $4; $$->child[1] = $6; $$->child[2] = $8; $$->child[3] = $10; $$->child[4] = $12;
$$->child[5] = $14; $$->child[6] = $16; $$->child[7] = $18; $$->child[8] = $20; $$->child[9] = $22;
}
| '(' {ENTERPAREN();} expr ')' { LEAVEPAREN(); $$ = $3; }
/* arithmetic operators */
| expr '+' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr '-' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr '*' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr '/' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr '%' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
/* exponentiation (not in FF spec) */
| expr EXP expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
/* relational operators */
| expr EQ expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr NE expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr '<' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr LE expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr '>' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr GE expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
/* logical operators */
| expr LOGAND expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr LOGOR expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| '!' expr %prec NEG { $$ = $1; $$->child[0] = $2; }
/* conditional operator */
| expr '?' expr ':' expr
{ $$ = $2; $$->child[0] = $1; $$->child[1] = $3; $$->child[2] = $5; }
/* bitwise operators */
| expr '&' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr '^' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr '|' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr SHLEFT expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr SHRIGHT expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| '~' expr %prec NEG { $$ = $1; $$->child[0] = $2; }
/* sequence operator */
| expr ',' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
/* unary operators */
| '-' expr %prec NEG { $$ = $1; $$->child[0] = 0; $$->child[1] = $2; }
| '+' expr %prec NEG { $$ = $2; }
/* error tokens */
| TOK_UNKNOWN { yyerror("unknown name"); YYERROR; }
| TOK_BADCHAR { yyerror("disallowed character"); YYERROR; }
;
 
%%
 
struct node *parseexpr(char *s){
void *yy_scan_string(const char*); // hack. correct prototype is buried in lex output
int yyparse(void); // hack. correct prototype appears just after this code, in yacc output
extern int tokpos,tokstart;
tokstart = tokpos = 0;
 
if(s){
arglistptr = 0;
inarglist[arglistptr] = false;
node_list = 0;
yy_scan_string(s);
if(!yyparse())
return parsetree;
else /* ensure we don't leak memory, on an unsuccessful parse */
freeallnodes();
}else
yyerror("null string???");
return 0;
}
 
void yyerror(char *msg){
errstr = msg;
}
/trunk/parserold.y
0,0 → 1,127
%{
 
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include <stdio.h>
#include <c.h> // OS X?
#include "node.h"
 
void yyerror(char*);
 
#define DPARSE
 
struct node *parsetree;
char *errstr;
 
enum{ PARENSTACK = 100 };
 
int inarglist[PARENSTACK],arglistptr; // keep track of whether a comma is an function argument separator, or operator
 
int pushflag(int x){
if(arglistptr < (PARENSTACK-1))
inarglist[++arglistptr] = x;
else{
yyerror("too many nested parentheses or function calls");
return TRUE;
}
return FALSE;
}
 
#define POP() --arglistptr
 
#define ENTERARGS() if(pushflag(TRUE)) YYERROR
#define ENTERPAREN() if(pushflag(FALSE)) YYERROR
#define LEAVEARGS POP
#define LEAVEPAREN POP
 
%}
 
%token TOK_NUM TOK_EOF TOK_ARGSEP TOK_FN1 TOK_FN2 TOK_FN3 TOK_VAR TOK_UNKNOWN TOK_BADCHAR
 
%left ','
%left '?'
%left LOGAND LOGOR
%left BITAND BITXOR BITOR
%left EQ NE
%left '<' LE '>' GE
%left SHLEFT SHRIGHT
%left '-' '+'
%left '*' '/' '%'
%left NEG LOGNOT BITNOT
%right '^'
 
%%
 
input : expr { parsetree = $1; } ;
 
expr : TOK_NUM
| TOK_VAR
| expr ',' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
/*
| expr '?' expr ':' expr
{ $$ = $2; $$->child[0] = $1; $$->child[1] = $3; $$->child[2] = $5; }
*/
| expr LOGAND expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr LOGOR expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr BITAND expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr BITXOR expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr BITOR expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr EQ expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr NE expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr '<' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr LE expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr '>' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr GE expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr SHLEFT expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr SHRIGHT expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr '%' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr '+' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr '-' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr '*' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| expr '/' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| '!' expr %prec NEG { $$ = $1; $$->child[0] = $2; }
| '~' expr %prec NEG { $$ = $1; $$->child[0] = $2; }
| expr '^' expr { $$ = $2; $$->child[0] = $1; $$->child[1] = $3; }
| '-' expr %prec NEG { $$ = $1; $$->child[0] = 0; $$->child[1] = $2; }
| '+' expr %prec NEG { $$ = $2; }
| '(' {ENTERPAREN();} expr ')' { LEAVEPAREN(); $$ = $3; }
| TOK_FN1 '(' {ENTERARGS();} expr ')' {LEAVEARGS();}
{ $$ = $1; $$->child[0] = $4; }
| TOK_FN2 '(' {ENTERARGS();} expr TOK_ARGSEP expr ')' {LEAVEARGS();}
{ $$ = $1; $$->child[0] = $4; $$->child[1] = $6; }
| TOK_FN3 '(' {ENTERARGS();} expr TOK_ARGSEP expr TOK_ARGSEP expr ')' {LEAVEARGS();}
{ $$ = $1; $$->child[0] = $4; $$->child[1] = $6; $$->child[2] = $8; }
| TOK_UNKNOWN { yyerror("unknown identifier"); YYERROR; }
| TOK_BADCHAR { yyerror("bad character"); YYERROR; }
;
 
%%
 
struct node *parseformula(char *s){
arglistptr = 0;
inarglist[arglistptr] = FALSE;
 
yy_scan_string(s);
return yyparse() ? 0 : parsetree;
}
 
void yyerror(char *msg){
errstr = msg;
}
/trunk/pipl_common.r
0,0 → 1,53
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
Kind { Filter },
Version { (latestFilterVersion << 16) | latestFilterSubVersion },
 
SupportedModes {
noBitmap,
doesSupportGrayScale,
noIndexedColor,
doesSupportRGBColor,
noCMYKColor,
noHSLColor,
noHSBColor,
doesSupportMultichannel,
noDuotone,
noLABColor
},
 
FilterCaseInfo {
{
/* filterCaseFlatImageNoSelection */
inStraightData, outStraightData, doNotWriteOutsideSelection, doesNotFilterLayerMasks, worksWithBlankData, doNotCopySourceToDestination,
/* filterCaseFlatImageWithSelection */
inStraightData, outStraightData, doNotWriteOutsideSelection, doesNotFilterLayerMasks, worksWithBlankData, doNotCopySourceToDestination,
/* filterCaseFloatingSelection */
inStraightData, outStraightData, doNotWriteOutsideSelection, doesNotFilterLayerMasks, worksWithBlankData, doNotCopySourceToDestination,
/* filterCaseEditableTransparencyNoSelection */
inStraightData, outStraightData, doNotWriteOutsideSelection, doesNotFilterLayerMasks, worksWithBlankData, doNotCopySourceToDestination,
/* filterCaseEditableTransparencyWithSelection */
inStraightData, outStraightData, doNotWriteOutsideSelection, doesNotFilterLayerMasks, worksWithBlankData, doNotCopySourceToDestination,
/* filterCaseProtectedTransparencyNoSelection */
inStraightData, outStraightData, doNotWriteOutsideSelection, doesNotFilterLayerMasks, worksWithBlankData, doNotCopySourceToDestination,
/* filterCaseProtectedTransparencyWithSelection */
inStraightData, outStraightData, doNotWriteOutsideSelection, doesNotFilterLayerMasks, worksWithBlankData, doNotCopySourceToDestination,
}
},
/trunk/prah-c.htm
0,0 → 1,1366
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250"><title>prah.c</title></head>
 
<body>
 
<p><small>//-------------------------------------------------------------------------------<br>
//<br>
//    File:<br>
//        prah.c<br>
//<br>
<br>
<br>
#include "PIDefines.h"<br>
<br>
#ifdef __PIMWCWMacPPC__<br>
    #include "prah-PPC.ch"<br>
#elif defined(__PIMWCWMac68K__)<br>
    #include "prah-68k.ch"<br>
    // We're using Metrowerks and they have an A4 library, so set that up:<br>
    #include &lt;SetupA4.h&gt;<br>
    #include &lt;A4Stuff.h&gt;<br>
    <br>
    #define UseA4 // We've now defined this for quick checks later.<br>
#else<br>
    #include "prah.h"<br>
#endif<br>
<br>
#include &lt;math.h&gt;<br>
#include &lt;stdio.h&gt;<br>
#include &lt;stdlib.h&gt;<br>
<br>
#include &lt;math.h&gt;<br>
<br>
<br>
// Peker til tabellen<br>
//prcomplex *sincos_tab;<br>
//-------------------------------------------------------------------------------<br>
//    Prototypes.<br>
//-------------------------------------------------------------------------------<br>
<br>
// Everything comes in and out of ENTRYPOINT. It must be first routine in source:<br>
MACPASCAL void ENTRYPOINT (const short selector,<br>
                        FilterRecord
*filterParamBlock,<br>
                        long
*data,<br>
                        short
*result);<br>
void InitGlobals (Ptr globalPtr);
            // Initialize globals.<br>
void ValidateParameters (GPtr globals);        //
Validates (inits) parameters.<br>
<br>
void DoStart (GPtr globals);
                //
Main routine.<br>
void DoParameters (GPtr globals);<br>
void DoPrepare (GPtr globals);<br>
void DoContinue (GPtr globals);<br>
void DoFinish (GPtr globals);<br>
<br>
void StartWithAdvanceState (GPtr globals);<br>
<br>
void prah (GPtr globals, const Boolean doProgress);<br>
<br>
void CalcProxyScaleFactor (Rect proxyScaleRect, Rect *proxyRect, short *scaleFactor);<br>
boolean ParametersTest(GPtr globals);<br>
<br>
void ZoomInRect (GPtr globals, Boolean mask);<br>
void ZoomOutRect (GPtr globals, Boolean mask);<br>
<br>
void StartNoAdvanceState (GPtr globals);<br>
void DoInitialRect (GPtr globals);<br>
Boolean DoNextRect (GPtr globals);<br>
//void Ret(GPtr globals);<br>
<br>
void BuildProxy (GPtr globals);<br>
void scaleRect(Rect *l, short n, short d);<br>
void shrinkRect(Rect *l, short x, short y);<br>
void copyRect(Rect *l, const Rect *r);<br>
                <br>
//-------------------------------------------------------------------------------<br>
//    Globals -- Define global variables for plug-in scope.<br>
//-------------------------------------------------------------------------------<br>
<br>
// Windows global for plug-in (considered a Dynamically Linked Library).<br>
// Leave NULL for Macintosh; many cross-platform library utilities require<br>
// something passed in for hDllInstance:<br>
Handle hDllInstance = NULL;<br>
<br>
//-------------------------------------------------------------------------------<br>
//    ENTRYPOINT Export -- Export our entrypoint<br>
//<br>
//    Have to export our info for PPCGlue stub which needs a descriptor
built<br>
//    to be called from within a 68k code fragment.<br>
//-------------------------------------------------------------------------------<br>
<br>
#ifdef __PIMacPPC__
                        //
For "fat" PowerMac plug-ins<br>
<br>
    enum<br>
    {<br>
        uppEntryProcInfo = kPascalStackBased<br>
            | RESULT_SIZE(0)<br>
            |
STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))<br>
            |
STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(FilterRecord *)))<br>
            |
STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long *)))<br>
            |
STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short *)))<br>
    };<br>
<br>
    #if PRAGMA_EXPORT_SUPPORTED <br>
        #pragma export on<br>
    #endif<br>
<br>
    RoutineDescriptor main_PPC = BUILD_ROUTINE_DESCRIPTOR(uppEntryProcInfo,
main);<br>
<br>
    #if PRAGMA_EXPORT_SUPPORTED<br>
        #pragma export reset<br>
    #endif<br>
<br>
#endif<br>
<br>
//-------------------------------------------------------------------------------<br>
//<br>
//    ENTRYPOINT / main<br>
//<br>
//    All calls to the plug-in module come through this routine.<br>
//    It must be placed first in the resource. To achieve this,<br>
//    most development systems require this be the first routine<br>
//    in the source.<br>
//<br>
//    The entrypoint will be "pascal void" for Macintosh,<br>
//    "void" for Windows.<br>
//<br>
//    Inputs:<br>
//        const short selector
                        Host
provides selector indicating<br>
//
                                                    what
command to do.<br>
//<br>
//        FilterRecord *filterParamBlock
                Host
provides pointer to parameter<br>
//
                                                    block
containing pertinent data<br>
//
                                                    and
callbacks from the host.<br>
//
                                                    See
PIFilter.h.<br>
//<br>
//    Outputs:<br>
//        FilterRecord *filterParamBlock
                Host
provides pointer to parameter<br>
//
                                                    block
containing pertinent data<br>
//
                                                    and
callbacks from the host.<br>
//
                                                    See
PIFilter.h.<br>
//<br>
//        long *data
                                    Use
this to store a handle to our<br>
//
                                                    global
parameters structure, which<br>
//
                                                    is
maintained by the host between<br>
//
                                                    calls
to the plug-in.<br>
//<br>
//        short *result
                                Return
error result or noErr. Some<br>
//
                                                    errors
are handled by the host, some<br>
//
                                                    are
silent, and some you must handle.<br>
//
                                                    See
PIGeneral.h.<br>
//<br>
//-------------------------------------------------------------------------------<br>
<br>
MACPASCAL void ENTRYPOINT (const short selector,<br>
                        FilterRecord
*filterParamBlock,<br>
                        long
*data,<br>
                        short
*result)<br>
{<br>
    //---------------------------------------------------------------------------<br>
    //    (1) Enter code resource if Mac 68k.<br>
    //---------------------------------------------------------------------------<br>
    <br>
    #ifdef UseA4
                //
Are we in 68k Mac MW?<br>
        EnterCodeResource();     //
A4-globals<br>
    #endif<br>
    <br>
    //---------------------------------------------------------------------------<br>
    //    (2) Check for about box request.<br>
    //<br>
    //     The about box is a special request; the
parameter block is not filled<br>
    //     out, none of the callbacks or standard data
is available. Instead,<br>
    //     the parameter block points to an
AboutRecord, which is used<br>
    //     on Windows.<br>
    //---------------------------------------------------------------------------<br>
<br>
    if (selector == filterSelectorAbout)<br>
    {<br>
        DoAbout((AboutRecordPtr)filterParamBlock);<br>
    }<br>
    else<br>
    { // do the rest of the process as normal:<br>
<br>
        //-----------------------------------------------------------------------<br>
        //    (3) Initialize function
and global pointers.<br>
        //<br>
        //     Initialize function
pointer routine dispatcher. We use this to jump<br>
        //     to the different
routines, instead of a long obnoxious switch<br>
        //     statement. All
routines are expected to have the same prototype<br>
        //     of "void
RoutineName (globals)". Returns any errors in gResult.<br>
        //<br>
        //     WARNING: These
better be in the order of the selector AND there<br>
        //     better be a routine
for every selector call.<br>
        //-----------------------------------------------------------------------<br>
        <br>
        static const FProc routineForSelector [] =<br>
        {<br>
            /* filterSelectorAbout
             DoAbout, */<br>
            /*
filterSelectorParameters */    DoParameters,<br>
            /*
filterSelectorPrepare */        DoPrepare,<br>
            /* filterSelectorStart
*/        DoStart,<br>
            /*
filterSelectorContinue */    DoContinue,<br>
            /* filterSelectorFinish
*/        DoFinish<br>
        };<br>
        <br>
        Ptr globalPtr = NULL;
        // Pointer for global structure<br>
        GPtr globals = NULL;
         // actual globals<br>
<br>
        //-----------------------------------------------------------------------<br>
        //    (4) Allocate and initalize
globals.<br>
        //<br>
        //     AllocateGlobals
requires the pointer to result, the pointer to the<br>
        //     parameter block, a
pointer to the handle procs, the size of our local<br>
        //     "Globals"
structure, a pointer to the long *data, a Function<br>
        //     Proc (FProc) to the
InitGlobals routine. It automatically sets-up,<br>
        //     initializes the
globals (if necessary), results result to 0, and<br>
        //     returns with a valid
pointer to the locked globals handle or NULL.<br>
        //-----------------------------------------------------------------------<br>
        <br>
        globalPtr = AllocateGlobals ((uint32)result,<br>
                                    (uint32)filterParamBlock,<br>
                                    filterParamBlock-&gt;handleProcs,<br>
                                    sizeof(Globals),<br>
                                    data,<br>
                                    InitGlobals);<br>
        <br>
        if (globalPtr == NULL)<br>
        { // Something bad happened if we couldn't
allocate our pointer.<br>
        // Fortunately, everything's already been
cleaned up,<br>
        // so all we have to do is report an error.<br>
        <br>
        *result = memFullErr;<br>
        return;<br>
        }<br>
        <br>
        // Get our "globals" variable
assigned as a Global Pointer struct with the<br>
        // data we've returned:<br>
        globals = (GPtr)globalPtr;<br>
<br>
        //-----------------------------------------------------------------------<br>
        //    (5) Dispatch selector.<br>
        //-----------------------------------------------------------------------<br>
<br>
        if (selector &gt; filterSelectorAbout
&amp;&amp; selector &lt;= filterSelectorFinish)<br>
            (routineForSelector[selector-1])(globals);
// dispatch using jump table<br>
        else<br>
            gResult =
filterBadParameters;<br>
            <br>
        //-----------------------------------------------------------------------<br>
        //    (6) Unlock data, and exit
resource.<br>
        //<br>
        //    Result is automatically
returned in *result, which is<br>
        //    pointed to by gResult.<br>
        //-----------------------------------------------------------------------
    <br>
        <br>
        // unlock handle pointing to parameter block
and data so it can move<br>
        // if memory gets shuffled:<br>
        if ((Handle)*data != NULL)<br>
            PIUnlockHandle((Handle)*data);<br>
    <br>
    } // about selector special        <br>
    <br>
    #ifdef UseA4
            // Are we in 68k Mac
MW?<br>
        ExitCodeResource(); // A4-globals<br>
    #endif<br>
    <br>
} // end ENTRYPOINT<br>
<br>
//-------------------------------------------------------------------------------<br>
//<br>
//    InitGlobals<br>
//    <br>
//    Initalize any global values here. Called only once when global<br>
//    space is reserved for the first time.<br>
//<br>
//    Inputs:<br>
//        Ptr globalPtr
        Standard pointer to a global structure.<br>
//<br>
//    Outputs:<br>
//        Initializes any global values with their
defaults.<br>
//<br>
//-------------------------------------------------------------------------------<br>
<br>
<br>
<br>
void InitGlobals (Ptr globalPtr)<br>
{    <br>
    // create "globals" as a our struct global pointer so that
any<br>
    // macros work:<br>
    GPtr globals = (GPtr)globalPtr;<br>
    <br>
    // Initialize global variables:<br>
    ValidateParameters (globals);<br>
    <br>
} // end InitGlobals<br>
<br>
//-------------------------------------------------------------------------------<br>
//<br>
//    ValidateParameters<br>
//<br>
//    Initialize parameters to default values.<br>
//<br>
//    Inputs:<br>
//        GPtr globals
        Pointer to global structure.<br>
//<br>
//-------------------------------------------------------------------------------<br>
<br>
void ValidateParameters (GPtr globals)<br>
{<br>
    if (gStuff-&gt;parameters == NULL)<br>
    { // We haven't created these yet.<br>
<br>
        gStuff-&gt;parameters = PINewHandle ((long)
sizeof (TParameters));<br>
<br>
        if (gStuff-&gt;parameters != NULL)<br>
        { // Got it. Fill out the fields.
    <br>
            <a name="gKanal1=128;">gKanal1=128;</a><br>
            gKanal2=128;<br>
            gKanal3=128;<br>
            gKanal4=128;
        <br>
            <br>
            gUseAdvance = false;<br>
            gZoomFactor=6;
        <br>
            gHostIsPremiereWin =
IsWindows(HostIsPremiere());<br>
        }<br>
        else<br>
        { // Oops. Couldn't allocate memory.<br>
                <br>
            gResult = memFullErr;<br>
            return;<br>
        }<br>
    } // parameters<br>
    <br>
} // end ValidateParameters<br>
<br>
<br>
<br>
<br>
<br>
<br>
/*****************************************************************************/<br>
/* Inicializace vstupních parametrù filtru - neprobìhne pøi volání "Poslední
Filtr"*/<br>
<br>
void DoParameters (GPtr globals)<br>
{    <br>
    ValidateParameters (globals);<br>
    if (gStuff-&gt;parameters != NULL) <br>
    {<br>
    }<br>
    gQueryForParameters = TRUE;<br>
}<br>
<br>
/*****************************************************************************/<br>
/* Výpoèet potøebné pamìti pro funkci filtru */<br>
<br>
<a name="void DoPrepare (GPtr globals){">void DoPrepare (GPtr globals)<br>
{</a><br>
    short     rowWidth = 0;<br>
    short     total = 0;<br>
    long    oneRow = 0;<br>
    long    inOutRow = 0;<br>
    long    inOutAndMask = 0;<br>
    <br>
    gStuff-&gt;bufferSpace = 0;    <br>
    ValidateParameters (globals);<br>
    total = gStuff-&gt;imageSize.v;<br>
    rowWidth = gStuff-&gt;imageSize.h;    <br>
    oneRow = rowWidth * (gStuff-&gt;planes);<br>
    inOutRow = oneRow * 2; <br>
    inOutAndMask = inOutRow + rowWidth; <br>
    while (((inOutAndMask * gRowSkip) &lt;
(gStuff-&gt;maxSpace-gStuff-&gt;bufferSpace)) &amp;&amp; (gRowSkip &lt; total))
gRowSkip++;<br>
    gStuff-&gt;maxSpace = gRowSkip * inOutAndMask + gStuff-&gt;bufferSpace;
<br>
    <br>
}<br>
<br>
/*****************************************************************************/<br>
/* Zobrazení UI a zaèátek filtrace */<br>
<br>
void DoStart (GPtr globals)<br>
{    <br>
<br>
    Rect    imageRect;<br>
        return;<br>
    ValidateParameters (globals); // Pokud nejsou inicializovány parametry
filtru, tak je inicializuje<br>
    // lze použít Advance ?<br>
    gUseAdvance = AdvanceStateAvailable () &amp;&amp;<br>
                DisplayPixelsAvailable
() &amp;&amp;<br>
                !gHostIsPremiereWin;<br>
                                            //
Adobe Premiere for Windows doesn't do AdvanceState right<br>
    ReadScriptParams (globals);
                //
Pøeète pøedchozí nastavení filtru<br>
<br>
    if (gQueryForParameters) <br>
    {<br>
        DoUI (globals);
                        //
Zobrazí UI<br>
        gQueryForParameters = FALSE;<br>
    }<br>
    else<br>
    {<br>
        imageRect.top = 0;//pokud je filtr vyvolán bez
UI - inicializace rozmeru I/O oblastí<br>
        imageRect.left = 0;<br>
        imageRect.bottom = gStuff-&gt;imageSize.v;<br>
        imageRect.right = gStuff-&gt;imageSize.h;<br>
        copyRect(&amp;gStuff-&gt;filterRect,
&amp;imageRect); <br>
        copyRect(&amp;gStuff-&gt;inRect,
&amp;imageRect);        <br>
<br>
        gStuff-&gt;inLoPlane = gStuff-&gt;outLoPlane =
0;<br>
        gStuff-&gt;inHiPlane = gStuff-&gt;outHiPlane =
gStuff-&gt;planes - 1;<br>
        copyRect(&amp;gStuff-&gt;maskRect,
&amp;gStuff-&gt;filterRect);<br>
        gStuff-&gt;inputRate = long2fixed(1L);<br>
        gStuff-&gt;maskRate = gStuff-&gt;inputRate; <br>
        gStuff-&gt;inputPadding =
plugInWantsEdgeReplication;<br>
        gStuff-&gt;outputPadding =
gStuff-&gt;inputPadding;<br>
        gStuff-&gt;maskPadding =
gStuff-&gt;inputPadding;<br>
    <br>
        gResult = AdvanceState ();<br>
        DoZoomRect (globals,false);<br>
//        Ret(globals);<br>
        <br>
    }<br>
    if (gResult != noErr) return;<br>
    <br>
    if (gUseAdvance) StartWithAdvanceState(globals);<br>
}<br>
    <br>
/*****************************************************************************/<br>
/* Pokraèování filtrace - pokud se filtruje po èástech - not Advance */<br>
<br>
void DoContinue (GPtr globals)<br>
{<br>
    if (TestAbort () || gResult != noErr)<br>
    {<br>
        gResult = userCanceledErr;<br>
        return;<br>
    }<br>
    if (!gUseAdvance)<br>
    {<br>
        Prah(globals,true); <br>
        if (!DoNextRect (globals))<br>
            {<br>
                PISetRect
(&amp;gStuff-&gt;inRect, 0, 0, 0, 0);<br>
                PISetRect
(&amp;gStuff-&gt;outRect, 0, 0, 0, 0);<br>
                PISetRect
(&amp;gStuff-&gt;maskRect, 0, 0, 0, 0);<br>
            }<br>
    }<br>
    else<br>
    { <br>
        PISetRect (&amp;gStuff-&gt;inRect, 0, 0, 0, 0);<br>
        PISetRect (&amp;gStuff-&gt;outRect, 0, 0, 0,
0);<br>
        PISetRect (&amp;gStuff-&gt;maskRect, 0, 0, 0,
0);<br>
    } <br>
}<br>
<br>
/*****************************************************************************/<br>
/* Úklid po filtru a zápis nastavení parametrù filtru */<br>
<br>
void DoFinish (GPtr globals)<br>
{<br>
    WriteScriptParams (globals); <br>
}<br>
<br>
/*****************************************************************************/<br>
/* Filtrace celeho obrazu najednou */<br>
<br>
void StartWithAdvanceState (GPtr globals)<br>
{<br>
    int16 row;<br>
    int32 total;<br>
<br>
    total = gStuff-&gt;filterRect.bottom - gStuff-&gt;filterRect.top;<br>
    gStuff-&gt;inLoPlane = gStuff-&gt;outLoPlane = 0;<br>
    gStuff-&gt;inHiPlane = gStuff-&gt;outHiPlane = gStuff-&gt;planes - 1;<br>
    <br>
    /* Pokud chceme použít kanály*/<br>
    #if useAlpha<br>
    if (!gStuff-&gt;isFloating)<br>
    {<br>
        gStuff-&gt;wantsAbsolute = true;<br>
        <br>
        if (gStuff-&gt;inLayerPlanes !=0 &amp;&amp;
gStuff-&gt;inTransparencyMask != 0)<br>
            gStuff-&gt;inHiPlane =
gStuff-&gt;absLayerPlanes - 1 +<br>
                                gStuff-&gt;absTransparencyMask
+<br>
                                gStuff-&gt;absLayerMasks
+<br>
                                gStuff-&gt;absInvertedLayerMasks
+<br>
                                gStuff-&gt;absNonLayerPlanes;<br>
        <br>
        if (gStuff-&gt;outLayerPlanes !=0 &amp;&amp;
gStuff-&gt;outTransparencyMask !=0)<br>
            gStuff-&gt;outHiPlane =
gStuff-&gt;outLayerPlanes - 1 +<br>
                                gStuff-&gt;outTransparencyMask
+<br>
                                gStuff-&gt;outLayerMasks
+<br>
                                gStuff-&gt;outInvertedLayerMasks
+<br>
                                gStuff-&gt;outNonLayerPlanes;<br>
    }<br>
    #endif<br>
    gStuff-&gt;inRect.left = gStuff-&gt;outRect.left =
gStuff-&gt;maskRect.left = gStuff-&gt;filterRect.left = 0;<br>
    gStuff-&gt;inRect.right = gStuff-&gt;outRect.right =
gStuff-&gt;maskRect.right = gStuff-&gt;filterRect.right = gStuff-&gt;imageSize.h;<br>
    gStuff-&gt;inputRate = long2fixed (1L);<br>
    gStuff-&gt;maskRate = long2fixed (1L);<br>
    for (row = 0; row &lt; gStuff-&gt;imageSize.v; row += gRowSkip)<br>
    {<br>
        if (TestAbort () || gResult != noErr)<br>
        {<br>
            gResult =
userCanceledErr;<br>
            goto done;<br>
        }<br>
        gStuff-&gt;inRect.top = gStuff-&gt;outRect.top
= gStuff-&gt;maskRect.top = gStuff-&gt;filterRect.top=row;<br>
        gStuff-&gt;inRect.bottom =
gStuff-&gt;outRect.bottom = gStuff-&gt;maskRect.bottom = gStuff-&gt;filterRect.bottom=row
+ gRowSkip;<br>
        gResult = AdvanceState ();    <br>
        if (gResult != noErr)<br>
            goto done;
        <br>
        Prah (globals, true);<br>
        }<br>
done:<br>
    PISetRect (&amp;gStuff-&gt;inRect, 0, 0, 0, 0);<br>
    PISetRect (&amp;gStuff-&gt;outRect, 0, 0, 0, 0);<br>
    PISetRect (&amp;gStuff-&gt;maskRect, 0, 0, 0, 0);<br>
}<br>
<br>
<br>
/******************************************************/<br>
/* provedení filtrace
            */<br>
<br>
<br>
<br>
void Prah(GPtr globals, Boolean doProgress )<br>
{<br>
    short i, j;<br>
    int plane;<br>
    int prah[4];<br>
<br>
    const short total = gStuff-&gt;filterRect.bottom -
gStuff-&gt;filterRect.top;    //celkový pocet výstupního øádkù<br>
    const short outColumns= gStuff-&gt;outRect.right -
gStuff-&gt;outRect.left; //pocet sloupcù výstupního obrázku<br>
    const short outRows = gStuff-&gt;outRect.bottom -
gStuff-&gt;outRect.top;    // pocet øádkù výstupního obrázku<br>
    const short outPlanes = gStuff-&gt;outHiPlane - gStuff-&gt;outLoPlane +
1; //pocet kanálù výstupního obrázku<br>
    const short inColumns = gStuff-&gt;imageSize.h;
                            //pocet
sloupcù vstupniho obrázku<br>
    const short inRows = gStuff-&gt;imageSize.v;
                        //pocet
øádkù vstupniho obrázku<br>
    const short inPlanes = gStuff-&gt;inHiPlane - gStuff-&gt;inLoPlane + 1;
        //pocet kanálù vstupniho obrázku<br>
    <br>
unsigned8 *srcPtr = (unsigned8 *) gStuff-&gt;inData;    //ukazatel na
vstupní obrázek<br>
    unsigned8 *dstPtr = (unsigned8 *) gStuff-&gt;outData;
    //ukazatel na výstupní obrázek<br>
    unsigned8 *mskPtr = (unsigned8 *) gStuff-&gt;maskData;
    //ukazatel na masku vstupního obrázku<br>
    Boolean maskPixel = false;<br>
<br>
    <br>
<a name="prah[0]=gKanal1;//nastavení jednotlivých prahù">
   prah[0]=gKanal1;//nastavení jednotlivých prahù</a><br>
    prah[1]=gKanal2;<br>
    prah[2]=gKanal3;<br>
    prah[3]=gKanal4;<br>
    for (i=0; i &lt; inRows; i++)<br>
    {<br>
        srcPtr = (unsigned8 *) gStuff-&gt;inData + (i *
inColumns * inPlanes);//nastav na první pixel v øádku i<br>
        dstPtr = (unsigned8 *) gStuff-&gt;outData + (i
* inColumns * inPlanes);//nastav na první pixel v øádku i<br>
        mskPtr = (unsigned8 *) gStuff-&gt;maskData + (i
* inColumns);    //nastav na první pixel v øádku    i<br>
            <br>
        if (doProgress) UpdateProgress ((long)
(gStuff-&gt;outRect.top + i) - gStuff-&gt;filterRect.top,(long) total);<br>
        for(j=0;j&lt;inColumns;j++)<br>
        {<br>
            <br>
            maskPixel = (!mskPtr
[0]); //naètení masky<br>
            if (!maskPixel)
    //pokud není maska uprav<br>
            {<br>
                for
(plane = 0; plane &lt; inPlanes; plane++) <br>
                {<br>
                if(srcPtr[plane]&gt;prah[plane])
srcPtr[plane]=255;<br>
                else
srcPtr[plane]=0; <br>
                }<br>
            }<br>
            else //pokud je tak
neupravuj<br>
            {<br>
                for
(plane = 0; plane &lt; inPlanes; plane++) dstPtr [plane] = srcPtr [plane];
        <br>
            }
                    <br>
            srcPtr +=
inPlanes;//nastav na další pixel v øádku i<br>
            dstPtr +=
inPlanes;//nastav na další pixel v øádku i<br>
            mskPtr++; //nastav na
další pixel v øádku i<br>
        }
            <br>
    }<br>
}<br>
<br>
<br>
<br>
<br>
<br>
<br>
/*****************************************************************************/<br>
/* Výpoèet a úpravy rozmìrù obrázku pro potøeby UI */<br>
<br>
void CalcGlobalProxies (GPtr globals)<br>
{<br>
    Rect    imageRect,imageRect1;<br>
    int16    selCenterH, selCenterV;<br>
    int16    selLength, selWidth;<br>
    int16    length, width;<br>
    int16    length2, width2;<br>
    length = (gOrigProxyRect.bottom - gOrigProxyRect.top); // zobrazovaná
výška<br>
    length2 = length / 2;<br>
    width = (gOrigProxyRect.right - gOrigProxyRect.left); // zobrazovaná
šíøka<br>
    width2 = width / 2;<br>
    selLength = gStuff-&gt;imageSize.v; // Vybraná výška<br>
    selWidth = gStuff-&gt;imageSize.h; // Vybraná šíøka<br>
    //Vycentrování preview<br>
    selCenterV = (selLength / 2);<br>
    selCenterH = (selWidth / 2);<br>
    imageRect.top = selCenterV - (length2); <br>
    imageRect.left = selCenterH - (width2);<br>
    imageRect.bottom = imageRect.top+length;<br>
    imageRect.right = imageRect.left+width;<br>
    imageRect1.top = 0;<br>
    imageRect1.left = 0;<br>
    imageRect1.bottom = gStuff-&gt;imageSize.v;<br>
    imageRect1.right = gStuff-&gt;imageSize.h;<br>
copyRect(&amp;gProxyScaleRect, &amp;imageRect);<br>
    copyRect(&amp;gStuff-&gt;inRect, &amp;imageRect1);<br>
    copyRect(&amp;gStuff-&gt;outRect, &amp;imageRect);<br>
}<br>
<br>
void SetupFilterRecordForProxy (GPtr globals, Rect proxyScaleRect, short scaleFactor)<br>
{<br>
    #ifdef __PIMWCW__<br>
        #pragma unused (proxyScaleRect)<br>
        #pragma unused (scaleFactor)<br>
    #endif<br>
    gStuff-&gt;inLoPlane = gStuff-&gt;outLoPlane = 0;<br>
    gStuff-&gt;inHiPlane = gStuff-&gt;outHiPlane = gStuff-&gt;planes - 1;<br>
    copyRect(&amp;gStuff-&gt;maskRect, &amp;gStuff-&gt;filterRect);<br>
    gStuff-&gt;inputRate = long2fixed(1L);<br>
    gStuff-&gt;maskRate = gStuff-&gt;inputRate; <br>
    gStuff-&gt;inputPadding = plugInWantsEdgeReplication;<br>
    gStuff-&gt;outputPadding = gStuff-&gt;inputPadding;<br>
    gStuff-&gt;maskPadding = gStuff-&gt;inputPadding;<br>
    gResult = AdvanceState ();<br>
}<br>
    <br>
void CalcProxyScaleFactor (Rect proxyScaleRect, Rect *proxyRect, short *scaleFactor)<br>
{<br>
    short filterHeight;<br>
    short filterWidth;<br>
    short itemHeight;<br>
    short itemWidth;<br>
<br>
    Point fraction;<br>
<br>
    shrinkRect (proxyRect, kGutter, kGutter);
         // for the border<br>
    filterHeight = (proxyScaleRect.bottom - proxyScaleRect.top);<br>
    filterWidth = (proxyScaleRect.right - proxyScaleRect.left);<br>
    itemHeight = (proxyRect-&gt;bottom - proxyRect-&gt;top);<br>
    itemWidth = (proxyRect-&gt;right - proxyRect-&gt;left);<br>
    if (itemHeight &gt; filterHeight) itemHeight = filterHeight;<br>
    if (itemWidth &gt; filterWidth) itemWidth = filterWidth;<br>
    fraction.h = ((filterWidth + itemWidth) / itemWidth)-1;<br>
    fraction.v = ((filterHeight + itemHeight) / itemHeight)-1;<br>
    if (fraction.h &gt; fraction.v) *scaleFactor = fraction.h;<br>
    else *scaleFactor = fraction.v;<br>
    copyRect (proxyRect, &amp;proxyScaleRect);    <br>
    scaleRect (proxyRect, 1, *scaleFactor);<br>
}<br>
<br>
<br>
/****************************************************************************/<br>
/* Hlavní rutina Zoomování preview */<br>
void DoZoomRect (GPtr globals,Boolean mask)<br>
{    <br>
<br>
    if (gResult == userCanceledErr) return;<br>
        <br>
    if (gRepFactor &lt;= 1 &amp;&amp; gRepFactor &gt; 0)<br>
        ZoomOutRect (globals, mask);<br>
    else if (gRepFactor &gt; 1)<br>
        ZoomInRect (globals, mask);
        <br>
}<br>
<br>
/*****************************************************************************/<br>
/* Zoom in. Zvìtšení gRepFactor &gt;= 1 */<br>
/*****************************************************************************/<br>
<br>
void ZoomInRect (GPtr globals, Boolean mask)<br>
{<br>
    short offsetOutColumns, offsetOutRows;<br>
    short centerInColumns, centerInRows;<br>
    short offsetInColumns, offsetInRows;<br>
    short difColumns, difRows;    <br>
    short proxyCenterCol, proxyCenterRow;<br>
    short proxyOffsetCol, proxyOffsetRow;<br>
    int srcX,srcY ;<br>
    int i,j,ii,jj,max,polo,plane;<br>
    unsigned8 *dstPtr;<br>
    unsigned8 *mskPtr;<br>
    unsigned8 *mskPtr2;<br>
    const short outColumns= gStuff-&gt;outRect.right -
gStuff-&gt;outRect.left;<br>
    const short outRows = gStuff-&gt;outRect.bottom -
gStuff-&gt;outRect.top;    <br>
    const short outPlanes = gStuff-&gt;outHiPlane - gStuff-&gt;outLoPlane +
1;<br>
    const short inColumns = gStuff-&gt;imageSize.h;<br>
    const short inRows = gStuff-&gt;imageSize.v;<br>
    const short inPlanes =gStuff-&gt;outHiPlane - gStuff-&gt;outLoPlane +
1;<br>
    double pomoc;    <br>
    Boolean maskPixel = false;<br>
    <br>
    offsetOutColumns = outColumns / 2;<br>
    offsetOutRows = outRows / 2;<br>
    centerInColumns = inColumns / 2;<br>
    centerInRows = inRows / 2;<br>
    offsetInColumns = (short)(inColumns * gRepFactor / 2);<br>
    offsetInRows = (short)(inRows * gRepFactor / 2);<br>
    difColumns        = offsetInColumns
- offsetOutColumns;<br>
    difRows = offsetInRows - offsetOutRows;<br>
difColumns /= (short)gRepFactor;<br>
    difRows /=(short)gRepFactor;<br>
    gPozice.x=gSPozice.x+(short)gDif.x;<br>
    if (gPozice.x&gt; difColumns) gPozice.x=difColumns;<br>
    if (gPozice.x&lt;-difColumns) gPozice.x=-difColumns;<br>
    gPozice.y=gSPozice.y+(short)gDif.y;<br>
    if (gPozice.y&gt; difRows) gPozice.y=difRows;<br>
    if (gPozice.y&lt;-difRows) gPozice.y=-difRows;<br>
    proxyCenterCol = gOrigProxyRect.left + ((gOrigProxyRect.right -
gOrigProxyRect.left) / 4);<br>
    proxyCenterRow = gOrigProxyRect.top + ((gOrigProxyRect.bottom -
gOrigProxyRect.top) / 4);<br>
    proxyOffsetCol = outColumns / 2;<br>
    proxyOffsetRow = outRows / 2;<br>
<br>
    <br>
    max=(int)sqrt((inRows/2)*(inRows/2)+(inColumns/2)*(inColumns/2));<br>
    for (i = 0; i &lt; outRows; i ++)<br>
    {<br>
        i--;<br>
        for(ii = 1;ii&lt;=gRepFactor;ii++)<br>
        {<br>
            i++;<br>
            if(i==outRows) break;<br>
            mskPtr2= (unsigned8
*)gSHOWmask + (i * outColumns);<br>
            dstPtr = (unsigned8
*)gStuff-&gt;outData + (i * outColumns * outPlanes);
        <br>
            mskPtr = (unsigned8
*)gFFTmask + (- gPozice.x + difColumns + (((int)(i/gRepFactor) + difRows - gPozice.y ) *
inColumns));<br>
            srcX= - gPozice.x +
difColumns + (((int)(i/gRepFactor) + difRows - gPozice.y ) * inColumns);<br>
            srcY=srcX-((short)(srcX/inColumns))*inColumns;
        <br>
            for (j = 0; j &lt;
outColumns; j ++)<br>
            {<br>
                j--;<br>
                for
(jj = 1;jj&lt;=gRepFactor;jj++)<br>
                {<br>
                    if
(gIMaska) mskPtr2[0] = 255-mskPtr[0];<br>
                    else
mskPtr2[0]=255;<br>
                <br>
                    if(!mask)<br>
                    {<br>
                        if (mskPtr[0]) for(plane=0;plane&lt;inPlanes;plane++)
dstPtr[plane]=((gInten*gFFTdata[((srcX/inColumns)*inColumns+srcY)*inPlanes+plane]/100)+(100-gInten)*gFFTdata2[((srcX/inColumns)*inColumns+srcY)*inPlanes+plane]/100);
                                            <br>
                        else
        for(plane=0;plane&lt;inPlanes;plane++)
dstPtr[plane]=gFFTdata[((srcX/inColumns)*inColumns+srcY)*inPlanes+plane];<br>
                    }<br>
                    mskPtr2++;<br>
                    dstPtr
+=outPlanes;<br>
                    j++;<br>
                    if
(j==outColumns) break;<br>
                }<br>
                srcY
++;<br>
                mskPtr++;<br>
            }<br>
        }<br>
    }<br>
    <br>
    gProxyRect.left = proxyCenterCol - proxyOffsetCol &gt;
gOrigProxyRect.left<br>
                    ?
proxyCenterCol - proxyOffsetCol : gOrigProxyRect.left;<br>
    gProxyRect.right = proxyCenterCol + proxyOffsetCol &lt;
gOrigProxyRect.right<br>
                    ?
proxyCenterCol + proxyOffsetCol : gOrigProxyRect.right;<br>
    gProxyRect.top = proxyCenterRow - proxyOffsetRow &gt;
gOrigProxyRect.top<br>
                    ?
proxyCenterRow - proxyOffsetRow : gOrigProxyRect.top;<br>
    gProxyRect.bottom = proxyCenterRow + proxyOffsetRow &lt;
gOrigProxyRect.bottom<br>
                    ?
proxyCenterRow + proxyOffsetRow : gOrigProxyRect.bottom;<br>
}<br>
    <br>
/*****************************************************************************/<br>
/* Zoom Out. Zmenšení gRepFactor between 0...1. */<br>
<br>
void ZoomOutRect (GPtr globals,    Boolean mask)<br>
{<br>
    const unsigned8 kUIBackcolor = 191;<br>
    short offsetOutColumns, offsetOutRows;<br>
    short startOutColumns, startOutRows, endOutColumns, endOutRows;<br>
    const short outColumns= gStuff-&gt;outRect.right -
gStuff-&gt;outRect.left;<br>
    const short outRows = gStuff-&gt;outRect.bottom -
gStuff-&gt;outRect.top;    <br>
    const short outPlanes = gStuff-&gt;outHiPlane - gStuff-&gt;outLoPlane +
1;<br>
    const short inColumns = gStuff-&gt;imageSize.h;<br>
    const short inRows = gStuff-&gt;imageSize.v;<br>
    const short inPlanes = gStuff-&gt;inHiPlane - gStuff-&gt;inLoPlane + 1;<br>
    short centerInColumns, centerInRows;<br>
    short offsetInColumns, offsetInRows;<br>
    short difColumns, difRows;<br>
short offset = 0;<br>
    short proxyCenterCol, proxyCenterRow;<br>
    short proxyOffsetCol, proxyOffsetRow;<br>
    float HFactor = 0;<br>
float VFactor = 0;<br>
    double pomoc; <br>
    unsigned8 *dstPtr;<br>
    unsigned8 *mskPtr;<br>
    unsigned8 *mskPtr2;<br>
    int i,j,srcX,srcY,max,polo,plane;<br>
    Boolean maskPixel = false;<br>
    <br>
    offsetOutColumns = outColumns / 2;<br>
    offsetOutRows = outRows / 2;<br>
    startOutColumns = 0;<br>
    startOutRows = 0;<br>
    endOutColumns = outColumns-1;<br>
    endOutRows = outRows-1;<br>
    centerInColumns = inColumns / 2;<br>
    centerInRows = inRows / 2;<br>
    offsetInColumns = (short)(inColumns * gRepFactor / 2);<br>
    offsetInRows = (short)(inRows * gRepFactor / 2);<br>
    difColumns        = offsetInColumns
- offsetOutColumns;<br>
    difRows = offsetInRows - offsetOutRows;<br>
<br>
    <br>
<br>
    if (difColumns&lt;0) <br>
    {<br>
        difColumns++;<br>
        startOutColumns-=difColumns;<br>
        difColumns--;<br>
        endOutColumns+=difColumns;<br>
        difColumns=0;<br>
    }<br>
    if (difRows&lt;0) <br>
    {<br>
        difRows++;<br>
        startOutRows-=difRows;<br>
        difRows--;<br>
        endOutRows+=difRows;<br>
        difRows=0;<br>
    }<br>
    gPozice.x=gSPozice.x+(short)gDif.x;<br>
    if (gPozice.x&gt; difColumns) gPozice.x=difColumns;<br>
    if (gPozice.x&lt;-difColumns) gPozice.x=-difColumns;<br>
    gPozice.y=gSPozice.y+(short)gDif.y;<br>
    if (gPozice.y&gt; difRows) gPozice.y=difRows;<br>
    if (gPozice.y&lt;-difRows) gPozice.y=-difRows;<br>
    proxyCenterCol = gOrigProxyRect.left + ((gOrigProxyRect.right -
gOrigProxyRect.left) / 2);<br>
    proxyCenterRow = gOrigProxyRect.top + ((gOrigProxyRect.bottom -
gOrigProxyRect.top) / 2);<br>
    proxyOffsetCol = (short)((outColumns * gRepFactor) / 2);<br>
    proxyOffsetRow = (short)((outRows * gRepFactor) / 2);<br>
    if (!mask)<br>
    {<br>
        for (i = 0;i &lt; startOutRows;i ++)<br>
        {<br>
            dstPtr = (unsigned8 *)
gStuff-&gt;outData + (i * outColumns* outPlanes);<br>
            mskPtr2= (unsigned8 *)
gSHOWmask + (i * outColumns);<br>
            for (j = 0; j &lt;
outColumns; j ++)<br>
        {<br>
            for(plane=0;plane&lt;inPlanes;plane++)
dstPtr [plane] = kUIBackcolor;<br>
            mskPtr2[0]=255;<br>
            dstPtr +=outPlanes;<br>
            mskPtr2++;<br>
            }<br>
        }<br>
    }<br>
    max=(int)sqrt((inRows/2)*(inRows/2)+(inColumns/2)*(inColumns/2));<br>
    for (i = startOutRows;i &lt; endOutRows; i ++)<br>
    {<br>
        srcX =
(short)((-gPozice.x+difColumns)/gRepFactor) + ((i - startOutRows +
(short)((-gPozice.y+difRows)/gRepFactor) + offset) * inColumns );<br>
        dstPtr = (unsigned8 *) gStuff-&gt;outData + (i
* outColumns* outPlanes);<br>
    mskPtr2= (unsigned8 *) gSHOWmask + (i * outColumns);<br>
        mskPtr = (unsigned8 *) gFFTmask +
(short)((-gPozice.x+difColumns)/gRepFactor) + ((i - startOutRows + (short)((-gPozice.y +
difRows)/gRepFactor) + offset) * inColumns);<br>
        HFactor=0;<br>
        for (j = 0; j &lt; startOutColumns;j ++)<br>
        {<br>
            for(plane=0;plane&lt;inPlanes;plane++)
dstPtr [plane] = kUIBackcolor;<br>
            mskPtr2[0]=255;<br>
            dstPtr += outPlanes;<br>
            mskPtr2++;<br>
        }<br>
        srcY=srcX-((short)(srcX/inColumns))*inColumns;
        <br>
        for (j = startOutColumns;j &lt; endOutColumns;
j ++)<br>
        {
            <br>
            if (gIMaska) mskPtr2[0]
= 255-mskPtr[0];<br>
            else mskPtr2[0]=255;<br>
        <br>
            if(!mask)<br>
            {<br>
                if(mskPtr[0]) for(plane=0;plane&lt;inPlanes;plane++) dstPtr[plane]=((gInten*gFFTdata[((srcX/inColumns)*inColumns+srcY)*inPlanes+plane]/100)+(100-gInten)*gFFTdata2[((srcX/inColumns)*inColumns+srcY)*inPlanes+plane]/100);
                                            <br>
                else
        for(plane=0;plane&lt;inPlanes;plane++)
dstPtr[plane]=gFFTdata[((srcX/inColumns)*inColumns+srcY)*inPlanes+plane];<br>
                <br>
            }<br>
            dstPtr +=outPlanes;<br>
            srcY ++;<br>
            mskPtr++;<br>
            mskPtr2++;<br>
            HFactor +=
((1/gRepFactor)-1);<br>
            while(HFactor&gt;=0.5)<br>
{<br>
                HFactor-=1;<br>
                srcY
++;<br>
                mskPtr++;<br>
}<br>
        }<br>
        if(!mask)<br>
        {<br>
            for (j = endOutColumns;
j &lt; outColumns; j ++)<br>
            {<br>
                for(plane=0;plane&lt;inPlanes;plane++)
dstPtr [plane] = kUIBackcolor;<br>
                mskPtr2[0]=255;<br>
            <br>
                dstPtr
+= outPlanes;<br>
                mskPtr2++;<br>
            }<br>
        }<br>
        VFactor += ((1/gRepFactor)-1);<br>
        while(VFactor&gt;=0.5)<br>
        {<br>
            VFactor-=1;<br>
            offset+=1;<br>
        }<br>
    }<br>
    if(!mask)<br>
    {<br>
        for (i = endOutRows; i &lt; outRows; i ++)<br>
        {<br>
            dstPtr = (unsigned8 *)
gStuff-&gt;outData + (i * outColumns* outPlanes);<br>
            mskPtr2= (unsigned8 *)
gSHOWmask + (i * outColumns);<br>
<br>
            for (j = 0; j &lt;
outColumns; j ++)<br>
            {<br>
                for(plane=0;plane&lt;inPlanes;plane++)
dstPtr [plane] = kUIBackcolor;    <br>
                mskPtr2[0]=255;<br>
                dstPtr
+= outPlanes;<br>
                mskPtr2++;<br>
            }<br>
        }<br>
    }<br>
<br>
<br>
    gProxyRect.left = proxyCenterCol - proxyOffsetCol &gt;
gOrigProxyRect.left<br>
                    ?
proxyCenterCol - proxyOffsetCol : gOrigProxyRect.left;<br>
    gProxyRect.right = proxyCenterCol + proxyOffsetCol &lt;
gOrigProxyRect.right<br>
                    ?
proxyCenterCol + proxyOffsetCol : gOrigProxyRect.right;<br>
    gProxyRect.top = proxyCenterRow - proxyOffsetRow &gt;
gOrigProxyRect.top<br>
                    ?
proxyCenterRow - proxyOffsetRow : gOrigProxyRect.top;<br>
    gProxyRect.bottom = proxyCenterRow + proxyOffsetRow &lt;
gOrigProxyRect.bottom;<br>
}<br>
    <br>
/*****************************************************************************/<br>
/* Zooms in by one factor (parts of 1.0 until 1.0, then 1.0, 2.0, etc. */<br>
<br>
void ZoomIn (short *zoom)<br>
{<br>
    if (*zoom &gt;= kNumZooms)<br>
        *zoom += kNumZooms;<br>
    else (*zoom)++;<br>
}<br>
<br>
void ZoomOut (short *zoom)<br>
{<br>
    if (*zoom &gt;= (kNumZooms*2))<br>
        *zoom -= kNumZooms;<br>
    else (*zoom)--;<br>
}<br>
<br>
/*****************************************************************************/<br>
/* Takes an enumeration and returns corresponding zoom size */<br>
<br>
short GetZoomFactor (GPtr globals)<br>
{<br>
    short    sub = 0;<br>
    short    returnValue = noErr;<br>
    <br>
    /* check for zoomFactor bounds */<br>
    <br>
    if (gZoomFactor &lt;= kMinZoom)<br>
    {<br>
        gZoomFactor = kMinZoom;<br>
        returnValue = hitLowBounds;<br>
    }<br>
    else if (gZoomFactor &gt;= kMaxZoom)<br>
    {<br>
        gZoomFactor = kMaxZoom;<br>
        returnValue = hitHighBounds;<br>
    }<br>
    <br>
    sub = gZoomFactor % kNumZooms;<br>
    <br>
    switch (sub)<br>
        {<br>
            case 1:<br>
                gRepFactor
= (float)0.25;<br>
                break;<br>
            case 2:<br>
                gRepFactor
= (float)0.33;<br>
                break;<br>
            case 3:<br>
                gRepFactor
= (float)0.50;<br>
                break;<br>
            case 4:<br>
                gRepFactor
= (float)0.66;<br>
                break;<br>
            case 5:<br>
                gRepFactor
= (float)0.80;<br>
                break;<br>
            default:<br>
                gRepFactor
= (float)0;<br>
                break;<br>
        }<br>
        gRepFactor += gZoomFactor / kNumZooms;<br>
    return returnValue;<br>
}<br>
<br>
<br>
void scaleRect(Rect *l, short n, short d) {<br>
    l-&gt;left = (l-&gt;left * n) / d;<br>
    l-&gt;top = (l-&gt;top * n) / d;<br>
    l-&gt;right = (l-&gt;right * n) / d;<br>
    l-&gt;bottom = (l-&gt;bottom * n) / d;<br>
}<br>
<br>
void shrinkRect(Rect *l, short x, short y) {<br>
    l-&gt;left += x;<br>
    l-&gt;top += y;<br>
    l-&gt;right -= x;<br>
    l-&gt;bottom -= y;<br>
}<br>
<br>
void copyRect(Rect *l, const Rect *r) {<br>
    l-&gt;left = r-&gt;left;<br>
    l-&gt;top = r-&gt;top;<br>
    l-&gt;right = r-&gt;right;<br>
    l-&gt;bottom = r-&gt;bottom;<br>
}<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
/******************************************************************************/<br>
/* NEPOUŽITO - Pokud se filtruje po èástech */<br>
<br>
void StartNoAdvanceState (GPtr globals)<br>
{<br>
    DoInitialRect(globals);<br>
}<br>
<br>
/*****************************************************************************/<br>
/* NEPOUŽITO - inicializace první filtrované èásti - filtrování po èástech */<br>
<br>
void DoInitialRect (GPtr globals)<br>
{<br>
    int32 total;<br>
    total = gStuff-&gt;filterRect.bottom - gStuff-&gt;filterRect.top;<br>
    gStuff-&gt;inLoPlane = gStuff-&gt;outLoPlane = 0;<br>
    gStuff-&gt;inHiPlane = gStuff-&gt;outHiPlane = gStuff-&gt;planes - 1;<br>
    <br>
    /* Použítí Alfa kanálù */<br>
    #if useAlpha<br>
    if (!gStuff-&gt;isFloating)<br>
    {<br>
        gStuff-&gt;wantsAbsolute = true;<br>
        if (gStuff-&gt;inLayerPlanes !=0 &amp;&amp;
gStuff-&gt;inTransparencyMask != 0)<br>
            gStuff-&gt;inHiPlane =
gStuff-&gt;absLayerPlanes - 1 +<br>
                                gStuff-&gt;absTransparencyMask
+<br>
                                gStuff-&gt;absLayerMasks
+<br>
                                gStuff-&gt;absInvertedLayerMasks
+<br>
                                gStuff-&gt;absNonLayerPlanes;<br>
        <br>
        if (gStuff-&gt;outLayerPlanes !=0 &amp;&amp;
gStuff-&gt;outTransparencyMask !=0)<br>
            gStuff-&gt;outHiPlane =
gStuff-&gt;outLayerPlanes - 1 +<br>
                                gStuff-&gt;outTransparencyMask
+<br>
                                gStuff-&gt;outLayerMasks
+<br>
                                gStuff-&gt;outInvertedLayerMasks
+<br>
                                gStuff-&gt;outNonLayerPlanes;<br>
    }<br>
    #endif<br>
    gStuff-&gt;inputRate = long2fixed (1L);<br>
    gStuff-&gt;maskRate = long2fixed (1L);<br>
    gStuff-&gt;maskPadding = gStuff-&gt;outputPadding =
gStuff-&gt;inputPadding = 255;<br>
    gStuff-&gt;inRect = gStuff-&gt;outRect = gStuff-&gt;maskRect =
gStuff-&gt;filterRect;<br>
    gStuff-&gt;inRect.bottom = gStuff-&gt;outRect.bottom =
gStuff-&gt;maskRect.bottom = gStuff-&gt;inRect.top + gRowSkip;<br>
}<br>
<br>
/*****************************************************************************/<br>
/* NEPOUŽITO - Dotaz na další èást */<br>
<br>
Boolean DoNextRect (GPtr globals)<br>
{<br>
    gStuff-&gt;inRect.top += gRowSkip; // next batch<br>
    gStuff-&gt;inRect.bottom += gRowSkip; // next batch<br>
    gStuff-&gt;outRect = gStuff-&gt;maskRect = gStuff-&gt;inRect;<br>
    <br>
    return gStuff-&gt;inRect.top &lt; gStuff-&gt;filterRect.bottom;<br>
}<br>
<br>
<br>
</small></p>
</body></html>
/trunk/preview.c
0,0 → 1,293
/*
This file is part of Filter Foundry, a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
/* This is PLATFORM INDEPENDENT user interface code - mainly dialog logic */
 
#include "ff.h"
 
#include "piproperties.h"
 
#include "node.h"
#include "parser.h"
#include "funcs.h"
#include "y.tab.h"
#include "choosefile.h"
 
PSPixelMap preview_pmap;
PSPixelMask preview_pmask;
Handle preview_handle;
UIRECT preview_rect;
int preview_w,preview_h;
Point preview_scroll;
Boolean preview_complete = false;
 
Boolean setup_preview(FilterRecordPtr pb){
 
//dbg("setup_preview");
if(pb->displayPixels && pb->advanceState){
 
preview_w = MIN(preview_rect.right - preview_rect.left - 2,pb->filterRect.right - pb->filterRect.left);
preview_h = MIN(preview_rect.bottom - preview_rect.top - 2,pb->filterRect.bottom - pb->filterRect.top);
preview_pmap.version = 1;
preview_pmap.bounds.left = preview_pmap.bounds.top = 0;
preview_pmap.bounds.right = preview_w;
preview_pmap.bounds.bottom = preview_h;
preview_pmap.imageMode = nplanes>1 ? plugInModeRGBColor : plugInModeGrayScale;
preview_pmap.rowBytes = nplanes*preview_w;
preview_pmap.colBytes = nplanes;
preview_pmap.planeBytes = 1; /*interleaved*/
// preview_pmap.baseAddr = preview_data;
/* baseAddr must be set before using pixelmap */
//---------------------------------------------------------------------------
// Fields new in version 1:
//---------------------------------------------------------------------------
preview_pmap.mat = NULL;
if(nplanes==4){
preview_pmask.next = NULL;
// preview_pmask.maskData = preview_data+3;
preview_pmask.rowBytes = preview_pmap.rowBytes;
preview_pmask.colBytes = nplanes;
preview_pmask.maskDescription = kSimplePSMask;
preview_pmap.masks = &preview_pmask;
}else
preview_pmap.masks = NULL;
preview_handle = PINEWHANDLE((long)preview_h * preview_pmap.rowBytes);
}else
preview_handle = NULL;
return preview_handle != NULL;
 
//---------------------------------------------------------------------------
// Fields new in version 2:
//---------------------------------------------------------------------------
// preview_pmap.pixelOverlays;
// preview_pmap.colorManagementOptions;
 
// setup(pb); // prepare for evaluations
}
 
void dispose_preview(){
if(preview_handle){
PIDISPOSEHANDLE(preview_handle);
preview_handle = NULL;
}
}
 
void recalc_preview(FilterRecordPtr pb,DIALOGREF dp){
extern int srcradused,needinput;
extern double zoomfactor;
OSErr e;
int j,n,scaledw,scaledh,imgw,imgh;
Rect r,outRect;
Ptr outrow;
 
if(preview_handle){
 
/* size of previewed area, of source image; but no larger than filtered area (selection) */
scaledw = zoomfactor*preview_w;
if(scaledw > (pb->filterRect.right - pb->filterRect.left))
scaledw = (pb->filterRect.right - pb->filterRect.left);
scaledh = zoomfactor*preview_h;
if(scaledh > (pb->filterRect.bottom - pb->filterRect.top))
scaledh = (pb->filterRect.bottom - pb->filterRect.top);
/* scale clipped preview area down again - this becomes the pixel size of preview */
imgw = scaledw/zoomfactor;
if(imgw > preview_w)
imgw = preview_w;
imgh = scaledh/zoomfactor;
if(imgh > preview_h)
imgh = preview_h;
 
// Use to set the phase of the checkerboard:
preview_pmap.maskPhaseRow = preview_scroll.v/zoomfactor;
preview_pmap.maskPhaseCol = preview_scroll.h/zoomfactor;
 
/* compute source data rectangle (inRect) */
 
/* centre preview on filtered part of input image, adding scroll offset */
r.left = (pb->filterRect.left+pb->filterRect.right-scaledw)/2 + preview_scroll.h;
/* make sure it does not go outside the input area */
if(r.left < pb->filterRect.left)
r.left = pb->filterRect.left;
else if(r.left > pb->filterRect.right-scaledw)
r.left = pb->filterRect.right-scaledw;
r.right = r.left + scaledw;
 
/* now compute for vertical */
r.top = (pb->filterRect.top+pb->filterRect.bottom-scaledh)/2 + preview_scroll.v;
if(r.top < pb->filterRect.top)
r.top = pb->filterRect.top;
else if(r.top > pb->filterRect.bottom-scaledh)
r.top = pb->filterRect.bottom-scaledh;
r.bottom = r.top + scaledh;
 
/* if formulae need random access to image - src(), rad() - we must request entire area: */
if(srcradused){
SETRECT(pb->inRect,0,0,pb->imageSize.h,pb->imageSize.v);
}else
pb->inRect = r;
pb->outRect = pb->inRect;
SETRECT(pb->maskRect,0,0,0,0);
pb->inLoPlane = pb->outLoPlane = 0;
pb->inHiPlane = pb->outHiPlane = nplanes-1;
//dbg("recalc_preview: about to call advanceState()");
if( !needinput || !(e = pb->advanceState()) ){
Ptr outptr = PILOCKHANDLE(preview_handle,false);
int blankrows = (preview_h-imgh)/2,
blankcols = (preview_w-imgw)/2;
 
INITRANDSEED();
//dbg("recalc_preview: about to call process()");
SETRECT(outRect,0,0,imgw,imgh);
e = process_scaled(pb,false,
&pb->inRect,&r,&outRect,
outptr+preview_pmap.rowBytes*blankrows+nplanes*blankcols,preview_pmap.rowBytes,
zoomfactor);
if(blankrows){
memset(outptr,0xff,preview_pmap.rowBytes*blankrows);
n = preview_h - blankrows - imgh; /* blank rows below preview */
memset(outptr+preview_pmap.rowBytes*(blankrows+imgh),0xff,preview_pmap.rowBytes*n);
}
if(blankcols){
n = preview_w - blankcols - imgw; /* blank columns on right side of preview */
outrow = outptr+preview_pmap.rowBytes*blankrows;
for( j = blankrows ; j < preview_h - blankrows ; ++j ){
memset(outrow,0xff,nplanes*blankcols);
memset(outrow+nplanes*(blankcols+imgw),0xff,nplanes*n);
outrow += preview_pmap.rowBytes;
}
}
 
if(!e){
preview_complete = true;
 
#ifdef WIN_ENV
{
extern HWND preview_hwnd;
HDC hdc = GetDC(preview_hwnd);
//dbg("recalc_preview: about to call drawpreview()");
drawpreview(dp,hdc,outptr);
ReleaseDC(preview_hwnd,hdc);
}
#else
{
GrafPtr saveport;
 
GetPort(&saveport);
SetPortDialogPort(dp);
drawpreview(dp,NULL,outptr);
SetPort(saveport);
}
#endif
}
 
PIUNLOCKHANDLE(preview_handle);
 
}else{ char s[0x100];
sprintf(s,"recalc_preview: advanceState failed (%d)\n\
inRect=(%d,%d,%d,%d) filterRect=(%d,%d,%d,%d) inLoPlane=%d inHiPlane=%d ",
e,
pb->inRect.left,pb->inRect.top,pb->inRect.right,pb->inRect.bottom,
pb->filterRect.left,pb->filterRect.top,pb->filterRect.right,pb->filterRect.bottom,
pb->inLoPlane,pb->inHiPlane);
dbg(s);
}
}
}
 
OSErr drawpreview(DIALOGREF dp,void *hdc,Ptr imageptr){
int32 watchsusp;
OSErr e = noErr;
VRect srcRect;
UIRECT imagebounds;
 
if(preview_handle && preview_complete){
 
srcRect = preview_pmap.bounds;
 
imagebounds.left = (preview_rect.left+preview_rect.right-preview_w)/2;
imagebounds.top = (preview_rect.top+preview_rect.bottom-preview_h)/2;
imagebounds.right = imagebounds.left + preview_w;
imagebounds.bottom = imagebounds.top + preview_h;
 
preview_pmap.baseAddr = imageptr;//PILOCKHANDLE(preview_handle,false);
preview_pmask.maskData = imageptr+3;
 
if(gpb->propertyProcs->getPropertyProc){
gpb->propertyProcs->getPropertyProc(kPhotoshopSignature,propWatchSuspension,0,&watchsusp,NULL);
gpb->propertyProcs->setPropertyProc(kPhotoshopSignature,propWatchSuspension,0,watchsusp+1,NULL);
}
e = gpb->displayPixels(&preview_pmap,&srcRect,imagebounds.top,imagebounds.left,hdc);
 
if(gpb->propertyProcs->getPropertyProc)
gpb->propertyProcs->setPropertyProc(kPhotoshopSignature,propWatchSuspension,0,watchsusp,NULL);
}
return e;
}
 
#if 0
// old process-then-scale preview code
if(scaleddata = PINEWHANDLE((long)nplanes*scaledw*scaledh)){
Ptr scaledptr = PILOCKHANDLE(scaleddata,false);
//process(pb,false,&pb->inRect,&r,&r,outptr,preview_pmap.rowBytes)
long scaledrb = (long)nplanes*scaledw;
 
if(!(e = process(pb,false,&pb->inRect,&r,&r,scaledptr,scaledrb)){
/* copy data from scaledptr to outptr, scaling as we go */
if(zoomfactor == 1.)
memcpy(outptr,scaledptr,(long)nplanes*preview_w*preview_h);
else{
int blankrows = (preview_h-imgh)/2,
blankcols = (preview_w-imgw)/2;
memset(outptr,0xff,preview_pmap.rowBytes*blankrows);
memset(outptr+preview_pmap.rowBytes*(preview_h-blankrows),0xff,preview_pmap.rowBytes*blankrows);
outrow = outptr+preview_pmap.rowBytes*blankrows;
for( j=blankrows,y=0. ; j<preview_h-blankrows ; ++j,y+=zoomfactor ){
memset(outrow,0xff,nplanes*blankcols);
memset(outrow+nplanes*(preview_w-blankcols),0xff,nplanes*blankcols);
outrow += nplanes*blankcols;
inrow = scaledptr + scaledrb*(int)y;
for( i=blankcols,x = 0. ; i<(preview_w-blankcols) ; ++i,x+=zoomfactor){
inpix = inrow + nplanes*(int)x ;
for(k=0;k<nplanes;++k)
*outrow++ = inpix[k];
}
outrow += nplanes*blankcols;
}
}
}
PIDISPOSEHANDLE(scaleddata);
}else e = memFullErr;
#endif
/trunk/process.c
0,0 → 1,191
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include "carbonstuff.h"
#include "pifilter.h"
 
#include "ff.h"
#include "symtab.h"
#include "node.h"
#include "funcs.h"
#include "parser.h"
 
extern value_type var[];
extern int nplanes,varused[],srcradused;
extern struct node *tree[];
int needinput;
 
/* get prepared to evaluate expression trees--
this assumes that tree[] array is already set up
return TRUE if we're ready to go
*/
 
Boolean setup(FilterRecordPtr pb){
int i;
extern int chunksize;
 
INITRANDSEED();
var['X'] = pb->imageSize.h;
var['Y'] = pb->imageSize.v;
var['Z'] = nplanes;
var['D'] = 1024;
var['M'] = ff_c2m(var['X'],var['Y'])/2;
 
/* initialise flags for tracking special variable usage */
for( i=0 ; i<0x100 ; i++ )
varused[i] = 0;
srcradused = 0;
for(i=0;i<nplanes;++i){
//char s[100];sprintf(s,"expr[%d]=%#x",i,expr[i]);dbg(s);
if( tree[i] || ( tree[i] = parseexpr(expr[i]) ) )
checkvars(tree[i],varused,&srcradused);
else
break;
}
needinput = (srcradused || varused['r'] || varused['g'] || varused['b'] || varused['a']
|| varused['i'] || varused['u'] || varused['v'] || varused['c']) ;
 
return i==nplanes; /* all required expressions parse OK */
}
 
void evalpixel(unsigned char *outp,unsigned char *inp){
int f,k;
 
if(needinput){
var['r'] = inp[0];
var['g'] = nplanes > 1 ? inp[1] : 0;
var['b'] = nplanes > 2 ? inp[2] : 0;
var['a'] = nplanes > 3 ? inp[3] : 0;
if(varused['i']) var['i'] = (( 76L*var['r'])+(150L*var['g'])+( 29L*var['b']))/256;
if(varused['u']) var['u'] = ((-19L*var['r'])+(-37L*var['g'])+( 56L*var['b']))/256;
if(varused['v']) var['v'] = (( 78L*var['r'])+(-65L*var['g'])+(-13L*var['b']))/256;
}
if(varused['d']) var['d'] = ff_c2d(var['X']/2-var['x'],var['Y']/2-var['y']);
if(varused['m']) var['m'] = ff_c2m(var['X']/2-var['x'],var['Y']/2-var['y']);
for( k=0 ; k<nplanes ; ++k ){
if(needinput)
var['c'] = inp[k];
var['z'] = k;
f = eval(tree[k]);
outp[k] = f<0 ? 0 : ( f>255 ? 255 : f ); // clamp channel value to 0-255
}
}
 
OSErr process(FilterRecordPtr pb,Boolean progress,
Rect *inRect,Rect *filterRect,Rect *outRect,
void *outData,long outRowBytes){
unsigned char *inrow,*outrow,*inp,*outp;
int j,i,ncols = filterRect->right - filterRect->left;
long t,ticks = TICKCOUNT();
 
long inoffset = (long)pb->inRowBytes*(filterRect->top - inRect->top)
+ (long)nplanes*(filterRect->left - inRect->left),
outoffset = (long)outRowBytes*(filterRect->top - outRect->top)
+ (long)nplanes*(filterRect->left - outRect->left);
/*
{char s[0x100];sprintf(s,"process: inoffset=%d outoffset=%d inData=%#x inRect=(%d,%d,%d,%d) filterRect=(%d,%d,%d,%d)",
inoffset,outoffset,pb->inData,
inRect->left,inRect->top,inRect->right,inRect->bottom,
filterRect->left,filterRect->top,filterRect->right,filterRect->bottom);dbg(s);}
*/
 
for( inrow = (unsigned char*)pb->inData + inoffset, outrow = (unsigned char*)outData + outoffset,
j = filterRect->bottom - filterRect->top, var['y'] = filterRect->top
; j-- ; ++var['y'], inrow += pb->inRowBytes, outrow += outRowBytes ){
 
for ( inp=inrow, outp=outrow, i=ncols, var['x']=filterRect->left ; i-- ; ++var['x'], inp+=nplanes, outp+=nplanes ){
evalpixel(outp,inp); /* var['x'] & var['y'] are implicit parameters */
}
 
if(progress && (t = TICKCOUNT()) > ticks){
ticks = t + TICKS_SEC/4;
if(pb->abortProc())
return userCanceledErr;
else
pb->progressProc(var['y'] - pb->filterRect.top,pb->filterRect.bottom - pb->filterRect.top);
}
#ifdef MAC_ENV
else{
/* to reduce annoying delays during typing of expressions,
immediately abort preview calculation if a key or mouse has been pressed. */
EventRecord event;
if(EventAvail(mDownMask|keyDownMask|autoKeyMask,&event))
return userCanceledErr;
}
#endif
}
return noErr;
 
}
 
OSErr process_scaled(FilterRecordPtr pb,Boolean progress,
Rect *inRect,Rect *filterRect,Rect *outRect,
void *outData,long outRowBytes,double zoom){
unsigned char *inrow,*outrow,*outp;
int j,i,ncols = filterRect->right - filterRect->left;
long t,ticks = TICKCOUNT();
double x,y;
/*
{char s[0x100];sprintf(s,"process_scaled: pb->inData=%#x outData=%#x\n\
inRect=(%d,%d,%d,%d) filterRect=(%d,%d,%d,%d) outRect=(%d,%d,%d,%d)\n\
pb->filterRect=(%d,%d,%d,%d)\n",
pb->inData,outData,
inRect->left,inRect->top,inRect->right,inRect->bottom,
filterRect->left,filterRect->top,filterRect->right,filterRect->bottom,
outRect->left,outRect->top,outRect->right,outRect->bottom,
pb->filterRect.left,pb->filterRect.top,pb->filterRect.right,pb->filterRect.bottom); dbg(s);}
*/
if(needinput && !pb->inData){
simplealert("Input error (process_scaled: pb->inData == NULL). This problem is being investigated. Cannot apply the filter; please re-launch Photoshop and try again.");
return userCanceledErr;
}else
for( j = outRect->top, outrow = (unsigned char*)outData, y = filterRect->top
; j < outRect->bottom ; ++j, outrow += outRowBytes, y += zoom ){
var['y'] = y;
inrow = (unsigned char*)pb->inData
+ (var['y'] - inRect->top)*pb->inRowBytes
- (long)nplanes*inRect->left;
for( outp=outrow, i=outRect->left, x=filterRect->left ; i<outRect->right ; ++i, outp+=nplanes, x+=zoom ){
var['x'] = x;
evalpixel(outp,inrow + (long)var['x']*nplanes); /* var['x'] & var['y'] are implicit parameters */
}
if(progress && (t = TICKCOUNT()) > ticks){
ticks = t + TICKS_SEC/4;
if(pb->abortProc())
return userCanceledErr;
else
pb->progressProc((int)y - pb->filterRect.top,pb->filterRect.bottom - pb->filterRect.top);
}
#ifdef MAC_ENV
else{
/* to stop delays during typing of expressions,
immediately abort preview calculation if a key or mouse has been pressed. */
EventRecord event;
if(EventAvail(mDownMask|keyDownMask|autoKeyMask,&event))
return userCanceledErr;
}
#endif
}
 
return noErr;
}
/trunk/read.c
0,0 → 1,183
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include "ff.h"
 
#include "file_compat.h"
 
enum{
BUFSIZE = (4L<<10),
MAXLINE = 0x200,
};
 
Boolean readparams(Handle h,Boolean alerts,char **reason){
Boolean res = false;
char linebuf[MAXLINE+1],curexpr[MAXEXPR+1],*p,*dataend,*q;
int c,linecnt,lineptr,exprcnt;
 
p = PILOCKHANDLE(h,false);
dataend = p + PIGETHANDLESIZE(h);
//sprintf(s,"readparams: Input data size = %d",dataend-p); dbg(s);
q = curexpr;
linecnt = exprcnt = lineptr = 0;
 
*reason = "File was too short.";
while( p < dataend ){
 
c = *p++;
 
if(c==CR || c==LF){ /* detected end of line */
/* look ahead to see if we need to skip a line feed (DOS EOL convention) */
if(c == CR && *p == LF && p < dataend)
++p;
linebuf[lineptr] = 0; /* add terminating NUL to line buffer */
//sprintf(s,"got line %d = \"%s\"",linecnt,linebuf); dbg(s);
 
/* process complete line */
if(linecnt==0){
if(strcmp(linebuf,"%RGB-1.0")){
if(alerts)
*reason = ("This doesn't look like a Filter Factory file (first line is not \"%RGB-1.0\").");
break;
}
}else if(linecnt<=8){
slider[linecnt-1] = atoi(linebuf);
}else{
if(lineptr){
/* it's not an empty line; append it to current expr string */
if( q+lineptr > curexpr+MAXEXPR ){
*reason = ("Found an expression longer than 1024 characters.");
break;
}
q = cat(q,linebuf);
}else{
/* it's an empty line: we've completed the expr string */
if(expr[exprcnt])
free(expr[exprcnt]);
*q = 0;
if(!(expr[exprcnt] = my_strdup(curexpr))){
*reason = ("Could not get memory for expression.");
break;
}
 
if(++exprcnt == 4){
res = true;
break; /* got everything we want */
}
 
q = curexpr; /* empty current expr, ready for next one */
}
}
++linecnt;
lineptr = 0;
}else{
/* store character */
if(c=='\\'){ /* escape sequence */
if(p < dataend){
c = *p++;
switch(c){
case 'r': c = CR;
case '\\': break;
default:
if(alerts) alertuser("Warning:","Unknown escape sequence in input.");
}
}//else if(alerts) alertuser("truncated escape sequence ends input");
}
 
if(lineptr < MAXLINE)
linebuf[lineptr++] = c;
}
}
PIUNLOCKHANDLE(h);
// if(c == EOF) alertuser("end of file");
 
return res;
}
 
Boolean readPARM(Ptr p,PARM_T *pparm,char **reasonstr){
Boolean res = false;
int i;
 
memcpy(pparm,p,sizeof(PARM_T));
#ifdef WIN_ENV
/* Windows PARM resource stores C strings - convert to Pascal strings */
myc2pstr((char*)pparm->category);
myc2pstr((char*)pparm->title);
myc2pstr((char*)pparm->copyright);
myc2pstr((char*)pparm->author);
for(i=0;i<4;++i)
myc2pstr((char*)pparm->map[i]);
for(i=0;i<8;++i)
myc2pstr((char*)pparm->ctl[i]);
#endif
 
for(i=0;i<4;++i){
if(expr[i]) free(expr[i]);
expr[i] = my_strdup(pparm->formula[i]);
//dbg(expr[i]);
}
 
for(i=0;i<8;++i)
slider[i] = pparm->val[i];
 
res = true;
//dbg("read pparm ok");
 
return res;
}
 
Handle readfileintohandle(FILEREF r){
long n;
Handle h;
Ptr p;
 
if( !GetEOF(r,&n) && (h = PINEWHANDLE(n)) ){
p = PILOCKHANDLE(h,false);
if(!FSRead(r,&n,p)){
PIUNLOCKHANDLE(h);
return h;
}
PIDISPOSEHANDLE(h);
}
return NULL;
}
 
Boolean readfile(StandardFileReply *sfr,char **reason){
FILEREF r;
Handle h;
Boolean res = false;
 
if(!FSpOpenDF(&sfr->sfFile,fsRdPerm,&r)){
if(h = readfileintohandle(r)){
if(res = readparams(h,true,reason))
gdata->standalone = false; // so metadata fields will default, if user chooses Make...
PIDISPOSEHANDLE(h);
}
FSClose(r);
}else
*reason = ("Could not open the file.");
 
return res;
}
/trunk/resource.h
/trunk/save.c
0,0 → 1,121
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include "ff.h"
 
#include "file_compat.h"
#include "sprintf_tiny.h"
 
enum{ CHOPLINES = 63 };
 
OSErr putstr(Handle h,char *s);
 
OSErr putstr(Handle h,char *s){
Ptr p;
OSErr e;
long size = PIGETHANDLESIZE(h),n = strlen(s);
if(!(e = PISETHANDLESIZE(h,size+n))){
p = PILOCKHANDLE(h,false);
memcpy(p+size,s,n);
PIUNLOCKHANDLE(h);
}
return e;
}
 
OSErr saveparams(Handle h){
char outbuf[CHOPLINES*2+2],*q,*p,*r,*start;
int i,j,chunk,n;
OSErr e;
long est;
static char afs_sig[] = "%RGB-1.0\n";
est = strlen(expr[0])+strlen(expr[1])+strlen(expr[2])+strlen(expr[3]);
est += strlen(afs_sig) + est/CHOPLINES + 4 + 8*6 + 1024 /*slop*/ ;
if( !(e = PISETHANDLESIZE(h,est)) && (p = start = PILOCKHANDLE(h,false)) ){
p = cat(p,afs_sig);
/* slider values */
for( i=0 ; i<8 ; ++i ){
p = int_str(p,slider[i],10);
*p++ = '\n';
}
/* expressions */
if(!e)
for( i=0 ; i<4 ; ++i ){
if(r = expr[i])
for( n = strlen(r) ; n ; n -= chunk ){
chunk = n>CHOPLINES ? CHOPLINES : n;
for( j = chunk,q = outbuf ; j-- ; )
if(*r == CR){
*q++ = '\\';
*q++ = 'r';
++r;
}else
*q++ = *r++;
*q++ = '\n';
*q = 0;
p = cat(p,outbuf);
}
else
p = cat(p,"(null expr)\n"); // this shouldn't happen
*p++ = '\n';
}
PIUNLOCKHANDLE(h);
if(!e)
e = PISETHANDLESIZE(h,p - start);
}
err:
return e;
}
 
OSErr savehandleintofile(Handle h,FILEREF r){
Ptr p = PILOCKHANDLE(h,false);
long n = PIGETHANDLESIZE(h);
OSErr e = FSWrite(r,&n,p);
PIUNLOCKHANDLE(h);
return e;
}
 
Boolean savefile(StandardFileReply *sfr){
FILEREF r;
Handle h;
Boolean res = false;
char *reasonstr = "";
 
FSpDelete(&sfr->sfFile);
if(!FSpCreate(&sfr->sfFile,SIG_SIMPLETEXT,TEXT_FILETYPE,sfr->sfScript))
if(!FSpOpenDF(&sfr->sfFile,fsWrPerm,&r)){
 
if(h = PINEWHANDLE(0)){
res = !(saveparams(h) || savehandleintofile(h,r)) ;
PIDISPOSEHANDLE(h);
}
 
FSClose(r);
}else reasonstr = ("Could not open the file.");
else reasonstr = ("Could not create the file.");
 
if(!res)
alertuser("Could not save settings.",reasonstr);
 
return res;
}
/trunk/savenew.c
0,0 → 1,121
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include "ff.h"
 
#include "file_compat.h"
#include "sprintf_tiny.h"
 
enum{ CHOPLINES = 63 };
 
OSErr putstr(Handle h,char *s);
 
OSErr putstr(Handle h,char *s){
Ptr p;
OSErr e;
long size = PIGETHANDLESIZE(h),n = strlen(s);
if(!(e = PISETHANDLESIZE(h,size+n))){
p = PILOCKHANDLE(h,false);
memcpy(p+size,s,n);
PIUNLOCKHANDLE(h);
}
return e;
}
 
OSErr saveparams(Handle h){
char outbuf[CHOPLINES*2+2],*q,*p,*r,*start;
int i,j,chunk,n;
OSErr e;
long est;
static char afs_sig[] = "%RGB-1.0\n";
est = strlen(expr[0])+strlen(expr[1])+strlen(expr[2])+strlen(expr[3]);
est += strlen(afs_sig) + est/CHOPLINES + 4 + 8*6 + 1024 /*slop*/ ;
if( !(e = PISETHANDLESIZE(h,est)) && (p = start = PILOCKHANDLE(h,false)) ){
p = cat(p,afs_sig);
/* slider values */
for( i=0 ; i<8 ; ++i ){
p = int_str(p,slider[i],10);
*p++ = '\n';
}
/* expressions */
if(!e)
for( i=0 ; i<4 ; ++i ){
if(r = expr[i])
for( n = strlen(r) ; n ; n -= chunk ){
chunk = n>CHOPLINES ? CHOPLINES : n;
for( j = chunk,q = outbuf ; j-- ; )
if(*r == CR){
*q++ = '\\';
*q++ = 'r';
++r;
}else
*q++ = *r++;
*q++ = '\n';
*q = 0;
p = cat(p,outbuf);
}
else
p = cat(p,"(null expr)\n"); // this shouldn't happen
*p++ = '\n';
}
PIUNLOCKHANDLE(h);
if(!e)
e = PISETHANDLESIZE(h,p - start);
}
err:
return e;
}
 
OSErr savehandleintofile(Handle h,FILEREF r){
Ptr p = PILOCKHANDLE(h,false);
long n = PIGETHANDLESIZE(h);
OSErr e = FSWrite(r,&n,p);
PIUNLOCKHANDLE(h);
return e;
}
 
Boolean savefile(StandardFileReply *sfr){
FILEREF r;
Handle h;
Boolean res = false;
char *reasonstr = "";
 
FSpDelete(&sfr->sfFile);
if(!FSpCreate(&sfr->sfFile,kPhotoshopSignature,'TEXT',sfr->sfScript))
if(!FSpOpenDF(&sfr->sfFile,fsWrPerm,&r)){
 
if(h = PINEWHANDLE(0)){
res = !(saveparams(h) || savehandleintofile(h,r)) ;
PIDISPOSEHANDLE(h);
}
 
FSClose(r);
}else reasonstr = ("Could not open the file.");
else reasonstr = ("Could not create the file.");
 
if(!res)
alertuser("Could not save settings.",reasonstr);
 
return res;
}
/trunk/scripting.c
0,0 → 1,287
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
/* Portions Copyright 1996 - 1999 Adobe Systems Incorporated */
/* All Rights Reserved. */
 
//#include <stdio.h>
 
//#include "world.h" // must come before Photoshop includes
 
#include "ff.h"
 
#include "scripting.h"
//#include "ui.h"
#include "dbg.h"
 
//extern FilterRecordPtr gpb;
 
OSErr put_cstring(PIWriteDescriptor token,DescriptorKeyID key,char *s){
int n = strlen(s);
Ptr p;
Handle h = PINEWHANDLE(n);
p = PILOCKHANDLE(h,false);
memcpy(p,s,n);
PIUNLOCKHANDLE(h);
return PIPutText(token,key,h);
/* FIXME: not sure if we are supposed to dispose of handle */
}
 
char *get_cstring(PIReadDescriptor token){
int n;
Ptr p;
char *str = NULL;
Handle h;
OSErr e = PIGetText(token,&h);
 
if(!e && h){
n = PIGETHANDLESIZE(h);
p = PILOCKHANDLE(h,false);
//sprintf(str,"get_cstring: token=%#x s=%#x h=%#x p=%#x n=%d",token,s,h,p,n); dbg(str);
if(str = malloc(n+1)){
memcpy(str,p,n);
str[n] = 0;
}
PIUNLOCKHANDLE(h);
/* FIXME: not sure if we are supposed to dispose of handle */
}
return str;
}
 
Boolean ReadScriptParamsOnRead(void)
{
PIReadDescriptor token;
DescriptorKeyID key;
DescriptorTypeID type;
DescriptorKeyIDArray array = { NULLID };
int32 flags;
OSErr stickyError;
Boolean returnValue = true;
long v;
if (DescriptorAvailable(NULL)){ /* playing back. Do our thing. */
token = OpenReader(array);
if (token){
while (PIGetKey(token, &key, &type, &flags)){
switch (key){
case PARAM_R_KEY: expr[0] = get_cstring(token); break;
case PARAM_G_KEY: expr[1] = get_cstring(token); break;
case PARAM_B_KEY: expr[2] = get_cstring(token); break;
case PARAM_A_KEY: expr[3] = get_cstring(token); break;
default:
key -= PARAM_CTL0_KEY;
if(key >=0 && key < 8){
PIGetInt(token,&v);
slider[key] = v;
}
break;
}
}
 
stickyError = CloseReader(&token); // closes & disposes.
// all Filter Foundry parameters are regarded as optional,
// so we needn't worry if any are missing
if (stickyError){
if (stickyError == errMissingParameter) // missedParamErr == -1715
;
/* (descriptorKeyIDArray != NULL)
missing parameter somewhere. Walk IDarray to find which one. */
else
; //gResult = stickyError;
}
}
returnValue = gpb->descriptorParameters->playInfo == plugInDialogDisplay;
/* return TRUE if want to show our Dialog */
}
return returnValue;
}
 
OSErr WriteScriptParamsOnRead(void)
{
PIWriteDescriptor token;
OSErr gotErr = noErr;
extern int ctls[],maps[];
int i,allctls;
if (DescriptorAvailable(NULL)){ /* recording. Do our thing. */
token = OpenWriter();
if (token){
// write keys here
if(!gdata->standalone){
put_cstring(token, PARAM_R_KEY, expr[0]);
put_cstring(token, PARAM_G_KEY, expr[1]);
put_cstring(token, PARAM_B_KEY, expr[2]);
put_cstring(token, PARAM_A_KEY, expr[3]);
}
 
/* only write values for the sliders that are actually used! */
allctls = checksliders(4,ctls,maps);
for(i=0;i<8;++i)
if(allctls||ctls[i])
PIPutInt(token, PARAM_CTL0_KEY+i, slider[i]);
 
gotErr = CloseWriter(&token); /* closes and sets dialog optional */
/* done. Now pass handle on to Photoshop */
}
}
return gotErr;
}
 
 
//-------------------------------------------------------------------------------
//
// HostDescriptorAvailable
//
// Determines whether the PIDescriptorParameters callback is available.
//
// Check for valid suite version, routine suite version, and routine count.
// Also check that the subset of routines we actually use is actually present.
//
//-------------------------------------------------------------------------------
 
Boolean HostDescriptorAvailable (PIDescriptorParameters *procs,
Boolean *outNewerVersion)
{
if(outNewerVersion)
*outNewerVersion = procs->descriptorParametersVersion > kCurrentDescriptorParametersVersion
|| procs->readDescriptorProcs->readDescriptorProcsVersion > kCurrentReadDescriptorProcsVersion
|| procs->writeDescriptorProcs->writeDescriptorProcsVersion > kCurrentWriteDescriptorProcsVersion ;
return procs != NULL
&& procs->descriptorParametersVersion == kCurrentDescriptorParametersVersion
 
&& procs->readDescriptorProcs != NULL
&& procs->readDescriptorProcs->readDescriptorProcsVersion == kCurrentReadDescriptorProcsVersion
&& procs->readDescriptorProcs->numReadDescriptorProcs >= kCurrentReadDescriptorProcsCount
&& procs->readDescriptorProcs->openReadDescriptorProc != NULL
&& procs->readDescriptorProcs->closeReadDescriptorProc != NULL
&& procs->readDescriptorProcs->getKeyProc != NULL
&& procs->readDescriptorProcs->getTextProc != NULL
&& procs->readDescriptorProcs->getIntegerProc != NULL
 
&& procs->writeDescriptorProcs != NULL
&& procs->writeDescriptorProcs->writeDescriptorProcsVersion == kCurrentWriteDescriptorProcsVersion
&& procs->writeDescriptorProcs->numWriteDescriptorProcs >= kCurrentWriteDescriptorProcsCount
&& procs->writeDescriptorProcs->openWriteDescriptorProc != NULL
&& procs->writeDescriptorProcs->closeWriteDescriptorProc != NULL
&& procs->writeDescriptorProcs->putTextProc != NULL
&& procs->writeDescriptorProcs->putIntegerProc != NULL ;
}
 
 
//-------------------------------------------------------------------------------
//
// HostCloseReader
//
// Closes a read token, disposes its handle, sets the token to NULL, and
// sets the parameter blocks' descriptor to NULL.
//
// The Descriptor Parameters suite are callbacks designed for
// scripting and automation. See PIActions.h.
//
// Inputs:
// PIDescriptorParameters *procs Pointer to Descriptor Parameters suite.
//
// HandleProcs *hProcs Pointer to HandleProcs callback.
//
// PIReadDescriptor *token Pointer to token to close.
//
// procs->descriptor Pointer to original read handle.
//
// Outputs:
// PIReadDescriptor *token Set to NULL.
//
// procs->descriptor Disposed then set to NULL.
//
// returns OSErr noErr or error if one occurred.
//
//-------------------------------------------------------------------------------
 
OSErr HostCloseReader (PIDescriptorParameters *procs,
HandleProcs *hProcs,
PIReadDescriptor *token)
{
// Close token:
OSErr err = procs->readDescriptorProcs->closeReadDescriptorProc(*token);
// Dispose the parameter block descriptor:
hProcs->disposeProc(procs->descriptor);
// Set the descriptor and the read token to NULL:
procs->descriptor = NULL;
*token = NULL;
return err;
 
} // end HostCloseReader
 
//-------------------------------------------------------------------------------
//
// HostCloseWriter
//
// Closes a write token, stores its handle in the global parameter block for
// the host to use, sets the token to NULL, and sets the recordInfo to
// plugInDialogOptional (the default).
//
// The Descriptor Parameters suite are callbacks designed for
// scripting and automation. See PIActions.h.
//
// Inputs:
// PIDescriptorParameters *procs Pointer to Descriptor Parameters suite.
//
// HandleProcs *hProcs Pointer to HandleProcs callback.
//
// PIWriteDescriptor *token Pointer to token to close and pass on.
//
// procs->descriptor Should be NULL. If not, its contents
// will be disposed and replaced.
//
// Outputs:
// PIWriteDescriptor *token Set to NULL.
//
// procs->descriptor Set to descriptor handle.
//
// returns OSErr noErr or error if one occurred.
//
//-------------------------------------------------------------------------------
 
OSErr HostCloseWriter(PIDescriptorParameters *procs,
HandleProcs *hProcs,
PIWriteDescriptor *token)
{
OSErr err = noErr; // assume no error
PIDescriptorHandle h = NULL;
if (procs->descriptor != NULL) // don't need descriptor passed to us
hProcs->disposeProc(procs->descriptor); // dispose.
procs->writeDescriptorProcs->closeWriteDescriptorProc(*token, &h);
procs->descriptor = h;
// Set recordInfo to default. Options are: plugInDialogOptional,
// plugInDialogRequire, plugInDialogNone:
procs->recordInfo = plugInDialogOptional;
 
*token = NULL;
return err;
} // end HostCloseWriter
/trunk/scripting.h
0,0 → 1,167
/* Copyright 1993 - 1999 Adobe Systems Incorporated */
/* All Rights Reserved. */
#include <stddef.h> // Standard definitions.
//#include <Types.h> // Standard types.
 
#include "PITypes.h" // Photoshop types.
#include "PIGeneral.h" // Photoshop general routines.
#include "PIActions.h" // Photoshop scripting.
#include "PIAbout.h" // AboutRecord structure.
#include "PIFormat.h" // AboutRecord structure.
//#include "PIDefines.h" // Plug-in definitions.
//#include "FileUtilities.h" // Simple file utilities.
 
Boolean HostDescriptorAvailable (PIDescriptorParameters *procs,
Boolean *outNewerVersion);
OSErr HostCloseReader (PIDescriptorParameters *procs,
HandleProcs *hProcs,
PIReadDescriptor *token);
OSErr HostCloseWriter(PIDescriptorParameters *procs,
HandleProcs *hProcs,
PIWriteDescriptor *token);
OSErr put_cstring(PIWriteDescriptor token,DescriptorKeyID key,char *s);
char *get_cstring(PIReadDescriptor token);
Boolean ReadScriptParamsOnRead(void);
OSErr WriteScriptParamsOnRead(void);
 
//-------------------------------------------------------------------------------
// PIDescriptorParameters -- Macro definitions
//-------------------------------------------------------------------------------
 
#define NULLID 0 // for ID routines needing null terminator
 
#define DescParams gpb->descriptorParameters
 
#define Reader DescParams->readDescriptorProcs
 
#define Writer DescParams->writeDescriptorProcs
 
#define PlayInfo DescParams->playInfo
 
#define RecordInfo DescParams->recordInfo
 
#define PlayDialog() \
HostPlayDialog (DescParams)
 
#define DescriptorAvailable(outNewerVersion) \
HostDescriptorAvailable(DescParams, outNewerVersion)
 
#define WarnDescriptorAvailable() \
WarnHostDescriptorAvailable(DescParams, hDllInstance)
 
#define OpenReadDesc(desc, array) \
Reader->openReadDescriptorProc(desc, array)
 
#define OpenReader(array) \
OpenReadDesc(DescParams->descriptor, array)
#define CloseReadDesc(token) \
Reader->closeReadDescriptorProc(token)
 
#define CloseReader(token) \
HostCloseReader(DescParams, gpb->handleProcs, token)
#define OpenWriter() \
Writer->openWriteDescriptorProc()
 
#define CloseWriteDesc(token, handle) \
Writer->closeWriteDescriptorProc(token, handle)
 
#define CloseWriter(token) \
HostCloseWriter(DescParams, gpb->handleProcs, token)
 
// These Macros simplify access to all the basic Get and Put routines:
 
#define PIGetKey(token, key, type, flags) \
Reader->getKeyProc(token, key, type, flags)
#define PIGetEnum(token, value) \
Reader->getEnumeratedProc(token, value)
#define PIPutEnum(token, key, type, value) \
Writer->putEnumeratedProc(token, key, type, value)
#define PIGetInt(token, value) \
Reader->getIntegerProc(token, value)
 
#define PIGetPinInt(token, min, max, value) \
Reader->getPinnedIntegerProc(token, min, max, value)
 
#define PIPutInt(token, key, value) \
Writer->putIntegerProc(token, key, value)
#define PIGetFloat(token, value) \
Reader->getFloatProc(token, value)
#define PIGetPinFloat(token, min, max, value) \
Reader->getPinnedFloatProc(token, min, max, value)
 
#define PIPutFloat(token, key, value) \
Writer->putFloatProc(token, key, value)
#define PIGetUnitFloat(token, unit, value) \
Reader->getUnitFloatProc(token, unit, value)
 
#define PIGetPinUnitFloat(token, min, max, unit, value) \
Reader->getPinnedUnitFloatProc(token, min, max, unit, value)
 
#define PIPutUnitFloat(token, key, unit, value) \
Writer->putUnitFloatProc(token, key, unit, value)
#define PIGetBool(token, value) \
Reader->getBooleanProc(token, value)
 
#define PIPutBool(token, key, value) \
Writer->putBooleanProc(token, key, value)
 
#define PIGetText(token, value) \
Reader->getTextProc(token, value)
#define PIPutText(token, key, value) \
Writer->putTextProc(token, key, value)
#define PIGetAlias(token, value) \
Reader->getAliasProc(token, value)
#define PIPutAlias(token, key, value) \
Writer->putAliasProc(token, key, value)
 
#define PIGetEnum(token, value) \
Reader->getEnumeratedProc(token, value)
 
#define PIPutEnum(token, key, type, value) \
Writer->putEnumeratedProc(token, key, type, value)
 
#define PIGetClass(token, value) \
Reader->getClassProc(token, value)
#define PIPutClass(token, key, value) \
Writer->putClassProc(token, key, value)
#define PIGetRef(token, value) \
Reader->getSimpleReferenceProc(token,value)
#define PIPutRef(token, key, value) \
Writer->putSimpleReferenceProc(token, key, value)
#define PIGetObj(token, type, value) \
Reader->getObjectProc(token, type, value)
 
#define PIPutObj(token, key, type, value) \
HostPutObj(DescParams, gpb->handleProcs, token, key, type, value)
 
#define PIPutObjProc(token, key, type, value) \
Writer->putObjectProc(token, key, type, value)
#define PIGetCount(token, value) \
Reader->getCountProc(token, value)
#define PIPutCount(token, key, value) \
Writer->putCountProc(token, key, value)
#define PIGetStr(token, value) \
Reader->getStringProc(token, value)
#define PIPutStr(token, key, value) \
Writer->putStringProc(token, key, value)
/trunk/scripting.r
0,0 → 1,49
#include "AEUserTermTypes.r"
 
#define MSWindows 0
#include "piactions.h"
 
#include "ui.h"
#include "version.h"
 
//-------------------------------------------------------------------------------
// Dictionary (scripting) resource
//-------------------------------------------------------------------------------
 
resource 'aete' (AETE_ID, "", purgeable)
{
1, 0, english, roman, /* aete version and language specifiers */
{
vendorName, /* vendor suite name */
"", /* optional description */
plugInSuiteID, /* suite ID */
1, /* suite code, must be 1 */
1, /* suite level, must be 1 */
{ /* structure for filters */
plugInName, /* unique filter name */
"", /* optional description */
plugInClassID, /* class ID, must be unique or Suite ID */
plugInEventID, /* event ID, must be unique to class ID */
NO_REPLY, /* never a reply */
IMAGE_DIRECT_PARAMETER, /* direct parameter, used by Photoshop */
{ /* parameters here, if any */
"R", PARAM_R_KEY, typeChar, "R channel expression", flagsOptionalSingleParameter,
"G", PARAM_G_KEY, typeChar, "G channel expression", flagsOptionalSingleParameter,
"B", PARAM_B_KEY, typeChar, "B channel expression", flagsOptionalSingleParameter,
"A", PARAM_A_KEY, typeChar, "A channel expression", flagsOptionalSingleParameter,
"ctl0", PARAM_CTL0_KEY, typeInteger, "ctl(0) setting", flagsOptionalSingleParameter,
"ctl1", PARAM_CTL1_KEY, typeInteger, "ctl(1) setting", flagsOptionalSingleParameter,
"ctl2", PARAM_CTL2_KEY, typeInteger, "ctl(2) setting", flagsOptionalSingleParameter,
"ctl3", PARAM_CTL3_KEY, typeInteger, "ctl(3) setting", flagsOptionalSingleParameter,
"ctl4", PARAM_CTL4_KEY, typeInteger, "ctl(4) setting", flagsOptionalSingleParameter,
"ctl5", PARAM_CTL5_KEY, typeInteger, "ctl(5) setting", flagsOptionalSingleParameter,
"ctl6", PARAM_CTL6_KEY, typeInteger, "ctl(6) setting", flagsOptionalSingleParameter,
"ctl7", PARAM_CTL7_KEY, typeInteger, "ctl(7) setting", flagsOptionalSingleParameter,
}
},
{ },
{ },
{ }
}
};
/trunk/symtab.c
0,0 → 1,95
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include <stdio.h>
#include <string.h>
 
#include "symtab.h"
 
unsigned long djb2(char *str);
 
/* following constant (need not) be prime. for a list of prime numbers,
see http://www.utm.edu/research/primes/lists/small/1000.txt */
#define TABLE_SIZE 128 // if you're anticipating many symbols, increase this value!
#define HASH(s) (djb2(s) % TABLE_SIZE)
 
struct sym_rec *hash_table[TABLE_SIZE];
extern struct sym_rec predefs[];
 
// hash function recommended by Ozan Yigit
// http://www.cs.yorku.ca/~oz/hash.html
// "this algorithm (k=33) was first reported by dan bernstein"
unsigned long djb2(char *str){
unsigned long hash = 5381;
int c;
 
while (c = *str++)
hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
 
return hash;
}
 
void init_symtab(struct sym_rec *pre){
struct sym_rec *p;
int i;
 
for(i=TABLE_SIZE;i--;)
hash_table[i] = 0;
for(p=pre;p->name;p++){
if(lookup(p->name))
printf("!!!! duplicate predefined symbol: %s\n",p->name);
insert(p);
}
}
 
void dump_symbols(){
struct sym_rec *p;
int i,occ,maxchain,chain;
 
puts("\nsymbol table:");
for(i=occ=maxchain=0;i<TABLE_SIZE;i++)
if(hash_table[i]){
++occ;
for(p=hash_table[i],chain=0;p;p=p->next){
puts(p->name);
++chain;
}
if(chain>maxchain)
maxchain = chain;
}
printf("# hash stats: occupancy=%d/%d (%.1f%%) longest chain=%d\n",
occ,TABLE_SIZE,(100.*occ)/TABLE_SIZE,maxchain);
}
 
 
struct sym_rec *lookup(char *s){
struct sym_rec *p;
int idx = HASH(s);
// printf("# lookup \"%s\" hash=%5d\n",s,idx);
for(p=hash_table[idx];p;p=p->next)
if(!strcmp(s,p->name))
return p;
return 0; /* not found */
}
void insert(struct sym_rec *p){
int idx = HASH(p->name);
p->next = hash_table[idx];
hash_table[idx] = p;
/* DPRINTF("# insert symbol [%5d] \"%s\"\n",idx,p->name);*/
}
/trunk/symtab.h
0,0 → 1,46
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#ifndef SYMTAB_H
#define SYMTAB_H
 
#include <stdlib.h>
 
#define NEW(P) ( (P) = malloc(sizeof(*(P))) )
 
/* if this type is floating point, then #define FP_VALUE */
typedef long value_type;
typedef value_type (*pfunc_type)(value_type,...);
 
struct sym_rec{
struct sym_rec *next;
int token;
char *name;
 
pfunc_type fn;
value_type *pvar;
};
 
unsigned long djb2(char *str);
struct sym_rec *lookup(char *s);
void init_symtab(struct sym_rec *);
void insert(struct sym_rec *p);
void dump_symbols();
 
#endif
/trunk/sys:cdefs.h
/trunk/test.afs
0,0 → 1,22
%RGB-1.0
98
4
10
 
 
 
 
 
put(val(0,0,30),0),put(val(1,0,get(0)/2),1),put(c2m(((x-x%get(0
))+get(0)/2)-x,((y-y%get(0))+get(0)/2)-y),2),\rget(2)<((get(0)/2
)-get(1))?src(((x-x%get(0))+get(0)/2),((y-y%get(0))+get(0)/2),z
):0
 
get(2)<(get(0)/2-get(1))?src(((x-x%get(0))+get(0)/2),((y-y%get(
0))+get(0)/2),z):0
 
get(2)<(get(0)/2-get(1))?src(((x-x%get(0))+get(0)/2),((y-y%get(
0))+get(0)/2),z):0
 
a
 
/trunk/test.c
+}
\ No newline at end of file
/trunk/test.r
/trunk/testparm.r
/trunk/trigtab.c
0,0 → 1,100
#include "funcs.h"
 
value_type costab[COSTABSIZE] = {
1024, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1022, 1022, 1022, 1021, 1021, 1020, 1020, 1019,
1019, 1018, 1017, 1017, 1016, 1015, 1014, 1013, 1012, 1011, 1010, 1009, 1008, 1007, 1006, 1005,
1004, 1003, 1001, 1000, 999, 997, 996, 994, 993, 991, 990, 988, 986, 985, 983, 981,
979, 978, 976, 974, 972, 970, 968, 966, 964, 962, 959, 957, 955, 953, 950, 948,
946, 943, 941, 938, 936, 933, 930, 928, 925, 922, 920, 917, 914, 911, 908, 906,
903, 900, 897, 894, 890, 887, 884, 881, 878, 875, 871, 868, 865, 861, 858, 854,
851, 847, 844, 840, 837, 833, 829, 826, 822, 818, 814, 811, 807, 803, 799, 795,
791, 787, 783, 779, 775, 771, 767, 762, 758, 754, 750, 745, 741, 737, 732, 728,
724, 719, 715, 710, 706, 701, 696, 692, 687, 683, 678, 673, 668, 664, 659, 654,
649, 644, 639, 634, 629, 625, 620, 615, 609, 604, 599, 594, 589, 584, 579, 574,
568, 563, 558, 553, 547, 542, 537, 531, 526, 521, 515, 510, 504, 499, 493, 488,
482, 477, 471, 466, 460, 454, 449, 443, 437, 432, 426, 420, 414, 409, 403, 397,
391, 386, 380, 374, 368, 362, 356, 350, 344, 339, 333, 327, 321, 315, 309, 303,
297, 291, 285, 279, 273, 267, 260, 254, 248, 242, 236, 230, 224, 218, 212, 205,
199, 193, 187, 181, 175, 168, 162, 156, 150, 144, 137, 131, 125, 119, 112, 106,
100, 94, 87, 81, 75, 69, 62, 56, 50, 43, 37, 31, 25, 18, 12, 6,
0, -6, -12, -18, -25, -31, -37, -43, -50, -56, -62, -69, -75, -81, -87, -94,
-100, -106, -112, -119, -125, -131, -137, -144, -150, -156, -162, -168, -175, -181, -187, -193,
-199, -205, -212, -218, -224, -230, -236, -242, -248, -254, -260, -267, -273, -279, -285, -291,
-297, -303, -309, -315, -321, -327, -333, -339, -344, -350, -356, -362, -368, -374, -380, -386,
-391, -397, -403, -409, -414, -420, -426, -432, -437, -443, -449, -454, -460, -466, -471, -477,
-482, -488, -493, -499, -504, -510, -515, -521, -526, -531, -537, -542, -547, -553, -558, -563,
-568, -574, -579, -584, -589, -594, -599, -604, -609, -615, -620, -625, -629, -634, -639, -644,
-649, -654, -659, -664, -668, -673, -678, -683, -687, -692, -696, -701, -706, -710, -715, -719,
-724, -728, -732, -737, -741, -745, -750, -754, -758, -762, -767, -771, -775, -779, -783, -787,
-791, -795, -799, -803, -807, -811, -814, -818, -822, -826, -829, -833, -837, -840, -844, -847,
-851, -854, -858, -861, -865, -868, -871, -875, -878, -881, -884, -887, -890, -894, -897, -900,
-903, -906, -908, -911, -914, -917, -920, -922, -925, -928, -930, -933, -936, -938, -941, -943,
-946, -948, -950, -953, -955, -957, -959, -962, -964, -966, -968, -970, -972, -974, -976, -978,
-979, -981, -983, -985, -986, -988, -990, -991, -993, -994, -996, -997, -999,-1000,-1001,-1003,
-1004,-1005,-1006,-1007,-1008,-1009,-1010,-1011,-1012,-1013,-1014,-1015,-1016,-1017,-1017,-1018,
-1019,-1019,-1020,-1020,-1021,-1021,-1022,-1022,-1022,-1023,-1023,-1023,-1023,-1023,-1023,-1023,
-1024,-1023,-1023,-1023,-1023,-1023,-1023,-1023,-1022,-1022,-1022,-1021,-1021,-1020,-1020,-1019,
-1019,-1018,-1017,-1017,-1016,-1015,-1014,-1013,-1012,-1011,-1010,-1009,-1008,-1007,-1006,-1005,
-1004,-1003,-1001,-1000, -999, -997, -996, -994, -993, -991, -990, -988, -986, -985, -983, -981,
-979, -978, -976, -974, -972, -970, -968, -966, -964, -962, -959, -957, -955, -953, -950, -948,
-946, -943, -941, -938, -936, -933, -930, -928, -925, -922, -920, -917, -914, -911, -908, -906,
-903, -900, -897, -894, -890, -887, -884, -881, -878, -875, -871, -868, -865, -861, -858, -854,
-851, -847, -844, -840, -837, -833, -829, -826, -822, -818, -814, -811, -807, -803, -799, -795,
-791, -787, -783, -779, -775, -771, -767, -762, -758, -754, -750, -745, -741, -737, -732, -728,
-724, -719, -715, -710, -706, -701, -696, -692, -687, -683, -678, -673, -668, -664, -659, -654,
-649, -644, -639, -634, -629, -625, -620, -615, -609, -604, -599, -594, -589, -584, -579, -574,
-568, -563, -558, -553, -547, -542, -537, -531, -526, -521, -515, -510, -504, -499, -493, -488,
-482, -477, -471, -466, -460, -454, -449, -443, -437, -432, -426, -420, -414, -409, -403, -397,
-391, -386, -380, -374, -368, -362, -356, -350, -344, -339, -333, -327, -321, -315, -309, -303,
-297, -291, -285, -279, -273, -267, -260, -254, -248, -242, -236, -230, -224, -218, -212, -205,
-199, -193, -187, -181, -175, -168, -162, -156, -150, -144, -137, -131, -125, -119, -112, -106,
-100, -94, -87, -81, -75, -69, -62, -56, -50, -43, -37, -31, -25, -18, -12, -6,
0, 6, 12, 18, 25, 31, 37, 43, 50, 56, 62, 69, 75, 81, 87, 94,
100, 106, 112, 119, 125, 131, 137, 144, 150, 156, 162, 168, 175, 181, 187, 193,
199, 205, 212, 218, 224, 230, 236, 242, 248, 254, 260, 267, 273, 279, 285, 291,
297, 303, 309, 315, 321, 327, 333, 339, 344, 350, 356, 362, 368, 374, 380, 386,
391, 397, 403, 409, 414, 420, 426, 432, 437, 443, 449, 454, 460, 466, 471, 477,
482, 488, 493, 499, 504, 510, 515, 521, 526, 531, 537, 542, 547, 553, 558, 563,
568, 574, 579, 584, 589, 594, 599, 604, 609, 615, 620, 625, 629, 634, 639, 644,
649, 654, 659, 664, 668, 673, 678, 683, 687, 692, 696, 701, 706, 710, 715, 719,
724, 728, 732, 737, 741, 745, 750, 754, 758, 762, 767, 771, 775, 779, 783, 787,
791, 795, 799, 803, 807, 811, 814, 818, 822, 826, 829, 833, 837, 840, 844, 847,
851, 854, 858, 861, 865, 868, 871, 875, 878, 881, 884, 887, 890, 894, 897, 900,
903, 906, 908, 911, 914, 917, 920, 922, 925, 928, 930, 933, 936, 938, 941, 943,
946, 948, 950, 953, 955, 957, 959, 962, 964, 966, 968, 970, 972, 974, 976, 978,
979, 981, 983, 985, 986, 988, 990, 991, 993, 994, 996, 997, 999, 1000, 1001, 1003,
1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1017, 1018,
1019, 1019, 1020, 1020, 1021, 1021, 1022, 1022, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023,},
tantab[TANTABSIZE] = {
-2147483648,-166883,-83438,-55622,-41713,-33366,-27801,-23826,-20843,-18524,-16667,-15148,-13882,-12810,-11891,-11094,
-10396,-9781,-9233,-8743,-8302,-7902,-7539,-7207,-6903,-6622,-6364,-6124,-5901,-5693,-5499,-5318,
-5147,-4987,-4836,-4694,-4560,-4432,-4311,-4197,-4088,-3984,-3885,-3790,-3700,-3613,-3531,-3451,
-3375,-3302,-3232,-3164,-3099,-3036,-2976,-2918,-2861,-2807,-2754,-2703,-2654,-2606,-2560,-2515,
-2472,-2429,-2388,-2348,-2310,-2272,-2235,-2199,-2165,-2131,-2098,-2065,-2034,-2003,-1973,-1944,
-1915,-1887,-1860,-1833,-1807,-1782,-1756,-1732,-1708,-1684,-1661,-1639,-1617,-1595,-1574,-1553,
-1532,-1512,-1492,-1473,-1453,-1435,-1416,-1398,-1380,-1363,-1345,-1328,-1312,-1295,-1279,-1263,
-1247,-1232,-1216,-1201,-1187,-1172,-1158,-1143,-1129,-1115,-1102,-1088,-1075,-1062,-1049,-1036,
-1023,-1011, -999, -986, -974, -963, -951, -939, -928, -916, -905, -894, -883, -872, -861, -850,
-840, -829, -819, -809, -799, -789, -779, -769, -759, -749, -740, -730, -721, -711, -702, -693,
-684, -675, -666, -657, -648, -639, -630, -622, -613, -605, -596, -588, -580, -571, -563, -555,
-547, -539, -531, -523, -515, -507, -499, -492, -484, -476, -469, -461, -453, -446, -438, -431,
-424, -416, -409, -402, -395, -387, -380, -373, -366, -359, -352, -345, -338, -331, -324, -317,
-310, -303, -296, -290, -283, -276, -269, -263, -256, -249, -243, -236, -229, -223, -216, -210,
-203, -197, -190, -184, -177, -171, -164, -158, -151, -145, -139, -132, -126, -119, -113, -107,
-100, -94, -88, -81, -75, -69, -62, -56, -50, -44, -37, -31, -25, -18, -12, -6,
0, 6, 12, 18, 25, 31, 37, 44, 50, 56, 62, 69, 75, 81, 88, 94,
100, 107, 113, 119, 126, 132, 139, 145, 151, 158, 164, 171, 177, 184, 190, 197,
203, 210, 216, 223, 229, 236, 243, 249, 256, 263, 269, 276, 283, 290, 296, 303,
310, 317, 324, 331, 338, 345, 352, 359, 366, 373, 380, 387, 395, 402, 409, 416,
424, 431, 438, 446, 453, 461, 469, 476, 484, 492, 499, 507, 515, 523, 531, 539,
547, 555, 563, 571, 580, 588, 596, 605, 613, 622, 630, 639, 648, 657, 666, 675,
684, 693, 702, 711, 721, 730, 740, 749, 759, 769, 779, 789, 799, 809, 819, 829,
840, 850, 861, 872, 883, 894, 905, 916, 928, 939, 951, 963, 974, 986, 999, 1011,
1023, 1036, 1049, 1062, 1075, 1088, 1102, 1115, 1129, 1143, 1158, 1172, 1187, 1201, 1216, 1232,
1247, 1263, 1279, 1295, 1312, 1328, 1345, 1363, 1380, 1398, 1416, 1435, 1453, 1473, 1492, 1512,
1532, 1553, 1574, 1595, 1617, 1639, 1661, 1684, 1708, 1732, 1756, 1782, 1807, 1833, 1860, 1887,
1915, 1944, 1973, 2003, 2034, 2065, 2098, 2131, 2165, 2199, 2235, 2272, 2310, 2348, 2388, 2429,
2472, 2515, 2560, 2606, 2654, 2703, 2754, 2807, 2861, 2918, 2976, 3036, 3099, 3164, 3232, 3302,
3375, 3451, 3531, 3613, 3700, 3790, 3885, 3984, 4088, 4197, 4311, 4432, 4560, 4694, 4836, 4987,
5147, 5318, 5499, 5693, 5901, 6124, 6364, 6622, 6903, 7207, 7539, 7902, 8302, 8743, 9233, 9781,
10396,11094,11891,12810,13882,15148,16667,18524,20843,23826,27801,33366,41713,55622,83438,166883,};
/trunk/ui.c
0,0 → 1,426
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
/* This is PLATFORM INDEPENDENT user interface code - mainly dialog logic */
 
#include "ff.h"
 
#include "node.h"
#include "parser.h"
#include "funcs.h"
#include "y.tab.h"
#include "choosefile.h"
#include "sprintf_tiny.h"
 
#ifdef MAC_ENV
#include <files.h>
#include <plstringfuncs.h>
#define GETSLIDERVALUE GetDlgControlValue
#define SETSLIDERVALUE SetDlgControlValue
#define GETCTLTEXT getctltext
#define SETCTLTEXT setctltext
#define GETCTLTEXTINT getctltextint
#define SETCTLTEXTINT setctltextint
#define SELECTCTLTEXT selectctltext
#else
#include <commctrl.h>
#include "compat_string.h"
#define GETSLIDERVALUE(d,i) SendDlgItemMessage(d,i,TBM_GETPOS,0,0)
#define SETSLIDERVALUE(d,i,v) SendDlgItemMessage(d,i,TBM_SETPOS,TRUE,v)
#define GETCTLTEXT GetDlgItemText
#define SETCTLTEXT SetDlgItemText
#define SELECTCTLTEXT SELECTDLGITEMTEXT
#define GETCTLTEXTINT GetDlgItemInt
#define SETCTLTEXTINT SetDlgItemInt
#endif
 
Boolean doupdates = true;
double zoomfactor,fitzoom;
 
void updateglobals(DIALOGREF dp);
struct node *updateexpr(DIALOGREF dp,int i);
void updatedialog(DIALOGREF dp);
void slidertextchanged(DIALOGREF dp,int item);
void updatezoom(DIALOGREF dp);
 
void updatedialog(DIALOGREF dp){
int i;
 
doupdates = false;
 
for( i=0 ; i<8 ; ++i ){
SETSLIDERVALUE(dp,FIRSTCTLITEM+i,slider[i]);
SETCTLTEXTINT(dp,FIRSTCTLTEXTITEM+i,slider[i],false);
}
 
for( i=0 ; i<4 ; ++i ){
if(!gdata->standalone) SETCTLTEXT(dp,FIRSTEXPRITEM+i,expr[i] ? expr[i] : "oups! expr[i] is nil!");
if(i<nplanes)
updateexpr(dp,FIRSTEXPRITEM+i);
}
 
if(!gdata->standalone) SELECTCTLTEXT(dp,FIRSTEXPRITEM,0,-1);
 
doupdates = true;
}
 
/* copy dialog settings to global variables (sliders, expressions) */
 
void updateglobals(DIALOGREF dp){
int i;
char s[MAXEXPR+1];
 
for( i=0 ; i<8 ; ++i )
slider[i] = GETSLIDERVALUE(dp,FIRSTCTLITEM+i);
 
if(!gdata->standalone)
for( i=0 ; i<4 ; ++i ){
/* stash expression strings */
if(GETCTLTEXT(dp,FIRSTEXPRITEM+i,s,MAXEXPR)){
if(expr[i])
free(expr[i]);
if(!(expr[i] = my_strdup(s)))
dbg("updateglobals: my_strdup returned zero??");
}else
dbg("updateglobals: GETCTLTEXT returned zero??");
}
}
 
struct node *updateexpr(DIALOGREF dp,int item){
char s[MAXEXPR+1];
int i;
 
//dbg("updateexpr");
 
i = item - FIRSTEXPRITEM;
 
freetree(tree[i]);
 
if(!gdata->standalone){
GETCTLTEXT(dp,item,s,MAXEXPR);
if(expr[i])
free(expr[i]);
expr[i] = my_strdup(s);
}
 
tree[i] = parseexpr(expr[i]);
if(!gdata->standalone){
if(tree[i])
HideDialogItem(dp,FIRSTICONITEM+i);
else{
err[i] = errstr;
errstart[i] = tokstart;
errpos[i] = tokpos;
ShowDialogItem(dp,FIRSTICONITEM+i);
}
}
return tree[i];
}
 
void updatezoom(DIALOGREF dp){
char s[10],*q = int_str(s,(int)(100./zoomfactor),10);
*q++ = '%';
*q = 0;
SETCTLTEXT(dp,ZOOMLEVELITEM,s);
zoomfactor > 1. ? ShowDialogItem(dp,ZOOMINITEM) : HideDialogItem(dp,ZOOMINITEM);
zoomfactor < fitzoom ? ShowDialogItem(dp,ZOOMOUTITEM) : HideDialogItem(dp,ZOOMOUTITEM);
}
 
/* traverse expression tree, looking for constant references to sliders */
 
int checksl(struct node*p,int ctlflags[],int mapflags[]);
int checksl(struct node*p,int ctlflags[],int mapflags[]){
if(p){
int s;
if( (p->kind==TOK_FN1 && p->v.sym->fn == (pfunc_type)ff_ctl)
|| (p->kind==TOK_FN3 && p->v.sym->fn == (pfunc_type)ff_val) ){
if(p->child[0]->kind == TOK_NUM){
s = p->child[0]->v.value;
if(s>=0 && s<=7)
ctlflags[s] = 1;
}else
return true; /* can't determine which ctl() */
}else if( p->kind==TOK_FN2 && p->v.sym->fn == (pfunc_type)ff_map )
if(p->child[0]->kind == TOK_NUM){
s = p->child[0]->v.value;
if(s>=0 && s<=3){
mapflags[s] = 1;
ctlflags[s*2] = ctlflags[s*2+1] = 1;
}
}else
return true; /* can't determine which map() */
 
return checksl(p->child[0],ctlflags,mapflags)
|| checksl(p->child[1],ctlflags,mapflags)
|| checksl(p->child[2],ctlflags,mapflags)
|| checksl(p->child[3],ctlflags,mapflags)
|| checksl(p->child[4],ctlflags,mapflags);
}else return false;
}
 
Boolean checksliders(int exprs,int ctlflags[],int mapflags[]){
int i,f = false;
 
for(i=4;i--;)
mapflags[i] = 0;
for(i=8;i--;)
ctlflags[i] = 0;
 
for(i=0;i<exprs;i++)
if(checksl(tree[i],ctlflags,mapflags))
f = true;
 
return f;
}
 
void slidermoved(DIALOGREF dp,int i){
int v = GETSLIDERVALUE(dp,i);
i -= FIRSTCTLITEM;
slider[i] = v;
SETCTLTEXTINT(dp,i+FIRSTCTLTEXTITEM,v,false);
}
 
void slidertextchanged(DIALOGREF dp,int i){
int v = GETCTLTEXTINT(dp,i,NULL,false);
i -= FIRSTCTLTEXTITEM;
SETSLIDERVALUE(dp,i+FIRSTCTLITEM,v);
slider[i] = v;
}
 
void maindlgupdate(DIALOGREF dp){
int i,unknown,ctls[8],maps[4];
 
unknown = checksliders(nplanes,ctls,maps);
 
for(i=0;i<8;i++)
if(unknown || ctls[i]){
ENABLEDLGITEM(dp,FIRSTCTLITEM+i);
ShowDialogItem(dp,FIRSTCTLTEXTITEM+i); /* FIXME: this changes keyboard focus */
}else{
DISABLEDLGITEM(dp,FIRSTCTLITEM+i);
HideDialogItem(dp,FIRSTCTLTEXTITEM+i); /* FIXME: this changes keyboard focus */
}
 
for( i=0 ; i<nplanes ; i++ )
if(!tree[i]){
/* uh oh, couldn't parse one of the saved expressions...this is fatal */
DISABLEDLGITEM(dp,IDOK);
if(gdata->standalone){
alertuser("Can't run this filter (there is a problem with the saved expressions).","");
}else{
DISABLEDLGITEM(dp,SAVEITEM);
DISABLEDLGITEM(dp,MAKEITEM);
}
return;
}
 
/* we have valid expression trees in all slots...proceed! */
updateglobals(dp);
if(setup(gpb))
recalc_preview(gpb,dp);
 
ENABLEDLGITEM(dp,IDOK);
if(!gdata->standalone){
ENABLEDLGITEM(dp,SAVEITEM);
ENABLEDLGITEM(dp,MAKEITEM);
}
}
 
/* one-time initialisation of dialog box */
 
void maindlginit(DIALOGREF dp){
char s[0x100];
extern char *defaultexpr[];
int i;
 
/* hide unused expression items */
if(gdata->standalone){
myp2cstrcpy(s,gdata->parm.author); SetDlgItemText(dp,PARAMAUTHORITEM,s);
myp2cstrcpy(s,gdata->parm.copyright); SetDlgItemText(dp,PARAMCOPYITEM,s);
for(i=0;i<8;++i){
if(gdata->parm.ctl_used[i]){
myp2cstrcpy(s,gdata->parm.ctl[i]); SetDlgItemText(dp,FIRSTCTLLABELITEM+i,s);
}else if(gdata->parm.map_used[i/2]){
if(i&1)
HideDialogItem(dp,FIRSTCTLLABELITEM+i);
else{
myp2cstrcpy(s,gdata->parm.map[i/2]); SetDlgItemText(dp,FIRSTCTLLABELITEM+i,s);
}
}else{
HideDialogItem(dp,FIRSTCTLITEM+i);
HideDialogItem(dp,FIRSTCTLTEXTITEM+i);
HideDialogItem(dp,FIRSTCTLLABELITEM+i);
}
}
}else
for(i=nplanes;i<4;++i){
HideDialogItem(dp,FIRSTICONITEM+i);
HideDialogItem(dp,FIRSTEXPRITEM+i);
HideDialogItem(dp,FIRSTLABELITEM+i);
}
 
if(setup_preview(gpb)){
extern int preview_w,preview_h;
double zh = (gpb->filterRect.right-gpb->filterRect.left)/(double)preview_w,
zv = (gpb->filterRect.bottom-gpb->filterRect.top)/(double)preview_h;
fitzoom = zh > zv ? zh : zv;
zoomfactor = fitzoom;
updatezoom(dp);
}else{
HideDialogItem(dp,ZOOMINITEM);
HideDialogItem(dp,ZOOMOUTITEM);
HideDialogItem(dp,ZOOMLEVELITEM);
}
#ifdef WIN_ENV
// can't build standalone filter on less than NT platform :-(
// due to absence of resource editing API (UpdateResource etc)
if(!isWin32NT())
HideDialogItem(dp,MAKEITEM);
#endif
 
updatedialog(dp);
maindlgupdate(dp);
}
 
 
/* process an item hit. return false if the dialog is finished; otherwise return true. */
 
Boolean maindlgitem(DIALOGREF dp,int item){
StandardFileReply sfr;
NavReplyRecord reply;
static char filefilters[] =
"All supported files (.AFS, .8BF, .TXT)\0*.AFS;*.8BF;*.TXT\0All files (*.*)\0*.*\0\0";
static OSType types[] = {TEXT_FILETYPE,PS_FILTER_FILETYPE};
Boolean readok = false;
char *reason;
Str255 fname;
 
switch(item){
case IDOK:
// updateglobals(dp);
case IDCANCEL:
dispose_preview();
return false; // end dialog
case OPENITEM:
if(!gdata->standalone && choosefiletypes("\pChoose filter settings",&sfr,&reply,types,2,filefilters)){
if(loadfile(&sfr,&reason)){
updatedialog(dp);
maindlgupdate(dp);
}else alertuser("Cannot load settings.",reason);
}
break;
case SAVEITEM:
if(!gdata->standalone && putfile("\pSave filter settings","\p",
TEXT_FILETYPE,SIG_SIMPLETEXT,&reply,&sfr)){
// updateglobals(dp);
if(savefile(&sfr))
completesave(&reply);
}
break;
case MAKEITEM:
if( !gdata->standalone && builddialog(gpb) ){
PLstrcpy(fname,gdata->parm.title);
#ifdef WIN_ENV
PLstrcat(fname,(StringPtr)"\p.8bf");
#endif
if( putfile("\pMake standalone filter",fname,
PS_FILTER_FILETYPE,kPhotoshopSignature,&reply,&sfr ) )
make_standalone(&sfr);
}
break;
case ZOOMINITEM:
// zoomfactor = zoomfactor/2.;
zoomfactor = zoomfactor>2. ? zoomfactor/2. : 1.;
updatezoom(dp);
recalc_preview(gpb,dp);
break;
case ZOOMOUTITEM:
zoomfactor *= 2.;
if(zoomfactor > fitzoom)
zoomfactor = fitzoom;
updatezoom(dp);
recalc_preview(gpb,dp);
break;
case ZOOMLEVELITEM:
zoomfactor = (zoomfactor == fitzoom) ? 1. : fitzoom;
updatezoom(dp);
recalc_preview(gpb,dp);
break;
case FIRSTCTLITEM:
case FIRSTCTLITEM+1:
case FIRSTCTLITEM+2:
case FIRSTCTLITEM+3:
case FIRSTCTLITEM+4:
case FIRSTCTLITEM+5:
case FIRSTCTLITEM+6:
case FIRSTCTLITEM+7:
slidermoved(dp,item);
recalc_preview(gpb,dp);
break;
case FIRSTCTLTEXTITEM:
case FIRSTCTLTEXTITEM+1:
case FIRSTCTLTEXTITEM+2:
case FIRSTCTLTEXTITEM+3:
case FIRSTCTLTEXTITEM+4:
case FIRSTCTLTEXTITEM+5:
case FIRSTCTLTEXTITEM+6:
case FIRSTCTLTEXTITEM+7:
slidertextchanged(dp,item);
recalc_preview(gpb,dp);
break;
case FIRSTICONITEM:
case FIRSTICONITEM+1:
case FIRSTICONITEM+2:
case FIRSTICONITEM+3:
item -= FIRSTICONITEM;
alertuser(err[item],"");
SELECTCTLTEXT(dp,FIRSTEXPRITEM+item,errstart[item],errpos[item]);
break;
case FIRSTEXPRITEM:
case FIRSTEXPRITEM+1:
case FIRSTEXPRITEM+2:
case FIRSTEXPRITEM+3:
// dbg("expritem hit");
if( (item-FIRSTEXPRITEM)<nplanes ){
updateexpr(dp,item);
maindlgupdate(dp);
}
break;
}
 
return true; // keep going
}
 
Boolean alertuser(char *err,char *more){
char *s = malloc(strlen(err)+strlen(more)+2),*q;
Boolean res;
q = cat(s,err);
*q++ = '\n';
q = cat(q,more);
*q = 0;
res = simplealert(s);
free(s);
return res;
}
/trunk/ui.h
0,0 → 1,125
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
/* Main dialog */
#define OPENITEM 3
#define PARAMAUTHORITEM 3
#define SAVEITEM 4
#define PARAMCOPYITEM 4
#define MAKEITEM 5
 
#define PREVIEWITEM 6
#define ZOOMINITEM 7
#define ZOOMOUTITEM 8
#define ZOOMLEVELITEM 9
 
#define FIRSTCTLLABELITEM 10
#define FIRSTCTLITEM 18
#define FIRSTCTLTEXTITEM 26
#define FIRSTLABELITEM 34
#define FIRSTICONITEM 38
#define FIRSTEXPRITEM 42
 
/* Build dialog */
#define CATEGORYITEM 3
#define TITLEITEM 4
#define COPYRIGHTITEM 5
#define AUTHORITEM 6
#define FIRSTMAPNAMEITEM 7
#define FIRSTCTLNAMEITEM 11
#define FIRSTMAPCHECKITEM 19
#define FIRSTCTLCHECKITEM 23
#define PROTECTITEM 31
 
#define SLIDERPAGE 16
 
#define ID_ABOUTDLG 16000
#define ID_ABOUTSTANDALONEDLG 16005
#define ID_MAINDLG 16001
#define ID_SYNTAXALERT 16002
#define ID_BUILDDLG 16003
#define ID_PARAMDLG 16004
 
#define ID_SLIDERCTL 16000
#define ID_TEXTCTL 16001
 
#define ID_CAUTIONPICT 16000
#define ID_ZOOMINPICT 16001
#define ID_ZOOMOUTPICT 16002
#define ID_HANDCURSOR 16000
 
/* --- constants for terminology (scripting) resource */
#define AETE_ID 16000
#define vendorName "Telegraphics"
#define plugInSuiteID 'tELE'
#define plugInClassID 'fiFo'
#define plugInEventID plugInClassID //typeNull // must be this
 
#define PARAM_R_KEY 'xprR'
#define PARAM_G_KEY 'xprG'
#define PARAM_B_KEY 'xprB'
#define PARAM_A_KEY 'xprA'
 
#define PARAM_CTL0_KEY 'cTl0' // some naughty parts of the code assume
#define PARAM_CTL1_KEY 'cTl1' // these are numerically sequential
#define PARAM_CTL2_KEY 'cTl2'
#define PARAM_CTL3_KEY 'cTl3'
#define PARAM_CTL4_KEY 'cTl4'
#define PARAM_CTL5_KEY 'cTl5'
#define PARAM_CTL6_KEY 'cTl6'
#define PARAM_CTL7_KEY 'cTl7'
/* --- */
 
#ifndef RC_INVOKED
#ifndef Rez
 
#include "world.h"
#include "piabout.h"
#include "pifilter.h"
#include "ui_compat.h"
enum{
MAXEXPR = 1024,
};
void DoAbout(AboutRecordPtr prec);
Boolean maindialog(FilterRecordPtr pb);
Boolean builddialog(FilterRecordPtr pb);
Boolean simplealert(char *s);
Boolean setup_preview(FilterRecordPtr pb);
void recalc_preview(FilterRecordPtr pb,DIALOGREF dp);
void dispose_preview();
OSErr drawpreview(DIALOGREF dp,void *hdc,Ptr imageptr);
// platform independent
Boolean alertuser(char *err,char *more);
void maindlginit(DIALOGREF dp);
Boolean maindlgitem(DIALOGREF dp,int item);
void maindlgupdate(DIALOGREF dp);
void slidermoved(DIALOGREF dp,int item);
Boolean checksliders(int exprs,int ctlflags[],int mapflags[]);
void builddlginit(DIALOGREF dp);
Boolean builddlgitem(DIALOGREF dp,int item);
 
#endif
#endif
/trunk/ui_build.c
0,0 → 1,121
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
/* This is PLATFORM INDEPENDENT user interface code - mainly dialog logic */
 
#include "ff.h"
 
int ctls[8],maps[4];
 
/* one-time initialisation of dialog box */
 
void builddlginit(DIALOGREF dp){
int i;
char s[0x100];
 
if(gdata->parmloaded){
SetDlgItemText(dp,CATEGORYITEM, INPLACEP2CSTR(gdata->parm.category));
SetDlgItemText(dp,TITLEITEM, INPLACEP2CSTR(gdata->parm.title));
SetDlgItemText(dp,COPYRIGHTITEM,INPLACEP2CSTR(gdata->parm.copyright));
SetDlgItemText(dp,AUTHORITEM, INPLACEP2CSTR(gdata->parm.author));
for(i=0;i<4;++i){
SetDlgItemText(dp,FIRSTMAPNAMEITEM+i,INPLACEP2CSTR(gdata->parm.map[i]));
}
for(i=0;i<8;++i){
SetDlgItemText(dp,FIRSTCTLNAMEITEM+i,INPLACEP2CSTR(gdata->parm.ctl[i]));
}
}else{
/* strictly speaking this is not needed on the Mac,
we can set initial values statically in the rez description */
SetDlgItemText(dp,CATEGORYITEM, "Filter Foundry");
SetDlgItemText(dp,TITLEITEM, "Untitled");
SetDlgItemText(dp,COPYRIGHTITEM,""); //"Filter Foundry Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au");
SetDlgItemText(dp,AUTHORITEM, "Anonymous");
strcpy(s,"Map X");
for(i=0;i<4;++i){
s[4] = '0'+i;
SetDlgItemText(dp,FIRSTMAPNAMEITEM+i,s);
}
strcpy(s,"ctl(X)");
for(i=0;i<8;++i){
s[4] = '0'+i;
SetDlgItemText(dp,FIRSTCTLNAMEITEM+i,s);
}
}
 
if(!checksliders(4,ctls,maps)){
for(i=4;i--;){
DISABLEDLGITEM(dp,FIRSTMAPCHECKITEM+i);
if(maps[i])
CHECKDLGBUTTON(dp,FIRSTMAPCHECKITEM+i,true);
else
HideDialogItem(dp,FIRSTMAPNAMEITEM+i);
}
for(i=8;i--;){
DISABLEDLGITEM(dp,FIRSTCTLCHECKITEM+i);
if(ctls[i])
CHECKDLGBUTTON(dp,FIRSTCTLCHECKITEM+i,true);
else
HideDialogItem(dp,FIRSTCTLNAMEITEM+i);
}
}
 
SELECTDLGITEMTEXT(dp,TITLEITEM,0,-1);
}
 
 
/* process an item hit. return false if the dialog is finished; otherwise return true. */
 
Boolean builddlgitem(DIALOGREF dp,int item){
enum{MAXFIELD=0x100};
char s[MAXFIELD+1];
int i,needui;
 
switch(item){
case IDOK:
memset(&gdata->parm,0,sizeof(PARM_T));
GetDlgItemText(dp,CATEGORYITEM,s,MAXFIELD); myc2pstrcpy(gdata->parm.category,s);
GetDlgItemText(dp,TITLEITEM,s,MAXFIELD); myc2pstrcpy(gdata->parm.title,s);
GetDlgItemText(dp,COPYRIGHTITEM,s,MAXFIELD); myc2pstrcpy(gdata->parm.copyright,s);
GetDlgItemText(dp,AUTHORITEM,s,MAXFIELD); myc2pstrcpy(gdata->parm.author,s);
gdata->parm.cbSize = PARM_SIG;
gdata->parm.nVersion = 1; //0=original FF, 1=standalone filter
for(i=needui=0;i<8;++i){
gdata->parm.val[i] = slider[i];
needui |= (gdata->parm.ctl_used[i] = ctls[i]);
GetDlgItemText(dp,FIRSTCTLNAMEITEM+i,s,MAXFIELD); myc2pstrcpy(gdata->parm.ctl[i],s);
}
for(i=0;i<4;++i){
gdata->parm.map_used[i] = maps[i];
GetDlgItemText(dp,FIRSTMAPNAMEITEM+i,s,MAXFIELD); myc2pstrcpy(gdata->parm.map[i],s);
strcpy(gdata->parm.formula[i],expr[i] ? expr[i] : "bug! see builddlgitem");
}
gdata->parm.popDialog = needui; //true if need to pop a parameter dialog
gdata->parm.unknown1 = gdata->parm.unknown2 = gdata->parm.unknown3 = 0;
gdata->parm.iProtected = ISDLGBUTTONCHECKED(dp,PROTECTITEM); // == 1 means protected
case IDCANCEL:
return false; // end dialog
case PROTECTITEM:
CHECKDLGBUTTON(dp,PROTECTITEM, ISDLGBUTTONCHECKED(dp,PROTECTITEM) ^ 1);
break;
}
 
return true; // keep going
}
/trunk/ui_build_win.c
0,0 → 1,46
/* Win32 user interface routines
Copyright (C) 2003-4 Toby Thain <toby@telegraphics.com.au> */
 
#include "world.h"
 
#include "piabout.h"
 
#include <windows.h>
#include <commctrl.h>
 
#include "ff.h"
#include "version.h"
 
extern HANDLE hDllInstance;
 
BOOL CALLBACK builddlgproc(HWND hDlg, UINT wMsg, WPARAM wParam, LPARAM lParam);
 
BOOL CALLBACK builddlgproc(HWND hDlg, UINT wMsg, WPARAM wParam, LPARAM lParam){
int item;
 
switch(wMsg){
case WM_INITDIALOG:
centre_window(hDlg);
builddlginit(hDlg);
break;
case WM_COMMAND:
item = LOWORD(wParam);
switch(HIWORD(wParam)){
case BN_CLICKED:
if(!builddlgitem(hDlg,item))
EndDialog(hDlg,item);
break;
}
break;
default:
return false;
}
 
return true;
}
 
Boolean builddialog(FilterRecordPtr pb){
PlatformData *p = pb->platformData;
return DialogBoxParam(hDllInstance,MAKEINTRESOURCE(ID_BUILDDLG),
(HWND)p->hwnd,builddlgproc,0) == IDOK;
}
/trunk/ui_mac.c
0,0 → 1,262
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include <controls.h>
#include <controldefinitions.h>
#include <dialogs.h>
#include <resources.h>
#include <textutils.h>
 
#include "str.h"
 
#include "ff.h"
 
extern PSPixelMap preview_pmap;
extern PSPixelMask preview_pmask;
extern Handle preview_handle;
extern UIRECT preview_rect;
extern int preview_w,preview_h;
 
extern Point preview_scroll;
 
CursHandle handcursor,ibeamcursor;
ControlActionUPP action_UPP,indaction_UPP;
DIALOGREF thedialog;
ControlRef exprctls[4];
int trackingitem;
extern double zoomfactor;
 
pascal void preview_item(DialogRef dp,DialogItemIndex item);
pascal void slideraction(ControlRef theControl,short partCode);
pascal Boolean sliderfilter(DialogRef dialog,EventRecord *event,short *item);
 
void DoAbout(AboutRecordPtr prec){
PARM_T p;
char *reason;
Handle h = Get1Resource(PARM_TYPE,PARM_ID);
ModalFilterUPP filterproc_UPP = NewModalFilterUPP(aboutfilter);
 
if(h){
HLock(h);
readPARM(*h,&p,&reason);
ParamText(p.title,p.author,p.copyright,NULL);
}
Alert(h ? ID_ABOUTSTANDALONEDLG : ID_ABOUTDLG,filterproc_UPP);
DisposeModalFilterUPP(filterproc_UPP);
if(h)
ReleaseResource(h);
}
 
Boolean simplealert(char *s){
int i;
 
myc2pstr(s);
ParamText((StringPtr)s,NULL,NULL,NULL);
i = StopAlert(ID_SYNTAXALERT,NULL);
myp2cstr((StringPtr)s);
return i == ok;
}
 
pascal void preview_item(DialogRef dp,DialogItemIndex item){
GrafPtr port;
extern int recalcpreview;
ENTERCALLBACK();
 
GetPort(&port);
SetPortDialogPort(dp);
 
drawpreview(dp,0,PILOCKHANDLE(preview_handle,false));
PIUNLOCKHANDLE(preview_handle);
 
FrameRect(&preview_rect);
SetPort(port);
 
EXITCALLBACK();
}
 
/*
NOTE ON CONTROL ACTION PROCS
 
When using the TrackControl() call when tracking an indicator, the actionProc parameter
(type ControlActionUPP) should be replaced by a parameter of type DragGrayRgnUPP
(see Quickdraw.h).
 
If, however, you are using the live feedback variants of scroll bars or sliders, you
must pass a ControlActionUPP in when tracking the indicator as well. This functionality
is available in Appearance 1.0 or later.
*/
 
pascal void slideraction(ControlRef theControl,short partCode){
int old,delta; // [] = {-10,10,-143,143};
 
ENTERCALLBACK();
 
if(partCode){
if(partCode != kControlIndicatorPart){
switch(partCode){
case kControlUpButtonPart: delta = -1; break;
case kControlDownButtonPart: delta = 1; break;
case kControlPageUpPart: delta = -SLIDERPAGE; break;
case kControlPageDownPart: delta = SLIDERPAGE; break;
}
SetControlValue(theControl,(old = GetControlValue(theControl)) + delta);
}
slidermoved(thedialog,trackingitem);
recalc_preview(gpb,thedialog);
}
 
EXITCALLBACK();
}
 
pascal Boolean sliderfilter(DialogRef dialog,EventRecord *event,short *item){
int i;
short part;
ControlHandle c;
Point pt,origscroll,newscroll;
Boolean result = false,f;
EventRecord ev;
GrafPtr oldport;
ControlRef focus;
 
ENTERCALLBACK();
 
GetPort(&oldport);
SetPortDialogPort(dialog);
 
/* !(result = standardfilter(dialog,event,item)) && */
 
if(!event->what)
gpb->processEvent(event); // pass null events to Photoshop
if(event->what == updateEvt && (WindowRef)event->message != GetDialogWindow(dialog)){
// pass Photoshop update events for its windows
gpb->processEvent(event);
result = false;
}else if( event->what == mouseDown ){
 
pt = event->where;
GlobalToLocal(&pt);
i = trackingitem = FindDialogItem(dialog,pt)+1;
/* if( (c = FindControlUnderMouse(pt,GetDialogWindow(dialog),&part))
&& part && HandleControlClick(c,pt,event->modifiers,action_UPP) )*/
if( i>=FIRSTCTLITEM && i<=FIRSTCTLITEM+7
&& (part = FindControl(pt,GetDialogWindow(dialog),&c))
&& TrackControl(c,pt,action_UPP) ){
*item = i;
result = true;
}else if(i == PREVIEWITEM){
SetCursor(*handcursor);
origscroll = preview_scroll;
do{
f = WaitNextEvent(mUpMask,&ev,5,NULL);
newscroll.h = origscroll.h - zoomfactor*(ev.where.h - event->where.h);
newscroll.v = origscroll.v - zoomfactor*(ev.where.v - event->where.v);
if(!EqualPt(newscroll,preview_scroll)){
preview_scroll = newscroll;
recalc_preview(gpb,dialog);
}
}while(!f);
 
*item = i;
result = true;
}
}else{
GetKeyboardFocus(GetDialogWindow(dialog),&focus);
/* handle return keypresses */
if( event->what == keyDown && (char)event->message == CR
&& ( focus==exprctls[0] || focus==exprctls[1]
|| focus==exprctls[2] || focus==exprctls[3] ) )
result = false;
else
result = StdFilterProc(dialog,event,item);
}
SetPort(oldport);
 
EXITCALLBACK();
 
return(result);
}
 
Boolean maindialog(FilterRecordPtr pb){
short itemType;
Handle itemHdl;
short item;
DIALOGREF dp;
int i;
UserItemUPP preview_image_UPP = NewUserItemUPP(preview_item);
ModalFilterUPP sliderfilter_UPP = NewModalFilterUPP(sliderfilter);
 
action_UPP = NewControlActionUPP(slideraction);
 
dp = thedialog = GetNewDialog(gdata->standalone ? ID_PARAMDLG : ID_MAINDLG,nil,(WindowPtr)-1);
 
if(gdata->standalone)
SetWTitle(GetDialogWindow(dp),gdata->parm.title);
 
GetDialogItem(dp,PREVIEWITEM,&itemType,&itemHdl,&preview_rect);
SetDialogItem(dp,PREVIEWITEM,itemType,(Handle)preview_image_UPP,&preview_rect);
handcursor = GetCursor(ID_HANDCURSOR);
ibeamcursor = GetCursor(iBeamCursor);
SetDialogDefaultItem(dp,ok);
SetDialogCancelItem(dp,cancel);
SetDialogTracksCursor(dp,true);
if(!gdata->standalone)
for(i=0;i<4;++i)
GetDialogItemAsControl(dp,FIRSTEXPRITEM+i,&exprctls[i]);
 
maindlginit(dp);
do{
InitCursor();
ModalDialog(sliderfilter_UPP,&item);
}while(maindlgitem(dp,item));
 
DisposeDialog(dp);
DisposeUserItemUPP(preview_image_UPP);
DisposeModalFilterUPP(sliderfilter_UPP);
DisposeControlActionUPP(action_UPP);
return item == ok;
}
 
Boolean builddialog(FilterRecordPtr pb){
short item;
DIALOGREF dp;
 
dp = thedialog = GetNewDialog(ID_BUILDDLG,nil,(WindowPtr)-1);
SetDialogDefaultItem(dp,ok);
SetDialogCancelItem(dp,cancel);
 
builddlginit(dp);
do{
ModalDialog(NULL,&item);
}while(builddlgitem(dp,item));
 
DisposeDialog(dp);
return item == ok;
}
/trunk/ui_mac.r
0,0 → 1,591
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#define SystemSevenOrLater 1
#include "dialogs.r"
#include "controls.r"
#include "controldefinitions.r"
#include "mactypes.r"
 
#include "ui.h"
#include "version.h"
 
// these are now inline, see below
//include "caution.pict" 'PICT'(16000);
//include "zoomin.rsr" 'PICT'(16001);
//include "zoomout.rsr" 'PICT'(16002);
 
/* top,left,bottom,right*/
 
resource 'ALRT' (ID_ABOUTDLG, purgeable) {
{0, 0, 232, 360},
ID_ABOUTDLG,
silentStages,
alertPositionMainScreen
};
resource 'DITL' (ID_ABOUTDLG, purgeable) {
{ /* array DITLarray: 5 elements */
/* [1] */
/* [2] */
{16, 20, 96, 340},
StaticText {
disabled,
"Filter Foundry, version " VERSION_STR
"\n© 2003-5 Toby Thain <toby@telegraphics.com.au>."
"\nLatest version available from\nhttp://www.telegraphics.com.au/sw/\n"
},
{104, 20, 216, 340},
StaticText {
disabled,
"Please contact the author with any bug reports, suggestions or comments."
" If you use this program and like it, please consider making a donation"
" through www.paypal.com (US$5 suggested) to the address above."
}
}
};
 
resource 'ALRT' (ID_ABOUTSTANDALONEDLG, purgeable) {
{0, 0, 216, 360},
ID_ABOUTSTANDALONEDLG,
silentStages,
alertPositionMainScreen
};
resource 'DITL' (ID_ABOUTSTANDALONEDLG, purgeable) {
{ /* array DITLarray: 5 elements */
/* [1] */
/* [2] */
{16, 20, 80, 340},
StaticText {
disabled,
"Filter Foundry, version " VERSION_STR
"\n© 2003-5 Toby Thain <toby@telegraphics.com.au>."
},
{88, 20, 200, 340},
StaticText {
disabled,
"Standalone filter:\n^0 by ^1.\n"
"^2"
}
}
};
 
resource 'CNTL' (ID_SLIDERCTL){
{0,0,26,256}, 17/*value:initially, # of ticks*/, visible, /*max*/0xff,/*min*/0,
kControlSliderProc|kControlSliderLiveFeedback|kControlSliderHasTickMarks, 0, ""
};
 
resource 'CNTL' (ID_TEXTCTL){
{0,0,32,459+72}, 0, visible, 0,0, kControlEditTextProc, 0, ""
};
 
resource 'DLOG' (ID_MAINDLG, purgeable) {
{0, 0, 461, 554+72},
kWindowMovableModalDialogProc,
visible,
noGoAway,
0x0,
ID_MAINDLG,
"Filter Foundry",
alertPositionMainScreen
};
 
resource 'dlgx' (ID_MAINDLG, purgeable){
versionZero {
kDialogFlagsUseThemeBackground
| kDialogFlagsUseControlHierarchy
| kDialogFlagsHandleMovableModal
}
};
 
resource 'dftb' (ID_MAINDLG, purgeable) {
versionZero { {
skipItem { },
skipItem { },
skipItem { },
skipItem { },
skipItem { },
 
skipItem { },
skipItem { },
skipItem { },
dataItem { kDialogFontUseFontMask|kDialogFontUseJustMask,
kControlFontSmallSystemFont,0,normal,1/*srcOr*/,1/*teJustCenter*/, 0,0,0, -1,-1,-1, "" },
 
dataItem { kDialogFontUseFontMask|kDialogFontUseJustMask,
kControlFontSmallSystemFont,0,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseFontMask|kDialogFontUseJustMask,
kControlFontSmallSystemFont,0,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseFontMask|kDialogFontUseJustMask,
kControlFontSmallSystemFont,0,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseFontMask|kDialogFontUseJustMask,
kControlFontSmallSystemFont,0,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseFontMask|kDialogFontUseJustMask,
kControlFontSmallSystemFont,0,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseFontMask|kDialogFontUseJustMask,
kControlFontSmallSystemFont,0,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseFontMask|kDialogFontUseJustMask,
kControlFontSmallSystemFont,0,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseFontMask|kDialogFontUseJustMask,
kControlFontSmallSystemFont,0,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
 
skipItem { },
skipItem { },
skipItem { },
skipItem { },
skipItem { },
skipItem { },
skipItem { },
skipItem { },
 
dataItem { kDialogFontUseJustMask, 0,14,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseJustMask, 0,14,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseJustMask, 0,14,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseJustMask, 0,14,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseJustMask, 0,14,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseJustMask, 0,14,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseJustMask, 0,14,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseJustMask, 0,14,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
 
skipItem { },
skipItem { },
skipItem { },
skipItem { },
 
skipItem { },
skipItem { },
skipItem { },
skipItem { },
 
dataItem { kDialogFontUseFontMask|kDialogFontUseFaceMask|kDialogFontUseSizeMask|kDialogFontUseFontNameMask,
0,14,normal,1/*srcOr*/,0/*teJustLeft*/, 0,0,0, -1,-1,-1, "Courier" },
dataItem { kDialogFontUseFontMask|kDialogFontUseFaceMask|kDialogFontUseSizeMask|kDialogFontUseFontNameMask,
0,14,normal,1/*srcOr*/,0/*teJustLeft*/, 0,0,0, -1,-1,-1, "Courier" },
dataItem { kDialogFontUseFontMask|kDialogFontUseFaceMask|kDialogFontUseSizeMask|kDialogFontUseFontNameMask,
0,14,normal,1/*srcOr*/,0/*teJustLeft*/, 0,0,0, -1,-1,-1, "Courier" },
dataItem { kDialogFontUseFontMask|kDialogFontUseFaceMask|kDialogFontUseSizeMask|kDialogFontUseFontNameMask,
0,14,normal,1/*srcOr*/,0/*teJustLeft*/, 0,0,0, -1,-1,-1, "Courier" },
} }
};
 
resource 'DITL' (ID_MAINDLG, purgeable) {
{
{426, 536, 446, 606}, Button { enabled, "OK" },
{426, 451, 446, 521}, Button { enabled, "Cancel" },
{426, 20, 446, 90}, Button { enabled, "LoadÉ" },
{426, 105, 446, 175}, Button { enabled, "SaveÉ" },
{426, 190, 446, 260}, Button { enabled, "MakeÉ" },
 
{ 10, 15,210,215}, useritem { disabled }, /* preview area */
{215, 15,226, 26}, picture { enabled,ID_ZOOMINPICT },
{215,204,226,215}, picture { enabled,ID_ZOOMOUTPICT },
{215, 26,231,204}, statictext { enabled,"" },
 
{ 10,158+72, 26,228+72}, StaticText { disabled, "ctl(0)" },
{ 36,158+72, 52,228+72}, StaticText { disabled, "ctl(1)" },
{ 62,158+72, 78,228+72}, StaticText { disabled, "ctl(2)" },
{ 88,158+72,104,228+72}, StaticText { disabled, "ctl(3)" },
{114,158+72,130,228+72}, StaticText { disabled, "ctl(4)" },
{140,158+72,156,228+72}, StaticText { disabled, "ctl(5)" },
{166,158+72,182,228+72}, StaticText { disabled, "ctl(6)" },
{192,158+72,208,228+72}, StaticText { disabled, "ctl(7)" },
 
{ 10,238+72, 36,494+72}, control { enabled, ID_SLIDERCTL },
{ 36,238+72, 62,494+72}, control { enabled, ID_SLIDERCTL },
{ 62,238+72, 88,494+72}, control { enabled, ID_SLIDERCTL },
{ 88,238+72,114,494+72}, control { enabled, ID_SLIDERCTL },
{114,238+72,140,494+72}, control { enabled, ID_SLIDERCTL },
{140,238+72,166,494+72}, control { enabled, ID_SLIDERCTL },
{166,238+72,192,494+72}, control { enabled, ID_SLIDERCTL },
{192,238+72,218,494+72}, control { enabled, ID_SLIDERCTL },
 
{ 10,504+72, 26,534+72}, editText { enabled, "" },
{ 36,504+72, 52,534+72}, editText { enabled, "" },
{ 62,504+72, 78,534+72}, editText { enabled, "" },
{ 88,504+72,104,534+72}, editText { enabled, "" },
{114,504+72,130,534+72}, editText { enabled, "" },
{140,504+72,156,534+72}, editText { enabled, "" },
{166,504+72,182,534+72}, editText { enabled, "" },
{192,504+72,208,534+72}, editText { enabled, "" },
 
{158+80, 10,174+80, 40}, StaticText { disabled, "R =" },
{205+80, 10,221+80, 40}, StaticText { disabled, "G =" },
{252+80, 10,268+80, 40}, StaticText { disabled, "B =" },
{299+80, 10,315+80, 40}, StaticText { disabled, "A =" },
 
{174+80, 10,190+80, 26}, picture { enabled, ID_CAUTIONPICT },
{221+80, 10,237+80, 26}, picture { enabled, ID_CAUTIONPICT },
{268+80, 10,284+80, 26}, picture { enabled, ID_CAUTIONPICT },
{315+80, 10,331+80, 26}, picture { enabled, ID_CAUTIONPICT },
 
{158+80, 45,190+80,534+72}, control { enabled, ID_TEXTCTL },
{205+80, 45,237+80,534+72}, control { enabled, ID_TEXTCTL },
{252+80, 45,284+80,534+72}, control { enabled, ID_TEXTCTL },
{299+80, 45,331+80,534+72}, control { enabled, ID_TEXTCTL },
}
};
 
resource 'DLOG' (ID_PARAMDLG, purgeable) {
{0, 0, 305, 554+72},
kWindowMovableModalDialogProc,
visible,
noGoAway,
0x0,
ID_PARAMDLG,
"",
alertPositionMainScreen
};
 
resource 'dlgx' (ID_PARAMDLG, purgeable){
versionZero {
kDialogFlagsUseThemeBackground
| kDialogFlagsUseControlHierarchy
| kDialogFlagsHandleMovableModal
}
};
 
resource 'dftb' (ID_PARAMDLG, purgeable) {
versionZero { {
skipItem { },
skipItem { },
 
skipItem { },
dataItem { kDialogFontUseFontMask,
kControlFontSmallSystemFont,0,normal,1/*srcOr*/,0, 0,0,0, -1,-1,-1, "" },
skipItem { },
 
skipItem { },
skipItem { },
skipItem { },
dataItem { kDialogFontUseFontMask|kDialogFontUseJustMask,
kControlFontSmallSystemFont,0,normal,1/*srcOr*/,1/*teJustCenter*/, 0,0,0, -1,-1,-1, "" },
 
dataItem { kDialogFontUseFontMask|kDialogFontUseJustMask,
kControlFontSmallSystemFont,0,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseFontMask|kDialogFontUseJustMask,
kControlFontSmallSystemFont,0,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseFontMask|kDialogFontUseJustMask,
kControlFontSmallSystemFont,0,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseFontMask|kDialogFontUseJustMask,
kControlFontSmallSystemFont,0,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseFontMask|kDialogFontUseJustMask,
kControlFontSmallSystemFont,0,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseFontMask|kDialogFontUseJustMask,
kControlFontSmallSystemFont,0,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseFontMask|kDialogFontUseJustMask,
kControlFontSmallSystemFont,0,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseFontMask|kDialogFontUseJustMask,
kControlFontSmallSystemFont,0,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
 
skipItem { },
skipItem { },
skipItem { },
skipItem { },
skipItem { },
skipItem { },
skipItem { },
skipItem { },
 
dataItem { kDialogFontUseJustMask, 0,14,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseJustMask, 0,14,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseJustMask, 0,14,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseJustMask, 0,14,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseJustMask, 0,14,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseJustMask, 0,14,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseJustMask, 0,14,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
dataItem { kDialogFontUseJustMask, 0,14,normal,1/*srcOr*/,-1/*teJustRight*/, 0,0,0, -1,-1,-1, "" },
 
} }
};
 
resource 'DITL' (ID_PARAMDLG, purgeable) {
{
{266, 536, 286, 606}, Button { enabled, "OK" },
{266, 451, 286, 521}, Button { enabled, "Cancel" },
{236, 20, 252, 400}, StaticText { disabled,"" },
{257, 20, 286, 400}, StaticText { disabled,"" },
{266, 190, 286, 260}, useritem { disabled },
 
{ 10, 15,210,215}, useritem { disabled }, /* preview area */
{215, 15,226, 26}, picture { enabled,ID_ZOOMINPICT },
{215,204,226,215}, picture { enabled,ID_ZOOMOUTPICT },
{215, 26,231,204}, statictext { enabled,"" },
 
{ 10,158+72, 26,228+72}, StaticText { disabled, "ctl(0)" },
{ 36,158+72, 52,228+72}, StaticText { disabled, "ctl(1)" },
{ 62,158+72, 78,228+72}, StaticText { disabled, "ctl(2)" },
{ 88,158+72,104,228+72}, StaticText { disabled, "ctl(3)" },
{114,158+72,130,228+72}, StaticText { disabled, "ctl(4)" },
{140,158+72,156,228+72}, StaticText { disabled, "ctl(5)" },
{166,158+72,182,228+72}, StaticText { disabled, "ctl(6)" },
{192,158+72,208,228+72}, StaticText { disabled, "ctl(7)" },
 
{ 10,238+72, 36,494+72}, control { enabled, ID_SLIDERCTL },
{ 36,238+72, 62,494+72}, control { enabled, ID_SLIDERCTL },
{ 62,238+72, 88,494+72}, control { enabled, ID_SLIDERCTL },
{ 88,238+72,114,494+72}, control { enabled, ID_SLIDERCTL },
{114,238+72,140,494+72}, control { enabled, ID_SLIDERCTL },
{140,238+72,166,494+72}, control { enabled, ID_SLIDERCTL },
{166,238+72,192,494+72}, control { enabled, ID_SLIDERCTL },
{192,238+72,218,494+72}, control { enabled, ID_SLIDERCTL },
 
{ 10,504+72, 26,534+72}, editText { enabled, "" },
{ 36,504+72, 52,534+72}, editText { enabled, "" },
{ 62,504+72, 78,534+72}, editText { enabled, "" },
{ 88,504+72,104,534+72}, editText { enabled, "" },
{114,504+72,130,534+72}, editText { enabled, "" },
{140,504+72,156,534+72}, editText { enabled, "" },
{166,504+72,182,534+72}, editText { enabled, "" },
{192,504+72,208,534+72}, editText { enabled, "" },
}
};
 
resource 'ALRT' (ID_SYNTAXALERT, purgeable) {
{0, 0, 148, 320},
ID_SYNTAXALERT,
silentStages,
alertPositionMainScreen
};
 
resource 'DITL' (ID_SYNTAXALERT, purgeable) {
{
{112, 230, 132, 300}, Button { enabled, "OK" },
{10, 70, 106, 300}, StaticText { disabled, "^0" },
}
};
 
 
data 'CURS' (16000,"hand") {
$"0180 1A70 2648 264A 124D 1249 6809 9801" /* .€.p&H&J.M.IhƘ. */
$"8802 4002 2002 2004 1004 0808 0408 0408" /* ˆ.@. . ......... */
$"0180 1BF0 3FF8 3FFA 1FFF 1FFF 6FFF FFFF" /* .€.ð?ø?ú.ÿ.ÿoÿÿÿ */
$"FFFE 7FFE 3FFE 3FFC 1FFC 0FF8 07F8 07F8" /* ÿþ.þ?þ?ü.ü.ø.ø.ø */
$"0007 0007" /* .... */
};
 
resource 'DLOG' (ID_BUILDDLG,purgeable) {
{0, 0, 403, 408},
kWindowMovableModalDialogProc,
visible,
noGoAway,
0x0,
ID_BUILDDLG,
"Make Standalone Filter",
alertPositionMainScreen
};
 
resource 'dlgx' (ID_BUILDDLG, purgeable){
versionZero {
kDialogFlagsUseThemeBackground
// | kDialogFlagsUseControlHierarchy
| kDialogFlagsHandleMovableModal
}
};
resource 'DITL' (ID_BUILDDLG, purgeable) {
{
{368, 322, 388, 392},
Button { enabled,"OK" },
/* [2] */
{368, 242, 388, 312},
Button { enabled,"Cancel" },
/* [3] */
{9, 92, 25, 395},
EditText { enabled,"Filter Foundry" },
/* [4] */
{36, 92, 52, 395},
EditText { enabled,"Untitled" },
/* [5] */
{60, 92, 92, 395},
EditText { enabled,"Filter Foundry Copyright (C) 2003-5 Toby Thain, <toby@telegraphics.com.au>" },
/* [6] */
{100, 92, 116, 395},
EditText { enabled,"Anonymous" },
/* [7] */
{152, 89, 168, 174},
EditText { disabled,"Map 0:" },
/* [8] */
{208, 89, 224, 174},
EditText { disabled,"Map 1:" },
/* [9] */
{264, 89, 280, 174},
EditText { disabled,"Map 2:" },
/* [10] */
{320, 89, 336, 174},
EditText { disabled,"Map 3:" },
/* [11] */
{140, 207, 156, 292},
EditText { disabled,"Control 0:" },
/* [12] */
{164, 207, 180, 292},
EditText { disabled,"Control 1:" },
/* [13] */
{196, 207, 212, 292},
EditText { disabled,"Control 2:" },
/* [14] */
{220, 207, 236, 292},
EditText { disabled,"Control 3:" },
/* [15] */
{253, 207, 269, 292},
EditText { disabled,"Control 4:" },
/* [16] */
{277, 207, 293, 292},
EditText { disabled,"Control 5:" },
/* [17] */
{309, 207, 325, 292},
EditText { disabled,"Control 6:" },
/* [18] */
{333, 207, 349, 292},
EditText { disabled,"Control 7:" },
/* [19] */
{151, 20, 169, 83},
CheckBox { disabled,"Map 0" },
/* [20] */
{207, 20, 225, 83},
CheckBox { disabled,"Map 1" },
/* [21] */
{263, 20, 281, 83},
CheckBox { disabled,"Map 2" },
/* [22] */
{319, 21, 337, 84},
CheckBox { disabled,"Map 3" },
/* [23] */
{139, 303, 157, 389},
CheckBox { disabled,"ctl(0)" },
/* [24] */
{163, 303, 181, 389},
CheckBox { disabled,"ctl(1)" },
/* [25] */
{195, 303, 213, 389},
CheckBox { disabled,"ctl(2)" },
/* [26] */
{219, 303, 237, 389},
CheckBox { disabled,"ctl(3)" },
/* [27] */
{252, 303, 270, 389},
CheckBox { disabled,"ctl(4)" },
/* [28] */
{276, 303, 294, 389},
CheckBox { disabled,"ctl(5)" },
/* [29] */
{308, 303, 326, 389},
CheckBox { disabled,"ctl(6)" },
/* [30] */
{332, 303, 350, 389},
CheckBox { disabled,"ctl(7)" },
 
{372, 21, 388, 150},
CheckBox { enabled,"Protect" },
 
{9, 7, 25, 83},
StaticText { disabled,"Category:" },
/* [44] */
{36, 7, 52, 83},
StaticText { disabled,"Title:" },
/* [45] */
{60, 7, 76, 83},
StaticText { disabled,"Copyright:" },
/* [46] */
{100, 7, 116, 83},
StaticText { disabled,"Author:" },
}
};
 
data 'PICT' (16000, "caution") {
$"0242 0000 0000 0010 0010 0011 02FF 0C00" /* .B...........ÿ.. */
$"FFFE 0000 0048 0000 0048 0000 0000 0000" /* ÿþ...H...H...... */
$"0010 0010 0000 0000 00A1 01F2 0016 3842" /* .........¡.ò..8B */
$"494D 0000 0000 0000 0010 0010 4772 8970" /* IM..........Gr‰p */
$"6881 81AF 0001 000A 0000 0000 0010 0010" /* h¯............ */
$"0098 8010 0000 0000 0010 0010 0000 0000" /* .˜€............. */
$"0000 0000 0048 0000 0048 0000 0000 0008" /* .....H...H...... */
$"0001 0008 0000 0000 0000 0000 0000 0000" /* ................ */
$"004D 5D1A 0000 001B 0000 FFFF FFFF FFFF" /* .M].......ÿÿÿÿÿÿ */
$"0001 EFEF EFEF 0000 0002 DFDF DFDF 0000" /* ..ïïïï....ßßßß.. */
$"0003 CFCF CFCF 0000 0004 BFBF BFBF 0000" /* ..ÏÏÏÏ....¿¿¿¿.. */
$"0005 AFAF AFAF 0000 0006 9F9F 9F9F 0000" /* ..¯¯¯¯....ŸŸŸŸ.. */
$"0007 8F8F 8F8F 0000 0008 8080 8080 0000" /* ......€€€€.. */
$"0009 7070 7070 0000 000A 5050 5050 0000" /* .Æpppp....PPPP.. */
$"000B 4040 4040 0000 000C 2020 2020 0000" /* ..@@@@.... .. */
$"000D 1010 1010 0000 000E 3030 3030 1010" /* .Â........0000.. */
$"000F 2020 2020 1010 0010 3030 3030 2020" /* .. ....0000 */
$"0011 FFFF FFFF 0000 0012 EFEF EFEF EFEF" /* ..ÿÿÿÿ....ïïïïïï */
$"0013 DFDF DFDF DFDF 0014 CFCF CFCF CFCF" /* ..ßßßßßß..ÏÏÏÏÏÏ */
$"0015 BFBF BFBF BFBF 0016 9F9F 9F9F 9F9F" /* ..¿¿¿¿¿¿..ŸŸŸŸŸŸ */
$"0017 8F8F 8F8F 8F8F 0018 7F7F 7F7F 7F7F" /* .......... */
$"0019 5050 5050 5050 001A 3030 3030 3030" /* ..PPPPPP..000000 */
$"001B 0000 0000 0000 0000 0000 0010 0010" /* ................ */
$"0000 0000 0010 0010 0000 02F1 0009 FB00" /* ...........ñ.Æû. */
$"0314 1919 14FB 000B FC00 0512 1003 0310" /* .....û..ü....... */
$"12FC 000B FC00 0518 0811 1108 18FC 000D" /* .ü..ü........ü. */
$"FD00 0713 0E11 0909 110E 13FD 000D FD00" /* ý.....ÆÆ...ý.Âý. */
$"0719 0511 1B1B 1105 19FD 000F FE00 0915" /* .........ý..þ.Æ. */
$"0B11 110A 0A11 110B 15FE 000F FE00 091A" /* .........þ..þ.Æ. */
$"0211 1107 0711 1102 1AFE 0010 FF00 0116" /* .........þ..ÿ... */
$"09FE 11FF 04FE 1103 0916 0000 1003 0012" /* Æþ.ÿ.þ..Æ....... */
$"0F01 FE11 FF01 FE11 0301 0F12 000E 0200" /* ..þ.ÿ.þ......... */
$"1807 FD11 FF09 FD11 0207 1800 0C01 130C" /* ..ý.ÿÆý......... */
$"FC11 FF0D FC11 010C 130C 0115 08FC 11FF" /* ü.ÿÂü........ü.ÿ */
$"02FC 1101 0815 0A02 120F 06F7 0402 060F" /* .ü.........÷.... */
$"120A 0200 1317 F718 0217 1300 02F1 0000" /* ......÷......ñ.. */
$"00FF" /* .ÿ */
};
 
data 'PICT' (16001, "zoomin") {
$"012A 0000 0000 000B 000B 0011 02FF 0C00" /* .*...........ÿ.. */
$"FFFE 0000 0048 0002 0048 0002 0000 0000" /* ÿþ...H...H...... */
$"000B 000B 0000 0000 00A1 01F2 0016 3842" /* .........¡.ò..8B */
$"494D 0000 0000 0000 000B 000B 4772 8970" /* IM..........Gr‰p */
$"6881 81AF 0001 000A 0000 0000 000B 000B" /* h¯............ */
$"0098 8008 0000 0000 000B 000B 0000 0000" /* .˜€............. */
$"0000 0000 0048 0002 0048 0002 0000 0004" /* .....H...H...... */
$"0001 0004 0000 0000 0000 0000 0000 0000" /* ................ */
$"0042 B075 0000 0004 0000 FFFF FFFF FFFF" /* .B°u......ÿÿÿÿÿÿ */
$"0001 FFFF FFFF FFFF 0002 DDDD DDDD DDDD" /* ..ÿÿÿÿÿÿ..ÝÝÝÝÝÝ */
$"0003 8888 8888 8888 0004 0000 0000 0000" /* ..ˆˆˆˆˆˆ........ */
$"0000 0000 000B 000B 0000 0000 000B 000B" /* ................ */
$"0000 06FC 4402 4000 0008 0040 FD00 0240" /* ...üD.@....@ý..@ */
$"0000 0900 40FE 2203 2340 0000 0907 4022" /* ..Æ.@þ".#@..Æ.@" */
$"2422 2340 0000 0907 4022 2422 2340 0000" /* $"#@..Æ.@"$"#@.. */
$"0907 4024 4444 2340 0000 0907 4022 2422" /* Æ.@$DD#@..Æ.@"$" */
$"2340 0000 0907 4022 2422 2340 0000 0900" /* #@..Æ.@"$"#@..Æ. */
$"40FE 2203 2340 0000 0800 40FD 3302 4000" /* @þ".#@....@ý3.@. */
$"0006 FC44 0240 0000 00FF" /* ..üD.@...ÿ */
};
 
data 'PICT' (16002, "zoomout") {
$"012A 0000 0000 000B 000B 0011 02FF 0C00" /* .*...........ÿ.. */
$"FFFE 0000 0048 0002 0048 0002 0000 0000" /* ÿþ...H...H...... */
$"000B 000B 0000 0000 00A1 01F2 0016 3842" /* .........¡.ò..8B */
$"494D 0000 0000 0000 000B 000B 4772 8970" /* IM..........Gr‰p */
$"6881 81AF 0001 000A 0000 0000 000B 000B" /* h¯............ */
$"0098 8008 0000 0000 000B 000B 0000 0000" /* .˜€............. */
$"0000 0000 0048 0002 0048 0002 0000 0004" /* .....H...H...... */
$"0001 0004 0000 0000 0000 0000 0000 0000" /* ................ */
$"0042 BCAE 0000 0004 0000 FFFF FFFF FFFF" /* .B¼®......ÿÿÿÿÿÿ */
$"0001 FFFF FFFF FFFF 0002 DDDD DDDD DDDD" /* ..ÿÿÿÿÿÿ..ÝÝÝÝÝÝ */
$"0003 8888 8888 8888 0004 0000 0000 0000" /* ..ˆˆˆˆˆˆ........ */
$"0000 0000 000B 000B 0000 0000 000B 000B" /* ................ */
$"0000 06FC 4402 4000 0008 0040 FD00 0240" /* ...üD.@....@ý..@ */
$"0000 0900 40FE 2203 2340 0000 0900 40FE" /* ..Æ.@þ".#@..Æ.@þ */
$"2203 2340 0000 0900 40FE 2203 2340 0000" /* ".#@..Æ.@þ".#@.. */
$"0907 4024 4444 2340 0000 0900 40FE 2203" /* Æ.@$DD#@..Æ.@þ". */
$"2340 0000 0900 40FE 2203 2340 0000 0900" /* #@..Æ.@þ".#@..Æ. */
$"40FE 2203 2340 0000 0800 40FD 3302 4000" /* @þ".#@....@ý3.@. */
$"0006 FC44 0240 0000 00FF" /* ..üD.@...ÿ */
};
 
/trunk/ui_win.c
0,0 → 1,163
/* Win32 user interface routines
Copyright (C) 2003-4 Toby Thain <toby@telegraphics.com.au> */
 
#include "world.h"
 
#include "piabout.h"
 
#include <windows.h>
#include <commctrl.h>
 
#include "ff.h"
#include "version.h"
 
extern UIRECT preview_rect;
extern double zoomfactor;
extern Point preview_scroll;
 
HWND preview_hwnd;
 
extern HANDLE hDllInstance;
 
void DoAbout(AboutRecordPtr pb){
char s[0x200];
int n;
PlatformData *p = (PlatformData*)pb->platformData;
 
n = sprintf(s,"Filter Foundry %s\n(C) 2003-5 Toby Thain <toby@telegraphics.com.au>\n\n",VERSION_STR);
if(gdata->standalone){
sprintf(s+n,"Standalone filter:\n%s by %s.\n%s",
INPLACEP2CSTR(gdata->parm.title),
INPLACEP2CSTR(gdata->parm.author),
INPLACEP2CSTR(gdata->parm.copyright));
}else
strcat(s,"Latest version available from http://www.telegraphics.com.au/sw/\n\
Please contact the author with any bug reports, suggestions or comments.\n\
If you use this program and like it, please consider making a donation\n\
through www.paypal.com (US$5 suggested) to the address above.");
MessageBox((HWND)p->hwnd,s,"About Filter Foundry",MB_APPLMODAL|MB_ICONINFORMATION|MB_OK);
}
 
Boolean simplealert(char *s){
return MessageBox(NULL,s,"Filter Foundry",MB_APPLMODAL|MB_ICONERROR|MB_OK) == IDOK;
}
 
BOOL CALLBACK maindlgproc(HWND hDlg, UINT wMsg, WPARAM wParam, LPARAM lParam);
 
BOOL CALLBACK maindlgproc(HWND hDlg, UINT wMsg, WPARAM wParam, LPARAM lParam){
static POINT origpos;
static long *pdata; // keep "data" pointer around
static HICON cicon;
static Point origscroll;
static Boolean panning = false;
 
int item,cmd,i;
POINT newpos;
DRAWITEMSTRUCT *pdi;
UIRECT r;
Point newscroll;
HFONT hfnt;
extern Boolean doupdates;
extern Handle preview_handle;
 
switch(wMsg){
case WM_INITDIALOG:
DBG("dlgproc: WM_INITDIALOG");
centre_window(hDlg);
// cicon = LoadImage(hDllInstance,"CAUTION_ICO",IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
 
// see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_3pbo.asp
hfnt = GetStockObject(ANSI_FIXED_FONT);
preview_hwnd = GetDlgItem(hDlg, PREVIEWITEM);
GetClientRect(preview_hwnd, &preview_rect);
// MapWindowPoints(hcl,hDlg,(POINT*)&preview_rect,2);
//{char s[0x100]; sprintf(s,"preview_rect=(%d,%d,%d,%d)",
// preview_rect.left,preview_rect.top,preview_rect.right,preview_rect.bottom); dbg(s);}
 
for(i=0;i<8;++i){
SendDlgItemMessage(hDlg,FIRSTCTLITEM+i, TBM_SETRANGE,TRUE,MAKELONG(0,255));
SendDlgItemMessage(hDlg,FIRSTCTLITEM+i, TBM_SETTICFREQ,SLIDERPAGE,0);
SendDlgItemMessage(hDlg,FIRSTCTLITEM+i, TBM_SETPAGESIZE,0,SLIDERPAGE);
SendDlgItemMessage(hDlg,FIRSTCTLTEXTITEM+i, EM_SETLIMITTEXT,3,0);
}
for(i=0;i<4;++i){
SendDlgItemMessage(hDlg,FIRSTEXPRITEM+i, EM_SETLIMITTEXT,MAXEXPR,0);
SendDlgItemMessage(hDlg,FIRSTEXPRITEM+i, WM_SETFONT,(WPARAM)hfnt,false);
}
 
maindlginit(hDlg);
break;
case WM_DRAWITEM:
pdi = (DRAWITEMSTRUCT*)lParam;
if(pdi->itemAction == ODA_DRAWENTIRE){
switch(pdi->CtlID){
/*
case FIRSTICONITEM:
case FIRSTICONITEM+1:
case FIRSTICONITEM+2:
case FIRSTICONITEM+3:
DrawIconEx( pdi->hDC, 0,0, cicon, 16,16, 0, NULL, DI_NORMAL );
break;
*/
case PREVIEWITEM:
drawpreview(hDlg,pdi->hDC,PILOCKHANDLE(preview_handle,false));//paint_preview(hDlg,pdi->hwndItem,pdi->hDC,&pdi->rcItem);
PIUNLOCKHANDLE(preview_handle);
break;
default: return false;
}
}else
return false; // we couldn't handle the message
break;
case WM_COMMAND:
item = LOWORD(wParam);
switch(HIWORD(wParam)){
case BN_CLICKED: //case STN_CLICKED:
if(item==PREVIEWITEM && GetCursorPos(&origpos)){
// dbg("click preview");
panning = true;
origscroll = preview_scroll;
SetCapture(hDlg);
break;
}
case EN_CHANGE:
if(doupdates && !maindlgitem(hDlg,item))
EndDialog(hDlg,item);
}
break;
// case WM_LBUTTONDOWN: break;
case WM_MOUSEMOVE:
if(panning && GetCursorPos(&newpos)){
newscroll.h = origscroll.h - zoomfactor*(newpos.x - origpos.x);
newscroll.v = origscroll.v - zoomfactor*(newpos.y - origpos.y);
if( newscroll.h != preview_scroll.h || newscroll.v != preview_scroll.v ){
preview_scroll = newscroll;
recalc_preview(gpb,hDlg);
}
}
break;
case WM_LBUTTONUP:
// dbg("button up");
ReleaseCapture();
panning = false;
break;
case WM_HSCROLL:
item = GetDlgCtrlID((HWND)lParam);
if(doupdates && item>=FIRSTCTLITEM && item<=FIRSTCTLITEM+7)
slidermoved(hDlg,item);
//recalc_preview(gpb,hDlg);
break;
default:
return false;
}
 
return true;
}
 
Boolean maindialog(FilterRecordPtr pb){
PlatformData *p = pb->platformData;
return DialogBoxParam(hDllInstance,MAKEINTRESOURCE(gdata->standalone ? ID_PARAMDLG : ID_MAINDLG),
(HWND)p->hwnd,maindlgproc,0) == IDOK;
}
 
/trunk/ui_win.rc
0,0 → 1,165
/* Windows UI resources
Copyright (C) 2003-4 Toby Thain <toby@telegraphics.com.au> */
 
#include "winuser.h"
#include "commctrl.h"
#include "ui.h"
 
/*CAUTION_BMP BITMAP "caution.bmp"*/
CAUTION_ICO ICON "caution.ico"
ZOOMIN_ICO ICON "zoomin.ico"
ZOOMOUT_ICO ICON "zoomout.ico"
 
/* left,top,w,h */
 
ID_MAINDLG DIALOG DISCARDABLE 150,50, 308,277
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
CAPTION "Filter Foundry"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "&OK",IDOK, 256,253, 42,14
PUSHBUTTON "&Cancel",IDCANCEL, 206,253, 42,14
PUSHBUTTON "Load...",OPENITEM, 10,253, 42,14
PUSHBUTTON "Save...",SAVEITEM, 60,253, 42,14
PUSHBUTTON "Make...",MAKEITEM, 110,253, 42,14
 
CONTROL "",PREVIEWITEM, "Static",SS_OWNERDRAW|SS_NOTIFY, 15,10, 100,100
CONTROL "ZOOMIN_ICO",ZOOMINITEM, "Static",SS_ICON|SS_REALSIZEIMAGE|SS_NOTIFY, 15,115, 12,12
CONTROL "ZOOMOUT_ICO",ZOOMOUTITEM, "Static",SS_ICON|SS_REALSIZEIMAGE|SS_NOTIFY, 103,115, 12,12
CONTROL "",ZOOMLEVELITEM, "Static",SS_CENTER|SS_NOTIFY, 37,115, 56,12
 
LTEXT "ctl(0)",100, 129,10, 15,12
LTEXT "ctl(1)",101, 129,25, 15,12
LTEXT "ctl(2)",102, 129,40, 15,12
LTEXT "ctl(3)",103, 129,55, 15,12
LTEXT "ctl(4)",104, 129,70, 15,12
LTEXT "ctl(5)",105, 129,85, 15,12
LTEXT "ctl(6)",106, 129,100, 15,12
LTEXT "ctl(7)",107, 129,115, 15,12
 
CONTROL "",FIRSTCTLITEM, "msctls_trackbar32",TBS_HORZ|TBS_AUTOTICKS, 154,10, 100,10
CONTROL "",FIRSTCTLITEM+1, "msctls_trackbar32",TBS_HORZ|TBS_AUTOTICKS, 154,25, 100,10
CONTROL "",FIRSTCTLITEM+2, "msctls_trackbar32",TBS_HORZ|TBS_AUTOTICKS, 154,40, 100,10
CONTROL "",FIRSTCTLITEM+3, "msctls_trackbar32",TBS_HORZ|TBS_AUTOTICKS, 154,55, 100,10
CONTROL "",FIRSTCTLITEM+4, "msctls_trackbar32",TBS_HORZ|TBS_AUTOTICKS, 154,70, 100,10
CONTROL "",FIRSTCTLITEM+5, "msctls_trackbar32",TBS_HORZ|TBS_AUTOTICKS, 154,85, 100,10
CONTROL "",FIRSTCTLITEM+6, "msctls_trackbar32",TBS_HORZ|TBS_AUTOTICKS, 154,100, 100,10
CONTROL "",FIRSTCTLITEM+7, "msctls_trackbar32",TBS_HORZ|TBS_AUTOTICKS, 154,115, 100,10
 
EDITTEXT FIRSTCTLTEXTITEM, 269,10, 24,12, ES_NUMBER|ES_RIGHT
EDITTEXT FIRSTCTLTEXTITEM+1, 269,25, 24,12, ES_NUMBER|ES_RIGHT
EDITTEXT FIRSTCTLTEXTITEM+2, 269,40, 24,12, ES_NUMBER|ES_RIGHT
EDITTEXT FIRSTCTLTEXTITEM+3, 269,55, 24,12, ES_NUMBER|ES_RIGHT
EDITTEXT FIRSTCTLTEXTITEM+4, 269,70, 24,12, ES_NUMBER|ES_RIGHT
EDITTEXT FIRSTCTLTEXTITEM+5, 269,85, 24,12, ES_NUMBER|ES_RIGHT
EDITTEXT FIRSTCTLTEXTITEM+6, 269,100, 24,12, ES_NUMBER|ES_RIGHT
EDITTEXT FIRSTCTLTEXTITEM+7, 269,115, 24,12, ES_NUMBER|ES_RIGHT
 
LTEXT "R =",FIRSTLABELITEM, 15,135, 13,12
LTEXT "G =",FIRSTLABELITEM+1, 15,163, 13,12
LTEXT "B =",FIRSTLABELITEM+2, 15,191, 13,12
LTEXT "A =",FIRSTLABELITEM+3, 15,219, 13,12
 
CONTROL "CAUTION_ICO",FIRSTICONITEM, "Static",SS_ICON|SS_REALSIZEIMAGE|SS_NOTIFY, 15,147, 12,12
CONTROL "CAUTION_ICO",FIRSTICONITEM+1, "Static",SS_ICON|SS_REALSIZEIMAGE|SS_NOTIFY, 15,175, 12,12
CONTROL "CAUTION_ICO",FIRSTICONITEM+2, "Static",SS_ICON|SS_REALSIZEIMAGE|SS_NOTIFY, 15,203, 12,12
CONTROL "CAUTION_ICO",FIRSTICONITEM+3, "Static",SS_ICON|SS_REALSIZEIMAGE|SS_NOTIFY, 15,231, 12,12
 
EDITTEXT FIRSTEXPRITEM, 35,135, 258, 24, ES_AUTOVSCROLL|ES_MULTILINE|ES_WANTRETURN
EDITTEXT FIRSTEXPRITEM+1, 35,163, 258, 24, ES_AUTOVSCROLL|ES_MULTILINE|ES_WANTRETURN
EDITTEXT FIRSTEXPRITEM+2, 35,191, 258, 24, ES_AUTOVSCROLL|ES_MULTILINE|ES_WANTRETURN
EDITTEXT FIRSTEXPRITEM+3, 35,219, 258, 24, ES_AUTOVSCROLL|ES_MULTILINE|ES_WANTRETURN
END
 
ID_PARAMDLG DIALOG DISCARDABLE 150,50, 308,161
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
CAPTION "Filter Foundry"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "&OK",IDOK, 256,137, 42,14
PUSHBUTTON "&Cancel",IDCANCEL, 206,137, 42,14
LTEXT "",PARAMAUTHORITEM, 10,137, 42,20
LTEXT "",PARAMCOPYITEM, 60,137, 140,20
 
CONTROL "",PREVIEWITEM, "Static",SS_OWNERDRAW|SS_NOTIFY, 15,10, 100,100
CONTROL "ZOOMIN_ICO",ZOOMINITEM, "Static",SS_ICON|SS_REALSIZEIMAGE|SS_NOTIFY, 15,115, 12,12
CONTROL "ZOOMOUT_ICO",ZOOMOUTITEM, "Static",SS_ICON|SS_REALSIZEIMAGE|SS_NOTIFY, 103,115, 12,12
CONTROL "",ZOOMLEVELITEM, "Static",SS_CENTER|SS_NOTIFY, 37,115, 56,12
 
LTEXT "ctl(0)",100, 129,10, 15,12
LTEXT "ctl(1)",101, 129,25, 15,12
LTEXT "ctl(2)",102, 129,40, 15,12
LTEXT "ctl(3)",103, 129,55, 15,12
LTEXT "ctl(4)",104, 129,70, 15,12
LTEXT "ctl(5)",105, 129,85, 15,12
LTEXT "ctl(6)",106, 129,100, 15,12
LTEXT "ctl(7)",107, 129,115, 15,12
 
CONTROL "",FIRSTCTLITEM, "msctls_trackbar32",TBS_HORZ|TBS_AUTOTICKS, 154,10, 100,10
CONTROL "",FIRSTCTLITEM+1, "msctls_trackbar32",TBS_HORZ|TBS_AUTOTICKS, 154,25, 100,10
CONTROL "",FIRSTCTLITEM+2, "msctls_trackbar32",TBS_HORZ|TBS_AUTOTICKS, 154,40, 100,10
CONTROL "",FIRSTCTLITEM+3, "msctls_trackbar32",TBS_HORZ|TBS_AUTOTICKS, 154,55, 100,10
CONTROL "",FIRSTCTLITEM+4, "msctls_trackbar32",TBS_HORZ|TBS_AUTOTICKS, 154,70, 100,10
CONTROL "",FIRSTCTLITEM+5, "msctls_trackbar32",TBS_HORZ|TBS_AUTOTICKS, 154,85, 100,10
CONTROL "",FIRSTCTLITEM+6, "msctls_trackbar32",TBS_HORZ|TBS_AUTOTICKS, 154,100, 100,10
CONTROL "",FIRSTCTLITEM+7, "msctls_trackbar32",TBS_HORZ|TBS_AUTOTICKS, 154,115, 100,10
 
EDITTEXT FIRSTCTLTEXTITEM, 269,10, 24,12, ES_NUMBER|ES_RIGHT
EDITTEXT FIRSTCTLTEXTITEM+1, 269,25, 24,12, ES_NUMBER|ES_RIGHT
EDITTEXT FIRSTCTLTEXTITEM+2, 269,40, 24,12, ES_NUMBER|ES_RIGHT
EDITTEXT FIRSTCTLTEXTITEM+3, 269,55, 24,12, ES_NUMBER|ES_RIGHT
EDITTEXT FIRSTCTLTEXTITEM+4, 269,70, 24,12, ES_NUMBER|ES_RIGHT
EDITTEXT FIRSTCTLTEXTITEM+5, 269,85, 24,12, ES_NUMBER|ES_RIGHT
EDITTEXT FIRSTCTLTEXTITEM+6, 269,100, 24,12, ES_NUMBER|ES_RIGHT
EDITTEXT FIRSTCTLTEXTITEM+7, 269,115, 24,12, ES_NUMBER|ES_RIGHT
END
 
ID_BUILDDLG DIALOG DISCARDABLE 150,50, 208,243
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
CAPTION "Make Standalone Filter"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "&OK",IDOK, 156,219, 42,14
PUSHBUTTON "&Cancel",IDCANCEL, 106,219, 42,14
 
/* for initial values of the following EDITTEXT fields, see ui_build.c */
EDITTEXT CATEGORYITEM, 50,10, 148,12
EDITTEXT TITLEITEM, 50,25, 148,12
EDITTEXT COPYRIGHTITEM, 50,40, 148,24
EDITTEXT AUTHORITEM, 50,67, 148,12
 
EDITTEXT FIRSTMAPNAMEITEM, 50, 92, 50,12
EDITTEXT FIRSTMAPNAMEITEM+1, 50,122, 50,12
EDITTEXT FIRSTMAPNAMEITEM+2, 50,152, 50,12
EDITTEXT FIRSTMAPNAMEITEM+3, 50,182, 50,12
 
EDITTEXT FIRSTCTLNAMEITEM, 154, 92, 50,12
EDITTEXT FIRSTCTLNAMEITEM+1, 154,107, 50,12
EDITTEXT FIRSTCTLNAMEITEM+2, 154,122, 50,12
EDITTEXT FIRSTCTLNAMEITEM+3, 154,137, 50,12
EDITTEXT FIRSTCTLNAMEITEM+4, 154,152, 50,12
EDITTEXT FIRSTCTLNAMEITEM+5, 154,167, 50,12
EDITTEXT FIRSTCTLNAMEITEM+6, 154,182, 50,12
EDITTEXT FIRSTCTLNAMEITEM+7, 154,197, 50,12
 
CHECKBOX "Map 0",FIRSTMAPCHECKITEM, 10, 92, 35,12
CHECKBOX "Map 1",FIRSTMAPCHECKITEM+1, 10,122, 35,12
CHECKBOX "Map 2",FIRSTMAPCHECKITEM+2, 10,152, 35,12
CHECKBOX "Map 3",FIRSTMAPCHECKITEM+3, 10,182, 35,12
 
CHECKBOX "ctl(0)",FIRSTCTLCHECKITEM, 114, 92, 35,12
CHECKBOX "ctl(1)",FIRSTCTLCHECKITEM+1, 114,107, 35,12
CHECKBOX "ctl(2)",FIRSTCTLCHECKITEM+2, 114,122, 35,12
CHECKBOX "ctl(3)",FIRSTCTLCHECKITEM+3, 114,137, 35,12
CHECKBOX "ctl(4)",FIRSTCTLCHECKITEM+4, 114,152, 35,12
CHECKBOX "ctl(5)",FIRSTCTLCHECKITEM+5, 114,167, 35,12
CHECKBOX "ctl(6)",FIRSTCTLCHECKITEM+6, 114,182, 35,12
CHECKBOX "ctl(7)",FIRSTCTLCHECKITEM+7, 114,197, 35,12
 
CHECKBOX "Protect",PROTECTITEM, 10,219, 35,12
 
LTEXT "Category:",100, 10,10, 35,12
LTEXT "Title:",101, 10,25, 35,12
LTEXT "Copyright:",102, 10,40, 35,12
LTEXT "Author:",103, 10,67, 35,12
END
/trunk/universal.r
0,0 → 1,53
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include "mactypes.r"
#include "AEDataModel.r"
 
#include "PIResDefines.h" // Defines plug-in versions.
#include "PiPL.r"
 
#include "ui.h"
#include "version.h"
 
resource 'PiPL' (16000, purgeable)
{
{
Category { "Telegraphics" },
Name { "Filter FoundryÉ" },
HasTerminology { plugInClassID, plugInEventID, AETE_ID, vendorName " " plugInName },
#include "pipl_common.r"
CodePowerPCbundle { 0, CARBON_LENGTH, "" },
CodePowerPC { CARBON_LENGTH, CLASSIC_LENGTH, "" },
}
};
 
type 'DATA' as 'PiPL';
resource 'DATA' (16000, purgeable)
{
{
#include "pipl_common.r"
CodePowerPCbundle { 0, CARBON_LENGTH, "" },
CodePowerPC { CARBON_LENGTH, CLASSIC_LENGTH, "" },
}
};
 
resource 'vers' (1){
VERS_RSRC " (Carbon/Classic)"
};
/trunk/version.h
0,0 → 1,81
/*
This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
Copyright (C) 2003-5 Toby Thain, toby@telegraphics.com.au
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
/*
22-Feb-2003: started 0.1b1
23-Feb-2003: released 0.1b1,0.2b1
24-Feb-2003: 0.3b1,b2
25-Feb-2003: 0.3b3,b4
27-Feb-2003: 0.4b1 - with preview
01-Mar-2003: 0.4b4,5,6 - finally! live sliders
02-Mar-2003: 0.4b7,8,9,10
04-Mar-2003: 0.5b1 - first Windows beta released
08-Mar-2003: 0.5b4 - first Mac 68K build (CW1)
13-Mar-2003: 0.5b6 - finally caught divide-by-zero in Win version
15-Mar-2003: 0.5b7 - Mac version uses edit controls, theme, is movable
16-Mar-2003: 0.6b1,2 - zoomable preview
16-Mar-2003: 0.6b3 - Windows preview pannable
16-Mar-2003: 0.6b4 - fix map()
16-Mar-2003: 0.7b1 - read Mac PARM resources
18-Mar-2003: 0.7b2 - check for direct host callbacks before using them (preview)
23-Mar-2003: 0.8b1 - can now make standalone filters (Mac only)
26-Mar-2003: 0.8b3 - switch to "universal" PowerPC build in one file (inspired by Harald Heim)
28-Mar-2003: 0.8b4 - Windows version can load PARM resource
31-Mar-2003: 0.8b5 - Windows version can create standalone (?) NT platform only
16-May-2003: 0.9b1 - added cnv() function, dmin, mmin
17-May-2003: 0.9b2 - fix dmin/mmin crash
17-May-2003: 0.9b3 - add Harry's suggestions: skip comments; other bugfixes
19-May-2003: 0.9b4 - fix Make... suggested file name bug
21-Jul-2003: 0.9b5 - fix crash on About box (!!)
28-Jan-2004: 0.9b6 - fix problems with making standalone on Mac (thanks Chris Greene)
31-Jan-2004: 1.0b1 - finally fix Win32 standalone filters - building and running
06-Feb-2004: 1.0b2 - fix bufferSpace computation (Prepare call)
21-Feb-2004: 1.0f1 - GPL source release
20-Mar-2004: 1.0f2 - fix code to blank margins of preview... hunting David Owen's crash
21-Mar-2004: 1.0f3 - alert when pb->inData is NULL - temporary workaround for crash bug
23-May-2004: 1.0f4 - include missing license(!)
25-Sep-2004: 1.0f5 - remove debug calls in Win build (!!) - thanks Shiro Akaishi;
fix RC EDITTEXT syntax
20-Dec-2004: 1.0f6 - fix bug in rad(d,m,z) -- wasn't relative to centre of image!
also ff_c2d, needed to negate x and y arguments to atan2()
02-Feb-2005: add Win VERSIONINFO
06-Feb-2005: 1.1a1 - scripting support
09-Feb-2005: 1.1b1 - incl aete for Windows
1.1b2 - oops, forgot scripting.r (aete resource) in 68K build
10-Feb-2005: 1.1b3 - various mostly cosmetic cleanups; switch to GNU flex and bison in Makefile
- use monospaced font in Win expr text controls
1.1b4 - fix crash blooper in make.c (fixpipl)
11-Feb-2005: 1.1b5 - cosmetic fixes in Mac dialog (right justify slider text, etc)
1.1b6 - fix key (hash) calculation for standalones to obey Adobe's stated rules
1.1b7 - aaaargh fix stupid hex handling bug in lexer
1.1b8 - remove dbg call in lexer (it's late :( )
*/
 
#define plugInName "FilterFoundry"
#define VERSION_STR "1.1b8"
#define VERSION_NUM 1,0x10,beta,8
#define VERS_RSRC VERSION_NUM,verAustralia,VERSION_STR,"Filter Foundry " VERSION_STR
 
/* formatted for Win32 VERSIONINFO resource */
#define VI_VERS_NUM 1,1,0,8
#define VI_FLAGS VS_FF_PRERELEASE /* 0 for final, or any of VS_FF_DEBUG,VS_FF_PATCHED,VS_FF_PRERELEASE,VS_FF_PRIVATEBUILD,VS_FF_SPECIALBUILD */
#define VI_COMMENTS "Beta of scripting support.\r\n\r\nPlease contact support@telegraphics.com.au with any bug reports, suggestions or comments.\0" /* null terminated Comments field */
 
/* wildcard signature in resources */
#define ANY ' '
/trunk/win_res.rc
0,0 → 1,5
/* wrapper file for Windows resource compiler input
Copyright (C) 2003-4 Toby Thain <toby@telegraphics.com.au> */
 
#include "PiPL.rc"
#include "ui_win.rc"
/trunk/zoomin.ico
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/zoomin.rsr
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/zoomout.ico
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/zoomout.rsr