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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

和lua的效率对比测试_Unity游戏开发Lua更新运行时代码!

發布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 和lua的效率对比测试_Unity游戏开发Lua更新运行时代码! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近沉迷lua腳本熱更,想說這個可以提高多少菜雞的調試效率,找了網上好多文章,但是都不行,嘗試了很久,并且自己測試和學習,寫了一遍,勉強能熱更了。下面記錄一下熱更Lua的過程。

一、用來卸載表格的加載

最簡單粗暴的熱更新就是將package.loaded[modelname]的值置為nil,強制重新加載:

function reload_module_obsolete(module_name)
package.loaded[module_name] = nil
require(module_name)
end

這樣做雖然能完成熱更,但問題是已經引用了該模塊的地方不會得到更新, 因此我們需要將引用該模塊的地方的值也做對應的更新。

function ReloadUtil.Reload_Module(module_name)
local old_module = _G[module_name]

package.loaded[module_name] = nil
require (module_name)

local new_module = _G[module_name]
for k, v in pairs(new_module) do
old_module[k] = v
end

package.loaded[module_name] = old_module
end

二、我認為邏輯最清晰的,但是可能是我不會用吧!

源鏈接:鏈接

--region 利用_ENV環境,在加載的時候把數據加載到_ENV下,然后再通過對比的方式修改_G底下的值,從而實現熱更新,函數 -- 失敗

function ReloadUtil.hotfix(chunk, check_name)
check_name = check_name or 'hotfix'
local env = {}
setmetatable(env, { __index = _G })
local f, err = load(chunk, check_name, 't', env)
assert(f,err)
local ok, err = pcall(f)
assert(ok,err)

local protection = {
setmetatable = true,
pairs = true,
ipairs = true,
next = true,
require = true,
_ENV = true,
}
--防止重復的table替換,造成死循環
local visited_sig = {}

function ReloadUtil.update_table(newTable, oldTable, name, deep)
--對某些關鍵函數不進行比對
if protection[newTable] or protection[oldTable] then return end
--如果原值與當前值內存一致,值一樣不進行對比
if newTable == oldTable then return end
local signature = tostring(oldTable)..tostring(newTable)
if visited_sig[signature] then return end
visited_sig[signature] = true
--遍歷對比值,如進行遍歷env類似的步驟
for name, newValue in pairs(newTable) do
local old_value = oldTable[name]
if type(newValue) == type(old_value) then
if type(newValue) == 'function' then
ReloadUtil.update_func(newValue, old_value, name, deep..' '..name..' ')
oldTable[name] = newValue
elseif type(newValue) == 'table' then
ReloadUtil.update_table(newValue, old_value, name, deep..' '..name..' ')
end
else
oldTable[name] = newValue
end
end
--遍歷table的元表,進行對比
local old_meta = debug.getmetatable(oldTable)
local new_meta = debug.getmetatable(newTable)
if type(old_meta) == 'table' and type(new_meta) == 'table' then
ReloadUtil.update_table(new_meta, old_meta, name..'s Meta', deep..' '..name..'s Meta'..' ' )
end
end

function ReloadUtil.update_func(newFunc, oldFunc, name, deep)
--取得原值所有的upvalue,保存起來
local old_upvalue_map = {}
for i = 1, math.huge do
local name, value = debug.getupvalue(oldFunc, i)
if not name then break end
old_upvalue_map[name] = value
end
--遍歷所有新的upvalue,根據名字和原值對比,如果原值不存在則進行跳過,如果為其它值則進行遍歷env類似的步驟
for i = 1, math.huge do
local name, value = debug.getupvalue(newFunc, i)
if not name then break end
local old_value = old_upvalue_map[name]
if old_value then
if type(old_value) ~= type(value) then
debug.setupvalue(newFunc, i, old_value)
elseif type(old_value) == 'function' then
ReloadUtil.update_func(value, old_value, name, deep..' '..name..' ')
elseif type(old_value) == 'table' then
ReloadUtil.update_table(value, old_value, name, deep..' '..name..' ')
debug.setupvalue(newFunc, i, old_value)
else
debug.setupvalue(newFunc, i, old_value)
end
end
end
end

--原理
--利用_ENV環境,在加載的時候把數據加載到_ENV下,然后再通過對比的方式修改_G底下的值,從而實現熱更新,函數
for name,value in pairs(env) do
local g_value = _G[name]
if type(g_value) ~= type(value) then
_G[name] = value
elseif type(value) == 'function' then
ReloadUtil.update_func(value, g_value, name, 'G'..' ')
_G[name] = value
elseif type(value) == 'table' then
ReloadUtil.update_table(value, g_value, name, 'G'..' ')
end
end
return 0
end

function ReloadUtil.hotfix_file(debugName)
local newCode
local fp = io.open(debugName)
if fp then
newCode = fp:read('*all')
io.close(fp)
end
if not newCode then
return -1
end
return ReloadUtil.hotfix(newCode, debugName)
end

--endregion

圖文無關

三、有點復雜,遞歸了debug.getregistry(),然后去替換舊的值

源鏈接:asqbtcupid.github.io/lu?有介紹原理,講得還蠻細的,學習了蠻多,但是這個遞歸真的是復雜,我注釋掉了一些遞歸,能滿足基本的需求。

local ReloadUtil = {}

local tableInsert = table.insert
local tableRemove = table.remove
local tableConcat = table.concat
local ioPopen = io.popen
local ioInput = io.input
local ioRead = io.read
local stringMatch = string.match
local stringFind = string.find
local stringSub = string.sub
local stringGsub = string.gsub
local packageLoaded = package.loaded
local type = type
local getfenv = getfenv
local setfenv = setfenv
local loadstring = loadstring
local mathHuge = math.huge
local debugGetupvalue = debug.getupvalue
local debugSetupvalue = debug.setupvalue
local debugGetmetatable = debug.getmetatable
local debugSetfenv = debug.setfenv

function ReloadUtil.FailNotify(...)
printAError(...)
end

function ReloadUtil.DebugNofity(...)
print(...)
end

function ReloadUtil.ErrorHandle(e)
ReloadUtil.FailNotify("HotUpdate Error\n"..tostring(e))
ReloadUtil.ErrorHappen = true
end

function ReloadUtil.InitProtection()
ReloadUtil.Protection = {}
local Protection = ReloadUtil.Protection
Protection[setmetatable] = true
Protection[pairs] = true
Protection[ipairs] = true
Protection[next] = true
Protection[require] = true
Protection[ReloadUtil] = true
Protection[ReloadUtil.Meta] = true
Protection[math] = true
Protection[string] = true
Protection[table] = true
end

local function Normalize(path)
path = path:gsub("/","\\")

local pathLen = #path
if path:sub(pathLen, pathLen) == "\\" then
path = path:sub(1, pathLen - 1)
end

