日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

EventBus设计与实现分析——订阅者的注册

發(fā)布時(shí)間:2024/4/11 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EventBus设计与实现分析——订阅者的注册 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前面在 EventBus設(shè)計(jì)與實(shí)現(xiàn)分析——特性介紹 一文中介紹了EventBus的基本用法,及其提供的大多數(shù)特性的用法,這讓我們對(duì)EventBus為用戶提供的主要功能有了大體的了解,為我們后續(xù)理解EventBus的設(shè)計(jì)決策提供了良好的基礎(chǔ)。這里我們就開始深入到EventBus的實(shí)現(xiàn)細(xì)節(jié),先來(lái)了解其中的訂閱者注冊(cè)的過(guò)程。

訂閱者的注冊(cè)

EventBus使用了一種類似于閉包的機(jī)制來(lái)描述訂閱者。即對(duì)于EventBus而言,一個(gè)訂閱者由一個(gè)方法+該方法綁定的上下文(也就是該方法綁定的對(duì)象)+訂閱者感興趣的事件的類型來(lái)描述。具體到實(shí)現(xiàn),即是通過(guò)SubscriberMethod+SubscriberMethod這樣幾個(gè)類來(lái)描述。

我們可以看一下這幾個(gè)類的定義,首先是Subscription類:

package org.greenrobot.eventbus;final class Subscription {final Object subscriber;final SubscriberMethod subscriberMethod;/*** Becomes false as soon as {@link EventBus#unregister(Object)} is called, which is checked by queued event delivery* {@link EventBus#invokeSubscriber(PendingPost)} to prevent race conditions.*/volatile boolean active;Subscription(Object subscriber, SubscriberMethod subscriberMethod) {this.subscriber = subscriber;this.subscriberMethod = subscriberMethod;active = true;}@Overridepublic boolean equals(Object other) {if (other instanceof Subscription) {Subscription otherSubscription = (Subscription) other;return subscriber == otherSubscription.subscriber&& subscriberMethod.equals(otherSubscription.subscriberMethod);} else {return false;}}@Overridepublic int hashCode() {return subscriber.hashCode() + subscriberMethod.methodString.hashCode();} }

subscriberMethod即是我們前面提到的方法,而subscriber則是上下文object。

然后是SubscriberMethod類:

