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

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

?? score.c

?? 藥物開發中的基于結構的從頭設計代碼
?? C
字號:
# include "link.h"

void Ligand::Calculate_Binding_Score()
{
	extern Pocket *pok;
	int i;
	float vb,mb,shb,mhb,whb,swh,mwh,wwh,hm,rt;
	char grid;

	Calculate_HB_Root();

	Count_Rotors();

	binding_score=2.254;	// according to SCORE

	for(i=0;i<num_atom;i++)
		{
		 if(atom[i].valid==0) {atom[i].score=0.000; continue;}
		 else if(!strcmp(atom[i].type,"H")) {atom[i].score=0.000; continue;}
		 else if(!strcmp(atom[i].type,"H.spc")) {atom[i].score=0.000; continue;}
		 else
			{
			 grid=pok->Get_Grid_Property(atom[i].coor);
			 if(grid=='E') continue;

			 vb=Get_An_Atom_VDW_Score(atom[i]);
			 mb=Get_An_Atom_MB_Score(atom[i]);
			 Get_An_Atom_HB_Score(atom[i],shb,mhb,whb,swh,mwh,wwh);
			 hm=Get_An_Atom_HM_Score(atom[i]);
			 rt=Get_An_Atom_RT_Score(atom[i]);

			 atom[i].score=0.000;
			 atom[i].score+=(SCORE_VB)*vb;
			 atom[i].score+=(SCORE_MB)*mb;
			 atom[i].score+=(SCORE_SHB)*shb;
			 atom[i].score+=(SCORE_MHB)*mhb;
			 atom[i].score+=(SCORE_WHB)*whb;
			 atom[i].score+=(SCORE_SWH)*swh;
			 atom[i].score+=(SCORE_MWH)*mwh;
			 atom[i].score+=(SCORE_WWH)*wwh;
			 atom[i].score+=(SCORE_HM)*hm;
			 atom[i].score+=(SCORE_RT)*rt;

			 binding_score+=atom[i].score;
			}
		}

	return;
}

void Ligand::Calculate_Chemical_Score()
{
	extern Parameter *parm;
	extern Pocket *pok;
	int i;
	char grid;

	chemical_score=0.00;

	// first, check whether the ligand has got out of the pocket 

	for(i=0;i<num_atom;i++)
		{
		 if(atom[i].valid==0) continue;
		 else if(!strcmp(atom[i].type,"H")) continue;
		 else if(!strcmp(atom[i].type,"H.spc")) continue;

		 grid=pok->Get_Grid_Property(atom[i].coor);

		 if(grid=='E'||grid=='S') chemical_score-=10.0;
		 else continue;
		}

	// second, check whether there are too many chiral carbons :-)

	for(i=0;i<num_atom;i++)
        	{
         	 if(atom[i].valid==0) continue;
         	 else if(strcmp(atom[i].type,"C.3")) continue;
	 	 else if(atom[i].num_nonh<3) continue;
	 	 else chemical_score-=20.0;
        	}

	// third, check the number of components in the molecule

	chemical_score-=((num_part-1)*50.0);

	// fourth, penalize the fused rings

	chemical_score-=(num_fused_ring*30.0);

	// finally, Lipinski rules
	// notice, they are applied only when molecules are large enough.

	if(!strcmp(parm->apply_chemical_rules,"YES"))
	{
	 if(weight>parm->max_weight) chemical_score-=1000.0;
	 if(num_donor>parm->max_donor) chemical_score-=50.0;
	 if(num_acceptor>parm->max_acceptor) chemical_score-=50.0;
	 if(logp>parm->max_logp) chemical_score-=20.0;
	 if(binding_score>parm->max_pkd) chemical_score-=20.0;
	}
	 
	return;
}