local parts = { }
for w in path:gmatch("[^\\]+") do
if w == ".." and #parts ~=0 then tableRemove(parts)
elseif w ~= "." then tableInsert(parts, w)
end
end
return tableConcat(parts, "\\")
end

-- 根據給的路徑,找到路徑下所有文件,HU.FileMap[FileName] = {SysPath = line, LuaPath = luapath}
function ReloadUtil.InitFileMap(RootPath)
local systemPathList = {}
local HotUpdateDic = ReloadUtil.HotUpdateDic
local OldCode = ReloadUtil.OldCode
RootPath = Normalize(RootPath)
--獲取一個File對象其下的所有文件和目錄的絕對路徑: 的所有文件(/S/B),不包括文件夾(/A:A),ioPopen返回文件句柄file handle
--todo 這里有的問題,多次啟動后會報bad file decorator ,檢查是否是打開文件沒有關閉導致
local file = ioPopen("dir /S/B /A:A \""..RootPath.."\"")

for SysPath in ioInput(file):lines() do
local FileName = stringMatch(SysPath,".*\\(.*)%.lua")
--todo meta 優化一下regex
local metaFile = stringMatch(SysPath,".*\\(.*)%.lua.meta")
if FileName ~= nil and metaFile == nil then
--todo !!! luaPath在保存的時候是按文件夾路徑保存的比如:game.modules.XXX.lua,所以可能要自己搞對這個路徑

