diff --git a/README.md b/README.md index 75bf8ad2..86416806 100644 --- a/README.md +++ b/README.md @@ -39,8 +39,8 @@ * 官方与淘宝npm registry一键切换, * 某些npm install的时候,并且使用cnpm也无法安装时,可以尝试开启npm代理再试 -### 6、 更多加速配置 -等你来提issue +### 6、 增强功能 +* 等你来探索 ## 快速开始 目前仅支持windows @@ -50,7 +50,7 @@ #### 1 下载安装包 下载安装包: -[阿里云](https://dev-sidecar.docmirror.cn/update/DevSidecar-1.2.1.exe) +[阿里云](https://dev-sidecar.docmirror.cn/update/DevSidecar-1.3.1.exe) [Gitee Release](https://gitee.com/docmirror/dev-sidecar/releases) [Github Release](https://github.com/docmirror/dev-sidecar/releases) @@ -160,18 +160,19 @@ const intercepts = { ## 问题排查 如果没有加速效果,请根据以下步骤进行排查 -#### 1、请确认windows的代理设置处于勾选状态 +#### 1. 请确认windows的代理设置处于勾选状态 如何打开查看windows代理设置: * win10: 开始->设置->网络和Internet->最下方代理 * win7: 开始->控制面板->网络和Internet->网络和共享中心->左下角Internet选项->连接选项卡->局域网设置 ![](./doc/proxy.png) -#### 2. 360软件会严重拖慢设置代理命令的执行时间 -如果开启了360,那么软件开启windows代理的时间会特别长,需要耐心等待。 + +#### 2. 尝试将代理设置关闭再重新打开 +按上图中先关闭代理,保存,再打开代理,再保存 -#### 3.如果还是不行,请在下方加作者好友,将服务日志发送给作者进行分析 - 日志打开方式:加速服务->右边日志按钮->另存为 +#### 3. 如果还是不行,请在下方加作者好友,将服务日志发送给作者进行分析 + 日志打开方式:加速服务->右边日志按钮->打开日志文件夹 ![](./doc/log.png) diff --git a/lerna.json b/lerna.json index a205513f..8108fa07 100644 --- a/lerna.json +++ b/lerna.json @@ -14,5 +14,5 @@ "ignore": [] } }, - "version": "1.2.1" + "version": "1.3.1" } diff --git a/packages/core/.babelrc b/packages/core/.babelrc new file mode 100644 index 00000000..ae733f47 --- /dev/null +++ b/packages/core/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["es2020","stage-4"] +} \ No newline at end of file diff --git a/packages/core/package-lock.json b/packages/core/package-lock.json index 2873ad73..d17704e2 100644 --- a/packages/core/package-lock.json +++ b/packages/core/package-lock.json @@ -1,6 +1,6 @@ { "name": "@docmirror/dev-sidecar", - "version": "1.2.1", + "version": "1.3.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/packages/core/package.json b/packages/core/package.json index 9242539e..438eb14a 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@docmirror/dev-sidecar", - "version": "1.2.1", + "version": "1.3.1", "description": "给开发者的加速代理工具", "main": "src/index.js", "keywords": [ @@ -16,8 +16,9 @@ "start": "node ./start" }, "dependencies": { - "@docmirror/mitmproxy": "^1.2.1", + "@docmirror/mitmproxy": "^1.3.0", "agentkeepalive": "^2.1.1", + "babel-preset-es2020": "^1.0.2", "charset": "^1.0.0", "child_process": "^1.0.2", "colors": "^1.1.2", diff --git a/packages/core/src/config/index.js b/packages/core/src/config/index.js index ffe17e74..2691c753 100644 --- a/packages/core/src/config/index.js +++ b/packages/core/src/config/index.js @@ -49,11 +49,11 @@ module.exports = { desc: 'clone加速复制链接脚本' }, '/.*': { - proxy: 'github.com', + proxy: 'gh.docmirror.top/_proxy', backup: [ - 'gh.docmirror.top/_proxy' + 'github.com' ], - desc: '如果出现dev-sidecar报错,可能是备用加速地址dns被污染了,需要将本条配置删除' + desc: '如果出现dev-sidecar报错,可能是加速地址dns被污染了,需要将本条配置删除' } }, 'api.github.com': { @@ -66,20 +66,30 @@ module.exports = { '.*': { proxy: 'raw.fastgit.org' } }, 'github.githubassets.com': { - '.*': { proxy: 'assets.fastgit.org', test: 'https://github.githubassets.com/favicons/favicon.svg', desc: '静态资源加速' } - + '.*': { + proxy: 'assets.fastgit.org', + backup: ['github.githubassets.com'], + test: 'https://github.githubassets.com/favicons/favicon.svg', + desc: '静态资源加速' + } }, 'customer-stories-feed.github.com': { '.*': { proxy: 'customer-stories-feed.fastgit.org' } }, - // google cdn + 'www.google.com': { + '/recaptcha/.*': { proxy: 'www.recaptcha.net' }, + '.*': { + proxy: 'gg.docmirror.top/_yxorp', + desc: '呀,被你发现了,偷偷的用,别声张' + } + }, 'ajax.googleapis.com': { '.*': { proxy: 'ajax.loli.net', - backup: ['ajax.proxy.ustclug.org'], test: 'ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js' } + }, 'fonts.googleapis.com': { '.*': { @@ -97,13 +107,10 @@ module.exports = { 'themes.googleusercontent.com': { '.*': { proxy: 'google-themes.proxy.ustclug.org' } }, - 'www.google.com': { - '/recaptcha/.*': { proxy: 'www.recaptcha.net' } - }, 'fonts.gstatic.com': { '.*': { - proxy: 'fonts-gstatic.proxy.ustclug.org', - backup: ['gstatic.loli.net'] + proxy: 'gstatic.loli.net', + backup: ['fonts-gstatic.proxy.ustclug.org'] } }, 'clients*.google.com': { '.*': { abort: true } }, @@ -115,18 +122,23 @@ module.exports = { redirect: 'npm.taobao.org/mirrors' } }, - 'registry-1.docker.io': { '.*': { proxy: 'docker.mirrors.ustc.edu.cn' } }, - 'packages.elastic.co': { '.*': { proxy: 'elastic.proxy.ustclug.org' } }, - 'ppa.launchpad.net': { '.*': { proxy: 'launchpad.proxy.ustclug.org' } }, - 'archive.cloudera.com': { '.*': { regexp: '/cdh5/.*', proxy: 'cloudera.proxy.ustclug.org' } }, - 'downloads.lede-project.org': { '.*': { proxy: 'lede.proxy.ustclug.org' } }, - 'downloads.openwrt.org': { '.*': { proxy: 'openwrt.proxy.ustclug.org' } }, - 'secure.gravatar.com': { '.*': { proxy: 'gravatar.proxy.ustclug.org' } }, + // 'packages.elastic.co': { '.*': { proxy: 'elastic.proxy.ustclug.org' } }, + // 'ppa.launchpad.net': { '.*': { proxy: 'launchpad.proxy.ustclug.org' } }, + // 'archive.cloudera.com': { '.*': { regexp: '/cdh5/.*', proxy: 'cloudera.proxy.ustclug.org' } }, + // 'downloads.lede-project.org': { '.*': { proxy: 'lede.proxy.ustclug.org' } }, + // 'downloads.openwrt.org': { '.*': { proxy: 'openwrt.proxy.ustclug.org' } }, + // 'secure.gravatar.com': { '.*': { proxy: 'gravatar.proxy.ustclug.org' } }, '*.carbonads.com': { '/carbon.*': { abort: true, desc: '广告拦截' } + }, + '*.buysellads.com': { + '/ads/.*': { + abort: true, + desc: '广告拦截' + } } }, whiteList: { diff --git a/packages/core/src/expose.js b/packages/core/src/expose.js index a69396cc..31905bba 100644 --- a/packages/core/src/expose.js +++ b/packages/core/src/expose.js @@ -19,11 +19,13 @@ function setupPlugin (key, plugin, context, config) { const pluginStatus = plugin.status const api = PluginClass(context) config.addDefault(key, pluginConfig) - lodash.set(status, key, pluginStatus) + if (pluginStatus) { + lodash.set(status, key, pluginStatus) + } + return api } -const server = modules.server const proxy = setupPlugin('proxy', modules.proxy, context, config) const plugin = {} for (const key in modules.plugin) { @@ -32,99 +34,110 @@ for (const key in modules.plugin) { plugin[key] = api } config.resetDefault() +const server = modules.server +const serverStart = server.start -module.exports = { - status, - api: { - startup: async ({ mitmproxyPath }) => { - const conf = config.get() - if (conf.server.enabled) { - try { - await server.start({ mitmproxyPath }) - } catch (err) { - log.error('代理服务启动失败:', err) - } - } - if (conf.proxy.enabled) { - try { - await proxy.start() - } catch (err) { - log.error('开启系统代理失败:', err) - } - } - try { - const plugins = [] - for (const key in plugin) { - if (conf.plugin[key].enabled) { - const start = async () => { - try { - await plugin[key].start() - log.info(`插件【${key}】已启动`) - } catch (err) { - log.error(`插件【${key}】启动失败`, err) - } - } - plugins.push(start()) +const newServerStart = ({ mitmproxyPath }) => { + return serverStart({ mitmproxyPath, plugins: plugin }) +} +server.start = newServerStart +async function startup ({ mitmproxyPath }) { + const conf = config.get() + if (conf.server.enabled) { + try { + await server.start({ mitmproxyPath }) + } catch (err) { + log.error('代理服务启动失败:', err) + } + } + if (conf.proxy.enabled) { + try { + await proxy.start() + } catch (err) { + log.error('开启系统代理失败:', err) + } + } + try { + const plugins = [] + for (const key in plugin) { + if (conf.plugin[key].enabled) { + const start = async () => { + try { + await plugin[key].start() + log.info(`插件【${key}】已启动`) + } catch (err) { + log.error(`插件【${key}】启动失败`, err) } } - if (plugins && plugins.length > 0) { - await Promise.all(plugins) - } - } catch (err) { - log.error('开启插件失败:', err) + plugins.push(start()) } - }, - shutdown: async () => { - try { - const plugins = [] - for (const key in plugin) { - if (status.plugin[key].enabled && plugin[key].close) { - const close = async () => { - try { - await plugin[key].close() - log.info(`插件【${key}】已关闭`) - } catch (err) { - log.info(`插件【${key}】关闭失败`, err) - } - } - plugins.push(close()) - } - } - if (plugins.length > 0) { - await Promise.all(plugins) - } - } catch (error) { - log.error('插件关闭失败'.error) - } - - if (status.proxy.enabled) { - try { - await proxy.close() - log.info('系统代理已关闭') - } catch (err) { - log.error('系统代理关闭失败', err) - } - } - if (status.server.enabled) { - try { - await server.close() - log.info('代理服务已关闭') - } catch (err) { - log.error('代理服务关闭失败', err) - } - } - }, - status: { - get () { - return status - } - }, - config, - event, - shell, - server, - proxy, - plugin, - log + } + if (plugins && plugins.length > 0) { + await Promise.all(plugins) + } + } catch (err) { + log.error('开启插件失败:', err) } } + +async function shutdown () { + try { + const plugins = [] + for (const key in plugin) { + if (status.plugin[key].enabled && plugin[key].close) { + const close = async () => { + try { + await plugin[key].close() + log.info(`插件【${key}】已关闭`) + } catch (err) { + log.info(`插件【${key}】关闭失败`, err) + } + } + plugins.push(close()) + } + } + if (plugins.length > 0) { + await Promise.all(plugins) + } + } catch (error) { + log.error('插件关闭失败'.error) + } + + if (status.proxy.enabled) { + try { + await proxy.close() + log.info('系统代理已关闭') + } catch (err) { + log.error('系统代理关闭失败', err) + } + } + if (status.server.enabled) { + try { + await server.close() + log.info('代理服务已关闭') + } catch (err) { + log.error('代理服务关闭失败', err) + } + } +} + +const api = { + startup, + shutdown, + status: { + get () { + return status + } + }, + config, + event, + shell, + server, + proxy, + plugin, + log +} +module.exports = { + status, + api +} diff --git a/packages/core/src/modules/plugin/git/config.js b/packages/core/src/modules/plugin/git/config.js new file mode 100644 index 00000000..d70d80ad --- /dev/null +++ b/packages/core/src/modules/plugin/git/config.js @@ -0,0 +1,7 @@ +module.exports = { + name: 'Git代理', + enabled: false, + setting: { + sslVerify: false + } +} diff --git a/packages/core/src/modules/plugin/git/index.js b/packages/core/src/modules/plugin/git/index.js new file mode 100644 index 00000000..3489c2af --- /dev/null +++ b/packages/core/src/modules/plugin/git/index.js @@ -0,0 +1,65 @@ +const pluginConfig = require('./config') +const Plugin = function (context) { + const { config, shell, event, log } = context + const pluginApi = { + async start () { + const ip = '127.0.0.1' + const port = config.get().server.port + await pluginApi.setProxy(ip, port) + return { ip, port } + }, + + async close () { + return pluginApi.unsetProxy() + }, + + async restart () { + await pluginApi.close() + await pluginApi.start() + }, + + async save (newConfig) { + + }, + + async setProxy (ip, port) { + const cmds = [ + `git config --global http.proxy http://${ip}:${port} `, + `git config --global https.proxy http://${ip}:${port} ` + ] + if (pluginConfig.setting.sslVerify === true) { + cmds.push('git config --global http.sslVerify false ') + } + + const ret = await shell.exec(cmds, { type: 'cmd' }) + event.fire('status', { key: 'plugin.git.enabled', value: true }) + log.info('开启【Git】代理成功') + + return ret + }, + + async unsetProxy () { + const cmds = [ + 'git config --global --unset https.proxy ', + 'git config --global --unset http.proxy ' + ] + if (pluginConfig.setting.sslVerify === true) { + cmds.push('git config --global http.sslVerify true ') + } + const ret = await shell.exec(cmds, { type: 'cmd' }) + event.fire('status', { key: 'plugin.git.enabled', value: false }) + log.info('关闭【Git】代理成功') + return ret + } + } + return pluginApi +} + +module.exports = { + key: 'git', + config: pluginConfig, + status: { + enabled: false + }, + plugin: Plugin +} diff --git a/packages/core/src/modules/plugin/index.js b/packages/core/src/modules/plugin/index.js index 3a14b046..06fcf964 100644 --- a/packages/core/src/modules/plugin/index.js +++ b/packages/core/src/modules/plugin/index.js @@ -1,4 +1,7 @@ const node = require('./node') +const git = require('./git') +const overwall = require('./overwall') + module.exports = { - node + node, git, overwall } diff --git a/packages/core/src/modules/plugin/node/config.js b/packages/core/src/modules/plugin/node/config.js index 986779bb..724314c6 100644 --- a/packages/core/src/modules/plugin/node/config.js +++ b/packages/core/src/modules/plugin/node/config.js @@ -11,9 +11,9 @@ module.exports = { NODE_TLS_REJECT_UNAUTHORIZED: false, registry: 'https://registry.npmjs.org'// 可以选择切换官方或者淘宝镜像 }, - intercepts: { - 'cdn.cypress.io': [{ regexp: '/desktop/.*', proxy: 'http://npm.taobao.org/mirrors/cypress/' }] - }, + // intercepts: { + // 'cdn.cypress.io': [{ regexp: '/desktop/.*', proxy: 'http://npm.taobao.org/mirrors/cypress/' }] + // }, variables: { SASS_BINARY_SITE: 'https://npm.taobao.org/mirrors/node-sass/', PHANTOMJS_CDNURL: 'https://npm.taobao.org/mirrors/phantomjs/', diff --git a/packages/core/src/modules/plugin/overwall/config.js b/packages/core/src/modules/plugin/overwall/config.js new file mode 100644 index 00000000..9a68a156 --- /dev/null +++ b/packages/core/src/modules/plugin/overwall/config.js @@ -0,0 +1,21 @@ +module.exports = { + name: '梯子', + enabled: false, + server: { + }, + serverDefault: { + 'ow-prod.docmirror.top': { + path: 'X2dvX292ZXJfd2FsbF8', + password: 'dev_sidecar_is_666' + } + }, + targets: { + '*facebook.com': true + }, + pac: { + enabled: true, + update: [ + 'https://gitlab.com/gfwlist/gfwlist/raw/master/gfwlist.txt' + ] + } +} diff --git a/packages/core/src/modules/plugin/overwall/index.js b/packages/core/src/modules/plugin/overwall/index.js new file mode 100644 index 00000000..f2796d89 --- /dev/null +++ b/packages/core/src/modules/plugin/overwall/index.js @@ -0,0 +1,55 @@ +const pluginConfig = require('./config') + +const Plugin = function (context) { + const { config, shell, event, log } = context + const api = { + async start () { + // event.fire('status', { key: 'plugin.overwall.enabled', value: true }) + }, + + async close () { + // event.fire('status', { key: 'plugin.overwall.enabled', value: false }) + }, + + async restart () { + await api.close() + await api.start() + }, + + async overrideRunningConfig_bak (serverConfig) { + const conf = config.get().plugin.overwall + if (!conf || !conf.enabled || !conf.targets) { + return + } + const server = conf.server + let i = 0 + let main + const backup = [] + for (const key in server) { + if (i === 0) { + main = key + } else { + backup.push(key) + } + i++ + } + for (const key in conf.targets) { + serverConfig.intercepts[key] = { + '.*': { + // eslint-disable-next-line no-template-curly-in-string + proxy: main + '/${host}', + backup + } + } + } + } + + } + return api +} + +module.exports = { + key: 'overwall', + config: pluginConfig, + plugin: Plugin +} diff --git a/packages/core/src/modules/plugin/overwall/pac b/packages/core/src/modules/plugin/overwall/pac new file mode 100644 index 00000000..cf44ab69 --- /dev/null +++ b/packages/core/src/modules/plugin/overwall/pac @@ -0,0 +1,8023 @@ +[AutoProxy 0.2.9] +! Checksum: 599k2oDsYa2ToeyxPhx9zw +! Expires: 6h +! Title: GFWList4LL +! GFWList with EVERYTHING included +! Last Modified: Wed, 18 Nov 2020 19:49:59 -0500 +! +! HomePage: https://github.com/gfwlist/gfwlist +! License: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt +! +! GFWList is unlikely to fully comprise the real +! rules being deployed inside GFW system. We try +! our best to keep the list up to date. Please +! contact us regarding URL submission / removal, +! or suggestion / enhancement at issue tracker: +! https://github.com/gfwlist/gfwlist/issues/. + +!---------403/451/520 & URL Redirects--------- +!--ehentai +|http://85.17.73.31/ +!--||adorama.com +||agnesb.fr +||akiba-web.com +||altrec.com +||angela-merkel.de +||angola.org +||apartmentratings.com +||apartments.com +||arena.taipei +||asianspiss.com +||assimp.org +||athenaeizou.com +||azubu.tv +||bankmobilevibe.com +||banorte.com +||bash-hackers.org +||beeg.com +||global.bing.com +||bloombergview.com +||booktopia.com.au +||boysmaster.com +||bynet.co.il +||carfax.com +.casinobellini.com +||casinobellini.com +||centauro.com.br +||chobit.cc +||clearsurance.com +||images.comico.tw +||static.comico.tw +||counter.social +||costco.com +||crossfire.co.kr +||d2pass.com +||darpa.mil +||dawangidc.com +||deezer.com +||desipro.de +||dingchin.com.tw +||discord.com +||discord.gg +||discordapp.com +||discordapp.net +||dish.com +|http://img.dlsite.jp/ +||dm530.net +share.dmhy.org +||dmhy.org +||dmm.co.jp +|http://www.dmm.com/netgame +||dnvod.tv +||dubox.com +||dvdpac.com +||eesti.ee +||esurance.com +.expekt.com +||expekt.com +.extmatrix.com +||extmatrix.com +||fakku.net +||fastpic.ru +||filesor.com +||financetwitter.com +||flipboard.com +||flitto.com +||fnac.be +||fnac.com +||funkyimg.com +||fxnetworks.com +||g-area.org +||gettyimages.com +||getuploader.com +!--|https://github.com/programthink/zhao +|https://raw.githubusercontent.com/programthink/zhao +||glass8.eu +||glype.com +||go141.com +||guo.media +||hautelook.com +||hautelookcdn.com +||wego.here.com +||gamer-cds.cdn.hinet.net +||gamer2-cds.cdn.hinet.net +||hmvdigital.ca +||hmvdigital.com +||homedepot.com +||hoovers.com +||hulu.com +||huluim.com +|http://secure.hustler.com +|http://hustlercash.com +|http://www.hustlercash.com +||hybrid-analysis.com +||cdn*.i-scmp.com +||ilovelongtoes.com +|http://imgmega.com/*.gif.html +|http://imgmega.com/*.jpg.html +|http://imgmega.com/*.jpeg.html +|http://imgmega.com/*.png.html +||imlive.com +||tw.iqiyi.com +||javhub.net +||javhuge.com +.javlibrary.com +||javlibrary.com +||jcpenney.com +||jims.net +||jukujo-club.com +||juliepost.com +||kawaiikawaii.jp +||kendatire.com +||khatrimaza.org +||kkbox.com +||leisurepro.com +||lifemiles.com +||longtoes.com +||lovetvshow.com +|http://www.m-sport.co.uk +||macgamestore.com +||madonna-av.com +||mangafox.com +||mangafox.me +||manta.com +||matome-plus.com +||matome-plus.net +||mattwilcox.net +||metarthunter.com +||mfxmedia.com +||mojim.com +||kb.monitorware.com +||monster.com +||moodyz.com +||moonbingo.com +||mos.ru +||msha.gov +||muzu.tv +||mvg.jp +.mybet.com +||mybet.com +||nationwide.com +|http://www.nbc.com/live +||neo-miracle.com +||netflix.com +||nflximg.com +||nflximg.net +||nflxext.com +||nflxso.net +||nflxvideo.net +||nic.gov +|http://mo.nightlife141.com +||nordstrom.com +||nordstromimage.com +||nordstromrack.com +||nottinghampost.com +||npsboost.com +||ntdtv.cz +||s1.nudezz.com +||nusatrip.com +||nuuvem.com +||omni7.jp +||onapp.com +!--We are confused as well +||ontrac.com +@@|http://blog.ontrac.com +||pandora.com +.pandora.tv +||parkansky.com +||phmsociety.org +|http://*.pimg.tw/ +||pure18.com +||pytorch.org +||qq.co.za +||r18.com +|http://radiko.jp +||ramcity.com.au +||rd.com +||rdio.com +|https://riseup.net +||sadistic-v.com +||isc.sans.edu +|http://cdn*.search.xxx/ +||shiksha.com +||slacker.com +||sm-miracle.com +||soylentnews.org +||spotify.com +||spreadshirt.es +||springboardplatform.com +||sprite.org +@@|http://store.sprite.org +||superokayama.com +||superpages.com +||swagbucks.com +||switch1.jp +||tapanwap.com +||gsp.target.com +||login.target.com +!--@@||intl.target.com +||rcam.target.com +||thinkgeek.com +||thebodyshop-usa.com +||tma.co.jp +||tracfone.com +||tryheart.jp +||turntable.fm +||twerkingbutt.com +||ulop.net +||uukanshu.com +||vegasred.com +||vevo.com +||vip-enterprise.com +|http://viu.tv/ch/ +|http://viu.tv/encore/ +||vmpsoft.com +|http://ecsm.vs.com/ +||wanz-factory.com +||ssl.webpack.de +||wheretowatch.com +||wingamestore.com +||wizcrafts.net +||vod.wwe.com +||xfinity.com +||youwin.com +||ytn.co.kr +||zattoo.com +||zim.vn +||zozotown.com + +!##############General List Start############### +!-------------------Pure IP--------------------- +14.102.250.18 +14.102.250.19 +50.7.31.230:8898 +174.142.105.153 +69.65.19.160 + +!----------------------IDN---------------------- +||xn--4gq171p.com +||xn--czq75pvv1aj5c.org +||xn--i2ru8q2qg.com +||xn--oiq.cc +||xn--p8j9a0d9c9a.xn--q9jyb4c + +!-----------------DNS Poisoning----------------- +!---Amazon--- +!-||cdn-images.mailchimp.com +||abebooks.com +|https://*.s3.amazonaws.com +||s3-ap-southeast-2.amazonaws.com + +||43110.cf +||9gag.com +||agro.hk +||share.america.gov +||apkmirror.com +||arte.tv +||artstation.com +||bangdream.space +||behance.net +||bird.so +||zh.bitterwinter.org +||bnn.co +||businessinsider.com +||boomssr.com +||bwgyhw.com +||castbox.fm +||chinatimes.com +||clyp.it +||cmcn.org +||cmx.im +||dailyview.tw +||daum.net +||depositphotos.com +||disconnect.me +||documentingreality.com +||doubibackup.com +||doubmirror.cf +||encyclopedia.com +||fangeqiang.com +||fanqiangdang.com +||feedly.com +||feedx.net +||flyzy2005.com +||foreignpolicy.com +||free-ss.site +||freehongkong.org +||blog.fuckgfw233.org +||g0v.social +||globalvoices.org +||glorystar.me +||goregrish.com +||guangnianvpn.com +||hanime.tv +||hbo.com +||spaces.hightail.com +||hkgalden.com +||hkgolden.com +||hudson.org +||ipfs.io +||japantimes.co.jp +||jiji.com +||jintian.net +||jinx.com +||joinmastodon.org +||liangzhichuanmei.com +||lighti.me +||lightyearvpn.com +||lihkg.com +||line-scdn.net +||i.lithium.com +||cloud.mail.ru +||cdn-images.mailchimp.com +||mastodon.cloud +||mastodon.host +||mastodon.social +||matters.news +||me.me +||metart.com +||mohu.club +||mohu.ml +||motiyun.com +||msa-it.org +||dictionary.goo.ne.jp +||go.nesnode.com +||international-news.newsmagazine.asia +||nikkei.com +||nitter.net +||niu.moe +||nofile.io +||now.com +||sukebei.nyaa.si +||openvpn.org +||onejav.com +||paste.ee +||my.pcloud.com +||picacomic.com +||pincong.rocks +||pixiv.net +||potato.im +||premproxy.com +||prism-break.org +||protonvpn.com +||api.pureapk.com +||quora.com +||quoracdn.net +||qz.com +||cdn.seatguru.com +||secure.raxcdn.com +||redd.it +||reddit.com +.redditlist.com +|http://redditlist.com +||redditmedia.com +||redditstatic.com +||rixcloud.com +||rixcloud.us +||rsdlmonitor.com +||shadowsocks.be +||shadowsocks9.com +||tn1.shemalez.com +||tn2.shemalez.com +||tn3.shemalez.com +||static.shemalez.com +||six-degrees.io +||softfamous.com +||softsmirror.cf +||sosreader.com +||sspanel.net +||sulian.me +||supchina.com +||teddysun.com +||textnow.me +||tineye.com +||top10vpn.com +||tubepornclassic.com +||uku.im +||unseen.is +||cn.uptodown.com +||uraban.me +||vrsmash.com +||vultryhw.com +||scache.vzw.com +||scache1.vzw.com +||scache2.vzw.com +||ss7.vzw.com +||ssr.tools +||steemit.com +||taiwanjustice.net +||tinc-vpn.org +||u15.info +||washingtonpost.com +||wenzhao.ca +||whatsonweibo.com +||wire.com +||blog.workflow.is +||xm.com +||xuehua.us +||yes-news.com +||yigeni.com +||you-get.org +||zzcloud.me + +!---Digital Currency Exchange(CRYPTO)--- +||aex.com +||allcoin.com +||adcex.com +||bcex.ca +||bibox.com +||big.one +||binance.com +||bit-z.com +||bitcoinworld.com +||bitfinex.com +||bithumb.com +||bitinka.com.ar +||bitmex.com +||btc98.com +||btcbank.bank +||btctrade.im +||c2cx.com +||chaoex.com +||cobinhood.com +||coin2co.in +||coinbene.com +.coinegg.com +||coinegg.com +||coinex.com +!--|https://www.coinexchange.io/ +||coingi.com +||coinrail.co.kr +||cointiger.com +||cointobe.com +||coinut.com +||discoins.com +||dragonex.io +||ebtcbank.com +||etherdelta.com +||exmo.com +||exrates.me +||exx.com +||fatbtc.com +||gate.io +||gatecoin.com +||hbg.com +||hitbtc.com +||huobi.com +||huobi.pro +||huobipro.com +||bx.in.th +||jex.com +||kex.com +||kspcoin.com +||kucoin.com +||lbank.info +||livecoin.net +||localbitcoins.com +||mercatox.com +||oex.com +||okex.com +||otcbtc.com +||rightbtc.com +||topbtc.com +||xbtce.com +||yobit.net +||zb.com + +!----------------Frauds & Scams----------------- +!!---Content Farm(fake 500 error)--- +||read01.com +||kknews.cc + +china-mmm.jp.net +.lsxszzg.com +.china-mmm.net +||china-mmm.net +china-mmm.sa.com + +!---------------------Groups-------------------- +!!---Afraid FreeDNS--- +.allowed.org +.now.im + +!!---Amazon--- +||amazon.co.jp +.amazon.com/Dalai-Lama +amazon.com/Prisoner-State-Secret-Journal-Premier +s3-ap-northeast-1.amazonaws.com + +!!---AOL--- +||aolchannels.aol.com +video.aol.ca/video-detail +video.aol.co.uk/video-detail +video.aol.com +||video.aol.com +||search.aol.com +www.aolnews.com + +!!---AvMoo--- +.avmo.pw +!--|http://avmo.pw +.avmoo.com +|http://avmoo.com +.avmoo.net +|http://avmoo.net +||avmoo.pw +.javmoo.xyz +|http://javmoo.xyz +.javtag.com +|http://javtag.com +.javzoo.com +|http://javzoo.com +.tellme.pw + +!!---BBC--- +!--.bbc.co.uk/blogs +!--.bbc.co.uk/chinese +!--.bbc.co.uk/news/world-asia-china +!--.bbc.co.uk/tv +!--.bbc.co.uk/zhongwen +!--.bbc.com/ukchina +!--.bbc.com/zhongwen +!--.bbc.com%2Fzhongwen +!--news.bbc.co.uk/onthisday*newsid_2496000/2496277 +!--newsforums.bbc.co.uk +.bbc.com +||bbc.com +.bbc.co.uk +||bbc.co.uk +||bbci.co.uk +.bbcchinese.com +||bbcchinese.com +|http://bbc.in + +!!---ChangeIP--- +.1dumb.com +.25u.com +.2waky.com +.3-a.net +.4dq.com +.4mydomain.com +.4pu.com +.acmetoy.com +.almostmy.com +.americanunfinished.com +.authorizeddns.net +.authorizeddns.org +.authorizeddns.us +.bigmoney.biz +.changeip.name +.changeip.net +.changeip.org +.cleansite.biz +.cleansite.info +.cleansite.us +.compress.to +.ddns.info +.ddns.me.uk +.ddns.mobi +.ddns.ms +.ddns.name +.ddns.us +.dhcp.biz +.dns-dns.com +.dns-stuff.com +.dns04.com +.dns05.com +.dns1.us +.dns2.us +.dnset.com +.dnsrd.com +.dsmtp.com +.dumb1.com +.dynamic-dns.net +.dynamicdns.biz +.dynamicdns.co.uk +.dynamicdns.me.uk +.dynamicdns.org.uk +.dyndns.pro +.dynssl.com +.edns.biz +.epac.to +.esmtp.biz +.ezua.com +.faqserv.com +.fartit.com +.freeddns.com +.freetcp.com +.freewww.biz +.freewww.info +.ftp1.biz +.ftpserver.biz +.gettrials.com +.got-game.org +.gr8domain.biz +.gr8name.biz +.https443.net +.https443.org +.ikwb.com +.instanthq.com +.iownyour.biz +.iownyour.org +.isasecret.com +.itemdb.com +.itsaol.com +.jetos.com +.jkub.com +.jungleheart.com +.justdied.com +.lflink.com +.lflinkup.com +.lflinkup.net +.lflinkup.org +.longmusic.com +.mefound.com +.moneyhome.biz +.mrbasic.com +.mrbonus.com +.mrface.com +.mrslove.com +.my03.com +.mydad.info +.myddns.com +.myftp.info +.myftp.name +.mylftv.com +.mymom.info +.mynetav.net +.mynetav.org +.mynumber.org +.mypicture.info +.mypop3.net +.mypop3.org +.mysecondarydns.com +.mywww.biz +.myz.info +.ninth.biz +.ns01.biz +.ns01.info +.ns01.us +.ns02.biz +.ns02.info +.ns02.us +.ns1.name +.ns2.name +.ns3.name +.ocry.com +.onedumb.com +.onmypc.biz +.onmypc.info +.onmypc.net +.onmypc.org +.onmypc.us +.organiccrap.com +.otzo.com +.ourhobby.com +.pcanywhere.net +.port25.biz +.proxydns.com +.qhigh.com +.qpoe.com +.rebatesrule.net +.sellclassics.com +.sendsmtp.com +.serveuser.com +.serveusers.com +.sexidude.com +.sexxxy.biz +.sixth.biz +.squirly.info +.ssl443.org +.toh.info +.toythieves.com +.trickip.net +.trickip.org +.vizvaz.com +.wha.la +.wikaba.com +.www1.biz +.wwwhost.biz +@@|http://xx.wwwhost.biz +.x24hr.com +.xxuz.com +.xxxy.biz +.xxxy.info +.ygto.com +.youdontcare.com +.yourtrap.com +.zyns.com +.zzux.com + +!!---CloudFront--- +d1b183sg0nvnuh.cloudfront.net +|https://d1b183sg0nvnuh.cloudfront.net +d1c37gjwa26taa.cloudfront.net +|https://d1c37gjwa26taa.cloudfront.net +d3c33hcgiwev3.cloudfront.net +|https://d3c33hcgiwev3.cloudfront.net +||d3rhr7kgmtrq1v.cloudfront.net + +!!---DtDNS--- +!###https://www.dtdns.com/dtsite/faq +.3d-game.com +.4irc.com +.b0ne.com +.chatnook.com +.darktech.org +.deaftone.com +.dtdns.net +.effers.com +.etowns.net +.etowns.org +.flnet.org +.gotgeeks.com +.scieron.com +.slyip.com +.slyip.net +.suroot.com + +!!---DynDNS--- +!###https://help.dyn.com/list-of-dyn-dns-pro-remote-access-domain-names/ +.blogdns.org +.dyndns.org +.dyndns-ip.com +.dyndns-pics.com +.from-sd.com +.from-pr.com +.is-a-hunter.com + +!!---Dynu--- +.dynu.com +.dynu.net +.freeddns.org + +!!---Facebook--- +cdninstagram.com +||cdninstagram.com +||facebook.br +.facebook.com +||facebook.com +!--/^https?:\/\/[^\/]+facebook\.com/ +@@||v6.facebook.com +||facebook.design +||connect.facebook.net +||facebook.hu +||facebook.in +||facebook.nl +||facebook.se +||facebookmail.com +||fb.com +||fb.me +||fbcdn.net +||fbsbx.com +||fbaddins.com +||fbworkmail.com +.instagram.com +||instagram.com +||m.me +||messenger.com +||oculus.com +||oculuscdn.com +||rocksdb.org +@@||ip6.static.sl-reverse.com +||thefacebook.com +||whatsapp.com +||whatsapp.net + +!!---FTChinese--- +.ftchinese.com +||ftchinese.com +!--.ftchinese.com/channel/video +!--.ftchinese.com/premium/001081066 +!--.ftchinese.com/story/00102753 +!--.ftchinese.com/story/001026616 +!--.ftchinese.com/story/001026749 +!--.ftchinese.com/story/001026807 +!--.ftchinese.com/story/001026808 +!--.ftchinese.com/story/001026834 +!--.ftchinese.com/story/001026880 +!--.ftchinese.com/story/001027429 +!--.ftchinese.com/story/001030341 +!--.ftchinese.com/story/001030502 +!--.ftchinese.com/story/001030803 +!--.ftchinese.com/story/001031317 +!--.ftchinese.com/story/001032617 +!--.ftchinese.com/story/001032636 +!--.ftchinese.com/story/001032692 +!--.ftchinese.com/story/001032762 +!--.ftchinese.com/story/001033138 +!--.ftchinese.com/story/001034917 +!--.ftchinese.com/story/001034926 +!--.ftchinese.com/story/001034927 +!--.ftchinese.com/story/001034928 +!--.ftchinese.com/story/001034952 +!--.ftchinese.com/story/001035890 +!--.ftchinese.com/story/001035972 +!--.ftchinese.com/story/001035993 +!--.ftchinese.com/story/001036417 +!--.ftchinese.com/story/001037090 +!--.ftchinese.com/story/001037091 +!--.ftchinese.com/story/001038178 +!--.ftchinese.com/story/001038199 +!--.ftchinese.com/story/001038220 +!--.ftchinese.com/story/001038819 +!--.ftchinese.com/story/001038862 +!--.ftchinese.com/story/001039067 +!--.ftchinese.com/story/001039178 +!--.ftchinese.com/story/001039211 +!--.ftchinese.com/story/001039271 +!--.ftchinese.com/story/001039295 +!--.ftchinese.com/story/001039369 +!--.ftchinese.com/story/001039482 +!--.ftchinese.com/story/001039534 +!--.ftchinese.com/story/001039555 +!--.ftchinese.com/story/001039576 +!--.ftchinese.com/story/001039712 +!--.ftchinese.com/story/001039779 +!--.ftchinese.com/story/001039809 +!--.ftchinese.com/story/001040134 +!--.ftchinese.com/story/001040835 +!--.ftchinese.com/story/001040890 +!--.ftchinese.com/story/001040918 +!--.ftchinese.com/story/001040992 +!--.ftchinese.com/story/001041209 +!--.ftchinese.com/story/001042100 +!--.ftchinese.com/story/001042252 +!--.ftchinese.com/story/001042272 +!--.ftchinese.com/story/001042280 +!--.ftchinese.com/story/001043029 +!--.ftchinese.com/story/001043066 +!--.ftchinese.com/story/001043096 +!--.ftchinese.com/story/001043124 +!--.ftchinese.com/story/001043152 +!--.ftchinese.com/story/001043189 +!--.ftchinese.com/story/001043428 +!--.ftchinese.com/story/001043439 +!--.ftchinese.com/story/001043534 +!--.ftchinese.com/story/001043675 +!--.ftchinese.com/story/001043680 +!--.ftchinese.com/story/001043702 +!--.ftchinese.com/story/001043849 +!--.ftchinese.com/story/001044099 +!--.ftchinese.com/story/001044776 +!--.ftchinese.com/story/001044871 +!--.ftchinese.com/story/001044897 +!--.ftchinese.com/story/001045114 +!--.ftchinese.com/story/001045139 +!--.ftchinese.com/story/001045186 +!--.ftchinese.com/story/001045755 +!--.ftchinese.com/story/001046087 +!--.ftchinese.com/story/001046105 +!--.ftchinese.com/story/001046118 +!--.ftchinese.com/story/001046132 +!--.ftchinese.com/story/001046517 +!--.ftchinese.com/story/001046822 +!--.ftchinese.com/story/001046866 +!--.ftchinese.com/story/001046942 +!--.ftchinese.com/story/001047180 +!--.ftchinese.com/story/001047206 +!--.ftchinese.com/story/001047304 +!--.ftchinese.com/story/001047317 +!--.ftchinese.com/story/001047345 +!--.ftchinese.com/story/001047358 +!--.ftchinese.com/story/001047375 +!--.ftchinese.com/story/001047381 +!--.ftchinese.com/story/001047413 +!--.ftchinese.com/story/001047456 +!--.ftchinese.com/story/001047491 +!--.ftchinese.com/story/001047545 +!--.ftchinese.com/story/001047558 +!--.ftchinese.com/story/001047568 +!--.ftchinese.com/story/001047627 +!--.ftchinese.com/story/001048293 +!--.ftchinese.com/story/001048343 +!--.ftchinese.com/story/001048710 +!--.ftchinese.com/story/001049289 +!--.ftchinese.com/story/001049360 +!--.ftchinese.com/story/001049896 +!--.ftchinese.com/story/001050152 +!--.ftchinese.com/story/001051027 +!--.ftchinese.com/story/001051161 +!--.ftchinese.com/story/001051372 +!--.ftchinese.com/story/001051479 +!--.ftchinese.com/story/001052138 +!--.ftchinese.com/story/001052161 +!--.ftchinese.com/story/001052525 +!--.ftchinese.com/story/001052549 +!--.ftchinese.com/story/001052701 +!--.ftchinese.com/story/001052965 +!--.ftchinese.com/story/001053149 +!--.ftchinese.com/story/001053150 +!--.ftchinese.com/story/001053200 +!--.ftchinese.com/story/001053425 +!--.ftchinese.com/story/001053496 +!--.ftchinese.com/story/001053526 +!--.ftchinese.com/story/001053557 +!--.ftchinese.com/story/001053906 +!--.ftchinese.com/story/001054049 +!--.ftchinese.com/story/001054103 +!--.ftchinese.com/story/001054109 +!--.ftchinese.com/story/001054119 +!--.ftchinese.com/story/001054123 +!--.ftchinese.com/story/001054139 +!--.ftchinese.com/story/001054166 +!--.ftchinese.com/story/001054168 +!--.ftchinese.com/story/001054190 +!--.ftchinese.com/story/001054437 +!--.ftchinese.com/story/001054526 +!--.ftchinese.com/story/001054607 +!--.ftchinese.com/story/001054644 +!--.ftchinese.com/story/001054786 +!--.ftchinese.com/story/001054843 +!--.ftchinese.com/story/001054925 +!--.ftchinese.com/story/001054940 +!--.ftchinese.com/story/001055051 +!--.ftchinese.com/story/001055063 +!--.ftchinese.com/story/001055069 +!--.ftchinese.com/story/001055136 +!--.ftchinese.com/story/001055170 +!--.ftchinese.com/story/001055202 +!--.ftchinese.com/story/001055242 +!--.ftchinese.com/story/001055263 +!--.ftchinese.com/story/001055274 +!--.ftchinese.com/story/001055299 +!--.ftchinese.com/story/001055480 +!--.ftchinese.com/story/001055551 +!--.ftchinese.com/story/001055559 +!--.ftchinese.com/story/001055566 +!--.ftchinese.com/story/001055840 +!--.ftchinese.com/story/001056099 +!--.ftchinese.com/story/001056108 +!--.ftchinese.com/story/001056131 +!--.ftchinese.com/story/001056375 +!--.ftchinese.com/story/001056491 +!--.ftchinese.com/story/001056529 +!--.ftchinese.com/story/001056534 +!--.ftchinese.com/story/001056538 +!--.ftchinese.com/story/001056541 +!--.ftchinese.com/story/001056554 +!--.ftchinese.com/story/001056557 +!--.ftchinese.com/story/001056560 +!--.ftchinese.com/story/001056567 +!--.ftchinese.com/story/001056574 +!--.ftchinese.com/story/001056588 +!--.ftchinese.com/story/001056594 +!--.ftchinese.com/story/001056596 +!--.ftchinese.com/story/001056684 +!--.ftchinese.com/story/001056832 +!--.ftchinese.com/story/001056833 +!--.ftchinese.com/story/001056851 +!--.ftchinese.com/story/001056874 +!--.ftchinese.com/story/001056896 +!--.ftchinese.com/story/001056927 +!--.ftchinese.com/story/001057011 +!--.ftchinese.com/story/001057018 +!--.ftchinese.com/story/001057044 +!--.ftchinese.com/story/001057162 +!--.ftchinese.com/story/001057500 +!--.ftchinese.com/story/001057504 +!--.ftchinese.com/story/001057509 +!--.ftchinese.com/story/001057518 +!--.ftchinese.com/story/001057532 +!--.ftchinese.com/story/001057533 +!--.ftchinese.com/story/001057556 +!--.ftchinese.com/story/001057580 +!--.ftchinese.com/story/001057638 +!--.ftchinese.com/story/001057644 +!--.ftchinese.com/story/001057817 +!--.ftchinese.com/story/001057875 +!--.ftchinese.com/story/001058009 +!--.ftchinese.com/story/001058056 +!--.ftchinese.com/story/001058224 +!--.ftchinese.com/story/001058257 +!--.ftchinese.com/story/001058295 +!--.ftchinese.com/story/001058328 +!--.ftchinese.com/story/001058339 +!--.ftchinese.com/story/001058344 +!--.ftchinese.com/story/001058352 +!--.ftchinese.com/story/001058413 +!--.ftchinese.com/story/001058421 +!--.ftchinese.com/story/001058440 +!--.ftchinese.com/story/001058458 +!--.ftchinese.com/story/001058468 +!--.ftchinese.com/story/001058561 +!--.ftchinese.com/story/001058566 +!--.ftchinese.com/story/001058567 +!--.ftchinese.com/story/001058585 +!--.ftchinese.com/story/001058628 +!--.ftchinese.com/story/001058656 +!--.ftchinese.com/story/001058665 +!--.ftchinese.com/story/001058678 +!--.ftchinese.com/story/001058691 +!--.ftchinese.com/story/001058721 +!--.ftchinese.com/story/001058728 +!--.ftchinese.com/story/001059464 +!--.ftchinese.com/story/001059484 +!--.ftchinese.com/story/001059537 +!--.ftchinese.com/story/001059538 +!--.ftchinese.com/story/001059551 +!--.ftchinese.com/story/001059818 +!--.ftchinese.com/story/001059914 +!--.ftchinese.com/story/001059920 +!--.ftchinese.com/story/001059957 +!--.ftchinese.com/story/001060088 +!--.ftchinese.com/story/001060156 +!--.ftchinese.com/story/001060157 +!--.ftchinese.com/story/001060160 +!--.ftchinese.com/story/001060181 +!--.ftchinese.com/story/001060185 +!--.ftchinese.com/story/001060493 +!--.ftchinese.com/story/001060495 +!--.ftchinese.com/story/001060590 +!--.ftchinese.com/story/001060846 +!--.ftchinese.com/story/001060847 +!--.ftchinese.com/story/001060875 +!--.ftchinese.com/story/001060921 +!--.ftchinese.com/story/001060946 +!--.ftchinese.com/story/001061120 +!--.ftchinese.com/story/001061474 +!--.ftchinese.com/story/001061524 +!--.ftchinese.com/story/001061642 +!--.ftchinese.com/story/001062017 +!--.ftchinese.com/story/001062020 +!--.ftchinese.com/story/001062028 +!--.ftchinese.com/story/001062092 +!--.ftchinese.com/story/001062096 +!--.ftchinese.com/story/001062147 +!--.ftchinese.com/story/001062176 +!--.ftchinese.com/story/001062188 +!--.ftchinese.com/story/001062254 +!--.ftchinese.com/story/001062374 +!--.ftchinese.com/story/001062482 +!--.ftchinese.com/story/001062496 +!--.ftchinese.com/story/001062501 +!--.ftchinese.com/story/001062508 +!--.ftchinese.com/story/001062519 +!--.ftchinese.com/story/001062554 +!--.ftchinese.com/story/001062741 +!--.ftchinese.com/story/001062794 +!--.ftchinese.com/story/001063160 +!--.ftchinese.com/story/001063359 +!--.ftchinese.com/story/001063512 +!--.ftchinese.com/story/001063668 +!--.ftchinese.com/story/001063692 +!--.ftchinese.com/story/001063763 +!--.ftchinese.com/story/001063764 +!--.ftchinese.com/story/001063826 +!--.ftchinese.com/story/001064127 +!--.ftchinese.com/story/001064312 +!--.ftchinese.com/story/001064705 +!--.ftchinese.com/story/001064807 +!--.ftchinese.com/story/001065120 +!--.ftchinese.com/story/001065168 +!--.ftchinese.com/story/001065249 +!--.ftchinese.com/story/001065287 +!--.ftchinese.com/story/001065335 +!--.ftchinese.com/story/001065337 +!--.ftchinese.com/story/001065541 +!--.ftchinese.com/story/001065715 +!--.ftchinese.com/story/001065735 +!--.ftchinese.com/story/001065756 +!--.ftchinese.com/story/001065802 +!--.ftchinese.com/story/001066112 +!--.ftchinese.com/story/001066136 +!--.ftchinese.com/story/001066140 +!--.ftchinese.com/story/001066465 +!--.ftchinese.com/story/001066881 +!--.ftchinese.com/story/001066950 +!--.ftchinese.com/story/001066959 +!--.ftchinese.com/story/001067435 +!--www.ftchinese.com/story/001067479 +!--.ftchinese.com/story/001067528 +!--.ftchinese.com/story/001067545 +!--.ftchinese.com/story/001067572 +!--.ftchinese.com/story/001067648 +!--.ftchinese.com/story/001067650 +!--.ftchinese.com/story/001067680 +!--.ftchinese.com/story/001067692 +!--.ftchinese.com/story/001067871 +!--.ftchinese.com/story/001067923 +!--.ftchinese.com/story/001068062 +!--.ftchinese.com/story/001068248 +!--.ftchinese.com/story/001068278 +!--.ftchinese.com/story/001068379 +!--.ftchinese.com/story/001068483 +!--.ftchinese.com/story/001068506 +!--.ftchinese.com/story/001068547 +!--.ftchinese.com/story/001068616 +!--.ftchinese.com/story/001068622 +!--.ftchinese.com/story/001068707 +!--.ftchinese.com/story/001069146 +!--.ftchinese.com/story/001069373 +!--.ftchinese.com/story/001069516 +!--.ftchinese.com/story/001069517 +!--.ftchinese.com/story/001069687 +!--.ftchinese.com/story/001069741 +!--.ftchinese.com/story/001069861 +!--.ftchinese.com/story/001069952 +!--.ftchinese.com/story/001070053 +!--.ftchinese.com/story/001070177 +!--.ftchinese.com/story/001070307 +!--.ftchinese.com/story/001070809 +!--.ftchinese.com/story/001070990 +!--.ftchinese.com/story/001071042 +!--.ftchinese.com/story/001071044 +!--.ftchinese.com/story/001071106 +!--.ftchinese.com/story/001071166 +!--.ftchinese.com/story/001071181 +!--ftchinese.com/story/001071200 +!--.ftchinese.com/story/001071208 +!--.ftchinese.com/story/001071238 +!--.ftchinese.com/story/001071683 +!--.ftchinese.com/story/001072271 +!--.ftchinese.com/story/001072348 +!--.ftchinese.com/story/001072677 +!--.ftchinese.com/story/001072726 +!--.ftchinese.com/story/001072794 +!--.ftchinese.com/story/001072853 +!--.ftchinese.com/story/001072895 +!--.ftchinese.com/story/001072993 +!--.ftchinese.com/story/001073043 +!--.ftchinese.com/story/001073103 +!--.ftchinese.com/story/001073157 +!--.ftchinese.com/story/001073216 +!--.ftchinese.com/story/001073246 +!--.ftchinese.com/story/001073305 +!--.ftchinese.com/story/001073307 +!--.ftchinese.com/story/001073408 +!--.ftchinese.com/story/001073537 +!--.ftchinese.com/story/001073672 +!--.ftchinese.com/story/001073849 +!--.ftchinese.com/story/001073906 +!--.ftchinese.com/story/001074089 +!--.ftchinese.com/story/001074110 +!--.ftchinese.com/story/001074128 +!--.ftchinese.com/story/001074157 +!--.ftchinese.com/story/001074246 +!--.ftchinese.com/story/001074307 +!--.ftchinese.com/story/001074347 +!--.ftchinese.com/story/001074423 +!--.ftchinese.com/story/001074454 +!--.ftchinese.com/story/001074467 +!--.ftchinese.com/story/001074493 +!--.ftchinese.com/story/001074550 +!--.ftchinese.com/story/001074562 +!--.ftchinese.com/story/001074653 +!--.ftchinese.com/story/001074693 +!--.ftchinese.com/story/001074699 +!--.ftchinese.com/story/001074712 +!--.ftchinese.com/story/001074713 +!--.ftchinese.com/story/001074768 +!--.ftchinese.com/story/001074782 +!--.ftchinese.com/story/001074794 +!--.ftchinese.com/story/001074822 +!--.ftchinese.com/story/001074874 +!--.ftchinese.com/story/001074891 +!--.ftchinese.com/story/001074918 +!--.ftchinese.com/story/001075081 +!--.ftchinese.com/story/001075134 +!--.ftchinese.com/story/001075142 +!--.ftchinese.com/story/001075216 +!--.ftchinese.com/story/001075230 +!--.ftchinese.com/story/001075238 +!--.ftchinese.com/story/001075262 +!--.ftchinese.com/story/001075269 +!--.ftchinese.com/story/001075491 +!--.ftchinese.com/story/001075500 +!--.ftchinese.com/story/001075650 +!--.ftchinese.com/story/001075678 +!--.ftchinese.com/story/001075703 +!--.ftchinese.com/story/001075739 +!--.ftchinese.com/story/001076066 +!--.ftchinese.com/story/001076142 +!--.ftchinese.com/story/001076459 +!--.ftchinese.com/story/001076470 +!--.ftchinese.com/story/001076538 +!--.ftchinese.com/story/001076573 +!--.ftchinese.com/story/001076901 +!--.ftchinese.com/story/001077067 +!--.ftchinese.com/story/001077084 +!--.ftchinese.com/story/001077235 +!--.ftchinese.com/story/001077344 +!--.ftchinese.com/story/001077390 +!--.ftchinese.com/story/001077392 +!--.ftchinese.com/story/001077465 +!--.ftchinese.com/story/001077468 +!--.ftchinese.com/story/001077492 +!--.ftchinese.com/story/001077745 +!--.ftchinese.com/story/001077768 +!--.ftchinese.com/story/001077804 +!--.ftchinese.com/story/001077852 +!--.ftchinese.com/story/001078646 +!--.ftchinese.com/story/001078928 +!--.ftchinese.com/story/001078967 +!--.ftchinese.com/story/001079559 +!--.ftchinese.com/story/001079641 +!--.ftchinese.com/story/001079909 +!--.ftchinese.com/story/001079934 +!--.ftchinese.com/story/001079992 +!--.ftchinese.com/story/001080054 +!--.ftchinese.com/story/001080109 +!--.ftchinese.com/story/001080169 +!--.ftchinese.com/story/001080226 +!--.ftchinese.com/story/001080429 +!--.ftchinese.com/story/001080471 +!--.ftchinese.com/story/001080550 +!--.ftchinese.com/story/001080581 +!--.ftchinese.com/story/001080647 +!--.ftchinese.com/story/001080778 +!--.ftchinese.com/story/001080892 +!--.ftchinese.com/story/001080915 +!--.ftchinese.com/story/001080935 +!--.ftchinese.com/story/001081059 +!--.ftchinese.com/story/001081127 +!--.ftchinese.com/tag/%E5%8D%81%E5%85%AB%E5%B1%8A%E4%B8%89%E4%B8%AD%E5%85%A8%E4%BC%9A +!--.ftchinese.com/tag/%E6%B8%A9%E5%AE%B6%E5%AE%9D +!--.ftchinese.com/tag/%E8%96%84%E7%86%99%E6%9D%A5 +!--.ftchinese.com/video/1437 +!--.ftchinese.com/video/1882 +!--.ftchinese.com/video/2446 +!--.ftchinese.com/video/2601 +!--.ftchinese.com/comments + +!!---Google--- +!###https://www.google.com/supported_domains### +!...GFWList doesn't intend to support typosquatting... +||1e100.net +||466453.com +||abc.xyz +||about.google +||admob.com +||adsense.com +||agoogleaday.com +||ai.google +||ampproject.org +@@|https://www.ampproject.org +@@|https://cdn.ampproject.org +||android.com +||androidify.com +||androidtv.com +||api.ai +.appspot.com +||appspot.com +||autodraw.com +||blog.google +||blogblog.com +blogspot.com +/^https?:\/\/[^\/]+blogspot\.(.*)/ +.blogspot.hk +.blogspot.jp +.blogspot.tw +!--||capitalg.com +||certificate-transparency.org +||chrome.com +||chromecast.com +||chromeexperiments.com +||chromercise.com +||chromestatus.com +||chromium.org +||com.google +||crbug.com +||creativelab5.com +||crisisresponse.google +||crrev.com +||data-vocabulary.org +||debug.com +||deepmind.com +||deja.com +||design.google +||digisfera.com +||dns.google +||domains.google +||duck.com +||environment.google +||feedburner.com +||firebaseio.com +||g.co +||gcr.io +||get.app +||get.dev +||get.how +||get.page +||getmdl.io +||getoutline.org +||ggpht.com +||gmail.com +||gmodules.com +||godoc.org +||golang.org +||goo.gl +.google.ae +.google.as +.google.am +.google.at +.google.az +.google.ba +.google.be +.google.bg +.google.ca +.google.cd +.google.ci +.google.co.id +.google.co.jp +.google.co.kr +.google.co.ma +.google.co.uk +.google.com +.google.de +||google.dev +.google.dj +.google.dk +.google.es +.google.fi +.google.fm +.google.fr +.google.gg +.google.gl +.google.gr +.google.ie +.google.is +.google.it +.google.jo +.google.kz +.google.lv +.google.mn +.google.ms +.google.nl +.google.nu +.google.no +.google.ro +.google.ru +.google.rw +.google.sc +.google.sh +.google.sk +.google.sm +.google.sn +.google.tk +.google.tm +.google.to +.google.tt +.google.vu +.google.ws +/^https?:\/\/([^\/]+\.)*google\.(ac|ad|ae|af|al|am|as|at|az|ba|be|bf|bg|bi|bj|bs|bt|by|ca|cat|cd|cf|cg|ch|ci|cl|cm|co.ao|co.bw|co.ck|co.cr|co.id|co.il|co.in|co.jp|co.ke|co.kr|co.ls|co.ma|com|com.af|com.ag|com.ai|com.ar|com.au|com.bd|com.bh|com.bn|com.bo|com.br|com.bz|com.co|com.cu|com.cy|com.do|com.ec|com.eg|com.et|com.fj|com.gh|com.gi|com.gt|com.hk|com.jm|com.kh|com.kw|com.lb|com.ly|com.mm|com.mt|com.mx|com.my|com.na|com.nf|com.ng|com.ni|com.np|com.om|com.pa|com.pe|com.pg|com.ph|com.pk|com.pr|com.py|com.qa|com.sa|com.sb|com.sg|com.sl|com.sv|com.tj|com.tr|com.tw|com.ua|com.uy|com.vc|com.vn|co.mz|co.nz|co.th|co.tz|co.ug|co.uk|co.uz|co.ve|co.vi|co.za|co.zm|co.zw|cv|cz|de|dj|dk|dm|dz|ee|es|eu|fi|fm|fr|ga|ge|gg|gl|gm|gp|gr|gy|hk|hn|hr|ht|hu|ie|im|iq|is|it|it.ao|je|jo|kg|ki|kz|la|li|lk|lt|lu|lv|md|me|mg|mk|ml|mn|ms|mu|mv|mw|mx|ne|nl|no|nr|nu|org|pl|pn|ps|pt|ro|rs|ru|rw|sc|se|sh|si|sk|sm|sn|so|sr|st|td|tg|tk|tl|tm|tn|to|tt|us|vg|vn|vu|ws)\/.*/ +!--||google-analytics.com +!--||googleadservices.com +||googleapis.cn +||googleapis.com +||googleapps.com +||googleartproject.com +||googleblog.com +||googlebot.com +!--||googlecapital.com +||googlechinawebmaster.com +||googlecode.com +||googlecommerce.com +||googledomains.com +||googlearth.com +||googleearth.com +||googledrive.com +||googlegroups.com +||googlehosted.com +||googleideas.com +||googleinsidesearch.com +||googlelabs.com +||googlemail.com +||googlemashups.com +||googlepagecreator.com +||googleplay.com +||googleplus.com +||googlescholar.com +||googlesource.com +!--||googlesyndication.com +!--||googletagmanager.com +!--||googletagservices.com +||googleusercontent.com +.googlevideo.com +||googlevideo.com +||googleweblight.com +||googlezip.net +||groups.google.cn +||grow.google +||gstatic.com +!--||gv.com +||gvt0.com +||gvt1.com +@@||redirector.gvt1.com +||gvt3.com +||gwtproject.org +||html5rocks.com +||iam.soy +||igoogle.com +||itasoftware.com +||lers.google +||like.com +||madewithcode.com +||material.io +||nic.google +||on2.com +||opensource.google +||panoramio.com +||picasaweb.com +||pki.goog +||plus.codes +||polymer-project.org +||pride.google +||questvisual.com +||admin.recaptcha.net +||api.recaptcha.net +||api-secure.recaptcha.net +||api-verify.recaptcha.net +||redhotlabs.com +||registry.google +||safety.google +||savethedate.foo +||schema.org +||shattered.io +|http://sipml5.org/ +||stories.google +||sustainability.google +||synergyse.com +||teachparentstech.org +||tensorflow.org +||tfhub.dev +||thinkwithgoogle.com +||tiltbrush.com +||urchin.com +!--||www.google +||waveprotocol.org +||waymo.com +||web.dev +||webmproject.org +||webrtc.org +||whatbrowser.org +||widevine.com +||withgoogle.com +||withyoutube.com +||x.company +||xn--ngstr-lra8j.com +||youtu.be +.youtube.com +||youtube.com +||youtube-nocookie.com +||youtubeeducation.com +||youtubegaming.com +||yt.be +||ytimg.com +||zynamics.com + +!!---KickASS--- +!--OFFICIAL URL list at: https://kastatus.com + +!!---NaughtyAmerica--- +||naughtyamerica.com + +!!---NYTimes--- +!--||d1f1eryiqyjs0r.cloudfront.net +!--||d3lar09xbwlsge.cloudfront.net +!--||d3q1qj9jzsu8nw.cloudfront.net +!--||dc8xl0ndzn2cb.cloudfront.net +!--||a1.nyt.com +!--||int.nyt.com +!--||s1.nyt.com +static01.nyt.com +!--||static01.nyt.com +!--||typeface.nyt.com +||nyt.com +nytchina.com +nytcn.me +||nytcn.me +||nytco.com +|http://nyti.ms/ +.nytimes.com +||nytimes.com +||nytimg.com +userapi.nytlog.com +cn.nytstyle.com +||nytstyle.com + +!!---Steam--- +.steamcommunity.com +||steamcommunity.com +!--steamcommunity.com/profiles/76561198062771609 +!--steamcommunity.com/groups/LibetTibet +!--steamcommunity.com/groups/zhonggong +!--steamcommunity.com/id/CJT_Jackton +|http://store.steampowered.com/app/333600 + +!!---Telegram--- +!!!---Domain--- +||t.me +||updates.tdesktop.com +||telegram.dog +||telegram.me +||telegram.org +.telegramdownload.com +||telesco.pe +!!!---IP--- + +!!---Twitch--- +||jtvnw.net +||ttvnw.net +||twitch.tv +||twitchcdn.net + +!!---Twitter--- +||periscope.tv +.pscp.tv +||pscp.tv +.t.co +||t.co +.tweetdeck.com +||tweetdeck.com +||twimg.com +.twitpic.com +||twitpic.com +.twitter.com +||twitter.com +||twitter.jp +||vine.co + +!!---Taiwan--- +||gov.taipei +.gov.tw +|https://aiss.anws.gov.tw +||archives.gov.tw +||tacc.cwb.gov.tw +||data.gov.tw +||epa.gov.tw +||fa.gov.tw +||fda.gov.tw +||hpa.gov.tw +||immigration.gov.tw +||itaiwan.gov.tw +||mjib.gov.tw +||moeaic.gov.tw +||mofa.gov.tw +||mol.gov.tw +||mvdis.gov.tw +||nat.gov.tw +||nhi.gov.tw +||npa.gov.tw +||nsc.gov.tw +||ntbk.gov.tw +||ntbna.gov.tw +||ntbt.gov.tw +||ntsna.gov.tw +||pcc.gov.tw +||stat.gov.tw +||taipei.gov.tw +||taiwanjobs.gov.tw +||thb.gov.tw +||tipo.gov.tw +||wda.gov.tw + +||teco-hk.org +||teco-mo.org + +@@||aftygh.gov.tw +@@||aide.gov.tw +@@||tpde.aide.gov.tw +@@||arte.gov.tw +@@||chukuang.gov.tw +@@||cwb.gov.tw +@@||cycab.gov.tw +@@||dbnsa.gov.tw +@@||df.gov.tw +@@||eastcoast-nsa.gov.tw +@@||erv-nsa.gov.tw +@@||grb.gov.tw +@@||gysd.nyc.gov.tw +@@||hchcc.gov.tw +@@||hsinchu-cc.gov.tw +@@||iner.gov.tw +@@||klsio.gov.tw +@@||kmseh.gov.tw +@@||lungtanhr.gov.tw +@@||maolin-nsa.gov.tw +@@||matsu-news.gov.tw +@@||matsu-nsa.gov.tw +@@||matsucc.gov.tw +@@||moe.gov.tw +@@||mvdis.gov.tw +@@||nankan.gov.tw +@@||ncree.gov.tw +@@||necoast-nsa.gov.tw +@@||siraya-nsa.gov.tw +@@||cromotc.nat.gov.tw +@@||tax.nat.gov.tw +@@||necoast-nsa.gov.tw +@@||ner.gov.tw +@@||nmmba.gov.tw +@@||nmp.gov.tw +@@||nmvttc.gov.tw +@@||northguan-nsa.gov.tw +@@||npm.gov.tw +@@||nstm.gov.tw +@@||ntdmh.gov.tw +@@||ntl.gov.tw +@@||ntsec.gov.tw +@@||ntuh.gov.tw +@@||nvri.gov.tw +@@||penghu-nsa.gov.tw +@@||post.gov.tw +@@||siraya-nsa.gov.tw +@@||stdtime.gov.tw +@@||sunmoonlake.gov.tw +@@||taitung-house.gov.tw +@@||taoyuan.gov.tw +@@||tphcc.gov.tw +@@||trimt-nsa.gov.tw +@@||vghtpe.gov.tw +@@||vghks.gov.tw +@@||vghtc.gov.tw +@@||wanfang.gov.tw +@@||yatsen.gov.tw +@@||yda.gov.tw + +!--@@||4pppc.gov.tw +!--@@||921.gov.tw +!--@@||dmtip.gov.tw +!--@@||etraining.gov.tw +!--@@||gsn-cert.nat.gov.tw +!--@@||nici.nat.gov.tw +!--@@||hcc.gov.tw +!--@@||hengchuen.gov.tw +!--@@||khcc.gov.tw +!--@@||khms.gov.tw +!--@@||kk.gov.tw +!--@@||klccab.gov.tw +!--@@||klra.gov.tw +!--@@||nmh.gov.tw +!--@@||nmtl.gov.tw +!--@@||pabp.gov.tw +!--@@||pet.gov.tw +!--@@||tchb.gov.tw +!--@@||tcsac.gov.tw +!--@@||tncsec.gov.tw +||kinmen.org.tw + +!!---V2EX--- +.v2ex.com +!--Included in above rule: dns.v2ex.com +@@|http://v2ex.com +@@|http://cdn.v2ex.com +@@|http://cn.v2ex.com +@@|http://hk.v2ex.com +@@|http://i.v2ex.com +@@|http://lax.v2ex.com +@@|http://neue.v2ex.com +@@|http://pagespeed.v2ex.com +@@|http://static.v2ex.com +@@|http://workspace.v2ex.com +@@|http://www.v2ex.com + +!!---Yahoo--- +||data.flurry.com +page.bid.yahoo.com +tw.bid.yahoo.com +|https://tw.bid.yahoo.com +blogs.yahoo.co.jp +||search.yahoo.co.jp +buy.yahoo.com.tw/gdsale +hk.yahoo.com +hk.knowledge.yahoo.com +tw.money.yahoo.com +hk.myblog.yahoo.com +news.yahoo.com/china-blocks-bbc +||hk.news.yahoo.com +hk.rd.yahoo.com +hk.search.yahoo.com/search +hk.video.news.yahoo.com/video +meme.yahoo.com +!--tw.yahoo.com +tw.answers.yahoo.com +|https://tw.answers.yahoo.com +||tw.knowledge.yahoo.com +||tw.mall.yahoo.com +tw.yahoo.com +||tw.mobi.yahoo.com +tw.myblog.yahoo.com +||tw.news.yahoo.com +pulse.yahoo.com +||search.yahoo.com +upcoming.yahoo.com +video.yahoo.com +||yahoo.com.hk +||duckduckgo-owned-server.yahoo.net + +!------------------Numerics--------------------- +.030buy.com +.0rz.tw +|http://0rz.tw +1-apple.com.tw +||1-apple.com.tw +.10.tt +.100ke.org +.1000giri.net +||1000giri.net +.10conditionsoflove.com +||10musume.com +123rf.com +.12bet.com +||12bet.com +.12vpn.com +.12vpn.net +||12vpn.com +||12vpn.net +.138.com +141hongkong.com/forum +||141jj.com +.141tube.com +.1688.com.au +.173ng.com +||173ng.com +.177pic.info +.17t17p.com +||18board.com +||18board.info +18onlygirls.com +.18p2p.com +.18virginsex.com +.1949er.org +zhao.1984.city +||zhao.1984.city +1984bbs.com +||1984bbs.com +!--||1984blog.com +.1984bbs.org +||1984bbs.org +.1991way.com +||1991way.com +.1998cdp.org +.1bao.org +|http://1bao.org +.1eew.com +.1mobile.com +|http://*.1mobile.tw +||1pondo.tv +.2-hand.info +.2000fun.com/bbs +.2008xianzhang.info +||2008xianzhang.info +||2017.hk +21andy.com/blog +.21join.com +.21pron.com +21sextury.com +.228.net.tw +||233abc.com +||24hrs.ca +24smile.org +2lipstube.com +.2shared.com +30boxes.com +.315lz.com +||32red.com +||36rain.com +.3a5a.com +3arabtv.com +.3boys2girls.com +.3proxy.ru +.3ren.ca +.3tui.net +||4bluestones.biz +.4chan.com +!--||4chan.org +.4everproxy.com +||4everproxy.com +||4rbtv.com +||4shared.com +taiwannation.50webs.com +||51.ca +||51jav.org +.51luoben.com +||51luoben.com +.5278.cc +.5299.tv +5aimiku.com +5i01.com +.5isotoi5.org +.5maodang.com +||63i.com +.64museum.org +64tianwang.com +64wiki.com +.66.ca +666kb.com +.6park.com +||6park.com +||6parker.com +||6parknews.com +||7capture.com +.7cow.com +.8-d.com +|http://8-d.com +85cc.net +.85cc.us +|http://85cc.us +|http://85st.com +.881903.com/page/zh-tw/ +||881903.com +.888.com +.888poker.com +89.64.charter.constitutionalism.solutions +89-64.org +||89-64.org +.8news.com.tw +.8z1.net +||8z1.net +.9001700.com +|http://908taiwan.org/ +||91porn.com +||91vps.club +.92ccav.com +.991.com +|http://991.com +.99btgc01.com +||99btgc01.com +.99cn.info +|http://99cn.info +||9bis.com +||9bis.net + +!--------------------AA------------------------- +.tibet.a.se +|http://tibet.a.se +||a-normal-day.com +a5.com.ru +|http://aamacau.com +!--|http://cdn*.abc.com/ +.abc.com +.abc.net.au +||abc.net.au +.abchinese.com +abclite.net +|https://www.abclite.net +.ablwang.com +.aboluowang.com +||aboluowang.com +.aboutgfw.com +.abs.edu +.accim.org +.aceros-de-hispania.com +.acevpn.com +||acevpn.com +.acg18.me +|http://acg18.me +||acgkj.com +.acmedia365.com +.acnw.com.au +actfortibet.org +actimes.com.au +activpn.com +||activpn.com +||aculo.us +||addictedtocoffee.de +.adelaidebbs.com/bbs +.adpl.org.hk +|http://adpl.org.hk +.adult-sex-games.com +||adult-sex-games.com +adultfriendfinder.com +adultkeep.net/peepshow/members/main.htm +||advanscene.com +||advertfan.com +.ae.org +||aenhancers.com +||af.mil +.afantibbs.com +|http://afantibbs.com +.ai-kan.net +||ai-kan.net +ai-wen.net +.aiph.net +||aiph.net +.airasia.com +||airconsole.com +|http://download.aircrack-ng.org +.airvpn.org +||airvpn.org +.aisex.com +||ait.org.tw +aiweiwei.com +.aiweiweiblog.com +||aiweiweiblog.com +||www.ajsands.com + +!!---Akamai--- +a248.e.akamai.net +||a248.e.akamai.net + +rfalive1.akacast.akamaistream.net +voa-11.akacast.akamaistream.net + +!!--403 +||abematv.akamaized.net +||linear-abematv.akamaized.net +||vod-abematv.akamaized.net + +|https://fbcdn*.akamaihd.net/ +!--||fbexternal-a.akamaihd.net +!--||fbstatic-a.akamaihd.net +!--|https://igcdn*.akamaihd.net +rthklive2-lh.akamaihd.net + +.akademiye.org/ug +|http://akademiye.org/ug +||akiba-online.com +||akow.org +.al-islam.com +||al-qimmah.net +||alabout.com +.alanhou.com +|http://alanhou.com +.alarab.qa +||alasbarricadas.org +alexlur.org +||alforattv.net +.alhayat.com +.alicejapan.co.jp +aliengu.com +||alkasir.com +||all4mom.org +||allconnected.co +.alldrawnsex.com +||alldrawnsex.com +.allervpn.com +||allfinegirls.com +.allgirlmassage.com +allgirlsallowed.org +.allgravure.com +alliance.org.hk +.allinfa.com +||allinfa.com +.alljackpotscasino.com +||allmovie.com +||almasdarnews.com +.alphaporno.com +||alternate-tools.com +alternativeto.net/software +alvinalexander.com +alwaysdata.com +||alwaysdata.com +||alwaysdata.net +.alwaysvpn.com +||alwaysvpn.com +||am730.com.hk +ameblo.jp +||ameblo.jp +www1.american.edu/ted/ice/tibet +||americangreencard.com +|http://www.americorps.gov +||amiblockedornot.com +.amigobbs.net +.amitabhafoundation.us +|http://amitabhafoundation.us +.amnesty.org +||amnesty.org +||amnesty.org.hk +.amnesty.tw +.amnestyusa.org +||amnestyusa.org +.amnyemachen.org +.amoiist.com +.amtb-taipei.org +androidplus.co/apk +.andygod.com +|http://andygod.com +annatam.com/chinese +||anchorfree.com +!--GHS +||ancsconf.org +||andfaraway.net +||android-x86.org +angelfire.com/hi/hayashi +||angularjs.org +animecrazy.net +.animeshippuuden.com +aniscartujo.com +||aniscartujo.com +||anobii.com +anonymise.us +.anonymitynetwork.com +.anonymizer.com +.anonymouse.org +||anonymouse.org +anontext.com +.anpopo.com +.answering-islam.org +|http://www.antd.org +||anthonycalzadilla.com +.anti1984.com +antichristendom.com +.antiwave.net +|http://antiwave.net +.anyporn.com +.anysex.com +|http://anysex.com +.ao3.org +||ao3.org +||aobo.com.au +.aofriend.com +|http://aofriend.com +.aofriend.com.au +.aojiao.org +||aomiwang.com +video.ap.org +.apetube.com +||apiary.io +.apigee.com +||apigee.com +||apk-dl.com +||apkcombo.com +.apkmonk.com/app +||apkplz.com +apkpure.com +||apkpure.com +.aplusvpn.com +!--||appannie.com +.appdownloader.net/Android +.appledaily.com +||appledaily.com +appledaily.com.hk +||appledaily.com.hk +appledaily.com.tw +||appledaily.com.tw +.appshopper.com +|http://appshopper.com +||appsocks.net +||appsto.re +.aptoide.com +||aptoide.com +||archives.gov +.archive.fo +||archive.fo +.archive.is +||archive.is +.archive.li +||archive.li +||archive.org +||archive.ph +archive.today +|https://archive.today +||archiveofourown.com +||archiveofourown.org +.arctosia.com +|http://arctosia.com +||areca-backup.org +.arethusa.su +||arethusa.su +||arlingtoncemetery.mil +||army.mil +.art4tibet1998.org +artofpeacefoundation.org +artsy.net +||asacp.org +asdfg.jp/dabr +asg.to +.asia-gaming.com +.asiaharvest.org +||asiaharvest.org +asianews.it +|http://japanfirst.asianfreeforum.com/ +||asiansexdiary.com +||asianwomensfilm.de +.asiatgp.com +.asiatoday.us +||askstudent.com +.askynz.net +||askynz.net +||assembla.com +||astrill.com +||atc.org.au +.atchinese.com +|http://atchinese.com +atgfw.org +.atlaspost.com +||atlaspost.com +||atdmt.com +.atlanta168.com/forum +.atnext.com +||atnext.com +ice.audionow.com +.av.com +||av.movie +.av-e-body.com +avaaz.org +||avaaz.org +!--||avast.com +.avbody.tv +.avcity.tv +.avcool.com +.avdb.in +||avdb.in +.avdb.tv +||avdb.tv +.avfantasy.com +||avg.com +.avgle.com +||avgle.com +||avidemux.org +||avoision.com +.avyahoo.com +||axureformac.com +.azerbaycan.tv +azerimix.com +!--boxun.azurewebsites.net doesn't exist. +boxun*.azurewebsites.net +||boxun*.azurewebsites.net + +!--------------------BB------------------------- +forum.baby-kingdom.com +babynet.com.hk +backchina.com +||backchina.com +.backpackers.com.tw/forum +backtotiananmen.com +.badiucao.com +||badiucao.com +.badjojo.com +badoo.com +|http://*2.bahamut.com.tw +||baidu.jp +.baijie.org +|http://baijie.org +||bailandaily.com +||baixing.me +||bakgeekhome.tk +.banana-vpn.com +||banana-vpn.com +.band.us +.bandwagonhost.com +||bandwagonhost.com +.bangbrosnetwork.com +.bangchen.net +|http://bangchen.net +||bangyoulater.com +bannedbook.org +||bannedbook.org +.bannednews.org +.baramangaonline.com +|http://baramangaonline.com +.barenakedislam.com +||barnabu.co.uk +||barton.de +bartvpn.com +.bastillepost.com +bayvoice.net +||bayvoice.net +dajusha.baywords.com +||bbchat.tv +||bb-chat.tv +.bbg.gov +.bbkz.com/forum +.bbnradio.org +bbs-tw.com +.bbsdigest.com/thread +||bbsfeed.com +bbsland.com +.bbsmo.com +.bbsone.com +bbtoystore.com +.bcast.co.nz +.bcc.com.tw/board +.bcchinese.net +.bcmorning.com +bdsmvideos.net +.beaconevents.com +.bebo.com +||bebo.com +.beevpn.com +||beevpn.com +.behindkink.com +||beijing1989.com +beijingspring.com +||beijingspring.com +.beijingzx.org +|http://beijingzx.org +.belamionline.com +.bell.wiki +|http://bell.wiki +bemywife.cc +beric.me +.berlintwitterwall.com +||berlintwitterwall.com +.berm.co.nz +.bestforchina.org +||bestforchina.org +.bestgore.com +.bestpornstardb.com +||bestvpn.com +.bestvpnanalysis.com +.bestvpnserver.com +.bestvpnservice.com +.bestvpnusa.com +||bet365.com +.betfair.com +||betternet.co +.bettervpn.com +||bettervpn.com +.bettween.com +||bettween.com +||betvictor.com +.bewww.net +.beyondfirewall.com +||bfnn.org +||bfsh.hk +.bgvpn.com +||bgvpn.com +.bianlei.com +@@||bianlei.com +biantailajiao.com +biantailajiao.in +.biblesforamerica.org +|http://biblesforamerica.org +.bic2011.org +bigfools.com +||bigjapanesesex.com +.bignews.org +||bignews.org +.bigsound.org +.biliworld.com +|http://biliworld.com +|http://billypan.com/wiki +.binux.me +ai.binwang.me/couplet +bipic.net +.bit.do +|http://bit.do +.bit.ly +|http://bit.ly +!--||bitbucket.org +||bitcointalk.org +.bitshare.com +||bitshare.com +bitsnoop.com +.bitvise.com +||bitvise.com +bizhat.com +||bl-doujinsouko.com +.bjnewlife.org +.bjs.org +bjzc.org +||bjzc.org +.blacklogic.com +.blackvpn.com +||blackvpn.com +blewpass.com +tor.blingblingsquad.net +.blinkx.com +||blinkx.com +blinw.com +.blip.tv +||blip.tv/ +.blockcn.com +||blockcn.com +||blockless.com +||blog.de +.blog.jp +|http://blog.jp +@@||jpush.cn +.blogcatalog.com +||blogcatalog.com +||blogcity.me +.blogger.com +||blogger.com +blogimg.jp +||blog.kangye.org +.bloglines.com +||bloglines.com +||bloglovin.com +rconversation.blogs.com +blogtd.net +.blogtd.org +|http://blogtd.org +||bloodshed.net +.bloomberg.cn +||bloomberg.cn +.bloomberg.com +||bloomberg.com +bloomberg.de +||bloomberg.de +!--403 +||assets.bwbx.io + +||bloomfortune.com +blueangellive.com +.bmfinn.com +.bnews.co +||bnews.co +||bnrmetal.com +boardreader.com/thread +||boardreader.com +.bod.asia +|http://bod.asia +.bodog88.com +.bolehvpn.net +||bolehvpn.net +bonbonme.com +.bonbonsex.com +.bonfoundation.org +.bongacams.com +||boobstagram.com +||book.com.tw +bookepub.com +||books.com.tw +||botanwang.com +.bot.nu +.bowenpress.com +||bowenpress.com +||app.box.com +dl.box.net +||dl.box.net +.boxpn.com +||boxpn.com +boxun.com +||boxun.com +.boxun.tv +||boxun.tv +boxunblog.com +||boxunblog.com +.boxunclub.com +boyangu.com +.boyfriendtv.com +.boysfood.com +||br.st +.brainyquote.com/quotes/authors/d/dalai_lama +||brandonhutchinson.com +||braumeister.org +.bravotube.net +||bravotube.net +.brazzers.com +||brazzers.com +.break.com +||break.com +breakgfw.com +||breakgfw.com +breaking911.com +.breakingtweets.com +||breakingtweets.com +||breakwall.net +briian.com/6511/freegate +.briefdream.com/%E7%B4%A0%E6%A3%BA +brizzly.com +||brizzly.com +||brkmd.com +broadbook.com +.broadpressinc.com +||broadpressinc.com +bbs.brockbbs.com +brucewang.net +.brutaltgp.com +||brutaltgp.com +.bt2mag.com +||bt95.com +.btaia.com +.btbtav.com +|http://btdigg.org +.btku.me +||btku.me +||btku.org +.btspread.com +.btsynckeys.com +.budaedu.org +||budaedu.org +.buddhanet.com.tw/zfrop/tibet +.buddhistchannel.tv +.buffered.com +|http://buffered.com +.bullog.org +||bullog.org +.bullogger.com +||bullogger.com +bunbunhk.com +.busayari.com +|http://busayari.com +.businessinsider.com/bing-could-be-censoring-search-results-2014 +.businessinsider.com/china-banks-preparing-for-debt-implosion-2014 +.businessinsider.com/hong-kong-activists-defy-police-tear-gas-as-protests-continue-overnight-2014 +.businessinsider.com/internet-outages-reported-in-north-korea-2014 +.businessinsider.com/iphone-6-is-approved-for-sale-in-china-2014 +.businessinsider.com/nfl-announcers-surface-tablets-2014 +.businessinsider.com/panama-papers +.businessinsider.com/umbrella-man-hong-kong-2014 +|http://www.businessinsider.com.au/* +.businesstoday.com.tw +||businesstoday.com.tw +.businessweek.com +.busu.org/news +|http://busu.org/news +busytrade.com +.buugaa.com +.buzzhand.com +.buzzhand.net +.buzzorange.com +||buzzorange.com +||bvpn.com +||bwh1.net +bwsj.hk +||bx.tl + +!--------------------CC------------------------- +.c-spanvideo.org +||c-spanvideo.org +||c-est-simple.com +.c100tibet.org +||cablegatesearch.net +.cachinese.com +.cacnw.com +|http://cacnw.com +.cactusvpn.com +||cactusvpn.com +.cafepress.com +.cahr.org.tw +.caijinglengyan.com +||caijinglengyan.com +.calameo.com/books +cn.calameo.com +|http://cn.calameo.com +.calgarychinese.ca +.calgarychinese.com +.calgarychinese.net +|http://blog.calibre-ebook.com +|http://google.calstate.edu +falun.caltech.edu +.its.caltech.edu/~falun/ +.cam4.com +.cam4.jp +.cam4.sg +.camfrog.com +||camfrog.com +||campaignforuyghurs.org +||cams.com +.cams.org.sg +canadameet.com +.canalporno.com +|http://bbs.cantonese.asia/ +!--http://www.cantonese.asia/action-bbs.html +.canyu.org +||canyu.org +.cao.im +.caobian.info +||caobian.info +caochangqing.com +||caochangqing.com +.cap.org.hk +||cap.org.hk +.carabinasypistolas.com +cardinalkungfoundation.org +carmotorshow.com +ss.carryzhou.com +.cartoonmovement.com +||cartoonmovement.com +.casadeltibetbcn.org +.casatibet.org.mx +|http://casatibet.org.mx +cari.com.my +||caribbeancom.com +.casinoking.com +.casinoriva.com +||catch22.net +.catchgod.com +|http://catchgod.com +||catfightpayperview.xxx +.catholic.org.hk +||catholic.org.hk +catholic.org.tw +||catholic.org.tw +.cathvoice.org.tw +||cattt.com +.cbc.ca +||cbc.ca +.cbsnews.com/video +.cbtc.org.hk +!-.ccc.de +!-||ccc.de +||cccat.cc +||cccat.co +.ccdtr.org +||ccdtr.org +.cchere.com +||cchere.com +.ccim.org +.cclife.ca +cclife.org +cclifefl.org +.ccthere.com +||ccthere.com +||ccthere.net +.cctmweb.net +.cctongbao.com/article/2078732 +ccue.ca +ccue.com +.ccvoice.ca +.ccw.org.tw +.cgdepot.org +|http://cgdepot.org +||cdbook.org +.cdcparty.com +.cdef.org +||cdef.org +||cdig.info +cdjp.org +||cdjp.org +.cdn-apple.com +||cdn-apple.com +.cdnews.com.tw +cdp1989.org +cdp1998.org +||cdp1998.org +cdp2006.org +||cdp2006.org +.cdpa.url.tw +cdpeu.org +cdpusa.org +cdpweb.org +||cdpweb.org +cdpwu.org +||cdpwu.org +||cdw.com +.cecc.gov +||cecc.gov +||cellulo.info +||cenews.eu +||centerforhumanreprod.com +||centralnation.com +.centurys.net +|http://centurys.net +.cfhks.org.hk +.cfos.de +.cftfc.com +.cgst.edu +.change.org +||change.org +.changp.com +||changp.com +.changsa.net +|http://changsa.net +.channel8news.sg/news8 +.chapm25.com +.chaturbate.com +.chuang-yen.org +chengmingmag.com +.chenguangcheng.com +||chenguangcheng.com +.chenpokong.com +.chenpokong.net +|http://chenpokong.net +||cherrysave.com +.chhongbi.org +chicagoncmtv.com +|http://chicagoncmtv.com +.china-week.com +china101.com +||china101.com +||china18.org +||china21.com +china21.org +||china21.org +.china5000.us +chinaaffairs.org +||chinaaffairs.org +||chinaaid.me +chinaaid.us +chinaaid.org +chinaaid.net +chinacomments.org +||chinacomments.org +.chinachange.org +||chinachange.org +chinachannel.hk +||chinachannel.hk +.chinacitynews.be +.chinadialogue.net +.chinadigitaltimes.net +||chinadigitaltimes.net +.chinaelections.org +||chinaelections.org +.chinaeweekly.com +||chinaeweekly.com +||chinafreepress.org +.chinagate.com +chinageeks.org +chinagfw.org +||chinagfw.org +.chinagonet.com +.chinagreenparty.org +||chinagreenparty.org +.chinahorizon.org +||chinahorizon.org +.chinahush.com +.chinainperspective.com +||chinainterimgov.org +chinalaborwatch.org +chinalawtranslate.com +.chinapost.com.tw/taiwan/national/national-news +chinaxchina.com/howto +chinalawandpolicy.com +.chinamule.com +||chinamule.com +chinamz.org +.chinanewscenter.com +|https://chinanewscenter.com +.chinapress.com.my +||chinapress.com.my +.china-review.com.ua +|http://china-review.com.ua +.chinarightsia.org +chinasmile.net/forums +chinasocialdemocraticparty.com +||chinasocialdemocraticparty.com +chinasoul.org +||chinasoul.org +.chinasucks.net +||chinatopsex.com +.chinatown.com.au +chinatweeps.com +chinaway.org +.chinaworker.info +||chinaworker.info +chinayouth.org.hk +chinayuanmin.org +||chinayuanmin.org +.chinese-hermit.net +chinese-leaders.org +chinese-memorial.org +.chinesedaily.com +||chinesedailynews.com +.chinesedemocracy.com +||chinesedemocracy.com +||chinesegay.org +.chinesen.de +||chinesen.de +.chinesenews.net.au/ +.chinesepen.org +.chinesetalks.net/ch +||chineseupress.com +.chingcheong.com +||chingcheong.com +.chinman.net +|http://chinman.net +chithu.org +|http://chn.chosun.com +cnnews.chosun.com/client/news/viw.asp?cate=C01&mcate +.chrdnet.com +|http://chrdnet.com +.christianfreedom.org +|http://christianfreedom.org +christianstudy.com +||christianstudy.com +christusrex.org/www1/sdc +.chubold.com +chubun.com +chuizi.net +christiantimes.org.hk +.chrlawyers.hk +|http://chrlawyers.hk +.churchinhongkong.org/b5/index.php +|http://churchinhongkong.org/b5/index.php +.chushigangdrug.ch +.cienen.com +.cineastentreff.de +.cipfg.org +||circlethebayfortibet.org +||cirosantilli.com +.citizencn.com +||citizencn.com +|http://citizenlab.org +|http://www.citizenlab.org +||citizenscommission.hk +.citizenlab.org +citizensradio.org +.city365.ca +|http://city365.ca +city9x.com +||citypopulation.de +.citytalk.tw/event +.civicparty.hk +||civicparty.hk +.civildisobediencemovement.org +civilhrfront.org +||civilhrfront.org +.civiliangunner.com +.civilmedia.tw +||civilmedia.tw +psiphon.civisec.org +||vpn.cjb.net +.ck101.com +||ck101.com +.clarionproject.org/news/islamic-state-isis-isil-propaganda +||classicalguitarblog.net +.clb.org.hk +clearharmony.net +clearwisdom.net +clinica-tibet.ru +.clipfish.de +cloakpoint.com +||club1069.com +cmi.org.tw +|http://www.cmoinc.org +cmp.hku.hk +hkupop.hku.hk +||cmule.com +||cmule.org +||cms.gov +|http://vpn.cmu.edu +|http://vpn.sv.cmu.edu +.cn6.eu +.cna.com.tw +||cna.com.tw +.cnabc.com +.cnd.org +||cnd.org +download.cnet.com +.cnex.org.cn +.cnineu.com +wiki.cnitter.com +.cnn.com/video +.cnpolitics.org +||cnpolitics.org +.cn-proxy.com +|http://cn-proxy.com +.cnproxy.com +blog.cnyes.com +news.cnyes.com +||coat.co.jp +.cochina.co +||cochina.co +||cochina.org +.code1984.com/64 +|http://goagent.codeplex.com +||codeshare.io +||codeskulptor.org +|http://tosh.comedycentral.com +comefromchina.com +||comefromchina.com +.comic-mega.me +commandarms.com +||commentshk.com +.communistcrimes.org +||communistcrimes.org +||communitychoicecu.com +||compileheart.com +||conoha.jp +.contactmagazine.net +.convio.net +.coobay.com +|http://www.cool18.com/bbs*/ +.coolaler.com +||coolaler.com +coolder.com +||coolder.com +||coolloud.org.tw +.coolncute.com +||coolstuffinc.com +corumcollege.com +.cos-moe.com +|http://cos-moe.com +.cosplayjav.pl +|http://cosplayjav.pl +.cotweet.com +||cotweet.com +.coursehero.com +||coursehero.com +cpj.org +||cpj.org +.cq99.us +|http://cq99.us +crackle.com +||crackle.com +.crazys.cc +.crazyshit.com +||crchina.org +crd-net.org +creaders.net +||creaders.net +.creadersnet.com +||cristyli.com +.crocotube.com +|http://crocotube.com +.crossthewall.net +||crossthewall.net +.crossvpn.net +||crossvpn.net +||crucial.com +csdparty.com +||csdparty.com +||csuchen.de +.csw.org.uk +.ct.org.tw +||ct.org.tw +.ctao.org +.ctfriend.net +.ctitv.com.tw +cts.com.tw +|http://library.usc.cuhk.edu.hk/ +|http://mjlsh.usc.cuhk.edu.hk/ +.cuhkacs.org/~benng +.cuihua.org +||cuihua.org +.cuiweiping.net +||cuiweiping.net +||culture.tw +.cumlouder.com +||cumlouder.com +||curvefish.com +.cusu.hk +||cusu.hk +.cutscenes.net +.cw.com.tw +||cw.com.tw +|http://forum.cyberctm.com +cyberghostvpn.com +||cyberghostvpn.com +||cynscribe.com +cytode.us +||ifan.cz.cc +||mike.cz.cc +||nic.cz.cc + +!--------------------DD------------------------- +.d-fukyu.com +|http://d-fukyu.com +cl.d0z.net +.d100.net +||d100.net +.d2bay.com +|http://d2bay.com +.dabr.co.uk +||dabr.co.uk +dabr.eu +dabr.mobi +||dabr.mobi +||dabr.me +dadazim.com +||dadazim.com +.dadi360.com +.dafabet.com +dafagood.com +dafahao.com +.dafoh.org +.daftporn.com +.dagelijksestandaard.nl +.daidostup.ru +|http://daidostup.ru +.dailidaili.com +||dailidaili.com +.dailymotion.com +||dailymotion.com +daiphapinfo.net +.dajiyuan.com +||dajiyuan.de +dajiyuan.eu +dalailama.com +.dalailama.mn +|http://dalailama.mn +.dalailama.ru +||dalailama.ru +dalailama80.org +.dalailama-archives.org +.dalailamacenter.org +|http://dalailamacenter.org +dalailamafellows.org +.dalailamafilm.com +.dalailamafoundation.org +.dalailamahindi.com +.dalailamainaustralia.org +.dalailamajapanese.com +.dalailamaprotesters.info +.dalailamaquotes.org +.dalailamatrust.org +.dalailamavisit.org.nz +.dalailamaworld.com +||dalailamaworld.com +dalianmeng.org +||dalianmeng.org +.daliulian.org +||daliulian.org +.danke4china.net +||danke4china.net +.danwei.org +daolan.net +.daozhongxing.org +darktoy.net +||dastrassi.org +blog.daum.net/_blog +.david-kilgour.com +|http://david-kilgour.com +daxa.cn +||daxa.cn +cn.dayabook.com +.daylife.com/topic/dalai_lama +||db.tt +.dbc.hk/main +||dcard.tw +dcmilitary.com +.ddc.com.tw +.ddhw.info +||de-sci.org +.de-sci.org +packages.debian.org/zh-cn/lenny/gpass +||decodet.co + +!--Origin:cdn-i30$_ +!--Exception: Homepage access without rst +!--Keyword is $_ +.definebabe.com + +||delcamp.net +delicious.com/GFWbookmark +.democrats.org +||democrats.org +.demosisto.hk +||demosisto.hk +||desc.se +||dessci.com +.destroy-china.jp +||deutsche-welle.de +!--||deviantart.com +!--||deviantart.net +||devio.us +||devpn.com +||dfas.mil +dfn.org +dharmakara.net +.dharamsalanet.com +.diaoyuislands.org +||diaoyuislands.org +.difangwenge.org +|http://digiland.tw/ +||digitalnomadsproject.org +.diigo.com +||diigo.com +||dilber.se +||furl.net +.dipity.com +||directcreative.com +!--||discogs.com +!--@@||cdn.discogs.com +.discuss.com.hk +||discuss.com.hk +.discuss4u.com +disp.cc +.disqus.com +||disqus.com +.dit-inc.us +||dit-inc.us +.dizhidizhi.com +||dizhuzhishang.com +djangosnippets.org +.djorz.com +||djorz.com +||dl-laby.jp +||dlsite.com +||dlyoutube.com +||dmcdn.net +.dnscrypt.org +||dnscrypt.org +||dns2go.com +||dnssec.net +doctorvoice.org + +!--DogFartNetwork +.dogfartnetwork.com/tour +gloryhole.com + +.dojin.com +.dok-forum.net +||dolc.de +||dolf.org.hk +||dollf.com +.domain.club.tw +.domaintoday.com.au +chinese.donga.com +dongtaiwang.com +||dongtaiwang.com +.dongtaiwang.net +||dongtaiwang.net +.dongyangjing.com +|http://danbooru.donmai.us +.dontfilter.us +||dontmovetochina.com +.dorjeshugden.com +.dotplane.com +||dotplane.com +||dotsub.com +.dotvpn.com +||dotvpn.com +.doub.io +||doub.io +||dougscripts.com +||douhokanko.net +||doujincafe.com +dowei.org +dphk.org +dpp.org.tw +||dpp.org.tw +||dpr.info +||dragonsprings.org +!--||draw.io +.dreamamateurs.com +.drepung.org +||drgan.net +.drmingxia.org +|http://drmingxia.org +||dropbooks.tv +||dropbox.com +||api.dropboxapi.com +||notify.dropboxapi.com +||dropboxusercontent.com +drsunacademy.com +.drtuber.com +.dscn.info +|http://dscn.info +.dstk.dk +|http://dstk.dk +||dtiblog.com +||dtic.mil +.dtwang.org +.duanzhihu.com +.duckdns.org +|http://duckdns.org +.duckduckgo.com +||duckduckgo.com +.duckload.com/download +||duckmylife.com +.duga.jp +|http://duga.jp +.duihua.org +||duihua.org +||duihuahrjournal.org +.dunyabulteni.net +.duoweitimes.com +||duoweitimes.com +duping.net +||duplicati.com +dupola.com +dupola.net +.dushi.ca +||dvorak.org +.dw.com +||dw.com +||dw.de +.dw-world.com +||dw-world.com +.dw-world.de +|http://dw-world.de +www.dwheeler.com +dwnews.com +||dwnews.com +dwnews.net +||dwnews.net +xys.dxiong.com +||dynawebinc.com +||dysfz.cc +.dzze.com + +!--------------------EE------------------------- +||e-classical.com.tw +||e-gold.com +.e-gold.com +.e-hentai.org +||e-hentai.org +.e-hentaidb.com +|http://e-hentaidb.com +e-info.org.tw +.e-traderland.net/board +.e-zone.com.hk/discuz +|http://e-zone.com.hk/discuz +.e123.hk +||e123.hk +.earlytibet.com +|http://earlytibet.com +.earthcam.com +.earthvpn.com +||earthvpn.com +eastern-ark.com +.easternlightning.org +.eastturkestan.com +|http://www.eastturkistan.net/ +.eastturkistan-gov.org +.eastturkistancc.org +.eastturkistangovernmentinexile.us +||eastturkistangovernmentinexile.us +.easyca.ca +.easypic.com +.ebony-beauty.com +ebookbrowse.com +ebookee.com +||ecfa.org.tw +ushuarencity.echainhost.com +||ecimg.tw +ecministry.net +.economist.com +bbs.ecstart.com +edgecastcdn.net +||edgecastcdn.net +/twimg\.edgesuite\.net\/\/?appledaily/ +edicypages.com +.edmontonchina.cn +.edmontonservice.com +edoors.com +.edubridge.com +||edubridge.com +.edupro.org +||eevpn.com +efcc.org.hk +.efukt.com +|http://efukt.com +||eic-av.com +||eireinikotaerukai.com +.eisbb.com +.eksisozluk.com +||eksisozluk.com +electionsmeter.com +||elgoog.im +.ellawine.org +.elpais.com +||elpais.com +.eltondisney.com +.emaga.com/info/3407 +emilylau.org.hk +.emanna.com/chineseTraditional +bitc.bme.emory.edu/~lzhou/blogs +.empfil.com +.emule-ed2k.com +|http://emule-ed2k.com +.emulefans.com +|http://emulefans.com +.emuparadise.me +.enanyang.my +!--.enanyang.my/news/20170502/%E7%BE%8E%E5%9B%BD%E4%B9%8B%E9%9F%B3%E5%A4%A7%E5%9C%B0%E9%9C%87%E3%80%8A%E8%8B%B9%E6%9E%9C%E3%80%8B%E7%8B%AC%E5%AE%B6 +||enewstree.com +.enfal.de +chinese.engadget.com +||engagedaily.org +englishforeveryone.org +||englishfromengland.co.uk +englishpen.org +.enlighten.org.tw +||entermap.com +.entnt.com +|http://entnt.com +.episcopalchurch.org +.epochhk.com +|http://epochhk.com +epochtimes-bg.com +||epochtimes-bg.com +epochtimes-romania.com +||epochtimes-romania.com +epochtimes.co.il +||epochtimes.co.il +epochtimes.co.kr +||epochtimes.co.kr +epochtimes.com +||epochtimes.com +.epochtimes.cz +epochtimes.de +epochtimes.fr +.epochtimes.ie +.epochtimes.it +epochtimes.jp +epochtimes.ru +epochtimes.se +epochtimestr.com +.epochweek.com +||epochweek.com +||epochweekly.com +.eporner.com +.equinenow.com +erabaru.net +.eracom.com.tw +.eraysoft.com.tr +.erepublik.com +.erights.net +||erights.net +.erktv.com +|http://erktv.com +||ernestmandel.org +||erodaizensyu.com +||erodoujinlog.com +||erodoujinworld.com +||eromanga-kingdom.com +||eromangadouzin.com +.eromon.net +|http://eromon.net +.eroprofile.com +.eroticsaloon.net +.eslite.com +||eslite.com +!--.eslite.com/product +!--.eslite.com/Search_BW.aspx?q +wiki.esu.im/%E8%9B%A4%E8%9B%A4%E8%AF%AD%E5%BD%95 +.etaa.org.au +.etadult.com +etaiwannews.com +||etizer.org +||etokki.com +!--.ettoday.net +.ettoday.net/news/20151216/614081 +etvonline.hk +.eu.org +||eu.org +.eucasino.com +.eulam.com +.eurekavpt.com +||eurekavpt.com +.euronews.com +||euronews.com +eeas.europa.eu/delegations/china/press_corner/all_news/news/2015/20150716_zh +eeas.europa.eu/statements-eeas/2015/151022 +.evschool.net +|http://evschool.net +||exblog.jp +||blog.exblog.co.jp +@@||www.exblog.jp +.exchristian.hk +||exchristian.hk +|http://blog.excite.co.jp +||exmormon.org +||expatshield.com +.expecthim.com +||expecthim.com +experts-univers.com +||exploader.net +.expressvpn.com +||expressvpn.com +.extremetube.com +eyevio.jp +||eyevio.jp +.eyny.com +||eyny.com +.ezpc.tk/category/soft +.ezpeer.com + +!--------------------FF------------------------- +||facebookquotes4u.com +.faceless.me +||faceless.me +|http://facesoftibetanselfimmolators.info +||facesofnyfw.com +.faith100.org +|http://faith100.org + +!--Enhancement: +!--http://faithfuleye.com.detail.website/ +!--http://faithfuleye.com.ipaddress.com/ +.faithfuleye.com + +||faiththedog.info +.fakku.net +.falsefire.com +||falsefire.com +falun-co.org +falunart.org +||falunasia.info +|http://falunau.org +.falunaz.net +falundafa.org +falundafa-dc.org +||falundafa-florida.org +||falundafa-nc.org +||falundafa-pa.net +||falundafa-sacramento.org +falun-ny.net +||falundafaindia.org +falundafamuseum.org +.falungong.club +.falungong.de +falungong.org.uk +||falunhr.org +faluninfo.de +faluninfo.net +.falunpilipinas.net +||falunworld.net +familyfed.org +.fangeming.com +||fanglizhi.info +||fangong.org +fangongheike.com +.fanqiang.tk +fanqianghou.com +||fanqianghou.com +.fanqiangzhe.com +||fanqiangzhe.com +fapdu.com +faproxy.com +!--.farxian.com +.fawanghuihui.org +fanqiangyakexi.net +fail.hk +||famunion.com +.fan-qiang.com +.fangbinxing.com +||fangbinxing.com +fangeming.com +.fangmincn.org +||fangmincn.org +.fanhaodang.com +||fanswong.com +.fanyue.info +.farwestchina.com + +!--Fastly +en.favotter.net +!--||rnw.global.ssl.fastly.net +!--|https://*global.ssl.fastly.net/ +nytimes.map.fastly.net +||nytimes.map.fastly.net +||fast.wistia.com + +||fastssh.com +||faststone.org +favstar.fm +||favstar.fm +faydao.com/weblog +.fc2.com +.fc2china.com +.fc2cn.com +||fc2cn.com +fc2blog.net +|http://uygur.fc2web.com/ +video.fdbox.com +.fdc64.de +.fdc64.org +.fdc89.jp +||fourface.nodesnoop.com +!--feedbooks.mobi +||feelssh.com +feer.com +.feifeiss.com +|http://feitianacademy.org +.feitian-california.org +||feministteacher.com +.fengzhenghu.com +||fengzhenghu.com +.fengzhenghu.net +||fengzhenghu.net +.fevernet.com +|http://ff.im +fffff.at +fflick.com +.ffvpn.com +fgmtv.net +.fgmtv.org +.fhreports.net +|http://fhreports.net +.figprayer.com +||figprayer.com +.fileflyer.com +||fileflyer.com +|http://feeds.fileforum.com +.files2me.com +.fileserve.com/file +fillthesquare.org +filmingfortibet.org +.filthdump.com +.finchvpn.com +||finchvpn.com +!--findbook.tw +findmespot.com +||findyoutube.com +||findyoutube.net +.fingerdaily.com +finler.net +.firearmsworld.net +|http://firearmsworld.net +.fireofliberty.org +||fireofliberty.org +.firetweet.io +||firetweet.io +!--||flagfox.net +.flagsonline.it +fleshbot.com +.fleursdeslettres.com +|http://fleursdeslettres.com +||flgg.us +||flgjustice.org + +!--||farm6.staticflickr.com +!--.flickr.com/photos/46231077@N06 +!--.flickr.com/groups/aiweiwei +!--.flickr.com/photos/digitalboy100 +!--.flickr.com/photos/fzhenghu +!--.flickr.com/photos/lonelyfox +!--flickr.com/photos/vanvan/529925157 +!--.flickr.com/photos/winterkanal +!--.flickr.com/photos/zola +||flickr.com +||staticflickr.com + +flickrhivemind.net +.flickriver.com +.fling.com +||flipkart.com +||flog.tw +.flyvpn.com +||flyvpn.com +|http://cn.fmnnow.com +fofldfradio.org +blog.foolsmountain.com +.forum4hk.com +fangong.forums-free.com +pioneer-worker.forums-free.com +!--foursquare.com +!--|http://4sq.com +|https://ss*.4sqi.net +video.foxbusiness.com +|http://foxgay.com +||fringenetwork.com +||flecheinthepeche.fr +.fochk.org +|http://fochk.org +||focustaiwan.tw +.focusvpn.com +||fofg.org +.fofg-europe.net +.fooooo.com +||fooooo.com +footwiball.com +.fotile.me +||fourthinternational.org +||foxdie.us +||foxsub.com +foxtang.com +.fpmt.org +|http://fpmt.org +.fpmt.tw +.fpmt-osel.org +||fpmtmexico.org +fqok.org +||fqrouter.com +||franklc.com +.freakshare.com +|http://freakshare.com +||free4u.com.ar +free-gate.org +.free-hada-now.org +free-proxy.cz +.free.fr/adsl +kineox.free.fr +tibetlibre.free.fr +||freealim.com +whitebear.freebearblog.org +||freebrowser.org +.freechal.com +.freedomchina.info +||freedomchina.info +.freedomhouse.org +||freedomhouse.org +.freedomsherald.org +||freedomsherald.org +.freefq.com +.freefuckvids.com +.freegao.com +||freegao.com +freeilhamtohti.org +||freekazakhs.org +.freekwonpyong.org +||saveliuxiaobo.com +.freelotto.com +||freelotto.com +freeman2.com +.freeopenvpn.com +freemoren.com +freemorenews.com +freemuse.org/archives/789 +freenet-china.org +freenewscn.com +cn.freeones.com +.freeoz.org/bbs +||freeoz.org +||freessh.us +free4u.com.ar +.free-ssh.com +||free-ssh.com +.freechina.news/ +||freechinaforum.org +||freechinaweibo.com +.freedomcollection.org/interviews/rebiya_kadeer +.freeforums.org +||freenetproject.org +.freeoz.org +.freetibet.net +||freetibet.org +.freetibetanheroes.org +|http://freetibetanheroes.org +.freeviewmovies.com +.freevpn.me +|http://freevpn.me +||freewallpaper4.me +.freewebs.com +.freewechat.com +||freewechat.com +freeweibo.com +||freeweibo.com +.freexinwen.com +.freeyoutubeproxy.net +||freeyoutubeproxy.net +friendfeed.com +friendfeed-media.com/e99a4ebe2fb4c1985c2a58775eb4422961aa5a2e +friends-of-tibet.org +.friendsoftibet.org +freechina.net +|http://www.zensur.freerk.com/ +freevpn.nl +freeyellow.com +hk.frienddy.com/hk +|http://adult.friendfinder.com/ +.fring.com +||fring.com +.fromchinatousa.net +||frommel.net +.frontlinedefenders.org +.frootvpn.com +||frootvpn.com +||fscked.org +.fsurf.com +.ftv.com.tw +fucd.com +.fuckcnnic.net +||fuckcnnic.net +fuckgfw.org +.fulione.com +|https://fulione.com +||fullerconsideration.com +fulue.com +.funf.tw +funp.com +.fuq.com +.furhhdl.org +||furinkan.com +.futurechinaforum.org +||futuremessage.org +.fux.com +.fuyin.net +.fuyindiantai.org +.fuyu.org.tw +||fw.cm +.fxcm-chinese.com +||fxcm-chinese.com +fzh999.com +fzh999.net +fzlm.com + +!--------------------GG------------------------- +.g6hentai.com +|http://g6hentai.com +||g-queen.com +||gabocorp.com +.gaeproxy.com +.gaforum.org +.gagaoolala.com +||gagaoolala.com +.galaxymacau.com +||galenwu.com +.galstars.net +||game735.com +gamebase.com.tw +gamejolt.com +|http://wiki.gamerp.jp +||gamer.com.tw +.gamer.com.tw +.gamez.com.tw +||gamez.com.tw +.gamousa.com +.gaoming.net +||gaoming.net +ganges.com +.gaopi.net +|http://gaopi.net +.gaozhisheng.org +.gaozhisheng.net +gardennetworks.com +||gardennetworks.org +!--IP of Garden Network +72.52.81.22 +||gartlive.com +||gate-project.com +||gather.com +.gatherproxy.com +gati.org.tw +.gaybubble.com +.gaycn.net +.gayhub.com +||gaymap.cc +.gaymenring.com +.gaytube.com +!--||gaytube.com +||images-gaytube.com +.gaywatch.com +|http://gaywatch.com +.gazotube.com +||gazotube.com +||gcc.org.hk +||gclooney.com +||gcmasia.com +.gcpnews.com +|http://gcpnews.com +.gdbt.net/forum +gdzf.org +||geek-art.net +geekerhome.com/2010/03/xixiang-project-cross-gfw +||geekheart.info +.gekikame.com +|http://gekikame.com +.gelbooru.com +|http://gelbooru.com +!--||genuitec.com +.geocities.co.jp +.geocities.com/SiliconValley/Circuit/5683/download.html +hk.geocities.com +geocities.jp +.gerefoundation.org +||getastrill.com +.getchu.com +.getcloak.com +||getcloak.com +||getfoxyproxy.org +.getfreedur.com +||getgom.com +.geti2p.net +||geti2p.net +.getlantern.org +||getlantern.org +.getjetso.com/forum +getiton.com +.getsocialscope.com +||getsync.com +gfbv.de +.gfgold.com.hk +.gfsale.com +||gfsale.com +gfw.org.ua +.gfw.press +||gfw.press +.ggssl.com +||ggssl.com +!--||ghost.org +.ghostpath.com +||ghostpath.com +||ghut.org +.giantessnight.com +|http://giantessnight.com +.gifree.com +||giga-web.jp +tw.gigacircle.com +|http://cn.giganews.com/ +gigporno.ru +||girlbanker.com +.git.io +||git.io +|http://softwaredownload.gitbooks.io + +!---GitHub--- +github.com/getlantern +|https://gist.github.com +!--http://cthlo.github.io/hktv +!--hahaxixi.github.io +!--|https://hahaxixi.github.io +!--||haoel.github.io +!--|http://onionhacker.github.io +!--||rg3.github.io +!--||sikaozhe1997.github.io +!--||sodatea.github.io +!--||terminus2049.github.io +!--||toutyrater.github.io +!--wsgzao.github.io +!--|https://wsgzao.github.io +.github.io +||github.io +||githubusercontent.com +||githubassets.com + +.gizlen.net +||gizlen.net +.gjczz.com +||gjczz.com +globaljihad.net +globalmediaoutreach.com +globalmuseumoncommunism.org +||globalrescue.net +.globaltm.org +.globalvoicesonline.org +||globalvoicesonline.org +||globalvpn.net +.glock.com +gluckman.com/DalaiLama +gmbd.cn +||gmhz.org +|http://www.gmiddle.com +|http://www.gmiddle.net +.gmll.org +||gnci.org.hk +||gnews.org +go-pki.com +||goagent.biz +||goagentplus.com +gobet.cc +godfootsteps.org +||godfootsteps.org +godns.work +godsdirectcontact.co.uk +.godsdirectcontact.org +godsdirectcontact.org.tw +.godsimmediatecontact.com +.gogotunnel.com +||gohappy.com.tw +.gokbayrak.com +.goldbet.com +||goldbetsports.com +||goldeneyevault.com +.goldenfrog.com +||goldenfrog.com +.goldjizz.com +|http://goldjizz.com +.goldstep.net +||goldwave.com +gongmeng.info +gongm.in +gongminliliang.com +.gongwt.com +|http://gongwt.com +blog.goo.ne.jp/duck-tail_2009 +.gooday.xyz +|http://gooday.xyz +.goodreads.com +||goodreads.com +.goodreaders.com +||goodreaders.com +.goodtv.com.tw +.goodtv.tv +||goofind.com +.googlesile.com +.gopetition.com +||gopetition.com +.goproxing.net +.gotrusted.com +||gotrusted.com +||gotw.ca +||grammaly.com +grandtrial.org +.graphis.ne.jp +||graphis.ne.jp +||graphql.org +!--||s.gravatar.com +greatfirewall.biz +||greatfirewallofchina.net +.greatfirewallofchina.org +||greatfirewallofchina.org +||greenfieldbookstore.com.hk +.greenparty.org.tw +||greenpeace.org +.greenreadings.com/forum +great-firewall.com +great-roc.org +greatroc.org +greatzhonghua.org +.greenpeace.com.tw +.greenvpn.net +||greenvpn.net +.greenvpn.org +||grotty-monday.com +gs-discuss.com +||gtricks.com +guancha.org +guaneryu.com +.guardster.com +.gun-world.net +gunsandammo.com +||gutteruncensored.com +||gvm.com.tw +.gzm.tv +||gzone-anime.info + +!-------------GHS----- +!-||feeds.cbsnews.com +!-||www.chinesealbumart.com +||clementine-player.org +!-||clemesha.org +!-||www.cloudgirlfriend.com +!-||cocoawithlove.com +!-||blog.controlspace.org +!-D +!-||www.dailygyan.com +!-||dailytodo.org +!-||blog.danmarner.com +!-||github.danmarner.com +!-||design-seeds.com +!-||designers-artists.com +!-||mail.diyang.org +!-||blog.doughellmann.com +!-||downforeveryoneorjustme.com +!-||droidsecurity.com +!-||www.dropmocks.com +!-||dumblittleman.com +!-E +echofon.com +!-||echofon.com +!-||epc-jav.com +!-||everdark.info +!-||evhead.com +!-F +!-||facilelogin.com +!-||*.fatduck.org +!-||blog.fdcn.org +!-||fftogo.com +!-||flightsimtalk.com +!-||mclee.foolme.net +!-||www.frienddeck.com +!-||fringespoilers.com +!-||fringetelevision.com +!-||funpea.com +!-G +!-||blog.gatein.org +!-||feeds.gawker.com +!-||geektang.com +!-||geohot.us +!-||getaround.com +!-||gmer.net +!-||www.gmote.org +!-||blog.go2web20.net +!-||google-melange.com +!-||fame.gonzolabs.org +!-||govecn.org +!-||gqueues.com +!-||graphycalc.com +||greasespot.net +!-||blog.growlforwindows.com +!-H +!-||hcm.com.tw +!-||blog.headius.com +!-||hogbaysoftware.com +!-||blog.hotot.org +!-||feeds.howstuffworks.com +!-||huhaitai.com +!-||blog.humanrightsfirst.org +!-I +!-||site.icu-project.org +!-||igorware.com +!-||ihas1337code.com +!-||inknouveau.com +!-||inote.tw +!-||ironhelmet.com +!-||iwfwcf.com +!-J +!-||blog.jangmt.com +!-||blog.jayfields.com +!-||blog.joint.net +!-||blog.jsquaredjavascript.com +!-||blog.jtbworld.com +!-K +!-||kathyschwalbe.com +!-||tomatovpn.keithmoyer.com +!-||www.keithmoyer.com +!-||kendalvandyke.com +!-||blog.kengao.tw +!-||log.keso.cn +!-||www.khanacademy.org +||www.klip.me +!-||usbloadergx.koureio.net +!-||blog.kowalczyk.info +!-L +!-||labyrinth2.com +!-||larsgeorge.com +!-||blog.lastpass.com +!-||docs.latexlab.org +!-||leanessays.com +!-||blog.lidaobing.info +!-||log.lightory.net +!-||feeds.limi.net +!-||www.liteapplications.com +!-||blog.liukangxu.info +!-||twitter.liukangxu.info +!-||oasisnewsroom.live4ever.us +!-||www.lockergnome.com +!-||locql.com +@@||site.locql.com +!-||feeds.loiclemeur.com +!-||blog.louisgray.com +!-M +!-||madebysofa.com +!-||mademoisellerobot.com +!-||masamixes.com +!-||www.metamuse.net +!-||blog.metasploit.com +!-||milazi.com +!-||www.miniweather.com +!-||twitter.missiu.com +!-||plurktop-button.mmdays.com +!-||feeds.mobileread.com +!-||www.modernizr.com +!-||www.modk.it +!-||mytwishirt.com +!-N +!-||blog.netflix.com +!-||blog.nihilogic.dk +!-||ntlk.org +!-||nvquan.org +!-||nogoodatcoding.com +!-||blog.notdot.net +!-||www.notify.io +!-O +!-||blog.obvious.com +!-||onebigfluke.com +!-||overstimulate.com +!-P +!-||pcgeekblog.com +!-||feeds.pdfchm.net +!-||feeds.people.com +!-||blog.persistent.info +!-||chrome.plantsvszombies.com +!-||portablesoft.org.ru +!-||prasannatech.net +!-||talk.news.pts.org.tw +!-||python-excel.org +!-Q +!-R +!-||r-chart.com +!-||rameshsubramanian.org +!-||rapid.pk +!-||blog.renanse.com +!-||robertmao.com +!-||www.romeo-foxtrot.com +!-S +!-||salmiyuck.com +!-||samsal.com +!-||blog.seeminglee.com +!-||blog.sflow.com +!-||blog.sigfpe.com +!-||simpletext.ws +!-||www.skulpt.org +!-||rss.slashdot.org +!-||snippetsapp.com +!-||w.sns.ly +!-||www.socialnmobile.com +!-||www.socialwhois.com +!-||spiritjb.org +!-||ssbook.com +!-||sshforwarding.com +!-||stationeria.com +||stephaniered.com +!-||sunjidong.net +!-||syniumsoftware.com +@@||download.syniumsoftware.com +!-T +!-||tagxedo.com +!-||blog.tatoeba.org +!-||www.techfob.com +!-||teachparentstech.org +!-||the8pen.com +!-||theiphonewiki.com +!-||blog.thesilentnumber.me +!-||thesponty.com +!-||theultralinx.com +!-||blog.think-async.com +!-||tornadoweb.org +!-||transparentuptime.com +!-||triangulationblog.com +!-||blog.tsunanet.net +!-||en.tuxero.com +!-||twazzup.com +!-||tweetswell.com +!-||twibes.com +!-||art.twgg.org +!-||twivert.com +!-U +|http://ub0.cc +!-||jonny.ubuntu-tw.net +!-||blog.umonkey.net +!-V +!-||tp.vbap.com.au +!-||www.virtuousrom.com +!-||blog.visibotech.com +!-W +!-||waveprotocol.org +!-||www.wavesandbox.com +!-||webfee.org.ru +!-||blog.webmproject.org +!-||webupd8.org +!-||www.whatbrowser.org +!-||www.wheredoyougo.net +!-||willhains.com +!-||feeds.wired.com +!-||wisemapping.org +wozy.in +!-||wozy.in/ +!-||blog.wundercounter.com +!-X +!-||xdelta.org +!-||xiaogaozi.org +!-||xilou.us +!-||xzy.org.ru +!-Y +!-||yooper.be +!-||tsong.yunxi.net +!-Z + +gospelherald.com +||gospelherald.com +|http://hk.gradconnection.com/ +||grangorz.org +greatfire.org +||greatfire.org +greatfirewallofchina.org +||greatroc.tw +.gts-vpn.com +|http://gts-vpn.com +||gtv.org +.gu-chu-sum.org +|http://gu-chu-sum.org +.guaguass.com +|http://guaguass.com +.guaguass.org +|http://guaguass.org +.guangming.com.my +guishan.org +||guishan.org +.gumroad.com +||gumroad.com +||gunsamerica.com +guruonline.hk +|http://gvlib.com +.gyalwarinpoche.com +.gyatsostudio.com + +!--------------------HH------------------------- +.h528.com +.h5dm.com +.h5galgame.me +||h-china.org +.h-moe.com +|http://h-moe.com +h1n1china.org +.hacg.club +||hacg.club +.hacg.in +|http://hacg.in +.hacg.li +|http://hacg.li +.hacg.me +|http://hacg.me +.hacg.red +|http://hacg.red +.hacken.cc/bbs +.hacker.org +||hackthatphone.net +hahlo.com +||hakkatv.org.tw +.handcraftedsoftware.org +|http://bbs.hanminzu.org/ +.hanunyi.com +.hao.news/news +|http://ae.hao123.com +|http://ar.hao123.com +|http://br.hao123.com +|http://en.hao123.com +|http://id.hao123.com +|http://jp.hao123.com +|http://ma.hao123.com +|http://mx.hao123.com +|http://sa.hao123.com +|http://th.hao123.com +|http://tw.hao123.com +|http://vn.hao123.com +|http://hk.hao123img.com +|http://ld.hao123img.com +||happy-vpn.com +.haproxy.org +||hardsextube.com +.harunyahya.com +|http://harunyahya.com +bbs.hasi.wang +have8.com +@@||haygo.com +.hclips.com +||hdlt.me +||hdtvb.net +.hdzog.com +|http://hdzog.com +||heartyit.com +.heavy-r.com +.hec.su +|http://hec.su +.hecaitou.net +||hecaitou.net +.hechaji.com +||hechaji.com +||heeact.edu.tw +.hegre-art.com +|http://hegre-art.com +||cdn.helixstudios.net +||helplinfen.com +||helpuyghursnow.org +||helloandroid.com +||helloqueer.com +.helloss.pw +hellotxt.com +||hellotxt.com +.hentai.to +.hellouk.org/forum/lofiversion +.helpeachpeople.com +||helpeachpeople.com +||helpster.de +.helpzhuling.org +hentaitube.tv +.hentaivideoworld.com + +!###########--Heroku--########## +!--||getcloudapp.com +!--||cl.ly +!--@@||f.cl.ly +!--EC2 DNS Poisoned +||id.heroku.com + +heqinglian.net +||heungkongdiscuss.com +.hexieshe.com +||hexieshe.com +||hexieshe.xyz +!--Google employee within Google IP +||hexxeh.net +app.heywire.com +.heyzo.com +.hgseav.com +.hhdcb3office.org +.hhthesakyatrizin.org +hi-on.org.tw +hidden-advent.org +||hidden-advent.org +hidecloud.com/blog/2008/07/29/fuck-beijing-olympics.html +||hide.me +.hidein.net +.hideipvpn.com +||hideipvpn.com +.hideman.net +||hideman.net +hideme.nl +||hidemy.name +.hidemyass.com +||hidemyass.com +hidemycomp.com +||hidemycomp.com +.hihiforum.com +.hihistory.net +||hihistory.net +.higfw.com +highpeakspureearth.com +||highrockmedia.com +||hiitch.com +||hikinggfw.org +.hilive.tv +.himalayan-foundation.org +himalayanglacier.com +.himemix.com +||himemix.com +.himemix.net +times.hinet.net +.hitomi.la +|http://hitomi.la +.hiwifi.com +@@||hiwifi.com +hizbuttahrir.org +hizb-ut-tahrir.info +hizb-ut-tahrir.org +.hjclub.info +.hk-pub.com/forum +|http://hk-pub.com +.hk01.com +||hk01.com +.hk32168.com +||hk32168.com +||hkacg.com +||hkacg.net +.hkatvnews.com +hkbc.net +.hkbf.org +.hkbookcity.com +||hkbookcity.com +.hkchurch.org +hkci.org.hk +.hkcmi.edu +||hkcnews.com +||hkcoc.com +||hkctu.org.hk +hkday.net +.hkdailynews.com.hk/china.php +hkdf.org +.hkej.com +.hkepc.com/forum/viewthread.php?tid=1153322 +china.hket.com +||hkfaa.com +hkfreezone.com +hkfront.org +m.hkgalden.com +|https://m.hkgalden.com +.hkgreenradio.org/home +.hkheadline.com*blog +.hkheadline.com/instantnews +hkhkhk.com +hkhrc.org.hk +hkhrm.org.hk +||hkip.org.uk +1989report.hkja.org.hk +hkjc.com +.hkjp.org +.hklft.com +.hklts.org.hk +||hklts.org.hk +news.hkpeanut.com +hkptu.org +.hkreporter.com +||hkreporter.com +|http://hkupop.hku.hk/ +.hkusu.net +||hkusu.net +.hkvwet.com +.hkwcc.org.hk +||hkzone.org +.hmonghot.com +|http://hmonghot.com +.hmv.co.jp/ +hnjhj.com +||hnjhj.com +.hnntube.com +||hola.com +||hola.org +holymountaincn.com +holyspiritspeaks.org +||holyspiritspeaks.org +||derekhsu.homeip.net +.homeperversion.com +|http://homeservershow.com +|http://old.honeynet.org/scans/scan31/sub/doug_eric/spam_translation.html +.hongkongfp.com +||hongkongfp.com +hongmeimei.com +||hongzhi.li +.hootsuite.com +||hootsuite.com +.hopedialogue.org +|http://hopedialogue.org +.hopto.org +.hornygamer.com +.hornytrip.com +|http://hornytrip.com +.hotav.tv +.hotels.cn +hotfrog.com.tw +hotgoo.com +.hotpornshow.com +hotpot.hk +.hotshame.com +||hotspotshield.com +.hotvpn.com +||hotvpn.com +||hougaige.com +||howtoforge.com +||hoxx.com +.hqcdp.org +||hqcdp.org +||hqjapanesesex.com +hqmovies.com +.hrcir.com +.hrcchina.org +.hrea.org +.hrichina.org +||hrichina.org +.hrtsea.com +.hrw.org +||hrw.org +hrweb.org +||hsjp.net +||hsselite.com +|http://hst.net.tw +.hstern.net +.hstt.net +.htkou.net +||htkou.net +.hua-yue.net +.huaglad.com +||huaglad.com +.huanghuagang.org +||huanghuagang.org +.huangyiyu.com +.huaren.us +||huaren.us +.huaren4us.com +.huashangnews.com +|http://huashangnews.com +bbs.huasing.org +huaxia-news.com +huaxiabao.org +huaxin.ph +||huayuworld.org +.huffingtonpost.com/rebiya-kadeer +||hugoroy.eu +||huhaitai.com +||huhamhire.com +.huhangfei.com +||huhangfei.com +huiyi.in +.hulkshare.com +humanrightsbriefing.org +||hung-ya.com +||hungerstrikeforaids.org +||huping.net +hurgokbayrak.com +.hurriyet.com.tr +.hut2.ru +||hutianyi.net +hutong9.net +huyandex.com +.hwadzan.tw +||hwayue.org.tw +||hwinfo.com +||hxwk.org +hxwq.org +||hyperrate.com +ebook.hyread.com.tw +||ebook.hyread.com.tw + +!--------------------II------------------------- +||i1.hk +||i2p2.de +||i2runner.com +||i818hk.com +.i-cable.com +.i-part.com.tw +.iamtopone.com +iask.ca +||iask.ca +iask.bz +||iask.bz +.iav19.com +ibiblio.org/pub/packages/ccic +.iblist.com +||iblogserv-f.net +ibros.org +|http://cn.ibtimes.com +.ibvpn.com +||ibvpn.com +icams.com +blogs.icerocket.com/tag +.icij.org +||icij.org +||icl-fi.org +.icoco.com +||icoco.com + +!--38.103.165.50 +||furbo.org +!--||iconfactory.com +||warbler.iconfactory.net + +||iconpaper.org +!-- Google Pages +||icu-project.org +w.idaiwan.com/forum +||iddddg.com +idemocracy.asia +.identi.ca +||identi.ca +||idiomconnection.com +|http://www.idlcoyote.com +.idouga.com +.idreamx.com +forum.idsam.com +.idv.tw +.ieasy5.com +|http://ieasy5.com +.ied2k.net +.ienergy1.com +|http://if.ttt/ +ifanqiang.com +.ifcss.org +||ifcss.org +ifjc.org +.ift.tt +|http://ift.tt +||ifreewares.com +||igcd.net +.igfw.net +||igfw.net +.igfw.tech +||igfw.tech +.igmg.de +||ignitedetroit.net +.igotmail.com.tw +||igvita.com +||ihakka.net +.ihao.org/dz5 +||iicns.com +.ikstar.com +||ilhamtohtiinstitute.org +||illusionfactory.com +||ilove80.be +||im.tv +@@||myvlog.im.tv +||im88.tw +.imgchili.net +|http://imgchili.net +.imageab.com +.imagefap.com +||imagefap.com +||imageflea.com +imageshack.us +||imagevenue.com +||imagezilla.net +.imb.org +|http://imb.org + +!--IMDB +|http://www.imdb.com/name/nm0482730 +.imdb.com/title/tt0819354 +.imdb.com/title/tt1540068 +.imdb.com/title/tt4908644 + +.img.ly +||img.ly +.imgur.com +||imgur.com +.imkev.com +||imkev.com +.imlive.com +.immoral.jp +impact.org.au +impp.mn +|http://tech2.in.com/video/ +in99.org +in-disguise.com +.incapdns.net +.incloak.com +||incloak.com +||incredibox.fr +||indiandefensenews.in +timesofindia.indiatimes.com/dalai +timesofindia.indiatimes.com/defaultinterstitial.cms +.indiemerch.com +||indiemerch.com +info-graf.fr +website.informer.com +.initiativesforchina.org +.inkui.com +.inmediahk.net +||inmediahk.net +||innermongolia.org +|http://blog.inoreader.com +.inote.tw +.insecam.org +|http://insecam.org +||insidevoa.com +.institut-tibetain.org +|http://internet.org/ +internetdefenseleague.org +internetfreedom.org +!--||interpol.int +||internetpopculture.com +.inthenameofconfuciusmovie.com +||inthenameofconfuciusmovie.com +inxian.com +||inxian.com +ipalter.com +!--||ipcf.org.tw +.ipfire.org +||iphone4hongkong.com +||iphonehacks.com +||iphonetaiwan.org +||iphonix.fr +||ipicture.ru +.ipjetable.net +||ipjetable.net +.ipobar.com/read.php? +ipoock.com/img +.iportal.me +|http://iportal.me +||ippotv.com +.ipredator.se +||ipredator.se +.iptv.com.tw +||iptvbin.com +||ipvanish.com +iredmail.org +chinese.irib.ir +||ironbigfools.compython.net +||ironpython.net +.ironsocket.com +||ironsocket.com +.is.gd +.islahhaber.net +.islam.org.hk +|http://islam.org.hk +.islamawareness.net/Asia/China +.islamhouse.com +||islamhouse.com +.islamicity.com +.islamicpluralism.org +.islamtoday.net +.isaacmao.com +||isaacmao.com +||isgreat.org +||ismaelan.com +.ismalltits.com +||ismprofessional.net +isohunt.com +||israbox.com +.issuu.com +||issuu.com +.istars.co.nz +oversea.istarshine.com +||oversea.istarshine.com +blog.istef.info/2007/10/21/myentunnel +.istiqlalhewer.com +.istockphoto.com +isunaffairs.com +isuntv.com +itaboo.info +||itaboo.info +.italiatibet.org +download.ithome.com.tw +ithelp.ithome.com.tw +||itshidden.com +.itsky.it +.itweet.net +|http://itweet.net +.iu45.com +.iuhrdf.org +||iuhrdf.org +.iuksky.com +.ivacy.com +||ivacy.com +.iverycd.com +.ivpn.net +!--||ivpn.net +||ixquick.com +.ixxx.com +iyouport.com +||iyouport.com +.izaobao.us +||gmozomg.izihost.org +.izles.net +.izlesem.org + +!--------------------JJ------------------------- +||j.mp +blog.jackjia.com +jamaat.org +.jamyangnorbu.com +|http://jamyangnorbu.com +.jandyx.com +||janwongphoto.com +||japan-whores.com +.jav.com +.jav101.com +.jav2be.com +||jav2be.com +.jav68.tv +.javakiba.org +|http://javakiba.org +.javbus.com +||javbus.com +||javfor.me +.javhd.com +.javhip.com +.javmobile.net +|http://javmobile.net +.javmoo.com +.javseen.com +|http://javseen.com +jbtalks.cc +jbtalks.com +jbtalks.my +.jdwsy.com +jeanyim.com +||jfqu36.club +||jfqu37.xyz +||jgoodies.com +.jiangweiping.com +||jiangweiping.com +||jiaoyou8.com +.jiehua.cz +||hk.jiepang.com +||tw.jiepang.com +jieshibaobao.com +.jigglegifs.com +56cun04.jigsy.com +jigong1024.com +daodu14.jigsy.com +specxinzl.jigsy.com +wlcnew.jigsy.com +.jihadology.net +|http://jihadology.net +jinbushe.org +||jinbushe.org +.jingsim.org +zhao.jinhai.de +jingpin.org +||jingpin.org +jinpianwang.com +.jinroukong.com +ac.jiruan.net +||jitouch.com +.jizzthis.com +jjgirls.com +.jkb.cc +|http://jkb.cc +jkforum.net +||jma.go.jp +research.jmsc.hku.hk/social +weiboscope.jmsc.hku.hk +.jmscult.com +|http://jmscult.com +||joachims.org +||jobso.tv +.sunwinism.joinbbs.net +.journalchretien.net +||journalofdemocracy.org +.joymiihub.com +.joyourself.com +jpopforum.net +||fiddle.jshell.net +.jubushoushen.com +||jubushoushen.com +!--Doamin parking +.juhuaren.com +||juliereyc.com +||junauza.com +.june4commemoration.org +.junefourth-20.net +||junefourth-20.net +||bbs.junglobal.net +.juoaa.com +|http://juoaa.com +justfreevpn.com +.justicefortenzin.org +justpaste.it +justtristan.com +juyuange.org +juziyue.com +||juziyue.com +||jwmusic.org +@@||music.jwmusic.org +.jyxf.net + +!--------------------KK------------------------- +||k-doujin.net +||ka-wai.com +||kadokawa.co.jp +.kagyu.org +||kagyu.org.za +.kagyumonlam.org +.kagyunews.com.hk +.kagyuoffice.org +||kagyuoffice.org +||kagyuoffice.org.tw +.kaiyuan.de +.kakao.com +||kakao.com +.kalachakralugano.org +.kankan.today +.kannewyork.com +||kannewyork.com +.kanshifang.com +||kanshifang.com +||kantie.org +kanzhongguo.com +kanzhongguo.eu +.kaotic.com +||karayou.com +karkhung.com +.karmapa.org +.karmapa-teachings.org +||kawase.com +.kba-tx.org +.kcoolonline.com +.kebrum.com +||kebrum.com +.kechara.com +.keepandshare.com/visit/visit_page.php?i=688154 +!--||keepvid.com +.keezmovies.com +.kendincos.net +.kenengba.com +||kenengba.com +||keontech.net +.kepard.com +||kepard.com +wiki.keso.cn/Home +||keycdn.com +.khabdha.org +.khmusic.com.tw +||kichiku-doujinko.com +.kik.com +||kik.com +bbs.kimy.com.tw +.kindleren.com +|http://kindleren.com +|http://www.kindleren.com +.kingdomsalvation.org +||kingdomsalvation.org +kinghost.com +!--.kingstone.com.tw/book/ +||kingstone.com.tw +.kink.com +.kinokuniya.com +||kinokuniya.com +killwall.com +||killwall.com +||kinmen.travel +.kir.jp +.kissbbao.cn +|http://kiwi.kz +||kk-whys.co.jp +!--||kmt.org.tw +.kmuh.org.tw +.knowledgerush.com/kr/encyclopedia +.kobo.com +||kobo.com +.kobobooks.com +||kobobooks.com +||kodingen.com +@@||www.kodingen.com +||kompozer.net +.konachan.com +|http://konachan.com +.kone.com +||koolsolutions.com +.koornk.com +||koornk.com +||koranmandarin.com +.korenan2.com +|http://gojet.krtco.com.tw +.ksdl.org +.ksnews.com.tw +||ktzhk.com +.kui.name/event +kun.im +.kurashsultan.com +||kurtmunger.com +kusocity.com +||kwcg.ca +kwongwah.com.my +.kxsw.life +||kxsw.life +.kyofun.com +kyohk.net +||kyoyue.com +.kyzyhello.com +||kyzyhello.com +.kzeng.info +||kzeng.info + +!--------------------LL------------------------- +la-forum.org +ladbrokes.com +||labiennale.org +.lagranepoca.com +||lagranepoca.com +.lalulalu.com +.lama.com.tw +||lama.com.tw +.lamayeshe.com +|http://lamayeshe.com +|http://www.lamenhu.com +.lamnia.co.uk +||lamnia.co.uk +lamrim.com +.lanterncn.cn +|http://lanterncn.cn +.lantosfoundation.org +.laod.cn +|http://laod.cn +laogai.org +||laogai.org +laomiu.com +.laoyang.info +|http://laoyang.info +||laptoplockdown.com +.laqingdan.net +||laqingdan.net +||larsgeorge.com +.lastcombat.com +|http://lastcombat.com +||lastfm.es +latelinenews.com +.latibet.org +||le-vpn.com +.leafyvpn.net +||leafyvpn.net +leeao.com.cn/bbs/forum.php +!--||leecheukyan.org +lefora.com +||left21.hk +.legalporno.com +.legsjapan.com +|http://leirentv.ca +leisurecafe.ca +||lematin.ch +.lemonde.fr +||lenwhite.com +lerosua.org +||lerosua.org +blog.lester850.info +||lesoir.be +.letou.com +letscorp.net +||letscorp.net +||ss.levyhsu.com +!69.16.175.42 +||cdn.assets.lfpcontent.com +.lhakar.org +|http://lhakar.org +.lhasocialwork.org +.liangyou.net +||liangyou.net +.lianyue.net +||liaowangxizang.net +.liaowangxizang.net +||liberal.org.hk +.libertytimes.com.tw +blogs.libraryinformationtechnology.com/jxyz +.lidecheng.com/blog/fucking-gfw +.lighten.org.tw +.lightnovel.cn +@@|https://www.lightnovel.cn +limiao.net +linkuswell.com +abitno.linpie.com/use-ipv6-to-fuck-gfw +||line.me +||line-apps.com +.linglingfa.com +||lingvodics.com +.link-o-rama.com +|http://link-o-rama.com +.linkideo.com +||api.linksalpha.com +||apidocs.linksalpha.com +||www.linksalpha.com +||help.linksalpha.com +||linux.org.hk +linuxtoy.org/archives/installing-west-chamber-on-ubuntu +.lionsroar.com +.lipuman.com +||liquidvpn.com +||greatfire.us7.list-manage.com +||listentoyoutube.com +listorious.com +.liu-xiaobo.org +||liudejun.com +.liuhanyu.com +.liujianshu.com +||liujianshu.com +.liuxiaobo.net +|http://liuxiaobo.net +liuxiaotong.com +||liuxiaotong.com +.livedoor.jp +.liveleak.com +||liveleak.com +.livestation.com +livestream.com +||livestream.com +||livingonline.us +||livingstream.com +||livevideo.com +.livevideo.com +.liwangyang.com +lizhizhuangbi.com +lkcn.net +.llss.me/ +.load.to +.lobsangwangyal.com +.localdomain.ws +||localdomain.ws +localpresshk.com +||lockestek.com +logbot.net +||logiqx.com +secure.logmein.com +||secure.logmein.com +.londonchinese.ca +.longhair.hk +longmusic.com +||longtermly.net +||lookpic.com +.looktoronto.com +|http://looktoronto.com +.lotsawahouse.org/tibetan-masters/fourteenth-dalai-lama +.lotuslight.org.hk +.lotuslight.org.tw +hkreporter.loved.hk +!--403? +||lpsg.com +||lrfz.com +.lrip.org +||lrip.org +.lsd.org.hk +||lsd.org.hk +lsforum.net +.lsm.org +||lsm.org +.lsmchinese.org +||lsmchinese.org +.lsmkorean.org +||lsmkorean.org +.lsmradio.com/rad_archives +.lsmwebcast.com +.ltn.com.tw +||ltn.com.tw +.luke54.com +.luke54.org +.lupm.org +||lupm.org +||lushstories.com +luxebc.com +lvhai.org +||lvhai.org +||lvv2.com +.lyfhk.net +|http://lyfhk.net +.lzmtnews.org +||lzmtnews.org + +!--------------------MM------------------------- +http://*.m-team.cc +!--m-team.cc/forum +.macrovpn.com +macts.com.tw +||mad-ar.ch +||madrau.com +||madthumbs.com +||magic-net.info +mahabodhi.org +my.mail.ru +.maiplus.com +|http://maiplus.com +.maizhong.org +makkahnewspaper.com +.mamingzhe.com +manicur4ik.ru +.maplew.com +|http://maplew.com +||marc.info +marguerite.su +||martincartoons.com +maskedip.com +.maiio.net +.mail-archive.com +.malaysiakini.com +||makemymood.com +.manchukuo.net +.maniash.com +|http://maniash.com +.mansion.com +.mansionpoker.com +!--||marines.mil +!--markmail.org*message +||martau.com +|http://blog.martinoei.com +.martsangkagyuofficial.org +|http://martsangkagyuofficial.org +maruta.be/forget +.marxist.com +||marxist.net +.marxists.org/chinese +!--||mashable.com +||matainja.com +||mathable.io +||mathiew-badimon.com +||matsushimakaede.com +|http://maturejp.com +mayimayi.com +.maxing.jp +.mcaf.ee +|http://mcaf.ee +||mcadforums.com +mcfog.com +mcreasite.com +.md-t.org +||md-t.org +||meansys.com +.media.org.hk +.mediachinese.com +||mediachinese.com +.mediafire.com/? +.mediafire.com/download +.mediafreakcity.com +||mediafreakcity.com +.medium.com +||medium.com +.meetav.com +||meetup.com +mefeedia.com +jihadintel.meforum.org +||mega.nz +||megaproxy.com +||megarotic.com +megavideo.com +||megurineluka.com +meirixiaochao.com +.meltoday.com +.memehk.com +||memehk.com +memorybbs.com +.memri.org +.memrijttm.org +.mercyprophet.org +|http://mercyprophet.org +||mergersandinquisitions.org +.meridian-trust.org +|http://meridian-trust.org +.meripet.biz +|http://meripet.biz +.meripet.com +|http://meripet.com +merit-times.com.tw +meshrep.com +.mesotw.com/bbs +metacafe.com/watch +||meteorshowersonline.com +|http://www.metro.taipei/ +.metrohk.com.hk/?cmd=detail&categoryID=2 +||metrolife.ca +.metroradio.com.hk +|http://metroradio.com.hk +meyou.jp +.meyul.com +||mgoon.com +||mgstage.com +||mh4u.org +mhradio.org +|http://michaelanti.com +||michaelmarketl.com +|http://bbs.mikocon.com +.microvpn.com +|http://microvpn.com +middle-way.net +.mihk.hk/forum +.mihr.com +mihua.org +!--IP +||mikesoltys.com +.milph.net +|http://milph.net +.milsurps.com +mimiai.net +.mimivip.com +.mimivv.com +.mindrolling.org +|http://mindrolling.org +||mingdemedia.org +.minghui.or.kr +|http://minghui.or.kr +minghui.org +||minghui.org +minghui-a.org +minghui-b.org +minghui-school.org +.mingjinglishi.com +||mingjinglishi.com +mingjingnews.com +||mingjingtimes.com +.mingpao.com +||mingpao.com +.mingpaocanada.com +.mingpaomonthly.com +|http://mingpaomonthly.com +mingpaonews.com +.mingpaony.com +.mingpaosf.com +.mingpaotor.com +.mingpaovan.com +.mingshengbao.com +.minhhue.net +.miniforum.org +.ministrybooks.org +.minzhuhua.net +||minzhuhua.net +minzhuzhanxian.com +minzhuzhongguo.org +||miroguide.com +mirrorbooks.com +.mist.vip +||thecenter.mit.edu +||scratch.mit.edu +.mitao.com.tw +.mitbbs.com +||mitbbs.com +mitbbsau.com +.mixero.com +||mixero.com +mixpod.com +.mixx.com +||mixx.com +||mizzmona.com +.mk5000.com +.mlcool.com +||mlzs.work +.mm-cg.com +||mmaaxx.com +.mmmca.com +mnewstv.com +||mobatek.net +.mobile01.com +||mobile01.com +||mobileways.de +.mobypicture.com +|http://moby.to +||moeerolibrary.com +wiki.moegirl.org +.mofaxiehui.com +.mofos.com +||mog.com +molihua.org +||mondex.org +.money-link.com.tw +|http://money-link.com.tw +|http://www.monlamit.org +.moonbbs.com +||moonbbs.com +c1522.mooo.com +||monitorchina.org +bbs.morbell.com +||morningsun.org +||moroneta.com +.motherless.com +|http://motherless.com +motor4ik.ru +.mousebreaker.com +!--||movabletype.com +.movements.org +||movements.org +||moviefap.com +||www.moztw.org +.mp3buscador.com +mp3ye.eu +||mpettis.com +mpfinance.com +mpinews.com +mponline.hk +.mqxd.org +|http://mqxd.org +mrtweet.com +||mrtweet.com +news.hk.msn.com +news.msn.com.tw +msguancha.com +.mswe1.org +|http://mswe1.org +||mthruf.com +||mubi.com +muchosucko.com +||multiply.com +multiproxy.org +multiupload.com +.mullvad.net +||mullvad.net +.mummysgold.com +.murmur.tw +|http://murmur.tw +.musicade.net +.muslimvideo.com +||muzi.com +||muzi.net +||mx981.com +.my-formosa.com +.my-proxy.com +.my-private-network.co.uk +||my-private-network.co.uk +forum.my903.com +.myactimes.com/actimes +||myanniu.com +.myaudiocast.com +||myaudiocast.com +.myav.com.tw/bbs +.mybbs.us +.myca168.com +.mycanadanow.com +||bbs.mychat.to +||mychinamyhome.com +.mychinamyhome.com +.mychinanet.com +.mychinanews.com +||mychinanews.com +.mychinese.news +||mycnnews.com +||mykomica.org +mycould.com/discuz +.myeasytv.com +||myeclipseide.com +.myforum.com.hk +||myforum.com.hk +||myforum.com.uk +.myfreecams.com +.myfreepaysite.com +.myfreshnet.com +.myiphide.com +||myiphide.com +forum.mymaji.com +mymediarom.com/files/box +||mymoe.moe +||mymusic.net.tw +||myparagliding.com +||mypopescu.com +myradio.hk/podcast +.myreadingmanga.info +mysinablog.com +.myspace.com +!--.blogs.myspace.com +!--||blogs.myspace.com +!--vids.myspace.com/index.cfm?fuseaction=vids. +!--viewmorepics.myspace.com +||myspacecdn.com +.mytalkbox.com +.mytizi.com + +!--------------------NN------------------------- +||naacoalition.org +old.nabble.com +||naitik.net +.nakuz.com/bbs +||nalandabodhi.org +||nalandawest.org +.namgyal.org +namgyalmonastery.org +||namsisi.com +.nanyang.com +||nanyang.com +.nanyangpost.com +||nanyangpost.com +.nanzao.com +!--.nanzao.com/sc/china/20223 +!--.nanzao.com/sc/hk-macau-tw +||jpl.nasa.gov +||pds.nasa.gov +||solarsystem.nasa.gov +.nakido.com +||nakido.com +.naol.ca +.naol.cc +uighur.narod.ru +.nat.moe +||nat.moe +cyberghost.natado.com +||national-lottery.co.uk +||nationalawakening.org +news.nationalgeographic.com/news/2014/06/140603-tiananmen-square +.nationsonline.org/oneworld/tibet +||line.naver.jp +||navyfamily.navy.mil +||navyreserve.navy.mil +||nko.navy.mil +||usno.navy.mil +naweeklytimes.com +.nbtvpn.com +|http://nbtvpn.com +nccwatch.org.tw +.nch.com.tw +.ncn.org +||ncn.org +||etools.ncol.com +.nde.de +.ndr.de +.ned.org +||nekoslovakia.net +||nepusoku.com +||net-fits.pro +!--bbsnew.netbig.com +bbs.netbig.com +.netbirds.com +netcolony.com +bolin.netfirms.com +||netme.cc +netsneak.com +.network54.com +networkedblogs.com +.networktunnel.net +neverforget8964.org +new-3lunch.net +.new-akiba.com +.new96.ca +.newcenturymc.com +|http://newcenturymc.com +newcenturynews.com +||newchen.com +.newchen.com +.newgrounds.com +newipnow.com +.newlandmagazine.com.au +.newnews.ca +news100.com.tw +newschinacomment.org +.newscn.org +||newscn.org +newspeak.cc/story +.newsancai.com +||newsancai.com +.newsdetox.ca +.newsdh.com +||newstamago.com +||newstapa.org +newstarnet.com +.newtaiwan.com.tw +newtalk.tw +||newtalk.tw +newyorktimes.com +||nexon.com +.next11.co.jp +.nextmag.com.tw + +!--hk*.nextmedia.com +!--tw*.nextmedia.com +!--static*.nextmedia.com +.nextmedia.com + +||nexton-net.jp +nexttv.com.tw +.nfjtyd.com +||co.ng.mil +||nga.mil +ngensis.com +.nhentai.net +|http://nhentai.net +.nhk-ondemand.jp +.nicovideo.jp/watch +||nicovideo.jp +||nighost.org +av.nightlife141.com +ninecommentaries.com +.ninjacloak.com +||ninjaproxy.ninja +nintendium.com +taiwanyes.ning.com +usmgtcg.ning.com/forum +||niusnews.com +||njactb.org +njuice.com +||njuice.com +nlfreevpn.com + +!--no-ip.com#NOIP +.ddns.net/ +.gooddns.info +||gotdns.ch +.maildns.xyz +.no-ip.org +.opendn.xyz +.servehttp.com +sytes.net +.whodns.xyz +.zapto.org +|http://dynupdate.no-ip.com/ + +||nobel.se +!--.nobelprize.org +!--|http://nobelprize.org +nobelprize.org/nobel_prizes/peace/laureates/1989 +nobelprize.org/nobel_prizes/peace/laureates/2010 +nobodycanstop.us +||nobodycanstop.us +||nokogiri.org +||nokola.com +noodlevpn.com +.norbulingka.org +nordvpn.com +||nordvpn.com +||novelasia.com +.news.now.com +|http://news.now.com +!--|http://news.now.com/home* +news.now.com%2Fhome +||nownews.com +.nowtorrents.com +.noypf.com +||noypf.com +||npa.go.jp +.npnt.me +|http://npnt.me +.nps.gov +.nradio.me +|http://nradio.me +.nrk.no +||nrk.no +.ntd.tv +||ntd.tv +!!--Orig:ntdtv.com +.ntdtv.com +||ntdtv.com +.ntdtv.co.kr +ntdtv.ca +ntdtv.org +ntdtv.ru +ntdtvla.com +.ntrfun.com +||cbs.ntu.edu.tw +||media.nu.nl +.nubiles.net +||nuexpo.com +.nukistream.com +||nurgo-software.com +||nutaku.net +.nuvid.com +||nvdst.com +nuzcom.com +.nvquan.org +.nvtongzhisheng.org +|http://nvtongzhisheng.org +.nwtca.org +|http://nyaa.eu +||nyaa.si +.nydus.ca +nylon-angel.com +nylonstockingsonline.com +!--nysingtao.com +.nzchinese.com +||nzchinese.net.nz + +!--------------------OO------------------------- +observechina.net +.obutu.com +ocaspro.com +occupytiananmen.com +oclp.hk +.ocreampies.com +||october-review.org +offbeatchina.com +officeoftibet.com +|http://ofile.org +||ogaoga.org +twtr2src.ogaoga.org +.ogate.org +||ogate.org +www2.ohchr.org/english/bodies/cat/docs/ngos/II_China_41.pdf +.oikos.com.tw/v4 +.oiktv.com +oizoblog.com +.ok.ru +||ok.ru +.okayfreedom.com +||okayfreedom.com +okk.tw +|http://filmy.olabloga.pl/player +old-cat.net +||olumpo.com +.olympicwatch.org +omgili.com +||omnitalk.com +||omnitalk.org +cling.omy.sg +forum.omy.sg +news.omy.sg +showbiz.omy.sg +||on.cc +||onedrive.live.com +||onion.city +.onlinecha.com +||onlineyoutube.com +.onlytweets.com +|http://onlytweets.com +onmoon.net +onmoon.com +.onthehunt.com +|http://onthehunt.com +.oopsforum.com +open.com.hk +openallweb.com +opendemocracy.net +||opendemocracy.net +.openervpn.in +openid.net +||openid.net +.openleaks.org +||openleaks.org +openvpn.net +||openvpn.net +||openwebster.com +.openwrt.org.cn +@@||openwrt.org.cn +my.opera.com/dahema +||demo.opera-mini.net +.opus-gaming.com +|http://opus-gaming.com +www.orchidbbs.com +.organcare.org.tw +organharvestinvestigation.net +.orgasm.com +.orgfree.com +||orient-doll.com +orientaldaily.com.my +||orientaldaily.com.my +!--orientaldaily.on.cc +||orn.jp +t.orzdream.com +||t.orzdream.com +tui.orzdream.com +||orzistic.org +||osfoora.com +.otnd.org +||otnd.org +||otto.de +||ourdearamy.com +oursogo.com +.oursteps.com.au +||oursteps.com.au +.oursweb.net +||ourtv.hk +xinqimeng.over-blog.com +||overplay.net +share.ovi.com/media +|http://owl.li +|http://ht.ly +|http://htl.li +|http://mash.to +www.owind.com +|http://www.oxid.it +oyax.com +oyghan.com/wps +.ozchinese.com/bbs +||ow.ly +bbs.ozchinese.com +.ozvoice.org +||ozvoice.org +.ozxw.com +.ozyoyo.com + +!--------------------PP------------------------- +||pachosting.com +.pacificpoker.com +.packetix.net +||pacopacomama.com +.padmanet.com +page2rss.com +||pagodabox.com +.palacemoon.com +forum.palmislife.com +||eriversoft.com +.paldengyal.com +paljorpublications.com +.paltalk.com +!--||pangci.net +||pandapow.co +.pandapow.net +.pandavpn-jp.com +.panluan.net +||panluan.net +||pao-pao.net +paper.li +paperb.us +.paradisehill.cc +.paradisepoker.com +||parler.com +||parsevideo.com +.partycasino.com +.partypoker.com +.passion.com +||passion.com +.passiontimes.hk +pastebin.com +.pastie.org +||pastie.org +||blog.pathtosharepoint.com +pbs.org/wgbh/pages/frontline/gate +pbs.org/wgbh/pages/frontline/tankman +pbs.org/wgbh/pages/frontline/tibet +video.pbs.org + +!--Pbwiki +pbwiki.com +||pbworks.com +||developers.box.net +||wiki.oauth.net +||wiki.phonegap.com +||wiki.jqueryui.com + +||pbxes.com +||pbxes.org +pcdvd.com.tw +.pchome.com.tw +|http://pcij.org +.pcstore.com.tw +||pct.org.tw +pdetails.com +||pdproxy.com +||peace.ca +peacefire.org +peacehall.com +||peacehall.com +|http://pearlher.org +.peeasian.com +.pekingduck.org +||pekingduck.org +.pemulihan.or.id +|http://pemulihan.or.id +||pen.io +penchinese.com +||penchinese.net +.penchinese.net +pengyulong.com +penisbot.com +||blog.pentalogic.net +.penthouse.com +.pentoy.hk/%E4%B8%AD%E5%9C%8B +.pentoy.hk/%E6%99%82%E4%BA%8B +.peoplebookcafe.com +.peoplenews.tw +||peoplenews.tw +.peopo.org +||peopo.org +.percy.in +.perfectgirls.net +perfectvpn.net +.persecutionblog.com +.persiankitty.com +pfd.org.hk +phapluan.org +phayul.com +philborges.com +philly.com +||phncdn.com +||photodharma.net +||photofocus.com +||phuquocservices.com +||picacomiccn.com +.picidae.net +||img*.picturedip.com +picturesocial.com +||pin-cong.com +.pin6.com +||pin6.com +.ping.fm +||ping.fm +||pinimg.com +.pinkrod.com +||pinoy-n.com +||pinterest.at +||pinterest.ca +||pinterest.co.kr +||pinterest.co.uk +.pinterest.com +||pinterest.com +||pinterest.de +||pinterest.dk +||pinterest.fr +||pinterest.jp +||pinterest.nl +||pinterest.se +.pipii.tv +.piposay.com +piraattilahti.org +.piring.com +||pixelqi.com +||css.pixnet.in +||pixnet.net +.pixnet.net +.pk.com +||placemix.com +!--.planetsuzy.org +|http://pictures.playboy.com +||playboy.com +.playboyplus.com +||playboyplus.com +||player.fm +.playno1.com +||playno1.com +||playpcesor.com +plays.com.tw +||m.plixi.com +plm.org.hk +plunder.com +.plurk.com +||plurk.com +.plus28.com +.plusbb.com +.pmatehunter.com +|http://pmatehunter.com +.pmates.com +||po2b.com +pobieramy.top +!--||pocoo.org +||podictionary.com +.pokerstars.com +||pokerstars.com +.pokerstars.net +zh.pokerstrategy.com +politicalchina.org +politicalconsultation.org +.politiscales.net +||poloniex.com +.polymerhk.com +|http://polymerhk.com +.popo.tw +!--||popularpages.net +||popvote.hk +.popyard.com +||popyard.org +.porn.com +.porn2.com +.porn5.com +.pornbase.org +.pornerbros.com +||pornhd.com +.pornhost.com +.pornhub.com +||pornhub.com +.pornhubdeutsch.net +|http://pornhubdeutsch.net +||pornmm.net +.pornoxo.com +.pornrapidshare.com +||pornrapidshare.com +.pornsharing.com +|http://pornsharing.com +.pornsocket.com +.pornstarclub.com +||pornstarclub.com +.porntube.com +.porntubenews.com +.porntvblog.com +||porntvblog.com +.pornvisit.com +.portablevpn.nl +||poskotanews.com +.post01.com +.post76.com +||post76.com +.post852.com +postadult.com +.postimg.org +||potvpn.com +||powercx.com +.powerphoto.org +||www.powerpointninja.com +||presidentlee.tw +||cdn.printfriendly.com +.pritunl.com +provpnaccounts.com +||provpnaccounts.com +.proxfree.com +||proxfree.com +proxyanonimo.es +.proxynetwork.org.uk +||proxynetwork.org.uk +||pts.org.tw +.pttvan.org +pubu.com.tw +puffinbrowser.com +pureinsight.org +.pushchinawall.com +.putty.org +||putty.org + +!-------------Posterous----- +||calebelston.com +||blog.fizzik.com +||nf.id.au +||sogrady.me +||vatn.org +||ventureswell.com +||whereiswerner.com + +.power.com +||power.com +powerapple.com +||powerapple.com +||abc.pp.ru +heix.pp.ru +||prayforchina.net +||premeforwindows7.com +||presentationzen.com +||prestige-av.com +prisoner-state-secret-journal-premier +.prisoneralert.com +||pritunl.com +||privacybox.de +.private.com/home +||privateinternetaccess.com +privatepaste.com +||privatepaste.com +privatetunnel.com +||privatetunnel.com +||privatevpn.com +||procopytips.com +provideocoalition.com +||prosiben.de +proxifier.com +api.proxlet.com +||proxomitron.info +.proxpn.com +||proxpn.com +.proxylist.org.uk +||proxylist.org.uk +.proxypy.net +||proxypy.net +proxyroad.com +.proxytunnel.net +!--403 maybe +||proyectoclubes.com +prozz.net +psblog.name +||psblog.name +||pshvpn.com +||psiphon.ca +.psiphon3.com +||psiphon3.com +.psiphontoday.com +.ptt.cc +||ptt.cc +.puffstore.com +.puuko.com +||pullfolio.com +.punyu.com/puny +||pureconcepts.net +||pureinsight.org +||purepdf.com +||purevpn.com +.purplelotus.org +.pursuestar.com +||pursuestar.com +.pussyspace.com +.putihome.org +.putlocker.com/file +pwned.com +python.com +.python.com.tw +|http://python.com.tw +pythonhackers.com/p +ss.pythonic.life/ + +!--------------------QQ------------------------- +.qanote.com +||qanote.com +.qgirl.com.tw +||qiandao.today +.qi-gong.me +||qi-gong.me +!--#921 +||qiangyou.org +.qidian.ca +.qienkuen.org +||qienkuen.org +||qiwen.lu +qixianglu.cn +bbs.qmzdd.com +.qkshare.com +qoos.com +||qoos.com +blog.qooza.hk/dafengqixi +||efksoft.com +||qstatus.com +||qtweeter.com +||qtrac.eu +.quannengshen.org +|http://quannengshen.org +quantumbooter.net +||quitccp.net +.quitccp.net +||quitccp.org +.quitccp.org +.quora.com/Chinas-Future +.quran.com +|http://quran.com +.quranexplorer.com +qusi8.net +.qvodzy.org +nemesis2.qx.net/pages/MyEnTunnel +qxbbs.org + +!--------------------RR------------------------- +.ra.gg +|http://ra.gg/ +.radicalparty.org +||rael.org +radicalparty.org +||radio.garden +radioaustralia.net.au +.radiohilight.net +||radiohilight.net +opml.radiotime.com +||radiovaticana.org +||radiovncr.com +||raggedbanner.com +||raidcall.com.tw +.raidtalk.com.tw +.rainbowplan.org/bbs +|https://raindrop.io/ +.raizoji.or.jp +|http://raizoji.or.jp +rangwang.biz +rangzen.com +rangzen.net +rangzen.org +|http://blog.ranxiang.com/ +ranyunfei.com +||ranyunfei.com +.rapbull.net +|http://rapidgator.net/ +||rapidmoviez.com +rapidvpn.com +||rapidvpn.com +||rarbgprx.org +.raremovie.cc +|http://raremovie.cc +.raremovie.net +|http://raremovie.net +||rawgit.com +||rawgithub.com +!--.rayfme.com/bbs +||razyboard.com +rcinet.ca +.read100.com +.readingtimes.com.tw +||readingtimes.com.tw +||readmoo.com +.readydown.com +|http://readydown.com +.realcourage.org +.realitykings.com +||realitykings.com +.realraptalk.com +.realsexpass.com +||reason.com +.recordhistory.org +.recovery.org.tw +|http://online.recoveryversion.org +||recoveryversion.com.tw +||red-lang.org +redballoonsolidarity.org +.redchinacn.net +|http://redchinacn.net +redchinacn.org +redtube.com +referer.us +||referer.us +||reflectivecode.com +relaxbbs.com +.relay.com.tw +.releaseinternational.org +religioustolerance.org +renminbao.com +||renminbao.com +.renyurenquan.org +||renyurenquan.org +|http://certificate.revocationcheck.com +subacme.rerouted.org +||resilio.com +.reuters.com +||reuters.com +||reutersmedia.net +.revleft.com +||resistchina.org +retweetist.com +||retweetrank.com +!--connectedchina.reuters.com +!--|http://www.reuters.com/news/video +revver.com +.rfa.org +||rfa.org +.rfachina.com +.rfamobile.org +rfaweb.org +||rferl.org +.rfi.fr +||rfi.fr +|http://rfi.my/ +!--.rhcloud.com +!--Edgecast +|http://vds.rightster.com/ +.rigpa.org +.rileyguide.com +riku.me/ +.ritouki.jp +||ritter.vg +.rlwlw.com +||rlwlw.com +.rmjdw.com +.rmjdw132.info +.roadshow.hk +.roboforex.com +||robustnessiskey.com +!--||roc-taiwan.org +||rocket-inc.net +|http://www2.rocketbbs.com/11/bbs.cgi?id=5mus +|http://www2.rocketbbs.com/11/bbs.cgi?id=freemgl +!--||rocmp.org +||rojo.com +||ronjoneswriter.com +||rolia.net +.roodo.com +.rosechina.net +.rotten.com +.rsf.org +||rsf.org +.rsf-chinese.org +||rsf-chinese.org +.rsgamen.org +||phosphation13.rssing.com +.rssmeme.com +||rssmeme.com +||rtalabel.org +.rthk.hk +|http://rthk.hk +.rthk.org.hk +|http://rthk.org.hk +.rti.org.tw +||rti.org.tw +.rtycminnesota.org +.ruanyifeng.com/blog*some_ways_to_break_the_great_firewall +rukor.org +.runbtx.com +.rushbee.com +.ruten.com.tw +rutube.ru +.ruyiseek.com +.rxhj.net +|http://rxhj.net + +!--------------------SS------------------------- +.s1s1s1.com +||s-cute.com +.s-dragon.org +||s1heng.com +|http://www.s4miniarchive.com +||s8forum.com +cdn1.lp.saboom.com +||sacks.com +sacom.hk +||sacom.hk +||sadpanda.us +.safervpn.com +||safervpn.com +.saintyculture.com +|http://saintyculture.com +.saiq.me +||saiq.me +||sakuralive.com +.sakya.org +.salvation.org.hk +||salvation.org.hk +.samair.ru/proxy/type-01 +.sambhota.org +.cn.sandscotaicentral.com +|http://cn.sandscotaicentral.com +.sanmin.com.tw +sapikachu.net +savemedia.com +||savethesounds.info +.savetibet.de +||savetibet.de +savetibet.fr +savetibet.nl +.savetibet.org +||savetibet.org +savetibet.ru +.savetibetstore.org +||savetibetstore.org +savevid.com +||say2.info +.sbme.me +|http://sbme.me +.sbs.com.au/yourlanguage +.scasino.com +|http://www.sciencemag.org/content/344/6187/953 +.sciencenets.com +.scmp.com +||scmp.com +.scmpchinese.com +||scramble.io +.scribd.com +||scribd.com +||scriptspot.com +seapuff.com +domainhelp.search.com +.searchtruth.com +secretchina.com +||secretchina.com +||secretgarden.no +.secretsline.biz +||secretsline.biz +||securetunnel.com +securityinabox.org +|https://securityinabox.org +.securitykiss.com +||securitykiss.com +||seed4.me +news.seehua.com +seesmic.com +||seevpn.com +||seezone.net +sejie.com +.sendspace.com +|http://tweets.seraph.me/ +sesawe.net +||sesawe.net +.sesawe.org +||sethwklein.net +.setn.com +.settv.com.tw +forum.setty.com.tw +.sevenload.com +||sevenload.com +.sex.com +.sex-11.com +||sex3.com +||sex8.cc +.sexandsubmission.com +.sexbot.com +.sexhu.com +.sexhuang.com +sexinsex.net +||sexinsex.net +.sextvx.com + +!--IP of SexInSex +67.220.91.15 +67.220.91.18 +67.220.91.23 + +|http://*.sf.net +.sfileydy.com +||sfshibao.com +.sftindia.org +.sftuk.org +||sftuk.org +||shadeyouvpn.com +shadow.ma +.shadowsky.xyz +.shadowsocks.asia +||www.shadowsocks.com +.shadowsocks.com +||shadowsocks.com.hk +.shadowsocks.org +||shadowsocks.org +||shadowsocks-r.com +|http://cn.shafaqna.com +.shambalapost.com +.shambhalasun.com +.shangfang.org +||shangfang.org +shapeservices.com +.sharebee.com +||sharecool.org +!--||sharkdolphin.com +sharpdaily.com.hk +||sharpdaily.com.hk +.sharpdaily.hk +.sharpdaily.tw +.shat-tibet.com +sheikyermami.com +.shellfire.de +||shellfire.de +.shenshou.org +shenyun.com +shenyunperformingarts.org +||shenyunperformingarts.org +shenzhoufilm.com +||shenzhoufilm.com +||sherabgyaltsen.com +.shiatv.net +.shicheng.org +shinychan.com +shipcamouflage.com +.shireyishunjian.com +.shitaotv.org +||shixiao.org +||shizhao.org +shizhao.org +shkspr.mobi/dabr +||shodanhq.com +||shooshtime.com +.shop2000.com.tw +||shopee.tw +.shopping.com +.showhaotu.com +.showtime.jp +.shutterstock.com +||shutterstock.com +ch.shvoong.com +.shwchurch.org +||www.shwchurch.org +.shwchurch3.com +|http://shwchurch3.com +.siddharthasintent.org +||sidelinesnews.com +.sidelinessportseatery.com +.sijihuisuo.club +.sijihuisuo.com +.silkbook.com +||simbolostwitter.com +simplecd.org +||simplecd.org +@@||simplecd.me +simpleproductivityblog.com +bbs.sina.com/ +bbs.sina.com%2F +blog.sina.com.tw +dailynews.sina.com/ +dailynews.sina.com%2F +forum.sina.com.hk +home.sina.com +||magazines.sina.com.tw +news.sina.com.hk +news.sina.com.tw +news.sinchew.com.my +.sinchew.com.my/node/ +.sinchew.com.my/taxonomy/term +.singaporepools.com.sg +||singaporepools.com.sg +.singfortibet.com +.singpao.com.hk +singtao.com +||singtao.com +news.singtao.ca +.singtaousa.com +||singtaousa.com +!--||cdp.sinica.edu.tw +sino-monthly.com +||sinocast.com +sinocism.com +sinomontreal.ca +.sinonet.ca +.sinopitt.info +.sinoants.com +||sinoants.com +.sinoquebec.com +.sierrafriendsoftibet.org +sis.xxx +||sis001.com +sis001.us +.site2unblock.com +||site90.net +.sitebro.tw +||sitekreator.com +||siteks.uk.to +||sitemaps.org +.sjrt.org +|http://sjrt.org +||sjum.cn +||sketchappsources.com +||skimtube.com +||skybet.com +|http://users.skynet.be/reves/tibethome.html +.skyking.com.tw +bbs.skykiwi.com +|http://www.skype.com/intl/ +|http://www.skype.com/zh-Hant +||skyvegas.com +.xskywalker.com +||xskywalker.com +||skyxvpn.com +m.slandr.net +.slaytizle.com +.sleazydream.com +||slheng.com +||slideshare.net +forum.slime.com.tw +.slinkset.com +||slickvpn.com +.slutload.com +||smartdnsproxy.com +.smarthide.com +||app.smartmailcloud.com +smchbooks.com +.smh.com.au/world/death-of-chinese-playboy-leaves-fresh-scratches-in-party-paintwork-20120903-25a8v +smhric.org +.smith.edu/dalailama +.smyxy.org +!--TODO-no-homepage +||snapchat.com +.snaptu.com +||snaptu.com +||sndcdn.com +sneakme.net +snowlionpub.com +home.so-net.net.tw/yisa_tsai +||soc.mil +.socks-proxy.net +||socks-proxy.net +.sockscap64.com +||sockslist.net +.socrec.org +|http://socrec.org +.sod.co.jp +.softether.org +||softether.org +.softether-download.com +||softether-download.com +||cdn.softlayer.net +||sogclub.com +sohcradio.com +||sohcradio.com +.sokmil.com +||sorting-algorithms.com +.sostibet.org +.soumo.info +||soup.io +@@||static.soup.io +.sobees.com +||sobees.com +socialwhale.com +.softether.co.jp +||softwarebychuck.com +blog.sogoo.org +soh.tw +||soh.tw +sohfrance.org +||sohfrance.org +chinese.soifind.com +sokamonline.com +.solidaritetibet.org +.solidfiles.com +||somee.com +.songjianjun.com +||songjianjun.com +.sonicbbs.cc +.sonidodelaesperanza.org +.sopcast.com +.sopcast.org +.sorazone.net +||sos.org +bbs.sou-tong.org +.soubory.com +|http://soubory.com +.soul-plus.net +.soulcaliburhentai.net +||soulcaliburhentai.net +||soundcloud.com +!--|https://soundcloud.com/punkgod +.soundofhope.kr +soundofhope.org +||soundofhope.org +||soupofmedia.com +!--.sourceforge.net +!-|http://sourceforge.net +|http://sourceforge.net/p*/shadowsocksgui/ +.sourcewadio.com +southnews.com.tw +sowers.org.hk +||wlx.sowiki.net +||spankbang.com +.spankingtube.com +.spankwire.com +||spb.com +||speakerdeck.com +||speedify.com +spem.at +||spencertipping.com +||spendee.com +||spicevpn.com +.spideroak.com +||spideroak.com +.spike.com +.spotflux.com +||spotflux.com +.spring4u.info +|http://spring4u.info +||sproutcore.com +||sproxy.info +||srocket.us +.ss-link.com +||ss-link.com +.ssglobal.co/wp +|http://ssglobal.co +.ssglobal.me +||ssh91.com +.sspro.ml +|http://sspro.ml +.ssrshare.com +||ssrshare.com +||sss.camp +!--|http://cdn.sstatic.net/ +||sstmlt.moe +sstmlt.net +||sstmlt.net +|http://stackoverflow.com/users/895245 +.stage64.hk +||stage64.hk +||standupfortibet.org +||standwithhk.org +stanford.edu/group/falun +usinfo.state.gov +||statueofdemocracy.org +.starfishfx.com +.starp2p.com +||starp2p.com +.startpage.com +||startpage.com +.startuplivingchina.com +|http://startuplivingchina.com +||static-economist.com +||stc.com.sa +||steel-storm.com +.steganos.com +||steganos.com +.steganos.net +.stepchina.com +!--||stepmania.com +ny.stgloballink.com +hd.stheadline.com/news/realtime +sthoo.com +||sthoo.com +.stickam.com +stickeraction.com/sesawe +.stileproject.com +.sto.cc +.stoporganharvesting.org +||storagenewsletter.com +.storm.mg +||storm.mg +.stoptibetcrisis.net +||stoptibetcrisis.net +||storify.com +.stormmediagroup.com +||stoweboyd.com +stranabg.com +||straplessdildo.com +||streamingthe.net +streema.com/tv/NTDTV_Chinese +cn.streetvoice.com/article +cn.streetvoice.com/diary +cn2.streetvoice.com +tw.streetvoice.com +.strikingly.com +||strongvpn.com +.strongwindpress.com +.student.tw/db +||studentsforafreetibet.org +||stumbleupon.com +stupidvideos.com +.successfn.com +panamapapers.sueddeutsche.de +.sugarsync.com +||sugarsync.com +.sugobbs.com +||sugumiru18.com +||suissl.com +summify.com +.sumrando.com +||sumrando.com +sun1911.com +.sunporno.com +||sunmedia.ca +||sunporno.com +.sunskyforum.com +.sunta.com.tw +.sunvpn.net +.suoluo.org +.superfreevpn.com +.supervpn.net +||supervpn.net +.superzooi.com +|http://superzooi.com +.suppig.net +.suprememastertv.com +|http://suprememastertv.com +.surfeasy.com +||surfeasy.com +.surfeasy.com.au +|http://surfeasy.com.au +||surrenderat20.net +.suyangg.com +|http://suyangg.com +.svsfx.com +.swissinfo.ch +||swissinfo.ch +.swissvpn.net +||swissvpn.net +switchvpn.net +||switchvpn.net +.sydneytoday.com +||sydneytoday.com +.sylfoundation.org +||syncback.com +sysresccd.org +.sytes.net +blog.syx86.com/2009/09/puff +blog.syx86.cn/2009/09/puff +.szbbs.net +.szetowah.org.hk + +!--------------------TT------------------------- +||t-g.com +.t35.com +.t66y.com +||t66y.com +.taa-usa.org +|http://taa-usa.org +.taaze.tw +||taaze.tw +|http://www.tablesgenerator.com/ +tabtter.jp +.tacem.org +.taconet.com.tw +||taedp.org.tw +.tafm.org +.tagwa.org.au +tagwalk.com +||tagwalk.com +tahr.org.tw +.taipeisociety.org +||taipeisociety.org +.taiwanbible.com +.taiwancon.com +.taiwandaily.net +||taiwandaily.net +.taiwandc.org +!--||taiwanembassy.org +.taiwanjustice.com +taiwankiss.com +taiwannation.com +taiwannation.com.tw +||taiwanncf.org.tw +||taiwannews.com.tw +|http://www.taiwanonline.cc/ +!--||taiwantoday.tw +taiwantp.net +||taiwantt.org.tw +taiwanus.net +taiwanyes.com +taiwan-sex.com +.talk853.com +.talkboxapp.com +||talkboxapp.com +.talkcc.com +||talkcc.com +.talkonly.net +||talkonly.net +||tamiaode.tk +||tanc.org +tangben.com +.tangren.us +.taoism.net +|http://taoism.net +.taolun.info +||taolun.info +.tapatalk.com +||tapatalk.com +blog.taragana.com +.tascn.com.au +||taup.net +|http://www.taup.org.tw +.taweet.com +||taweet.com +.tbcollege.org +||tbcollege.org +.tbi.org.hk +.tbicn.org +.tbjyt.org +||tbpic.info +.tbrc.org +tbs-rainbow.org +.tbsec.org +||tbsec.org +tbskkinabalu.page.tl +.tbsmalaysia.org +.tbsn.org +||tbsn.org +.tbsseattle.org +.tbssqh.org +|http://tbssqh.org +tbswd.org +.tbtemple.org.uk +.tbthouston.org +.tccwonline.org +.tcewf.org +tchrd.org +tcnynj.org +||tcpspeed.co +.tcpspeed.com +||tcpspeed.com +.tcsofbc.org +.tcsovi.org +.tdm.com.mo +teamamericany.com +!--OVH +||techviz.net +||teck.in +.teeniefuck.net +teensinasia.com +.telecomspace.com +||telegraph.co.uk +||telegra.ph +.tenacy.com +||tenzinpalmo.com +.tew.org +.thaicn.com +||theatrum-belli.com +theblemish.com +||thebcomplex.com +.thebobs.com +||thebobs.com +.thechinabeat.org +|http://www.thechinastory.org/yearbooks/yearbook-2012/ +.thedalailamamovie.com +|http://thedalailamamovie.com +||thedw.us +thefrontier.hk/tf +cn.thegay.com +|http://thegioitinhoc.vn/ +.thegly.com +.thehots.info +thehousenews.com +||thehun.net +.theinitium.com +||theinitium.com +.thenewslens.com +||thenewslens.com +.thepiratebay.org +||thepiratebay.org +!--||thepiratebay.se +.theporndude.com +||theporndude.com +||theportalwiki.com +thereallove.kr +therock.net.nz +thespeeder.com +||thestandnews.com +thetibetcenter.org +thetibetconnection.org +.thetibetmuseum.org +.thetibetpost.com +||thetibetpost.com +!--Tor +||thetinhat.com +thetrotskymovie.com +thevivekspot.com +||thewgo.org +.theync.com +|http://theync.com +.thinkingtaiwan.com +.thisav.com +|http://thisav.com +.thlib.org +||thomasbernhard.org +.thongdreams.com +threatchaos.com +||throughnightsfire.com +.thumbzilla.com +||thywords.com +.thywords.com.tw +tiananmenmother.org +.tiananmenduizhi.com +||tiananmenduizhi.com +||tiananmenuniv.com +||tiananmenuniv.net +||tiandixing.org +.tianhuayuan.com +.tianlawoffice.com +||tianti.io +tiantibooks.org +||tiantibooks.org +tianyantong.org.cn +.tianzhu.org +.tibet.at +tibet.ca +.tibet.com +||tibet.com +tibet.fr +.tibet.net +||tibet.net +tibet.nu +.tibet.org +||tibet.org +.tibet.sk +tibet.org.tw +.tibet.to +.tibet-envoy.eu +||tibet-envoy.eu +.tibet-foundation.org +.tibet-house-trust.co.uk +||tibet-initiative.de +.tibet-munich.de +.tibet3rdpole.org +|http://tibet3rdpole.org +tibetaction.net +||tibetaction.net +.tibetaid.org +tibetalk.com +.tibetan.fr +tibetan-alliance.org +.tibetanarts.org +.tibetanbuddhistinstitute.org +|http://tibetanbuddhistinstitute.org +tibetancommunity.org +.tibetanjournal.com +.tibetanlanguage.org +.tibetanliberation.org +||tibetanliberation.org +.tibetcollection.com +.tibetanaidproject.org +.tibetancommunityuk.net +|http://tibetancommunityuk.net +tibetanculture.org +tibetanfeministcollective.org +.tibetanpaintings.com +.tibetanphotoproject.com +.tibetanpoliticalreview.org +.tibetanreview.net +|http://tibetansports.org +.tibetanwomen.org +|http://tibetanwomen.org +.tibetanyouth.org +.tibetanyouthcongress.org +||tibetanyouthcongress.org +.tibetcharity.dk +tibetcharity.in +.tibetchild.org +.tibetcity.com +.tibetcorps.org +.tibetexpress.net +|http://tibetexpress.net +tibetfocus.com +tibetfund.org +.tibetgermany.com +||tibetgermany.de +.tibethaus.com +.tibetheritagefund.org +tibethouse.jp +tibethouse.org +||tibethouse.us +.tibetinfonet.net +.tibetjustice.org +.tibetkomite.dk +||tibetmuseum.org +||tibetnetwork.org +.tibetoffice.ch +|http://tibetoffice.ch +tibetoffice.eu +tibetoffice.org +tibetonline.com +||tibetonline.com +.tibetoffice.com.au +|http://tibetoffice.com.au +||tibetonline.tv +.tibetonline.tv +.tibetoralhistory.org +|http://tibetoralhistory.org +.tibetpolicy.eu +.tibetrelieffund.co.uk +tibetsites.com +.tibetsociety.com +||tibetsociety.com +.tibetsun.com +.tibetsupportgroup.org +|http://tibetsupportgroup.org +.tibetswiss.ch +.tibettelegraph.com +tibettimes.net +||tibetwrites.org +.ticket.com.tw +.tigervpn.com +||tigervpn.com +.timdir.com +|http://timdir.com +.time.com +|http://time.com +!--.time.com/time/time100/leaders/profile/rebel +!--.time.com/time/specials/packages/article/0,28804 +!--.time.com/time/magazine +.timsah.com +||blog.tiney.com +tintuc101.com +.tiny.cc +|http://tiny.cc +tinychat.com +||tinypaste.com +.tistory.com +||tkcs-collins.com +.tmagazine.com +||tmagazine.com +.tmdfish.com +|http://tmi.me +.tmpp.org +|http://tmpp.org +.tnaflix.com +||tnaflix.com +.tngrnow.com +.tngrnow.net +.tnp.org +|http://tnp.org +.to-porno.com +||to-porno.com +togetter.com +.tokyo-247.com +.tokyo-hot.com +||tokyo-porn-tube.com +||tokyocn.com +tw.tomonews.net +.tongil.or.kr +.tono-oka.jp +tonyyan.net +.toodoc.com +toonel.net +top81.ws +.topnews.in +.toppornsites.com +|http://toppornsites.com +.torguard.net +||torguard.net +||top.tv +.topshareware.com +.topsy.com +||topsy.com +||toptip.ca +tora.to +.torcn.com +.torproject.org +||torproject.org +torrentprivacy.com +||torrentprivacy.com +|http://torrentproject.se +||torrenty.org +||torrentz.eu +||torvpn.com +||totalvpn.com +.toutiaoabc.com +towngain.com +toypark.in +toytractorshow.com +.tparents.org +.tpi.org.tw +||tpi.org.tw +traffichaus.com +||transparency.org +||treemall.com.tw +trendsmap.com +||trendsmap.com +.trialofccp.org +||trialofccp.org +.trimondi.de/SDLE +.trouw.nl +|http://trouw.nl +.trt.net.tr +trtc.com.tw +.truebuddha-md.org +|http://truebuddha-md.org +trulyergonomic.com +.truth101.co.tv +|http://truth101.co.tv +.truthontour.org +|http://truthontour.org +.truveo.com +.tsctv.net +.tsemtulku.com +tsquare.tv +.tsu.org.tw +tsunagarumon.com +!--|http://www.tsuru-bird.net/ +.tsctv.net +||tt1069.com +.tttan.com +||tttan.com +bb.ttv.com.tw/bb +tu8964.com +.tubaholic.com +.tube.com +tube8.com +||tube8.com +.tube911.com +||tube911.com +.tubecup.com +.tubegals.com +.tubeislam.com +|http://tubeislam.com +.tubestack.com +||tubewolf.com +.tuibeitu.net +tuidang.net +.tuidang.org +||tuidang.org +.tuidang.se +bbs.tuitui.info +.tumutanzi.com +|http://tumutanzi.com +||tumview.com +.tunein.com +|http://tunein.com +||tunnelbear.com +.tunnelr.com +||tunnelr.com +.tuo8.blue +||tuo8.blue +.tuo8.cc +.tuo8.club +||tuo8.club +.tuo8.fit +.tuo8.hk +.tuo8.in +.tuo8.ninja +.tuo8.org +||tuo8.fit +||tuo8.org +.tuo8.pw +|http://tuo8.pw +||tuo8.red +.tuo8.space +tuitwit.com +.turansam.org +.turbobit.net +|http://turbobit.net +.turbohide.com +||turbohide.com +||turkistantimes.com +.tushycash.com +|http://tushycash.com +||app.tutanota.com +.tuvpn.com +||tuvpn.com +|http://tuzaijidi.com +|http://*.tuzaijidi.com +.tw01.org +|http://tw01.org + +!---Tumblr--- +.tumblr.com +||tumblr.com +!--@@||assets.tumblr.com +!--@@||data.tumblr.com +!--@@||media.tumblr.com +!--@@||static.tumblr.com +!--@@||www.tumblr.com +||lecloud.net +|http://cosmic.monar.ch +||slutmoonbeam.com +|http://blog.soylent.com + +.tv.com +|http://tv.com +tvants.com +forum.tvb.com +news.tvb.com/list/world +news.tvb.com/local +news.tvbs.com.tw +.tvboxnow.com +|http://tvboxnow.com/ +tvider.com +.tvmost.com.hk +.tvplayvideos.com +||tvunetworks.com +.tw-blog.com +|https://tw-blog.com +.tw-npo.org +.twaitter.com +twapperkeeper.com +||twapperkeeper.com +||twaud.io +.twaud.io +.twavi.com +.twbbs.net.tw +twbbs.org +twbbs.tw +||twblogger.com +tweepmag.com +.tweepml.org +||tweepml.org +.tweetbackup.com +||tweetbackup.com +tweetboard.com +||tweetboard.com +.tweetboner.biz +||tweetboner.biz +.tweetcs.com +|http://tweetcs.com +|http://deck.ly +!-- Operation discontinued +!--||tweete.net +!--m.tweete.net +||mtw.tl +||tweetedtimes.com +!-- Operation discontinued +!--tweetmeme.com +||tweetmylast.fm +tweetphoto.com +||tweetphoto.com +||tweetrans.com +tweetree.com +||tweetree.com +.tweettunnel.com +||tweettunnel.com +||tweetwally.com +tweetymail.com +||twelve.today +.tweez.net +|http://tweez.net +||twftp.org +||twgreatdaily.com +twibase.com +.twibble.de +||twibble.de +twibbon.com +||twibs.com +.twicountry.org +|http://twicountry.org +twicsy.com +.twiends.com +|http://twiends.com +.twifan.com +|http://twifan.com +twiffo.com +||twiffo.com +.twilightsex.com +twilog.org +twimbow.com +||twindexx.com +twipple.jp +||twipple.jp +||twip.me +twishort.com +||twishort.com +twistar.cc +||twister.net.co +||twisterio.com +twisternow.com +twistory.net +twitbrowser.net +||twitcause.com +||twitgether.com +||twiggit.org +twitgoo.com +twitiq.com +||twitiq.com +.twitlonger.com +||twitlonger.com +|http://tl.gd/ +twitmania.com +twitoaster.com +||twitoaster.com +||twitonmsn.com +!--Same IP +.twit2d.com +||twit2d.com +.twitstat.com +||twitstat.com +||firstfivefollowers.com +||retweeteffect.com +||tweeplike.me +||tweepguide.com +||turbotwitter.com +.twitvid.com +||twitvid.com +|http://twt.tl +twittbot.net +||ads-twitter.com +||twttr.com +||twitter4j.org +.twittercounter.com +||twittercounter.com +twitterfeed.com +.twittergadget.com +||twittergadget.com +.twitterkr.com +||twitterkr.com +||twittermail.com +||twitterrific.com +twittertim.es +||twittertim.es +twitthat.com +||twitturk.com +.twitturly.com +||twitturly.com +.twitzap.com +twiyia.com +||twstar.net +.twtkr.com +|http://twtkr.com +.twnorth.org.tw +twskype.com +twtrland.com +twurl.nl +.twyac.org +||twyac.org +.txxx.com +.tycool.com +||tycool.com + +!--typepad +||typepad.com +@@||www.typepad.com +@@||static.typepad.com +||blog.expofutures.com +||legaltech.law.com +||blogs.tampabay.com +||contests.twilio.com +!-lawprofessors.typepad.com/china_law_prof + +!-------------Twitese----- +.embr.in +||embr.in + +!--------------------UU------------------------- +.u9un.com +||u9un.com +.ubddns.org +|http://ubddns.org +||uberproxy.net +.uc-japan.org +||uc-japan.org +.srcf.ucam.org/salon/ +|http://china.ucanews.com/ +||ucdc1998.org +|http://hum*.uchicago.edu/faculty/ywang/history +||uderzo.it +.udn.com +||udn.com +||udn.com.tw +udnbkk.com/bbs +||uforadio.com.tw +ufreevpn.com +.ugo.com +!--ghs +||uhdwallpapers.org +||uhrp.org +.uighur.nl +||uighur.nl +uighurbiz.net +.ulike.net +ukcdp.co.uk +ukliferadio.co.uk +||ukliferadio.co.uk +ultravpn.fr +||ultravpn.fr +ultraxs.com +umich.edu/~falun +||unblock.cn.com +.unblocker.yt +unblock-us.com +||unblock-us.com +.unblockdmm.com +|http://unblockdmm.com +||unblocksit.es +uncyclomedia.org +.uncyclopedia.hk/wiki +|http://uncyclopedia.hk +!--uncyclopedia.info +|http://uncyclopedia.tw +underwoodammo.com +||underwoodammo.com +||unholyknight.com +.uni.cc +||cldr.unicode.org +.unification.net +.unification.org.tw +||unirule.cloud +.unitedsocialpress.com +.unix100.com +||unknownspace.org +.unodedos.com +unpo.org +.untraceable.us +|http://untraceable.us +||uocn.org +tor.updatestar.com +.upholdjustice.org +.upload4u.info +uploaded.net/file +|http://uploaded.net/file +|http://uploaded.to/file +.uploadstation.com/file +.upmedia.mg +||upmedia.mg +.upornia.com +|http://upornia.com +||uproxy.org +||uptodown.com +.upwill.org +ur7s.com +||urbansurvival.com +myshare.url.com.tw/ +||urlborg.com +||urlparser.com +us.to +||usacn.com +.usaip.eu +||usaip.eu +dalailama.usc.edu +iipdigital.usembassy.gov +||usfk.mil +||usma.edu +||usmc.mil +.usocctn.com +|http://tarr.uspto.gov/ +||tsdr.uspto.gov +.ustream.tv +||ustream.tv +!--||ustwrap.info +.usunitednews.com +|http://usunitednews.com +usus.cc +.utopianpal.com +||utopianpal.com +.uu-gg.com +.uvwxyz.xyz +||uvwxyz.xyz +.uwants.com +.uwants.net +uyghur.co.uk +|http://uyghur-j.org +||uyghuramerican.org +.uyghurcanadiansociety.org +.uyghurensemble.co.uk +||uyghurcongress.org +.uyghurpen.org +.uyghurpress.com +|https://uyghurpress.com +.uyghurstudies.org +|http://uyghurstudies.org +uygur.org +|http://uymaarip.com/ + +!--------------------VV------------------------- +.v2ray.com +||v2ray.com +.van001.com +.van698.com +.vanemu.cn +.vanilla-jp.com +.vanpeople.com +vansky.com +||vaticannews.va +||vcf-online.org +||vcfbuilder.org +.vegasred.com +.velkaepocha.sk +.venbbs.com +.venchina.com +.venetianmacao.com +||venetianmacao.com +veoh.com +mysite.verizon.net +vermonttibet.org +.versavpn.com +||versavpn.com +||verybs.com +.vft.com.tw +.viber.com +||viber.com +.vica.info +.victimsofcommunism.org +|http://victimsofcommunism.org +||vid.me +||vidble.com +videobam.com +||videobam.com +.videodetective.com +.videomega.tv +||videomega.tv +.videomo.com +videopediaworld.com +.videopress.com +.vidinfo.org/video +vietdaikynguyen.com +.vijayatemple.org +vimeo.com +||vimeo.com +||vimperator.org +||vincnd.com +||vinniev.com +|http://www.lib.virginia.edu/area-studies/Tibet/tibet.html +.virtualrealporn.com +||virtualrealporn.com +visibletweets.com +|http://ny.visiontimes.com +.vital247.org +||viu.com +.vivahentai4u.net +.vivatube.com +.vivthomas.com +||vivthomas.com +.vjav.com +||vjav.com +.vjmedia.com.hk +.vllcs.org +|http://vllcs.org +||vmixcore.com +||vnet.link +cn.voa.mobi +tw.voa.mobi +.voachineseblog.com +||voachineseblog.com +voagd.com +.voacantonese.com +||voacantonese.com +voachinese.com +||voachinese.com +.voanews.com +||voanews.com +voatibetan.com +||voatibetan.com +.voatibetanenglish.com +||voatibetanenglish.com +.vocativ.com +vocn.tv +.vot.org +||vot.org +.vovo2000.com +|http://vovo2000.com +.voxer.com +||voxer.com +.voy.com +||vpn.ac +.vpn4all.com +||vpn4all.com +.vpnaccount.org +|http://vpnaccount.org +.vpnaccounts.com +||vpnaccounts.com +.vpncomparison.org +.vpncup.com +||vpncup.com +vpnbook.com +.vpncoupons.com +|http://vpncoupons.com +.vpndada.com +||vpndada.com +.vpnfan.com +vpnfire.com +.vpnfires.biz +.vpnforgame.net +||vpnforgame.net +||vpngate.jp +.vpngate.net +||vpngate.net +.vpngratis.net +vpnhq.com +.vpnmaster.com +||vpnmaster.com +.vpnmentor.com +||vpnmentor.com +.vpninja.net +||vpninja.net +.vpnintouch.com +||vpnintouch.net +vpnjack.com +||vpnjack.com +.vpnpick.com +||vpnpick.com +||vpnpop.com +||vpnpronet.com +.vpnreactor.com +||vpnreactor.com +||vpnreviewz.com +.vpnsecure.me +||vpnsecure.me +.vpnshazam.com +||vpnshazam.com +.vpnshieldapp.com +||vpnshieldapp.com +.vpnsp.com +.vpntraffic.com +.vpntunnel.com +||vpntunnel.com +.vpnuk.info +||vpnuk.info +||vpnunlimitedapp.com +.vpnvip.com +||vpnvip.com +.vpnworldwide.com +.vporn.com +||vporn.com +.vpser.net +@@||vpser.net +vraiesagesse.net +.vrmtr.com +||vtunnel.com +||vuku.cc + +!--------------------WW------------------------- +lists.w3.org/archives/public +||w3schools.com +||waffle1999.com +.wahas.com +.waigaobu.com +waikeung.org/php_wind +.wailaike.net +.waiwaier.com +|http://waiwaier.com +||wallmama.com +wallornot.org +||wallpapercasa.com +.wallproxy.com +@@||wallproxy.com.cn +||waltermartin.com +||waltermartin.org +||www.wan-press.org +||wanderinghorse.net +||wangafu.net +||wangjinbo.org +.wangjinbo.org +wanglixiong.com +.wango.org +||wango.org +wangruoshui.net +www.wangruowang.org +want-daily.com +wapedia.mobi/zhsimp +||waselpro.com +.watchinese.com +.wattpad.com +||wattpad.com +.makzhou.warehouse333.com +washeng.net +.watch8x.com +||watchmygf.net +||wav.tv +.wdf5.com +.wearehairy.com +.wearn.com +||wearn.com +|http://hkcoc.weather.com.hk +||hudatoriq.web.id +||web2project.net +webbang.net +.webevader.org +.webfreer.com +weblagu.com +.webjb.org +.webrush.net +webs-tv.net +.websitepulse.com/help/testtools.china-test +|http://www.websnapr.com +.webwarper.net +|http://webwarper.net +webworkerdaily.com +.weekmag.info +||wefightcensorship.org +.wefong.com +weiboleak.com +.weihuo.org +weijingsheng.org +.weiming.info +||weiming.info +weiquanwang.org +|http://weisuo.ws +.welovecock.com +.wemigrate.org +|http://wemigrate.org +wengewang.com +||wengewang.org +.wenhui.ch +|http://trans.wenweipo.com/gb/ +.wenxuecity.com +||wenxuecity.com +.wenyunchao.com +||wenyunchao.com +.westca.com +||westca.com +||westernwolves.com +.westkit.net +||westpoint.edu +.westernshugdensociety.org +wetpussygames.com +.wetplace.com +wexiaobo.org +||wexiaobo.org +wezhiyong.org +||wezone.net +.wforum.com +||wforum.com/ +.whatblocked.com +||whatblocked.com +.wheatseeds.org +||wheelockslatin.com +.whippedass.com +!--|http://who.is/ +.whoer.net +||whoer.net +whotalking.com +whylover.com +||whyx.org +|http://zh.ecdm.wikia.com +|http://evchk.wikia.com +fq.wikia.com +zh.pttpedia.wikia.com/wiki/%E7%BF%92%E5%8C%85%E5%AD%90%E4%B9%8B%E4%BA%82 +cn.uncyclopedia.wikia.com +zh.uncyclopedia.wikia.com +||wikileaks.ch +||wikileaks.com +||wikileaks.de +||wikileaks.eu +||wikileaks.lu +.wikileaks.org +||wikileaks.org +||wikileaks.pl +.wikileaks-forum.com +wildammo.com +.williamhill.com +||collateralmurder.com +||collateralmurder.org +wikilivres.info/wiki/%E9%9B%B6%E5%85%AB%E5%AE%AA%E7%AB%A0 +||wikimapia.org + +!-------------Wikipedia Related------------- +!!Emergency need only(IP/Port block usage)!! +!------0------ +!--||mediawiki.org +!--@@||m.mediawiki.org +!------1------ +!--||wikidata.org +!--@@||m.wikidata.org +!------2------ +!--||wikimedia.org +!--@@||lists.wikimedia.org +!--@@||m.wikimedia.org +!--@@||phabricator.wikimedia.org +!--@@||upload.wikimedia.org +!--@@||wikitech.wikimedia.org +!------3------ +!--||wikibooks.org +!--@@||m.wikibooks.org +!------4------ +!--||wikiversity.org +!--@@||m.wikiversity.org +!------5------ +!--||wikisource.org +!--@@||m.wikisource.org +|http://zh.wikisource.org +!------6------ +!--||wikiquote.org +!--@@||m.wikiquote.org +!------7------ +!--||wikinews.org +!--@@||m.wikinews.org +||zh.wikinews.org +!------8------ +!--||wikivoyage.org +!--@@||m.wikivoyage.org +!--|http://zh.wikivoyage.org +!------9------ +!--||wiktionary.org +!--@@||m.wiktionary.org +!--|http://zh.wiktionary.org +!-----10------ +!--||wikimediafoundation.org +!--@@||m.wikimediafoundation.org +!----Main----- +!!--||en.wikipedia.org +!--||wikipedia.org +||ja.wikipedia.org +!!--zh.wikipedia.org +!--||zh.wikipedia.org +!!--||ug.m.wikipedia.org +!!--zh.m.wikipedia.org +!!--|https://zh.m.wikipedia.org +!--@@||m.wikipedia.org +!!--|https://zh.wikipedia.org +!--Other Languages of Wikipedia +!!--wuu.wikipedia.org +!!--|https://wuu.wikipedia.org +!!--zh-yue.wikipedia.org +!!--|https://zh-yue.wikipedia.org +!!! Starting with !! are previous rules replaced by: +||wikipedia.org + +||wikiwiki.jp +||casino.williamhill.com +||sports.williamhill.com +||vegas.williamhill.com +||willw.net +||windowsphoneme.com +.windscribe.com +||windscribe.com +||community.windy.com +||wingy.site +.winning11.com +winwhispers.info +||wionews.com +||wiredbytes.com +||wiredpen.com +!--||wireshark.org +.wisdompubs.org +.wisevid.com +||wisevid.com +.witnessleeteaching.com +.witopia.net +.wjbk.org +||wjbk.org +|http://wn.com +.wnacg.com +.wnacg.org +.wo.tc +||woeser.com +|http://woesermiddle-way.net/ +.wokar.org +|http://wokar.org +wolfax.com +||wolfax.com +||woolyss.com +woopie.jp +||woopie.jp +woopie.tv +||woopie.tv +||workatruna.com +.workerdemo.org.hk +.workerempowerment.org +||workersthebig.net +.worldcat.org +worldjournal.com +.worldvpn.net +||worldvpn.net + +||videopress.com +.wordpress.com +|http://*.wordpress.com +||chenshan20042005.wordpress.com +||chinaview.wordpress.com +||cnbbnews.wordpress.com +||freedominfonetweb.wordpress.com +||hka8964.wordpress.com +||hkanews.wordpress.com +||hqsbnet.wordpress.com +||hqsbonline.wordpress.com +||investigating.wordpress.com +||jobnewera.wordpress.com +||minghuiyw.wordpress.com +||wo3ttt.wordpress.com +||sujiatun.wordpress.com +||xijie.wordpress.com +||wp.com + +!-||wormsculptor.com +.wow.com +.wow-life.net +||wowlegacy.ml +||wowporn.com +||wowgirls.com +.wowrk.com +woxinghuiguo.com +.woyaolian.org +|http://woyaolian.org +.wpoforum.com +||wpoforum.com +.wqyd.org +||wqyd.org +wrchina.org +wretch.cc +!-cn.wsj.com/gb/20130215/tec113853.asp +.wsj.com +||wsj.com +.wsj.net +||wsj.net +.wsjhk.com +.wtbn.org +.wtfpeople.com +wuerkaixi.com +||wufafangwen.com +wufi.org.tw +||wuguoguang.com +wujie.net +wujieliulan.com +||wujieliulan.com +wukangrui.net +||wuw.red +||wuyanblog.com +.wwitv.com +||wwitv.com +wzyboy.im/post/160 + +!--------------------XX------------------------- +.x-berry.com +||x-berry.com +||x-art.com +||x-wall.org +x1949x.com +x365x.com +xanga.com +||xbabe.com +.xbookcn.com +||xbookcn.com +||xcafe.in +||xcity.jp +.xcritic.com +|http://cdn*.xda-developers.com +.xerotica.com +destiny.xfiles.to/ubbthreads +.xfm.pp.ru +.xgmyd.com +||xgmyd.com +xhamster.com +||xhamster.com +.xianba.net +.xianchawang.net +.xianjian.tw +|http://xianjian.tw +.xianqiao.net +.xiaobaiwu.com +.xiaochuncnjp.com +.xiaod.in +.xiaohexie.com +||xiaolan.me +||xiaoma.org +||xiaohexie.com +xiezhua.com +.xihua.es +forum.xinbao.de/forum +.xing.com +|http://xing.com +.xinmiao.com.hk +||xinmiao.com.hk +xinsheng.net +xinshijue.com +xinhuanet.org +|http://xinyubbs.net +.xiongpian.com +.xiuren.org +xizang-zhiye.org +xjp.cc +||xjp.cc +||xjtravelguide.com +xlfmtalk.com +||xlfmwz.info +||xml-training-guide.com +xmovies.com +||xnxx.com +xpdo.net +||xpud.org +.xrentdvd.com +.xskywalker.net +||xtube.com +blog.xuite.net +vlog.xuite.net +xuzhiyong.net +||xuchao.org +xuchao.net +||xuchao.net +xvideo.cc +.xvideos.com +||xvideos.com +||xvideos.es +.xkiwi.tk/ +.xxbbx.com +.xxlmovies.com +||xxx.com +.xxx.xxx +|http://xxx.xxx +.xxxfuckmom.com +||xxxx.com.au +.xxxymovies.com +|http://xxxymovies.com +xys.org +xysblogs.org +xyy69.com +xyy69.info + +!--------------------YY------------------------- +||yakbutterblues.com +||yam.com +||yam.org.tw +.yanghengjun.com +yangjianli.com +.yasni.co.uk +||yasni.co.uk +!--||yasukuni.or.jp +.yayabay.com/forum +.ydy.com +.yeahteentube.com +||yeahteentube.com +||yecl.net +||yeelou.com +||yeeyi.com +yegle.net +||yegle.net +.yes.xxx +||yes123.com.tw +||yesasia.com +||yesasia.com.hk +.yes-news.com +|http://yes-news.com +.yespornplease.com +||yespornplease.com +|http://yeyeclub.com +!--yfrog.com +||yhcw.net +.yibada.com +.yibaochina.com +.yidio.com +||yidio.com +yilubbs.com +xa.yimg.com +.yingsuoss.com +.yipub.com +||yipub.com +yinlei.org/mt +.yizhihongxing.com +.yobt.com +.yobt.tv +||yobt.tv +.yogichen.org +||yogichen.org +.yolasite.com +.yomiuri.co.jp +yong.hu +.yorkbbs.ca +||youxu.info +.youjizz.com +||youjizz.com +.youmaker.com +||youmaker.com +.youngpornvideos.com +youngspiration.hk +.youpai.org +||youpai.org +.your-freedom.net +||yourepeat.com +.yourprivatevpn.com +||yourprivatevpn.com +.yousendit.com +||yousendit.com +.youthnetradio.org/tmit/forum +blog.youthwant.com.tw +me.youthwant.com.tw +share.youthwant.com.tw +topic.youthwant.com.tw +.youporn.com +||youporn.com +.youporngay.com +||youporngay.com +.yourlisten.com +|http://yourlisten.com +.yourlust.com +|http://yourlust.com +youshun12.com +.youtubecn.com +youversion.com +||youversion.com +blog.youxu.info/2010/03/14/west-chamber +ytht.net +yuanming.net +.yuanzhengtang.org +.yulghun.com +||yunchao.net +||yuntipub.com +.yuvutu.com +||yvesgeleyn.com +.ywpw.com/forums/history/post/A0/p0/html/227 +yx51.net +.yyii.org +||yyii.org +.yzzk.com +|http://yzzk.com + +!--------------------ZZ------------------------- +zacebook.com +.zalmos.com +||zalmos.com +||zannel.com +.zaobao.com +||zaobao.com +|http://zaobao.com.sg +||zaobao.com.sg +.zaozon.com +||zdnet.com.tw +.zello.com +||zello.com +.zengjinyan.org +.zenmate.com +||zenmate.com +||zenmate.com.ru +||zeronet.io +||zeutch.com +!--www.zfreet.com/post/usejump-browns.html +.zfreet.com +.zgsddh.com +zgzcjj.net +.zhanbin.net +||zhanbin.net +.zhangboli.net +||zhangtianliang.com +||zhanlve.org +zhenghui.org +.zhengjian.org +||zhengjian.org +zhengwunet.org +zhenlibu.info +||zhenlibu.info +.zhenlibu1984.com +||zhenlibu1984.com +|http://zhenxiang.biz +.zhinengluyou.com +zhongguo.ca +|http://zhongguorenquan.org +zhongguotese.net +||zhongguotese.net +||zhongmeng.org +.zhoushuguang.com +||zhreader.com +.zhuangbi.me +||zhuangbi.me +.zhuanxing.cn +||zhuatieba.com +zhuichaguoji.org +||zhuichaguoji.org +|http://book.zi5.me +.ziddu.com/download +||zillionk.com +.zinio.com +||zinio.com +.ziporn.com +.zippyshare.com +.zkaip.com +||zkaip.com +realforum.zkiz.com +!--||zlib.net +||zmw.cn +.zodgame.us +zomobo.net +.zonaeuropa.com +||zonaeuropa.com +||zonghexinwen.com +.zonghexinwen.net +||zoogvpn.com +||zootool.com +.zoozle.net +writer.zoho.com +||zorrovpn.com +||zpn.im +||zspeeder.me +.zsrhao.com +.zuo.la +||zuo.la +||zuobiao.me +.zuola.com +||zuola.com +||zvereff.com +.zynaima.com +zyzc9.com +.zzcartoon.com +!##############General List End################# + +!###########Supplemental List Start############# +!-----------------URL Keywords------------------ +64memo +aHR0cHM6Ly95ZWNsLm5ldA +freenet +.google.*/falun +phobos.apple.com*/video +q=freedom +q%3Dfreedom +remembering_tiananmen_20_years +search*safeweb +q=triangle +q%3DTriangle +ultrareach +ultrasurf +!#############Supplemental List End############# + +!################Whitelist Start################ +@@||aliyun.com +@@||baidu.com +!--@@||bing.com +@@||chinaso.com +@@||chinaz.com +@@|http://nrch.culture.tw/ + +!---Some are powered by GuXiang (BGP), please comment off if +!---you encounter connectivity issues. +@@||adservice.google.com +!--ISP cache works sometimes, verified at drpeng + gehua. +@@||dl.google.com +@@||kh.google.com +@@||khm.google.com +@@||khm0.google.com +@@||khm1.google.com +@@||khm2.google.com +@@||khm3.google.com +@@||khmdb.google.com +@@||tools.google.com +@@||clientservices.googleapis.com +@@||fonts.googleapis.com +@@||khm.googleapis.com +@@||khm0.googleapis.com +@@||khm1.googleapis.com +@@||khm2.googleapis.com +@@||khm3.googleapis.com +@@||khmdb.googleapis.com +@@||storage.googleapis.com +@@||translate.googleapis.com +@@||update.googleapis.com +@@||safebrowsing.googleapis.com +@@||cn.gravatar.com +@@||connectivitycheck.gstatic.com +@@||csi.gstatic.com +@@||fonts.gstatic.com +@@||ssl.gstatic.com +@@||haosou.com +@@||ip.cn +@@||jike.com +@@|http://translate.google.cn +@@|http://www.google.cn/maps +@@||http2.golang.org +@@||gov.cn +@@||qq.com +@@||sina.cn +@@||sina.com.cn +@@||sogou.com +@@||so.com +@@||soso.com +@@||uluai.com.cn +@@||weibo.com +@@||yahoo.cn +@@||youdao.com +@@||zhongsou.com +@@|http://ime.baidu.jp +!################Whitelist End################## +!---------------------EOF----------------------- diff --git a/packages/core/src/modules/plugin/overwall/pac.js b/packages/core/src/modules/plugin/overwall/pac.js new file mode 100644 index 00000000..08feeead --- /dev/null +++ b/packages/core/src/modules/plugin/overwall/pac.js @@ -0,0 +1,12107 @@ +var __PROXY__ = 'PROXY 127.0.0.1:1080;' +var __USERRULES__ = [] +var __RULES__ = [ + '||ac', + '||ad', + '||ae', + '||af', + '||ag', + '||al', + '||am', + '||an', + '||ao', + '||aq', + '||ar', + '||at', + '||au', + '||aw', + '||ax', + '||az', + '||ba', + '||bg', + '||bh', + '||bi', + '||bj', + '||bm', + '||bn', + '||bo', + '||br', + '||bs', + '||bv', + '||bw', + '||by', + '||bz', + '||ca', + '||cd', + '||cg', + '||cl', + '||cm', + '||cr', + '||cu', + '||cw', + '||cx', + '||cy', + '||cz', + '||de', + '||dk', + '||dz', + '||ec', + '||eg', + '||eh', + '||er', + '||es', + '||eu', + '||fi', + '||fj', + '||fk', + '||fo', + '||fr', + '||ga', + '||gb', + '||gd', + '||ge', + '||gh', + '||gi', + '||gl', + '||gm', + '||gn', + '||gr', + '||gs', + '||gt', + '||gu', + '||gw', + '||gy', + '||hk', + '||hn', + '||ht', + '||hu', + '||ie', + '||il', + '||in', + '||iq', + '||ir', + '||je', + '||jm', + '||jo', + '||jp', + '||ke', + '||kh', + '||ki', + '||kn', + '||kp', + '||kr', + '||kw', + '||ky', + '||kz', + '||lb', + '||lc', + '||li', + '||lk', + '||lr', + '||ls', + '||lt', + '||lu', + '||ly', + '||ma', + '||mc', + '||md', + '||mf', + '||mg', + '||mh', + '||mk', + '||mn', + '||mo', + '||mp', + '||mq', + '||mr', + '||mt', + '||mu', + '||mw', + '||mx', + '||my', + '||mz', + '||na', + '||nc', + '||ne', + '||nf', + '||ng', + '||ni', + '||nl', + '||no', + '||np', + '||nr', + '||nu', + '||nz', + '||om', + '||pa', + '||pe', + '||pf', + '||pg', + '||ph', + '||pl', + '||pn', + '||re', + '||ro', + '||ru', + '||rw', + '||sa', + '||sc', + '||sd', + '||se', + '||sg', + '||si', + '||sj', + '||sk', + '||sl', + '||sn', + '||sr', + '||ss', + '||st', + '||su', + '||sv', + '||sx', + '||sy', + '||sz', + '||tc', + '||td', + '||tf', + '||th', + '||tj', + '||tk', + '||tl', + '||tm', + '||tn', + '||to', + '||tp', + '||tr', + '||tt', + '||tw', + '||tz', + '||ua', + '||ug', + '||uk', + '||um', + '||us', + '||uy', + '||uz', + '||va', + '||vc', + '||ve', + '||vg', + '||vi', + '||vn', + '||vu', + '||wf', + '||yt', + '||za', + '||zm', + '||zw', + '||afl', + '||mlb', + '||nba', + '||nfl', + '||nra', + '||avery', + '||bbb', + '||bcg', + '||ceb', + '||crs', + '||dnb', + '||dnp', + '||duns', + '||dvag', + '||erni', + '||globalx', + '||ice', + '||locus', + '||mckinsey', + '||olayangroup', + '||olayan', + '||praxi', + '||sap', + '||seek', + '||vistaprint', + '||vista', + '||wtc', + '||xerox', + '||athleta', + '||bananarepublic', + '||bloomberg', + '||boots', + '||calvinklein', + '||cartier', + '||chloe', + '||gap', + '||gucci', + '||hermes', + '||iwc', + '||jlc', + '||lancaster', + '||lipsy', + '||loft', + '||mango', + '||montblanc', + '||mrporter', + '||netaporter', + '||nextdirect', + '||next', + '||nike', + '||oldnavy', + '||omega', + '||panerai', + '||patagonia', + '||piaget', + '||piperlime', + '||polo', + '||redstone', + '||swatch', + '||aarp', + '||abbott', + '||abbvie', + '||aetna', + '||alcon', + '||anthem', + '||bms', + '||boehringer', + '||caremore', + '||cialis', + '||dabur', + '||fresenius', + '||jnj', + '||merck', + '||mutuelle', + '||sanofi', + '||aeg', + '||airbus', + '||alstom', + '||aramco', + '||blanco', + '||bosch', + '||bostik', + '||chesapeake', + '||chk', + '||crown', + '||doosan', + '||dupont', + '||flir', + '||fls', + '||flsmidth', + '||gecompany', + '||grainger', + '||hitachi', + '||honeywell', + '||ifm', + '||ipiranga', + '||jio', + '||komatsu', + '||kone', + '||ksb', + '||kuokgroup', + '||leclerc', + '||lidl', + '||linde', + '||lotte', + '||man', + '||mtr', + '||reliance', + '||rexroth', + '||ril', + '||rockwool', + '||rwe', + '||sandvikcoromant', + '||sandvik', + '||sapphire', + '||sca', + '||schaeffler', + '||schmidt', + '||schwarzgroup', + '||schwarz', + '||sener', + '||sew', + '||sncf', + '||statoil', + '||total', + '||vanish', + '||walter', + '||warman', + '||weber', + '||weir', + '||woodside', + '||zara', + '||zippo', + '||agakhan', + '||akdn', + '||ansons', + '||bharti', + '||extraspace', + '||genting', + '||glean', + '||ikano', + '||imamat', + '||ladbrokes', + '||livestrong', + '||maif', + '||mattel', + '||shell', + '||transformers', + '||vana', + '||wme', + '||astrium', + '||cern', + '||emerck', + '||hisamitsu', + '||lilly', + '||lundbeck', + '||lupin', + '||merckmsd', + '||msd', + '||mtpc', + '||otsuka', + '||pfizer', + '||stada', + '||teva', + '||toray', + '||weather', + '||auspost', + '||deutschepost', + '||dhl', + '||epost', + '||fedex', + '||pitney', + '||aaa', + '||abarth', + '||adac', + '||alfaromeo', + '||audi', + '||bentley', + '||bmw', + '||bridgestone', + '||bugatti', + '||buick', + '||cadillac', + '||case', + '||caseih', + '||chevrolet', + '||chevy', + '||chrysler', + '||datsun', + '||dodge', + '||dunlop', + '||ferrari', + '||fiat', + '||firestone', + '||ford', + '||gmc', + '||goodyear', + '||honda', + '||hyundai', + '||infiniti', + '||iveco', + '||jaguar', + '||jeep', + '||kia', + '||lamborghini', + '||lancia', + '||landrover', + '||lexus', + '||lincoln', + '||maserati', + '||mini', + '||mitsubishi', + '||mopar', + '||newholland', + '||nissan', + '||ram', + '||seat', + '||srt', + '||suzuki', + '||tatamotors', + '||toyota', + '||tvs', + '||uconnect', + '||volkswagen', + '||volvo', + '||aigo', + '||android', + '||apple', + '||bestbuy', + '||brother', + '||canon', + '||dell', + '||digikey', + '||fujitsu', + '||fujixerox', + '||goldpoint', + '||ibm', + '||nikon', + '||nokia', + '||olympus', + '||panasonic', + '||philips', + '||pioneer', + '||samsung', + '||sharp', + '||sony', + '||toshiba', + '||yodobashi', + '||allfinanz', + '||allfinanzberater', + '||allfinanzberatung', + '||ally', + '||americanexpress', + '||amex', + '||amp', + '||anz', + '||banamex', + '||barclaycard', + '||barclays', + '||bbt', + '||bbva', + '||bnl', + '||bnpparibas', + '||bofa', + '||bradesco', + '||capitalone', + '||cashbackbonus', + '||cba', + '||cfa', + '||chase', + '||cimb', + '||citadel', + '||citi', + '||commbank', + '||deloitte', + '||discover', + '||everbank', + '||fidelity', + '||hdfcbank', + '||hdfc', + '||hsbc', + '||itau', + '||jcb', + '||jll', + '||jpmorganchase', + '||jpmorgan', + '||kfh', + '||kpmg', + '||lacaixa', + '||lasalle', + '||lixil', + '||lplfinancial', + '||lpl', + '||nab', + '||nadex', + '||netbank', + '||northwesternmutual', + '||open', + '||pictet', + '||pnc', + '||pohl', + '||pramerica', + '||prudential', + '||pru', + '||pwc', + '||saxo', + '||sbi', + '||scb', + '||scor', + '||shriram', + '||softbank', + '||statebank', + '||temasek', + '||transunion', + '||ubank', + '||ubs', + '||vanguard', + '||visa', + '||wolterskluwer', + '||afamilycompany', + '||aquarelle', + '||diy', + '||duck', + '||finish', + '||glade', + '||homedepot', + '||homegoods', + '||mrmuscle', + '||off', + '||raid', + '||rightathome', + '||scjohnson', + '||aig', + '||allstate', + '||americanfamily', + '||amfam', + '||amica', + '||axa', + '||chartis', + '||esurance', + '||farmers', + '||goodhands', + '||guardian', + '||guardianlife', + '||iselect', + '||metlife', + '||mma', + '||mutual', + '||nationwide', + '||nissay', + '||northlandinsurance', + '||onyourside', + '||progressive', + '||redumbrella', + '||statefarm', + '||swiftcover', + '||thehartford', + '||tiaa', + '||travelersinsurance', + '||travelers', + '||travelguard', + '||trv', + '||vig', + '||beats', + '||blockbuster', + '||bway', + '||netflix', + '||playstation', + '||showtime', + '||tab', + '||williamhill', + '||xbox', + '||asda', + '||bloomingdales', + '||george', + '||homesense', + '||justforu', + '||lego', + '||macys', + '||marshalls', + '||obi', + '||qvc', + '||safeway', + '||samsclub', + '||shopyourway', + '||staples', + '||target', + '||thd', + '||tiffany', + '||tjmaxx', + '||tjx', + '||tkmaxx', + '||vons', + '||walmart', + '||abb', + '||accenture', + '||acer', + '||aco', + '||active', + '||airtel', + '||amazon', + '||and', + '||aol', + '||aws', + '||axis', + '||azure', + '||chatr', + '||chrome', + '||cisco', + '||comcast', + '||connectors', + '||csc', + '||dclk', + '||dish', + '||docomo', + '||dtv', + '||dwg', + '||emerson', + '||epson', + '||ericsson', + '||etisalat', + '||fairwinds', + '||fido', + '||flickr', + '||frogans', + '||frontier', + '||ftr', + '||gbiz', + '||gea', + '||ggee', + '||gle', + '||gmail', + '||gmo', + '||gmx', + '||godaddy', + '||goog', + '||google', + '||goo', + '||gree', + '||guge', + '||hangout', + '||hkt', + '||hotmail', + '||htc', + '||hughes', + '||ieee', + '||iinet', + '||infosys', + '||infy', + '||intel', + '||intuit', + '||java', + '||jcp', + '||jmp', + '||jprs', + '||juniper', + '||kddi', + '||kindle', + '||konami', + '||kpn', + '||lanxess', + '||liaison', + '||locker', + '||meo', + '||microsoft', + '||mih', + '||mii', + '||mint', + '||mitek', + '||mit', + '||mobily', + '||mozaic', + '||mtn', + '||multichoice', + '||naspers', + '||nec', + '||neustar', + '||nexus', + '||nico', + '||norton', + '||ntt', + '||office', + '||ollo', + '||oracle', + '||orange', + '||ovh', + '||patch', + '||payu', + '||pccw', + '||qtel', + '||quest', + '||richardli', + '||ricoh', + '||rogers', + '||sakura', + '||sapo', + '||sas', + '||ses', + '||sfr', + '||shaw', + '||skolkovo', + '||skydrive', + '||skype', + '||sling', + '||smart', + '||stcgroup', + '||stc', + '||symantec', + '||tata', + '||tci', + '||tdk', + '||telecity', + '||telefonica', + '||terra', + '||translations', + '||ultrabook', + '||unicorn', + '||uol', + '||verisign', + '||viva', + '||vivo', + '||windows', + '||xfinity', + '||xperia', + '||yahoo', + '||yamaxun', + '||yandex', + '||yellowpages', + '||youtube', + '||zappos', + '||chanel', + '||clinique', + '||garnier', + '||kerastase', + '||kiehls', + '||lamer', + '||lancome', + '||loreal', + '||matrix', + '||maybelline', + '||natura', + '||origins', + '||redken', + '||svr', + '||barefoot', + '||beknown', + '||cityeats', + '||cookingchannel', + '||cuisinella', + '||delmonte', + '||edeka', + '||fage', + '||ferrero', + '||foodnetwork', + '||food', + '||gallo', + '||heinz', + '||kinder', + '||mcd', + '||mcdonalds', + '||pamperedchef', + '||rocher', + '||wilmar', + '||xn--3oq18vl8pn36a', + '||xn--55qx5d8y0buji4b870u', + '||xn--5su34j936bgsg', + '||xn--b4w605ferd', + '||xn--cckwcxetd', + '||xn--cg4bki', + '||xn--dkwm73cwpn', + '||xn--flw351e', + '||xn--fzys8d69uvgm', + '||xn--hxt035cmppuel', + '||xn--hxt035czzpffl', + '||xn--j6w470d71issc', + '||xn--jlq480n2rg', + '||xn--jlq61u9w7b', + '||xn--kcrx77d1x4a', + '||xn--kcrx7bb75ajk3b', + '||xn--mgba3a3ejt', + '||xn--mgba7c0bbn0a', + '||xn--mgbaakc7dvf', + '||xn--mgbb9fbpob', + '||xn--ngbe9e0a', + '||xn--pgb3ceoj', + '||xn--qcka1pmc', + '||xn--w4r85el8fhu5dnra', + '||xn--w4rs40l', + '||avianca', + '||caravan', + '||changiairport', + '||cipriani', + '||clubmed', + '||delta', + '||firmdale', + '||hilton', + '||hyatt', + '||kerryhotels', + '||kerrylogisitics', + '||kerryproperties', + '||marriott', + '||orientexpress', + '||shangrila', + '||tradershotels', + '||tui', + '||viking', + '||virgin', + '||webjet', + '||able', + '||cbre', + '||chintai', + '||frontdoor', + '||lefrak', + '||abc', + '||africamagic', + '||arte', + '||bbc', + '||canalplus', + '||cbn', + '||cbs', + '||dstv', + '||eurovision', + '||fox', + '||gallup', + '||globo', + '||gotv', + '||guardianmedia', + '||hbo', + '||hgtv', + '||imdb', + '||itv', + '||kyknet', + '||mnet', + '||movistar', + '||mzansimagic', + '||nhk', + '||nowtv', + '||sbs', + '||seven', + '||sky', + '||spiegel', + '||starhub', + '||supersport', + '||theguardian', + '||travelchannel', + '||weatherchannel', + '||bauhaus', + '||latrobe', + '||monash', + '||rmit', + '||pubmatic.com', + '||pubmatic.co.jp', + '||ads.pubmatic.com', + '||taboola.com', + '||ahmia.fi', + '||akasha.world', + '||browserleaks.com', + '||bypasscensorship.org', + '||citizenlab.ca', + '||dat.foundation', + '||democracy.earth', + '||eff.org', + '||epicbrowser.com', + '||ffprofile.com', + '||freenetproject.org', + '||fteproxy.org', + '||gfw.press', + '||gfw.report', + '||greatfire.org', + '||guardianproject.info', + '||haveibeenpwned.com', + '||pwnedpasswords.com', + '||geti2p.net', + '||ipfs.io', + '||jitsi.org', + '||getlantern.org', + '||lantern.io', + '||ntc.party', + '||onionshare.org', + '||ooni.org', + '||openvpn.net', + '||privacytools.io', + '||psiphon3.com', + '||shadowsocks.org', + '||softether.org', + '||softether-download.com', + '||stunnel.org', + '||telex.cc', + '||torproject.org', + '||tribler.org', + '||tunsafe.com', + '||twister.net.co', + '||uproxy.org', + '||v2ray.com', + '||v2ray.cool', + '||v2fly.org', + '||vuvuzela.io', + '||whonix.org', + '||wikileaks.org', + '||wireguard.com', + '||zeronet.io', + '||artstation.com', + '||artstationmedia.com', + '||drbl.in', + '||dribbble.com', + '||dynacw.co.jp', + '||dynacw.com', + '||dynacw.com.cn', + '||dynacw.com.hk', + '||dynacw.com.tw', + '||fonts.com', + '||fonts.net', + '||fontsinuse.com', + '||glyphsapp.com', + '||jiyu-kobo.co.jp', + '||fontexplorerx.com', + '||fontbook.com', + '||fontshop.com', + '||fstopimages.com', + '|http://fontshop-prod-responsive-images.s3.amazonaws.com', + '|https://fontshop-prod-responsive-images.s3.amazonaws.com', + '||linotype.com', + '||myfonts.com', + '||myfonts.net', + '||monotype.com', + '||monotypeimaging.com', + '||bitstream.com', + '||itcfonts.com', + '||morisawa.co.jp', + '||typesquare.com', + '||pin.it', + '||pinimg.com', + '||pinterest.at', + '||pinterest.be', + '||pinterest.ca', + '||pinterest.ch', + '||pinterest.cl', + '||pinterest.co', + '||pinterest.co.at', + '||pinterest.co.in', + '||pinterest.co.kr', + '||pinterest.co.nz', + '||pinterest.co.uk', + '||pinterest.com', + '||pinterest.com.au', + '||pinterest.com.bo', + '||pinterest.com.ec', + '||pinterest.com.mx', + '||pinterest.com.pe', + '||pinterest.com.py', + '||pinterest.com.uy', + '||pinterest.com.vn', + '||pinterest.de', + '||pinterest.dk', + '||pinterest.ec', + '||pinterest.engineering', + '||pinterest.es', + '||pinterest.fr', + '||pinterest.hu', + '||pinterest.id', + '||pinterest.ie', + '||pinterest.in', + '||pinterest.info', + '||pinterest.it', + '||pinterest.jp', + '||pinterest.kr', + '||pinterest.mx', + '||pinterest.nl', + '||pinterest.nz', + '||pinterest.pe', + '||pinterest.ph', + '||pinterest.pt', + '||pinterest.ru', + '||pinterest.se', + '||pinterest.th', + '||pinterest.tw', + '||pinterest.uk', + '||pinterest.vn', + '||pinterestmail.com', + '||realtype.co.jp', + '||realtype.jp', + '||typenetwork.com', + '||typography.com', + '||webtype.com', + '||mini', + '||4myminicard.com', + '||aboutyourmini.com', + '||atlantaminidealers.com', + '||greatergothammini.com', + '||midatlanticbmwmotorcycles.com', + '||mini-abudhabi.com', + '||mini-antilles.fr', + '||mini-bahrain.com', + '||mini-bosnia.com', + '||mini-clubs-international.com', + '||mini-connected.at', + '||mini-connected.be', + '||mini-connected.ch', + '||mini-connected.co.uk', + '||mini-connected.com', + '||mini-connected.cz', + '||mini-connected.de', + '||mini-connected.dk', + '||mini-connected.ee', + '||mini-connected.es', + '||mini-connected.fi', + '||mini-connected.fr', + '||mini-connected.ie', + '||mini-connected.it', + '||mini-connected.lt', + '||mini-connected.lu', + '||mini-connected.lv', + '||mini-connected.nl', + '||mini-connected.no', + '||mini-connected.pl', + '||mini-connected.pt', + '||mini-connected.se', + '||mini-corporate-sales.com', + '||mini-coupe.ca', + '||mini-dubai.com', + '||mini-e.com', + '||mini-egypt.com', + '||mini-georgia.com', + '||mini-grouparchiv.de', + '||mini-grouparchive.com', + '||mini-jordan.com', + '||mini-ksa.com', + '||mini-kuwait.com', + '||mini-lebanon.com', + '||mini-me.com', + '||mini-oman.com', + '||mini-qatar.com', + '||mini-srilanka.com', + '||mini-stjohns.ca', + '||mini-stjohns.com', + '||mini-tahiti.com', + '||mini-vietnam.com', + '||mini-windsor.ca', + '||mini-windsor.com', + '||mini.am', + '||mini.at', + '||mini.be', + '||mini.bg', + '||mini.by', + '||mini.ca', + '||mini.cc', + '||mini.ch', + '||mini.cl', + '||mini.co.cr', + '||mini.co.id', + '||mini.co.il', + '||mini.co.kr', + '||mini.co.me', + '||mini.co.th', + '||mini.co.uk', + '||mini.co.za', + '||mini.com', + '||mini.com.ar', + '||mini.com.bn', + '||mini.com.br', + '||mini.com.co', + '||mini.com.cy', + '||mini.com.do', + '||mini.com.ec', + '||mini.com.gr', + '||mini.com.gt', + '||mini.com.hr', + '||mini.com.mk', + '||mini.com.mo', + '||mini.com.mt', + '||mini.com.mx', + '||mini.com.pa', + '||mini.com.pe', + '||mini.com.ph', + '||mini.com.pl', + '||mini.com.py', + '||mini.com.sg', + '||mini.com.tr', + '||mini.com.tw', + '||mini.com.uy', + '||mini.cz', + '||mini.de', + '||mini.dk', + '||mini.dz', + '||mini.es', + '||mini.fi', + '||mini.fr', + '||mini.gp', + '||mini.hu', + '||mini.ie', + '||mini.in', + '||mini.is', + '||mini.it', + '||mini.jp', + '||mini.kz', + '||mini.lu', + '||mini.ma', + '||mini.md', + '||mini.mq', + '||mini.mu', + '||mini.my', + '||mini.nc', + '||mini.nl', + '||mini.no', + '||mini.pt', + '||mini.re', + '||mini.ro', + '||mini.rs', + '||mini.ru', + '||mini.se', + '||mini.si', + '||mini.sk', + '||mini.tm', + '||mini.tn', + '||mini.ua', + '||mini101.ca', + '||miniargentina.com', + '||minibrossard.ca', + '||minibrossard.com', + '||minicanada.ca', + '||minicaribbean.com', + '||miniccrc.ca', + '||minicooper.ca', + '||minidealer.com', + '||minidealernet.com', + '||minidowntown.ca', + '||minidowntown.com', + '||minidrivingexperienceusa.com', + '||minidurham.ca', + '||minidurham.com', + '||minie.com', + '||minifs.com', + '||minigeorgian.ca', + '||minigrandriver.com', + '||minihalifax.ca', + '||minihalifax.com', + '||minihk.com', + '||miniinvasion.ca', + '||miniitalianjob.com', + '||minikelowna.ca', + '||minikelowna.com', + '||minilangley.ca', + '||minilangley.com', + '||minilat.com', + '||minilaval.ca', + '||minilaval.com', + '||minilondon.ca', + '||minilondon.co', + '||minimarkham.ca', + '||minimarkham.com', + '||minimoncton.ca', + '||minimoncton.com', + '||minimontrealcentre.ca', + '||minimontroyal.ca', + '||minimontroyal.com', + '||minimotoringrewards.com', + '||minimotoringschool.com', + '||minimotorsport.com', + '||mininanaimo.ca', + '||mininanaimo.com', + '||minioakville.com', + '||miniofmonrovia.com', + '||minipetfriendly.com', + '||minirichmond.ca', + '||minirichmond.com', + '||minisaskatoon.ca', + '||minisaskatoon.com', + '||minishop.ca', + '||minispace.com', + '||minispecialoffers.ca', + '||minispygear.com', + '||ministcatharines.ca', + '||ministeagathe.com', + '||ministjohns.ca', + '||minitakesthestates.com', + '||minitoronto.ca', + '||minitroisrivieres.ca', + '||miniusa.com', + '||miniusaservice.com', + '||miniusatires.com', + '||minivalueservice.com', + '||minivancouver.ca', + '||minivaughanwest.ca', + '||minivaughanwest.com', + '||minivictoria.ca', + '||minivictoria.com', + '||minivilledequebec.ca', + '||minivilledequebec.com', + '||miniwholesaleconnect.com', + '||miniwidget.ca', + '||miniwindsor.com', + '||miniworkshop.com', + '||miniyaletown.ca', + '||pugetsoundmini.com', + '||shopminiusa.com', + '||southfloridamini.com', + '||trmini.com', + '||troisrivieresmini.com', + '||yours-customised.mini.com', + '||bmw', + '||approvedusedbmw.com', + '||baltimorebmw.com', + '||bayareabmw.com', + '||bmw-abudhabi.com', + '||bmw-adventskalender.com', + '||bmw-albania.com', + '||bmw-antilles.fr', + '||bmw-art-journey.com', + '||bmw-arts-design.com', + '||bmw-asia.com', + '||bmw-auslieferungszentrum.com', + '||bmw-authority-vehicles.com', + '||bmw-bahrain.com', + '||bmw-businessdrive.com', + '||bmw-calgary.ca', + '||bmw-carit.de', + '||bmw-classic.com', + '||bmw-clubs-international.com', + '||bmw-connected-drive.com', + '||bmw-connecteddrive.ae', + '||bmw-connecteddrive.at', + '||bmw-connecteddrive.be', + '||bmw-connecteddrive.bg', + '||bmw-connecteddrive.ca', + '||bmw-connecteddrive.ch', + '||bmw-connecteddrive.co.nz', + '||bmw-connecteddrive.co.uk', + '||bmw-connecteddrive.co.za', + '||bmw-connecteddrive.com', + '||bmw-connecteddrive.com.au', + '||bmw-connecteddrive.com.br', + '||bmw-connecteddrive.com.cy', + '||bmw-connecteddrive.com.hr', + '||bmw-connecteddrive.com.kw', + '||bmw-connecteddrive.com.mt', + '||bmw-connecteddrive.cz', + '||bmw-connecteddrive.de', + '||bmw-connecteddrive.dk', + '||bmw-connecteddrive.ee', + '||bmw-connecteddrive.es', + '||bmw-connecteddrive.fi', + '||bmw-connecteddrive.fr', + '||bmw-connecteddrive.gr', + '||bmw-connecteddrive.hu', + '||bmw-connecteddrive.ie', + '||bmw-connecteddrive.it', + '||bmw-connecteddrive.jp', + '||bmw-connecteddrive.kr', + '||bmw-connecteddrive.lt', + '||bmw-connecteddrive.lu', + '||bmw-connecteddrive.lv', + '||bmw-connecteddrive.mx', + '||bmw-connecteddrive.my', + '||bmw-connecteddrive.nl', + '||bmw-connecteddrive.no', + '||bmw-connecteddrive.pl', + '||bmw-connecteddrive.pt', + '||bmw-connecteddrive.ro', + '||bmw-connecteddrive.ru', + '||bmw-connecteddrive.se', + '||bmw-connecteddrive.sg', + '||bmw-connecteddrive.si', + '||bmw-connecteddrive.sk', + '||bmw-connecteddrive.tw', + '||bmw-corporate-sales.com', + '||bmw-diplomatic-sales.com', + '||bmw-driving-center.co.kr', + '||bmw-drivingexperience.com', + '||bmw-dubai.com', + '||bmw-eg.com', + '||bmw-fleet.net', + '||bmw-ghana.com', + '||bmw-golfsport.com', + '||bmw-group.com', + '||bmw-group.net', + '||bmw-grouparchiv.de', + '||bmw-grouparchives.com', + '||bmw-gta.ca', + '||bmw-i-pure-impulse.com', + '||bmw-i.jp', + '||bmw-int1.com', + '||bmw-iraq.com', + '||bmw-jordan.com', + '||bmw-konzernarchiv.de', + '||bmw-ksa.com', + '||bmw-kuwait.com', + '||bmw-lao.la', + '||bmw-lebanon.com', + '||bmw-m-safetycar.com', + '||bmw-m.com', + '||bmw-mdrivetour.com', + '||bmw-me.com', + '||bmw-military-sales.com', + '||bmw-motorcycle.com', + '||bmw-motorcycles.vn', + '||bmw-motorrad-abudhabi.com', + '||bmw-motorrad-authorities.com', + '||bmw-motorrad-dubai.com', + '||bmw-motorrad-motorsport.com', + '||bmw-motorrad-now-or-never.com', + '||bmw-motorrad-service-inclusive.com', + '||bmw-motorrad-test-ride.com', + '||bmw-motorrad.at', + '||bmw-motorrad.be', + '||bmw-motorrad.bg', + '||bmw-motorrad.bh', + '||bmw-motorrad.bo', + '||bmw-motorrad.ca', + '||bmw-motorrad.ch', + '||bmw-motorrad.cl', + '||bmw-motorrad.co', + '||bmw-motorrad.co.id', + '||bmw-motorrad.co.kr', + '||bmw-motorrad.co.nz', + '||bmw-motorrad.co.th', + '||bmw-motorrad.co.uk', + '||bmw-motorrad.co.za', + '||bmw-motorrad.com', + '||bmw-motorrad.com.ar', + '||bmw-motorrad.com.au', + '||bmw-motorrad.com.br', + '||bmw-motorrad.com.do', + '||bmw-motorrad.com.hr', + '||bmw-motorrad.com.mx', + '||bmw-motorrad.com.my', + '||bmw-motorrad.com.pe', + '||bmw-motorrad.com.py', + '||bmw-motorrad.com.tr', + '||bmw-motorrad.cr', + '||bmw-motorrad.cz', + '||bmw-motorrad.de', + '||bmw-motorrad.dk', + '||bmw-motorrad.dz', + '||bmw-motorrad.ec', + '||bmw-motorrad.ee', + '||bmw-motorrad.es', + '||bmw-motorrad.fi', + '||bmw-motorrad.fr', + '||bmw-motorrad.gr', + '||bmw-motorrad.gt', + '||bmw-motorrad.hu', + '||bmw-motorrad.in', + '||bmw-motorrad.it', + '||bmw-motorrad.jp', + '||bmw-motorrad.lu', + '||bmw-motorrad.ma', + '||bmw-motorrad.nl', + '||bmw-motorrad.no', + '||bmw-motorrad.pa', + '||bmw-motorrad.pl', + '||bmw-motorrad.pt', + '||bmw-motorrad.ro', + '||bmw-motorrad.rs', + '||bmw-motorrad.ru', + '||bmw-motorrad.sa', + '||bmw-motorrad.se', + '||bmw-motorrad.si', + '||bmw-motorrad.sk', + '||bmw-motorrad.sv', + '||bmw-motorrad.tw', + '||bmw-motorrad.ua', + '||bmw-motorrad.uy', + '||bmw-motorsport.com', + '||bmw-mountains.com', + '||bmw-museum.com', + '||bmw-museum.net', + '||bmw-nigeria.com', + '||bmw-oman.com', + '||bmw-ottawa.ca', + '||bmw-pakistan.com', + '||bmw-plant-munich.com', + '||bmw-pma.com.sg', + '||bmw-powertrain.com', + '||bmw-product-highlights.com', + '||bmw-qatar.com', + '||bmw-routes.com', + '||bmw-rp.com', + '||bmw-rrdays.com', + '||bmw-saudiarabia.com', + '||bmw-security-vehicles.com', + '||bmw-special-sales.com', + '||bmw-sports.com', + '||bmw-sudan.com', + '||bmw-tahiti.com', + '||bmw-tunisia.com', + '||bmw-vancouver.ca', + '||bmw-voli.me', + '||bmw-welt.com', + '||bmw-welt.net', + '||bmw-welt.tv', + '||bmw-werk-berlin.de', + '||bmw-world.com', + '||bmw-world.net', + '||bmw-world.tv', + '||bmw-worldfinal.com', + '||bmw-yachtsport.com', + '||bmw-yeg.ca', + '||bmw-yemen.com', + '||bmw.am', + '||bmw.at', + '||bmw.az', + '||bmw.ba', + '||bmw.bb', + '||bmw.be', + '||bmw.bg', + '||bmw.bm', + '||bmw.bs', + '||bmw.by', + '||bmw.ca', + '||bmw.cc', + '||bmw.ch', + '||bmw.cl', + '||bmw.co.ao', + '||bmw.co.cr', + '||bmw.co.id', + '||bmw.co.il', + '||bmw.co.jp', + '||bmw.co.ke', + '||bmw.co.kr', + '||bmw.co.nz', + '||bmw.co.th', + '||bmw.co.uk', + '||bmw.co.za', + '||bmw.com', + '||bmw.com.ar', + '||bmw.com.au', + '||bmw.com.bd', + '||bmw.com.bn', + '||bmw.com.bo', + '||bmw.com.br', + '||bmw.com.co', + '||bmw.com.cy', + '||bmw.com.do', + '||bmw.com.ec', + '||bmw.com.ge', + '||bmw.com.gt', + '||bmw.com.kh', + '||bmw.com.ky', + '||bmw.com.mk', + '||bmw.com.mo', + '||bmw.com.mt', + '||bmw.com.mx', + '||bmw.com.my', + '||bmw.com.ni', + '||bmw.com.pa', + '||bmw.com.pe', + '||bmw.com.ph', + '||bmw.com.py', + '||bmw.com.sg', + '||bmw.com.sv', + '||bmw.com.tr', + '||bmw.com.tw', + '||bmw.com.uy', + '||bmw.com.ve', + '||bmw.cw', + '||bmw.cz', + '||bmw.de', + '||bmw.dk', + '||bmw.dz', + '||bmw.ee', + '||bmw.es', + '||bmw.fi', + '||bmw.fr', + '||bmw.gp', + '||bmw.gr', + '||bmw.hn', + '||bmw.hr', + '||bmw.ht', + '||bmw.hu', + '||bmw.ie', + '||bmw.in', + '||bmw.is', + '||bmw.it', + '||bmw.kg', + '||bmw.kz', + '||bmw.lc', + '||bmw.lk', + '||bmw.lt', + '||bmw.lu', + '||bmw.lv', + '||bmw.ly', + '||bmw.ma', + '||bmw.md', + '||bmw.mn', + '||bmw.mq', + '||bmw.mu', + '||bmw.nc', + '||bmw.nl', + '||bmw.no', + '||bmw.pl', + '||bmw.ps', + '||bmw.pt', + '||bmw.re', + '||bmw.ro', + '||bmw.rs', + '||bmw.se', + '||bmw.si', + '||bmw.sk', + '||bmw.sn', + '||bmw.tm', + '||bmw.tt', + '||bmw.ua', + '||bmw.uz', + '||bmw.vn', + '||bmwarchiv.at', + '||bmwarchiv.de', + '||bmwartjourney.com', + '||bmwasia.com', + '||bmwauslieferungszentrum.com', + '||bmwbikes.com', + '||bmwbkk.de', + '||bmwccrc.ca', + '||bmwcenternet.com', + '||bmwchampionship.com', + '||bmwchampionshipusa.com', + '||bmwcharitygolf.com', + '||bmwcitychallenge.com', + '||bmwclassic.com', + '||bmwcolorado.com', + '||bmwconnecteddrive.com', + '||bmwcustomapparel.com', + '||bmwdcsnet.net', + '||bmwdealercareers.com', + '||bmwdealerdirect.com', + '||bmwdelawarevalley.com', + '||bmwfilms.com', + '||bmwgroup-classic-heart.com', + '||bmwgroup-classic.com', + '||bmwgroup-gaad.com', + '||bmwgroup-plants.com', + '||bmwgroup-posdigital.com', + '||bmwgroup-werke.com', + '||bmwgroup.at', + '||bmwgroup.com', + '||bmwgroup.net', + '||bmwgroup.jobs', + '||bmwgroupclassic.com', + '||bmwgroupdesignworks.com', + '||bmwgroupdirect.com', + '||bmwgroupfs.com', + '||bmwgroupinfobahn.com', + '||bmwgroupna.com', + '||bmwhk.com', + '||bmwi.ca', + '||bmwi.jp', + '||bmwiventures.com', + '||bmwjamaica.com', + '||bmwlat.com', + '||bmwlifestyle.ca', + '||bmwm.com', + '||bmwmagazine.com', + '||bmwmagazine.de', + '||bmwmass.com', + '||bmwmass.net', + '||bmwmc.net', + '||bmwmontreal.ca', + '||bmwmotorcycles.com', + '||bmwmotorcycleusa.com', + '||bmwmotorrad.co.kr', + '||bmwmotorrad.com.au', + '||bmwmotorrad.com.ph', + '||bmwmotorrad.com.sg', + '||bmwmotorradhk.com', + '||bmwmotorshowblog.com', + '||bmwmotorsport.com', + '||bmwmperformance.com', + '||bmwmuseum.net', + '||bmwmyanmar.com', + '||bmwofannapolis.com', + '||bmwofcentralpa.com', + '||bmwoftulsa.com', + '||bmwondemandusa.com', + '||bmworegon.com', + '||bmwperformancecenter.com', + '||bmwpittsburgh.com', + '||bmwproductnews.com', + '||bmwsafari.com', + '||bmwsfl.com', + '||bmwsfl.net', + '||bmwshop.ca', + '||bmwspecialoffers.ca', + '||bmwsports.com', + '||bmwstartupgarage.com', + '||bmwstep.com', + '||bmwstepconnections.com', + '||bmwsummerschool.com', + '||bmwtampabay.com', + '||bmwusa.com', + '||bmwusatires.com', + '||bmwusaservice.com', + '||bmwusfactory.com', + '||bmwusrideracademy.com', + '||bmwvalueservice.com', + '||bmwwholesaleconnect.com', + '||bmwworld.com', + '||bmwworld.net', + '||bmwworld.tv', + '||bmwzentrum.com', + '||brand-protection-team.com', + '||cencoastbmw.com', + '||chargenow.com', + '||chargenowusa.com', + '||chicagolandbmw.com', + '||connected-drive.com', + '||daytonbmw.com', + '||dealerspeed.net', + '||desertbmw.com', + '||dreambmw.ca', + '||grupobmw.com', + '||guambmw.com', + '||hackthedrive.com', + '||hawaiibmw.com', + '||iaablog.com', + '||lasvegasbmw.com', + '||m-power.com', + '||minneapolisbmw.com', + '||minneapolisbmw.net', + '||motorshowblog.com', + '||mybmw.ca', + '||mybmw.com', + '||newhampshirebmw.com', + '||nmbmw.com', + '||ocbmwdealers.com', + '||offresspecialesbmw.ca', + '||park-now.com', + '||parkinfo.com', + '||pdxbmw.com', + '||phxbmw.com', + '||pre-bmwgroup.jobs', + '||pugetsoundbmw.com', + '||rentaride.com', + '||rentaride.de', + '||rhodeislandbmw.com', + '||sdcountybmw.com', + '||shopbmwmotorcycles.com', + '||shopbmwusa.com', + '||socalbmw.com', + '||stlouisbmw.net', + '||the-m-festival.com', + '||tristatebmw.com', + '||vancouverbmwretailers.ca', + '||washingtondcbmw.com', + '||alfera.com.hk', + '||alfera.com.my', + '||alfera.in', + '||alfera.my', + '||alphera-finance.co.in', + '||alphera-finance.com.hk', + '||alphera-finance.in', + '||alphera.ca', + '||alphera.co.in', + '||alphera.co.nz', + '||alphera.com', + '||alphera.com.es', + '||alphera.com.hk', + '||alphera.com.my', + '||alphera.de', + '||alphera.es', + '||alphera.ie', + '||alphera.in', + '||alphera.my', + '||alphera.net', + '||alpherafinance.com.hk', + '||alpherafinancialservices.es', + '||alpherafinancialservices.in', + '||alpherafs.ca', + '||alpherafs.co.nz', + '||alpherafs.com.hk', + '||alpherafs.com.my', + '||alpherafs.ie', + '||alpherafs.in', + '||alpherafs.my', + '||premiumfs.de', + '||alphabet.asia', + '||alphabet.at', + '||alphabet.be', + '||alphabet.biz', + '||alphabet.ch', + '||alphabet.co.hu', + '||alphabet.co.uk', + '||alphabet.co.za', + '||alphabet.com', + '||alphabet.com.es', + '||alphabet.com.lv', + '||alphabet.com.mx', + '||alphabet.com.pl', + '||alphabet.com.pt', + '||alphabet.cz', + '||alphabet.de', + '||alphabet.es', + '||alphabet.eu', + '||alphabet.fr', + '||alphabet.info', + '||alphabet.jp', + '||alphabet.lt', + '||alphabet.lu', + '||alphabet.lv', + '||alphabet.mx', + '||alphabet.no', + '||alphabet.org.uk', + '||alphabet.pl', + '||alphabet.pt', + '||alphabet.uk', + '||alphabet.us', + '||alphabetfinance.net', + '||electricluxury.com', + '||rolls-roycecullinan.com', + '||rolls-roycemotorcars.com', + '||rolls-roycemotorcarsna.com', + '||rrtis.com', + '||spiritofecstasy.com', + '||bridgestone', + '||bandag.cc', + '||bandag.com', + '||blizzak-juken.jp', + '||bookmybridgestonetyre.com', + '||bridgestone-asiapacific.com', + '||bridgestone-bandag.com', + '||bridgestone-brand.com', + '||bridgestone-business-service.jp', + '||bridgestone-korea.co.kr', + '||bridgestone-plt-eng.com', + '||bridgestone-tac-oman.com', + '||bridgestone.cl', + '||bridgestone.co.cr', + '||bridgestone.co.id', + '||bridgestone.co.in', + '||bridgestone.co.jp', + '||bridgestone.co.th', + '||bridgestone.com', + '||bridgestone.com.ar', + '||bridgestone.com.br', + '||bridgestone.com.co', + '||bridgestone.com.mx', + '||bridgestone.com.sg', + '||bridgestone.com.tw', + '||bridgestone.com.vn', + '||bridgestoneamericas.com', + '||bridgestonearena.com', + '||bridgestonecntc.com', + '||bridgestonecomercial.cl', + '||bridgestonecomercial.co.cr', + '||bridgestonecomercial.com.ar', + '||bridgestonecomercial.com.br', + '||bridgestonecomercial.com.co', + '||bridgestonecomercial.com.mx', + '||bridgestonegolf.com', + '||bridgestonegz.com', + '||bridgestonela.com', + '||bridgestonemarketing.com', + '||bridgestonemerchandise.com', + '||bridgestonenationalfleet.com', + '||bridgestoneperformance.com', + '||bridgestoneperformancemedia.net', + '||bridgestonerapiddelivery.com', + '||bridgestonerewards.com', + '||bridgestonesyb.com', + '||bridgestonetire.ca', + '||bridgestonetire.com', + '||bridgestonetyre.com.my', + '||bridgestonevan.com', + '||bridgestonewx.com', + '||bs-adreview.com', + '||bs-awh.ne.jp', + '||bsw.co.jp', + '||bsw.jp', + '||carcare-and-tireshop.jp', + '||daytontrucktires.com', + '||ecoforme.jp', + '||gcrtires.com', + '||jsbridgestone.com', + '||menshin-channel.com', + '||monitrix.net', + '||mr-tireman.jp', + '||mybridgestoneeducation.com', + '||playz.jp', + '||potenza.jp', + '||prodrive-japan.com', + '||store-bridgestonesports.com', + '||thetread.com', + '||tiresplus.com', + '||cfna.com', + '||bastropfirestone.com', + '||crossfitfirestone.com', + '||firestone.cl', + '||firestone.co.cr', + '||firestone.com.ar', + '||firestone.com.br', + '||firestone.com.co', + '||firestone.com.mx', + '||firestonebpco.com', + '||firestonecomercial.cl', + '||firestonecomercial.co.cr', + '||firestonecomercial.com.ar', + '||firestonecomercial.com.br', + '||firestonecomercial.com.co', + '||firestonecomercial.com.mx', + '||firestonecompleteautocare.com', + '||firestonedrivestore.com', + '||firestoneip.com', + '||firestonerewards.com', + '||firestonetire.ca', + '||firestonetire.com', + '||hibdontire.com', + '||wheelworks.net', + '||nokiantyres.com', + '||solarcity.com', + '||tesla.com', + '||teslamotors.com', + '|http://tesla-cdn.thron.com', + '|https://tesla-cdn.thron.com', + '||volvo', + '||dynafleetonline.com', + '||escandinavia-arg.com', + '||independentoperatorcn.com', + '||road-crew.com', + '||udfs.com', + '||vfsco.at', + '||vfsco.be', + '||vfsco.bg', + '||vfsco.ca', + '||vfsco.ch', + '||vfsco.cl', + '||vfsco.co.uk', + '||vfsco.co.za', + '||vfsco.com', + '||vfsco.com.au', + '||vfsco.com.br', + '||vfsco.com.tr', + '||vfsco.cz', + '||vfsco.de', + '||vfsco.dk', + '||vfsco.ee', + '||vfsco.es', + '||vfsco.fi', + '||vfsco.fr', + '||vfsco.hu', + '||vfsco.ie', + '||vfsco.in', + '||vfsco.it', + '||vfsco.jp', + '||vfsco.kr', + '||vfsco.lt', + '||vfsco.lv', + '||vfsco.mx', + '||vfsco.nl', + '||vfsco.no', + '||vfsco.pe', + '||vfsco.pl', + '||vfsco.ro', + '||vfsco.ru', + '||vfsco.se', + '||vfsco.sk', + '||vfsco.us', + '||vgcareers.net', + '||volvo-truck.nl', + '||volvo.ca', + '||volvo.com', + '||volvo.se', + '||volvobrandshop.com', + '||volvobuses.at', + '||volvobuses.be', + '||volvobuses.ca', + '||volvobuses.ch', + '||volvobuses.co', + '||volvobuses.co.nz', + '||volvobuses.co.uk', + '||volvobuses.co.za', + '||volvobuses.com', + '||volvobuses.com.ar', + '||volvobuses.com.au', + '||volvobuses.com.br', + '||volvobuses.com.kw', + '||volvobuses.com.pt', + '||volvobuses.com.tw', + '||volvobuses.de', + '||volvobuses.dk', + '||volvobuses.es', + '||volvobuses.fi', + '||volvobuses.fr', + '||volvobuses.hk', + '||volvobuses.hu', + '||volvobuses.in', + '||volvobuses.it', + '||volvobuses.jo', + '||volvobuses.kr', + '||volvobuses.ma', + '||volvobuses.mx', + '||volvobuses.my', + '||volvobuses.no', + '||volvobuses.om', + '||volvobuses.ph', + '||volvobuses.pk', + '||volvobuses.pl', + '||volvobuses.ru', + '||volvobuses.se', + '||volvobuses.sg', + '||volvobuses.tn', + '||volvobuses.us', + '||volvoce.com', + '||volvodefense.com', + '||volvogroup.be', + '||volvogroup.com', + '||volvogroup.com.br', + '||volvogroup.de', + '||volvogroup.fr', + '||volvogroup.jp', + '||volvogroup.kr', + '||volvogroup.mx', + '||volvogroup.nl', + '||volvogroup.pe', + '||volvogroup.pl', + '||volvogroup.ru', + '||volvogroup.se', + '||volvogrouptruckcenter.nl', + '||volvomerchandise.com', + '||volvopenta.com', + '||volvopenta.com.br', + '||volvopenta.de', + '||volvopenta.es', + '||volvopenta.fr', + '||volvopenta.it', + '||volvopenta.nl', + '||volvopenta.se', + '||volvopenta.us', + '||volvosaatio.fi', + '||volvospares.com', + '||volvotrucks.ae', + '||volvotrucks.al', + '||volvotrucks.am', + '||volvotrucks.at', + '||volvotrucks.az', + '||volvotrucks.ba', + '||volvotrucks.be', + '||volvotrucks.bg', + '||volvotrucks.by', + '||volvotrucks.ch', + '||volvotrucks.cl', + '||volvotrucks.co.ao', + '||volvotrucks.co.bw', + '||volvotrucks.co.il', + '||volvotrucks.co.mz', + '||volvotrucks.co.na', + '||volvotrucks.co.uk', + '||volvotrucks.co.nz', + '||volvotrucks.co.za', + '||volvotrucks.co.zm', + '||volvotrucks.co.zw', + '||volvotrucks.com', + '||volvotrucks.com.ar', + '||volvotrucks.com.au', + '||volvotrucks.com.bn', + '||volvotrucks.com.br', + '||volvotrucks.com.co', + '||volvotrucks.com.kw', + '||volvotrucks.com.pt', + '||volvotrucks.com.tr', + '||volvotrucks.com.tw', + '||volvotrucks.com.ua', + '||volvotrucks.cz', + '||volvotrucks.de', + '||volvotrucks.dk', + '||volvotrucks.ee', + '||volvotrucks.es', + '||volvotrucks.fi', + '||volvotrucks.fr', + '||volvotrucks.ge', + '||volvotrucks.gr', + '||volvotrucks.hk', + '||volvotrucks.hr', + '||volvotrucks.hu', + '||volvotrucks.id', + '||volvotrucks.in', + '||volvotrucks.it', + '||volvotrucks.jp', + '||volvotrucks.kg', + '||volvotrucks.kr', + '||volvotrucks.kz', + '||volvotrucks.lt', + '||volvotrucks.lv', + '||volvotrucks.ma', + '||volvotrucks.md', + '||volvotrucks.mk', + '||volvotrucks.mn', + '||volvotrucks.my', + '||volvotrucks.net', + '||volvotrucks.nl', + '||volvotrucks.no', + '||volvotrucks.pe', + '||volvotrucks.ph', + '||volvotrucks.pk', + '||volvotrucks.pl', + '||volvotrucks.ps', + '||volvotrucks.qa', + '||volvotrucks.ro', + '||volvotrucks.rs', + '||volvotrucks.ru', + '||volvotrucks.se', + '||volvotrucks.sg', + '||volvotrucks.si', + '||volvotrucks.sk', + '||volvotrucks.tm', + '||volvotrucks.tn', + '||volvotrucks.uy', + '||volvotruckcenter.be', + '||volvotruckcenter.dk', + '||volvotruckcenter.es', + '||volvotruckcenter.fi', + '||volvotruckcenter.it', + '||volvotruckcenter.kr', + '||volvotruckcenter.kz', + '||volvotruckcenter.nl', + '||volvotruckcenter.no', + '||volvotruckcenter.se', + '||volvotruckrental.be', + '||udtrucksmeena.com', + '||mastercard.ae', + '||mastercard.at', + '||mastercard.az', + '||mastercard.ba', + '||mastercard.be', + '||mastercard.bg', + '||mastercard.by', + '||mastercard.ca', + '||mastercard.ch', + '||mastercard.cl', + '||mastercard.co.id', + '||mastercard.co.il', + '||mastercard.co.in', + '||mastercard.co.jp', + '||mastercard.co.ke', + '||mastercard.co.kr', + '||mastercard.co.nz', + '||mastercard.co.th', + '||mastercard.co.uk', + '||mastercard.co.ve', + '||mastercard.co.za', + '||mastercard.com', + '||mastercard.com.ar', + '||mastercard.com.au', + '||mastercard.com.bh', + '||mastercard.com.br', + '||mastercard.com.bz', + '||mastercard.com.co', + '||mastercard.com.cy', + '||mastercard.com.eg', + '||mastercard.com.ge', + '||mastercard.com.gt', + '||mastercard.com.hk', + '||mastercard.com.kw', + '||mastercard.com.lb', + '||mastercard.com.mx', + '||mastercard.com.my', + '||mastercard.com.ng', + '||mastercard.com.pe', + '||mastercard.com.ph', + '||mastercard.com.sa', + '||mastercard.com.sg', + '||mastercard.com.tr', + '||mastercard.com.tw', + '||mastercard.com.ve', + '||mastercard.com.vn', + '||mastercard.cz', + '||mastercard.de', + '||mastercard.dk', + '||mastercard.es', + '||mastercard.eu', + '||mastercard.fi', + '||mastercard.fr', + '||mastercard.gr', + '||mastercard.hr', + '||mastercard.hu', + '||mastercard.ie', + '||mastercard.inc', + '||mastercard.it', + '||mastercard.jo', + '||mastercard.ke', + '||mastercard.kz', + '||mastercard.lu', + '||mastercard.md', + '||mastercard.my', + '||mastercard.nl', + '||mastercard.no', + '||mastercard.om', + '||mastercard.pl', + '||mastercard.pt', + '||mastercard.qa', + '||mastercard.ro', + '||mastercard.rs', + '||mastercard.ru', + '||mastercard.se', + '||mastercard.si', + '||mastercard.sk', + '||mastercard.ua', + '||mastercard.us', + '||areyoucreditwise.com', + '||borderlessprepaid.com', + '||branchportal.com', + '||idservice.inc', + '||inclusivegrowthscore.com', + '||findacard.com', + '||mastercad.com', + '||mastercard-email.com', + '||mastercardacademy.com', + '||mastercardadvisors.com', + '||mastercardcenter.com', + '||mastercardcenter.org', + '||mastercardcenterforinclusivegrowth.org', + '||mastercardconnect.com', + '||mastercardezsavings.com', + '||mastercardidtheftalerts.com', + '||mastercardrestaurant.com', + '||mastercardservices.com', + '||mastercardworldwide.com', + '||masterpassteststore.com', + '||masterintelligence.com', + '||mcpeaceofmind.com', + '||myaccountglobalcash.com', + '||mycardbenefits.com', + '||onedinesfree.com', + '||paypass.net', + '||pieceofplastic.com', + '||predictivetechnologies.com', + '||priceless.com', + '||pricelessmarketingengine.com', + '||sbitravelcard.com', + '||shoppercentre.com', + '||smartcommunitiescoalition.com', + '||smartcommunitiescoalition.org', + '||startpath.com', + '||taptotokyo.com', + '||tasteofpremium.jp', + '||travelcontroller.com', + '||wwwpaypass.com', + '||becomeindex.com', + '||cashpassport.ca', + '||cashpassport.co.za', + '||cashpassport.com', + '||cashpassport.com.br', + '||cashpassport.net', + '||corporatecashpassport.com', + '||icashpassport.com.mx', + '||intercamcashpassport.com.mx', + '||multicurrencycashpassport.com', + '||shinhangmc.com', + '||mastercardbiz.ca', + '||mastercardbiz.com', + '||mastercardbusinessnetwork.com', + '||nab.com.au', + '||nabtravellercard.com.au', + '||53world.com', + '||53worldsweeps.com', + '||lovethiscity.com', + '||mastercardmoments.com', + '||pahabicilemezsurprizler.com', + '||priceless.com', + '||priceless.org', + '||pricelessafrica.com', + '||pricelessarabia.com', + '||pricelessaruba.com', + '||pricelessbeijing.com', + '||pricelesshongkong.com', + '||pricelesshonolulu.com', + '||pricelesspick.com', + '||pricelesssantiago.com', + '||pricelesssydney.com', + '||pricelesssurprises.com', + '||pricelesstoronto.ca', + '||pricelesstv.com', + '||simplify.com', + '||simplifycommerce.com', + '||cashpassportglobe.com', + '||gwktravelex.nl', + '||travelex.be', + '||travelex.bh', + '||travelex.ca', + '||travelex.co.in', + '||travelex.co.jp', + '||travelex.co.nz', + '||travelex.co.uk', + '||travelex.com', + '||travelex.com.au', + '||travelex.com.hk', + '||travelex.com.my', + '||travelex.com.om', + '||travelex.com.tr', + '||travelex.de', + '||travelex.fr', + '||travelex.it', + '||travelex.qa', + '||travelexae.com', + '||travelexch.com', + '||travelexmoneycard.com', + '||bidvestbank.co.za', + '||worldcurrencycard.co.za', + '|http://nab.demdex.net', + '|https://nab.demdex.net', + '|http://nationalaustraliaban.tt.omtrdc.net', + '|https://nationalaustraliaban.tt.omtrdc.net', + '||account-paypal.info', + '||account-paypal.net', + '||account-paypal.org', + '||accountpaypal.com', + '||accountpaypal.net', + '||accountpaypal.org', + '||anfutong.com', + '||beibao.com', + '||bill-safe.com', + '||billmelater.com', + '||billmelater.info', + '||billmelater.net', + '||bml.info', + '||buyfast-paysmart.net', + '||cashify.com', + '||devtools-paypal.com', + '||experiencebillmelater.com', + '||fundpaypal.com', + '||gmoney.org', + '||i-o-u.info', + '||login-paypal.com', + '||login-paypal.info', + '||mywaytopay.info', + '||mywaytopay.net', + '||pa9pal.com', + '||paaypal.com', + '||paily.net', + '||paily.org', + '||paipal.com', + '||pavpal.com', + '||paydiant.com', + '||paylike.com', + '||paypa1.com', + '||paypa1.org', + '||paypaal.com', + '||paypal-activate.com', + '||paypal-activate.info', + '||paypal-activate.org', + '||paypal-apac.com', + '||paypal-apps.com', + '||paypal-biz.com', + '||paypal-brandcentral.com', + '||paypal-business.com', + '||paypal-business.net', + '||paypal-business.org', + '||paypal-cardcash.com', + '||paypal-cash.com', + '||paypal-center.com', + '||paypal-center.info', + '||paypal-center.net', + '||paypal-center.org', + '||paypal-communication.com', + '||paypal-communications.com', + '||paypal-communications.net', + '||paypal-community.com', + '||paypal-community.net', + '||paypal-comunidad.com', + '||paypal-corp.com', + '||paypal-database.com', + '||paypal-database.us', + '||paypal-donations.com', + '||paypal-dynamic.com', + '||paypal-engineering.com', + '||paypal-europe.com', + '||paypal-excelinvoicing.com', + '||paypal-exchanges.com', + '||paypal-forward.com', + '||paypal-galactic.com', + '||paypal-gift.com', + '||paypal-gifts.com', + '||paypal-gpplus.com', + '||paypal-here.com', + '||paypal-hrsystem.com', + '||paypal-innovationlab.com', + '||paypal-integration.com', + '||paypal-japan.com', + '||paypal-knowledge.com', + '||paypal-labs.com', + '||paypal-latam.com', + '||paypal-learning.com', + '||paypal-login.com', + '||paypal-login.info', + '||paypal-login.org', + '||paypal-login.us', + '||paypal-luxury.com', + '||paypal-mainstreet.net', + '||paypal-marketing.com', + '||paypal-media.com', + '||paypal-merchantloyalty.com', + '||paypal-mobilemoney.com', + '||paypal-network.org', + '||paypal-notice.com', + '||paypal-notify.com', + '||paypal-online.info', + '||paypal-online.net', + '||paypal-online.org', + '||paypal-optimizer.com', + '||paypal-pages.com', + '||paypal-photocard.com', + '||paypal-plaza.com', + '||paypal-portal.com', + '||paypal-prepagata.com', + '||paypal-prepagata.net', + '||paypal-prepaid.com', + '||paypal-profile.com', + '||paypal-proserv.com', + '||paypal-qrshopping.org', + '||paypal-recargacelular.com', + '||paypal-redeem.com', + '||paypal-referral.com', + '||paypal-retail.com', + '||paypal-scoop.com', + '||paypal-search.com', + '||paypal-secure.net', + '||paypal-secure.org', + '||paypal-security.net', + '||paypal-security.org', + '||paypal-service.org', + '||paypal-signin.com', + '||paypal-signin.us', + '||paypal-special.com', + '||paypal-specialoffers.com', + '||paypal-sptam.com', + '||paypal-support.com', + '||paypal-survey.com', + '||paypal-survey.org', + '||paypal-status.com', + '||paypal-team.com', + '||paypal-viewpoints.net', + '||paypal.ca', + '||paypal.com', + '||paypal.com.hk', + '||paypal.com.sg', + '||paypal.hk', + '||paypal.info', + '||paypal.jp', + '||paypal.me', + '||paypal.so', + '||paypal.us', + '||paypalbeacon.com', + '||paypalbenefits.com', + '||paypalbrasil.com', + '||paypalcommunity.com', + '||paypalcommunity.net', + '||paypalcommunity.org', + '||paypalcorp.com', + '||paypalcredit.com', + '||paypalcreditcard.com', + '||paypalgivingfund.org', + '||paypalhere.com', + '||paypalhere.info', + '||paypalhere.net', + '||paypalhere.org', + '||paypalhere.tv', + '||paypali.net', + '||paypalinc.com', + '||paypalindia.com', + '||paypalinsuranceservices.org', + '||paypall.com', + '||paypallabs.com', + '||paypalme.com', + '||paypalnet.net', + '||paypalnet.org', + '||paypalnetwork.info', + '||paypalnetwork.net', + '||paypalnetwork.org', + '||paypalobjects.com', + '||paypalonline.net', + '||paypalonline.org', + '||paypalprepagata.com', + '||paypalprepagata.net', + '||paypalservice.com', + '||paypalshopping.com', + '||paypalshopping.net', + '||paypalsurvey.com', + '||paypalx.com', + '||paypaly.com', + '||payppal.com', + '||payypal.com', + '||pdncommunity.com', + '||pp-soc.com', + '||ppaypal.com', + '||pppds.com', + '||pypl.com', + '||pypl.info', + '||pypl.net', + '||pypl.tv', + '||secure-paypal.info', + '||securepaypal.info', + '||sslpaypal.org', + '||thepaypalshop.com', + '||theshoppingexpresslane.net', + '||www-paypal.info', + '||www-paypal.us', + '||braintreegateway.com', + '||braintreegateway.tv', + '||braintreepayments.com', + '||braintreepayments.info', + '||braintreepayments.org', + '||braintreepayments.tv', + '||braintreepaymentsolutions.com', + '||braintreeps.com', + '||briantreepayments.net', + '||briantreepayments.tv', + '||card.io', + '||getbraintree.com', + '||krakenjs.com', + '||loanbuilder.com', + '||swiftcapital.com', + '||simility.com', + '||cashify.net', + '||swiftbank.info', + '||swiftbank.us', + '||swiftfinancial.com', + '||swiftfinancial.info', + '||swiftfinancial.net', + '||venmo-touch.com', + '||venmo.com', + '||venmo.info', + '||venmo.net', + '||venmo.org', + '||cash2.com', + '||filipino-music.net', + '||s-xoom.com', + '||webmoneyinfo.com', + '||wiremoneytoirelandwithxoomeasierandcheaper.com', + '||wwwxoom.com', + '||xoom-experience.com', + '||xoom.com', + '||xoom.io', + '||xoom.us', + '||xoomcom.com', + '|http://venmo.s3.amazonaws.com', + '|https://venmo.s3.amazonaws.com', + '||softbank', + '||sb-mobile.jp', + '||sb-telecom.net', + '||softbank-ipo.com', + '||softbank-jp.com', + '||softbank-robotics.com', + '||softbank-telecom.com', + '||softbank-telecom.net', + '||softbank.jp', + '||softbank.tv', + '||softbankbb.com', + '||softbankbb.net', + '||softbankci.com', + '||softbankhawksstore.jp', + '||softbankmobile.net', + '||softbankrobotics.com', + '||softbanktelecom.com', + '||softbankusa.net', + '||softbankventuresasia.com', + '||softbankworld.com', + '||stripe.com', + '||stripe.network', + '||stripecdn.com', + '||visa.be', + '||visa.ca', + '||visa.cl', + '||visa.co.ao', + '||visa.co.cr', + '||visa.co.id', + '||visa.co.il', + '||visa.co.in', + '||visa.co.jp', + '||visa.co.ke', + '||visa.co.ni', + '||visa.co.nz', + '||visa.co.th', + '||visa.co.uk', + '||visa.co.ve', + '||visa.co.za', + '||visa.com', + '||visa.com.ag', + '||visa.com.ai', + '||visa.com.ar', + '||visa.com.au', + '||visa.com.az', + '||visa.com.bo', + '||visa.com.br', + '||visa.com.bs', + '||visa.com.bz', + '||visa.com.co', + '||visa.com.cy', + '||visa.com.dm', + '||visa.com.do', + '||visa.com.ec', + '||visa.com.ge', + '||visa.com.gt', + '||visa.com.gy', + '||visa.com.hk', + '||visa.com.hn', + '||visa.com.hr', + '||visa.com.jm', + '||visa.com.kh', + '||visa.com.kn', + '||visa.com.kz', + '||visa.com.lc', + '||visa.com.lk', + '||visa.com.ms', + '||visa.com.mx', + '||visa.com.my', + '||visa.com.ng', + '||visa.com.pa', + '||visa.com.pe', + '||visa.com.ph', + '||visa.com.pr', + '||visa.com.py', + '||visa.com.ru', + '||visa.com.sg', + '||visa.com.sv', + '||visa.com.tr', + '||visa.com.tt', + '||visa.com.tw', + '||visa.com.ua', + '||visa.com.uy', + '||visa.com.vc', + '||visa.com.vi', + '||visa.com.vn', + '||visa.cz', + '||visa.de', + '||visa.dk', + '||visa.es', + '||visa.fi', + '||visa.fr', + '||visa.gd', + '||visa.gp', + '||visa.gr', + '||visa.hk', + '||visa.hu', + '||visa.ie', + '||visa.is', + '||visa.ky', + '||visa.lt', + '||visa.lv', + '||visa.mn', + '||visa.mq', + '||visa.nl', + '||visa.no', + '||visa.pl', + '||visa.pt', + '||visa.ro', + '||visa.se', + '||visa.sk', + '||visa.so', + '||visa.sx', + '||visa.tc', + '||visabg.com', + '||visaeurope.at', + '||visaeurope.ch', + '||visaeurope.lu', + '||visaeurope.si', + '||visaitalia.com', + '||visakorea.com', + '||visamiddleeast.com', + '||visasoutheasteurope.com', + '||finlitsummit.org', + '||myvisaluxuryhotels.com', + '||visainfinite.ca', + '||visainfiniteluxuryhotels.ca', + '||visaluxuryhotelcollection.com', + '||visaluxuryhotelcollection.com.br', + '||visaluxuryhotelcollection.com.mx', + '||visaluxuryhotels.com', + '||visaluxuryhotels.com.ar', + '||visasignaturehotels.com', + '||connaissancesfinancierespratiques.ca', + '||dnsvisa.com', + '||eubluecardvisa.com', + '||financialsoccer.ca', + '||lightbridge.com', + '||miamifintechfestival.com', + '||mhshosting.com', + '||practicalbusinessskills.com', + '||practicalmoneyskills.ca', + '||practicalmoneyskills.jp', + '||soccerfinancier.ca', + '||torcidadeouro.com', + '||vaultify.com', + '||vaultify.info', + '||vaultify.net', + '||visa-atm.com', + '||visa-news.jp', + '||visabank.org', + '||visabusinessinsights.com', + '||visacarddesignlab.com', + '||visacards.com', + '||visacheckout.net', + '||visacheckout.org', + '||visaconciergelac.com', + '||visadigital.com', + '||visadigitalconcierge.com', + '||visadns.com', + '||visadpsonline.us', + '||visaeverywhereshop.com', + '||visafintechfasttrack.com', + '||visafulfillment.com', + '||visagiftcard.us', + '||visaglobalfinance.com', + '||visaicsdirect.com', + '||visainfinite.ca', + '||visanet.net', + '||visapcsdirect.com', + '||visaplus.com', + '||visasavingsedge.ca', + '||visasignature.co.kr', + '||visb.org', + '||ak1.net', + '||aka-ai.com', + '||aka-ai.net', + '||akacrypto.net', + '||akadeem.net', + '||akadns.com', + '||akadns6.net', + '||akaeai.com', + '||akafms.net', + '||akahost.net', + '||akaint.net', + '||akam.net', + '||akamaa.com', + '||akamah.com', + '||akamak.com', + '||akamam.com', + '||akamai-access.com', + '||akamai-access.net', + '||akamai-cdn.com', + '||akamai-platform-internal.net', + '||akamai-platform-staging.com', + '||akamai-platform.net', + '||akamai-regression.net', + '||akamai-staging.net', + '||akamai-sucks.net', + '||akamai-thailand.com', + '||akamai-thailand.net', + '||akamai-trials.com', + '||akamai.co.kr', + '||akamai.com', + '||akamai.net', + '||akamaientrypoint.net', + '||akamaietpcnctest.com', + '||akamaietpcompromisedcnctest.com', + '||akamaietpcompromisedmalwaretest.com', + '||akamaietpmalwaretest.com', + '||akamaietpphishingtest.com', + '||akamaihd-staging.net', + '||akamaihd.com', + '||akamaihd.net', + '||akamaimagicmath.net', + '||akamainewzealand.com', + '||akamaiphillipines.com', + '||akamaiphillipines.net', + '||akamaitech.com', + '||akamaitech.net', + '||akamaitechnologies.com', + '||akamaitechnologies.net', + '||akamaisingapore.net', + '||akamaized-staging.net', + '||akamaized.net', + '||akamaizercentral.com', + '||akamci.com', + '||akami.com', + '||akami.net', + '||akamii.com', + '||akamqi.com', + '||akastream.com', + '||akastream.net', + '||akatns.net', + '||iamakamai.com', + '||iamakamai.net', + '||soasta-dswb.com', + '||srtcdn.net', + '||cloudflare-dns.com', + '||cloudflare-ipfs.com', + '||cloudflare.com', + '||cloudflareapps.com', + '||cloudflareinsights.com', + '||cloudflareok.com', + '||cloudflaressl.com', + '||cloudflarestatus.com', + '||cloudflarestream.com', + '||cloudflaretest.com', + '||one.one.one', + '||trycloudflare.com', + '||videodelivery.net', + '||workers.dev', + '||fastly.com', + '||fastly.net', + '||fastlylabs.com', + '||fastlylb.net', + '||fastly-terrarium.com', + '||zencdn.net', + '||imgix.com', + '||imgix.net', + '||pagecdn.com', + '||pagecdn.io', + '||quantil.com', + '||stackpath.com', + '||stackpath.dev', + '||buypass-ssl.com', + '||buypass.com', + '||buypass.no', + '||buypass.se', + '||minid.no', + '||comodo.com', + '||comodoca.com', + '||comodoca2.com', + '||comodoca3.com', + '||comodoca4.com', + '||cybertrust.co.jp', + '||cybertrust.ne.jp', + '||digicert.com', + '||freessl.com', + '||geotrust.com', + '||rapidssl.com', + '||thawte.com', + '||thawte.de', + '||thawte.fr', + '||entrust.net', + '||entrustdatacard.com', + '||globalsign-media.com', + '||globalsign.be', + '||globalsign.ch', + '||globalsign.co.uk', + '||globalsign.com', + '||globalsign.com.au', + '||globalsign.com.hk', + '||globalsign.com.sg', + '||globalsign.es', + '||globalsign.eu', + '||globalsign.fr', + '||globalsign.net', + '||globalsign.nl', + '||identrust.com', + '||identrust.co.uk', + '||identrust.net', + '||letsencrypt.org', + '||secom.co.jp', + '||secomtrust.net', + '||sectigo.com', + '||enterprisessl.com', + '||hackerguardian.com', + '||instantssl.com', + '||optimumssl.com', + '||positivessl.com', + '||digital-id.ch', + '||digitalid.ch', + '||managed-pki.ch', + '||managed-pki.de', + '||pki-post.ch', + '||pki-posta.ch', + '||pki-poste.ch', + '||root-signing.ch', + '||rootsigning.com', + '||ssl-certificate.ch', + '||swissid.ch', + '||swissign.com', + '||swissign.li', + '||swisssign-group.ch', + '||swisssign-group.com', + '||swisssign-group.li', + '||swisssign.ch', + '||swisssign.com', + '||swisssign.li', + '||swisssign.net', + '||swisssign.org', + '||swisssigner.ch', + '||swisssigner.com', + '||swisssigngroup.ch', + '||swisssigngroup.com', + '||swissstick.com', + '||swisstsa.ch', + '||swisstsa.li', + '||trustdoc.ch', + '||trustsign.ch', + '||zert.ch', + '||telekom.com', + '||telekom.de', + '||trustwave.com', + '||verisign.asia', + '||verisign.biz', + '||verisign.ch', + '||verisign.co.in', + '||verisign.co.uk', + '||verisign.com', + '||verisign.com.au', + '||verisign.com.br', + '||verisign.com.cn', + '||verisign.com.es', + '||verisign.com.hk', + '||verisign.com.sg', + '||verisign.com.tw', + '||verisign.com.vn', + '||verisign.de', + '||verisign.dk', + '||verisign.es', + '||verisign.fr', + '||verisign.hk', + '||verisign.in', + '||verisign.info', + '||verisign.jobs', + '||verisign.mobi', + '||verisign.name', + '||verisign.net', + '||verisign.org', + '||verisign.pro', + '||verisign.se', + '||verisign.sg', + '||verisign.tw', + '||verisign.us', + '||verisign.vn', + '||verisigninc.com', + '||discord.co', + '||discord.com', + '||discord.gg', + '||discord.gift', + '||discord.gifts', + '||discord.media', + '||discord.new', + '||discordapp.com', + '||discordapp.net', + '||freenode.net', + '||lin.ee', + '||line.me', + '||line.naver.jp', + '||line-apps.com', + '||line-cdn.net', + '||line-scdn.net', + '||nhncorp.jp', + '||signal.art', + '||signal.org', + '||signalusers.org', + '||slack-edge.com', + '||slack-imgs.com', + '||slack.com', + '||slackb.com', + '||slackcertified.com', + '||slackdemo.com', + '||slackhq.com', + '||contest.com', + '||graph.org', + '||quiz.directory', + '||t.me', + '||tdesktop.com', + '||telega.one', + '||telegra.ph', + '||telegram.dog', + '||telegram.me', + '||telegram.org', + '||telegram.space', + '||telesco.pe', + '||tg.dev', + '||tx.me', + '||usercontent.dev', + '||asproex.com', + '||asproexapi.com', + '||binance.charity', + '||binance.cloud', + '||binance.com', + '||binance.vision', + '||binancezh.com', + '||bnbstatic.com', + '||yshyqxx.com', + '||bitbank.cc', + '||bitcoin.org', + '||bitfinex.com', + '||bitflyer.com', + '||bitflyer.jp', + '||bitmex.com', + '||bitquick.co', + '||bisq.io', + '||bisq.network', + '||bitsquare.io', + '||bitstamp.net', + '||bittrex.com', + '||btcbox.co.jp', + '||cex.io', + '||coinbase.com', + '||coinone.co.kr', + '||coinonecore.com', + '||coinonecorp.com', + '||dogecoin.com', + '||devcon.org', + '||ethereum.foundation', + '||ethereum.org', + '||hbabit.com', + '||hbfile.net', + '||huobi.com', + '||huobi.me', + '||huobi.pro', + '||huobi.sc', + '||huobiasia.vip', + '||huobigroup.com', + '||huobitoken.com', + '||kraken.com', + '||localbitcoins.com', + '||localbitcoinschain.com', + '||okex.com', + '||paxful.com', + '||zb.app', + '||zb.com', + '||zb.io', + '||zb.live', + '||adidas.at', + '||adidas.be', + '||adidas.ch', + '||adidas.co.in', + '||adidas.co.uk', + '||adidas.com', + '||adidas.com.sa', + '||adidas.com.tw', + '||adidas.cz', + '||adidas.de', + '||adidas.dk', + '||adidas.hu', + '||adidas.ie', + '||adidas.it', + '||adidas.nl', + '||adidas.pl', + '||adidas.ru', + '||adidas.se', + '||bby.com', + '||bbycastatic.ca', + '||bbycloud.com', + '||bbycontent.com', + '||bbycontent.net', + '||bbyintl.com', + '||bbystatic.com', + '||bbyurl.us', + '||bestbhy.com', + '||bestbuy-audio.com', + '||bestbuy-communityrelations.com', + '||bestbuy-giftcard.info', + '||bestbuy-int.com', + '||bestbuy-jobs.com', + '||bestbuy.ca', + '||bestbuy.com', + '||bestbuy.com.mx', + '||bestbuy.info', + '||bestbuy24x7solutions.com', + '||bestbuybusiness.com', + '||bestbuybusinessadvantageaccount.com', + '||bestbuycanada.ca', + '||bestbuycanada.com', + '||bestbuycanadaltd.ca', + '||bestbuycharityclassic.com', + '||bestbuycoffeemakers.com', + '||bestbuyethics.com', + '||bestbuyforbusiness.ca', + '||bestbuygsm.com', + '||bestbuyideax.com', + '||bestbuyphotoworkshoptours.com', + '||bestbuyrewards.com', + '||bestbuyrewardzone.ca', + '||bestbuys.com', + '||bestbuysgeeksquad.com', + '||bestbuysolutions.net', + '||bestbuystores.com', + '||bestbuytradein.com', + '||bestbuyus.com', + '||besztbuy.com', + '||bextbuy.com', + '||bienvenuechezbestbuy.ca', + '||cowboom.com', + '||futureshop.ca', + '||initproducts.com', + '||mybestbuy.com', + '||mybestbuyclaims.com', + '||myrewardzone.com', + '||myrz.com', + '||pacifickitchenandhome.com', + '||tiendabestbuy.com', + '||unbrandedproducts.com', + '||welcometobestbuy.ca', + '||wolfatbestbuy.com', + '||wolfatbestbuy.net', + '||www-bestbuystores.com', + '||geek-squad-support.com', + '||geek-squad.net', + '||geek-squad.org', + '||geek-squads.net', + '||geeksquad.ca', + '||geeksquad.cc', + '||geeksquad.com', + '||geeksquad.net', + '||geeksquad.tv', + '||geeksquadcares.com', + '||geeksquadcentral.com', + '||geeksquadforums.com', + '||geeksquadonline.com', + '||geeksquadprotectionplan.org', + '||geeksquadservices.org', + '||geeksquadwebroot.org', + '||gscanada.info', + '||gsccdn.com', + '||gslink.us', + '||onlinegeeksquad.com', + '||rocketfishproducts.com', + '||dealtree.org', + '||techliquidators.com', + '||booking.com', + '||bstatic.com', + '||costco-static.com', + '||costco.com', + '||costcobusinessdelivery.com', + '||craigslist.org', + '||dmm.com', + '||dmm.co.jp', + '||dmm-extension.com', + '||21centuryaccess.com', + '||4ebaytraders.com', + '||adcommerce.tv', + '||appsonebay.net', + '||asebay.com', + '||baazee.com', + '||bidbay.com', + '||bidorbuyindia.com', + '||billpoint.com', + '||billpoint.info', + '||billpoint.tv', + '||billpoint.us', + '||billpointnewzealand.com', + '||blogebay.com', + '||bookclubcorner.com', + '||builtfromebay.com', + '||buyitnow.com', + '||buyitnow.net', + '||buyitnow.org', + '||buyitnow.tv', + '||buyitnowshop.net', + '||cafr.ca', + '||carebay.com', + '||cargigileads.com', + '||cebay.com', + '||collective99.com', + '||commerceos.com', + '||connectcommerce.hk', + '||connectcommerce.info', + '||connectcommerce.tv', + '||connectedcommerce.com', + '||connectedcommerce.tv', + '||crececonebay.com', + '||creditcardsbay.com', + '||cyber-bay.info', + '||cyber-bay.org', + '||dba.dk', + '||dealbay.com', + '||dealtime.com', + '||didce.com', + '||douya.org', + '||dreamtoplay.com', + '||e-bay.com', + '||e-bay.it', + '||e-bay.net', + '||eachpay.com', + '||eachpay.net', + '||ebahy.com', + '||ebay-authenticate.net', + '||ebay-confirm.com', + '||ebay-course.com', + '||ebay-cz.com', + '||ebay-delivery.com', + '||ebay-discoveries.com', + '||ebay-fashion.com', + '||ebay-inc.com', + '||ebay-inc.net', + '||ebay-inc.org', + '||ebay-online.com', + '||ebay-sales.com', + '||ebay-stories.com', + '||ebay-us.com', + '||ebay-vacation.com', + '||ebay.at', + '||ebay.be', + '||ebay.ca', + '||ebay.ch', + '||ebay.co.nz', + '||ebay.co.uk', + '||ebay.co.ve', + '||ebay.co.za', + '||ebay.com', + '||ebay.com.ar', + '||ebay.com.au', + '||ebay.com.ec', + '||ebay.com.hk', + '||ebay.com.mt', + '||ebay.com.my', + '||ebay.com.ph', + '||ebay.com.sg', + '||ebay.de', + '||ebay.es', + '||ebay.fr', + '||ebay.ie', + '||ebay.in', + '||ebay.it', + '||ebay.jp', + '||ebay.lt', + '||ebay.mn', + '||ebay.nl', + '||ebay.org', + '||ebay.ph', + '||ebay.pk', + '||ebay.pl', + '||ebay.sg', + '||ebay.us', + '||ebay.vn', + '||ebay25.com', + '||ebay68.com', + '||ebaya.com', + '||ebayads.com', + '||ebayads.net', + '||ebayadvertising.com', + '||ebayanunsios.net', + '||ebayauction.com', + '||ebayaustralia.com', + '||ebayauthenticate.com.cn', + '||ebaybags.com', + '||ebaybank.com', + '||ebaybenefits.com', + '||ebayboutique.com', + '||ebayca.com', + '||ebayca.org', + '||ebaycafe.com', + '||ebaycar.com', + '||ebaycareers.com', + '||ebaycbt.co.kr', + '||ebaycdn.net', + '||ebaychina.net', + '||ebayclassifiedsgroup.com', + '||ebayclassifieds.com', + '||ebayclassifieds.info', + '||ebayclassifieds.org', + '||ebayclassifieds.tv', + '||ebayclassifiedsgroup.com', + '||ebayclassifiedsgroup.info', + '||ebayclassifiedsgroup.org', + '||ebayclassifies.com', + '||ebayclub.com', + '||ebaycoins.com', + '||ebaycom.com', + '||ebaycommercenetwork.com', + '||ebaycourse.com', + '||ebayd.com', + '||ebayde.com', + '||ebaydlassifieds.com', + '||ebaydts.com', + '||ebayedu.com', + '||ebayeletro.com', + '||ebayenterprise.com', + '||ebayenterprise.info', + '||ebayenterprise.net', + '||ebayenterprise.tv', + '||ebayetc.com', + '||ebayexpress.sg', + '||ebayfashion.com', + '||ebayfashion.net', + '||ebayforcharity.org', + '||ebayforeclosure.org', + '||ebayfrance.com', + '||ebayglobalshipping.com', + '||ebaygroup.com', + '||ebayhabit.com', + '||ebayheels.com', + '||ebayhots.com', + '||ebayimg.com', + '||ebayinc.com', + '||ebayinc.net', + '||ebayinc.org', + '||ebayincconnectedcommerce.net', + '||ebayinkblog.com', + '||ebayinternetsalestax.com', + '||ebayit.com', + '||ebayjewelry.com', + '||ebayjob.com', + '||ebayla.org', + '||ebaylisting.com', + '||ebaylocal.net', + '||ebaylocationsdevacances.com', + '||ebaymag.com', + '||ebaymainstreet.com', + '||ebaymall.com', + '||ebaymarketplace.net', + '||ebaymotors.ca', + '||ebaymotors.com', + '||ebaymotors.org', + '||ebaymotorsblog.com', + '||ebaynow.com', + '||ebaynyc.com', + '||ebayon.com', + '||ebayon.net', + '||ebayoncampus.com', + '||ebayopen.com', + '||ebayopensource.com', + '||ebayopensource.net', + '||ebaypakistan.net', + '||ebaypark.com', + '||ebayparts.com', + '||ebayprivacycenter.com', + '||ebayqq.com', + '||ebayradio.com', + '||ebayrtm.com', + '||ebayseller.com', + '||ebayshoesstore.com', + '||ebayshop.com', + '||ebayshop111.com', + '||ebayshopping.org', + '||ebaysocial.com', + '||ebaysocial.ru', + '||ebaysoho.com', + '||ebaysohos.com', + '||ebaystatic.com', + '||ebaystore.com', + '||ebaystore77.com', + '||ebaystyle.com', + '||ebaysweden.com', + '||ebayt.com', + '||ebaytechblog.com', + '||ebaytopratedseller.net', + '||ebaytrading.com', + '||ebaytradingassistant.com', + '||ebaytv.org', + '||ebayuae.net', + '||ebayvakantiehuizen.com', + '||ebayvalet.com', + '||ebayvietnam.net', + '||ebayworlds.com', + '||ebayy.com', + '||edisebay.com', + '||eebay.com', + '||epinions.com', + '||eu-consumer-empowerment.com', + '||expertmaker.com', + '||fairmarket.com', + '||fragrancebay.com', + '||francemail.com', + '||half.com', + '||half.tv', + '||halfcanada.com', + '||halfjapan.com', + '||handbagsoutletebay.com', + '||iebay.com', + '||irribay.com', + '||itsbetterwhenyouwinit.com', + '||liketwice.com', + '||liveauction.com', + '||milofetch.com', + '||musicbay.net', + '||myconstructionworld.net', + '||myebay.com', + '||nebay.net', + '||paisapay.cc', + '||paisapay.info', + '||paisapay.tv', + '||premobay.com', + '||privatemarketplaces.net', + '||privatemarketplaces.us', + '||prostores.com', + '||rethink.net', + '||shopibay.net', + '||shoping.com', + '||sourcingforebay.com.cn', + '||sourcingforebay.net', + '||sourcingforebay.tv', + '||speybay.com', + '||storesense.com', + '||svpply.com', + '||telebay.com', + '||telesell.com', + '||texttobuy.org', + '||theebayshop.com', + '||theopportunityproject.org', + '||towerauction.com', + '||vendu.com', + '||weareebay.com', + '||watch-ebay.org', + '||wwwdecide.com', + '||wwwebay.com', + '||wwwebay.net', + '||wwwwebay.com', + '||xindelu.com', + '||xn--3et96bj49ahpq.com', + '||xn--4vq475g.com', + '||xn--4vq477m.com', + '||xn--7hv594h.com', + '||xn--hb4aw0g.com', + '||xn--q41am8x.com', + '||xn--qoq462m.com', + '||xn--tkry91n.com', + '||xn--ubt498knmf.com', + '||xn--xsq421m.com', + '||xn--xsq605n.com', + '||xn--xsq959n.com', + '||xn--yf1at58a.com', + '||xxbay.com', + '||yibei.org', + '||gittigidiyor.net', + '||gittigidiyorsikayet.com', + '||gumtree.sg', + '||jijiji.ca', + '||kiji.ca', + '||kijii.ca', + '||kijij.ca', + '||kijiji.ca', + '||kijijiauto.ca', + '||kijijiautos.ca', + '||kijijiforbusiness.ca', + '||kijijii.ca', + '||kijijiraps.ca', + '||kijji.ca', + '||kijjiji.ca', + '||automobile.fr', + '||mobile.de', + '||mobileinternational.com', + '||q10.jp', + '||qoo10.jp', + '||achievementanalytics.com', + '||cdn-terapeak.com', + '||listinganalytics.net', + '||marketexecutive.net', + '||tearapeak.com', + '||terapeack.com', + '||terapeak.ca', + '||terapeak.com', + '||terapeak.com.hk', + '||terapeak.hk', + '||terapeak.info', + '||teraperk.com', + '||terrapeak.com', + '||thebayuk.com', + '||nexcat.com', + '||nexpart.com', + '||nexpart.tv', + '||renchead.com', + '||whisolutions.com', + '||wrenchead.com', + '|http://ebay-25-assets.s3-us-west-1.amazonaws.com', + '|https://ebay-25-assets.s3-us-west-1.amazonaws.com', + '||farfetch-apps.com', + '||farfetch-contents.com', + '||farfetch.com', + '||farfetch.net', + '||fflnk.net', + '||gucci', + '||chimeforchange.org', + '||gucci.com', + '||guccimuseo.com', + '||guccitimeless.com', + '||regiongold.com', + '||hm.com', + '||homedepot-static.com', + '||homedepot.com', + '||ikea.com', + '||ikea.net', + '||ingka.com', + '||ingka.dev', + '||ingkacentres.com', + '||loveminiso.com.br', + '||miniso-au.com', + '||miniso-bh.com', + '||miniso-np.com', + '||miniso-nz.com', + '||miniso.by', + '||miniso.ca', + '||miniso.co', + '||miniso.co.id', + '||miniso.co.tz', + '||miniso.com', + '||miniso.com.es', + '||miniso.com.gr', + '||miniso.com.mx', + '||miniso.com.pl', + '||miniso.com.py', + '||miniso.com.tr', + '||miniso.ge', + '||miniso.ie', + '||miniso.jp', + '||miniso.ma', + '||miniso.my', + '||miniso.pe', + '||miniso.pk', + '||miniso.ua', + '||miniso.uz', + '||minisoindia.com', + '||minisojordan.com', + '||minisokorea.com', + '||minisolife.co.za', + '||minisothailand.com', + '||minisovietam.vn', + '||myminiso.com', + '||muji.com', + '||muji.com.hk', + '||muji.eu', + '||muji.net', + '||muji.tw', + '||muji.us', + '||mujikorea.net', + '||nike', + '||air-nike-shoes.com', + '||airmax360.com', + '||beijingnike.com', + '||betternike.com', + '||buynikechina.com', + '||cheap-nike.com', + '||cheapnikedunks.com', + '||cheapnikeoutlet.com', + '||classicnike.com', + '||cnnikebrand.com', + '||customnikeshoes.com', + '||easynike.com', + '||eenike.com', + '||fashionnike.com', + '||finenike.com', + '||foampositeshoes.com', + '||goldnikeclub.com', + '||gonike.com', + '||handbags-nike.com', + '||hightopnikes.com', + '||idnike.com', + '||inikesneakers.com', + '||justdoit.us', + '||kicksnike1.com', + '||kidsnikeshoes.com', + '||mynike.com', + '||nike-air-max.com', + '||nike-dunksb.com', + '||nike-fr.com', + '||nike-org.com', + '||nike-uk.com', + '||nike-us.com', + '||nike-usa.com', + '||nike.ci', + '||nike.com', + '||nike.com.br', + '||nike.com.hk', + '||nike.gy', + '||nike.hk', + '||nike.shop', + '||nike.us', + '||nike.xn--hxt814e', + '||nike0594.com', + '||nike23.com', + '||nikeadidas.com', + '||nikeairhuarache.com', + '||nikeairmax.com', + '||nikeairmaxs.com', + '||nikeairmaxshoes.com', + '||nikeairrift.com', + '||nikeasia.com', + '||nikeaustralia.com', + '||nikeaw77.com', + '||nikeb.com', + '||nikebbn.com', + '||nikebetrue.com', + '||nikebetterworld.com', + '||nikebetterworld.info', + '||nikebetterworld.net', + '||nikebetterworld.org', + '||nikebiz.info', + '||nikebuy.com', + '||nikeby.com', + '||nikecdn.com', + '||nikecompany.com', + '||nikeconfluence.com', + '||nikechosen.com', + '||nikecloud.com', + '||nikeclub.com', + '||nikecraft.com', + '||nikedawn.com', + '||nikedunks.net', + '||nikedunksshoes.com', + '||nikeelite.com', + '||nikefactorystore.com', + '||nikefind.com', + '||nikefirm.com', + '||nikefoamposites.com', + '||nikefoampositeshoes.com', + '||nikefootballcleats.com', + '||nikefootballgloves.com', + '||nikefootballjersey.com', + '||nikefoundation.org', + '||nikefr.com', + '||nikefrance.com', + '||nikefree.com', + '||nikefreeshoes.com', + '||nikefuelband.com', + '||nikegadgets.com', + '||nikegenealogy.com', + '||nikegolf.ca', + '||nikegrid.com', + '||nikehelp.com', + '||nikehightops.com', + '||nikehyperdunk.com', + '||nikeidshoes.com', + '||nikeinc.com', + '||nikeincchemistry.com', + '||nikeinstock.com', + '||nikeit.com', + '||nikeitalia.com', + '||nikeitaly.com', + '||nikekd.com', + '||nikekid.com', + '||nikelink.com', + '||nikeliuxiang.com', + '||nikelives.com', + '||nikelunarglide.com', + '||nikemarketing.com', + '||nikenews.com', + '||niken7.com', + '||nikeonlinestore.com', + '||nikeoutletstore.com', + '||nikeoutletstores.com', + '||nikepioneer.com', + '||nikeplus.com', + '||nikeplus.org', + '||nikepress.com', + '||nikeprice.com', + '||nikeproduct.com', + '||nikepromax.com', + '||nikeresponsibility.com', + '||nikereuseashoe.com', + '||nikerunner.com', + '||nikerunningshoes.com', + '||nikesb.com', + '||nikesbdunks.net', + '||nikeseason.com', + '||nikeselling.com', + '||nikesellorder.com', + '||nikeshoemarket.com', + '||nikeshoes-store.com', + '||nikeshoes21.com', + '||nikeshoes4u.com', + '||nikeshoescity.com', + '||nikeshoesgroup.com', + '||nikeshoesinc.com', + '||nikeshoesmarket.com', + '||nikeshoesretro.com', + '||nikeshoeswon.com', + '||nikeshoponline.com', + '||nikeshoxsale.com', + '||nikesku.com', + '||nikesnowboarding.com', + '||nikesoccercleats.com', + '||nikesportswear.com', + '||nikestares.com', + '||nikestore.com', + '||nikestore.com.au', + '||nikestyles.com', + '||nikeswim.com', + '||niketaiwan.net', + '||niketracking.com', + '||niketradeweb.com', + '||niketrainer.com', + '||niketrainers.com', + '||niketraining.com', + '||nikeusa.com', + '||nikewear.com', + '||nikey.com', + '||nikezoom.com', + '||nke6.com', + '||outletnike.com', + '||runnike.com', + '||runningnike.com', + '||sale-nikeshoes.com', + '||static-nike.com', + '||swoo.sh', + '||swoosh.com', + '||swoosh.tv', + '||thedailysnkr.com', + '||verygoodnike.com', + '||womensnikeshox.com', + '||xn--74q035i.xn--hxt814e', + '||nordstrom.com', + '||nordstrommedia.com', + '||shopee.co.id', + '||shopee.co.th', + '||shopee.com', + '||shopee.com.br', + '||shopee.com.my', + '||shopee.ph', + '||shopee.sg', + '||shopee.tw', + '||shopee.vn', + '||shopeemobile.com', + '||shp.ee', + '||target', + '||target.com', + '||targetimg1.com', + '||walmart', + '||wal-mart.com', + '||wal.co', + '||walmart-content.com', + '||walmart.com', + '||walmart.pharmacy', + '||walmartimages.com', + '||wmt.co', + '||betterexplained.com', + '||brilliant.org', + '||apa.org', + '||psyccareers.com', + '||cambridge.org', + '||cambridgeschoolshakespeare.com', + '||cambridgedigital.net', + '||cambridgemaths.org', + '||newisiknowledge.com', + '||isiknowledge.com', + '||clarivate.com', + '||webofknowledge.com', + '||webofscience.com', + '||doi.org', + '||doi.info', + '||els-cdn.com', + '||elsevier-ae.com', + '||elsevier.com', + '||elsevier.io', + '||engineeringvillage.com', + '||evise.com', + '||scopus.com', + '|http://scholar.google.ae', + '|https://scholar.google.ae', + '|http://scholar.google.at', + '|https://scholar.google.at', + '|http://scholar.google.be', + '|https://scholar.google.be', + '|http://scholar.google.bg', + '|https://scholar.google.bg', + '|http://scholar.google.ca', + '|https://scholar.google.ca', + '|http://scholar.google.cat', + '|https://scholar.google.cat', + '|http://scholar.google.ch', + '|https://scholar.google.ch', + '|http://scholar.google.cl', + '|https://scholar.google.cl', + '|http://scholar.google.cn', + '|https://scholar.google.cn', + '|http://scholar.google.co.cr', + '|https://scholar.google.co.cr', + '|http://scholar.google.co.id', + '|https://scholar.google.co.id', + '|http://scholar.google.co.il', + '|https://scholar.google.co.il', + '|http://scholar.google.co.in', + '|https://scholar.google.co.in', + '|http://scholar.google.co.jp', + '|https://scholar.google.co.jp', + '|http://scholar.google.co.kr', + '|https://scholar.google.co.kr', + '|http://scholar.google.co.nz', + '|https://scholar.google.co.nz', + '|http://scholar.google.co.th', + '|https://scholar.google.co.th', + '|http://scholar.google.co.uk', + '|https://scholar.google.co.uk', + '|http://scholar.google.co.ve', + '|https://scholar.google.co.ve', + '|http://scholar.google.co.za', + '|https://scholar.google.co.za', + '|http://scholar.google.com', + '|https://scholar.google.com', + '|http://scholar.google.com.ar', + '|https://scholar.google.com.ar', + '|http://scholar.google.com.au', + '|https://scholar.google.com.au', + '|http://scholar.google.com.bo', + '|https://scholar.google.com.bo', + '|http://scholar.google.com.br', + '|https://scholar.google.com.br', + '|http://scholar.google.com.co', + '|https://scholar.google.com.co', + '|http://scholar.google.com.cu', + '|https://scholar.google.com.cu', + '|http://scholar.google.com.do', + '|https://scholar.google.com.do', + '|http://scholar.google.com.ec', + '|https://scholar.google.com.ec', + '|http://scholar.google.com.eg', + '|https://scholar.google.com.eg', + '|http://scholar.google.com.gt', + '|https://scholar.google.com.gt', + '|http://scholar.google.com.hk', + '|https://scholar.google.com.hk', + '|http://scholar.google.com.ly', + '|https://scholar.google.com.ly', + '|http://scholar.google.com.mx', + '|https://scholar.google.com.mx', + '|http://scholar.google.com.my', + '|https://scholar.google.com.my', + '|http://scholar.google.com.ni', + '|https://scholar.google.com.ni', + '|http://scholar.google.com.pa', + '|https://scholar.google.com.pa', + '|http://scholar.google.com.pe', + '|https://scholar.google.com.pe', + '|http://scholar.google.com.ph', + '|https://scholar.google.com.ph', + '|http://scholar.google.com.pk', + '|https://scholar.google.com.pk', + '|http://scholar.google.com.pr', + '|https://scholar.google.com.pr', + '|http://scholar.google.com.py', + '|https://scholar.google.com.py', + '|http://scholar.google.com.sg', + '|https://scholar.google.com.sg', + '|http://scholar.google.com.sv', + '|https://scholar.google.com.sv', + '|http://scholar.google.com.tr', + '|https://scholar.google.com.tr', + '|http://scholar.google.com.tw', + '|https://scholar.google.com.tw', + '|http://scholar.google.com.ua', + '|https://scholar.google.com.ua', + '|http://scholar.google.com.uy', + '|https://scholar.google.com.uy', + '|http://scholar.google.com.vn', + '|https://scholar.google.com.vn', + '|http://scholar.google.cz', + '|https://scholar.google.cz', + '|http://scholar.google.de', + '|https://scholar.google.de', + '|http://scholar.google.dk', + '|https://scholar.google.dk', + '|http://scholar.google.es', + '|https://scholar.google.es', + '|http://scholar.google.fi', + '|https://scholar.google.fi', + '|http://scholar.google.fr', + '|https://scholar.google.fr', + '|http://scholar.google.gr', + '|https://scholar.google.gr', + '|http://scholar.google.hn', + '|https://scholar.google.hn', + '|http://scholar.google.hr', + '|https://scholar.google.hr', + '|http://scholar.google.hu', + '|https://scholar.google.hu', + '|http://scholar.google.is', + '|https://scholar.google.is', + '|http://scholar.google.it', + '|https://scholar.google.it', + '|http://scholar.google.li', + '|https://scholar.google.li', + '|http://scholar.google.lt', + '|https://scholar.google.lt', + '|http://scholar.google.lu', + '|https://scholar.google.lu', + '|http://scholar.google.lv', + '|https://scholar.google.lv', + '|http://scholar.google.nl', + '|https://scholar.google.nl', + '|http://scholar.google.no', + '|https://scholar.google.no', + '|http://scholar.google.pl', + '|https://scholar.google.pl', + '|http://scholar.google.pt', + '|https://scholar.google.pt', + '|http://scholar.google.ro', + '|https://scholar.google.ro', + '|http://scholar.google.ru', + '|https://scholar.google.ru', + '|http://scholar.google.se', + '|https://scholar.google.se', + '|http://scholar.google.si', + '|https://scholar.google.si', + '|http://scholar.google.sk', + '|https://scholar.google.sk', + '||ic.ac.uk', + '||imperial.ac.uk', + '||imperialbusiness.school', + '|http://imperial.insendi.com', + '|https://imperial.insendi.com', + '||mit', + '||mit.edu', + '||mit.net', + '||mitpressjournals.org', + '||amamanualofstyle.com', + '||anb.org', + '||blackstonespoliceservice.com', + '||epigeum.com', + '||oed.com', + '||omscr.com', + '||oup.com', + '||ouplaw.com', + '||ox.ac.uk', + '||oxfordaasc.com', + '||oxfordartonline.com', + '||oxfordbibliographies.com', + '||oxfordclinicalpsych.com', + '||oxforddnb.com', + '||oxfordfirstsource.com', + '||oxfordhandbooks.com', + '||oxfordlawtrove.com', + '||oxfordmedicine.com', + '||oxfordmusiconline.com', + '||oxfordpoliticstrove.com', + '||oxfordre.com', + '||oxfordreference.com', + '||oxfordscholarlyeditions.com', + '||oxfordscholarship.com', + '||oxfordwesternmusic.com', + '||sipriyearbook.org', + '||ukwhoswho.com', + '||universitypressscholarship.com', + '||veryshortintroductions.com', + '||serialssolutions.com', + '||proquest.com', + '||sciencedirect.com', + '||sciencedirectassets.com', + '||apress.com', + '||springer.com', + '||springerlink.com', + '||springernature.com', + '||wkap.nl', + '||tandf.co.uk', + '||tandfonline.com', + '||taylorandfrancis.com', + '||taylorfrancis.com', + '||aclweb.org', + '||acm.org', + '||altmetric.com', + '||analytictech.com', + '||annualreviews.org', + '||arxiv.org', + '||asha.org', + '||berkeley.edu', + '||biomedcentral.com', + '||biorxiv.org', + '||brill.com', + '||cell.com', + '||computingreviews.com', + '||degruyter.com', + '||dentalhypotheses.com', + '||elifesciences.org', + '||europepmc.org', + '||frontiersin.org', + '||gale.com', + '||galegroup.com', + '||ggsrv.com', + '||hindawi.com', + '||informs.org', + '||isca-speech.org', + '||jamanetwork.com', + '||japanknowledge.com', + '||jbe-platform.com', + '||jmlr.org', + '||jneurosci.org', + '||jstor.org', + '||kuke.com', + '||lawdata.com.tw', + '||literatumonline.com', + '||mdpi.com', + '||nature.com', + '||nejm.org', + '||neurology.org', + '||ovid.com', + '||peerj.com', + '||physiology.org', + '||plos.org', + '||pnas.org', + '||princeton.edu', + '||researchgate.net', + '||routledgehandbooks.com', + '||royalsocietypublishing.org', + '||sagepub.com', + '||scholarpedia.org', + '||sciencemag.org', + '||scientificamerican.com', + '||scitation.org', + '||silverchair-cdn.com', + '||spiedigitallibrary.org', + '||statsmakemecry.com', + '||thelancet.com', + '||uchicago.edu', + '||ucla.edu', + '||umass.edu', + '||wiley.com', + '||yale.edu', + '||cern', + '||ams02.space', + '||cern.ch', + '||cixp.net', + '||dotcernpilot.info', + '||ippog.org', + '||linearcollider.org', + '|http://chinapower.csis.org', + '|https://chinapower.csis.org', + '||code.org', + '||codecademy.com', + '||coursera-for-business.org', + '||coursera.community', + '||coursera.help', + '||coursera.org', + '||edx.org', + '||edx-cdn.org', + '||egghead.io', + '||freecodecamp.org', + '||khanacademy.org', + '||kastatic.org', + '||knovel.com', + '||laracasts.com', + '||masterclass.com', + '||mzed.com', + '||oreil.ly', + '||oreilly.com', + '||oreilly.review', + '||oreillystatic.com', + '||orl.ly', + '||sitepoint.com', + '||skillshare.com', + '||ted.com', + '||tedcdn.com', + '||udacity.com', + '||udemy.com', + '||udemycdn.com', + '||w3schools.com', + '||abema.io', + '||abema.tv', + '||ameba.jp', + '||ao3.org', + '||archiveofourown.org', + '||archiveofourown.com', + '||archiveofourown.net', + '||att.tv', + '||atttvnow.com', + '||attwatchtv.com', + '||directv.com', + '||dtvce.com', + '||nettyinternet.com', + '||gamer.com.tw', + '||bahamut.com.tw', + '|http://gamer-cds.cdn.hinet.net', + '|https://gamer-cds.cdn.hinet.net', + '|http://gamer2-cds.cdn.hinet.net', + '|https://gamer2-cds.cdn.hinet.net', + '||bandcamp.com', + '||bcbits.com', + '||bethesda.net', + '||doom.com', + '||elderscrolls.com', + '||blizzard.com', + '||blizzardgearstore.com', + '||blz-contentstack.com', + '||battle.net', + '|http://blizzard.nefficient.co.kr', + '|https://blizzard.nefficient.co.kr', + '|http://blzddist1-a.akamaihd.net', + '|https://blzddist1-a.akamaihd.net', + '|http://blzddistkr1-a.akamaihd.net', + '|https://blzddistkr1-a.akamaihd.net', + '|http://bnetcmsus-a.akamaihd.net', + '|https://bnetcmsus-a.akamaihd.net', + '|http://bnetproduct-a.akamaihd.net', + '|https://bnetproduct-a.akamaihd.net', + '|http://bnetshopus.akamaized.net', + '|https://bnetshopus.akamaized.net', + '||diablo3.com', + '||diabloimmortal.com', + '||firesidegatherings.com', + '||playhearthstone.com', + '||heroesofthestorm.com', + '||playoverwatch.com', + '||starcraft.com', + '||starcraft2.com', + '||playwarcraft3.com', + '||worldofwarcraft.com', + '|http://blizzcon-a.akamaihd.net', + '|https://blizzcon-a.akamaihd.net', + '|http://blzmedia-a.akamaihd.net', + '|https://blzmedia-a.akamaihd.net', + '|http://blznav.akamaized.net', + '|https://blznav.akamaized.net', + '||blubrry.com', + '||castro.fm', + '||deviantart.com', + '||deviantart.net', + '||da-files.com', + '||abc-studios.com', + '||abc.com', + '||edgedatg.com', + '||espn.com', + '||espncdn.com', + '||watchespn.com', + '|http://espn.hb.omtrdc.net', + '|https://espn.hb.omtrdc.net', + '|http://espndotcom.tt.omtrdc.net', + '|https://espndotcom.tt.omtrdc.net', + '||marvel.com', + '||marvel10thanniversary.com', + '||marveldimensionofheroes.com', + '||marvelparty.net', + '||marvelpinball.com', + '||marvelsdoubleagent.com', + '||marvelspotlightplays.com', + '||marvelsuperheroseptember.com', + '||marvelsuperwar.com', + '||themarvelexperiencetour.com', + '||natgeomaps.com', + '||nationalgeographic.com', + '||nationalgeographicpartners.com', + '||ngeo.com', + '||adventuresbydisney.com', + '||babble.com', + '||dilcdn.com', + '||disney-asia.com', + '||disney-discount.com', + '||disney-plus.net', + '||disney-studio.com', + '||disney-studio.net', + '||disney.ca', + '||disney.com', + '||disney.com.br', + '||disney.io', + '||disneyadsales.com', + '||disneyarena.com', + '||disneyaulani.com', + '||disneybaby.com', + '||disneycareers.com', + '||disneychannelonstage.com', + '||disneychannelroadtrip.com', + '||disneycruisebrasil.com', + '||disneyenconcert.com', + '||disneyiejobs.com', + '||disneyinflight.com', + '||disneyjunior.com', + '||disneyjuniortreataday.com', + '||disneylatino.com', + '||disneymeetingsandevents.com', + '||disneymovieinsiders.com', + '||disneymusicpromotion.com', + '||disneynewseries.com', + '||disneynow.com', + '||disneypeoplesurveys.com', + '||disneyplus.com', + '||disneyredirects.com', + '||disneysrivieraresort.com', + '||disneystore.com', + '||disneysubscription.com', + '||disneytvajobs.com', + '||disneyworld-go.com', + '||dssott.com', + '||go-disneyworldgo.com', + '||go.com', + '||mickey.tv', + '||moviesanywhere.com', + '||playmation.com', + '||shopdisney.com', + '||shops-disney.com', + '||sorcerersarena.com', + '||spaindisney.com', + '||starwars.com', + '||starwarsgalacticstarcruiser.com', + '||streamingdisney.net', + '||thestationbymaker.com', + '||thisispolaris.com', + '||watchdisneyfe.com', + '||dawngate.com', + '||eastore.com', + '||lordofultima.com', + '||origin.com', + '||origin.tv', + '|http://cloudsync-prod.s3.amazonaws.com', + '|https://cloudsync-prod.s3.amazonaws.com', + '|http://origin-a.akamaihd.net', + '|https://origin-a.akamaihd.net', + '|http://rtm.tnt-ea.com', + '|https://rtm.tnt-ea.com', + '|http://ssl-lvlt.cdn.ea.com', + '|https://ssl-lvlt.cdn.ea.com', + '||awayoutgame.com', + '||battlefieldbadcompany2.com', + '||battlefront2.com', + '||battlefrontii.com', + '||bejewled-stars.com', + '||bejeweledstars.com', + '||capitalgames.com', + '||chillingo.com', + '||commandandconquer.com', + '||conquerwithcharacter.com', + '||crysis.jp', + '||dawngate.com', + '||dawngatechronicles.com', + '||dicela.com', + '||dicela.net', + '||ea-anz-press.com', + '||ea.com', + '||eaaccess.com', + '||eacashcard.com', + '||eacodigos.com', + '||eakorea.co.kr', + '||eamobile.com', + '||eanordic.com', + '||eaplay.com', + '||easports.com', + '||easports.jp', + '||easportsactive.com', + '||easportsactiveonline.com', + '||easportsfootball.com', + '||easportsfootballclub.com', + '||easportsmma.com', + '||easportsworld.com', + '||electronicarts.com', + '||electronicarts.fr', + '||futpromos.com', + '||futunited.com', + '||ghostgames.com', + '||heroesofdragonage.com', + '||hutpromos.com', + '||maddenchampionship.com', + '||maddenrewards.com', + '||maddenseason.info', + '||maddenseason.net', + '||maddenseason.org', + '||maxis.com', + '||mysimsracing.com', + '||play4free.com', + '||playapex.com', + '||pogo.com', + '||pogobeta.com', + '||popcap.com', + '||projectapex.com', + '||pvzheroes.com', + '||spearhead.kr', + '||speedhunters.com', + '||spore.com', + '||ssx3.com', + '||starwarsbattlefront.com', + '||starwarsbattlefront2.com', + '||tiberiumalliances.com', + '||tiburon.com', + '||tnt-ea.com', + '||ultimaforever.com', + '||unravel2.com', + '||unraveltwo.com', + '||visceralgames.com', + '||yogify.com', + '||anthemgame.com', + '||anthemthegame.com', + '||apexlegends.com', + '||projectapex.com', + '||battlefield.com', + '||battlefield1943.com', + '||battlefield3.com', + '||battlefield4.com', + '||battlefield5.com', + '||battlefieldheroes.com', + '||battlefieldv.com', + '||battlelog.com', + '||bioware.com', + '||biowarestore.com', + '||eamythic.com', + '||eamythic.net', + '||cncrivals.com', + '||commandandconquer.com', + '||tiberiumalliances.com', + '||camelot-europe.com', + '||camelotherald.com', + '||camelotherald.net', + '||daoc.net', + '||darkageofcamelot.com', + '||darkness-risen.com', + '||deadspacegame.com', + '||dice.se', + '||dragonage.com', + '||dragonagekeep.com', + '||dragonagemovie.com', + '||thedreadwolfrises.com', + '||dungeonkeeper.cn', + '||dungeonkeeper.com', + '||dungeonkeeper.com.cn', + '||eafootballworld.com', + '||fifastreet.com', + '||fifastreet3.com', + '||frostbite.com', + '||industrialtoys.com', + '||masseffect.com', + '||masseffectarchives.com', + '||eamirrorsedge.com', + '||mirrorsedge.com', + '||mirrorsedge.jp', + '||mirrorsedge.net', + '||mirrorsedge2.com', + '||mirrorsedge2d.com', + '||blackboxgames.com', + '||eablackbox.com', + '||needforspeed.com', + '||needforspeedboost.com', + '||needforspeeddriftkings.com', + '||needforspeedeliminator.com', + '||needforspeedlightning.com', + '||needforspeedoverdrive.com', + '||needforspeedproven.com', + '||needforspeedredline.com', + '||needforspeedshowdown.com', + '||needforspeedstreetkings.com', + '||needforspeedtakedown.com', + '||needforspeedtherun.com', + '||needforspeedtimeattack.com', + '||needforspeedundergroundeast.com', + '||nfsworld.com', + '||teamneedforspeed.com', + '||plantsvszombies2.com', + '||pvzgw2.com', + '||pvzheroes.com', + '||seaofsolitude.com', + '||simcity-buildit.com', + '||simcity.com', + '||skate2.com', + '||spearhead.kr', + '||starwarsfallenorder.com', + '||starwarsjedifallenorder.com', + '||starwarstheoldrepublic.com', + '||swjedifallenorder.com', + '||swjfo.com', + '||swtor.com', + '||swtor.net', + '||mysims.com', + '||thesims.com', + '||thesims3.com', + '||thesims4.com', + '||thesimssocial.com', + '||titanfall.com', + '||mythicentertainment.com', + '||mythicentertainment.net', + '||mythicgames.com', + '||ultimaonline.com', + '||uo.com', + '||uoherald.com', + '||xdsummit.com', + '|http://ea.tt.omtrdc.net', + '|https://ea.tt.omtrdc.net', + '|http://eaassets-a.akamaihd.net', + '|https://eaassets-a.akamaihd.net', + '||battlebreakers.com', + '||epicgames.com', + '||fortnite.com', + '||paragon.com', + '||playparagon.com', + '||roborecall.com', + '||shadowcomplex.com', + '||spyjinx.com', + '||unrealengine.com', + '||unrealtournament.com', + '/^epicgames-download\\d\\.akamaized\\.net$/', + '||fireside.fm', + '||gog.com', + '||gog-statics.com', + '||cinemax.com', + '||forthethrone.com', + '||hbo.com', + '||hboasia.com', + '||hbogo.com', + '||hbogoasia.com', + '||hbogoasia.hk', + '||hbomax.com', + '||hbonow.com', + '||maxgo.com', + '||112263.com', + '||callhulu.com', + '||findyourlimits.com', + '||freehulu.com', + '||hooloo.tv', + '||hoolu.com', + '||hoolu.tv', + '||hu1u.com', + '||huloo.cc', + '||huloo.tv', + '||hulu.com', + '||hulu.tv', + '||hulu.us', + '||huluaction.com', + '||huluad.com', + '||huluapp.com', + '||huluasks.com', + '||hulucall.com', + '||hulufree.com', + '||hulugans.com', + '||hulugermany.com', + '||hulugo.com', + '||huluim.com', + '||huluinstantmessenger.com', + '||huluitaly.com', + '||hulunet.com', + '||hulunetwork.com', + '||huluplus.com', + '||hulupremium.com', + '||hulupurchase.com', + '||huluqa.com', + '||hulurussia.com', + '||huluspain.com', + '||hulusports.com', + '||hulustream.com', + '||huluteam.com', + '||hulutv.com', + '||huluusa.com', + '||joinmaidez.com', + '||mushymush.tv', + '||myhulu.com', + '||originalhulu.com', + '||payhulu.com', + '||registerhulu.com', + '||thehulubraintrust.com', + '||wwwhuluplus.com', + '||imdb.com', + '||imdb.to', + '||media-imdb.com', + '||internationalsaimoe.com', + '||kingkong.com.tw', + '||kingkongapp.com', + '||litv.tv', + '||megaphone.fm', + '||moov.hk', + '||fast.com', + '||netflix.ca', + '||netflix.com', + '||netflix.net', + '||netflixinvestor.com', + '||netflixtechblog.com', + '||nflxext.com', + '||nflximg.com', + '||nflximg.net', + '||nflxsearch.net', + '||nflxso.net', + '||nflxvideo.net', + '||nico', + '||nicodic.jp', + '||nicomanga.jp', + '||niconico.com', + '||nicoseiga.jp', + '||nicovideo.jp', + '||nimg.jp', + '||simg.jp', + '||100classicbooks.com', + '||amiibo.com', + '||ayudanintendo.com', + '||bowsersinsidestory.com', + '||excitebots.com', + '||flipnotestudio.com', + '||gloryofheracles.com', + '||hackyourconsole.com', + '||kirbysuperstarultra.com', + '||kirbysepicyarn.com', + '||miitomo.com', + '||miiverse.com', + '||nentindo.net', + '||nintendo-europe-sales.com', + '||nintendo-europe.com', + '||nintendo.at', + '||nintendo.be', + '||nintendo.ch', + '||nintendo.co.jp', + '||nintendo.co.kr', + '||nintendo.co.uk', + '||nintendo.co.za', + '||nintendo.com', + '||nintendo.com.hk', + '||nintendo.com.pt', + '||nintendo.de', + '||nintendo.dk', + '||nintendo.es', + '||nintendo.eu', + '||nintendo.fi', + '||nintendo.fr', + '||nintendo.it', + '||nintendo.net', + '||nintendo.nl', + '||nintendo.no', + '||nintendo.pt', + '||nintendo.ru', + '||nintendo.se', + '||nintendo.tw', + '||nintendo3ds.com', + '||nintendodsi.com', + '||nintendoeurope.com', + '||nintendonetwork.net', + '||nintendonyc.com', + '||nintendostore.com', + '||nintendoswitch.com', + '||nintendoswitch.net', + '||nintendoswitchtogether.com', + '||personaltrainermath.com', + '||playnintendo.com', + '||thelegendarystarfy.com', + '||thewonderful101.com', + '||wariolandshakeit.com', + '||wariowarediy.com', + '||yoshisnewisland.com', + '||ac-pocketcamp.com', + '||diddykongracing.com', + '||dkr.com', + '||donkeykongcountryreturns.com', + '||fire-emblem-heroes.com', + '||fireemblemawakening.com', + '||dialga.com', + '||giratina.com', + '||kyurem.com', + '||pokedex3d.com', + '||pokemon-moon.com', + '||pokemon-sun.com', + '||pokemon-sunmoon.com', + '||pokemon.com', + '||pokemonbank.com', + '||pokemonblackwhite.com', + '||pokemonbw.com', + '||pokemonchampionships.com', + '||pokemongoldsilver.com', + '||pokemonhome.com', + '||pokemonletsgoeevee.com', + '||pokemonletsgopikachu.com', + '||pokemonmysterydungeon.com', + '||pokemonpicross.com', + '||pokemonplatinum.com', + '||pokemonrubysapphire.com', + '||pokemonsunmoon.com', + '||pokemonswordshield.com', + '||pokemonultrasunmoon.com', + '||pokemonvgc.com', + '||pokemonwifi.net', + '||xn--mts47c3w9b1qr.net', + '||splatoon2tournament.com', + '||starfox.com', + '||drmario-world.com', + '||marioandluigidreamteam.com', + '||mariobroswii.com', + '||mariokart7.com', + '||mariokart8.com', + '||mariosupersluggers.com', + '||newsupermariobrosu.com', + '||supermario.com', + '||supermario3dworld.com', + '||supermariogalaxy.com', + '||supermariorun.com', + '||superpapermario.com', + '||nintendowii.com', + '||wii-u.com', + '||wiifit.com', + '||wiifitu.com', + '||wiipartyu.com', + '||wiisports.com', + '||wiisportsresort.com', + '||wiiugamepad.com', + '||wiivc.net', + '||xenoblade.com', + '||op.gg', + '|http://opgg-static.akamaized.net', + '|https://opgg-static.akamaized.net', + '||overcast.fm', + '||pixiv.net', + '||pixiv.org', + '||pixiv.co.jp', + '||pximg.net', + '||playstation', + '||playstation.com', + '||playstation.net', + '||sonyentertainmentnetwork.com', + '||pca.st', + '||pocketcasts.com', + '||historyofdota.com', + '||historyofdota.net', + '||historyofdota.org', + '||instituteofwar.org', + '||molesports.com', + '||rgpub.io', + '||riot-games.com', + '||riot.com', + '||riot.net', + '||riotcdn.net', + '||riotgames.co.kr', + '||riotgames.com', + '||riotgames.info', + '||riotgames.jp', + '||riotgames.net', + '||riotgames.tv', + '||riotpin.com', + '||riotpoints.com', + '||rstatic.net', + '||supremacy.com', + '||supremacy.net', + '||championshipseriesleague.com', + '||lcsmerch.com', + '||leaguehighschool.com', + '||leagueoflegends.ca', + '||leagueoflegends.co.kr', + '||leagueoflegends.com', + '||leagueoflegends.info', + '||leagueoflegends.kr', + '||leagueoflegends.net', + '||leagueoflegends.org', + '||leagueoflegendsscripts.com', + '||leaguesharp.info', + '||leaguoflegends.com', + '||learnwithleague.com', + '||lol-europe.com', + '||lolclub.org', + '||lolespor.com', + '||lolesports.com', + '||lolfanart.net', + '||lolpcs.com', + '||lolshop.co.kr', + '||lolstatic.com', + '||lolusercontent.com', + '||pvp.net', + '||pvp.tv', + '||ulol.com', + '|http://lolstatic-a.akamaihd.net', + '|https://lolstatic-a.akamaihd.net', + '||rockstargames.com', + '||rsg.sc', + '|http://gamedownloads-rockstargames-com.akamaized.net', + '|https://gamedownloads-rockstargames-com.akamaized.net', + '|http://media-rockstargames-com.akamaized.net', + '|https://media-rockstargames-com.akamaized.net', + '|http://videos-rockstargames-com.akamaized.net', + '|https://videos-rockstargames-com.akamaized.net', + '||fandango.com', + '||mgo.com', + '||mgo-images.com', + '||ravm.tv', + '||roku.com', + '||rokutime.com', + '||dishworld.com', + '||slinginternational.com', + '||sling.com', + '||movenetworks.com', + '||movetv.com', + '||imageworks.com', + '||motionpictureser.com', + '||playshow.io', + '||playshowtv.com', + '||sonyclassics.com', + '||sonypictures.com', + '||sonypicturesanimation.com', + '||sonypicturesmuseum.com', + '||sonypicturesstudios.com', + '||sonypicturestelevision.com', + '||sonypicturestelevisiongames.com', + '||wheelpop.com', + '||wwtbam.com', + '||yourfantasybeginsnow.com', + '||soundcloud.com', + '||sndcdn.com', + '||byspotify.com', + '||pscdn.co', + '||scdn.co', + '||spoti.fi', + '||spotify-everywhere.com', + '||spotify.com', + '||spotify.design', + '||spotifycdn.com', + '||spotifycharts.com', + '||spotifycodes.com', + '||spotifyforbrands.com', + '||spotifyjobs.com', + '||fanatical.com', + '||humblebundle.com', + '||playartifact.com', + '||s.team', + '||steam-chat.com', + '||steamcommunity.com', + '||steamcontent.com', + '||steamgames.com', + '||steampowered.com', + '||steamstatic.com', + '||steamusercontent.com', + '||underlords.com', + '||valvesoftware.com', + '|http://steambroadcast.akamaized.net', + '|https://steambroadcast.akamaized.net', + '|http://steamcdn-a.akamaihd.net', + '|https://steamcdn-a.akamaihd.net', + '|http://steamcommunity-a.akamaihd.net', + '|https://steamcommunity-a.akamaihd.net', + '|http://steamstore-a.akamaihd.net', + '|https://steamstore-a.akamaihd.net', + '|http://steamusercontent-a.akamaihd.net', + '|https://steamusercontent-a.akamaihd.net', + '|http://steamuserimages-a.akamaihd.net', + '|https://steamuserimages-a.akamaihd.net', + '||steamunlocked.net', + '||syosetu.com', + '||muscdn.com', + '||musical.ly', + '||tiktok.com', + '||tiktokcdn.com', + '||tiktokv.com', + '|http://p16-tiktokcdn-com.akamaized.net', + '|https://p16-tiktokcdn-com.akamaized.net', + '||ext-twitch.tv', + '||jtvnw.net', + '||ttvnw.net', + '||twitch.tv', + '||twitchcdn.net', + '||twitchsvc.net', + '||ubi.com', + '||ubisoft.com', + '||uplay.com', + '|http://ubisoft-uplay-savegames.s3.amazonaws.com', + '|https://ubisoft-uplay-savegames.s3.amazonaws.com', + '|http://ubisoft-orbit-savegames.s3.amazonaws.com', + '|https://ubisoft-orbit-savegames.s3.amazonaws.com', + '||vhx.tv', + '||vhxqa1.com', + '||vhxqa2.com', + '||vhxqa3.com', + '||vhxqa4.com', + '||vhxqa6.com', + '||vimeo-staging.com', + '||vimeo-staging2.com', + '||vimeo.com', + '||vimeo.fr', + '||vimeobusiness.com', + '||vimeocdn.com', + '||vimeogoods.com', + '||vimeoondemand.com', + '||vimeostatus.com', + '||livestream.com', + '||abow.jp', + '||angelbeats.jp', + '||anigema.jp', + '||charlotte-anime.jp', + '||clannad-movie.jp', + '||heaven-burns-red.com', + '||kamisama-day.jp', + '||kamisama-maeda-lab.com', + '||koubaibu.jp', + '||litbus-anime.com', + '||product.co.jp', + '||rewrite-anime.tv', + '||visualarts.gr.jp', + '||visual-arts.jp', + '||viu.tv', + '|http://api.viu.now.com', + '|https://api.viu.now.com', + '/^ewcdn[0-9]{2}\\.nowe\\.com$/', + '||viu.com', + '|http://dfp6rglgjqszk.cloudfront.net', + '|https://dfp6rglgjqszk.cloudfront.net', + '|http://d1k2us671qcoau.cloudfront.net', + '|https://d1k2us671qcoau.cloudfront.net', + '|http://d2anahhhmp1ffz.cloudfront.net', + '|https://d2anahhhmp1ffz.cloudfront.net', + '||weverse.io', + '||wwe.com', + '||wwe9.com', + '||callersbane.com', + '||minecraft.net', + '||minecraftshop.com', + '||mojang.com', + '||forzamotorsport.net', + '||forzaracingchampionship.com', + '||forzarc.com', + '||orithegame.com', + '||renovacionxboxlive.com', + '||tellmewhygame.com', + '||xbox.co', + '||xbox.com', + '||xbox.eu', + '||xbox.org', + '||xbox360.co', + '||xbox360.com', + '||xbox360.eu', + '||xbox360.org', + '||xboxab.com', + '||xboxgamepass.com', + '||xboxgamestudios.com', + '||xboxlive.com', + '||xboxone.co', + '||xboxone.com', + '||xboxone.eu', + '||xboxplayanywhere.com', + '||xboxstudios.com', + '||yande.re', + '||got001.com', + '||got002.com', + '||jstucdn.com', + '||playcvn.com', + '||rrys.tv', + '||rrys2019.com', + '||rrysapp.com', + '||yyets.com', + '||zmz2019.com', + '||zmzapi.com', + '||cvnad.com', + '||iyoowi.com', + '||0x0.st', + '||db.tt', + '||dropbox-dns.com', + '||dropbox.com', + '||dropbox.tech', + '||dropboxapi.com', + '||dropboxbusiness.com', + '||dropboxcaptcha.com', + '||dropboxforum.com', + '||dropboxforums.com', + '||dropboxinsiders.com', + '||dropboxmail.com', + '||dropboxpartners.com', + '||dropboxstatic.com', + '||dropboxusercontent.com', + '||getdropbox.com', + '|http://paper-attachments.s3.amazonaws.com', + '|https://paper-attachments.s3.amazonaws.com', + '||gfycat.com', + '||imgur.com', + '||imgurinc.com', + '||embed-cdn.com', + '||streamable.com', + '||4cdn.org', + '||4chan.org', + '||4channel.org', + '||2ch.net', + '||5ch.net', + '||avsforum.com', + '||dcard.io', + '||dcard.tw', + '||doom9.org', + '||lih.kg', + '||lihkg.com', + '||pincong.rocks', + '||quora.com', + '||quoracdn.net', + '||qr.ae', + '||reddit.com', + '||redditstatic.com', + '||redditmail.com', + '||redditmedia.com', + '||redd.it', + '||9cdn.net', + '||9nation.com.au', + '||9news.com.au', + '||9now.com.au', + '||freeviewplus.net.au', + '||mi9.com.au', + '||mi9cdn.com', + '||nine.com.au', + '||nineentertainment.com.au', + '||nineentertainmentco.com.au', + '||ninemediaroom.com.au', + '||ninemsn.com.au', + '||static9.net.au', + '||yourtv.com.au', + '||9to5google.com', + '||9to5mac.com', + '||9to5terminal.com', + '||9to5toys.com', + '||dronedj.com', + '||electrek.co', + '||spaceexplored.com', + '||afp.com', + '||afpforum.com', + '||ajplus.net', + '||aljazeera.com', + '||aljazeera.net', + '||palestineremix.com', + '||sarajevopodopsadom.com', + '||srebrenica360.com', + '||syhacked.com', + '||americasvoice.news', + '||ap.org', + '||apnews.com', + '||appledaily.com', + '||appledaily.com.hk', + '||appledaily.com.tw', + '||appledaily.hk', + '||applefruity.com', + '||applehealth.com.hk', + '||atnext.com', + '||bestmallawards.com', + '||deluxe.com.hk', + '||eracom.com.tw', + '||next.hk', + '||nextdigital.com.hk', + '||nextdigital.com.tw', + '||nextfilm.com.hk', + '||nextmag.com.tw', + '||nextmedia.com', + '||nextmedia.com.tw', + '||nextmgz.com', + '||nextplus.com.hk', + '||nexttv.com.tw', + '||nextwork.com.hk', + '||nextwork.com.tw', + '||nextwork.hk', + '||nextwork.tw', + '||nxtdig.com.hk', + '||nxtdig.com.tw', + '||omoplanet.com', + '||privilege.hk', + '||privilege.tw', + '||sharpdaily.tw', + '||tomonews.net', + '||twnextdigital.com', + '||appleinsider.com', + '||asahi.com', + '||asahicom.jp', + '|http://asahishimbun.sc.omtrdc.net', + '|https://asahishimbun.sc.omtrdc.net', + '||bbc', + '||bbc.co.uk', + '||bbc.com', + '||bbci.co.uk', + '||bbgwatch.com', + '||bloomberg', + '||bbgevent.com', + '||bbhub.io', + '||bbthat.com', + '||bgov.com', + '||bloomberg.cn', + '||bloomberg.co.jp', + '||bloomberg.co.kr', + '||bloomberg.com', + '||bloomberg.com.br', + '||bloombergapps.com', + '||bloombergarcade.com', + '||bloombergbeta.com', + '||bloombergbna.com', + '||bloombergbreakaway.com', + '||bloombergbriefs.com', + '||bloombergchina.com', + '||bloombergenvironment.com', + '||bloombergforeducation.com', + '||bloomberggovernment.com', + '||bloombergindices.com', + '||bloombergindustry.com', + '||bloomberglabs.com', + '||bloomberglaw.com', + '||bloomberglive.com', + '||bloomberglp.com', + '||bloombergmedia.com', + '||bloombergnext.com', + '||bloombergpolarlake.com', + '||bloombergprep.com', + '||bloombergquint.com', + '||bloombergradio.com', + '||bloombergsef.com', + '||bloombergspace.com', + '||bloombergstatus.com', + '||bloombergsurvey.com', + '||bloombergtax.com', + '||bloombergtax1.com', + '||bloombergtaxtech.com', + '||bloombergtradingchallenge.com', + '||bloombergtv.mn', + '||bloombergvault.com', + '||bloombergview.com', + '||blpcareers.com', + '||blpevents.com', + '||blpprofessional.com', + '||bmia.org', + '||bnef.com', + '||businessweekmag.com', + '||londonmithraeum.com', + '||neweconomyforum.com', + '||newenergyfinance.com', + '||techatbloomberg.com', + '||boxun.com', + '||bowenpress.com', + '||breitbart.com', + '||cabletv.com.hk', + '||i-cable.com', + '||caijinglengyan.com', + '||cbs', + '||showtime', + '||cbs.com', + '||cbscorporation.com', + '||cbsi.com', + '||cbsi.video', + '||cbsiam.com', + '||cbsig.net', + '||cbsimg.net', + '||cbsinteractive.com', + '||cbsistatic.com', + '||cbsivideo.com', + '||cbsnews.com', + '||cbspressexpress.com', + '||cbssports.com', + '||cbsstatic.com', + '||cbssvideo.com', + '||viacbs.com', + '||viacom.com', + '||viacomcbs.com', + '||viacomcbspressexpress.com', + '||paramount.com', + '||chinadecoding.com', + '||chinadigitaltimes.net', + '||cnbc.com', + '||cnbcfm.com', + '||nbcuni.com', + '||nbcudigitaladops.com', + '||cnn.com', + '||cnn.io', + '||cnnarabic.com', + '||cnnlabs.com', + '||cnnmoney.ch', + '||cnnmoney.com', + '||cnnmoneystream.com', + '||cnnpolitics.com', + '||cup.com.hk', + '||d100.net', + '||anm.co.uk', + '||dailym.ai', + '||dailymail.co.uk', + '||dailymail.com', + '||dailymail.com.au', + '||dailymail.dk', + '||dailymailonline.com', + '||dmgmediaprivacy.co.uk', + '||mailhealth.com', + '||mailonline.co.uk', + '||mailonline.com', + '||mailonsunday.co.uk', + '||mailonsunday.ie', + '||metro.co.uk', + '||mol.im', + '||thisismoney.co.uk', + '||thismon.ee', + '||dw.com', + '||dajiyuan.com', + '||dajiyuan.eu', + '||epochmediagroup.com', + '||epochstories.com', + '||epochtime.com', + '||epochtimes-romania.com', + '||epochtimes.co.il', + '||epochtimes.co.kr', + '||epochtimes.co.uk', + '||epochtimes.com', + '||epochtimes.com.au', + '||epochtimes.com.br', + '||epochtimes.com.sg', + '||epochtimes.com.tw', + '||epochtimes.com.ua', + '||epochtimes.cz', + '||epochtimes.de', + '||epochtimes.eu', + '||epochtimes.fr', + '||epochtimes.it', + '||epochtimes.jp', + '||epochtimes.nl', + '||epochtimes.pl', + '||epochtimes.ru', + '||epochtimes.se', + '||epochtimestr.com', + '||epochweek.com', + '||epochweekly.com', + '||erabaru.net', + '||lagranepoca.com', + '||ntd.com', + '||ntdtv.ca', + '||ntdtv.co.kr', + '||ntdtv.com', + '||ntdtv.com.tw', + '||ntdtv.jp', + '||ntdtv.kr', + '||ntdtv.org', + '||ntdtv.ru', + '||ntdtvla.com', + '||ntdvn.com', + '||theepochtimes.com', + '||theepochtimessubscribe.com', + '||velkaepocha.cz', + '||forbes.com', + '||forbesimg.com', + '||fox', + '||fox-corporation.com', + '||fox-news.com', + '||fox.com', + '||fox.tv', + '||fox10.tv', + '||fox10news.com', + '||fox10phoenix.com', + '||fox11.com', + '||fox13memphis.com', + '||fox13news.com', + '||fox23.com', + '||fox23maine.com', + '||fox247.com', + '||fox247.tv', + '||fox26.com', + '||fox26houston.com', + '||fox28media.com', + '||fox29.com', + '||fox2detroit.com', + '||fox2news.com', + '||fox32.com', + '||fox32chicago.com', + '||fox35orlando.com', + '||fox38corpuschristi.com', + '||fox42kptm.com', + '||fox46.com', + '||fox46charlotte.com', + '||fox47.com', + '||fox49.tv', + '||fox4news.com', + '||fox51tns.net', + '||fox5atlanta.com', + '||fox5dc.com', + '||fox5ny.com', + '||fox5storm.com', + '||fox6now.com', + '||fox7.com', + '||fox7austin.com', + '||fox9.com', + '||foxacrossamerica.com', + '||foxaffiliateportal.com', + '||foxandfriends.com', + '||foxbet.com', + '||foxbusiness.com', + '||foxbusiness.tv', + '||foxbusinessgo.com', + '||foxcanvasroom.com', + '||foxcareers.com', + '||foxcharlotte.com', + '||foxcincy.com', + '||foxcincy.jobs', + '||foxcincy.net', + '||foxcollegesports.com', + '||foxcorporation.com', + '||foxcreativeuniversity.com', + '||foxcredit.com', + '||foxcredit.org', + '||foxd.tv', + '||foxdcg.com', + '||foxdeportes.com', + '||foxdeportes.net', + '||foxdeportes.tv', + '||foxdigitalmovies.com', + '||foxdoua.com', + '||foxentertainment.com', + '||foxest.com', + '||foxfaq.com', + '||foxfdm.com', + '||foxfiles.com', + '||foxinc.com', + '||foxkansas.com', + '||foxla.com', + '||foxla.tv', + '||foxlexington.com', + '||foxmediacloud.com', + '||foxnation.com', + '||foxnebraska.com', + '||foxneo.com', + '||foxneodigital.com', + '||foxnetworks.info', + '||foxnetworksinfo.com', + '||foxnews.cc', + '||foxnews.com', + '||foxnews.net', + '||foxnews.org', + '||foxnews.tv', + '||foxnewsaffiliates.com', + '||foxnewsaroundtheworld.com', + '||foxnewsb2b.com', + '||foxnewschannel.com', + '||foxnewsgo.net', + '||foxnewsgo.org', + '||foxnewsgo.tv', + '||foxnewshealth.com', + '||foxnewslatino.com', + '||foxnewsmagazine.com', + '||foxnewsnetwork.com', + '||foxnewsopinion.com', + '||foxnewspodcasts.com', + '||foxnewspolitics.com', + '||foxnewsradio.com', + '||foxnewsrundown.com', + '||foxnewssunday.com', + '||foxon.com', + '||foxphiladelphia.com', + '||foxpoker.com', + '||foxrad.io', + '||foxredeem.com', + '||foxrelease.com', + '||foxrichmond.com', + '||foxrobots.com', + '||foxsmallbusinesscenter.com', + '||foxsmallbusinesscenter.net', + '||foxsmallbusinesscenter.org', + '||foxsoccer.net', + '||foxsoccer.tv', + '||foxsoccermatchpass.com', + '||foxsoccerplus.com', + '||foxsoccerplus.net', + '||foxsoccerplus.tv', + '||foxsoccershop.com', + '||foxsports-chicago.com', + '||foxsports-newyork.com', + '||foxsports-world.com', + '||foxsports.cl', + '||foxsports.co', + '||foxsports.co.ve', + '||foxsports.com', + '||foxsports.com.ar', + '||foxsports.com.bo', + '||foxsports.com.br', + '||foxsports.com.co', + '||foxsports.com.ec', + '||foxsports.com.gt', + '||foxsports.com.mx', + '||foxsports.com.pe', + '||foxsports.com.py', + '||foxsports.com.uy', + '||foxsports.com.ve', + '||foxsports.gt', + '||foxsports.info', + '||foxsports.net', + '||foxsports.net.br', + '||foxsports.pe', + '||foxsports.sv', + '||foxsports.uy', + '||foxsports2.com', + '||foxsportsflorida.com', + '||foxsportsgo.com', + '||foxsportsla.com', + '||foxsportsnetmilwaukee.com', + '||foxsportsneworleans.com', + '||foxsportsracing.com', + '||foxsportssupports.com', + '||foxsportsuniversity.com', + '||foxsportsworld.com', + '||foxstudiolot.com', + '||foxsuper6.com', + '||foxtel.com', + '||foxtel.com.au', + '||foxtelevisionstations.com', + '||foxtv.com', + '||foxtvdvd.com', + '||foxuv.com', + '||foxweatherwatch.com', + '||fssta.com', + '||fxn.ws', + '||fxnetwork.com', + '||fxnetworks.com', + '||bentobox.tv', + '||kicu.tv', + '||ktvu.com', + '||myfoxsanfran.com', + '||afewmomentswith.com', + '||anidom.com', + '||casoneexchange.com', + '||coronavirusnow.com', + '||fse.tv', + '||geraldoatlarge.com', + '||gooddaychicago.com', + '||joeswall.com', + '||kilmeadeandfriends.com', + '||maskedsingerfox.com', + '||my13la.com', + '||my20dc.com', + '||my20houston.com', + '||my29tv.com', + '||my45.com', + '||my9nj.com', + '||myfoxatlanta.com', + '||myfoxaustin.com', + '||myfoxboston.com', + '||myfoxcharlotte.com', + '||myfoxchicago.com', + '||myfoxdc.com', + '||myfoxdetroit.com', + '||myfoxdfw.com', + '||myfoxhouston.com', + '||myfoxhurricane.com', + '||myfoxla.com', + '||myfoxlosangeles.com', + '||myfoxlubbock.com', + '||myfoxmaine.com', + '||myfoxny.com', + '||myfoxorlando.com', + '||myfoxphilly.com', + '||myfoxphoenix.com', + '||myfoxtampa.com', + '||myfoxtampabay.com', + '||myfoxtwincities.com', + '||myfoxzone.com', + '||myq2.com', + '||newsnowfox.com', + '||orlandohurricane.com', + '||paradisehotelquizfox.com', + '||q13.com', + '||q13fox.com', + '||realamericanstories.com', + '||realamericanstories.info', + '||realamericanstories.net', + '||realamericanstories.org', + '||realamericanstories.tv', + '||realmilwaukeenow.com', + '||rprimelab.com', + '||shopspeedtv.com', + '||soccermatchpass.com', + '||speeddreamride.com', + '||speedfantasybid.com', + '||speedracegear.com', + '||speedxtra.com', + '||teenchoice.com', + '||testonfox.com', + '||theclasshroom.com', + '||thefoxnation.com', + '||thegeorgiascene.com', + '||whatthefox.com', + '||whosthehost.com', + '||wofl.tv', + '||woflthenewsstation.com', + '||wogx.com', + '|http://foxnewsplayer-a.akamaihd.net', + '|https://foxnewsplayer-a.akamaihd.net', + '||freebeacon.com', + '||gannett-cdn.com', + '||gannett.com', + '||gannettdigital.com', + '||usatoday.com', + '||usatodaynetworkservice.com', + '||globalvoices.org', + '||globalvoicesonline.org', + '||guo.media', + '||gnews.org', + '||gtv.org', + '||gtv1.org', + '||g-tvapp.com', + '||hk01.com', + '||hkcnews.com', + '||hkopentv.com', + '||fantv.hk', + '||hongkongfp.com', + '||huffingtonpost.ca', + '||huffingtonpost.co.uk', + '||huffingtonpost.co.za', + '||huffingtonpost.com', + '||huffingtonpost.com.au', + '||huffingtonpost.com.mx', + '||huffingtonpost.de', + '||huffingtonpost.es', + '||huffingtonpost.fr', + '||huffingtonpost.gr', + '||huffingtonpost.in', + '||huffingtonpost.it', + '||huffingtonpost.jp', + '||huffingtonpost.kr', + '||huffpost.com', + '||huffpostarabi.com', + '||huffpostbrasil.com', + '||huffpostmaghreb.com', + '||inmediahk.net', + '||businessinsider.co.za', + '||businessinsider.com', + '||businessinsider.com.au', + '||businessinsider.com.pl', + '||businessinsider.de', + '||businessinsider.es', + '||businessinsider.fr', + '||businessinsider.in', + '||businessinsider.jp', + '||businessinsider.mx', + '||businessinsider.my', + '||businessinsider.nl', + '||businessinsider.sg', + '||insider-intelligence.com', + '||insider.com', + '||insiderintelligence.com', + '||jfengtime.com', + '||landofhope.tv', + '||localpresshk.com', + '||ltn.com.tw', + '||yes123.com.tw', + '||macrumors.com', + '||matters.news', + '||matters.one', + '||medium.com', + '||medium.systems', + '||myradio.hk', + '||myradio.com.hk', + '||dreamworks.com', + '||cnbc.com', + '||cnbcfm.com', + '||msnbc.com', + '||nbc.co', + '||nbc.com', + '||nbcnews.com', + '||nbcolympics.com', + '||nbcsports.com', + '||nbcuni.com', + '||nbcuniversal.com', + '||s-nbcnews.com', + '||peacocktv.com', + '||universalorlando.com', + '||universalpictures.com', + '||universalpicturesinternational.com', + '||universalstudioshollywood.com', + '||newscorp.com', + '||dowjones.com', + '||dowjones.io', + '||dowjoneson.com', + '||wsj.com', + '||wsj.net', + '||barrons.com', + '||andysparis.com', + '||newsmax.com', + '||newsmax.in', + '||newsmaxtv.com', + '||newyorker.com', + '||nikkei.com', + '||nikkei.jp', + '||nikkei.co.jp', + '||now.com', + '||now.com.hk', + '||nowe.com', + '||now-tv.com', + '||now-ashare.com', + '||nyt.com', + '||nyt.net', + '||nytcn.me', + '||nytco.com', + '||nytimes.com', + '||nytstyle.com', + '||timestalks.com', + '||aweencore.com', + '||awetv.com', + '||herringnetwork.com', + '||oanencore.com', + '||oann.com', + '||passiontimes.hk', + '||qmap.pub', + '||realvision.com', + '||reuters.com', + '||reuters.tv', + '||reutersmedia.net', + '||rfa.org', + '||rfi.fr', + '||rsf.org', + '||rt.com', + '||etvonline.hk', + '||rthk.hk', + '||rtings.com', + '||scmp.com', + '||i-scmp.com', + '||shuziyimin.org', + '||sinoinsider.com', + '||slashdot.org', + '||sky', + '||sky.com', + '||skyassets.com', + '||skyoceanrescue.com', + '||skyoceanrescue.de', + '||skyoceanrescue.it', + '||skysports.com', + '||skysports.fr', + '||skysports.ie', + '||skysportsonline.com', + '||skysportsracing.com', + '||soundofhope.org', + '||theguardian', + '||dev-guardianapis.com', + '||dev-theguardian.com', + '||gu-web.net', + '||guardianapis.com', + '||guardianapps.co.uk', + '||guim.co.uk', + '||theguardian.com', + '||theguardiandns.com', + '||theinitium.com', + '||init.shop', + '||thenationalpulse.com', + '||thestandnews.com', + '||dreamteamfc.com', + '||page3.com', + '||sunbingo.co.uk', + '||talksport.com', + '||thescottishsun.co.uk', + '||thesun.co.uk', + '||thesun.ie', + '||thetype.com', + '||typeisbeautiful.com', + '||udn.com', + '||udn.com.tw', + '||udnfunlife.com', + '||unwire.hk', + '||amerikaninsesi.com', + '||amerikaninsesi.org', + '||amerikaovozi.com', + '||amerikayidzayn.com', + '||amerikiskhma.com', + '||bbg.gov', + '||dandalinvoa.com', + '||darivoa.com', + '||dengeamerika.com', + '||dengiamerika.com', + '||glasamerike.net', + '||golos-ameriki.ru', + '||insidevoa.com', + '||pashtovoa.com', + '||persagg.com', + '||radiyoyacuvoa.com', + '||urduvoa.com', + '||voa.gov', + '||voaafaanoromoo.com', + '||voaafrique.com', + '||voabambara.com', + '||voabangla.com', + '||voacambodia.com', + '||voacantonese.com', + '||voachinese.com', + '||voadeewanews.com', + '||voadeewaradio.com', + '||voahausa.com', + '||voaindonesia.com', + '||voakorea.com', + '||voalingala.com', + '||voandebele.com', + '||voanews.com', + '||voanews.eu', + '||voanoticias.com', + '||voanouvel.com', + '||voaportugues.com', + '||voashona.com', + '||voasomali.com', + '||voaswahili.com', + '||voathai.com', + '||voatibetan.com', + '||voatibetanenglish.com', + '||voatiengviet.com', + '||voatour.com', + '||voazimbabwe.com', + '||zeriamerikes.com', + '||cstatic.net', + '||curbed.com', + '||eater.com', + '||funnyordie.com', + '||meridian.net', + '||polygon.com', + '||racked.com', + '||recode.net', + '||sbnation.com', + '||theverge.com', + '||vox-cdn.com', + '||vox.com', + '||voxcreative.com', + '||voxfieldguide.com', + '||voxmedia.com', + '||voxops.net', + '||warroom.org', + '||washingtonpost.com', + '||watchout.tw', + '||waa.tw', + '||wenzhao.ca', + '||startupschool.org', + '||ycombinator.com', + '||zaobao.com', + '||zaobao.com.sg', + '||zaobao.sg', + '||zerohedge.com', + '||zoomingin.tv', + '||aomedia.org', + '||archive.org', + '||atypi.org', + '||change.org', + '||ccstatic.org', + '||creativecommons.org', + '||creativecommons.engineering', + '||licensebuttons.net', + '||csis.org', + '|http://csis-prod.s3.amazonaws.com', + '|https://csis-prod.s3.amazonaws.com', + '||emojipedia.org', + '||worldemojiawards.com', + '||worldemojiday.com', + '||xn--yt8h.la', + '||globalsecurity.org', + '||ieee.org', + '||ieee.tv', + '||tryengineering.org', + '||ieee-ccnc.org', + '||ieee-ecce.org', + '||ieeemce.org', + '||standardsuniversity.org', + '||ieee-region6.org', + '||ieee.ca', + '||ieeer10.org', + '||ieeer5.org', + '||ieeer8.org', + '||ieeeusa.org', + '||ieeefoundation.org', + '||ieee-into-focus.org', + '||ieee-vics.org', + '||ieeeday.org', + '||datasheets360.com', + '||globalspec.com', + '||ieee-isto.org', + '||techstreet.com', + '||computer.org', + '||comsoc.org', + '||embs.org', + '||emcs.org', + '||grss-ieee.org', + '||ieee-aess.org', + '||ieee-cas.org', + '||ieee-ceda.org', + '||ieee-edusociety.org', + '||ieee-ies.org', + '||ieee-ims.org', + '||ieee-npss.org', + '||ieee-pels.org', + '||ieee-pes.org', + '||ieee-ras.org', + '||ieee-sensors.org', + '||ieee-tems.org', + '||ieee-uffc.org', + '||ieeeaps.org', + '||ieeecsc.org', + '||ieeecss.org', + '||ieeedeis.org', + '||ieeemagnetics.org', + '||ieeenano.org', + '||ieeeoes.org', + '||ieeesmc.org', + '||ieeesystemscouncil.org', + '||itsoc.org', + '||mtt.org', + '||photonicssociety.org', + '||signalprocessingsociety.org', + '||technologyandsociety.org', + '||vtsociety.org', + '||ietf.org', + '||itu.int', + '||nist.gov', + '||time.gov', + '||openmaps.org', + '||openstreetmap.com', + '||openstreetmap.net', + '||openstreetmap.org', + '||openstreetmaps.org', + '||osm.org', + '||osmfoundation.org', + '||stateofthemap.com', + '||stateofthemap.org', + '||rolfoundation.org', + '||rolsociety.org', + '||smpte.org', + '||un.org', + '||w3.org', + '||who.int', + '||wto.org', + '||1pondo.tv', + '||91porn.com', + '||avgle.com', + '||avn.com', + '||beeg.com', + '||bongacams.com', + '||bcicdn.com', + '||bcrncdn.com', + '||btt804.com', + '||btt904.com', + '||bttzyw.com', + '||bttzyw.net', + '||t66y.com', + '||chaturbate.com', + '||e-hentai.org', + '||ehgt.org', + '||ehtracker.org', + '||ehwiki.org', + '||exhentai.org', + '||hentaiverse.org', + '||eporner.com', + '||fanhaodian.com', + '||hegre.com', + '||heydoga.com', + '||heyzo.com', + '||hqporner.com', + '||javbus.com', + '||javfinder.sh', + '||findercdn.me', + '||o0-2.com', + '||javhd.com', + '||javlibrary.com', + '||javwide.tv', + '||javwide.com', + '||kindgirls.com', + '||livejasmin.com', + '||dditsadn.com', + '||dditscdn.com', + '||metart.com', + '||metartnetwork.com', + '||metcams.com', + '||naiadsystems.com', + '||nsimg.net', + '||netflav.com', + '||pigav.com', + '||pornhd.com', + '||phncdn.com', + '||phprcdn.com', + '||pornhub.com', + '||pornhubpremium.com', + '||press.vin', + '||redtube.com', + '||scoreland.com', + '|http://cdn77.scoreuniverse.com', + '|https://cdn77.scoreuniverse.com', + '||spankbang.com', + '||theporndude.com', + '||tube8.com', + '||vaginacontest.com', + '||x-art.com', + '||xhamster.com', + '||xhamsterlive.com', + '||xhcdn.com', + '|http://widgets.stripst.com', + '|https://widgets.stripst.com', + '||collector.xhamster.com', + '||xnxx.com', + '||xnxx-cdn.com', + '||xvideos.com', + '||xvideos-cdn.com', + '||youjizz.com', + '||yjcontentdelivery.com', + '||youporn.com', + '||accuweather.com', + '||getadblock.com', + '||adblockplus.org', + '||addthis.com', + '||addthiscdn.com', + '||addthisedge.com', + '||addtoany.com', + '||adguard-vpn.com', + '||adguard.com', + '||apkpure.com', + '||cdnpure.com', + '||pureapk.com', + '||winudf.com', + '||arphic.com', + '||arphic.com.cn', + '||arphic.com.tw', + '||ifontcloud.com', + '||bit.ly', + '||bitly.com', + '||bitly.is', + '||bitwarden.com', + '||bigbuckbunny.org', + '||blender.org', + '||elephantsdream.org', + '||videojs.com', + '||bcove.video', + '||bcovlive.io', + '||bcvp0rtal.com', + '||boltdns.net', + '||brightcove.com', + '||brightcove.net', + '||brightcove.services', + '||brightcovecdn.com', + '|http://bcovlive-a.akamaihd.net', + '|https://bcovlive-a.akamaihd.net', + '|http://bcsecure01-a.akamaihd.net', + '|https://bcsecure01-a.akamaihd.net', + '|http://brightcove.imgix.net', + '|https://brightcove.imgix.net', + '||buymeacoff.ee', + '||buymeacoffee.com', + '||cloudconvert.com', + '||contentful.com', + '||ctfassets.net', + '||cutt.ly', + '||digitalocean.com', + '||digitaloceanspaces.com', + '||disqus.com', + '||disquscdn.com', + '||disqusservice.com', + '||duckduckgo.com', + '||duck.com', + '||ddg.gg', + '||spreadprivacy.com', + '||easylist.to', + '||lanik.us', + '||entermediadb.net', + '||entermediadb.org', + '||arcgis.com', + '||arcgisonline.com', + '||esri.com', + '||evernote.com', + '||faststone.org', + '||feedly.com', + '||figma.com', + '||gofundme.com', + '||gravatar.com', + '||botstop.com', + '||hcaptcha.com', + '||hcaptchastatus.com', + '||heroku.co', + '||heroku.com', + '||heroku.me', + '||herokuapp.com', + '||herokucdn.com', + '||herokucharge.com', + '||herokussl.com', + '||heroku-app.com', + '||heroku-charge.com', + '||codei.sh', + '||codeish.co', + '||codeish.io', + '||iina.io', + '||infrapedia.com', + '||inoreader.com', + '||is.gd', + '||v.gd', + '||jwpcdn.com', + '||jwplatform.com', + '||jwplayer.com', + '||jwpltx.com', + '||jwpsrv.com', + '||longtailvideo.com', + '||kindle4rss.com', + '||kodi.tv', + '||kodi.wiki', + '||liberapay.com', + '||liberapay.org', + '||linguee.com', + '||deepl.com', + '||madshi.net', + '||madvr.com', + '||madvr.net', + '||madvrlabs.llc', + '||mapbox.com', + '||mega.co.nz', + '||mega.nz', + '||mpv.io', + '||netlify.com', + '||bitballoon.com', + '||notion.so', + '||notion-static.com', + '||opencollective.com', + '||osdn.net', + '||pastebin.com', + '||patreon.com', + '||pics.ee', + '||picsee.co', + '||picsee.pro', + '||pise.pw', + '||pros.ee', + '||pse.is', + '||ping.pe', + '||protonmail.ch', + '||protonmail.com', + '||protonstatus.com', + '||pm.me', + '||quip-cdn.com', + '||quip.com', + '||quipelements.com', + '||reabble.com', + '||rb.gy', + '||rebrandly.com', + '||reurl.cc', + '||dns.sb', + '||ip.sb', + '||loli.net', + '||sb.sb', + '||sm.ms', + '||u.nu', + '||www.sb', + '||sharethis.com', + '||myshopify.com', + '||shopify.com', + '||shopify.dev', + '||shopifycdn.com', + '||shopifystatus.com', + '||shopifysvc.com', + '||shorturl.at', + '||sourceforge.com', + '||sourceforge.net', + '||sf.net', + '||fsdn.com', + '||startpage.com', + '||ixquick.com', + '||steemit.com', + '||svp-team.com', + '||test-ipv6.com', + '||ctan.org', + '||latex-project.org', + '||miktex.org', + '||tug.org', + '||tidelift.com', + '||tinyurl.com', + '||trello.com', + '||trellocdn.com', + '||tumblr.com', + '||now.sh', + '||vercel-dns.com', + '||vercel-status.com', + '||vercel.app', + '||vercel.com', + '||zeit-world.co.uk', + '||zeit-world.com', + '||zeit-world.net', + '||zeit-world.org', + '||zeit.co', + '||zeit.sh', + '||zeitworld.com', + '||webflow.com', + '||wix.com', + '||wixmp.com', + '||wixsite.com', + '||wixstatic.com', + '||videopress.com', + '||w.org', + '||wordpress.com', + '||wordpress.org', + '||wordpress.tv', + '||wp-themes.com', + '||wp.com', + '||wpvip.com', + '||zeplin.dev', + '||zeplin.io', + '||zoho.com', + '||zoho.com.au', + '||zoho.eu', + '||zoho.in', + '||zohocdn.com', + '||zohomeetups.com', + '||zohomerchandise.com', + '||zohopublic.com', + '||zohoschools.com', + '||zohostatic.com', + '||zohostatic.in', + '||zohouniversity.com', + '||zohowebstatic.com', + '||zoom.com', + '||zoom.com.cn', + '||zoom.us', + '||alpinelinux.org', + '||anaconda.com', + '||anaconda.org', + '||conda.io', + '||android.com', + '||androidify.com', + '||apache.org', + '||appleswift.com', + '||swift.org', + '||calendarserver.org', + '||apple-cloudkit.com', + '||cups.org', + '||developer.apple.com', + '||devimages-cdn.apple.com', + '||devstreaming-cdn.apple.com', + '||foundationdb.org', + '||macosforge.org', + '||macruby.com', + '||macruby.net', + '||macruby.org', + '||apple-mapkit.com', + '||playgrounds-cdn.apple.com', + '||carekit.org', + '||researchandcare.org', + '||researchkit.hk', + '||researchkit.net', + '||researchkit.org', + '||researchkit.tv', + '||servicetalk.io', + '||webkit.org', + '||webkitgtk.org', + '||wpewebkit.org', + '||webobjects.com', + '|http://appleworldwidedeveloper.hb-api.omtrdc.net', + '|https://appleworldwidedeveloper.hb-api.omtrdc.net', + '|http://appleworldwidedeveloper.sc.omtrdc.net', + '|https://appleworldwidedeveloper.sc.omtrdc.net', + '|http://p-events-delivery.akamaized.net', + '|https://p-events-delivery.akamaized.net', + '||archlinux.org', + '||archlinuxarm.org', + '||atom.io', + '||badgen.net', + '||bootstrapcdn.com', + '||getbootstrap.com', + '||braventures.com', + '||braveux.com', + '||compass.is', + '||fightforux.com', + '||forthebadge.com', + '||stockagainstphotography.com', + '||launchpad.net', + '||launchpadlibrarian.com', + '||launchpadlibrarian.net', + '||launchpadlibrarian.org', + '||snapcraft.io', + '||snapstore.io', + '||ubuntu.com', + '||ubuntu.net', + '||ubuntuforums.org', + '||canonical.com', + '||cdnjs.com', + '||centos.org', + '||chocolatey.org', + '||clojure.org', + '||cnpmjs.org', + '||cygwin.com', + '||cython.org', + '||dart.dev', + '||dartlang.org', + '||dartpad.dev', + '||debian.org', + '||dotdeb.org', + '||deno.land', + '||compose-spec.io', + '||docker.com', + '||docker.io', + '||elixir-lang.org', + '||elrepo.org', + '||embed.ly', + '||embedly.com', + '||playerjs.io', + '||erlang.org', + '||accountkit.com', + '||atscaleconference.com', + '||botorch.org', + '||buck.build', + '||buckbuild.com', + '||componentkit.org', + '||draftjs.org', + '||f8.com', + '||facebookappcenter.info', + '||facebookappcenter.net', + '||facebookappcenter.org', + '||facebookconnect.com', + '||facebookdevelopergarage.com', + '||faciometrics.com', + '||fasttext.cc', + '||fbf8.com', + '||fbinfer.com', + '||fblitho.com', + '||fbredex.com', + '||fbrell.com', + '||flow.dev', + '||flow.org', + '||flowtype.org', + '||frescolib.org', + '||hacklang.org', + '||hhvm.com', + '||makeitopen.com', + '||mcrouter.net', + '||mcrouter.org', + '||messengerdevelopers.com', + '||ogp.me', + '||opengraphprotocol.com', + '||opengraphprotocol.org', + '||parse.com', + '||pyrobot.org', + '||react.com', + '||reactjs.com', + '||reactjs.org', + '||recoiljs.org', + '||rocksdb.com', + '||rocksdb.net', + '||rocksdb.org', + '||yogalayout.com', + '|http://developers.facebook.com', + '|https://developers.facebook.com', + '||fastlane.ci', + '||fastlane.tools', + '||getfedora.org', + '||fedoraforum.org', + '||fedoraproject.org', + '||fedoramagazine.org', + '||ffmpeg.org', + '||flathub.org', + '||flatpak.org', + '||flutter.dev', + '||flutterapp.com', + '||fontawesome.com', + '||fortawesome.com', + '||freebsd.org', + '||fury.blog', + '||fury.co', + '||fury.dev', + '||fury.help', + '||fury.io', + '||gemfury.com', + '||gentoo.org', + '||getcomposer.org', + '||git-scm.com', + '||gitbook.com', + '||gitbook.io', + '||gitbook.zendesk.com', + '||npmjs.com', + '||npm.community', + '||dependabot.com', + '||git.io', + '||github.blog', + '||github.com', + '||github.community', + '||github.io', + '||githubapp.com', + '||githubassets.com', + '||githubhackathon.com', + '||githubstatus.com', + '||githubusercontent.com', + '|http://github-avatars.oss-cn-hongkong.aliyuncs.com', + '|https://github-avatars.oss-cn-hongkong.aliyuncs.com', + '/github-production-release-asset-[0-9a-za-z]{6}\\.s3\\.amazonaws\\.com/', + '||gitlab.com', + '||gitlab.io', + '||gitlab.net', + '||gitlab-static.net', + '|http://gitlab-assets.oss-cn-hongkong.aliyuncs.com', + '|https://gitlab-assets.oss-cn-hongkong.aliyuncs.com', + '||gnu.org', + '||go-lang.com', + '||go-lang.net', + '||go-lang.org', + '||go.dev', + '||godoc.org', + '||golang.com', + '||golang.net', + '||golang.org', + '||consul.io', + '||hashicorp.com', + '||nomadproject.io', + '||packer.io', + '||terraform.io', + '||vagrantup.com', + '||vaultproject.io', + '||haskell.org', + '||haskellstack.org', + '||stackage.org', + '||brew.sh', + '|http://homebrew.bintray.com', + '|https://homebrew.bintray.com', + '||01.org', + '||hyperscan.io', + '||intellinuxgraphics.com', + '||intellinuxgraphics.net', + '||oneapi.com', + '||openvinotoolkit.org', + '||snap-telemetry.io', + '||acpica.com', + '||clearlinux.org', + '||ospray.net', + '||ospray.org', + '||ius.io', + '||java', + '||java.com', + '||java.net', + '||jenkins.io', + '||jetbrains.com', + '||jetbrains.net', + '||datalore.io', + '||kotlinlang.org', + '||jfrog.com', + '||jfrog.org', + '||bintray.com', + '|http://d29vzk4ow07wi7.cloudfront.net', + '|https://d29vzk4ow07wi7.cloudfront.net', + '||js.org', + '||jsdelivr.net', + '||jsdelivr.com', + '||jupyter.org', + '||kali.org', + '||kubernetes.io', + '||k8s.io', + '||linuxfromscratch.org', + '||linuxmint.com', + '||lua.org', + '||macports.org', + '||mariadb.org', + '||adaptivecards.io', + '||api-extractor.com', + '||apisof.net', + '||appcenter.ms', + '||blazor.net', + '||botframework.com', + '||codethemicrobit.com', + '||devopsassessment.net', + '||dot.net', + '||gamesstack.com', + '||graphengine.io', + '||insiderdevtour.com', + '||jwt.ms', + '||microbit.org', + '||microsoftadc.com', + '||microsoftgamestack.com', + '||microsoftiotinsiderlabs.com', + '||microsoftreactor.info', + '||microsoftreactor.net', + '||microsoftreactor.org', + '||microsoftsilverlight.com', + '||microsoftsilverlight.org', + '||microsoftsilverlight.net', + '||microsoftsqlserver.com', + '||mmdnn.com', + '||mono-project.com', + '||msdn.com', + '||msinnovationchallenge.com', + '||mspairlift.com', + '||msropendata.com', + '||nuget.org', + '||nugettest.org', + '||opentranslatorstothings.org', + '||poshtestgallery.com', + '||pwabuilder.com', + '||sankie.net', + '||sqlserveronlinux.com', + '||timelinestoryteller.com', + '||uwpcommunitytoolkit.com', + '||visualstudio-staging.com', + '||visualstudio.com', + '||visualstudio.co', + '||visualstudio.co.uk', + '||visualstudio.eu', + '||visualstudio.net', + '||vfsforgit.com', + '||vfsforgit.org', + '||vsassets.io', + '||xamarin.com', + '|http://developer.microsoft.com', + '|https://developer.microsoft.com', + '|http://dtlgalleryint.cloudapp.net', + '|https://dtlgalleryint.cloudapp.net', + '|http://poshtestgallery.cloudapp.net', + '|https://poshtestgallery.cloudapp.net', + '|http://psg-int-centralus.cloudapp.net', + '|https://psg-int-centralus.cloudapp.net', + '|http://psg-int-eastus.cloudapp.net', + '|https://psg-int-eastus.cloudapp.net', + '||mingw.org', + '||mongodb.com', + '||mongodb.org', + '||mysql.com', + '||nginx.com', + '||nginx.org', + '||nixos.org', + '||nodesource.com', + '||notepad-plus-plus.org', + '||openai.com', + '||openresty.org', + '||openssl.org', + '||opensuse.org', + '||openwrt.org', + '||lede-project.org', + '||packagist.org', + '||pcre.org', + '||perl.org', + '||cpan.org', + '||metacpan.org', + '||phantomjs.org', + '||php.net', + '||polymer-project.org', + '||polymerproject.org', + '||postgresql.org', + '||python.org', + '||pythonhosted.org', + '||pypa.io', + '||pypi.org', + '||qt.io', + '||qt-project.org', + '||r-project.org', + '||raspberrypi.org', + '||raspbian.org', + '||readthedocs-hosted.com', + '||readthedocs.com', + '||readthedocs.io', + '||readthedocs.org', + '||redis.io', + '||redislabs.com', + '||remirepo.net', + '||rpmfusion.org', + '||ruby-lang.org', + '||rubygems.org', + '||scala-lang.org', + '||scala-sbt.org', + '||scientificlinux.org', + '||scoop.sh', + '||shields.io', + '||sqlite.org', + '||askubuntu.com', + '||blogoverflow.com', + '||mathoverflow.net', + '||serverfault.com', + '||sstatic.net', + '||stackapps.com', + '||stackauth.com', + '||stackexchange.com', + '||stackmod.blog', + '||stackoverflow.blog', + '||stackoverflow.com', + '||stackoverflow.email', + '||stackoverflowbusiness.com', + '||stacksnippets.net', + '||superuser.com', + '||tex-talk.net', + '||thesffblog.com', + '||mystrikingly.com', + '||strikingly.com', + '||strikinglycdn.com', + '||sublimetext.com', + '||kernel.org', + '||linux.org', + '||amp.dev', + '||ampproject.com', + '||ampproject.net', + '||ampproject.org', + '|http://amp.akamaized.net', + '|https://amp.akamaized.net', + '||electronjs.org', + '||jquery.com', + '||jquerymobile.com', + '||jqueryui.com', + '||mochajs.org', + '||nodejs.org', + '||openjsf.org', + '||lfai.foundation', + '||linuxfoundation.org', + '||unity.com', + '||unity3d.com', + '||unityads.unity3d.com', + '||unityads.unitychina.cn', + '||unpkg.com', + '||v8.dev', + '||v8project.org', + '||videolan.org', + '||vim.org', + '||wireshark.org', + '||x.org', + '||xda-developers.com', + '||xda-cdn.com', + '||xposed.info', + '||yarnpkg.com', + '||zsh.org', + '||acer-group.com', + '||acer.com', + '||typekit.com', + '||typekit.net', + '||10xfotolia.com', + '||2o7.net', + '||acrobat.com', + '||adbecrsl.com', + '||adobe-aemassets-value.com', + '||adobe-audience-finder.com', + '||adobe-video-partner-finder.com', + '||adobe.com', + '||adobe.ly', + '||adobeaemcloud.com', + '||adobeaemcloud.net', + '||adobeawards.com', + '||adobecreativityawards.com', + '||adobedc.net', + '||adobedemo.com', + '||adobedtm.com', + '||adobeexchange.com', + '||adobeexperienceawards.com', + '||adobegov.com', + '||adobehiddentreasures.com', + '||adobejanus.com', + '||adobeku.com', + '||adobelogin.com', + '||adobeoobe.com', + '||adobeplatinumclub.com', + '||adobeprojectm.com', + '||adobesc.com', + '||adobesign.com', + '||adobesigncdn.com', + '||adobespark.com', + '||adobess.com', + '||adobestock.com', + '||adobetag.com', + '||adobetarget.com', + '||adobetcstrialdvd.com', + '||adobetechcomm.com', + '||adobetechcommcallback.com', + '||adobetechcommdemo.com', + '||adobexdplatform.com', + '||assetsadobe.com', + '||authorxml.com', + '||businesscatalyst.com', + '||ccnsite.com', + '||ccpsx.com', + '||demdex.net', + '||dollarfotoclub.com', + '||dollarphotoclub.com', + '||dollarphotosclub.com', + '||douwriteright.com', + '||echocdn.com', + '||echosign.com', + '||edgefonts.net', + '||enablementadobe.com', + '||ftcdn.net', + '||gostorego.com', + '||imagineecommerce.com', + '||macromedia.com', + '||magentoliveconference.com', + '||marketing-nirvana.com', + '||omniture.com', + '||omtrdc.net', + '||photoshop.com', + '||placesdocs.com', + '||sundanceignite2016.com', + '||worldsecureemail.com', + '||worldsecuresystems.com', + '||adobe.io', + '||developria.com', + '||behance.net', + '||s2stagehance.com', + '||adobecc.com', + '||adobecce.com', + '||adobeccstatic.com', + '||creativecloud.com', + '||creativesdk.com', + '||cotolia.com', + '||ffotolia.com', + '||fiotolia.com', + '||foftolia.com', + '||fonolia.com', + '||fotiolia.com', + '||fotoiia.com', + '||fotolia-noticias.com', + '||fotolia.cc', + '||fotolia.com', + '||fotolia.tv', + '||fotolja.com', + '||fptolia.com', + '||gfotolia.com', + '||motolia.com', + '||photolia.net', + '||tenbyfotolia.com', + '||votolia.com', + '||bluefootcms.com', + '||mageconf.com', + '||mageconf.com.ua', + '||magento.com', + '||magento.net', + '||magentocommerce.com', + '||magentomobile.com', + '||marketing-cloud.com', + '||marketo.co.uk', + '||marketo.com', + '||marketo.net', + '||marketo.tv', + '||marketodesigner.com', + '||marketolive.com', + '||mktdns.com', + '||mkto-c0100.com', + '||mktorest.com', + '||mktroute.com', + '||mobilemarketo.com', + '||revenue-performance-management.com', + '||toutapp.com', + '||alibabacloud.co.in', + '||alibabacloud.com', + '||alibabacloud.com.au', + '||alibabacloud.com.hk', + '||alibabacloud.com.my', + '||alibabacloud.com.sg', + '||alibabacloud.com.tw', + '||alicloud.com', + '||amazon-adsystem.com', + '||wholecitiesfoundation.org', + '||wholefoodsmarket.com', + '||wholekidsfoundation.org', + '||wholeplanetfoundation.org', + '||aws', + '||amazon', + '||imdb', + '||kindle', + '||xn--cckwcxetd', + '||xn--jlq480n2rg', + '||yamaxun', + '||zappos', + '||aboutamazon.co.uk', + '||aboutamazon.com', + '||aboutamazon.com.au', + '||aboutamazon.de', + '||aboutamazon.es', + '||aboutamazon.eu', + '||aboutamazon.fr', + '||aboutamazon.in', + '||aboutamazon.it', + '||aboutamazon.jp', + '||aboutamazon.pl', + '||amaaozn.com', + '||amazon-fashions.com', + '||amazon-jp-recruiting.com', + '||amazon-lantern.com', + '||amazon-launchpad.com', + '||amazon.ae', + '||amazon.ca', + '||amazon.co.jp', + '||amazon.co.uk', + '||amazon.com', + '||amazon.com.au', + '||amazon.com.br', + '||amazon.com.mx', + '||amazon.com.tr', + '||amazon.de', + '||amazon.es', + '||amazon.fr', + '||amazon.in', + '||amazon.it', + '||amazon.jobs', + '||amazon.jp', + '||amazon.nl', + '||amazon.red', + '||amazon.sg', + '||amazonalexavoxcon.com', + '||amazonauthorinsights.com', + '||amazonbusiness.org', + '||amazonbusinessblog.com', + '||amazondevicesupport.com', + '||amazonfctours.com', + '||amazonianblog.com', + '||amazonimages.com', + '||amazonlaunchpad.com', + '||amazonliterarypartnership.com', + '||amazonlumberyard.wang', + '||amazonsdi.com', + '||amazonstudiosguilds.com', + '||amazontrust.com', + '||amazonvideodirect.com', + '||amzn.com', + '||amzn.to', + '||amznl.com', + '||associates-amazon.com', + '||gameon-masters.com', + '||gdansk-amazon.com', + '||media-amazon.com', + '||primeday.info', + '||siege-amazon.com', + '||ssl-images-amazon.com', + '||ueberamazon.de', + '||yamaxun.com', + '||audible.com', + '||acmvalidations.com', + '||acmvalidationsaws.com', + '||aesworkshops.com', + '||amazonaws-china.com', + '||amazonaws.com', + '||amazonaws.tv', + '||amazonworkdocs.com', + '||amplifyapp.com', + '||amplifyframework.com', + '||aws-iot-hackathon.com', + '||awsautopilot.com', + '||awsautoscaling.com', + '||awsbraket.com', + '||awscommandlineinterface.com', + '||awsedstart.com', + '||awseducate.com', + '||awseducate.net', + '||awseducate.org', + '||awsloft-johannesburg.com', + '||awsloft-stockholm.com', + '||awssecworkshops.com', + '||awsstatic.com', + '||awsthinkbox.com', + '||awstrust.com', + '||cdkworkshop.com', + '||cloudfront.net', + '||containersonaws.com', + '||elasticbeanstalk.com', + '||thinkboxsoftware.com', + '/.+\\.awsdns-[0-9][0-9]\\.co\\.uk$/', + '/.+\\.awsdns-[0-9][0-9]\\.com$/', + '/.+\\.awsdns-[0-9][0-9]\\.net$/', + '/.+\\.awsdns-[0-9][0-9]\\.org$/', + '/.+\\.awsdns-cn-[0-9][0-9]\\.biz$/', + '/.+\\.awsdns-cn-[0-9][0-9]\\.cn$/', + '/.+\\.awsdns-cn-[0-9][0-9]\\.com$/', + '/.+\\.awsdns-cn-[0-9][0-9]\\.net$/', + '||kindle.co.jp', + '||kindle.co.uk', + '||kindle.com', + '||kindle.de', + '||kindle.es', + '||kindle.fr', + '||kindle.in', + '||kindle.it', + '||kindle.jp', + '||kindleoasis.com', + '||kindleoasis.info', + '||kindleoasis.jp', + '||kindleoasis.org', + '||kindleoasis.us', + '||kindleoasisnews.com', + '||kindleproject.com', + '||amazonprimevideos.com', + '||amazonvideo.cc', + '||amazonvideo.com', + '||prime-video.com', + '||primevideo.cc', + '||primevideo.com', + '||primevideo.info', + '||primevideo.org', + '||primevideo.tv', + '||amd.com', + '||amdfanstore.com', + '||radeon.com', + '||iadsdk.apple.com', + '||iad.apple.com', + '||qwapi.com', + '||100beatscheap.com', + '||1monsterbeatsbydreus.com', + '||2013beatsbydrdreonline.com', + '||2013beatsbydrdreshop.com', + '||2013beatsbydreshop.com', + '||2013beatshdcybermonday.com', + '||2013cheapestbeats.com', + '||2013newbeatsworld.com', + '||2013pascherbeatsbydre.com', + '||2014cheapbeatsbydre.com', + '||2beatsdre.com', + '||2buybeatsbydre.com', + '||2drdrebeats.com', + '||40shopping.com', + '||4beatsbydre.com', + '||5beatsbydre.com', + '||aaagradeheadphones.com', + '||aanaan.com', + '||abcheadphones.com', + '||abeatsbydrdre.com', + '||aeasyshop.com', + '||airmay.com', + '||ajtalk.com', + '||albeats.com', + '||annstores.net', + '||aokwholesale.net', + '||aucheapbeats.com', + '||audiobeatsau.com', + '||audiobeatsbydre.com', + '||audiomonsterbeatsonline.com', + '||auricularemonsterbeats.com', + '||auricularesbeatsbaratosshop.com', + '||auricularesbeatsmarkt.com', + '||ausbeatsbydrdre.com', + '||bag-glasses1.com', + '||bandgirlz.com', + '||baxsound.com', + '||bbestmall.com', + '||beatbd.com', + '||beatbydre2013.com', + '||beatbydremonster.com', + '||beatbydreheadphonesonsale.com', + '||beatbydrekopen.com', + '||beatbydreuk2014.com', + '||beatdrdres.com', + '||beatfactoryoutlets.com', + '||beatmonstersaustralia.net', + '||beats-by-dre-australia.com', + '||beats-bydrdre.net', + '||beats-bydre-mall.com', + '||beats-bydrecheapsale.com', + '||beats-bydreoutletonline.com', + '||beats-bydreoutletsale.com', + '||beats-bydreoutletsale.net', + '||beats-bydreoutletssale.net', + '||beats-bydrestore.com', + '||beats-bydreuk.com', + '||beats-deal.com', + '||beats-dre-us.com', + '||beats-headphones-buy-cheap.com', + '||beats-headphones.us', + '||beats-sale.com', + '||beats-seller.com', + '||beats-soaho.com', + '||beats1.cc', + '||beats1.tv', + '||beats123.com', + '||beats4.net', + '||beats4outlets.com', + '||beats4salecheap.com', + '||beatsallsale.com', + '||beatsaudifonos.com', + '||beatsaudiobydre.com', + '||beatsaudiobydre.net', + '||beatsaudios.net', + '||beatsbeatsmonster.com', + '||beatsbestdeals.com', + '||beatsblackfridaydeals.net', + '||beatsblackfridayretails.com', + '||beatsboxingdayuksale.com', + '||beatsbydrdre-headphones.com', + '||beatsbydrdre-officials5.com', + '||beatsbydrdre-online.com', + '||beatsbydrdre-onsale.com', + '||beatsbydrdre-store.com', + '||beatsbydrdre-store.us', + '||beatsbydrdre4sale.com', + '||beatsbydrdrebiz.com', + '||beatsbydrdrecustom.com', + '||beatsbydrdredanmark.com', + '||beatsbydrdremall.com', + '||beatsbydrdreoutlet.com', + '||beatsbydrdres.com', + '||beatsbydrdresale.net', + '||beatsbydrdrestore.com', + '||beatsbydrdreus.com', + '||beatsbydre-beatsheadphone.com', + '||beatsbydre-chen.com', + '||beatsbydre-club.com', + '||beatsbydre-headphones.com', + '||beatsbydre-headphonesshop.com', + '||beatsbydre-mall.com', + '||beatsbydre-outlet.com', + '||beatsbydre-outletsale.net', + '||beatsbydre-outletstore.com', + '||beatsbydre-sell.com', + '||beatsbydre-store.com', + '||beatsbydre-studio.com', + '||beatsbydre-us.com', + '||beatsbydre.jp', + '||beatsbydre2081.com', + '||beatsbydre411.com', + '||beatsbydre4usales.com', + '||beatsbydreauofficial.com', + '||beatsbydreausale.net', + '||beatsbydreaustralia-sale.com', + '||beatsbydreaustraliaonline.com', + '||beatsbydreaustraliaonlines.com', + '||beatsbydreaustraliasales.com', + '||beatsbydrebeatsby.com', + '||beatsbydreblackfriday2013.com', + '||beatsbydreblackfridaypro.com', + '||beatsbydreboxingdayca.com', + '||beatsbydrecasquesfr.com', + '||beatsbydrecheap-outletstore.com', + '||beatsbydrecheaper.com', + '||beatsbydrecheaponlinesales.com', + '||beatsbydrecolors.com', + '||beatsbydrecustomwireless.com', + '||beatsbydrecybermondaydeals2013.com', + '||beatsbydrecybermondaydeals2013.net', + '||beatsbydredanmarks.com', + '||beatsbydredealsblackfriday.com', + '||beatsbydredealscybermonday.com', + '||beatsbydrediscount.com', + '||beatsbydrediscountonline.net', + '||beatsbydredr.com', + '||beatsbydreexecutivesale.com', + '||beatsbydreformall2013-nl.com', + '||beatsbydreforsalesonline.com', + '||beatsbydreforshop2013-nl.com', + '||beatsbydreforstore.com', + '||beatsbydreforyououtlet.com', + '||beatsbydrefr.com', + '||beatsbydrefrcasquepascher.com', + '||beatsbydrefriday.com', + '||beatsbydregot.com', + '||beatsbydrehd.com', + '||beatsbydrehd.net', + '||beatsbydreheadphones-nz.com', + '||beatsbydreheadphonesolo.com', + '||beatsbydrehut.com', + '||beatsbydreinexpensive.com', + '||beatsbydreireland-sales.com', + '||beatsbydreirelandonlines.com', + '||beatsbydreirelandsale.com', + '||beatsbydreirelandsonline.com', + '||beatsbydremall2013.com', + '||beatsbydremonsteraustralia.com', + '||beatsbydrenls.com', + '||beatsbydrenorge1.net', + '||beatsbydreofficialdanmark.com', + '||beatsbydreoksale.com', + '||beatsbydreol.com', + '||beatsbydreonlie2013-nl.com', + '||beatsbydreonlines-ireland.com', + '||beatsbydreonlines-uk.com', + '||beatsbydreonlinesale-nz.com', + '||beatsbydreoordopjes.com', + '||beatsbydreoslo.com', + '||beatsbydreoutletsale.com', + '||beatsbydreoutletscheap.com', + '||beatsbydrerealstore.com', + '||beatsbydres-shop.com', + '||beatsbydresale-uk.com', + '||beatsbydresalemall2013.com', + '||beatsbydresales.us', + '||beatsbydresalesonline-australia.com', + '||beatsbydresaleonlines-nz.com', + '||beatsbydresdanmark.net', + '||beatsbydreshop-uk.com', + '||beatsbydreshops.net', + '||beatsbydresingapores.com', + '||beatsbydresingaporesale.com', + '||beatsbydrespeakers.com', + '||beatsbydresold.com', + '||beatsbydresolohdonline-canada.com', + '||beatsbydresonline-nz.com', + '||beatsbydrestorevip.com', + '||beatsbydressale.com', + '||beatsbydressolo.com', + '||beatsbydresstudio.com', + '||beatsbydrestudio-australia.com', + '||beatsbydrestudio.com', + '||beatsbydretoutlet.com', + '||beatsbydreuk.com', + '||beatsbydreuk.net', + '||beatsbydreus.com', + '||beatsbydrevipde.com', + '||beatsbydrew.com', + '||beatsbydrsmonsterinusa.com', + '||beatsbymusic.net', + '||beatsbysdrbre.com', + '||beatsbysdrdres.com', + '||beatscasque-france.com', + '||beatscheap-nz.com', + '||beatscheap-uk.com', + '||beatscheapforsale.com', + '||beatscollection2014.com', + '||beatscustomblackfriday.com', + '||beatsdanmark2013.com', + '||beatsdrdre-headphones.com', + '||beatsdrdre-it.com', + '||beatsdrdre-solo.com', + '||beatsdrdre2014.com', + '||beatsdrdrecuffie.net', + '||beatsdrdrekaufenschweiz.net', + '||beatsdrdreneon.com', + '||beatsdre-monster.com', + '||beatsdre.net', + '||beatsdre4cheap.com', + '||beatsdrecheap.com', + '||beatsdredreheadphones.com', + '||beatsdreforsale.com', + '||beatsdreinau.com', + '||beatsdremonster-uk.com', + '||beatsdrenewcolorful4usale.com', + '||beatsdreoutletsale.com', + '||beatsdresale2013.com', + '||beatsdresalestore.com', + '||beatsdresolo2013.com', + '||beatsdreus.com', + '||beatsearbudsheadphoness.com', + '||beatsfacstore.com', + '||beatsfactoroutlets.com', + '||beatsfactorycollection.com', + '||beatsfactoryoutles.com', + '||beatsforcheap-usa.com', + '||beatsforme.com', + '||beatsfranceofficiel.com', + '||beatselectronic.net', + '||beatselectronics.com', + '||beatsep.com', + '||beatsep.net', + '||beatsheadphones-discount.com', + '||beatsheadphones1.com', + '||beatsheadphones2u.com', + '||beatsheadphonesale.com', + '||beatsheadphonesdealer.com', + '||beatsheadphonesforcheap.net', + '||beatsheadphonesonline.com', + '||beatsheadphoness.com', + '||beatsheadphonestudio.com', + '||beatsheadphonesusamall.com', + '||bestshoesale2014.net', + '||beatshopuk.com', + '||beatsincanada.com', + '||beatsinsingapore.com', + '||beatsireland.net', + '||beatsjoy.com', + '||beatsmonstersales.com', + '||beatsmusic.com', + '||beatsmusic.wang', + '||beatsneon.com', + '||beatsnzsale.com', + '||beatsodre.com', + '||beatsofdre-usa.com', + '||beatsonblackfriday2013.com', + '||beatsone.net', + '||beatsoutlet.net', + '||beatsoutletanytime.com', + '||beatsoutletonlines.com', + '||beatspascher-bydre.com', + '||beatspascher-fr.net', + '||beatspascher.net', + '||beatspaschers.net', + '||beatspillnewcolor.com', + '||beatspills.com', + '||beatspromonsterjp.com', + '||beatspromotions.com', + '||beatssales.com', + '||beatssaleus.com', + '||beatssaustraliabuy.com', + '||beatssbyaustralia.com', + '||beatssbydredanmark.com', + '||beatsshop-uk.com', + '||beatsshop-usa.com', + '||beatsshopstore.com', + '||beatssingapores.com', + '||beatssingaporeshop.com', + '||beatsstudiohodetelefoner.com', + '||beatsstudiosite.com', + '||beatstoreusa.com', + '||beatsua.com', + '||beatswholesale.us', + '||beatswirelesscheap.com', + '||beatswirelesscuffie.com', + '||begin-trade.com', + '||bestbeats4u.com', + '||biitii.com', + '||blackfridaydrebeatsnew.com', + '||blackfridaydrebeatsshop.com', + '||bloommicroventures.com', + '||bookonsky.net', + '||bossae.com', + '||brandeasygo.com', + '||brandelectronic.com', + '||brandproducts1688.com', + '||brands098.com', + '||businesswebwise.com', + '||buy-from-shanghai.com', + '||buybeatsbydre-uk.com', + '||buybeatsheadphonesbydre.com', + '||buycheapbeatsbus.com', + '||buycheapbeatsbydre.com', + '||buycheapbeatsbydreshop.com', + '||buycheapbeatsdreuk.com', + '||buydrdrebeatbox.com', + '||buyminibeatbox.com', + '||buyonlineheadphones.com', + '||buyshoponly.com', + '||buzzardflapper.com', + '||bybeatsdre.com', + '||bydrebeats.com', + '||canada-beatsbydre.com', + '||casque-fr.com', + '||casquebeatsbydrdresolohd.com', + '||casquebeatsdocteurdre.com', + '||casquebeatsdre2013.com', + '||casquebeatsenligne.com', + '||casquebeatsfracheter.com', + '||casquebeatsmer.net', + '||casquebeatsofficiel-fr.com', + '||casquebeatspascher2013.com', + '||casquebeatssolo.net', + '||casquedrdrebeatssfr.com', + '||casquemonsterbeats.com', + '||casquemonsterbeatsbydre2013.com', + '||casquesbeatsaudio.com', + '||cheap-beats-by-dre.net', + '||cheap-beatsbydre.com', + '||cheapbagshoes.com', + '||cheapbeats.us', + '||cheapbeats365.com', + '||cheapbeats4sale.net', + '||cheapbeatsaustraliasale.com', + '||cheapbeatsbus.com', + '||cheapbeatsbydr.com', + '||cheapbeatsbydrdrepro.com', + '||cheapbeatsbydre-au.com', + '||cheapbeatsbydre99.com', + '||cheapbeatsbydrefau.com', + '||cheapbeatsbydremall.com', + '||cheapbeatsbydremonster.com', + '||cheapbeatsbydrenz.net', + '||cheapbeatsbydreonsale.com', + '||cheapbeatsbydreoutlet-nz.com', + '||cheapbeatsbydreoutlet.com', + '||cheapbeatsbydreoutlets2013.com', + '||cheapbeatsbydresale.com', + '||cheapbeatsbydreshop.com', + '||cheapbeatsdrdresolo.com', + '||cheapbeatsbydrestudioedition.com', + '||cheapbeatsbydrestudioutlet.com', + '||cheapbeatsdrestudios.com', + '||cheapbeatsheadphone2014.com', + '||cheapbeatsheadphones.us', + '||cheapbeatsie.com', + '||cheapbeatsla.com', + '||cheapbeatssale4u.com', + '||cheapbeatsshopbydre.com', + '||cheapcustombeatsbydre.com', + '||cheapdrdrebeats8.com', + '||cheapdrdrebeatsca.com', + '||cheapdrebeats8.net', + '||cheaperbeatsbydresale.com', + '||cheapestbeatsdrdre.com', + '||cheapheadphonesland.com', + '||cheapheadphonessale.com', + '||cheapheadsetmall.com', + '||cheapheadsetshop.com', + '||cheapmonsterbeatsbydrdre.com', + '||cheapmonsterbeatsheadsets.com', + '||cheapmonstersbeatsonsale.com', + '||cheapmonsterbeatssale.com', + '||cheapmonsterbeatsusa.us', + '||cheapnewbeatsbydre.com', + '||cheapsalemonster.com', + '||cheapshoesvip.com', + '||cheapwireless04.com', + '||cheapwirelessbeats.com', + '||cheerwholesale.us', + '||chihair-straightener.com', + '||chinaclothesstore.com', + '||ciattackers.com', + '||cmhalq.com', + '||cnshopin.com', + '||coolmonster.net', + '||cozydrdrebeats.com', + '||cqcorea.com', + '||cuffiesaldi.com', + '||custombeatsbydrebuy.com', + '||custombeatsdeals.com', + '||custombeatsforcheap.com', + '||custombeatsny.com', + '||custombeatssbydreus.com', + '||customdrdrebeats.com', + '||customizedbeatbydre.com', + '||customizedbeatsbydre.com', + '||customizedbeatsdre.com', + '||cybermondaybeats4sale.com', + '||danemarket.com', + '||danmarkbeatsbydrdre.com', + '||dctbeatsbydre.com', + '||dealsbeatsblackfriday.com', + '||detaliczny.com', + '||discountbeatsbydre-us.com', + '||discountbeatsstore.com', + '||dkbeatsbydre.com', + '||drbeatsukmart.com', + '||drdre-beats.com', + '||drdrebeats-chen.com', + '||drdrebeats-headphone.com', + '||drdrebeats-usa.com', + '||drdrebeatsale.com', + '||drdrebeatsbillig.com', + '||drdrebeatsdesale.com', + '||drdrebeatsdiscount.com', + '||drdrebeatsforu.com', + '||drdrebeatsretail2013.com', + '||drdrebeatssale7.com', + '||drdrebeatsuk.com', + '||drdreheadphonebeats.com', + '||drdreheadphonekey.com', + '||drdreheadphonesusstore.com', + '||drdremonster-beats.com', + '||drdremonsterdre.com', + '||drdreprobeatssale.com', + '||drdrefnac.com', + '||drebeats-australia.com', + '||drebeats-france.com', + '||drebeats-monster.com', + '||drebeats-monsteraustralia.com', + '||drebeats-monsterusa.com', + '||drebeats-singapore.com', + '||drebeats-singapore.net', + '||drebeats-singaporecheap.com', + '||drebeats-singaporecheap.net', + '||drebeats-solo.com', + '||drebeats-studio.com', + '||drebeatsaustralia-cheap.com', + '||drebeatsaustralia-cheap.net', + '||drebeatsbuy.com', + '||drebeatsbydreoutlet.com', + '||drebeatscanada.com', + '||drebeatsdeutschland.net', + '||drebeatsforsaleus.com', + '||drebeatsheadphones-nz.com', + '||drebeatshome.com', + '||drebeatsoutletstore.com', + '||drebeatsoldes.com', + '||drebeatspill.com', + '||drebeatssite.com', + '||drebeatssolocybermondaysale.com', + '||drebeatsstudio2013.com', + '||drebeatstudio.com', + '||drebyby.com', + '||dremonsterbeatsoutlets.com', + '||dreprobeats.com', + '||dreprofy.com', + '||dtsell.com', + '||earphonescheapest.com', + '||ebuyheadphones.com', + '||esbeatsbydrebuy.com', + '||etheadphones.com', + '||famosascalvas.com', + '||findmybeats.com', + '||fr-beatsbydrestore.com', + '||francecasquebeatssolde.com', + '||frcasquesbeats.com', + '||free-aa.com', + '||free-sns.com', + '||frishoes.com', + '||gamebeforethegame.com', + '||getdrebeatssale.com', + '||gmnetworks.net', + '||gobeatsye.com', + '||gobuyonlinestore.net', + '||goodsdunk.net', + '||headphonepubs.com', + '||headphones-cool.com', + '||headphones-dre.com', + '||headphones-outlet-online.com', + '||headphonesbeatsaudio.com', + '||headphonesbeatsbydre.com', + '||headphoneses.com', + '||headphoneshome.com', + '||headphoneshotsales.com', + '||headphonesol.com', + '||headphonesretailer.com', + '||headphonessupply.com', + '||headphonezip.com', + '||headset987.com', + '||hellokittybeats.com', + '||highbolt.net', + '||highdefinitionbeatsbydre.com', + '||hipaa6020.com', + '||hipzoom.net', + '||honawalaan.com', + '||hotbeatsonsale.com', + '||hotmonsterbeats.com', + '||hottestheadphonesonline.com', + '||hrsaz.com', + '||ibeats-uk.com', + '||ibeatsbydre.cc', + '||ibeatsbydre.com', + '||igoshopping.net', + '||illianacomputerrecycling.com', + '||imonsterbeats.com', + '||incentivetravelgifts.com', + '||ioffergift.com', + '||islamiccenterofnewlondon.com', + '||italiabeatsbydrdre.com', + '||jkbeats.com', + '||kickshatchannel.com', + '||kobbeatssbydredk.com', + '||kopfhorergunstigshop.com', + '||leecountytimes.com', + '||lexuemei.com', + '||lovebeatsdr.com', + '||lovemarca.com', + '||luckyissue.com', + '||lyzsxx.com', + '||mairbeats.com', + '||makeeu.com', + '||mallheadphone.com', + '||mbeats-tech.com', + '||mbheadphone.com', + '||micstl.com', + '||mmonsterheadphones.net', + '||monbeats2013.com', + '||monster-beats-by-dr-dre.com', + '||monster-beats-headphones.com', + '||monsterbeats-cheap.com', + '||monsterbeats-headphone.com', + '||monsterbeats-onsale.com', + '||monsterbeats-solo.com', + '||monsterbeats-solo.net', + '||monsterbeats365buy.com', + '||monsterbeats8beatsbydre.com', + '||monsterbeatsale.com', + '||monsterbeatsalestore.com', + '||monsterbeatssalg.com', + '||monsterbeatsau.com', + '||monsterbeatsbydrdre-nz.com', + '||monsterbeatsbydrdre-usa.com', + '||monsterbeatsbydrdrecanada.com', + '||monsterbeatsbydrdrestudio.com', + '||monsterbeatsbydre-nz.com', + '||monsterbeatsbydre-usa.com', + '||monsterbeatsbydre2015.com', + '||monsterbeatsbydreaustraliacheap.com', + '||monsterbeatsbydrebilligde.com', + '||monsterbeatsbydrefactory.com', + '||monsterbeatsbydrenew.com', + '||monsterbeatsbydres.com', + '||monsterbeatsbydreshop.com', + '||monsterbeatscasques.com', + '||monsterbeatscommunity.com', + '||monsterbeatsdrdrecheap.com', + '||monsterbeatsfactory.net', + '||monsterbeatsfinland.com', + '||monsterbeatsforsale.com', + '||monsterbeatsheadphone.com', + '||monsterbeatsheadphones.net', + '||monsterbeatshere.com', + '||monsterbeatsitaly.com', + '||monsterbeatsmall.com', + '||monsterbeatsnegozi.net', + '||monsterbeatsok.com', + '||monsterbeatsonlinestoreuk.com', + '||monsterbeatsoutlet.us', + '||monsterbeatspascher.net', + '||monsterbeatsru.com', + '||monsterbeatssales.com', + '||monsterbeatsshops.net', + '||monsterbeatsstore.com', + '||monsterbeatssydneyaustralia.com', + '||monsterbeatstang.com', + '||monsterbeatstienda.com', + '||monsterbeatstudio.com', + '||monsterbydrebeat.com', + '||monstercasquebeatspascher.net', + '||monstercheapbeatss.com', + '||monsterdrebeats-canada.net', + '||monsterdrebeats-usa.com', + '||monsterdrebeats-usa.net', + '||monsterheadphone.net', + '||monsterproduct.net', + '||monstersbeatbydres.com', + '||monstersdebea.com', + '||monstershopcheapbeats.net', + '||moreheadphones.com', + '||ms4dre.com', + '||mybeatsbydrestudio.com', + '||mybeatsbydreuk.com', + '||mybeatscheapbydre.com', + '||myferrariheadphones.com', + '||namemybeats.com', + '||neborder.com', + '||negozimonsterbeats.com', + '||negoziomonsterbeats.com', + '||newbeatsblackfriday.com', + '||newbemany.com', + '||newdrediscount.com', + '||newestbeatsbydre.com', + '||newlysprung.net', + '||newmonst1erbeatsto1re.com', + '||newmonsterbeatsheadphones.com', + '||newschristmasshopping.com', + '||nflhotsalejerseys.com', + '||nicesshop.net', + '||offerairjordanlebron.com', + '||officialbeatsbydreshop.com', + '||officialbeatsbydrestore.com', + '||officialdrdre.com', + '||officialheadphone.com', + '||ogameblog.com', + '||onbeatsbydresale.com', + '||onlinemonsterbeatsonsale.com', + '||onsalekey.com', + '||onsaletrend.com', + '||outletbeatsshop.com', + '||pascherbeatsmonster.com', + '||paulsimon-music.com', + '||perfectkickz.net', + '||personeelsland.com', + '||picknicekicks.net', + '||pickshoesclothes.com', + '||pillbeatsblackfridaysale.com', + '||pocketbiketrader.com', + '||powerbeats2wireless.com', + '||powerbeatsbydrdre.com', + '||powerbeatsbydre.com', + '||promonsterbeatsbydre.com', + '||prostudiobeatscybersale.com', + '||rbsgr.com', + '||repsneakermall.com', + '||repswing.com', + '||salebeatslasteststyle4you.com', + '||saleblackfridaydrebeats.com', + '||salecheaphandbags.com', + '||samebags.com', + '||sanvaras.com', + '||scnshop.cc', + '||shoers.com', + '||shoestop2.com', + '||shop-headphones.net', + '||shopbeatsdre.com', + '||shopbydre.com', + '||shopcustomizedbeats.com', + '||shopdrebeats.com', + '||shopmonsterbeats.com', + '||shopping-days.net', + '||shoppinguheadphones.com', + '||sneaker666.com', + '||sneakerpage.net', + '||sneakerskick.com', + '||solostudioksale.com', + '||soso7778.com', + '||specialtyheadphones.com', + '||spiritclubs.com', + '||straightouttasomewhere.com', + '||studiobeatsbydrdre.com', + '||sulwerphoto.com', + '||sunglassessale2014.com', + '||superearsenjoy.com', + '||supplybestjerseys.com', + '||sustainthesound.com', + '||sverigebeatsbydrdre.com', + '||szcheapmonsterheadphones.com', + '||szwinnertechnology.com', + '||takegoto.com', + '||the-monster-beats.com', + '||thebeatsbydre.com', + '||thebeatsbydre.net', + '||thebeatsheadphonesale.com', + '||theuab.net', + '||topbeatsbydrdreoutlet.com', + '||topbeatsdealer.com', + '||topbeatsforsale.com', + '||tradevip1.com', + '||tteshop.com', + '||ubnw.net', + '||unstyle.us', + '||usa-beatsbydreheadphonesonsale.net', + '||v-has.com', + '||vip-beats.com', + '||vipbeatsbydre.com', + '||vipheadphones.com', + '||vipshoes2.com', + '||wasdj.com', + '||wholesale-exporter1.com', + '||wholesalediscountpurses.com', + '||wholesalefine.com', + '||wholesaleonlinemart.com', + '||worldcoinpay.com', + '||yourmonsterbeats.com', + '|http://beatselectronicsllc.tt.omtrdc.net', + '|https://beatselectronicsllc.tt.omtrdc.net', + '||applemx-icloud.com', + '||icloud-content.com', + '||icloud-isupport.com', + '||icloud.ch', + '||icloud.com', + '||icloud.de', + '||icloud.ee', + '||icloud.fi', + '||icloud.fr', + '||icloud.hu', + '||icloud.ie', + '||icloud.is', + '||icloud.jp', + '||icloud.lv', + '||icloud.om', + '||icloud.org', + '||icloud.pt', + '||icloud.ro', + '||icloud.se', + '||icloud.si', + '||icloud.sk', + '||icloud.vn', + '||icloudads.net', + '||icloudbox.net', + '||icloudbrowser.net', + '||icloude.com', + '||icloudhome.com', + '||icloudmail.net', + '||icloudmusic.net', + '||icloudnet.net', + '||icloudpay.net', + '||icloudo.com', + '||icloudo.de', + '||icloudo.net', + '||icloudos.de', + '||icloudos.net', + '||icloudsecure.net', + '||icloudsetup.com', + '||ios-icloud.com', + '||me.com', + '||myicloud.net', + '||mylcloud.net', + '||wwwicloud.com', + '|http://www-cdn.icloud.com.akadns.net', + '|https://www-cdn.icloud.com.akadns.net', + '||12diasdepresentesdeitunes.com', + '||12diasderegalosdeitunes.cl', + '||12diasderegalosdeitunes.co', + '||12diasderegalosdeitunes.co.cr', + '||12diasderegalosdeitunes.co.ni', + '||12diasderegalosdeitunes.co.ve', + '||12diasderegalosdeitunes.com', + '||12diasderegalosdeitunes.com.co', + '||12diasderegalosdeitunes.com.hn', + '||12diasderegalosdeitunes.com.ni', + '||12diasderegalosdeitunes.com.ve', + '||12diasderegalosdeitunes.cr', + '||12diasderegalosdeitunes.gt', + '||12diasderegalosdeitunes.hn', + '||12diasderegalosdeitunes.pe', + '||12joursdecadeauxdeitunes.com', + '||itun.es', + '||itunbes.com', + '||ituneas.com', + '||itunes-radio.net', + '||itunes.ca', + '||itunes.co', + '||itunes.co.th', + '||itunes.com', + '||itunes.hk', + '||itunes.mx', + '||itunes.org', + '||itunes.rio', + '||itunes.us', + '||itunes12days.com', + '||itunesessentials.com', + '||itunesfestivals.com', + '||itunesiradio.com', + '||ituneslatino.com', + '||ituneslogin.net', + '||itunesmatch.com', + '||itunesparty.com', + '||itunesradio.com', + '||itunesradio.rio', + '||itunesradio.tv', + '||itunesradio.tw', + '||itunesstore.co', + '||itunesu.com', + '||itunesu.net', + '||iutunes.com', + '||wwwitunes.com', + '|http://itunes-apple.com.akadns.net', + '|https://itunes-apple.com.akadns.net', + '||apple', + '||apple.ae', + '||apple.at', + '||apple.be', + '||apple.bg', + '||apple.bs', + '||apple.ca', + '||apple.ch', + '||apple.cl', + '||apple.cm', + '||apple.co', + '||apple.co.cr', + '||apple.co.hu', + '||apple.co.jp', + '||apple.co.kr', + '||apple.co.mz', + '||apple.co.nz', + '||apple.co.th', + '||apple.co.uk', + '||apple.com', + '||apple.com.af', + '||apple.com.au', + '||apple.com.bo', + '||apple.com.br', + '||apple.com.co', + '||apple.com.de', + '||apple.com.do', + '||apple.com.gr', + '||apple.com.gy', + '||apple.com.jm', + '||apple.com.lk', + '||apple.com.mg', + '||apple.com.mx', + '||apple.com.my', + '||apple.com.pa', + '||apple.com.pe', + '||apple.com.pl', + '||apple.com.pr', + '||apple.com.pt', + '||apple.com.py', + '||apple.com.sg', + '||apple.com.sv', + '||apple.com.tr', + '||apple.com.tw', + '||apple.com.uy', + '||apple.cz', + '||apple.de', + '||apple.dk', + '||apple.ee', + '||apple.es', + '||apple.eu', + '||apple.fi', + '||apple.fr', + '||apple.hamburg', + '||apple.hn', + '||apple.hr', + '||apple.hu', + '||apple.ie', + '||apple.in', + '||apple.is', + '||apple.it', + '||apple.jo', + '||apple.jp', + '||apple.kr', + '||apple.lk', + '||apple.lt', + '||apple.lv', + '||apple.me', + '||apple.my', + '||apple.net', + '||apple.net.gr', + '||apple.nl', + '||apple.no', + '||apple.pk', + '||apple.pl', + '||apple.pt', + '||apple.ro', + '||apple.rs', + '||apple.ru', + '||apple.sa', + '||apple.se', + '||apple.sg', + '||apple.si', + '||apple.sk', + '||apple.so', + '||apple.tt', + '||apple.tw', + '||apple.uk', + '||apple.us', + '||apple.xn--czr694b', + '||apple.xn--fiqs8s', + '||apple.xyz', + '||aplestore.com', + '||apple-store.net', + '||apple-store.wang', + '||applestor.com', + '||applestore.bg', + '||applestore.cc', + '||applestore.ch', + '||applestore.cm', + '||applestore.co.hu', + '||applestore.co.jp', + '||applestore.co.ug', + '||applestore.co.uk', + '||applestore.com', + '||applestore.com.au', + '||applestore.com.bn', + '||applestore.com.ee', + '||applestore.com.eg', + '||applestore.com.gr', + '||applestore.com.hk', + '||applestore.com.hr', + '||applestore.com.jo', + '||applestore.com.my', + '||applestore.com.ph', + '||applestore.com.pl', + '||applestore.com.pt', + '||applestore.com.ro', + '||applestore.com.ru', + '||applestore.com.sn', + '||applestore.com.tw', + '||applestore.de', + '||applestore.hk', + '||applestore.kr', + '||applestore.me', + '||applestore.net', + '||applestore.net.gr', + '||applestore.ph', + '||applestore.qa', + '||applestore.sg', + '||applestore.wang', + '||applestoreonline.com', + '||applestorepro.eu', + '||onlineapplestore.com', + '||app-store.wang', + '||appe-store.com', + '||appleappstore.net', + '||appleappstore.tv', + '||appsto.re', + '||appstore.co.id', + '||appstore.hk', + '||appstore.my', + '||appstore.ph', + '||asto.re', + '||tvappstore.net', + '||apple-imac.com', + '||appleimac.com', + '||imac-apple.com', + '||imac-applecomputer.com', + '||imac.co', + '||imac.co.nz', + '||imac.com', + '||imac.eu', + '||imac.gr', + '||imac.one', + '||imac.rs', + '||imacapple.com', + '||imacapplecomputer.com', + '||ebookforipad.com', + '||euroipad.com', + '||findmyipad.com', + '||indiaipad.com', + '||ipad.co.kr', + '||ipad.de', + '||ipad.host', + '||ipad.wang', + '||ipad3.com', + '||ipadair.cl', + '||ipadair.cm', + '||ipadair.com.br', + '||ipadair.com.es', + '||ipadair.fr', + '||ipadair.hk', + '||ipadair.ie', + '||ipadair.jp', + '||ipadair.tw', + '||ipadaustralia.com', + '||ipadmini.cm', + '||ipadmini.com.lk', + '||ipadmini.lk', + '||ipadpro.buzz', + '||ukipad.com', + '||appleiphone.hu', + '||appleiphone.net', + '||appleiphonecell.com', + '||bestiphonestuff.com', + '||cooliphonecasesstore.com', + '||custom-iphonecase.com', + '||designeriphonescases.com', + '||dl-iphone.com', + '||fundaiphone5s.com', + '||hebiphone.com', + '||hf-iphone.com', + '||iphine.com', + '||iphone-cd.com', + '||iphone-cn.com', + '||iphone-sh.com', + '||iphone-vip1.com', + '||iphone-vip2.com', + '||iphone-vip3.com', + '||iphone-vip4.com', + '||iphone-vip5.com', + '||iphone-x.tv', + '||iphone-yh.com', + '||iphone-zh.com', + '||iphone.cm', + '||iphone.com', + '||iphone.com.au', + '||iphone.com.gr', + '||iphone.es', + '||iphone.host', + '||iphone.net.gr', + '||iphone.pt', + '||iphone.rs', + '||iphone.ru', + '||iphone.wang', + '||iphone4.com', + '||iphone4.com.br', + '||iphone4s.com', + '||iphone5.com', + '||iphone5casescovers.com', + '||iphone5s5case.com', + '||iphoneacessorios.com.br', + '||iphonecase2013.com', + '||iphonecase5.com', + '||iphonecases100.com', + '||iphonecases5.com', + '||iphoneclaro.com.br', + '||iphonecollcase.com', + '||iphonefc.com', + '||iphonegermany.com', + '||iphonehangzhou.com', + '||iphoneimessage.com', + '||iphoneplus.wang', + '||iphonerip.net', + '||iphonese.tv', + '||iphoneunlockimei.com', + '||iphonexs.tv', + '||onlyiphone5case.com', + '||aplleipods.com', + '||appleclassicipod.com', + '||downloadsforipod.com', + '||ipod.ca', + '||ipod.ch', + '||ipod.cm', + '||ipod.co', + '||ipod.co.nz', + '||ipod.co.uk', + '||ipod.co.za', + '||ipod.com', + '||ipod.com.au', + '||ipod.com.fr', + '||ipod.com.hk', + '||ipod.com.sg', + '||ipod.com.tw', + '||ipod.de', + '||ipod.es', + '||ipod.eu', + '||ipod.fr', + '||ipod.gr', + '||ipod.hk', + '||ipod.is', + '||ipod.net', + '||ipod.no', + '||ipod.pk', + '||ipod.rs', + '||ipod.ru', + '||ipod.tw', + '||ipodcentre.nl', + '||ipodcleaner.com', + '||ipoditouch.com', + '||ipodnano.com', + '||ipodnano.net', + '||ipodprices.com', + '||ipodrip.ca', + '||ipodrocks.com.au', + '||ipods.com', + '||ipodshop.com.au', + '||ipodtouch.co', + '||ipodtouch.com', + '||myipod.net', + '||offrezdesipods.com', + '||simplyipod.com', + '||wwwipodlounge.com', + '||imacsources.com', + '||launchpad.wang', + '||mac.wang', + '||macbook.co', + '||macbook.hk', + '||macbook.tw', + '||macbook.wang', + '||macbookair.co.kr', + '||macbookair.co.uk', + '||macbookair.com', + '||macbookair.com.au', + '||macbookair.com.es', + '||macbookair.es', + '||macbookair.hk', + '||macbookair.kr', + '||macbookair.jp', + '||macbookair.net', + '||macbookpro.co', + '||macbookpro.com', + '||macbookpro.com.au', + '||macbookpro.net', + '||macbookpro.us', + '||macbookpros.com', + '||macbooksale.com', + '||wwwmacbookair.com', + '||apple-watch.com.ru', + '||applewatch.hk', + '||applewatch.tv', + '||applewatch.tw', + '||applewatch.wang', + '||applewatchedition.com', + '||applewatchseries3.net', + '||applewatchsport.com', + '||applemusic.berlin', + '||applemusic.com', + '||applemusic.com.au', + '||applemusic.hamburg', + '||applemusic.wang', + '||applemusicconnect.com', + '||applemusicfestival.com', + '||musickit.net', + '||wwwapplemusic.com', + '||apple.comscoreresearch.com', + '||apple.news', + '||appleenews.com', + '||applenews.berlin', + '||applenews.hamburg', + '||applenews.tv', + '||applenewsformat.com', + '||apple-pay.com', + '||apple-pay.rs', + '||apple-pay.wang', + '||applepay.berlin', + '||applepay.co.rs', + '||applepay.com.tw', + '||applepay.hamburg', + '||applepay.hk', + '||applepay.info', + '||applepay.jp', + '||applepay.rs', + '||applepay.tv', + '||applepaycash.net', + '||applepaycash.tv', + '||applepaymerchantsupplies.info', + '||applepaysupplies.berlin', + '||applepaysupplies.com', + '||applepaysupplies.info', + '||applepaysupplies.net', + '||applepaysupplies.tv', + '||applewallet.com', + '||applewallet.tv', + '||i-book.com', + '||i-book.net', + '||ibook.co.nz', + '||ibook.com', + '||ibook.eu', + '||ibook.net', + '||ibookpartner.com', + '||ibooksauthor.com', + '||iphoto.eu', + '||iphoto.no', + '||iphoto.se', + '||iphoto.wang', + '||imovie.eu', + '||imoviegallery.com', + '||imoviestage.com', + '||applecare.berlin', + '||applecare.cc', + '||applecare.eu', + '||applecare.hamburg', + '||applecare.wang', + '||appledarwin.com', + '||appledarwin.net', + '||darwinsource.com', + '||darwinsource.org', + '||darwinsourcecode.com', + '||appleaccount.net', + '||appleid-applemx.com', + '||appleid-applemx.us', + '||appleid-iclou.com', + '||appleid-uk.us', + '||appleid.berlin', + '||appleid.com', + '||appleid.hamburg', + '||appleid.hk', + '||ids-apple.com', + '||myappleid.com', + '||appletv.com', + '||appletv.fr', + '||appletv.wang', + '||appletvapp.apple', + '||appleone.audio', + '||appleone.blog', + '||appleone.chat', + '||appleone.cloud', + '||appleone.club', + '||appleone.community', + '||appleone.film', + '||appleone.guide', + '||appleone.host', + '||appleone.space', + '||appleone.tech', + '||appleone.website', + '||shazam.com', + '||1to1computing.com.au', + '||1to1conference.com.au', + '||5lml.com', + '||a0pple.net', + '||aapl.tw', + '||airport.brussels', + '||airport.com', + '||airport.eu', + '||airsupportapp.com', + '||airtunes.com', + '||airtunes.info', + '||airtunes.net', + '||alchemysynth.com', + '||ap0le.com', + '||aple.com', + '||apole.com', + '||app0le.com', + '||appl-e.com', + '||appl.com', + '||appl4e.com', + '||appla.com', + '||apple-darwin.com', + '||apple-darwin.net', + '||apple-darwin.org', + '||apple-dns.com', + '||apple-dns.net', + '||apple-enews.com', + '||apple-expo.com', + '||apple-expo.eu', + '||apple-hk.com', + '||apple-inc.net', + '||apple-livephotoskit.com', + '||apple-online.com', + '||apple-usa.net', + '||appleafrica.com', + '||appleantilles.com', + '||appleaustralia.com', + '||appleaustralia.com.au', + '||appleaustralia.net.au', + '||applebk.net', + '||applecarbon.com', + '||applecard.tv', + '||applecentar.co.rs', + '||applecentar.rs', + '||applecentre.com.au', + '||applecentre.info', + '||appleclub.com.hk', + '||applecom.com', + '||applecomputer-imac.com', + '||applecomputer.co.in', + '||applecomputer.co.nz', + '||applecomputer.com', + '||applecomputer.com.hk', + '||applecomputer.com.tw', + '||applecomputer.hu', + '||applecomputer.kr', + '||applecomputerimac.com', + '||applecomputerinc.info', + '||applecomputers.co.nz', + '||applecoronavirus.com', + '||appleexpo.eu', + '||appleexpo.info', + '||applefilmaker.com', + '||applefilmmaker.com', + '||applefinalcutproworld.com', + '||applefinalcutproworld.net', + '||applefinalcutproworld.org', + '||applehongkong.com', + '||applehongkong.com.hk', + '||appleinclegal.com', + '||appleipodsettlement.com', + '||appleiservices.com', + '||applelink.com', + '||applemagickeyboard.com', + '||applemalaysia.com.my', + '||applemasters.info', + '||appleonline.com', + '||appleonline.net', + '||appleoriginalproductions.com', + '||appleos.tv', + '||applepencil.net', + '||applepodcasts.com', + '||applepremiumreseller.com.au', + '||applepremiumresellers.com.au', + '||applereach.com', + '||applereach.net', + '||apples-msk.ru', + '||applescreensavers.com', + '||applescript.info', + '||appleshare.info', + '||appleshop.co.uk', + '||applesurveys.com', + '||appletaiwan.com', + '||appletips.net', + '||appleweb.net', + '||applexpo.net', + '||applezh.com', + '||applf.com', + '||applfe.com', + '||applle.com', + '||applw.com', + '||appmediagroup.com', + '||appule.com', + '||appye.com', + '||apyle.com', + '||beddit.tv', + '||braeburncapital.com', + '||burstly.net', + '||burstlyrewards.com', + '||buyaapl.com', + '||buyaapl.net', + '||buyaple.com', + '||camelphat.com', + '||camelspaceeffect.com', + '||carbon.com', + '||catalina.hk', + '||cdn-apple.com', + '||chomp.com', + '||coreml.net', + '||dashwood360.com', + '||desktopmovie.com', + '||desktopmovie.net', + '||desktopmovie.org', + '||desktopmovies.net', + '||desktopmovies.org', + '||developer-advisor.com', + '||device-manager.us', + '||digitalhub.com', + '||discussionsapple.com', + '||dot-mac.de', + '||dotmac.de', + '||dvdstudiopro.biz', + '||dvdstudiopro.com', + '||dvdstudiopro.info', + '||dvdstudiopro.net', + '||dvdstudiopro.org', + '||dvdstudiopro.us', + '||earpod.net', + '||ecgapp.net', + '||edu-research.org', + '||emac.co.in', + '||emac.in', + '||emagic.de', + '||eworld.com', + '||faceid99.com', + '||faceid99.net', + '||faceidglobal.com', + '||facetime.net', + '||finalcutpro.com', + '||find-apple.com', + '||firewire.cl', + '||firewire.eu', + '||geoport.com', + '||hopstop.tv', + '||ichat.co.in', + '||idvd.eu', + '||ikids.com', + '||ilecture.co.nz', + '||ilife.eu', + '||ilife.gr', + '||ilife.wang', + '||imessage.tv', + '||insidemacintosh.com', + '||iosinthecar.com', + '||ipa-iphone.net', + '||ipple.com', + '||ischool.com', + '||itools.info', + '||iwork.com', + '||iwork.se', + '||iwork.wang', + '||jetfuelapp.com', + '||jetfuelapps.com', + '||latticedata.com', + '||livephotos.tv', + '||lojaiphone.com.br', + '||mac-mini.com', + '||mac.com', + '||mac.com.au', + '||mac.eu', + '||mac.rs', + '||macappsto.re', + '||macboxset.com', + '||mach-os.com', + '||mach-os.net', + '||machos.net', + '||macintosh.eu', + '||macintoshsoftware.com', + '||macmini.com', + '||macos.com.au', + '||macossierra.com', + '||macosx.info', + '||macosxlion.com', + '||macpazar.com', + '||macreach.com', + '||macreach.net', + '||mobileme.dk', + '||mr-apple.com.tw', + '||mzstatic.com', + '||newton.com', + '||next.com', + '||overapple.com', + '||powerbook.eu', + '||pullstring.net', + '||quatrowireless.com', + '||quicktime.cc', + '||quicktime.com', + '||quicktime.com.au', + '||quicktime.eu', + '||quicktime.net', + '||quicktime.tv', + '||reform-apple.com', + '||services-apple.net', + '||siri.com', + '||spektral.cc', + '||texture.com', + '||thinkdifferent.us', + '||touchid.tv', + '||touchid.wang', + '||tracking-location.com', + '||truedepth3d.com', + '||tryrating.com', + '||webobjects.co.uk', + '||webobjects.de', + '||webobjects.eu', + '||webobjects.net', + '||wuxiapple.com', + '||wwapple.net', + '||www-sms-apple.com', + '||wwwapple.com', + '||wwwapple.net', + '||wwwlapple.com', + '||xn--czrs0t4phtr3a.cn', + '||xn--fiqs8sxootzz.cn', + '||xn--fiqs8sxootzz.xn--hxt814e', + '||xn--gtvq61aiijy0b.xn--hxt814e', + '||xn--gtvz22d.wang', + '||xn--gtvz22d.xn--hxt814e', + '||xn--hxtr4rozx.xn--czr694b', + '||xn--kput3imi374g.xn--hxt814e', + '||xn--ruq8a011kt6y.xn--hxt814e', + '|http://apple.com.akadns.net', + '|https://apple.com.akadns.net', + '|http://courier-push-apple.com.akadns.net', + '|https://courier-push-apple.com.akadns.net', + '|http://push-apple.com.akadns.net', + '|https://push-apple.com.akadns.net', + '||asus.com', + '||atlassian.com', + '||bitbucket.org', + '||statuspage.io', + '||accbusiness.com', + '||atandt.com', + '||att-bundles.com', + '||att-japan.com', + '||att-mail.com', + '||att-promotions.com', + '||att-rsvp.com', + '||att.com', + '||att.jobs', + '||att.net', + '||att.tv', + '||attalascom.com', + '||attbelieves.com', + '||attbusiness.net', + '||attcenter.com', + '||attcollaborate.com', + '||attexperts.com', + '||attglobal.net', + '||attinnovationspace.com', + '||attinternetservice.com', + '||attjoy.com', + '||attnetclient.com', + '||attonlineoffers.com', + '||attproxy.com', + '||attpublicpolicy.com', + '||attpurchasing.com', + '||attsavings.com', + '||attspecial.com', + '||attssl.com', + '||attstadium.com', + '||attsuppliers.com', + '||atttvnow.com', + '||attuverseoffers.com', + '||attuverseonline.com', + '||attvoip.com', + '||attwifi.com', + '||attwirelessinternet.com', + '||attwirelessonline.com', + '||attwirelesssolutions.com', + '||bellsouth.net', + '||budatt.com', + '||cobatt.com', + '||currently.com', + '||currently.net', + '||directvbusinessmarket.com', + '||enterprisepaging.com', + '||itcanwait.com', + '||mymmode.com', + '||naturalvoices.com', + '||nettyinternet.com', + '||openapiplatform.com', + '||openapiservice.com', + '||patentgold.net', + '||paygonline.com', + '||raponlinereview.com', + '||signalbar.com', + '||sundayready.com', + '||synaptic.net', + '||thanksloyalty.com', + '||tvpromise.com', + '||uverse.com', + '||webhosting.com', + '||att-idns.net', + '||attdns.com', + '||attdns.net', + '||na-att-idns.net', + '||audiencenetwork.com', + '||audiencenetwork.tv', + '||cabletvdirectv.com', + '||dierectv.com', + '||dirctv.com', + '||direcpath.com', + '||direcpath.net', + '||directtv-deals.tv', + '||directtv-dish.com', + '||dkrecttv.com', + '||directtv.net', + '||directtvdeals.tv', + '||directtvreviews.com', + '||directv-4-you.com', + '||directv-newyork.com', + '||directv.com', + '||directvadsales.com', + '||directvatlantaga.com', + '||directvboston.com', + '||directvbundles.com', + '||directvbusiness.com', + '||directvcincinnatioh.com', + '||directvcinema.com', + '||directvconnect.com', + '||directvcookevilletn.com', + '||directvcrossvilletn.com', + '||directvdealer.com', + '||directvdeals.com', + '||directvdealsnow.com', + '||directvdsl.tv', + '||directvforhotels.com', + '||directvgrandslam.com', + '||directvhouston.com', + '||directvinternet.com', + '||directvkentucky.com', + '||directvlebanontn.com', + '||directvlosangeles.com', + '||directvmetropolisil.com', + '||directvmonitoring.com', + '||directvmurfreesborotn.com', + '||directvnewhampshire.com', + '||directvnow.com', + '||directvoffercodes.com', + '||directvonline.com', + '||directvplans.com', + '||directvpomise.com', + '||directvpromise.com', + '||directvpromotions.com', + '||directvrebate.com', + '||directvrichmond.com', + '||directvsavings.com', + '||directvsports.com', + '||directvsundayticket.com', + '||direectv.com', + '||diretv.com', + '||dtv2009offers.com', + '||freedirecttvspecial.com', + '||getdirect.tv', + '||hddirectv.com', + '||le-direct.tv', + '||mydirectgroove.com', + '||mydirectvchannels.com', + '||redzonechannel.com', + '||txdirectv.com', + '||xandr.com', + '||bandwagonhost.com', + '||bwh1.net', + '||bwh8.net', + '||bwh88.net', + '||canon', + '||c-ij.com', + '||canon-cee.com', + '||canon-cmos-sensors.com', + '||canon-cna.com', + '||canon-ebm.com.hk', + '||canon-emea.com', + '||canon-emirates.ae', + '||canon-europa.com', + '||canon-europe.com', + '||canon-me.com', + '||canon-ois.qa', + '||canon-se.com.tw', + '||canon.am', + '||canon.at', + '||canon.az', + '||canon.ba', + '||canon.be', + '||canon.bg', + '||canon.ca', + '||canon.ch', + '||canon.co.il', + '||canon.co.uk', + '||canon.co.za', + '||canon.com', + '||canon.com.al', + '||canon.com.au', + '||canon.com.by', + '||canon.com.cy', + '||canon.com.hk', + '||canon.com.mk', + '||canon.com.mt', + '||canon.com.my', + '||canon.com.tr', + '||canon.com.tw', + '||canon.cz', + '||canon.de', + '||canon.dk', + '||canon.ee', + '||canon.es', + '||canon.fi', + '||canon.fr', + '||canon.ge', + '||canon.gr', + '||canon.hr', + '||canon.hu', + '||canon.ie', + '||canon.it', + '||canon.kz', + '||canon.lt', + '||canon.lu', + '||canon.lv', + '||canon.me', + '||canon.net', + '||canon.nl', + '||canon.no', + '||canon.pl', + '||canon.pt', + '||canon.ro', + '||canon.rs', + '||canon.ru', + '||canon.se', + '||canon.si', + '||canon.sk', + '||canon.tj', + '||canon.ua', + '||canon.uz', + '||canonfoundation.org', + '||canonproprinters.com', + '||webex.ca', + '||webex.co.in', + '||webex.co.it', + '||webex.co.jp', + '||webex.co.kr', + '||webex.co.nz', + '||webex.co.uk', + '||webex.com', + '||webex.com.au', + '||webex.com.br', + '||webex.com.hk', + '||webex.com.mx', + '||webex.de', + '||webex.es', + '||webex.fr', + '||cisco', + '||academynetriders.com', + '||cciernslabs.com', + '||cciesecuritylabs.com', + '||ccievoicelabs.com', + '||ccna5.net', + '||cisco-returns.com', + '||cisco-warrantyfinder.com', + '||cisco.com', + '||cisco.mobi', + '||ciscoccservice.com', + '||ciscoconnectcloud.com', + '||ciscoconnectcloud.net', + '||ciscoconnectcloud.org', + '||ciscocontest.com', + '||ciscoerate.com', + '||ciscofax.com', + '||ciscoinvestments.com', + '||ciscojabbervideo.net', + '||ciscokinetic.com', + '||ciscoknowledgenetwork.com', + '||ciscolearningsociety.org', + '||ciscolearningsystem.com', + '||ciscolive.com', + '||cisconetspace.com', + '||cisconetspace.info', + '||cisconetspace.net', + '||cisconetapp.com', + '||ciscopartnermarketing.com', + '||ciscopowercube.com', + '||ciscoprice.com', + '||ciscoresearch.com', + '||ciscosoftware.com', + '||ciscospark.ca', + '||ciscospark.com', + '||ciscospark.jp', + '||ciscotaccc.com', + '||ciscotr.com', + '||ciscoturk.net', + '||ciscovideo.com', + '||ciscowebseminars.com', + '||cloudlock.com', + '||cloupia.com', + '||cloupia.net', + '||connect-in-canada.com', + '||coreoptics.net', + '||cs.co', + '||devm2m.com', + '||dnaspaces.io', + '||flipshare.com', + '||gpstheseries.com', + '||inlethd.com', + '||internetofeverything.com', + '||ioe.com', + '||kscisco.com', + '||m2m.com', + '||mcisco.com', + '||mediafiles-cisco.com', + '||metacloud.com', + '||mindmeld.com', + '||multiplydiversity.com', + '||myciscobenefits.com', + '||mysdn.com', + '||mysdn.info', + '||mysdn.net', + '||netacad.com', + '||netacad.net', + '||observable.net', + '||obsrvbl.com', + '||parstream.com', + '||parstream.net', + '||parstream.org', + '||services-exchange.com', + '||static-cisco.com', + '||tandberg-china.com', + '||tandberg.com', + '||versly.com', + '||videochampion.com', + '||virtuata.com', + '||wballiance.com', + '||whyiwantciscotelepresence.com', + '||wifi-mx.com', + '||youtubecisco.com', + '||app-dynamics.com', + '||appdynamics.co.uk', + '||appdynamics.com', + '||appdynamics.de', + '||appdynamics.fr', + '||appdynamics.info', + '||appdynamics.jp', + '||appdynamics.org', + '||mearki.com', + '||meraki-go.com', + '||meraki.hk', + '||merakigo.com', + '||tail-f.com', + '||tailf.com', + '|http://cisco.evergage.com', + '|https://cisco.evergage.com', + '|http://ciscolivehls-i.akamaihd.net', + '|https://ciscolivehls-i.akamaihd.net', + '||clco.cc', + '||cloudc.one', + '||cloudcone.com', + '||cloudcone.net', + '||cfblob.com', + '||cloudchoose.com', + '||cloudvolumes.com', + '||cmpaas.com', + '||cpedge.com', + '||crit-staging.com', + '||experience-vmware.com', + '||gemfire.net', + '||geodesummit.com', + '||getboxer.com', + '||gitstar.com', + '||gitstar.net', + '||gopivotal.net', + '||greenplum.net', + '||hwslabs.com', + '||immidio.com', + '||itfromtheinside.com', + '||latamvmwareforum.com', + '||pivotalinitiative.com', + '||snapvolumes.com', + '||ssdevrd.com', + '||vcanedge.com', + '||vcloudair.net', + '||vfabric.net', + '||vidmpreview.com', + '||virsto.com', + '||virsto.net', + '||vmglobal.net', + '||vmmark.com', + '||vmtestdrive.com', + '||vmw.com', + '||vmware-cloudmanagement.com', + '||vmware-techcenter.com', + '||vmware20mosaic.com', + '||vmwareausnews.com', + '||vmwarecertificationvideos.com', + '||vmwarecloud.com', + '||vmwaredemandcenter.com', + '||vmwareemeablog.com', + '||vmwaregrid.com', + '||vmwarehorizon.com', + '||vmwareidentity.com', + '||vmwarelearning.com', + '||vmwarelearningplatform.com', + '||vmwarestuff.com', + '||vmwareusergroupstore.com', + '||vmwareviewpoint.com', + '||vmwarevmc.com', + '||vmwdemo.com', + '||vmwgcomms.com', + '||vmwhorizonair.com', + '||vmwidm-ads.com', + '||vmwidm.com', + '||vmwlabconnect.com', + '||vmwlearningplatform.com', + '||vmworld.com', + '||vmworld2010.com', + '||vmworld2013.com', + '||vmwsalesrewards.com', + '||vmwservices.com', + '||vnware.net', + '||whychoosehorizon.com', + '||whychooseview.com', + '||whychoosevmwareeuc.com', + '||windowsuem.com', + '||workspaceair.com', + '||xlstudio.com', + '||avinetworks.com', + '||badaas.com', + '||bitnami.com', + '||bitnamiapp.com', + '||bitnamistudio.com', + '||dockerizer.com', + '||cloudcredibility.com', + '||cloudhealthtech.com', + '||cloudlive.com', + '||kubeacademy.com', + '||kubeapps.com', + '||nyansa.com', + '||velocloud.com', + '||gopivotal.com', + '||heptio.com', + '||aliveipc.com', + '||aliveitsm.com', + '||aliveprofiler.com', + '||alivercm.com', + '||aliverewind.com', + '||alivertsm.com', + '||alivevm.com', + '||alivevmax.com', + '||alivevue.com', + '||vsphere.com', + '||vsphere.net', + '||air-watch.com', + '||airwatchexpress.com', + '||airwatchqa.com', + '||getws1.com', + '||getwsone.com', + '||whatisairwatch.com', + '||whatisworkspaceone.com', + '||workspaceone.com', + '|http://vmware.tt.omtrdc.net', + '|https://vmware.tt.omtrdc.net', + '||dell', + '||dell-brand.com', + '||dell.com', + '||dellcdn.com', + '||achat-followers-instagram.com', + '||acheter-followers-instagram.com', + '||acheterdesfollowersinstagram.com', + '||acheterfollowersinstagram.com', + '||bookstagram.com', + '||carstagram.com', + '||cdninstagram.com', + '||chickstagram.com', + '||ig.me', + '||igcdn.com', + '||igsonar.com', + '||igtv.com', + '||imstagram.com', + '||imtagram.com', + '||instaadder.com', + '||instachecker.com', + '||instafallow.com', + '||instafollower.com', + '||instagainer.com', + '||instagda.com', + '||instagify.com', + '||instagmania.com', + '||instagor.com', + '||instagram-brand.com', + '||instagram-engineering.com', + '||instagram-help.com', + '||instagram-press.com', + '||instagram-press.net', + '||instagram.com', + '||instagramci.com', + '||instagramcn.com', + '||instagramdi.com', + '||instagramhashtags.net', + '||instagramhilecim.com', + '||instagramhilesi.org', + '||instagramium.com', + '||instagramizlenme.com', + '||instagramkusu.com', + '||instagramlogin.com', + '||instagramm.com', + '||instagramn.com', + '||instagrampartners.com', + '||instagramphoto.com', + '||instagramq.com', + '||instagramsepeti.com', + '||instagramtakipcisatinal.net', + '||instagramtakiphilesi.com', + '||instagramtips.com', + '||instagramtr.com', + '||instagran.com', + '||instagranm.com', + '||instagrem.com', + '||instagrm.com', + '||instagtram.com', + '||instagy.com', + '||instamgram.com', + '||instangram.com', + '||instanttelegram.com', + '||instaplayer.net', + '||instastyle.tv', + '||instgram.com', + '||intagram.com', + '||intagrm.com', + '||intgram.com', + '||kingstagram.com', + '||lnstagram-help.com', + '||theinstagramhack.com', + '||oninstagram.com', + '||online-instagram.com', + '||onlineinstagram.com', + '||web-instagram.net', + '||wwwinstagram.com', + '||fbmessenger.com', + '||m.me', + '||messenger.com', + '||nbabot.net', + '||binoculus.com', + '||buyoculus.com', + '||ocul.us', + '||oculus-china.com', + '||oculus.com', + '||oculus2014.com', + '||oculus3d.com', + '||oculusblog.com', + '||oculusbrand.com', + '||oculuscasino.net', + '||oculuscdn.com', + '||oculusconnect.com', + '||oculusdiving.com', + '||oculusforbusiness.com', + '||oculusrift.com', + '||oculusvr.com', + '||powersunitedvr.com', + '||wa.me', + '||whatsapp-plus.info', + '||whatsapp-plus.me', + '||whatsapp-plus.net', + '||whatsapp.cc', + '||whatsapp.com', + '||whatsapp.info', + '||whatsapp.net', + '||whatsapp.org', + '||whatsapp.tv', + '||whatsappbrand.com', + '||aboutfacebook.com', + '||accessfacebookfromschool.com', + '||acebooik.com', + '||acebook.com', + '||advancediddetection.com', + '||askfacebook.net', + '||askfacebook.org', + '||atdmt2.com', + '||atlasdmt.com', + '||atlasonepoint.com', + '||buyingfacebooklikes.com', + '||careersatfb.com', + '||celebgramme.com', + '||china-facebook.com', + '||click-url.com', + '||como-hackearfacebook.com', + '||crowdtangle.com', + '||dacebook.com', + '||dlfacebook.com', + '||dotfacebook.com', + '||dotfacebook.net', + '||expresswifi.com', + '||faacebok.com', + '||faacebook.com', + '||faasbook.com', + '||facbebook.com', + '||facbeok.com', + '||facboo.com', + '||facbook.com', + '||facbool.com', + '||facboox.com', + '||faccebook.com', + '||faccebookk.com', + '||facdbook.com', + '||facdebook.com', + '||face-book.com', + '||faceabook.com', + '||facebboc.com', + '||facebbook.com', + '||facebboook.com', + '||facebcook.com', + '||facebdok.com', + '||facebgook.com', + '||facebhook.com', + '||facebkkk.com', + '||facebo-ok.com', + '||faceboak.com', + '||facebock.com', + '||facebocke.com', + '||facebof.com', + '||faceboik.com', + '||facebok.com', + '||facebokbook.com', + '||facebokc.com', + '||facebokk.com', + '||facebokok.com', + '||faceboks.com', + '||facebol.com', + '||facebolk.com', + '||facebomok.com', + '||faceboo.com', + '||facebooa.com', + '||faceboob.com', + '||faceboobok.com', + '||facebooc.com', + '||faceboock.com', + '||facebood.com', + '||facebooe.com', + '||faceboof.com', + '||facebooi.com', + '||facebooik.com', + '||facebooik.org', + '||facebooj.com', + '||facebook-corp.com', + '||facebook-covid-19.com', + '||facebook-ebook.com', + '||facebook-forum.com', + '||facebook-inc.com', + '||facebook-login.com', + '||facebook-newsroom.com', + '||facebook-newsroom.org', + '||facebook-pmdcenter.com', + '||facebook-pmdcenter.net', + '||facebook-pmdcenter.org', + '||facebook-privacy.com', + '||facebook-program.com', + '||facebook-studio.com', + '||facebook-support.org', + '||facebook-texas-holdem.com', + '||facebook-texas-holdem.net', + '||facebook.br', + '||facebook.ca', + '||facebook.cc', + '||facebook.com', + '||facebook.design', + '||facebook.net', + '||facebook.hu', + '||facebook.in', + '||fecebook.net', + '||facebook.nl', + '||facebook.org', + '||facebook.se', + '||facebook.shop', + '||facebook.tv', + '||facebook.us', + '||facebook.wang', + '||facebook123.org', + '||facebook30.com', + '||facebook30.net', + '||facebook30.org', + '||facebook4business.com', + '||facebookads.com', + '||facebookadvertisingsecrets.com', + '||facebookatschool.com', + '||facebookawards.com', + '||facebookblueprint.net', + '||facebookbrand.com', + '||facebookbrand.net', + '||facebookcanadianelectionintegrityinitiative.com', + '||facebookcareer.com', + '||facebookcheats.com', + '||facebookck.com', + '||facebookclub.com', + '||facebookcom.com', + '||facebookconsultant.org', + '||facebookcoronavirus.com', + '||facebookcovers.org', + '||facebookcredits.info', + '||facebookdating.net', + '||facebookdusexe.org', + '||facebookemail.com', + '||facebookenespanol.com', + '||facebookexchange.com', + '||facebookexchange.net', + '||facebookfacebook.com', + '||facebookflow.com', + '||facebookgames.com', + '||facebookgraphsearch.com', + '||facebookgraphsearch.info', + '||facebookgroups.com', + '||facebookhome.cc', + '||facebookhome.com', + '||facebookhome.info', + '||facebookhub.com', + '||facebooki.com', + '||facebookinc.com', + '||facebookland.com', + '||facebooklikeexchange.com', + '||facebooklive.com', + '||facebooklivestaging.net', + '||facebooklivestaging.org', + '||facebooklogin.com', + '||facebooklogin.info', + '||facebookloginhelp.net', + '||facebooklogs.com', + '||facebookmail.com', + '||facebookmail.tv', + '||facebookmanager.info', + '||facebookmarketing.info', + '||facebookmarketingpartner.com', + '||facebookmarketingpartners.com', + '||facebookmobile.com', + '||facebookmsn.com', + '||facebooknews.com', + '||facebooknfl.com', + '||facebooknude.com', + '||facebookofsex.com', + '||facebookook.com', + '||facebookpaper.com', + '||facebookpay.com', + '||facebookphonenumber.net', + '||facebookphoto.com', + '||facebookphotos.com', + '||facebookpmdcenter.com', + '||facebookpoke.net', + '||facebookpoke.org', + '||facebookpoker.info', + '||facebookpokerchips.info', + '||facebookporn.net', + '||facebookporn.org', + '||facebookporno.net', + '||facebookportal.com', + '||facebooks.com', + '||facebooksafety.com', + '||facebooksecurity.net', + '||facebookshop.com', + '||facebooksignup.net', + '||facebooksite.net', + '||facebookstories.com', + '||facebookstudios.net', + '||facebookstudios.org', + '||facebooksupplier.com', + '||facebooksuppliers.com', + '||facebookswagemea.com', + '||facebookswagstore.com', + '||facebooksz.com', + '||facebookthreads.net', + '||facebooktv.net', + '||facebooktv.org', + '||facebookvacation.com', + '||facebookw.com', + '||facebookworld.com', + '||facebool.com', + '||facebool.info', + '||facebooll.com', + '||faceboom.com', + '||faceboon.com', + '||faceboonk.com', + '||faceboooik.com', + '||faceboook.com', + '||faceboop.com', + '||faceboot.com', + '||faceboox.com', + '||facebopk.com', + '||facebpook.com', + '||facebuk.com', + '||facebuok.com', + '||facebvook.com', + '||facebyook.com', + '||facebzook.com', + '||facecbgook.com', + '||facecbook.com', + '||facecbook.org', + '||facecook.com', + '||facecook.org', + '||facedbook.com', + '||faceebok.com', + '||faceebook.com', + '||faceebot.com', + '||facegbok.com', + '||facegbook.com', + '||faceobk.com', + '||faceobok.com', + '||faceobook.com', + '||faceook.com', + '||facerbooik.com', + '||facerbook.com', + '||facesbooc.com', + '||facesounds.com', + '||facetook.com', + '||facevbook.com', + '||facewbook.co', + '||facewook.com', + '||facfacebook.com', + '||facfebook.com', + '||fackebook.com', + '||facnbook.com', + '||facrbook.com', + '||facvebook.com', + '||facwebook.com', + '||facxebook.com', + '||fadebook.com', + '||faebok.com', + '||faebook.com', + '||faebookc.com', + '||faeboook.com', + '||faecebok.com', + '||faesebook.com', + '||fafacebook.com', + '||faicbooc.com', + '||fasebokk.com', + '||fasebook.com', + '||faseboox.com', + '||favebook.com', + '||faycbok.com', + '||fb.careers', + '||fb.com', + '||fb.me', + '||fbacebook.com', + '||fbbmarket.com', + '||fbboostyourbusiness.com', + '||fbcdn.com', + '||fbcdn.net', + '||fbfeedback.com', + '||fbhome.com', + '||fbidb.io', + '||fbinc.com', + '||fbinnovation.com', + '||fbmarketing.com', + '||fbreg.com', + '||fbrpms.com', + '||fbsbx.com', + '||fbsbx.net', + '||fbsupport-covid.net', + '||fbthirdpartypixel.com', + '||fbthirdpartypixel.net', + '||fbthirdpartypixel.org', + '||fburl.com', + '||fbworkmail.com', + '||fcacebook.com', + '||fcaebook.com', + '||fcebook.com', + '||fcebookk.com', + '||fcfacebook.com', + '||fdacebook.info', + '||feacboo.com', + '||feacbook.com', + '||feacbooke.com', + '||feacebook.com', + '||fecbbok.com', + '||fecbooc.com', + '||fecbook.com', + '||feceboock.com', + '||feceboox.com', + '||fececbook.com', + '||feook.com', + '||ferabook.com', + '||fescebook.com', + '||fesebook.com', + '||ffacebook.com', + '||fgacebook.com', + '||ficeboock.com', + '||fmcebook.com', + '||fnacebook.com', + '||fosebook.com', + '||fpacebook.com', + '||fqcebook.com', + '||fracebook.com', + '||freeb.com', + '||freebasics.com', + '||freebasics.net', + '||freebs.com', + '||freefacebook.com', + '||freefacebook.net', + '||freefacebookads.net', + '||freefblikes.com', + '||freindfeed.com', + '||friendbook.info', + '||friendfed.com', + '||friendfeed-api.com', + '||friendfeed-media.com', + '||friendfeed.com', + '||friendfeedmedia.com', + '||fsacebok.com', + '||fscebook.com', + '||fundraisingwithfacebook.com', + '||funnyfacebook.org', + '||futureofbusinesssurvey.org', + '||gacebook.com', + '||gameroom.com', + '||gfacecbook.com', + '||groups.com', + '||hackerfacebook.com', + '||hackfacebook.com', + '||hackfacebookid.com', + '||hifacebook.info', + '||howtohackfacebook-account.com', + '||hsfacebook.com', + '||httpfacebook.com', + '||httpsfacebook.com', + '||httpwwwfacebook.com', + '||i.org', + '||internet.org', + '||klik.me', + '||liverail.com', + '||liverail.tv', + '||login-account.net', + '||markzuckerberg.com', + '||midentsolutions.com', + '||mobilefacebook.com', + '||moneywithfacebook.com', + '||myfbfans.com', + '||newsfeed.com', + '||nextstop.com', + '||online-deals.net', + '||opencreate.org', + '||reachtheworldonfacebook.com', + '||rocksdb.org', + '||shopfacebook.com', + '||sportsfacebook.com', + '||sportstream.com', + '||supportfacebook.com', + '||terragraph.com', + '||thefacebook.com', + '||thefacebook.net', + '||thefind.com', + '||toplayerserver.com', + '||viewpointsfromfacebook.com', + '||whyfacebook.com', + '||worldhack.com', + '||www-facebook.com', + '||wwwfacebok.com', + '||wwwfacebook.com', + '||wwwmfacebook.com', + '||zuckerberg.com', + '||zuckerberg.net', + '||facebookwork.com', + '||redkix.com', + '||workplace.com', + '||workplaceusecases.com', + '|http://fbcdn-a.akamaihd.net', + '|https://fbcdn-a.akamaihd.net', + '||aorus.com', + '||gigabyte.com', + '|http://gigabyte2.azureedge.net', + '|https://gigabyte2.azureedge.net', + '|http://sa78gs.wpc.edgecastcdn.net', + '|https://sa78gs.wpc.edgecastcdn.net', + '|http://sni1dcb6gl.wpc.edgecastcdn.net', + '|https://sni1dcb6gl.wpc.edgecastcdn.net', + '||godaddy.com', + '||x.co', + '||godaddy', + '||blogspot.ae', + '||blogspot.al', + '||blogspot.am', + '||blogspot.ba', + '||blogspot.be', + '||blogspot.bg', + '||blogspot.bj', + '||blogspot.ca', + '||blogspot.cf', + '||blogspot.ch', + '||blogspot.cl', + '||blogspot.co.at', + '||blogspot.co.id', + '||blogspot.co.il', + '||blogspot.co.ke', + '||blogspot.co.nz', + '||blogspot.co.uk', + '||blogspot.co.za', + '||blogspot.com', + '||blogspot.com.ar', + '||blogspot.com.au', + '||blogspot.com.br', + '||blogspot.com.by', + '||blogspot.com.co', + '||blogspot.com.cy', + '||blogspot.com.ee', + '||blogspot.com.eg', + '||blogspot.com.es', + '||blogspot.com.mt', + '||blogspot.com.ng', + '||blogspot.com.tr', + '||blogspot.com.uy', + '||blogspot.cv', + '||blogspot.cz', + '||blogspot.de', + '||blogspot.dk', + '||blogspot.fi', + '||blogspot.fr', + '||blogspot.gr', + '||blogspot.hk', + '||blogspot.hr', + '||blogspot.hu', + '||blogspot.ie', + '||blogspot.in', + '||blogspot.is', + '||blogspot.it', + '||blogspot.jp', + '||blogspot.kr', + '||blogspot.li', + '||blogspot.lt', + '||blogspot.lu', + '||blogspot.md', + '||blogspot.mk', + '||blogspot.mx', + '||blogspot.my', + '||blogspot.nl', + '||blogspot.no', + '||blogspot.pe', + '||blogspot.pt', + '||blogspot.qa', + '||blogspot.re', + '||blogspot.ro', + '||blogspot.rs', + '||blogspot.ru', + '||blogspot.se', + '||blogspot.sg', + '||blogspot.si', + '||blogspot.sk', + '||blogspot.sn', + '||blogspot.td', + '||blogspot.tw', + '||blogspot.ug', + '||blogspot.vn', + '||2mdn.net', + '||admob.com', + '||adsense.com', + '||advertisercommunity.com', + '||advertiserscommunity.com', + '||adwords-community.com', + '||adwords.com', + '||adwordsexpress.com', + '||app-measurement.com', + '||clickserver.googleads.com', + '||doubleclick.com', + '||doubleclick.net', + '||google-analytics.com', + '||googleadapis.com', + '||googleadservices.com', + '||googleanalytics.com', + '||googleoptimize.com', + '||googlesyndication.com', + '||googletagmanager.com', + '||googletagservices.com', + '||googletraveladservices.com', + '||urchin.com', + '/^adservice\\.google\\.([a-z]{2}|com?)(\\.[a-z]{2})?$/', + '||youtube', + '||ggpht.com', + '||googlevideo.com', + '||withyoutube.com', + '||youtu.be', + '||youtube-nocookie.com', + '||youtube.ae', + '||youtube.al', + '||youtube.am', + '||youtube.at', + '||youtube.az', + '||youtube.ba', + '||youtube.be', + '||youtube.bg', + '||youtube.bh', + '||youtube.bo', + '||youtube.by', + '||youtube.ca', + '||youtube.cat', + '||youtube.ch', + '||youtube.cl', + '||youtube.co', + '||youtube.co.ae', + '||youtube.co.at', + '||youtube.co.cr', + '||youtube.co.hu', + '||youtube.co.id', + '||youtube.co.il', + '||youtube.co.in', + '||youtube.co.jp', + '||youtube.co.ke', + '||youtube.co.kr', + '||youtube.co.ma', + '||youtube.co.nz', + '||youtube.co.th', + '||youtube.co.tz', + '||youtube.co.ug', + '||youtube.co.uk', + '||youtube.co.ve', + '||youtube.co.za', + '||youtube.co.zw', + '||youtube.com', + '||youtube.com.ar', + '||youtube.com.au', + '||youtube.com.az', + '||youtube.com.bd', + '||youtube.com.bh', + '||youtube.com.bo', + '||youtube.com.br', + '||youtube.com.by', + '||youtube.com.co', + '||youtube.com.do', + '||youtube.com.ec', + '||youtube.com.ee', + '||youtube.com.eg', + '||youtube.com.es', + '||youtube.com.gh', + '||youtube.com.gr', + '||youtube.com.gt', + '||youtube.com.hk', + '||youtube.com.hn', + '||youtube.com.hr', + '||youtube.com.jm', + '||youtube.com.jo', + '||youtube.com.kw', + '||youtube.com.lb', + '||youtube.com.lv', + '||youtube.com.ly', + '||youtube.com.mk', + '||youtube.com.mt', + '||youtube.com.mx', + '||youtube.com.my', + '||youtube.com.ng', + '||youtube.com.ni', + '||youtube.com.om', + '||youtube.com.pa', + '||youtube.com.pe', + '||youtube.com.ph', + '||youtube.com.pk', + '||youtube.com.pt', + '||youtube.com.py', + '||youtube.com.qa', + '||youtube.com.ro', + '||youtube.com.sa', + '||youtube.com.sg', + '||youtube.com.sv', + '||youtube.com.tn', + '||youtube.com.tr', + '||youtube.com.tw', + '||youtube.com.ua', + '||youtube.com.uy', + '||youtube.com.ve', + '||youtube.cr', + '||youtube.cz', + '||youtube.de', + '||youtube.dk', + '||youtube.ee', + '||youtube.es', + '||youtube.fi', + '||youtube.fr', + '||youtube.ge', + '||youtube.gr', + '||youtube.gt', + '||youtube.hk', + '||youtube.hr', + '||youtube.hu', + '||youtube.ie', + '||youtube.in', + '||youtube.iq', + '||youtube.is', + '||youtube.it', + '||youtube.jo', + '||youtube.jp', + '||youtube.kr', + '||youtube.kz', + '||youtube.la', + '||youtube.lk', + '||youtube.lt', + '||youtube.lu', + '||youtube.lv', + '||youtube.ly', + '||youtube.ma', + '||youtube.md', + '||youtube.me', + '||youtube.mk', + '||youtube.mn', + '||youtube.mx', + '||youtube.my', + '||youtube.ng', + '||youtube.ni', + '||youtube.nl', + '||youtube.no', + '||youtube.pa', + '||youtube.pe', + '||youtube.ph', + '||youtube.pk', + '||youtube.pl', + '||youtube.pr', + '||youtube.pt', + '||youtube.qa', + '||youtube.ro', + '||youtube.rs', + '||youtube.ru', + '||youtube.sa', + '||youtube.se', + '||youtube.sg', + '||youtube.si', + '||youtube.sk', + '||youtube.sn', + '||youtube.soy', + '||youtube.sv', + '||youtube.tn', + '||youtube.tv', + '||youtube.ua', + '||youtube.ug', + '||youtube.uy', + '||youtube.vn', + '||youtubeeducation.com', + '||youtubegaming.com', + '||youtubego.co.id', + '||youtubego.co.in', + '||youtubego.com', + '||youtubego.com.br', + '||youtubego.id', + '||youtubego.in', + '||youtubei.googleapis.com', + '||youtubekids.com', + '||youtubemobilesupport.com', + '||yt.be', + '||ytimg.com', + '||and', + '||chrome', + '||dclk', + '||gbiz', + '||gle', + '||gmail', + '||goo', + '||goog', + '||google', + '||guge', + '||hangout', + '||nexus', + '||xn--qcka1pmc', + '||google.ad', + '||google.ae', + '||google.al', + '||google.am', + '||google.as', + '||google.at', + '||google.az', + '||google.ba', + '||google.be', + '||google.bf', + '||google.bg', + '||google.bi', + '||google.bj', + '||google.bs', + '||google.bt', + '||google.by', + '||google.ca', + '||google.cat', + '||google.cd', + '||google.cf', + '||google.cg', + '||google.ch', + '||google.ci', + '||google.cl', + '||google.cm', + '||google.co.ao', + '||google.co.bw', + '||google.co.ck', + '||google.co.cr', + '||google.co.id', + '||google.co.il', + '||google.co.in', + '||google.co.jp', + '||google.co.ke', + '||google.co.kr', + '||google.co.ls', + '||google.co.ma', + '||google.co.mz', + '||google.co.nz', + '||google.co.th', + '||google.co.tz', + '||google.co.ug', + '||google.co.uk', + '||google.co.uz', + '||google.co.ve', + '||google.co.vi', + '||google.co.za', + '||google.co.zm', + '||google.co.zw', + '||google.com', + '||google.com.af', + '||google.com.ag', + '||google.com.ai', + '||google.com.ar', + '||google.com.au', + '||google.com.bd', + '||google.com.bh', + '||google.com.bn', + '||google.com.bo', + '||google.com.br', + '||google.com.bz', + '||google.com.co', + '||google.com.cu', + '||google.com.cy', + '||google.com.do', + '||google.com.ec', + '||google.com.eg', + '||google.com.et', + '||google.com.fj', + '||google.com.gh', + '||google.com.gi', + '||google.com.gt', + '||google.com.hk', + '||google.com.jm', + '||google.com.kh', + '||google.com.kw', + '||google.com.lb', + '||google.com.ly', + '||google.com.mm', + '||google.com.mt', + '||google.com.mx', + '||google.com.my', + '||google.com.na', + '||google.com.ng', + '||google.com.ni', + '||google.com.np', + '||google.com.om', + '||google.com.pa', + '||google.com.pe', + '||google.com.pg', + '||google.com.ph', + '||google.com.pk', + '||google.com.pr', + '||google.com.py', + '||google.com.qa', + '||google.com.sa', + '||google.com.sb', + '||google.com.sg', + '||google.com.sl', + '||google.com.sv', + '||google.com.tj', + '||google.com.tr', + '||google.com.tw', + '||google.com.ua', + '||google.com.uy', + '||google.com.vc', + '||google.com.vn', + '||google.cv', + '||google.cz', + '||google.de', + '||google.dj', + '||google.dk', + '||google.dm', + '||google.dz', + '||google.ee', + '||google.es', + '||google.fi', + '||google.fm', + '||google.fr', + '||google.ga', + '||google.ge', + '||google.gg', + '||google.gl', + '||google.gm', + '||google.gr', + '||google.gy', + '||google.hn', + '||google.hr', + '||google.ht', + '||google.hu', + '||google.ie', + '||google.im', + '||google.iq', + '||google.is', + '||google.it', + '||google.je', + '||google.jo', + '||google.kg', + '||google.ki', + '||google.kz', + '||google.la', + '||google.li', + '||google.lk', + '||google.lt', + '||google.lu', + '||google.lv', + '||google.md', + '||google.me', + '||google.mg', + '||google.mk', + '||google.ml', + '||google.mn', + '||google.ms', + '||google.mu', + '||google.mv', + '||google.mw', + '||google.ne', + '||google.nl', + '||google.no', + '||google.nr', + '||google.nu', + '||google.pl', + '||google.pn', + '||google.ps', + '||google.pt', + '||google.ro', + '||google.rs', + '||google.ru', + '||google.rw', + '||google.sc', + '||google.se', + '||google.sh', + '||google.si', + '||google.sk', + '||google.sm', + '||google.sn', + '||google.so', + '||google.sr', + '||google.st', + '||google.td', + '||google.tg', + '||google.tl', + '||google.tm', + '||google.tn', + '||google.to', + '||google.tt', + '||google.vg', + '||google.vu', + '||google.ws', + '||0emm.com', + '||1e100.net', + '||1ucrs.com', + '||466453.com', + '||abc.xyz', + '||adgoogle.net', + '||admeld.com', + '||angulardart.org', + '||api.ai', + '||apigee.com', + '||appbridge.ca', + '||appbridge.io', + '||appbridge.it', + '||appspot.com', + '||apture.com', + '||area120.com', + '||asp-cc.com', + '||autodraw.com', + '||bandpage.com', + '||baselinestudy.com', + '||baselinestudy.org', + '||bazel.build', + '||bdn.dev', + '||beatthatquote.com', + '||blink.org', + '||blogblog.com', + '||blogger.com', + '||brocaproject.com', + '||brotli.org', + '||bumpshare.com', + '||bumptop.ca', + '||bumptop.com', + '||bumptop.net', + '||bumptop.org', + '||bumptunes.com', + '||campuslondon.com', + '||certificate-transparency.org', + '||chat.gle', + '||chrome.com', + '||chromebook.com', + '||chromecast.com', + '||chromeos.dev', + '||chromium.org', + '||cloudburstresearch.com', + '||cloudfunctions.net', + '||cloudrobotics.com', + '||cobrasearch.com', + '||codespot.com', + '||conscrypt.com', + '||conscrypt.org', + '||cookiechoices.org', + '||coova.com', + '||coova.net', + '||coova.org', + '||crossmediapanel.com', + '||crr.com', + '||cs4hs.com', + '||dartsearch.net', + '||dataliberation.org', + '||debug.com', + '||debugproject.com', + '||deepmind.com', + '||devsitetest.how', + '||dialogflow.com', + '||digitalassetlinks.org', + '||episodic.com', + '||feedburner.com', + '||fflick.com', + '||financeleadsonline.com', + '||firebaseapp.com', + '||firebaseio.com', + '||foofle.com', + '||froogle.com', + '||fuchsia.dev', + '||g-tun.com', + '||g.co', + '||g.dev', + '||g.page', + '||gerritcodereview.com', + '||getbumptop.com', + '||ggoogle.com', + '||gipscorp.com', + '||globaledu.org', + '||gmail.com', + '||gmodules.com', + '||gogle.com', + '||gogole.com', + '||gonglchuangl.net', + '||goo.gl', + '||googel.com', + '||googil.com', + '||googl.com', + '||google-syndication.com', + '||google.berlin', + '||google.dev', + '||google.net', + '||google.org', + '||google.ventures', + '||googleacquisitionmigration.com', + '||googleapis.com', + '||googleapps.com', + '||googlearth.com', + '||googleblog.com', + '||googlebot.com', + '||googlecapital.com', + '||googlecert.net', + '||googlecode.com', + '||googlecommerce.com', + '||googlecompare.co.uk', + '||googledanmark.com', + '||googledomains.com', + '||googledrive.com', + '||googlee.com', + '||googleearth.com', + '||googlefiber.net', + '||googlefinland.com', + '||googlemail.com', + '||googlemaps.com', + '||googlepagecreator.com', + '||googlephotos.com', + '||googleplay.com', + '||googleplus.com', + '||googlesource.com', + '||googlestore.com', + '||googlesverige.com', + '||googleusercontent.com', + '||googleventures.com', + '||googlr.com', + '||goolge.com', + '||gooogle.com', + '||gridaware.app', + '||gsrc.io', + '||gstatic.com', + '||gsuite.com', + '||gv.com', + '||gvt0.com', + '||gvt1.com', + '||gvt2.com', + '||gvt3.com', + '||gvt5.com', + '||gvt6.com', + '||gvt7.com', + '||gvt9.com', + '||hdrplusdata.org', + '||hey.gle', + '||hindiweb.com', + '||howtogetmo.co.uk', + '||html5rocks.com', + '||hwgo.com', + '||iamremarkable.org', + '||igoogle.com', + '||impermium.com', + '||j2objc.org', + '||jibemobile.com', + '||keyhole.com', + '||keytransparency.com', + '||keytransparency.foo', + '||keytransparency.org', + '||lanternal.com', + '||like.com', + '||madewithcode.com', + '||material.io', + '||mdialog.com', + '||meet.new', + '||mfg-inspector.com', + '||mobileview.page', + '||moodstocks.com', + '||near.by', + '||nest.com', + '||nomulus.foo', + '||oauthz.com', + '||ok.gle', + '||on.here', + '||on2.com', + '||onefifteen.net', + '||onefifteen.org', + '||oneworldmanystories.com', + '||openthread.io', + '||openweave.io', + '||orbitera.com', + '||page.link', + '||pagespeedmobilizer.com', + '||pageview.mobi', + '||panoramio.com', + '||partylikeits1986.org', + '||paxlicense.org', + '||picasa.com', + '||picasaweb.com', + '||picasaweb.net', + '||picasaweb.org', + '||picnik.com', + '||pittpatt.com', + '||postini.com', + '||projectara.com', + '||projectbaseline.com', + '||publishproxy.com', + '||questvisual.com', + '||quickoffice.com', + '||quiksee.com', + '||revolv.com', + '||ridepenguin.com', + '||run.app', + '||savethedate.foo', + '||saynow.com', + '||schemer.com', + '||screenwisetrends.com', + '||screenwisetrendspanel.com', + '||snapseed.com', + '||solveforx.com', + '||stadia.dev', + '||stcroixmosquito.com', + '||stcroixmosquitoproject.com', + '||studywatchbyverily.com', + '||studywatchbyverily.org', + '||stxmosquito.com', + '||stxmosquitoproject.com', + '||stxmosquitoproject.net', + '||stxmosquitoproject.org', + '||synergyse.com', + '||tensorflow.org', + '||tfhub.dev', + '||thecleversense.com', + '||thegooglestore.com', + '||thinkquarterly.co.uk', + '||thinkquarterly.com', + '||thinkwithgoogle.com', + '||tiltbrush.com', + '||txcloud.net', + '||txvia.com', + '||unfiltered.news', + '||useplannr.com', + '||usvimosquito.com', + '||usvimosquitoproject.com', + '||velostrata.com', + '||verily.com', + '||verilylifesciences.com', + '||verilystudyhub.com', + '||verilystudywatch.com', + '||verilystudywatch.org', + '||wallet.com', + '||waymo.com', + '||waze.com', + '||web.app', + '||web.dev', + '||webappfieldguide.com', + '||webmproject.org', + '||webpkgcache.com', + '||webrtc.org', + '||weltweitwachsen.de', + '||whatbrowser.org', + '||widevine.com', + '||withgoogle.com', + '||womenwill.com', + '||womenwill.com.br', + '||womenwill.id', + '||womenwill.in', + '||womenwill.mx', + '||x.company', + '||x.team', + '||xn--9kr7l.com', + '||xn--9trs65b.com', + '||xn--flw351e.com', + '||xplr.co', + '||zukunftswerkstatt.de', + '||hinet.net', + '||123-hp.com', + '||123hplaserjet.com', + '||8008206616.com', + '||as-hp.ca', + '||baterias-hp.com', + '||campushp.com', + '||colorprotechnology.com', + '||compaq.org', + '||david-laserscanner.com', + '||demoprint.com', + '||digitalpack.com', + '||eprintsw.com', + '||gaming-notebooks.com', + '||getprintersupports.com', + '||hp-imagine.com', + '||hp-infolab.com', + '||hp-invent.com', + '||hp-invent.info', + '||hp-mns.com', + '||hp-printing.com', + '||hp-webplatform.com', + '||hp-ww.com', + '||hp.com', + '||hp.company', + '||hp.io', + '||hp3d.com', + '||hp3dmetals.com', + '||hp3dprinter.com', + '||hp3dsamplepromo.com', + '||hpallinoneprinter.com', + '||hpapplicationscenter.com', + '||hpbestbuy.com', + '||hpbluecarpet.com', + '||hpbluecarpet.net', + '||hpbuiltforlearning.com', + '||hpbundle.com', + '||hpcampus.com', + '||hpcatridge.com', + '||hpccp.com', + '||hpceo.com', + '||hpcmw.net', + '||hpcodewarsbcn.com', + '||hpcomputers.com', + '||hpcomputerservices.com', + '||hpconnected.com', + '||hpconnected.net', + '||hpconnected.org', + '||hpconnected.us', + '||hpconnectedstage.com', + '||hpcontinuum.com', + '||hpcpi.com', + '||hpcu.org', + '||hpcustomersupport.com', + '||hpcustomersupport.net', + '||hpdaas.com', + '||hpdesignjetl25500.com', + '||hpdesktopcomputer.com', + '||hpdownloadstore.com', + '||hpdreamcolor.com', + '||hpdriver.com', + '||hpdrivers.com', + '||hpdrivers.org', + '||hpeclipse.com', + '||hpengage.com', + '||hpeprint.com', + '||hpeprintcenter.com', + '||hpeurope.com', + '||hpeventcenter.com', + '||hpfaqs.com', + '||hpfeedback.com', + '||hpgift.com', + '||hpgpas.com', + '||hpgraphicspartners.com', + '||hpiie.org', + '||hpinc.info', + '||hpinc.net', + '||hpindigopress.com', + '||hpinkjet.com', + '||hpinstantink.ca', + '||hpinstantink.com', + '||hpkeyboard.com', + '||hplaptop.com', + '||hplaptopbattery.com', + '||hplargeformatremote.com', + '||hplatexknowledgecenter.com', + '||hplfmedia.com', + '||hplip.net', + '||hplipopensource.com', + '||hpmarketplace.com', + '||hpmemorychips.com', + '||hpmicrcartridge.com', + '||hpmini.com', + '||hpmobile.com', + '||hpofficejetprinter.com', + '||hponlinehelp.com', + '||hponlineprinting.com', + '||hppage5000.com', + '||hppavillionlaptop.com', + '||hpphotoscanners.com', + '||hpprinterdrivers.com', + '||hpprinterinstalls.com', + '||hpprintersupplies.com', + '||hpsalescentral.com', + '||hpserver.com', + '||hpservices.com', + '||hpshooping.com', + '||hpshop.com', + '||hpshoping.com', + '||hpshopping.hk', + '||hpsignage.com', + '||hpsmart.com', + '||hpsmarts.com', + '||hpsmartstage.com', + '||hpsmartupdate.com', + '||hpsoftware.com', + '||hpspeaker.com', + '||hpsprocket.com', + '||hpsso.com', + '||hpstore-china.com', + '||hpstore-emea.com', + '||hpstore.com', + '||hpstorethailand.com', + '||hpsupport.com', + '||hpsuresupply.com', + '||hptechventures.com', + '||hpto.net', + '||hptouch.com', + '||hptouchpointmanager.com', + '||hptrainingcenter.com', + '||hpuae.com', + '||hpuniversity.info', + '||hpusertraining.com', + '||hpveer.com', + '||hpvirtualthin.com', + '||hpwallart.com', + '||hpwellnesscentral.com', + '||hpwsn.com', + '||i-123-hp.com', + '||inkchoice.com', + '||instantink.com', + '||leavinghpinc.com', + '||life-global.org', + '||myhpsupport.com', + '||printeron.com', + '||printersetupsupport.com', + '||printspots.com', + '||printspots.net', + '||serviceshp.com', + '||thecompaqstore.com', + '||touchsmartpc.com', + '||touchsmartpc.net', + '||touchsmartpc.org', + '||workstations.tv', + '||www8-hp.com', + '||xn--6eup7j.com', + '||xn--6eup7j.net', + '|http://hpstore.corpmerchandise.com', + '|https://hpstore.corpmerchandise.com', + '||ibm', + '||weatherchannel', + '||weather', + '||bluemix.com', + '||bluemix.net', + '||ibm.com', + '||ibm.eu', + '||ibm.net', + '||ibm.us', + '||s-bluemix.net', + '||s81c.com', + '||intel', + '||intel.ac', + '||intel.ae', + '||intel.af', + '||intel.ag', + '||intel.ai', + '||intel.ar', + '||intel.at', + '||intel.az', + '||intel.ba', + '||intel.bg', + '||intel.bh', + '||intel.bi', + '||intel.bo', + '||intel.bs', + '||intel.by', + '||intel.ca', + '||intel.cc', + '||intel.cg', + '||intel.ch', + '||intel.cl', + '||intel.cm', + '||intel.co.ae', + '||intel.co.cr', + '||intel.co.id', + '||intel.co.il', + '||intel.co.jp', + '||intel.co.kr', + '||intel.co.uk', + '||intel.co.za', + '||intel.com', + '||intel.com.ar', + '||intel.com.au', + '||intel.com.bo', + '||intel.com.br', + '||intel.com.co', + '||intel.com.ec', + '||intel.com.hk', + '||intel.com.jm', + '||intel.com.mx', + '||intel.com.my', + '||intel.com.pe', + '||intel.com.ph', + '||intel.com.pr', + '||intel.com.py', + '||intel.com.tr', + '||intel.com.tw', + '||intel.com.uy', + '||intel.com.ve', + '||intel.cr', + '||intel.cu', + '||intel.cz', + '||intel.de', + '||intel.dk', + '||intel.dz', + '||intel.ec', + '||intel.ee', + '||intel.eg', + '||intel.es', + '||intel.eu', + '||intel.fi', + '||intel.fr', + '||intel.ga', + '||intel.gd', + '||intel.ge', + '||intel.gl', + '||intel.gm', + '||intel.gr', + '||intel.gs', + '||intel.gt', + '||intel.gy', + '||intel.hk', + '||intel.hn', + '||intel.ht', + '||intel.hu', + '||intel.ie', + '||intel.in', + '||intel.io', + '||intel.it', + '||intel.je', + '||intel.jo', + '||intel.jp', + '||intel.ke', + '||intel.la', + '||intel.lc', + '||intel.lk', + '||intel.lt', + '||intel.lu', + '||intel.ly', + '||intel.ma', + '||intel.md', + '||intel.me', + '||intel.mg', + '||intel.mk', + '||intel.mn', + '||intel.mp', + '||intel.mt', + '||intel.mu', + '||intel.mw', + '||intel.mx', + '||intel.my', + '||intel.ng', + '||intel.nl', + '||intel.nu', + '||intel.nz', + '||intel.pa', + '||intel.pe', + '||intel.ph', + '||intel.pl', + '||intel.pn', + '||intel.re', + '||intel.ro', + '||intel.ru', + '||intel.rw', + '||intel.sa', + '||intel.sc', + '||intel.se', + '||intel.sg', + '||intel.si', + '||intel.sk', + '||intel.sn', + '||intel.sr', + '||intel.st', + '||intel.sv', + '||intel.sx', + '||intel.sy', + '||intel.tf', + '||intel.tj', + '||intel.tl', + '||intel.tm', + '||intel.tn', + '||intel.tt', + '||intel.tv', + '||intel.tw', + '||intel.ua', + '||intel.uk', + '||intel.us', + '||intel.uy', + '||intel.uz', + '||intel.vg', + '||intel.vn', + '||intel.vu', + '||intel.wf', + '||intel.yt', + '||altera.com', + '||alteraforum.com', + '||alteraforums.com', + '||alteraforums.net', + '||alterauserforum.com', + '||alterauserforum.net', + '||alterauserforums.com', + '||alterauserforums.net', + '||buyaltera.com', + '||celeron.com', + '||celeron.net', + '||centrino.com', + '||centrino.net', + '||chips.com', + '||cilk.com', + '||cilk.net', + '||cloudinsights.com', + '||clusterconnection.com', + '||coreduo.com', + '||coreextreme.com', + '||crosswalk-project.com', + '||crosswalk-project.net', + '||doceapower.com', + '||easic.com', + '||enpirion.com', + '||exascale-tech.com', + '||exploreintel.com', + '||gordonmoore.com', + '||insidefilms.com', + '||intc.com', + '||intel-research.net', + '||intel-university-collaboration.net', + '||intelamericasstore.com', + '||intelapacstore.com', + '||intelatom.net', + '||intelcapital.com', + '||intelcapital.net', + '||intelcloudbuilders.com', + '||intelcloudfinder.com', + '||intelemeastore.com', + '||inteleventexpress.com', + '||intelforchange.com', + '||intelfreepress.com', + '||intelgo.net', + '||intelinsight.com', + '||inteliotmarketplace.com', + '||intell.com', + '||intellearningseries.com', + '||intellinuxwireless.net', + '||intelnervana.com', + '||intelnet.component', + '||intelplay.com', + '||intelquark.com', + '||intelrealsense.com', + '||intelrxt.com', + '||intelsalestraining.com', + '||intelsecurity.com', + '||intelserveredge.com', + '||intelsoftwarenetwork.com', + '||intelstore.com', + '||inteltechnologyprovider.com', + '||intelvmwarecybersecurity.com', + '||itnel.com', + '||latencytop.com', + '||lookinside.com', + '||makebettercode.com', + '||makesenseofdata.com', + '||movidius.com', + '||movidius.net', + '||nervanasys.com', + '||nevex.com', + '||nextgenerationcenter.com', + '||niosii.com', + '||niosii.net', + '||omekinteractive.com', + '||omnitek.tv', + '||openamt.com', + '||opendroneid.org', + '||optanedifference.com', + '||pc.com', + '||pentium.com', + '||pentium.net', + '||pintool.com', + '||poweredbyintel.com', + '||reconinstruments.com', + '||reconjet.com', + '||researchintel.com', + '||saffrontech.com', + '||sensorynetworks.com', + '||siport.com', + '||smart-edge.com', + '||theintelstore.com', + '||thunderbolttechnology.net', + '||trustedanalytics.com', + '||trustedanalytics.net', + '||vokevr.com', + '||vpro.com', + '||vpro.net', + '||xeon.com', + '||xn--ztsq84g.cn', + '||xscale.com', + '||barefootnetworks.com', + '||linkedin.com', + '||licdn.com', + '||logi.com', + '||logicool.co.jp', + '||logicoolg.com', + '||logitech.biz', + '||logitech.com', + '||logitech.fr', + '||logitechg.com', + '||logitechg.fr', + '||worldsfastestgamer.net', + '||azure-dns.com', + '||azure-dns.info', + '||azure-dns.net', + '||azure-dns.org', + '||azure-mobile.net', + '||azure-sphere.com', + '||azure-test.net', + '||azure.com', + '||azure.net', + '||azurecomcdn.net', + '||azurecontainer.io', + '||azurecosmos.net', + '||azurecosmosdb.com', + '||azurecosmosdb.info', + '||azurecosmosdb.net', + '||azuredatabricks.net', + '||azuredevopslaunch.com', + '||azuredigitaltwin.com', + '||azuredigitaltwins.com', + '||azuredigitaltwins.net', + '||azuredns-prd.info', + '||azuredns-prd.org', + '||azureedge-test.net', + '||azureedge.net', + '||azureiotcentral.com', + '||azureiotsolutions.com', + '||azureiotsuite.com', + '||azureplanetscale.info', + '||azureplanetscale.net', + '||azureserviceprofiler.com', + '||azuresmartspaces.net', + '||azurestackvalidation.com', + '||azurewebsites.net', + '||cosmosdb.info', + '||cosmosdb.net', + '||devopsms.com', + '||gotcosmos.com', + '||microsofteca.com', + '||microsoftiotcentral.com', + '||serverlesslibrary.net', + '||tryfunctions.com', + '||windowsazure.com', + '|http://azure.microsoft.com', + '|https://azure.microsoft.com', + '|http://azuremarketplace.microsoft.com', + '|https://azuremarketplace.microsoft.com', + '||bing', + '||bing.com', + '||bing.net', + '||bingads.com', + '||bingagencyawards.com', + '||bingapistatistics.com', + '||bingsandbox.com', + '||bingvisualsearch.com', + '||bingworld.com', + '||bluehatnights.com', + '||dictate.ms', + '||flipwithsurface.com', + '||masalladeloslimites.com', + '||microsoft-give.com', + '||microsoftcloudsummit.com', + '||microsoftdiplomados.com', + '||microsoftlatamholiday.com', + '||microsoftmxfilantropia.com', + '||microsoftpartnersolutions.com', + '||msunlimitedcloudsummit.com', + '||office365love.com', + '||office365tw.com', + '||renovacionoffice.com', + '||sprinklesapp.com', + '||microsoftnews.cc', + '||microsoftnews.com', + '||microsoftnews.net', + '||microsoftnews.org', + '||microsoftnewsforkids.com', + '||microsoftnewsforkids.net', + '||microsoftnewsforkids.org', + '||microsoftnewskids.com', + '||microsoftnewskids.net', + '||microsoftnewskids.org', + '||msn.com', + '||msnewskids.com', + '||msnewskids.net', + '||msnewskids.org', + '||msnkids.com', + '||1drv.com', + '||1drv.ms', + '||livefilestore.com', + '||onedrive.co', + '||onedrive.co.uk', + '||onedrive.com', + '||onedrive.eu', + '||onedrive.net', + '||onedrive.org', + '||onedrive.live.com', + '||storage.live.com', + '||microsoft', + '||azure', + '||hotmail', + '||office', + '||skype', + '||windows', + '||xbox', + '||microsoft.az', + '||microsoft.be', + '||microsoft.by', + '||microsoft.ca', + '||microsoft.cat', + '||microsoft.ch', + '||microsoft.cl', + '||microsoft.com', + '||microsoft.cz', + '||microsoft.de', + '||microsoft.dk', + '||microsoft.ee', + '||microsoft.es', + '||microsoft.eu', + '||microsoft.fi', + '||microsoft.ge', + '||microsoft.hu', + '||microsoft.io', + '||microsoft.is', + '||microsoft.it', + '||microsoft.jp', + '||microsoft.lt', + '||microsoft.lu', + '||microsoft.lv', + '||microsoft.md', + '||microsoft.pl', + '||microsoft.pt', + '||microsoft.red', + '||microsoft.ro', + '||microsoft.rs', + '||microsoft.ru', + '||microsoft.se', + '||microsoft.si', + '||microsoft.tv', + '||microsoft.ua', + '||microsoft.uz', + '||microsoft.vn', + '||femalefounderscomp.com', + '||m12.vc', + '||aka.ms', + '||ankarazirvesi2018.com', + '||applicationinsights.io', + '||applicationinsights.net', + '||aria.ms', + '||asp.net', + '||aspnetcdn.com', + '||binads.com', + '||bluehatil.com', + '||brazilpartneruniversity.com', + '||breakdown.me', + '||centralvalidation.com', + '||ch9.ms', + '||charticulator.com', + '||cloudapp.net', + '||cloudappsecurity.com', + '||cortanaanalytics.com', + '||cortanaskills.com', + '||crmdynint-gcc.com', + '||crmdynint.com', + '||crossborderexpansion.com', + '||docs.com', + '||dynamics.com', + '||efproject.net', + '||azuredigitaltwin.com', + '||fasttrackreadysupport.com', + '||fluidpreview.com', + '||gameuxmasterguide.com', + '||gears5.com', + '||gearspop.com', + '||gearstactics.com', + '||gfx.ms', + '||gigjam.com', + '||hololens.com', + '||hotmail.co', + '||hotmail.com', + '||hotmail.eu', + '||hotmail.net', + '||hotmail.org', + '||hummingbird.ms', + '||ie8.co', + '||ie9.com', + '||ie10.com', + '||ie11.com', + '||internetexplorer.co', + '||internetexplorer.com', + '||imaginecup.pl', + '||ingads.com', + '||intunewiki.com', + '||iotinactionevents.com', + '||kidgrid.tv', + '||latampartneruniversity.com', + '||live.com', + '||live.com.au', + '||live.eu', + '||live.net', + '||livingyourambition.com', + '||makecode.org', + '||managedmeetingrooms.com', + '||meetfasttrack.com', + '||meetyourdevices.com', + '||mepn.com', + '||microsoft-int.com', + '||microsoft-ppe.com', + '||microsoft-sap-events.com', + '||microsoft-sbs-domains.com', + '||microsoft365.com', + '||microsoftaccountguard.com', + '||microsoftads.com', + '||microsoftadvertising.com', + '||microsoftadvertisingregionalawards.com', + '||microsoftaffiliates.com', + '||microsoftcloud.com', + '||microsoftcloudworkshop.com', + '||microsoftcommunitytraining.com', + '||microsoftedge.com', + '||microsofthouse.com', + '||microsofthouse.net', + '||microsoftinternetsafety.net', + '||microsoftlatamaitour.com', + '||microsoftlinc.com', + '||microsoftonline-p.com', + '||microsoftonline.com', + '||microsoftpartnercommunity.com', + '||microsoftready.com', + '||microsoftsiteselection.com', + '||microsoftstore.com', + '||microsoftstore.com.hk', + '||microsoftstream.com', + '||microsoftteams.com', + '||microsofttradein.com', + '||microsofttranslator.com', + '||microsoftuwp.com', + '||momentumms.com', + '||morphcharts.com', + '||mpnevolution.com', + '||ms-studiosmedia.com', + '||ms365surfaceoffer.com', + '||msads.net', + '||msauth.net', + '||mschallenge2018.com', + '||msecnd.net', + '||msedge.net', + '||msft.info', + '||msft.net', + '||msftauth.net', + '||msfteducation.ca', + '||msftnet.org', + '||msgamesresearch.com', + '||msocdn.com', + '||msocsp.com', + '||msturing.org', + '||msudalosti.com', + '||mymicrosoft.com', + '||nextechafrica.net', + '||nxta.org', + '||o365weve-dev.com', + '||o365weve-ppe.com', + '||o365weve.com', + '||office.com', + '||office.net', + '||office365.com', + '||onenote.com', + '||onenote.net', + '||onestore.ms', + '||opticsforthecloud.net', + '||outingsapp.com', + '||outlook.com', + '||passport.net', + '||pixapp.net', + '||powerappscdn.net', + '||powerautomate.com', + '||powerbi.com', + '||powershellgallery.com', + '||projectmurphy.net', + '||projectsangam.com', + '||pxt.io', + '||s-microsoft.com', + '||s-msn.com', + '||sfbassets.com', + '||sfbassets.net', + '||sfx.ms', + '||sharepoint.com', + '||sharepointonline.com', + '||skype.com', + '||skype.net', + '||skypeassets.com', + '||skypeassets.net', + '||staffhub.ms', + '||successwithteams.com', + '||surface.com', + '||sway-cdn.com', + '||sway.com', + '||sysinternals.com', + '||tailwindtraders.com', + '||techhub.ms', + '||tfsallin.net', + '||trafficmanager.net', + '||translatetheweb.com', + '||unlocklimitlesslearning.com', + '||userpxt.io', + '||videobreakdown.com', + '||videoindexer.ai', + '||virtualearth.net', + '||vsallin.net', + '||wbd.ms', + '||what-fan.net', + '||windows-int.net', + '||windows.com', + '||windows.net', + '||windows.nl', + '||windows8.hk', + '||windowscommunity.net', + '||windowsmarketplace.com', + '||windowsphone-int.com', + '||windowsphone.com', + '||windowssearch.com', + '||windowsupdate.com', + '||winhec.com', + '||winhec.net', + '||yammer.com', + '|http://img-prod-cms-rt-microsoft-com.akamaized.net', + '|https://img-prod-cms-rt-microsoft-com.akamaized.net', + '|http://img-s-msn-com.akamaized.net', + '|https://img-s-msn-com.akamaized.net', + '|http://mwf-service.akamaized.net', + '|https://mwf-service.akamaized.net', + '|http://officecdn-microsoft-com.akamaized.net', + '|https://officecdn-microsoft-com.akamaized.net', + '|http://statics-marketingsites-eus-ms-com.akamaized.net', + '|https://statics-marketingsites-eus-ms-com.akamaized.net', + '|http://statics-marketingsites-wcus-ms-com.akamaized.net', + '|https://statics-marketingsites-wcus-ms-com.akamaized.net', + '||firefox.com', + '|http://developer.mozilla.org', + '|https://developer.mozilla.org', + '|http://interactive-examples.mdn.mozilla.net', + '|https://interactive-examples.mdn.mozilla.net', + '|http://mdn.mozillademos.org', + '|https://mdn.mozillademos.org', + '|http://media.prod.mdn.mozit.cloud', + '|https://media.prod.mdn.mozit.cloud', + '||rust-lang.org', + '||rustup.rs', + '||crates.io', + '||docs.rs', + '||mozilla.community', + '||mozilla.net', + '||mozilla.org', + '||bugzilla.org', + '||getpocket.com', + '||seamonkey-project.org', + '||thunderbird.net', + '||grafolio.com', + '||naver.com', + '||naver.jp', + '||naver.net', + '||navercorp.com', + '||plug.game', + '||pstatic.net', + '||neuralink.com', + '||geforce.co.kr', + '||geforce.co.uk', + '||geforce.com', + '||geforce.com.tw', + '||gputechconf.co.kr', + '||gputechconf.com', + '||gputechconf.com.au', + '||gputechconf.com.tw', + '||gputechconf.eu', + '||gputechconf.in', + '||gputechconf.jp', + '||nvidia.asia', + '||nvidia.be', + '||nvidia.ch', + '||nvidia.co.jp', + '||nvidia.co.kr', + '||nvidia.com', + '||nvidia.com.au', + '||nvidia.com.br', + '||nvidia.com.tr', + '||nvidia.com.tw', + '||nvidia.cz', + '||nvidia.de', + '||nvidia.dk', + '||nvidia.es', + '||nvidia.eu', + '||nvidia.fi', + '||nvidia.fr', + '||nvidia.it', + '||nvidia.lu', + '||nvidia.nl', + '||nvidia.no', + '||nvidia.pl', + '||nvidia.ro', + '||nvidia.ru', + '||nvidia.se', + '||shotwithgeforce.com', + '||oracle', + '||oracle.com', + '||oraclecloud.com', + '||oraclefoundation.org', + '||oracleimg.com', + '||ateam-oracle.com', + '||bronto.com', + '||covid19-rx.org', + '||covid19rx.org', + '||sun.com', + '||razer.com', + '||razersupport.com', + '||razerzone.com', + '||razerzone.jp', + '||respawnbyrazer.com', + '||appcloud.com', + '||appexchange.com', + '||attic.io', + '||beyondcore.com', + '||buddymedia.com', + '||chatter.com', + '||cloudcraze.com', + '||cotweet.com', + '||data.com', + '||demandware.com', + '||desk.com', + '||documentforce.com', + '||dreamforce.com', + '||einstein.com', + '||exacttarget.com', + '||force.com', + '||govforce.com', + '||gravitytank.com', + '||heywire.com', + '||krux.com', + '||marketingcloud.com', + '||metamind.io', + '||pardot.com', + '||quotable.com', + '||radian6.com', + '||relateiq.com', + '||salesforce.com', + '||salesforce.org', + '||salesforceiq.com', + '||salesforceliveagent.com', + '||salesforcemarketingcloud.com', + '||sequence.com', + '||sfdcstatic.com', + '||sforce.com', + '||site.com', + '||social.com', + '||steelbrick.com', + '||twinprime.com', + '||weinvoiceit.com', + '||samsung', + '||xn--cg4bki', + '||galaxyappstore.com', + '||galaxymobile.jp', + '||game-platform.net', + '||knoxemm.com', + '||samsung.com', + '||samsungapps.com', + '||samsungcloud.com', + '||samsungdm.com', + '||samsunggalaxyfriends.com', + '||samsungknox.com', + '||samsungqbe.com', + '||sony', + '||ginzasonypark.jp', + '||sony-africa.com', + '||sony-asia.com', + '||sony-europe.com', + '||sony-hes.co.jp', + '||sony-latin.com', + '||sony-mea.com', + '||sony-olympus-medical.com', + '||sony-promotion.eu', + '||sony-semicon.co.jp', + '||sony.at', + '||sony.ba', + '||sony.be', + '||sony.bg', + '||sony.ca', + '||sony.ch', + '||sony.cl', + '||sony.co.cr', + '||sony.co.id', + '||sony.co.in', + '||sony.co.jp', + '||sony.co.kr', + '||sony.co.nz', + '||sony.co.th', + '||sony.co.uk', + '||sony.com', + '||sony.com.ar', + '||sony.com.au', + '||sony.com.bo', + '||sony.com.br', + '||sony.com.co', + '||sony.com.do', + '||sony.com.ec', + '||sony.com.gt', + '||sony.com.hk', + '||sony.com.hn', + '||sony.com.mk', + '||sony.com.mx', + '||sony.com.my', + '||sony.com.ni', + '||sony.com.pa', + '||sony.com.pe', + '||sony.com.ph', + '||sony.com.sg', + '||sony.com.sv', + '||sony.com.tr', + '||sony.com.tw', + '||sony.com.vn', + '||sony.cz', + '||sony.de', + '||sony.dk', + '||sony.ee', + '||sony.es', + '||sony.eu', + '||sony.fi', + '||sony.fr', + '||sony.gr', + '||sony.hr', + '||sony.hu', + '||sony.ie', + '||sony.it', + '||sony.kz', + '||sony.lt', + '||sony.lu', + '||sony.lv', + '||sony.net', + '||sony.nl', + '||sony.no', + '||sony.pl', + '||sony.pt', + '||sony.ro', + '||sony.rs', + '||sony.ru', + '||sony.se', + '||sony.si', + '||sony.sk', + '||sony.ua', + '||sonybo.co.jp', + '||sonybsc.com', + '||sonybuilding.jp', + '||sonydesign.com', + '||sonydna.com', + '||sonyglobalsolutions.jp', + '||sonykigyo.jp', + '||sonylatvija.com', + '||sonypcl.jp', + '||sonyprotechnosupport.co.jp', + '||sonystoragemedia.co.jp', + '||sonytc.co.jp', + '||sovec.net', + '||spacex.com', + '||boringcompany.com', + '||x.com', + '||ads-twitter.com', + '||periscope.tv', + '||pscp.tv', + '||t.co', + '||tellapart.com', + '||tweetdeck.com', + '||twimg.com', + '||twitpic.com', + '||twitter.com', + '||twitter.jp', + '||twitterinc.com', + '||twitteroauth.com', + '||twitterstat.us', + '||twtrdns.net', + '||vine.co', + '||uber-assets.com', + '||uber.com', + '||ubereats.com', + '||oath.cloud', + '||oath.com', + '||ouroath.com', + '||static-verizon.com', + '||verizon.com', + '||verizon.net', + '||verizonbusinessfios.com', + '||verizonenterprise.com', + '||verizonfios.com', + '||verizonmedia.com', + '||verizonwireless.com', + '||vzw.com', + '||xo.com', + '||mvk.com', + '||userapi.com', + '||vk-cdn.me', + '||vk-portal.net', + '||vk.cc', + '||vk.com', + '||vk.design', + '||vk.link', + '||vk.me', + '||vkcache.com', + '||vkgo.app', + '||vklive.app', + '||vkmessenger.com', + '||vkmessenger.app', + '||vkontakte.ru', + '||vkuseraudio.com', + '||vkuserlive.net', + '||vkuservideo.com', + '||vkuservideo.net', + '||g-technology.com', + '||sandisk.ae', + '||sandisk.it', + '||sandisk.co.jp', + '||sandisk.co.kr', + '||sandisk.co.uk', + '||sandisk.com', + '||sandisk.com.au', + '||sandisk.com.br', + '||sandisk.com.tr', + '||sandisk.com.tw', + '||sandisk.de', + '||sandisk.es', + '||sandisk.fr', + '||sandisk.hk', + '||sandisk.id', + '||sandisk.in', + '||sandisk.nl', + '||sandisk.sg', + '||wd.com', + '||wdc.com', + '||westerndigital.com', + '||flickr', + '||flickr.com', + '||flickr.net', + '||staticflickr.com', + '||ads.yahoo.com', + '||gemini.yahoo.com', + '||ysm.yahoo.com', + '||yahoo', + '||yahoo.ae', + '||yahoo.am', + '||yahoo.as', + '||yahoo.at', + '||yahoo.az', + '||yahoo.ba', + '||yahoo.be', + '||yahoo.bg', + '||yahoo.bi', + '||yahoo.bs', + '||yahoo.bt', + '||yahoo.by', + '||yahoo.ca', + '||yahoo.cat', + '||yahoo.cd', + '||yahoo.cg', + '||yahoo.ch', + '||yahoo.cl', + '||yahoo.cm', + '||yahoo.co.ao', + '||yahoo.co.bw', + '||yahoo.co.ck', + '||yahoo.co.cr', + '||yahoo.co.id', + '||yahoo.co.il', + '||yahoo.co.in', + '||yahoo.co.jp', + '||yahoo.co.kr', + '||yahoo.co.mz', + '||yahoo.co.nz', + '||yahoo.co.th', + '||yahoo.co.tz', + '||yahoo.co.uk', + '||yahoo.co.uz', + '||yahoo.co.ve', + '||yahoo.co.vi', + '||yahoo.co.za', + '||yahoo.com', + '||yahoo.com.af', + '||yahoo.com.ag', + '||yahoo.com.ai', + '||yahoo.com.ar', + '||yahoo.com.au', + '||yahoo.com.bd', + '||yahoo.com.bo', + '||yahoo.com.br', + '||yahoo.com.bz', + '||yahoo.com.co', + '||yahoo.com.do', + '||yahoo.com.ec', + '||yahoo.com.eg', + '||yahoo.com.es', + '||yahoo.com.fj', + '||yahoo.com.gi', + '||yahoo.com.gt', + '||yahoo.com.hk', + '||yahoo.com.kw', + '||yahoo.com.lb', + '||yahoo.com.ly', + '||yahoo.com.mt', + '||yahoo.com.mx', + '||yahoo.com.my', + '||yahoo.com.na', + '||yahoo.com.nf', + '||yahoo.com.om', + '||yahoo.com.pa', + '||yahoo.com.pe', + '||yahoo.com.ph', + '||yahoo.com.pk', + '||yahoo.com.pr', + '||yahoo.com.py', + '||yahoo.com.sa', + '||yahoo.com.sb', + '||yahoo.com.sg', + '||yahoo.com.sv', + '||yahoo.com.tj', + '||yahoo.com.tr', + '||yahoo.com.tw', + '||yahoo.com.ua', + '||yahoo.com.uy', + '||yahoo.com.vc', + '||yahoo.com.vn', + '||yahoo.cz', + '||yahoo.de', + '||yahoo.dj', + '||yahoo.dk', + '||yahoo.dm', + '||yahoo.ee', + '||yahoo.es', + '||yahoo.fi', + '||yahoo.fm', + '||yahoo.fr', + '||yahoo.ge', + '||yahoo.gg', + '||yahoo.gl', + '||yahoo.gm', + '||yahoo.gp', + '||yahoo.gr', + '||yahoo.gy', + '||yahoo.hk', + '||yahoo.hr', + '||yahoo.hu', + '||yahoo.ie', + '||yahoo.im', + '||yahoo.in', + '||yahoo.is', + '||yahoo.it', + '||yahoo.je', + '||yahoo.jo', + '||yahoo.la', + '||yahoo.lt', + '||yahoo.lu', + '||yahoo.lv', + '||yahoo.md', + '||yahoo.me', + '||yahoo.mk', + '||yahoo.mw', + '||yahoo.mx', + '||yahoo.net', + '||yahoo.nl', + '||yahoo.no', + '||yahoo.nu', + '||yahoo.ph', + '||yahoo.pl', + '||yahoo.pn', + '||yahoo.ps', + '||yahoo.pt', + '||yahoo.ro', + '||yahoo.ru', + '||yahoo.rw', + '||yahoo.se', + '||yahoo.sg', + '||yahoo.sh', + '||yahoo.si', + '||yahoo.sk', + '||yahoo.sm', + '||yahoo.sn', + '||yahoo.so', + '||yahoo.sr', + '||yahoo.st', + '||yahoo.tg', + '||yahoo.tk', + '||yahoo.tl', + '||yahoo.tm', + '||yahoo.tn', + '||yahoo.vg', + '||yahoo.ws', + '||maktoob.com', + '||myguide.hk', + '||yahoo-news.com.hk', + '||yahooapis.com', + '||yahoodns.net', + '||yahoofinance.com', + '||yahoohealth.com', + '||yahoomusic.com', + '||yahoosportsbook.com', + '||yho.com', + '||yimg.com', + '||ymail.com', + '||xn--d1acpjx3f.xn--p1ai', + '||yandex.az', + '||yandex.by', + '||yandex.co.il', + '||yandex.com', + '||yandex.com.am', + '||yandex.com.ge', + '||yandex.com.tr', + '||yandex.ee', + '||yandex.kg', + '||yandex.kz', + '||yandex.lt', + '||yandex.lv', + '||yandex.md', + '||yandex.net', + '||yandex.ru', + '||yandex.st', + '||yandex.sx', + '||yandex.tj', + '||yandex.tm', + '||yandex.ua', + '||yandex.uz', + '||yandexcloud.net', + '||yastatic.net', + '||yandex', + '||928.plus', + '||zind.cloud', + '||aaex.uk', + '||amytele.com', + '||ark.to', + '||baicaonetwork.com', + '||bighead.group', + '||blinkload.zone', + '||boslife.biz', + '||boslife.net', + '||cloudn.me', + '||conair.me', + '||cordcloud.org', + '||ctyun.online', + '||cylink.pro', + '||cylink0122.icu', + '||dlercloud.com', + '||dlercloud.org', + '||dlercloud.me', + '||dleris.best', + '||duyaoss.com', + '||duyaossr.com', + '||hitun.io', + '||xn--90wwvt03e.com', + '||justmysocks.net', + '||justmysocks1.net', + '||justmysocks2.net', + '||justmysocks4.net', + '||maying.co', + '||xn--i2ru8q2qg.com', + '||mocloudplus.com', + '||mray.club', + '||muncloud.dog', + '||n3ro.fun', + '||n3ro.live', + '||n3ro.net', + '||nexitally.com', + '||nexitallysafe.com', + '||nexitcore.com', + '||paofu.cloud', + '||paofuyun.me', + '||renzhe.cloud', + '||rixcloud.com', + '||shadowsocks.com', + '||shadowsocks.nl', + '||squirrelvpn.com', + '||squirrelgroup.net', + '||ssplive.pw', + '||china-internet-exchange.com', + '||cxkcloud.com', + '||ssrcloud.com', + '||ssrcloud.org', + '||ssrpass.pw', + '||stc-server.com', + '||surflite.co', + '||surflite.net', + '||vilavpn.com', + '||vilavpn.xyz', + '||vilavpn1.xyz', + '||vilavpn2.xyz', + '||vilavpn3.xyz', + '||vilavpn4.xyz', + '||vilavpn5.xyz', + '||vilavpn6.xyz', + '||vilavpn7.xyz', + '||cursecdn.com', + '||fandom.com', + '||wikia.com', + '||wikia.org', + '||dndbeyond.com', + '||futhead.com', + '||gamepedia.com', + '||muthead.com', + '||wikia.nocookie.net', + '|http://fandom.zendesk.com', + '|https://fandom.zendesk.com', + '||miraheze.org', + '||scp-wiki.net', + '||scpdb.org', + '||scpwiki.com', + '||translatewiki.net', + '||translatewiki.org', + '||wdfiles.com', + '||wikidot.com', + '||wikihow.com', + '||mediawiki.org', + '||wikibooks.org', + '||wikidata.org', + '||wikimediafoundation.org', + '||wikimedia.org', + '||wikinews.org', + '||wikipedia.org', + '||wikiquote.org', + '||wikisource.org', + '||wikiversity.org', + '||wikivoyage.org', + '||wiktionary.org', + '||wmfusercontent.org', + '||w.wiki', + '||toolforge.org', + '||wikimediacloud.org', + '||wmcloud.org', + '||wmflabs.org', + '||famifun.com.tw', + '||family.co.jp', + '||family.com.tw', + '||familymart.com.my', + '||familymart.com.ph', + '||famima.vn', + '||hkedcity.net', + '||hkreadingcity.net', + '||huanghuagang.org', + '||mcd', + '||mcdonalds', + '||aboutmcdonalds.com', + '||happymeal.co.nz', + '||happymeal.com.au', + '||mcd.com', + '||mcdelivery.co.id', + '||mcdelivery.co.kr', + '||mcdelivery.com.au', + '||mcdelivery.com.my', + '||mcdelivery.com.sg', + '||mcdelivery.com.tw', + '||mcdindonesia.com', + '||mcdonalds.ca', + '||mcdonalds.co.uk', + '||mcdonalds.com', + '||mcdonalds.com.hk', + '||mcdonalds.hk', + '||mcdonalds.it', + '||mcdonalds.no', + '||mcdonalds.se', + '||mcdonaldsarabia.com', + '||mcdonaldsparties.co.nz', + '||mcdonaldsparties.com.au', + '||xn--qhrx81fxh2a.xn--55qx5d.hk', + '||rarbg.me', + '||rarbg.to', + '||rarbg.is', + '||rarbgaccess.org', + '||rarbggo.org', + '||rarbgmirror.com', + '||rarbgmirror.org', + '||rarbgproxy.org', + '||rarbgprx.org', + '||rarbgunblock.com', + '||aerogard.com.au', + '||aerogardcn.com', + '||airwick.at', + '||airwick.be', + '||airwick.ca', + '||airwick.ch', + '||airwick.cl', + '||airwick.co.in', + '||airwick.co.nz', + '||airwick.co.uk', + '||airwick.co.za', + '||airwick.com', + '||airwick.com.au', + '||airwick.com.br', + '||airwick.com.mx', + '||airwick.com.tr', + '||airwick.cz', + '||airwick.de', + '||airwick.dk', + '||airwick.es', + '||airwick.fi', + '||airwick.fr', + '||airwick.hr', + '||airwick.hu', + '||airwick.ie', + '||airwick.it', + '||airwick.jp', + '||airwick.net', + '||airwick.nl', + '||airwick.no', + '||airwick.pl', + '||airwick.pt', + '||airwick.ro', + '||airwick.ru', + '||airwick.se', + '||airwick.si', + '||airwick.sk', + '||airwick.tv', + '||airwick.us', + '||airwickarabia.com', + '||vipoo.es', + '||calgon.at', + '||calgon.be', + '||calgon.ch', + '||calgon.co.uk', + '||calgon.com', + '||calgon.com.tr', + '||calgon.de', + '||calgon.es', + '||calgon.fr', + '||calgon.ie', + '||calgon.it', + '||calgon.nl', + '||calgon.pt', + '||calgon.ru', + '||calgon.tv', + '||calgoncarbon-china.com', + '||calgoncarbon.com', + '||calgonit.com', + '||clearasil.us', + '||dettol-prize.com', + '||dettol.at', + '||dettol.be', + '||dettol.ch', + '||dettol.cl', + '||dettol.co.id', + '||dettol.co.in', + '||dettol.co.ke', + '||dettol.co.nz', + '||dettol.co.uk', + '||dettol.com', + '||dettol.com.au', + '||dettol.com.bd', + '||dettol.com.br', + '||dettol.com.eg', + '||dettol.com.hk', + '||dettol.com.my', + '||dettol.com.ng', + '||dettol.com.sg', + '||dettol.cz', + '||dettol.fr', + '||dettol.hu', + '||dettol.ie', + '||dettol.net', + '||dettol.nl', + '||dettol.pk', + '||dettol.pl', + '||dettol.pt', + '||dettol.ru', + '||dettolarabia.com', + '||dettolcleannaija.com', + '||dettolsitishield.co.in', + '||dettolthailand.com', + '||espadoldettol.com.ar', + '||dewitwithdurex.com', + '||dotherex.com', + '||durex-shop.ch', + '||durex-shopline.com', + '||durex-slovenia.si', + '||durex.at', + '||durex.be', + '||durex.cl', + '||durex.co.id', + '||durex.co.il', + '||durex.co.nz', + '||durex.co.th', + '||durex.co.uk', + '||durex.co.za', + '||durex.com', + '||durex.com.au', + '||durex.com.bd', + '||durex.com.co', + '||durex.com.hr', + '||durex.com.my', + '||durex.com.ng', + '||durex.com.pe', + '||durex.com.ph', + '||durex.com.pk', + '||durex.com.sg', + '||durex.com.tr', + '||durex.cz', + '||durex.de', + '||durex.dk', + '||durex.ee', + '||durex.es', + '||durex.fi', + '||durex.fr', + '||durex.hu', + '||durex.ie', + '||durex.it', + '||durex.jp', + '||durex.lv', + '||durex.mx', + '||durex.nl', + '||durex.no', + '||durex.pl', + '||durex.pt', + '||durex.ro', + '||durex.ru', + '||durex.se', + '||durex.us', + '||durexcam.com', + '||durexcanada.com', + '||durexchina.com', + '||durexindia.com', + '||durexloveclub.com', + '||durexukraine.com', + '||durexusa.com', + '||lovesexdurex.com', + '||playbydurex.com', + '||shopdurex.com', + '||trydurex.net', + '||trydurex.tv', + '||bebepremium3.com.bo', + '||enfa.co.id', + '||enfa.com.vn', + '||enfaaplus.com', + '||enfababy.com', + '||enfabebe.com', + '||enfabebe.com.br', + '||enfabebe.com.co', + '||enfabebe.com.do', + '||enfabebe.com.ec', + '||enfabebe.com.mx', + '||enfabebe.com.pe', + '||enfabebe.com.ve', + '||enfabebe3.com.ar', + '||enfagrow.co.in', + '||enfagrow.com.bn', + '||enfagrow.com.my', + '||enfagrow.com.ph', + '||enfagrow.com.sg', + '||enfagrow4.com', + '||enfamama.com.ar', + '||enfamama.com.ph', + '||enfamil.ca', + '||enfamil.com', + '||enfamil.es', + '||enfamil.pl', + '||enfamil.pt', + '||enfasmart.com', + '||enspireformula.com', + '||nutramigen.net', + '||nutramigen.pl', + '||finish.at', + '||finish.bg', + '||finish.co.kr', + '||finish.co.nz', + '||finish.co.uk', + '||finish.co.za', + '||finish.com.hr', + '||finish.com.tr', + '||finish.de', + '||finish.es', + '||finish.fr', + '||finish.gr', + '||finish.hu', + '||finish.lv', + '||finish.pl', + '||finish.pt', + '||finish.ro', + '||finish.si', + '||finish.sk', + '||finisharabia.com', + '||finishbrasil.com.br', + '||finishdishwashing.ca', + '||finishdishwashing.com', + '||finishinfo.be', + '||finishinfo.cl', + '||finishinfo.com', + '||finishinfo.com.ar', + '||finishinfo.com.au', + '||finishinfo.cz', + '||finishinfo.fi', + '||finishinfo.it', + '||finishinfo.jp', + '||finishinfo.nl', + '||finishinfo.no', + '||finishinfo.ru', + '||finishinfo.se', + '||finishkilpailu.fi', + '||finishwin.be', + '||yarininsuyu.com', + '||lizol.co.in', + '||lysol.ca', + '||lysol.cl', + '||lysol.co.cr', + '||lysol.com', + '||lysol.com.mx', + '||lysol.net', + '||meadjohnson.com', + '||meadjohnson.com.hk', + '||meadjohnson.com.tw', + '||meadjohnson.net', + '||mortein.co.in', + '||mortein.co.nz', + '||mortein.co.za', + '||mortein.com', + '||mortein.com.au', + '||mortein.com.br', + '||mortein.com.ng', + '||mortein.com.pk', + '||morteincam.com', + '||pifpafarabia.com', + '||keepmovingwithmovefree.com', + '||move-free.net', + '||movefrees.com', + '||movefreeoffers.com', + '||movefreerewards.com', + '||schiffvitamins.com', + '||mucinex.ca', + '||mucinex.cn', + '||mucinex.co.nz', + '||mucinex.com', + '||mucinex.com.cn', + '||mucinex.net', + '||mucinex.tv', + '||mucinexprofessional.com', + '||nurofen.at', + '||nurofen.bg', + '||nurofen.co.il', + '||nurofen.co.nz', + '||nurofen.co.uk', + '||nurofen.co.za', + '||nurofen.com', + '||nurofen.com.au', + '||nurofen.com.sg', + '||nurofen.cz', + '||nurofen.de', + '||nurofen.es', + '||nurofen.fr', + '||nurofen.hr', + '||nurofen.hu', + '||nurofen.ie', + '||nurofen.it', + '||nurofen.net', + '||nurofen.no', + '||nurofen.pl', + '||nurofen.pt', + '||nurofen.ro', + '||nurofen.sk', + '||nurofen.ru', + '||nurofengel.com', + '|http://nurofensk-prod-env.eu-west-1.elasticbeanstalk.com', + '|https://nurofensk-prod-env.eu-west-1.elasticbeanstalk.com', + '||cepacol.ca', + '||cepacol.com', + '||dobendan.de', + '||graneodin.com.mx', + '||repsils.no', + '||strepsils.at', + '||strepsils.ch', + '||strepsils.co.kr', + '||strepsils.co.nz', + '||strepsils.co.za', + '||strepsils.com.ar', + '||strepsils.com.br', + '||strepsils.com.co', + '||strepsils.com.au', + '||strepsils.com.hk', + '||strepsils.com.ph', + '||strepsils.com.tw', + '||strepsils.es', + '||strepsils.fi', + '||strepsils.fr', + '||strepsils.hr', + '||strepsils.hu', + '||strepsils.ie', + '||strepsils.net', + '||strepsils.pl', + '||strepsils.pt', + '||strepsils.ro', + '||strepsils.ru', + '||strepsils.si', + '||strepsils.us', + '||strepsilsarabia.com', + '||o2action.co.kr', + '||powerofresolve.ca', + '||powerofresolve.com', + '||spraynwash.com', + '||vanish.at', + '||vanish.be', + '||vanish.ch', + '||vanish.cl', + '||vanish.co.id', + '||vanish.co.il', + '||vanish.co.in', + '||vanish.co.nz', + '||vanish.co.uk', + '||vanish.co.za', + '||vanish.com.ar', + '||vanish.com.br', + '||vanish.com.co', + '||vanish.com.hr', + '||vanish.com.mx', + '||vanish.com.my', + '||vanish.com.pe', + '||vanish.com.sg', + '||vanish.com.tr', + '||vanish.de', + '||vanish.dk', + '||vanish.es', + '||vanish.fi', + '||vanish.fr', + '||vanish.hu', + '||vanish.ie', + '||vanish.it', + '||vanish.nl', + '||vanish.no', + '||vanish.pl', + '||vanish.pt', + '||vanish.ro', + '||vanish.ru', + '||vanish.se', + '||vanish.si', + '||vanish.sk', + '||vanisharabia.com', + '||vanishbancaseulook.com.br', + '||vanishcentroamerica.com', + '||vanishinfo.cz', + '||vanishstains.com', + '||vanishstains.com.au', + '||veet.at', + '||veet.be', + '||veet.ca', + '||veet.ch', + '||veet.cl', + '||veet.co.id', + '||veet.co.in', + '||veet.co.kr', + '||veet.co.nz', + '||veet.co.uk', + '||veet.co.za', + '||veet.com', + '||veet.com.ar', + '||veet.com.au', + '||veet.com.bd', + '||veet.com.br', + '||veet.com.co', + '||veet.com.hk', + '||veet.com.mx', + '||veet.com.my', + '||veet.com.ph', + '||veet.com.pk', + '||veet.com.sg', + '||veet.com.tr', + '||veet.de', + '||veet.dk', + '||veet.es', + '||veet.fi', + '||veet.fr', + '||veet.hu', + '||veet.jp', + '||veet.nl', + '||veet.no', + '||veet.pt', + '||veet.ro', + '||veet.ru', + '||veet.se', + '||veet.tv', + '||veet.us', + '||veetarabia.com', + '||veetbangladesh.com', + '||veetcentroamerica.com', + '||veetclub.it', + '||woolite.ca', + '||woolite.com', + '||woolite.pl', + '||woolite.us', + '||woolitecarpet.com', + '||digital-rb.com', + '||rb-crisis.com', + '||rb.com', + '||rb.net', + '||rbbusinessshop.com', + '||rbdigitalab.com', + '||rbdigitallab.com', + '||rbeuroinfo.com', + '||rbgrads.com', + '||rbgraduates.com', + '||rbmavericks.com', + '||rbnainternational.com', + '||rbplc.com', + '||rbrandlibrary.com', + '||rbspeakup.com', + '||reckitt.net', + '||reckittbenckiser.com', + '||reckittbenckiser.net', + '||reckittbenckiser.tv', + '||reckittprofessional.com', + '||starbucks.ca', + '||starbucks.co.uk', + '||starbucks.com', + '||starbucks.de', + '||starbucks.fr', + '||starbucks.ie', + '||tsquare.tv', + '||windy.com', + '||xdty.org', + '||xingrz.me' +] +/* eslint-disable */ +// Was generated by gfwlist2pac in precise mode +// https://github.com/clowwindy/gfwlist2pac + +// 2019-10-06: More 'javascript' way to interaction with main program +// 2019-02-08: Updated to support shadowsocks-windows user rules. + +var proxy = __PROXY__; +var userrules = []; +var rules = []; + +// convert to abp grammar +for (var i = 0; i < __RULES__.length; i++) { + var s = __RULES__[i]; + if (s.substring(0, 2) == "||") s += "^"; + rules.push(s); +} + +for (var i = 0; i < __USERRULES__.length; i++) { + var s = __USERRULES__[i]; + if (s.substring(0, 2) == "||") s += "^"; + userrules.push(s); +} + +/* +* This file is part of Adblock Plus , +* Copyright (C) 2006-2014 Eyeo GmbH +* +* Adblock Plus is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License version 3 as +* published by the Free Software Foundation. +* +* Adblock Plus is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with Adblock Plus. If not, see . +*/ + +function createDict() { + var result = {}; + result.__proto__ = null; + return result; +} + +function getOwnPropertyDescriptor(obj, key) { + if (obj.hasOwnProperty(key)) { + return obj[key]; + } + return null; +} + +function extend(subclass, superclass, definition) { + if (Object.__proto__) { + definition.__proto__ = superclass.prototype; + subclass.prototype = definition; + } else { + var tmpclass = function () { + }, ret; + tmpclass.prototype = superclass.prototype; + subclass.prototype = new tmpclass(); + subclass.prototype.constructor = superclass; + for (var i in definition) { + if (definition.hasOwnProperty(i)) { + subclass.prototype[i] = definition[i]; + } + } + } +} + +function Filter(text) { + this.text = text; + this.subscriptions = []; +} + +Filter.prototype = { + text: null, + subscriptions: null, + toString: function () { + return this.text; + } +}; +Filter.knownFilters = createDict(); +Filter.elemhideRegExp = /^([^\/\*\|\@"!]*?)#(\@)?(?:([\w\-]+|\*)((?:\([\w\-]+(?:[$^*]?=[^\(\)"]*)?\))*)|#([^{}]+))$/; +Filter.regexpRegExp = /^(@@)?\/.*\/(?:\$~?[\w\-]+(?:=[^,\s]+)?(?:,~?[\w\-]+(?:=[^,\s]+)?)*)?$/; +Filter.optionsRegExp = /\$(~?[\w\-]+(?:=[^,\s]+)?(?:,~?[\w\-]+(?:=[^,\s]+)?)*)$/; +Filter.fromText = function (text) { + if (text in Filter.knownFilters) { + return Filter.knownFilters[text]; + } + var ret; + if (text.charAt(0) == "!") { + ret = new CommentFilter(text); + } else { + ret = RegExpFilter.fromText(text); + } + Filter.knownFilters[ret.text] = ret; + return ret; +}; + +function InvalidFilter(text, reason) { + Filter.call(this, text); + this.reason = reason; +} + +extend(InvalidFilter, Filter, { + reason: null +}); + +function CommentFilter(text) { + Filter.call(this, text); +} + +extend(CommentFilter, Filter, {}); + +function ActiveFilter(text, domains) { + Filter.call(this, text); + this.domainSource = domains; +} + +extend(ActiveFilter, Filter, { + domainSource: null, + domainSeparator: null, + ignoreTrailingDot: true, + domainSourceIsUpperCase: false, + getDomains: function () { + var prop = getOwnPropertyDescriptor(this, "domains"); + if (prop) { + return prop; + } + var domains = null; + if (this.domainSource) { + var source = this.domainSource; + if (!this.domainSourceIsUpperCase) { + source = source.toUpperCase(); + } + var list = source.split(this.domainSeparator); + if (list.length == 1 && (list[0]).charAt(0) != "~") { + domains = createDict(); + domains[""] = false; + if (this.ignoreTrailingDot) { + list[0] = list[0].replace(/\.+$/, ""); + } + domains[list[0]] = true; + } else { + var hasIncludes = false; + for (var i = 0; i < list.length; i++) { + var domain = list[i]; + if (this.ignoreTrailingDot) { + domain = domain.replace(/\.+$/, ""); + } + if (domain == "") { + continue; + } + var include; + if (domain.charAt(0) == "~") { + include = false; + domain = domain.substr(1); + } else { + include = true; + hasIncludes = true; + } + if (!domains) { + domains = createDict(); + } + domains[domain] = include; + } + domains[""] = !hasIncludes; + } + this.domainSource = null; + } + return this.domains; + }, + sitekeys: null, + isActiveOnDomain: function (docDomain, sitekey) { + if (this.getSitekeys() && (!sitekey || this.getSitekeys().indexOf(sitekey.toUpperCase()) < 0)) { + return false; + } + if (!this.getDomains()) { + return true; + } + if (!docDomain) { + return this.getDomains()[""]; + } + if (this.ignoreTrailingDot) { + docDomain = docDomain.replace(/\.+$/, ""); + } + docDomain = docDomain.toUpperCase(); + while (true) { + if (docDomain in this.getDomains()) { + return this.domains[docDomain]; + } + var nextDot = docDomain.indexOf("."); + if (nextDot < 0) { + break; + } + docDomain = docDomain.substr(nextDot + 1); + } + return this.domains[""]; + }, + isActiveOnlyOnDomain: function (docDomain) { + if (!docDomain || !this.getDomains() || this.getDomains()[""]) { + return false; + } + if (this.ignoreTrailingDot) { + docDomain = docDomain.replace(/\.+$/, ""); + } + docDomain = docDomain.toUpperCase(); + for (var domain in this.getDomains()) { + if (this.domains[domain] && domain != docDomain && (domain.length <= docDomain.length || domain.indexOf("." + docDomain) != domain.length - docDomain.length - 1)) { + return false; + } + } + return true; + } +}); + +function RegExpFilter(text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys) { + ActiveFilter.call(this, text, domains, sitekeys); + if (contentType != null) { + this.contentType = contentType; + } + if (matchCase) { + this.matchCase = matchCase; + } + if (thirdParty != null) { + this.thirdParty = thirdParty; + } + if (sitekeys != null) { + this.sitekeySource = sitekeys; + } + if (regexpSource.length >= 2 && regexpSource.charAt(0) == "/" && regexpSource.charAt(regexpSource.length - 1) == "/") { + var regexp = new RegExp(regexpSource.substr(1, regexpSource.length - 2), this.matchCase ? "" : "i"); + this.regexp = regexp; + } else { + this.regexpSource = regexpSource; + } +} + +extend(RegExpFilter, ActiveFilter, { + domainSourceIsUpperCase: true, + length: 1, + domainSeparator: "|", + regexpSource: null, + getRegexp: function () { + var prop = getOwnPropertyDescriptor(this, "regexp"); + if (prop) { + return prop; + } + var source = this.regexpSource.replace(/\*+/g, "*").replace(/\^\|$/, "^").replace(/\W/g, "\\$&").replace(/\\\*/g, ".*").replace(/\\\^/g, "(?:[\\x00-\\x24\\x26-\\x2C\\x2F\\x3A-\\x40\\x5B-\\x5E\\x60\\x7B-\\x7F]|$)").replace(/^\\\|\\\|/, "^[\\w\\-]+:\\/+(?!\\/)(?:[^\\/]+\\.)?").replace(/^\\\|/, "^").replace(/\\\|$/, "$").replace(/^(\.\*)/, "").replace(/(\.\*)$/, ""); + var regexp = new RegExp(source, this.matchCase ? "" : "i"); + this.regexp = regexp; + return regexp; + }, + contentType: 2147483647, + matchCase: false, + thirdParty: null, + sitekeySource: null, + getSitekeys: function () { + var prop = getOwnPropertyDescriptor(this, "sitekeys"); + if (prop) { + return prop; + } + var sitekeys = null; + if (this.sitekeySource) { + sitekeys = this.sitekeySource.split("|"); + this.sitekeySource = null; + } + this.sitekeys = sitekeys; + return this.sitekeys; + }, + matches: function (location, contentType, docDomain, thirdParty, sitekey) { + if (this.getRegexp().test(location) && this.isActiveOnDomain(docDomain, sitekey)) { + return true; + } + return false; + } +}); +RegExpFilter.prototype["0"] = "#this"; +RegExpFilter.fromText = function (text) { + var blocking = true; + var origText = text; + if (text.indexOf("@@") == 0) { + blocking = false; + text = text.substr(2); + } + var contentType = null; + var matchCase = null; + var domains = null; + var sitekeys = null; + var thirdParty = null; + var collapse = null; + var options; + var match = text.indexOf("$") >= 0 ? Filter.optionsRegExp.exec(text) : null; + if (match) { + options = match[1].toUpperCase().split(","); + text = match.input.substr(0, match.index); + for (var _loopIndex6 = 0; _loopIndex6 < options.length; ++_loopIndex6) { + var option = options[_loopIndex6]; + var value = null; + var separatorIndex = option.indexOf("="); + if (separatorIndex >= 0) { + value = option.substr(separatorIndex + 1); + option = option.substr(0, separatorIndex); + } + option = option.replace(/-/, "_"); + if (option in RegExpFilter.typeMap) { + if (contentType == null) { + contentType = 0; + } + contentType |= RegExpFilter.typeMap[option]; + } else if (option.charAt(0) == "~" && option.substr(1) in RegExpFilter.typeMap) { + if (contentType == null) { + contentType = RegExpFilter.prototype.contentType; + } + contentType &= ~RegExpFilter.typeMap[option.substr(1)]; + } else if (option == "MATCH_CASE") { + matchCase = true; + } else if (option == "~MATCH_CASE") { + matchCase = false; + } else if (option == "DOMAIN" && typeof value != "undefined") { + domains = value; + } else if (option == "THIRD_PARTY") { + thirdParty = true; + } else if (option == "~THIRD_PARTY") { + thirdParty = false; + } else if (option == "COLLAPSE") { + collapse = true; + } else if (option == "~COLLAPSE") { + collapse = false; + } else if (option == "SITEKEY" && typeof value != "undefined") { + sitekeys = value; + } else { + return new InvalidFilter(origText, "Unknown option " + option.toLowerCase()); + } + } + } + if (!blocking && (contentType == null || contentType & RegExpFilter.typeMap.DOCUMENT) && (!options || options.indexOf("DOCUMENT") < 0) && !/^\|?[\w\-]+:/.test(text)) { + if (contentType == null) { + contentType = RegExpFilter.prototype.contentType; + } + contentType &= ~RegExpFilter.typeMap.DOCUMENT; + } + try { + if (blocking) { + return new BlockingFilter(origText, text, contentType, matchCase, domains, thirdParty, sitekeys, collapse); + } else { + return new WhitelistFilter(origText, text, contentType, matchCase, domains, thirdParty, sitekeys); + } + } catch (e) { + return new InvalidFilter(origText, e); + } +}; +RegExpFilter.typeMap = { + OTHER: 1, + SCRIPT: 2, + IMAGE: 4, + STYLESHEET: 8, + OBJECT: 16, + SUBDOCUMENT: 32, + DOCUMENT: 64, + XBL: 1, + PING: 1, + XMLHTTPREQUEST: 2048, + OBJECT_SUBREQUEST: 4096, + DTD: 1, + MEDIA: 16384, + FONT: 32768, + BACKGROUND: 4, + POPUP: 268435456, + ELEMHIDE: 1073741824 +}; +RegExpFilter.prototype.contentType &= ~(RegExpFilter.typeMap.ELEMHIDE | RegExpFilter.typeMap.POPUP); + +function BlockingFilter(text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys, collapse) { + RegExpFilter.call(this, text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys); + this.collapse = collapse; +} + +extend(BlockingFilter, RegExpFilter, { + collapse: null +}); + +function WhitelistFilter(text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys) { + RegExpFilter.call(this, text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys); +} + +extend(WhitelistFilter, RegExpFilter, {}); + +function Matcher() { + this.clear(); +} + +Matcher.prototype = { + filterByKeyword: null, + keywordByFilter: null, + clear: function () { + this.filterByKeyword = createDict(); + this.keywordByFilter = createDict(); + }, + add: function (filter) { + if (filter.text in this.keywordByFilter) { + return; + } + var keyword = this.findKeyword(filter); + var oldEntry = this.filterByKeyword[keyword]; + if (typeof oldEntry == "undefined") { + this.filterByKeyword[keyword] = filter; + } else if (oldEntry.length == 1) { + this.filterByKeyword[keyword] = [oldEntry, filter]; + } else { + oldEntry.push(filter); + } + this.keywordByFilter[filter.text] = keyword; + }, + remove: function (filter) { + if (!(filter.text in this.keywordByFilter)) { + return; + } + var keyword = this.keywordByFilter[filter.text]; + var list = this.filterByKeyword[keyword]; + if (list.length <= 1) { + delete this.filterByKeyword[keyword]; + } else { + var index = list.indexOf(filter); + if (index >= 0) { + list.splice(index, 1); + if (list.length == 1) { + this.filterByKeyword[keyword] = list[0]; + } + } + } + delete this.keywordByFilter[filter.text]; + }, + findKeyword: function (filter) { + var result = ""; + var text = filter.text; + if (Filter.regexpRegExp.test(text)) { + return result; + } + var match = Filter.optionsRegExp.exec(text); + if (match) { + text = match.input.substr(0, match.index); + } + if (text.substr(0, 2) == "@@") { + text = text.substr(2); + } + var candidates = text.toLowerCase().match(/[^a-z0-9%*][a-z0-9%]{3,}(?=[^a-z0-9%*])/g); + if (!candidates) { + return result; + } + var hash = this.filterByKeyword; + var resultCount = 16777215; + var resultLength = 0; + for (var i = 0, l = candidates.length; i < l; i++) { + var candidate = candidates[i].substr(1); + var count = candidate in hash ? hash[candidate].length : 0; + if (count < resultCount || count == resultCount && candidate.length > resultLength) { + result = candidate; + resultCount = count; + resultLength = candidate.length; + } + } + return result; + }, + hasFilter: function (filter) { + return filter.text in this.keywordByFilter; + }, + getKeywordForFilter: function (filter) { + if (filter.text in this.keywordByFilter) { + return this.keywordByFilter[filter.text]; + } else { + return null; + } + }, + _checkEntryMatch: function (keyword, location, contentType, docDomain, thirdParty, sitekey) { + var list = this.filterByKeyword[keyword]; + for (var i = 0; i < list.length; i++) { + var filter = list[i]; + if (filter == "#this") { + filter = list; + } + if (filter.matches(location, contentType, docDomain, thirdParty, sitekey)) { + return filter; + } + } + return null; + }, + matchesAny: function (location, contentType, docDomain, thirdParty, sitekey) { + var candidates = location.toLowerCase().match(/[a-z0-9%]{3,}/g); + if (candidates === null) { + candidates = []; + } + candidates.push(""); + for (var i = 0, l = candidates.length; i < l; i++) { + var substr = candidates[i]; + if (substr in this.filterByKeyword) { + var result = this._checkEntryMatch(substr, location, contentType, docDomain, thirdParty, sitekey); + if (result) { + return result; + } + } + } + return null; + } +}; + +function CombinedMatcher() { + this.blacklist = new Matcher(); + this.whitelist = new Matcher(); + this.resultCache = createDict(); +} + +CombinedMatcher.maxCacheEntries = 1000; +CombinedMatcher.prototype = { + blacklist: null, + whitelist: null, + resultCache: null, + cacheEntries: 0, + clear: function () { + this.blacklist.clear(); + this.whitelist.clear(); + this.resultCache = createDict(); + this.cacheEntries = 0; + }, + add: function (filter) { + if (filter instanceof WhitelistFilter) { + this.whitelist.add(filter); + } else { + this.blacklist.add(filter); + } + if (this.cacheEntries > 0) { + this.resultCache = createDict(); + this.cacheEntries = 0; + } + }, + remove: function (filter) { + if (filter instanceof WhitelistFilter) { + this.whitelist.remove(filter); + } else { + this.blacklist.remove(filter); + } + if (this.cacheEntries > 0) { + this.resultCache = createDict(); + this.cacheEntries = 0; + } + }, + findKeyword: function (filter) { + if (filter instanceof WhitelistFilter) { + return this.whitelist.findKeyword(filter); + } else { + return this.blacklist.findKeyword(filter); + } + }, + hasFilter: function (filter) { + if (filter instanceof WhitelistFilter) { + return this.whitelist.hasFilter(filter); + } else { + return this.blacklist.hasFilter(filter); + } + }, + getKeywordForFilter: function (filter) { + if (filter instanceof WhitelistFilter) { + return this.whitelist.getKeywordForFilter(filter); + } else { + return this.blacklist.getKeywordForFilter(filter); + } + }, + isSlowFilter: function (filter) { + var matcher = filter instanceof WhitelistFilter ? this.whitelist : this.blacklist; + if (matcher.hasFilter(filter)) { + return !matcher.getKeywordForFilter(filter); + } else { + return !matcher.findKeyword(filter); + } + }, + matchesAnyInternal: function (location, contentType, docDomain, thirdParty, sitekey) { + var candidates = location.toLowerCase().match(/[a-z0-9%]{3,}/g); + if (candidates === null) { + candidates = []; + } + candidates.push(""); + var blacklistHit = null; + for (var i = 0, l = candidates.length; i < l; i++) { + var substr = candidates[i]; + if (substr in this.whitelist.filterByKeyword) { + var result = this.whitelist._checkEntryMatch(substr, location, contentType, docDomain, thirdParty, sitekey); + if (result) { + return result; + } + } + if (substr in this.blacklist.filterByKeyword && blacklistHit === null) { + blacklistHit = this.blacklist._checkEntryMatch(substr, location, contentType, docDomain, thirdParty, sitekey); + } + } + return blacklistHit; + }, + matchesAny: function (location, docDomain) { + var key = location + " " + docDomain + " "; + if (key in this.resultCache) { + return this.resultCache[key]; + } + var result = this.matchesAnyInternal(location, 0, docDomain, null, null); + if (this.cacheEntries >= CombinedMatcher.maxCacheEntries) { + this.resultCache = createDict(); + this.cacheEntries = 0; + } + this.resultCache[key] = result; + this.cacheEntries++; + return result; + } +}; + +var userrulesMatcher = new CombinedMatcher(); +var defaultMatcher = new CombinedMatcher(); + +var direct = 'DIRECT;'; + +for (var i = 0; i < userrules.length; i++) { + userrulesMatcher.add(Filter.fromText(userrules[i])); +} + +for (var i = 0; i < rules.length; i++) { + defaultMatcher.add(Filter.fromText(rules[i])); +} + +function FindProxyForURL(url, host) { + if (userrulesMatcher.matchesAny(url, host) instanceof BlockingFilter) { + return proxy; + } + if (userrulesMatcher.matchesAny(url, host) instanceof WhitelistFilter) { + return direct; + } + // Hack for Geosite, it provides a whitelist... + if (defaultMatcher.matchesAny(url, host) instanceof WhitelistFilter) { + return direct; + } + if (defaultMatcher.matchesAny(url, host) instanceof BlockingFilter) { + return proxy; + } + return direct; +} + +export default { + FindProxyForURL +} \ No newline at end of file diff --git a/packages/core/src/modules/server/index.js b/packages/core/src/modules/server/index.js index ae042822..3678e979 100644 --- a/packages/core/src/modules/server/index.js +++ b/packages/core/src/modules/server/index.js @@ -27,7 +27,7 @@ const serverApi = { return this.close() } }, - async start ({ mitmproxyPath }) { + async start ({ mitmproxyPath, plugins }) { const allConfig = config.get() const serverConfig = lodash.cloneDeep(allConfig.server) @@ -37,6 +37,9 @@ const serverApi = { if (allConfig.plugin) { lodash.each(allConfig.plugin, (value) => { const plugin = value + if (!plugin.enabled) { + return + } if (plugin.intercepts) { lodash.merge(intercepts, plugin.intercepts) } @@ -45,6 +48,14 @@ const serverApi = { } }) } + + for (const key in plugins) { + const plugin = plugins[key] + if (plugin.overrideRunningConfig) { + plugin.overrideRunningConfig(serverConfig) + } + } + serverConfig.plugin = allConfig.plugin // fireStatus('ing') // 启动中 const basePath = serverConfig.setting.userBasePath const runningConfig = basePath + '/running.json' diff --git a/packages/core/src/shell/scripts/set-system-proxy/index.js b/packages/core/src/shell/scripts/set-system-proxy/index.js index e3f2e73e..1800ea31 100644 --- a/packages/core/src/shell/scripts/set-system-proxy/index.js +++ b/packages/core/src/shell/scripts/set-system-proxy/index.js @@ -3,11 +3,12 @@ */ const Shell = require('../../shell') const execute = Shell.execute +const execFile = Shell.execFile const Registry = require('winreg') -// const cmd = require('node-cmd') const refreshInternetPs = require('./refresh-internet') const PowerShell = require('node-powershell') const log = require('../../../utils/util.log') +const path = require('path') const _lanIP = [ 'localhost', '127.*', @@ -33,6 +34,12 @@ const _lanIP = [ ] async function _winUnsetProxy (exec) { + // eslint-disable-next-line no-constant-condition + if (true) { + const proxyPath = getProxyExePath() + await execFile(proxyPath, ['set', '1']) + return + } const regKey = new Registry({ hive: Registry.HKCU, key: '\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings' @@ -43,21 +50,36 @@ async function _winUnsetProxy (exec) { _winAsyncRegSet(regKey, 'ProxyServer', Registry.REG_SZ, '') ]) log.info('代理关闭成功,等待refresh') - await exec(refreshInternetPs, { type: 'ps' }) + await exec(['echo "do refresh"', refreshInternetPs], { type: 'ps' }) log.info('代理关闭refresh完成') return true } +function getProxyExePath () { + const proxyPath = process.env.DS_SYSPROXY_PATH + log.info('proxyPath', proxyPath) + if (proxyPath) { + return proxyPath + } + return path.join(__dirname, './sysproxy.exe') +} + async function _winSetProxy (exec, ip, port) { + let lanIpStr = '' + for (const string of _lanIP) { + lanIpStr += string + ';' + } + // eslint-disable-next-line no-constant-condition + if (true) { + const proxyPath = getProxyExePath() + await execFile(proxyPath, ['global', `${ip}:${port}`, lanIpStr]) + return + } const regKey = new Registry({ hive: Registry.HKCU, key: '\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings' }) - let lanIpStr = '' - for (const string of _lanIP) { - lanIpStr += string + ';' - } // log.info('lanIps:', lanIpStr, ip, port) await Promise.all([ _winAsyncRegSet(regKey, 'MigrateProxy', Registry.REG_DWORD, 1), @@ -67,7 +89,7 @@ async function _winSetProxy (exec, ip, port) { _winAsyncRegSet(regKey, 'ProxyOverride', Registry.REG_SZ, lanIpStr) ]) log.info('代理设置成功,等待refresh') - await exec(refreshInternetPs) + await exec(['echo "do refresh"', refreshInternetPs], { type: 'ps' }) log.info('代理设置refresh完成') return true } diff --git a/packages/core/src/shell/scripts/set-system-proxy/sysproxy.exe b/packages/core/src/shell/scripts/set-system-proxy/sysproxy.exe new file mode 100644 index 00000000..979858ba Binary files /dev/null and b/packages/core/src/shell/scripts/set-system-proxy/sysproxy.exe differ diff --git a/packages/core/src/shell/shell.js b/packages/core/src/shell/shell.js index 600e54a7..15e658c1 100644 --- a/packages/core/src/shell/shell.js +++ b/packages/core/src/shell/shell.js @@ -2,6 +2,7 @@ const util = require('util') const os = require('os') const childProcess = require('child_process') const _exec = childProcess.exec +const _execFile = childProcess.execFile const exec = util.promisify(_exec) const PowerShell = require('node-powershell') const log = require('../utils/util.log') @@ -119,8 +120,23 @@ async function execute (executor, args) { return executor[getSystemPlatform()](getSystemShell().exec, args) } +async function execFile (file, args, options) { + return new Promise((resolve, reject) => { + _execFile(file, args, options, (err, stdout) => { + if (err) { + log.error('文件执行出错:', file, err) + reject(err) + return + } + log.debug('执行成功:', stdout) + resolve(stdout) + }) + }) +} + module.exports = { getSystemShell, getSystemPlatform, - execute + execute, + execFile } diff --git a/packages/core/src/utils/util.log.js b/packages/core/src/utils/util.log.js index 04c8a5ae..a0e5c711 100644 --- a/packages/core/src/utils/util.log.js +++ b/packages/core/src/utils/util.log.js @@ -3,9 +3,12 @@ const config = require('../config/index') function getDefaultConfigBasePath () { return config.server.setting.userBasePath } +const level = process.env.NODE_ENV === 'development' ? 'debug' : 'info' +const path = require('path') +const filename = path.join(getDefaultConfigBasePath(), '/logs/core.log') log4js.configure({ - appenders: { std: { type: 'stdout' }, file: { type: 'file', pattern: 'yyyy-MM-dd', daysToKeep: 3, filename: getDefaultConfigBasePath() + '/logs/core.log' } }, - categories: { default: { appenders: ['file', 'std'], level: 'info' } } + appenders: { std: { type: 'stdout' }, file: { type: 'file', pattern: 'yyyy-MM-dd', daysToKeep: 3, filename} }, + categories: { default: { appenders: ['file', 'std'], level: level } } }) const logger = log4js.getLogger('server') module.exports = logger diff --git a/packages/core/start/mitmproxy.js b/packages/core/start/mitmproxy.js index f0dc2c6a..0be3e2ff 100644 --- a/packages/core/start/mitmproxy.js +++ b/packages/core/start/mitmproxy.js @@ -1,6 +1,10 @@ // eslint-disable-next-line no-unused-vars const server = require('@docmirror/mitmproxy') -const configPath = process.argv[2] +let configPath = 'C:/Users/Administrator/.dev-sidecar/running.json' +if (process.argv && process.argv.length > 3) { + configPath = process.argv[2] +} + const fs = require('fs') const path = require('path') const configJson = fs.readFileSync(configPath) diff --git a/packages/core/start2.js b/packages/core/start2.js new file mode 100644 index 00000000..6e459147 --- /dev/null +++ b/packages/core/start2.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line no-unused-vars +const mitmproxy = require('./start/mitmproxy.js') diff --git a/packages/core/yarn.lock b/packages/core/yarn.lock index d4093ba7..0329c74c 100644 --- a/packages/core/yarn.lock +++ b/packages/core/yarn.lock @@ -93,10 +93,10 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" -"@docmirror/mitmproxy@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@docmirror/mitmproxy/-/mitmproxy-1.2.0.tgz#ab9910031272d8e16fe0e38d434f7b42971bc74e" - integrity sha512-DlzquSNVZOC/p5GwAdDwSiI4KCb3HlUY4A44pGGOBehsNThBoRU8ESKJjbyay9ah4RPSAWTSVYgMEiPZctR+wg== +"@docmirror/mitmproxy@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@docmirror/mitmproxy/-/mitmproxy-1.2.2.tgz#a4d0020e073eaa68adb7902b5634ab2a1a3bc058" + integrity sha512-xW1xyqUfpGAZZTzqSjoQM0Mmq8VVEyvS8AiTUBvgpxUAYG2sqNCacLETwYfNBP1MStUBtGXKklcISpIY6+R+DA== dependencies: agentkeepalive "^2.1.1" child_process "^1.0.2" @@ -442,6 +442,11 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.11.0" +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" @@ -452,6 +457,11 @@ ansi-regex@^5.0.0: resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U= +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&sync_timestamp=1601839122515&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -625,6 +635,15 @@ aws4@^1.8.0: resolved "https://registry.npm.taobao.org/aws4/download/aws4-1.10.1.tgz?cache=0&sync_timestamp=1597236947743&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faws4%2Fdownload%2Faws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" integrity sha1-4eguTz6Zniz9YbFhKA0WoRH4ZCg= +babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + babel-eslint@^10.1.0: version "10.1.0" resolved "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.1.0.tgz?cache=0&sync_timestamp=1599054223324&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-eslint%2Fdownload%2Fbabel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" @@ -637,6 +656,104 @@ babel-eslint@^10.1.0: eslint-visitor-keys "^1.0.0" resolve "^1.12.0" +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-arrow-functions@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.9.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-template-literals@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= + dependencies: + babel-runtime "^6.22.0" + +babel-preset-es2020@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/babel-preset-es2020/-/babel-preset-es2020-1.0.2.tgz#489272ca9c8b1fca59b2cfc4b2a2fab02eedeb79" + integrity sha1-SJJyypyLH8pZss/EsqL6sC7t63k= + dependencies: + babel-plugin-check-es2015-constants "^6.8.0" + babel-plugin-transform-es2015-arrow-functions "^6.8.0" + babel-plugin-transform-es2015-block-scoping "^6.9.0" + babel-plugin-transform-es2015-template-literals "^6.8.0" + +babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -883,6 +1000,17 @@ caseless@~0.12.0: resolved "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -1119,6 +1247,11 @@ copy-descriptor@^0.1.0: resolved "https://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= +core-js@^2.4.0: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -1227,7 +1360,7 @@ date-format@^3.0.0: resolved "https://registry.yarnpkg.com/date-format/-/date-format-3.0.0.tgz#eb8780365c7d2b1511078fb491e6479780f3ad95" integrity sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w== -debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: +debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -1538,7 +1671,7 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -2169,6 +2302,11 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== + globby@^9.2.0: version "9.2.0" resolved "https://registry.npm.taobao.org/globby/download/globby-9.2.0.tgz?cache=0&sync_timestamp=1591083812416&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobby%2Fdownload%2Fglobby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" @@ -2201,6 +2339,13 @@ har-validator@~5.1.3: ajv "^6.12.3" har-schema "^2.0.0" +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -2396,6 +2541,13 @@ interpret@^1.2.0: resolved "https://registry.npm.taobao.org/interpret/download/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha1-Zlq4vE2iendKQFhOgS4+D6RbGh4= +invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + ip@^1.1.5: version "1.1.5" resolved "https://registry.npm.taobao.org/ip/download/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -2656,11 +2808,16 @@ js-queue@2.0.0: dependencies: easy-stack "^1.0.0" -js-tokens@^4.0.0: +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + js-yaml@^3.13.1: version "3.14.0" resolved "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" @@ -2838,7 +2995,7 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" -lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.7.0: +lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.4, lodash@^4.7.0: version "4.17.20" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -2861,6 +3018,13 @@ log4js@^6.3.0: rfdc "^1.1.4" streamroller "^2.2.4" +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + lru-cache@^4.0.1, lru-cache@^4.1.2: version "4.1.5" resolved "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz?cache=0&sync_timestamp=1594427582110&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flru-cache%2Fdownload%2Flru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -3755,6 +3919,11 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -4245,6 +4414,13 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1589682795383&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" @@ -4279,6 +4455,11 @@ strip-json-comments@^3.0.1: resolved "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-3.1.1.tgz?cache=0&sync_timestamp=1594567532500&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-json-comments%2Fdownload%2Fstrip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY= +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz?cache=0&sync_timestamp=1598611709087&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -4374,6 +4555,11 @@ to-arraybuffer@^1.0.0: resolved "https://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" diff --git a/packages/gui/extra/scripts/google.js b/packages/gui/extra/scripts/google.js new file mode 100644 index 00000000..41b9ad72 --- /dev/null +++ b/packages/gui/extra/scripts/google.js @@ -0,0 +1,20 @@ +// ==UserScript== +// @name google增强 +// @version 1.2.4 +// @author Greper +// @description 去除ping链接 +// @match https://www.google.com/*/* +// @icon https://www.google.com/favicon.ico +// @license GPL-3.0 License +// @run-at document-end +// @namespace +// ==/UserScript== + +(function () { + console.log('google script loaded') + const aList = document.getElementsByTagName('a') + for (let i = 0; i <= aList.length; i++) { + console.log(aList[i].href) + aList[i].ping = undefined + } +})() diff --git a/packages/gui/extra/sysproxy.exe b/packages/gui/extra/sysproxy.exe new file mode 100644 index 00000000..979858ba Binary files /dev/null and b/packages/gui/extra/sysproxy.exe differ diff --git a/packages/gui/package.json b/packages/gui/package.json index f6d09cff..0837ca91 100644 --- a/packages/gui/package.json +++ b/packages/gui/package.json @@ -1,6 +1,6 @@ { "name": "@docmirror/dev-sidecar-gui", - "version": "1.2.1", + "version": "1.3.1", "private": false, "license": "MPL-2.0", "scripts": { @@ -12,10 +12,11 @@ "postuninstall": "electron-builder install-app-deps", "electron:generate-icons": "electron-icon-builder --input=./public/icon.png --output=build --flatten" }, + "author": "docmirror.cn", "main": "background.js", "dependencies": { - "@docmirror/dev-sidecar": "^1.2.1", - "@docmirror/mitmproxy": "^1.2.1", + "@docmirror/dev-sidecar": "^1.3.1", + "@docmirror/mitmproxy": "^1.3.0", "ant-design-vue": "^1.6.5", "core-js": "^3.6.5", "electron-baidu-tongji": "^1.0.5", diff --git a/packages/gui/src/background.js b/packages/gui/src/background.js index 531878c9..dcefa2d6 100644 --- a/packages/gui/src/background.js +++ b/packages/gui/src/background.js @@ -1,11 +1,10 @@ 'use strict' /* global __static */ import path from 'path' -import { app, protocol, BrowserWindow, Menu, Tray, ipcMain } from 'electron' +import { app, protocol, BrowserWindow, Menu, Tray, ipcMain, dialog } from 'electron' import { createProtocol } from 'vue-cli-plugin-electron-builder/lib' -import bridge from './bridge/index' -import updateHandle from './bridge/update-handle' -import { ebtMain } from './tongji' +import backend from './bridge/backend' +import DevSidecar from '@docmirror/dev-sidecar' import log from './utils/util.log' // eslint-disable-next-line no-unused-vars const isMac = process.platform === 'darwin' @@ -113,7 +112,7 @@ function createWindow () { } async function beforeQuit () { - return bridge.devSidecar.api.shutdown() + return DevSidecar.api.shutdown() } async function quit (app, callback) { if (tray) { @@ -136,12 +135,6 @@ if (!isFirstInstance) { } else { app.on('before-quit', async (event) => { log.info('before-quit') - // event.preventDefault() - // // if (tray) { - // // tray.displayBalloon({ title: '正在关闭,请稍候...', content: '正在关闭中,请稍候。。。' }) - // // } - // await bridge.devSidecar.api.shutdown() - // app.exit() }) app.on('second-instance', (event, commandLine, workingDirectory) => { log.info('new app started', commandLine) @@ -180,24 +173,13 @@ if (!isFirstInstance) { // log.error('Vue Devtools failed to install:', e.toString()) // } } - createWindow() - bridge.init(win) - - let updateUrl = 'https://dev-sidecar.docmirror.cn/update/' - if (process.env.NODE_ENV === 'development') { - Object.defineProperty(app, 'isPackaged', { - get () { - return true - } - }) - updateUrl = 'https://dev-sidecar.docmirror.cn/update/' - // updateUrl = 'http://localhost/dev-sidecar/' + try { + createWindow() + const context = { win, app, beforeQuit, ipcMain, dialog,log } + backend.install(context) // 模块安装 + } catch (err) { + log.info('err', err) } - // 自动更新 - updateHandle(app, win, beforeQuit, updateUrl) - - // 百度分析 - ebtMain(ipcMain, isDevelopment) try { // 最小化到托盘 diff --git a/packages/gui/src/bridge/index.js b/packages/gui/src/bridge/api/backend.js similarity index 81% rename from packages/gui/src/bridge/index.js rename to packages/gui/src/bridge/api/backend.js index caa6fd4d..9ff60923 100644 --- a/packages/gui/src/bridge/index.js +++ b/packages/gui/src/bridge/api/backend.js @@ -1,12 +1,13 @@ import lodash from 'lodash' import DevSidecar from '@docmirror/dev-sidecar' -import { ipcMain, Menu } from 'electron' +import { ipcMain } from 'electron' import fs from 'fs' import JSON5 from 'json5' import path from 'path' -const pk = require('../../package.json') +const pk = require('../../../package.json') const mitmproxyPath = path.join(__dirname, 'mitmproxy.js') -const log = require('../utils/util.log') +process.env.DS_SYSPROXY_PATH = path.join(__dirname, '../extra/sysproxy.exe') +const log = require('../../utils/util.log') const getDefaultConfigBasePath = function () { return DevSidecar.api.config.get().server.setting.userBasePath } @@ -40,12 +41,23 @@ const localApi = { setting: { load () { const settingPath = _getSettingsPath() - if (!fs.existsSync(settingPath)) { - return {} + let setting = {} + if (fs.existsSync(settingPath)) { + const file = fs.readFileSync(settingPath) + setting = JSON5.parse(file.toString()) + if (setting == null) { + setting = {} + } } - const file = fs.readFileSync(settingPath) - const setting = JSON5.parse(file.toString()) - return setting || {} + if (setting.overwall == null) { + setting.overwall = true + } + + if (setting.installTime == null) { + setting.installTime = new Date().getTime() + localApi.setting.save(setting) + } + return setting }, save (setting = {}) { const settingPath = _getSettingsPath() @@ -170,25 +182,29 @@ function doMerge (defObj, newObj) { return newObj2 } +function invoke (api, param) { + let target = lodash.get(localApi, api) + if (target == null) { + target = lodash.get(DevSidecar.api, api) + } + if (target == null) { + log.info('找不到此接口方法:', api) + } + const ret = target(param) + // log.info('api:', api, 'ret:', ret) + return ret +} + export default { - init (win) { + install ({ win }) { // 接收view的方法调用 ipcMain.handle('apiInvoke', async (event, args) => { const api = args[0] - let target = lodash.get(localApi, api) - if (target == null) { - target = lodash.get(DevSidecar.api, api) - } - if (target == null) { - log.info('找不到此接口方法:', api) - } let param if (args.length >= 2) { param = args[1] } - const ret = target(param) - // log.info('api:', api, 'ret:', ret) - return ret + return invoke(api, param) }) // 注册从core里来的事件,并转发给view DevSidecar.api.event.register('status', (event) => { @@ -205,5 +221,6 @@ export default { // 启动所有 localApi.startup() }, - devSidecar: DevSidecar + devSidecar: DevSidecar, + invoke } diff --git a/packages/gui/src/bridge/backend.js b/packages/gui/src/bridge/backend.js new file mode 100644 index 00000000..39764669 --- /dev/null +++ b/packages/gui/src/bridge/backend.js @@ -0,0 +1,19 @@ +import api from './api/backend' +import tongji from './tongji/backend' +import update from './update/backend' +import fileSelector from './file-selector/backend' + +const modules = { + api, // 核心接口模块 + fileSelector, // 文件选择模块 + tongji, // 统计模块 + update // 自动更新 +} +export default { + install (context) { + for (const module in modules) { + modules[module].install(context) + } + }, + ...modules +} diff --git a/packages/gui/src/view/modules/error/index.js b/packages/gui/src/bridge/error/front.js similarity index 100% rename from packages/gui/src/view/modules/error/index.js rename to packages/gui/src/bridge/error/front.js diff --git a/packages/gui/src/bridge/file-selector/backend.js b/packages/gui/src/bridge/file-selector/backend.js new file mode 100644 index 00000000..63ba83d4 --- /dev/null +++ b/packages/gui/src/bridge/file-selector/backend.js @@ -0,0 +1,21 @@ +export default { + install (context) { + const { ipcMain, dialog, log } = context + ipcMain.on('file-selector', function (event, message) { + if (message.key === 'open') { + dialog.showOpenDialog({ + properties: ['openFile'], + ...message + }).then(result => { + if (result.canceled) { + event.sender.send('file-selector', { key: 'canceled' }) + } else { + event.sender.send('file-selector', { key: 'selected', value: result.filePaths }) + } + }).catch(err => { + log.error('选择文件失败', err) + }) + } + }) + } +} diff --git a/packages/gui/src/bridge/file-selector/front.js b/packages/gui/src/bridge/file-selector/front.js new file mode 100644 index 00000000..284cdce8 --- /dev/null +++ b/packages/gui/src/bridge/file-selector/front.js @@ -0,0 +1,23 @@ + +function install (app, api) { + api.fileSelector = { + open (value, options) { + return new Promise((resolve, reject) => { + api.ipc.send('file-selector', { key: 'open', value: value, ...options }) + api.ipc.on('file-selector', (event, message) => { + console.log('selector', message) + if (message.key === 'selected') { + resolve(message.value) + } else { + reject(new Error('没有选择文件')) + } + api.ipc.on('file-selector', () => {}) + }) + }) + } + } +} + +export default { + install +} diff --git a/packages/gui/src/bridge/front.js b/packages/gui/src/bridge/front.js new file mode 100644 index 00000000..18e360a1 --- /dev/null +++ b/packages/gui/src/bridge/front.js @@ -0,0 +1,21 @@ +// import api from './api/front' +import error from './error/front' +import tongji from './tongji/front' +import update from './update/front' +import fileSelector from './file-selector/front' + +const modules = { + // api, // 核心接口模块 + error, + fileSelector, // 文件选择模块 + tongji, // 统计模块 + update // 自动更新 +} +export default { + install (app, api, router) { + for (const module in modules) { + modules[module].install(app, api, router) + } + }, + ...modules +} diff --git a/packages/gui/src/bridge/mitmproxy.js b/packages/gui/src/bridge/mitmproxy.js index acd487ac..9cef1d7b 100644 --- a/packages/gui/src/bridge/mitmproxy.js +++ b/packages/gui/src/bridge/mitmproxy.js @@ -1,15 +1,14 @@ // eslint-disable-next-line no-unused-vars const server = require('@docmirror/mitmproxy') const configPath = process.argv[2] - const fs = require('fs') const path = require('path') const configJson = fs.readFileSync(configPath) const config = JSON.parse(configJson) - let scriptDir = '../extra/scripts/' if (process.env.NODE_ENV === 'development') { scriptDir = '../extra/scripts/' } config.setting.script.defaultDir = path.join(__dirname, scriptDir) + server.start(config) diff --git a/packages/gui/src/bridge/tongji/backend.js b/packages/gui/src/bridge/tongji/backend.js new file mode 100644 index 00000000..294badbd --- /dev/null +++ b/packages/gui/src/bridge/tongji/backend.js @@ -0,0 +1,55 @@ + +/** + * first step + * @param {*} ipcMain + */ +const ebtMain = (ipcMain) => { + const isDevelopment = process.env.NODE_ENV !== 'production' + const request = require('request') + /* istanbul ignore else */ + if (!(ipcMain && ipcMain.on)) { + throw new TypeError('require ipcMain') + } + + // step 2 + ipcMain.on('electron-baidu-tongji-message', (event, arg) => { + // electron 生产模式下是直接请求文件系统,没有 http 地址 + // 前台拿不到 hm.js 的内容 + request({ + url: `https://hm.baidu.com/hm.js?${arg}`, + method: 'GET', + headers: { + Referer: 'https://hm.baidu.com/' + } + }, + (err, response, body) => { + if (err) { + console.error('百度统计请求出错', err) + return + } + const rource = '(h.c.b.su=h.c.b.u||document.location.href),h.c.b.u=f.protocol+"//"+document.location.host+' + /* istanbul ignore else */ + if (body && body.indexOf(rource) >= 0) { + // step 3 + let text = body + + /* istanbul ignore else */ + if (!isDevelopment) { + // 百度统计可能改规则了,不统计 file:// 开始的请求 + // 这里强制替换为 https + const target = '(h.c.b.su=h.c.b.u||"https://"+c.dm[0]+a[1]),h.c.b.u="https://"+c.dm[0]+' + const target2 = '"https://"+c.dm[0]+window.location.pathname+window.location.hash' + text = body.replace(rource, target).replace(/window.location.href/g, target2) + } + console.log('baidu tonji: ret') + event.sender.send('electron-baidu-tongji-reply', { text, isDevelopment }) + } + }) + }) +} + +export default { + install (context) { + ebtMain(context.ipcMain) + } +} diff --git a/packages/gui/src/bridge/tongji/front.js b/packages/gui/src/bridge/tongji/front.js new file mode 100644 index 00000000..023db8b3 --- /dev/null +++ b/packages/gui/src/bridge/tongji/front.js @@ -0,0 +1,62 @@ + +/** + * second step + * @param {*} ipcRenderer + * @param {*} siteId + * @param {*} router + */ +const ebtRenderer = (ipcRenderer, siteId, router) => { + /* istanbul ignore else */ + if (!(ipcRenderer && ipcRenderer.on && ipcRenderer.send)) { + throw new TypeError('require ipcRenderer') + } + + /* istanbul ignore else */ + if (!(siteId && typeof siteId === 'string')) { + throw new TypeError('require siteId') + } + + // step 4 + ipcRenderer.on('electron-baidu-tongji-reply', (_, { text, isDevelopment }) => { + console.log('electron-baidu-tongji-reply') + /* istanbul ignore else */ + if (isDevelopment) { document.body.classList.add('electron-baidu-tongji_dev') } + + window._hmt = window._hmt || [] + + const hm = document.createElement('script') + hm.text = text + + const head = document.getElementsByTagName('head')[0] + head.appendChild(hm) + + // Vue单页应用时,监听router的每次变化 + // 把虚拟的url地址赋给百度统计的API接口 + + /* istanbul ignore else */ + if (router && router.beforeEach) { + router.beforeEach((to, _, next) => { + /* istanbul ignore else */ + if (to.path) { + window._hmt.push(['_trackPageview', '/#' + to.fullPath]) + console.log('baidu trace', to.fullPath) + } + + next() + }) + } + }) + + // step 1 + ipcRenderer.send('electron-baidu-tongji-message', siteId) +} + +export default { + install (app, api, router) { + const BAIDU_SITE_ID = 'f2d170ce560aef0005b689f28697f852' + // 百度统计 + const { ipcRenderer } = require('electron') + ebtRenderer(ipcRenderer, BAIDU_SITE_ID, router) + }, + ebtRenderer +} diff --git a/packages/gui/src/bridge/update-handle.js b/packages/gui/src/bridge/update/backend.js similarity index 84% rename from packages/gui/src/bridge/update-handle.js rename to packages/gui/src/bridge/update/backend.js index 1dc2d2fa..0237b6d3 100644 --- a/packages/gui/src/bridge/update-handle.js +++ b/packages/gui/src/bridge/update/backend.js @@ -1,6 +1,5 @@ -import { ipcMain, dialog } from 'electron' +import { ipcMain } from 'electron' import { autoUpdater } from 'electron-updater' -import log from '../utils/util.log' import path from 'path' // win是所有窗口的引用 // const path = require('path') // 引入path模块 @@ -8,7 +7,7 @@ import path from 'path' // eslint-disable-next-line no-unused-vars const isMac = process.platform === 'darwin' // 检测更新,在你想要检查更新的时候执行,renderer事件触发后的操作自行编写 -function updateHandle (app, win, beforeQuit, updateUrl) { +function updateHandle (app, win, beforeQuit, updateUrl, log) { // // 更新前,删除本地安装包 ↓ // const updaterCacheDirName = 'dev-sidecar-updater' // const updatePendingPath = path.join(autoUpdater.app.baseCachePath, updaterCacheDirName, 'pending') @@ -58,10 +57,7 @@ function updateHandle (app, win, beforeQuit, updateUrl) { log.info('download complete', info.version) win.webContents.send('update', { key: 'downloaded', - value: { - version: info.version, - releaseData: info.releaseDate - } + value: info }) }) @@ -95,4 +91,20 @@ function updateHandle (app, win, beforeQuit, updateUrl) { log.info('auto update inited') return autoUpdater } -export default updateHandle + +export default { + install (context) { + const { app, win, beforeQuit, log } = context + let updateUrl = 'https://dev-sidecar.docmirror.cn/update/' + if (process.env.NODE_ENV === 'development') { + Object.defineProperty(app, 'isPackaged', { + get () { + return true + } + }) + // updateUrl = 'https://dev-sidecar.docmirror.cn/update/' + updateUrl = 'http://localhost/dev-sidecar/' + } + updateHandle(app, win, beforeQuit, updateUrl, log) + } +} diff --git a/packages/gui/src/view/modules/update/index.js b/packages/gui/src/bridge/update/front.js similarity index 87% rename from packages/gui/src/view/modules/update/index.js rename to packages/gui/src/bridge/update/front.js index 960f9db6..79f609a3 100644 --- a/packages/gui/src/view/modules/update/index.js +++ b/packages/gui/src/bridge/update/front.js @@ -78,11 +78,19 @@ function install (app, api) { function newUpdateIsReady (value) { updateParams.downloading = false app.$confirm({ - title: '新版本已准备好', - content: `是否立即升级安装v${value.version}?`, + title: `新版本(v${value.version})已准备好,是否立即升级?`, cancelText: '暂不升级', okText: '立即升级', - // content: h =>

{value.version}更新内容:

{value.releaseNotes}
, + content: h => { + console.log(value) + if (value.releaseNotes) { + const notes = [] + for (const note of value.releaseNotes) { + notes.push(
  • {note}
  • ) + } + return
    更新内容:
      {notes}
    + } + }, onOk () { console.log('OK') api.update.doUpdateNow() diff --git a/packages/gui/src/main.js b/packages/gui/src/main.js index d78a8c4c..87e11ffb 100644 --- a/packages/gui/src/main.js +++ b/packages/gui/src/main.js @@ -7,9 +7,6 @@ import VueRouter from 'vue-router' import routes from './view/router' import DsContainer from './view/components/container' import './view/style/index.scss' -import { ipcRenderer } from 'electron' - -const tongji = require('./tongji') Vue.config.productionTip = false Vue.use(antd) @@ -28,12 +25,7 @@ view.initApi().then(async (api) => { router, render: h => h(App) }).$mount('#app') - - const BAIDU_SITE_ID = 'f2d170ce560aef0005b689f28697f852' - // 百度统计 - tongji.ebtRenderer(ipcRenderer, BAIDU_SITE_ID, router) - - view.initModules(app) + view.initModules(app, router) }) // fix vue-router NavigationDuplicated diff --git a/packages/gui/src/tongji.js b/packages/gui/src/tongji.js deleted file mode 100644 index 6ca5aa02..00000000 --- a/packages/gui/src/tongji.js +++ /dev/null @@ -1,103 +0,0 @@ - -const request = require('request') - -/** - * first step - * @param {*} ipcMain - */ -const ebtMain = (ipcMain, isDevelopment) => { - /* istanbul ignore else */ - if (!(ipcMain && ipcMain.on)) { - throw new TypeError('require ipcMain') - } - - // step 2 - ipcMain.on('electron-baidu-tongji-message', (event, arg) => { - // electron 生产模式下是直接请求文件系统,没有 http 地址 - // 前台拿不到 hm.js 的内容 - request({ - url: `https://hm.baidu.com/hm.js?${arg}`, - method: 'GET', - headers: { - Referer: 'https://hm.baidu.com/' - } - }, - (err, response, body) => { - if (err) { - console.error('百度统计请求出错', err) - return - } - const rource = '(h.c.b.su=h.c.b.u||document.location.href),h.c.b.u=f.protocol+"//"+document.location.host+' - /* istanbul ignore else */ - if (body && body.indexOf(rource) >= 0) { - // step 3 - let text = body - - /* istanbul ignore else */ - if (!isDevelopment) { - // 百度统计可能改规则了,不统计 file:// 开始的请求 - // 这里强制替换为 https - const target = '(h.c.b.su=h.c.b.u||"https://"+c.dm[0]+a[1]),h.c.b.u="https://"+c.dm[0]+' - const target2 = '"https://"+c.dm[0]+window.location.pathname+window.location.hash' - text = body.replace(rource, target).replace(/window.location.href/g, target2) - } - console.log('baidu tonji: ret') - event.sender.send('electron-baidu-tongji-reply', { text, isDevelopment }) - } - }) - }) -} - -/** - * second step - * @param {*} ipcRenderer - * @param {*} siteId - * @param {*} router - */ -const ebtRenderer = (ipcRenderer, siteId, router) => { - /* istanbul ignore else */ - if (!(ipcRenderer && ipcRenderer.on && ipcRenderer.send)) { - throw new TypeError('require ipcRenderer') - } - - /* istanbul ignore else */ - if (!(siteId && typeof siteId === 'string')) { - throw new TypeError('require siteId') - } - - // step 4 - ipcRenderer.on('electron-baidu-tongji-reply', (_, { text, isDevelopment }) => { - console.log('electron-baidu-tongji-reply') - /* istanbul ignore else */ - if (isDevelopment) { document.body.classList.add('electron-baidu-tongji_dev') } - - window._hmt = window._hmt || [] - - const hm = document.createElement('script') - hm.text = text - - const head = document.getElementsByTagName('head')[0] - head.appendChild(hm) - - // Vue单页应用时,监听router的每次变化 - // 把虚拟的url地址赋给百度统计的API接口 - - /* istanbul ignore else */ - if (router && router.beforeEach) { - router.beforeEach((to, _, next) => { - /* istanbul ignore else */ - if (to.path) { - window._hmt.push(['_trackPageview', '/#' + to.fullPath]) - console.log('baidu trace', to.fullPath) - } - - next() - }) - } - }) - - // step 1 - ipcRenderer.send('electron-baidu-tongji-message', siteId) -} - -module.exports = { ebtMain, ebtRenderer } diff --git a/packages/gui/src/utils/util.log.js b/packages/gui/src/utils/util.log.js index 8507a401..f1cefed9 100644 --- a/packages/gui/src/utils/util.log.js +++ b/packages/gui/src/utils/util.log.js @@ -3,9 +3,12 @@ const DevSidecar = require('@docmirror/dev-sidecar') const getDefaultConfigBasePath = function () { return DevSidecar.api.config.get().server.setting.userBasePath } +const level = process.env.NODE_ENV === 'development' ? 'debug' : 'info' +const path = require('path') +const filename = path.join(getDefaultConfigBasePath(), '/logs/gui.log') log4js.configure({ - appenders: { std: { type: 'stdout' }, file: { type: 'file', pattern: 'yyyy-MM-dd', daysToKeep: 3, filename: getDefaultConfigBasePath() + '/logs/gui.log' } }, - categories: { default: { appenders: ['file', 'std'], level: 'info' } } + appenders: { std: { type: 'stdout' }, file: { type: 'file', pattern: 'yyyy-MM-dd', daysToKeep: 3, filename } }, + categories: { default: { appenders: ['file', 'std'], level } } }) const logger = log4js.getLogger('server') module.exports = logger diff --git a/packages/gui/src/view/App.vue b/packages/gui/src/view/App.vue index 7c636131..de0cf6f4 100644 --- a/packages/gui/src/view/App.vue +++ b/packages/gui/src/view/App.vue @@ -15,7 +15,7 @@ {{item.title}} - {{ sub.title }} + {{ sub.title }} @@ -45,30 +45,20 @@ diff --git a/packages/gui/src/view/pages/plugin/node.vue b/packages/gui/src/view/pages/plugin/node.vue index 800650a2..5c8e17fc 100644 --- a/packages/gui/src/view/pages/plugin/node.vue +++ b/packages/gui/src/view/pages/plugin/node.vue @@ -19,7 +19,7 @@ 当前未启动 - + 关闭strict-ssl diff --git a/packages/gui/src/view/pages/plugin/overwall.vue b/packages/gui/src/view/pages/plugin/overwall.vue new file mode 100644 index 00000000..7c15d9cf --- /dev/null +++ b/packages/gui/src/view/pages/plugin/overwall.vue @@ -0,0 +1,177 @@ + + + + diff --git a/packages/gui/src/view/pages/server.vue b/packages/gui/src/view/pages/server.vue index e3128c47..926e9015 100644 --- a/packages/gui/src/view/pages/server.vue +++ b/packages/gui/src/view/pages/server.vue @@ -38,8 +38,8 @@
    开启此项之后,被代理应用关闭SSL校验也问题不大了
    - - + + @@ -112,6 +112,18 @@ export default { mounted () { }, methods: { + async onCrtSelect () { + const value = await this.$api.fileSelector.open() + if (value != null && value.length > 0) { + this.config.server.setting.rootCaFile.certPath = value[0] + } + }, + async onKeySelect () { + const value = await this.$api.fileSelector.open() + if (value != null && value.length > 0) { + this.config.server.setting.rootCaFile.keyPath = value[0] + } + }, onJsonChange (json) { }, ready () { @@ -148,7 +160,7 @@ export default { }, async openLog () { const dir = await this.$api.info.getConfigDir() - this.$api.ipc.openPath(dir + '/logs/server.log') + this.$api.ipc.openPath(dir + '/logs/') } } } diff --git a/packages/gui/src/view/router/index.js b/packages/gui/src/view/router/index.js index 76ed3e9b..8e250518 100644 --- a/packages/gui/src/view/router/index.js +++ b/packages/gui/src/view/router/index.js @@ -2,13 +2,17 @@ import Index from '../pages/index' import Server from '../pages/server' import Proxy from '../pages/proxy' import Node from '../pages/plugin/node' +import Git from '../pages/plugin/git' +import Overwall from '../pages/plugin/overwall' const routes = [ { path: '/', redirect: '/index' }, { path: '/index', component: Index }, { path: '/server', component: Server }, { path: '/proxy', component: Proxy }, - { path: '/plugin/node', component: Node } + { path: '/plugin/node', component: Node }, + { path: '/plugin/git', component: Git }, + { path: '/plugin/overwall', component: Overwall } ] diff --git a/packages/gui/src/view/router/menu.js b/packages/gui/src/view/router/menu.js new file mode 100644 index 00000000..ce33db86 --- /dev/null +++ b/packages/gui/src/view/router/menu.js @@ -0,0 +1,21 @@ +export default function createMenus (app) { + const plugins = [ + { title: 'NPM加速', path: '/plugin/node', icon: 'like' }, + { title: 'Git代理', path: '/plugin/git', icon: 'github' } + ] + const menus = [ + { title: '首页', path: '/index', icon: 'home' }, + { title: '加速服务', path: '/server', icon: 'thunderbolt' }, + { title: '系统代理', path: '/proxy', icon: 'deployment-unit' }, + { + title: '应用', + path: '/plugin', + icon: 'api', + children: plugins + } + ] + if (app.$global && app.$global.setting && app.$global.setting.overwall) { + plugins.push({ title: '功能增强', path: '/plugin/overwall', icon: 'global' }) + } + return menus +} diff --git a/packages/gui/src/view/style/index.scss b/packages/gui/src/view/style/index.scss index fe5d9ba6..224bc66d 100644 --- a/packages/gui/src/view/style/index.scss +++ b/packages/gui/src/view/style/index.scss @@ -36,3 +36,10 @@ .md-mb-10{margin-bottom: 10px;} .md-mb-15{margin-bottom: 15px;} .md-mb-20{margin-bottom: 20px;} + +ol{ + margin-block-start: 0em; + margin-block-end: 0em; + padding-inline-start: 20px; +} + diff --git a/packages/gui/yarn.lock b/packages/gui/yarn.lock index eb52e516..516856bd 100644 --- a/packages/gui/yarn.lock +++ b/packages/gui/yarn.lock @@ -901,12 +901,12 @@ ajv "^6.12.0" ajv-keywords "^3.4.1" -"@docmirror/dev-sidecar@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@docmirror/dev-sidecar/-/dev-sidecar-1.2.0.tgz#2320c31f786afd495b8e12557bea396cb96e0985" - integrity sha512-i96YlPjQtrrAgDW52YOpuVFmQDl1A0Nx3x6/riv2yKVN4nGqAugdJvcAuhNi7BDrJfdLyls2jI35uzN5+bpYfQ== +"@docmirror/dev-sidecar@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@docmirror/dev-sidecar/-/dev-sidecar-1.2.2.tgz#4963a9dd9f3f46e614e1c1479887b8680f0f6650" + integrity sha512-gWD5WPuyijIuFrpinMR0QSLdqdhLEfZVi9lnRSor9TnnaoBpeY6QlufHACpDDo6hME8f62adXGFmL3UoFJS49Q== dependencies: - "@docmirror/mitmproxy" "^1.2.0" + "@docmirror/mitmproxy" "^1.2.2" agentkeepalive "^2.1.1" charset "^1.0.0" child_process "^1.0.2" @@ -933,10 +933,10 @@ validator "^13.1.17" winreg "^1.2.4" -"@docmirror/mitmproxy@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@docmirror/mitmproxy/-/mitmproxy-1.2.0.tgz#ab9910031272d8e16fe0e38d434f7b42971bc74e" - integrity sha512-DlzquSNVZOC/p5GwAdDwSiI4KCb3HlUY4A44pGGOBehsNThBoRU8ESKJjbyay9ah4RPSAWTSVYgMEiPZctR+wg== +"@docmirror/mitmproxy@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@docmirror/mitmproxy/-/mitmproxy-1.2.2.tgz#a4d0020e073eaa68adb7902b5634ab2a1a3bc058" + integrity sha512-xW1xyqUfpGAZZTzqSjoQM0Mmq8VVEyvS8AiTUBvgpxUAYG2sqNCacLETwYfNBP1MStUBtGXKklcISpIY6+R+DA== dependencies: agentkeepalive "^2.1.1" child_process "^1.0.2" diff --git a/packages/mitmproxy/package-lock.json b/packages/mitmproxy/package-lock.json index db21126a..7ecf5a41 100644 --- a/packages/mitmproxy/package-lock.json +++ b/packages/mitmproxy/package-lock.json @@ -1,6 +1,6 @@ { "name": "@docmirror/mitmproxy", - "version": "1.2.1", + "version": "1.3.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/packages/mitmproxy/package.json b/packages/mitmproxy/package.json index 760f6894..b232383d 100644 --- a/packages/mitmproxy/package.json +++ b/packages/mitmproxy/package.json @@ -1,6 +1,6 @@ { "name": "@docmirror/mitmproxy", - "version": "1.2.1", + "version": "1.3.0", "description": "", "main": "src/index.js", "keywords": [ diff --git a/packages/mitmproxy/src/lib/choice/index.js b/packages/mitmproxy/src/lib/choice/index.js index e7b8a6e2..69a42a89 100644 --- a/packages/mitmproxy/src/lib/choice/index.js +++ b/packages/mitmproxy/src/lib/choice/index.js @@ -39,7 +39,7 @@ class DynamicChoice { if (this.count[item]) { continue } - this.count[item] = { value: item, total: defaultTotal, error: 0, keepErrorCount: 0, successRate: 1 } + this.count[item] = { value: item, total: defaultTotal, error: 0, keepErrorCount: 0, successRate: 0.5 } defaultTotal-- } this.value = backupList.shift() diff --git a/packages/mitmproxy/src/lib/interceptor/impl/proxy.js b/packages/mitmproxy/src/lib/interceptor/impl/proxy.js index d9a70bbb..09ad0576 100644 --- a/packages/mitmproxy/src/lib/interceptor/impl/proxy.js +++ b/packages/mitmproxy/src/lib/interceptor/impl/proxy.js @@ -4,13 +4,11 @@ module.exports = { const { rOptions, log, RequestCounter } = context let proxyConf = interceptOpt.proxy - if (RequestCounter && interceptOpt.backup) { + if (RequestCounter && interceptOpt.backup && interceptOpt.backup.length > 0) { // 优选逻辑 const backup = [proxyConf] - if (interceptOpt.backup) { - for (const bk of interceptOpt.backup) { - backup.push(bk) - } + for (const bk of interceptOpt.backup) { + backup.push(bk) } const key = interceptOpt.key @@ -36,6 +34,9 @@ module.exports = { const regexp = new RegExp(interceptOpt.replace) proxyTarget = req.url.replace(regexp, proxyConf) } + // eslint-disable-next-line no-template-curly-in-string + proxyTarget = proxyTarget.replace('${host}', rOptions.hostname) + // const backup = interceptOpt.backup const proxy = proxyTarget.indexOf('http') === 0 ? proxyTarget : rOptions.protocol + '//' + proxyTarget // eslint-disable-next-line node/no-deprecated-api @@ -49,7 +50,10 @@ module.exports = { rOptions.port = rOptions.protocol === 'https:' ? 443 : 80 } log.info('proxy:', rOptions.hostname, proxyTarget) - log.debug('proxy choice:', JSON.stringify(context.requestCount)) + if (context.requestCount) { + log.debug('proxy choice:', JSON.stringify(context.requestCount)) + } + return true }, is (interceptOpt) { diff --git a/packages/mitmproxy/src/lib/monkey/index.js b/packages/mitmproxy/src/lib/monkey/index.js index 4f3efdfe..9dafd447 100644 --- a/packages/mitmproxy/src/lib/monkey/index.js +++ b/packages/mitmproxy/src/lib/monkey/index.js @@ -71,6 +71,7 @@ const api = { load (rootDir) { scripts = {} scripts.github = loadScript(readFile(rootDir, 'github.script')) + scripts.google = loadScript(readFile(rootDir, 'google.js')) scripts.jquery = { script: readFile(rootDir, 'jquery.min.js') } scripts.global = { script: readFile(rootDir, 'global.script') } return scripts diff --git a/packages/mitmproxy/src/lib/proxy/middleware/InsertScriptMiddleware.js b/packages/mitmproxy/src/lib/proxy/middleware/InsertScriptMiddleware.js index 36451a23..3297404c 100644 --- a/packages/mitmproxy/src/lib/proxy/middleware/InsertScriptMiddleware.js +++ b/packages/mitmproxy/src/lib/proxy/middleware/InsertScriptMiddleware.js @@ -48,6 +48,7 @@ function injectScriptIntoHtml (tags, chunk, script) { if (index < 0) { continue } + console.log('insert script:', tag) const scriptBuf = Buffer.from(script) const chunkNew = Buffer.alloc(chunk.length + scriptBuf.length) chunk.copy(chunkNew, 0, 0, index) diff --git a/packages/mitmproxy/src/lib/proxy/middleware/overwall.js b/packages/mitmproxy/src/lib/proxy/middleware/overwall.js new file mode 100644 index 00000000..c6966845 --- /dev/null +++ b/packages/mitmproxy/src/lib/proxy/middleware/overwall.js @@ -0,0 +1,93 @@ +const url = require('url') +const pac = require('./source/pac') +const matchUtil = require('../../../utils/util.match') +const lodash = require('lodash') +function matched (hostname, regexpMap) { + const ret1 = matchUtil.matchHostname(regexpMap, hostname) + if (ret1) { + return true + } + const ret = pac.FindProxyForURL('https://' + hostname, hostname) + if (ret && ret.indexOf('PROXY ') === 0) { + return true + } + return false +} + +module.exports = function createOverWallIntercept (overWallConfig) { + if (!overWallConfig || overWallConfig.enabled !== true) { + return null + } + let server = overWallConfig.server + let keys = Object.keys(server) + if (keys.length === 0) { + server = overWallConfig.serverDefault + keys = Object.keys(server) + } + if (keys.length === 0) { + return null + } + const regexpMap = matchUtil.domainMapRegexply(overWallConfig.intercepts) + return { + sslConnectInterceptor: (req, cltSocket, head) => { + const hostname = req.url.split(':')[0] + return matched(hostname, regexpMap) + }, + requestIntercept (context, req, res, ssl, next) { + const { rOptions, log, RequestCounter } = context + if (rOptions.protocol === 'http:') { + return + } + const hostname = rOptions.hostname + if (!matched(hostname, regexpMap)) { + return + } + const cacheKey = '__over_wall_proxy__' + let proxyServer = keys[0] + if (RequestCounter && keys.length > 1) { + const count = RequestCounter.getOrCreate(cacheKey, keys) + if (count.value == null) { + count.doRank() + } + if (count.value == null) { + log.error('count value is null', count) + } else { + count.doCount(count.value) + proxyServer = count.value + context.requestCount = { + key: cacheKey, + value: count.value, + count + } + } + } + + const domain = proxyServer + const path = server[domain].path + const password = server[domain].password + const proxyTarget = domain + '/' + path + '/' + hostname + req.url + + // const backup = interceptOpt.backup + const proxy = proxyTarget.indexOf('http') === 0 ? proxyTarget : (rOptions.protocol + '//' + proxyTarget) + // eslint-disable-next-line node/no-deprecated-api + const URL = url.parse(proxy) + rOptions.protocol = URL.protocol + rOptions.hostname = URL.host + rOptions.host = URL.host + rOptions.headers.host = URL.host + if (password) { + rOptions.headers.dspassword = password + } + rOptions.path = URL.path + if (URL.port == null) { + rOptions.port = rOptions.protocol === 'https:' ? 443 : 80 + } + log.info('OverWall:', rOptions.hostname, proxyTarget) + if (context.requestCount) { + log.debug('OverWall choice:', JSON.stringify(context.requestCount)) + } + + return true + } + } +} diff --git a/packages/mitmproxy/src/lib/proxy/middleware/source/pac.js b/packages/mitmproxy/src/lib/proxy/middleware/source/pac.js new file mode 100644 index 00000000..0f143080 --- /dev/null +++ b/packages/mitmproxy/src/lib/proxy/middleware/source/pac.js @@ -0,0 +1,665 @@ +var __PROXY__ = 'PROXY 127.0.0.1:1080;' +var __USERRULES__ = [] +const getRules = function () { + let text = require('./pac.txt.js') + text = Buffer.from(text, 'base64').toString() + const rules = [] + const arr = text.split('\n') + for (const line of arr) { + const row = line.trim() + if (row === '' || row.indexOf('!') === 0 || row.indexOf('[') === 0) { + continue + } + rules.push(row) + } + return rules +} +var __RULES__ = getRules() +/* eslint-disable */ +// Was generated by gfwlist2pac in precise mode +// https://github.com/clowwindy/gfwlist2pac + +// 2019-10-06: More 'javascript' way to interaction with main program +// 2019-02-08: Updated to support shadowsocks-windows user rules. + +var proxy = __PROXY__; +var userrules = []; +var rules = []; + +// convert to abp grammar +for (var i = 0; i < __RULES__.length; i++) { + var s = __RULES__[i]; + if (s.substring(0, 2) == "||") s += "^"; + rules.push(s); +} + +for (var i = 0; i < __USERRULES__.length; i++) { + var s = __USERRULES__[i]; + if (s.substring(0, 2) == "||") s += "^"; + userrules.push(s); +} + +/* +* This file is part of Adblock Plus , +* Copyright (C) 2006-2014 Eyeo GmbH +* +* Adblock Plus is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License version 3 as +* published by the Free Software Foundation. +* +* Adblock Plus is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with Adblock Plus. If not, see . +*/ + +function createDict() { + var result = {}; + result.__proto__ = null; + return result; +} + +function getOwnPropertyDescriptor(obj, key) { + if (obj.hasOwnProperty(key)) { + return obj[key]; + } + return null; +} + +function extend(subclass, superclass, definition) { + if (Object.__proto__) { + definition.__proto__ = superclass.prototype; + subclass.prototype = definition; + } else { + var tmpclass = function () { + }, ret; + tmpclass.prototype = superclass.prototype; + subclass.prototype = new tmpclass(); + subclass.prototype.constructor = superclass; + for (var i in definition) { + if (definition.hasOwnProperty(i)) { + subclass.prototype[i] = definition[i]; + } + } + } +} + +function Filter(text) { + this.text = text; + this.subscriptions = []; +} + +Filter.prototype = { + text: null, + subscriptions: null, + toString: function () { + return this.text; + } +}; +Filter.knownFilters = createDict(); +Filter.elemhideRegExp = /^([^\/\*\|\@"!]*?)#(\@)?(?:([\w\-]+|\*)((?:\([\w\-]+(?:[$^*]?=[^\(\)"]*)?\))*)|#([^{}]+))$/; +Filter.regexpRegExp = /^(@@)?\/.*\/(?:\$~?[\w\-]+(?:=[^,\s]+)?(?:,~?[\w\-]+(?:=[^,\s]+)?)*)?$/; +Filter.optionsRegExp = /\$(~?[\w\-]+(?:=[^,\s]+)?(?:,~?[\w\-]+(?:=[^,\s]+)?)*)$/; +Filter.fromText = function (text) { + if (text in Filter.knownFilters) { + return Filter.knownFilters[text]; + } + var ret; + if (text.charAt(0) == "!") { + ret = new CommentFilter(text); + } else { + ret = RegExpFilter.fromText(text); + } + Filter.knownFilters[ret.text] = ret; + return ret; +}; + +function InvalidFilter(text, reason) { + Filter.call(this, text); + this.reason = reason; +} + +extend(InvalidFilter, Filter, { + reason: null +}); + +function CommentFilter(text) { + Filter.call(this, text); +} + +extend(CommentFilter, Filter, {}); + +function ActiveFilter(text, domains) { + Filter.call(this, text); + this.domainSource = domains; +} + +extend(ActiveFilter, Filter, { + domainSource: null, + domainSeparator: null, + ignoreTrailingDot: true, + domainSourceIsUpperCase: false, + getDomains: function () { + var prop = getOwnPropertyDescriptor(this, "domains"); + if (prop) { + return prop; + } + var domains = null; + if (this.domainSource) { + var source = this.domainSource; + if (!this.domainSourceIsUpperCase) { + source = source.toUpperCase(); + } + var list = source.split(this.domainSeparator); + if (list.length == 1 && (list[0]).charAt(0) != "~") { + domains = createDict(); + domains[""] = false; + if (this.ignoreTrailingDot) { + list[0] = list[0].replace(/\.+$/, ""); + } + domains[list[0]] = true; + } else { + var hasIncludes = false; + for (var i = 0; i < list.length; i++) { + var domain = list[i]; + if (this.ignoreTrailingDot) { + domain = domain.replace(/\.+$/, ""); + } + if (domain == "") { + continue; + } + var include; + if (domain.charAt(0) == "~") { + include = false; + domain = domain.substr(1); + } else { + include = true; + hasIncludes = true; + } + if (!domains) { + domains = createDict(); + } + domains[domain] = include; + } + domains[""] = !hasIncludes; + } + this.domainSource = null; + } + return this.domains; + }, + sitekeys: null, + isActiveOnDomain: function (docDomain, sitekey) { + if (this.getSitekeys() && (!sitekey || this.getSitekeys().indexOf(sitekey.toUpperCase()) < 0)) { + return false; + } + if (!this.getDomains()) { + return true; + } + if (!docDomain) { + return this.getDomains()[""]; + } + if (this.ignoreTrailingDot) { + docDomain = docDomain.replace(/\.+$/, ""); + } + docDomain = docDomain.toUpperCase(); + while (true) { + if (docDomain in this.getDomains()) { + return this.domains[docDomain]; + } + var nextDot = docDomain.indexOf("."); + if (nextDot < 0) { + break; + } + docDomain = docDomain.substr(nextDot + 1); + } + return this.domains[""]; + }, + isActiveOnlyOnDomain: function (docDomain) { + if (!docDomain || !this.getDomains() || this.getDomains()[""]) { + return false; + } + if (this.ignoreTrailingDot) { + docDomain = docDomain.replace(/\.+$/, ""); + } + docDomain = docDomain.toUpperCase(); + for (var domain in this.getDomains()) { + if (this.domains[domain] && domain != docDomain && (domain.length <= docDomain.length || domain.indexOf("." + docDomain) != domain.length - docDomain.length - 1)) { + return false; + } + } + return true; + } +}); + +function RegExpFilter(text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys) { + ActiveFilter.call(this, text, domains, sitekeys); + if (contentType != null) { + this.contentType = contentType; + } + if (matchCase) { + this.matchCase = matchCase; + } + if (thirdParty != null) { + this.thirdParty = thirdParty; + } + if (sitekeys != null) { + this.sitekeySource = sitekeys; + } + if (regexpSource.length >= 2 && regexpSource.charAt(0) == "/" && regexpSource.charAt(regexpSource.length - 1) == "/") { + var regexp = new RegExp(regexpSource.substr(1, regexpSource.length - 2), this.matchCase ? "" : "i"); + this.regexp = regexp; + } else { + this.regexpSource = regexpSource; + } +} + +extend(RegExpFilter, ActiveFilter, { + domainSourceIsUpperCase: true, + length: 1, + domainSeparator: "|", + regexpSource: null, + getRegexp: function () { + var prop = getOwnPropertyDescriptor(this, "regexp"); + if (prop) { + return prop; + } + var source = this.regexpSource.replace(/\*+/g, "*").replace(/\^\|$/, "^").replace(/\W/g, "\\$&").replace(/\\\*/g, ".*").replace(/\\\^/g, "(?:[\\x00-\\x24\\x26-\\x2C\\x2F\\x3A-\\x40\\x5B-\\x5E\\x60\\x7B-\\x7F]|$)").replace(/^\\\|\\\|/, "^[\\w\\-]+:\\/+(?!\\/)(?:[^\\/]+\\.)?").replace(/^\\\|/, "^").replace(/\\\|$/, "$").replace(/^(\.\*)/, "").replace(/(\.\*)$/, ""); + var regexp = new RegExp(source, this.matchCase ? "" : "i"); + this.regexp = regexp; + return regexp; + }, + contentType: 2147483647, + matchCase: false, + thirdParty: null, + sitekeySource: null, + getSitekeys: function () { + var prop = getOwnPropertyDescriptor(this, "sitekeys"); + if (prop) { + return prop; + } + var sitekeys = null; + if (this.sitekeySource) { + sitekeys = this.sitekeySource.split("|"); + this.sitekeySource = null; + } + this.sitekeys = sitekeys; + return this.sitekeys; + }, + matches: function (location, contentType, docDomain, thirdParty, sitekey) { + if (this.getRegexp().test(location) && this.isActiveOnDomain(docDomain, sitekey)) { + return true; + } + return false; + } +}); +RegExpFilter.prototype["0"] = "#this"; +RegExpFilter.fromText = function (text) { + var blocking = true; + var origText = text; + if (text.indexOf("@@") == 0) { + blocking = false; + text = text.substr(2); + } + var contentType = null; + var matchCase = null; + var domains = null; + var sitekeys = null; + var thirdParty = null; + var collapse = null; + var options; + var match = text.indexOf("$") >= 0 ? Filter.optionsRegExp.exec(text) : null; + if (match) { + options = match[1].toUpperCase().split(","); + text = match.input.substr(0, match.index); + for (var _loopIndex6 = 0; _loopIndex6 < options.length; ++_loopIndex6) { + var option = options[_loopIndex6]; + var value = null; + var separatorIndex = option.indexOf("="); + if (separatorIndex >= 0) { + value = option.substr(separatorIndex + 1); + option = option.substr(0, separatorIndex); + } + option = option.replace(/-/, "_"); + if (option in RegExpFilter.typeMap) { + if (contentType == null) { + contentType = 0; + } + contentType |= RegExpFilter.typeMap[option]; + } else if (option.charAt(0) == "~" && option.substr(1) in RegExpFilter.typeMap) { + if (contentType == null) { + contentType = RegExpFilter.prototype.contentType; + } + contentType &= ~RegExpFilter.typeMap[option.substr(1)]; + } else if (option == "MATCH_CASE") { + matchCase = true; + } else if (option == "~MATCH_CASE") { + matchCase = false; + } else if (option == "DOMAIN" && typeof value != "undefined") { + domains = value; + } else if (option == "THIRD_PARTY") { + thirdParty = true; + } else if (option == "~THIRD_PARTY") { + thirdParty = false; + } else if (option == "COLLAPSE") { + collapse = true; + } else if (option == "~COLLAPSE") { + collapse = false; + } else if (option == "SITEKEY" && typeof value != "undefined") { + sitekeys = value; + } else { + return new InvalidFilter(origText, "Unknown option " + option.toLowerCase()); + } + } + } + if (!blocking && (contentType == null || contentType & RegExpFilter.typeMap.DOCUMENT) && (!options || options.indexOf("DOCUMENT") < 0) && !/^\|?[\w\-]+:/.test(text)) { + if (contentType == null) { + contentType = RegExpFilter.prototype.contentType; + } + contentType &= ~RegExpFilter.typeMap.DOCUMENT; + } + try { + if (blocking) { + return new BlockingFilter(origText, text, contentType, matchCase, domains, thirdParty, sitekeys, collapse); + } else { + return new WhitelistFilter(origText, text, contentType, matchCase, domains, thirdParty, sitekeys); + } + } catch (e) { + return new InvalidFilter(origText, e); + } +}; +RegExpFilter.typeMap = { + OTHER: 1, + SCRIPT: 2, + IMAGE: 4, + STYLESHEET: 8, + OBJECT: 16, + SUBDOCUMENT: 32, + DOCUMENT: 64, + XBL: 1, + PING: 1, + XMLHTTPREQUEST: 2048, + OBJECT_SUBREQUEST: 4096, + DTD: 1, + MEDIA: 16384, + FONT: 32768, + BACKGROUND: 4, + POPUP: 268435456, + ELEMHIDE: 1073741824 +}; +RegExpFilter.prototype.contentType &= ~(RegExpFilter.typeMap.ELEMHIDE | RegExpFilter.typeMap.POPUP); + +function BlockingFilter(text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys, collapse) { + RegExpFilter.call(this, text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys); + this.collapse = collapse; +} + +extend(BlockingFilter, RegExpFilter, { + collapse: null +}); + +function WhitelistFilter(text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys) { + RegExpFilter.call(this, text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys); +} + +extend(WhitelistFilter, RegExpFilter, {}); + +function Matcher() { + this.clear(); +} + +Matcher.prototype = { + filterByKeyword: null, + keywordByFilter: null, + clear: function () { + this.filterByKeyword = createDict(); + this.keywordByFilter = createDict(); + }, + add: function (filter) { + if (filter.text in this.keywordByFilter) { + return; + } + var keyword = this.findKeyword(filter); + var oldEntry = this.filterByKeyword[keyword]; + if (typeof oldEntry == "undefined") { + this.filterByKeyword[keyword] = filter; + } else if (oldEntry.length == 1) { + this.filterByKeyword[keyword] = [oldEntry, filter]; + } else { + oldEntry.push(filter); + } + this.keywordByFilter[filter.text] = keyword; + }, + remove: function (filter) { + if (!(filter.text in this.keywordByFilter)) { + return; + } + var keyword = this.keywordByFilter[filter.text]; + var list = this.filterByKeyword[keyword]; + if (list.length <= 1) { + delete this.filterByKeyword[keyword]; + } else { + var index = list.indexOf(filter); + if (index >= 0) { + list.splice(index, 1); + if (list.length == 1) { + this.filterByKeyword[keyword] = list[0]; + } + } + } + delete this.keywordByFilter[filter.text]; + }, + findKeyword: function (filter) { + var result = ""; + var text = filter.text; + if (Filter.regexpRegExp.test(text)) { + return result; + } + var match = Filter.optionsRegExp.exec(text); + if (match) { + text = match.input.substr(0, match.index); + } + if (text.substr(0, 2) == "@@") { + text = text.substr(2); + } + var candidates = text.toLowerCase().match(/[^a-z0-9%*][a-z0-9%]{3,}(?=[^a-z0-9%*])/g); + if (!candidates) { + return result; + } + var hash = this.filterByKeyword; + var resultCount = 16777215; + var resultLength = 0; + for (var i = 0, l = candidates.length; i < l; i++) { + var candidate = candidates[i].substr(1); + var count = candidate in hash ? hash[candidate].length : 0; + if (count < resultCount || count == resultCount && candidate.length > resultLength) { + result = candidate; + resultCount = count; + resultLength = candidate.length; + } + } + return result; + }, + hasFilter: function (filter) { + return filter.text in this.keywordByFilter; + }, + getKeywordForFilter: function (filter) { + if (filter.text in this.keywordByFilter) { + return this.keywordByFilter[filter.text]; + } else { + return null; + } + }, + _checkEntryMatch: function (keyword, location, contentType, docDomain, thirdParty, sitekey) { + var list = this.filterByKeyword[keyword]; + for (var i = 0; i < list.length; i++) { + var filter = list[i]; + if (filter == "#this") { + filter = list; + } + if (filter.matches(location, contentType, docDomain, thirdParty, sitekey)) { + return filter; + } + } + return null; + }, + matchesAny: function (location, contentType, docDomain, thirdParty, sitekey) { + var candidates = location.toLowerCase().match(/[a-z0-9%]{3,}/g); + if (candidates === null) { + candidates = []; + } + candidates.push(""); + for (var i = 0, l = candidates.length; i < l; i++) { + var substr = candidates[i]; + if (substr in this.filterByKeyword) { + var result = this._checkEntryMatch(substr, location, contentType, docDomain, thirdParty, sitekey); + if (result) { + return result; + } + } + } + return null; + } +}; + +function CombinedMatcher() { + this.blacklist = new Matcher(); + this.whitelist = new Matcher(); + this.resultCache = createDict(); +} + +CombinedMatcher.maxCacheEntries = 1000; +CombinedMatcher.prototype = { + blacklist: null, + whitelist: null, + resultCache: null, + cacheEntries: 0, + clear: function () { + this.blacklist.clear(); + this.whitelist.clear(); + this.resultCache = createDict(); + this.cacheEntries = 0; + }, + add: function (filter) { + if (filter instanceof WhitelistFilter) { + this.whitelist.add(filter); + } else { + this.blacklist.add(filter); + } + if (this.cacheEntries > 0) { + this.resultCache = createDict(); + this.cacheEntries = 0; + } + }, + remove: function (filter) { + if (filter instanceof WhitelistFilter) { + this.whitelist.remove(filter); + } else { + this.blacklist.remove(filter); + } + if (this.cacheEntries > 0) { + this.resultCache = createDict(); + this.cacheEntries = 0; + } + }, + findKeyword: function (filter) { + if (filter instanceof WhitelistFilter) { + return this.whitelist.findKeyword(filter); + } else { + return this.blacklist.findKeyword(filter); + } + }, + hasFilter: function (filter) { + if (filter instanceof WhitelistFilter) { + return this.whitelist.hasFilter(filter); + } else { + return this.blacklist.hasFilter(filter); + } + }, + getKeywordForFilter: function (filter) { + if (filter instanceof WhitelistFilter) { + return this.whitelist.getKeywordForFilter(filter); + } else { + return this.blacklist.getKeywordForFilter(filter); + } + }, + isSlowFilter: function (filter) { + var matcher = filter instanceof WhitelistFilter ? this.whitelist : this.blacklist; + if (matcher.hasFilter(filter)) { + return !matcher.getKeywordForFilter(filter); + } else { + return !matcher.findKeyword(filter); + } + }, + matchesAnyInternal: function (location, contentType, docDomain, thirdParty, sitekey) { + var candidates = location.toLowerCase().match(/[a-z0-9%]{3,}/g); + if (candidates === null) { + candidates = []; + } + candidates.push(""); + var blacklistHit = null; + for (var i = 0, l = candidates.length; i < l; i++) { + var substr = candidates[i]; + if (substr in this.whitelist.filterByKeyword) { + var result = this.whitelist._checkEntryMatch(substr, location, contentType, docDomain, thirdParty, sitekey); + if (result) { + return result; + } + } + if (substr in this.blacklist.filterByKeyword && blacklistHit === null) { + blacklistHit = this.blacklist._checkEntryMatch(substr, location, contentType, docDomain, thirdParty, sitekey); + } + } + return blacklistHit; + }, + matchesAny: function (location, docDomain) { + var key = location + " " + docDomain + " "; + if (key in this.resultCache) { + return this.resultCache[key]; + } + var result = this.matchesAnyInternal(location, 0, docDomain, null, null); + if (this.cacheEntries >= CombinedMatcher.maxCacheEntries) { + this.resultCache = createDict(); + this.cacheEntries = 0; + } + this.resultCache[key] = result; + this.cacheEntries++; + return result; + } +}; + +var userrulesMatcher = new CombinedMatcher(); +var defaultMatcher = new CombinedMatcher(); + +var direct = 'DIRECT;'; + +for (var i = 0; i < userrules.length; i++) { + userrulesMatcher.add(Filter.fromText(userrules[i])); +} + +for (var i = 0; i < rules.length; i++) { + defaultMatcher.add(Filter.fromText(rules[i])); +} + +function FindProxyForURL(url, host) { + if (userrulesMatcher.matchesAny(url, host) instanceof BlockingFilter) { + return proxy; + } + if (userrulesMatcher.matchesAny(url, host) instanceof WhitelistFilter) { + return direct; + } + // Hack for Geosite, it provides a whitelist... + if (defaultMatcher.matchesAny(url, host) instanceof WhitelistFilter) { + return direct; + } + if (defaultMatcher.matchesAny(url, host) instanceof BlockingFilter) { + return proxy; + } + return direct; +} + +module.exports = { + FindProxyForURL +} \ No newline at end of file diff --git a/packages/mitmproxy/src/lib/proxy/middleware/source/pac.txt.js b/packages/mitmproxy/src/lib/proxy/middleware/source/pac.txt.js new file mode 100644 index 00000000..41c3f32a --- /dev/null +++ b/packages/mitmproxy/src/lib/proxy/middleware/source/pac.txt.js @@ -0,0 +1,2 @@ +const pacText = 'W0F1dG9Qcm94eSAwLjIuOV0KISBDaGVja3N1bTogNTk5azJvRHNZYTJUb2V5eFBoeDl6dwohIEV4cGlyZXM6IDZoCiEgVGl0bGU6IEdGV0xpc3Q0TEwKISBHRldMaXN0IHdpdGggRVZFUllUSElORyBpbmNsdWRlZAohIExhc3QgTW9kaWZpZWQ6IFdlZCwgMTggTm92IDIwMjAgMTk6NDk6NTkgLTA1MDAKIQohIEhvbWVQYWdlOiBodHRwczovL2dpdGh1Yi5jb20vZ2Z3bGlzdC9nZndsaXN0CiEgTGljZW5zZTogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9vbGQtbGljZW5zZXMvbGdwbC0yLjEudHh0CiEKISBHRldMaXN0IGlzIHVubGlrZWx5IHRvIGZ1bGx5IGNvbXByaXNlIHRoZSByZWFsCiEgcnVsZXMgYmVpbmcgZGVwbG95ZWQgaW5zaWRlIEdGVyBzeXN0ZW0uIFdlIHRyeQohIG91ciBiZXN0IHRvIGtlZXAgdGhlIGxpc3QgdXAgdG8gZGF0ZS4gUGxlYXNlCiEgY29udGFjdCB1cyByZWdhcmRpbmcgVVJMIHN1Ym1pc3Npb24gLyByZW1vdmFsLAohIG9yIHN1Z2dlc3Rpb24gLyBlbmhhbmNlbWVudCBhdCBpc3N1ZSB0cmFja2VyOgohIGh0dHBzOi8vZ2l0aHViLmNvbS9nZndsaXN0L2dmd2xpc3QvaXNzdWVzLy4KCiEtLS0tLS0tLS00MDMvNDUxLzUyMCAmIFVSTCBSZWRpcmVjdHMtLS0tLS0tLS0KIS0tZWhlbnRhaQp8aHR0cDovLzg1LjE3LjczLjMxLwohLS18fGFkb3JhbWEuY29tCnx8YWduZXNiLmZyCnx8YWtpYmEtd2ViLmNvbQp8fGFsdHJlYy5jb20KfHxhbmdlbGEtbWVya2VsLmRlCnx8YW5nb2xhLm9yZwp8fGFwYXJ0bWVudHJhdGluZ3MuY29tCnx8YXBhcnRtZW50cy5jb20KfHxhcmVuYS50YWlwZWkKfHxhc2lhbnNwaXNzLmNvbQp8fGFzc2ltcC5vcmcKfHxhdGhlbmFlaXpvdS5jb20KfHxhenVidS50dgp8fGJhbmttb2JpbGV2aWJlLmNvbQp8fGJhbm9ydGUuY29tCnx8YmFzaC1oYWNrZXJzLm9yZwp8fGJlZWcuY29tCnx8Z2xvYmFsLmJpbmcuY29tCnx8Ymxvb21iZXJndmlldy5jb20KfHxib29rdG9waWEuY29tLmF1Cnx8Ym95c21hc3Rlci5jb20KfHxieW5ldC5jby5pbAp8fGNhcmZheC5jb20KLmNhc2lub2JlbGxpbmkuY29tCnx8Y2FzaW5vYmVsbGluaS5jb20KfHxjZW50YXVyby5jb20uYnIKfHxjaG9iaXQuY2MKfHxjbGVhcnN1cmFuY2UuY29tCnx8aW1hZ2VzLmNvbWljby50dwp8fHN0YXRpYy5jb21pY28udHcKfHxjb3VudGVyLnNvY2lhbAp8fGNvc3Rjby5jb20KfHxjcm9zc2ZpcmUuY28ua3IKfHxkMnBhc3MuY29tCnx8ZGFycGEubWlsCnx8ZGF3YW5naWRjLmNvbQp8fGRlZXplci5jb20KfHxkZXNpcHJvLmRlCnx8ZGluZ2NoaW4uY29tLnR3Cnx8ZGlzY29yZC5jb20KfHxkaXNjb3JkLmdnCnx8ZGlzY29yZGFwcC5jb20KfHxkaXNjb3JkYXBwLm5ldAp8fGRpc2guY29tCnxodHRwOi8vaW1nLmRsc2l0ZS5qcC8KfHxkbTUzMC5uZXQKc2hhcmUuZG1oeS5vcmcKfHxkbWh5Lm9yZwp8fGRtbS5jby5qcAp8aHR0cDovL3d3dy5kbW0uY29tL25ldGdhbWUKfHxkbnZvZC50dgp8fGR1Ym94LmNvbQp8fGR2ZHBhYy5jb20KfHxlZXN0aS5lZQp8fGVzdXJhbmNlLmNvbQouZXhwZWt0LmNvbQp8fGV4cGVrdC5jb20KLmV4dG1hdHJpeC5jb20KfHxleHRtYXRyaXguY29tCnx8ZmFra3UubmV0Cnx8ZmFzdHBpYy5ydQp8fGZpbGVzb3IuY29tCnx8ZmluYW5jZXR3aXR0ZXIuY29tCnx8ZmxpcGJvYXJkLmNvbQp8fGZsaXR0by5jb20KfHxmbmFjLmJlCnx8Zm5hYy5jb20KfHxmdW5reWltZy5jb20KfHxmeG5ldHdvcmtzLmNvbQp8fGctYXJlYS5vcmcKfHxnZXR0eWltYWdlcy5jb20KfHxnZXR1cGxvYWRlci5jb20KIS0tfGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9ncmFtdGhpbmsvemhhbwp8aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Byb2dyYW10aGluay96aGFvCnx8Z2xhc3M4LmV1Cnx8Z2x5cGUuY29tCnx8Z28xNDEuY29tCnx8Z3VvLm1lZGlhCnx8aGF1dGVsb29rLmNvbQp8fGhhdXRlbG9va2Nkbi5jb20KfHx3ZWdvLmhlcmUuY29tCnx8Z2FtZXItY2RzLmNkbi5oaW5ldC5uZXQKfHxnYW1lcjItY2RzLmNkbi5oaW5ldC5uZXQKfHxobXZkaWdpdGFsLmNhCnx8aG12ZGlnaXRhbC5jb20KfHxob21lZGVwb3QuY29tCnx8aG9vdmVycy5jb20KfHxodWx1LmNvbQp8fGh1bHVpbS5jb20KfGh0dHA6Ly9zZWN1cmUuaHVzdGxlci5jb20KfGh0dHA6Ly9odXN0bGVyY2FzaC5jb20KfGh0dHA6Ly93d3cuaHVzdGxlcmNhc2guY29tCnx8aHlicmlkLWFuYWx5c2lzLmNvbQp8fGNkbiouaS1zY21wLmNvbQp8fGlsb3ZlbG9uZ3RvZXMuY29tCnxodHRwOi8vaW1nbWVnYS5jb20vKi5naWYuaHRtbAp8aHR0cDovL2ltZ21lZ2EuY29tLyouanBnLmh0bWwKfGh0dHA6Ly9pbWdtZWdhLmNvbS8qLmpwZWcuaHRtbAp8aHR0cDovL2ltZ21lZ2EuY29tLyoucG5nLmh0bWwKfHxpbWxpdmUuY29tCnx8dHcuaXFpeWkuY29tCnx8amF2aHViLm5ldAp8fGphdmh1Z2UuY29tCi5qYXZsaWJyYXJ5LmNvbQp8fGphdmxpYnJhcnkuY29tCnx8amNwZW5uZXkuY29tCnx8amltcy5uZXQKfHxqdWt1am8tY2x1Yi5jb20KfHxqdWxpZXBvc3QuY29tCnx8a2F3YWlpa2F3YWlpLmpwCnx8a2VuZGF0aXJlLmNvbQp8fGtoYXRyaW1hemEub3JnCnx8a2tib3guY29tCnx8bGVpc3VyZXByby5jb20KfHxsaWZlbWlsZXMuY29tCnx8bG9uZ3RvZXMuY29tCnx8bG92ZXR2c2hvdy5jb20KfGh0dHA6Ly93d3cubS1zcG9ydC5jby51awp8fG1hY2dhbWVzdG9yZS5jb20KfHxtYWRvbm5hLWF2LmNvbQp8fG1hbmdhZm94LmNvbQp8fG1hbmdhZm94Lm1lCnx8bWFudGEuY29tCnx8bWF0b21lLXBsdXMuY29tCnx8bWF0b21lLXBsdXMubmV0Cnx8bWF0dHdpbGNveC5uZXQKfHxtZXRhcnRodW50ZXIuY29tCnx8bWZ4bWVkaWEuY29tCnx8bW9qaW0uY29tCnx8a2IubW9uaXRvcndhcmUuY29tCnx8bW9uc3Rlci5jb20KfHxtb29keXouY29tCnx8bW9vbmJpbmdvLmNvbQp8fG1vcy5ydQp8fG1zaGEuZ292Cnx8bXV6dS50dgp8fG12Zy5qcAoubXliZXQuY29tCnx8bXliZXQuY29tCnx8bmF0aW9ud2lkZS5jb20KfGh0dHA6Ly93d3cubmJjLmNvbS9saXZlCnx8bmVvLW1pcmFjbGUuY29tCnx8bmV0ZmxpeC5jb20KfHxuZmx4aW1nLmNvbQp8fG5mbHhpbWcubmV0Cnx8bmZseGV4dC5jb20KfHxuZmx4c28ubmV0Cnx8bmZseHZpZGVvLm5ldAp8fG5pYy5nb3YKfGh0dHA6Ly9tby5uaWdodGxpZmUxNDEuY29tCnx8bm9yZHN0cm9tLmNvbQp8fG5vcmRzdHJvbWltYWdlLmNvbQp8fG5vcmRzdHJvbXJhY2suY29tCnx8bm90dGluZ2hhbXBvc3QuY29tCnx8bnBzYm9vc3QuY29tCnx8bnRkdHYuY3oKfHxzMS5udWRlenouY29tCnx8bnVzYXRyaXAuY29tCnx8bnV1dmVtLmNvbQp8fG9tbmk3LmpwCnx8b25hcHAuY29tCiEtLVdlIGFyZSBjb25mdXNlZCBhcyB3ZWxsCnx8b250cmFjLmNvbQpAQHxodHRwOi8vYmxvZy5vbnRyYWMuY29tCnx8cGFuZG9yYS5jb20KLnBhbmRvcmEudHYKfHxwYXJrYW5za3kuY29tCnx8cGhtc29jaWV0eS5vcmcKfGh0dHA6Ly8qLnBpbWcudHcvCnx8cHVyZTE4LmNvbQp8fHB5dG9yY2gub3JnCnx8cXEuY28uemEKfHxyMTguY29tCnxodHRwOi8vcmFkaWtvLmpwCnx8cmFtY2l0eS5jb20uYXUKfHxyZC5jb20KfHxyZGlvLmNvbQp8aHR0cHM6Ly9yaXNldXAubmV0Cnx8c2FkaXN0aWMtdi5jb20KfHxpc2Muc2Fucy5lZHUKfGh0dHA6Ly9jZG4qLnNlYXJjaC54eHgvCnx8c2hpa3NoYS5jb20KfHxzbGFja2VyLmNvbQp8fHNtLW1pcmFjbGUuY29tCnx8c295bGVudG5ld3Mub3JnCnx8c3BvdGlmeS5jb20KfHxzcHJlYWRzaGlydC5lcwp8fHNwcmluZ2JvYXJkcGxhdGZvcm0uY29tCnx8c3ByaXRlLm9yZwpAQHxodHRwOi8vc3RvcmUuc3ByaXRlLm9yZwp8fHN1cGVyb2theWFtYS5jb20KfHxzdXBlcnBhZ2VzLmNvbQp8fHN3YWdidWNrcy5jb20KfHxzd2l0Y2gxLmpwCnx8dGFwYW53YXAuY29tCnx8Z3NwLnRhcmdldC5jb20KfHxsb2dpbi50YXJnZXQuY29tCiEtLUBAfHxpbnRsLnRhcmdldC5jb20KfHxyY2FtLnRhcmdldC5jb20KfHx0aGlua2dlZWsuY29tCnx8dGhlYm9keXNob3AtdXNhLmNvbQp8fHRtYS5jby5qcAp8fHRyYWNmb25lLmNvbQp8fHRyeWhlYXJ0LmpwCnx8dHVybnRhYmxlLmZtCnx8dHdlcmtpbmdidXR0LmNvbQp8fHVsb3AubmV0Cnx8dXVrYW5zaHUuY29tCnx8dmVnYXNyZWQuY29tCnx8dmV2by5jb20KfHx2aXAtZW50ZXJwcmlzZS5jb20KfGh0dHA6Ly92aXUudHYvY2gvCnxodHRwOi8vdml1LnR2L2VuY29yZS8KfHx2bXBzb2Z0LmNvbQp8aHR0cDovL2Vjc20udnMuY29tLwp8fHdhbnotZmFjdG9yeS5jb20KfHxzc2wud2VicGFjay5kZQp8fHdoZXJldG93YXRjaC5jb20KfHx3aW5nYW1lc3RvcmUuY29tCnx8d2l6Y3JhZnRzLm5ldAp8fHZvZC53d2UuY29tCnx8eGZpbml0eS5jb20KfHx5b3V3aW4uY29tCnx8eXRuLmNvLmtyCnx8emF0dG9vLmNvbQp8fHppbS52bgp8fHpvem90b3duLmNvbQoKISMjIyMjIyMjIyMjIyMjR2VuZXJhbCBMaXN0IFN0YXJ0IyMjIyMjIyMjIyMjIyMjCiEtLS0tLS0tLS0tLS0tLS0tLS0tUHVyZSBJUC0tLS0tLS0tLS0tLS0tLS0tLS0tLQoxNC4xMDIuMjUwLjE4CjE0LjEwMi4yNTAuMTkKNTAuNy4zMS4yMzA6ODg5OAoxNzQuMTQyLjEwNS4xNTMKNjkuNjUuMTkuMTYwCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUlETi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfHx4bi0tNGdxMTcxcC5jb20KfHx4bi0tY3pxNzVwdnYxYWo1Yy5vcmcKfHx4bi0taTJydThxMnFnLmNvbQp8fHhuLS1vaXEuY2MKfHx4bi0tcDhqOWEwZDljOWEueG4tLXE5anliNGMKCiEtLS0tLS0tLS0tLS0tLS0tLUROUyBQb2lzb25pbmctLS0tLS0tLS0tLS0tLS0tLQohLS0tQW1hem9uLS0tCiEtfHxjZG4taW1hZ2VzLm1haWxjaGltcC5jb20KfHxhYmVib29rcy5jb20KfGh0dHBzOi8vKi5zMy5hbWF6b25hd3MuY29tCnx8czMtYXAtc291dGhlYXN0LTIuYW1hem9uYXdzLmNvbQoKfHw0MzExMC5jZgp8fDlnYWcuY29tCnx8YWdyby5oawp8fHNoYXJlLmFtZXJpY2EuZ292Cnx8YXBrbWlycm9yLmNvbQp8fGFydGUudHYKfHxhcnRzdGF0aW9uLmNvbQp8fGJhbmdkcmVhbS5zcGFjZQp8fGJlaGFuY2UubmV0Cnx8YmlyZC5zbwp8fHpoLmJpdHRlcndpbnRlci5vcmcKfHxibm4uY28KfHxidXNpbmVzc2luc2lkZXIuY29tCnx8Ym9vbXNzci5jb20KfHxid2d5aHcuY29tCnx8Y2FzdGJveC5mbQp8fGNoaW5hdGltZXMuY29tCnx8Y2x5cC5pdAp8fGNtY24ub3JnCnx8Y214LmltCnx8ZGFpbHl2aWV3LnR3Cnx8ZGF1bS5uZXQKfHxkZXBvc2l0cGhvdG9zLmNvbQp8fGRpc2Nvbm5lY3QubWUKfHxkb2N1bWVudGluZ3JlYWxpdHkuY29tCnx8ZG91YmliYWNrdXAuY29tCnx8ZG91Ym1pcnJvci5jZgp8fGVuY3ljbG9wZWRpYS5jb20KfHxmYW5nZXFpYW5nLmNvbQp8fGZhbnFpYW5nZGFuZy5jb20KfHxmZWVkbHkuY29tCnx8ZmVlZHgubmV0Cnx8Zmx5enkyMDA1LmNvbQp8fGZvcmVpZ25wb2xpY3kuY29tCnx8ZnJlZS1zcy5zaXRlCnx8ZnJlZWhvbmdrb25nLm9yZwp8fGJsb2cuZnVja2dmdzIzMy5vcmcKfHxnMHYuc29jaWFsCnx8Z2xvYmFsdm9pY2VzLm9yZwp8fGdsb3J5c3Rhci5tZQp8fGdvcmVncmlzaC5jb20KfHxndWFuZ25pYW52cG4uY29tCnx8aGFuaW1lLnR2Cnx8aGJvLmNvbQp8fHNwYWNlcy5oaWdodGFpbC5jb20KfHxoa2dhbGRlbi5jb20KfHxoa2dvbGRlbi5jb20KfHxodWRzb24ub3JnCnx8aXBmcy5pbwp8fGphcGFudGltZXMuY28uanAKfHxqaWppLmNvbQp8fGppbnRpYW4ubmV0Cnx8amlueC5jb20KfHxqb2lubWFzdG9kb24ub3JnCnx8bGlhbmd6aGljaHVhbm1laS5jb20KfHxsaWdodGkubWUKfHxsaWdodHllYXJ2cG4uY29tCnx8bGloa2cuY29tCnx8bGluZS1zY2RuLm5ldAp8fGkubGl0aGl1bS5jb20KfHxjbG91ZC5tYWlsLnJ1Cnx8Y2RuLWltYWdlcy5tYWlsY2hpbXAuY29tCnx8bWFzdG9kb24uY2xvdWQKfHxtYXN0b2Rvbi5ob3N0Cnx8bWFzdG9kb24uc29jaWFsCnx8bWF0dGVycy5uZXdzCnx8bWUubWUKfHxtZXRhcnQuY29tCnx8bW9odS5jbHViCnx8bW9odS5tbAp8fG1vdGl5dW4uY29tCnx8bXNhLWl0Lm9yZwp8fGRpY3Rpb25hcnkuZ29vLm5lLmpwCnx8Z28ubmVzbm9kZS5jb20KfHxpbnRlcm5hdGlvbmFsLW5ld3MubmV3c21hZ2F6aW5lLmFzaWEKfHxuaWtrZWkuY29tCnx8bml0dGVyLm5ldAp8fG5pdS5tb2UKfHxub2ZpbGUuaW8KfHxub3cuY29tCnx8c3VrZWJlaS5ueWFhLnNpCnx8b3BlbnZwbi5vcmcKfHxvbmVqYXYuY29tCnx8cGFzdGUuZWUKfHxteS5wY2xvdWQuY29tCnx8cGljYWNvbWljLmNvbQp8fHBpbmNvbmcucm9ja3MKfHxwaXhpdi5uZXQKfHxwb3RhdG8uaW0KfHxwcmVtcHJveHkuY29tCnx8cHJpc20tYnJlYWsub3JnCnx8cHJvdG9udnBuLmNvbQp8fGFwaS5wdXJlYXBrLmNvbQp8fHF1b3JhLmNvbQp8fHF1b3JhY2RuLm5ldAp8fHF6LmNvbQp8fGNkbi5zZWF0Z3VydS5jb20KfHxzZWN1cmUucmF4Y2RuLmNvbQp8fHJlZGQuaXQKfHxyZWRkaXQuY29tCi5yZWRkaXRsaXN0LmNvbQp8aHR0cDovL3JlZGRpdGxpc3QuY29tCnx8cmVkZGl0bWVkaWEuY29tCnx8cmVkZGl0c3RhdGljLmNvbQp8fHJpeGNsb3VkLmNvbQp8fHJpeGNsb3VkLnVzCnx8cnNkbG1vbml0b3IuY29tCnx8c2hhZG93c29ja3MuYmUKfHxzaGFkb3dzb2NrczkuY29tCnx8dG4xLnNoZW1hbGV6LmNvbQp8fHRuMi5zaGVtYWxlei5jb20KfHx0bjMuc2hlbWFsZXouY29tCnx8c3RhdGljLnNoZW1hbGV6LmNvbQp8fHNpeC1kZWdyZWVzLmlvCnx8c29mdGZhbW91cy5jb20KfHxzb2Z0c21pcnJvci5jZgp8fHNvc3JlYWRlci5jb20KfHxzc3BhbmVsLm5ldAp8fHN1bGlhbi5tZQp8fHN1cGNoaW5hLmNvbQp8fHRlZGR5c3VuLmNvbQp8fHRleHRub3cubWUKfHx0aW5leWUuY29tCnx8dG9wMTB2cG4uY29tCnx8dHViZXBvcm5jbGFzc2ljLmNvbQp8fHVrdS5pbQp8fHVuc2Vlbi5pcwp8fGNuLnVwdG9kb3duLmNvbQp8fHVyYWJhbi5tZQp8fHZyc21hc2guY29tCnx8dnVsdHJ5aHcuY29tCnx8c2NhY2hlLnZ6dy5jb20KfHxzY2FjaGUxLnZ6dy5jb20KfHxzY2FjaGUyLnZ6dy5jb20KfHxzczcudnp3LmNvbQp8fHNzci50b29scwp8fHN0ZWVtaXQuY29tCnx8dGFpd2FuanVzdGljZS5uZXQKfHx0aW5jLXZwbi5vcmcKfHx1MTUuaW5mbwp8fHdhc2hpbmd0b25wb3N0LmNvbQp8fHdlbnpoYW8uY2EKfHx3aGF0c29ud2VpYm8uY29tCnx8d2lyZS5jb20KfHxibG9nLndvcmtmbG93LmlzCnx8eG0uY29tCnx8eHVlaHVhLnVzCnx8eWVzLW5ld3MuY29tCnx8eWlnZW5pLmNvbQp8fHlvdS1nZXQub3JnCnx8enpjbG91ZC5tZQoKIS0tLURpZ2l0YWwgQ3VycmVuY3kgRXhjaGFuZ2UoQ1JZUFRPKS0tLQp8fGFleC5jb20KfHxhbGxjb2luLmNvbQp8fGFkY2V4LmNvbQp8fGJjZXguY2EKfHxiaWJveC5jb20KfHxiaWcub25lCnx8YmluYW5jZS5jb20KfHxiaXQtei5jb20KfHxiaXRjb2lud29ybGQuY29tCnx8Yml0ZmluZXguY29tCnx8Yml0aHVtYi5jb20KfHxiaXRpbmthLmNvbS5hcgp8fGJpdG1leC5jb20KfHxidGM5OC5jb20KfHxidGNiYW5rLmJhbmsKfHxidGN0cmFkZS5pbQp8fGMyY3guY29tCnx8Y2hhb2V4LmNvbQp8fGNvYmluaG9vZC5jb20KfHxjb2luMmNvLmluCnx8Y29pbmJlbmUuY29tCi5jb2luZWdnLmNvbQp8fGNvaW5lZ2cuY29tCnx8Y29pbmV4LmNvbQohLS18aHR0cHM6Ly93d3cuY29pbmV4Y2hhbmdlLmlvLwp8fGNvaW5naS5jb20KfHxjb2lucmFpbC5jby5rcgp8fGNvaW50aWdlci5jb20KfHxjb2ludG9iZS5jb20KfHxjb2ludXQuY29tCnx8ZGlzY29pbnMuY29tCnx8ZHJhZ29uZXguaW8KfHxlYnRjYmFuay5jb20KfHxldGhlcmRlbHRhLmNvbQp8fGV4bW8uY29tCnx8ZXhyYXRlcy5tZQp8fGV4eC5jb20KfHxmYXRidGMuY29tCnx8Z2F0ZS5pbwp8fGdhdGVjb2luLmNvbQp8fGhiZy5jb20KfHxoaXRidGMuY29tCnx8aHVvYmkuY29tCnx8aHVvYmkucHJvCnx8aHVvYmlwcm8uY29tCnx8YnguaW4udGgKfHxqZXguY29tCnx8a2V4LmNvbQp8fGtzcGNvaW4uY29tCnx8a3Vjb2luLmNvbQp8fGxiYW5rLmluZm8KfHxsaXZlY29pbi5uZXQKfHxsb2NhbGJpdGNvaW5zLmNvbQp8fG1lcmNhdG94LmNvbQp8fG9leC5jb20KfHxva2V4LmNvbQp8fG90Y2J0Yy5jb20KfHxyaWdodGJ0Yy5jb20KfHx0b3BidGMuY29tCnx8eGJ0Y2UuY29tCnx8eW9iaXQubmV0Cnx8emIuY29tCgohLS0tLS0tLS0tLS0tLS0tLUZyYXVkcyAmIFNjYW1zLS0tLS0tLS0tLS0tLS0tLS0KISEtLS1Db250ZW50IEZhcm0oZmFrZSA1MDAgZXJyb3IpLS0tCnx8cmVhZDAxLmNvbQp8fGtrbmV3cy5jYwoKY2hpbmEtbW1tLmpwLm5ldAoubHN4c3p6Zy5jb20KLmNoaW5hLW1tbS5uZXQKfHxjaGluYS1tbW0ubmV0CmNoaW5hLW1tbS5zYS5jb20KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS1Hcm91cHMtLS0tLS0tLS0tLS0tLS0tLS0tLQohIS0tLUFmcmFpZCBGcmVlRE5TLS0tCi5hbGxvd2VkLm9yZwoubm93LmltCgohIS0tLUFtYXpvbi0tLQp8fGFtYXpvbi5jby5qcAouYW1hem9uLmNvbS9EYWxhaS1MYW1hCmFtYXpvbi5jb20vUHJpc29uZXItU3RhdGUtU2VjcmV0LUpvdXJuYWwtUHJlbWllcgpzMy1hcC1ub3J0aGVhc3QtMS5hbWF6b25hd3MuY29tCgohIS0tLUFPTC0tLQp8fGFvbGNoYW5uZWxzLmFvbC5jb20KdmlkZW8uYW9sLmNhL3ZpZGVvLWRldGFpbAp2aWRlby5hb2wuY28udWsvdmlkZW8tZGV0YWlsCnZpZGVvLmFvbC5jb20KfHx2aWRlby5hb2wuY29tCnx8c2VhcmNoLmFvbC5jb20Kd3d3LmFvbG5ld3MuY29tCgohIS0tLUF2TW9vLS0tCi5hdm1vLnB3CiEtLXxodHRwOi8vYXZtby5wdwouYXZtb28uY29tCnxodHRwOi8vYXZtb28uY29tCi5hdm1vby5uZXQKfGh0dHA6Ly9hdm1vby5uZXQKfHxhdm1vby5wdwouamF2bW9vLnh5egp8aHR0cDovL2phdm1vby54eXoKLmphdnRhZy5jb20KfGh0dHA6Ly9qYXZ0YWcuY29tCi5qYXZ6b28uY29tCnxodHRwOi8vamF2em9vLmNvbQoudGVsbG1lLnB3CgohIS0tLUJCQy0tLQohLS0uYmJjLmNvLnVrL2Jsb2dzCiEtLS5iYmMuY28udWsvY2hpbmVzZQohLS0uYmJjLmNvLnVrL25ld3Mvd29ybGQtYXNpYS1jaGluYQohLS0uYmJjLmNvLnVrL3R2CiEtLS5iYmMuY28udWsvemhvbmd3ZW4KIS0tLmJiYy5jb20vdWtjaGluYQohLS0uYmJjLmNvbS96aG9uZ3dlbgohLS0uYmJjLmNvbSUyRnpob25nd2VuCiEtLW5ld3MuYmJjLmNvLnVrL29udGhpc2RheSpuZXdzaWRfMjQ5NjAwMC8yNDk2Mjc3CiEtLW5ld3Nmb3J1bXMuYmJjLmNvLnVrCi5iYmMuY29tCnx8YmJjLmNvbQouYmJjLmNvLnVrCnx8YmJjLmNvLnVrCnx8YmJjaS5jby51awouYmJjY2hpbmVzZS5jb20KfHxiYmNjaGluZXNlLmNvbQp8aHR0cDovL2JiYy5pbgoKISEtLS1DaGFuZ2VJUC0tLQouMWR1bWIuY29tCi4yNXUuY29tCi4yd2FreS5jb20KLjMtYS5uZXQKLjRkcS5jb20KLjRteWRvbWFpbi5jb20KLjRwdS5jb20KLmFjbWV0b3kuY29tCi5hbG1vc3RteS5jb20KLmFtZXJpY2FudW5maW5pc2hlZC5jb20KLmF1dGhvcml6ZWRkbnMubmV0Ci5hdXRob3JpemVkZG5zLm9yZwouYXV0aG9yaXplZGRucy51cwouYmlnbW9uZXkuYml6Ci5jaGFuZ2VpcC5uYW1lCi5jaGFuZ2VpcC5uZXQKLmNoYW5nZWlwLm9yZwouY2xlYW5zaXRlLmJpegouY2xlYW5zaXRlLmluZm8KLmNsZWFuc2l0ZS51cwouY29tcHJlc3MudG8KLmRkbnMuaW5mbwouZGRucy5tZS51awouZGRucy5tb2JpCi5kZG5zLm1zCi5kZG5zLm5hbWUKLmRkbnMudXMKLmRoY3AuYml6Ci5kbnMtZG5zLmNvbQouZG5zLXN0dWZmLmNvbQouZG5zMDQuY29tCi5kbnMwNS5jb20KLmRuczEudXMKLmRuczIudXMKLmRuc2V0LmNvbQouZG5zcmQuY29tCi5kc210cC5jb20KLmR1bWIxLmNvbQouZHluYW1pYy1kbnMubmV0Ci5keW5hbWljZG5zLmJpegouZHluYW1pY2Rucy5jby51awouZHluYW1pY2Rucy5tZS51awouZHluYW1pY2Rucy5vcmcudWsKLmR5bmRucy5wcm8KLmR5bnNzbC5jb20KLmVkbnMuYml6Ci5lcGFjLnRvCi5lc210cC5iaXoKLmV6dWEuY29tCi5mYXFzZXJ2LmNvbQouZmFydGl0LmNvbQouZnJlZWRkbnMuY29tCi5mcmVldGNwLmNvbQouZnJlZXd3dy5iaXoKLmZyZWV3d3cuaW5mbwouZnRwMS5iaXoKLmZ0cHNlcnZlci5iaXoKLmdldHRyaWFscy5jb20KLmdvdC1nYW1lLm9yZwouZ3I4ZG9tYWluLmJpegouZ3I4bmFtZS5iaXoKLmh0dHBzNDQzLm5ldAouaHR0cHM0NDMub3JnCi5pa3diLmNvbQouaW5zdGFudGhxLmNvbQouaW93bnlvdXIuYml6Ci5pb3dueW91ci5vcmcKLmlzYXNlY3JldC5jb20KLml0ZW1kYi5jb20KLml0c2FvbC5jb20KLmpldG9zLmNvbQouamt1Yi5jb20KLmp1bmdsZWhlYXJ0LmNvbQouanVzdGRpZWQuY29tCi5sZmxpbmsuY29tCi5sZmxpbmt1cC5jb20KLmxmbGlua3VwLm5ldAoubGZsaW5rdXAub3JnCi5sb25nbXVzaWMuY29tCi5tZWZvdW5kLmNvbQoubW9uZXlob21lLmJpegoubXJiYXNpYy5jb20KLm1yYm9udXMuY29tCi5tcmZhY2UuY29tCi5tcnNsb3ZlLmNvbQoubXkwMy5jb20KLm15ZGFkLmluZm8KLm15ZGRucy5jb20KLm15ZnRwLmluZm8KLm15ZnRwLm5hbWUKLm15bGZ0di5jb20KLm15bW9tLmluZm8KLm15bmV0YXYubmV0Ci5teW5ldGF2Lm9yZwoubXludW1iZXIub3JnCi5teXBpY3R1cmUuaW5mbwoubXlwb3AzLm5ldAoubXlwb3AzLm9yZwoubXlzZWNvbmRhcnlkbnMuY29tCi5teXd3dy5iaXoKLm15ei5pbmZvCi5uaW50aC5iaXoKLm5zMDEuYml6Ci5uczAxLmluZm8KLm5zMDEudXMKLm5zMDIuYml6Ci5uczAyLmluZm8KLm5zMDIudXMKLm5zMS5uYW1lCi5uczIubmFtZQoubnMzLm5hbWUKLm9jcnkuY29tCi5vbmVkdW1iLmNvbQoub25teXBjLmJpegoub25teXBjLmluZm8KLm9ubXlwYy5uZXQKLm9ubXlwYy5vcmcKLm9ubXlwYy51cwoub3JnYW5pY2NyYXAuY29tCi5vdHpvLmNvbQoub3VyaG9iYnkuY29tCi5wY2FueXdoZXJlLm5ldAoucG9ydDI1LmJpegoucHJveHlkbnMuY29tCi5xaGlnaC5jb20KLnFwb2UuY29tCi5yZWJhdGVzcnVsZS5uZXQKLnNlbGxjbGFzc2ljcy5jb20KLnNlbmRzbXRwLmNvbQouc2VydmV1c2VyLmNvbQouc2VydmV1c2Vycy5jb20KLnNleGlkdWRlLmNvbQouc2V4eHh5LmJpegouc2l4dGguYml6Ci5zcXVpcmx5LmluZm8KLnNzbDQ0My5vcmcKLnRvaC5pbmZvCi50b3l0aGlldmVzLmNvbQoudHJpY2tpcC5uZXQKLnRyaWNraXAub3JnCi52aXp2YXouY29tCi53aGEubGEKLndpa2FiYS5jb20KLnd3dzEuYml6Ci53d3dob3N0LmJpegpAQHxodHRwOi8veHgud3d3aG9zdC5iaXoKLngyNGhyLmNvbQoueHh1ei5jb20KLnh4eHkuYml6Ci54eHh5LmluZm8KLnlndG8uY29tCi55b3Vkb250Y2FyZS5jb20KLnlvdXJ0cmFwLmNvbQouenlucy5jb20KLnp6dXguY29tCgohIS0tLUNsb3VkRnJvbnQtLS0KZDFiMTgzc2cwbnZudWguY2xvdWRmcm9udC5uZXQKfGh0dHBzOi8vZDFiMTgzc2cwbnZudWguY2xvdWRmcm9udC5uZXQKZDFjMzdnandhMjZ0YWEuY2xvdWRmcm9udC5uZXQKfGh0dHBzOi8vZDFjMzdnandhMjZ0YWEuY2xvdWRmcm9udC5uZXQKZDNjMzNoY2dpd2V2My5jbG91ZGZyb250Lm5ldAp8aHR0cHM6Ly9kM2MzM2hjZ2l3ZXYzLmNsb3VkZnJvbnQubmV0Cnx8ZDNyaHI3a2dtdHJxMXYuY2xvdWRmcm9udC5uZXQKCiEhLS0tRHRETlMtLS0KISMjI2h0dHBzOi8vd3d3LmR0ZG5zLmNvbS9kdHNpdGUvZmFxCi4zZC1nYW1lLmNvbQouNGlyYy5jb20KLmIwbmUuY29tCi5jaGF0bm9vay5jb20KLmRhcmt0ZWNoLm9yZwouZGVhZnRvbmUuY29tCi5kdGRucy5uZXQKLmVmZmVycy5jb20KLmV0b3ducy5uZXQKLmV0b3ducy5vcmcKLmZsbmV0Lm9yZwouZ290Z2Vla3MuY29tCi5zY2llcm9uLmNvbQouc2x5aXAuY29tCi5zbHlpcC5uZXQKLnN1cm9vdC5jb20KCiEhLS0tRHluRE5TLS0tCiEjIyNodHRwczovL2hlbHAuZHluLmNvbS9saXN0LW9mLWR5bi1kbnMtcHJvLXJlbW90ZS1hY2Nlc3MtZG9tYWluLW5hbWVzLwouYmxvZ2Rucy5vcmcKLmR5bmRucy5vcmcKLmR5bmRucy1pcC5jb20KLmR5bmRucy1waWNzLmNvbQouZnJvbS1zZC5jb20KLmZyb20tcHIuY29tCi5pcy1hLWh1bnRlci5jb20KCiEhLS0tRHludS0tLQouZHludS5jb20KLmR5bnUubmV0Ci5mcmVlZGRucy5vcmcKCiEhLS0tRmFjZWJvb2stLS0KY2RuaW5zdGFncmFtLmNvbQp8fGNkbmluc3RhZ3JhbS5jb20KfHxmYWNlYm9vay5icgouZmFjZWJvb2suY29tCnx8ZmFjZWJvb2suY29tCiEtLS9eaHR0cHM/OlwvXC9bXlwvXStmYWNlYm9va1wuY29tLwpAQHx8djYuZmFjZWJvb2suY29tCnx8ZmFjZWJvb2suZGVzaWduCnx8Y29ubmVjdC5mYWNlYm9vay5uZXQKfHxmYWNlYm9vay5odQp8fGZhY2Vib29rLmluCnx8ZmFjZWJvb2submwKfHxmYWNlYm9vay5zZQp8fGZhY2Vib29rbWFpbC5jb20KfHxmYi5jb20KfHxmYi5tZQp8fGZiY2RuLm5ldAp8fGZic2J4LmNvbQp8fGZiYWRkaW5zLmNvbQp8fGZid29ya21haWwuY29tCi5pbnN0YWdyYW0uY29tCnx8aW5zdGFncmFtLmNvbQp8fG0ubWUKfHxtZXNzZW5nZXIuY29tCnx8b2N1bHVzLmNvbQp8fG9jdWx1c2Nkbi5jb20KfHxyb2Nrc2RiLm9yZwpAQHx8aXA2LnN0YXRpYy5zbC1yZXZlcnNlLmNvbQp8fHRoZWZhY2Vib29rLmNvbQp8fHdoYXRzYXBwLmNvbQp8fHdoYXRzYXBwLm5ldAoKISEtLS1GVENoaW5lc2UtLS0KLmZ0Y2hpbmVzZS5jb20KfHxmdGNoaW5lc2UuY29tCiEtLS5mdGNoaW5lc2UuY29tL2NoYW5uZWwvdmlkZW8KIS0tLmZ0Y2hpbmVzZS5jb20vcHJlbWl1bS8wMDEwODEwNjYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDI3NTMKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDI2NjE2CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAyNjc0OQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMjY4MDcKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDI2ODA4CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAyNjgzNAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMjY4ODAKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDI3NDI5CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAzMDM0MQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMzA1MDIKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDMwODAzCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAzMTMxNwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMzI2MTcKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDMyNjM2CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAzMjY5MgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMzI3NjIKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDMzMTM4CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAzNDkxNwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMzQ5MjYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDM0OTI3CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAzNDkyOAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMzQ5NTIKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDM1ODkwCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAzNTk3MgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMzU5OTMKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDM2NDE3CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAzNzA5MAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMzcwOTEKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDM4MTc4CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAzODE5OQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMzgyMjAKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDM4ODE5CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAzODg2MgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMzkwNjcKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDM5MTc4CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAzOTIxMQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMzkyNzEKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDM5Mjk1CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAzOTM2OQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMzk0ODIKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDM5NTM0CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAzOTU1NQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMzk1NzYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDM5NzEyCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTAzOTc3OQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwMzk4MDkKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQwMTM0CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0MDgzNQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDA4OTAKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQwOTE4CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0MDk5MgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDEyMDkKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQyMTAwCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0MjI1MgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDIyNzIKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQyMjgwCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0MzAyOQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDMwNjYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQzMDk2CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0MzEyNAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDMxNTIKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQzMTg5CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0MzQyOAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDM0MzkKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQzNTM0CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0MzY3NQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDM2ODAKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQzNzAyCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0Mzg0OQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDQwOTkKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQ0Nzc2CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0NDg3MQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDQ4OTcKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQ1MTE0CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0NTEzOQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDUxODYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQ1NzU1CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0NjA4NwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDYxMDUKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQ2MTE4CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0NjEzMgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDY1MTcKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQ2ODIyCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0Njg2NgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDY5NDIKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQ3MTgwCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0NzIwNgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDczMDQKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQ3MzE3CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0NzM0NQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDczNTgKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQ3Mzc1CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0NzM4MQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDc0MTMKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQ3NDU2CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0NzQ5MQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDc1NDUKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQ3NTU4CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0NzU2OAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDc2MjcKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQ4MjkzCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0ODM0MwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDg3MTAKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDQ5Mjg5CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA0OTM2MAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNDk4OTYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDUwMTUyCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1MTAyNwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTExNjEKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDUxMzcyCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1MTQ3OQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTIxMzgKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDUyMTYxCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1MjUyNQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTI1NDkKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDUyNzAxCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1Mjk2NQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTMxNDkKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDUzMTUwCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1MzIwMAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTM0MjUKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDUzNDk2CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1MzUyNgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTM1NTcKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDUzOTA2CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NDA0OQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTQxMDMKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU0MTA5CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NDExOQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTQxMjMKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU0MTM5CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NDE2NgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTQxNjgKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU0MTkwCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NDQzNwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTQ1MjYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU0NjA3CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NDY0NAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTQ3ODYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU0ODQzCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NDkyNQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTQ5NDAKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU1MDUxCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NTA2MwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTUwNjkKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU1MTM2CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NTE3MAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTUyMDIKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU1MjQyCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NTI2MwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTUyNzQKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU1Mjk5CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NTQ4MAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTU1NTEKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU1NTU5CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NTU2NgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTU4NDAKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU2MDk5CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NjEwOAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTYxMzEKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU2Mzc1CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NjQ5MQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTY1MjkKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU2NTM0CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NjUzOAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTY1NDEKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU2NTU0CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NjU1NwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTY1NjAKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU2NTY3CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NjU3NAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTY1ODgKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU2NTk0CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NjU5NgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTY2ODQKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU2ODMyCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NjgzMwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTY4NTEKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU2ODc0CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1Njg5NgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTY5MjcKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU3MDExCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NzAxOAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTcwNDQKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU3MTYyCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NzUwMAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTc1MDQKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU3NTA5CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NzUxOAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTc1MzIKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU3NTMzCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NzU1NgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTc1ODAKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU3NjM4CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1NzY0NAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTc4MTcKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU3ODc1CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1ODAwOQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTgwNTYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU4MjI0CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1ODI1NwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTgyOTUKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU4MzI4CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1ODMzOQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTgzNDQKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU4MzUyCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1ODQxMwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTg0MjEKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU4NDQwCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1ODQ1OAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTg0NjgKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU4NTYxCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1ODU2NgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTg1NjcKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU4NTg1CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1ODYyOAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTg2NTYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU4NjY1CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1ODY3OAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTg2OTEKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU4NzIxCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1ODcyOAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTk0NjQKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU5NDg0CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1OTUzNwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTk1MzgKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU5NTUxCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1OTgxOAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNTk5MTQKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDU5OTIwCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA1OTk1NwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjAwODgKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYwMTU2CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MDE1NwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjAxNjAKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYwMTgxCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MDE4NQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjA0OTMKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYwNDk1CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MDU5MAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjA4NDYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYwODQ3CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MDg3NQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjA5MjEKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYwOTQ2CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MTEyMAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjE0NzQKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYxNTI0CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MTY0MgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjIwMTcKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYyMDIwCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MjAyOAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjIwOTIKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYyMDk2CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MjE0NwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjIxNzYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYyMTg4CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MjI1NAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjIzNzQKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYyNDgyCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MjQ5NgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjI1MDEKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYyNTA4CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MjUxOQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjI1NTQKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYyNzQxCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2Mjc5NAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjMxNjAKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYzMzU5CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2MzUxMgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjM2NjgKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYzNjkyCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2Mzc2MwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjM3NjQKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDYzODI2CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2NDEyNwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjQzMTIKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY0NzA1CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2NDgwNwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjUxMjAKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY1MTY4CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2NTI0OQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjUyODcKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY1MzM1CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2NTMzNwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjU1NDEKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY1NzE1CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2NTczNQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjU3NTYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY1ODAyCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2NjExMgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjYxMzYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY2MTQwCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2NjQ2NQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjY4ODEKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY2OTUwCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2Njk1OQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjc0MzUKIS0td3d3LmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY3NDc5CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2NzUyOAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjc1NDUKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY3NTcyCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2NzY0OAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjc2NTAKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY3NjgwCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2NzY5MgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjc4NzEKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY3OTIzCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2ODA2MgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjgyNDgKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY4Mjc4CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2ODM3OQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjg0ODMKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY4NTA2CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2ODU0NwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjg2MTYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY4NjIyCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2ODcwNwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjkxNDYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY5MzczCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2OTUxNgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjk1MTcKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY5Njg3CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA2OTc0MQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNjk4NjEKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDY5OTUyCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3MDA1MwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzAxNzcKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDcwMzA3CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3MDgwOQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzA5OTAKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDcxMDQyCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3MTA0NAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzExMDYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDcxMTY2CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3MTE4MQohLS1mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3MTIwMAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzEyMDgKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDcxMjM4CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3MTY4MwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzIyNzEKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDcyMzQ4CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3MjY3NwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzI3MjYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDcyNzk0CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3Mjg1MwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzI4OTUKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDcyOTkzCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3MzA0MwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzMxMDMKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDczMTU3CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3MzIxNgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzMyNDYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDczMzA1CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3MzMwNwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzM0MDgKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDczNTM3CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3MzY3MgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzM4NDkKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDczOTA2CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NDA4OQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzQxMTAKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc0MTI4CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NDE1NwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzQyNDYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc0MzA3CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NDM0NwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzQ0MjMKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc0NDU0CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NDQ2NwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzQ0OTMKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc0NTUwCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NDU2MgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzQ2NTMKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc0NjkzCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NDY5OQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzQ3MTIKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc0NzEzCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NDc2OAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzQ3ODIKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc0Nzk0CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NDgyMgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzQ4NzQKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc0ODkxCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NDkxOAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzUwODEKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc1MTM0CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NTE0MgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzUyMTYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc1MjMwCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NTIzOAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzUyNjIKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc1MjY5CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NTQ5MQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzU1MDAKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc1NjUwCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NTY3OAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzU3MDMKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc1NzM5CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NjA2NgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzYxNDIKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc2NDU5CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NjQ3MAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzY1MzgKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc2NTczCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NjkwMQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzcwNjcKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc3MDg0CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NzIzNQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzczNDQKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc3MzkwCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NzM5MgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzc0NjUKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc3NDY4CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NzQ5MgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzc3NDUKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc3NzY4CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3NzgwNAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzc4NTIKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc4NjQ2CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3ODkyOAohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzg5NjcKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc5NTU5CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3OTY0MQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwNzk5MDkKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDc5OTM0CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA3OTk5MgohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwODAwNTQKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDgwMTA5CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA4MDE2OQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwODAyMjYKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDgwNDI5CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA4MDQ3MQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwODA1NTAKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDgwNTgxCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA4MDY0NwohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwODA3NzgKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDgwODkyCiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA4MDkxNQohLS0uZnRjaGluZXNlLmNvbS9zdG9yeS8wMDEwODA5MzUKIS0tLmZ0Y2hpbmVzZS5jb20vc3RvcnkvMDAxMDgxMDU5CiEtLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAwMTA4MTEyNwohLS0uZnRjaGluZXNlLmNvbS90YWcvJUU1JThEJTgxJUU1JTg1JUFCJUU1JUIxJThBJUU0JUI4JTg5JUU0JUI4JUFEJUU1JTg1JUE4JUU0JUJDJTlBCiEtLS5mdGNoaW5lc2UuY29tL3RhZy8lRTYlQjglQTklRTUlQUUlQjYlRTUlQUUlOUQKIS0tLmZ0Y2hpbmVzZS5jb20vdGFnLyVFOCU5NiU4NCVFNyU4NiU5OSVFNiU5RCVBNQohLS0uZnRjaGluZXNlLmNvbS92aWRlby8xNDM3CiEtLS5mdGNoaW5lc2UuY29tL3ZpZGVvLzE4ODIKIS0tLmZ0Y2hpbmVzZS5jb20vdmlkZW8vMjQ0NgohLS0uZnRjaGluZXNlLmNvbS92aWRlby8yNjAxCiEtLS5mdGNoaW5lc2UuY29tL2NvbW1lbnRzCgohIS0tLUdvb2dsZS0tLQohIyMjaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zdXBwb3J0ZWRfZG9tYWlucyMjIwohLi4uR0ZXTGlzdCBkb2Vzbid0IGludGVuZCB0byBzdXBwb3J0IHR5cG9zcXVhdHRpbmcuLi4KfHwxZTEwMC5uZXQKfHw0NjY0NTMuY29tCnx8YWJjLnh5egp8fGFib3V0Lmdvb2dsZQp8fGFkbW9iLmNvbQp8fGFkc2Vuc2UuY29tCnx8YWdvb2dsZWFkYXkuY29tCnx8YWkuZ29vZ2xlCnx8YW1wcHJvamVjdC5vcmcKQEB8aHR0cHM6Ly93d3cuYW1wcHJvamVjdC5vcmcKQEB8aHR0cHM6Ly9jZG4uYW1wcHJvamVjdC5vcmcKfHxhbmRyb2lkLmNvbQp8fGFuZHJvaWRpZnkuY29tCnx8YW5kcm9pZHR2LmNvbQp8fGFwaS5haQouYXBwc3BvdC5jb20KfHxhcHBzcG90LmNvbQp8fGF1dG9kcmF3LmNvbQp8fGJsb2cuZ29vZ2xlCnx8YmxvZ2Jsb2cuY29tCmJsb2dzcG90LmNvbQovXmh0dHBzPzpcL1wvW15cL10rYmxvZ3Nwb3RcLiguKikvCi5ibG9nc3BvdC5oawouYmxvZ3Nwb3QuanAKLmJsb2dzcG90LnR3CiEtLXx8Y2FwaXRhbGcuY29tCnx8Y2VydGlmaWNhdGUtdHJhbnNwYXJlbmN5Lm9yZwp8fGNocm9tZS5jb20KfHxjaHJvbWVjYXN0LmNvbQp8fGNocm9tZWV4cGVyaW1lbnRzLmNvbQp8fGNocm9tZXJjaXNlLmNvbQp8fGNocm9tZXN0YXR1cy5jb20KfHxjaHJvbWl1bS5vcmcKfHxjb20uZ29vZ2xlCnx8Y3JidWcuY29tCnx8Y3JlYXRpdmVsYWI1LmNvbQp8fGNyaXNpc3Jlc3BvbnNlLmdvb2dsZQp8fGNycmV2LmNvbQp8fGRhdGEtdm9jYWJ1bGFyeS5vcmcKfHxkZWJ1Zy5jb20KfHxkZWVwbWluZC5jb20KfHxkZWphLmNvbQp8fGRlc2lnbi5nb29nbGUKfHxkaWdpc2ZlcmEuY29tCnx8ZG5zLmdvb2dsZQp8fGRvbWFpbnMuZ29vZ2xlCnx8ZHVjay5jb20KfHxlbnZpcm9ubWVudC5nb29nbGUKfHxmZWVkYnVybmVyLmNvbQp8fGZpcmViYXNlaW8uY29tCnx8Zy5jbwp8fGdjci5pbwp8fGdldC5hcHAKfHxnZXQuZGV2Cnx8Z2V0Lmhvdwp8fGdldC5wYWdlCnx8Z2V0bWRsLmlvCnx8Z2V0b3V0bGluZS5vcmcKfHxnZ3BodC5jb20KfHxnbWFpbC5jb20KfHxnbW9kdWxlcy5jb20KfHxnb2RvYy5vcmcKfHxnb2xhbmcub3JnCnx8Z29vLmdsCi5nb29nbGUuYWUKLmdvb2dsZS5hcwouZ29vZ2xlLmFtCi5nb29nbGUuYXQKLmdvb2dsZS5hegouZ29vZ2xlLmJhCi5nb29nbGUuYmUKLmdvb2dsZS5iZwouZ29vZ2xlLmNhCi5nb29nbGUuY2QKLmdvb2dsZS5jaQouZ29vZ2xlLmNvLmlkCi5nb29nbGUuY28uanAKLmdvb2dsZS5jby5rcgouZ29vZ2xlLmNvLm1hCi5nb29nbGUuY28udWsKLmdvb2dsZS5jb20KLmdvb2dsZS5kZQp8fGdvb2dsZS5kZXYKLmdvb2dsZS5kagouZ29vZ2xlLmRrCi5nb29nbGUuZXMKLmdvb2dsZS5maQouZ29vZ2xlLmZtCi5nb29nbGUuZnIKLmdvb2dsZS5nZwouZ29vZ2xlLmdsCi5nb29nbGUuZ3IKLmdvb2dsZS5pZQouZ29vZ2xlLmlzCi5nb29nbGUuaXQKLmdvb2dsZS5qbwouZ29vZ2xlLmt6Ci5nb29nbGUubHYKLmdvb2dsZS5tbgouZ29vZ2xlLm1zCi5nb29nbGUubmwKLmdvb2dsZS5udQouZ29vZ2xlLm5vCi5nb29nbGUucm8KLmdvb2dsZS5ydQouZ29vZ2xlLnJ3Ci5nb29nbGUuc2MKLmdvb2dsZS5zaAouZ29vZ2xlLnNrCi5nb29nbGUuc20KLmdvb2dsZS5zbgouZ29vZ2xlLnRrCi5nb29nbGUudG0KLmdvb2dsZS50bwouZ29vZ2xlLnR0Ci5nb29nbGUudnUKLmdvb2dsZS53cwovXmh0dHBzPzpcL1wvKFteXC9dK1wuKSpnb29nbGVcLihhY3xhZHxhZXxhZnxhbHxhbXxhc3xhdHxhenxiYXxiZXxiZnxiZ3xiaXxianxic3xidHxieXxjYXxjYXR8Y2R8Y2Z8Y2d8Y2h8Y2l8Y2x8Y218Y28uYW98Y28uYnd8Y28uY2t8Y28uY3J8Y28uaWR8Y28uaWx8Y28uaW58Y28uanB8Y28ua2V8Y28ua3J8Y28ubHN8Y28ubWF8Y29tfGNvbS5hZnxjb20uYWd8Y29tLmFpfGNvbS5hcnxjb20uYXV8Y29tLmJkfGNvbS5iaHxjb20uYm58Y29tLmJvfGNvbS5icnxjb20uYnp8Y29tLmNvfGNvbS5jdXxjb20uY3l8Y29tLmRvfGNvbS5lY3xjb20uZWd8Y29tLmV0fGNvbS5manxjb20uZ2h8Y29tLmdpfGNvbS5ndHxjb20uaGt8Y29tLmptfGNvbS5raHxjb20ua3d8Y29tLmxifGNvbS5seXxjb20ubW18Y29tLm10fGNvbS5teHxjb20ubXl8Y29tLm5hfGNvbS5uZnxjb20ubmd8Y29tLm5pfGNvbS5ucHxjb20ub218Y29tLnBhfGNvbS5wZXxjb20ucGd8Y29tLnBofGNvbS5wa3xjb20ucHJ8Y29tLnB5fGNvbS5xYXxjb20uc2F8Y29tLnNifGNvbS5zZ3xjb20uc2x8Y29tLnN2fGNvbS50anxjb20udHJ8Y29tLnR3fGNvbS51YXxjb20udXl8Y29tLnZjfGNvbS52bnxjby5tenxjby5uenxjby50aHxjby50enxjby51Z3xjby51a3xjby51enxjby52ZXxjby52aXxjby56YXxjby56bXxjby56d3xjdnxjenxkZXxkanxka3xkbXxkenxlZXxlc3xldXxmaXxmbXxmcnxnYXxnZXxnZ3xnbHxnbXxncHxncnxneXxoa3xobnxocnxodHxodXxpZXxpbXxpcXxpc3xpdHxpdC5hb3xqZXxqb3xrZ3xraXxrenxsYXxsaXxsa3xsdHxsdXxsdnxtZHxtZXxtZ3xta3xtbHxtbnxtc3xtdXxtdnxtd3xteHxuZXxubHxub3xucnxudXxvcmd8cGx8cG58cHN8cHR8cm98cnN8cnV8cnd8c2N8c2V8c2h8c2l8c2t8c218c258c298c3J8c3R8dGR8dGd8dGt8dGx8dG18dG58dG98dHR8dXN8dmd8dm58dnV8d3MpXC8uKi8KIS0tfHxnb29nbGUtYW5hbHl0aWNzLmNvbQohLS18fGdvb2dsZWFkc2VydmljZXMuY29tCnx8Z29vZ2xlYXBpcy5jbgp8fGdvb2dsZWFwaXMuY29tCnx8Z29vZ2xlYXBwcy5jb20KfHxnb29nbGVhcnRwcm9qZWN0LmNvbQp8fGdvb2dsZWJsb2cuY29tCnx8Z29vZ2xlYm90LmNvbQohLS18fGdvb2dsZWNhcGl0YWwuY29tCnx8Z29vZ2xlY2hpbmF3ZWJtYXN0ZXIuY29tCnx8Z29vZ2xlY29kZS5jb20KfHxnb29nbGVjb21tZXJjZS5jb20KfHxnb29nbGVkb21haW5zLmNvbQp8fGdvb2dsZWFydGguY29tCnx8Z29vZ2xlZWFydGguY29tCnx8Z29vZ2xlZHJpdmUuY29tCnx8Z29vZ2xlZ3JvdXBzLmNvbQp8fGdvb2dsZWhvc3RlZC5jb20KfHxnb29nbGVpZGVhcy5jb20KfHxnb29nbGVpbnNpZGVzZWFyY2guY29tCnx8Z29vZ2xlbGFicy5jb20KfHxnb29nbGVtYWlsLmNvbQp8fGdvb2dsZW1hc2h1cHMuY29tCnx8Z29vZ2xlcGFnZWNyZWF0b3IuY29tCnx8Z29vZ2xlcGxheS5jb20KfHxnb29nbGVwbHVzLmNvbQp8fGdvb2dsZXNjaG9sYXIuY29tCnx8Z29vZ2xlc291cmNlLmNvbQohLS18fGdvb2dsZXN5bmRpY2F0aW9uLmNvbQohLS18fGdvb2dsZXRhZ21hbmFnZXIuY29tCiEtLXx8Z29vZ2xldGFnc2VydmljZXMuY29tCnx8Z29vZ2xldXNlcmNvbnRlbnQuY29tCi5nb29nbGV2aWRlby5jb20KfHxnb29nbGV2aWRlby5jb20KfHxnb29nbGV3ZWJsaWdodC5jb20KfHxnb29nbGV6aXAubmV0Cnx8Z3JvdXBzLmdvb2dsZS5jbgp8fGdyb3cuZ29vZ2xlCnx8Z3N0YXRpYy5jb20KIS0tfHxndi5jb20KfHxndnQwLmNvbQp8fGd2dDEuY29tCkBAfHxyZWRpcmVjdG9yLmd2dDEuY29tCnx8Z3Z0My5jb20KfHxnd3Rwcm9qZWN0Lm9yZwp8fGh0bWw1cm9ja3MuY29tCnx8aWFtLnNveQp8fGlnb29nbGUuY29tCnx8aXRhc29mdHdhcmUuY29tCnx8bGVycy5nb29nbGUKfHxsaWtlLmNvbQp8fG1hZGV3aXRoY29kZS5jb20KfHxtYXRlcmlhbC5pbwp8fG5pYy5nb29nbGUKfHxvbjIuY29tCnx8b3BlbnNvdXJjZS5nb29nbGUKfHxwYW5vcmFtaW8uY29tCnx8cGljYXNhd2ViLmNvbQp8fHBraS5nb29nCnx8cGx1cy5jb2Rlcwp8fHBvbHltZXItcHJvamVjdC5vcmcKfHxwcmlkZS5nb29nbGUKfHxxdWVzdHZpc3VhbC5jb20KfHxhZG1pbi5yZWNhcHRjaGEubmV0Cnx8YXBpLnJlY2FwdGNoYS5uZXQKfHxhcGktc2VjdXJlLnJlY2FwdGNoYS5uZXQKfHxhcGktdmVyaWZ5LnJlY2FwdGNoYS5uZXQKfHxyZWRob3RsYWJzLmNvbQp8fHJlZ2lzdHJ5Lmdvb2dsZQp8fHNhZmV0eS5nb29nbGUKfHxzYXZldGhlZGF0ZS5mb28KfHxzY2hlbWEub3JnCnx8c2hhdHRlcmVkLmlvCnxodHRwOi8vc2lwbWw1Lm9yZy8KfHxzdG9yaWVzLmdvb2dsZQp8fHN1c3RhaW5hYmlsaXR5Lmdvb2dsZQp8fHN5bmVyZ3lzZS5jb20KfHx0ZWFjaHBhcmVudHN0ZWNoLm9yZwp8fHRlbnNvcmZsb3cub3JnCnx8dGZodWIuZGV2Cnx8dGhpbmt3aXRoZ29vZ2xlLmNvbQp8fHRpbHRicnVzaC5jb20KfHx1cmNoaW4uY29tCiEtLXx8d3d3Lmdvb2dsZQp8fHdhdmVwcm90b2NvbC5vcmcKfHx3YXltby5jb20KfHx3ZWIuZGV2Cnx8d2VibXByb2plY3Qub3JnCnx8d2VicnRjLm9yZwp8fHdoYXRicm93c2VyLm9yZwp8fHdpZGV2aW5lLmNvbQp8fHdpdGhnb29nbGUuY29tCnx8d2l0aHlvdXR1YmUuY29tCnx8eC5jb21wYW55Cnx8eG4tLW5nc3RyLWxyYThqLmNvbQp8fHlvdXR1LmJlCi55b3V0dWJlLmNvbQp8fHlvdXR1YmUuY29tCnx8eW91dHViZS1ub2Nvb2tpZS5jb20KfHx5b3V0dWJlZWR1Y2F0aW9uLmNvbQp8fHlvdXR1YmVnYW1pbmcuY29tCnx8eXQuYmUKfHx5dGltZy5jb20KfHx6eW5hbWljcy5jb20KCiEhLS0tS2lja0FTUy0tLQohLS1PRkZJQ0lBTCBVUkwgbGlzdCBhdDogaHR0cHM6Ly9rYXN0YXR1cy5jb20KCiEhLS0tTmF1Z2h0eUFtZXJpY2EtLS0KfHxuYXVnaHR5YW1lcmljYS5jb20KCiEhLS0tTllUaW1lcy0tLQohLS18fGQxZjFlcnlpcXlqczByLmNsb3VkZnJvbnQubmV0CiEtLXx8ZDNsYXIwOXhid2xzZ2UuY2xvdWRmcm9udC5uZXQKIS0tfHxkM3ExcWo5anpzdThudy5jbG91ZGZyb250Lm5ldAohLS18fGRjOHhsMG5kem4yY2IuY2xvdWRmcm9udC5uZXQKIS0tfHxhMS5ueXQuY29tCiEtLXx8aW50Lm55dC5jb20KIS0tfHxzMS5ueXQuY29tCnN0YXRpYzAxLm55dC5jb20KIS0tfHxzdGF0aWMwMS5ueXQuY29tCiEtLXx8dHlwZWZhY2Uubnl0LmNvbQp8fG55dC5jb20Kbnl0Y2hpbmEuY29tCm55dGNuLm1lCnx8bnl0Y24ubWUKfHxueXRjby5jb20KfGh0dHA6Ly9ueXRpLm1zLwoubnl0aW1lcy5jb20KfHxueXRpbWVzLmNvbQp8fG55dGltZy5jb20KdXNlcmFwaS5ueXRsb2cuY29tCmNuLm55dHN0eWxlLmNvbQp8fG55dHN0eWxlLmNvbQoKISEtLS1TdGVhbS0tLQouc3RlYW1jb21tdW5pdHkuY29tCnx8c3RlYW1jb21tdW5pdHkuY29tCiEtLXN0ZWFtY29tbXVuaXR5LmNvbS9wcm9maWxlcy83NjU2MTE5ODA2Mjc3MTYwOQohLS1zdGVhbWNvbW11bml0eS5jb20vZ3JvdXBzL0xpYmV0VGliZXQKIS0tc3RlYW1jb21tdW5pdHkuY29tL2dyb3Vwcy96aG9uZ2dvbmcKIS0tc3RlYW1jb21tdW5pdHkuY29tL2lkL0NKVF9KYWNrdG9uCnxodHRwOi8vc3RvcmUuc3RlYW1wb3dlcmVkLmNvbS9hcHAvMzMzNjAwCgohIS0tLVRlbGVncmFtLS0tCiEhIS0tLURvbWFpbi0tLQp8fHQubWUKfHx1cGRhdGVzLnRkZXNrdG9wLmNvbQp8fHRlbGVncmFtLmRvZwp8fHRlbGVncmFtLm1lCnx8dGVsZWdyYW0ub3JnCi50ZWxlZ3JhbWRvd25sb2FkLmNvbQp8fHRlbGVzY28ucGUKISEhLS0tSVAtLS0KCiEhLS0tVHdpdGNoLS0tCnx8anR2bncubmV0Cnx8dHR2bncubmV0Cnx8dHdpdGNoLnR2Cnx8dHdpdGNoY2RuLm5ldAoKISEtLS1Ud2l0dGVyLS0tCnx8cGVyaXNjb3BlLnR2Ci5wc2NwLnR2Cnx8cHNjcC50dgoudC5jbwp8fHQuY28KLnR3ZWV0ZGVjay5jb20KfHx0d2VldGRlY2suY29tCnx8dHdpbWcuY29tCi50d2l0cGljLmNvbQp8fHR3aXRwaWMuY29tCi50d2l0dGVyLmNvbQp8fHR3aXR0ZXIuY29tCnx8dHdpdHRlci5qcAp8fHZpbmUuY28KCiEhLS0tVGFpd2FuLS0tCnx8Z292LnRhaXBlaQouZ292LnR3CnxodHRwczovL2Fpc3MuYW53cy5nb3YudHcKfHxhcmNoaXZlcy5nb3YudHcKfHx0YWNjLmN3Yi5nb3YudHcKfHxkYXRhLmdvdi50dwp8fGVwYS5nb3YudHcKfHxmYS5nb3YudHcKfHxmZGEuZ292LnR3Cnx8aHBhLmdvdi50dwp8fGltbWlncmF0aW9uLmdvdi50dwp8fGl0YWl3YW4uZ292LnR3Cnx8bWppYi5nb3YudHcKfHxtb2VhaWMuZ292LnR3Cnx8bW9mYS5nb3YudHcKfHxtb2wuZ292LnR3Cnx8bXZkaXMuZ292LnR3Cnx8bmF0Lmdvdi50dwp8fG5oaS5nb3YudHcKfHxucGEuZ292LnR3Cnx8bnNjLmdvdi50dwp8fG50YmsuZ292LnR3Cnx8bnRibmEuZ292LnR3Cnx8bnRidC5nb3YudHcKfHxudHNuYS5nb3YudHcKfHxwY2MuZ292LnR3Cnx8c3RhdC5nb3YudHcKfHx0YWlwZWkuZ292LnR3Cnx8dGFpd2Fuam9icy5nb3YudHcKfHx0aGIuZ292LnR3Cnx8dGlwby5nb3YudHcKfHx3ZGEuZ292LnR3Cgp8fHRlY28taGsub3JnCnx8dGVjby1tby5vcmcKCkBAfHxhZnR5Z2guZ292LnR3CkBAfHxhaWRlLmdvdi50dwpAQHx8dHBkZS5haWRlLmdvdi50dwpAQHx8YXJ0ZS5nb3YudHcKQEB8fGNodWt1YW5nLmdvdi50dwpAQHx8Y3diLmdvdi50dwpAQHx8Y3ljYWIuZ292LnR3CkBAfHxkYm5zYS5nb3YudHcKQEB8fGRmLmdvdi50dwpAQHx8ZWFzdGNvYXN0LW5zYS5nb3YudHcKQEB8fGVydi1uc2EuZ292LnR3CkBAfHxncmIuZ292LnR3CkBAfHxneXNkLm55Yy5nb3YudHcKQEB8fGhjaGNjLmdvdi50dwpAQHx8aHNpbmNodS1jYy5nb3YudHcKQEB8fGluZXIuZ292LnR3CkBAfHxrbHNpby5nb3YudHcKQEB8fGttc2VoLmdvdi50dwpAQHx8bHVuZ3RhbmhyLmdvdi50dwpAQHx8bWFvbGluLW5zYS5nb3YudHcKQEB8fG1hdHN1LW5ld3MuZ292LnR3CkBAfHxtYXRzdS1uc2EuZ292LnR3CkBAfHxtYXRzdWNjLmdvdi50dwpAQHx8bW9lLmdvdi50dwpAQHx8bXZkaXMuZ292LnR3CkBAfHxuYW5rYW4uZ292LnR3CkBAfHxuY3JlZS5nb3YudHcKQEB8fG5lY29hc3QtbnNhLmdvdi50dwpAQHx8c2lyYXlhLW5zYS5nb3YudHcKQEB8fGNyb21vdGMubmF0Lmdvdi50dwpAQHx8dGF4Lm5hdC5nb3YudHcKQEB8fG5lY29hc3QtbnNhLmdvdi50dwpAQHx8bmVyLmdvdi50dwpAQHx8bm1tYmEuZ292LnR3CkBAfHxubXAuZ292LnR3CkBAfHxubXZ0dGMuZ292LnR3CkBAfHxub3J0aGd1YW4tbnNhLmdvdi50dwpAQHx8bnBtLmdvdi50dwpAQHx8bnN0bS5nb3YudHcKQEB8fG50ZG1oLmdvdi50dwpAQHx8bnRsLmdvdi50dwpAQHx8bnRzZWMuZ292LnR3CkBAfHxudHVoLmdvdi50dwpAQHx8bnZyaS5nb3YudHcKQEB8fHBlbmdodS1uc2EuZ292LnR3CkBAfHxwb3N0Lmdvdi50dwpAQHx8c2lyYXlhLW5zYS5nb3YudHcKQEB8fHN0ZHRpbWUuZ292LnR3CkBAfHxzdW5tb29ubGFrZS5nb3YudHcKQEB8fHRhaXR1bmctaG91c2UuZ292LnR3CkBAfHx0YW95dWFuLmdvdi50dwpAQHx8dHBoY2MuZ292LnR3CkBAfHx0cmltdC1uc2EuZ292LnR3CkBAfHx2Z2h0cGUuZ292LnR3CkBAfHx2Z2hrcy5nb3YudHcKQEB8fHZnaHRjLmdvdi50dwpAQHx8d2FuZmFuZy5nb3YudHcKQEB8fHlhdHNlbi5nb3YudHcKQEB8fHlkYS5nb3YudHcKCiEtLUBAfHw0cHBwYy5nb3YudHcKIS0tQEB8fDkyMS5nb3YudHcKIS0tQEB8fGRtdGlwLmdvdi50dwohLS1AQHx8ZXRyYWluaW5nLmdvdi50dwohLS1AQHx8Z3NuLWNlcnQubmF0Lmdvdi50dwohLS1AQHx8bmljaS5uYXQuZ292LnR3CiEtLUBAfHxoY2MuZ292LnR3CiEtLUBAfHxoZW5nY2h1ZW4uZ292LnR3CiEtLUBAfHxraGNjLmdvdi50dwohLS1AQHx8a2htcy5nb3YudHcKIS0tQEB8fGtrLmdvdi50dwohLS1AQHx8a2xjY2FiLmdvdi50dwohLS1AQHx8a2xyYS5nb3YudHcKIS0tQEB8fG5taC5nb3YudHcKIS0tQEB8fG5tdGwuZ292LnR3CiEtLUBAfHxwYWJwLmdvdi50dwohLS1AQHx8cGV0Lmdvdi50dwohLS1AQHx8dGNoYi5nb3YudHcKIS0tQEB8fHRjc2FjLmdvdi50dwohLS1AQHx8dG5jc2VjLmdvdi50dwp8fGtpbm1lbi5vcmcudHcKCiEhLS0tVjJFWC0tLQoudjJleC5jb20KIS0tSW5jbHVkZWQgaW4gYWJvdmUgcnVsZTogZG5zLnYyZXguY29tCkBAfGh0dHA6Ly92MmV4LmNvbQpAQHxodHRwOi8vY2RuLnYyZXguY29tCkBAfGh0dHA6Ly9jbi52MmV4LmNvbQpAQHxodHRwOi8vaGsudjJleC5jb20KQEB8aHR0cDovL2kudjJleC5jb20KQEB8aHR0cDovL2xheC52MmV4LmNvbQpAQHxodHRwOi8vbmV1ZS52MmV4LmNvbQpAQHxodHRwOi8vcGFnZXNwZWVkLnYyZXguY29tCkBAfGh0dHA6Ly9zdGF0aWMudjJleC5jb20KQEB8aHR0cDovL3dvcmtzcGFjZS52MmV4LmNvbQpAQHxodHRwOi8vd3d3LnYyZXguY29tCgohIS0tLVlhaG9vLS0tCnx8ZGF0YS5mbHVycnkuY29tCnBhZ2UuYmlkLnlhaG9vLmNvbQp0dy5iaWQueWFob28uY29tCnxodHRwczovL3R3LmJpZC55YWhvby5jb20KYmxvZ3MueWFob28uY28uanAKfHxzZWFyY2gueWFob28uY28uanAKYnV5LnlhaG9vLmNvbS50dy9nZHNhbGUKaGsueWFob28uY29tCmhrLmtub3dsZWRnZS55YWhvby5jb20KdHcubW9uZXkueWFob28uY29tCmhrLm15YmxvZy55YWhvby5jb20KbmV3cy55YWhvby5jb20vY2hpbmEtYmxvY2tzLWJiYwp8fGhrLm5ld3MueWFob28uY29tCmhrLnJkLnlhaG9vLmNvbQpoay5zZWFyY2gueWFob28uY29tL3NlYXJjaApoay52aWRlby5uZXdzLnlhaG9vLmNvbS92aWRlbwptZW1lLnlhaG9vLmNvbQohLS10dy55YWhvby5jb20KdHcuYW5zd2Vycy55YWhvby5jb20KfGh0dHBzOi8vdHcuYW5zd2Vycy55YWhvby5jb20KfHx0dy5rbm93bGVkZ2UueWFob28uY29tCnx8dHcubWFsbC55YWhvby5jb20KdHcueWFob28uY29tCnx8dHcubW9iaS55YWhvby5jb20KdHcubXlibG9nLnlhaG9vLmNvbQp8fHR3Lm5ld3MueWFob28uY29tCnB1bHNlLnlhaG9vLmNvbQp8fHNlYXJjaC55YWhvby5jb20KdXBjb21pbmcueWFob28uY29tCnZpZGVvLnlhaG9vLmNvbQp8fHlhaG9vLmNvbS5oawp8fGR1Y2tkdWNrZ28tb3duZWQtc2VydmVyLnlhaG9vLm5ldAoKIS0tLS0tLS0tLS0tLS0tLS0tLU51bWVyaWNzLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi4wMzBidXkuY29tCi4wcnoudHcKfGh0dHA6Ly8wcnoudHcKMS1hcHBsZS5jb20udHcKfHwxLWFwcGxlLmNvbS50dwouMTAudHQKLjEwMGtlLm9yZwouMTAwMGdpcmkubmV0Cnx8MTAwMGdpcmkubmV0Ci4xMGNvbmRpdGlvbnNvZmxvdmUuY29tCnx8MTBtdXN1bWUuY29tCjEyM3JmLmNvbQouMTJiZXQuY29tCnx8MTJiZXQuY29tCi4xMnZwbi5jb20KLjEydnBuLm5ldAp8fDEydnBuLmNvbQp8fDEydnBuLm5ldAouMTM4LmNvbQoxNDFob25na29uZy5jb20vZm9ydW0KfHwxNDFqai5jb20KLjE0MXR1YmUuY29tCi4xNjg4LmNvbS5hdQouMTczbmcuY29tCnx8MTczbmcuY29tCi4xNzdwaWMuaW5mbwouMTd0MTdwLmNvbQp8fDE4Ym9hcmQuY29tCnx8MThib2FyZC5pbmZvCjE4b25seWdpcmxzLmNvbQouMThwMnAuY29tCi4xOHZpcmdpbnNleC5jb20KLjE5NDllci5vcmcKemhhby4xOTg0LmNpdHkKfHx6aGFvLjE5ODQuY2l0eQoxOTg0YmJzLmNvbQp8fDE5ODRiYnMuY29tCiEtLXx8MTk4NGJsb2cuY29tCi4xOTg0YmJzLm9yZwp8fDE5ODRiYnMub3JnCi4xOTkxd2F5LmNvbQp8fDE5OTF3YXkuY29tCi4xOTk4Y2RwLm9yZwouMWJhby5vcmcKfGh0dHA6Ly8xYmFvLm9yZwouMWVldy5jb20KLjFtb2JpbGUuY29tCnxodHRwOi8vKi4xbW9iaWxlLnR3Cnx8MXBvbmRvLnR2Ci4yLWhhbmQuaW5mbwouMjAwMGZ1bi5jb20vYmJzCi4yMDA4eGlhbnpoYW5nLmluZm8KfHwyMDA4eGlhbnpoYW5nLmluZm8KfHwyMDE3LmhrCjIxYW5keS5jb20vYmxvZwouMjFqb2luLmNvbQouMjFwcm9uLmNvbQoyMXNleHR1cnkuY29tCi4yMjgubmV0LnR3Cnx8MjMzYWJjLmNvbQp8fDI0aHJzLmNhCjI0c21pbGUub3JnCjJsaXBzdHViZS5jb20KLjJzaGFyZWQuY29tCjMwYm94ZXMuY29tCi4zMTVsei5jb20KfHwzMnJlZC5jb20KfHwzNnJhaW4uY29tCi4zYTVhLmNvbQozYXJhYnR2LmNvbQouM2JveXMyZ2lybHMuY29tCi4zcHJveHkucnUKLjNyZW4uY2EKLjN0dWkubmV0Cnx8NGJsdWVzdG9uZXMuYml6Ci40Y2hhbi5jb20KIS0tfHw0Y2hhbi5vcmcKLjRldmVycHJveHkuY29tCnx8NGV2ZXJwcm94eS5jb20KfHw0cmJ0di5jb20KfHw0c2hhcmVkLmNvbQp0YWl3YW5uYXRpb24uNTB3ZWJzLmNvbQp8fDUxLmNhCnx8NTFqYXYub3JnCi41MWx1b2Jlbi5jb20KfHw1MWx1b2Jlbi5jb20KLjUyNzguY2MKLjUyOTkudHYKNWFpbWlrdS5jb20KNWkwMS5jb20KLjVpc290b2k1Lm9yZwouNW1hb2RhbmcuY29tCnx8NjNpLmNvbQouNjRtdXNldW0ub3JnCjY0dGlhbndhbmcuY29tCjY0d2lraS5jb20KLjY2LmNhCjY2NmtiLmNvbQouNnBhcmsuY29tCnx8NnBhcmsuY29tCnx8NnBhcmtlci5jb20KfHw2cGFya25ld3MuY29tCnx8N2NhcHR1cmUuY29tCi43Y293LmNvbQouOC1kLmNvbQp8aHR0cDovLzgtZC5jb20KODVjYy5uZXQKLjg1Y2MudXMKfGh0dHA6Ly84NWNjLnVzCnxodHRwOi8vODVzdC5jb20KLjg4MTkwMy5jb20vcGFnZS96aC10dy8KfHw4ODE5MDMuY29tCi44ODguY29tCi44ODhwb2tlci5jb20KODkuNjQuY2hhcnRlci5jb25zdGl0dXRpb25hbGlzbS5zb2x1dGlvbnMKODktNjQub3JnCnx8ODktNjQub3JnCi44bmV3cy5jb20udHcKLjh6MS5uZXQKfHw4ejEubmV0Ci45MDAxNzAwLmNvbQp8aHR0cDovLzkwOHRhaXdhbi5vcmcvCnx8OTFwb3JuLmNvbQp8fDkxdnBzLmNsdWIKLjkyY2Nhdi5jb20KLjk5MS5jb20KfGh0dHA6Ly85OTEuY29tCi45OWJ0Z2MwMS5jb20KfHw5OWJ0Z2MwMS5jb20KLjk5Y24uaW5mbwp8aHR0cDovLzk5Y24uaW5mbwp8fDliaXMuY29tCnx8OWJpcy5uZXQKCiEtLS0tLS0tLS0tLS0tLS0tLS0tLUFBLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoudGliZXQuYS5zZQp8aHR0cDovL3RpYmV0LmEuc2UKfHxhLW5vcm1hbC1kYXkuY29tCmE1LmNvbS5ydQp8aHR0cDovL2FhbWFjYXUuY29tCiEtLXxodHRwOi8vY2RuKi5hYmMuY29tLwouYWJjLmNvbQouYWJjLm5ldC5hdQp8fGFiYy5uZXQuYXUKLmFiY2hpbmVzZS5jb20KYWJjbGl0ZS5uZXQKfGh0dHBzOi8vd3d3LmFiY2xpdGUubmV0Ci5hYmx3YW5nLmNvbQouYWJvbHVvd2FuZy5jb20KfHxhYm9sdW93YW5nLmNvbQouYWJvdXRnZncuY29tCi5hYnMuZWR1Ci5hY2NpbS5vcmcKLmFjZXJvcy1kZS1oaXNwYW5pYS5jb20KLmFjZXZwbi5jb20KfHxhY2V2cG4uY29tCi5hY2cxOC5tZQp8aHR0cDovL2FjZzE4Lm1lCnx8YWNna2ouY29tCi5hY21lZGlhMzY1LmNvbQouYWNudy5jb20uYXUKYWN0Zm9ydGliZXQub3JnCmFjdGltZXMuY29tLmF1CmFjdGl2cG4uY29tCnx8YWN0aXZwbi5jb20KfHxhY3Vsby51cwp8fGFkZGljdGVkdG9jb2ZmZWUuZGUKLmFkZWxhaWRlYmJzLmNvbS9iYnMKLmFkcGwub3JnLmhrCnxodHRwOi8vYWRwbC5vcmcuaGsKLmFkdWx0LXNleC1nYW1lcy5jb20KfHxhZHVsdC1zZXgtZ2FtZXMuY29tCmFkdWx0ZnJpZW5kZmluZGVyLmNvbQphZHVsdGtlZXAubmV0L3BlZXBzaG93L21lbWJlcnMvbWFpbi5odG0KfHxhZHZhbnNjZW5lLmNvbQp8fGFkdmVydGZhbi5jb20KLmFlLm9yZwp8fGFlbmhhbmNlcnMuY29tCnx8YWYubWlsCi5hZmFudGliYnMuY29tCnxodHRwOi8vYWZhbnRpYmJzLmNvbQouYWkta2FuLm5ldAp8fGFpLWthbi5uZXQKYWktd2VuLm5ldAouYWlwaC5uZXQKfHxhaXBoLm5ldAouYWlyYXNpYS5jb20KfHxhaXJjb25zb2xlLmNvbQp8aHR0cDovL2Rvd25sb2FkLmFpcmNyYWNrLW5nLm9yZwouYWlydnBuLm9yZwp8fGFpcnZwbi5vcmcKLmFpc2V4LmNvbQp8fGFpdC5vcmcudHcKYWl3ZWl3ZWkuY29tCi5haXdlaXdlaWJsb2cuY29tCnx8YWl3ZWl3ZWlibG9nLmNvbQp8fHd3dy5hanNhbmRzLmNvbQoKISEtLS1Ba2FtYWktLS0KYTI0OC5lLmFrYW1haS5uZXQKfHxhMjQ4LmUuYWthbWFpLm5ldAoKcmZhbGl2ZTEuYWthY2FzdC5ha2FtYWlzdHJlYW0ubmV0CnZvYS0xMS5ha2FjYXN0LmFrYW1haXN0cmVhbS5uZXQKCiEhLS00MDMKfHxhYmVtYXR2LmFrYW1haXplZC5uZXQKfHxsaW5lYXItYWJlbWF0di5ha2FtYWl6ZWQubmV0Cnx8dm9kLWFiZW1hdHYuYWthbWFpemVkLm5ldAoKfGh0dHBzOi8vZmJjZG4qLmFrYW1haWhkLm5ldC8KIS0tfHxmYmV4dGVybmFsLWEuYWthbWFpaGQubmV0CiEtLXx8ZmJzdGF0aWMtYS5ha2FtYWloZC5uZXQKIS0tfGh0dHBzOi8vaWdjZG4qLmFrYW1haWhkLm5ldApydGhrbGl2ZTItbGguYWthbWFpaGQubmV0CgouYWthZGVtaXllLm9yZy91Zwp8aHR0cDovL2FrYWRlbWl5ZS5vcmcvdWcKfHxha2liYS1vbmxpbmUuY29tCnx8YWtvdy5vcmcKLmFsLWlzbGFtLmNvbQp8fGFsLXFpbW1haC5uZXQKfHxhbGFib3V0LmNvbQouYWxhbmhvdS5jb20KfGh0dHA6Ly9hbGFuaG91LmNvbQouYWxhcmFiLnFhCnx8YWxhc2JhcnJpY2FkYXMub3JnCmFsZXhsdXIub3JnCnx8YWxmb3JhdHR2Lm5ldAouYWxoYXlhdC5jb20KLmFsaWNlamFwYW4uY28uanAKYWxpZW5ndS5jb20KfHxhbGthc2lyLmNvbQp8fGFsbDRtb20ub3JnCnx8YWxsY29ubmVjdGVkLmNvCi5hbGxkcmF3bnNleC5jb20KfHxhbGxkcmF3bnNleC5jb20KLmFsbGVydnBuLmNvbQp8fGFsbGZpbmVnaXJscy5jb20KLmFsbGdpcmxtYXNzYWdlLmNvbQphbGxnaXJsc2FsbG93ZWQub3JnCi5hbGxncmF2dXJlLmNvbQphbGxpYW5jZS5vcmcuaGsKLmFsbGluZmEuY29tCnx8YWxsaW5mYS5jb20KLmFsbGphY2twb3RzY2FzaW5vLmNvbQp8fGFsbG1vdmllLmNvbQp8fGFsbWFzZGFybmV3cy5jb20KLmFscGhhcG9ybm8uY29tCnx8YWx0ZXJuYXRlLXRvb2xzLmNvbQphbHRlcm5hdGl2ZXRvLm5ldC9zb2Z0d2FyZQphbHZpbmFsZXhhbmRlci5jb20KYWx3YXlzZGF0YS5jb20KfHxhbHdheXNkYXRhLmNvbQp8fGFsd2F5c2RhdGEubmV0Ci5hbHdheXN2cG4uY29tCnx8YWx3YXlzdnBuLmNvbQp8fGFtNzMwLmNvbS5oawphbWVibG8uanAKfHxhbWVibG8uanAKd3d3MS5hbWVyaWNhbi5lZHUvdGVkL2ljZS90aWJldAp8fGFtZXJpY2FuZ3JlZW5jYXJkLmNvbQp8aHR0cDovL3d3dy5hbWVyaWNvcnBzLmdvdgp8fGFtaWJsb2NrZWRvcm5vdC5jb20KLmFtaWdvYmJzLm5ldAouYW1pdGFiaGFmb3VuZGF0aW9uLnVzCnxodHRwOi8vYW1pdGFiaGFmb3VuZGF0aW9uLnVzCi5hbW5lc3R5Lm9yZwp8fGFtbmVzdHkub3JnCnx8YW1uZXN0eS5vcmcuaGsKLmFtbmVzdHkudHcKLmFtbmVzdHl1c2Eub3JnCnx8YW1uZXN0eXVzYS5vcmcKLmFtbnllbWFjaGVuLm9yZwouYW1vaWlzdC5jb20KLmFtdGItdGFpcGVpLm9yZwphbmRyb2lkcGx1cy5jby9hcGsKLmFuZHlnb2QuY29tCnxodHRwOi8vYW5keWdvZC5jb20KYW5uYXRhbS5jb20vY2hpbmVzZQp8fGFuY2hvcmZyZWUuY29tCiEtLUdIUwp8fGFuY3Njb25mLm9yZwp8fGFuZGZhcmF3YXkubmV0Cnx8YW5kcm9pZC14ODYub3JnCmFuZ2VsZmlyZS5jb20vaGkvaGF5YXNoaQp8fGFuZ3VsYXJqcy5vcmcKYW5pbWVjcmF6eS5uZXQKLmFuaW1lc2hpcHB1dWRlbi5jb20KYW5pc2NhcnR1am8uY29tCnx8YW5pc2NhcnR1am8uY29tCnx8YW5vYmlpLmNvbQphbm9ueW1pc2UudXMKLmFub255bWl0eW5ldHdvcmsuY29tCi5hbm9ueW1pemVyLmNvbQouYW5vbnltb3VzZS5vcmcKfHxhbm9ueW1vdXNlLm9yZwphbm9udGV4dC5jb20KLmFucG9wby5jb20KLmFuc3dlcmluZy1pc2xhbS5vcmcKfGh0dHA6Ly93d3cuYW50ZC5vcmcKfHxhbnRob255Y2FsemFkaWxsYS5jb20KLmFudGkxOTg0LmNvbQphbnRpY2hyaXN0ZW5kb20uY29tCi5hbnRpd2F2ZS5uZXQKfGh0dHA6Ly9hbnRpd2F2ZS5uZXQKLmFueXBvcm4uY29tCi5hbnlzZXguY29tCnxodHRwOi8vYW55c2V4LmNvbQouYW8zLm9yZwp8fGFvMy5vcmcKfHxhb2JvLmNvbS5hdQouYW9mcmllbmQuY29tCnxodHRwOi8vYW9mcmllbmQuY29tCi5hb2ZyaWVuZC5jb20uYXUKLmFvamlhby5vcmcKfHxhb21pd2FuZy5jb20KdmlkZW8uYXAub3JnCi5hcGV0dWJlLmNvbQp8fGFwaWFyeS5pbwouYXBpZ2VlLmNvbQp8fGFwaWdlZS5jb20KfHxhcGstZGwuY29tCnx8YXBrY29tYm8uY29tCi5hcGttb25rLmNvbS9hcHAKfHxhcGtwbHouY29tCmFwa3B1cmUuY29tCnx8YXBrcHVyZS5jb20KLmFwbHVzdnBuLmNvbQohLS18fGFwcGFubmllLmNvbQouYXBwZG93bmxvYWRlci5uZXQvQW5kcm9pZAouYXBwbGVkYWlseS5jb20KfHxhcHBsZWRhaWx5LmNvbQphcHBsZWRhaWx5LmNvbS5oawp8fGFwcGxlZGFpbHkuY29tLmhrCmFwcGxlZGFpbHkuY29tLnR3Cnx8YXBwbGVkYWlseS5jb20udHcKLmFwcHNob3BwZXIuY29tCnxodHRwOi8vYXBwc2hvcHBlci5jb20KfHxhcHBzb2Nrcy5uZXQKfHxhcHBzdG8ucmUKLmFwdG9pZGUuY29tCnx8YXB0b2lkZS5jb20KfHxhcmNoaXZlcy5nb3YKLmFyY2hpdmUuZm8KfHxhcmNoaXZlLmZvCi5hcmNoaXZlLmlzCnx8YXJjaGl2ZS5pcwouYXJjaGl2ZS5saQp8fGFyY2hpdmUubGkKfHxhcmNoaXZlLm9yZwp8fGFyY2hpdmUucGgKYXJjaGl2ZS50b2RheQp8aHR0cHM6Ly9hcmNoaXZlLnRvZGF5Cnx8YXJjaGl2ZW9mb3Vyb3duLmNvbQp8fGFyY2hpdmVvZm91cm93bi5vcmcKLmFyY3Rvc2lhLmNvbQp8aHR0cDovL2FyY3Rvc2lhLmNvbQp8fGFyZWNhLWJhY2t1cC5vcmcKLmFyZXRodXNhLnN1Cnx8YXJldGh1c2Euc3UKfHxhcmxpbmd0b25jZW1ldGVyeS5taWwKfHxhcm15Lm1pbAouYXJ0NHRpYmV0MTk5OC5vcmcKYXJ0b2ZwZWFjZWZvdW5kYXRpb24ub3JnCmFydHN5Lm5ldAp8fGFzYWNwLm9yZwphc2RmZy5qcC9kYWJyCmFzZy50bwouYXNpYS1nYW1pbmcuY29tCi5hc2lhaGFydmVzdC5vcmcKfHxhc2lhaGFydmVzdC5vcmcKYXNpYW5ld3MuaXQKfGh0dHA6Ly9qYXBhbmZpcnN0LmFzaWFuZnJlZWZvcnVtLmNvbS8KfHxhc2lhbnNleGRpYXJ5LmNvbQp8fGFzaWFud29tZW5zZmlsbS5kZQouYXNpYXRncC5jb20KLmFzaWF0b2RheS51cwp8fGFza3N0dWRlbnQuY29tCi5hc2t5bnoubmV0Cnx8YXNreW56Lm5ldAp8fGFzc2VtYmxhLmNvbQp8fGFzdHJpbGwuY29tCnx8YXRjLm9yZy5hdQouYXRjaGluZXNlLmNvbQp8aHR0cDovL2F0Y2hpbmVzZS5jb20KYXRnZncub3JnCi5hdGxhc3Bvc3QuY29tCnx8YXRsYXNwb3N0LmNvbQp8fGF0ZG10LmNvbQouYXRsYW50YTE2OC5jb20vZm9ydW0KLmF0bmV4dC5jb20KfHxhdG5leHQuY29tCmljZS5hdWRpb25vdy5jb20KLmF2LmNvbQp8fGF2Lm1vdmllCi5hdi1lLWJvZHkuY29tCmF2YWF6Lm9yZwp8fGF2YWF6Lm9yZwohLS18fGF2YXN0LmNvbQouYXZib2R5LnR2Ci5hdmNpdHkudHYKLmF2Y29vbC5jb20KLmF2ZGIuaW4KfHxhdmRiLmluCi5hdmRiLnR2Cnx8YXZkYi50dgouYXZmYW50YXN5LmNvbQp8fGF2Zy5jb20KLmF2Z2xlLmNvbQp8fGF2Z2xlLmNvbQp8fGF2aWRlbXV4Lm9yZwp8fGF2b2lzaW9uLmNvbQouYXZ5YWhvby5jb20KfHxheHVyZWZvcm1hYy5jb20KLmF6ZXJiYXljYW4udHYKYXplcmltaXguY29tCiEtLWJveHVuLmF6dXJld2Vic2l0ZXMubmV0IGRvZXNuJ3QgZXhpc3QuCmJveHVuKi5henVyZXdlYnNpdGVzLm5ldAp8fGJveHVuKi5henVyZXdlYnNpdGVzLm5ldAoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tQkItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmZvcnVtLmJhYnkta2luZ2RvbS5jb20KYmFieW5ldC5jb20uaGsKYmFja2NoaW5hLmNvbQp8fGJhY2tjaGluYS5jb20KLmJhY2twYWNrZXJzLmNvbS50dy9mb3J1bQpiYWNrdG90aWFuYW5tZW4uY29tCi5iYWRpdWNhby5jb20KfHxiYWRpdWNhby5jb20KLmJhZGpvam8uY29tCmJhZG9vLmNvbQp8aHR0cDovLyoyLmJhaGFtdXQuY29tLnR3Cnx8YmFpZHUuanAKLmJhaWppZS5vcmcKfGh0dHA6Ly9iYWlqaWUub3JnCnx8YmFpbGFuZGFpbHkuY29tCnx8YmFpeGluZy5tZQp8fGJha2dlZWtob21lLnRrCi5iYW5hbmEtdnBuLmNvbQp8fGJhbmFuYS12cG4uY29tCi5iYW5kLnVzCi5iYW5kd2Fnb25ob3N0LmNvbQp8fGJhbmR3YWdvbmhvc3QuY29tCi5iYW5nYnJvc25ldHdvcmsuY29tCi5iYW5nY2hlbi5uZXQKfGh0dHA6Ly9iYW5nY2hlbi5uZXQKfHxiYW5neW91bGF0ZXIuY29tCmJhbm5lZGJvb2sub3JnCnx8YmFubmVkYm9vay5vcmcKLmJhbm5lZG5ld3Mub3JnCi5iYXJhbWFuZ2FvbmxpbmUuY29tCnxodHRwOi8vYmFyYW1hbmdhb25saW5lLmNvbQouYmFyZW5ha2VkaXNsYW0uY29tCnx8YmFybmFidS5jby51awp8fGJhcnRvbi5kZQpiYXJ0dnBuLmNvbQouYmFzdGlsbGVwb3N0LmNvbQpiYXl2b2ljZS5uZXQKfHxiYXl2b2ljZS5uZXQKZGFqdXNoYS5iYXl3b3Jkcy5jb20KfHxiYmNoYXQudHYKfHxiYi1jaGF0LnR2Ci5iYmcuZ292Ci5iYmt6LmNvbS9mb3J1bQouYmJucmFkaW8ub3JnCmJicy10dy5jb20KLmJic2RpZ2VzdC5jb20vdGhyZWFkCnx8YmJzZmVlZC5jb20KYmJzbGFuZC5jb20KLmJic21vLmNvbQouYmJzb25lLmNvbQpiYnRveXN0b3JlLmNvbQouYmNhc3QuY28ubnoKLmJjYy5jb20udHcvYm9hcmQKLmJjY2hpbmVzZS5uZXQKLmJjbW9ybmluZy5jb20KYmRzbXZpZGVvcy5uZXQKLmJlYWNvbmV2ZW50cy5jb20KLmJlYm8uY29tCnx8YmViby5jb20KLmJlZXZwbi5jb20KfHxiZWV2cG4uY29tCi5iZWhpbmRraW5rLmNvbQp8fGJlaWppbmcxOTg5LmNvbQpiZWlqaW5nc3ByaW5nLmNvbQp8fGJlaWppbmdzcHJpbmcuY29tCi5iZWlqaW5nengub3JnCnxodHRwOi8vYmVpamluZ3p4Lm9yZwouYmVsYW1pb25saW5lLmNvbQouYmVsbC53aWtpCnxodHRwOi8vYmVsbC53aWtpCmJlbXl3aWZlLmNjCmJlcmljLm1lCi5iZXJsaW50d2l0dGVyd2FsbC5jb20KfHxiZXJsaW50d2l0dGVyd2FsbC5jb20KLmJlcm0uY28ubnoKLmJlc3Rmb3JjaGluYS5vcmcKfHxiZXN0Zm9yY2hpbmEub3JnCi5iZXN0Z29yZS5jb20KLmJlc3Rwb3Juc3RhcmRiLmNvbQp8fGJlc3R2cG4uY29tCi5iZXN0dnBuYW5hbHlzaXMuY29tCi5iZXN0dnBuc2VydmVyLmNvbQouYmVzdHZwbnNlcnZpY2UuY29tCi5iZXN0dnBudXNhLmNvbQp8fGJldDM2NS5jb20KLmJldGZhaXIuY29tCnx8YmV0dGVybmV0LmNvCi5iZXR0ZXJ2cG4uY29tCnx8YmV0dGVydnBuLmNvbQouYmV0dHdlZW4uY29tCnx8YmV0dHdlZW4uY29tCnx8YmV0dmljdG9yLmNvbQouYmV3d3cubmV0Ci5iZXlvbmRmaXJld2FsbC5jb20KfHxiZm5uLm9yZwp8fGJmc2guaGsKLmJndnBuLmNvbQp8fGJndnBuLmNvbQouYmlhbmxlaS5jb20KQEB8fGJpYW5sZWkuY29tCmJpYW50YWlsYWppYW8uY29tCmJpYW50YWlsYWppYW8uaW4KLmJpYmxlc2ZvcmFtZXJpY2Eub3JnCnxodHRwOi8vYmlibGVzZm9yYW1lcmljYS5vcmcKLmJpYzIwMTEub3JnCmJpZ2Zvb2xzLmNvbQp8fGJpZ2phcGFuZXNlc2V4LmNvbQouYmlnbmV3cy5vcmcKfHxiaWduZXdzLm9yZwouYmlnc291bmQub3JnCi5iaWxpd29ybGQuY29tCnxodHRwOi8vYmlsaXdvcmxkLmNvbQp8aHR0cDovL2JpbGx5cGFuLmNvbS93aWtpCi5iaW51eC5tZQphaS5iaW53YW5nLm1lL2NvdXBsZXQKYmlwaWMubmV0Ci5iaXQuZG8KfGh0dHA6Ly9iaXQuZG8KLmJpdC5seQp8aHR0cDovL2JpdC5seQohLS18fGJpdGJ1Y2tldC5vcmcKfHxiaXRjb2ludGFsay5vcmcKLmJpdHNoYXJlLmNvbQp8fGJpdHNoYXJlLmNvbQpiaXRzbm9vcC5jb20KLmJpdHZpc2UuY29tCnx8Yml0dmlzZS5jb20KYml6aGF0LmNvbQp8fGJsLWRvdWppbnNvdWtvLmNvbQouYmpuZXdsaWZlLm9yZwouYmpzLm9yZwpianpjLm9yZwp8fGJqemMub3JnCi5ibGFja2xvZ2ljLmNvbQouYmxhY2t2cG4uY29tCnx8YmxhY2t2cG4uY29tCmJsZXdwYXNzLmNvbQp0b3IuYmxpbmdibGluZ3NxdWFkLm5ldAouYmxpbmt4LmNvbQp8fGJsaW5reC5jb20KYmxpbncuY29tCi5ibGlwLnR2Cnx8YmxpcC50di8KLmJsb2NrY24uY29tCnx8YmxvY2tjbi5jb20KfHxibG9ja2xlc3MuY29tCnx8YmxvZy5kZQouYmxvZy5qcAp8aHR0cDovL2Jsb2cuanAKQEB8fGpwdXNoLmNuCi5ibG9nY2F0YWxvZy5jb20KfHxibG9nY2F0YWxvZy5jb20KfHxibG9nY2l0eS5tZQouYmxvZ2dlci5jb20KfHxibG9nZ2VyLmNvbQpibG9naW1nLmpwCnx8YmxvZy5rYW5neWUub3JnCi5ibG9nbGluZXMuY29tCnx8YmxvZ2xpbmVzLmNvbQp8fGJsb2dsb3Zpbi5jb20KcmNvbnZlcnNhdGlvbi5ibG9ncy5jb20KYmxvZ3RkLm5ldAouYmxvZ3RkLm9yZwp8aHR0cDovL2Jsb2d0ZC5vcmcKfHxibG9vZHNoZWQubmV0Ci5ibG9vbWJlcmcuY24KfHxibG9vbWJlcmcuY24KLmJsb29tYmVyZy5jb20KfHxibG9vbWJlcmcuY29tCmJsb29tYmVyZy5kZQp8fGJsb29tYmVyZy5kZQohLS00MDMKfHxhc3NldHMuYndieC5pbwoKfHxibG9vbWZvcnR1bmUuY29tCmJsdWVhbmdlbGxpdmUuY29tCi5ibWZpbm4uY29tCi5ibmV3cy5jbwp8fGJuZXdzLmNvCnx8Ym5ybWV0YWwuY29tCmJvYXJkcmVhZGVyLmNvbS90aHJlYWQKfHxib2FyZHJlYWRlci5jb20KLmJvZC5hc2lhCnxodHRwOi8vYm9kLmFzaWEKLmJvZG9nODguY29tCi5ib2xlaHZwbi5uZXQKfHxib2xlaHZwbi5uZXQKYm9uYm9ubWUuY29tCi5ib25ib25zZXguY29tCi5ib25mb3VuZGF0aW9uLm9yZwouYm9uZ2FjYW1zLmNvbQp8fGJvb2JzdGFncmFtLmNvbQp8fGJvb2suY29tLnR3CmJvb2tlcHViLmNvbQp8fGJvb2tzLmNvbS50dwp8fGJvdGFud2FuZy5jb20KLmJvdC5udQouYm93ZW5wcmVzcy5jb20KfHxib3dlbnByZXNzLmNvbQp8fGFwcC5ib3guY29tCmRsLmJveC5uZXQKfHxkbC5ib3gubmV0Ci5ib3hwbi5jb20KfHxib3hwbi5jb20KYm94dW4uY29tCnx8Ym94dW4uY29tCi5ib3h1bi50dgp8fGJveHVuLnR2CmJveHVuYmxvZy5jb20KfHxib3h1bmJsb2cuY29tCi5ib3h1bmNsdWIuY29tCmJveWFuZ3UuY29tCi5ib3lmcmllbmR0di5jb20KLmJveXNmb29kLmNvbQp8fGJyLnN0Ci5icmFpbnlxdW90ZS5jb20vcXVvdGVzL2F1dGhvcnMvZC9kYWxhaV9sYW1hCnx8YnJhbmRvbmh1dGNoaW5zb24uY29tCnx8YnJhdW1laXN0ZXIub3JnCi5icmF2b3R1YmUubmV0Cnx8YnJhdm90dWJlLm5ldAouYnJhenplcnMuY29tCnx8YnJhenplcnMuY29tCi5icmVhay5jb20KfHxicmVhay5jb20KYnJlYWtnZncuY29tCnx8YnJlYWtnZncuY29tCmJyZWFraW5nOTExLmNvbQouYnJlYWtpbmd0d2VldHMuY29tCnx8YnJlYWtpbmd0d2VldHMuY29tCnx8YnJlYWt3YWxsLm5ldApicmlpYW4uY29tLzY1MTEvZnJlZWdhdGUKLmJyaWVmZHJlYW0uY29tLyVFNyVCNCVBMCVFNiVBMyVCQQpicml6emx5LmNvbQp8fGJyaXp6bHkuY29tCnx8YnJrbWQuY29tCmJyb2FkYm9vay5jb20KLmJyb2FkcHJlc3NpbmMuY29tCnx8YnJvYWRwcmVzc2luYy5jb20KYmJzLmJyb2NrYmJzLmNvbQpicnVjZXdhbmcubmV0Ci5icnV0YWx0Z3AuY29tCnx8YnJ1dGFsdGdwLmNvbQouYnQybWFnLmNvbQp8fGJ0OTUuY29tCi5idGFpYS5jb20KLmJ0YnRhdi5jb20KfGh0dHA6Ly9idGRpZ2cub3JnCi5idGt1Lm1lCnx8YnRrdS5tZQp8fGJ0a3Uub3JnCi5idHNwcmVhZC5jb20KLmJ0c3luY2tleXMuY29tCi5idWRhZWR1Lm9yZwp8fGJ1ZGFlZHUub3JnCi5idWRkaGFuZXQuY29tLnR3L3pmcm9wL3RpYmV0Ci5idWRkaGlzdGNoYW5uZWwudHYKLmJ1ZmZlcmVkLmNvbQp8aHR0cDovL2J1ZmZlcmVkLmNvbQouYnVsbG9nLm9yZwp8fGJ1bGxvZy5vcmcKLmJ1bGxvZ2dlci5jb20KfHxidWxsb2dnZXIuY29tCmJ1bmJ1bmhrLmNvbQouYnVzYXlhcmkuY29tCnxodHRwOi8vYnVzYXlhcmkuY29tCi5idXNpbmVzc2luc2lkZXIuY29tL2JpbmctY291bGQtYmUtY2Vuc29yaW5nLXNlYXJjaC1yZXN1bHRzLTIwMTQKLmJ1c2luZXNzaW5zaWRlci5jb20vY2hpbmEtYmFua3MtcHJlcGFyaW5nLWZvci1kZWJ0LWltcGxvc2lvbi0yMDE0Ci5idXNpbmVzc2luc2lkZXIuY29tL2hvbmcta29uZy1hY3RpdmlzdHMtZGVmeS1wb2xpY2UtdGVhci1nYXMtYXMtcHJvdGVzdHMtY29udGludWUtb3Zlcm5pZ2h0LTIwMTQKLmJ1c2luZXNzaW5zaWRlci5jb20vaW50ZXJuZXQtb3V0YWdlcy1yZXBvcnRlZC1pbi1ub3J0aC1rb3JlYS0yMDE0Ci5idXNpbmVzc2luc2lkZXIuY29tL2lwaG9uZS02LWlzLWFwcHJvdmVkLWZvci1zYWxlLWluLWNoaW5hLTIwMTQKLmJ1c2luZXNzaW5zaWRlci5jb20vbmZsLWFubm91bmNlcnMtc3VyZmFjZS10YWJsZXRzLTIwMTQKLmJ1c2luZXNzaW5zaWRlci5jb20vcGFuYW1hLXBhcGVycwouYnVzaW5lc3NpbnNpZGVyLmNvbS91bWJyZWxsYS1tYW4taG9uZy1rb25nLTIwMTQKfGh0dHA6Ly93d3cuYnVzaW5lc3NpbnNpZGVyLmNvbS5hdS8qCi5idXNpbmVzc3RvZGF5LmNvbS50dwp8fGJ1c2luZXNzdG9kYXkuY29tLnR3Ci5idXNpbmVzc3dlZWsuY29tCi5idXN1Lm9yZy9uZXdzCnxodHRwOi8vYnVzdS5vcmcvbmV3cwpidXN5dHJhZGUuY29tCi5idXVnYWEuY29tCi5idXp6aGFuZC5jb20KLmJ1enpoYW5kLm5ldAouYnV6em9yYW5nZS5jb20KfHxidXp6b3JhbmdlLmNvbQp8fGJ2cG4uY29tCnx8YndoMS5uZXQKYndzai5oawp8fGJ4LnRsCgohLS0tLS0tLS0tLS0tLS0tLS0tLS1DQy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLmMtc3BhbnZpZGVvLm9yZwp8fGMtc3BhbnZpZGVvLm9yZwp8fGMtZXN0LXNpbXBsZS5jb20KLmMxMDB0aWJldC5vcmcKfHxjYWJsZWdhdGVzZWFyY2gubmV0Ci5jYWNoaW5lc2UuY29tCi5jYWNudy5jb20KfGh0dHA6Ly9jYWNudy5jb20KLmNhY3R1c3Zwbi5jb20KfHxjYWN0dXN2cG4uY29tCi5jYWZlcHJlc3MuY29tCi5jYWhyLm9yZy50dwouY2FpamluZ2xlbmd5YW4uY29tCnx8Y2FpamluZ2xlbmd5YW4uY29tCi5jYWxhbWVvLmNvbS9ib29rcwpjbi5jYWxhbWVvLmNvbQp8aHR0cDovL2NuLmNhbGFtZW8uY29tCi5jYWxnYXJ5Y2hpbmVzZS5jYQouY2FsZ2FyeWNoaW5lc2UuY29tCi5jYWxnYXJ5Y2hpbmVzZS5uZXQKfGh0dHA6Ly9ibG9nLmNhbGlicmUtZWJvb2suY29tCnxodHRwOi8vZ29vZ2xlLmNhbHN0YXRlLmVkdQpmYWx1bi5jYWx0ZWNoLmVkdQouaXRzLmNhbHRlY2guZWR1L35mYWx1bi8KLmNhbTQuY29tCi5jYW00LmpwCi5jYW00LnNnCi5jYW1mcm9nLmNvbQp8fGNhbWZyb2cuY29tCnx8Y2FtcGFpZ25mb3J1eWdodXJzLm9yZwp8fGNhbXMuY29tCi5jYW1zLm9yZy5zZwpjYW5hZGFtZWV0LmNvbQouY2FuYWxwb3Juby5jb20KfGh0dHA6Ly9iYnMuY2FudG9uZXNlLmFzaWEvCiEtLWh0dHA6Ly93d3cuY2FudG9uZXNlLmFzaWEvYWN0aW9uLWJicy5odG1sCi5jYW55dS5vcmcKfHxjYW55dS5vcmcKLmNhby5pbQouY2FvYmlhbi5pbmZvCnx8Y2FvYmlhbi5pbmZvCmNhb2NoYW5ncWluZy5jb20KfHxjYW9jaGFuZ3FpbmcuY29tCi5jYXAub3JnLmhrCnx8Y2FwLm9yZy5oawouY2FyYWJpbmFzeXBpc3RvbGFzLmNvbQpjYXJkaW5hbGt1bmdmb3VuZGF0aW9uLm9yZwpjYXJtb3RvcnNob3cuY29tCnNzLmNhcnJ5emhvdS5jb20KLmNhcnRvb25tb3ZlbWVudC5jb20KfHxjYXJ0b29ubW92ZW1lbnQuY29tCi5jYXNhZGVsdGliZXRiY24ub3JnCi5jYXNhdGliZXQub3JnLm14CnxodHRwOi8vY2FzYXRpYmV0Lm9yZy5teApjYXJpLmNvbS5teQp8fGNhcmliYmVhbmNvbS5jb20KLmNhc2lub2tpbmcuY29tCi5jYXNpbm9yaXZhLmNvbQp8fGNhdGNoMjIubmV0Ci5jYXRjaGdvZC5jb20KfGh0dHA6Ly9jYXRjaGdvZC5jb20KfHxjYXRmaWdodHBheXBlcnZpZXcueHh4Ci5jYXRob2xpYy5vcmcuaGsKfHxjYXRob2xpYy5vcmcuaGsKY2F0aG9saWMub3JnLnR3Cnx8Y2F0aG9saWMub3JnLnR3Ci5jYXRodm9pY2Uub3JnLnR3Cnx8Y2F0dHQuY29tCi5jYmMuY2EKfHxjYmMuY2EKLmNic25ld3MuY29tL3ZpZGVvCi5jYnRjLm9yZy5oawohLS5jY2MuZGUKIS18fGNjYy5kZQp8fGNjY2F0LmNjCnx8Y2NjYXQuY28KLmNjZHRyLm9yZwp8fGNjZHRyLm9yZwouY2NoZXJlLmNvbQp8fGNjaGVyZS5jb20KLmNjaW0ub3JnCi5jY2xpZmUuY2EKY2NsaWZlLm9yZwpjY2xpZmVmbC5vcmcKLmNjdGhlcmUuY29tCnx8Y2N0aGVyZS5jb20KfHxjY3RoZXJlLm5ldAouY2N0bXdlYi5uZXQKLmNjdG9uZ2Jhby5jb20vYXJ0aWNsZS8yMDc4NzMyCmNjdWUuY2EKY2N1ZS5jb20KLmNjdm9pY2UuY2EKLmNjdy5vcmcudHcKLmNnZGVwb3Qub3JnCnxodHRwOi8vY2dkZXBvdC5vcmcKfHxjZGJvb2sub3JnCi5jZGNwYXJ0eS5jb20KLmNkZWYub3JnCnx8Y2RlZi5vcmcKfHxjZGlnLmluZm8KY2RqcC5vcmcKfHxjZGpwLm9yZwouY2RuLWFwcGxlLmNvbQp8fGNkbi1hcHBsZS5jb20KLmNkbmV3cy5jb20udHcKY2RwMTk4OS5vcmcKY2RwMTk5OC5vcmcKfHxjZHAxOTk4Lm9yZwpjZHAyMDA2Lm9yZwp8fGNkcDIwMDYub3JnCi5jZHBhLnVybC50dwpjZHBldS5vcmcKY2RwdXNhLm9yZwpjZHB3ZWIub3JnCnx8Y2Rwd2ViLm9yZwpjZHB3dS5vcmcKfHxjZHB3dS5vcmcKfHxjZHcuY29tCi5jZWNjLmdvdgp8fGNlY2MuZ292Cnx8Y2VsbHVsby5pbmZvCnx8Y2VuZXdzLmV1Cnx8Y2VudGVyZm9yaHVtYW5yZXByb2QuY29tCnx8Y2VudHJhbG5hdGlvbi5jb20KLmNlbnR1cnlzLm5ldAp8aHR0cDovL2NlbnR1cnlzLm5ldAouY2Zoa3Mub3JnLmhrCi5jZm9zLmRlCi5jZnRmYy5jb20KLmNnc3QuZWR1Ci5jaGFuZ2Uub3JnCnx8Y2hhbmdlLm9yZwouY2hhbmdwLmNvbQp8fGNoYW5ncC5jb20KLmNoYW5nc2EubmV0CnxodHRwOi8vY2hhbmdzYS5uZXQKLmNoYW5uZWw4bmV3cy5zZy9uZXdzOAouY2hhcG0yNS5jb20KLmNoYXR1cmJhdGUuY29tCi5jaHVhbmcteWVuLm9yZwpjaGVuZ21pbmdtYWcuY29tCi5jaGVuZ3VhbmdjaGVuZy5jb20KfHxjaGVuZ3VhbmdjaGVuZy5jb20KLmNoZW5wb2tvbmcuY29tCi5jaGVucG9rb25nLm5ldAp8aHR0cDovL2NoZW5wb2tvbmcubmV0Cnx8Y2hlcnJ5c2F2ZS5jb20KLmNoaG9uZ2JpLm9yZwpjaGljYWdvbmNtdHYuY29tCnxodHRwOi8vY2hpY2Fnb25jbXR2LmNvbQouY2hpbmEtd2Vlay5jb20KY2hpbmExMDEuY29tCnx8Y2hpbmExMDEuY29tCnx8Y2hpbmExOC5vcmcKfHxjaGluYTIxLmNvbQpjaGluYTIxLm9yZwp8fGNoaW5hMjEub3JnCi5jaGluYTUwMDAudXMKY2hpbmFhZmZhaXJzLm9yZwp8fGNoaW5hYWZmYWlycy5vcmcKfHxjaGluYWFpZC5tZQpjaGluYWFpZC51cwpjaGluYWFpZC5vcmcKY2hpbmFhaWQubmV0CmNoaW5hY29tbWVudHMub3JnCnx8Y2hpbmFjb21tZW50cy5vcmcKLmNoaW5hY2hhbmdlLm9yZwp8fGNoaW5hY2hhbmdlLm9yZwpjaGluYWNoYW5uZWwuaGsKfHxjaGluYWNoYW5uZWwuaGsKLmNoaW5hY2l0eW5ld3MuYmUKLmNoaW5hZGlhbG9ndWUubmV0Ci5jaGluYWRpZ2l0YWx0aW1lcy5uZXQKfHxjaGluYWRpZ2l0YWx0aW1lcy5uZXQKLmNoaW5hZWxlY3Rpb25zLm9yZwp8fGNoaW5hZWxlY3Rpb25zLm9yZwouY2hpbmFld2Vla2x5LmNvbQp8fGNoaW5hZXdlZWtseS5jb20KfHxjaGluYWZyZWVwcmVzcy5vcmcKLmNoaW5hZ2F0ZS5jb20KY2hpbmFnZWVrcy5vcmcKY2hpbmFnZncub3JnCnx8Y2hpbmFnZncub3JnCi5jaGluYWdvbmV0LmNvbQouY2hpbmFncmVlbnBhcnR5Lm9yZwp8fGNoaW5hZ3JlZW5wYXJ0eS5vcmcKLmNoaW5haG9yaXpvbi5vcmcKfHxjaGluYWhvcml6b24ub3JnCi5jaGluYWh1c2guY29tCi5jaGluYWlucGVyc3BlY3RpdmUuY29tCnx8Y2hpbmFpbnRlcmltZ292Lm9yZwpjaGluYWxhYm9yd2F0Y2gub3JnCmNoaW5hbGF3dHJhbnNsYXRlLmNvbQouY2hpbmFwb3N0LmNvbS50dy90YWl3YW4vbmF0aW9uYWwvbmF0aW9uYWwtbmV3cwpjaGluYXhjaGluYS5jb20vaG93dG8KY2hpbmFsYXdhbmRwb2xpY3kuY29tCi5jaGluYW11bGUuY29tCnx8Y2hpbmFtdWxlLmNvbQpjaGluYW16Lm9yZwouY2hpbmFuZXdzY2VudGVyLmNvbQp8aHR0cHM6Ly9jaGluYW5ld3NjZW50ZXIuY29tCi5jaGluYXByZXNzLmNvbS5teQp8fGNoaW5hcHJlc3MuY29tLm15Ci5jaGluYS1yZXZpZXcuY29tLnVhCnxodHRwOi8vY2hpbmEtcmV2aWV3LmNvbS51YQouY2hpbmFyaWdodHNpYS5vcmcKY2hpbmFzbWlsZS5uZXQvZm9ydW1zCmNoaW5hc29jaWFsZGVtb2NyYXRpY3BhcnR5LmNvbQp8fGNoaW5hc29jaWFsZGVtb2NyYXRpY3BhcnR5LmNvbQpjaGluYXNvdWwub3JnCnx8Y2hpbmFzb3VsLm9yZwouY2hpbmFzdWNrcy5uZXQKfHxjaGluYXRvcHNleC5jb20KLmNoaW5hdG93bi5jb20uYXUKY2hpbmF0d2VlcHMuY29tCmNoaW5hd2F5Lm9yZwouY2hpbmF3b3JrZXIuaW5mbwp8fGNoaW5hd29ya2VyLmluZm8KY2hpbmF5b3V0aC5vcmcuaGsKY2hpbmF5dWFubWluLm9yZwp8fGNoaW5heXVhbm1pbi5vcmcKLmNoaW5lc2UtaGVybWl0Lm5ldApjaGluZXNlLWxlYWRlcnMub3JnCmNoaW5lc2UtbWVtb3JpYWwub3JnCi5jaGluZXNlZGFpbHkuY29tCnx8Y2hpbmVzZWRhaWx5bmV3cy5jb20KLmNoaW5lc2VkZW1vY3JhY3kuY29tCnx8Y2hpbmVzZWRlbW9jcmFjeS5jb20KfHxjaGluZXNlZ2F5Lm9yZwouY2hpbmVzZW4uZGUKfHxjaGluZXNlbi5kZQouY2hpbmVzZW5ld3MubmV0LmF1LwouY2hpbmVzZXBlbi5vcmcKLmNoaW5lc2V0YWxrcy5uZXQvY2gKfHxjaGluZXNldXByZXNzLmNvbQouY2hpbmdjaGVvbmcuY29tCnx8Y2hpbmdjaGVvbmcuY29tCi5jaGlubWFuLm5ldAp8aHR0cDovL2NoaW5tYW4ubmV0CmNoaXRodS5vcmcKfGh0dHA6Ly9jaG4uY2hvc3VuLmNvbQpjbm5ld3MuY2hvc3VuLmNvbS9jbGllbnQvbmV3cy92aXcuYXNwP2NhdGU9QzAxJm1jYXRlCi5jaHJkbmV0LmNvbQp8aHR0cDovL2NocmRuZXQuY29tCi5jaHJpc3RpYW5mcmVlZG9tLm9yZwp8aHR0cDovL2NocmlzdGlhbmZyZWVkb20ub3JnCmNocmlzdGlhbnN0dWR5LmNvbQp8fGNocmlzdGlhbnN0dWR5LmNvbQpjaHJpc3R1c3JleC5vcmcvd3d3MS9zZGMKLmNodWJvbGQuY29tCmNodWJ1bi5jb20KY2h1aXppLm5ldApjaHJpc3RpYW50aW1lcy5vcmcuaGsKLmNocmxhd3llcnMuaGsKfGh0dHA6Ly9jaHJsYXd5ZXJzLmhrCi5jaHVyY2hpbmhvbmdrb25nLm9yZy9iNS9pbmRleC5waHAKfGh0dHA6Ly9jaHVyY2hpbmhvbmdrb25nLm9yZy9iNS9pbmRleC5waHAKLmNodXNoaWdhbmdkcnVnLmNoCi5jaWVuZW4uY29tCi5jaW5lYXN0ZW50cmVmZi5kZQouY2lwZmcub3JnCnx8Y2lyY2xldGhlYmF5Zm9ydGliZXQub3JnCnx8Y2lyb3NhbnRpbGxpLmNvbQouY2l0aXplbmNuLmNvbQp8fGNpdGl6ZW5jbi5jb20KfGh0dHA6Ly9jaXRpemVubGFiLm9yZwp8aHR0cDovL3d3dy5jaXRpemVubGFiLm9yZwp8fGNpdGl6ZW5zY29tbWlzc2lvbi5oawouY2l0aXplbmxhYi5vcmcKY2l0aXplbnNyYWRpby5vcmcKLmNpdHkzNjUuY2EKfGh0dHA6Ly9jaXR5MzY1LmNhCmNpdHk5eC5jb20KfHxjaXR5cG9wdWxhdGlvbi5kZQouY2l0eXRhbGsudHcvZXZlbnQKLmNpdmljcGFydHkuaGsKfHxjaXZpY3BhcnR5LmhrCi5jaXZpbGRpc29iZWRpZW5jZW1vdmVtZW50Lm9yZwpjaXZpbGhyZnJvbnQub3JnCnx8Y2l2aWxocmZyb250Lm9yZwouY2l2aWxpYW5ndW5uZXIuY29tCi5jaXZpbG1lZGlhLnR3Cnx8Y2l2aWxtZWRpYS50dwpwc2lwaG9uLmNpdmlzZWMub3JnCnx8dnBuLmNqYi5uZXQKLmNrMTAxLmNvbQp8fGNrMTAxLmNvbQouY2xhcmlvbnByb2plY3Qub3JnL25ld3MvaXNsYW1pYy1zdGF0ZS1pc2lzLWlzaWwtcHJvcGFnYW5kYQp8fGNsYXNzaWNhbGd1aXRhcmJsb2cubmV0Ci5jbGIub3JnLmhrCmNsZWFyaGFybW9ueS5uZXQKY2xlYXJ3aXNkb20ubmV0CmNsaW5pY2EtdGliZXQucnUKLmNsaXBmaXNoLmRlCmNsb2FrcG9pbnQuY29tCnx8Y2x1YjEwNjkuY29tCmNtaS5vcmcudHcKfGh0dHA6Ly93d3cuY21vaW5jLm9yZwpjbXAuaGt1LmhrCmhrdXBvcC5oa3UuaGsKfHxjbXVsZS5jb20KfHxjbXVsZS5vcmcKfHxjbXMuZ292CnxodHRwOi8vdnBuLmNtdS5lZHUKfGh0dHA6Ly92cG4uc3YuY211LmVkdQouY242LmV1Ci5jbmEuY29tLnR3Cnx8Y25hLmNvbS50dwouY25hYmMuY29tCi5jbmQub3JnCnx8Y25kLm9yZwpkb3dubG9hZC5jbmV0LmNvbQouY25leC5vcmcuY24KLmNuaW5ldS5jb20Kd2lraS5jbml0dGVyLmNvbQouY25uLmNvbS92aWRlbwouY25wb2xpdGljcy5vcmcKfHxjbnBvbGl0aWNzLm9yZwouY24tcHJveHkuY29tCnxodHRwOi8vY24tcHJveHkuY29tCi5jbnByb3h5LmNvbQpibG9nLmNueWVzLmNvbQpuZXdzLmNueWVzLmNvbQp8fGNvYXQuY28uanAKLmNvY2hpbmEuY28KfHxjb2NoaW5hLmNvCnx8Y29jaGluYS5vcmcKLmNvZGUxOTg0LmNvbS82NAp8aHR0cDovL2dvYWdlbnQuY29kZXBsZXguY29tCnx8Y29kZXNoYXJlLmlvCnx8Y29kZXNrdWxwdG9yLm9yZwp8aHR0cDovL3Rvc2guY29tZWR5Y2VudHJhbC5jb20KY29tZWZyb21jaGluYS5jb20KfHxjb21lZnJvbWNoaW5hLmNvbQouY29taWMtbWVnYS5tZQpjb21tYW5kYXJtcy5jb20KfHxjb21tZW50c2hrLmNvbQouY29tbXVuaXN0Y3JpbWVzLm9yZwp8fGNvbW11bmlzdGNyaW1lcy5vcmcKfHxjb21tdW5pdHljaG9pY2VjdS5jb20KfHxjb21waWxlaGVhcnQuY29tCnx8Y29ub2hhLmpwCi5jb250YWN0bWFnYXppbmUubmV0Ci5jb252aW8ubmV0Ci5jb29iYXkuY29tCnxodHRwOi8vd3d3LmNvb2wxOC5jb20vYmJzKi8KLmNvb2xhbGVyLmNvbQp8fGNvb2xhbGVyLmNvbQpjb29sZGVyLmNvbQp8fGNvb2xkZXIuY29tCnx8Y29vbGxvdWQub3JnLnR3Ci5jb29sbmN1dGUuY29tCnx8Y29vbHN0dWZmaW5jLmNvbQpjb3J1bWNvbGxlZ2UuY29tCi5jb3MtbW9lLmNvbQp8aHR0cDovL2Nvcy1tb2UuY29tCi5jb3NwbGF5amF2LnBsCnxodHRwOi8vY29zcGxheWphdi5wbAouY290d2VldC5jb20KfHxjb3R3ZWV0LmNvbQouY291cnNlaGVyby5jb20KfHxjb3Vyc2VoZXJvLmNvbQpjcGoub3JnCnx8Y3BqLm9yZwouY3E5OS51cwp8aHR0cDovL2NxOTkudXMKY3JhY2tsZS5jb20KfHxjcmFja2xlLmNvbQouY3JhenlzLmNjCi5jcmF6eXNoaXQuY29tCnx8Y3JjaGluYS5vcmcKY3JkLW5ldC5vcmcKY3JlYWRlcnMubmV0Cnx8Y3JlYWRlcnMubmV0Ci5jcmVhZGVyc25ldC5jb20KfHxjcmlzdHlsaS5jb20KLmNyb2NvdHViZS5jb20KfGh0dHA6Ly9jcm9jb3R1YmUuY29tCi5jcm9zc3RoZXdhbGwubmV0Cnx8Y3Jvc3N0aGV3YWxsLm5ldAouY3Jvc3N2cG4ubmV0Cnx8Y3Jvc3N2cG4ubmV0Cnx8Y3J1Y2lhbC5jb20KY3NkcGFydHkuY29tCnx8Y3NkcGFydHkuY29tCnx8Y3N1Y2hlbi5kZQouY3N3Lm9yZy51awouY3Qub3JnLnR3Cnx8Y3Qub3JnLnR3Ci5jdGFvLm9yZwouY3RmcmllbmQubmV0Ci5jdGl0di5jb20udHcKY3RzLmNvbS50dwp8aHR0cDovL2xpYnJhcnkudXNjLmN1aGsuZWR1LmhrLwp8aHR0cDovL21qbHNoLnVzYy5jdWhrLmVkdS5oay8KLmN1aGthY3Mub3JnL35iZW5uZwouY3VpaHVhLm9yZwp8fGN1aWh1YS5vcmcKLmN1aXdlaXBpbmcubmV0Cnx8Y3Vpd2VpcGluZy5uZXQKfHxjdWx0dXJlLnR3Ci5jdW1sb3VkZXIuY29tCnx8Y3VtbG91ZGVyLmNvbQp8fGN1cnZlZmlzaC5jb20KLmN1c3UuaGsKfHxjdXN1LmhrCi5jdXRzY2VuZXMubmV0Ci5jdy5jb20udHcKfHxjdy5jb20udHcKfGh0dHA6Ly9mb3J1bS5jeWJlcmN0bS5jb20KY3liZXJnaG9zdHZwbi5jb20KfHxjeWJlcmdob3N0dnBuLmNvbQp8fGN5bnNjcmliZS5jb20KY3l0b2RlLnVzCnx8aWZhbi5jei5jYwp8fG1pa2UuY3ouY2MKfHxuaWMuY3ouY2MKCiEtLS0tLS0tLS0tLS0tLS0tLS0tLURELS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQouZC1mdWt5dS5jb20KfGh0dHA6Ly9kLWZ1a3l1LmNvbQpjbC5kMHoubmV0Ci5kMTAwLm5ldAp8fGQxMDAubmV0Ci5kMmJheS5jb20KfGh0dHA6Ly9kMmJheS5jb20KLmRhYnIuY28udWsKfHxkYWJyLmNvLnVrCmRhYnIuZXUKZGFici5tb2JpCnx8ZGFici5tb2JpCnx8ZGFici5tZQpkYWRhemltLmNvbQp8fGRhZGF6aW0uY29tCi5kYWRpMzYwLmNvbQouZGFmYWJldC5jb20KZGFmYWdvb2QuY29tCmRhZmFoYW8uY29tCi5kYWZvaC5vcmcKLmRhZnRwb3JuLmNvbQouZGFnZWxpamtzZXN0YW5kYWFyZC5ubAouZGFpZG9zdHVwLnJ1CnxodHRwOi8vZGFpZG9zdHVwLnJ1Ci5kYWlsaWRhaWxpLmNvbQp8fGRhaWxpZGFpbGkuY29tCi5kYWlseW1vdGlvbi5jb20KfHxkYWlseW1vdGlvbi5jb20KZGFpcGhhcGluZm8ubmV0Ci5kYWppeXVhbi5jb20KfHxkYWppeXVhbi5kZQpkYWppeXVhbi5ldQpkYWxhaWxhbWEuY29tCi5kYWxhaWxhbWEubW4KfGh0dHA6Ly9kYWxhaWxhbWEubW4KLmRhbGFpbGFtYS5ydQp8fGRhbGFpbGFtYS5ydQpkYWxhaWxhbWE4MC5vcmcKLmRhbGFpbGFtYS1hcmNoaXZlcy5vcmcKLmRhbGFpbGFtYWNlbnRlci5vcmcKfGh0dHA6Ly9kYWxhaWxhbWFjZW50ZXIub3JnCmRhbGFpbGFtYWZlbGxvd3Mub3JnCi5kYWxhaWxhbWFmaWxtLmNvbQouZGFsYWlsYW1hZm91bmRhdGlvbi5vcmcKLmRhbGFpbGFtYWhpbmRpLmNvbQouZGFsYWlsYW1haW5hdXN0cmFsaWEub3JnCi5kYWxhaWxhbWFqYXBhbmVzZS5jb20KLmRhbGFpbGFtYXByb3Rlc3RlcnMuaW5mbwouZGFsYWlsYW1hcXVvdGVzLm9yZwouZGFsYWlsYW1hdHJ1c3Qub3JnCi5kYWxhaWxhbWF2aXNpdC5vcmcubnoKLmRhbGFpbGFtYXdvcmxkLmNvbQp8fGRhbGFpbGFtYXdvcmxkLmNvbQpkYWxpYW5tZW5nLm9yZwp8fGRhbGlhbm1lbmcub3JnCi5kYWxpdWxpYW4ub3JnCnx8ZGFsaXVsaWFuLm9yZwouZGFua2U0Y2hpbmEubmV0Cnx8ZGFua2U0Y2hpbmEubmV0Ci5kYW53ZWkub3JnCmRhb2xhbi5uZXQKLmRhb3pob25neGluZy5vcmcKZGFya3RveS5uZXQKfHxkYXN0cmFzc2kub3JnCmJsb2cuZGF1bS5uZXQvX2Jsb2cKLmRhdmlkLWtpbGdvdXIuY29tCnxodHRwOi8vZGF2aWQta2lsZ291ci5jb20KZGF4YS5jbgp8fGRheGEuY24KY24uZGF5YWJvb2suY29tCi5kYXlsaWZlLmNvbS90b3BpYy9kYWxhaV9sYW1hCnx8ZGIudHQKLmRiYy5oay9tYWluCnx8ZGNhcmQudHcKZGNtaWxpdGFyeS5jb20KLmRkYy5jb20udHcKLmRkaHcuaW5mbwp8fGRlLXNjaS5vcmcKLmRlLXNjaS5vcmcKcGFja2FnZXMuZGViaWFuLm9yZy96aC1jbi9sZW5ueS9ncGFzcwp8fGRlY29kZXQuY28KCiEtLU9yaWdpbjpjZG4taTMwJF8KIS0tRXhjZXB0aW9uOiBIb21lcGFnZSBhY2Nlc3Mgd2l0aG91dCByc3QKIS0tS2V5d29yZCBpcyAkXwouZGVmaW5lYmFiZS5jb20KCnx8ZGVsY2FtcC5uZXQKZGVsaWNpb3VzLmNvbS9HRldib29rbWFyawouZGVtb2NyYXRzLm9yZwp8fGRlbW9jcmF0cy5vcmcKLmRlbW9zaXN0by5oawp8fGRlbW9zaXN0by5oawp8fGRlc2Muc2UKfHxkZXNzY2kuY29tCi5kZXN0cm95LWNoaW5hLmpwCnx8ZGV1dHNjaGUtd2VsbGUuZGUKIS0tfHxkZXZpYW50YXJ0LmNvbQohLS18fGRldmlhbnRhcnQubmV0Cnx8ZGV2aW8udXMKfHxkZXZwbi5jb20KfHxkZmFzLm1pbApkZm4ub3JnCmRoYXJtYWthcmEubmV0Ci5kaGFyYW1zYWxhbmV0LmNvbQouZGlhb3l1aXNsYW5kcy5vcmcKfHxkaWFveXVpc2xhbmRzLm9yZwouZGlmYW5nd2VuZ2Uub3JnCnxodHRwOi8vZGlnaWxhbmQudHcvCnx8ZGlnaXRhbG5vbWFkc3Byb2plY3Qub3JnCi5kaWlnby5jb20KfHxkaWlnby5jb20KfHxkaWxiZXIuc2UKfHxmdXJsLm5ldAouZGlwaXR5LmNvbQp8fGRpcmVjdGNyZWF0aXZlLmNvbQohLS18fGRpc2NvZ3MuY29tCiEtLUBAfHxjZG4uZGlzY29ncy5jb20KLmRpc2N1c3MuY29tLmhrCnx8ZGlzY3Vzcy5jb20uaGsKLmRpc2N1c3M0dS5jb20KZGlzcC5jYwouZGlzcXVzLmNvbQp8fGRpc3F1cy5jb20KLmRpdC1pbmMudXMKfHxkaXQtaW5jLnVzCi5kaXpoaWRpemhpLmNvbQp8fGRpemh1emhpc2hhbmcuY29tCmRqYW5nb3NuaXBwZXRzLm9yZwouZGpvcnouY29tCnx8ZGpvcnouY29tCnx8ZGwtbGFieS5qcAp8fGRsc2l0ZS5jb20KfHxkbHlvdXR1YmUuY29tCnx8ZG1jZG4ubmV0Ci5kbnNjcnlwdC5vcmcKfHxkbnNjcnlwdC5vcmcKfHxkbnMyZ28uY29tCnx8ZG5zc2VjLm5ldApkb2N0b3J2b2ljZS5vcmcKCiEtLURvZ0ZhcnROZXR3b3JrCi5kb2dmYXJ0bmV0d29yay5jb20vdG91cgpnbG9yeWhvbGUuY29tCgouZG9qaW4uY29tCi5kb2stZm9ydW0ubmV0Cnx8ZG9sYy5kZQp8fGRvbGYub3JnLmhrCnx8ZG9sbGYuY29tCi5kb21haW4uY2x1Yi50dwouZG9tYWludG9kYXkuY29tLmF1CmNoaW5lc2UuZG9uZ2EuY29tCmRvbmd0YWl3YW5nLmNvbQp8fGRvbmd0YWl3YW5nLmNvbQouZG9uZ3RhaXdhbmcubmV0Cnx8ZG9uZ3RhaXdhbmcubmV0Ci5kb25neWFuZ2ppbmcuY29tCnxodHRwOi8vZGFuYm9vcnUuZG9ubWFpLnVzCi5kb250ZmlsdGVyLnVzCnx8ZG9udG1vdmV0b2NoaW5hLmNvbQouZG9yamVzaHVnZGVuLmNvbQouZG90cGxhbmUuY29tCnx8ZG90cGxhbmUuY29tCnx8ZG90c3ViLmNvbQouZG90dnBuLmNvbQp8fGRvdHZwbi5jb20KLmRvdWIuaW8KfHxkb3ViLmlvCnx8ZG91Z3NjcmlwdHMuY29tCnx8ZG91aG9rYW5rby5uZXQKfHxkb3VqaW5jYWZlLmNvbQpkb3dlaS5vcmcKZHBoay5vcmcKZHBwLm9yZy50dwp8fGRwcC5vcmcudHcKfHxkcHIuaW5mbwp8fGRyYWdvbnNwcmluZ3Mub3JnCiEtLXx8ZHJhdy5pbwouZHJlYW1hbWF0ZXVycy5jb20KLmRyZXB1bmcub3JnCnx8ZHJnYW4ubmV0Ci5kcm1pbmd4aWEub3JnCnxodHRwOi8vZHJtaW5neGlhLm9yZwp8fGRyb3Bib29rcy50dgp8fGRyb3Bib3guY29tCnx8YXBpLmRyb3Bib3hhcGkuY29tCnx8bm90aWZ5LmRyb3Bib3hhcGkuY29tCnx8ZHJvcGJveHVzZXJjb250ZW50LmNvbQpkcnN1bmFjYWRlbXkuY29tCi5kcnR1YmVyLmNvbQouZHNjbi5pbmZvCnxodHRwOi8vZHNjbi5pbmZvCi5kc3RrLmRrCnxodHRwOi8vZHN0ay5kawp8fGR0aWJsb2cuY29tCnx8ZHRpYy5taWwKLmR0d2FuZy5vcmcKLmR1YW56aGlodS5jb20KLmR1Y2tkbnMub3JnCnxodHRwOi8vZHVja2Rucy5vcmcKLmR1Y2tkdWNrZ28uY29tCnx8ZHVja2R1Y2tnby5jb20KLmR1Y2tsb2FkLmNvbS9kb3dubG9hZAp8fGR1Y2tteWxpZmUuY29tCi5kdWdhLmpwCnxodHRwOi8vZHVnYS5qcAouZHVpaHVhLm9yZwp8fGR1aWh1YS5vcmcKfHxkdWlodWFocmpvdXJuYWwub3JnCi5kdW55YWJ1bHRlbmkubmV0Ci5kdW93ZWl0aW1lcy5jb20KfHxkdW93ZWl0aW1lcy5jb20KZHVwaW5nLm5ldAp8fGR1cGxpY2F0aS5jb20KZHVwb2xhLmNvbQpkdXBvbGEubmV0Ci5kdXNoaS5jYQp8fGR2b3Jhay5vcmcKLmR3LmNvbQp8fGR3LmNvbQp8fGR3LmRlCi5kdy13b3JsZC5jb20KfHxkdy13b3JsZC5jb20KLmR3LXdvcmxkLmRlCnxodHRwOi8vZHctd29ybGQuZGUKd3d3LmR3aGVlbGVyLmNvbQpkd25ld3MuY29tCnx8ZHduZXdzLmNvbQpkd25ld3MubmV0Cnx8ZHduZXdzLm5ldAp4eXMuZHhpb25nLmNvbQp8fGR5bmF3ZWJpbmMuY29tCnx8ZHlzZnouY2MKLmR6emUuY29tCgohLS0tLS0tLS0tLS0tLS0tLS0tLS1FRS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfHxlLWNsYXNzaWNhbC5jb20udHcKfHxlLWdvbGQuY29tCi5lLWdvbGQuY29tCi5lLWhlbnRhaS5vcmcKfHxlLWhlbnRhaS5vcmcKLmUtaGVudGFpZGIuY29tCnxodHRwOi8vZS1oZW50YWlkYi5jb20KZS1pbmZvLm9yZy50dwouZS10cmFkZXJsYW5kLm5ldC9ib2FyZAouZS16b25lLmNvbS5oay9kaXNjdXoKfGh0dHA6Ly9lLXpvbmUuY29tLmhrL2Rpc2N1egouZTEyMy5oawp8fGUxMjMuaGsKLmVhcmx5dGliZXQuY29tCnxodHRwOi8vZWFybHl0aWJldC5jb20KLmVhcnRoY2FtLmNvbQouZWFydGh2cG4uY29tCnx8ZWFydGh2cG4uY29tCmVhc3Rlcm4tYXJrLmNvbQouZWFzdGVybmxpZ2h0bmluZy5vcmcKLmVhc3R0dXJrZXN0YW4uY29tCnxodHRwOi8vd3d3LmVhc3R0dXJraXN0YW4ubmV0LwouZWFzdHR1cmtpc3Rhbi1nb3Yub3JnCi5lYXN0dHVya2lzdGFuY2Mub3JnCi5lYXN0dHVya2lzdGFuZ292ZXJubWVudGluZXhpbGUudXMKfHxlYXN0dHVya2lzdGFuZ292ZXJubWVudGluZXhpbGUudXMKLmVhc3ljYS5jYQouZWFzeXBpYy5jb20KLmVib255LWJlYXV0eS5jb20KZWJvb2ticm93c2UuY29tCmVib29rZWUuY29tCnx8ZWNmYS5vcmcudHcKdXNodWFyZW5jaXR5LmVjaGFpbmhvc3QuY29tCnx8ZWNpbWcudHcKZWNtaW5pc3RyeS5uZXQKLmVjb25vbWlzdC5jb20KYmJzLmVjc3RhcnQuY29tCmVkZ2VjYXN0Y2RuLm5ldAp8fGVkZ2VjYXN0Y2RuLm5ldAovdHdpbWdcLmVkZ2VzdWl0ZVwubmV0XC9cLz9hcHBsZWRhaWx5LwplZGljeXBhZ2VzLmNvbQouZWRtb250b25jaGluYS5jbgouZWRtb250b25zZXJ2aWNlLmNvbQplZG9vcnMuY29tCi5lZHVicmlkZ2UuY29tCnx8ZWR1YnJpZGdlLmNvbQouZWR1cHJvLm9yZwp8fGVldnBuLmNvbQplZmNjLm9yZy5oawouZWZ1a3QuY29tCnxodHRwOi8vZWZ1a3QuY29tCnx8ZWljLWF2LmNvbQp8fGVpcmVpbmlrb3RhZXJ1a2FpLmNvbQouZWlzYmIuY29tCi5la3Npc296bHVrLmNvbQp8fGVrc2lzb3psdWsuY29tCmVsZWN0aW9uc21ldGVyLmNvbQp8fGVsZ29vZy5pbQouZWxsYXdpbmUub3JnCi5lbHBhaXMuY29tCnx8ZWxwYWlzLmNvbQouZWx0b25kaXNuZXkuY29tCi5lbWFnYS5jb20vaW5mby8zNDA3CmVtaWx5bGF1Lm9yZy5oawouZW1hbm5hLmNvbS9jaGluZXNlVHJhZGl0aW9uYWwKYml0Yy5ibWUuZW1vcnkuZWR1L35semhvdS9ibG9ncwouZW1wZmlsLmNvbQouZW11bGUtZWQyay5jb20KfGh0dHA6Ly9lbXVsZS1lZDJrLmNvbQouZW11bGVmYW5zLmNvbQp8aHR0cDovL2VtdWxlZmFucy5jb20KLmVtdXBhcmFkaXNlLm1lCi5lbmFueWFuZy5teQohLS0uZW5hbnlhbmcubXkvbmV3cy8yMDE3MDUwMi8lRTclQkUlOEUlRTUlOUIlQkQlRTQlQjklOEIlRTklOUYlQjMlRTUlQTQlQTclRTUlOUMlQjAlRTklOUMlODclRTMlODAlOEElRTglOEIlQjklRTYlOUUlOUMlRTMlODAlOEIlRTclOEIlQUMlRTUlQUUlQjYKfHxlbmV3c3RyZWUuY29tCi5lbmZhbC5kZQpjaGluZXNlLmVuZ2FkZ2V0LmNvbQp8fGVuZ2FnZWRhaWx5Lm9yZwplbmdsaXNoZm9yZXZlcnlvbmUub3JnCnx8ZW5nbGlzaGZyb21lbmdsYW5kLmNvLnVrCmVuZ2xpc2hwZW4ub3JnCi5lbmxpZ2h0ZW4ub3JnLnR3Cnx8ZW50ZXJtYXAuY29tCi5lbnRudC5jb20KfGh0dHA6Ly9lbnRudC5jb20KLmVwaXNjb3BhbGNodXJjaC5vcmcKLmVwb2NoaGsuY29tCnxodHRwOi8vZXBvY2hoay5jb20KZXBvY2h0aW1lcy1iZy5jb20KfHxlcG9jaHRpbWVzLWJnLmNvbQplcG9jaHRpbWVzLXJvbWFuaWEuY29tCnx8ZXBvY2h0aW1lcy1yb21hbmlhLmNvbQplcG9jaHRpbWVzLmNvLmlsCnx8ZXBvY2h0aW1lcy5jby5pbAplcG9jaHRpbWVzLmNvLmtyCnx8ZXBvY2h0aW1lcy5jby5rcgplcG9jaHRpbWVzLmNvbQp8fGVwb2NodGltZXMuY29tCi5lcG9jaHRpbWVzLmN6CmVwb2NodGltZXMuZGUKZXBvY2h0aW1lcy5mcgouZXBvY2h0aW1lcy5pZQouZXBvY2h0aW1lcy5pdAplcG9jaHRpbWVzLmpwCmVwb2NodGltZXMucnUKZXBvY2h0aW1lcy5zZQplcG9jaHRpbWVzdHIuY29tCi5lcG9jaHdlZWsuY29tCnx8ZXBvY2h3ZWVrLmNvbQp8fGVwb2Nod2Vla2x5LmNvbQouZXBvcm5lci5jb20KLmVxdWluZW5vdy5jb20KZXJhYmFydS5uZXQKLmVyYWNvbS5jb20udHcKLmVyYXlzb2Z0LmNvbS50cgouZXJlcHVibGlrLmNvbQouZXJpZ2h0cy5uZXQKfHxlcmlnaHRzLm5ldAouZXJrdHYuY29tCnxodHRwOi8vZXJrdHYuY29tCnx8ZXJuZXN0bWFuZGVsLm9yZwp8fGVyb2RhaXplbnN5dS5jb20KfHxlcm9kb3VqaW5sb2cuY29tCnx8ZXJvZG91amlud29ybGQuY29tCnx8ZXJvbWFuZ2Eta2luZ2RvbS5jb20KfHxlcm9tYW5nYWRvdXppbi5jb20KLmVyb21vbi5uZXQKfGh0dHA6Ly9lcm9tb24ubmV0Ci5lcm9wcm9maWxlLmNvbQouZXJvdGljc2Fsb29uLm5ldAouZXNsaXRlLmNvbQp8fGVzbGl0ZS5jb20KIS0tLmVzbGl0ZS5jb20vcHJvZHVjdAohLS0uZXNsaXRlLmNvbS9TZWFyY2hfQlcuYXNweD9xCndpa2kuZXN1LmltLyVFOCU5QiVBNCVFOCU5QiVBNCVFOCVBRiVBRCVFNSVCRCU5NQouZXRhYS5vcmcuYXUKLmV0YWR1bHQuY29tCmV0YWl3YW5uZXdzLmNvbQp8fGV0aXplci5vcmcKfHxldG9ra2kuY29tCiEtLS5ldHRvZGF5Lm5ldAouZXR0b2RheS5uZXQvbmV3cy8yMDE1MTIxNi82MTQwODEKZXR2b25saW5lLmhrCi5ldS5vcmcKfHxldS5vcmcKLmV1Y2FzaW5vLmNvbQouZXVsYW0uY29tCi5ldXJla2F2cHQuY29tCnx8ZXVyZWthdnB0LmNvbQouZXVyb25ld3MuY29tCnx8ZXVyb25ld3MuY29tCmVlYXMuZXVyb3BhLmV1L2RlbGVnYXRpb25zL2NoaW5hL3ByZXNzX2Nvcm5lci9hbGxfbmV3cy9uZXdzLzIwMTUvMjAxNTA3MTZfemgKZWVhcy5ldXJvcGEuZXUvc3RhdGVtZW50cy1lZWFzLzIwMTUvMTUxMDIyCi5ldnNjaG9vbC5uZXQKfGh0dHA6Ly9ldnNjaG9vbC5uZXQKfHxleGJsb2cuanAKfHxibG9nLmV4YmxvZy5jby5qcApAQHx8d3d3LmV4YmxvZy5qcAouZXhjaHJpc3RpYW4uaGsKfHxleGNocmlzdGlhbi5oawp8aHR0cDovL2Jsb2cuZXhjaXRlLmNvLmpwCnx8ZXhtb3Jtb24ub3JnCnx8ZXhwYXRzaGllbGQuY29tCi5leHBlY3RoaW0uY29tCnx8ZXhwZWN0aGltLmNvbQpleHBlcnRzLXVuaXZlcnMuY29tCnx8ZXhwbG9hZGVyLm5ldAouZXhwcmVzc3Zwbi5jb20KfHxleHByZXNzdnBuLmNvbQouZXh0cmVtZXR1YmUuY29tCmV5ZXZpby5qcAp8fGV5ZXZpby5qcAouZXlueS5jb20KfHxleW55LmNvbQouZXpwYy50ay9jYXRlZ29yeS9zb2Z0Ci5lenBlZXIuY29tCgohLS0tLS0tLS0tLS0tLS0tLS0tLS1GRi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfHxmYWNlYm9va3F1b3RlczR1LmNvbQouZmFjZWxlc3MubWUKfHxmYWNlbGVzcy5tZQp8aHR0cDovL2ZhY2Vzb2Z0aWJldGFuc2VsZmltbW9sYXRvcnMuaW5mbwp8fGZhY2Vzb2ZueWZ3LmNvbQouZmFpdGgxMDAub3JnCnxodHRwOi8vZmFpdGgxMDAub3JnCgohLS1FbmhhbmNlbWVudDoKIS0taHR0cDovL2ZhaXRoZnVsZXllLmNvbS5kZXRhaWwud2Vic2l0ZS8KIS0taHR0cDovL2ZhaXRoZnVsZXllLmNvbS5pcGFkZHJlc3MuY29tLwouZmFpdGhmdWxleWUuY29tCgp8fGZhaXRodGhlZG9nLmluZm8KLmZha2t1Lm5ldAouZmFsc2VmaXJlLmNvbQp8fGZhbHNlZmlyZS5jb20KZmFsdW4tY28ub3JnCmZhbHVuYXJ0Lm9yZwp8fGZhbHVuYXNpYS5pbmZvCnxodHRwOi8vZmFsdW5hdS5vcmcKLmZhbHVuYXoubmV0CmZhbHVuZGFmYS5vcmcKZmFsdW5kYWZhLWRjLm9yZwp8fGZhbHVuZGFmYS1mbG9yaWRhLm9yZwp8fGZhbHVuZGFmYS1uYy5vcmcKfHxmYWx1bmRhZmEtcGEubmV0Cnx8ZmFsdW5kYWZhLXNhY3JhbWVudG8ub3JnCmZhbHVuLW55Lm5ldAp8fGZhbHVuZGFmYWluZGlhLm9yZwpmYWx1bmRhZmFtdXNldW0ub3JnCi5mYWx1bmdvbmcuY2x1YgouZmFsdW5nb25nLmRlCmZhbHVuZ29uZy5vcmcudWsKfHxmYWx1bmhyLm9yZwpmYWx1bmluZm8uZGUKZmFsdW5pbmZvLm5ldAouZmFsdW5waWxpcGluYXMubmV0Cnx8ZmFsdW53b3JsZC5uZXQKZmFtaWx5ZmVkLm9yZwouZmFuZ2VtaW5nLmNvbQp8fGZhbmdsaXpoaS5pbmZvCnx8ZmFuZ29uZy5vcmcKZmFuZ29uZ2hlaWtlLmNvbQouZmFucWlhbmcudGsKZmFucWlhbmdob3UuY29tCnx8ZmFucWlhbmdob3UuY29tCi5mYW5xaWFuZ3poZS5jb20KfHxmYW5xaWFuZ3poZS5jb20KZmFwZHUuY29tCmZhcHJveHkuY29tCiEtLS5mYXJ4aWFuLmNvbQouZmF3YW5naHVpaHVpLm9yZwpmYW5xaWFuZ3lha2V4aS5uZXQKZmFpbC5oawp8fGZhbXVuaW9uLmNvbQouZmFuLXFpYW5nLmNvbQouZmFuZ2JpbnhpbmcuY29tCnx8ZmFuZ2JpbnhpbmcuY29tCmZhbmdlbWluZy5jb20KLmZhbmdtaW5jbi5vcmcKfHxmYW5nbWluY24ub3JnCi5mYW5oYW9kYW5nLmNvbQp8fGZhbnN3b25nLmNvbQouZmFueXVlLmluZm8KLmZhcndlc3RjaGluYS5jb20KCiEtLUZhc3RseQplbi5mYXZvdHRlci5uZXQKIS0tfHxybncuZ2xvYmFsLnNzbC5mYXN0bHkubmV0CiEtLXxodHRwczovLypnbG9iYWwuc3NsLmZhc3RseS5uZXQvCm55dGltZXMubWFwLmZhc3RseS5uZXQKfHxueXRpbWVzLm1hcC5mYXN0bHkubmV0Cnx8ZmFzdC53aXN0aWEuY29tCgp8fGZhc3Rzc2guY29tCnx8ZmFzdHN0b25lLm9yZwpmYXZzdGFyLmZtCnx8ZmF2c3Rhci5mbQpmYXlkYW8uY29tL3dlYmxvZwouZmMyLmNvbQouZmMyY2hpbmEuY29tCi5mYzJjbi5jb20KfHxmYzJjbi5jb20KZmMyYmxvZy5uZXQKfGh0dHA6Ly91eWd1ci5mYzJ3ZWIuY29tLwp2aWRlby5mZGJveC5jb20KLmZkYzY0LmRlCi5mZGM2NC5vcmcKLmZkYzg5LmpwCnx8Zm91cmZhY2Uubm9kZXNub29wLmNvbQohLS1mZWVkYm9va3MubW9iaQp8fGZlZWxzc2guY29tCmZlZXIuY29tCi5mZWlmZWlzcy5jb20KfGh0dHA6Ly9mZWl0aWFuYWNhZGVteS5vcmcKLmZlaXRpYW4tY2FsaWZvcm5pYS5vcmcKfHxmZW1pbmlzdHRlYWNoZXIuY29tCi5mZW5nemhlbmdodS5jb20KfHxmZW5nemhlbmdodS5jb20KLmZlbmd6aGVuZ2h1Lm5ldAp8fGZlbmd6aGVuZ2h1Lm5ldAouZmV2ZXJuZXQuY29tCnxodHRwOi8vZmYuaW0KZmZmZmYuYXQKZmZsaWNrLmNvbQouZmZ2cG4uY29tCmZnbXR2Lm5ldAouZmdtdHYub3JnCi5maHJlcG9ydHMubmV0CnxodHRwOi8vZmhyZXBvcnRzLm5ldAouZmlncHJheWVyLmNvbQp8fGZpZ3ByYXllci5jb20KLmZpbGVmbHllci5jb20KfHxmaWxlZmx5ZXIuY29tCnxodHRwOi8vZmVlZHMuZmlsZWZvcnVtLmNvbQouZmlsZXMybWUuY29tCi5maWxlc2VydmUuY29tL2ZpbGUKZmlsbHRoZXNxdWFyZS5vcmcKZmlsbWluZ2ZvcnRpYmV0Lm9yZwouZmlsdGhkdW1wLmNvbQouZmluY2h2cG4uY29tCnx8ZmluY2h2cG4uY29tCiEtLWZpbmRib29rLnR3CmZpbmRtZXNwb3QuY29tCnx8ZmluZHlvdXR1YmUuY29tCnx8ZmluZHlvdXR1YmUubmV0Ci5maW5nZXJkYWlseS5jb20KZmlubGVyLm5ldAouZmlyZWFybXN3b3JsZC5uZXQKfGh0dHA6Ly9maXJlYXJtc3dvcmxkLm5ldAouZmlyZW9mbGliZXJ0eS5vcmcKfHxmaXJlb2ZsaWJlcnR5Lm9yZwouZmlyZXR3ZWV0LmlvCnx8ZmlyZXR3ZWV0LmlvCiEtLXx8ZmxhZ2ZveC5uZXQKLmZsYWdzb25saW5lLml0CmZsZXNoYm90LmNvbQouZmxldXJzZGVzbGV0dHJlcy5jb20KfGh0dHA6Ly9mbGV1cnNkZXNsZXR0cmVzLmNvbQp8fGZsZ2cudXMKfHxmbGdqdXN0aWNlLm9yZwoKIS0tfHxmYXJtNi5zdGF0aWNmbGlja3IuY29tCiEtLS5mbGlja3IuY29tL3Bob3Rvcy80NjIzMTA3N0BOMDYKIS0tLmZsaWNrci5jb20vZ3JvdXBzL2Fpd2Vpd2VpCiEtLS5mbGlja3IuY29tL3Bob3Rvcy9kaWdpdGFsYm95MTAwCiEtLS5mbGlja3IuY29tL3Bob3Rvcy9memhlbmdodQohLS0uZmxpY2tyLmNvbS9waG90b3MvbG9uZWx5Zm94CiEtLWZsaWNrci5jb20vcGhvdG9zL3ZhbnZhbi81Mjk5MjUxNTcKIS0tLmZsaWNrci5jb20vcGhvdG9zL3dpbnRlcmthbmFsCiEtLS5mbGlja3IuY29tL3Bob3Rvcy96b2xhCnx8ZmxpY2tyLmNvbQp8fHN0YXRpY2ZsaWNrci5jb20KCmZsaWNrcmhpdmVtaW5kLm5ldAouZmxpY2tyaXZlci5jb20KLmZsaW5nLmNvbQp8fGZsaXBrYXJ0LmNvbQp8fGZsb2cudHcKLmZseXZwbi5jb20KfHxmbHl2cG4uY29tCnxodHRwOi8vY24uZm1ubm93LmNvbQpmb2ZsZGZyYWRpby5vcmcKYmxvZy5mb29sc21vdW50YWluLmNvbQouZm9ydW00aGsuY29tCmZhbmdvbmcuZm9ydW1zLWZyZWUuY29tCnBpb25lZXItd29ya2VyLmZvcnVtcy1mcmVlLmNvbQohLS1mb3Vyc3F1YXJlLmNvbQohLS18aHR0cDovLzRzcS5jb20KfGh0dHBzOi8vc3MqLjRzcWkubmV0CnZpZGVvLmZveGJ1c2luZXNzLmNvbQp8aHR0cDovL2ZveGdheS5jb20KfHxmcmluZ2VuZXR3b3JrLmNvbQp8fGZsZWNoZWludGhlcGVjaGUuZnIKLmZvY2hrLm9yZwp8aHR0cDovL2ZvY2hrLm9yZwp8fGZvY3VzdGFpd2FuLnR3Ci5mb2N1c3Zwbi5jb20KfHxmb2ZnLm9yZwouZm9mZy1ldXJvcGUubmV0Ci5mb29vb28uY29tCnx8Zm9vb29vLmNvbQpmb290d2liYWxsLmNvbQouZm90aWxlLm1lCnx8Zm91cnRoaW50ZXJuYXRpb25hbC5vcmcKfHxmb3hkaWUudXMKfHxmb3hzdWIuY29tCmZveHRhbmcuY29tCi5mcG10Lm9yZwp8aHR0cDovL2ZwbXQub3JnCi5mcG10LnR3Ci5mcG10LW9zZWwub3JnCnx8ZnBtdG1leGljby5vcmcKZnFvay5vcmcKfHxmcXJvdXRlci5jb20KfHxmcmFua2xjLmNvbQouZnJlYWtzaGFyZS5jb20KfGh0dHA6Ly9mcmVha3NoYXJlLmNvbQp8fGZyZWU0dS5jb20uYXIKZnJlZS1nYXRlLm9yZwouZnJlZS1oYWRhLW5vdy5vcmcKZnJlZS1wcm94eS5jegouZnJlZS5mci9hZHNsCmtpbmVveC5mcmVlLmZyCnRpYmV0bGlicmUuZnJlZS5mcgp8fGZyZWVhbGltLmNvbQp3aGl0ZWJlYXIuZnJlZWJlYXJibG9nLm9yZwp8fGZyZWVicm93c2VyLm9yZwouZnJlZWNoYWwuY29tCi5mcmVlZG9tY2hpbmEuaW5mbwp8fGZyZWVkb21jaGluYS5pbmZvCi5mcmVlZG9taG91c2Uub3JnCnx8ZnJlZWRvbWhvdXNlLm9yZwouZnJlZWRvbXNoZXJhbGQub3JnCnx8ZnJlZWRvbXNoZXJhbGQub3JnCi5mcmVlZnEuY29tCi5mcmVlZnVja3ZpZHMuY29tCi5mcmVlZ2FvLmNvbQp8fGZyZWVnYW8uY29tCmZyZWVpbGhhbXRvaHRpLm9yZwp8fGZyZWVrYXpha2hzLm9yZwouZnJlZWt3b25weW9uZy5vcmcKfHxzYXZlbGl1eGlhb2JvLmNvbQouZnJlZWxvdHRvLmNvbQp8fGZyZWVsb3R0by5jb20KZnJlZW1hbjIuY29tCi5mcmVlb3BlbnZwbi5jb20KZnJlZW1vcmVuLmNvbQpmcmVlbW9yZW5ld3MuY29tCmZyZWVtdXNlLm9yZy9hcmNoaXZlcy83ODkKZnJlZW5ldC1jaGluYS5vcmcKZnJlZW5ld3Njbi5jb20KY24uZnJlZW9uZXMuY29tCi5mcmVlb3oub3JnL2Jicwp8fGZyZWVvei5vcmcKfHxmcmVlc3NoLnVzCmZyZWU0dS5jb20uYXIKLmZyZWUtc3NoLmNvbQp8fGZyZWUtc3NoLmNvbQouZnJlZWNoaW5hLm5ld3MvCnx8ZnJlZWNoaW5hZm9ydW0ub3JnCnx8ZnJlZWNoaW5hd2VpYm8uY29tCi5mcmVlZG9tY29sbGVjdGlvbi5vcmcvaW50ZXJ2aWV3cy9yZWJpeWFfa2FkZWVyCi5mcmVlZm9ydW1zLm9yZwp8fGZyZWVuZXRwcm9qZWN0Lm9yZwouZnJlZW96Lm9yZwouZnJlZXRpYmV0Lm5ldAp8fGZyZWV0aWJldC5vcmcKLmZyZWV0aWJldGFuaGVyb2VzLm9yZwp8aHR0cDovL2ZyZWV0aWJldGFuaGVyb2VzLm9yZwouZnJlZXZpZXdtb3ZpZXMuY29tCi5mcmVldnBuLm1lCnxodHRwOi8vZnJlZXZwbi5tZQp8fGZyZWV3YWxscGFwZXI0Lm1lCi5mcmVld2Vicy5jb20KLmZyZWV3ZWNoYXQuY29tCnx8ZnJlZXdlY2hhdC5jb20KZnJlZXdlaWJvLmNvbQp8fGZyZWV3ZWliby5jb20KLmZyZWV4aW53ZW4uY29tCi5mcmVleW91dHViZXByb3h5Lm5ldAp8fGZyZWV5b3V0dWJlcHJveHkubmV0CmZyaWVuZGZlZWQuY29tCmZyaWVuZGZlZWQtbWVkaWEuY29tL2U5OWE0ZWJlMmZiNGMxOTg1YzJhNTg3NzVlYjQ0MjI5NjFhYTVhMmUKZnJpZW5kcy1vZi10aWJldC5vcmcKLmZyaWVuZHNvZnRpYmV0Lm9yZwpmcmVlY2hpbmEubmV0CnxodHRwOi8vd3d3LnplbnN1ci5mcmVlcmsuY29tLwpmcmVldnBuLm5sCmZyZWV5ZWxsb3cuY29tCmhrLmZyaWVuZGR5LmNvbS9oawp8aHR0cDovL2FkdWx0LmZyaWVuZGZpbmRlci5jb20vCi5mcmluZy5jb20KfHxmcmluZy5jb20KLmZyb21jaGluYXRvdXNhLm5ldAp8fGZyb21tZWwubmV0Ci5mcm9udGxpbmVkZWZlbmRlcnMub3JnCi5mcm9vdHZwbi5jb20KfHxmcm9vdHZwbi5jb20KfHxmc2NrZWQub3JnCi5mc3VyZi5jb20KLmZ0di5jb20udHcKZnVjZC5jb20KLmZ1Y2tjbm5pYy5uZXQKfHxmdWNrY25uaWMubmV0CmZ1Y2tnZncub3JnCi5mdWxpb25lLmNvbQp8aHR0cHM6Ly9mdWxpb25lLmNvbQp8fGZ1bGxlcmNvbnNpZGVyYXRpb24uY29tCmZ1bHVlLmNvbQouZnVuZi50dwpmdW5wLmNvbQouZnVxLmNvbQouZnVyaGhkbC5vcmcKfHxmdXJpbmthbi5jb20KLmZ1dHVyZWNoaW5hZm9ydW0ub3JnCnx8ZnV0dXJlbWVzc2FnZS5vcmcKLmZ1eC5jb20KLmZ1eWluLm5ldAouZnV5aW5kaWFudGFpLm9yZwouZnV5dS5vcmcudHcKfHxmdy5jbQouZnhjbS1jaGluZXNlLmNvbQp8fGZ4Y20tY2hpbmVzZS5jb20KZnpoOTk5LmNvbQpmemg5OTkubmV0CmZ6bG0uY29tCgohLS0tLS0tLS0tLS0tLS0tLS0tLS1HRy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLmc2aGVudGFpLmNvbQp8aHR0cDovL2c2aGVudGFpLmNvbQp8fGctcXVlZW4uY29tCnx8Z2Fib2NvcnAuY29tCi5nYWVwcm94eS5jb20KLmdhZm9ydW0ub3JnCi5nYWdhb29sYWxhLmNvbQp8fGdhZ2Fvb2xhbGEuY29tCi5nYWxheHltYWNhdS5jb20KfHxnYWxlbnd1LmNvbQouZ2Fsc3RhcnMubmV0Cnx8Z2FtZTczNS5jb20KZ2FtZWJhc2UuY29tLnR3CmdhbWVqb2x0LmNvbQp8aHR0cDovL3dpa2kuZ2FtZXJwLmpwCnx8Z2FtZXIuY29tLnR3Ci5nYW1lci5jb20udHcKLmdhbWV6LmNvbS50dwp8fGdhbWV6LmNvbS50dwouZ2Ftb3VzYS5jb20KLmdhb21pbmcubmV0Cnx8Z2FvbWluZy5uZXQKZ2FuZ2VzLmNvbQouZ2FvcGkubmV0CnxodHRwOi8vZ2FvcGkubmV0Ci5nYW96aGlzaGVuZy5vcmcKLmdhb3poaXNoZW5nLm5ldApnYXJkZW5uZXR3b3Jrcy5jb20KfHxnYXJkZW5uZXR3b3Jrcy5vcmcKIS0tSVAgb2YgR2FyZGVuIE5ldHdvcmsKNzIuNTIuODEuMjIKfHxnYXJ0bGl2ZS5jb20KfHxnYXRlLXByb2plY3QuY29tCnx8Z2F0aGVyLmNvbQouZ2F0aGVycHJveHkuY29tCmdhdGkub3JnLnR3Ci5nYXlidWJibGUuY29tCi5nYXljbi5uZXQKLmdheWh1Yi5jb20KfHxnYXltYXAuY2MKLmdheW1lbnJpbmcuY29tCi5nYXl0dWJlLmNvbQohLS18fGdheXR1YmUuY29tCnx8aW1hZ2VzLWdheXR1YmUuY29tCi5nYXl3YXRjaC5jb20KfGh0dHA6Ly9nYXl3YXRjaC5jb20KLmdhem90dWJlLmNvbQp8fGdhem90dWJlLmNvbQp8fGdjYy5vcmcuaGsKfHxnY2xvb25leS5jb20KfHxnY21hc2lhLmNvbQouZ2NwbmV3cy5jb20KfGh0dHA6Ly9nY3BuZXdzLmNvbQouZ2RidC5uZXQvZm9ydW0KZ2R6Zi5vcmcKfHxnZWVrLWFydC5uZXQKZ2Vla2VyaG9tZS5jb20vMjAxMC8wMy94aXhpYW5nLXByb2plY3QtY3Jvc3MtZ2Z3Cnx8Z2Vla2hlYXJ0LmluZm8KLmdla2lrYW1lLmNvbQp8aHR0cDovL2dla2lrYW1lLmNvbQouZ2VsYm9vcnUuY29tCnxodHRwOi8vZ2VsYm9vcnUuY29tCiEtLXx8Z2VudWl0ZWMuY29tCi5nZW9jaXRpZXMuY28uanAKLmdlb2NpdGllcy5jb20vU2lsaWNvblZhbGxleS9DaXJjdWl0LzU2ODMvZG93bmxvYWQuaHRtbApoay5nZW9jaXRpZXMuY29tCmdlb2NpdGllcy5qcAouZ2VyZWZvdW5kYXRpb24ub3JnCnx8Z2V0YXN0cmlsbC5jb20KLmdldGNodS5jb20KLmdldGNsb2FrLmNvbQp8fGdldGNsb2FrLmNvbQp8fGdldGZveHlwcm94eS5vcmcKLmdldGZyZWVkdXIuY29tCnx8Z2V0Z29tLmNvbQouZ2V0aTJwLm5ldAp8fGdldGkycC5uZXQKLmdldGxhbnRlcm4ub3JnCnx8Z2V0bGFudGVybi5vcmcKLmdldGpldHNvLmNvbS9mb3J1bQpnZXRpdG9uLmNvbQouZ2V0c29jaWFsc2NvcGUuY29tCnx8Z2V0c3luYy5jb20KZ2Zidi5kZQouZ2Znb2xkLmNvbS5oawouZ2ZzYWxlLmNvbQp8fGdmc2FsZS5jb20KZ2Z3Lm9yZy51YQouZ2Z3LnByZXNzCnx8Z2Z3LnByZXNzCi5nZ3NzbC5jb20KfHxnZ3NzbC5jb20KIS0tfHxnaG9zdC5vcmcKLmdob3N0cGF0aC5jb20KfHxnaG9zdHBhdGguY29tCnx8Z2h1dC5vcmcKLmdpYW50ZXNzbmlnaHQuY29tCnxodHRwOi8vZ2lhbnRlc3NuaWdodC5jb20KLmdpZnJlZS5jb20KfHxnaWdhLXdlYi5qcAp0dy5naWdhY2lyY2xlLmNvbQp8aHR0cDovL2NuLmdpZ2FuZXdzLmNvbS8KZ2lncG9ybm8ucnUKfHxnaXJsYmFua2VyLmNvbQouZ2l0LmlvCnx8Z2l0LmlvCnxodHRwOi8vc29mdHdhcmVkb3dubG9hZC5naXRib29rcy5pbwoKIS0tLUdpdEh1Yi0tLQpnaXRodWIuY29tL2dldGxhbnRlcm4KfGh0dHBzOi8vZ2lzdC5naXRodWIuY29tCiEtLWh0dHA6Ly9jdGhsby5naXRodWIuaW8vaGt0dgohLS1oYWhheGl4aS5naXRodWIuaW8KIS0tfGh0dHBzOi8vaGFoYXhpeGkuZ2l0aHViLmlvCiEtLXx8aGFvZWwuZ2l0aHViLmlvCiEtLXxodHRwOi8vb25pb25oYWNrZXIuZ2l0aHViLmlvCiEtLXx8cmczLmdpdGh1Yi5pbwohLS18fHNpa2FvemhlMTk5Ny5naXRodWIuaW8KIS0tfHxzb2RhdGVhLmdpdGh1Yi5pbwohLS18fHRlcm1pbnVzMjA0OS5naXRodWIuaW8KIS0tfHx0b3V0eXJhdGVyLmdpdGh1Yi5pbwohLS13c2d6YW8uZ2l0aHViLmlvCiEtLXxodHRwczovL3dzZ3phby5naXRodWIuaW8KLmdpdGh1Yi5pbwp8fGdpdGh1Yi5pbwp8fGdpdGh1YnVzZXJjb250ZW50LmNvbQp8fGdpdGh1YmFzc2V0cy5jb20KCi5naXpsZW4ubmV0Cnx8Z2l6bGVuLm5ldAouZ2pjenouY29tCnx8Z2pjenouY29tCmdsb2JhbGppaGFkLm5ldApnbG9iYWxtZWRpYW91dHJlYWNoLmNvbQpnbG9iYWxtdXNldW1vbmNvbW11bmlzbS5vcmcKfHxnbG9iYWxyZXNjdWUubmV0Ci5nbG9iYWx0bS5vcmcKLmdsb2JhbHZvaWNlc29ubGluZS5vcmcKfHxnbG9iYWx2b2ljZXNvbmxpbmUub3JnCnx8Z2xvYmFsdnBuLm5ldAouZ2xvY2suY29tCmdsdWNrbWFuLmNvbS9EYWxhaUxhbWEKZ21iZC5jbgp8fGdtaHoub3JnCnxodHRwOi8vd3d3LmdtaWRkbGUuY29tCnxodHRwOi8vd3d3LmdtaWRkbGUubmV0Ci5nbWxsLm9yZwp8fGduY2kub3JnLmhrCnx8Z25ld3Mub3JnCmdvLXBraS5jb20KfHxnb2FnZW50LmJpegp8fGdvYWdlbnRwbHVzLmNvbQpnb2JldC5jYwpnb2Rmb290c3RlcHMub3JnCnx8Z29kZm9vdHN0ZXBzLm9yZwpnb2Rucy53b3JrCmdvZHNkaXJlY3Rjb250YWN0LmNvLnVrCi5nb2RzZGlyZWN0Y29udGFjdC5vcmcKZ29kc2RpcmVjdGNvbnRhY3Qub3JnLnR3Ci5nb2RzaW1tZWRpYXRlY29udGFjdC5jb20KLmdvZ290dW5uZWwuY29tCnx8Z29oYXBweS5jb20udHcKLmdva2JheXJhay5jb20KLmdvbGRiZXQuY29tCnx8Z29sZGJldHNwb3J0cy5jb20KfHxnb2xkZW5leWV2YXVsdC5jb20KLmdvbGRlbmZyb2cuY29tCnx8Z29sZGVuZnJvZy5jb20KLmdvbGRqaXp6LmNvbQp8aHR0cDovL2dvbGRqaXp6LmNvbQouZ29sZHN0ZXAubmV0Cnx8Z29sZHdhdmUuY29tCmdvbmdtZW5nLmluZm8KZ29uZ20uaW4KZ29uZ21pbmxpbGlhbmcuY29tCi5nb25nd3QuY29tCnxodHRwOi8vZ29uZ3d0LmNvbQpibG9nLmdvby5uZS5qcC9kdWNrLXRhaWxfMjAwOQouZ29vZGF5Lnh5egp8aHR0cDovL2dvb2RheS54eXoKLmdvb2RyZWFkcy5jb20KfHxnb29kcmVhZHMuY29tCi5nb29kcmVhZGVycy5jb20KfHxnb29kcmVhZGVycy5jb20KLmdvb2R0di5jb20udHcKLmdvb2R0di50dgp8fGdvb2ZpbmQuY29tCi5nb29nbGVzaWxlLmNvbQouZ29wZXRpdGlvbi5jb20KfHxnb3BldGl0aW9uLmNvbQouZ29wcm94aW5nLm5ldAouZ290cnVzdGVkLmNvbQp8fGdvdHJ1c3RlZC5jb20KfHxnb3R3LmNhCnx8Z3JhbW1hbHkuY29tCmdyYW5kdHJpYWwub3JnCi5ncmFwaGlzLm5lLmpwCnx8Z3JhcGhpcy5uZS5qcAp8fGdyYXBocWwub3JnCiEtLXx8cy5ncmF2YXRhci5jb20KZ3JlYXRmaXJld2FsbC5iaXoKfHxncmVhdGZpcmV3YWxsb2ZjaGluYS5uZXQKLmdyZWF0ZmlyZXdhbGxvZmNoaW5hLm9yZwp8fGdyZWF0ZmlyZXdhbGxvZmNoaW5hLm9yZwp8fGdyZWVuZmllbGRib29rc3RvcmUuY29tLmhrCi5ncmVlbnBhcnR5Lm9yZy50dwp8fGdyZWVucGVhY2Uub3JnCi5ncmVlbnJlYWRpbmdzLmNvbS9mb3J1bQpncmVhdC1maXJld2FsbC5jb20KZ3JlYXQtcm9jLm9yZwpncmVhdHJvYy5vcmcKZ3JlYXR6aG9uZ2h1YS5vcmcKLmdyZWVucGVhY2UuY29tLnR3Ci5ncmVlbnZwbi5uZXQKfHxncmVlbnZwbi5uZXQKLmdyZWVudnBuLm9yZwp8fGdyb3R0eS1tb25kYXkuY29tCmdzLWRpc2N1c3MuY29tCnx8Z3RyaWNrcy5jb20KZ3VhbmNoYS5vcmcKZ3VhbmVyeXUuY29tCi5ndWFyZHN0ZXIuY29tCi5ndW4td29ybGQubmV0Cmd1bnNhbmRhbW1vLmNvbQp8fGd1dHRlcnVuY2Vuc29yZWQuY29tCnx8Z3ZtLmNvbS50dwouZ3ptLnR2Cnx8Z3pvbmUtYW5pbWUuaW5mbwoKIS0tLS0tLS0tLS0tLS1HSFMtLS0tLQohLXx8ZmVlZHMuY2JzbmV3cy5jb20KIS18fHd3dy5jaGluZXNlYWxidW1hcnQuY29tCnx8Y2xlbWVudGluZS1wbGF5ZXIub3JnCiEtfHxjbGVtZXNoYS5vcmcKIS18fHd3dy5jbG91ZGdpcmxmcmllbmQuY29tCiEtfHxjb2NvYXdpdGhsb3ZlLmNvbQohLXx8YmxvZy5jb250cm9sc3BhY2Uub3JnCiEtRAohLXx8d3d3LmRhaWx5Z3lhbi5jb20KIS18fGRhaWx5dG9kby5vcmcKIS18fGJsb2cuZGFubWFybmVyLmNvbQohLXx8Z2l0aHViLmRhbm1hcm5lci5jb20KIS18fGRlc2lnbi1zZWVkcy5jb20KIS18fGRlc2lnbmVycy1hcnRpc3RzLmNvbQohLXx8bWFpbC5kaXlhbmcub3JnCiEtfHxibG9nLmRvdWdoZWxsbWFubi5jb20KIS18fGRvd25mb3JldmVyeW9uZW9yanVzdG1lLmNvbQohLXx8ZHJvaWRzZWN1cml0eS5jb20KIS18fHd3dy5kcm9wbW9ja3MuY29tCiEtfHxkdW1ibGl0dGxlbWFuLmNvbQohLUUKZWNob2Zvbi5jb20KIS18fGVjaG9mb24uY29tCiEtfHxlcGMtamF2LmNvbQohLXx8ZXZlcmRhcmsuaW5mbwohLXx8ZXZoZWFkLmNvbQohLUYKIS18fGZhY2lsZWxvZ2luLmNvbQohLXx8Ki5mYXRkdWNrLm9yZwohLXx8YmxvZy5mZGNuLm9yZwohLXx8ZmZ0b2dvLmNvbQohLXx8ZmxpZ2h0c2ltdGFsay5jb20KIS18fG1jbGVlLmZvb2xtZS5uZXQKIS18fHd3dy5mcmllbmRkZWNrLmNvbQohLXx8ZnJpbmdlc3BvaWxlcnMuY29tCiEtfHxmcmluZ2V0ZWxldmlzaW9uLmNvbQohLXx8ZnVucGVhLmNvbQohLUcKIS18fGJsb2cuZ2F0ZWluLm9yZwohLXx8ZmVlZHMuZ2F3a2VyLmNvbQohLXx8Z2Vla3RhbmcuY29tCiEtfHxnZW9ob3QudXMKIS18fGdldGFyb3VuZC5jb20KIS18fGdtZXIubmV0CiEtfHx3d3cuZ21vdGUub3JnCiEtfHxibG9nLmdvMndlYjIwLm5ldAohLXx8Z29vZ2xlLW1lbGFuZ2UuY29tCiEtfHxmYW1lLmdvbnpvbGFicy5vcmcKIS18fGdvdmVjbi5vcmcKIS18fGdxdWV1ZXMuY29tCiEtfHxncmFwaHljYWxjLmNvbQp8fGdyZWFzZXNwb3QubmV0CiEtfHxibG9nLmdyb3dsZm9yd2luZG93cy5jb20KIS1ICiEtfHxoY20uY29tLnR3CiEtfHxibG9nLmhlYWRpdXMuY29tCiEtfHxob2diYXlzb2Z0d2FyZS5jb20KIS18fGJsb2cuaG90b3Qub3JnCiEtfHxmZWVkcy5ob3dzdHVmZndvcmtzLmNvbQohLXx8aHVoYWl0YWkuY29tCiEtfHxibG9nLmh1bWFucmlnaHRzZmlyc3Qub3JnCiEtSQohLXx8c2l0ZS5pY3UtcHJvamVjdC5vcmcKIS18fGlnb3J3YXJlLmNvbQohLXx8aWhhczEzMzdjb2RlLmNvbQohLXx8aW5rbm91dmVhdS5jb20KIS18fGlub3RlLnR3CiEtfHxpcm9uaGVsbWV0LmNvbQohLXx8aXdmd2NmLmNvbQohLUoKIS18fGJsb2cuamFuZ210LmNvbQohLXx8YmxvZy5qYXlmaWVsZHMuY29tCiEtfHxibG9nLmpvaW50Lm5ldAohLXx8YmxvZy5qc3F1YXJlZGphdmFzY3JpcHQuY29tCiEtfHxibG9nLmp0YndvcmxkLmNvbQohLUsKIS18fGthdGh5c2Nod2FsYmUuY29tCiEtfHx0b21hdG92cG4ua2VpdGhtb3llci5jb20KIS18fHd3dy5rZWl0aG1veWVyLmNvbQohLXx8a2VuZGFsdmFuZHlrZS5jb20KIS18fGJsb2cua2VuZ2FvLnR3CiEtfHxsb2cua2Vzby5jbgohLXx8d3d3LmtoYW5hY2FkZW15Lm9yZwp8fHd3dy5rbGlwLm1lCiEtfHx1c2Jsb2FkZXJneC5rb3VyZWlvLm5ldAohLXx8YmxvZy5rb3dhbGN6eWsuaW5mbwohLUwKIS18fGxhYnlyaW50aDIuY29tCiEtfHxsYXJzZ2VvcmdlLmNvbQohLXx8YmxvZy5sYXN0cGFzcy5jb20KIS18fGRvY3MubGF0ZXhsYWIub3JnCiEtfHxsZWFuZXNzYXlzLmNvbQohLXx8YmxvZy5saWRhb2JpbmcuaW5mbwohLXx8bG9nLmxpZ2h0b3J5Lm5ldAohLXx8ZmVlZHMubGltaS5uZXQKIS18fHd3dy5saXRlYXBwbGljYXRpb25zLmNvbQohLXx8YmxvZy5saXVrYW5neHUuaW5mbwohLXx8dHdpdHRlci5saXVrYW5neHUuaW5mbwohLXx8b2FzaXNuZXdzcm9vbS5saXZlNGV2ZXIudXMKIS18fHd3dy5sb2NrZXJnbm9tZS5jb20KIS18fGxvY3FsLmNvbQpAQHx8c2l0ZS5sb2NxbC5jb20KIS18fGZlZWRzLmxvaWNsZW1ldXIuY29tCiEtfHxibG9nLmxvdWlzZ3JheS5jb20KIS1NCiEtfHxtYWRlYnlzb2ZhLmNvbQohLXx8bWFkZW1vaXNlbGxlcm9ib3QuY29tCiEtfHxtYXNhbWl4ZXMuY29tCiEtfHx3d3cubWV0YW11c2UubmV0CiEtfHxibG9nLm1ldGFzcGxvaXQuY29tCiEtfHxtaWxhemkuY29tCiEtfHx3d3cubWluaXdlYXRoZXIuY29tCiEtfHx0d2l0dGVyLm1pc3NpdS5jb20KIS18fHBsdXJrdG9wLWJ1dHRvbi5tbWRheXMuY29tCiEtfHxmZWVkcy5tb2JpbGVyZWFkLmNvbQohLXx8d3d3Lm1vZGVybml6ci5jb20KIS18fHd3dy5tb2RrLml0CiEtfHxteXR3aXNoaXJ0LmNvbQohLU4KIS18fGJsb2cubmV0ZmxpeC5jb20KIS18fGJsb2cubmloaWxvZ2ljLmRrCiEtfHxudGxrLm9yZwohLXx8bnZxdWFuLm9yZwohLXx8bm9nb29kYXRjb2RpbmcuY29tCiEtfHxibG9nLm5vdGRvdC5uZXQKIS18fHd3dy5ub3RpZnkuaW8KIS1PCiEtfHxibG9nLm9idmlvdXMuY29tCiEtfHxvbmViaWdmbHVrZS5jb20KIS18fG92ZXJzdGltdWxhdGUuY29tCiEtUAohLXx8cGNnZWVrYmxvZy5jb20KIS18fGZlZWRzLnBkZmNobS5uZXQKIS18fGZlZWRzLnBlb3BsZS5jb20KIS18fGJsb2cucGVyc2lzdGVudC5pbmZvCiEtfHxjaHJvbWUucGxhbnRzdnN6b21iaWVzLmNvbQohLXx8cG9ydGFibGVzb2Z0Lm9yZy5ydQohLXx8cHJhc2FubmF0ZWNoLm5ldAohLXx8dGFsay5uZXdzLnB0cy5vcmcudHcKIS18fHB5dGhvbi1leGNlbC5vcmcKIS1RCiEtUgohLXx8ci1jaGFydC5jb20KIS18fHJhbWVzaHN1YnJhbWFuaWFuLm9yZwohLXx8cmFwaWQucGsKIS18fGJsb2cucmVuYW5zZS5jb20KIS18fHJvYmVydG1hby5jb20KIS18fHd3dy5yb21lby1mb3h0cm90LmNvbQohLVMKIS18fHNhbG1peXVjay5jb20KIS18fHNhbXNhbC5jb20KIS18fGJsb2cuc2VlbWluZ2xlZS5jb20KIS18fGJsb2cuc2Zsb3cuY29tCiEtfHxibG9nLnNpZ2ZwZS5jb20KIS18fHNpbXBsZXRleHQud3MKIS18fHd3dy5za3VscHQub3JnCiEtfHxyc3Muc2xhc2hkb3Qub3JnCiEtfHxzbmlwcGV0c2FwcC5jb20KIS18fHcuc25zLmx5CiEtfHx3d3cuc29jaWFsbm1vYmlsZS5jb20KIS18fHd3dy5zb2NpYWx3aG9pcy5jb20KIS18fHNwaXJpdGpiLm9yZwohLXx8c3Nib29rLmNvbQohLXx8c3NoZm9yd2FyZGluZy5jb20KIS18fHN0YXRpb25lcmlhLmNvbQp8fHN0ZXBoYW5pZXJlZC5jb20KIS18fHN1bmppZG9uZy5uZXQKIS18fHN5bml1bXNvZnR3YXJlLmNvbQpAQHx8ZG93bmxvYWQuc3luaXVtc29mdHdhcmUuY29tCiEtVAohLXx8dGFneGVkby5jb20KIS18fGJsb2cudGF0b2ViYS5vcmcKIS18fHd3dy50ZWNoZm9iLmNvbQohLXx8dGVhY2hwYXJlbnRzdGVjaC5vcmcKIS18fHRoZThwZW4uY29tCiEtfHx0aGVpcGhvbmV3aWtpLmNvbQohLXx8YmxvZy50aGVzaWxlbnRudW1iZXIubWUKIS18fHRoZXNwb250eS5jb20KIS18fHRoZXVsdHJhbGlueC5jb20KIS18fGJsb2cudGhpbmstYXN5bmMuY29tCiEtfHx0b3JuYWRvd2ViLm9yZwohLXx8dHJhbnNwYXJlbnR1cHRpbWUuY29tCiEtfHx0cmlhbmd1bGF0aW9uYmxvZy5jb20KIS18fGJsb2cudHN1bmFuZXQubmV0CiEtfHxlbi50dXhlcm8uY29tCiEtfHx0d2F6enVwLmNvbQohLXx8dHdlZXRzd2VsbC5jb20KIS18fHR3aWJlcy5jb20KIS18fGFydC50d2dnLm9yZwohLXx8dHdpdmVydC5jb20KIS1VCnxodHRwOi8vdWIwLmNjCiEtfHxqb25ueS51YnVudHUtdHcubmV0CiEtfHxibG9nLnVtb25rZXkubmV0CiEtVgohLXx8dHAudmJhcC5jb20uYXUKIS18fHd3dy52aXJ0dW91c3JvbS5jb20KIS18fGJsb2cudmlzaWJvdGVjaC5jb20KIS1XCiEtfHx3YXZlcHJvdG9jb2wub3JnCiEtfHx3d3cud2F2ZXNhbmRib3guY29tCiEtfHx3ZWJmZWUub3JnLnJ1CiEtfHxibG9nLndlYm1wcm9qZWN0Lm9yZwohLXx8d2VidXBkOC5vcmcKIS18fHd3dy53aGF0YnJvd3Nlci5vcmcKIS18fHd3dy53aGVyZWRveW91Z28ubmV0CiEtfHx3aWxsaGFpbnMuY29tCiEtfHxmZWVkcy53aXJlZC5jb20KIS18fHdpc2VtYXBwaW5nLm9yZwp3b3p5LmluCiEtfHx3b3p5LmluLwohLXx8YmxvZy53dW5kZXJjb3VudGVyLmNvbQohLVgKIS18fHhkZWx0YS5vcmcKIS18fHhpYW9nYW96aS5vcmcKIS18fHhpbG91LnVzCiEtfHx4enkub3JnLnJ1CiEtWQohLXx8eW9vcGVyLmJlCiEtfHx0c29uZy55dW54aS5uZXQKIS1aCgpnb3NwZWxoZXJhbGQuY29tCnx8Z29zcGVsaGVyYWxkLmNvbQp8aHR0cDovL2hrLmdyYWRjb25uZWN0aW9uLmNvbS8KfHxncmFuZ29yei5vcmcKZ3JlYXRmaXJlLm9yZwp8fGdyZWF0ZmlyZS5vcmcKZ3JlYXRmaXJld2FsbG9mY2hpbmEub3JnCnx8Z3JlYXRyb2MudHcKLmd0cy12cG4uY29tCnxodHRwOi8vZ3RzLXZwbi5jb20KfHxndHYub3JnCi5ndS1jaHUtc3VtLm9yZwp8aHR0cDovL2d1LWNodS1zdW0ub3JnCi5ndWFndWFzcy5jb20KfGh0dHA6Ly9ndWFndWFzcy5jb20KLmd1YWd1YXNzLm9yZwp8aHR0cDovL2d1YWd1YXNzLm9yZwouZ3VhbmdtaW5nLmNvbS5teQpndWlzaGFuLm9yZwp8fGd1aXNoYW4ub3JnCi5ndW1yb2FkLmNvbQp8fGd1bXJvYWQuY29tCnx8Z3Vuc2FtZXJpY2EuY29tCmd1cnVvbmxpbmUuaGsKfGh0dHA6Ly9ndmxpYi5jb20KLmd5YWx3YXJpbnBvY2hlLmNvbQouZ3lhdHNvc3R1ZGlvLmNvbQoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tSEgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5oNTI4LmNvbQouaDVkbS5jb20KLmg1Z2FsZ2FtZS5tZQp8fGgtY2hpbmEub3JnCi5oLW1vZS5jb20KfGh0dHA6Ly9oLW1vZS5jb20KaDFuMWNoaW5hLm9yZwouaGFjZy5jbHViCnx8aGFjZy5jbHViCi5oYWNnLmluCnxodHRwOi8vaGFjZy5pbgouaGFjZy5saQp8aHR0cDovL2hhY2cubGkKLmhhY2cubWUKfGh0dHA6Ly9oYWNnLm1lCi5oYWNnLnJlZAp8aHR0cDovL2hhY2cucmVkCi5oYWNrZW4uY2MvYmJzCi5oYWNrZXIub3JnCnx8aGFja3RoYXRwaG9uZS5uZXQKaGFobG8uY29tCnx8aGFra2F0di5vcmcudHcKLmhhbmRjcmFmdGVkc29mdHdhcmUub3JnCnxodHRwOi8vYmJzLmhhbm1pbnp1Lm9yZy8KLmhhbnVueWkuY29tCi5oYW8ubmV3cy9uZXdzCnxodHRwOi8vYWUuaGFvMTIzLmNvbQp8aHR0cDovL2FyLmhhbzEyMy5jb20KfGh0dHA6Ly9ici5oYW8xMjMuY29tCnxodHRwOi8vZW4uaGFvMTIzLmNvbQp8aHR0cDovL2lkLmhhbzEyMy5jb20KfGh0dHA6Ly9qcC5oYW8xMjMuY29tCnxodHRwOi8vbWEuaGFvMTIzLmNvbQp8aHR0cDovL214LmhhbzEyMy5jb20KfGh0dHA6Ly9zYS5oYW8xMjMuY29tCnxodHRwOi8vdGguaGFvMTIzLmNvbQp8aHR0cDovL3R3LmhhbzEyMy5jb20KfGh0dHA6Ly92bi5oYW8xMjMuY29tCnxodHRwOi8vaGsuaGFvMTIzaW1nLmNvbQp8aHR0cDovL2xkLmhhbzEyM2ltZy5jb20KfHxoYXBweS12cG4uY29tCi5oYXByb3h5Lm9yZwp8fGhhcmRzZXh0dWJlLmNvbQouaGFydW55YWh5YS5jb20KfGh0dHA6Ly9oYXJ1bnlhaHlhLmNvbQpiYnMuaGFzaS53YW5nCmhhdmU4LmNvbQpAQHx8aGF5Z28uY29tCi5oY2xpcHMuY29tCnx8aGRsdC5tZQp8fGhkdHZiLm5ldAouaGR6b2cuY29tCnxodHRwOi8vaGR6b2cuY29tCnx8aGVhcnR5aXQuY29tCi5oZWF2eS1yLmNvbQouaGVjLnN1CnxodHRwOi8vaGVjLnN1Ci5oZWNhaXRvdS5uZXQKfHxoZWNhaXRvdS5uZXQKLmhlY2hhamkuY29tCnx8aGVjaGFqaS5jb20KfHxoZWVhY3QuZWR1LnR3Ci5oZWdyZS1hcnQuY29tCnxodHRwOi8vaGVncmUtYXJ0LmNvbQp8fGNkbi5oZWxpeHN0dWRpb3MubmV0Cnx8aGVscGxpbmZlbi5jb20KfHxoZWxwdXlnaHVyc25vdy5vcmcKfHxoZWxsb2FuZHJvaWQuY29tCnx8aGVsbG9xdWVlci5jb20KLmhlbGxvc3MucHcKaGVsbG90eHQuY29tCnx8aGVsbG90eHQuY29tCi5oZW50YWkudG8KLmhlbGxvdWsub3JnL2ZvcnVtL2xvZml2ZXJzaW9uCi5oZWxwZWFjaHBlb3BsZS5jb20KfHxoZWxwZWFjaHBlb3BsZS5jb20KfHxoZWxwc3Rlci5kZQouaGVscHpodWxpbmcub3JnCmhlbnRhaXR1YmUudHYKLmhlbnRhaXZpZGVvd29ybGQuY29tCgohIyMjIyMjIyMjIyMtLUhlcm9rdS0tIyMjIyMjIyMjIwohLS18fGdldGNsb3VkYXBwLmNvbQohLS18fGNsLmx5CiEtLUBAfHxmLmNsLmx5CiEtLUVDMiBETlMgUG9pc29uZWQKfHxpZC5oZXJva3UuY29tCgpoZXFpbmdsaWFuLm5ldAp8fGhldW5na29uZ2Rpc2N1c3MuY29tCi5oZXhpZXNoZS5jb20KfHxoZXhpZXNoZS5jb20KfHxoZXhpZXNoZS54eXoKIS0tR29vZ2xlIGVtcGxveWVlIHdpdGhpbiBHb29nbGUgSVAKfHxoZXh4ZWgubmV0CmFwcC5oZXl3aXJlLmNvbQouaGV5em8uY29tCi5oZ3NlYXYuY29tCi5oaGRjYjNvZmZpY2Uub3JnCi5oaHRoZXNha3lhdHJpemluLm9yZwpoaS1vbi5vcmcudHcKaGlkZGVuLWFkdmVudC5vcmcKfHxoaWRkZW4tYWR2ZW50Lm9yZwpoaWRlY2xvdWQuY29tL2Jsb2cvMjAwOC8wNy8yOS9mdWNrLWJlaWppbmctb2x5bXBpY3MuaHRtbAp8fGhpZGUubWUKLmhpZGVpbi5uZXQKLmhpZGVpcHZwbi5jb20KfHxoaWRlaXB2cG4uY29tCi5oaWRlbWFuLm5ldAp8fGhpZGVtYW4ubmV0CmhpZGVtZS5ubAp8fGhpZGVteS5uYW1lCi5oaWRlbXlhc3MuY29tCnx8aGlkZW15YXNzLmNvbQpoaWRlbXljb21wLmNvbQp8fGhpZGVteWNvbXAuY29tCi5oaWhpZm9ydW0uY29tCi5oaWhpc3RvcnkubmV0Cnx8aGloaXN0b3J5Lm5ldAouaGlnZncuY29tCmhpZ2hwZWFrc3B1cmVlYXJ0aC5jb20KfHxoaWdocm9ja21lZGlhLmNvbQp8fGhpaXRjaC5jb20KfHxoaWtpbmdnZncub3JnCi5oaWxpdmUudHYKLmhpbWFsYXlhbi1mb3VuZGF0aW9uLm9yZwpoaW1hbGF5YW5nbGFjaWVyLmNvbQouaGltZW1peC5jb20KfHxoaW1lbWl4LmNvbQouaGltZW1peC5uZXQKdGltZXMuaGluZXQubmV0Ci5oaXRvbWkubGEKfGh0dHA6Ly9oaXRvbWkubGEKLmhpd2lmaS5jb20KQEB8fGhpd2lmaS5jb20KaGl6YnV0dGFocmlyLm9yZwpoaXpiLXV0LXRhaHJpci5pbmZvCmhpemItdXQtdGFocmlyLm9yZwouaGpjbHViLmluZm8KLmhrLXB1Yi5jb20vZm9ydW0KfGh0dHA6Ly9oay1wdWIuY29tCi5oazAxLmNvbQp8fGhrMDEuY29tCi5oazMyMTY4LmNvbQp8fGhrMzIxNjguY29tCnx8aGthY2cuY29tCnx8aGthY2cubmV0Ci5oa2F0dm5ld3MuY29tCmhrYmMubmV0Ci5oa2JmLm9yZwouaGtib29rY2l0eS5jb20KfHxoa2Jvb2tjaXR5LmNvbQouaGtjaHVyY2gub3JnCmhrY2kub3JnLmhrCi5oa2NtaS5lZHUKfHxoa2NuZXdzLmNvbQp8fGhrY29jLmNvbQp8fGhrY3R1Lm9yZy5oawpoa2RheS5uZXQKLmhrZGFpbHluZXdzLmNvbS5oay9jaGluYS5waHAKaGtkZi5vcmcKLmhrZWouY29tCi5oa2VwYy5jb20vZm9ydW0vdmlld3RocmVhZC5waHA/dGlkPTExNTMzMjIKY2hpbmEuaGtldC5jb20KfHxoa2ZhYS5jb20KaGtmcmVlem9uZS5jb20KaGtmcm9udC5vcmcKbS5oa2dhbGRlbi5jb20KfGh0dHBzOi8vbS5oa2dhbGRlbi5jb20KLmhrZ3JlZW5yYWRpby5vcmcvaG9tZQouaGtoZWFkbGluZS5jb20qYmxvZwouaGtoZWFkbGluZS5jb20vaW5zdGFudG5ld3MKaGtoa2hrLmNvbQpoa2hyYy5vcmcuaGsKaGtocm0ub3JnLmhrCnx8aGtpcC5vcmcudWsKMTk4OXJlcG9ydC5oa2phLm9yZy5oawpoa2pjLmNvbQouaGtqcC5vcmcKLmhrbGZ0LmNvbQouaGtsdHMub3JnLmhrCnx8aGtsdHMub3JnLmhrCm5ld3MuaGtwZWFudXQuY29tCmhrcHR1Lm9yZwouaGtyZXBvcnRlci5jb20KfHxoa3JlcG9ydGVyLmNvbQp8aHR0cDovL2hrdXBvcC5oa3UuaGsvCi5oa3VzdS5uZXQKfHxoa3VzdS5uZXQKLmhrdndldC5jb20KLmhrd2NjLm9yZy5oawp8fGhrem9uZS5vcmcKLmhtb25naG90LmNvbQp8aHR0cDovL2htb25naG90LmNvbQouaG12LmNvLmpwLwpobmpoai5jb20KfHxobmpoai5jb20KLmhubnR1YmUuY29tCnx8aG9sYS5jb20KfHxob2xhLm9yZwpob2x5bW91bnRhaW5jbi5jb20KaG9seXNwaXJpdHNwZWFrcy5vcmcKfHxob2x5c3Bpcml0c3BlYWtzLm9yZwp8fGRlcmVraHN1LmhvbWVpcC5uZXQKLmhvbWVwZXJ2ZXJzaW9uLmNvbQp8aHR0cDovL2hvbWVzZXJ2ZXJzaG93LmNvbQp8aHR0cDovL29sZC5ob25leW5ldC5vcmcvc2NhbnMvc2NhbjMxL3N1Yi9kb3VnX2VyaWMvc3BhbV90cmFuc2xhdGlvbi5odG1sCi5ob25na29uZ2ZwLmNvbQp8fGhvbmdrb25nZnAuY29tCmhvbmdtZWltZWkuY29tCnx8aG9uZ3poaS5saQouaG9vdHN1aXRlLmNvbQp8fGhvb3RzdWl0ZS5jb20KLmhvcGVkaWFsb2d1ZS5vcmcKfGh0dHA6Ly9ob3BlZGlhbG9ndWUub3JnCi5ob3B0by5vcmcKLmhvcm55Z2FtZXIuY29tCi5ob3JueXRyaXAuY29tCnxodHRwOi8vaG9ybnl0cmlwLmNvbQouaG90YXYudHYKLmhvdGVscy5jbgpob3Rmcm9nLmNvbS50dwpob3Rnb28uY29tCi5ob3Rwb3Juc2hvdy5jb20KaG90cG90LmhrCi5ob3RzaGFtZS5jb20KfHxob3RzcG90c2hpZWxkLmNvbQouaG90dnBuLmNvbQp8fGhvdHZwbi5jb20KfHxob3VnYWlnZS5jb20KfHxob3d0b2ZvcmdlLmNvbQp8fGhveHguY29tCi5ocWNkcC5vcmcKfHxocWNkcC5vcmcKfHxocWphcGFuZXNlc2V4LmNvbQpocW1vdmllcy5jb20KLmhyY2lyLmNvbQouaHJjY2hpbmEub3JnCi5ocmVhLm9yZwouaHJpY2hpbmEub3JnCnx8aHJpY2hpbmEub3JnCi5ocnRzZWEuY29tCi5ocncub3JnCnx8aHJ3Lm9yZwpocndlYi5vcmcKfHxoc2pwLm5ldAp8fGhzc2VsaXRlLmNvbQp8aHR0cDovL2hzdC5uZXQudHcKLmhzdGVybi5uZXQKLmhzdHQubmV0Ci5odGtvdS5uZXQKfHxodGtvdS5uZXQKLmh1YS15dWUubmV0Ci5odWFnbGFkLmNvbQp8fGh1YWdsYWQuY29tCi5odWFuZ2h1YWdhbmcub3JnCnx8aHVhbmdodWFnYW5nLm9yZwouaHVhbmd5aXl1LmNvbQouaHVhcmVuLnVzCnx8aHVhcmVuLnVzCi5odWFyZW40dXMuY29tCi5odWFzaGFuZ25ld3MuY29tCnxodHRwOi8vaHVhc2hhbmduZXdzLmNvbQpiYnMuaHVhc2luZy5vcmcKaHVheGlhLW5ld3MuY29tCmh1YXhpYWJhby5vcmcKaHVheGluLnBoCnx8aHVheXV3b3JsZC5vcmcKLmh1ZmZpbmd0b25wb3N0LmNvbS9yZWJpeWEta2FkZWVyCnx8aHVnb3JveS5ldQp8fGh1aGFpdGFpLmNvbQp8fGh1aGFtaGlyZS5jb20KLmh1aGFuZ2ZlaS5jb20KfHxodWhhbmdmZWkuY29tCmh1aXlpLmluCi5odWxrc2hhcmUuY29tCmh1bWFucmlnaHRzYnJpZWZpbmcub3JnCnx8aHVuZy15YS5jb20KfHxodW5nZXJzdHJpa2Vmb3JhaWRzLm9yZwp8fGh1cGluZy5uZXQKaHVyZ29rYmF5cmFrLmNvbQouaHVycml5ZXQuY29tLnRyCi5odXQyLnJ1Cnx8aHV0aWFueWkubmV0Cmh1dG9uZzkubmV0Cmh1eWFuZGV4LmNvbQouaHdhZHphbi50dwp8fGh3YXl1ZS5vcmcudHcKfHxod2luZm8uY29tCnx8aHh3ay5vcmcKaHh3cS5vcmcKfHxoeXBlcnJhdGUuY29tCmVib29rLmh5cmVhZC5jb20udHcKfHxlYm9vay5oeXJlYWQuY29tLnR3CgohLS0tLS0tLS0tLS0tLS0tLS0tLS1JSS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfHxpMS5oawp8fGkycDIuZGUKfHxpMnJ1bm5lci5jb20KfHxpODE4aGsuY29tCi5pLWNhYmxlLmNvbQouaS1wYXJ0LmNvbS50dwouaWFtdG9wb25lLmNvbQppYXNrLmNhCnx8aWFzay5jYQppYXNrLmJ6Cnx8aWFzay5iegouaWF2MTkuY29tCmliaWJsaW8ub3JnL3B1Yi9wYWNrYWdlcy9jY2ljCi5pYmxpc3QuY29tCnx8aWJsb2dzZXJ2LWYubmV0Cmlicm9zLm9yZwp8aHR0cDovL2NuLmlidGltZXMuY29tCi5pYnZwbi5jb20KfHxpYnZwbi5jb20KaWNhbXMuY29tCmJsb2dzLmljZXJvY2tldC5jb20vdGFnCi5pY2lqLm9yZwp8fGljaWoub3JnCnx8aWNsLWZpLm9yZwouaWNvY28uY29tCnx8aWNvY28uY29tCgohLS0zOC4xMDMuMTY1LjUwCnx8ZnVyYm8ub3JnCiEtLXx8aWNvbmZhY3RvcnkuY29tCnx8d2FyYmxlci5pY29uZmFjdG9yeS5uZXQKCnx8aWNvbnBhcGVyLm9yZwohLS0gR29vZ2xlIFBhZ2VzCnx8aWN1LXByb2plY3Qub3JnCncuaWRhaXdhbi5jb20vZm9ydW0KfHxpZGRkZGcuY29tCmlkZW1vY3JhY3kuYXNpYQouaWRlbnRpLmNhCnx8aWRlbnRpLmNhCnx8aWRpb21jb25uZWN0aW9uLmNvbQp8aHR0cDovL3d3dy5pZGxjb3lvdGUuY29tCi5pZG91Z2EuY29tCi5pZHJlYW14LmNvbQpmb3J1bS5pZHNhbS5jb20KLmlkdi50dwouaWVhc3k1LmNvbQp8aHR0cDovL2llYXN5NS5jb20KLmllZDJrLm5ldAouaWVuZXJneTEuY29tCnxodHRwOi8vaWYudHR0LwppZmFucWlhbmcuY29tCi5pZmNzcy5vcmcKfHxpZmNzcy5vcmcKaWZqYy5vcmcKLmlmdC50dAp8aHR0cDovL2lmdC50dAp8fGlmcmVld2FyZXMuY29tCnx8aWdjZC5uZXQKLmlnZncubmV0Cnx8aWdmdy5uZXQKLmlnZncudGVjaAp8fGlnZncudGVjaAouaWdtZy5kZQp8fGlnbml0ZWRldHJvaXQubmV0Ci5pZ290bWFpbC5jb20udHcKfHxpZ3ZpdGEuY29tCnx8aWhha2thLm5ldAouaWhhby5vcmcvZHo1Cnx8aWljbnMuY29tCi5pa3N0YXIuY29tCnx8aWxoYW10b2h0aWluc3RpdHV0ZS5vcmcKfHxpbGx1c2lvbmZhY3RvcnkuY29tCnx8aWxvdmU4MC5iZQp8fGltLnR2CkBAfHxteXZsb2cuaW0udHYKfHxpbTg4LnR3Ci5pbWdjaGlsaS5uZXQKfGh0dHA6Ly9pbWdjaGlsaS5uZXQKLmltYWdlYWIuY29tCi5pbWFnZWZhcC5jb20KfHxpbWFnZWZhcC5jb20KfHxpbWFnZWZsZWEuY29tCmltYWdlc2hhY2sudXMKfHxpbWFnZXZlbnVlLmNvbQp8fGltYWdlemlsbGEubmV0Ci5pbWIub3JnCnxodHRwOi8vaW1iLm9yZwoKIS0tSU1EQgp8aHR0cDovL3d3dy5pbWRiLmNvbS9uYW1lL25tMDQ4MjczMAouaW1kYi5jb20vdGl0bGUvdHQwODE5MzU0Ci5pbWRiLmNvbS90aXRsZS90dDE1NDAwNjgKLmltZGIuY29tL3RpdGxlL3R0NDkwODY0NAoKLmltZy5seQp8fGltZy5seQouaW1ndXIuY29tCnx8aW1ndXIuY29tCi5pbWtldi5jb20KfHxpbWtldi5jb20KLmltbGl2ZS5jb20KLmltbW9yYWwuanAKaW1wYWN0Lm9yZy5hdQppbXBwLm1uCnxodHRwOi8vdGVjaDIuaW4uY29tL3ZpZGVvLwppbjk5Lm9yZwppbi1kaXNndWlzZS5jb20KLmluY2FwZG5zLm5ldAouaW5jbG9hay5jb20KfHxpbmNsb2FrLmNvbQp8fGluY3JlZGlib3guZnIKfHxpbmRpYW5kZWZlbnNlbmV3cy5pbgp0aW1lc29maW5kaWEuaW5kaWF0aW1lcy5jb20vZGFsYWkKdGltZXNvZmluZGlhLmluZGlhdGltZXMuY29tL2RlZmF1bHRpbnRlcnN0aXRpYWwuY21zCi5pbmRpZW1lcmNoLmNvbQp8fGluZGllbWVyY2guY29tCmluZm8tZ3JhZi5mcgp3ZWJzaXRlLmluZm9ybWVyLmNvbQouaW5pdGlhdGl2ZXNmb3JjaGluYS5vcmcKLmlua3VpLmNvbQouaW5tZWRpYWhrLm5ldAp8fGlubWVkaWFoay5uZXQKfHxpbm5lcm1vbmdvbGlhLm9yZwp8aHR0cDovL2Jsb2cuaW5vcmVhZGVyLmNvbQouaW5vdGUudHcKLmluc2VjYW0ub3JnCnxodHRwOi8vaW5zZWNhbS5vcmcKfHxpbnNpZGV2b2EuY29tCi5pbnN0aXR1dC10aWJldGFpbi5vcmcKfGh0dHA6Ly9pbnRlcm5ldC5vcmcvCmludGVybmV0ZGVmZW5zZWxlYWd1ZS5vcmcKaW50ZXJuZXRmcmVlZG9tLm9yZwohLS18fGludGVycG9sLmludAp8fGludGVybmV0cG9wY3VsdHVyZS5jb20KLmludGhlbmFtZW9mY29uZnVjaXVzbW92aWUuY29tCnx8aW50aGVuYW1lb2Zjb25mdWNpdXNtb3ZpZS5jb20KaW54aWFuLmNvbQp8fGlueGlhbi5jb20KaXBhbHRlci5jb20KIS0tfHxpcGNmLm9yZy50dwouaXBmaXJlLm9yZwp8fGlwaG9uZTRob25na29uZy5jb20KfHxpcGhvbmVoYWNrcy5jb20KfHxpcGhvbmV0YWl3YW4ub3JnCnx8aXBob25peC5mcgp8fGlwaWN0dXJlLnJ1Ci5pcGpldGFibGUubmV0Cnx8aXBqZXRhYmxlLm5ldAouaXBvYmFyLmNvbS9yZWFkLnBocD8KaXBvb2NrLmNvbS9pbWcKLmlwb3J0YWwubWUKfGh0dHA6Ly9pcG9ydGFsLm1lCnx8aXBwb3R2LmNvbQouaXByZWRhdG9yLnNlCnx8aXByZWRhdG9yLnNlCi5pcHR2LmNvbS50dwp8fGlwdHZiaW4uY29tCnx8aXB2YW5pc2guY29tCmlyZWRtYWlsLm9yZwpjaGluZXNlLmlyaWIuaXIKfHxpcm9uYmlnZm9vbHMuY29tcHl0aG9uLm5ldAp8fGlyb25weXRob24ubmV0Ci5pcm9uc29ja2V0LmNvbQp8fGlyb25zb2NrZXQuY29tCi5pcy5nZAouaXNsYWhoYWJlci5uZXQKLmlzbGFtLm9yZy5oawp8aHR0cDovL2lzbGFtLm9yZy5oawouaXNsYW1hd2FyZW5lc3MubmV0L0FzaWEvQ2hpbmEKLmlzbGFtaG91c2UuY29tCnx8aXNsYW1ob3VzZS5jb20KLmlzbGFtaWNpdHkuY29tCi5pc2xhbWljcGx1cmFsaXNtLm9yZwouaXNsYW10b2RheS5uZXQKLmlzYWFjbWFvLmNvbQp8fGlzYWFjbWFvLmNvbQp8fGlzZ3JlYXQub3JnCnx8aXNtYWVsYW4uY29tCi5pc21hbGx0aXRzLmNvbQp8fGlzbXByb2Zlc3Npb25hbC5uZXQKaXNvaHVudC5jb20KfHxpc3JhYm94LmNvbQouaXNzdXUuY29tCnx8aXNzdXUuY29tCi5pc3RhcnMuY28ubnoKb3ZlcnNlYS5pc3RhcnNoaW5lLmNvbQp8fG92ZXJzZWEuaXN0YXJzaGluZS5jb20KYmxvZy5pc3RlZi5pbmZvLzIwMDcvMTAvMjEvbXllbnR1bm5lbAouaXN0aXFsYWxoZXdlci5jb20KLmlzdG9ja3Bob3RvLmNvbQppc3VuYWZmYWlycy5jb20KaXN1bnR2LmNvbQppdGFib28uaW5mbwp8fGl0YWJvby5pbmZvCi5pdGFsaWF0aWJldC5vcmcKZG93bmxvYWQuaXRob21lLmNvbS50dwppdGhlbHAuaXRob21lLmNvbS50dwp8fGl0c2hpZGRlbi5jb20KLml0c2t5Lml0Ci5pdHdlZXQubmV0CnxodHRwOi8vaXR3ZWV0Lm5ldAouaXU0NS5jb20KLml1aHJkZi5vcmcKfHxpdWhyZGYub3JnCi5pdWtza3kuY29tCi5pdmFjeS5jb20KfHxpdmFjeS5jb20KLml2ZXJ5Y2QuY29tCi5pdnBuLm5ldAohLS18fGl2cG4ubmV0Cnx8aXhxdWljay5jb20KLml4eHguY29tCml5b3Vwb3J0LmNvbQp8fGl5b3Vwb3J0LmNvbQouaXphb2Jhby51cwp8fGdtb3pvbWcuaXppaG9zdC5vcmcKLml6bGVzLm5ldAouaXpsZXNlbS5vcmcKCiEtLS0tLS0tLS0tLS0tLS0tLS0tLUpKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp8fGoubXAKYmxvZy5qYWNramlhLmNvbQpqYW1hYXQub3JnCi5qYW15YW5nbm9yYnUuY29tCnxodHRwOi8vamFteWFuZ25vcmJ1LmNvbQouamFuZHl4LmNvbQp8fGphbndvbmdwaG90by5jb20KfHxqYXBhbi13aG9yZXMuY29tCi5qYXYuY29tCi5qYXYxMDEuY29tCi5qYXYyYmUuY29tCnx8amF2MmJlLmNvbQouamF2NjgudHYKLmphdmFraWJhLm9yZwp8aHR0cDovL2phdmFraWJhLm9yZwouamF2YnVzLmNvbQp8fGphdmJ1cy5jb20KfHxqYXZmb3IubWUKLmphdmhkLmNvbQouamF2aGlwLmNvbQouamF2bW9iaWxlLm5ldAp8aHR0cDovL2phdm1vYmlsZS5uZXQKLmphdm1vby5jb20KLmphdnNlZW4uY29tCnxodHRwOi8vamF2c2Vlbi5jb20KamJ0YWxrcy5jYwpqYnRhbGtzLmNvbQpqYnRhbGtzLm15Ci5qZHdzeS5jb20KamVhbnlpbS5jb20KfHxqZnF1MzYuY2x1Ygp8fGpmcXUzNy54eXoKfHxqZ29vZGllcy5jb20KLmppYW5nd2VpcGluZy5jb20KfHxqaWFuZ3dlaXBpbmcuY29tCnx8amlhb3lvdTguY29tCi5qaWVodWEuY3oKfHxoay5qaWVwYW5nLmNvbQp8fHR3LmppZXBhbmcuY29tCmppZXNoaWJhb2Jhby5jb20KLmppZ2dsZWdpZnMuY29tCjU2Y3VuMDQuamlnc3kuY29tCmppZ29uZzEwMjQuY29tCmRhb2R1MTQuamlnc3kuY29tCnNwZWN4aW56bC5qaWdzeS5jb20Kd2xjbmV3LmppZ3N5LmNvbQouamloYWRvbG9neS5uZXQKfGh0dHA6Ly9qaWhhZG9sb2d5Lm5ldApqaW5idXNoZS5vcmcKfHxqaW5idXNoZS5vcmcKLmppbmdzaW0ub3JnCnpoYW8uamluaGFpLmRlCmppbmdwaW4ub3JnCnx8amluZ3Bpbi5vcmcKamlucGlhbndhbmcuY29tCi5qaW5yb3Vrb25nLmNvbQphYy5qaXJ1YW4ubmV0Cnx8aml0b3VjaC5jb20KLmppenp0aGlzLmNvbQpqamdpcmxzLmNvbQouamtiLmNjCnxodHRwOi8vamtiLmNjCmprZm9ydW0ubmV0Cnx8am1hLmdvLmpwCnJlc2VhcmNoLmptc2MuaGt1LmhrL3NvY2lhbAp3ZWlib3Njb3BlLmptc2MuaGt1LmhrCi5qbXNjdWx0LmNvbQp8aHR0cDovL2ptc2N1bHQuY29tCnx8am9hY2hpbXMub3JnCnx8am9ic28udHYKLnN1bndpbmlzbS5qb2luYmJzLm5ldAouam91cm5hbGNocmV0aWVuLm5ldAp8fGpvdXJuYWxvZmRlbW9jcmFjeS5vcmcKLmpveW1paWh1Yi5jb20KLmpveW91cnNlbGYuY29tCmpwb3Bmb3J1bS5uZXQKfHxmaWRkbGUuanNoZWxsLm5ldAouanVidXNob3VzaGVuLmNvbQp8fGp1YnVzaG91c2hlbi5jb20KIS0tRG9hbWluIHBhcmtpbmcKLmp1aHVhcmVuLmNvbQp8fGp1bGllcmV5Yy5jb20KfHxqdW5hdXphLmNvbQouanVuZTRjb21tZW1vcmF0aW9uLm9yZwouanVuZWZvdXJ0aC0yMC5uZXQKfHxqdW5lZm91cnRoLTIwLm5ldAp8fGJicy5qdW5nbG9iYWwubmV0Ci5qdW9hYS5jb20KfGh0dHA6Ly9qdW9hYS5jb20KanVzdGZyZWV2cG4uY29tCi5qdXN0aWNlZm9ydGVuemluLm9yZwpqdXN0cGFzdGUuaXQKanVzdHRyaXN0YW4uY29tCmp1eXVhbmdlLm9yZwpqdXppeXVlLmNvbQp8fGp1eml5dWUuY29tCnx8andtdXNpYy5vcmcKQEB8fG11c2ljLmp3bXVzaWMub3JnCi5qeXhmLm5ldAoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tS0stLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnx8ay1kb3VqaW4ubmV0Cnx8a2Etd2FpLmNvbQp8fGthZG9rYXdhLmNvLmpwCi5rYWd5dS5vcmcKfHxrYWd5dS5vcmcuemEKLmthZ3l1bW9ubGFtLm9yZwoua2FneXVuZXdzLmNvbS5oawoua2FneXVvZmZpY2Uub3JnCnx8a2FneXVvZmZpY2Uub3JnCnx8a2FneXVvZmZpY2Uub3JnLnR3Ci5rYWl5dWFuLmRlCi5rYWthby5jb20KfHxrYWthby5jb20KLmthbGFjaGFrcmFsdWdhbm8ub3JnCi5rYW5rYW4udG9kYXkKLmthbm5ld3lvcmsuY29tCnx8a2FubmV3eW9yay5jb20KLmthbnNoaWZhbmcuY29tCnx8a2Fuc2hpZmFuZy5jb20KfHxrYW50aWUub3JnCmthbnpob25nZ3VvLmNvbQprYW56aG9uZ2d1by5ldQoua2FvdGljLmNvbQp8fGthcmF5b3UuY29tCmthcmtodW5nLmNvbQoua2FybWFwYS5vcmcKLmthcm1hcGEtdGVhY2hpbmdzLm9yZwp8fGthd2FzZS5jb20KLmtiYS10eC5vcmcKLmtjb29sb25saW5lLmNvbQoua2VicnVtLmNvbQp8fGtlYnJ1bS5jb20KLmtlY2hhcmEuY29tCi5rZWVwYW5kc2hhcmUuY29tL3Zpc2l0L3Zpc2l0X3BhZ2UucGhwP2k9Njg4MTU0CiEtLXx8a2VlcHZpZC5jb20KLmtlZXptb3ZpZXMuY29tCi5rZW5kaW5jb3MubmV0Ci5rZW5lbmdiYS5jb20KfHxrZW5lbmdiYS5jb20KfHxrZW9udGVjaC5uZXQKLmtlcGFyZC5jb20KfHxrZXBhcmQuY29tCndpa2kua2Vzby5jbi9Ib21lCnx8a2V5Y2RuLmNvbQoua2hhYmRoYS5vcmcKLmtobXVzaWMuY29tLnR3Cnx8a2ljaGlrdS1kb3VqaW5rby5jb20KLmtpay5jb20KfHxraWsuY29tCmJicy5raW15LmNvbS50dwoua2luZGxlcmVuLmNvbQp8aHR0cDovL2tpbmRsZXJlbi5jb20KfGh0dHA6Ly93d3cua2luZGxlcmVuLmNvbQoua2luZ2RvbXNhbHZhdGlvbi5vcmcKfHxraW5nZG9tc2FsdmF0aW9uLm9yZwpraW5naG9zdC5jb20KIS0tLmtpbmdzdG9uZS5jb20udHcvYm9vay8KfHxraW5nc3RvbmUuY29tLnR3Ci5raW5rLmNvbQoua2lub2t1bml5YS5jb20KfHxraW5va3VuaXlhLmNvbQpraWxsd2FsbC5jb20KfHxraWxsd2FsbC5jb20KfHxraW5tZW4udHJhdmVsCi5raXIuanAKLmtpc3NiYmFvLmNuCnxodHRwOi8va2l3aS5regp8fGtrLXdoeXMuY28uanAKIS0tfHxrbXQub3JnLnR3Ci5rbXVoLm9yZy50dwoua25vd2xlZGdlcnVzaC5jb20va3IvZW5jeWNsb3BlZGlhCi5rb2JvLmNvbQp8fGtvYm8uY29tCi5rb2JvYm9va3MuY29tCnx8a29ib2Jvb2tzLmNvbQp8fGtvZGluZ2VuLmNvbQpAQHx8d3d3LmtvZGluZ2VuLmNvbQp8fGtvbXBvemVyLm5ldAoua29uYWNoYW4uY29tCnxodHRwOi8va29uYWNoYW4uY29tCi5rb25lLmNvbQp8fGtvb2xzb2x1dGlvbnMuY29tCi5rb29ybmsuY29tCnx8a29vcm5rLmNvbQp8fGtvcmFubWFuZGFyaW4uY29tCi5rb3JlbmFuMi5jb20KfGh0dHA6Ly9nb2pldC5rcnRjby5jb20udHcKLmtzZGwub3JnCi5rc25ld3MuY29tLnR3Cnx8a3R6aGsuY29tCi5rdWkubmFtZS9ldmVudAprdW4uaW0KLmt1cmFzaHN1bHRhbi5jb20KfHxrdXJ0bXVuZ2VyLmNvbQprdXNvY2l0eS5jb20KfHxrd2NnLmNhCmt3b25nd2FoLmNvbS5teQoua3hzdy5saWZlCnx8a3hzdy5saWZlCi5reW9mdW4uY29tCmt5b2hrLm5ldAp8fGt5b3l1ZS5jb20KLmt5enloZWxsby5jb20KfHxreXp5aGVsbG8uY29tCi5remVuZy5pbmZvCnx8a3plbmcuaW5mbwoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tTEwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmxhLWZvcnVtLm9yZwpsYWRicm9rZXMuY29tCnx8bGFiaWVubmFsZS5vcmcKLmxhZ3JhbmVwb2NhLmNvbQp8fGxhZ3JhbmVwb2NhLmNvbQoubGFsdWxhbHUuY29tCi5sYW1hLmNvbS50dwp8fGxhbWEuY29tLnR3Ci5sYW1heWVzaGUuY29tCnxodHRwOi8vbGFtYXllc2hlLmNvbQp8aHR0cDovL3d3dy5sYW1lbmh1LmNvbQoubGFtbmlhLmNvLnVrCnx8bGFtbmlhLmNvLnVrCmxhbXJpbS5jb20KLmxhbnRlcm5jbi5jbgp8aHR0cDovL2xhbnRlcm5jbi5jbgoubGFudG9zZm91bmRhdGlvbi5vcmcKLmxhb2QuY24KfGh0dHA6Ly9sYW9kLmNuCmxhb2dhaS5vcmcKfHxsYW9nYWkub3JnCmxhb21pdS5jb20KLmxhb3lhbmcuaW5mbwp8aHR0cDovL2xhb3lhbmcuaW5mbwp8fGxhcHRvcGxvY2tkb3duLmNvbQoubGFxaW5nZGFuLm5ldAp8fGxhcWluZ2Rhbi5uZXQKfHxsYXJzZ2VvcmdlLmNvbQoubGFzdGNvbWJhdC5jb20KfGh0dHA6Ly9sYXN0Y29tYmF0LmNvbQp8fGxhc3RmbS5lcwpsYXRlbGluZW5ld3MuY29tCi5sYXRpYmV0Lm9yZwp8fGxlLXZwbi5jb20KLmxlYWZ5dnBuLm5ldAp8fGxlYWZ5dnBuLm5ldApsZWVhby5jb20uY24vYmJzL2ZvcnVtLnBocAohLS18fGxlZWNoZXVreWFuLm9yZwpsZWZvcmEuY29tCnx8bGVmdDIxLmhrCi5sZWdhbHBvcm5vLmNvbQoubGVnc2phcGFuLmNvbQp8aHR0cDovL2xlaXJlbnR2LmNhCmxlaXN1cmVjYWZlLmNhCnx8bGVtYXRpbi5jaAoubGVtb25kZS5mcgp8fGxlbndoaXRlLmNvbQpsZXJvc3VhLm9yZwp8fGxlcm9zdWEub3JnCmJsb2cubGVzdGVyODUwLmluZm8KfHxsZXNvaXIuYmUKLmxldG91LmNvbQpsZXRzY29ycC5uZXQKfHxsZXRzY29ycC5uZXQKfHxzcy5sZXZ5aHN1LmNvbQohNjkuMTYuMTc1LjQyCnx8Y2RuLmFzc2V0cy5sZnBjb250ZW50LmNvbQoubGhha2FyLm9yZwp8aHR0cDovL2xoYWthci5vcmcKLmxoYXNvY2lhbHdvcmsub3JnCi5saWFuZ3lvdS5uZXQKfHxsaWFuZ3lvdS5uZXQKLmxpYW55dWUubmV0Cnx8bGlhb3dhbmd4aXphbmcubmV0Ci5saWFvd2FuZ3hpemFuZy5uZXQKfHxsaWJlcmFsLm9yZy5oawoubGliZXJ0eXRpbWVzLmNvbS50dwpibG9ncy5saWJyYXJ5aW5mb3JtYXRpb250ZWNobm9sb2d5LmNvbS9qeHl6Ci5saWRlY2hlbmcuY29tL2Jsb2cvZnVja2luZy1nZncKLmxpZ2h0ZW4ub3JnLnR3Ci5saWdodG5vdmVsLmNuCkBAfGh0dHBzOi8vd3d3LmxpZ2h0bm92ZWwuY24KbGltaWFvLm5ldApsaW5rdXN3ZWxsLmNvbQphYml0bm8ubGlucGllLmNvbS91c2UtaXB2Ni10by1mdWNrLWdmdwp8fGxpbmUubWUKfHxsaW5lLWFwcHMuY29tCi5saW5nbGluZ2ZhLmNvbQp8fGxpbmd2b2RpY3MuY29tCi5saW5rLW8tcmFtYS5jb20KfGh0dHA6Ly9saW5rLW8tcmFtYS5jb20KLmxpbmtpZGVvLmNvbQp8fGFwaS5saW5rc2FscGhhLmNvbQp8fGFwaWRvY3MubGlua3NhbHBoYS5jb20KfHx3d3cubGlua3NhbHBoYS5jb20KfHxoZWxwLmxpbmtzYWxwaGEuY29tCnx8bGludXgub3JnLmhrCmxpbnV4dG95Lm9yZy9hcmNoaXZlcy9pbnN0YWxsaW5nLXdlc3QtY2hhbWJlci1vbi11YnVudHUKLmxpb25zcm9hci5jb20KLmxpcHVtYW4uY29tCnx8bGlxdWlkdnBuLmNvbQp8fGdyZWF0ZmlyZS51czcubGlzdC1tYW5hZ2UuY29tCnx8bGlzdGVudG95b3V0dWJlLmNvbQpsaXN0b3Jpb3VzLmNvbQoubGl1LXhpYW9iby5vcmcKfHxsaXVkZWp1bi5jb20KLmxpdWhhbnl1LmNvbQoubGl1amlhbnNodS5jb20KfHxsaXVqaWFuc2h1LmNvbQoubGl1eGlhb2JvLm5ldAp8aHR0cDovL2xpdXhpYW9iby5uZXQKbGl1eGlhb3RvbmcuY29tCnx8bGl1eGlhb3RvbmcuY29tCi5saXZlZG9vci5qcAoubGl2ZWxlYWsuY29tCnx8bGl2ZWxlYWsuY29tCi5saXZlc3RhdGlvbi5jb20KbGl2ZXN0cmVhbS5jb20KfHxsaXZlc3RyZWFtLmNvbQp8fGxpdmluZ29ubGluZS51cwp8fGxpdmluZ3N0cmVhbS5jb20KfHxsaXZldmlkZW8uY29tCi5saXZldmlkZW8uY29tCi5saXdhbmd5YW5nLmNvbQpsaXpoaXpodWFuZ2JpLmNvbQpsa2NuLm5ldAoubGxzcy5tZS8KLmxvYWQudG8KLmxvYnNhbmd3YW5neWFsLmNvbQoubG9jYWxkb21haW4ud3MKfHxsb2NhbGRvbWFpbi53cwpsb2NhbHByZXNzaGsuY29tCnx8bG9ja2VzdGVrLmNvbQpsb2dib3QubmV0Cnx8bG9naXF4LmNvbQpzZWN1cmUubG9nbWVpbi5jb20KfHxzZWN1cmUubG9nbWVpbi5jb20KLmxvbmRvbmNoaW5lc2UuY2EKLmxvbmdoYWlyLmhrCmxvbmdtdXNpYy5jb20KfHxsb25ndGVybWx5Lm5ldAp8fGxvb2twaWMuY29tCi5sb29rdG9yb250by5jb20KfGh0dHA6Ly9sb29rdG9yb250by5jb20KLmxvdHNhd2Fob3VzZS5vcmcvdGliZXRhbi1tYXN0ZXJzL2ZvdXJ0ZWVudGgtZGFsYWktbGFtYQoubG90dXNsaWdodC5vcmcuaGsKLmxvdHVzbGlnaHQub3JnLnR3CmhrcmVwb3J0ZXIubG92ZWQuaGsKIS0tNDAzPwp8fGxwc2cuY29tCnx8bHJmei5jb20KLmxyaXAub3JnCnx8bHJpcC5vcmcKLmxzZC5vcmcuaGsKfHxsc2Qub3JnLmhrCmxzZm9ydW0ubmV0Ci5sc20ub3JnCnx8bHNtLm9yZwoubHNtY2hpbmVzZS5vcmcKfHxsc21jaGluZXNlLm9yZwoubHNta29yZWFuLm9yZwp8fGxzbWtvcmVhbi5vcmcKLmxzbXJhZGlvLmNvbS9yYWRfYXJjaGl2ZXMKLmxzbXdlYmNhc3QuY29tCi5sdG4uY29tLnR3Cnx8bHRuLmNvbS50dwoubHVrZTU0LmNvbQoubHVrZTU0Lm9yZwoubHVwbS5vcmcKfHxsdXBtLm9yZwp8fGx1c2hzdG9yaWVzLmNvbQpsdXhlYmMuY29tCmx2aGFpLm9yZwp8fGx2aGFpLm9yZwp8fGx2djIuY29tCi5seWZoay5uZXQKfGh0dHA6Ly9seWZoay5uZXQKLmx6bXRuZXdzLm9yZwp8fGx6bXRuZXdzLm9yZwoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tTU0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmh0dHA6Ly8qLm0tdGVhbS5jYwohLS1tLXRlYW0uY2MvZm9ydW0KLm1hY3JvdnBuLmNvbQptYWN0cy5jb20udHcKfHxtYWQtYXIuY2gKfHxtYWRyYXUuY29tCnx8bWFkdGh1bWJzLmNvbQp8fG1hZ2ljLW5ldC5pbmZvCm1haGFib2RoaS5vcmcKbXkubWFpbC5ydQoubWFpcGx1cy5jb20KfGh0dHA6Ly9tYWlwbHVzLmNvbQoubWFpemhvbmcub3JnCm1ha2thaG5ld3NwYXBlci5jb20KLm1hbWluZ3poZS5jb20KbWFuaWN1cjRpay5ydQoubWFwbGV3LmNvbQp8aHR0cDovL21hcGxldy5jb20KfHxtYXJjLmluZm8KbWFyZ3Vlcml0ZS5zdQp8fG1hcnRpbmNhcnRvb25zLmNvbQptYXNrZWRpcC5jb20KLm1haWlvLm5ldAoubWFpbC1hcmNoaXZlLmNvbQoubWFsYXlzaWFraW5pLmNvbQp8fG1ha2VteW1vb2QuY29tCi5tYW5jaHVrdW8ubmV0Ci5tYW5pYXNoLmNvbQp8aHR0cDovL21hbmlhc2guY29tCi5tYW5zaW9uLmNvbQoubWFuc2lvbnBva2VyLmNvbQohLS18fG1hcmluZXMubWlsCiEtLW1hcmttYWlsLm9yZyptZXNzYWdlCnx8bWFydGF1LmNvbQp8aHR0cDovL2Jsb2cubWFydGlub2VpLmNvbQoubWFydHNhbmdrYWd5dW9mZmljaWFsLm9yZwp8aHR0cDovL21hcnRzYW5na2FneXVvZmZpY2lhbC5vcmcKbWFydXRhLmJlL2ZvcmdldAoubWFyeGlzdC5jb20KfHxtYXJ4aXN0Lm5ldAoubWFyeGlzdHMub3JnL2NoaW5lc2UKIS0tfHxtYXNoYWJsZS5jb20KfHxtYXRhaW5qYS5jb20KfHxtYXRoYWJsZS5pbwp8fG1hdGhpZXctYmFkaW1vbi5jb20KfHxtYXRzdXNoaW1ha2FlZGUuY29tCnxodHRwOi8vbWF0dXJlanAuY29tCm1heWltYXlpLmNvbQoubWF4aW5nLmpwCi5tY2FmLmVlCnxodHRwOi8vbWNhZi5lZQp8fG1jYWRmb3J1bXMuY29tCm1jZm9nLmNvbQptY3JlYXNpdGUuY29tCi5tZC10Lm9yZwp8fG1kLXQub3JnCnx8bWVhbnN5cy5jb20KLm1lZGlhLm9yZy5oawoubWVkaWFjaGluZXNlLmNvbQp8fG1lZGlhY2hpbmVzZS5jb20KLm1lZGlhZmlyZS5jb20vPwoubWVkaWFmaXJlLmNvbS9kb3dubG9hZAoubWVkaWFmcmVha2NpdHkuY29tCnx8bWVkaWFmcmVha2NpdHkuY29tCi5tZWRpdW0uY29tCnx8bWVkaXVtLmNvbQoubWVldGF2LmNvbQp8fG1lZXR1cC5jb20KbWVmZWVkaWEuY29tCmppaGFkaW50ZWwubWVmb3J1bS5vcmcKfHxtZWdhLm56Cnx8bWVnYXByb3h5LmNvbQp8fG1lZ2Fyb3RpYy5jb20KbWVnYXZpZGVvLmNvbQp8fG1lZ3VyaW5lbHVrYS5jb20KbWVpcml4aWFvY2hhby5jb20KLm1lbHRvZGF5LmNvbQoubWVtZWhrLmNvbQp8fG1lbWVoay5jb20KbWVtb3J5YmJzLmNvbQoubWVtcmkub3JnCi5tZW1yaWp0dG0ub3JnCi5tZXJjeXByb3BoZXQub3JnCnxodHRwOi8vbWVyY3lwcm9waGV0Lm9yZwp8fG1lcmdlcnNhbmRpbnF1aXNpdGlvbnMub3JnCi5tZXJpZGlhbi10cnVzdC5vcmcKfGh0dHA6Ly9tZXJpZGlhbi10cnVzdC5vcmcKLm1lcmlwZXQuYml6CnxodHRwOi8vbWVyaXBldC5iaXoKLm1lcmlwZXQuY29tCnxodHRwOi8vbWVyaXBldC5jb20KbWVyaXQtdGltZXMuY29tLnR3Cm1lc2hyZXAuY29tCi5tZXNvdHcuY29tL2JicwptZXRhY2FmZS5jb20vd2F0Y2gKfHxtZXRlb3JzaG93ZXJzb25saW5lLmNvbQp8aHR0cDovL3d3dy5tZXRyby50YWlwZWkvCi5tZXRyb2hrLmNvbS5oay8/Y21kPWRldGFpbCZjYXRlZ29yeUlEPTIKfHxtZXRyb2xpZmUuY2EKLm1ldHJvcmFkaW8uY29tLmhrCnxodHRwOi8vbWV0cm9yYWRpby5jb20uaGsKbWV5b3UuanAKLm1leXVsLmNvbQp8fG1nb29uLmNvbQp8fG1nc3RhZ2UuY29tCnx8bWg0dS5vcmcKbWhyYWRpby5vcmcKfGh0dHA6Ly9taWNoYWVsYW50aS5jb20KfHxtaWNoYWVsbWFya2V0bC5jb20KfGh0dHA6Ly9iYnMubWlrb2Nvbi5jb20KLm1pY3JvdnBuLmNvbQp8aHR0cDovL21pY3JvdnBuLmNvbQptaWRkbGUtd2F5Lm5ldAoubWloay5oay9mb3J1bQoubWloci5jb20KbWlodWEub3JnCiEtLUlQCnx8bWlrZXNvbHR5cy5jb20KLm1pbHBoLm5ldAp8aHR0cDovL21pbHBoLm5ldAoubWlsc3VycHMuY29tCm1pbWlhaS5uZXQKLm1pbWl2aXAuY29tCi5taW1pdnYuY29tCi5taW5kcm9sbGluZy5vcmcKfGh0dHA6Ly9taW5kcm9sbGluZy5vcmcKfHxtaW5nZGVtZWRpYS5vcmcKLm1pbmdodWkub3Iua3IKfGh0dHA6Ly9taW5naHVpLm9yLmtyCm1pbmdodWkub3JnCnx8bWluZ2h1aS5vcmcKbWluZ2h1aS1hLm9yZwptaW5naHVpLWIub3JnCm1pbmdodWktc2Nob29sLm9yZwoubWluZ2ppbmdsaXNoaS5jb20KfHxtaW5namluZ2xpc2hpLmNvbQptaW5namluZ25ld3MuY29tCnx8bWluZ2ppbmd0aW1lcy5jb20KLm1pbmdwYW8uY29tCnx8bWluZ3Bhby5jb20KLm1pbmdwYW9jYW5hZGEuY29tCi5taW5ncGFvbW9udGhseS5jb20KfGh0dHA6Ly9taW5ncGFvbW9udGhseS5jb20KbWluZ3Bhb25ld3MuY29tCi5taW5ncGFvbnkuY29tCi5taW5ncGFvc2YuY29tCi5taW5ncGFvdG9yLmNvbQoubWluZ3Bhb3Zhbi5jb20KLm1pbmdzaGVuZ2Jhby5jb20KLm1pbmhodWUubmV0Ci5taW5pZm9ydW0ub3JnCi5taW5pc3RyeWJvb2tzLm9yZwoubWluemh1aHVhLm5ldAp8fG1pbnpodWh1YS5uZXQKbWluemh1emhhbnhpYW4uY29tCm1pbnpodXpob25nZ3VvLm9yZwp8fG1pcm9ndWlkZS5jb20KbWlycm9yYm9va3MuY29tCi5taXN0LnZpcAp8fHRoZWNlbnRlci5taXQuZWR1Cnx8c2NyYXRjaC5taXQuZWR1Ci5taXRhby5jb20udHcKLm1pdGJicy5jb20KfHxtaXRiYnMuY29tCm1pdGJic2F1LmNvbQoubWl4ZXJvLmNvbQp8fG1peGVyby5jb20KbWl4cG9kLmNvbQoubWl4eC5jb20KfHxtaXh4LmNvbQp8fG1penptb25hLmNvbQoubWs1MDAwLmNvbQoubWxjb29sLmNvbQp8fG1senMud29yawoubW0tY2cuY29tCnx8bW1hYXh4LmNvbQoubW1tY2EuY29tCm1uZXdzdHYuY29tCnx8bW9iYXRlay5uZXQKLm1vYmlsZTAxLmNvbQp8fG1vYmlsZTAxLmNvbQp8fG1vYmlsZXdheXMuZGUKLm1vYnlwaWN0dXJlLmNvbQp8aHR0cDovL21vYnkudG8KfHxtb2Vlcm9saWJyYXJ5LmNvbQp3aWtpLm1vZWdpcmwub3JnCi5tb2ZheGllaHVpLmNvbQoubW9mb3MuY29tCnx8bW9nLmNvbQptb2xpaHVhLm9yZwp8fG1vbmRleC5vcmcKLm1vbmV5LWxpbmsuY29tLnR3CnxodHRwOi8vbW9uZXktbGluay5jb20udHcKfGh0dHA6Ly93d3cubW9ubGFtaXQub3JnCi5tb29uYmJzLmNvbQp8fG1vb25iYnMuY29tCmMxNTIyLm1vb28uY29tCnx8bW9uaXRvcmNoaW5hLm9yZwpiYnMubW9yYmVsbC5jb20KfHxtb3JuaW5nc3VuLm9yZwp8fG1vcm9uZXRhLmNvbQoubW90aGVybGVzcy5jb20KfGh0dHA6Ly9tb3RoZXJsZXNzLmNvbQptb3RvcjRpay5ydQoubW91c2VicmVha2VyLmNvbQohLS18fG1vdmFibGV0eXBlLmNvbQoubW92ZW1lbnRzLm9yZwp8fG1vdmVtZW50cy5vcmcKfHxtb3ZpZWZhcC5jb20KfHx3d3cubW96dHcub3JnCi5tcDNidXNjYWRvci5jb20KbXAzeWUuZXUKfHxtcGV0dGlzLmNvbQptcGZpbmFuY2UuY29tCm1waW5ld3MuY29tCm1wb25saW5lLmhrCi5tcXhkLm9yZwp8aHR0cDovL21xeGQub3JnCm1ydHdlZXQuY29tCnx8bXJ0d2VldC5jb20KbmV3cy5oay5tc24uY29tCm5ld3MubXNuLmNvbS50dwptc2d1YW5jaGEuY29tCi5tc3dlMS5vcmcKfGh0dHA6Ly9tc3dlMS5vcmcKfHxtdGhydWYuY29tCnx8bXViaS5jb20KbXVjaG9zdWNrby5jb20KfHxtdWx0aXBseS5jb20KbXVsdGlwcm94eS5vcmcKbXVsdGl1cGxvYWQuY29tCi5tdWxsdmFkLm5ldAp8fG11bGx2YWQubmV0Ci5tdW1teXNnb2xkLmNvbQoubXVybXVyLnR3CnxodHRwOi8vbXVybXVyLnR3Ci5tdXNpY2FkZS5uZXQKLm11c2xpbXZpZGVvLmNvbQp8fG11emkuY29tCnx8bXV6aS5uZXQKfHxteDk4MS5jb20KLm15LWZvcm1vc2EuY29tCi5teS1wcm94eS5jb20KLm15LXByaXZhdGUtbmV0d29yay5jby51awp8fG15LXByaXZhdGUtbmV0d29yay5jby51awpmb3J1bS5teTkwMy5jb20KLm15YWN0aW1lcy5jb20vYWN0aW1lcwp8fG15YW5uaXUuY29tCi5teWF1ZGlvY2FzdC5jb20KfHxteWF1ZGlvY2FzdC5jb20KLm15YXYuY29tLnR3L2JicwoubXliYnMudXMKLm15Y2ExNjguY29tCi5teWNhbmFkYW5vdy5jb20KfHxiYnMubXljaGF0LnRvCnx8bXljaGluYW15aG9tZS5jb20KLm15Y2hpbmFteWhvbWUuY29tCi5teWNoaW5hbmV0LmNvbQoubXljaGluYW5ld3MuY29tCnx8bXljaGluYW5ld3MuY29tCi5teWNoaW5lc2UubmV3cwp8fG15Y25uZXdzLmNvbQp8fG15a29taWNhLm9yZwpteWNvdWxkLmNvbS9kaXNjdXoKLm15ZWFzeXR2LmNvbQp8fG15ZWNsaXBzZWlkZS5jb20KLm15Zm9ydW0uY29tLmhrCnx8bXlmb3J1bS5jb20uaGsKfHxteWZvcnVtLmNvbS51awoubXlmcmVlY2Ftcy5jb20KLm15ZnJlZXBheXNpdGUuY29tCi5teWZyZXNobmV0LmNvbQoubXlpcGhpZGUuY29tCnx8bXlpcGhpZGUuY29tCmZvcnVtLm15bWFqaS5jb20KbXltZWRpYXJvbS5jb20vZmlsZXMvYm94Cnx8bXltb2UubW9lCnx8bXltdXNpYy5uZXQudHcKfHxteXBhcmFnbGlkaW5nLmNvbQp8fG15cG9wZXNjdS5jb20KbXlyYWRpby5oay9wb2RjYXN0Ci5teXJlYWRpbmdtYW5nYS5pbmZvCm15c2luYWJsb2cuY29tCi5teXNwYWNlLmNvbQohLS0uYmxvZ3MubXlzcGFjZS5jb20KIS0tfHxibG9ncy5teXNwYWNlLmNvbQohLS12aWRzLm15c3BhY2UuY29tL2luZGV4LmNmbT9mdXNlYWN0aW9uPXZpZHMuCiEtLXZpZXdtb3JlcGljcy5teXNwYWNlLmNvbQp8fG15c3BhY2VjZG4uY29tCi5teXRhbGtib3guY29tCi5teXRpemkuY29tCgohLS0tLS0tLS0tLS0tLS0tLS0tLS1OTi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfHxuYWFjb2FsaXRpb24ub3JnCm9sZC5uYWJibGUuY29tCnx8bmFpdGlrLm5ldAoubmFrdXouY29tL2Jicwp8fG5hbGFuZGFib2RoaS5vcmcKfHxuYWxhbmRhd2VzdC5vcmcKLm5hbWd5YWwub3JnCm5hbWd5YWxtb25hc3Rlcnkub3JnCnx8bmFtc2lzaS5jb20KLm5hbnlhbmcuY29tCnx8bmFueWFuZy5jb20KLm5hbnlhbmdwb3N0LmNvbQp8fG5hbnlhbmdwb3N0LmNvbQoubmFuemFvLmNvbQohLS0ubmFuemFvLmNvbS9zYy9jaGluYS8yMDIyMwohLS0ubmFuemFvLmNvbS9zYy9oay1tYWNhdS10dwp8fGpwbC5uYXNhLmdvdgp8fHBkcy5uYXNhLmdvdgp8fHNvbGFyc3lzdGVtLm5hc2EuZ292Ci5uYWtpZG8uY29tCnx8bmFraWRvLmNvbQoubmFvbC5jYQoubmFvbC5jYwp1aWdodXIubmFyb2QucnUKLm5hdC5tb2UKfHxuYXQubW9lCmN5YmVyZ2hvc3QubmF0YWRvLmNvbQp8fG5hdGlvbmFsLWxvdHRlcnkuY28udWsKfHxuYXRpb25hbGF3YWtlbmluZy5vcmcKbmV3cy5uYXRpb25hbGdlb2dyYXBoaWMuY29tL25ld3MvMjAxNC8wNi8xNDA2MDMtdGlhbmFubWVuLXNxdWFyZQoubmF0aW9uc29ubGluZS5vcmcvb25ld29ybGQvdGliZXQKfHxsaW5lLm5hdmVyLmpwCnx8bmF2eWZhbWlseS5uYXZ5Lm1pbAp8fG5hdnlyZXNlcnZlLm5hdnkubWlsCnx8bmtvLm5hdnkubWlsCnx8dXNuby5uYXZ5Lm1pbApuYXdlZWtseXRpbWVzLmNvbQoubmJ0dnBuLmNvbQp8aHR0cDovL25idHZwbi5jb20KbmNjd2F0Y2gub3JnLnR3Ci5uY2guY29tLnR3Ci5uY24ub3JnCnx8bmNuLm9yZwp8fGV0b29scy5uY29sLmNvbQoubmRlLmRlCi5uZHIuZGUKLm5lZC5vcmcKfHxuZWtvc2xvdmFraWEubmV0Cnx8bmVwdXNva3UuY29tCnx8bmV0LWZpdHMucHJvCiEtLWJic25ldy5uZXRiaWcuY29tCmJicy5uZXRiaWcuY29tCi5uZXRiaXJkcy5jb20KbmV0Y29sb255LmNvbQpib2xpbi5uZXRmaXJtcy5jb20KfHxuZXRtZS5jYwpuZXRzbmVhay5jb20KLm5ldHdvcms1NC5jb20KbmV0d29ya2VkYmxvZ3MuY29tCi5uZXR3b3JrdHVubmVsLm5ldApuZXZlcmZvcmdldDg5NjQub3JnCm5ldy0zbHVuY2gubmV0Ci5uZXctYWtpYmEuY29tCi5uZXc5Ni5jYQoubmV3Y2VudHVyeW1jLmNvbQp8aHR0cDovL25ld2NlbnR1cnltYy5jb20KbmV3Y2VudHVyeW5ld3MuY29tCnx8bmV3Y2hlbi5jb20KLm5ld2NoZW4uY29tCi5uZXdncm91bmRzLmNvbQpuZXdpcG5vdy5jb20KLm5ld2xhbmRtYWdhemluZS5jb20uYXUKLm5ld25ld3MuY2EKbmV3czEwMC5jb20udHcKbmV3c2NoaW5hY29tbWVudC5vcmcKLm5ld3Njbi5vcmcKfHxuZXdzY24ub3JnCm5ld3NwZWFrLmNjL3N0b3J5Ci5uZXdzYW5jYWkuY29tCnx8bmV3c2FuY2FpLmNvbQoubmV3c2RldG94LmNhCi5uZXdzZGguY29tCnx8bmV3c3RhbWFnby5jb20KfHxuZXdzdGFwYS5vcmcKbmV3c3Rhcm5ldC5jb20KLm5ld3RhaXdhbi5jb20udHcKbmV3dGFsay50dwp8fG5ld3RhbGsudHcKbmV3eW9ya3RpbWVzLmNvbQp8fG5leG9uLmNvbQoubmV4dDExLmNvLmpwCi5uZXh0bWFnLmNvbS50dwoKIS0taGsqLm5leHRtZWRpYS5jb20KIS0tdHcqLm5leHRtZWRpYS5jb20KIS0tc3RhdGljKi5uZXh0bWVkaWEuY29tCi5uZXh0bWVkaWEuY29tCgp8fG5leHRvbi1uZXQuanAKbmV4dHR2LmNvbS50dwoubmZqdHlkLmNvbQp8fGNvLm5nLm1pbAp8fG5nYS5taWwKbmdlbnNpcy5jb20KLm5oZW50YWkubmV0CnxodHRwOi8vbmhlbnRhaS5uZXQKLm5oay1vbmRlbWFuZC5qcAoubmljb3ZpZGVvLmpwL3dhdGNoCnx8bmljb3ZpZGVvLmpwCnx8bmlnaG9zdC5vcmcKYXYubmlnaHRsaWZlMTQxLmNvbQpuaW5lY29tbWVudGFyaWVzLmNvbQoubmluamFjbG9hay5jb20KfHxuaW5qYXByb3h5Lm5pbmphCm5pbnRlbmRpdW0uY29tCnRhaXdhbnllcy5uaW5nLmNvbQp1c21ndGNnLm5pbmcuY29tL2ZvcnVtCnx8bml1c25ld3MuY29tCnx8bmphY3RiLm9yZwpuanVpY2UuY29tCnx8bmp1aWNlLmNvbQpubGZyZWV2cG4uY29tCgohLS1uby1pcC5jb20jTk9JUAouZGRucy5uZXQvCi5nb29kZG5zLmluZm8KfHxnb3RkbnMuY2gKLm1haWxkbnMueHl6Ci5uby1pcC5vcmcKLm9wZW5kbi54eXoKLnNlcnZlaHR0cC5jb20Kc3l0ZXMubmV0Ci53aG9kbnMueHl6Ci56YXB0by5vcmcKfGh0dHA6Ly9keW51cGRhdGUubm8taXAuY29tLwoKfHxub2JlbC5zZQohLS0ubm9iZWxwcml6ZS5vcmcKIS0tfGh0dHA6Ly9ub2JlbHByaXplLm9yZwpub2JlbHByaXplLm9yZy9ub2JlbF9wcml6ZXMvcGVhY2UvbGF1cmVhdGVzLzE5ODkKbm9iZWxwcml6ZS5vcmcvbm9iZWxfcHJpemVzL3BlYWNlL2xhdXJlYXRlcy8yMDEwCm5vYm9keWNhbnN0b3AudXMKfHxub2JvZHljYW5zdG9wLnVzCnx8bm9rb2dpcmkub3JnCnx8bm9rb2xhLmNvbQpub29kbGV2cG4uY29tCi5ub3JidWxpbmdrYS5vcmcKbm9yZHZwbi5jb20KfHxub3JkdnBuLmNvbQp8fG5vdmVsYXNpYS5jb20KLm5ld3Mubm93LmNvbQp8aHR0cDovL25ld3Mubm93LmNvbQohLS18aHR0cDovL25ld3Mubm93LmNvbS9ob21lKgpuZXdzLm5vdy5jb20lMkZob21lCnx8bm93bmV3cy5jb20KLm5vd3RvcnJlbnRzLmNvbQoubm95cGYuY29tCnx8bm95cGYuY29tCnx8bnBhLmdvLmpwCi5ucG50Lm1lCnxodHRwOi8vbnBudC5tZQoubnBzLmdvdgoubnJhZGlvLm1lCnxodHRwOi8vbnJhZGlvLm1lCi5ucmsubm8KfHxucmsubm8KLm50ZC50dgp8fG50ZC50dgohIS0tT3JpZzpudGR0di5jb20KLm50ZHR2LmNvbQp8fG50ZHR2LmNvbQoubnRkdHYuY28ua3IKbnRkdHYuY2EKbnRkdHYub3JnCm50ZHR2LnJ1Cm50ZHR2bGEuY29tCi5udHJmdW4uY29tCnx8Y2JzLm50dS5lZHUudHcKfHxtZWRpYS5udS5ubAoubnViaWxlcy5uZXQKfHxudWV4cG8uY29tCi5udWtpc3RyZWFtLmNvbQp8fG51cmdvLXNvZnR3YXJlLmNvbQp8fG51dGFrdS5uZXQKLm51dmlkLmNvbQp8fG52ZHN0LmNvbQpudXpjb20uY29tCi5udnF1YW4ub3JnCi5udnRvbmd6aGlzaGVuZy5vcmcKfGh0dHA6Ly9udnRvbmd6aGlzaGVuZy5vcmcKLm53dGNhLm9yZwp8aHR0cDovL255YWEuZXUKfHxueWFhLnNpCi5ueWR1cy5jYQpueWxvbi1hbmdlbC5jb20Kbnlsb25zdG9ja2luZ3NvbmxpbmUuY29tCiEtLW55c2luZ3Rhby5jb20KLm56Y2hpbmVzZS5jb20KfHxuemNoaW5lc2UubmV0Lm56CgohLS0tLS0tLS0tLS0tLS0tLS0tLS1PTy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kb2JzZXJ2ZWNoaW5hLm5ldAoub2J1dHUuY29tCm9jYXNwcm8uY29tCm9jY3VweXRpYW5hbm1lbi5jb20Kb2NscC5oawoub2NyZWFtcGllcy5jb20KfHxvY3RvYmVyLXJldmlldy5vcmcKb2ZmYmVhdGNoaW5hLmNvbQpvZmZpY2VvZnRpYmV0LmNvbQp8aHR0cDovL29maWxlLm9yZwp8fG9nYW9nYS5vcmcKdHd0cjJzcmMub2dhb2dhLm9yZwoub2dhdGUub3JnCnx8b2dhdGUub3JnCnd3dzIub2hjaHIub3JnL2VuZ2xpc2gvYm9kaWVzL2NhdC9kb2NzL25nb3MvSUlfQ2hpbmFfNDEucGRmCi5vaWtvcy5jb20udHcvdjQKLm9pa3R2LmNvbQpvaXpvYmxvZy5jb20KLm9rLnJ1Cnx8b2sucnUKLm9rYXlmcmVlZG9tLmNvbQp8fG9rYXlmcmVlZG9tLmNvbQpva2sudHcKfGh0dHA6Ly9maWxteS5vbGFibG9nYS5wbC9wbGF5ZXIKb2xkLWNhdC5uZXQKfHxvbHVtcG8uY29tCi5vbHltcGljd2F0Y2gub3JnCm9tZ2lsaS5jb20KfHxvbW5pdGFsay5jb20KfHxvbW5pdGFsay5vcmcKY2xpbmcub215LnNnCmZvcnVtLm9teS5zZwpuZXdzLm9teS5zZwpzaG93Yml6Lm9teS5zZwp8fG9uLmNjCnx8b25lZHJpdmUubGl2ZS5jb20KfHxvbmlvbi5jaXR5Ci5vbmxpbmVjaGEuY29tCnx8b25saW5leW91dHViZS5jb20KLm9ubHl0d2VldHMuY29tCnxodHRwOi8vb25seXR3ZWV0cy5jb20Kb25tb29uLm5ldApvbm1vb24uY29tCi5vbnRoZWh1bnQuY29tCnxodHRwOi8vb250aGVodW50LmNvbQoub29wc2ZvcnVtLmNvbQpvcGVuLmNvbS5oawpvcGVuYWxsd2ViLmNvbQpvcGVuZGVtb2NyYWN5Lm5ldAp8fG9wZW5kZW1vY3JhY3kubmV0Ci5vcGVuZXJ2cG4uaW4Kb3BlbmlkLm5ldAp8fG9wZW5pZC5uZXQKLm9wZW5sZWFrcy5vcmcKfHxvcGVubGVha3Mub3JnCm9wZW52cG4ubmV0Cnx8b3BlbnZwbi5uZXQKfHxvcGVud2Vic3Rlci5jb20KLm9wZW53cnQub3JnLmNuCkBAfHxvcGVud3J0Lm9yZy5jbgpteS5vcGVyYS5jb20vZGFoZW1hCnx8ZGVtby5vcGVyYS1taW5pLm5ldAoub3B1cy1nYW1pbmcuY29tCnxodHRwOi8vb3B1cy1nYW1pbmcuY29tCnd3dy5vcmNoaWRiYnMuY29tCi5vcmdhbmNhcmUub3JnLnR3Cm9yZ2FuaGFydmVzdGludmVzdGlnYXRpb24ubmV0Ci5vcmdhc20uY29tCi5vcmdmcmVlLmNvbQp8fG9yaWVudC1kb2xsLmNvbQpvcmllbnRhbGRhaWx5LmNvbS5teQp8fG9yaWVudGFsZGFpbHkuY29tLm15CiEtLW9yaWVudGFsZGFpbHkub24uY2MKfHxvcm4uanAKdC5vcnpkcmVhbS5jb20KfHx0Lm9yemRyZWFtLmNvbQp0dWkub3J6ZHJlYW0uY29tCnx8b3J6aXN0aWMub3JnCnx8b3Nmb29yYS5jb20KLm90bmQub3JnCnx8b3RuZC5vcmcKfHxvdHRvLmRlCnx8b3VyZGVhcmFteS5jb20Kb3Vyc29nby5jb20KLm91cnN0ZXBzLmNvbS5hdQp8fG91cnN0ZXBzLmNvbS5hdQoub3Vyc3dlYi5uZXQKfHxvdXJ0di5oawp4aW5xaW1lbmcub3Zlci1ibG9nLmNvbQp8fG92ZXJwbGF5Lm5ldApzaGFyZS5vdmkuY29tL21lZGlhCnxodHRwOi8vb3dsLmxpCnxodHRwOi8vaHQubHkKfGh0dHA6Ly9odGwubGkKfGh0dHA6Ly9tYXNoLnRvCnd3dy5vd2luZC5jb20KfGh0dHA6Ly93d3cub3hpZC5pdApveWF4LmNvbQpveWdoYW4uY29tL3dwcwoub3pjaGluZXNlLmNvbS9iYnMKfHxvdy5seQpiYnMub3pjaGluZXNlLmNvbQoub3p2b2ljZS5vcmcKfHxvenZvaWNlLm9yZwoub3p4dy5jb20KLm96eW95by5jb20KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLVBQLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp8fHBhY2hvc3RpbmcuY29tCi5wYWNpZmljcG9rZXIuY29tCi5wYWNrZXRpeC5uZXQKfHxwYWNvcGFjb21hbWEuY29tCi5wYWRtYW5ldC5jb20KcGFnZTJyc3MuY29tCnx8cGFnb2RhYm94LmNvbQoucGFsYWNlbW9vbi5jb20KZm9ydW0ucGFsbWlzbGlmZS5jb20KfHxlcml2ZXJzb2Z0LmNvbQoucGFsZGVuZ3lhbC5jb20KcGFsam9ycHVibGljYXRpb25zLmNvbQoucGFsdGFsay5jb20KIS0tfHxwYW5nY2kubmV0Cnx8cGFuZGFwb3cuY28KLnBhbmRhcG93Lm5ldAoucGFuZGF2cG4tanAuY29tCi5wYW5sdWFuLm5ldAp8fHBhbmx1YW4ubmV0Cnx8cGFvLXBhby5uZXQKcGFwZXIubGkKcGFwZXJiLnVzCi5wYXJhZGlzZWhpbGwuY2MKLnBhcmFkaXNlcG9rZXIuY29tCnx8cGFybGVyLmNvbQp8fHBhcnNldmlkZW8uY29tCi5wYXJ0eWNhc2luby5jb20KLnBhcnR5cG9rZXIuY29tCi5wYXNzaW9uLmNvbQp8fHBhc3Npb24uY29tCi5wYXNzaW9udGltZXMuaGsKcGFzdGViaW4uY29tCi5wYXN0aWUub3JnCnx8cGFzdGllLm9yZwp8fGJsb2cucGF0aHRvc2hhcmVwb2ludC5jb20KcGJzLm9yZy93Z2JoL3BhZ2VzL2Zyb250bGluZS9nYXRlCnBicy5vcmcvd2diaC9wYWdlcy9mcm9udGxpbmUvdGFua21hbgpwYnMub3JnL3dnYmgvcGFnZXMvZnJvbnRsaW5lL3RpYmV0CnZpZGVvLnBicy5vcmcKCiEtLVBid2lraQpwYndpa2kuY29tCnx8cGJ3b3Jrcy5jb20KfHxkZXZlbG9wZXJzLmJveC5uZXQKfHx3aWtpLm9hdXRoLm5ldAp8fHdpa2kucGhvbmVnYXAuY29tCnx8d2lraS5qcXVlcnl1aS5jb20KCnx8cGJ4ZXMuY29tCnx8cGJ4ZXMub3JnCnBjZHZkLmNvbS50dwoucGNob21lLmNvbS50dwp8aHR0cDovL3BjaWoub3JnCi5wY3N0b3JlLmNvbS50dwp8fHBjdC5vcmcudHcKcGRldGFpbHMuY29tCnx8cGRwcm94eS5jb20KfHxwZWFjZS5jYQpwZWFjZWZpcmUub3JnCnBlYWNlaGFsbC5jb20KfHxwZWFjZWhhbGwuY29tCnxodHRwOi8vcGVhcmxoZXIub3JnCi5wZWVhc2lhbi5jb20KLnBla2luZ2R1Y2sub3JnCnx8cGVraW5nZHVjay5vcmcKLnBlbXVsaWhhbi5vci5pZAp8aHR0cDovL3BlbXVsaWhhbi5vci5pZAp8fHBlbi5pbwpwZW5jaGluZXNlLmNvbQp8fHBlbmNoaW5lc2UubmV0Ci5wZW5jaGluZXNlLm5ldApwZW5neXVsb25nLmNvbQpwZW5pc2JvdC5jb20KfHxibG9nLnBlbnRhbG9naWMubmV0Ci5wZW50aG91c2UuY29tCi5wZW50b3kuaGsvJUU0JUI4JUFEJUU1JTlDJThCCi5wZW50b3kuaGsvJUU2JTk5JTgyJUU0JUJBJThCCi5wZW9wbGVib29rY2FmZS5jb20KLnBlb3BsZW5ld3MudHcKfHxwZW9wbGVuZXdzLnR3Ci5wZW9wby5vcmcKfHxwZW9wby5vcmcKLnBlcmN5LmluCi5wZXJmZWN0Z2lybHMubmV0CnBlcmZlY3R2cG4ubmV0Ci5wZXJzZWN1dGlvbmJsb2cuY29tCi5wZXJzaWFua2l0dHkuY29tCnBmZC5vcmcuaGsKcGhhcGx1YW4ub3JnCnBoYXl1bC5jb20KcGhpbGJvcmdlcy5jb20KcGhpbGx5LmNvbQp8fHBobmNkbi5jb20KfHxwaG90b2RoYXJtYS5uZXQKfHxwaG90b2ZvY3VzLmNvbQp8fHBodXF1b2NzZXJ2aWNlcy5jb20KfHxwaWNhY29taWNjbi5jb20KLnBpY2lkYWUubmV0Cnx8aW1nKi5waWN0dXJlZGlwLmNvbQpwaWN0dXJlc29jaWFsLmNvbQp8fHBpbi1jb25nLmNvbQoucGluNi5jb20KfHxwaW42LmNvbQoucGluZy5mbQp8fHBpbmcuZm0KfHxwaW5pbWcuY29tCi5waW5rcm9kLmNvbQp8fHBpbm95LW4uY29tCnx8cGludGVyZXN0LmF0Cnx8cGludGVyZXN0LmNhCnx8cGludGVyZXN0LmNvLmtyCnx8cGludGVyZXN0LmNvLnVrCi5waW50ZXJlc3QuY29tCnx8cGludGVyZXN0LmNvbQp8fHBpbnRlcmVzdC5kZQp8fHBpbnRlcmVzdC5kawp8fHBpbnRlcmVzdC5mcgp8fHBpbnRlcmVzdC5qcAp8fHBpbnRlcmVzdC5ubAp8fHBpbnRlcmVzdC5zZQoucGlwaWkudHYKLnBpcG9zYXkuY29tCnBpcmFhdHRpbGFodGkub3JnCi5waXJpbmcuY29tCnx8cGl4ZWxxaS5jb20KfHxjc3MucGl4bmV0LmluCnx8cGl4bmV0Lm5ldAoucGl4bmV0Lm5ldAoucGsuY29tCnx8cGxhY2VtaXguY29tCiEtLS5wbGFuZXRzdXp5Lm9yZwp8aHR0cDovL3BpY3R1cmVzLnBsYXlib3kuY29tCnx8cGxheWJveS5jb20KLnBsYXlib3lwbHVzLmNvbQp8fHBsYXlib3lwbHVzLmNvbQp8fHBsYXllci5mbQoucGxheW5vMS5jb20KfHxwbGF5bm8xLmNvbQp8fHBsYXlwY2Vzb3IuY29tCnBsYXlzLmNvbS50dwp8fG0ucGxpeGkuY29tCnBsbS5vcmcuaGsKcGx1bmRlci5jb20KLnBsdXJrLmNvbQp8fHBsdXJrLmNvbQoucGx1czI4LmNvbQoucGx1c2JiLmNvbQoucG1hdGVodW50ZXIuY29tCnxodHRwOi8vcG1hdGVodW50ZXIuY29tCi5wbWF0ZXMuY29tCnx8cG8yYi5jb20KcG9iaWVyYW15LnRvcAohLS18fHBvY29vLm9yZwp8fHBvZGljdGlvbmFyeS5jb20KLnBva2Vyc3RhcnMuY29tCnx8cG9rZXJzdGFycy5jb20KLnBva2Vyc3RhcnMubmV0CnpoLnBva2Vyc3RyYXRlZ3kuY29tCnBvbGl0aWNhbGNoaW5hLm9yZwpwb2xpdGljYWxjb25zdWx0YXRpb24ub3JnCi5wb2xpdGlzY2FsZXMubmV0Cnx8cG9sb25pZXguY29tCi5wb2x5bWVyaGsuY29tCnxodHRwOi8vcG9seW1lcmhrLmNvbQoucG9wby50dwohLS18fHBvcHVsYXJwYWdlcy5uZXQKfHxwb3B2b3RlLmhrCi5wb3B5YXJkLmNvbQp8fHBvcHlhcmQub3JnCi5wb3JuLmNvbQoucG9ybjIuY29tCi5wb3JuNS5jb20KLnBvcm5iYXNlLm9yZwoucG9ybmVyYnJvcy5jb20KfHxwb3JuaGQuY29tCi5wb3JuaG9zdC5jb20KLnBvcm5odWIuY29tCnx8cG9ybmh1Yi5jb20KLnBvcm5odWJkZXV0c2NoLm5ldAp8aHR0cDovL3Bvcm5odWJkZXV0c2NoLm5ldAp8fHBvcm5tbS5uZXQKLnBvcm5veG8uY29tCi5wb3JucmFwaWRzaGFyZS5jb20KfHxwb3JucmFwaWRzaGFyZS5jb20KLnBvcm5zaGFyaW5nLmNvbQp8aHR0cDovL3Bvcm5zaGFyaW5nLmNvbQoucG9ybnNvY2tldC5jb20KLnBvcm5zdGFyY2x1Yi5jb20KfHxwb3Juc3RhcmNsdWIuY29tCi5wb3JudHViZS5jb20KLnBvcm50dWJlbmV3cy5jb20KLnBvcm50dmJsb2cuY29tCnx8cG9ybnR2YmxvZy5jb20KLnBvcm52aXNpdC5jb20KLnBvcnRhYmxldnBuLm5sCnx8cG9za290YW5ld3MuY29tCi5wb3N0MDEuY29tCi5wb3N0NzYuY29tCnx8cG9zdDc2LmNvbQoucG9zdDg1Mi5jb20KcG9zdGFkdWx0LmNvbQoucG9zdGltZy5vcmcKfHxwb3R2cG4uY29tCnx8cG93ZXJjeC5jb20KLnBvd2VycGhvdG8ub3JnCnx8d3d3LnBvd2VycG9pbnRuaW5qYS5jb20KfHxwcmVzaWRlbnRsZWUudHcKfHxjZG4ucHJpbnRmcmllbmRseS5jb20KLnByaXR1bmwuY29tCnByb3ZwbmFjY291bnRzLmNvbQp8fHByb3ZwbmFjY291bnRzLmNvbQoucHJveGZyZWUuY29tCnx8cHJveGZyZWUuY29tCnByb3h5YW5vbmltby5lcwoucHJveHluZXR3b3JrLm9yZy51awp8fHByb3h5bmV0d29yay5vcmcudWsKfHxwdHMub3JnLnR3Ci5wdHR2YW4ub3JnCnB1YnUuY29tLnR3CnB1ZmZpbmJyb3dzZXIuY29tCnB1cmVpbnNpZ2h0Lm9yZwoucHVzaGNoaW5hd2FsbC5jb20KLnB1dHR5Lm9yZwp8fHB1dHR5Lm9yZwoKIS0tLS0tLS0tLS0tLS1Qb3N0ZXJvdXMtLS0tLQp8fGNhbGViZWxzdG9uLmNvbQp8fGJsb2cuZml6emlrLmNvbQp8fG5mLmlkLmF1Cnx8c29ncmFkeS5tZQp8fHZhdG4ub3JnCnx8dmVudHVyZXN3ZWxsLmNvbQp8fHdoZXJlaXN3ZXJuZXIuY29tCgoucG93ZXIuY29tCnx8cG93ZXIuY29tCnBvd2VyYXBwbGUuY29tCnx8cG93ZXJhcHBsZS5jb20KfHxhYmMucHAucnUKaGVpeC5wcC5ydQp8fHByYXlmb3JjaGluYS5uZXQKfHxwcmVtZWZvcndpbmRvd3M3LmNvbQp8fHByZXNlbnRhdGlvbnplbi5jb20KfHxwcmVzdGlnZS1hdi5jb20KcHJpc29uZXItc3RhdGUtc2VjcmV0LWpvdXJuYWwtcHJlbWllcgoucHJpc29uZXJhbGVydC5jb20KfHxwcml0dW5sLmNvbQp8fHByaXZhY3lib3guZGUKLnByaXZhdGUuY29tL2hvbWUKfHxwcml2YXRlaW50ZXJuZXRhY2Nlc3MuY29tCnByaXZhdGVwYXN0ZS5jb20KfHxwcml2YXRlcGFzdGUuY29tCnByaXZhdGV0dW5uZWwuY29tCnx8cHJpdmF0ZXR1bm5lbC5jb20KfHxwcml2YXRldnBuLmNvbQp8fHByb2NvcHl0aXBzLmNvbQpwcm92aWRlb2NvYWxpdGlvbi5jb20KfHxwcm9zaWJlbi5kZQpwcm94aWZpZXIuY29tCmFwaS5wcm94bGV0LmNvbQp8fHByb3hvbWl0cm9uLmluZm8KLnByb3hwbi5jb20KfHxwcm94cG4uY29tCi5wcm94eWxpc3Qub3JnLnVrCnx8cHJveHlsaXN0Lm9yZy51awoucHJveHlweS5uZXQKfHxwcm94eXB5Lm5ldApwcm94eXJvYWQuY29tCi5wcm94eXR1bm5lbC5uZXQKIS0tNDAzIG1heWJlCnx8cHJveWVjdG9jbHViZXMuY29tCnByb3p6Lm5ldApwc2Jsb2cubmFtZQp8fHBzYmxvZy5uYW1lCnx8cHNodnBuLmNvbQp8fHBzaXBob24uY2EKLnBzaXBob24zLmNvbQp8fHBzaXBob24zLmNvbQoucHNpcGhvbnRvZGF5LmNvbQoucHR0LmNjCnx8cHR0LmNjCi5wdWZmc3RvcmUuY29tCi5wdXVrby5jb20KfHxwdWxsZm9saW8uY29tCi5wdW55dS5jb20vcHVueQp8fHB1cmVjb25jZXB0cy5uZXQKfHxwdXJlaW5zaWdodC5vcmcKfHxwdXJlcGRmLmNvbQp8fHB1cmV2cG4uY29tCi5wdXJwbGVsb3R1cy5vcmcKLnB1cnN1ZXN0YXIuY29tCnx8cHVyc3Vlc3Rhci5jb20KLnB1c3N5c3BhY2UuY29tCi5wdXRpaG9tZS5vcmcKLnB1dGxvY2tlci5jb20vZmlsZQpwd25lZC5jb20KcHl0aG9uLmNvbQoucHl0aG9uLmNvbS50dwp8aHR0cDovL3B5dGhvbi5jb20udHcKcHl0aG9uaGFja2Vycy5jb20vcApzcy5weXRob25pYy5saWZlLwoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tUVEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5xYW5vdGUuY29tCnx8cWFub3RlLmNvbQoucWdpcmwuY29tLnR3Cnx8cWlhbmRhby50b2RheQoucWktZ29uZy5tZQp8fHFpLWdvbmcubWUKIS0tIzkyMQp8fHFpYW5neW91Lm9yZwoucWlkaWFuLmNhCi5xaWVua3Vlbi5vcmcKfHxxaWVua3Vlbi5vcmcKfHxxaXdlbi5sdQpxaXhpYW5nbHUuY24KYmJzLnFtemRkLmNvbQoucWtzaGFyZS5jb20KcW9vcy5jb20KfHxxb29zLmNvbQpibG9nLnFvb3phLmhrL2RhZmVuZ3FpeGkKfHxlZmtzb2Z0LmNvbQp8fHFzdGF0dXMuY29tCnx8cXR3ZWV0ZXIuY29tCnx8cXRyYWMuZXUKLnF1YW5uZW5nc2hlbi5vcmcKfGh0dHA6Ly9xdWFubmVuZ3NoZW4ub3JnCnF1YW50dW1ib290ZXIubmV0Cnx8cXVpdGNjcC5uZXQKLnF1aXRjY3AubmV0Cnx8cXVpdGNjcC5vcmcKLnF1aXRjY3Aub3JnCi5xdW9yYS5jb20vQ2hpbmFzLUZ1dHVyZQoucXVyYW4uY29tCnxodHRwOi8vcXVyYW4uY29tCi5xdXJhbmV4cGxvcmVyLmNvbQpxdXNpOC5uZXQKLnF2b2R6eS5vcmcKbmVtZXNpczIucXgubmV0L3BhZ2VzL015RW5UdW5uZWwKcXhiYnMub3JnCgohLS0tLS0tLS0tLS0tLS0tLS0tLS1SUi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLnJhLmdnCnxodHRwOi8vcmEuZ2cvCi5yYWRpY2FscGFydHkub3JnCnx8cmFlbC5vcmcKcmFkaWNhbHBhcnR5Lm9yZwp8fHJhZGlvLmdhcmRlbgpyYWRpb2F1c3RyYWxpYS5uZXQuYXUKLnJhZGlvaGlsaWdodC5uZXQKfHxyYWRpb2hpbGlnaHQubmV0Cm9wbWwucmFkaW90aW1lLmNvbQp8fHJhZGlvdmF0aWNhbmEub3JnCnx8cmFkaW92bmNyLmNvbQp8fHJhZ2dlZGJhbm5lci5jb20KfHxyYWlkY2FsbC5jb20udHcKLnJhaWR0YWxrLmNvbS50dwoucmFpbmJvd3BsYW4ub3JnL2Jicwp8aHR0cHM6Ly9yYWluZHJvcC5pby8KLnJhaXpvamkub3IuanAKfGh0dHA6Ly9yYWl6b2ppLm9yLmpwCnJhbmd3YW5nLmJpegpyYW5nemVuLmNvbQpyYW5nemVuLm5ldApyYW5nemVuLm9yZwp8aHR0cDovL2Jsb2cucmFueGlhbmcuY29tLwpyYW55dW5mZWkuY29tCnx8cmFueXVuZmVpLmNvbQoucmFwYnVsbC5uZXQKfGh0dHA6Ly9yYXBpZGdhdG9yLm5ldC8KfHxyYXBpZG1vdmllei5jb20KcmFwaWR2cG4uY29tCnx8cmFwaWR2cG4uY29tCnx8cmFyYmdwcngub3JnCi5yYXJlbW92aWUuY2MKfGh0dHA6Ly9yYXJlbW92aWUuY2MKLnJhcmVtb3ZpZS5uZXQKfGh0dHA6Ly9yYXJlbW92aWUubmV0Cnx8cmF3Z2l0LmNvbQp8fHJhd2dpdGh1Yi5jb20KIS0tLnJheWZtZS5jb20vYmJzCnx8cmF6eWJvYXJkLmNvbQpyY2luZXQuY2EKLnJlYWQxMDAuY29tCi5yZWFkaW5ndGltZXMuY29tLnR3Cnx8cmVhZGluZ3RpbWVzLmNvbS50dwp8fHJlYWRtb28uY29tCi5yZWFkeWRvd24uY29tCnxodHRwOi8vcmVhZHlkb3duLmNvbQoucmVhbGNvdXJhZ2Uub3JnCi5yZWFsaXR5a2luZ3MuY29tCnx8cmVhbGl0eWtpbmdzLmNvbQoucmVhbHJhcHRhbGsuY29tCi5yZWFsc2V4cGFzcy5jb20KfHxyZWFzb24uY29tCi5yZWNvcmRoaXN0b3J5Lm9yZwoucmVjb3Zlcnkub3JnLnR3CnxodHRwOi8vb25saW5lLnJlY292ZXJ5dmVyc2lvbi5vcmcKfHxyZWNvdmVyeXZlcnNpb24uY29tLnR3Cnx8cmVkLWxhbmcub3JnCnJlZGJhbGxvb25zb2xpZGFyaXR5Lm9yZwoucmVkY2hpbmFjbi5uZXQKfGh0dHA6Ly9yZWRjaGluYWNuLm5ldApyZWRjaGluYWNuLm9yZwpyZWR0dWJlLmNvbQpyZWZlcmVyLnVzCnx8cmVmZXJlci51cwp8fHJlZmxlY3RpdmVjb2RlLmNvbQpyZWxheGJicy5jb20KLnJlbGF5LmNvbS50dwoucmVsZWFzZWludGVybmF0aW9uYWwub3JnCnJlbGlnaW91c3RvbGVyYW5jZS5vcmcKcmVubWluYmFvLmNvbQp8fHJlbm1pbmJhby5jb20KLnJlbnl1cmVucXVhbi5vcmcKfHxyZW55dXJlbnF1YW4ub3JnCnxodHRwOi8vY2VydGlmaWNhdGUucmV2b2NhdGlvbmNoZWNrLmNvbQpzdWJhY21lLnJlcm91dGVkLm9yZwp8fHJlc2lsaW8uY29tCi5yZXV0ZXJzLmNvbQp8fHJldXRlcnMuY29tCnx8cmV1dGVyc21lZGlhLm5ldAoucmV2bGVmdC5jb20KfHxyZXNpc3RjaGluYS5vcmcKcmV0d2VldGlzdC5jb20KfHxyZXR3ZWV0cmFuay5jb20KIS0tY29ubmVjdGVkY2hpbmEucmV1dGVycy5jb20KIS0tfGh0dHA6Ly93d3cucmV1dGVycy5jb20vbmV3cy92aWRlbwpyZXZ2ZXIuY29tCi5yZmEub3JnCnx8cmZhLm9yZwoucmZhY2hpbmEuY29tCi5yZmFtb2JpbGUub3JnCnJmYXdlYi5vcmcKfHxyZmVybC5vcmcKLnJmaS5mcgp8fHJmaS5mcgp8aHR0cDovL3JmaS5teS8KIS0tLnJoY2xvdWQuY29tCiEtLUVkZ2VjYXN0CnxodHRwOi8vdmRzLnJpZ2h0c3Rlci5jb20vCi5yaWdwYS5vcmcKLnJpbGV5Z3VpZGUuY29tCnJpa3UubWUvCi5yaXRvdWtpLmpwCnx8cml0dGVyLnZnCi5ybHdsdy5jb20KfHxybHdsdy5jb20KLnJtamR3LmNvbQoucm1qZHcxMzIuaW5mbwoucm9hZHNob3cuaGsKLnJvYm9mb3JleC5jb20KfHxyb2J1c3RuZXNzaXNrZXkuY29tCiEtLXx8cm9jLXRhaXdhbi5vcmcKfHxyb2NrZXQtaW5jLm5ldAp8aHR0cDovL3d3dzIucm9ja2V0YmJzLmNvbS8xMS9iYnMuY2dpP2lkPTVtdXMKfGh0dHA6Ly93d3cyLnJvY2tldGJicy5jb20vMTEvYmJzLmNnaT9pZD1mcmVlbWdsCiEtLXx8cm9jbXAub3JnCnx8cm9qby5jb20KfHxyb25qb25lc3dyaXRlci5jb20KfHxyb2xpYS5uZXQKLnJvb2RvLmNvbQoucm9zZWNoaW5hLm5ldAoucm90dGVuLmNvbQoucnNmLm9yZwp8fHJzZi5vcmcKLnJzZi1jaGluZXNlLm9yZwp8fHJzZi1jaGluZXNlLm9yZwoucnNnYW1lbi5vcmcKfHxwaG9zcGhhdGlvbjEzLnJzc2luZy5jb20KLnJzc21lbWUuY29tCnx8cnNzbWVtZS5jb20KfHxydGFsYWJlbC5vcmcKLnJ0aGsuaGsKfGh0dHA6Ly9ydGhrLmhrCi5ydGhrLm9yZy5oawp8aHR0cDovL3J0aGsub3JnLmhrCi5ydGkub3JnLnR3Cnx8cnRpLm9yZy50dwoucnR5Y21pbm5lc290YS5vcmcKLnJ1YW55aWZlbmcuY29tL2Jsb2cqc29tZV93YXlzX3RvX2JyZWFrX3RoZV9ncmVhdF9maXJld2FsbApydWtvci5vcmcKLnJ1bmJ0eC5jb20KLnJ1c2hiZWUuY29tCi5ydXRlbi5jb20udHcKcnV0dWJlLnJ1Ci5ydXlpc2Vlay5jb20KLnJ4aGoubmV0CnxodHRwOi8vcnhoai5uZXQKCiEtLS0tLS0tLS0tLS0tLS0tLS0tLVNTLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQouczFzMXMxLmNvbQp8fHMtY3V0ZS5jb20KLnMtZHJhZ29uLm9yZwp8fHMxaGVuZy5jb20KfGh0dHA6Ly93d3cuczRtaW5pYXJjaGl2ZS5jb20KfHxzOGZvcnVtLmNvbQpjZG4xLmxwLnNhYm9vbS5jb20KfHxzYWNrcy5jb20Kc2Fjb20uaGsKfHxzYWNvbS5oawp8fHNhZHBhbmRhLnVzCi5zYWZlcnZwbi5jb20KfHxzYWZlcnZwbi5jb20KLnNhaW50eWN1bHR1cmUuY29tCnxodHRwOi8vc2FpbnR5Y3VsdHVyZS5jb20KLnNhaXEubWUKfHxzYWlxLm1lCnx8c2FrdXJhbGl2ZS5jb20KLnNha3lhLm9yZwouc2FsdmF0aW9uLm9yZy5oawp8fHNhbHZhdGlvbi5vcmcuaGsKLnNhbWFpci5ydS9wcm94eS90eXBlLTAxCi5zYW1iaG90YS5vcmcKLmNuLnNhbmRzY290YWljZW50cmFsLmNvbQp8aHR0cDovL2NuLnNhbmRzY290YWljZW50cmFsLmNvbQouc2FubWluLmNvbS50dwpzYXBpa2FjaHUubmV0CnNhdmVtZWRpYS5jb20KfHxzYXZldGhlc291bmRzLmluZm8KLnNhdmV0aWJldC5kZQp8fHNhdmV0aWJldC5kZQpzYXZldGliZXQuZnIKc2F2ZXRpYmV0Lm5sCi5zYXZldGliZXQub3JnCnx8c2F2ZXRpYmV0Lm9yZwpzYXZldGliZXQucnUKLnNhdmV0aWJldHN0b3JlLm9yZwp8fHNhdmV0aWJldHN0b3JlLm9yZwpzYXZldmlkLmNvbQp8fHNheTIuaW5mbwouc2JtZS5tZQp8aHR0cDovL3NibWUubWUKLnNicy5jb20uYXUveW91cmxhbmd1YWdlCi5zY2FzaW5vLmNvbQp8aHR0cDovL3d3dy5zY2llbmNlbWFnLm9yZy9jb250ZW50LzM0NC82MTg3Lzk1Mwouc2NpZW5jZW5ldHMuY29tCi5zY21wLmNvbQp8fHNjbXAuY29tCi5zY21wY2hpbmVzZS5jb20KfHxzY3JhbWJsZS5pbwouc2NyaWJkLmNvbQp8fHNjcmliZC5jb20KfHxzY3JpcHRzcG90LmNvbQpzZWFwdWZmLmNvbQpkb21haW5oZWxwLnNlYXJjaC5jb20KLnNlYXJjaHRydXRoLmNvbQpzZWNyZXRjaGluYS5jb20KfHxzZWNyZXRjaGluYS5jb20KfHxzZWNyZXRnYXJkZW4ubm8KLnNlY3JldHNsaW5lLmJpegp8fHNlY3JldHNsaW5lLmJpegp8fHNlY3VyZXR1bm5lbC5jb20Kc2VjdXJpdHlpbmFib3gub3JnCnxodHRwczovL3NlY3VyaXR5aW5hYm94Lm9yZwouc2VjdXJpdHlraXNzLmNvbQp8fHNlY3VyaXR5a2lzcy5jb20KfHxzZWVkNC5tZQpuZXdzLnNlZWh1YS5jb20Kc2Vlc21pYy5jb20KfHxzZWV2cG4uY29tCnx8c2Vlem9uZS5uZXQKc2VqaWUuY29tCi5zZW5kc3BhY2UuY29tCnxodHRwOi8vdHdlZXRzLnNlcmFwaC5tZS8Kc2VzYXdlLm5ldAp8fHNlc2F3ZS5uZXQKLnNlc2F3ZS5vcmcKfHxzZXRod2tsZWluLm5ldAouc2V0bi5jb20KLnNldHR2LmNvbS50dwpmb3J1bS5zZXR0eS5jb20udHcKLnNldmVubG9hZC5jb20KfHxzZXZlbmxvYWQuY29tCi5zZXguY29tCi5zZXgtMTEuY29tCnx8c2V4My5jb20KfHxzZXg4LmNjCi5zZXhhbmRzdWJtaXNzaW9uLmNvbQouc2V4Ym90LmNvbQouc2V4aHUuY29tCi5zZXhodWFuZy5jb20Kc2V4aW5zZXgubmV0Cnx8c2V4aW5zZXgubmV0Ci5zZXh0dnguY29tCgohLS1JUCBvZiBTZXhJblNleAo2Ny4yMjAuOTEuMTUKNjcuMjIwLjkxLjE4CjY3LjIyMC45MS4yMwoKfGh0dHA6Ly8qLnNmLm5ldAouc2ZpbGV5ZHkuY29tCnx8c2ZzaGliYW8uY29tCi5zZnRpbmRpYS5vcmcKLnNmdHVrLm9yZwp8fHNmdHVrLm9yZwp8fHNoYWRleW91dnBuLmNvbQpzaGFkb3cubWEKLnNoYWRvd3NreS54eXoKLnNoYWRvd3NvY2tzLmFzaWEKfHx3d3cuc2hhZG93c29ja3MuY29tCi5zaGFkb3dzb2Nrcy5jb20KfHxzaGFkb3dzb2Nrcy5jb20uaGsKLnNoYWRvd3NvY2tzLm9yZwp8fHNoYWRvd3NvY2tzLm9yZwp8fHNoYWRvd3NvY2tzLXIuY29tCnxodHRwOi8vY24uc2hhZmFxbmEuY29tCi5zaGFtYmFsYXBvc3QuY29tCi5zaGFtYmhhbGFzdW4uY29tCi5zaGFuZ2Zhbmcub3JnCnx8c2hhbmdmYW5nLm9yZwpzaGFwZXNlcnZpY2VzLmNvbQouc2hhcmViZWUuY29tCnx8c2hhcmVjb29sLm9yZwohLS18fHNoYXJrZG9scGhpbi5jb20Kc2hhcnBkYWlseS5jb20uaGsKfHxzaGFycGRhaWx5LmNvbS5oawouc2hhcnBkYWlseS5oawouc2hhcnBkYWlseS50dwouc2hhdC10aWJldC5jb20Kc2hlaWt5ZXJtYW1pLmNvbQouc2hlbGxmaXJlLmRlCnx8c2hlbGxmaXJlLmRlCi5zaGVuc2hvdS5vcmcKc2hlbnl1bi5jb20Kc2hlbnl1bnBlcmZvcm1pbmdhcnRzLm9yZwp8fHNoZW55dW5wZXJmb3JtaW5nYXJ0cy5vcmcKc2hlbnpob3VmaWxtLmNvbQp8fHNoZW56aG91ZmlsbS5jb20KfHxzaGVyYWJneWFsdHNlbi5jb20KLnNoaWF0di5uZXQKLnNoaWNoZW5nLm9yZwpzaGlueWNoYW4uY29tCnNoaXBjYW1vdWZsYWdlLmNvbQouc2hpcmV5aXNodW5qaWFuLmNvbQouc2hpdGFvdHYub3JnCnx8c2hpeGlhby5vcmcKfHxzaGl6aGFvLm9yZwpzaGl6aGFvLm9yZwpzaGtzcHIubW9iaS9kYWJyCnx8c2hvZGFuaHEuY29tCnx8c2hvb3NodGltZS5jb20KLnNob3AyMDAwLmNvbS50dwp8fHNob3BlZS50dwouc2hvcHBpbmcuY29tCi5zaG93aGFvdHUuY29tCi5zaG93dGltZS5qcAouc2h1dHRlcnN0b2NrLmNvbQp8fHNodXR0ZXJzdG9jay5jb20KY2guc2h2b29uZy5jb20KLnNod2NodXJjaC5vcmcKfHx3d3cuc2h3Y2h1cmNoLm9yZwouc2h3Y2h1cmNoMy5jb20KfGh0dHA6Ly9zaHdjaHVyY2gzLmNvbQouc2lkZGhhcnRoYXNpbnRlbnQub3JnCnx8c2lkZWxpbmVzbmV3cy5jb20KLnNpZGVsaW5lc3Nwb3J0c2VhdGVyeS5jb20KLnNpamlodWlzdW8uY2x1Ygouc2lqaWh1aXN1by5jb20KLnNpbGtib29rLmNvbQp8fHNpbWJvbG9zdHdpdHRlci5jb20Kc2ltcGxlY2Qub3JnCnx8c2ltcGxlY2Qub3JnCkBAfHxzaW1wbGVjZC5tZQpzaW1wbGVwcm9kdWN0aXZpdHlibG9nLmNvbQpiYnMuc2luYS5jb20vCmJicy5zaW5hLmNvbSUyRgpibG9nLnNpbmEuY29tLnR3CmRhaWx5bmV3cy5zaW5hLmNvbS8KZGFpbHluZXdzLnNpbmEuY29tJTJGCmZvcnVtLnNpbmEuY29tLmhrCmhvbWUuc2luYS5jb20KfHxtYWdhemluZXMuc2luYS5jb20udHcKbmV3cy5zaW5hLmNvbS5oawpuZXdzLnNpbmEuY29tLnR3Cm5ld3Muc2luY2hldy5jb20ubXkKLnNpbmNoZXcuY29tLm15L25vZGUvCi5zaW5jaGV3LmNvbS5teS90YXhvbm9teS90ZXJtCi5zaW5nYXBvcmVwb29scy5jb20uc2cKfHxzaW5nYXBvcmVwb29scy5jb20uc2cKLnNpbmdmb3J0aWJldC5jb20KLnNpbmdwYW8uY29tLmhrCnNpbmd0YW8uY29tCnx8c2luZ3Rhby5jb20KbmV3cy5zaW5ndGFvLmNhCi5zaW5ndGFvdXNhLmNvbQp8fHNpbmd0YW91c2EuY29tCiEtLXx8Y2RwLnNpbmljYS5lZHUudHcKc2luby1tb250aGx5LmNvbQp8fHNpbm9jYXN0LmNvbQpzaW5vY2lzbS5jb20Kc2lub21vbnRyZWFsLmNhCi5zaW5vbmV0LmNhCi5zaW5vcGl0dC5pbmZvCi5zaW5vYW50cy5jb20KfHxzaW5vYW50cy5jb20KLnNpbm9xdWViZWMuY29tCi5zaWVycmFmcmllbmRzb2Z0aWJldC5vcmcKc2lzLnh4eAp8fHNpczAwMS5jb20Kc2lzMDAxLnVzCi5zaXRlMnVuYmxvY2suY29tCnx8c2l0ZTkwLm5ldAouc2l0ZWJyby50dwp8fHNpdGVrcmVhdG9yLmNvbQp8fHNpdGVrcy51ay50bwp8fHNpdGVtYXBzLm9yZwouc2pydC5vcmcKfGh0dHA6Ly9zanJ0Lm9yZwp8fHNqdW0uY24KfHxza2V0Y2hhcHBzb3VyY2VzLmNvbQp8fHNraW10dWJlLmNvbQp8fHNreWJldC5jb20KfGh0dHA6Ly91c2Vycy5za3luZXQuYmUvcmV2ZXMvdGliZXRob21lLmh0bWwKLnNreWtpbmcuY29tLnR3CmJicy5za3lraXdpLmNvbQp8aHR0cDovL3d3dy5za3lwZS5jb20vaW50bC8KfGh0dHA6Ly93d3cuc2t5cGUuY29tL3poLUhhbnQKfHxza3l2ZWdhcy5jb20KLnhza3l3YWxrZXIuY29tCnx8eHNreXdhbGtlci5jb20KfHxza3l4dnBuLmNvbQptLnNsYW5kci5uZXQKLnNsYXl0aXpsZS5jb20KLnNsZWF6eWRyZWFtLmNvbQp8fHNsaGVuZy5jb20KfHxzbGlkZXNoYXJlLm5ldApmb3J1bS5zbGltZS5jb20udHcKLnNsaW5rc2V0LmNvbQp8fHNsaWNrdnBuLmNvbQouc2x1dGxvYWQuY29tCnx8c21hcnRkbnNwcm94eS5jb20KLnNtYXJ0aGlkZS5jb20KfHxhcHAuc21hcnRtYWlsY2xvdWQuY29tCnNtY2hib29rcy5jb20KLnNtaC5jb20uYXUvd29ybGQvZGVhdGgtb2YtY2hpbmVzZS1wbGF5Ym95LWxlYXZlcy1mcmVzaC1zY3JhdGNoZXMtaW4tcGFydHktcGFpbnR3b3JrLTIwMTIwOTAzLTI1YTh2CnNtaHJpYy5vcmcKLnNtaXRoLmVkdS9kYWxhaWxhbWEKLnNteXh5Lm9yZwohLS1UT0RPLW5vLWhvbWVwYWdlCnx8c25hcGNoYXQuY29tCi5zbmFwdHUuY29tCnx8c25hcHR1LmNvbQp8fHNuZGNkbi5jb20Kc25lYWttZS5uZXQKc25vd2xpb25wdWIuY29tCmhvbWUuc28tbmV0Lm5ldC50dy95aXNhX3RzYWkKfHxzb2MubWlsCi5zb2Nrcy1wcm94eS5uZXQKfHxzb2Nrcy1wcm94eS5uZXQKLnNvY2tzY2FwNjQuY29tCnx8c29ja3NsaXN0Lm5ldAouc29jcmVjLm9yZwp8aHR0cDovL3NvY3JlYy5vcmcKLnNvZC5jby5qcAouc29mdGV0aGVyLm9yZwp8fHNvZnRldGhlci5vcmcKLnNvZnRldGhlci1kb3dubG9hZC5jb20KfHxzb2Z0ZXRoZXItZG93bmxvYWQuY29tCnx8Y2RuLnNvZnRsYXllci5uZXQKfHxzb2djbHViLmNvbQpzb2hjcmFkaW8uY29tCnx8c29oY3JhZGlvLmNvbQouc29rbWlsLmNvbQp8fHNvcnRpbmctYWxnb3JpdGhtcy5jb20KLnNvc3RpYmV0Lm9yZwouc291bW8uaW5mbwp8fHNvdXAuaW8KQEB8fHN0YXRpYy5zb3VwLmlvCi5zb2JlZXMuY29tCnx8c29iZWVzLmNvbQpzb2NpYWx3aGFsZS5jb20KLnNvZnRldGhlci5jby5qcAp8fHNvZnR3YXJlYnljaHVjay5jb20KYmxvZy5zb2dvby5vcmcKc29oLnR3Cnx8c29oLnR3CnNvaGZyYW5jZS5vcmcKfHxzb2hmcmFuY2Uub3JnCmNoaW5lc2Uuc29pZmluZC5jb20Kc29rYW1vbmxpbmUuY29tCi5zb2xpZGFyaXRldGliZXQub3JnCi5zb2xpZGZpbGVzLmNvbQp8fHNvbWVlLmNvbQouc29uZ2ppYW5qdW4uY29tCnx8c29uZ2ppYW5qdW4uY29tCi5zb25pY2Jicy5jYwouc29uaWRvZGVsYWVzcGVyYW56YS5vcmcKLnNvcGNhc3QuY29tCi5zb3BjYXN0Lm9yZwouc29yYXpvbmUubmV0Cnx8c29zLm9yZwpiYnMuc291LXRvbmcub3JnCi5zb3Vib3J5LmNvbQp8aHR0cDovL3NvdWJvcnkuY29tCi5zb3VsLXBsdXMubmV0Ci5zb3VsY2FsaWJ1cmhlbnRhaS5uZXQKfHxzb3VsY2FsaWJ1cmhlbnRhaS5uZXQKfHxzb3VuZGNsb3VkLmNvbQohLS18aHR0cHM6Ly9zb3VuZGNsb3VkLmNvbS9wdW5rZ29kCi5zb3VuZG9maG9wZS5rcgpzb3VuZG9maG9wZS5vcmcKfHxzb3VuZG9maG9wZS5vcmcKfHxzb3Vwb2ZtZWRpYS5jb20KIS0tLnNvdXJjZWZvcmdlLm5ldAohLXxodHRwOi8vc291cmNlZm9yZ2UubmV0CnxodHRwOi8vc291cmNlZm9yZ2UubmV0L3AqL3NoYWRvd3NvY2tzZ3VpLwouc291cmNld2FkaW8uY29tCnNvdXRobmV3cy5jb20udHcKc293ZXJzLm9yZy5oawp8fHdseC5zb3dpa2kubmV0Cnx8c3BhbmtiYW5nLmNvbQouc3Bhbmtpbmd0dWJlLmNvbQouc3Bhbmt3aXJlLmNvbQp8fHNwYi5jb20KfHxzcGVha2VyZGVjay5jb20KfHxzcGVlZGlmeS5jb20Kc3BlbS5hdAp8fHNwZW5jZXJ0aXBwaW5nLmNvbQp8fHNwZW5kZWUuY29tCnx8c3BpY2V2cG4uY29tCi5zcGlkZXJvYWsuY29tCnx8c3BpZGVyb2FrLmNvbQouc3Bpa2UuY29tCi5zcG90Zmx1eC5jb20KfHxzcG90Zmx1eC5jb20KLnNwcmluZzR1LmluZm8KfGh0dHA6Ly9zcHJpbmc0dS5pbmZvCnx8c3Byb3V0Y29yZS5jb20KfHxzcHJveHkuaW5mbwp8fHNyb2NrZXQudXMKLnNzLWxpbmsuY29tCnx8c3MtbGluay5jb20KLnNzZ2xvYmFsLmNvL3dwCnxodHRwOi8vc3NnbG9iYWwuY28KLnNzZ2xvYmFsLm1lCnx8c3NoOTEuY29tCi5zc3Byby5tbAp8aHR0cDovL3NzcHJvLm1sCi5zc3JzaGFyZS5jb20KfHxzc3JzaGFyZS5jb20KfHxzc3MuY2FtcAohLS18aHR0cDovL2Nkbi5zc3RhdGljLm5ldC8KfHxzc3RtbHQubW9lCnNzdG1sdC5uZXQKfHxzc3RtbHQubmV0CnxodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vdXNlcnMvODk1MjQ1Ci5zdGFnZTY0LmhrCnx8c3RhZ2U2NC5oawp8fHN0YW5kdXBmb3J0aWJldC5vcmcKfHxzdGFuZHdpdGhoay5vcmcKc3RhbmZvcmQuZWR1L2dyb3VwL2ZhbHVuCnVzaW5mby5zdGF0ZS5nb3YKfHxzdGF0dWVvZmRlbW9jcmFjeS5vcmcKLnN0YXJmaXNoZnguY29tCi5zdGFycDJwLmNvbQp8fHN0YXJwMnAuY29tCi5zdGFydHBhZ2UuY29tCnx8c3RhcnRwYWdlLmNvbQouc3RhcnR1cGxpdmluZ2NoaW5hLmNvbQp8aHR0cDovL3N0YXJ0dXBsaXZpbmdjaGluYS5jb20KfHxzdGF0aWMtZWNvbm9taXN0LmNvbQp8fHN0Yy5jb20uc2EKfHxzdGVlbC1zdG9ybS5jb20KLnN0ZWdhbm9zLmNvbQp8fHN0ZWdhbm9zLmNvbQouc3RlZ2Fub3MubmV0Ci5zdGVwY2hpbmEuY29tCiEtLXx8c3RlcG1hbmlhLmNvbQpueS5zdGdsb2JhbGxpbmsuY29tCmhkLnN0aGVhZGxpbmUuY29tL25ld3MvcmVhbHRpbWUKc3Rob28uY29tCnx8c3Rob28uY29tCi5zdGlja2FtLmNvbQpzdGlja2VyYWN0aW9uLmNvbS9zZXNhd2UKLnN0aWxlcHJvamVjdC5jb20KLnN0by5jYwouc3RvcG9yZ2FuaGFydmVzdGluZy5vcmcKfHxzdG9yYWdlbmV3c2xldHRlci5jb20KLnN0b3JtLm1nCnx8c3Rvcm0ubWcKLnN0b3B0aWJldGNyaXNpcy5uZXQKfHxzdG9wdGliZXRjcmlzaXMubmV0Cnx8c3RvcmlmeS5jb20KLnN0b3JtbWVkaWFncm91cC5jb20KfHxzdG93ZWJveWQuY29tCnN0cmFuYWJnLmNvbQp8fHN0cmFwbGVzc2RpbGRvLmNvbQp8fHN0cmVhbWluZ3RoZS5uZXQKc3RyZWVtYS5jb20vdHYvTlREVFZfQ2hpbmVzZQpjbi5zdHJlZXR2b2ljZS5jb20vYXJ0aWNsZQpjbi5zdHJlZXR2b2ljZS5jb20vZGlhcnkKY24yLnN0cmVldHZvaWNlLmNvbQp0dy5zdHJlZXR2b2ljZS5jb20KLnN0cmlraW5nbHkuY29tCnx8c3Ryb25ndnBuLmNvbQouc3Ryb25nd2luZHByZXNzLmNvbQouc3R1ZGVudC50dy9kYgp8fHN0dWRlbnRzZm9yYWZyZWV0aWJldC5vcmcKfHxzdHVtYmxldXBvbi5jb20Kc3R1cGlkdmlkZW9zLmNvbQouc3VjY2Vzc2ZuLmNvbQpwYW5hbWFwYXBlcnMuc3VlZGRldXRzY2hlLmRlCi5zdWdhcnN5bmMuY29tCnx8c3VnYXJzeW5jLmNvbQouc3Vnb2Jicy5jb20KfHxzdWd1bWlydTE4LmNvbQp8fHN1aXNzbC5jb20Kc3VtbWlmeS5jb20KLnN1bXJhbmRvLmNvbQp8fHN1bXJhbmRvLmNvbQpzdW4xOTExLmNvbQouc3VucG9ybm8uY29tCnx8c3VubWVkaWEuY2EKfHxzdW5wb3Juby5jb20KLnN1bnNreWZvcnVtLmNvbQouc3VudGEuY29tLnR3Ci5zdW52cG4ubmV0Ci5zdW9sdW8ub3JnCi5zdXBlcmZyZWV2cG4uY29tCi5zdXBlcnZwbi5uZXQKfHxzdXBlcnZwbi5uZXQKLnN1cGVyem9vaS5jb20KfGh0dHA6Ly9zdXBlcnpvb2kuY29tCi5zdXBwaWcubmV0Ci5zdXByZW1lbWFzdGVydHYuY29tCnxodHRwOi8vc3VwcmVtZW1hc3RlcnR2LmNvbQouc3VyZmVhc3kuY29tCnx8c3VyZmVhc3kuY29tCi5zdXJmZWFzeS5jb20uYXUKfGh0dHA6Ly9zdXJmZWFzeS5jb20uYXUKfHxzdXJyZW5kZXJhdDIwLm5ldAouc3V5YW5nZy5jb20KfGh0dHA6Ly9zdXlhbmdnLmNvbQouc3ZzZnguY29tCi5zd2lzc2luZm8uY2gKfHxzd2lzc2luZm8uY2gKLnN3aXNzdnBuLm5ldAp8fHN3aXNzdnBuLm5ldApzd2l0Y2h2cG4ubmV0Cnx8c3dpdGNodnBuLm5ldAouc3lkbmV5dG9kYXkuY29tCnx8c3lkbmV5dG9kYXkuY29tCi5zeWxmb3VuZGF0aW9uLm9yZwp8fHN5bmNiYWNrLmNvbQpzeXNyZXNjY2Qub3JnCi5zeXRlcy5uZXQKYmxvZy5zeXg4Ni5jb20vMjAwOS8wOS9wdWZmCmJsb2cuc3l4ODYuY24vMjAwOS8wOS9wdWZmCi5zemJicy5uZXQKLnN6ZXRvd2FoLm9yZy5oawoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tVFQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnx8dC1nLmNvbQoudDM1LmNvbQoudDY2eS5jb20KfHx0NjZ5LmNvbQoudGFhLXVzYS5vcmcKfGh0dHA6Ly90YWEtdXNhLm9yZwoudGFhemUudHcKfHx0YWF6ZS50dwp8aHR0cDovL3d3dy50YWJsZXNnZW5lcmF0b3IuY29tLwp0YWJ0dGVyLmpwCi50YWNlbS5vcmcKLnRhY29uZXQuY29tLnR3Cnx8dGFlZHAub3JnLnR3Ci50YWZtLm9yZwoudGFnd2Eub3JnLmF1CnRhZ3dhbGsuY29tCnx8dGFnd2Fsay5jb20KdGFoci5vcmcudHcKLnRhaXBlaXNvY2lldHkub3JnCnx8dGFpcGVpc29jaWV0eS5vcmcKLnRhaXdhbmJpYmxlLmNvbQoudGFpd2FuY29uLmNvbQoudGFpd2FuZGFpbHkubmV0Cnx8dGFpd2FuZGFpbHkubmV0Ci50YWl3YW5kYy5vcmcKIS0tfHx0YWl3YW5lbWJhc3N5Lm9yZwoudGFpd2FuanVzdGljZS5jb20KdGFpd2Fua2lzcy5jb20KdGFpd2FubmF0aW9uLmNvbQp0YWl3YW5uYXRpb24uY29tLnR3Cnx8dGFpd2FubmNmLm9yZy50dwp8fHRhaXdhbm5ld3MuY29tLnR3CnxodHRwOi8vd3d3LnRhaXdhbm9ubGluZS5jYy8KIS0tfHx0YWl3YW50b2RheS50dwp0YWl3YW50cC5uZXQKfHx0YWl3YW50dC5vcmcudHcKdGFpd2FudXMubmV0CnRhaXdhbnllcy5jb20KdGFpd2FuLXNleC5jb20KLnRhbGs4NTMuY29tCi50YWxrYm94YXBwLmNvbQp8fHRhbGtib3hhcHAuY29tCi50YWxrY2MuY29tCnx8dGFsa2NjLmNvbQoudGFsa29ubHkubmV0Cnx8dGFsa29ubHkubmV0Cnx8dGFtaWFvZGUudGsKfHx0YW5jLm9yZwp0YW5nYmVuLmNvbQoudGFuZ3Jlbi51cwoudGFvaXNtLm5ldAp8aHR0cDovL3Rhb2lzbS5uZXQKLnRhb2x1bi5pbmZvCnx8dGFvbHVuLmluZm8KLnRhcGF0YWxrLmNvbQp8fHRhcGF0YWxrLmNvbQpibG9nLnRhcmFnYW5hLmNvbQoudGFzY24uY29tLmF1Cnx8dGF1cC5uZXQKfGh0dHA6Ly93d3cudGF1cC5vcmcudHcKLnRhd2VldC5jb20KfHx0YXdlZXQuY29tCi50YmNvbGxlZ2Uub3JnCnx8dGJjb2xsZWdlLm9yZwoudGJpLm9yZy5oawoudGJpY24ub3JnCi50Ymp5dC5vcmcKfHx0YnBpYy5pbmZvCi50YnJjLm9yZwp0YnMtcmFpbmJvdy5vcmcKLnRic2VjLm9yZwp8fHRic2VjLm9yZwp0YnNra2luYWJhbHUucGFnZS50bAoudGJzbWFsYXlzaWEub3JnCi50YnNuLm9yZwp8fHRic24ub3JnCi50YnNzZWF0dGxlLm9yZwoudGJzc3FoLm9yZwp8aHR0cDovL3Ric3NxaC5vcmcKdGJzd2Qub3JnCi50YnRlbXBsZS5vcmcudWsKLnRidGhvdXN0b24ub3JnCi50Y2N3b25saW5lLm9yZwoudGNld2Yub3JnCnRjaHJkLm9yZwp0Y255bmoub3JnCnx8dGNwc3BlZWQuY28KLnRjcHNwZWVkLmNvbQp8fHRjcHNwZWVkLmNvbQoudGNzb2ZiYy5vcmcKLnRjc292aS5vcmcKLnRkbS5jb20ubW8KdGVhbWFtZXJpY2FueS5jb20KIS0tT1ZICnx8dGVjaHZpei5uZXQKfHx0ZWNrLmluCi50ZWVuaWVmdWNrLm5ldAp0ZWVuc2luYXNpYS5jb20KLnRlbGVjb21zcGFjZS5jb20KfHx0ZWxlZ3JhcGguY28udWsKfHx0ZWxlZ3JhLnBoCi50ZW5hY3kuY29tCnx8dGVuemlucGFsbW8uY29tCi50ZXcub3JnCi50aGFpY24uY29tCnx8dGhlYXRydW0tYmVsbGkuY29tCnRoZWJsZW1pc2guY29tCnx8dGhlYmNvbXBsZXguY29tCi50aGVib2JzLmNvbQp8fHRoZWJvYnMuY29tCi50aGVjaGluYWJlYXQub3JnCnxodHRwOi8vd3d3LnRoZWNoaW5hc3Rvcnkub3JnL3llYXJib29rcy95ZWFyYm9vay0yMDEyLwoudGhlZGFsYWlsYW1hbW92aWUuY29tCnxodHRwOi8vdGhlZGFsYWlsYW1hbW92aWUuY29tCnx8dGhlZHcudXMKdGhlZnJvbnRpZXIuaGsvdGYKY24udGhlZ2F5LmNvbQp8aHR0cDovL3RoZWdpb2l0aW5ob2Mudm4vCi50aGVnbHkuY29tCi50aGVob3RzLmluZm8KdGhlaG91c2VuZXdzLmNvbQp8fHRoZWh1bi5uZXQKLnRoZWluaXRpdW0uY29tCnx8dGhlaW5pdGl1bS5jb20KLnRoZW5ld3NsZW5zLmNvbQp8fHRoZW5ld3NsZW5zLmNvbQoudGhlcGlyYXRlYmF5Lm9yZwp8fHRoZXBpcmF0ZWJheS5vcmcKIS0tfHx0aGVwaXJhdGViYXkuc2UKLnRoZXBvcm5kdWRlLmNvbQp8fHRoZXBvcm5kdWRlLmNvbQp8fHRoZXBvcnRhbHdpa2kuY29tCnRoZXJlYWxsb3ZlLmtyCnRoZXJvY2submV0Lm56CnRoZXNwZWVkZXIuY29tCnx8dGhlc3RhbmRuZXdzLmNvbQp0aGV0aWJldGNlbnRlci5vcmcKdGhldGliZXRjb25uZWN0aW9uLm9yZwoudGhldGliZXRtdXNldW0ub3JnCi50aGV0aWJldHBvc3QuY29tCnx8dGhldGliZXRwb3N0LmNvbQohLS1Ub3IKfHx0aGV0aW5oYXQuY29tCnRoZXRyb3Rza3ltb3ZpZS5jb20KdGhldml2ZWtzcG90LmNvbQp8fHRoZXdnby5vcmcKLnRoZXluYy5jb20KfGh0dHA6Ly90aGV5bmMuY29tCi50aGlua2luZ3RhaXdhbi5jb20KLnRoaXNhdi5jb20KfGh0dHA6Ly90aGlzYXYuY29tCi50aGxpYi5vcmcKfHx0aG9tYXNiZXJuaGFyZC5vcmcKLnRob25nZHJlYW1zLmNvbQp0aHJlYXRjaGFvcy5jb20KfHx0aHJvdWdobmlnaHRzZmlyZS5jb20KLnRodW1iemlsbGEuY29tCnx8dGh5d29yZHMuY29tCi50aHl3b3Jkcy5jb20udHcKdGlhbmFubWVubW90aGVyLm9yZwoudGlhbmFubWVuZHVpemhpLmNvbQp8fHRpYW5hbm1lbmR1aXpoaS5jb20KfHx0aWFuYW5tZW51bml2LmNvbQp8fHRpYW5hbm1lbnVuaXYubmV0Cnx8dGlhbmRpeGluZy5vcmcKLnRpYW5odWF5dWFuLmNvbQoudGlhbmxhd29mZmljZS5jb20KfHx0aWFudGkuaW8KdGlhbnRpYm9va3Mub3JnCnx8dGlhbnRpYm9va3Mub3JnCnRpYW55YW50b25nLm9yZy5jbgoudGlhbnpodS5vcmcKLnRpYmV0LmF0CnRpYmV0LmNhCi50aWJldC5jb20KfHx0aWJldC5jb20KdGliZXQuZnIKLnRpYmV0Lm5ldAp8fHRpYmV0Lm5ldAp0aWJldC5udQoudGliZXQub3JnCnx8dGliZXQub3JnCi50aWJldC5zawp0aWJldC5vcmcudHcKLnRpYmV0LnRvCi50aWJldC1lbnZveS5ldQp8fHRpYmV0LWVudm95LmV1Ci50aWJldC1mb3VuZGF0aW9uLm9yZwoudGliZXQtaG91c2UtdHJ1c3QuY28udWsKfHx0aWJldC1pbml0aWF0aXZlLmRlCi50aWJldC1tdW5pY2guZGUKLnRpYmV0M3JkcG9sZS5vcmcKfGh0dHA6Ly90aWJldDNyZHBvbGUub3JnCnRpYmV0YWN0aW9uLm5ldAp8fHRpYmV0YWN0aW9uLm5ldAoudGliZXRhaWQub3JnCnRpYmV0YWxrLmNvbQoudGliZXRhbi5mcgp0aWJldGFuLWFsbGlhbmNlLm9yZwoudGliZXRhbmFydHMub3JnCi50aWJldGFuYnVkZGhpc3RpbnN0aXR1dGUub3JnCnxodHRwOi8vdGliZXRhbmJ1ZGRoaXN0aW5zdGl0dXRlLm9yZwp0aWJldGFuY29tbXVuaXR5Lm9yZwoudGliZXRhbmpvdXJuYWwuY29tCi50aWJldGFubGFuZ3VhZ2Uub3JnCi50aWJldGFubGliZXJhdGlvbi5vcmcKfHx0aWJldGFubGliZXJhdGlvbi5vcmcKLnRpYmV0Y29sbGVjdGlvbi5jb20KLnRpYmV0YW5haWRwcm9qZWN0Lm9yZwoudGliZXRhbmNvbW11bml0eXVrLm5ldAp8aHR0cDovL3RpYmV0YW5jb21tdW5pdHl1ay5uZXQKdGliZXRhbmN1bHR1cmUub3JnCnRpYmV0YW5mZW1pbmlzdGNvbGxlY3RpdmUub3JnCi50aWJldGFucGFpbnRpbmdzLmNvbQoudGliZXRhbnBob3RvcHJvamVjdC5jb20KLnRpYmV0YW5wb2xpdGljYWxyZXZpZXcub3JnCi50aWJldGFucmV2aWV3Lm5ldAp8aHR0cDovL3RpYmV0YW5zcG9ydHMub3JnCi50aWJldGFud29tZW4ub3JnCnxodHRwOi8vdGliZXRhbndvbWVuLm9yZwoudGliZXRhbnlvdXRoLm9yZwoudGliZXRhbnlvdXRoY29uZ3Jlc3Mub3JnCnx8dGliZXRhbnlvdXRoY29uZ3Jlc3Mub3JnCi50aWJldGNoYXJpdHkuZGsKdGliZXRjaGFyaXR5LmluCi50aWJldGNoaWxkLm9yZwoudGliZXRjaXR5LmNvbQoudGliZXRjb3Jwcy5vcmcKLnRpYmV0ZXhwcmVzcy5uZXQKfGh0dHA6Ly90aWJldGV4cHJlc3MubmV0CnRpYmV0Zm9jdXMuY29tCnRpYmV0ZnVuZC5vcmcKLnRpYmV0Z2VybWFueS5jb20KfHx0aWJldGdlcm1hbnkuZGUKLnRpYmV0aGF1cy5jb20KLnRpYmV0aGVyaXRhZ2VmdW5kLm9yZwp0aWJldGhvdXNlLmpwCnRpYmV0aG91c2Uub3JnCnx8dGliZXRob3VzZS51cwoudGliZXRpbmZvbmV0Lm5ldAoudGliZXRqdXN0aWNlLm9yZwoudGliZXRrb21pdGUuZGsKfHx0aWJldG11c2V1bS5vcmcKfHx0aWJldG5ldHdvcmsub3JnCi50aWJldG9mZmljZS5jaAp8aHR0cDovL3RpYmV0b2ZmaWNlLmNoCnRpYmV0b2ZmaWNlLmV1CnRpYmV0b2ZmaWNlLm9yZwp0aWJldG9ubGluZS5jb20KfHx0aWJldG9ubGluZS5jb20KLnRpYmV0b2ZmaWNlLmNvbS5hdQp8aHR0cDovL3RpYmV0b2ZmaWNlLmNvbS5hdQp8fHRpYmV0b25saW5lLnR2Ci50aWJldG9ubGluZS50dgoudGliZXRvcmFsaGlzdG9yeS5vcmcKfGh0dHA6Ly90aWJldG9yYWxoaXN0b3J5Lm9yZwoudGliZXRwb2xpY3kuZXUKLnRpYmV0cmVsaWVmZnVuZC5jby51awp0aWJldHNpdGVzLmNvbQoudGliZXRzb2NpZXR5LmNvbQp8fHRpYmV0c29jaWV0eS5jb20KLnRpYmV0c3VuLmNvbQoudGliZXRzdXBwb3J0Z3JvdXAub3JnCnxodHRwOi8vdGliZXRzdXBwb3J0Z3JvdXAub3JnCi50aWJldHN3aXNzLmNoCi50aWJldHRlbGVncmFwaC5jb20KdGliZXR0aW1lcy5uZXQKfHx0aWJldHdyaXRlcy5vcmcKLnRpY2tldC5jb20udHcKLnRpZ2VydnBuLmNvbQp8fHRpZ2VydnBuLmNvbQoudGltZGlyLmNvbQp8aHR0cDovL3RpbWRpci5jb20KLnRpbWUuY29tCnxodHRwOi8vdGltZS5jb20KIS0tLnRpbWUuY29tL3RpbWUvdGltZTEwMC9sZWFkZXJzL3Byb2ZpbGUvcmViZWwKIS0tLnRpbWUuY29tL3RpbWUvc3BlY2lhbHMvcGFja2FnZXMvYXJ0aWNsZS8wLDI4ODA0CiEtLS50aW1lLmNvbS90aW1lL21hZ2F6aW5lCi50aW1zYWguY29tCnx8YmxvZy50aW5leS5jb20KdGludHVjMTAxLmNvbQoudGlueS5jYwp8aHR0cDovL3RpbnkuY2MKdGlueWNoYXQuY29tCnx8dGlueXBhc3RlLmNvbQoudGlzdG9yeS5jb20KfHx0a2NzLWNvbGxpbnMuY29tCi50bWFnYXppbmUuY29tCnx8dG1hZ2F6aW5lLmNvbQoudG1kZmlzaC5jb20KfGh0dHA6Ly90bWkubWUKLnRtcHAub3JnCnxodHRwOi8vdG1wcC5vcmcKLnRuYWZsaXguY29tCnx8dG5hZmxpeC5jb20KLnRuZ3Jub3cuY29tCi50bmdybm93Lm5ldAoudG5wLm9yZwp8aHR0cDovL3RucC5vcmcKLnRvLXBvcm5vLmNvbQp8fHRvLXBvcm5vLmNvbQp0b2dldHRlci5jb20KLnRva3lvLTI0Ny5jb20KLnRva3lvLWhvdC5jb20KfHx0b2t5by1wb3JuLXR1YmUuY29tCnx8dG9reW9jbi5jb20KdHcudG9tb25ld3MubmV0Ci50b25naWwub3Iua3IKLnRvbm8tb2thLmpwCnRvbnl5YW4ubmV0Ci50b29kb2MuY29tCnRvb25lbC5uZXQKdG9wODEud3MKLnRvcG5ld3MuaW4KLnRvcHBvcm5zaXRlcy5jb20KfGh0dHA6Ly90b3Bwb3Juc2l0ZXMuY29tCi50b3JndWFyZC5uZXQKfHx0b3JndWFyZC5uZXQKfHx0b3AudHYKLnRvcHNoYXJld2FyZS5jb20KLnRvcHN5LmNvbQp8fHRvcHN5LmNvbQp8fHRvcHRpcC5jYQp0b3JhLnRvCi50b3Jjbi5jb20KLnRvcnByb2plY3Qub3JnCnx8dG9ycHJvamVjdC5vcmcKdG9ycmVudHByaXZhY3kuY29tCnx8dG9ycmVudHByaXZhY3kuY29tCnxodHRwOi8vdG9ycmVudHByb2plY3Quc2UKfHx0b3JyZW50eS5vcmcKfHx0b3JyZW50ei5ldQp8fHRvcnZwbi5jb20KfHx0b3RhbHZwbi5jb20KLnRvdXRpYW9hYmMuY29tCnRvd25nYWluLmNvbQp0b3lwYXJrLmluCnRveXRyYWN0b3JzaG93LmNvbQoudHBhcmVudHMub3JnCi50cGkub3JnLnR3Cnx8dHBpLm9yZy50dwp0cmFmZmljaGF1cy5jb20KfHx0cmFuc3BhcmVuY3kub3JnCnx8dHJlZW1hbGwuY29tLnR3CnRyZW5kc21hcC5jb20KfHx0cmVuZHNtYXAuY29tCi50cmlhbG9mY2NwLm9yZwp8fHRyaWFsb2ZjY3Aub3JnCi50cmltb25kaS5kZS9TRExFCi50cm91dy5ubAp8aHR0cDovL3Ryb3V3Lm5sCi50cnQubmV0LnRyCnRydGMuY29tLnR3Ci50cnVlYnVkZGhhLW1kLm9yZwp8aHR0cDovL3RydWVidWRkaGEtbWQub3JnCnRydWx5ZXJnb25vbWljLmNvbQoudHJ1dGgxMDEuY28udHYKfGh0dHA6Ly90cnV0aDEwMS5jby50dgoudHJ1dGhvbnRvdXIub3JnCnxodHRwOi8vdHJ1dGhvbnRvdXIub3JnCi50cnV2ZW8uY29tCi50c2N0di5uZXQKLnRzZW10dWxrdS5jb20KdHNxdWFyZS50dgoudHN1Lm9yZy50dwp0c3VuYWdhcnVtb24uY29tCiEtLXxodHRwOi8vd3d3LnRzdXJ1LWJpcmQubmV0LwoudHNjdHYubmV0Cnx8dHQxMDY5LmNvbQoudHR0YW4uY29tCnx8dHR0YW4uY29tCmJiLnR0di5jb20udHcvYmIKdHU4OTY0LmNvbQoudHViYWhvbGljLmNvbQoudHViZS5jb20KdHViZTguY29tCnx8dHViZTguY29tCi50dWJlOTExLmNvbQp8fHR1YmU5MTEuY29tCi50dWJlY3VwLmNvbQoudHViZWdhbHMuY29tCi50dWJlaXNsYW0uY29tCnxodHRwOi8vdHViZWlzbGFtLmNvbQoudHViZXN0YWNrLmNvbQp8fHR1YmV3b2xmLmNvbQoudHVpYmVpdHUubmV0CnR1aWRhbmcubmV0Ci50dWlkYW5nLm9yZwp8fHR1aWRhbmcub3JnCi50dWlkYW5nLnNlCmJicy50dWl0dWkuaW5mbwoudHVtdXRhbnppLmNvbQp8aHR0cDovL3R1bXV0YW56aS5jb20KfHx0dW12aWV3LmNvbQoudHVuZWluLmNvbQp8aHR0cDovL3R1bmVpbi5jb20KfHx0dW5uZWxiZWFyLmNvbQoudHVubmVsci5jb20KfHx0dW5uZWxyLmNvbQoudHVvOC5ibHVlCnx8dHVvOC5ibHVlCi50dW84LmNjCi50dW84LmNsdWIKfHx0dW84LmNsdWIKLnR1bzguZml0Ci50dW84LmhrCi50dW84LmluCi50dW84Lm5pbmphCi50dW84Lm9yZwp8fHR1bzguZml0Cnx8dHVvOC5vcmcKLnR1bzgucHcKfGh0dHA6Ly90dW84LnB3Cnx8dHVvOC5yZWQKLnR1bzguc3BhY2UKdHVpdHdpdC5jb20KLnR1cmFuc2FtLm9yZwoudHVyYm9iaXQubmV0CnxodHRwOi8vdHVyYm9iaXQubmV0Ci50dXJib2hpZGUuY29tCnx8dHVyYm9oaWRlLmNvbQp8fHR1cmtpc3RhbnRpbWVzLmNvbQoudHVzaHljYXNoLmNvbQp8aHR0cDovL3R1c2h5Y2FzaC5jb20KfHxhcHAudHV0YW5vdGEuY29tCi50dXZwbi5jb20KfHx0dXZwbi5jb20KfGh0dHA6Ly90dXphaWppZGkuY29tCnxodHRwOi8vKi50dXphaWppZGkuY29tCi50dzAxLm9yZwp8aHR0cDovL3R3MDEub3JnCgohLS0tVHVtYmxyLS0tCi50dW1ibHIuY29tCnx8dHVtYmxyLmNvbQohLS1AQHx8YXNzZXRzLnR1bWJsci5jb20KIS0tQEB8fGRhdGEudHVtYmxyLmNvbQohLS1AQHx8bWVkaWEudHVtYmxyLmNvbQohLS1AQHx8c3RhdGljLnR1bWJsci5jb20KIS0tQEB8fHd3dy50dW1ibHIuY29tCnx8bGVjbG91ZC5uZXQKfGh0dHA6Ly9jb3NtaWMubW9uYXIuY2gKfHxzbHV0bW9vbmJlYW0uY29tCnxodHRwOi8vYmxvZy5zb3lsZW50LmNvbQoKLnR2LmNvbQp8aHR0cDovL3R2LmNvbQp0dmFudHMuY29tCmZvcnVtLnR2Yi5jb20KbmV3cy50dmIuY29tL2xpc3Qvd29ybGQKbmV3cy50dmIuY29tL2xvY2FsCm5ld3MudHZicy5jb20udHcKLnR2Ym94bm93LmNvbQp8aHR0cDovL3R2Ym94bm93LmNvbS8KdHZpZGVyLmNvbQoudHZtb3N0LmNvbS5oawoudHZwbGF5dmlkZW9zLmNvbQp8fHR2dW5ldHdvcmtzLmNvbQoudHctYmxvZy5jb20KfGh0dHBzOi8vdHctYmxvZy5jb20KLnR3LW5wby5vcmcKLnR3YWl0dGVyLmNvbQp0d2FwcGVya2VlcGVyLmNvbQp8fHR3YXBwZXJrZWVwZXIuY29tCnx8dHdhdWQuaW8KLnR3YXVkLmlvCi50d2F2aS5jb20KLnR3YmJzLm5ldC50dwp0d2Jicy5vcmcKdHdiYnMudHcKfHx0d2Jsb2dnZXIuY29tCnR3ZWVwbWFnLmNvbQoudHdlZXBtbC5vcmcKfHx0d2VlcG1sLm9yZwoudHdlZXRiYWNrdXAuY29tCnx8dHdlZXRiYWNrdXAuY29tCnR3ZWV0Ym9hcmQuY29tCnx8dHdlZXRib2FyZC5jb20KLnR3ZWV0Ym9uZXIuYml6Cnx8dHdlZXRib25lci5iaXoKLnR3ZWV0Y3MuY29tCnxodHRwOi8vdHdlZXRjcy5jb20KfGh0dHA6Ly9kZWNrLmx5CiEtLSBPcGVyYXRpb24gZGlzY29udGludWVkCiEtLXx8dHdlZXRlLm5ldAohLS1tLnR3ZWV0ZS5uZXQKfHxtdHcudGwKfHx0d2VldGVkdGltZXMuY29tCiEtLSBPcGVyYXRpb24gZGlzY29udGludWVkCiEtLXR3ZWV0bWVtZS5jb20KfHx0d2VldG15bGFzdC5mbQp0d2VldHBob3RvLmNvbQp8fHR3ZWV0cGhvdG8uY29tCnx8dHdlZXRyYW5zLmNvbQp0d2VldHJlZS5jb20KfHx0d2VldHJlZS5jb20KLnR3ZWV0dHVubmVsLmNvbQp8fHR3ZWV0dHVubmVsLmNvbQp8fHR3ZWV0d2FsbHkuY29tCnR3ZWV0eW1haWwuY29tCnx8dHdlbHZlLnRvZGF5Ci50d2Vlei5uZXQKfGh0dHA6Ly90d2Vlei5uZXQKfHx0d2Z0cC5vcmcKfHx0d2dyZWF0ZGFpbHkuY29tCnR3aWJhc2UuY29tCi50d2liYmxlLmRlCnx8dHdpYmJsZS5kZQp0d2liYm9uLmNvbQp8fHR3aWJzLmNvbQoudHdpY291bnRyeS5vcmcKfGh0dHA6Ly90d2ljb3VudHJ5Lm9yZwp0d2ljc3kuY29tCi50d2llbmRzLmNvbQp8aHR0cDovL3R3aWVuZHMuY29tCi50d2lmYW4uY29tCnxodHRwOi8vdHdpZmFuLmNvbQp0d2lmZm8uY29tCnx8dHdpZmZvLmNvbQoudHdpbGlnaHRzZXguY29tCnR3aWxvZy5vcmcKdHdpbWJvdy5jb20KfHx0d2luZGV4eC5jb20KdHdpcHBsZS5qcAp8fHR3aXBwbGUuanAKfHx0d2lwLm1lCnR3aXNob3J0LmNvbQp8fHR3aXNob3J0LmNvbQp0d2lzdGFyLmNjCnx8dHdpc3Rlci5uZXQuY28KfHx0d2lzdGVyaW8uY29tCnR3aXN0ZXJub3cuY29tCnR3aXN0b3J5Lm5ldAp0d2l0YnJvd3Nlci5uZXQKfHx0d2l0Y2F1c2UuY29tCnx8dHdpdGdldGhlci5jb20KfHx0d2lnZ2l0Lm9yZwp0d2l0Z29vLmNvbQp0d2l0aXEuY29tCnx8dHdpdGlxLmNvbQoudHdpdGxvbmdlci5jb20KfHx0d2l0bG9uZ2VyLmNvbQp8aHR0cDovL3RsLmdkLwp0d2l0bWFuaWEuY29tCnR3aXRvYXN0ZXIuY29tCnx8dHdpdG9hc3Rlci5jb20KfHx0d2l0b25tc24uY29tCiEtLVNhbWUgSVAKLnR3aXQyZC5jb20KfHx0d2l0MmQuY29tCi50d2l0c3RhdC5jb20KfHx0d2l0c3RhdC5jb20KfHxmaXJzdGZpdmVmb2xsb3dlcnMuY29tCnx8cmV0d2VldGVmZmVjdC5jb20KfHx0d2VlcGxpa2UubWUKfHx0d2VlcGd1aWRlLmNvbQp8fHR1cmJvdHdpdHRlci5jb20KLnR3aXR2aWQuY29tCnx8dHdpdHZpZC5jb20KfGh0dHA6Ly90d3QudGwKdHdpdHRib3QubmV0Cnx8YWRzLXR3aXR0ZXIuY29tCnx8dHd0dHIuY29tCnx8dHdpdHRlcjRqLm9yZwoudHdpdHRlcmNvdW50ZXIuY29tCnx8dHdpdHRlcmNvdW50ZXIuY29tCnR3aXR0ZXJmZWVkLmNvbQoudHdpdHRlcmdhZGdldC5jb20KfHx0d2l0dGVyZ2FkZ2V0LmNvbQoudHdpdHRlcmtyLmNvbQp8fHR3aXR0ZXJrci5jb20KfHx0d2l0dGVybWFpbC5jb20KfHx0d2l0dGVycmlmaWMuY29tCnR3aXR0ZXJ0aW0uZXMKfHx0d2l0dGVydGltLmVzCnR3aXR0aGF0LmNvbQp8fHR3aXR0dXJrLmNvbQoudHdpdHR1cmx5LmNvbQp8fHR3aXR0dXJseS5jb20KLnR3aXR6YXAuY29tCnR3aXlpYS5jb20KfHx0d3N0YXIubmV0Ci50d3Rrci5jb20KfGh0dHA6Ly90d3Rrci5jb20KLnR3bm9ydGgub3JnLnR3CnR3c2t5cGUuY29tCnR3dHJsYW5kLmNvbQp0d3VybC5ubAoudHd5YWMub3JnCnx8dHd5YWMub3JnCi50eHh4LmNvbQoudHljb29sLmNvbQp8fHR5Y29vbC5jb20KCiEtLXR5cGVwYWQKfHx0eXBlcGFkLmNvbQpAQHx8d3d3LnR5cGVwYWQuY29tCkBAfHxzdGF0aWMudHlwZXBhZC5jb20KfHxibG9nLmV4cG9mdXR1cmVzLmNvbQp8fGxlZ2FsdGVjaC5sYXcuY29tCnx8YmxvZ3MudGFtcGFiYXkuY29tCnx8Y29udGVzdHMudHdpbGlvLmNvbQohLWxhd3Byb2Zlc3NvcnMudHlwZXBhZC5jb20vY2hpbmFfbGF3X3Byb2YKCiEtLS0tLS0tLS0tLS0tVHdpdGVzZS0tLS0tCi5lbWJyLmluCnx8ZW1ici5pbgoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tVVUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi51OXVuLmNvbQp8fHU5dW4uY29tCi51YmRkbnMub3JnCnxodHRwOi8vdWJkZG5zLm9yZwp8fHViZXJwcm94eS5uZXQKLnVjLWphcGFuLm9yZwp8fHVjLWphcGFuLm9yZwouc3JjZi51Y2FtLm9yZy9zYWxvbi8KfGh0dHA6Ly9jaGluYS51Y2FuZXdzLmNvbS8KfHx1Y2RjMTk5OC5vcmcKfGh0dHA6Ly9odW0qLnVjaGljYWdvLmVkdS9mYWN1bHR5L3l3YW5nL2hpc3RvcnkKfHx1ZGVyem8uaXQKLnVkbi5jb20KfHx1ZG4uY29tCnx8dWRuLmNvbS50dwp1ZG5ia2suY29tL2Jicwp8fHVmb3JhZGlvLmNvbS50dwp1ZnJlZXZwbi5jb20KLnVnby5jb20KIS0tZ2hzCnx8dWhkd2FsbHBhcGVycy5vcmcKfHx1aHJwLm9yZwoudWlnaHVyLm5sCnx8dWlnaHVyLm5sCnVpZ2h1cmJpei5uZXQKLnVsaWtlLm5ldAp1a2NkcC5jby51awp1a2xpZmVyYWRpby5jby51awp8fHVrbGlmZXJhZGlvLmNvLnVrCnVsdHJhdnBuLmZyCnx8dWx0cmF2cG4uZnIKdWx0cmF4cy5jb20KdW1pY2guZWR1L35mYWx1bgp8fHVuYmxvY2suY24uY29tCi51bmJsb2NrZXIueXQKdW5ibG9jay11cy5jb20KfHx1bmJsb2NrLXVzLmNvbQoudW5ibG9ja2RtbS5jb20KfGh0dHA6Ly91bmJsb2NrZG1tLmNvbQp8fHVuYmxvY2tzaXQuZXMKdW5jeWNsb21lZGlhLm9yZwoudW5jeWNsb3BlZGlhLmhrL3dpa2kKfGh0dHA6Ly91bmN5Y2xvcGVkaWEuaGsKIS0tdW5jeWNsb3BlZGlhLmluZm8KfGh0dHA6Ly91bmN5Y2xvcGVkaWEudHcKdW5kZXJ3b29kYW1tby5jb20KfHx1bmRlcndvb2RhbW1vLmNvbQp8fHVuaG9seWtuaWdodC5jb20KLnVuaS5jYwp8fGNsZHIudW5pY29kZS5vcmcKLnVuaWZpY2F0aW9uLm5ldAoudW5pZmljYXRpb24ub3JnLnR3Cnx8dW5pcnVsZS5jbG91ZAoudW5pdGVkc29jaWFscHJlc3MuY29tCi51bml4MTAwLmNvbQp8fHVua25vd25zcGFjZS5vcmcKLnVub2RlZG9zLmNvbQp1bnBvLm9yZwoudW50cmFjZWFibGUudXMKfGh0dHA6Ly91bnRyYWNlYWJsZS51cwp8fHVvY24ub3JnCnRvci51cGRhdGVzdGFyLmNvbQoudXBob2xkanVzdGljZS5vcmcKLnVwbG9hZDR1LmluZm8KdXBsb2FkZWQubmV0L2ZpbGUKfGh0dHA6Ly91cGxvYWRlZC5uZXQvZmlsZQp8aHR0cDovL3VwbG9hZGVkLnRvL2ZpbGUKLnVwbG9hZHN0YXRpb24uY29tL2ZpbGUKLnVwbWVkaWEubWcKfHx1cG1lZGlhLm1nCi51cG9ybmlhLmNvbQp8aHR0cDovL3Vwb3JuaWEuY29tCnx8dXByb3h5Lm9yZwp8fHVwdG9kb3duLmNvbQoudXB3aWxsLm9yZwp1cjdzLmNvbQp8fHVyYmFuc3Vydml2YWwuY29tCm15c2hhcmUudXJsLmNvbS50dy8KfHx1cmxib3JnLmNvbQp8fHVybHBhcnNlci5jb20KdXMudG8KfHx1c2Fjbi5jb20KLnVzYWlwLmV1Cnx8dXNhaXAuZXUKZGFsYWlsYW1hLnVzYy5lZHUKaWlwZGlnaXRhbC51c2VtYmFzc3kuZ292Cnx8dXNmay5taWwKfHx1c21hLmVkdQp8fHVzbWMubWlsCi51c29jY3RuLmNvbQp8aHR0cDovL3RhcnIudXNwdG8uZ292Lwp8fHRzZHIudXNwdG8uZ292Ci51c3RyZWFtLnR2Cnx8dXN0cmVhbS50dgohLS18fHVzdHdyYXAuaW5mbwoudXN1bml0ZWRuZXdzLmNvbQp8aHR0cDovL3VzdW5pdGVkbmV3cy5jb20KdXN1cy5jYwoudXRvcGlhbnBhbC5jb20KfHx1dG9waWFucGFsLmNvbQoudXUtZ2cuY29tCi51dnd4eXoueHl6Cnx8dXZ3eHl6Lnh5egoudXdhbnRzLmNvbQoudXdhbnRzLm5ldAp1eWdodXIuY28udWsKfGh0dHA6Ly91eWdodXItai5vcmcKfHx1eWdodXJhbWVyaWNhbi5vcmcKLnV5Z2h1cmNhbmFkaWFuc29jaWV0eS5vcmcKLnV5Z2h1cmVuc2VtYmxlLmNvLnVrCnx8dXlnaHVyY29uZ3Jlc3Mub3JnCi51eWdodXJwZW4ub3JnCi51eWdodXJwcmVzcy5jb20KfGh0dHBzOi8vdXlnaHVycHJlc3MuY29tCi51eWdodXJzdHVkaWVzLm9yZwp8aHR0cDovL3V5Z2h1cnN0dWRpZXMub3JnCnV5Z3VyLm9yZwp8aHR0cDovL3V5bWFhcmlwLmNvbS8KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLVZWLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoudjJyYXkuY29tCnx8djJyYXkuY29tCi52YW4wMDEuY29tCi52YW42OTguY29tCi52YW5lbXUuY24KLnZhbmlsbGEtanAuY29tCi52YW5wZW9wbGUuY29tCnZhbnNreS5jb20KfHx2YXRpY2FubmV3cy52YQp8fHZjZi1vbmxpbmUub3JnCnx8dmNmYnVpbGRlci5vcmcKLnZlZ2FzcmVkLmNvbQoudmVsa2FlcG9jaGEuc2sKLnZlbmJicy5jb20KLnZlbmNoaW5hLmNvbQoudmVuZXRpYW5tYWNhby5jb20KfHx2ZW5ldGlhbm1hY2FvLmNvbQp2ZW9oLmNvbQpteXNpdGUudmVyaXpvbi5uZXQKdmVybW9udHRpYmV0Lm9yZwoudmVyc2F2cG4uY29tCnx8dmVyc2F2cG4uY29tCnx8dmVyeWJzLmNvbQoudmZ0LmNvbS50dwoudmliZXIuY29tCnx8dmliZXIuY29tCi52aWNhLmluZm8KLnZpY3RpbXNvZmNvbW11bmlzbS5vcmcKfGh0dHA6Ly92aWN0aW1zb2Zjb21tdW5pc20ub3JnCnx8dmlkLm1lCnx8dmlkYmxlLmNvbQp2aWRlb2JhbS5jb20KfHx2aWRlb2JhbS5jb20KLnZpZGVvZGV0ZWN0aXZlLmNvbQoudmlkZW9tZWdhLnR2Cnx8dmlkZW9tZWdhLnR2Ci52aWRlb21vLmNvbQp2aWRlb3BlZGlhd29ybGQuY29tCi52aWRlb3ByZXNzLmNvbQoudmlkaW5mby5vcmcvdmlkZW8KdmlldGRhaWt5bmd1eWVuLmNvbQoudmlqYXlhdGVtcGxlLm9yZwp2aW1lby5jb20KfHx2aW1lby5jb20KfHx2aW1wZXJhdG9yLm9yZwp8fHZpbmNuZC5jb20KfHx2aW5uaWV2LmNvbQp8aHR0cDovL3d3dy5saWIudmlyZ2luaWEuZWR1L2FyZWEtc3R1ZGllcy9UaWJldC90aWJldC5odG1sCi52aXJ0dWFscmVhbHBvcm4uY29tCnx8dmlydHVhbHJlYWxwb3JuLmNvbQp2aXNpYmxldHdlZXRzLmNvbQp8aHR0cDovL255LnZpc2lvbnRpbWVzLmNvbQoudml0YWwyNDcub3JnCnx8dml1LmNvbQoudml2YWhlbnRhaTR1Lm5ldAoudml2YXR1YmUuY29tCi52aXZ0aG9tYXMuY29tCnx8dml2dGhvbWFzLmNvbQoudmphdi5jb20KfHx2amF2LmNvbQoudmptZWRpYS5jb20uaGsKLnZsbGNzLm9yZwp8aHR0cDovL3ZsbGNzLm9yZwp8fHZtaXhjb3JlLmNvbQp8fHZuZXQubGluawpjbi52b2EubW9iaQp0dy52b2EubW9iaQoudm9hY2hpbmVzZWJsb2cuY29tCnx8dm9hY2hpbmVzZWJsb2cuY29tCnZvYWdkLmNvbQoudm9hY2FudG9uZXNlLmNvbQp8fHZvYWNhbnRvbmVzZS5jb20Kdm9hY2hpbmVzZS5jb20KfHx2b2FjaGluZXNlLmNvbQoudm9hbmV3cy5jb20KfHx2b2FuZXdzLmNvbQp2b2F0aWJldGFuLmNvbQp8fHZvYXRpYmV0YW4uY29tCi52b2F0aWJldGFuZW5nbGlzaC5jb20KfHx2b2F0aWJldGFuZW5nbGlzaC5jb20KLnZvY2F0aXYuY29tCnZvY24udHYKLnZvdC5vcmcKfHx2b3Qub3JnCi52b3ZvMjAwMC5jb20KfGh0dHA6Ly92b3ZvMjAwMC5jb20KLnZveGVyLmNvbQp8fHZveGVyLmNvbQoudm95LmNvbQp8fHZwbi5hYwoudnBuNGFsbC5jb20KfHx2cG40YWxsLmNvbQoudnBuYWNjb3VudC5vcmcKfGh0dHA6Ly92cG5hY2NvdW50Lm9yZwoudnBuYWNjb3VudHMuY29tCnx8dnBuYWNjb3VudHMuY29tCi52cG5jb21wYXJpc29uLm9yZwoudnBuY3VwLmNvbQp8fHZwbmN1cC5jb20KdnBuYm9vay5jb20KLnZwbmNvdXBvbnMuY29tCnxodHRwOi8vdnBuY291cG9ucy5jb20KLnZwbmRhZGEuY29tCnx8dnBuZGFkYS5jb20KLnZwbmZhbi5jb20KdnBuZmlyZS5jb20KLnZwbmZpcmVzLmJpegoudnBuZm9yZ2FtZS5uZXQKfHx2cG5mb3JnYW1lLm5ldAp8fHZwbmdhdGUuanAKLnZwbmdhdGUubmV0Cnx8dnBuZ2F0ZS5uZXQKLnZwbmdyYXRpcy5uZXQKdnBuaHEuY29tCi52cG5tYXN0ZXIuY29tCnx8dnBubWFzdGVyLmNvbQoudnBubWVudG9yLmNvbQp8fHZwbm1lbnRvci5jb20KLnZwbmluamEubmV0Cnx8dnBuaW5qYS5uZXQKLnZwbmludG91Y2guY29tCnx8dnBuaW50b3VjaC5uZXQKdnBuamFjay5jb20KfHx2cG5qYWNrLmNvbQoudnBucGljay5jb20KfHx2cG5waWNrLmNvbQp8fHZwbnBvcC5jb20KfHx2cG5wcm9uZXQuY29tCi52cG5yZWFjdG9yLmNvbQp8fHZwbnJlYWN0b3IuY29tCnx8dnBucmV2aWV3ei5jb20KLnZwbnNlY3VyZS5tZQp8fHZwbnNlY3VyZS5tZQoudnBuc2hhemFtLmNvbQp8fHZwbnNoYXphbS5jb20KLnZwbnNoaWVsZGFwcC5jb20KfHx2cG5zaGllbGRhcHAuY29tCi52cG5zcC5jb20KLnZwbnRyYWZmaWMuY29tCi52cG50dW5uZWwuY29tCnx8dnBudHVubmVsLmNvbQoudnBudWsuaW5mbwp8fHZwbnVrLmluZm8KfHx2cG51bmxpbWl0ZWRhcHAuY29tCi52cG52aXAuY29tCnx8dnBudmlwLmNvbQoudnBud29ybGR3aWRlLmNvbQoudnBvcm4uY29tCnx8dnBvcm4uY29tCi52cHNlci5uZXQKQEB8fHZwc2VyLm5ldAp2cmFpZXNhZ2Vzc2UubmV0Ci52cm10ci5jb20KfHx2dHVubmVsLmNvbQp8fHZ1a3UuY2MKCiEtLS0tLS0tLS0tLS0tLS0tLS0tLVdXLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpsaXN0cy53My5vcmcvYXJjaGl2ZXMvcHVibGljCnx8dzNzY2hvb2xzLmNvbQp8fHdhZmZsZTE5OTkuY29tCi53YWhhcy5jb20KLndhaWdhb2J1LmNvbQp3YWlrZXVuZy5vcmcvcGhwX3dpbmQKLndhaWxhaWtlLm5ldAoud2Fpd2FpZXIuY29tCnxodHRwOi8vd2Fpd2FpZXIuY29tCnx8d2FsbG1hbWEuY29tCndhbGxvcm5vdC5vcmcKfHx3YWxscGFwZXJjYXNhLmNvbQoud2FsbHByb3h5LmNvbQpAQHx8d2FsbHByb3h5LmNvbS5jbgp8fHdhbHRlcm1hcnRpbi5jb20KfHx3YWx0ZXJtYXJ0aW4ub3JnCnx8d3d3Lndhbi1wcmVzcy5vcmcKfHx3YW5kZXJpbmdob3JzZS5uZXQKfHx3YW5nYWZ1Lm5ldAp8fHdhbmdqaW5iby5vcmcKLndhbmdqaW5iby5vcmcKd2FuZ2xpeGlvbmcuY29tCi53YW5nby5vcmcKfHx3YW5nby5vcmcKd2FuZ3J1b3NodWkubmV0Cnd3dy53YW5ncnVvd2FuZy5vcmcKd2FudC1kYWlseS5jb20Kd2FwZWRpYS5tb2JpL3poc2ltcAp8fHdhc2VscHJvLmNvbQoud2F0Y2hpbmVzZS5jb20KLndhdHRwYWQuY29tCnx8d2F0dHBhZC5jb20KLm1ha3pob3Uud2FyZWhvdXNlMzMzLmNvbQp3YXNoZW5nLm5ldAoud2F0Y2g4eC5jb20KfHx3YXRjaG15Z2YubmV0Cnx8d2F2LnR2Ci53ZGY1LmNvbQoud2VhcmVoYWlyeS5jb20KLndlYXJuLmNvbQp8fHdlYXJuLmNvbQp8aHR0cDovL2hrY29jLndlYXRoZXIuY29tLmhrCnx8aHVkYXRvcmlxLndlYi5pZAp8fHdlYjJwcm9qZWN0Lm5ldAp3ZWJiYW5nLm5ldAoud2ViZXZhZGVyLm9yZwoud2ViZnJlZXIuY29tCndlYmxhZ3UuY29tCi53ZWJqYi5vcmcKLndlYnJ1c2gubmV0CndlYnMtdHYubmV0Ci53ZWJzaXRlcHVsc2UuY29tL2hlbHAvdGVzdHRvb2xzLmNoaW5hLXRlc3QKfGh0dHA6Ly93d3cud2Vic25hcHIuY29tCi53ZWJ3YXJwZXIubmV0CnxodHRwOi8vd2Vid2FycGVyLm5ldAp3ZWJ3b3JrZXJkYWlseS5jb20KLndlZWttYWcuaW5mbwp8fHdlZmlnaHRjZW5zb3JzaGlwLm9yZwoud2Vmb25nLmNvbQp3ZWlib2xlYWsuY29tCi53ZWlodW8ub3JnCndlaWppbmdzaGVuZy5vcmcKLndlaW1pbmcuaW5mbwp8fHdlaW1pbmcuaW5mbwp3ZWlxdWFud2FuZy5vcmcKfGh0dHA6Ly93ZWlzdW8ud3MKLndlbG92ZWNvY2suY29tCi53ZW1pZ3JhdGUub3JnCnxodHRwOi8vd2VtaWdyYXRlLm9yZwp3ZW5nZXdhbmcuY29tCnx8d2VuZ2V3YW5nLm9yZwoud2VuaHVpLmNoCnxodHRwOi8vdHJhbnMud2Vud2VpcG8uY29tL2diLwoud2VueHVlY2l0eS5jb20KfHx3ZW54dWVjaXR5LmNvbQoud2VueXVuY2hhby5jb20KfHx3ZW55dW5jaGFvLmNvbQoud2VzdGNhLmNvbQp8fHdlc3RjYS5jb20KfHx3ZXN0ZXJud29sdmVzLmNvbQoud2VzdGtpdC5uZXQKfHx3ZXN0cG9pbnQuZWR1Ci53ZXN0ZXJuc2h1Z2RlbnNvY2lldHkub3JnCndldHB1c3N5Z2FtZXMuY29tCi53ZXRwbGFjZS5jb20Kd2V4aWFvYm8ub3JnCnx8d2V4aWFvYm8ub3JnCndlemhpeW9uZy5vcmcKfHx3ZXpvbmUubmV0Ci53Zm9ydW0uY29tCnx8d2ZvcnVtLmNvbS8KLndoYXRibG9ja2VkLmNvbQp8fHdoYXRibG9ja2VkLmNvbQoud2hlYXRzZWVkcy5vcmcKfHx3aGVlbG9ja3NsYXRpbi5jb20KLndoaXBwZWRhc3MuY29tCiEtLXxodHRwOi8vd2hvLmlzLwoud2hvZXIubmV0Cnx8d2hvZXIubmV0Cndob3RhbGtpbmcuY29tCndoeWxvdmVyLmNvbQp8fHdoeXgub3JnCnxodHRwOi8vemguZWNkbS53aWtpYS5jb20KfGh0dHA6Ly9ldmNoay53aWtpYS5jb20KZnEud2lraWEuY29tCnpoLnB0dHBlZGlhLndpa2lhLmNvbS93aWtpLyVFNyVCRiU5MiVFNSU4QyU4NSVFNSVBRCU5MCVFNCVCOSU4QiVFNCVCQSU4Mgpjbi51bmN5Y2xvcGVkaWEud2lraWEuY29tCnpoLnVuY3ljbG9wZWRpYS53aWtpYS5jb20KfHx3aWtpbGVha3MuY2gKfHx3aWtpbGVha3MuY29tCnx8d2lraWxlYWtzLmRlCnx8d2lraWxlYWtzLmV1Cnx8d2lraWxlYWtzLmx1Ci53aWtpbGVha3Mub3JnCnx8d2lraWxlYWtzLm9yZwp8fHdpa2lsZWFrcy5wbAoud2lraWxlYWtzLWZvcnVtLmNvbQp3aWxkYW1tby5jb20KLndpbGxpYW1oaWxsLmNvbQp8fGNvbGxhdGVyYWxtdXJkZXIuY29tCnx8Y29sbGF0ZXJhbG11cmRlci5vcmcKd2lraWxpdnJlcy5pbmZvL3dpa2kvJUU5JTlCJUI2JUU1JTg1JUFCJUU1JUFFJUFBJUU3JUFCJUEwCnx8d2lraW1hcGlhLm9yZwoKIS0tLS0tLS0tLS0tLS1XaWtpcGVkaWEgUmVsYXRlZC0tLS0tLS0tLS0tLS0KISFFbWVyZ2VuY3kgbmVlZCBvbmx5KElQL1BvcnQgYmxvY2sgdXNhZ2UpISEKIS0tLS0tLTAtLS0tLS0KIS0tfHxtZWRpYXdpa2kub3JnCiEtLUBAfHxtLm1lZGlhd2lraS5vcmcKIS0tLS0tLTEtLS0tLS0KIS0tfHx3aWtpZGF0YS5vcmcKIS0tQEB8fG0ud2lraWRhdGEub3JnCiEtLS0tLS0yLS0tLS0tCiEtLXx8d2lraW1lZGlhLm9yZwohLS1AQHx8bGlzdHMud2lraW1lZGlhLm9yZwohLS1AQHx8bS53aWtpbWVkaWEub3JnCiEtLUBAfHxwaGFicmljYXRvci53aWtpbWVkaWEub3JnCiEtLUBAfHx1cGxvYWQud2lraW1lZGlhLm9yZwohLS1AQHx8d2lraXRlY2gud2lraW1lZGlhLm9yZwohLS0tLS0tMy0tLS0tLQohLS18fHdpa2lib29rcy5vcmcKIS0tQEB8fG0ud2lraWJvb2tzLm9yZwohLS0tLS0tNC0tLS0tLQohLS18fHdpa2l2ZXJzaXR5Lm9yZwohLS1AQHx8bS53aWtpdmVyc2l0eS5vcmcKIS0tLS0tLTUtLS0tLS0KIS0tfHx3aWtpc291cmNlLm9yZwohLS1AQHx8bS53aWtpc291cmNlLm9yZwp8aHR0cDovL3poLndpa2lzb3VyY2Uub3JnCiEtLS0tLS02LS0tLS0tCiEtLXx8d2lraXF1b3RlLm9yZwohLS1AQHx8bS53aWtpcXVvdGUub3JnCiEtLS0tLS03LS0tLS0tCiEtLXx8d2lraW5ld3Mub3JnCiEtLUBAfHxtLndpa2luZXdzLm9yZwp8fHpoLndpa2luZXdzLm9yZwohLS0tLS0tOC0tLS0tLQohLS18fHdpa2l2b3lhZ2Uub3JnCiEtLUBAfHxtLndpa2l2b3lhZ2Uub3JnCiEtLXxodHRwOi8vemgud2lraXZveWFnZS5vcmcKIS0tLS0tLTktLS0tLS0KIS0tfHx3aWt0aW9uYXJ5Lm9yZwohLS1AQHx8bS53aWt0aW9uYXJ5Lm9yZwohLS18aHR0cDovL3poLndpa3Rpb25hcnkub3JnCiEtLS0tLTEwLS0tLS0tCiEtLXx8d2lraW1lZGlhZm91bmRhdGlvbi5vcmcKIS0tQEB8fG0ud2lraW1lZGlhZm91bmRhdGlvbi5vcmcKIS0tLS1NYWluLS0tLS0KISEtLXx8ZW4ud2lraXBlZGlhLm9yZwohLS18fHdpa2lwZWRpYS5vcmcKfHxqYS53aWtpcGVkaWEub3JnCiEhLS16aC53aWtpcGVkaWEub3JnCiEtLXx8emgud2lraXBlZGlhLm9yZwohIS0tfHx1Zy5tLndpa2lwZWRpYS5vcmcKISEtLXpoLm0ud2lraXBlZGlhLm9yZwohIS0tfGh0dHBzOi8vemgubS53aWtpcGVkaWEub3JnCiEtLUBAfHxtLndpa2lwZWRpYS5vcmcKISEtLXxodHRwczovL3poLndpa2lwZWRpYS5vcmcKIS0tT3RoZXIgTGFuZ3VhZ2VzIG9mIFdpa2lwZWRpYQohIS0td3V1Lndpa2lwZWRpYS5vcmcKISEtLXxodHRwczovL3d1dS53aWtpcGVkaWEub3JnCiEhLS16aC15dWUud2lraXBlZGlhLm9yZwohIS0tfGh0dHBzOi8vemgteXVlLndpa2lwZWRpYS5vcmcKISEhIFN0YXJ0aW5nIHdpdGggISEgYXJlIHByZXZpb3VzIHJ1bGVzIHJlcGxhY2VkIGJ5Ogp8fHdpa2lwZWRpYS5vcmcKCnx8d2lraXdpa2kuanAKfHxjYXNpbm8ud2lsbGlhbWhpbGwuY29tCnx8c3BvcnRzLndpbGxpYW1oaWxsLmNvbQp8fHZlZ2FzLndpbGxpYW1oaWxsLmNvbQp8fHdpbGx3Lm5ldAp8fHdpbmRvd3NwaG9uZW1lLmNvbQoud2luZHNjcmliZS5jb20KfHx3aW5kc2NyaWJlLmNvbQp8fGNvbW11bml0eS53aW5keS5jb20KfHx3aW5neS5zaXRlCi53aW5uaW5nMTEuY29tCndpbndoaXNwZXJzLmluZm8KfHx3aW9uZXdzLmNvbQp8fHdpcmVkYnl0ZXMuY29tCnx8d2lyZWRwZW4uY29tCiEtLXx8d2lyZXNoYXJrLm9yZwoud2lzZG9tcHVicy5vcmcKLndpc2V2aWQuY29tCnx8d2lzZXZpZC5jb20KLndpdG5lc3NsZWV0ZWFjaGluZy5jb20KLndpdG9waWEubmV0Ci53amJrLm9yZwp8fHdqYmsub3JnCnxodHRwOi8vd24uY29tCi53bmFjZy5jb20KLnduYWNnLm9yZwoud28udGMKfHx3b2VzZXIuY29tCnxodHRwOi8vd29lc2VybWlkZGxlLXdheS5uZXQvCi53b2thci5vcmcKfGh0dHA6Ly93b2thci5vcmcKd29sZmF4LmNvbQp8fHdvbGZheC5jb20KfHx3b29seXNzLmNvbQp3b29waWUuanAKfHx3b29waWUuanAKd29vcGllLnR2Cnx8d29vcGllLnR2Cnx8d29ya2F0cnVuYS5jb20KLndvcmtlcmRlbW8ub3JnLmhrCi53b3JrZXJlbXBvd2VybWVudC5vcmcKfHx3b3JrZXJzdGhlYmlnLm5ldAoud29ybGRjYXQub3JnCndvcmxkam91cm5hbC5jb20KLndvcmxkdnBuLm5ldAp8fHdvcmxkdnBuLm5ldAoKfHx2aWRlb3ByZXNzLmNvbQoud29yZHByZXNzLmNvbQp8aHR0cDovLyoud29yZHByZXNzLmNvbQp8fGNoZW5zaGFuMjAwNDIwMDUud29yZHByZXNzLmNvbQp8fGNoaW5hdmlldy53b3JkcHJlc3MuY29tCnx8Y25iYm5ld3Mud29yZHByZXNzLmNvbQp8fGZyZWVkb21pbmZvbmV0d2ViLndvcmRwcmVzcy5jb20KfHxoa2E4OTY0LndvcmRwcmVzcy5jb20KfHxoa2FuZXdzLndvcmRwcmVzcy5jb20KfHxocXNibmV0LndvcmRwcmVzcy5jb20KfHxocXNib25saW5lLndvcmRwcmVzcy5jb20KfHxpbnZlc3RpZ2F0aW5nLndvcmRwcmVzcy5jb20KfHxqb2JuZXdlcmEud29yZHByZXNzLmNvbQp8fG1pbmdodWl5dy53b3JkcHJlc3MuY29tCnx8d28zdHR0LndvcmRwcmVzcy5jb20KfHxzdWppYXR1bi53b3JkcHJlc3MuY29tCnx8eGlqaWUud29yZHByZXNzLmNvbQp8fHdwLmNvbQoKIS18fHdvcm1zY3VscHRvci5jb20KLndvdy5jb20KLndvdy1saWZlLm5ldAp8fHdvd2xlZ2FjeS5tbAp8fHdvd3Bvcm4uY29tCnx8d293Z2lybHMuY29tCi53b3dyay5jb20Kd294aW5naHVpZ3VvLmNvbQoud295YW9saWFuLm9yZwp8aHR0cDovL3dveWFvbGlhbi5vcmcKLndwb2ZvcnVtLmNvbQp8fHdwb2ZvcnVtLmNvbQoud3F5ZC5vcmcKfHx3cXlkLm9yZwp3cmNoaW5hLm9yZwp3cmV0Y2guY2MKIS1jbi53c2ouY29tL2diLzIwMTMwMjE1L3RlYzExMzg1My5hc3AKLndzai5jb20KfHx3c2ouY29tCi53c2oubmV0Cnx8d3NqLm5ldAoud3NqaGsuY29tCi53dGJuLm9yZwoud3RmcGVvcGxlLmNvbQp3dWVya2FpeGkuY29tCnx8d3VmYWZhbmd3ZW4uY29tCnd1Zmkub3JnLnR3Cnx8d3VndW9ndWFuZy5jb20Kd3VqaWUubmV0Cnd1amllbGl1bGFuLmNvbQp8fHd1amllbGl1bGFuLmNvbQp3dWthbmdydWkubmV0Cnx8d3V3LnJlZAp8fHd1eWFuYmxvZy5jb20KLnd3aXR2LmNvbQp8fHd3aXR2LmNvbQp3enlib3kuaW0vcG9zdC8xNjAKCiEtLS0tLS0tLS0tLS0tLS0tLS0tLVhYLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoueC1iZXJyeS5jb20KfHx4LWJlcnJ5LmNvbQp8fHgtYXJ0LmNvbQp8fHgtd2FsbC5vcmcKeDE5NDl4LmNvbQp4MzY1eC5jb20KeGFuZ2EuY29tCnx8eGJhYmUuY29tCi54Ym9va2NuLmNvbQp8fHhib29rY24uY29tCnx8eGNhZmUuaW4KfHx4Y2l0eS5qcAoueGNyaXRpYy5jb20KfGh0dHA6Ly9jZG4qLnhkYS1kZXZlbG9wZXJzLmNvbQoueGVyb3RpY2EuY29tCmRlc3RpbnkueGZpbGVzLnRvL3ViYnRocmVhZHMKLnhmbS5wcC5ydQoueGdteWQuY29tCnx8eGdteWQuY29tCnhoYW1zdGVyLmNvbQp8fHhoYW1zdGVyLmNvbQoueGlhbmJhLm5ldAoueGlhbmNoYXdhbmcubmV0Ci54aWFuamlhbi50dwp8aHR0cDovL3hpYW5qaWFuLnR3Ci54aWFucWlhby5uZXQKLnhpYW9iYWl3dS5jb20KLnhpYW9jaHVuY25qcC5jb20KLnhpYW9kLmluCi54aWFvaGV4aWUuY29tCnx8eGlhb2xhbi5tZQp8fHhpYW9tYS5vcmcKfHx4aWFvaGV4aWUuY29tCnhpZXpodWEuY29tCi54aWh1YS5lcwpmb3J1bS54aW5iYW8uZGUvZm9ydW0KLnhpbmcuY29tCnxodHRwOi8veGluZy5jb20KLnhpbm1pYW8uY29tLmhrCnx8eGlubWlhby5jb20uaGsKeGluc2hlbmcubmV0CnhpbnNoaWp1ZS5jb20KeGluaHVhbmV0Lm9yZwp8aHR0cDovL3hpbnl1YmJzLm5ldAoueGlvbmdwaWFuLmNvbQoueGl1cmVuLm9yZwp4aXphbmctemhpeWUub3JnCnhqcC5jYwp8fHhqcC5jYwp8fHhqdHJhdmVsZ3VpZGUuY29tCnhsZm10YWxrLmNvbQp8fHhsZm13ei5pbmZvCnx8eG1sLXRyYWluaW5nLWd1aWRlLmNvbQp4bW92aWVzLmNvbQp8fHhueHguY29tCnhwZG8ubmV0Cnx8eHB1ZC5vcmcKLnhyZW50ZHZkLmNvbQoueHNreXdhbGtlci5uZXQKfHx4dHViZS5jb20KYmxvZy54dWl0ZS5uZXQKdmxvZy54dWl0ZS5uZXQKeHV6aGl5b25nLm5ldAp8fHh1Y2hhby5vcmcKeHVjaGFvLm5ldAp8fHh1Y2hhby5uZXQKeHZpZGVvLmNjCi54dmlkZW9zLmNvbQp8fHh2aWRlb3MuY29tCnx8eHZpZGVvcy5lcwoueGtpd2kudGsvCi54eGJieC5jb20KLnh4bG1vdmllcy5jb20KfHx4eHguY29tCi54eHgueHh4CnxodHRwOi8veHh4Lnh4eAoueHh4ZnVja21vbS5jb20KfHx4eHh4LmNvbS5hdQoueHh4eW1vdmllcy5jb20KfGh0dHA6Ly94eHh5bW92aWVzLmNvbQp4eXMub3JnCnh5c2Jsb2dzLm9yZwp4eXk2OS5jb20KeHl5NjkuaW5mbwoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tWVktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnx8eWFrYnV0dGVyYmx1ZXMuY29tCnx8eWFtLmNvbQp8fHlhbS5vcmcudHcKLnlhbmdoZW5nanVuLmNvbQp5YW5namlhbmxpLmNvbQoueWFzbmkuY28udWsKfHx5YXNuaS5jby51awohLS18fHlhc3VrdW5pLm9yLmpwCi55YXlhYmF5LmNvbS9mb3J1bQoueWR5LmNvbQoueWVhaHRlZW50dWJlLmNvbQp8fHllYWh0ZWVudHViZS5jb20KfHx5ZWNsLm5ldAp8fHllZWxvdS5jb20KfHx5ZWV5aS5jb20KeWVnbGUubmV0Cnx8eWVnbGUubmV0Ci55ZXMueHh4Cnx8eWVzMTIzLmNvbS50dwp8fHllc2FzaWEuY29tCnx8eWVzYXNpYS5jb20uaGsKLnllcy1uZXdzLmNvbQp8aHR0cDovL3llcy1uZXdzLmNvbQoueWVzcG9ybnBsZWFzZS5jb20KfHx5ZXNwb3JucGxlYXNlLmNvbQp8aHR0cDovL3lleWVjbHViLmNvbQohLS15ZnJvZy5jb20KfHx5aGN3Lm5ldAoueWliYWRhLmNvbQoueWliYW9jaGluYS5jb20KLnlpZGlvLmNvbQp8fHlpZGlvLmNvbQp5aWx1YmJzLmNvbQp4YS55aW1nLmNvbQoueWluZ3N1b3NzLmNvbQoueWlwdWIuY29tCnx8eWlwdWIuY29tCnlpbmxlaS5vcmcvbXQKLnlpemhpaG9uZ3hpbmcuY29tCi55b2J0LmNvbQoueW9idC50dgp8fHlvYnQudHYKLnlvZ2ljaGVuLm9yZwp8fHlvZ2ljaGVuLm9yZwoueW9sYXNpdGUuY29tCi55b21pdXJpLmNvLmpwCnlvbmcuaHUKLnlvcmtiYnMuY2EKfHx5b3V4dS5pbmZvCi55b3VqaXp6LmNvbQp8fHlvdWppenouY29tCi55b3VtYWtlci5jb20KfHx5b3VtYWtlci5jb20KLnlvdW5ncG9ybnZpZGVvcy5jb20KeW91bmdzcGlyYXRpb24uaGsKLnlvdXBhaS5vcmcKfHx5b3VwYWkub3JnCi55b3VyLWZyZWVkb20ubmV0Cnx8eW91cmVwZWF0LmNvbQoueW91cnByaXZhdGV2cG4uY29tCnx8eW91cnByaXZhdGV2cG4uY29tCi55b3VzZW5kaXQuY29tCnx8eW91c2VuZGl0LmNvbQoueW91dGhuZXRyYWRpby5vcmcvdG1pdC9mb3J1bQpibG9nLnlvdXRod2FudC5jb20udHcKbWUueW91dGh3YW50LmNvbS50dwpzaGFyZS55b3V0aHdhbnQuY29tLnR3CnRvcGljLnlvdXRod2FudC5jb20udHcKLnlvdXBvcm4uY29tCnx8eW91cG9ybi5jb20KLnlvdXBvcm5nYXkuY29tCnx8eW91cG9ybmdheS5jb20KLnlvdXJsaXN0ZW4uY29tCnxodHRwOi8veW91cmxpc3Rlbi5jb20KLnlvdXJsdXN0LmNvbQp8aHR0cDovL3lvdXJsdXN0LmNvbQp5b3VzaHVuMTIuY29tCi55b3V0dWJlY24uY29tCnlvdXZlcnNpb24uY29tCnx8eW91dmVyc2lvbi5jb20KYmxvZy55b3V4dS5pbmZvLzIwMTAvMDMvMTQvd2VzdC1jaGFtYmVyCnl0aHQubmV0Cnl1YW5taW5nLm5ldAoueXVhbnpoZW5ndGFuZy5vcmcKLnl1bGdodW4uY29tCnx8eXVuY2hhby5uZXQKfHx5dW50aXB1Yi5jb20KLnl1dnV0dS5jb20KfHx5dmVzZ2VsZXluLmNvbQoueXdwdy5jb20vZm9ydW1zL2hpc3RvcnkvcG9zdC9BMC9wMC9odG1sLzIyNwp5eDUxLm5ldAoueXlpaS5vcmcKfHx5eWlpLm9yZwoueXp6ay5jb20KfGh0dHA6Ly95enprLmNvbQoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tWlotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnphY2Vib29rLmNvbQouemFsbW9zLmNvbQp8fHphbG1vcy5jb20KfHx6YW5uZWwuY29tCi56YW9iYW8uY29tCnx8emFvYmFvLmNvbQp8aHR0cDovL3phb2Jhby5jb20uc2cKfHx6YW9iYW8uY29tLnNnCi56YW96b24uY29tCnx8emRuZXQuY29tLnR3Ci56ZWxsby5jb20KfHx6ZWxsby5jb20KLnplbmdqaW55YW4ub3JnCi56ZW5tYXRlLmNvbQp8fHplbm1hdGUuY29tCnx8emVubWF0ZS5jb20ucnUKfHx6ZXJvbmV0LmlvCnx8emV1dGNoLmNvbQohLS13d3cuemZyZWV0LmNvbS9wb3N0L3VzZWp1bXAtYnJvd25zLmh0bWwKLnpmcmVldC5jb20KLnpnc2RkaC5jb20Kemd6Y2pqLm5ldAouemhhbmJpbi5uZXQKfHx6aGFuYmluLm5ldAouemhhbmdib2xpLm5ldAp8fHpoYW5ndGlhbmxpYW5nLmNvbQp8fHpoYW5sdmUub3JnCnpoZW5naHVpLm9yZwouemhlbmdqaWFuLm9yZwp8fHpoZW5namlhbi5vcmcKemhlbmd3dW5ldC5vcmcKemhlbmxpYnUuaW5mbwp8fHpoZW5saWJ1LmluZm8KLnpoZW5saWJ1MTk4NC5jb20KfHx6aGVubGlidTE5ODQuY29tCnxodHRwOi8vemhlbnhpYW5nLmJpegouemhpbmVuZ2x1eW91LmNvbQp6aG9uZ2d1by5jYQp8aHR0cDovL3pob25nZ3VvcmVucXVhbi5vcmcKemhvbmdndW90ZXNlLm5ldAp8fHpob25nZ3VvdGVzZS5uZXQKfHx6aG9uZ21lbmcub3JnCi56aG91c2h1Z3VhbmcuY29tCnx8emhyZWFkZXIuY29tCi56aHVhbmdiaS5tZQp8fHpodWFuZ2JpLm1lCi56aHVhbnhpbmcuY24KfHx6aHVhdGllYmEuY29tCnpodWljaGFndW9qaS5vcmcKfHx6aHVpY2hhZ3Vvamkub3JnCnxodHRwOi8vYm9vay56aTUubWUKLnppZGR1LmNvbS9kb3dubG9hZAp8fHppbGxpb25rLmNvbQouemluaW8uY29tCnx8emluaW8uY29tCi56aXBvcm4uY29tCi56aXBweXNoYXJlLmNvbQouemthaXAuY29tCnx8emthaXAuY29tCnJlYWxmb3J1bS56a2l6LmNvbQohLS18fHpsaWIubmV0Cnx8em13LmNuCi56b2RnYW1lLnVzCnpvbW9iby5uZXQKLnpvbmFldXJvcGEuY29tCnx8em9uYWV1cm9wYS5jb20KfHx6b25naGV4aW53ZW4uY29tCi56b25naGV4aW53ZW4ubmV0Cnx8em9vZ3Zwbi5jb20KfHx6b290b29sLmNvbQouem9vemxlLm5ldAp3cml0ZXIuem9oby5jb20KfHx6b3Jyb3Zwbi5jb20KfHx6cG4uaW0KfHx6c3BlZWRlci5tZQouenNyaGFvLmNvbQouenVvLmxhCnx8enVvLmxhCnx8enVvYmlhby5tZQouenVvbGEuY29tCnx8enVvbGEuY29tCnx8enZlcmVmZi5jb20KLnp5bmFpbWEuY29tCnp5emM5LmNvbQouenpjYXJ0b29uLmNvbQohIyMjIyMjIyMjIyMjIyNHZW5lcmFsIExpc3QgRW5kIyMjIyMjIyMjIyMjIyMjIyMKCiEjIyMjIyMjIyMjI1N1cHBsZW1lbnRhbCBMaXN0IFN0YXJ0IyMjIyMjIyMjIyMjIwohLS0tLS0tLS0tLS0tLS0tLS1VUkwgS2V5d29yZHMtLS0tLS0tLS0tLS0tLS0tLS0KNjRtZW1vCmFIUjBjSE02THk5NVpXTnNMbTVsZEEKZnJlZW5ldAouZ29vZ2xlLiovZmFsdW4KcGhvYm9zLmFwcGxlLmNvbSovdmlkZW8KcT1mcmVlZG9tCnElM0RmcmVlZG9tCnJlbWVtYmVyaW5nX3RpYW5hbm1lbl8yMF95ZWFycwpzZWFyY2gqc2FmZXdlYgpxPXRyaWFuZ2xlCnElM0RUcmlhbmdsZQp1bHRyYXJlYWNoCnVsdHJhc3VyZgohIyMjIyMjIyMjIyMjI1N1cHBsZW1lbnRhbCBMaXN0IEVuZCMjIyMjIyMjIyMjIyMKCiEjIyMjIyMjIyMjIyMjIyMjV2hpdGVsaXN0IFN0YXJ0IyMjIyMjIyMjIyMjIyMjIwpAQHx8YWxpeXVuLmNvbQpAQHx8YmFpZHUuY29tCiEtLUBAfHxiaW5nLmNvbQpAQHx8Y2hpbmFzby5jb20KQEB8fGNoaW5hei5jb20KQEB8aHR0cDovL25yY2guY3VsdHVyZS50dy8KCiEtLS1Tb21lIGFyZSBwb3dlcmVkIGJ5IEd1WGlhbmcgKEJHUCksIHBsZWFzZSBjb21tZW50IG9mZiBpZgohLS0teW91IGVuY291bnRlciBjb25uZWN0aXZpdHkgaXNzdWVzLgpAQHx8YWRzZXJ2aWNlLmdvb2dsZS5jb20KIS0tSVNQIGNhY2hlIHdvcmtzIHNvbWV0aW1lcywgdmVyaWZpZWQgYXQgZHJwZW5nICsgZ2VodWEuCkBAfHx0b29scy5nb29nbGUuY29tCkBAfHxjbGllbnRzZXJ2aWNlcy5nb29nbGVhcGlzLmNvbQpAQHx8Zm9udHMuZ29vZ2xlYXBpcy5jb20KQEB8fHN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20KQEB8fHRyYW5zbGF0ZS5nb29nbGVhcGlzLmNvbQpAQHx8dXBkYXRlLmdvb2dsZWFwaXMuY29tCkBAfHxzYWZlYnJvd3NpbmcuZ29vZ2xlYXBpcy5jb20KQEB8fGNvbm5lY3Rpdml0eWNoZWNrLmdzdGF0aWMuY29tCkBAfHxjc2kuZ3N0YXRpYy5jb20KQEB8fGZvbnRzLmdzdGF0aWMuY29tCkBAfHxzc2wuZ3N0YXRpYy5jb20KQEB8fGhhb3NvdS5jb20KQEB8fGlwLmNuCkBAfHxqaWtlLmNvbQpAQHxodHRwOi8vdHJhbnNsYXRlLmdvb2dsZS5jbgpAQHxodHRwOi8vd3d3Lmdvb2dsZS5jbi9tYXBzCkBAfHxodHRwMi5nb2xhbmcub3JnCkBAfHxnb3YuY24KQEB8fHFxLmNvbQpAQHx8c2luYS5jbgpAQHx8c2luYS5jb20uY24KQEB8fHNvZ291LmNvbQpAQHx8c28uY29tCkBAfHxzb3NvLmNvbQpAQHx8dWx1YWkuY29tLmNuCkBAfHx3ZWliby5jb20KQEB8fHlhaG9vLmNuCkBAfHx5b3VkYW8uY29tCkBAfHx6aG9uZ3NvdS5jb20KQEB8aHR0cDovL2ltZS5iYWlkdS5qcAohIyMjIyMjIyMjIyMjIyMjI1doaXRlbGlzdCBFbmQjIyMjIyMjIyMjIyMjIyMjIyMKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLUVPRi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg==' +module.exports = pacText diff --git a/packages/mitmproxy/src/lib/proxy/mitmproxy/createConnectHandler.js b/packages/mitmproxy/src/lib/proxy/mitmproxy/createConnectHandler.js index d0f65487..fc04155c 100644 --- a/packages/mitmproxy/src/lib/proxy/mitmproxy/createConnectHandler.js +++ b/packages/mitmproxy/src/lib/proxy/mitmproxy/createConnectHandler.js @@ -5,14 +5,32 @@ const log = require('../../../utils/util.log') const DnsUtil = require('../../dns/index') const localIP = '127.0.0.1' const defaultDns = require('dns') + +function isSslConnect (sslConnectInterceptors, req, cltSocket, head) { + for (const intercept of sslConnectInterceptors) { + const ret = intercept(req, cltSocket, head) + if (ret) { + return true + } + } + return false +} + // create connectHandler function -module.exports = function createConnectHandler (sslConnectInterceptor, fakeServerCenter, dnsConfig) { +module.exports = function createConnectHandler (sslConnectInterceptor, middlewares, fakeServerCenter, dnsConfig) { // return + const sslConnectInterceptors = [] + sslConnectInterceptors.push(sslConnectInterceptor) + for (const middleware of middlewares) { + if (middleware.sslConnectInterceptor) { + sslConnectInterceptors.push(middleware.sslConnectInterceptor) + } + } return function connectHandler (req, cltSocket, head) { // eslint-disable-next-line node/no-deprecated-api const srvUrl = url.parse(`https://${req.url}`) const hostname = srvUrl.hostname - if (typeof sslConnectInterceptor === 'function' && sslConnectInterceptor(req, cltSocket, head)) { + if (isSslConnect(sslConnectInterceptors, req, cltSocket, head)) { fakeServerCenter.getServerPromise(hostname, srvUrl.port).then((serverObj) => { connect(req, cltSocket, head, localIP, serverObj.port) }, (e) => { diff --git a/packages/mitmproxy/src/lib/proxy/mitmproxy/createRequestHandler.js b/packages/mitmproxy/src/lib/proxy/mitmproxy/createRequestHandler.js index 94a17021..95558322 100644 --- a/packages/mitmproxy/src/lib/proxy/mitmproxy/createRequestHandler.js +++ b/packages/mitmproxy/src/lib/proxy/mitmproxy/createRequestHandler.js @@ -6,10 +6,12 @@ const DnsUtil = require('../../dns/index') const log = require('../../../utils/util.log') const RequestCounter = require('../../choice/RequestCounter') const InsertScriptMiddleware = require('../middleware/InsertScriptMiddleware') +const OverWallMiddleware = require('../middleware/overwall') + const defaultDns = require('dns') const MAX_SLOW_TIME = 8000 // 超过此时间 则认为太慢了 // create requestHandler function -module.exports = function createRequestHandler (createIntercepts, externalProxy, dnsConfig, setting) { +module.exports = function createRequestHandler (createIntercepts, middlewares, externalProxy, dnsConfig, setting) { // return return function requestHandler (req, res, ssl) { let proxyReq @@ -44,8 +46,14 @@ module.exports = function createRequestHandler (createIntercepts, externalProxy, if (setting.script.enabled) { reqIncpts.unshift(InsertScriptMiddleware) } + for (const middleware of middlewares) { + reqIncpts.push(middleware) + } if (reqIncpts && reqIncpts.length > 0) { for (const reqIncpt of reqIncpts) { + if (!reqIncpt.requestIntercept) { + continue + } const goNext = reqIncpt.requestIntercept(context, req, res, ssl, next) if (goNext) { next() @@ -200,6 +208,11 @@ module.exports = function createRequestHandler (createIntercepts, externalProxy, const next = () => { resolve() } + for (const middleware of middlewares) { + if (middleware.responseInterceptor) { + middleware.responseInterceptor(req, res, proxyReq, proxyRes, ssl, next) + } + } if (!setting.script.enabled) { next() return @@ -217,7 +230,6 @@ module.exports = function createRequestHandler (createIntercepts, externalProxy, body += append.body } } - InsertScriptMiddleware.responseInterceptor(req, res, proxyReq, proxyRes, ssl, next, { head, body }) } else { next() diff --git a/packages/mitmproxy/src/lib/proxy/mitmproxy/index.js b/packages/mitmproxy/src/lib/proxy/mitmproxy/index.js index 9c1f80db..4ef7ec19 100644 --- a/packages/mitmproxy/src/lib/proxy/mitmproxy/index.js +++ b/packages/mitmproxy/src/lib/proxy/mitmproxy/index.js @@ -38,6 +38,7 @@ module.exports = { port = ~~port const requestHandler = createRequestHandler( createIntercepts, + middlewares, externalProxy, dnsConfig, setting @@ -55,6 +56,7 @@ module.exports = { const connectHandler = createConnectHandler( sslConnectInterceptor, + middlewares, fakeServersCenter, dnsConfig ) diff --git a/packages/mitmproxy/src/options.js b/packages/mitmproxy/src/options.js index 10a12621..a56df4c8 100644 --- a/packages/mitmproxy/src/options.js +++ b/packages/mitmproxy/src/options.js @@ -1,54 +1,22 @@ const interceptors = require('./lib/interceptor') const dnsUtil = require('./lib/dns') -const lodash = require('lodash') const log = require('./utils/util.log') -const path = require('path') -function matchHostname (hostMap, hostname) { - const value = hostMap[hostname] - if (value) { - return value - } - if (!value) { - for (const target in hostMap) { - if (target.indexOf('*') < 0) { - continue - } - // 正则表达式匹配 - if (hostname.match(target)) { - return hostMap[target] - } - } - } -} - -function isMatched (url, regexp) { - return url.match(regexp) -} - -function domainRegexply (target) { - return target.replace(/\./g, '\\.').replace(/\*/g, '.*') -} - -function domainMapRegexply (hostMap) { - const regexpMap = {} - lodash.each(hostMap, (value, domain) => { - if (domain.indexOf('*') >= 0) { - const regDomain = domainRegexply(domain) - regexpMap[regDomain] = value - } else { - regexpMap[domain] = value - } - }) - return regexpMap -} +const matchUtil = require('./utils/util.match') +const createOverwallMiddleware = require('./lib/proxy/middleware/overwall') module.exports = (config) => { - const intercepts = domainMapRegexply(config.intercepts) - const whiteList = domainMapRegexply(config.whiteList) + const intercepts = matchUtil.domainMapRegexply(config.intercepts) + const whiteList = matchUtil.domainMapRegexply(config.whiteList) const dnsMapping = config.dns.mapping const serverConfig = config const setting = serverConfig.setting + + const overwallMiddleware = createOverwallMiddleware(serverConfig.plugin.overwall) + const middlewares = [] + if (overwallMiddleware) { + middlewares.push(overwallMiddleware) + } const options = { port: serverConfig.port, dnsConfig: { @@ -56,19 +24,21 @@ module.exports = (config) => { mapping: dnsMapping }, setting, + middlewares, sslConnectInterceptor: (req, cltSocket, head) => { const hostname = req.url.split(':')[0] - const inWhiteList = matchHostname(whiteList, hostname) != null + const inWhiteList = matchUtil.matchHostname(whiteList, hostname) != null if (inWhiteList) { log.info('白名单域名,不拦截', hostname) return false } - return !!matchHostname(intercepts, hostname) // 配置了拦截的域名,将会被代理 + // 配置了拦截的域名,将会被代理 + return !!matchUtil.matchHostname(intercepts, hostname) }, createIntercepts: (context) => { const rOptions = context.rOptions const hostname = rOptions.hostname - const interceptOpts = matchHostname(intercepts, hostname) + const interceptOpts = matchUtil.matchHostname(intercepts, hostname) if (!interceptOpts) { // 该域名没有配置拦截器,直接过 return } @@ -78,13 +48,13 @@ module.exports = (config) => { const interceptOpt = interceptOpts[regexp] interceptOpt.key = regexp if (regexp !== true) { - if (!isMatched(rOptions.path, regexp)) { + if (!matchUtil.isMatched(rOptions.path, regexp)) { continue } } for (const impl of interceptors) { // 根据拦截配置挑选合适的拦截器来处理 - if (impl.is(interceptOpt)) { + if (impl.is && impl.is(interceptOpt)) { const interceptor = {} if (impl.requestIntercept) { // req拦截器 diff --git a/packages/mitmproxy/src/utils/util.log.js b/packages/mitmproxy/src/utils/util.log.js index b7e78e86..a1812d65 100644 --- a/packages/mitmproxy/src/utils/util.log.js +++ b/packages/mitmproxy/src/utils/util.log.js @@ -1,8 +1,11 @@ const log4js = require('log4js') const proxyConfig = require('../lib/proxy/common/config') +const level = process.env.NODE_ENV === 'development' ? 'debug' : 'info' +const path = require('path') +const filename = path.join(proxyConfig.getDefaultCABasePath(), '/logs/server.log') log4js.configure({ - appenders: { std: { type: 'stdout', level: 'debug' }, file: { type: 'file', pattern: 'yyyy-MM-dd', daysToKeep: 3, filename: proxyConfig.getDefaultCABasePath() + '/logs/server.log' } }, - categories: { default: { appenders: ['file', 'std'], level: 'info' } } + appenders: { std: { type: 'stdout', level: 'debug' }, file: { type: 'file', pattern: 'yyyy-MM-dd', daysToKeep: 3, filename } }, + categories: { default: { appenders: ['file', 'std'], level } } }) const logger = log4js.getLogger('server') module.exports = logger diff --git a/packages/mitmproxy/src/utils/util.match.js b/packages/mitmproxy/src/utils/util.match.js new file mode 100644 index 00000000..0d4807ae --- /dev/null +++ b/packages/mitmproxy/src/utils/util.match.js @@ -0,0 +1,48 @@ +const lodash = require('lodash') +function isMatched (url, regexp) { + return url.match(regexp) +} + +function domainRegexply (target) { + return target.replace(/\./g, '\\.').replace(/\*/g, '.*') +} + +function domainMapRegexply (hostMap) { + const regexpMap = {} + if (hostMap == null) { + return regexpMap + } + lodash.each(hostMap, (value, domain) => { + if (domain.indexOf('*') >= 0) { + const regDomain = domainRegexply(domain) + regexpMap[regDomain] = value + } else { + regexpMap[domain] = value + } + }) + return regexpMap +} + +function matchHostname (hostMap, hostname) { + const value = hostMap[hostname] + if (value) { + return value + } + if (!value) { + for (const target in hostMap) { + if (target.indexOf('*') < 0) { + continue + } + // 正则表达式匹配 + if (hostname.match(target)) { + return hostMap[target] + } + } + } +} +module.exports = { + isMatched, + domainRegexply, + domainMapRegexply, + matchHostname +} diff --git a/packages/mitmproxy/src/utils/util.process.js b/packages/mitmproxy/src/utils/util.process.js index 21a9bc26..cd3b3b59 100644 --- a/packages/mitmproxy/src/utils/util.process.js +++ b/packages/mitmproxy/src/utils/util.process.js @@ -1,8 +1,12 @@ module.exports = { fireError (e) { - process.send({ type: 'error', event: e }) + if (process.send) { + process.send({ type: 'error', event: e }) + } }, fireStatus (status) { - process.send({ type: 'status', event: status }) + if (process.send) { + process.send({ type: 'status', event: status }) + } } } diff --git a/packages/mitmproxy/test/dnsTest.mjs b/packages/mitmproxy/test/dnsTest.mjs index e3476771..05e98a0b 100644 --- a/packages/mitmproxy/test/dnsTest.mjs +++ b/packages/mitmproxy/test/dnsTest.mjs @@ -30,3 +30,5 @@ const hostname4 = 'gh.docmirror.top' dnsProviders.usa.lookup(hostname4) const hostname5 = 'gh2.docmirror.top' dnsProviders.usa.lookup(hostname5) + + diff --git a/packages/mitmproxy/test/matchTest.js b/packages/mitmproxy/test/matchTest.js index 67348d5a..df08c28c 100644 --- a/packages/mitmproxy/test/matchTest.js +++ b/packages/mitmproxy/test/matchTest.js @@ -15,3 +15,6 @@ chunk.copy(chunkNew, 0, 0, index) scriptBuf.copy(chunkNew, index, 0) chunk.copy(chunkNew, index + scriptBuf.length, index) console.log(chunkNew.toString()) + +const reg2 = '/aaaa/i' +console.log(new RegExp(reg2).test('aaaa')) diff --git a/packages/mitmproxy/test/pacTest.js b/packages/mitmproxy/test/pacTest.js new file mode 100644 index 00000000..8fdd98ef --- /dev/null +++ b/packages/mitmproxy/test/pacTest.js @@ -0,0 +1,6 @@ +const pac = require('../src/lib/proxy/middleware/source/pac') +const string = pac.FindProxyForURL('https://www.facebook.com', 'www.facebook.com') +console.log(string) + +const string2 = pac.FindProxyForURL('https://http2.golang.org', 'http2.golang.org') +console.log(string2)