void Ligand::Count_Rotors()
// if a single bond is common, bond.valid=1;
// if a single bond is a rotor, bond.valid=2;
{
	int i,mark;
	int id1,id2;
	char type1[10],type2[10];

	// first, eliminate all other bonds than not_in_ring single bonds

	for(i=0;i<num_bond;i++)
		{
		 if(bond[i].ring==1) continue;
		 else if(strcmp(bond[i].type,"1")) continue;
		 else bond[i].valid=2;
		}

	// second, eliminate all the R-H bonds

	for(i=0;i<num_bond;i++)
		{
		 if(bond[i].valid!=2) continue;
		 else
		{
		 id1=bond[i].atom_1; id2=bond[i].atom_2;
		 if(atom[id1-1].type[0]=='H'||
		    atom[id2-1].type[0]=='H') bond[i].valid=1;
		}
		}

	// third, eliminate terminal rotors and sp2-sp2 rotors

	for(i=0;i<num_bond;i++)
		{
		 if(bond[i].valid!=2) continue;

		 id1=bond[i].atom_1; id2=bond[i].atom_2;

		 // detect sp2-sp2 rotors

		 mark=0; 
		 strcpy(type1,atom[id1-1].type); 
		 strcpy(type2,atom[id2-1].type);

		 if(!strcmp(type1,"C.2")) mark++;
		 else if(!strcmp(type1,"C.ar")) mark++;
		 else if(!strcmp(type1,"C.1")) mark++;
		 else if(!strcmp(type1,"C.cat")) mark++;
		 else if(!strcmp(type1,"N.2")) mark++;

		 if(!strcmp(type2,"C.2")) mark++;
                 else if(!strcmp(type2,"C.ar")) mark++;
                 else if(!strcmp(type2,"C.1")) mark++;
                 else if(!strcmp(type2,"C.cat")) mark++;
                 else if(!strcmp(type2,"N.2")) mark++;

		 if(mark==2) {bond[i].valid=1; continue;}

		 // detect terminal rotors

		 if(atom[id1-1].num_nonh==1||atom[id2-1].num_nonh==1)
			bond[i].valid=1;
		}

	// here the false rotors in  -PO3, -CF3, -CMe3, -NMe3 are not checked 

	return;
}