local startIndex = stringFind(SysPath,"game")
local luaPath = stringSub(SysPath, startIndex, #SysPath -4)
luaPath = stringGsub(luaPath, "\\", ".")
HotUpdateDic[luaPath] = SysPath
tableInsert(systemPathList,SysPath)
-- 初始化舊代碼
ioInput(SysPath)
OldCode[SysPath] = ioRead("*all")
ioInput():close()
end
end

file:close()

return systemPathList
end

function ReloadUtil.InitFakeTable()
local meta = {}
ReloadUtil.Meta = meta
local function FakeT() return setmetatable({}, meta) end
local function EmptyFunc() end
local function pairs() return EmptyFunc end
local function setmetatable(t, metaT)
ReloadUtil.MetaMap[t] = metaT
return t
end
local function getmetatable(t, metaT)
return setmetatable({}, t)
end

local function require(LuaPath)
if not ReloadUtil.RequireMap[LuaPath] then
local FakeTable = FakeT()
ReloadUtil.RequireMap[LuaPath] = FakeTable
end
return ReloadUtil.RequireMap[LuaPath]
end

function meta.__index(table, key)
if key == "setmetatable" then
return setmetatable
elseif key == "pairs" or key == "ipairs" then
return pairs
elseif key == "next" then
return EmptyFunc
elseif key == "require" then
return require
else
local FakeTable = FakeT()
rawset(table, key, FakeTable)
return FakeTable
end
end
function meta.__newindex(table, key, value) rawset(table, key, value) end
function meta.__call() return FakeT(), FakeT(), FakeT() end
function meta.__add() return meta.__call() end
function meta.__sub() return meta.__call() end
function meta.__mul() return meta.__call() end
function meta.__div() return meta.__call() end
function meta.__mod() return meta.__call() end
function meta.__pow() return meta.__call() end
function meta.__unm() return meta.__call() end
function meta.__concat() return meta.__call() end
function meta.__eq() return meta.__call() end
function meta.__lt() return meta.__call() end
function meta.__le() return meta.__call() end
function meta.__len() return meta.__call() end
return FakeT
end

function ReloadUtil.IsNewCode(SysPath)
ioInput(SysPath)
local newCode = ioRead("*all")

local oldCode = ReloadUtil.OldCode[SysPath]
if oldCode == newCode then
ioInput():close()
return false
end

ReloadUtil.DebugNofity(SysPath)
return true, newCode
end

function ReloadUtil.GetNewObject(newCode, LuaPath, SysPath)
--loadstring 一段lua代碼以后,會經過語法解析返回一個函數,執行返回的函數時,字符串中的代碼就被執行了。
local NewFunction = loadstring(newCode)
if not NewFunction then
ReloadUtil.FailNotify(SysPath.." has syntax error.")
collectgarbage("collect")
else
-- 把加載的字符串放置在空環境了,防止報錯
setfenv(NewFunction, ReloadUtil.FakeENV)
local NewObject
ReloadUtil.ErrorHappen = false
--類似其它語言里的 try-catch, xpcall 類似 pcall xpcall接受兩個參數:調用函數、錯誤處理函數
-- todo 父類沒拿到
xpcall(function () NewObject = NewFunction() end, ReloadUtil.ErrorHandle)

if not ReloadUtil.ErrorHappen then
ReloadUtil.OldCode[SysPath] = newCode
return NewObject
else
collectgarbage("collect")
end
end
end

function ReloadUtil.ResetENV(object, name, From, Deepth)
local visited = {}
local function f(object, name)
if not object or visited[object] then return end
visited[object] = true
if type(object) == "function" then
ReloadUtil.DebugNofity(Deepth.."HU.ResetENV", name, " from:"..From)
xpcall(function () setfenv(object, ReloadUtil.ENV) end, ReloadUtil.FailNotify)
elseif type(object) == "table" then
ReloadUtil.DebugNofity(Deepth.."HU.ResetENV", name, " from:"..From)
for k, v in pairs(object) do
f(k, tostring(k).."__key", " HU.ResetENV ", Deepth.." " )
f(v, tostring(k), " HU.ResetENV ", Deepth.." ")
end
end
end
f(object, name)
end

-- 遍歷_G這張全局表,替換HU.ChangedFuncList 有改動列表 的函數
function ReloadUtil.Travel_G()
local visited = {}
local ChangedFuncList = ReloadUtil.ChangedFuncList
visited[ReloadUtil] = true

local function f(table)
if (type(table) ~= "function" and type(table) ~= "table") or visited[table] or ReloadUtil.Protection[table] then return end

visited[table] = true

if type(table) == "function" then
for i = 1, mathHuge do
local name, value = debugGetupvalue(table, i)
if not name then break end

if type(value) == "function" then
for _, funcs in ipairs(ChangedFuncList) do
if value == funcs.OldObject then
debugSetupvalue(table, i, funcs.NewObject)
end
end
end
-- todo
--f(value)
end
elseif type(table) == "table" then
-- 不要漏掉元表和upvalue的表,元表的獲取用debug.getmetatable,
-- todo 這樣對于有metatable這個key的元表,也能正確獲取。
--f(debugGetmetatable(table))

local changeIndexList = {}
for key, value in pairs(table) do
-- todo 還有注意table的key也可以是函數。
--f(key)
f(value)

if type(value) == "function" then
for _, funcs in ipairs(ChangedFuncList) do
if value == funcs.OldObject then
table[key] = funcs.NewObject
end
end
end

-- 找出改動的index
if type(key) == "function" then
for index, funcs in ipairs(ChangedFuncList) do
if key == funcs.OldObject then
changeIndexList[#changeIndexList + 1] = index
end
end
end
end

-- 修改改動的值
for _, index in ipairs(changeIndexList) do
local funcs = ChangedFuncList[index]
table[funcs.NewObject] = table[funcs.OldObject]
table[funcs.OldObject] = nil
end
end
end

--遍歷_G這張全局表,_G在registryTable里
--f(_G)
--如果有宿主語言,那么還要遍歷一下注冊表,用debug.getregistry()獲得。
local registryTable = debug.getregistry()
f(registryTable)
end

function ReloadUtil.UpdateTable(OldTable, NewTable, Name, From, Deepth)
if ReloadUtil.Protection[OldTable] or ReloadUtil.Protection[NewTable] then return end

if OldTable == NewTable then return end

local signature = tostring(OldTable)..tostring(NewTable)

if ReloadUtil.VisitedSig[signature] then return end

ReloadUtil.VisitedSig[signature] = true
ReloadUtil.DebugNofity(Deepth.."HU.UpdateTable "..Name.." from:"..From)

for ElementName, newValue in pairs(NewTable) do
local OldElement = OldTable[ElementName]
if type(newValue) == type(OldElement) then
if type(newValue) == "function" then
ReloadUtil.UpdateOneFunction(OldElement, newValue, ElementName, OldTable, "HU.UpdateTable", Deepth.." ")
elseif type(newValue) == "table" then
ReloadUtil.UpdateTable(OldElement, newValue, ElementName, "HU.UpdateTable", Deepth.." ")
end
elseif OldElement == nil and type(newValue) == "function" then
-- 新增的函數,添加到舊環境里
if pcall(setfenv, newValue, ReloadUtil.ENV) then
OldTable[ElementName] = newValue
end
end
end

-- todo 更新metatable
--local OldMeta = debug.getmetatable(OldTable)
--local NewMeta = ReloadUtil.MetaMap[NewTable]
--if type(OldMeta) == "table" and type(NewMeta) == "table" then
-- ReloadUtil.UpdateTable(OldMeta, NewMeta, Name.."'s Meta", "HU.UpdateTable", Deepth.." ")
--end
end

-- Upvalue 是指那些函數外被引用到的local變量
function ReloadUtil.UpdateUpvalue(OldFunction, NewFunction, Name, From, Deepth)
ReloadUtil.DebugNofity(Deepth.."HU.UpdateUpvalue", Name, " from:"..From)
local OldUpvalueMap = {}
local OldExistName = {}
-- 記錄舊的upvalue表
for i = 1, mathHuge do
local name, value = debugGetupvalue(OldFunction, i)
if not name then break end
OldUpvalueMap[name] = value
OldExistName[name] = true
end

-- 新的upvalue表進行替換
for i = 1, mathHuge do
local name, value = debugGetupvalue(NewFunction, i)
if not name then break end
if OldExistName[name] then
local OldValue = OldUpvalueMap[name]
if type(OldValue) ~= type(value) then
-- 新的upvalue類型不一致時,用舊的upvalue
debugSetupvalue(NewFunction, i, OldValue)
elseif type(OldValue) == "function" then
-- 替換單個函數
ReloadUtil.UpdateOneFunction(OldValue, value, name, nil, "HU.UpdateUpvalue", Deepth.." ")
elseif type(OldValue) == "table" then
-- 對table里面的函數繼續遞歸替換
ReloadUtil.UpdateTable(OldValue, value, name, "HU.UpdateUpvalue", Deepth.." ")
debugSetupvalue(NewFunction, i, OldValue)
else
-- 其他類型數據有改變,也要用舊的
debugSetupvalue(NewFunction, i, OldValue)
end
else
-- 對新添加的upvalue設置正確的環境表
ReloadUtil.ResetENV(value, name, "HU.UpdateUpvalue", Deepth.." ")
end
end
end

function ReloadUtil.UpdateOneFunction(OldObject, NewObject, FuncName, OldTable, From, Deepth)
if ReloadUtil.Protection[OldObject] or ReloadUtil.Protection[NewObject] then return end

if OldObject == NewObject then return end

local signature = tostring(OldObject)..tostring(NewObject)

if ReloadUtil.VisitedSig[signature] then return end
ReloadUtil.DebugNofity(Deepth.."HU.UpdateOneFunction "..FuncName.." from:"..From)
ReloadUtil.VisitedSig[signature] = true
--最后注意把熱更新的函數的環境表再改回舊函數的環境表即可,方法是setfenv(newfunction, getfenv(oldfunction))。
if pcall(debugSetfenv, NewObject, getfenv(OldObject)) then
ReloadUtil.UpdateUpvalue(OldObject, NewObject, FuncName, "HU.UpdateOneFunction", Deepth.." ")
ReloadUtil.ChangedFuncList[#ReloadUtil.ChangedFuncList + 1] = {OldObject = OldObject,NewObject = NewObject,FuncName = FuncName,OldTable = OldTable}
end
end

function ReloadUtil.ReplaceOld(OldObject, NewObject, LuaPath, From)
if type(OldObject) == type(NewObject) then
if type(NewObject) == "table" then
ReloadUtil.UpdateTable(OldObject, NewObject, LuaPath, From, "")
elseif type(NewObject) == "function" then
ReloadUtil.UpdateOneFunction(OldObject, NewObject, LuaPath, nil, From, "")
end
end
end

function ReloadUtil.HotUpdateCode(LuaPath, SysPath)
local OldObject = packageLoaded[LuaPath]
if not OldObject then
-- 沒加載的就不熱更??
return
end

local isNew,newCode = ReloadUtil.IsNewCode(SysPath)
if not isNew then
return
end

local newObject = ReloadUtil.GetNewObject(newCode,SysPath,LuaPath)
-- 更新舊代碼
ReloadUtil.ReplaceOld(OldObject, newObject, LuaPath, "Main")

--原理
--利用_ENV環境,在加載的時候把數據加載到_ENV下,然后再通過對比的方式修改_G底下的值,從而實現熱更新,函數
--setmetatable(ReloadUtil.FakeENV, nil)
--todo ??
--ReloadUtil.UpdateTable(ReloadUtil.ENV, ReloadUtil.FakeENV, " ENV ", "Main", "")

-- 替換完,上一次的代碼就是舊代碼
ReloadUtil.OldCode[SysPath] = newCode
end


-- 外部調用(先Init需要的路徑,然后Update是熱更時候調用的)

---@param RootPath 需要被更新的文件夾路徑
---@param UpdateListFile 需要被更新的文件列表,不傳為整個文件夾,會卡
function ReloadUtil.Init(RootPath, ENV)
ReloadUtil.HotUpdateDic = {}
ReloadUtil.FileMap = {}
ReloadUtil.OldCode = {}
ReloadUtil.ChangedFuncList = {}
ReloadUtil.VisitedSig = {}
ReloadUtil.FakeENV = ReloadUtil.InitFakeTable()()
--當我們加載lua模塊的時候,這時候這個模塊信息并不像初始化全局代碼一樣,就算提前設置了package.loaded["AA"] = nil,
--也不會出現在env中同時也不會調用_G的__newindex函數,也就是說env["AA"]為空,故這種寫法無法進行熱更新,所以通常模塊的寫法改成如下
--定義模塊AA
local AA = {}
--相當于package.seeall
setmetatable(AA, {__index = _G})
--環境隔離
local _ENV = AA
ReloadUtil.NewENV = _ENV
ReloadUtil.ENV = ENV or _G
ReloadUtil.InitProtection()
ReloadUtil.ALL = false
return ReloadUtil.InitFileMap(RootPath)
end

function ReloadUtil.Update()
ReloadUtil.VisitedSig = {}
ReloadUtil.ChangedFuncList = {}
for LuaPath, SysPath in pairs(ReloadUtil.HotUpdateDic) do
ReloadUtil.HotUpdateCode(LuaPath, SysPath)
end

if #ReloadUtil.ChangedFuncList > 0 then
ReloadUtil.Travel_G()
end
collectgarbage("collect")
end

我跟老大炫耀的時候,老大說,那你懂其中的原理嗎,一下問懵我了,老大說,你要學習到其中的原理才能進步啊,不然就只是個會用工具的人。好有道理,搞得我羞愧難當,趕緊好好學習其中原理。

Upvalue

Upvalue 是指那些函數外被引用到的local變量,比如:local a = 1
function foo()
print(a)
end那么a就是這個foo的upvalue。

getupvalue (f, up)

此函數返回函數 f 的第 up 個上值的名字和值。如果該函數沒有那個上值,返回 nil 。
以 '(' (開括號)打頭的變量名表示沒有名字的變量 (去除了調試信息的代碼塊)。

setupvalue (f, up, value):

這個函數將 value 設為函數 f 的第 up 個上值。如果函數沒有那個上值,返回 nil 否則,返回該上值的名字。

_G和debug.getregistry這2張表

學習的時候,我一直以為只有把_G這張全局表的舊值替換掉就好了,然后真正實施的時候,還是會有種種問題,實在是很糟糕,看這段代碼的時候一直不是很理解,看了debug.getregistry的定義:debug.getregistry():返回注冊表表,這是一個預定義出來的表, 可以用來保存任何 C 代碼想保存的 Lua 值。
還是半桶水,但是我有注意到_G這種表其實在debug.getregistry返回的這張注冊表里有,所以最后就遞歸這張表其替換里面的舊值就好了。

getfenv(object):返回對象的環境變量。
setfenv(function,_ENV):設置一段代碼的運行環境

io.popen("dir /S/B /A:A \""..RootPath.."\""):獲取一個File對象其下的所有文件和目錄的絕對路徑: 的所有文件(/S/B),不包括文件夾(/A:A),io.popen返回文件句柄file handle

對了,InitFileMap這個函數有個要注意的,luaPath在保存的時候是按文件夾路徑保存的比如:game.modules.XXX.lua,所以可能要自己搞對這個路徑;

最后總結一下流程:

1. 初始化需要熱更的文件路徑,用一張哈希表存下來;
2. 然后遍歷這些路徑,讀取所有的代碼,判斷是否是新代碼,新的話記錄到ChangedFuncList列表里面;3.?新代碼的話,就把加載的字符串放置在空環境了,防止報錯setfenv(NewFunction, ReloadUtil.FakeENV);4.?代替舊代碼,拿著ChangedFuncList列表到注冊表(debug.getregistry())里面去找舊值,遞歸注冊表的舊值替換成新的值。

來源知乎專欄:Unity手游開發叨叨

總結

以上是生活随笔為你收集整理的和lua的效率对比测试_Unity游戏开发Lua更新运行时代码!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

www.久久免费 | 亚州人成在线播放 | 韩日色视频 | 日韩免费在线视频观看 | 国产精品久久久久免费观看 | 国产精品麻豆三级一区视频 | 热久久在线视频 | 国产做a爱一级久久 | 91精品国产高清 | 日日夜夜爱 | 精品国产自在精品国产精野外直播 | 丰满少妇对白在线偷拍 | 久久精品综合 | 最新精品视频在线 | 久久精品二区 | 色网站视频 | 精品亚洲视频在线 | 色欧美成人精品a∨在线观看 | 中文字幕第一页在线视频 | 久草免费资源 | 天天干天天做天天操 | 国产二区av | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 成人免费观看视频大全 | 操操日日 | 久久精品一区二区三区国产主播 | www.亚洲在线| 亚洲人久久 | 日韩精品一区二区三区在线播放 | 久久99国产精品久久 | 成人四虎 | 色婷婷综合视频在线观看 | 国产高清在线观看 | 天天干天天操天天射 | 97视频在线免费 | 91精品国产欧美一区二区成人 | 在线91精品| 粉嫩av一区二区三区四区 | 激情图片区 | 国产精久久 | 91九色视频在线 | 亚洲精品综合一区二区 | 亚洲国产丝袜在线观看 | 高清一区二区 | 色在线免费观看 | 国产成人精品一区二区在线观看 | 97电影院在线观看 | 国产精品久久99精品毛片三a | 婷婷六月天在线 | 91九色免费视频 | 色天天综合网 | 激情五月婷婷综合 | 亚洲片在线 | 日本久久久久久科技有限公司 | 欧美日韩免费观看一区=区三区 | 亚洲人视频在线 | 91福利视频网站 | 97超碰在线视 | 嫩小bbbb摸bbb摸bbb | 中文字幕首页 | 久精品视频在线观看 | 五月综合色婷婷 | 国产一区二区在线免费播放 | 欧美日韩有码 | 免费网站在线观看人 | 精品久久久久久亚洲 | 日韩a免费| 国产美女无遮挡永久免费 | 涩涩网站在线播放 | 香蕉色综合 | 色福利网 | 亚洲欧美日韩一二三区 | 天堂久色| 视频在线观看一区 | 欧洲高潮三级做爰 | 午夜国产福利在线观看 | 精品国产自在精品国产精野外直播 | 欧美最新另类人妖 | 午夜aaaa | 国产精品99在线播放 | 国产成人久久精品 | av在线播放不卡 | 免费的黄色av | 美女在线观看网站 | 91看片看淫黄大片 | 日韩高清国产精品 | 免费看v片网站 | 亚洲成人精品久久 | 激情五月婷婷综合 | 一级性生活片 | 亚洲精品免费在线视频 | 91视频在线观看下载 | 欧美人交a欧美精品 | 亚洲一区二区精品3399 | 日韩精品1区2区 | 色综合天天综合在线视频 | 成年人免费看片网站 | 国产精品欧美久久久久三级 | 国产在线毛片 | 色综合久久天天 | 免费看的国产视频网站 | 久久国产片 | 国产黄在线播放 | 亚洲欧洲精品一区二区 | 国产 视频 久久 | 久久久久国产精品免费 | 99 久久久久 | 一区二区理论片 | 亚洲激情电影在线 | 99这里有精品 | 五月天婷婷综合 | 五月天色中色 | 日韩视频免费观看高清 | 国产美女视频网站 | 亚洲va在线va天堂 | 国产福利资源 | 国产区精品视频 | 九九热免费在线观看 | 黄色一级片视频 | 亚洲成人网av | 91免费版在线观看 | 一二三精品视频 | 激情深爱.com| 欧美亚洲xxx | 久久成人毛片 | 国产专区免费 | 黄色免费高清视频 | 久草视频在线播放 | 天天干亚洲 | 日韩专区 在线 | 中文字幕中文字幕在线中文字幕三区 | 国产成视频在线观看 | 午夜影视av | 午夜精品久久久久 | 深爱综合网| 国产成人精品一区在线 | 欧洲精品二区 | 日韩高清在线一区二区三区 | 蜜臀av夜夜澡人人爽人人 | 免费人成在线观看 | 久久精品99| 国产精品高潮呻吟久久久久 | 欧美成人区 | 毛片精品免费在线观看 | 在线观看理论 | 91免费高清观看 | 亚洲伊人成综合网 | 欧美精品在线观看免费 | 午夜精品一区二区三区在线播放 | 久久字幕| av片在线观看 | 国产黄色成人 | 国外av在线| 久久久久久久久久久免费 | 成人作爱视频 | 五月婷婷国产 | 日韩欧美在线视频一区二区三区 | 九九九九九精品 | 精品国产一区二区三区四 | 日韩欧美xxx | 狠狠操夜夜操 | 日日夜夜精品免费 | 麻豆免费在线播放 | 久久夜靖品 | 午夜av免费在线观看 | 操老逼免费视频 | 日本中文字幕在线观看 | 久久精品国产成人 | 在线直播av | 激情欧美一区二区三区 | 中文字幕第一 | 中文字幕精品三级久久久 | 夜夜爽夜夜操 | 国产原创在线 | 狠狠色婷婷丁香六月 | 午夜在线资源 | 日韩中文字幕亚洲一区二区va在线 | 日韩网站免费观看 | 久久综合之合合综合久久 | 在线观看黄网 | 国产98色在线 | 日韩 | 欧美激情综合五月色丁香 | 91精品人成在线观看 | 手机av在线免费观看 | 最近日韩免费视频 | 97碰碰精品嫩模在线播放 | 成人av av在线 | 久久一区91 | 成人在线免费视频观看 | 亚洲欧洲中文日韩久久av乱码 | 亚洲性少妇性猛交wwww乱大交 | 在线免费观看视频你懂的 | 久久久久日本精品一区二区三区 | 福利久久| 超碰免费久久 | 亚洲精品在线一区二区 | 岛国精品一区二区 | 天堂av网在线 | www视频免费在线观看 | 久草免费福利在线观看 | www视频在线免费观看 | 美女搞黄国产视频网站 | 顶级bbw搡bbbb搡bbbb | 亚洲 欧美 日韩 综合 | 中文字幕精品久久 | 97超碰网 | 日韩免 | 欧美日韩免费看 | 久久综合欧美精品亚洲一区 | 精品国产一区二区三区久久久蜜臀 | 中文字幕在线观看第一区 | 久久久免费精品 | 91视频麻豆| 免费网站黄 | 国产系列精品av | 日韩在线观看中文字幕 | 欧美 日韩 性 | 中文字幕av网站 | 手机av在线不卡 | 91高清在线看 | 欧美在线aaa | 人人狠狠综合久久亚洲 | 日韩欧美在线国产 | 国产91精品看黄网站 | 久操视频在线播放 | 久久综合五月天 | 91久久国产综合精品女同国语 | 在线免费成人 | 不卡av电影在线 | 久久精彩 | 丁香婷婷激情网 | 激情黄色一级片 | 精品国产乱码久久久久久久 | 久久免费成人精品视频 | 日韩专区在线播放 | 日韩最新在线 | www.99av| 国产精品大片在线观看 | 国产黄色a | 国产日韩欧美视频在线观看 | www..com毛片 | 亚洲精品456在线播放第一页 | 国产精品一区二区在线观看 | 91一区啪爱嗯打偷拍欧美 | 99久久综合精品五月天 | 在线视频手机国产 | 久久午夜羞羞影院 | www.888.av| www.夜夜| 国产精品综合在线观看 | 综合色站导航 | 久久99九九99精品 | 91麻豆精品国产91久久久久久 | 97人人视频 | 久久久久影视 | 国产糖心vlog在线观看 | 在线观看精品国产 | 免费成人av在线看 | 国产精品一区二区三区99 | 久久国产精品影视 | 亚州成人av在线 | 久久怡红院 | 国产亚洲欧美精品久久久久久 | 国产精品女同一区二区三区久久夜 | 日韩精品一区二区三区高清免费 | 色久av | 国产成人黄色av | 久草影视在线 | 亚洲黄色av一区 | 国产vs久久 | 欧美性另类 | 999久久久久久久久久久 | 欧美亚洲国产一卡 | 一级α片免费看 | 国产一区二区久久久久 | av一级免费 | 国产精品一区二区三区在线 | 精品国产aⅴ一区二区三区 在线直播av | 精品黄色在线观看 | 香蕉视频啪啪 | 日韩av午夜在线观看 | 天天久久夜夜 | 国产福利一区二区三区视频 | 波多野结衣电影久久 | 国产黄大片 | 91精品视频在线观看免费 | av无限看 | 黄色国产在线 | 日韩精品免费在线视频 | 久久激五月天综合精品 | 久久综合久久综合这里只有精品 | 在线电影 一区 | 中文字幕一区在线 | 日韩av中文在线观看 | 黄色大全免费网站 | 91亚洲国产成人 | 亚洲视频精品在线 | 中文久久精品 | 97免费中文视频在线观看 | 成人欧美一区二区三区黑人麻豆 | www.色午夜| 999久久久 | 色操插| 中文字幕在线观看视频一区 | 成片人卡1卡2卡3手机免费看 | 亚洲国产精品成人女人久久 | 国产精彩视频 | 国产高清福利在线 | 天天天天射 | 狠狠操欧美 | 最近更新的中文字幕 | 在线视频观看成人 | 激情片av| 在线电影日韩 | 中文字幕免费观看视频 | 国产免费叼嘿网站免费 | 免费男女网站 | 97av在线视频免费播放 | 国产综合片 | 成人一区二区在线观看 | 久久人91精品久久久久久不卡 | 五月婷在线视频 | 国产视频欧美视频 | 开心婷婷色 | 欧美资源| 91久久一区二区 | 欧美影片 | 久久精品免费 | 啪啪免费观看网站 | 免费色视频网站 | 婷婷在线精品视频 | 五月婷影院 | 久久福利 | 99免费看片 | 国产精品综合久久 | 精品久久久成人 | 精品国产理论片 | 999国内精品永久免费视频 | 欧美午夜a | 99re久久资源最新地址 | 精品久久1 | 久久亚洲区 | 欧美经典久久 | 三级黄免费看 | 中文字幕久久久精品 | 亚洲一区二区精品视频 | 日韩精品中文字幕在线观看 | 中文字幕在线高清 | 51久久夜色精品国产麻豆 | 日韩美女黄色片 | 国产精品久久久久久久午夜片 | 91一区啪爱嗯打偷拍欧美 | 日韩经典一区二区三区 | 国产精品一区在线播放 | www.香蕉视频在线观看 | 国产精品一区二区白浆 | 国产视频每日更新 | 狠狠色丁香久久婷婷综合丁香 | 国产精品激情在线观看 | 涩涩色亚洲一区 | 99视频精品视频高清免费 | 久久国产精品精品国产色婷婷 | 亚洲五月激情 | 精品一区91 | 久久久99精品免费观看app | 麻豆国产在线视频 | 国内成人av | 亚洲理论片在线观看 | 在线看片成人 | 亚洲国产精品99久久久久久久久 | 日韩欧美99 | 亚洲人人av | 人人搞人人搞 | www.久久com | 中文字幕乱码电影 | 西西大胆啪啪 | 在线中文字幕视频 | 日韩黄色中文字幕 | 亚洲一区网 | 黄色在线免费观看网址 | 国产麻豆精品一区二区 | 日韩在线观看免费 | 天天干天天拍天天操 | 免费在线观看av不卡 | 亚洲精品久久久久久久蜜桃 | 国产三级视频 | 久久你懂得 | 国偷自产视频一区二区久 | 一区二区伦理 | 五月婷婷色综合 | 天堂网在线视频 | 久久8精品 | 久久久久国产成人免费精品免费 | 国产人成在线视频 | 三级av小说 | sm免费xx网站 | 国产xx视频 | 国产精品一区二区三区观看 | 丁香在线视频 | 伊人天天狠天天添日日拍 | 最近中文字幕完整视频高清1 | 中文字幕av在线电影 | 91九色在线观看视频 | 久久99精品久久久久久秒播蜜臀 | 日韩有码第一页 | 国产精品精品 | 在线免费观看黄色大片 | 黄色大全免费观看 | 国产成本人视频在线观看 | 午夜精品一区二区三区在线播放 | 色婷婷成人网 | 免费看v片网站 | 亚洲精品久久视频 | 精品视频在线观看 | 东方av免费在线观看 | 免费日韩av电影 | 日本三级国产 | 99国产在线视频 | www.亚洲| 欧美三级免费 | 91福利影院在线观看 | 国产精品久久免费看 | 高清有码中文字幕 | 国产专区视频 | 久久久久久久久久久久久久av | 福利视频| 亚洲精品网址在线观看 | 亚洲午夜剧场 | 久久精视频 | 国产精品午夜8888 | 97视频免费在线看 | 免费看污在线观看 | 久久99久国产精品黄毛片入口 | 欧美色综合久久 | 久久精品视频免费 | 狠狠色免费 | 久久久午夜精品福利内容 | 中文字幕乱在线伦视频中文字幕乱码在线 | 麻豆精品传媒视频 | 狠狠狠狠狠狠狠狠 | 中文字幕在线观看视频一区二区三区 | 波多野结衣精品在线 | 久久亚洲免费 | 五月婷婷激情网 | 丝袜美女在线 | 99re6热在线精品视频 | 日韩欧美在线综合网 | 亚洲精品国偷自产在线99热 | 婷婷在线观看视频 | 一区二区三区电影在线播 | 欧美日产在线观看 | 国产精品手机在线观看 | 91九色视频观看 | 在线观看网站黄 | 国产精品99久久99久久久二8 | 免费男女羞羞的视频网站中文字幕 | 国产成人精品一区二区三区在线观看 | 久久色网站 | 亚洲欧美在线综合 | 缴情综合网五月天 | 免费进去里的视频 | 激情亚洲综合在线 | 免费福利视频网站 | 97电影在线观看 | 2020天天干夜夜爽 | 亚洲欧美经典 | 国产99久久久国产精品免费看 | 国产区高清在线 | 精品xxx | 高潮毛片无遮挡高清免费 | 精品国产激情 | 国产在线高清 | 在线免费观看国产视频 | 色橹橹欧美在线观看视频高清 | 夜夜躁狠狠躁日日躁视频黑人 | 人人澡人人添人人爽一区二区 | 中文字幕在线观看播放 | 亚洲欧美成人网 | 日本一区二区三区免费看 | 久久精彩 | 欧美一级在线看 | 四虎影视精品永久在线观看 | 久久国产一区二区 | 国产99一区视频免费 | 91丨九色丨蝌蚪丨老版 | 亚洲日日射 | 亚洲一区免费在线 | 亚洲免费高清视频 | 91视频国产免费 | 在线免费观看羞羞视频 | 国产精品99久久久精品免费观看 | 亚洲欧美成人网 | 在线一二区 | 99久久精品国产网站 | 久久精品视频在线免费观看 | 久久黄页| 在线国产能看的 | 韩国av免费看 | 日韩中文在线字幕 | 久久综合加勒比 | 日本激情视频中文字幕 | 日韩簧片在线观看 | 97av视频| 精品日韩在线 | 天天插天天色 | 国外调教视频网站 | 国产黄色片免费观看 | 欧美精品中文字幕亚洲专区 | 青草视频免费观看 | 免费色av | 久久精品香蕉 | 91精品啪在线观看国产线免费 | 午夜精品一区二区三区在线播放 | 狠狠操狠狠 | 亚洲最新视频在线 | 91视频在线免费 | 999久久国产 | 欧美日韩国产在线一区 | 亚洲高清视频在线 | 国产人成在线视频 | 欧美三级高清 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 日日夜夜操操 | 玖玖玖国产精品 | 成人黄在线 | 五月天六月婷 | 最近中文字幕国语免费av | 国产黄网站在线观看 | 成人久久 | 久久久久99999 | 成人亚洲精品国产www | 在线精品一区二区 | 在线日本v二区不卡 | 国产高清 不卡 | 亚洲精品视频在线观看网站 | 精品电影一区 | 日本最新高清不卡中文字幕 | 九九免费观看全部免费视频 | 亚洲丝袜一区二区 | 久久黄色成人 | 国产精品一区二区三区久久 | 伊人中文网 | 精品高清美女精品国产区 | 国产精品原创视频 | 日韩av在线看 | a黄色片在线观看 | 综合黄色网 | 亚洲v精品 | a√国产免费a | 国产精品国产自产拍高清av | 天天精品视频 | 久久无码av一区二区三区电影网 | 中文日韩在线 | 99精品黄色片免费大全 | 久久综合久久88 | 免费在线黄 | 丁香av在线 | 不卡的一区二区三区 | 有码视频在线观看 | 人人精品久久 | 中文字幕人成不卡一区 | 一区二区欧美在线观看 | 在线观看aaa | 婷婷在线五月 | 久久久久久草 | 亚洲国产精品成人精品 | 自拍超碰在线 | 日本久久不卡视频 | 国产精品资源在线 | 精品欧美一区二区精品久久 | 蜜臀久久99精品久久久无需会员 | 久久久国产一区 | 高清av免费看 | 中文字幕久久精品一区 | 久久永久视频 | 毛片网站免费在线观看 | 欧美在线视频不卡 | 亚洲乱码精品 | 亚洲黄色成人av | 国产精品久久久久婷婷二区次 | 国产精品一区二区av日韩在线 | 欧洲亚洲激情 | 激情中文字幕 | 久久国产热视频 | 91av在线免费播放 | 永久免费观看视频 | 天天天干天天射天天天操 | 日韩在线视频国产 | 欧美成人精品欧美一级乱黄 | 色黄视频免费观看 | 日日夜夜人人精品 | 欧美-第1页-屁屁影院 | 99精品国产高清在线观看 | 国产精品一区二区视频 | 久草在线视频在线观看 | 免费av片在线 | 国产精品久久精品国产 | 免费黄色激情视频 | 毛片99 | 欧美大片aaa | 丁香在线观看完整电影视频 | 国产久草在线观看 | 日本中文字幕视频 | 久久成人午夜 | 免费观看成人网 | 国产高清在线永久 | 婷婷丁香激情综合 | 久久不射电影网 | 最近日本中文字幕a | 2021国产精品 | 国产男女爽爽爽免费视频 | 日韩精品不卡在线 | 精品成人网| 亚洲成人软件 | 久久免费公开视频 | 色插综合| 亚洲国产成人在线观看 | 伊人久久国产 | 成人免费xxxxxx视频 | 麻豆传媒视频在线 | 亚洲激情在线 | 日色在线视频 | 亚洲男男gⅴgay双龙 | 欧美精品一级视频 | 日韩三区在线观看 | 成人午夜电影网 | www.夜色.com| 久草在线免费看视频 | 亚洲精品中文在线 | 国产91在线看 | 欧美孕妇视频 | 国产精品黄色影片导航在线观看 | 午夜少妇一区二区三区 | 久久久久五月 | 亚洲精品午夜国产va久久成人 | 99精品视频免费看 | 日韩精品网址 | 欧美日韩性视频 | 九九热免费观看 | 久久特级毛片 | 人人舔人人射 | 欧美精品久久久久久久久久丰满 | 国产精品永久免费在线 | 69国产在线观看 | 国产免费国产 | 国产精品视频在线观看 | 久黄色| 婷婷.com| 97超碰在线人人 | 免费av网址在线观看 | 黄色av电影 | 日韩www在线 | 伊人电影在线观看 | 成年人精品 | 黄色在线观看www | 玖玖在线精品 | 四虎成人精品 | 播五月婷婷 | 日韩欧美电影 | 4438全国亚洲精品在线观看视频 | 亚洲激情视频在线观看 | 国产精品久久二区 | 2022久久国产露脸精品国产 | 久久99精品久久久久蜜臀 | 亚洲精品国偷拍自产在线观看 | www麻豆视频| 国产麻豆剧果冻传媒视频播放量 | 欧美日韩在线第一页 | 丁香综合网| 国产片网站 | 国产群p | 国产精品一区二区中文字幕 | 国产视频中文字幕在线观看 | 国产福利一区二区三区视频 | 激情综合中文娱乐网 | 激情黄色av | 97影视| 色婷婷成人| 午夜精品一区二区三区免费视频 | 在线亚洲午夜片av大片 | 免费进去里的视频 | 又大又硬又黄又爽视频在线观看 | 婷婷精品国产欧美精品亚洲人人爽 | 免费av网址大全 | 九九九免费视频 | 国产a视频免费观看 | 91中文字幕网 | 国产精品视频永久免费播放 | 日韩欧美视频二区 | 久久免费福利视频 | 日韩在线一级 | 亚洲永久av | 精品国产亚洲日本 | 亚洲欧洲精品一区二区精品久久久 | 日本不卡一区二区三区在线观看 | 国产黄色一级片 | 国产精品自产拍在线观看中文 | 色爱区综合激月婷婷 | 91在线视频免费 | 亚洲免费一级电影 | 精品一区二区日韩 | 国产黄网站在线观看 | 五月激情片 | 免费看的黄色录像 | 亚洲激情 欧美激情 | 国产精品久久久久9999 | 91九色性视频 | 久久久五月婷婷 | 成人 亚洲 欧美 | 色人久久| 国产不卡免费视频 | 久久手机在线视频 | 91麻豆精品一区二区三区 | 国产精品久久久久久吹潮天美传媒 | 久久资源在线 | 日韩在线视频网站 | 国产日韩欧美在线影视 | 午夜av网站 | 国产乱对白刺激视频在线观看女王 | 激情丁香 | 欧美亚洲成人xxx | 一区三区视频在线观看 | 日韩电影在线观看一区 | 亚洲精品中文字幕视频 | 日韩理论在线观看 | 中文字幕在线观看完整 | 五月婷香蕉久色在线看 | 久久久久久国产精品999 | 亚洲最大成人网4388xx | 免费中午字幕无吗 | 成人免费av电影 | 视频国产在线观看18 | 97网站| 免费人成网ww44kk44 | 黄色福利视频网站 | 91麻豆精品国产自产在线游戏 | 99久在线精品99re8热视频 | 丁香六月伊人 | 国产精品视频线看 | 中日韩欧美精彩视频 | 亚州精品成人 | 国产精品久久电影观看 | 日日干网 | 日韩欧美高清视频在线观看 | 奇米影视8888 | 欧美影片 | 欧美亚洲成人xxx | 黄色三级免费看 | 国产一区高清在线 | 国产精品一区二区免费在线观看 | 日韩成人免费在线观看 | 国产亚洲午夜高清国产拍精品 | 国产精品美女视频网站 | 免费高清在线视频一区· | 亚洲成人频道 | 美女网站在线 | 国产视频久久久久 | 久草线 | 免费观看www7722午夜电影 | 国产精品日韩在线观看 | 国产做爰视频 | 色.www | 国产精品成人a免费观看 | 日韩久久久久久久久久 | av中文字幕不卡 | 久久一区二区免费视频 | 精品在线二区 | 中文字幕精品一区二区精品 | 九九爱免费视频在线观看 | www色片 | 欧美巨乳网 | 成人黄色片免费 | 手机成人免费视频 | 一级免费黄视频 | 久久激情五月激情 | 国产裸体视频bbbbb | 狠狠干夜夜 | 欧美一级黄色片 | 黄色毛片一级片 | 亚洲精品99久久久久中文字幕 | 日韩成人不卡 | 伊人婷婷色| 男女全黄一级一级高潮免费看 | 欧美少妇的秘密 | 欧美激精品 | 国产人成看黄久久久久久久久 | 欧美在线视频第一页 | 久久精品aaa | 中文在线最新版天堂 | 最近免费在线观看 | 国产午夜精品一区二区三区在线观看 | 91人网站 | 中文国产在线观看 | 国产99久久精品一区二区300 | 亚洲激情影院 | 国产精品中文 | 九九久久电影 | 亚洲精品人人 | 丁香六月天 | 成人av电影在线观看 | 国产精品一区专区欧美日韩 | 九九热久久久 | 我要看黄色一级片 | 视频一区二区三区视频 | 一区精品久久 | 国产精品白丝av | 一区二区不卡 | 日韩美在线观看 | 视频成人免费 | 免费看的国产视频网站 | 国产伦理久久精品久久久久_ | 国产视频资源在线观看 | 91一区二区三区久久久久国产乱 | 成人久久久电影 | 韩日电影在线 | 日本高清中文字幕有码在线 | 欧美日韩亚洲在线观看 | 久久成人麻豆午夜电影 | 国产精品人成电影在线观看 | 麻豆手机在线 | 亚洲一区二区三区四区精品 | 免费高清看电视网站 | 99久精品 | 午夜av色 | 午夜av一区二区三区 | 综合亚洲视频 | 日韩 精品 一区 国产 麻豆 | 日韩av在线影视 | 狠狠干天天干 | 国产高清av | 久久久片 | 99久久精品免费一区 | 国产亚洲成人网 | 日韩特黄av | 青草视频在线 | 久久1区 | h视频在线看 | 四虎成人精品在永久免费 | 97超碰免费在线观看 | 久久精品视频在线观看 | 99视频偷窥在线精品国自产拍 | 中文字幕日韩av | 国产玖玖在线 | 麻豆精品在线视频 | 国产少妇在线观看 | 国产黄色a| 久草在线一免费新视频 | 人人干人人艹 | 天天激情综合网 | 天天爱综合| 日韩欧美高清免费 | 亚洲aaa级| www.色婷婷.com | 九九99| h网站免费在线观看 | 欧女人精69xxxxxx | 亚洲精品久久激情国产片 | 天天综合成人网 | 久久这里只有精品久久 | 久久精品亚洲精品国产欧美 | 久草免费在线观看 | 日韩av视屏在线观看 | 亚洲欧洲在线视频 | 在线看成人片 | 美女视频黄频 | 中文字幕视频网站 | 免费观看黄 | 精品国产一区在线观看 | 青青久草在线视频 | 久久国产精品系列 | 一级a性色生活片久久毛片波多野 | 一区二区亚洲精品 | 国产精品一区二区精品视频免费看 | 婷婷5月激情5月 | 91网站观看 | 偷拍区另类综合在线 | 国产99爱| 久久最新网址 | 成人久久精品视频 | 欧美日韩二区在线 | 日韩免费网址 | 国产又粗又猛又色又黄网站 | 91大神精品视频 | 黄色avwww | 久久久高清一区二区三区 | 美女视频久久黄 | 国产精品女主播一区二区三区 | 国产高清视频色在线www | 日韩欧美不卡 | 黄色毛片观看 | 在线影视 一区 二区 三区 | 国内精品久久久久影院男同志 | 国产精品久久亚洲 | 国产一区二区三区免费在线观看 | 美女久久久久 | 欧美一二区在线 | 亚洲精品大片www | 久久草视频 | 国产精品免费观看久久 | 在线视频 你懂得 | 黄色亚洲 | 99国产高清 | 欧美一级电影片 | www.久久99 | 日本黄色免费网站 | 四虎精品成人免费网站 | 久久精品99精品国产香蕉 | 91av免费在线观看 | 国产精品中文久久久久久久 | 久久电影国产免费久久电影 | 日韩国产精品久久久久久亚洲 | 久久精品欧美视频 | 91成人短视频在线观看 | 99久久婷婷国产综合精品 | 久久久亚洲精品 | 在线视频 精品 | 日韩中文字幕在线 | 色片网站在线观看 | 91在线观看黄 | www五月天 | 色爱区综合激月婷婷 | 天天爱天天草 | 欧美精品一区二区免费 | 91在线看网站 | 88av色| 色婷婷狠狠五月综合天色拍 | 国产一区自拍视频 | 国产精品一区免费看8c0m | 国产成人一区二区啪在线观看 | 黄色福利| 久草久 | 摸bbb搡bbb搡bbbb | 久久午夜电影网 | 在线有码中文字幕 | 欧美日韩国产二区三区 | 国产在线最新 | 福利av在线| 亚洲一区二区黄色 | 日韩视频免费观看高清 | 天天艹天天爽 | 99久热在线精品视频观看 | 欧美激情精品久久久久久免费印度 | 国产一区二区精品久久91 | 91福利社区在线观看 | 少妇高潮冒白浆 | 国产精品久久久久高潮 | 四虎影视成人永久免费观看视频 | 91久久奴性调教 | 99久久精品免费看国产四区 | 中文字幕日韩一区二区三区不卡 | 五月天堂色 | 西西444www| 99久久精品久久亚洲精品 | 久久99国产一区二区三区 | 在线电影 一区 | 在线91av| 久久av网| 美女免费视频观看网站 | 中文字幕免费高清在线 | 天天夜操 | 91成人免费看片 | 久草影视在线观看 | 国产一线二线三线在线观看 | 国产精品久久久久久久久婷婷 | 欧美成人区 | 成人免费色 | 久久美女免费视频 | 久久久三级视频 | 日日日爽爽爽 | 欧美午夜理伦三级在线观看 | 久久久久久久网站 | 欧美日韩在线免费视频 | 国产xx视频| 91精品视频网站 | 亚洲精品高清视频在线观看 | 久久精品国产一区二区 | 国产资源免费 | 国产精品美女久久久 | 麻豆精品传媒视频 | 婷婷激情小说网 | 国产精久久久久久妇女av | 激情小说 五月 | 国产91精品看黄网站在线观看动漫 | 精品国产一区二区三区在线观看 | 久草视频首页 | 丝袜美腿亚洲综合 | 在线视频99| 欧美日韩成人一区 | 又黄又爽又刺激 | 久久精品视频免费播放 | 久草精品资源 | 午夜美女福利 | 午夜av激情 | 久久九九视频 | 天天色天天色 | 午夜视频免费播放 | 欧美韩国日本在线观看 | 久久久在线 |