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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? peeperzip.cpp

?? 這是個soket的代碼不是太實用但是對出學者還是有些幫助的 有需要的可以
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
		pChild=pChild->pRightBrother;
	}
	return NULL;
}
PLZWENCODEENTRY CLZWEncodeTable::AddToChild(BYTE bLast,PLZWENCODEENTRY pCurrent)
{
	ASSERT(pCurrent);
	PLZWENCODEENTRY pChild=new LZWENCODEENTRY;
	if(pChild==NULL)
	{
		int _j=0;
	}
	pChild->pChild=pChild->pRightBrother=NULL;
	pChild->bLast=bLast;
	pChild->wCode=(WORD)m_uNextCodeForUse;
	if(pChild->wCode==LZW_CLEAR_CODE)
	{
		int _i=0;
	}
	m_uNextCodeForUse++;
	m_dwTableEntryNumber++;
	pChild->pRightBrother=pCurrent->pChild;
	pCurrent->pChild=pChild;
	return pChild;
}

CDecodeBitArray::CDecodeBitArray(DWORD dwInitWidth)// width in bit
{
	m_pbBits=NULL;
	m_dwWidthInByte=0;
	m_dwTail=m_dwHead=0;
	if(dwInitWidth)
		InitBits(dwInitWidth);
}
CDecodeBitArray::~CDecodeBitArray()
{
	ClearBits();
}
void CDecodeBitArray::ClearBits(void)
{
	if(m_pbBits)
		delete m_pbBits;
	m_dwTail=m_dwHead=0;
	m_dwWidthInByte=0;
}
void CDecodeBitArray::InitBits(DWORD dwInitWidth)
{
	ClearBits();
	DWORD dwLength=dwInitWidth/8;
	dwLength+=(dwInitWidth%8)?1:0;
	m_pbBits=new BYTE[dwLength];
	m_dwHead=m_dwTail=0;
	m_dwWidthInByte=dwLength;
}
void CDecodeBitArray::InitBytes(DWORD dwInitWidth)
{
	InitBits(dwInitWidth*8);
}
DWORD CDecodeBitArray::GetLeftBytes(void)
{
	DWORD dwLeftBytes;
	DWORD dwLeftBits=GetLeftBits();
	dwLeftBytes=dwLeftBits/8;
	dwLeftBytes+=(dwLeftBits%8)?1:0;
	return dwLeftBytes;
}
WORD CDecodeBitArray::RemoveBits(int iWidth)
{
	WORD wGet=0;
	for(int i=iWidth-1;i>=0;i--)
	{
		if(RemoveFirstBit())
		{
			(wGet |= (1<<i));
		}
////			SET_BIT_1(wGet,i);
	}
	return wGet;
}
WORD CDecodeBitArray::RemoveFirstBit(void)
{
	BYTE* pbFirstByte=m_pbBits+m_dwHead/8;
	BYTE bFirstByte=*pbFirstByte;
//	 (b & (1<<i))
	WORD wGet= bFirstByte&(1<<(7-m_dwHead%8))?1:0;
	m_dwHead++;
	return wGet;
}
BOOL CDecodeBitArray::AddBytes(BYTE* pbAdd,int iLength)
{
	if(m_pbBits==NULL)
		return FALSE;
	Resort();
	memcpy(m_pbBits+m_dwTail/8,pbAdd,iLength);
	m_dwTail+=8*(DWORD)iLength;
	return TRUE;
}
void CDecodeBitArray::Resort(void)
{// because m_dwTail%8 always equal 0
	if(m_dwHead<8)
		return;
	if(m_dwTail==m_dwHead)
	{
		m_dwTail=m_dwHead=0;
		return;
	}
	DWORD dwLength=GetLeftBytes();
	DWORD dwHead=m_dwHead%8;
	DWORD dwMove=m_dwHead-dwHead;
	memcpy(m_pbBits,m_pbBits+(m_dwHead/8),(int)dwLength);
	m_dwHead=dwHead;
	m_dwTail-=dwMove;
}