int Ligand::Hydrogen_Bond_Check(Atom atom_1, Atom atom_2) const
{
	float d,d0,theta1,theta2;
	float v1[3],v2[3];
	float donor[3],d_root[3],acceptor[3],a_root[3];
	float dis_cut,angle_cut;
	int i,mark=0;
	Atom tmp_atom;

	if((!strcmp(atom_1.hb,"N"))||(!strcmp(atom_2.hb,"N"))) return FALSE;
	else if((!strcmp(atom_1.hb,"M"))||
		(!strcmp(atom_2.hb,"M"))) return FALSE;
	else if((!strcmp(atom_1.hb,"D"))&&
		(!strcmp(atom_2.hb,"D"))) return FALSE;
	else if((!strcmp(atom_1.hb,"A"))&&
		(!strcmp(atom_2.hb,"A"))) return FALSE;

	d0=atom_1.R+atom_2.R; dis_cut=d0+0.40; 
	d=Distance(atom_1.coor,atom_2.coor); 

	if(d>dis_cut) return FALSE;	
	else if(d>4.00) return FALSE;

	if(strcmp(atom_1.hb,atom_2.hb)>0)
		{
		 tmp_atom=atom_1;
		 atom_1=atom_2;
		 atom_2=tmp_atom;
		}
	
	if(!strcmp(atom_1.hb,"A")&&!strcmp(atom_2.hb,"D"))
		{
		 acceptor[0]=atom_1.coor[0]; a_root[0]=atom_1.root[0];
		 acceptor[1]=atom_1.coor[1]; a_root[1]=atom_1.root[1];
		 acceptor[2]=atom_1.coor[2]; a_root[2]=atom_1.root[2];
		 donor[0]=atom_2.coor[0]; d_root[0]=atom_2.root[0];
		 donor[1]=atom_2.coor[1]; d_root[1]=atom_2.root[1];
		 donor[2]=atom_2.coor[2]; d_root[2]=atom_2.root[2];

		 if(!strcmp(atom_2.type,"O.w")) mark=1; // D is water
		 else if(!strcmp(atom_1.type,"O.w")) mark=2; // A is water
		 else mark=0; // none is water, normal h-bond
		}
	else if(!strcmp(atom_1.hb,"A")&&!strcmp(atom_2.hb,"DA"))
		{
		 acceptor[0]=atom_1.coor[0]; a_root[0]=atom_1.root[0];
		 acceptor[1]=atom_1.coor[1]; a_root[1]=atom_1.root[1];
		 acceptor[2]=atom_1.coor[2]; a_root[2]=atom_1.root[2];
		 donor[0]=atom_2.coor[0]; d_root[0]=atom_2.root[0];
		 donor[1]=atom_2.coor[1]; d_root[1]=atom_2.root[1];
		 donor[2]=atom_2.coor[2]; d_root[2]=atom_2.root[2];

		 if(!strcmp(atom_2.type,"O.w")) mark=1; // D is water
		 else if(!strcmp(atom_1.type,"O.w")) mark=2; // A is water
		 else mark=0; // none is water, normal h-bond
		}
	else if(!strcmp(atom_1.hb,"D")&&!strcmp(atom_2.hb,"DA"))
		{
		 donor[0]=atom_1.coor[0]; d_root[0]=atom_1.root[0];
		 donor[1]=atom_1.coor[1]; d_root[1]=atom_1.root[1];
		 donor[2]=atom_1.coor[2]; d_root[2]=atom_1.root[2];
		 acceptor[0]=atom_2.coor[0]; a_root[0]=atom_2.root[0];
		 acceptor[1]=atom_2.coor[1]; a_root[1]=atom_2.root[1];
		 acceptor[2]=atom_2.coor[2]; a_root[2]=atom_2.root[2];

		 if(!strcmp(atom_1.type,"O.w")) mark=1; // D is water
		 else if(!strcmp(atom_2.type,"O.w")) mark=2; // A is water
		 else mark=0; // none is water, normal h-bond	
		} 		
	else if(!strcmp(atom_1.hb,"DA")&&!strcmp(atom_2.hb,"DA"))
		{
		 donor[0]=atom_1.coor[0]; d_root[0]=atom_1.root[0];
		 donor[1]=atom_1.coor[1]; d_root[1]=atom_1.root[1];
		 donor[2]=atom_1.coor[2]; d_root[2]=atom_1.root[2];
		 acceptor[0]=atom_2.coor[0]; a_root[0]=atom_2.root[0];
		 acceptor[1]=atom_2.coor[1]; a_root[1]=atom_2.root[1];
		 acceptor[2]=atom_2.coor[2]; a_root[2]=atom_2.root[2];

		 if(!strcmp(atom_1.type,"O.w")) mark=1; // D is water
		 else if(!strcmp(atom_2.type,"O.w")) mark=2; // A is water
		 else mark=0; // none is water, normal h-bond	
		}
	else return FALSE;

	if(mark==1) {theta1=180.0;}
	else
		{
		 for(i=0;i<3;i++)
			{
		 	 v1[i]=donor[i]-d_root[i];
		 	 v2[i]=donor[i]-acceptor[i];
			}

		 theta1=Angle_Of_Two_Vectors(v1,v2);  // angle among DR-D-A
		}
	

	if(mark==2) {theta2=180.0;}
	else
		{
		 for(i=0;i<3;i++)
			{
			 v1[i]=acceptor[i]-donor[i];
			 v2[i]=acceptor[i]-a_root[i];
			}
	
		 theta2=Angle_Of_Two_Vectors(v1,v2);  // angle among D-A-AR
		}

	angle_cut=(HB_ANGLE_CUTOFF);		

	if(mark==0)
		{
		 if(theta1<angle_cut) return FALSE;
		 else if(theta2<angle_cut) return FALSE;
		 else return 1;		// ordinary h-bond
		}
	else if(mark==1)
		{
		 if(theta2<angle_cut) return FALSE;
		 else return 2;		// water-involved h-bond
		}
	else if(mark==2)
		{
		 if(theta1<angle_cut) return FALSE;
		 else return 2;		// water-involved h-bond
		}
	else return FALSE;
}

float Ligand::Get_An_Atom_MB_Score(Atom atm) const
{
	extern Pocket *pok;
	int i;
	float d,tmp;

	float mb=0.000;
	
	if(strcmp(atm.hb,"A")&&strcmp(atm.hb,"DA")) return mb;

	for(i=0;i<pok->num_atom;i++)
		{
		 if(strcmp(pok->atom[i].hb,"M")) continue;
		 else
			{
			 d=Distance(atm.coor,pok->atom[i].coor);
			 if(d<2.20) tmp=1.00;
		 	 else if(d<2.70) tmp=5.40-2*d;
		 	 else tmp=0.00;
		 	 mb+=tmp; 
			}
		}

	return mb;
}

