亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? deflate.java

?? 著名的zlib 壓縮解壓縮庫(kù)的JAVA語(yǔ)言實(shí)現(xiàn)。
?? JAVA
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
/* -*-mode:java; c-basic-offset:2; -*- *//* Copyright (c) 2000,2001,2002,2003 ymnk, JCraft,Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright  notice, this list of conditions and the following disclaimer in  the documentation and/or other materials provided with the distribution. 3. The names of the authors may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT, INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *//* * This program is based on zlib-1.1.3, so all credit should go authors * Jean-loup Gailly(jloup@gzip.org) and Mark Adler(madler@alumni.caltech.edu) * and contributors of zlib. */package com.jcraft.jzlib;public final class Deflate {	static final private int MAX_MEM_LEVEL = 9;	static final private int Z_DEFAULT_COMPRESSION = -1;	static final private int MAX_WBITS = 15; // 32K LZ77 window	static final private int DEF_MEM_LEVEL = 8;	static class Config {		int good_length; // reduce lazy search above this match length		int max_lazy; // do not perform lazy search above this match length		int nice_length; // quit search above this match length		int max_chain;		int func;		Config(int good_length, int max_lazy, int nice_length, int max_chain,				int func) {			this.good_length = good_length;			this.max_lazy = max_lazy;			this.nice_length = nice_length;			this.max_chain = max_chain;			this.func = func;		}	}	static final private int STORED = 0;	static final private int FAST = 1;	static final private int SLOW = 2;	static final private Config[] config_table;	static {		config_table = new Config[10];		// good lazy nice chain		config_table[0] = new Config(0, 0, 0, 0, STORED);		config_table[1] = new Config(4, 4, 8, 4, FAST);		config_table[2] = new Config(4, 5, 16, 8, FAST);		config_table[3] = new Config(4, 6, 32, 32, FAST);		config_table[4] = new Config(4, 4, 16, 16, SLOW);		config_table[5] = new Config(8, 16, 32, 32, SLOW);		config_table[6] = new Config(8, 16, 128, 128, SLOW);		config_table[7] = new Config(8, 32, 128, 256, SLOW);		config_table[8] = new Config(32, 128, 258, 1024, SLOW);		config_table[9] = new Config(32, 258, 258, 4096, SLOW);	}	static final private String[] z_errmsg = { "need dictionary", // Z_NEED_DICT																	// 2			"stream end", // Z_STREAM_END 1			"", // Z_OK 0			"file error", // Z_ERRNO (-1)			"stream error", // Z_STREAM_ERROR (-2)			"data error", // Z_DATA_ERROR (-3)			"insufficient memory", // Z_MEM_ERROR (-4)			"buffer error", // Z_BUF_ERROR (-5)			"incompatible version",// Z_VERSION_ERROR (-6)			"" };	// block not completed, need more input or more output	static final private int NeedMore = 0;	// block flush performed	static final private int BlockDone = 1;	// finish started, need only more output at next deflate	static final private int FinishStarted = 2;	// finish done, accept no more input or output	static final private int FinishDone = 3;	// preset dictionary flag in zlib header	static final private int PRESET_DICT = 0x20;	static final private int Z_FILTERED = 1;	static final private int Z_HUFFMAN_ONLY = 2;	static final private int Z_DEFAULT_STRATEGY = 0;	static final private int Z_NO_FLUSH = 0;	static final private int Z_PARTIAL_FLUSH = 1;	static final private int Z_SYNC_FLUSH = 2;	static final private int Z_FULL_FLUSH = 3;	static final private int Z_FINISH = 4;	static final private int Z_OK = 0;	static final private int Z_STREAM_END = 1;	static final private int Z_NEED_DICT = 2;	static final private int Z_ERRNO = -1;	static final private int Z_STREAM_ERROR = -2;	static final private int Z_DATA_ERROR = -3;	static final private int Z_MEM_ERROR = -4;	static final private int Z_BUF_ERROR = -5;	static final private int Z_VERSION_ERROR = -6;	static final private int INIT_STATE = 42;	static final private int BUSY_STATE = 113;	static final private int FINISH_STATE = 666;	// The deflate compression method	static final private int Z_DEFLATED = 8;	static final private int STORED_BLOCK = 0;	static final private int STATIC_TREES = 1;	static final private int DYN_TREES = 2;	// The three kinds of block type	static final private int Z_BINARY = 0;	static final private int Z_ASCII = 1;	static final private int Z_UNKNOWN = 2;	static final private int Buf_size = 8 * 2;	// repeat previous bit length 3-6 times (2 bits of repeat count)	static final private int REP_3_6 = 16;	// repeat a zero length 3-10 times (3 bits of repeat count)	static final private int REPZ_3_10 = 17;	// repeat a zero length 11-138 times (7 bits of repeat count)	static final private int REPZ_11_138 = 18;	static final private int MIN_MATCH = 3;	static final private int MAX_MATCH = 258;	static final private int MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);	static final private int MAX_BITS = 15;	static final private int D_CODES = 30;	static final private int BL_CODES = 19;	static final private int LENGTH_CODES = 29;	static final private int LITERALS = 256;	static final private int L_CODES = (LITERALS + 1 + LENGTH_CODES);	static final private int HEAP_SIZE = (2 * L_CODES + 1);	static final private int END_BLOCK = 256;	ZStream strm; // pointer back to this zlib stream	int status; // as the name implies	byte[] pending_buf; // output still pending	int pending_buf_size; // size of pending_buf	int pending_out; // next pending byte to output to the stream	int pending; // nb of bytes in the pending buffer	int noheader; // suppress zlib header and adler32	byte data_type; // UNKNOWN, BINARY or ASCII	byte method; // STORED (for zip only) or DEFLATED	int last_flush; // value of flush param for previous deflate call	int w_size; // LZ77 window size (32K by default)	int w_bits; // log2(w_size) (8..16)	int w_mask; // w_size - 1	byte[] window;	// Sliding window. Input bytes are read into the second half of the window,	// and move to the first half later to keep a dictionary of at least wSize	// bytes. With this organization, matches are limited to a distance of	// wSize-MAX_MATCH bytes, but this ensures that IO is always	// performed with a length multiple of the block size. Also, it limits	// the window size to 64K, which is quite useful on MSDOS.	// To do: use the user input buffer as sliding window.	int window_size;	// Actual size of window: 2*wSize, except when the user input buffer	// is directly used as sliding window.	short[] prev;	// Link to older string with same hash index. To limit the size of this	// array to 64K, this link is maintained only for the last 32K strings.	// An index in this array is thus a window index modulo 32K.	short[] head; // Heads of the hash chains or NIL.	int ins_h; // hash index of string to be inserted	int hash_size; // number of elements in hash table	int hash_bits; // log2(hash_size)	int hash_mask; // hash_size-1	// Number of bits by which ins_h must be shifted at each input	// step. It must be such that after MIN_MATCH steps, the oldest	// byte no longer takes part in the hash key, that is:	// hash_shift * MIN_MATCH >= hash_bits	int hash_shift;	// Window position at the beginning of the current output block. Gets	// negative when the window is moved backwards.	int block_start;	int match_length; // length of best match	int prev_match; // previous match	int match_available; // set if previous match exists	int strstart; // start of string to insert	int match_start; // start of matching string	int lookahead; // number of valid bytes ahead in window	// Length of the best match at previous step. Matches not greater than this	// are discarded. This is used in the lazy match evaluation.	int prev_length;	// To speed up deflation, hash chains are never searched beyond this	// length. A higher limit improves compression ratio but degrades the speed.	int max_chain_length;	// Attempt to find a better match only when the current match is strictly	// smaller than this value. This mechanism is used only for compression	// levels >= 4.	int max_lazy_match;	// Insert new strings in the hash table only if the match length is not	// greater than this length. This saves time but degrades compression.	// max_insert_length is used only for compression levels <= 3.	int level; // compression level (1..9)	int strategy; // favor or force Huffman coding	// Use a faster search when the previous match is longer than this	int good_match;	// Stop searching when current match exceeds this	int nice_match;	short[] dyn_ltree; // literal and length tree	short[] dyn_dtree; // distance tree	short[] bl_tree; // Huffman tree for bit lengths	Tree l_desc = new Tree(); // desc for literal tree	Tree d_desc = new Tree(); // desc for distance tree	Tree bl_desc = new Tree(); // desc for bit length tree	// number of codes at each bit length for an optimal tree	short[] bl_count = new short[MAX_BITS + 1];	// heap used to build the Huffman trees	int[] heap = new int[2 * L_CODES + 1];	int heap_len; // number of elements in the heap	int heap_max; // element of largest frequency	// The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.	// The same heap array is used to build all trees.	// Depth of each subtree used as tie breaker for trees of equal frequency	byte[] depth = new byte[2 * L_CODES + 1];	int l_buf; // index for literals or lengths */	// Size of match buffer for literals/lengths. There are 4 reasons for	// limiting lit_bufsize to 64K:	// - frequencies can be kept in 16 bit counters	// - if compression is not successful for the first block, all input	// data is still in the window so we can still emit a stored block even	// when input comes from standard input. (This can also be done for	// all blocks if lit_bufsize is not greater than 32K.)	// - if compression is not successful for a file smaller than 64K, we can	// even emit a stored file instead of a stored block (saving 5 bytes).	// This is applicable only for zip (not gzip or zlib).	// - creating new Huffman trees less frequently may not provide fast	// adaptation to changes in the input data statistics. (Take for	// example a binary file with poorly compressible code followed by	// a highly compressible string table.) Smaller buffer sizes give	// fast adaptation but have of course the overhead of transmitting	// trees more frequently.	// - I can't count above 4	int lit_bufsize;	int last_lit; // running index in l_buf	// Buffer for distances. To simplify the code, d_buf and l_buf have	// the same number of elements. To use different lengths, an extra flag	// array would be necessary.	int d_buf; // index of pendig_buf	int opt_len; // bit length of current block with optimal trees	int static_len; // bit length of current block with static trees	int matches; // number of string matches in current block	int last_eob_len; // bit length of EOB code for last block	// Output buffer. bits are inserted starting at the bottom (least	// significant bits).	short bi_buf;	// Number of valid bits in bi_buf. All bits above the last valid bit	// are always zero.	int bi_valid;	Deflate() {		dyn_ltree = new short[HEAP_SIZE * 2];		dyn_dtree = new short[(2 * D_CODES + 1) * 2]; // distance tree		bl_tree = new short[(2 * BL_CODES + 1) * 2]; // Huffman tree for bit														// lengths	}	void lm_init() {		window_size = 2 * w_size;		head[hash_size - 1] = 0;		for (int i = 0; i < hash_size - 1; i++) {			head[i] = 0;		}		// Set the default configuration parameters:		max_lazy_match = Deflate.config_table[level].max_lazy;		good_match = Deflate.config_table[level].good_length;		nice_match = Deflate.config_table[level].nice_length;		max_chain_length = Deflate.config_table[level].max_chain;		strstart = 0;		block_start = 0;		lookahead = 0;		match_length = prev_length = MIN_MATCH - 1;		match_available = 0;		ins_h = 0;	}	// Initialize the tree data structures for a new zlib stream.	void tr_init() {		l_desc.dyn_tree = dyn_ltree;		l_desc.stat_desc = StaticTree.static_l_desc;		d_desc.dyn_tree = dyn_dtree;		d_desc.stat_desc = StaticTree.static_d_desc;		bl_desc.dyn_tree = bl_tree;		bl_desc.stat_desc = StaticTree.static_bl_desc;		bi_buf = 0;		bi_valid = 0;		last_eob_len = 8; // enough lookahead for inflate		// Initialize the first block of the first file:		init_block();	}	void init_block() {		// Initialize the trees.		for (int i = 0; i < L_CODES; i++)			dyn_ltree[i * 2] = 0;		for (int i = 0; i < D_CODES; i++)			dyn_dtree[i * 2] = 0;		for (int i = 0; i < BL_CODES; i++)			bl_tree[i * 2] = 0;		dyn_ltree[END_BLOCK * 2] = 1;		opt_len = static_len = 0;		last_lit = matches = 0;	}	// Restore the heap property by moving down the tree starting at node k,	// exchanging a node with the smallest of its two sons if necessary,	// stopping	// when the heap property is re-established (each father smaller than its	// two sons).	void pqdownheap(short[] tree, // the tree to restore			int k // node to move down	) {		int v = heap[k];		int j = k << 1; // left son of k		while (j <= heap_len) {			// Set j to the smallest of the two sons:			if (j < heap_len && smaller(tree, heap[j + 1], heap[j], depth)) {				j++;			}			// Exit if v is smaller than both sons			if (smaller(tree, v, heap[j], depth))				break;			// Exchange v with the smallest son			heap[k] = heap[j];			k = j;			// And continue down the tree, setting j to the left son of k			j <<= 1;		}		heap[k] = v;	}	static boolean smaller(short[] tree, int n, int m, byte[] depth) {		short tn2 = tree[n * 2];		short tm2 = tree[m * 2];		return (tn2 < tm2 || (tn2 == tm2 && depth[n] <= depth[m]));	}	// Scan a literal or distance tree to determine the frequencies of the codes	// in the bit length tree.	void scan_tree(short[] tree,// the tree to be scanned			int max_code // and its largest code of non zero frequency	) {		int n; // iterates over all tree elements		int prevlen = -1; // last emitted length		int curlen; // length of current code		int nextlen = tree[0 * 2 + 1]; // length of next code

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性感一类影片在线播放| a级精品国产片在线观看| 一二三区精品视频| 中文字幕亚洲综合久久菠萝蜜| 欧美不卡123| 欧美r级在线观看| 精品国产免费人成在线观看| 日韩精品一区二区三区老鸭窝 | 中文字幕av不卡| 亚洲国产精品激情在线观看 | 精品亚洲aⅴ乱码一区二区三区| 日本成人中文字幕在线视频| 奇米精品一区二区三区在线观看一 | 国产精品动漫网站| 亚洲色图19p| 亚洲一区二区中文在线| 午夜精品久久久久久不卡8050| 三级久久三级久久久| 美女视频黄 久久| 国产成人免费在线视频| 91香蕉视频在线| 欧美裸体bbwbbwbbw| 日韩精品在线看片z| 欧美国产一区二区在线观看| 亚洲四区在线观看| 午夜一区二区三区视频| 精品影视av免费| 成人国产亚洲欧美成人综合网| 91丨国产丨九色丨pron| 欧美日本国产一区| 欧美不卡一二三| 亚洲欧洲99久久| 视频在线观看91| 九九久久精品视频| 成人av网站免费观看| 欧美亚洲动漫精品| 精品乱人伦一区二区三区| 国产日韩欧美亚洲| 亚洲曰韩产成在线| 国产一区二区三区四区五区入口| 99精品欧美一区二区蜜桃免费| 欧美日韩www| 国产女人18水真多18精品一级做| 亚洲精品第一国产综合野| 久色婷婷小香蕉久久| 99re成人在线| 欧美成人猛片aaaaaaa| 亚洲欧美日韩国产中文在线| 久草精品在线观看| 欧洲一区二区三区在线| 久久视频一区二区| 亚洲成av人片在www色猫咪| 国产精品自拍在线| 欧美欧美欧美欧美首页| 亚洲国产精品黑人久久久| 亚洲成人午夜影院| 成人国产一区二区三区精品| 日韩一区二区免费电影| 亚洲视频一区二区免费在线观看| 日韩成人av影视| 色综合久久久久综合| 久久综合狠狠综合久久综合88| 亚洲精品国产精华液| 国产91精品一区二区麻豆网站| 欧美视频一区在线| 亚洲国产精品成人久久综合一区| 亚洲成人激情社区| 成人av动漫在线| 2023国产一二三区日本精品2022| 亚洲一区二区av在线| 丁香婷婷综合五月| 精品国产1区二区| 日本亚洲天堂网| 在线看日韩精品电影| 国产精品人妖ts系列视频| 久久www免费人成看片高清| 欧美日韩国产高清一区二区三区 | 中文字幕成人网| 美女一区二区久久| 欧美在线观看一二区| 国产精品乱人伦中文| 国产麻豆精品一区二区| 欧美一二三区在线| 日韩主播视频在线| 在线影院国内精品| 亚洲天堂2014| 91在线国产观看| 玖玖九九国产精品| 91精品免费在线| 亚洲高清免费观看| 在线精品国精品国产尤物884a| 国产精品看片你懂得| 国产白丝网站精品污在线入口| 精品久久久久久无| 激情久久五月天| 日韩一卡二卡三卡国产欧美| 男女性色大片免费观看一区二区| 欧美日韩国产美女| 天天综合天天综合色| 欧美精品第一页| 日韩vs国产vs欧美| 日韩一二三区视频| 麻豆91在线播放免费| 精品久久久久久久久久久院品网| 青青草视频一区| 欧美mv日韩mv国产网站| 九九九久久久精品| 26uuu国产在线精品一区二区| 精品一区二区三区蜜桃| 久久影院电视剧免费观看| 国产毛片精品一区| 欧美激情一区二区三区蜜桃视频| 欧美成人乱码一区二区三区| 日韩精品视频网| 91精品国产综合久久香蕉麻豆 | 亚洲va在线va天堂| 欧美综合欧美视频| 午夜影视日本亚洲欧洲精品| 欧美一级一区二区| 国产毛片精品视频| 国产精品成人午夜| 在线免费不卡视频| 蜜臀91精品一区二区三区| 精品成人免费观看| 99久久精品国产导航| 亚洲国产综合色| 日韩精品资源二区在线| 成人亚洲精品久久久久软件| 久久精品国产澳门| 日本一二三不卡| 欧美日韩午夜精品| 国产一区二区视频在线| 中文字幕一区二区三区在线观看| 日本道精品一区二区三区| 水蜜桃久久夜色精品一区的特点 | 日韩成人免费电影| 国产三级三级三级精品8ⅰ区| 99re6这里只有精品视频在线观看| 亚洲一区二区五区| 精品国产乱码久久久久久闺蜜| 成人高清视频在线| 日韩和欧美的一区| 国产精品丝袜在线| 欧美男同性恋视频网站| 国产一区日韩二区欧美三区| 亚洲欧美日韩国产中文在线| 日韩写真欧美这视频| 波多野结衣精品在线| 丝袜美腿高跟呻吟高潮一区| 国产亚洲污的网站| 欧美色图天堂网| 国产成人av一区二区| 亚洲成av人片一区二区梦乃| 欧美经典一区二区三区| 欧美精品xxxxbbbb| 91丝袜美腿高跟国产极品老师| 日本特黄久久久高潮| 亚洲品质自拍视频| 久久综合久久综合久久综合| 欧美在线视频全部完| 夫妻av一区二区| 青青青爽久久午夜综合久久午夜 | 成人教育av在线| 秋霞午夜av一区二区三区| 亚洲欧洲韩国日本视频| 337p粉嫩大胆色噜噜噜噜亚洲| 91黄色在线观看| 国产成人高清视频| 蜜臀av性久久久久蜜臀aⅴ| 洋洋成人永久网站入口| 国产婷婷色一区二区三区四区 | 欧美国产日产图区| 制服丝袜在线91| 日本大香伊一区二区三区| 成人综合婷婷国产精品久久免费| 日韩avvvv在线播放| 亚洲精品国产无套在线观 | 岛国精品在线观看| 蜜桃久久久久久久| 亚洲成人高清在线| 亚洲日本乱码在线观看| 欧美激情在线看| 精品国产91九色蝌蚪| 日韩欧美国产成人一区二区| 欧美日韩一区在线| 日本丶国产丶欧美色综合| 成人一道本在线| 成人综合婷婷国产精品久久 | heyzo一本久久综合| 国产成人亚洲精品青草天美| 久久99久久精品| 免费的成人av| 日本一区中文字幕| 奇米综合一区二区三区精品视频| 亚洲成a人片综合在线| 亚洲伊人伊色伊影伊综合网 | 色综合中文字幕| 久久精品一区八戒影视| 日韩欧美国产成人一区二区| 欧美一级免费观看|