/*
class CEncodeBitArray
*/
CEncodeBitArray::CEncodeBitArray(DWORD dwInitWidth)
{
	if(dwInitWidth==0)
		m_pbBits=NULL;
	else
		InitBits(dwInitWidth);
}
CEncodeBitArray::~CEncodeBitArray()
{
	ClearBits();
}
BOOL CEncodeBitArray::InitBits(DWORD dwInitWidth)
{
	ClearBits();
	ASSERT(dwInitWidth);
	m_dwWidthInByte=dwInitWidth/8;
	m_dwWidthInByte+=(dwInitWidth%8)?1:0;
	m_pbBits=new BYTE[m_dwWidthInByte];
	m_dwTail=0;
	return TRUE;
}
void CEncodeBitArray::ClearBits(void)
{
	if(m_pbBits)
		delete m_pbBits;
	m_pbBits=NULL;
}
BOOL CEncodeBitArray::AddBits(WORD wAdd,int iWidth)
{
	if(m_pbBits==NULL)
		return FALSE;
	for(int i=iWidth-1;i>=0;i--)
	{
		BYTE* pbByte=m_pbBits+m_dwTail/8;
		if((wAdd & (1<<i)))//  CHECK_BIT_1(wAdd,i))
			((*pbByte) |= (1<<(7-m_dwTail%8)));//SET_BIT_1(*pbByte,7-m_dwTail%8);
		else
			((*pbByte) &= (~(1<<(7-m_dwTail%8))));//SET_BIT_0(*pbByte,7-m_dwTail%8);
		m_dwTail++;
	}
	return TRUE;
}
DWORD CEncodeBitArray::GetBytesWidth(void)
{
	DWORD dwBytes=m_dwTail/8;
	dwBytes+=(m_dwTail%8)?1:0;
	return dwBytes;
}
int CEncodeBitArray::RemoveBytes(BYTE *pbGet,int iWant)
{
	if(m_pbBits==NULL)
		return -1;
	int iTotal=(int)GetBytesWidth();
	if(iWant>iTotal)
		iWant=iTotal;
	if(pbGet!=NULL)
		memcpy(pbGet,m_pbBits,iWant);
	memcpy(m_pbBits,m_pbBits+iWant,iTotal-iWant);
	int iTail=(int)m_dwTail;
	iTail-=iWant*8;
	if(iTail<0)
		iTail=0;
	m_dwTail=iTail;
	return iWant;
}