float Ligand::Get_An_Atom_VDW_Score(Atom atm) const
{
	extern Pocket *pok;
	int i;
	float d,d0;

	float vb=0.000;

	if(!strcmp(atm.type,"H")||!strcmp(atm.type,"H.spc")) return vb;

	for(i=0;i<pok->num_atom;i++)
		{
		 if(!strcmp(pok->atom[i].type,"H")) continue;
		 else
			{
			 d=Distance(atm.coor,pok->atom[i].coor);
			 d0=atm.R+pok->atom[i].R;
			 if(d<(d0-0.60)) vb+=1.00;
			}
		}

	return vb;
}

void Ligand::Get_An_Atom_HB_Score(Atom atm, 
				  float &shb, float &mhb, float &whb,
				  float &swh, float &mwh, float &wwh) const
{
	extern Pocket *pok;
	int i,j,mark,num_candidate;
	float d,d0;
	struct 
		{
		 int valid;
		 int type;
		 float length;
		 float overlap;
		} candidate[10],tmp;

	for(i=0;i<10;i++)
		{
		 candidate[i].valid=0;
		 candidate[i].type=0;
		 candidate[i].length=0.000;
		 candidate[i].overlap=0.000;
		}

	shb=mhb=whb=swh=mwh=wwh=0.000;

	if(!strcmp(atm.hb,"N")) return;  

	// first, get all the possible hydrogen bonds

	num_candidate=0;

	for(i=0;i<pok->num_atom;i++)
		{
		 if(!strcmp(pok->atom[i].hb,"N")) continue;

		 mark=Hydrogen_Bond_Check(atm,pok->atom[i]);

		 if(mark==FALSE) continue;

		 d=Distance(atm.coor,pok->atom[i].coor);
		 d0=atm.R+pok->atom[i].R;

		 candidate[num_candidate].valid=1;
		 candidate[num_candidate].type=mark;
		 candidate[num_candidate].length=d;
		 candidate[num_candidate].overlap=d-d0;
		 num_candidate++;
		}

	// second, rank all the candidate h-bonds in terms of length

	for(i=0;i<num_candidate-1;i++)
	for(j=i+1;j<num_candidate;j++)
		{
		 if(candidate[i].length<=candidate[j].length) continue;
		 else
			{
			 tmp=candidate[i];
			 candidate[i]=candidate[j];
			 candidate[j]=tmp;
			}
		}
	
	// only keep the top three h-bonds

	for(i=3;i<10;i++) candidate[i].valid=0;
		
	// finally, count all the h-bonds 

	for(i=0;i<num_candidate;i++)
		{
		 if(candidate[i].valid==0) continue;
		 else if(candidate[i].type==1)
			{
			 if(candidate[i].overlap<-0.60) shb+=1.00;
			 else if(candidate[i].overlap<-0.30) mhb+=1.00;
			 else whb+=1.00;
			}
		 else if(candidate[i].type==2)
			{
			 if(candidate[i].overlap<-0.60) swh+=1.00;
			 else if(candidate[i].overlap<-0.20) mwh+=1.00;
			 else wwh+=1.00;
			}
		 else continue;
		}
	
	return;
}

float Ligand::Get_An_Atom_HM_Score(Atom atm) const
{
	extern Pocket *pok;
	int i,neib;
	float d,tmp;

	float hm=0.000;

	if(atm.logp<0.20) return hm;

	tmp=0.000; neib=0;

	for(i=0;i<pok->num_atom;i++)
		{
		 if(!strcmp(pok->atom[i].type,"H")) continue;
		 else
			{
			 d=Distance(atm.coor,pok->atom[i].coor);
			 if(d<5.00) {tmp+=pok->atom[i].logp;neib++;}
			}
		}

	if(neib>=2&&tmp>-1.00) hm=atm.logp;

	return hm;
}

float Ligand::Get_An_Atom_RT_Score(Atom atm) const
{
	int i;
	float rt=0.000;

	for(i=0;i<num_bond;i++)
		{
		 if(bond[i].valid!=2) continue;
		 else if((bond[i].atom_1==atm.id)||
			 (bond[i].atom_2==atm.id))
		 	{rt+=0.500; continue;}
		 else continue;
		}

	return rt;
}

