From ec4d6f7b89666a6615734c641fb01f6e6ed12fa7 Mon Sep 17 00:00:00 2001 From: hendricks266 Date: Tue, 6 Sep 2016 02:15:13 +0000 Subject: [PATCH] Windows: Update libpng to 1.6.25, built with GCC 6.2. Fixes warning: type 'struct _SETJMP_FLOAT128' violates one definition rule [-Wodr] git-svn-id: https://svn.eduke32.com/eduke32@5847 1a8010ca-5511-0410-912e-c29ae57300e0 --- .../eduke32/platform/Windows/include/png.h | 930 +++++++++--------- .../platform/Windows/include/pngconf.h | 92 +- .../platform/Windows/include/pnglibconf.h | 23 +- .../platform/Windows/lib/32/libpng_mini.a | Bin 33318 -> 35634 bytes .../platform/Windows/lib/64/libpng_mini.a | Bin 33816 -> 34914 bytes .../eduke32/platform/Windows/lib/minipng.dfa | 4 + 6 files changed, 517 insertions(+), 532 deletions(-) diff --git a/polymer/eduke32/platform/Windows/include/png.h b/polymer/eduke32/platform/Windows/include/png.h index 75e87362d..e1f59c310 100755 --- a/polymer/eduke32/platform/Windows/include/png.h +++ b/polymer/eduke32/platform/Windows/include/png.h @@ -1,8 +1,9 @@ /* png.h - header file for PNG reference library * - * libpng version 1.6.12 - June 12, 2014 - * Copyright (c) 1998-2014 Glenn Randers-Pehrson + * libpng version 1.6.25, September 1, 2016 + * + * Copyright (c) 1998-2002,2004,2006-2016 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.) * @@ -10,17 +11,169 @@ * * 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.6.12 - June 12, 2014: Glenn + * libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger + * libpng versions 0.97, January 1998, through 1.6.25, September 1, 2016: + * Glenn Randers-Pehrson. * See also "Contributing Authors", below. + */ + +/* + * COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: * - * Note about libpng version numbers: + * If you modify libpng you may insert additional notices immediately following + * this sentence. * - * 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: + * This code is released under the libpng license. + * + * Some files in the "contrib" directory and some configure-generated + * files that are distributed with libpng have other copyright owners and + * are released under other open source licenses. + * + * libpng versions 1.0.7, July 1, 2000 through 1.6.25, September 1, 2016 are + * Copyright (c) 2000-2002, 2004, 2006-2016 Glenn Randers-Pehrson, are + * derived from libpng-1.0.6, and are distributed according to the same + * disclaimer and license as libpng-1.0.6 with the following individuals + * added to the list of Contributing Authors: + * + * Simon-Pierre Cadieux + * Eric S. Raymond + * Mans Rullgard + * Cosmin Truta + * Gilles Vollant + * James Yu + * Mandar Sahastrabuddhe + * + * and with the following additions to the disclaimer: + * + * There is no warranty against interference with your enjoyment of the + * library or against infringement. There is no warranty that our + * efforts or the library will fulfill any of your particular purposes + * or needs. This library is provided with all faults, and the entire + * risk of satisfactory quality, performance, accuracy, and effort is with + * the user. + * + * Some files in the "contrib" directory have other copyright owners and + * are released under other open source licenses. + * + * + * libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are + * Copyright (c) 1998-2000 Glenn Randers-Pehrson, are derived from + * libpng-0.96, and are distributed according to the same disclaimer and + * license as libpng-0.96, with the following individuals added to the list + * of Contributing Authors: + * + * Tom Lane + * Glenn Randers-Pehrson + * Willem van Schaik + * + * Some files in the "scripts" directory have different copyright owners + * but are also released under this license. + * + * libpng versions 0.89, June 1996, through 0.96, May 1997, are + * Copyright (c) 1996-1997 Andreas Dilger, are derived from libpng-0.88, + * and are distributed according to the same disclaimer and license as + * libpng-0.88, with the following individuals added to the list of + * Contributing Authors: + * + * John Bowler + * Kevin Bracey + * Sam Bushell + * Magnus Holmgren + * Greg Roelofs + * Tom Tanner + * + * Some files in the "scripts" directory have other copyright owners + * but are released under this license. + * + * libpng versions 0.5, May 1995, through 0.88, January 1996, are + * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. + * + * For the purposes of this copyright and license, "Contributing Authors" + * is defined as the following set of individuals: + * + * Andreas Dilger + * Dave Martindale + * Guy Eric Schalnat + * Paul Schmidt + * Tim Wegner + * + * The PNG Reference Library is supplied "AS IS". The Contributing Authors + * and Group 42, Inc. disclaim all warranties, expressed or implied, + * including, without limitation, the warranties of merchantability and of + * fitness for any purpose. The Contributing Authors and Group 42, Inc. + * assume no liability for direct, indirect, incidental, special, exemplary, + * or consequential damages, which may result from the use of the PNG + * Reference Library, even if advised of the possibility of such damage. + * + * Permission is hereby granted to use, copy, modify, and distribute this + * source code, or portions hereof, for any purpose, without fee, subject + * to the following restrictions: + * + * 1. The origin of this source code must not be misrepresented. + * + * 2. Altered versions must be plainly marked as such and must not + * be misrepresented as being the original source. + * + * 3. This Copyright notice may not be removed or altered from any + * source or altered source distribution. + * + * The Contributing Authors and Group 42, Inc. specifically permit, without + * fee, and encourage the use of this source code as a component to + * supporting the PNG file format in commercial products. If you use this + * source code in a product, acknowledgment is not required but would be + * appreciated. + * + * END OF COPYRIGHT NOTICE, DISCLAIMER, and LICENSE. + * + * TRADEMARK: + * + * The name "libpng" has not been registered by the Copyright owner + * as a trademark in any jurisdiction. However, because libpng has + * been distributed and maintained world-wide, continually since 1995, + * the Copyright owner claims "common-law trademark protection" in any + * jurisdiction where common-law trademark is recognized. + * + * OSI CERTIFICATION: + * + * Libpng is OSI Certified Open Source Software. OSI Certified Open Source is + * a certification mark of the Open Source Initiative. OSI has not addressed + * the additional disclaimers inserted at version 1.0.7. + * + * EXPORT CONTROL: + * + * The Copyright owner believes that the Export Control Classification + * Number (ECCN) for libpng is EAR99, which means not subject to export + * controls or International Traffic in Arms Regulations (ITAR) because + * it is open source, publicly available software, that does not contain + * any encryption software. See the EAR, paragraphs 734.3(b)(3) and + * 734.7(b). + */ + +/* + * A "png_get_copyright" function is available, for convenient use in "about" + * boxes and the like: + * + * printf("%s", png_get_copyright(NULL)); + * + * Also, the PNG logo (in PNG format, of course) is supplied in the + * files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). + */ + +/* + * The contributing authors would like to thank all those who helped + * with testing, bug fixes, and patience. This wouldn't have been + * possible without all of you. + * + * Thanks to Frank J. T. Wojcik for helping with the documentation. + */ + +/* 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 @@ -58,298 +211,48 @@ * 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] - * 1.5.3beta01-10 15 10503 15.so.15.3[.0] - * 1.5.3rc01-02 15 10503 15.so.15.3[.0] - * 1.5.3beta11 15 10503 15.so.15.3[.0] - * 1.5.3 [omitted] - * 1.5.4beta01-08 15 10504 15.so.15.4[.0] - * 1.5.4rc01 15 10504 15.so.15.4[.0] - * 1.5.4 15 10504 15.so.15.4[.0] - * 1.5.5beta01-08 15 10505 15.so.15.5[.0] - * 1.5.5rc01 15 10505 15.so.15.5[.0] - * 1.5.5 15 10505 15.so.15.5[.0] - * 1.5.6beta01-07 15 10506 15.so.15.6[.0] - * 1.5.6rc01-03 15 10506 15.so.15.6[.0] - * 1.5.6 15 10506 15.so.15.6[.0] - * 1.5.7beta01-05 15 10507 15.so.15.7[.0] - * 1.5.7rc01-03 15 10507 15.so.15.7[.0] - * 1.5.7 15 10507 15.so.15.7[.0] - * 1.6.0beta01-40 16 10600 16.so.16.0[.0] - * 1.6.0rc01-08 16 10600 16.so.16.0[.0] - * 1.6.0 16 10600 16.so.16.0[.0] - * 1.6.1beta01-09 16 10601 16.so.16.1[.0] - * 1.6.1rc01 16 10601 16.so.16.1[.0] - * 1.6.1 16 10601 16.so.16.1[.0] - * 1.6.2beta01 16 10602 16.so.16.2[.0] - * 1.6.2rc01-06 16 10602 16.so.16.2[.0] - * 1.6.2 16 10602 16.so.16.2[.0] - * 1.6.3beta01-11 16 10603 16.so.16.3[.0] - * 1.6.3rc01 16 10603 16.so.16.3[.0] - * 1.6.3 16 10603 16.so.16.3[.0] - * 1.6.4beta01-02 16 10604 16.so.16.4[.0] - * 1.6.4rc01 16 10604 16.so.16.4[.0] - * 1.6.4 16 10604 16.so.16.4[.0] - * 1.6.5 16 10605 16.so.16.5[.0] - * 1.6.6 16 10606 16.so.16.6[.0] - * 1.6.7beta01-04 16 10607 16.so.16.7[.0] - * 1.6.7rc01-03 16 10607 16.so.16.7[.0] - * 1.6.7 16 10607 16.so.16.7[.0] - * 1.6.8beta01-02 16 10608 16.so.16.8[.0] - * 1.6.8rc01-02 16 10608 16.so.16.8[.0] - * 1.6.8 16 10608 16.so.16.8[.0] - * 1.6.9beta01-04 16 10609 16.so.16.9[.0] - * 1.6.9rc01-02 16 10609 16.so.16.9[.0] - * 1.6.9 16 10609 16.so.16.9[.0] - * 1.6.10beta01-03 16 10610 16.so.16.10[.0] - * 1.6.10rc01-03 16 10610 16.so.16.10[.0] - * 1.6.10 16 10610 16.so.16.10[.0] - * 1.6.11beta01-06 16 10611 16.so.16.11[.0] - * 1.6.11rc01-02 16 10611 16.so.16.11[.0] - * 1.6.11 16 10611 16.so.16.11[.0] - * 1.6.12rc01-03 16 10612 16.so.16.12[.0] - * 1.6.12 16 10612 16.so.16.12[.0] + * ... + * 1.0.19 10 10019 10.so.0.19[.0] + * ... + * 1.2.56 13 10256 12.so.0.56[.0] + * ... + * 1.5.27 15 10527 15.so.15.27[.0] + * ... + * 1.6.25 16 10625 16.so.16.25[.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 "rcNN". + * 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 "rcNN". * - * 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. + * 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). + * 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, 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 0x8000 /* ESR, 1.0.6 */ +#define PNG_INFO_gAMA 0x0001U +#define PNG_INFO_sBIT 0x0002U +#define PNG_INFO_cHRM 0x0004U +#define PNG_INFO_PLTE 0x0008U +#define PNG_INFO_tRNS 0x0010U +#define PNG_INFO_bKGD 0x0020U +#define PNG_INFO_hIST 0x0040U +#define PNG_INFO_pHYs 0x0080U +#define PNG_INFO_oFFs 0x0100U +#define PNG_INFO_tIME 0x0200U +#define PNG_INFO_pCAL 0x0400U +#define PNG_INFO_sRGB 0x0800U /* GR-P, 0.96a */ +#define PNG_INFO_iCCP 0x1000U /* ESR, 1.0.6 */ +#define PNG_INFO_sPLT 0x2000U /* ESR, 1.0.6 */ +#define PNG_INFO_sCAL 0x4000U /* ESR, 1.0.6 */ +#define PNG_INFO_IDAT 0x8000U /* 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 @@ -977,7 +884,9 @@ PNG_FUNCTION(void, (PNGCAPI *png_longjmp_ptr), PNGARG((jmp_buf, int)), typedef); #define PNG_TRANSFORM_GRAY_TO_RGB 0x2000 /* read only */ /* Added to libpng-1.5.4 */ #define PNG_TRANSFORM_EXPAND_16 0x4000 /* read only */ +#if INT_MAX >= 0x8000 /* else this might break */ #define PNG_TRANSFORM_SCALE_16 0x8000 /* read only */ +#endif /* Flags for MNG supported features */ #define PNG_FLAG_MNG_EMPTY_PLTE 0x01 @@ -994,7 +903,7 @@ 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)); -/* Section 3: exported functions +/* Section 4: 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 @@ -1170,7 +1079,7 @@ PNG_EXPORT(24, void, png_convert_from_struct_tm, (png_timep ptime, /* 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 */ +#endif /* CONVERT_tIME */ #ifdef PNG_READ_EXPAND_SUPPORTED /* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */ @@ -1367,16 +1276,16 @@ PNG_EXPORT(38, void, png_set_invert_alpha, (png_structrp 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. */ +/* Add a filler byte to 8-bit or 16-bit Gray or 24-bit or 48-bit RGB images. */ PNG_EXPORT(39, void, png_set_filler, (png_structrp 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. */ +/* Add an alpha byte to 8-bit or 16-bit Gray or 24-bit or 48-bit RGB images. */ PNG_EXPORT(40, void, png_set_add_alpha, (png_structrp png_ptr, png_uint_32 filler, int flags)); -#endif /* PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED */ +#endif /* READ_FILLER || WRITE_FILLER */ #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) /* Swap bytes in 16-bit depth files. */ @@ -1442,7 +1351,7 @@ PNG_EXPORT(229, void, png_set_scale_16, (png_structrp png_ptr)); #endif #ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED -#define PNG_READ_16_TO_8 SUPPORTED /* Name prior to 1.5.4 */ +#define PNG_READ_16_TO_8_SUPPORTED /* Name prior to 1.5.4 */ /* Strip the second byte of information from a 16-bit depth file. */ PNG_EXPORT(48, void, png_set_strip_16, (png_structrp png_ptr)); #endif @@ -1566,6 +1475,7 @@ PNG_EXPORT(66, void, png_set_crc_action, (png_structrp png_ptr, int crit_action, #define PNG_CRC_QUIET_USE 4 /* quiet/use data quiet/use data */ #define PNG_CRC_NO_CHANGE 5 /* use current value use current value */ +#ifdef PNG_WRITE_SUPPORTED /* 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. @@ -1579,6 +1489,7 @@ PNG_EXPORT(66, void, png_set_crc_action, (png_structrp png_ptr, int crit_action, */ PNG_EXPORT(67, void, png_set_filter, (png_structrp png_ptr, int method, int filters)); +#endif /* WRITE */ /* 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 @@ -1591,8 +1502,8 @@ PNG_EXPORT(67, void, png_set_filter, (png_structrp png_ptr, int method, #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) +#define PNG_FAST_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP) +#define PNG_ALL_FILTERS (PNG_FAST_FILTERS | PNG_FILTER_AVG | PNG_FILTER_PAETH) /* Filter values (not flags) - used in pngwrite.c, pngwutil.c for now. * These defines should NOT be changed. @@ -1604,35 +1515,8 @@ PNG_EXPORT(67, void, png_set_filter, (png_structrp png_ptr, int method, #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_WRITE_SUPPORTED +#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED /* DEPRECATED */ PNG_FP_EXPORT(68, void, png_set_filter_heuristics, (png_structrp png_ptr, int heuristic_method, int num_weights, png_const_doublep filter_weights, png_const_doublep filter_costs)) @@ -1640,17 +1524,14 @@ PNG_FIXED_EXPORT(209, void, png_set_filter_heuristics_fixed, (png_structrp 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 */ +#endif /* WRITE_WEIGHTED_FILTER */ -/* Heuristic used for row filter selection. These defines should NOT be - * changed. - */ +/* The following are no longer used and will be removed from libpng-1.7: */ #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 */ -#ifdef PNG_WRITE_SUPPORTED /* 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 @@ -1658,6 +1539,7 @@ PNG_FIXED_EXPORT(209, void, png_set_filter_heuristics_fixed, * for PNG images, and do considerably fewer caclulations. In the future, * these values may not correspond directly to the zlib compression levels. */ +#ifdef PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED PNG_EXPORT(69, void, png_set_compression_level, (png_structrp png_ptr, int level)); @@ -1675,7 +1557,7 @@ PNG_EXPORT(72, void, png_set_compression_window_bits, (png_structrp png_ptr, PNG_EXPORT(73, void, png_set_compression_method, (png_structrp png_ptr, int method)); -#endif +#endif /* WRITE_CUSTOMIZE_COMPRESSION */ #ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED /* Also set zlib parameters for compressing non-IDAT chunks */ @@ -1696,7 +1578,8 @@ PNG_EXPORT(225, void, png_set_text_compression_window_bits, PNG_EXPORT(226, void, png_set_text_compression_method, (png_structrp png_ptr, int method)); -#endif /* PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED */ +#endif /* WRITE_CUSTOMIZE_ZTXT_COMPRESSION */ +#endif /* WRITE */ /* These next functions are called for input/output, memory, and error * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c, @@ -1807,7 +1690,7 @@ PNG_EXPORT(218, png_byte, png_get_current_pass_number, (png_const_structrp)); * * The integer return from the callback function is interpreted thus: * - * negative: An error occured, png_chunk_error will be called. + * negative: An error occurred; png_chunk_error will be called. * zero: The chunk was not handled, the chunk will be saved. A critical * chunk will cause an error at this point unless it is to be saved. * positive: The chunk was handled, libpng will ignore/discard it. @@ -1863,7 +1746,7 @@ PNG_EXPORT(220, png_uint_32, png_process_data_skip, (png_structrp)); */ PNG_EXPORT(93, void, png_progressive_combine_row, (png_const_structrp png_ptr, png_bytep old_row, png_const_bytep new_row)); -#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ +#endif /* PROGRESSIVE_READ */ PNG_EXPORTA(94, png_voidp, png_malloc, (png_const_structrp png_ptr, png_alloc_size_t size), PNG_ALLOCATED); @@ -1897,21 +1780,21 @@ PNG_EXPORT(99, void, png_data_freer, (png_const_structrp png_ptr, #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_HIST 0x0008U +#define PNG_FREE_ICCP 0x0010U +#define PNG_FREE_SPLT 0x0020U +#define PNG_FREE_ROWS 0x0040U +#define PNG_FREE_PCAL 0x0080U +#define PNG_FREE_SCAL 0x0100U #ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED -# define PNG_FREE_UNKN 0x0200 +# define PNG_FREE_UNKN 0x0200U #endif -/* PNG_FREE_LIST 0x0400 removed in 1.6.0 because it is ignored */ -#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 */ +/* PNG_FREE_LIST 0x0400U removed in 1.6.0 because it is ignored */ +#define PNG_FREE_PLTE 0x1000U +#define PNG_FREE_TRNS 0x2000U +#define PNG_FREE_TEXT 0x4000U +#define PNG_FREE_ALL 0x7fffU +#define PNG_FREE_MUL 0x4220U /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */ #ifdef PNG_USER_MEM_SUPPORTED PNG_EXPORTA(100, png_voidp, png_malloc_default, (png_const_structrp png_ptr, @@ -2064,7 +1947,7 @@ PNG_EXPORT(128, png_int_32, png_get_x_offset_microns, PNG_EXPORT(129, png_int_32, png_get_y_offset_microns, (png_const_structrp png_ptr, png_const_inforp info_ptr)); -#endif /* PNG_EASY_ACCESS_SUPPORTED */ +#endif /* EASY_ACCESS */ #ifdef PNG_READ_SUPPORTED /* Returns pointer to signature string read from PNG header */ @@ -2316,7 +2199,7 @@ PNG_FIXED_EXPORT(213, void, png_set_sCAL_fixed, (png_const_structrp png_ptr, PNG_EXPORT(171, void, png_set_sCAL_s, (png_const_structrp png_ptr, png_inforp info_ptr, int unit, png_const_charp swidth, png_const_charp sheight)); -#endif /* PNG_sCAL_SUPPORTED */ +#endif /* sCAL */ #ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED /* Provide the default handling for all unknown chunks or, optionally, for @@ -2417,8 +2300,10 @@ PNG_EXPORT(171, void, png_set_sCAL_s, (png_const_structrp png_ptr, * except for the IHDR, PLTE, tRNS, IDAT, and IEND chunks (which continue to * be processed by libpng. */ +#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED PNG_EXPORT(172, void, png_set_keep_unknown_chunks, (png_structrp png_ptr, int keep, png_const_bytep chunk_list, int num_chunks)); +#endif /* HANDLE_AS_UNKNOWN */ /* The "keep" PNG_HANDLE_CHUNK_ parameter for the specified chunk is returned; * the result is therefore true (non-zero) if special handling is required, @@ -2426,7 +2311,7 @@ PNG_EXPORT(172, void, png_set_keep_unknown_chunks, (png_structrp png_ptr, */ PNG_EXPORT(173, int, png_handle_as_unknown, (png_const_structrp png_ptr, png_const_bytep chunk_name)); -#endif +#endif /* SET_UNKNOWN_CHUNKS */ #ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED PNG_EXPORT(174, void, png_set_unknown_chunks, (png_const_structrp png_ptr, @@ -2544,8 +2429,8 @@ PNG_FIXED_EXPORT(212, png_fixed_point, png_get_y_offset_inches_fixed, PNG_EXPORT(198, png_uint_32, png_get_pHYs_dpi, (png_const_structrp png_ptr, png_const_inforp info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)); -# endif /* PNG_pHYs_SUPPORTED */ -#endif /* PNG_INCH_CONVERSIONS_SUPPORTED */ +# endif /* pHYs */ +#endif /* INCH_CONVERSIONS */ /* Added in libpng-1.4.0 */ #ifdef PNG_IO_STATE_SUPPORTED @@ -2568,7 +2453,7 @@ PNG_EXPORT(216, png_uint_32, png_get_io_chunk_type, # 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 */ +#endif /* IO_STATE */ /* Interlace support. The following macros are always defined so that if * libpng interlace handling is turned off the macros may be used to handle @@ -2647,32 +2532,38 @@ PNG_EXPORT(216, png_uint_32, png_get_io_chunk_type, /* 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)) + 128); \ - (composite) = (png_byte)((temp + (temp >> 8)) >> 8); } +# 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)) + 128); \ + (composite) = (png_byte)(((temp + (temp >> 8)) >> 8) & 0xff); \ + } -# 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)*(65535 \ - - (png_uint_32)(alpha)) + 32768); \ - (composite) = (png_uint_16)((temp + (temp >> 16)) >> 16); } +# 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)*(65535 \ + - (png_uint_32)(alpha)) + 32768); \ + (composite) = (png_uint_16)(0xffff & ((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)) + \ - 127) / 255) +# define png_composite(composite, fg, alpha, bg) \ + (composite) = \ + (png_byte)(0xff & (((png_uint_16)(fg) * (png_uint_16)(alpha) + \ + (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \ + 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)(65535 - (png_uint_32)(alpha)) + \ - 32767) / 65535) -#endif /* PNG_READ_COMPOSITE_NODIV_SUPPORTED */ +# define png_composite_16(composite, fg, alpha, bg) \ + (composite) = \ + (png_uint_16)(0xffff & (((png_uint_32)(fg) * (png_uint_32)(alpha) + \ + (png_uint_32)(bg)*(png_uint_32)(65535 - (png_uint_32)(alpha)) + \ + 32767) / 65535)) +#endif /* READ_COMPOSITE_NODIV */ #ifdef PNG_READ_INT_FUNCTIONS_SUPPORTED PNG_EXPORT(201, png_uint_32, png_get_uint_32, (png_const_bytep buf)); @@ -2707,43 +2598,52 @@ PNG_EXPORT(207, void, png_save_uint_16, (png_bytep buf, unsigned int i)); * 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)))) + (((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))))) + ((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))) + ((png_int_32)((*(buf) & 0x80) \ + ? -((png_int_32)(((png_get_uint_32(buf)^0xffffffffU)+1U)&0x7fffffffU)) \ + : (png_int_32)png_get_uint_32(buf))) - /* If PNG_PREFIX is defined the same thing as below happens in pnglibconf.h, - * but defining a macro name prefixed with PNG_PREFIX. - */ +/* If PNG_PREFIX is defined the same thing as below happens in pnglibconf.h, + * but defining a macro name prefixed with PNG_PREFIX. + */ # ifndef PNG_PREFIX -# define png_get_uint_32(buf) PNG_get_uint_32(buf) -# define png_get_uint_16(buf) PNG_get_uint_16(buf) -# define png_get_int_32(buf) PNG_get_int_32(buf) +# define png_get_uint_32(buf) PNG_get_uint_32(buf) +# define png_get_uint_16(buf) PNG_get_uint_16(buf) +# define png_get_int_32(buf) PNG_get_int_32(buf) # endif #else # ifdef PNG_PREFIX - /* No macros; revert to the (redefined) function */ -# define PNG_get_uint_32 (png_get_uint_32) -# define PNG_get_uint_16 (png_get_uint_16) -# define PNG_get_int_32 (png_get_int_32) + /* No macros; revert to the (redefined) function */ +# define PNG_get_uint_32 (png_get_uint_32) +# define PNG_get_uint_16 (png_get_uint_16) +# define PNG_get_int_32 (png_get_int_32) # endif #endif +#ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED +PNG_EXPORT(242, void, png_set_check_for_invalid_index, + (png_structrp png_ptr, int allowed)); +# ifdef PNG_GET_PALETTE_MAX_SUPPORTED +PNG_EXPORT(243, int, png_get_palette_max, (png_const_structp png_ptr, + png_const_infop info_ptr)); +# endif +#endif /* CHECK_FOR_INVALID_INDEX */ + /******************************************************************************* - * SIMPLIFIED API + * Section 5: SIMPLIFIED API ******************************************************************************* * * Please read the documentation in libpng-manual.txt (TODO: write said @@ -2759,8 +2659,9 @@ PNG_EXPORT(207, void, png_save_uint_16, (png_bytep buf, unsigned int i)); * * To read a PNG file using the simplified API: * - * 1) Declare a 'png_image' structure (see below) on the stack and set the - * version field to PNG_IMAGE_VERSION. + * 1) Declare a 'png_image' structure (see below) on the stack, set the + * version field to PNG_IMAGE_VERSION and the 'opaque' pointer to NULL + * (this is REQUIRED, your program may crash if you don't do it.) * 2) Call the appropriate png_image_begin_read... function. * 3) Set the png_image 'format' member to the required sample format. * 4) Allocate a buffer for the image and, if required, the color-map. @@ -2787,6 +2688,9 @@ PNG_EXPORT(207, void, png_save_uint_16, (png_bytep buf, unsigned int i)); * when it is being read or defines the in-memory format of an image that you * need to write: */ +#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) || \ + defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) + #define PNG_IMAGE_VERSION 1 typedef struct png_control *png_controlp; @@ -2813,7 +2717,7 @@ typedef struct # define PNG_IMAGE_WARNING 1 # define PNG_IMAGE_ERROR 2 /* - * The result is a two bit code such that a value more than 1 indicates + * The result is a two-bit code such that a value more than 1 indicates * a failure in the API just called: * * 0 - no warning or error @@ -2886,7 +2790,7 @@ typedef struct * called to read or write the color-map and set the format correctly for the * image data. Do not set the PNG_FORMAT_FLAG_COLORMAP bit directly! * - * NOTE: libpng can be built with particular features disabled, if you see + * NOTE: libpng can be built with particular features disabled. If you see * compiler errors because the definition of one of the following flags has been * compiled out it is because libpng does not have the required support. It is * possible, however, for the libpng configuration to enable the format on just @@ -2898,7 +2802,7 @@ typedef struct */ #define PNG_FORMAT_FLAG_ALPHA 0x01U /* format with an alpha channel */ #define PNG_FORMAT_FLAG_COLOR 0x02U /* color format: otherwise grayscale */ -#define PNG_FORMAT_FLAG_LINEAR 0x04U /* 2 byte channels else 1 byte */ +#define PNG_FORMAT_FLAG_LINEAR 0x04U /* 2-byte channels else 1-byte */ #define PNG_FORMAT_FLAG_COLORMAP 0x08U /* image data is color-mapped */ #ifdef PNG_FORMAT_BGR_SUPPORTED @@ -3020,12 +2924,19 @@ typedef struct * is the minimum 'row stride', the minimum count of components between each * row. For a color-mapped image this is the minimum number of bytes in a * row. + * + * WARNING: this macro overflows for some images with more than one component + * and very large image widths. libpng will refuse to process an image where + * this macro would overflow. */ #define PNG_IMAGE_BUFFER_SIZE(image, row_stride)\ (PNG_IMAGE_PIXEL_COMPONENT_SIZE((image).format)*(image).height*(row_stride)) /* Return the size, in bytes, of an image buffer given a png_image and a row * stride - the number of components to leave space for in each row. + * + * WARNING: this macro overflows a 32-bit integer for some large PNG images, + * libpng will refuse to process an image where such an overflow would occur. */ #define PNG_IMAGE_SIZE(image)\ @@ -3098,7 +3009,7 @@ PNG_EXPORT(234, int, png_image_begin_read_from_file, (png_imagep image, PNG_EXPORT(235, int, png_image_begin_read_from_stdio, (png_imagep image, FILE* file)); /* The PNG header is read from the stdio FILE object. */ -#endif /* PNG_STDIO_SUPPORTED */ +#endif /* STDIO */ PNG_EXPORT(236, int, png_image_begin_read_from_memory, (png_imagep image, png_const_voidp memory, png_size_t size)); @@ -3143,10 +3054,9 @@ PNG_EXPORT(238, void, png_image_free, (png_imagep image)); /* Free any data allocated by libpng in image->opaque, setting the pointer to * NULL. May be called at any time after the structure is initialized. */ -#endif /* PNG_SIMPLIFIED_READ_SUPPORTED */ +#endif /* SIMPLIFIED_READ */ #ifdef PNG_SIMPLIFIED_WRITE_SUPPORTED -#ifdef PNG_STDIO_SUPPORTED /* WRITE APIS * ---------- * For write you must initialize a png_image structure to describe the image to @@ -3163,6 +3073,7 @@ PNG_EXPORT(238, void, png_image_free, (png_imagep image)); * values do not correspond to the colors in sRGB. * colormap_entries: set to the number of entries in the color-map (0 to 256) */ +#ifdef PNG_SIMPLIFIED_WRITE_STDIO_SUPPORTED PNG_EXPORT(239, int, png_image_write_to_file, (png_imagep image, const char *file, int convert_to_8bit, const void *buffer, png_int_32 row_stride, const void *colormap)); @@ -3172,8 +3083,9 @@ PNG_EXPORT(240, int, png_image_write_to_stdio, (png_imagep image, FILE *file, int convert_to_8_bit, const void *buffer, png_int_32 row_stride, const void *colormap)); /* Write the image to the given (FILE*). */ +#endif /* SIMPLIFIED_WRITE_STDIO */ -/* With both write APIs if image is in one of the linear formats with 16-bit +/* With all write APIs if image is in one of the linear formats with 16-bit * data then setting convert_to_8_bit will cause the output to be an 8-bit PNG * gamma encoded according to the sRGB specification, otherwise a 16-bit linear * encoded PNG file is written. @@ -3185,27 +3097,111 @@ PNG_EXPORT(240, int, png_image_write_to_stdio, (png_imagep image, FILE *file, * * With all APIs row_stride is handled as in the read APIs - it is the spacing * from one row to the next in component sized units (1 or 2 bytes) and if - * negative indicates a bottom-up row layout in the buffer. + * negative indicates a bottom-up row layout in the buffer. If row_stride is + * zero, libpng will calculate it for you from the image width and number of + * channels. * - * Note that the write API does not support interlacing or sub-8-bit pixels. + * Note that the write API does not support interlacing, sub-8-bit pixels or + * most ancillary chunks. If you need to write text chunks (e.g. for copyright + * notices) you need to use one of the other APIs. */ -#endif /* PNG_STDIO_SUPPORTED */ -#endif /* PNG_SIMPLIFIED_WRITE_SUPPORTED */ + +PNG_EXPORT(245, int, png_image_write_to_memory, (png_imagep image, void *memory, + png_alloc_size_t * PNG_RESTRICT memory_bytes, int convert_to_8_bit, + const void *buffer, png_int_32 row_stride, const void *colormap)); + /* Write the image to the given memory buffer. The function both writes the + * whole PNG data stream to *memory and updates *memory_bytes with the count + * of bytes written. + * + * 'memory' may be NULL. In this case *memory_bytes is not read however on + * success the number of bytes which would have been written will still be + * stored in *memory_bytes. On failure *memory_bytes will contain 0. + * + * If 'memory' is not NULL it must point to memory[*memory_bytes] of + * writeable memory. + * + * If the function returns success memory[*memory_bytes] (if 'memory' is not + * NULL) contains the written PNG data. *memory_bytes will always be less + * than or equal to the original value. + * + * If the function returns false and *memory_bytes was not changed an error + * occured during write. If *memory_bytes was changed, or is not 0 if + * 'memory' was NULL, the write would have succeeded but for the memory + * buffer being too small. *memory_bytes contains the required number of + * bytes and will be bigger that the original value. + */ + +#define png_image_write_get_memory_size(image, size, convert_to_8_bit, buffer,\ + row_stride, colormap)\ + png_image_write_to_memory(&(image), 0, &(size), convert_to_8_bit, buffer,\ + row_stride, colormap) + /* Return the amount of memory in 'size' required to compress this image. + * The png_image structure 'image' must be filled in as in the above + * function and must not be changed before the actual write call, the buffer + * and all other parameters must also be identical to that in the final + * write call. The 'size' variable need not be initialized. + * + * NOTE: the macro returns true/false, if false is returned 'size' will be + * set to zero and the write failed and probably will fail if tried again. + */ + +/* You can pre-allocate the buffer by making sure it is of sufficient size + * regardless of the amount of compression achieved. The buffer size will + * always be bigger than the original image and it will never be filled. The + * following macros are provided to assist in allocating the buffer. + */ +#define PNG_IMAGE_DATA_SIZE(image) (PNG_IMAGE_SIZE(image)+(image).height) + /* The number of uncompressed bytes in the PNG byte encoding of the image; + * uncompressing the PNG IDAT data will give this number of bytes. + * + * NOTE: while PNG_IMAGE_SIZE cannot overflow for an image in memory this + * macro can because of the extra bytes used in the PNG byte encoding. You + * need to avoid this macro if your image size approaches 2^30 in width or + * height. The same goes for the remainder of these macros; they all produce + * bigger numbers than the actual in-memory image size. + */ +#ifndef PNG_ZLIB_MAX_SIZE +# define PNG_ZLIB_MAX_SIZE(b) ((b)+(((b)+7U)>>3)+(((b)+63U)>>6)+11U) + /* An upper bound on the number of compressed bytes given 'b' uncompressed + * bytes. This is based on deflateBounds() in zlib; different + * implementations of zlib compression may conceivably produce more data so + * if your zlib implementation is not zlib itself redefine this macro + * appropriately. + */ +#endif + +#define PNG_IMAGE_COMPRESSED_SIZE_MAX(image)\ + PNG_ZLIB_MAX_SIZE((png_alloc_size_t)PNG_IMAGE_DATA_SIZE(image)) + /* An upper bound on the size of the data in the PNG IDAT chunks. */ + +#define PNG_IMAGE_PNG_SIZE_MAX_(image, image_size)\ + ((8U/*sig*/+25U/*IHDR*/+16U/*gAMA*/+44U/*cHRM*/+12U/*IEND*/+\ + (((image).format&PNG_FORMAT_FLAG_COLORMAP)?/*colormap: PLTE, tRNS*/\ + 12U+3U*(image).colormap_entries/*PLTE data*/+\ + (((image).format&PNG_FORMAT_FLAG_ALPHA)?\ + 12U/*tRNS*/+(image).colormap_entries:0U):0U)+\ + 12U)+(12U*((image_size)/PNG_ZBUF_SIZE))/*IDAT*/+(image_size)) + /* A helper for the following macro; if your compiler cannot handle the + * following macro use this one with the result of + * PNG_IMAGE_COMPRESSED_SIZE_MAX(image) as the second argument (most + * compilers should handle this just fine.) + */ + +#define PNG_IMAGE_PNG_SIZE_MAX(image)\ + PNG_IMAGE_PNG_SIZE_MAX_(image, PNG_IMAGE_COMPRESSED_SIZE_MAX(image)) + /* An upper bound on the total length of the PNG data stream for 'image'. + * The result is of type png_alloc_size_t, on 32-bit systems this may + * overflow even though PNG_IMAGE_DATA_SIZE does not overflow; the write will + * run out of buffer space but return a corrected size which should work. + */ +#endif /* SIMPLIFIED_WRITE */ /******************************************************************************* * END OF SIMPLIFIED API ******************************************************************************/ - -#ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED -PNG_EXPORT(242, void, png_set_check_for_invalid_index, - (png_structrp png_ptr, int allowed)); -# ifdef PNG_GET_PALETTE_MAX_SUPPORTED -PNG_EXPORT(243, int, png_get_palette_max, (png_const_structp png_ptr, - png_const_infop info_ptr)); -# endif -#endif /* CHECK_FOR_INVALID_INDEX */ +#endif /* SIMPLIFIED_{READ|WRITE} */ /******************************************************************************* - * IMPLEMENTATION OPTIONS + * Section 6: IMPLEMENTATION OPTIONS ******************************************************************************* * * Support for arbitrary implementation-specific optimizations. The API allows @@ -3231,7 +3227,10 @@ PNG_EXPORT(243, int, png_get_palette_max, (png_const_structp png_ptr, #endif #define PNG_MAXIMUM_INFLATE_WINDOW 2 /* SOFTWARE: force maximum window */ #define PNG_SKIP_sRGB_CHECK_PROFILE 4 /* SOFTWARE: Check ICC profile for sRGB */ -#define PNG_OPTION_NEXT 6 /* Next option - numbers must be even */ +#ifdef PNG_MIPS_MSA_API_SUPPORTED +# define PNG_MIPS_MSA 6 /* HARDWARE: MIPS Msa SIMD instructions supported */ +#endif +#define PNG_OPTION_NEXT 8 /* Next option - numbers must be even */ /* Return values: NOTE: there are four values and 'off' is *not* zero */ #define PNG_OPTION_UNSET 0 /* Unset - defaults to off */ @@ -3241,22 +3240,21 @@ PNG_EXPORT(243, int, png_get_palette_max, (png_const_structp png_ptr, PNG_EXPORT(244, int, png_set_option, (png_structrp png_ptr, int option, int onoff)); -#endif +#endif /* SET_OPTION */ /******************************************************************************* * END OF HARDWARE AND SOFTWARE OPTIONS ******************************************************************************/ -/* Maintainer: Put new public prototypes here ^, in libpng.3, and project - * defs, scripts/pnglibconf.h, and scripts/pnglibconf.h.prebuilt +/* Maintainer: Put new public prototypes here ^, in libpng.3, in project + * defs, and in scripts/symbols.def. */ /* 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. + * one to use is one more than this.) */ #ifdef PNG_EXPORT_LAST_ORDINAL - PNG_EXPORT_LAST_ORDINAL(244); + PNG_EXPORT_LAST_ORDINAL(245); #endif #ifdef __cplusplus diff --git a/polymer/eduke32/platform/Windows/include/pngconf.h b/polymer/eduke32/platform/Windows/include/pngconf.h index 72ec81fa2..08b423966 100755 --- a/polymer/eduke32/platform/Windows/include/pngconf.h +++ b/polymer/eduke32/platform/Windows/include/pngconf.h @@ -1,9 +1,9 @@ /* pngconf.h - machine configurable file for libpng * - * libpng version 1.6.12 - June 12, 2014 + * libpng version 1.6.25, September 1, 2016 * - * Copyright (c) 1998-2014 Glenn Randers-Pehrson + * Copyright (c) 1998-2002,2004,2006-2016 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.) * @@ -11,9 +11,7 @@ * 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 + * 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. @@ -22,26 +20,6 @@ #ifndef PNGCONF_H #define PNGCONF_H -/* To do: Do all of this in scripts/pnglibconf.dfa */ -#ifdef PNG_SAFE_LIMITS_SUPPORTED -# ifdef PNG_USER_WIDTH_MAX -# undef PNG_USER_WIDTH_MAX -# define PNG_USER_WIDTH_MAX 1000000L -# endif -# ifdef PNG_USER_HEIGHT_MAX -# undef PNG_USER_HEIGHT_MAX -# define PNG_USER_HEIGHT_MAX 1000000L -# endif -# ifdef PNG_USER_CHUNK_MALLOC_MAX -# undef PNG_USER_CHUNK_MALLOC_MAX -# define PNG_USER_CHUNK_MALLOC_MAX 4000000L -# endif -# ifdef PNG_USER_CHUNK_CACHE_MAX -# undef PNG_USER_CHUNK_CACHE_MAX -# define PNG_USER_CHUNK_CACHE_MAX 128 -# endif -#endif - #ifndef PNG_BUILDING_SYMBOL_TABLE /* else includes may cause problems */ /* From libpng 1.6.0 libpng requires an ANSI X3.159-1989 ("ISOC90") compliant C @@ -85,7 +63,7 @@ */ #define PNG_CONST const /* backward compatibility only */ -/* This controls optimization of the reading of 16 and 32 bit values +/* This controls optimization of the reading of 16-bit 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 when the function is called. * The library builder sets the default; if read functions are not @@ -210,27 +188,27 @@ * 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! - */ + /* 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 - /* If this line results in an error __stdcall is not understood and - * PNG_API_RULE should not have been set to '1'. - */ + /* If this line results in an error __stdcall is not understood and + * PNG_API_RULE should not have been set to '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. - */ + /* 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 @@ -247,10 +225,10 @@ # 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. - */ + /* 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 @@ -266,9 +244,9 @@ # 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!) - */ + /* 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 */ @@ -289,7 +267,7 @@ */ #ifndef PNG_IMPEXP # if defined(PNG_USE_DLL) && defined(PNG_DLL_IMPORT) - /* This forces use of a DLL, disallowing static linking */ + /* This forces use of a DLL, disallowing static linking */ # define PNG_IMPEXP PNG_DLL_IMPORT # endif @@ -317,11 +295,11 @@ * 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) +#ifndef PNG_EXPORTA +# define PNG_EXPORTA(ordinal, type, name, args, attributes) \ + PNG_FUNCTION(PNG_EXPORT_TYPE(type), (PNGAPI name), PNGARG(args), \ + PNG_LINKAGE_API attributes) #endif /* ANSI-C (C90) does not permit a macro to be invoked with an empty argument, @@ -329,7 +307,7 @@ */ #define PNG_EMPTY /*empty list*/ -#define PNG_EXPORT(ordinal, type, name, args)\ +#define PNG_EXPORT(ordinal, type, name, args) \ PNG_EXPORTA(ordinal, type, name, args, PNG_EMPTY) /* Use PNG_REMOVED to comment out a removed interface. */ @@ -362,7 +340,7 @@ * less efficient code. */ # if defined(__clang__) && defined(__has_attribute) - /* Clang defines both __clang__ and __GNUC__. Check __clang__ first. */ + /* Clang defines both __clang__ and __GNUC__. Check __clang__ first. */ # if !defined(PNG_USE_RESULT) && __has_attribute(__warn_unused_result__) # define PNG_USE_RESULT __attribute__((__warn_unused_result__)) # endif @@ -502,7 +480,7 @@ #if CHAR_BIT == 8 && UCHAR_MAX == 255 typedef unsigned char png_byte; #else -# error "libpng requires 8 bit bytes" +# error "libpng requires 8-bit bytes" #endif #if INT_MIN == -32768 && INT_MAX == 32767 @@ -510,7 +488,7 @@ #elif SHRT_MIN == -32768 && SHRT_MAX == 32767 typedef short png_int_16; #else -# error "libpng requires a signed 16 bit type" +# error "libpng requires a signed 16-bit type" #endif #if UINT_MAX == 65535 @@ -518,7 +496,7 @@ #elif USHRT_MAX == 65535 typedef unsigned short png_uint_16; #else -# error "libpng requires an unsigned 16 bit type" +# error "libpng requires an unsigned 16-bit type" #endif #if INT_MIN < -2147483646 && INT_MAX > 2147483646 @@ -526,7 +504,7 @@ #elif LONG_MIN < -2147483646 && LONG_MAX > 2147483646 typedef long int png_int_32; #else -# error "libpng requires a signed 32 bit (or more) type" +# error "libpng requires a signed 32-bit (or more) type" #endif #if UINT_MAX > 4294967294 @@ -534,7 +512,7 @@ #elif ULONG_MAX > 4294967294 typedef unsigned long int png_uint_32; #else -# error "libpng requires an unsigned 32 bit (or more) type" +# error "libpng requires an unsigned 32-bit (or more) type" #endif /* Prior to 1.6.0 it was possible to disable the use of size_t, 1.6.0, however, diff --git a/polymer/eduke32/platform/Windows/include/pnglibconf.h b/polymer/eduke32/platform/Windows/include/pnglibconf.h index f2e9054e0..bd6d7a247 100755 --- a/polymer/eduke32/platform/Windows/include/pnglibconf.h +++ b/polymer/eduke32/platform/Windows/include/pnglibconf.h @@ -1,8 +1,8 @@ /* pnglibconf.h - library build configuration */ -/* libpng version 1.6.12 - June 12, 2014 */ +/* libpng version 1.6.25, September 1, 2016 */ -/* Copyright (c) 1998-2012 Glenn Randers-Pehrson */ +/* Copyright (c) 1998-2016 Glenn Randers-Pehrson */ /* This code is released under the libpng license. */ /* For conditions of distribution and use, see the disclaimer */ @@ -95,13 +95,10 @@ /*#undef PNG_READ_tIME_SUPPORTED*/ /*#undef PNG_READ_tRNS_SUPPORTED*/ /*#undef PNG_READ_zTXt_SUPPORTED*/ -/*#undef PNG_SAFE_LIMITS_SUPPORTED*/ /*#undef PNG_SAVE_INT_32_SUPPORTED*/ /*#undef PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED*/ /*#undef PNG_SEQUENTIAL_READ_SUPPORTED*/ #define PNG_SETJMP_SUPPORTED -/*#undef PNG_SET_CHUNK_CACHE_LIMIT_SUPPORTED*/ -/*#undef PNG_SET_CHUNK_MALLOC_LIMIT_SUPPORTED*/ /*#undef PNG_SET_OPTION_SUPPORTED*/ /*#undef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED*/ /*#undef PNG_SET_USER_LIMITS_SUPPORTED*/ @@ -110,6 +107,7 @@ /*#undef PNG_SIMPLIFIED_READ_SUPPORTED*/ /*#undef PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED*/ /*#undef PNG_SIMPLIFIED_WRITE_BGR_SUPPORTED*/ +/*#undef PNG_SIMPLIFIED_WRITE_STDIO_SUPPORTED*/ /*#undef PNG_SIMPLIFIED_WRITE_SUPPORTED*/ #define PNG_STDIO_SUPPORTED /*#undef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED*/ @@ -127,6 +125,7 @@ /*#undef PNG_WRITE_BGR_SUPPORTED*/ /*#undef PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED*/ /*#undef PNG_WRITE_COMPRESSED_TEXT_SUPPORTED*/ +/*#undef PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED*/ /*#undef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED*/ /*#undef PNG_WRITE_FILLER_SUPPORTED*/ /*#undef PNG_WRITE_FILTER_SUPPORTED*/ @@ -163,7 +162,7 @@ /*#undef PNG_WRITE_sRGB_SUPPORTED*/ /*#undef PNG_WRITE_tEXt_SUPPORTED*/ /*#undef PNG_WRITE_tIME_SUPPORTED*/ -/*#undef PNG_WRITE_tRNS_SUPPORTED*/ +#define PNG_WRITE_tRNS_SUPPORTED /*#undef PNG_WRITE_zTXt_SUPPORTED*/ /*#undef PNG_bKGD_SUPPORTED*/ /*#undef PNG_cHRM_SUPPORTED*/ @@ -180,23 +179,29 @@ /*#undef PNG_sRGB_SUPPORTED*/ /*#undef PNG_tEXt_SUPPORTED*/ /*#undef PNG_tIME_SUPPORTED*/ -/*#undef PNG_tRNS_SUPPORTED*/ +#define PNG_tRNS_SUPPORTED /*#undef PNG_zTXt_SUPPORTED*/ /* end of options */ /* settings */ #define PNG_API_RULE 0 -#define PNG_COST_SHIFT 3 #define PNG_DEFAULT_READ_MACROS 1 #define PNG_GAMMA_THRESHOLD_FIXED 5000 #define PNG_IDAT_READ_SIZE PNG_ZBUF_SIZE #define PNG_INFLATE_BUF_SIZE 1024 +#define PNG_LINKAGE_API extern +#define PNG_LINKAGE_CALLBACK extern +#define PNG_LINKAGE_DATA extern +#define PNG_LINKAGE_FUNCTION extern #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_TEXT_Z_DEFAULT_COMPRESSION (-1) #define PNG_TEXT_Z_DEFAULT_STRATEGY 0 -#define PNG_WEIGHT_SHIFT 8 +#define PNG_USER_CHUNK_CACHE_MAX 1000 +#define PNG_USER_CHUNK_MALLOC_MAX 8000000 +#define PNG_USER_HEIGHT_MAX 1000000 +#define PNG_USER_WIDTH_MAX 1000000 #define PNG_ZBUF_SIZE 8192 #define PNG_ZLIB_VERNUM 0x1280 #define PNG_Z_DEFAULT_COMPRESSION (-1) diff --git a/polymer/eduke32/platform/Windows/lib/32/libpng_mini.a b/polymer/eduke32/platform/Windows/lib/32/libpng_mini.a index 92e9d226f5af1bc0d8063f9b90fa3a3c57c30f98..d7ea024acbc3174503c16814b01a0fa878d7c77f 100644 GIT binary patch literal 35634 zcmeHw4P0E+weOi>LPj8GMl+^FQBUGD5{nTMjG)vzWClVKOeR1`YN9}35C{PZGvuSG z0S{w1Z%WI%rXTO#_SSo!_g;HzU;17wrfMsM2(h0@ti5S#YxHUhCFxByB_CSn{ny^- zYd%nWZ|r-0&%^I<)?RzA$jnAl()IPrX#3Ev!u=KMr3_^$F9!i`Kb^>lHsVf9A8&oAL#1RTc9npeXGW1H>wn<+g=ms>}*##vj(bJRpzVUsk`bL1NC)k zQCLk{ws&j|HS*Zj_O|;G<^gcwKz&oFZCg!eprgH0O-OyD($+Mp0=ss!cdEUu*1Bd#XEP?MF@xg6#Eav!vBg7d zW^N5Mws!_hl``UZHF!ACre>-x3mnTA2Ce!@qRcE%`?#Rm7;28&>+X*mJLXJ`Hf?Nf z4Qeygs9IOBE*R?4`;jNb;8WApbq8uf&23nOw7$|YdCSek>S|V#a1MN~g1I(T&FJ_h z=frwbnMipKZ1|}&rM0(m-uOM7=l^`r( zkj=7$Eg~$y{(0wA>-_Hv&vswwIPfE--0j?a-y|g)=oa#ZH{Ulp5L_e-JaZGFINk_v z*jQaDpUwbNcVv%S0^{sRWp>0{6h0AjD!=c2g-RSAafJUn5-V@?zKYfq!iOE6i& zP*ZWb2?i?y@G!cu$5H@e_+EAfI-&2=vFAGg9T2ln3qT z3i(JD>vnXm9i8ip_}rP(@_D3?f_FwL8&F`3u-;4bKPaJ>kg3fd4Z5?U2PwVQJBrM? z**A}}@=bdK_TVx3h!&>tgF%yt!Q%=~M`{{^_vW2p19B>Z>eF{3nBVt&FjpS7IEDtP z#09QY<#=#T@An14DkwD#j-iayo{LLDFNV*AuIM}Q9b_(qexRHjnYdCuYuPNHvQP&P z4)FS_$xb3+EP)!oA#eEGo54YO9R(Zs${sY8@^bI#XTbH%uSY{tG?Wz$Wmam{i-ug$ zkTV*};FwJV;Uc8Cr$z8<6yae<_={jT@Gatn*5oA7kbOLS1QxnN+oO*uYpCF1cF9(u^Xd3*6idBis| zX?^qS3UzLc-rjk`Q~%C64?Ih>)ZIR}ixwbcQ4yXFu8m}387dp6SYhB(ww7p9bgv*( zR)g)tSKdPV|158K9K%cy7GE^xwVvM=w@U#x)Pb!{c$(KMR-Zi>zq66uD$IVDcgKxb zu*PQ-LteQ}_q6!b3BcQYfiinwr;V3r+~Xlis^f)$GGE>>t0k)=jZa$ps@U{!p>eK7 zCLcj2nU>%@dRRl(AU5m#i3NUIYDOCevFc`BQN{vDTEY6%+&mjP_ zyM=!e7vH-$hMvk38SDoU3U7UL6!o-8D$A=))S@%4d+ ze;gMciVHs;7yeRQ_@TIPdtA6KE_`cTc&;Aau<=>ILUkouS9ou`*;}sMor8rjH+;ge zf7nqrKCpYXV`y0Z&4u3R#c1>fhxfVOOT{Z30)X(eqYs;Iq4ymXAzyTMmnuI$M4aVU z-;ys`f|c@Hv%gDWhj&bVDCe&bK_U33+3A&EX?Pe;+h#F~pTPvxXbBW`nTcpZBM=(I!R4FeEP=}PiG)G$1 zR=+$*((`^nfh)~s%Kn~a)T&UYw#9Pst~h%jDD>su{xbYd0cpbQvC$4=vpCW zt`M_U5T&hv;!yv5#FHE%pvD>|D|6fx5$W|fLkndn@VhT@Ehw$k)f8~|woQ zM_NTqn^0fty=XqC&s3vT=@oGpq@{9v8NA$h@m|t-t(r5-yD#M-n>@?9ruuXEtFMdyXQtHi98qEt#u)Ye8T zHgP7PbL0LD(p6#b_$VEcpolha`fB_yPWQ6hX)h=UPk`=G&@Ci7)<0Av+gd6LvSnlO zBxrsDnz=-Si^k_^;LZW3Zpj#qx1eD2e|EfdF&@~@pu}<^>tuHR&T0k5(2Chq_It+-Hk7~_pSqzA`^Dj|14v}!hYkpdX&g#%P z9lD@HZ|e~DQ)*h94$-{i{4#V%LcWA^34R@F(4h-Dl&Nxd2~|4uhz`A^LmFq7uu09s zB@F7&Asu>2htBGdP3>Qokf}pCI^@xzDjjOlp*=dZ1nQ*#%1zfh*jC+dAw5$)N0|Q4 zS7D1F309Op*+u=}!OdtGK`#DNOA!WH;wr^W8XtpZ12DNUm?mJT6%3jlU?eawFto9h z(Dw%B05ClDDs!3oTiNR1W9*e=yKK^VB=4xP^7{5mD*}zCKm?B_u zV=(lF^2A`8fbqv*WMFDzFkc`(m;*d7v(^p~LW<=MJ6{(x7Uf8Ag^@C(zOQ$S;gB2K*ofL)I}U zisNX08bd>ozfQo=oaYyD){Hs^h9E1?5)h+d<_S)rV#sDf)*^Nh&0M75+D!NE-MfV) zfhHKxAh2@9?hK|sZtQ?vZ3(2?AOt~X%lptEsM!w4*ku?AFM~mF<{o+%lN4Dn%mye5 z8)m;61Ytm2#`{iX!)#}17$l5NQ`NthmVRk&!BUA`wP~7`z8n*YNyyO0o98Cd30r|k0i5>DB&%QJ(Pz91Q0oR+=}bs$OXZM7a)#028UbfOtdQC9BG zgp%y`JE4>7$_qaqT~W$8N+Ix}WV z6;$Q@2IY16^rlFO9jc--JR%-ncvvZUB6wqDgFUjk41DJo9t&PQP;!WrerD|@NJ{ME zo-(TIxW~sI9(p`)Xw4&c+j&x@*f(CxX^Ro&Y(BT7)QDAT=#C6ot@umm}Srii##;TN#DE5v2AOOXb8rlA1!( z%0Xcr9^PvswHsHRWKDcai#PFG7V)Ajf*+4mmZ2Q;?yPcWhHii^#HCbvn3|gS6`l;O zf69aGC_4BG@KBnXv}B~~^Nf30#dpkBPAZ#yQ%|E%sEnlRiqYa;Uyw9nnaY~7slP?3 zDkm1ANYDy$EuP4=bbdTC6o2`fx)xQ9N5A83%g+K z(I}oOMLS`V&-pG33H&TU3EPaZ1hkh!VvtZ7kKpzp&9!(E|25j)%_mAlKvCWei2p3b zvz;4=8r7|INqPk!s1$5#(l@cKHW*`*Sjls6B8eMmH5r;%5Uv0?7uF+fr}rRmTsj^D zL=t1F@MHYH2DeMd0QE;0ZV@2b38o4^0z@Tt2@?LJsQ~$Oh=w`G?bo5BIy9j}Bzti> zlDRmPRIcSKb3GF3*ZYxc7lGQ3+mQBdN9dG}VQ+Bob|QC!hU(#o!BhiN8-r;9hW02% zsy)Dvl*KXT)gNS#oNh!Mt@+0F!AX0RW8(EW74>e?-ruM+RMHd+t@ZWs1&Ym z>zJ9Pw9yzE3j8nz^DBgAe&hcMenFSV9VmHGYMQrq)YO#hY!3Q6+sV(#lP}c73KdNJ zWCP1Ar9irXe5A=1@axn3{$}t2Sekn~cLaprU%7>PjPG`69+Dhk9$$nxhK_g%&mvBW zQ78x>gmjV2w*NS!0rSPAi#Vx)c2K85SE`op3M3#pdP~q71g|qPMv=`n#|5%uS%BG`5H*V-z&HZ3evJ;yp9PUxD`DAE-)KUcN zi3jFhU-(3%)m`rB+lS)AO4nyLS4p3GiusOA{XOizuWI7~ z)wH2lnbRxkdJbVm3CuwF;N!?MsZ{epNiZZ^TU(;c{`4{+O=|97pdjl4{Jj zO$Y~Z(_5adR`sU$^Y;m1=u^#hhFq&6<`;_v#bQyh=qVO`#bTLHEcc22GFTpxC|IF& z1{MNIi~*t~oytn<6G<{&$`6+t_gUOe0JoA5OuFeJy>xN<-TXnK4bf$ShBSO%(&?=C zsTBMHJmuj5-J_t>+Gq*F^ML1aN(O_dy*N~+LtAvHLx)c3&^aB-0zaOXWHt^Zl~`!C zuSYV|^?oFlY|!W8Hsp#s5c0=hsMJ(SgXSKD24gTy2-Tv522D3G-;BZZ0VANT44S_N z;t?HVe#amo+2n@1V-mhUZM$sPC#Y^cqRA&|8JxB(c{~JxJ2XNraNW z%tO7$7X*p5R-!~Pn8IhQ9U4r! zXsrLaB#KrV0;VgOM6m^9@o~`gsO6gjdL~hj1ON|?$b%%k;^kqDp29oPM*3p%4%}GX zdpd}i$bNSZ5#XJ3h={{)aWa;PlwQ;mhB1J zuE2XS)*FU=6>X3|T=W`4#h_YwU>TC%YB)iT?YM@VAnBcpcb|O3w)wuPe(ep0Ajt=$ zP~hA8IByzF;vp$#52TzRTq}Oz_`Ac9S@sXx;pO-!3ZwM+vU%g&!K9O<4*!pWJ<$^>)P;`MVJ_%WK8WSXLhQ<}?|@?7vI zc_*MW%5oeykNQ@_J<3HSx=$L3ERF*&BhK>M$`*lpAwi9zOz46Tb2cery+94CdJ~!S zCiA&^Bdc=ael6qR6-;4*S3a^;8z|OWiTjE|!&8m&WKDbnl|{BtjEn{yR8o`X2~Dk> zB=r?@ON+}Ntwz49A4SV$7+H0bHnqC>CQ47ea4AQ(x zqUY%$+R;H0rp?!%Ln6A4CJwFw-1PQzU9B#98 z>qgjx_tiqg(?xUz!1;j7W*Cku2QCPl#_v;z<65likQ0p}mv9Ua*|c541fUxjWI;L} zdzTIc0rA+c>9}tJA}QU)bZA_A_AP`t?xV<=<0Rmyj4swQ9O}?TXC z2<4&%Myj2_7#cJL1ZoK?vq3{#2V*dg0&^?|LoI$b2J7xO_?4{?ESMldeO&1?#o! z66c~8V>~bCTy&^xXPS$&hMPwNbGBfP1n7Np=Nnqy4|_kUCvDQ+XDz6AzVMgT`_1jz z%s1)yKkWTKq4&{(M(6*9^?tCku1)Lz4_E$o_o7ce_gM?-{r{IW_d~(v)`Z@_?Zfwe zvNIIPd!M!7UuN$^Jl6W&wDQl?`^ySV)?MxuPzGV%%_NURUF=zq*dTGAA{Pl@m>&PTfe6?w;tlj+4$L;$$Q= zkeN84*7p@eLKE5dc|4)O%2JjoUYldc=a%}tne=q`d*{~`D5PeEZo5Qsx6pG{%PLprt33{X7_uq z?_M-Kk%A+0jss(gHv{TE)mIH^QVyYR!qoSe&X<$O!?Q;wQl?&P9MpM|I~i1y+6iJ$} z2nGCXfZ!_Vm(jbQAb6b=S?OMUw9w}+a(r$hVRn$|xL_PQO0=e+{BUYHwHM0RVrjYy z7}5!A1(iW%kw>#g1Ik!@mgWetXqWgg{9i`q4y?Aw7gHSj79$F(cDq^K%2b>q;S+nm zy6sF>#A~7RaP-ZiBxD{>k_=VKKr_x8@XfJ7s|+$HwW3}&=!Z+083H~6 zV1o**C*6Fs%jSmyHj`B$l7a$cf>Rb#D396F1jlDdF)`pvvkdqxV}dZ|u?R}3OCGi= z)tO4E9qt2Ra^o4ZWeZAM#&{{Z2HaOlmdW2irLF1w^M*C0I9Ek;4Lxt?&r*8cpp@2J zXg0#8jx-MP=*+n2$q35={V|>jEqFBV%;X<|fleCq8=_ryuE&m)Vx%}HKLHA@JXE3a zQWxbnUP^3HDf{HDpy1_0I}|;Q&|b^;dM{1m`M`GcQ%jbAeRM}QN~n82pjpQpeRqMB zRQW89H@UJSyLVj?78CeIIF%YVhSuc&B853q#q;`XM7{~tojgHRxW_L4+Xdz1;-gdh zXuN4Q15jsacjd%9@MAp{n#Gj#C?dD03~J-Q6<#A-;5CAQK(>_dnP4sE^cD=z0;t~I zG%qF0OFq>GN{QRYqbOB(am1UWgxwe^SO>P^;PC5r zlX4zrqmw2km}wo2_GqFtLz~7KiZ_QW79JXJS=y9ALuV+*ruK)YiB0gZx*qZM*JoOP zhl3wO$#3ExwYaMAjo{Vz;DV>puvAPdU7q0V-ZgfihYG<~Lj8m<=STJ`m~p`8cG#>6 zr@eJOp<5!}R#-q5$?weSUU28Z$5Hv<`~mqfJW&HbZ%>8c(Kwv1-p=}ZgKB6tjX7lZ zplZ>9bvv0Q(0|k)m{*x_*2yCGoIPOA&P3-8tLroQBYWiwYj>;|=zLiou_$l$ymfDP zSRe}e!H`20p*bn36M{sXT%=`hnsu)ST{Ue~ruqA$5f%weqyMHG0@_zaY^ z9S3ry<}Rr{6r_W=*k0Tp5Spttsfnbv_MoI6lU0+`*Rbx;Qb2J>$7*r?XEil!_JU9R zsaGFxq~E3mdkS}~jl^0hx=O`N_{ZW5XsPJ-X-8GdMduEa{iGzl2T2=npTj+ldj?yH z6i907=n&l{8tYOzxtd*~op-Ge-3apItT-XKC24w`rNt@OlgO5)$`MSYACUTVCVR~m zF@J?vP{Qmhu*U4v>@aN_P-%+grkj;4sv5=~xa=kz(OsEd70a?bHh3>H|9BaXHQ)hg zh31gs)f{r}77Kuf$)`fhjbq1cKvb{&=%`y!HQf$VCc1n{%|QJ8DD?^1VU8f((`ve8 zHmt2;eu?HN#7dZ?mSh*BR)a55nV9br3w#VN7jt>}8qnr_P;Zy2`53k~oTtT+V}70% zmZJ5B<*f*`Uq(7Qxk@X1?D*@_60L<@$~4|I3mvzcyoB_0QkCRty2@~q1%Xbb{w*Pr zjRWg0cpk;LITfc@$6=6k2X1=hxdak<$e!X78Ub-j&_jSISC?=Q5VsR8Le5tKmnz%} zh})ey0CB6-KkLx<0dWh|8-O^M9gy^R+8#hW?H6?1S9RR;fOv|9=vRrA;4VN57}N-e zb7=>}xjYSsm+$w0cs=e$n=fQ3wgTe(z7B}Trla+4WU)5_;%Oy>N%(i+Rj5Iyb%-ol zJeG_XDxD5JqC=;2h%AAeF6oYvc4hToZ@Q>#bTL~H@=JEz1ms!VhP~)EgoZ(FU`l`) zL`xVLvT+T^VCsPBL3v={&|1@jW&k``S9`lRauM%ui3HB?Zrnd;c zSSozJ0-x$IVF*k`fAUMq{UZsOn-ef(%a2XviNRDOWVQ~(o-M?H{J-$?hclPgS4)*FHy$3%X7Xg8}pa_(8;74?9y~Bx^{IY4al z&0KTB&>H*_?lREOMJ4t0zLM$9z6^rLK}S*mU06&7LvP0SS@cD+dC{&d z)h+nupIc(fCbm$8W1-ZzZ4@@_X5Td0_W7&e9tJx5<|sZ6s5+$Kj33`;(OCf(_EYdN zQ&w;JHkH8P8&OtNVY?M`eNcN04{{{=f%;`R?pPUbo#uYTy^-KWq`PGqVjlAYszp*C zZjz*Q`FE}A_q0O)U<&i4`3y)Ja4#fUT$H~Pw~KjDUCE$(@Sj8ET}^MgRE!%Axmaq# z;mZ&@E~%74V_TntQ8X^^E@9>jlYL*u%f^PA)!x+sU4 zd|2*d6#RQfDHa;nG?tC4rjdPXRYkCOcf$LfB*&TGSpT7~_$FnCj9Fpc?>lE%VL^h2 z^&lKM7PHzUt~#gCP%k0QuL?%A!~S!vI?wP$k(G@8C0li>&^2#^E|WW>FgZJZ)gkRp z8g$O7(C(1BoGF5Ig-wg#7%IIM3i#4%=-+($m+6mo+oH?0BgVPCYieo4@RUqD!?j2F zJ|bBIz%Ry}4NLtc3LX80XXdgu8E zyt#gSxm5cSrNk)_<$_WWF-{)CnNA%aZy=4tF490sNC$}js;y<)_H}pKsB<9dO>U~GwDA1^@*0oN@kUSsdb__jyEgq4` zYl!dn!H;`Lz8(lD#BKdm?m0k-jsu5bVez>gJGz=5T*il!)$u;y?a)Uu zSWg|`b4J&`B2t|X^B^GL*k;xr;p8 zBvSkA;ksfBvrM$>cGR+Yy7Y>k;Qgp&^~Q-wd{dQbIVy!VOpkg({^?O$XwCGvB~&^+ zo*62h9_r__UTOUhgLUeUIijI2J;p$ejSszGor5%YU7yLT|S*E@nT=B#1om!xHFR;1(Rq_Mw`Gt=*<=)aW0dP+MglJLV<2|8g$Zs?D-grqOvKcpkn zKp8;4&Q*e6+o9cjQvclBKJ?Ih-yWL01?#nWm$;5lltdE zW5ZoB`G4&3%vq=_UBs5?sweEyvdkTs%tQ^G%E-v16Tp=O*a2Ln7DGE?4s}R3w(IIHHCPgkDnC+2cNQxbCw`5s zCAO+Icnpbj{2rN4eO}$uvjUbdg^E*+o9srA?|jugr>ZXMCbvlTl>p^=0= zxymf`wD*@;wJkIMO(QeCg$V4i@s;d5KJw`-w3>U2x(om2`0-C%i+_%l_~)Dhg$Rih zfUiu$zpJjnzqx6PkNF3DE~lzN!M3~SX`-_3fV)>Ma|R`aNvw`bD-ZcaMy`Sz<@bUa zljG!o_XLT`wBzT1s$+lxft^|>dZ$Rz0qy1(DtDJNXR;T5)B788Ds}Yzl3HD+ zL&x0BjL|61^)r2$a$!s+GEn&Gp*(z&{vUh^{~ZTLXxjBhu0aemW=#3z*hl@t^k#>- z-b|5cZYURsucM!9+m2zP&cn<^A74jZem&{p<|@Yk-XPFKEq7lFH3*QBa!h&nH87xA z8zJ4@Qx(3lRft)j;6o5J{cj|I=C+#vn%f^$&f@BDss)fToCKD$-W@eAmLllnIU|rxCdWhPgC?&XPU}LoRQWWXC z(=}gC6yq^#XrUg2D%vshS*qnBY9si7kMC%OnyhIcV{fDKUD`E1RZ>;%SI*|0nW(@| z?_h}LJBH?Bm4pkTJeq=@zY>n_@8EeAo>4sKwxnROy&6OQ?~wpqRQT^Zet=R}PaNlA zd2Ov#D*?kJXX7_;wD~}DVUN2kvaPlEk5$FKRgS)m=%>iTkAaxny#EVYhE2Cce7b4v z6UmKHU&7z@Y-kExA~KC~Wdtf;TZ9eb-i!3pN{)S`<^4DZX=B~@yRW82py7IH*7vbo+_hA{}k8m7-cLJTw zn7jgVhVnD^f{@>^9KX2u$I3+(dg0acC*)UWr+{$sUc8BThG;ufQ!@~4YgM@WIWndk zgvp&SHjw8yd(mV0nEV=&Drdh<(^dKT@e7Rg;t}QK3#ZN>lTXd2IXbx!G~;qVNV15> z@93-mOc(qmpk#3w*Lc5F<~{$EZ*9pc`80jkDXT?5^}qB7q*+r7lOn{cIQf;?;Bc4; z-H_fV7I!*&nS_8A zD`<1^e!k|Z%C!~2i5n@s0z&q?Dn23(>?QBM6 zw4_en2Pm=r>^B{;jFUV9!Ikv8jswT!OS6?@dn+9W*egI^5*VL$_uV@Bzg){OX4QwpIcRolw6c+4s zwAjc5TQTv|3u?n=BCOVP;p2dF8||jXC`; zCFw|WXF)S+!xQjXdLrz^-P|VON6G0lF8jsXJp77P0Sfzpod_rbZ<+)s0@HGv>`|*k z_XC=}rCM~a(BLw&@qr4r1$Q5A@^Oi`BXEBo-530Bll6e*`z0hfg8So?)+@TV8M)YM zfui>x?bYwa6Y(*2m#t>w!%BDrk^M{0s>B?-Cb^}8dkN9tYruUY<$=qII~U>oxK$Ma zvmE#keggMaB7(g{ww8(RZll03Pcah|rSAY8ed%Z+(c&UpA8=K1xGw?M2ORfy<8-8j zeH6IsSW2!p7zXYLaCZ_8c^h^lSfBJduQGQHvoT&kIvd7VA<|O1ur=ZL$voD76U(hD zMgLmS)0*@kfc29}&}-6hu%WzI^s~MvJC_gRmo3Z5^T|#2b7#JExPT>?+)C1SiuqfN z;|IC?Kn6~4B%>y~6CG1Hi7Jwv%asbxGn8ef`aU3*6|<6;iJp`{SVUimsD3E5Sgi7i zn|$JyVzCyH)=sg!mOh{ASz}59OCwc#H9q-8&q~m(63bSy0Gbe=drzoOar!#3yhQZZ zg0@5~-+9?5|0OsRwH9M-amJd5-?<6Z%A83BB z)4;$9gRg2EZ4`4#*$>ER=F+nCEn?0pG1rfu*?_B-+~znp)7ipjTsS0NI%1t;2|?wWc3W$lt;`Gv89tg^!zY>n6^A;20AB z$vWM#%zyaIk2Ew#T>^QgQLZk5{KP-XpfBJ*kNtxV(J2mY{hJ2FV`+rk#8TXdwxT(f zD%^(A!s${lb~v;N5U1OKT?VIX1(eOwrosXiRb^0R+r84Is4k3XWOREgW zxpXK~ha?qp3AH-(WgU7(hv*$lT=2y+9V*kIpbqux(3f@Sn>utvhu+qq2DClrOmXgE;^UwFdFwG~WeA0%%}f1jZkOnF6LK1_N@_cYYBq(3W~QhUO+< zsQ3ow+kx?5R2!I;z&J6c4a_~j_%ZGbObakQF__(i!2mO8K1X~ogAL3-5+5CtXlM8; z;xt<|mH+bDYt0&V3=i01Y5kc^S;Sn=poDaxL1wh+j;l0iBG4QGJDNkW*Kw6b5VSsh zB>{6b29w-^n}Xism&RvK0wyZ~b8`ab<1rY`f)>kpRSeArgx<^M$Pb6`pNES1G8{J) z^5_Qr$F=hKF%WYkev6hTTpAPCzP+OrKQvpzIPjRRy6!+tsJSgzgWnuujb&i+mYY+@ zSweX!n3>W{WfU$Ei&7;ZIU>2aQZ=EL`6|rG3=?ZT>VuyY>#AX*IxD=Iq-3qnoFv{# zJCkv>xvPo3Xl+i~*xaU@T;HqTs7rX-_x_GpR z=P9iSrG$I)yPV(7&NttD^UXK!nQ!LIId^GYNByQR&i;bxeF}>Tii$5QEG%B4ss+N! z{jaK*6fA)cpAEAWMY&E;M#Ue?G#2gLf+=K+IGzhCwMlu$x!sHZ)?A$qxr^7ra(lsG;gGwNQFbT zsj;p>rYs$fsg?M;`ufJsPCEx$Pa1O?B}W zQv?&YwXVa=Bd4A>nAK@=b(OWw&4l^7xpA{6SLwF%lmt$e(B)(aUCff&OQgh>+i@ZL z&8(&02WA)vnp<7PXC}6GYezF$p3_z)yBSd8tjZ!?qAhJ~Y-;Ohbjj@aNhzhfvDK_I zW;>Ty+0w1lrSWpJKvE|;&6JxlZmzr0tO-`>xFd10tf{$0vzpxGOlxV}(%9mVy7QBT z_5t2V3i_`b&6+ov@7CtlhPJJ>8=JLhN^5hYwyDj`A}7B)wK^@{Y1bW@9@IHg!n!Su zwejXw^nq6WurY;8+QJZT@Vb3NoiEz&& z3JWlez&zs8CB=)a*+i9Z1|}4Wl68inTr8k~Z;|MlghTvo2r5dzrzj0`B<=!Os#3jS zk;p%XE*(^=6bvld*x8xR&yDLMU5A(9ZyDz-ML80Zl$`p2U+EW$+#wYu2hI(dUYwvS zywrmn@hi$U(8ak7{LxiX^rqNSrb)_Z)78J z`o5eY@LQuF%Z3DMG8WAp*WU(-s$G#>)6jiX$xxK;Q~cMWi2+Sb-pybJn1eQIM4|u# zf~lcPhS}?e`p3%~gW5rTA7P3q(icYhvXHh*lB*gD2SU61DN1o9Lz~roKvDdPv8q8I z@bw&uzta5@-SN-tK~&0EW>bInss>_2vb(M*jE{HS=3f#&-gR5XqWEi&f9(0bU91yU zeylAVFkb!PIv~D$&6>XNZhL=XqWjoSDEKc<{C%=QHF79-RRbOLv2+mk%i)CAdw6sl}dzxCB-* z%sx1gUtdOnM^Jz&WbfHd9uR?b+DenLw{ReFNXr}F>ob1#D1G89-%g?SD)Gg}&kF|z zNB!eN{u6&6|BU{!FCH{d){%9!L&Gzbu@jM4Jdapn8))sBvh6dn-ntKZkh{9{ix z^$+`%zFU3YUp)5reY?RE1v~bHg!-POTgt}@nSl(tSlwPA*}$6m(W>)jRSE~1 zjHoqca%KBni)u=q+oA<%hDFJiXmMg9)Pt3Wl6WE1vk!K1O}=sPeDoGdVni!JG)qD7 zDm}_`5&wlZY0;%Q$yh-Ej&oSOjHNOn_#Z z6BAO*ijlXUKlgd#CZ=E1!2V=;*ux)bqcEr@^})9j2UFz`QBj(Vl@aX+qt~OhC(G5s z@x;LG7szZg(33zE6kL!wVyu_R{Q(+ONvFE~2+}->f2ur}EK}twt}UTZ zi*#JO9T{?KG8?^>mSO;O9EglflFc7UG$TceEd{IbA)l<6>&%K-;i;G^E9O~{G77;} zeII)ATG3^*y^MI;3+m_3#zrK`kf#Fv&*2QE?>1Jz@ARYMv7Cd+()D5(C>$8_)F;z_ zCaPi3s9t|!XzcWU_p>L6B(Wnf$B#Ws;s?10Ci!c59(u-??C%8;YLNfL5bArd?@KfF zQ?o*M_5(W+{q}R{jZ$4CxeU;d1Ro^`F{JCS=@RW#y6>Ij?wRE7nB-nJ$$ix%_q<7N zcCY66R5-APvMB5pwP=*h7ilO+jKh^1x_=-s-q$e^S~aA<@7r>keku^Z-uSWp^1J%G zK5di!&detmHdH>Wp92$vvf_!~D@VioSZyKO(!_!IF8!oW+rfVBh9Ui(K>S;7 zR^MSTwubT7|2*^?7PxNlEd= z#H&}fG`6;?tLs{^`0l*8x^YuSXItx3>LnK=$Yp9-YXjDVoocMP<;KR2sbrUuY>9eh z{1&yMqq$yPgVk$GYn_&_UfIzWZ&!;T&WhIhMVNG{A5LyDrOaJ*wYs{ZET*nmTU~wi z>YBXS3KDm7dt<%U*r47DPHIP^7Vl_P>)RR{-F}#Mt8Gnc)pe@W4JezNu^eu_k(h?& zdJSrYx{g~E!D7YLs?;28tZPu)>pJSNra-2sTAPSMX{h50slmmpxwR9k>gM|9##T+m z`lb!6pnGYBhM}gbBpG$UBw>LR$o~bBd7!{@frWB?crX6Mj%&$Om zWqJAKYHmk-V`J-uzrjfV0DvW~2f@Hz6r=78ZW5*}ljWI%{3t^GIg5Po5LWzRaW0q&kjxGvxxoP@gvxLuQQ4*|CixJS)6SU(>Ft_OAedE!L9C};hwL=tyd z*^X)|%IqePoDUOG25boGUu8bb4CM~w*ad(h%6|uRp@4n}h&45${2CBOJJ8KWjOPhl zHlWW6T%HZ}0s6e~y%nWb}g(9JeB)^g zYF6qc!u3Dbgnf#t_#t7shxNS_M$ia?0{k<79LyiX)#bsghUXs8IsF+k@er z5)_~2W6=zFXy|!x3g)N>V{L^&<5y`rGAl+M3P z-^?Y9DxM9qEq(JzG%L=>s9AQmY+_2$1gLLrVbjCImZN?G`esHKW0&B1s2@(JZ>~&7 zH%Z^jd2Ive9x~H`?n)s)=wqv({)|Pr+RaWJ&@Q_o77ce6CdReA(C)K)4r!mm+BK|? z`AQCVel~A-EC4$M?QCz2Zz8liG6P!LUk@XPOf~dc<5m6GwaK+XEdN(Q_n9n>B?gR& zU0R-SR64#2;@l{2069={jsPJRlOxq9OCG;6Cev6ak z$Qx~Oa!n=VI{S*6Xl{HV^bJvCO{q|rbA4ZOI9~M#(?@UZCE%gE9incrG*vE=zctG^ zY^;loJtg=f!d%E==L9mpJf`iZOvcK}u?Hw;t`J75$w4205Obt{s2Wz5QC)Qc$`Fq~ z%CXwgFS)b{{r!;aBdse{gkzgy=~uzXdAnFw`YX-VqzZH?4A+glFmesF?DW(8UzyG2 zTMX+cj$aKhufQyZ;X0~)PL7fdkh8rg3Wu{Dh81f|fb_c;rUrguoJ5$FV$~(*vAf`> z!Ox0QgljUFq!pQ~0b#)_*ArpTGVTES3G(Gb+)0=yaMqeB2{-*C$}s*pYn!1Q!v8q} z7eZ`uW=xeB*HkkU&WtG?W|{a$QUS$mXp;?f+0cD9w8w@YKtt4NJQ!*qCOk~l)7w0mec+fd-5xVa;M zp+ou~u>1?W{!aK=2!C2=cj?gb) znrv)wJtpy`#P5{&81ZZq$snkTjZD%eD+2;34ehSX7Elb(TtHRPDokW%!*vb_tAt-Q z25@5L0aGn#DovUkU@DDF`e8DV!%(oZVdub(z@7^`3_BZk7NfnFSHlN%Vu_hLX0H)`AhMs2Ys@CY@0nZ!u&2|BFt_>0G5a{6pm4kY9TnT6?3YhAMBvP)I*IAi7)p%q&w@@MLp*^lw) zMfhE7PRrO1KB+O&TCoe!@W-+63zJsGtgF4K9K)u3StcEOYjnlz2csC%!pYtkDA8Nb zn0Se+G6Q|&C>h&*sCU<$XE-A0bff61Rdm(4i5G6a2*EFO4s#7{Ju|f9$2QZmS_Zru;d}Ie>eX5#P^J!J<$Ts zc!PP=WR>xTI0N-I4pk`%jzL|l|I!yfkE~I2BU_Olv{`K3`^cT8FX9`<>663G8Ixc7 zv>%O)IY+f#_m4d&4{9|%ag%SXzn^miqzQAzc;E!)JZK{)nOU+;KuaU@V*%Td(O=4h zP_fX@Rs<+)^fUcwvEuU7)$bq%n8DA@|oDLE)#uL_qfz%u{mTKy#vlhV9=PJf2~25uU=(u(bE^12t{qUis*)5wRohk=U$ z$Mo%i&h!E%FpR=Nf zvK2T=6H!V`xgv@RH;?pU2hWDuZD_v@9kZcq#3n;SqBUyb1*jobKHZu4H#$k28Z%Zm}=ys z6Y9SL)8)bZ128Ib*r6E!rqqKu2u!<;nL01j;fKcIdOps1;Y%i84E@v23t8fPP=cd@x-?E5qrZXK#vo8ujhBxM_gFZiX8p)EOp1u{1a17D8ZVBKGMgbnXoi zp>H!0uJ>>LUw<0wR_`FOV%t|kvn$T{$aJ*xYpb7WE}kGjQTlKi)Udu zgGx8ks)WYU{Rp~An!!y-Lj&j@n1EJkj(bC?P*ifp9#(G!IrCrs#@*LXLy({O@uIycz12qjcpK7pQCG}Tu zBg`{o1`zvDHPIM%p5VY{R86!LfYiZ-cCVS+bt*$!Grrd!FBmSL@7n|E75!*Ho57Ph z<@3kuvzN~7Enl!j9T>?7?H&m27&gkYq}ZU(*pmTzYy)jkq^CYGb8sYM>;=4^XK~|^ z8fX?BO{A3rOA`~?%}BP^{XSNF%2q8gzWsJ+4LhK56DuazL9X zTA(?!IWDIPGaG?&h67=R?_-AU;t`hQ@<3lK>@$`}hUtj(Rr`!XKkMWR| zC(pSnXpxNG3I3@Ws0kB=2S#6qBe^Chnvu*~Bu`echriu!gokjl1D|799H_IRSJRIt|h&-lxq7E2a zbGxt3rz*#&jgHS#W3Zb=)A7&wRAD zHg$7d>n$qp8BoQ+mQKW=NT+iVinftOYjTMJmm>+n0vHvP>004#Vt%@FlQq4fjo6 z4fk*1^%iJqOd3bS?XNOly~1le@{C?CWU0YiW9?Mh3UBJAmib!H?*cvb$$a`@c+w}L zP`Avp1rcQpplktk0HWqKqWl#gsZpjLl-<@0r5F(TM3gunmP$l<(1!K{l3M0*K$1&0 zhB_J603^dcXyYEXanA#iA&QYsslQ$ei2JJ%r3;Yc!aYmL!krlSv#Dnk4f zAn8jtwO$cry$#)GLoeD8hj2-kZ$s;CD6P(k^T~QJa6L=|A0OnH?yZyyC4r<7)R*Fa z0C9;>0#kwiok*dBSp&>*52g;7YNXSl`36JTn5nC-AH$F3>^vWr4$M6(g^J4J5M)~Y^Zh0bC$$+q&POLrTY+b1C?892yvIT?=LMYdVA5!$r)aGi;8|}dyatOm zeodUk`Be`M9bT<9F|#1Ie5_Dsc`$i!xix~`w>MC=KKVKrpxW|35 z)zl-BQ?&GHbn?#0M#0*By$^NYR3~&=Yd2fl0u}eCYjQhx?4D?9ySHkhV}D%jo*e&E zy6>%NHKfy&Y+=D-S>UddtJk5ipD7YH^%Twnz_W*s$PPiwA$}ig@^owMZFXxH!YS$2 z+S}lDFX)z<@?j7Zbndw!PS9xQCCk@aM>)vWoXis%y+CqkS^rqs-%S!7T@d zqr);7&pb};@JwA)cvr%3J|uS0t#=q!ne!&R=gs**3ycQyIT$|qFvLd`u0GEYP_qr) z0f=MD3`I4ehskRS2YZlxrZ(&>z@JnPk~L}CldcE34?RaN=)S?J zD<0N)M_acZ+Byw~&v61AdZ`&$T~aY7baqxpfh8AH;%zyvPJ-5L`CQmg zxGm?+U|G-%zzQa3ARqusJGFr|NpkeOJtliFo&m(_IWcZ^Pmp9>Xv1*KkNSr3@?bE2 zDRo#{Wpa(0ICT5ZaBtB~hjM&-$4*ZvPy|fq134uJwE?|Y+5UR`%@p1Vr*>d$B=k?^ z5g`%oQ7Upo8ruWc2vd|s9(lbRSKGD8&JAx5vlVF9q1P))R;q~uw_ltr&4rT5H|UOh zzjk&qte;Z0AB&$Wqo+vw3(pH_tW0j|hc+S? zy=)~U&W0U>&CAD1VTWNag-s1bF>I~H_nre3=|^?sq0MK&A*mn7KeQb4x*ny%Pl=z&+9~h(va&6-Tjwk} zv^%*7R`TvwK-Y`<3j9St^j1X|K#LUtYJOa-B=Qc-7^4A?;WnQp*Ccn;1pcm~5BaQ`{8QBOl6T{y zmX^2QbvxHKHYhDue}eszqAir+1AplXeiwt^PyemI)Wua>lW)Ir+Gk9#t4%IItN4mL z)#K$2{uIYXC4R|N?Nd@0IqT{SybYnRyxpo&V}pD*gzW(dHD@Hw+o@+`!hsv);%9c@ z)lMazIow4JM-V9=vKW{%6coU0&Q6SeR&~4`vYW!m+wxFZsYW*aADhl!yzQx1Hu#MG z0YPJ(!v$YUTXwd7GPM0H{p8FavJHh+4I1BIGdeM}hb?LB4Y3>GjgO7%gXCfL@%o$P zxeXm85AUvrdT~PgD$2EKeEF;{?MAT`g4^qMo#M@EYW$k5Rt41qi=#E%YzrN z4O#mJ{U2pUSA4mnDXAw45~X-VRlp z3h*S%J;1*M+X;KbR^3rHZrCqpXH0iX9om1~A5@&I#nR^al%gnIi#wF*LqOIOL zisYHpZz2p|9N%JwacK(Ix>ApKb)Brp1}!z14;@#8ui5 z@9~ki^lKvC7wVhosKE=|ERlpU7bPlEl7^cR-v;k8Jc^phHX*`(!Mhr^J zq4^tN4tg+qfKgEb4h^^R9`Im}GL#4N9xz_*D_edTwb$Xp`*jLD7~aOX!GqZfOqU14 zR6by1rmhFSfEvVAhx2@#>%qT7?0k^eY4x#xXVO4O&~U}URfhN3WzryTvHIgPGzIgl z2Qzie$WSkPXoxv61;abY$!X^K6O(tJUQ>B>7Ii5a}VZw zaHU$4~P;5i0T}srOq3(_J%f zUnnoCi}hiFDPIwpq9qsPjuzbt$Sn?Ju=uj$JYuXcx)0FIzqQXK|JkB|{hcVzxrx6RE z4yn*5?=c4fj`+V1jhIXw^FThOup;>O!9Pl6zt|HL8nGgiz_hp`sWHEiVEG8TN$1>n zcT_v*PMZ8^k?tB}c#W|iXWfiv2S>7@Qph&;4~~QZ%q0*6aE@_MdgTzH*L(u>S^(Vv zbqxWm7HPOIobiNToaH>Zpm~B@*IW1!O4* zp~4s(9L)yn90Fkg^Nm3Wun+>|433I-RjD8mky0JwTIo^|5-^@&_#mw?Udp5$?5*_o zR%ciXYk4m_SKJnTus7IS?eqGt5qCCFy#@8oFjJ4exz+ePXBE^XUqDrXE(FebSK=?{ z^t^*eWw0+65!nRP{Mqp)W93-q6~Kl{b_QP<#ZS zqMT{2iLns>4c5y+u>?2Yx`jJetfLXkTt~B*c-#j345-V(i2?9aHQbkd^J3$F8*hw! zU#`7_2rD#6I`m>vMYv(Mrij} zMABal&-xd@Ncsx@tbZANDLCs#%p7qViyzGx{W9V<*+|U~bS@M(=|@!O%Ih=6W(v)Q zaX4vJU{M;07vjfE?TyGk>l|S$T8$DfMfHe*Q>A`#M(EDBQEn5_1hWPjuByJPCvY)% z=*}ZRKMA8e`>XC>C1HnpehTNXelh-i!bhA9HJ<7f3P0oIu+CQ?K~YT$$~{!&P;c_{ za2a;XKE-wTmb1H_5NVfR+prSa zKYjfbve=4HPaYU16AuB!1E)_Q#iC=!i{yL2IhkPndjdHy0d#IML4JS4uOfu*I0y14 zD{zP}lsFy1l8K%0ORjB5ewV9HNxlmZKP?i&5yiw~5?vHZ90XK2(Dk@bf`-050RIA< zFD`{D_uRgf6MMi}dG<*6@C*PY$2(6O%hX4G&x{y9hT}K-QGY1GOZ@x3-kz#x2dR>( z(4@6ZScxuLc+i6sU^K}o1`Ip<7Mtp-=cjcdZ1IM}r9YIB1o; zcl9@Y&%A5={MlFgu9|opehT`;BIBKB-pTu^G5YLL)oI8R|I~;q(b#=&oEc=cb(a)H?VN75Y;4pE#QKZ#B;<~{q7>Sl)bFY707ux9wH|L*5wG6 z4PF+p-q`To@2EM>t;;YXX=F5-Ao zAexkL1BF&4niJy7Le(dxd*3(lFR%Qt823DkTy}ZL@pbRuYuT6%E;j�bFV9MR&EL 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 bR7AZM8O2k~TJ literal 33816 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 bat090_Ckd%uBFW(+uLF_-W$N}3#R@9F+A)5 diff --git a/polymer/eduke32/platform/Windows/lib/minipng.dfa b/polymer/eduke32/platform/Windows/lib/minipng.dfa index a400a05f6..4e4913a48 100755 --- a/polymer/eduke32/platform/Windows/lib/minipng.dfa +++ b/polymer/eduke32/platform/Windows/lib/minipng.dfa @@ -53,3 +53,7 @@ option USER_MEM on option WRITE_TEXT on option STDIO on option INFO_IMAGE on + +# Custom: + +option WRITE_tRNS on