From bbd0b854b7237af31296d327f534cab65bb2039f Mon Sep 17 00:00:00 2001 From: Michael R Sweet Date: Sat, 5 Jun 2021 22:56:05 -0400 Subject: [PATCH] Initial PNG support and test files. --- pdfio-content.c | 235 +++++++++++++++++++++++++++++++++++- pdfio-content.h | 2 +- testfiles/pdfio-color.png | Bin 0 -> 22223 bytes testfiles/pdfio-gray.png | Bin 0 -> 9627 bytes testfiles/pdfio-indexed.png | Bin 0 -> 9412 bytes 5 files changed, 231 insertions(+), 6 deletions(-) create mode 100644 testfiles/pdfio-color.png create mode 100644 testfiles/pdfio-gray.png create mode 100644 testfiles/pdfio-indexed.png diff --git a/pdfio-content.c b/pdfio-content.c index 6569785..445746f 100644 --- a/pdfio-content.c +++ b/pdfio-content.c @@ -44,7 +44,7 @@ const double pdfioSRGBWhitePoint[3] = { 0.9505, 1.0, 1.0890 }; #define _PDFIO_PNG_CHUNK_gAMA 0x67414d41 // Gamma correction #define _PDFIO_PNG_CHUNK_tRNS 0x74524e53 // Transparency information -#define _PDIFO_PNG_TYPE_GRAY 0 // Grayscale +#define _PDFIO_PNG_TYPE_GRAY 0 // Grayscale #define _PDFIO_PNG_TYPE_RGB 2 // RGB #define _PDFIO_PNG_TYPE_INDEXED 3 // Indexed #define _PDFIO_PNG_TYPE_GRAYA 4 // Grayscale + alpha @@ -64,9 +64,62 @@ typedef pdfio_obj_t *(*_pdfio_image_func_t)(pdfio_dict_t *dict, int fd); static pdfio_obj_t *copy_jpeg(pdfio_dict_t *dict, int fd); static pdfio_obj_t *copy_png(pdfio_dict_t *dict, int fd); +static unsigned update_png_crc(unsigned crc, const unsigned char *buffer, size_t length); static bool write_string(pdfio_stream_t *st, const char *s, bool *newline); +// +// Local globals... +// + +static unsigned png_crc_table[256] = // CRC-32 table for PNG files +{ + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, + 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, + 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, + 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, + 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, + 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, + 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, + 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, + 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, + 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, + 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, + 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, + 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, + 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, + 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, + 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, + 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, + 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, + 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, + 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, + 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, + 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, + 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, + 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, + 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, + 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, + 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, + 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, + 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, + 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, + 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, + 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, + 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, + 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, + 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, + 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, + 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, + 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, + 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d +}; + + // // 'pdfioArrayCreateCalibratedColorFromMatrix()' - Create a calibrated color space array using a CIE XYZ transform matrix. // @@ -260,7 +313,7 @@ pdfio_array_t * // O - Color array pdfioArrayCreateIndexedColor( pdfio_file_t *pdf, // I - PDF file size_t num_colors, // I - Number of colors - const unsigned char colors[][3]) // I - RGB values for colors + const unsigned char *colors) // I - RGB values for colors { pdfio_array_t *indexed_color; // Color array @@ -276,7 +329,7 @@ pdfioArrayCreateIndexedColor( pdfioArrayAppendName(indexed_color, "Indexed"); pdfioArrayAppendName(indexed_color, "DeviceRGB"); pdfioArrayAppendNumber(indexed_color, num_colors - 1); - pdfioArrayAppendBinary(indexed_color, colors[0], num_colors * 3); + pdfioArrayAppendBinary(indexed_color, colors, num_colors * 3); return (indexed_color); } @@ -1581,12 +1634,14 @@ copy_png(pdfio_dict_t *dict, // I - Dictionary int fd) // I - File descriptor { pdfio_obj_t *obj = NULL; // Object - pdfio_stream_t *st = NULL; // Stream for JPEG data + pdfio_stream_t *st = NULL; // Stream for PNG data + pdfio_dict_t *decode = NULL; // Parameters for PNG decode ssize_t bytes; // Bytes read unsigned char buffer[16384]; // Read buffer unsigned length, // Length type, // Chunk code crc, // CRC-32 + temp, // Temporary value width = 0, // Width height = 0; // Height unsigned char bit_depth = 0, // Bit depth @@ -1603,21 +1658,134 @@ copy_png(pdfio_dict_t *dict, // I - Dictionary // Get the chunk length and type values... length = (unsigned)((buffer[0] << 24) | (buffer[1] << 16) | (buffer[2] << 8) | buffer[3]); type = (unsigned)((buffer[4] << 24) | (buffer[5] << 16) | (buffer[6] << 8) | buffer[7]); + crc = update_png_crc(0xffffffff, buffer, 8); switch (type) { case _PDFIO_PNG_CHUNK_IDAT : // Image data + if (!width || !height) + { + _pdfioFileError(dict->pdf, "Image data seen in PNG file before header."); + return (NULL); + } + + if (!st) + { + obj = pdfioFileCreateObject(dict->pdf, dict); + + if ((st = pdfioObjCreateStream(obj, PDFIO_FILTER_NONE)) == NULL) + { + pdfioObjClose(obj); + return (NULL); + } + } + + while (length > 0) + { + if (length > sizeof(buffer)) + bytes = (ssize_t)sizeof(buffer); + else + bytes = (ssize_t)length; + + if ((bytes = read(fd, buffer, (size_t)bytes)) <= 0) + { + pdfioStreamClose(st); + _pdfioFileError(dict->pdf, "Early end-of-file in image file."); + return (NULL); + } + + crc = update_png_crc(crc, buffer, (size_t)bytes); + + if (!pdfioStreamWrite(st, buffer, (size_t)bytes)) + { + pdfioStreamClose(st); + _pdfioFileError(dict->pdf, "Unable to copy image data."); + return (NULL); + } + + length -= bytes; + } break; case _PDFIO_PNG_CHUNK_IEND : // Image end + if (st) + { + pdfioStreamClose(st); + return (obj); + } break; case _PDFIO_PNG_CHUNK_IHDR : // Image header + if (st) + { + pdfioStreamClose(st); + _pdfioFileError(dict->pdf, "Unexpected image header."); + return (NULL); + } + + if (length != 13) + { + _pdfioFileError(dict->pdf, "Early end-of-file in image file."); + return (NULL); + } + + if (read(fd, buffer, length) != length) + { + _pdfioFileError(dict->pdf, "Early end-of-file in image file."); + return (NULL); + } + + crc = update_png_crc(crc, buffer, length); + width = (unsigned)((buffer[0] << 24) | (buffer[1] << 16) | (buffer[2] << 8) | buffer[3]); + height = (unsigned)((buffer[4] << 24) | (buffer[5] << 16) | (buffer[6] << 8) | buffer[7]); + bit_depth = buffer[8]; + color_type = buffer[9]; + + if (width == 0 || height == 0 || (bit_depth != 1 && bit_depth != 2 && bit_depth != 4 && bit_depth != 8 && bit_depth != 16) || (color_type != _PDFIO_PNG_TYPE_GRAY && color_type != _PDFIO_PNG_TYPE_RGB && color_type != _PDFIO_PNG_TYPE_INDEXED) || buffer[10] || buffer[11] || buffer[12]) + { + _pdfioFileError(dict->pdf, "Unsupported PNG image."); + return (NULL); + } + + pdfioDictSetNumber(dict, "Width", width); + pdfioDictSetNumber(dict, "Height", height); + pdfioDictSetNumber(dict, "BitsPerComponent", bit_depth); + if (color_type == _PDFIO_PNG_TYPE_GRAY) + pdfioDictSetArray(dict, "ColorSpace", pdfioArrayCreateCalibratedColorFromMatrix(dict->pdf, 1, pdfioSRGBGamma, NULL, NULL)); + else if (color_type == _PDFIO_PNG_TYPE_RGB) + pdfioDictSetArray(dict, "ColorSpace", pdfioArrayCreateCalibratedColorFromMatrix(dict->pdf, 3, pdfioSRGBGamma, pdfioSRGBMatrix, pdfioSRGBWhitePoint)); + pdfioDictSetName(dict, "Filter", "FlateDecode"); + + if ((decode = pdfioDictCreate(dict->pdf)) == NULL) + return (NULL); + + pdfioDictSetNumber(decode, "BitsPerComponent", bit_depth); + pdfioDictSetNumber(decode, "Colors", color_type == _PDFIO_PNG_TYPE_RGB ? 3 : 1); + pdfioDictSetNumber(decode, "Columns", width); + pdfioDictSetNumber(decode, "Predictor", _PDFIO_PREDICTOR_PNG_AUTO); + pdfioDictSetDict(dict, "DecodeParms", decode); break; case _PDFIO_PNG_CHUNK_PLTE : // Palette + if (length == 0 || (length % 3) != 0 || length > 768) + { + pdfioStreamClose(st); + _pdfioFileError(dict->pdf, "Invalid color palette."); + return (NULL); + } + + if (read(fd, buffer, length) != length) + { + _pdfioFileError(dict->pdf, "Early end-of-file in image file."); + return (NULL); + } + + crc = update_png_crc(crc, buffer, length); + + pdfioDictSetArray(dict, "ColorSpace", pdfioArrayCreateIndexedColor(dict->pdf, length / 3, buffer)); break; +#if 0 case _PDFIO_PNG_CHUNK_cHRM : // Cromacities and white point break; @@ -1626,16 +1794,73 @@ copy_png(pdfio_dict_t *dict, // I - Dictionary case _PDFIO_PNG_CHUNK_tRNS : // Transparency information break; +#endif // 0 - default : + default : // Something else + while (length > 0) + { + if (length > sizeof(buffer)) + bytes = (ssize_t)sizeof(buffer); + else + bytes = (ssize_t)length; + + if ((bytes = read(fd, buffer, (size_t)bytes)) <= 0) + { + pdfioStreamClose(st); + _pdfioFileError(dict->pdf, "Early end-of-file in image file."); + return (NULL); + } + + crc = update_png_crc(crc, buffer, (size_t)bytes); + length -= bytes; + } break; } + + // Verify the CRC... + crc ^= 0xffffffff; + + if (read(fd, buffer, 4) != 4) + { + pdfioStreamClose(st); + _pdfioFileError(dict->pdf, "Unable to read CRC."); + return (NULL); + } + + temp = (unsigned)((buffer[0] << 24) | (buffer[1] << 16) | (buffer[2] << 8) | buffer[3]); + if (temp != crc) + { + pdfioStreamClose(st); + _pdfioFileError(dict->pdf, "Bad CRC."); + return (NULL); + } } return (NULL); } +// +// 'update_png_crc()' - Update the CRC-32 value for a PNG chunk. +// + +static unsigned // O - CRC-32 value +update_png_crc( + unsigned crc, // I - CRC-32 value + const unsigned char *buffer, // I - Buffer + size_t length) // I - Length of buffer +{ + while (length > 0) + { + crc = png_crc_table[(crc ^ *buffer) & 0xff] ^ (crc >> 8); + buffer ++; + length --; + } + + return (crc); +} + + // // 'write_string()' - Write a PDF string. // diff --git a/pdfio-content.h b/pdfio-content.h index 3967c29..c9956f0 100644 --- a/pdfio-content.h +++ b/pdfio-content.h @@ -87,7 +87,7 @@ extern const double pdfioSRGBWhitePoint[3] PDFIO_PUBLIC; extern pdfio_array_t *pdfioArrayCreateCalibratedColorFromMatrix(pdfio_file_t *pdf, size_t num_colors, double gamma, const double matrix[3][3], const double white_point[3]) PDFIO_PUBLIC; extern pdfio_array_t *pdfioArrayCreateCalibratedColorFromPrimaries(pdfio_file_t *pdf, size_t num_colors, double gamma, double wx, double wy, double rx, double ry, double gx, double gy, double bx, double by) PDFIO_PUBLIC; extern pdfio_array_t *pdfioArrayCreateICCBasedColor(pdfio_file_t *pdf, pdfio_obj_t *icc_object) PDFIO_PUBLIC; -extern pdfio_array_t *pdfioArrayCreateIndexedColor(pdfio_file_t *pdf, size_t num_colors, const unsigned char colors[][3]) PDFIO_PUBLIC; +extern pdfio_array_t *pdfioArrayCreateIndexedColor(pdfio_file_t *pdf, size_t num_colors, const unsigned char *colors) PDFIO_PUBLIC; // PDF content drawing functions... extern bool pdfioContentClip(pdfio_stream_t *st, bool even_odd) PDFIO_PUBLIC; diff --git a/testfiles/pdfio-color.png b/testfiles/pdfio-color.png new file mode 100644 index 0000000000000000000000000000000000000000..41d0b70e3f9d165b7da37f72eca1a398eb469c14 GIT binary patch literal 22223 zcmcG01yq&qy5}au0+mKuKtNJj8U+<;5b5sjZVPDyq)S1N?rx<-8l+34ySwJup1A+H zbMDMpcV@n|P?o~p-}lDz{OaBQaxzb`t`T2DAP`v3#Kja42vqnM6>$ammpid&E&@S` zcqaBx(PeaX!d2tB@}%&lHMcnG9UT<|Y&mpvJmwdHeuERERb_kwWlHK#$Et!)6c}Gi z8Ir0G?H87gc6H0BXNNG3hL~q7L|+j*DuzU3&V z#bciv3x``X8R!YfSBDv_`Yhym{1FF!uLu7UIyxm9eCLCS96U-iaLfA^n} z!^4jJMITHN`1a51!HfLA`{xGC!;Dw7{>{JPz7J1MPL7VQqQ5FBDf#f{3J3^@^7>F* zT%4SoTwY!t9UWa->Zqlq<>ch#;o$*)+Gigg9UYyVtQ<;3N;vMXszyo}j+f*5i+%d^ ziJY7~BqW4AR*Lf0ho~q5LgXdvvPpU8&ZoS*JS_8$RRKXk)e!*!fmu6V#^IUP&@qoG zgrqS7d!pW(;zciMh+1yhD#b4wrsJdjbZL$gxd%2|Tf z*)g+r-T35Wl3!6#QFwSbJ3G6XnVH+}BAeCt19kPWwg@_Pb@h#j>hi5Bi`;~Sgr}k8 zT+SFeO2);Kd>MTassj8eeCex+kOHNAX zyOV`=zoAo^$=@v>vku@uBwQxCO!)GmVQOlsvoqLle`6~D?7H#0_r1Nn5@`xFIPiii zXBjXXR^t`6)8F1MbS0XG8!NXqez%Es`G!SJo+5)`VC;%}Fu7n{>G@3xA&pwM zz24NP@hivQySs(GPAjH!>uf__$+!ngX2F-}JP21YqI>|6$y=&KdCHlb{XC^~fSy_3X z?zH(I=D5Jhfb-%jfK|77acqWXJKS>`{$tLL%FKf|tbI;`28W8_-aWSV zgE)4>Yt^&W-WTVz`Ml+g#MiH1C*d@C57U~Os&8p&X=-ZvmFh24p6PfSdNrRaIGzczT0UToBf<1eP|xfiL(KqlZ~qobpfEadq? z!qCiY`RwEX7YFCswQHQr%5uo-{g*Gs&z?PVa@t=TEB8J>GCnm5{*L&zhd>vJASETW zu(0s+bG*U11kb||8PGbjw>;3^gm~X(AO^c}@Ry^%*f+kr9d;O$x2}Bq_RWu8NJ#7H z%z&4f6hkD7c3lEljrjw9ei#6=dIc4g41NR@5I=fB!P<(7ib})Zzkk!pBrML%^wUl` z^nHHz=+ovxvbR>L*^7hqiBd@+*mTL|lii>XU6Z`fL(a{TYbCs2qybm7494^$<*80=4vgTLn#oR?;U=cT| z<%zz#;pj)KUSXqaV^g4zX%J0y?fUh#wY7IQ$oTB%rS>0FQBnP9Z{NG|O3$!g{yvpn zD)&fCcG)P8(D|W0mD}mzR;ciKOl0H>ZEcEMw>G~BpS5*$t)CrC$;!%72)dQ1lP4E+iwzo)0i$H%8Vnw3O_TNKrYIfoy?RBo-Ptc)!0SQz&V4Gd0? zSMqZ<*2gRDgEyET*v)>AVbg!}=u==|;N29m+dYqU@Z{R#FgsD>gixq4$ptE43yC@W zZt`z=XB`yJlhkoJQWTi8G%Q*cF_&9w)Ol2HQQjTA*K}?R zjjUyZfPkRLoTRI(>u@eE97WSZ<5m}6-M(eGG#hpin%0t%;qM?e2fV)IKu)r})vT~>|0Slry)@W8N)%<_cqu(Gl; zGG;&gBJJq72NhE(Pa{)~zCvStd#?Qw>dVRc;c=bk>1Aa~1Ab2CV?VfBBv#heCT72_ zX0<^N!J3Mz`r=wpS~_qe3Hopx$>*m1;FOe_7KAd8Rr{ zXqcIEbIn#;f=R@FLKTSC_Nx4<4)1NOFS-{pVmz#gSJj^Gs%$+1YiW@vEvx+c_4g=? zsO%*B)pI*Xk3Pw@s@B*#o2sg+)?S>S2nh+9mAVb(Y5E4~Lt|1>QVMAPoh0bKOg^7+ z6><6UWpi_Lr;gzy^VP{(_h=SPVlK0vEBW>0cz6y=eRsJrIXO8Uh6{AX9L`T&MfvK6 zlXtea*_9D0R#W%&<}F3EZ=p7va@MQIN~P-;c{!<;K7Q)zA>`c|$7Qi!4uzP9{CA&1 zY;5fL`8hx=j3ks>VWFX+BXn6MV!@urOJCr>?B_df-`DZkr@@j)gJlu%G=$Vteq@+3 zW4<7X?d_va<@jaebtuS!;=Y8c=WOTu<_+fo^})`L{!`bg?(tIF%5i)~B|tj2dS9Yl z-qlj&LSHfGHZY*8j)H=1)SXldnCFJPevWxvR@O2Ms{na^LBV}~e*Sy+GPk7d`3eFv z;7%9pDmxuhi-YyVzcTGgqulN(v%&gx@$=_T8XB5g@=)CD+hGI7l-BtB`}=y(zH3yi za=3TW0IPT(ZaO`>|HqF2vJ(I_8YYalbh3x{)_NO)j}TIIFvmx_HP z=Da@6R`4k^GgFrb-+5(lEkagE_p#X+asNxKwwpI@SQRB&hQVXw^g@LjzGPrIIXSsA z->J{5`zx`;=px+*)5IRI#brlF$9Fd=yiV52Jv}@I^R+Jql(h@1Wuf`gNyjxAz46}s zg%W?HIRiyRFEskNUHd%6RC>~72Ft15%EDqbmc!UV>Xy>;=c%#pM3@LD9@zYXibTkw z;TIe{KyCxgc)Nwfx?pAmkgu%JQPbuIJ_*TK>eEozW+Q`xPJq*>p9DRy{Vk@X6s5s3 zv`%3hF~iTxt6J6KP(G@wt6NuB2bK0YLuA|vDcmcx;81eGV*vOL8orh`9YO%2ofZ;B zC=d6Bv>6#0FQGov(fI|Hu}QB`B8~mDq+@joZ`2z@&bS_?*JN>bsb7NyhOYALcyFu_ zRjEZc*4L1mmfvytXC}}#HvN{v!@~kw zGP6=Xpd!$g8(yLXw@#X*8}$n`YUU~p{rp+bT0mrHl6mB8XgGJgxAHWY7@vT^NMCFM9Uscu~vt~rVm-hxd4YZaK3 zv4Md~UP~NJm^iofsAE8g-=BsmC-7;j4ef|2iT5eZ+dqn$O z6&<&U?cvT5lt<{W5@|(1>fr8jaypvMzBUk>_x)}Tgn@XWrdDM(z`*TS%*Ml04y-7k zSx+>b!K?wmeS5nkOEiF{xVo|UZRwY4XP-7{mvg#5wBGh%kx1)%pR1*`WpHxX$YGNoW=!nuhSl3WM=h7`AU`($}2 zBJNwTZ=ODRB0&=lm=Y?|T^brZLc*b;A;~m_SSbQx;vXSrj0_CWb9aTlU23qqEs{9r zhIoSVkiW0q`@(f+9=NL9^XIrEB<{bPuA*6^zuwPjYn?{vLVR425Eoaeaxk^AvFT0{ z6ci8u;J>`Q3~MtWFc2uo#&~7_crh~ys2hn7_4KG{f1;aQs z@%95W1Y$7-^pgLFq7za|0kx*X7~m+9)WH2@r8ou=vHi}@uZt7*7Ro|>F~oP6fjR+% z{E?_A{b$>?1cCW63|-KCk0jg5r`x?5NJpaA^27#J8F@)wtu+LU%TH{Z9(2c zQjjPcr3Uu;0Jell@)ygMb9|!w$~9Xi6+k6WcNrNOSb!QV$}C83LB{7Go~EFhM+D_) za#D*nqSS<$Jd_X*Zx)zLwX-z|2?>1}7NKkWvFJ6dX#VorfkP(pJCh5#%`Pt! zlaj7(Y+Rh~bgQeXT29r~R;J2u5Ts&dcP&cXw;o{QFzSfmGAF=(@!|!n;?G~c2)pfO zq^GwG47^|>;Blofhxdu!3vY{2g&ZJHO@hgagM}{^6#G0Cnj76wQ z1QW7BEXeV_Pg<&GIU?LJt+KmQdXu7~d1SSofX@h`5tFiG%Zpbd*)r98-ED10CsP+miHW(+_&Wsp0P_LV z`3DA$6&VKJY0pN;FPa3-wV_7+G=v6LbP6nHZZ94#uDz~AehX_W8yh@QQYkSuHnwYTQ@*O1mBx{s zd^acp?TSdjWhS7v?1iz$-I&^CKa>5{5f35lPjVJxWt|Pw+LCyUHn1aeY^B7-P3&HR z_z47Ka9Y3etf@k;#Bu-y^`j|(4`@%-Ac_2lWE`0e0+O@-!bO0*+QJc_)qGT??FIBQq=Quy&-wwDSc5WOd2Uu2W>va;AW8RKh-m{XQW z%L@zHYS0E(|2{`(=pw~Ju;_0JpBB{AXzaZ1t*v?e8f|QE%yA3-!0QKD90kMlRsQ-bkIvEb0_k)41}`>6iMyU|rN1u|5gJ!^5MG zl%TqXg=J~?(m2^O%FxEhD1B}p_s>XOzJe$YlSo^o2<8{z0__5r$Z&W5*8sjjDk^T` zZUB^a%_cWXhx(Aa4;y>M7%-pZIGOJLxA^NMcA{b+*}9(}Es)f#tghDRd_|>_kdiVW znRs;Kf3MjjI|~g96O9Xh?BRe}>H3)Qux;V~WXE|fuhw8;6b!5i)8GV~C9ERRwbBxt z4s}PdCX51M*X=ichaPpw$=XmgHYRHUA%K{}&cVSYN+Qi#a~q_o`=E99_9AN}P%(hE zM(W<69&FU?gyiO0y1E`gwPLFM=lY7-Au1~>QaF%i4EC0{cr5CLW}!P#j{>tqZkC^h z9JiS*msPalq9RbDqL@_s4!0cv4ML|S4l>}eW($&2QK`^v^yM-i1hgfU@W2*UI*4e< zPE5uWN+CR1<(R#1TmE(*_s`5yv7WfB2Y7JwsZ=`e}3&Q7Hp->2uc|+obpLpN8LF@X?;r}{y1YCq=#C`Z7Kiik)<{hiY917MyMe41vdKboHV>{7F!hj+ z8cgaDwf6S1v9pJ3`sC*3dLHlIbD!w$-T+m>D1xozo0pyj+i2M`0!0U7RVCB*vMt&w z-4{Xfklc(D8RyQgnUiC>e|h^5t|wxj<>)~z)6>@{VcG<)2V;3l9>lwmHOVM?Uu*#2 zFd)78+QMlHuB*d^&XcajfG}5v^6Q<};?#2YcXxw=f=GF+64DO-KIj({NAj0w^=5`S zpN3W4;OtH0K!*-GNj|*G0k)#KaJhlI93LOL!Zg zOKEPt0;=KI@Gu@ezU4#}7c+BkZBiWag2n`xT<_`AR=Af15LDx~xQ(V{gBYKTDUtoc zY_J%fY+Kj?YCTz7`T4V0^-<5sbIwy99a!B0h@cFpk%{T~N1(*;5$NOM73Wz(c}$~~ zj-!cagPxq4n#$Fg_e4+cH}qEgYnR?Nx}NO~F_$M3DF>D1LX(ZDyh=?qVINlPOp<_d zOCBULhn(hgS$TRqx9$juCF816R ze2gr2AM{FIK)Gv3&=kpG9OnAvUvGNd|ZxSd*}!povfK9O2{RgL+V?!KU^`FwGdYbEkC7 z_!n7<{ff^Rgyo&p|53Z1YidqRH@@@#4zvqyJTB}N07@ju@6QLD%}2U;@>h%?4^MRC zG?QwP!Osl&)jFb=B0YfHZweg(ThCU^0w%6jMP%u9ZXkw4e11?WML`}0*$SQp=^4yB z0v*lBpm&n<08D{#&=XfnH@3I!(iAdp&%Xcg0gsGqV%9Sf z%q_50RwdLtJ!>^sqT38sXO%M**M|#V??n-JRp@cH`8|C^{C7CCK4P4#S*Ul({M+`< z&dTyKP{Da#B|x|n<<{CW_Z&J@f}(_m?%%&}1HxoZ14sy9SAi)6FuSeIzq46WP3^e% zDFxS&gEq%H-4jA2oYdeuroQ6}0Gi+o4fN}x#f6nR8)Lpta)-YISsCyGfaou4vBLru z7M=no4<3dX6^wvVHh@>CS}>gxvpY@x8C6xsz^W~xoB$<)$44Hj{NhDqLPCx8R2_!w zD#shZV11ITwFZ`!WVpEc<6LNs*(Q5377$t z=b4_4j*f|H=Va&xZK-!T2pVC1{c3m#eimoJG-&?yHq)rd-5b5B?|^PYO@J0OWx(%P~89d**+1L3`8F&+Z8*4p|%s>MQ7|6ciLt>Y#I$Wh^<^*@287-aZGq zVY)RTw6MP~U8Ia%T~$SZk8fyXRCGD1TJx}$keZ4TDPjK6R5JFUK#NQ0)*-QLb&{p?8y=@HBoJT*)tW8@D2 zZCVvJcW7xb#;$;t7vlF{`sdfEg@RjWV9^~N9`3GBjJ33Yk2pU+Z)9MgQR7kw%6Dr3 zQ1=`naLer~6C$TU!(={Q`3DWWT~YH70y&@C2crGVT(q{)g;Mqa>dTMd&%sW0Q+9B2 zx`Bzg3%Fx@J1ajwAH$b zW^g^OoCpYg;Lg9t35#AP&jSO*#s<+zL0j7!EJJX&e+~>_%YzRIx)EJOTNJCdmZG8q z@D>b4mVe6zmq=TtFC_-a%g_)=V=3scpfFJ}upqC&+ClUDT5iu{2P#gh*M1&)4CvipsSqGGW|h@yr08+=wEiVnr_?Ece(WpBjCNow zgFOu!m9Ju98MdCg@2{H5T@`bf{T|lTBt~`Z$`zA$>OD2h5QZu7{g*!aA@Q~;l8*(; z{FRSsesq=ppDgo&fWKPiX?i1f=b)i9DgzhQb(|c3p+tZfeK90c_HiT-#fOD55Q*j) zRv?`buRaf}=Jn;9`_S%ocRjXe{nu~)-0cN?$5}2lGrb7}7qppNrPkI~o=OR@%Rx7G zasnj+=^ijE-$8x(E7mw^2_PYeTeUScKg}HBevORgVWEScv)0y+fr^=? zaPQU?5TQt%DR1?HyU^ZJZeV0&rUgSt|@<$xq z0!UQ^gk%A3Zl#TPIU1FH6BC;JH{n+7Dm9!Dv-9&s7c3_!JMsA4a% zuGDMpk;kCYqrL(LII}Vd2n5tA;3UEZ0!apG-_qk9pPT@T&}1TD)u`BnVRC!7LASi!qD7r ztEz4vsfIENvbW{rg(7b;QMCuRUgLhif(^UC5<0o4FXo*TsHVdA?%i9n|6A$v z8GL}2k(2Y&GxSBES2+M{BK`~WqEIU}b4Vf7bpt)mgU*b2u zN9bHvr$;C<3|yRcUvQF_M?^;-G~N`Jis$Z3A(QKX%>?lxEiljF2L1f}ppVbb&0!I9 zic{XoP|QNwXYlgKg$MOF%12&=+1!=ux{1ur-jDy4N3MzgjYrNLIStdT2)QsZGWH7% zm%M@IkXAY7pt^xYlBRD8^5STLF4{?XXs9g2szfL$Q!+9#Fmk=!$6gt+B4;MtSky!4 z_Wjj2!7^;8zO+D;zJC|z&Z;dd+XpdX)lpcu9+`gVr0=O9LK@Gv{W2bQSKMBTF{Kk0 zPBxTf9QV5qeu#8DccFLtoL%R^*{|0(C%sNA2{4eu30r6pwTRM5Z16BC6=V43Si?xr z+36{_)wqeieySpaz8>-dE8*IUr!O!3E$AA>YE5acE$jl8gK+|U99keWIJD{^PC zm%7t0EIb@1Q!%TWD9#z{p06!rYDS&xrDE>CEIo%hezx7ts_L%x;srh~uKoGx5%~J% zK!CyP4J2Sj+E>czJ*!Yt3EwvtCQ~JM6JC4k=3NfaF*jiwxL?R`)YS>`@l|cb95gjG zLAznVyLRK<4n!i%wTzR;=TSZ$AO=%FaRhtQpPq%q3hEcuHDDQM0J6!1y%PK|ZjcTG z^l>Wv(?8ICnoYd|s=jm?ZxHuw7hQd$udh!b==O7*xAl|gI~8Hk*LnqQ_Hm8tUm)0F zIVPnZQeMupa)%chiha8W#KUs(fToR26L9Jy0ZMM~r6#vY(MONs)LS68LRPUw zSh}DpdFopT<728YBhD)%t|LhPd3KWX#`nXg*Lob8FO-#wPhQ4Va&mJWnfebkxyR+G!Z^vbzJdI_9~F{m1i?a- zgmo4?DznXxF-}E)drA>=9gcQLM)J6BcY!G^3yR+4`=`f+yjp;A9GM#9w!zwxRu*w{ zFs+Xi)1BEinYj=DZCiZg`l|!XC3LC* zh;k+Fe!-j}86L0|bF0aD(4`CB3312#+yPrkj1!6@QfyLb{u`lWqAQ`JTrnsrE*^Q- zkn%V%Zsi&X&$r_Z)vEVL+y0LGav^NF4!W`!I0?mGXKoP4*sm%s-l=ij8K&8QDyb7u zx#9@HlhacVmgs6&tHNhXvZJA@g#Kb2#$6!%P$zdohU4U*{$k>n7|s7gDAVu%uY}U+ zH`Z4pH_8<7;GhnG^||JZhK9ytJ=sA%UK7^xsdknU%6ZB47R+f>C#gQ&z~-4QkO5kL$Xxt zqPjXQfS?BKgFCSEk=7^+K9SykQpmjzCY(VkYYxC)JuGL7m1;>Bju-N*dfA<>4eALv z*f&WZ*lf=}YvgGH&1EE^+d{O!yl%mZrC3yiaE+Kv7TNwTB>v;9VU5`Sr_@5_|ASz;4njdDF%k|11j|j2;PN z1TpH%2EaF?qsJg4q-*CyNTdO+EH5r*ymzmyvySKd)(wxZ*Pi#Lh>C6oItydLG{aVuv*DeBcZ5-=TXV$X^8F z_OiBG(6hD{274bET%E11nYnp9@B_TYE70_`iVOgPL4K?B z4$6HblJ8G9JqL%_8N?znhokK|2zGp~tD6imUm_qUKmWm)@8areTEDolAu9$7vN=0~ zNgfmJ?VC3pNrKf6O}QX7`e$=H*jHY<0+E{`EqBY~-6b)a=yvbZtybtSb`MB_RD#M2 z4~s>{r$~e2c{u$JYjFGDBa3#Dp&yYs=!D zw`M@M_f97dolJtsAp@w{F4J!b{pcZD3L+JxOza#Tp+)Z>92ifR11WBij^s#1!ZMX zZ3bXU+_`h-(WjoawyU|qlnBf|!1;s6+Ld-l^Ds9%yT1mRq95dgfK?DNSJqegwX7G} zu*P063_z)KSQ%vA|6OUnFg`H>s?J@UHeW0fh)Qd#s+#INgK%w1YAWO%AT0{n#)B#E z{4*=a=|`By))GB&NX!NJKQt8W2O6i#L-dMSJ1&7gs#%MK^*rw zu)+J*pU}X;>PYIuF$bi}bXzA-P*AXrFOQFp`u zTm;>TSQBc)*jV*f*)WLM1au_{j=4kvGY5sCz_+1650-Obw*V|hP&YBHu{+d*2y7i4 zHLIO+VOuAgjTEe48vqO9FvAe^@*a;T1~Gm!k&-&gj?e z@Vf!J51jDA6A~O`0Vew9e*>6-Uk^->yByQJ2~-x)uCb0fAT(}Ysqyv^ zG9}8*^du0-TN2zO7zaQ@!04q*X(7xbx&C+Kv8qxgHz)|RQe%>`JV;&gG9BF)peK?J%3>Pkw!$;_09j=_LJeMTe=)C52{Zr_b94|%Nl$BrhO|`N4g+9FHkCT)XmS=776!Z9b!fTR zA3=cH|9gMGJxC>obFXagUt7GH^zV|jQT<25*6O)RD|MX#WP~Jrw}AOaGk1qDLQ_OV zMFm6pvjWf;Suh8oo)J5r01?T39VvDoj=!Jx$HFxFBG!_dCMqX)3tRBNv@Ve`7#BI8 zk-%Omq*lXe8eUs_1|VVK*Dt^zZSyP|urx3oVI70jG^Fi4F)<-XMfDpxHpIzZV_@N2 zL1&0u9<#0&1Ql+ku>m3m69*?mliNj&7dbghg(@{}duD_DpQO_inwy%CuzOV41?G*b z8-ZymI`Ssm z{gaNlKMhhAB-{*?$)Gzwfs_~$+&~{f+7VCtUy|VC4;;>`i>jeOnmUA-YkXQ03sD@qP2sJ-AjMD>Ycc#E18Mz!~|qI#PUbJXHTdV(wyq zGFcV_lT`1IV~T-+Sh;e%Rz6i`HIX&J<_X&n@{cm`s+5#EK*XSWmdmlJnO@B7_=`h2 zo|yyNv}J*)JZk-#@t9_&qStmC9jwhb=X{MyI{+e}4nQmS{QBw=6tw;Xmsq5m3$8>+ z2n_TP9GZc`LW|=M9b^cO)IghDgP0v;D+?CI@OpZusWvIHU$<+PS&RUGq{i__9@N1g9G>rwAr-IqH4+fQkjH)?xWaVojDpgW2^3Zr1QIa^_)T~kIJXc_Rt>9>Nwew$ znH6v=R<#oG;%n84W3vUlE$?E%pmA$&P+I^a3AC%4%9c4;--fl-b0fTQZ)O9b&9zem)Q!fwE?74CMx;ltrUPC^J z9$9)k@cJVB0LSiwApgq*n!_=47=EwQ2iRDo4+=n-8Wn~@&5Czzj~hLwttWVo7Dk*NTz?(!cS6>}EP zzjpiy_<^$=!h{t3I6rOMGoCzrh=L6=ge2vy#RsaoPmkdqkwd97w*iV*NS@h#a7nwx zxLPM11YJdQuv;C)1(9hTwAMbfF?Z{mXy>*tE9&U$|&h1^d_B3%jTyzBf?Lo|8NinT!7)p2J}zkUhb$7^I{WR*szH|23>;!jrf zvY-jvkDg!ev#{i)q`YdMgGH6Mb+rj{u_Iqor*j*C%=u?P^#+h{d72j*dNcm$sFlL| zr`H6`C>c~qniOD!oK_xS4#1JV);Kk%_g25vI(2Ve=*8Fl7yfU@cL+#BuM-1j5l*lW z*0%2)ozi~sw_FDl>ntoREK2Kf30q zxVhy%ga;{a)xc2+>zb`6PzksW*i2*;=wy>XF|`_$bphVp`Id@o(rqOd$z}oItb&m_ zIh3Zb1Z=t7Vx(^t<(dO!Ldf~05{ec}0`s9fLwg}yc~@6nk_ZsOQ!3l`q4Fb-pLo2U zgZv2efNWLyOhvPncLkU2%NNhpKgm^i9N7)xz@beLN3Wuz0?y%G2Ve%FPU3u% z7Cn!DiUe`;UzmR{EdlE8g8VAfVd;bLznRqQ>+52Q+S;tq?S|~PR|Mo4BEdJ*sa-Qt zm3#+zDkr4EfXNE-W?r5Q<*fo;fj<=x$OPBqx)D>$hkMVVhu{(tmP22hkc5*Wz|wus z0COx2M6(b3NSr1dc5%KWLedhK36eibNWSqM&daL-Zm- z{qFzP(e8^S277%t7Wo=*DKfwd8P?tcLu0bY@Ou34NJ_KIQd%@fYaq7P8Ce>RN&AFG&(tJql^JFp=4_aP+41d&)MbXD)Os6Vd8SMe8j+)VcD=a1%|c8Kf(>A4gtPLl=k7;u$6=z1YF0!d&{wXj-5cn+!} zA|k*m1Te`sH3cDPbP>i&2!zPO4TMGq7Fs6)LEwe_TmW>8|6h6Nf1$JdYxyP-_3{fi z;VzUpVD^uL@Ba;n=3l(se^zn+?H}3negGO=k+)CdLuRxRQ2}zKqYt5&oxMF~78V&P zsT#XEB>#}-(DWPqCfA5qlM@&J4poZyR1Gx8XeQNfb1C`=W5ffrL+YD#kB{4ze=26D ztEFtaDLD7#XDU9I7aYhaT;KBi)D%2w@(<=?sw>Kd>`Tm90?( z7fnZm<-eql^Zm$7P2l^Hmr9CnNWT=#;HEJ2tj_3#Abw_s-Qz zLPtkmoa#S4m4md0NvK6dNkbA&&619DxZ^(713B?`jqDJi92yynII1UBZnRKt&gCXKHE$6!B0Iqx{A~WR9sD znr)x1TRgiRN@cL?E_)o0nfRzh5>n6A9bk6(20TKDv~Fg->2iOsIW!zY#o|esDoH*Y zaO?gLP%R=Q1XHbmfW1ck*t@Nq_cGOC8ST5_HwpVSS&5myMOha@#ux;J6%|mkbwKyc zphrhI&@?tVbOfVo&Y$q@EG1li?9eDPuIGI+Hl^_VdAtXloPbmp*qjulZxB8=<}Z;P z50)~n)sc?QiVIiG{IF@K#|wD>{yhi?aC&EL2rx50kQwkNQv<55NL|u>FN7+wG@>iP z&m1p9&v!BOGb;DZ1;UCAgM6@)*b1> zyF4705%}G{$o9<$iu!I^gT-9@rI0(_YqfZA_IuhZC;Rs*vWjxDm-fUYs8Uk##l%BSj7RWjleF8JNU#zVZxKbKKpkFvbO) zoy=!0>hN}UQctz+8r~a-HN_0YO%{5uYmEvpUh0A=bvjnjNDZS#r(d^jBZBYPp8S$Q z509ZiR9M^2=UM+9btu=DBUL2xXTyKI8MLX1;TzN>T9Sx6`!MMtQA%s-Va)Q=DyFV0e7YS{6GDg(bI1(vHSD{&KCAm})(Q0nY>Xq9l4sPA;Y#AM z*0SFKcMv|XL$VuNM2z$X9SzMae69piB84czk%wSs7$7^i^7C0wrT`lv8+?_+5*)At zX~=bZ_G%du>c?W&jL+>aIMpm>m&u%?N~X+~(kucF*i9XJNcjU;KDR!&dYB3^8UNOj<9vn0ZTr+>5fwqY7%Hs5zxFINQ zq{n<#+VELchYqDDPbx`(myOL9v_aakb1aYxW&sOAP71&i55sMg9#@U^EZ7$m`2Ae{ z$1d8@4xbigOYC!kg;W_#(NbyzU(F-jb&QPX&WHKQd7o?3 zXg$A~usNlaHBH-qd{AXR#KKa(M@$Nb%Rs!tB;m%~3q>pr| zhe{w%biyO3U&xM)jV1FtTY;A~eC>+Qjhy(a>X|9erHEp)IF}xY`*HE=$XZ{=@t+0a z;jvaaG@6Bg&prUffUl*-$(9IX6y-sDK_tV^#LqbUQGGitNE8ps3sJ=;9QXn9Zx2F0?Z(27PUK~HA!PFl z5#8>&Ub&DilXyJozVVC(M^p%2`V1Vf?`>^gosJp{v9ms&xwj1-I_~hd3(9esRT(^D zy~To7QUtLPsGVc)?}GmVI8;cd!3VP9L@qqmAZQ?$OP=P+!ooqm_gVY<_^4{fm3=tu z<{a|$12v-R){R~O8&%d0tat{k-vtFQQYDA5S zn)>oh@*L+vaO7%^m$U6E$D4$m*G5Z0ED?e;t{dTicfH_a7YbfN<$g^TeQx#bc~^v4 zCWj#2ic|2j&}%kLw?(pT?CjJaS2o!UX2MGOlvj1#qyS+i>~mmYk>TNxGXSgS0^)jK zxgQ}M5CSQz8bQLRbSZD*WM14!+uIfKN0@97FsbNR<}Rpq!_gS)+P$bsHE(H*AW~k1 zjTgu$88Z1ZEOo_azfSjD+u7}fUf;X%taXb4yRkRcG@=NVBoRuL3Y$;shIrSSf%SHd z9h zxXC(YSAJ@L;#Q0Db5z6-g2@s-(4&eF&ix_HrMKZ8U=70OQVbP}fWM3k;T`Xqq9arW z)%&;)Qq zyRk8qtInfoY@L<{l-Rs?f?}eWPlHVf4*$zvsbCSH8XjI13!*T$-uzU&=B!V zhuS6yxTd(T%YKq0!ohik@adu!ea1MOcyxUVj?W1M0ag9)*{Qv%yA^p6-qP;4$6Fkc z!_rLOL3nAJA6|uL&vr)vode*O%OwWl#K)$ZA766JVNw>~a1XcypTn}~0_nV|YUljO zz|RK>qRz3{h#r)L=W^dS9P-N~Jyf4t%|Ak@ga8?Y!v}>v@cBB4{D>0MB&re8iN>fZ z)bT5WFC&Nge|U^4kG`$jMwsKGA~Z!T9S&v1;MlX}CR*>oQ(Ful4xf-^y}Ntui)y*` zZ$wdOgT`8Ji;!T5sH&1kfux@4knFU1Pj0cHBT8bwIN~WwKmD;Zg|F$!9l!8~mh`;*v6)k1XPUE_ zVW#3J?WOFjK1cN$wOp$+$^I*do;1bBJm&OualfOmR{V4c zvNJ1!IM(mlpet1!K1YF+uyaNNIVabXVj1bQJw-LyyL*aRDd87qPvr%5yI!@V4~G|D zbzixCDXZrd1H-O>=eMq|Jn3uc2gKI4wrr>fCKGk+=9$fY1Ig83ZRND|;wwJfSUzRM z7O6ZgRW1k}yjuu?SB;nJ73FOO&3a$$?td$qL8z;(cBLzIB%MqM*4-LZrMLTrd$nhYuN_Nb7M zo;xET!&ODNI92b>Nce0++XD_Vp&~ve5}QcJlS!Yww{DjUTcbj#U0{k>Bfx_|LqYVA z^KLDEWW4%-*7N()wJNRPDhn)#_>rw+{sPhd3Q(CZ`S{JQ3f7DfLZ7vyNv_F7=gvZQ z8s23nKN-x!?8w%}M$v=Ezd(WpBOe_ha>Cy0o97x{-te>gC@%rW_Nct{b6OgN?3YzU z;6q(v+0zDoaKP~k*qXGoPFwyyw-7z+POSqs9QuN3Xg6XcxE}x7tasF`uz7fZ3TMLH zvhkm6OjYe)j8$K}r`>trGn3q@9h=VieD^eUF*N**%|p$^j`wI^PpDJljX%8U3Dd<+ z^j3N3`*ZKLB z%&q>M{jg|Z>m+z#4Q#!nb*rc#1SO4F;Hr4|OT+Ew%Q;rZ7g`f<1ZIWY?hyEZcLx3{ zYq(Y5_zHx-YLEPUzOc`y0&Fgz2htgMWCfX)U^W1;KHA|re^ zW0I1rtgVgPt{~=LKB3`PVhB&WCz`|*t=(tnYC)-8ZzT1kR?5BrqS`GjPcHOtz=w#$ z#60*?4d*%FSjn`v6l4NBjr7|pNa#^#0!`Wue|>024QA>IkYTK%?|u9%K*>Qq9G}s3 zE1b{xVsBad+1i8a?7~vC{a_`XVSWc#Z8t0a;>E!DnkYEF%e4#O7q{zSBhaPHjl@@< zynFuRscNumKcKatp>jCxDy$F5QEhGQ{Nvh}v2a*#s?0L}f(@c0AR#bC*<8C4Hal73 zaiTcMj=i%C+066HP)H%!-rUlH;n5GtK0f%YwdMQgr*sHEPNz_h9TnP&jSCNR$Ud#E z?h3c)+y^0$i;wTUF(nQzZl{qwIJXzN)YQ}ffAnLoAgEeNlJNxRs=DRmRaGwcIDETQl`k@593t;Oynpls9;7ApZ|+k%tv!W&^J2*|u}%&9`Ocz!hb{HK)K0f_;6r-hTW3{55c_5;)#_ z>GEY@dov;=WXkN>zdh&6%K#TKW^LUB?CK}3zpJ_Q{1eOhPg?f?Pg7a8bm?5+N;T!< z$B!Nb9+d$E`+hG!{~WZx2iQ8g{T8&I)6MwsZWrMGO3;GIr#}RiHwgI6+cQ-@C+NeB z#q~Ept8RdMaC!LsqjG`MC&1d$Z~5$x7l8{Ds(@P@?c~KdKJzgozV@H~$42q&# zHEr|EOmzkh>Bn(D-);@rKViMR=d%qVdnX9~d)BW29FqhNu>w!j0jAjEEuFx_^ni0G z_cBcG?XRED8GbaKVTON~()VRcfA{`*IO&~vQGS$&n(8HBm32D70Jy&xn9Xx;Y)}l) zzYUBxV9NxUozrG8u*~oloNqMQT~w>fV(N+irvIn=3%2_ot2KHzwQ#;q#s9yRceI7= zHdZe=ulso4i8+(6EB>keS)VukvSiQt@Ce{33`aL59qj^+-c6e_Weu=#%%=aSY`3+w zb^e_liDt9e+1M|W}nU5e*5h=V1RTVE&BY-_rD>qXctJ^5|s-)ivS3KyO|C@6cC(!R&368HI@bj zh6CvWQOm$vmVg}4sT9Fyjtx;uteq#1Hx z$cuh|cis2CYrX4TzkA>F$62TLe)ebY{p|C3;)D7NC1Qfx1ONaKKUIG63IM=2mtX+z z<_wHbgmVG_3-I*GV-1hlom6)tO7pAh#it_Qv|r(6hRCvHP-YXzJn7YK79qJs&y%x| zm$FluIlX^WnBwk+lI+WLQhBKkA`GN`0wE$(xywp6%HsOEd-wN=Qu)m1)EVvuiJ5`j z^Gmh2Z)FZ8(`P&f9t<6txh=4YxYz|_JpHs}h6E@z)WZQXAPi84z}WywPzD~L0Ne%3 z-uky6)rZNAFOZUTqTciUzpD7pZO4_EA5_BoP8q#2sBA%Z!DPRBS%KCfR&fX%LI#k_ z0?Gi01@u3Aqi24<@@TzP9IO2V#h2@T#qux*hFTx}34OLrk3+n1TIgA%s`qMq+90oI zKHoZ@WV_V5SmALK?%EOmViT$~D#ceGK+{1VzgOj8dA{nLP4mP|G64(-%6Q6NFb;_$ zigfytud6HVlHEW4{0V)b@?t8Rf^EAmQs%nA;5DC0J^G*;L4RdDmQ*362b$2frQF^s z=aXGjB8OI^?3tXjwoSuN@T$`twb`OjkLKpQ6}LG)!Yb{awc(#nOut%tGhF$l?WMkk zOQn#I`E*Ne8O$nQ;c3kU2?vrCE$KY`>phJvQ{rSc5@3hI{mpdJ=W#OD3{Ah-+dJ4Y zm*wuZ9~S}S)W23n^Z|HRDBpRvrnrAHNgr1ql0x;fM$L_h1j#NmXvw$O4u=?r{K?2s zB6|>#Jr>b6xhg;Jx)4mx|n`yF3q#uQPRe=uBQ$9=1+_z}5i zmXC26eO0Z-$%E2fBEa$zuZLaoUQsxO(HmwK7qDNM0F3U_JQU54kX6)2b$hEEyY?O! zRavXs7gX`!^@}N{GC=Ius%!E?CgV9}e2(g+Ce%t>;gZ+bWj7|F2^$mN5|dfyTky

A5@@s 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 AOaK4? literal 0 HcmV?d00001