ne of ZLIB_ENCODING_* constants. * @return string The compressed string. * @throws ZlibException * */ function gzcompress(string $data, int $level = -1, int $encoding = ZLIB_ENCODING_DEFLATE): string { error_clear_last(); $result = \gzcompress($data, $level, $encoding); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * This function returns a decoded version of the input * data. * * @param string $data The data to decode, encoded by gzencode. * @param int $length The maximum length of data to decode. * @return string The decoded string. * @throws ZlibException * */ function gzdecode(string $data, int $length = null): string { error_clear_last(); if ($length !== null) { $result = \gzdecode($data, $length); } else { $result = \gzdecode($data); } if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * This function compresses the given string using the DEFLATE * data format. * * For details on the DEFLATE compression algorithm see the document * "DEFLATE Compressed Data Format * Specification version 1.3" (RFC 1951). * * @param string $data The data to deflate. * @param int $level The level of compression. Can be given as 0 for no compression up to 9 * for maximum compression. If not given, the default compression level will * be the default compression level of the zlib library. * @param int $encoding One of ZLIB_ENCODING_* constants. * @return string The deflated string. * @throws ZlibException * */ function gzdeflate(string $data, int $level = -1, int $encoding = ZLIB_ENCODING_RAW): string { error_clear_last(); $result = \gzdeflate($data, $level, $encoding); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * This function returns a compressed version of the input * data compatible with the output of the * gzip program. * * For more information on the GZIP file format, see the document: * GZIP file format specification * version 4.3 (RFC 1952). * * @param string $data The data to encode. * @param int $level The level of compression. Can be given as 0 for no compression up to 9 * for maximum compression. If not given, the default compression level will * be the default compression level of the zlib library. * @param int $encoding_mode The encoding mode. Can be FORCE_GZIP (the default) * or FORCE_DEFLATE. * * Prior to PHP 5.4.0, using FORCE_DEFLATE results in * a standard zlib deflated string (inclusive zlib headers) after a gzip * file header but without the trailing crc32 checksum. * * In PHP 5.4.0 and later, FORCE_DEFLATE generates * RFC 1950 compliant output, consisting of a zlib header, the deflated * data, and an Adler checksum. * @return string The encoded string. * @throws ZlibException * */ function gzencode(string $data, int $level = -1, int $encoding_mode = FORCE_GZIP): string { error_clear_last(); $result = \gzencode($data, $level, $encoding_mode); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * Gets a (uncompressed) string of up to length - 1 bytes read from the given * file pointer. Reading ends when length - 1 bytes have been read, on a * newline, or on EOF (whichever comes first). * * @param resource $zp The gz-file pointer. It must be valid, and must point to a file * successfully opened by gzopen. * @param int $length The length of data to get. * @return string The uncompressed string. * @throws ZlibException * */ function gzgets($zp, int $length = null): string { error_clear_last(); if ($length !== null) { $result = \gzgets($zp, $length); } else { $result = \gzgets($zp); } if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * Identical to gzgets, except that * gzgetss attempts to strip any HTML and PHP * tags from the text it reads. * * @param resource $zp The gz-file pointer. It must be valid, and must point to a file * successfully opened by gzopen. * @param int $length The length of data to get. * @param string $allowable_tags You can use this optional parameter to specify tags which should not * be stripped. * @return string The uncompressed and stripped string. * @throws ZlibException * */ function gzgetss($zp, int $length, string $allowable_tags = null): string { error_clear_last(); if ($allowable_tags !== null) { $result = \gzgetss($zp, $length, $allowable_tags); } else { $result = \gzgetss($zp, $length); } if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * This function inflates a deflated string. * * @param string $data The data compressed by gzdeflate. * @param int $length The maximum length of data to decode. * @return string The original uncompressed data. * * The function will return an error if the uncompressed data is more than * 32768 times the length of the compressed input data * or more than the optional parameter length. * @throws ZlibException * */ function gzinflate(string $data, int $length = 0): string { error_clear_last(); $result = \gzinflate($data, $length); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * Reads to EOF on the given gz-file pointer from the current position and * writes the (uncompressed) results to standard output. * * @param resource $zp The gz-file pointer. It must be valid, and must point to a file * successfully opened by gzopen. * @return int The number of uncompressed characters read from gz * and passed through to the input. * @throws ZlibException * */ function gzpassthru($zp): int { error_clear_last(); $result = \gzpassthru($zp); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * Sets the file position indicator of the given gz-file pointer to the * beginning of the file stream. * * @param resource $zp The gz-file pointer. It must be valid, and must point to a file * successfully opened by gzopen. * @throws ZlibException * */ function gzrewind($zp): void { error_clear_last(); $result = \gzrewind($zp); if ($result === false) { throw ZlibException::createFromPhpError(); } } /** * This function uncompress a compressed string. * * @param string $data The data compressed by gzcompress. * @param int $length The maximum length of data to decode. * @return string The original uncompressed data. * * The function will return an error if the uncompressed data is more than * 32768 times the length of the compressed input data * or more than the optional parameter length. * @throws ZlibException * */ function gzuncompress(string $data, int $length = 0): string { error_clear_last(); $result = \gzuncompress($data, $length); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * * * @param resource $resource * @return int Returns number of bytes read so far. * @throws ZlibException * */ function inflate_get_read_len($resource): int { error_clear_last(); $result = \inflate_get_read_len($resource); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * Usually returns either ZLIB_OK or ZLIB_STREAM_END. * * @param resource $resource * @return int Returns decompression status. * @throws ZlibException * */ function inflate_get_status($resource): int { error_clear_last(); $result = \inflate_get_status($resource); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * Incrementally inflates encoded data in the specified context. * * Limitation: header information from GZIP compressed data are not made * available. * * @param resource $context A context created with inflate_init. * @param string $encoded_data A chunk of compressed data. * @param int $flush_mode One of ZLIB_BLOCK, * ZLIB_NO_FLUSH, * ZLIB_PARTIAL_FLUSH, * ZLIB_SYNC_FLUSH (default), * ZLIB_FULL_FLUSH, ZLIB_FINISH. * Normally you will want to set ZLIB_NO_FLUSH to * maximize compression, and ZLIB_FINISH to terminate * with the last chunk of data. See the zlib manual for a * detailed description of these constants. * @return string Returns a chunk of uncompressed data. * @throws ZlibException * */ function inflate_add($context, string $encoded_data, int $flush_mode = ZLIB_SYNC_FLUSH): string { error_clear_last(); $result = \inflate_add($context, $encoded_data, $flush_mode); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * Initialize an incremental inflate context with the specified * encoding. * * @param int $encoding One of the ZLIB_ENCODING_* constants. * @param array $options An associative array which may contain the following elements: * * * level * * * The compression level in range -1..9; defaults to -1. * * * * * memory * * * The compression memory level in range 1..9; defaults to 8. * * * * * window * * * The zlib window size (logarithmic) in range 8..15; defaults to 15. * * * * * strategy * * * One of ZLIB_FILTERED, * ZLIB_HUFFMAN_ONLY, ZLIB_RLE, * ZLIB_FIXED or * ZLIB_DEFAULT_STRATEGY (the default). * * * * * dictionary * * * A string or an array of strings * of the preset dictionary (default: no preset dictionary). * * * * * * The compression level in range -1..9; defaults to -1. * * The compression memory level in range 1..9; defaults to 8. * * The zlib window size (logarithmic) in range 8..15; defaults to 15. * * One of ZLIB_FILTERED, * ZLIB_HUFFMAN_ONLY, ZLIB_RLE, * ZLIB_FIXED or * ZLIB_DEFAULT_STRATEGY (the default). * * A string or an array of strings * of the preset dictionary (default: no preset dictionary). * @return resource Returns an inflate context resource (zlib.inflate) on * success. * @throws ZlibException * */ function inflate_init(int $encoding, array $options = null) { error_clear_last(); $result = \inflate_init($encoding, $options); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * Reads a file, decompresses it and writes it to standard output. * * readgzfile can be used to read a file which is not in * gzip format; in this case readgzfile will directly * read from the file without decompression. * * @param string $filename The file name. This file will be opened from the filesystem and its * contents written to standard output. * @param int $use_include_path You can set this optional parameter to 1, if you * want to search for the file in the include_path too. * @return int Returns the number of (uncompressed) bytes read from the file on success * @throws ZlibException * */ function readgzfile(string $filename, int $use_include_path = 0): int { error_clear_last(); $result = \readgzfile($filename, $use_include_path); if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; } /** * Uncompress any raw/gzip/zlib encoded data. * * @param string $data * @param int $max_decoded_len * @return string Returns the uncompressed data. * @throws ZlibException * */ function zlib_decode(string $data, int $max_decoded_len = null): string { error_clear_last(); if ($max_decoded_len !== null) { $result = \zlib_decode($data, $max_decoded_len); } else { $result = \zlib_decode($data); } if ($result === false) { throw ZlibException::createFromPhpError(); } return $result; }}w69?^[ڐ)޴޻HHbB*Iof ErfYĖ`03@Ŷij?fΘiu ፖN|:Џ=GQCcVS3IΒ~q,fIbE$Gcr4 K3͗/_uo4xhm'- ~^L}x1e'NXj뿞5tr3^:Sf>Eqkn,+K'.}O}'0 "DO(FЃލLg,|$Jq&7/Ջ?k1 lDkNbIz0]ldR#`1Q43ˍ 7IFnq{nͦl,_97v(Ofsc'W {A cW?eF!S@W:AK|Q,'s 42VrUPG3!~٘lz6Z%=ڤC(OH7W3Snlsʒ"LpYg]Kof)N]zX(QC'˶ ~i\k6D]t vhnv=vmh(] ?v```0g-vGA &nBɜ,]'x?%8 :c -N~ZMW7o9d @7X{Je&tkA:߿ӆ1e#@fIc灹(,N4XV8f fcQwœ؝ COx ^;~)x˔Qb&"e"A/6g l^ Ahߜ`NfGbh%~11H9?s).sCwWAgsF޹16̍pNk3ԝrhLl:wMY@(btWO',!7=o`cNpnqOm?OJqh. jE$b]]YShh؄g]&Cc0M4`Z1I8u䁤cB5Oɑߛ9i:;rP tTx5f7 L,K1y 齬?-\`NMK08M[ۥ401jHI8\F59 }q;IŭqE 2lG3sm Ni5Z4*{܉~bl`q4wj0nbUVM͵=Wtu4R׎g]]%ֹz-RUqaNy:=;5UC5rV FR\yn AR1 uZ/j5䒢29_[ D='"w>Y;3ޏj 3*;מk6ZfrF %f%#t)bŔ9ye2hn *AIsg @8ovϵmd.WnAZ`]]OK 'Ӓ:x&eA8/zMX *}q>LJOv?% bP 0X2A̶@k,nBpUc"NmcLRx cc[S ie'' ^@ƈ9؅B*8HX8ݏnkٌۨ#d!0we%D/'qA%DYg+- )CT$dq''/kd LC\@ Q(a.̎+ VGN2f\V=Վ\~ʦ 5TLG );?9-rVaas吼pҏ .AM2= FᏐrNFJ.|Hüaw8ߜBYY+[MṬRkePAdERi#zZs$Sֈ@Q4?:T46EA'y#l[h`Td *iʹ oPZ J!I)5vC$ƀn@04*0jAC̵>>;c*f-*!.]pL$2 K qM%pebꞔbk鼱d[IJX=R7v&ۆ|Oj߇/3$[2,kVlFMgt2]v]{x8dEi_mWՔA~j%W3s>؉oѽv&sͮs6lv܌QbCk҉SH'̬BrmgP31,|ȹys>Ftfw0=?k(6zׇi cn3N!-uk>jϵ \N X?ӲZ.rgۜՌI#U,S4A4{GQzkCnN2$26wb`TncvZѽ@@m$׾\k<k6Z{%0 ܤj~257 n &5)+l% 9eFٯ/}όpڬ.C4(sWuƙYM&IA$zx5k"05rV{Y=ǐb>Y@TD6YZ؈CgFoZ?vZJe U1_k@inN^*PubhChbžjI XO_!%n=wK<%DN` ;!k{w(@WN<5ɝZ]ŁWte8uJDЕehcOac!@L %.M܃)={rj4;{(A[^P֓AJMcz]V;!:a;~>+# nht-0{ J %z6iLACj߫FS Q0@  [1zYY!:\)Rl]Kn{ ,9.D4Zv!w\!5 ]ia[md@:V` ^:R:0 :Fihծh1695+ZwW,|hVzfG@_iVQ,7Y\&,f5O@n)sؙ@>R3}3V<'`Q_UXN-  i/5|/).s Ȱ`52,8p> j9U)i,JR3ūivAm-̅Ƿ"#.:˩ksT(5+7LIІG$m'E+pUl{?  jZEilllFy"k߇-ZBʛT`6_^]Z{O"k<f1aCQ~ oE |!ѪmO>r˓/@/o_Ӿ| nþ֗//U/>IMlkZ;T+nV!*1VMG]Fjxz:ͅQ7Ĵ^£h*hw E7x?  *~i U _UbU8Y [_g]і9oBzU~-Zc<ZޠpAWWl|<:xXϱnwy5O#|DMNП[3IFV(7Z>ފ3SsiB}b3?yEWt g!ޓ@YjßAb@5\kq#?Ǐԍ:z g4Q_xt |O)POdpb=?UF; +_g[WtFu=HooQ48k |?2Gl$ .Zdžq`%$9RE≡o[8MSSAW +MsR+4L;!NBNCHz\[[4Meȼmr`&OKWbY#Rdj?t ]4^0v7FOlA0+Yxy%٭+ѸdB2}`OI'N0O$gZ{S>fn*`HҎVj~H&A $P9HE$4^ra}>,^n&14qiFj$g6FЦv֢~]4?tyG[ԯ#Z 9+놏u } jo7᳸Am[MA`=6ԾàֳBU$9fr  48kCxkU U?,-?LX~FQj(EO].i|={TkX!Ktvc4`/]<{N}nz^3#[R`kUacBΩk :^қq x/oviK[v$%ʥ\-߄j|3YGqz%-"4mK̡SL!f~4O~~'ڇ_X .$?#%AܔRZ*= IaU mW}-n8ehx(|^;yqٱ>">j}|*8a{]fϫz7_W].Ī3)dpeR@9`7sU<)g0/_C/@jC4s <[ofʵ:QMor~)8_? ٸqoc7g4ef;Z} 9r.2MċM0^&ۿrdXoƺ0YbdAY}>t7 |{{?xb&9C|tB$) a_qELYu*v1^r;筒u!FG+\N]rUM?lŗ-FJ|Bz)h9@rw1](ROhm x?=\%ÀaV{Z&F0g$Bawh.>q8<0$y?yC8DzicBt1 {>irO,M|rSkXR?5r&.A{v*6X5v|ܭ[nໟsZ9sU%h<Xf{0϶4!mK˦Pf+KamDbad $2r$&=Fy/QS‚KUĶ|"k e~1 3tj{y:gmhfh@ -Nl2płp#&0%4@'H1 3;E(f|ӦB*U%ZәLQLocv{6=zvd 0L$3l1iHUp5 D8U@ o׿BC|ɺL 2_MLۉ/Db_oy҉9aC @.ZMoveu~bvMbԻGnS9 % >Do>:?Y!ID{ E|\0SE/Dis ;RV-^fK Rjsυ&V`@-|mǙהM|]YZh/$)aM V1VPuy}R>K;cQ_>Q Zʱ6 *[.zI,~UQmRLnF| &Mg7, |7?1חv}f1~F<׸m ojOB*o6t%e[Hi4 [h0dL[nDxj\dzJ{Co>5Ua~ؠ&=5'{ XGUʳ7Mov?4XNn;>n*>/ۡ+UK3Z4Hh9|1,Us58m9䭟4_y/#0T}0 *0ϤZpi-d1|P;? Ǯ${hZGOXn&^Pf] Th?Θ@ W4[i/֫Atz(*g%%ՃpXZ:ad$9;pnGjQ\@UKcԜo~x}f N[9;A6/Q0N{#\.ЋłYxʞ. 't-wn\*EY5s): Jg]y ڞwaX!wī3FmJ0\~-% )#}s]p't;;>'c;taG+cw3L!Z )F]s f7[oתCޣN2r|Lu.t1A#΢s#5>pۉE:G`#@0AP\ꙬŴ͢j Gj׍v^L7}#㌀47!,)0iNN'cPww 0/h{2Щ6B%웎 B1)X[nkM÷50٣ Dduaj<}sȖ0jO~v~IXf ~%[e腄ԡ/<BHkopPOʦ.2e,U9+&ucr!KNU1څ+9V6)0;7 %nD;=h:2i|]ET^`P1Zi)CfaCPePéwwjR}L]ֈ4)DGk)g$ l :e2ֽJʡ`[a`|WOj$ky p{$I7 dEJt h߆OՅkF|_0eU`y9}ֵS}|ʭ#k!{Q΋e0|Xϸ2:gvT(*Nx\G':scU8a wf$ .fѬFK`̤ÝFlGIѡA5a4ŻUL GW&\EvcE3<yq })sTTr5IucճJpS'>Nk<{l#›?s(Vz&hRF~ai7B/ %`2VfbH{TYd0J#+P>PVڤbjK2!\loG )ߨ_fk=WNgI00C<Ʊ/5B%z<}u/Ld#ԁHD=`R<|g')* 'ryŠ#U[( 1Lbf @AJJiW><ը)^&_,<WeQs#c\$3cMjŃ!L Y>m.3<*. #%uvDnol'5a5Qm"sR`n@5r[_; R8P۾n ZtX]L.s0J< )+HO&~VlZ1VY^V+K%*^Mߝ=VKf#x Vݦݣfo lvT0wV4] iŪpbX Zal01)WZ#T{8k!, 0[b:ERfQ00þI;oH&r?˦`I{廮 WY/*ҼzydAMj(.ϕb'SP<=]Pr)E9FkG"#B^j߃G" Z0keF_K#s!$C44 #VG|;e!]0ДxכxWϣH5ƀ;a1\h6.Y' hט6 9T ?[38 3Jg]"n>RQIcm(Ɛ/ϥwW uRebJj# F|7*V\3 s9ĺQֺa.֖bWvBrsn)( }}ѓW9ƗM{9^ /6Y.˗hrlqN,*0U<ø( 4uJ[ŔB]md/{9"ɶ kH4z e+sW mPˀպ+)7}j)Ja5µX~YO` &qRzj9Y=`!Hgx'R,DBqQ+u9m/e };fKo-UWV$qaVlq.=ArO]_Qݶxtg-~ǿ.>~-^ˢSO\p3:.͡m=rZutu3]A mhx5>Ok?̧Џ=e`v$O=<ִ:^;0jm}6]{~w2