void Ligand::Calculate_HB_Root()
{
	int i,j,tmp,num_nonh;
	float tmpx,tmpy,tmpz;

	for(i=0;i<num_atom;i++)
		{
		 if(atom[i].valid==0) continue;
		 else if(!strcmp(atom[i].hb,"N")) continue;

		 tmpx=tmpy=tmpz=0.000; num_nonh=0;
		
		 for(j=0;j<atom[i].num_neib;j++)
			{
			 tmp=atom[i].neib[j];
			 if(atom[tmp-1].type[0]=='H') continue;
			 else
				{
				 tmpx+=atom[tmp-1].coor[0];
				 tmpy+=atom[tmp-1].coor[1];
				 tmpz+=atom[tmp-1].coor[2];
				 num_nonh++;
				}
			}

		 if(num_nonh==0) strcpy(atom[i].hb,"N");
		 else
			{
		 	 tmpx/=num_nonh;
			 tmpy/=num_nonh;
			 tmpz/=num_nonh;
			 atom[i].root[0]=tmpx;
			 atom[i].root[1]=tmpy;
			 atom[i].root[2]=tmpz;
			}
		}

	return;
}

int Ligand::Chemical_Viability_Check()
{
	extern Parameter *parm;
	extern FragLibrary *toxiclib; 

	// first, Lipinski rules 

	if(!strcmp(parm->apply_chemical_rules,"YES"))
	{
	 if(weight>parm->max_weight) return FALSE;
	 else if(weight<parm->min_weight) return FALSE;
	 else if(logp>parm->max_logp) return FALSE;
	 else if(logp<parm->min_logp) return FALSE;
	 else if(num_donor>parm->max_donor) return FALSE;
	 else if(num_donor<parm->min_donor) return FALSE;
	 else if(num_acceptor>parm->max_acceptor) return FALSE;
	 else if(num_acceptor<parm->min_acceptor) return FALSE;
	 else if(binding_score>parm->max_pkd) return FALSE;
	 else if(binding_score<parm->min_pkd) return FALSE;
	 else {}
	}

	// second, toxic substructure search

	if(!strcmp(parm->apply_toxicity_check,"YES"))
		{
		 if(toxiclib->Map_A_Molecule(*this)!=0) return FALSE;
		}

	return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合久久综合久久综合| 欧美三级中文字| 男男成人高潮片免费网站| 亚洲女性喷水在线观看一区| 国产精品色在线| 中文字幕在线不卡一区| 日本一二三不卡| 国产精品久久久久永久免费观看| 国产午夜精品久久| 国产精品私人影院| 国产片一区二区| 成人免费在线视频观看| 亚洲男人的天堂av| 亚洲成在人线免费| 日本v片在线高清不卡在线观看| 性欧美大战久久久久久久久| 日韩黄色在线观看| 乱一区二区av| 国产91色综合久久免费分享| hitomi一区二区三区精品| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 国产电影一区在线| 国产不卡在线播放| 色婷婷av一区二区三区软件 | 久久精品国产一区二区三区免费看| 奇米影视一区二区三区| 韩国v欧美v日本v亚洲v| 成人h动漫精品一区二| 色94色欧美sute亚洲13| 777色狠狠一区二区三区| 日韩欧美一二三区| 国产精品美女一区二区在线观看| 亚洲九九爱视频| 日韩av在线发布| 成人一道本在线| 欧美丝袜丝交足nylons图片| 日韩午夜激情视频| 国产精品福利电影一区二区三区四区| 亚洲综合在线视频| 狠狠色丁香婷婷综合| 91色婷婷久久久久合中文| 在线播放国产精品二区一二区四区| 日韩精品一区在线| 一区二区在线观看视频| 久久国产成人午夜av影院| 欧美日韩一级黄| 久久久亚洲午夜电影| 亚洲一区二区中文在线| 精品一区二区三区视频| 91久久国产综合久久| 久久久国际精品| 性久久久久久久| 欧洲在线/亚洲| 久久香蕉国产线看观看99| 91麻豆国产福利在线观看| 欧美一区二区久久| 亚洲激情图片qvod| 成人爽a毛片一区二区免费| 国产99久久久国产精品潘金网站| 成人免费观看视频| jizz一区二区| 中文成人综合网| 欧美日韩精品高清| 日本va欧美va精品| 国产日本欧美一区二区| 色噜噜狠狠成人网p站| 日韩一区欧美二区| 欧美国产欧美综合| 欧美日韩国产在线播放网站| 裸体健美xxxx欧美裸体表演| 欧美韩国日本不卡| 欧美视频在线一区二区三区 | 亚洲视频一二三区| 91精品国产美女浴室洗澡无遮挡| 国产精品资源网站| 亚洲国产精品一区二区久久| 日韩欧美一二三| 欧美午夜精品一区二区三区| 国产精品一区在线观看你懂的| 综合在线观看色| 精品久久一区二区| 色av一区二区| 国产精品一区二区在线观看不卡 | 欧美日韩激情一区二区| 丁香啪啪综合成人亚洲小说| 日韩av不卡在线观看| 中文字幕日本乱码精品影院| 欧美大片国产精品| 欧美视频在线播放| av电影一区二区| 韩国一区二区三区| 视频一区国产视频| 亚洲精品日韩综合观看成人91| 久久天天做天天爱综合色| 欧美日韩在线三区| 91老师片黄在线观看| 国产乱妇无码大片在线观看| 日韩精品电影一区亚洲| 一区二区三区在线视频观看58| 国产拍欧美日韩视频二区| 日韩一级免费一区| 欧美精品在线观看播放| 色综合久久中文字幕| 成人午夜电影网站| 国产成人自拍网| 国产在线不卡一区| 久久99热国产| 久久福利资源站| 老司机精品视频导航| 人人精品人人爱| 日韩和欧美一区二区三区| 亚洲综合区在线| 亚洲女性喷水在线观看一区| ㊣最新国产の精品bt伙计久久| 久久一区二区三区四区| 久久这里只有精品视频网| 精品日韩99亚洲| 精品国产a毛片| 26uuu欧美| 国产亚洲欧美一区在线观看| 精品国内二区三区| 久久久久久久久99精品| 国产视频一区二区在线观看| 久久精品欧美一区二区三区麻豆| 26uuu亚洲婷婷狠狠天堂| 久久女同性恋中文字幕| 久久久亚洲国产美女国产盗摄| 欧美精品一区二区久久久| 久久亚洲精品国产精品紫薇| 国产免费观看久久| 成人欧美一区二区三区视频网页| 一区二区三区在线视频播放| 一区二区三区不卡视频| 日韩av电影免费观看高清完整版 | 中文久久乱码一区二区| 亚洲图片激情小说| 亚洲精品你懂的| 亚洲成av人片在线观看无码| 精品一区二区精品| 成人小视频免费在线观看| av一区二区三区在线| 欧美亚洲禁片免费| 欧美不卡一二三| 国产精品视频在线看| 一区二区三区国产精品| 美脚の诱脚舐め脚责91 | 91精品国产麻豆国产自产在线| 精品美女一区二区| 国产精品的网站| 亚洲成人三级小说| 韩国一区二区视频| 在线观看视频一区二区欧美日韩| 欧美一区二区性放荡片| 国产精品色一区二区三区| 亚洲国产精品一区二区久久恐怖片 | 国产成人小视频| 欧美伊人久久久久久久久影院| 日韩区在线观看| 亚洲日本va午夜在线电影| 蜜臀va亚洲va欧美va天堂 | 久久99国内精品| 91同城在线观看| 欧美v亚洲v综合ⅴ国产v| 国产精品久久久久aaaa樱花 | 一区二区三区免费看视频| 久99久精品视频免费观看| 9人人澡人人爽人人精品| 欧美一区二区三区不卡| 国产精品福利在线播放| 黄色资源网久久资源365| 欧美午夜免费电影| 亚洲视频一二区| 国产91丝袜在线播放0| 日韩免费视频一区| 亚洲国产精品久久久久婷婷884| 国产丶欧美丶日本不卡视频| 日韩三级中文字幕| 午夜电影一区二区三区| jlzzjlzz亚洲日本少妇| 国产欧美日本一区视频| 久国产精品韩国三级视频| 欧美日韩一区国产| 亚洲精品国产a久久久久久| 国产电影精品久久禁18| 久久影院视频免费| 激情丁香综合五月| www久久精品| 国内精品第一页| 2023国产精华国产精品| 久久国产尿小便嘘嘘尿| 日韩精品中午字幕| 久久国产精品99精品国产 | 婷婷国产在线综合| 日韩**一区毛片| 欧美私模裸体表演在线观看| 国产精品美女久久久久高潮| 日韩国产欧美在线视频| 69堂国产成人免费视频| 精品福利一区二区三区| 日韩精品欧美精品|