HGLOBAL CLZWDecode::BeginLZWDecode(char *chZipData, int dwLength)
{
	if(!AfxIsValidAddress(chZipData, dwLength))
		return NULL;


//緩沖數據區大小
const int nMaxSize = 65536;
	HGLOBAL hUnZip = NULL;
	hUnZip = ::GlobalAlloc(GHND, nMaxSize);
	if(hUnZip == NULL)
	{
		return NULL;
	}
	LPBYTE lpZipData = (LPBYTE)::GlobalLock(hUnZip);
	BYTE byMaxBuf[nMaxSize];
	ZeroMemory(byMaxBuf, nMaxSize);
	int nZipPos = 0; //記下壓縮數據的位置
	int nBufPos = 0; //記下當前存儲位置hZip
	int nZipSize = 0; //壓縮后數據的大小

	iDePutPos=iDeGetPos=0;
	
	DWORD dwBytesOnce = 1;
	DWORD wBuffer = 1024;
	m_dwDecodedByte=0;
	BYTE *pbNewData=new BYTE[4000],*pbOutData=new BYTE[4000];
	BYTE *pbBuffer=new BYTE[wBuffer];
	BYTE bFirst;
	m_LZWTable.InitLZWTable();
	int iBitWidth=9;
	m_iTotalEntry=LZW_BEGIN_ENTRY;
	BYTE* pbDecodedData;
	WORD wOld,wLastLen;
	m_baContain.InitBits((wBuffer+20)*8);
	int iR=0;
	DWORD dwRead=0;
	while(1)
	{
		if(m_baContain.GetLeftBytes()<5)
		{
			WORD wGetBytes= (WORD)wBuffer;
			if((DWORD)wGetBytes+dwRead>(DWORD)dwLength)
				wGetBytes=(WORD)(dwLength-dwRead);
			if(wGetBytes!=0)
			{
///////////////////////////////////				
				int iGet = wGetBytes;
				if(iDeGetPos + iGet > dwLength)
					iGet = dwLength - iDeGetPos;
				memcpy(pbBuffer, chZipData + iDeGetPos, iGet);
				iDeGetPos += iGet;
///////////////////////////////////				
				m_baContain.AddBytes(pbBuffer,wBuffer);
				dwRead+=wGetBytes;
			}
		}
		int iT=m_iTotalEntry+1;
		iT>>=9;
		iBitWidth=9;
		while(iT>0)
		{
			iT>>=1;
			iBitWidth++;
		}
		WORD wGet=m_baContain.RemoveBits(iBitWidth);
		if(wGet==LZW_END_CODE)
		{
			break;
		}
		if(wGet==LZW_CLEAR_CODE)
		{
			m_LZWTable.InitLZWTable();
			wGet=m_baContain.RemoveBits(9);
			if(wGet==LZW_END_CODE)
				break;
			pbDecodedData=m_LZWTable.GetMatchData(wGet);

//////////////////////////////
			BYTE *pbWrite = pbDecodedData;
			if(pbWrite != NULL)
			{
				WORD wL=*((WORD*)pbWrite);
				pbWrite+=sizeof(WORD);
				for(DWORD i=0;i<wL;i++)
				{
					//存儲這個壓縮
					if(nZipPos >= nMaxSize)
					{
						memcpy(lpZipData + nBufPos, byMaxBuf, nMaxSize);
						nBufPos += nMaxSize;
						nZipPos = 0;
						::GlobalUnlock(hUnZip); //重新分配內存
						hUnZip = ::GlobalReAlloc(hUnZip, nBufPos + nMaxSize, 0);
						lpZipData = (LPBYTE)::GlobalLock(hUnZip);
					}
					byMaxBuf[nZipPos] = *pbWrite;
					nZipPos ++;//
					nZipSize ++; //add


					pbWrite++;
				}
				m_dwDecodedByte+=wL;
			}

//////////////////////////////
			wOld=wGet;
			m_iTotalEntry=258;
		}
		else
		{// not clear
			pbDecodedData=m_LZWTable.GetMatchData(wGet);
			if(NULL!=pbDecodedData)
			{// in table
				bFirst=pbDecodedData[2];
//////////////////////////////
			BYTE *pbWrite = pbDecodedData;
			if(pbWrite != NULL)
			{
				WORD wL=*((WORD*)pbWrite);
				pbWrite+=sizeof(WORD);
				for(DWORD i=0;i<wL;i++)
				{
					//存儲這個壓縮
					if(nZipPos >= nMaxSize)
					{
						memcpy(lpZipData + nBufPos, byMaxBuf, nMaxSize);
						nBufPos += nMaxSize;
						nZipPos = 0;
						::GlobalUnlock(hUnZip); //重新分配內存
						hUnZip = ::GlobalReAlloc(hUnZip, nBufPos + nMaxSize, 0);
						lpZipData = (LPBYTE)::GlobalLock(hUnZip);
					}
					byMaxBuf[nZipPos] = *pbWrite;
					nZipPos ++;//
					nZipSize ++; //add


					pbWrite++;
				}
				m_dwDecodedByte+=wL;
			}

//////////////////////////////
				if(wOld!=LZW_CLEAR_CODE)
				{// not the first code be read in
					pbDecodedData=m_LZWTable.GetMatchData(wOld);
					wLastLen=*((WORD*)pbDecodedData);
					memcpy(pbNewData,pbDecodedData+2,wLastLen);
					pbNewData[wLastLen]=bFirst;
					m_LZWTable.AddToChild((WORD)m_iTotalEntry,pbNewData,wLastLen+1);
					m_iTotalEntry+=1;
				}
				wOld=wGet;
			}
			else
			{
				pbDecodedData=m_LZWTable.GetMatchData(wOld);
				bFirst=pbDecodedData[2];
				wLastLen=*((WORD*)pbDecodedData);
				memcpy(pbOutData+2,pbDecodedData+2,wLastLen);
				pbOutData[wLastLen+2]=bFirst;
				*((WORD*)pbOutData)=wLastLen+1;
//////////////////////////////
			BYTE *pbWrite = pbOutData;
			if(pbWrite != NULL)
			{
				WORD wL=*((WORD*)pbWrite);
				pbWrite+=sizeof(WORD);
				for(DWORD i=0;i<wL;i++)
				{
					//存儲這個壓縮
					if(nZipPos >= nMaxSize)
					{
						memcpy(lpZipData + nBufPos, byMaxBuf, nMaxSize);
						nBufPos += nMaxSize;
						nZipPos = 0;
						::GlobalUnlock(hUnZip); //重新分配內存
						hUnZip = ::GlobalReAlloc(hUnZip, nBufPos + nMaxSize, 0);
						lpZipData = (LPBYTE)::GlobalLock(hUnZip);
					}
					byMaxBuf[nZipPos] = *pbWrite;
					nZipPos ++;//
					nZipSize ++; //add


					pbWrite++;
				}
				m_dwDecodedByte+=wL;
			}

//////////////////////////////
				if(m_iTotalEntry>=4096)
				{
					int _j=0;
				}
				m_LZWTable.AddToChild((WORD)m_iTotalEntry,pbOutData+2,wLastLen+1);
				m_iTotalEntry+=1;
				wOld=wGet;
			}
		}
	}
	delete pbNewData;
	delete pbOutData;
	delete pbBuffer;
	
	if(dwRead != (DWORD)dwLength)
	{
		GlobalFree(hUnZip);
		hUnZip = NULL;
	}

	//存儲剩余的壓縮數據
	if(nZipPos > 0)
	{
		memcpy(lpZipData + nBufPos, byMaxBuf, nZipPos);
	}
	::GlobalUnlock(hUnZip); //重新分配內存
	hUnZip = ::GlobalReAlloc(hUnZip, nZipSize, 0);

	return hUnZip;
}								

