From b56a25ba9e2e921695d02b5e45b8b106d5b9a6bd Mon Sep 17 00:00:00 2001 From: Lance Date: Sun, 29 May 2011 03:31:41 +0000 Subject: [PATCH] MinGW32 + MinGW64: libpng upgraded from 1.4.4 to 1.5.2 git-svn-id: https://svn.code.sf.net/p/fteqw/code/branches/wip@3799 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- engine/libs/mingw-libs/libpng.a | Bin 169168 -> 605402 bytes engine/libs/mingw-libs/png.h | 5008 ++++++++++++------------- engine/libs/mingw-libs/pngconf.h | 2189 ++++------- engine/libs/mingw-libs/pnglibconf.h | 174 + engine/libs/mingw64-libs/libpng.a | Bin 297496 -> 188948 bytes engine/libs/mingw64-libs/png.h | 2256 +++++------ engine/libs/mingw64-libs/pngconf.h | 1759 +++------ engine/libs/mingw64-libs/pnglibconf.h | 181 + engine/libs/mingw64-libs/pngpriv.h | 900 +++-- 9 files changed, 5276 insertions(+), 7191 deletions(-) create mode 100644 engine/libs/mingw-libs/pnglibconf.h create mode 100755 engine/libs/mingw64-libs/pnglibconf.h diff --git a/engine/libs/mingw-libs/libpng.a b/engine/libs/mingw-libs/libpng.a index 3d06edd0c7abc762815b142ee47ca7b8ee23acda..b27700cb2da78aa95f2910e74d197a8239fd463f 100755 GIT binary patch literal 605402 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ⅇW3b{7UP^6?1=P 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®YZ_?{~(EnmF-l@c8?9MMLz@%$W#--(O;4$%;_u0NxjGQO!Y1bLE7>ZtyU{8LeHv$rY`e@&-y(iI)c=3R zLJbE99haAsxTl8)p+0d#-D)5%s;|*HGHMVPRV^?ks)>4vn|js)f{=zIr!qDw0zid${P8sxNF;2D*= zDr|)i|w) zYcB0&TB3hf9KIz1W`e6uz@1N=>+owETopIc|0khU4{(lwUl3Y#Hd6nugjW3(497SQ zJ%cTSe-0K}bpggsKeQ_O2)SwbMN&hns$qs! zeU3$%(5kP1KV)cCww`>&icbwC+Unn2S{KNK7G-GFY9HgPL=3I^DysRPLaR>jGwHJn z8(Q@m@_l#Y$YmHc?qGMMgg=E31zVm&;c;5tUVwK~z>vw~op> z5C%-u{iv)ri!-zwDl;`IYd$UzgQ%>gU_UA=+m}&U#gD>>CWEM~nhv6}YC26+);m*N zL#S4Kke`g4ilVb)bRgtiO2pO&=^W$gWp+1>VA`Zdt2XIr(h(c6RcjK8*s4I=h^=KP zBWSjYA#klvmIu32XkGE-ilro1amb_5)S5i9x}8J z=E?&wO)%F+s7k|$ON@j%G13X=tLzv{4ND+8J#xH=s34wdm>6wL#(8}Og4|8)?`K7H zEVOZ6)$btAtESt;dF7#%CeEwEL7Z33of_v=u~uko8Q`^8TqOh~^l@n1ROh2y{a4I7UCs;(gZE16u+oJ^`PSbx-CezGrHLraC8{XKJK2LqUS~ zDYHgt>WD;Frph#RWa28O#%SuO1iVHxSWOisK4WUUrjAa$#?%B&wTcF-U}`kjvk?y< z5{d@PQySwFq(+0)oP82JsIr#mp_LK{Rv{Y*_D|?f2n3t>HTCP+ix2}=W@uS!I3R}O zzcS7Q0x>3jLERr|sys28sULG(XZ+VHrmoXeO8i$HR#M`>DwH<Epku zEKU4ZHE83%R-r1$Qphsy?=j|H|%_F8-?)j_{BYL^k}^d)7Yn6=5P< z$A9IQ#0QQ4suo+ve^py);=iiH>EgetBu)I+m!&RyTgQK$g3$}Xu>GM<=dc{#Fc97r zSuWCg{EbsZ26qPHkpa-0^cf=dD`@0$3`Brf?fyp$w0I`}(6Cn0tlqW;8?+m;xh#uX6b)hdJGyWkC>|hAe28g`{ z@9d`rh`kjhV+i*`pGRO;E6w!ESbk(1+6=z9vUSi!MIk6%Q1-P)nu(?yQ$ zfapPyqBfCZ6%Iv?)%=Hu96L>%J5=OY)tK8l`m6XiSnVG)a;)xxLq(2N4I4RDcYhE$ zR@3Ps$EqY8IrfS!Y!e$fRu4Z69pT8a5|XA(GfWw2F@4fMw#HbJo8mm~Vps@-fXe*Mw^5$z2 z0b@BTc?&d|CSa@z5HObGlUJol1dQeAVE)O8D8$DmW04X{YxiPCHYA#VUYcv7C5% z*J$Ag7R#BZcdfQ-n_#gErA^xgi~YIaDZyeN6KGo~SS+K)r3Q=rN_5f&i&cNx1dCPp zV8LQlnl4zZO4{ z0qKLqs;q6WShb%nSgg4KNeTOEL&^S5rEP=7DxN-AtjgL1i`8aH2^On;CS9;tPDlK>@hYA*JM)pGli`CXZuvlKXdk565 zlwh&iDy@UX{##ljHCSwaT%+Uqr%kX}ZHaWjVpVdGV6iGZNU&HHB3Nu!`rXl0$I}Lj z)hebB7OS#D1dCOL-G>Mkd!)=T(glmIrExJp@R-)G$oTDRH>_0^IFZ}J~@(LmE1+aNn;z%)F0uTfSmv2dE%WYL+kBy5vCP)SZYWsn030IOu_5@|$>oJm zs6kqJojzFX3dz4x@^kRf{8`w6d2CfJyKS&oMhDG~-H*Td@+gd#keZeECp4FTjVTRK z8GTQ({26}_W8BY9?g8eJKhm_>@)%L-ni?$jFdXsOv7_)e-{m;L5kSl0QK4mpgTN2O^TwMZ8o>Yc{#qvp=4Hhep`)sh-tDycLg2mEeC|E2X)cxNK7VF}x z%j{Sd{^q;Cfz__y^2p>#Bv}4&Qi8<}kPJicx05^0DlRpSgb;W(5k`yxGI)b&tHMH zD;@VOmv;``uVC)*3*oQ(7H`WOzD?LOc>H&^x&4*9g4~~I?*2(X_a{N_Pb7DN&An*E zq!Aj$fpGxjR+nT!QotrONP%jO#3Hp2FK3bcUx%&V* zdK><@`Lr+#+%d8wta}*uK&07o0;4w0hgn>nXE`Kw*gC>sr8Ux%Muq`WBRy%P8p)86>ZJ&$Vix;x2T4U6pl}^FhK0J< z+8RV#f3&s+(N+{Cx3OiG7;=Y+v2DNMdWZYR|%R!Uyd+t13Pw%p}X3-X(#j9JhXzM&ALvBgT>R>fPw^Ga{Vd`XT z_d>aMv0uwdntR8ZtE9OM+-(n;3*DnP{+%lZOJVFxY^Oo}5^L~W8mtAR{+&yMH_>1h z9+q>VkGJTY4}si@Jjq@F+h>9q1f~p()1@V;-@-ovy~~087xlgX_z?B>gV`f`JWN}l z^H*%g$&R_W)^C?qpRw&Oo|6j69{#=QUdoAj^;^xeMSlB$A(kX%an-%Qeus8rv&C zuBP4*sKGy}R}7|v-;@VE%8u|lyg2UPWr*H}{Lf>nh4!b`zrWMJn*gbQf2V){MSETC zIAh0r-(Cj7JfpI&!Pqz0+T%sDle#0knhZG^E-jt}?AUEE<7T)txe)1)N$aAHCKrpz-&>Q5#U$5lFJdER^C-a2UFsGuK*fsB!k=(ywgP@>wOU#! zGG2mh5-c6o!>>TCly(s?tw61m_8?2+t{8_51uSi)TYLpeTi>d*nz6HMD;CsLJML;% zM=azxH-^3i6Sv!9R!cEm@S?O9vs#LofOI!RlCN0lxNF=q(YjlFrHo$$K*1Zw$YfMGW%_5(34Y-6=X;O3w^G8sfu+)@F%~Xip=*B=zJ~tZYN^vso3iQX7&C>%&+Hu$=VBVrP_Kb zGy{;+rGFA*DeCeuwmKl!pgzf|0JkBLJO|9nWX=WCA>Ro%45yinTdWgIzQI$Rh0z^4 zeU9^+q*&&fvw>-o6w7>bBho!&&e<)(-HxeI&uU$H*X_~#P*2|HCg^|X+{G%4gITgYir$TuuR zV}_57@ZEqRozWCsVcZ=n1x1?U-EilCemL&92xoQ6pduI-Wd+93>H%OOfB2r5gFxsq zF71Xdah$VWh0Yr5&s_26J78Mrx#CX`jBnkrII=AHg?VIUqyVj4%~3Bn#21g72J6e! zI$yKl8$+9*^R~6VT&zC~Osy{$>$_=PRsnWvBBIO@Jv+uzabSM=m@z2%E;U~c(|2GS z0nNF``;B>*m|qG^&EF;FuS2?UICrrzP<-fhzB>)&NkY4LOgg0>2Ch}Bkq$C>c??f?uNC4k)%JT zOR~gIUc{ul1_C)O8Wr5(4S!~@ulLL~?F^V_jQl+%{efN7~6qMWwWBJH1!bEE9wyssn( z_Mswsm`CzLvu-g+hV_kEDb}Z+J`J-dwVr_GW^C)BIjaP@r9x}P`u)Jv z`dYF68PmUjMR#44x<_N=JobA{bKhLR^k_|U#`067wU2C&KJsUdwAnG<&3Tu$ zQgWZsao^Um8&Gb%1MXjS$8I~pFZ=BXT^LX-;w*6_C)0;!)1>f zJ9?_)HkcZtL^l`T3&UdeV87G`DfO?m)P@Mh>!KczpO60Mu9bP%LZ-`u^qovUuW1fQ z?=$@#)9b{^Yz#`rVr=l!6PV_pWaJkzeHGK|MgLZ$Lp`O{6}Ep>a*p1TO`sApu)T^* zH`t1tBX?)Nqv35dTp?E_CA~0B=XG`=GGLs>)X!}|p3t>+?+cR%l?CzX*dQ+EXk2_N z{)Am>b&J7wX}Y>J7g=w|R*T~Lod_4?Aeb&L-2_ZsnjtQ|MVEM^VF@yfMIr7PZXWW4 zZZ?QZ>mcUEBgA2sj<2by)?3vzHA@}0v$@`d;-}aS?~NOMFxJfod1WyQSTEcJz~Wkt zdz{?Wt^}0Q-l1E^ysP23Bh8gAY#x=si~@zWRYVX>MI7k4^q;5z*P!f_CF!Ry~7s`>^0)4p&_R8qCwG% z`$pS+TsPe7T<>j)UOW^))u3qCbx`Z<>xY;Ty#~@k=S5(me{>$JivDf&P$Z+xt~V5X z-{>{&jaAY83gWYXq2T*QuXJzR`lR>N;#(#TJAS~1VaIPA9vPAs8B!3v_?|)0oIj-a zziH?qZ}P3H2Sl^~P~~;?9+>b){a5eh>Hp?k(*{!bnfJtm_54?Vul{R(<<|rMG_=~A zgxtG^Mr(&gJ9(YFlKCajCj7;a0e_nHr1#|d%hr3{R-+LYeY$Ajz}^FvQuxaB0nxsH zpm_G|FRmEyr>f5)gFCOke8~EpH#M*AH~aMH@pW)>@y>hy(R;wFvwnN;Vyz4+w5e=h z3oXp{2K64W#FYR3tmbI$J&UTNOYgaO!kH7I*|RRTk|(^*(GFFMZ<$a%al$E^?i?7M zHy(-TG2SfSqa|IjD%4Hy$=_Y__fPWo-4LSq`$LBxv$%9!q|f2KMyv#XX7r0y6TG)3vUeoVId-hB+O;UU-R;{Yx)a@CyF0WCmY=GMJ}UUL#GhI{ zEBdV9Eb7D6RqsZB?yl<+{bcp5Q=&<4eARF-@05urN8^uqZ^LXPf>DB#lBCRN9bwI5 zEa%0YV?XVFTkO<3a>jJ4k6eE$4j^vMmy18z^y>p3567r=$Q7nI657?6z!zZSuRk^n zZ)s)azz>$M0W#csNSkjP@PpZGIfQKYA!H6l)q~kg9zs@n2-#f7Fuh7!2gX-En5+e| z<6Gs!R7-w*I5Z(FGb?BL?Olqo?_hTM@aJH%ZHJKY`OLxcIk<>8CF~D)>q{D05_0|; zAo~lb?K7d(x%~V!IH4VEpKLvZ>;cFyu@7v6Ph#V5A7r0_+Hyw)tCJOwgGY`5|OAhmdVOgzN#x zaM>5^Q}F)&;)VCgR)+dvf8%hp`$R6Rtz1_O^z(8xk;<^F)yjRm!o4CaZ?$q?0#1Dy zmZv%Hd70O`ulfCj*INgZJpdW5@KWmR=i3L_aR-s{(gXLu(&poZ0`Bmnm2o!$tti|QrwOq z?~#rdJ}8#DBLr&}I>yLJRW~S>y6h?}mUJ{W*C{74+2W*Q6(%vIp^NFS9ApYMdPX`; zd5^SC_`oyjvU725HPUJ$Csp0RGwPlx^5z)nB5d%C#AJ(;u27i7lx96^0JatzJtJMO zyhnPS@PTIyNV9BuM*36X>pfD{4LoZAwprxOG14os!7~z*Elzrk!X&0N>)AG7H)Eq` zq_-;Xkv=AT;Mq2$9~7)v=p#l>s=9$^+ko9I^5z)n!`R>%iOCix-L5c+Db0G;0_*cOCoQMk-muyo{^YraniRHCNZU1&vpa* z5F0%s{YZI_^jqNr&vqmIrC`lMzcF%B)eSt`4eT!>Z;p}f#|FiC^{f=w z2yFC>bd>TQ>6yX@o>6y-V9i2j8ab)z2A)xOyz0hCr(=U>Bqm#&be6&-rZnr>Tws;h z=o#sJ&!SLJfMXAO9GNut^6b@=*MibEYjhysDgOjGq_mawEq?CtFoV=d;Qp9yJQr>8T zJ02-t!V9}VUEW*b!AUyM$VpW<=xEgax7ccqky4Jv!SEozQY1%6cJy!1QObLye0d;T zEOn;{hW-sY$H+-54NjUa-*}bBNGq_x1rp6xA17rbQotm}g55v7VC3to+&`pTAe41yvc*YvC`@8Xv!3z7`E_jc zjP&=)d!*k8A9zOH4+U!$`jwHBs&3#Jb>CIp80kK2@QlP{i<9nGn8cK3J>z9NU#XyH zq@4eA&yw=J$?%?~E<=;C+mj}ZoOH0kNz>(Puksk_vDn}xiDs*hlb)n7iLqe4ECn_K z8@(hQrMySV_btO-Qg^yw%|hoIIq3xkCry`clFDPG^RU5763td0C*?cTfJux6>tzG5 zwb3ZcoQogPk_L90>L6vPuI>*RKRX5nn)cv{Y#z^1BhLMZJWQ&u|!v>hdl$PR| zvEY#wiRv^GV z$0b+!Ga$pnemON4D(frqX3+WA*vh1}%6p`ng%6G;>aG_KewjPxPpJ<^Yb4?Lsp4#Ap*zH8*9svCGl-6vHy zM*2E7ct&Ef#Yz9HFo`KG#WQ2UBc(iiRz~tmY;>ITYvnyszJ41%r1k+jQm|&BuNgV1 z>IRNeH=(*QQp#HuYs4PuauJ_F@)|ajnjn2cVG`qvJzhcu#A)GjQJqO*EaV3kW`-=} z`~5s*AwdiLTmdUulNbvHfrV)y3-*u-S;(h_bz-5M#8@Z{ER=^V`1g3^CMmy~z$jHf zYO*CsO_QdS)}*?Hq(-+mq?=;*R@F_C8r_~D-DH|}C{93EchwYM%zL!_Zi799^dsdx zQogtx?jh9m1Zx(0ospBOZqP%h`!BK893!PX)I&mIkK&#pK7+(qO_1KAFo|)-_K=W; zI4ukk)tMy5LVjRjX2^o=At4J1S{Nf1rjZy61%ZWWAq#e&(ZVpOWB=xpnrwxnra@9l zo2e0+#ef{lKY4piPFT_AjLUZL)2!J36u7&)ox27Xg_nCiwz zr(lEMBqm#&be_T_rZnq!$bv@;l!qF;2FdfW(Q(pRq>RusOv(T4~oK$rK z$EnLVKyg6DNT0?A$4N}KIO!V-lbF)1;~@(kE!-ojQ%Q`41Szw%s*fo*LAq1K(@0FN z0@B|rOk&Elhis_ad|J=~ruciBkDNZl#s(w(NO_Nxui%FpjJo?p-Yk?~r%_I-x83BTZ0 z^)cnfNw1Y$(@0FNe9~JLCNbsOGf=491T9b=x(0aw$p^8q!AKuc-XrB_4&er)?rS1% z7J8bIld5jeVAS2Ix-rtB&_RQdm~3&Noh*bb z#A#uISeQv-3bU;gQcY0xC{dk4VhSq=3Y!ut%nk*#@K2g`}o&(v?=g()vqj z(@0FVWKi0)P-*s@&eFcq(h5mUw&GA}cCJ9({i>TJHM%`Ry4EfqR8PSs#}DW<n6(%vI+3vu{s?#_dfe1*?~v`L`6jj1QZm3I3Ors7@~}J6i^&P zBqIhAlM_HxrX;}OknTjBMMOoLwoy^B9Y92(11PPisHlA1u^U@x=oTm1ng3mD)m~?x zlfeD^-ur$3eV!ZGr&hgd)v8ssYuB)cT1G>fm$C2MWP?2v2bG7y;X=C<(uX(x@{sHV z#&F*Y;Z(z?P-LU!A=z=vZwykHj|1hQz$8nduu@mmFgh1cMK2^1I=DHKw&ILk~b?5As4S1@}#1twJ*g_QzRAU0H|QCKf91;!jb zl~fF)IE6yVS5Kvnokr|p9JozMfyuWMg&~0{F!^@!$_{C-U0ewEP?pRciC~J5WNej? zvk=S`av=h-Mf)mx@#tY3bap6wRA`q%`WnlBc1U&|V~recGkgj~HrlL6_DPWqQn&>N z+7AULSqg=32uy*=O`DZZgG(BS?>l)r5q$>-Uk?c17uuz8FVoR$n`HMe*2p38eX0&2 z`X#e*dk^8aLc0_OVUNEKNcJb@H*!dPpQ8MpC+nKRO4vFtm z)eq4uW@A;0@O+_N3P&&mYw1oCevrZ}9Jm`xfh4O=p^&y$ z2TXy{fO5$ny%0Aa2bGAz8lhbZ=~FPjl_Yxy^BXyQ6f}As3Lay)+NH1!k^!dR7#f14 z=@A?-i~^$}g~DXkFrEUVLG7g%^xESfdnxQFv`ZmO+Kw+(kW&AdM66s2OsW(Le-fAj$v4JEldntRjVyX41x7;}g}(^QfoO;h7+@I< zDHIm5=;ag`4e1n$<8u%uMbPB^ba3&})$vRW`v%nmP zjk@X~4J&X!YbOd#vJ78tx^^Sk+eEfAg+{i!Pc}v`?T!My85A1Xo<7+OEd^|9&vv0T zAnYi#OCf!U7tO{yS;^gSM00|h2k3WehZroiN@ zt$|(%&BsA4mcl7QyA;x=d43y7wt}%n4*4@X>k0~18c_-sFa<_~)<6cZ zt~jU$D9jYvrI5b+^V>+W{TM^Pf^Z}b7)Ak!f~4RWse+Vh7>njoKq<*a3daacfzhBg zP6n2bgIf~9DMGsx($|818%ef;F|;Iv^KjsdQLva{d=!Q-A}|HV&=4dIB#xp{K%yYM z^Sct!hjEZy6h11nOCfzv=(mex*D;1UBf@VCpF)xK%^86`$^6D3g4xg0y|0hv;^IwD+G6tm1wAJixzAAMME( zi<@tie(*7(+vm|?ZxKtG@aS{j5byCc$&`eXbUutr<<5P<^y#nu`hjKbW1SW{>w|xdwVVS0lXa- zZN2455MVyDrJbrg*tbO}ZTRGedHW_0;O&$e&x%U$)<<1?M*-e@i1r!slJIsxfA#^q z!O!HgqY}K|PQN};fcFBZ;>~G1Exeb^d3~cYyrIj(KA?&=T{+?dc%PKYe$gbni^)zu zKpT(TkQJ4P+xz2>K2|IHbDzmc8`I%1m%fzuxV{dBdGuX- z46n5>)2a8SnW6OKL5lJp_5a=A-el{*;@FE6b~=7g+Lr zE!913OGI9T_{#NVL#nY$uw<{Br%NW{=yO_mL0$-M87;GSnH3%CWN;`btO%7@zM)Qg zRm#vy#hH`s)|og{<4{$J)>Nf_RH`jby>QP}YPeGUFwzTmm{R08RInnYZdGcTQomQ~ zk4mNBfvuz+eH@lluqxfUUa1XAZ3Q)sZQcp$I+pvJa{r~=e=GOzSkPS0a--3zZeZ$u zrQQdX$Jpm+A41{%2H7D)k4Y{;1S0rRdB^iW=0eP&AVj>J6oyZ0}(klzLOCLrRV9;K^O9 zRE<)1D0ON_Pws|vkD8-Yy;6IyTozmIJjtW>bn&Rql{z`Y!+Iz+Ua35#Zc=KMQvXou zTcys#JXrEQU#SwMs+775)KH7s-+f9w23&4oXtcMq#4m3dOEdYz`>VvOuYY%KZ%}(Q=<+ zD->I;*qfk4%iBu5r`$cDM9be5JD}LNiXETnX*o%$Q$dOKr-KqL{S-T2v5OU(3`%S% zP^v_^H-i!_w<yM`YL!~7+`E)oq10-XTcgxk<-Vd+lTtfX zZkJNKmHU}e|5ED29-dXFDAfg&ob#Tbq-^IXc7b9;6&nLe%JwUz#w&NSQl&~&soYGZ zZdLALr5crbLFLvf^{R5Wff7sKRqR8>K2^-cs!S|RQ7R3Tl=mc1qNTfHy%al7v1>tz zmOQ1VD7OrhXql`zL)14``s7?f!KOtF6`_N`*SfD+9C ztRF>lKTv|5r_=yYqIoDN(L7eM%N4s$vFS?9Q>sqo8Wg)rv6YH#0woq~QEHoV-vK2S z>{0Af#SSWVTu)C+d!>#CCFM8`lxXRtSRcg(DmD?6*mAW}*DJROlxVqGu^EcZS8SnT zjfy=7N;JQq)OzJ^0VSGgi#D-&mtucW>}#cxdUqomU5-4lsiwUuu^v@ z^%N*c`>axbQ0}Xsq(pBh_O@alEA|(~l5mGZ&PN(3(VVW-aHTF)Y78hzF#(k1mZw;O zV&#f0RcbXT$zzRDYnA&FDABh?vF(cOQtUIO{-InKw_U`l&PojcCAke!DqFduKuK;B z6uVln0>x%4bvG!{cfV3Al>1vyqVHM7UQq0H#okluTTr6!d!>F>ZsOUVzV@J`Y$qtz zRk8j`jZrFB<*rq1CMe16R;A`DcQGijewkwTD)y*iFDTWd)cZ>PU8x_GO2O?evA&B^ zqdK~v)-@lalO1VFR5`Bs1c%|$ON>cPw>OAER z1|=y*DmGK)ZdGcoauNVxQ0ZLN5uh>s2NBh!{XT9tkhQJ?gS+%jwshT&$B)Wlvtkz zO5`q9?r^0pRk>W1o1xsTSKOsNV`qU9Eqt5qzl*qw^qr`RgRey7+v#a>cui(=aq+ojk? zitSZwzhd7g_Pt_3+>95Svp`9S&R1%na)*JEx*Dh06^dQ2SP>}EG8L4pMCud^E44+b zZA$F`CAPc|N^)yf>@&pJgl=)IZBOEY8)uZEnlgSQV*)!!%97- z+^0Z^eJ?4tQL*icy$ee0`vBBca&_Y&gkbHJIv$kRavCVn+)J@OiVak37%0(l2`JHg zt73DNssSaMmx2<__b9epvEM4T7L;gS2TC-5so1wleGf`B2L^hYQ$PvUUa?aY%K#<% z`YP7e_Hyfl+W8gN5Iubn3vj6#44D}$SFs6-l_^%C*kZ+&Dz-|o)rxIWY>Q%h6l+%O zJH>udEFIR1&7HIy{S-S-v9XHfDpsOcnPRkYjp$pf*eb!?t!v@K>RjX;VIx99n zu|bMWP;8Q76^exvYf$V?#nvdcRFkSB$_Ti)4DvZ* z%`wQ2h(WDSa~fh9F-T9uvSW~8h)s?`Za}Od2APf6rWoW-#16$EYZ1#v5u@dzjjX75 ziXwY~tc*c^2C_2-IRP;X*K;&gUm)2r$VedbVvuWq&{Z2vRR)Bv*(fp>2wkU9gtmP; z6oWhfq#5l!D)Tg@LNkdXn<-TcLfaa=6%wW;ztex=@)~v!+FS!LCyeD5rbp{X^26t0kSp*DFZ?;^G9>9 z0m85BTi!KzKM;B`KPp2T)6k3UQDg(jwDTix5R&Rg_5+z5gHT^iuf~!d6cK+X0HN1e zqnfjTWT3l=B4dF}jzJ26&`Xjc(}&;8V0A!ndD!&k3(d)*e|-w_L-{6(h6R}@&!hU> zSXJfGWL;}A#HXEL=nut%%p;_(#ot{+A@s75!G!>sgS}e_0HAj}=nst?GBoPN+C#kejSLzvWHRvE zqFB~mBZFoJnN9d@`S+EPL8F39VvCIO@QFRS^NrYfOqpUocY0_jZwD{x_EtjC-|8ao;OX z@~)F|V%}www_}wT^A=nj&-a#FYn+&O+@jT>Z{B(D#QO3w4i;N*G>v&3wq=rdhNdtt z!nRBi&(POnRaD>NQY89ftU~-&tj742*qE4kvrsYL%djz6w1W6GSmp6Muo~kRU^T{X zziNzMebpGh_o^}T(yPY#jaQBF>#iE(cU?8copLlrzWSmudc{>^aqqV(-pb3Z%8Prm zRdIh~^}p7t0&(xO#^SygT9pz1HftQi_bRJ$^gUKT;(Lj;B`j~Sdi?{xzN$ie3d9GQ zV*KK&##(=CRoQV(S{s(%6_pCdT(|rVsh+B6bkldnOte?4Xnwtvn-yk-oe-(VD6gZrHHM`L-0l{?u#Z(&9&KiO8l zP5!w{D|;t8$*ojJ+SRW zJjaavgMIyRo7MM6E77O$G@vKW1^s#U^&JqKZw7d4QCH^}Iho}^-@pqfnf`qYYG+)X zQh6taKa1qJb(=z`L?)($8wMbKWMW#lVGtAP;f8Dw*KZCVuHSG5DVvzJ2`MJJb?=4} zBMV6U`pxx!AWr?O%nyH7bI^_Cq>#*}>cIBRko+N><8I$i>;~jV{D~=)>${=$$oaU) zV#=g$dnjT1kx#d84#N=0A6Qo(I^BZ&{DXAU3-U+>@sp73q{z6m@VHgs5#59Jb!9&v zIT8+bKl1MO%|#6$_EARLja8gqCnVlFg0@|PvlXPFkOUt(a^#37=#?+l{$SQ7F2Q$N zf&<4j`2V1Pe9gghD)9AGja}l3z}3hjdO{Reu+sm-OyOcDAC~lym+T(qWWyE6Vz0boKtCjY|Uu);7@j z51(gh1lCn=IPlgn&u1Qrv3;}u^fcJ*?H<^T!f{V=+uI%NG+cgx6D-HQuoqFB^&6iSKPp3^1}pVD?X-aaFRh>i)Y zI-TNT`SIs7azY>b;uJ1p!Wk)4?CeC6KQTdb37{T2`J%|>B!8k&9iz!kh8)!wjH6_y zv_+kEK!4Qvyr?>)KQ$V)tkV!NY1rYa7a;{1Q9+7!^{I!NZe7u~GEH(+z{M$pXjHlg z{W_Wo{(|Vac238i96G*BmDX$D=#G=6jW(E_=%BL5LpewWj zfvM9f@-UaPoUYG8ad0kvUdNF@KdDw?FbNAtOt~wqByy$*!HnR70#u~SpKb(ehz?{T zIt6wFYbkvoGw9~sm|sC;#@rMG{X#a^ykkgNp@9hl=VV zl-df01?lAGg{D;$@oX-*L=<<1FXul}mY0kgn_~qde**0U5~MPy@NHAoLjw08EsM@5FD$IllqVPkfsdG>S?8Bw)t={7LT#WKHXTQmE=yx9&8w%NfhMK~hT^tQyUM}>D={rV z#YC$~g{O5ZvAv1f?QSfqF0>Lmn0UY|Tv>UgmDn-xof=aPq{2!}4-`RXGH-qE%QLHg zp2@aN;z@yzDBIHM1%@#g0<~RHuQ=fY{O5M1#hTQ%yXvU2$dpEmq=bChq#| z%0qie>=GzLCO!)Wcm^aS_6X2@LdoxRFMG-FjJR_5^vZ4W>t*6jJNe=%@k|2*{RRxM z63+_!%gdjZqIreWLzTC9CbUUBKR`Q7iwXTr8BEn*V4?w2m#wVilr z;0l~+G>>-j30LAsuiWjZWTm(blsGEzJv0R}-FDLz8_ic*AT!06f5=K46TleahhWaw zz)CiUa%FR9LG9I8=frCQ+34g`FQwLbZ9uvotKCh7DEnk%T(BLl!4vaM+~s&)S>g0z ze07#Mg)aoy(ylZF%^qA};IwvSxSwSu7Mj%Q9M9t%iVfCDY?f?F1CM)!AOJ;}8khnb zlY?Zb6agQ@c|~v&=LJ3oquniq=(-cX{RB;{hXAdg7gdt8x3(oaDPW!Y7$- z9w*+-9Ux9<>T6W%_h|j0d&v)#mQS}5?>9N7S=>#QLKzQJ=5mP1&`Mk$pa*f%u}!~e zdil)h;$t0E_h4WJ(k2H<0}Jro$;3wj&jaAPiOuBeHF4aJ0TH5o(&z24-J#8n&hDz*& zwD}YpCY@xbw0kHvTw*8T<~w3J5<59D*eNasoWjbo{3)0z+)`0!C0#0v&S_;N zHdE9hI;!z=7hA~6uVDiH@MzS8Y}4$ z8jJ&(C9Zc{$4YuspfcCo=Zt>#nzTv^RRIOQn=m9`C9RPY9fGD7yeEY>%dIH6r7F*- z@F`Jvn_E&^1syM5fTB2=^K4`=v!oOkTGH!OyG~}U4ZQ|p=hjZx|3uKv{j&cNs33>q-}yMCm}($3$oI7E2iX^&8dpGexZo=)7$p9Xjjd4q8>*BMw^?0-=O zIhijSa5~y13;$X0muwf~P+=bWnxwx{B|DiLXjbOCzM=W^8eGRt=B9W~9@?grw2#`L zlexuqOQ%e!$m205>7QcbHUm~vmh%KP>0i{moXj0Q9DTW!^o3-;)8M{4qgK)(v2~Y? zORFs8eQ6B4zFmqw+{xS>#}Km)i^e^6yDF-AX=Ju7x|$7Im1p{)fGq~^Rfg9gIfk>( zZiiEnW_)K4XLaL8in$LCYDqlqS`QWun%ZlY~csSip#-bCAqMPANU;t39I zn#O&z2g1}&&XuquIY`#X6hmg0iJ1=VEY_Z;onmwz_1#MYV0?TMI&WfNp+oBnH{(&{ zOe+>z1JUZIXu9Qg{pl0}v)#hV%JNEvGEX|0pb;+JuPlWElIt$uNFzsIuVbS|RBIq} ztUI$3S8yIZR%F@JFJT3_Ze?M9K@>hi;0Z2nWOMqSl75oN@hx=j>59rLr?H~5B5d4s zCWBTa`ijJ4H;%{p`-}d9c&1FQ+zaGmzH#3 zn-Q-<`e(A5$7^tgNJ9y^vvF1m^QT#E_LkGAu4cKj`CJT@s|!5?#d#HBxx=2pc*Fg| zY^;Ydb(&FFX1T-Vszt}ZC?0K=mw;*yQAc)#Px5kFL$&cxbkVFL+eCNV+6w$UtLvcE>U-^fV*v; z3b^CwGI28ZpvN$}FB5@g+od)RZ8sL8IsHn|z32h){FE}V++3-reIm(Kcey|Z(U(-; zC{kAlbO=^d2r^!fZ)`VzMzKH>1o{r@^HGNaP89Gb(a*CX_e#3TFg69;QZ#9EZYGIw zO9Sqd$|;t6wL}{NI=^wRq4|xId1rtpIPSGHrExOv4e$)dy-uR{BYg>aZRvd7>uFx- zWG)Y+U5abdy+QiChXbxWO2y3uK^}oE-V6ulo~Im6=A)E5UM_I+MQT;REhwk^3z!R8 z?u`OI7T{@=J4K?82Y8O<7D)8B0X}ij2fS{fFjfb6vg8&?^mhTCNx8)meL|8&uapwO ze;<(93zqgUt5m=>T%0npsZ46&sel{Z6C;mjS2AyND4qet}5aFK(5Mu>27jb9Hx!mcY(z0(AbXP!T ze|c3Ur9}{)E7!?x16%Gqv1$)WJ_Q5xbSaMI&KJDdOCQRo`w(uOG`PJUTvS;;Ee}>N z6nvkDhsp_EB^>ZQTqfd{!>?{!Q^?cvMcXMDMX)?0*@3DFf_ zF|-mIOyY+|qm#!3%W(^*7qHCAGZ|U!xK;TxFhQ>_D#C^++@(J(_N<9vS?(hOuXWrh z)s>Z)md7M|RJiNnxt6<1I4?SG1+@{gSalzhbH4$(+*Dej@Z$n+ipkvc55JX8Zc8i= z^MA`-Ev#*hYf3`*j4bze0`G{o$|!t7*gIibW%-oCs;WF0gnlm#a2F@@rdXD{#N$vooC+6!qVar8V>(t78^k{LoY#;`<8HPgI>BRczVs;kGf%9l>^9BL>?v))d3s8N^$J$h*B+j_eAyi+k0> zO}C{`yA8|twugJX;q5UzIgeBF@q$1e_YEf-f#w(i-`gK<7yB>VPWD2=zuLp}+osz% zPUgN~yYjLEO#QS@%w^xpmP`955%6YJhI^*r&P!;=X7O8r?%8G$Rh!UG-#2lyjFpQM zWc49;-DSan)k$~f8>}^wgFoOm<+|7<3fMiIj_C7~gUXSm23-V+XE=SCcRqeQ*t9_C zcm!HH7NE>#6@-->N%nNEX30F3q=8%{>D+gua*DVN?3|*P6X6t%oPvfZPGQv2(nKx~ z(SN4%5=+0z(ll_1emc1w>5`LlvefY>?9B;zRfe7#mrPYvDMl?G@z{=jPDfnJ$-$HG z+rg%>O*GTpHBstMM}r_I%i?4$^is2D{$OV+tF2(Qv<~uBNSxKJtd0_gJ5O->wVa;1 z8%dvy6WEbzRczy=(r!81k~s94^CKi$L7KWkdz4h(5|fkUJL$M^lY=MY_xLXO z>0tN6Z%6*&s!is{Z(LT>_Bmm#GmaCE$8Wk#y#w_Ck{4YSk{9>2EWgmXo#kur+rg&0 zcOpwE<<{vcV0`N|$!ar2oUh=QxF(!t-648;?h5Ta$xUiDo@~NDl0>2&X`6^5)tfbj=KL9Jwyeha8nfMzlKHcdw zAt;@0wYid_bR!^tMt*4-LswB2^!PGV9>P5slA5%UAy?92E^W2BMiQo&gp6G)Dbq|! z#;%j3>F%_uVyn#!^2D-}OIHmZ#pP|}>^r-&x%gI_{4-!Y-DjOmrL)@HNF@(sc6ZAw z^6})wYBPn(6u^yFzQw@z%i0uD!wF>ecJm8pY0;)g^6ZDvw5qUj21c7U#R8p&TKyCX zl6VO<9mNwvf^Ei=CG85Tr%k)XYLlHP8tEk5MHYHhXtgP!+I3Qbdw#XA8i9kJz%J2zmIUbL&rD#(I&L+% zGn8Ll7P9Qo0XrA0avXQ#cvsVnX8T?Tb~0x&n(g~1;yyi=JuqNb09uZNKKJX8;gxS7 zryl`K(hubH^dXB$Ur>lvS?)cd%R9%ipSSImV1JB*K4w{#0bP$E0tVF$eav?v*T(Za z`kw|&>h2HBM`fMz0>pRV=scd%ZM12eaT@o|K9%eIRh#O(bptH>N!xA)(?K?qp?XIK z)N}Sv8ufV7f-B#2OIn9N+bocVgjqP2BJt^6y?XeW^L!E5iLXJs{WFi@e?$B<>>p{_ z7S~IRX3O3u8ndBo6%P93}f?GhSh~kHK@JJ z7WMt0dM%ET5Zwp$Cv&F&?p!3LukudhD{3}RAzwq>TyW;Bx*1&5xiSSxM3p>3MW4s) z-iV*_D=43eLmJhu;~Ld(Orw&vfpve>NW9}BCX#vd63b0c*CP{e&WMQ>Y+|4h1JYE~ zQ9p3HS()^Ti50w`#-| zpu~O1dCS^cG}Y-h+Q}X5oIcuVGsu~d;S6;Lg{Ia$bk}9|Sxbw*aK5tKhRm}<7mpkK z&}T!O19QGwaIu>{#=Y3NXYR|_k1x8(X*21v!J`Jh;dB@c@On4HIpwQIoXd)!KM=rK z`c-u(qr50%T;a6x%3EMQJ+j10Zbxj(zRgVu!ri28$*ZPRILo3DVrVASEkXWHJvMgUw9N=GjO!LR?|@r*ENoZVTu2;!7K3dMznVv z#63QBI5g0SJt#*`dnedF(ee1yNeos#>L89!SNS|Yf0(5A>WMC~c)KA^Efehreqs=k zJ)m6*slNR?;v>qRCBfeXhs4J&_XN`)orWwNq>4g%H<(mWID+Y@R~(WZ#2DQE7`|_x ze$sh4v*Gp!Aq`ceib5KP{Z^6eWX2jfBtBG8a17BPB@xkFpD3*{_^$%LH{+nfP*^3j zOW|^+qlF>ad5kr3*a#Z+LIH__q~I8-g7d(aR98e(UExcmcCCcu!#Kz;3Lh2PrI2O? z{+d~d_;ZXka<~;VjG^EyhO1o)cMD9xF*F286U`e?w-gu+DNzkq_%x`!%@F+*2iZ&E z--LE4q-liTUb=SLGX@_i2s;YxQkcbbw9ZL3gRw>qi4V&tIEHADl5}IyTnf75fCVWO ziiTXD1}#K3*h5(qZUhky7uuzeCLjJnknH7*HF8)18t!T+sARa>rEr$O6wri^G*C#| zAdSl5KcBK7DJ@}kE(Jze3WYNTrr>TIR3Zu=5tssFrIv`s(sE%_DzPS)ETDwGi+U}h z&)}f*N8$5AyA;yo$X|4leT}h34)=maVJL_feGXU?vvZpf{7p!&*jo_&jG-$%=n$e` z;vhRHq{juIT?%R9>y@EH6c$(@A*ZlEYIqFPTWz(@qeprAXGxfGl!sApe4 zMCk=dvX8=Zg?1@i%XGBulI$498abrfplG`kEMd6XrErBaw4x&{X8A_TH4o&q z7e!hutY{(ClEDicg5#Dmr*{=;fqC8Glj84|Xu&|3ndj4-o}>P`FDB?T8E=7exjW-m zY9PpQ`k`9#{(Nte$iqO{^IkUAmlt_(?~C5nsBKqiy+!FYdtd<%s_(&QrD zT7pX%_sgtA>kd#o8OuN|;NvE6XDhV|)R~OkgkMQ}Hc|+NC53f74%wML6_o5uFVv-o z)0(%f)y=`$gQ+K!IvLe3*n>)K!t7J9{z)G7vr^=XT)1Z`HBhNbm71v36s49ZMSi_S zOJ1@^O;hStrJ8Xai`*AV{h}1P`V($vrQ9?R`$eha+I!eJO8r`?2bKDxQoEGO>)@r` z($S;dQ>q(gpJG9lQrSx7Dz!r?8&|BHnFOVhLE%5nQ3nK~?^MOQDVC*Fwo;{_MBg-} zZU%+_&^H@_=&MugVNjCdF{OT|+-E^aidPi-lTx38lC+;GwO_ekfs(X8D|TFlXUo~3 zByE;b=PP#zC`mg?vC9;@TCp1xn+8hs-K^9M7RTnEYT)AUGNs6l!yH2rU#bzpXHz?6}zfvod`&&?= z?^(rOQ0yJW_9+$U=IKjRstqV9QAbds?=;0S73-te5T)`#iG77il`40RQZ=AN^RE?K zrr0A&J*nJh6?;Xo*Fi~cO-j9~a-S#_#JDPQu2LzWq?EM3ns9MhTDYByc0ePNVDzb_ zU;`A(RcwM{Wr|fOwpg*Himg&?wPKqT+oISW#hMlSNij@SjD4L!iG3N04N@#yvFj9@ ztQd_IC*qKOmxM~w+*;jtN$>SQ%=}Tw>Cd(@tN?Vk_IDe=emGc$1?urj^%zASLX7Gz ziu?|-l`+Vxh&9I`?;)0kT%)Nz2a+9wd<|r63=%|)rq0n+q@!QJkMsZ{(>j#P>cekm zLlOSKz=DouC@#mnAOE-0VDh5R<9VU~yJ-x(t;&$>0Llb^7>FT5Uro3CyTqUgEJL%$ zx)wrL7#TX(j{PEHv8w#vNn==tOuH632)Mx{qY^uI2r;@^V*hS3G8nKSLtjX@{F`B9 z@P!~`sJ$4#C%Vu;ZCNG*zf_yCe|H&~6u^#6i}~0;o*64dXOR9@YG#DcGZWmWG*W`d zy=s97`8`tf`5)N51v5z50KoUSNH;?8X0i;#O!*aRTK%#TIQJ_GWA(R*saa%PV2 zqkS6_nAtruV{U6>YTpw4pRF@~Z2)^F47eb}|EGH84KLoo^g8_F(|g$qf%i^uBMYcQ!uR&h_9M;s;JtnwS{U|b zFncS2zxt?r+6y7lu!{KahPq{KU$VG6=o>RD3*pM~q`n%P6QoDRb%KRm!)wXb@V%5{crn?vH79Kz0&FO-pRDGM1^C?%;V>FdWrU10JlS??}sAd@2#?%ENam{zl;_q8|Vi7G>H zj@E~$!d3~i<3x2@-6yHF&mfOTWDA+I6MIgK5C41MTQdUTw<9%c2%ES!oZdZrTX&Z> zQrJfZMkekR`Ci}m`lUX2VPqMdm|j1GMG40u%P6t^Lzu(5!=cL}%jkr{;1L5qm^m`C zj7}qMt`MFeTQ0EX2x$_@NDWE!`m)zo_MtH2Vb&04+$&l5g9GcL=fkTiDqnTl;ToFM zWu(@A2;JdBMK!lpShG&qTBB{RW)t|HChX-<&k5?+m!OKnIeWv;(blsO2AgWi=&A_U z5U=iVYTYKpw$@Y-h(8DszA2Q2n&J&EcGi4nr7nF9yy^kQkZSCTu@{?PXhqh1=TsMC zw+QSnkpfFBua+Sr70vqnDWW-MZQ6eho_mSOei0~5t!)QZB*HdrPpzXTWV(li(an2F z(9RUz4jYmeoelSlR>TA?8`xBqUY7T%vK*}ua*Co@}qg4FTcV6-TBen)0f|`j*(x@ z!A`Q7OmfZ3+)hJnXvY<)hR6bHuxMrfiY%cErEYt5Mq~+Hxu8zp%3SESwl1Kg_-}3B zOch!{8Kz5{qWE%OJZ3MIXn!;RAT71fJyNp+R3voQ z+Q@Bp?Z|q!enjGtUf=!uaCmFDrWu^W!$X1UDOvAEYIY*F_>IWAyQml>cGify?#y}@ zqHKKKk?H|M=Y4Ni*Ve2jmBAV9*V+e`)Ab`jU}pQFi?{8cfz$%nGrmB4CgM0%TNbnB zzH(DX6VskEP`yiPPDlA75i)IYjSG57&6)UJT+@c>Gnh_hx)*-K5jww%YiQ9uC@FQ} zr%1PHpF<^2efph9%|XP&%Yxuycu31em8M0OQSIXDc8As1P-=j>I}SL=olb|Ggvc_| zFqB5Vm=1b)sBTkg9W9T{DGd#ynhXt^x1LT=Lh8aVSO@3dxqCMEb$5P;-E`2;EXT$~ zBA1w2`!eKewq(#~C+4y&i4~Ig^{z1Y7bB4wzf9?BUQc@MAI|<0QNdo9w4XKxYFJW3 zHe?+>kRq*G;)4R!-7leLj|{nANigOd2hBCV1gm!&xnOGDO;F<({rKOK$6tT)EQin~ zKB4_%d{!7e38{;I{N>0Ivi3;#yLKQ~W4}2qUbWnAl-EId)P#Sc2yucFjNo-Kf?FWy zx3!Ov>K`Mu!Y8%=R<0h=eo401Nq>7-3i%l2}N#*?Z!rWcu69a%>DFsmFs5}R#}zYWwihlf{W zRNormoUlpOiX}DFW1^Q_M3=V=4$VlF`t;8FVM(v;bF%jrf`Pr#FgMHjW?v!dBa-vY z$m*vfV=ADtW_w26yWuev)sLJ03UXxiFlePN)q)sgAYu4hb5bT#ZD=1xLg@CfHJOZ# zHE(6e$cPQesxUZGx0N{Kc%%!qNJlx**g&V3^iZ6t!i!TyN5>PM-*=|7!;^8$=QAVg z*C2W1xwZHm`0r51tW8VOlNP5ZW)FOA=C>k-K@iOPLH0%Kw}F^ZkU--@&7mU$x1}zi z8lS(F0MTJ)xNJaZ!Nc|=prr$d`^{yL#4=Wm!ZOtV8nBhRHE6|DiNYsWkTF`9HQ z{1XVugv~ISU{XA9?=Lmm+%RUxTL!UFm?c0GgZ6R+_0@Zk#-&7_u@k?-b?KX$*FQ(= zm~hPo`t>Rjd`;)&HNLF=_P@+~%YKQqjW7H9@zmOpNF=jt5GX-KMrvJ^={4wFdkU!; zMQZr`{TpZI)^PQ%frn-$gqy-SyI_oKR)fCPOG|VQdeX>xs+~yAu3lTcwne3t^nr?wk zBr}$=8JtJ2uObm@-;w92dG-3P*Z1}>Vdi@_5I4+R^kj7tkn8?4DQi^hYV^b2iHkhP zr-0A@{vXj>w_NW>*VoT&q9Pp*&571(Y8~C1_lg&~4n_Mebs=BeEeb(Ji!37@(!!_^ zWPap1G8TpS#r{6bd{YR@RCuS1hsxR0pwqD@NDMm7@OYq$NEFzX6)9J-&9TyV|LD5UKe6JSx~ z?!Bbsy?GZ}p~T_yF0!hBi2QmFp!yMQejd2F<~?hPvpDCI`r(0a&YpR<(rZXX4cYSs zK(2n09lm~V{dH}Q47`4CRkwMwY%7Ewd~Z>M=sD0KT#b6+zGMGMG&Vsxr460N&Nxd0 z--Hd&AD*~NPR_(#;jO6~b3Uor6bN4x3@1f$_Jl9xTMv0|_|i^WFHJ!zz3#)8ra=>3 zEPVSRa(y$^#C7IY&(?)hEcy#?=6>G{(sbWw6^e}!i_0A~P-OQ%3TCuFrSXW)&u(cj ze12+LIX}-ab{OZUDRt3C%nGCl^7-*y@)1sp^$cw5bqE~_$HN@w^Aqipe+Ln|jPr3B zV+ujBiOu1ibefV({YNG?N7mD+vVR!3GqvVJWJ~8DweFvwB9XNy5vmeW;YclLT!#4V z^?F2ZV?-7ch7B0L3J;&vYg>5yZRjv*K6C=s!}Yh$$~qjreNWbr@a@#i2ayZ<#yvVT zzRt6qyD1}{uGAvodWzk?mwLn3$=-jP9Jitz^&?Vk>iNPGck;=m`U!8P+e!ouGPjM! z?d37l3=8$a3y_~ol+b;W@jGd7m7Ps$h}m!T`k*Ozfd#806L*dd&A=#&bYY&b zi4HT78-5$D2fNZ0owEm4dnMaC{5B+@wLKLXe^h^Tr_UG_zCDGnc4^flfccRR$--i$ zAyUmMO`9_+QP)we{&IR3gqKAG7edokQf-B21-E9W5w$ftT>^gURv$budn%EmIDz{wq&^e#&zP#i4Q=Xgqh|p1?XTMElmmZ`Oyo0=E;+P3spFbsYU}ot z1HY$A8O)__<>c)@08ahzS-2p~zQji7{vI&V>(6_8{rTS3`*Rtn;`{T{=wkVQ)}N;? z+)j0l2A73<1pYp~4b6}I{d#z(z0GTJ12=nJaI>5wwDqmw++cW;yOqCAXtnWav!iPf z=iWa6LBVFeTuj^d_r1|RnR?-WNiWRpk9uJlK2Zv4e^KDmuW3Bpy#Eu3`|p?Q{l*^X zpwV}Bi!7iKbSwXomdG7j5Ffa6MzGh;?VIUdB;8581M2v`i!Ba$Z4h8^<^0yb8^mfW1)Kl=I^7rks~>yo_Ae1A7+ObKtL=)Rgml zs43?Uz@98`%6aONrktm7tgULwc?Q_(il&_3A>9+u|9e=w2H2y(R-x37UEP%PIOKi{ zYz4xHhBf7^MBWcW?<2tO19m^sK7h2#k@i7gcLKW$Ww;w9ya)340{acH2H4dInLChn z8L%a=DS}#A3j69o{~A~w!iCVk2<2T2UKrRsVDq7G0cy5pd{a)X)l_#Ydh6Lub+;jy z&{TIjf=Nwva}b1@>gFP_!gV18wA!hjp^FuI^}ChD%IeQz7b~&L6tr<(+C*3*^%dx| zf^AKTJ44s=k3VAS_%stp8(i7HS1|| zeq3tZ!&v=@)oG~J1oM>uKL{IMf_ZA z=1n|w#%aPM9G*ufLJyS?+3cJ9H}oLG%MLscQ}*y(Whju;0Fzj2on`VE8N7&}bEPi) z8}!h42sJ$q9XS$X;LaEWQ)}tYun(fTO08Q2km}1$t)&kL=dGtj2JV~>#xS)y7&_(f zmW=9lk!4h4G*|fny~1iYwQd?sJ#H-%durYehHGeG32mvkO?SG~FT;|@&!tIds zZumUc46)RwKWO!a&;F&zjqlIJn|%kbOjGZ9?ZSFmqE;tI#+21;4~EB-QKi@4zB76T zef8+m65%SP)_}s-YzyGz?(c-$^!_UqSkGnZq6ffh?R+BHrx>Vwnx$IlxxA^?A(-BI z)mlgQA6MgEpQmKp5k8Z{_(AYwLFTgmnZM3!qn6|$c zc=flhh|TiK7AhWYsRCuA!tMVYQ)N6Ci8Le5PZPYGWLYqiO1U0s_aBcFRDXL@Y(6yaeC8q_sw{dV+pDbobJ+YlW7YO+p_cB)$JKymeowIKb6)Uz9!Lev6=-H080A_j zY&^Qc53v-j&-u+U6=t`vF#G5V7eXNwoE)Hf1+UMUcgzf0TKpGiIZ74uV2j`U4;B9U z=n8jX)mfjj;g||rR>9z-E3AP+s)CU*Rq*IBGiX@_d!XegRnUzse)2z57&*GacfO}8 zSp6R=yzuA>=dr^3{zHZPk?JT#?#l}6{zHZL9$n#|F$b>CS@It$ytJjlb zJpK3&b$*S6aiu==7tuM8jePc43RCM|#%XAAg|29+^em%vFIJxze|0^w-le_~pI9yI zjRB;`5yY_S=6g-OejKlq|TCE)%m9n75HMCe3KGb)ol^-^}_q zljv`JqOhNR&lpEB9cx~s6iGAi{?!f;^tXL;WHEt9y4P=`l;Ub;|04(ad5DRf_b*fj z);}J10&Y-qoV?g19Y92u0qhgzg?-VuNxv7X1%G0;k~bP+%X*j zH!c^-Ek$|d$9^MR!*77`6ii+K!adFtcx8-XHXUP;-dXyGdD8-3PwfBS`#Q;B_bewy z9h=~F{BO zCkHKEjc*fjr-EeNd{J;S#k&f*Yv~S-aSB7Z_wf9#oPMe)#H6-YvqP9O609u9_iSrV zgj_GRqb<3GiI(O}V?La!kiN5wdK2wUsVUpDqXyv>W}gi(7GAkLlklRZDVI@@<o z>p4apNkPN8MuUl-=i|br^L<6bTipG-;*z}}Dq?)W+gf!6E@&6=-eArJmK@yV$;wu9 zls$Z~j0jxL+^g`Lq9UI67IGMKGxOJIYR_Q|RTJke`ev;+AnK*X z`$Cu;#w6kOOV449l)+T}1*XVRhcR9i7#}qQjX<2kn3#%)=1C4?mcbN0OHmlxB@PPo zhYiU=vLtG#e0yw>!NRUb|Ho{@dd<0~TaTp`UMIFXSyoJLUx)54%7$b1h zVT`0sPsO-oB^C!H8s{tKP0xO^64p-*)WE#tAQ>sv$N7p$!t1^2E5@AgsIM5Q%s@Ni zE5>VNp060MuA{zU1o8Wd5hTu6OxQCgW=l`wD`qyCB{2@kxUOh&qdrxSLjtlbJNcl)~Fh*h;#17P<*?7Sj=mlCtH* zq^F%uv7r(>A?*W7J4{O3DeYT|4VTzSyrFDTj>Jw*yN`I6NURlSF~aDaW|8{Q5<4}m znG%hWSe&yM0b`xTJc;Ms0iUy&Z@CKMoyADX7-uo_kxw8q##xL&>MZ7FG?zGMG1P8j zoyAb+>30^>m0QZ#GDLm=O&dwE-%w9a&SEMkcAvyzoW)4@5aTRHpjMs5NTFJH z79%IRb!RccYsFcNC{$-L*P$qJ&SI!`~=A&&mnQ_iy#KxA+VyJnw<}5}shsy}|IOE@&Bk7RX z3fB?w&SIWHCw^3CF`_ZvS&Zmv#aWCP+?ul(;k4o`<_}z!gYnK{cA$TQ&qc5AqkVX} z|1%>qIg1&K2RTt^G19uNRO;g3EJpgcU@G-fa27)rld~A=#NaGOqVP=$7|voO+9tJ` zxW}7lE6!rxg;Cr$d*-0u?&Qpb9mzqmM#ge=7SjNzRcA3@W51ACXEBc9P>5n>#k$7v)Vua&&7V}@U|7_G*j9gvl z8T`&--oUwN=`2RB+7`}Y1a93~jPN$K;w(lu=mO%M#R$XaEQX4}*S|W85d>Gh&smIM zxZ?fJVg!V<7`jf}ader)I*Sp3<~V0Dg2p ziX;j*F%}i0SfVZ6#0VbeCPqNNn;5BuW4MWtB(1xNk+B(WVrX{bR?_UIH8(MWx9TS5 z*XWX3x`~l<8Sf@W&=ziD<|A*6Va5jw+{B1gE#1Tj-oj0cG_{s)Vg!$O6C-GAZerf% z!K_s`F~VxaO^h&N+{Do2GR94e0B{pS(@XarF#v92XnyJ5D|Ndx-c8IOxL#YjiTM}f zF>YeoqBD0gSNhzJ~;O`>nf$ zk;}eyw=lwM=@v%xx8@ecEGuFhyr|Qdw}ji$EsWr;yM+;63%4**EirCkq^-2(7KY{_ zM|TVJ7jE;dxrLE4y)w=%jFkRpZegU(j^P$YI^tuxg%OcsxrH&k`7zwWNNvC^3@y~% z@5HQiNMN?RcaKP|ycld3-Cz$6Vt&PQpbbIt(Ok&BqilOVV=bM;NKLfnBt|$#aS|iU zqd18XCY;1vKz6sc#qd_0#7GfacM>DKV>pQsfnzy|p%0v$%+{R5(CwRJI*E}B{b){N zgd6W9Mp|^7lNhn`s7_*zLoc5kBwsKox5q9`uxRPw^k%klVw}W`WZq@??O@ZwpkpWc z3FAsJs~>d|Q^}IESdxZuk)-p~kxC-sF-~Guaf&B61r1P~!l-TOB<5X~-p$f9Y>9p< zc}KbcC0%PyVkjZ6#{AA+cmYYvkHmgXZ(P~Q!E^B2!KRT-G}B$Rmg#&>VklV)y*?)~ zHLNzwYH9uBtB^RWTXzz(nbU9Q^wjxC`h1+gj#R6XcS|QRKX5YIVlCaKilLRGB&E9! zl8W4EkRMX6fPCj{h$IKk#qaS0@YBH_MQQklt2Q}E0hiTu0-UhcDdL1>_)WK|pP(K< z@}jFkQg8>s@(Z22S$;WwJJ@vBPGl*i+%kOy7~eAWIfaS|g5W1YlE%2+2clGJk&LyySQYMne5U7W^i3MYeGn@~BqD`#(rmYw0) zcC9APa47MK^xPL5x-d@!&$7GnZ71s_+IW=ya8>f(6NsNoyNtpS#mRj*3|c3VF&W^G z#nBtbZj#C~Qa6dz$ul{0ty9=93fopfZW{UNfE`R?-!dggJqbtG3~Z*w#S12pg|)y= zr9FKhNL?G;jI>aM&dsvhCb5s1#Snc8M`?zqr!DLG7?|j3dsIE>1TDKmlHCB=tvG_H z(Pvao2iDUM*l9+PYK`paqTY7=T{ZO`_614Y!R&;#PjOs})ZeJa3zFzA8ok_XibR{d z`Bl)%4(uSPXOevgQnZD}<2aUf^$ORMjd~Z@Y5s(qch4m1pWN*0k$w@X<$SpXYfH>_8Dktw` zw(A36r;)2UuCSAnOoe4kFPtgRDM<#>IY%}8BxB@paKLIP*%%{Nr9>+6K*8NtPY&WrRA29Li4%CdnA)F7HL;i7MY=o0& zIG%#Ha`wP(*-t0hlaXdCvYQIoicHVUrxU5+-wjL}?9+*+;fs}P6X{Cd0d_aJ^q*xQ zkN}55bk){D>0LN%E9q+JJcG9KJ>x$7@aEB0H};#eH*r1yyt>q?jinPN!Rb&|qP-Kw zor|0%K=4g9FpCYG2TTmiiZ$>Yw&xF|+jojg@n^H@!UQ`TY9GaM5OSw?_sU+Fz@Tms_I~@>I7E(cT(L;Ix6Eu zm0gHQO^>uGd#bfNadgJKY-cmo0Q@s;h#GFHOu{t(+1W_5fO%GL z8Wzp~MtUw{%!ZWJy8=HK8~jAZyAa;90Y8-f0ZH$*6l4CV5kn`ii+Rgl>e!o5fQguz z-hh;wwGd0W5KDkbN3oO#$OODc(3!3yyPgNhYQ%f4MqDnbl@1m0GkV#;%aU9K`#cg` z_U8e6GICpiEfY^d&a=+&s_k>`nsR_;E{4E;I4%K`iu_ORPHqM3Y`AkR$235YZdD-v z#a+~|!R%Im=ocJ)7*VU|KKyi}o|bMJ**~$CH%O3uf0{|b&zxW%CGZ=~t(9uZvd?tv zl`!|6G&EC;zgay!lh5QzItN&vCZx7|JH!h#Ue((|)Bgz8_nAO=U#CCg*IAisQt=)o zDFPsUK%H1UY48*KYFO$#pdwYvQV)@o-xRJ`>0Waa?Oa#aSPgV@u(JWF!9d;JDj zXP)@va`!q3b(eVu5^TXS0K({bV9mrtTBXhc)9N`ARNsSy79`Re0Nv=V8oMx&*4|Y0 zXVc?UcsI{4w(KGv0J@ds!*8Ws%p&hYq&qcVyM*KW5bs8J|17(dfkafCwDqZ+x;x@6 zOD8@2!UX#eN|u2SlZQcU*_mGH7IHT{9hj7EA$P-8dz9{+bjvEhaRP*;bW0MbbQxe; zJxjE7_a<=Z#I*YosCZK$(v^#QKgR>rlf}{p66PauGuWbWIcpq)IwWzq*=h@jR@dYF z<1On29A}57;c_~_x>_lt3^kbvHkEG?CUJK`;gGYuGG=laUjrs(%;YlmKz(H1hy-`y z_(98f23wRv_i}r#)H0s$FJphU;}(d>DZPN>ODWEy`2a5D^Q5A+!K)%4%Wca(+osBF zfVJ=9ApZo9!eSY{&Zgn!2%vt{UqO~?Z79w~&rL`pL)t(}ehV=40y08U|Hdtv-Mw0P z*|Qm%pF~aH1F?tC_O!o4+BX9_^BE+z-=Q%*4Yhm@P5MTS9C3wZzem#OJkI65WY^;y zyFvtVE*oLl@Bf~maSY{-oseVMAFO3)BttijxfD{npJ!+|LsLdxF%JF(Uk2nfZk)?l z@z8NYE&I=}GWL>SC8Nfpqx*CVW9tMf9X>qQviELh>}iAX+~xDP7<)pn@=GqMvh07n z$Jk?nRSX|G7QOUt##S0^rrUoy5xFlm)X4l}kuhWgN`aj2<){Ud`v&*8a2=!(n6TXuqN^`V;iPC&VC zT|0rnujlkwheg1dSm8=H-qH5Dap`Zl)BSJ$iEn0jhuE^$+H29kDlmaqhbA-^)=Cpz zOO31Yp$S$`TS zSp`UxoJLCCrs&&r#dM*C$`2H!YuxTa#`Zujay~7JVtsi_rvi213n|agU`qz7d=$$JZ^^u-BDan zQe5o(IjN{<@X9WIAMt)43Uo_%x~^fbl7pS;Zih+h#}yZsR9|$pQ?jDlm9-ZRxiY(V zzpOEzRbB1eJ9BTtvV~3?caU2S;M@eY-JBG6 zwDZOscfo>Ur$d7~c1&?`@k7qkkh6A<`!cX}#Y#fX19KURk$ZK9`*P96PWrZUoYDn_ zxlZzmM;>~FoMa|{r@d%W}Q?e6FWgNqAG)~}yZTH^M|FAbb|LLf8!nZG-a z+S}Z|wNATjH@kg@6gV5_yi8T%?65xg?y0ZmIwwpjTZrJ|ZO)!K+jcu&!@s86_q|%T z??<&?zgO#Awaq!MPeHfsbDb;Qmz^{r^W6~aUPVWuov9%{a~ldAg8LqJ$tIt=H+iueS1E1 zj%#?-`NP~n)lPEJ!_L4!FZ<)c&hv8zId58nOxTCRT~;5bIP|sCsiEqjLTB89q51gN zx6$bx8eHgHHOU$MmGj{ocSXbCl~m$_E{`=X`mVUx&0OqWy?(>kK=Wu%IW21G>#hlwbS`!XUGC)R?*$xY;ac3UGSD$yrH1D#vMEaO>Ic+%7@(HPTQ9^ zx!1VYJXKhNW_1>tKq+#Vw2H9e!hY1&2rSvL#MwA^f%DQFcW=XBr<2?8I7EsIvkD81 zfYWyLJm;38yT4xPj9;+It!?xrc206%9`4){a;_uXk4I#11=J&WKoTXyIElERqk!Oo zBPwn)3h1CP0hLk4amIBN6&2K15f#^w-}9W)UAL3Kyz|%h`~LVYbk0-HIdy93>guZQ z>Tdf1?62>zziujz*m=wCn*s=4AF;o%a^AFCN6uUO{7?4cVaQQgSy`U5?vrhgAVcrN z;B~y%YR^rhg56G7(8uZa_PMF{xc%p?wObi)zgvqY`)1kNPp-7jTK?v+oz|oX_upQV=bUgatDtJ=fKlhOIIV?q?^hvFiedx1vQj!|`u~Gtyaw?YRH!R%og7&{~|Xl}>}x^*Lua ziq`FwS8Xg{sn4~yFWuyHb2>Sx=dE=*vQyg_bRsqO7fUy>?KqPj+cV*^w{JWz_q<&6 ziQAlS^0(S!);QnZGGVAQ!5MESITt&Z+VhB}VSC9IyI+ny8KB-CoMTT2+mDpj<7lmlU7nrW zCok8oSdug0nf1XqoKxM)eBrqz`H_5lBqOXtWVuO+>#qsGvF5B;LaONM4wefUK|#duWeI z;SpR6*^Z4DXn3J!FStvJ!n{TxcHv%lFf6;I5G9o|_J-NilCr|N_|SD$*jvZzI%NgO z)rIr3JxzX5p++>iv_)8OdEA&ywT#W&n#fjqQ6#%Cl8@{ZEyym(DJWXV4=wvI#^54A zVJR+y8AWf&_5@D1j0PEkn{t4oR^xGr8)mYdf+E60u>DGJMN7uk{S4n9^o#*VXC zW49o)AU`Y28Bw?(yD&GBhYw?vmg0Ne%FW3}_Oi9=JO!shVZUN(QBin)X5nHnD@B3I zaC?Ns$PA}na$y*k%CoU=Jcv@2l#~^7C(T(L9zA93xN)EgQD>#7R2X7lc?iSaec1M5 z+m3BBwi;~fu^oj;A~woFuAJsd2h!U@z}ztAlnp|D3JRgSbEkcf4q<$fi!s_hmAj87Uvya)uEi@qUH4R$1BheBMlS3 zS^ju&_cr4r`nB+|q+nUR6g$GN_tk-C!)u?Zs4J7kF>H82G5>$@!%KZ@{}&rxFdN`6 z&oR>C1*hZfH?LlKiDwMTXz~o~m4_E-{))ca=zR6+*>HZn9dV3}FCShSoC@FVw*fZ$ z1%1XWzs}t+pe$4Yj`fybTIaFp|AKKC;jXSNWr|{csZZ`U`)$*~O;UY}Z>8r6AN{N@ zZP_OI1$W9EZ1}D)1x*3*SANC#dkr?`ma*F0@;8A)oBl1tK&LkgM#!a#mLONW+WQBS9!HJm0<_EMU{ zO)Kdb9unw5ZrNH>C|nQ8ls&QGTh$b<2f1QNFTOk^MRPleu{5`nytLTMrefn>q8y^w zq2$eOe;v@4pVMQDqPzwh3Qj>&Umf@?9a_#5^<)ZKvks!MOgpTAYMH1bA<9a{4khn# z`}0EEyF}k0@>1wg85C1oQ%Xhy?UmLSE5z7;!iEMx;U<8KQTp?lIyB{-Z+st{!c8EF za+=ZVYeHS)V1ce(bDH_Y< zi(d+VKrGWQfxju@)0FrSG+cm&`ZxiilfnTIT*mw;GMX=6zE}=pV<8UI(<$6oNzqs)UmTM>j*a=Ed{VJP$u$H1 z`l9VF(Km>+pl1dkY}b^M(R}&x#c~)sAnNH9ZmgteER(M=)LpSLUz90|9ZD`X@aK!R zeT8cfSp|&am4c>#6wPA|0mlvP=mLlmg%JpipB{~GTGu*g@5RPkQEpW1P;$|NKUcK< zS@aDe<71iD6pFUkXetuXKx2~J!UM;1?Zj&Y<5^U!Vuz9|4g9ImHbe9cB2RF{Ek!46 zG^HGv7}! z2+h?PhyAY}Ux|7wf&D8QCj|x2LYNG3wEKe8QY1vVL$O22B@X`DqwU+GZxHzxbnvJT zirv^~O8JS>6bD?I@`%zD|8{B0en-k)~-RP-+^JDYzm3FwmbbJ%{OiDe0wCxalQPmWtza3OBu^XnN_s^pc|K zrTfxL^3v-C4_B$PH4qOdd<^0(h4j@5nZ$AE#os(Z_7Mm~8>kwQolsTy`N3c<->1`3eNPJAc*|>|gH5e6(b_Nrp z1y0jmap=O08`YY)oKfA2P5Knb4T>E~t}^i#mbQ(eZxCtYQUgjw5r>VYl-m#uG{tt; z10}ur>R=BXg~Y-1yCEJ>Nb#h=bc%B%&h*U?&naw#P*0`^@4!=x#F;_CETCdHLiCk5 zGbqLhOs9BWS+9PWMzv7JBd3rbVq>LHeyrG`=o>^9x07O0M6l76@?NDW z?ssX*p74fBq3G{Areq?%y7~?N6U4y`ijxJVQxqsm!BkN0B@i2wWdiNQ(+rAJ1*TK< zRyLZHX)Wy$=VFOI{ahGnMoh&VMn-lHF1j|oht=q0I7 zXX=9mrc*FEU;q0c40lMJ$!|k^qL6XaaI&}mIG3M4B46bD?Il8N{-?n@)YwA?(PpV8j}a7(aZ|K0@gvBDv6 zGEy8(iTa%4#rY6Mv_NOejLcRTfw)znXGm`+2{px|+99ZM(-}8gwCSFGp*yx0kS@IoJz8r;^BR9upKXnAx85?$OABevz zWNvz41Iwg-P`DKCS7QUqlr|{zYLTA0Nc0&iA$}2{lm4eDcwJNXbqZ_!R32r*QlXXs0h zE^|`^2;%MERoN zvII(X(Ga3^F4H(`ch!Eutm#5SMa}uq;&B*fOQVEzZLq4h4q2x7S z7R_(_j_4aK%308(WmC*{O(_}8*Wj5#M^QI~C|$2+=e-L3RT5=JH1-TH&F7&#RkTyi zg1Azlr=_oJuyNN?mMV5Axsc1Bd)iirzCq-pz-TZO+Z0mlQAqK&LW+Y5DSlN*!4%+u z;y)x7VxpSZm*yLzplcR}E_9bR&kSosGNog^!hU}o&q2x+5e=X3q zmv9Xt=K-V1Qv3(g5Tjfzrqd~0(*Yb@S!J|AZ5tX!7N|$zw%)jHtOz))esZ zo#qNzTEK^Ink!_5!7@+Le2IZP^};B!_P6;%EjOV#8-M@EF0i5e?$9L_j5JB;l*5v&ZYHDX(>3@q&KCd*j&afw7=N8gqrK6o5s*p z9r68|^IWOQrKx^L(WRtZJL=bX3oYahnzrbW<^9;|z2AN)d1=_Y5PThQJvQ$*8+|b^ zL3!7!xLSkPp}Ze;yr4vmt2w+MG2>Xcy2RBU-jCP3$a$BWBEVev;r(dqakTM%p8?Ot z(SH`M1n_!^g{>#H-QYgNwhh~#vHb}fSGw{F%v0FB-ydMhD-hn543FnbdmT1!cJJ{? zn5*Ss8->XTCy?Hc(?A>H0obVXey;+bhxx(B*f{wagY7+R-megSOgjuD@4{G-gFX%{ zR{w88SS$;afbDA@BK!8?2{X_^^s9CR?*g%)}&z8JaGnv*&A z>f91p86t<9yc|?oB>F9%R}0+^R`sZJJ_G0ZGw&hL6!nd^bRfs4`^fQ}{78nr4XrqT zQFeigrL629^)1GdZ@gZ)urRxz)XK-9pbuqm)pl`aL3SjPZMlUYCFx-@hnqv_o~&3a z4QPO%9Y7O+lC4v4m?%oX!7)>~K0u=djR4|oG}+2D+6o}`vI1y~X!&61C4wFWnks0k zvD;zn4ja3kIBL~Pf1s-+#vCB^a);5bHQLvWmT&LXxQRd-cah;L47b8?^@e-ea4#D4 zszLuU=$u%LMbu}FwLz-~!0bL;IdmznKR~(+>g?kN1xi^3&3HOEJ zQgG<1_FRKT18IrI8E%r{UIn^Pyc`CaAm}%sbU_2r4Jfw+NV(-en#M{X^?Zxr?lRoh zKo^OZLFhCl3%U?!il8fibg$L}slU}g>hEQsabhs0x5U7;pPFUzej;IFV7k6O9s6Qq`7K`E>B~O1kxN_ZqPO$P2)WvP4@@GC7~-+ zZ3IZmwjW6S^*|@6IXD|g~QMJ@zMKB6OK>_W@ll=pc}$@ePpf^D{9Zyh5~VfUXo28`i}v$yP@ojd3c_Rid2* zlp$z2&GR7$`@{r;lka$ z7}prowg;Zc6T7|!oeQKn9Sx*8%`#kp;no+nf)^bijws|JOUqw8|`-%2K8&`Y;y=KtJkjK4f&?hk- zHwmsa#;NE#6^$^64@N6@xj}gbEikCcpoa~5)}V@3o|l^qy4#=t>P6E?GUzmeczaH@ z!wu@4p#k#GnQs&B1L3-D$Mzfiwq?814zfy#S=1UpCx3Kcr0MQ4Xs^+}4Wv2UZ@7bo`_6Db0jZaN8x)HH zp~h_oq6>3P?TAF(}7qi-0tLiw##}(9J-a+A3pr zkI`-eQqS8B+G(_Z1yav%8ty&AeQLPh47Z}M=kF$i8i3SGR}9}ZwH^lb2GWub1X8oM;RXO{YJ&}G6Y#h_INPXpuR(7Z^p-*I8MMzJeq~eR?lEYuL2nrJ zmO<|sw9g=3)>bbV@>>J3wU$faZk`P{#H5>UxT%IKFkG?WRv7Lk!`)}NjfUH9xSfXE zXSn@_<0}C*e~zg?KCGZzAHz*BT)N@-E(WzLHr!2yt2f*x!)-R)Zo};{+?R$sWVi&> zq^6N%>a>sH1{f~ga8nHzG29}E1#WbP ztsv_1Sid@uVQgX}1`psb+hLU1f)LwYl=&+{^-Y+42<>gc{Djb<0<*3O^C6g- z@Epz0|9~0RgyH)Vxxb?}F~}WTMU-g=hD*7lIqV5$duu<#cT;lJYt)8qmPgPdD!WmMA9gEj z*lt?>2DmoZt+3$@^ocFJaewm1W6KWAmi;7z`=?(?G}E$A0};f)j%oJeam}BD%?_+X zh&_4J-!#{z6=*w<&J#h4-)z?=9vVCFI?B}|%T}>#gC+!=T*xYWBUyp)NjyPspp*IOVPh7$e)iU zOM+S`WKm2DR@TI{U}Z^+vi|ij@;+RlkGTd2xlJ9=Z_wZ&1JAOEQw5(bc%WdE0z66t zn<2gu`4e1zh@5~91agUXYkoW#C~@C z1l~HuZ%idt(+dg({9|`g#oh2^1BR6HP6&iK=L=iuv;E_D+8ygR${MiUKZZY+4Y>-~ z_2;E3-!B_!-qhVk2uvE&Keg#tx&hbxzBwJMQx>W1_nzIL0Zk(B#kqd@B+GhdnbJDI zO&a4L(^GRR(w&S275iN~p2$&-QT+#VZXf;ey2PiKp)Qsyce029WBQ+UR@4aS9^4y# zf{QGg{7{aw&u+pDguhGYV_&fI;LEfJVfP1}R ztw+)h?ZpHEK1M=ai~J06(wJ#ApVX!~)!QSjYNsXC)USrwtQ~c@_fog5CoQ0#F?~wq zm)F&%CDhJxYRi&fn^1Fp_fSoj?gwa5eFWi1G+bM`87#Ck5{uf(^O60g3>8h8suni9 z64cb@Pzxrj1(Vl;DQM2DN=8~o8j}*M|4P-~iv3?#d>XE)B%N6O3Aq<5KK)>$QzMp% z)&B-n`Oy!xmBrKviE6l%OBbx#t$fo(@1LH>U+eFmRv)?k%+#Y_w5fXvtrc2{QX6{a zLVul|`&;>^t}|av)>cN~1CB4MeUd)KeeZ9gj=RHgtXdu0BjfwisjXb(dep40lC1u% zg-2Q)+aoniJ@N{if3MVyT~t@Lu_mOg0ehb@n(Y1k&6sC!MZ>BoyS3(rnip!`|Mvcx z-L>N<)J$AgTRV!rC*D`{!Lu7!ccmBAPC5VEhif3y?yD_ZS2N}On$ih1l{BkG{0|;a z`u6_Ho!4D)RR$XEAGN-do26DOyQ|qwuIl{T(WAAME1KI%6KJ~gt86j-uDPkWJ^1Or zj~>;O>;BC2z2l`%?L?>grNk<>a~xo`ovPnWta_IL%{>mbw0*UeLr{{`qcv&!t6z`A z@DLkPo0gP%1Z@DJq}l;Eu$-Ff^x(SY*P}jp9WnXS% z=4Lsp1zuJ{-ermkcjBY2vJ30CI)ZZ5rF~peoh9Jyn(EmC-mj^?QotKE)iVXWR#QDy zz{@q&=>T7()U(^t(l_a#YR49A#G$?%$u_2aJgzZq|3!^ypPb*A_UYutw9ml35AFkm z_l<5$`*3Pw+DG8t2KP={W7@lyG^V`=-M_%Sk=~g0j|q)w|Aft((7grjwK_^h?FFRs;*`d; z9q_pm+}8ZYv~6P>)1JfjJkt9!xIcpX6ZFr_Y)pGL(wMdd+~Y-!X-{0xnD!*Lr%D^s zo(8w6xH0V!#CsI}A45JjgL@F%M&#w8%No=E0K135t%uw&rZMe4qaBC2E zE#j_2+T26rd&a2LYAhuz)aR)M<}<+=^!y&XR80CzL;^gGl?J@VH8d<(c5$d&M4 zi}KzCT^+b8aMg%=1M2j~DUE3>tj6kc?7Ah5X%$l&)0QFna+p-I`;b=gEZa!!(`*#A z&#^_+y!h<{iB-G7Hc_#SP;nFoW39BIn%jzL?(bZMsotJg^-%NZY+2tvPt(S= z#?B8%x@h#~jkH!=;3%z`ilfr!yGdr)Jdv5|8nibwy~^Fe8fk!4<;Y$AvYk8<`GzRH)DS%?5bug$8B{>w>D$%6n1qpc8#z% zH)A)DO{-z=$>zoV=(d?qcir#WtC{vvClRXt`v?meL0a~IALlAb#=?Rp1#>$kCXPb|BL<#=#LY1)bUk4 zj<1S8zUu3rj+@pS$5%ajeASxct16GL$~(Sl;_+1jkFPrM_^MxjJZ_OcgsSOyzw*mY zIwk0MWK{8}NPD!&5bs-fL%f%EymSyjOZNA)XXB{iBw^W?ycu1$bm#ND(TbD(xA)gA z-T3^K2s|EF{qDE-M{u5$^DoYmpWr<6DLVbntRrKKMI*!c(Jx}ANa(__STJwd*OgRs-|)U!Wh5Sq^)xYAZhn;^pSRJ?X}lcA5E;j z0s7j?1o-*l9Bu!s43Op&3v^-pxQGy!AW6WI^af_;L2E`jOi5x+Lc zuQmIkay8Q7ss2rzMpIv3xrz;mC+*r*`{9&v(7_$u>uW>X57^Q~q;e7;`&-?Zz`^$r zyJqZl2Qx4MaBHD*J6q1dufce!9ZX{)FO6F9x0(svle8+hJIB;jvRb85rgmpB^t>WX z^xzJ^hwl(Dt^IBmds-4E1gE8LUs=hl*PdU!lP)nOVBXOb)Kyvn3mJo*?X%pdmQCvI z;D=HK^>(y-^-iWyE3M_FvbfqQ*CDmZY+`q4^{D%?1+~`}SMGKyUkhUhQ*&+c!HujD zw;%^+AYE+_qnIVPxb8gg;0Z{vaw}W06?yuL4YhLo*1TBxkzM(7FtO?)OlB&VCRvG9 zX98^mlLA?r_Qo;FdC-AMI{>?^P36`-@EJ_JF~+z!ASb=OU+jpc5?A>%`h<_5&{X~c zv=Pj6V!G#x)#@+K^A}3I@o8hcT8wrdJ zt%JQ`$I4yit6YX>`@*%A^$1mOFN=BR5zXDIp(x|wUv9J+?B?*Z&km3{g|4=HSgE#kp4UMC|q>o;YMZ6wD)R5Tl7)|CV!{l zBzo>IwbR~P_2SRr;w^CRX8a~F>Ox$L z-@^C5cpmm!jD7N*(s49NjxlU6#acvq+e?(?;pMU57n z+G(aUuABHiPHlD5-ma;WnUqefC%#da_FBztS7Kk(O?w%cuBqc(Lg&^sw{ezGH}NlZ zY1`|jJ-%#*%+c#6h`~ktd)xW=`~N1@|JP2caS^J?ygEV8K{fB|oXE_n%aUMOJGx+_ z6N#*FNXXtyiIq8ItXV^F+B`cO}}{M5iVJvnS5f_1qy4W1n&phpi5? z>;zs7TU1c_TBv4G0S_%Cf{S4|AFC6I?q<)O)>i+(b0DG>7gW9)tSK%yScCJB9v^aW zwrK1J^I#C2KeHUJuc}|*t682BtGM>hklvj68^5JDU*<=KjU|r+RzsXWIu8tz?foQ= z6Ow#{yKbpYmT~D5%<01DL|GY~4(lXYnN?z=6J%xX7Dgw>%A6~VPK=e|kh*TEPKuTJ zlQ23VR%W{}HExNRpIO3G`51}yTscbMBj2J~T9f%IJNK3?AhG%um>y?0y?`^Ms3s<0 z@D##6_6D~HAAqWELA0*5`6O1~%#-Rgr*=%iMht%o;2Z6x;#rP$?ZoOsIAdWjQGEcC zU2X+vv`lGK(jJbJksCiN2-(XPW3+`d3b`5uj#fzI6dpDg71Y#oAXfQOsOF*q-|1pwu&>gJ`|QWfW^ zTITgjoEeXk*S~qHma+bLeAVwgRm*y<@Kh~xnC+=r#=7|Us{Wp;rNd;X*rsyXrrarx z343kK8_x`@ot03FAUYcHD|Zfa&(9dz9Iio+iGjy~0hoF(yEcRaYh>b$JjQ?E zid5Wzx&z{eT_Aw370l6DVs(aK-aSdIeina!*cBH1wct^Lf56|GAFH+}uDDmMIR{Cs zu2u|}iPiavF$PMk=Hkd@pIKqzRA6Qc4lFN=eSeTLCy+x~ol!m=IUWCV7BZHxQ9JZ7 z<9js8@lM5GD{96&o~y&3VJz;}L&fu)cg8K~QSrPSxREY&&VqT?bWXP?p?17Xxy7w& z*Mu7d%fzZy;OK*u*4)ScpoQ1r)&;9w$9z&oy;mX`MkMQCBh2c(v<}|NNDEAb99+~a zd}Xuni_O9hGz+h67A|ZSo~+^8vCPm5`+}@X&F1(}jm#OVUy5{0eVsP|zeIL-g*aib z#+>_d$yc?tyr^6|B~MxD zBNy6>X->S`k<*e@nWSdY%i%gNGOLxVcj-<=%BkLj9r<08p^;#S4^uCqm|RD zYTh53+$oX>C$;It%U;I()2c}?cJ0KdV%Pwy>_r$H8C8N4(5;A%yKrp6zY0WQSJNqe zFxpkY3gnM2r|qw)Unf{1bV3Dc-0J59(xUd3&9JDcuQG9JZ{by?n)(&WplVoa2$;KT zk})K(Y$sEb9teFBx}eK(T3Ff1pZ%eo605#pR4uy1teaJj)`6OH=s1izLNI~5BpsIC zOa=a>Rk<~eM#25>=AWG#OE`-~*j2#{TVXA<=H9n2YGmO6tyiaoo_=AnEkbjikH16dwx+dvLXAqsuK+!#2-8}Z~P_Mi^=-=r>XQK5UVKi3E!OxMrHioBUJp+#a$}fA>rX?dq zUKExl!Ru0JA>O1@+DkH(FiH|5Wa~u?p zZVpiobkW1j1B1xJ>AnOI?CJM0u0yogy<9ujOK&#^u9q`>L8Nh}FG)D<zs~ z{h~2OCJf_HrS1$Kru>Bh7hWWVKzTS7_sbNTxniWNhI8q4aJBu6jM-C zn5%}4VnYPy;iL6YLw~ZWZ=8;IkNmSv{D^+v08;1EhKrtxCv=isFt0s9gNY+VBzDr zmQ>f74zyyv3b6KsgEC_fsILR`9yLon+lu)vFwf)oMmH2;6QM#LVxybCC{m6 zLp3fqQB)6mDy9v7VvuzpPVh~^Qmma-{*oY{&T18^#NPx~j_ri9ipu7ozN0B3{#C*I z#f}M!!b=jm%-{>6W6GKWeM6BId`A=}X?zc}Xs*0e4y`k$D)=Gt)J7KY@;!Nc-lc3V z8fa`{a0~`YZA?N%E=p1C722+BXk1lR7{1c6_7hHyaGcu4%gwni5!)6^yss(CE}V-x8tRg69Yxc$V$TcmX(Y*I zltxB}1^Z&PY^xA+63wXFaFSv#2;K&DTRH4wFAPpWBS6b(tFJzcy~wMQwk%mbo=%A! z7d!zGf+m#)tcZt0`cqPsU ziN$QVR|G2{m>a%RGIq9`xlmhqA~8184LcI{UhWt>SB??nrEPv>QN++$E}hhtZ>h9m zv)$Oq5|+1C#^$FccDfT=5wvl)yzSy_ z^y;z8+#P1MonKUlPol;yH?1&>jlR+}!n~p~*jJefpPye?hR!jz+GS$emg0l6cxET| z2A7F-bA{Bc*c*e@UUr&1-hgf+Iri4z0%l2f@@*23os6%}TCulF-^d**Z_zv|{fLCc{9gtceD7cTaFDRINhvAO`Z(RP6fT z>mZ~uG+;9y$N!KA~ zaU2aOP(&lE+1?xcN#AcBEOy70yR<38oBj<`-pUMA(Gl%Ghp$DZ`Rd zSh8~VY{8WC9erzQTpg!|!ITL}Pg8rdhSHO&8TuX10>PB2NsqI5cWUS=XHiB`P7a@9 ziCfQ;bTB2)S!}2cN)y)6yrUvG_c|}=}wNoQw!ZA zs$1j~=Pl+VDaPTW>hL-zFTWH%p5cOAJEbCk1QzDy<0y-Jku__lR0ZJIrFJN_f>u1Q z#_d$%CfW$`7bWUxp)aY8YgFo1+PKs%rB>5Q&cJcImARWn%Dkk^x`0zWH?tt4xU7VO zRx9o;_Q!V0eJ($9fED*P>&;Ht=uxRw+&fBbaw!(P)QWpo<8JnR;`ze)px@&qM?2*y zm)08p7c0n4dB!CR(JsaKedV7GIDF0skIq_gAF-0{lx-ZXU0qnTuuz{Hg6GfHq5aq? z+nZ}L&@QdG18jeG%Fck3KX-1iK4uj6KbptgE{O-|WZ)Y26`Plxvd72sx!$<1HSxVJ z?|<8G+#${D8vz_v1rhK4yU5q~8_|K=DQ`7XXts{1$M*tlOIh>U$N~ZNwa;ZsGu%EX z7|;ywHwv#avR%!AKwCU5rlV7QhuVsZ5AfEAo$_TM+To!i+z{M}zO7a01%F3~Az(W$`9h!YYgd>^ujvysC|6Q@gfbkFJfL1&Vql6bwwN%<9# z&=n<}$xwF8VbBk<751 zUK)R<+VRWw`kH1w+$WCCER?KV=_YUti~edc+i9lb49+=Q{bw~->Hy0*NB2%%b2TO# z`ci3Uh+5>cqt3P*_oP?gaK=|^IqpfXSi5Q8BZA{I^z&*^Ii3AN!c8=nyl0zfa zw{)=<6O?sjh%99P=+_o6&%pm zDXW7rzHzS9;9bF_x4=8II3Bc9?hYn#r0ra#-QB%G2i-5mF}U8K%z9+P8`xlf%Sgjc z*}!D+HV-FLt?mmtc=pwcI!DR-gED$@=4$YPpbV{?EDb&wlsy)G%es@Tij6@TBRM%5 zd?+XbC?{8gf6!>rqa#oGhl3n8$w&&>%2#re6sLg2DbV6S8g!y>kI#@nl@2+aVvVx7 zrGe#KqbKL5f-<~uN;tg1vCzac)p8=rzZi6i$|A*O5nPkuv-<4L7SBX$#pw(g5-y9w z5NC<*#JwJiW`fLLtLz&=9rR_C=H=(WxLl8ow_MtCDl}K`q2zP+pE30X7&hl8y`CUIN9+tD&A)m%`Rimo!d@A*} zQWZZ2Wn}5x%#o#?@+)$#WxGX*WwwkhojWv3D{L8DI;*u_Z?cmvW7GY8h1BJ0+wG8f z2(ymwen$AaZM4`Nv_?>C{vp&lTaI%wYx|-z$9T$i@b&|-S=UCGjke=^AYV@n_i8>i zHBnj4dZjnp&fKz+5{$rkB`pW%4e9SUsP?JmTFbdlHP6_Ne09YAE`W2t?(c0##rKT@ z=K-a+H%Z*>qaV~BZD&&*hWeJXQB}Kb$IX70j@-qSo+uERg5dM~o(KHsk=n}@a0 zy&=)O5tZd^a@%6m8|M_RugBEad(D&u*=)s|Rk^RJ(sCYmhgD5^t- z6ct@vR%|&hXpMepJJ*zD7DjjpSFc1lFRJE{ts{P?QAhmWA)H-Sf}<~gE(WuD5_?$> z{U2?aKS|%OT^SC>S5)^CD+cET!|zf5zuInxnXypjq=@lXcWx0vGxQ=vwXdqSD&)nR zTU5%E`3RFycF?o$()<8pv$PGx=OiHZ?WjT*{YD5Niy!)7D{9^ClDAf;qACui4zMu z89DpM1hnisLv2l)E5)q=%W36mc8BzGDC@<$^x(w1$~~dBUL%IuZLA5daxXvdinQCg zvyV4IZDm9$qm~Rgypsc3sJC2|4vSQGf~$Ma)#)Can>jZR6F2q^C%Xpwni#mRrx1(N z0{f($?1zPaa))7dfLCnnlmnr*MFm+H;+Z;e5BuH$J+yyS18)fBYR_=B6)|lkTk@U| zr>{F_s)}ig;W*n5PE@IGF7Y-Y-<$%ojUM(9OaoelZuVvy^3nw9BVv2n?a|e@3U$KY z_5qIZJ8+`WAsfYUr!AP1VLTq&%N{0{W5kl@WwqpP?Z6_axt^ybMsK@NVniec&pr~v zb&DHKZp&ByXV`a(^?I@9IZ6FYy9^R%U&d5uh+`s4BZCeczQS_{8y(V`!2PlT&hp(*&=KESDruR@yT`WO?O*s*q< z#9t-x*^_Ae66~f9tX0jMMAarK$zEjdlxQ#GZ*rglW}NbAR9;8WSl*maqGZ}XNR)r$ z?+HO1p6vr2@VA5fp$C+LLdxnkYl&E84}e{((AoH#9N>Y^gIm*LgVz|+jf(vZ_H41w z!Qb|Qg~paK)mCSnkcuo;>*V2VqL3C^&VN- z1k84=R_TG4VUGKaa>vlz{=%4BBj;GHrU&RTUT$t7m=WOJEe%?&W=jb75Z$|#yhnu_ zQtGay&!FB;$|)6}N;leatd5O06OB(|(VMrc=m4L4KhXKb=8N@iP}><`)PxgGumCW~3;B%PzE< zxlJfX<6#VK#b2%w6WoZxU7<0P+?c{$sZo=i`K7s5{8f7MvXi4dN_@u4l6)6ui4@<8 z&m4rz^Rns^md=Ww!;%M6x;sV1nYhzp#m{A#c%4bKrVRmD|hLGz_uaRV94;C%90yl;NVVIteY0h}ag$Ssd8$)!n5Zs9w_ya@s zJ%3`DZ|e-Kknl$cpM+bhfTKbhBZ0(Bu?zTwrTlX*2KaI=KZM7Z-l zhJP256LZz4>Ywf^n_Duo)rPa7E{lD16{X`!@+r?|c!1 zD{MQ3+DV=NP2(Edk>G^R8>y|e+eq-j&M#1Vv)x{TV>-uD+hCuFpxy9XdFQ_{e5>6> z!q1dN@owqUkfIU>gca?YU%kV=sKXqX@+*aP1@A(OAvd@=reR=1X8Gg(jC*j)i&OBfO zPuQ18_=fV%4GceRPm%C4#HYV!?3oh&_4>|S_#4=2&yw&D*Pr6f3Ior{Mcq0Z`;-@K z0?*rXVDcpP4ptrT;?4h&KRkWA-AyF3#O-kM=V#_-TY-ND0!e5D=V7}E*Vi{7d)iC< zGr(Tr8F2mvhVh0KI1mVog8c@xm!F~Mr!_Rr0f}=uZb_Zy8ZzlphO;E)VHYB}VP zIt^6-F|wS*W37Z4!170HLi$R#4u;x+%_z(DcvbH{IBgKTw)6hx0xRtyeG}GOdzW()@KAph|6Y`TxtbuJ5Yff zU5X`MAHvaRCReuPs!c1emThrxDZ{uTRa}5coYa0u_>JIC#A(6`ge13tc+GpPgvKHy zxrh_vu2^{!a0GS>BhF(;6l#pP1E<*BZ&o+1=4>RLC3Fv^!|9-1%VeQk{Ryh~7q6@s z=VQ+CbBe6MbAdoQO86kQ0_0`T>0aGGCv9mpIPI*S3$U|#2VpBkPMx|3#mWA_X2ib~ z1IjL~u@8IVm0i-s?q?Ie2vm3JVfWKR9)jUKc}=YF$$G3a%3fq)}n zubT@6+DO>z=HdeFCG2%`@qrU1>~(W(0$n8Rb#qC9t`hdTxekHTCG2%`9RvIth~40I zb0-A`NZ9M1YuHFeZB*lbEB(wDwY`$}sA4aN4p?jbXbur!9^j^Fl}* zf2YM%Ap2FIPj~O52EsAFazxpXaEcsY-NfQISadl6J_)0}kC6&Lw`2thV~Rph@LIsB z_0WWok5lsHn0YXUW1@@XGC@yi%eeH*LqeLgPD(NcT7eWf1XzIH-LNDa_J?|-E&rYF zQ#dES5mfhm66A2}BL-!7Cb!y7$4ZA@e4Qk(kOqXB2daCXiSQ_cyl@go;dPT&8I<8# z3P)>SA=pEXqrOZRLyg|-qURQ5XBOfPNnv(&7KY1#e&367_8I69&#r*)fjF>EO$y`f z?AUs9EFY-+88&vqigFBVc}$)_J6V$$e}>ydUuqq%Dy%?9tq4>CS9)Fp{|gcAOsR;D ztcYNPb>=>}40L2YU_^YTR6|F($JpTXF}2__30CN86niJ6|NG^BnOr&1@L`<{}qXX(S6bVf*DVKbSmVa1M+zgU>Hg2z#tBq78ls z7{DIa1hkoHaEWUVKfIR*5(xW6{@S<12Zjxw*kFHi{qB0ZP5t<7x{{!gb2u5$7BjCr|sRe7*?z>cqfZKEN7h;T!AO0KR zjQn5zaW*jIY-s+^e(2iZ>4BV)6Z5}6 z$8No*`_#?XkLthvjDhx|es)`DnB8~Hr}oR%?py3{t>yM@<(ux^<{Y(8%CRFk_Tv3d zz5ZS0dAa{HIX5?J`0#b#IVU&+P#ZVAHE&K{Hn_apT&Ma6=edTxk2lyI)|5GU_+Ry= zv(~<=e3RYYiP)zsw_m>A3ENu&yX|(tvjVTZR_46*i2b+ggWUu6_tt(V`P<>=;ooq( z|4h4Zx1HhawzrjULfv+?TMx5yoQQMzTKk%rLO>u;vi#+>_BqQ5PhV~q9kzQPwr>vv zdj;y}U-E#RSZ^n68k*-UobX1sXRfhZ?YFO7Uhutrjnlqr=m>jj`Ih<@F11_LkH6PB zC8gYM8?p2LX}7=lISCcj|M{05585ZLv2R;izdV29yd$~U_Tnu++pDiX{G7cPp90u? z{q9A`cJPeAZT6U9_PO;}Up;!X{bcztdxw>C_0{$-*XR7VjpNaw+g8|1b`KuEHqV*p zT;jatbl5hbkJHWRZ09@{XeVv4t%B{|MH=SxBW}m;TP;S5$Df;eQA%KwA*eKJTu^Y=6ve(I@Mm{Ts-))Pn@21x7~L9 zrk7sYW_R9Xx7~!!qnmT@aQi_tqA!C3PqgFrFM4cv_F8A1)4^`_Pdhm{Fo4XA-ZJAm zJK}^tvj;lM?JkF%vJpeqIg9N%GoAirSGb#f{>+cn-`W@L|E7~N!45W zghv#FJs*oh=i{n7t{N8=hV^~I$ZJ=e@_xeUm}lsRu;pPJ1rFCDb-7|#UZKp=U{!xv zK~{K9b{LBf`RD`uEX>O;440Ks&0@+hLnk!Ht_Lyj4b%UddYG7xJR4ci~EO~b~~12+!wCpp8)_G48yjA`3So3$;vd6?*N5)M znAzBji~8~M!OH??B0Xc{rVn9p`ac&LQ{9DaVtnz#G{BEj>Q^C6{A1*U6WrI1V}lW> z{5Uu!WUJw3RAusk`B!F18*rDVlWq;vlyHNBEA{XK?M1mC8VxuV~qxtf|Sf6UF5am~b%MvKB zl4uPf$|7}1lKx@!ngel55xfl_l6t)f@p<6~@SbenOB@n6^g+rmQ^Y=8qH(iAdl zs}ydBt3B9Y@Gb;X0Xz)B!xXS1L^p-!K=85|*clLW6)uFRRCo)-8ikKQJgaaw#2X4f zhWJ|HZxHdgZUSc~LG(~K7-E#dOChdMI1gfh!fJ>Hh3gVh#J(^!KHXNh9 zAkI+8PtT81I2B^L!g&w{3M(L%E4&?IwZcshk1Bi-VyD8lAl^~<6~rNhUcq?IYA1~} z5~A#&*rDVlZhzyY?J2@Fh#Ulr4v^w3q01afMgvXJ+yl>oqp|T&p}a`3L&=Nd{?uq& zDEbDG+ktURP;iMjO)0r{1T=+%jWi{_`Hmnuy91Y z!gY)W)538A9ls@xXHd9~lPM>PhZz*Ehh)#gCaC`@v8H?u!Sv83PKFq-&@<#%coH`5 z3d$*p9ZKFp@$U-S&JnIbFP~dp^g~dV8f|&ImC?$w?MqA@M?_W z%dpV^Vzt8WAbwMrj4RV8VuQh8h!F~>LgXlnKrB>vE5sUwk3qbk@Jon)D~!iIw>H?| ztOrCdg`*%YR(J)(e1!`jxRe974G_OqxC!EUg}WeLR`?ObcMAUvk%(GEv`!G66?$zY z3C$~3N8>^cik&J$--C|qX=lqKS93We(|A?mD2DO_g` zWq~-GLE$<}qI^?niZ8GsXGxS1Nn-~6F2$WH%)cnOc!?I2e^;9Ku(TL6ykbm5BsV^d zXo2{i_8;)>W;^RQSSG5^tl_RH{AYQ#kAr&^8(OnRF|AZ=+&Pqk6g!l>CB~}t+s2

z3jR6NfNMkWsiG(kC8#xsvt6CL5OAyG@yqWQ!KobX7r78z9R}nHz$gn|)QBD1emMDX zwZ#OSd^Wp~;TnodZAWDRLqs!1mazozwH@;bxQ>Tq!44c{IV=m<|7Va(Ipl~;m+vsh zFb<)52%==Yt1o9gY8i^pb!0cCrMgaVyKD6mdyC9B|s# ziDHC21(oQ1DN5EJamn3?k1`{3R8&n2;92+72mVzJ~4JU=KF^H1ad0OIc={zkD_+JWa^ip2t4xL<%5 z1WNZ7i)XeJi>v2pmM>Nkl$Gq+lCTzXSkRRuxdmT?n7T6R!#s080T%RlJ4xafE^C z%zG&K0bxPLs{II5>_^H@?h4v>-hz=PVh$=2=`zcwtH0!juWDSbpja{`$!pG568NUhY z6=G8s(BPAC_a$UU`(F=43ENK!9+XS~CK8Um_{VtCf>)TL1P(lj}Kpk6|6@?r$lkdOIV&u?adIx=Mf4-rIbKcv$*780&9D4-9End z^JdEdHwo~l0RTp;x=7a2*<~wG-4rNt3PFU>N6B&)1m?>_xS4EGniyIRS*7o}9fMs6 zoq>T^#{!tQ{gMR|)rUf7-0FRyGfC>Lp)-9N)yp6pmja>pC5$!#A~^o~64JA1FlzE5 zK8mq@9nKLeyh!>Rk}^m%5FcwNr68#jNn|J}=^8r;DgydIo{@B^on+NzB>f$Aq5Wd$ zcbs%o>OtLBg$U;oF%O#5)lw{!?)MqAmryJ>7e5c? z8ZE7*Sbjc!s`3FMzEo07sl?A+l}hMvorw>TLv=*x;u+8-NjsW#|DdE;)ndQLp}*^&xuoVHQZBUHrMYa!I|D zI@O0xZB*0HtLgx;X;d^P0f-WO0^Z7JN@R42%P{W{=L>mH0K%*}MgRlg<0AmF7@dVI zmU*`dG4qa^tU@FguB@%|zRNIqfCU@GE+4iyfoWEPEaa17-Jb}J;%1&~JRnn&WNZZ@ zrH@Z2p-p9G+)<8M_N=Y*pO22mx22k0InaB2vy4rVD>`7?kHO@O9)s(Q)Y)JkeFQ5# zfDsB|ZvbS`JWbYO>3DD*oP59-%Yb(n>bN8j#TX_wjj`+4kC_`jqNMGRfU2eQ3cvQQ ztZkQCPG6C^U5XC8NKW7G*ADwLk!vT_<4->NL$lS5mKsi4^@e#od?{Kc0|g2 zN85@dDg8+1Zr-rd*glo0Wnad%EJjms$P?Kwy~@K4SJr#t5)Y`5@CM@^DSZ!y)fAX) z*svlPD>jzi!%SE$#?nr4$!&;`?K+C_GiHsS4`J;Z{UI}90yAOktO!cdFLW?DD+VQL zf$k)TpLqf(%l6y-^v0oUcY4ln%{`wIu>@T`Jt{PoFd*D>guCjPS&s_g_$ts z$^q=zr1WHW?q{}ghyacO+#drWvu{J#07nH!8%Z=qGCdw`C5Tq63w1t6$}6zYGNXrfEly+ehs{!S#3hPrOTe|s5A_PK{2RWu zb}V`?Nww$1E?MYDGX>WPnmdqOK=h)>Lh`_SAMy}pU7w(qhq@Bg8KEvW@Bbt1#pQ)EMe#0PKlyx|M~^ zm5JQ^4E>t45QEJZ#B7>EY-RyyAs>FQ1yau-Zss*{ zFHI$Gp+Sdc5@X|M5~P4^PGHO={>SD7Ams0;i*)cAv<#&&Fw#U~up!JT2rKl%YznEM zk7Bi6{IH1xDIc3ilw<%jD+A?7>+&f!lhk(#O(aO&aw(?d;wPK5mf@mUZ9ab3M1tX> zSV<**WM|_#%+MDCrmvu@E7kmnJIupHv)G3{25xA`9yKENWGiMRE zA`5lwZ_JKm>U1W7Pa$St3PJM;bY+ryHT7o-R)|27Kr?Y)Li7$AyZb?tXn7~|MI)Ao z2Ef(~a}HsxBD>8GfaR;^9W>`@JkGRf7}E!D+&tngLzx~ll<9sqDHE{rSp));piT;@ zQ#PANSn9NO{&TS`LW_0Zqn(&OpuMqScv5_T5x)>mSP;y~Hy1ktkE$t5114kogxV|C&yf*{{?KZj?sG(#!a?Z{{`5MHMk2Gg3>LZCHPHLr{kCF z&n*Zg!D$7nbf!-t=w>T*W0{U9TbIYp+IR<~aC62Ijrp3fq_-CIY;7JlbK?b>m18rE z-_YlrfS;SIyU?p_`7;F^&V{*}l!$wrFe@_|JPXsbe6m;fgTW=l;JXY4&t&!rIBQnM zz6+!_zm%*`#l`;yrW;;C;Fw2jx*WHtD$#}4xIzb#qwY&+*+|xZdxt^8bwE(|Z)!?^}It0WG#s9ZyFc=>lGGzNH z8WHa6bwSy4HHk}E`C4;Abi}vV5|CMW6RDXxK00E^_S5!c*|ALh$6#fw2p^^8D=rso zy3$&x4n{0MgUeK`hDQt_GH65P`=q50Bv?ya+UNN$O|}bZHEyhNDIOq|nd-L6x>1(; z_JJh3Y!VxqP_~aq<5h9cBQy#UJ)vQ=!gLv3cFZ>?F_ww1lgAw95rt(%r$7Dx6CB4_VrSzB2k@x&3P zG?zlJussDlwP5@GsJVn#KLv}MT;lH}H;fSRI2&5yv$e)l8o|_=O*MavJq4V6|5}OO z4}KjIAASL52lgrS2^1yUmHwWheU7D02ACy=KL>MY+QgPO0=Dr^;U<`M3ixV#t({ng z9l=wH>b>}NtA6}~U1*gGuWIn?LUaIDFU=r-tWgw@!2}U5B>(~duo_SS2cSxPO&VMg z@R3)R1&|aDxzH}e^7yPgM-=3OT@eNYVJ-MnOPEVwy-N}hz>YXJQKGrY$c4#}kV{vm zz((}K{l^VpCN9%vo9#{Ybd;rQblOE?Aco&VJWzjT6E?iX z@ODISd5WYzHwGb`JdwW$J*OGZnQk7x$9U!=8>P=Sp6rB8zbBlly)8b!0f%zq(56>z zN2;%`3uf&(9>N*PU$FWF3>1t_!h8&7a3s=XI7p52H6Kfa{q%`VT{70iK%a(M1YGEH zETDZ!cRTqcQnM3(rLGBz&%d7|KK~ko=Ncu78&)Pq$DxO@k4^jA@Lh-dFT2|)c8IV* z_m=()t(T+KT?~9UsGYn$I{Ipf-BN^$j*?kEh@80eeq>~K6m3IE36n+ae}#X=!)Q&2 zhZ5Biq`B1`{3fZR@Y@GYmG~4g-Kcap==wv8;SjHv1v646z)I7-G$>IL&=i1lx4bsBuCo>!FeCTvOb_K@gXBF)oDPJ z&9e-4C#XGsqq=c0VsGG3uLU~DuM65>r_-UN3#;6nK^t(O`?M-wwlPDJ=89M?@nsGrRiEM^n`=sSqf_9QbHy9n)Pii@m;K#1RTEY=@ z?V!8L(xf%F-A0F%WvOYAcc3~y#1)b6lC*03NFDszn>(>py*v6qS9(k6V4}41v^?w@ zx+$+KbO5n~I0)$S_dPu!I!?&iC^uXqYn!-SE250aoWE7ddKWtkz({10FCOL{YGvqj zf_gLX`n6s7(sFtWjC7ZTnud)9?wtqxeUD+DKp3@6a>H2QdK0)daIr=)Y>9w^^p>5c zeT_BmtM)M{}v}Hly`WG&i*(G8W=Nub5=$ z&y(CrS$|X0{I1s|oF_|JpNNaUgfXU1%x0LzGj^eM9;t*N8!p_&ex!}re^Wl6fEAUa zbCc0h?7iz-;S(} z;5Y7EN(h31;5JD_K$P30)sRPU0VjZGlgxd7Y#nMH-6eCczi%sMa~_h+Hd`{ArPW|7 zDUGbX+pA=vge94b4lbD(`u~nHjB+lSy;TT|Ofq?$AhZ|B+!HUE$WM}q{FY?C4aw|0 zi)4z1WbU&h^KhJG5@x4lp6`%M)_QnWKr-L%MKZrohxuK9wj}dR56P^>=f6#veDla# zjix-lh92Pd@?Mv;8iL2{B~2UP2jHUFSIY+p@P%mEn?RzO2{cSHr={Y$Udv)`KSl=g zFgKXn5Bs&hNNeckl%Q)rx0f#y#@_7Z?l^mCN~QP@wwI8~zsFueNWQVX{N`oi>}79- zO{s)chbDXtdud1|@>^2*b?l`rmH$9{`8nCk^_Eojw3qv_Ibp0f412lNu$T52PA1|N z8hq)R(-VKe5Kbfci8gZ}kB!1kNu!K|E12SO+}T13?Zd(ENtgeUcgX4JBSb!MV_x_Q ziQy&9z!ci+j$KQWY2*HUUf*08WioQFkXiL-?vPHrNroDB`2;@NlN`Gb;?L=|?!#8J zH{rV`YwO{CGDfQJ=t4cD??pX}a08G+02QU=BS_jpXLNOOE$qs05p@E4wI1$4sl%>77PK>;P zcqu@u=O zMt*o6Hiu99+Kw6}ME_}?isrXct#pK=b@Do)hNAqjm3}(%z8Imek!mrb{j^Ja1L+tS zTNAB3$0C?Nm4Iad?KtjP4H}=Ph)oBGjmPAB=$LAPz&qq2$?i!V-#G~zLa-Y`9|LSlVWWqyl%n03%3iy7LT9ihGA z&b^oi;na`~QhnD!|D~)`42#PIoGmxMVa^QdAgC~?V2%#PWrsf0*lTkJGCB9wsh zjJ(Jm^%gWdLu;W)NBV0rZrdCoy-a3Z+Ia?4z)XKcUQ;8aonNv*OCTIFa8nT z9(fd!%QOSVUDn=?Ek;~_j1D3y{YR_Gk2$?m@Cs9pO}qH6u=VF-%y> z*ayn^B~!+P(7`@T8QZXx<4{H#jila{k=BKzjEUz^#zu@T-IcM7>Y!7R2P|cz^Da_G zzF&4WeWVJxK4M|{mHIdwRevLe`DW-p0%!h-=;xmmy{(T|Vu;52rxz;Dp^vQBppS`P zOCP7x8t&`q<2OV6F|53e_#FDk&_W**zgiz_4V=B`V+STqXVJ%R)a||N;~#rbxR02^ zoq@vPV;Q^ra6t)eagnlpkc_i-rfh{E%AssD6+4Tv(OQ?3&2-~>Z?3PUZ{!JJs|BVIXCME*8RBsc#OKgAh8Ftf`f7b6 zK_X&%(YFTd{X^fz_A;wFN8cE80=e&}4HsZa6?wed;1@x>xUt(jcOOn|x`Cc^o*z5r z#l?-WawH)4%b!oT*>onE4zUmRDryGhvqDxWeb^j9D?X9Hy|8e!d(J(ZWH`r*8arM7niy5Q`qWy1@(m$25VtDiA z&pCxH3~g*K^d;1FDi}?A8w99>5TLcX5wR*tSt{%IHNJAbSs$VCe-)6n#ktQ9-xn;O(2sApVEoy0Nb6+w=krrI>`npE-6D zxJvuuw938;VQi3~1di0AcN(XB^sP;N@08v*G+GwW-o|@ZM#t}xLu1Bs63U>}j?7G%kMhoN4Bpb+~B;B5b%RT5Wo z?8iv4<-y7GAm@2dyE*nF%0};7E|05Sp(?+_P#f~ZzHi9Bf9xe;!bhhdOgQVnZUa8g zqh8NQVn?I+e$#I1zclJeFFO#S9T09{EcxVVEEi!x28aEaA+ZZ@%(pxZ2@i|4NGr651iom9 zFEGDZwJ|61p%}RgCE6JyykdAch|<~DEQSl1<=sL*VwhclMtxzjFz!V;h82r_C?9^O zu~+1RsaJ|kWvMua!dt&B`|*ZcTgw5wAh$`1_D}l`dqGYeYSgJ#wuin45)#x(FeQeN z$rKWl%w}^d&HjEQ&+ie#rC{1Q->K_{!I+Qo@@|zBp?iJAKI@#Bs+2*GzLvmDpTSlB z0Vfu-URpFhZ)fzM^*u!1f%PA60@BuSY8@W*haly2^I!vk@CWFR@PI&4kVKCD5Twg+ zh%5xj6w)6|UA~7uXB*EFhE7f`GoF!(Wc}a{f@W^c93Ka}(_J+tB^H}F5)8+iP}I~>{;^i4X)A8j zR`HfXcRpbZG_43e)5l4|(}J-aLG9p6Bu}6Jrsn%`OpW{z!&K%DDz*!20A7ZTo*a+Z z^aAU27@{Xq|A_Jkgi}``AU3_6O1=^;A2EX@yWVO!h+7CYy3UB&Jz!yM0)7npfF^$q z4w=Noet;z2XR#vG--xaL<4A91!VH`+5E{L8jWcnVF)KAL9B6NGsU>jJtb^n1!&jk< z*z~EaFQeVa%pGu!c_Dv%RQ^`iwc!`)fJQpe-p)QBl%TcpH~+=RcEI6-@`9J&XCOu8 zi*SR$3qCr3`aA-%NUh*tk8EZ=uOQ6oF)lmM%U;MQ#{gWvkY?0$;)`w-)s*Qg_5u?| z&lkLzJK(y7y9&-1s3z&er)E7h6HrIy4u%{^^@T5Z{jNi@fmGI-r4wI(Fzq!?eN?`M zVK{LDU!yZ94c`f7Hn7_mVy|M3ChKcSIPjr%xZEHfy8}N)`a!IP*!X5Rz+rNW3&m7i zSEy~J?|YTdq-175`wPvn^69&m`103Aa*4q7mrp14`h^f9sPea&Uav$|-~=rbSb`XS z91xv-$LSg9{V>Fyaf=c1*TEE?rkAD^U3F{xg|v3^E!1{HOPTyS z)t5``a4Z$^Ms?)h8FE&5qdS8}7s69_8>;G1`;)%HT-1#bYVe+k0?*26H=kDM1;RT~ zuC6u_V#eM~t8~E`F#%s5RQr;zFFpxN1xiuCeKV$-Vo0O>3tX5D98>!RaO5VTj+%A~ z1+iJMgoZx9_)2>qoo#qUevSB~X#d+-0~ER!ZOs^nlB3o5*zzmLrlg-%5?2t}f%MZs z%(%wTL2f{6#`nUJU)C~|R^MP0M(L7_AkP}q6fZwQ4QeHrFtYMU_uzYbges`jrWke8 z3{7k05ob30mawaNE+~swi0qGz}MPH9?azhcO+XM z+T`IMQHu?NMnmCAGOU(5tBkAg$P-K+ql4%&4l_F!pV(^&AlZZKM&F3I#`p;^1lfphmU2F3_{4$NDgT+-0I6Tj?YNX~ zofRkem`L+l4Ed*P)hr5l7svj<5oRDMPH?ZsMq6wKNtnG~6dm+L&+-;JTfePZp*@vx zC1S}AeDvjUMcYN6%`_y|+f8C=kaSAyMnG(dB`0B$*im?PV?uX{-C)>#kW_+h;8!p7 zD!A6{hMWJZKI4K*--a=bA30zs+M$hogt{MMUqCeMhbg@HEImBQnG{Omk6#0aCP$6+ zFdKtljkhrA+Se+8BiQgL@mMn1O(26>KDVx10IdN^`9Hk93w)Ht)%d@=2_Yc50YT%X zy5g#!s6kPQV$FtK*g%jNq9CFWLISCf#AHM8p129_({&ZAw%*$Ms$lQ3IYmWc!Lp8MZh&Z()_~}W92#uu<271+ zVvdj$OPWImLn#iRHjFenhR)LX(#-U)G-CLXQ%Nx%3dDH8f>6$kl6Z^qPZ@8qMN-Co z;ZXd42lkBX$NtbEUqZAo=i$u8)1rI&M$Q4#w+}JQW~XiQQs~R*Qy`-cLlB3ZQtD|k zypTwbFpXS|jn^aav@BMU+?qgI2;0clYO-gWs7d30s~Pp_GOgwinPUHGGPRaNBxd-} zwH(hta_4->_$%imS`Cm63Qsq76jL|tR*HxZ{{j0oFxd!!=HT4`M zG9-%?YfGIhuB}czrRm-01ijBOksQX?HKHn#W`@1-Bw|12tkLPW#^jeY*0 z@{Nm$j`F-EPUvQ;M?BBs+Ay!=RjyrZ_4`1jROcT0dZjue5s|m;LFxKAV!S^slTP|( zc}+Jf0u0{0o9C46G9l8sjLHoepJ+2(JjCRvT{?R;!0Y%>N0jLgVj^j!DD2GiSuhHM z@h=v}YPZ+DE}4j;&Re@myUOHpjzyouuEI5l`pSma_B$@)l zJitWsQ#@lFLhuo;v3EE=iX?p`$+bGkc#fH<CAxZf7C z{rPF?7ii{-!?p)V7ig9(g+(v`L^C{3K|dfj*}Vvk?-6g@PQ>Qx55SU~dO)%9W`xhP zUUbV4)Y!ugpEuD2Syd|ucYKslj6F0>HybtW5&tSDI)n7K1|Y+NF*;zdh^UFUe?6nnFvLSM&^%nBz$@XPS}qW6X+ z6o4v@Otgao&5Jw?S@Zb3LS|n;8IhBl**XD~89BCjQ6GW&L=J0SlqFCW7rQL#D^TCY zKdAOYzr!BD>;PvH-Li@1!_jEc)gU>(-BBKN8cBf&T3-w;8|FBM+PWG#d4O4Q-nMhC z@pZ{h>N{j;nkNmvP8vRIEM^;I{VFE4!Mn6Yxx!jCL?%i1iL}f$7OQ_jx%i-d8S|U& zR@45=C4b!?)XT~S1GX%rP`JA&hlN4s#&XG?Vq+R3h z4!GARhY}a#u2qP;Lam%PSOz9}n%F$)T^X|6EQL*t089S&!jxPgEQeBCZCllzYRt(m z@v}I`dwc)#R7|6b=)9Fx-LgeIx~We35E{Sgq<@BC<89kc;KTGhAM%vWdSK7E>;m#U zUxmI7md}y`>$e74esH1B-W$IGz$zp@DoXoc1(Q=MSc5)bRMvG4g zZXbdcUp8A-ia_)QG(FqBhH9yTzuuF>&r=pZD>OeA0n$l(3b}W~SEFaY>Gv*AT6()& znfpz@w_H;)xHbDmT)P#rLa5Pn^XB2@;Ef@D0=rsjV znd`|w2m;;fwZA=+P_6HpJ5%WwA3!Hcqo^RbyTj@an7;;%7pK}SExH9WI?dx!kNK58 ze-(o*HGkaAkT^nwiX5_%z}5BATx!QFb6k$aj1~ z#z$#PYF7^DJE;M8&@s7;b(~2R*s+W42W>wvKAw9Qf8vJp-uO7L;XC1$mCNR^Tc7T# zrob{iYTZLH7RhK*-Yo0t&3uN*@?b8xM>pdT9r3G4iQs&Er5)knyP_Y`OLdbU8tSFj zrmcNQ%T1z-?4p@UM?N`&p4;__~2UBZqf1+S%tsaa>5EF5N?$^nszY>v$sDrV-=KC=YKZc`j^19fg z;>!2t#eR4Yt$zvp1(_;l7QbcwzO1df->fpKvsC14MXsNYEKUCc_&StAOx9UaFpf=8 z_UPOUk_O$MRvGGGfSH*@QY8(zU&i^|KUG?hfhsO$Dp+-N$y|{a`KXSMV|u~Q%J#Mm zlKG`}YOA)S9S$i=$ETDmrKaX9-*`I)Jxep0q7;~}27COZ0sWVw^(FgDqhddZHF-)5 zd0m22Bd8scBBu0WKq-1r?3u)wro(p?txrx&3@GB`8E@-jGD0mqwaSoBVkWz#!05$P z50xdyB}~l#qYgt7iCu3>>^rIXY(l1~TIaMB%5;FO z7m>N!R81Iy4_KI-QDs(%us5?0N|q({5^}#!j9FR>-$n~9du3`?abj|oq!#77SW2i= ztz0OUi*i*%QYn;DwF{K)1yEN}C&_~=d8RVw2@eJ{O*DG85GfaZoghStgvc)}BAk{g zhu`QjZ3ri(4kF6MLTK(Fh#UpOxnO1;1!e-)a{DkLp$@AMVi#muv$_^j%oYXv>k5lz@&#p_YI~FY zVPf8=Hisz}&I*6CLh3zi%8{eDTxk;zkB)e8o0SJkBw^+3 z#zz6nNm@~2#4z;cQW-5O<;;`|O)bD*dS>^^GW{3K{5#pPi{Lj3LZ$YX- z<1^WirtAV7BE$41Faq|LlCx5otT9jfk-czOB2tg5sB8J`$Es^>s;qtw>tng)uNgyl zm*khc2+j6JYv_|X*jeO2-;$?-AR{-&2ri|;Dug|Md4z;y$K@`y?N2Arc8-uGMzKn} zD`0%lYmDRw@grLNEXcO_=~SJyu5dWGn*c}lR+*Ce=yX$mS)P+HRrr zE45JFv>&Q>k|gC19xcwQ0@WDii*r+st}x!}#G%RtMgLH0@kO4;$cxW0@i`FfP)(u* z33%H&5r;I1zM?(aOO?&*!=Rg&%SQwm&ofhU$?a3i>v=W0ePNR`6FpjM^>!(Wp7+Cc3U@D@aWQyq<)Bf7>vcY z@F-41CCp*qc5}AXkiTe6=z^e2cSsA#OdJSoK2ttKb+CuXNgUjy=p;q=E2ckS9xp0w zQobA{^ezj5J)Ha$91J2x*~WK_usT$@J~kLr%oN0y3!|~P@EN;J*i4q8KGuE=*^h{G zk!Hk!3e=a~Lq#|BiSF#f1#gKVA6Xgd?Jc>~gzR1U3bds-+Sfv9@}ykDD9GsK66pn6 zw&2(y+P(hK>bb%%2O%rPc+6j-z^D8L>iMQPHm3oKBXbr{b-==LMH z38fodPmZDYxr*IG<@u(zIhF7%g!nvX#-F5Bdi4z*X;?&wg545 zaTw}jVRW!#a}FB7j7}1A>}U`^Q_er=6FhelOm#-2*f6P;7zFYQ`AUfi&7zM zF(N6hLdE$5WvXBR5(~tp3Rm}DAw^{ ztdV`E3$Nm`7a5K@GiprVSX4IjcyE-Qw(&=0dmdl)bN{nrtw4>D+hy8zU270?BirM#ln!cbr4w2 zRVLS)i5WTGYB$4EMj-KLA5qt1rZkEm#MD~ zsBEl2Q9L%am-&a93vofU5a)i){kFcPR2V&i70T?$kYM7L(Is>%ExWqtg;;NsPU0)? ziEnGG>nrbNLkd_C{>nS>w#P*82EXo|u6u_z=oP1`p!a(7q8p%_ z{O!m~aJQ?kk_5WfzsbZs=-+NakNIUKA!TjNp)QpMolBV-M~Vi`1|=0U7!5)yH3S@& zsT3(Qk`vwI^R_+?F+!pu26KX;6=~r=kb}3@{Im;mOO+inO3F@vxmFfm!C79U#m*85 zz-z58iCAEx!N@9`2tq=1$;1{@@*u5}2O)MzYweQO+9j>kCBU|} zijtb6X;pswRXv>^i7JUY*Qw6)3Z>Ky(&N?xUgK}%x7gpr?;QU^0k4#)Evhcce|6CP zwm1qU`c>$?tcXcdxYoT*P!Vyb(8m)#!+$-$5&w0pZA<*y{VgyB(CUu@K=P{~?V#h+ zTyCK6BaI;F{y`Q4h_b?egT&>iDx&dzlfO;9e+oRuzeo~(K+f5W5X`wh$ql$)kw`ZZ zDd2uVvRDila&IC2eE&7Xzii!CA@7NwzzdPz6mDWF#s|c>*Ka8J8{nt>&A<|OE4<`} z+;4%r-5*yGI)PjLzf|yU;1&K>i5&2r*dtkNl!f__`!zyt@+Sxhs1K4lK4P{0V}?D1 zwTY#}OzsH3$uGVEp)BX(NHK)U9=-_XIy{xjP2lnIN>STo;0*D_jQm@N4hws0B*#ti z(?ut;o&P)KrCom3aCJM{Aw7_{^*W%IZ9iWqQ;KyskD6*)w%*I7Pc1*Fw^@OfEx9bn z2U@;Y?Ht8yslqiXALr zJLTQGcs2G;$UFEwT9w?q3aB>hQ#66MhT}go!B6&V2zaNz%>R$r)xyx?9ZbUMTV+Er za1Zb&1k91E>4R)up_gJG3?7Uj8=>o+PV*f0hIe|;mqG79PSlgf9KVk|)~cQipncB< zh^&PO`+^l&A;K$rVN9AszJ?Zr{zb%gA;H;ryuKwM6IR_Pel50Isy|E&@smgg{f;0w zy3j&MfBZ`^%m(9={*qGAM5Wj=l+FYA#5;X8;4HxRywg927gjiUc^xr)z#E@j@+K@Z zMFsZ;Z|%HcXYj^>lG9&TMN*t{Y^`P*yF;g`U&!wm5T_9Fzh>* z$&Om92j~JBpdEYWobpxs<(Rokmz**@HDWKr^R+cd5mr`fwmqLi!L@#TrN`y~h@`;ihtM4fTf&vv;ip&=Pa>bmiIGf;Z%@v)=}EjZ z6hGJa&lHBw5~k=rq%(A{4Y)f3?p?{bcKn~V-*FcOR-^9o|I_;OLJm_))!!&pQD=yF&r)?UQdNPf5Cp|WJ5_}rs@)YL2n6@BTqnvli_yeF z1LQCOltzhhJyoQ8(T!9#GSxM59)dzQ>#ZtUlJsiK15!rJ-fd~G?W*)jVXaUdC;(WsrFqfB#6p{ym7k{A`W?$-N(TBn% zkJ9mv5?B@wRn`0W#Z9Pc)h|_h3?ME;`8kei7c+qW(p*-lR=JKfpL>KOo^iz>vqIrF zd9maR1s~#%DQ>;3>U-N|7x}8>WB1W2!kVi5mllp=8DkoWyi2=OemGG}rk zv((CiNnmk~tTL&bm=<1>!{Xp_mEC4tv=T?XB`1N~r+;G&5*ZMY9BlMVRs}q{%bLCTQ;x3yl(kcWFB)t|E6rF)S=HsBtfxhHw)fsDWM4F=?8en2AgMx-||{RPs*_xAm~OO2~x^JeI>g&tdy?kzh9 z9v%|R5#|`x+TK`*|DWSgMMV-rmOI$cLTZ0b>h)eV;|`ni?65h{w&u^=zudY70^F3{ z*347uH^?VpjU^a`oL`8)Yx0}Re&z02sffR)S?p}ok zxXCY{LCJHJdbTRk1l;aF9RxtD{|skl)@UpPvKowo?hY9!J!CFJWTrfgc$V<;8Y~38 z%i??b zAGxwl=(hB6x#rPXy9eR80e*@}Om)q|^7++sd=>K=Yc97U5;s^LDfd;@*K=PN`Bc;{ zsH?ARXn^NA1T;kIE6W#1z;O*arK_;9s*0Tc2PuSW_^uJ!^D8OOf6gS0+4+?}Iz+Xf4Rh7Q^)eEX4zNUHA^DBLoi|Wd2=7?xi8C`WXb7xl9RLvI=&aa(Y zU7?va37uaX@m1E;HqM=A3Rgrvr_$ohq`^8y&E++KkiB+fY_jQc)Av zr1JUDS&)vj==CDMUg#FpG@von71fnB5eEki5sN=FfB4&P`9$`;mQMv}ekSXtWtP!o zMC73>P8BCrMhDWAk5$i>0@ziI@;hTYDtTXdIwJmPxgGI-tlW{%e#)%^ta@-r)slat zauLd^%KW4JI^ykz-(D!1lCGOC+88OC6f$!PHrCCrRvnfDDb2pVzOo|Xi0Lz1bZ;8l zFg8$3U!nUddGVE3NzYak43xQ2Ij9g_K(qeR>tFW>4lURx!2(;go2utT=K1LAL|dqB zN7R(UIFLHSRQh?9)pO@XdMA)p64jb}D|DT+(DKrIp;d@gt5&T``&R*VjrDc44SWY+ z3Qr+Z9Y`9wuDrf{0bOx@gX%vjuV^ffSPE~q2WqW$ZVkQc9A8=lmE=G0BJ>-2ZL;%< zrj*${%8RqCmT*dn%R*KkrV^xTUM0~&Na~E~FMxtI>s~$VH#Fm@9I9W?;k}6Ph zmlB%;>FCsjjED+NjWRG4#$auSeHRgeH8h@3{GmuJVdVWBGhLL<`ub!z`6?4touS zMJXMVm;K601@0{?2QsB%DWp}wXqX=65sWHADsoZi{Gb-B6}dMyMa%6fRVv?WU#CLM zT5`xSg_fF`TVH-KP8>t-s53T)%qg) zL{3vbsR)|^RV#Mxzpi$<{){D;;CVm)TlxPS?-%gwO+a%4lL9s=dD(A0s=&SL(Sb}= zO$upMjS@>rKOGU8su>vOmM>UPer}$Q<&b~1J+i43j9878SfZ5-Af@9Aebo&Z@C{;W zRW@MyxD*+5cGz)qP92#if5Uq%b49pxl3iwbahBNt##0GW4P7PCl1LRgg|rK8 zx5rdDRILA0j;2ND9#=KO*L0Y6!~i+rledQ~RTM4LIKmX01Kt<|bP%|?nh2Qrm?3Tg3Xna(Oi zrn;zmN~?7Hai~38fcX2d@tLWInsaG>?6>;r2=?WCvp2J6pp6aKhdQbyZ>N$;cV){! z^<54bq{^D=)f}QuA+54nIXG)nI-k zWOtUv?E=#D+_)??y|aN%RViKpnxdf7@E>SsE|5-f1<*w*^Z^?;<4BiFI>}5|s|~$p zL)&er4-4@+-r+WMstw5zy*l(_8)~wlm<`=!Lyy?davOTZhCZ;NZX5dRFe{I{5vtDZ zPd4uJ*hAsgr zP-)lMxJ@>$8%WdJ0d%g4cj#!VrXL2r2=U zoot8J0O_=GJKh6!yhrVL9|28KT$P+{LAL`TE~N1XpfUx$4x~AK7w7_oJK-D)cPfz9 z#5j+(8jF- z(z(41q|@#J((QbGp;d411L>OH1ElF4IM$-q4s@nVa(f*}#~Z`?0%`=V2uRodG#h#f zNawo(NSE?uJM?2av>Qlsl@YR18~~(ohuXNKfi#sigR9*5hK$@3{HdGFzOI{76%W<2HyT``;$;SN+ zNSEyeAWiRMJG9#l-EHGC!d8l7fpl&s*|@WTG?feO&`a&mwRY$mK)SqLcD&s{y5s|j ztdh?H((&#F(t7Y$AT5JcKsvW~Y$#)b#nrJkbP|x3#hYp=+@q9XvuC2R)=(5nxhk#B}(4#<_18=c~I~7QmZLE#E7)Z-tE|8{oFA&`m z^d7V0y<loE@P^NI|xY2Z>Wun18KSZ8c17Oe+JU|t^m@!R7|t#?U?B<7lRIz^MG{P zunkoJX$~$2(z#u2hu&a^-T|cfdwzzM;sqd$>ju)4voEzmbAWW{u{Q1`8#fV1rzo{U zEA7xG8+W~pd(+0bFSF7f1f*qfJdl>bC?G9^+?g&H10^Lt0Z8Xo0c4gJNb?u9aWNn* zg9m_gibw3wzXRzMFW9&@fC^L||FT0rvqO9AQ1>h=?ZH5rgIpVT9FWd!gdKXG9XiFv zU1H;|2GS{RutV>#L%VETfaM)6m&rg{E{_5QTq2jJfHW^FfOOeDvvFV9&`uyNm(1B# zihe*kMWcgMl=sbvCZW#=U6c-m-CrR$6I? z0qL|?*ti>P+$tOQhK(CoWu+Yoq|?r{adkHCIiNx%wcS8kYFTqF?hgUdxFdkH3{JOk z=h(RMHm=ylRoJ)&8@d`u%jGE>w*p90eg{a`>SiF#bH8er3j>T=Jr+pw@{kQZ0i@He zvT<+PxUX!S>laqM^MEv!Y8z?*(p>!!NOSNskmkUDxs~E9prGO<1Qb%x6gzYpkmhBM zjjIOIlo#2!RvWs>4!zUH-Dl$-0y-fOLvufONjI?a(MtvC8+)Httm$_py!Z0@5=0+Q#hy(v+L7aJj~5 zDnR2Ev<>Ja1@*7Dpus>oMJbT3j|w2o{TD!(Y{(#^!Ag-0RH|@;ZQSEF^pXv|0i-Dp ziddA71=5u71}aii9s<%_Jqn~LKW*bO8?DguZRjE(P5Bm}DT>N(fyxy09nb^?^<8MC z9RQ>$pJe0CvZ1UdE8ams7pb&mHm=5ouCbw3JKjnl&A|pB&B4Y+7QIbCn%?I?6BXr* zE3MFMAXAby?l2&oVwjD~vvFg9w7!hBLni}ieW|cKR{7onr2G40u6DUf z6z)7AE&K667*^EuR3JSf)&l9WT??ekb{mjRaVL<@V;PX9x7H3_52WdRY~#9Z+&R}+ zR3_QbFKnnDNK-!eS}R^Ike1cyHts?o&0iIe=C9y7_Cu(0OaaoIUIL`)HQ2bTZQS7D zmjB@XGc2An&bH_cL6vmc=g3~m?^k51aWLvSPUY5YL#;Lxv!R=8NIr1XDROP-NE`Cm zkl%)e+0Y0ZIz=t!K$O4Tdt9!$Zg!H?H%6-GpTcOE`pYyyx69}9xKns1G=vwaJrzd< zAP|>qK}=yrgDL3a#E4E69O1;wk+df`F*HP19WqVPiG$g0VlpJY>rVdHo#l-4XE5#g zPRt50dDKXX&IT|A=QuGRgOO=QD$Y(2B@DMIOg|*h&QOxV91fbGBE9EMG8|3CU2?}(+pbQ*p9AE?0Ad6C+2>uZuV_CxY?OuccC*BdO?J zQkcnLTr>oYIYstsfRI13bY-|(X=$GdX#bs(TJm>E;*7LV9qp9a4e+M_L{oZ=Q=cLv znx5ef=D1t~%v7nzEXlX4gKLzPjN# zQVrP$bNoJ-QTt#D_rVnJgPFb$M$Xzu=WyXZnAUwTckY9EXdle8`(W1WgL!Ko%qMA> znN@Xcv58=v%bz7f21WDF!sPCQ8M+VVlzlLveJ~g8gDKw!BOmAMKP&g>KA2n6Fu&t% zrfe;oTN#YD0?d5&lrkz#?BsyXv3XR2+5DnkmTod~tc>_n(FUME79 zM$?Fzi<)UTwT?J*X7z%)nfz7P&YoGto=hEunnA5Z!`Mw)(;&Mt)t0RW9n7*Qn}tnS zHhau$DzC3$lZVUN0$a*91hbB0M?z#Ks;T44iwrC?PjkH6)g_^+x{|k4Maf&Lme?N! z4=Upnp;VnoWL;qmHD*VkB&0I1>rLKLbtG@83X-=}?O1O!tEv}Onz}8xRCQTzd&fxC zpTtO2p1h@MPTr*2RF*SQ{JkifHK-e!Sq)Y7m1eWl!q9Rs+eCT8%(Pn9ZP3v>I6zg? zY5-O;qIxSDWh3)mwI)m3DuPwpbWBP=PN_ZBCx0VP%O5#<eBEDpi6``As+^LFCMpQP})N@h8&4i(VLPl2nX-D!FB z5=Eh!C7#3j5TqR06FDY5MS*J;r)+G=4!5n1^o<(w`4xvas%wH%Urn3gInB?=*(^DY zX2cvFkyGP!`a^Yi-=>2!q0G*fI^uJNW$*M3w&M41Q5lOpX2zB8IQPl_2u(IS8250~ z@K#83$8lz?RP;Sh_oeVErv7A3_>!+K&G-c-8_l>5Ij^M3 zxOE|vBLyx0C7()N&$k%fr7iM3(3}G+1zn=wGEJ5WTrGyA zhpMalIr(bG%Fiw~r_^g!T8SeZYI)k>*}aFG)!@_FrsT!#qs>?5@MTsL6&{RVkR6gw zC98Nb*6(;H`k^J#zto2A|d^yHXdyF}aF!2EI?&rgOVehM7|Ne zJ3huLkl0Evc*6X8E;h|i4@8p?=VK}aTtnnl0s6UpaSm;W#*R_6qsfgjhiK7JtE z1=;Ex0tO5WaIJuu(EvWbTPfJV7Iq!+23y!8E$l|HM_O3Fh1~?!Z(&DRSjlOGh3zFb zis_BsqPVJ6q_W9>#z45(2Ep30fj%HI+y*PP#RK#Boj&w};*9@^^S!pMkxQ(GlPp zJ@jYC`f#Fzll#|;W=d5rzDvT<%q!42cjQujJ(2VI%~1Mx4p3%f1i$*$iNk=hIOAXt z^gNLA^bFEBJGg%eKvY^sbfue|7akk!$nF``Q|j(1_4Jfx^ps}yl=kT<&FU#d8Re#k zmzqA{(5O}3Wr3Wkb2B;6;~*3XD5tS2esOl&dyx+l6KQQwP$wF7Bt6pFzRO&=mf|!? zX=X}cCQA!DPc<-CWP~)YBc%)jB*QX~TV1={GuR_AjUe;?5zJrZU3@;G=Yv&?L~&vo zR}z(QNN_l(XK??Xvi=;zS}>Tq*K)&&x+BTVm%pm8XYk>LJ!OZx0R{mK5}-doe*ruI z9(T{+vwOkd(~Nz>Z?p82XE_}eC(xUp^m>=pHy=2co)kFZ^&Z0$YLC_ zSQ5z>VVo>=dJK|S5*aL_$fgFA2+0txJU`(f#hnRtEiDgRiZHYIpUr>D>KVX)ZYOEa z$zRpKIT*ycwVnRC`O1Mg5e}oL!(YO8b%8-a@8j+e-@I<2AN2(I z6c?=A@KWkNKap9$0p`IN$0HA4AB>?(Nl#dnw>ZB&vYeq;E4)5;`gT-XojZLEzgnL! z1Imny<5%nRi9lHq4)Wn&*c~fz$K;%7IdfU=y(n=9W7GIAJ*eO~cUn+Hv@jeE6jqV! zbaHBspd_NA1#M8%gm^HPYf@6#NhBQy?!B#YYA7)^0cl$h@|c9cPnUc+sc~8+#pk_5 z4n&^_GMpKTO+mFvIDS1Wr=gdUR~7`a13Kn3Ia!D_u`ox@PbcOyPGJwrq1RJDmh=}T z4a6q8p*aAgiV32W)9*?SBIZF>?y5eaDeSggfVL+?@Vu9OK@|=h)3@oUG4A4c5g+Ft zNG-S`M~(2kVLyX{Lf@u>4;I!>4!gkw{0#@PC?{tOpCx0;)4d@;yw@8C1U=l1W8)?4Ule zk_cLO<(XpQ4`%hD2u7lEy#M zn(3(r_lFcG${6=#$&mjo7SP#H=W^ieK%$rO4dBAntMEPFP z@Kr_8?yREq-375aw_rV!6GvWxRgnS0BM1R91jq!CL)Gj0Kskq(K2RPIrgLh28BLoc zS5UvGG~_#X=?6g(F#kW_9`xOtyOwMv@>vUp8LIk@oq84?{@|UWhBq%sK%5E zVx`Nu+FEh-SNd8T&qN7D8##3-)?X<(M*N2;2$LR9C{f5{WO~Nr#0(dsjdV6@6qSxL zeSS!*c39mCe0>MaskC6aXo0GKr3n!^x7TgvyZ-Xhvb?I9o6Ji0Cs!FZLUfwcn8J{f6}4Z^(fChA1P267(Ly+a_m} zB|oO8pg&O4`TNiasi2GiT>-#!tc@8fv%^NGI7PTSi%OHxyO4qSa0%}dD@6E(eWfyG zNJB$1it;zc3T60VfSn9Mj_>fczJgwaIpv$P2sPx1oGZOFZCnjNGLWeONV;t`08yWH z84`uO^Z?Y?IkfGQm>#tx(;R_N5DyMw}Gu5|V|vA|ZW?FhSv|4~j2#s~UoUGXk*&H_uF-$dPd(*1(~@^;tYKv0nQI zVpF*OrG#6krVRj3j&<_8F zV>%MV7A^zKjQpHm(_RJA_9`kD6N5=+WHL}rb5offHGxn=zkXG|9TB#A)$@!0VQe^# zOjRVbR$`ZG;{qd8SvC|+>D9D;S|v*kz^;%42NEDQ#WXLh<;12bClcfu|6G&AzM8Gmc9*(_u2{vFj zzmsN%Iu&w?mOf7Iy+|WcV}{GG2j7`UBbF-+ie0CqLC;i}O%s#$*-Lmy1_h92gsjC9 z+B{~=&6XS|`v~@g}79iUX zRexuzs_b=9(wxU{hSpN;58}N~oY8W55@ z65-LKYE3Bln3QDmj1%T>IOeLnLAP66treM&h3kYGN*V z+ZvrIJsc1oC-tgS+ivBl_o@6{0Wnl+^TL9>;; z7PjrR5kOfHMhtN{VfRj;Jc=f-IHtJPD;O)~KUdhTlxws&(O6K^JvK&S(VeMSR!Siz zJ%B_#TvA#EP#E!u3N4+bj%Ag@+bSn1TG5LW( z6p*DTWT|*{R6nZRIuaFylg_hLbt^eEj|r5K8Qz4!A*}|5gUNtP$6^x(2V((rbb@Gp zsr+0Fb~=OW^dp0@3l!NSEe>#IuJj2Ph~C>aNh)8ibzLI$7k1R2x9tef)FCI>13**^ zs#5B&3uRDN)`UJ262-WGqnqgU2azMT(FC{HRyc*jvN*93wNka)rfbq2DW%r*dWs)% zO4^wwIWe6N7a55WXHqfaU`CU->SCs}XXB~l~zeQ%2XHvl4W;!f~POau$0KcK1ypmkkbx|3Nz zS!I-kU^@PRtCU zjy6mD=~xTX=>?UMFGGiFWLT%Dx9+M7rR$?hjg|J3Rz~#+lhd88Y`Qc^8669~w6d}A z&*_D`zD04ajlhQrXn5a^0l6=lc|1}hPX+hljdpv|(!kZ|*8mCIoOjNc2 zbyV(f7}NgUm@j&>PBO#Or$txO2zh*~N-C@FCiH`%H@ijF2q z%4ry%Rukg##99Pb#6wUnrbae+OU?LGdDY*#x3!toY$Afy`b zEPL5nub$BR`guuj>*pu+wtjAH18`9!wKT8S!_D>d?oHhQgIY@1OnApkI}~e%fE_zwH0Z2``=a$S*b@e)sfu&wlo*Z?hJU z>pcFUs?QGj^+j);xpZOAK{ucOk5m3!^Z8M~yX>Dof9|^7?v_BuG5=Nm;lNujSU>VF zSA5aWC|W!GzpImn-F5Lh`OjRrt4~|##pC`^`RR~5E`0NhzcqeyU}Dm%C;w@|)}Q_M z(htu4`?Wu0M8~c=_JN9z558^6hSQ&H`09Z8#FtNc^z!Z_?z!Z>bCzHIUEdqWuRh_A zbN_wlZ>GL|*0QD@-diTWcIxA`+m8PI%zvHt{PlZW1-%X5F_bukMNMnZec< z2AAFbhJVh3pNxt;^>ubQwkCJlog0VEd$?=#qNjHbD8A{HBWK+E{)qXHZ5eaTitpWl zmX3iJ+`9gl^8fm92E(cdBLByo_p=zfAAFEuyRo8uU;QI`~HtktN-hlS>qOW9&*vI-#WhP zq0i1-xU{GLgkQdN`1HHqJ@FThY(D#{XTLq@{G0!A)MdZ>=P5OR{`}|HJ-0h!Y;@JZ zQ*PUEY{df~pWg7~SAECdxcbnkzj^zFxqtlkSxw7!956Bd@)4KZ^WI69KiYlH)yu#0 zPQK-}qi6p9U#HeSzU{p0pWoxk@#Phi%&Kc%a^Dl}>o#q74?JdM;DYiiT5kQXzjUns z@C(nNp{Es=&aS`VSNH#Q?|$Ujm)_m{?Ey!ebk4*}F26c{&!fv3|U9|K(4pWM)Q6qrockbV~Av!T;%sMkIFdM8wclb|?*<@HtHm{mI<_;cgj^f_23ubyPMH>zMXyiYvl|Z;hy} zshnL`Cvc>EHs`L*j5O7zBdTf}>(en(Scu3GiFItIOfd~IO;~aiPiljzY&|vEQ=6sJ z1M4CVDVNWgV-}ITn$)*8d+%V(ckEr%`xw;@#!>lao^_f}{!%*_=d%ZAoT}Y@cQCr{ zH+L{TqN~4=n*aY}2jeDM=Tqc;JiN)D?B`=gWI@1KA28P88DiZy(2?Y_kglALE(}1H zE&^_5gs}_or7Dx6S<>wre`ij|&i%*Nlw%jTAsW-hNt#6!m>Re!aAA@0YM{)zvXA@v z*hJXJd&_WSvzjZ~BwwCo(t3DKGv8-OtK@x_`7USL%lka@Juh3ok20U5&Gci;XMveM zXgF`VSGj_CuYB3aQE}u0r&ge8O81$0i$b@_wmjNiNV;wZ$}Q8WNhb};V$8n zDDDrqb~rHnolyR+dhWzoI_Y4^L~gSgQJ4sx!>x_M;Tv~+)x4{3zzA{M&@z&>Co|+W zl`pulud~Pq$yQNy=U!k&;L^Zlftjnc2gPJ~988sj^8e*sEZwVOF=T8kGF}htSQj)t z7`f+J)=a6~_qkQ%h`^5byN8(;V<2|+U$ctX!ZmVF!2J%4x;F)lwZq>Do5>S6LSNKK!&pL-7+d-Yqh|7`gR%QKwKM^N8-FSYZlq(N1i*`&}|AV*A_3t;63b zSeA*j7ShZD##`&V5Q-c12(V7XlGWhj4_h1kFf*{>TVq!s`jI!V;iF)`H{13^mO?4I zEmKia;%<7L3jiZ5iVPR!P+F4wC(elIw|yg9siqWmjkqYx9aqtBvl>6@e$`aURZEhO z5~$vi{{^&!9V1+67u_<MlgQcCZJ$E zE~JCTZJ($|yo(37Ahh!+j^86&jg9Ccc`@#(lc4Ae!`P$}H!Oy{kADF(+*S!=Fr}{l z492NTxPDS1u>-a*5$M%2h{NS5l9BPGZkMu1WM1zBG^XAlZrcJuLXhysUYe}RnYQzN*a&Ol1E~>JdE3<(vXT&T6cAE zyeij9WL}F^TyfEW;`sTw#T6e+G&0}k;(1N-HX%7NK486)tBrnC(9v-NP`gKkCKV|; z1mh1#=G?ZyUS&9yQ}T7Eiq}}OY$h};Ya)LXz|1=ym$Yqb8{6YG1A_6YoM8T^-kYW( zutX>`9IweW#^tE{Zxu^-N<}9I%eEqYo57@t7r3uHO#ANGlo2+@<(evB-zOo(g>teV z6qhK+*&j*k zFoP~K$XTlCB70Q|^Zzcgqu_&^BaVcMzCK9qkx*~1s^(I_!qXhTuQ<_%7_Mhe8b;4mN@$|gH($Qs&HJcTCfNkhXf5S$~4OrG}#!fA18PJh-vm|GmD6w=LNx!Pd;Qs7Z^K#*XiWBp>4X|}>W3YRws-HmfuKSwC zBCvTR#@)E~*))8lHK7iLHt8;|MMG zsUt8S86b-1{zq4SnD=D|RTH{}*$M+X;l)JlQN*+b=!G2qSi6JuKv|f`p zYQmc!XyLkVB&Vkx2v{5AYs{sww1OofEKAW8KJtZ-PyXP@pX5s%$q`s%PG=U$K3Bk4 z3{}50w21Byip0d0i@eNuDuo$Y`65(&$1UMXu8mrvLt!vztc)LoI77xtHXYi+40LQ} zmXyS`P2r7Vzu%JBJ3-tg>gs=)CqGB?zfQ0iS*fWzQe9hJ%}Br7QZhK<;dYCaSw z3mLCi^C9fBmMt-2MOUb6fH7lQ{hN5_iXSnv=B#PAQ>iD^0EI;)Dej1ATiMYJC z9Kv`mSI*2cbH7M-EX8k9cM0PIXISMr8pY(uwcPx3M+YNbc9;uDxub@gc*^{v=~z7d z!xe9bJ3jKLh;8ie@ATgMDj5e8God!g6?jhSwK#EIrrfeQOt$a};8XEKBVUhlTeyqc zI@z*u$4Vv|o{+I7XdE=j{bC@0cX1-bM&j$BAmjC85MrS|GB^6ICvtL8JUgI1wKrK5 zLTnxh<-ln$ailwB935htXyUr;N$xj^TugCvuFRbB(Gv0tU>^n(ndI4*K3*NjHgGd-HeG_evd5&VnEpj20Ig z-xV2OPcl|3?KI^2(I1N9-az6yx8@#>dfxaL4+7&Th(!TisO(#`~6jl08`m>n=)C0XwIi4mugNrssTjHxnHy4604 zZLBuN4xqEjDdO(o{Lj5@^XO-ajn9m2(v}K>Tme=b<_fT3YG=qD6iI8RY6u9cPC629 zPwNgDn?qc-+R;rT*eu;lb`WXLK~Ho$U=yQ%mb8TO;zWd-muU{OgR%Mk3dLBE=2}PG zps{=oy@A5%c2TS@LsEz^^_yqrFReqaCY$GNlaCdH#)m;;Q^@!<7}sqeNF&%p9J;$8 zHm!hiX_G?jq>aw;Ph~jMw@L>(evrNq#`omFR#~89H(zhQCk?qI7`w)QK`<8am%{oK zFc%8b7YTuB1%zE3IbBSTlEBkABdP9pxO&XwUJ#Cp$b|dRd_p)VLz*Uc(-K+5q+#7W zNszKlOwL>g#*YssYWEb!8?mlG&6tE4+a{A1?lsg+DX@b6!FApIP}^2->zRZEqCdDJ zXY=cc96l~S;`sC9*Hp6YeXF-EgmAQ)zL1$7vRS1Q1>QSE93WPjAm5JNvOyJ1E~Qco z$DfoTMpe94h8qaCda-u`#uvs8;~N=hI=1C>Y{dsu?4KpFDlb5Ev)MOlRyuc(#YmYl zX7El-Vmv=`lF?P1y60`LH!K-SGUs?!GdtZBbO8lLKsQ4P^eLHw$_CXqLteAxHAh~L zA%4cBMCAY}(#qQ<$qxOSK_>(JXnR2Jv29x`{WD`(MDB-t zS#Egdt)#Ogt^Qc}9lu-x%jf|)UGl~~fhDdMi(RLe_$ODEh`?7OWns?0nrmCD!7D@O5>O<(Rv(RQ;&L!~5J`&?4rIQ$^NRHdzm$B#1cs;0v zdn{B)JXFwGcqv8T#}T#pX(_Cv@HZYPQ^Zi~>y78}{~VRM$~f?hcz&c{t7QL=$hKH2 zg1w`YDriL=#m4Jh4-=F;OZR6KO&nX6D3U(VRgU?v=ue=h-GktL4g4Ha$j?wwB=h=E z`2=}qhMIIl`ZC`TCnO5cUnZcX!O?5#Cy9!<;WaWgIC@?E&v~8h3AMf#85JD8aY_9t zB8fcFppgM}GpQ8!w17G>sQc_CqLs`e53}cMi6PgML#kfSRyj8Pn@T|42yz9KDzJwp zGs0cmg_$VyS~FHhVJtW}PsD`}f&^W^6+>F2WYM2wtndDpv-~Yv?o<+;!4<2<9RDKv zpJFZtl>t%uqgh49Thbq4CCvBNaXW3X@tD7vz+z*CUuKR-DsLV?y77qupDy>Vj&gaI zwTO}h`8M;W;aC%66Jz|T$qNl2uUIZ`WmhW&Gj;}yUB(aA%utQiREA+sU-Ve0luo)7 zdXsC+-UJgyW&wt}$yLeCG6C$-3kO`P7xUhHIBcPOhe*~1_T`-+2J}6DmsUofU6idB@3(%{n{;a^vKUQBn%6b@mS#z+o~o2zk-!u zBADlvmYT9A#JI@A^Prs$RERc0k~vgN%9-=yeg{~S2AlFcU_e-HR$KPs=}Wa(k=ihC zo2>PS-@9$80^W;+QxgE+-Zlvt{7(#$G7+Six6C)C-ojFEB~ou(K0U|0eA@Dahm9AL za)Y$k{H;}}4elJrBrE+*dFv+-3CTu&g}}Y70hOd{|3;1sRI>h}R-1R>0ilCd9kOX4 z&Ql$-@mA1S9W-90Y74}m2#7IMcria?Wi$)At`lQqouy8yW{;BH1d-Wy4AJt#+M5@ z-eX7}aV=8Hb}+h(WI^mvF}Hdikn<=*tUAXYl>?Asw_VO}F!q2X>WtQj> zd4)0(NuD7Yo5rc}R5W_5)a`iDL)<@e{1XxP1O&~108}D+c!B(s%FmPowF2Q%B1ea5 zv5!8=xc2mc2#I(peGDhg1*N-iXADKv9AIEyC%A!_cJ~)fa73+C$iG9zXZVoB zO;bz*`Xd>_a0Jcwmr5z7D2m>tx5>J8*jT;|JhXYaRBcA&z~<#r z=Y735{*91MwHTZIY&QADqtn1V>~0*`{B1VwyBBcZy<)^=mhrHsvH$Am8X$V4Jr8Hf z+Z((|vWK(fZ5?l3c|#9n?;R`LuYig_DanKJpW zOHU3ZfI=PMXtK#X6}gr4R;BHHb|-8l$1wo0?#*_F<0xBaR9c=V`44P<+drg($JxP| z$;TzwK9NI(FTNYf)Pl{iR>jGdMRtU*{XQ>e7PCsRvGRZD{L(g7p)sFC9J>yPN31tpRPqAzIgzZlHH z{K^5>jSt5|xyA8E+mU@ZK8m%cp2!BAeUX2V0@s^W?7iON7v>WC?Cysxc?aW@au~K6 zN9b(>;rMc)n7^}rxY;A9cAjdf$?rt8LdG2Xx;u>y3_aDXhrbqCD~!Bgms_Pyf9rlI z&0f~?+hXHEHCvSlELO9sqB=3B7O5&);cpfVW@;PbiK`9Myd8+4U{*Ch<+5ZoTYf4^ z_?aVp))>O&Ss>3aK-dEE1OPEwo?XA(Bz9jrOX=t$WtZI`ZGRB4wr!RE>?*+M?hNnE z4FK$|<9~>qH5bY^X!$AJm-doO>1UJcNiX+=` z+qOLbq%6F*0fLDcqdh?;$FowyqZseA@VKzG4qpuRk7@8RV3vy0fWd{KkWupj%eYhC zuqi>K%wMKNEtVoWgN+v7XMM!p-=Iw9)L_^dJXcPCT1?1IPBf9 zaj$A5Gzm0Z%Bk)6YbmNBY5GCXZiwbKv3G0uqE1BhCsBr+fL(+TUP5Wld_6L~(bh#?K*yF`Wy*;!X^y{6vb{n~)_T!p%|JMA)&V_` zRFmlMed=je0{SbJfc`$sgTY{X+8omPmYj>WiT5Dg-zNo?I&J4EL()o7NIJuNRV{~c z{;3R59mzpzeT_~?9WJblvt~6P_}Pc0^D(?liQ``w~JrI2=qlIkG%!y6;3 zwwoMD)8EVm%8NLWLbq5Y#a>38fV9{jXt_+jn1F3%0N$e9hlqB*zg*hyY-zQ6+kgx{ zv>>aLWnxyCW^^eN1+}Oup?!={wnNkbvUO3zgtyO|fw zWRa>7fILx8p2{*whRL{U2?b_7vg#Yi$_~;cfwGb9YU9p7a8qo+TAhVGQzE{i3reId zh)<$aw&hF_FMgS;`Ks*f_%AT(2C=6joEXza=B}=#N|oCiIg8fbZfUNc%D5*xPP~tA zTfO)RO!=X_$n3v_0YLWg3=1a8`rx$2J7xCIG?tQ}@p{O319!XHy(I2{E#guvkoqaG zr}bk+?g6C|G@ugWW-&tSfkpfQWSBxwE5kGsg@Q)=!bQd#Y&1Zfm9dn#JUgIf42rkS zrq+rW|3CKL1w6{?TKt~L1)@iJW4+%;O)ZIt38E53&A<#ybOIDn(b5u30zpF(!-Sg% z!AU}wY5F9wY8qwR$DDnwQYjjycW@VYpY1TWCQ_40a4)lt+n6xop+L8J>NO! z|9`&c`FP0e^{&15+H2p|-h1u6*H+1G4_H;B$^Q-ckz`Iw#7`kabA6H0=dAcg5>E2F zlo+ZQP2CL&Ep!D7LRF2I&_QW7jHcG3;Ve$TF*KbkJy^!5VFb)kMf`b$BG7Q6UOB+t zbGX3Sb2uMt7&W$T#FaWblOvdJsN6D4W`0GhzJX=WHHVH*9(8wxe`7TJ3e1uHb@s%T zoAUC^-C<=?q(re$&k}Y@0CEglR}O%ibMg5mr)P8yc%Ip`8@{DOCg9`U^=0ROIA<`* zOiABD37BdS4eZ|&|Im$U2EGqObI6Xvhf;@Sq6!+t&^Ou^43k8+W0$w5O)b;8)+E}# z_G1Qe6DIRZ&AHm`FVUTnp5v}RC{ZdycX6l;vx{T$Y?mn2!5JZVqdLMly3ycNhxO>q z0}uhyXR|J4Oj8&^^rN|D+y6h}l7e~Dz@lrM!IDcxtqi|A~ov=;z7^E$?-+AuR1;PKqX%3Ifg3q*@Fuv zo=W@$5yXflC!f}9j0b0EUjD^NX#Kh}~5#9IGE2s1!pil{|hK91AoLXuP|q^sB< zWw&x|HY|;zbPhs-iy-YX&ka{{Q{EjQu;tgZt@)vg&QY9(*kvaSmsxwj* z;jeVHBCBB;KV-bP2iIO+QeTw|_?aey!F96RUM0Kj|0O-)b6 z>_^P1bo#1&Aecz8f;CcIM!-PNkHpeTt|d z*@}~yhfzbOW+9ApQ6LA{;X}28&h#haOW041l2B5e_Nh@=DtXGV{M+{sGN(YUmptLF zk)9W2K?MbEoa|{@t;bM1iI;`%%;y!d(#V z>c1>&c)7!{g~pdJvkIL;NCRXCp1G2iSGxGLnek0a+-Dv(_p#foY`Q} z+<4Dmp>4h63l-muNL4d`OQe>(wF743pEg=cS0hX@&B)r}DVZ|HH&K=sA7GEeTDnpY zdfR`=rv`H$80Oi!sgBzzCnvf;z>@TX-Mk3XovaubjCWa#bePz9uuF%Q7dHh4WDVOVuqmz@ePVKnbpZZJ> zBeamJ&va)qsaa=~@PY=E@m>TjV27ai2Y4%vtcn0t8*4yWLs2$@mDz**L$6qwXWVMr ztyOZNf;!ukvpNzkX1nv01QGzW;6t_>vBSFxe>?mn+kdhhFJPxrV7r5DcZeOo*mj58 z@kfZ;xg-ZC-sQh&iP}=oPwN)BmSaB}XKW@!k`Gssj(xq|Xq7N0*>*Qb_Xhr3_Jwul zqCe}H6Pe)KwjUfz5XSg}x$?i|H)f;Tjv+78+|mO{M{$+j>9(h0T&vu*WC|g&)+wt} z23FezAgmRMImFY0u%f9i37LTShte8^qA(_vts(ObhhnKJ87; zv@bOj4{OC85`!z%Eqe!aC~Peqq%k_heg?BAt97vkjN6C#m&@_8Ach3udj>9Q;`owe zhnxBIZ4Ujgn}aP=GjT52_>FJbmvdVwXhPZd|L4Q1=pXC`Q(o95Ol{-BQp!(S?tELa zwO$gp=ijN5h-hqqkRY~l*mL59Q4cmh%lums%S`t5Wf46ubX6qzTWPoUsLfH4C1sMS z#2tdA*(a9N0&F?bE-y@&$T#&Bn zv;sxMa!OatK8>l0SXA+huXcIM+h$tc1b{QURye<7-%nZA@}FMuEnNfvcX5FgLl^hYEY_6oOWC z4XpD}=b9Y&2_|y}SZ#IGS(N$zU^Y>?b?m=9IecW)e;~vysCGF^2n$gTT>eo?Ke+ql zp#OQ%QCh9*$cvOwVtcS?2s5Q~D9sOoh1*SLf>y=;1rD< z3;I%VH$zLf`F|5vYOE7ip=?34@)W`1XPH>>qUjIETi_h~Kt{^_EhVWUy{XTWN`hU2;PPoT@_h7{j&>7laj z7#VEYi|%|qos<()Pa&oPgy69Zer2U7k6U2}I60H8e{B_X#8A=I)a5*sl2`d&^($b}$(i-Te(i$${z^_(r z5$f{z8oOJZFLf6#-0t?9itThnrG2%wj8)Pa{>yPs{BOjSjiVr9I#l|C)xJ?a5`Tq< zOF6A<_`g~Cr%+xAb?}bJT7R(c zbO@yoEPN%D*sI~1nxMQG(eN%EMV_;O}X~ zEB>o#imm@KM8&_D%M!^`j12ZyB)`R7_jUd@-hkpxL=;Wq1WpFB3JE1AG9tWIp7=xu z1(ZVM;T#?U%g1uoCBet+Vc{&+*<~9(&{1LV_FzY;Hbb~RpzX47PepQ^w#ML+1E$=g z>!O&}Yi*_8b)a~h;@5#E~g$M7J;KYPVITENp$=`1*6D6E@g*Gn{-F6?{7xM4XJaoZ2tYUqTq6u!; z9v-|;!pi`G;km-y>9K1+0|euESh~n!|AwC6U@ppRFl@~i$Di~^{nWnvl#NRsbxP@{ykbfvMMYIZBIhUeNwb--`>)cGFz2CT6IuAT_&ffv z|M?1R^1ZNMOKSHU;jCd|S1{ahfkr3PE=hp_2buJPlPNZlx~r{Q_ECh?lq4o67&y~A zQPQHVoh8Xgq;PU1>GP|3`kB&C zyzh<~2hMT&cBJzG>7>%PMOUMJyM?z?1~H*y6yc%1JCW+5sFm4f&zz5CGe~BRj21ho zF|n!Pm-(>Ix^08j-~;RNCHx2~B9?mqip zSHX@Y$&(L^?TDQ$^K*mW1Ri^i(bEo$={W4Ps38(nA_NZ|OYodyd(n;w?cvbA+oae7 z4YE^r)`4)xkh747hV%~5qai)~!03*{hBF9{ux?vR4x(K1P@dMyA~88Riy3INDn)V& z4?R#`_2Sr$k%uxlHep^4@lr8f)kEQ=V5rSWMb(F)WNoe|o0|FZs(skvPxI}vvNx2R zFfiVgmu82Wl>{oPHq(BlTzmkX*Trxa7bKx#BVd~2?WUO01*EyS{X*JHq)JUd#5k~O zV#%&@$4Lxxt7|h%hUofC<`Gt_SRG>4AmaYdBDJH*!-mG+8OTcqe8@g9I|_xXFK(fb z7!_Abi;l>icIzDcfoK9h!4D`qwwT|XSS7zaVd0Bi1TY|WJQGrGPX!C#cRS+yLPe+Z zmvDG3T)5vBKg=f)QfryQ@1X>U^?A5(t1DS6wi>^l|8asTY0d19*3(Gm_+^rKh;sZ9 zI%5A0*=dFqIBMot6bJ1NsOQIKib$b+%t8d;nw;ct%zTBjUBO<#%`t|9T@n>7*gB^a z*M$o=L&m?>o<|dj$1*B53mrd`Yh62m;A@vR8f$|{vUy-X`S&XE*E{x+XL53^G_YA8wU6+MS1nKd#&LR$nw1nsng4k;wqKK|AmH0W|W z=*S|19pGo)t1$^|5%!Evh0X*W)SWF42Qdoh+fsx{sctNy2s#hMBdH?l^gpy zzXPN{#lE)FYB-hj0@^eA7(@yI(tM3Hd67-hB)tGWUo&&!e88a;LOy}sAy6eH(j~}& zY5!wv|5f;-Y&8C-ru_%m{&ph9|9_Rfme+462+3l6O&-p%WZ(rDoZ#nUjO3s}^3(&W z_6WYFOQxqvSxEU$K8>$&#r#}d>_jZ#YfKqG4P{QmAYW4_@H2ga6Y=YOU0un~xJoDD zG`<=dF=W{SFa}^-i$mZ>9*JrZZf}{0pbjT?SNQi<_&=}ke;O+N5M8m=`s*cdNJLTyOPpO zVmI-d6Pu##<6^gc@B-VVkjg46x`b4+$~s1nECL|87E_FS0{T=EUVS8AvhcqYBz^ZH)d7d-R zFpw82I!4|^vR2F>x#nc`1D%JpVlM0JIUI9q6usN{oKVp?4xs7lObxlA zqIwJ@)#l=J^?*>(Rq|MpJi9alfyA}KqUpG6Id52r+m%4gQE6uizI=5&&5+4$|fJ)8^C9gYBz8mkgJkmZTkX6nT zrL0KDClC9#(BK^%VPprJuR(09!$DSsyd(Q0?W02GY{ zB`o2jp)|?^ypbF?oV?~$D{r>W%XPy^vuTv)%_0NbaMF5ewY5lCeLmO?uZ>AKZj-$L z8E82ALQS6@^}iGKzZWWf&1yf3qY3d8`nsSW!%(5Z*P_XsJl+AYT6YbQiTDMOeI!%I73!#o04Vs!NDTr2)wNo(-8;uO~*U;E2 zlDv-D`ay{-6)gt&Bdqqyuh4aNJ;^wF6_6Q6pS0Rb`G_Vf7)PJ6+DD#E7)}LsZ(|(& zm|LWbqiz`pWJ&qm1w;OREgGD z&e#cG{fwx>_AO$iKb+VUD&0ITIeg&wf_qUf!IyJ@6j z{Xzf6@?@A{b@RYb>C?fE3(AvoIB{{KwjHz`+q89vx?_!j?8Pn*-)75w=$i~SC-x06 zxv`7*9S}Q_PIQc<#7H`a@hG1pvcettBq%axsMIs{%dn*bYPe&t2snJsO#A4-8SV(! zKIf->R6K_}ifx}u(mpzLh8e>RHI{HrIyyeXf$eiJ4zNtWz-EIHkT*#Kd~s^Lh=2i5-&{{E_;k7b1+)*iVat^~Qva+L51mq%> zgb*=;vct$p%6@Kph!^CAL6nOFwdN}PPm1Dx1v+b$i(!A^3t~$-{uU>$u^MNlH%LX* z&sI3{>r#<%@@V93D~_bal&%ja{t~vvu>=&k+eQCoD`D{7V8@Z79o!OFR?7LY zwS?F$!@2R@5$s^wCrDTnlV}8FbaFXE0<$H?4ng7b*x*Qf7%p7j{VCR#*J33T21-5( zqCY5n8peZ(-Jz0hZ0nvHD*P~1vOiR~zx1QUIi*i8I;8YN*N&DU}V$qmC%t z0gENiCtiTJP~p2JPZvI2y1}~LqI>b;_3Z<3Q~$;f_8G*OAU{+6qmzf7@WQ9NU(3qt zs1VF}Y3NN^W0OO$q94f)zOXO2`yZjKS_Y3<=&0pM`BluuSyVDj8d z=iLUDk;rPlo-wv;*IGuQN+219lqw~Cr-8C4-vv_6vFoIibvz#7$ zS?wp}uuHH$l3bJ@D%=#`V@X%B+V9JC`oIr?*d*t=zDJkf&Tj!d$)1aS(`P1QEAy!U=@`;YPPb=cIuo-NpJK&d)xNIe;G6UtrZqPXxHHYR{ni)!>1@`o7Wq?4SX3-jTC0{Qyz)87~?e+sPZCxi` zGOyxoFwcY=UwLZ{%}zdM^varI`i|971$?9HRbF!L?%?KoSK?sw-~`#tlm z{W{;;uk)?_%(oC5hX^qyC#*IW(3i0MTfu|VV^EB)C<)TPrE8QGT|gCc6r`A@A*1sV zj!&rQSn;tH8Tg!*_K{YDj|u{)6*@j;MLL|9na)leH=U44$5wLSQ|iPC73t)}(Q=^8 zSYWfkeCt?}CxIK`ld~$!xA2-zmN<37e2b48nQx)eK%K$IH0E0~7$+-H?XH-aTUOMN zTZTFVpRY6DLZyK^L#VM1?aqUuv~KLtG~#w)H7PZ>okMRjTFPk?z3OhYzVaqRd&fUK z`i#dVgzP7%#x!*`ejF`g>l!_0YVv0J+8mU*#D>%g{K}IzqaNLBEqxG^U(=T*uSeCs z0s|_qM0USYk&F(`>KIU-98$`v$&Xa>vv7;bliC+^vQF<#%VsQFMjSTbH;eHSCp*Sd zHv5b`m;I#N7>grYzj-(hZg(IcMp4&HO;J%u&4xP6M9W%Xq<4o_q3y|$D6LRi&k^d- zHbGRQcu^tR{LRXRsiYFHO)Xrk2G_{<1YcT4AP{&-OGYEB{XCf?> zF+&8mne-A~D+8*{zexol>zuEQly0|fnWu;rN`f;M<(T9Nb0*;}%$Ho29GNFWq1F0z zr-NbGQx^VoFr9sNsGhD|?EALLlmv+W^J6FhA!B8=0z~iOH<$5}y>jLs@@_nHREO4~ zhL)oeVzG~pbeN*kjSuC&)-U}#XwoesT?r!lg1V03SdbG%xB1g5Boq{mkM7gk$8KO? zR@%p#nJt`%92_jVo(@qj#f@U8=z5BriPhZra2J}*05w15u5gDI-RDQaTi zoTKHR8!ozzI+#9y_yZs&ZyM4U>IX)WqOe(;r+q>tR#8!;bPuwrxg+&=IXqqZvUST* zT)EQy(&UZOo-d4YsJ*B(vU@{CvaXm(M67_BN?k5vAn(d|j4UWm&NofFhhsKsz?RW( zBV|v!rDp!qK+IP##$e#=*bUOgW8<}b4|m)5QMB(O+V_0zIHNQz$#}jNv?H`s3F|a( zM=EJkAgJjAMcM^I9a?o@RRX$l%2Du{F5t*0qmZ?gg-BK-2eny5OUc^S_q9VHxh#}! zQZ)!6r=BJtxUQz2t`c@D5nMB|)dKxG7M7?w&w;Hso zXkAfHq}zOJYBmXLeMFe5-14UnTzO@!7?^CrZpo)bVIP{+isYo?tcv7lWKFXlW!s^w z%_6esN2MBNNz?l655?RG6Mb8WO65GLT}0HWAvrD~XB*I*X2sBL|7OXlb&SRE=n!K^pac}8p~-d!*EBQy&N|}%P85?$^g6Kw8qkk0K4L} z#?nfFep1s6{wKO=VG;HS3^b3_7qOVfrHo;_9-eXOOVklZr#f({FzRSJi+No75_L3( z#k@{J=TS$CSj^)(l>`y(L=aM?Cn-07J2jM~*>4lQpcy;r7$4*n){***k+VPD`WdTx zJ#NN+rcol+GFXeoTvh;j>db1LeX0nMRxo5wGcObQkdgNuZlPf7Zu990|q$orBW?ixWnDt z#~_2hiv-Y1y=g+1*rC^kJIwK@!gXBfwrTItQ)Mvx3(^w4NJQA;#44%- zD2P($21=b3ix`S5W3?CbKg-aDrJI|;%Tac{mbT^6VCk!3X~!D(7Tg`FH5?wi86k|p znqv!}S@NkAj#crDe?4bl0@f`S(N)=DPH+)v5Pw(Fhf%kQI;Nbtpz663&xZ<8-)u_k z3>R+b{tPY5I*cWta4GpvwJ=x+`7BiOq}XgjaTF@#V{NE#ZRv+-VO~QEv(v+uIRu|( zELixI;f$jpPZ`#l=D}7eSKsC|xJ=pe5MfGmG;)T*VeXkw;frWtg4jMRL?14itKD3X zQT|>_o^%R&n{Z-}Xs+H+&DEZgorOEuM7aGKHpoMq=e>OuKx!R7dX>`cZr7kA(v!#S ze}7H<^sQB${-vG)A-ri>NgeP}!yJCSDA*jo)t3uYeYE9#!;7aMa;lb~b;Cp(! zd{g>(`6iB+o4OrAgOWm|^~gg+QhHKwZfi-&y_pav(QglKCGTVS;f%muxRX1FBf7U8 zy5wDR`UST5k3+F1*Elzdd!~%!=PUZeg_s z2*5Y9tTq}VP@QfYj~%0A=t83A@*CQ1{UP&Bf|()z)?di` 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"y~)2NlzdA5(M}wqzY{O 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 +# endif + + /* Need the time information for converting tIME chunks, it + * defines struct tm: + */ +# ifdef PNG_CONVERT_tIME_SUPPORTED + /* "time.h" functions are not supported on all operating systems */ +# include +# endif +# endif + +/* Machine specific configuration. */ +# include "pngconf.h" +#endif /* * Added at libpng-1.2.8 @@ -416,13 +444,13 @@ * StringFileInfo block must contain a SpecialBuild string. */ -#ifdef PNG_USER_PRIVATEBUILD +#ifdef PNG_USER_PRIVATEBUILD /* From pnglibconf.h */ # define PNG_LIBPNG_BUILD_TYPE \ - (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_PRIVATE) + (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_PRIVATE) #else # ifdef PNG_LIBPNG_SPECIALBUILD # define PNG_LIBPNG_BUILD_TYPE \ - (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_SPECIAL) + (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_SPECIAL) # else # define PNG_LIBPNG_BUILD_TYPE (PNG_LIBPNG_BUILD_BASE_TYPE) # endif @@ -435,20 +463,61 @@ extern "C" { #endif /* __cplusplus */ -/* This file is arranged in several sections. The first section contains - * structure and type definitions. The second section contains the external - * library functions, while the third has the internal library functions, - * which applications aren't expected to use directly. - */ - -/* Variables declared in png.c - only it needs to define PNG_NO_EXTERN */ -#if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN) /* Version information for C files, stored in png.c. This had better match * the version above. */ #define png_libpng_ver png_get_header_ver(NULL) -#endif /* PNG_NO_EXTERN */ +/* This file is arranged in several sections: + * + * 1. Any configuration options that can be specified by for the application + * code when it is built. (Build time configuration is in pnglibconf.h) + * 2. Type definitions (base types are defined in pngconf.h), structure + * definitions. + * 3. Exported library functions. + * + * The library source code has additional files (principally pngpriv.h) that + * allow configuration of the library. + */ +/* Section 1: run time configuration + * See pnglibconf.h for build time configuration + * + * Run time configuration allows the application to choose between + * implementations of certain arithmetic APIs. The default is set + * at build time and recorded in pnglibconf.h, but it is safe to + * override these (and only these) settings. Note that this won't + * change what the library does, only application code, and the + * settings can (and probably should) be made on a per-file basis + * by setting the #defines before including png.h + * + * Use macros to read integers from PNG data or use the exported + * functions? + * PNG_USE_READ_MACROS: use the macros (see below) Note that + * the macros evaluate their argument multiple times. + * PNG_NO_USE_READ_MACROS: call the relevant library function. + * + * Use the alternative algorithm for compositing alpha samples that + * does not use division? + * PNG_READ_COMPOSITE_NODIV_SUPPORTED: use the 'no division' + * algorithm. + * PNG_NO_READ_COMPOSITE_NODIV: use the 'division' algorithm. + * + * How to handle benign errors if PNG_ALLOW_BENIGN_ERRORS is + * false? + * PNG_ALLOW_BENIGN_ERRORS: map calls to the benign error + * APIs to png_warning. + * Otherwise the calls are mapped to png_error. + */ + +/* Section 2: type definitions, including structures and compile time + * constants. + * See pngconf.h for base types that vary by machine/system + */ + +/* This triggers a compiler error in png.c, if png.c and png.h + * do not agree upon the version number. + */ +typedef char* png_libpng_version_1_5_2; /* Three color definitions. The order of the red, green, and blue, (and the * exact size) is not important, although the size of the fields need to @@ -461,6 +530,7 @@ typedef struct png_color_struct png_byte blue; } png_color; typedef png_color FAR * png_colorp; +typedef PNG_CONST png_color FAR * png_const_colorp; typedef png_color FAR * FAR * png_colorpp; typedef struct png_color_16_struct @@ -472,6 +542,7 @@ typedef struct png_color_16_struct png_uint_16 gray; /* for use in grayscale files */ } png_color_16; typedef png_color_16 FAR * png_color_16p; +typedef PNG_CONST png_color_16 FAR * png_const_color_16p; typedef png_color_16 FAR * FAR * png_color_16pp; typedef struct png_color_8_struct @@ -483,6 +554,7 @@ typedef struct png_color_8_struct png_byte alpha; /* for alpha channel files */ } png_color_8; typedef png_color_8 FAR * png_color_8p; +typedef PNG_CONST png_color_8 FAR * png_const_color_8p; typedef png_color_8 FAR * FAR * png_color_8pp; /* @@ -498,6 +570,7 @@ typedef struct png_sPLT_entry_struct png_uint_16 frequency; } png_sPLT_entry; typedef png_sPLT_entry FAR * png_sPLT_entryp; +typedef PNG_CONST png_sPLT_entry FAR * png_const_sPLT_entryp; typedef png_sPLT_entry FAR * FAR * png_sPLT_entrypp; /* When the depth of the sPLT palette is 8 bits, the color and alpha samples @@ -513,6 +586,7 @@ typedef struct png_sPLT_struct png_int_32 nentries; /* number of palette entries */ } png_sPLT_t; typedef png_sPLT_t FAR * png_sPLT_tp; +typedef PNG_CONST png_sPLT_t FAR * png_const_sPLT_tp; typedef png_sPLT_t FAR * FAR * png_sPLT_tpp; #ifdef PNG_TEXT_SUPPORTED @@ -535,15 +609,14 @@ typedef struct png_text_struct png_charp text; /* comment, may be an empty string (ie "") or a NULL pointer */ png_size_t text_length; /* length of the text string */ -#ifdef PNG_iTXt_SUPPORTED png_size_t itxt_length; /* length of the itxt string */ png_charp lang; /* language code, 0-79 characters or a NULL pointer */ png_charp lang_key; /* keyword translated UTF-8 string, 0 or more chars or a NULL pointer */ -#endif } png_text; typedef png_text FAR * png_textp; +typedef PNG_CONST png_text FAR * png_const_textp; typedef png_text FAR * FAR * png_textpp; #endif @@ -573,10 +646,11 @@ typedef struct png_time_struct png_byte second; /* second of minute, 0 - 60 (for leap seconds) */ } png_time; typedef png_time FAR * png_timep; +typedef PNG_CONST png_time FAR * png_const_timep; typedef png_time FAR * FAR * png_timepp; #if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) || \ - defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED) + defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED) /* png_unknown_chunk is a structure to hold queued chunks for which there is * no specific support. The idea is that we can use this to queue * up private chunks for output even though the library doesn't actually @@ -593,312 +667,13 @@ typedef struct png_unknown_chunk_t } png_unknown_chunk; typedef png_unknown_chunk FAR * png_unknown_chunkp; +typedef PNG_CONST png_unknown_chunk FAR * png_const_unknown_chunkp; typedef png_unknown_chunk FAR * FAR * png_unknown_chunkpp; #endif -/* png_info is a structure that holds the information in a PNG file so - * that the application can find out the characteristics of the image. - * If you are reading the file, this structure will tell you what is - * in the PNG file. If you are writing the file, fill in the information - * you want to put into the PNG file, then call png_write_info(). - * The names chosen should be very close to the PNG specification, so - * consult that document for information about the meaning of each field. - * - * With libpng < 0.95, it was only possible to directly set and read the - * the values in the png_info_struct, which meant that the contents and - * order of the values had to remain fixed. With libpng 0.95 and later, - * however, there are now functions that abstract the contents of - * png_info_struct from the application, so this makes it easier to use - * libpng with dynamic libraries, and even makes it possible to use - * libraries that don't have all of the libpng ancillary chunk-handing - * functionality. - * - * In any case, the order of the parameters in png_info_struct should NOT - * be changed for as long as possible to keep compatibility with applications - * that use the old direct-access method with png_info_struct. - * - * The following members may have allocated storage attached that should be - * cleaned up before the structure is discarded: palette, trans, text, - * pcal_purpose, pcal_units, pcal_params, hist, iccp_name, iccp_profile, - * splt_palettes, scal_unit, row_pointers, and unknowns. By default, these - * are automatically freed when the info structure is deallocated, if they were - * allocated internally by libpng. This behavior can be changed by means - * of the png_data_freer() function. - * - * More allocation details: all the chunk-reading functions that - * change these members go through the corresponding png_set_* - * functions. A function to clear these members is available: see - * png_free_data(). The png_set_* functions do not depend on being - * able to point info structure members to any of the storage they are - * passed (they make their own copies), EXCEPT that the png_set_text - * functions use the same storage passed to them in the text_ptr or - * itxt_ptr structure argument, and the png_set_rows and png_set_unknowns - * functions do not make their own copies. - */ -typedef struct png_info_struct -{ - /* the following are necessary for every PNG file */ - png_uint_32 width PNG_DEPSTRUCT; /* width of image in pixels (from IHDR) */ - png_uint_32 height PNG_DEPSTRUCT; /* height of image in pixels (from IHDR) */ - png_uint_32 valid PNG_DEPSTRUCT; /* valid chunk data (see PNG_INFO_ - below) */ - png_size_t rowbytes PNG_DEPSTRUCT; /* bytes needed to hold an untransformed - row */ - png_colorp palette PNG_DEPSTRUCT; /* array of color values - (valid & PNG_INFO_PLTE) */ - png_uint_16 num_palette PNG_DEPSTRUCT; /* number of color entries in - "palette" (PLTE) */ - png_uint_16 num_trans PNG_DEPSTRUCT; /* number of transparent palette - color (tRNS) */ - png_byte bit_depth PNG_DEPSTRUCT; /* 1, 2, 4, 8, or 16 bits/channel - (from IHDR) */ - png_byte color_type PNG_DEPSTRUCT; /* see PNG_COLOR_TYPE_ below - (from IHDR) */ - /* The following three should have been named *_method not *_type */ - png_byte compression_type PNG_DEPSTRUCT; /* must be - PNG_COMPRESSION_TYPE_BASE (IHDR) */ - png_byte filter_type PNG_DEPSTRUCT; /* must be PNG_FILTER_TYPE_BASE - (from IHDR) */ - png_byte interlace_type PNG_DEPSTRUCT; /* One of PNG_INTERLACE_NONE, - PNG_INTERLACE_ADAM7 */ - - /* The following is informational only on read, and not used on writes. */ - png_byte channels PNG_DEPSTRUCT; /* number of data channels per - pixel (1, 2, 3, 4) */ - png_byte pixel_depth PNG_DEPSTRUCT; /* number of bits per pixel */ - png_byte spare_byte PNG_DEPSTRUCT; /* to align the data, and for - future use */ - png_byte signature[8] PNG_DEPSTRUCT; /* magic bytes read by libpng - from start of file */ - - /* The rest of the data is optional. If you are reading, check the - * valid field to see if the information in these are valid. If you - * are writing, set the valid field to those chunks you want written, - * and initialize the appropriate fields below. - */ - -#if defined(PNG_gAMA_SUPPORTED) && defined(PNG_FLOATING_POINT_SUPPORTED) - /* The gAMA chunk describes the gamma characteristics of the system - * on which the image was created, normally in the range [1.0, 2.5]. - * Data is valid if (valid & PNG_INFO_gAMA) is non-zero. - */ - float gamma PNG_DEPSTRUCT; /* gamma value of image, - if (valid & PNG_INFO_gAMA) */ -#endif - -#ifdef PNG_sRGB_SUPPORTED - /* GR-P, 0.96a */ - /* Data valid if (valid & PNG_INFO_sRGB) non-zero. */ - png_byte srgb_intent PNG_DEPSTRUCT; /* sRGB rendering intent - [0, 1, 2, or 3] */ -#endif - -#ifdef PNG_TEXT_SUPPORTED - /* The tEXt, and zTXt chunks contain human-readable textual data in - * uncompressed, compressed, and optionally compressed forms, respectively. - * The data in "text" is an array of pointers to uncompressed, - * null-terminated C strings. Each chunk has a keyword that describes the - * textual data contained in that chunk. Keywords are not required to be - * unique, and the text string may be empty. Any number of text chunks may - * be in an image. - */ - int num_text PNG_DEPSTRUCT; /* number of comments read/to write */ - int max_text PNG_DEPSTRUCT; /* current size of text array */ - png_textp text PNG_DEPSTRUCT; /* array of comments read/to write */ -#endif /* PNG_TEXT_SUPPORTED */ - -#ifdef PNG_tIME_SUPPORTED - /* The tIME chunk holds the last time the displayed image data was - * modified. See the png_time struct for the contents of this struct. - */ - png_time mod_time PNG_DEPSTRUCT; -#endif - -#ifdef PNG_sBIT_SUPPORTED - /* The sBIT chunk specifies the number of significant high-order bits - * in the pixel data. Values are in the range [1, bit_depth], and are - * only specified for the channels in the pixel data. The contents of - * the low-order bits is not specified. Data is valid if - * (valid & PNG_INFO_sBIT) is non-zero. - */ - png_color_8 sig_bit PNG_DEPSTRUCT; /* significant bits in color channels */ -#endif - -#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_EXPAND_SUPPORTED) || \ -defined(PNG_READ_BACKGROUND_SUPPORTED) - /* The tRNS chunk supplies transparency data for paletted images and - * other image types that don't need a full alpha channel. There are - * "num_trans" transparency values for a paletted image, stored in the - * same order as the palette colors, starting from index 0. Values - * for the data are in the range [0, 255], ranging from fully transparent - * to fully opaque, respectively. For non-paletted images, there is a - * single color specified that should be treated as fully transparent. - * Data is valid if (valid & PNG_INFO_tRNS) is non-zero. - */ - png_bytep trans_alpha PNG_DEPSTRUCT; /* alpha values for paletted - image */ - png_color_16 trans_color PNG_DEPSTRUCT; /* transparent color for - non-palette image */ -#endif - -#if defined(PNG_bKGD_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) - /* The bKGD chunk gives the suggested image background color if the - * display program does not have its own background color and the image - * is needs to composited onto a background before display. The colors - * in "background" are normally in the same color space/depth as the - * pixel data. Data is valid if (valid & PNG_INFO_bKGD) is non-zero. - */ - png_color_16 background PNG_DEPSTRUCT; -#endif - -#ifdef PNG_oFFs_SUPPORTED - /* The oFFs chunk gives the offset in "offset_unit_type" units rightwards - * and downwards from the top-left corner of the display, page, or other - * application-specific co-ordinate space. See the PNG_OFFSET_ defines - * below for the unit types. Valid if (valid & PNG_INFO_oFFs) non-zero. - */ - png_int_32 x_offset PNG_DEPSTRUCT; /* x offset on page */ - png_int_32 y_offset PNG_DEPSTRUCT; /* y offset on page */ - png_byte offset_unit_type PNG_DEPSTRUCT; /* offset units type */ -#endif - -#ifdef PNG_pHYs_SUPPORTED - /* The pHYs chunk gives the physical pixel density of the image for - * display or printing in "phys_unit_type" units (see PNG_RESOLUTION_ - * defines below). Data is valid if (valid & PNG_INFO_pHYs) is non-zero. - */ - png_uint_32 x_pixels_per_unit PNG_DEPSTRUCT; /* horizontal pixel density */ - png_uint_32 y_pixels_per_unit PNG_DEPSTRUCT; /* vertical pixel density */ - png_byte phys_unit_type PNG_DEPSTRUCT; /* resolution type (see - PNG_RESOLUTION_ below) */ -#endif - -#ifdef PNG_hIST_SUPPORTED - /* The hIST chunk contains the relative frequency or importance of the - * various palette entries, so that a viewer can intelligently select a - * reduced-color palette, if required. Data is an array of "num_palette" - * values in the range [0,65535]. Data valid if (valid & PNG_INFO_hIST) - * is non-zero. - */ - png_uint_16p hist PNG_DEPSTRUCT; -#endif - -#ifdef PNG_cHRM_SUPPORTED - /* The cHRM chunk describes the CIE color characteristics of the monitor - * on which the PNG was created. This data allows the viewer to do gamut - * mapping of the input image to ensure that the viewer sees the same - * colors in the image as the creator. Values are in the range - * [0.0, 0.8]. Data valid if (valid & PNG_INFO_cHRM) non-zero. - */ -#ifdef PNG_FLOATING_POINT_SUPPORTED - float x_white PNG_DEPSTRUCT; - float y_white PNG_DEPSTRUCT; - float x_red PNG_DEPSTRUCT; - float y_red PNG_DEPSTRUCT; - float x_green PNG_DEPSTRUCT; - float y_green PNG_DEPSTRUCT; - float x_blue PNG_DEPSTRUCT; - float y_blue PNG_DEPSTRUCT; -#endif -#endif - -#ifdef PNG_pCAL_SUPPORTED - /* The pCAL chunk describes a transformation between the stored pixel - * values and original physical data values used to create the image. - * The integer range [0, 2^bit_depth - 1] maps to the floating-point - * range given by [pcal_X0, pcal_X1], and are further transformed by a - * (possibly non-linear) transformation function given by "pcal_type" - * and "pcal_params" into "pcal_units". Please see the PNG_EQUATION_ - * defines below, and the PNG-Group's PNG extensions document for a - * complete description of the transformations and how they should be - * implemented, and for a description of the ASCII parameter strings. - * Data values are valid if (valid & PNG_INFO_pCAL) non-zero. - */ - png_charp pcal_purpose PNG_DEPSTRUCT; /* pCAL chunk description string */ - png_int_32 pcal_X0 PNG_DEPSTRUCT; /* minimum value */ - png_int_32 pcal_X1 PNG_DEPSTRUCT; /* maximum value */ - png_charp pcal_units PNG_DEPSTRUCT; /* Latin-1 string giving physical - units */ - png_charpp pcal_params PNG_DEPSTRUCT; /* ASCII strings containing - parameter values */ - png_byte pcal_type PNG_DEPSTRUCT; /* equation type - (see PNG_EQUATION_ below) */ - png_byte pcal_nparams PNG_DEPSTRUCT; /* number of parameters given - in pcal_params */ -#endif - -/* New members added in libpng-1.0.6 */ - png_uint_32 free_me PNG_DEPSTRUCT; /* flags items libpng is - responsible for freeing */ - -#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) || \ - defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED) - /* Storage for unknown chunks that the library doesn't recognize. */ - png_unknown_chunkp unknown_chunks PNG_DEPSTRUCT; - png_size_t unknown_chunks_num PNG_DEPSTRUCT; -#endif - -#ifdef PNG_iCCP_SUPPORTED - /* iCCP chunk data. */ - png_charp iccp_name PNG_DEPSTRUCT; /* profile name */ - png_charp iccp_profile PNG_DEPSTRUCT; /* International Color Consortium - profile data */ - /* Note to maintainer: should be png_bytep */ - png_uint_32 iccp_proflen PNG_DEPSTRUCT; /* ICC profile data length */ - png_byte iccp_compression PNG_DEPSTRUCT; /* Always zero */ -#endif - -#ifdef PNG_sPLT_SUPPORTED - /* Data on sPLT chunks (there may be more than one). */ - png_sPLT_tp splt_palettes PNG_DEPSTRUCT; - png_uint_32 splt_palettes_num PNG_DEPSTRUCT; -#endif - -#ifdef PNG_sCAL_SUPPORTED - /* The sCAL chunk describes the actual physical dimensions of the - * subject matter of the graphic. The chunk contains a unit specification - * a byte value, and two ASCII strings representing floating-point - * values. The values are width and height corresponsing to one pixel - * in the image. This external representation is converted to double - * here. Data values are valid if (valid & PNG_INFO_sCAL) is non-zero. - */ - png_byte scal_unit PNG_DEPSTRUCT; /* unit of physical scale */ -#ifdef PNG_FLOATING_POINT_SUPPORTED - double scal_pixel_width PNG_DEPSTRUCT; /* width of one pixel */ - double scal_pixel_height PNG_DEPSTRUCT; /* height of one pixel */ -#endif -#ifdef PNG_FIXED_POINT_SUPPORTED - png_charp scal_s_width PNG_DEPSTRUCT; /* string containing height */ - png_charp scal_s_height PNG_DEPSTRUCT; /* string containing width */ -#endif -#endif - -#ifdef PNG_INFO_IMAGE_SUPPORTED - /* Memory has been allocated if (valid & PNG_ALLOCATED_INFO_ROWS) - non-zero */ - /* Data valid if (valid & PNG_INFO_IDAT) non-zero */ - png_bytepp row_pointers PNG_DEPSTRUCT; /* the image bits */ -#endif - -#if defined(PNG_FIXED_POINT_SUPPORTED) && defined(PNG_gAMA_SUPPORTED) - png_fixed_point int_gamma PNG_DEPSTRUCT; /* gamma of image, - if (valid & PNG_INFO_gAMA) */ -#endif - -#if defined(PNG_cHRM_SUPPORTED) && defined(PNG_FIXED_POINT_SUPPORTED) - png_fixed_point int_x_white PNG_DEPSTRUCT; - png_fixed_point int_y_white PNG_DEPSTRUCT; - png_fixed_point int_x_red PNG_DEPSTRUCT; - png_fixed_point int_y_red PNG_DEPSTRUCT; - png_fixed_point int_x_green PNG_DEPSTRUCT; - png_fixed_point int_y_green PNG_DEPSTRUCT; - png_fixed_point int_x_blue PNG_DEPSTRUCT; - png_fixed_point int_y_blue PNG_DEPSTRUCT; -#endif - -} png_info; - +typedef struct png_info_def png_info; typedef png_info FAR * png_infop; +typedef PNG_CONST png_info FAR * png_const_infop; typedef png_info FAR * FAR * png_infopp; /* Maximum positive integer used in PNG is (2^31)-1 */ @@ -906,6 +681,12 @@ typedef png_info FAR * FAR * png_infopp; #define PNG_UINT_32_MAX ((png_uint_32)(-1)) #define PNG_SIZE_MAX ((png_size_t)(-1)) +/* These are constants for fixed point values encoded in the + * PNG specification manner (x100000) + */ +#define PNG_FP_1 100000 +#define PNG_FP_HALF 50000 + /* These describe the color_type field in png_info. */ /* color type masks */ #define PNG_COLOR_MASK_PALETTE 1 @@ -1000,11 +781,11 @@ typedef png_info FAR * FAR * png_infopp; */ typedef struct png_row_info_struct { - png_uint_32 width; /* width of row */ - png_size_t rowbytes; /* number of bytes in row */ - png_byte color_type; /* color type of row */ - png_byte bit_depth; /* bit depth of row */ - png_byte channels; /* number of channels (1, 2, 3, or 4) */ + png_uint_32 width; /* width of row */ + png_size_t rowbytes; /* number of bytes in row */ + png_byte color_type; /* color type of row */ + png_byte bit_depth; /* bit depth of row */ + png_byte channels; /* number of channels (1, 2, 3, or 4) */ png_byte pixel_depth; /* bits per pixel (depth * channels) */ } png_row_info; @@ -1015,46 +796,74 @@ typedef png_row_info FAR * FAR * png_row_infopp; * that allow the user to override the default I/O functions with his or her * own. The png_error_ptr type should match that of user-supplied warning * and error functions, while the png_rw_ptr type should match that of the - * user read/write data functions. + * user read/write data functions. Note that the 'write' function must not + * modify the buffer it is passed. The 'read' function, on the other hand, is + * expected to return the read data in the buffer. */ typedef struct png_struct_def png_struct; +typedef PNG_CONST png_struct FAR * png_const_structp; typedef png_struct FAR * png_structp; -typedef void (PNGAPI *png_error_ptr) PNGARG((png_structp, png_const_charp)); -typedef void (PNGAPI *png_rw_ptr) PNGARG((png_structp, png_bytep, png_size_t)); -typedef void (PNGAPI *png_flush_ptr) PNGARG((png_structp)); -typedef void (PNGAPI *png_read_status_ptr) PNGARG((png_structp, png_uint_32, - int)); -typedef void (PNGAPI *png_write_status_ptr) PNGARG((png_structp, png_uint_32, - int)); +typedef PNG_CALLBACK(void, *png_error_ptr, (png_structp, png_const_charp)); +typedef PNG_CALLBACK(void, *png_rw_ptr, (png_structp, png_bytep, png_size_t)); +typedef PNG_CALLBACK(void, *png_flush_ptr, (png_structp)); +typedef PNG_CALLBACK(void, *png_read_status_ptr, (png_structp, png_uint_32, + int)); +typedef PNG_CALLBACK(void, *png_write_status_ptr, (png_structp, png_uint_32, + int)); #ifdef PNG_PROGRESSIVE_READ_SUPPORTED -typedef void (PNGAPI *png_progressive_info_ptr) PNGARG((png_structp, - png_infop)); -typedef void (PNGAPI *png_progressive_end_ptr) PNGARG((png_structp, png_infop)); -typedef void (PNGAPI *png_progressive_row_ptr) PNGARG((png_structp, png_bytep, - png_uint_32, int)); +typedef PNG_CALLBACK(void, *png_progressive_info_ptr, (png_structp, png_infop)); +typedef PNG_CALLBACK(void, *png_progressive_end_ptr, (png_structp, png_infop)); + +/* The following callback receives png_uint_32 row_number, int pass for the + * png_bytep data of the row. When transforming an interlaced image the + * row number is the row number within the sub-image of the interlace pass, so + * the value will increase to the height of the sub-image (not the full image) + * then reset to 0 for the next pass. + * + * Use PNG_ROW_FROM_PASS_ROW(row, pass) and PNG_COL_FROM_PASS_COL(col, pass) to + * find the output pixel (x,y) given an interlaced sub-image pixel + * (row,col,pass). (See below for these macros.) + */ +typedef PNG_CALLBACK(void, *png_progressive_row_ptr, (png_structp, png_bytep, + png_uint_32, int)); #endif #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) -typedef void (PNGAPI *png_user_transform_ptr) PNGARG((png_structp, - png_row_infop, png_bytep)); +typedef PNG_CALLBACK(void, *png_user_transform_ptr, (png_structp, png_row_infop, + png_bytep)); #endif #ifdef PNG_USER_CHUNKS_SUPPORTED -typedef int (PNGAPI *png_user_chunk_ptr) PNGARG((png_structp, - png_unknown_chunkp)); +typedef PNG_CALLBACK(int, *png_user_chunk_ptr, (png_structp, + png_unknown_chunkp)); #endif #ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED -typedef void (PNGAPI *png_unknown_chunk_ptr) PNGARG((png_structp)); +typedef PNG_CALLBACK(void, *png_unknown_chunk_ptr, (png_structp)); #endif + #ifdef PNG_SETJMP_SUPPORTED /* This must match the function definition in , and the * application must include this before png.h to obtain the definition - * of jmp_buf. + * of jmp_buf. The function is required to be PNG_NORETURN. (Note that + * PNG_PTR_NORETURN is used here because current versions of the Microsoft + * C compiler do not support the PNG_NORETURN attribute on a pointer.) + * + * If you get a type warning from the compiler when linking against this line + * then your compiler has 'longjmp' that does not match the requirements of the + * compiler that built libpng. You will have to write a wrapper function for + * your compiler's longjmp and call png_set_longjmp_fn directly (not via the + * png_jmpbuf macro.) + * + * If you get a warning here while building the library you will need to make + * changes to ensure that pnglibconf.h records the calling convention used by + * your compiler. This may be very difficult - try using a different compiler + * to build the library! */ -typedef void (PNGAPI *png_longjmp_ptr) PNGARG((jmp_buf, int)); +typedef PNG_FUNCTION(void, (PNGCAPI *png_longjmp_ptr), PNGARG((jmp_buf, int)), + PNG_PTR_NORETURN); #endif /* Transform masks for the high-level interface */ @@ -1082,447 +891,85 @@ typedef void (PNGAPI *png_longjmp_ptr) PNGARG((jmp_buf, int)); #define PNG_FLAG_MNG_FILTER_64 0x04 #define PNG_ALL_MNG_FEATURES 0x05 -typedef png_voidp (*png_malloc_ptr) PNGARG((png_structp, png_alloc_size_t)); -typedef void (*png_free_ptr) PNGARG((png_structp, png_voidp)); - -/* The structure that holds the information to read and write PNG files. - * The only people who need to care about what is inside of this are the - * people who will be modifying the library for their own special needs. - * It should NOT be accessed directly by an application, except to store - * the jmp_buf. +/* NOTE: prior to 1.5 these functions had no 'API' style declaration, + * this allowed the zlib default functions to be used on Windows + * platforms. In 1.5 the zlib default malloc (which just calls malloc and + * ignores the first argument) should be completely compatible with the + * following. */ - -struct png_struct_def -{ -#ifdef PNG_SETJMP_SUPPORTED - jmp_buf jmpbuf PNG_DEPSTRUCT; /* used in png_error */ - png_longjmp_ptr longjmp_fn PNG_DEPSTRUCT;/* setjmp non-local goto - function. */ -#endif - png_error_ptr error_fn PNG_DEPSTRUCT; /* function for printing - errors and aborting */ - png_error_ptr warning_fn PNG_DEPSTRUCT; /* function for printing - warnings */ - png_voidp error_ptr PNG_DEPSTRUCT; /* user supplied struct for - error functions */ - png_rw_ptr write_data_fn PNG_DEPSTRUCT; /* function for writing - output data */ - png_rw_ptr read_data_fn PNG_DEPSTRUCT; /* function for reading - input data */ - png_voidp io_ptr PNG_DEPSTRUCT; /* ptr to application struct - for I/O functions */ - -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED - png_user_transform_ptr read_user_transform_fn PNG_DEPSTRUCT; /* user read - transform */ -#endif - -#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED - png_user_transform_ptr write_user_transform_fn PNG_DEPSTRUCT; /* user write - transform */ -#endif - -/* These were added in libpng-1.0.2 */ -#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ - defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) - png_voidp user_transform_ptr PNG_DEPSTRUCT; /* user supplied struct - for user transform */ - png_byte user_transform_depth PNG_DEPSTRUCT; /* bit depth of user - transformed pixels */ - png_byte user_transform_channels PNG_DEPSTRUCT; /* channels in user - transformed pixels */ -#endif -#endif - - png_uint_32 mode PNG_DEPSTRUCT; /* tells us where we are in - the PNG file */ - png_uint_32 flags PNG_DEPSTRUCT; /* flags indicating various - things to libpng */ - png_uint_32 transformations PNG_DEPSTRUCT; /* which transformations - to perform */ - - z_stream zstream PNG_DEPSTRUCT; /* pointer to decompression - structure (below) */ - png_bytep zbuf PNG_DEPSTRUCT; /* buffer for zlib */ - png_size_t zbuf_size PNG_DEPSTRUCT; /* size of zbuf */ - int zlib_level PNG_DEPSTRUCT; /* holds zlib compression level */ - int zlib_method PNG_DEPSTRUCT; /* holds zlib compression method */ - int zlib_window_bits PNG_DEPSTRUCT; /* holds zlib compression window - bits */ - int zlib_mem_level PNG_DEPSTRUCT; /* holds zlib compression memory - level */ - int zlib_strategy PNG_DEPSTRUCT; /* holds zlib compression - strategy */ - - png_uint_32 width PNG_DEPSTRUCT; /* width of image in pixels */ - png_uint_32 height PNG_DEPSTRUCT; /* height of image in pixels */ - png_uint_32 num_rows PNG_DEPSTRUCT; /* number of rows in current pass */ - png_uint_32 usr_width PNG_DEPSTRUCT; /* width of row at start of write */ - png_size_t rowbytes PNG_DEPSTRUCT; /* size of row in bytes */ -#if 0 /* Replaced with the following in libpng-1.4.1 */ - png_size_t irowbytes PNG_DEPSTRUCT; -#endif -/* Added in libpng-1.4.1 */ -#ifdef PNG_USER_LIMITS_SUPPORTED - /* Total memory that a zTXt, sPLT, iTXt, iCCP, or unknown chunk - * can occupy when decompressed. 0 means unlimited. - * We will change the typedef from png_size_t to png_alloc_size_t - * in libpng-1.6.0 - */ - png_alloc_size_t user_chunk_malloc_max PNG_DEPSTRUCT; -#endif - png_uint_32 iwidth PNG_DEPSTRUCT; /* width of current interlaced - row in pixels */ - png_uint_32 row_number PNG_DEPSTRUCT; /* current row in interlace pass */ - png_bytep prev_row PNG_DEPSTRUCT; /* buffer to save previous - (unfiltered) row */ - png_bytep row_buf PNG_DEPSTRUCT; /* buffer to save current - (unfiltered) row */ - png_bytep sub_row PNG_DEPSTRUCT; /* buffer to save "sub" row - when filtering */ - png_bytep up_row PNG_DEPSTRUCT; /* buffer to save "up" row - when filtering */ - png_bytep avg_row PNG_DEPSTRUCT; /* buffer to save "avg" row - when filtering */ - png_bytep paeth_row PNG_DEPSTRUCT; /* buffer to save "Paeth" row - when filtering */ - png_row_info row_info PNG_DEPSTRUCT; /* used for transformation - routines */ - - png_uint_32 idat_size PNG_DEPSTRUCT; /* current IDAT size for read */ - png_uint_32 crc PNG_DEPSTRUCT; /* current chunk CRC value */ - png_colorp palette PNG_DEPSTRUCT; /* palette from the input file */ - png_uint_16 num_palette PNG_DEPSTRUCT; /* number of color entries in - palette */ - png_uint_16 num_trans PNG_DEPSTRUCT; /* number of transparency values */ - png_byte chunk_name[5] PNG_DEPSTRUCT; /* null-terminated name of current - chunk */ - png_byte compression PNG_DEPSTRUCT; /* file compression type - (always 0) */ - png_byte filter PNG_DEPSTRUCT; /* file filter type (always 0) */ - png_byte interlaced PNG_DEPSTRUCT; /* PNG_INTERLACE_NONE, - PNG_INTERLACE_ADAM7 */ - png_byte pass PNG_DEPSTRUCT; /* current interlace pass (0 - 6) */ - png_byte do_filter PNG_DEPSTRUCT; /* row filter flags (see - PNG_FILTER_ below ) */ - png_byte color_type PNG_DEPSTRUCT; /* color type of file */ - png_byte bit_depth PNG_DEPSTRUCT; /* bit depth of file */ - png_byte usr_bit_depth PNG_DEPSTRUCT; /* bit depth of users row */ - png_byte pixel_depth PNG_DEPSTRUCT; /* number of bits per pixel */ - png_byte channels PNG_DEPSTRUCT; /* number of channels in file */ - png_byte usr_channels PNG_DEPSTRUCT; /* channels at start of write */ - png_byte sig_bytes PNG_DEPSTRUCT; /* magic bytes read/written from - start of file */ - -#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) - png_uint_16 filler PNG_DEPSTRUCT; /* filler bytes for pixel - expansion */ -#endif - -#ifdef PNG_bKGD_SUPPORTED - png_byte background_gamma_type PNG_DEPSTRUCT; -# ifdef PNG_FLOATING_POINT_SUPPORTED - float background_gamma PNG_DEPSTRUCT; -# endif - png_color_16 background PNG_DEPSTRUCT; /* background color in - screen gamma space */ -#ifdef PNG_READ_GAMMA_SUPPORTED - png_color_16 background_1 PNG_DEPSTRUCT; /* background normalized - to gamma 1.0 */ -#endif -#endif /* PNG_bKGD_SUPPORTED */ - -#ifdef PNG_WRITE_FLUSH_SUPPORTED - png_flush_ptr output_flush_fn PNG_DEPSTRUCT; /* Function for flushing - output */ - png_uint_32 flush_dist PNG_DEPSTRUCT; /* how many rows apart to flush, - 0 - no flush */ - png_uint_32 flush_rows PNG_DEPSTRUCT; /* number of rows written since - last flush */ -#endif - -#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) - int gamma_shift PNG_DEPSTRUCT; /* number of "insignificant" bits - 16-bit gamma */ -#ifdef PNG_FLOATING_POINT_SUPPORTED - float gamma PNG_DEPSTRUCT; /* file gamma value */ - float screen_gamma PNG_DEPSTRUCT; /* screen gamma value - (display_exponent) */ -#endif -#endif - -#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) - png_bytep gamma_table PNG_DEPSTRUCT; /* gamma table for 8-bit - depth files */ - png_bytep gamma_from_1 PNG_DEPSTRUCT; /* converts from 1.0 to screen */ - png_bytep gamma_to_1 PNG_DEPSTRUCT; /* converts from file to 1.0 */ - png_uint_16pp gamma_16_table PNG_DEPSTRUCT; /* gamma table for 16-bit - depth files */ - png_uint_16pp gamma_16_from_1 PNG_DEPSTRUCT; /* converts from 1.0 to - screen */ - png_uint_16pp gamma_16_to_1 PNG_DEPSTRUCT; /* converts from file to 1.0 */ -#endif - -#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_sBIT_SUPPORTED) - png_color_8 sig_bit PNG_DEPSTRUCT; /* significant bits in each - available channel */ -#endif - -#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) - png_color_8 shift PNG_DEPSTRUCT; /* shift for significant bit - tranformation */ -#endif - -#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \ - || defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) - png_bytep trans_alpha PNG_DEPSTRUCT; /* alpha values for - paletted files */ - png_color_16 trans_color PNG_DEPSTRUCT; /* transparent color for - non-paletted files */ -#endif - - png_read_status_ptr read_row_fn PNG_DEPSTRUCT; /* called after each - row is decoded */ - png_write_status_ptr write_row_fn PNG_DEPSTRUCT; /* called after each - row is encoded */ -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED - png_progressive_info_ptr info_fn PNG_DEPSTRUCT; /* called after header - data fully read */ - png_progressive_row_ptr row_fn PNG_DEPSTRUCT; /* called after each - prog. row is decoded */ - png_progressive_end_ptr end_fn PNG_DEPSTRUCT; /* called after image - is complete */ - png_bytep save_buffer_ptr PNG_DEPSTRUCT; /* current location in - save_buffer */ - png_bytep save_buffer PNG_DEPSTRUCT; /* buffer for previously - read data */ - png_bytep current_buffer_ptr PNG_DEPSTRUCT; /* current location in - current_buffer */ - png_bytep current_buffer PNG_DEPSTRUCT; /* buffer for recently - used data */ - png_uint_32 push_length PNG_DEPSTRUCT; /* size of current input - chunk */ - png_uint_32 skip_length PNG_DEPSTRUCT; /* bytes to skip in - input data */ - png_size_t save_buffer_size PNG_DEPSTRUCT; /* amount of data now - in save_buffer */ - png_size_t save_buffer_max PNG_DEPSTRUCT; /* total size of - save_buffer */ - png_size_t buffer_size PNG_DEPSTRUCT; /* total amount of - available input data */ - png_size_t current_buffer_size PNG_DEPSTRUCT; /* amount of data now - in current_buffer */ - int process_mode PNG_DEPSTRUCT; /* what push library - is currently doing */ - int cur_palette PNG_DEPSTRUCT; /* current push library - palette index */ - -# ifdef PNG_TEXT_SUPPORTED - png_size_t current_text_size PNG_DEPSTRUCT; /* current size of - text input data */ - png_size_t current_text_left PNG_DEPSTRUCT; /* how much text left - to read in input */ - png_charp current_text PNG_DEPSTRUCT; /* current text chunk - buffer */ - png_charp current_text_ptr PNG_DEPSTRUCT; /* current location - in current_text */ -# endif /* PNG_PROGRESSIVE_READ_SUPPORTED && PNG_TEXT_SUPPORTED */ - -#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ - -#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__) -/* For the Borland special 64K segment handler */ - png_bytepp offset_table_ptr PNG_DEPSTRUCT; - png_bytep offset_table PNG_DEPSTRUCT; - png_uint_16 offset_table_number PNG_DEPSTRUCT; - png_uint_16 offset_table_count PNG_DEPSTRUCT; - png_uint_16 offset_table_count_free PNG_DEPSTRUCT; -#endif - -#ifdef PNG_READ_QUANTIZE_SUPPORTED - png_bytep palette_lookup PNG_DEPSTRUCT; /* lookup table for quantizing */ - png_bytep quantize_index PNG_DEPSTRUCT; /* index translation for palette - files */ -#endif - -#if defined(PNG_READ_QUANTIZE_SUPPORTED) || defined(PNG_hIST_SUPPORTED) - png_uint_16p hist PNG_DEPSTRUCT; /* histogram */ -#endif - -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED - png_byte heuristic_method PNG_DEPSTRUCT; /* heuristic for row - filter selection */ - png_byte num_prev_filters PNG_DEPSTRUCT; /* number of weights - for previous rows */ - png_bytep prev_filters PNG_DEPSTRUCT; /* filter type(s) of - previous row(s) */ - png_uint_16p filter_weights PNG_DEPSTRUCT; /* weight(s) for previous - line(s) */ - png_uint_16p inv_filter_weights PNG_DEPSTRUCT; /* 1/weight(s) for - previous line(s) */ - png_uint_16p filter_costs PNG_DEPSTRUCT; /* relative filter - calculation cost */ - png_uint_16p inv_filter_costs PNG_DEPSTRUCT; /* 1/relative filter - calculation cost */ -#endif - -#ifdef PNG_TIME_RFC1123_SUPPORTED - png_charp time_buffer PNG_DEPSTRUCT; /* String to hold RFC 1123 time text */ -#endif - -/* New members added in libpng-1.0.6 */ - - png_uint_32 free_me PNG_DEPSTRUCT; /* flags items libpng is - responsible for freeing */ - -#ifdef PNG_USER_CHUNKS_SUPPORTED - png_voidp user_chunk_ptr PNG_DEPSTRUCT; - png_user_chunk_ptr read_user_chunk_fn PNG_DEPSTRUCT; /* user read - chunk handler */ -#endif - -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED - int num_chunk_list PNG_DEPSTRUCT; - png_bytep chunk_list PNG_DEPSTRUCT; -#endif - -/* New members added in libpng-1.0.3 */ -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED - png_byte rgb_to_gray_status PNG_DEPSTRUCT; - /* These were changed from png_byte in libpng-1.0.6 */ - png_uint_16 rgb_to_gray_red_coeff PNG_DEPSTRUCT; - png_uint_16 rgb_to_gray_green_coeff PNG_DEPSTRUCT; - png_uint_16 rgb_to_gray_blue_coeff PNG_DEPSTRUCT; -#endif - -/* New member added in libpng-1.0.4 (renamed in 1.0.9) */ -#if defined(PNG_MNG_FEATURES_SUPPORTED) || \ - defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \ - defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED) -/* Changed from png_byte to png_uint_32 at version 1.2.0 */ - png_uint_32 mng_features_permitted PNG_DEPSTRUCT; -#endif - -/* New member added in libpng-1.0.7 */ -#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) - png_fixed_point int_gamma PNG_DEPSTRUCT; -#endif - -/* New member added in libpng-1.0.9, ifdef'ed out in 1.0.12, enabled in 1.2.0 */ -#ifdef PNG_MNG_FEATURES_SUPPORTED - png_byte filter_type PNG_DEPSTRUCT; -#endif - -/* New members added in libpng-1.2.0 */ - -/* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */ -#ifdef PNG_USER_MEM_SUPPORTED - png_voidp mem_ptr PNG_DEPSTRUCT; /* user supplied struct for - mem functions */ - png_malloc_ptr malloc_fn PNG_DEPSTRUCT; /* function for - allocating memory */ - png_free_ptr free_fn PNG_DEPSTRUCT; /* function for - freeing memory */ -#endif - -/* New member added in libpng-1.0.13 and 1.2.0 */ - png_bytep big_row_buf PNG_DEPSTRUCT; /* buffer to save current - (unfiltered) row */ - -#ifdef PNG_READ_QUANTIZE_SUPPORTED -/* The following three members were added at version 1.0.14 and 1.2.4 */ - png_bytep quantize_sort PNG_DEPSTRUCT; /* working sort array */ - png_bytep index_to_palette PNG_DEPSTRUCT; /* where the original - index currently is - in the palette */ - png_bytep palette_to_index PNG_DEPSTRUCT; /* which original index - points to this - palette color */ -#endif - -/* New members added in libpng-1.0.16 and 1.2.6 */ - png_byte compression_type PNG_DEPSTRUCT; - -#ifdef PNG_USER_LIMITS_SUPPORTED - png_uint_32 user_width_max PNG_DEPSTRUCT; - png_uint_32 user_height_max PNG_DEPSTRUCT; - /* Added in libpng-1.4.0: Total number of sPLT, text, and unknown - * chunks that can be stored (0 means unlimited). - */ - png_uint_32 user_chunk_cache_max PNG_DEPSTRUCT; -#endif - -/* New member added in libpng-1.0.25 and 1.2.17 */ -#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED - /* Storage for unknown chunk that the library doesn't recognize. */ - png_unknown_chunk unknown_chunk PNG_DEPSTRUCT; -#endif - -/* New members added in libpng-1.2.26 */ - png_uint_32 old_big_row_buf_size PNG_DEPSTRUCT; - png_uint_32 old_prev_row_size PNG_DEPSTRUCT; - -/* New member added in libpng-1.2.30 */ - png_charp chunkdata PNG_DEPSTRUCT; /* buffer for reading chunk data */ - -#ifdef PNG_IO_STATE_SUPPORTED -/* New member added in libpng-1.4.0 */ - png_uint_32 io_state PNG_DEPSTRUCT; -#endif -}; - - -/* This triggers a compiler error in png.c, if png.c and png.h - * do not agree upon the version number. - */ -typedef png_structp version_1_4_4; +typedef PNG_CALLBACK(png_voidp, *png_malloc_ptr, (png_structp, + png_alloc_size_t)); +typedef PNG_CALLBACK(void, *png_free_ptr, (png_structp, png_voidp)); typedef png_struct FAR * FAR * png_structpp; -/* Here are the function definitions most commonly used. This is not - * the place to find out how to use libpng. See libpng.txt for the +/* Section 3: exported functions + * Here are the function definitions most commonly used. This is not + * the place to find out how to use libpng. See libpng-manual.txt for the * full explanation, see example.c for the summary. This just provides * a simple one line description of the use of each function. + * + * The PNG_EXPORT() and PNG_EXPORTA() macros used below are defined in + * pngconf.h and in the *.dfn files in the scripts directory. + * + * PNG_EXPORT(ordinal, type, name, (args)); + * + * ordinal: ordinal that is used while building + * *.def files. The ordinal value is only + * relevant when preprocessing png.h with + * the *.dfn files for building symbol table + * entries, and are removed by pngconf.h. + * type: return type of the function + * name: function name + * args: function arguments, with types + * + * When we wish to append attributes to a function prototype we use + * the PNG_EXPORTA() macro instead. + * + * PNG_EXPORTA(ordinal, type, name, (args), attributes); + * + * ordinal, type, name, and args: same as in PNG_EXPORT(). + * attributes: function attributes */ /* Returns the version number of the library */ -PNG_EXPORT(png_uint_32,png_access_version_number) PNGARG((void)); +PNG_EXPORT(1, png_uint_32, png_access_version_number, (void)); /* Tell lib we have already handled the first magic bytes. * Handling more than 8 bytes from the beginning of the file is an error. */ -PNG_EXPORT(void,png_set_sig_bytes) PNGARG((png_structp png_ptr, - int num_bytes)); +PNG_EXPORT(2, void, png_set_sig_bytes, (png_structp png_ptr, int num_bytes)); /* Check sig[start] through sig[start + num_to_check - 1] to see if it's a * PNG file. Returns zero if the supplied bytes match the 8-byte PNG * signature, and non-zero otherwise. Having num_to_check == 0 or * start > 7 will always fail (ie return non-zero). */ -PNG_EXPORT(int,png_sig_cmp) PNGARG((png_bytep sig, png_size_t start, - png_size_t num_to_check)); +PNG_EXPORT(3, int, png_sig_cmp, (png_const_bytep sig, png_size_t start, + png_size_t num_to_check)); /* Simple signature checking function. This is the same as calling * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n). */ -#define png_check_sig(sig,n) !png_sig_cmp((sig), 0, (n)) +#define png_check_sig(sig, n) !png_sig_cmp((sig), 0, (n)) /* Allocate and initialize png_ptr struct for reading, and any other memory. */ -PNG_EXPORT(png_structp,png_create_read_struct) - PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn)) PNG_ALLOCATED; +PNG_EXPORTA(4, png_structp, png_create_read_struct, + (png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn), + PNG_ALLOCATED); /* Allocate and initialize png_ptr struct for writing, and any other memory */ -PNG_EXPORT(png_structp,png_create_write_struct) - PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn)) PNG_ALLOCATED; +PNG_EXPORTA(5, png_structp, png_create_write_struct, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn), + PNG_ALLOCATED); -PNG_EXPORT(png_size_t,png_get_compression_buffer_size) - PNGARG((png_structp png_ptr)); +PNG_EXPORT(6, png_size_t, png_get_compression_buffer_size, + (png_const_structp png_ptr)); -PNG_EXPORT(void,png_set_compression_buffer_size) - PNGARG((png_structp png_ptr, png_size_t size)); +PNG_EXPORT(7, void, png_set_compression_buffer_size, (png_structp png_ptr, + png_size_t size)); /* Moved from pngconf.h in 1.4.0 and modified to ensure setjmp/longjmp * match up. @@ -1535,288 +982,316 @@ PNG_EXPORT(void,png_set_compression_buffer_size) * allocated by the library - the call will return NULL on a mismatch * indicating an ABI mismatch. */ -PNG_EXPORT(jmp_buf*, png_set_longjmp_fn) - PNGARG((png_structp png_ptr, png_longjmp_ptr longjmp_fn, size_t - jmp_buf_size)); +PNG_EXPORT(8, jmp_buf*, png_set_longjmp_fn, (png_structp png_ptr, + png_longjmp_ptr longjmp_fn, size_t jmp_buf_size)); # define png_jmpbuf(png_ptr) \ - (*png_set_longjmp_fn((png_ptr), longjmp, sizeof (jmp_buf))) + (*png_set_longjmp_fn((png_ptr), longjmp, sizeof (jmp_buf))) #else # define png_jmpbuf(png_ptr) \ - (LIBPNG_WAS_COMPILED_WITH__PNG_NO_SETJMP) + (LIBPNG_WAS_COMPILED_WITH__PNG_NO_SETJMP) #endif +/* This function should be used by libpng applications in place of + * longjmp(png_ptr->jmpbuf, val). If longjmp_fn() has been set, it + * will use it; otherwise it will call PNG_ABORT(). This function was + * added in libpng-1.5.0. + */ +PNG_EXPORTA(9, void, png_longjmp, (png_structp png_ptr, int val), + PNG_NORETURN); #ifdef PNG_READ_SUPPORTED /* Reset the compression stream */ -PNG_EXPORT(int,png_reset_zstream) PNGARG((png_structp png_ptr)); +PNG_EXPORT(10, int, png_reset_zstream, (png_structp png_ptr)); #endif /* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */ #ifdef PNG_USER_MEM_SUPPORTED -PNG_EXPORT(png_structp,png_create_read_struct_2) - PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, - png_malloc_ptr malloc_fn, png_free_ptr free_fn)) PNG_ALLOCATED; -PNG_EXPORT(png_structp,png_create_write_struct_2) - PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, - png_malloc_ptr malloc_fn, png_free_ptr free_fn)) PNG_ALLOCATED; +PNG_EXPORTA(11, png_structp, png_create_read_struct_2, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn, + png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), + PNG_ALLOCATED); +PNG_EXPORTA(12, png_structp, png_create_write_struct_2, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn, + png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), + PNG_ALLOCATED); #endif /* Write the PNG file signature. */ -PNG_EXPORT(void,png_write_sig) PNGARG((png_structp png_ptr)); +PNG_EXPORT(13, void, png_write_sig, (png_structp png_ptr)); /* Write a PNG chunk - size, type, (optional) data, CRC. */ -PNG_EXPORT(void,png_write_chunk) PNGARG((png_structp png_ptr, - png_bytep chunk_name, png_bytep data, png_size_t length)); +PNG_EXPORT(14, void, png_write_chunk, (png_structp png_ptr, png_const_bytep + chunk_name, png_const_bytep data, png_size_t length)); /* Write the start of a PNG chunk - length and chunk name. */ -PNG_EXPORT(void,png_write_chunk_start) PNGARG((png_structp png_ptr, - png_bytep chunk_name, png_uint_32 length)); +PNG_EXPORT(15, void, png_write_chunk_start, (png_structp png_ptr, + png_const_bytep chunk_name, png_uint_32 length)); /* Write the data of a PNG chunk started with png_write_chunk_start(). */ -PNG_EXPORT(void,png_write_chunk_data) PNGARG((png_structp png_ptr, - png_bytep data, png_size_t length)); +PNG_EXPORT(16, void, png_write_chunk_data, (png_structp png_ptr, + png_const_bytep data, png_size_t length)); /* Finish a chunk started with png_write_chunk_start() (includes CRC). */ -PNG_EXPORT(void,png_write_chunk_end) PNGARG((png_structp png_ptr)); +PNG_EXPORT(17, void, png_write_chunk_end, (png_structp png_ptr)); /* Allocate and initialize the info structure */ -PNG_EXPORT(png_infop,png_create_info_struct) - PNGARG((png_structp png_ptr)) PNG_ALLOCATED; +PNG_EXPORTA(18, png_infop, png_create_info_struct, (png_structp png_ptr), + PNG_ALLOCATED); -PNG_EXPORT(void,png_info_init_3) PNGARG((png_infopp info_ptr, +PNG_EXPORT(19, void, png_info_init_3, (png_infopp info_ptr, png_size_t png_info_struct_size)); /* Writes all the PNG information before the image. */ -PNG_EXPORT(void,png_write_info_before_PLTE) PNGARG((png_structp png_ptr, - png_infop info_ptr)); -PNG_EXPORT(void,png_write_info) PNGARG((png_structp png_ptr, - png_infop info_ptr)); +PNG_EXPORT(20, void, png_write_info_before_PLTE, + (png_structp png_ptr, png_infop info_ptr)); +PNG_EXPORT(21, void, png_write_info, + (png_structp png_ptr, png_infop info_ptr)); #ifdef PNG_SEQUENTIAL_READ_SUPPORTED /* Read the information before the actual image data. */ -PNG_EXPORT(void,png_read_info) PNGARG((png_structp png_ptr, - png_infop info_ptr)); +PNG_EXPORT(22, void, png_read_info, + (png_structp png_ptr, png_infop info_ptr)); #endif #ifdef PNG_TIME_RFC1123_SUPPORTED -PNG_EXPORT(png_charp,png_convert_to_rfc1123) - PNGARG((png_structp png_ptr, png_timep ptime)); +PNG_EXPORT(23, png_const_charp, png_convert_to_rfc1123, + (png_structp png_ptr, + png_const_timep ptime)); #endif #ifdef PNG_CONVERT_tIME_SUPPORTED /* Convert from a struct tm to png_time */ -PNG_EXPORT(void,png_convert_from_struct_tm) PNGARG((png_timep ptime, - struct tm FAR * ttime)); +PNG_EXPORT(24, void, png_convert_from_struct_tm, (png_timep ptime, + PNG_CONST struct tm FAR * ttime)); /* Convert from time_t to png_time. Uses gmtime() */ -PNG_EXPORT(void,png_convert_from_time_t) PNGARG((png_timep ptime, - time_t ttime)); +PNG_EXPORT(25, void, png_convert_from_time_t, + (png_timep ptime, time_t ttime)); #endif /* PNG_CONVERT_tIME_SUPPORTED */ #ifdef PNG_READ_EXPAND_SUPPORTED /* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */ -PNG_EXPORT(void,png_set_expand) PNGARG((png_structp png_ptr)); -PNG_EXPORT(void,png_set_expand_gray_1_2_4_to_8) PNGARG((png_structp - png_ptr)); -PNG_EXPORT(void,png_set_palette_to_rgb) PNGARG((png_structp png_ptr)); -PNG_EXPORT(void,png_set_tRNS_to_alpha) PNGARG((png_structp png_ptr)); +PNG_EXPORT(26, void, png_set_expand, (png_structp png_ptr)); +PNG_EXPORT(27, void, png_set_expand_gray_1_2_4_to_8, (png_structp png_ptr)); +PNG_EXPORT(28, void, png_set_palette_to_rgb, (png_structp png_ptr)); +PNG_EXPORT(29, void, png_set_tRNS_to_alpha, (png_structp png_ptr)); +#endif + +#ifdef PNG_READ_EXPAND_16_SUPPORTED +/* Expand to 16 bit channels, forces conversion of palette to RGB and expansion + * of a tRNS chunk if present. + */ +PNG_EXPORT(221, void, png_set_expand_16, (png_structp png_ptr)); #endif #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) /* Use blue, green, red order for pixels. */ -PNG_EXPORT(void,png_set_bgr) PNGARG((png_structp png_ptr)); +PNG_EXPORT(30, void, png_set_bgr, (png_structp png_ptr)); #endif #ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED /* Expand the grayscale to 24-bit RGB if necessary. */ -PNG_EXPORT(void,png_set_gray_to_rgb) PNGARG((png_structp png_ptr)); +PNG_EXPORT(31, void, png_set_gray_to_rgb, (png_structp png_ptr)); #endif #ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED /* Reduce RGB to grayscale. */ -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(void,png_set_rgb_to_gray) PNGARG((png_structp png_ptr, - int error_action, double red, double green )); -#endif -PNG_EXPORT(void,png_set_rgb_to_gray_fixed) PNGARG((png_structp png_ptr, - int error_action, png_fixed_point red, png_fixed_point green )); -PNG_EXPORT(png_byte,png_get_rgb_to_gray_status) PNGARG((png_structp - png_ptr)); +PNG_FP_EXPORT(32, void, png_set_rgb_to_gray, (png_structp png_ptr, + int error_action, double red, double green)); +PNG_FIXED_EXPORT(33, void, png_set_rgb_to_gray_fixed, (png_structp png_ptr, + int error_action, png_fixed_point red, png_fixed_point green)); + +PNG_EXPORT(34, png_byte, png_get_rgb_to_gray_status, (png_const_structp + png_ptr)); #endif -PNG_EXPORT(void,png_build_grayscale_palette) PNGARG((int bit_depth, - png_colorp palette)); +PNG_EXPORT(35, void, png_build_grayscale_palette, (int bit_depth, + png_colorp palette)); #ifdef PNG_READ_STRIP_ALPHA_SUPPORTED -PNG_EXPORT(void,png_set_strip_alpha) PNGARG((png_structp png_ptr)); +PNG_EXPORT(36, void, png_set_strip_alpha, (png_structp png_ptr)); #endif #if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \ defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) -PNG_EXPORT(void,png_set_swap_alpha) PNGARG((png_structp png_ptr)); +PNG_EXPORT(37, void, png_set_swap_alpha, (png_structp png_ptr)); #endif #if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \ defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) -PNG_EXPORT(void,png_set_invert_alpha) PNGARG((png_structp png_ptr)); +PNG_EXPORT(38, void, png_set_invert_alpha, (png_structp png_ptr)); #endif #if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) /* Add a filler byte to 8-bit Gray or 24-bit RGB images. */ -PNG_EXPORT(void,png_set_filler) PNGARG((png_structp png_ptr, - png_uint_32 filler, int flags)); +PNG_EXPORT(39, void, png_set_filler, (png_structp png_ptr, png_uint_32 filler, + int flags)); /* The values of the PNG_FILLER_ defines should NOT be changed */ -#define PNG_FILLER_BEFORE 0 -#define PNG_FILLER_AFTER 1 +# define PNG_FILLER_BEFORE 0 +# define PNG_FILLER_AFTER 1 /* Add an alpha byte to 8-bit Gray or 24-bit RGB images. */ -PNG_EXPORT(void,png_set_add_alpha) PNGARG((png_structp png_ptr, - png_uint_32 filler, int flags)); +PNG_EXPORT(40, void, png_set_add_alpha, + (png_structp png_ptr, png_uint_32 filler, + int flags)); #endif /* PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED */ #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) /* Swap bytes in 16-bit depth files. */ -PNG_EXPORT(void,png_set_swap) PNGARG((png_structp png_ptr)); +PNG_EXPORT(41, void, png_set_swap, (png_structp png_ptr)); #endif #if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) /* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */ -PNG_EXPORT(void,png_set_packing) PNGARG((png_structp png_ptr)); +PNG_EXPORT(42, void, png_set_packing, (png_structp png_ptr)); #endif #if defined(PNG_READ_PACKSWAP_SUPPORTED) || \ defined(PNG_WRITE_PACKSWAP_SUPPORTED) /* Swap packing order of pixels in bytes. */ -PNG_EXPORT(void,png_set_packswap) PNGARG((png_structp png_ptr)); +PNG_EXPORT(43, void, png_set_packswap, (png_structp png_ptr)); #endif #if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) /* Converts files to legal bit depths. */ -PNG_EXPORT(void,png_set_shift) PNGARG((png_structp png_ptr, - png_color_8p true_bits)); +PNG_EXPORT(44, void, png_set_shift, (png_structp png_ptr, png_const_color_8p + true_bits)); #endif #if defined(PNG_READ_INTERLACING_SUPPORTED) || \ defined(PNG_WRITE_INTERLACING_SUPPORTED) -/* Have the code handle the interlacing. Returns the number of passes. */ -PNG_EXPORT(int,png_set_interlace_handling) PNGARG((png_structp png_ptr)); +/* Have the code handle the interlacing. Returns the number of passes. + * MUST be called before png_read_update_info or png_start_read_image, + * otherwise it will not have the desired effect. Note that it is still + * necessary to call png_read_row or png_read_rows png_get_image_height + * times for each pass. +*/ +PNG_EXPORT(45, int, png_set_interlace_handling, (png_structp png_ptr)); #endif #if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) /* Invert monochrome files */ -PNG_EXPORT(void,png_set_invert_mono) PNGARG((png_structp png_ptr)); +PNG_EXPORT(46, void, png_set_invert_mono, (png_structp png_ptr)); #endif #ifdef PNG_READ_BACKGROUND_SUPPORTED /* Handle alpha and tRNS by replacing with a background color. */ -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(void,png_set_background) PNGARG((png_structp png_ptr, - png_color_16p background_color, int background_gamma_code, - int need_expand, double background_gamma)); +PNG_FP_EXPORT(47, void, png_set_background, (png_structp png_ptr, + png_const_color_16p background_color, int background_gamma_code, + int need_expand, double background_gamma)); +PNG_FIXED_EXPORT(215, void, png_set_background_fixed, (png_structp png_ptr, + png_const_color_16p background_color, int background_gamma_code, + int need_expand, png_fixed_point background_gamma)); #endif -#define PNG_BACKGROUND_GAMMA_UNKNOWN 0 -#define PNG_BACKGROUND_GAMMA_SCREEN 1 -#define PNG_BACKGROUND_GAMMA_FILE 2 -#define PNG_BACKGROUND_GAMMA_UNIQUE 3 +#ifdef PNG_READ_BACKGROUND_SUPPORTED +# define PNG_BACKGROUND_GAMMA_UNKNOWN 0 +# define PNG_BACKGROUND_GAMMA_SCREEN 1 +# define PNG_BACKGROUND_GAMMA_FILE 2 +# define PNG_BACKGROUND_GAMMA_UNIQUE 3 #endif #ifdef PNG_READ_16_TO_8_SUPPORTED /* Strip the second byte of information from a 16-bit depth file. */ -PNG_EXPORT(void,png_set_strip_16) PNGARG((png_structp png_ptr)); +PNG_EXPORT(48, void, png_set_strip_16, (png_structp png_ptr)); #endif #ifdef PNG_READ_QUANTIZE_SUPPORTED /* Turn on quantizing, and reduce the palette to the number of colors - * available. Prior to libpng-1.4.2, this was png_set_dither(). + * available. */ -PNG_EXPORT(void,png_set_quantize) PNGARG((png_structp png_ptr, - png_colorp palette, int num_palette, int maximum_colors, - png_uint_16p histogram, int full_quantize)); +PNG_EXPORT(49, void, png_set_quantize, + (png_structp png_ptr, png_colorp palette, + int num_palette, int maximum_colors, png_const_uint_16p histogram, + int full_quantize)); #endif -/* This migration aid will be removed from libpng-1.5.0 */ -#define png_set_dither png_set_quantize #ifdef PNG_READ_GAMMA_SUPPORTED -/* Handle gamma correction. Screen_gamma=(display_exponent) */ -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(void,png_set_gamma) PNGARG((png_structp png_ptr, - double screen_gamma, double default_file_gamma)); -#endif -#endif +/* The threshold on gamma processing is configurable but hard-wired into the + * library. The following is the floating point variant. + */ +#define PNG_GAMMA_THRESHOLD (PNG_GAMMA_THRESHOLD_FIXED*.00001) +/* Handle gamma correction. Screen_gamma=(display_exponent) */ +PNG_FP_EXPORT(50, void, png_set_gamma, + (png_structp png_ptr, double screen_gamma, + double default_file_gamma)); +PNG_FIXED_EXPORT(208, void, png_set_gamma_fixed, (png_structp png_ptr, + png_fixed_point screen_gamma, png_fixed_point default_file_gamma)); +#endif #ifdef PNG_WRITE_FLUSH_SUPPORTED /* Set how many lines between output flushes - 0 for no flushing */ -PNG_EXPORT(void,png_set_flush) PNGARG((png_structp png_ptr, int nrows)); +PNG_EXPORT(51, void, png_set_flush, (png_structp png_ptr, int nrows)); /* Flush the current PNG output buffer */ -PNG_EXPORT(void,png_write_flush) PNGARG((png_structp png_ptr)); +PNG_EXPORT(52, void, png_write_flush, (png_structp png_ptr)); #endif /* Optional update palette with requested transformations */ -PNG_EXPORT(void,png_start_read_image) PNGARG((png_structp png_ptr)); +PNG_EXPORT(53, void, png_start_read_image, (png_structp png_ptr)); /* Optional call to update the users info structure */ -PNG_EXPORT(void,png_read_update_info) PNGARG((png_structp png_ptr, - png_infop info_ptr)); +PNG_EXPORT(54, void, png_read_update_info, + (png_structp png_ptr, png_infop info_ptr)); #ifdef PNG_SEQUENTIAL_READ_SUPPORTED /* Read one or more rows of image data. */ -PNG_EXPORT(void,png_read_rows) PNGARG((png_structp png_ptr, - png_bytepp row, png_bytepp display_row, png_uint_32 num_rows)); +PNG_EXPORT(55, void, png_read_rows, (png_structp png_ptr, png_bytepp row, + png_bytepp display_row, png_uint_32 num_rows)); #endif #ifdef PNG_SEQUENTIAL_READ_SUPPORTED /* Read a row of data. */ -PNG_EXPORT(void,png_read_row) PNGARG((png_structp png_ptr, - png_bytep row, - png_bytep display_row)); +PNG_EXPORT(56, void, png_read_row, (png_structp png_ptr, png_bytep row, + png_bytep display_row)); #endif #ifdef PNG_SEQUENTIAL_READ_SUPPORTED /* Read the whole image into memory at once. */ -PNG_EXPORT(void,png_read_image) PNGARG((png_structp png_ptr, - png_bytepp image)); +PNG_EXPORT(57, void, png_read_image, (png_structp png_ptr, png_bytepp image)); #endif /* Write a row of image data */ -PNG_EXPORT(void,png_write_row) PNGARG((png_structp png_ptr, - png_bytep row)); +PNG_EXPORT(58, void, png_write_row, + (png_structp png_ptr, png_const_bytep row)); -/* Write a few rows of image data */ -PNG_EXPORT(void,png_write_rows) PNGARG((png_structp png_ptr, - png_bytepp row, png_uint_32 num_rows)); +/* Write a few rows of image data: (*row) is not written; however, the type + * is declared as writeable to maintain compatibility with previous versions + * of libpng and to allow the 'display_row' array from read_rows to be passed + * unchanged to write_rows. + */ +PNG_EXPORT(59, void, png_write_rows, (png_structp png_ptr, png_bytepp row, + png_uint_32 num_rows)); /* Write the image data */ -PNG_EXPORT(void,png_write_image) PNGARG((png_structp png_ptr, - png_bytepp image)); +PNG_EXPORT(60, void, png_write_image, + (png_structp png_ptr, png_bytepp image)); /* Write the end of the PNG file. */ -PNG_EXPORT(void,png_write_end) PNGARG((png_structp png_ptr, - png_infop info_ptr)); +PNG_EXPORT(61, void, png_write_end, + (png_structp png_ptr, png_infop info_ptr)); #ifdef PNG_SEQUENTIAL_READ_SUPPORTED /* Read the end of the PNG file. */ -PNG_EXPORT(void,png_read_end) PNGARG((png_structp png_ptr, - png_infop info_ptr)); +PNG_EXPORT(62, void, png_read_end, (png_structp png_ptr, png_infop info_ptr)); #endif /* Free any memory associated with the png_info_struct */ -PNG_EXPORT(void,png_destroy_info_struct) PNGARG((png_structp png_ptr, - png_infopp info_ptr_ptr)); +PNG_EXPORT(63, void, png_destroy_info_struct, (png_structp png_ptr, + png_infopp info_ptr_ptr)); /* Free any memory associated with the png_struct and the png_info_structs */ -PNG_EXPORT(void,png_destroy_read_struct) PNGARG((png_structpp - png_ptr_ptr, png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr)); +PNG_EXPORT(64, void, png_destroy_read_struct, (png_structpp png_ptr_ptr, + png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr)); /* Free any memory associated with the png_struct and the png_info_structs */ -PNG_EXPORT(void,png_destroy_write_struct) - PNGARG((png_structpp png_ptr_ptr, png_infopp info_ptr_ptr)); +PNG_EXPORT(65, void, png_destroy_write_struct, (png_structpp png_ptr_ptr, + png_infopp info_ptr_ptr)); /* Set the libpng method of handling chunk CRC errors */ -PNG_EXPORT(void,png_set_crc_action) PNGARG((png_structp png_ptr, - int crit_action, int ancil_action)); +PNG_EXPORT(66, void, png_set_crc_action, + (png_structp png_ptr, int crit_action, int ancil_action)); -/* Values for png_set_crc_action() to say how to handle CRC errors in +/* Values for png_set_crc_action() say how to handle CRC errors in * ancillary and critical chunks, and whether to use the data contained * therein. Note that it is impossible to "discard" data in a critical * chunk. For versions prior to 0.90, the action was always error/quit, @@ -1843,8 +1318,8 @@ PNG_EXPORT(void,png_set_crc_action) PNGARG((png_structp png_ptr, /* Set the filtering method(s) used by libpng. Currently, the only valid * value for "method" is 0. */ -PNG_EXPORT(void,png_set_filter) PNGARG((png_structp png_ptr, int method, - int filters)); +PNG_EXPORT(67, void, png_set_filter, + (png_structp png_ptr, int method, int filters)); /* Flags for png_set_filter() to say which filters to use. The flags * are chosen so that they don't conflict with real filter types @@ -1899,11 +1374,13 @@ PNG_EXPORT(void,png_set_filter) PNGARG((png_structp png_ptr, int method, * the weights and costs are set to 1.0, this degenerates the WEIGHTED method * to the UNWEIGHTED method, but with added encoding time/computation. */ -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(void,png_set_filter_heuristics) PNGARG((png_structp png_ptr, - int heuristic_method, int num_weights, png_doublep filter_weights, - png_doublep filter_costs)); -#endif +PNG_FP_EXPORT(68, void, png_set_filter_heuristics, (png_structp png_ptr, + int heuristic_method, int num_weights, png_const_doublep filter_weights, + png_const_doublep filter_costs)); +PNG_FIXED_EXPORT(209, void, png_set_filter_heuristics_fixed, + (png_structp png_ptr, + int heuristic_method, int num_weights, png_const_fixed_point_p + filter_weights, png_const_fixed_point_p filter_costs)); #endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */ /* Heuristic used for row filter selection. These defines should NOT be @@ -1921,34 +1398,33 @@ PNG_EXPORT(void,png_set_filter_heuristics) PNGARG((png_structp png_ptr, * for PNG images, and do considerably fewer caclulations. In the future, * these values may not correspond directly to the zlib compression levels. */ -PNG_EXPORT(void,png_set_compression_level) PNGARG((png_structp png_ptr, - int level)); +PNG_EXPORT(69, void, png_set_compression_level, + (png_structp png_ptr, int level)); -PNG_EXPORT(void,png_set_compression_mem_level) - PNGARG((png_structp png_ptr, int mem_level)); +PNG_EXPORT(70, void, png_set_compression_mem_level, (png_structp png_ptr, + int mem_level)); -PNG_EXPORT(void,png_set_compression_strategy) - PNGARG((png_structp png_ptr, int strategy)); +PNG_EXPORT(71, void, png_set_compression_strategy, (png_structp png_ptr, + int strategy)); -PNG_EXPORT(void,png_set_compression_window_bits) - PNGARG((png_structp png_ptr, int window_bits)); +PNG_EXPORT(72, void, png_set_compression_window_bits, (png_structp png_ptr, + int window_bits)); -PNG_EXPORT(void,png_set_compression_method) PNGARG((png_structp png_ptr, - int method)); +PNG_EXPORT(73, void, png_set_compression_method, (png_structp png_ptr, + int method)); /* These next functions are called for input/output, memory, and error * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c, * and call standard C I/O routines such as fread(), fwrite(), and * fprintf(). These functions can be made to use other I/O routines * at run time for those applications that need to handle I/O in a - * different manner by calling png_set_???_fn(). See libpng.txt for + * different manner by calling png_set_???_fn(). See libpng-manual.txt for * more information. */ #ifdef PNG_STDIO_SUPPORTED /* Initialize the input/output for the PNG file to the default functions. */ -PNG_EXPORT(void,png_init_io) PNGARG((png_structp png_ptr, - png_FILE_p fp)); +PNG_EXPORT(74, void, png_init_io, (png_structp png_ptr, png_FILE_p fp)); #endif /* Replace the (error and abort), and warning functions with user @@ -1959,11 +1435,12 @@ PNG_EXPORT(void,png_init_io) PNGARG((png_structp png_ptr, * default function will be used. */ -PNG_EXPORT(void,png_set_error_fn) PNGARG((png_structp png_ptr, - png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn)); +PNG_EXPORT(75, void, png_set_error_fn, + (png_structp png_ptr, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warning_fn)); /* Return the user pointer associated with the error functions */ -PNG_EXPORT(png_voidp,png_get_error_ptr) PNGARG((png_structp png_ptr)); +PNG_EXPORT(76, png_voidp, png_get_error_ptr, (png_const_structp png_ptr)); /* Replace the default data output functions with a user supplied one(s). * If buffered output is not used, then output_flush_fn can be set to NULL. @@ -1975,101 +1452,137 @@ PNG_EXPORT(png_voidp,png_get_error_ptr) PNGARG((png_structp png_ptr)); * default flush function, which uses the standard *FILE structure, will * be used. */ -PNG_EXPORT(void,png_set_write_fn) PNGARG((png_structp png_ptr, - png_voidp io_ptr, png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)); +PNG_EXPORT(77, void, png_set_write_fn, (png_structp png_ptr, png_voidp io_ptr, + png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)); /* Replace the default data input function with a user supplied one. */ -PNG_EXPORT(void,png_set_read_fn) PNGARG((png_structp png_ptr, - png_voidp io_ptr, png_rw_ptr read_data_fn)); +PNG_EXPORT(78, void, png_set_read_fn, (png_structp png_ptr, png_voidp io_ptr, + png_rw_ptr read_data_fn)); /* Return the user pointer associated with the I/O functions */ -PNG_EXPORT(png_voidp,png_get_io_ptr) PNGARG((png_structp png_ptr)); +PNG_EXPORT(79, png_voidp, png_get_io_ptr, (png_structp png_ptr)); -PNG_EXPORT(void,png_set_read_status_fn) PNGARG((png_structp png_ptr, - png_read_status_ptr read_row_fn)); +PNG_EXPORT(80, void, png_set_read_status_fn, (png_structp png_ptr, + png_read_status_ptr read_row_fn)); -PNG_EXPORT(void,png_set_write_status_fn) PNGARG((png_structp png_ptr, - png_write_status_ptr write_row_fn)); +PNG_EXPORT(81, void, png_set_write_status_fn, (png_structp png_ptr, + png_write_status_ptr write_row_fn)); #ifdef PNG_USER_MEM_SUPPORTED /* Replace the default memory allocation functions with user supplied one(s). */ -PNG_EXPORT(void,png_set_mem_fn) PNGARG((png_structp png_ptr, - png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn)); +PNG_EXPORT(82, void, png_set_mem_fn, (png_structp png_ptr, png_voidp mem_ptr, + png_malloc_ptr malloc_fn, png_free_ptr free_fn)); /* Return the user pointer associated with the memory functions */ -PNG_EXPORT(png_voidp,png_get_mem_ptr) PNGARG((png_structp png_ptr)); +PNG_EXPORT(83, png_voidp, png_get_mem_ptr, (png_const_structp png_ptr)); #endif #ifdef PNG_READ_USER_TRANSFORM_SUPPORTED -PNG_EXPORT(void,png_set_read_user_transform_fn) PNGARG((png_structp - png_ptr, png_user_transform_ptr read_user_transform_fn)); +PNG_EXPORT(84, void, png_set_read_user_transform_fn, (png_structp png_ptr, + png_user_transform_ptr read_user_transform_fn)); #endif #ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED -PNG_EXPORT(void,png_set_write_user_transform_fn) PNGARG((png_structp - png_ptr, png_user_transform_ptr write_user_transform_fn)); +PNG_EXPORT(85, void, png_set_write_user_transform_fn, (png_structp png_ptr, + png_user_transform_ptr write_user_transform_fn)); #endif -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ - defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) -PNG_EXPORT(void,png_set_user_transform_info) PNGARG((png_structp - png_ptr, png_voidp user_transform_ptr, int user_transform_depth, - int user_transform_channels)); +#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED +PNG_EXPORT(86, void, png_set_user_transform_info, (png_structp png_ptr, + png_voidp user_transform_ptr, int user_transform_depth, + int user_transform_channels)); /* Return the user pointer associated with the user transform functions */ -PNG_EXPORT(png_voidp,png_get_user_transform_ptr) - PNGARG((png_structp png_ptr)); +PNG_EXPORT(87, png_voidp, png_get_user_transform_ptr, + (png_const_structp png_ptr)); +#endif + +#ifdef PNG_USER_TRANSFORM_INFO_SUPPORTED +/* Return information about the row currently being processed. Note that these + * APIs do not fail but will return unexpected results if called outside a user + * transform callback. Also note that when transforming an interlaced image the + * row number is the row number within the sub-image of the interlace pass, so + * the value will increase to the height of the sub-image (not the full image) + * then reset to 0 for the next pass. + * + * Use PNG_ROW_FROM_PASS_ROW(row, pass) and PNG_COL_FROM_PASS_COL(col, pass) to + * find the output pixel (x,y) given an interlaced sub-image pixel + * (row,col,pass). (See below for these macros.) + */ +PNG_EXPORT(217, png_uint_32, png_get_current_row_number, (png_const_structp)); +PNG_EXPORT(218, png_byte, png_get_current_pass_number, (png_const_structp)); #endif #ifdef PNG_USER_CHUNKS_SUPPORTED -PNG_EXPORT(void,png_set_read_user_chunk_fn) PNGARG((png_structp png_ptr, - png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn)); -PNG_EXPORT(png_voidp,png_get_user_chunk_ptr) PNGARG((png_structp - png_ptr)); +PNG_EXPORT(88, void, png_set_read_user_chunk_fn, (png_structp png_ptr, + png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn)); +PNG_EXPORT(89, png_voidp, png_get_user_chunk_ptr, (png_const_structp png_ptr)); #endif #ifdef PNG_PROGRESSIVE_READ_SUPPORTED /* Sets the function callbacks for the push reader, and a pointer to a * user-defined structure available to the callback functions. */ -PNG_EXPORT(void,png_set_progressive_read_fn) PNGARG((png_structp png_ptr, - png_voidp progressive_ptr, - png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn, - png_progressive_end_ptr end_fn)); +PNG_EXPORT(90, void, png_set_progressive_read_fn, (png_structp png_ptr, + png_voidp progressive_ptr, png_progressive_info_ptr info_fn, + png_progressive_row_ptr row_fn, png_progressive_end_ptr end_fn)); /* Returns the user pointer associated with the push read functions */ -PNG_EXPORT(png_voidp,png_get_progressive_ptr) - PNGARG((png_structp png_ptr)); +PNG_EXPORT(91, png_voidp, png_get_progressive_ptr, (png_const_structp png_ptr)); /* Function to be called when data becomes available */ -PNG_EXPORT(void,png_process_data) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_bytep buffer, png_size_t buffer_size)); +PNG_EXPORT(92, void, png_process_data, + (png_structp png_ptr, png_infop info_ptr, + png_bytep buffer, png_size_t buffer_size)); -/* Function that combines rows. Not very much different than the - * png_combine_row() call. Is this even used????? +/* A function which may be called *only* within png_process_data to stop the + * processing of any more data. The function returns the number of bytes + * remaining, excluding any that libpng has cached internally. A subsequent + * call to png_process_data must supply these bytes again. If the argument + * 'save' is set to true the routine will first save all the pending data and + * will always return 0. */ -PNG_EXPORT(void,png_progressive_combine_row) PNGARG((png_structp png_ptr, - png_bytep old_row, png_bytep new_row)); +PNG_EXPORT(219, png_size_t, png_process_data_pause, (png_structp, int save)); + +/* A function which may be called *only* outside (after) a call to + * png_process_data. It returns the number of bytes of data to skip in the + * input. Normally it will return 0, but if it returns a non-zero value the + * application must skip than number of bytes of input data and pass the + * following data to the next call to png_process_data. + */ +PNG_EXPORT(220, png_uint_32, png_process_data_skip, (png_structp)); + +/* Function that combines rows. 'new_row' is a flag that should come from + * the callback and be non-NULL if anything needs to be done; the library + * stores its own version of the new data internally and ignores the passed + * in value. + */ +PNG_EXPORT(93, void, png_progressive_combine_row, (png_structp png_ptr, + png_bytep old_row, png_const_bytep new_row)); #endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ -PNG_EXPORT(png_voidp,png_malloc) PNGARG((png_structp png_ptr, - png_alloc_size_t size)) PNG_ALLOCATED; +PNG_EXPORTA(94, png_voidp, png_malloc, + (png_structp png_ptr, png_alloc_size_t size), + PNG_ALLOCATED); /* Added at libpng version 1.4.0 */ -PNG_EXPORT(png_voidp,png_calloc) PNGARG((png_structp png_ptr, - png_alloc_size_t size)) PNG_ALLOCATED; +PNG_EXPORTA(95, png_voidp, png_calloc, + (png_structp png_ptr, png_alloc_size_t size), + PNG_ALLOCATED); /* Added at libpng version 1.2.4 */ -PNG_EXPORT(png_voidp,png_malloc_warn) PNGARG((png_structp png_ptr, - png_alloc_size_t size)) PNG_ALLOCATED; +PNG_EXPORTA(96, png_voidp, png_malloc_warn, (png_structp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED); /* Frees a pointer allocated by png_malloc() */ -PNG_EXPORT(void,png_free) PNGARG((png_structp png_ptr, png_voidp ptr)); +PNG_EXPORT(97, void, png_free, (png_structp png_ptr, png_voidp ptr)); /* Free data that was allocated internally */ -PNG_EXPORT(void,png_free_data) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 free_me, int num)); +PNG_EXPORT(98, void, png_free_data, + (png_structp png_ptr, png_infop info_ptr, png_uint_32 free_me, int num)); + /* Reassign responsibility for freeing existing data, whether allocated * by libpng or by the application */ -PNG_EXPORT(void,png_data_freer) PNGARG((png_structp png_ptr, - png_infop info_ptr, int freer, png_uint_32 mask)); +PNG_EXPORT(99, void, png_data_freer, + (png_structp png_ptr, png_infop info_ptr, int freer, png_uint_32 mask)); + /* Assignments for png_data_freer */ #define PNG_DESTROY_WILL_FREE_DATA 1 #define PNG_SET_WILL_FREE_DATA 1 @@ -2090,46 +1603,56 @@ PNG_EXPORT(void,png_data_freer) PNGARG((png_structp png_ptr, #define PNG_FREE_MUL 0x4220 /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */ #ifdef PNG_USER_MEM_SUPPORTED -PNG_EXPORT(png_voidp,png_malloc_default) PNGARG((png_structp png_ptr, - png_alloc_size_t size)) PNG_ALLOCATED; -PNG_EXPORT(void,png_free_default) PNGARG((png_structp png_ptr, - png_voidp ptr)); +PNG_EXPORTA(100, png_voidp, png_malloc_default, (png_structp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED); +PNG_EXPORT(101, void, png_free_default, (png_structp png_ptr, png_voidp ptr)); #endif -#ifndef PNG_NO_ERROR_TEXT +#ifdef PNG_ERROR_TEXT_SUPPORTED /* Fatal error in PNG image of libpng - can't continue */ -PNG_EXPORT(void,png_error) PNGARG((png_structp png_ptr, - png_const_charp error_message)) PNG_NORETURN; +PNG_EXPORTA(102, void, png_error, + (png_structp png_ptr, png_const_charp error_message), + PNG_NORETURN); /* The same, but the chunk name is prepended to the error string. */ -PNG_EXPORT(void,png_chunk_error) PNGARG((png_structp png_ptr, - png_const_charp error_message)) PNG_NORETURN; +PNG_EXPORTA(103, void, png_chunk_error, (png_structp png_ptr, + png_const_charp error_message), PNG_NORETURN); #else /* Fatal error in PNG image of libpng - can't continue */ -PNG_EXPORT(void,png_err) PNGARG((png_structp png_ptr)) PNG_NORETURN; +PNG_EXPORTA(104, void, png_err, (png_structp png_ptr), PNG_NORETURN); #endif /* Non-fatal error in libpng. Can continue, but may have a problem. */ -PNG_EXPORT(void,png_warning) PNGARG((png_structp png_ptr, - png_const_charp warning_message)); +PNG_EXPORT(105, void, png_warning, (png_structp png_ptr, + png_const_charp warning_message)); /* Non-fatal error in libpng, chunk name is prepended to message. */ -PNG_EXPORT(void,png_chunk_warning) PNGARG((png_structp png_ptr, - png_const_charp warning_message)); +PNG_EXPORT(106, void, png_chunk_warning, (png_structp png_ptr, + png_const_charp warning_message)); #ifdef PNG_BENIGN_ERRORS_SUPPORTED /* Benign error in libpng. Can continue, but may have a problem. * User can choose whether to handle as a fatal error or as a warning. */ -PNG_EXPORT(void,png_benign_error) PNGARG((png_structp png_ptr, - png_const_charp warning_message)); +# undef png_benign_error +PNG_EXPORT(107, void, png_benign_error, (png_structp png_ptr, + png_const_charp warning_message)); /* Same, chunk name is prepended to message. */ -PNG_EXPORT(void,png_chunk_benign_error) PNGARG((png_structp png_ptr, - png_const_charp warning_message)); +# undef png_chunk_benign_error +PNG_EXPORT(108, void, png_chunk_benign_error, (png_structp png_ptr, + png_const_charp warning_message)); -PNG_EXPORT(void,png_set_benign_errors) PNGARG((png_structp - png_ptr, int allowed)); +PNG_EXPORT(109, void, png_set_benign_errors, + (png_structp png_ptr, int allowed)); +#else +# ifdef PNG_ALLOW_BENIGN_ERRORS +# define png_benign_error png_warning +# define png_chunk_benign_error png_chunk_warning +# else +# define png_benign_error png_error +# define png_chunk_benign_error png_chunk_error +# endif #endif /* The png_set_ functions are for storing values in the png_info_struct. @@ -2145,258 +1668,268 @@ PNG_EXPORT(void,png_set_benign_errors) PNGARG((png_structp * png_info_struct. */ /* Returns "flag" if chunk data is valid in info_ptr. */ -PNG_EXPORT(png_uint_32,png_get_valid) PNGARG((png_structp png_ptr, -png_infop info_ptr, png_uint_32 flag)); +PNG_EXPORT(110, png_uint_32, png_get_valid, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_uint_32 flag)); /* Returns number of bytes needed to hold a transformed row. */ -PNG_EXPORT(png_size_t,png_get_rowbytes) PNGARG((png_structp png_ptr, -png_infop info_ptr)); +PNG_EXPORT(111, png_size_t, png_get_rowbytes, (png_const_structp png_ptr, + png_const_infop info_ptr)); #ifdef PNG_INFO_IMAGE_SUPPORTED /* Returns row_pointers, which is an array of pointers to scanlines that was * returned from png_read_png(). */ -PNG_EXPORT(png_bytepp,png_get_rows) PNGARG((png_structp png_ptr, -png_infop info_ptr)); +PNG_EXPORT(112, png_bytepp, png_get_rows, + (png_const_structp png_ptr, png_const_infop info_ptr)); /* Set row_pointers, which is an array of pointers to scanlines for use * by png_write_png(). */ -PNG_EXPORT(void,png_set_rows) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_bytepp row_pointers)); +PNG_EXPORT(113, void, png_set_rows, (png_structp png_ptr, + png_infop info_ptr, png_bytepp row_pointers)); #endif /* Returns number of color channels in image. */ -PNG_EXPORT(png_byte,png_get_channels) PNGARG((png_structp png_ptr, -png_infop info_ptr)); +PNG_EXPORT(114, png_byte, png_get_channels, + (png_const_structp png_ptr, png_const_infop info_ptr)); #ifdef PNG_EASY_ACCESS_SUPPORTED /* Returns image width in pixels. */ -PNG_EXPORT(png_uint_32, png_get_image_width) PNGARG((png_structp -png_ptr, png_infop info_ptr)); +PNG_EXPORT(115, png_uint_32, png_get_image_width, (png_const_structp png_ptr, + png_const_infop info_ptr)); /* Returns image height in pixels. */ -PNG_EXPORT(png_uint_32, png_get_image_height) PNGARG((png_structp -png_ptr, png_infop info_ptr)); +PNG_EXPORT(116, png_uint_32, png_get_image_height, (png_const_structp png_ptr, + png_const_infop info_ptr)); /* Returns image bit_depth. */ -PNG_EXPORT(png_byte, png_get_bit_depth) PNGARG((png_structp -png_ptr, png_infop info_ptr)); +PNG_EXPORT(117, png_byte, png_get_bit_depth, + (png_const_structp png_ptr, png_const_infop info_ptr)); /* Returns image color_type. */ -PNG_EXPORT(png_byte, png_get_color_type) PNGARG((png_structp -png_ptr, png_infop info_ptr)); +PNG_EXPORT(118, png_byte, png_get_color_type, (png_const_structp png_ptr, + png_const_infop info_ptr)); /* Returns image filter_type. */ -PNG_EXPORT(png_byte, png_get_filter_type) PNGARG((png_structp -png_ptr, png_infop info_ptr)); +PNG_EXPORT(119, png_byte, png_get_filter_type, (png_const_structp png_ptr, + png_const_infop info_ptr)); /* Returns image interlace_type. */ -PNG_EXPORT(png_byte, png_get_interlace_type) PNGARG((png_structp -png_ptr, png_infop info_ptr)); +PNG_EXPORT(120, png_byte, png_get_interlace_type, (png_const_structp png_ptr, + png_const_infop info_ptr)); /* Returns image compression_type. */ -PNG_EXPORT(png_byte, png_get_compression_type) PNGARG((png_structp -png_ptr, png_infop info_ptr)); +PNG_EXPORT(121, png_byte, png_get_compression_type, (png_const_structp png_ptr, + png_const_infop info_ptr)); /* Returns image resolution in pixels per meter, from pHYs chunk data. */ -PNG_EXPORT(png_uint_32, png_get_pixels_per_meter) PNGARG((png_structp -png_ptr, png_infop info_ptr)); -PNG_EXPORT(png_uint_32, png_get_x_pixels_per_meter) PNGARG((png_structp -png_ptr, png_infop info_ptr)); -PNG_EXPORT(png_uint_32, png_get_y_pixels_per_meter) PNGARG((png_structp -png_ptr, png_infop info_ptr)); +PNG_EXPORT(122, png_uint_32, png_get_pixels_per_meter, + (png_const_structp png_ptr, png_const_infop info_ptr)); +PNG_EXPORT(123, png_uint_32, png_get_x_pixels_per_meter, + (png_const_structp png_ptr, png_const_infop info_ptr)); +PNG_EXPORT(124, png_uint_32, png_get_y_pixels_per_meter, + (png_const_structp png_ptr, png_const_infop info_ptr)); /* Returns pixel aspect ratio, computed from pHYs chunk data. */ -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(float, png_get_pixel_aspect_ratio) PNGARG((png_structp -png_ptr, png_infop info_ptr)); -#endif +PNG_FP_EXPORT(125, float, png_get_pixel_aspect_ratio, + (png_const_structp png_ptr, png_const_infop info_ptr)); +PNG_FIXED_EXPORT(210, png_fixed_point, png_get_pixel_aspect_ratio_fixed, + (png_const_structp png_ptr, png_const_infop info_ptr)); /* Returns image x, y offset in pixels or microns, from oFFs chunk data. */ -PNG_EXPORT(png_int_32, png_get_x_offset_pixels) PNGARG((png_structp -png_ptr, png_infop info_ptr)); -PNG_EXPORT(png_int_32, png_get_y_offset_pixels) PNGARG((png_structp -png_ptr, png_infop info_ptr)); -PNG_EXPORT(png_int_32, png_get_x_offset_microns) PNGARG((png_structp -png_ptr, png_infop info_ptr)); -PNG_EXPORT(png_int_32, png_get_y_offset_microns) PNGARG((png_structp -png_ptr, png_infop info_ptr)); +PNG_EXPORT(126, png_int_32, png_get_x_offset_pixels, + (png_const_structp png_ptr, png_const_infop info_ptr)); +PNG_EXPORT(127, png_int_32, png_get_y_offset_pixels, + (png_const_structp png_ptr, png_const_infop info_ptr)); +PNG_EXPORT(128, png_int_32, png_get_x_offset_microns, + (png_const_structp png_ptr, png_const_infop info_ptr)); +PNG_EXPORT(129, png_int_32, png_get_y_offset_microns, + (png_const_structp png_ptr, png_const_infop info_ptr)); #endif /* PNG_EASY_ACCESS_SUPPORTED */ /* Returns pointer to signature string read from PNG header */ -PNG_EXPORT(png_bytep,png_get_signature) PNGARG((png_structp png_ptr, -png_infop info_ptr)); +PNG_EXPORT(130, png_const_bytep, png_get_signature, + (png_const_structp png_ptr, png_infop info_ptr)); #ifdef PNG_bKGD_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_bKGD) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_color_16p *background)); +PNG_EXPORT(131, png_uint_32, png_get_bKGD, + (png_const_structp png_ptr, png_infop info_ptr, + png_color_16p *background)); #endif #ifdef PNG_bKGD_SUPPORTED -PNG_EXPORT(void,png_set_bKGD) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_color_16p background)); +PNG_EXPORT(132, void, png_set_bKGD, (png_structp png_ptr, png_infop info_ptr, + png_const_color_16p background)); #endif #ifdef PNG_cHRM_SUPPORTED -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_cHRM) PNGARG((png_structp png_ptr, - png_infop info_ptr, double *white_x, double *white_y, double *red_x, - double *red_y, double *green_x, double *green_y, double *blue_x, - double *blue_y)); -#endif -#ifdef PNG_FIXED_POINT_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_cHRM_fixed) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_fixed_point *int_white_x, png_fixed_point - *int_white_y, png_fixed_point *int_red_x, png_fixed_point *int_red_y, - png_fixed_point *int_green_x, png_fixed_point *int_green_y, png_fixed_point - *int_blue_x, png_fixed_point *int_blue_y)); +PNG_FP_EXPORT(133, png_uint_32, png_get_cHRM, (png_const_structp png_ptr, + png_const_infop info_ptr, double *white_x, double *white_y, double *red_x, + double *red_y, double *green_x, double *green_y, double *blue_x, + double *blue_y)); +#ifdef PNG_FIXED_POINT_SUPPORTED /* Otherwise not implemented */ +PNG_FIXED_EXPORT(134, png_uint_32, png_get_cHRM_fixed, + (png_const_structp png_ptr, + png_const_infop info_ptr, png_fixed_point *int_white_x, + png_fixed_point *int_white_y, png_fixed_point *int_red_x, + png_fixed_point *int_red_y, png_fixed_point *int_green_x, + png_fixed_point *int_green_y, png_fixed_point *int_blue_x, + png_fixed_point *int_blue_y)); #endif #endif #ifdef PNG_cHRM_SUPPORTED -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(void,png_set_cHRM) PNGARG((png_structp png_ptr, - png_infop info_ptr, double white_x, double white_y, double red_x, - double red_y, double green_x, double green_y, double blue_x, double blue_y)); -#endif -#ifdef PNG_FIXED_POINT_SUPPORTED -PNG_EXPORT(void,png_set_cHRM_fixed) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_fixed_point int_white_x, png_fixed_point int_white_y, - png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point - int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x, - png_fixed_point int_blue_y)); -#endif +PNG_FP_EXPORT(135, void, png_set_cHRM, + (png_structp png_ptr, png_infop info_ptr, + double white_x, double white_y, double red_x, double red_y, double green_x, + double green_y, double blue_x, double blue_y)); +PNG_FIXED_EXPORT(136, void, png_set_cHRM_fixed, (png_structp png_ptr, + png_infop info_ptr, png_fixed_point int_white_x, + png_fixed_point int_white_y, png_fixed_point int_red_x, + png_fixed_point int_red_y, png_fixed_point int_green_x, + png_fixed_point int_green_y, png_fixed_point int_blue_x, + png_fixed_point int_blue_y)); #endif #ifdef PNG_gAMA_SUPPORTED -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_gAMA) PNGARG((png_structp png_ptr, - png_infop info_ptr, double *file_gamma)); -#endif -PNG_EXPORT(png_uint_32,png_get_gAMA_fixed) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_fixed_point *int_file_gamma)); +PNG_FP_EXPORT(137, png_uint_32, png_get_gAMA, + (png_const_structp png_ptr, png_const_infop info_ptr, + double *file_gamma)); +PNG_FIXED_EXPORT(138, png_uint_32, png_get_gAMA_fixed, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_fixed_point *int_file_gamma)); #endif #ifdef PNG_gAMA_SUPPORTED -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(void,png_set_gAMA) PNGARG((png_structp png_ptr, - png_infop info_ptr, double file_gamma)); -#endif -PNG_EXPORT(void,png_set_gAMA_fixed) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_fixed_point int_file_gamma)); +PNG_FP_EXPORT(139, void, png_set_gAMA, (png_structp png_ptr, + png_infop info_ptr, double file_gamma)); +PNG_FIXED_EXPORT(140, void, png_set_gAMA_fixed, (png_structp png_ptr, + png_infop info_ptr, png_fixed_point int_file_gamma)); #endif #ifdef PNG_hIST_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_hIST) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_16p *hist)); +PNG_EXPORT(141, png_uint_32, png_get_hIST, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_uint_16p *hist)); #endif #ifdef PNG_hIST_SUPPORTED -PNG_EXPORT(void,png_set_hIST) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_16p hist)); +PNG_EXPORT(142, void, png_set_hIST, (png_structp png_ptr, + png_infop info_ptr, png_const_uint_16p hist)); #endif -PNG_EXPORT(png_uint_32,png_get_IHDR) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 *width, png_uint_32 *height, - int *bit_depth, int *color_type, int *interlace_method, - int *compression_method, int *filter_method)); +PNG_EXPORT(143, png_uint_32, png_get_IHDR, + (png_structp png_ptr, png_infop info_ptr, + png_uint_32 *width, png_uint_32 *height, int *bit_depth, int *color_type, + int *interlace_method, int *compression_method, int *filter_method)); -PNG_EXPORT(void,png_set_IHDR) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 width, png_uint_32 height, int bit_depth, - int color_type, int interlace_method, int compression_method, - int filter_method)); +PNG_EXPORT(144, void, png_set_IHDR, + (png_structp png_ptr, png_infop info_ptr, + png_uint_32 width, png_uint_32 height, int bit_depth, int color_type, + int interlace_method, int compression_method, int filter_method)); #ifdef PNG_oFFs_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_oFFs) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_int_32 *offset_x, png_int_32 *offset_y, - int *unit_type)); +PNG_EXPORT(145, png_uint_32, png_get_oFFs, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_int_32 *offset_x, png_int_32 *offset_y, int *unit_type)); #endif #ifdef PNG_oFFs_SUPPORTED -PNG_EXPORT(void,png_set_oFFs) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_int_32 offset_x, png_int_32 offset_y, - int unit_type)); +PNG_EXPORT(146, void, png_set_oFFs, + (png_structp png_ptr, png_infop info_ptr, + png_int_32 offset_x, png_int_32 offset_y, int unit_type)); #endif #ifdef PNG_pCAL_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_pCAL) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_charp *purpose, png_int_32 *X0, png_int_32 *X1, - int *type, int *nparams, png_charp *units, png_charpp *params)); +PNG_EXPORT(147, png_uint_32, png_get_pCAL, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_charp *purpose, png_int_32 *X0, png_int_32 *X1, int *type, + int *nparams, + png_charp *units, png_charpp *params)); #endif #ifdef PNG_pCAL_SUPPORTED -PNG_EXPORT(void,png_set_pCAL) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_charp purpose, png_int_32 X0, png_int_32 X1, - int type, int nparams, png_charp units, png_charpp params)); +PNG_EXPORT(148, void, png_set_pCAL, (png_structp png_ptr, + png_infop info_ptr, + png_const_charp purpose, png_int_32 X0, png_int_32 X1, int type, + int nparams, png_const_charp units, png_charpp params)); #endif #ifdef PNG_pHYs_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_pHYs) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)); +PNG_EXPORT(149, png_uint_32, png_get_pHYs, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)); #endif #ifdef PNG_pHYs_SUPPORTED -PNG_EXPORT(void,png_set_pHYs) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 res_x, png_uint_32 res_y, int unit_type)); +PNG_EXPORT(150, void, png_set_pHYs, + (png_structp png_ptr, png_infop info_ptr, + png_uint_32 res_x, png_uint_32 res_y, int unit_type)); #endif -PNG_EXPORT(png_uint_32,png_get_PLTE) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_colorp *palette, int *num_palette)); +PNG_EXPORT(151, png_uint_32, png_get_PLTE, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_colorp *palette, int *num_palette)); -PNG_EXPORT(void,png_set_PLTE) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_colorp palette, int num_palette)); +PNG_EXPORT(152, void, png_set_PLTE, + (png_structp png_ptr, png_infop info_ptr, + png_const_colorp palette, int num_palette)); #ifdef PNG_sBIT_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_sBIT) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_color_8p *sig_bit)); +PNG_EXPORT(153, png_uint_32, png_get_sBIT, + (png_const_structp png_ptr, png_infop info_ptr, + png_color_8p *sig_bit)); #endif #ifdef PNG_sBIT_SUPPORTED -PNG_EXPORT(void,png_set_sBIT) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_color_8p sig_bit)); +PNG_EXPORT(154, void, png_set_sBIT, + (png_structp png_ptr, png_infop info_ptr, png_const_color_8p sig_bit)); #endif #ifdef PNG_sRGB_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_sRGB) PNGARG((png_structp png_ptr, - png_infop info_ptr, int *intent)); +PNG_EXPORT(155, png_uint_32, png_get_sRGB, (png_const_structp png_ptr, + png_const_infop info_ptr, int *file_srgb_intent)); #endif #ifdef PNG_sRGB_SUPPORTED -PNG_EXPORT(void,png_set_sRGB) PNGARG((png_structp png_ptr, - png_infop info_ptr, int intent)); -PNG_EXPORT(void,png_set_sRGB_gAMA_and_cHRM) PNGARG((png_structp png_ptr, - png_infop info_ptr, int intent)); +PNG_EXPORT(156, void, png_set_sRGB, + (png_structp png_ptr, png_infop info_ptr, int srgb_intent)); +PNG_EXPORT(157, void, png_set_sRGB_gAMA_and_cHRM, (png_structp png_ptr, + png_infop info_ptr, int srgb_intent)); #endif #ifdef PNG_iCCP_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_iCCP) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_charpp name, int *compression_type, - png_charpp profile, png_uint_32 *proflen)); - /* Note to maintainer: profile should be png_bytepp */ +PNG_EXPORT(158, png_uint_32, png_get_iCCP, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_charpp name, int *compression_type, png_bytepp profile, + png_uint_32 *proflen)); #endif #ifdef PNG_iCCP_SUPPORTED -PNG_EXPORT(void,png_set_iCCP) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_charp name, int compression_type, - png_charp profile, png_uint_32 proflen)); - /* Note to maintainer: profile should be png_bytep */ +PNG_EXPORT(159, void, png_set_iCCP, + (png_structp png_ptr, png_infop info_ptr, + png_const_charp name, int compression_type, png_const_bytep profile, + png_uint_32 proflen)); #endif #ifdef PNG_sPLT_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_sPLT) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_sPLT_tpp entries)); +PNG_EXPORT(160, png_uint_32, png_get_sPLT, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_sPLT_tpp entries)); #endif #ifdef PNG_sPLT_SUPPORTED -PNG_EXPORT(void,png_set_sPLT) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_sPLT_tp entries, int nentries)); +PNG_EXPORT(161, void, png_set_sPLT, + (png_structp png_ptr, png_infop info_ptr, + png_const_sPLT_tp entries, int nentries)); #endif #ifdef PNG_TEXT_SUPPORTED /* png_get_text also returns the number of text chunks in *num_text */ -PNG_EXPORT(png_uint_32,png_get_text) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_textp *text_ptr, int *num_text)); +PNG_EXPORT(162, png_uint_32, png_get_text, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_textp *text_ptr, int *num_text)); #endif /* Note while png_set_text() will accept a structure whose text, @@ -2407,59 +1940,64 @@ PNG_EXPORT(png_uint_32,png_get_text) PNGARG((png_structp png_ptr, */ #ifdef PNG_TEXT_SUPPORTED -PNG_EXPORT(void,png_set_text) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_textp text_ptr, int num_text)); +PNG_EXPORT(163, void, png_set_text, + (png_structp png_ptr, png_infop info_ptr, + png_const_textp text_ptr, int num_text)); #endif #ifdef PNG_tIME_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_tIME) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_timep *mod_time)); +PNG_EXPORT(164, png_uint_32, png_get_tIME, + (png_const_structp png_ptr, png_infop info_ptr, png_timep *mod_time)); #endif #ifdef PNG_tIME_SUPPORTED -PNG_EXPORT(void,png_set_tIME) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_timep mod_time)); +PNG_EXPORT(165, void, png_set_tIME, + (png_structp png_ptr, png_infop info_ptr, png_const_timep mod_time)); #endif #ifdef PNG_tRNS_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_tRNS) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_bytep *trans_alpha, int *num_trans, - png_color_16p *trans_color)); -#endif - -#ifdef PNG_tRNS_SUPPORTED -PNG_EXPORT(void,png_set_tRNS) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_bytep trans_alpha, int num_trans, - png_color_16p trans_color)); +PNG_EXPORT(166, png_uint_32, png_get_tRNS, + (png_const_structp png_ptr, png_infop info_ptr, + png_bytep *trans_alpha, int *num_trans, png_color_16p *trans_color)); #endif #ifdef PNG_tRNS_SUPPORTED +PNG_EXPORT(167, void, png_set_tRNS, + (png_structp png_ptr, png_infop info_ptr, + png_const_bytep trans_alpha, int num_trans, + png_const_color_16p trans_color)); #endif #ifdef PNG_sCAL_SUPPORTED -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_sCAL) PNGARG((png_structp png_ptr, - png_infop info_ptr, int *unit, double *width, double *height)); -#else -#ifdef PNG_FIXED_POINT_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_sCAL_s) PNGARG((png_structp png_ptr, - png_infop info_ptr, int *unit, png_charpp swidth, png_charpp sheight)); -#endif +PNG_FP_EXPORT(168, png_uint_32, png_get_sCAL, + (png_const_structp png_ptr, png_const_infop info_ptr, + int *unit, double *width, double *height)); +#ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED +/* NOTE: this API is currently implemented using floating point arithmetic, + * consequently it can only be used on systems with floating point support. + * In any case the range of values supported by png_fixed_point is small and it + * is highly recommended that png_get_sCAL_s be used instead. + */ +PNG_FIXED_EXPORT(214, png_uint_32, png_get_sCAL_fixed, + (png_structp png_ptr, png_const_infop info_ptr, int *unit, + png_fixed_point *width, + png_fixed_point *height)); #endif +PNG_EXPORT(169, png_uint_32, png_get_sCAL_s, + (png_const_structp png_ptr, png_const_infop info_ptr, + int *unit, png_charpp swidth, png_charpp sheight)); + +PNG_FP_EXPORT(170, void, png_set_sCAL, + (png_structp png_ptr, png_infop info_ptr, + int unit, double width, double height)); +PNG_FIXED_EXPORT(213, void, png_set_sCAL_fixed, (png_structp png_ptr, + png_infop info_ptr, int unit, png_fixed_point width, + png_fixed_point height)); +PNG_EXPORT(171, void, png_set_sCAL_s, + (png_structp png_ptr, png_infop info_ptr, + int unit, png_const_charp swidth, png_const_charp sheight)); #endif /* PNG_sCAL_SUPPORTED */ -#ifdef PNG_sCAL_SUPPORTED -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(void,png_set_sCAL) PNGARG((png_structp png_ptr, - png_infop info_ptr, int unit, double width, double height)); -#else -#ifdef PNG_FIXED_POINT_SUPPORTED -PNG_EXPORT(void,png_set_sCAL_s) PNGARG((png_structp png_ptr, - png_infop info_ptr, int unit, png_charp swidth, png_charp sheight)); -#endif -#endif -#endif /* PNG_sCAL_SUPPORTED || PNG_WRITE_sCAL_SUPPORTED */ - #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED /* Provide a list of chunks and how they are to be handled, if the built-in handling or default unknown chunk handling is not desired. Any chunks not @@ -2470,48 +2008,49 @@ PNG_EXPORT(void,png_set_sCAL_s) PNGARG((png_structp png_ptr, = 2: keep only if safe-to-copy = 3: keep even if unsafe-to-copy */ -PNG_EXPORT(void, png_set_keep_unknown_chunks) PNGARG((png_structp - png_ptr, int keep, png_bytep chunk_list, int num_chunks)); -PNG_EXPORT(int,png_handle_as_unknown) PNGARG((png_structp png_ptr, png_bytep - chunk_name)); +PNG_EXPORT(172, void, png_set_keep_unknown_chunks, + (png_structp png_ptr, int keep, + png_const_bytep chunk_list, int num_chunks)); +PNG_EXPORT(173, int, png_handle_as_unknown, (png_structp png_ptr, + png_const_bytep chunk_name)); #endif #ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED -PNG_EXPORT(void, png_set_unknown_chunks) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_unknown_chunkp unknowns, int num_unknowns)); -PNG_EXPORT(void, png_set_unknown_chunk_location) - PNGARG((png_structp png_ptr, png_infop info_ptr, int chunk, int location)); -PNG_EXPORT(png_uint_32,png_get_unknown_chunks) PNGARG((png_structp - png_ptr, png_infop info_ptr, png_unknown_chunkpp entries)); +PNG_EXPORT(174, void, png_set_unknown_chunks, (png_structp png_ptr, + png_infop info_ptr, png_const_unknown_chunkp unknowns, + int num_unknowns)); +PNG_EXPORT(175, void, png_set_unknown_chunk_location, + (png_structp png_ptr, png_infop info_ptr, int chunk, int location)); +PNG_EXPORT(176, int, png_get_unknown_chunks, (png_const_structp png_ptr, + png_const_infop info_ptr, png_unknown_chunkpp entries)); #endif /* Png_free_data() will turn off the "valid" flag for anything it frees. * If you need to turn it off for a chunk that your application has freed, * you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK); */ -PNG_EXPORT(void, png_set_invalid) PNGARG((png_structp png_ptr, - png_infop info_ptr, int mask)); +PNG_EXPORT(177, void, png_set_invalid, + (png_structp png_ptr, png_infop info_ptr, int mask)); #ifdef PNG_INFO_IMAGE_SUPPORTED /* The "params" pointer is currently not used and is for future expansion. */ -PNG_EXPORT(void, png_read_png) PNGARG((png_structp png_ptr, - png_infop info_ptr, - int transforms, - png_voidp params)); -PNG_EXPORT(void, png_write_png) PNGARG((png_structp png_ptr, - png_infop info_ptr, - int transforms, - png_voidp params)); +PNG_EXPORT(178, void, png_read_png, (png_structp png_ptr, png_infop info_ptr, + int transforms, png_voidp params)); +PNG_EXPORT(179, void, png_write_png, (png_structp png_ptr, png_infop info_ptr, + int transforms, png_voidp params)); #endif -PNG_EXPORT(png_charp,png_get_copyright) PNGARG((png_structp png_ptr)); -PNG_EXPORT(png_charp,png_get_header_ver) PNGARG((png_structp png_ptr)); -PNG_EXPORT(png_charp,png_get_header_version) PNGARG((png_structp - png_ptr)); -PNG_EXPORT(png_charp,png_get_libpng_ver) PNGARG((png_structp png_ptr)); +PNG_EXPORT(180, png_const_charp, png_get_copyright, + (png_const_structp png_ptr)); +PNG_EXPORT(181, png_const_charp, png_get_header_ver, + (png_const_structp png_ptr)); +PNG_EXPORT(182, png_const_charp, png_get_header_version, + (png_const_structp png_ptr)); +PNG_EXPORT(183, png_const_charp, png_get_libpng_ver, + (png_const_structp png_ptr)); #ifdef PNG_MNG_FEATURES_SUPPORTED -PNG_EXPORT(png_uint_32,png_permit_mng_features) PNGARG((png_structp - png_ptr, png_uint_32 mng_features_permitted)); +PNG_EXPORT(184, png_uint_32, png_permit_mng_features, (png_structp png_ptr, + png_uint_32 mng_features_permitted)); #endif /* For use in png_set_keep_unknown, added to version 1.2.6 */ @@ -2524,74 +2063,136 @@ PNG_EXPORT(png_uint_32,png_permit_mng_features) PNGARG((png_structp * messages before passing them to the error or warning handler. */ #ifdef PNG_ERROR_NUMBERS_SUPPORTED -PNG_EXPORT(void,png_set_strip_error_numbers) PNGARG((png_structp - png_ptr, png_uint_32 strip_mode)); +PNG_EXPORT(185, void, png_set_strip_error_numbers, + (png_structp png_ptr, + png_uint_32 strip_mode)); #endif /* Added in libpng-1.2.6 */ #ifdef PNG_SET_USER_LIMITS_SUPPORTED -PNG_EXPORT(void,png_set_user_limits) PNGARG((png_structp - png_ptr, png_uint_32 user_width_max, png_uint_32 user_height_max)); -PNG_EXPORT(png_uint_32,png_get_user_width_max) PNGARG((png_structp - png_ptr)); -PNG_EXPORT(png_uint_32,png_get_user_height_max) PNGARG((png_structp - png_ptr)); +PNG_EXPORT(186, void, png_set_user_limits, (png_structp png_ptr, + png_uint_32 user_width_max, png_uint_32 user_height_max)); +PNG_EXPORT(187, png_uint_32, png_get_user_width_max, + (png_const_structp png_ptr)); +PNG_EXPORT(188, png_uint_32, png_get_user_height_max, + (png_const_structp png_ptr)); /* Added in libpng-1.4.0 */ -PNG_EXPORT(void,png_set_chunk_cache_max) PNGARG((png_structp - png_ptr, png_uint_32 user_chunk_cache_max)); -PNG_EXPORT(png_uint_32,png_get_chunk_cache_max) - PNGARG((png_structp png_ptr)); +PNG_EXPORT(189, void, png_set_chunk_cache_max, (png_structp png_ptr, + png_uint_32 user_chunk_cache_max)); +PNG_EXPORT(190, png_uint_32, png_get_chunk_cache_max, + (png_const_structp png_ptr)); /* Added in libpng-1.4.1 */ -PNG_EXPORT(void,png_set_chunk_malloc_max) PNGARG((png_structp - png_ptr, png_alloc_size_t user_chunk_cache_max)); -PNG_EXPORT(png_alloc_size_t,png_get_chunk_malloc_max) - PNGARG((png_structp png_ptr)); +PNG_EXPORT(191, void, png_set_chunk_malloc_max, (png_structp png_ptr, + png_alloc_size_t user_chunk_cache_max)); +PNG_EXPORT(192, png_alloc_size_t, png_get_chunk_malloc_max, + (png_const_structp png_ptr)); #endif -#if defined(PNG_INCH_CONVERSIONS) && defined(PNG_FLOATING_POINT_SUPPORTED) -PNG_EXPORT(png_uint_32,png_get_pixels_per_inch) PNGARG((png_structp png_ptr, -png_infop info_ptr)); +#if defined(PNG_INCH_CONVERSIONS_SUPPORTED) +PNG_EXPORT(193, png_uint_32, png_get_pixels_per_inch, + (png_const_structp png_ptr, png_const_infop info_ptr)); -PNG_EXPORT(png_uint_32,png_get_x_pixels_per_inch) PNGARG((png_structp png_ptr, -png_infop info_ptr)); +PNG_EXPORT(194, png_uint_32, png_get_x_pixels_per_inch, + (png_const_structp png_ptr, png_const_infop info_ptr)); -PNG_EXPORT(png_uint_32,png_get_y_pixels_per_inch) PNGARG((png_structp png_ptr, -png_infop info_ptr)); +PNG_EXPORT(195, png_uint_32, png_get_y_pixels_per_inch, + (png_const_structp png_ptr, png_const_infop info_ptr)); -PNG_EXPORT(float,png_get_x_offset_inches) PNGARG((png_structp png_ptr, -png_infop info_ptr)); +PNG_FP_EXPORT(196, float, png_get_x_offset_inches, + (png_const_structp png_ptr, png_const_infop info_ptr)); +#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */ +PNG_FIXED_EXPORT(211, png_fixed_point, png_get_x_offset_inches_fixed, + (png_structp png_ptr, png_const_infop info_ptr)); +#endif -PNG_EXPORT(float,png_get_y_offset_inches) PNGARG((png_structp png_ptr, -png_infop info_ptr)); +PNG_FP_EXPORT(197, float, png_get_y_offset_inches, (png_const_structp png_ptr, + png_const_infop info_ptr)); +#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */ +PNG_FIXED_EXPORT(212, png_fixed_point, png_get_y_offset_inches_fixed, + (png_structp png_ptr, png_const_infop info_ptr)); +#endif -#ifdef PNG_pHYs_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_pHYs_dpi) PNGARG((png_structp png_ptr, -png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)); -#endif /* PNG_pHYs_SUPPORTED */ -#endif /* PNG_INCH_CONVERSIONS && PNG_FLOATING_POINT_SUPPORTED */ +# ifdef PNG_pHYs_SUPPORTED +PNG_EXPORT(198, png_uint_32, png_get_pHYs_dpi, (png_const_structp png_ptr, + png_const_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, + int *unit_type)); +# endif /* PNG_pHYs_SUPPORTED */ +#endif /* PNG_INCH_CONVERSIONS_SUPPORTED */ /* Added in libpng-1.4.0 */ #ifdef PNG_IO_STATE_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_io_state) PNGARG((png_structp png_ptr)); +PNG_EXPORT(199, png_uint_32, png_get_io_state, (png_structp png_ptr)); -PNG_EXPORT(png_bytep,png_get_io_chunk_name) - PNGARG((png_structp png_ptr)); +PNG_EXPORTA(200, png_const_bytep, png_get_io_chunk_name, + (png_structp png_ptr), PNG_DEPRECATED); +PNG_EXPORT(216, png_uint_32, png_get_io_chunk_type, + (png_const_structp png_ptr)); /* The flags returned by png_get_io_state() are the following: */ -#define PNG_IO_NONE 0x0000 /* no I/O at this moment */ -#define PNG_IO_READING 0x0001 /* currently reading */ -#define PNG_IO_WRITING 0x0002 /* currently writing */ -#define PNG_IO_SIGNATURE 0x0010 /* currently at the file signature */ -#define PNG_IO_CHUNK_HDR 0x0020 /* currently at the chunk header */ -#define PNG_IO_CHUNK_DATA 0x0040 /* currently at the chunk data */ -#define PNG_IO_CHUNK_CRC 0x0080 /* currently at the chunk crc */ -#define PNG_IO_MASK_OP 0x000f /* current operation: reading/writing */ -#define PNG_IO_MASK_LOC 0x00f0 /* current location: sig/hdr/data/crc */ +# define PNG_IO_NONE 0x0000 /* no I/O at this moment */ +# define PNG_IO_READING 0x0001 /* currently reading */ +# define PNG_IO_WRITING 0x0002 /* currently writing */ +# define PNG_IO_SIGNATURE 0x0010 /* currently at the file signature */ +# define PNG_IO_CHUNK_HDR 0x0020 /* currently at the chunk header */ +# define PNG_IO_CHUNK_DATA 0x0040 /* currently at the chunk data */ +# define PNG_IO_CHUNK_CRC 0x0080 /* currently at the chunk crc */ +# define PNG_IO_MASK_OP 0x000f /* current operation: reading/writing */ +# define PNG_IO_MASK_LOC 0x00f0 /* current location: sig/hdr/data/crc */ #endif /* ?PNG_IO_STATE_SUPPORTED */ -/* Maintainer: Put new public prototypes here ^, in libpng.3, and project - * defs +/* Interlace support. The following macros are always defined so that if + * libpng interlace handling is turned off the macros may be used to handle + * interlaced images within the application. */ +#define PNG_INTERLACE_ADAM7_PASSES 7 + +/* Two macros to return the first row and first column of the original, + * full, image which appears in a given pass. 'pass' is in the range 0 + * to 6 and the result is in the range 0 to 7. + */ +#define PNG_PASS_START_ROW(pass) (((1U&~(pass))<<(3-((pass)>>1)))&7) +#define PNG_PASS_START_COL(pass) (((1U& (pass))<<(3-(((pass)+1)>>1)))&7) + +/* Two macros to help evaluate the number of rows or columns in each + * pass. This is expressed as a shift - effectively log2 of the number or + * rows or columns in each 8x8 tile of the original image. + */ +#define PNG_PASS_ROW_SHIFT(pass) ((pass)>2?(8-(pass))>>1:3) +#define PNG_PASS_COL_SHIFT(pass) ((pass)>1?(7-(pass))>>1:3) + +/* Hence two macros to determine the number of rows or columns in a given + * pass of an image given its height or width. In fact these macros may + * return non-zero even though the sub-image is empty, because the other + * dimension may be empty for a small image. + */ +#define PNG_PASS_ROWS(height, pass) (((height)+(((1<>PNG_PASS_ROW_SHIFT(pass)) +#define PNG_PASS_COLS(width, pass) (((width)+(((1<>PNG_PASS_COL_SHIFT(pass)) + +/* For the reader row callbacks (both progressive and sequential) it is + * necessary to find the row in the output image given a row in an interlaced + * image, so two more macros: + */ +#define PNG_ROW_FROM_PASS_ROW(yIn, pass) \ + (((yIn)<>(((7-(off))-(pass))<<2)) & 0xFU) | \ + ((0x01145AF0U>>(((7-(off))-(pass))<<2)) & 0xF0U)) + +#define PNG_ROW_IN_INTERLACE_PASS(y, pass) \ + ((PNG_PASS_MASK(pass,0) >> ((y)&7)) & 1) +#define PNG_COL_IN_INTERLACE_PASS(x, pass) \ + ((PNG_PASS_MASK(pass,1) >> ((x)&7)) & 1) #ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED /* With these routines we avoid an integer divide, which will be slower on @@ -2606,7 +2207,7 @@ PNG_EXPORT(png_bytep,png_get_io_chunk_name) * [Optimized code by Greg Roelofs and Mark Adler...blame us for bugs. :-) ] */ - /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */ + /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */ # define png_composite(composite, fg, alpha, bg) \ { png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) \ @@ -2624,17 +2225,44 @@ PNG_EXPORT(png_bytep,png_get_io_chunk_name) #else /* Standard method using integer division */ -# define png_composite(composite, fg, alpha, bg) \ - (composite) = (png_byte)(((png_uint_16)(fg) * (png_uint_16)(alpha) + \ - (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \ - (png_uint_16)127) / 255) +# define png_composite(composite, fg, alpha, bg) \ + (composite) = (png_byte)(((png_uint_16)(fg) * (png_uint_16)(alpha) + \ + (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \ + (png_uint_16)127) / 255) # define png_composite_16(composite, fg, alpha, bg) \ (composite) = (png_uint_16)(((png_uint_32)(fg) * (png_uint_32)(alpha) + \ - (png_uint_32)(bg)*(png_uint_32)(65535L - (png_uint_32)(alpha)) + \ - (png_uint_32)32767) / (png_uint_32)65535L) + (png_uint_32)(bg)*(png_uint_32)(65535L - (png_uint_32)(alpha)) + \ + (png_uint_32)32767) / (png_uint_32)65535L) #endif /* PNG_READ_COMPOSITE_NODIV_SUPPORTED */ +#ifdef PNG_READ_INT_FUNCTIONS_SUPPORTED +PNG_EXPORT(201, png_uint_32, png_get_uint_32, (png_const_bytep buf)); +PNG_EXPORT(202, png_uint_16, png_get_uint_16, (png_const_bytep buf)); +PNG_EXPORT(203, png_int_32, png_get_int_32, (png_const_bytep buf)); +#endif + +PNG_EXPORT(204, png_uint_32, png_get_uint_31, (png_structp png_ptr, + png_const_bytep buf)); +/* No png_get_int_16 -- may be added if there's a real need for it. */ + +/* Place a 32-bit number into a buffer in PNG byte order (big-endian). */ +#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED +PNG_EXPORT(205, void, png_save_uint_32, (png_bytep buf, png_uint_32 i)); +#endif +#ifdef PNG_SAVE_INT_32_SUPPORTED +PNG_EXPORT(206, void, png_save_int_32, (png_bytep buf, png_int_32 i)); +#endif + +/* Place a 16-bit number into a buffer in PNG byte order. + * The parameter is declared unsigned int, not png_uint_16, + * just to avoid potential problems on pre-ANSI C compilers. + */ +#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED +PNG_EXPORT(207, void, png_save_uint_16, (png_bytep buf, unsigned int i)); +/* No png_save_int_16 -- may be added if there's a real need for it. */ +#endif + #ifdef PNG_USE_READ_MACROS /* Inline macros to do direct reads of bytes from the input buffer. * The png_get_int_32() routine assumes we are using two's complement @@ -2645,50 +2273,32 @@ PNG_EXPORT(png_bytep,png_get_io_chunk_name) ((png_uint_32)(*((buf) + 1)) << 16) + \ ((png_uint_32)(*((buf) + 2)) << 8) + \ ((png_uint_32)(*((buf) + 3)))) + + /* From libpng-1.4.0 until 1.4.4, the png_get_uint_16 macro (but not the + * function) incorrectly returned a value of type png_uint_32. + */ # define png_get_uint_16(buf) \ - (((png_uint_32)(*(buf)) << 8) + \ - ((png_uint_32)(*((buf) + 1)))) + ((png_uint_16) \ + (((unsigned int)(*(buf)) << 8) + \ + ((unsigned int)(*((buf) + 1))))) + # define png_get_int_32(buf) \ ((png_int_32)((*(buf) & 0x80) \ - ? -((png_int_32)((png_get_uint_32(buf) ^ 0xffffffff)+1)) \ + ? -((png_int_32)((png_get_uint_32(buf) ^ 0xffffffffL) + 1)) \ : (png_int_32)png_get_uint_32(buf))) -#else -PNG_EXPORT(png_uint_32,png_get_uint_32) PNGARG((png_bytep buf)); -PNG_EXPORT(png_uint_16,png_get_uint_16) PNGARG((png_bytep buf)); -#ifdef PNG_GET_INT_32_SUPPORTED -PNG_EXPORT(png_int_32,png_get_int_32) PNGARG((png_bytep buf)); #endif + +/* Maintainer: Put new public prototypes here ^, in libpng.3, and project + * defs + */ + +/* The last ordinal number (this is the *last* one already used; the next + * one to use is one more than this.) Maintainer, remember to add an entry to + * scripts/symbols.def as well. + */ +#ifdef PNG_EXPORT_LAST_ORDINAL + PNG_EXPORT_LAST_ORDINAL(221); #endif -PNG_EXPORT(png_uint_32,png_get_uint_31) - PNGARG((png_structp png_ptr, png_bytep buf)); -/* No png_get_int_16 -- may be added if there's a real need for it. */ - -/* Place a 32-bit number into a buffer in PNG byte order (big-endian). */ -PNG_EXPORT(void,png_save_uint_32) - PNGARG((png_bytep buf, png_uint_32 i)); -PNG_EXPORT(void,png_save_int_32) - PNGARG((png_bytep buf, png_int_32 i)); - -/* Place a 16-bit number into a buffer in PNG byte order. - * The parameter is declared unsigned int, not png_uint_16, - * just to avoid potential problems on pre-ANSI C compilers. - */ -PNG_EXPORT(void,png_save_uint_16) - PNGARG((png_bytep buf, unsigned int i)); -/* No png_save_int_16 -- may be added if there's a real need for it. */ - -/* ************************************************************************* */ - -/* Various modes of operation. Note that after an init, mode is set to - * zero automatically when the structure is created. - */ -#define PNG_HAVE_IHDR 0x01 -#define PNG_HAVE_PLTE 0x02 -#define PNG_HAVE_IDAT 0x04 -#define PNG_AFTER_IDAT 0x08 /* Have complete zlib datastream */ -#define PNG_HAVE_IEND 0x10 -#define PNG_HAVE_gAMA 0x20 -#define PNG_HAVE_cHRM 0x40 #ifdef __cplusplus } diff --git a/engine/libs/mingw64-libs/pngconf.h b/engine/libs/mingw64-libs/pngconf.h index 7d1780246..084de8eff 100755 --- a/engine/libs/mingw64-libs/pngconf.h +++ b/engine/libs/mingw64-libs/pngconf.h @@ -1,9 +1,9 @@ /* pngconf.h - machine configurable file for libpng * - * libpng version 1.4.4 - September 23, 2010 - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1998-2010 Glenn Randers-Pehrson + * libpng version 1.5.2 - March 31, 2011 + * + * Copyright (c) 1998-2011 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) * @@ -22,290 +22,57 @@ #ifndef PNGCONF_H #define PNGCONF_H -#ifndef PNG_NO_LIMITS_H -# include -#endif - -/* Added at libpng-1.2.9 */ - -/* config.h is created by and PNG_CONFIGURE_LIBPNG is set by the "configure" - * script. +#ifndef PNG_BUILDING_SYMBOL_TABLE +/* PNG_NO_LIMITS_H may be used to turn off the use of the standard C + * definition file for machine specific limits, this may impact the + * correctness of the definitons below (see uses of INT_MAX). */ -#ifdef PNG_CONFIGURE_LIBPNG -# ifdef HAVE_CONFIG_H -# include "config.h" -# endif -#endif - -/* - * Added at libpng-1.2.8 - * - * PNG_USER_CONFIG has to be defined on the compiler command line. This - * includes the resource compiler for Windows DLL configurations. - */ -#ifdef PNG_USER_CONFIG -# include "pngusr.h" -# ifndef PNG_USER_PRIVATEBUILD -# define PNG_USER_PRIVATEBUILD -# endif -#endif - -/* - * If you create a private DLL you should define in "pngusr.h" the following: - * #define PNG_USER_PRIVATEBUILD - * e.g. #define PNG_USER_PRIVATEBUILD "Build by MyCompany for xyz reasons." - * #define PNG_USER_DLLFNAME_POSTFIX - * e.g. // private DLL "libpng14gx.dll" - * #define PNG_USER_DLLFNAME_POSTFIX "gx" - * - * The following macros are also at your disposal if you want to complete the - * DLL VERSIONINFO structure. - * - PNG_USER_VERSIONINFO_COMMENTS - * - PNG_USER_VERSIONINFO_COMPANYNAME - * - PNG_USER_VERSIONINFO_LEGALTRADEMARKS - */ - -#ifdef __STDC__ -# ifdef SPECIALBUILD -# pragma message("PNG_LIBPNG_SPECIALBUILD (and deprecated SPECIALBUILD)\ - are now LIBPNG reserved macros. Use PNG_USER_PRIVATEBUILD instead.") +# ifndef PNG_NO_LIMITS_H +# include # endif -# ifdef PRIVATEBUILD -# pragma message("PRIVATEBUILD is deprecated.\ - Use PNG_USER_PRIVATEBUILD instead.") -# define PNG_USER_PRIVATEBUILD PRIVATEBUILD -# endif -#endif /* __STDC__ */ - -/* End of material added to libpng-1.2.8 */ - -#ifndef PNG_VERSION_INFO_ONLY - -/* This is the size of the compression buffer, and thus the size of - * an IDAT chunk. Make this whatever size you feel is best for your - * machine. One of these will be allocated per png_struct. When this - * is full, it writes the data to the disk, and does some other - * calculations. Making this an extremely small size will slow - * the library down, but you may want to experiment to determine - * where it becomes significant, if you are concerned with memory - * usage. Note that zlib allocates at least 32Kb also. For readers, - * this describes the size of the buffer available to read the data in. - * Unless this gets smaller than the size of a row (compressed), - * it should not make much difference how big this is. +/* For the memory copy APIs (i.e. the standard definitions of these), + * because this file defines png_memcpy and so on the base APIs must + * be defined here. */ - -#ifndef PNG_ZBUF_SIZE -# define PNG_ZBUF_SIZE 8192 -#endif - -/* Enable if you want a write-only libpng */ - -#ifndef PNG_NO_READ_SUPPORTED -# define PNG_READ_SUPPORTED -#endif - -/* Enable if you want a read-only libpng */ - -#ifndef PNG_NO_WRITE_SUPPORTED -# define PNG_WRITE_SUPPORTED -#endif - -/* Enabled in 1.4.0. */ -#ifdef PNG_ALLOW_BENIGN_ERRORS -# define png_benign_error png_warning -# define png_chunk_benign_error png_chunk_warning -#else -# ifndef PNG_BENIGN_ERRORS_SUPPORTED -# define png_benign_error png_error -# define png_chunk_benign_error png_chunk_error -# endif -#endif - -/* Added at libpng version 1.4.0 */ -#if !defined(PNG_NO_WARNINGS) && !defined(PNG_WARNINGS_SUPPORTED) -# define PNG_WARNINGS_SUPPORTED -#endif - -/* Added at libpng version 1.4.0 */ -#if !defined(PNG_NO_ERROR_TEXT) && !defined(PNG_ERROR_TEXT_SUPPORTED) -# define PNG_ERROR_TEXT_SUPPORTED -#endif - -/* Added at libpng version 1.4.0 */ -#if !defined(PNG_NO_CHECK_cHRM) && !defined(PNG_CHECK_cHRM_SUPPORTED) -# define PNG_CHECK_cHRM_SUPPORTED -#endif - -/* Added at libpng version 1.4.0 */ -#if !defined(PNG_NO_ALIGNED_MEMORY) && !defined(PNG_ALIGNED_MEMORY_SUPPORTED) -# define PNG_ALIGNED_MEMORY_SUPPORTED -#endif - -/* Enabled by default in 1.2.0. You can disable this if you don't need to - support PNGs that are embedded in MNG datastreams */ -#ifndef PNG_NO_MNG_FEATURES -# ifndef PNG_MNG_FEATURES_SUPPORTED -# define PNG_MNG_FEATURES_SUPPORTED -# endif -#endif - -/* Added at libpng version 1.4.0 */ -#ifndef PNG_NO_FLOATING_POINT_SUPPORTED -# ifndef PNG_FLOATING_POINT_SUPPORTED -# define PNG_FLOATING_POINT_SUPPORTED -# endif -#endif - -/* Added at libpng-1.4.0beta49 for testing (this test is no longer used - in libpng and png_calloc() is always present) - */ -#define PNG_CALLOC_SUPPORTED - -/* If you are running on a machine where you cannot allocate more - * than 64K of memory at once, uncomment this. While libpng will not - * normally need that much memory in a chunk (unless you load up a very - * large file), zlib needs to know how big of a chunk it can use, and - * libpng thus makes sure to check any memory allocation to verify it - * will fit into memory. -#define PNG_MAX_MALLOC_64K - */ -#if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K) -# define PNG_MAX_MALLOC_64K -#endif - -/* Special munging to support doing things the 'cygwin' way: - * 'Normal' png-on-win32 defines/defaults: - * PNG_BUILD_DLL -- building dll - * PNG_USE_DLL -- building an application, linking to dll - * (no define) -- building static library, or building an - * application and linking to the static lib - * 'Cygwin' defines/defaults: - * PNG_BUILD_DLL -- (ignored) building the dll - * (no define) -- (ignored) building an application, linking to the dll - * PNG_STATIC -- (ignored) building the static lib, or building an - * application that links to the static lib. - * ALL_STATIC -- (ignored) building various static libs, or building an - * application that links to the static libs. - * Thus, - * a cygwin user should define either PNG_BUILD_DLL or PNG_STATIC, and - * this bit of #ifdefs will define the 'correct' config variables based on - * that. If a cygwin user *wants* to define 'PNG_USE_DLL' that's okay, but - * unnecessary. - * - * Also, the precedence order is: - * ALL_STATIC (since we can't #undef something outside our namespace) - * PNG_BUILD_DLL - * PNG_STATIC - * (nothing) == PNG_USE_DLL - * - * CYGWIN (2002-01-20): The preceding is now obsolete. With the advent - * of auto-import in binutils, we no longer need to worry about - * __declspec(dllexport) / __declspec(dllimport) and friends. Therefore, - * we don't need to worry about PNG_STATIC or ALL_STATIC when it comes - * to __declspec() stuff. However, we DO need to worry about - * PNG_BUILD_DLL and PNG_STATIC because those change some defaults - * such as CONSOLE_IO. - */ -#ifdef __CYGWIN__ -# ifdef ALL_STATIC -# ifdef PNG_BUILD_DLL -# undef PNG_BUILD_DLL -# endif -# ifdef PNG_USE_DLL -# undef PNG_USE_DLL -# endif -# ifdef PNG_DLL -# undef PNG_DLL -# endif -# ifndef PNG_STATIC -# define PNG_STATIC -# endif +# ifdef BSD +# include # else -# ifdef PNG_BUILD_DLL -# ifdef PNG_STATIC -# undef PNG_STATIC -# endif -# ifdef PNG_USE_DLL -# undef PNG_USE_DLL -# endif -# ifndef PNG_DLL -# define PNG_DLL -# endif -# else -# ifdef PNG_STATIC -# ifdef PNG_USE_DLL -# undef PNG_USE_DLL -# endif -# ifdef PNG_DLL -# undef PNG_DLL -# endif -# else -# ifndef PNG_USE_DLL -# define PNG_USE_DLL -# endif -# ifndef PNG_DLL -# define PNG_DLL -# endif -# endif -# endif +# include # endif -#endif -/* This protects us against compilers that run on a windowing system - * and thus don't have or would rather us not use the stdio types: - * stdin, stdout, and stderr. The only one currently used is stderr - * in png_error() and png_warning(). #defining PNG_NO_CONSOLE_IO will - * prevent these from being compiled and used. #defining PNG_NO_STDIO - * will also prevent these, plus will prevent the entire set of stdio - * macros and functions (FILE *, printf, etc.) from being compiled and used, - * unless (PNG_DEBUG > 0) has been #defined. - * - * #define PNG_NO_CONSOLE_IO - * #define PNG_NO_STDIO +/* For png_FILE_p - this provides the standard definition of a + * FILE */ - -#ifdef _WIN32_WCE -# define PNG_NO_CONSOLE_IO -# define PNG_NO_STDIO -# define PNG_NO_TIME_RFC1123 -# ifdef PNG_DEBUG -# undef PNG_DEBUG -# endif -#endif - -#if !defined(PNG_NO_STDIO) && !defined(PNG_STDIO_SUPPORTED) -# define PNG_STDIO_SUPPORTED -#endif - -#ifdef PNG_BUILD_DLL -# if !defined(PNG_CONSOLE_IO_SUPPORTED) && !defined(PNG_NO_CONSOLE_IO) -# define PNG_NO_CONSOLE_IO -# endif -#endif - -# ifdef PNG_NO_STDIO -# ifndef PNG_NO_CONSOLE_IO -# define PNG_NO_CONSOLE_IO -# endif -# ifdef PNG_DEBUG -# if (PNG_DEBUG > 0) -# include -# endif -# endif -# else +# ifdef PNG_STDIO_SUPPORTED # include # endif - -#if !(defined PNG_NO_CONSOLE_IO) && !defined(PNG_CONSOLE_IO_SUPPORTED) -# define PNG_CONSOLE_IO_SUPPORTED #endif -/* This macro protects us against machines that don't have function +/* This controls optimization of the reading of 16 and 32 bit values + * from PNG files. It can be set on a per-app-file basis - it + * just changes whether a macro is used to the function is called. + * The library builder sets the default, if read functions are not + * built into the library the macro implementation is forced on. + */ +#ifndef PNG_READ_INT_FUNCTIONS_SUPPORTED +# define PNG_USE_READ_MACROS +#endif +#if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS) +# if PNG_DEFAULT_READ_MACROS +# define PNG_USE_READ_MACROS +# endif +#endif + +/* COMPILER SPECIFIC OPTIONS. + * + * These options are provided so that a variety of difficult compilers + * can be used. Some are fixed at build time (e.g. PNG_API_RULE + * below) but still have compiler specific implementations, others + * may be changed on a per-file basis when compiling against libpng. + */ + +/* The PNGARG macro protects us against machines that don't have function * prototypes (ie K&R style headers). If your compiler does not handle * function prototypes, define this macro and use the included ansi2knr. * I've always been able to use _NO_PROTO as the indicator, but you may @@ -314,142 +81,399 @@ */ #ifndef PNGARG -#ifdef OF /* zlib prototype munger */ -# define PNGARG(arglist) OF(arglist) -#else +# ifdef OF /* zlib prototype munger */ +# define PNGARG(arglist) OF(arglist) +# else -#ifdef _NO_PROTO -# define PNGARG(arglist) () -#else -# define PNGARG(arglist) arglist -#endif /* _NO_PROTO */ +# ifdef _NO_PROTO +# define PNGARG(arglist) () +# else +# define PNGARG(arglist) arglist +# endif /* _NO_PROTO */ -#endif /* OF */ +# endif /* OF */ #endif /* PNGARG */ -/* Try to determine if we are compiling on a Mac. Note that testing for - * just __MWERKS__ is not good enough, because the Codewarrior is now used - * on non-Mac platforms. +/* Function calling conventions. + * ============================= + * Normally it is not necessary to specify to the compiler how to call + * a function - it just does it - however on x86 systems derived from + * Microsoft and Borland C compilers ('IBM PC', 'DOS', 'Windows' systems + * and some others) there are multiple ways to call a function and the + * default can be changed on the compiler command line. For this reason + * libpng specifies the calling convention of every exported function and + * every function called via a user supplied function pointer. This is + * done in this file by defining the following macros: + * + * PNGAPI Calling convention for exported functions. + * PNGCBAPI Calling convention for user provided (callback) functions. + * PNGCAPI Calling convention used by the ANSI-C library (required + * for longjmp callbacks and sometimes used internally to + * specify the calling convention for zlib). + * + * These macros should never be overridden. If it is necessary to + * change calling convention in a private build this can be done + * by setting PNG_API_RULE (which defaults to 0) to one of the values + * below to select the correct 'API' variants. + * + * PNG_API_RULE=0 Use PNGCAPI - the 'C' calling convention - throughout. + * This is correct in every known environment. + * PNG_API_RULE=1 Use the operating system convention for PNGAPI and + * the 'C' calling convention (from PNGCAPI) for + * callbacks (PNGCBAPI). This is no longer required + * in any known environment - if it has to be used + * please post an explanation of the problem to the + * libpng mailing list. + * + * These cases only differ if the operating system does not use the C + * calling convention, at present this just means the above cases + * (x86 DOS/Windows sytems) and, even then, this does not apply to + * Cygwin running on those systems. + * + * Note that the value must be defined in pnglibconf.h so that what + * the application uses to call the library matches the conventions + * set when building the library. */ -#ifndef MACOS -# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \ - defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC) -# define MACOS + +/* Symbol export + * ============= + * When building a shared library it is almost always necessary to tell + * the compiler which symbols to export. The png.h macro 'PNG_EXPORT' + * is used to mark the symbols. On some systems these symbols can be + * extracted at link time and need no special processing by the compiler, + * on other systems the symbols are flagged by the compiler and just + * the declaration requires a special tag applied (unfortunately) in a + * compiler dependent way. Some systems can do either. + * + * A small number of older systems also require a symbol from a DLL to + * be flagged to the program that calls it. This is a problem because + * we do not know in the header file included by application code that + * the symbol will come from a shared library, as opposed to a statically + * linked one. For this reason the application must tell us by setting + * the magic flag PNG_USE_DLL to turn on the special processing before + * it includes png.h. + * + * Four additional macros are used to make this happen: + * + * PNG_IMPEXP The magic (if any) to cause a symbol to be exported from + * the build or imported if PNG_USE_DLL is set - compiler + * and system specific. + * + * PNG_EXPORT_TYPE(type) A macro that pre or appends PNG_IMPEXP to + * 'type', compiler specific. + * + * PNG_DLL_EXPORT Set to the magic to use during a libpng build to + * make a symbol exported from the DLL. + * + * PNG_DLL_IMPORT Set to the magic to force the libpng symbols to come + * from a DLL - used to define PNG_IMPEXP when + * PNG_USE_DLL is set. + */ + +/* System specific discovery. + * ========================== + * This code is used at build time to find PNG_IMPEXP, the API settings + * and PNG_EXPORT_TYPE(), it may also set a macro to indicate the DLL + * import processing is possible. On Windows/x86 systems it also sets + * compiler-specific macros to the values required to change the calling + * conventions of the various functions. + */ +#if ( defined(_Windows) || defined(_WINDOWS) || defined(WIN32) ||\ + defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) ) &&\ + ( defined(_X86_) || defined(_X64_) || defined(_M_IX86) ||\ + defined(_M_X64) || defined(_M_IA64) ) + /* Windows system (DOS doesn't support DLLs) running on x86/x64. Includes + * builds under Cygwin or MinGW. Also includes Watcom builds but these need + * special treatment because they are not compatible with GCC or Visual C + * because of different calling conventions. + */ +# if PNG_API_RULE == 2 + /* If this line results in an error, either because __watcall is not + * understood or because of a redefine just below you cannot use *this* + * build of the library with the compiler you are using. *This* build was + * build using Watcom and applications must also be built using Watcom! + */ +# define PNGCAPI __watcall +# endif + +# if defined(__GNUC__) || (defined (_MSC_VER) && (_MSC_VER >= 800)) +# define PNGCAPI __cdecl +# if PNG_API_RULE == 1 +# define PNGAPI __stdcall +# endif +# else + /* An older compiler, or one not detected (erroneously) above, + * if necessary override on the command line to get the correct + * variants for the compiler. + */ +# ifndef PNGCAPI +# define PNGCAPI _cdecl +# endif +# if PNG_API_RULE == 1 && !defined(PNGAPI) +# define PNGAPI _stdcall +# endif +# endif /* compiler/api */ + /* NOTE: PNGCBAPI always defaults to PNGCAPI. */ + +# if defined(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD) + ERROR: PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed +# endif + +# if (defined(_MSC_VER) && _MSC_VER < 800) ||\ + (defined(__BORLANDC__) && __BORLANDC__ < 0x500) + /* older Borland and MSC + * compilers used '__export' and required this to be after + * the type. + */ +# ifndef PNG_EXPORT_TYPE +# define PNG_EXPORT_TYPE(type) type PNG_IMPEXP +# endif +# define PNG_DLL_EXPORT __export +# else /* newer compiler */ +# define PNG_DLL_EXPORT __declspec(dllexport) +# ifndef PNG_DLL_IMPORT +# define PNG_DLL_IMPORT __declspec(dllimport) +# endif +# endif /* compiler */ + +#else /* !Windows/x86 */ +# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) +# define PNGAPI _System +# else /* !Windows/x86 && !OS/2 */ + /* Use the defaults, or define PNG*API on the command line (but + * this will have to be done for every compile!) + */ +# endif /* other system, !OS/2 */ +#endif /* !Windows/x86 */ + +/* Now do all the defaulting . */ +#ifndef PNGCAPI +# define PNGCAPI +#endif +#ifndef PNGCBAPI +# define PNGCBAPI PNGCAPI +#endif +#ifndef PNGAPI +# define PNGAPI PNGCAPI +#endif + +/* The default for PNG_IMPEXP depends on whether the library is + * being built or used. + */ +#ifndef PNG_IMPEXP +# ifdef PNGLIB_BUILD + /* Building the library */ +# if (defined(DLL_EXPORT)/*from libtool*/ ||\ + defined(_WINDLL) || defined(_DLL) || defined(__DLL__) ||\ + defined(_USRDLL) ||\ + defined(PNG_BUILD_DLL)) && defined(PNG_DLL_EXPORT) + /* Building a DLL. */ +# define PNG_IMPEXP PNG_DLL_EXPORT +# endif /* DLL */ +# else + /* Using the library */ +# if defined(PNG_USE_DLL) && defined(PNG_DLL_IMPORT) + /* This forces use of a DLL, disallowing static linking */ +# define PNG_IMPEXP PNG_DLL_IMPORT +# endif +# endif + +# ifndef PNG_IMPEXP +# define PNG_IMPEXP # endif #endif -/* Enough people need this for various reasons to include it here */ -#if !defined(MACOS) && !defined(RISCOS) -# include +/* In 1.5.2 the definition of PNG_FUNCTION has been changed to always treat + * 'attributes' as a storage class - the attributes go at the start of the + * function definition, and attributes are always appended regardless of the + * compiler. This considerably simplifies these macros but may cause problems + * if any compilers both need function attributes and fail to handle them as + * a storage class (this is unlikely.) + */ +#ifndef PNG_FUNCTION +# define PNG_FUNCTION(type, name, args, attributes) attributes type name args #endif -/* PNG_SETJMP_NOT_SUPPORTED and PNG_NO_SETJMP_SUPPORTED are deprecated. */ -#if !defined(PNG_NO_SETJMP) && \ - !defined(PNG_SETJMP_NOT_SUPPORTED) && !defined(PNG_NO_SETJMP_SUPPORTED) -# define PNG_SETJMP_SUPPORTED +#ifndef PNG_EXPORT_TYPE +# define PNG_EXPORT_TYPE(type) PNG_IMPEXP type #endif -#ifdef PNG_SETJMP_SUPPORTED -/* This is an attempt to force a single setjmp behaviour on Linux. If - * the X config stuff didn't define _BSD_SOURCE we wouldn't need this. + /* The ordinal value is only relevant when preprocessing png.h for symbol + * table entries, so we discard it here. See the .dfn files in the + * scripts directory. + */ +#ifndef PNG_EXPORTA + +# define PNG_EXPORTA(ordinal, type, name, args, attributes)\ + PNG_FUNCTION(PNG_EXPORT_TYPE(type),(PNGAPI name),PNGARG(args), \ + extern attributes) +#endif + +/* ANSI-C (C90) does not permit a macro to be invoked with an empty argument, + * so make something non-empty to satisfy the requirement: + */ +#define PNG_EMPTY /*empty list*/ + +#define PNG_EXPORT(ordinal, type, name, args)\ + PNG_EXPORTA(ordinal, type, name, args, PNG_EMPTY) + +/* Use PNG_REMOVED to comment out a removed interface. */ +#ifndef PNG_REMOVED +# define PNG_REMOVED(ordinal, type, name, args, attributes) +#endif + +#ifndef PNG_CALLBACK +# define PNG_CALLBACK(type, name, args) type (PNGCBAPI name) PNGARG(args) +#endif + +/* Support for compiler specific function attributes. These are used + * so that where compiler support is available incorrect use of API + * functions in png.h will generate compiler warnings. * - * You can bypass this test if you know that your application uses exactly - * the same setjmp.h that was included when libpng was built. Only define - * PNG_SKIP_SETJMP_CHECK while building your application, prior to the - * application's '#include "png.h"'. Don't define PNG_SKIP_SETJMP_CHECK - * while building a separate libpng library for general use. + * Added at libpng-1.2.41. */ -# ifndef PNG_SKIP_SETJMP_CHECK -# ifdef __linux__ -# ifdef _BSD_SOURCE -# define PNG_SAVE_BSD_SOURCE -# undef _BSD_SOURCE -# endif -# ifdef _SETJMP_H - /* If you encounter a compiler error here, see the explanation - * near the end of INSTALL. - */ - __pngconf.h__ in libpng already includes setjmp.h; - __dont__ include it again.; -# endif -# endif /* __linux__ */ -# endif /* PNG_SKIP_SETJMP_CHECK */ +#ifndef PNG_NO_PEDANTIC_WARNINGS +# ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED +# define PNG_PEDANTIC_WARNINGS_SUPPORTED +# endif +#endif - /* Include setjmp.h for error handling */ -# include - -# ifdef __linux__ -# ifdef PNG_SAVE_BSD_SOURCE -# ifdef _BSD_SOURCE -# undef _BSD_SOURCE -# endif -# define _BSD_SOURCE -# undef PNG_SAVE_BSD_SOURCE +#ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED + /* Support for compiler specific function attributes. These are used + * so that where compiler support is available incorrect use of API + * functions in png.h will generate compiler warnings. Added at libpng + * version 1.2.41. + */ +# if defined(__GNUC__) +# ifndef PNG_USE_RESULT +# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) +# endif +# ifndef PNG_NORETURN +# define PNG_NORETURN __attribute__((__noreturn__)) +# endif +# ifndef PNG_PTR_NORETURN + /* It's not enough to have the compiler be the correct compiler at + * this point - it's necessary for the library (which defines + * the type of the library longjmp) to also be the GNU library. + * This is because many systems use the GNU compiler with a + * non-GNU libc implementation. Min/GW headers are also compatible + * with GCC as well as uclibc, so it seems best to exclude known + * problem libcs here rather than just including known libcs. + * + * NOTE: this relies on the only use of PNG_PTR_NORETURN being with + * the system longjmp. If the same type is used elsewhere then this + * will need to be changed. + */ +# if !defined(__CYGWIN__) +# define PNG_PTR_NORETURN __attribute__((__noreturn__)) +# endif +# endif +# ifndef PNG_ALLOCATED +# define PNG_ALLOCATED __attribute__((__malloc__)) # endif -# endif /* __linux__ */ -#endif /* PNG_SETJMP_SUPPORTED */ -#ifdef BSD -# include -#else -# include -#endif + /* This specifically protects structure members that should only be + * accessed from within the library, therefore should be empty during + * a library build. + */ +# ifndef PNGLIB_BUILD +# ifndef PNG_DEPRECATED +# define PNG_DEPRECATED __attribute__((__deprecated__)) +# endif +# ifndef PNG_DEPSTRUCT +# define PNG_DEPSTRUCT __attribute__((__deprecated__)) +# endif +# ifndef PNG_PRIVATE +# if 0 /* Doesn't work so we use deprecated instead*/ +# define PNG_PRIVATE \ + __attribute__((warning("This function is not exported by libpng."))) +# else +# define PNG_PRIVATE \ + __attribute__((__deprecated__)) +# endif +# endif +# endif /* PNGLIB_BUILD */ +# endif /* __GNUC__ */ -/* Other defines for things like memory and the like can go here. */ +# if defined(_MSC_VER) && (_MSC_VER >= 1300) +# ifndef PNG_USE_RESULT +# define PNG_USE_RESULT /* not supported */ +# endif +# ifndef PNG_NORETURN +# define PNG_NORETURN __declspec(noreturn) +# endif +# ifndef PNG_PTR_NORETURN +# define PNG_PTR_NORETURN /* not supported */ +# endif +# ifndef PNG_ALLOCATED +# define PNG_ALLOCATED __declspec(restrict) +# endif -/* This controls how fine the quantizing gets. As this allocates - * a largish chunk of memory (32K), those who are not as concerned - * with quantizing quality can decrease some or all of these. - */ + /* This specifically protects structure members that should only be + * accessed from within the library, therefore should be empty during + * a library build. + */ +# ifndef PNGLIB_BUILD +# ifndef PNG_DEPRECATED +# define PNG_DEPRECATED __declspec(deprecated) +# endif +# ifndef PNG_DEPSTRUCT +# define PNG_DEPSTRUCT __declspec(deprecated) +# endif +# ifndef PNG_PRIVATE +# define PNG_PRIVATE __declspec(deprecated) +# endif +# endif /* PNGLIB_BUILD */ +# endif /* _MSC_VER */ +#endif /* PNG_PEDANTIC_WARNINGS */ -/* Prior to libpng-1.4.2, these were PNG_DITHER_*_BITS - * These migration aids will be removed from libpng-1.5.0. - */ -#ifdef PNG_DITHER_RED_BITS -# define PNG_QUANTIZE_RED_BITS PNG_DITHER_RED_BITS +#ifndef PNG_DEPRECATED +# define PNG_DEPRECATED /* Use of this function is deprecated */ #endif -#ifdef PNG_DITHER_GREEN_BITS -# define PNG_QUANTIZE_GREEN_BITS PNG_DITHER_GREEN_BITS +#ifndef PNG_USE_RESULT +# define PNG_USE_RESULT /* The result of this function must be checked */ #endif -#ifdef PNG_DITHER_BLUE_BITS -# define PNG_QUANTIZE_BLUE_BITS PNG_DITHER_BLUE_BITS +#ifndef PNG_NORETURN +# define PNG_NORETURN /* This function does not return */ #endif - -#ifndef PNG_QUANTIZE_RED_BITS -# define PNG_QUANTIZE_RED_BITS 5 +#ifndef PNG_PTR_NORETURN +# define PNG_PTR_NORETURN /* This function does not return */ #endif -#ifndef PNG_QUANTIZE_GREEN_BITS -# define PNG_QUANTIZE_GREEN_BITS 5 +#ifndef PNG_ALLOCATED +# define PNG_ALLOCATED /* The result of the function is new memory */ #endif -#ifndef PNG_QUANTIZE_BLUE_BITS -# define PNG_QUANTIZE_BLUE_BITS 5 +#ifndef PNG_DEPSTRUCT +# define PNG_DEPSTRUCT /* Access to this struct member is deprecated */ #endif - -/* This controls how fine the gamma correction becomes when you - * are only interested in 8 bits anyway. Increasing this value - * results in more memory being used, and more pow() functions - * being called to fill in the gamma tables. Don't set this value - * less then 8, and even that may not work (I haven't tested it). - */ - -#ifndef PNG_MAX_GAMMA_8 -# define PNG_MAX_GAMMA_8 11 +#ifndef PNG_PRIVATE +# define PNG_PRIVATE /* This is a private libpng function */ #endif - -/* This controls how much a difference in gamma we can tolerate before - * we actually start doing gamma conversion. - */ -#ifndef PNG_GAMMA_THRESHOLD -# define PNG_GAMMA_THRESHOLD 0.05 +#ifndef PNG_FP_EXPORT /* A floating point API. */ +# ifdef PNG_FLOATING_POINT_SUPPORTED +# define PNG_FP_EXPORT(ordinal, type, name, args)\ + PNG_EXPORT(ordinal, type, name, args) +# else /* No floating point APIs */ +# define PNG_FP_EXPORT(ordinal, type, name, args) +# endif +#endif +#ifndef PNG_FIXED_EXPORT /* A fixed point API. */ +# ifdef PNG_FIXED_POINT_SUPPORTED +# define PNG_FIXED_EXPORT(ordinal, type, name, args)\ + PNG_EXPORT(ordinal, type, name, args) +# else /* No fixed point APIs */ +# define PNG_FIXED_EXPORT(ordinal, type, name, args) +# endif #endif /* The following uses const char * instead of char * for error * and warning message functions, so some compilers won't complain. - * If you do not want to use const, define PNG_NO_CONST. + * If you do not want to use const, define PNG_NO_CONST here. + * + * This should not change how the APIs are called, so it can be done + * on a per-file basis in the application. */ - #ifndef PNG_CONST # ifndef PNG_NO_CONST # define PNG_CONST const @@ -458,648 +482,6 @@ # endif #endif -/* The following defines give you the ability to remove code from the - * library that you will not be using. I wish I could figure out how to - * automate this, but I can't do that without making it seriously hard - * on the users. So if you are not using an ability, change the #define - * to an #undef, or pass in PNG_NO_feature and that part of the library - * will not be compiled. - - * If your linker can't find a function, you may want to make sure the - * ability is defined here. Some of these depend upon some others being - * defined. I haven't figured out all the interactions here, so you may - * have to experiment awhile to get everything to compile. If you are - * creating or using a shared library, you probably shouldn't touch this, - * as it will affect the size of the structures, and this will cause bad - * things to happen if the library and/or application ever change. - */ - -/* Any features you will not be using can be undef'ed here */ - -/* GR-P, 0.96a: Set "*TRANSFORMS_SUPPORTED as default but allow user - * to turn it off with PNG_NO_READ|WRITE_TRANSFORMS on the compile line, - * then pick and choose which ones to define without having to edit this - * file. It is safe to use the PNG_NO_READ|WRITE_TRANSFORMS - * if you only want to have a png-compliant reader/writer but don't need - * any of the extra transformations. This saves about 80 kbytes in a - * typical installation of the library. (PNG_NO_* form added in version - * 1.0.1c, for consistency; PNG_*_TRANSFORMS_NOT_SUPPORTED deprecated in - * 1.4.0) - */ - -/* Ignore attempt to turn off both floating and fixed point support */ -#if !defined(PNG_FLOATING_POINT_SUPPORTED) || \ - !defined(PNG_NO_FIXED_POINT_SUPPORTED) -# define PNG_FIXED_POINT_SUPPORTED -#endif - -#ifdef PNG_READ_SUPPORTED - -/* PNG_READ_TRANSFORMS_NOT_SUPPORTED is deprecated. */ -#if !defined(PNG_READ_TRANSFORMS_NOT_SUPPORTED) && \ - !defined(PNG_NO_READ_TRANSFORMS) -# define PNG_READ_TRANSFORMS_SUPPORTED -#endif - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -# ifndef PNG_NO_READ_EXPAND -# define PNG_READ_EXPAND_SUPPORTED -# endif -# ifndef PNG_NO_READ_SHIFT -# define PNG_READ_SHIFT_SUPPORTED -# endif -# ifndef PNG_NO_READ_PACK -# define PNG_READ_PACK_SUPPORTED -# endif -# ifndef PNG_NO_READ_BGR -# define PNG_READ_BGR_SUPPORTED -# endif -# ifndef PNG_NO_READ_SWAP -# define PNG_READ_SWAP_SUPPORTED -# endif -# ifndef PNG_NO_READ_PACKSWAP -# define PNG_READ_PACKSWAP_SUPPORTED -# endif -# ifndef PNG_NO_READ_INVERT -# define PNG_READ_INVERT_SUPPORTED -# endif -# ifndef PNG_NO_READ_QUANTIZE - /* Prior to libpng-1.4.0 this was PNG_READ_DITHER_SUPPORTED */ -# ifndef PNG_NO_READ_DITHER /* This migration aid will be removed */ -# define PNG_READ_QUANTIZE_SUPPORTED -# endif -# endif -# ifndef PNG_NO_READ_BACKGROUND -# define PNG_READ_BACKGROUND_SUPPORTED -# endif -# ifndef PNG_NO_READ_16_TO_8 -# define PNG_READ_16_TO_8_SUPPORTED -# endif -# ifndef PNG_NO_READ_FILLER -# define PNG_READ_FILLER_SUPPORTED -# endif -# ifndef PNG_NO_READ_GAMMA -# define PNG_READ_GAMMA_SUPPORTED -# endif -# ifndef PNG_NO_READ_GRAY_TO_RGB -# define PNG_READ_GRAY_TO_RGB_SUPPORTED -# endif -# ifndef PNG_NO_READ_SWAP_ALPHA -# define PNG_READ_SWAP_ALPHA_SUPPORTED -# endif -# ifndef PNG_NO_READ_INVERT_ALPHA -# define PNG_READ_INVERT_ALPHA_SUPPORTED -# endif -# ifndef PNG_NO_READ_STRIP_ALPHA -# define PNG_READ_STRIP_ALPHA_SUPPORTED -# endif -# ifndef PNG_NO_READ_USER_TRANSFORM -# define PNG_READ_USER_TRANSFORM_SUPPORTED -# endif -# ifndef PNG_NO_READ_RGB_TO_GRAY -# define PNG_READ_RGB_TO_GRAY_SUPPORTED -# endif -#endif /* PNG_READ_TRANSFORMS_SUPPORTED */ - -/* PNG_PROGRESSIVE_READ_NOT_SUPPORTED is deprecated. */ -#if !defined(PNG_NO_PROGRESSIVE_READ) && \ - !defined(PNG_PROGRESSIVE_READ_NOT_SUPPORTED) /* if you don't do progressive */ -# define PNG_PROGRESSIVE_READ_SUPPORTED /* reading. This is not talking */ -#endif /* about interlacing capability! You'll */ - /* still have interlacing unless you change the following define: */ - -#define PNG_READ_INTERLACING_SUPPORTED /* required for PNG-compliant decoders */ - -/* PNG_NO_SEQUENTIAL_READ_SUPPORTED is deprecated. */ -#if !defined(PNG_NO_SEQUENTIAL_READ) && \ - !defined(PNG_SEQUENTIAL_READ_SUPPORTED) && \ - !defined(PNG_NO_SEQUENTIAL_READ_SUPPORTED) -# define PNG_SEQUENTIAL_READ_SUPPORTED -#endif - -#ifndef PNG_NO_READ_COMPOSITE_NODIV -# ifndef PNG_NO_READ_COMPOSITED_NODIV /* libpng-1.0.x misspelling */ -# define PNG_READ_COMPOSITE_NODIV_SUPPORTED /* well tested on Intel, SGI */ -# endif -#endif - -#if !defined(PNG_NO_GET_INT_32) || defined(PNG_READ_oFFS_SUPPORTED) || \ - defined(PNG_READ_pCAL_SUPPORTED) -# ifndef PNG_GET_INT_32_SUPPORTED -# define PNG_GET_INT_32_SUPPORTED -# endif -#endif - -#endif /* PNG_READ_SUPPORTED */ - -#ifdef PNG_WRITE_SUPPORTED - -/* PNG_WRITE_TRANSFORMS_NOT_SUPPORTED is deprecated. */ -#if !defined(PNG_WRITE_TRANSFORMS_NOT_SUPPORTED) && \ - !defined(PNG_NO_WRITE_TRANSFORMS) -# define PNG_WRITE_TRANSFORMS_SUPPORTED -#endif - -#ifdef PNG_WRITE_TRANSFORMS_SUPPORTED -# ifndef PNG_NO_WRITE_SHIFT -# define PNG_WRITE_SHIFT_SUPPORTED -# endif -# ifndef PNG_NO_WRITE_PACK -# define PNG_WRITE_PACK_SUPPORTED -# endif -# ifndef PNG_NO_WRITE_BGR -# define PNG_WRITE_BGR_SUPPORTED -# endif -# ifndef PNG_NO_WRITE_SWAP -# define PNG_WRITE_SWAP_SUPPORTED -# endif -# ifndef PNG_NO_WRITE_PACKSWAP -# define PNG_WRITE_PACKSWAP_SUPPORTED -# endif -# ifndef PNG_NO_WRITE_INVERT -# define PNG_WRITE_INVERT_SUPPORTED -# endif -# ifndef PNG_NO_WRITE_FILLER -# define PNG_WRITE_FILLER_SUPPORTED /* same as WRITE_STRIP_ALPHA */ -# endif -# ifndef PNG_NO_WRITE_SWAP_ALPHA -# define PNG_WRITE_SWAP_ALPHA_SUPPORTED -# endif -# ifndef PNG_NO_WRITE_INVERT_ALPHA -# define PNG_WRITE_INVERT_ALPHA_SUPPORTED -# endif -# ifndef PNG_NO_WRITE_USER_TRANSFORM -# define PNG_WRITE_USER_TRANSFORM_SUPPORTED -# endif -#endif /* PNG_WRITE_TRANSFORMS_SUPPORTED */ - -#if !defined(PNG_NO_WRITE_INTERLACING_SUPPORTED) && \ - !defined(PNG_WRITE_INTERLACING_SUPPORTED) - /* This is not required for PNG-compliant encoders, but can cause - * trouble if left undefined - */ -# define PNG_WRITE_INTERLACING_SUPPORTED -#endif - -#if !defined(PNG_NO_WRITE_WEIGHTED_FILTER) && \ - !defined(PNG_WRITE_WEIGHTED_FILTER) && \ - defined(PNG_FLOATING_POINT_SUPPORTED) -# define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED -#endif - -#ifndef PNG_NO_WRITE_FLUSH -# define PNG_WRITE_FLUSH_SUPPORTED -#endif - -#if !defined(PNG_NO_SAVE_INT_32) || defined(PNG_WRITE_oFFS_SUPPORTED) || \ - defined(PNG_WRITE_pCAL_SUPPORTED) -# ifndef PNG_SAVE_INT_32_SUPPORTED -# define PNG_SAVE_INT_32_SUPPORTED -# endif -#endif - -#endif /* PNG_WRITE_SUPPORTED */ - -#define PNG_NO_ERROR_NUMBERS - -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ - defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) -# ifndef PNG_NO_USER_TRANSFORM_PTR -# define PNG_USER_TRANSFORM_PTR_SUPPORTED -# endif -#endif - -#if defined(PNG_STDIO_SUPPORTED) && !defined(PNG_TIME_RFC1123_SUPPORTED) -# define PNG_TIME_RFC1123_SUPPORTED -#endif - -/* This adds extra functions in pngget.c for accessing data from the - * info pointer (added in version 0.99) - * png_get_image_width() - * png_get_image_height() - * png_get_bit_depth() - * png_get_color_type() - * png_get_compression_type() - * png_get_filter_type() - * png_get_interlace_type() - * png_get_pixel_aspect_ratio() - * png_get_pixels_per_meter() - * png_get_x_offset_pixels() - * png_get_y_offset_pixels() - * png_get_x_offset_microns() - * png_get_y_offset_microns() - */ -#if !defined(PNG_NO_EASY_ACCESS) && !defined(PNG_EASY_ACCESS_SUPPORTED) -# define PNG_EASY_ACCESS_SUPPORTED -#endif - -/* Added at libpng-1.2.0 */ -#if !defined(PNG_NO_USER_MEM) && !defined(PNG_USER_MEM_SUPPORTED) -# define PNG_USER_MEM_SUPPORTED -#endif - -/* Added at libpng-1.2.6 */ -#ifndef PNG_NO_SET_USER_LIMITS -# ifndef PNG_SET_USER_LIMITS_SUPPORTED -# define PNG_SET_USER_LIMITS_SUPPORTED -# endif - /* Feature added at libpng-1.4.0, this flag added at 1.4.1 */ -# ifndef PNG_SET_CHUNK_CACHE_LIMIT_SUPPORTED -# define PNG_SET_CHUNK_CACHE_LIMIT_SUPPORTED -# endif - /* Feature added at libpng-1.4.1, this flag added at 1.4.1 */ -# ifndef PNG_SET_CHUNK_MALLOC_LIMIT_SUPPORTED -# define PNG_SET_CHUNK_MALLOC_LIMIT_SUPPORTED -# endif -#endif - -/* Added at libpng-1.2.43 */ -#ifndef PNG_USER_LIMITS_SUPPORTED -# ifndef PNG_NO_USER_LIMITS -# define PNG_USER_LIMITS_SUPPORTED -# endif -#endif - -/* Added at libpng-1.0.16 and 1.2.6. To accept all valid PNGs no matter - * how large, set these two limits to 0x7fffffffL - */ -#ifndef PNG_USER_WIDTH_MAX -# define PNG_USER_WIDTH_MAX 1000000L -#endif -#ifndef PNG_USER_HEIGHT_MAX -# define PNG_USER_HEIGHT_MAX 1000000L -#endif - -/* Added at libpng-1.2.43. To accept all valid PNGs no matter - * how large, set these two limits to 0. - */ -#ifndef PNG_USER_CHUNK_CACHE_MAX -# define PNG_USER_CHUNK_CACHE_MAX 0 -#endif - -/* Added at libpng-1.2.43 */ -#ifndef PNG_USER_CHUNK_MALLOC_MAX -# define PNG_USER_CHUNK_MALLOC_MAX 0 -#endif - -/* Added at libpng-1.4.0 */ -#if !defined(PNG_NO_IO_STATE) && !defined(PNG_IO_STATE_SUPPORTED) -# define PNG_IO_STATE_SUPPORTED -#endif - -#ifndef PNG_LITERAL_SHARP -# define PNG_LITERAL_SHARP 0x23 -#endif -#ifndef PNG_LITERAL_LEFT_SQUARE_BRACKET -# define PNG_LITERAL_LEFT_SQUARE_BRACKET 0x5b -#endif -#ifndef PNG_LITERAL_RIGHT_SQUARE_BRACKET -# define PNG_LITERAL_RIGHT_SQUARE_BRACKET 0x5d -#endif -#ifndef PNG_STRING_NEWLINE -#define PNG_STRING_NEWLINE "\n" -#endif - -/* These are currently experimental features, define them if you want */ - -/* Very little testing */ -/* -#ifdef PNG_READ_SUPPORTED -# ifndef PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED -# define PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED -# endif -#endif -*/ - -/* This is only for PowerPC big-endian and 680x0 systems */ -/* some testing */ -/* -#ifndef PNG_READ_BIG_ENDIAN_SUPPORTED -# define PNG_READ_BIG_ENDIAN_SUPPORTED -#endif -*/ - -#if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS) -# define PNG_USE_READ_MACROS -#endif - -/* Buggy compilers (e.g., gcc 2.7.2.2) need PNG_NO_POINTER_INDEXING */ - -#if !defined(PNG_NO_POINTER_INDEXING) && \ - !defined(PNG_POINTER_INDEXING_SUPPORTED) -# define PNG_POINTER_INDEXING_SUPPORTED -#endif - - -/* Any chunks you are not interested in, you can undef here. The - * ones that allocate memory may be expecially important (hIST, - * tEXt, zTXt, tRNS, pCAL). Others will just save time and make png_info - * a bit smaller. - */ - -/* The size of the png_text structure changed in libpng-1.0.6 when - * iTXt support was added. iTXt support was turned off by default through - * libpng-1.2.x, to support old apps that malloc the png_text structure - * instead of calling png_set_text() and letting libpng malloc it. It - * was turned on by default in libpng-1.4.0. - */ - -/* PNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED is deprecated. */ -#if defined(PNG_READ_SUPPORTED) && \ - !defined(PNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED) && \ - !defined(PNG_NO_READ_ANCILLARY_CHUNKS) -# define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED -#endif - -/* PNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED is deprecated. */ -#if defined(PNG_WRITE_SUPPORTED) && \ - !defined(PNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED) && \ - !defined(PNG_NO_WRITE_ANCILLARY_CHUNKS) -# define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED -#endif - -#ifdef PNG_READ_ANCILLARY_CHUNKS_SUPPORTED - -#ifdef PNG_NO_READ_TEXT -# define PNG_NO_READ_iTXt -# define PNG_NO_READ_tEXt -# define PNG_NO_READ_zTXt -#endif - -#ifndef PNG_NO_READ_bKGD -# define PNG_READ_bKGD_SUPPORTED -# define PNG_bKGD_SUPPORTED -#endif -#ifndef PNG_NO_READ_cHRM -# define PNG_READ_cHRM_SUPPORTED -# define PNG_cHRM_SUPPORTED -#endif -#ifndef PNG_NO_READ_gAMA -# define PNG_READ_gAMA_SUPPORTED -# define PNG_gAMA_SUPPORTED -#endif -#ifndef PNG_NO_READ_hIST -# define PNG_READ_hIST_SUPPORTED -# define PNG_hIST_SUPPORTED -#endif -#ifndef PNG_NO_READ_iCCP -# define PNG_READ_iCCP_SUPPORTED -# define PNG_iCCP_SUPPORTED -#endif -#ifndef PNG_NO_READ_iTXt -# ifndef PNG_READ_iTXt_SUPPORTED -# define PNG_READ_iTXt_SUPPORTED -# endif -# ifndef PNG_iTXt_SUPPORTED -# define PNG_iTXt_SUPPORTED -# endif -#endif -#ifndef PNG_NO_READ_oFFs -# define PNG_READ_oFFs_SUPPORTED -# define PNG_oFFs_SUPPORTED -#endif -#ifndef PNG_NO_READ_pCAL -# define PNG_READ_pCAL_SUPPORTED -# define PNG_pCAL_SUPPORTED -#endif -#ifndef PNG_NO_READ_sCAL -# define PNG_READ_sCAL_SUPPORTED -# define PNG_sCAL_SUPPORTED -#endif -#ifndef PNG_NO_READ_pHYs -# define PNG_READ_pHYs_SUPPORTED -# define PNG_pHYs_SUPPORTED -#endif -#ifndef PNG_NO_READ_sBIT -# define PNG_READ_sBIT_SUPPORTED -# define PNG_sBIT_SUPPORTED -#endif -#ifndef PNG_NO_READ_sPLT -# define PNG_READ_sPLT_SUPPORTED -# define PNG_sPLT_SUPPORTED -#endif -#ifndef PNG_NO_READ_sRGB -# define PNG_READ_sRGB_SUPPORTED -# define PNG_sRGB_SUPPORTED -#endif -#ifndef PNG_NO_READ_tEXt -# define PNG_READ_tEXt_SUPPORTED -# define PNG_tEXt_SUPPORTED -#endif -#ifndef PNG_NO_READ_tIME -# define PNG_READ_tIME_SUPPORTED -# define PNG_tIME_SUPPORTED -#endif -#ifndef PNG_NO_READ_tRNS -# define PNG_READ_tRNS_SUPPORTED -# define PNG_tRNS_SUPPORTED -#endif -#ifndef PNG_NO_READ_zTXt -# define PNG_READ_zTXt_SUPPORTED -# define PNG_zTXt_SUPPORTED -#endif -#ifndef PNG_NO_READ_OPT_PLTE -# define PNG_READ_OPT_PLTE_SUPPORTED /* only affects support of the */ -#endif /* optional PLTE chunk in RGB and RGBA images */ -#if defined(PNG_READ_iTXt_SUPPORTED) || defined(PNG_READ_tEXt_SUPPORTED) || \ - defined(PNG_READ_zTXt_SUPPORTED) -# define PNG_READ_TEXT_SUPPORTED -# define PNG_TEXT_SUPPORTED -#endif - -#endif /* PNG_READ_ANCILLARY_CHUNKS_SUPPORTED */ - -#ifndef PNG_NO_READ_UNKNOWN_CHUNKS -# ifndef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED -# define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED -# endif -# ifndef PNG_UNKNOWN_CHUNKS_SUPPORTED -# define PNG_UNKNOWN_CHUNKS_SUPPORTED -# endif -# ifndef PNG_READ_USER_CHUNKS_SUPPORTED -# define PNG_READ_USER_CHUNKS_SUPPORTED -# endif -#endif -#ifndef PNG_NO_READ_USER_CHUNKS -# ifndef PNG_READ_USER_CHUNKS_SUPPORTED -# define PNG_READ_USER_CHUNKS_SUPPORTED -# endif -# ifndef PNG_USER_CHUNKS_SUPPORTED -# define PNG_USER_CHUNKS_SUPPORTED -# endif -#endif -#ifndef PNG_NO_HANDLE_AS_UNKNOWN -# ifndef PNG_HANDLE_AS_UNKNOWN_SUPPORTED -# define PNG_HANDLE_AS_UNKNOWN_SUPPORTED -# endif -#endif - -#ifdef PNG_WRITE_SUPPORTED -#ifdef PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED - -#ifdef PNG_NO_WRITE_TEXT -# define PNG_NO_WRITE_iTXt -# define PNG_NO_WRITE_tEXt -# define PNG_NO_WRITE_zTXt -#endif -#ifndef PNG_NO_WRITE_bKGD -# define PNG_WRITE_bKGD_SUPPORTED -# ifndef PNG_bKGD_SUPPORTED -# define PNG_bKGD_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_cHRM -# define PNG_WRITE_cHRM_SUPPORTED -# ifndef PNG_cHRM_SUPPORTED -# define PNG_cHRM_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_gAMA -# define PNG_WRITE_gAMA_SUPPORTED -# ifndef PNG_gAMA_SUPPORTED -# define PNG_gAMA_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_hIST -# define PNG_WRITE_hIST_SUPPORTED -# ifndef PNG_hIST_SUPPORTED -# define PNG_hIST_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_iCCP -# define PNG_WRITE_iCCP_SUPPORTED -# ifndef PNG_iCCP_SUPPORTED -# define PNG_iCCP_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_iTXt -# ifndef PNG_WRITE_iTXt_SUPPORTED -# define PNG_WRITE_iTXt_SUPPORTED -# endif -# ifndef PNG_iTXt_SUPPORTED -# define PNG_iTXt_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_oFFs -# define PNG_WRITE_oFFs_SUPPORTED -# ifndef PNG_oFFs_SUPPORTED -# define PNG_oFFs_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_pCAL -# define PNG_WRITE_pCAL_SUPPORTED -# ifndef PNG_pCAL_SUPPORTED -# define PNG_pCAL_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_sCAL -# define PNG_WRITE_sCAL_SUPPORTED -# ifndef PNG_sCAL_SUPPORTED -# define PNG_sCAL_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_pHYs -# define PNG_WRITE_pHYs_SUPPORTED -# ifndef PNG_pHYs_SUPPORTED -# define PNG_pHYs_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_sBIT -# define PNG_WRITE_sBIT_SUPPORTED -# ifndef PNG_sBIT_SUPPORTED -# define PNG_sBIT_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_sPLT -# define PNG_WRITE_sPLT_SUPPORTED -# ifndef PNG_sPLT_SUPPORTED -# define PNG_sPLT_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_sRGB -# define PNG_WRITE_sRGB_SUPPORTED -# ifndef PNG_sRGB_SUPPORTED -# define PNG_sRGB_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_tEXt -# define PNG_WRITE_tEXt_SUPPORTED -# ifndef PNG_tEXt_SUPPORTED -# define PNG_tEXt_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_tIME -# define PNG_WRITE_tIME_SUPPORTED -# ifndef PNG_tIME_SUPPORTED -# define PNG_tIME_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_tRNS -# define PNG_WRITE_tRNS_SUPPORTED -# ifndef PNG_tRNS_SUPPORTED -# define PNG_tRNS_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_zTXt -# define PNG_WRITE_zTXt_SUPPORTED -# ifndef PNG_zTXt_SUPPORTED -# define PNG_zTXt_SUPPORTED -# endif -#endif -#if defined(PNG_WRITE_iTXt_SUPPORTED) || defined(PNG_WRITE_tEXt_SUPPORTED) || \ - defined(PNG_WRITE_zTXt_SUPPORTED) -# define PNG_WRITE_TEXT_SUPPORTED -# ifndef PNG_TEXT_SUPPORTED -# define PNG_TEXT_SUPPORTED -# endif -#endif - -#ifdef PNG_WRITE_tIME_SUPPORTED -# ifndef PNG_NO_CONVERT_tIME -# ifndef _WIN32_WCE -/* The "tm" structure is not supported on WindowsCE */ -# ifndef PNG_CONVERT_tIME_SUPPORTED -# define PNG_CONVERT_tIME_SUPPORTED -# endif -# endif -# endif -#endif - -#endif /* PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED */ - -#ifndef PNG_NO_WRITE_FILTER -# ifndef PNG_WRITE_FILTER_SUPPORTED -# define PNG_WRITE_FILTER_SUPPORTED -# endif -#endif - -#ifndef PNG_NO_WRITE_UNKNOWN_CHUNKS -# define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED -# ifndef PNG_UNKNOWN_CHUNKS_SUPPORTED -# define PNG_UNKNOWN_CHUNKS_SUPPORTED -# endif -#endif -#ifndef PNG_NO_HANDLE_AS_UNKNOWN -# ifndef PNG_HANDLE_AS_UNKNOWN_SUPPORTED -# define PNG_HANDLE_AS_UNKNOWN_SUPPORTED -# endif -#endif -#endif /* PNG_WRITE_SUPPORTED */ - -/* Turn this off to disable png_read_png() and - * png_write_png() and leave the row_pointers member - * out of the info structure. - */ -#ifndef PNG_NO_INFO_IMAGE -# define PNG_INFO_IMAGE_SUPPORTED -#endif - -/* Need the time information for converting tIME chunks */ -#ifdef PNG_CONVERT_tIME_SUPPORTED - /* "time.h" functions are not supported on WindowsCE */ -# include -#endif - /* Some typedefs to get us started. These should be safe on most of the * common platforms. The typedefs should be at least as large as the * numbers suggest (a png_uint_32 must be at least 32 bits long), but they @@ -1120,9 +502,9 @@ typedef short png_int_16; typedef unsigned char png_byte; #ifdef PNG_NO_SIZE_T - typedef unsigned int png_size_t; +typedef unsigned int png_size_t; #else - typedef size_t png_size_t; +typedef size_t png_size_t; #endif #define png_sizeof(x) (sizeof (x)) @@ -1144,20 +526,20 @@ typedef unsigned char png_byte; # else # define LDATA 0 # endif - /* GRR: why is Cygwin in here? Cygwin is not Borland C... */ + /* GRR: why is Cygwin in here? Cygwin is not Borland C... */ # if !defined(__WIN32__) && !defined(__FLAT__) && !defined(__CYGWIN__) -# define PNG_MAX_MALLOC_64K +# define PNG_MAX_MALLOC_64K /* only used in build */ # if (LDATA != 1) # ifndef FAR # define FAR __far # endif # define USE_FAR_KEYWORD # endif /* LDATA != 1 */ - /* Possibly useful for moving data out of default segment. - * Uncomment it if you want. Could also define FARDATA as - * const if your compiler supports it. (SJT) -# define FARDATA FAR - */ + /* Possibly useful for moving data out of default segment. + * Uncomment it if you want. Could also define FARDATA as + * const if your compiler supports it. (SJT) +# define FARDATA FAR + */ # endif /* __WIN32__, __FLAT__, __CYGWIN__ */ #endif /* __BORLANDC__ */ @@ -1187,26 +569,37 @@ typedef unsigned char png_byte; #endif /* Typedef for floating-point numbers that are converted - to fixed-point with a multiple of 100,000, e.g., int_gamma */ + * to fixed-point with a multiple of 100,000, e.g., gamma + */ typedef png_int_32 png_fixed_point; /* Add typedefs for pointers */ -typedef void FAR * png_voidp; -typedef png_byte FAR * png_bytep; -typedef png_uint_32 FAR * png_uint_32p; -typedef png_int_32 FAR * png_int_32p; -typedef png_uint_16 FAR * png_uint_16p; -typedef png_int_16 FAR * png_int_16p; -typedef PNG_CONST char FAR * png_const_charp; -typedef char FAR * png_charp; -typedef png_fixed_point FAR * png_fixed_point_p; +typedef void FAR * png_voidp; +typedef PNG_CONST void FAR * png_const_voidp; +typedef png_byte FAR * png_bytep; +typedef PNG_CONST png_byte FAR * png_const_bytep; +typedef png_uint_32 FAR * png_uint_32p; +typedef PNG_CONST png_uint_32 FAR * png_const_uint_32p; +typedef png_int_32 FAR * png_int_32p; +typedef PNG_CONST png_int_32 FAR * png_const_int_32p; +typedef png_uint_16 FAR * png_uint_16p; +typedef PNG_CONST png_uint_16 FAR * png_const_uint_16p; +typedef png_int_16 FAR * png_int_16p; +typedef PNG_CONST png_int_16 FAR * png_const_int_16p; +typedef char FAR * png_charp; +typedef PNG_CONST char FAR * png_const_charp; +typedef png_fixed_point FAR * png_fixed_point_p; +typedef PNG_CONST png_fixed_point FAR * png_const_fixed_point_p; +typedef png_size_t FAR * png_size_tp; +typedef PNG_CONST png_size_t FAR * png_const_size_tp; -#ifndef PNG_NO_STDIO -typedef FILE * png_FILE_p; +#ifdef PNG_STDIO_SUPPORTED +typedef FILE * png_FILE_p; #endif #ifdef PNG_FLOATING_POINT_SUPPORTED -typedef double FAR * png_doublep; +typedef double FAR * png_doublep; +typedef PNG_CONST double FAR * png_const_doublep; #endif /* Pointers to pointers; i.e. arrays */ @@ -1225,277 +618,6 @@ typedef double FAR * FAR * png_doublepp; /* Pointers to pointers to pointers; i.e., pointer to array */ typedef char FAR * FAR * FAR * png_charppp; -/* Define PNG_BUILD_DLL if the module being built is a Windows - * LIBPNG DLL. - * - * Define PNG_USE_DLL if you want to *link* to the Windows LIBPNG DLL. - * It is equivalent to Microsoft predefined macro _DLL that is - * automatically defined when you compile using the share - * version of the CRT (C Run-Time library) - * - * The cygwin mods make this behavior a little different: - * Define PNG_BUILD_DLL if you are building a dll for use with cygwin - * Define PNG_STATIC if you are building a static library for use with cygwin, - * -or- if you are building an application that you want to link to the - * static library. - * PNG_USE_DLL is defined by default (no user action needed) unless one of - * the other flags is defined. - */ - -#if !defined(PNG_DLL) && (defined(PNG_BUILD_DLL) || defined(PNG_USE_DLL)) -# define PNG_DLL -#endif - -/* If you define PNGAPI, e.g., with compiler option "-DPNGAPI=__stdcall", - * you may get warnings regarding the linkage of png_zalloc and png_zfree. - * Don't ignore those warnings; you must also reset the default calling - * convention in your compiler to match your PNGAPI, and you must build - * zlib and your applications the same way you build libpng. - */ - -#ifdef __CYGWIN__ -# undef PNGAPI -# define PNGAPI __cdecl -# undef PNG_IMPEXP -# define PNG_IMPEXP -#endif - -#ifdef __WATCOMC__ -# ifndef PNGAPI -# define PNGAPI -# endif -#endif - -#if defined(__MINGW32__) && !defined(PNG_MODULEDEF) -# ifndef PNG_NO_MODULEDEF -# define PNG_NO_MODULEDEF -# endif -#endif - -#if !defined(PNG_IMPEXP) && defined(PNG_BUILD_DLL) && !defined(PNG_NO_MODULEDEF) -# define PNG_IMPEXP -#endif - -#if defined(PNG_DLL) || defined(_DLL) || defined(__DLL__ ) || \ - (( defined(_Windows) || defined(_WINDOWS) || \ - defined(WIN32) || defined(_WIN32) || defined(__WIN32__) )) - -# ifndef PNGAPI -# if defined(__GNUC__) || (defined (_MSC_VER) && (_MSC_VER >= 800)) -# define PNGAPI __cdecl -# else -# define PNGAPI _cdecl -# endif -# endif - -# if !defined(PNG_IMPEXP) && (!defined(PNG_DLL) || \ - 0 /* WINCOMPILER_WITH_NO_SUPPORT_FOR_DECLIMPEXP */) -# define PNG_IMPEXP -# endif - -# ifndef PNG_IMPEXP - -# define PNG_EXPORT_TYPE1(type,symbol) PNG_IMPEXP type PNGAPI symbol -# define PNG_EXPORT_TYPE2(type,symbol) type PNG_IMPEXP PNGAPI symbol - - /* Borland/Microsoft */ -# if defined(_MSC_VER) || defined(__BORLANDC__) -# if (_MSC_VER >= 800) || (__BORLANDC__ >= 0x500) -# define PNG_EXPORT PNG_EXPORT_TYPE1 -# else -# define PNG_EXPORT PNG_EXPORT_TYPE2 -# ifdef PNG_BUILD_DLL -# define PNG_IMPEXP __export -# else -# define PNG_IMPEXP /*__import */ /* doesn't exist AFAIK in VC++ */ -# endif /* Exists in Borland C++ for - C++ classes (== huge) */ -# endif -# endif - -# ifndef PNG_IMPEXP -# ifdef PNG_BUILD_DLL -# define PNG_IMPEXP __declspec(dllexport) -# else -# define PNG_IMPEXP __declspec(dllimport) -# endif -# endif -# endif /* PNG_IMPEXP */ -#else /* !(DLL || non-cygwin WINDOWS) */ -# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) -# ifndef PNGAPI -# define PNGAPI _System -# endif -# else -# if 0 /* ... other platforms, with other meanings */ -# endif -# endif -#endif - -#ifndef PNGAPI -# define PNGAPI -#endif -#ifndef PNG_IMPEXP -# define PNG_IMPEXP -#endif - -#ifdef PNG_BUILDSYMS -# ifndef PNG_EXPORT -# define PNG_EXPORT(type,symbol) PNG_FUNCTION_EXPORT symbol END -# endif -#endif - -#ifndef PNG_EXPORT -# define PNG_EXPORT(type,symbol) PNG_IMPEXP type PNGAPI symbol -#endif - -#define PNG_USE_LOCAL_ARRAYS /* Not used in libpng, defined for legacy apps */ - -/* Support for compiler specific function attributes. These are used - * so that where compiler support is available incorrect use of API - * functions in png.h will generate compiler warnings. - * - * Added at libpng-1.2.41. - */ - -#ifndef PNG_NO_PEDANTIC_WARNINGS -# ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED -# define PNG_PEDANTIC_WARNINGS_SUPPORTED -# endif -#endif - -#ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED -/* Support for compiler specific function attributes. These are used - * so that where compiler support is available incorrect use of API - * functions in png.h will generate compiler warnings. Added at libpng - * version 1.2.41. - */ -# ifdef __GNUC__ -# ifndef PNG_USE_RESULT -# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) -# endif -# ifndef PNG_NORETURN -# define PNG_NORETURN __attribute__((__noreturn__)) -# endif -# ifndef PNG_ALLOCATED -# define PNG_ALLOCATED __attribute__((__malloc__)) -# endif - - /* This specifically protects structure members that should only be - * accessed from within the library, therefore should be empty during - * a library build. - */ -# ifndef PNG_DEPRECATED -# define PNG_DEPRECATED __attribute__((__deprecated__)) -# endif -# ifndef PNG_DEPSTRUCT -# define PNG_DEPSTRUCT __attribute__((__deprecated__)) -# endif -# ifndef PNG_PRIVATE -# if 0 /* Doesn't work so we use deprecated instead*/ -# define PNG_PRIVATE \ - __attribute__((warning("This function is not exported by libpng."))) -# else -# define PNG_PRIVATE \ - __attribute__((__deprecated__)) -# endif -# endif /* PNG_PRIVATE */ -# endif /* __GNUC__ */ -#endif /* PNG_PEDANTIC_WARNINGS */ - -#ifndef PNG_DEPRECATED -# define PNG_DEPRECATED /* Use of this function is deprecated */ -#endif -#ifndef PNG_USE_RESULT -# define PNG_USE_RESULT /* The result of this function must be checked */ -#endif -#ifndef PNG_NORETURN -# define PNG_NORETURN /* This function does not return */ -#endif -#ifndef PNG_ALLOCATED -# define PNG_ALLOCATED /* The result of the function is new memory */ -#endif -#ifndef PNG_DEPSTRUCT -# define PNG_DEPSTRUCT /* Access to this struct member is deprecated */ -#endif -#ifndef PNG_PRIVATE -# define PNG_PRIVATE /* This is a private libpng function */ -#endif - -/* Users may want to use these so they are not private. Any library - * functions that are passed far data must be model-independent. - */ - -/* memory model/platform independent fns */ -#ifndef PNG_ABORT -# if (defined(_Windows) || defined(_WINDOWS) || defined(_WINDOWS_)) -# define PNG_ABORT() ExitProcess(0) -# else -# define PNG_ABORT() abort() -# endif -#endif - -#ifdef USE_FAR_KEYWORD -/* Use this to make far-to-near assignments */ -# define CHECK 1 -# define NOCHECK 0 -# define CVT_PTR(ptr) (png_far_to_near(png_ptr,ptr,CHECK)) -# define CVT_PTR_NOCHECK(ptr) (png_far_to_near(png_ptr,ptr,NOCHECK)) -# define png_strcpy _fstrcpy -# define png_strncpy _fstrncpy /* Added to v 1.2.6 */ -# define png_strlen _fstrlen -# define png_memcmp _fmemcmp /* SJT: added */ -# define png_memcpy _fmemcpy -# define png_memset _fmemset -# define png_sprintf sprintf -#else -# if (defined(_Windows) || defined(_WINDOWS) || defined(_WINDOWS_)) -# /* Favor Windows over C runtime fns */ -# define CVT_PTR(ptr) (ptr) -# define CVT_PTR_NOCHECK(ptr) (ptr) -# define png_strcpy lstrcpyA -# define png_strncpy lstrcpynA -# define png_strlen lstrlenA -# define png_memcmp memcmp -# define png_memcpy CopyMemory -# define png_memset memset -# define png_sprintf wsprintfA -# else -# define CVT_PTR(ptr) (ptr) -# define CVT_PTR_NOCHECK(ptr) (ptr) -# define png_strcpy strcpy -# define png_strncpy strncpy /* Added to v 1.2.6 */ -# define png_strlen strlen -# define png_memcmp memcmp /* SJT: added */ -# define png_memcpy memcpy -# define png_memset memset -# define png_sprintf sprintf -# endif -#endif - -#ifndef PNG_NO_SNPRINTF -# ifdef _MSC_VER -# define png_snprintf _snprintf /* Added to v 1.2.19 */ -# define png_snprintf2 _snprintf -# define png_snprintf6 _snprintf -# else -# define png_snprintf snprintf /* Added to v 1.2.19 */ -# define png_snprintf2 snprintf -# define png_snprintf6 snprintf -# endif -#else - /* You don't have or don't want to use snprintf(). Caution: Using - * sprintf instead of snprintf exposes your application to accidental - * or malevolent buffer overflows. If you don't have snprintf() - * as a general rule you should provide one (you can get one from - * Portable OpenSSH). - */ -# define png_snprintf(s1,n,fmt,x1) png_sprintf(s1,fmt,x1) -# define png_snprintf2(s1,n,fmt,x1,x2) png_sprintf(s1,fmt,x1,x2) -# define png_snprintf6(s1,n,fmt,x1,x2,x3,x4,x5,x6) \ - png_sprintf(s1,fmt,x1,x2,x3,x4,x5,x6) -#endif - /* png_alloc_size_t is guaranteed to be no smaller than png_size_t, * and no smaller than png_uint_32. Casts from png_size_t or png_uint_32 * to png_alloc_size_t are not necessary; in fact, it is recommended @@ -1523,18 +645,5 @@ typedef char FAR * FAR * FAR * png_charppp; # endif # endif #endif -/* End of memory model/platform independent support */ - -/* Just a little check that someone hasn't tried to define something - * contradictory. - */ -#if (PNG_ZBUF_SIZE > 65536L) && defined(PNG_MAX_MALLOC_64K) -# undef PNG_ZBUF_SIZE -# define PNG_ZBUF_SIZE 65536L -#endif - - -/* Added at libpng-1.2.8 */ -#endif /* PNG_VERSION_INFO_ONLY */ #endif /* PNGCONF_H */ diff --git a/engine/libs/mingw64-libs/pnglibconf.h b/engine/libs/mingw64-libs/pnglibconf.h new file mode 100755 index 000000000..e36ee3486 --- /dev/null +++ b/engine/libs/mingw64-libs/pnglibconf.h @@ -0,0 +1,181 @@ + +/* libpng STANDARD API DEFINITION */ + +/* pnglibconf.h - library build configuration */ + +/* libpng version 1.5.0 - last changed on February 11, 2011 */ + +/* Copyright (c) 1998-2011 Glenn Randers-Pehrson */ + +/* This code is released under the libpng license. */ +/* For conditions of distribution and use, see the disclaimer */ +/* and license in png.h */ + +/* pnglibconf.h */ +/* Derived from: scripts/pnglibconf.dfa */ +/* If you edit this file by hand you must obey the rules expressed in */ +/* pnglibconf.dfa with respect to the dependencies between the following */ +/* symbols. It is much better to generate a new file using */ +/* scripts/libpngconf.mak */ + +#ifndef PNGLCONF_H +#define PNGLCONF_H +/* settings */ +#define PNG_API_RULE 0 +#define PNG_CALLOC_SUPPORTED +#define PNG_COST_SHIFT 3 +#define PNG_DEFAULT_READ_MACROS 1 +#define PNG_GAMMA_THRESHOLD_FIXED 5000 +#define PNG_MAX_GAMMA_8 11 +#define PNG_QUANTIZE_BLUE_BITS 5 +#define PNG_QUANTIZE_GREEN_BITS 5 +#define PNG_QUANTIZE_RED_BITS 5 +#define PNG_sCAL_PRECISION 5 +#define PNG_USER_CHUNK_CACHE_MAX 0 +#define PNG_USER_CHUNK_MALLOC_MAX 0 +#define PNG_USER_HEIGHT_MAX 1000000L +#define PNG_USER_WIDTH_MAX 1000000L +#define PNG_WEIGHT_SHIFT 8 +#define PNG_ZBUF_SIZE 8192 +/* end of settings */ +/* options */ +#define PNG_16BIT_SUPPORTED +#define PNG_ALIGN_MEMORY_SUPPORTED +#define PNG_BENIGN_ERRORS_SUPPORTED +#define PNG_bKGD_SUPPORTED +#define PNG_CHECK_cHRM_SUPPORTED +#define PNG_cHRM_SUPPORTED +#define PNG_CONSOLE_IO_SUPPORTED +#define PNG_CONVERT_tIME_SUPPORTED +#define PNG_EASY_ACCESS_SUPPORTED +#define PNG_ERROR_TEXT_SUPPORTED +#define PNG_FIXED_POINT_SUPPORTED +#define PNG_FLOATING_ARITHMETIC_SUPPORTED +#define PNG_FLOATING_POINT_SUPPORTED +#define PNG_gAMA_SUPPORTED +#define PNG_HANDLE_AS_UNKNOWN_SUPPORTED +#define PNG_hIST_SUPPORTED +#define PNG_iCCP_SUPPORTED +#define PNG_INCH_CONVERSIONS_SUPPORTED +#define PNG_INFO_IMAGE_SUPPORTED +#define PNG_IO_STATE_SUPPORTED +#define PNG_iTXt_SUPPORTED +#define PNG_MNG_FEATURES_SUPPORTED +#define PNG_oFFs_SUPPORTED +#define PNG_pCAL_SUPPORTED +#define PNG_pHYs_SUPPORTED +#define PNG_POINTER_INDEXING_SUPPORTED +#define PNG_PROGRESSIVE_READ_SUPPORTED +#define PNG_READ_16BIT_SUPPORTED +#define PNG_READ_16_TO_8_SUPPORTED +#define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED +#define PNG_READ_BACKGROUND_SUPPORTED +#define PNG_READ_BGR_SUPPORTED +#define PNG_READ_bKGD_SUPPORTED +#define PNG_READ_cHRM_SUPPORTED +#define PNG_READ_COMPOSITE_NODIV_SUPPORTED +#define PNG_READ_EXPAND_16_SUPPORTED +#define PNG_READ_EXPAND_SUPPORTED +#define PNG_READ_FILLER_SUPPORTED +#define PNG_READ_gAMA_SUPPORTED +#define PNG_READ_GAMMA_SUPPORTED +#define PNG_READ_GRAY_TO_RGB_SUPPORTED +#define PNG_READ_hIST_SUPPORTED +#define PNG_READ_iCCP_SUPPORTED +#define PNG_READ_INTERLACING_SUPPORTED +#define PNG_READ_INT_FUNCTIONS_SUPPORTED +#define PNG_READ_INVERT_ALPHA_SUPPORTED +#define PNG_READ_INVERT_SUPPORTED +#define PNG_READ_iTXt_SUPPORTED +#define PNG_READ_oFFs_SUPPORTED +#define PNG_READ_OPT_PLTE_SUPPORTED +#define PNG_READ_PACK_SUPPORTED +#define PNG_READ_PACKSWAP_SUPPORTED +#define PNG_READ_pCAL_SUPPORTED +#define PNG_READ_pHYs_SUPPORTED +#define PNG_READ_QUANTIZE_SUPPORTED +#define PNG_READ_RGB_TO_GRAY_SUPPORTED +#define PNG_READ_sBIT_SUPPORTED +#define PNG_READ_sCAL_SUPPORTED +#define PNG_READ_SHIFT_SUPPORTED +#define PNG_READ_sPLT_SUPPORTED +#define PNG_READ_sRGB_SUPPORTED +#define PNG_READ_STRIP_ALPHA_SUPPORTED +#define PNG_READ_SUPPORTED +#define PNG_READ_SWAP_ALPHA_SUPPORTED +#define PNG_READ_SWAP_SUPPORTED +#define PNG_READ_tEXt_SUPPORTED +#define PNG_READ_TEXT_SUPPORTED +#define PNG_READ_tIME_SUPPORTED +#define PNG_READ_TRANSFORMS_SUPPORTED +#define PNG_READ_tRNS_SUPPORTED +#define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_READ_USER_CHUNKS_SUPPORTED +#define PNG_READ_USER_TRANSFORM_SUPPORTED +#define PNG_READ_zTXt_SUPPORTED +#define PNG_SAVE_INT_32_SUPPORTED +#define PNG_sBIT_SUPPORTED +#define PNG_sCAL_SUPPORTED +#define PNG_SEQUENTIAL_READ_SUPPORTED +#define PNG_SET_CHUNK_CACHE_LIMIT_SUPPORTED +#define PNG_SET_CHUNK_MALLOC_LIMIT_SUPPORTED +#define PNG_SETJMP_SUPPORTED +#define PNG_SET_USER_LIMITS_SUPPORTED +#define PNG_sPLT_SUPPORTED +#define PNG_sRGB_SUPPORTED +#define PNG_STDIO_SUPPORTED +#define PNG_tEXt_SUPPORTED +#define PNG_TEXT_SUPPORTED +#define PNG_TIME_RFC1123_SUPPORTED +#define PNG_tIME_SUPPORTED +#define PNG_tRNS_SUPPORTED +#define PNG_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_USER_CHUNKS_SUPPORTED +#define PNG_USER_LIMITS_SUPPORTED +#define PNG_USER_MEM_SUPPORTED +#define PNG_USER_TRANSFORM_INFO_SUPPORTED +#define PNG_USER_TRANSFORM_PTR_SUPPORTED +#define PNG_WARNINGS_SUPPORTED +#define PNG_WRITE_16BIT_SUPPORTED +#define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED +#define PNG_WRITE_BGR_SUPPORTED +#define PNG_WRITE_bKGD_SUPPORTED +#define PNG_WRITE_cHRM_SUPPORTED +#define PNG_WRITE_FILLER_SUPPORTED +#define PNG_WRITE_FILTER_SUPPORTED +#define PNG_WRITE_FLUSH_SUPPORTED +#define PNG_WRITE_gAMA_SUPPORTED +#define PNG_WRITE_hIST_SUPPORTED +#define PNG_WRITE_iCCP_SUPPORTED +#define PNG_WRITE_INTERLACING_SUPPORTED +#define PNG_WRITE_INT_FUNCTIONS_SUPPORTED +#define PNG_WRITE_INVERT_ALPHA_SUPPORTED +#define PNG_WRITE_INVERT_SUPPORTED +#define PNG_WRITE_iTXt_SUPPORTED +#define PNG_WRITE_oFFs_SUPPORTED +#define PNG_WRITE_PACK_SUPPORTED +#define PNG_WRITE_PACKSWAP_SUPPORTED +#define PNG_WRITE_pCAL_SUPPORTED +#define PNG_WRITE_pHYs_SUPPORTED +#define PNG_WRITE_sBIT_SUPPORTED +#define PNG_WRITE_sCAL_SUPPORTED +#define PNG_WRITE_SHIFT_SUPPORTED +#define PNG_WRITE_sPLT_SUPPORTED +#define PNG_WRITE_sRGB_SUPPORTED +#define PNG_WRITE_SUPPORTED +#define PNG_WRITE_SWAP_ALPHA_SUPPORTED +#define PNG_WRITE_SWAP_SUPPORTED +#define PNG_WRITE_tEXt_SUPPORTED +#define PNG_WRITE_TEXT_SUPPORTED +#define PNG_WRITE_tIME_SUPPORTED +#define PNG_WRITE_TRANSFORMS_SUPPORTED +#define PNG_WRITE_tRNS_SUPPORTED +#define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_WRITE_USER_TRANSFORM_SUPPORTED +#define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED +#define PNG_WRITE_zTXt_SUPPORTED +#define PNG_zTXt_SUPPORTED +/*#undef PNG_ERROR_NUMBERS_SUPPORTED*/ +/*#undef PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED*/ +/* end of options */ +#endif /* PNGLCONF_H */ diff --git a/engine/libs/mingw64-libs/pngpriv.h b/engine/libs/mingw64-libs/pngpriv.h index ebf8e5301..7df18fa44 100755 --- a/engine/libs/mingw64-libs/pngpriv.h +++ b/engine/libs/mingw64-libs/pngpriv.h @@ -1,12 +1,13 @@ /* pngpriv.h - private declarations for use inside libpng * - * libpng version 1.4.4 - September 23, 2010 * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1998-2010 Glenn Randers-Pehrson + * Copyright (c) 1998-2011 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) * + * Last changed in libpng 1.5.2 [March 31, 2011] + * * This code is released under the libpng license. * For conditions of distribution and use, see the disclaimer * and license in png.h @@ -24,27 +25,132 @@ #ifndef PNGPRIV_H #define PNGPRIV_H -#ifndef PNG_VERSION_INFO_ONLY - +/* This is required for the definition of abort(), used as a last ditch + * error handler when all else fails. + */ #include +#define PNGLIB_BUILD +#ifdef PNG_USER_CONFIG +# include "pngusr.h" + /* These should have been defined in pngusr.h */ +# ifndef PNG_USER_PRIVATEBUILD +# define PNG_USER_PRIVATEBUILD "Custom libpng build" +# endif +# ifndef PNG_USER_DLLFNAME_POSTFIX +# define PNG_USER_DLLFNAME_POSTFIX "Cb" +# endif +#endif +#include "png.h" +#include "pnginfo.h" +#include "pngstruct.h" + +/* This is used for 16 bit gamma tables - only the top level pointers are const, + * this could be changed: + */ +typedef PNG_CONST png_uint_16p FAR * png_const_uint_16pp; + +/* Added at libpng-1.2.9 */ +/* Moved to pngpriv.h at libpng-1.5.0 */ + +/* config.h is created by and PNG_CONFIGURE_LIBPNG is set by the "configure" + * script. We may need it here to get the correct configuration on things + * like limits. + */ +#ifdef PNG_CONFIGURE_LIBPNG +# ifdef HAVE_CONFIG_H +# include "config.h" +# endif +#endif + +/* Moved to pngpriv.h at libpng-1.5.0 */ +/* NOTE: some of these may have been used in external applications as + * these definitions were exposed in pngconf.h prior to 1.5. + */ + +/* If you are running on a machine where you cannot allocate more + * than 64K of memory at once, uncomment this. While libpng will not + * normally need that much memory in a chunk (unless you load up a very + * large file), zlib needs to know how big of a chunk it can use, and + * libpng thus makes sure to check any memory allocation to verify it + * will fit into memory. + * + * zlib provides 'MAXSEG_64K' which, if defined, indicates the + * same limit and pngconf.h (already included) sets the limit + * if certain operating systems are detected. + */ +#if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K) +# define PNG_MAX_MALLOC_64K +#endif + +#ifndef PNG_UNUSED +/* Unused formal parameter warnings are silenced using the following macro + * which is expected to have no bad effects on performance (optimizing + * compilers will probably remove it entirely). Note that if you replace + * it with something other than whitespace, you must include the terminating + * semicolon. + */ +# define PNG_UNUSED(param) (void)param; +#endif + +/* Just a little check that someone hasn't tried to define something + * contradictory. + */ +#if (PNG_ZBUF_SIZE > 65536L) && defined(PNG_MAX_MALLOC_64K) +# undef PNG_ZBUF_SIZE +# define PNG_ZBUF_SIZE 65536L +#endif + +/* If warnings or errors are turned off the code is disabled + * or redirected here. + */ +#ifndef PNG_WARNINGS_SUPPORTED +# define png_warning(s1,s2) ((void)0) +# define png_chunk_warning(s1,s2) ((void)0) +#endif +#ifndef PNG_ERROR_TEXT_SUPPORTED +# define png_error(s1,s2) png_err(s1) +# define png_chunk_error(s1,s2) png_err(s1) +# define png_fixed_error(s1,s2) png_err(s1) +#endif + #ifndef PNG_EXTERN /* The functions exported by PNG_EXTERN are internal functions, which * aren't usually used outside the library (as far as I know), so it is * debatable if they should be exported at all. In the future, when it * is possible to have run-time registry of chunk-handling functions, - * some of these will be made available again. + * some of these might be made available again. # define PNG_EXTERN extern */ # define PNG_EXTERN #endif +/* Some fixed point APIs are still required even if not exported because + * they get used by the corresponding floating point APIs. This magic + * deals with this: + */ +#ifdef PNG_FIXED_POINT_SUPPORTED +# define PNGFAPI PNGAPI +#else +# define PNGFAPI /* PRIVATE */ +#endif + /* Other defines specific to compilers can go here. Try to keep * them inside an appropriate ifdef/endif pair for portability. */ +#if defined(PNG_FLOATING_POINT_SUPPORTED) ||\ + defined(PNG_FLOATING_ARITHMETIC_SUPPORTED) + /* png.c requires the following ANSI-C constants if the conversion of + * floating point to ASCII is implemented therein: + * + * DBL_DIG Maximum number of decimal digits (can be set to any constant) + * DBL_MIN Smallest normalized fp number (can be set to an arbitrary value) + * DBL_MAX Maximum floating point number (can be set to an arbitrary value) + */ +# include -#ifdef PNG_FLOATING_POINT_SUPPORTED -# ifdef MACOS +# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \ + defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC) /* We need to check that hasn't already been included earlier * as it seems it doesn't agree with , yet we should really use * if possible. @@ -63,11 +169,6 @@ # endif #endif -/* Codewarrior on NT has linking problems without this. */ -#if (defined(__MWERKS__) && defined(WIN32)) || defined(__STDC__) -# define PNG_ALWAYS_EXTERN -#endif - /* This provides the non-ANSI (far) memory allocation routines. */ #if defined(__TURBOC__) && defined(__MSDOS__) # include @@ -79,6 +180,86 @@ # include /* defines _WINDOWS_ macro */ #endif +/* Moved here around 1.5.0beta36 from pngconf.h */ +/* Users may want to use these so they are not private. Any library + * functions that are passed far data must be model-independent. + */ + +/* Memory model/platform independent fns */ +#ifndef PNG_ABORT +# ifdef _WINDOWS_ +# define PNG_ABORT() ExitProcess(0) +# else +# define PNG_ABORT() abort() +# endif +#endif + +#ifdef USE_FAR_KEYWORD +/* Use this to make far-to-near assignments */ +# define CHECK 1 +# define NOCHECK 0 +# define CVT_PTR(ptr) (png_far_to_near(png_ptr,ptr,CHECK)) +# define CVT_PTR_NOCHECK(ptr) (png_far_to_near(png_ptr,ptr,NOCHECK)) +# define png_strcpy _fstrcpy +# define png_strncpy _fstrncpy /* Added to v 1.2.6 */ +# define png_strlen _fstrlen +# define png_memcmp _fmemcmp /* SJT: added */ +# define png_memcpy _fmemcpy +# define png_memset _fmemset +# define png_sprintf sprintf +#else +# ifdef _WINDOWS_ /* Favor Windows over C runtime fns */ +# define CVT_PTR(ptr) (ptr) +# define CVT_PTR_NOCHECK(ptr) (ptr) +# define png_strcpy lstrcpyA +# define png_strncpy lstrcpynA +# define png_strlen lstrlenA +# define png_memcmp memcmp +# define png_memcpy CopyMemory +# define png_memset memset +# define png_sprintf wsprintfA +# else +# define CVT_PTR(ptr) (ptr) +# define CVT_PTR_NOCHECK(ptr) (ptr) +# define png_strcpy strcpy +# define png_strncpy strncpy /* Added to v 1.2.6 */ +# define png_strlen strlen +# define png_memcmp memcmp /* SJT: added */ +# define png_memcpy memcpy +# define png_memset memset +# define png_sprintf sprintf +# endif +#endif +/* End of memory model/platform independent support */ + +#ifndef PNG_NO_SNPRINTF +# ifdef _MSC_VER +# define png_snprintf _snprintf /* Added to v 1.2.19 */ +# define png_snprintf2 _snprintf +# define png_snprintf6 _snprintf +# else +# define png_snprintf snprintf /* Added to v 1.2.19 */ +# define png_snprintf2 snprintf +# define png_snprintf6 snprintf +# endif +#else + /* You don't have or don't want to use snprintf(). Caution: Using + * sprintf instead of snprintf exposes your application to accidental + * or malevolent buffer overflows. If you don't have snprintf() + * as a general rule you should provide one (you can get one from + * Portable OpenSSH). + */ +# define png_snprintf(s1,n,fmt,x1) png_sprintf(s1,fmt,x1) +# define png_snprintf2(s1,n,fmt,x1,x2) png_sprintf(s1,fmt,x1,x2) +# define png_snprintf6(s1,n,fmt,x1,x2,x3,x4,x5,x6) \ + png_sprintf(s1,fmt,x1,x2,x3,x4,x5,x6) +#endif +/* End of 1.5.0beta36 move from pngconf.h */ + +/* CONSTANTS and UTILITY MACROS + * These are used internally by libpng and not exposed in the API + */ + /* Various modes of operation. Note that after an init, mode is set to * zero automatically when the structure is created. */ @@ -104,10 +285,10 @@ #define PNG_SHIFT 0x0008 #define PNG_SWAP_BYTES 0x0010 #define PNG_INVERT_MONO 0x0020 -#define PNG_QUANTIZE 0x0040 /* formerly PNG_DITHER */ +#define PNG_QUANTIZE 0x0040 #define PNG_BACKGROUND 0x0080 #define PNG_BACKGROUND_EXPAND 0x0100 - /* 0x0200 unused */ +#define PNG_EXPAND_16 0x0200 /* Added to libpng 1.5.2 */ #define PNG_16_TO_8 0x0400 #define PNG_RGBA 0x0800 #define PNG_EXPAND 0x1000 @@ -136,9 +317,7 @@ #define PNG_STRUCT_INFO 0x0002 /* Scaling factor for filter heuristic weighting calculations */ -#define PNG_WEIGHT_SHIFT 8 #define PNG_WEIGHT_FACTOR (1<<(PNG_WEIGHT_SHIFT)) -#define PNG_COST_SHIFT 3 #define PNG_COST_FACTOR (1<<(PNG_COST_SHIFT)) /* Flags for the png_ptr->flags rather than declaring a byte for each one */ @@ -163,8 +342,8 @@ #define PNG_FLAG_STRIP_ERROR_NUMBERS 0x40000L #define PNG_FLAG_STRIP_ERROR_TEXT 0x80000L #define PNG_FLAG_MALLOC_NULL_MEM_OK 0x100000L -#define PNG_FLAG_ADD_ALPHA 0x200000L /* Added to libpng-1.2.8 */ -#define PNG_FLAG_STRIP_ALPHA 0x400000L /* Added to libpng-1.2.8 */ + /* 0x200000L unused */ + /* 0x400000L unused */ #define PNG_FLAG_BENIGN_ERRORS_WARN 0x800000L /* Added to libpng-1.4.0 */ /* 0x1000000L unused */ /* 0x2000000L unused */ @@ -183,6 +362,18 @@ #define PNG_FLAG_CRC_MASK (PNG_FLAG_CRC_ANCILLARY_MASK | \ PNG_FLAG_CRC_CRITICAL_MASK) +/* zlib.h declares a magic type 'uInt' that limits the amount of data that zlib + * can handle at once. This type need be no larger than 16 bits (so maximum of + * 65535), this define allows us to discover how big it is, but limited by the + * maximuum for png_size_t. The value can be overriden in a library build + * (pngusr.h, or set it in CPPFLAGS) and it works to set it to a considerably + * lower value (e.g. 255 works). A lower value may help memory usage (slightly) + * and may even improve performance on some systems (and degrade it on others.) + */ +#ifndef ZLIB_IO_MAX +# define ZLIB_IO_MAX ((uInt)-1) +#endif + /* Save typing and make code easier to understand */ #define PNG_COLOR_DIST(c1, c2) (abs((int)((c1).red) - (int)((c2).red)) + \ @@ -201,7 +392,46 @@ * integers, "value" a variable. Added to libpng-1.2.6 JB */ #define PNG_OUT_OF_RANGE(value, ideal, delta) \ - ( (value) < (ideal)-(delta) || (value) > (ideal)+(delta) ) + ( (value) < (ideal)-(delta) || (value) > (ideal)+(delta) ) + +/* Conversions between fixed and floating point, only defined if + * required (to make sure the code doesn't accidentally use float + * when it is supposedly disabled.) + */ +#ifdef PNG_FLOATING_POINT_SUPPORTED +/* The floating point conversion can't overflow, though it can and + * does lose accuracy relative to the original fixed point value. + * In practice this doesn't matter because png_fixed_point only + * stores numbers with very low precision. The png_ptr and s + * arguments are unused by default but are there in case error + * checking becomes a requirement. + */ +#define png_float(png_ptr, fixed, s) (.00001 * (fixed)) + +/* The fixed point conversion performs range checking and evaluates + * its argument multiple times, so must be used with care. The + * range checking uses the PNG specification values for a signed + * 32 bit fixed point value except that the values are deliberately + * rounded-to-zero to an integral value - 21474 (21474.83 is roughly + * (2^31-1) * 100000). 's' is a string that describes the value being + * converted. + * + * NOTE: this macro will raise a png_error if the range check fails, + * therefore it is normally only appropriate to use this on values + * that come from API calls or other sources where an out of range + * error indicates a programming error, not a data error! + * + * NOTE: by default this is off - the macro is not used - because the + * function call saves a lot of code. + */ +#ifdef PNG_FIXED_POINT_MACRO_SUPPORTED +#define png_fixed(png_ptr, fp, s) ((fp) <= 21474 && (fp) >= -21474 ?\ + ((png_fixed_point)(100000 * (fp))) : (png_fixed_error(png_ptr, s),0)) +#else +PNG_EXTERN png_fixed_point png_fixed PNGARG((png_structp png_ptr, double fp, + png_const_charp text)); +#endif +#endif /* Constant strings for known chunk types. If you need to add a chunk, * define the name here, and add an invocation of the macro wherever it's @@ -243,70 +473,78 @@ extern "C" { */ /* Allocate memory for an internal libpng struct */ -PNG_EXTERN png_voidp png_create_struct PNGARG((int type)); +PNG_EXTERN PNG_FUNCTION(png_voidp,png_create_struct,PNGARG((int type)), + PNG_ALLOCATED); /* Free memory from internal libpng struct */ PNG_EXTERN void png_destroy_struct PNGARG((png_voidp struct_ptr)); -PNG_EXTERN png_voidp png_create_struct_2 PNGARG((int type, png_malloc_ptr - malloc_fn, png_voidp mem_ptr)); +PNG_EXTERN PNG_FUNCTION(png_voidp,png_create_struct_2, + PNGARG((int type, png_malloc_ptr malloc_fn, png_voidp mem_ptr)), + PNG_ALLOCATED); PNG_EXTERN void png_destroy_struct_2 PNGARG((png_voidp struct_ptr, - png_free_ptr free_fn, png_voidp mem_ptr)); + png_free_ptr free_fn, png_voidp mem_ptr)); /* Free any memory that info_ptr points to and reset struct. */ PNG_EXTERN void png_info_destroy PNGARG((png_structp png_ptr, - png_infop info_ptr)); + png_infop info_ptr)); /* Function to allocate memory for zlib. PNGAPI is disallowed. */ -PNG_EXTERN voidpf png_zalloc PNGARG((voidpf png_ptr, uInt items, uInt size)); +PNG_EXTERN PNG_FUNCTION(voidpf,png_zalloc,PNGARG((voidpf png_ptr, uInt items, + uInt size)),PNG_ALLOCATED); /* Function to free memory for zlib. PNGAPI is disallowed. */ PNG_EXTERN void png_zfree PNGARG((voidpf png_ptr, voidpf ptr)); -/* Next four functions are used internally as callbacks. PNGAPI is required - * but not PNG_EXPORT. PNGAPI added at libpng version 1.2.3. */ +/* Next four functions are used internally as callbacks. PNGCBAPI is required + * but not PNG_EXPORT. PNGAPI added at libpng version 1.2.3, changed to + * PNGCBAPI at 1.5.0 + */ -PNG_EXTERN void PNGAPI png_default_read_data PNGARG((png_structp png_ptr, - png_bytep data, png_size_t length)); +PNG_EXTERN void PNGCBAPI png_default_read_data PNGARG((png_structp png_ptr, + png_bytep data, png_size_t length)); #ifdef PNG_PROGRESSIVE_READ_SUPPORTED -PNG_EXTERN void PNGAPI png_push_fill_buffer PNGARG((png_structp png_ptr, - png_bytep buffer, png_size_t length)); +PNG_EXTERN void PNGCBAPI png_push_fill_buffer PNGARG((png_structp png_ptr, + png_bytep buffer, png_size_t length)); #endif -PNG_EXTERN void PNGAPI png_default_write_data PNGARG((png_structp png_ptr, - png_bytep data, png_size_t length)); +PNG_EXTERN void PNGCBAPI png_default_write_data PNGARG((png_structp png_ptr, + png_bytep data, png_size_t length)); #ifdef PNG_WRITE_FLUSH_SUPPORTED -#ifdef PNG_STDIO_SUPPORTED -PNG_EXTERN void PNGAPI png_default_flush PNGARG((png_structp png_ptr)); -#endif +# ifdef PNG_STDIO_SUPPORTED +PNG_EXTERN void PNGCBAPI png_default_flush PNGARG((png_structp png_ptr)); +# endif #endif /* Reset the CRC variable */ PNG_EXTERN void png_reset_crc PNGARG((png_structp png_ptr)); /* Write the "data" buffer to whatever output you are using */ -PNG_EXTERN void png_write_data PNGARG((png_structp png_ptr, png_bytep data, - png_size_t length)); +PNG_EXTERN void png_write_data PNGARG((png_structp png_ptr, + png_const_bytep data, png_size_t length)); + +/* Read and check the PNG file signature */ +PNG_EXTERN void png_read_sig PNGARG((png_structp png_ptr, png_infop info_ptr)); /* Read the chunk header (length + type name) */ PNG_EXTERN png_uint_32 png_read_chunk_header PNGARG((png_structp png_ptr)); /* Read data from whatever input you are using into the "data" buffer */ PNG_EXTERN void png_read_data PNGARG((png_structp png_ptr, png_bytep data, - png_size_t length)); + png_size_t length)); /* Read bytes into buf, and update png_ptr->crc */ PNG_EXTERN void png_crc_read PNGARG((png_structp png_ptr, png_bytep buf, - png_size_t length)); + png_size_t length)); /* Decompress data in a chunk that uses compression */ #if defined(PNG_zTXt_SUPPORTED) || defined(PNG_iTXt_SUPPORTED) || \ defined(PNG_iCCP_SUPPORTED) || defined(PNG_sPLT_SUPPORTED) PNG_EXTERN void png_decompress_chunk PNGARG((png_structp png_ptr, - int comp_type, png_size_t chunklength, png_size_t prefix_length, - png_size_t *data_length)); + int comp_type, png_size_t chunklength, png_size_t prefix_length, + png_size_t *data_length)); #endif /* Read "skip" bytes, read the file crc, and (optionally) verify png_ptr->crc */ @@ -319,8 +557,8 @@ PNG_EXTERN int png_crc_error PNGARG((png_structp png_ptr)); * passing a maximum of 64K on systems that have this as a memory limit, * since this is the maximum buffer size we can specify. */ -PNG_EXTERN void png_calculate_crc PNGARG((png_structp png_ptr, png_bytep ptr, - png_size_t length)); +PNG_EXTERN void png_calculate_crc PNGARG((png_structp png_ptr, + png_const_bytep ptr, png_size_t length)); #ifdef PNG_WRITE_FLUSH_SUPPORTED PNG_EXTERN void png_flush PNGARG((png_structp png_ptr)); @@ -332,138 +570,132 @@ PNG_EXTERN void png_flush PNGARG((png_structp png_ptr)); * information. */ PNG_EXTERN void png_write_IHDR PNGARG((png_structp png_ptr, png_uint_32 width, - png_uint_32 height, - int bit_depth, int color_type, int compression_method, int filter_method, - int interlace_method)); + png_uint_32 height, + int bit_depth, int color_type, int compression_method, int filter_method, + int interlace_method)); -PNG_EXTERN void png_write_PLTE PNGARG((png_structp png_ptr, png_colorp palette, - png_uint_32 num_pal)); +PNG_EXTERN void png_write_PLTE PNGARG((png_structp png_ptr, + png_const_colorp palette, png_uint_32 num_pal)); PNG_EXTERN void png_write_IDAT PNGARG((png_structp png_ptr, png_bytep data, - png_size_t length)); + png_size_t length)); PNG_EXTERN void png_write_IEND PNGARG((png_structp png_ptr)); #ifdef PNG_WRITE_gAMA_SUPPORTED -#ifdef PNG_FLOATING_POINT_SUPPORTED +# ifdef PNG_FLOATING_POINT_SUPPORTED PNG_EXTERN void png_write_gAMA PNGARG((png_structp png_ptr, double file_gamma)); -#endif -#ifdef PNG_FIXED_POINT_SUPPORTED +# endif +# ifdef PNG_FIXED_POINT_SUPPORTED PNG_EXTERN void png_write_gAMA_fixed PNGARG((png_structp png_ptr, png_fixed_point file_gamma)); -#endif +# endif #endif #ifdef PNG_WRITE_sBIT_SUPPORTED -PNG_EXTERN void png_write_sBIT PNGARG((png_structp png_ptr, png_color_8p sbit, - int color_type)); +PNG_EXTERN void png_write_sBIT PNGARG((png_structp png_ptr, + png_const_color_8p sbit, int color_type)); #endif #ifdef PNG_WRITE_cHRM_SUPPORTED -#ifdef PNG_FLOATING_POINT_SUPPORTED +# ifdef PNG_FLOATING_POINT_SUPPORTED PNG_EXTERN void png_write_cHRM PNGARG((png_structp png_ptr, - double white_x, double white_y, - double red_x, double red_y, double green_x, double green_y, - double blue_x, double blue_y)); -#endif + double white_x, double white_y, + double red_x, double red_y, double green_x, double green_y, + double blue_x, double blue_y)); +# endif PNG_EXTERN void png_write_cHRM_fixed PNGARG((png_structp png_ptr, - png_fixed_point int_white_x, png_fixed_point int_white_y, - png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point - int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x, - png_fixed_point int_blue_y)); + png_fixed_point int_white_x, png_fixed_point int_white_y, + png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point + int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x, + png_fixed_point int_blue_y)); #endif #ifdef PNG_WRITE_sRGB_SUPPORTED PNG_EXTERN void png_write_sRGB PNGARG((png_structp png_ptr, - int intent)); + int intent)); #endif #ifdef PNG_WRITE_iCCP_SUPPORTED PNG_EXTERN void png_write_iCCP PNGARG((png_structp png_ptr, - png_charp name, int compression_type, - png_charp profile, int proflen)); + png_const_charp name, int compression_type, + png_const_charp profile, int proflen)); /* Note to maintainer: profile should be png_bytep */ #endif #ifdef PNG_WRITE_sPLT_SUPPORTED PNG_EXTERN void png_write_sPLT PNGARG((png_structp png_ptr, - png_sPLT_tp palette)); + png_const_sPLT_tp palette)); #endif #ifdef PNG_WRITE_tRNS_SUPPORTED -PNG_EXTERN void png_write_tRNS PNGARG((png_structp png_ptr, png_bytep trans, - png_color_16p values, int number, int color_type)); +PNG_EXTERN void png_write_tRNS PNGARG((png_structp png_ptr, + png_const_bytep trans, png_const_color_16p values, int number, + int color_type)); #endif #ifdef PNG_WRITE_bKGD_SUPPORTED PNG_EXTERN void png_write_bKGD PNGARG((png_structp png_ptr, - png_color_16p values, int color_type)); + png_const_color_16p values, int color_type)); #endif #ifdef PNG_WRITE_hIST_SUPPORTED -PNG_EXTERN void png_write_hIST PNGARG((png_structp png_ptr, png_uint_16p hist, - int num_hist)); +PNG_EXTERN void png_write_hIST PNGARG((png_structp png_ptr, + png_const_uint_16p hist, int num_hist)); #endif #if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED) || \ defined(PNG_WRITE_iCCP_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED) PNG_EXTERN png_size_t png_check_keyword PNGARG((png_structp png_ptr, - png_charp key, png_charpp new_key)); + png_const_charp key, png_charpp new_key)); #endif #ifdef PNG_WRITE_tEXt_SUPPORTED -PNG_EXTERN void png_write_tEXt PNGARG((png_structp png_ptr, png_charp key, - png_charp text, png_size_t text_len)); +PNG_EXTERN void png_write_tEXt PNGARG((png_structp png_ptr, png_const_charp key, + png_const_charp text, png_size_t text_len)); #endif #ifdef PNG_WRITE_zTXt_SUPPORTED -PNG_EXTERN void png_write_zTXt PNGARG((png_structp png_ptr, png_charp key, - png_charp text, png_size_t text_len, int compression)); +PNG_EXTERN void png_write_zTXt PNGARG((png_structp png_ptr, png_const_charp key, + png_const_charp text, png_size_t text_len, int compression)); #endif #ifdef PNG_WRITE_iTXt_SUPPORTED PNG_EXTERN void png_write_iTXt PNGARG((png_structp png_ptr, - int compression, png_charp key, png_charp lang, png_charp lang_key, - png_charp text)); + int compression, png_const_charp key, png_const_charp lang, + png_const_charp lang_key, png_const_charp text)); #endif #ifdef PNG_TEXT_SUPPORTED /* Added at version 1.0.14 and 1.2.4 */ PNG_EXTERN int png_set_text_2 PNGARG((png_structp png_ptr, - png_infop info_ptr, png_textp text_ptr, int num_text)); + png_infop info_ptr, png_const_textp text_ptr, int num_text)); #endif #ifdef PNG_WRITE_oFFs_SUPPORTED PNG_EXTERN void png_write_oFFs PNGARG((png_structp png_ptr, - png_int_32 x_offset, png_int_32 y_offset, int unit_type)); + png_int_32 x_offset, png_int_32 y_offset, int unit_type)); #endif #ifdef PNG_WRITE_pCAL_SUPPORTED PNG_EXTERN void png_write_pCAL PNGARG((png_structp png_ptr, png_charp purpose, - png_int_32 X0, png_int_32 X1, int type, int nparams, - png_charp units, png_charpp params)); + png_int_32 X0, png_int_32 X1, int type, int nparams, + png_const_charp units, png_charpp params)); #endif #ifdef PNG_WRITE_pHYs_SUPPORTED PNG_EXTERN void png_write_pHYs PNGARG((png_structp png_ptr, - png_uint_32 x_pixels_per_unit, png_uint_32 y_pixels_per_unit, - int unit_type)); + png_uint_32 x_pixels_per_unit, png_uint_32 y_pixels_per_unit, + int unit_type)); #endif #ifdef PNG_WRITE_tIME_SUPPORTED PNG_EXTERN void png_write_tIME PNGARG((png_structp png_ptr, - png_timep mod_time)); + png_const_timep mod_time)); #endif #ifdef PNG_WRITE_sCAL_SUPPORTED -#if defined(PNG_FLOATING_POINT_SUPPORTED) && defined(PNG_STDIO_SUPPORTED) -PNG_EXTERN void png_write_sCAL PNGARG((png_structp png_ptr, - int unit, double width, double height)); -#else -#ifdef PNG_FIXED_POINT_SUPPORTED PNG_EXTERN void png_write_sCAL_s PNGARG((png_structp png_ptr, - int unit, png_charp width, png_charp height)); -#endif -#endif + int unit, png_const_charp width, png_const_charp height)); #endif /* Called when finished processing a row of data */ @@ -472,20 +704,15 @@ PNG_EXTERN void png_write_finish_row PNGARG((png_structp png_ptr)); /* Internal use only. Called before first row of data */ PNG_EXTERN void png_write_start_row PNGARG((png_structp png_ptr)); -#ifdef PNG_READ_GAMMA_SUPPORTED -PNG_EXTERN void png_build_gamma_table PNGARG((png_structp png_ptr, - png_byte bit_depth)); -#endif - /* Combine a row of data, dealing with alpha, etc. if requested */ PNG_EXTERN void png_combine_row PNGARG((png_structp png_ptr, png_bytep row, - int mask)); + int mask)); #ifdef PNG_READ_INTERLACING_SUPPORTED /* Expand an interlaced row */ /* OLD pre-1.0.9 interface: PNG_EXTERN void png_do_read_interlace PNGARG((png_row_infop row_info, - png_bytep row, int pass, png_uint_32 transformations)); + png_bytep row, int pass, png_uint_32 transformations)); */ PNG_EXTERN void png_do_read_interlace PNGARG((png_structp png_ptr)); #endif @@ -495,20 +722,21 @@ PNG_EXTERN void png_do_read_interlace PNGARG((png_structp png_ptr)); #ifdef PNG_WRITE_INTERLACING_SUPPORTED /* Grab pixels out of a row for an interlaced pass */ PNG_EXTERN void png_do_write_interlace PNGARG((png_row_infop row_info, - png_bytep row, int pass)); + png_bytep row, int pass)); #endif /* Unfilter a row */ PNG_EXTERN void png_read_filter_row PNGARG((png_structp png_ptr, - png_row_infop row_info, png_bytep row, png_bytep prev_row, int filter)); + png_row_infop row_info, png_bytep row, png_const_bytep prev_row, + int filter)); /* Choose the best filter to use and filter the row data */ PNG_EXTERN void png_write_find_filter PNGARG((png_structp png_ptr, - png_row_infop row_info)); + png_row_infop row_info)); /* Write out the filtered row. */ PNG_EXTERN void png_write_filtered_row PNGARG((png_structp png_ptr, - png_bytep filtered_row)); + png_bytep filtered_row)); /* Finish a row while reading, dealing with interlacing passes, etc. */ PNG_EXTERN void png_read_finish_row PNGARG((png_structp png_ptr)); @@ -516,88 +744,97 @@ PNG_EXTERN void png_read_finish_row PNGARG((png_structp png_ptr)); PNG_EXTERN void png_read_start_row PNGARG((png_structp png_ptr)); /* Optional call to update the users info structure */ PNG_EXTERN void png_read_transform_info PNGARG((png_structp png_ptr, - png_infop info_ptr)); + png_infop info_ptr)); /* These are the functions that do the transformations */ #ifdef PNG_READ_FILLER_SUPPORTED PNG_EXTERN void png_do_read_filler PNGARG((png_row_infop row_info, - png_bytep row, png_uint_32 filler, png_uint_32 flags)); + png_bytep row, png_uint_32 filler, png_uint_32 flags)); #endif #ifdef PNG_READ_SWAP_ALPHA_SUPPORTED PNG_EXTERN void png_do_read_swap_alpha PNGARG((png_row_infop row_info, - png_bytep row)); + png_bytep row)); #endif #ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED PNG_EXTERN void png_do_write_swap_alpha PNGARG((png_row_infop row_info, - png_bytep row)); + png_bytep row)); #endif #ifdef PNG_READ_INVERT_ALPHA_SUPPORTED PNG_EXTERN void png_do_read_invert_alpha PNGARG((png_row_infop row_info, - png_bytep row)); + png_bytep row)); #endif #ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED PNG_EXTERN void png_do_write_invert_alpha PNGARG((png_row_infop row_info, - png_bytep row)); + png_bytep row)); #endif #if defined(PNG_WRITE_FILLER_SUPPORTED) || \ defined(PNG_READ_STRIP_ALPHA_SUPPORTED) -PNG_EXTERN void png_do_strip_filler PNGARG((png_row_infop row_info, - png_bytep row, png_uint_32 flags)); +PNG_EXTERN void png_do_strip_channel PNGARG((png_row_infop row_info, + png_bytep row, int at_start)); #endif +#ifdef PNG_16BIT_SUPPORTED #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) -PNG_EXTERN void png_do_swap PNGARG((png_row_infop row_info, png_bytep row)); +PNG_EXTERN void png_do_swap PNGARG((png_row_infop row_info, + png_bytep row)); +#endif #endif #if defined(PNG_READ_PACKSWAP_SUPPORTED) || \ defined(PNG_WRITE_PACKSWAP_SUPPORTED) -PNG_EXTERN void png_do_packswap PNGARG((png_row_infop row_info, png_bytep row)); +PNG_EXTERN void png_do_packswap PNGARG((png_row_infop row_info, + png_bytep row)); #endif #ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -PNG_EXTERN int png_do_rgb_to_gray PNGARG((png_structp png_ptr, png_row_infop - row_info, png_bytep row)); +PNG_EXTERN int png_do_rgb_to_gray PNGARG((png_structp png_ptr, + png_row_infop row_info, png_bytep row)); #endif #ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED PNG_EXTERN void png_do_gray_to_rgb PNGARG((png_row_infop row_info, - png_bytep row)); + png_bytep row)); #endif #ifdef PNG_READ_PACK_SUPPORTED -PNG_EXTERN void png_do_unpack PNGARG((png_row_infop row_info, png_bytep row)); +PNG_EXTERN void png_do_unpack PNGARG((png_row_infop row_info, + png_bytep row)); #endif #ifdef PNG_READ_SHIFT_SUPPORTED -PNG_EXTERN void png_do_unshift PNGARG((png_row_infop row_info, png_bytep row, - png_color_8p sig_bits)); +PNG_EXTERN void png_do_unshift PNGARG((png_row_infop row_info, + png_bytep row, png_const_color_8p sig_bits)); #endif #if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) -PNG_EXTERN void png_do_invert PNGARG((png_row_infop row_info, png_bytep row)); +PNG_EXTERN void png_do_invert PNGARG((png_row_infop row_info, + png_bytep row)); #endif #ifdef PNG_READ_16_TO_8_SUPPORTED -PNG_EXTERN void png_do_chop PNGARG((png_row_infop row_info, png_bytep row)); +PNG_EXTERN void png_do_chop PNGARG((png_row_infop row_info, + png_bytep row)); #endif #ifdef PNG_READ_QUANTIZE_SUPPORTED PNG_EXTERN void png_do_quantize PNGARG((png_row_infop row_info, - png_bytep row, png_bytep palette_lookup, png_bytep quantize_lookup)); + png_bytep row, png_const_bytep palette_lookup, + png_const_bytep quantize_lookup)); # ifdef PNG_CORRECT_PALETTE_SUPPORTED PNG_EXTERN void png_correct_palette PNGARG((png_structp png_ptr, - png_colorp palette, int num_palette)); + png_colorp palette, int num_palette)); # endif #endif #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) -PNG_EXTERN void png_do_bgr PNGARG((png_row_infop row_info, png_bytep row)); +PNG_EXTERN void png_do_bgr PNGARG((png_row_infop row_info, + png_bytep row)); #endif #ifdef PNG_WRITE_PACK_SUPPORTED @@ -606,35 +843,43 @@ PNG_EXTERN void png_do_pack PNGARG((png_row_infop row_info, #endif #ifdef PNG_WRITE_SHIFT_SUPPORTED -PNG_EXTERN void png_do_shift PNGARG((png_row_infop row_info, png_bytep row, - png_color_8p bit_depth)); +PNG_EXTERN void png_do_shift PNGARG((png_row_infop row_info, + png_bytep row, png_const_color_8p bit_depth)); #endif #ifdef PNG_READ_BACKGROUND_SUPPORTED -#ifdef PNG_READ_GAMMA_SUPPORTED -PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, png_bytep row, - png_color_16p trans_color, png_color_16p background, - png_color_16p background_1, - png_bytep gamma_table, png_bytep gamma_from_1, png_bytep gamma_to_1, - png_uint_16pp gamma_16, png_uint_16pp gamma_16_from_1, - png_uint_16pp gamma_16_to_1, int gamma_shift)); -#else -PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, png_bytep row, - png_color_16p trans_color, png_color_16p background)); -#endif +# ifdef PNG_READ_GAMMA_SUPPORTED +PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, + png_bytep row, png_const_color_16p trans_color, + png_const_color_16p background, png_const_color_16p background_1, + png_const_bytep gamma_table, png_const_bytep gamma_from_1, + png_const_bytep gamma_to_1, png_const_uint_16pp gamma_16, + png_const_uint_16pp gamma_16_from_1, png_const_uint_16pp gamma_16_to_1, + int gamma_shift)); +# else +PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, + png_bytep row, png_const_color_16p trans_color, + png_const_color_16p background)); +# endif #endif #ifdef PNG_READ_GAMMA_SUPPORTED -PNG_EXTERN void png_do_gamma PNGARG((png_row_infop row_info, png_bytep row, - png_bytep gamma_table, png_uint_16pp gamma_16_table, - int gamma_shift)); +PNG_EXTERN void png_do_gamma PNGARG((png_row_infop row_info, + png_bytep row, png_const_bytep gamma_table, + png_const_uint_16pp gamma_16_table, int gamma_shift)); #endif #ifdef PNG_READ_EXPAND_SUPPORTED PNG_EXTERN void png_do_expand_palette PNGARG((png_row_infop row_info, - png_bytep row, png_colorp palette, png_bytep trans, int num_trans)); + png_bytep row, png_const_colorp palette, png_const_bytep trans, + int num_trans)); PNG_EXTERN void png_do_expand PNGARG((png_row_infop row_info, - png_bytep row, png_color_16p trans_value)); + png_bytep row, png_const_color_16p trans_color)); +#endif + +#ifdef PNG_READ_EXPAND_16_SUPPORTED +PNG_EXTERN void png_do_expand_16 PNGARG((png_row_infop row_info, + png_bytep row)); #endif /* The following decodes the appropriate chunks, and does error correction, @@ -643,102 +888,102 @@ PNG_EXTERN void png_do_expand PNGARG((png_row_infop row_info, /* Decode the IHDR chunk */ PNG_EXTERN void png_handle_IHDR PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); PNG_EXTERN void png_handle_PLTE PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); PNG_EXTERN void png_handle_IEND PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); #ifdef PNG_READ_bKGD_SUPPORTED PNG_EXTERN void png_handle_bKGD PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); #endif #ifdef PNG_READ_cHRM_SUPPORTED PNG_EXTERN void png_handle_cHRM PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); #endif #ifdef PNG_READ_gAMA_SUPPORTED PNG_EXTERN void png_handle_gAMA PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); #endif #ifdef PNG_READ_hIST_SUPPORTED PNG_EXTERN void png_handle_hIST PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); #endif #ifdef PNG_READ_iCCP_SUPPORTED PNG_EXTERN void png_handle_iCCP PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); #endif /* PNG_READ_iCCP_SUPPORTED */ #ifdef PNG_READ_iTXt_SUPPORTED PNG_EXTERN void png_handle_iTXt PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); #endif #ifdef PNG_READ_oFFs_SUPPORTED PNG_EXTERN void png_handle_oFFs PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); #endif #ifdef PNG_READ_pCAL_SUPPORTED PNG_EXTERN void png_handle_pCAL PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); #endif #ifdef PNG_READ_pHYs_SUPPORTED PNG_EXTERN void png_handle_pHYs PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); #endif #ifdef PNG_READ_sBIT_SUPPORTED PNG_EXTERN void png_handle_sBIT PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); #endif #ifdef PNG_READ_sCAL_SUPPORTED PNG_EXTERN void png_handle_sCAL PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); #endif #ifdef PNG_READ_sPLT_SUPPORTED PNG_EXTERN void png_handle_sPLT PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); #endif /* PNG_READ_sPLT_SUPPORTED */ #ifdef PNG_READ_sRGB_SUPPORTED PNG_EXTERN void png_handle_sRGB PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); #endif #ifdef PNG_READ_tEXt_SUPPORTED PNG_EXTERN void png_handle_tEXt PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); #endif #ifdef PNG_READ_tIME_SUPPORTED PNG_EXTERN void png_handle_tIME PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); #endif #ifdef PNG_READ_tRNS_SUPPORTED PNG_EXTERN void png_handle_tRNS PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); #endif #ifdef PNG_READ_zTXt_SUPPORTED PNG_EXTERN void png_handle_zTXt PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); + png_uint_32 length)); #endif PNG_EXTERN void png_handle_unknown PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 length)); + png_infop info_ptr, png_uint_32 length)); PNG_EXTERN void png_check_chunk_name PNGARG((png_structp png_ptr, - png_bytep chunk_name)); + png_const_bytep chunk_name)); /* Handle the transformations for reading and writing */ PNG_EXTERN void png_do_read_transformations PNGARG((png_structp png_ptr)); @@ -748,19 +993,19 @@ PNG_EXTERN void png_init_read_transformations PNGARG((png_structp png_ptr)); #ifdef PNG_PROGRESSIVE_READ_SUPPORTED PNG_EXTERN void png_push_read_chunk PNGARG((png_structp png_ptr, - png_infop info_ptr)); + png_infop info_ptr)); PNG_EXTERN void png_push_read_sig PNGARG((png_structp png_ptr, - png_infop info_ptr)); + png_infop info_ptr)); PNG_EXTERN void png_push_check_crc PNGARG((png_structp png_ptr)); PNG_EXTERN void png_push_crc_skip PNGARG((png_structp png_ptr, - png_uint_32 length)); + png_uint_32 length)); PNG_EXTERN void png_push_crc_finish PNGARG((png_structp png_ptr)); PNG_EXTERN void png_push_save_buffer PNGARG((png_structp png_ptr)); PNG_EXTERN void png_push_restore_buffer PNGARG((png_structp png_ptr, - png_bytep buffer, png_size_t buffer_length)); + png_bytep buffer, png_size_t buffer_length)); PNG_EXTERN void png_push_read_IDAT PNGARG((png_structp png_ptr)); PNG_EXTERN void png_process_IDAT_data PNGARG((png_structp png_ptr, - png_bytep buffer, png_size_t buffer_length)); + png_bytep buffer, png_size_t buffer_length)); PNG_EXTERN void png_push_process_row PNGARG((png_structp png_ptr)); PNG_EXTERN void png_push_handle_unknown PNGARG((png_structp png_ptr, png_infop info_ptr, png_uint_32 length)); @@ -770,185 +1015,232 @@ PNG_EXTERN void png_push_have_end PNGARG((png_structp png_ptr, png_infop info_ptr)); PNG_EXTERN void png_push_have_row PNGARG((png_structp png_ptr, png_bytep row)); PNG_EXTERN void png_push_read_end PNGARG((png_structp png_ptr, - png_infop info_ptr)); + png_infop info_ptr)); PNG_EXTERN void png_process_some_data PNGARG((png_structp png_ptr, - png_infop info_ptr)); + png_infop info_ptr)); PNG_EXTERN void png_read_push_finish_row PNGARG((png_structp png_ptr)); -#ifdef PNG_READ_tEXt_SUPPORTED +# ifdef PNG_READ_tEXt_SUPPORTED PNG_EXTERN void png_push_handle_tEXt PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 length)); + png_infop info_ptr, png_uint_32 length)); PNG_EXTERN void png_push_read_tEXt PNGARG((png_structp png_ptr, - png_infop info_ptr)); -#endif -#ifdef PNG_READ_zTXt_SUPPORTED + png_infop info_ptr)); +# endif +# ifdef PNG_READ_zTXt_SUPPORTED PNG_EXTERN void png_push_handle_zTXt PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 length)); + png_infop info_ptr, png_uint_32 length)); PNG_EXTERN void png_push_read_zTXt PNGARG((png_structp png_ptr, - png_infop info_ptr)); -#endif -#ifdef PNG_READ_iTXt_SUPPORTED + png_infop info_ptr)); +# endif +# ifdef PNG_READ_iTXt_SUPPORTED PNG_EXTERN void png_push_handle_iTXt PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 length)); + png_infop info_ptr, png_uint_32 length)); PNG_EXTERN void png_push_read_iTXt PNGARG((png_structp png_ptr, - png_infop info_ptr)); -#endif + png_infop info_ptr)); +# endif #endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ #ifdef PNG_MNG_FEATURES_SUPPORTED PNG_EXTERN void png_do_read_intrapixel PNGARG((png_row_infop row_info, - png_bytep row)); + png_bytep row)); PNG_EXTERN void png_do_write_intrapixel PNGARG((png_row_infop row_info, - png_bytep row)); + png_bytep row)); #endif /* Added at libpng version 1.4.0 */ -#ifdef PNG_cHRM_SUPPORTED +#ifdef PNG_CHECK_cHRM_SUPPORTED PNG_EXTERN int png_check_cHRM_fixed PNGARG((png_structp png_ptr, - png_fixed_point int_white_x, png_fixed_point int_white_y, - png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point - int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x, - png_fixed_point int_blue_y)); + png_fixed_point int_white_x, png_fixed_point int_white_y, + png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point + int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x, + png_fixed_point int_blue_y)); #endif -#ifdef PNG_cHRM_SUPPORTED #ifdef PNG_CHECK_cHRM_SUPPORTED /* Added at libpng version 1.2.34 and 1.4.0 */ +/* Currently only used by png_check_cHRM_fixed */ PNG_EXTERN void png_64bit_product PNGARG((long v1, long v2, - unsigned long *hi_product, unsigned long *lo_product)); -#endif + unsigned long *hi_product, unsigned long *lo_product)); #endif /* Added at libpng version 1.4.0 */ PNG_EXTERN void png_check_IHDR PNGARG((png_structp png_ptr, - png_uint_32 width, png_uint_32 height, int bit_depth, - int color_type, int interlace_type, int compression_type, - int filter_type)); + png_uint_32 width, png_uint_32 height, int bit_depth, + int color_type, int interlace_type, int compression_type, + int filter_type)); /* Free all memory used by the read (old method - NOT DLL EXPORTED) */ -PNG_EXTERN void png_read_destroy PNGARG((png_structp png_ptr, png_infop info_ptr, - png_infop end_info_ptr)); +PNG_EXTERN void png_read_destroy PNGARG((png_structp png_ptr, + png_infop info_ptr, png_infop end_info_ptr)); /* Free any memory used in png_ptr struct (old method - NOT DLL EXPORTED) */ PNG_EXTERN void png_write_destroy PNGARG((png_structp png_ptr)); #ifdef USE_FAR_KEYWORD /* memory model conversion function */ -PNG_EXTERN void *png_far_to_near PNGARG((png_structp png_ptr,png_voidp ptr, - int check)); +PNG_EXTERN void *png_far_to_near PNGARG((png_structp png_ptr, png_voidp ptr, + int check)); #endif /* USE_FAR_KEYWORD */ -/* Define PNG_DEBUG at compile time for debugging information. Higher - * numbers for PNG_DEBUG mean more debugging information. This has - * only been added since version 0.95 so it is not implemented throughout - * libpng yet, but more support will be added as needed. - */ -#ifdef PNG_DEBUG -#if (PNG_DEBUG > 0) -#if !defined(PNG_DEBUG_FILE) && defined(_MSC_VER) -#include -#if (PNG_DEBUG > 1) -#ifndef _DEBUG -# define _DEBUG +#if defined(PNG_FLOATING_POINT_SUPPORTED) && defined(PNG_ERROR_TEXT_SUPPORTED) +PNG_EXTERN PNG_FUNCTION(void, png_fixed_error, (png_structp png_ptr, + png_const_charp name),PNG_NORETURN); #endif -#ifndef png_debug -#define png_debug(l,m) _RPT0(_CRT_WARN,m PNG_STRING_NEWLINE) -#endif -#ifndef png_debug1 -#define png_debug1(l,m,p1) _RPT1(_CRT_WARN,m PNG_STRING_NEWLINE,p1) -#endif -#ifndef png_debug2 -#define png_debug2(l,m,p1,p2) _RPT2(_CRT_WARN,m PNG_STRING_NEWLINE,p1,p2) -#endif -#endif -#else /* PNG_DEBUG_FILE || !_MSC_VER */ -#ifndef PNG_DEBUG_FILE -#define PNG_DEBUG_FILE stderr -#endif /* PNG_DEBUG_FILE */ -#if (PNG_DEBUG > 1) -/* Note: ["%s"m PNG_STRING_NEWLINE] probably does not work on - * non-ISO compilers +/* ASCII to FP interfaces, currently only implemented if sCAL + * support is required. */ -# ifdef __STDC__ -# ifndef png_debug -# define png_debug(l,m) \ - { \ - int num_tabs=l; \ - fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \ - (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":"")))); \ - } -# endif -# ifndef png_debug1 -# define png_debug1(l,m,p1) \ - { \ - int num_tabs=l; \ - fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \ - (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1); \ - } -# endif -# ifndef png_debug2 -# define png_debug2(l,m,p1,p2) \ - { \ - int num_tabs=l; \ - fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \ - (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1,p2); \ - } -# endif -# else /* __STDC __ */ -# ifndef png_debug -# define png_debug(l,m) \ - { \ - int num_tabs=l; \ - char format[256]; \ - snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \ - (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \ - m,PNG_STRING_NEWLINE); \ - fprintf(PNG_DEBUG_FILE,format); \ - } -# endif -# ifndef png_debug1 -# define png_debug1(l,m,p1) \ - { \ - int num_tabs=l; \ - char format[256]; \ - snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \ - (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \ - m,PNG_STRING_NEWLINE); \ - fprintf(PNG_DEBUG_FILE,format,p1); \ - } -# endif -# ifndef png_debug2 -# define png_debug2(l,m,p1,p2) \ - { \ - int num_tabs=l; \ - char format[256]; \ - snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \ - (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \ - m,PNG_STRING_NEWLINE); \ - fprintf(PNG_DEBUG_FILE,format,p1,p2); \ - } -# endif -# endif /* __STDC __ */ -#endif /* (PNG_DEBUG > 1) */ +#if defined(PNG_READ_sCAL_SUPPORTED) +/* MAX_DIGITS is actually the maximum number of characters in an sCAL + * width or height, derived from the precision (number of significant + * digits - a build time settable option) and assumpitions about the + * maximum ridiculous exponent. + */ +#define PNG_sCAL_MAX_DIGITS (PNG_sCAL_PRECISION+1/*.*/+1/*E*/+10/*exponent*/) -#endif /* _MSC_VER */ -#endif /* (PNG_DEBUG > 0) */ -#endif /* PNG_DEBUG */ -#ifndef png_debug -#define png_debug(l, m) +#ifdef PNG_FLOATING_POINT_SUPPORTED +PNG_EXTERN void png_ascii_from_fp PNGARG((png_structp png_ptr, png_charp ascii, + png_size_t size, double fp, unsigned int precision)); +#endif /* FLOATING_POINT */ + +#ifdef PNG_FIXED_POINT_SUPPORTED +PNG_EXTERN void png_ascii_from_fixed PNGARG((png_structp png_ptr, + png_charp ascii, png_size_t size, png_fixed_point fp)); +#endif /* FIXED_POINT */ +#endif /* READ_sCAL */ + +#if defined(PNG_sCAL_SUPPORTED) || defined(PNG_pCAL_SUPPORTED) +/* An internal API to validate the format of a floating point number. + * The result is the index of the next character. If the number is + * not valid it will be the index of a character in the supposed number. + * + * The format of a number is defined in the PNG extensions specification + * and this API is strictly conformant to that spec, not anyone elses! + * + * The format as a regular expression is: + * + * [+-]?[0-9]+.?([Ee][+-]?[0-9]+)? + * + * or: + * + * [+-]?.[0-9]+(.[0-9]+)?([Ee][+-]?[0-9]+)? + * + * The complexity is that either integer or fraction must be present and the + * fraction is permitted to have no digits only if the integer is present. + * + * NOTE: The dangling E problem. + * There is a PNG valid floating point number in the following: + * + * PNG floating point numb1.ers are not greedy. + * + * Working this out requires *TWO* character lookahead (because of the + * sign), the parser does not do this - it will fail at the 'r' - this + * doesn't matter for PNG sCAL chunk values, but it requires more care + * if the value were ever to be embedded in something more complex. Use + * ANSI-C strtod if you need the lookahead. + */ +/* State table for the parser. */ +#define PNG_FP_INTEGER 0 /* before or in integer */ +#define PNG_FP_FRACTION 1 /* before or in fraction */ +#define PNG_FP_EXPONENT 2 /* before or in exponent */ +#define PNG_FP_STATE 3 /* mask for the above */ +#define PNG_FP_SAW_SIGN 4 /* Saw +/- in current state */ +#define PNG_FP_SAW_DIGIT 8 /* Saw a digit in current state */ +#define PNG_FP_SAW_DOT 16 /* Saw a dot in current state */ +#define PNG_FP_SAW_E 32 /* Saw an E (or e) in current state */ +#define PNG_FP_SAW_ANY 60 /* Saw any of the above 4 */ +#define PNG_FP_WAS_VALID 64 /* Preceding substring is a valid fp number */ +#define PNG_FP_INVALID 128 /* Available for callers as a distinct value */ + +/* Result codes for the parser (boolean - true meants ok, false means + * not ok yet.) + */ +#define PNG_FP_MAYBE 0 /* The number may be valid in the future */ +#define PNG_FP_OK 1 /* The number is valid */ + +/* The actual parser. This can be called repeatedly, it updates + * the index into the string and the state variable (which must + * be initialzed to 0). It returns a result code, as above. There + * is no point calling the parser any more if it fails to advance to + * the end of the string - it is stuck on an invalid character (or + * terminated by '\0'). + * + * Note that the pointer will consume an E or even an E+ then leave + * a 'maybe' state even though a preceding integer.fraction is valid. + * The PNG_FP_WAS_VALID flag indicates that a preceding substring was + * a valid number. It's possible to recover from this by calling + * the parser again (from the start, with state 0) but with a string + * that omits the last character (i.e. set the size to the index of + * the problem character.) This has not been tested within libpng. + */ +PNG_EXTERN int png_check_fp_number PNGARG((png_const_charp string, + png_size_t size, int *statep, png_size_tp whereami)); + +/* This is the same but it checks a complete string and returns true + * only if it just contains a floating point number. + */ +PNG_EXTERN int png_check_fp_string PNGARG((png_const_charp string, + png_size_t size)); +#endif /* pCAL || sCAL */ + +#if defined(PNG_READ_GAMMA_SUPPORTED) ||\ + defined(PNG_INCH_CONVERSIONS_SUPPORTED) || defined(PNG_READ_pHYs_SUPPORTED) +/* Added at libpng version 1.5.0 */ +/* This is a utility to provide a*times/div (rounded) and indicate + * if there is an overflow. The result is a boolean - false (0) + * for overflow, true (1) if no overflow, in which case *res + * holds the result. + */ +PNG_EXTERN int png_muldiv PNGARG((png_fixed_point_p res, png_fixed_point a, + png_int_32 multiplied_by, png_int_32 divided_by)); #endif -#ifndef png_debug1 -#define png_debug1(l, m, p1) + +#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_INCH_CONVERSIONS_SUPPORTED) +/* Same deal, but issue a warning on overflow and return 0. */ +PNG_EXTERN png_fixed_point png_muldiv_warn PNGARG((png_structp png_ptr, + png_fixed_point a, png_int_32 multiplied_by, png_int_32 divided_by)); #endif -#ifndef png_debug2 -#define png_debug2(l, m, p1, p2) + +#ifdef PNG_READ_GAMMA_SUPPORTED +/* Calculate a reciprocal - used for gamma values. This returns + * 0 if the argument is 0 in order to maintain an undefined value, + * there are no warnings. + */ +PNG_EXTERN png_fixed_point png_reciprocal PNGARG((png_fixed_point a)); + +/* The same but gives a reciprocal of the product of two fixed point + * values. Accuracy is suitable for gamma calculations but this is + * not exact - use png_muldiv for that. + */ +PNG_EXTERN png_fixed_point png_reciprocal2 PNGARG((png_fixed_point a, + png_fixed_point b)); +#endif + +#ifdef PNG_READ_GAMMA_SUPPORTED +/* Internal fixed point gamma correction. These APIs are called as + * required to convert single values - they don't need to be fast, + * they are not used when processing image pixel values. + * + * While the input is an 'unsigned' value it must actually be the + * correct bit value - 0..255 or 0..65535 as required. + */ +PNG_EXTERN png_uint_16 png_gamma_correct PNGARG((png_structp png_ptr, + unsigned int value, png_fixed_point gamma_value)); +PNG_EXTERN int png_gamma_significant PNGARG((png_fixed_point gamma_value)); +PNG_EXTERN png_uint_16 png_gamma_16bit_correct PNGARG((unsigned int value, + png_fixed_point gamma_value)); +PNG_EXTERN png_byte png_gamma_8bit_correct PNGARG((unsigned int value, + png_fixed_point gamma_value)); +PNG_EXTERN void png_build_gamma_table PNGARG((png_structp png_ptr, + int bit_depth)); #endif /* Maintainer: Put new private prototypes here ^ and in libpngpf.3 */ + +#include "pngdebug.h" + #ifdef __cplusplus } #endif -#endif /* PNG_VERSION_INFO_ONLY */ #endif /* PNGPRIV_H */

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 JH}pNU{|6^6614yT literal 169168 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%0A7Oq@moT-J zE@6tZl{i3u796ag>cZ@TV~_i!nl)*$PBpU?`iS~_#CwC_taezLHC#{@ru`Kg?fFu4 z>|MvRgDgyU`LlNUk;wwzZmn-w*K%<#30mLZ)$dYyuGFmYwd`tHw+80|ayYkpwKv#Wc_b~kBevN+fvx4I0g^d8CDpuZ##^Opl0D=7x4x&G zG=HD6Pa?m`_Yur>s_x^zb0d$4rKPTjig3!gMC4OURi6X<>YV0ZRRBLy&#HhYm@#jB zKo)tfpQNg%_+WL_cU(|aXM~=Ym$lAIn3st6^lN@qjgwV%ol^b###?`xGPi$yw4b%M zXMg=ZqyD3QR+qJja5RIcmihx3WmlwBmgO~vx?ZQ>y?%GSip(Z*UGzR!hQO<-3&4(-$4^7lmTski*2Jku?JF*E z;Ngyg+xd9gBzt6_yCFMpH8(V!TgjCbRkH0^X8!qn9w~v-UgkG7kZx}9hWY;Eff?oA z#!&;gnj=uwH0o@;g;fT=S$WU7NA;UMPc2JEO|j>VAip*04x@J7XerPdb&skkH}Ez4 z=Q1*^DVN$mA4YSnUwlp--3{JAf6C7`s$|4;H;f2mRE|40l}vzeR|;?UocjfDOGX%> z*U2F8;;KyYaD~%(_-BaH&@couUGBhLMqCIeUn~)fWsOggA%cO28Dqfqvm_}51TS@R$6!p0`3hD z4684n)qT&v!i?~!^ULR`gWs$)#Am!UDofw)CH*6nMXvW)O_Ut7%NA%{rw8-wKghfx ztDJmDhNk$8&^HJ*jyg9@u7pXU!O^qj6BmYrP9qT8NH<$+sWd$9>#E+_VfXlYs#~d~ zuDXiU)}iP~l{-y3%?RyZk#-4pFp0o9LD@qrfa@C?=A!7G3uwNFP!&lF@})Z)3nONp1_agx~5T?>c)*y z?qIpOetA7D-LDm*e~ws12FCy<$FdU`h1f1GN*pN6Yb&$`IaE3MVB z(>TLy)~6P1pM9bE5p!S0mP2M+nt3=qoE~hKZy$SxtSi`FzE|+q9IK|lCslz~Ph@OH z{l{rNn<&kEKf^7qo@v5EahnsxdCbEZsyHbt)`k;S^L^qx=dLr~_lhz46(HLwbkoNa zr^_lt8^JrS$A>^8sP*jTffj4jlnTWo@%Y-{M)DB@Y!|#X`w=XaYf1YAIQ%yR# zry@llTN6A`#>tBBNKu9KP&OaR%L`M3|7?%*qJ0>YzZseN?B))$tt9L{n@O}_Q~BRq zdT1D^I!VJ(fKXyJUB*vEJ5YHNuN}Om3Xq*Eg}9@)3A$)@llSMmrbK5s?}fg=)WYoG z5+p%m=}}IASL_V@8*YV5+cZ}NlE(#}sgHZ=+kBBh1Fb_ni0`#K>=AdgSN|zHJbgh%SJt{{E z&_b;00?w796-Dc^<*4~V*Oo(>YeXe+h>?)*-mq7blfLE1h19TTcD*q_j%ID`7)#Gbn|)q>9qWTp;Ve;I6s##fDBq2mwZ_uZ z>)X;A$7K4#V+L3^s;uab6hHUF&tXwM`;5w?>46EAN4nq7Vsfwr}tT z4tUl|Rg=Hq+76>;2G>E%IToJWYj$`G)^o`t>vrqY@MMp5G(51pC8-26Uc!=-mq3}H zhbJH7aWp*n3m!+plRxKiI6V2N+2K2}^w;(17O0G>i6B{*I|o=&6>vie)+b=u7nKpV zKs7=i{gCAF(;3H9;yJ8HdHI62NTy>>gN7tZ*cy$|6DQtC0RASie~`f5w*`CYYy!Y9 z1bu-~8g+k@8mX*%VsH0ET|s#l$yAzQI?cM{($H>|Mt^-J@s&pM>C@OE{pBa}h5B^y z3i$F*qjPAoL%7HBhe0BP$)TYfYkmCzpPd#)ms2y#XC35@hl>bhS_dnS(DQH8ZxUp7 zmD~T#hCvGL5|tYKBq^bYO)6n<$GrWOP?P+JMgvT8VPl1~5=nYSy_wV41-oN9E@RXxGJ`Ybh!sDpiZ<+AiJMvpo{nhKSjQHme;nCq8^zZ}`SzjYa*vjYR`SaHuYNE%}#6zHJkaH^H{BvwxGCRoQH1&tkLK6q6afSVwQmMc52t|Hh#2MQ}Nu} zQ(;)#8tSPFkL#tvR4U}my;r#}cPspZu28DWnI9Q?y;agSyYQ4)pelt3TIy9T-Id(Z zpL*jhMNgJ!sZ@*$TyOMNNLBbFbJeA^GJiArQBMCQ;usL0SK^EV5Bp%jsKC`7_i8bi0VosvH%{DpZS zwZP9s9`H*#hr>lq(F(X)IrXRcsYXuVhe9SpM|chjb_xZXv#+(@%j;nQ7I^|4Tbt^H zQN7_Y)H3Rrc_1x31}aJA2Csr6bO`JJHqxrz2ncf8?Fy(MHGGqFhxEUy_*yEaMgO8} z6V~1CIT#trq&THlXz&giGewnt2lbp6zT*q2;86JV@?GFZw<2EHC#bUoKeuTT2e&fI zK;k*q<|{&$5*0~9%M>THER+o`3uS9shPcmHv<>Q}92TlR6z*SM59JA~P9j}#f*Mi! zel@>)Wqz-K>5R&>`xhd{$|jvrGt<}8$e>HX;V!?{r&T+GrG<>*-|`j`{t)4xeSzOzaI$0_^PYBw&>nVC4l+CkjUmPdaMG(hEK*f7@atmLqXp zpBc+qV0{X+)0bI+y8h-nsgcLfIMb;cJ`)jVOS#OQs5rI!V1;WB~j`&(ftfrnlz-q?Q3J#aI*phT6 zP>sq|vVh0|qCNb9aKNe0N{dIo+iSgta$MSrR5YnKJdx5S9ScvS!IQoSPo%-}MvLW* zo{={iJLwBE<_%9gEVIxj0aA7VY}Tn7dI6XDgo&Ge&nXhsdvEyGBI?iq zYSDo&gm)h<-x|H10#2MyRR40472!>tfG^3mxj0Q}Z;{cAnvp)PGAc7_m&>xXFx9AC zB`ZOr)>a%i*rL?X&4Fo%e@4xXnbtdn=|hSFl zkhMB|{eamQ)*VPQY7QDp89xmAnJ6wg%!XmAt6cf1OTLox1rCA^`mV0&;tS;0YTlToEODLOYxs*|+L-E=z6+KD4qod7ue^R?qp+*!v@5#o!av)^oiz3)qlR&_N8z=!(=J7!CwQ&f z(rXV|Wmia&$N1QiR*bHekE(xKRSI^0q^q)iMR_E9gk;TN)$?xs$A(=a_>?-`w5s~7 zUy|@qvlw=;p{zdU3lDlSJmE=NJz;e^0oeM4)foiRL=I-?%$GH%UCOX1g6d{vMmuFY zcez~PAhfwmP-)MQH?a8|d8=qwS9=N(*9ilj>9Lw|0ScZ{6a{z1ZUuOnxOv`w(Qiw` z6~!#AXpZEZ;W@$%R{a6Pepc#$H=Kb?;?RTX??k)ZS%BPCt?sp{*a>H{pOyL%s%ZsG zYEXg7R7wqVXii~)tYOz$M~7_>&i`&nTkuI1zP*$g`-8haS*2P7yfgc>M(&p~E7}pt z4sj4(sH81+Cj4J6%TiU^Z)p$*QRJX=!=((MfS__vez+8}3ufCYiPZq9mj-EgDJzg-84jKeYBXeB5Y8G!FFctRo-j)G*yx4wrxjxwLl4Z(jQ$X4 zm|FAKi8ip57ixq7j9yRSf%VYt-1Xl24}6)7!Kv$0>-YQQWw*Ta%RE|E&=TxdhM|y# zrncLtty6&1?l6}6fu*$B(+D)c;x6o-3Qv8CqDQY!508F|CXHU7K_CsWxuCec{K=@g zu0ao{4Ri#oYMsk_5e8*|qP=nX)f@%db{JO@WRv^BvIMs60^7krhST4MfVWx3fN&In zP+_duv(15UyJikIg{R(xIzqwo6OlmSIZ*6K@O1;sJgRP;6=u;T^QANNuLRcobyjoa z$DU+xyV!A!T}%H+H_h9pDYTT1Dh4^hW_0VGPwJxvQc|2K*^6vqA8RM*FskJoiZnMe znV#^4rTH^btrqLxuuZ|2zgyhNwnEMLUb4p;UHWtT@+WfBOGPt1CHVF}r77wuR)@pr zwD0=ePJ?zFz-s6_flWHDC*n=>pzJlm-f?u&Q)%JR<6NY?8eNr;9~I|pQ?q}Zb7rZk z)eKhAVbqMvjHarXEC)60tY$_(7JYw7B8pTy^$j$j`?g8QAxyzOBn|UWM)?(XPN)qO z+e6ijhM~=m|5IepE%|l%o5MMtFq`K5XR)2;IS55|%94D6gAdl%YCbPiH^X9a#%&&h z>`b;j!EcqE%CIZw*>a!t35p<#$tiSH=3-ZWEu6*Z0p^!`j4rGy{W^rq^1~MpU0@BCYnJ`SW$6jESt@}UL*FmS0SAv zUbP(!kK*&F{*Y04RR8XKGL{nXUu@02OEdM1>nh$AiRr{g78 zktd9uNzEiE>QK03qZAV^d7VeUuvny&bk*0R3>>d2Z0>$m%LijOJn)s+(!x2aONKUWy9cA;?@KvMCOG-xB zI;MzNo)Y9{qCp9trDPsP_rdTahkqH>lNrQjo!49gu4eFmPFnpwpXXQ^9z=|)yZBhf zO*5;ES|rXPeD$cWGJPyPh#32(8aCVTufb69!73rS$cn2Kx%bE@8G3d7N7+`7j1pNn zsj6e9%b$yfh;Y*;)2{ZHGft7#PzysY(NH2!cgDuEmP(UNYNK{$DokN_y2nJxjyq6NIlj+n*IUveT9(J2bhAEIbuJ!}hN`4EJ6qju=yOk5pweR7jM(r%FsksymZw;XeX)61P44ldvp z0;UI(F;zirIqV|XtZSh;b5j3@s=<^=5R|9~_9FE_`!g^fnd3dNp636X=8RVz(Jxx1 zs8sdqL(-YLU*(2>*Z`s)JLH|Q3*GhG?U}MTt-amH+SC!rjOs;-^lvpmeZWkUv39V` zJOVlXyCTQUfhIdhS7AWb^_uk7WwJQB5#AOsJ;u^a8tn*(CNr4sDz(lUdLu3Giad9v zqRws5rAK~5(${&8IP0^^)mkZMrnRlC{v+nXa8{9k7oDocIrT7v;HO^8-x2+}n4^f} zo0;)RGa4dJ-&k49hev!?kGbE=>=T_XiGA3Z)sFR+S>wIY!H5Dz?T|9-s_1l){x!1v zBzsd%r?N6-1fRveMj7vjLIvzZR6hzBXbuF})o{e(Y_p9i=LTQFTBGW}pmb>YZFXm3 z@1hUF>wxfQEkpi|+VZ=(zAV_ain$WwrmZv~_B9G#p037=A8RdY5PJ@z<{VaGP7PM0 zxi8H^zOH@5SHPock&LLeG^;U^6{4h+`hDKaPwZevW_^8IdS*Q`*6CL3o7Y_@GYbQ* zZcE#rrN+G0EypfAn7KN94m$&3GnN_)3ye4T;xOJIFs`#JvgzE|*|L3Blan3J8K7lQ zqk1mnMHEx*!Ls4yz95Q7I{!A-u>)c|q%2D@MzsX}0ujn>FN3^Kd%el+9j*#JuDwQb zd!J;EG}{bXh`rnU-gpZQwovLin24o?Qb(T_{uEVB?5ED`_@V%&rJ(yn+zZNRDCwY< zSb@V26(?ZzretHXv3Ae-8SDO;)~2%hsL!E8XZ=`xI;CLhRfHyod9(+)#;943SOW6O z3U2ZRm3E=#WlPb=KE0cMkz4k`R_x+jnTmE06e`*xQM$8gyM-bdh?XCUR8#2nY|6zc@_=gb=<%MiYkE@x z*OejuY-c`v3&xaEme)iNjW08n{upcF!Gy0gmUcy|uCC;xQS({En{EeljhY4qOgd%8 zeotV$khJsu3jt;dgyjt3ZwfHok@4*5rZP!!Efx&oO3_Xr4%$qD0_kHCrO{SNEp|n&wHw^|HzHTZzPUieY3!lWd3t${p~N4j zOF*{B)Ee&(us*X9(C6A|)}cZ=N7NhEp{lyTYU>c-u2g76tS`&M@Oxkx3=HgEpGsh> z?FYk!HvfkahwNSJ-x{eJrg8nbr%BRCA)niR=(BK`fFko^tu6zW?36Lr27mu}A!F1m z?v#=)ASp=Z%Kmnul#b&-={gRSF{#mRnLGW+sJamfK6!QEQ7BX2ouU=$qIKlb~cEZs4Y)L@H&I1m*>r(y*yn4YD-oa{v^0AM55+fi_J9fzD)4W{#)Qp z>!6}#IIdmNQI^+J#{9vONl<7SOQDTmC+MD;iqs&ewhoGPSaVE7zhfe6o8DJe8vPFQm0n*AHC01J63{IrByGPrHJUB6w_lVy z5b9p;=(D!P&N6DpB#-4)M8mnpdq6?pJ2ZX|g9!QaNcY~?^ms;xHW2V{_eGw|7Vv2( zl1L=yocbeb4*HX1kdgeV=(F^^8>Cd>AX{UGOXs)99f7inWl>P`7<7Uuju54+N@zSi zF-c4UJXm$Y%txgL8)5HdGBJSGvVxh6R8}cufYyT9h)5A{YFWXU^x!YCU;f7zA`c2q zv@X2A0+PW?d9fT#PXg_`M)h~_@dEPztg_)_QiD-hR1xw9!A?;sq4eNi6{BGB1D{~= zBaEUbHTIUn3j$n{2qWlSrDx&J*f~!5jh^MW8`5IUZ(wak&DjZ|gZWmAHGxc|g)K6d zZs|J%!2i?T*`ig=0B6Ure3d?if{%5n#=+5IXC&J5j!`{9)#M#eHvD>DFb1$f0eF7? zkWp;-kBSZVX)pK_G0tsoD(#gL;&a(a+be{B;(j`gb+TDj%Ek@Y!yzbAYbLsmz;Ic_ z`^vGpM_hQ+XB|ej6S&T(-bO|8f?h{1f zV#pzS!?0-nCigpOvhZX^k|Yt0XF;&5{7DyXS!EA{(6#oWs+J~6kcO&V8bOCqbv>ZV z_93?-%Z;pdX_x4LJrXP)n7@N*R_#v)CX1RJ&NrE5)6hT45-`5F&6y0Nxs?`UhE&>B zzB#%E#_V9`KV)%UESQ15UJ*85JW%$V{&(<$44;G_2gF~gxw|WWhm0Mc29ah%^NXA| zFFHw^7fGA319#f&;@p{!D!QaF(U2;85ab_O4DB*yh>JE6#eO;Ldi9YyGBqy_=q^tZd(b=+?EbbEgiAMm~Frqydn|^}j0(Mn;y~SKs zljF0tS6?wj*A?`T6V8jmMP7dU6GtWk&OMoPBEaTvEDR* zsXvmMd62jPC7mo^>W`%hkOE=-u~c(!T_(FJZ%8&t)RK9mzSo**d<#-Ka!Ksaln7_x1{KItdvnwCPCv8CbC#qa?!TpfQWRqSWC3pRX{ zZgl#qqzgV-zc;mUB%eoO_HnbfailN3ab$lqth$l#)VCrtd#x?jC;7dbqG`ohX+e%n zbXuFBN6a$o-^V_(lNk&)Z`P~X^62bymGvdcQszi)ec6unjM#Eo+YxS~KNJw~;022A zl%QLFeKa**L1bJSHS}!4{M3Vp-WfZ60d}V{I~|?<=S2B&(^Fl(6e$ccsmQdXA~T#K zGZf6ww<^!5o<^2LnU4Kwn}&HOyBBOhu#Y#94HW6i&dA)e>C5x!#i0fVnBYM}M2bU0 z9Df)2P7E-H8q$lBX6O*c_B+yxyTuM8*jZi&_8rs@grkFcdZK@t^*wKN5rb-hOMiou z24|elPL;VrZ2M&mt#sJTWCO%*m5CWGKMZ1=vI4$Dk;1=gQZTC4FncI+7)L-1fg49b z3!}Vpu|RiVsLsVKvje(i`ZTI8Vm|P!gSHz-`7lK9pBf%FVD=4lQRX*x8rE9lpbu@^ z#ypPn!z7g&bZVy@xnxz9^9m3^A-bS+3i47=d95zRtk0;Arp1`0ilL;mNS0-7sQ&;1 z-^ieI%Ph9xs&1B^6l-MblL(66Xll=Ubf&pK&4cC%T0((l9Ts}@x5skI6n(&FWRrL# z4W&b6b>WyOTWcbPS{L+zH}h!b8sV^O#BTZgV3YY^hfpV`ah$aPncqjYe;i%yY*tI9 zU23;n1OgrCus)SQs4mQYP(@|l-N@; zp9ec-bs_uPY}^S`n(Kj(M;>GPWBkHM40d6S=T<}ca1?omdQpq7M;F$!y`Z^Vwo-*$ zqPrnbj^K9MGrcZ0y6_+-C0Arcre56}nNUt!Dv&8eRd%tIpJ>0bE28<*@Ln_OE$Ev4 zJF1ZO^#)r2zLQ2Y$6th^_S9m@TmwFdkXg1%knma>NM5<8&i`|Ey9(x1`3B{t&(=dHaoC^XZa{xEhBbD zg8%%6agxM;dRnvv{BF&Gw!8W_RiB|oiD$#{X7Rf6^W&9&x+#`c>elSE#`K1DH(cjkkcf7RSbWoAuUq+;#6ByibtW?>X>g4r1DqzZ_7=_375&5C zgzRUfvYzC0N&NxT`~B+M`YY)RBd$z<@MeU){pq@b;;!lh}>Ht**%;P_4f+v#W(R6{BKLz2pgsxW zDqBZWj%LliMwvTuTuA3%=p)i>n4ynU6g?1jatBt2Pt07t#;9p_a+<3%7*?@2k^d51 z@gD0r2jQIBG(t_hN9V~R&&B-Zwy6y5Mi0JJyV(KrgX6uCYnx&UMjQ@h#Wsu3z<3Yk zM9eWdE<0it>QGk1T%bdz>c59}ss4-ZgV#I!?&L%Wc?#L-t;LfknfbOV3lgaMg5n%s zNqF;scD@`6@$F@sf^3<&Z91Q-Afc)^R5>!LP8byqKoD5fuLO8A^yPJYwq8T$HLA)_ zUFtLIbShRA-#c|Gr*2KeRl~nBq4sLC;u4*22K|<0)S6>84$D&T zVpOhO&}GSpsS|eNbJz`xr{k$D$|nB1^g*L3hKLx5aQ{on zT`BX9C>~UG9gs^nmqGbBGoBpgmxGt?8CD^bGMPc)k6D#p(ndi@^joAnMbj?Wq#@of zg*o^;ITHTftWzF?l)$Yzx~W*%(;CYV;lMA)_opZfqtB5&F=(Pc>6M$+^}R3p?lRX^4bdsly=eMRf-)D&(O<(8lFxTxFXnha zW4^D*@)`3*GHEsCaBFMbu6}azRi79)=KqEnU{_0P$F5T40~#)yf@tV~ZZ);`8$n`A zvGrJg=^uNQu=rj6wN|iY*VMtj9sZVw`P@lx}N%P(Ex6d#^^?pLa|u48F3frKc!R3B?$pQYN@0e^PobN;N{wFmte| zcdeTIFGyX1{sgiKg8d3)nse=m)OOx+p8omWlBFYd9h`n zbWEyXu3BidKD9FJie;_+#`3ZLV@wm)=Ii~?d6F|S^t$}byZm)&LphJgCIs?qnt!eI z4^lR#U-mrM*76BgN+fmEyk5b*P289D*pAW`dWm~yJ^q0EEkN?CczL$Q*9B1SZdZXp4lN-C_Wx7SrI|LRlLNm zcs(*y>Fl)WdJ=XtzCjA8$>6$;{9Xq!9bU`7)}AM`;{Pg2Mt~AcZ0>N|5#7~l%&&ze z7;dIuM$yr84t|o5BbMsMGlzuf{$t2drtJyR`6}c{^8a<@Lut*c!8vN5N{N zcr{UCw^6|TGG8Nw)f_#SNAloX8=VAq7dm?U+Z-zHwin6(fSI^M2aI}-m`zwyYK~-= zgbRX;t<)#}$^gmlZn-9xA;bt~q(ggaWsh)6#aadpSH3j)>v&CJP&WDHx+RSCU)oi= zY?ptT=5=*D`%NTw%W0$eWiTmR!|V1uxMVliDEN0LSY1V%8aQoS-qciHfTKQcS*Ww# zxK9SlA_18lz_J0{K?E!95w3G#7mcvJ=9Z5O{v@f&teiQs-Z%Yqo_Q5@DP%B|r`Cet zB5ss2s-FTcnr#UGppb)G4md^3A0Av(*5sYo+dFe#^d8b_4qq1?4dz-qz=0Z?3SpEB z!eIZJY?R2TxxSX~;Pmz?ks}o|3AQMH@96>5WL~29_?I%0B-Wo1{5`k638T}MYb2`a zDS5P5N@y*gn;0)^^Sd=@3Mdh2|A&E!J}FbJ{{`ltl;{S+npnV2tjZ16MaO_qrk9kJ zLLkNs_+0eA5Pgx<&iYQxzdQLRYrLX>QL|j#ywczaWI2cHs(vRVI4NLln)iO?NG80) zl_MysYA@^o(di6+kI1h!+Oijle9lFJ)hRvxu#&1o+b0Vpgt zWZ6<-s5e~9>}Zctu}h4quSwdPV4bYh{jXzTu!y%M%=BTx)z{*rtAFqhP68WG>eFKGYY@l}CGJ2Y(IatmS-W_Xn%gCjMomYuUmt zT@-m?U?q8snkG&_aQeRfs4sk;TY^;J#iEtTs&uW+m$$}hK_w@d{ozPen$FCXT6G){ zFlwfx)*tePM|s>5yt03F$^xp7FF<8xBSqTstX$Ayj|o_x4t_%2tA}N^H^pLM!jc1F zTP%mGeyw1)D`~LODPRmlLlzF=J&)6Bwy?uI4p-U21i6w8hE-=C%QT9*%wB#EnH6=J z#wdSX8Orydd=A`#W{Tsq*fZREOPW>ky1iVw4SurL)5zBRmLpi5pRFS$;x^BgBjMXT z@l z4G!j5q6p_$w4ci{N$fKg3blAv%RYa7_nA+8%m~v1A9QhWY7jze>e96eA9kq$bCo7*anezA&ADaM!$vSW5| z?tX4RBn=5dKctMx_C3%-^iEZrYIxaj-RO|026>TY8=)^?(GIS`iVW_kwpKF*rLMGa zHs(S!9KB4{WzLAMIvuVBdDyHoi z@)fdn-NlnNKuH~(4&EwUl|_+M&Mv|Zf4i3OU%Vd*SIl~s@&(&ku~+U6^6yRD9i*l| zCcd^ErR}W`?nPP3oLgp@!ktbi6;Ya*=SA6jJ6Wl_Lh@zz>eh89mdarQOTh=2LPTZ5 zO(CG*X#^A=tG-T?80E510SL8FIYl${a%HbHM9=OgR!1q+C&cVDLMqd!QH@9f{~s<* z*tb)fK>Ytunjm;WqBOzB|6^%V#Q#i71vWv}SGIIFOU5tl0}2v6Meh*lj~T4$B?AB0 z$d5)3#q|M_HFO?XVJyOS^)x4EkZ$0_5G-cs4SI>o_P1=68{C4z9(t-L9&3bolc>}_ zQEEfJE4Z3r$ynDnt1{q^As0APaYt)i%Rxq1>$(Ph4y%c*O+Lgi4bjjKZtg7f~7dV0j3tJYTSadLfWEltY)OEEoX zva4Ms{mtDFa?9^^4hMW%o^ZfNdA4>izr<2m@oT2SG$#Gv$~^vXxMWedc!_WobjEs! zX?b+#;nsDEmkEbFHAg!MpHyP8(ET>e?({fO^@c;EDUJ0z4A^0nV^7K|OZM&x$roXj z>hd;Wz;408z6C2*lPFR#E~7@(6ldzPl8KjDe?o~R+rlMvVk7jVLQb7s!p$*=YtyiCTNPD4!4uDJxwvBe^+Iyh|~oQj;T6W6RiXMQX*|T13JVaU|l#ZT<%?R90&=zJ^{Tg_p>8LfiZIl2gV z51PKZ=s@^k8SCwk>=h|`mkFBjbRs8l<`y0@VeybzFxo1X;tN%0IAf)DxgIN7so~-< zeDlh1@gl~n6v&o&|8U6?d!e9>X47xj)T_w4=yK#m4P7(@C)6;vDpuLLUh~P8!#m$c zqv+gqsl>ARx06;zp)*uZIT#t2O2F9l;>pL(Nre}8?8u;$Y%(ar{xEe(8bU9C=Q~S{yI;&D$%{VL8?{*2C1qv6`{mr_wKt zvrna+<-d$x2W}kr)YXOhw5HmR2O4z1DN!+-7Qf&{cR%!vK<<4H%)0mPnfK-1i$e?i zgHKm(q;qi+UUW-Qu6BDsrets24+duia%Tl`{QYR|-MK${=;88*a__-g%nxQh9K@T( z5AJ^O!Mn+l@__3d`{7_9_u;Z!TqXQqS}ty3#5;_5iOIe9;b~=M58V5}w1)z-@CZ3L zB_;QpJmo*(yDrmD3CsVSBC8wm1pHNhBxTvH|D>!w zf0QL`zr=}TS=;B2&-_(hC%?b=x%|C+UCP8Y*YkQ^)H z9f*g_IUc&4{YqWl)qd9-@LEFuqUs$z#`OXGAfaI@Zu0eRj=KnHufY*Q-&J3~ zGuHij4I%yYj(FTmLc>+M$Kzk^_}7JmH1u2Iafb*wIK9Cw`Eo*qs+1A&xZUy4CF5L7 zP9>z<_5>ka%7S>@UkT|_4#wlgk9YIVBBb;Fl#tH*ay+hskj~q0f}3tsJaj)H-IojE zamxwmQX1oN{fgaEE+V9Bdy|k(w32x$lo5Yjoi<6kel$^ANbOwV|mvRXqUGER#aV_!C$MLV1 z+~(%EhLFw?h{xISxYhBv)_7btZjN5xq1o__Z!79d$#h5U0^YyD|MZmS;-N+H&SF&=7;heS}+kcx6bhbG2Dx5h)0{IIc#7vW1{gZPAh-vE+Q$mYtUzBZs1fFh3>I$bC6& z#7a*x#qxI+F|y&Fh&i9P%8Qb773e)7W`OPhzPf3?c0$aBePYDPDz4~`EBVSkY2>3Qcl4iI@{K3NOgSM& zl;VAJ%|0Q+x`K~;!iR(ylo_V+S%omSKEEy8%PV^?JV~+D1>5Ait zjC#=#FZ+1+mox63j^Dm%C%C25>C|H6&ip&CymP3e7?vnDaLbL8B+c6SD6;RiSFl{D@oSNWbxL?`?Tvt|iCB(6DiIqEgZaVPKh-v6-U zvs2bLQipi)Om2Z2f1*!L_ed5Jrrxsooia?+sO6MSI$eJUyI$?4PXbWomh zXVIkFZ!H@8t*fs}1c%0B_>-NMCY%$4p6L(Yt5ML$qp{OA z>906~bSK4MozpsbZBoBpr)5FH?$GA&n<+CstcwqVoJ`3?rcygbG!-idzD}M=Z zsohM-lhs&1(OYURE1DI2Ye1fqKat!1|L|ET>*1}`eU}Ie{PCJHLVHWa2Ekfmc22h@ z&auYMjf|Mnn5Dp327*Fsej$ADvUsKUsQi>N=5h+s4UQgib_VNV;(FWa+Y}Dw0 zLrG@CbhXtim(?y5$nxqjr%$7bPmG)1!LgK2?6Tb=WB)2T;--EgqEdcpd4}zMqm70~ z7UqKWNN@$Iv&4i{8aR|ht|zHjWwK5TpE6wDr!>jq((2m=dg?`)T;Gm!{IA@)KthJuy5i-&X?S9i!&TJKjgmF z;34r&Tl$&Rsr}0KaT%jGs}pBHI5IF8bCPaTTA3TT2M3TBiv)9x`~<$&WIoOOIuGa~ z{?EkTj*VjA^@&uYx`H!1pP>W)JB9&0^?L_OLs#?O?O9J#xrm^^%%Nc8`8u;0%NWr$5e+~5p@8Dy{r+lzhbK-w<;6eu#!HWRY8@xz*=N9Ug zWC888Fwe1p1TPpSS_{X0h-WctPLkT@ga za$~x<)K}1G%$Fq!5Iq{Hs1f25yziu3fk@Wwu3tOlX3&8yGDaQRaDl}gL{nfe2Y^FE zDa$s)bSB>trlqSSrqO#fgL9xYq%Wn2O@w^T>$3bWS@qn*M#a>NYm341@Eq)jiAK1| zHrsgR{KG|&oU1VlC|EsnproBatP2T%MejjXD*HRPi&oWpHP%hq=v#&s zYgp})#o~oo5ngGB+85L+!BvVltmj2j!h{Zk4K1@00cevt$O&eo*$ z_>@!C2~6+M8H|5-4hA!kRi_}AL}Fasg*`c zQeO2t`xh=-cu;zW_BKZRdsLTCC4vF_0ee^N)^b@}hm}E%1(RCMg*Ob`4=uY{ioy|J zjej4v_3+rQOs4$%!{#>th=}&EI>{p`!e${PLg>S=Ih9alMSJ>e_TbEKNm4n~5;m_O zSUyXggu*CDc@i>(kh#8w9?VfatcWrf2cPtgu-QRkc_`;fxTZ%e+x-%$yUlEv>Wn|G zMjTApE2Z_+)u<}e4OxM!pqW6$U_p(;V@O5jY1-U$`z9BJBf%Z>2}kM93#h!EU< zAqa80E_w(3*7pw8d7XvuN?}RCY`bVWM~jrZCpl^)mOD#QacCpRsIkRd&s>Yg-RW$V za5p`#SgMnG_IEf(XHTTPmw}&%&lsWxo*@WTJdjXe+3=ZX8>U=jFST_hAp}w=vu2zf z{n!~;Ba*)rO^-fDyt8L>JTBGcs1o_eae3~NJlY4EbXD|;#Je2wiazYr)sU30%u+B% zZvsZAKE=yo zkOiR5>E@P%z!{PG!>}g4rUUxp%!rg$v2}-kYs+^!5xrU$-UYC-Ng5vnlHxeQrw^UgR%HeFq<+;^@ff|7YaABk^9BoUz?0tvxC7*TAHJlF|mz z5VLNCD^*69>w*&Umf1P%#Qtma?@wv;@8kc6{BP&1hvFiCqhRUJ60jisd60Kd*S~v= zkGF3V>kKZ%zXEtrQT(l-$p}@GlwLOGR|s$n@QCh2LBa3XV^8k9-(k^0=go{CiTN#g z=ta1^oQer6Bl@s8Plcc4S9&;XRuPJ*Z%*$>HEPJ8&?C=)6&Lxgv@(QR`y_PmKO`w_ z^mJ$Z-<=$JSa4bcj1G{MagYQ=fMZf}z+}o2Fr&B17}euj4058%DWZPALEi7w-}QVv zuQQ80il1j8Y&)GXk#y1-bL0v7OL)42OB@;FZ{4UmN~GDF8@O8Vo5}DvzSZ9a_p#H( zw_)PnyauUHarKCr^b|+VrG1k75We1%d+X3=s<+tX7CR9?Hqs><7;f*@?^nV%cMSU1 zd+;VwvQZDX8vol#Bk>&%8H=0clZfeP15HKE8G~zrD>F$T5%2JMaRF(RoMI+atKx zo_AnicRb=gyJY3O11StUCj}k@SIj#w_K|qR1iNI}yaRLg#Url6TkpIB%l;)Eape_Z z)YjKX1x9tV*s;7F8!Y^a=OF$MBl8Kq#_qRdEI zOBc14hFf2p1Ch5XTU+Q#Na|7uR1es%%V?6QyNEK^j37a)G7N$F=C-=FDg#@UCk{#K%9r?kEkOKp9JVn?*T&G7&N!&*05B~sCl)(ygz2wmE`p7IIgVzUE0 z{O<$4?GM|S$+)x1Xihr&Usa2JS0-HsXG0!c!2@}8C6652|2mIs)&A&kpi%Oe!1tNJ z*H6Qz=IfL2dxxcn6e29;KjaBZkqryY-=VyaFfLJad{av8J_#@Rh=ZbiIOu{1qB@Dm z;3Km_>z_aF%Rc^0CYU{JqGG?xKLJ?{C<94;k8du1`&@t2PY60O285ufeid`*i?g|+iI%ce0Ek+nu z$k@;^|6*5*w%`gG96DyOT`dC36*4+>%$atzm|G@>$ZRD+2`#&16z@yeC*Z=$KSL=Z z+L6xEHG<7WNr|IR$#kOSEBUrA`P)OzeE&X?QMqndQv5+)L?T=uZ^@#7ZORc?iM^yB z;Lr`fmim(f0x%r?lT;X|=QAax18DRL`NTj^$P3Cx!(5q+(09bw7x#hzp`3fEPAKOy z-b1|$5Dl*9>iE#5M4z}eJx(`(Qck28fMuZg1cb=n`qE0|BcTP8e*di7oT zU0jd^d@SHAhouA$aX*Sx{8D7XmAwVUFB#^ez*7ljMaBZ$T3+%tX#pf#)x{D|kR-UF zUaNR<$3d!6H=r!G8uPY^Ep_!D$%ZN6{NMA`wR>2jzQh3!G-_$^|4in;aomZOtpdt@ z(At8=*>_rvq8bRWu)KA!&<5L$)Fb*nN5Yl&6VcP8S}5PlhPir;B|sJ>_s=5wXV$On zl9wVCe?(Owz`N_5M0R2&V@|ruT}fCdQNE!>$tR_~0Wd|K$xs1xmXmg3QrZ*Jxe!WW zfn)&19fN=*-6>5u0jghi=%NXi*q7#|6dKKi{vu0|2btNMN@6ur_vsg=ugUeGQPw$ulsYMjvd7$qyq z)~<|*pG#D=qU@mweT_IOrgB$hYv}|MBW!=@;EsPikVN|O9@C_+?pRW(8@}RCl z%7PSYLtp^&4-04vwxIq=p2+BeV?wPKaLApg+{s*sZRbujpC~>eIU%|;#af%!;yEN& zt*@>>azRhURt^h=22kWRn1r2+^3s_92Kgi2N>5!fyrLItGpY<}8^^9oxYu-R{$^BZ z&%7a}a)p0m?0(=eYPbviF}anLtG~-Eq&eIo)I7#u(GiTs8u1kJn0Vb%NyhRvp0)mC z8Rizr2nBcRd)75a&N)^sAD^+BgxrQs0 z$EL^rB%L0i@h$CCcCcCZ6^UeWP*)ZBTO!=d$Y@E{`JC9Lw!f`Obqv{@D-K-s zkakxBK19>!*4rns0QDw7IU_-5kjUvtkg9Z_#FE}*w-$gSl>&=Mr=&c4O)k#%<$9mV%wg?0iq#*cczZ#=eXOpR{ zNnN$U_&9#9zcdNnc$>Hk2msE8|i|6UoE zr1CKo6%gM8Hr6A1MXl-p;YnfH;c3RCeG!mplVL4in7!#ns8*O>q9A%y6_kC-f++e! z3X{_`)YPsDCvHD+&*`{*ZiRCGCfbtVs_wNrT(hUIBGJs9Mxe11$LTW8)F3zkZ~vZz zw`8o(0nVr)Rp|BeQ%UKf7fXB}`Q@bg4u|-@py@(&&*#EL|KM>tol#U7IgJudlJ)^cXA*b zvqDy+F9#W80wOZZZ+N=h>>_(K5YY#t^kam6$jK__-lI6KPlDlu{I@R&e;f>wF&8}z z>Jv0d&9XHmO+1GtMh7}HIz(PvoFbDInC1 zPG1rzH7))Wa@3ht86LRmE-P3+J6~or?}#*YlMUVgIp3jcnaDKY9BmrGOrX!zedILY zzN9{i-b-YebLS@dbD7wZ_2=sy$~X%+KtfeJ?@R}X0;lmnZ#=>XdH7}>+;o5w?E;8g(aO1zkQ6GzNTw^bV${12<<19L*QB=JO+EvJn|PcV$l85x{oZWP zCSu4zlbg_QdpAzx`Z=n+{Qb&#>|?5Xi} zPg08%KEEdTEZ|3fUzmhHp~lDLU8!hA9xZ88fD{Y7y6*QQS^Z^r)vG=sMPE>X?nBQJ zNw7M4i}Z?GC?B^Tp2}F0B|>R7GPA8006B~{nM_1~kC4pJKaEHCs7&JI+ljJU1W!2t z?21kZ*-D<|9ygM!FKD>rYjAf`=g9jW=^U-E(Zx1;2d3C>s>Q)|cqj>+uEBO!$DTcr ziCG2j8P&suQ{lFfn=!)us70>bhQ_)39iO+j5oBpQG0oGeI_eBg+4CKLIup}H+bIa- z7T2-J=#nhMP1HhMX1JIkHnD%@5oU~SR8m>-L8|fG8Xg|wxq9CQBUCA|M?i*{vl5?X z%x@(W89Ts2(Yv8?&VUq_^Ui`soCoR4$ihe}+i<4dJM7e2?+OWa~84P$S@{I7$=}JHaMJ zXqCqO&ibBc= ziPkV#QGs_x;EcFYdYaB)3@=I^?s$j~bby2^7} zKiUzUm9yu7@uaMiWFIG%rGC@(o{r%B@d0!WO(4NnsG26|ji0zaaEbJmlQUZH&`N7k zq^qF$c)Khbo$PvjAvM=aw{6kgrf)+UnFNd4`O?vYlA|Zb`FWS*U+Cu7Nhc>Ky@I4l zlb(YnJCKOZHYJdEweWxFjQLdMpCWrTzaJS zxVh9^>mvge6~T=W|NBBsWc48tD%x6lu71w&LfROuYz5XDittUMZ+-2OID^Xghm8|tT)dY7t$<@GfCb;L`OF|QT z@;T5Z6WjnPR%v!9^wC{FnqSu=2 zYf7Qny-g!>NS4wxLQb^s$d-po@z(WO3}VXC>L9J16Hpbtv0XW#kx86a)VogYp&h}q zTsu8T#2Pa_x>LrIKkF{k!HR8OE(0&BV4(ajq}yE3N&P!#C9~mJ|37Nb&l%PHsRr{rXw5`Bz2?{0LAyHbh zpR^b`B@5m|azzOa3x4XaNt6H=dTN`dgp1>wbjE1X8RLx<;u5>vdYpcS ze57zqKDto}@^Mz=O{ZYXq27eLT-)W`dK&0)Kyp=XLQa?&{mdbd%af9vi1Dm=?yTYyMgywy;5M+u=K(*{mc^OajP&jM0ZF9!`USTV3fN~7%Ck%!x@n+96fE3LxqY8Q)owe1sCxWwa5y^W`$=()_F9(^icTRl~1MgmL&Ss+W!}mVuafNLUKttH!0qo-_P5O z?D}sGvjFuQz$tQB7T>iMFnDbwja||ZjX1+%Wl}lHFRv8-x8%snobln(yOLi^j;Hqn zV7M>6ua>@+IUJJ_)>U+XV;pW&W%3F0?@G30?OY-1W-)C16-jJmN*~%BSuPt^kyW{* zY&2&O<{X4XSqtazYlKdh(oM?sV_^L{yGvmWCzb;XO8hv1KS#v^sZ1jI{Lu9!Cs+?9}f;Ku*@d4IoBe6=mRjkuK z{T(|1VA1wB!2cXbV1tOq!n;(HWnT--$Em1ft9gj^&NdR*%cYrOhrZV7w8xX_tz>I- z8Sx8bMJ1)g2hUdSJ|?3omZhM4=y-?X6xM`KY?Z=K&GDmMe5XXAh+F&CsOqA;CGWyO zMahah=2D^bgo6F2#7o{}Xw_Bunt#ft=aY)npJ3z(eFf($ydvF|vKf~h8TZ@D!~JIG zm)#_myrX@tPhMO|6CEO>6+R!YTEt?G)TAKDzU*z#*CcbR z?qR26k}?YCj%SoCKB&Yxq$?T8$3B{`*lBWAO8hS|9*eWF`Q>=dyu)I|YL#rXire)3 zZ`6dv3|?IYGZ$J=&idAnNcmX$6`$+{UA*Ei$*$Z;0DngozBb|3JGsPiwI{!ORV6Tq z|Lm67c~(nvN99qEiZc8ya-Vguy`W;}>~El);CfKIWTWR3&%uztEr1W%c3Bg0E(ZeC zYn#|x@g)~%Hfk0q*pA?qEConhuMG7 zJtANgw_GfTZ`t8KcZd1GA@)!u*xU0SKEox%u7@|Y&MMt$VZV=sewElU+7%mBDHncm<<#4#qe(ueKtOSs{e(Ip^~-$t{=C)C4DH)iO=PbN5#gs z#HaF>qvi+37E#-7+|o;=UC|)ni;T?Hurb`<9(>94Z}ph|1`pbV*e@J?in!=rsv55y zPbj-udu887R_u&7a-H(c<1{xzwbgvrg9)%*v6DWuN}FXZF#k)o+_1fbgxv4`0&_Tt?21>_x5akpibzQt2Lfdr%YqlCtvD8EBQCRpi}QEb z#VaEIHdL1^^wd=2s>9QQ%Q*GW#)%$}oGbE~{v{r}bVMx2M?v@Mc#x}e~Ir~W{yXIqnh zF$sa|RZd0W#I)v&$0st5m*B-Xf5(tRcjkkHzfkcywU$rYzvbthMh#w@6bq%8CWM2Ayc5& zDqW&6q1Y+3p>WgYg)k)KloEXps)&rtkfQK5=^zzMlVF8(aJ)91B>G3GE8%mrkOO;i zOt=&&BnLzO+2;#4gipLK!kwdBZcIZm)0RTLgF|h6Vf>C9U~RK+@X822l$KYI)WNjX z8aN*}XN@wxz5UrV@D7j#>oc|IbWG(cF^1ry5 z3R6+oalIzjDSB*#!eSJj++VsO?`YmJtF`{{1=jlf?Ro3DBk%A9kwNFvru) z|1|H@%Zl3zwm*?ku%4WcbLMSlL9207k8JH6bX%~s{P{!+9vNUi>NOiP>W`%r^cdAE zrK@tTQg?1se_BdbDy@!Wr5C(g{;`|OwGVs5E6!^}WO37{reviFmKw_s#uH3l2o<8_@c ztn&#|C*=a2L2R9PTclHp7K^vVDnn>GJ)%kv&4`Br@z5MXs*KQFH{`F>#Z<{dd-wqX z!_BR{T4o2o#*-bCUAan5XR@x`$D_MwMsB2NjupC#VvLYjM~ZQ{I+L$gYmNThH#GY9 zjBfO|vC4a&Ro-5)7NrC!#R`e1h*+_$3Xq|oVx6JDV8s0-G3X}o0k(h)uYIQ1K@i>O z)$u9TUL^&J5cdgBd)C}gckor)6tizxy*)#ul+7b0QXvPaJI-AVdH6q&5@cN>pCnqP z(9!a`u#QEBD#rb2D}a--C>U0e&Q?w@)WY`D-vyqO`h4)dct#hRs+qJ{pB=aDWmH(u zY)zVLjh{2CpH(#1TFrvdrRout6RZG|5A$HPSxdT3(HcDORC)LG~ zKc6{%My|%Qw8>tsaM2yiu*c73A{R}McW6=;-2pBSk^+*P7}*PVN*QJ+zfFo1q)aJ7 zo~#NK%uc5nHOobSLteAG3e(HyTFPnkTHD-6T6=EfrO4=v-pfWu>Uw&*ivp>d0xYwg zufaU~^@tE|{$|^hapNQn_w?Ax@kof?5PA&!+Ug3MQcW_HaSV${s1D!hG|}6H4J*mI zul?_ImdlJ&3S`_Uc@tq%z3F=(5(1}A(nf`(6i|6A^Qp%Q{ZNO4ag8J>fg$Lz)Sw@0 zC7(+O&iDyjV~-E0?Ad+zhgP(OmO=QrkW?&;Bpiv5$$;G`KJ z&^fK;0$O)H#T&jO<1V6@&&E0<)5y*>|RP}pe5#?mE z5bc$DB)d=QdG9L+huPX|;rRQFrS)iBCp5#*&3%W=BN>n1Z8hT{(^%RVnZX6F8TCif zB7w7q3|}s6%a|_)rkYI6Bd`J4M}RJeFRbEg`4gISg-TtbO;Gxb5$+8h#?phh1BGy7 zzk-#7z9%frG0|heAXA)q#AiG!R}JTHE=Ad#1sb{>Ka^@URj(N_j1p zANpDuYMuy1Gzeahf1DCL=WaIl9x_+wMqi-}l{dPL(1OBrMKmjiNNG+LkwQ74o${JG zXnv^YKz;88c}Jo%CHaCI9=iA82WN0O)U;d)%$zoB*0lT76}a4>GwtpNb02sp_u^T( z_ue0T=tok>#2c^A4L&rBt8Gcf-9OWQFl}aT^8L0ciEDGYy65ic4{)=tWS&0lp&tb9 zPw~&WciOc3$U94Jlb!y+gAW99%kO_+`m|hqqtOEo{lKYAE(7A;r|EYC+VqEi@W8$C z%Xn{mIFLK-p@)M%xIdR$z#g9YXl~%)-20}v@W+8Ic}U;Q`{P?D2jZ=JfSY{-kItAT z_u$^7@8z8_{r~XxHE>at+5ZC!I2tySO-4mEm6etisHGGZidXRkBNelfdRF~2$!9-yzXR}p2mTXWt-n8mXL@d7A?2AP z%+7|n-E2?Bgei*TL@%CMIbKxL*ij><*hcyC^I&Eeh2jvSV#gY`f=w({Jz1V&b5b5u zyyU4HgEBHWrNFlk94Q;QXwHIy>^WW!S?&@99=+;q-O`b1t!{`XF7o6qm^Ck(G65?} z*+|>qJXV=FDwK0~l`wBa`Usg}da+hQNX2uYs0XuhEJ!nD6Di9i>&+5Yl=6j@YyIc-rnuxn8*NVBLW(kN*&@b;xx8t`3Wq48J^Qpr`15eiVqe0($FZn(W~1ok(-*DA+t&^)`khmDhGDW zss))oD-V;(0-9}!ji9vjY1r$2AiH2u`22=}Yl)Fju!x4Sn09k=v-9S97U)w~PQfBf z^A_fEym-aLVx*lfc-S!2=FKVqR!0b?!#$Vh`D`$9=z|S)BScI+7(*0>Ii(Ob+jvgl za(L#_Y-FBqE&b6PWadl^Vq+3Dkw)f>9&a74 zoWh;dyn02N(U5QR#j_AgB3acdLaXrf#|9hGTV^d>n4Q;c?q`o5GfL*3UaS?{U1m6f zSuBnsYTPWAi8P8ubB8RoB{+BC-0USDo<6$G-u$tX%}JGB{$2Jsf|)&z(lvV~(#W1s zQ0qLCpLR!~tQmT-CT*s`Azf22k-wF~qS2$x6zHY<6gZ@73MTTmQpisoF~KYYUb;_# z$n-e{qf_5a(Rk#5d|yHSqC#5x#YT>ib7y&HQJY#&`LhaUEx;DCppeHh#t<8v-OF=dzd5>i!(>GNp*=gd=&(57UAO0e`i)_>)N9BqQSsT1#(-pmS%x-5v zngh#38l3|5{#)~{SDEJRwo*BO?PPp^HHGNJ$N^CV;2_s3>Ozh|H5v) z8_M6#FYV#G%`XRZZC6W+ip@Xg*=#BclKZDPCm06^c|^bxYNhZ~csE$$A?CzMaJxb~4&FP=T6n*Q9i-6V zlnvg}nGa>IdkyYcrrhUoTdApXbL4oip(iVWt^I{}H%*?@*Hjx=YlXUK_L69JJtqJWMA z5;4el-cY8y5RkxK3TPPP9+J2x0g2RJ1SInJS3tu1$H#zfKBvPY`MM3uwAieO`ZY&^?#vKwjOVaI-xF(6a7upDVo&jOFp7JdO|>3q;?h{5w|a(Ymr)v?NS+f4Il_zAP1Ml+H5Hdk)XJU zn*vD0ohxy9fJFZ8m$*_%S1WP5By=qV7zc8?Hvkg+{(^5T0{1CKpn!G(5}{uJ5;@&3 zL;JXloSqLz#26)UQzULWAd$aZiMtPw;9MqgI{=N~^7c7P_)>D)`T-K0ACS;PfJEHq z`WT^q03>j40ZL^qTVyEtZV)+Wlej~G1~J_UiHm`0ERmX9Lh*nE-Bl7d7?7xqn*oW| znj%A|0}?Ub1tdn}RzRaTwR*SBrZCh5NQ52*B+~r_&=3xdJI4sU29O9H1W0gBk+|Cc z4dxhGGBi(y-Y-MTW$4o~^aY7~1CYqeW*NFghBiuEtHk{xaXtGQ`8x}c$X_BL!7o*Y zj+dct%g|atqF%h`8Z+TAT(67rk{XAojm3aQb14IW1m~9|v_V220}^p}0up)IFLB>U z+?nSYT&@NrVk7_(F~&&T1c}Q7B+@OFp%2T@-$~qy5@$c(;2aA`a9$^I?*S5JYm~UJ zBy?0lyDzZW#&F3G0TMYq3P|vCLm*t>;sFWVvl91`#3fw_k7Uec3Lp_Zf?p~i!S61K%a+grKqBs=68Ad^?U&FulI{_Y%{GqH zcm74rm61wV2BaK0T1eZ~O1eduoG!Kv{$Ndsl z3P{9wMdGR?^u7%JSmOREacvTJTtc?~2ER)IP2`*|1SINUu?&qJfRhx5_5&nB2LclL z8zphC0TShS7m#Sn{#O~$-GDNf%ThqMF;odi#Q2khY5|Efnk94qkVx%EiTfFlsEyuN z8(gjcB;wv8p)r62-P@9`7Ldqa4#)+x5s=8$RzMZki0u03>3}mAE`WBF1uwTOo0;NZjiZ_m0HXNZjRE7)5GB0Eu#(bDdGo*8&o_ z3P7T4&jAuK{wkq5K%#6P0TMZFmbe3eL{5JKB;xiw=3Lkcbg4akC|EAE4`*3;B+i!cZKb8yNZ(5Go02Y#U}kha~hv zvcdTTAd#0dh8sA0ig5;u2PATE4Ir=tzXt$`be{nv(%k|`&@})ObVEiMxMV;gjd>Ec zNaBhCp<2QD9YC23HI0PFPKM^88U=1IAW`=}0ur@*v0~tc0TQ@8Kq4<*Kq4>i1G=60 zkqJOiLxV0i;yw>Z%lJjJZk3(TaP4+`vOrIEeB(xzQ(yS3sf`o=hXqbeOB}8I= zB1W5p+9h;ILWdI~1HN}c#42HZdKLkVP$c7NiIABOv!;Ez&Fl6u8#N-nu+KMR!#?`}$c@h{;Pb=mR zz?6hw)&Y}phLz?+U|M6Xn9qSpK;g{PzXm4%Y%AtCFf;pFF{F^S_B<ak)-r8d-W+ah47TbQv*fJwm0XJVcJCIjo4iFp|q^1^Fk zNWZWFO=MzffvLt^W?~wFNkIQLG2a2RHUvYaL^3dVOq#yHG+<&fG1m|V^M{EU3C!x7 zt(e<^nK{zHg!_NHXteM_gwpH3|DOLh@hsH0`Mt^R`8EvmYZ%5MhBP7?dF~sA=@*6x^;tI~ zCm$afyg8w%j}D79B@8n=3={6Nj_%Y#In&)*DCYGr%)4QjEn%3?!!T`Om?L2ro(MU4 zqsGoOrcqgkabcJ%LNMg&3tvaOlwwE-4F!%0!_Y0E_!+4ehG4q)G5Amj4aI*c1oKzC zvGX%scu9JFyB-eUNT_KZ`~mvV#xn*d3IsU^Bu8uJo5hzI1?IpPTj6{WY|1&o(;e>5 z1s30V=fdY4eZ>qx(8uHu1PSkiAV?A>1VNG~AqbWk;hgKKkYq#%1qly?An1#F2!cOk zTY2!uWGjL{-&zs;71oO2kET`xeK-tBg+8N&An3DLD1ttFS$WXsm=FYg#|S~_-zWqQ z;tF%_6%{{YA-;JEEPKi0)|fFL?U-Gl6E9jYJ9lCBi~_iZ*_kv?2bfX z_C@0@j2@kn+0MX_u+WQ4iu_Srv(M6-*c2#;a`zgJdos{0p9?D_d8)wk` zZo-?rl-|rP%5V6>I%ANTOTF`n9#<&v`Y4=L2v3;&F-@RJXpJ3>ir0VRzEStV zNd6EJ&G3fk@gxo!mNYbJ=-}&b@OTnD^b>y}|8~O-z$GOO!C(5B{t)|l#EA;~+6e0o zgyzPCIN=ZRdEBkh&x`*aTgFW5E`$TR`IBNxsJ?b~VPQ8xA*d3fD-hq{i~v&kXhYi8 zUy3ay1^ScF?VhY0cgz0E-m z?Yih^$F(S~76pGjElPi|Yf%zflwmDON=w$^^6C~PttG2n=tr_!M4?&G^l?*V39{3) zy{WQ{o*y+;2I#r1sq#^JZf&Zpq$lW}!m~v=+_Y*H1MN+#o~Mv#(xz@IKDp;(=laZ( zP0@4&*i+Z^Nfq2HWgc%@aJ+dHHjB2V1t<4xZ`$7YA!A4l1em66jUP4EGR7e=joTVG z^E)Yg62(W2TN^hq#-(%FhFCR>aSIGGg=hj5r$^hmC%t{IK*b9bs?OeVIoq2seWt+X zR-c?o>pNBJ*3G)&kf{&kKQxVvAH%TQakLXT*Ym|`#qM%wea8FF4AD-ngw_`{S~@gk zAQU}Z5KFhi{2Ii-J(|)V%GnU4HVjd~9Yj9_z#W7K54eMH7=r7tWCvX+uz^ylN8Lyj zroKg$q^_juR9P87gW0#ayFS$}x4mYC{ zUe9^Ht3Ppv3Li7}UZ-Up*L>1v1fA&(Lr{7yC}ScQ1i`2jV(3K?5rc&9I^O%6{n5w$ zv6!;tgW0_Moa@g3BU|UnF2gaX= zN58=M^VJijU!OuUf$AR&a^}>h^s2ZDpzug-HwT?jQg`IQaN`GB;>eR)7)QgI)O75}v zM(HU~O@$h$rBV=GxCiX`0QHl~EfPXtb!*sBBU6JB8`dwygpN{sc>UAK!ln`lt?svdfP+nEuz4co;s=GCk!mBM)FeB%B((Uy?`Io7!+%UcF_-yY#M9)O>AP?2FJv=Mtc!7$$I%vi2;S z4K3S>AuoW|rrCdQq#m`Nk~m$xs4*I6L9?&IioP2Co|Y<@vQsmSDi&jU9bF3AN^f=0 zp|kXH8c!woZ#08GA0hrLz;?WEzHg`ZH_Z3L^!}p$F7^{Gin~RLM>Ae2dd+~Qt>`x` zt6D)yy(b0B`Korj1S*~n{Du0_w{KaSp|3BtZ@tvCQO>GKc5FQ&0~u+k9MRsQeb6$n&jkGdryG>D9ImPb@*D;~h3cXo{}H1Rh8o2rHUm^r7t9aaR6v zJpMO*XaG0#1mpVUpUZ23XBF<%Q9toBzu{+Gf{&l>_7Z-&Y$y2{TPEHeS3F?y>VVTd z9&$taHAO##^pSWjH8$MXwc* zqy0L#wlkMZ)Bb0grm$yYT7u;k47PA+R-;t{6I`1YZrZ$dcw_Dz(pISA@5yRMW+QcX z>J6lp2ctIVP>j(svD1QWlCo_G)(}8jwpe%+B1=@lVh_cu(*pPM!41fp^!?N-`Z3=S+*ASK~mNUf^1+x%va>AT92OEV}{&Y9Uor6F~hv~qpo-h zhSFi~(ubAs(HbjM^@EQ?A2g>Dsq@y0&E23w){jXLCG4KPx~Y7pI%XJ0ah8ohe#FXZ zOF^-QgCk~LPS`C{VM1ZcU(U}sui!L>DWB~8;Mn5AR)~f+=6Nbi`#Z2wf~7siU+czM zTo_$@9Sz3sVr}!uR&Vd=%3;azUgwMy!|GS!zbIcAK46WsER2BL(;> zDx%b94_!~)#`%*MhBrV+!}w2lBBw}UT-SBc1Fp0#CW{jDx`^Bw@6;K`ozjh_rA|;+ zJc>Z)!*n(?7Har+isOp`GpP@~(liw!b;k3yi z8bH~Uqo(%78tT$lROH1vQ*F+vgi$u%yNDGDZVo){Nn47?>kB@8W3*(m<4J5wP>o%8 zYA8YQHncRa7v(#1)X9Cl&vvMy7Qr$GCS@zgb~2r3I{u(9#OC>)?UyDC<8d^@Ww}rw zOzqgRrSI{b8QT9*!{2ES(L52crKXjpd<g%tN0Uw3sfnULS)Pw%{$)2T&1M6(cFh zZui^f`3S~(Fvv5>*j&QmZq$_UwBU2?wk6Mm-YGAFVtPjkc$SV2@VHq}WEtw$H)_fr84L>p2jt(EJ+y z!T@3Vu8uzSsSd(X4cEDoirbbg!j3{cF0zV#ha@ZFOSPD~RJ#oe&gfV=k&es@q`Cm3 z1AicjW2Q)}A{JKfB<*eoxM~w)!I-ko)3e=Nd@}bSx#dsL21aQuRjI*v*5Z7k(IdF{ z*7`$I)Cb6Lfl*`nS{+QL_CjM(Sl7nta{l1`wfAzdxxT1;=aTbps;oxZ#eLABYxYM* zRZ=aYJp&_MUFJ`iF8WGrwb9ur=sN_V(G-63HI#FvqBN2xt@ru}U zX?Vp}@qUPBA(>2hCl8)I%iI;C&V?ER;R5|8bs)Kg2F}S#|mYQGEwj6fkf5omU-yqQ@=fmvr_7Z<_Y!uMGeWlxM*kr1c zB?ZbA%%rxX`IOHybmiFxZKPJxIK@n=R?@yQ3+eHBCeA$1;8p_Tt=W4EqTHmdJdV6# zN%SNg@y1)X%PGKH2TOUU`WDf8d(hdZ1c}I-wXpfze@LX~p!+&sED}rB{A-D!#mI*G z);hw_rGjo7NEI|}-$?UwDBCi!q-2zr29Z;ADqOO-j_tf8!-2D3*ZM#;%;fq&#mqJ9 z1KT~s@5$9PpV1W2T#u~bt;i%eo4*NUp@OvjgfRf<@(fBGGIYqb!v@MvNT{I z7G}?b{v%Y8WE|4aw&+aGg1rqW1Ca@gfgaXL)fI$Dm#FaG-2D9PxyVR&`c|ZyY0+Zk zj~=I^3(?{H4Sr1LTbS#`mzLk=C3G?WJq_uCnku4taSbyR-KJsD3AC!B|3|b?RntvW zbgOG9^zKM^5p`hEnI=`OMLzE}i*l|hn6(h5E(&LnB^05ur zZhwP5OzHZXr`0FL=T2RL?cdVsU-Klnjr6sU#4Y%5J9OKIi{3uIE2aM3_M0Ey}aMclTC9!BWdfJA5_AQ3uF;_?6`a*U^C=$n89=WUYi03eam z%dpT3Xt0E6@fWy0Jq_q;2@M7W!7k(~6ObrnHlQJlD+MHSb#pHx?)wtjBB7lU+9RQZ z5+eUD1HdoFc2YuiNaP9Jy?{iCiUEn*SPe*|`=-S0khpIFiJT_kz69cz$USL534V7; z=vzR7OI&XQS`J90wnjoV5;`cMGtM;fLbmG#7oUVk3iDb{HwFS@BJ>fn zt{#xc-vXDB`(i*hFqe499*R&yv&n6{1vtTZ8z8~&q{Q{NYLF5NYE8a++P3< z;xs;#p$7no)H(nSoTJV$aJ7I$9efKe`$dd}6=eGS}YxQe`naikF>LLUYs;!cyJ_7aRnkw%+@ ze!}<=IFc0=(3DsM+JTlC%$&1PA`#jLIS^2{(z7ISFb7dAKP1M#2pml!v9a&&hsw64 z;6Kwafd_wAgWALl0j3qRn~51oG$@~mnF>q-5;QS$fw5usF);-|crfFbm=a*f!?%ff zj4+rTOw9AZtPa8a1(=2q3~l18QIBSgA-Y!AUS;*BN8kYE=%sedo2_3vfBLS?N&<;c2|wIX3O%1Nk% zRj78ru@c!hd98L6>LD(WUn&MMxJ~C=J5| zIG)Uy%|;7m(AmXIM>o!3BA6{(_p`ELSwgn?1ew7lCiNT+(8UO4h%Rdht7cXizYxho z5;UA)$}ffqA_^8}$Fa&W@{vpA!IW3jr3BHDVEAESp&=Ld@1)`e-*AHvle0+0J%st& z!=o@Zjt84WxnL z@@{kCzj^Oxfa1s)M-0ff(0Z+zKKpOL%8J?cuX10IDGx7gyWYFyr%TzSJ0|0D%vp6?PdH#GIu{NkU^d-5jM~Npw-Ot%aM`?P zko4tZ+eY*p8*bi`wiJFx>BBJ(OroDn7jaa&!=Tzo)z{H1s?oS*#J4;8jD#yNXVsnP zWF-?^Tfj_cVG& z1*S|R_Yg@jL0APf*mz_`8XAL z1EkMHD8IU!iV`VGj1qE*Q9>?pv|i#Ey~I7t5;qmqv!CxuJ@-rW+{33bavX5SiA?{X z9zm8J$Z{|Z38KH~^fN_1yjL4}SQWu}K*>1|tD-oqNPk@v%D&I2T`-G7-3I>$Wf%Pk zqv?gjX7zKl+ccT%k&YEqFQ0G&M;Q&w!x(g{L`r)5u8K5M`pDPX@swUs#{9-p+f;Pb z$<$FhH)9NFa2Y)bW5eOaAD8z!8amW}v(bNjN06iM5_e*RRiYAyR0iTJ)gJ?RVVS|A zuRC@SX%Yb{rg0p00Qz|9f(tZ#DI+mOhY%D79E%tf%wy+@fkU3M^R(Plc0Z$ z=%*1!L?ikDUaF%I-p)R0Aq!A85A~h6v+_US8$*19Lq+?@^#Qlou`0>cxdJ3t=MH4# z@-4Rc6(LF+IXC1+mhNV4B`MXO)iYaNl^G2QYx55~0%=?NubJN-w`yABunkL&+sj7P z_IqV+oBOFLyN0au9*uo;!uEl$=N*cFe)^u|_m=(=`OwHsm%coEf1f8O?Hu&?f+M{i z8Mp1Kzufc9`M z?=Sl`qI5*fB`?kT@~kIr+mZOU`+n%Dj@>%o&$+?#p1q?f>7DyeM3*ZcUjE1Iug-Zo z^Pkth?fa>BMf%6r{B^;%7rv0yGW;LK|BCXbZocdfa}J!na`I<`-zxm^3~l^JSHE^| z#|6*b)qK;&2Y>FdVod#&ug?4W+-GjzJ#>B1G3VpAetO-Ti@v}3e`f5v<%8v?Y$+wx zu8hhC&&<`W3HfUe+eekvx~Dv~tKZyL+J<=79d)Dyw!}?a)!2Xjn)YE!HXM(g@aXpV z>Cf*OnD_dj-tXp-RD>2{ORBgi>o?&jeBI<`FH;Qi>vPW%QrVZ@b1YoCqDMcMR&ir_u7ST ze0TG*_kWE_^>03V^2*OHoAZYQgA3pKvB#Jd_2=IH%nl7_WVF!ClWa zUw!Xu9XCC=@n`3)kAHgcjQ`np-J&x@Oq zAOD{>KlpUt_otr1+ISIW^%&br5~`I@w|6dLKRXAJI&XVOr98$$Rfz?6jCCEW&0 zK6dI;FXl$h|_ikA>ZX9Dy0-@C2ok`R)71i6zZ)Y*-(e; zLaAdHELyloM2G5~z{yuLqX?s-2t>{zU%~ABe0uTDnhnF}GrUEMLJ^A=W``o^-T_R= z#AiOvs%ANW45>dp7V}6Xv&E$OtY?pPLg^@O2IhMUY+ziJyT~|&TC}r<8hTlw+F6N% zhK6ZpdC-yE+>yf1p)=9a>kvj#qV&UcqV50U9QqW}aqDSPy7Wu2CD1w4e+WBvI*OjH zrA&i*$<`nR>f5DmwS_ESpLwf~BiT@G@-%#FW@&U3k;Gvj8X&X{k`8+j1E0lzfh+{^ z#s_EhknrAV`S#5FIOIoo19fN_5WDjBppA9bsr`saQCa)N@cgNtizxp%bUc)SbWw_^ zt*2VI;?OM4QGy?dy3whGJZM4!!g~j{)-7J9;sS(hQ%=mBFu_yA0Xgs^ z;Ke16Z3I3~FUa@85G4pO7(KHW!Tzn(7M+o^&;#vC5sU9%2$Q?e=7lwHd_~0{Z-Eb% zzzedk^>|n#mA{mSFwm2>QO0SNaog_0-!t()#`c zPBVuX((^(vUcB*YGB-PCmM_mcL$D1&F<;9?Ue|X^6j~ZYuyJ2$xzsZ*2Wj4<9&OB= z^8W60^XA~egT=&YYPC+f(q@~*B?+H5Z5N7pGyW1$RBGw}i+OWC=JIt&`@Jhfy7;tX z&YSafEj8$K!F8qYIA)e!xT}ci9J9aIHa0eJk~RJfXUkdLEv*NlA^vGggDdIZ4??ff)c@wkp-JCc;_%9`e;$3(0Xm z7K+c`SQ<3rgBBD|Nfn4PnX?7(o&Mhlr^&X+Fi%t=AY4rxH9 zFv?HqCDj%DuJqPC+RcU3PEKW0YJaFyNEu!&)xm<-P5$Q*4I#-*{#61R(&VS11KhwS z_NoS`Uz7h)fs1cqktX2WO)TgHD7ML8B0?qq;1S$3aQ%ubSEP=z)@bk}1PiBMK*I<6 z7R1LAK(nDJu)mg|&~{*F>-xF_-UGV^XM-uNBh17QR_2~SnBY$k-lpIof^$0|QP08W z5RIhFbSd5}T(02~)Ysb(Lgf1f+yQ>i;$%>UnMqRM=oaV=Pow*i_7Md90Ifl{I7!{X zQ|T$b;Frs`e4P+fgljC{Ueu4+L1Z{UOu~o66P0EWQMT}7X3O6~ ze$^jI4^Hp?&a!H1-;HtztVpUaxHR}0H+nS+;;#?ww)IZ`V+dpw7*sGQ$p5q#w>7uZ zAlZgN;y)Sb+a$)x7#=61F;4!bjUkEpSZxexCy-VP-o*Imcp7DK5hqKTeyc!8|5We` z{N?u6{Edj32r+%BKx*se{!ND()*~MY+1L2~GtO?)O+j_Y!KN;54)x%?#5-fyB&!8FC;f zS(mx5%~>`WM2XefYE>*r1CwAt=jc3C z{s(|aMJk0bsXa09D*$Pe6X3J)u~(6a#GMe-)(5*H`s4r4@m@~12gdNgIR9Ua5HWu& zUmG&svD}4>^}>59yAI`B^r1Y|zu(~<)O8$Ra{6(s&-Y?#37a(iOK06lahUJS8j!zbn0CQ>j$OJ{e-1D+q5CdxRaK=u48^4Lt{D-Mp zSF*JV(g}xvHO8A!1x99;>y9u>PDU3MYN_6ewEN9KlJBKp%t zO?7Cf52{D_W~RibldKlpcuooanfjCdJ%yEM^wJ8QQc#PjhiePpE8>w#FhQip^C>)8 z`;TK5Bxl4p@r%sybwam{f@dPGNUxLQNBFk-H*QCcBAhEmfJeu>0w3l3o4`jpR}3Kh z%es%>)*kRg?JPToaE}Sv9=>uxYj>{r7luu+5Q$XkVa~E|fI_zmW&x`w>MZ{!(TxYj zYSn}1N1-)ABKDJwTGV~0k|tE^vf;+~U)g|cV?EyKy@>85H23>hko9J2zX<%3HWEeA zK|hp8uvVV*DH9jRqS{xEgOAlDHw9tgKs6 zxP-b0dMB-;-1gKPg)?JP0(pZ%Kw(sk#+z@@OcOqWlQwy87{E?}!}Sw%Oqe!;C`G-0 z8uCiNuKj2o;b@x@rtxq(j{FTwA1G9wqr^eii3pCRE@*f;mtL{SE%ZKPOm~+OPXZW( za!mLS39c55o{j}`JdEa-FpLf5rha2`rhB_k3~eStG1N$*7)KZ;HVi{@ej%}<-l6T2 zR+y$u9;GVJ(}`1Ag$<0VJVk1B3g#7;sywP;m!||Y97~ll4To2yL`(Ik?2cPY?WdNL zhi)ykzgkXCyEUAI*pIiCnxL|4Z!L9*T0WnHh6xwS8Wu73qD`Amwow2AE+7viW zE$6n;XWV{>2z|oxt-eg?N1RecX+ zDD?Er^UKQqdS5UYBDH!yB}>1KM-rQ*4tX14f;Sf*2}>5C*i;Q&ooF z$aZe>5Q@eXq4rRU`%{2gNdt>qjMK7PR=s3-S+%c69dp96L~6}g1J@!~1z15^Eo_mUuad^g`yf>T1?J;6~S@2=nw{as_jR>)8}El0wqGR>f8BMaU7Q&#u#Mp?`xtqm&B^0GfG-yBP0q40w%NYmSLhcTdValFm*@BMh2sY1(nwz4hQ>|=5Z8UDB`Y>xkuNkAv zO&?KxoIrhy+`GwAPnhs>RQDLcfB9+{FpGj!JI%K%c)RQcc-N@bwT)Df5j&8ja~-yv z`Ur=yk?hQtFE&4Qg~))lX5oVnxd&?u1P`go5pD#MTZi1e|aDC!>9b zg8OK)g)Xt!lXK@!+=;r!5Jr@aUOc}t467EW5DhlQzGqn{%&~}7k!+*mC`VNNRONg+ z)yI)&1hq!RrzvUxhzMdnLKZ~Dk1#5J`Jv!Ust$2J6!(RthaN=%H3e2i;`ME7y}cjx z6D&C9nt+Wg77Ln=6eIw!zGNnVl#x#HGS~8gcqxca)r5ysdpGtevjHlY#}2=vRz*I*7JwNd<{Z z4~o^FbR4A0FsR$_{TZDCxvHfW5Vk$Y2#t3X$qCN#0??qeB}*cQIUkG0 zyi*yRK`1>%Vrxy2(#njhFCjer@Q#jxbCSnOl~^65OInEYMOr(-jni=Geu=qL7J^HW z99NgVe7tuhvBY?R6+|+>f=fn1;OW+%E_!0XV0Y=Faf2NW?boP3qVAr=L2Roje+_e2 zvHrCDNVReUV&SkQ$0O*mpV7nZYGv(jg-58BTe^gYYki;R|JAwta{sSAmJRa%>hRv; zAD{0~->ODD%V%|wKJ^K*U}a2p9iI_qyA@MI7#rs5ocDX0bgzkO;`*_C_h+s1iz!tX zMH`4{25aQPrSj(`GZ*yzLX=-@x0uZ!t2QC>_Q?Z!8)>Vr7yZ}vFL&qb=8n^SzVJ2&Gq2klNe>+#{k#emDVw6osf z%j(=*;w*n0b=X;tj`Iuwn;rOG@*<#;uMzK0gc{uwRDAsPku5}6eKak)t^S5C+8vSJ zRTZO0QBN^G{&lQCU4>36$zrqAp;8F)VNN%C2xX`2KJ;0G31zD+*NWKeaF)%sASjn* zcUlmf+pRA5mO3TC<0F7Ar1iv2i8l6^cMt##7Aoq`SBD%^L$}82le{}29d}Rq#hvf;ekMgi-a=p|1jPgEdPzzdRgXY`wDUky}5Jr64^%N=jY`L zEhvvCx6tE(qxyx^nC$x;)p+e354*KT9pUYo%dZ`jP>7_+Ve*1}Xiq_~%Ok=(C~P6w zU7&7aVN3EYpeUGC0B04}^r-QOOD;8>Ob_)?fO2+8@79HR_cJlHvN(|Y~)b?rlV8%@WMCEha)&jbop#y+!U??`m@EUa` zpka)g3@C{qA0UzYVn8=CZfFl9r;h*_I57-oXeJ`bswK2jLib?1G>&sn0cbo!Z%b$|Ad$Zm%s!$VA4+JKg!TXu{Vxl%)dc49 zw1l=xs8d3HA!H`_T?9zPy-DIyC2o$y-79f@vDFiC2TN!m#M%UIxP;!4(5HYzuD+7c z1$_Xe*$JTn;;g*U|yS*kS?Q$~ZTm42F^c-Nw*#K$93M12mbTmn75)XbR)f z;*8L{0f{^p0LtXhQb3|MDka@2N%y*>+bHSkWauXncMQ-}=9hb((SnZy67BmZKq7x1 z0J@#&$U~^e3wa0?IjEDkPb7}Kh6=hiiF3lzxxk$ZNW@Kyx7nsK=kb8bG0Nu?{8=x5s9R)O#p~ z(B>jnjd({E(UyB8)GDDi3AIb;kc19PXl;bSg*5mDKf1{g(0dZ9mQbyPwn%8Zgu0is zWcj=~NL2nXJ@YTZ21!E1?(XLSG9Rk}(=b5-{#IkwH8C^~R-^7r%w0r@S<}RLfyfBK z_G?p(6QyzwS zIt=s2FwEOwm=D7+JHs&h!!Sp}Fp(&KXrB9oVJ;2Bg!&$%_#?w;CWT>UhhYlBFb{=c zo(#jh9ESO82xi8-1>RivSTf5MZta4?{t*(3FgwFA!7xk@W4f^!edFRV%=KZIi6I!6 z2+JXVNtC8d^0_C3hC&_)!;mE`@iS6?A`J6f80IfwnCcJ=Y(p%Zch7?SP|n*!XejK< z5DZ)tWqZS7{S-n&v7)2tFa3->pBsj`It(*B3^OJKGh^0l9DxL1lk>C?8Va2khA9fe zl!alQ48yzS-K|wOK_)w^rI9?`kmPkA1QRziej^wOBK3KC zfhgNnzTyl%0~Y?Qwn@wrG$t9kHZfB+N&)LCg-~?q8qh_l%ODW3aQh(WbtbtXucl>^ z(>V1KvDiL}m5pgSM<;-h6l=I?)<%Sz=4$k8NDqF7#)P#uOAmO0*eiYJiFeawp3V#= zb*zb--qS?5=|4@pn^t|qyJ^Wsyqj+Q#Jg$DM-NZCLvJ|oZraxo@1}(xt7Zrf9Mk)u z&f0XPXWqTR>E7Isehw`@JteXULz;VRe@D-R48?_?)vKR~($#~XmAYV7e(n-$7ndBm zs7DG`biF9*Ss%dq;-eTdifP8Ci(MRJNQVwYt4BP2P=*rFz|j|!kZw<-&*Ggr(6Y7pI%xDi0chMWgtP`Re8lqHbDsoaxQJ$wgG<2AUf230+wjYn-&c)5kNVrZ>15P84B5XQn=tm2V=f7YR zNPLSWHAQ?SfMCMyj?(?MQ>SdDCvCX$_d*`U!Jo-sKL=O)hmi|Fc5f2d({Yw9!@G7a zzS+A1V|vn~b6&6H9)U4uI3HezAj2tBgL=E&V5FU^W**kk50hqw_d|7aVy9Ys=pEW! zsP*b$b#KQxfgXP&Q|R!0fUnV+hn)}aL!h%NzOVm)^RojzArj%;;}6<9TKU`cP%wh% z14(s(QDXBuCB#ZOtRCxd;akCu6U1e=^IR5gN*$A8mv0@nW zNI%RGJ9e-;s0JZV%Mvpp!&#JJ$PKwD9X-=HW*V733z?3wWO^|wg)$taXSmfLjO=Jb ze*7n5)StEDLlC~g$BICdc5aZ|Klo4Bb@X2u9sCm>R6c)A2~+yoqTen`+{^sHCtAP>(WyPQ=guP)xD z7Pt8i+DVZ2ehBm&(X!SJ_*M13(55bZVHe4DX03xs9_I>{27*G1vesEOA}SfJ-vBnS z%~PjrfD}dv64HEYsV!axcP*=pveMAmcHd!6P$a%7|_{u_On5~F3HzW ze6QwvJrT+o@cXe{Z9*+5>jGJ?s>jq%I{MSM-tB75X9v`*HO{K6S9@ix3B>n}QW~O) zx7?&OEV~B0`UcWpEw5hwIZ>YY>}RG-Uvp{thFgd$`~yR=bHx2Z>teUa3#Y%-)#wyT@f`T;*4+m}k^yAKOQ6gYkyN}^ zE#Bf>G2K!dFt~*F%ygDthOz~(rd}t@wE7eS2G)y-K}m)Y(}#l`vMIg$a=lwDju&{TSR-J7iGQPD{E~aekiqP=5}h&tB7SF z{dLivThtxYp50L{|J+{}k>uOpTtOmhMpGt7y^FU~8*rCmbB<~VWNrxNLjI+TEEYcZ z-;SwnDvaxlbCjHj@s2M!VfV&xXQ&i5k}AMJ8w81nZ^-IRny`8U-Nz*n0eq)Vi-PSN z_2Xv>`0ygmzNk+bQ2hvUzeIEQ7ZOh-n*-DmCIoDC;^pxMaxqLTi zy)X%PQ29EiRKi$TWfWy%N6`;3N<e(J1?7WNoOs-dDCZbyhmWd+YFF2OTVP2 z%UMqP;%gjekMb)3fhZD069wo1NCJJNt4jA{Ydqcygp6nDW;@;?JOKGF`dCgkr9w2+ zke$#b&x90vsjfm`5IQRS91&4Y?L;Oicl;R~R{vQ_gC$6HraG;mr@}=-5z2<65e47V z5u$))7lR7oj3g5G8=TL9UozwaHBr_{L-;q-hjL~aDf3nM$%NT&a9s}1W}*pDn`M7L zJ>!QVhaw13*JV$gp0Jq2)sRoDE+mrq+xZMm21&RrJzfvl>;f5-8|Ub(A^TZ_4EtHV z$$nO{u^oX29B0|9XjM!E8)+Bf`wBz%OW8j$9I1cycl1w-jA+C-`>vyw4!Usb(w z7`MytS>b&R`v~75#31utSXMBu6EJ5)*L>;diG4*zM9o1*Pgo7hun+j86mlQ%OS9k6 z^W=bS>JONmOZO8d;81_StfKA!2D3pRBRWbsoRoE_Xbo!vRBoh2Do7K7nAMOvZ9_Ur zbh8fE;hQ4ee7bEFfLsh!0ir35 z6f&(V>`fQnlA&`J<}*AWAGhf+v0=2R&b4^_H%>xbeTF}UQPb}hn{5^HMnAmTQiN3+ z%rNR^|DinEbHicL@l*AqX$r8_kH)tjdeFGD39X0v(L8V<&54oAGTv)xr_AcX6%Q^^ z$1hbUFHu=H$*LpNk*`gJZa)=V&3s->UoAu}#R{ZlKCb~|e*&K6w9zh2BQniisjZ~S zVaGMBgrQS27yoESM0hgVhC1bkj5_7W#5(22F?Gt(-gU}P zz3PmXESjwYi+fRPf z4eQ9H4e1fu$K+A{Vg-$TPjZxtfpA>%d2xZpPu{QR{Z*5uXepMA0)MTS`BRY<#%8mb)9@4IdAnhuQOz5epAoCqpi=j*U3t8WSkg9HTOK6*_yTuF}uSH@Sx=@=$^A1lx z5Up;10G-)i8_(SZHv}UciJj%urnakLdBLHLacTCoddzmxei9fQ9StPPW=kq^EZ?RT z!Onnhuo#oNf@nj*NYb^`=cRhK-arwIw8eY`o>p$5917nbut}fRNgrDjqWvA(x4vRZ zU$b;K31E-ZDoN(U|Z z1p#sL@eb$Y)RTsA)1Z$aZ|zTDL|U8bEaa2g2`z*uqLI?68m&!i+#pUzfAAN_#b8AQ z>pJDY*gB;xtxoxBRGo5gQl0WO{93+>VxdUf22RI3KPA6v(V5J|yvA@PRwF>N=$k8}D>?U?oWq*7>L7uT6c6Hevyd zj!3wpj8j?JIiP$P@LwfRbpbz_5XUjy>StMHe8 z^=y%dAoaP``0Kl{WFr+ZiWK>&__)S<91mTA5Qot<5xzc&I|U<$^XW~(@$s5SU$1)q z25>-QpIT$5w_3c>9J0niZ`FY4m_Y~1zv8K}2_@t>ei+{HjJpr%XzWHAUDK_tr1*eb z+RAEzP#V0!BnqWMg|dt^41}xw$4@%TUIGvQ@n0cQ&cH9uG9LhH_;@s|(ePq?nZvU_ zl@9Z0qcZ%}w@|#)`fI22oKer2rNZ!39#l|BzV@y2SNEuCj|!ek{a%TK7AA?GQm6Lz z!e5BoFTe=#7kg6PO+jpD`Q3O8=HL%ntzST?3oZvt`HMvkjQj;J2U72_+&}b=PaQT$ z_FhDD91rFpSyf`@$hFq|YseQN+pS1Cp3D8h5^KnGgwP;lb-&MA|J*l% zZZl?}l10`df<2K+CXiLcFk>m0v1}S!z4Et4oS~p|)0I+bu?y!{*xPsl zFP$rBMB&olk9cveS75afj_X&Dd{%{hk{G3}JW7-MwWrXv3lxrbdT+r6cw#5Dm$NDg z3s6A$3dV2nIEV-C3!+dM2c7M)nF=UhS14Z*kM_sGAj#({+D3bhCb}$7tOl8mFYAie*B>JerGWHh0n0B&ZFX#;`tl!2V{39^z325q&hVJs zzZ!uV9`*M%4D#gJeFI81^1SQwIICd7X_H#x|I+C{;qVTlq~5cPT$<08!mtzV4)mpQ zB9(D`o;_rVQEN)SJdCXQPvjSE^q-1YT&HObc!%F)9MJGdq3CT*qeDee*Enl}QGnoRyn)=u*Kl9;*Yxa5yP z;dZH+@YcHP-E!AR$5rXOj_t?GfQB9I5!kTVRm6@S&`>cd;^M&Qh~T&Ap1l9Tc8|7} z70Qp;QDPZAs-SwXsl*1e6ZL(JM!Gm@qSGL!Jb|{KjlP1abNPAeXtfps?f(`fwz2o4 zIKx8KwNCkd9=5F`(0c*@klq+wi2!V1N34T7u+oM^ZBX{zSKJ6iU`oo4B*=HN*mNG% zH=RGh5RG!ILOCir{rA*iaU#Y>G?3XzyQYVZ>Dp(!zlk-Hr6m7jR+KBs4_F#GA=Xzi zYo33&fA%+hocb`Tj}#)#B>&G*s5|V)e;SF3vn^w7u*1~ovvT7Hx0Ee_ft>NbO6s8c!)U?+pJ* zWTW2U#Zh1tZ5{$y_0Fn9^~bVi@AzR^^#!BxO({bC8L!FoI@DQpM`T%ZAZxdGAiZA+ zQ~OzM_%@J*86#_VAnPFC0d^$o;}_&n@Lh2sGH;K=3}Wn8Lq^bzoN^Jkwy|ph|9-m{ zpD1s$!$Mr$jg^$GqW1$+E^NciWd&Pqa8zXOgFYu~y%Ni}f9kUD3;hCFdWgm!dRa?W zWsBl&QQ}*ael5zt7G+3_lH8KDx7jE+T!(2Ty=lR^eZ`ec3#ytvp&16IG#a-GOC61M92P(r8P#CJ7<;xiZEyUL@g)>z zo2HaBekAO8G}aRSA4@PyDGD3gXxt`Ddo*t5uzVwo07_>%JvTAGHJr|x7G*UBOzRSm zzGhGQD%^0iWUeAjdE}Yt@yX7&3Vke2x8&jN=fU+%JTPwE+6P&PgBcL?JSqgnGZ_mJ zBgtq>rkDN`JaoNRP*H z2k|_b(vOZ+S!7kx4Me=Ac<5NBX0B7y*8%~1FPNJS%rUw6ZXpeH!)P`5DtGkOBQi=M#$6J-fx)&;V52GT!girv6430%no01a9L zMAQ`hm;y}!08G#n06;-a!IP{9CFCaQ&y;8q0H8#Z001R5N&nL|$yGmKp{reLwg>hn z(80FM$9yG`<>s09fEV?R^XFGsJr7Q%`t}x<@ARcR*WcmzJ5GxMIv9PnKj|}PMF81S zzu*O|r6RK>ki|AVv0%{21ry={ZccQHHHW)QhOn^dy@zJt_S4P4<;}~S&h?eFPef9W z{SHite%R^gDUih2jY%M6I(M$WEmHlw<~w}U4P>6Y~nUR;WQ@t?r5cVIRue>^H5tMEZ=U2q9dwic=Rzl`)v)$885 z{!Rzm2N8|%168-)2$mK={<<{6WzY}~sTFY_<6J*3QvF2MO*-lZW&%;*PmQ`sZ$~8xI0npf;w6JYEs+P_YvYi*xg>YKlCCd1S&U$nH&*Y_Lf+y}4?Z^N18Qffs0J^S;Tx4!PHl9U>%jf8akfoi2uOd)Zk}g|T_h zGIn9GcT=w_>wH&0Fe8y`Vn5Y{TO3DlXjhN(P}lc6TDqemB@%_QtFeMa-ORV5Doj<- z=LTn0Oj)&eo?5&XC%g_Nd3Dj)iu7u-B^%q1uKv(wR9Fu_AX2sWM`k$V6-qU8)z3k7 zQE1^9)C`!Nn|$%&jmgW3-lCHmKI;m!FQ^r-t&753?b6cMY3EmX&p1_bvq#t_#W7F) zA{j5gfPWe0@#)A~;#PWeCbD+fy#G22MYFac5)Odfh5dF(aT)pv zJJohvkD;T&(p*LIKWM^KmD&oW4HZO2&vnCxE~J8wO|kyk38KqlKF~62RrIVO{hV*^ zu9)JYPhq^bCR=8nb}A?Z3K0)%{)nT!{TT#Qut{~kyr-t2;Zj2MlVP6NQQ>~F!kv-S z;PkU#qpw!|6-EI!cNA7S*GJLm3Wu|$Ysi|jT5~m82V1i?t(f*!B&&+1%0)Y+V)n!T z{kX_EU}Hf!^m}C&F{@V^#bb+j&@PS-cXUHG7e;U}^}sLP{{V}=K?cw$8VOK6gC}nM zqMVOC1;|;2v(lKTn*DJ-8(@n!qGrE~fk=|yXmAF`qJ5H-xTOWo$4TxISBG??{RhOX zQ1(?U6O$Ef?vU&?5d1)y>qg;w50zb@xzS%n5RrUCRg570N(5}I)l#p-5hk%3DHcCQ zgK`?WBgG^1Y2p#tFEo^Nvf#NGo?;Ye>2VbbdgTtH|7_~axSAIEMsvVso{`>?@l#ns)H)6fe5ACOIq>mY7o?^w)^ z(IvOoe3Q^1VhynCw@&TPw~5-eTtc0P0#HrO5^W`lr_Y1dPaizL;ob}!x$;3+;Z88> z3Y%vd^$K@;ZdVk>dz>qy-g`Mjm15AjPx*$xSP|MHmZ**Vp=sJx znnq#AsGAO$Q(1De&09~Smts|5azlw|_wDYd9>Is*#`fmDTzeIxdPI_$S!BKf-#CbG z;sL?e(&yjMQI@2z^^Zf+$QUHh>70Pu(62duDTpb>#`fKSK-2yKs!UE9Vw+^tAAOIi zz(*CXJam)Ym@FDmc}=LiFHm{SsGvPm2ECrTR%JDXQL>cIP~11sWI@KV#YY4*jbQCI zs_AS&Q!nHZDpDd;<#jR*rO;(MQsIRkSHW&kTcXD(>uBaz*5WHz;#PEs-T;g>RIR}* zSCLsQYB=8C9*GbX{(%-$!<3CkDAE%O)0 zo}$kfv5<14TXk&6Z56(QAfpn})|_gbwt(&Dft>AHz0M&AVUo}}s!k?wk`hSAX_mgN zLdZjbHA6%tPVIXUMpD5X}Uq~~#$dZgz6wRW!2QB_$2PK7ie#JS-yfXZN6MTv-u;4=~>v_#t(N|CV~ z+p!vB2#*COF{w(x1riLw+;yjH*5LF^x2%R4nI4>WP3VOJF4CGn27)5;h#2J+Ff!Hz z9Yq_$Lz!=%bML8JR6u`Ni%`4vJ&%3%*?XUJ&tva1Y_fkW-)yq)mv4sE1NI5#`@Eva z!$b1T!^85;!w&llZ(1=j(H*=o)`!(T9_Q8M9a0@~nIqiwn-RC6iT5cr-Z5VuE<+G% zUhWQatb`tAui}$5>sNoE@iH2Qj6p>Iguk(Gq;s-mt}BAos2Zd0Nc_`grq1A5ly(Xm z?a)SMBmH6-ZwNPKjl%1lx|1wE*xR1FGj`v3Inmf+?_&bvgsyWke(Q;5?w;}CCiV+C zcy4E`3~Xg~IzHSIg;fmgGD9ys?1>9Ces;u=_&C3bP4}(>zj}*Wo)*Zm`Xg>yIFtZt^FH#2+ zNujz>Y6@+HHG&XbanBsxq)2c%nc>Zp>rOtGL(`cGa&SLmr4tl-`#KrFp`{o5@kPFIP73y zmV|{ta%17u2gCIYbg}3wh_h0~PY~EnW;<%j1yT4P%;PJKwo?deXOi=+;bQxICc_wTQmSp%&3MnZ_D@lM^qZZ}L#|O&}Bs7NGn!EbehYzsu(#C>~wZ7mdvY>yI&dG!Ubm9?r zsPZu$rWZhZ*C1DTBviX6JeO{d=RMt8zfM;6IoBZj&Q`;h;*M`o^A~J=sWTBW6Vm2i zi;OxIzEx$&A%mQo{{-sRbXavu`S#)m^j5(PCOfsV2WKnK>~1_F75K%!p{5Pg)lZu{q| za2e-O2=^Sl+gRDt#fNcx2Q)cG3qSCh`y zqQ6>oK6%F>yBHz9R_K(g^sm)Ajn5P!o5w=M$u`+1(N@DXbNc0?_IB=R9G*_ z#)Gq5Iwc;2MZ@f^PGfAIv`eWYGx+nPC&gYmb*k>9R?5h~F-83yyDn0iW<Lkn5V$Tvm|-Fr;vvsN3NTw8Jax&?@^K;-2J% zS6S=#*rCeVZ{I`8Yq z6;5!q9ePPQ)n&#p*$vL+gkB1KXm|Gt|4YuUyuwx0d*r2<=}=$iDh8?kc6gN&S{0jg z7ri~YaK))pkX3WK4_67(t))#6-o(j=_1mq6W|<962xX5;9SN=v@kP%LRLMY zA|3~D^%4E?<_A!PhS~Sdb86*PTkO-l3%dF^_bx!qD@Cax&KMtXz6$|zCB|<%o#kS- z*jQ`6n0a2eA7Ui66m=}8>GSFH6rBtA1B(}1$Vp}>`!*G^ACNfj|h)}#az+1UO zL^AR=S6=Ijq>^Nhekry__g8YvmPB+LSucPgoY$7QkHg(7JoB$F=#Ty~j}q_uTyC|4 z2SoC^dl8C@lQNoKJKDrKB7Ija(ywM=dta+goDOd*Y^2&nAhN6_AF%p%vTz3xN?Q3r z+ni`)&8Bk{n{G!zy}>J@vq>f#u_*!K0TPD89qeNd1?*r8s{qz^B^1qlZDGqsR*1R=yYtELjzrIm=XN%? z?paV#)k`N5dmwNaAZs^)7rpw2a}aNTj$6I-XG`S-eB>OvNXW{tOAn zYOE!5X#`N3Rlf}0Il)$$amfXpwXC7nY*LXaBDd8pYznAzbkAMoM4JdIf)vnu>F4V+ zxn>;5+q$TWy$+3c!mZZ&{_?@_d&u2xhiS|seRYTD?5#aRPw$2Gfqi-J zSAUB0cdx&qjf9IlheZfB*{7Pn=(m`4bIt%BYvNQOrH#`8BczKuYVrr9MTa;lfB_qx zQ>=z=UWeEaW}jFIT+<>>DRk(-8rFt^uIgG1CwNI&{GF6&y>JV4v5C`stRJz~VuOd+ zp~m>tQvY%hVYr1r%WbNa7+V_QL=P~6E#&+lZB;@%lq=hV)OF{5)yHXwNTDmAK}>+` zV#Vi*$zCU76XP0aP!1q^c0go~HIz;zhOMYft{rZt0vRVeeN_xmRqUk-!it951JTAn zbVnfCY7Bw3^mzyt#UqoVLG44eXscXPdvf+Ws=P zH3ttJfU(T}gjmcyWWU>d_Uhb^ay}Xz?aXUk)F+Q~ksZ%52DRtyv>rO_1a~l&4H(t# zgd6KKc#l;!CnKFu9Mv|mr`w6yh_6YEPoDO*JDWuHXanty{T;k$6B~$KB%phgM%&>= zeV$e+7YyFjHR_{!420^?&gx^T`LrE72ou`uukwNis_t8jrAjoE=5!7mCLBTG(mt6IH(ss}AS5bu9E`4!x1q)MpNosx!wy zb@l&Z;&eq~S21M-Q9<|OtIi-TA!ETpYq>VgK;wjVAw7;VnaaC_yZTIltosR})ezbO znG=PN#4EvkVX$t56_*@X_6hBXRH!8o+JV7h-B7vlz+S)ZiqvZal)(u{*A?z~i{Q}pXByjDXz_p3Mb@&DDO=WeF zx)!94jsG0p#xNqy0Y+?zZnxH|ogov)AZ=M=4B(5{HpVn-=~ZwRGldGG)A7sYmkcnD zjAHdcJ;2nhWN*n?*u)wYhKChh&+th2EH)4`DU2m$x&SMPf);jk4b=7Z(Jve)Lrmp{%!iqkTMb`v0t&O#wa>Np(ZW-#d5<<( z8%{UJ`z=1A4DHFtt>`hOAxVWDynp5oNj0^tVrt_(nc9lp_B(HC3ie@E7oX9#wgUFr zr>%ya%}4ujRy&s2FFp;F=*NcL_D)Q`;e~K~d*q%Axb5dh;FA1+8+4Rnh$dvi)bwO_ z3_K<5U>)zP<|AVJ1H0qrIUVfw&q5&uKP!!H*PM?`?73@3(lwVL#hafd^-ub?!q(LO z*~?+v^=exlPEsgmh|pZbVIfdIt2b(>iqP zeOAMFA~s6ix;}PP;3R9ql)iSWD`uNnXSiES+2!tt-l0bH%&ho1QFgSNa})0v0b}#{ zE}Mg=smey>L#6VID4VESyHPck^46xZ?qMu=GV9jH?*`}kb6B>_i+u}DVJCb1bvuUQ8d4jxDq8gG6mMR=XAILbW`;F+>LtS2DqS@ zi3J^GEjENYb-3$Kke0bL* z_J|j=+N-=4{&qJDf2jnY@k*i2bBO4%7b5aQMNc(%r2f4EuAAdO#iC@7GBwkPLFL8Uc-$t z0SEDzJ5$xA92)xMs!~L<0tcxjs%Gh~(nxk{M~in$SKt#5edQ$Dr5t3G6A*@Slzb84 z!Y5l^8;c^5lBdgkZ4?)lZVStzkuha6#^CsGCJ|8}A8o_!FWQ#iQA+;Y+sBAf`iiNZ zMMxNvRYGmt=|)`9TvbU`G?60WkSIke#wTbg?jcQoJyldZXJ$oNl*lArNE%#Kmdum> zHvM%mTEq*d+oYaoxp;nG#!KDDXdv;2kD<^D%QgHDnYtp4n*>XR{PFTc$x9~SOO)fu+4~)TSo&0~R zf+Si20|>YRAe~N5|LSyefNob$SDJJUKss+6Naq;Jd`ah61f+2<8{B^a=~CVS8cTV- z)5KT2u2;_2!L4E7-%ZXzj^BEW&`a3x=Z1X0gYEs z0dJf--FrZqD)EV(uby7j+rzyKq|;4e?9sGL2GTVDgTaaC9Zl6gv&?umrSwkwS0Ee# z0o}mLq0akDpb4suI)jS=>GD1|xRH!#6wUGm)qS7>m*Gq~Ra=~8wXT)V-2YH*($ z+!=#Q@9*Uu45aHFZg8arS7mT78r-i9?!OFfy}?PW30>a51L<~bG`K$*T${li0MhN4 zaJiTFejtt8L|hzQUYmj5=2pMPZ3EJEtjO|ktAR9b!T=8!Hc%<ZcN>r{Z<4`HHn?9HT#>;Iy~4{o9OzC(X%J|l zf{M-4Ip*n$KtEGYTg}rCfVB2>nsjT4mZ7<}5lEMO0_b*?_gnMyC&b6lPp<^hIj%9d zI}C1u!Ic_ZmBGDgaDOzo$N$Q!?U@lC^p8Ngj^6_5dS5k9-!xB~&C~m@_HsM~q;pI+ zxHCYyMMJYauAKnVxXXU(;le-~_rNtCZiay-T3;L{!5h5t{uW4= zH-D6eTMVRe`+zik^*LTVtt~(rcg#QoZuD>y4OBkb8x1}L(z+VF$&1A`4@g_qVPm{{ zvw?KF1vh)6#-C}n9#aP8dQaB?X>P1FxW}>7Vs!A&bx7^H-jPsSq?gNTjI;@uZ8PI6nWu-<00|G>u@AeHOk4CX10PQO-dyO<3;) z=5sJ#Vv`e?Z^1l?^-W+d4^VOvMk48r#TqBl+yZ7<5=QpX#cxz1jfBNcjw)0vX|T+R zG;*tW*noywxW&@aAXpY9D`l_6H5B&+_6Q3W;SEb)$q3BSrfXtlu=lk>= zBWEWx>yPL~&v9!$PD&%GKTW~>Ukc`Q3P$Fg`s3-K%s-PcBU3PPFE%;NeJPl!DVT5y zW^NKjBCGIfbV13_C#8{x%abs|L*fBkkZWa98nHymyJv*=Lla=cjdxH~RWdEg8{@QF z+^8p&f=NNBB)PZiOgcb9WpacNwah{ziU^V8i_xLc$^)t&>n>B3OrIu?rt!X>nu+z5 z6r>-Kh)JReN`%wUzY}37+~0){PV(o!FgA(&CY;7RR`YzM%34p-Z`O4Dzl$%3Xd=H; zOZnlUMv7;Z6wjIFz4-eHp?&^}FASCPebGov9689=;Ek^$ defines should NOT be changed. - */ -#define PNG_INFO_gAMA 0x0001 -#define PNG_INFO_sBIT 0x0002 -#define PNG_INFO_cHRM 0x0004 -#define PNG_INFO_PLTE 0x0008 -#define PNG_INFO_tRNS 0x0010 -#define PNG_INFO_bKGD 0x0020 -#define PNG_INFO_hIST 0x0040 -#define PNG_INFO_pHYs 0x0080 -#define PNG_INFO_oFFs 0x0100 -#define PNG_INFO_tIME 0x0200 -#define PNG_INFO_pCAL 0x0400 -#define PNG_INFO_sRGB 0x0800 /* GR-P, 0.96a */ -#define PNG_INFO_iCCP 0x1000 /* ESR, 1.0.6 */ -#define PNG_INFO_sPLT 0x2000 /* ESR, 1.0.6 */ -#define PNG_INFO_sCAL 0x4000 /* ESR, 1.0.6 */ -#define PNG_INFO_IDAT 0x8000L /* ESR, 1.0.6 */ - -/* This is used for the transformation routines, as some of them - * change these values for the row. It also should enable using - * the routines for other purposes. - */ -typedef struct png_row_info_struct -{ - png_uint_32 width; /* width of row */ - png_size_t rowbytes; /* number of bytes in row */ - png_byte color_type; /* color type of row */ - png_byte bit_depth; /* bit depth of row */ - png_byte channels; /* number of channels (1, 2, 3, or 4) */ - png_byte pixel_depth; /* bits per pixel (depth * channels) */ -} png_row_info; - -typedef png_row_info FAR * png_row_infop; -typedef png_row_info FAR * FAR * png_row_infopp; - -/* These are the function types for the I/O functions and for the functions - * that allow the user to override the default I/O functions with his or her - * own. The png_error_ptr type should match that of user-supplied warning - * and error functions, while the png_rw_ptr type should match that of the - * user read/write data functions. - */ -typedef struct png_struct_def png_struct; -typedef png_struct FAR * png_structp; - -typedef void (PNGAPI *png_error_ptr) PNGARG((png_structp, png_const_charp)); -typedef void (PNGAPI *png_rw_ptr) PNGARG((png_structp, png_bytep, png_size_t)); -typedef void (PNGAPI *png_flush_ptr) PNGARG((png_structp)); -typedef void (PNGAPI *png_read_status_ptr) PNGARG((png_structp, png_uint_32, - int)); -typedef void (PNGAPI *png_write_status_ptr) PNGARG((png_structp, png_uint_32, - int)); - -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED -typedef void (PNGAPI *png_progressive_info_ptr) PNGARG((png_structp, - png_infop)); -typedef void (PNGAPI *png_progressive_end_ptr) PNGARG((png_structp, png_infop)); -typedef void (PNGAPI *png_progressive_row_ptr) PNGARG((png_structp, png_bytep, - png_uint_32, int)); -#endif - -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ - defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) -typedef void (PNGAPI *png_user_transform_ptr) PNGARG((png_structp, - png_row_infop, png_bytep)); -#endif - -#ifdef PNG_USER_CHUNKS_SUPPORTED -typedef int (PNGAPI *png_user_chunk_ptr) PNGARG((png_structp, - png_unknown_chunkp)); -#endif -#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED -typedef void (PNGAPI *png_unknown_chunk_ptr) PNGARG((png_structp)); -#endif -#ifdef PNG_SETJMP_SUPPORTED -/* This must match the function definition in , and the - * application must include this before png.h to obtain the definition - * of jmp_buf. - */ -typedef void (PNGAPI *png_longjmp_ptr) PNGARG((jmp_buf, int)); -#endif - -/* Transform masks for the high-level interface */ -#define PNG_TRANSFORM_IDENTITY 0x0000 /* read and write */ -#define PNG_TRANSFORM_STRIP_16 0x0001 /* read only */ -#define PNG_TRANSFORM_STRIP_ALPHA 0x0002 /* read only */ -#define PNG_TRANSFORM_PACKING 0x0004 /* read and write */ -#define PNG_TRANSFORM_PACKSWAP 0x0008 /* read and write */ -#define PNG_TRANSFORM_EXPAND 0x0010 /* read only */ -#define PNG_TRANSFORM_INVERT_MONO 0x0020 /* read and write */ -#define PNG_TRANSFORM_SHIFT 0x0040 /* read and write */ -#define PNG_TRANSFORM_BGR 0x0080 /* read and write */ -#define PNG_TRANSFORM_SWAP_ALPHA 0x0100 /* read and write */ -#define PNG_TRANSFORM_SWAP_ENDIAN 0x0200 /* read and write */ -#define PNG_TRANSFORM_INVERT_ALPHA 0x0400 /* read and write */ -#define PNG_TRANSFORM_STRIP_FILLER 0x0800 /* write only */ -/* Added to libpng-1.2.34 */ -#define PNG_TRANSFORM_STRIP_FILLER_BEFORE PNG_TRANSFORM_STRIP_FILLER -#define PNG_TRANSFORM_STRIP_FILLER_AFTER 0x1000 /* write only */ -/* Added to libpng-1.4.0 */ -#define PNG_TRANSFORM_GRAY_TO_RGB 0x2000 /* read only */ - -/* Flags for MNG supported features */ -#define PNG_FLAG_MNG_EMPTY_PLTE 0x01 -#define PNG_FLAG_MNG_FILTER_64 0x04 -#define PNG_ALL_MNG_FEATURES 0x05 - -typedef png_voidp (*png_malloc_ptr) PNGARG((png_structp, png_alloc_size_t)); -typedef void (*png_free_ptr) PNGARG((png_structp, png_voidp)); - -/* The structure that holds the information to read and write PNG files. - * The only people who need to care about what is inside of this are the - * people who will be modifying the library for their own special needs. - * It should NOT be accessed directly by an application, except to store - * the jmp_buf. - */ - -struct png_struct_def -{ -#ifdef PNG_SETJMP_SUPPORTED - jmp_buf jmpbuf PNG_DEPSTRUCT; /* used in png_error */ - png_longjmp_ptr longjmp_fn PNG_DEPSTRUCT;/* setjmp non-local goto - function. */ -#endif - png_error_ptr error_fn PNG_DEPSTRUCT; /* function for printing - errors and aborting */ - png_error_ptr warning_fn PNG_DEPSTRUCT; /* function for printing - warnings */ - png_voidp error_ptr PNG_DEPSTRUCT; /* user supplied struct for - error functions */ - png_rw_ptr write_data_fn PNG_DEPSTRUCT; /* function for writing - output data */ - png_rw_ptr read_data_fn PNG_DEPSTRUCT; /* function for reading - input data */ - png_voidp io_ptr PNG_DEPSTRUCT; /* ptr to application struct - for I/O functions */ - -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED - png_user_transform_ptr read_user_transform_fn PNG_DEPSTRUCT; /* user read - transform */ -#endif - -#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED - png_user_transform_ptr write_user_transform_fn PNG_DEPSTRUCT; /* user write - transform */ -#endif - -/* These were added in libpng-1.0.2 */ -#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ - defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) - png_voidp user_transform_ptr PNG_DEPSTRUCT; /* user supplied struct - for user transform */ - png_byte user_transform_depth PNG_DEPSTRUCT; /* bit depth of user - transformed pixels */ - png_byte user_transform_channels PNG_DEPSTRUCT; /* channels in user - transformed pixels */ -#endif -#endif - - png_uint_32 mode PNG_DEPSTRUCT; /* tells us where we are in - the PNG file */ - png_uint_32 flags PNG_DEPSTRUCT; /* flags indicating various - things to libpng */ - png_uint_32 transformations PNG_DEPSTRUCT; /* which transformations - to perform */ - - z_stream zstream PNG_DEPSTRUCT; /* pointer to decompression - structure (below) */ - png_bytep zbuf PNG_DEPSTRUCT; /* buffer for zlib */ - png_size_t zbuf_size PNG_DEPSTRUCT; /* size of zbuf */ - int zlib_level PNG_DEPSTRUCT; /* holds zlib compression level */ - int zlib_method PNG_DEPSTRUCT; /* holds zlib compression method */ - int zlib_window_bits PNG_DEPSTRUCT; /* holds zlib compression window - bits */ - int zlib_mem_level PNG_DEPSTRUCT; /* holds zlib compression memory - level */ - int zlib_strategy PNG_DEPSTRUCT; /* holds zlib compression - strategy */ - - png_uint_32 width PNG_DEPSTRUCT; /* width of image in pixels */ - png_uint_32 height PNG_DEPSTRUCT; /* height of image in pixels */ - png_uint_32 num_rows PNG_DEPSTRUCT; /* number of rows in current pass */ - png_uint_32 usr_width PNG_DEPSTRUCT; /* width of row at start of write */ - png_size_t rowbytes PNG_DEPSTRUCT; /* size of row in bytes */ -#if 0 /* Replaced with the following in libpng-1.4.1 */ - png_size_t irowbytes PNG_DEPSTRUCT; -#endif -/* Added in libpng-1.4.1 */ -#ifdef PNG_USER_LIMITS_SUPPORTED - /* Total memory that a zTXt, sPLT, iTXt, iCCP, or unknown chunk - * can occupy when decompressed. 0 means unlimited. - * We will change the typedef from png_size_t to png_alloc_size_t - * in libpng-1.6.0 - */ - png_alloc_size_t user_chunk_malloc_max PNG_DEPSTRUCT; -#endif - png_uint_32 iwidth PNG_DEPSTRUCT; /* width of current interlaced - row in pixels */ - png_uint_32 row_number PNG_DEPSTRUCT; /* current row in interlace pass */ - png_bytep prev_row PNG_DEPSTRUCT; /* buffer to save previous - (unfiltered) row */ - png_bytep row_buf PNG_DEPSTRUCT; /* buffer to save current - (unfiltered) row */ - png_bytep sub_row PNG_DEPSTRUCT; /* buffer to save "sub" row - when filtering */ - png_bytep up_row PNG_DEPSTRUCT; /* buffer to save "up" row - when filtering */ - png_bytep avg_row PNG_DEPSTRUCT; /* buffer to save "avg" row - when filtering */ - png_bytep paeth_row PNG_DEPSTRUCT; /* buffer to save "Paeth" row - when filtering */ - png_row_info row_info PNG_DEPSTRUCT; /* used for transformation - routines */ - - png_uint_32 idat_size PNG_DEPSTRUCT; /* current IDAT size for read */ - png_uint_32 crc PNG_DEPSTRUCT; /* current chunk CRC value */ - png_colorp palette PNG_DEPSTRUCT; /* palette from the input file */ - png_uint_16 num_palette PNG_DEPSTRUCT; /* number of color entries in - palette */ - png_uint_16 num_trans PNG_DEPSTRUCT; /* number of transparency values */ - png_byte chunk_name[5] PNG_DEPSTRUCT; /* null-terminated name of current - chunk */ - png_byte compression PNG_DEPSTRUCT; /* file compression type - (always 0) */ - png_byte filter PNG_DEPSTRUCT; /* file filter type (always 0) */ - png_byte interlaced PNG_DEPSTRUCT; /* PNG_INTERLACE_NONE, - PNG_INTERLACE_ADAM7 */ - png_byte pass PNG_DEPSTRUCT; /* current interlace pass (0 - 6) */ - png_byte do_filter PNG_DEPSTRUCT; /* row filter flags (see - PNG_FILTER_ below ) */ - png_byte color_type PNG_DEPSTRUCT; /* color type of file */ - png_byte bit_depth PNG_DEPSTRUCT; /* bit depth of file */ - png_byte usr_bit_depth PNG_DEPSTRUCT; /* bit depth of users row */ - png_byte pixel_depth PNG_DEPSTRUCT; /* number of bits per pixel */ - png_byte channels PNG_DEPSTRUCT; /* number of channels in file */ - png_byte usr_channels PNG_DEPSTRUCT; /* channels at start of write */ - png_byte sig_bytes PNG_DEPSTRUCT; /* magic bytes read/written from - start of file */ - -#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) - png_uint_16 filler PNG_DEPSTRUCT; /* filler bytes for pixel - expansion */ -#endif - -#ifdef PNG_bKGD_SUPPORTED - png_byte background_gamma_type PNG_DEPSTRUCT; -# ifdef PNG_FLOATING_POINT_SUPPORTED - float background_gamma PNG_DEPSTRUCT; -# endif - png_color_16 background PNG_DEPSTRUCT; /* background color in - screen gamma space */ -#ifdef PNG_READ_GAMMA_SUPPORTED - png_color_16 background_1 PNG_DEPSTRUCT; /* background normalized - to gamma 1.0 */ -#endif -#endif /* PNG_bKGD_SUPPORTED */ - -#ifdef PNG_WRITE_FLUSH_SUPPORTED - png_flush_ptr output_flush_fn PNG_DEPSTRUCT; /* Function for flushing - output */ - png_uint_32 flush_dist PNG_DEPSTRUCT; /* how many rows apart to flush, - 0 - no flush */ - png_uint_32 flush_rows PNG_DEPSTRUCT; /* number of rows written since - last flush */ -#endif - -#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) - int gamma_shift PNG_DEPSTRUCT; /* number of "insignificant" bits - 16-bit gamma */ -#ifdef PNG_FLOATING_POINT_SUPPORTED - float gamma PNG_DEPSTRUCT; /* file gamma value */ - float screen_gamma PNG_DEPSTRUCT; /* screen gamma value - (display_exponent) */ -#endif -#endif - -#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) - png_bytep gamma_table PNG_DEPSTRUCT; /* gamma table for 8-bit - depth files */ - png_bytep gamma_from_1 PNG_DEPSTRUCT; /* converts from 1.0 to screen */ - png_bytep gamma_to_1 PNG_DEPSTRUCT; /* converts from file to 1.0 */ - png_uint_16pp gamma_16_table PNG_DEPSTRUCT; /* gamma table for 16-bit - depth files */ - png_uint_16pp gamma_16_from_1 PNG_DEPSTRUCT; /* converts from 1.0 to - screen */ - png_uint_16pp gamma_16_to_1 PNG_DEPSTRUCT; /* converts from file to 1.0 */ -#endif - -#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_sBIT_SUPPORTED) - png_color_8 sig_bit PNG_DEPSTRUCT; /* significant bits in each - available channel */ -#endif - -#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) - png_color_8 shift PNG_DEPSTRUCT; /* shift for significant bit - tranformation */ -#endif - -#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \ - || defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) - png_bytep trans_alpha PNG_DEPSTRUCT; /* alpha values for - paletted files */ - png_color_16 trans_color PNG_DEPSTRUCT; /* transparent color for - non-paletted files */ -#endif - - png_read_status_ptr read_row_fn PNG_DEPSTRUCT; /* called after each - row is decoded */ - png_write_status_ptr write_row_fn PNG_DEPSTRUCT; /* called after each - row is encoded */ -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED - png_progressive_info_ptr info_fn PNG_DEPSTRUCT; /* called after header - data fully read */ - png_progressive_row_ptr row_fn PNG_DEPSTRUCT; /* called after each - prog. row is decoded */ - png_progressive_end_ptr end_fn PNG_DEPSTRUCT; /* called after image - is complete */ - png_bytep save_buffer_ptr PNG_DEPSTRUCT; /* current location in - save_buffer */ - png_bytep save_buffer PNG_DEPSTRUCT; /* buffer for previously - read data */ - png_bytep current_buffer_ptr PNG_DEPSTRUCT; /* current location in - current_buffer */ - png_bytep current_buffer PNG_DEPSTRUCT; /* buffer for recently - used data */ - png_uint_32 push_length PNG_DEPSTRUCT; /* size of current input - chunk */ - png_uint_32 skip_length PNG_DEPSTRUCT; /* bytes to skip in - input data */ - png_size_t save_buffer_size PNG_DEPSTRUCT; /* amount of data now - in save_buffer */ - png_size_t save_buffer_max PNG_DEPSTRUCT; /* total size of - save_buffer */ - png_size_t buffer_size PNG_DEPSTRUCT; /* total amount of - available input data */ - png_size_t current_buffer_size PNG_DEPSTRUCT; /* amount of data now - in current_buffer */ - int process_mode PNG_DEPSTRUCT; /* what push library - is currently doing */ - int cur_palette PNG_DEPSTRUCT; /* current push library - palette index */ - -# ifdef PNG_TEXT_SUPPORTED - png_size_t current_text_size PNG_DEPSTRUCT; /* current size of - text input data */ - png_size_t current_text_left PNG_DEPSTRUCT; /* how much text left - to read in input */ - png_charp current_text PNG_DEPSTRUCT; /* current text chunk - buffer */ - png_charp current_text_ptr PNG_DEPSTRUCT; /* current location - in current_text */ -# endif /* PNG_PROGRESSIVE_READ_SUPPORTED && PNG_TEXT_SUPPORTED */ - -#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ - -#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__) -/* For the Borland special 64K segment handler */ - png_bytepp offset_table_ptr PNG_DEPSTRUCT; - png_bytep offset_table PNG_DEPSTRUCT; - png_uint_16 offset_table_number PNG_DEPSTRUCT; - png_uint_16 offset_table_count PNG_DEPSTRUCT; - png_uint_16 offset_table_count_free PNG_DEPSTRUCT; -#endif - -#ifdef PNG_READ_QUANTIZE_SUPPORTED - png_bytep palette_lookup PNG_DEPSTRUCT; /* lookup table for quantizing */ - png_bytep quantize_index PNG_DEPSTRUCT; /* index translation for palette - files */ -#endif - -#if defined(PNG_READ_QUANTIZE_SUPPORTED) || defined(PNG_hIST_SUPPORTED) - png_uint_16p hist PNG_DEPSTRUCT; /* histogram */ -#endif - -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED - png_byte heuristic_method PNG_DEPSTRUCT; /* heuristic for row - filter selection */ - png_byte num_prev_filters PNG_DEPSTRUCT; /* number of weights - for previous rows */ - png_bytep prev_filters PNG_DEPSTRUCT; /* filter type(s) of - previous row(s) */ - png_uint_16p filter_weights PNG_DEPSTRUCT; /* weight(s) for previous - line(s) */ - png_uint_16p inv_filter_weights PNG_DEPSTRUCT; /* 1/weight(s) for - previous line(s) */ - png_uint_16p filter_costs PNG_DEPSTRUCT; /* relative filter - calculation cost */ - png_uint_16p inv_filter_costs PNG_DEPSTRUCT; /* 1/relative filter - calculation cost */ -#endif - -#ifdef PNG_TIME_RFC1123_SUPPORTED - png_charp time_buffer PNG_DEPSTRUCT; /* String to hold RFC 1123 time text */ -#endif - -/* New members added in libpng-1.0.6 */ - - png_uint_32 free_me PNG_DEPSTRUCT; /* flags items libpng is - responsible for freeing */ - -#ifdef PNG_USER_CHUNKS_SUPPORTED - png_voidp user_chunk_ptr PNG_DEPSTRUCT; - png_user_chunk_ptr read_user_chunk_fn PNG_DEPSTRUCT; /* user read - chunk handler */ -#endif - -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED - int num_chunk_list PNG_DEPSTRUCT; - png_bytep chunk_list PNG_DEPSTRUCT; -#endif - -/* New members added in libpng-1.0.3 */ -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED - png_byte rgb_to_gray_status PNG_DEPSTRUCT; - /* These were changed from png_byte in libpng-1.0.6 */ - png_uint_16 rgb_to_gray_red_coeff PNG_DEPSTRUCT; - png_uint_16 rgb_to_gray_green_coeff PNG_DEPSTRUCT; - png_uint_16 rgb_to_gray_blue_coeff PNG_DEPSTRUCT; -#endif - -/* New member added in libpng-1.0.4 (renamed in 1.0.9) */ -#if defined(PNG_MNG_FEATURES_SUPPORTED) || \ - defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \ - defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED) -/* Changed from png_byte to png_uint_32 at version 1.2.0 */ - png_uint_32 mng_features_permitted PNG_DEPSTRUCT; -#endif - -/* New member added in libpng-1.0.7 */ -#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) - png_fixed_point int_gamma PNG_DEPSTRUCT; -#endif - -/* New member added in libpng-1.0.9, ifdef'ed out in 1.0.12, enabled in 1.2.0 */ -#ifdef PNG_MNG_FEATURES_SUPPORTED - png_byte filter_type PNG_DEPSTRUCT; -#endif - -/* New members added in libpng-1.2.0 */ - -/* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */ -#ifdef PNG_USER_MEM_SUPPORTED - png_voidp mem_ptr PNG_DEPSTRUCT; /* user supplied struct for - mem functions */ - png_malloc_ptr malloc_fn PNG_DEPSTRUCT; /* function for - allocating memory */ - png_free_ptr free_fn PNG_DEPSTRUCT; /* function for - freeing memory */ -#endif - -/* New member added in libpng-1.0.13 and 1.2.0 */ - png_bytep big_row_buf PNG_DEPSTRUCT; /* buffer to save current - (unfiltered) row */ - -#ifdef PNG_READ_QUANTIZE_SUPPORTED -/* The following three members were added at version 1.0.14 and 1.2.4 */ - png_bytep quantize_sort PNG_DEPSTRUCT; /* working sort array */ - png_bytep index_to_palette PNG_DEPSTRUCT; /* where the original - index currently is - in the palette */ - png_bytep palette_to_index PNG_DEPSTRUCT; /* which original index - points to this - palette color */ -#endif - -/* New members added in libpng-1.0.16 and 1.2.6 */ - png_byte compression_type PNG_DEPSTRUCT; - -#ifdef PNG_USER_LIMITS_SUPPORTED - png_uint_32 user_width_max PNG_DEPSTRUCT; - png_uint_32 user_height_max PNG_DEPSTRUCT; - /* Added in libpng-1.4.0: Total number of sPLT, text, and unknown - * chunks that can be stored (0 means unlimited). - */ - png_uint_32 user_chunk_cache_max PNG_DEPSTRUCT; -#endif - -/* New member added in libpng-1.0.25 and 1.2.17 */ -#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED - /* Storage for unknown chunk that the library doesn't recognize. */ - png_unknown_chunk unknown_chunk PNG_DEPSTRUCT; -#endif - -/* New members added in libpng-1.2.26 */ - png_uint_32 old_big_row_buf_size PNG_DEPSTRUCT; - png_uint_32 old_prev_row_size PNG_DEPSTRUCT; - -/* New member added in libpng-1.2.30 */ - png_charp chunkdata PNG_DEPSTRUCT; /* buffer for reading chunk data */ - -#ifdef PNG_IO_STATE_SUPPORTED -/* New member added in libpng-1.4.0 */ - png_uint_32 io_state PNG_DEPSTRUCT; -#endif -}; - - -/* This triggers a compiler error in png.c, if png.c and png.h - * do not agree upon the version number. - */ -typedef png_structp version_1_4_4; - -typedef png_struct FAR * FAR * png_structpp; - -/* Here are the function definitions most commonly used. This is not - * the place to find out how to use libpng. See libpng.txt for the - * full explanation, see example.c for the summary. This just provides - * a simple one line description of the use of each function. - */ - -/* Returns the version number of the library */ -PNG_EXPORT(png_uint_32,png_access_version_number) PNGARG((void)); - -/* Tell lib we have already handled the first magic bytes. - * Handling more than 8 bytes from the beginning of the file is an error. - */ -PNG_EXPORT(void,png_set_sig_bytes) PNGARG((png_structp png_ptr, - int num_bytes)); - -/* Check sig[start] through sig[start + num_to_check - 1] to see if it's a - * PNG file. Returns zero if the supplied bytes match the 8-byte PNG - * signature, and non-zero otherwise. Having num_to_check == 0 or - * start > 7 will always fail (ie return non-zero). - */ -PNG_EXPORT(int,png_sig_cmp) PNGARG((png_bytep sig, png_size_t start, - png_size_t num_to_check)); - -/* Simple signature checking function. This is the same as calling - * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n). - */ -#define png_check_sig(sig,n) !png_sig_cmp((sig), 0, (n)) - -/* Allocate and initialize png_ptr struct for reading, and any other memory. */ -PNG_EXPORT(png_structp,png_create_read_struct) - PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn)) PNG_ALLOCATED; - -/* Allocate and initialize png_ptr struct for writing, and any other memory */ -PNG_EXPORT(png_structp,png_create_write_struct) - PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn)) PNG_ALLOCATED; - -PNG_EXPORT(png_size_t,png_get_compression_buffer_size) - PNGARG((png_structp png_ptr)); - -PNG_EXPORT(void,png_set_compression_buffer_size) - PNGARG((png_structp png_ptr, png_size_t size)); - -/* Moved from pngconf.h in 1.4.0 and modified to ensure setjmp/longjmp - * match up. - */ -#ifdef PNG_SETJMP_SUPPORTED -/* This function returns the jmp_buf built in to *png_ptr. It must be - * supplied with an appropriate 'longjmp' function to use on that jmp_buf - * unless the default error function is overridden in which case NULL is - * acceptable. The size of the jmp_buf is checked against the actual size - * allocated by the library - the call will return NULL on a mismatch - * indicating an ABI mismatch. - */ -PNG_EXPORT(jmp_buf*, png_set_longjmp_fn) - PNGARG((png_structp png_ptr, png_longjmp_ptr longjmp_fn, size_t - jmp_buf_size)); -# define png_jmpbuf(png_ptr) \ - (*png_set_longjmp_fn((png_ptr), longjmp, sizeof (jmp_buf))) -#else -# define png_jmpbuf(png_ptr) \ - (LIBPNG_WAS_COMPILED_WITH__PNG_NO_SETJMP) -#endif - -#ifdef PNG_READ_SUPPORTED -/* Reset the compression stream */ -PNG_EXPORT(int,png_reset_zstream) PNGARG((png_structp png_ptr)); -#endif - -/* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */ -#ifdef PNG_USER_MEM_SUPPORTED -PNG_EXPORT(png_structp,png_create_read_struct_2) - PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, - png_malloc_ptr malloc_fn, png_free_ptr free_fn)) PNG_ALLOCATED; -PNG_EXPORT(png_structp,png_create_write_struct_2) - PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, - png_malloc_ptr malloc_fn, png_free_ptr free_fn)) PNG_ALLOCATED; -#endif - -/* Write the PNG file signature. */ -PNG_EXPORT(void,png_write_sig) PNGARG((png_structp png_ptr)); - -/* Write a PNG chunk - size, type, (optional) data, CRC. */ -PNG_EXPORT(void,png_write_chunk) PNGARG((png_structp png_ptr, - png_bytep chunk_name, png_bytep data, png_size_t length)); - -/* Write the start of a PNG chunk - length and chunk name. */ -PNG_EXPORT(void,png_write_chunk_start) PNGARG((png_structp png_ptr, - png_bytep chunk_name, png_uint_32 length)); - -/* Write the data of a PNG chunk started with png_write_chunk_start(). */ -PNG_EXPORT(void,png_write_chunk_data) PNGARG((png_structp png_ptr, - png_bytep data, png_size_t length)); - -/* Finish a chunk started with png_write_chunk_start() (includes CRC). */ -PNG_EXPORT(void,png_write_chunk_end) PNGARG((png_structp png_ptr)); - -/* Allocate and initialize the info structure */ -PNG_EXPORT(png_infop,png_create_info_struct) - PNGARG((png_structp png_ptr)) PNG_ALLOCATED; - -PNG_EXPORT(void,png_info_init_3) PNGARG((png_infopp info_ptr, - png_size_t png_info_struct_size)); - -/* Writes all the PNG information before the image. */ -PNG_EXPORT(void,png_write_info_before_PLTE) PNGARG((png_structp png_ptr, - png_infop info_ptr)); -PNG_EXPORT(void,png_write_info) PNGARG((png_structp png_ptr, - png_infop info_ptr)); - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read the information before the actual image data. */ -PNG_EXPORT(void,png_read_info) PNGARG((png_structp png_ptr, - png_infop info_ptr)); -#endif - -#ifdef PNG_TIME_RFC1123_SUPPORTED -PNG_EXPORT(png_charp,png_convert_to_rfc1123) - PNGARG((png_structp png_ptr, png_timep ptime)); -#endif - -#ifdef PNG_CONVERT_tIME_SUPPORTED -/* Convert from a struct tm to png_time */ -PNG_EXPORT(void,png_convert_from_struct_tm) PNGARG((png_timep ptime, - struct tm FAR * ttime)); - -/* Convert from time_t to png_time. Uses gmtime() */ -PNG_EXPORT(void,png_convert_from_time_t) PNGARG((png_timep ptime, - time_t ttime)); -#endif /* PNG_CONVERT_tIME_SUPPORTED */ - -#ifdef PNG_READ_EXPAND_SUPPORTED -/* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */ -PNG_EXPORT(void,png_set_expand) PNGARG((png_structp png_ptr)); -PNG_EXPORT(void,png_set_expand_gray_1_2_4_to_8) PNGARG((png_structp - png_ptr)); -PNG_EXPORT(void,png_set_palette_to_rgb) PNGARG((png_structp png_ptr)); -PNG_EXPORT(void,png_set_tRNS_to_alpha) PNGARG((png_structp png_ptr)); -#endif - -#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) -/* Use blue, green, red order for pixels. */ -PNG_EXPORT(void,png_set_bgr) PNGARG((png_structp png_ptr)); -#endif - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED -/* Expand the grayscale to 24-bit RGB if necessary. */ -PNG_EXPORT(void,png_set_gray_to_rgb) PNGARG((png_structp png_ptr)); -#endif - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -/* Reduce RGB to grayscale. */ -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(void,png_set_rgb_to_gray) PNGARG((png_structp png_ptr, - int error_action, double red, double green )); -#endif -PNG_EXPORT(void,png_set_rgb_to_gray_fixed) PNGARG((png_structp png_ptr, - int error_action, png_fixed_point red, png_fixed_point green )); -PNG_EXPORT(png_byte,png_get_rgb_to_gray_status) PNGARG((png_structp - png_ptr)); -#endif - -PNG_EXPORT(void,png_build_grayscale_palette) PNGARG((int bit_depth, - png_colorp palette)); - -#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED -PNG_EXPORT(void,png_set_strip_alpha) PNGARG((png_structp png_ptr)); -#endif - -#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \ - defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) -PNG_EXPORT(void,png_set_swap_alpha) PNGARG((png_structp png_ptr)); -#endif - -#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \ - defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) -PNG_EXPORT(void,png_set_invert_alpha) PNGARG((png_structp png_ptr)); -#endif - -#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) -/* Add a filler byte to 8-bit Gray or 24-bit RGB images. */ -PNG_EXPORT(void,png_set_filler) PNGARG((png_structp png_ptr, - png_uint_32 filler, int flags)); -/* The values of the PNG_FILLER_ defines should NOT be changed */ -#define PNG_FILLER_BEFORE 0 -#define PNG_FILLER_AFTER 1 -/* Add an alpha byte to 8-bit Gray or 24-bit RGB images. */ -PNG_EXPORT(void,png_set_add_alpha) PNGARG((png_structp png_ptr, - png_uint_32 filler, int flags)); -#endif /* PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED */ - -#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) -/* Swap bytes in 16-bit depth files. */ -PNG_EXPORT(void,png_set_swap) PNGARG((png_structp png_ptr)); -#endif - -#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) -/* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */ -PNG_EXPORT(void,png_set_packing) PNGARG((png_structp png_ptr)); -#endif - -#if defined(PNG_READ_PACKSWAP_SUPPORTED) || \ - defined(PNG_WRITE_PACKSWAP_SUPPORTED) -/* Swap packing order of pixels in bytes. */ -PNG_EXPORT(void,png_set_packswap) PNGARG((png_structp png_ptr)); -#endif - -#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) -/* Converts files to legal bit depths. */ -PNG_EXPORT(void,png_set_shift) PNGARG((png_structp png_ptr, - png_color_8p true_bits)); -#endif - -#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ - defined(PNG_WRITE_INTERLACING_SUPPORTED) -/* Have the code handle the interlacing. Returns the number of passes. */ -PNG_EXPORT(int,png_set_interlace_handling) PNGARG((png_structp png_ptr)); -#endif - -#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) -/* Invert monochrome files */ -PNG_EXPORT(void,png_set_invert_mono) PNGARG((png_structp png_ptr)); -#endif - -#ifdef PNG_READ_BACKGROUND_SUPPORTED -/* Handle alpha and tRNS by replacing with a background color. */ -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(void,png_set_background) PNGARG((png_structp png_ptr, - png_color_16p background_color, int background_gamma_code, - int need_expand, double background_gamma)); -#endif -#define PNG_BACKGROUND_GAMMA_UNKNOWN 0 -#define PNG_BACKGROUND_GAMMA_SCREEN 1 -#define PNG_BACKGROUND_GAMMA_FILE 2 -#define PNG_BACKGROUND_GAMMA_UNIQUE 3 -#endif - -#ifdef PNG_READ_16_TO_8_SUPPORTED -/* Strip the second byte of information from a 16-bit depth file. */ -PNG_EXPORT(void,png_set_strip_16) PNGARG((png_structp png_ptr)); -#endif - -#ifdef PNG_READ_QUANTIZE_SUPPORTED -/* Turn on quantizing, and reduce the palette to the number of colors - * available. Prior to libpng-1.4.2, this was png_set_dither(). - */ -PNG_EXPORT(void,png_set_quantize) PNGARG((png_structp png_ptr, - png_colorp palette, int num_palette, int maximum_colors, - png_uint_16p histogram, int full_quantize)); -#endif -/* This migration aid will be removed from libpng-1.5.0 */ -#define png_set_dither png_set_quantize - -#ifdef PNG_READ_GAMMA_SUPPORTED -/* Handle gamma correction. Screen_gamma=(display_exponent) */ -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(void,png_set_gamma) PNGARG((png_structp png_ptr, - double screen_gamma, double default_file_gamma)); -#endif -#endif - - -#ifdef PNG_WRITE_FLUSH_SUPPORTED -/* Set how many lines between output flushes - 0 for no flushing */ -PNG_EXPORT(void,png_set_flush) PNGARG((png_structp png_ptr, int nrows)); -/* Flush the current PNG output buffer */ -PNG_EXPORT(void,png_write_flush) PNGARG((png_structp png_ptr)); -#endif - -/* Optional update palette with requested transformations */ -PNG_EXPORT(void,png_start_read_image) PNGARG((png_structp png_ptr)); - -/* Optional call to update the users info structure */ -PNG_EXPORT(void,png_read_update_info) PNGARG((png_structp png_ptr, - png_infop info_ptr)); - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read one or more rows of image data. */ -PNG_EXPORT(void,png_read_rows) PNGARG((png_structp png_ptr, - png_bytepp row, png_bytepp display_row, png_uint_32 num_rows)); -#endif - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read a row of data. */ -PNG_EXPORT(void,png_read_row) PNGARG((png_structp png_ptr, - png_bytep row, - png_bytep display_row)); -#endif - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read the whole image into memory at once. */ -PNG_EXPORT(void,png_read_image) PNGARG((png_structp png_ptr, - png_bytepp image)); -#endif - -/* Write a row of image data */ -PNG_EXPORT(void,png_write_row) PNGARG((png_structp png_ptr, - png_bytep row)); - -/* Write a few rows of image data */ -PNG_EXPORT(void,png_write_rows) PNGARG((png_structp png_ptr, - png_bytepp row, png_uint_32 num_rows)); - -/* Write the image data */ -PNG_EXPORT(void,png_write_image) PNGARG((png_structp png_ptr, - png_bytepp image)); - -/* Write the end of the PNG file. */ -PNG_EXPORT(void,png_write_end) PNGARG((png_structp png_ptr, - png_infop info_ptr)); - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read the end of the PNG file. */ -PNG_EXPORT(void,png_read_end) PNGARG((png_structp png_ptr, - png_infop info_ptr)); -#endif - -/* Free any memory associated with the png_info_struct */ -PNG_EXPORT(void,png_destroy_info_struct) PNGARG((png_structp png_ptr, - png_infopp info_ptr_ptr)); - -/* Free any memory associated with the png_struct and the png_info_structs */ -PNG_EXPORT(void,png_destroy_read_struct) PNGARG((png_structpp - png_ptr_ptr, png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr)); - -/* Free any memory associated with the png_struct and the png_info_structs */ -PNG_EXPORT(void,png_destroy_write_struct) - PNGARG((png_structpp png_ptr_ptr, png_infopp info_ptr_ptr)); - -/* Set the libpng method of handling chunk CRC errors */ -PNG_EXPORT(void,png_set_crc_action) PNGARG((png_structp png_ptr, - int crit_action, int ancil_action)); - -/* Values for png_set_crc_action() to say how to handle CRC errors in - * ancillary and critical chunks, and whether to use the data contained - * therein. Note that it is impossible to "discard" data in a critical - * chunk. For versions prior to 0.90, the action was always error/quit, - * whereas in version 0.90 and later, the action for CRC errors in ancillary - * chunks is warn/discard. These values should NOT be changed. - * - * value action:critical action:ancillary - */ -#define PNG_CRC_DEFAULT 0 /* error/quit warn/discard data */ -#define PNG_CRC_ERROR_QUIT 1 /* error/quit error/quit */ -#define PNG_CRC_WARN_DISCARD 2 /* (INVALID) warn/discard data */ -#define PNG_CRC_WARN_USE 3 /* warn/use data warn/use data */ -#define PNG_CRC_QUIET_USE 4 /* quiet/use data quiet/use data */ -#define PNG_CRC_NO_CHANGE 5 /* use current value use current value */ - -/* These functions give the user control over the scan-line filtering in - * libpng and the compression methods used by zlib. These functions are - * mainly useful for testing, as the defaults should work with most users. - * Those users who are tight on memory or want faster performance at the - * expense of compression can modify them. See the compression library - * header file (zlib.h) for an explination of the compression functions. - */ - -/* Set the filtering method(s) used by libpng. Currently, the only valid - * value for "method" is 0. - */ -PNG_EXPORT(void,png_set_filter) PNGARG((png_structp png_ptr, int method, - int filters)); - -/* Flags for png_set_filter() to say which filters to use. The flags - * are chosen so that they don't conflict with real filter types - * below, in case they are supplied instead of the #defined constants. - * These values should NOT be changed. - */ -#define PNG_NO_FILTERS 0x00 -#define PNG_FILTER_NONE 0x08 -#define PNG_FILTER_SUB 0x10 -#define PNG_FILTER_UP 0x20 -#define PNG_FILTER_AVG 0x40 -#define PNG_FILTER_PAETH 0x80 -#define PNG_ALL_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP | \ - PNG_FILTER_AVG | PNG_FILTER_PAETH) - -/* Filter values (not flags) - used in pngwrite.c, pngwutil.c for now. - * These defines should NOT be changed. - */ -#define PNG_FILTER_VALUE_NONE 0 -#define PNG_FILTER_VALUE_SUB 1 -#define PNG_FILTER_VALUE_UP 2 -#define PNG_FILTER_VALUE_AVG 3 -#define PNG_FILTER_VALUE_PAETH 4 -#define PNG_FILTER_VALUE_LAST 5 - -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED /* EXPERIMENTAL */ -/* The "heuristic_method" is given by one of the PNG_FILTER_HEURISTIC_ - * defines, either the default (minimum-sum-of-absolute-differences), or - * the experimental method (weighted-minimum-sum-of-absolute-differences). - * - * Weights are factors >= 1.0, indicating how important it is to keep the - * filter type consistent between rows. Larger numbers mean the current - * filter is that many times as likely to be the same as the "num_weights" - * previous filters. This is cumulative for each previous row with a weight. - * There needs to be "num_weights" values in "filter_weights", or it can be - * NULL if the weights aren't being specified. Weights have no influence on - * the selection of the first row filter. Well chosen weights can (in theory) - * improve the compression for a given image. - * - * Costs are factors >= 1.0 indicating the relative decoding costs of a - * filter type. Higher costs indicate more decoding expense, and are - * therefore less likely to be selected over a filter with lower computational - * costs. There needs to be a value in "filter_costs" for each valid filter - * type (given by PNG_FILTER_VALUE_LAST), or it can be NULL if you aren't - * setting the costs. Costs try to improve the speed of decompression without - * unduly increasing the compressed image size. - * - * A negative weight or cost indicates the default value is to be used, and - * values in the range [0.0, 1.0) indicate the value is to remain unchanged. - * The default values for both weights and costs are currently 1.0, but may - * change if good general weighting/cost heuristics can be found. If both - * the weights and costs are set to 1.0, this degenerates the WEIGHTED method - * to the UNWEIGHTED method, but with added encoding time/computation. - */ -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(void,png_set_filter_heuristics) PNGARG((png_structp png_ptr, - int heuristic_method, int num_weights, png_doublep filter_weights, - png_doublep filter_costs)); -#endif -#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */ - -/* Heuristic used for row filter selection. These defines should NOT be - * changed. - */ -#define PNG_FILTER_HEURISTIC_DEFAULT 0 /* Currently "UNWEIGHTED" */ -#define PNG_FILTER_HEURISTIC_UNWEIGHTED 1 /* Used by libpng < 0.95 */ -#define PNG_FILTER_HEURISTIC_WEIGHTED 2 /* Experimental feature */ -#define PNG_FILTER_HEURISTIC_LAST 3 /* Not a valid value */ - -/* Set the library compression level. Currently, valid values range from - * 0 - 9, corresponding directly to the zlib compression levels 0 - 9 - * (0 - no compression, 9 - "maximal" compression). Note that tests have - * shown that zlib compression levels 3-6 usually perform as well as level 9 - * for PNG images, and do considerably fewer caclulations. In the future, - * these values may not correspond directly to the zlib compression levels. - */ -PNG_EXPORT(void,png_set_compression_level) PNGARG((png_structp png_ptr, - int level)); - -PNG_EXPORT(void,png_set_compression_mem_level) - PNGARG((png_structp png_ptr, int mem_level)); - -PNG_EXPORT(void,png_set_compression_strategy) - PNGARG((png_structp png_ptr, int strategy)); - -PNG_EXPORT(void,png_set_compression_window_bits) - PNGARG((png_structp png_ptr, int window_bits)); - -PNG_EXPORT(void,png_set_compression_method) PNGARG((png_structp png_ptr, - int method)); - -/* These next functions are called for input/output, memory, and error - * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c, - * and call standard C I/O routines such as fread(), fwrite(), and - * fprintf(). These functions can be made to use other I/O routines - * at run time for those applications that need to handle I/O in a - * different manner by calling png_set_???_fn(). See libpng.txt for - * more information. - */ - -#ifdef PNG_STDIO_SUPPORTED -/* Initialize the input/output for the PNG file to the default functions. */ -PNG_EXPORT(void,png_init_io) PNGARG((png_structp png_ptr, - png_FILE_p fp)); -#endif - -/* Replace the (error and abort), and warning functions with user - * supplied functions. If no messages are to be printed you must still - * write and use replacement functions. The replacement error_fn should - * still do a longjmp to the last setjmp location if you are using this - * method of error handling. If error_fn or warning_fn is NULL, the - * default function will be used. - */ - -PNG_EXPORT(void,png_set_error_fn) PNGARG((png_structp png_ptr, - png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn)); - -/* Return the user pointer associated with the error functions */ -PNG_EXPORT(png_voidp,png_get_error_ptr) PNGARG((png_structp png_ptr)); - -/* Replace the default data output functions with a user supplied one(s). - * If buffered output is not used, then output_flush_fn can be set to NULL. - * If PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time - * output_flush_fn will be ignored (and thus can be NULL). - * It is probably a mistake to use NULL for output_flush_fn if - * write_data_fn is not also NULL unless you have built libpng with - * PNG_WRITE_FLUSH_SUPPORTED undefined, because in this case libpng's - * default flush function, which uses the standard *FILE structure, will - * be used. - */ -PNG_EXPORT(void,png_set_write_fn) PNGARG((png_structp png_ptr, - png_voidp io_ptr, png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)); - -/* Replace the default data input function with a user supplied one. */ -PNG_EXPORT(void,png_set_read_fn) PNGARG((png_structp png_ptr, - png_voidp io_ptr, png_rw_ptr read_data_fn)); - -/* Return the user pointer associated with the I/O functions */ -PNG_EXPORT(png_voidp,png_get_io_ptr) PNGARG((png_structp png_ptr)); - -PNG_EXPORT(void,png_set_read_status_fn) PNGARG((png_structp png_ptr, - png_read_status_ptr read_row_fn)); - -PNG_EXPORT(void,png_set_write_status_fn) PNGARG((png_structp png_ptr, - png_write_status_ptr write_row_fn)); - -#ifdef PNG_USER_MEM_SUPPORTED -/* Replace the default memory allocation functions with user supplied one(s). */ -PNG_EXPORT(void,png_set_mem_fn) PNGARG((png_structp png_ptr, - png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn)); -/* Return the user pointer associated with the memory functions */ -PNG_EXPORT(png_voidp,png_get_mem_ptr) PNGARG((png_structp png_ptr)); -#endif - -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED -PNG_EXPORT(void,png_set_read_user_transform_fn) PNGARG((png_structp - png_ptr, png_user_transform_ptr read_user_transform_fn)); -#endif - -#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED -PNG_EXPORT(void,png_set_write_user_transform_fn) PNGARG((png_structp - png_ptr, png_user_transform_ptr write_user_transform_fn)); -#endif - -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ - defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) -PNG_EXPORT(void,png_set_user_transform_info) PNGARG((png_structp - png_ptr, png_voidp user_transform_ptr, int user_transform_depth, - int user_transform_channels)); -/* Return the user pointer associated with the user transform functions */ -PNG_EXPORT(png_voidp,png_get_user_transform_ptr) - PNGARG((png_structp png_ptr)); -#endif - -#ifdef PNG_USER_CHUNKS_SUPPORTED -PNG_EXPORT(void,png_set_read_user_chunk_fn) PNGARG((png_structp png_ptr, - png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn)); -PNG_EXPORT(png_voidp,png_get_user_chunk_ptr) PNGARG((png_structp - png_ptr)); -#endif - -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED -/* Sets the function callbacks for the push reader, and a pointer to a - * user-defined structure available to the callback functions. - */ -PNG_EXPORT(void,png_set_progressive_read_fn) PNGARG((png_structp png_ptr, - png_voidp progressive_ptr, - png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn, - png_progressive_end_ptr end_fn)); - -/* Returns the user pointer associated with the push read functions */ -PNG_EXPORT(png_voidp,png_get_progressive_ptr) - PNGARG((png_structp png_ptr)); - -/* Function to be called when data becomes available */ -PNG_EXPORT(void,png_process_data) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_bytep buffer, png_size_t buffer_size)); - -/* Function that combines rows. Not very much different than the - * png_combine_row() call. Is this even used????? - */ -PNG_EXPORT(void,png_progressive_combine_row) PNGARG((png_structp png_ptr, - png_bytep old_row, png_bytep new_row)); -#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ - -PNG_EXPORT(png_voidp,png_malloc) PNGARG((png_structp png_ptr, - png_alloc_size_t size)) PNG_ALLOCATED; -/* Added at libpng version 1.4.0 */ -PNG_EXPORT(png_voidp,png_calloc) PNGARG((png_structp png_ptr, - png_alloc_size_t size)) PNG_ALLOCATED; - -/* Added at libpng version 1.2.4 */ -PNG_EXPORT(png_voidp,png_malloc_warn) PNGARG((png_structp png_ptr, - png_alloc_size_t size)) PNG_ALLOCATED; - -/* Frees a pointer allocated by png_malloc() */ -PNG_EXPORT(void,png_free) PNGARG((png_structp png_ptr, png_voidp ptr)); - -/* Free data that was allocated internally */ -PNG_EXPORT(void,png_free_data) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 free_me, int num)); -/* Reassign responsibility for freeing existing data, whether allocated - * by libpng or by the application */ -PNG_EXPORT(void,png_data_freer) PNGARG((png_structp png_ptr, - png_infop info_ptr, int freer, png_uint_32 mask)); -/* Assignments for png_data_freer */ -#define PNG_DESTROY_WILL_FREE_DATA 1 -#define PNG_SET_WILL_FREE_DATA 1 -#define PNG_USER_WILL_FREE_DATA 2 -/* Flags for png_ptr->free_me and info_ptr->free_me */ -#define PNG_FREE_HIST 0x0008 -#define PNG_FREE_ICCP 0x0010 -#define PNG_FREE_SPLT 0x0020 -#define PNG_FREE_ROWS 0x0040 -#define PNG_FREE_PCAL 0x0080 -#define PNG_FREE_SCAL 0x0100 -#define PNG_FREE_UNKN 0x0200 -#define PNG_FREE_LIST 0x0400 -#define PNG_FREE_PLTE 0x1000 -#define PNG_FREE_TRNS 0x2000 -#define PNG_FREE_TEXT 0x4000 -#define PNG_FREE_ALL 0x7fff -#define PNG_FREE_MUL 0x4220 /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */ - -#ifdef PNG_USER_MEM_SUPPORTED -PNG_EXPORT(png_voidp,png_malloc_default) PNGARG((png_structp png_ptr, - png_alloc_size_t size)) PNG_ALLOCATED; -PNG_EXPORT(void,png_free_default) PNGARG((png_structp png_ptr, - png_voidp ptr)); -#endif - -#ifndef PNG_NO_ERROR_TEXT -/* Fatal error in PNG image of libpng - can't continue */ -PNG_EXPORT(void,png_error) PNGARG((png_structp png_ptr, - png_const_charp error_message)) PNG_NORETURN; - -/* The same, but the chunk name is prepended to the error string. */ -PNG_EXPORT(void,png_chunk_error) PNGARG((png_structp png_ptr, - png_const_charp error_message)) PNG_NORETURN; - -#else -/* Fatal error in PNG image of libpng - can't continue */ -PNG_EXPORT(void,png_err) PNGARG((png_structp png_ptr)) PNG_NORETURN; -#endif - -/* Non-fatal error in libpng. Can continue, but may have a problem. */ -PNG_EXPORT(void,png_warning) PNGARG((png_structp png_ptr, - png_const_charp warning_message)); - -/* Non-fatal error in libpng, chunk name is prepended to message. */ -PNG_EXPORT(void,png_chunk_warning) PNGARG((png_structp png_ptr, - png_const_charp warning_message)); - -#ifdef PNG_BENIGN_ERRORS_SUPPORTED -/* Benign error in libpng. Can continue, but may have a problem. - * User can choose whether to handle as a fatal error or as a warning. */ -PNG_EXPORT(void,png_benign_error) PNGARG((png_structp png_ptr, - png_const_charp warning_message)); - -/* Same, chunk name is prepended to message. */ -PNG_EXPORT(void,png_chunk_benign_error) PNGARG((png_structp png_ptr, - png_const_charp warning_message)); - -PNG_EXPORT(void,png_set_benign_errors) PNGARG((png_structp - png_ptr, int allowed)); -#endif - -/* The png_set_ functions are for storing values in the png_info_struct. - * Similarly, the png_get_ calls are used to read values from the - * png_info_struct, either storing the parameters in the passed variables, or - * setting pointers into the png_info_struct where the data is stored. The - * png_get_ functions return a non-zero value if the data was available - * in info_ptr, or return zero and do not change any of the parameters if the - * data was not available. - * - * These functions should be used instead of directly accessing png_info - * to avoid problems with future changes in the size and internal layout of - * png_info_struct. - */ -/* Returns "flag" if chunk data is valid in info_ptr. */ -PNG_EXPORT(png_uint_32,png_get_valid) PNGARG((png_structp png_ptr, -png_infop info_ptr, png_uint_32 flag)); - -/* Returns number of bytes needed to hold a transformed row. */ -PNG_EXPORT(png_size_t,png_get_rowbytes) PNGARG((png_structp png_ptr, -png_infop info_ptr)); - -#ifdef PNG_INFO_IMAGE_SUPPORTED -/* Returns row_pointers, which is an array of pointers to scanlines that was - * returned from png_read_png(). - */ -PNG_EXPORT(png_bytepp,png_get_rows) PNGARG((png_structp png_ptr, -png_infop info_ptr)); -/* Set row_pointers, which is an array of pointers to scanlines for use - * by png_write_png(). - */ -PNG_EXPORT(void,png_set_rows) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_bytepp row_pointers)); -#endif - -/* Returns number of color channels in image. */ -PNG_EXPORT(png_byte,png_get_channels) PNGARG((png_structp png_ptr, -png_infop info_ptr)); - -#ifdef PNG_EASY_ACCESS_SUPPORTED -/* Returns image width in pixels. */ -PNG_EXPORT(png_uint_32, png_get_image_width) PNGARG((png_structp -png_ptr, png_infop info_ptr)); - -/* Returns image height in pixels. */ -PNG_EXPORT(png_uint_32, png_get_image_height) PNGARG((png_structp -png_ptr, png_infop info_ptr)); - -/* Returns image bit_depth. */ -PNG_EXPORT(png_byte, png_get_bit_depth) PNGARG((png_structp -png_ptr, png_infop info_ptr)); - -/* Returns image color_type. */ -PNG_EXPORT(png_byte, png_get_color_type) PNGARG((png_structp -png_ptr, png_infop info_ptr)); - -/* Returns image filter_type. */ -PNG_EXPORT(png_byte, png_get_filter_type) PNGARG((png_structp -png_ptr, png_infop info_ptr)); - -/* Returns image interlace_type. */ -PNG_EXPORT(png_byte, png_get_interlace_type) PNGARG((png_structp -png_ptr, png_infop info_ptr)); - -/* Returns image compression_type. */ -PNG_EXPORT(png_byte, png_get_compression_type) PNGARG((png_structp -png_ptr, png_infop info_ptr)); - -/* Returns image resolution in pixels per meter, from pHYs chunk data. */ -PNG_EXPORT(png_uint_32, png_get_pixels_per_meter) PNGARG((png_structp -png_ptr, png_infop info_ptr)); -PNG_EXPORT(png_uint_32, png_get_x_pixels_per_meter) PNGARG((png_structp -png_ptr, png_infop info_ptr)); -PNG_EXPORT(png_uint_32, png_get_y_pixels_per_meter) PNGARG((png_structp -png_ptr, png_infop info_ptr)); - -/* Returns pixel aspect ratio, computed from pHYs chunk data. */ -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(float, png_get_pixel_aspect_ratio) PNGARG((png_structp -png_ptr, png_infop info_ptr)); -#endif - -/* Returns image x, y offset in pixels or microns, from oFFs chunk data. */ -PNG_EXPORT(png_int_32, png_get_x_offset_pixels) PNGARG((png_structp -png_ptr, png_infop info_ptr)); -PNG_EXPORT(png_int_32, png_get_y_offset_pixels) PNGARG((png_structp -png_ptr, png_infop info_ptr)); -PNG_EXPORT(png_int_32, png_get_x_offset_microns) PNGARG((png_structp -png_ptr, png_infop info_ptr)); -PNG_EXPORT(png_int_32, png_get_y_offset_microns) PNGARG((png_structp -png_ptr, png_infop info_ptr)); - -#endif /* PNG_EASY_ACCESS_SUPPORTED */ - -/* Returns pointer to signature string read from PNG header */ -PNG_EXPORT(png_bytep,png_get_signature) PNGARG((png_structp png_ptr, -png_infop info_ptr)); - -#ifdef PNG_bKGD_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_bKGD) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_color_16p *background)); -#endif - -#ifdef PNG_bKGD_SUPPORTED -PNG_EXPORT(void,png_set_bKGD) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_color_16p background)); -#endif - -#ifdef PNG_cHRM_SUPPORTED -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_cHRM) PNGARG((png_structp png_ptr, - png_infop info_ptr, double *white_x, double *white_y, double *red_x, - double *red_y, double *green_x, double *green_y, double *blue_x, - double *blue_y)); -#endif -#ifdef PNG_FIXED_POINT_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_cHRM_fixed) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_fixed_point *int_white_x, png_fixed_point - *int_white_y, png_fixed_point *int_red_x, png_fixed_point *int_red_y, - png_fixed_point *int_green_x, png_fixed_point *int_green_y, png_fixed_point - *int_blue_x, png_fixed_point *int_blue_y)); -#endif -#endif - -#ifdef PNG_cHRM_SUPPORTED -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(void,png_set_cHRM) PNGARG((png_structp png_ptr, - png_infop info_ptr, double white_x, double white_y, double red_x, - double red_y, double green_x, double green_y, double blue_x, double blue_y)); -#endif -#ifdef PNG_FIXED_POINT_SUPPORTED -PNG_EXPORT(void,png_set_cHRM_fixed) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_fixed_point int_white_x, png_fixed_point int_white_y, - png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point - int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x, - png_fixed_point int_blue_y)); -#endif -#endif - -#ifdef PNG_gAMA_SUPPORTED -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_gAMA) PNGARG((png_structp png_ptr, - png_infop info_ptr, double *file_gamma)); -#endif -PNG_EXPORT(png_uint_32,png_get_gAMA_fixed) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_fixed_point *int_file_gamma)); -#endif - -#ifdef PNG_gAMA_SUPPORTED -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(void,png_set_gAMA) PNGARG((png_structp png_ptr, - png_infop info_ptr, double file_gamma)); -#endif -PNG_EXPORT(void,png_set_gAMA_fixed) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_fixed_point int_file_gamma)); -#endif - -#ifdef PNG_hIST_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_hIST) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_16p *hist)); -#endif - -#ifdef PNG_hIST_SUPPORTED -PNG_EXPORT(void,png_set_hIST) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_16p hist)); -#endif - -PNG_EXPORT(png_uint_32,png_get_IHDR) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 *width, png_uint_32 *height, - int *bit_depth, int *color_type, int *interlace_method, - int *compression_method, int *filter_method)); - -PNG_EXPORT(void,png_set_IHDR) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 width, png_uint_32 height, int bit_depth, - int color_type, int interlace_method, int compression_method, - int filter_method)); - -#ifdef PNG_oFFs_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_oFFs) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_int_32 *offset_x, png_int_32 *offset_y, - int *unit_type)); -#endif - -#ifdef PNG_oFFs_SUPPORTED -PNG_EXPORT(void,png_set_oFFs) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_int_32 offset_x, png_int_32 offset_y, - int unit_type)); -#endif - -#ifdef PNG_pCAL_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_pCAL) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_charp *purpose, png_int_32 *X0, png_int_32 *X1, - int *type, int *nparams, png_charp *units, png_charpp *params)); -#endif - -#ifdef PNG_pCAL_SUPPORTED -PNG_EXPORT(void,png_set_pCAL) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_charp purpose, png_int_32 X0, png_int_32 X1, - int type, int nparams, png_charp units, png_charpp params)); -#endif - -#ifdef PNG_pHYs_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_pHYs) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)); -#endif - -#ifdef PNG_pHYs_SUPPORTED -PNG_EXPORT(void,png_set_pHYs) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 res_x, png_uint_32 res_y, int unit_type)); -#endif - -PNG_EXPORT(png_uint_32,png_get_PLTE) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_colorp *palette, int *num_palette)); - -PNG_EXPORT(void,png_set_PLTE) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_colorp palette, int num_palette)); - -#ifdef PNG_sBIT_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_sBIT) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_color_8p *sig_bit)); -#endif - -#ifdef PNG_sBIT_SUPPORTED -PNG_EXPORT(void,png_set_sBIT) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_color_8p sig_bit)); -#endif - -#ifdef PNG_sRGB_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_sRGB) PNGARG((png_structp png_ptr, - png_infop info_ptr, int *intent)); -#endif - -#ifdef PNG_sRGB_SUPPORTED -PNG_EXPORT(void,png_set_sRGB) PNGARG((png_structp png_ptr, - png_infop info_ptr, int intent)); -PNG_EXPORT(void,png_set_sRGB_gAMA_and_cHRM) PNGARG((png_structp png_ptr, - png_infop info_ptr, int intent)); -#endif - -#ifdef PNG_iCCP_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_iCCP) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_charpp name, int *compression_type, - png_charpp profile, png_uint_32 *proflen)); - /* Note to maintainer: profile should be png_bytepp */ -#endif - -#ifdef PNG_iCCP_SUPPORTED -PNG_EXPORT(void,png_set_iCCP) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_charp name, int compression_type, - png_charp profile, png_uint_32 proflen)); - /* Note to maintainer: profile should be png_bytep */ -#endif - -#ifdef PNG_sPLT_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_sPLT) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_sPLT_tpp entries)); -#endif - -#ifdef PNG_sPLT_SUPPORTED -PNG_EXPORT(void,png_set_sPLT) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_sPLT_tp entries, int nentries)); -#endif - -#ifdef PNG_TEXT_SUPPORTED -/* png_get_text also returns the number of text chunks in *num_text */ -PNG_EXPORT(png_uint_32,png_get_text) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_textp *text_ptr, int *num_text)); -#endif - -/* Note while png_set_text() will accept a structure whose text, - * language, and translated keywords are NULL pointers, the structure - * returned by png_get_text will always contain regular - * zero-terminated C strings. They might be empty strings but - * they will never be NULL pointers. - */ - -#ifdef PNG_TEXT_SUPPORTED -PNG_EXPORT(void,png_set_text) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_textp text_ptr, int num_text)); -#endif - -#ifdef PNG_tIME_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_tIME) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_timep *mod_time)); -#endif - -#ifdef PNG_tIME_SUPPORTED -PNG_EXPORT(void,png_set_tIME) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_timep mod_time)); -#endif - -#ifdef PNG_tRNS_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_tRNS) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_bytep *trans_alpha, int *num_trans, - png_color_16p *trans_color)); -#endif - -#ifdef PNG_tRNS_SUPPORTED -PNG_EXPORT(void,png_set_tRNS) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_bytep trans_alpha, int num_trans, - png_color_16p trans_color)); -#endif - -#ifdef PNG_tRNS_SUPPORTED -#endif - -#ifdef PNG_sCAL_SUPPORTED -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_sCAL) PNGARG((png_structp png_ptr, - png_infop info_ptr, int *unit, double *width, double *height)); -#else -#ifdef PNG_FIXED_POINT_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_sCAL_s) PNGARG((png_structp png_ptr, - png_infop info_ptr, int *unit, png_charpp swidth, png_charpp sheight)); -#endif -#endif -#endif /* PNG_sCAL_SUPPORTED */ - -#ifdef PNG_sCAL_SUPPORTED -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_EXPORT(void,png_set_sCAL) PNGARG((png_structp png_ptr, - png_infop info_ptr, int unit, double width, double height)); -#else -#ifdef PNG_FIXED_POINT_SUPPORTED -PNG_EXPORT(void,png_set_sCAL_s) PNGARG((png_structp png_ptr, - png_infop info_ptr, int unit, png_charp swidth, png_charp sheight)); -#endif -#endif -#endif /* PNG_sCAL_SUPPORTED || PNG_WRITE_sCAL_SUPPORTED */ - -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED -/* Provide a list of chunks and how they are to be handled, if the built-in - handling or default unknown chunk handling is not desired. Any chunks not - listed will be handled in the default manner. The IHDR and IEND chunks - must not be listed. - keep = 0: follow default behaviour - = 1: do not keep - = 2: keep only if safe-to-copy - = 3: keep even if unsafe-to-copy -*/ -PNG_EXPORT(void, png_set_keep_unknown_chunks) PNGARG((png_structp - png_ptr, int keep, png_bytep chunk_list, int num_chunks)); -PNG_EXPORT(int,png_handle_as_unknown) PNGARG((png_structp png_ptr, png_bytep - chunk_name)); -#endif -#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED -PNG_EXPORT(void, png_set_unknown_chunks) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_unknown_chunkp unknowns, int num_unknowns)); -PNG_EXPORT(void, png_set_unknown_chunk_location) - PNGARG((png_structp png_ptr, png_infop info_ptr, int chunk, int location)); -PNG_EXPORT(png_uint_32,png_get_unknown_chunks) PNGARG((png_structp - png_ptr, png_infop info_ptr, png_unknown_chunkpp entries)); -#endif - -/* Png_free_data() will turn off the "valid" flag for anything it frees. - * If you need to turn it off for a chunk that your application has freed, - * you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK); - */ -PNG_EXPORT(void, png_set_invalid) PNGARG((png_structp png_ptr, - png_infop info_ptr, int mask)); - -#ifdef PNG_INFO_IMAGE_SUPPORTED -/* The "params" pointer is currently not used and is for future expansion. */ -PNG_EXPORT(void, png_read_png) PNGARG((png_structp png_ptr, - png_infop info_ptr, - int transforms, - png_voidp params)); -PNG_EXPORT(void, png_write_png) PNGARG((png_structp png_ptr, - png_infop info_ptr, - int transforms, - png_voidp params)); -#endif - -PNG_EXPORT(png_charp,png_get_copyright) PNGARG((png_structp png_ptr)); -PNG_EXPORT(png_charp,png_get_header_ver) PNGARG((png_structp png_ptr)); -PNG_EXPORT(png_charp,png_get_header_version) PNGARG((png_structp - png_ptr)); -PNG_EXPORT(png_charp,png_get_libpng_ver) PNGARG((png_structp png_ptr)); - -#ifdef PNG_MNG_FEATURES_SUPPORTED -PNG_EXPORT(png_uint_32,png_permit_mng_features) PNGARG((png_structp - png_ptr, png_uint_32 mng_features_permitted)); -#endif - -/* For use in png_set_keep_unknown, added to version 1.2.6 */ -#define PNG_HANDLE_CHUNK_AS_DEFAULT 0 -#define PNG_HANDLE_CHUNK_NEVER 1 -#define PNG_HANDLE_CHUNK_IF_SAFE 2 -#define PNG_HANDLE_CHUNK_ALWAYS 3 - -/* Strip the prepended error numbers ("#nnn ") from error and warning - * messages before passing them to the error or warning handler. - */ -#ifdef PNG_ERROR_NUMBERS_SUPPORTED -PNG_EXPORT(void,png_set_strip_error_numbers) PNGARG((png_structp - png_ptr, png_uint_32 strip_mode)); -#endif - -/* Added in libpng-1.2.6 */ -#ifdef PNG_SET_USER_LIMITS_SUPPORTED -PNG_EXPORT(void,png_set_user_limits) PNGARG((png_structp - png_ptr, png_uint_32 user_width_max, png_uint_32 user_height_max)); -PNG_EXPORT(png_uint_32,png_get_user_width_max) PNGARG((png_structp - png_ptr)); -PNG_EXPORT(png_uint_32,png_get_user_height_max) PNGARG((png_structp - png_ptr)); -/* Added in libpng-1.4.0 */ -PNG_EXPORT(void,png_set_chunk_cache_max) PNGARG((png_structp - png_ptr, png_uint_32 user_chunk_cache_max)); -PNG_EXPORT(png_uint_32,png_get_chunk_cache_max) - PNGARG((png_structp png_ptr)); -/* Added in libpng-1.4.1 */ -PNG_EXPORT(void,png_set_chunk_malloc_max) PNGARG((png_structp - png_ptr, png_alloc_size_t user_chunk_cache_max)); -PNG_EXPORT(png_alloc_size_t,png_get_chunk_malloc_max) - PNGARG((png_structp png_ptr)); -#endif - -#if defined(PNG_INCH_CONVERSIONS) && defined(PNG_FLOATING_POINT_SUPPORTED) -PNG_EXPORT(png_uint_32,png_get_pixels_per_inch) PNGARG((png_structp png_ptr, -png_infop info_ptr)); - -PNG_EXPORT(png_uint_32,png_get_x_pixels_per_inch) PNGARG((png_structp png_ptr, -png_infop info_ptr)); - -PNG_EXPORT(png_uint_32,png_get_y_pixels_per_inch) PNGARG((png_structp png_ptr, -png_infop info_ptr)); - -PNG_EXPORT(float,png_get_x_offset_inches) PNGARG((png_structp png_ptr, -png_infop info_ptr)); - -PNG_EXPORT(float,png_get_y_offset_inches) PNGARG((png_structp png_ptr, -png_infop info_ptr)); - -#ifdef PNG_pHYs_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_pHYs_dpi) PNGARG((png_structp png_ptr, -png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)); -#endif /* PNG_pHYs_SUPPORTED */ -#endif /* PNG_INCH_CONVERSIONS && PNG_FLOATING_POINT_SUPPORTED */ - -/* Added in libpng-1.4.0 */ -#ifdef PNG_IO_STATE_SUPPORTED -PNG_EXPORT(png_uint_32,png_get_io_state) PNGARG((png_structp png_ptr)); - -PNG_EXPORT(png_bytep,png_get_io_chunk_name) - PNGARG((png_structp png_ptr)); - -/* The flags returned by png_get_io_state() are the following: */ -#define PNG_IO_NONE 0x0000 /* no I/O at this moment */ -#define PNG_IO_READING 0x0001 /* currently reading */ -#define PNG_IO_WRITING 0x0002 /* currently writing */ -#define PNG_IO_SIGNATURE 0x0010 /* currently at the file signature */ -#define PNG_IO_CHUNK_HDR 0x0020 /* currently at the chunk header */ -#define PNG_IO_CHUNK_DATA 0x0040 /* currently at the chunk data */ -#define PNG_IO_CHUNK_CRC 0x0080 /* currently at the chunk crc */ -#define PNG_IO_MASK_OP 0x000f /* current operation: reading/writing */ -#define PNG_IO_MASK_LOC 0x00f0 /* current location: sig/hdr/data/crc */ -#endif /* ?PNG_IO_STATE_SUPPORTED */ - -/* Maintainer: Put new public prototypes here ^, in libpng.3, and project - * defs - */ - -#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED -/* With these routines we avoid an integer divide, which will be slower on - * most machines. However, it does take more operations than the corresponding - * divide method, so it may be slower on a few RISC systems. There are two - * shifts (by 8 or 16 bits) and an addition, versus a single integer divide. - * - * Note that the rounding factors are NOT supposed to be the same! 128 and - * 32768 are correct for the NODIV code; 127 and 32767 are correct for the - * standard method. - * - * [Optimized code by Greg Roelofs and Mark Adler...blame us for bugs. :-) ] - */ - - /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */ - -# define png_composite(composite, fg, alpha, bg) \ - { png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) \ - * (png_uint_16)(alpha) \ - + (png_uint_16)(bg)*(png_uint_16)(255 \ - - (png_uint_16)(alpha)) + (png_uint_16)128); \ - (composite) = (png_byte)((temp + (temp >> 8)) >> 8); } - -# define png_composite_16(composite, fg, alpha, bg) \ - { png_uint_32 temp = (png_uint_32)((png_uint_32)(fg) \ - * (png_uint_32)(alpha) \ - + (png_uint_32)(bg)*(png_uint_32)(65535L \ - - (png_uint_32)(alpha)) + (png_uint_32)32768L); \ - (composite) = (png_uint_16)((temp + (temp >> 16)) >> 16); } - -#else /* Standard method using integer division */ - -# define png_composite(composite, fg, alpha, bg) \ - (composite) = (png_byte)(((png_uint_16)(fg) * (png_uint_16)(alpha) + \ - (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \ - (png_uint_16)127) / 255) - -# define png_composite_16(composite, fg, alpha, bg) \ - (composite) = (png_uint_16)(((png_uint_32)(fg) * (png_uint_32)(alpha) + \ - (png_uint_32)(bg)*(png_uint_32)(65535L - (png_uint_32)(alpha)) + \ - (png_uint_32)32767) / (png_uint_32)65535L) -#endif /* PNG_READ_COMPOSITE_NODIV_SUPPORTED */ - -#ifdef PNG_USE_READ_MACROS -/* Inline macros to do direct reads of bytes from the input buffer. - * The png_get_int_32() routine assumes we are using two's complement - * format for negative values, which is almost certainly true. - */ -# define png_get_uint_32(buf) \ - (((png_uint_32)(*(buf)) << 24) + \ - ((png_uint_32)(*((buf) + 1)) << 16) + \ - ((png_uint_32)(*((buf) + 2)) << 8) + \ - ((png_uint_32)(*((buf) + 3)))) -# define png_get_uint_16(buf) \ - (((png_uint_32)(*(buf)) << 8) + \ - ((png_uint_32)(*((buf) + 1)))) -# define png_get_int_32(buf) \ - ((png_int_32)((*(buf) & 0x80) \ - ? -((png_int_32)((png_get_uint_32(buf) ^ 0xffffffff)+1)) \ - : (png_int_32)png_get_uint_32(buf))) -#else -PNG_EXPORT(png_uint_32,png_get_uint_32) PNGARG((png_bytep buf)); -PNG_EXPORT(png_uint_16,png_get_uint_16) PNGARG((png_bytep buf)); -#ifdef PNG_GET_INT_32_SUPPORTED -PNG_EXPORT(png_int_32,png_get_int_32) PNGARG((png_bytep buf)); -#endif -#endif -PNG_EXPORT(png_uint_32,png_get_uint_31) - PNGARG((png_structp png_ptr, png_bytep buf)); -/* No png_get_int_16 -- may be added if there's a real need for it. */ - -/* Place a 32-bit number into a buffer in PNG byte order (big-endian). */ -PNG_EXPORT(void,png_save_uint_32) - PNGARG((png_bytep buf, png_uint_32 i)); -PNG_EXPORT(void,png_save_int_32) - PNGARG((png_bytep buf, png_int_32 i)); - -/* Place a 16-bit number into a buffer in PNG byte order. - * The parameter is declared unsigned int, not png_uint_16, - * just to avoid potential problems on pre-ANSI C compilers. - */ -PNG_EXPORT(void,png_save_uint_16) - PNGARG((png_bytep buf, unsigned int i)); -/* No png_save_int_16 -- may be added if there's a real need for it. */ - -/* ************************************************************************* */ - -/* Various modes of operation. Note that after an init, mode is set to - * zero automatically when the structure is created. - */ -#define PNG_HAVE_IHDR 0x01 -#define PNG_HAVE_PLTE 0x02 -#define PNG_HAVE_IDAT 0x04 -#define PNG_AFTER_IDAT 0x08 /* Have complete zlib datastream */ -#define PNG_HAVE_IEND 0x10 -#define PNG_HAVE_gAMA 0x20 -#define PNG_HAVE_cHRM 0x40 - -#ifdef __cplusplus -} -#endif - -#endif /* PNG_VERSION_INFO_ONLY */ -/* Do not put anything past this line */ -#endif /* PNG_H */ + +/* png.h - header file for PNG reference library + * + * libpng version 1.5.2 - March 31, 2011 + * Copyright (c) 1998-2011 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This code is released under the libpng license (See LICENSE, below) + * + * Authors and maintainers: + * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat + * libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger + * libpng versions 0.97, January 1998, through 1.5.2 - March 31, 2011: Glenn + * See also "Contributing Authors", below. + * + * Note about libpng version numbers: + * + * Due to various miscommunications, unforeseen code incompatibilities + * and occasional factors outside the authors' control, version numbering + * on the library has not always been consistent and straightforward. + * The following table summarizes matters since version 0.89c, which was + * the first widely used release: + * + * source png.h png.h shared-lib + * version string int version + * ------- ------ ----- ---------- + * 0.89c "1.0 beta 3" 0.89 89 1.0.89 + * 0.90 "1.0 beta 4" 0.90 90 0.90 [should have been 2.0.90] + * 0.95 "1.0 beta 5" 0.95 95 0.95 [should have been 2.0.95] + * 0.96 "1.0 beta 6" 0.96 96 0.96 [should have been 2.0.96] + * 0.97b "1.00.97 beta 7" 1.00.97 97 1.0.1 [should have been 2.0.97] + * 0.97c 0.97 97 2.0.97 + * 0.98 0.98 98 2.0.98 + * 0.99 0.99 98 2.0.99 + * 0.99a-m 0.99 99 2.0.99 + * 1.00 1.00 100 2.1.0 [100 should be 10000] + * 1.0.0 (from here on, the 100 2.1.0 [100 should be 10000] + * 1.0.1 png.h string is 10001 2.1.0 + * 1.0.1a-e identical to the 10002 from here on, the shared library + * 1.0.2 source version) 10002 is 2.V where V is the source code + * 1.0.2a-b 10003 version, except as noted. + * 1.0.3 10003 + * 1.0.3a-d 10004 + * 1.0.4 10004 + * 1.0.4a-f 10005 + * 1.0.5 (+ 2 patches) 10005 + * 1.0.5a-d 10006 + * 1.0.5e-r 10100 (not source compatible) + * 1.0.5s-v 10006 (not binary compatible) + * 1.0.6 (+ 3 patches) 10006 (still binary incompatible) + * 1.0.6d-f 10007 (still binary incompatible) + * 1.0.6g 10007 + * 1.0.6h 10007 10.6h (testing xy.z so-numbering) + * 1.0.6i 10007 10.6i + * 1.0.6j 10007 2.1.0.6j (incompatible with 1.0.0) + * 1.0.7beta11-14 DLLNUM 10007 2.1.0.7beta11-14 (binary compatible) + * 1.0.7beta15-18 1 10007 2.1.0.7beta15-18 (binary compatible) + * 1.0.7rc1-2 1 10007 2.1.0.7rc1-2 (binary compatible) + * 1.0.7 1 10007 (still compatible) + * 1.0.8beta1-4 1 10008 2.1.0.8beta1-4 + * 1.0.8rc1 1 10008 2.1.0.8rc1 + * 1.0.8 1 10008 2.1.0.8 + * 1.0.9beta1-6 1 10009 2.1.0.9beta1-6 + * 1.0.9rc1 1 10009 2.1.0.9rc1 + * 1.0.9beta7-10 1 10009 2.1.0.9beta7-10 + * 1.0.9rc2 1 10009 2.1.0.9rc2 + * 1.0.9 1 10009 2.1.0.9 + * 1.0.10beta1 1 10010 2.1.0.10beta1 + * 1.0.10rc1 1 10010 2.1.0.10rc1 + * 1.0.10 1 10010 2.1.0.10 + * 1.0.11beta1-3 1 10011 2.1.0.11beta1-3 + * 1.0.11rc1 1 10011 2.1.0.11rc1 + * 1.0.11 1 10011 2.1.0.11 + * 1.0.12beta1-2 2 10012 2.1.0.12beta1-2 + * 1.0.12rc1 2 10012 2.1.0.12rc1 + * 1.0.12 2 10012 2.1.0.12 + * 1.1.0a-f - 10100 2.1.1.0a-f (branch abandoned) + * 1.2.0beta1-2 2 10200 2.1.2.0beta1-2 + * 1.2.0beta3-5 3 10200 3.1.2.0beta3-5 + * 1.2.0rc1 3 10200 3.1.2.0rc1 + * 1.2.0 3 10200 3.1.2.0 + * 1.2.1beta1-4 3 10201 3.1.2.1beta1-4 + * 1.2.1rc1-2 3 10201 3.1.2.1rc1-2 + * 1.2.1 3 10201 3.1.2.1 + * 1.2.2beta1-6 12 10202 12.so.0.1.2.2beta1-6 + * 1.0.13beta1 10 10013 10.so.0.1.0.13beta1 + * 1.0.13rc1 10 10013 10.so.0.1.0.13rc1 + * 1.2.2rc1 12 10202 12.so.0.1.2.2rc1 + * 1.0.13 10 10013 10.so.0.1.0.13 + * 1.2.2 12 10202 12.so.0.1.2.2 + * 1.2.3rc1-6 12 10203 12.so.0.1.2.3rc1-6 + * 1.2.3 12 10203 12.so.0.1.2.3 + * 1.2.4beta1-3 13 10204 12.so.0.1.2.4beta1-3 + * 1.0.14rc1 13 10014 10.so.0.1.0.14rc1 + * 1.2.4rc1 13 10204 12.so.0.1.2.4rc1 + * 1.0.14 10 10014 10.so.0.1.0.14 + * 1.2.4 13 10204 12.so.0.1.2.4 + * 1.2.5beta1-2 13 10205 12.so.0.1.2.5beta1-2 + * 1.0.15rc1-3 10 10015 10.so.0.1.0.15rc1-3 + * 1.2.5rc1-3 13 10205 12.so.0.1.2.5rc1-3 + * 1.0.15 10 10015 10.so.0.1.0.15 + * 1.2.5 13 10205 12.so.0.1.2.5 + * 1.2.6beta1-4 13 10206 12.so.0.1.2.6beta1-4 + * 1.0.16 10 10016 10.so.0.1.0.16 + * 1.2.6 13 10206 12.so.0.1.2.6 + * 1.2.7beta1-2 13 10207 12.so.0.1.2.7beta1-2 + * 1.0.17rc1 10 10017 12.so.0.1.0.17rc1 + * 1.2.7rc1 13 10207 12.so.0.1.2.7rc1 + * 1.0.17 10 10017 12.so.0.1.0.17 + * 1.2.7 13 10207 12.so.0.1.2.7 + * 1.2.8beta1-5 13 10208 12.so.0.1.2.8beta1-5 + * 1.0.18rc1-5 10 10018 12.so.0.1.0.18rc1-5 + * 1.2.8rc1-5 13 10208 12.so.0.1.2.8rc1-5 + * 1.0.18 10 10018 12.so.0.1.0.18 + * 1.2.8 13 10208 12.so.0.1.2.8 + * 1.2.9beta1-3 13 10209 12.so.0.1.2.9beta1-3 + * 1.2.9beta4-11 13 10209 12.so.0.9[.0] + * 1.2.9rc1 13 10209 12.so.0.9[.0] + * 1.2.9 13 10209 12.so.0.9[.0] + * 1.2.10beta1-7 13 10210 12.so.0.10[.0] + * 1.2.10rc1-2 13 10210 12.so.0.10[.0] + * 1.2.10 13 10210 12.so.0.10[.0] + * 1.4.0beta1-5 14 10400 14.so.0.0[.0] + * 1.2.11beta1-4 13 10211 12.so.0.11[.0] + * 1.4.0beta7-8 14 10400 14.so.0.0[.0] + * 1.2.11 13 10211 12.so.0.11[.0] + * 1.2.12 13 10212 12.so.0.12[.0] + * 1.4.0beta9-14 14 10400 14.so.0.0[.0] + * 1.2.13 13 10213 12.so.0.13[.0] + * 1.4.0beta15-36 14 10400 14.so.0.0[.0] + * 1.4.0beta37-87 14 10400 14.so.14.0[.0] + * 1.4.0rc01 14 10400 14.so.14.0[.0] + * 1.4.0beta88-109 14 10400 14.so.14.0[.0] + * 1.4.0rc02-08 14 10400 14.so.14.0[.0] + * 1.4.0 14 10400 14.so.14.0[.0] + * 1.4.1beta01-03 14 10401 14.so.14.1[.0] + * 1.4.1rc01 14 10401 14.so.14.1[.0] + * 1.4.1beta04-12 14 10401 14.so.14.1[.0] + * 1.4.1 14 10401 14.so.14.1[.0] + * 1.4.2 14 10402 14.so.14.2[.0] + * 1.4.3 14 10403 14.so.14.3[.0] + * 1.4.4 14 10404 14.so.14.4[.0] + * 1.5.0beta01-58 15 10500 15.so.15.0[.0] + * 1.5.0rc01-07 15 10500 15.so.15.0[.0] + * 1.5.0 15 10500 15.so.15.0[.0] + * 1.5.1beta01-11 15 10501 15.so.15.1[.0] + * 1.5.1rc01-02 15 10501 15.so.15.1[.0] + * 1.5.1 15 10501 15.so.15.1[.0] + * 1.5.2beta01-03 15 10502 15.so.15.2[.0] + * 1.5.2rc01-03 15 10502 15.so.15.2[.0] + * 1.5.2 15 10502 15.so.15.2[.0] + * + * Henceforth the source version will match the shared-library major + * and minor numbers; the shared-library major version number will be + * used for changes in backward compatibility, as it is intended. The + * PNG_LIBPNG_VER macro, which is not used within libpng but is available + * for applications, is an unsigned integer of the form xyyzz corresponding + * to the source version x.y.z (leading zeros in y and z). Beta versions + * were given the previous public release number plus a letter, until + * version 1.0.6j; from then on they were given the upcoming public + * release number plus "betaNN" or "rcN". + * + * Binary incompatibility exists only when applications make direct access + * to the info_ptr or png_ptr members through png.h, and the compiled + * application is loaded with a different version of the library. + * + * DLLNUM will change each time there are forward or backward changes + * in binary compatibility (e.g., when a new feature is added). + * + * See libpng-manual.txt or libpng.3 for more information. The PNG + * specification is available as a W3C Recommendation and as an ISO + * Specification, +# endif + + /* Need the time information for converting tIME chunks, it + * defines struct tm: + */ +# ifdef PNG_CONVERT_tIME_SUPPORTED + /* "time.h" functions are not supported on all operating systems */ +# include +# endif +# endif + +/* Machine specific configuration. */ +# include "pngconf.h" +#endif + +/* + * Added at libpng-1.2.8 + * + * Ref MSDN: Private as priority over Special + * VS_FF_PRIVATEBUILD File *was not* built using standard release + * procedures. If this value is given, the StringFileInfo block must + * contain a PrivateBuild string. + * + * VS_FF_SPECIALBUILD File *was* built by the original company using + * standard release procedures but is a variation of the standard + * file of the same version number. If this value is given, the + * StringFileInfo block must contain a SpecialBuild string. + */ + +#ifdef PNG_USER_PRIVATEBUILD /* From pnglibconf.h */ +# define PNG_LIBPNG_BUILD_TYPE \ + (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_PRIVATE) +#else +# ifdef PNG_LIBPNG_SPECIALBUILD +# define PNG_LIBPNG_BUILD_TYPE \ + (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_SPECIAL) +# else +# define PNG_LIBPNG_BUILD_TYPE (PNG_LIBPNG_BUILD_BASE_TYPE) +# endif +#endif + +#ifndef PNG_VERSION_INFO_ONLY + +/* Inhibit C++ name-mangling for libpng functions but not for system calls. */ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* Version information for C files, stored in png.c. This had better match + * the version above. + */ +#define png_libpng_ver png_get_header_ver(NULL) + +/* This file is arranged in several sections: + * + * 1. Any configuration options that can be specified by for the application + * code when it is built. (Build time configuration is in pnglibconf.h) + * 2. Type definitions (base types are defined in pngconf.h), structure + * definitions. + * 3. Exported library functions. + * + * The library source code has additional files (principally pngpriv.h) that + * allow configuration of the library. + */ +/* Section 1: run time configuration + * See pnglibconf.h for build time configuration + * + * Run time configuration allows the application to choose between + * implementations of certain arithmetic APIs. The default is set + * at build time and recorded in pnglibconf.h, but it is safe to + * override these (and only these) settings. Note that this won't + * change what the library does, only application code, and the + * settings can (and probably should) be made on a per-file basis + * by setting the #defines before including png.h + * + * Use macros to read integers from PNG data or use the exported + * functions? + * PNG_USE_READ_MACROS: use the macros (see below) Note that + * the macros evaluate their argument multiple times. + * PNG_NO_USE_READ_MACROS: call the relevant library function. + * + * Use the alternative algorithm for compositing alpha samples that + * does not use division? + * PNG_READ_COMPOSITE_NODIV_SUPPORTED: use the 'no division' + * algorithm. + * PNG_NO_READ_COMPOSITE_NODIV: use the 'division' algorithm. + * + * How to handle benign errors if PNG_ALLOW_BENIGN_ERRORS is + * false? + * PNG_ALLOW_BENIGN_ERRORS: map calls to the benign error + * APIs to png_warning. + * Otherwise the calls are mapped to png_error. + */ + +/* Section 2: type definitions, including structures and compile time + * constants. + * See pngconf.h for base types that vary by machine/system + */ + +/* This triggers a compiler error in png.c, if png.c and png.h + * do not agree upon the version number. + */ +typedef char* png_libpng_version_1_5_2; + +/* Three color definitions. The order of the red, green, and blue, (and the + * exact size) is not important, although the size of the fields need to + * be png_byte or png_uint_16 (as defined below). + */ +typedef struct png_color_struct +{ + png_byte red; + png_byte green; + png_byte blue; +} png_color; +typedef png_color FAR * png_colorp; +typedef PNG_CONST png_color FAR * png_const_colorp; +typedef png_color FAR * FAR * png_colorpp; + +typedef struct png_color_16_struct +{ + png_byte index; /* used for palette files */ + png_uint_16 red; /* for use in red green blue files */ + png_uint_16 green; + png_uint_16 blue; + png_uint_16 gray; /* for use in grayscale files */ +} png_color_16; +typedef png_color_16 FAR * png_color_16p; +typedef PNG_CONST png_color_16 FAR * png_const_color_16p; +typedef png_color_16 FAR * FAR * png_color_16pp; + +typedef struct png_color_8_struct +{ + png_byte red; /* for use in red green blue files */ + png_byte green; + png_byte blue; + png_byte gray; /* for use in grayscale files */ + png_byte alpha; /* for alpha channel files */ +} png_color_8; +typedef png_color_8 FAR * png_color_8p; +typedef PNG_CONST png_color_8 FAR * png_const_color_8p; +typedef png_color_8 FAR * FAR * png_color_8pp; + +/* + * The following two structures are used for the in-core representation + * of sPLT chunks. + */ +typedef struct png_sPLT_entry_struct +{ + png_uint_16 red; + png_uint_16 green; + png_uint_16 blue; + png_uint_16 alpha; + png_uint_16 frequency; +} png_sPLT_entry; +typedef png_sPLT_entry FAR * png_sPLT_entryp; +typedef PNG_CONST png_sPLT_entry FAR * png_const_sPLT_entryp; +typedef png_sPLT_entry FAR * FAR * png_sPLT_entrypp; + +/* When the depth of the sPLT palette is 8 bits, the color and alpha samples + * occupy the LSB of their respective members, and the MSB of each member + * is zero-filled. The frequency member always occupies the full 16 bits. + */ + +typedef struct png_sPLT_struct +{ + png_charp name; /* palette name */ + png_byte depth; /* depth of palette samples */ + png_sPLT_entryp entries; /* palette entries */ + png_int_32 nentries; /* number of palette entries */ +} png_sPLT_t; +typedef png_sPLT_t FAR * png_sPLT_tp; +typedef PNG_CONST png_sPLT_t FAR * png_const_sPLT_tp; +typedef png_sPLT_t FAR * FAR * png_sPLT_tpp; + +#ifdef PNG_TEXT_SUPPORTED +/* png_text holds the contents of a text/ztxt/itxt chunk in a PNG file, + * and whether that contents is compressed or not. The "key" field + * points to a regular zero-terminated C string. The "text", "lang", and + * "lang_key" fields can be regular C strings, empty strings, or NULL pointers. + * However, the * structure returned by png_get_text() will always contain + * regular zero-terminated C strings (possibly empty), never NULL pointers, + * so they can be safely used in printf() and other string-handling functions. + */ +typedef struct png_text_struct +{ + int compression; /* compression value: + -1: tEXt, none + 0: zTXt, deflate + 1: iTXt, none + 2: iTXt, deflate */ + png_charp key; /* keyword, 1-79 character description of "text" */ + png_charp text; /* comment, may be an empty string (ie "") + or a NULL pointer */ + png_size_t text_length; /* length of the text string */ + png_size_t itxt_length; /* length of the itxt string */ + png_charp lang; /* language code, 0-79 characters + or a NULL pointer */ + png_charp lang_key; /* keyword translated UTF-8 string, 0 or more + chars or a NULL pointer */ +} png_text; +typedef png_text FAR * png_textp; +typedef PNG_CONST png_text FAR * png_const_textp; +typedef png_text FAR * FAR * png_textpp; +#endif + +/* Supported compression types for text in PNG files (tEXt, and zTXt). + * The values of the PNG_TEXT_COMPRESSION_ defines should NOT be changed. */ +#define PNG_TEXT_COMPRESSION_NONE_WR -3 +#define PNG_TEXT_COMPRESSION_zTXt_WR -2 +#define PNG_TEXT_COMPRESSION_NONE -1 +#define PNG_TEXT_COMPRESSION_zTXt 0 +#define PNG_ITXT_COMPRESSION_NONE 1 +#define PNG_ITXT_COMPRESSION_zTXt 2 +#define PNG_TEXT_COMPRESSION_LAST 3 /* Not a valid value */ + +/* png_time is a way to hold the time in an machine independent way. + * Two conversions are provided, both from time_t and struct tm. There + * is no portable way to convert to either of these structures, as far + * as I know. If you know of a portable way, send it to me. As a side + * note - PNG has always been Year 2000 compliant! + */ +typedef struct png_time_struct +{ + png_uint_16 year; /* full year, as in, 1995 */ + png_byte month; /* month of year, 1 - 12 */ + png_byte day; /* day of month, 1 - 31 */ + png_byte hour; /* hour of day, 0 - 23 */ + png_byte minute; /* minute of hour, 0 - 59 */ + png_byte second; /* second of minute, 0 - 60 (for leap seconds) */ +} png_time; +typedef png_time FAR * png_timep; +typedef PNG_CONST png_time FAR * png_const_timep; +typedef png_time FAR * FAR * png_timepp; + +#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) || \ + defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED) +/* png_unknown_chunk is a structure to hold queued chunks for which there is + * no specific support. The idea is that we can use this to queue + * up private chunks for output even though the library doesn't actually + * know about their semantics. + */ +typedef struct png_unknown_chunk_t +{ + png_byte name[5]; + png_byte *data; + png_size_t size; + + /* libpng-using applications should NOT directly modify this byte. */ + png_byte location; /* mode of operation at read time */ +} +png_unknown_chunk; +typedef png_unknown_chunk FAR * png_unknown_chunkp; +typedef PNG_CONST png_unknown_chunk FAR * png_const_unknown_chunkp; +typedef png_unknown_chunk FAR * FAR * png_unknown_chunkpp; +#endif + +typedef struct png_info_def png_info; +typedef png_info FAR * png_infop; +typedef PNG_CONST png_info FAR * png_const_infop; +typedef png_info FAR * FAR * png_infopp; + +/* Maximum positive integer used in PNG is (2^31)-1 */ +#define PNG_UINT_31_MAX ((png_uint_32)0x7fffffffL) +#define PNG_UINT_32_MAX ((png_uint_32)(-1)) +#define PNG_SIZE_MAX ((png_size_t)(-1)) + +/* These are constants for fixed point values encoded in the + * PNG specification manner (x100000) + */ +#define PNG_FP_1 100000 +#define PNG_FP_HALF 50000 + +/* These describe the color_type field in png_info. */ +/* color type masks */ +#define PNG_COLOR_MASK_PALETTE 1 +#define PNG_COLOR_MASK_COLOR 2 +#define PNG_COLOR_MASK_ALPHA 4 + +/* color types. Note that not all combinations are legal */ +#define PNG_COLOR_TYPE_GRAY 0 +#define PNG_COLOR_TYPE_PALETTE (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE) +#define PNG_COLOR_TYPE_RGB (PNG_COLOR_MASK_COLOR) +#define PNG_COLOR_TYPE_RGB_ALPHA (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA) +#define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA) +/* aliases */ +#define PNG_COLOR_TYPE_RGBA PNG_COLOR_TYPE_RGB_ALPHA +#define PNG_COLOR_TYPE_GA PNG_COLOR_TYPE_GRAY_ALPHA + +/* This is for compression type. PNG 1.0-1.2 only define the single type. */ +#define PNG_COMPRESSION_TYPE_BASE 0 /* Deflate method 8, 32K window */ +#define PNG_COMPRESSION_TYPE_DEFAULT PNG_COMPRESSION_TYPE_BASE + +/* This is for filter type. PNG 1.0-1.2 only define the single type. */ +#define PNG_FILTER_TYPE_BASE 0 /* Single row per-byte filtering */ +#define PNG_INTRAPIXEL_DIFFERENCING 64 /* Used only in MNG datastreams */ +#define PNG_FILTER_TYPE_DEFAULT PNG_FILTER_TYPE_BASE + +/* These are for the interlacing type. These values should NOT be changed. */ +#define PNG_INTERLACE_NONE 0 /* Non-interlaced image */ +#define PNG_INTERLACE_ADAM7 1 /* Adam7 interlacing */ +#define PNG_INTERLACE_LAST 2 /* Not a valid value */ + +/* These are for the oFFs chunk. These values should NOT be changed. */ +#define PNG_OFFSET_PIXEL 0 /* Offset in pixels */ +#define PNG_OFFSET_MICROMETER 1 /* Offset in micrometers (1/10^6 meter) */ +#define PNG_OFFSET_LAST 2 /* Not a valid value */ + +/* These are for the pCAL chunk. These values should NOT be changed. */ +#define PNG_EQUATION_LINEAR 0 /* Linear transformation */ +#define PNG_EQUATION_BASE_E 1 /* Exponential base e transform */ +#define PNG_EQUATION_ARBITRARY 2 /* Arbitrary base exponential transform */ +#define PNG_EQUATION_HYPERBOLIC 3 /* Hyperbolic sine transformation */ +#define PNG_EQUATION_LAST 4 /* Not a valid value */ + +/* These are for the sCAL chunk. These values should NOT be changed. */ +#define PNG_SCALE_UNKNOWN 0 /* unknown unit (image scale) */ +#define PNG_SCALE_METER 1 /* meters per pixel */ +#define PNG_SCALE_RADIAN 2 /* radians per pixel */ +#define PNG_SCALE_LAST 3 /* Not a valid value */ + +/* These are for the pHYs chunk. These values should NOT be changed. */ +#define PNG_RESOLUTION_UNKNOWN 0 /* pixels/unknown unit (aspect ratio) */ +#define PNG_RESOLUTION_METER 1 /* pixels/meter */ +#define PNG_RESOLUTION_LAST 2 /* Not a valid value */ + +/* These are for the sRGB chunk. These values should NOT be changed. */ +#define PNG_sRGB_INTENT_PERCEPTUAL 0 +#define PNG_sRGB_INTENT_RELATIVE 1 +#define PNG_sRGB_INTENT_SATURATION 2 +#define PNG_sRGB_INTENT_ABSOLUTE 3 +#define PNG_sRGB_INTENT_LAST 4 /* Not a valid value */ + +/* This is for text chunks */ +#define PNG_KEYWORD_MAX_LENGTH 79 + +/* Maximum number of entries in PLTE/sPLT/tRNS arrays */ +#define PNG_MAX_PALETTE_LENGTH 256 + +/* These determine if an ancillary chunk's data has been successfully read + * from the PNG header, or if the application has filled in the corresponding + * data in the info_struct to be written into the output file. The values + * of the PNG_INFO_ defines should NOT be changed. + */ +#define PNG_INFO_gAMA 0x0001 +#define PNG_INFO_sBIT 0x0002 +#define PNG_INFO_cHRM 0x0004 +#define PNG_INFO_PLTE 0x0008 +#define PNG_INFO_tRNS 0x0010 +#define PNG_INFO_bKGD 0x0020 +#define PNG_INFO_hIST 0x0040 +#define PNG_INFO_pHYs 0x0080 +#define PNG_INFO_oFFs 0x0100 +#define PNG_INFO_tIME 0x0200 +#define PNG_INFO_pCAL 0x0400 +#define PNG_INFO_sRGB 0x0800 /* GR-P, 0.96a */ +#define PNG_INFO_iCCP 0x1000 /* ESR, 1.0.6 */ +#define PNG_INFO_sPLT 0x2000 /* ESR, 1.0.6 */ +#define PNG_INFO_sCAL 0x4000 /* ESR, 1.0.6 */ +#define PNG_INFO_IDAT 0x8000L /* ESR, 1.0.6 */ + +/* This is used for the transformation routines, as some of them + * change these values for the row. It also should enable using + * the routines for other purposes. + */ +typedef struct png_row_info_struct +{ + png_uint_32 width; /* width of row */ + png_size_t rowbytes; /* number of bytes in row */ + png_byte color_type; /* color type of row */ + png_byte bit_depth; /* bit depth of row */ + png_byte channels; /* number of channels (1, 2, 3, or 4) */ + png_byte pixel_depth; /* bits per pixel (depth * channels) */ +} png_row_info; + +typedef png_row_info FAR * png_row_infop; +typedef png_row_info FAR * FAR * png_row_infopp; + +/* These are the function types for the I/O functions and for the functions + * that allow the user to override the default I/O functions with his or her + * own. The png_error_ptr type should match that of user-supplied warning + * and error functions, while the png_rw_ptr type should match that of the + * user read/write data functions. Note that the 'write' function must not + * modify the buffer it is passed. The 'read' function, on the other hand, is + * expected to return the read data in the buffer. + */ +typedef struct png_struct_def png_struct; +typedef PNG_CONST png_struct FAR * png_const_structp; +typedef png_struct FAR * png_structp; + +typedef PNG_CALLBACK(void, *png_error_ptr, (png_structp, png_const_charp)); +typedef PNG_CALLBACK(void, *png_rw_ptr, (png_structp, png_bytep, png_size_t)); +typedef PNG_CALLBACK(void, *png_flush_ptr, (png_structp)); +typedef PNG_CALLBACK(void, *png_read_status_ptr, (png_structp, png_uint_32, + int)); +typedef PNG_CALLBACK(void, *png_write_status_ptr, (png_structp, png_uint_32, + int)); + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +typedef PNG_CALLBACK(void, *png_progressive_info_ptr, (png_structp, png_infop)); +typedef PNG_CALLBACK(void, *png_progressive_end_ptr, (png_structp, png_infop)); + +/* The following callback receives png_uint_32 row_number, int pass for the + * png_bytep data of the row. When transforming an interlaced image the + * row number is the row number within the sub-image of the interlace pass, so + * the value will increase to the height of the sub-image (not the full image) + * then reset to 0 for the next pass. + * + * Use PNG_ROW_FROM_PASS_ROW(row, pass) and PNG_COL_FROM_PASS_COL(col, pass) to + * find the output pixel (x,y) given an interlaced sub-image pixel + * (row,col,pass). (See below for these macros.) + */ +typedef PNG_CALLBACK(void, *png_progressive_row_ptr, (png_structp, png_bytep, + png_uint_32, int)); +#endif + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) +typedef PNG_CALLBACK(void, *png_user_transform_ptr, (png_structp, png_row_infop, + png_bytep)); +#endif + +#ifdef PNG_USER_CHUNKS_SUPPORTED +typedef PNG_CALLBACK(int, *png_user_chunk_ptr, (png_structp, + png_unknown_chunkp)); +#endif +#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED +typedef PNG_CALLBACK(void, *png_unknown_chunk_ptr, (png_structp)); +#endif + +#ifdef PNG_SETJMP_SUPPORTED +/* This must match the function definition in , and the + * application must include this before png.h to obtain the definition + * of jmp_buf. The function is required to be PNG_NORETURN. (Note that + * PNG_PTR_NORETURN is used here because current versions of the Microsoft + * C compiler do not support the PNG_NORETURN attribute on a pointer.) + * + * If you get a type warning from the compiler when linking against this line + * then your compiler has 'longjmp' that does not match the requirements of the + * compiler that built libpng. You will have to write a wrapper function for + * your compiler's longjmp and call png_set_longjmp_fn directly (not via the + * png_jmpbuf macro.) + * + * If you get a warning here while building the library you will need to make + * changes to ensure that pnglibconf.h records the calling convention used by + * your compiler. This may be very difficult - try using a different compiler + * to build the library! + */ +typedef PNG_FUNCTION(void, (PNGCAPI *png_longjmp_ptr), PNGARG((jmp_buf, int)), + PNG_PTR_NORETURN); +#endif + +/* Transform masks for the high-level interface */ +#define PNG_TRANSFORM_IDENTITY 0x0000 /* read and write */ +#define PNG_TRANSFORM_STRIP_16 0x0001 /* read only */ +#define PNG_TRANSFORM_STRIP_ALPHA 0x0002 /* read only */ +#define PNG_TRANSFORM_PACKING 0x0004 /* read and write */ +#define PNG_TRANSFORM_PACKSWAP 0x0008 /* read and write */ +#define PNG_TRANSFORM_EXPAND 0x0010 /* read only */ +#define PNG_TRANSFORM_INVERT_MONO 0x0020 /* read and write */ +#define PNG_TRANSFORM_SHIFT 0x0040 /* read and write */ +#define PNG_TRANSFORM_BGR 0x0080 /* read and write */ +#define PNG_TRANSFORM_SWAP_ALPHA 0x0100 /* read and write */ +#define PNG_TRANSFORM_SWAP_ENDIAN 0x0200 /* read and write */ +#define PNG_TRANSFORM_INVERT_ALPHA 0x0400 /* read and write */ +#define PNG_TRANSFORM_STRIP_FILLER 0x0800 /* write only */ +/* Added to libpng-1.2.34 */ +#define PNG_TRANSFORM_STRIP_FILLER_BEFORE PNG_TRANSFORM_STRIP_FILLER +#define PNG_TRANSFORM_STRIP_FILLER_AFTER 0x1000 /* write only */ +/* Added to libpng-1.4.0 */ +#define PNG_TRANSFORM_GRAY_TO_RGB 0x2000 /* read only */ + +/* Flags for MNG supported features */ +#define PNG_FLAG_MNG_EMPTY_PLTE 0x01 +#define PNG_FLAG_MNG_FILTER_64 0x04 +#define PNG_ALL_MNG_FEATURES 0x05 + +/* NOTE: prior to 1.5 these functions had no 'API' style declaration, + * this allowed the zlib default functions to be used on Windows + * platforms. In 1.5 the zlib default malloc (which just calls malloc and + * ignores the first argument) should be completely compatible with the + * following. + */ +typedef PNG_CALLBACK(png_voidp, *png_malloc_ptr, (png_structp, + png_alloc_size_t)); +typedef PNG_CALLBACK(void, *png_free_ptr, (png_structp, png_voidp)); + +typedef png_struct FAR * FAR * png_structpp; + +/* Section 3: exported functions + * Here are the function definitions most commonly used. This is not + * the place to find out how to use libpng. See libpng-manual.txt for the + * full explanation, see example.c for the summary. This just provides + * a simple one line description of the use of each function. + * + * The PNG_EXPORT() and PNG_EXPORTA() macros used below are defined in + * pngconf.h and in the *.dfn files in the scripts directory. + * + * PNG_EXPORT(ordinal, type, name, (args)); + * + * ordinal: ordinal that is used while building + * *.def files. The ordinal value is only + * relevant when preprocessing png.h with + * the *.dfn files for building symbol table + * entries, and are removed by pngconf.h. + * type: return type of the function + * name: function name + * args: function arguments, with types + * + * When we wish to append attributes to a function prototype we use + * the PNG_EXPORTA() macro instead. + * + * PNG_EXPORTA(ordinal, type, name, (args), attributes); + * + * ordinal, type, name, and args: same as in PNG_EXPORT(). + * attributes: function attributes + */ + +/* Returns the version number of the library */ +PNG_EXPORT(1, png_uint_32, png_access_version_number, (void)); + +/* Tell lib we have already handled the first magic bytes. + * Handling more than 8 bytes from the beginning of the file is an error. + */ +PNG_EXPORT(2, void, png_set_sig_bytes, (png_structp png_ptr, int num_bytes)); + +/* Check sig[start] through sig[start + num_to_check - 1] to see if it's a + * PNG file. Returns zero if the supplied bytes match the 8-byte PNG + * signature, and non-zero otherwise. Having num_to_check == 0 or + * start > 7 will always fail (ie return non-zero). + */ +PNG_EXPORT(3, int, png_sig_cmp, (png_const_bytep sig, png_size_t start, + png_size_t num_to_check)); + +/* Simple signature checking function. This is the same as calling + * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n). + */ +#define png_check_sig(sig, n) !png_sig_cmp((sig), 0, (n)) + +/* Allocate and initialize png_ptr struct for reading, and any other memory. */ +PNG_EXPORTA(4, png_structp, png_create_read_struct, + (png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn), + PNG_ALLOCATED); + +/* Allocate and initialize png_ptr struct for writing, and any other memory */ +PNG_EXPORTA(5, png_structp, png_create_write_struct, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn), + PNG_ALLOCATED); + +PNG_EXPORT(6, png_size_t, png_get_compression_buffer_size, + (png_const_structp png_ptr)); + +PNG_EXPORT(7, void, png_set_compression_buffer_size, (png_structp png_ptr, + png_size_t size)); + +/* Moved from pngconf.h in 1.4.0 and modified to ensure setjmp/longjmp + * match up. + */ +#ifdef PNG_SETJMP_SUPPORTED +/* This function returns the jmp_buf built in to *png_ptr. It must be + * supplied with an appropriate 'longjmp' function to use on that jmp_buf + * unless the default error function is overridden in which case NULL is + * acceptable. The size of the jmp_buf is checked against the actual size + * allocated by the library - the call will return NULL on a mismatch + * indicating an ABI mismatch. + */ +PNG_EXPORT(8, jmp_buf*, png_set_longjmp_fn, (png_structp png_ptr, + png_longjmp_ptr longjmp_fn, size_t jmp_buf_size)); +# define png_jmpbuf(png_ptr) \ + (*png_set_longjmp_fn((png_ptr), longjmp, sizeof (jmp_buf))) +#else +# define png_jmpbuf(png_ptr) \ + (LIBPNG_WAS_COMPILED_WITH__PNG_NO_SETJMP) +#endif +/* This function should be used by libpng applications in place of + * longjmp(png_ptr->jmpbuf, val). If longjmp_fn() has been set, it + * will use it; otherwise it will call PNG_ABORT(). This function was + * added in libpng-1.5.0. + */ +PNG_EXPORTA(9, void, png_longjmp, (png_structp png_ptr, int val), + PNG_NORETURN); + +#ifdef PNG_READ_SUPPORTED +/* Reset the compression stream */ +PNG_EXPORT(10, int, png_reset_zstream, (png_structp png_ptr)); +#endif + +/* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */ +#ifdef PNG_USER_MEM_SUPPORTED +PNG_EXPORTA(11, png_structp, png_create_read_struct_2, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn, + png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), + PNG_ALLOCATED); +PNG_EXPORTA(12, png_structp, png_create_write_struct_2, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn, + png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), + PNG_ALLOCATED); +#endif + +/* Write the PNG file signature. */ +PNG_EXPORT(13, void, png_write_sig, (png_structp png_ptr)); + +/* Write a PNG chunk - size, type, (optional) data, CRC. */ +PNG_EXPORT(14, void, png_write_chunk, (png_structp png_ptr, png_const_bytep + chunk_name, png_const_bytep data, png_size_t length)); + +/* Write the start of a PNG chunk - length and chunk name. */ +PNG_EXPORT(15, void, png_write_chunk_start, (png_structp png_ptr, + png_const_bytep chunk_name, png_uint_32 length)); + +/* Write the data of a PNG chunk started with png_write_chunk_start(). */ +PNG_EXPORT(16, void, png_write_chunk_data, (png_structp png_ptr, + png_const_bytep data, png_size_t length)); + +/* Finish a chunk started with png_write_chunk_start() (includes CRC). */ +PNG_EXPORT(17, void, png_write_chunk_end, (png_structp png_ptr)); + +/* Allocate and initialize the info structure */ +PNG_EXPORTA(18, png_infop, png_create_info_struct, (png_structp png_ptr), + PNG_ALLOCATED); + +PNG_EXPORT(19, void, png_info_init_3, (png_infopp info_ptr, + png_size_t png_info_struct_size)); + +/* Writes all the PNG information before the image. */ +PNG_EXPORT(20, void, png_write_info_before_PLTE, + (png_structp png_ptr, png_infop info_ptr)); +PNG_EXPORT(21, void, png_write_info, + (png_structp png_ptr, png_infop info_ptr)); + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read the information before the actual image data. */ +PNG_EXPORT(22, void, png_read_info, + (png_structp png_ptr, png_infop info_ptr)); +#endif + +#ifdef PNG_TIME_RFC1123_SUPPORTED +PNG_EXPORT(23, png_const_charp, png_convert_to_rfc1123, + (png_structp png_ptr, + png_const_timep ptime)); +#endif + +#ifdef PNG_CONVERT_tIME_SUPPORTED +/* Convert from a struct tm to png_time */ +PNG_EXPORT(24, void, png_convert_from_struct_tm, (png_timep ptime, + PNG_CONST struct tm FAR * ttime)); + +/* Convert from time_t to png_time. Uses gmtime() */ +PNG_EXPORT(25, void, png_convert_from_time_t, + (png_timep ptime, time_t ttime)); +#endif /* PNG_CONVERT_tIME_SUPPORTED */ + +#ifdef PNG_READ_EXPAND_SUPPORTED +/* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */ +PNG_EXPORT(26, void, png_set_expand, (png_structp png_ptr)); +PNG_EXPORT(27, void, png_set_expand_gray_1_2_4_to_8, (png_structp png_ptr)); +PNG_EXPORT(28, void, png_set_palette_to_rgb, (png_structp png_ptr)); +PNG_EXPORT(29, void, png_set_tRNS_to_alpha, (png_structp png_ptr)); +#endif + +#ifdef PNG_READ_EXPAND_16_SUPPORTED +/* Expand to 16 bit channels, forces conversion of palette to RGB and expansion + * of a tRNS chunk if present. + */ +PNG_EXPORT(221, void, png_set_expand_16, (png_structp png_ptr)); +#endif + +#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) +/* Use blue, green, red order for pixels. */ +PNG_EXPORT(30, void, png_set_bgr, (png_structp png_ptr)); +#endif + +#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED +/* Expand the grayscale to 24-bit RGB if necessary. */ +PNG_EXPORT(31, void, png_set_gray_to_rgb, (png_structp png_ptr)); +#endif + +#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED +/* Reduce RGB to grayscale. */ +PNG_FP_EXPORT(32, void, png_set_rgb_to_gray, (png_structp png_ptr, + int error_action, double red, double green)); +PNG_FIXED_EXPORT(33, void, png_set_rgb_to_gray_fixed, (png_structp png_ptr, + int error_action, png_fixed_point red, png_fixed_point green)); + +PNG_EXPORT(34, png_byte, png_get_rgb_to_gray_status, (png_const_structp + png_ptr)); +#endif + +PNG_EXPORT(35, void, png_build_grayscale_palette, (int bit_depth, + png_colorp palette)); + +#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED +PNG_EXPORT(36, void, png_set_strip_alpha, (png_structp png_ptr)); +#endif + +#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \ + defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) +PNG_EXPORT(37, void, png_set_swap_alpha, (png_structp png_ptr)); +#endif + +#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \ + defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) +PNG_EXPORT(38, void, png_set_invert_alpha, (png_structp png_ptr)); +#endif + +#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) +/* Add a filler byte to 8-bit Gray or 24-bit RGB images. */ +PNG_EXPORT(39, void, png_set_filler, (png_structp png_ptr, png_uint_32 filler, + int flags)); +/* The values of the PNG_FILLER_ defines should NOT be changed */ +# define PNG_FILLER_BEFORE 0 +# define PNG_FILLER_AFTER 1 +/* Add an alpha byte to 8-bit Gray or 24-bit RGB images. */ +PNG_EXPORT(40, void, png_set_add_alpha, + (png_structp png_ptr, png_uint_32 filler, + int flags)); +#endif /* PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED */ + +#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) +/* Swap bytes in 16-bit depth files. */ +PNG_EXPORT(41, void, png_set_swap, (png_structp png_ptr)); +#endif + +#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) +/* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */ +PNG_EXPORT(42, void, png_set_packing, (png_structp png_ptr)); +#endif + +#if defined(PNG_READ_PACKSWAP_SUPPORTED) || \ + defined(PNG_WRITE_PACKSWAP_SUPPORTED) +/* Swap packing order of pixels in bytes. */ +PNG_EXPORT(43, void, png_set_packswap, (png_structp png_ptr)); +#endif + +#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) +/* Converts files to legal bit depths. */ +PNG_EXPORT(44, void, png_set_shift, (png_structp png_ptr, png_const_color_8p + true_bits)); +#endif + +#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ + defined(PNG_WRITE_INTERLACING_SUPPORTED) +/* Have the code handle the interlacing. Returns the number of passes. + * MUST be called before png_read_update_info or png_start_read_image, + * otherwise it will not have the desired effect. Note that it is still + * necessary to call png_read_row or png_read_rows png_get_image_height + * times for each pass. +*/ +PNG_EXPORT(45, int, png_set_interlace_handling, (png_structp png_ptr)); +#endif + +#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) +/* Invert monochrome files */ +PNG_EXPORT(46, void, png_set_invert_mono, (png_structp png_ptr)); +#endif + +#ifdef PNG_READ_BACKGROUND_SUPPORTED +/* Handle alpha and tRNS by replacing with a background color. */ +PNG_FP_EXPORT(47, void, png_set_background, (png_structp png_ptr, + png_const_color_16p background_color, int background_gamma_code, + int need_expand, double background_gamma)); +PNG_FIXED_EXPORT(215, void, png_set_background_fixed, (png_structp png_ptr, + png_const_color_16p background_color, int background_gamma_code, + int need_expand, png_fixed_point background_gamma)); +#endif +#ifdef PNG_READ_BACKGROUND_SUPPORTED +# define PNG_BACKGROUND_GAMMA_UNKNOWN 0 +# define PNG_BACKGROUND_GAMMA_SCREEN 1 +# define PNG_BACKGROUND_GAMMA_FILE 2 +# define PNG_BACKGROUND_GAMMA_UNIQUE 3 +#endif + +#ifdef PNG_READ_16_TO_8_SUPPORTED +/* Strip the second byte of information from a 16-bit depth file. */ +PNG_EXPORT(48, void, png_set_strip_16, (png_structp png_ptr)); +#endif + +#ifdef PNG_READ_QUANTIZE_SUPPORTED +/* Turn on quantizing, and reduce the palette to the number of colors + * available. + */ +PNG_EXPORT(49, void, png_set_quantize, + (png_structp png_ptr, png_colorp palette, + int num_palette, int maximum_colors, png_const_uint_16p histogram, + int full_quantize)); +#endif + +#ifdef PNG_READ_GAMMA_SUPPORTED +/* The threshold on gamma processing is configurable but hard-wired into the + * library. The following is the floating point variant. + */ +#define PNG_GAMMA_THRESHOLD (PNG_GAMMA_THRESHOLD_FIXED*.00001) + +/* Handle gamma correction. Screen_gamma=(display_exponent) */ +PNG_FP_EXPORT(50, void, png_set_gamma, + (png_structp png_ptr, double screen_gamma, + double default_file_gamma)); +PNG_FIXED_EXPORT(208, void, png_set_gamma_fixed, (png_structp png_ptr, + png_fixed_point screen_gamma, png_fixed_point default_file_gamma)); +#endif + +#ifdef PNG_WRITE_FLUSH_SUPPORTED +/* Set how many lines between output flushes - 0 for no flushing */ +PNG_EXPORT(51, void, png_set_flush, (png_structp png_ptr, int nrows)); +/* Flush the current PNG output buffer */ +PNG_EXPORT(52, void, png_write_flush, (png_structp png_ptr)); +#endif + +/* Optional update palette with requested transformations */ +PNG_EXPORT(53, void, png_start_read_image, (png_structp png_ptr)); + +/* Optional call to update the users info structure */ +PNG_EXPORT(54, void, png_read_update_info, + (png_structp png_ptr, png_infop info_ptr)); + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read one or more rows of image data. */ +PNG_EXPORT(55, void, png_read_rows, (png_structp png_ptr, png_bytepp row, + png_bytepp display_row, png_uint_32 num_rows)); +#endif + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read a row of data. */ +PNG_EXPORT(56, void, png_read_row, (png_structp png_ptr, png_bytep row, + png_bytep display_row)); +#endif + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read the whole image into memory at once. */ +PNG_EXPORT(57, void, png_read_image, (png_structp png_ptr, png_bytepp image)); +#endif + +/* Write a row of image data */ +PNG_EXPORT(58, void, png_write_row, + (png_structp png_ptr, png_const_bytep row)); + +/* Write a few rows of image data: (*row) is not written; however, the type + * is declared as writeable to maintain compatibility with previous versions + * of libpng and to allow the 'display_row' array from read_rows to be passed + * unchanged to write_rows. + */ +PNG_EXPORT(59, void, png_write_rows, (png_structp png_ptr, png_bytepp row, + png_uint_32 num_rows)); + +/* Write the image data */ +PNG_EXPORT(60, void, png_write_image, + (png_structp png_ptr, png_bytepp image)); + +/* Write the end of the PNG file. */ +PNG_EXPORT(61, void, png_write_end, + (png_structp png_ptr, png_infop info_ptr)); + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read the end of the PNG file. */ +PNG_EXPORT(62, void, png_read_end, (png_structp png_ptr, png_infop info_ptr)); +#endif + +/* Free any memory associated with the png_info_struct */ +PNG_EXPORT(63, void, png_destroy_info_struct, (png_structp png_ptr, + png_infopp info_ptr_ptr)); + +/* Free any memory associated with the png_struct and the png_info_structs */ +PNG_EXPORT(64, void, png_destroy_read_struct, (png_structpp png_ptr_ptr, + png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr)); + +/* Free any memory associated with the png_struct and the png_info_structs */ +PNG_EXPORT(65, void, png_destroy_write_struct, (png_structpp png_ptr_ptr, + png_infopp info_ptr_ptr)); + +/* Set the libpng method of handling chunk CRC errors */ +PNG_EXPORT(66, void, png_set_crc_action, + (png_structp png_ptr, int crit_action, int ancil_action)); + +/* Values for png_set_crc_action() say how to handle CRC errors in + * ancillary and critical chunks, and whether to use the data contained + * therein. Note that it is impossible to "discard" data in a critical + * chunk. For versions prior to 0.90, the action was always error/quit, + * whereas in version 0.90 and later, the action for CRC errors in ancillary + * chunks is warn/discard. These values should NOT be changed. + * + * value action:critical action:ancillary + */ +#define PNG_CRC_DEFAULT 0 /* error/quit warn/discard data */ +#define PNG_CRC_ERROR_QUIT 1 /* error/quit error/quit */ +#define PNG_CRC_WARN_DISCARD 2 /* (INVALID) warn/discard data */ +#define PNG_CRC_WARN_USE 3 /* warn/use data warn/use data */ +#define PNG_CRC_QUIET_USE 4 /* quiet/use data quiet/use data */ +#define PNG_CRC_NO_CHANGE 5 /* use current value use current value */ + +/* These functions give the user control over the scan-line filtering in + * libpng and the compression methods used by zlib. These functions are + * mainly useful for testing, as the defaults should work with most users. + * Those users who are tight on memory or want faster performance at the + * expense of compression can modify them. See the compression library + * header file (zlib.h) for an explination of the compression functions. + */ + +/* Set the filtering method(s) used by libpng. Currently, the only valid + * value for "method" is 0. + */ +PNG_EXPORT(67, void, png_set_filter, + (png_structp png_ptr, int method, int filters)); + +/* Flags for png_set_filter() to say which filters to use. The flags + * are chosen so that they don't conflict with real filter types + * below, in case they are supplied instead of the #defined constants. + * These values should NOT be changed. + */ +#define PNG_NO_FILTERS 0x00 +#define PNG_FILTER_NONE 0x08 +#define PNG_FILTER_SUB 0x10 +#define PNG_FILTER_UP 0x20 +#define PNG_FILTER_AVG 0x40 +#define PNG_FILTER_PAETH 0x80 +#define PNG_ALL_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP | \ + PNG_FILTER_AVG | PNG_FILTER_PAETH) + +/* Filter values (not flags) - used in pngwrite.c, pngwutil.c for now. + * These defines should NOT be changed. + */ +#define PNG_FILTER_VALUE_NONE 0 +#define PNG_FILTER_VALUE_SUB 1 +#define PNG_FILTER_VALUE_UP 2 +#define PNG_FILTER_VALUE_AVG 3 +#define PNG_FILTER_VALUE_PAETH 4 +#define PNG_FILTER_VALUE_LAST 5 + +#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED /* EXPERIMENTAL */ +/* The "heuristic_method" is given by one of the PNG_FILTER_HEURISTIC_ + * defines, either the default (minimum-sum-of-absolute-differences), or + * the experimental method (weighted-minimum-sum-of-absolute-differences). + * + * Weights are factors >= 1.0, indicating how important it is to keep the + * filter type consistent between rows. Larger numbers mean the current + * filter is that many times as likely to be the same as the "num_weights" + * previous filters. This is cumulative for each previous row with a weight. + * There needs to be "num_weights" values in "filter_weights", or it can be + * NULL if the weights aren't being specified. Weights have no influence on + * the selection of the first row filter. Well chosen weights can (in theory) + * improve the compression for a given image. + * + * Costs are factors >= 1.0 indicating the relative decoding costs of a + * filter type. Higher costs indicate more decoding expense, and are + * therefore less likely to be selected over a filter with lower computational + * costs. There needs to be a value in "filter_costs" for each valid filter + * type (given by PNG_FILTER_VALUE_LAST), or it can be NULL if you aren't + * setting the costs. Costs try to improve the speed of decompression without + * unduly increasing the compressed image size. + * + * A negative weight or cost indicates the default value is to be used, and + * values in the range [0.0, 1.0) indicate the value is to remain unchanged. + * The default values for both weights and costs are currently 1.0, but may + * change if good general weighting/cost heuristics can be found. If both + * the weights and costs are set to 1.0, this degenerates the WEIGHTED method + * to the UNWEIGHTED method, but with added encoding time/computation. + */ +PNG_FP_EXPORT(68, void, png_set_filter_heuristics, (png_structp png_ptr, + int heuristic_method, int num_weights, png_const_doublep filter_weights, + png_const_doublep filter_costs)); +PNG_FIXED_EXPORT(209, void, png_set_filter_heuristics_fixed, + (png_structp png_ptr, + int heuristic_method, int num_weights, png_const_fixed_point_p + filter_weights, png_const_fixed_point_p filter_costs)); +#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */ + +/* Heuristic used for row filter selection. These defines should NOT be + * changed. + */ +#define PNG_FILTER_HEURISTIC_DEFAULT 0 /* Currently "UNWEIGHTED" */ +#define PNG_FILTER_HEURISTIC_UNWEIGHTED 1 /* Used by libpng < 0.95 */ +#define PNG_FILTER_HEURISTIC_WEIGHTED 2 /* Experimental feature */ +#define PNG_FILTER_HEURISTIC_LAST 3 /* Not a valid value */ + +/* Set the library compression level. Currently, valid values range from + * 0 - 9, corresponding directly to the zlib compression levels 0 - 9 + * (0 - no compression, 9 - "maximal" compression). Note that tests have + * shown that zlib compression levels 3-6 usually perform as well as level 9 + * for PNG images, and do considerably fewer caclulations. In the future, + * these values may not correspond directly to the zlib compression levels. + */ +PNG_EXPORT(69, void, png_set_compression_level, + (png_structp png_ptr, int level)); + +PNG_EXPORT(70, void, png_set_compression_mem_level, (png_structp png_ptr, + int mem_level)); + +PNG_EXPORT(71, void, png_set_compression_strategy, (png_structp png_ptr, + int strategy)); + +PNG_EXPORT(72, void, png_set_compression_window_bits, (png_structp png_ptr, + int window_bits)); + +PNG_EXPORT(73, void, png_set_compression_method, (png_structp png_ptr, + int method)); + +/* These next functions are called for input/output, memory, and error + * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c, + * and call standard C I/O routines such as fread(), fwrite(), and + * fprintf(). These functions can be made to use other I/O routines + * at run time for those applications that need to handle I/O in a + * different manner by calling png_set_???_fn(). See libpng-manual.txt for + * more information. + */ + +#ifdef PNG_STDIO_SUPPORTED +/* Initialize the input/output for the PNG file to the default functions. */ +PNG_EXPORT(74, void, png_init_io, (png_structp png_ptr, png_FILE_p fp)); +#endif + +/* Replace the (error and abort), and warning functions with user + * supplied functions. If no messages are to be printed you must still + * write and use replacement functions. The replacement error_fn should + * still do a longjmp to the last setjmp location if you are using this + * method of error handling. If error_fn or warning_fn is NULL, the + * default function will be used. + */ + +PNG_EXPORT(75, void, png_set_error_fn, + (png_structp png_ptr, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warning_fn)); + +/* Return the user pointer associated with the error functions */ +PNG_EXPORT(76, png_voidp, png_get_error_ptr, (png_const_structp png_ptr)); + +/* Replace the default data output functions with a user supplied one(s). + * If buffered output is not used, then output_flush_fn can be set to NULL. + * If PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time + * output_flush_fn will be ignored (and thus can be NULL). + * It is probably a mistake to use NULL for output_flush_fn if + * write_data_fn is not also NULL unless you have built libpng with + * PNG_WRITE_FLUSH_SUPPORTED undefined, because in this case libpng's + * default flush function, which uses the standard *FILE structure, will + * be used. + */ +PNG_EXPORT(77, void, png_set_write_fn, (png_structp png_ptr, png_voidp io_ptr, + png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)); + +/* Replace the default data input function with a user supplied one. */ +PNG_EXPORT(78, void, png_set_read_fn, (png_structp png_ptr, png_voidp io_ptr, + png_rw_ptr read_data_fn)); + +/* Return the user pointer associated with the I/O functions */ +PNG_EXPORT(79, png_voidp, png_get_io_ptr, (png_structp png_ptr)); + +PNG_EXPORT(80, void, png_set_read_status_fn, (png_structp png_ptr, + png_read_status_ptr read_row_fn)); + +PNG_EXPORT(81, void, png_set_write_status_fn, (png_structp png_ptr, + png_write_status_ptr write_row_fn)); + +#ifdef PNG_USER_MEM_SUPPORTED +/* Replace the default memory allocation functions with user supplied one(s). */ +PNG_EXPORT(82, void, png_set_mem_fn, (png_structp png_ptr, png_voidp mem_ptr, + png_malloc_ptr malloc_fn, png_free_ptr free_fn)); +/* Return the user pointer associated with the memory functions */ +PNG_EXPORT(83, png_voidp, png_get_mem_ptr, (png_const_structp png_ptr)); +#endif + +#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED +PNG_EXPORT(84, void, png_set_read_user_transform_fn, (png_structp png_ptr, + png_user_transform_ptr read_user_transform_fn)); +#endif + +#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED +PNG_EXPORT(85, void, png_set_write_user_transform_fn, (png_structp png_ptr, + png_user_transform_ptr write_user_transform_fn)); +#endif + +#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED +PNG_EXPORT(86, void, png_set_user_transform_info, (png_structp png_ptr, + png_voidp user_transform_ptr, int user_transform_depth, + int user_transform_channels)); +/* Return the user pointer associated with the user transform functions */ +PNG_EXPORT(87, png_voidp, png_get_user_transform_ptr, + (png_const_structp png_ptr)); +#endif + +#ifdef PNG_USER_TRANSFORM_INFO_SUPPORTED +/* Return information about the row currently being processed. Note that these + * APIs do not fail but will return unexpected results if called outside a user + * transform callback. Also note that when transforming an interlaced image the + * row number is the row number within the sub-image of the interlace pass, so + * the value will increase to the height of the sub-image (not the full image) + * then reset to 0 for the next pass. + * + * Use PNG_ROW_FROM_PASS_ROW(row, pass) and PNG_COL_FROM_PASS_COL(col, pass) to + * find the output pixel (x,y) given an interlaced sub-image pixel + * (row,col,pass). (See below for these macros.) + */ +PNG_EXPORT(217, png_uint_32, png_get_current_row_number, (png_const_structp)); +PNG_EXPORT(218, png_byte, png_get_current_pass_number, (png_const_structp)); +#endif + +#ifdef PNG_USER_CHUNKS_SUPPORTED +PNG_EXPORT(88, void, png_set_read_user_chunk_fn, (png_structp png_ptr, + png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn)); +PNG_EXPORT(89, png_voidp, png_get_user_chunk_ptr, (png_const_structp png_ptr)); +#endif + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +/* Sets the function callbacks for the push reader, and a pointer to a + * user-defined structure available to the callback functions. + */ +PNG_EXPORT(90, void, png_set_progressive_read_fn, (png_structp png_ptr, + png_voidp progressive_ptr, png_progressive_info_ptr info_fn, + png_progressive_row_ptr row_fn, png_progressive_end_ptr end_fn)); + +/* Returns the user pointer associated with the push read functions */ +PNG_EXPORT(91, png_voidp, png_get_progressive_ptr, (png_const_structp png_ptr)); + +/* Function to be called when data becomes available */ +PNG_EXPORT(92, void, png_process_data, + (png_structp png_ptr, png_infop info_ptr, + png_bytep buffer, png_size_t buffer_size)); + +/* A function which may be called *only* within png_process_data to stop the + * processing of any more data. The function returns the number of bytes + * remaining, excluding any that libpng has cached internally. A subsequent + * call to png_process_data must supply these bytes again. If the argument + * 'save' is set to true the routine will first save all the pending data and + * will always return 0. + */ +PNG_EXPORT(219, png_size_t, png_process_data_pause, (png_structp, int save)); + +/* A function which may be called *only* outside (after) a call to + * png_process_data. It returns the number of bytes of data to skip in the + * input. Normally it will return 0, but if it returns a non-zero value the + * application must skip than number of bytes of input data and pass the + * following data to the next call to png_process_data. + */ +PNG_EXPORT(220, png_uint_32, png_process_data_skip, (png_structp)); + +/* Function that combines rows. 'new_row' is a flag that should come from + * the callback and be non-NULL if anything needs to be done; the library + * stores its own version of the new data internally and ignores the passed + * in value. + */ +PNG_EXPORT(93, void, png_progressive_combine_row, (png_structp png_ptr, + png_bytep old_row, png_const_bytep new_row)); +#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ + +PNG_EXPORTA(94, png_voidp, png_malloc, + (png_structp png_ptr, png_alloc_size_t size), + PNG_ALLOCATED); +/* Added at libpng version 1.4.0 */ +PNG_EXPORTA(95, png_voidp, png_calloc, + (png_structp png_ptr, png_alloc_size_t size), + PNG_ALLOCATED); + +/* Added at libpng version 1.2.4 */ +PNG_EXPORTA(96, png_voidp, png_malloc_warn, (png_structp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED); + +/* Frees a pointer allocated by png_malloc() */ +PNG_EXPORT(97, void, png_free, (png_structp png_ptr, png_voidp ptr)); + +/* Free data that was allocated internally */ +PNG_EXPORT(98, void, png_free_data, + (png_structp png_ptr, png_infop info_ptr, png_uint_32 free_me, int num)); + +/* Reassign responsibility for freeing existing data, whether allocated + * by libpng or by the application */ +PNG_EXPORT(99, void, png_data_freer, + (png_structp png_ptr, png_infop info_ptr, int freer, png_uint_32 mask)); + +/* Assignments for png_data_freer */ +#define PNG_DESTROY_WILL_FREE_DATA 1 +#define PNG_SET_WILL_FREE_DATA 1 +#define PNG_USER_WILL_FREE_DATA 2 +/* Flags for png_ptr->free_me and info_ptr->free_me */ +#define PNG_FREE_HIST 0x0008 +#define PNG_FREE_ICCP 0x0010 +#define PNG_FREE_SPLT 0x0020 +#define PNG_FREE_ROWS 0x0040 +#define PNG_FREE_PCAL 0x0080 +#define PNG_FREE_SCAL 0x0100 +#define PNG_FREE_UNKN 0x0200 +#define PNG_FREE_LIST 0x0400 +#define PNG_FREE_PLTE 0x1000 +#define PNG_FREE_TRNS 0x2000 +#define PNG_FREE_TEXT 0x4000 +#define PNG_FREE_ALL 0x7fff +#define PNG_FREE_MUL 0x4220 /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */ + +#ifdef PNG_USER_MEM_SUPPORTED +PNG_EXPORTA(100, png_voidp, png_malloc_default, (png_structp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED); +PNG_EXPORT(101, void, png_free_default, (png_structp png_ptr, png_voidp ptr)); +#endif + +#ifdef PNG_ERROR_TEXT_SUPPORTED +/* Fatal error in PNG image of libpng - can't continue */ +PNG_EXPORTA(102, void, png_error, + (png_structp png_ptr, png_const_charp error_message), + PNG_NORETURN); + +/* The same, but the chunk name is prepended to the error string. */ +PNG_EXPORTA(103, void, png_chunk_error, (png_structp png_ptr, + png_const_charp error_message), PNG_NORETURN); + +#else +/* Fatal error in PNG image of libpng - can't continue */ +PNG_EXPORTA(104, void, png_err, (png_structp png_ptr), PNG_NORETURN); +#endif + +/* Non-fatal error in libpng. Can continue, but may have a problem. */ +PNG_EXPORT(105, void, png_warning, (png_structp png_ptr, + png_const_charp warning_message)); + +/* Non-fatal error in libpng, chunk name is prepended to message. */ +PNG_EXPORT(106, void, png_chunk_warning, (png_structp png_ptr, + png_const_charp warning_message)); + +#ifdef PNG_BENIGN_ERRORS_SUPPORTED +/* Benign error in libpng. Can continue, but may have a problem. + * User can choose whether to handle as a fatal error or as a warning. */ +# undef png_benign_error +PNG_EXPORT(107, void, png_benign_error, (png_structp png_ptr, + png_const_charp warning_message)); + +/* Same, chunk name is prepended to message. */ +# undef png_chunk_benign_error +PNG_EXPORT(108, void, png_chunk_benign_error, (png_structp png_ptr, + png_const_charp warning_message)); + +PNG_EXPORT(109, void, png_set_benign_errors, + (png_structp png_ptr, int allowed)); +#else +# ifdef PNG_ALLOW_BENIGN_ERRORS +# define png_benign_error png_warning +# define png_chunk_benign_error png_chunk_warning +# else +# define png_benign_error png_error +# define png_chunk_benign_error png_chunk_error +# endif +#endif + +/* The png_set_ functions are for storing values in the png_info_struct. + * Similarly, the png_get_ calls are used to read values from the + * png_info_struct, either storing the parameters in the passed variables, or + * setting pointers into the png_info_struct where the data is stored. The + * png_get_ functions return a non-zero value if the data was available + * in info_ptr, or return zero and do not change any of the parameters if the + * data was not available. + * + * These functions should be used instead of directly accessing png_info + * to avoid problems with future changes in the size and internal layout of + * png_info_struct. + */ +/* Returns "flag" if chunk data is valid in info_ptr. */ +PNG_EXPORT(110, png_uint_32, png_get_valid, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_uint_32 flag)); + +/* Returns number of bytes needed to hold a transformed row. */ +PNG_EXPORT(111, png_size_t, png_get_rowbytes, (png_const_structp png_ptr, + png_const_infop info_ptr)); + +#ifdef PNG_INFO_IMAGE_SUPPORTED +/* Returns row_pointers, which is an array of pointers to scanlines that was + * returned from png_read_png(). + */ +PNG_EXPORT(112, png_bytepp, png_get_rows, + (png_const_structp png_ptr, png_const_infop info_ptr)); +/* Set row_pointers, which is an array of pointers to scanlines for use + * by png_write_png(). + */ +PNG_EXPORT(113, void, png_set_rows, (png_structp png_ptr, + png_infop info_ptr, png_bytepp row_pointers)); +#endif + +/* Returns number of color channels in image. */ +PNG_EXPORT(114, png_byte, png_get_channels, + (png_const_structp png_ptr, png_const_infop info_ptr)); + +#ifdef PNG_EASY_ACCESS_SUPPORTED +/* Returns image width in pixels. */ +PNG_EXPORT(115, png_uint_32, png_get_image_width, (png_const_structp png_ptr, + png_const_infop info_ptr)); + +/* Returns image height in pixels. */ +PNG_EXPORT(116, png_uint_32, png_get_image_height, (png_const_structp png_ptr, + png_const_infop info_ptr)); + +/* Returns image bit_depth. */ +PNG_EXPORT(117, png_byte, png_get_bit_depth, + (png_const_structp png_ptr, png_const_infop info_ptr)); + +/* Returns image color_type. */ +PNG_EXPORT(118, png_byte, png_get_color_type, (png_const_structp png_ptr, + png_const_infop info_ptr)); + +/* Returns image filter_type. */ +PNG_EXPORT(119, png_byte, png_get_filter_type, (png_const_structp png_ptr, + png_const_infop info_ptr)); + +/* Returns image interlace_type. */ +PNG_EXPORT(120, png_byte, png_get_interlace_type, (png_const_structp png_ptr, + png_const_infop info_ptr)); + +/* Returns image compression_type. */ +PNG_EXPORT(121, png_byte, png_get_compression_type, (png_const_structp png_ptr, + png_const_infop info_ptr)); + +/* Returns image resolution in pixels per meter, from pHYs chunk data. */ +PNG_EXPORT(122, png_uint_32, png_get_pixels_per_meter, + (png_const_structp png_ptr, png_const_infop info_ptr)); +PNG_EXPORT(123, png_uint_32, png_get_x_pixels_per_meter, + (png_const_structp png_ptr, png_const_infop info_ptr)); +PNG_EXPORT(124, png_uint_32, png_get_y_pixels_per_meter, + (png_const_structp png_ptr, png_const_infop info_ptr)); + +/* Returns pixel aspect ratio, computed from pHYs chunk data. */ +PNG_FP_EXPORT(125, float, png_get_pixel_aspect_ratio, + (png_const_structp png_ptr, png_const_infop info_ptr)); +PNG_FIXED_EXPORT(210, png_fixed_point, png_get_pixel_aspect_ratio_fixed, + (png_const_structp png_ptr, png_const_infop info_ptr)); + +/* Returns image x, y offset in pixels or microns, from oFFs chunk data. */ +PNG_EXPORT(126, png_int_32, png_get_x_offset_pixels, + (png_const_structp png_ptr, png_const_infop info_ptr)); +PNG_EXPORT(127, png_int_32, png_get_y_offset_pixels, + (png_const_structp png_ptr, png_const_infop info_ptr)); +PNG_EXPORT(128, png_int_32, png_get_x_offset_microns, + (png_const_structp png_ptr, png_const_infop info_ptr)); +PNG_EXPORT(129, png_int_32, png_get_y_offset_microns, + (png_const_structp png_ptr, png_const_infop info_ptr)); + +#endif /* PNG_EASY_ACCESS_SUPPORTED */ + +/* Returns pointer to signature string read from PNG header */ +PNG_EXPORT(130, png_const_bytep, png_get_signature, + (png_const_structp png_ptr, png_infop info_ptr)); + +#ifdef PNG_bKGD_SUPPORTED +PNG_EXPORT(131, png_uint_32, png_get_bKGD, + (png_const_structp png_ptr, png_infop info_ptr, + png_color_16p *background)); +#endif + +#ifdef PNG_bKGD_SUPPORTED +PNG_EXPORT(132, void, png_set_bKGD, (png_structp png_ptr, png_infop info_ptr, + png_const_color_16p background)); +#endif + +#ifdef PNG_cHRM_SUPPORTED +PNG_FP_EXPORT(133, png_uint_32, png_get_cHRM, (png_const_structp png_ptr, + png_const_infop info_ptr, double *white_x, double *white_y, double *red_x, + double *red_y, double *green_x, double *green_y, double *blue_x, + double *blue_y)); +#ifdef PNG_FIXED_POINT_SUPPORTED /* Otherwise not implemented */ +PNG_FIXED_EXPORT(134, png_uint_32, png_get_cHRM_fixed, + (png_const_structp png_ptr, + png_const_infop info_ptr, png_fixed_point *int_white_x, + png_fixed_point *int_white_y, png_fixed_point *int_red_x, + png_fixed_point *int_red_y, png_fixed_point *int_green_x, + png_fixed_point *int_green_y, png_fixed_point *int_blue_x, + png_fixed_point *int_blue_y)); +#endif +#endif + +#ifdef PNG_cHRM_SUPPORTED +PNG_FP_EXPORT(135, void, png_set_cHRM, + (png_structp png_ptr, png_infop info_ptr, + double white_x, double white_y, double red_x, double red_y, double green_x, + double green_y, double blue_x, double blue_y)); +PNG_FIXED_EXPORT(136, void, png_set_cHRM_fixed, (png_structp png_ptr, + png_infop info_ptr, png_fixed_point int_white_x, + png_fixed_point int_white_y, png_fixed_point int_red_x, + png_fixed_point int_red_y, png_fixed_point int_green_x, + png_fixed_point int_green_y, png_fixed_point int_blue_x, + png_fixed_point int_blue_y)); +#endif + +#ifdef PNG_gAMA_SUPPORTED +PNG_FP_EXPORT(137, png_uint_32, png_get_gAMA, + (png_const_structp png_ptr, png_const_infop info_ptr, + double *file_gamma)); +PNG_FIXED_EXPORT(138, png_uint_32, png_get_gAMA_fixed, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_fixed_point *int_file_gamma)); +#endif + +#ifdef PNG_gAMA_SUPPORTED +PNG_FP_EXPORT(139, void, png_set_gAMA, (png_structp png_ptr, + png_infop info_ptr, double file_gamma)); +PNG_FIXED_EXPORT(140, void, png_set_gAMA_fixed, (png_structp png_ptr, + png_infop info_ptr, png_fixed_point int_file_gamma)); +#endif + +#ifdef PNG_hIST_SUPPORTED +PNG_EXPORT(141, png_uint_32, png_get_hIST, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_uint_16p *hist)); +#endif + +#ifdef PNG_hIST_SUPPORTED +PNG_EXPORT(142, void, png_set_hIST, (png_structp png_ptr, + png_infop info_ptr, png_const_uint_16p hist)); +#endif + +PNG_EXPORT(143, png_uint_32, png_get_IHDR, + (png_structp png_ptr, png_infop info_ptr, + png_uint_32 *width, png_uint_32 *height, int *bit_depth, int *color_type, + int *interlace_method, int *compression_method, int *filter_method)); + +PNG_EXPORT(144, void, png_set_IHDR, + (png_structp png_ptr, png_infop info_ptr, + png_uint_32 width, png_uint_32 height, int bit_depth, int color_type, + int interlace_method, int compression_method, int filter_method)); + +#ifdef PNG_oFFs_SUPPORTED +PNG_EXPORT(145, png_uint_32, png_get_oFFs, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_int_32 *offset_x, png_int_32 *offset_y, int *unit_type)); +#endif + +#ifdef PNG_oFFs_SUPPORTED +PNG_EXPORT(146, void, png_set_oFFs, + (png_structp png_ptr, png_infop info_ptr, + png_int_32 offset_x, png_int_32 offset_y, int unit_type)); +#endif + +#ifdef PNG_pCAL_SUPPORTED +PNG_EXPORT(147, png_uint_32, png_get_pCAL, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_charp *purpose, png_int_32 *X0, png_int_32 *X1, int *type, + int *nparams, + png_charp *units, png_charpp *params)); +#endif + +#ifdef PNG_pCAL_SUPPORTED +PNG_EXPORT(148, void, png_set_pCAL, (png_structp png_ptr, + png_infop info_ptr, + png_const_charp purpose, png_int_32 X0, png_int_32 X1, int type, + int nparams, png_const_charp units, png_charpp params)); +#endif + +#ifdef PNG_pHYs_SUPPORTED +PNG_EXPORT(149, png_uint_32, png_get_pHYs, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)); +#endif + +#ifdef PNG_pHYs_SUPPORTED +PNG_EXPORT(150, void, png_set_pHYs, + (png_structp png_ptr, png_infop info_ptr, + png_uint_32 res_x, png_uint_32 res_y, int unit_type)); +#endif + +PNG_EXPORT(151, png_uint_32, png_get_PLTE, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_colorp *palette, int *num_palette)); + +PNG_EXPORT(152, void, png_set_PLTE, + (png_structp png_ptr, png_infop info_ptr, + png_const_colorp palette, int num_palette)); + +#ifdef PNG_sBIT_SUPPORTED +PNG_EXPORT(153, png_uint_32, png_get_sBIT, + (png_const_structp png_ptr, png_infop info_ptr, + png_color_8p *sig_bit)); +#endif + +#ifdef PNG_sBIT_SUPPORTED +PNG_EXPORT(154, void, png_set_sBIT, + (png_structp png_ptr, png_infop info_ptr, png_const_color_8p sig_bit)); +#endif + +#ifdef PNG_sRGB_SUPPORTED +PNG_EXPORT(155, png_uint_32, png_get_sRGB, (png_const_structp png_ptr, + png_const_infop info_ptr, int *file_srgb_intent)); +#endif + +#ifdef PNG_sRGB_SUPPORTED +PNG_EXPORT(156, void, png_set_sRGB, + (png_structp png_ptr, png_infop info_ptr, int srgb_intent)); +PNG_EXPORT(157, void, png_set_sRGB_gAMA_and_cHRM, (png_structp png_ptr, + png_infop info_ptr, int srgb_intent)); +#endif + +#ifdef PNG_iCCP_SUPPORTED +PNG_EXPORT(158, png_uint_32, png_get_iCCP, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_charpp name, int *compression_type, png_bytepp profile, + png_uint_32 *proflen)); +#endif + +#ifdef PNG_iCCP_SUPPORTED +PNG_EXPORT(159, void, png_set_iCCP, + (png_structp png_ptr, png_infop info_ptr, + png_const_charp name, int compression_type, png_const_bytep profile, + png_uint_32 proflen)); +#endif + +#ifdef PNG_sPLT_SUPPORTED +PNG_EXPORT(160, png_uint_32, png_get_sPLT, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_sPLT_tpp entries)); +#endif + +#ifdef PNG_sPLT_SUPPORTED +PNG_EXPORT(161, void, png_set_sPLT, + (png_structp png_ptr, png_infop info_ptr, + png_const_sPLT_tp entries, int nentries)); +#endif + +#ifdef PNG_TEXT_SUPPORTED +/* png_get_text also returns the number of text chunks in *num_text */ +PNG_EXPORT(162, png_uint_32, png_get_text, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_textp *text_ptr, int *num_text)); +#endif + +/* Note while png_set_text() will accept a structure whose text, + * language, and translated keywords are NULL pointers, the structure + * returned by png_get_text will always contain regular + * zero-terminated C strings. They might be empty strings but + * they will never be NULL pointers. + */ + +#ifdef PNG_TEXT_SUPPORTED +PNG_EXPORT(163, void, png_set_text, + (png_structp png_ptr, png_infop info_ptr, + png_const_textp text_ptr, int num_text)); +#endif + +#ifdef PNG_tIME_SUPPORTED +PNG_EXPORT(164, png_uint_32, png_get_tIME, + (png_const_structp png_ptr, png_infop info_ptr, png_timep *mod_time)); +#endif + +#ifdef PNG_tIME_SUPPORTED +PNG_EXPORT(165, void, png_set_tIME, + (png_structp png_ptr, png_infop info_ptr, png_const_timep mod_time)); +#endif + +#ifdef PNG_tRNS_SUPPORTED +PNG_EXPORT(166, png_uint_32, png_get_tRNS, + (png_const_structp png_ptr, png_infop info_ptr, + png_bytep *trans_alpha, int *num_trans, png_color_16p *trans_color)); +#endif + +#ifdef PNG_tRNS_SUPPORTED +PNG_EXPORT(167, void, png_set_tRNS, + (png_structp png_ptr, png_infop info_ptr, + png_const_bytep trans_alpha, int num_trans, + png_const_color_16p trans_color)); +#endif + +#ifdef PNG_sCAL_SUPPORTED +PNG_FP_EXPORT(168, png_uint_32, png_get_sCAL, + (png_const_structp png_ptr, png_const_infop info_ptr, + int *unit, double *width, double *height)); +#ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED +/* NOTE: this API is currently implemented using floating point arithmetic, + * consequently it can only be used on systems with floating point support. + * In any case the range of values supported by png_fixed_point is small and it + * is highly recommended that png_get_sCAL_s be used instead. + */ +PNG_FIXED_EXPORT(214, png_uint_32, png_get_sCAL_fixed, + (png_structp png_ptr, png_const_infop info_ptr, int *unit, + png_fixed_point *width, + png_fixed_point *height)); +#endif +PNG_EXPORT(169, png_uint_32, png_get_sCAL_s, + (png_const_structp png_ptr, png_const_infop info_ptr, + int *unit, png_charpp swidth, png_charpp sheight)); + +PNG_FP_EXPORT(170, void, png_set_sCAL, + (png_structp png_ptr, png_infop info_ptr, + int unit, double width, double height)); +PNG_FIXED_EXPORT(213, void, png_set_sCAL_fixed, (png_structp png_ptr, + png_infop info_ptr, int unit, png_fixed_point width, + png_fixed_point height)); +PNG_EXPORT(171, void, png_set_sCAL_s, + (png_structp png_ptr, png_infop info_ptr, + int unit, png_const_charp swidth, png_const_charp sheight)); +#endif /* PNG_sCAL_SUPPORTED */ + +#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED +/* Provide a list of chunks and how they are to be handled, if the built-in + handling or default unknown chunk handling is not desired. Any chunks not + listed will be handled in the default manner. The IHDR and IEND chunks + must not be listed. + keep = 0: follow default behaviour + = 1: do not keep + = 2: keep only if safe-to-copy + = 3: keep even if unsafe-to-copy +*/ +PNG_EXPORT(172, void, png_set_keep_unknown_chunks, + (png_structp png_ptr, int keep, + png_const_bytep chunk_list, int num_chunks)); +PNG_EXPORT(173, int, png_handle_as_unknown, (png_structp png_ptr, + png_const_bytep chunk_name)); +#endif +#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED +PNG_EXPORT(174, void, png_set_unknown_chunks, (png_structp png_ptr, + png_infop info_ptr, png_const_unknown_chunkp unknowns, + int num_unknowns)); +PNG_EXPORT(175, void, png_set_unknown_chunk_location, + (png_structp png_ptr, png_infop info_ptr, int chunk, int location)); +PNG_EXPORT(176, int, png_get_unknown_chunks, (png_const_structp png_ptr, + png_const_infop info_ptr, png_unknown_chunkpp entries)); +#endif + +/* Png_free_data() will turn off the "valid" flag for anything it frees. + * If you need to turn it off for a chunk that your application has freed, + * you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK); + */ +PNG_EXPORT(177, void, png_set_invalid, + (png_structp png_ptr, png_infop info_ptr, int mask)); + +#ifdef PNG_INFO_IMAGE_SUPPORTED +/* The "params" pointer is currently not used and is for future expansion. */ +PNG_EXPORT(178, void, png_read_png, (png_structp png_ptr, png_infop info_ptr, + int transforms, png_voidp params)); +PNG_EXPORT(179, void, png_write_png, (png_structp png_ptr, png_infop info_ptr, + int transforms, png_voidp params)); +#endif + +PNG_EXPORT(180, png_const_charp, png_get_copyright, + (png_const_structp png_ptr)); +PNG_EXPORT(181, png_const_charp, png_get_header_ver, + (png_const_structp png_ptr)); +PNG_EXPORT(182, png_const_charp, png_get_header_version, + (png_const_structp png_ptr)); +PNG_EXPORT(183, png_const_charp, png_get_libpng_ver, + (png_const_structp png_ptr)); + +#ifdef PNG_MNG_FEATURES_SUPPORTED +PNG_EXPORT(184, png_uint_32, png_permit_mng_features, (png_structp png_ptr, + png_uint_32 mng_features_permitted)); +#endif + +/* For use in png_set_keep_unknown, added to version 1.2.6 */ +#define PNG_HANDLE_CHUNK_AS_DEFAULT 0 +#define PNG_HANDLE_CHUNK_NEVER 1 +#define PNG_HANDLE_CHUNK_IF_SAFE 2 +#define PNG_HANDLE_CHUNK_ALWAYS 3 + +/* Strip the prepended error numbers ("#nnn ") from error and warning + * messages before passing them to the error or warning handler. + */ +#ifdef PNG_ERROR_NUMBERS_SUPPORTED +PNG_EXPORT(185, void, png_set_strip_error_numbers, + (png_structp png_ptr, + png_uint_32 strip_mode)); +#endif + +/* Added in libpng-1.2.6 */ +#ifdef PNG_SET_USER_LIMITS_SUPPORTED +PNG_EXPORT(186, void, png_set_user_limits, (png_structp png_ptr, + png_uint_32 user_width_max, png_uint_32 user_height_max)); +PNG_EXPORT(187, png_uint_32, png_get_user_width_max, + (png_const_structp png_ptr)); +PNG_EXPORT(188, png_uint_32, png_get_user_height_max, + (png_const_structp png_ptr)); +/* Added in libpng-1.4.0 */ +PNG_EXPORT(189, void, png_set_chunk_cache_max, (png_structp png_ptr, + png_uint_32 user_chunk_cache_max)); +PNG_EXPORT(190, png_uint_32, png_get_chunk_cache_max, + (png_const_structp png_ptr)); +/* Added in libpng-1.4.1 */ +PNG_EXPORT(191, void, png_set_chunk_malloc_max, (png_structp png_ptr, + png_alloc_size_t user_chunk_cache_max)); +PNG_EXPORT(192, png_alloc_size_t, png_get_chunk_malloc_max, + (png_const_structp png_ptr)); +#endif + +#if defined(PNG_INCH_CONVERSIONS_SUPPORTED) +PNG_EXPORT(193, png_uint_32, png_get_pixels_per_inch, + (png_const_structp png_ptr, png_const_infop info_ptr)); + +PNG_EXPORT(194, png_uint_32, png_get_x_pixels_per_inch, + (png_const_structp png_ptr, png_const_infop info_ptr)); + +PNG_EXPORT(195, png_uint_32, png_get_y_pixels_per_inch, + (png_const_structp png_ptr, png_const_infop info_ptr)); + +PNG_FP_EXPORT(196, float, png_get_x_offset_inches, + (png_const_structp png_ptr, png_const_infop info_ptr)); +#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */ +PNG_FIXED_EXPORT(211, png_fixed_point, png_get_x_offset_inches_fixed, + (png_structp png_ptr, png_const_infop info_ptr)); +#endif + +PNG_FP_EXPORT(197, float, png_get_y_offset_inches, (png_const_structp png_ptr, + png_const_infop info_ptr)); +#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */ +PNG_FIXED_EXPORT(212, png_fixed_point, png_get_y_offset_inches_fixed, + (png_structp png_ptr, png_const_infop info_ptr)); +#endif + +# ifdef PNG_pHYs_SUPPORTED +PNG_EXPORT(198, png_uint_32, png_get_pHYs_dpi, (png_const_structp png_ptr, + png_const_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, + int *unit_type)); +# endif /* PNG_pHYs_SUPPORTED */ +#endif /* PNG_INCH_CONVERSIONS_SUPPORTED */ + +/* Added in libpng-1.4.0 */ +#ifdef PNG_IO_STATE_SUPPORTED +PNG_EXPORT(199, png_uint_32, png_get_io_state, (png_structp png_ptr)); + +PNG_EXPORTA(200, png_const_bytep, png_get_io_chunk_name, + (png_structp png_ptr), PNG_DEPRECATED); +PNG_EXPORT(216, png_uint_32, png_get_io_chunk_type, + (png_const_structp png_ptr)); + +/* The flags returned by png_get_io_state() are the following: */ +# define PNG_IO_NONE 0x0000 /* no I/O at this moment */ +# define PNG_IO_READING 0x0001 /* currently reading */ +# define PNG_IO_WRITING 0x0002 /* currently writing */ +# define PNG_IO_SIGNATURE 0x0010 /* currently at the file signature */ +# define PNG_IO_CHUNK_HDR 0x0020 /* currently at the chunk header */ +# define PNG_IO_CHUNK_DATA 0x0040 /* currently at the chunk data */ +# define PNG_IO_CHUNK_CRC 0x0080 /* currently at the chunk crc */ +# define PNG_IO_MASK_OP 0x000f /* current operation: reading/writing */ +# define PNG_IO_MASK_LOC 0x00f0 /* current location: sig/hdr/data/crc */ +#endif /* ?PNG_IO_STATE_SUPPORTED */ + +/* Interlace support. The following macros are always defined so that if + * libpng interlace handling is turned off the macros may be used to handle + * interlaced images within the application. + */ +#define PNG_INTERLACE_ADAM7_PASSES 7 + +/* Two macros to return the first row and first column of the original, + * full, image which appears in a given pass. 'pass' is in the range 0 + * to 6 and the result is in the range 0 to 7. + */ +#define PNG_PASS_START_ROW(pass) (((1U&~(pass))<<(3-((pass)>>1)))&7) +#define PNG_PASS_START_COL(pass) (((1U& (pass))<<(3-(((pass)+1)>>1)))&7) + +/* Two macros to help evaluate the number of rows or columns in each + * pass. This is expressed as a shift - effectively log2 of the number or + * rows or columns in each 8x8 tile of the original image. + */ +#define PNG_PASS_ROW_SHIFT(pass) ((pass)>2?(8-(pass))>>1:3) +#define PNG_PASS_COL_SHIFT(pass) ((pass)>1?(7-(pass))>>1:3) + +/* Hence two macros to determine the number of rows or columns in a given + * pass of an image given its height or width. In fact these macros may + * return non-zero even though the sub-image is empty, because the other + * dimension may be empty for a small image. + */ +#define PNG_PASS_ROWS(height, pass) (((height)+(((1<>PNG_PASS_ROW_SHIFT(pass)) +#define PNG_PASS_COLS(width, pass) (((width)+(((1<>PNG_PASS_COL_SHIFT(pass)) + +/* For the reader row callbacks (both progressive and sequential) it is + * necessary to find the row in the output image given a row in an interlaced + * image, so two more macros: + */ +#define PNG_ROW_FROM_PASS_ROW(yIn, pass) \ + (((yIn)<>(((7-(off))-(pass))<<2)) & 0xFU) | \ + ((0x01145AF0U>>(((7-(off))-(pass))<<2)) & 0xF0U)) + +#define PNG_ROW_IN_INTERLACE_PASS(y, pass) \ + ((PNG_PASS_MASK(pass,0) >> ((y)&7)) & 1) +#define PNG_COL_IN_INTERLACE_PASS(x, pass) \ + ((PNG_PASS_MASK(pass,1) >> ((x)&7)) & 1) + +#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED +/* With these routines we avoid an integer divide, which will be slower on + * most machines. However, it does take more operations than the corresponding + * divide method, so it may be slower on a few RISC systems. There are two + * shifts (by 8 or 16 bits) and an addition, versus a single integer divide. + * + * Note that the rounding factors are NOT supposed to be the same! 128 and + * 32768 are correct for the NODIV code; 127 and 32767 are correct for the + * standard method. + * + * [Optimized code by Greg Roelofs and Mark Adler...blame us for bugs. :-) ] + */ + + /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */ + +# define png_composite(composite, fg, alpha, bg) \ + { png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) \ + * (png_uint_16)(alpha) \ + + (png_uint_16)(bg)*(png_uint_16)(255 \ + - (png_uint_16)(alpha)) + (png_uint_16)128); \ + (composite) = (png_byte)((temp + (temp >> 8)) >> 8); } + +# define png_composite_16(composite, fg, alpha, bg) \ + { png_uint_32 temp = (png_uint_32)((png_uint_32)(fg) \ + * (png_uint_32)(alpha) \ + + (png_uint_32)(bg)*(png_uint_32)(65535L \ + - (png_uint_32)(alpha)) + (png_uint_32)32768L); \ + (composite) = (png_uint_16)((temp + (temp >> 16)) >> 16); } + +#else /* Standard method using integer division */ + +# define png_composite(composite, fg, alpha, bg) \ + (composite) = (png_byte)(((png_uint_16)(fg) * (png_uint_16)(alpha) + \ + (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \ + (png_uint_16)127) / 255) + +# define png_composite_16(composite, fg, alpha, bg) \ + (composite) = (png_uint_16)(((png_uint_32)(fg) * (png_uint_32)(alpha) + \ + (png_uint_32)(bg)*(png_uint_32)(65535L - (png_uint_32)(alpha)) + \ + (png_uint_32)32767) / (png_uint_32)65535L) +#endif /* PNG_READ_COMPOSITE_NODIV_SUPPORTED */ + +#ifdef PNG_READ_INT_FUNCTIONS_SUPPORTED +PNG_EXPORT(201, png_uint_32, png_get_uint_32, (png_const_bytep buf)); +PNG_EXPORT(202, png_uint_16, png_get_uint_16, (png_const_bytep buf)); +PNG_EXPORT(203, png_int_32, png_get_int_32, (png_const_bytep buf)); +#endif + +PNG_EXPORT(204, png_uint_32, png_get_uint_31, (png_structp png_ptr, + png_const_bytep buf)); +/* No png_get_int_16 -- may be added if there's a real need for it. */ + +/* Place a 32-bit number into a buffer in PNG byte order (big-endian). */ +#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED +PNG_EXPORT(205, void, png_save_uint_32, (png_bytep buf, png_uint_32 i)); +#endif +#ifdef PNG_SAVE_INT_32_SUPPORTED +PNG_EXPORT(206, void, png_save_int_32, (png_bytep buf, png_int_32 i)); +#endif + +/* Place a 16-bit number into a buffer in PNG byte order. + * The parameter is declared unsigned int, not png_uint_16, + * just to avoid potential problems on pre-ANSI C compilers. + */ +#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED +PNG_EXPORT(207, void, png_save_uint_16, (png_bytep buf, unsigned int i)); +/* No png_save_int_16 -- may be added if there's a real need for it. */ +#endif + +#ifdef PNG_USE_READ_MACROS +/* Inline macros to do direct reads of bytes from the input buffer. + * The png_get_int_32() routine assumes we are using two's complement + * format for negative values, which is almost certainly true. + */ +# define png_get_uint_32(buf) \ + (((png_uint_32)(*(buf)) << 24) + \ + ((png_uint_32)(*((buf) + 1)) << 16) + \ + ((png_uint_32)(*((buf) + 2)) << 8) + \ + ((png_uint_32)(*((buf) + 3)))) + + /* From libpng-1.4.0 until 1.4.4, the png_get_uint_16 macro (but not the + * function) incorrectly returned a value of type png_uint_32. + */ +# define png_get_uint_16(buf) \ + ((png_uint_16) \ + (((unsigned int)(*(buf)) << 8) + \ + ((unsigned int)(*((buf) + 1))))) + +# define png_get_int_32(buf) \ + ((png_int_32)((*(buf) & 0x80) \ + ? -((png_int_32)((png_get_uint_32(buf) ^ 0xffffffffL) + 1)) \ + : (png_int_32)png_get_uint_32(buf))) +#endif + +/* Maintainer: Put new public prototypes here ^, in libpng.3, and project + * defs + */ + +/* The last ordinal number (this is the *last* one already used; the next + * one to use is one more than this.) Maintainer, remember to add an entry to + * scripts/symbols.def as well. + */ +#ifdef PNG_EXPORT_LAST_ORDINAL + PNG_EXPORT_LAST_ORDINAL(221); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* PNG_VERSION_INFO_ONLY */ +/* Do not put anything past this line */ +#endif /* PNG_H */ diff --git a/engine/libs/mingw-libs/pngconf.h b/engine/libs/mingw-libs/pngconf.h index 7d1780246..c82fa5866 100755 --- a/engine/libs/mingw-libs/pngconf.h +++ b/engine/libs/mingw-libs/pngconf.h @@ -1,1540 +1,649 @@ - -/* pngconf.h - machine configurable file for libpng - * - * libpng version 1.4.4 - September 23, 2010 - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1998-2010 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - */ - -/* Any machine specific code is near the front of this file, so if you - * are configuring libpng for a machine, you may want to read the section - * starting here down to where it starts to typedef png_color, png_text, - * and png_info. - */ - -#ifndef PNGCONF_H -#define PNGCONF_H - -#ifndef PNG_NO_LIMITS_H -# include -#endif - -/* Added at libpng-1.2.9 */ - -/* config.h is created by and PNG_CONFIGURE_LIBPNG is set by the "configure" - * script. - */ -#ifdef PNG_CONFIGURE_LIBPNG -# ifdef HAVE_CONFIG_H -# include "config.h" -# endif -#endif - -/* - * Added at libpng-1.2.8 - * - * PNG_USER_CONFIG has to be defined on the compiler command line. This - * includes the resource compiler for Windows DLL configurations. - */ -#ifdef PNG_USER_CONFIG -# include "pngusr.h" -# ifndef PNG_USER_PRIVATEBUILD -# define PNG_USER_PRIVATEBUILD -# endif -#endif - -/* - * If you create a private DLL you should define in "pngusr.h" the following: - * #define PNG_USER_PRIVATEBUILD - * e.g. #define PNG_USER_PRIVATEBUILD "Build by MyCompany for xyz reasons." - * #define PNG_USER_DLLFNAME_POSTFIX - * e.g. // private DLL "libpng14gx.dll" - * #define PNG_USER_DLLFNAME_POSTFIX "gx" - * - * The following macros are also at your disposal if you want to complete the - * DLL VERSIONINFO structure. - * - PNG_USER_VERSIONINFO_COMMENTS - * - PNG_USER_VERSIONINFO_COMPANYNAME - * - PNG_USER_VERSIONINFO_LEGALTRADEMARKS - */ - -#ifdef __STDC__ -# ifdef SPECIALBUILD -# pragma message("PNG_LIBPNG_SPECIALBUILD (and deprecated SPECIALBUILD)\ - are now LIBPNG reserved macros. Use PNG_USER_PRIVATEBUILD instead.") -# endif - -# ifdef PRIVATEBUILD -# pragma message("PRIVATEBUILD is deprecated.\ - Use PNG_USER_PRIVATEBUILD instead.") -# define PNG_USER_PRIVATEBUILD PRIVATEBUILD -# endif -#endif /* __STDC__ */ - -/* End of material added to libpng-1.2.8 */ - -#ifndef PNG_VERSION_INFO_ONLY - -/* This is the size of the compression buffer, and thus the size of - * an IDAT chunk. Make this whatever size you feel is best for your - * machine. One of these will be allocated per png_struct. When this - * is full, it writes the data to the disk, and does some other - * calculations. Making this an extremely small size will slow - * the library down, but you may want to experiment to determine - * where it becomes significant, if you are concerned with memory - * usage. Note that zlib allocates at least 32Kb also. For readers, - * this describes the size of the buffer available to read the data in. - * Unless this gets smaller than the size of a row (compressed), - * it should not make much difference how big this is. - */ - -#ifndef PNG_ZBUF_SIZE -# define PNG_ZBUF_SIZE 8192 -#endif - -/* Enable if you want a write-only libpng */ - -#ifndef PNG_NO_READ_SUPPORTED -# define PNG_READ_SUPPORTED -#endif - -/* Enable if you want a read-only libpng */ - -#ifndef PNG_NO_WRITE_SUPPORTED -# define PNG_WRITE_SUPPORTED -#endif - -/* Enabled in 1.4.0. */ -#ifdef PNG_ALLOW_BENIGN_ERRORS -# define png_benign_error png_warning -# define png_chunk_benign_error png_chunk_warning -#else -# ifndef PNG_BENIGN_ERRORS_SUPPORTED -# define png_benign_error png_error -# define png_chunk_benign_error png_chunk_error -# endif -#endif - -/* Added at libpng version 1.4.0 */ -#if !defined(PNG_NO_WARNINGS) && !defined(PNG_WARNINGS_SUPPORTED) -# define PNG_WARNINGS_SUPPORTED -#endif - -/* Added at libpng version 1.4.0 */ -#if !defined(PNG_NO_ERROR_TEXT) && !defined(PNG_ERROR_TEXT_SUPPORTED) -# define PNG_ERROR_TEXT_SUPPORTED -#endif - -/* Added at libpng version 1.4.0 */ -#if !defined(PNG_NO_CHECK_cHRM) && !defined(PNG_CHECK_cHRM_SUPPORTED) -# define PNG_CHECK_cHRM_SUPPORTED -#endif - -/* Added at libpng version 1.4.0 */ -#if !defined(PNG_NO_ALIGNED_MEMORY) && !defined(PNG_ALIGNED_MEMORY_SUPPORTED) -# define PNG_ALIGNED_MEMORY_SUPPORTED -#endif - -/* Enabled by default in 1.2.0. You can disable this if you don't need to - support PNGs that are embedded in MNG datastreams */ -#ifndef PNG_NO_MNG_FEATURES -# ifndef PNG_MNG_FEATURES_SUPPORTED -# define PNG_MNG_FEATURES_SUPPORTED -# endif -#endif - -/* Added at libpng version 1.4.0 */ -#ifndef PNG_NO_FLOATING_POINT_SUPPORTED -# ifndef PNG_FLOATING_POINT_SUPPORTED -# define PNG_FLOATING_POINT_SUPPORTED -# endif -#endif - -/* Added at libpng-1.4.0beta49 for testing (this test is no longer used - in libpng and png_calloc() is always present) - */ -#define PNG_CALLOC_SUPPORTED - -/* If you are running on a machine where you cannot allocate more - * than 64K of memory at once, uncomment this. While libpng will not - * normally need that much memory in a chunk (unless you load up a very - * large file), zlib needs to know how big of a chunk it can use, and - * libpng thus makes sure to check any memory allocation to verify it - * will fit into memory. -#define PNG_MAX_MALLOC_64K - */ -#if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K) -# define PNG_MAX_MALLOC_64K -#endif - -/* Special munging to support doing things the 'cygwin' way: - * 'Normal' png-on-win32 defines/defaults: - * PNG_BUILD_DLL -- building dll - * PNG_USE_DLL -- building an application, linking to dll - * (no define) -- building static library, or building an - * application and linking to the static lib - * 'Cygwin' defines/defaults: - * PNG_BUILD_DLL -- (ignored) building the dll - * (no define) -- (ignored) building an application, linking to the dll - * PNG_STATIC -- (ignored) building the static lib, or building an - * application that links to the static lib. - * ALL_STATIC -- (ignored) building various static libs, or building an - * application that links to the static libs. - * Thus, - * a cygwin user should define either PNG_BUILD_DLL or PNG_STATIC, and - * this bit of #ifdefs will define the 'correct' config variables based on - * that. If a cygwin user *wants* to define 'PNG_USE_DLL' that's okay, but - * unnecessary. - * - * Also, the precedence order is: - * ALL_STATIC (since we can't #undef something outside our namespace) - * PNG_BUILD_DLL - * PNG_STATIC - * (nothing) == PNG_USE_DLL - * - * CYGWIN (2002-01-20): The preceding is now obsolete. With the advent - * of auto-import in binutils, we no longer need to worry about - * __declspec(dllexport) / __declspec(dllimport) and friends. Therefore, - * we don't need to worry about PNG_STATIC or ALL_STATIC when it comes - * to __declspec() stuff. However, we DO need to worry about - * PNG_BUILD_DLL and PNG_STATIC because those change some defaults - * such as CONSOLE_IO. - */ -#ifdef __CYGWIN__ -# ifdef ALL_STATIC -# ifdef PNG_BUILD_DLL -# undef PNG_BUILD_DLL -# endif -# ifdef PNG_USE_DLL -# undef PNG_USE_DLL -# endif -# ifdef PNG_DLL -# undef PNG_DLL -# endif -# ifndef PNG_STATIC -# define PNG_STATIC -# endif -# else -# ifdef PNG_BUILD_DLL -# ifdef PNG_STATIC -# undef PNG_STATIC -# endif -# ifdef PNG_USE_DLL -# undef PNG_USE_DLL -# endif -# ifndef PNG_DLL -# define PNG_DLL -# endif -# else -# ifdef PNG_STATIC -# ifdef PNG_USE_DLL -# undef PNG_USE_DLL -# endif -# ifdef PNG_DLL -# undef PNG_DLL -# endif -# else -# ifndef PNG_USE_DLL -# define PNG_USE_DLL -# endif -# ifndef PNG_DLL -# define PNG_DLL -# endif -# endif -# endif -# endif -#endif - -/* This protects us against compilers that run on a windowing system - * and thus don't have or would rather us not use the stdio types: - * stdin, stdout, and stderr. The only one currently used is stderr - * in png_error() and png_warning(). #defining PNG_NO_CONSOLE_IO will - * prevent these from being compiled and used. #defining PNG_NO_STDIO - * will also prevent these, plus will prevent the entire set of stdio - * macros and functions (FILE *, printf, etc.) from being compiled and used, - * unless (PNG_DEBUG > 0) has been #defined. - * - * #define PNG_NO_CONSOLE_IO - * #define PNG_NO_STDIO - */ - -#ifdef _WIN32_WCE -# define PNG_NO_CONSOLE_IO -# define PNG_NO_STDIO -# define PNG_NO_TIME_RFC1123 -# ifdef PNG_DEBUG -# undef PNG_DEBUG -# endif -#endif - -#if !defined(PNG_NO_STDIO) && !defined(PNG_STDIO_SUPPORTED) -# define PNG_STDIO_SUPPORTED -#endif - -#ifdef PNG_BUILD_DLL -# if !defined(PNG_CONSOLE_IO_SUPPORTED) && !defined(PNG_NO_CONSOLE_IO) -# define PNG_NO_CONSOLE_IO -# endif -#endif - -# ifdef PNG_NO_STDIO -# ifndef PNG_NO_CONSOLE_IO -# define PNG_NO_CONSOLE_IO -# endif -# ifdef PNG_DEBUG -# if (PNG_DEBUG > 0) -# include -# endif -# endif -# else -# include -# endif - -#if !(defined PNG_NO_CONSOLE_IO) && !defined(PNG_CONSOLE_IO_SUPPORTED) -# define PNG_CONSOLE_IO_SUPPORTED -#endif - -/* This macro protects us against machines that don't have function - * prototypes (ie K&R style headers). If your compiler does not handle - * function prototypes, define this macro and use the included ansi2knr. - * I've always been able to use _NO_PROTO as the indicator, but you may - * need to drag the empty declaration out in front of here, or change the - * ifdef to suit your own needs. - */ -#ifndef PNGARG - -#ifdef OF /* zlib prototype munger */ -# define PNGARG(arglist) OF(arglist) -#else - -#ifdef _NO_PROTO -# define PNGARG(arglist) () -#else -# define PNGARG(arglist) arglist -#endif /* _NO_PROTO */ - -#endif /* OF */ - -#endif /* PNGARG */ - -/* Try to determine if we are compiling on a Mac. Note that testing for - * just __MWERKS__ is not good enough, because the Codewarrior is now used - * on non-Mac platforms. - */ -#ifndef MACOS -# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \ - defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC) -# define MACOS -# endif -#endif - -/* Enough people need this for various reasons to include it here */ -#if !defined(MACOS) && !defined(RISCOS) -# include -#endif - -/* PNG_SETJMP_NOT_SUPPORTED and PNG_NO_SETJMP_SUPPORTED are deprecated. */ -#if !defined(PNG_NO_SETJMP) && \ - !defined(PNG_SETJMP_NOT_SUPPORTED) && !defined(PNG_NO_SETJMP_SUPPORTED) -# define PNG_SETJMP_SUPPORTED -#endif - -#ifdef PNG_SETJMP_SUPPORTED -/* This is an attempt to force a single setjmp behaviour on Linux. If - * the X config stuff didn't define _BSD_SOURCE we wouldn't need this. - * - * You can bypass this test if you know that your application uses exactly - * the same setjmp.h that was included when libpng was built. Only define - * PNG_SKIP_SETJMP_CHECK while building your application, prior to the - * application's '#include "png.h"'. Don't define PNG_SKIP_SETJMP_CHECK - * while building a separate libpng library for general use. - */ - -# ifndef PNG_SKIP_SETJMP_CHECK -# ifdef __linux__ -# ifdef _BSD_SOURCE -# define PNG_SAVE_BSD_SOURCE -# undef _BSD_SOURCE -# endif -# ifdef _SETJMP_H - /* If you encounter a compiler error here, see the explanation - * near the end of INSTALL. - */ - __pngconf.h__ in libpng already includes setjmp.h; - __dont__ include it again.; -# endif -# endif /* __linux__ */ -# endif /* PNG_SKIP_SETJMP_CHECK */ - - /* Include setjmp.h for error handling */ -# include - -# ifdef __linux__ -# ifdef PNG_SAVE_BSD_SOURCE -# ifdef _BSD_SOURCE -# undef _BSD_SOURCE -# endif -# define _BSD_SOURCE -# undef PNG_SAVE_BSD_SOURCE -# endif -# endif /* __linux__ */ -#endif /* PNG_SETJMP_SUPPORTED */ - -#ifdef BSD -# include -#else -# include -#endif - -/* Other defines for things like memory and the like can go here. */ - -/* This controls how fine the quantizing gets. As this allocates - * a largish chunk of memory (32K), those who are not as concerned - * with quantizing quality can decrease some or all of these. - */ - -/* Prior to libpng-1.4.2, these were PNG_DITHER_*_BITS - * These migration aids will be removed from libpng-1.5.0. - */ -#ifdef PNG_DITHER_RED_BITS -# define PNG_QUANTIZE_RED_BITS PNG_DITHER_RED_BITS -#endif -#ifdef PNG_DITHER_GREEN_BITS -# define PNG_QUANTIZE_GREEN_BITS PNG_DITHER_GREEN_BITS -#endif -#ifdef PNG_DITHER_BLUE_BITS -# define PNG_QUANTIZE_BLUE_BITS PNG_DITHER_BLUE_BITS -#endif - -#ifndef PNG_QUANTIZE_RED_BITS -# define PNG_QUANTIZE_RED_BITS 5 -#endif -#ifndef PNG_QUANTIZE_GREEN_BITS -# define PNG_QUANTIZE_GREEN_BITS 5 -#endif -#ifndef PNG_QUANTIZE_BLUE_BITS -# define PNG_QUANTIZE_BLUE_BITS 5 -#endif - -/* This controls how fine the gamma correction becomes when you - * are only interested in 8 bits anyway. Increasing this value - * results in more memory being used, and more pow() functions - * being called to fill in the gamma tables. Don't set this value - * less then 8, and even that may not work (I haven't tested it). - */ - -#ifndef PNG_MAX_GAMMA_8 -# define PNG_MAX_GAMMA_8 11 -#endif - -/* This controls how much a difference in gamma we can tolerate before - * we actually start doing gamma conversion. - */ -#ifndef PNG_GAMMA_THRESHOLD -# define PNG_GAMMA_THRESHOLD 0.05 -#endif - -/* The following uses const char * instead of char * for error - * and warning message functions, so some compilers won't complain. - * If you do not want to use const, define PNG_NO_CONST. - */ - -#ifndef PNG_CONST -# ifndef PNG_NO_CONST -# define PNG_CONST const -# else -# define PNG_CONST -# endif -#endif - -/* The following defines give you the ability to remove code from the - * library that you will not be using. I wish I could figure out how to - * automate this, but I can't do that without making it seriously hard - * on the users. So if you are not using an ability, change the #define - * to an #undef, or pass in PNG_NO_feature and that part of the library - * will not be compiled. - - * If your linker can't find a function, you may want to make sure the - * ability is defined here. Some of these depend upon some others being - * defined. I haven't figured out all the interactions here, so you may - * have to experiment awhile to get everything to compile. If you are - * creating or using a shared library, you probably shouldn't touch this, - * as it will affect the size of the structures, and this will cause bad - * things to happen if the library and/or application ever change. - */ - -/* Any features you will not be using can be undef'ed here */ - -/* GR-P, 0.96a: Set "*TRANSFORMS_SUPPORTED as default but allow user - * to turn it off with PNG_NO_READ|WRITE_TRANSFORMS on the compile line, - * then pick and choose which ones to define without having to edit this - * file. It is safe to use the PNG_NO_READ|WRITE_TRANSFORMS - * if you only want to have a png-compliant reader/writer but don't need - * any of the extra transformations. This saves about 80 kbytes in a - * typical installation of the library. (PNG_NO_* form added in version - * 1.0.1c, for consistency; PNG_*_TRANSFORMS_NOT_SUPPORTED deprecated in - * 1.4.0) - */ - -/* Ignore attempt to turn off both floating and fixed point support */ -#if !defined(PNG_FLOATING_POINT_SUPPORTED) || \ - !defined(PNG_NO_FIXED_POINT_SUPPORTED) -# define PNG_FIXED_POINT_SUPPORTED -#endif - -#ifdef PNG_READ_SUPPORTED - -/* PNG_READ_TRANSFORMS_NOT_SUPPORTED is deprecated. */ -#if !defined(PNG_READ_TRANSFORMS_NOT_SUPPORTED) && \ - !defined(PNG_NO_READ_TRANSFORMS) -# define PNG_READ_TRANSFORMS_SUPPORTED -#endif - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -# ifndef PNG_NO_READ_EXPAND -# define PNG_READ_EXPAND_SUPPORTED -# endif -# ifndef PNG_NO_READ_SHIFT -# define PNG_READ_SHIFT_SUPPORTED -# endif -# ifndef PNG_NO_READ_PACK -# define PNG_READ_PACK_SUPPORTED -# endif -# ifndef PNG_NO_READ_BGR -# define PNG_READ_BGR_SUPPORTED -# endif -# ifndef PNG_NO_READ_SWAP -# define PNG_READ_SWAP_SUPPORTED -# endif -# ifndef PNG_NO_READ_PACKSWAP -# define PNG_READ_PACKSWAP_SUPPORTED -# endif -# ifndef PNG_NO_READ_INVERT -# define PNG_READ_INVERT_SUPPORTED -# endif -# ifndef PNG_NO_READ_QUANTIZE - /* Prior to libpng-1.4.0 this was PNG_READ_DITHER_SUPPORTED */ -# ifndef PNG_NO_READ_DITHER /* This migration aid will be removed */ -# define PNG_READ_QUANTIZE_SUPPORTED -# endif -# endif -# ifndef PNG_NO_READ_BACKGROUND -# define PNG_READ_BACKGROUND_SUPPORTED -# endif -# ifndef PNG_NO_READ_16_TO_8 -# define PNG_READ_16_TO_8_SUPPORTED -# endif -# ifndef PNG_NO_READ_FILLER -# define PNG_READ_FILLER_SUPPORTED -# endif -# ifndef PNG_NO_READ_GAMMA -# define PNG_READ_GAMMA_SUPPORTED -# endif -# ifndef PNG_NO_READ_GRAY_TO_RGB -# define PNG_READ_GRAY_TO_RGB_SUPPORTED -# endif -# ifndef PNG_NO_READ_SWAP_ALPHA -# define PNG_READ_SWAP_ALPHA_SUPPORTED -# endif -# ifndef PNG_NO_READ_INVERT_ALPHA -# define PNG_READ_INVERT_ALPHA_SUPPORTED -# endif -# ifndef PNG_NO_READ_STRIP_ALPHA -# define PNG_READ_STRIP_ALPHA_SUPPORTED -# endif -# ifndef PNG_NO_READ_USER_TRANSFORM -# define PNG_READ_USER_TRANSFORM_SUPPORTED -# endif -# ifndef PNG_NO_READ_RGB_TO_GRAY -# define PNG_READ_RGB_TO_GRAY_SUPPORTED -# endif -#endif /* PNG_READ_TRANSFORMS_SUPPORTED */ - -/* PNG_PROGRESSIVE_READ_NOT_SUPPORTED is deprecated. */ -#if !defined(PNG_NO_PROGRESSIVE_READ) && \ - !defined(PNG_PROGRESSIVE_READ_NOT_SUPPORTED) /* if you don't do progressive */ -# define PNG_PROGRESSIVE_READ_SUPPORTED /* reading. This is not talking */ -#endif /* about interlacing capability! You'll */ - /* still have interlacing unless you change the following define: */ - -#define PNG_READ_INTERLACING_SUPPORTED /* required for PNG-compliant decoders */ - -/* PNG_NO_SEQUENTIAL_READ_SUPPORTED is deprecated. */ -#if !defined(PNG_NO_SEQUENTIAL_READ) && \ - !defined(PNG_SEQUENTIAL_READ_SUPPORTED) && \ - !defined(PNG_NO_SEQUENTIAL_READ_SUPPORTED) -# define PNG_SEQUENTIAL_READ_SUPPORTED -#endif - -#ifndef PNG_NO_READ_COMPOSITE_NODIV -# ifndef PNG_NO_READ_COMPOSITED_NODIV /* libpng-1.0.x misspelling */ -# define PNG_READ_COMPOSITE_NODIV_SUPPORTED /* well tested on Intel, SGI */ -# endif -#endif - -#if !defined(PNG_NO_GET_INT_32) || defined(PNG_READ_oFFS_SUPPORTED) || \ - defined(PNG_READ_pCAL_SUPPORTED) -# ifndef PNG_GET_INT_32_SUPPORTED -# define PNG_GET_INT_32_SUPPORTED -# endif -#endif - -#endif /* PNG_READ_SUPPORTED */ - -#ifdef PNG_WRITE_SUPPORTED - -/* PNG_WRITE_TRANSFORMS_NOT_SUPPORTED is deprecated. */ -#if !defined(PNG_WRITE_TRANSFORMS_NOT_SUPPORTED) && \ - !defined(PNG_NO_WRITE_TRANSFORMS) -# define PNG_WRITE_TRANSFORMS_SUPPORTED -#endif - -#ifdef PNG_WRITE_TRANSFORMS_SUPPORTED -# ifndef PNG_NO_WRITE_SHIFT -# define PNG_WRITE_SHIFT_SUPPORTED -# endif -# ifndef PNG_NO_WRITE_PACK -# define PNG_WRITE_PACK_SUPPORTED -# endif -# ifndef PNG_NO_WRITE_BGR -# define PNG_WRITE_BGR_SUPPORTED -# endif -# ifndef PNG_NO_WRITE_SWAP -# define PNG_WRITE_SWAP_SUPPORTED -# endif -# ifndef PNG_NO_WRITE_PACKSWAP -# define PNG_WRITE_PACKSWAP_SUPPORTED -# endif -# ifndef PNG_NO_WRITE_INVERT -# define PNG_WRITE_INVERT_SUPPORTED -# endif -# ifndef PNG_NO_WRITE_FILLER -# define PNG_WRITE_FILLER_SUPPORTED /* same as WRITE_STRIP_ALPHA */ -# endif -# ifndef PNG_NO_WRITE_SWAP_ALPHA -# define PNG_WRITE_SWAP_ALPHA_SUPPORTED -# endif -# ifndef PNG_NO_WRITE_INVERT_ALPHA -# define PNG_WRITE_INVERT_ALPHA_SUPPORTED -# endif -# ifndef PNG_NO_WRITE_USER_TRANSFORM -# define PNG_WRITE_USER_TRANSFORM_SUPPORTED -# endif -#endif /* PNG_WRITE_TRANSFORMS_SUPPORTED */ - -#if !defined(PNG_NO_WRITE_INTERLACING_SUPPORTED) && \ - !defined(PNG_WRITE_INTERLACING_SUPPORTED) - /* This is not required for PNG-compliant encoders, but can cause - * trouble if left undefined - */ -# define PNG_WRITE_INTERLACING_SUPPORTED -#endif - -#if !defined(PNG_NO_WRITE_WEIGHTED_FILTER) && \ - !defined(PNG_WRITE_WEIGHTED_FILTER) && \ - defined(PNG_FLOATING_POINT_SUPPORTED) -# define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED -#endif - -#ifndef PNG_NO_WRITE_FLUSH -# define PNG_WRITE_FLUSH_SUPPORTED -#endif - -#if !defined(PNG_NO_SAVE_INT_32) || defined(PNG_WRITE_oFFS_SUPPORTED) || \ - defined(PNG_WRITE_pCAL_SUPPORTED) -# ifndef PNG_SAVE_INT_32_SUPPORTED -# define PNG_SAVE_INT_32_SUPPORTED -# endif -#endif - -#endif /* PNG_WRITE_SUPPORTED */ - -#define PNG_NO_ERROR_NUMBERS - -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ - defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) -# ifndef PNG_NO_USER_TRANSFORM_PTR -# define PNG_USER_TRANSFORM_PTR_SUPPORTED -# endif -#endif - -#if defined(PNG_STDIO_SUPPORTED) && !defined(PNG_TIME_RFC1123_SUPPORTED) -# define PNG_TIME_RFC1123_SUPPORTED -#endif - -/* This adds extra functions in pngget.c for accessing data from the - * info pointer (added in version 0.99) - * png_get_image_width() - * png_get_image_height() - * png_get_bit_depth() - * png_get_color_type() - * png_get_compression_type() - * png_get_filter_type() - * png_get_interlace_type() - * png_get_pixel_aspect_ratio() - * png_get_pixels_per_meter() - * png_get_x_offset_pixels() - * png_get_y_offset_pixels() - * png_get_x_offset_microns() - * png_get_y_offset_microns() - */ -#if !defined(PNG_NO_EASY_ACCESS) && !defined(PNG_EASY_ACCESS_SUPPORTED) -# define PNG_EASY_ACCESS_SUPPORTED -#endif - -/* Added at libpng-1.2.0 */ -#if !defined(PNG_NO_USER_MEM) && !defined(PNG_USER_MEM_SUPPORTED) -# define PNG_USER_MEM_SUPPORTED -#endif - -/* Added at libpng-1.2.6 */ -#ifndef PNG_NO_SET_USER_LIMITS -# ifndef PNG_SET_USER_LIMITS_SUPPORTED -# define PNG_SET_USER_LIMITS_SUPPORTED -# endif - /* Feature added at libpng-1.4.0, this flag added at 1.4.1 */ -# ifndef PNG_SET_CHUNK_CACHE_LIMIT_SUPPORTED -# define PNG_SET_CHUNK_CACHE_LIMIT_SUPPORTED -# endif - /* Feature added at libpng-1.4.1, this flag added at 1.4.1 */ -# ifndef PNG_SET_CHUNK_MALLOC_LIMIT_SUPPORTED -# define PNG_SET_CHUNK_MALLOC_LIMIT_SUPPORTED -# endif -#endif - -/* Added at libpng-1.2.43 */ -#ifndef PNG_USER_LIMITS_SUPPORTED -# ifndef PNG_NO_USER_LIMITS -# define PNG_USER_LIMITS_SUPPORTED -# endif -#endif - -/* Added at libpng-1.0.16 and 1.2.6. To accept all valid PNGs no matter - * how large, set these two limits to 0x7fffffffL - */ -#ifndef PNG_USER_WIDTH_MAX -# define PNG_USER_WIDTH_MAX 1000000L -#endif -#ifndef PNG_USER_HEIGHT_MAX -# define PNG_USER_HEIGHT_MAX 1000000L -#endif - -/* Added at libpng-1.2.43. To accept all valid PNGs no matter - * how large, set these two limits to 0. - */ -#ifndef PNG_USER_CHUNK_CACHE_MAX -# define PNG_USER_CHUNK_CACHE_MAX 0 -#endif - -/* Added at libpng-1.2.43 */ -#ifndef PNG_USER_CHUNK_MALLOC_MAX -# define PNG_USER_CHUNK_MALLOC_MAX 0 -#endif - -/* Added at libpng-1.4.0 */ -#if !defined(PNG_NO_IO_STATE) && !defined(PNG_IO_STATE_SUPPORTED) -# define PNG_IO_STATE_SUPPORTED -#endif - -#ifndef PNG_LITERAL_SHARP -# define PNG_LITERAL_SHARP 0x23 -#endif -#ifndef PNG_LITERAL_LEFT_SQUARE_BRACKET -# define PNG_LITERAL_LEFT_SQUARE_BRACKET 0x5b -#endif -#ifndef PNG_LITERAL_RIGHT_SQUARE_BRACKET -# define PNG_LITERAL_RIGHT_SQUARE_BRACKET 0x5d -#endif -#ifndef PNG_STRING_NEWLINE -#define PNG_STRING_NEWLINE "\n" -#endif - -/* These are currently experimental features, define them if you want */ - -/* Very little testing */ -/* -#ifdef PNG_READ_SUPPORTED -# ifndef PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED -# define PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED -# endif -#endif -*/ - -/* This is only for PowerPC big-endian and 680x0 systems */ -/* some testing */ -/* -#ifndef PNG_READ_BIG_ENDIAN_SUPPORTED -# define PNG_READ_BIG_ENDIAN_SUPPORTED -#endif -*/ - -#if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS) -# define PNG_USE_READ_MACROS -#endif - -/* Buggy compilers (e.g., gcc 2.7.2.2) need PNG_NO_POINTER_INDEXING */ - -#if !defined(PNG_NO_POINTER_INDEXING) && \ - !defined(PNG_POINTER_INDEXING_SUPPORTED) -# define PNG_POINTER_INDEXING_SUPPORTED -#endif - - -/* Any chunks you are not interested in, you can undef here. The - * ones that allocate memory may be expecially important (hIST, - * tEXt, zTXt, tRNS, pCAL). Others will just save time and make png_info - * a bit smaller. - */ - -/* The size of the png_text structure changed in libpng-1.0.6 when - * iTXt support was added. iTXt support was turned off by default through - * libpng-1.2.x, to support old apps that malloc the png_text structure - * instead of calling png_set_text() and letting libpng malloc it. It - * was turned on by default in libpng-1.4.0. - */ - -/* PNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED is deprecated. */ -#if defined(PNG_READ_SUPPORTED) && \ - !defined(PNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED) && \ - !defined(PNG_NO_READ_ANCILLARY_CHUNKS) -# define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED -#endif - -/* PNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED is deprecated. */ -#if defined(PNG_WRITE_SUPPORTED) && \ - !defined(PNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED) && \ - !defined(PNG_NO_WRITE_ANCILLARY_CHUNKS) -# define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED -#endif - -#ifdef PNG_READ_ANCILLARY_CHUNKS_SUPPORTED - -#ifdef PNG_NO_READ_TEXT -# define PNG_NO_READ_iTXt -# define PNG_NO_READ_tEXt -# define PNG_NO_READ_zTXt -#endif - -#ifndef PNG_NO_READ_bKGD -# define PNG_READ_bKGD_SUPPORTED -# define PNG_bKGD_SUPPORTED -#endif -#ifndef PNG_NO_READ_cHRM -# define PNG_READ_cHRM_SUPPORTED -# define PNG_cHRM_SUPPORTED -#endif -#ifndef PNG_NO_READ_gAMA -# define PNG_READ_gAMA_SUPPORTED -# define PNG_gAMA_SUPPORTED -#endif -#ifndef PNG_NO_READ_hIST -# define PNG_READ_hIST_SUPPORTED -# define PNG_hIST_SUPPORTED -#endif -#ifndef PNG_NO_READ_iCCP -# define PNG_READ_iCCP_SUPPORTED -# define PNG_iCCP_SUPPORTED -#endif -#ifndef PNG_NO_READ_iTXt -# ifndef PNG_READ_iTXt_SUPPORTED -# define PNG_READ_iTXt_SUPPORTED -# endif -# ifndef PNG_iTXt_SUPPORTED -# define PNG_iTXt_SUPPORTED -# endif -#endif -#ifndef PNG_NO_READ_oFFs -# define PNG_READ_oFFs_SUPPORTED -# define PNG_oFFs_SUPPORTED -#endif -#ifndef PNG_NO_READ_pCAL -# define PNG_READ_pCAL_SUPPORTED -# define PNG_pCAL_SUPPORTED -#endif -#ifndef PNG_NO_READ_sCAL -# define PNG_READ_sCAL_SUPPORTED -# define PNG_sCAL_SUPPORTED -#endif -#ifndef PNG_NO_READ_pHYs -# define PNG_READ_pHYs_SUPPORTED -# define PNG_pHYs_SUPPORTED -#endif -#ifndef PNG_NO_READ_sBIT -# define PNG_READ_sBIT_SUPPORTED -# define PNG_sBIT_SUPPORTED -#endif -#ifndef PNG_NO_READ_sPLT -# define PNG_READ_sPLT_SUPPORTED -# define PNG_sPLT_SUPPORTED -#endif -#ifndef PNG_NO_READ_sRGB -# define PNG_READ_sRGB_SUPPORTED -# define PNG_sRGB_SUPPORTED -#endif -#ifndef PNG_NO_READ_tEXt -# define PNG_READ_tEXt_SUPPORTED -# define PNG_tEXt_SUPPORTED -#endif -#ifndef PNG_NO_READ_tIME -# define PNG_READ_tIME_SUPPORTED -# define PNG_tIME_SUPPORTED -#endif -#ifndef PNG_NO_READ_tRNS -# define PNG_READ_tRNS_SUPPORTED -# define PNG_tRNS_SUPPORTED -#endif -#ifndef PNG_NO_READ_zTXt -# define PNG_READ_zTXt_SUPPORTED -# define PNG_zTXt_SUPPORTED -#endif -#ifndef PNG_NO_READ_OPT_PLTE -# define PNG_READ_OPT_PLTE_SUPPORTED /* only affects support of the */ -#endif /* optional PLTE chunk in RGB and RGBA images */ -#if defined(PNG_READ_iTXt_SUPPORTED) || defined(PNG_READ_tEXt_SUPPORTED) || \ - defined(PNG_READ_zTXt_SUPPORTED) -# define PNG_READ_TEXT_SUPPORTED -# define PNG_TEXT_SUPPORTED -#endif - -#endif /* PNG_READ_ANCILLARY_CHUNKS_SUPPORTED */ - -#ifndef PNG_NO_READ_UNKNOWN_CHUNKS -# ifndef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED -# define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED -# endif -# ifndef PNG_UNKNOWN_CHUNKS_SUPPORTED -# define PNG_UNKNOWN_CHUNKS_SUPPORTED -# endif -# ifndef PNG_READ_USER_CHUNKS_SUPPORTED -# define PNG_READ_USER_CHUNKS_SUPPORTED -# endif -#endif -#ifndef PNG_NO_READ_USER_CHUNKS -# ifndef PNG_READ_USER_CHUNKS_SUPPORTED -# define PNG_READ_USER_CHUNKS_SUPPORTED -# endif -# ifndef PNG_USER_CHUNKS_SUPPORTED -# define PNG_USER_CHUNKS_SUPPORTED -# endif -#endif -#ifndef PNG_NO_HANDLE_AS_UNKNOWN -# ifndef PNG_HANDLE_AS_UNKNOWN_SUPPORTED -# define PNG_HANDLE_AS_UNKNOWN_SUPPORTED -# endif -#endif - -#ifdef PNG_WRITE_SUPPORTED -#ifdef PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED - -#ifdef PNG_NO_WRITE_TEXT -# define PNG_NO_WRITE_iTXt -# define PNG_NO_WRITE_tEXt -# define PNG_NO_WRITE_zTXt -#endif -#ifndef PNG_NO_WRITE_bKGD -# define PNG_WRITE_bKGD_SUPPORTED -# ifndef PNG_bKGD_SUPPORTED -# define PNG_bKGD_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_cHRM -# define PNG_WRITE_cHRM_SUPPORTED -# ifndef PNG_cHRM_SUPPORTED -# define PNG_cHRM_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_gAMA -# define PNG_WRITE_gAMA_SUPPORTED -# ifndef PNG_gAMA_SUPPORTED -# define PNG_gAMA_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_hIST -# define PNG_WRITE_hIST_SUPPORTED -# ifndef PNG_hIST_SUPPORTED -# define PNG_hIST_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_iCCP -# define PNG_WRITE_iCCP_SUPPORTED -# ifndef PNG_iCCP_SUPPORTED -# define PNG_iCCP_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_iTXt -# ifndef PNG_WRITE_iTXt_SUPPORTED -# define PNG_WRITE_iTXt_SUPPORTED -# endif -# ifndef PNG_iTXt_SUPPORTED -# define PNG_iTXt_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_oFFs -# define PNG_WRITE_oFFs_SUPPORTED -# ifndef PNG_oFFs_SUPPORTED -# define PNG_oFFs_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_pCAL -# define PNG_WRITE_pCAL_SUPPORTED -# ifndef PNG_pCAL_SUPPORTED -# define PNG_pCAL_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_sCAL -# define PNG_WRITE_sCAL_SUPPORTED -# ifndef PNG_sCAL_SUPPORTED -# define PNG_sCAL_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_pHYs -# define PNG_WRITE_pHYs_SUPPORTED -# ifndef PNG_pHYs_SUPPORTED -# define PNG_pHYs_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_sBIT -# define PNG_WRITE_sBIT_SUPPORTED -# ifndef PNG_sBIT_SUPPORTED -# define PNG_sBIT_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_sPLT -# define PNG_WRITE_sPLT_SUPPORTED -# ifndef PNG_sPLT_SUPPORTED -# define PNG_sPLT_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_sRGB -# define PNG_WRITE_sRGB_SUPPORTED -# ifndef PNG_sRGB_SUPPORTED -# define PNG_sRGB_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_tEXt -# define PNG_WRITE_tEXt_SUPPORTED -# ifndef PNG_tEXt_SUPPORTED -# define PNG_tEXt_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_tIME -# define PNG_WRITE_tIME_SUPPORTED -# ifndef PNG_tIME_SUPPORTED -# define PNG_tIME_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_tRNS -# define PNG_WRITE_tRNS_SUPPORTED -# ifndef PNG_tRNS_SUPPORTED -# define PNG_tRNS_SUPPORTED -# endif -#endif -#ifndef PNG_NO_WRITE_zTXt -# define PNG_WRITE_zTXt_SUPPORTED -# ifndef PNG_zTXt_SUPPORTED -# define PNG_zTXt_SUPPORTED -# endif -#endif -#if defined(PNG_WRITE_iTXt_SUPPORTED) || defined(PNG_WRITE_tEXt_SUPPORTED) || \ - defined(PNG_WRITE_zTXt_SUPPORTED) -# define PNG_WRITE_TEXT_SUPPORTED -# ifndef PNG_TEXT_SUPPORTED -# define PNG_TEXT_SUPPORTED -# endif -#endif - -#ifdef PNG_WRITE_tIME_SUPPORTED -# ifndef PNG_NO_CONVERT_tIME -# ifndef _WIN32_WCE -/* The "tm" structure is not supported on WindowsCE */ -# ifndef PNG_CONVERT_tIME_SUPPORTED -# define PNG_CONVERT_tIME_SUPPORTED -# endif -# endif -# endif -#endif - -#endif /* PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED */ - -#ifndef PNG_NO_WRITE_FILTER -# ifndef PNG_WRITE_FILTER_SUPPORTED -# define PNG_WRITE_FILTER_SUPPORTED -# endif -#endif - -#ifndef PNG_NO_WRITE_UNKNOWN_CHUNKS -# define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED -# ifndef PNG_UNKNOWN_CHUNKS_SUPPORTED -# define PNG_UNKNOWN_CHUNKS_SUPPORTED -# endif -#endif -#ifndef PNG_NO_HANDLE_AS_UNKNOWN -# ifndef PNG_HANDLE_AS_UNKNOWN_SUPPORTED -# define PNG_HANDLE_AS_UNKNOWN_SUPPORTED -# endif -#endif -#endif /* PNG_WRITE_SUPPORTED */ - -/* Turn this off to disable png_read_png() and - * png_write_png() and leave the row_pointers member - * out of the info structure. - */ -#ifndef PNG_NO_INFO_IMAGE -# define PNG_INFO_IMAGE_SUPPORTED -#endif - -/* Need the time information for converting tIME chunks */ -#ifdef PNG_CONVERT_tIME_SUPPORTED - /* "time.h" functions are not supported on WindowsCE */ -# include -#endif - -/* Some typedefs to get us started. These should be safe on most of the - * common platforms. The typedefs should be at least as large as the - * numbers suggest (a png_uint_32 must be at least 32 bits long), but they - * don't have to be exactly that size. Some compilers dislike passing - * unsigned shorts as function parameters, so you may be better off using - * unsigned int for png_uint_16. - */ - -#if defined(INT_MAX) && (INT_MAX > 0x7ffffffeL) -typedef unsigned int png_uint_32; -typedef int png_int_32; -#else -typedef unsigned long png_uint_32; -typedef long png_int_32; -#endif -typedef unsigned short png_uint_16; -typedef short png_int_16; -typedef unsigned char png_byte; - -#ifdef PNG_NO_SIZE_T - typedef unsigned int png_size_t; -#else - typedef size_t png_size_t; -#endif -#define png_sizeof(x) (sizeof (x)) - -/* The following is needed for medium model support. It cannot be in the - * pngpriv.h header. Needs modification for other compilers besides - * MSC. Model independent support declares all arrays and pointers to be - * large using the far keyword. The zlib version used must also support - * model independent data. As of version zlib 1.0.4, the necessary changes - * have been made in zlib. The USE_FAR_KEYWORD define triggers other - * changes that are needed. (Tim Wegner) - */ - -/* Separate compiler dependencies (problem here is that zlib.h always - * defines FAR. (SJT) - */ -#ifdef __BORLANDC__ -# if defined(__LARGE__) || defined(__HUGE__) || defined(__COMPACT__) -# define LDATA 1 -# else -# define LDATA 0 -# endif - /* GRR: why is Cygwin in here? Cygwin is not Borland C... */ -# if !defined(__WIN32__) && !defined(__FLAT__) && !defined(__CYGWIN__) -# define PNG_MAX_MALLOC_64K -# if (LDATA != 1) -# ifndef FAR -# define FAR __far -# endif -# define USE_FAR_KEYWORD -# endif /* LDATA != 1 */ - /* Possibly useful for moving data out of default segment. - * Uncomment it if you want. Could also define FARDATA as - * const if your compiler supports it. (SJT) -# define FARDATA FAR - */ -# endif /* __WIN32__, __FLAT__, __CYGWIN__ */ -#endif /* __BORLANDC__ */ - - -/* Suggest testing for specific compiler first before testing for - * FAR. The Watcom compiler defines both __MEDIUM__ and M_I86MM, - * making reliance oncertain keywords suspect. (SJT) - */ - -/* MSC Medium model */ -#ifdef FAR -# ifdef M_I86MM -# define USE_FAR_KEYWORD -# define FARDATA FAR -# include -# endif -#endif - -/* SJT: default case */ -#ifndef FAR -# define FAR -#endif - -/* At this point FAR is always defined */ -#ifndef FARDATA -# define FARDATA -#endif - -/* Typedef for floating-point numbers that are converted - to fixed-point with a multiple of 100,000, e.g., int_gamma */ -typedef png_int_32 png_fixed_point; - -/* Add typedefs for pointers */ -typedef void FAR * png_voidp; -typedef png_byte FAR * png_bytep; -typedef png_uint_32 FAR * png_uint_32p; -typedef png_int_32 FAR * png_int_32p; -typedef png_uint_16 FAR * png_uint_16p; -typedef png_int_16 FAR * png_int_16p; -typedef PNG_CONST char FAR * png_const_charp; -typedef char FAR * png_charp; -typedef png_fixed_point FAR * png_fixed_point_p; - -#ifndef PNG_NO_STDIO -typedef FILE * png_FILE_p; -#endif - -#ifdef PNG_FLOATING_POINT_SUPPORTED -typedef double FAR * png_doublep; -#endif - -/* Pointers to pointers; i.e. arrays */ -typedef png_byte FAR * FAR * png_bytepp; -typedef png_uint_32 FAR * FAR * png_uint_32pp; -typedef png_int_32 FAR * FAR * png_int_32pp; -typedef png_uint_16 FAR * FAR * png_uint_16pp; -typedef png_int_16 FAR * FAR * png_int_16pp; -typedef PNG_CONST char FAR * FAR * png_const_charpp; -typedef char FAR * FAR * png_charpp; -typedef png_fixed_point FAR * FAR * png_fixed_point_pp; -#ifdef PNG_FLOATING_POINT_SUPPORTED -typedef double FAR * FAR * png_doublepp; -#endif - -/* Pointers to pointers to pointers; i.e., pointer to array */ -typedef char FAR * FAR * FAR * png_charppp; - -/* Define PNG_BUILD_DLL if the module being built is a Windows - * LIBPNG DLL. - * - * Define PNG_USE_DLL if you want to *link* to the Windows LIBPNG DLL. - * It is equivalent to Microsoft predefined macro _DLL that is - * automatically defined when you compile using the share - * version of the CRT (C Run-Time library) - * - * The cygwin mods make this behavior a little different: - * Define PNG_BUILD_DLL if you are building a dll for use with cygwin - * Define PNG_STATIC if you are building a static library for use with cygwin, - * -or- if you are building an application that you want to link to the - * static library. - * PNG_USE_DLL is defined by default (no user action needed) unless one of - * the other flags is defined. - */ - -#if !defined(PNG_DLL) && (defined(PNG_BUILD_DLL) || defined(PNG_USE_DLL)) -# define PNG_DLL -#endif - -/* If you define PNGAPI, e.g., with compiler option "-DPNGAPI=__stdcall", - * you may get warnings regarding the linkage of png_zalloc and png_zfree. - * Don't ignore those warnings; you must also reset the default calling - * convention in your compiler to match your PNGAPI, and you must build - * zlib and your applications the same way you build libpng. - */ - -#ifdef __CYGWIN__ -# undef PNGAPI -# define PNGAPI __cdecl -# undef PNG_IMPEXP -# define PNG_IMPEXP -#endif - -#ifdef __WATCOMC__ -# ifndef PNGAPI -# define PNGAPI -# endif -#endif - -#if defined(__MINGW32__) && !defined(PNG_MODULEDEF) -# ifndef PNG_NO_MODULEDEF -# define PNG_NO_MODULEDEF -# endif -#endif - -#if !defined(PNG_IMPEXP) && defined(PNG_BUILD_DLL) && !defined(PNG_NO_MODULEDEF) -# define PNG_IMPEXP -#endif - -#if defined(PNG_DLL) || defined(_DLL) || defined(__DLL__ ) || \ - (( defined(_Windows) || defined(_WINDOWS) || \ - defined(WIN32) || defined(_WIN32) || defined(__WIN32__) )) - -# ifndef PNGAPI -# if defined(__GNUC__) || (defined (_MSC_VER) && (_MSC_VER >= 800)) -# define PNGAPI __cdecl -# else -# define PNGAPI _cdecl -# endif -# endif - -# if !defined(PNG_IMPEXP) && (!defined(PNG_DLL) || \ - 0 /* WINCOMPILER_WITH_NO_SUPPORT_FOR_DECLIMPEXP */) -# define PNG_IMPEXP -# endif - -# ifndef PNG_IMPEXP - -# define PNG_EXPORT_TYPE1(type,symbol) PNG_IMPEXP type PNGAPI symbol -# define PNG_EXPORT_TYPE2(type,symbol) type PNG_IMPEXP PNGAPI symbol - - /* Borland/Microsoft */ -# if defined(_MSC_VER) || defined(__BORLANDC__) -# if (_MSC_VER >= 800) || (__BORLANDC__ >= 0x500) -# define PNG_EXPORT PNG_EXPORT_TYPE1 -# else -# define PNG_EXPORT PNG_EXPORT_TYPE2 -# ifdef PNG_BUILD_DLL -# define PNG_IMPEXP __export -# else -# define PNG_IMPEXP /*__import */ /* doesn't exist AFAIK in VC++ */ -# endif /* Exists in Borland C++ for - C++ classes (== huge) */ -# endif -# endif - -# ifndef PNG_IMPEXP -# ifdef PNG_BUILD_DLL -# define PNG_IMPEXP __declspec(dllexport) -# else -# define PNG_IMPEXP __declspec(dllimport) -# endif -# endif -# endif /* PNG_IMPEXP */ -#else /* !(DLL || non-cygwin WINDOWS) */ -# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) -# ifndef PNGAPI -# define PNGAPI _System -# endif -# else -# if 0 /* ... other platforms, with other meanings */ -# endif -# endif -#endif - -#ifndef PNGAPI -# define PNGAPI -#endif -#ifndef PNG_IMPEXP -# define PNG_IMPEXP -#endif - -#ifdef PNG_BUILDSYMS -# ifndef PNG_EXPORT -# define PNG_EXPORT(type,symbol) PNG_FUNCTION_EXPORT symbol END -# endif -#endif - -#ifndef PNG_EXPORT -# define PNG_EXPORT(type,symbol) PNG_IMPEXP type PNGAPI symbol -#endif - -#define PNG_USE_LOCAL_ARRAYS /* Not used in libpng, defined for legacy apps */ - -/* Support for compiler specific function attributes. These are used - * so that where compiler support is available incorrect use of API - * functions in png.h will generate compiler warnings. - * - * Added at libpng-1.2.41. - */ - -#ifndef PNG_NO_PEDANTIC_WARNINGS -# ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED -# define PNG_PEDANTIC_WARNINGS_SUPPORTED -# endif -#endif - -#ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED -/* Support for compiler specific function attributes. These are used - * so that where compiler support is available incorrect use of API - * functions in png.h will generate compiler warnings. Added at libpng - * version 1.2.41. - */ -# ifdef __GNUC__ -# ifndef PNG_USE_RESULT -# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) -# endif -# ifndef PNG_NORETURN -# define PNG_NORETURN __attribute__((__noreturn__)) -# endif -# ifndef PNG_ALLOCATED -# define PNG_ALLOCATED __attribute__((__malloc__)) -# endif - - /* This specifically protects structure members that should only be - * accessed from within the library, therefore should be empty during - * a library build. - */ -# ifndef PNG_DEPRECATED -# define PNG_DEPRECATED __attribute__((__deprecated__)) -# endif -# ifndef PNG_DEPSTRUCT -# define PNG_DEPSTRUCT __attribute__((__deprecated__)) -# endif -# ifndef PNG_PRIVATE -# if 0 /* Doesn't work so we use deprecated instead*/ -# define PNG_PRIVATE \ - __attribute__((warning("This function is not exported by libpng."))) -# else -# define PNG_PRIVATE \ - __attribute__((__deprecated__)) -# endif -# endif /* PNG_PRIVATE */ -# endif /* __GNUC__ */ -#endif /* PNG_PEDANTIC_WARNINGS */ - -#ifndef PNG_DEPRECATED -# define PNG_DEPRECATED /* Use of this function is deprecated */ -#endif -#ifndef PNG_USE_RESULT -# define PNG_USE_RESULT /* The result of this function must be checked */ -#endif -#ifndef PNG_NORETURN -# define PNG_NORETURN /* This function does not return */ -#endif -#ifndef PNG_ALLOCATED -# define PNG_ALLOCATED /* The result of the function is new memory */ -#endif -#ifndef PNG_DEPSTRUCT -# define PNG_DEPSTRUCT /* Access to this struct member is deprecated */ -#endif -#ifndef PNG_PRIVATE -# define PNG_PRIVATE /* This is a private libpng function */ -#endif - -/* Users may want to use these so they are not private. Any library - * functions that are passed far data must be model-independent. - */ - -/* memory model/platform independent fns */ -#ifndef PNG_ABORT -# if (defined(_Windows) || defined(_WINDOWS) || defined(_WINDOWS_)) -# define PNG_ABORT() ExitProcess(0) -# else -# define PNG_ABORT() abort() -# endif -#endif - -#ifdef USE_FAR_KEYWORD -/* Use this to make far-to-near assignments */ -# define CHECK 1 -# define NOCHECK 0 -# define CVT_PTR(ptr) (png_far_to_near(png_ptr,ptr,CHECK)) -# define CVT_PTR_NOCHECK(ptr) (png_far_to_near(png_ptr,ptr,NOCHECK)) -# define png_strcpy _fstrcpy -# define png_strncpy _fstrncpy /* Added to v 1.2.6 */ -# define png_strlen _fstrlen -# define png_memcmp _fmemcmp /* SJT: added */ -# define png_memcpy _fmemcpy -# define png_memset _fmemset -# define png_sprintf sprintf -#else -# if (defined(_Windows) || defined(_WINDOWS) || defined(_WINDOWS_)) -# /* Favor Windows over C runtime fns */ -# define CVT_PTR(ptr) (ptr) -# define CVT_PTR_NOCHECK(ptr) (ptr) -# define png_strcpy lstrcpyA -# define png_strncpy lstrcpynA -# define png_strlen lstrlenA -# define png_memcmp memcmp -# define png_memcpy CopyMemory -# define png_memset memset -# define png_sprintf wsprintfA -# else -# define CVT_PTR(ptr) (ptr) -# define CVT_PTR_NOCHECK(ptr) (ptr) -# define png_strcpy strcpy -# define png_strncpy strncpy /* Added to v 1.2.6 */ -# define png_strlen strlen -# define png_memcmp memcmp /* SJT: added */ -# define png_memcpy memcpy -# define png_memset memset -# define png_sprintf sprintf -# endif -#endif - -#ifndef PNG_NO_SNPRINTF -# ifdef _MSC_VER -# define png_snprintf _snprintf /* Added to v 1.2.19 */ -# define png_snprintf2 _snprintf -# define png_snprintf6 _snprintf -# else -# define png_snprintf snprintf /* Added to v 1.2.19 */ -# define png_snprintf2 snprintf -# define png_snprintf6 snprintf -# endif -#else - /* You don't have or don't want to use snprintf(). Caution: Using - * sprintf instead of snprintf exposes your application to accidental - * or malevolent buffer overflows. If you don't have snprintf() - * as a general rule you should provide one (you can get one from - * Portable OpenSSH). - */ -# define png_snprintf(s1,n,fmt,x1) png_sprintf(s1,fmt,x1) -# define png_snprintf2(s1,n,fmt,x1,x2) png_sprintf(s1,fmt,x1,x2) -# define png_snprintf6(s1,n,fmt,x1,x2,x3,x4,x5,x6) \ - png_sprintf(s1,fmt,x1,x2,x3,x4,x5,x6) -#endif - -/* png_alloc_size_t is guaranteed to be no smaller than png_size_t, - * and no smaller than png_uint_32. Casts from png_size_t or png_uint_32 - * to png_alloc_size_t are not necessary; in fact, it is recommended - * not to use them at all so that the compiler can complain when something - * turns out to be problematic. - * Casts in the other direction (from png_alloc_size_t to png_size_t or - * png_uint_32) should be explicitly applied; however, we do not expect - * to encounter practical situations that require such conversions. - */ -#if defined(__TURBOC__) && !defined(__FLAT__) - typedef unsigned long png_alloc_size_t; -#else -# if defined(_MSC_VER) && defined(MAXSEG_64K) - typedef unsigned long png_alloc_size_t; -# else - /* This is an attempt to detect an old Windows system where (int) is - * actually 16 bits, in that case png_malloc must have an argument with a - * bigger size to accomodate the requirements of the library. - */ -# if (defined(_Windows) || defined(_WINDOWS) || defined(_WINDOWS_)) && \ - (!defined(INT_MAX) || INT_MAX <= 0x7ffffffeL) - typedef DWORD png_alloc_size_t; -# else - typedef png_size_t png_alloc_size_t; -# endif -# endif -#endif -/* End of memory model/platform independent support */ - -/* Just a little check that someone hasn't tried to define something - * contradictory. - */ -#if (PNG_ZBUF_SIZE > 65536L) && defined(PNG_MAX_MALLOC_64K) -# undef PNG_ZBUF_SIZE -# define PNG_ZBUF_SIZE 65536L -#endif - - -/* Added at libpng-1.2.8 */ -#endif /* PNG_VERSION_INFO_ONLY */ - -#endif /* PNGCONF_H */ + +/* pngconf.h - machine configurable file for libpng + * + * libpng version 1.5.2 - March 31, 2011 + * + * Copyright (c) 1998-2011 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This code is released under the libpng license. + * For conditions of distribution and use, see the disclaimer + * and license in png.h + * + */ + +/* Any machine specific code is near the front of this file, so if you + * are configuring libpng for a machine, you may want to read the section + * starting here down to where it starts to typedef png_color, png_text, + * and png_info. + */ + +#ifndef PNGCONF_H +#define PNGCONF_H + +#ifndef PNG_BUILDING_SYMBOL_TABLE +/* PNG_NO_LIMITS_H may be used to turn off the use of the standard C + * definition file for machine specific limits, this may impact the + * correctness of the definitons below (see uses of INT_MAX). + */ +# ifndef PNG_NO_LIMITS_H +# include +# endif + +/* For the memory copy APIs (i.e. the standard definitions of these), + * because this file defines png_memcpy and so on the base APIs must + * be defined here. + */ +# ifdef BSD +# include +# else +# include +# endif + +/* For png_FILE_p - this provides the standard definition of a + * FILE + */ +# ifdef PNG_STDIO_SUPPORTED +# include +# endif +#endif + +/* This controls optimization of the reading of 16 and 32 bit values + * from PNG files. It can be set on a per-app-file basis - it + * just changes whether a macro is used to the function is called. + * The library builder sets the default, if read functions are not + * built into the library the macro implementation is forced on. + */ +#ifndef PNG_READ_INT_FUNCTIONS_SUPPORTED +# define PNG_USE_READ_MACROS +#endif +#if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS) +# if PNG_DEFAULT_READ_MACROS +# define PNG_USE_READ_MACROS +# endif +#endif + +/* COMPILER SPECIFIC OPTIONS. + * + * These options are provided so that a variety of difficult compilers + * can be used. Some are fixed at build time (e.g. PNG_API_RULE + * below) but still have compiler specific implementations, others + * may be changed on a per-file basis when compiling against libpng. + */ + +/* The PNGARG macro protects us against machines that don't have function + * prototypes (ie K&R style headers). If your compiler does not handle + * function prototypes, define this macro and use the included ansi2knr. + * I've always been able to use _NO_PROTO as the indicator, but you may + * need to drag the empty declaration out in front of here, or change the + * ifdef to suit your own needs. + */ +#ifndef PNGARG + +# ifdef OF /* zlib prototype munger */ +# define PNGARG(arglist) OF(arglist) +# else + +# ifdef _NO_PROTO +# define PNGARG(arglist) () +# else +# define PNGARG(arglist) arglist +# endif /* _NO_PROTO */ + +# endif /* OF */ + +#endif /* PNGARG */ + +/* Function calling conventions. + * ============================= + * Normally it is not necessary to specify to the compiler how to call + * a function - it just does it - however on x86 systems derived from + * Microsoft and Borland C compilers ('IBM PC', 'DOS', 'Windows' systems + * and some others) there are multiple ways to call a function and the + * default can be changed on the compiler command line. For this reason + * libpng specifies the calling convention of every exported function and + * every function called via a user supplied function pointer. This is + * done in this file by defining the following macros: + * + * PNGAPI Calling convention for exported functions. + * PNGCBAPI Calling convention for user provided (callback) functions. + * PNGCAPI Calling convention used by the ANSI-C library (required + * for longjmp callbacks and sometimes used internally to + * specify the calling convention for zlib). + * + * These macros should never be overridden. If it is necessary to + * change calling convention in a private build this can be done + * by setting PNG_API_RULE (which defaults to 0) to one of the values + * below to select the correct 'API' variants. + * + * PNG_API_RULE=0 Use PNGCAPI - the 'C' calling convention - throughout. + * This is correct in every known environment. + * PNG_API_RULE=1 Use the operating system convention for PNGAPI and + * the 'C' calling convention (from PNGCAPI) for + * callbacks (PNGCBAPI). This is no longer required + * in any known environment - if it has to be used + * please post an explanation of the problem to the + * libpng mailing list. + * + * These cases only differ if the operating system does not use the C + * calling convention, at present this just means the above cases + * (x86 DOS/Windows sytems) and, even then, this does not apply to + * Cygwin running on those systems. + * + * Note that the value must be defined in pnglibconf.h so that what + * the application uses to call the library matches the conventions + * set when building the library. + */ + +/* Symbol export + * ============= + * When building a shared library it is almost always necessary to tell + * the compiler which symbols to export. The png.h macro 'PNG_EXPORT' + * is used to mark the symbols. On some systems these symbols can be + * extracted at link time and need no special processing by the compiler, + * on other systems the symbols are flagged by the compiler and just + * the declaration requires a special tag applied (unfortunately) in a + * compiler dependent way. Some systems can do either. + * + * A small number of older systems also require a symbol from a DLL to + * be flagged to the program that calls it. This is a problem because + * we do not know in the header file included by application code that + * the symbol will come from a shared library, as opposed to a statically + * linked one. For this reason the application must tell us by setting + * the magic flag PNG_USE_DLL to turn on the special processing before + * it includes png.h. + * + * Four additional macros are used to make this happen: + * + * PNG_IMPEXP The magic (if any) to cause a symbol to be exported from + * the build or imported if PNG_USE_DLL is set - compiler + * and system specific. + * + * PNG_EXPORT_TYPE(type) A macro that pre or appends PNG_IMPEXP to + * 'type', compiler specific. + * + * PNG_DLL_EXPORT Set to the magic to use during a libpng build to + * make a symbol exported from the DLL. + * + * PNG_DLL_IMPORT Set to the magic to force the libpng symbols to come + * from a DLL - used to define PNG_IMPEXP when + * PNG_USE_DLL is set. + */ + +/* System specific discovery. + * ========================== + * This code is used at build time to find PNG_IMPEXP, the API settings + * and PNG_EXPORT_TYPE(), it may also set a macro to indicate the DLL + * import processing is possible. On Windows/x86 systems it also sets + * compiler-specific macros to the values required to change the calling + * conventions of the various functions. + */ +#if ( defined(_Windows) || defined(_WINDOWS) || defined(WIN32) ||\ + defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) ) &&\ + ( defined(_X86_) || defined(_X64_) || defined(_M_IX86) ||\ + defined(_M_X64) || defined(_M_IA64) ) + /* Windows system (DOS doesn't support DLLs) running on x86/x64. Includes + * builds under Cygwin or MinGW. Also includes Watcom builds but these need + * special treatment because they are not compatible with GCC or Visual C + * because of different calling conventions. + */ +# if PNG_API_RULE == 2 + /* If this line results in an error, either because __watcall is not + * understood or because of a redefine just below you cannot use *this* + * build of the library with the compiler you are using. *This* build was + * build using Watcom and applications must also be built using Watcom! + */ +# define PNGCAPI __watcall +# endif + +# if defined(__GNUC__) || (defined (_MSC_VER) && (_MSC_VER >= 800)) +# define PNGCAPI __cdecl +# if PNG_API_RULE == 1 +# define PNGAPI __stdcall +# endif +# else + /* An older compiler, or one not detected (erroneously) above, + * if necessary override on the command line to get the correct + * variants for the compiler. + */ +# ifndef PNGCAPI +# define PNGCAPI _cdecl +# endif +# if PNG_API_RULE == 1 && !defined(PNGAPI) +# define PNGAPI _stdcall +# endif +# endif /* compiler/api */ + /* NOTE: PNGCBAPI always defaults to PNGCAPI. */ + +# if defined(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD) + ERROR: PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed +# endif + +# if (defined(_MSC_VER) && _MSC_VER < 800) ||\ + (defined(__BORLANDC__) && __BORLANDC__ < 0x500) + /* older Borland and MSC + * compilers used '__export' and required this to be after + * the type. + */ +# ifndef PNG_EXPORT_TYPE +# define PNG_EXPORT_TYPE(type) type PNG_IMPEXP +# endif +# define PNG_DLL_EXPORT __export +# else /* newer compiler */ +# define PNG_DLL_EXPORT __declspec(dllexport) +# ifndef PNG_DLL_IMPORT +# define PNG_DLL_IMPORT __declspec(dllimport) +# endif +# endif /* compiler */ + +#else /* !Windows/x86 */ +# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) +# define PNGAPI _System +# else /* !Windows/x86 && !OS/2 */ + /* Use the defaults, or define PNG*API on the command line (but + * this will have to be done for every compile!) + */ +# endif /* other system, !OS/2 */ +#endif /* !Windows/x86 */ + +/* Now do all the defaulting . */ +#ifndef PNGCAPI +# define PNGCAPI +#endif +#ifndef PNGCBAPI +# define PNGCBAPI PNGCAPI +#endif +#ifndef PNGAPI +# define PNGAPI PNGCAPI +#endif + +/* The default for PNG_IMPEXP depends on whether the library is + * being built or used. + */ +#ifndef PNG_IMPEXP +# ifdef PNGLIB_BUILD + /* Building the library */ +# if (defined(DLL_EXPORT)/*from libtool*/ ||\ + defined(_WINDLL) || defined(_DLL) || defined(__DLL__) ||\ + defined(_USRDLL) ||\ + defined(PNG_BUILD_DLL)) && defined(PNG_DLL_EXPORT) + /* Building a DLL. */ +# define PNG_IMPEXP PNG_DLL_EXPORT +# endif /* DLL */ +# else + /* Using the library */ +# if defined(PNG_USE_DLL) && defined(PNG_DLL_IMPORT) + /* This forces use of a DLL, disallowing static linking */ +# define PNG_IMPEXP PNG_DLL_IMPORT +# endif +# endif + +# ifndef PNG_IMPEXP +# define PNG_IMPEXP +# endif +#endif + +/* In 1.5.2 the definition of PNG_FUNCTION has been changed to always treat + * 'attributes' as a storage class - the attributes go at the start of the + * function definition, and attributes are always appended regardless of the + * compiler. This considerably simplifies these macros but may cause problems + * if any compilers both need function attributes and fail to handle them as + * a storage class (this is unlikely.) + */ +#ifndef PNG_FUNCTION +# define PNG_FUNCTION(type, name, args, attributes) attributes type name args +#endif + +#ifndef PNG_EXPORT_TYPE +# define PNG_EXPORT_TYPE(type) PNG_IMPEXP type +#endif + + /* The ordinal value is only relevant when preprocessing png.h for symbol + * table entries, so we discard it here. See the .dfn files in the + * scripts directory. + */ +#ifndef PNG_EXPORTA + +# define PNG_EXPORTA(ordinal, type, name, args, attributes)\ + PNG_FUNCTION(PNG_EXPORT_TYPE(type),(PNGAPI name),PNGARG(args), \ + extern attributes) +#endif + +/* ANSI-C (C90) does not permit a macro to be invoked with an empty argument, + * so make something non-empty to satisfy the requirement: + */ +#define PNG_EMPTY /*empty list*/ + +#define PNG_EXPORT(ordinal, type, name, args)\ + PNG_EXPORTA(ordinal, type, name, args, PNG_EMPTY) + +/* Use PNG_REMOVED to comment out a removed interface. */ +#ifndef PNG_REMOVED +# define PNG_REMOVED(ordinal, type, name, args, attributes) +#endif + +#ifndef PNG_CALLBACK +# define PNG_CALLBACK(type, name, args) type (PNGCBAPI name) PNGARG(args) +#endif + +/* Support for compiler specific function attributes. These are used + * so that where compiler support is available incorrect use of API + * functions in png.h will generate compiler warnings. + * + * Added at libpng-1.2.41. + */ + +#ifndef PNG_NO_PEDANTIC_WARNINGS +# ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED +# define PNG_PEDANTIC_WARNINGS_SUPPORTED +# endif +#endif + +#ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED + /* Support for compiler specific function attributes. These are used + * so that where compiler support is available incorrect use of API + * functions in png.h will generate compiler warnings. Added at libpng + * version 1.2.41. + */ +# if defined(__GNUC__) +# ifndef PNG_USE_RESULT +# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) +# endif +# ifndef PNG_NORETURN +# define PNG_NORETURN __attribute__((__noreturn__)) +# endif +# ifndef PNG_PTR_NORETURN + /* It's not enough to have the compiler be the correct compiler at + * this point - it's necessary for the library (which defines + * the type of the library longjmp) to also be the GNU library. + * This is because many systems use the GNU compiler with a + * non-GNU libc implementation. Min/GW headers are also compatible + * with GCC as well as uclibc, so it seems best to exclude known + * problem libcs here rather than just including known libcs. + * + * NOTE: this relies on the only use of PNG_PTR_NORETURN being with + * the system longjmp. If the same type is used elsewhere then this + * will need to be changed. + */ +# if !defined(__CYGWIN__) +# define PNG_PTR_NORETURN __attribute__((__noreturn__)) +# endif +# endif +# ifndef PNG_ALLOCATED +# define PNG_ALLOCATED __attribute__((__malloc__)) +# endif + + /* This specifically protects structure members that should only be + * accessed from within the library, therefore should be empty during + * a library build. + */ +# ifndef PNGLIB_BUILD +# ifndef PNG_DEPRECATED +# define PNG_DEPRECATED __attribute__((__deprecated__)) +# endif +# ifndef PNG_DEPSTRUCT +# define PNG_DEPSTRUCT __attribute__((__deprecated__)) +# endif +# ifndef PNG_PRIVATE +# if 0 /* Doesn't work so we use deprecated instead*/ +# define PNG_PRIVATE \ + __attribute__((warning("This function is not exported by libpng."))) +# else +# define PNG_PRIVATE \ + __attribute__((__deprecated__)) +# endif +# endif +# endif /* PNGLIB_BUILD */ +# endif /* __GNUC__ */ + +# if defined(_MSC_VER) && (_MSC_VER >= 1300) +# ifndef PNG_USE_RESULT +# define PNG_USE_RESULT /* not supported */ +# endif +# ifndef PNG_NORETURN +# define PNG_NORETURN __declspec(noreturn) +# endif +# ifndef PNG_PTR_NORETURN +# define PNG_PTR_NORETURN /* not supported */ +# endif +# ifndef PNG_ALLOCATED +# define PNG_ALLOCATED __declspec(restrict) +# endif + + /* This specifically protects structure members that should only be + * accessed from within the library, therefore should be empty during + * a library build. + */ +# ifndef PNGLIB_BUILD +# ifndef PNG_DEPRECATED +# define PNG_DEPRECATED __declspec(deprecated) +# endif +# ifndef PNG_DEPSTRUCT +# define PNG_DEPSTRUCT __declspec(deprecated) +# endif +# ifndef PNG_PRIVATE +# define PNG_PRIVATE __declspec(deprecated) +# endif +# endif /* PNGLIB_BUILD */ +# endif /* _MSC_VER */ +#endif /* PNG_PEDANTIC_WARNINGS */ + +#ifndef PNG_DEPRECATED +# define PNG_DEPRECATED /* Use of this function is deprecated */ +#endif +#ifndef PNG_USE_RESULT +# define PNG_USE_RESULT /* The result of this function must be checked */ +#endif +#ifndef PNG_NORETURN +# define PNG_NORETURN /* This function does not return */ +#endif +#ifndef PNG_PTR_NORETURN +# define PNG_PTR_NORETURN /* This function does not return */ +#endif +#ifndef PNG_ALLOCATED +# define PNG_ALLOCATED /* The result of the function is new memory */ +#endif +#ifndef PNG_DEPSTRUCT +# define PNG_DEPSTRUCT /* Access to this struct member is deprecated */ +#endif +#ifndef PNG_PRIVATE +# define PNG_PRIVATE /* This is a private libpng function */ +#endif +#ifndef PNG_FP_EXPORT /* A floating point API. */ +# ifdef PNG_FLOATING_POINT_SUPPORTED +# define PNG_FP_EXPORT(ordinal, type, name, args)\ + PNG_EXPORT(ordinal, type, name, args) +# else /* No floating point APIs */ +# define PNG_FP_EXPORT(ordinal, type, name, args) +# endif +#endif +#ifndef PNG_FIXED_EXPORT /* A fixed point API. */ +# ifdef PNG_FIXED_POINT_SUPPORTED +# define PNG_FIXED_EXPORT(ordinal, type, name, args)\ + PNG_EXPORT(ordinal, type, name, args) +# else /* No fixed point APIs */ +# define PNG_FIXED_EXPORT(ordinal, type, name, args) +# endif +#endif + +/* The following uses const char * instead of char * for error + * and warning message functions, so some compilers won't complain. + * If you do not want to use const, define PNG_NO_CONST here. + * + * This should not change how the APIs are called, so it can be done + * on a per-file basis in the application. + */ +#ifndef PNG_CONST +# ifndef PNG_NO_CONST +# define PNG_CONST const +# else +# define PNG_CONST +# endif +#endif + +/* Some typedefs to get us started. These should be safe on most of the + * common platforms. The typedefs should be at least as large as the + * numbers suggest (a png_uint_32 must be at least 32 bits long), but they + * don't have to be exactly that size. Some compilers dislike passing + * unsigned shorts as function parameters, so you may be better off using + * unsigned int for png_uint_16. + */ + +#if defined(INT_MAX) && (INT_MAX > 0x7ffffffeL) +typedef unsigned int png_uint_32; +typedef int png_int_32; +#else +typedef unsigned long png_uint_32; +typedef long png_int_32; +#endif +typedef unsigned short png_uint_16; +typedef short png_int_16; +typedef unsigned char png_byte; + +#ifdef PNG_NO_SIZE_T +typedef unsigned int png_size_t; +#else +typedef size_t png_size_t; +#endif +#define png_sizeof(x) (sizeof (x)) + +/* The following is needed for medium model support. It cannot be in the + * pngpriv.h header. Needs modification for other compilers besides + * MSC. Model independent support declares all arrays and pointers to be + * large using the far keyword. The zlib version used must also support + * model independent data. As of version zlib 1.0.4, the necessary changes + * have been made in zlib. The USE_FAR_KEYWORD define triggers other + * changes that are needed. (Tim Wegner) + */ + +/* Separate compiler dependencies (problem here is that zlib.h always + * defines FAR. (SJT) + */ +#ifdef __BORLANDC__ +# if defined(__LARGE__) || defined(__HUGE__) || defined(__COMPACT__) +# define LDATA 1 +# else +# define LDATA 0 +# endif + /* GRR: why is Cygwin in here? Cygwin is not Borland C... */ +# if !defined(__WIN32__) && !defined(__FLAT__) && !defined(__CYGWIN__) +# define PNG_MAX_MALLOC_64K /* only used in build */ +# if (LDATA != 1) +# ifndef FAR +# define FAR __far +# endif +# define USE_FAR_KEYWORD +# endif /* LDATA != 1 */ + /* Possibly useful for moving data out of default segment. + * Uncomment it if you want. Could also define FARDATA as + * const if your compiler supports it. (SJT) +# define FARDATA FAR + */ +# endif /* __WIN32__, __FLAT__, __CYGWIN__ */ +#endif /* __BORLANDC__ */ + + +/* Suggest testing for specific compiler first before testing for + * FAR. The Watcom compiler defines both __MEDIUM__ and M_I86MM, + * making reliance oncertain keywords suspect. (SJT) + */ + +/* MSC Medium model */ +#ifdef FAR +# ifdef M_I86MM +# define USE_FAR_KEYWORD +# define FARDATA FAR +# include +# endif +#endif + +/* SJT: default case */ +#ifndef FAR +# define FAR +#endif + +/* At this point FAR is always defined */ +#ifndef FARDATA +# define FARDATA +#endif + +/* Typedef for floating-point numbers that are converted + * to fixed-point with a multiple of 100,000, e.g., gamma + */ +typedef png_int_32 png_fixed_point; + +/* Add typedefs for pointers */ +typedef void FAR * png_voidp; +typedef PNG_CONST void FAR * png_const_voidp; +typedef png_byte FAR * png_bytep; +typedef PNG_CONST png_byte FAR * png_const_bytep; +typedef png_uint_32 FAR * png_uint_32p; +typedef PNG_CONST png_uint_32 FAR * png_const_uint_32p; +typedef png_int_32 FAR * png_int_32p; +typedef PNG_CONST png_int_32 FAR * png_const_int_32p; +typedef png_uint_16 FAR * png_uint_16p; +typedef PNG_CONST png_uint_16 FAR * png_const_uint_16p; +typedef png_int_16 FAR * png_int_16p; +typedef PNG_CONST png_int_16 FAR * png_const_int_16p; +typedef char FAR * png_charp; +typedef PNG_CONST char FAR * png_const_charp; +typedef png_fixed_point FAR * png_fixed_point_p; +typedef PNG_CONST png_fixed_point FAR * png_const_fixed_point_p; +typedef png_size_t FAR * png_size_tp; +typedef PNG_CONST png_size_t FAR * png_const_size_tp; + +#ifdef PNG_STDIO_SUPPORTED +typedef FILE * png_FILE_p; +#endif + +#ifdef PNG_FLOATING_POINT_SUPPORTED +typedef double FAR * png_doublep; +typedef PNG_CONST double FAR * png_const_doublep; +#endif + +/* Pointers to pointers; i.e. arrays */ +typedef png_byte FAR * FAR * png_bytepp; +typedef png_uint_32 FAR * FAR * png_uint_32pp; +typedef png_int_32 FAR * FAR * png_int_32pp; +typedef png_uint_16 FAR * FAR * png_uint_16pp; +typedef png_int_16 FAR * FAR * png_int_16pp; +typedef PNG_CONST char FAR * FAR * png_const_charpp; +typedef char FAR * FAR * png_charpp; +typedef png_fixed_point FAR * FAR * png_fixed_point_pp; +#ifdef PNG_FLOATING_POINT_SUPPORTED +typedef double FAR * FAR * png_doublepp; +#endif + +/* Pointers to pointers to pointers; i.e., pointer to array */ +typedef char FAR * FAR * FAR * png_charppp; + +/* png_alloc_size_t is guaranteed to be no smaller than png_size_t, + * and no smaller than png_uint_32. Casts from png_size_t or png_uint_32 + * to png_alloc_size_t are not necessary; in fact, it is recommended + * not to use them at all so that the compiler can complain when something + * turns out to be problematic. + * Casts in the other direction (from png_alloc_size_t to png_size_t or + * png_uint_32) should be explicitly applied; however, we do not expect + * to encounter practical situations that require such conversions. + */ +#if defined(__TURBOC__) && !defined(__FLAT__) + typedef unsigned long png_alloc_size_t; +#else +# if defined(_MSC_VER) && defined(MAXSEG_64K) + typedef unsigned long png_alloc_size_t; +# else + /* This is an attempt to detect an old Windows system where (int) is + * actually 16 bits, in that case png_malloc must have an argument with a + * bigger size to accomodate the requirements of the library. + */ +# if (defined(_Windows) || defined(_WINDOWS) || defined(_WINDOWS_)) && \ + (!defined(INT_MAX) || INT_MAX <= 0x7ffffffeL) + typedef DWORD png_alloc_size_t; +# else + typedef png_size_t png_alloc_size_t; +# endif +# endif +#endif + +#endif /* PNGCONF_H */ diff --git a/engine/libs/mingw-libs/pnglibconf.h b/engine/libs/mingw-libs/pnglibconf.h new file mode 100644 index 000000000..cd203f88c --- /dev/null +++ b/engine/libs/mingw-libs/pnglibconf.h @@ -0,0 +1,174 @@ +/* pnglibconf.h - library build configuration */ + +/* libpng version 1.5.0 - January 6, 2011 */ + +/* Copyright (c) 1998-2011 Glenn Randers-Pehrson */ + +/* This code is released under the libpng license. */ +/* For conditions of distribution and use, see the disclaimer */ +/* and license in png.h */ + +/* pnglibconf.h */ +/* Machine generated file: DO NOT EDIT */ +/* Derived from: scripts/pnglibconf.dfa */ +#ifndef PNGLCONF_H +#define PNGLCONF_H +/* settings */ +#define PNG_MAX_GAMMA_8 11 +#define PNG_CALLOC_SUPPORTED +#define PNG_QUANTIZE_RED_BITS 5 +#define PNG_USER_WIDTH_MAX 1000000L +#define PNG_QUANTIZE_GREEN_BITS 5 +#define PNG_API_RULE 0 +#define PNG_QUANTIZE_BLUE_BITS 5 +#define PNG_USER_CHUNK_CACHE_MAX 0 +#define PNG_USER_HEIGHT_MAX 1000000L +#define PNG_sCAL_PRECISION 5 +#define PNG_COST_SHIFT 3 +#define PNG_WEIGHT_SHIFT 8 +#define PNG_USER_CHUNK_MALLOC_MAX 0 +#define PNG_DEFAULT_READ_MACROS 1 +#define PNG_ZBUF_SIZE 8192 +#define PNG_GAMMA_THRESHOLD_FIXED 5000 +/* end of settings */ +/* options */ +#define PNG_INFO_IMAGE_SUPPORTED +#define PNG_HANDLE_AS_UNKNOWN_SUPPORTED +#define PNG_POINTER_INDEXING_SUPPORTED +#define PNG_WARNINGS_SUPPORTED +#define PNG_FLOATING_ARITHMETIC_SUPPORTED +#define PNG_WRITE_SUPPORTED +#define PNG_WRITE_INTERLACING_SUPPORTED +#define PNG_WRITE_16BIT_SUPPORTED +#define PNG_EASY_ACCESS_SUPPORTED +#define PNG_ALIGN_MEMORY_SUPPORTED +#define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED +#define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_USER_LIMITS_SUPPORTED +#define PNG_FIXED_POINT_SUPPORTED +/*#undef PNG_ERROR_NUMBERS_SUPPORTED*/ +#define PNG_ERROR_TEXT_SUPPORTED +#define PNG_READ_SUPPORTED +/*#undef PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED*/ +#define PNG_BENIGN_ERRORS_SUPPORTED +#define PNG_SETJMP_SUPPORTED +#define PNG_WRITE_FLUSH_SUPPORTED +#define PNG_MNG_FEATURES_SUPPORTED +#define PNG_FLOATING_POINT_SUPPORTED +#define PNG_INCH_CONVERSIONS_SUPPORTED +#define PNG_STDIO_SUPPORTED +#define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_USER_MEM_SUPPORTED +#define PNG_IO_STATE_SUPPORTED +#define PNG_SET_USER_LIMITS_SUPPORTED +#define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED +#define PNG_WRITE_INT_FUNCTIONS_SUPPORTED +#define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED +#define PNG_WRITE_FILTER_SUPPORTED +#define PNG_SET_CHUNK_CACHE_LIMIT_SUPPORTED +#define PNG_WRITE_iCCP_SUPPORTED +#define PNG_READ_TRANSFORMS_SUPPORTED +#define PNG_READ_GAMMA_SUPPORTED +#define PNG_READ_bKGD_SUPPORTED +#define PNG_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_READ_sCAL_SUPPORTED +#define PNG_WRITE_hIST_SUPPORTED +#define PNG_READ_OPT_PLTE_SUPPORTED +#define PNG_SET_CHUNK_MALLOC_LIMIT_SUPPORTED +#define PNG_WRITE_gAMA_SUPPORTED +#define PNG_READ_GRAY_TO_RGB_SUPPORTED +#define PNG_WRITE_pCAL_SUPPORTED +#define PNG_READ_INVERT_ALPHA_SUPPORTED +#define PNG_WRITE_TRANSFORMS_SUPPORTED +#define PNG_READ_sBIT_SUPPORTED +#define PNG_READ_PACK_SUPPORTED +#define PNG_WRITE_SWAP_SUPPORTED +#define PNG_READ_cHRM_SUPPORTED +#define PNG_WRITE_tIME_SUPPORTED +#define PNG_READ_INTERLACING_SUPPORTED +#define PNG_READ_tRNS_SUPPORTED +#define PNG_WRITE_pHYs_SUPPORTED +#define PNG_WRITE_INVERT_SUPPORTED +#define PNG_READ_RGB_TO_GRAY_SUPPORTED +#define PNG_WRITE_sRGB_SUPPORTED +#define PNG_READ_oFFs_SUPPORTED +#define PNG_WRITE_FILLER_SUPPORTED +#define PNG_WRITE_TEXT_SUPPORTED +#define PNG_WRITE_SHIFT_SUPPORTED +#define PNG_PROGRESSIVE_READ_SUPPORTED +#define PNG_READ_SHIFT_SUPPORTED +#define PNG_CONVERT_tIME_SUPPORTED +#define PNG_READ_USER_TRANSFORM_SUPPORTED +#define PNG_READ_INT_FUNCTIONS_SUPPORTED +#define PNG_READ_USER_CHUNKS_SUPPORTED +#define PNG_READ_hIST_SUPPORTED +#define PNG_READ_16BIT_SUPPORTED +#define PNG_READ_SWAP_ALPHA_SUPPORTED +#define PNG_READ_COMPOSITE_NODIV_SUPPORTED +#define PNG_SEQUENTIAL_READ_SUPPORTED +#define PNG_READ_BACKGROUND_SUPPORTED +#define PNG_READ_QUANTIZE_SUPPORTED +#define PNG_READ_iCCP_SUPPORTED +#define PNG_READ_STRIP_ALPHA_SUPPORTED +#define PNG_READ_PACKSWAP_SUPPORTED +#define PNG_READ_sRGB_SUPPORTED +#define PNG_WRITE_tEXt_SUPPORTED +#define PNG_READ_gAMA_SUPPORTED +#define PNG_READ_pCAL_SUPPORTED +#define PNG_WRITE_sPLT_SUPPORTED +#define PNG_READ_SWAP_SUPPORTED +#define PNG_READ_tIME_SUPPORTED +#define PNG_READ_pHYs_SUPPORTED +#define PNG_WRITE_SWAP_ALPHA_SUPPORTED +#define PNG_TIME_RFC1123_SUPPORTED +#define PNG_READ_TEXT_SUPPORTED +#define PNG_WRITE_BGR_SUPPORTED +#define PNG_USER_CHUNKS_SUPPORTED +#define PNG_CONSOLE_IO_SUPPORTED +#define PNG_WRITE_PACK_SUPPORTED +#define PNG_READ_FILLER_SUPPORTED +#define PNG_WRITE_bKGD_SUPPORTED +#define PNG_WRITE_tRNS_SUPPORTED +#define PNG_READ_sPLT_SUPPORTED +#define PNG_WRITE_sCAL_SUPPORTED +#define PNG_WRITE_oFFs_SUPPORTED +#define PNG_READ_tEXt_SUPPORTED +#define PNG_WRITE_sBIT_SUPPORTED +#define PNG_READ_INVERT_SUPPORTED +#define PNG_READ_16_TO_8_SUPPORTED +#define PNG_WRITE_cHRM_SUPPORTED +#define PNG_16BIT_SUPPORTED +#define PNG_WRITE_USER_TRANSFORM_SUPPORTED +#define PNG_READ_BGR_SUPPORTED +#define PNG_WRITE_PACKSWAP_SUPPORTED +#define PNG_WRITE_INVERT_ALPHA_SUPPORTED +#define PNG_sCAL_SUPPORTED +#define PNG_WRITE_zTXt_SUPPORTED +#define PNG_USER_TRANSFORM_INFO_SUPPORTED +#define PNG_sBIT_SUPPORTED +#define PNG_cHRM_SUPPORTED +#define PNG_bKGD_SUPPORTED +#define PNG_tRNS_SUPPORTED +#define PNG_WRITE_iTXt_SUPPORTED +#define PNG_oFFs_SUPPORTED +#define PNG_READ_EXPAND_16_SUPPORTED +#define PNG_USER_TRANSFORM_PTR_SUPPORTED +#define PNG_hIST_SUPPORTED +#define PNG_iCCP_SUPPORTED +#define PNG_sRGB_SUPPORTED +#define PNG_READ_zTXt_SUPPORTED +#define PNG_gAMA_SUPPORTED +#define PNG_pCAL_SUPPORTED +#define PNG_CHECK_cHRM_SUPPORTED +#define PNG_tIME_SUPPORTED +#define PNG_READ_EXPAND_SUPPORTED +#define PNG_pHYs_SUPPORTED +#define PNG_READ_iTXt_SUPPORTED +#define PNG_TEXT_SUPPORTED +#define PNG_SAVE_INT_32_SUPPORTED +#define PNG_sPLT_SUPPORTED +#define PNG_tEXt_SUPPORTED +#define PNG_zTXt_SUPPORTED +#define PNG_iTXt_SUPPORTED +/* end of options */ +#endif /* PNGLCONF_H */ diff --git a/engine/libs/mingw64-libs/libpng.a b/engine/libs/mingw64-libs/libpng.a index 2425f6588d0ccab1f5b8697f7876cc50d17f5119..a4cbf038a4998c112521a6ea4c756bad1b1458ff 100755 GIT binary patch literal 188948 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
0L=kckANPg#)L87B`? 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 literal 297496 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