diff --git a/.gitignore b/.gitignore
index 5894c99b9..0289a0bdf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -41,6 +41,11 @@ frontend/src/xpack
backend/xpack
backend/router/entry_xpack.go
backend/server/init_xpack.go
+plugins/openresty/waf/db
+plugins/openresty/waf/data
+plugins/openresty/waf/sites
+plugins/openresty/waf/conf/websites.json
+
.history/
dist/
diff --git a/plugins/openresty/waf/conf/global.json b/plugins/openresty/waf/conf/global.json
new file mode 100644
index 000000000..54d372f8b
--- /dev/null
+++ b/plugins/openresty/waf/conf/global.json
@@ -0,0 +1,160 @@
+{
+ "waf": "on",
+ "mode": "protection",
+ "secret": "qwer1234",
+ "redis": {
+ "state": "off",
+ "host": "127.0.0.1",
+ "port": 6379,
+ "password": "Calong@2015",
+ "ssl": false,
+ "poolSize": 10
+ },
+ "ipWhite": {
+ "state": "on"
+ },
+ "ipBlack": {
+ "state": "on",
+ "code": 403,
+ "action": "deny",
+ "type": "ipBlack",
+ "res": "ip"
+ },
+ "urlWhite": {
+ "state": "on"
+ },
+ "urlBlack": {
+ "type": "urlBlack",
+ "state": "on",
+ "code": 403,
+ "action": "deny"
+ },
+ "uaWhite": {
+ "state": "off"
+ },
+ "uaBlack": {
+ "type": "uaBlack",
+ "state": "on",
+ "code": 403,
+ "action": "deny"
+ },
+ "notFoundCount": {
+ "state": "on",
+ "type": "notFoundCount",
+ "threshold": 10,
+ "duration": 60,
+ "action": "deny",
+ "ipBlock": "on",
+ "ipBlockTime": 600
+ },
+ "methodWhite": {
+ "type": "methodWhite",
+ "state": "on",
+ "code": 444,
+ "action": "deny"
+ },
+ "bot": {
+ "state": "on",
+ "type": "bot",
+ "uri": "/1pwaf/bot/trap",
+ "action": "REDIRECT_JS",
+ "ipBlock": "on",
+ "ipBlockTime": 600
+ },
+ "geoRestrict": {
+ "state": "on",
+ "rules": [],
+ "action": "deny"
+ },
+ "defaultIpBlack": {
+ "state": "on",
+ "type": "defaultIpBlack",
+ "code": 444,
+ "action": "deny"
+ },
+ "xss": {
+ "state": "on",
+ "type": "xss",
+ "code": 444,
+ "action": "deny"
+ },
+ "sql": {
+ "state": "on",
+ "type": "sql",
+ "code": 444,
+ "action": "deny"
+ },
+ "cc": {
+ "state": "on",
+ "type": "cc",
+ "rule": "cc",
+ "tokenTimeOut": 1800,
+ "threshold": 100,
+ "duration": 60,
+ "action": "deny",
+ "ipBlock": "on",
+ "ipBlockTime": 600
+ },
+ "ccurl": {
+ "state": "on",
+ "type": "urlcc",
+ "rule": "urlcc",
+ "action": "deny",
+ "ipBlock": "on",
+ "ipBlockTime": 600
+ },
+ "attackCount": {
+ "state": "on",
+ "type": "attackCount",
+ "threshold": 20,
+ "duration": 60,
+ "action": "deny",
+ "ipBlock": "on",
+ "ipBlockTime": 600
+ },
+ "fileExtCheck": {
+ "state": "on",
+ "action": "deny",
+ "code": 403,
+ "type": "fileExtCheck",
+ "extList": [
+ "php",
+ "jsp",
+ "asp",
+ "exe",
+ "sh"
+ ]
+ },
+ "cookie": {
+ "type": "cookie",
+ "state": "on",
+ "code": 403,
+ "action": "deny",
+ "ipBlock": "on",
+ "ipBlockTime": 600
+ },
+ "header": {
+ "state": "on",
+ "type": "header",
+ "code": 403,
+ "action": "deny",
+ "ipBlock": "on",
+ "ipBlockTime": 600
+ },
+ "defaultUaBlack": {
+ "type": "defaultUaBlack",
+ "state": "on",
+ "code": 403,
+ "ipBlock": "on",
+ "ipBlockTime": 600,
+ "action": "deny"
+ },
+ "args": {
+ "type": "args",
+ "state": "on",
+ "code": 403,
+ "action": "deny",
+ "ipBlock": "on",
+ "ipBlockTime": 600
+ }
+}
diff --git a/plugins/openresty/waf/conf/waf.conf b/plugins/openresty/waf/conf/waf.conf
new file mode 100644
index 000000000..db4086a81
--- /dev/null
+++ b/plugins/openresty/waf/conf/waf.conf
@@ -0,0 +1,11 @@
+lua_shared_dict dict_locks 100k;
+lua_shared_dict dict_req_count 10m;
+lua_shared_dict waf 30m;
+lua_shared_dict waf_black_ip 10m;
+lua_shared_dict waf_limit 10m;
+lua_shared_dict waf_accesstoken 10m;
+
+lua_package_path "/usr/local/openresty/1pwaf/?.lua;/usr/local/openresty/1pwaf/lib/?.lua;;";
+init_by_lua_file /usr/local/openresty/1pwaf/init.lua;
+access_by_lua_file /usr/local/openresty/1pwaf/waf.lua;
+log_by_lua_file /usr/local/openresty/1pwaf/log_and_traffic.lua;
\ No newline at end of file
diff --git a/plugins/openresty/waf/config.lua b/plugins/openresty/waf/config.lua
new file mode 100644
index 000000000..268405fb4
--- /dev/null
+++ b/plugins/openresty/waf/config.lua
@@ -0,0 +1,155 @@
+local file_utils = require "file"
+local lfs = require "lfs"
+local cjson = require "cjson"
+
+local read_rule = file_utils.read_rule
+local read_file2string = file_utils.read_file2string
+local read_file2table = file_utils.read_file2table
+local list_dir = lfs.dir
+local attributes = lfs.attributes
+local match_str = string.match
+
+local waf_dir = "/usr/local/openresty/1pwaf/"
+local config_dir = waf_dir .. 'conf/'
+local global_rule_dir = waf_dir .. 'rules/'
+local site_dir = waf_dir .. 'sites/'
+
+local _M = {}
+local config = {}
+
+local function init_sites_config()
+ local site_config = {}
+ local site_rules = {}
+ for entry in list_dir(site_dir) do
+ if entry ~= "." and entry ~= ".." then
+ local site_path = site_dir .. entry .. "/"
+ if attributes(site_path, "mode") == "directory" then
+ local site_key = entry
+ for s_entry in list_dir(site_path) do
+ local s_entry_path = site_path .. s_entry
+ if attributes(s_entry_path, "mode") == "file" and s_entry == "config.json" then
+ local s_config = read_file2table(s_entry_path)
+ site_config[site_key] = s_config
+ end
+ if attributes(s_entry_path, "mode") == "directory" and s_entry == "rules" then
+ local s_rules = {}
+ local rule_dir = s_entry_path .. "/"
+ for r_file in list_dir(rule_dir) do
+ if r_file ~= "." and r_file ~= ".." then
+ local rule_path = rule_dir .. r_file
+ local rule_type = match_str(r_file, "(.-)%.json$")
+ if attributes(rule_path, "mode") == "file" then
+ local s_rule = nil
+ if rule_type == "methodWhite" then
+ s_rule = read_rule(rule_dir, rule_type, true)
+ else
+ s_rule = read_rule(rule_dir, rule_type)
+ end
+ s_rules[rule_type] = s_rule
+ end
+ end
+ end
+ site_rules[site_key] = s_rules
+ end
+ end
+ end
+ end
+ end
+ ngx.log(ngx.NOTICE, "Load config" .. cjson.encode(site_config))
+ config.site_config = site_config
+ ngx.log(ngx.NOTICE, "Load rules" .. cjson.encode(site_rules))
+ config.site_rules = site_rules
+end
+
+local function ini_waf_info()
+ local waf_info = read_file2table(waf_dir .. 'waf.json')
+ if waf_info then
+ ngx.log(ngx.NOTICE, "Load " .. waf_info.name .. " Version:" .. waf_info.version)
+ end
+end
+
+local function init_global_config()
+ local global_config = read_file2table(config_dir .. 'global.json')
+ config.global_config = global_config
+ config.isProtectionMode = global_config["mode"] == "protection" and true or false
+
+ local rules = {}
+ rules.uaBlack = read_rule(global_rule_dir, "uaBlack")
+ rules.uaWhite = read_rule(global_rule_dir, "uaWhite")
+ rules.urlBlack = read_rule(global_rule_dir, "urlBlack")
+ rules.urlWhite = read_rule(global_rule_dir, "urlWhite")
+ rules.ipBlack = read_rule(global_rule_dir, "ipBlack")
+ rules.ipWhite = read_rule(global_rule_dir, "ipWhite")
+ rules.args = read_rule(global_rule_dir, "args")
+ rules.cookie = read_rule(global_rule_dir, "cookie")
+ rules.defaultUaBlack = read_rule(global_rule_dir, "defaultUaBlack")
+ rules.header = read_rule(global_rule_dir, "header")
+
+ config.global_rules = rules
+
+ local html_res = {}
+ local htmDir = waf_dir .. "html/"
+ html_res.slide = read_file2string(htmDir .. "slide.html")
+ html_res.slide_js = read_file2string(htmDir .. "slide.js")
+ html_res.five_second = read_file2string(htmDir .. "5s.html")
+ html_res.five_second_js = read_file2string(htmDir .. "5s.js")
+ html_res.redirect = read_file2string(htmDir .. "redirect.html")
+ html_res.ip = read_file2string(htmDir .. "ip.html")
+
+ config.html_res = html_res
+
+ _M.waf_dir = waf_dir
+ _M.config_dir = config_dir
+end
+
+function _M.load_config_file()
+ ini_waf_info()
+ init_global_config()
+ init_sites_config()
+end
+
+function _M.get_site_config(website_key)
+ return config.site_config[website_key]
+end
+
+function _M.get_site_rules(website_key)
+ return config.site_rules[website_key]
+end
+
+function _M.get_global_config(name)
+ return config.global_config[name]
+end
+
+function _M.get_global_rules(name)
+ return config.global_rules[name]
+end
+
+function _M.is_global_state_on(name)
+ return config.global_config[name]["state"] == "on" and true or false
+end
+
+function _M.is_site_state_on(name)
+ return config.site_config[name]["state"] == "on" and true or false
+end
+
+function _M.get_redis_config()
+ return config.global_config["redis"]
+end
+
+function _M.get_html_res(name)
+ return config.html_res[name]
+end
+
+function _M.is_waf_on()
+ return config.global_config["waf"] == "on" and true or false
+end
+
+function _M.is_redis_on()
+ return config.global_config["redis"] == "on" and true or false
+end
+
+function _M.get_secret()
+ return config.global_config["secret"]
+end
+
+return _M
\ No newline at end of file
diff --git a/plugins/openresty/waf/db.lua b/plugins/openresty/waf/db.lua
new file mode 100644
index 000000000..4a9f92b41
--- /dev/null
+++ b/plugins/openresty/waf/db.lua
@@ -0,0 +1,89 @@
+local config = require "config"
+
+local open_file = io.open
+local exec = os.execute
+local pcall = pcall
+
+local _M = {}
+
+local function init_dir(path)
+ local file = open_file(path, "rb")
+ if not file then
+ exec("mkdir -p " .. path)
+ end
+end
+
+local function check_table(table_name)
+ if wafdb == nil then
+ return false
+ end
+ local stmt = wafdb:prepare("SELECT COUNT(*) FROM sqlite_master where type='table' and name=?")
+ local rows = 0
+ if stmt ~= nil then
+ stmt:bind_values(table_name)
+ stmt:step()
+ rows = stmt:get_uvalues()
+ stmt:finalize()
+ end
+ return rows > 0
+end
+
+function _M.init_db()
+ local ok, sqlite3 = pcall(function()
+ return require "lsqlite3"
+ end)
+ if not ok then
+ return false
+ end
+ if wafdb then
+ return false
+ end
+ local path = config.waf_dir .. "db/"
+ init_dir(path)
+ local db_path = path .. "1pwaf.db"
+ if wafdb == nil or not wafdb:isopen() then
+ wafdb = sqlite3.open(db_path)
+ if wafdb == nil then
+ return false
+ end
+ wafdb:exec([[PRAGMA journal_mode = wal]])
+ wafdb:exec([[PRAGMA synchronous = 0]])
+ wafdb:exec([[PRAGMA page_size = 8192]])
+ wafdb:exec([[PRAGMA journal_size_limit = 2147483648]])
+ end
+ local status = {}
+ if not check_table("attack_log") then
+ status = wafdb:exec([[
+ CREATE TABLE attack_log (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ ip TEXT,
+ ip_city TEXT,
+ ip_country TEXT,
+ ip_subdivisions TEXT,
+ ip_continent TEXT,
+ ip_longitude TEXT,
+ ip_latitude TEXT,
+ time INTEGER,
+ localtime TEXT,
+ server_name TEXT,
+ website_key TEXT,
+ host TEXT,
+ method TEXT,
+ uri TEXT,
+ user_agent TEXT,
+ rule TEXT,
+ nginx_log TEXT,
+ blocking_time INTEGER,
+ action TEXT,
+ msg TEXT,
+ params TEXT,
+ is_block INTEGER
+ )]])
+
+ ngx.log(ngx.ERR, "init db status" .. status)
+ end
+
+ ngx.log(ngx.ERR, "init db success")
+end
+
+return _M
\ No newline at end of file
diff --git a/plugins/openresty/waf/html/5s.html b/plugins/openresty/waf/html/5s.html
new file mode 100644
index 000000000..245ad7708
--- /dev/null
+++ b/plugins/openresty/waf/html/5s.html
@@ -0,0 +1,21 @@
+
+
+
+5s
+
+
+
+
+
+
+
diff --git a/plugins/openresty/waf/html/5s.js b/plugins/openresty/waf/html/5s.js
new file mode 100644
index 000000000..7be80bc94
--- /dev/null
+++ b/plugins/openresty/waf/html/5s.js
@@ -0,0 +1,24 @@
+window.onload = function () {
+ setTimeout(function () {
+ showSuccess();
+ verifySucc();
+ }, 5000);
+
+ function showSuccess() {
+ document.getElementById("loadingText").style.display = "none";
+ document.getElementById("loadingSuccess").style.display = "block";
+ document.querySelector(".loadingSpinner").style.display = "none";
+ }
+
+ function verifySucc() {
+ let xhr = new XMLHttpRequest();
+ xhr.onreadystatechange = function () {
+ if (xhr.readyState === 4 && xhr.status === 200) {
+ window.location.reload();
+ }
+ };
+ const requestUrl = "%s-%s-%s";
+ xhr.open("GET", requestUrl, true);
+ xhr.send();
+ }
+}
\ No newline at end of file
diff --git a/plugins/openresty/waf/html/ip.html b/plugins/openresty/waf/html/ip.html
new file mode 100644
index 000000000..95b3c4f02
--- /dev/null
+++ b/plugins/openresty/waf/html/ip.html
@@ -0,0 +1,29 @@
+
+
+
+ 访问被拒绝
+
+
+
+
+
无法访问
+
+
很抱歉,您的 IP 已被禁止访问
+
+ - 如被误封,请联系网站管理员解封
+
+
+
+
+
+
diff --git a/plugins/openresty/waf/html/redirect.html b/plugins/openresty/waf/html/redirect.html
new file mode 100644
index 000000000..64c776b47
--- /dev/null
+++ b/plugins/openresty/waf/html/redirect.html
@@ -0,0 +1,24 @@
+
+
+
+ 网站防火墙
+
+
+
+
+
+
diff --git a/plugins/openresty/waf/html/slide.html b/plugins/openresty/waf/html/slide.html
new file mode 100644
index 000000000..2b62dfbad
--- /dev/null
+++ b/plugins/openresty/waf/html/slide.html
@@ -0,0 +1,26 @@
+
+
+
+滑动认证
+
+
+
+
+
+
+
diff --git a/plugins/openresty/waf/html/slide.js b/plugins/openresty/waf/html/slide.js
new file mode 100644
index 000000000..d5df91929
--- /dev/null
+++ b/plugins/openresty/waf/html/slide.js
@@ -0,0 +1 @@
+window.onload=function(){(function(){const dragContainer=document.getElementById("dragContainer");const dragBg=document.getElementById("dragBg");const dragText=document.getElementById("dragText");const dragHandler=document.getElementById("dragHandler");const maxHandleOffset=dragContainer.clientWidth-dragHandler.clientWidth;let isVertifySucc=false;initDrag();function initDrag(){dragText.textContent="拖动滑块验证";dragHandler.addEventListener("mousedown",onDragStart);dragHandler.addEventListener("touchstart",onDragStart)}function onDragStart(a){a.preventDefault();if(a.type==="mousedown"||(a.type==="touchstart"&&a.touches.length===1)){document.addEventListener("mousemove",onDragMove);document.addEventListener("touchmove",onDragMove);document.addEventListener("mouseup",onDragEnd);document.addEventListener("touchend",onDragEnd)}}function onDragMove(a){let clientX;if(a.type==="mousemove"){clientX=a.clientX}else if(a.type==="touchmove"&&a.touches.length===1){clientX=a.touches[0].clientX}let containerOffsetX=clientX-dragContainer.getBoundingClientRect().left;let left=containerOffsetX-dragHandler.clientWidth/2;if(left<0){left=0}else if(left>maxHandleOffset){left=maxHandleOffset}dragHandler.style.left=left+"px";dragBg.style.width=dragHandler.style.left}function onDragEnd(){document.removeEventListener("mousemove",onDragMove);document.removeEventListener("touchmove",onDragMove);document.removeEventListener("mouseup",onDragEnd);document.removeEventListener("touchend",onDragEnd);if(!isVertifySucc){let left=dragHandler.offsetLeft;if(left>=maxHandleOffset){verifySucc()}else{dragHandler.style.left="0px";dragBg.style.width="0px"}}}function verifySucc(){isVertifySucc=true;dragText.textContent="验证通过";dragText.style.color="white";dragHandler.setAttribute("class","dragHandlerOkBg");dragHandler.removeEventListener("mousedown",onDragStart);dragHandler.removeEventListener("touchstart",onDragStart);let xhr=new XMLHttpRequest();xhr.onreadystatechange=function(){if(xhr.readyState===4&&xhr.status===200){window.location.reload()}};const requestUrl="%s-%s-%s";xhr.open("GET",requestUrl,true);xhr.send()}})()};
\ No newline at end of file
diff --git a/plugins/openresty/waf/init.lua b/plugins/openresty/waf/init.lua
new file mode 100644
index 000000000..fdac637a3
--- /dev/null
+++ b/plugins/openresty/waf/init.lua
@@ -0,0 +1,9 @@
+local db = require "db"
+local config = require "config"
+
+config.load_config_file()
+
+db.init_db()
+
+
+
diff --git a/plugins/openresty/waf/lib/action.lua b/plugins/openresty/waf/lib/action.lua
new file mode 100644
index 000000000..79ec5a326
--- /dev/null
+++ b/plugins/openresty/waf/lib/action.lua
@@ -0,0 +1,184 @@
+local config = require "config"
+local redis_util = require "redis_util"
+local format_str = string.format
+
+local _M = {}
+
+local function deny(status_code, res)
+ ngx.status = status_code
+ if res then
+ ngx.header.content_type = "text/html; charset=UTF-8"
+ ngx.say(config.get_html_res(res))
+ end
+ ngx.exit(ngx.status)
+end
+
+local function redirect(status_code)
+ ngx.header.content_type = "text/html; charset=UTF-8"
+ ngx.say(config.get_html_res("redirect"))
+ ngx.status = status_code
+ ngx.exit(ngx.status)
+end
+
+local function slide()
+ ngx.header.content_type = "text/html; charset=UTF-8"
+ ngx.header.Cache_Control = "no-cache"
+ ngx.status = 200
+ ngx.say(format_str(config.get_html_res("slide"), ngx.md5(ngx.ctx.ip)))
+ ngx.exit(ngx.status)
+end
+
+local function five_second()
+ ngx.header.content_type = "text/html; charset=UTF-8"
+ ngx.header.Cache_Control = "no-cache"
+ ngx.status = 200
+ ngx.say(format_str(config.get_html_res("five_second"), ngx.md5(ngx.ctx.ip)))
+ ngx.exit(ngx.status)
+end
+
+function _M.block_ip(ip, rule)
+ local ok, err = nil, nil
+ local msg = "拉黑IP : " .. ip .. "国家 " .. ngx.ctx.geoip.country["zh"]
+ if rule then
+ msg = msg .. " 规则 " .. rule.type
+ end
+
+ ngx.log(ngx.ERR, msg)
+
+ if config.redis_on then
+ local red, err1 = redis_util.get_conn()
+ if not red then
+ return nil, err1
+ end
+ local key = "black_ip:" .. ip
+
+ local exists = red:exists(key)
+ if exists == 0 then
+ ok, err = red:set(key, 1)
+ if ok then
+ ngx.ctx.ipBlocked = true
+ else
+ ngx.log(ngx.ERR, "failed to set redis key " .. key, err)
+ end
+ end
+
+ if rule.ipBlockTime > 0 then
+ ok, err = red:expire(key, rule.ipBlockTime)
+ if not ok then
+ ngx.log(ngx.ERR, "failed to expire redis key " .. key, err)
+ end
+ end
+
+ redis_util.close_conn(red)
+ else
+ local wafBlackIp = ngx.shared.waf_black_ip
+ local exists = wafBlackIp:get(ip)
+ if not exists then
+ ok, err = wafBlackIp:set(ip, 1, rule.ipBlockTime)
+ if ok then
+ ngx.ctx.ipBlocked = true
+ else
+ ngx.log(ngx.ERR, "failed to set key " .. ip, err)
+ end
+ elseif rule.ipBlockTime > 0 then
+ ok, err = wafBlackIp:expire(ip, rule.ipBlockTime)
+ if ok then
+ ngx.ctx.ipBlocked = true
+ else
+ ngx.log(ngx.ERR, "failed to expire key " .. ip, err)
+ end
+ end
+ end
+
+ return ok
+end
+
+local function attack_count(config_type)
+ if config_type == "ipBlack" then
+ return
+ end
+ if config.is_global_state_on("attackCount") then
+ local ip = ngx.ctx.ip
+ local attack_config = config.get_global_config("attackCount")
+ local key = ip
+
+ if config.is_redis_on() then
+ key = "cc_attack_count:" .. key
+ local count, _ = redis_util.incr(key, attack_config.duration)
+ if not count then
+ redis_util.set(key, 1, attack_config.duration)
+ elseif count >= attack_config.threshold then
+ _M.block_ip(ip, attack_config)
+ return
+ end
+ else
+ key = ip .. "attack"
+ local limit = ngx.shared.waf_limit
+ local count, _ = limit:incr(key, 1, 0, attack_config.duration)
+
+ if not count then
+ limit:set(key, 1, attack_config.duration)
+ elseif count >= attack_config.threshold then
+ _M.block_ip(ip, attack_config)
+ return
+ end
+ end
+ end
+end
+
+function _M.exec_action(rule_config, match_rule, data)
+ local action = rule_config.action
+
+ if match_rule then
+ rule_config.rule = match_rule.rule
+ else
+ rule_config.rule = "默认"
+ end
+
+ ngx.ctx.rule_table = rule_config
+ ngx.ctx.action = action
+ ngx.ctx.hitData = data
+ ngx.ctx.isAttack = true
+
+ if rule_config.ipBlock and rule_config.ipBlock == 'on' then
+ _M.block_ip(ngx.ctx.ip, rule_config)
+ end
+
+ if rule_config.type == nil then
+ rule_config.type = "默认"
+ end
+
+ attack_count(rule_config.type)
+
+ local msg = "访问 IP " .. ngx.ctx.ip .. " 访问 URL" .. ngx.var.uri .. " 触发动作 " .. action .. "User-Agent" .. ngx.ctx.ua .. " 规则类型 " .. rule_config.type .. " 规则 " .. rule_config.rule
+ if ngx.ctx.country then
+ msg = "国家" .. ngx.ctx.country["zh"]
+ end
+ if ngx.ctx.city then
+ msg = "省份" .. ngx.ctx.city["zh"]
+ end
+
+ ngx.log(ngx.ERR, msg)
+ if action == "allow" then
+ return
+
+ elseif action == "deny" then
+ if rule_config.code and rule_config.code ~= 444 then
+ deny(rule_config.code, rule_config.res)
+ else
+ deny(444)
+ end
+
+ elseif action == "slide" then
+ slide()
+
+ elseif action == "fives" then
+ five_second()
+
+ else
+ redirect(444)
+ end
+
+end
+
+return _M
diff --git a/plugins/openresty/waf/lib/cc.lua b/plugins/openresty/waf/lib/cc.lua
new file mode 100644
index 000000000..e36ecd175
--- /dev/null
+++ b/plugins/openresty/waf/lib/cc.lua
@@ -0,0 +1,67 @@
+local config = require "config"
+local redis_util = require "redis_util"
+local utils = require "utils"
+
+local _M = {}
+
+function _M.set_access_token(k, v)
+ local secret = config.get_secret()
+ local key = ngx.md5(ngx.ctx.ip .. ngx.var.server_name .. ngx.ctx.website_key
+ .. ngx.ctx.ua .. ngx.ctx.today .. secret)
+ local value = ngx.md5(ngx.time() .. ngx.ctx.ip)
+ --TODO check value
+ if key ~= k then
+ ngx.exit(444)
+ end
+ ngx.log(ngx.ERR, "set cc key: ", key)
+ if config.redis_on then
+ --local prefix = "ac_token:"
+ --redis_util.set(prefix .. accesstoken, accesstoken, timeout)
+ else
+ local limit = ngx.shared.waf_accesstoken
+ limit:set(key, value, 7200)
+ end
+
+ local cookie_expire = ngx.cookie_time(ngx.time() + 86400)
+ ngx.header['Set-Cookie'] = { key .. '=' .. value .. '; path=/; Expires=' .. cookie_expire }
+ ngx.exit(200)
+end
+
+function _M.check_access_token()
+ local secret = config.get_secret()
+ local key = ngx.md5(ngx.ctx.ip .. ngx.var.server_name .. ngx.ctx.website_key
+ .. ngx.ctx.ua .. ngx.ctx.today .. secret)
+ if not ngx.var.http_cookie then
+ return false
+ end
+ local cookies = utils.get_cookie_list(ngx.var.http_cookie)
+ if not cookies then
+ return false
+ end
+ if not cookies[key] then
+ return false
+ end
+ local accesstoken = cookies[key]
+ local value = nil
+
+ if config.redis_on then
+ local prefix = "ac_token:"
+ value = redis_util.get(prefix .. key)
+ if value and value == accesstoken then
+ return true
+ end
+ else
+ local limit = ngx.shared.waf_accesstoken
+ value = limit:get(key)
+ end
+ if value and value == accesstoken then
+ return true
+ end
+ return false
+end
+
+function _M.clear_access_token()
+ ngx.header['Set-Cookie'] = { 'a_token=; path=/; Expires=Thu, 01-Jan-1970 00:00:00 GMT' }
+end
+
+return _M
diff --git a/plugins/openresty/waf/lib/file.lua b/plugins/openresty/waf/lib/file.lua
new file mode 100644
index 000000000..b402c1795
--- /dev/null
+++ b/plugins/openresty/waf/lib/file.lua
@@ -0,0 +1,93 @@
+local cjson = require "cjson"
+local pairs = pairs
+local insert_table = table.insert
+local lower_str = string.lower
+local open_file = io.open
+local decode = cjson.decode
+
+local _M = {}
+
+function _M.read_rule(file_path, file_name, read_all)
+ local file, err = open_file(file_path .. file_name .. ".json", "r")
+ if not file then
+ ngx.log(ngx.ERR, "Failed to open file ", err)
+ return
+ end
+
+ local rules_table = {}
+ local other_table = {}
+ local text = file:read('*a')
+
+ file:close()
+
+ if #text > 0 then
+ local result = decode(text)
+
+ if result then
+ for key, value in pairs(result) do
+ if key == "rules" then
+ for _, r in pairs(value) do
+ if read_all then
+ r.hits = 0
+ r.totalHits = 0
+ insert_table(rules_table, r)
+ else
+ if lower_str(r.state) == 'on' then
+ r.hits = 0
+ r.totalHits = 0
+ insert_table(rules_table, r)
+ end
+ end
+ end
+ else
+ other_table[key] = value
+ end
+ end
+ end
+ end
+
+ return rules_table, other_table
+end
+
+function _M.read_file2table(file_path)
+ local file = open_file(file_path, 'r')
+ if file == nil then
+ return nil
+ end
+ str = file:read("*a")
+ file:close()
+ return decode(str)
+end
+
+function _M.read_file2string(file_path, binary)
+ if not file_path then
+ ngx.log(ngx.ERR, "No file found ", file_path)
+ return
+ end
+
+ local mode = "r"
+ if binary == true then
+ mode = "rb"
+ end
+
+ local file, err = open_file(file_path, mode)
+ if not file then
+ ngx.log(ngx.ERR, "Failed to open file ", err)
+ return
+ end
+
+ local content = ""
+ repeat
+ local chunk = file:read(8192) -- 读取 8KB 的块
+ if chunk then
+ content = content .. chunk
+ else
+ break
+ end
+ until not chunk
+
+ file:close()
+ return content
+end
+
+return _M
\ No newline at end of file
diff --git a/plugins/openresty/waf/lib/geoip.lua b/plugins/openresty/waf/lib/geoip.lua
new file mode 100644
index 000000000..6f2edeb79
--- /dev/null
+++ b/plugins/openresty/waf/lib/geoip.lua
@@ -0,0 +1,51 @@
+local geo = require "resty.maxminddb"
+
+local pcall = pcall
+
+local _M = {}
+local geo_ip_file = "/usr/local/openresty/1pwaf/data/GeoIP.mmdb"
+local black_ip_file = "/usr/local/openresty/1pwaf/data/BlackIP.mmdb"
+
+function _M.init()
+ if not geo.initted() then
+ geo.init({
+ geo_ip = geo_ip_file,
+ black_ip = black_ip_file
+ })
+ end
+end
+
+function _M.is_default_black_ip(ip)
+ local pass, res, err = pcall(geo.lookup, "black_ip", ip)
+ if not pass then
+ ngx.log(ngx.ERR, 'failed to lookup black ip,reason:', err)
+ elseif res and res['isBlack'] then
+ return true
+ end
+ return false
+end
+
+function _M.lookup(ip)
+ local geo_res = {
+ iso = "",
+ country = "",
+ city = "",
+ longitude = 0,
+ latitude = 0,
+ province = ""
+ }
+ local pass, res, err = pcall(geo.lookup, "geo_ip", ip)
+ if not pass then
+ ngx.log(ngx.ERR, 'failed to lookup by ip,reason:', err)
+ elseif res and res['iso'] then
+ geo_res.iso = res['iso']
+ geo_res.country = res['country']
+ geo_res.province = res['province']
+ geo_res.longitude = res['longitude']
+ geo_res.latitude = res['latitude']
+ return geo_res
+ end
+ return geo_res
+end
+
+return _M
diff --git a/plugins/openresty/waf/lib/lib.lua b/plugins/openresty/waf/lib/lib.lua
new file mode 100644
index 000000000..47e106877
--- /dev/null
+++ b/plugins/openresty/waf/lib/lib.lua
@@ -0,0 +1,622 @@
+local redis_util = require "redis_util"
+local action = require "action"
+local cc = require "cc"
+local fileUtils = require "file"
+local ck = require "resty.cookie"
+local geo = require "geoip"
+local libinjection = require "resty.libinjection"
+local config = require "config"
+local cjson = require "cjson"
+local utils = require "utils"
+
+local pairs = pairs
+local ipairs = ipairs
+local tostring = tostring
+local type = type
+local next = next
+local tonumber = tonumber
+local concat_table = table.concat
+local ngx_re_find = ngx.re.find
+local decode = cjson.decode
+local ngx_re_gmatch = ngx.re.gmatch
+local ngx_re_match = ngx.re.match
+
+local exec_action = action.exec_action
+
+local _M = {}
+
+local function is_global_state_on(name)
+ return config.is_global_state_on(name)
+end
+
+local function is_site_state_on(name)
+ local site_config = config.get_site_config(ngx.ctx.website_key)
+ if site_config ~= nil then
+ return site_config[name]["state"] == "on" and true or false
+ end
+ return true
+end
+
+local function is_state_on(name)
+ return is_site_state_on(name) and is_global_state_on(name)
+end
+
+local function get_site_config(name)
+ local site_config = config.get_site_config(ngx.ctx.website_key)
+ if site_config ~= nil then
+ return site_config[name]
+ end
+ return config.get_global_config(name)
+end
+
+local function get_site_rule(name)
+ local site_rules = config.get_site_rules(ngx.ctx.website_key)
+ if site_rules ~= nil then
+ return site_rules[name]
+ end
+ return config.get_global_rules(name)
+end
+
+local function get_global_rules(name)
+ return config.get_global_rules(name)
+end
+
+local function get_global_config(name)
+ return config.get_global_config(name)
+end
+
+local function is_rule_state_on(rule_table)
+ return rule_table["state"] == "on" and true or false
+end
+
+local function matches(input, regex, ctx, nth)
+ if not nth then
+ nth = 0
+ end
+ return ngx_re_find(input, regex, "isjo", ctx, nth)
+end
+
+local function match_rule(rule_table, str)
+ if str == nil or next(rule_table) == nil then
+ return false
+ end
+ for _, t in ipairs(rule_table) do
+ if matches(str, t.rule) then
+ return true, t
+ end
+ end
+
+ return false
+end
+
+local function match_ip(ip_rule, ip, ipn)
+ if ip_rule == nil or ip == nil then
+ return false
+ end
+ if is_rule_state_on(ip_rule) == false then
+ return false
+ end
+ local ip_rule_type = ip_rule.type
+ if utils.is_ipv6(ip) and ip_rule_type == "ipv6" then
+ if ip == ip_rule.ipv6 then
+ return true
+ end
+ return false
+ end
+
+ if ip_rule.type == "ipv4" then
+ if ipn == tonumber(ip_rule.ipv4) then
+ return true
+ end
+ elseif ip_rule.type == "ipArr" then
+ local ipArr = ip_rule.ipArr
+ if utils.is_ip_in_array(ipn, ipArr.start, ipArr["end"]) then
+ return true
+ end
+ elseif ip_rule.type == "ipGroup" then
+ --TODO 匹配 IP 组
+ end
+
+ return false
+end
+
+local function xss_and_sql_check(body)
+ if body then
+ if is_global_state_on("xss") or is_global_state_on("sql") then
+ for k, v in pairs(body) do
+ if type(v) == 'string' then
+ if is_site_state_on("xss") then
+ local is_xss, fingerprint = libinjection.xss(tostring(v))
+ local xss_config = get_site_config("xss")
+ if is_xss then
+ exec_action(xss_config, { rule = tostring(k) .. '=' .. tostring(v) })
+ return
+ end
+ end
+ if is_site_state_on("sql") then
+ local is_sqli, fingerprint = libinjection.sqli(tostring(v))
+ local sql_config = get_site_config("sql")
+ if is_sqli then
+ exec_action(sql_config, { rule = tostring(k) .. '=' .. tostring(v) })
+ return
+ end
+ end
+ end
+ end
+ end
+
+ end
+end
+
+local function get_request_body()
+ ngx.req.read_body()
+ local body_data = ngx.req.get_body_data()
+ if not body_data then
+ local body_file = ngx.req.get_body_file()
+ if body_file then
+ body_data = fileUtils.read_file2string(body_file, true)
+ end
+ end
+ return body_data
+end
+
+function _M.is_white_ip()
+ if is_global_state_on("ipWhite") then
+ local ip = ngx.ctx.ip
+ if ip == "unknown" then
+ return false
+ end
+ if ip == "127.0.0.1" then
+ return true
+ end
+ local ipn = utils.ipv4_to_int(ip)
+ local ip_rules = get_global_rules("ipWhite")
+ for _, ip_rule in pairs(ip_rules) do
+ if match_ip(ip_rule, ip, ipn) then
+ return true
+ end
+ end
+ end
+ return false
+end
+
+function _M.allow_location_check()
+ if is_state_on("geoRestrict") then
+ local geo_ip = ngx.ctx.geoip
+ if geo_ip and geo_ip.iso and geo_ip.iso ~= "" then
+ local iso = geo_ip.iso
+ local geo_config = get_site_config("geoRestrict")
+ local exist = false
+ for _, rule in ipairs(geo_config.rules) do
+ if iso == rule then
+ exist = true
+ break
+
+ end
+ end
+ local default_geo_config = {
+ action = "deny",
+ code = 444,
+ type = "geoRestrict",
+ state = "on",
+ rule = iso
+ }
+ if exist then
+ if geo_config.action == "allow" then
+ return true
+ end
+ if geo_config.action == "deny" then
+ exec_action(default_geo_config, default_geo_config)
+ return false
+ end
+ else
+ if geo_config.action == "allow" then
+ exec_action(default_geo_config, default_geo_config)
+ return false
+ end
+ end
+ end
+ end
+end
+
+function _M.default_ip_black()
+ if is_state_on("defaultIpBlack") then
+ if geo.is_default_black_ip(ngx.ctx.ip) then
+ exec_action(get_site_config("defaultIpBlack"), { rule = ngx.ctx.ip })
+ end
+ end
+end
+
+function _M.black_ip()
+ if is_global_state_on("ipBlack") then
+ local ip = ngx.ctx.ip
+ if ip == "unknown" then
+ return false
+ end
+ local exists = nil
+
+ if config.is_redis_on() then
+ exists = redis_util.get("black_ip:" .. ip)
+ else
+ exists = ngx.shared.waf_black_ip:get(ip)
+ end
+
+ if not exists then
+ local ip_black_list = get_global_rules("ipBlack")
+ local ipn = utils.ipv4_to_int(ip)
+ for _, ip_rule in pairs(ip_black_list) do
+ if match_ip(ip_rule, ip, ipn) then
+ exists = true
+ break
+ end
+ end
+ end
+
+ if exists then
+ exec_action(get_global_config("ipBlack"))
+ end
+
+ return exists
+ end
+
+ return false
+end
+
+function _M.method_check()
+ local method = ngx.req.get_method()
+ local method_white_list = get_site_rule("methodWhite")
+ for _, method_rule in ipairs(method_white_list) do
+ if method_rule.rule == method and method_rule.state == 'off' then
+ local method_config = get_global_config("methodWhite")
+ exec_action(method_config, method_rule)
+ return false
+ end
+ end
+ return true
+end
+
+function _M.bot_check()
+ if is_state_on("bot") then
+ local ruri = ngx.var.request_uri
+ local uri = ngx.var.uri
+ local bot_rule = get_site_config("bot")
+ if uri == bot_rule.uri or ruri == bot_rule.uri then
+ exec_action(bot_rule)
+ end
+ end
+end
+
+function _M.black_ua()
+ if is_global_state_on("uaBlack") then
+ if type(ngx.ctx.ua) ~= 'string' then
+ ngx.exit(200)
+ end
+ local m, mr = match_rule(get_global_rules("uaBlack"), ngx.ctx.ua)
+ if m then
+ exec_action(get_global_config("uaBlack"), mr)
+ end
+ end
+end
+
+function _M.default_ua_black()
+ if is_state_on("defaultUaBlack") then
+ if type(ngx.ctx.ua) ~= 'string' then
+ ngx.exit(200)
+ end
+ local m, mr = match_rule(get_global_rules('defaultUaBlack'), ngx.ctx.ua)
+ if m then
+ exec_action(get_global_config('defaultUaBlack'), mr)
+ end
+ end
+end
+
+function _M.is_white_ua()
+ if is_global_state_on("uaWhite") then
+ local ua = utils.get_header("user-agent")
+ if not ua then
+ return false
+ end
+ if type(ua) ~= 'string' then
+ ngx.exit(200)
+ end
+ for _, wa in ipairs(get_global_rules("uaWhite")) do
+ if ngx.ctx.ua == wa then
+ return true
+ end
+ end
+ end
+ return false
+end
+
+function _M.cc()
+ if is_state_on("cc") then
+ if cc.check_access_token() then
+ return
+ end
+ local ip = ngx.ctx.ip
+ local cc_config = get_site_config("cc")
+ local key = ip
+
+ if config.is_redis_on() then
+ key = "cc_req_count:" .. key
+ local count, _ = redis_util.incr(key, cc_config.duration)
+ if not count then
+ redis_util.set(key, 1, cc_config.duration)
+ elseif count > cc_config.threshold then
+ exec_action(cc_config, { rule = cc_config.rule })
+ return
+ end
+ else
+ local limit = ngx.shared.waf_limit
+ local count, _ = limit:incr(key, 1, 0, cc_config.duration)
+ if not count then
+ limit:set(key, 1, cc_config.duration)
+ elseif count > cc_config.threshold then
+ exec_action(cc_config, { rule = cc_config.rule })
+ return
+ end
+ end
+ end
+end
+
+function _M.cc_url()
+ if is_state_on("ccurl") then
+ local ip = ngx.ctx.ip
+ local key = ip
+ local urlcc_rules = get_site_rule("ccurl")
+ local urlcc_config = get_site_config("ccurl")
+ local uri = ngx.var.uri
+
+ ngx.log(ngx.ERR, "ccrules is" .. cjson.encode(urlcc_rules))
+
+ local m, mr = match_rule(urlcc_rules, uri)
+ if not m or not mr then
+ return
+ end
+ key = uri .. key
+ if config.is_redis_on() then
+ key = "url_cc_req_count:" .. key
+ local count, _ = redis_util.incr(key, mr.duration)
+ if not count then
+ redis_util.set(key, 1, mr.duration)
+ elseif count > mr.threshold then
+ exec_action(urlcc_config, { rule = mr.rule })
+ return
+ end
+ else
+ local limit = ngx.shared.waf_limit
+ local count, _ = limit:incr(key, 1, 0, mr.duration)
+ if not count then
+ limit:set(key, 1, urlcc_config.duration)
+ elseif count > mr.threshold then
+ exec_action(urlcc_config, { rule = mr.rule })
+ return
+ end
+ end
+ end
+end
+
+function _M.is_white_url()
+ if is_global_state_on("urlWhite") then
+ local url = ngx.var.uri
+ if url == nil or url == " " then
+ return false
+ end
+ local m, _ = match_rule(get_global_rules("urlWhite"), url)
+ if m then
+ return true
+ end
+ return false
+ end
+
+ return false
+end
+
+function _M.black_url()
+ if is_global_state_on("urlBlack") then
+ local url = ngx.var.uri
+ if url == nil or url == "" then
+ return false
+ end
+ local m, mr = match_rule(get_global_rules("urlBlack"), url)
+ if m then
+ exec_action(get_global_config("urlBlack"), mr)
+ return
+ end
+ end
+end
+
+function _M.args_check()
+ if is_state_on("args") then
+ local args = ngx.req.get_uri_args()
+ if args then
+ local args_list = get_global_rules("args")
+ for _, val in pairs(args) do
+ local val_arr = val
+ if type(val) == "table" then
+ val_arr = concat_table(val, ", ")
+ end
+ if val_arr and type(val_arr) ~= "boolean" and val_arr ~= "" then
+ local m, mr = match_rule(args_list, utils.unescape_uri(val_arr))
+ if m then
+ exec_action(get_global_config("args"), mr)
+ return
+ end
+ end
+ end
+ xss_and_sql_check(args)
+ end
+ end
+end
+
+function _M.cookie_check()
+ local cookie = ngx.var.http_cookie
+ if cookie and is_state_on("cookie") then
+ local cookieList = get_site_rule('cookie')
+ local m, mr = match_rule(cookieList, cookie)
+ if m then
+ local rule_config = get_global_config('cookie')
+ exec_action(rule_config, mr)
+ return true
+ end
+ end
+ return false
+end
+
+function _M.header_check()
+ if is_state_on("header") then
+ local headers_rule = get_site_rule("header")
+ local headers_config = get_site_config("header")
+ local referer = ngx.var.http_referer
+ if referer and referer ~= "" then
+ local m = match_rule(headers_rule, referer)
+ if m then
+ exec_action(headers_config)
+ end
+ end
+ local headers = utils.get_headers()
+ if headers then
+ for k, v in pairs(headers) do
+ local m1, mr1 = match_rule(headers_rule, k)
+ if m1 then
+ exec_action(headers_config, mr1)
+ end
+ local m2, mr2 = match_rule(headers_rule, v)
+ if m2 then
+ exec_action(headers_config, mr2)
+ end
+ end
+ end
+ end
+end
+
+function _M.post_check()
+ local content_type = ngx.ctx.content_type
+ local content_length = ngx.ctx.content_length
+
+ if ngx.ctx.method == "GET" or not content_type or type(content_type) ~= 'string' then
+ return
+ end
+
+ if content_length == nil or content_length == 0 then
+ return
+ end
+
+ if ngx_re_find(content_type, '^application/json', "ijo") then
+ local data = get_request_body()
+ if data then
+ xss_and_sql_check(decode(data))
+ end
+ end
+
+ if is_site_state_on('fileExtCheck') and ngx_re_find(content_type, [[multipart]], 'ijo') then
+ if not ngx_re_match(content_type, '^multipart/form-data; boundary=') then
+ return
+ end
+ local boundary_value = ngx_re_match(content_type, '^multipart/form-data; boundary=(.+)')
+ if boundary_value == nil then
+ return
+ end
+ local data = get_request_body()
+ if data == nil then
+ return
+ end
+ local iterator = ngx_re_gmatch(data, [[Content-Disposition.+filename=.+]], 'ijo')
+ if not iterator then
+ return
+ end
+
+ local rule = get_site_config("fileExtCheck")
+ while true do
+ local m = iterator()
+ if m then
+ local match = ngx_re_match(m[0], 'Content-Disposition: form-data; (.+)filename="(.+)\\.(.*)"', 'ijo')
+ if match then
+ local extension = match[3]
+ for _, ext in ipairs(rule.extList) do
+ if extension == ext then
+ exec_action(rule)
+ end
+ end
+ end
+ else
+ break
+ end
+ end
+ end
+
+end
+
+function _M.acl()
+ local rules = get_site_rule("acl")
+ for _, rule in pairs(rules) do
+ if rule.state == nil or rule.state == "off" then
+ goto continue
+ end
+ local conditions = rule.conditions
+ local match = true
+ for _, condition in pairs(conditions) do
+ local field = condition.field
+ local field_name = condition.name
+ local pattern = condition.pattern
+ local match_value = ''
+ if field == 'URL' then
+ match_value = ngx.var.request_uri
+
+ elseif field == 'Cookie' then
+ if field_name ~= nil and field_name ~= '' then
+ local cookies, _ = ck:new()
+ if not cookies then
+ match = false
+ break
+ else
+ match_value, _ = cookies:get(field_name)
+ end
+ else
+ match_value = ngx.var.http_cookie
+ end
+
+ elseif field == 'Header' then
+ local headers = ngx.req.get_headers()
+ if headers then
+ if field_name ~= nil and field_name ~= '' then
+ match_value = headers[field_name]
+ else
+ match_value = concat_table(headers, '')
+ end
+ else
+ match = false
+ break
+ end
+
+ elseif field == 'Referer' then
+ match_value = ngx.var.http_referer
+
+ elseif field == 'User-Agent' then
+ match_value = ngx.var.http_user_agent
+
+ elseif field == 'IP' then
+ match_value = ngx.ctx.ip
+ end
+
+ if pattern == '' then
+ if match_value ~= nil and match_value ~= '' then
+ match = false
+ break
+ end
+ else
+ if not matches(match_value, pattern) then
+ match = false
+ break
+ end
+ end
+ end
+ if match then
+ rule.type = "acl"
+ exec_action(rule)
+ end
+ :: continue ::
+ end
+end
+
+return _M
diff --git a/plugins/openresty/waf/lib/logger.lua b/plugins/openresty/waf/lib/logger.lua
new file mode 100644
index 000000000..c79f05448
--- /dev/null
+++ b/plugins/openresty/waf/lib/logger.lua
@@ -0,0 +1,148 @@
+local type = type
+local concat_table = table.concat
+local new_table = table.new
+local tostring = tostring
+local setmetatable = setmetatable
+local open_file = io.open
+local ngx_timer_at = ngx.timer.at
+
+local _M = {}
+
+local mt = { __index = _M }
+
+function _M:new(log_path, host, rolling)
+ local t = {
+ flush_limit = 4096, -- 4kb
+ flush_timeout = 1,
+
+ buffered_size = 0,
+ buffer_index = 0,
+ buffer_data = new_table(20000, 0),
+
+ log_path = log_path,
+ prefix = log_path .. host .. '_',
+ rolling = rolling or false,
+ host = host,
+ timer = nil }
+
+ setmetatable(t, mt)
+ return t
+end
+
+local function needFlush(self)
+ if self.buffered_size > 0 then
+ return true
+ end
+
+ return false
+end
+
+local function flush_lock(self)
+ local dic_lock = ngx.shared.dict_locks
+ local locked = dic_lock:get(self.host)
+ if not locked then
+ local succ, err = dic_lock:set(self.host, true)
+ if not succ then
+ ngx.log(ngx.ERR, "failed to lock logfile " .. self.host .. ": ", err)
+ end
+ return succ
+ end
+ return false
+end
+
+local function flush_unlock(self)
+ local dic_lock = ngx.shared.dict_locks
+ local success, err = dic_lock:set(self.host, false)
+ if not success then
+ ngx.log(ngx.ERR, "failed to unlock logfile " .. self.host .. ": ", err)
+ end
+ return success
+end
+
+local function write_file(self, value)
+ local file_name = ''
+ if self.rolling then
+ file_name = self.prefix .. ngx.today() .. ".log"
+ else
+ file_name = self.log_path
+ end
+
+ local file = open_file(file_name, "a+")
+
+ if file == nil or value == nil then
+ return
+ end
+
+ file:write(value)
+ file:flush()
+ file:close()
+
+ return
+end
+
+local function flushBuffer(self)
+ if not needFlush(self) then
+ return true
+ end
+
+ if not flush_lock(self) then
+ return true
+ end
+
+ local buffer = concat_table(self.buffer_data, "", 1, self.buffer_index)
+ write_file(self, buffer)
+
+ self.buffered_size = 0
+ self.buffer_index = 0
+ self.buffer_data = new_table(20000, 0)
+
+ flush_unlock(self)
+end
+
+local function flushPeriod(premature, self)
+ flushBuffer(self)
+ self.timer = false
+end
+
+local function writeBuffer(self, msg, msg_len)
+ self.buffer_index = self.buffer_index + 1
+
+ self.buffer_data[self.buffer_index] = msg
+
+ self.buffered_size = self.buffered_size + msg_len
+
+ return self.buffered_size
+end
+
+local function startTimer(self)
+ if not self.timer then
+ local ok, err = ngx_timer_at(self.flush_timeout, flushPeriod, self)
+ if not ok then
+ ngx.log(ngx.ERR, "failed to create the timer: ", err)
+ return
+ end
+ if ok then
+ self.timer = true
+ end
+ end
+ return self.timer
+end
+
+function _M:log(msg)
+ if type(msg) ~= "string" then
+ msg = tostring(msg)
+ end
+
+ local msg_len = #msg
+ local len = msg_len + self.buffered_size
+
+ if len < self.flush_limit then
+ writeBuffer(self, msg, msg_len)
+ startTimer(self)
+ elseif len >= self.flush_limit then
+ writeBuffer(self, msg, msg_len)
+ flushBuffer(self)
+ end
+end
+
+return _M
\ No newline at end of file
diff --git a/plugins/openresty/waf/lib/logger_factory.lua b/plugins/openresty/waf/lib/logger_factory.lua
new file mode 100644
index 000000000..506bb08e8
--- /dev/null
+++ b/plugins/openresty/waf/lib/logger_factory.lua
@@ -0,0 +1,16 @@
+local logger = require "logger"
+
+local loggers = {}
+
+local _M = {}
+
+function _M.get_logger(log_path, host, rolling)
+ local host_logger = loggers[host]
+ if not host_logger then
+ host_logger = logger:new(log_path, host, rolling)
+ loggers[host] = host_logger
+ end
+ return host_logger
+end
+
+return _M
\ No newline at end of file
diff --git a/plugins/openresty/waf/lib/redis_util.lua b/plugins/openresty/waf/lib/redis_util.lua
new file mode 100644
index 000000000..e260e7422
--- /dev/null
+++ b/plugins/openresty/waf/lib/redis_util.lua
@@ -0,0 +1,131 @@
+local redis = require "resty.redis"
+local config = require "config"
+
+local _M = {}
+
+local connect_timeout, send_timeout, read_timeout = 1000, 1000, 1000
+
+function _M.get_conn()
+ local red, err1 = redis:new()
+ if not red then
+ ngx.log(ngx.ERR, "failed to new redis:", err1)
+ return nil, err1
+ end
+
+ local redis_config = config.get_redis_config()
+
+ red:set_timeouts(connect_timeout, send_timeout, read_timeout)
+
+ local ok, err = red:connect(redis_config.host, redis_config.port, { ssl = redis_config.ssl, pool_size = redis_config.poolSize })
+
+ if not ok then
+ ngx.log(ngx.ERR, "failed to connect: ", err .. "\n")
+ return nil, err
+ end
+
+ if redis_config.password ~= nil and #redis_config.password ~= 0 then
+ local times = 0
+ times, err = red:get_reused_times()
+
+ if times == 0 then
+ local res, err2 = red:auth(redis_config.password)
+ if not res then
+ ngx.log(ngx.ERR, "failed to authenticate: ", err2)
+ return nil, err2
+ end
+ end
+ end
+
+ return red, err
+end
+
+function _M.close_conn(red)
+ local ok, err = red:set_keepalive(10000, 100)
+ if not ok then
+ ngx.log(ngx.ERR, "failed to set keepalive: ", err)
+ end
+
+ return ok, err
+end
+
+function _M.set(key, value, expire_time)
+ local red, _ = _M.get_conn()
+ local ok, err = nil, nil
+ if red then
+ ok, err = red:set(key, value)
+ if not ok then
+ ngx.log(ngx.ERR, "failed to set key: " .. key .. " ", err)
+ elseif expire_time and expire_time > 0 then
+ red:expire(key, expire_time)
+ end
+
+ _M.close_conn(red)
+ end
+
+ return ok, err
+end
+
+function _M.bath_set(keyTable, value, keyPrefix)
+ local red, _ = _M.get_conn()
+ local results, err = nil, nil
+ if red then
+ red:init_pipeline()
+
+ if keyPrefix then
+ for _, ip in ipairs(keyTable) do
+ red:set(keyPrefix .. ip, value)
+ end
+ else
+ for _, ip in ipairs(keyTable) do
+ red:set(ip, value)
+ end
+ end
+
+ results, err = red:commit_pipeline()
+ if not results then
+ ngx.log(ngx.ERR, "failed to set keys: ", err)
+ end
+
+ _M.close_conn(red)
+ end
+
+ return results, err
+end
+
+function _M.get(key)
+ local red, err = _M.get_conn()
+ local value = nil
+ if red then
+ value, err = red:get(key)
+ if not value then
+ ngx.log(ngx.ERR, "failed to get key: " .. key, err)
+ return value, err
+ end
+ if value == ngx.null then
+ value = nil
+ end
+
+ _M.close_conn(red)
+ end
+
+ return value, err
+end
+
+function _M.incr(key, expire_time)
+ local red, err = _M.get_conn()
+ local res = nil
+ if red then
+ res, err = red:incr(key)
+ if not res then
+ ngx.log(ngx.ERR, "failed to incr key: " .. key, err)
+ elseif res == 1 and expire_time and expire_time > 0 then
+ red:expire(key, expire_time)
+ end
+
+ _M.close_conn(red)
+ end
+
+ return res, err
+end
+
+return _M
diff --git a/plugins/openresty/waf/lib/resty/cookie.lua b/plugins/openresty/waf/lib/resty/cookie.lua
new file mode 100644
index 000000000..f4c81ab0f
--- /dev/null
+++ b/plugins/openresty/waf/lib/resty/cookie.lua
@@ -0,0 +1,213 @@
+-- Copyright (C) 2013-2016 Jiale Zhi (calio), CloudFlare Inc.
+-- See RFC6265 http://tools.ietf.org/search/rfc6265
+-- require "luacov"
+
+local type = type
+local byte = string.byte
+local sub = string.sub
+local format = string.format
+local log = ngx.log
+local ERR = ngx.ERR
+local WARN = ngx.WARN
+local ngx_header = ngx.header
+
+local EQUAL = byte("=")
+local SEMICOLON = byte(";")
+local SPACE = byte(" ")
+local HTAB = byte("\t")
+
+-- table.new(narr, nrec)
+local ok, new_tab = pcall(require, "table.new")
+if not ok then
+ new_tab = function () return {} end
+end
+
+local ok, clear_tab = pcall(require, "table.clear")
+if not ok then
+ clear_tab = function(tab) for k, _ in pairs(tab) do tab[k] = nil end end
+end
+
+local _M = new_tab(0, 2)
+
+_M._VERSION = '0.01'
+
+
+local function get_cookie_table(text_cookie)
+ if type(text_cookie) ~= "string" then
+ log(ERR, format("expect text_cookie to be \"string\" but found %s",
+ type(text_cookie)))
+ return {}
+ end
+
+ local EXPECT_KEY = 1
+ local EXPECT_VALUE = 2
+ local EXPECT_SP = 3
+
+ local n = 0
+ local len = #text_cookie
+
+ for i=1, len do
+ if byte(text_cookie, i) == SEMICOLON then
+ n = n + 1
+ end
+ end
+
+ local cookie_table = new_tab(0, n + 1)
+
+ local state = EXPECT_SP
+ local i = 1
+ local j = 1
+ local key, value
+
+ while j <= len do
+ if state == EXPECT_KEY then
+ if byte(text_cookie, j) == EQUAL then
+ key = sub(text_cookie, i, j - 1)
+ state = EXPECT_VALUE
+ i = j + 1
+ end
+ elseif state == EXPECT_VALUE then
+ if byte(text_cookie, j) == SEMICOLON
+ or byte(text_cookie, j) == SPACE
+ or byte(text_cookie, j) == HTAB
+ then
+ value = sub(text_cookie, i, j - 1)
+ cookie_table[key] = value
+
+ key, value = nil, nil
+ state = EXPECT_SP
+ i = j + 1
+ end
+ elseif state == EXPECT_SP then
+ if byte(text_cookie, j) ~= SPACE
+ and byte(text_cookie, j) ~= HTAB
+ then
+ state = EXPECT_KEY
+ i = j
+ j = j - 1
+ end
+ end
+ j = j + 1
+ end
+
+ if key ~= nil and value == nil then
+ cookie_table[key] = sub(text_cookie, i)
+ end
+
+ return cookie_table
+end
+
+function _M.new(self)
+ local _cookie = ngx.var.http_cookie
+ --if not _cookie then
+ --return nil, "no cookie found in current request"
+ --end
+ return setmetatable({ _cookie = _cookie, set_cookie_table = new_tab(4, 0) },
+ { __index = self })
+end
+
+function _M.get(self, key)
+ if not self._cookie then
+ return nil, "no cookie found in the current request"
+ end
+ if self.cookie_table == nil then
+ self.cookie_table = get_cookie_table(self._cookie)
+ end
+
+ return self.cookie_table[key]
+end
+
+function _M.get_all(self)
+ if not self._cookie then
+ return nil, "no cookie found in the current request"
+ end
+
+ if self.cookie_table == nil then
+ self.cookie_table = get_cookie_table(self._cookie)
+ end
+
+ return self.cookie_table
+end
+
+function _M.get_cookie_size(self)
+ if not self._cookie then
+ return 0
+ end
+
+ return string.len(self._cookie)
+end
+
+local function bake(cookie)
+ if not cookie.key or not cookie.value then
+ return nil, 'missing cookie field "key" or "value"'
+ end
+
+ if cookie["max-age"] then
+ cookie.max_age = cookie["max-age"]
+ end
+
+ if (cookie.samesite) then
+ local samesite = cookie.samesite
+
+ -- if we don't have a valid-looking attribute, ignore the attribute
+ if (samesite ~= "Strict" and samesite ~= "Lax" and samesite ~= "None") then
+ log(WARN, "SameSite value must be 'Strict', 'Lax' or 'None'")
+ cookie.samesite = nil
+ end
+ end
+
+ local str = cookie.key .. "=" .. cookie.value
+ .. (cookie.expires and "; Expires=" .. cookie.expires or "")
+ .. (cookie.max_age and "; Max-Age=" .. cookie.max_age or "")
+ .. (cookie.domain and "; Domain=" .. cookie.domain or "")
+ .. (cookie.path and "; Path=" .. cookie.path or "")
+ .. (cookie.secure and "; Secure" or "")
+ .. (cookie.httponly and "; HttpOnly" or "")
+ .. (cookie.samesite and "; SameSite=" .. cookie.samesite or "")
+ .. (cookie.extension and "; " .. cookie.extension or "")
+ return str
+end
+
+function _M.set(self, cookie)
+ local cookie_str, err = bake(cookie)
+ if not cookie_str then
+ return nil, err
+ end
+
+ local set_cookie = ngx_header['Set-Cookie']
+ local set_cookie_type = type(set_cookie)
+ local t = self.set_cookie_table
+ clear_tab(t)
+
+ if set_cookie_type == "string" then
+ -- only one cookie has been setted
+ if set_cookie ~= cookie_str then
+ t[1] = set_cookie
+ t[2] = cookie_str
+ ngx_header['Set-Cookie'] = t
+ end
+ elseif set_cookie_type == "table" then
+ -- more than one cookies has been setted
+ local size = #set_cookie
+
+ -- we can not set cookie like ngx.header['Set-Cookie'][3] = val
+ -- so create a new table, copy all the values, and then set it back
+ for i=1, size do
+ t[i] = ngx_header['Set-Cookie'][i]
+ if t[i] == cookie_str then
+ -- new cookie is duplicated
+ return true
+ end
+ end
+ t[size + 1] = cookie_str
+ ngx_header['Set-Cookie'] = t
+ else
+ -- no cookie has been setted
+ ngx_header['Set-Cookie'] = cookie_str
+ end
+ return true
+end
+
+_M.get_cookie_string = bake
+
+return _M
diff --git a/plugins/openresty/waf/lib/resty/libinjection.lua b/plugins/openresty/waf/lib/resty/libinjection.lua
new file mode 100644
index 000000000..587604ae3
--- /dev/null
+++ b/plugins/openresty/waf/lib/resty/libinjection.lua
@@ -0,0 +1,326 @@
+local _M = {}
+
+local bit = require "bit"
+local ffi = require "ffi"
+
+local ffi_new = ffi.new
+local ffi_string = ffi.string
+
+-- enum sqli_flags
+local FLAG_NONE = 0
+local FLAG_QUOTE_NONE = 1
+local FLAG_QUOTE_SINGLE = 2
+local FLAG_QUOTE_DOUBLE = 4
+local FLAG_SQL_ANSI = 8
+local FLAG_SQL_MYSQL = 16
+
+-- enum lookup_type
+local LOOKUP_FINGERPRINT = 4
+
+-- enum html5_flags
+local DATA_STATE = 0
+local VALUE_NO_QUOTE = 1
+local VALUE_SINGLE_QUOTE = 2
+local VALUE_DOUBLE_QUOTE = 3
+local VALUE_BACK_QUOTE = 4
+
+-- cached ORs
+local QUOTE_NONE_SQL_ANSI = bit.bor(FLAG_QUOTE_NONE, FLAG_SQL_ANSI)
+local QUOTE_NONE_SQL_MYSQL = bit.bor(FLAG_QUOTE_NONE, FLAG_SQL_MYSQL)
+local QUOTE_SINGLE_SQL_ANSI = bit.bor(FLAG_QUOTE_SINGLE, FLAG_SQL_ANSI)
+local QUOTE_SINGLE_SQL_MYSQL = bit.bor(FLAG_QUOTE_SINGLE, FLAG_SQL_MYSQL)
+local QUOTE_DOUBLE_SQL_MYSQL = bit.bor(FLAG_QUOTE_DOUBLE, FLAG_SQL_MYSQL)
+
+-- libibjection.so
+ffi.cdef [[
+const char* libinjection_sqli_fingerprint(struct libinjection_sqli_state* sql_state, int flags);
+
+struct libinjection_sqli_token {
+ char type;
+ char str_open;
+ char str_close;
+ size_t pos;
+ size_t len;
+ int count;
+ char val[32];
+};
+
+typedef char (*ptr_lookup_fn)(struct libinjection_sqli_state*, int lookuptype, const char* word, size_t len);
+
+struct libinjection_sqli_state {
+ const char *s;
+ size_t slen;
+ ptr_lookup_fn lookup;
+ void* userdata;
+ int flags;
+ size_t pos;
+ struct libinjection_sqli_token tokenvec[8];
+ struct libinjection_sqli_token *current;
+ char fingerprint[8];
+ int reason;
+ int stats_comment_ddw;
+ int stats_comment_ddx;
+ int stats_comment_c;
+ int stats_comment_hash;
+ int stats_folds;
+ int stats_tokens;
+};
+
+void libinjection_sqli_init(struct libinjection_sqli_state * sf, const char *s, size_t len, int flags);
+int libinjection_is_sqli(struct libinjection_sqli_state* sql_state);
+
+int libinjection_sqli(const char* s, size_t slen, char fingerprint[]);
+
+int libinjection_is_xss(const char* s, size_t len, int flags);
+int libinjection_xss(const char* s, size_t slen);
+]]
+
+_M.version = "0.1.1"
+
+local state_type = ffi.typeof("struct libinjection_sqli_state[1]")
+local lib, loaded
+
+-- "borrowed" from CF aho-corasick lib
+local function _loadlib()
+ if (not loaded) then
+ local path, so_path
+ local libname = "libinjection.so"
+
+ for k, v in string.gmatch(package.cpath, "[^;]+") do
+ so_path = string.match(k, "(.*/)")
+ if so_path then
+ -- "so_path" could be nil. e.g, the dir path component is "."
+ so_path = so_path .. libname
+
+ -- Don't get me wrong, the only way to know if a file exist is
+ -- trying to open it.
+ local f = io.open(so_path)
+ if f ~= nil then
+ io.close(f)
+ path = so_path
+ break
+ end
+ end
+ end
+
+ path = "/usr/local/openresty/1pwaf/data/libinjection.so"
+
+ lib = ffi.load(path)
+
+ if (lib) then
+ loaded = true
+ return true
+ else
+ return false
+ end
+ else
+ return true
+ end
+end
+
+-- this function is not publicly exposed so we need to emulate it here. not great but not a measurable perf hit
+local function _reparse_as_mysql(sqli_state)
+ return sqli_state[0].stats_comment_ddx ~= 0 or sqli_state[0].stats_comment_hash ~= 0
+end
+
+--[[
+Secondary API: detects SQLi in a string, given a context. Given a string, returns a list of
+
+* boolean indicating a match
+* SQLi fingerprint
+--]]
+local function _sqli_contextwrapper(string, char, flag1, flag2)
+ if (char and not string.find(string, char, 1, true)) then
+ return false, nil
+ end
+
+ if (not loaded) then
+ if (not _loadlib()) then
+ return false, nil
+ end
+ end
+
+ local issqli, lookup, sqli_state
+
+ -- allocate a new libinjection_sqli_state struct
+ sqli_state = ffi_new(state_type)
+
+ -- init the state
+ lib.libinjection_sqli_init(
+ sqli_state,
+ string,
+ #string,
+ FLAG_NONE
+ )
+
+ -- initial fingerprint
+ lib.libinjection_sqli_fingerprint(
+ sqli_state,
+ flag1
+ )
+
+ -- lookup
+ lookup = sqli_state[0].lookup(
+ sqli_state,
+ LOOKUP_FINGERPRINT,
+ sqli_state[0].fingerprint,
+ #ffi.string(sqli_state[0].fingerprint)
+ )
+
+ -- match? great, we're done
+ if (lookup > 0) then
+ return true, ffi_string(sqli_state[0].fingerprint)
+ end
+
+ -- no? reparse, fingerprint and lookup again
+ if (flag2 and _reparse_as_mysql(sqli_state)) then
+ lib.libinjection_sqli_fingerprint(
+ sqli_state,
+ flag2
+ )
+
+ lookup = sqli_state[0].lookup(
+ sqli_state,
+ LOOKUP_FINGERPRINT,
+ sqli_state[0].fingerprint,
+ #ffi.string(sqli_state[0].fingerprint)
+ )
+
+ if (lookup > 0) then
+ return true, ffi_string(sqli_state[0].fingerprint)
+ end
+ end
+
+ return false, nil
+end
+
+--[[
+Wrapper for second-level API with no char context
+--]]
+function _M.sqli_noquote(string)
+ return _sqli_contextwrapper(
+ string,
+ nil,
+ QUOTE_NONE_SQL_ANSI,
+ QUOTE_NONE_SQL_MYSQL
+ )
+end
+
+--[[
+Wrapper for second-level API with CHAR_SINGLE context
+--]]
+function _M.sqli_singlequote(string)
+ return _sqli_contextwrapper(
+ string,
+ "'",
+ QUOTE_SINGLE_SQL_ANSI,
+ QUOTE_SINGLE_SQL_MYSQL
+ )
+end
+
+--[[
+Wrapper for second-level API with CHAR_DOUBLE context
+--]]
+function _M.sqli_doublequote(string)
+ return _sqli_contextwrapper(
+ string,
+ '"',
+ QUOTE_DOUBLE_SQL_MYSQL
+ )
+end
+
+--[[
+Simple API. Given a string, returns a list of
+
+* boolean indicating a match
+* SQLi fingerprint
+--]]
+function _M.sqli(string)
+ if (not loaded) then
+ if (not _loadlib()) then
+ return false, nil
+ end
+ end
+
+ local fingerprint = ffi_new("char [8]")
+
+ return lib.libinjection_sqli(string, #string, fingerprint) == 1, ffi_string(fingerprint)
+end
+
+--[[
+Secondary API: detects XSS in a string, given a context. Given a string, returns a boolean denoting if XSS was detected
+--]]
+local function _xss_contextwrapper(string, flag)
+ if (not loaded) then
+ if (not _loadlib()) then
+ return false
+ end
+ end
+
+ return lib.libinjection_is_xss(string, #string, flag) == 1
+end
+
+--[[
+Wrapper for second-level API with DATA_STATE flag
+--]]
+function _M.xss_data_state(string)
+ return _xss_contextwrapper(
+ string,
+ DATA_STATE
+ )
+end
+
+--[[
+Wrapper for second-level API with VALUE_NO_QUOTE flag
+--]]
+function _M.xss_noquote(string)
+ return _xss_contextwrapper(
+ string,
+ VALUE_NO_QUOTE
+ )
+end
+
+--[[
+Wrapper for second-level API with VALUE_SINGLE_QUOTE flag
+--]]
+function _M.xss_singlequote(string)
+ return _xss_contextwrapper(
+ string,
+ VALUE_SINGLE_QUOTE
+ )
+end
+
+--[[
+Wrapper for second-level API with VALUE_DOUBLE_QUOTE flag
+--]]
+function _M.xss_doublequote(string)
+ return _xss_contextwrapper(
+ string,
+ VALUE_DOUBLE_QUOTE
+ )
+end
+
+--[[
+Wrapper for second-level API with VALUE_BACK_QUOTE flag
+--]]
+function _M.xss_backquote(string)
+ return _xss_contextwrapper(
+ string,
+ VALUE_BACK_QUOTE
+ )
+end
+
+--[[
+ALPHA version of XSS detector. Given a string, returns a boolean denoting if XSS was detected
+--]]
+function _M.xss(string)
+ if (not loaded) then
+ if (not _loadlib()) then
+ return false
+ end
+ end
+
+ return lib.libinjection_xss(string, #string) == 1
+end
+
+return _M
\ No newline at end of file
diff --git a/plugins/openresty/waf/lib/resty/maxminddb.lua b/plugins/openresty/waf/lib/resty/maxminddb.lua
new file mode 100644
index 000000000..ddf82032f
--- /dev/null
+++ b/plugins/openresty/waf/lib/resty/maxminddb.lua
@@ -0,0 +1,372 @@
+--[[
+ Copyright 2017-now anjia (anjia0532@gmail.com)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+]]
+
+-- copy from https://github.com/lilien1010/lua-resty-maxminddb/blob/f96633e2428f8f7bcc1e2a7a28b747b33233a8db/resty/maxminddb.lua#L5-L12
+
+local ffi = require('ffi')
+local ffi_new = ffi.new
+local ffi_str = ffi.string
+local ffi_cast = ffi.cast
+local ffi_gc = ffi.gc
+local C = ffi.C
+
+local _M = {}
+local _D = {}
+
+_M._VERSION = '1.3.3'
+local mt = { __index = _M }
+
+-- copy from https://github.com/lilien1010/lua-resty-maxminddb/blob/f96633e2428f8f7bcc1e2a7a28b747b33233a8db/resty/maxminddb.lua#L36-L126
+ffi.cdef [[
+
+typedef long int ssize_t;
+
+typedef unsigned int mmdb_uint128_t __attribute__ ((__mode__(TI)));
+
+typedef struct MMDB_entry_s {
+ struct MMDB_s *mmdb;
+ uint32_t offset;
+} MMDB_entry_s;
+
+typedef struct MMDB_lookup_result_s {
+ bool found_entry;
+ MMDB_entry_s entry;
+ uint16_t netmask;
+} MMDB_lookup_result_s;
+
+typedef struct MMDB_entry_data_s {
+ bool has_data;
+ union {
+ uint32_t pointer;
+ const char *utf8_string;
+ double double_value;
+ const uint8_t *bytes;
+ uint16_t uint16;
+ uint32_t uint32;
+ int32_t int32;
+ uint64_t uint64;
+ mmdb_uint128_t uint128;
+ bool boolean;
+ float float_value;
+ };
+
+ uint32_t offset;
+ uint32_t offset_to_next;
+ uint32_t data_size;
+ uint32_t type;
+} MMDB_entry_data_s;
+
+typedef struct MMDB_entry_data_list_s {
+ MMDB_entry_data_s entry_data;
+ struct MMDB_entry_data_list_s *next;
+} MMDB_entry_data_list_s;
+
+typedef struct MMDB_description_s {
+ const char *language;
+ const char *description;
+} MMDB_description_s;
+
+typedef struct MMDB_metadata_s {
+ uint32_t node_count;
+ uint16_t record_size;
+ uint16_t ip_version;
+ const char *database_type;
+ struct {
+ size_t count;
+ const char **names;
+ } languages;
+ uint16_t binary_format_major_version;
+ uint16_t binary_format_minor_version;
+ uint64_t build_epoch;
+ struct {
+ size_t count;
+ MMDB_description_s **descriptions;
+ } description;
+} MMDB_metadata_s;
+
+typedef struct MMDB_ipv4_start_node_s {
+ uint16_t netmask;
+ uint32_t node_value;
+} MMDB_ipv4_start_node_s;
+
+typedef struct MMDB_s {
+ uint32_t flags;
+ const char *filename;
+ ssize_t file_size;
+ const uint8_t *file_content;
+ const uint8_t *data_section;
+ uint32_t data_section_size;
+ const uint8_t *metadata_section;
+ uint32_t metadata_section_size;
+ uint16_t full_record_byte_size;
+ uint16_t depth;
+ MMDB_ipv4_start_node_s ipv4_start_node;
+ MMDB_metadata_s metadata;
+} MMDB_s;
+
+typedef char * pchar;
+
+MMDB_lookup_result_s MMDB_lookup_string(MMDB_s *const mmdb, const char *const ipstr, int *const gai_error,int *const mmdb_error);
+int MMDB_open(const char *const filename, uint32_t flags, MMDB_s *const mmdb);
+int MMDB_aget_value(MMDB_entry_s *const start, MMDB_entry_data_s *const entry_data, const char *const *const path);
+char *MMDB_strerror(int error_code);
+
+int MMDB_get_entry_data_list(MMDB_entry_s *start, MMDB_entry_data_list_s **const entry_data_list);
+void MMDB_free_entry_data_list(MMDB_entry_data_list_s *const entry_data_list);
+void MMDB_close(MMDB_s *const mmdb);
+const char *gai_strerror(int errcode);
+]]
+
+-- error codes
+-- https://github.com/maxmind/libmaxminddb/blob/master/include/maxminddb.h#L66
+local MMDB_SUCCESS = 0
+local MMDB_FILE_OPEN_ERROR = 1
+local MMDB_CORRUPT_SEARCH_TREE_ERROR = 2
+local MMDB_INVALID_METADATA_ERROR = 3
+local MMDB_IO_ERROR = 4
+local MMDB_OUT_OF_MEMORY_ERROR = 5
+local MMDB_UNKNOWN_DATABASE_FORMAT_ERROR = 6
+local MMDB_INVALID_DATA_ERROR = 7
+local MMDB_INVALID_LOOKUP_PATH_ERROR = 8
+local MMDB_LOOKUP_PATH_DOES_NOT_MATCH_DATA_ERROR = 9
+local MMDB_INVALID_NODE_NUMBER_ERROR = 10
+local MMDB_IPV6_LOOKUP_IN_IPV4_DATABASE_ERROR = 11
+
+-- data type
+-- https://github.com/maxmind/libmaxminddb/blob/master/include/maxminddb.h#L40
+local MMDB_DATA_TYPE_EXTENDED = 0
+local MMDB_DATA_TYPE_POINTER = 1
+local MMDB_DATA_TYPE_UTF8_STRING = 2
+local MMDB_DATA_TYPE_DOUBLE = 3
+local MMDB_DATA_TYPE_BYTES = 4
+local MMDB_DATA_TYPE_UINT16 = 5
+local MMDB_DATA_TYPE_UINT32 = 6
+local MMDB_DATA_TYPE_MAP = 7
+local MMDB_DATA_TYPE_INT32 = 8
+local MMDB_DATA_TYPE_UINT64 = 9
+local MMDB_DATA_TYPE_UINT128 = 10
+local MMDB_DATA_TYPE_ARRAY = 11
+local MMDB_DATA_TYPE_CONTAINER = 12
+local MMDB_DATA_TYPE_END_MARKER = 13
+local MMDB_DATA_TYPE_BOOLEAN = 14
+local MMDB_DATA_TYPE_FLOAT = 15
+
+-- copy from https://github.com/lilien1010/lua-resty-maxminddb/blob/f96633e2428f8f7bcc1e2a7a28b747b33233a8db/resty/maxminddb.lua#L136-L138
+
+local initted = false
+
+local function mmdb_strerror(profile, rc)
+ return ffi_str(_D[profile].maxm.MMDB_strerror(rc))
+end
+
+local function gai_strerror(rc)
+ return ffi_str(C.gai_strerror(rc))
+end
+
+function _M.init(profiles)
+ for profile, location in pairs(profiles) do
+ _D[profile] = {}
+ _D[profile].maxm = ffi.load('/usr/local/openresty/1pwaf/data/libmaxminddb.so')
+ _D[profile].mmdb = ffi_new('MMDB_s')
+ local maxmind_ready = _D[profile].maxm.MMDB_open(location, 0, _D[profile].mmdb)
+ if maxmind_ready ~= MMDB_SUCCESS then
+ return nil, mmdb_strerror(profile, maxmind_ready)
+ end
+ ffi_gc(_D[profile].mmdb, _D[profile].maxm.MMDB_close)
+ end
+
+ --if not initted then
+ -- local maxmind_ready = maxm.MMDB_open(dbfile, 0, mmdb)
+ --
+ -- if maxmind_ready ~= MMDB_SUCCESS then
+ -- return nil, mmdb_strerror(maxmind_ready)
+ -- end
+ --
+ --
+ --
+ -- ffi_gc(mmdb, maxm.MMDB_close)
+ --end
+ initted = true
+ return initted
+end
+
+function _M.initted()
+ return initted
+end
+
+-- https://github.com/maxmind/libmaxminddb/blob/master/src/maxminddb.c#L1938
+-- LOCAL MMDB_entry_data_list_s *dump_entry_data_list( FILE *stream, MMDB_entry_data_list_s *entry_data_list, int indent, int *status)
+local function _dump_entry_data_list(entry_data_list, status)
+
+ if not entry_data_list then
+ return nil, MMDB_INVALID_DATA_ERROR
+ end
+
+ local entry_data_item = entry_data_list[0].entry_data
+ local data_type = entry_data_item.type
+ local data_size = entry_data_item.data_size
+ local result
+
+ if data_type == MMDB_DATA_TYPE_MAP then
+ result = {}
+
+ local size = entry_data_item.data_size
+
+ entry_data_list = entry_data_list[0].next
+
+ while (size > 0 and entry_data_list)
+ do
+ entry_data_item = entry_data_list[0].entry_data
+ data_type = entry_data_item.type
+ data_size = entry_data_item.data_size
+
+ if MMDB_DATA_TYPE_UTF8_STRING ~= data_type then
+ return nil, MMDB_INVALID_DATA_ERROR
+ end
+
+ local key = ffi_str(entry_data_item.utf8_string, data_size)
+
+ if not key then
+ return nil, MMDB_OUT_OF_MEMORY_ERROR
+ end
+
+ local val
+ entry_data_list = entry_data_list[0].next
+ entry_data_list, status, val = _dump_entry_data_list(entry_data_list)
+
+ if status ~= MMDB_SUCCESS then
+ return nil, status
+ end
+
+ result[key] = val
+
+ size = size - 1
+ end
+
+
+ elseif entry_data_list[0].entry_data.type == MMDB_DATA_TYPE_ARRAY then
+ local size = entry_data_list[0].entry_data.data_size
+ result = {}
+
+ entry_data_list = entry_data_list[0].next
+
+ local i = 1
+ while (i <= size and entry_data_list)
+ do
+ local val
+ entry_data_list, status, val = _dump_entry_data_list(entry_data_list)
+
+ if status ~= MMDB_SUCCESS then
+ return nil, nil, val
+ end
+
+ result[i] = val
+ i = i + 1
+ end
+
+
+ else
+ entry_data_item = entry_data_list[0].entry_data
+ data_type = entry_data_item.type
+ data_size = entry_data_item.data_size
+
+ local val
+ -- string type "key":"val"
+ -- other type "key":val
+ -- default other type
+ if data_type == MMDB_DATA_TYPE_UTF8_STRING then
+ val = ffi_str(entry_data_item.utf8_string, data_size)
+ if not val then
+ status = MMDB_OUT_OF_MEMORY_ERROR
+ return nil, status
+ end
+ elseif data_type == MMDB_DATA_TYPE_BYTES then
+ val = ffi_str(ffi_cast('char * ', entry_data_item.bytes), data_size)
+ if not val then
+ status = MMDB_OUT_OF_MEMORY_ERROR
+ return nil, status
+ end
+ elseif data_type == MMDB_DATA_TYPE_DOUBLE then
+ val = entry_data_item.double_value
+ elseif data_type == MMDB_DATA_TYPE_FLOAT then
+ val = entry_data_item.float_value
+ elseif data_type == MMDB_DATA_TYPE_UINT16 then
+ val = entry_data_item.uint16
+ elseif data_type == MMDB_DATA_TYPE_UINT32 then
+ val = entry_data_item.uint32
+ elseif data_type == MMDB_DATA_TYPE_BOOLEAN then
+ val = entry_data_item.boolean
+ elseif data_type == MMDB_DATA_TYPE_UINT64 then
+ val = entry_data_item.uint64
+ elseif data_type == MMDB_DATA_TYPE_INT32 then
+ val = entry_data_item.int32
+ else
+ return nil, MMDB_INVALID_DATA_ERROR
+ end
+
+ result = val
+ entry_data_list = entry_data_list[0].next
+ end
+
+ status = MMDB_SUCCESS
+ return entry_data_list, status, result
+end
+
+function _M.lookup(profile, ip)
+
+ if not initted then
+ return nil, "not initialized"
+ end
+
+ -- copy from https://github.com/lilien1010/lua-resty-maxminddb/blob/f96633e2428f8f7bcc1e2a7a28b747b33233a8db/resty/maxminddb.lua#L159-L176
+ local gai_error = ffi_new('int[1]')
+ local mmdb_error = ffi_new('int[1]')
+
+ local result = _D[profile].maxm.MMDB_lookup_string(_D[profile].mmdb, ip, gai_error, mmdb_error)
+
+ if mmdb_error[0] ~= MMDB_SUCCESS then
+ return nil, 'lookup failed: ' .. mmdb_strerror(profile, mmdb_error[0])
+ end
+
+ if gai_error[0] ~= MMDB_SUCCESS then
+ return nil, 'lookup failed: ' .. gai_strerror(gai_error[0])
+ end
+
+ if true ~= result.found_entry then
+ return nil, 'not found'
+ end
+
+ local entry_data_list = ffi_cast('MMDB_entry_data_list_s **const', ffi_new("MMDB_entry_data_list_s"))
+
+ local status = _D[profile].maxm.MMDB_get_entry_data_list(result.entry, entry_data_list)
+
+ if status ~= MMDB_SUCCESS then
+ return nil, 'get entry data failed: ' .. mmdb_strerror(profile, status)
+ end
+
+ local head = entry_data_list[0] -- Save so this can be passed to free fn.
+ local _, status, result = _dump_entry_data_list(entry_data_list)
+ _D[profile].maxm.MMDB_free_entry_data_list(head)
+
+ if status ~= MMDB_SUCCESS then
+ return nil, 'dump entry data failed: ' .. mmdb_strerror(profile, status)
+ end
+
+ return result
+end
+
+-- copy from https://github.com/lilien1010/lua-resty-maxminddb/blob/master/resty/maxminddb.lua#L208
+-- https://www.maxmind.com/en/geoip2-databases you should download the mmdb file from maxmind
+
+return _M;
diff --git a/plugins/openresty/waf/lib/stringutf8.lua b/plugins/openresty/waf/lib/stringutf8.lua
new file mode 100644
index 000000000..921757392
--- /dev/null
+++ b/plugins/openresty/waf/lib/stringutf8.lua
@@ -0,0 +1,149 @@
+local error = error
+local str_len = string.len
+local new_table = table.new
+local concat_table = table.concat
+local insert_table = table.insert
+local byte_str = string.byte
+local sub_str = string.sub
+local type = type
+local abs = math.abs
+local match_str = string.match
+local ngx_re_gsub = ngx.re.gsub
+
+local _M = {}
+
+local INDEX_OUT_OF_RANGE = "String index out of range: "
+local NOT_NUMBER = "number expected, got "
+local NOT_STRING = "string expected, got "
+local NOT_STRING_NIL = "string expected, got nil"
+
+function _M.to_char_array(str)
+ local array
+ if str then
+ local length = str_len(str)
+ array = new_table(length, 0)
+
+ local byteLength = 1
+ local i, j = 1, 1
+ while i <= length do
+ local firstByte = byte_str(str, i)
+ if firstByte >= 0 and firstByte < 128 then
+ byteLength = 1
+
+ elseif firstByte > 191 and firstByte < 224 then
+ byteLength = 2
+
+ elseif firstByte > 223 and firstByte < 240 then
+ byteLength = 3
+
+ elseif firstByte > 239 and firstByte < 248 then
+ byteLength = 4
+ end
+
+ j = i + byteLength
+ local char = sub_str(str, i, j - 1)
+ i = j
+ insert_table(array, char)
+ end
+ end
+
+ return array
+end
+
+function _M.sub(str, i, j)
+ local str_sub
+ if str then
+ if i == nil then
+ i = 1
+ end
+
+ if type(i) ~= "number" then
+ error(NOT_NUMBER .. type(i))
+ end
+
+ if i < 1 then
+ error(INDEX_OUT_OF_RANGE .. i)
+ end
+
+ if j then
+ if type(j) ~= "number" then
+ error(NOT_NUMBER .. type(j))
+ end
+ end
+
+ local array = _M.to_char_array(str)
+ if array then
+ local length = #array
+ local subLen = length - i
+ if subLen < 0 then
+ error(INDEX_OUT_OF_RANGE .. subLen)
+ end
+
+ if not j then
+ str_sub = concat_table(array, "", i)
+ else
+ if abs(j) > length then
+ error(INDEX_OUT_OF_RANGE .. j)
+ end
+ if j < 0 then
+ j = length + j + 1
+ end
+ str_sub = concat_table(array, "", i, j)
+ end
+ end
+ end
+
+ return str_sub
+end
+
+function _M.trim(str)
+ if str then
+ str = ngx_re_gsub(str, "^\\s*|\\s*$", "", "jo")
+ end
+
+ return str
+end
+
+function _M.len(str)
+ local str_length = 0
+ if str then
+ if type(str) ~= "string" then
+ error(NOT_STRING .. type(str))
+ end
+
+ local length = str_len(str)
+
+ local i = 1
+ while i <= length do
+ local firstByte = byte_str(str, i)
+ if firstByte >= 0 and firstByte < 128 then
+ i = i + 1
+
+ elseif firstByte > 191 and firstByte < 224 then
+ i = i + 2
+
+ elseif firstByte > 223 and firstByte < 240 then
+ i = i + 3
+
+ elseif firstByte > 239 and firstByte < 248 then
+ i = i + 4
+ end
+
+ str_length = str_length + 1
+ end
+ else
+ error(NOT_STRING_NIL)
+ end
+
+ return str_length
+end
+
+function _M.default_if_blank(str, default_str)
+ if str == nil or match_str(str, "^%s*$") then
+ return default_str
+ end
+
+ return str
+end
+
+return _M
diff --git a/plugins/openresty/waf/lib/utils.lua b/plugins/openresty/waf/lib/utils.lua
new file mode 100644
index 000000000..a0b9e9153
--- /dev/null
+++ b/plugins/openresty/waf/lib/utils.lua
@@ -0,0 +1,123 @@
+local sub_str = string.sub
+local pairs = pairs
+local insert_table = table.insert
+local tonumber = tonumber
+local ipairs = ipairs
+local type = type
+local find_str = string.find
+
+local _M = {}
+
+function _M.split(input_string, delimiter)
+ local result = {}
+ for part in input_string:gmatch("([^" .. delimiter .. "]+)") do
+ insert_table(result, part)
+ end
+ return result
+end
+
+function _M.get_cookie_list(cookie_str)
+ local cookies = {}
+ for cookie in cookie_str:gmatch("([^;]+)") do
+ local key, value = cookie:match("^%s*([^=]+)=(.*)$")
+ if key and value then
+ cookies[key] = value
+ end
+ end
+ return cookies
+end
+
+function _M.unescape_uri(str)
+ local newStr = str
+ for t = 1, 2 do
+ local temp = ngx.unescape_uri(newStr)
+ if not temp then
+ break
+ end
+ newStr = temp
+ end
+ return newStr
+end
+
+function _M.get_expire_time()
+ local localtime = ngx.localtime()
+ local hour = sub_str(localtime, 12, 13)
+ local expire_time = (24 - tonumber(hour)) * 3600
+ return expire_time
+end
+
+function _M.get_date_hour()
+ local localtime = ngx.localtime()
+ local hour = sub_str(localtime, 1, 13)
+ return hour
+end
+
+function _M.getHours()
+ local hours = {}
+ local today = ngx.today()
+ local hour = nil
+ for i = 0, 23 do
+ if i < 10 then
+ hour = today .. ' 0' .. i
+ else
+ hour = today .. ' ' .. i
+ end
+ hours[i + 1] = hour
+ end
+
+ return hours
+end
+
+function _M.ipv4_to_int(ip)
+ local ipInt = 0
+ for i, octet in ipairs({ ip:match("(%d+)%.(%d+)%.(%d+)%.(%d+)") }) do
+ ipInt = ipInt + tonumber(octet) * 256 ^ (4 - i)
+ end
+ return ipInt
+end
+
+function _M.is_ipv6(ip)
+ if find_str(ip, ':') then
+ return true
+ end
+ return false
+end
+
+function _M.is_ip_in_array(ip, ipStart, ipEnd)
+ if ip >= ipStart and ip <= ipEnd then
+ return true
+ end
+ return false
+end
+
+function _M.get_real_ip()
+ local var = ngx.var
+ local ips = {
+ var.http_x_forwarded_for,
+ var.http_proxy_client_ip,
+ var.http_wl_proxy_client_ip,
+ var.http_http_client_ip,
+ var.http_http_x_forwarded_for,
+ var.remote_addr
+ }
+
+ for _, ip in pairs(ips) do
+ if ip and ip ~= "" then
+ if type(ip) == "table" then
+ ip = ip[1]
+ end
+ return ip
+ end
+ end
+
+ return "unknown"
+end
+
+function _M.get_header(headerKey)
+ return ngx.req.get_headers(20000)[headerKey]
+end
+
+function _M.get_headers()
+ return ngx.req.get_headers(20000)
+end
+return _M
diff --git a/plugins/openresty/waf/log_and_traffic.lua b/plugins/openresty/waf/log_and_traffic.lua
new file mode 100644
index 000000000..65ef33d52
--- /dev/null
+++ b/plugins/openresty/waf/log_and_traffic.lua
@@ -0,0 +1,232 @@
+local utils = require "utils"
+local stringutf8 = require "stringutf8"
+local logger_factory = require "logger_factory"
+local db = require "db"
+local config = require "config"
+local redis_util = require "redis_util"
+local action = require "action"
+
+local upper_str = string.upper
+local concat_table = table.concat
+local tonumber = tonumber
+local get_expire_time = utils.get_expire_time
+local get_date_hour = utils.get_date_hour
+local get_today = ngx.today
+
+local ATTACK_PREFIX = "attack_"
+local ATTACK_TYPE_PREFIX = "attack_type_"
+
+local function writeAttackLog()
+ local rule_table = ngx.ctx.rule_table
+ local data = ngx.ctx.hitData
+ local action = ngx.ctx.action
+ local rule = rule_table.rule
+
+ local rule_type = rule_table.type
+ if not rule_type then
+ rule_type = "default"
+ end
+
+ local realIp = ngx.ctx.ip
+
+ local geoip = ngx.ctx.geoip
+ local country = geoip.country["zh"] or ""
+ local province = geoip.province["zh"] or ""
+ local city = ""
+ local longitude = geoip.longitude
+ local latitude = geoip.latitude
+
+ local method = ngx.req.get_method()
+ local uri = ngx.var.request_uri
+ local ua = ngx.ctx.ua
+ local host = ngx.var.server_name
+ local protocol = ngx.var.server_protocol
+ local attackTime = ngx.localtime()
+
+ local website_key = ngx.ctx.website_key
+
+ local address = country .. province .. city
+ address = stringutf8.default_if_blank(address, '-')
+ ua = stringutf8.default_if_blank(ua, '-')
+ data = stringutf8.default_if_blank(data, '-')
+
+ local log_path = "/www/sites/" .. website_key .. "/attack.log"
+ local logStr = concat_table({ rule_type, realIp, address, "[" .. attackTime .. "]", '"' .. method, host, uri, protocol .. '"', data, '"' .. ua .. '"', '"' .. rule .. '"', action }, ' ')
+ local host_logger = logger_factory.get_logger(log_path, host, true)
+ host_logger:log(logStr .. '\n')
+
+ db.init_db()
+ if wafdb == nil then
+ return false
+ end
+
+ local isBlock = 0
+ local blocking_time = 0
+ if ngx.ctx.ipBlocked then
+ isBlock = 1
+ blocking_time = tonumber(rule_table.ipBlockTime)
+ end
+
+ local insertQuery = [[
+ INSERT INTO attack_log (
+ ip, ip_city, ip_country, ip_subdivisions, ip_continent,
+ ip_longitude, ip_latitude, time, localtime, server_name,
+ website_key, host, method, uri, user_agent, rule,
+ nginx_log, blocking_time, action, msg, params, is_block
+ ) VALUES (
+ :realIp, :city, :country, :subdivisions, :continent,
+ :longitude, :latitude, :time, :localtime, :host,
+ :website_key, :host, :method, :uri, :ua, :rule_type,
+ :logStr, :blocking_time, :action, :msg, :params, :is_block
+ )
+ ]]
+
+ local stmt = wafdb:prepare(insertQuery)
+
+ stmt:bind_names {
+ realIp = realIp,
+ city = city,
+ country = country,
+ subdivisions = "",
+ continent = "",
+ longitude = longitude,
+ latitude = latitude,
+ time = os.time(),
+ localtime = os.date("%Y-%m-%d %H:%M:%S", os.time()),
+ host = host,
+ website_key = website_key,
+ method = method,
+ uri = uri,
+ ua = ua,
+ rule_type = rule_type,
+ logStr = logStr,
+ blocking_time = blocking_time or 0,
+ action = action,
+ msg = "msg",
+ params = "Params",
+ is_block = isBlock
+ }
+
+ local code = stmt:step()
+ stmt:finalize()
+
+ if code ~= 101 then
+ local errorMsg = wafdb:errmsg()
+ if errorMsg then
+ ngx.log(ngx.ERR, "insert attack_log error", errorMsg)
+ end
+ end
+
+end
+
+local function writeIPBlockLog()
+ local rule_table = ngx.ctx.rule_table
+ local ip = ngx.ctx.ip
+ local website_key = ngx.ctx.website_key
+ local log_path = "/www/sites/" .. website_key .. "/attack.log"
+ local host_logger = logger_factory.get_logger(log_path .. "ipBlock.log", 'ipBlock', false)
+
+ host_logger:log(concat_table({ ngx.localtime(), ip, rule_table.type, rule_table.ipBlockTime .. 's' }, ' ') .. "\n")
+
+ --todo 永久拉黑IP
+ --if rule_table.ipBlockTimeout == 0 then
+ -- local ipBlackLogger = logger_factory.get_logger(rulePath .. "ipBlackList", 'ipBlack', false)
+ -- ipBlackLogger:log(ip .. "\n")
+ --end
+end
+
+-- 按小时统计当天请求流量,存入缓存,key格式:2023-05-05 09
+local function countRequestTraffic()
+ local hour = get_date_hour()
+ local dict = ngx.shared.dict_req_count
+ local expire_time = get_expire_time()
+ local count, err = dict:incr(hour, 1, 0, expire_time)
+ if not count then
+ dict:set(hour, 1, expire_time)
+ ngx.log(ngx.ERR, "failed to count traffic ", err)
+ end
+end
+
+--[[
+ 按小时统计当天攻击请求流量,存入缓存,key格式:attack_2023-05-05 09
+ 按天统计当天所有攻击类型流量,存入缓存,key格式:attack_type_2023-05-05_ARGS
+]]
+local function countAttackRequestTraffic()
+ local rule_table = ngx.ctx.rule_table
+ local rule_type = ""
+ if rule_table.rule_type then
+ rule_type = upper_str(rule_table.rule_type)
+ end
+ if rule_table.type then
+ rule_type = upper_str(rule_table.type)
+ end
+ local dict = ngx.shared.dict_req_count
+ local count, err = nil, nil
+ local expire_time = get_expire_time()
+
+ if rule_type ~= 'WHITEIP' then
+ local hour = get_date_hour()
+ local key = ATTACK_PREFIX .. hour
+ count, err = dict:incr(key, 1, 0, expire_time)
+ if not count then
+ dict:set(key, 1, expire_time)
+ ngx.log(ngx.ERR, "failed to count attack traffic ", err)
+ end
+ end
+
+ local today = get_today() .. '_'
+ local type_key = ATTACK_TYPE_PREFIX .. today .. rule_type
+ count, err = dict:incr(type_key, 1, 0, expire_time)
+
+ if not count and err == "not found" then
+ dict:set(type_key, 1, expire_time)
+ ngx.log(ngx.ERR, "failed to count attack traffic ", err)
+ end
+end
+
+local function count_not_found()
+ if ngx.status ~= 404 then
+ return
+ end
+ if config.is_global_state_on("notFoundCount") then
+ local ip = ngx.ctx.ip
+ local not_found_config = config.get_global_config("notFoundCount")
+ local key = ip
+
+ if config.is_redis_on() then
+ key = "cc_attack_count:" .. key
+ local count, _ = redis_util.incr(key, not_found_config.duration)
+ if not count then
+ redis_util.set(key, 1, not_found_config.duration)
+ elseif count >= not_found_config.threshold then
+ action.block_ip(ip, not_found_config)
+ return
+ end
+ else
+ key = ip .. "not_found"
+ local limit = ngx.shared.waf_limit
+ local count, _ = limit:incr(key, 1, 0, not_found_config.duration)
+ if not count then
+ limit:set(key, 1, not_found_config.duration)
+ elseif count >= not_found_config.threshold then
+ action.block_ip(ip, not_found_config)
+ return
+ end
+ end
+ end
+end
+
+if config.is_waf_on() then
+ count_not_found()
+ countRequestTraffic()
+ local isAttack = ngx.ctx.isAttack
+
+ if isAttack then
+ writeAttackLog()
+ countAttackRequestTraffic()
+ end
+
+ -- if ngx.ctx.ipBlocked then
+ -- writeIPBlockLog()
+ -- end
+end
diff --git a/plugins/openresty/waf/rules/acl.json b/plugins/openresty/waf/rules/acl.json
new file mode 100644
index 000000000..93a40514b
--- /dev/null
+++ b/plugins/openresty/waf/rules/acl.json
@@ -0,0 +1,23 @@
+{
+ "rules": [
+ {
+ "state": "on",
+ "rule": "no Cookie",
+ "name": "拦截不带Cookie的请求",
+ "conditions": [
+ {
+ "field": "URL",
+ "pattern": "/test/\\d+\\.html"
+ },
+ {
+ "field": "Cookie",
+ "pattern": ""
+ }
+ ],
+ "action": "deny",
+ "autoIpBlock": "off",
+ "ipBlockTimeout": 60,
+ "description": "拦截不带Cookie的请求"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/plugins/openresty/waf/rules/args.json b/plugins/openresty/waf/rules/args.json
new file mode 100644
index 000000000..484515da2
--- /dev/null
+++ b/plugins/openresty/waf/rules/args.json
@@ -0,0 +1,88 @@
+{
+ "rules": [
+ {
+ "state": "on",
+ "rule": "select.+(from|limit)"
+ },
+ {
+ "state": "on",
+ "rule": "(?:(union(.*?)select))"
+ },
+ {
+ "state": "on",
+ "rule": "having|rongjitest"
+ },
+ {
+ "state": "on",
+ "rule": "sleep\\((\\s*)(\\d*)(\\s*)\\)"
+ },
+ {
+ "state": "on",
+ "rule": "benchmark\\((.*)\\,(.*)\\)"
+ },
+ {
+ "state": "on",
+ "rule": "(?:from\\W+information_schema\\W)"
+ },
+ {
+ "state": "on",
+ "rule": "(?:(?:current_)user|database|schema|connection_id)\\s*\\("
+ },
+ {
+ "state": "on",
+ "rule": "(?:etc\\/\\W*passwd)"
+ },
+ {
+ "state": "on",
+ "rule": "into(\\s+)+(?:dump|out)file\\s*"
+ },
+ {
+ "state": "on",
+ "rule": "group\\s+by.+\\("
+ },
+ {
+ "state": "on",
+ "rule": "xwork.MethodAccessor"
+ },
+ {
+ "state": "on",
+ "rule": "(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\\("
+ },
+ {
+ "state": "on",
+ "rule": "xwork\\.MethodAccessor"
+ },
+ {
+ "state": "on",
+ "rule": "(gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\\:\\/"
+ },
+ {
+ "state": "on",
+ "rule": "java\\.lang"
+ },
+ {
+ "state": "on",
+ "rule": "\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\\["
+ },
+ {
+ "state": "on",
+ "rule": "\\<(iframe|script|body|img|layer|div|meta|style|base|object|input)"
+ },
+ {
+ "state": "on",
+ "rule": "(onmouseover|onerror|onload)\\="
+ },
+ {
+ "state": "on",
+ "rule": "/shell?cd+/tmp;\\s*rm+-rf\\+\\*;\\s*wget"
+ },
+ {
+ "state": "on",
+ "rule": "/systembc/password.php"
+ },
+ {
+ "state":"on",
+ "rule":"(Acunetix-Aspect|Acunetix-Aspect-Password|Acunetix-Aspect-Queries|X-WIPP|X-RequestManager-Memo|X-Request-Memo|X-Scan-Memo)"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/plugins/openresty/waf/rules/ccurl.json b/plugins/openresty/waf/rules/ccurl.json
new file mode 100644
index 000000000..544b7b4dd
--- /dev/null
+++ b/plugins/openresty/waf/rules/ccurl.json
@@ -0,0 +1,3 @@
+{
+
+}
\ No newline at end of file
diff --git a/plugins/openresty/waf/rules/cookie.json b/plugins/openresty/waf/rules/cookie.json
new file mode 100644
index 000000000..98323476e
--- /dev/null
+++ b/plugins/openresty/waf/rules/cookie.json
@@ -0,0 +1,88 @@
+{
+ "rules": [
+ {
+ "state": "on",
+ "rule": "\\.\\./"
+ },
+ {
+ "state": "on",
+ "rule": "\\:\\$"
+ },
+ {
+ "state": "on",
+ "rule": "\\$\\{"
+ },
+ {
+ "state": "on",
+ "rule": "select.+(from|limit)"
+ },
+ {
+ "state": "on",
+ "rule": "(?:(union(.*?)select))"
+ },
+ {
+ "state": "on",
+ "rule": "having|rongjitest"
+ },
+ {
+ "state": "on",
+ "rule": "sleep\\((\\s*)(\\d*)(\\s*)\\)"
+ },
+ {
+ "state": "on",
+ "rule": "benchmark\\((.*)\\,(.*)\\)"
+ },
+ {
+ "state": "on",
+ "rule": "base64_decode\\("
+ },
+ {
+ "state": "on",
+ "rule": "(?:from\\W+information_schema\\W)"
+ },
+ {
+ "state": "on",
+ "rule": "(?:(?:current_)user|database|schema|connection_id)\\s*\\("
+ },
+ {
+ "state": "on",
+ "rule": "(?:etc\\/\\W*passwd)"
+ },
+ {
+ "state": "on",
+ "rule": "into(\\s+)+(?:dump|out)file\\s*"
+ },
+ {
+ "state": "on",
+ "rule": "group\\s+by.+\\("
+ },
+ {
+ "state": "on",
+ "rule": "xwork.MethodAccessor"
+ },
+ {
+ "state": "on",
+ "rule": "(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\\("
+ },
+ {
+ "state": "on",
+ "rule": "xwork\\.MethodAccessor"
+ },
+ {
+ "state": "on",
+ "rule": "(gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\\:\\/"
+ },
+ {
+ "state": "on",
+ "rule": "java\\.lang"
+ },
+ {
+ "state": "on",
+ "rule": "\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\\["
+ },
+ {
+ "state":"on",
+ "rule":"(CustomCookie|acunetixCookie)"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/plugins/openresty/waf/rules/defaultUaBlack.json b/plugins/openresty/waf/rules/defaultUaBlack.json
new file mode 100644
index 000000000..5932b3725
--- /dev/null
+++ b/plugins/openresty/waf/rules/defaultUaBlack.json
@@ -0,0 +1,16 @@
+{
+ "nextId": 3,
+ "rules": [
+ {
+ "id": 1,
+ "state": "on",
+ "type": "defaultUABlack",
+ "action": "deny",
+ "rule": "HTTrack|Apache-HttpClient|harvest|audit|dirbuster|pangolin|nmap|sqln|hydra|Parser|libwww|BBBike|sqlmap|w3af|owasp|Nikto|fimap|havij|zmeu|BabyKrokodil|netsparker|httperf| SF/",
+ "ipBlock": "on",
+ "ipBlockTimeout": 600,
+ "code": 403,
+ "description": "一些不友好ua"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/plugins/openresty/waf/rules/header.json b/plugins/openresty/waf/rules/header.json
new file mode 100644
index 000000000..58bc639d4
--- /dev/null
+++ b/plugins/openresty/waf/rules/header.json
@@ -0,0 +1,7 @@
+{
+ "rules":[
+ {"state":"on","rule":"/TomcatBypass/Command/Base64"},
+ {"state":"on","rule":"j\\S*ndi\\S*:\\S*(?:dap|dns)\\S+"},
+ {"state":"on","rule":"(/acunetix-wvs-test-for-some-inexistent-file|netsparker|acunetix_wvs_security_test|AppScan|XSS@HERE)"}
+ ]
+}
\ No newline at end of file
diff --git a/plugins/openresty/waf/rules/ipBlack.json b/plugins/openresty/waf/rules/ipBlack.json
new file mode 100644
index 000000000..bd0c7228e
--- /dev/null
+++ b/plugins/openresty/waf/rules/ipBlack.json
@@ -0,0 +1,10 @@
+{
+ "rules": [
+ {
+ "name": "拦截IP",
+ "state": "on",
+ "type": "ipv4",
+ "ipv4": "123"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/plugins/openresty/waf/rules/ipBlackList b/plugins/openresty/waf/rules/ipBlackList
new file mode 100644
index 000000000..a9efb5db1
--- /dev/null
+++ b/plugins/openresty/waf/rules/ipBlackList
@@ -0,0 +1,10000 @@
+1.11.62.185
+1.116.157.153
+1.117.199.237
+1.117.229.208
+1.14.68.155
+1.15.154.181
+1.15.94.16
+1.169.208.128
+1.173.116.74
+1.173.195.114
+1.179.202.86
+1.20.253.226
+1.203.115.79
+1.213.251.50
+1.215.116.254
+1.215.233.74
+1.219.223.120
+1.22.126.92
+1.22.129.50
+1.22.130.86
+1.22.228.147
+1.22.54.70
+1.222.42.150
+1.223.107.138
+1.226.194.70
+1.233.206.27
+1.234.2.45
+1.234.47.239
+1.234.80.51
+1.24.38.202
+1.245.61.144
+1.246.222.94
+1.254.228.72
+1.28.193.174
+1.28.86.66
+1.30.20.110
+1.34.105.239
+1.34.105.8
+1.34.17.141
+1.34.230.122
+1.34.58.224
+1.34.69.11
+1.34.70.148
+1.36.71.153
+1.54.190.115
+1.56.207.92
+1.58.216.36
+1.70.124.45
+1.70.126.34
+1.70.13.86
+1.70.143.236
+1.70.8.212
+1.70.8.233
+1.70.84.132
+1.70.9.98
+1.71.253.133
+1.82.135.154
+1.82.194.17
+1.9.78.242
+100.38.226.74
+101.128.68.195
+101.13.0.13
+101.13.0.210
+101.13.0.228
+101.13.0.246
+101.13.0.81
+101.13.0.88
+101.176.27.159
+101.178.223.39
+101.200.166.251
+101.206.243.239
+101.207.6.21
+101.230.116.194
+101.231.146.36
+101.255.73.74
+101.32.11.149
+101.32.31.213
+101.32.74.175
+101.33.123.220
+101.33.80.197
+101.34.35.141
+101.36.104.224
+101.36.107.47
+101.36.108.106
+101.36.118.6
+101.36.97.131
+101.37.150.247
+101.42.138.160
+101.42.226.80
+101.42.25.236
+101.42.253.85
+101.42.33.235
+101.43.110.129
+101.43.155.190
+101.43.82.213
+101.50.2.233
+101.50.87.246
+101.58.98.180
+101.66.144.202
+101.75.56.14
+101.89.219.59
+101.98.52.66
+101.99.33.97
+102.128.193.2
+102.128.78.42
+102.129.153.232
+102.129.153.241
+102.129.37.140
+102.165.48.84
+102.165.96.5
+102.182.226.28
+102.217.123.243
+102.218.10.141
+102.219.86.14
+102.220.16.21
+102.220.22.34
+102.220.23.51
+102.220.23.83
+102.222.160.111
+102.23.122.231
+102.36.230.165
+102.50.251.51
+102.90.34.90
+103.10.20.136
+103.101.225.67
+103.102.152.11
+103.104.29.43
+103.106.104.9
+103.106.154.15
+103.107.97.160
+103.108.146.96
+103.11.81.132
+103.110.13.27
+103.115.130.5
+103.116.52.145
+103.116.52.251
+103.116.52.254
+103.116.52.255
+103.116.52.89
+103.116.53.106
+103.116.53.121
+103.116.53.170
+103.117.103.13
+103.117.180.72
+103.117.213.164
+103.118.168.67
+103.12.162.93
+103.12.199.14
+103.120.178.54
+103.121.19.171
+103.121.90.183
+103.123.239.41
+103.127.36.123
+103.129.212.246
+103.13.206.121
+103.130.214.232
+103.130.215.45
+103.130.218.156
+103.130.218.189
+103.133.108.61
+103.133.111.214
+103.133.20.61
+103.135.208.210
+103.135.35.58
+103.135.88.206
+103.137.89.38
+103.138.173.5
+103.14.26.208
+103.143.171.228
+103.143.239.211
+103.143.72.105
+103.144.243.112
+103.144.247.252
+103.144.87.192
+103.144.87.84
+103.145.179.54
+103.145.50.168
+103.146.140.66
+103.146.176.238
+103.146.202.151
+103.146.21.5
+103.147.162.114
+103.147.242.68
+103.147.62.157
+103.149.26.51
+103.149.26.89
+103.149.27.51
+103.149.28.105
+103.149.28.238
+103.150.117.41
+103.153.92.75
+103.154.94.27
+103.155.105.254
+103.156.86.18
+103.156.93.143
+103.157.104.233
+103.157.114.74
+103.157.115.26
+103.157.126.122
+103.157.26.11
+103.157.26.145
+103.158.139.227
+103.159.206.94
+103.16.136.149
+103.160.236.91
+103.160.3.10
+103.160.5.233
+103.161.254.150
+103.162.20.168
+103.162.29.14
+103.162.68.23
+103.163.139.202
+103.163.215.12
+103.164.221.210
+103.164.98.138
+103.165.130.154
+103.167.134.71
+103.167.35.109
+103.168.56.208
+103.169.214.101
+103.171.91.192
+103.172.94.224
+103.173.78.11
+103.175.206.43
+103.176.151.88
+103.176.79.0
+103.176.79.163
+103.176.96.66
+103.176.96.68
+103.176.96.75
+103.176.97.6
+103.178.228.17
+103.178.228.27
+103.178.228.28
+103.178.228.31
+103.178.228.34
+103.178.228.35
+103.178.228.40
+103.178.229.173
+103.178.229.175
+103.178.229.198
+103.178.229.216
+103.178.229.217
+103.178.236.17
+103.179.242.51
+103.179.242.89
+103.179.56.169
+103.179.57.150
+103.180.120.170
+103.181.142.170
+103.181.156.23
+103.183.74.227
+103.183.75.49
+103.185.243.3
+103.186.100.104
+103.187.110.186
+103.187.147.100
+103.187.147.35
+103.187.190.40
+103.187.191.147
+103.187.191.157
+103.187.191.161
+103.187.191.162
+103.187.191.165
+103.187.191.166
+103.187.191.167
+103.187.191.176
+103.187.191.177
+103.187.191.185
+103.187.191.194
+103.187.191.204
+103.187.191.209
+103.187.191.216
+103.187.191.223
+103.187.191.226
+103.187.191.229
+103.187.191.235
+103.187.191.238
+103.187.191.241
+103.187.191.253
+103.187.198.34
+103.187.9.9
+103.189.234.25
+103.189.235.178
+103.191.15.239
+103.191.178.123
+103.191.92.4
+103.192.213.124
+103.194.243.183
+103.195.236.140
+103.195.237.103
+103.199.210.150
+103.2.233.237
+103.20.191.36
+103.20.34.160
+103.200.20.70
+103.200.22.70
+103.203.224.181
+103.203.57.13
+103.203.57.15
+103.203.57.16
+103.203.57.2
+103.203.57.22
+103.203.57.23
+103.203.57.28
+103.203.57.4
+103.203.57.6
+103.203.58.0
+103.203.58.1
+103.203.58.2
+103.203.59.12
+103.203.59.14
+103.203.59.2
+103.203.59.4
+103.203.59.6
+103.203.59.8
+103.204.200.75
+103.205.112.25
+103.206.131.33
+103.207.36.13
+103.209.101.142
+103.21.77.110
+103.211.217.103
+103.213.116.60
+103.214.20.54
+103.215.80.141
+103.216.220.22
+103.216.223.204
+103.217.78.2
+103.218.243.130
+103.221.252.46
+103.224.119.102
+103.224.201.63
+103.224.243.143
+103.224.36.226
+103.226.138.171
+103.227.130.46
+103.230.154.34
+103.231.46.66
+103.232.245.27
+103.233.94.20
+103.234.209.66
+103.235.199.37
+103.237.144.204
+103.237.145.121
+103.237.145.23
+103.237.146.15
+103.238.71.108
+103.239.38.122
+103.242.0.159
+103.242.199.99
+103.248.120.6
+103.248.60.70
+103.250.10.88
+103.250.11.146
+103.250.11.181
+103.250.11.82
+103.250.159.26
+103.253.146.6
+103.253.147.160
+103.253.175.10
+103.254.71.45
+103.26.136.173
+103.26.87.29
+103.27.203.40
+103.28.205.219
+103.28.52.210
+103.29.3.6
+103.30.43.137
+103.35.72.217
+103.36.192.42
+103.37.125.10
+103.37.83.26
+103.38.4.238
+103.39.133.250
+103.39.8.108
+103.4.64.124
+103.45.234.22
+103.46.240.85
+103.47.57.205
+103.48.116.56
+103.48.193.146
+103.48.193.51
+103.53.169.102
+103.54.57.185
+103.54.93.58
+103.55.75.8
+103.56.61.130
+103.56.61.132
+103.56.61.139
+103.56.61.144
+103.63.111.14
+103.66.48.67
+103.66.50.94
+103.67.162.252
+103.67.165.114
+103.68.52.210
+103.7.40.39
+103.70.142.229
+103.72.147.115
+103.72.6.149
+103.74.105.158
+103.74.72.221
+103.75.148.11
+103.75.198.171
+103.75.199.180
+103.75.199.40
+103.78.143.130
+103.78.88.51
+103.82.145.161
+103.82.21.117
+103.82.241.69
+103.82.93.127
+103.82.93.6
+103.83.149.97
+103.83.81.183
+103.83.81.212
+103.83.81.247
+103.84.165.22
+103.84.236.242
+103.85.23.10
+103.86.146.140
+103.86.181.235
+103.87.102.235
+103.87.236.90
+103.89.14.88
+103.9.159.153
+103.9.36.159
+103.9.36.169
+103.90.177.102
+103.90.227.194
+103.91.136.18
+103.91.44.214
+103.92.37.130
+103.92.39.219
+103.92.47.112
+103.93.201.206
+103.94.108.86
+103.96.129.191
+103.96.151.129
+103.96.151.81
+103.97.178.122
+103.97.247.139
+103.98.176.2
+103.98.214.139
+103.99.10.254
+103.99.36.22
+104.128.228.242
+104.131.12.184
+104.131.13.185
+104.131.16.70
+104.131.164.24
+104.131.164.49
+104.131.178.116
+104.131.181.99
+104.131.190.193
+104.131.2.168
+104.131.3.1
+104.131.33.117
+104.131.40.97
+104.152.52.100
+104.152.52.202
+104.152.52.239
+104.152.59.65
+104.156.155.18
+104.156.155.20
+104.156.155.21
+104.156.155.23
+104.156.155.24
+104.156.155.25
+104.156.155.32
+104.156.155.36
+104.156.155.4
+104.158.110.144
+104.162.221.123
+104.168.14.104
+104.168.24.228
+104.168.64.249
+104.168.68.198
+104.168.96.7
+104.174.13.215
+104.178.73.49
+104.189.84.73
+104.194.11.171
+104.199.31.214
+104.199.35.3
+104.199.76.31
+104.200.151.16
+104.211.211.183
+104.211.77.31
+104.223.153.7
+104.236.111.25
+104.236.118.222
+104.236.128.10
+104.236.128.14
+104.236.182.223
+104.236.228.230
+104.236.237.117
+104.236.246.102
+104.236.7.248
+104.236.78.19
+104.237.240.112
+104.237.252.98
+104.238.83.196
+104.248.1.96
+104.248.10.177
+104.248.129.104
+104.248.131.9
+104.248.134.240
+104.248.138.141
+104.248.141.212
+104.248.146.84
+104.248.158.162
+104.248.159.2
+104.248.169.72
+104.248.18.94
+104.248.232.207
+104.248.241.28
+104.248.242.125
+104.248.248.145
+104.248.25.42
+104.248.251.47
+104.248.253.245
+104.248.29.97
+104.248.31.56
+104.248.34.182
+104.248.36.223
+104.248.92.191
+104.255.74.221
+104.33.199.93
+104.35.232.88
+104.45.17.110
+104.6.69.88
+105.174.38.254
+105.242.133.7
+105.28.108.165
+106.1.152.91
+106.10.122.53
+106.104.113.145
+106.104.126.227
+106.104.194.15
+106.111.38.199
+106.111.48.145
+106.116.169.71
+106.12.174.50
+106.13.106.2
+106.13.12.151
+106.13.87.43
+106.146.233.215
+106.15.44.72
+106.158.230.44
+106.201.230.253
+106.201.233.139
+106.201.236.236
+106.225.142.244
+106.225.193.35
+106.246.224.154
+106.255.249.194
+106.51.158.195
+106.51.3.214
+106.51.81.190
+106.54.184.26
+106.57.170.120
+106.73.74.0
+106.75.128.152
+106.75.136.216
+106.75.146.15
+106.75.148.71
+106.75.152.212
+106.75.156.223
+106.75.164.118
+106.75.164.148
+106.75.165.198
+106.75.182.206
+106.75.186.146
+106.75.41.146
+106.8.46.228
+106.91.215.100
+107.11.131.39
+107.128.177.61
+107.136.201.49
+107.150.104.174
+107.151.203.70
+107.155.48.224
+107.155.55.166
+107.170.192.15
+107.170.197.164
+107.170.20.63
+107.170.224.7
+107.170.225.6
+107.170.226.13
+107.170.226.25
+107.170.227.33
+107.170.228.15
+107.170.228.21
+107.170.229.11
+107.170.229.8
+107.170.231.15
+107.170.232.10
+107.170.233.14
+107.170.233.17
+107.170.234.10
+107.170.234.9
+107.170.235.12
+107.170.237.12
+107.170.238.11
+107.170.238.18
+107.170.238.27
+107.170.240.14
+107.170.240.15
+107.170.240.20
+107.170.240.25
+107.170.241.32
+107.170.241.33
+107.170.241.9
+107.170.242.13
+107.170.244.12
+107.170.244.8
+107.170.245.19
+107.170.245.9
+107.170.246.19
+107.170.247.11
+107.170.247.13
+107.170.247.5
+107.170.248.13
+107.170.248.16
+107.170.248.18
+107.170.249.12
+107.170.249.14
+107.170.249.17
+107.170.249.19
+107.170.249.24
+107.170.250.13
+107.170.250.24
+107.170.250.4
+107.170.250.8
+107.170.251.18
+107.170.251.22
+107.170.251.5
+107.170.252.8
+107.170.253.18
+107.170.253.22
+107.170.253.7
+107.170.254.16
+107.170.254.20
+107.170.255.16
+107.170.255.9
+107.170.39.69
+107.170.76.103
+107.172.140.147
+107.172.60.88
+107.172.63.31
+107.173.144.254
+107.173.157.241
+107.173.159.131
+107.173.165.18
+107.173.209.238
+107.174.11.69
+107.174.69.127
+107.175.127.57
+107.175.28.118
+107.175.44.163
+107.182.128.210
+107.182.16.2
+107.182.17.12
+107.182.20.3
+107.189.1.127
+107.189.14.134
+107.189.29.149
+107.189.3.216
+107.189.31.225
+107.189.31.70
+107.189.7.170
+107.189.8.106
+107.195.63.217
+107.5.40.213
+108.143.153.30
+108.160.199.151
+108.167.178.116
+108.189.246.204
+108.247.245.19
+108.252.209.104
+108.58.113.114
+108.7.206.106
+108.77.84.132
+108.87.157.123
+109.116.128.140
+109.122.221.224
+109.126.34.84
+109.132.246.238
+109.136.193.224
+109.166.171.93
+109.168.144.16
+109.173.113.117
+109.174.10.11
+109.194.108.68
+109.195.194.123
+109.195.69.156
+109.198.110.170
+109.205.213.10
+109.205.213.14
+109.205.213.18
+109.205.213.39
+109.205.213.4
+109.205.213.41
+109.205.213.5
+109.205.213.50
+109.205.213.8
+109.206.243.200
+109.207.200.42
+109.207.200.43
+109.224.33.245
+109.236.45.245
+109.237.96.50
+109.237.97.180
+109.237.98.134
+109.237.98.152
+109.237.98.157
+109.237.98.185
+109.237.98.226
+109.237.98.235
+109.248.6.78
+109.70.100.80
+109.87.185.154
+109.92.246.62
+109.98.208.42
+110.11.234.8
+110.136.216.227
+110.141.246.205
+110.164.149.230
+110.177.146.42
+110.178.36.79
+110.178.79.83
+110.180.145.241
+110.180.150.152
+110.180.152.205
+110.180.154.62
+110.180.161.61
+110.180.177.215
+110.181.118.122
+110.181.235.30
+110.182.126.249
+110.182.127.173
+110.182.15.234
+110.182.172.181
+110.182.236.29
+110.182.237.63
+110.182.239.127
+110.182.239.235
+110.182.250.143
+110.182.76.207
+110.183.16.40
+110.183.24.88
+110.183.49.160
+110.183.52.186
+110.183.53.3
+110.183.56.112
+110.183.58.125
+110.183.59.20
+110.189.153.136
+110.227.203.10
+110.227.251.79
+110.227.252.108
+110.227.254.14
+110.235.1.22
+110.235.243.121
+110.239.67.35
+110.248.92.88
+110.249.225.81
+110.25.99.24
+110.25.99.29
+110.25.99.92
+110.255.36.44
+110.35.173.2
+110.39.16.174
+110.39.51.118
+110.45.146.223
+110.45.147.98
+110.47.68.226
+110.49.142.111
+110.49.17.92
+110.49.17.93
+110.49.17.95
+110.78.211.84
+111.10.250.232
+111.121.218.101
+111.160.208.34
+111.161.124.84
+111.161.125.133
+111.161.65.143
+111.161.65.145
+111.161.65.146
+111.184.88.119
+111.2.71.183
+111.21.161.162
+111.220.36.50
+111.23.117.219
+111.235.252.166
+111.242.58.44
+111.252.139.172
+111.26.206.113
+111.33.43.86
+111.42.133.43
+111.50.82.29
+111.53.57.77
+111.53.66.90
+111.53.87.28
+111.56.185.82
+111.59.143.122
+111.61.166.54
+111.61.211.214
+111.61.212.166
+111.61.213.251
+111.61.90.125
+111.61.93.195
+111.63.22.72
+111.63.31.23
+111.63.40.221
+111.70.13.157
+111.70.13.24
+111.70.17.151
+111.70.18.246
+111.70.18.247
+111.70.18.248
+111.70.19.162
+111.70.19.2
+111.70.19.5
+111.70.20.43
+111.70.20.52
+111.70.28.126
+111.70.28.147
+111.70.28.148
+111.70.3.184
+111.70.36.127
+111.70.36.242
+111.70.37.121
+111.70.4.189
+111.74.8.14
+111.74.8.177
+111.75.223.17
+111.90.150.171
+111.90.150.28
+111.93.165.35
+111.93.227.210
+111.95.141.34
+112.102.48.9
+112.103.232.201
+112.111.0.245
+112.120.80.218
+112.121.189.108
+112.132.162.90
+112.133.221.5
+112.133.225.72
+112.133.238.235
+112.146.164.85
+112.146.205.124
+112.146.247.55
+112.146.37.154
+112.15.117.200
+112.157.108.141
+112.157.216.32
+112.158.45.230
+112.160.22.201
+112.160.255.234
+112.161.214.48
+112.161.23.195
+112.164.236.13
+112.165.36.129
+112.165.49.140
+112.166.10.205
+112.166.156.125
+112.167.160.115
+112.167.181.39
+112.168.126.45
+112.168.27.14
+112.170.0.12
+112.170.200.119
+112.170.99.123
+112.171.218.39
+112.172.191.54
+112.172.23.164
+112.173.125.118
+112.173.174.97
+112.173.74.224
+112.184.73.51
+112.185.10.38
+112.185.210.208
+112.186.10.254
+112.186.248.104
+112.186.86.93
+112.187.12.214
+112.187.236.253
+112.192.19.177
+112.196.223.233
+112.196.223.252
+112.196.43.138
+112.196.62.36
+112.196.9.83
+112.196.9.84
+112.213.120.23
+112.213.120.81
+112.216.108.62
+112.216.255.215
+112.216.96.154
+112.217.207.26
+112.220.111.68
+112.220.235.237
+112.221.85.251
+112.227.97.96
+112.229.192.217
+112.236.138.13
+112.241.192.34
+112.248.61.48
+112.248.91.162
+112.249.81.47
+112.250.202.54
+112.254.186.129
+112.28.209.66
+112.28.209.67
+112.28.35.90
+112.29.109.164
+112.31.56.247
+112.44.194.190
+112.44.197.40
+112.5.116.151
+112.5.178.33
+112.5.3.230
+112.51.249.235
+112.6.191.197
+112.6.212.233
+112.65.255.66
+112.78.134.11
+112.78.177.178
+112.98.70.5
+113.107.244.103
+113.125.140.19
+113.131.245.30
+113.140.8.194
+113.140.95.250
+113.141.67.184
+113.160.180.46
+113.160.226.178
+113.161.204.12
+113.161.55.188
+113.161.72.135
+113.161.74.57
+113.176.3.114
+113.192.108.90
+113.193.254.206
+113.194.140.185
+113.195.160.60
+113.203.237.139
+113.204.50.98
+113.221.25.169
+113.221.77.206
+113.228.251.122
+113.231.195.120
+113.236.135.204
+113.237.0.186
+113.239.199.60
+113.24.133.93
+113.24.155.72
+113.24.191.93
+113.249.91.151
+113.25.128.225
+113.25.220.0
+113.25.250.81
+113.252.14.157
+113.26.226.232
+113.26.237.174
+113.26.56.129
+113.31.162.174
+113.61.181.243
+113.61.242.221
+113.62.160.110
+113.70.145.219
+113.71.133.17
+113.87.80.214
+113.92.222.212
+114.100.173.209
+114.104.158.172
+114.108.203.204
+114.108.26.81
+114.129.98.159
+114.132.198.25
+114.132.216.237
+114.132.234.174
+114.132.47.71
+114.143.238.98
+114.199.146.159
+114.199.195.26
+114.199.228.43
+114.199.241.157
+114.204.218.154
+114.205.54.184
+114.207.113.200
+114.216.6.4
+114.218.54.110
+114.220.151.213
+114.221.222.138
+114.226.169.45
+114.226.238.146
+114.227.51.153
+114.227.55.90
+114.228.185.8
+114.230.13.217
+114.230.186.48
+114.230.69.118
+114.230.89.166
+114.233.167.133
+114.233.80.192
+114.237.7.151
+114.238.119.82
+114.238.55.201
+114.239.102.76
+114.239.103.104
+114.239.233.194
+114.239.245.216
+114.242.150.194
+114.242.150.195
+114.242.150.196
+114.242.150.197
+114.242.38.20
+114.27.80.145
+114.32.125.106
+114.32.23.237
+114.32.82.187
+114.33.12.94
+114.33.128.209
+114.33.148.196
+114.33.157.94
+114.33.163.26
+114.33.164.167
+114.33.249.200
+114.33.56.143
+114.33.80.198
+114.33.85.125
+114.34.166.161
+114.34.17.153
+114.34.209.65
+114.34.222.138
+114.35.0.225
+114.35.13.193
+114.35.150.12
+114.35.158.87
+114.35.174.221
+114.35.197.119
+114.35.197.238
+114.35.210.173
+114.35.253.17
+114.35.31.135
+114.35.35.235
+114.35.49.33
+114.35.53.123
+114.35.62.55
+114.35.74.153
+114.35.88.121
+114.4.110.242
+114.4.245.170
+114.44.130.176
+114.55.170.111
+114.7.149.178
+114.79.146.173
+114.95.170.105
+115.10.81.183
+115.117.116.238
+115.138.134.198
+115.144.5.228
+115.153.15.129
+115.156.98.113
+115.156.98.116
+115.156.98.117
+115.156.98.128
+115.21.212.7
+115.22.73.170
+115.221.87.15
+115.23.217.138
+115.231.197.46
+115.231.254.38
+115.236.24.10
+115.238.49.206
+115.239.233.166
+115.239.248.206
+115.241.167.73
+115.244.210.210
+115.244.249.214
+115.247.213.54
+115.247.46.122
+115.30.10.190
+115.50.44.172
+115.63.129.52
+115.66.226.203
+115.71.239.208
+115.75.142.7
+115.84.229.172
+115.85.53.93
+115.95.180.244
+115.95.229.59
+115.96.121.2
+115.96.134.127
+115.96.148.62
+116.109.45.9
+116.11.221.87
+116.110.78.195
+116.113.124.98
+116.113.248.242
+116.114.97.134
+116.118.50.209
+116.120.156.45
+116.132.3.182
+116.15.151.187
+116.169.117.6
+116.181.18.35
+116.193.135.66
+116.193.159.2
+116.199.110.30
+116.204.182.156
+116.224.91.211
+116.228.84.22
+116.235.87.163
+116.236.187.3
+116.247.112.133
+116.248.182.243
+116.3.136.45
+116.48.138.9
+116.48.142.227
+116.52.144.170
+116.6.56.66
+116.62.155.4
+116.63.155.156
+116.72.190.199
+116.73.52.160
+116.80.50.243
+116.86.105.45
+116.88.225.30
+116.9.120.88
+116.95.38.26
+116.97.183.226
+116.97.240.172
+116.97.240.36
+116.98.169.66
+116.98.175.31
+117.1.28.27
+117.1.29.203
+117.102.26.6
+117.131.215.118
+117.131.215.49
+117.139.244.182
+117.143.25.64
+117.156.196.23
+117.157.119.70
+117.157.87.15
+117.159.86.55
+117.160.239.182
+117.160.3.132
+117.161.75.117
+117.177.215.47
+117.198.97.239
+117.2.49.125
+117.20.204.72
+117.202.18.2
+117.210.147.136
+117.211.11.158
+117.213.147.127
+117.215.151.179
+117.216.210.111
+117.216.211.19
+117.220.10.3
+117.220.27.35
+117.221.201.222
+117.226.60.151
+117.239.103.109
+117.239.28.210
+117.240.54.235
+117.247.233.68
+117.247.73.31
+117.251.85.118
+117.4.136.219
+117.4.137.135
+117.4.139.243
+117.4.152.81
+117.50.160.88
+117.50.183.132
+117.54.148.142
+117.55.182.6
+117.57.64.232
+117.6.86.134
+117.62.218.192
+117.62.22.161
+117.62.8.14
+117.63.198.8
+117.63.20.46
+117.63.210.191
+117.63.211.101
+117.63.36.65
+117.63.55.43
+117.63.74.117
+117.66.241.77
+117.69.255.239
+117.7.231.248
+117.80.245.50
+117.80.96.172
+117.82.93.252
+117.83.69.230
+117.89.244.123
+117.95.228.222
+117.95.231.44
+118.10.120.118
+118.101.192.62
+118.122.251.12
+118.123.105.85
+118.123.105.86
+118.123.105.90
+118.140.205.198
+118.151.209.21
+118.16.60.111
+118.163.113.53
+118.163.195.248
+118.167.183.33
+118.169.156.135
+118.171.210.80
+118.171.240.143
+118.173.74.95
+118.189.243.164
+118.189.243.241
+118.189.8.99
+118.193.35.209
+118.193.44.153
+118.193.56.141
+118.193.57.165
+118.193.59.232
+118.193.59.38
+118.194.247.29
+118.194.250.122
+118.194.251.128
+118.200.42.154
+118.208.127.239
+118.219.110.245
+118.236.242.118
+118.250.176.178
+118.26.110.160
+118.27.35.131
+118.32.203.33
+118.34.117.189
+118.34.14.126
+118.34.209.108
+118.35.35.232
+118.37.84.210
+118.38.54.250
+118.39.187.179
+118.40.248.20
+118.41.20.49
+118.41.204.68
+118.41.204.91
+118.41.52.140
+118.42.124.208
+118.42.160.129
+118.42.22.88
+118.42.220.94
+118.43.95.157
+118.45.176.58
+118.45.205.44
+118.45.65.233
+118.46.126.131
+118.46.216.122
+118.46.28.173
+118.46.33.15
+118.47.181.231
+118.69.34.30
+118.69.55.101
+118.69.69.120
+118.70.127.105
+118.70.170.120
+118.70.180.188
+118.70.48.219
+118.70.49.114
+118.70.74.172
+118.91.62.21
+118.97.119.130
+118.97.212.14
+119.1.126.174
+119.114.59.100
+119.117.171.183
+119.147.212.2
+119.152.254.13
+119.159.226.40
+119.161.96.181
+119.161.97.218
+119.167.219.132
+119.167.99.194
+119.178.245.201
+119.179.222.182
+119.18.194.254
+119.181.149.119
+119.188.125.179
+119.193.179.58
+119.193.23.180
+119.193.4.247
+119.198.69.88
+119.199.165.150
+119.201.86.171
+119.202.128.28
+119.202.159.77
+119.202.218.154
+119.202.218.53
+119.202.30.133
+119.203.155.61
+119.203.36.32
+119.204.201.15
+119.23.105.36
+119.235.19.66
+119.24.76.5
+119.28.107.44
+119.28.115.223
+119.28.118.4
+119.28.2.174
+119.28.233.240
+119.28.27.80
+119.28.89.201
+119.29.132.223
+119.29.80.42
+119.4.250.94
+119.40.92.158
+119.5.157.124
+119.57.138.237
+119.62.212.184
+119.65.149.106
+119.66.109.149
+119.7.135.20
+119.73.179.114
+119.76.177.114
+119.77.134.56
+119.82.135.226
+119.91.207.158
+119.93.85.153
+119.96.101.211
+119.96.175.9
+12.172.110.78
+12.191.116.182
+12.215.177.146
+12.238.55.163
+12.251.130.22
+120.132.122.54
+120.147.35.210
+120.210.206.149
+120.210.206.169
+120.211.101.246
+120.211.110.161
+120.211.137.176
+120.211.138.2
+120.211.178.97
+120.220.54.143
+120.236.216.146
+120.236.219.71
+120.237.165.4
+120.237.206.76
+120.238.110.67
+120.238.71.252
+120.253.186.82
+120.253.197.112
+120.32.50.50
+120.43.48.157
+120.46.215.94
+120.48.37.213
+120.48.64.201
+120.48.86.186
+120.71.146.167
+120.78.193.162
+120.79.225.204
+120.85.114.109
+120.85.98.101
+120.86.141.251
+121.101.246.203
+121.106.136.76
+121.125.112.70
+121.127.234.162
+121.127.234.184
+121.129.92.195
+121.129.93.181
+121.130.91.54
+121.131.175.118
+121.132.6.35
+121.133.255.251
+121.136.12.153
+121.137.145.48
+121.137.197.69
+121.137.24.166
+121.139.37.63
+121.142.127.21
+121.142.153.17
+121.142.252.80
+121.142.87.218
+121.146.142.226
+121.146.235.82
+121.147.53.50
+121.149.140.6
+121.149.186.220
+121.149.93.24
+121.150.149.190
+121.150.202.109
+121.150.4.110
+121.153.203.84
+121.153.245.38
+121.155.127.136
+121.155.162.36
+121.156.141.67
+121.157.62.245
+121.161.122.176
+121.162.101.72
+121.162.82.59
+121.164.64.3
+121.164.82.245
+121.164.82.32
+121.165.204.217
+121.165.242.205
+121.165.8.90
+121.166.2.253
+121.167.200.55
+121.168.3.88
+121.169.147.59
+121.172.188.59
+121.173.251.86
+121.175.167.235
+121.175.233.84
+121.175.246.201
+121.176.250.155
+121.177.70.228
+121.178.157.207
+121.178.188.29
+121.178.188.30
+121.178.213.140
+121.178.235.89
+121.178.43.169
+121.181.100.112
+121.181.192.222
+121.184.87.70
+121.185.200.210
+121.186.76.219
+121.188.160.55
+121.189.128.233
+121.189.145.250
+121.189.166.195
+121.189.85.27
+121.190.114.78
+121.190.137.170
+121.190.22.245
+121.190.54.53
+121.190.68.26
+121.191.199.38
+121.199.12.213
+121.2.72.105
+121.202.199.25
+121.224.241.8
+121.224.52.227
+121.226.138.134
+121.226.143.57
+121.226.212.38
+121.226.251.253
+121.227.156.53
+121.227.71.195
+121.227.88.117
+121.231.107.220
+121.231.116.229
+121.231.183.214
+121.231.201.200
+121.231.246.226
+121.231.84.233
+121.233.180.26
+121.233.204.234
+121.233.251.59
+121.234.159.3
+121.234.228.56
+121.236.130.177
+121.236.149.76
+121.236.224.27
+121.236.87.22
+121.239.167.84
+121.239.76.183
+121.241.227.91
+121.25.66.18
+121.36.241.28
+121.40.128.8
+121.45.48.131
+121.46.20.126
+121.5.163.177
+122.0.26.154
+122.116.109.168
+122.116.169.138
+122.116.193.77
+122.116.196.77
+122.116.208.158
+122.116.213.162
+122.116.251.189
+122.116.32.110
+122.116.48.127
+122.116.66.36
+122.116.68.173
+122.116.68.71
+122.116.75.210
+122.117.118.184
+122.117.146.72
+122.117.198.84
+122.117.205.222
+122.117.5.35
+122.117.71.158
+122.136.195.124
+122.146.196.217
+122.15.177.20
+122.156.247.54
+122.160.10.177
+122.160.119.125
+122.160.14.38
+122.160.157.213
+122.160.157.27
+122.160.221.208
+122.160.25.225
+122.160.34.184
+122.160.50.155
+122.160.68.117
+122.160.71.155
+122.160.76.249
+122.160.95.45
+122.161.17.236
+122.165.132.5
+122.165.171.52
+122.165.176.213
+122.165.204.97
+122.165.215.149
+122.165.218.176
+122.165.220.183
+122.165.240.250
+122.165.62.224
+122.166.101.55
+122.166.124.116
+122.166.156.246
+122.166.187.47
+122.166.249.202
+122.166.251.98
+122.166.254.180
+122.166.52.87
+122.169.101.94
+122.169.105.168
+122.169.111.253
+122.169.117.169
+122.169.119.32
+122.170.5.69
+122.175.198.91
+122.175.3.200
+122.176.103.105
+122.176.65.218
+122.176.79.197
+122.179.159.82
+122.180.85.138
+122.184.65.226
+122.187.224.234
+122.187.225.62
+122.187.225.64
+122.187.226.14
+122.187.227.139
+122.187.227.198
+122.187.228.229
+122.187.228.251
+122.187.229.200
+122.187.230.106
+122.187.230.13
+122.187.230.221
+122.187.230.222
+122.187.230.4
+122.187.230.50
+122.187.230.57
+122.187.234.29
+122.187.235.150
+122.189.112.135
+122.189.254.229
+122.194.11.73
+122.202.41.54
+122.211.138.37
+122.224.15.166
+122.224.90.238
+122.225.55.98
+122.227.52.58
+122.228.136.174
+122.3.192.83
+122.3.201.232
+122.3.253.233
+122.37.252.74
+122.42.147.119
+122.96.31.135
+123.0.26.234
+123.110.12.185
+123.110.176.112
+123.125.174.6
+123.129.175.139
+123.132.232.198
+123.139.116.184
+123.14.112.171
+123.150.192.42
+123.156.226.101
+123.162.169.227
+123.172.80.89
+123.172.81.158
+123.173.109.197
+123.173.52.77
+123.175.113.197
+123.175.64.135
+123.175.88.49
+123.176.38.66
+123.19.17.94
+123.193.145.198
+123.193.214.66
+123.194.60.238
+123.195.33.169
+123.199.17.108
+123.20.143.124
+123.20.22.107
+123.205.171.159
+123.205.58.116
+123.206.7.211
+123.209.211.148
+123.213.121.107
+123.23.91.209
+123.231.237.130
+123.234.131.51
+123.234.135.167
+123.240.157.176
+123.241.189.48
+123.241.93.58
+123.245.64.2
+123.30.149.60
+123.30.149.76
+123.30.187.208
+123.30.98.134
+123.31.29.192
+123.58.207.109
+123.58.216.78
+124.106.227.70
+124.108.19.238
+124.115.221.58
+124.120.129.129
+124.123.76.210
+124.128.223.82
+124.13.250.24
+124.132.142.158
+124.152.1.172
+124.152.57.24
+124.153.165.218
+124.156.2.182
+124.156.208.56
+124.158.10.139
+124.158.12.83
+124.158.147.21
+124.160.90.29
+124.163.209.12
+124.167.20.113
+124.167.227.86
+124.176.247.227
+124.187.103.196
+124.187.97.164
+124.19.77.204
+124.199.53.247
+124.205.216.123
+124.219.166.164
+124.220.169.112
+124.221.238.100
+124.221.85.216
+124.222.10.213
+124.222.27.193
+124.223.107.190
+124.223.220.197
+124.223.98.121
+124.234.180.43
+124.234.182.222
+124.234.184.87
+124.234.239.121
+124.234.245.161
+124.234.246.28
+124.234.247.143
+124.234.247.182
+124.234.254.131
+124.235.248.168
+124.239.181.121
+124.246.93.14
+124.39.132.136
+124.43.136.72
+124.48.227.150
+124.52.118.185
+124.59.224.103
+124.77.14.119
+124.77.159.120
+124.89.86.201
+124.89.86.207
+124.89.86.221
+124.89.86.222
+124.89.86.228
+124.95.132.151
+124.95.156.130
+125.124.137.174
+125.128.148.243
+125.129.85.164
+125.130.242.52
+125.131.142.234
+125.132.190.251
+125.132.28.195
+125.132.41.164
+125.133.112.215
+125.133.54.207
+125.134.168.105
+125.135.52.173
+125.137.1.176
+125.137.114.164
+125.137.117.198
+125.137.39.68
+125.137.64.51
+125.138.16.126
+125.139.170.6
+125.139.34.112
+125.139.60.143
+125.139.69.98
+125.140.156.108
+125.140.181.221
+125.140.246.14
+125.141.120.204
+125.141.139.29
+125.142.142.94
+125.142.239.217
+125.143.83.213
+125.163.160.229
+125.168.122.39
+125.177.207.163
+125.204.18.49
+125.21.59.218
+125.211.197.239
+125.212.231.175
+125.212.243.139
+125.212.251.45
+125.22.75.156
+125.227.199.193
+125.227.34.51
+125.227.53.5
+125.228.11.122
+125.228.160.243
+125.228.169.49
+125.228.195.106
+125.228.69.69
+125.228.79.245
+125.228.83.91
+125.228.88.140
+125.228.91.239
+125.228.99.183
+125.229.101.241
+125.229.146.44
+125.229.221.214
+125.229.235.88
+125.229.58.54
+125.229.72.221
+125.229.80.42
+125.230.91.121
+125.26.179.111
+125.27.157.248
+125.31.46.42
+125.35.109.214
+125.44.193.179
+125.63.110.201
+125.63.121.47
+125.67.61.202
+125.72.150.250
+125.74.112.69
+125.74.196.138
+125.74.239.20
+125.80.210.245
+125.99.173.162
+126.113.24.98
+126.59.144.183
+128.1.248.27
+128.1.248.28
+128.1.248.29
+128.1.248.30
+128.1.248.36
+128.1.248.38
+128.1.248.42
+128.1.248.44
+128.1.34.58
+128.1.79.176
+128.1.91.90
+128.1.91.93
+128.116.134.9
+128.116.154.34
+128.116.175.36
+128.116.233.216
+128.14.128.178
+128.14.128.180
+128.14.128.181
+128.14.128.182
+128.14.133.50
+128.14.133.58
+128.14.137.179
+128.14.137.181
+128.14.141.36
+128.14.141.37
+128.14.141.38
+128.14.141.42
+128.14.141.43
+128.14.141.44
+128.14.141.46
+128.14.152.42
+128.14.152.43
+128.14.152.44
+128.14.152.45
+128.14.152.46
+128.14.209.162
+128.14.209.163
+128.14.209.164
+128.14.209.165
+128.14.209.166
+128.14.209.46
+128.14.226.202
+128.199.1.140
+128.199.102.17
+128.199.107.58
+128.199.115.248
+128.199.120.146
+128.199.129.68
+128.199.133.168
+128.199.135.133
+128.199.137.41
+128.199.138.145
+128.199.141.158
+128.199.141.33
+128.199.145.119
+128.199.146.211
+128.199.148.70
+128.199.150.10
+128.199.16.167
+128.199.16.6
+128.199.162.2
+128.199.164.217
+128.199.167.161
+128.199.168.119
+128.199.177.90
+128.199.179.36
+128.199.18.115
+128.199.185.21
+128.199.186.230
+128.199.187.183
+128.199.19.74
+128.199.20.210
+128.199.20.55
+128.199.211.78
+128.199.234.147
+128.199.24.88
+128.199.250.104
+128.199.45.37
+128.199.5.4
+128.199.52.45
+128.199.55.244
+128.199.58.12
+128.199.64.100
+128.199.66.208
+128.199.68.197
+128.199.68.220
+128.199.68.96
+128.199.69.218
+128.199.70.65
+128.199.73.168
+128.199.74.173
+128.199.76.231
+128.199.77.96
+128.199.80.214
+128.199.82.240
+128.199.84.187
+128.199.87.28
+128.199.97.155
+128.199.99.204
+128.53.182.101
+129.126.119.71
+129.126.119.97
+129.126.196.84
+129.126.210.32
+129.146.145.69
+129.146.250.238
+129.146.42.247
+129.146.79.190
+129.150.48.50
+129.153.83.50
+129.158.52.102
+129.205.124.253
+129.205.208.20
+129.213.100.212
+129.213.50.80
+129.226.158.246
+129.226.189.223
+129.226.198.6
+129.226.198.99
+129.226.199.229
+129.226.200.186
+129.226.200.7
+129.226.205.162
+129.226.205.241
+129.226.207.190
+129.226.207.26
+129.226.209.222
+129.226.210.126
+129.226.210.215
+129.226.213.186
+129.226.214.49
+129.226.214.79
+129.226.215.132
+129.226.220.113
+129.226.220.24
+129.226.220.64
+129.226.221.96
+129.226.222.206
+129.226.93.57
+13.214.25.25
+13.237.174.67
+13.66.131.233
+13.67.221.136
+13.71.46.226
+13.74.46.65
+13.76.162.49
+13.77.72.11
+13.82.51.214
+13.84.151.189
+13.90.16.70
+13.90.19.78
+130.162.136.157
+130.162.42.103
+130.185.96.109
+130.185.96.125
+130.185.97.236
+130.193.42.43
+130.25.115.49
+130.61.177.134
+131.100.167.3
+131.150.195.178
+131.221.200.32
+131.239.47.34
+132.148.165.220
+132.148.76.25
+132.148.77.160
+132.148.78.109
+132.226.159.108
+132.248.14.22
+132.248.65.8
+134.122.121.162
+134.122.16.156
+134.122.17.178
+134.122.19.182
+134.122.20.244
+134.122.38.191
+134.122.56.34
+134.122.57.194
+134.122.63.199
+134.122.74.80
+134.122.78.64
+134.122.80.104
+134.122.84.235
+134.122.86.44
+134.122.92.44
+134.17.16.40
+134.17.16.43
+134.17.17.32
+134.17.89.159
+134.17.89.182
+134.17.94.149
+134.17.94.221
+134.17.94.229
+134.175.182.3
+134.19.179.163
+134.209.103.181
+134.209.104.221
+134.209.109.149
+134.209.127.189
+134.209.149.246
+134.209.150.48
+134.209.154.107
+134.209.169.212
+134.209.176.120
+134.209.178.186
+134.209.179.100
+134.209.187.199
+134.209.188.180
+134.209.19.82
+134.209.190.88
+134.209.200.13
+134.209.200.139
+134.209.203.216
+134.209.211.170
+134.209.227.212
+134.209.244.230
+134.209.64.248
+134.209.68.67
+134.209.79.45
+134.209.94.207
+134.209.95.44
+134.65.249.218
+135.125.200.19
+135.125.233.142
+135.125.236.160
+135.125.68.41
+135.148.149.8
+135.181.84.76
+136.185.11.243
+136.185.18.169
+136.185.7.175
+136.228.161.66
+136.232.73.38
+136.49.106.190
+137.116.148.206
+137.184.0.243
+137.184.104.77
+137.184.107.221
+137.184.111.153
+137.184.112.37
+137.184.131.84
+137.184.134.10
+137.184.140.67
+137.184.145.62
+137.184.148.244
+137.184.16.186
+137.184.164.41
+137.184.168.203
+137.184.176.157
+137.184.183.139
+137.184.184.139
+137.184.198.239
+137.184.2.1
+137.184.201.12
+137.184.216.0
+137.184.217.189
+137.184.225.34
+137.184.228.164
+137.184.35.122
+137.184.37.111
+137.184.5.137
+137.184.50.151
+137.184.50.19
+137.184.55.79
+137.184.58.247
+137.184.60.92
+137.184.69.85
+137.184.72.248
+137.184.73.29
+137.184.78.25
+137.184.89.20
+137.184.96.200
+137.63.149.10
+138.124.184.161
+138.19.61.138
+138.197.102.26
+138.197.11.95
+138.197.160.74
+138.197.169.184
+138.197.176.228
+138.197.176.8
+138.197.177.187
+138.197.180.143
+138.197.185.227
+138.197.200.105
+138.197.223.80
+138.197.66.68
+138.197.96.33
+138.197.97.211
+138.199.19.145
+138.199.19.168
+138.2.62.21
+138.204.27.227
+138.36.228.142
+138.68.102.83
+138.68.103.135
+138.68.143.68
+138.68.145.202
+138.68.178.64
+138.68.19.201
+138.68.208.14
+138.68.208.18
+138.68.226.151
+138.68.230.183
+138.68.240.114
+138.68.244.245
+138.68.255.140
+138.68.27.174
+138.68.55.110
+138.68.58.138
+138.68.8.161
+138.68.82.72
+138.68.87.146
+138.68.9.83
+138.68.9.99
+138.68.99.110
+138.75.250.93
+138.91.3.70
+138.97.96.41
+139.144.239.185
+139.144.239.72
+139.144.239.74
+139.144.239.98
+139.162.121.251
+139.162.190.203
+139.162.67.239
+139.198.0.216
+139.210.5.170
+139.215.195.61
+139.218.96.100
+139.227.102.167
+139.255.248.34
+139.255.50.90
+139.255.54.195
+139.255.90.245
+139.28.218.34
+139.59.1.180
+139.59.102.10
+139.59.108.114
+139.59.109.98
+139.59.113.110
+139.59.118.164
+139.59.121.198
+139.59.126.129
+139.59.127.178
+139.59.127.73
+139.59.129.247
+139.59.144.10
+139.59.16.136
+139.59.16.54
+139.59.167.54
+139.59.176.155
+139.59.18.161
+139.59.186.183
+139.59.187.229
+139.59.188.13
+139.59.189.130
+139.59.190.107
+139.59.213.27
+139.59.215.94
+139.59.22.79
+139.59.224.111
+139.59.224.196
+139.59.231.120
+139.59.231.14
+139.59.232.228
+139.59.235.215
+139.59.235.51
+139.59.248.243
+139.59.25.164
+139.59.250.246
+139.59.251.146
+139.59.255.59
+139.59.27.154
+139.59.31.218
+139.59.33.81
+139.59.36.71
+139.59.37.52
+139.59.46.114
+139.59.68.239
+139.59.7.115
+139.59.78.95
+139.59.9.105
+139.59.90.37
+139.59.90.97
+139.59.92.30
+139.99.101.36
+139.99.118.168
+139.99.251.166
+139.99.8.106
+14.0.200.84
+14.111.242.101
+14.116.220.100
+14.120.224.177
+14.139.230.182
+14.143.43.162
+14.161.10.88
+14.161.12.119
+14.161.27.163
+14.161.50.120
+14.172.23.219
+14.177.232.0
+14.177.239.168
+14.177.75.6
+14.18.154.85
+14.184.116.119
+14.186.54.37
+14.225.19.18
+14.225.192.13
+14.225.253.189
+14.225.253.194
+14.225.254.5
+14.240.56.51
+14.241.237.39
+14.246.55.191
+14.252.246.102
+14.29.130.70
+14.29.221.7
+14.29.242.79
+14.32.0.74
+14.34.228.69
+14.36.126.45
+14.36.53.72
+14.39.169.205
+14.39.195.67
+14.39.245.212
+14.39.52.41
+14.39.65.29
+14.40.102.43
+14.40.126.13
+14.43.128.6
+14.43.186.78
+14.43.231.49
+14.43.253.118
+14.44.1.76
+14.45.158.2
+14.45.242.241
+14.46.153.132
+14.47.185.237
+14.53.134.163
+14.53.9.208
+14.54.103.88
+14.54.116.93
+14.55.231.38
+14.56.196.175
+14.56.254.167
+14.63.160.204
+14.63.203.207
+14.97.150.34
+14.97.238.50
+14.97.52.85
+14.98.182.162
+14.99.254.18
+14.99.4.82
+140.128.136.238
+140.206.156.54
+140.207.232.13
+140.238.122.212
+140.238.177.83
+140.249.194.11
+140.75.165.78
+140.86.12.31
+140.99.157.162
+140.99.198.26
+140.99.234.34
+140.99.32.87
+141.148.135.200
+141.148.84.47
+141.237.83.241
+141.255.162.218
+141.94.106.15
+141.94.17.140
+141.94.175.140
+141.94.26.83
+141.94.68.95
+141.94.87.67
+141.95.160.154
+141.95.192.30
+141.98.10.132
+141.98.10.159
+141.98.10.172
+141.98.101.133
+141.98.102.227
+141.98.11.13
+141.98.11.150
+141.98.11.155
+141.98.11.57
+141.98.11.93
+141.98.168.26
+141.98.6.12
+141.98.6.125
+141.98.6.145
+141.98.6.168
+141.98.6.222
+141.98.6.226
+142.0.111.117
+142.44.210.28
+142.44.215.54
+142.44.247.73
+142.93.113.139
+142.93.115.32
+142.93.127.92
+142.93.143.112
+142.93.163.183
+142.93.171.91
+142.93.178.56
+142.93.187.197
+142.93.194.20
+142.93.196.106
+142.93.197.56
+142.93.201.51
+142.93.203.156
+142.93.210.193
+142.93.211.223
+142.93.213.92
+142.93.217.174
+142.93.217.52
+142.93.220.110
+142.93.233.136
+142.93.241.93
+142.93.242.247
+142.93.242.98
+142.93.245.58
+142.93.31.18
+142.93.46.251
+142.93.58.158
+142.93.8.99
+143.0.165.51
+143.110.148.92
+143.110.159.86
+143.110.160.116
+143.110.176.216
+143.110.177.26
+143.110.179.172
+143.110.190.26
+143.110.220.40
+143.110.227.81
+143.110.230.201
+143.110.241.56
+143.110.248.85
+143.110.248.86
+143.198.117.165
+143.198.126.248
+143.198.133.36
+143.198.136.87
+143.198.145.17
+143.198.146.239
+143.198.146.93
+143.198.154.97
+143.198.169.154
+143.198.180.32
+143.198.190.238
+143.198.194.242
+143.198.198.214
+143.198.20.165
+143.198.200.155
+143.198.204.75
+143.198.215.9
+143.198.216.20
+143.198.222.239
+143.198.224.52
+143.198.234.238
+143.198.236.244
+143.198.4.69
+143.198.54.68
+143.198.77.231
+143.198.92.3
+143.208.14.64
+143.244.144.227
+143.244.161.152
+143.244.162.174
+143.244.172.59
+143.244.182.205
+143.244.190.237
+143.244.190.90
+143.255.119.57
+143.255.141.251
+143.42.1.185
+143.42.1.53
+143.42.1.71
+143.42.185.25
+143.42.205.14
+143.42.50.164
+143.55.94.40
+143.92.42.13
+143.92.42.73
+143.92.63.173
+144.126.143.61
+144.126.145.102
+144.126.192.113
+144.126.194.33
+144.126.204.43
+144.126.210.1
+144.126.211.209
+144.126.217.16
+144.126.219.147
+144.126.226.49
+144.126.236.214
+144.217.13.134
+144.217.243.126
+144.217.46.142
+144.217.87.192
+144.22.236.165
+144.24.155.212
+144.34.212.207
+144.34.212.238
+144.48.250.154
+144.64.135.153
+144.76.225.51
+144.91.105.148
+145.239.200.23
+145.239.83.204
+146.0.77.154
+146.148.44.185
+146.185.137.240
+146.185.156.181
+146.19.169.228
+146.19.173.202
+146.19.57.54
+146.190.121.89
+146.190.152.5
+146.190.166.168
+146.190.217.229
+146.190.227.169
+146.190.38.28
+146.190.52.81
+146.190.53.202
+146.190.65.27
+146.190.78.234
+146.190.88.232
+146.190.96.229
+146.4.92.212
+146.56.45.40
+146.59.127.25
+146.59.154.66
+146.59.228.111
+146.59.233.75
+146.59.250.225
+146.59.83.19
+146.70.115.219
+146.70.61.139
+146.70.94.3
+146.88.240.4
+146.88.241.101
+147.139.139.64
+147.139.188.173
+147.139.188.206
+147.139.35.222
+147.158.246.85
+147.182.148.218
+147.182.150.164
+147.182.154.58
+147.182.171.152
+147.182.172.17
+147.182.175.172
+147.182.179.97
+147.182.181.38
+147.182.211.205
+147.182.218.64
+147.182.218.87
+147.182.224.240
+147.182.225.23
+147.182.228.241
+147.182.228.52
+147.182.233.99
+147.182.237.31
+147.182.244.32
+147.182.245.3
+147.182.250.171
+147.182.253.165
+147.235.55.10
+147.78.103.144
+147.78.103.149
+147.78.103.152
+147.78.103.158
+147.78.103.211
+147.78.103.218
+147.78.103.228
+147.78.103.248
+147.78.103.42
+147.78.241.153
+147.78.47.223
+147.78.47.250
+148.102.49.125
+148.113.133.177
+148.243.170.66
+148.59.244.86
+148.63.215.173
+148.67.181.58
+148.71.154.69
+148.71.35.230
+148.72.209.121
+148.72.247.54
+148.72.40.90
+149.102.156.131
+149.127.191.150
+149.127.197.244
+149.129.129.119
+149.129.172.3
+149.129.182.55
+149.129.233.28
+149.129.50.37
+149.18.24.89
+149.3.36.174
+149.56.200.166
+149.56.240.162
+149.56.26.205
+149.56.74.90
+149.75.146.119
+15.204.174.165
+15.204.205.101
+15.204.207.12
+15.204.209.89
+15.204.224.16
+15.204.224.18
+15.204.229.123
+15.235.203.87
+15.235.33.21
+150.109.112.19
+150.109.148.216
+150.109.172.228
+150.109.205.234
+150.109.5.46
+150.109.7.69
+150.117.32.233
+150.136.32.211
+150.136.62.179
+150.158.148.47
+150.158.168.182
+150.158.20.185
+150.158.43.91
+150.165.77.215
+150.185.10.122
+150.185.10.125
+150.230.235.117
+150.230.85.224
+150.95.183.194
+151.1.187.247
+151.106.113.60
+151.115.79.208
+151.204.149.152
+151.235.22.159
+151.45.28.200
+151.50.72.152
+151.55.70.46
+151.80.148.159
+151.80.149.86
+151.80.60.5
+151.80.91.214
+151.80.91.219
+151.80.91.222
+152.0.152.66
+152.136.123.36
+152.200.181.42
+152.228.145.16
+152.228.174.113
+152.32.128.99
+152.32.131.195
+152.32.133.183
+152.32.141.206
+152.32.143.46
+152.32.144.21
+152.32.144.44
+152.32.147.115
+152.32.148.19
+152.32.149.14
+152.32.149.235
+152.32.150.96
+152.32.151.19
+152.32.151.71
+152.32.154.144
+152.32.157.204
+152.32.164.23
+152.32.167.43
+152.32.168.68
+152.32.170.110
+152.32.171.15
+152.32.172.153
+152.32.174.92
+152.32.186.106
+152.32.187.191
+152.32.187.221
+152.32.189.117
+152.32.190.176
+152.32.200.113
+152.32.200.79
+152.32.205.124
+152.32.210.168
+152.32.213.224
+152.32.215.5
+152.32.225.245
+152.32.226.125
+152.32.226.59
+152.32.228.20
+152.32.233.110
+152.32.234.183
+152.32.234.253
+152.32.234.44
+152.32.236.73
+152.32.245.144
+152.32.245.214
+152.32.245.239
+152.32.66.37
+152.89.160.131
+152.89.196.144
+152.89.196.55
+152.89.196.77
+152.89.198.103
+152.89.66.50
+153.122.156.208
+153.125.69.143
+153.134.75.13
+153.139.223.138
+153.184.166.95
+153.222.137.198
+153.92.16.50
+154.120.243.194
+154.126.186.53
+154.127.163.140
+154.16.49.96
+154.197.30.221
+154.198.193.132
+154.204.30.117
+154.208.10.71
+154.208.10.88
+154.209.125.70
+154.209.4.95
+154.211.14.105
+154.212.148.237
+154.221.16.10
+154.221.17.142
+154.221.29.64
+154.222.234.48
+154.222.239.35
+154.26.131.6
+154.27.27.79
+154.68.18.82
+154.68.232.20
+154.72.194.207
+154.81.221.173
+154.89.5.81
+154.91.84.31
+156.0.130.229
+156.232.12.137
+156.232.12.138
+156.232.12.140
+156.232.12.149
+156.236.70.126
+156.236.75.44
+156.251.172.207
+156.54.11.139
+156.67.208.155
+156.67.214.223
+156.67.216.15
+156.67.221.169
+156.96.114.70
+157.119.79.154
+157.130.207.26
+157.230.1.224
+157.230.106.152
+157.230.115.244
+157.230.115.35
+157.230.115.4
+157.230.118.233
+157.230.125.144
+157.230.128.210
+157.230.139.117
+157.230.17.29
+157.230.178.127
+157.230.179.100
+157.230.185.9
+157.230.191.245
+157.230.22.170
+157.230.221.51
+157.230.223.5
+157.230.23.46
+157.230.241.10
+157.230.241.39
+157.230.254.228
+157.230.41.62
+157.230.42.195
+157.230.45.177
+157.230.52.208
+157.230.55.156
+157.230.6.213
+157.230.6.216
+157.230.86.37
+157.230.9.57
+157.230.91.199
+157.230.91.241
+157.230.92.254
+157.230.94.211
+157.245.100.250
+157.245.102.206
+157.245.109.198
+157.245.109.35
+157.245.12.36
+157.245.137.143
+157.245.137.18
+157.245.147.26
+157.245.149.39
+157.245.156.72
+157.245.157.93
+157.245.176.143
+157.245.203.107
+157.245.204.50
+157.245.206.155
+157.245.216.197
+157.245.252.34
+157.245.40.222
+157.245.44.120
+157.245.49.201
+157.245.67.37
+157.245.69.46
+157.245.81.154
+157.245.88.17
+157.245.88.255
+157.245.91.136
+157.255.153.183
+157.7.112.89
+157.7.193.240
+157.7.202.86
+157.7.212.139
+157.7.67.198
+158.101.165.108
+158.101.23.56
+158.160.103.24
+158.160.105.64
+158.160.105.75
+158.160.17.133
+158.160.22.219
+158.160.38.134
+158.160.42.227
+158.160.49.21
+158.160.59.87
+158.160.6.234
+158.255.7.133
+158.69.111.17
+158.69.80.165
+158.69.92.169
+159.138.116.7
+159.192.124.122
+159.192.124.143
+159.192.143.249
+159.203.102.122
+159.203.105.128
+159.203.11.247
+159.203.112.250
+159.203.117.103
+159.203.128.174
+159.203.129.103
+159.203.130.78
+159.203.136.174
+159.203.165.156
+159.203.17.66
+159.203.170.197
+159.203.174.212
+159.203.179.44
+159.203.181.214
+159.203.182.218
+159.203.183.127
+159.203.186.114
+159.203.189.203
+159.203.192.19
+159.203.240.10
+159.203.240.14
+159.203.44.105
+159.203.71.159
+159.203.81.114
+159.203.83.104
+159.203.84.97
+159.223.101.183
+159.223.102.145
+159.223.120.180
+159.223.129.59
+159.223.135.216
+159.223.136.180
+159.223.154.6
+159.223.167.92
+159.223.18.214
+159.223.186.239
+159.223.187.62
+159.223.193.18
+159.223.208.228
+159.223.21.148
+159.223.32.202
+159.223.45.100
+159.223.45.3
+159.223.5.229
+159.223.50.39
+159.223.57.252
+159.223.59.81
+159.223.60.192
+159.223.61.55
+159.223.67.245
+159.223.69.158
+159.223.77.249
+159.223.79.49
+159.223.83.179
+159.65.1.41
+159.65.11.5
+159.65.111.248
+159.65.12.30
+159.65.123.176
+159.65.124.66
+159.65.127.239
+159.65.127.62
+159.65.129.227
+159.65.133.176
+159.65.143.78
+159.65.145.76
+159.65.150.108
+159.65.150.139
+159.65.150.25
+159.65.151.241
+159.65.154.92
+159.65.155.154
+159.65.180.151
+159.65.183.47
+159.65.201.11
+159.65.205.178
+159.65.205.249
+159.65.218.99
+159.65.220.18
+159.65.223.90
+159.65.231.164
+159.65.235.114
+159.65.240.232
+159.65.249.79
+159.65.31.38
+159.65.34.202
+159.65.41.104
+159.65.43.192
+159.65.6.45
+159.65.64.70
+159.65.64.76
+159.65.65.75
+159.65.84.193
+159.89.101.18
+159.89.104.182
+159.89.106.28
+159.89.107.61
+159.89.150.60
+159.89.152.26
+159.89.163.158
+159.89.173.162
+159.89.174.44
+159.89.19.227
+159.89.196.121
+159.89.199.244
+159.89.206.0
+159.89.230.196
+159.89.232.114
+159.89.236.160
+159.89.236.71
+159.89.34.114
+159.89.47.106
+159.89.82.71
+159.89.86.224
+159.89.89.195
+159.89.92.122
+159.89.95.98
+160.120.247.113
+160.153.252.142
+160.154.43.146
+160.155.226.10
+160.251.19.168
+161.0.153.88
+161.10.247.113
+161.132.183.24
+161.35.0.70
+161.35.108.241
+161.35.114.17
+161.35.119.216
+161.35.125.167
+161.35.142.86
+161.35.157.58
+161.35.177.39
+161.35.194.172
+161.35.199.80
+161.35.208.99
+161.35.217.94
+161.35.230.183
+161.35.232.64
+161.35.233.14
+161.35.236.46
+161.35.237.121
+161.35.238.241
+161.35.33.197
+161.35.50.200
+161.35.50.23
+161.35.52.207
+161.35.54.242
+161.35.58.225
+161.35.59.177
+161.35.79.199
+161.35.84.191
+161.35.85.183
+161.35.90.77
+161.82.233.179
+161.82.233.183
+161.97.118.183
+161.97.174.22
+162.158.165.89
+162.186.17.150
+162.19.170.45
+162.19.25.174
+162.19.27.180
+162.191.163.228
+162.191.60.221
+162.193.182.101
+162.206.179.74
+162.209.190.50
+162.214.102.121
+162.216.149.102
+162.216.149.107
+162.216.149.11
+162.216.149.120
+162.216.149.125
+162.216.149.129
+162.216.149.148
+162.216.149.159
+162.216.149.160
+162.216.149.172
+162.216.149.173
+162.216.149.178
+162.216.149.180
+162.216.149.181
+162.216.149.183
+162.216.149.184
+162.216.149.191
+162.216.149.193
+162.216.149.204
+162.216.149.205
+162.216.149.210
+162.216.149.23
+162.216.149.235
+162.216.149.240
+162.216.149.243
+162.216.149.26
+162.216.149.40
+162.216.149.44
+162.216.149.48
+162.216.149.54
+162.216.149.57
+162.216.149.61
+162.216.149.66
+162.216.149.68
+162.216.149.75
+162.216.149.81
+162.216.149.84
+162.216.149.92
+162.216.149.93
+162.216.149.94
+162.216.149.99
+162.216.150.107
+162.216.150.118
+162.216.150.12
+162.216.150.120
+162.216.150.122
+162.216.150.123
+162.216.150.13
+162.216.150.134
+162.216.150.135
+162.216.150.140
+162.216.150.153
+162.216.150.16
+162.216.150.17
+162.216.150.173
+162.216.150.176
+162.216.150.197
+162.216.150.199
+162.216.150.201
+162.216.150.202
+162.216.150.206
+162.216.150.208
+162.216.150.215
+162.216.150.22
+162.216.150.226
+162.216.150.231
+162.216.150.232
+162.216.150.235
+162.216.150.239
+162.216.150.31
+162.216.150.34
+162.216.150.36
+162.216.150.4
+162.216.150.40
+162.216.150.45
+162.216.150.57
+162.216.150.59
+162.216.150.63
+162.216.150.64
+162.216.150.65
+162.216.150.70
+162.216.150.74
+162.216.150.81
+162.216.150.87
+162.216.150.88
+162.216.150.89
+162.216.150.99
+162.216.18.113
+162.221.192.27
+162.221.192.28
+162.221.192.29
+162.221.192.30
+162.240.211.231
+162.240.214.96
+162.240.222.16
+162.240.234.162
+162.240.52.12
+162.241.114.75
+162.241.121.50
+162.241.124.124
+162.241.70.98
+162.241.87.18
+162.243.128.11
+162.243.128.13
+162.243.128.19
+162.243.128.9
+162.243.129.13
+162.243.129.9
+162.243.130.14
+162.243.130.18
+162.243.130.19
+162.243.132.15
+162.243.133.12
+162.243.133.15
+162.243.133.19
+162.243.134.14
+162.243.134.15
+162.243.134.9
+162.243.135.17
+162.243.135.9
+162.243.136.16
+162.243.136.58
+162.243.136.8
+162.243.138.15
+162.243.138.9
+162.243.139.18
+162.243.140.16
+162.243.140.41
+162.243.141.11
+162.243.141.23
+162.243.141.24
+162.243.142.13
+162.243.142.15
+162.243.142.17
+162.243.142.6
+162.243.143.22
+162.243.143.23
+162.243.143.25
+162.243.143.6
+162.243.144.12
+162.243.144.8
+162.243.144.9
+162.243.145.12
+162.243.147.14
+162.243.147.16
+162.243.147.24
+162.243.148.14
+162.243.149.10
+162.243.149.4
+162.243.151.11
+162.243.237.90
+162.243.34.111
+162.243.48.133
+162.243.61.162
+162.244.78.27
+162.246.16.194
+162.43.107.4
+162.43.9.220
+162.55.1.117
+162.62.191.220
+162.62.191.231
+162.62.33.200
+163.123.141.203
+163.123.142.162
+163.123.142.245
+163.123.143.10
+163.139.169.79
+163.172.147.100
+163.172.154.32
+163.172.165.188
+163.47.36.34
+163.53.206.236
+164.132.12.24
+164.132.93.123
+164.152.194.140
+164.152.245.19
+164.152.32.142
+164.177.0.65
+164.177.31.66
+164.46.33.159
+164.52.0.91
+164.68.99.177
+164.77.117.10
+164.90.139.238
+164.90.160.21
+164.90.163.215
+164.90.172.83
+164.90.175.196
+164.90.178.195
+164.90.189.102
+164.90.191.216
+164.90.202.89
+164.90.210.8
+164.90.217.23
+164.90.229.79
+164.92.112.145
+164.92.113.182
+164.92.118.96
+164.92.141.17
+164.92.142.67
+164.92.157.100
+164.92.159.65
+164.92.167.231
+164.92.170.149
+164.92.177.69
+164.92.182.146
+164.92.192.247
+164.92.230.26
+164.92.235.79
+164.92.236.11
+164.92.243.245
+164.92.83.204
+164.92.91.240
+165.140.237.56
+165.154.10.165
+165.154.110.17
+165.154.119.11
+165.154.119.15
+165.154.119.220
+165.154.119.253
+165.154.119.27
+165.154.119.37
+165.154.119.50
+165.154.128.218
+165.154.134.177
+165.154.134.205
+165.154.225.154
+165.154.232.105
+165.154.232.170
+165.154.242.236
+165.154.247.162
+165.154.253.219
+165.154.253.81
+165.154.36.182
+165.154.36.4
+165.154.58.244
+165.22.1.73
+165.22.101.51
+165.22.102.124
+165.22.102.161
+165.22.103.229
+165.22.103.89
+165.22.107.2
+165.22.113.4
+165.22.116.159
+165.22.17.106
+165.22.177.33
+165.22.181.245
+165.22.184.99
+165.22.186.140
+165.22.20.10
+165.22.21.48
+165.22.214.191
+165.22.217.96
+165.22.223.41
+165.22.230.39
+165.22.234.248
+165.22.235.122
+165.22.240.159
+165.22.242.64
+165.22.243.83
+165.22.248.122
+165.22.254.151
+165.22.26.150
+165.22.29.187
+165.22.3.99
+165.22.50.209
+165.22.51.113
+165.22.53.34
+165.22.62.203
+165.227.103.128
+165.227.109.79
+165.227.110.95
+165.227.118.71
+165.227.119.21
+165.227.142.62
+165.227.143.37
+165.227.153.96
+165.227.166.220
+165.227.166.247
+165.227.182.136
+165.227.194.176
+165.227.195.136
+165.227.196.229
+165.227.197.169
+165.227.2.221
+165.227.2.252
+165.227.61.200
+165.227.68.95
+165.227.71.223
+165.227.84.172
+165.227.86.144
+165.227.87.78
+165.227.89.189
+165.227.95.251
+165.232.121.37
+165.232.122.160
+165.232.136.138
+165.232.145.240
+165.232.160.106
+165.232.164.156
+165.232.170.200
+165.232.172.205
+165.232.176.115
+165.232.178.81
+165.232.184.142
+165.232.184.186
+165.232.190.137
+165.232.46.192
+165.232.70.143
+165.232.75.169
+165.232.76.182
+165.232.78.65
+165.246.38.77
+166.161.37.203
+166.166.67.204
+166.252.137.73
+167.114.129.82
+167.114.38.196
+167.114.46.129
+167.172.129.208
+167.172.142.20
+167.172.150.24
+167.172.190.215
+167.172.194.232
+167.172.24.162
+167.172.246.83
+167.172.48.211
+167.172.54.39
+167.172.56.36
+167.172.58.10
+167.172.69.16
+167.172.72.46
+167.172.74.254
+167.172.76.163
+167.172.85.160
+167.172.89.248
+167.172.90.89
+167.172.93.11
+167.172.98.89
+167.71.102.95
+167.71.117.214
+167.71.137.212
+167.71.151.22
+167.71.159.65
+167.71.16.200
+167.71.192.132
+167.71.196.217
+167.71.196.228
+167.71.202.1
+167.71.202.121
+167.71.217.128
+167.71.223.237
+167.71.234.134
+167.71.236.26
+167.71.238.89
+167.71.243.218
+167.71.33.249
+167.71.43.190
+167.71.44.183
+167.71.49.42
+167.71.54.162
+167.71.54.30
+167.71.54.51
+167.71.56.110
+167.71.70.212
+167.71.74.3
+167.71.78.209
+167.71.98.46
+167.71.99.157
+167.86.120.138
+167.99.112.43
+167.99.123.23
+167.99.126.215
+167.99.141.170
+167.99.152.131
+167.99.161.142
+167.99.171.68
+167.99.173.171
+167.99.187.199
+167.99.195.15
+167.99.195.75
+167.99.202.127
+167.99.208.65
+167.99.209.184
+167.99.234.112
+167.99.236.219
+167.99.236.74
+167.99.239.101
+167.99.243.12
+167.99.247.86
+167.99.39.221
+167.99.5.226
+167.99.71.79
+167.99.78.124
+167.99.84.28
+167.99.87.226
+168.121.27.66
+168.121.27.67
+168.126.203.176
+168.138.211.255
+168.138.222.91
+168.138.7.117
+168.167.72.187
+168.167.72.215
+168.167.72.228
+168.181.186.7
+168.196.105.78
+168.197.49.181
+168.205.133.39
+168.227.225.161
+168.227.49.206
+168.228.220.253
+168.232.12.115
+168.232.14.138
+168.232.14.86
+168.253.210.19
+168.80.174.2
+169.197.113.178
+169.197.113.225
+170.106.114.160
+170.106.115.15
+170.106.115.151
+170.106.115.231
+170.106.115.253
+170.106.115.39
+170.106.115.55
+170.106.136.103
+170.106.141.250
+170.106.173.40
+170.106.174.246
+170.106.176.49
+170.106.83.144
+170.155.150.152
+170.187.163.114
+170.187.163.133
+170.187.165.134
+170.187.165.139
+170.187.165.218
+170.187.165.219
+170.187.165.242
+170.210.208.108
+170.210.44.162
+170.210.45.123
+170.210.46.4
+170.210.52.126
+170.238.162.191
+170.238.27.252
+170.239.215.4
+170.239.85.94
+170.245.200.122
+170.245.34.61
+170.253.42.163
+170.64.138.151
+170.64.140.141
+170.64.166.254
+170.64.166.60
+170.64.166.87
+170.64.174.96
+170.64.178.78
+170.64.178.90
+170.83.173.29
+171.100.221.54
+171.101.216.53
+171.103.243.157
+171.105.28.14
+171.15.130.40
+171.15.131.182
+171.212.102.36
+171.215.207.38
+171.22.30.173
+171.221.255.5
+171.228.33.181
+171.232.55.68
+171.244.202.21
+171.244.28.26
+171.244.40.247
+171.244.60.172
+171.248.190.134
+171.25.193.78
+171.25.229.166
+171.67.70.229
+171.67.70.233
+172.104.137.47
+172.104.166.147
+172.104.210.105
+172.104.238.162
+172.104.242.173
+172.104.48.51
+172.104.65.226
+172.105.10.25
+172.105.217.71
+172.105.34.155
+172.105.89.161
+172.107.195.95
+172.116.186.174
+172.174.217.248
+172.174.232.145
+172.174.235.103
+172.176.244.157
+172.177.27.12
+172.245.110.158
+172.245.110.208
+172.245.139.108
+172.245.154.246
+172.245.156.24
+172.245.168.229
+172.245.17.150
+172.245.210.242
+172.245.34.156
+172.247.104.122
+172.71.169.33
+172.90.21.238
+172.96.194.24
+172.97.74.186
+172.98.89.176
+173.160.23.137
+173.161.156.201
+173.162.197.177
+173.179.208.115
+173.198.208.111
+173.23.53.88
+173.247.244.7
+173.255.223.179
+173.26.144.235
+173.31.213.218
+173.33.150.96
+173.52.235.114
+173.77.179.66
+173.82.227.7
+174.105.35.117
+174.108.139.206
+174.114.85.23
+174.138.21.174
+174.138.24.127
+174.138.29.148
+174.138.29.2
+174.138.30.73
+174.138.31.37
+174.138.48.135
+174.138.5.151
+174.138.54.13
+174.138.72.191
+174.138.79.199
+174.45.121.23
+174.52.85.31
+174.61.169.51
+174.96.50.187
+175.100.107.238
+175.100.120.111
+175.100.24.139
+175.100.66.41
+175.101.241.38
+175.107.13.72
+175.107.13.79
+175.11.52.94
+175.119.79.57
+175.126.123.171
+175.126.146.152
+175.126.232.120
+175.127.172.125
+175.134.135.29
+175.140.140.194
+175.142.126.41
+175.143.127.125
+175.146.233.14
+175.149.76.52
+175.150.127.114
+175.156.122.164
+175.164.188.40
+175.170.149.29
+175.175.52.235
+175.178.237.54
+175.178.62.19
+175.178.9.209
+175.183.13.68
+175.183.16.223
+175.194.108.201
+175.194.117.53
+175.194.219.239
+175.195.114.196
+175.196.231.248
+175.196.245.105
+175.197.109.68
+175.197.233.197
+175.197.51.29
+175.197.71.181
+175.199.230.8
+175.201.140.213
+175.202.120.38
+175.203.52.99
+175.203.66.34
+175.205.161.213
+175.205.9.60
+175.206.107.100
+175.206.113.93
+175.206.238.63
+175.206.57.127
+175.207.109.193
+175.207.13.86
+175.208.161.242
+175.208.234.194
+175.209.250.242
+175.210.66.91
+175.210.74.153
+175.211.139.213
+175.211.72.236
+175.212.238.103
+175.212.64.133
+175.212.81.131
+175.213.109.144
+175.214.151.9
+175.214.173.20
+175.214.194.49
+175.215.39.48
+175.27.210.74
+175.30.112.236
+175.30.71.18
+175.30.75.55
+175.38.85.181
+175.41.178.177
+175.9.165.132
+175.97.174.175
+176.10.207.140
+176.101.121.148
+176.111.173.193
+176.111.173.27
+176.111.173.47
+176.111.174.105
+176.111.174.109
+176.111.174.110
+176.111.174.112
+176.111.174.243
+176.111.174.80
+176.111.174.81
+176.111.174.82
+176.111.174.84
+176.111.174.85
+176.111.174.86
+176.111.174.87
+176.111.174.88
+176.111.174.89
+176.111.174.91
+176.111.174.95
+176.111.174.97
+176.111.174.98
+176.113.115.104
+176.113.115.113
+176.113.115.52
+176.115.100.24
+176.117.39.44
+176.118.165.22
+176.122.164.148
+176.133.191.176
+176.195.60.248
+176.213.141.182
+176.214.78.72
+176.215.191.208
+176.31.246.128
+176.35.68.136
+176.41.224.80
+176.53.182.207
+176.53.200.54
+176.62.189.81
+176.67.116.58
+176.96.138.216
+176.96.186.130
+176.97.210.100
+176.97.210.115
+176.97.210.236
+176.97.210.30
+176.97.210.59
+177.1.214.207
+177.104.2.64
+177.107.44.217
+177.12.2.75
+177.124.75.82
+177.125.239.199
+177.127.78.177
+177.136.157.154
+177.136.194.109
+177.136.201.53
+177.136.5.138
+177.174.116.133
+177.174.117.165
+177.185.139.43
+177.200.1.53
+177.200.95.210
+177.203.153.25
+177.21.208.13
+177.220.131.211
+177.220.148.122
+177.221.206.226
+177.229.134.50
+177.230.242.116
+177.238.101.73
+177.238.102.35
+177.249.170.10
+177.27.220.138
+177.32.212.68
+177.32.224.251
+177.36.248.38
+177.39.131.52
+177.43.233.9
+177.52.250.141
+177.54.150.21
+177.55.100.134
+177.62.110.235
+177.67.238.6
+177.70.163.201
+177.73.110.38
+177.85.84.3
+177.87.144.26
+177.91.80.178
+177.92.101.22
+177.92.48.109
+177.97.48.116
+178.124.222.119
+178.128.108.25
+178.128.113.191
+178.128.117.5
+178.128.125.217
+178.128.149.187
+178.128.152.119
+178.128.165.94
+178.128.187.183
+178.128.21.211
+178.128.214.68
+178.128.221.205
+178.128.224.63
+178.128.226.2
+178.128.34.59
+178.128.47.46
+178.128.5.231
+178.128.50.71
+178.128.55.198
+178.128.62.69
+178.128.64.160
+178.128.66.109
+178.128.91.222
+178.128.91.243
+178.128.93.190
+178.128.93.234
+178.128.95.168
+178.128.97.141
+178.128.98.121
+178.140.225.181
+178.141.190.140
+178.154.192.75
+178.154.209.177
+178.158.238.40
+178.159.49.228
+178.16.121.254
+178.161.200.138
+178.162.204.238
+178.170.221.13
+178.173.142.70
+178.175.160.118
+178.175.174.86
+178.176.45.252
+178.209.88.122
+178.212.49.134
+178.217.173.54
+178.217.174.237
+178.218.144.99
+178.219.116.156
+178.219.118.209
+178.219.119.32
+178.219.120.89
+178.219.126.5
+178.22.168.220
+178.22.254.214
+178.239.161.173
+178.242.86.197
+178.249.213.218
+178.251.140.3
+178.252.151.220
+178.253.109.120
+178.27.64.44
+178.32.43.185
+178.47.41.254
+178.54.13.19
+178.62.119.233
+178.62.122.135
+178.62.127.39
+178.62.14.68
+178.62.2.24
+178.62.216.118
+178.62.22.30
+178.62.224.73
+178.62.232.63
+178.62.237.10
+178.62.237.183
+178.62.24.222
+178.62.242.205
+178.62.27.165
+178.62.3.125
+178.62.50.191
+178.62.69.141
+178.62.74.141
+178.62.78.139
+178.62.8.163
+178.62.81.147
+178.62.97.236
+178.72.101.234
+178.72.83.72
+178.89.28.245
+179.127.252.234
+179.178.53.165
+179.181.223.58
+179.184.123.77
+179.189.198.128
+179.247.129.163
+179.27.60.34
+179.32.215.181
+179.32.26.211
+179.32.44.155
+179.33.186.151
+179.34.71.91
+179.40.112.6
+179.41.2.183
+179.43.122.214
+179.43.127.230
+179.43.139.82
+179.43.152.50
+179.43.163.111
+179.43.163.132
+179.43.177.243
+179.48.124.242
+179.48.190.215
+179.50.90.210
+179.52.231.166
+179.52.232.233
+179.61.245.13
+179.99.212.180
+18.130.255.176
+18.133.231.102
+18.211.190.157
+180.101.88.220
+180.101.88.225
+180.101.88.229
+180.101.88.231
+180.101.88.239
+180.101.88.242
+180.101.88.247
+180.101.88.251
+180.101.88.252
+180.103.57.34
+180.107.58.60
+180.108.10.36
+180.111.30.202
+180.111.30.37
+180.115.161.125
+180.115.85.179
+180.115.85.55
+180.116.119.177
+180.116.121.255
+180.116.155.85
+180.116.160.87
+180.116.189.101
+180.116.242.215
+180.117.194.141
+180.117.194.198
+180.117.247.76
+180.117.58.73
+180.118.240.207
+180.119.250.180
+180.149.185.250
+180.166.117.254
+180.168.95.234
+180.169.25.114
+180.176.208.15
+180.177.49.104
+180.179.227.180
+180.180.123.207
+180.183.249.151
+180.211.137.9
+180.214.239.113
+180.218.109.136
+180.218.161.99
+180.218.164.152
+180.232.139.194
+180.243.166.247
+180.69.254.177
+180.69.96.56
+180.71.47.198
+180.76.154.190
+180.76.208.113
+180.76.231.168
+180.83.255.119
+180.92.100.160
+180.97.82.230
+181.105.229.218
+181.114.109.54
+181.115.145.34
+181.115.207.244
+181.118.206.245
+181.120.188.20
+181.129.174.61
+181.13.218.29
+181.130.194.165
+181.143.195.18
+181.171.38.85
+181.188.195.18
+181.188.26.59
+181.191.131.8
+181.204.186.170
+181.209.100.141
+181.211.253.158
+181.214.99.205
+181.214.99.210
+181.215.78.86
+181.225.43.218
+181.225.43.226
+181.31.135.145
+181.48.60.50
+181.49.176.37
+181.63.245.127
+181.67.138.42
+181.78.3.13
+181.79.9.65
+181.94.230.182
+182.112.29.53
+182.116.176.11
+182.116.91.189
+182.117.10.117
+182.118.143.125
+182.126.167.248
+182.126.81.151
+182.127.152.6
+182.131.30.53
+182.134.239.97
+182.135.63.175
+182.16.179.214
+182.16.184.147
+182.16.245.79
+182.16.245.85
+182.16.249.18
+182.160.27.208
+182.161.149.6
+182.176.104.99
+182.18.131.62
+182.18.138.74
+182.180.102.4
+182.208.98.210
+182.211.245.169
+182.214.122.203
+182.224.49.52
+182.225.134.13
+182.229.10.141
+182.23.111.74
+182.23.56.142
+182.247.32.131
+182.253.117.100
+182.253.156.184
+182.253.33.194
+182.253.45.90
+182.31.62.100
+182.40.33.0
+182.42.49.140
+182.43.244.194
+182.43.254.122
+182.57.16.58
+182.59.139.27
+182.68.245.91
+182.69.119.226
+182.70.116.222
+182.70.116.97
+182.70.121.34
+182.70.125.62
+182.70.240.130
+182.70.241.35
+182.70.250.212
+182.70.250.246
+182.70.252.174
+182.73.123.118
+182.75.65.22
+182.76.134.58
+182.77.48.228
+182.77.57.16
+182.77.62.48
+182.78.142.4
+182.79.68.42
+182.86.188.7
+183.100.43.156
+183.100.98.18
+183.103.220.196
+183.103.65.181
+183.104.122.173
+183.106.218.235
+183.107.151.167
+183.107.47.119
+183.108.133.29
+183.108.211.209
+183.109.213.146
+183.109.240.16
+183.109.43.171
+183.129.254.66
+183.136.225.10
+183.136.225.32
+183.136.225.42
+183.136.225.43
+183.136.225.44
+183.136.225.46
+183.136.225.5
+183.136.225.9
+183.146.30.163
+183.16.226.94
+183.161.35.38
+183.162.230.118
+183.178.48.146
+183.180.128.204
+183.188.202.35
+183.194.44.18
+183.2.233.30
+183.230.145.46
+183.230.160.154
+183.230.197.49
+183.230.230.215
+183.230.248.187
+183.233.85.194
+183.234.79.53
+183.237.164.204
+183.237.164.206
+183.240.157.2
+183.246.177.93
+183.253.125.205
+183.44.209.117
+183.56.236.152
+183.6.99.197
+183.63.196.58
+183.63.215.244
+183.66.252.182
+183.67.39.70
+183.81.32.198
+183.83.51.220
+183.87.12.39
+183.87.55.220
+183.88.225.66
+183.91.186.93
+183.97.198.88
+183.98.107.63
+183.99.182.87
+183.99.53.180
+183.99.53.240
+183.99.76.78
+184.105.139.103
+184.105.139.106
+184.105.139.111
+184.105.139.112
+184.105.139.115
+184.105.139.118
+184.105.139.119
+184.105.139.120
+184.105.139.69
+184.105.139.74
+184.105.139.77
+184.105.139.80
+184.105.139.82
+184.105.139.86
+184.105.139.88
+184.105.139.92
+184.105.139.93
+184.105.139.94
+184.105.139.95
+184.105.139.98
+184.105.139.99
+184.105.247.199
+184.105.247.203
+184.105.247.210
+184.105.247.214
+184.105.247.222
+184.105.247.224
+184.105.247.234
+184.105.247.235
+184.105.247.243
+184.105.247.247
+184.105.247.252
+184.105.247.254
+184.153.54.212
+184.168.121.135
+184.168.123.187
+184.168.125.40
+184.168.21.249
+184.168.99.50
+184.170.172.12
+184.170.208.116
+184.174.34.95
+184.174.36.225
+184.18.211.199
+184.58.23.65
+184.75.221.35
+184.75.25.226
+184.82.129.171
+184.94.215.49
+185.100.87.136
+185.104.184.43
+185.106.94.8
+185.11.61.199
+185.110.191.161
+185.114.244.122
+185.118.51.135
+185.119.196.235
+185.122.201.229
+185.122.204.50
+185.122.204.55
+185.122.204.71
+185.126.200.111
+185.126.200.156
+185.126.200.54
+185.126.34.211
+185.126.80.227
+185.127.227.131
+185.129.93.97
+185.13.224.87
+185.133.225.62
+185.141.110.139
+185.142.236.34
+185.142.236.35
+185.142.236.36
+185.142.236.38
+185.142.239.16
+185.147.65.50
+185.151.32.7
+185.154.111.90
+185.155.17.245
+185.155.19.207
+185.156.174.115
+185.156.174.27
+185.156.175.171
+185.156.175.43
+185.156.73.154
+185.156.73.57
+185.156.73.91
+185.161.248.220
+185.161.248.221
+185.161.248.222
+185.161.248.223
+185.161.248.83
+185.161.248.96
+185.162.147.177
+185.164.72.28
+185.165.190.17
+185.165.190.34
+185.166.162.236
+185.167.96.138
+185.167.96.146
+185.167.96.150
+185.167.97.229
+185.167.97.244
+185.169.183.39
+185.171.24.22
+185.173.129.228
+185.18.212.110
+185.180.143.101
+185.180.143.102
+185.180.143.105
+185.180.143.107
+185.180.143.109
+185.180.143.12
+185.180.143.141
+185.180.143.143
+185.180.143.152
+185.180.143.154
+185.180.143.16
+185.180.143.161
+185.180.143.164
+185.180.143.165
+185.180.143.166
+185.180.143.167
+185.180.143.168
+185.180.143.173
+185.180.143.175
+185.180.143.176
+185.180.143.179
+185.180.143.20
+185.180.143.21
+185.180.143.22
+185.180.143.24
+185.180.143.25
+185.180.143.27
+185.180.143.28
+185.180.143.30
+185.180.143.32
+185.180.143.33
+185.180.143.37
+185.180.143.39
+185.180.143.43
+185.180.143.45
+185.180.143.46
+185.180.143.47
+185.180.143.6
+185.180.143.73
+185.180.143.74
+185.180.143.77
+185.180.143.80
+185.180.143.81
+185.180.143.83
+185.180.143.84
+185.180.143.85
+185.180.143.86
+185.180.143.87
+185.180.143.91
+185.180.143.93
+185.180.143.96
+185.180.143.98
+185.181.102.18
+185.181.61.23
+185.183.243.174
+185.189.112.27
+185.189.114.119
+185.189.123.73
+185.191.171.10
+185.191.171.11
+185.191.171.13
+185.191.171.15
+185.191.171.16
+185.191.171.17
+185.191.171.19
+185.191.171.20
+185.191.171.22
+185.191.171.23
+185.191.171.25
+185.191.171.26
+185.191.171.33
+185.191.171.35
+185.191.171.36
+185.191.171.38
+185.191.171.39
+185.191.171.4
+185.191.171.41
+185.191.171.8
+185.196.220.81
+185.199.222.155
+185.200.217.5
+185.200.240.65
+185.202.236.219
+185.203.89.24
+185.206.225.51
+185.206.225.59
+185.207.214.96
+185.208.164.126
+185.211.4.233
+185.213.195.233
+185.213.195.72
+185.216.116.113
+185.216.117.132
+185.216.119.91
+185.216.128.220
+185.216.140.132
+185.217.1.246
+185.217.241.82
+185.218.6.75
+185.220.101.152
+185.220.101.159
+185.220.101.20
+185.220.102.248
+185.220.103.113
+185.221.216.133
+185.221.239.104
+185.221.239.105
+185.221.239.113
+185.221.239.114
+185.221.239.121
+185.222.95.178
+185.224.128.114
+185.224.128.121
+185.224.128.17
+185.224.128.213
+185.224.128.224
+185.224.128.23
+185.224.128.25
+185.224.128.29
+185.224.128.32
+185.225.74.179
+185.225.74.23
+185.225.74.245
+185.225.74.55
+185.226.116.16
+185.227.152.189
+185.227.153.141
+185.231.112.3
+185.231.182.222
+185.231.205.186
+185.232.36.17
+185.233.119.142
+185.233.19.112
+185.233.19.15
+185.233.19.47
+185.233.19.68
+185.233.19.75
+185.233.19.9
+185.233.19.92
+185.233.19.94
+185.233.36.187
+185.236.228.22
+185.237.9.52
+185.238.199.145
+185.239.146.183
+185.239.208.50
+185.243.242.35
+185.245.86.226
+185.246.130.20
+185.246.189.77
+185.246.209.146
+185.246.220.20
+185.252.179.100
+185.252.179.104
+185.252.179.55
+185.252.179.97
+185.252.179.98
+185.252.215.136
+185.254.197.15
+185.254.37.15
+185.254.37.16
+185.254.37.46
+185.254.37.95
+185.254.96.47
+185.255.90.86
+185.29.121.8
+185.36.81.180
+185.36.81.95
+185.38.176.121
+185.5.157.165
+185.50.51.6
+185.51.37.116
+185.54.178.117
+185.55.40.153
+185.56.80.40
+185.57.165.130
+185.59.74.158
+185.6.10.231
+185.6.26.3
+185.6.91.21
+185.60.136.41
+185.68.146.244
+185.69.153.79
+185.69.155.107
+185.7.33.160
+185.70.95.8
+185.73.124.105
+185.74.221.195
+185.74.4.17
+185.74.4.189
+185.74.5.184
+185.74.5.186
+185.77.217.48
+185.77.96.124
+185.77.96.202
+185.81.68.102
+185.81.68.110
+185.85.163.242
+185.88.154.160
+185.9.19.107
+185.94.111.1
+185.94.189.182
+185.94.29.54
+185.97.119.59
+186.10.125.209
+186.103.146.180
+186.103.164.244
+186.115.97.152
+186.121.203.115
+186.125.27.81
+186.13.36.134
+186.13.96.188
+186.138.177.22
+186.177.156.112
+186.179.100.0
+186.179.100.104
+186.179.100.229
+186.179.243.12
+186.192.182.113
+186.200.158.42
+186.200.96.186
+186.206.45.187
+186.209.62.107
+186.216.22.1
+186.233.119.191
+186.233.204.10
+186.233.210.86
+186.235.184.214
+186.235.193.14
+186.235.70.43
+186.235.70.47
+186.239.155.106
+186.24.47.34
+186.248.136.218
+186.250.47.238
+186.28.200.73
+186.29.79.105
+186.3.31.213
+186.31.24.154
+186.31.95.163
+186.38.26.5
+186.39.127.184
+186.4.222.45
+186.6.211.105
+186.67.248.5
+186.67.248.8
+186.67.77.26
+186.84.172.5
+186.91.2.216
+186.96.145.241
+186.96.211.154
+186.97.166.147
+187.102.27.253
+187.103.67.186
+187.110.208.56
+187.111.28.131
+187.12.69.186
+187.122.200.128
+187.141.135.180
+187.149.33.183
+187.157.23.247
+187.162.154.104
+187.162.32.32
+187.170.197.34
+187.170.76.6
+187.18.156.57
+187.187.227.3
+187.189.51.121
+187.19.100.17
+187.190.10.69
+187.190.217.15
+187.190.252.165
+187.190.40.99
+187.217.135.66
+187.218.23.85
+187.220.25.158
+187.228.115.208
+187.235.188.63
+187.251.123.99
+187.251.242.240
+187.32.70.120
+187.33.53.204
+187.34.150.96
+187.37.19.155
+187.44.214.58
+187.50.165.110
+187.50.178.142
+187.50.67.114
+187.50.97.18
+187.51.208.158
+187.53.232.74
+187.57.133.84
+187.57.156.129
+187.62.86.66
+187.72.8.35
+187.75.249.10
+187.84.112.136
+187.86.135.246
+187.9.20.246
+187.93.205.26
+187.93.241.2
+187.95.146.42
+188.121.103.130
+188.121.106.22
+188.121.110.147
+188.121.119.205
+188.121.98.147
+188.126.83.80
+188.13.65.157
+188.132.197.205
+188.132.197.251
+188.150.225.241
+188.154.22.87
+188.16.168.147
+188.164.174.94
+188.165.58.60
+188.166.102.160
+188.166.12.16
+188.166.14.99
+188.166.146.208
+188.166.156.145
+188.166.180.17
+188.166.189.0
+188.166.19.128
+188.166.211.7
+188.166.217.179
+188.166.219.112
+188.166.221.245
+188.166.225.235
+188.166.225.37
+188.166.228.226
+188.166.232.219
+188.166.240.30
+188.166.246.167
+188.166.247.73
+188.166.247.82
+188.166.251.87
+188.166.35.229
+188.166.41.217
+188.166.58.179
+188.166.88.202
+188.166.97.136
+188.171.35.7
+188.173.136.132
+188.19.14.154
+188.190.158.192
+188.217.170.136
+188.22.214.15
+188.226.128.250
+188.226.136.16
+188.235.255.111
+188.242.104.19
+188.250.172.49
+188.254.0.160
+188.254.99.78
+188.80.228.9
+189.1.87.249
+189.101.167.185
+189.108.147.210
+189.109.37.54
+189.110.117.200
+189.112.196.1
+189.122.233.177
+189.127.173.52
+189.141.68.25
+189.158.107.1
+189.163.200.86
+189.175.134.181
+189.176.68.60
+189.178.44.241
+189.18.172.102
+189.186.240.165
+189.189.228.192
+189.195.123.18
+189.195.123.54
+189.195.223.98
+189.196.23.10
+189.20.181.138
+189.205.228.236
+189.210.119.4
+189.210.146.164
+189.216.168.153
+189.219.32.88
+189.219.65.30
+189.254.255.3
+189.34.115.225
+189.45.141.138
+189.45.78.175
+189.5.156.9
+189.50.111.146
+189.56.185.23
+189.56.217.183
+189.6.45.130
+189.7.129.60
+189.70.175.93
+189.8.68.56
+189.80.86.126
+189.81.204.243
+189.90.181.225
+190.0.246.7
+190.0.61.30
+190.101.196.7
+190.103.202.12
+190.104.146.23
+190.104.25.221
+190.107.177.235
+190.109.216.101
+190.109.228.128
+190.112.198.112
+190.113.232.231
+190.114.254.105
+190.123.34.126
+190.123.90.180
+190.128.169.130
+190.128.230.98
+190.137.37.54
+190.14.158.76
+190.140.53.119
+190.144.139.235
+190.144.141.210
+190.145.12.233
+190.145.172.114
+190.145.25.163
+190.147.33.242
+190.147.78.87
+190.15.207.142
+190.152.220.235
+190.156.231.245
+190.181.15.3
+190.181.25.210
+190.181.27.5
+190.181.27.8
+190.19.166.7
+190.190.244.166
+190.193.63.203
+190.195.91.253
+190.2.212.253
+190.202.95.114
+190.210.182.179
+190.211.252.91
+190.221.46.77
+190.221.60.242
+190.242.104.110
+190.254.77.44
+190.52.39.248
+190.60.110.240
+190.83.70.201
+190.85.15.251
+190.85.244.125
+190.90.132.204
+190.96.127.50
+190.99.153.77
+190.99.159.6
+191.100.249.243
+191.101.18.42
+191.101.229.143
+191.101.232.123
+191.101.235.92
+191.102.120.13
+191.103.121.105
+191.17.54.182
+191.176.2.211
+191.180.100.5
+191.193.45.158
+191.217.33.153
+191.220.0.213
+191.233.25.20
+191.242.105.131
+191.242.105.133
+191.243.56.178
+191.248.76.6
+191.249.118.107
+191.252.5.128
+191.36.151.8
+191.36.152.101
+191.36.156.73
+191.37.220.34
+191.89.49.10
+191.9.118.69
+191.96.57.205
+191.97.109.249
+191.97.4.238
+191.98.191.69
+192.142.231.143
+192.145.126.115
+192.145.127.42
+192.154.253.44
+192.155.89.96
+192.155.90.220
+192.162.69.61
+192.166.39.234
+192.169.176.22
+192.210.161.195
+192.210.187.72
+192.210.206.253
+192.210.226.176
+192.210.226.247
+192.227.143.184
+192.227.156.98
+192.227.174.167
+192.227.194.176
+192.241.129.182
+192.241.141.221
+192.241.157.126
+192.241.192.21
+192.241.193.21
+192.241.194.54
+192.241.195.48
+192.241.195.51
+192.241.196.49
+192.241.196.59
+192.241.197.6
+192.241.199.18
+192.241.199.30
+192.241.200.30
+192.241.200.48
+192.241.201.21
+192.241.201.43
+192.241.202.29
+192.241.203.18
+192.241.203.5
+192.241.206.10
+192.241.206.11
+192.241.207.100
+192.241.207.124
+192.241.208.5
+192.241.209.118
+192.241.209.135
+192.241.209.153
+192.241.210.21
+192.241.210.224
+192.241.210.25
+192.241.210.26
+192.241.210.7
+192.241.211.53
+192.241.212.169
+192.241.212.244
+192.241.212.26
+192.241.212.60
+192.241.212.99
+192.241.213.65
+192.241.213.67
+192.241.213.75
+192.241.213.77
+192.241.215.14
+192.241.216.19
+192.241.216.8
+192.241.217.22
+192.241.217.7
+192.241.218.28
+192.241.218.41
+192.241.219.17
+192.241.219.19
+192.241.220.21
+192.241.220.25
+192.241.220.50
+192.241.221.12
+192.241.223.11
+192.241.223.12
+192.241.223.25
+192.241.223.27
+192.241.223.29
+192.241.224.18
+192.241.225.16
+192.241.225.38
+192.241.225.41
+192.241.226.22
+192.241.226.31
+192.241.227.24
+192.241.227.25
+192.241.227.26
+192.241.227.9
+192.241.231.17
+192.241.231.28
+192.241.232.12
+192.241.232.9
+192.241.233.11
+192.241.233.7
+192.241.235.13
+192.241.236.28
+192.241.236.35
+192.241.236.50
+192.241.236.66
+192.241.237.15
+192.241.237.24
+192.241.238.29
+192.3.105.50
+192.3.116.181
+192.3.128.128
+192.3.153.103
+192.3.229.209
+192.3.231.211
+192.3.254.159
+192.3.255.145
+192.3.44.180
+192.3.53.185
+192.46.218.40
+192.63.105.127
+192.64.113.88
+192.64.117.65
+192.99.19.65
+193.105.134.95
+193.105.6.24
+193.111.248.77
+193.114.128.198
+193.118.53.194
+193.118.53.195
+193.118.53.198
+193.118.55.162
+193.118.55.163
+193.118.55.165
+193.118.55.170
+193.118.55.171
+193.118.55.174
+193.123.104.194
+193.134.100.231
+193.141.60.199
+193.142.146.214
+193.142.147.53
+193.142.147.57
+193.149.129.217
+193.151.128.151
+193.151.138.192
+193.151.142.143
+193.151.144.214
+193.151.145.215
+193.158.129.108
+193.158.129.110
+193.163.125.10
+193.163.125.100
+193.163.125.101
+193.163.125.102
+193.163.125.103
+193.163.125.104
+193.163.125.105
+193.163.125.107
+193.163.125.11
+193.163.125.110
+193.163.125.111
+193.163.125.113
+193.163.125.115
+193.163.125.116
+193.163.125.12
+193.163.125.122
+193.163.125.124
+193.163.125.125
+193.163.125.127
+193.163.125.128
+193.163.125.129
+193.163.125.13
+193.163.125.131
+193.163.125.133
+193.163.125.134
+193.163.125.135
+193.163.125.137
+193.163.125.139
+193.163.125.14
+193.163.125.143
+193.163.125.144
+193.163.125.145
+193.163.125.146
+193.163.125.147
+193.163.125.148
+193.163.125.149
+193.163.125.15
+193.163.125.150
+193.163.125.151
+193.163.125.152
+193.163.125.153
+193.163.125.154
+193.163.125.155
+193.163.125.156
+193.163.125.157
+193.163.125.158
+193.163.125.159
+193.163.125.16
+193.163.125.160
+193.163.125.161
+193.163.125.162
+193.163.125.163
+193.163.125.164
+193.163.125.165
+193.163.125.166
+193.163.125.167
+193.163.125.168
+193.163.125.169
+193.163.125.17
+193.163.125.170
+193.163.125.171
+193.163.125.172
+193.163.125.173
+193.163.125.174
+193.163.125.175
+193.163.125.176
+193.163.125.177
+193.163.125.178
+193.163.125.179
+193.163.125.18
+193.163.125.180
+193.163.125.181
+193.163.125.188
+193.163.125.189
+193.163.125.19
+193.163.125.192
+193.163.125.199
+193.163.125.2
+193.163.125.20
+193.163.125.201
+193.163.125.202
+193.163.125.207
+193.163.125.21
+193.163.125.22
+193.163.125.23
+193.163.125.24
+193.163.125.240
+193.163.125.25
+193.163.125.26
+193.163.125.27
+193.163.125.28
+193.163.125.29
+193.163.125.3
+193.163.125.30
+193.163.125.31
+193.163.125.32
+193.163.125.33
+193.163.125.34
+193.163.125.35
+193.163.125.36
+193.163.125.37
+193.163.125.39
+193.163.125.4
+193.163.125.44
+193.163.125.46
+193.163.125.47
+193.163.125.48
+193.163.125.5
+193.163.125.50
+193.163.125.51
+193.163.125.52
+193.163.125.53
+193.163.125.55
+193.163.125.56
+193.163.125.57
+193.163.125.58
+193.163.125.59
+193.163.125.6
+193.163.125.60
+193.163.125.61
+193.163.125.62
+193.163.125.63
+193.163.125.64
+193.163.125.65
+193.163.125.67
+193.163.125.68
+193.163.125.69
+193.163.125.7
+193.163.125.71
+193.163.125.73
+193.163.125.74
+193.163.125.75
+193.163.125.76
+193.163.125.78
+193.163.125.79
+193.163.125.8
+193.163.125.82
+193.163.125.83
+193.163.125.84
+193.163.125.86
+193.163.125.87
+193.163.125.88
+193.163.125.9
+193.163.125.94
+193.163.125.95
+193.163.125.97
+193.163.125.98
+193.163.125.99
+193.164.133.65
+193.179.28.34
+193.187.116.156
+193.189.100.130
+193.191.169.101
+193.194.92.244
+193.201.9.180
+193.231.11.11
+193.233.21.79
+193.234.118.51
+193.254.3.18
+193.29.13.22
+193.3.53.10
+193.3.53.11
+193.3.53.3
+193.3.53.4
+193.3.53.5
+193.3.53.6
+193.3.53.7
+193.3.53.8
+193.3.53.9
+193.32.126.228
+193.32.162.188
+193.35.18.107
+193.35.18.226
+193.35.18.35
+193.35.18.60
+193.35.18.61
+193.35.18.62
+193.35.18.92
+193.36.84.187
+193.36.85.72
+193.37.254.35
+193.42.32.170
+193.42.32.172
+193.42.32.173
+193.42.32.175
+193.42.32.97
+193.56.29.107
+193.56.29.142
+193.56.29.161
+193.56.29.186
+193.56.29.192
+193.56.29.196
+193.57.40.49
+193.59.47.77
+193.70.0.122
+193.70.1.27
+193.70.3.31
+193.70.84.184
+193.70.84.66
+193.70.85.249
+193.70.88.163
+193.8.210.223
+193.93.77.107
+194.110.203.131
+194.110.203.222
+194.113.236.202
+194.113.236.217
+194.116.191.74
+194.116.216.93
+194.132.232.36
+194.146.26.192
+194.146.50.54
+194.15.113.22
+194.150.69.207
+194.163.142.86
+194.163.162.92
+194.165.137.35
+194.165.16.10
+194.165.16.11
+194.165.16.37
+194.165.16.72
+194.165.16.76
+194.165.16.78
+194.169.175.26
+194.169.175.92
+194.186.187.54
+194.187.251.155
+194.204.194.11
+194.209.191.243
+194.219.141.100
+194.26.135.235
+194.26.135.45
+194.26.135.78
+194.26.29.152
+194.26.29.195
+194.26.29.37
+194.26.29.86
+194.31.109.194
+194.31.109.99
+194.34.232.229
+194.38.21.214
+194.5.188.45
+194.50.111.143
+194.55.224.194
+194.55.224.248
+194.55.224.31
+194.55.224.40
+194.55.224.58
+194.55.4.113
+194.59.170.7
+194.61.28.229
+194.61.52.90
+194.65.144.243
+194.67.67.140
+194.87.151.106
+194.87.151.116
+194.87.151.14
+194.87.151.141
+194.87.151.143
+194.87.151.243
+194.87.151.56
+194.87.151.73
+194.87.200.210
+194.88.152.40
+195.133.156.187
+195.140.146.69
+195.144.21.56
+195.154.119.124
+195.158.16.60
+195.181.38.126
+195.19.105.167
+195.19.96.49
+195.19.97.157
+195.191.82.212
+195.20.194.233
+195.206.105.227
+195.211.210.229
+195.226.194.142
+195.226.194.242
+195.230.103.242
+195.230.103.243
+195.230.103.244
+195.230.103.246
+195.230.103.247
+195.230.103.248
+195.230.103.249
+195.230.103.250
+195.239.91.210
+195.239.97.254
+195.24.129.234
+195.24.67.106
+195.3.147.52
+195.3.147.77
+195.43.6.229
+195.58.6.45
+195.68.154.202
+195.69.187.24
+195.70.93.131
+195.87.80.171
+195.9.32.22
+195.96.138.89
+196.188.104.221
+196.188.139.61
+196.188.77.118
+196.188.77.145
+196.189.118.69
+196.189.124.195
+196.189.187.106
+196.189.200.45
+196.189.38.197
+196.189.44.24
+196.191.101.216
+196.191.142.132
+196.191.96.145
+196.191.96.91
+196.202.220.96
+196.203.207.165
+196.203.231.220
+196.216.73.90
+196.218.238.188
+196.219.69.56
+196.223.153.253
+196.245.9.18
+196.28.248.220
+196.49.0.60
+196.6.103.2
+197.156.97.198
+197.199.224.52
+197.211.115.66
+197.221.248.249
+197.231.202.215
+197.243.14.52
+197.248.10.220
+197.248.2.229
+197.248.59.228
+197.249.4.79
+197.255.222.34
+197.255.225.96
+197.26.19.193
+197.4.107.135
+197.44.181.62
+197.5.145.121
+197.5.145.59
+197.5.145.68
+197.5.145.77
+197.5.145.93
+197.51.160.42
+198.12.114.231
+198.12.121.207
+198.12.121.69
+198.12.229.101
+198.12.253.60
+198.12.85.154
+198.12.85.199
+198.12.88.138
+198.134.104.126
+198.144.159.126
+198.144.177.130
+198.16.63.192
+198.199.100.61
+198.199.100.69
+198.199.101.225
+198.199.102.86
+198.199.103.111
+198.199.103.199
+198.199.104.156
+198.199.106.198
+198.199.106.214
+198.199.106.235
+198.199.107.114
+198.199.107.79
+198.199.108.144
+198.199.108.85
+198.199.109.203
+198.199.109.204
+198.199.109.99
+198.199.111.117
+198.199.111.154
+198.199.114.125
+198.199.114.189
+198.199.114.218
+198.199.114.5
+198.199.116.154
+198.199.116.27
+198.199.116.78
+198.199.117.128
+198.199.117.136
+198.199.117.169
+198.199.119.25
+198.199.119.35
+198.199.119.58
+198.199.119.63
+198.199.76.233
+198.199.92.121
+198.199.93.22
+198.199.93.43
+198.199.93.44
+198.199.93.88
+198.199.94.65
+198.199.95.33
+198.199.97.100
+198.199.97.19
+198.199.97.219
+198.199.97.240
+198.199.97.61
+198.20.101.106
+198.20.101.86
+198.20.101.98
+198.203.28.43
+198.211.121.90
+198.23.148.137
+198.23.149.3
+198.23.159.174
+198.23.165.102
+198.23.200.244
+198.235.24.10
+198.235.24.100
+198.235.24.101
+198.235.24.102
+198.235.24.103
+198.235.24.104
+198.235.24.105
+198.235.24.106
+198.235.24.107
+198.235.24.108
+198.235.24.109
+198.235.24.11
+198.235.24.110
+198.235.24.111
+198.235.24.112
+198.235.24.113
+198.235.24.114
+198.235.24.115
+198.235.24.116
+198.235.24.117
+198.235.24.118
+198.235.24.119
+198.235.24.12
+198.235.24.120
+198.235.24.121
+198.235.24.122
+198.235.24.123
+198.235.24.124
+198.235.24.125
+198.235.24.126
+198.235.24.127
+198.235.24.128
+198.235.24.129
+198.235.24.13
+198.235.24.130
+198.235.24.131
+198.235.24.132
+198.235.24.133
+198.235.24.134
+198.235.24.136
+198.235.24.137
+198.235.24.139
+198.235.24.14
+198.235.24.140
+198.235.24.141
+198.235.24.142
+198.235.24.143
+198.235.24.144
+198.235.24.145
+198.235.24.146
+198.235.24.147
+198.235.24.148
+198.235.24.149
+198.235.24.15
+198.235.24.151
+198.235.24.152
+198.235.24.153
+198.235.24.154
+198.235.24.155
+198.235.24.156
+198.235.24.158
+198.235.24.16
+198.235.24.161
+198.235.24.162
+198.235.24.163
+198.235.24.164
+198.235.24.165
+198.235.24.166
+198.235.24.167
+198.235.24.168
+198.235.24.169
+198.235.24.170
+198.235.24.171
+198.235.24.174
+198.235.24.175
+198.235.24.176
+198.235.24.177
+198.235.24.178
+198.235.24.18
+198.235.24.180
+198.235.24.181
+198.235.24.182
+198.235.24.183
+198.235.24.184
+198.235.24.185
+198.235.24.186
+198.235.24.19
+198.235.24.192
+198.235.24.193
+198.235.24.194
+198.235.24.195
+198.235.24.196
+198.235.24.197
+198.235.24.198
+198.235.24.199
+198.235.24.2
+198.235.24.20
+198.235.24.200
+198.235.24.201
+198.235.24.202
+198.235.24.203
+198.235.24.204
+198.235.24.205
+198.235.24.206
+198.235.24.207
+198.235.24.208
+198.235.24.209
+198.235.24.211
+198.235.24.212
+198.235.24.213
+198.235.24.214
+198.235.24.215
+198.235.24.216
+198.235.24.217
+198.235.24.218
+198.235.24.219
+198.235.24.22
+198.235.24.220
+198.235.24.221
+198.235.24.222
+198.235.24.223
+198.235.24.224
+198.235.24.225
+198.235.24.226
+198.235.24.227
+198.235.24.228
+198.235.24.229
+198.235.24.23
+198.235.24.230
+198.235.24.231
+198.235.24.232
+198.235.24.233
+198.235.24.234
+198.235.24.235
+198.235.24.236
+198.235.24.237
+198.235.24.238
+198.235.24.239
+198.235.24.24
+198.235.24.240
+198.235.24.241
+198.235.24.242
+198.235.24.243
+198.235.24.244
+198.235.24.245
+198.235.24.246
+198.235.24.247
+198.235.24.248
+198.235.24.249
+198.235.24.25
+198.235.24.251
+198.235.24.252
+198.235.24.253
+198.235.24.254
+198.235.24.255
+198.235.24.26
+198.235.24.27
+198.235.24.28
+198.235.24.29
+198.235.24.3
+198.235.24.30
+198.235.24.31
+198.235.24.33
+198.235.24.34
+198.235.24.35
+198.235.24.36
+198.235.24.37
+198.235.24.38
+198.235.24.39
+198.235.24.40
+198.235.24.41
+198.235.24.42
+198.235.24.43
+198.235.24.44
+198.235.24.45
+198.235.24.46
+198.235.24.47
+198.235.24.48
+198.235.24.49
+198.235.24.5
+198.235.24.50
+198.235.24.51
+198.235.24.52
+198.235.24.53
+198.235.24.54
+198.235.24.55
+198.235.24.56
+198.235.24.57
+198.235.24.58
+198.235.24.59
+198.235.24.6
+198.235.24.60
+198.235.24.64
+198.235.24.65
+198.235.24.66
+198.235.24.67
+198.235.24.68
+198.235.24.69
+198.235.24.70
+198.235.24.71
+198.235.24.72
+198.235.24.73
+198.235.24.74
+198.235.24.75
+198.235.24.76
+198.235.24.77
+198.235.24.78
+198.235.24.79
+198.235.24.8
+198.235.24.80
+198.235.24.81
+198.235.24.82
+198.235.24.83
+198.235.24.84
+198.235.24.85
+198.235.24.86
+198.235.24.87
+198.235.24.88
+198.235.24.89
+198.235.24.9
+198.235.24.90
+198.235.24.91
+198.235.24.92
+198.235.24.93
+198.235.24.94
+198.235.24.95
+198.235.24.96
+198.235.24.97
+198.235.24.98
+198.235.24.99
+198.244.167.101
+198.244.189.233
+198.27.67.44
+198.44.184.43
+198.46.166.155
+198.46.190.52
+198.50.173.145
+198.58.109.131
+198.71.52.97
+198.72.182.203
+198.98.55.202
+198.98.57.127
+198.98.61.77
+198.98.62.201
+199.115.228.186
+199.188.108.39
+199.19.226.30
+199.195.248.153
+199.195.248.188
+199.195.248.96
+199.244.49.231
+199.249.230.42
+199.48.164.241
+199.59.90.4
+199.77.205.178
+199.85.209.56
+2.111.111.28
+2.135.237.26
+2.135.51.230
+2.181.1.185
+2.228.25.92
+2.229.36.210
+2.37.223.58
+2.38.111.107
+2.39.134.254
+2.42.197.250
+2.55.101.148
+2.55.105.236
+2.55.115.136
+2.55.91.74
+2.56.58.69
+2.57.122.220
+2.57.219.2
+2.59.181.107
+2.59.182.54
+2.81.177.182
+2.82.153.197
+2.82.169.136
+2.83.61.37
+20.101.101.40
+20.101.62.76
+20.106.206.86
+20.107.70.85
+20.114.203.66
+20.117.220.202
+20.119.249.229
+20.123.111.79
+20.126.126.43
+20.141.64.165
+20.169.156.191
+20.170.11.140
+20.170.8.171
+20.187.92.255
+20.189.122.249
+20.191.185.166
+20.193.148.6
+20.193.148.7
+20.193.246.165
+20.194.105.28
+20.194.60.135
+20.196.7.248
+20.197.3.65
+20.198.123.108
+20.203.77.141
+20.204.165.90
+20.204.23.121
+20.205.42.154
+20.205.9.176
+20.210.113.154
+20.219.149.128
+20.219.188.145
+20.223.126.184
+20.225.126.147
+20.228.182.192
+20.235.12.113
+20.235.121.96
+20.241.228.180
+20.25.38.254
+20.254.140.101
+20.40.81.0
+20.49.2.187
+20.49.48.81
+20.62.172.235
+20.97.164.253
+200.0.212.212
+200.10.100.197
+200.105.183.118
+200.105.202.226
+200.108.143.6
+200.114.65.143
+200.117.214.166
+200.118.57.215
+200.122.249.203
+200.125.14.122
+200.129.139.116
+200.137.6.18
+200.149.225.86
+200.16.132.42
+200.17.132.8
+200.2.170.187
+200.216.184.34
+200.216.212.130
+200.217.195.214
+200.217.69.30
+200.217.73.138
+200.222.71.218
+200.222.91.66
+200.223.174.226
+200.223.192.150
+200.24.214.122
+200.31.1.49
+200.35.146.116
+200.40.135.93
+200.42.176.235
+200.43.89.215
+200.44.190.194
+200.45.182.24
+200.53.19.209
+200.53.28.211
+200.60.14.72
+200.60.6.206
+200.70.56.204
+200.71.187.92
+200.73.137.6
+200.85.58.110
+200.89.174.178
+200.9.220.11
+200.90.8.90
+200.94.86.84
+201.10.169.46
+201.103.144.165
+201.103.41.117
+201.111.4.141
+201.119.106.174
+201.121.226.89
+201.124.129.234
+201.131.212.19
+201.138.130.57
+201.138.142.100
+201.138.32.31
+201.14.236.165
+201.149.49.146
+201.149.55.226
+201.156.86.215
+201.163.162.179
+201.17.131.43
+201.184.50.251
+201.186.40.250
+201.202.13.108
+201.217.5.167
+201.234.106.216
+201.236.101.194
+201.236.186.32
+201.249.189.189
+201.28.187.217
+201.30.119.3
+201.48.76.244
+201.50.125.71
+201.62.65.6
+201.73.144.67
+201.76.115.102
+201.79.59.185
+201.79.92.113
+201.86.114.103
+201.86.119.117
+202.102.233.21
+202.107.225.207
+202.111.2.218
+202.12.5.189
+202.125.94.212
+202.125.94.71
+202.140.45.138
+202.148.14.206
+202.150.153.76
+202.155.204.26
+202.158.139.123
+202.158.139.57
+202.158.77.42
+202.163.121.60
+202.164.140.65
+202.165.17.42
+202.165.17.60
+202.165.24.30
+202.165.24.70
+202.166.162.90
+202.166.220.168
+202.169.53.11
+202.170.60.201
+202.175.76.242
+202.176.131.190
+202.29.13.52
+202.29.229.129
+202.29.229.132
+202.29.233.166
+202.39.78.217
+202.47.118.117
+202.51.74.123
+202.53.175.36
+202.53.68.55
+202.53.90.187
+202.53.94.150
+202.53.94.195
+202.55.166.154
+202.61.136.178
+202.72.193.34
+202.74.243.26
+202.79.168.133
+202.82.148.197
+202.83.16.8
+202.83.43.89
+202.90.198.2
+202.90.198.45
+202.95.12.107
+202.95.12.125
+202.95.12.15
+202.97.181.78
+203.100.68.6
+203.113.167.3
+203.114.102.173
+203.114.71.36
+203.135.20.36
+203.135.57.171
+203.145.165.54
+203.152.198.24
+203.156.126.113
+203.159.154.150
+203.160.179.237
+203.167.14.90
+203.170.129.197
+203.172.124.86
+203.172.56.202
+203.172.76.4
+203.176.137.180
+203.177.91.202
+203.186.102.230
+203.190.55.197
+203.192.228.49
+203.198.148.220
+203.199.243.13
+203.205.34.193
+203.205.37.224
+203.205.37.233
+203.210.232.1
+203.228.126.242
+203.228.78.100
+203.229.155.61
+203.229.182.59
+203.243.35.200
+203.243.43.88
+203.243.54.141
+203.251.92.99
+203.252.10.3
+203.51.38.164
+203.56.198.68
+203.59.73.76
+203.64.101.227
+203.80.23.197
+203.81.66.110
+203.99.178.63
+204.101.161.19
+204.13.46.4
+204.48.16.149
+204.48.24.27
+205.185.114.148
+205.185.115.222
+205.185.119.154
+205.185.123.242
+205.185.125.146
+205.185.126.149
+205.210.31.10
+205.210.31.100
+205.210.31.101
+205.210.31.102
+205.210.31.103
+205.210.31.104
+205.210.31.105
+205.210.31.106
+205.210.31.107
+205.210.31.108
+205.210.31.109
+205.210.31.11
+205.210.31.110
+205.210.31.111
+205.210.31.12
+205.210.31.128
+205.210.31.129
+205.210.31.13
+205.210.31.131
+205.210.31.132
+205.210.31.133
+205.210.31.134
+205.210.31.136
+205.210.31.137
+205.210.31.138
+205.210.31.139
+205.210.31.14
+205.210.31.140
+205.210.31.141
+205.210.31.142
+205.210.31.143
+205.210.31.144
+205.210.31.145
+205.210.31.146
+205.210.31.147
+205.210.31.148
+205.210.31.149
+205.210.31.150
+205.210.31.151
+205.210.31.152
+205.210.31.153
+205.210.31.154
+205.210.31.155
+205.210.31.156
+205.210.31.158
+205.210.31.159
+205.210.31.16
+205.210.31.161
+205.210.31.162
+205.210.31.163
+205.210.31.164
+205.210.31.165
+205.210.31.166
+205.210.31.167
+205.210.31.168
+205.210.31.169
+205.210.31.17
+205.210.31.170
+205.210.31.171
+205.210.31.172
+205.210.31.173
+205.210.31.174
+205.210.31.175
+205.210.31.176
+205.210.31.177
+205.210.31.178
+205.210.31.18
+205.210.31.180
+205.210.31.181
+205.210.31.183
+205.210.31.184
+205.210.31.185
+205.210.31.186
+205.210.31.19
+205.210.31.192
+205.210.31.193
+205.210.31.194
+205.210.31.195
+205.210.31.196
+205.210.31.197
+205.210.31.198
+205.210.31.199
+205.210.31.2
+205.210.31.20
+205.210.31.200
+205.210.31.201
+205.210.31.202
+205.210.31.203
+205.210.31.204
+205.210.31.205
+205.210.31.206
+205.210.31.207
+205.210.31.208
+205.210.31.209
+205.210.31.210
+205.210.31.211
+205.210.31.212
+205.210.31.213
+205.210.31.214
+205.210.31.215
+205.210.31.216
+205.210.31.217
+205.210.31.218
+205.210.31.219
+205.210.31.22
+205.210.31.220
+205.210.31.221
+205.210.31.222
+205.210.31.223
+205.210.31.224
+205.210.31.225
+205.210.31.226
+205.210.31.227
+205.210.31.228
+205.210.31.229
+205.210.31.23
+205.210.31.230
+205.210.31.231
+205.210.31.232
+205.210.31.233
+205.210.31.234
+205.210.31.235
+205.210.31.236
+205.210.31.237
+205.210.31.238
+205.210.31.239
+205.210.31.24
+205.210.31.240
+205.210.31.241
+205.210.31.242
+205.210.31.243
+205.210.31.244
+205.210.31.245
+205.210.31.246
+205.210.31.248
+205.210.31.249
+205.210.31.250
+205.210.31.251
+205.210.31.252
+205.210.31.253
+205.210.31.254
+205.210.31.255
+205.210.31.26
+205.210.31.27
+205.210.31.28
+205.210.31.29
+205.210.31.3
+205.210.31.31
+205.210.31.32
+205.210.31.33
+205.210.31.34
+205.210.31.35
+205.210.31.36
+205.210.31.37
+205.210.31.38
+205.210.31.39
+205.210.31.40
+205.210.31.41
+205.210.31.42
+205.210.31.43
+205.210.31.44
+205.210.31.45
+205.210.31.46
+205.210.31.47
+205.210.31.48
+205.210.31.49
+205.210.31.5
+205.210.31.50
+205.210.31.51
+205.210.31.52
+205.210.31.53
+205.210.31.54
+205.210.31.55
+205.210.31.56
+205.210.31.57
+205.210.31.58
+205.210.31.59
+205.210.31.6
+205.210.31.60
+205.210.31.64
+205.210.31.65
+205.210.31.66
+205.210.31.67
+205.210.31.68
+205.210.31.69
+205.210.31.70
+205.210.31.71
+205.210.31.72
+205.210.31.73
+205.210.31.74
+205.210.31.75
+205.210.31.76
+205.210.31.77
+205.210.31.78
+205.210.31.79
+205.210.31.8
+205.210.31.80
+205.210.31.81
+205.210.31.82
+205.210.31.83
+205.210.31.84
+205.210.31.85
+205.210.31.86
+205.210.31.87
+205.210.31.88
+205.210.31.89
+205.210.31.9
+205.210.31.90
+205.210.31.91
+205.210.31.92
+205.210.31.93
+205.210.31.94
+205.210.31.95
+205.210.31.96
+205.210.31.97
+205.210.31.98
+205.210.31.99
+205.214.74.6
+205.236.155.137
+206.189.110.246
+206.189.114.103
+206.189.120.50
+206.189.130.158
+206.189.130.185
+206.189.130.255
+206.189.131.219
+206.189.137.162
+206.189.151.151
+206.189.19.65
+206.189.213.126
+206.189.237.229
+206.189.238.210
+206.189.31.90
+206.189.34.66
+206.189.37.172
+206.189.38.110
+206.189.42.174
+206.189.45.122
+206.189.49.176
+206.189.57.162
+206.189.57.56
+206.189.63.115
+206.189.65.29
+206.189.75.25
+206.189.80.198
+206.189.84.155
+206.189.86.228
+206.189.88.242
+206.217.131.233
+206.217.143.171
+206.251.211.203
+206.81.19.180
+206.81.25.18
+206.81.27.79
+207.154.194.126
+207.154.196.132
+207.154.208.68
+207.154.212.67
+207.154.215.181
+207.154.220.120
+207.154.226.163
+207.154.230.215
+207.154.232.181
+207.154.241.112
+207.154.245.181
+207.154.251.172
+207.229.164.18
+207.229.167.36
+207.237.216.175
+207.244.228.133
+207.249.123.177
+207.249.123.183
+207.249.96.147
+207.249.96.168
+207.249.96.38
+207.249.96.42
+207.254.246.191
+207.46.140.16
+207.90.244.2
+207.90.244.3
+207.90.244.4
+207.90.244.5
+207.90.244.6
+208.100.26.244
+208.104.246.150
+208.105.196.214
+208.109.13.144
+208.109.33.212
+208.109.34.70
+208.109.61.155
+208.67.104.235
+208.72.65.181
+208.97.181.102
+208.99.251.25
+209.126.2.205
+209.127.54.10
+209.141.37.166
+209.141.45.235
+209.141.46.14
+209.141.46.19
+209.141.49.96
+209.141.51.12
+209.141.51.76
+209.141.60.201
+209.141.61.36
+209.145.63.7
+209.150.150.26
+209.159.213.193
+209.164.247.229
+209.203.48.58
+209.249.44.82
+209.38.252.186
+209.87.149.13
+209.95.124.173
+209.97.133.7
+209.97.147.143
+209.97.149.37
+209.97.161.31
+209.97.163.142
+209.97.164.116
+209.97.183.120
+210.105.99.34
+210.106.108.250
+210.114.1.46
+210.121.109.12
+210.14.6.60
+210.146.173.28
+210.16.185.3
+210.176.41.225
+210.176.61.252
+210.183.177.210
+210.183.96.48
+210.186.166.139
+210.187.216.90
+210.19.254.6
+210.195.158.247
+210.206.120.249
+210.211.116.80
+210.22.132.154
+210.22.75.94
+210.245.111.235
+210.245.111.33
+210.245.26.43
+210.245.33.11
+210.3.200.114
+210.4.98.162
+210.56.26.106
+210.57.12.102
+210.64.73.142
+210.65.138.196
+210.68.200.79
+210.90.113.32
+210.91.254.26
+210.91.73.167
+210.95.97.86
+210.97.30.200
+210.99.110.117
+211.103.46.74
+211.104.134.100
+211.104.5.169
+211.105.186.192
+211.106.218.57
+211.106.61.246
+211.109.181.11
+211.110.1.12
+211.110.1.37
+211.110.139.198
+211.112.187.197
+211.114.142.156
+211.161.90.99
+211.185.129.203
+211.194.115.190
+211.194.83.173
+211.195.100.243
+211.196.120.196
+211.198.128.204
+211.198.231.160
+211.199.108.56
+211.199.96.67
+211.208.147.176
+211.21.113.128
+211.210.152.106
+211.210.35.146
+211.218.17.5
+211.219.111.67
+211.219.6.5
+211.220.190.19
+211.220.47.138
+211.221.138.162
+211.221.70.11
+211.221.85.144
+211.221.91.202
+211.222.108.240
+211.222.219.29
+211.222.241.183
+211.223.126.167
+211.223.130.25
+211.224.162.184
+211.224.63.169
+211.225.159.186
+211.225.81.12
+211.225.87.159
+211.226.226.223
+211.227.102.57
+211.227.163.40
+211.227.89.204
+211.227.97.39
+211.228.164.252
+211.229.101.27
+211.23.95.152
+211.230.31.143
+211.240.29.61
+211.246.182.240
+211.248.12.99
+211.248.124.211
+211.248.168.249
+211.248.2.102
+211.25.119.142
+211.250.74.124
+211.252.204.42
+211.252.84.224
+211.253.10.96
+211.253.133.50
+211.253.170.241
+211.253.27.169
+211.253.37.225
+211.253.9.49
+211.37.174.62
+211.38.245.16
+211.38.255.249
+211.43.15.80
+211.46.217.253
+211.51.110.71
+211.55.110.104
+211.57.20.18
+211.72.100.135
+211.72.198.143
+211.75.183.12
+211.75.19.210
+211.75.215.176
+212.109.207.62
+212.12.31.189
+212.122.92.125
+212.129.63.165
+212.192.240.68
+212.193.30.63
+212.199.223.105
+212.224.93.202
+212.226.91.3
+212.227.6.132
+212.233.113.86
+212.237.106.146
+212.33.243.22
+212.33.245.236
+212.33.250.241
+212.50.255.183
+212.62.96.197
+212.71.249.10
+212.83.144.11
+212.83.146.166
+212.83.157.255
+212.83.8.75
+212.83.8.79
+212.95.50.77
+213.102.67.228
+213.108.200.11
+213.108.4.88
+213.110.25.5
+213.112.251.50
+213.136.85.206
+213.141.143.70
+213.148.174.46
+213.152.161.118
+213.152.161.138
+213.152.161.149
+213.152.161.15
+213.152.161.165
+213.152.161.30
+213.152.161.5
+213.152.162.154
+213.152.162.94
+213.152.162.99
+213.152.187.195
+213.152.187.200
+213.152.187.235
+213.155.211.211
+213.155.225.165
+213.166.81.248
+213.177.214.112
+213.190.4.134
+213.194.140.33
+213.215.140.6
+213.221.32.242
+213.226.123.61
+213.230.124.230
+213.230.64.246
+213.230.65.53
+213.246.240.84
+213.32.16.42
+213.32.255.94
+213.32.82.91
+213.55.96.14
+213.59.164.235
+213.60.255.181
+213.74.115.162
+213.74.173.71
+216.10.245.180
+216.127.187.77
+216.20.128.186
+216.218.206.100
+216.218.206.102
+216.218.206.105
+216.218.206.120
+216.218.206.121
+216.218.206.124
+216.218.206.125
+216.218.206.66
+216.218.206.73
+216.218.206.77
+216.218.206.82
+216.218.206.86
+216.218.206.89
+216.218.206.92
+216.218.206.93
+216.218.206.96
+216.218.206.97
+216.232.132.5
+216.240.40.57
+216.245.77.37
+216.250.247.157
+216.252.161.32
+216.83.42.237
+217.10.40.45
+217.107.124.58
+217.11.189.230
+217.115.58.242
+217.12.86.246
+217.128.206.117
+217.133.27.74
+217.133.34.149
+217.133.56.150
+217.147.173.229
+217.151.98.163
+217.160.51.110
+217.165.114.35
+217.165.133.17
+217.182.16.12
+217.182.253.127
+217.182.75.250
+217.19.154.220
+217.195.197.37
+217.196.24.182
+217.219.116.116
+217.219.223.36
+217.219.61.14
+217.219.61.27
+217.237.112.159
+217.29.116.186
+217.29.116.187
+217.29.49.103
+217.59.246.27
+217.66.25.10
+217.73.110.9
+217.76.49.212
+217.76.51.160
+217.76.62.0
+217.77.48.229
+218.103.123.96
+218.104.237.213
+218.13.49.72
+218.146.117.222
+218.147.131.59
+218.148.197.203
+218.149.255.15
+218.149.97.96
+218.150.246.42
+218.150.6.100
+218.151.74.192
+218.154.184.236
+218.154.31.185
+218.157.249.130
+218.161.14.158
+218.161.22.17
+218.161.27.10
+218.161.74.199
+218.161.86.236
+218.161.90.126
+218.185.241.184
+218.201.148.26
+218.201.148.42
+218.21.73.71
+218.211.171.143
+218.22.52.196
+218.238.144.57
+218.249.168.10
+218.25.233.22
+218.255.131.218
+218.255.179.162
+218.255.245.10
+218.26.205.154
+218.28.225.36
+218.29.163.2
+218.29.61.124
+218.39.194.10
+218.57.210.66
+218.59.200.40
+218.60.104.1
+218.60.95.59
+218.63.104.75
+218.64.124.21
+218.64.57.12
+218.65.37.216
+218.77.67.196
+218.78.75.180
+218.89.52.104
+218.91.109.91
+218.91.12.127
+218.91.15.19
+218.92.0.107
+218.92.0.108
+218.92.0.112
+218.92.0.113
+218.92.0.118
+218.92.0.15
+218.92.0.17
+218.92.0.20
+218.92.0.21
+218.92.0.22
+218.92.0.24
+218.92.0.25
+218.92.0.26
+218.92.0.27
+218.92.0.28
+218.92.0.29
+218.92.0.30
+218.92.0.31
+218.92.0.33
+218.92.0.34
+218.92.0.35
+218.92.0.37
+218.92.0.40
+218.92.0.43
+218.92.0.45
+218.92.0.46
+218.92.0.47
+218.92.0.51
+218.92.0.52
+218.92.0.53
+218.92.0.55
+218.92.0.56
+218.92.0.59
+218.92.0.62
+218.92.0.95
+218.92.0.96
+218.92.0.98
+218.92.0.99
+218.92.230.86
+218.93.165.167
+218.93.190.91
+218.94.53.250
+219.127.11.94
+219.128.15.190
+219.128.9.126
+219.129.97.146
+219.138.158.26
+219.139.148.107
+219.139.75.193
+219.147.194.122
+219.148.171.178
+219.149.192.70
+219.151.237.248
+219.151.237.253
+219.240.110.224
+219.249.140.30
+219.252.26.188
+219.254.130.174
+219.255.127.181
+219.78.72.195
+219.85.53.188
+219.85.59.166
+220.117.232.74
+220.118.147.50
+220.118.147.55
+220.120.192.85
+220.120.78.20
+220.122.202.232
+220.124.208.203
+220.124.89.47
+220.125.240.69
+220.125.26.138
+220.126.208.30
+220.126.8.143
+220.128.228.235
+220.130.222.105
+220.132.141.109
+220.132.148.220
+220.132.163.58
+220.132.164.121
+220.132.168.189
+220.132.240.37
+220.132.69.196
+220.132.98.85
+220.133.19.172
+220.133.194.28
+220.133.230.183
+220.133.249.85
+220.133.251.58
+220.133.58.63
+220.133.6.130
+220.133.62.88
+220.133.83.143
+220.133.95.68
+220.134.165.98
+220.134.188.181
+220.134.197.205
+220.134.50.45
+220.134.55.62
+220.134.6.146
+220.134.62.165
+220.134.63.101
+220.134.64.85
+220.135.105.82
+220.135.126.89
+220.135.13.93
+220.135.142.40
+220.135.177.191
+220.135.228.102
+220.135.244.126
+220.135.254.103
+220.135.26.2
+220.135.61.173
+220.166.88.18
+220.169.54.18
+220.173.55.139
+220.177.254.171
+220.178.120.74
+220.179.138.14
+220.179.69.99
+220.180.107.235
+220.180.166.214
+220.180.171.157
+220.180.37.203
+220.202.55.106
+220.205.122.147
+220.225.126.55
+220.228.152.176
+220.246.33.144
+220.246.66.209
+220.247.10.215
+220.247.223.56
+220.247.247.150
+220.249.16.114
+220.250.41.11
+220.255.30.104
+220.71.94.93
+220.72.97.172
+220.74.78.244
+220.76.104.72
+220.76.132.137
+220.76.90.28
+220.77.208.144
+220.77.4.105
+220.77.47.127
+220.78.2.130
+220.78.79.212
+220.80.101.244
+220.80.14.246
+220.80.143.84
+220.80.200.97
+220.80.215.226
+220.80.223.144
+220.83.207.100
+220.84.89.245
+220.85.134.188
+220.86.118.225
+220.88.1.208
+220.89.108.55
+220.89.239.5
+220.93.77.192
+220.95.31.27
+221.118.24.119
+221.118.82.181
+221.120.201.99
+221.120.38.213
+221.121.150.129
+221.122.67.75
+221.133.12.6
+221.133.26.232
+221.140.2.233
+221.145.209.23
+221.145.250.221
+221.147.232.194
+221.148.192.216
+221.15.199.35
+221.15.236.124
+221.150.59.204
+221.151.120.235
+221.153.10.93
+221.155.143.109
+221.156.126.1
+221.157.75.252
+221.159.206.62
+221.160.125.68
+221.161.74.36
+221.162.238.34
+221.163.114.252
+221.164.208.79
+221.165.124.230
+221.167.104.115
+221.178.176.85
+221.181.174.201
+221.187.82.239
+221.193.248.166
+221.195.109.174
+221.195.208.21
+221.195.80.203
+221.2.153.49
+221.204.171.236
+221.213.63.210
+221.214.181.197
+221.214.60.106
+221.225.103.130
+221.225.135.159
+221.229.31.69
+221.231.111.186
+221.235.139.121
+221.238.141.18
+221.8.33.125
+222.101.206.211
+222.102.183.234
+222.103.134.60
+222.103.186.167
+222.103.20.77
+222.104.124.107
+222.104.202.16
+222.105.170.207
+222.107.156.227
+222.107.176.163
+222.108.12.43
+222.108.136.14
+222.108.64.95
+222.110.128.164
+222.111.81.173
+222.112.217.59
+222.112.233.147
+222.113.134.71
+222.116.247.252
+222.117.118.200
+222.117.92.66
+222.120.129.188
+222.120.176.4
+222.121.250.116
+222.124.214.10
+222.138.176.193
+222.161.242.146
+222.165.138.144
+222.165.151.114
+222.165.186.50
+222.168.30.19
+222.170.53.82
+222.173.216.246
+222.179.39.200
+222.184.86.186
+222.185.1.112
+222.185.103.179
+222.185.103.223
+222.185.167.14
+222.186.13.133
+222.186.21.35
+222.188.106.38
+222.188.185.206
+222.188.192.190
+222.188.201.10
+222.188.255.22
+222.189.115.109
+222.212.94.49
+222.218.17.199
+222.218.17.20
+222.221.80.8
+222.222.111.49
+222.222.21.184
+222.237.78.200
+222.239.231.61
+222.241.49.92
+222.243.211.188
+222.246.125.78
+222.246.42.218
+222.252.21.30
+222.253.43.62
+222.71.174.180
+222.71.214.2
+222.74.217.106
+222.75.12.66
+222.75.12.78
+222.75.225.206
+222.88.205.48
+222.93.28.217
+222.93.94.181
+222.98.224.114
+222.99.194.210
+222.99.27.132
+223.10.1.216
+223.10.123.168
+223.10.18.16
+223.10.30.132
+223.10.67.194
+223.113.91.98
+223.12.158.253
+223.13.28.156
+223.13.30.39
+223.13.61.252
+223.13.73.64
+223.134.4.129
+223.14.78.228
+223.149.20.70
+223.15.52.144
+223.15.52.173
+223.15.52.74
+223.167.75.122
+223.17.0.181
+223.171.91.139
+223.171.91.160
+223.181.129.195
+223.19.203.165
+223.197.125.110
+223.197.162.15
+223.197.162.18
+223.197.172.72
+223.197.199.52
+223.197.202.7
+223.197.215.193
+223.197.223.102
+223.197.223.237
+223.22.233.92
+223.22.243.22
+223.241.100.90
+223.243.101.149
+223.244.253.16
+223.25.66.160
+223.71.26.166
+223.73.207.7
+223.8.0.212
+223.8.0.75
+223.8.197.72
+223.8.200.55
+223.8.211.89
+223.8.214.235
+223.8.235.118
+223.8.46.32
+223.82.203.42
+223.9.122.26
+223.9.122.87
+223.9.126.212
+223.9.127.187
+223.9.47.168
+223.94.129.72
+23.105.194.93
+23.105.201.41
+23.105.218.220
+23.105.222.234
+23.116.82.170
+23.123.122.169
+23.129.64.214
+23.129.64.216
+23.129.64.220
+23.129.64.228
+23.129.64.229
+23.137.250.7
+23.140.99.149
+23.140.99.153
+23.146.240.83
+23.22.35.162
+23.224.152.42
+23.224.186.179
+23.224.186.185
+23.224.186.187
+23.224.186.206
+23.224.186.207
+23.224.186.216
+23.224.186.222
+23.224.186.223
+23.224.186.23
+23.224.186.36
+23.224.186.37
+23.224.186.4
+23.224.186.46
+23.224.186.67
+23.224.186.69
+23.224.186.7
+23.224.186.73
+23.224.186.75
+23.224.189.26
+23.224.189.28
+23.224.189.31
+23.224.189.35
+23.224.189.49
+23.224.197.134
+23.224.33.173
+23.224.33.41
+23.224.98.194
+23.225.163.199
+23.225.163.203
+23.225.163.205
+23.225.163.214
+23.225.163.215
+23.225.163.217
+23.225.163.219
+23.225.180.180
+23.225.180.206
+23.225.77.221
+23.226.128.22
+23.241.32.194
+23.243.240.107
+23.244.78.182
+23.248.175.138
+23.248.184.241
+23.251.102.74
+23.251.102.75
+23.251.102.76
+23.30.195.98
+23.90.160.140
+23.90.160.146
+23.90.160.147
+23.90.160.148
+23.94.0.113
+23.94.122.136
+23.94.181.24
+23.94.194.177
+23.94.218.57
+23.94.61.49
+23.94.62.185
+23.95.113.24
+23.95.166.48
+23.95.170.226
+23.95.20.253
+23.95.4.194
+23.95.41.40
+23.95.44.105
+23.97.195.150
+23.97.205.210
+24.103.95.58
+24.109.128.254
+24.111.249.3
+24.118.41.187
+24.120.108.5
+24.123.10.93
+24.127.158.28
+24.140.121.21
+24.143.127.229
+24.152.14.150
+24.168.98.246
+24.172.123.68
+24.199.108.105
+24.199.116.85
+24.199.118.157
+24.199.120.7
+24.199.86.99
+24.199.94.27
+24.205.219.58
+24.207.174.170
+24.209.184.145
+24.21.198.5
+24.227.103.175
+24.233.243.241
+24.242.115.95
+24.247.68.114
+24.254.79.163
+24.30.115.21
+24.31.19.16
+24.59.43.41
+24.88.242.6
+24.9.140.212
+2607:ff10:c8:594::4
+2607:ff10:c8:594::5
+2607:ff10:c8:594::7
+2607:ff10:c8:594::8
+2607:ff10:c8:594::9
+2607:ff10:c8:594::a
+2607:ff10:c8:594::c
+2607:ff10:c8:594::d
+2607:ff10:c8:594::e
+27.100.163.219
+27.105.182.58
+27.111.74.44
+27.112.79.223
+27.118.22.221
+27.123.254.213
+27.124.12.23
+27.124.32.142
+27.124.32.143
+27.124.32.157
+27.124.32.158
+27.124.32.163
+27.124.32.166
+27.124.32.183
+27.124.32.185
+27.124.32.186
+27.124.32.190
+27.124.5.118
+27.124.5.119
+27.124.5.120
+27.124.5.15
+27.124.5.21
+27.124.5.3
+27.128.163.249
+27.128.194.139
+27.130.113.98
+27.131.36.170
+27.147.145.186
+27.150.173.9
+27.156.185.152
+27.157.193.205
+27.185.41.202
+27.188.65.103
+27.188.67.235
+27.192.254.117
+27.197.212.97
+27.220.48.159
+27.222.53.237
+27.254.149.199
+27.254.159.123
+27.254.207.181
+27.254.235.1
+27.254.235.12
+27.254.235.13
+27.254.235.2
+27.254.253.213
+27.254.41.5
+27.254.47.59
+27.35.18.225
+27.35.2.52
+27.35.34.124
+27.45.118.216
+27.5.120.176
+27.50.54.64
+27.71.224.116
+27.71.235.82
+27.71.238.208
+27.72.102.114
+27.72.116.110
+27.72.155.100
+27.72.155.116
+27.72.28.167
+27.72.46.112
+27.72.46.90
+27.72.47.190
+27.72.87.36
+27.74.90.243
+27.98.249.9
+2a10:cc45:100::30c0:a37c:7eb0:c8a9
+2a10:cc45:100::b048:c10c:f2f9:d3ef
+3.0.14.27
+3.111.62.38
+3.127.93.80
+31.0.137.82
+31.13.239.4
+31.133.205.10
+31.134.120.154
+31.134.62.5
+31.156.239.225
+31.163.183.77
+31.165.193.87
+31.167.151.230
+31.179.234.178
+31.184.198.71
+31.184.240.91
+31.186.48.216
+31.187.75.235
+31.192.111.224
+31.210.211.114
+31.210.39.123
+31.214.243.150
+31.220.1.83
+31.220.59.91
+31.41.244.111
+31.41.244.125
+31.42.173.30
+31.48.122.145
+31.7.70.251
+31.7.70.253
+31.7.75.118
+32.212.128.24
+34.100.144.72
+34.100.161.188
+34.100.189.218
+34.100.200.229
+34.100.239.202
+34.100.241.106
+34.101.132.175
+34.101.245.3
+34.105.247.11
+34.124.148.234
+34.125.22.185
+34.126.71.110
+34.126.78.62
+34.128.76.85
+34.132.47.136
+34.133.176.225
+34.133.86.38
+34.136.12.75
+34.140.248.32
+34.140.65.171
+34.142.197.251
+34.142.220.84
+34.142.82.98
+34.143.146.116
+34.159.227.146
+34.170.143.93
+34.175.118.185
+34.28.218.26
+34.64.101.62
+34.64.192.120
+34.64.201.2
+34.64.215.4
+34.64.239.126
+34.64.96.127
+34.65.234.0
+34.67.61.18
+34.69.182.55
+34.71.85.187
+34.75.65.218
+34.76.158.233
+34.79.162.186
+34.80.149.187
+34.80.213.3
+34.81.50.162
+34.82.167.19
+34.85.163.94
+34.87.110.103
+34.87.234.40
+34.89.123.20
+34.91.0.68
+34.92.176.182
+34.93.152.113
+34.93.165.178
+34.93.204.90
+34.93.41.247
+35.140.131.156
+35.178.201.171
+35.186.145.141
+35.188.219.29
+35.194.181.153
+35.194.233.240
+35.196.25.123
+35.196.37.143
+35.196.46.44
+35.198.227.178
+35.199.95.142
+35.201.137.149
+35.202.200.207
+35.203.210.10
+35.203.210.100
+35.203.210.120
+35.203.210.123
+35.203.210.133
+35.203.210.135
+35.203.210.145
+35.203.210.156
+35.203.210.16
+35.203.210.162
+35.203.210.164
+35.203.210.165
+35.203.210.166
+35.203.210.167
+35.203.210.171
+35.203.210.175
+35.203.210.179
+35.203.210.184
+35.203.210.185
+35.203.210.19
+35.203.210.190
+35.203.210.195
+35.203.210.204
+35.203.210.215
+35.203.210.22
+35.203.210.229
+35.203.210.230
+35.203.210.232
+35.203.210.234
+35.203.210.236
+35.203.210.240
+35.203.210.247
+35.203.210.248
+35.203.210.251
+35.203.210.33
+35.203.210.35
+35.203.210.39
+35.203.210.42
+35.203.210.43
+35.203.210.44
+35.203.210.47
+35.203.210.55
+35.203.210.6
+35.203.210.64
+35.203.210.65
+35.203.210.7
+35.203.210.78
+35.203.210.81
+35.203.210.91
+35.203.210.96
+35.203.210.97
+35.203.211.108
+35.203.211.112
+35.203.211.114
+35.203.211.118
+35.203.211.120
+35.203.211.130
+35.203.211.137
+35.203.211.141
+35.203.211.152
+35.203.211.154
+35.203.211.170
+35.203.211.176
+35.203.211.178
+35.203.211.18
+35.203.211.181
+35.203.211.189
+35.203.211.203
+35.203.211.21
+35.203.211.217
+35.203.211.222
+35.203.211.224
+35.203.211.228
+35.203.211.236
+35.203.211.30
+35.203.211.32
+35.203.211.38
+35.203.211.39
+35.203.211.4
+35.203.211.43
+35.203.211.54
+35.203.211.55
+35.203.211.66
+35.203.211.7
+35.203.211.72
+35.203.211.77
+35.203.211.78
+35.203.211.88
+35.203.211.99
+35.207.209.4
+35.209.153.107
+35.210.95.93
+35.213.170.208
+35.216.190.48
+35.216.225.215
+35.216.237.60
+35.219.62.194
+35.219.66.183
+35.220.172.244
+35.222.117.243
+35.223.246.35
+35.224.2.98
+35.225.199.197
+35.225.22.57
+35.226.196.179
+35.226.64.200
+35.227.22.144
+35.229.206.177
+35.233.62.116
+35.240.132.23
+35.240.204.250
+35.240.237.113
+35.242.254.186
+35.244.10.86
+35.244.25.124
+35.245.196.202
+35.247.184.181
+35.86.183.248
+36.103.240.241
+36.103.241.107
+36.105.172.98
+36.108.173.101
+36.108.188.106
+36.110.228.254
+36.137.75.228
+36.139.87.191
+36.140.58.65
+36.154.231.90
+36.156.145.28
+36.158.124.42
+36.224.130.105
+36.224.145.73
+36.225.143.251
+36.229.161.105
+36.230.119.209
+36.239.175.94
+36.26.58.34
+36.26.70.203
+36.26.74.146
+36.32.24.153
+36.33.1.186
+36.33.240.167
+36.33.240.171
+36.35.151.150
+36.35.24.92
+36.48.29.10
+36.48.30.25
+36.55.136.21
+36.66.16.233
+36.66.212.226
+36.66.41.76
+36.73.132.100
+36.80.225.16
+36.85.108.54
+36.91.166.34
+36.91.178.178
+36.92.107.106
+36.92.165.163
+36.92.36.146
+36.93.108.107
+36.94.81.243
+36.94.90.98
+36.95.2.93
+36.95.219.202
+36.95.62.183
+36.96.40.194
+36.97.144.36
+36.99.246.242
+37.101.187.64
+37.103.91.160
+37.112.191.12
+37.114.47.108
+37.120.132.83
+37.120.148.78
+37.139.15.214
+37.139.4.138
+37.152.180.209
+37.152.187.164
+37.152.191.57
+37.159.240.182
+37.17.180.98
+37.187.45.135
+37.187.74.90
+37.187.78.11
+37.187.88.37
+37.193.112.180
+37.194.206.12
+37.204.183.68
+37.216.201.49
+37.221.92.205
+37.228.129.100
+37.228.129.26
+37.25.36.50
+37.252.66.56
+37.28.178.196
+37.32.21.111
+37.32.27.168
+37.32.30.157
+37.34.228.29
+37.44.244.73
+37.49.38.186
+37.53.82.111
+37.77.167.64
+38.10.246.40
+38.126.213.150
+38.132.109.112
+38.132.109.119
+38.21.60.242
+38.242.135.212
+38.50.60.15
+38.53.131.121
+38.7.222.160
+38.7.31.74
+38.9.163.57
+38.99.81.158
+39.100.73.242
+39.101.185.186
+39.105.77.214
+39.106.1.169
+39.108.166.28
+39.109.127.125
+39.109.85.40
+39.117.148.101
+39.126.196.122
+39.126.46.144
+39.126.46.183
+39.126.46.89
+39.129.35.96
+39.129.54.66
+39.130.181.254
+39.164.106.80
+39.170.5.210
+39.174.196.203
+39.33.131.34
+39.45.232.37
+39.74.4.163
+39.77.7.174
+39.83.135.95
+39.91.166.193
+39.91.166.21
+39.98.40.237
+39.98.70.164
+4.17.226.132
+4.194.59.40
+4.224.22.134
+4.228.213.1
+4.229.227.188
+40.112.186.222
+40.113.115.253
+40.113.120.26
+40.115.18.231
+40.118.30.26
+40.118.46.159
+40.124.73.236
+40.68.89.187
+40.76.197.234
+40.76.205.168
+40.77.111.208
+41.138.161.10
+41.138.161.23
+41.138.85.165
+41.162.56.37
+41.169.26.227
+41.175.18.170
+41.175.5.110
+41.185.26.240
+41.190.158.22
+41.190.51.10
+41.191.116.18
+41.205.93.2
+41.207.248.204
+41.214.134.201
+41.214.20.60
+41.215.130.247
+41.215.151.42
+41.216.177.212
+41.220.235.128
+41.221.201.77
+41.223.230.82
+41.223.6.198
+41.223.6.200
+41.223.99.89
+41.231.106.9
+41.231.3.210
+41.41.97.145
+41.63.182.43
+41.63.9.36
+41.65.239.235
+41.72.219.102
+41.73.252.229
+41.74.112.230
+41.77.11.130
+41.79.190.243
+41.82.208.182
+41.93.31.73
+42.117.228.16
+42.117.230.15
+42.118.122.196
+42.119.111.155
+42.144.88.192
+42.190.103.132
+42.190.98.111
+42.192.123.62
+42.192.92.229
+42.194.133.5
+42.200.149.223
+42.200.155.72
+42.200.159.37
+42.200.203.63
+42.200.75.233
+42.235.47.99
+42.238.235.103
+42.240.129.110
+42.240.129.230
+42.240.129.249
+42.240.129.40
+42.240.129.66
+42.240.129.69
+42.240.129.8
+42.240.129.88
+42.240.129.9
+42.240.133.52
+42.243.156.225
+42.53.149.83
+42.53.89.153
+42.55.17.123
+42.83.147.54
+42.85.128.113
+42.96.45.52
+42.96.46.204
+42.98.124.172
+43.128.108.240
+43.128.229.157
+43.128.232.139
+43.128.233.21
+43.128.96.6
+43.129.158.215
+43.129.201.229
+43.129.216.151
+43.129.253.251
+43.129.33.99
+43.129.35.207
+43.129.36.145
+43.129.39.176
+43.129.40.155
+43.130.10.173
+43.130.11.228
+43.130.148.100
+43.130.198.204
+43.130.56.249
+43.130.57.239
+43.131.23.30
+43.131.244.10
+43.131.244.252
+43.131.244.81
+43.131.245.109
+43.131.246.101
+43.131.248.141
+43.131.25.199
+43.131.251.167
+43.131.251.22
+43.131.253.42
+43.131.253.76
+43.131.254.249
+43.131.27.151
+43.131.27.221
+43.131.30.179
+43.131.35.111
+43.131.36.15
+43.131.39.140
+43.131.39.5
+43.131.41.190
+43.131.41.86
+43.131.43.27
+43.131.47.144
+43.131.52.47
+43.131.57.46
+43.131.59.246
+43.131.66.209
+43.131.68.225
+43.131.91.178
+43.131.94.145
+43.133.102.2
+43.133.112.167
+43.133.229.111
+43.133.56.252
+43.133.61.178
+43.133.68.229
+43.133.68.6
+43.134.162.181
+43.134.170.128
+43.134.171.145
+43.134.171.46
+43.134.172.119
+43.134.173.244
+43.134.174.180
+43.134.174.239
+43.134.174.244
+43.134.178.72
+43.134.178.78
+43.134.181.138
+43.134.181.149
+43.134.185.127
+43.134.186.121
+43.134.186.17
+43.134.186.44
+43.134.188.132
+43.134.189.173
+43.134.189.26
+43.134.191.100
+43.134.197.109
+43.134.202.163
+43.134.225.97
+43.134.226.192
+43.134.226.88
+43.134.227.248
+43.134.231.13
+43.134.235.22
+43.134.237.227
+43.134.237.29
+43.134.239.49
+43.134.31.32
+43.134.53.53
+43.134.71.115
+43.134.72.206
+43.134.72.95
+43.134.85.190
+43.134.94.34
+43.135.145.254
+43.135.145.8
+43.135.150.172
+43.135.153.223
+43.135.161.111
+43.135.163.185
+43.135.163.214
+43.135.169.51
+43.135.172.115
+43.135.172.127
+43.135.172.249
+43.135.181.188
+43.135.48.212
+43.136.236.39
+43.136.77.89
+43.138.132.54
+43.138.231.226
+43.138.30.190
+43.138.60.169
+43.139.155.203
+43.139.34.148
+43.142.10.11
+43.142.105.8
+43.142.106.146
+43.142.23.15
+43.142.251.58
+43.142.40.254
+43.142.76.35
+43.143.112.64
+43.143.130.216
+43.143.138.171
+43.143.166.92
+43.143.209.144
+43.143.236.104
+43.143.47.12
+43.143.67.17
+43.153.100.253
+43.153.102.104
+43.153.103.80
+43.153.104.18
+43.153.107.61
+43.153.11.147
+43.153.110.228
+43.153.111.122
+43.153.112.182
+43.153.113.212
+43.153.116.175
+43.153.117.9
+43.153.12.171
+43.153.123.72
+43.153.124.128
+43.153.124.150
+43.153.124.99
+43.153.13.30
+43.153.14.105
+43.153.15.134
+43.153.16.8
+43.153.168.139
+43.153.175.158
+43.153.178.30
+43.153.184.188
+43.153.186.220
+43.153.189.214
+43.153.192.102
+43.153.193.131
+43.153.193.173
+43.153.193.40
+43.153.194.186
+43.153.194.204
+43.153.194.238
+43.153.195.224
+43.153.195.51
+43.153.2.188
+43.153.20.25
+43.153.203.163
+43.153.203.201
+43.153.203.223
+43.153.207.222
+43.153.207.24
+43.153.208.27
+43.153.208.96
+43.153.21.103
+43.153.21.104
+43.153.21.51
+43.153.210.18
+43.153.211.187
+43.153.211.231
+43.153.219.28
+43.153.219.74
+43.153.222.91
+43.153.223.232
+43.153.223.76
+43.153.225.154
+43.153.225.213
+43.153.226.194
+43.153.226.222
+43.153.227.42
+43.153.228.16
+43.153.229.39
+43.153.25.166
+43.153.38.187
+43.153.39.12
+43.153.44.198
+43.153.45.84
+43.153.57.123
+43.153.58.120
+43.153.59.10
+43.153.6.105
+43.153.60.222
+43.153.62.118
+43.153.63.216
+43.153.64.46
+43.153.65.192
+43.153.66.25
+43.153.67.198
+43.153.67.248
+43.153.68.27
+43.153.70.16
+43.153.72.103
+43.153.75.223
+43.153.76.170
+43.153.76.36
+43.153.77.199
+43.153.78.101
+43.153.80.14
+43.153.81.150
+43.153.85.127
+43.153.85.152
+43.153.86.185
+43.153.86.202
+43.153.88.11
+43.153.88.134
+43.153.88.71
+43.153.94.136
+43.153.95.205
+43.153.95.48
+43.153.96.46
+43.153.98.229
+43.153.99.59
+43.153.99.73
+43.154.0.241
+43.154.102.160
+43.154.105.103
+43.154.106.161
+43.154.106.189
+43.154.108.106
+43.154.111.236
+43.154.112.233
+43.154.115.238
+43.154.116.34
+43.154.122.248
+43.154.125.225
+43.154.126.65
+43.154.128.184
+43.154.129.174
+43.154.141.230
+43.154.143.144
+43.154.145.12
+43.154.145.254
+43.154.147.96
+43.154.150.131
+43.154.151.222
+43.154.151.93
+43.154.154.86
+43.154.155.223
+43.154.156.138
+43.154.159.239
+43.154.161.169
+43.154.162.100
+43.154.168.144
+43.154.170.190
+43.154.172.51
+43.154.175.130
+43.154.177.228
+43.154.18.201
+43.154.183.15
+43.154.184.101
+43.154.184.208
+43.154.185.151
+43.154.189.205
+43.154.195.135
+43.154.198.244
+43.154.2.17
+43.154.201.95
+43.154.203.106
+43.154.204.119
+43.154.207.124
+43.154.212.113
+43.154.216.165
+43.154.22.178
+43.154.232.132
+43.154.234.215
+43.154.235.67
+43.154.235.92
+43.154.25.104
+43.154.29.163
+43.154.48.221
+43.154.51.175
+43.154.54.104
+43.154.60.127
+43.154.66.147
+43.154.69.176
+43.154.79.12
+43.154.80.232
+43.154.87.44
+43.154.88.204
+43.154.89.184
+43.154.9.162
+43.154.90.94
+43.154.91.113
+43.154.92.38
+43.154.95.120
+43.154.96.206
+43.154.97.145
+43.155.105.15
+43.155.107.205
+43.155.112.3
+43.155.129.233
+43.155.130.86
+43.155.133.193
+43.155.137.113
+43.155.137.143
+43.155.141.71
+43.155.145.208
+43.155.145.232
+43.155.152.150
+43.155.152.19
+43.155.155.92
+43.155.156.197
+43.155.157.138
+43.155.159.250
+43.155.162.157
+43.155.162.170
+43.155.164.66
+43.155.166.27
+43.155.166.93
+43.155.168.169
+43.155.168.85
+43.155.171.9
+43.155.174.134
+43.155.174.191
+43.155.176.14
+43.155.177.183
+43.155.179.158
+43.155.180.148
+43.155.180.15
+43.155.183.169
+43.155.184.226
+43.155.186.187
+43.155.61.169
+43.155.62.202
+43.155.78.81
+43.155.86.100
+43.155.95.31
+43.156.0.252
+43.156.1.155
+43.156.100.237
+43.156.102.98
+43.156.106.143
+43.156.106.15
+43.156.106.29
+43.156.109.253
+43.156.110.38
+43.156.113.121
+43.156.114.12
+43.156.114.14
+43.156.115.222
+43.156.116.107
+43.156.122.147
+43.156.122.230
+43.156.122.96
+43.156.124.108
+43.156.124.83
+43.156.125.206
+43.156.125.211
+43.156.130.213
+43.156.131.197
+43.156.131.226
+43.156.133.239
+43.156.133.30
+43.156.137.147
+43.156.146.134
+43.156.17.227
+43.156.17.56
+43.156.18.253
+43.156.18.47
+43.156.205.162
+43.156.224.228
+43.156.225.149
+43.156.225.179
+43.156.225.5
+43.156.227.185
+43.156.228.30
+43.156.231.205
+43.156.231.49
+43.156.232.12
+43.156.236.67
+43.156.237.143
+43.156.237.162
+43.156.237.95
+43.156.238.161
+43.156.238.240
+43.156.239.139
+43.156.239.182
+43.156.239.2
+43.156.239.202
+43.156.239.39
+43.156.240.13
+43.156.240.176
+43.156.240.197
+43.156.240.201
+43.156.240.213
+43.156.240.234
+43.156.240.75
+43.156.241.176
+43.156.241.191
+43.156.241.229
+43.156.243.235
+43.156.245.189
+43.156.245.68
+43.156.27.142
+43.156.27.200
+43.156.27.23
+43.156.28.79
+43.156.29.177
+43.156.3.27
+43.156.30.27
+43.156.31.54
+43.156.32.117
+43.156.33.129
+43.156.33.44
+43.156.34.205
+43.156.34.30
+43.156.35.198
+43.156.38.13
+43.156.39.228
+43.156.39.31
+43.156.4.217
+43.156.42.52
+43.156.43.236
+43.156.43.56
+43.156.46.121
+43.156.47.154
+43.156.47.53
+43.156.48.166
+43.156.49.103
+43.156.49.122
+43.156.49.75
+43.156.52.207
+43.156.52.48
+43.156.56.193
+43.156.58.112
+43.156.6.43
+43.156.60.74
+43.156.62.13
+43.156.64.154
+43.156.65.116
+43.156.65.25
+43.156.66.5
+43.156.67.135
+43.156.67.238
+43.156.68.233
+43.156.68.36
+43.156.69.195
+43.156.69.230
+43.156.7.196
+43.156.7.9
+43.156.70.63
+43.156.71.53
+43.156.73.60
+43.156.75.227
+43.156.76.89
+43.156.77.105
+43.156.77.93
+43.156.78.220
+43.156.78.78
+43.156.79.21
+43.156.8.127
+43.156.8.244
+43.156.8.64
+43.156.83.142
+43.156.83.79
+43.156.84.114
+43.156.90.20
+43.156.93.19
+43.156.94.27
+43.156.95.49
+43.156.98.81
+43.156.98.88
+43.156.99.115
+43.157.10.218
+43.157.20.143
+43.157.26.193
+43.157.32.103
+43.157.43.240
+43.157.5.232
+43.157.50.168
+43.157.54.73
+43.157.62.27
+43.157.65.152
+43.157.8.248
+43.158.208.161
+43.158.217.137
+43.159.146.5
+43.159.192.236
+43.159.194.228
+43.159.196.133
+43.159.198.109
+43.159.199.126
+43.159.200.220
+43.159.200.61
+43.159.201.123
+43.159.32.241
+43.159.33.153
+43.159.33.188
+43.159.34.32
+43.159.37.251
+43.159.39.88
+43.159.40.252
+43.159.40.48
+43.159.44.127
+43.159.44.143
+43.159.44.201
+43.159.46.253
+43.159.49.103
+43.159.49.17
+43.159.49.49
+43.159.51.114
+43.159.52.31
+43.159.54.79
+43.159.56.183
+43.159.59.118
+43.159.59.128
+43.159.59.251
+43.159.59.97
+43.159.62.162
+43.159.63.148
+43.159.63.50
+43.163.197.146
+43.163.215.217
+43.163.219.166
+43.163.228.20
+43.163.243.89
+43.224.183.199
+43.225.157.56
+43.225.195.9
+43.225.53.39
+43.225.68.155
+43.228.131.114
+43.230.199.130
+43.231.234.154
+43.240.65.77
+43.241.57.179
+43.242.101.19
+43.246.208.12
+43.249.35.70
+43.252.61.98
+43.254.59.210
+44.201.102.109
+45.10.154.57
+45.112.139.101
+45.114.51.101
+45.116.76.106
+45.119.132.191
+45.119.212.147
+45.119.212.196
+45.119.5.214
+45.119.81.249
+45.119.82.52
+45.119.9.158
+45.12.147.2
+45.12.253.157
+45.12.253.170
+45.12.253.5
+45.12.253.8
+45.12.54.77
+45.120.115.150
+45.120.227.110
+45.126.124.113
+45.126.126.142
+45.128.232.101
+45.128.232.121
+45.128.232.145
+45.128.232.53
+45.128.232.62
+45.13.227.38
+45.130.104.187
+45.134.144.119
+45.134.144.212
+45.134.144.6
+45.134.168.33
+45.135.232.17
+45.136.239.42
+45.137.192.64
+45.138.16.168
+45.138.74.226
+45.140.143.104
+45.140.188.15
+45.141.151.243
+45.142.107.167
+45.142.122.97
+45.143.200.50
+45.145.7.149
+45.145.7.29
+45.147.250.208
+45.147.250.222
+45.147.250.233
+45.148.10.241
+45.148.120.113
+45.148.122.180
+45.149.76.106
+45.15.161.253
+45.150.65.149
+45.150.67.183
+45.151.167.10
+45.151.167.12
+45.153.230.148
+45.154.12.171
+45.154.2.129
+45.154.3.131
+45.155.204.67
+45.155.76.198
+45.155.91.51
+45.155.91.59
+45.155.91.63
+45.156.128.12
+45.156.128.17
+45.156.128.22
+45.156.128.25
+45.156.128.27
+45.156.129.17
+45.156.129.2
+45.156.129.24
+45.156.129.36
+45.156.129.7
+45.157.128.242
+45.157.190.112
+45.159.249.4
+45.159.250.227
+45.159.50.249
+45.161.176.1
+45.162.183.160
+45.162.216.76
+45.162.37.90
+45.164.39.253
+45.166.93.90
+45.167.104.200
+45.167.163.202
+45.167.182.219
+45.168.176.36
+45.172.225.40
+45.175.18.29
+45.179.149.42
+45.180.150.174
+45.182.47.155
+45.183.192.14
+45.183.193.1
+45.183.224.74
+45.183.62.10
+45.184.70.151
+45.186.123.234
+45.188.238.53
+45.189.220.0
+45.189.223.88
+45.190.46.53
+45.201.189.240
+45.221.8.205
+45.222.128.225
+45.225.195.250
+45.227.253.110
+45.227.254.48
+45.227.254.8
+45.228.137.198
+45.228.137.210
+45.229.153.149
+45.229.52.200
+45.229.52.201
+45.229.52.204
+45.230.167.36
+45.230.47.141
+45.230.84.33
+45.232.244.118
+45.235.34.112
+45.237.45.144
+45.238.252.129
+45.240.88.36
+45.249.245.88
+45.27.94.6
+45.33.46.249
+45.33.52.197
+45.33.78.70
+45.33.80.243
+45.33.83.115
+45.33.84.124
+45.33.87.154
+45.33.94.76
+45.33.95.64
+45.42.160.76
+45.43.33.210
+45.43.62.46
+45.5.10.100
+45.5.159.36
+45.55.0.13
+45.55.0.5
+45.55.0.6
+45.55.0.8
+45.55.49.150
+45.55.58.174
+45.55.63.118
+45.55.64.140
+45.55.65.92
+45.56.111.60
+45.61.161.39
+45.61.185.123
+45.61.188.109
+45.61.49.164
+45.64.185.187
+45.64.248.63
+45.66.131.190
+45.66.230.191
+45.66.230.230
+45.66.230.85
+45.67.138.67
+45.67.231.119
+45.7.109.26
+45.7.119.3
+45.71.58.137
+45.72.230.131
+45.79.110.218
+45.79.132.41
+45.79.149.111
+45.79.153.51
+45.79.177.245
+45.79.181.251
+45.79.191.178
+45.79.227.90
+45.79.67.140
+45.8.145.120
+45.80.64.230
+45.80.71.78
+45.81.243.102
+45.82.136.224
+45.83.118.202
+45.83.29.82
+45.83.64.109
+45.83.64.125
+45.83.64.135
+45.83.65.119
+45.83.65.247
+45.83.65.32
+45.83.66.246
+45.83.66.73
+45.83.67.245
+45.88.66.38
+45.88.67.128
+45.88.67.192
+45.89.246.214
+45.9.74.90
+45.91.171.169
+45.92.158.84
+45.93.201.51
+45.95.147.200
+45.95.147.210
+45.95.147.212
+45.95.147.218
+45.95.147.219
+45.95.147.220
+45.95.147.221
+45.95.169.240
+46.101.121.35
+46.101.127.204
+46.101.128.217
+46.101.149.125
+46.101.166.10
+46.101.171.235
+46.101.174.27
+46.101.190.66
+46.101.193.54
+46.101.215.187
+46.101.226.23
+46.101.229.124
+46.101.23.51
+46.101.29.76
+46.101.48.9
+46.101.49.103
+46.101.62.196
+46.101.73.109
+46.101.73.15
+46.101.80.224
+46.101.82.89
+46.101.95.23
+46.105.132.32
+46.105.132.33
+46.105.132.35
+46.105.29.159
+46.105.63.87
+46.105.97.186
+46.107.214.210
+46.114.88.227
+46.114.88.80
+46.139.127.178
+46.147.193.234
+46.148.140.125
+46.148.40.107
+46.148.40.114
+46.148.40.125
+46.148.40.13
+46.148.40.135
+46.148.40.136
+46.148.40.141
+46.148.40.143
+46.148.40.146
+46.148.40.147
+46.148.40.148
+46.148.40.149
+46.148.40.150
+46.148.40.151
+46.148.40.153
+46.148.40.156
+46.148.40.157
+46.148.40.158
+46.148.40.159
+46.148.40.161
+46.148.40.162
+46.148.40.163
+46.148.40.164
+46.148.40.170
+46.148.40.171
+46.148.40.172
+46.148.40.173
+46.148.40.174
+46.148.40.175
+46.148.40.183
+46.148.40.185
+46.148.40.189
+46.148.40.190
+46.148.40.191
+46.148.40.192
+46.148.40.195
+46.148.40.196
+46.148.40.197
+46.148.40.198
+46.148.40.199
+46.148.40.36
+46.148.40.37
+46.148.40.49
+46.148.40.5
+46.148.40.58
+46.148.40.77
+46.148.40.94
+46.149.182.124
+46.161.14.84
+46.161.27.184
+46.161.54.57
+46.162.106.153
+46.163.161.240
+46.166.171.188
+46.174.191.28
+46.174.191.29
+46.245.64.3
+46.245.76.37
+46.245.77.186
+46.245.80.56
+46.249.124.234
+46.3.197.6
+46.3.197.7
+46.3.223.131
+46.32.163.197
+46.32.172.88
+46.32.72.76
+46.32.78.73
+47.100.101.182
+47.104.184.67
+47.106.190.227
+47.108.206.57
+47.12.136.248
+47.147.62.205
+47.160.200.19
+47.176.38.253
+47.180.13.51
+47.188.49.142
+47.206.124.11
+47.212.215.8
+47.236.17.115
+47.236.19.114
+47.236.19.130
+47.236.21.146
+47.236.22.174
+47.236.23.167
+47.236.23.226
+47.236.24.102
+47.236.24.9
+47.236.25.213
+47.236.26.154
+47.236.26.196
+47.236.27.215
+47.236.29.8
+47.240.90.48
+47.242.119.178
+47.242.173.58
+47.242.202.229
+47.242.255.46
+47.245.105.166
+47.245.115.144
+47.245.25.131
+47.245.97.128
+47.245.99.208
+47.250.37.238
+47.250.38.240
+47.250.41.141
+47.250.45.206
+47.250.53.177
+47.252.46.15
+47.252.6.66
+47.253.50.56
+47.253.80.19
+47.254.201.78
+47.254.247.81
+47.34.19.157
+47.41.121.88
+47.6.47.59
+47.74.65.194
+47.74.96.31
+47.87.131.126
+47.87.139.249
+47.87.152.135
+47.87.191.157
+47.88.31.213
+47.90.134.66
+47.91.40.29
+47.93.139.85
+47.97.35.62
+49.0.129.27
+49.0.129.3
+49.0.71.48
+49.12.219.140
+49.128.62.82
+49.143.32.6
+49.156.46.90
+49.158.122.12
+49.158.200.46
+49.163.9.237
+49.169.63.208
+49.205.218.100
+49.206.119.234
+49.207.180.112
+49.207.63.163
+49.213.157.73
+49.213.171.38
+49.213.176.155
+49.213.251.49
+49.231.192.36
+49.231.66.250
+49.232.146.11
+49.232.167.204
+49.234.20.185
+49.234.21.97
+49.235.123.8
+49.235.66.248
+49.236.203.203
+49.245.28.91
+49.245.40.212
+49.245.76.177
+49.245.9.2
+49.247.198.162
+49.247.24.207
+49.247.36.29
+49.249.242.218
+49.249.83.115
+49.36.43.143
+49.51.183.1
+49.51.231.104
+49.51.24.192
+49.51.242.95
+49.51.243.206
+49.51.26.204
+49.64.149.102
+49.64.22.45
+49.64.250.26
+49.64.4.171
+49.70.124.231
+49.70.127.0
+49.70.39.153
+49.70.89.179
+49.71.116.115
+49.72.186.155
+49.72.59.26
+49.73.157.52
+49.73.184.7
+49.75.105.82
+49.84.128.158
+49.84.155.107
+49.85.199.64
+49.85.206.137
+49.85.207.113
+49.85.211.15
+49.85.212.182
+49.85.250.142
+49.86.1.105
+49.86.105.67
+49.86.107.165
+49.86.107.178
+49.86.107.48
+49.86.130.73
+49.86.19.83
+49.86.216.164
+49.86.33.152
+49.86.34.117
+49.86.36.105
+49.86.60.72
+49.86.73.174
+49.87.121.123
+49.87.80.55
+49.88.42.137
+49.88.89.105
+49.89.110.145
+49.89.118.65
+49.89.137.251
+49.89.139.195
+49.89.165.180
+49.89.173.253
+49.89.184.70
+49.89.190.137
+49.89.196.166
+49.89.200.208
+49.89.209.60
+49.89.235.152
+49.89.243.237
+49.89.250.183
+49.89.82.63
+5.10.250.122
+5.10.250.241
+5.11.150.207
+5.11.150.22
+5.112.0.58
+5.135.141.188
+5.135.82.170
+5.140.165.224
+5.141.87.113
+5.159.109.80
+5.159.54.197
+5.160.136.182
+5.161.118.239
+5.172.95.134
+5.181.86.17
+5.182.224.24
+5.188.62.174
+5.188.62.26
+5.189.129.40
+5.189.181.176
+5.189.244.34
+5.196.244.80
+5.196.27.116
+5.196.78.68
+5.200.46.40
+5.200.58.187
+5.200.70.148
+5.202.185.114
+5.248.109.229
+5.25.116.245
+5.252.118.204
+5.255.109.14
+5.255.110.148
+5.255.112.201
+5.27.232.65
+5.32.22.218
+5.34.176.27
+5.34.182.146
+5.39.220.40
+5.39.220.78
+5.39.23.15
+5.39.61.89
+5.39.61.91
+5.42.199.51
+5.51.84.107
+5.53.124.121
+5.54.34.176
+5.57.206.98
+5.75.197.131
+5.8.10.202
+5.8.194.238
+5.9.59.22
+5.96.212.44
+50.116.2.74
+50.116.59.19
+50.193.164.197
+50.194.214.214
+50.199.211.98
+50.210.123.187
+50.210.90.227
+50.213.110.149
+50.214.135.53
+50.217.175.10
+50.223.176.171
+50.223.37.170
+50.223.38.94
+50.225.176.238
+50.227.179.195
+50.238.10.68
+50.238.47.10
+50.239.51.146
+50.241.219.97
+50.29.254.211
+50.31.21.6
+50.5.1.46
+50.73.254.237
+51.104.22.5
+51.11.242.85
+51.15.11.81
+51.15.11.91
+51.15.140.163
+51.15.34.47
+51.15.52.121
+51.15.70.79
+51.15.73.248
+51.158.105.208
+51.158.28.15
+51.158.78.176
+51.159.156.120
+51.159.164.227
+51.159.64.66
+51.159.88.9
+51.161.11.85
+51.178.137.178
+51.178.146.199
+51.178.25.97
+51.178.30.100
+51.178.81.115
+51.195.235.82
+51.195.47.176
+51.210.13.76
+51.210.254.243
+51.222.12.238
+51.222.13.180
+51.222.137.64
+51.222.158.239
+51.222.205.175
+51.222.253.10
+51.222.253.12
+51.222.253.13
+51.222.253.14
+51.222.253.16
+51.222.253.19
+51.222.253.20
+51.222.253.4
+51.222.253.5
+51.222.253.6
+51.222.253.7
+51.222.253.8
+51.222.253.9
+51.222.8.179
+51.250.73.235
+51.250.92.44
+51.250.95.103
+51.254.229.161
+51.255.142.197
+51.255.55.136
+51.38.112.61
+51.38.12.12
+51.38.12.13
+51.38.12.15
+51.38.154.50
+51.38.191.182
+51.38.231.180
+51.38.34.130
+51.38.44.81
+51.38.48.10
+51.38.52.128
+51.68.136.72
+51.68.199.149
+51.68.202.107
+51.68.226.87
+51.68.90.2
+51.7.93.216
+51.75.133.162
+51.75.133.93
+51.75.163.203
+51.75.170.22
+51.75.194.10
+51.75.202.133
+51.75.203.231
+51.75.74.166
+51.77.194.67
+51.77.195.59
+51.77.245.172
+51.77.245.237
+51.77.43.103
+51.77.58.143
+51.79.146.182
+51.79.146.239
+51.79.65.236
+51.81.153.111
+51.81.153.166
+51.81.153.197
+51.81.153.224
+51.81.153.50
+51.81.33.45
+51.81.81.103
+51.81.83.124
+51.81.84.229
+51.83.27.205
+51.83.45.110
+51.83.71.70
+51.83.99.204
+51.89.164.89
+51.89.206.53
+51.89.39.49
+51.89.7.156
+51.91.14.6
+51.91.141.137
+51.91.151.44
+51.91.157.160
+51.91.249.189
+51.91.78.31
+52.131.82.100
+52.140.17.41
+52.140.61.101
+52.166.186.23
+52.171.230.44
+52.172.168.56
+52.172.30.44
+52.174.144.106
+52.176.51.76
+52.178.155.67
+52.183.128.237
+52.185.227.219
+52.187.9.8
+52.191.168.27
+52.23.233.236
+52.56.143.158
+52.56.171.187
+52.73.169.169
+54.179.251.151
+54.183.195.159
+54.207.78.52
+54.36.101.131
+54.37.121.239
+54.37.131.197
+54.37.138.167
+54.37.19.249
+54.37.196.181
+54.37.203.143
+54.37.204.179
+54.37.228.73
+54.37.72.28
+54.38.55.211
+54.39.99.68
+54.91.131.37
+57.128.169.78
+57.128.41.42
+57.134.18.140
+58.11.55.149
+58.120.16.153
+58.124.200.57
+58.137.208.238
+58.144.251.16
+58.144.251.22
+58.147.182.47
+58.18.81.242
+58.185.131.94
+58.187.180.225
+58.19.213.60
+58.208.108.112
+58.208.188.150
+58.208.200.97
+58.208.208.2
+58.208.49.136
+58.208.49.55
+58.208.54.95
+58.208.84.245
+58.209.109.215
+58.209.146.121
+58.209.196.96
+58.209.205.224
+58.209.21.31
+58.210.102.102
+58.210.45.170
+58.211.23.183
+58.214.108.177
+58.214.6.114
+58.214.8.10
+58.216.180.210
+58.216.56.40
+58.222.106.106
+58.222.7.166
+58.224.19.9
+58.224.242.54
+58.234.64.114
+58.242.104.15
+58.242.86.203
+58.243.104.86
+58.243.151.145
+58.246.138.2
+58.250.36.51
+58.255.217.30
+58.27.95.2
+58.30.229.110
+58.32.242.194
+58.33.109.90
+58.33.168.74
+58.33.8.20
+58.34.176.82
+58.42.185.125
+58.47.63.220
+58.48.37.58
+58.49.112.2
+58.51.141.34
+58.56.200.182
+58.56.207.10
+58.58.168.62
+58.58.250.18
+58.58.70.234
+58.58.83.122
+58.59.16.246
+58.65.211.232
+58.70.25.59
+58.72.165.10
+58.76.180.20
+58.77.13.25
+58.79.145.72
+58.90.119.79
+58.97.197.59
+59.0.241.169
+59.0.39.79
+59.1.178.195
+59.1.186.48
+59.1.226.250
+59.103.236.31
+59.103.236.74
+59.103.236.85
+59.11.128.18
+59.11.138.65
+59.11.76.201
+59.11.76.203
+59.110.162.89
+59.110.221.149
+59.12.195.242
+59.12.57.235
+59.120.118.135
+59.124.166.80
+59.124.225.177
+59.125.131.46
+59.125.213.161
+59.126.116.186
+59.126.120.220
+59.126.130.53
+59.126.132.171
+59.126.156.208
+59.126.158.209
+59.126.159.253
+59.126.162.209
+59.126.193.94
+59.126.208.143
+59.126.211.116
+59.126.221.230
+59.126.224.30
+59.126.49.192
+59.126.55.81
+59.127.10.191
+59.127.119.33
+59.127.120.23
+59.127.126.168
+59.127.134.145
+59.127.14.28
+59.127.169.40
+59.127.184.166
+59.127.205.38
+59.127.21.73
+59.127.22.14
+59.127.24.124
+59.127.41.8
+59.127.56.161
+59.127.57.123
+59.127.72.244
+59.127.74.230
+59.127.94.207
+59.13.166.87
+59.14.41.42
+59.144.164.10
+59.144.165.161
+59.144.166.143
+59.144.167.169
+59.145.138.131
+59.148.170.250
+59.148.20.65
+59.152.60.147
+59.17.192.243
+59.177.104.230
+59.177.180.85
+59.180.160.216
+59.187.202.230
+59.19.144.238
+59.19.54.199
+59.2.125.119
+59.2.2.79
+59.2.248.84
+59.2.33.99
+59.2.52.122
+59.2.88.45
+59.22.42.41
+59.23.199.98
+59.23.20.149
+59.25.71.236
+59.26.120.163
+59.26.163.58
+59.26.216.102
+59.27.247.38
+59.29.145.37
+59.3.76.218
+59.30.12.254
+59.31.43.118
+59.33.80.201
+59.36.166.141
+59.39.183.34
+59.4.194.202
+59.4.234.131
+59.4.55.93
+59.47.112.161
+59.48.42.4
+59.49.131.51
+59.49.43.217
+59.49.77.211
+59.5.9.161
+59.51.71.68
+59.94.33.62
+59.94.37.145
+60.108.212.174
+60.117.166.88
+60.13.195.22
+60.14.55.132
+60.16.8.2
+60.165.226.142
+60.167.19.30
+60.171.220.86
+60.173.245.179
+60.175.41.10
+60.190.219.126
+60.191.125.35
+60.191.58.202
+60.196.69.234
+60.214.127.246
+60.217.75.69
+60.220.185.149
+60.220.185.22
+60.221.238.187
+60.222.230.70
+60.223.233.250
+60.223.252.57
+60.243.24.110
+60.244.226.39
+60.247.60.68
+60.248.236.223
+60.248.4.53
+60.248.89.69
+60.255.181.170
+60.255.181.197
+60.28.24.244
+60.29.100.218
+60.30.98.194
+60.31.249.131
+60.43.35.39
+60.51.26.105
+60.9.238.33
+61.1.189.226
+61.111.11.240
+61.111.131.76
+61.111.6.246
+61.130.110.54
+61.130.54.42
+61.132.103.126
+61.133.254.162
+61.135.126.42
+61.147.15.65
+61.147.15.67
+61.147.209.31
+61.147.254.211
+61.149.47.18
+61.149.84.26
+61.153.32.34
+61.153.6.114
+61.154.122.122
+61.156.14.73
+61.159.93.133
+61.164.202.218
+61.167.35.130
+61.170.192.110
+61.171.89.48
+61.174.32.82
+61.177.123.59
+61.177.173.45
+61.178.65.2
+61.178.84.137
+61.180.34.120
+61.180.77.124
+61.183.43.155
+61.184.119.61
+61.184.160.34
+61.185.137.26
+61.185.50.166
+61.19.228.102
+61.19.247.160
+61.2.224.84
+61.2.241.214
+61.2.243.254
+61.206.119.108
+61.216.106.87
+61.216.131.31
+61.219.18.151
+61.219.88.69
+61.220.216.219
+61.221.35.29
+61.222.211.114
+61.224.126.16
+61.231.14.41
+61.238.103.181
+61.240.138.34
+61.240.138.52
+61.246.34.173
+61.34.201.215
+61.39.117.33
+61.39.157.140
+61.42.20.175
+61.53.107.39
+61.56.172.170
+61.59.4.18
+61.62.220.31
+61.65.105.121
+61.72.55.130
+61.73.95.192
+61.74.255.62
+61.75.107.16
+61.75.76.30
+61.76.107.44
+61.76.169.138
+61.76.40.95
+61.77.20.245
+61.78.124.158
+61.79.48.10
+61.80.237.204
+61.80.82.159
+61.81.151.64
+61.81.158.200
+61.81.83.63
+61.81.88.105
+61.82.245.60
+61.83.148.111
+61.84.106.83
+61.84.11.124
+61.85.199.241
+62.102.148.152
+62.102.148.154
+62.102.148.162
+62.102.148.164
+62.105.137.113
+62.12.114.235
+62.12.115.22
+62.12.115.242
+62.122.204.247
+62.162.51.58
+62.183.82.70
+62.20.249.236
+62.204.41.80
+62.210.111.16
+62.210.144.176
+62.210.245.181
+62.233.50.217
+62.233.50.249
+62.28.222.221
+62.74.208.58
+62.77.140.118
+62.84.116.195
+62.89.18.12
+62.99.90.19
+63.141.236.162
+63.217.87.99
+63.250.59.8
+63.252.132.12
+63.41.9.206
+63.41.9.207
+63.41.9.210
+63.45.208.250
+63.47.111.1
+63.65.79.134
+64.111.48.2
+64.112.73.22
+64.112.75.42
+64.119.29.152
+64.119.29.156
+64.120.121.215
+64.135.113.136
+64.185.8.245
+64.223.131.135
+64.225.100.35
+64.225.102.223
+64.225.22.135
+64.225.22.216
+64.225.25.59
+64.225.54.150
+64.225.70.42
+64.225.79.193
+64.226.100.28
+64.226.105.84
+64.226.111.31
+64.226.118.9
+64.226.76.4
+64.226.79.71
+64.226.81.69
+64.226.84.20
+64.226.87.205
+64.226.91.17
+64.226.91.41
+64.227.105.4
+64.227.122.198
+64.227.126.12
+64.227.126.250
+64.227.126.83
+64.227.129.137
+64.227.133.42
+64.227.142.1
+64.227.142.101
+64.227.152.23
+64.227.172.167
+64.227.177.54
+64.227.178.234
+64.227.178.98
+64.227.180.226
+64.227.182.117
+64.227.185.119
+64.227.185.138
+64.227.185.201
+64.227.186.131
+64.227.188.166
+64.227.190.115
+64.227.190.23
+64.227.28.246
+64.227.31.127
+64.227.68.118
+64.227.97.195
+64.227.99.233
+64.42.179.43
+64.62.197.100
+64.62.197.101
+64.62.197.105
+64.62.197.108
+64.62.197.110
+64.62.197.111
+64.62.197.114
+64.62.197.116
+64.62.197.118
+64.62.197.119
+64.62.197.121
+64.62.197.123
+64.62.197.124
+64.62.197.125
+64.62.197.126
+64.62.197.127
+64.62.197.129
+64.62.197.131
+64.62.197.134
+64.62.197.136
+64.62.197.14
+64.62.197.140
+64.62.197.153
+64.62.197.155
+64.62.197.161
+64.62.197.166
+64.62.197.170
+64.62.197.171
+64.62.197.175
+64.62.197.179
+64.62.197.18
+64.62.197.180
+64.62.197.182
+64.62.197.184
+64.62.197.19
+64.62.197.190
+64.62.197.192
+64.62.197.199
+64.62.197.2
+64.62.197.202
+64.62.197.204
+64.62.197.205
+64.62.197.209
+64.62.197.210
+64.62.197.212
+64.62.197.216
+64.62.197.22
+64.62.197.231
+64.62.197.239
+64.62.197.26
+64.62.197.27
+64.62.197.28
+64.62.197.30
+64.62.197.32
+64.62.197.33
+64.62.197.38
+64.62.197.41
+64.62.197.45
+64.62.197.47
+64.62.197.49
+64.62.197.5
+64.62.197.51
+64.62.197.58
+64.62.197.60
+64.62.197.63
+64.62.197.65
+64.62.197.68
+64.62.197.69
+64.62.197.70
+64.62.197.71
+64.62.197.73
+64.62.197.75
+64.62.197.8
+64.62.197.97
+64.88.187.91
+65.154.226.168
+65.181.73.155
+65.190.102.226
+65.20.135.187
+65.20.153.188
+65.20.162.105
+65.254.92.240
+65.36.104.84
+65.49.196.227
+65.49.20.100
+65.49.20.101
+65.49.20.104
+65.49.20.105
+65.49.20.106
+65.49.20.107
+65.49.20.108
+65.49.20.109
+65.49.20.110
+65.49.20.115
+65.49.20.116
+65.49.20.117
+65.49.20.118
+65.49.20.120
+65.49.20.124
+65.49.20.66
+65.49.20.67
+65.49.20.68
+65.49.20.69
+65.49.20.71
+65.49.20.72
+65.49.20.73
+65.49.20.74
+65.49.20.75
+65.49.20.76
+65.49.20.77
+65.49.20.78
+65.49.20.79
+65.49.20.80
+65.49.20.81
+65.49.20.82
+65.49.20.83
+65.49.20.85
+65.49.20.86
+65.49.20.88
+65.49.20.89
+65.49.20.90
+65.49.20.92
+65.49.20.93
+65.49.20.95
+65.49.20.98
+65.49.20.99
+65.52.9.242
+65.60.27.251
+65.73.231.122
+65.74.88.35
+66.108.146.160
+66.112.213.197
+66.112.221.64
+66.115.142.176
+66.128.116.26
+66.150.66.212
+66.170.214.142
+66.175.213.4
+66.177.30.53
+66.190.155.9
+66.240.192.138
+66.240.205.34
+66.240.213.71
+66.240.236.109
+66.240.236.119
+66.25.247.72
+66.27.169.186
+66.45.132.78
+66.70.208.241
+66.76.123.15
+66.76.221.49
+67.150.4.161
+67.170.66.15
+67.184.208.171
+67.205.177.222
+67.205.187.133
+67.205.187.255
+67.205.190.191
+67.207.85.118
+67.222.147.67
+67.231.229.142
+67.238.203.91
+67.247.114.115
+67.247.116.18
+67.58.223.254
+68.111.93.31
+68.114.48.249
+68.168.132.152
+68.178.161.31
+68.178.163.67
+68.183.105.14
+68.183.132.72
+68.183.143.1
+68.183.156.109
+68.183.177.69
+68.183.212.10
+68.183.221.62
+68.183.228.192
+68.183.232.27
+68.183.24.108
+68.183.46.135
+68.183.5.40
+68.183.56.198
+68.183.64.144
+68.183.85.50
+68.183.86.247
+68.183.87.50
+68.183.88.165
+68.183.88.186
+68.183.92.87
+68.183.93.52
+68.183.95.193
+68.183.96.33
+68.185.223.63
+68.188.98.239
+68.193.28.185
+68.235.62.219
+68.32.168.231
+68.44.85.64
+68.49.145.19
+68.49.233.165
+68.55.20.130
+68.6.126.154
+68.74.131.125
+68.82.141.145
+69.112.204.55
+69.12.4.38
+69.127.23.120
+69.14.124.215
+69.142.242.189
+69.164.214.243
+69.167.12.30
+69.202.133.67
+69.216.19.140
+69.246.186.17
+69.247.235.241
+69.49.235.162
+69.49.245.229
+69.50.128.171
+69.63.74.122
+69.70.182.178
+69.75.133.122
+69.92.191.19
+70.115.50.120
+70.122.134.191
+70.122.55.76
+70.169.84.74
+70.181.124.215
+70.181.157.100
+70.191.130.82
+70.234.210.74
+70.234.246.106
+70.255.103.76
+70.88.3.29
+71.10.118.1
+71.14.170.170
+71.163.52.89
+71.198.103.37
+71.200.97.148
+71.246.211.21
+71.6.135.131
+71.6.146.186
+71.6.147.254
+71.6.158.166
+71.6.165.200
+71.6.199.23
+71.6.231.8
+71.6.231.80
+71.6.231.83
+71.6.231.86
+71.6.231.87
+71.6.232.20
+71.6.232.22
+71.6.232.23
+71.6.232.24
+71.6.232.25
+71.6.232.26
+71.6.232.27
+71.6.232.28
+71.67.66.225
+71.79.25.100
+71.86.89.235
+71.90.30.53
+72.12.74.241
+72.129.231.118
+72.132.129.231
+72.132.89.90
+72.135.123.125
+72.138.167.50
+72.142.188.43
+72.167.124.187
+72.167.51.34
+72.176.181.35
+72.177.235.155
+72.183.28.26
+72.191.145.80
+72.24.90.135
+72.240.125.133
+72.241.81.99
+72.249.226.244
+72.250.247.35
+72.42.78.228
+72.69.93.12
+73.0.6.24
+73.112.30.5
+73.121.112.239
+73.126.226.41
+73.130.208.189
+73.135.178.34
+73.145.184.160
+73.16.145.209
+73.18.38.38
+73.196.4.195
+73.21.66.78
+73.210.127.161
+73.22.241.43
+73.232.143.31
+73.239.147.152
+73.243.16.62
+73.32.3.198
+73.35.101.206
+73.50.155.68
+73.53.24.25
+73.7.216.77
+73.71.11.104
+73.9.27.26
+74.101.20.62
+74.128.153.121
+74.141.82.94
+74.201.28.5
+74.201.30.143
+74.208.168.188
+74.234.184.146
+74.235.201.205
+74.235.82.122
+74.255.67.50
+74.50.74.234
+74.59.176.20
+74.64.58.42
+74.67.217.77
+74.73.25.246
+74.80.40.80
+74.82.47.11
+74.82.47.12
+74.82.47.13
+74.82.47.14
+74.82.47.17
+74.82.47.21
+74.82.47.28
+74.82.47.31
+74.82.47.36
+74.82.47.37
+74.82.47.40
+74.82.47.44
+74.82.47.45
+74.82.47.47
+74.82.47.48
+74.82.47.49
+74.82.47.5
+74.82.47.55
+74.82.47.8
+74.84.150.2
+74.84.150.62
+74.93.12.74
+74.94.234.151
+75.103.66.27
+75.111.126.28
+75.119.139.203
+75.127.3.245
+75.138.121.16
+75.149.214.93
+75.166.50.146
+75.178.132.132
+75.66.109.151
+75.80.10.175
+75.86.148.172
+75.87.9.229
+76.10.128.88
+76.104.130.42
+76.110.9.18
+76.14.78.133
+76.147.92.197
+76.168.101.172
+76.169.72.211
+76.20.227.12
+76.210.43.1
+76.248.78.228
+76.27.61.16
+77.102.237.113
+77.105.181.210
+77.120.163.173
+77.122.252.53
+77.125.1.250
+77.129.60.116
+77.158.71.118
+77.170.59.124
+77.190.15.61
+77.21.0.58
+77.222.191.187
+77.224.92.128
+77.237.73.73
+77.243.181.54
+77.243.182.131
+77.37.168.42
+77.37.248.144
+77.40.0.17
+77.40.220.2
+77.48.1.134
+77.52.12.151
+77.53.106.24
+77.68.52.248
+77.73.133.3
+77.74.78.44
+77.82.90.234
+77.83.36.43
+77.85.216.134
+77.91.68.129
+77.91.68.60
+77.91.75.11
+77.91.84.45
+77.94.113.222
+78.108.177.50
+78.108.177.52
+78.121.139.63
+78.128.113.102
+78.128.113.250
+78.128.113.78
+78.141.63.18
+78.142.18.220
+78.153.130.155
+78.157.38.66
+78.157.42.59
+78.186.133.164
+78.186.143.48
+78.188.58.201
+78.188.90.156
+78.195.6.108
+78.196.138.44
+78.25.105.127
+78.30.28.126
+78.32.126.206
+78.36.40.38
+78.46.17.42
+78.47.10.207
+78.58.49.11
+78.84.155.250
+78.85.213.47
+78.89.152.10
+78.89.152.189
+78.89.152.190
+78.89.153.49
+78.96.86.176
+79.10.156.154
+79.106.12.211
+79.106.73.114
+79.110.62.245
+79.124.49.78
+79.124.56.102
+79.124.56.190
+79.124.58.158
+79.124.59.130
+79.124.60.202
+79.124.62.130
+79.124.62.62
+79.124.62.78
+79.124.62.82
+79.124.62.86
+79.124.8.3
+79.129.29.237
+79.129.85.43
+79.137.141.164
+79.137.196.4
+79.137.205.225
+79.137.206.100
+79.137.34.148
+79.153.35.69
+79.175.160.120
+79.177.237.12
+79.188.137.250
+79.20.133.12
+79.30.40.128
+79.37.229.46
+79.52.253.30
+79.54.46.243
+79.56.236.216
+79.59.251.230
+79.6.130.251
+79.9.140.145
+79.9.37.49
+8.129.118.129
+8.135.48.81
+8.208.94.190
+8.209.216.177
+8.210.161.5
+8.210.35.35
+8.210.67.251
+8.212.128.101
+8.213.129.130
+8.213.17.210
+8.213.17.63
+8.213.18.207
+8.213.19.224
+8.213.19.235
+8.213.193.237
+8.213.194.210
+8.213.196.195
+8.213.196.201
+8.213.197.220
+8.213.20.127
+8.213.20.248
+8.213.21.28
+8.213.21.86
+8.213.22.219
+8.213.26.35
+8.213.27.181
+8.213.27.233
+8.213.27.47
+8.218.193.85
+8.219.100.242
+8.219.108.182
+8.219.137.112
+8.219.161.137
+8.219.164.201
+8.219.166.145
+8.219.175.111
+8.219.180.124
+8.219.183.140
+8.219.198.1
+8.219.199.104
+8.219.199.122
+8.219.201.138
+8.219.209.112
+8.219.209.218
+8.219.211.151
+8.219.231.58
+8.219.235.45
+8.219.238.163
+8.219.241.105
+8.219.243.203
+8.219.248.192
+8.219.250.100
+8.219.250.11
+8.219.252.205
+8.219.255.247
+8.219.40.72
+8.219.48.246
+8.219.70.237
+8.219.76.192
+8.222.129.101
+8.222.129.219
+8.222.130.232
+8.222.138.4
+8.222.139.60
+8.222.153.122
+8.222.157.82
+8.222.162.72
+8.222.166.28
+8.222.168.157
+8.222.168.16
+8.222.173.87
+8.222.177.226
+8.222.190.119
+8.222.200.208
+8.222.204.75
+8.222.205.118
+8.222.209.206
+8.222.211.110
+8.222.216.254
+8.222.218.39
+8.222.220.107
+8.222.224.48
+8.222.225.42
+8.222.227.202
+8.222.228.119
+8.222.230.151
+8.222.230.242
+8.222.231.12
+8.222.244.108
+8.222.247.127
+8.222.247.46
+8.222.248.201
+8.222.248.47
+8.222.249.210
+8.222.250.117
+8.222.251.6
+8.222.254.198
+8.222.255.233
+8.26.182.100
+80.106.197.221
+80.107.50.128
+80.117.240.240
+80.120.241.118
+80.122.5.206
+80.131.84.100
+80.209.140.213
+80.210.17.225
+80.227.107.250
+80.229.18.62
+80.249.113.225
+80.251.216.10
+80.51.158.122
+80.53.153.185
+80.55.147.125
+80.66.76.51
+80.66.77.235
+80.66.83.110
+80.68.7.179
+80.68.7.50
+80.72.24.105
+80.72.24.28
+80.76.51.210
+80.81.154.250
+80.82.70.228
+80.82.77.139
+80.82.77.33
+80.87.33.100
+80.91.167.80
+80.92.205.73
+80.94.92.241
+80.94.95.18
+80.94.95.203
+80.94.95.205
+80.94.95.240
+80.94.95.242
+80.94.95.249
+81.0.218.249
+81.0.246.17
+81.0.57.187
+81.10.12.82
+81.12.39.110
+81.138.80.166
+81.140.31.213
+81.16.9.232
+81.161.229.135
+81.17.30.221
+81.17.60.153
+81.18.39.54
+81.192.43.166
+81.192.46.45
+81.192.46.48
+81.197.59.214
+81.200.212.13
+81.203.238.20
+81.211.117.182
+81.215.211.76
+81.22.233.170
+81.28.6.62
+81.29.214.123
+81.30.162.18
+81.68.141.174
+81.68.166.244
+81.68.216.48
+81.69.34.211
+81.70.146.68
+81.70.203.89
+81.82.103.78
+81.88.53.6
+81.89.110.244
+82.102.189.43
+82.102.27.171
+82.111.224.128
+82.115.16.151
+82.115.19.57
+82.115.78.21
+82.138.28.34
+82.149.104.214
+82.149.125.220
+82.154.230.131
+82.156.164.168
+82.157.140.184
+82.157.143.209
+82.157.173.128
+82.157.248.247
+82.157.62.140
+82.165.120.190
+82.165.207.44
+82.180.155.46
+82.194.19.180
+82.194.94.58
+82.199.96.194
+82.202.170.49
+82.32.157.177
+82.51.79.22
+82.55.108.231
+82.62.110.252
+82.64.11.95
+82.64.9.81
+82.65.197.203
+82.65.43.136
+82.66.100.193
+82.66.118.168
+82.66.3.241
+82.66.39.159
+82.66.59.170
+83.108.10.135
+83.114.76.247
+83.139.6.141
+83.143.245.51
+83.143.246.30
+83.150.215.90
+83.217.11.1
+83.228.105.85
+83.229.75.105
+83.239.97.132
+83.241.219.45
+83.243.191.11
+83.244.14.97
+83.8.239.199
+84.108.40.27
+84.138.149.199
+84.201.158.231
+84.201.158.237
+84.201.179.102
+84.205.178.135
+84.227.209.232
+84.228.226.13
+84.241.9.194
+84.242.124.74
+84.252.140.133
+84.253.57.206
+84.255.173.151
+84.42.21.138
+84.43.254.214
+84.46.250.130
+84.53.198.69
+84.53.228.192
+84.54.50.196
+84.54.50.197
+84.54.50.199
+84.54.50.200
+84.54.50.201
+84.54.50.72
+84.78.93.70
+84.94.120.125
+85.105.203.44
+85.114.119.22
+85.130.177.229
+85.15.190.226
+85.152.30.138
+85.159.164.28
+85.168.41.94
+85.172.11.236
+85.175.59.38
+85.18.236.229
+85.185.201.10
+85.187.68.20
+85.192.133.13
+85.192.41.225
+85.192.63.134
+85.204.82.127
+85.208.136.203
+85.208.22.197
+85.21.212.120
+85.215.108.46
+85.217.144.14
+85.217.144.145
+85.217.144.35
+85.233.142.6
+85.234.137.154
+85.234.37.158
+85.237.57.253
+85.31.45.197
+85.43.157.106
+85.54.48.97
+85.95.117.176
+85.99.245.238
+86.111.246.187
+86.122.27.213
+86.127.255.249
+86.155.144.173
+86.161.169.159
+86.163.232.28
+86.57.43.195
+86.77.51.230
+87.103.172.81
+87.106.198.168
+87.107.69.6
+87.120.9.80
+87.121.221.41
+87.121.221.49
+87.121.221.52
+87.138.66.173
+87.14.136.67
+87.148.176.201
+87.15.96.3
+87.157.110.68
+87.197.131.169
+87.219.167.20
+87.219.167.80
+87.229.211.28
+87.236.176.108
+87.236.176.11
+87.236.176.114
+87.236.176.130
+87.236.176.139
+87.236.176.140
+87.236.176.147
+87.236.176.148
+87.236.176.154
+87.236.176.197
+87.236.176.22
+87.236.176.234
+87.236.176.29
+87.236.176.4
+87.236.176.45
+87.236.176.52
+87.236.176.61
+87.236.176.78
+87.236.176.9
+87.236.176.97
+87.245.17.229
+87.246.7.229
+87.246.7.230
+87.247.187.111
+87.247.244.225
+87.248.226.146
+87.251.236.115
+87.255.193.50
+87.27.100.38
+87.3.195.200
+87.57.159.163
+87.59.25.90
+87.68.167.112
+87.8.34.56
+87.9.134.31
+87.98.133.252
+87.98.145.247
+87.98.184.223
+87.98.209.3
+88.129.208.43
+88.135.68.72
+88.142.46.185
+88.149.251.60
+88.204.221.66
+88.214.25.16
+88.214.26.53
+88.247.228.149
+88.250.118.219
+88.28.223.232
+88.35.116.77
+88.59.246.115
+88.7.56.36
+88.80.31.115
+88.87.89.202
+88.88.123.168
+89.109.36.61
+89.111.132.80
+89.116.179.137
+89.116.230.170
+89.116.230.31
+89.117.89.212
+89.117.89.242
+89.121.228.38
+89.123.219.19
+89.14.80.200
+89.151.182.109
+89.154.49.136
+89.160.14.195
+89.163.144.122
+89.179.126.155
+89.187.162.185
+89.187.163.196
+89.187.163.206
+89.189.188.33
+89.189.190.76
+89.19.105.134
+89.190.203.54
+89.201.167.100
+89.208.104.119
+89.208.104.97
+89.208.93.103
+89.215.210.114
+89.218.185.66
+89.218.80.57
+89.22.184.225
+89.22.185.202
+89.228.192.51
+89.236.112.100
+89.236.239.25
+89.238.150.43
+89.248.163.141
+89.248.163.16
+89.248.163.162
+89.248.163.189
+89.248.163.19
+89.248.163.200
+89.248.163.204
+89.248.163.219
+89.248.163.33
+89.248.163.34
+89.248.163.59
+89.248.163.64
+89.248.165.100
+89.248.165.104
+89.248.165.109
+89.248.165.118
+89.248.165.132
+89.248.165.134
+89.248.165.14
+89.248.165.154
+89.248.165.193
+89.248.165.194
+89.248.165.214
+89.248.165.242
+89.248.165.253
+89.248.165.45
+89.248.165.51
+89.248.165.59
+89.248.165.85
+89.248.167.131
+89.248.168.42
+89.248.171.179
+89.248.172.16
+89.250.148.154
+89.252.141.18
+89.31.14.169
+89.36.20.218
+89.41.67.84
+89.44.137.55
+89.46.186.102
+89.46.219.239
+89.46.223.140
+89.57.34.80
+89.97.218.142
+90.102.83.18
+90.104.203.240
+90.142.46.200
+90.151.171.106
+90.151.171.108
+90.161.217.228
+90.161.45.201
+90.168.201.25
+90.77.251.249
+91.1.246.215
+91.106.78.2
+91.107.189.185
+91.107.253.34
+91.116.40.78
+91.121.171.183
+91.121.232.246
+91.130.49.7
+91.134.248.192
+91.134.248.253
+91.144.129.30
+91.144.143.87
+91.144.20.198
+91.182.182.109
+91.185.40.251
+91.185.84.43
+91.191.209.198
+91.193.129.151
+91.193.43.11
+91.195.62.2
+91.202.27.93
+91.203.11.202
+91.204.154.197
+91.205.128.170
+91.206.27.26
+91.207.175.154
+91.210.107.28
+91.213.50.9
+91.213.99.15
+91.215.78.240
+91.218.114.197
+91.223.169.83
+91.223.169.88
+91.224.92.22
+91.225.163.114
+91.226.165.10
+91.236.168.249
+91.239.97.29
+91.240.112.237
+91.240.118.221
+91.240.118.224
+91.240.118.75
+91.240.118.77
+91.244.113.188
+91.244.45.123
+91.66.4.163
+91.67.193.38
+91.73.194.178
+91.74.98.114
+91.75.96.70
+91.93.63.187
+91.98.29.102
+92.100.159.115
+92.118.39.108
+92.118.39.109
+92.118.39.35
+92.119.231.13
+92.15.182.166
+92.19.225.242
+92.204.135.185
+92.204.139.118
+92.204.139.216
+92.204.174.142
+92.204.184.3
+92.205.160.111
+92.205.165.95
+92.205.18.100
+92.205.19.152
+92.205.24.196
+92.205.40.41
+92.206.96.77
+92.222.10.177
+92.222.108.86
+92.222.172.26
+92.222.50.21
+92.241.106.38
+92.241.82.242
+92.255.165.123
+92.255.199.164
+92.48.77.192
+92.50.179.236
+92.50.249.166
+92.60.40.252
+92.81.17.200
+92.81.222.217
+93.108.242.140
+93.114.185.76
+93.120.240.202
+93.146.134.127
+93.148.161.112
+93.174.164.44
+93.174.95.106
+93.179.113.144
+93.179.198.59
+93.183.131.53
+93.185.73.178
+93.187.181.212
+93.188.164.15
+93.188.167.39
+93.189.11.246
+93.190.106.139
+93.207.103.144
+93.240.46.99
+93.240.81.193
+93.33.198.173
+93.40.3.204
+93.51.114.43
+93.51.73.137
+93.84.109.253
+93.87.21.62
+93.90.41.12
+94.102.49.190
+94.102.49.193
+94.102.50.103
+94.102.61.2
+94.102.61.20
+94.102.61.21
+94.102.61.22
+94.102.61.23
+94.102.61.24
+94.102.61.25
+94.102.61.26
+94.102.61.27
+94.102.61.28
+94.102.61.29
+94.102.61.3
+94.102.61.30
+94.102.61.31
+94.102.61.32
+94.102.61.33
+94.102.61.34
+94.102.61.35
+94.102.61.36
+94.102.61.37
+94.102.61.38
+94.102.61.39
+94.102.61.4
+94.102.61.40
+94.102.61.41
+94.102.61.42
+94.102.61.43
+94.102.61.44
+94.102.61.45
+94.102.61.46
+94.102.61.47
+94.102.61.48
+94.102.61.49
+94.102.61.5
+94.102.61.53
+94.102.61.54
+94.102.61.6
+94.127.212.160
+94.131.101.130
+94.131.109.164
+94.131.115.72
+94.131.115.87
+94.131.115.88
+94.131.118.50
+94.131.9.24
+94.132.233.83
+94.153.212.68
+94.156.11.81
+94.156.5.206
+94.177.97.198
+94.179.133.22
+94.180.247.20
+94.183.47.205
+94.200.61.42
+94.200.80.230
+94.201.105.194
+94.206.199.172
+94.229.79.10
+94.23.162.147
+94.23.165.51
+94.23.251.90
+94.254.0.234
+94.28.246.202
+94.61.217.252
+94.70.166.88
+94.76.228.60
+95.0.15.234
+95.0.32.15
+95.106.175.74
+95.111.237.5
+95.129.58.148
+95.130.175.56
+95.142.90.214
+95.143.190.69
+95.143.218.236
+95.156.96.46
+95.164.10.55
+95.164.11.187
+95.164.86.71
+95.165.24.123
+95.167.46.30
+95.180.102.119
+95.181.43.122
+95.182.121.232
+95.182.121.53
+95.214.26.15
+95.214.27.136
+95.214.27.139
+95.214.27.248
+95.214.27.42
+95.214.27.53
+95.214.52.142
+95.214.53.134
+95.214.55.85
+95.217.214.125
+95.226.250.126
+95.232.138.184
+95.237.50.250
+95.243.13.88
+95.255.112.2
+95.255.47.183
+95.38.15.2
+95.42.185.92
+95.71.126.225
+95.71.71.227
+95.81.82.12
+95.81.94.43
+95.84.184.71
+95.84.66.169
+95.85.124.33
+95.85.125.107
+95.9.32.147
+95.9.93.130
+95.9.93.202
+95.90.12.128
+96.1.64.194
+96.62.164.82
+96.64.67.41
+96.78.175.39
+96.78.175.42
+96.85.104.2
+96.85.110.193
+96.88.140.153
+96.91.198.250
+96.93.196.89
+97.105.69.132
+97.107.133.213
+97.107.141.150
+97.64.22.63
+97.68.57.241
+97.74.82.234
+97.74.83.185
+97.74.86.12
+97.74.91.90
+97.74.93.236
+97.74.93.57
+97.89.112.49
+97.96.238.12
+98.109.124.160
+98.110.23.77
+98.142.133.9
+98.142.141.184
+98.144.130.168
+98.155.238.70
+98.159.100.116
+98.194.228.88
+98.196.19.166
+98.199.225.149
+98.207.97.53
+98.220.218.194
+98.235.132.232
+98.30.124.194
+98.40.101.10
+98.49.151.220
+98.97.178.117
+99.121.217.125
+99.165.10.221
+99.249.29.5
+99.254.193.144
+99.35.132.67
+99.49.100.219
diff --git a/plugins/openresty/waf/rules/ipWhite.json b/plugins/openresty/waf/rules/ipWhite.json
new file mode 100644
index 000000000..fa061a724
--- /dev/null
+++ b/plugins/openresty/waf/rules/ipWhite.json
@@ -0,0 +1,9 @@
+{
+ "rules": [
+ {
+ "state": "on",
+ "type": "ipv4",
+ "ipv4": "123"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/plugins/openresty/waf/rules/methodWhite.json b/plugins/openresty/waf/rules/methodWhite.json
new file mode 100644
index 000000000..0c979b7c6
--- /dev/null
+++ b/plugins/openresty/waf/rules/methodWhite.json
@@ -0,0 +1,88 @@
+{
+ "rules": [
+ {
+ "state": "on",
+ "rule": "GET"
+ },
+ {
+ "state": "on",
+ "rule": "POST"
+ },
+ {
+ "state": "on",
+ "rule": "PUT"
+ },
+ {
+ "state": "on",
+ "rule": "DELETE"
+ },
+ {
+ "state": "on",
+ "rule": "PATCH"
+ },
+ {
+ "state": "on",
+ "rule": "HEAD"
+ },
+ {
+ "state": "on",
+ "rule": "OPTIONS"
+ },
+ {
+ "state": "on",
+ "rule": "TRACE"
+ },
+ {
+ "state": "on",
+ "rule": "CONNECT"
+ },
+ {
+ "state": "on",
+ "rule": "PROPFIND"
+ },
+ {
+ "state": "on",
+ "rule": "PROPPATCH"
+ },
+ {
+ "state": "on",
+ "rule": "MKCOL"
+ },
+ {
+ "state": "on",
+ "rule": "COPY"
+ },
+ {
+ "state": "on",
+ "rule": "MOVE"
+ },
+ {
+ "state": "on",
+ "rule": "LOCK"
+ },
+ {
+ "state": "on",
+ "rule": "UNLOCK"
+ },
+ {
+ "state": "on",
+ "rule": "LINK"
+ },
+ {
+ "state": "on",
+ "rule": "UNLINK"
+ },
+ {
+ "state": "on",
+ "rule": "WRAPPED"
+ },
+ {
+ "state": "on",
+ "rule": "PROPFIND"
+ },
+ {
+ "state": "on",
+ "rule": "SRARCH"
+ }
+ ]
+}
diff --git a/plugins/openresty/waf/rules/post.json b/plugins/openresty/waf/rules/post.json
new file mode 100644
index 000000000..d15363f12
--- /dev/null
+++ b/plugins/openresty/waf/rules/post.json
@@ -0,0 +1,23 @@
+{
+ "rules":[
+ {"state":"on","action":"deny","rule":"select.+(from|limit)"},
+ {"state":"on","action":"deny","rule":"(?:(union(.*?)select))"},
+ {"state":"on","action":"deny","rule":"having|rongjitest"},
+ {"state":"on","action":"deny","rule":"sleep\\((\\s*)(\\d*)(\\s*)\\)"},
+ {"state":"on","action":"deny","rule":"benchmark\\((.*)\\,(.*)\\)"},
+ {"state":"on","action":"deny","rule":"base64_decode\\("},
+ {"state":"on","action":"deny","rule":"(?:from\\W+information_schema\\W)"},
+ {"state":"on","action":"deny","rule":"(?:(?:current_)user|database|schema|connection_id)\\s*\\("},
+ {"state":"on","action":"deny","rule":"(?:etc\\/\\W*passwd)"},
+ {"state":"on","action":"deny","rule":"into(\\s+)+(?:dump|out)file\\s*"},
+ {"state":"on","action":"deny","rule":"group\\s+by.+\\("},
+ {"state":"on","action":"deny","rule":"xwork.MethodAccessor"},
+ {"state":"on","action":"deny","rule":"(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\\("},
+ {"state":"on","action":"deny","rule":"xwork\\.MethodAccessor"},
+ {"state":"on","action":"deny","rule":"(gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\\:\\/"},
+ {"state":"on","action":"deny","rule":"java\\.lang"},
+ {"state":"on","action":"deny","rule":"\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\\["},
+ {"state":"on","action":"deny","rule":"\\<(iframe|script|body|img|layer|div|meta|style|base|object|input)"},
+ {"state":"on","action":"deny","rule":"(onmouseover|onerror|onload)\\="}
+ ]
+}
\ No newline at end of file
diff --git a/plugins/openresty/waf/rules/uaBlack.json b/plugins/openresty/waf/rules/uaBlack.json
new file mode 100644
index 000000000..10fe2dcf0
--- /dev/null
+++ b/plugins/openresty/waf/rules/uaBlack.json
@@ -0,0 +1,5 @@
+{
+ "rules": [
+
+ ]
+}
\ No newline at end of file
diff --git a/plugins/openresty/waf/rules/uaWhite.json b/plugins/openresty/waf/rules/uaWhite.json
new file mode 100644
index 000000000..00a7fe7c0
--- /dev/null
+++ b/plugins/openresty/waf/rules/uaWhite.json
@@ -0,0 +1,8 @@
+{
+ "rules": [
+ {
+ "state": "on",
+ "rule": "PostmanRuntime/7.36.1"
+ }
+ ]
+}
diff --git a/plugins/openresty/waf/rules/urlBlack.json b/plugins/openresty/waf/rules/urlBlack.json
new file mode 100644
index 000000000..1f61a279b
--- /dev/null
+++ b/plugins/openresty/waf/rules/urlBlack.json
@@ -0,0 +1,44 @@
+{
+ "rules": [
+ {
+ "state": "on",
+ "rule": "\\.(svn|htaccess|bash_history)"
+ },
+ {
+ "state": "on",
+ "rule": "\\.(bak|inc|old|mdb|sql|backup|java|class)$"
+ },
+ {
+ "state": "on",
+ "rule": "(vhost|bbs|host|wwwroot|www|site|root|hytop|flashfxp).*\\.rar"
+ },
+ {
+ "state": "on",
+ "rule": "(phpmyadmin|jmx-console|jmxinvokerservlet)"
+ },
+ {
+ "state": "on",
+ "rule": "(?:phpMyAdmin2|phpMyAdmin|phpmyadmin|dbadmin|pma|myadmin|admin|mysql)/scripts/setup%.php"
+ },
+ {
+ "state": "on",
+ "rule": "java\\.lang"
+ },
+ {
+ "state": "on",
+ "rule": "/(attachments|upimg|images|css|uploadfiles|html|uploads|templets|static|template|data|inc|forumdata|upload|includes|cache|avatar)/(\\\\w+).(php|jsp)"
+ },
+ {
+ "state": "on",
+ "rule": "wp-includes/wlwmanifest.xml"
+ },
+ {
+ "state": "on",
+ "rule": "die(@md5(HelloThinkCMF))"
+ },
+ {
+ "state": "on",
+ "rule": "/boaform/admin/formLogin"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/plugins/openresty/waf/rules/urlWhite.json b/plugins/openresty/waf/rules/urlWhite.json
new file mode 100644
index 000000000..2b881d47d
--- /dev/null
+++ b/plugins/openresty/waf/rules/urlWhite.json
@@ -0,0 +1,14 @@
+{
+ "rules": [
+ {
+ "state": "on",
+ "action": "allow",
+ "rule": "/console/posts/editor"
+ },
+ {
+ "state": "on",
+ "action": "allow",
+ "rule": "/apis/api.console.halo.run/v1alpha1/posts"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/plugins/openresty/waf/test.lua b/plugins/openresty/waf/test.lua
new file mode 100644
index 000000000..3318b9b17
--- /dev/null
+++ b/plugins/openresty/waf/test.lua
@@ -0,0 +1,33 @@
+function ip_to_int(ip)
+ local ip_int = 0
+ for i, octet in ipairs({ ip:match("(%d+)%.(%d+)%.(%d+)%.(%d+)") }) do
+ ip_int = ip_int + tonumber(octet) * 256 ^ (4 - i)
+ end
+ return ip_int
+end
+
+------ 示例
+local ip_address = "222.249.139.98"
+local ip_number = ip_to_int(ip_address)
+print(ip_number)
+
+--local geoip = require "lib.resty.maxminddb"
+--local cjson = require("cjson")
+--
+--geoip.init("/Users/wangzhengkun/Downloads/blackIP.mmdb")
+--
+--local geo = geoip.lookup("165.154.132.251")
+--
+--print(cjson.encode(geo))
+
+--local fileUtils = require "lib.file"
+--local read_file2string = fileUtils.read_file2string
+--
+--local slideHtml = read_file2string("./html/" .. "slide.html")
+--
+--print(string.format(slideHtml, "1", "2"))
+
+
+--local today = os.date("%Y-%m-%d")
+--print(today)
+
diff --git a/plugins/openresty/waf/waf.json b/plugins/openresty/waf/waf.json
new file mode 100644
index 000000000..ab7668f0c
--- /dev/null
+++ b/plugins/openresty/waf/waf.json
@@ -0,0 +1,4 @@
+{
+ "name": "1Panel WAF",
+ "version": "1.0.0"
+}
\ No newline at end of file
diff --git a/plugins/openresty/waf/waf.lua b/plugins/openresty/waf/waf.lua
new file mode 100644
index 000000000..6cc86e500
--- /dev/null
+++ b/plugins/openresty/waf/waf.lua
@@ -0,0 +1,163 @@
+local geoip = require "geoip"
+local lib = require "lib"
+local fileUtils = require "file"
+local config = require "config"
+local cc = require "cc"
+local utils = require "utils"
+local cjson = require "cjson"
+
+local ipairs = ipairs
+local sub_str = string.sub
+local find_str = string.find
+local split_str = utils.split
+local encode = cjson.encode
+local read_file2table = fileUtils.read_file2table
+local tonumber = tonumber
+local date = os.date
+local format_str = string.format
+
+local function get_website_key()
+ local s_name = ngx.var.server_name
+ local website_key = ngx.shared.waf:get(s_name)
+ if website_key then
+ return website_key
+ end
+ local websites = read_file2table(config.config_dir .. '/websites.json')
+ if not websites then
+ return s_name
+ end
+ for _, v in ipairs(websites)
+ do
+ for _, domain in ipairs(v['domains'])
+ do
+ if s_name == domain then
+ ngx.shared.waf:set(s_name, v['key'], 3600)
+ return v['key']
+ end
+ end
+ end
+ if s_name == '_' then
+ s_name = "UNKNOWN"
+ end
+ return s_name
+end
+
+local function init()
+ local ip = utils.get_real_ip()
+ ngx.ctx.ip = ip
+ local ua = utils.get_header("user-agent")
+ if not ua then
+ ua = ""
+ end
+ ngx.ctx.ua = ua
+ geoip.init()
+
+ ngx.ctx.geoip = geoip.lookup(ip)
+
+ local msg = "访问 IP " .. ip
+ if ngx.ctx.geoip.country then
+ msg = msg .. " 国家 " .. cjson.encode(ngx.ctx.geoip.country)
+ end
+ if ngx.ctx.geoip.province then
+ msg = msg .. " 省份 " .. cjson.encode(ngx.ctx.geoip.province)
+ end
+ ngx.log(ngx.ERR, msg)
+
+ ngx.ctx.website_key = get_website_key()
+ ngx.ctx.method = ngx.req.get_method()
+ ngx.ctx.content_type = utils.get_header("content-type")
+ if ngx.ctx.content_type then
+ ngx.ctx.content_length = tonumber(utils.get_header("content-length"))
+ end
+ ngx.ctx.today = date("%Y-%m-%d")
+end
+
+local function return_js(js_type)
+ ngx.header.content_type = "text/html;charset=utf8"
+ ngx.header.Cache_Control = "no-cache"
+ local host = ngx.var.scheme .. "://" .. ngx.var.host
+ local set_access_url = host .. "/set_access_token"
+ local secret = config.get_secret()
+ local key = ngx.md5(ngx.ctx.ip .. ngx.var.server_name .. ngx.ctx.website_key
+ .. ngx.ctx.ua .. ngx.ctx.today .. secret)
+ local value = ngx.md5(ngx.time() .. ngx.ctx.ip)
+ local js = config.get_html_res(js_type)
+ ngx.say(format_str(js, set_access_url, key, value))
+ ngx.status = 200
+ ngx.exit(200)
+end
+
+local function return_json(data)
+ ngx.header.content_type = "application/json;"
+ ngx.header.Cache_Control = "no-cache"
+ ngx.status = 200
+ ngx.say(data)
+ ngx.exit(200)
+end
+
+local function waf_api()
+ local uri = ngx.var.uri
+ local prefix = sub_str(uri, 1, 15)
+ if find_str(prefix, "/set_access_token") then
+ local kvs = split_str(uri, "-")
+ if kvs[2] and kvs[3] then
+ cc.set_access_token(kvs[2], kvs[3])
+ else
+ ngx.exit(444)
+ end
+ end
+ if uri == "/slide_check_" .. ngx.md5(ngx.ctx.ip) .. ".js" then
+ return_js("slide_js")
+ end
+
+ if uri == "/5s_check_" .. ngx.md5(ngx.ctx.ip) .. ".js" then
+ return_js("five_second_js")
+ end
+
+ if ngx.var.remote_addr ~= '127.0.0.1' then
+ return false
+ end
+ if uri == '/reload_waf_config' then
+ config.load_config_file()
+ ngx.exit(200)
+ end
+ if uri == '/get_black_ip' then
+ --TODO 从 redis 获取黑名单
+ local data = ngx.shared.waf_black_ip:get_keys(0)
+ return_json(encode(data))
+ end
+end
+
+if config.is_waf_on() then
+ init()
+ waf_api()
+
+ if lib.is_white_ip() then
+ return true
+ end
+ lib.default_ip_black()
+ lib.black_ip()
+
+ if lib.is_white_ua() then
+ return true
+ end
+ lib.default_ua_black()
+ lib.black_ua()
+
+ lib.cc_url()
+ if lib.is_white_url() then
+ return true
+ end
+ lib.black_url()
+
+ lib.allow_location_check()
+ lib.acl()
+ lib.bot_check()
+ lib.method_check()
+ lib.cc()
+ lib.args_check()
+ lib.cookie_check()
+ lib.post_check()
+ lib.header_check()
+
+end
\ No newline at end of file