/*
CLZWEncode
*/
HGLOBAL CLZWEncode::BeginLZWEncode(char *chData, int dwLength)
{
	if(!AfxIsValidAddress(chData, dwLength))
		return NULL;

//緩沖數據區大小
const int nMaxSize = 65536;
	HGLOBAL hZip = NULL;
	hZip = ::GlobalAlloc(GHND, nMaxSize);
	if(hZip == NULL)
	{
		return NULL;
	}
	LPBYTE lpZipData = (LPBYTE)::GlobalLock(hZip);
	BYTE byMaxBuf[nMaxSize];
	ZeroMemory(byMaxBuf, nMaxSize);
	int nZipPos = 0; //記下壓縮數據的位置
	int nBufPos = 0; //記下當前存儲位置hZip
	int nZipSize = 0; //壓縮后數據的大小


	m_dwCompressedLength = 0;
	WORD wBufferLen = 1024;
	int iBufferLen = wBufferLen = 1024;
	BYTE bGet;
	int nCurPos = 0;
	m_LZWTable.InitLZWTable();// init the entry table
	m_baContain.InitBits((iBufferLen+8)*8);// init the bit array
	m_baContain.AddBits(LZW_CLEAR_CODE,9);// add the first clear code
	/// below : begin the algorithm
	PLZWENCODEENTRY pCurrent = m_LZWTable.GetHead();
	int iBitWidth;
	DWORD dwEncoded=0;
	for(DWORD i = 0; i < (DWORD)dwLength; i ++)
	{// for each byte
		bGet = chData[nCurPos]; // add
		nCurPos ++;

		PLZWENCODEENTRY pChild=m_LZWTable.FindMatchChild(bGet,pCurrent);
		if(pChild)
		{// has found the continue
			pCurrent=pChild;
		}
		else
		{// not find write last code & add new entry 
			iBitWidth=GetBitWidth();
			WORD wW=pCurrent->wCode;
			m_baContain.AddBits(wW,iBitWidth);// add last code to buffer
			m_LZWTable.AddToChild(bGet,pCurrent);// add last code to table
			if(m_baContain.GetBytesWidth()>(DWORD)iBufferLen)
			{
				m_dwCompressedLength+=(DWORD)iBufferLen;

				//存儲這個壓縮
				if(nZipPos + iBufferLen >= nMaxSize)
				{
					memcpy(lpZipData + nBufPos, byMaxBuf, nZipPos);
					nBufPos += nZipPos;
					nZipPos = 0;
					::GlobalUnlock(hZip); //重新分配內存
					hZip = ::GlobalReAlloc(hZip, nBufPos + nMaxSize, 0);
					lpZipData = (LPBYTE)::GlobalLock(hZip);
				}

				memcpy(byMaxBuf + nZipPos, m_baContain.GetBits(), iBufferLen);
				nZipPos += iBufferLen;
				nZipSize += iBufferLen; //add

				m_baContain.RemoveBytes(NULL,iBufferLen);
			}
			if(m_LZWTable.GetTableEntryNumber()>= (DWORD)(m_wMaxEntry-3))
			{
				iBitWidth=GetBitWidth();
				m_baContain.AddBits(LZW_CLEAR_CODE,iBitWidth);
				m_LZWTable.InitLZWTable();
			}
			pCurrent=m_LZWTable.FindMatchChild(bGet,m_LZWTable.GetHead());
		}
		dwEncoded++;
	}
	iBitWidth=GetBitWidth();
	m_baContain.AddBits(pCurrent->wCode,iBitWidth);// add last code to buffer


	iBitWidth=GetBitWidth();
	m_baContain.AddBits(LZW_END_CODE,iBitWidth);
	m_dwCompressedLength+=m_baContain.GetBytesWidth();
	iBufferLen = m_baContain.GetBytesWidth();
	//存儲這個壓縮
	if(nZipPos + iBufferLen >= nMaxSize)
	{
		memcpy(lpZipData + nBufPos, byMaxBuf, nZipPos);
		nBufPos += nZipPos;
		nZipPos = 0;
		::GlobalUnlock(hZip); //重新分配內存
		hZip = ::GlobalReAlloc(hZip, nBufPos + nMaxSize, 0);
		lpZipData = (LPBYTE)::GlobalLock(hZip);
	}

	memcpy(byMaxBuf + nZipPos, m_baContain.GetBits(), iBufferLen);
	nZipPos += iBufferLen;
	nZipSize += iBufferLen; //add
	

	m_LZWTable.ClearLZWTable();
	m_baContain.ClearBits();

	//存儲剩余的壓縮數據
	if(nZipPos > 0)
	{
		memcpy(lpZipData + nBufPos, byMaxBuf, nZipPos);
	}
	::GlobalUnlock(hZip); //重新分配內存
	hZip = ::GlobalReAlloc(hZip, nZipSize, 0);


	return hZip;
}