package org.greenrobot.eventbus;import java.lang.reflect.Method;/** Used internally by EventBus and generated subscriber indexes. */ public class SubscriberMethod {final Method method;final ThreadMode threadMode;final Class<?> eventType;final int priority;final boolean sticky;/** Used for efficient comparison */String methodString;public SubscriberMethod(Method method, Class<?> eventType, ThreadMode threadMode, int priority, boolean sticky) {this.method = method;this.threadMode = threadMode;this.eventType = eventType;this.priority = priority;this.sticky = sticky;}@Overridepublic boolean equals(Object other) {if (other == this) {return true;} else if (other instanceof SubscriberMethod) {checkMethodString();SubscriberMethod otherSubscriberMethod = (SubscriberMethod)other;otherSubscriberMethod.checkMethodString();// Don't use method.equals because of http://code.google.com/p/android/issues/detail?id=7811#c6return methodString.equals(otherSubscriberMethod.methodString);} else {return false;}}private synchronized void checkMethodString() {if (methodString == null) {// Method.toString has more overhead, just take relevant parts of the methodStringBuilder builder = new StringBuilder(64);builder.append(method.getDeclaringClass().getName());builder.append('#').append(method.getName());builder.append('(').append(eventType.getName());methodString = builder.toString();}}@Overridepublic int hashCode() {return method.hashCode();} }

訂閱者的注冊(cè)過(guò)程,即是構(gòu)造SubscriberMethod,繼而構(gòu)造Subscription,并對(duì)這些對(duì)象進(jìn)行存儲(chǔ)管理的過(guò)程。我們可以通過(guò)EventBus.register()方法的定義具體看一下在EventBus中是怎么做:

/*** Registers the given subscriber to receive events. Subscribers must call {@link #unregister(Object)} once they* are no longer interested in receiving events.* <p/>* Subscribers have event handling methods that must be annotated by {@link Subscribe}.* The {@link Subscribe} annotation also allows configuration like {@link* ThreadMode} and priority.*/public void register(Object subscriber) {Class<?> subscriberClass = subscriber.getClass();List<SubscriberMethod> subscriberMethods = subscriberMethodFinder.findSubscriberMethods(subscriberClass);synchronized (this) {for (SubscriberMethod subscriberMethod : subscriberMethods) {subscribe(subscriber, subscriberMethod);}}}// Must be called in synchronized blockprivate void subscribe(Object subscriber, SubscriberMethod subscriberMethod) {Class<?> eventType = subscriberMethod.eventType;Subscription newSubscription = new Subscription(subscriber, subscriberMethod);CopyOnWriteArrayList<Subscription> subscriptions = subscriptionsByEventType.get(eventType);if (subscriptions == null) {subscriptions = new CopyOnWriteArrayList<>();subscriptionsByEventType.put(eventType, subscriptions);} else {if (subscriptions.contains(newSubscription)) {throw new EventBusException("Subscriber " + subscriber.getClass() + " already registered to event "+ eventType);}}int size = subscriptions.size();for (int i = 0; i <= size; i++) {if (i == size || subscriberMethod.priority > subscriptions.get(i).subscriberMethod.priority) {subscriptions.add(i, newSubscription);break;}}List<Class<?>> subscribedEvents = typesBySubscriber.get(subscriber);if (subscribedEvents == null) {subscribedEvents = new ArrayList<>();typesBySubscriber.put(subscriber, subscribedEvents);}subscribedEvents.add(eventType);if (subscriberMethod.sticky) {if (eventInheritance) {// Existing sticky events of all subclasses of eventType have to be considered.// Note: Iterating over all events may be inefficient with lots of sticky events,// thus data structure should be changed to allow a more efficient lookup// (e.g. an additional map storing sub classes of super classes: Class -> List<Class>).Set<Map.Entry<Class<?>, Object>> entries = stickyEvents.entrySet();for (Map.Entry<Class<?>, Object> entry : entries) {Class<?> candidateEventType = entry.getKey();if (eventType.isAssignableFrom(candidateEventType)) {Object stickyEvent = entry.getValue();checkPostStickyEventToSubscription(newSubscription, stickyEvent);}}} else {Object stickyEvent = stickyEvents.get(eventType);checkPostStickyEventToSubscription(newSubscription, stickyEvent);}}}

通過(guò)EventBus.register()和EventBus.subscribe()可以看到,register的過(guò)程主要做了這樣一些事情:

  • 查找訂閱者對(duì)象的所有訂閱者方法。方法隸屬于類,不以對(duì)象的改變而改變,應(yīng)用程序的一次生命周期中,這些方法總是不變的。
  • 構(gòu)造Subscription來(lái)描述每一個(gè)訂閱者,也就是訂閱者對(duì)象+一個(gè)訂閱者方法。
  • 建立事件類型與訂閱者之間的映射關(guān)系,這主要通過(guò)subscriptionsByEventType數(shù)據(jù)結(jié)構(gòu)來(lái)描述。對(duì)于每一個(gè)事件類型,其訂閱者會(huì)依優(yōu)先級(jí)而排序。不難看出,這個(gè)結(jié)構(gòu)主要用于事件的發(fā)布,在事件發(fā)布時(shí),可以通過(guò)這個(gè)結(jié)構(gòu)快速地找到每一個(gè)訂閱者。
    這個(gè)地方查找正確的插入位置是用的順序查找的方法,估計(jì)是考慮到對(duì)于一個(gè)事件類型,訂閱者一般不會(huì)太多,而訂閱者的優(yōu)先級(jí)一般不會(huì)很分散的緣故。
  • 建立訂閱者對(duì)象與該對(duì)象監(jiān)聽的事件類型之間的映射關(guān)系,這主要由typesBySubscriber數(shù)據(jù)結(jié)構(gòu)來(lái)描述。這個(gè)結(jié)構(gòu)則主要用于注銷一個(gè)對(duì)象對(duì)事件的監(jiān)聽。注銷一個(gè)對(duì)象對(duì)事件得監(jiān)聽時(shí),可以通過(guò)這個(gè)結(jié)構(gòu)快速地將監(jiān)聽者對(duì)象得信息從EventBus中整個(gè)的移除出去。
  • 處理對(duì)Sticky事件的監(jiān)聽。如我們前面所見(jiàn),這種類型的事件在發(fā)布時(shí)會(huì)通知到每個(gè)監(jiān)聽者,同時(shí)還會(huì)被保存起來(lái),當(dāng)后面再次注冊(cè)對(duì)這種事件的監(jiān)聽時(shí),監(jiān)聽者會(huì)直接得到通知。
  • EventBus使用SubscriberMethodFinder來(lái)查找一個(gè)類中所有的監(jiān)聽者方法,主要即是findSubscriberMethods()方法。

    如我們前面所見(jiàn),要使一個(gè)類的某個(gè)方法成為監(jiān)聽者方法,需要給該方法添加Subscribe annotation,在SubscriberMethodFinder.findSubscriberMethods()中會(huì)查找加了這個(gè)annotation的方法。但老版本的EventBus并不是通過(guò)annotation來(lái)標(biāo)識(shí)一個(gè)監(jiān)聽者方法的,而是通過(guò)命名模式等方法,因而這里可以看到一種更為靈活的設(shè)計(jì),來(lái)給用戶提供空間,以支持不同的標(biāo)識(shí)監(jiān)聽者方法的方法:

    class SubscriberMethodFinder {/** In newer class files, compilers may add methods. Those are called bridge or synthetic methods.* EventBus must ignore both. There modifiers are not public but defined in the Java class file format:* http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.6-200-A.1*/private static final int BRIDGE = 0x40;private static final int SYNTHETIC = 0x1000;private static final int MODIFIERS_IGNORE = Modifier.ABSTRACT | Modifier.STATIC | BRIDGE | SYNTHETIC;private static final Map<Class<?>, List<SubscriberMethod>> METHOD_CACHE = new ConcurrentHashMap<>();private List<SubscriberInfoIndex> subscriberInfoIndexes;private final boolean strictMethodVerification;private final boolean ignoreGeneratedIndex;private static final int POOL_SIZE = 4;private static final FindState[] FIND_STATE_POOL = new FindState[POOL_SIZE];SubscriberMethodFinder(List<SubscriberInfoIndex> subscriberInfoIndexes, boolean strictMethodVerification,boolean ignoreGeneratedIndex) {this.subscriberInfoIndexes = subscriberInfoIndexes;this.strictMethodVerification = strictMethodVerification;this.ignoreGeneratedIndex = ignoreGeneratedIndex;}List<SubscriberMethod> findSubscriberMethods(Class<?> subscriberClass) {List<SubscriberMethod> subscriberMethods = METHOD_CACHE.get(subscriberClass);if (subscriberMethods != null) {return subscriberMethods;}if (ignoreGeneratedIndex) {subscriberMethods = findUsingReflection(subscriberClass);} else {subscriberMethods = findUsingInfo(subscriberClass);}if (subscriberMethods.isEmpty()) {throw new EventBusException("Subscriber " + subscriberClass+ " and its super classes have no public methods with the @Subscribe annotation");} else {METHOD_CACHE.put(subscriberClass, subscriberMethods);return subscriberMethods;}}

    由于在應(yīng)用程序的整個(gè)生命周期中,一個(gè)類的監(jiān)聽者方法總是不會(huì)變的,因而可以看到在SubscriberMethodFinder中有創(chuàng)建一個(gè)緩存METHOD_CACHE,以監(jiān)聽者類為key,以監(jiān)聽者方法的列表為值。在SubscriberMethodFinder.findSubscriberMethods()方法中會(huì)首先檢查這個(gè)緩存中是否已經(jīng)有了對(duì)應(yīng)類的監(jiān)聽者方法,如果有的話會(huì)直接返回給調(diào)用者,沒(méi)有的時(shí)候才會(huì)通過(guò)反射等機(jī)制來(lái)查找。

    ignoreGeneratedIndex用來(lái)標(biāo)記是否要忽略用戶定制的監(jiān)聽者方法標(biāo)識(shí)方法。若忽略則直接利用反射機(jī)制,也就是Subscribe annotation機(jī)制來(lái)查找監(jiān)聽者方法,即調(diào)用findUsingReflection()方法;否則會(huì)先嘗試使用用戶定制的機(jī)制來(lái)查找,查找失敗時(shí)才會(huì)使用反射機(jī)制來(lái)查找,這也就是調(diào)用findUsingInfo()方法。

    在findUsingReflection()方法中實(shí)現(xiàn)了如我們前面提到的用annotation標(biāo)識(shí)監(jiān)聽者方法的方式下,查找監(jiān)聽者方法的過(guò)程:

    private List<SubscriberMethod> findUsingReflection(Class<?> subscriberClass) {FindState findState = prepareFindState();findState.initForSubscriber(subscriberClass);while (findState.clazz != null) {findUsingReflectionInSingleClass(findState);findState.moveToSuperclass();}return getMethodsAndRelease(findState);}private void findUsingReflectionInSingleClass(FindState findState) {Method[] methods;try {// This is faster than getMethods, especially when subscribers are fat classes like Activitiesmethods = findState.clazz.getDeclaredMethods();} catch (Throwable th) {// Workaround for java.lang.NoClassDefFoundError, see https://github.com/greenrobot/EventBus/issues/149methods = findState.clazz.getMethods();findState.skipSuperClasses = true;}for (Method method : methods) {int modifiers = method.getModifiers();if ((modifiers & Modifier.PUBLIC) != 0 && (modifiers & MODIFIERS_IGNORE) == 0) {Class<?>[] parameterTypes = method.getParameterTypes();if (parameterTypes.length == 1) {Subscribe subscribeAnnotation = method.getAnnotation(Subscribe.class);if (subscribeAnnotation != null) {Class<?> eventType = parameterTypes[0];if (findState.checkAdd(method, eventType)) {ThreadMode threadMode = subscribeAnnotation.threadMode();findState.subscriberMethods.add(new SubscriberMethod(method, eventType, threadMode,subscribeAnnotation.priority(), subscribeAnnotation.sticky()));}}} else if (strictMethodVerification && method.isAnnotationPresent(Subscribe.class)) {String methodName = method.getDeclaringClass().getName() + "." + method.getName();throw new EventBusException("@Subscribe method " + methodName +"must have exactly 1 parameter but has " + parameterTypes.length);}} else if (strictMethodVerification && method.isAnnotationPresent(Subscribe.class)) {String methodName = method.getDeclaringClass().getName() + "." + method.getName();throw new EventBusException(methodName +" is a illegal @Subscribe method: must be public, non-static, and non-abstract");}}}

    在findUsingReflection()中,會(huì)借助于FindState來(lái)查找所有的監(jiān)聽者方法。FindState類的角色主要有三個(gè),一是迭代器,用于在監(jiān)聽者類的整個(gè)繼承體系中遍歷每一個(gè)類;二是容器,用來(lái)存放找到的每一個(gè)監(jiān)聽者方法;三是對(duì)找到的方法做驗(yàn)證。

    findUsingReflectionInSingleClass()方法找到一個(gè)特定類中所有的監(jiān)聽者方法。這里可以清楚地看到EventBus對(duì)于監(jiān)聽者方法的聲明的完整限制。一個(gè)方法被認(rèn)定為監(jiān)聽者方法的條件為:

  • 方法的可見(jiàn)性被聲明為全局可見(jiàn)public,同時(shí)沒(méi)有abstract、static、bridge及synthetic修飾。
  • 方法的參數(shù)只有一個(gè)。
  • 有annotation Subscribe的聲明。
  • FindState.checkAdd()會(huì)實(shí)施一些額外的限制。主要是關(guān)于,類中聲明了多個(gè)方法監(jiān)聽相同事件的處理;及方法override的處理,即在類的繼承體系中,有多個(gè)類聲明了相同的方法,對(duì)相同的事件進(jìn)行監(jiān)聽。
  • strictMethodVerification是一個(gè)調(diào)試開關(guān),如果開關(guān)打開,則當(dāng)一個(gè)類聲明了annotation Subscribe,但modifier或參數(shù)列表不滿足要求時(shí),會(huì)直接拋出異常。

    我們?cè)賮?lái)詳細(xì)地看一下FindState的定義:

    static class FindState {final List<SubscriberMethod> subscriberMethods = new ArrayList<>();final Map<Class, Object> anyMethodByEventType = new HashMap<>();final Map<String, Class> subscriberClassByMethodKey = new HashMap<>();final StringBuilder methodKeyBuilder = new StringBuilder(128);Class<?> subscriberClass;Class<?> clazz;boolean skipSuperClasses;SubscriberInfo subscriberInfo;void initForSubscriber(Class<?> subscriberClass) {this.subscriberClass = clazz = subscriberClass;skipSuperClasses = false;subscriberInfo = null;}void recycle() {subscriberMethods.clear();anyMethodByEventType.clear();subscriberClassByMethodKey.clear();methodKeyBuilder.setLength(0);subscriberClass = null;clazz = null;skipSuperClasses = false;subscriberInfo = null;}boolean checkAdd(Method method, Class<?> eventType) {// 2 level check: 1st level with event type only (fast), 2nd level with complete signature when required.// Usually a subscriber doesn't have methods listening to the same event type.Object existing = anyMethodByEventType.put(eventType, method);if (existing == null) {return true;} else {if (existing instanceof Method) {if (!checkAddWithMethodSignature((Method) existing, eventType)) {// Paranoia checkthrow new IllegalStateException();}// Put any non-Method object to "consume" the existing MethodanyMethodByEventType.put(eventType, this);}return checkAddWithMethodSignature(method, eventType);}}private boolean checkAddWithMethodSignature(Method method, Class<?> eventType) {methodKeyBuilder.setLength(0);methodKeyBuilder.append(method.getName());methodKeyBuilder.append('>').append(eventType.getName());String methodKey = methodKeyBuilder.toString();Class<?> methodClass = method.getDeclaringClass();Class<?> methodClassOld = subscriberClassByMethodKey.put(methodKey, methodClass);if (methodClassOld == null || methodClassOld.isAssignableFrom(methodClass)) {// Only add if not already found in a sub classreturn true;} else {// Revert the put, old class is further down the class hierarchysubscriberClassByMethodKey.put(methodKey, methodClassOld);return false;}}void moveToSuperclass() {if (skipSuperClasses) {clazz = null;} else {clazz = clazz.getSuperclass();String clazzName = clazz.getName();/** Skip system classes, this just degrades performance. */if (clazzName.startsWith("java.") || clazzName.startsWith("javax.") || clazzName.startsWith("android.")) {clazz = null;}}}}

    moveToSuperclass()是迭代器方法,用于幫助SubscriberMethodFinder在訂閱者類的整個(gè)繼承層次中進(jìn)行遍歷。這里可以看到,這個(gè)遍歷過(guò)程一般不會(huì)遍歷到Object才停止,如果訂閱者類直接或間接繼承了java標(biāo)準(zhǔn)庫(kù)或android框架層的類的話,遍歷到那些類的時(shí)候就會(huì)終止了。checkAdd(Method method, Class<?> eventType)方法施加我們前面提到的額外限制,這個(gè)過(guò)程大體為:

  • 訂閱者類的整個(gè)繼承層次中只有一個(gè)方法訂閱了某個(gè)特定類型的事件,則該方法直接被認(rèn)定為訂閱者方法。
  • 繼承層次中對(duì)同一個(gè)事件類型有多個(gè)訂閱者方法的,只要不同方法的方法名不同,則都會(huì)被認(rèn)定為訂閱者方法。
  • 繼承層次中某個(gè)被override的方法被聲明了訂閱者方法,則繼承層次中深度最深的類的方法被認(rèn)定為訂閱者方法。子類比父類在繼承層次中的深度要深。
  • SubscriberMethodFinder中FindState對(duì)象并不會(huì)總是被重新創(chuàng)建,而是有一個(gè)緩沖池,需要的時(shí)候從這個(gè)池子中獲取所需得對(duì)象,而在對(duì)象用完之后,又會(huì)被重新歸還到池子中,這些操作的詳細(xì)過(guò)程可以在prepareFindState()和getMethodsAndRelease()這兩個(gè)方法中看到:

    private List<SubscriberMethod> getMethodsAndRelease(FindState findState) {List<SubscriberMethod> subscriberMethods = new ArrayList<>(findState.subscriberMethods);findState.recycle();synchronized (FIND_STATE_POOL) {for (int i = 0; i < POOL_SIZE; i++) {if (FIND_STATE_POOL[i] == null) {FIND_STATE_POOL[i] = findState;break;}}}return subscriberMethods;}private FindState prepareFindState() {synchronized (FIND_STATE_POOL) {for (int i = 0; i < POOL_SIZE; i++) {FindState state = FIND_STATE_POOL[i];if (state != null) {FIND_STATE_POOL[i] = null;return state;}}}return new FindState();}

    findUsingInfo()和getSubscriberInfo()方法則允許用戶插入自定義的訂閱者方法聲明機(jī)制:

    private List<SubscriberMethod> findUsingInfo(Class<?> subscriberClass) {FindState findState = prepareFindState();findState.initForSubscriber(subscriberClass);while (findState.clazz != null) {findState.subscriberInfo = getSubscriberInfo(findState);if (findState.subscriberInfo != null) {SubscriberMethod[] array = findState.subscriberInfo.getSubscriberMethods();for (SubscriberMethod subscriberMethod : array) {if (findState.checkAdd(subscriberMethod.method, subscriberMethod.eventType)) {findState.subscriberMethods.add(subscriberMethod);}}} else {findUsingReflectionInSingleClass(findState);}findState.moveToSuperclass();}return getMethodsAndRelease(findState);} ......private SubscriberInfo getSubscriberInfo(FindState findState) {if (findState.subscriberInfo != null && findState.subscriberInfo.getSuperSubscriberInfo() != null) {SubscriberInfo superclassInfo = findState.subscriberInfo.getSuperSubscriberInfo();if (findState.clazz == superclassInfo.getSubscriberClass()) {return superclassInfo;}}if (subscriberInfoIndexes != null) {for (SubscriberInfoIndex index : subscriberInfoIndexes) {SubscriberInfo info = index.getSubscriberInfo(findState.clazz);if (info != null) {return info;}}}return null;}

    所謂的用戶自定義訂閱者方法聲明機(jī)制,需要通過(guò)實(shí)現(xiàn)SubscriberInfoIndex和SubscriberInfo接口來(lái)實(shí)現(xiàn),并通過(guò)EventBusBuilder在創(chuàng)建EventBus對(duì)象時(shí)傳遞進(jìn)來(lái)。SubscriberInfoIndex和SubscriberInfo接口的定義為:

    package org.greenrobot.eventbus.meta;/*** Interface for generated indexes.*/ public interface SubscriberInfoIndex {SubscriberInfo getSubscriberInfo(Class<?> subscriberClass); }

    package org.greenrobot.eventbus.meta;import org.greenrobot.eventbus.SubscriberMethod;/** Base class for generated index classes created by annotation processing. */ public interface SubscriberInfo {Class<?> getSubscriberClass();SubscriberMethod[] getSubscriberMethods();SubscriberInfo getSuperSubscriberInfo();boolean shouldCheckSuperclass(); }

    至此,EventBus中,注冊(cè)訂閱者的過(guò)程就分析完了。

    超強(qiáng)干貨來(lái)襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生

    總結(jié)

    以上是生活随笔為你收集整理的EventBus设计与实现分析——订阅者的注册的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    欧美日本一二三 | 午夜精品一区二区国产 | 97超碰在线免费观看 | 日日摸日日爽 | 国产精品专区h在线观看 | 伊人官网| 日韩精品综合在线 | 西西444www大胆无视频 | 国产激情小视频在线观看 | 成人在线免费视频 | 免费在线播放 | 天天爱天天操天天射 | 欧美91在线 | 玖玖视频精品 | 91福利试看 | 麻豆91在线| 摸bbb搡bbb搡bbbb| 99精品国产福利在线观看免费 | 午夜美女福利直播 | 在线视频 一区二区 | 99 色| 精品福利在线视频 | 亚洲蜜桃在线 | 欧美国产日韩一区 | 国产精品久久久久婷婷二区次 | 久久精品欧美日韩精品 | 婷婷视频 | 高清免费在线视频 | 久久综合中文字幕 | 中文字幕中文中文字幕 | 久久久久久片 | 有码一区二区三区 | 久久九九久久精品 | 亚洲精品1234区 | 在线国产99| 中文字幕永久在线 | 99欧美视频 | 中文字幕二区三区 | av日韩国产 | 久久露脸国产精品 | jizz18欧美18 | 亚洲欧洲国产日韩精品 | 久久一区91| 亚州中文av | 亚洲精品一区二区网址 | 婷婷精品国产欧美精品亚洲人人爽 | 国产亚洲高清视频 | 久久三级毛片 | 欧美极品xxxx | 91精品久久久久久久久 | 一级片免费在线 | 激情综合色综合久久 | 中文字幕在线视频第一页 | 亚洲电影一区二区 | 日日夜夜精品免费 | 亚洲电影影音先锋 | 亚洲欧美日韩一区二区三区在线观看 | 日日夜夜婷婷 | 成片免费 | 性色av免费在线观看 | 27xxoo无遮挡动态视频 | 日韩免费一区 | 久精品视频在线观看 | 久要激情网 | 一区二区 不卡 | 日日干天天爽 | 亚洲综合视频在线 | 久操中文字幕在线观看 | 久久国产午夜精品理论片最新版本 | 在线免费观看黄色 | 日韩国产欧美在线视频 | 欧美亚洲精品在线观看 | 国产精品密入口果冻 | 欧美精品v国产精品v日韩精品 | 在线观看av片 | www.久久99 | 久久视频中文字幕 | 免费av网址在线观看 | 操操色| 四虎影视成人精品国库在线观看 | 国产不卡视频 | 四虎视频 | 成人在线观看日韩 | 91av欧美 | 亚洲热久久 | 又黄又爽又色无遮挡免费 | 91伊人久久大香线蕉蜜芽人口 | 91麻豆精品国产自产在线游戏 | 毛片区| www.天天射.com | 色婷婷综合视频在线观看 | 久久福利国产 | 天天色天天艹 | 久久不卡视频 | 日韩激情免费视频 | 国产精品专区h在线观看 | 亚洲精品电影在线 | 日韩成人在线一区二区 | 国产一区在线观看免费 | 亚洲视频在线播放 | 91豆花在线观看 | 96精品视频| 色婷婷88av视频一二三区 | 91最新视频| 免费av黄色 | 香蕉久草 | www国产在线 | 国产乱对白刺激视频在线观看女王 | 亚洲欧美偷拍另类 | 国产激情久久久 | 日本精品视频网站 | 99在线热播精品免费 | a视频在线播放 | 亚洲视频专区在线 | 91丨九色丨国产丨porny精品 | 久久久2o19精品 | 久草精品视频 | 亚洲精品va| 91成人看片 | 黄色成年片 | 久久久久观看 | 欧美精品一区二区在线观看 | 毛片视频网址 | 国产69久久精品成人看 | 91视频在线免费看 | 五月天亚洲婷婷 | 国产在线免费观看 | 韩国av一区 | 欧美性生活一级片 | 99精品视频免费观看 | 夜夜躁日日躁狠狠久久88av | 伊人黄| 久久深爱网 | 麻豆小视频在线观看 | 正在播放一区 | 日日夜夜免费精品视频 | 色多多视频在线观看 | 六月婷婷网 | 人人狠狠综合久久亚洲婷 | 日韩电影在线观看一区二区三区 | 草久中文字幕 | 日产中文字幕 | 日韩精品在线视频免费观看 | 国产精品免费久久久久久久久久中文 | 国产精品mv在线观看 | 久久999精品 | 色网站免费在线观看 | 中文字幕观看av | 国产伦理一区二区三区 | 成人a视频在线观看 | 国产成人精品午夜在线播放 | 国产亚洲精品久久久久久久久久 | 精品福利网站 | 17婷婷久久www | av 一区 二区 久久 | 又黄又爽又色无遮挡免费 | 看片网站黄 | 人人干人人艹 | av在线播放不卡 | 99久久婷婷国产综合精品 | 欧美日韩另类视频 | 97精品国自产拍在线观看 | 九九九九九国产 | 日韩欧美视频在线 | 在线观看亚洲视频 | 久久综合色播五月 | 欧美激情综合色 | 久久激五月天综合精品 | 日韩精品黄 | 成人黄色电影在线观看 | 欧美a视频 | 天天爱天天舔 | 日本激情视频中文字幕 | www.av中文字幕.com | 美女久久99 | 日韩欧美国产免费播放 | 亚洲干视频在线观看 | 2021国产精品 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 成人免费xxxxxx视频 | 在线成人一区 | 国产午夜精品一区二区三区 | 国产亚洲欧美日韩高清 | 国产又粗又猛又色又黄视频 | 久久视频在线 | 天天操偷偷干 | 国产中文视频 | 国产精品中文字幕av | 在线天堂中文在线资源网 | 激情五月五月婷婷 | 欧美日韩中文在线观看 | 亚洲永久精品在线观看 | 国产精品成人一区 | 亚洲视频中文 | 久久精品日产第一区二区三区乱码 | 欧美精品久久久久久久 | 丁香av | 久久精品中文字幕免费mv | 91av电影| av综合在线观看 | 韩国av永久免费 | 久久久www成人免费精品 | 成人黄色小视频 | 日韩一区正在播放 | 97国产大学生情侣白嫩酒店 | 国产精品午夜久久久久久99热 | 欧美久久久久久久久中文字幕 | 中文字幕在线免费观看 | 亚洲精品在线视频播放 | 四虎在线观看精品视频 | 免费看在线看www777 | 亚洲人成影院在线 | 日韩免费视频在线观看 | 青青草国产精品视频 | 国产成人精品综合 | 91精品国产99久久久久久久 | 午夜精品区| 中文字幕免费观看视频 | 免费男女羞羞的视频网站中文字幕 | 波多野结衣在线中文字幕 | 久久成人免费电影 | 在线 视频 一区二区 | 激情一区二区三区欧美 | 日韩h在线观看 | 久久精品欧美一区二区三区麻豆 | 日韩av在线看 | 成人av久久 | 久久久久北条麻妃免费看 | 久久99在线视频 | 黄色aa久久| 日韩av免费大片 | 8090yy亚洲精品久久 | 亚洲人成人天堂h久久 | av综合网址 | 五月天亚洲婷婷 | 成人在线你懂得 | 国产无遮挡又黄又爽馒头漫画 | av在线播放快速免费阴 | 永久免费看av | 国产免费作爱视频 | 91九色精品 | 亚洲成 人精品 | 成人香蕉视频 | 日韩av一区二区三区在线观看 | .国产精品成人自产拍在线观看6 | 亚洲精选国产 | 久久艹在线| 视频在线观看日韩 | 97在线观看免费高清 | 国产精品国产三级国产专区53 | 精品国产乱码久久久久久久 | 久久久天堂 | 在线观看国产日韩欧美 | 国产精品9999 | 91麻豆产精品久久久久久 | 久久精品国产一区二区 | 亚洲国产理论片 | 激情网站网址 | 欧美激情h | 国产护士hd高朝护士1 | 国内精品久久久久久久影视麻豆 | 西西大胆免费视频 | 中文字幕麻豆 | 久久亚洲热 | 久久久久综合 | 福利网址在线观看 | 日韩高清不卡一区二区三区 | 亚洲精品小区久久久久久 | 久久视频国产 | 日韩电影一区二区三区 | 成人一区影院 | 亚洲国产精品一区二区久久hs | 色播五月激情五月 | 国产精品福利在线观看 | 久久久污 | 亚洲精品视频在线看 | 狠狠色丁香婷婷综合最新地址 | 丁香九月婷婷 | 国产专区精品 | 日韩激情免费视频 | 97成人在线免费视频 | 欧美一区二区在线刺激视频 | 亚洲国产理论片 | 黄色免费看片网站 | 在线播放亚洲 | 韩日三级在线 | 在线观看完整版免费 | 久久免费看 | 男女拍拍免费视频 | 成人毛片网 | 欧美精品一区在线 | 日本视频网 | 综合网伊人| 又色又爽的网站 | 99re国产视频 | 国产精品国产三级国产aⅴ无密码 | 激情丁香月 | 日日干天夜夜 | 国产小视频在线看 | 亚洲综合成人在线 | 欧美日韩性视频在线 | 人人爽人人乐 | 久草在线在线精品观看 | 一级片黄色片网站 | 久久久久久久久久久综合 | 丁香婷婷网 | 久久视精品 | 久久久久久片 | 国语自产偷拍精品视频偷 | 国产视频美女 | 久久69精品久久久久久久电影好 | 伊人va| 国产精品免费视频网站 | 日韩av一区二区在线影视 | 91亚洲精品久久久蜜桃网站 | 中文字幕2021 | 91九色成人 | 久草在线最新免费 | 国产一级精品在线观看 | 一级a性色生活片久久毛片波多野 | 亚洲国产午夜精品 | 久草视频资源 | 亚洲午夜av电影 | 日操操| 午夜精品导航 | 欧美人zozo | 成片免费观看视频大全 | 免费观看成年人视频 | 91精品黄色 | 五月天综合色激情 | 麻豆视频入口 | 国产在线观看高清视频 | 欧美日韩在线播放 | 精品国模一区二区 | 亚洲综合日韩在线 | 亚洲国产精品va在线看黑人 | 亚洲一区二区视频 | 欧美精品一区二区在线观看 | 日韩欧美网站 | 久久精品成人欧美大片古装 | 在线看日韩av | 国产一区二区久久久久 | 精品无人国产偷自产在线 | 91精品看片| 国产精品精 | 午夜久久久影院 | 丁香久久婷婷 | 久久这里有 | 三日本三级少妇三级99 | 一区二区三区免费 | 日本三级香港三级人妇99 | 欧美国产不卡 | 久久久电影网站 | 久草视频国产 | 91精品国产欧美一区二区 | 精品嫩模福利一区二区蜜臀 | av在线之家电影网站 | 五月婷婷中文网 | 91污视频在线观看 | 日日夜夜干 | 免费观看一级一片 | 在线电影日韩 | 在线观看久草 | 日韩三级成人 | 毛片视频网址 | 日本精品久久久久中文字幕 | 国产精品免费久久 | 国产精品毛片久久久 | 天天草天天色 | 国产精品入口麻豆www | 日本精品视频在线播放 | 久久视奸| 国产精品美女在线 | 天天曰 | 久久免费美女视频 | 久久九九国产视频 | 成人亚洲精品久久久久 | 91视频国产高清 | 香蕉久久久久久久 | 91黄色在线视频 | 丁香花中文在线免费观看 | 国产精品久久久久一区二区三区 | 日本久久不卡视频 | 日本二区三区在线 | 久草色在线观看 | 免费av网站在线看 | 色婷婷综合久久久久中文字幕1 | 国产成年免费视频 | 日韩三级免费 | 亚一亚二国产专区 | 国产原创在线观看 | av天天在线观看 | 色com网 | 人人添人人| 九色福利视频 | 欧产日产国产69 | 伊人网综合在线观看 | 四虎成人av | 九九热在线观看 | 国产成人精品一区二 | 久久伊人精品天天 | 亚洲精品视频在 | 色综合天天色综合 | 夜夜视频| 久久成熟| 精品国产乱码久久 | 色婷婷久久久 | 欧美精品v国产精品v日韩精品 | 亚洲成av人片在线观看香蕉 | 9幺看片| 国产黄大片在线观看 | 天天色天天色 | 有码中文字幕在线观看 | 久久人人爽av | 久久视了 | 日日夜夜噜噜噜 | 亚洲免费a | 免费看黄网站在线 | 国产老妇av | 色偷偷中文字幕 | 日韩特级片| 久久免费的精品国产v∧ | 国产精品久久av | 六月丁香激情综合 | 国产精品一区二区av麻豆 | 最新久久免费视频 | 国产精品精品国产色婷婷 | 日b视频在线观看网址 | 99色免费视频 | 91亚洲夫妻 | 亚洲va欧美| 久久字幕网 | 欧美综合国产 | 久久99深爱久久99精品 | 西西444www大胆高清视频 | 欧美嫩草影院 | 欧美精品免费在线 | 一区二区伦理电影 | 久久99精品国产麻豆婷婷 | 日韩欧美在线观看一区二区三区 | 成人久久18免费网站图片 | 久久电影网站中文字幕 | 黄色免费观看网址 | 欧美在线观看视频 | 婷婷久久一区 | 狠狠干夜夜操 | 久久久久国产a免费观看rela | 日本动漫做毛片一区二区 | 尤物97国产精品久久精品国产 | 久草视频免费 | 亚洲精品乱码久久久久久蜜桃欧美 | 亚洲精品一区二区三区新线路 | 五月婷婷开心 | 久久久国产精品麻豆 | 国产成人精品一区一区一区 | 成人午夜影院在线观看 | 国产日本在线播放 | 国产成人精品日本亚洲999 | 亚洲精品综合在线观看 | 久久久综合电影 | av三级av| 国产在线a免费观看 | 国产在线污 | 亚洲免费精彩视频 | 97视频成人 | 免费网站在线观看成人 | 97av色| 午夜精品视频福利 | 综合久久久久 | www久 | 国产福利中文字幕 | 97看片 | 免费网站观看www在线观看 | 久久婷婷国产色一区二区三区 | 久久免费一级片 | 国产精品成人国产乱一区 | 精精国产xxxx视频在线播放 | 在线免费观看国产 | 91亚洲精品国产 | 婷婷综合伊人 | 日韩一二三在线 | 久久久精品国产免费观看一区二区 | 国产在线精品播放 | 狠狠做深爱婷婷综合一区 | 韩国av一区二区 | 亚洲网站在线看 | 91久久久久久久一区二区 | 国产三级av在线 | 麻豆视频在线免费观看 | 综合色综合| 99r在线播放 | 成 人 免费 黄 色 视频 | 五月天激情视频在线观看 | 狠狠狠狠狠狠狠狠 | 手机av在线不卡 | 欧美另类调教 | 精品一区二区在线观看 | 超碰在线人人艹 | 午夜 免费| 亚洲高清色综合 | 中文字幕视频网站 | 欧美性直播 | 国产精品久久久久久一二三四五 | 日韩在线免费播放 | 在线观看 亚洲 | 丁香 久久 综合 | 久草在线视频免费资源观看 | 日本久久视频 | 久草在线视频网站 | 人人爽人人爽人人片av | 992tv在线观看 | 永久免费的啪啪网站免费观看浪潮 | 99精品在线看 | 波多野结衣日韩 | 国产成人一区二区三区 | 欧美成年人在线视频 | 日韩精品一区二区在线观看 | 久久综合久久综合这里只有精品 | 国产黄色观看 | 国产字幕在线看 | 日韩一区二区三免费高清在线观看 | 婷婷色中文 | 91精品在线免费 | 91视频在线| 一本一本久久a久久精品牛牛影视 | 亚洲精品一区二区三区四区高清 | 在线播放视频一区 | 久久黄色影视 | 国产亚洲综合性久久久影院 | 98超碰在线 | 国产精品欧美一区二区 | 日韩三级久久 | 国产一区二区不卡视频 | 偷拍精品一区二区三区 | 香蕉视频最新网址 | 色综合天天综合网国产成人网 | 亚洲成人黄色网址 | 激情久久久久久久久久久久久久久久 | 欧美日韩久久不卡 | 日韩二级毛片 | 欧美一区二区三区在线视频观看 | 三级免费黄色 | av资源免费在线观看 | 日韩三级.com | 久久情网| 精品国产乱码久久久久久久 | 中文在线资源 | 国产亚洲一区 | 免费观看一级特黄欧美大片 | 操久 | 日韩高清精品一区二区 | 亚洲精品色 | 天天夜夜操| a级国产片 | 欧美视频国产视频 | 九九交易行官网 | 人人射人人澡 | 国产无遮挡又黄又爽馒头漫画 | 日韩av综合网站 | 国产成人av电影在线观看 | 午夜视频导航 | 久草视频在线看 | 最新av电影网站 | 欧美成年人在线观看 | 91av在线播放视频 | 久久久久久伊人 | 狠狠狠狠狠操 | 豆豆色资源网xfplay | 成人在线视频网 | 日日躁夜夜躁xxxxaaaa | 欧美性大胆 | 中文字幕在线免费观看 | 精品专区 | www.久久久久 | www.久久免费视频 | 日韩城人在线 | 亚洲中字幕 | 欧美色精品天天在线观看视频 | 国产精品亚洲片夜色在线 | 国产午夜一区二区 | 久久精品99久久久久久2456 | 久久精品一区八戒影视 | 国产精品刺激对白麻豆99 | 99久久精品国产系列 | 在线看片日韩 | 国产福利精品一区二区 | avav99| 伊人婷婷在线 | 亚洲一区二区观看 | 精品免费久久久久久 | 91视频首页 | 久久九九视频 | 国产成人综合精品 | av免费看在线 | 在线亚洲日本 | av 在线观看 | 一区二区三区在线观看中文字幕 | 久久影视中文字幕 | 色99色| 免费看的毛片 | 中文字幕综合在线 | 日日碰狠狠躁久久躁综合网 | 日韩精品观看 | 伊色综合久久之综合久久 | 欧美9999 | 国产精品初高中精品久久 | 欧美精品久久久久久久久久丰满 | 日本黄色大片免费 | www.亚洲视频.com | 在线观看黄色国产 | 精品999在线| 久久理论片 | 日韩乱码在线 | 国产欧美中文字幕 | 久久香蕉国产精品麻豆粉嫩av | 日韩欧美在线综合网 | 青青啪 | 一区二区视| 精品国产91亚洲一区二区三区www | 91福利区一区二区三区 | 国产九九九视频 | 碰超在线97人人 | 香蕉久久久久 | 五月婷在线视频 | 久久精品人人做人人综合老师 | 日韩一区二区三区免费视频 | 一级黄色片网站 | 99热这里只有精品在线观看 | 中文字幕一区二区三区四区 | 亚洲午夜精品福利 | 日韩在线免费电影 | 亚州国产精品视频 | 国产91精品一区二区 | www国产在线 | 色偷偷男人的天堂av | 日韩欧美在线不卡 | 久久综合狠狠综合久久综合88 | 国产中文字幕在线免费观看 | 日韩av偷拍| 国产精品免费观看在线 | 国产91精品在线观看 | 国产精品 美女 | 中文字幕日韩无 | 亚洲精品小视频 | 国产精品视频在线观看 | 欧美黄色特级片 | 狠狠色丁香久久婷婷综合_中 | 99久久精品久久亚洲精品 | 香蕉视频免费在线播放 | 国产裸体永久免费视频网站 | 十八岁以下禁止观看的1000个网站 | 中文字幕视频观看 | 亚洲国产电影在线观看 | 国产精品igao视频网网址 | 日韩r级电影在线观看 | 久久久综合 | 日韩在线一级 | 国产精品成人免费 | 久久婷婷视频 | 狂野欧美激情性xxxx欧美 | 国产精品一区二区久久精品 | 亚洲精品国产第一综合99久久 | 五月天天色 | 免费福利片2019潦草影视午夜 | 国产黄色片久久 | 婷婷丁香激情综合 | 日韩免费av在线 | 西西444www大胆高清图片 | 在线免费观看涩涩 | 国产综合精品久久 | 精品在线一区二区 | 国产黄a三级三级三级三级三级 | 久草在线手机视频 | 日日夜夜精品免费视频 | 欧美精品一级视频 | 亚洲黄色一级大片 | 天天色.com| 欧美尹人 | 黄网站色 | 色爱成人网 | 九九热免费观看 | 丰满少妇高潮在线观看 | 在线观看自拍 | 人人插人人射 | 99热超碰 | 国产精品久久久久久久7电影 | www.天天操.com| 黄色的网站在线 | 91丨九色丨蝌蚪丨老版 | 国产在线国产 | 日韩欧美69| 在线电影中文字幕 | 亚洲国产久| 国内免费久久久久久久久久久 | 久久男女视频 | www日韩视频 | 黄色a级片在线观看 | 91精品在线观看入口 | 久久99这里只有精品 | 激情在线免费视频 | 中文字幕一区二区在线观看 | 91av美女| 亚洲精品国偷拍自产在线观看蜜桃 | 婷婷 中文字幕 | 亚洲日韩中文字幕在线播放 | 久久激五月天综合精品 | 91探花国产综合在线精品 | 91精品国产99久久久久久红楼 | 成人a级黄色片 | 99精品免费久久久久久久久 | 成人黄色在线视频 | 五月婷婷在线视频 | 日韩av网页 | 国产高清第一页 | 在线视频电影 | 久草免费色站 | 欧美一级片免费在线观看 | 精品国产中文字幕 | 久久精品国产一区二区电影 | 福利视频第一页 | 国产一区二区手机在线观看 | 久久久久国产一区二区三区四区 | 国产精品99久久免费黑人 | 24小时日本在线www免费的 | www在线观看国产 | 99久久精品电影 | 国产 日韩 欧美 中文 在线播放 | 久久天天操| 国产精品午夜久久 | 国精产品满18岁在线 | av丝袜制服 | 精品在线视频观看 | 国产精品视频免费看 | av亚洲产国偷v产偷v自拍小说 | 婷婷色av | 国产精品福利在线观看 | 精品99在线 | 免费黄色小网站 | 国产精品精品国产 | 福利一区视频 | 91香蕉视频 mp4 | 美女网站免费福利视频 | 在线激情影院一区 | 热久久99这里有精品 | 玖玖999| 免费在线观看av的网站 | 高清不卡一区二区在线 | 91麻豆精品国产自产在线 | 日韩有码在线观看视频 | 五月婷婷视频在线观看 | 精品一区电影 | 国产拍揄自揄精品视频麻豆 | 一级特黄av | 九七视频在线观看 | 亚洲手机天堂 | 五月天亚洲精品 | 99久久精品久久亚洲精品 | 久久一区二区三区四区 | 天天操比| 欧美综合在线观看 | 天堂av免费在线 | 808电影免费观看三年 | 99久久夜色精品国产亚洲96 | 美女黄网站视频免费 | 亚洲情影院 | 九九色视频 | 在线天堂中文www视软件 | 亚洲精品中文在线 | 中文字幕日韩高清 | 狠狠操狠狠干2017 | 欧美一区在线观看视频 | 国产成人精品一区二区三区福利 | 日韩精品一区二区三区高清免费 | 久久久亚洲影院 | 在线观看免费福利 | 国产剧情在线一区 | 成人黄大片 | 久久精品国产99 | 99精品偷拍视频一区二区三区 | 亚洲女欲精品久久久久久久18 | 中文字幕在线免费观看视频 | 婷婷午夜激情 | 国产乱码精品一区二区三区介绍 | 色综合久久久久久久久五月 | 亚洲一二区精品 | 九九热免费在线观看 | 久久精品爱视频 | 美女视频黄是免费的 | 国产视频2 | 色欧美88888久久久久久影院 | 欧美精品久久久久久久久免 | 国产精品毛片久久 | 狠狠色香婷婷久久亚洲精品 | 插久久 | 在线看片91 | 日本久久不卡视频 | 国产一级在线观看视频 | 久久久久久久毛片 | 国产成人免费 | 久久免费视频2 | 色婷婷综合久久久久中文字幕1 | 在线观看视频亚洲 | 国产精品免费在线 | 国产精品视频app | 欧洲激情综合 | 国产一区二区三区免费观看视频 | 97在线公开视频 | 99视频精品 | 久久视频这里只有精品 | 99色在线视频 | 99热在线这里只有精品 | 国产高清在线视频 | 婷婷夜夜 | 欧美 亚洲 另类 激情 另类 | 成人黄色小说网 | 国产精品久久久久久久久久不蜜月 | 日韩黄色在线观看 | 日本三级全黄少妇三2023 | 99精品欧美一区二区 | 成人黄大片视频在线观看 | 久久精品综合一区 | 亚洲精品一区中文字幕乱码 | 狠狠狠的干 | 中文字幕a∨在线乱码免费看 | 欧美一区二区日韩一区二区 | 成年人免费看 | 国内外成人在线 | www.com操| 99视频在线精品免费观看2 | 亚洲成人高清在线 | 久久在视频 | 中文国产字幕在线观看 | 久久久精品成人 | 91精品在线播放 | 国产99精品 | 中文av一区二区 | 成人a视频在线观看 | 91最新网址在线观看 | 成人欧美一区二区三区在线观看 | 日韩免费视频一区二区 | 免费观看av | 欧美aa级| 色国产精品一区在线观看 | 黄色软件网站在线观看 | 六月激情丁香 | 日韩大片在线 | 国产中文字幕大全 | 精品久久一二三区 | 精品一区二区在线看 | 亚洲精品视频第一页 | 亚洲午夜精品久久久久久久久久久久 | 精品在线99 | 国产一级免费电影 | 亚洲精品综合久久 | 国产精品久久久777 成人手机在线视频 | 69亚洲精品| 国产成人精品一区在线 | 国产精品一区二区在线免费观看 | 欧美一二三视频 | 日韩在线精品视频 | 国产99久久久国产精品免费看 | 色爱区综合激月婷婷 | 嫩草91影院 | 色成人亚洲网 | 激情综合网婷婷 | 人人爽人人澡 | 国产精品日韩在线播放 | 精品视频免费在线 | 久久精品美女视频 | 中文字幕三区 | 99亚洲精品 | 亚洲国产精品电影 | 久草99| 亚洲视频免费视频 | 正在播放国产一区二区 | 欧美经典久久 | 久久免费视频一区 | 欧美日韩有码 | 蜜臀久久99静品久久久久久 | 国产精品第7页 | 日批视频在线观看免费 | 亚洲人精品午夜 | 国产成人av网站 | 久久久久免费精品 | 久草在线免费色站 | 五月婷婷狠狠 | 狠狠色丁香久久婷婷综 | 区一区二在线 | 日日干,天天干 | 亚洲精品国产精品乱码不99热 | 亚洲草视频 | 视频一区二区在线观看 | 在线黄色观看 | 久久久精品综合 | 国产 成人 久久 | 精品久久久久久亚洲综合网 | 激情五月综合 | 免费av试看| 国产精品一区在线播放 | 免费在线观看日韩欧美 | 激情综合电影网 | 免费a视频在线 | 日韩美在线| 成人免费网站视频 | 激情婷婷六月 | 黄色毛片在线 | 国产99re| 91精品久久久久久久久久入口 | 久久国产精品系列 | 国产精品入口麻豆 | 99视频99 | 狠狠干天天射 | 亚洲毛片久久 | 日本久久中文字幕 | 欧美在线视频不卡 | 亚洲成人资源在线 | 国产精品k频道 | 日本黄色一级电影 | 中国成人一区 | 欧美视频一区二 | 久久综合五月 | 国产1区在线观看 | 99精品小视频 | 丁香婷婷激情国产高清秒播 | 在线观看免费高清视频大全追剧 | 国产精品24小时在线观看 | 99热这里只有精品1 av中文字幕日韩 | 婷婷成人亚洲综合国产xv88 | 亚洲国产精品视频 | 国产精品6| 91亚洲精品久久久蜜桃 | 亚洲天天综合 | 精品久久久亚洲 | 五月天婷婷在线观看视频 | 91c网站色版视频 | 色视频在线观看免费 | 国产精品福利无圣光在线一区 | 成人午夜电影免费在线观看 | 91新人在线观看 | 特级a毛片 | 精品久久久成人 | 日韩一三区 | 成人精品影视 | 9999在线观看 | 日本精品久久久久影院 | 国产一区二区三区在线 | 在线观看免费高清视频大全追剧 | 欧美精品午夜 | 中文字幕在线观看一区 | 久久久久久久久免费视频 | 超碰人人做 | 日韩一区二区免费在线观看 | 欧美国产一区在线 | 在线免费观看国产视频 | www.狠狠插.com | 国产成人一区二区三区影院在线 | 久久久久中文字幕 | 亚洲精品视频二区 | 欧洲av不卡 | 日韩a在线播放 | 五月婷婷综合在线观看 | 亚洲精品福利在线 | 香蕉视频最新网址 | 成年人黄色av | 一区二区三区日韩在线 | 欧美精品资源 | 亚洲黄色av网址 | 国产美女视频 | 免费热情视频 | 97超碰国产精品女人人人爽 | 午夜国产福利在线 | 精品一区二区免费在线观看 | 成人9ⅰ免费影视网站 | 国产又粗又猛又色又黄视频 | 96av在线| 午夜精品久久久久久久99 | 激情在线网| 亚洲精品乱码久久久久久 | 91av网址 | 久久最新视频 | 国产成人精品免费在线观看 | 性色大片在线观看 | 亚洲精品激情 | 成人久久精品视频 | 日本免费久久高清视频 | 玖玖国产精品视频 | 黄色国产在线 | 久草久热 | 最新国产精品久久精品 | 天天综合网入口 | 91在线区 | www操操 | 亚洲电影久久久 | 日韩午夜在线 | 国产日韩欧美在线看 | 91看片在线观看 | 在线观看亚洲免费视频 | 91视频在线免费 |