int CLZWEncode::GetBitWidth(void)
{
	int iTotal=(int)m_LZWTable.GetTableEntryNumber();
	iTotal>>=9;
	int iBitWidth=9;
	while(iTotal>0)
	{
		iTotal>>=1;
		iBitWidth+=1;
	}
	return iBitWidth;
}

HGLOBAL C_LZW::Encode(char *chData, int nSize)
{
	CLZWEncode cl;
	return cl.BeginLZWEncode(chData, nSize);
}

HGLOBAL C_LZW::Decode(char *chZipData, int nZipSize)
{
	CLZWDecode cl;
	return cl.BeginLZWDecode(chZipData, nZipSize);
}

///////////////////////////////////////////////////////////////////////////////
//LZW Part END--------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品免费人成网站| 色婷婷av久久久久久久| 精品免费视频一区二区| 日本欧美大码aⅴ在线播放| 欧美日韩国产首页在线观看| 午夜久久久久久久久| 欧美日韩一级二级| 久久机这里只有精品| 精品国产乱码久久久久久1区2区| 精品一区二区三区久久久| 久久在线免费观看| av电影天堂一区二区在线| 亚洲国产另类av| www久久精品| 成人少妇影院yyyy| 亚洲在线视频免费观看| 欧美一区二区精品久久911| 国产精品一区二区x88av| 亚洲欧美另类在线| 欧美一级欧美三级| av成人老司机| 日本美女视频一区二区| 国产精品欧美综合在线| 欧美视频自拍偷拍| 国产一区二区久久| 亚洲精品中文字幕乱码三区| 日韩久久久久久| 99在线视频精品| 婷婷亚洲久悠悠色悠在线播放| 精品国产精品一区二区夜夜嗨| 成人avav影音| 蜜桃视频一区二区三区在线观看| 国产精品久久久一本精品| 欧美日韩二区三区| 成人精品小蝌蚪| 日韩av成人高清| 国产精品久久久久久久浪潮网站 | 日韩精品乱码av一区二区| 久久亚洲精精品中文字幕早川悠里| 99国产精品99久久久久久| 日本不卡一二三| 亚洲欧美一区二区三区极速播放| 精品国产一区a| 欧美狂野另类xxxxoooo| 成人午夜在线视频| 裸体在线国模精品偷拍| 亚洲国产成人精品视频| 国产精品家庭影院| 久久久另类综合| 欧美一级在线视频| 欧美日韩视频在线观看一区二区三区| 成人免费看视频| 国产美女娇喘av呻吟久久| 日韩国产精品久久| 亚洲最大色网站| 亚洲丝袜美腿综合| 日本一区二区动态图| 久久综合色鬼综合色| 在线播放91灌醉迷j高跟美女| 91免费小视频| 成人国产精品免费网站| 国产精品影视网| 国产又黄又大久久| 蜜乳av一区二区| 免费xxxx性欧美18vr| 婷婷开心激情综合| 天天亚洲美女在线视频| 亚洲国产精品尤物yw在线观看| 一区二区视频在线看| 亚洲视频免费看| 专区另类欧美日韩| 亚洲天堂av一区| 亚洲精品免费播放| 亚洲一区日韩精品中文字幕| 亚洲男人都懂的| 亚洲一区中文在线| 午夜久久久久久久久| 日韩国产精品大片| 乱中年女人伦av一区二区| 免费精品视频在线| 精品系列免费在线观看| 狠狠色丁香婷婷综合久久片| 国产在线一区观看| 国产在线一区观看| 不卡视频在线观看| 91国模大尺度私拍在线视频| 91九色02白丝porn| 欧美巨大另类极品videosbest | 久久嫩草精品久久久久| 久久久久久久久久电影| 国产精品福利电影一区二区三区四区| 国产精品私房写真福利视频| 中文字幕一区在线| 亚洲电影一区二区三区| 免费人成黄页网站在线一区二区| 青娱乐精品视频| 国产精品香蕉一区二区三区| 成人免费毛片aaaaa**| 一本大道久久a久久综合婷婷| 在线免费观看成人短视频| 欧美电影影音先锋| 久久天堂av综合合色蜜桃网| 国产精品国产三级国产普通话蜜臀| 日韩一区在线看| 丝袜诱惑制服诱惑色一区在线观看 | jizz一区二区| 色综合久久88色综合天天6| 欧美日韩国产系列| 久久久国产午夜精品| 中文字幕不卡的av| 一区二区三区国产精品| 免费观看在线综合| av爱爱亚洲一区| 日韩欧美自拍偷拍| 国产精品网站一区| 天天av天天翘天天综合网| 国产裸体歌舞团一区二区| 99re这里都是精品| 日韩欧美一级二级三级久久久| 欧美国产97人人爽人人喊| 午夜av一区二区三区| 国产69精品久久99不卡| 欧美性生活一区| 国产欧美精品国产国产专区| 夜夜嗨av一区二区三区网页| 国产乱码精品一区二区三| 一本大道久久精品懂色aⅴ| 精品国一区二区三区| 一二三四社区欧美黄| 国产老女人精品毛片久久| 欧美午夜精品久久久久久超碰 | 精品国产乱码久久久久久闺蜜| 亚洲欧美中日韩| 国产综合久久久久久鬼色| 欧美在线三级电影| 国产精品视频看| 精品午夜久久福利影院| 欧美精品丝袜中出| 亚洲三级在线免费观看| 国产在线播精品第三| 91麻豆精品国产自产在线观看一区 | 一区二区高清视频在线观看| 麻豆成人免费电影| 色拍拍在线精品视频8848| 国产亚洲欧美中文| 麻豆国产一区二区| 在线播放日韩导航| 亚洲国产婷婷综合在线精品| av高清久久久| 国产精品欧美久久久久无广告 | av一区二区三区黑人| 精品国产乱码久久久久久闺蜜| 天天av天天翘天天综合网| 欧美色偷偷大香| 亚洲制服丝袜av| 一本一本久久a久久精品综合麻豆| 国产日产欧美精品一区二区三区| 免费观看在线综合| 日韩三级中文字幕| 奇米精品一区二区三区四区| 欧美精品日韩一区| 视频一区在线视频| 欧美精品日日鲁夜夜添| 丝袜美腿亚洲综合| 欧美日韩视频专区在线播放| 亚洲mv在线观看| 91精品国产综合久久久久久| 视频一区二区中文字幕| 欧美日韩一区二区三区四区 | 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美色涩在线第一页| 日欧美一区二区| 日韩欧美中文字幕公布| 美女尤物国产一区| 欧美大片在线观看| 国产原创一区二区三区| 国产欧美va欧美不卡在线| av在线综合网| 亚洲国产综合色| 日韩区在线观看| 国产麻豆精品theporn| 国产日韩欧美电影| 色综合一区二区| 婷婷六月综合网| 精品成人一区二区| 成人av资源在线观看| 亚洲一区电影777| 日韩一区和二区| 岛国精品在线观看| 亚洲精品第一国产综合野| 在线播放91灌醉迷j高跟美女 | 亚洲激情欧美激情| 制服.丝袜.亚洲.另类.中文| 国产麻豆视频一区二区| 亚洲欧洲一区二区在线播放| 欧美日韩免费观看一区二区三区| 日韩福利视频网| 欧美国产精品一区二区三区| 日本精品裸体写真集在线观看| 婷婷综合在线观看|