├── .github └── workflows │ └── getSub.yml ├── README.md ├── config ├── provider │ ├── config.ini │ └── config.yml ├── sublist_free ├── sublist_mining └── subsource │ └── subsource.yaml ├── sub ├── free │ ├── fastestcloud.xyz │ ├── feiniaoyun.top │ ├── flyairport.top │ ├── gflink.net │ ├── goodfree │ │ ├── goodfree │ │ ├── goodfree64 │ │ ├── goodfreeClash.yml │ │ └── readme.md │ ├── htavpn.com │ ├── maossr.top │ ├── shan-cloud.xyz │ ├── www.ckcloud.xyz │ ├── www.dgycom.com │ ├── www.douluos.xyz │ ├── www.iacgbt.com │ ├── www.jafiyun.cc │ ├── www.kuaicloud.xyz │ ├── www.wolaile.icu │ └── zhuzhu12.com ├── miningClash.yml ├── miningUrl └── miningUrl64 └── utils ├── checkUrllist ├── check.py ├── ip_update.py ├── sub_convert.py ├── urllist2sub.py └── urllist2sub.py.bak ├── free ├── config.yaml ├── freess.py ├── freess.py.bak ├── freess2.py.bak ├── freev2.py ├── main.py ├── qqfreev2.py └── toClash │ ├── ip_update.py │ ├── readme.md │ ├── sub_convert.py │ └── toClash.py ├── getSubSource └── getSubSource.py └── requirements.txt /.github/workflows/getSub.yml: -------------------------------------------------------------------------------- 1 | name: 1.get Sub 2 | 3 | # 触发条件 4 | on: 5 | workflow_dispatch: 6 | 7 | schedule: 8 | - cron: '* */4 * * *' 9 | # 表达式生成 https://crontab.guru/ 10 | 11 | 12 | jobs: 13 | fetch: 14 | # 系统设置开始 15 | runs-on: ubuntu-latest 16 | steps: 17 | - name: 迁出代码 18 | uses: actions/checkout@v2 19 | 20 | - name: 安装Python 21 | uses: actions/setup-python@v2 22 | with: 23 | python-version: '3.x' 24 | - name: 加载缓存 25 | uses: actions/cache@v2 26 | with: 27 | path: ~/.cache/pip 28 | key: ${{ runner.os }}-pip-${{ hashFiles('**/run_in_Actions/requirements.txt') }} 29 | restore-keys: | 30 | ${{ runner.os }}-pip- 31 | - name: 设置时区 32 | run: sudo timedatectl set-timezone 'Asia/Shanghai' 33 | # 系统设置结束 34 | - name: 安装依赖 35 | run: | 36 | pip install -r ./utils/requirements.txt 37 | - name: 安装订阅转换工具-subconverter 38 | run: | 39 | wget -O subconverter.tar.gz https://github.com/tindy2013/subconverter/releases/latest/download/subconverter_linux64.tar.gz 40 | tar -zxvf subconverter.tar.gz -C ./ 41 | chmod +x ./subconverter/subconverter && nohup ./subconverter/subconverter >./subconverter.log 2>&1 & 42 | 43 | - name: 执行任务 - 1.get Sub Source 44 | run: | 45 | python ./utils/getSubSource/getSubSource.py 46 | - name: 执行任务 - 2.check urllist 47 | run: | 48 | python ./utils/checkUrllist/check.py 49 | - name: 执行任务 - 3.urllist to sub 50 | run: 51 | python ./utils/checkUrllist/urllist2sub.py 52 | - name: 执行任务 - 4.fetchFreeAirport 53 | run: | 54 | python ./utils/free/main.py 55 | python ./utils/free/toClash/toClash.py 56 | - name: Commit 57 | run: | 58 | git config --global user.name "GitHub Actions" 59 | git config --global user.email "actions@github.com" 60 | git pull origin main 61 | git add ./config/ 62 | git add ./sub/ 63 | git commit -m "🍀 $(date '+%Y-%m-%d %H:%M:%S')更新完成" 64 | 65 | - name: 推送更改 66 | uses: ad-m/github-push-action@master 67 | with: 68 | # github_token: ${{ secrets.TOKEN }} 69 | branch: main 70 | 71 | # - name: Single repo mirror 72 | # uses: Yikun/hub-mirror-action@master 73 | # with: 74 | # src: github/LiTugou 75 | # dst: gitee/li-tugou 76 | # dst_key: ${{ secrets.GITEE_PRIVATE_KEY }} 77 | # dst_token: ${{ secrets.GITEE_TOKEN }} 78 | # static_list: "Crontab" 79 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # getAirport 2 | 3 | ## copy source 4 | 5 | > copy [RenaLio/Mux2sub](https://github.com/RenaLio/Mux2sub) 6 | 7 | ## 功能 8 | 9 | > 1.获取网络分享的airport订阅地址 10 | > 11 | > 2.测试订阅地址的可用性 12 | > 13 | > 3.将可用订阅地址转成订阅 14 | > 15 | > 其它功能: 抓取免费airport 16 | 17 | ## 仓库文档 18 |
19 | 展开查看仓库文档 20 | 21 | ``` 22 | fetchPorxy.main 23 | ├── .github──workflows──getSub.yml(actions Deploy) 24 | ├── config 25 | │   ├── provider──config.yml(转clash订阅用的配置) 26 | │   ├── subsource──subsource.yaml(网络获取的订阅源) 27 | │   ├── sublist_free.json(免费airport订阅列表) 28 | │   └── sublist_mining.json(爬取的可用订阅列表) 29 | ├── sub 30 | │   ├── free(免费airport订阅) 31 | │   │   ├── clash---(clash格式订阅) 32 | │   │   ├── test---(test新资源) 33 | │   │   └── 其它v2ray订阅 34 | │   ├── miningUrl(未测速节点合集url格式) 35 | │   ├── miningUrl64(未测速合集base64格式) 36 | │   └── miningClash.yml(未测速合集Clash格式) 37 | ├── utils(程序功能模块) 38 | │   ├── getSubSource──getSubSource.py((获取爬取到的订阅源文件放入'./config/source/subsource.yaml')) 39 | │   ├── checkUrllist 40 | │   │   ├── check.py(检测订阅源列表的可用性) 41 | │   │   ├── ip_update.py(下载country.mmdb文件) 42 | │   │   ├── urllist2sub.py(转换节点文件到'./sub/'目录下的订阅文件) 43 | │   │   └── sub_convert.py(转换订阅格式的功能模块) 44 | │   ├── free(获取免费airport) 45 | │   │   ├── myUseClash ---(获取自用clash) 46 | │   │   ├── test ---(测试新的airport) 47 | │   │   ├── config.yaml(免费airport网站列表) 48 | │   │   ├── main.py(主程序开始) 49 | │   │   ├── freev2.py(获取'V2board'网站Gmail注册订阅) 50 | │   │   ├── qqfreev2.py(获取'V2board'网站QQ邮箱注册订阅) 51 | │   │   └── freess.py(获取'SSpanel'网站订阅) 52 | │   └── requirements.txt(依赖库) 53 | └── README.md 54 | ``` 55 |
56 | 57 | ### 使用注意 58 | >转码功能用到的`subconverter工具` 59 | > 60 | >IP库`country.mmdb` 61 | > 62 | >已备份到'rx/all/githubTools' 63 | 64 | ## 仓库声明 65 | 订阅节点仅作学习交流使用,只是对网络上节点的优选排序,用于查找资料,学习知识,不做任何违法行为。所有资源均来自互联网,仅供大家交流学习使用,出现违法问题概不负责。 66 | -------------------------------------------------------------------------------- /config/provider/config.ini: -------------------------------------------------------------------------------- 1 | [custom] 2 | ;不要随意改变关键字,否则会导致出错 3 | ;由acl4SSR规则修改~ 4 | 5 | 6 | ;设置规则标志位 7 | ;ruleset=🌍 国外媒体,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyMedia.list 8 | ;ruleset=😒 审计规则,https://raw.githubusercontent.com/LITTLESITE/clash-/main/shenji.list 9 | ;ruleset=⏬ 下载服务,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Download.list 10 | ;ruleset=🚀 规则选择,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyGFWlist.list 11 | ;ruleset=🔀 直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/LocalAreaNetwork.list 12 | ;ruleset=🔀 直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/UnBan.list 13 | ;ruleset=🔀 直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaIp.list 14 | ;ruleset=🔀 直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaDomain.list 15 | ;ruleset=🔀 直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Download.list 16 | ;ruleset=🔀 直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/CN.list 17 | ;ruleset=🔀 直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/SteamCN.list 18 | ;ruleset=🔀 直连,[]GEOIP,LAN 19 | ;ruleset=🔀 直连,FINAL 20 | ruleset=规则选择,[]FINAL 21 | ;设置规则标志位 22 | 23 | ;设置分组标志位 24 | custom_proxy_group=规则选择`select`[]负载均衡`[]自动选择 25 | custom_proxy_group=中国节点`select`(中国|CN|香港|HK|台湾|TW).* 26 | custom_proxy_group=日本节点`select`(日本|JP).* 27 | custom_proxy_group=新加坡节点`select`(新加坡|SG|狮城).* 28 | custom_proxy_group=美国节点`select`(美国|US).* 29 | custom_proxy_group=手动切换`select`.* 30 | custom_proxy_group=自动选择`url-test`.*`http://www.gstatic.com/generate_204`300,,50 31 | custom_proxy_group=负载均衡`load-balance`.*`http://www.gstatic.com/generate_204`300,,50 32 | 33 | enable_rule_generator=true 34 | overwrite_original_rules=true 35 | 36 | ;e.g. 37 | ;custom_proxy_group=美国节点`url-test`(美国|US)`http://www.gstatic.com/generate_204`300,,150 38 | ; - name: 自动选择 39 | ; type: url-test 40 | ; url: 'http://www.gstatic.com/generate_204' 41 | ; interval: 300 42 | ; tolerance: 50 43 | ; proxies: 44 | ; - name: 负载均衡 45 | ; type: load-balance 46 | ; strategy: consistent-hashing 47 | ; url: http://www.gstatic.com/generate_204 48 | ; interval: 300 49 | ; tolerance: 50 50 | ; proxies: 51 | -------------------------------------------------------------------------------- /config/provider/config.yml: -------------------------------------------------------------------------------- 1 | port: 7890 2 | socks-port: 7891 3 | allow-lan: false 4 | mode: rule 5 | log-level: info 6 | external-controller: 127.0.0.1:9090 7 | 8 | proxies: 9 | 10 | proxy-groups: 11 | - name: 节点选择 12 | type: select 13 | proxies: 14 | - 自动选择 15 | - 香港节点 16 | - 日本节点 17 | - 新加坡节点 18 | - 其他节点 19 | - 负载均衡 20 | - 失败切换 21 | - DIRECT 22 | - name: 香港节点 23 | type: select 24 | proxies: 25 | - name: 日本节点 26 | type: select 27 | proxies: 28 | - name: 新加坡节点 29 | type: select 30 | proxies: 31 | - name: 其他节点 32 | type: select 33 | proxies: 34 | - name: 自动选择 35 | type: url-test 36 | url: 'http://www.gstatic.com/generate_204' 37 | interval: 300 38 | tolerance: 50 39 | proxies: 40 | - name: 负载均衡 41 | type: load-balance 42 | strategy: consistent-hashing 43 | url: http://www.gstatic.com/generate_204 44 | interval: 300 45 | tolerance: 50 46 | proxies: 47 | - name: 失败切换 48 | type: fallback 49 | url: http://www.gstatic.com/generate_204 50 | interval: 300 51 | tolerance: 50 52 | proxies: 53 | - name: 谷歌服务 54 | type: select 55 | proxies: 56 | - 节点选择 57 | - 香港节点 58 | - 日本节点 59 | - 新加坡节点 60 | - DIRECT 61 | 62 | rule-providers: # rule-providers from Logyalsoldier/clash-rules and LM-Firefly/Rules 63 | Google: 64 | type: http 65 | behavior: domain 66 | url: https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt 67 | path: ./ruleset/TopFreeProxies/google.yaml 68 | interval: 86400 69 | 70 | rules: 71 | - RULE-SET,Google,谷歌服务 72 | - MATCH,节点选择 73 | -------------------------------------------------------------------------------- /config/sublist_free: -------------------------------------------------------------------------------- 1 | 更新时间: 2023-10-27 01:09:29 2 | https://fastestcloud.xyz/api/v1/client/subscribe?token=c4812890108ddffce5a31acc092399ec 3 | https://feiniaoyun.top/api/v1/client/subscribe?token=a3b0462162951db2c6af351a2affa055 4 | https://www.ckcloud.xyz/api/v1/client/subscribe?token=f031f665985177919a6e6c686f88a50f 5 | https://www.jafiyun2023.fyi/link/4zPFpL8JjGZzRK3n?sub=3 6 | -------------------------------------------------------------------------------- /config/sublist_mining: -------------------------------------------------------------------------------- 1 | https://getafreenode.com/subscribe/?uuid=2F094845-E2BD-EBF7-DEB7-995992436FAF 2 | -------------------------------------------------------------------------------- /config/subsource/subsource.yaml: -------------------------------------------------------------------------------- 1 | clash订阅: 2 | - https://paste.wmlabs.net/raw/5cf79d933534 3 | - https://paste.gg/p/TG@p2psharing/a09975561ea14f55be17604d2beafd09/files/d3da9b36c9ce4f358affc115225e837a/raw 4 | - https://my5353.com/sCdJh 5 | - https://v1.mk/XmrXtJ1 6 | - https://v1.mk/H8ly8JI 7 | - https://paste.gg/p/TG@p2psharing/20df0d8ca4824d8a88e7db4da1e6d4dc/files/444bf3978e98464e8763a33139e9e9cb/raw 8 | - https://sub.pmsub.me/clash.yaml 9 | - https://paste.gg/p/anonymous/d8558561e31a4436a8671ba7cd29834d/files/04e17174770f4551af5662d6d416be06/raw 10 | - https://paste.gg/p/TG@p2psharing/fe58a22287db4b2087910b33654ce961/files/0d2b282ffcc04874a4e069dd07cdce81/raw 11 | - https://ume.la/BEjI6V 12 | - https://v1.mk/AKRUvOH 13 | - https://paste.gg/p/TG@p2psharing/926c28c9e420475cb2d723921262690c/files/0633186b9c9041f29999000a1d8f6bbe/raw 14 | - https://v1.mk/YV4rDk2 15 | - https://v1.mk/yKiYhYz 16 | - https://v1.mk/OI9HpY6 17 | - https://github.com/cxr9912/cxr2022/raw/cad9a3bf10641d3ea1a6844b3c8774d8b13bede6/ss.yaml 18 | - https://paste.wmlabs.net/raw/25ace48f4166 19 | - https://paste.ee/r/P6yME/0 20 | - https://prop.cf/?name=paimon 21 | - https://v1.mk/l2SaaEP 22 | - https://paste.gg/p/anonymous/6e1b3f2aec804d80b4dd73a691fbd635/files/deb8313f637c44bd981786e3e4c75e95/raw 23 | v2订阅: 24 | - https://paste.wmlabs.net/raw/4f562200702a 25 | - https://paste.wmlabs.net/raw/86402796b9c7 26 | - https://oss.v2rayse.com/proxies/data/2023-01-05/PQDQxl.txt 27 | - https://oss.v2rayse.com/proxies/data/2023-01-01/sos9PT.txt 28 | - https://paste.wmlabs.net/raw/284ef00a868c 29 | - https://paste.gg/p/anonymous/5f32e55ea4b34c34bb74ef2d96e690b2/files/1b7fd7fc01b54aad8c9f4ae53144b710/raw 30 | - https://paste.wmlabs.net/raw/8f4170d89f31 31 | - https://oss.v2rayse.com/proxies/data/2023-01-06/vImSwm.txt 32 | - https://sub.pmsub.me/base64 33 | - https://paste.wmlabs.net/raw/8c128a99a276 34 | - https://paste.gg/p/anonymous/ed701baf1c054e498ff61c952ca02f57/files/7cef5bd3ed4f4157b087b70d9b3b59be/raw 35 | - https://paste.gg/p/anonymous/391d7730206445e8a0bea5442ac99e5d/files/dc8e099fe9de421ab6313ca7e32f31be/raw 36 | - https://oss.v2rayse.com/proxies/data/2023-01-06/2c3G7R.txt 37 | - https://oss.v2rayse.com/proxies/data/2023-01-04/KBlQ4m.txt 38 | - https://paste.ee/r/pbURb/0 39 | - https://pastebin.com/raw/fpeEqGTn 40 | - https://paste.wmlabs.net/raw/d562afc5b0f6 41 | - https://oss.v2rayse.com/proxies/data/2023-01-06/rxQWmo.txt 42 | 机场订阅: 43 | - https://kcsub.click/link/S6HPkMlZlvblh60T?sub=1 44 | - https://needss.cc/api/v1/client/subscribe?token=d840ba7631444037fd69ae37ceb2e3c9 45 | - https://www.aoxiangyun.win/link/87aceef10cdcab30?clash=1 46 | - https://svip8.cn/api/v1/client/subscribe?token=77e6894611df4bf085fc1f221344e6a9 47 | - https://bigairport.loan/api/v1/client/subscribe?token=46760a5c2d5cd11f19f79d09842587f2 48 | - https://www.aoxiangyun.win/link/6f88b1af1449ed1f?clash=1 49 | - https://service-o886map6-1259649824.gz.apigw.tencentcs.com/link/kKzzKz34LRbw3uBH?clash=1 50 | - https://www.aoxiangyun.win/link/554f88ff8dbf551d?clash=1 51 | - https://xn--mes91r2ng7p4a.com/api/v1/client/subscribe?token=8b3be30f1ee0e715d683794012b213e9 52 | - https://www.jafiyun.today/link/kukIKwbQ13xrZTwy?clash=1 53 | - https://suburl.798ying.cc/link/dqJXi2cmP9hb1IkO?sub=3 54 | - https://iplcq.com/api/v1/client/subscribe?token=e346c4d04a88cc621594404203944293 55 | - https://s.youyun666.site/link/KUfWtqWVWNDDbxMH?clash=1 56 | - https://www.ppssqq.com/link/SNPyOf6TndHINNOs?clash=1 57 | - https://www.aoxiangyun.win/link/b6511246b0faadfe?clash=1 58 | - https://sub.bkcloud.quest/api/v1/client/subscribe?token=dbe70ddeeaf45db44110e87556d186ff 59 | - https://sanfen002.xyz/api/v1/client/subscribe?token=f82030078561d549a6d4788df7a24d0b 60 | - https://update-y.download-config-ppy.cyou/link/XNoQrkVpdEdkk4Hr?clash=1 61 | - https://subscribe7.iberyl.cyou/api/v1/client/subscribe?token=9816d4d13ec0715288c90205b1f6f244 62 | - https://www.sublink.club/link/wYHSJvUTjoq84l2d?sub=1 63 | - https://www.lime345.buzz/api/v1/client/subscribe?token=fb37c8df01c1c213c871858fa7d1ac8a 64 | - https://www.aoxiangyun.win/link/29a0f98ba8fa1bc6?clash=1 65 | - https://www.aoxiangyun.win/link/3e607f51bc7bb5bf?clash=1 66 | - https://www.aoxiangyun.win/link/48b602526c383ef8?clash=1 67 | - https://www.aoxiangyun.win/link/e203fa8919b17bd3?aall=1 68 | - https://suburl.798ying.cc/link/Gmnf7KiV5ULED6VR?clash=1 69 | - https://www.aoxiangyun.win/link/dee42b5854b75ed4?clash=1 70 | - https://www.aoxiangyun.win/link/091efaabaf9ca08d?clash=1 71 | - https://sub.subconnect.org/api/v1/client/subscribe?token=a86fd4a0a29842f79c93e470db59fa80 72 | - https://v1.cutdog.net/api/v1/client/subscribe?token=72b7277e4d23cbcb7f663e5f141b2e7a 73 | - https://www.aoxiangyun.win/link/9490946269c86e84?clash=1 74 | - https://rss2.jkl-sub.com/link/HyVd01zAed8ufAFb?clash=1 75 | - https://lting.cyou/link/WV7SqqQXD2wg1PmV?clash=1 76 | - https://srftbg.sendmailt.com/heartbeat/ZL4uxwdxy5eztfoZ07c4dgDfRQ/Ny2ZbYesjgydsSNQ?clash=1 77 | - https://xingjiabijichang.com/api/v1/client/subscribe?token=031f1c563c6c6cebda02327d72f4cf08 78 | - https://www.aoxiangyun.win/link/50ce7d2e64979bb4?clash=1 79 | - https://www.aoxiangyun.win/link/8a083972ae814c16?clash=1 80 | - https://www.dgycom.com/api/v1/client/subscribe?token=6fcc8a888c9f0621e974a005b08a458e 81 | - https://getafreenode.com/subscribe/?uuid=2F094845-E2BD-EBF7-DEB7-995992436FAF 82 | - https://xn--iiq540h.com/link/uDGIzUMdTrXnmA2D?clash=1 83 | - https://cxsub.pro/link/tUoTso5KFjS1ZlIU?clash=1 84 | - https://awsl.business/api/v1/client/subscribe?token=e35e467678ac3bb0fa84e8ad03eda9f8 85 | - https://www.aoxiangyun.win/link/3f42a45583bcdccf?clash=1 86 | - https://s.sdncimcin.xyz/link/lNvdH2iRZpxj2nmL?clash=1 87 | - http://dd.cxld.sbs/api/v1/client/subscribe?token=bbca21899f2e97ef66dca25d3b9466ca 88 | - https://www.aoxiangyun.win/link/810f4ff29771b7ce?clash=1 89 | - https://github.kqskunlun.xyz/api/v1/client/subscribe?token=3add977d477ecba28216a229333144fa 90 | - https://sub.sharecentre.online/sub 91 | - https://dingyue.xn--9kqr64b41s.gq/api/v1/client/subscribe?token=54ffca95b75fcd8b10810d9c47f4bd31 92 | - https://u.sylu.cyou/afbFyi 93 | - https://henet.icu/api/v1/client/subscribe?token=8d5e0ed8cbc119ced403d05860760b15 94 | - https://freeuse.fastermi.com/api/v1/client/subscribe?token=72c45ffb657c1086855436b86704ac62 95 | - https://adobe.zhuzhu12.com/link/rbPHm87z7HiuVw68?sub=3&extend=1 96 | - https://51fan.one/api/v1/client/subscribe?token=90c8cd3d1ff718175f535a73efc40f54 97 | - https://bigairport.loan/api/v1/client/subscribe?token=e3b46095055ec0f6705726087c7877ea 98 | - https://www.aoxiangyun.win/link/74ff3575462ffe19?clash=1 99 | - https://www.aoxiangyun.win/link/864e988583d9ecb0?clash=1 100 | -------------------------------------------------------------------------------- /sub/free/fastestcloud.xyz: -------------------------------------------------------------------------------- 1 | c3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6ZHguamNub2RlLnRvcDoyNDI5MSMlRTUlODklQTklRTQlQkQlOTklRTYlQjUlODElRTklODclOEYlRUYlQkMlOUExJTIwR0INCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnemR4Lmpjbm9kZS50b3A6MjQyOTEjJUU4JUI3JTlEJUU3JUE2JUJCJUU0JUI4JThCJUU2JUFDJUExJUU5JTg3JThEJUU3JUJEJUFFJUU1JTg5JUE5JUU0JUJEJTk5JUVGJUJDJTlBNCUyMCVFNSVBNCVBOQ0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6ZHguamNub2RlLnRvcDoyNDI5MSMlRTUlQTUlOTclRTklQTQlOTAlRTUlODglQjAlRTYlOUMlOUYlRUYlQkMlOUEyMDIzLTEwLTI4DQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVG8zT1RVMVlUVXpZaTAzTXpJMExUUTNNbUl0T1RKak9TMHlaVGcxTlRnd1ptSXhabVlAZ3pkeC5qY25vZGUudG9wOjI0MjkxI3ZpcDElMjAlRTglQjYlOEElRTUlOEQlOTctMDENCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnenlkLmpjbm9kZS50b3A6MzM1MzQjdmlwMSUyMCVFOCVCNiU4QSVFNSU4RCU5Ny0wMg0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6ZHgwMS5qY25vZGUudG9wOjIzNzYxI3ZpcDElMjAlRTglQjYlOEElRTUlOEQlOTctMDMNCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnemR4Lmpjbm9kZS50b3A6NDU5NTUjdmlwMSUyMCVFOSVBNiU5OSVFNiVCOCVBRi0wMQ0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6eWQuamNub2RlLnRvcDozMzQ4NyN2aXAxJTIwJUU5JUE2JTk5JUU2JUI4JUFGLTAyDQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVG8zT1RVMVlUVXpZaTAzTXpJMExUUTNNbUl0T1RKak9TMHlaVGcxTlRnd1ptSXhabVlAZ3pkeDAxLmpjbm9kZS50b3A6NjQ2NTQjdmlwMSUyMCVFOSVBNiU5OSVFNiVCOCVBRi0wMw0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6ZHguamNub2RlLnRvcDo1OTU4NCN2aXAxJTIwJUU5JUE2JTk5JUU2JUI4JUFGLTA3DQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVG8zT1RVMVlUVXpZaTAzTXpJMExUUTNNbUl0T1RKak9TMHlaVGcxTlRnd1ptSXhabVlAZ3p5ZC5qY25vZGUudG9wOjM3NjM5I3ZpcDElMjAlRTklQTYlOTklRTYlQjglQUYtMDgNCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnemR4MDEuamNub2RlLnRvcDo2Mzg5NyN2aXAxJTIwJUU5JUE2JTk5JUU2JUI4JUFGLTA5DQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVG8zT1RVMVlUVXpZaTAzTXpJMExUUTNNbUl0T1RKak9TMHlaVGcxTlRnd1ptSXhabVlAZ3pkeC5qY25vZGUudG9wOjEzMjkwI3ZpcDElMjAlRTklQTYlOTklRTYlQjglQUYtMTMNCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnenlkLmpjbm9kZS50b3A6MTA4ODQjdmlwMSUyMCVFOSVBNiU5OSVFNiVCOCVBRi0xNA0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6ZHgwMS5qY25vZGUudG9wOjUzMjcxI3ZpcDElMjAlRTklQTYlOTklRTYlQjglQUYtMTUNCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnemR4Lmpjbm9kZS50b3A6NjMyNzkjdmlwMSUyMCVFOSVBNiU5OSVFNiVCOCVBRi0xOQ0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6eWQuamNub2RlLnRvcDo2NTQwNyN2aXAxJTIwJUU5JUE2JTk5JUU2JUI4JUFGLTIwDQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVG8zT1RVMVlUVXpZaTAzTXpJMExUUTNNbUl0T1RKak9TMHlaVGcxTlRnd1ptSXhabVlAZ3pkeDAxLmpjbm9kZS50b3A6MzMzMTAjdmlwMSUyMCVFOSVBNiU5OSVFNiVCOCVBRi0yMQ0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6ZHguamNub2RlLnRvcDoyOTIyMyN2aXAxJTIwJUU2JTk3JUE1JUU2JTlDJUFDLTAxDQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVG8zT1RVMVlUVXpZaTAzTXpJMExUUTNNbUl0T1RKak9TMHlaVGcxTlRnd1ptSXhabVlAZ3p5ZC5qY25vZGUudG9wOjU5MDkwI3ZpcDElMjAlRTYlOTclQTUlRTYlOUMlQUMtMDINCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnemR4MDEuamNub2RlLnRvcDozNDk0OCN2aXAxJTIwJUU2JTk3JUE1JUU2JTlDJUFDLTAzDQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVG8zT1RVMVlUVXpZaTAzTXpJMExUUTNNbUl0T1RKak9TMHlaVGcxTlRnd1ptSXhabVlAZ3pkeC5qY25vZGUudG9wOjU1NzE4I3ZpcDElMjAlRTYlOTclQTUlRTYlOUMlQUMtMDYNCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnenlkLmpjbm9kZS50b3A6MjgzOTcjdmlwMSUyMCVFNiU5NyVBNSVFNiU5QyVBQy0wNw0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6ZHgwMS5qY25vZGUudG9wOjUzOTU4I3ZpcDElMjAlRTYlOTclQTUlRTYlOUMlQUMtMDgNCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnemR4Lmpjbm9kZS50b3A6MjIyMjUjdmlwMSUyMCVFNSU4RiVCMCVFNiVCOSVCRS0wMQ0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6eWQuamNub2RlLnRvcDo0Njk1NyN2aXAxJTIwJUU1JThGJUIwJUU2JUI5JUJFLTAyDQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVG8zT1RVMVlUVXpZaTAzTXpJMExUUTNNbUl0T1RKak9TMHlaVGcxTlRnd1ptSXhabVlAZ3pkeDAxLmpjbm9kZS50b3A6MjQwMDcjdmlwMSUyMCVFNSU4RiVCMCVFNiVCOSVCRS0wMw0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6ZHguamNub2RlLnRvcDoyOTU3NCN2aXAxJTIwJUU1JThGJUIwJUU2JUI5JUJFLTA2DQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVG8zT1RVMVlUVXpZaTAzTXpJMExUUTNNbUl0T1RKak9TMHlaVGcxTlRnd1ptSXhabVlAZ3p5ZC5qY25vZGUudG9wOjY0NzU5I3ZpcDElMjAlRTUlOEYlQjAlRTYlQjklQkUtMDcNCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnemR4MDEuamNub2RlLnRvcDoyNjA2NSN2aXAxJTIwJUU1JThGJUIwJUU2JUI5JUJFLTA4DQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVG8zT1RVMVlUVXpZaTAzTXpJMExUUTNNbUl0T1RKak9TMHlaVGcxTlRnd1ptSXhabVlAZ3pkeC5qY25vZGUudG9wOjMwMTM5I3ZpcDElMjAlRTYlOTYlQjAlRTUlOEElQTAlRTUlOUQlQTEtMDENCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnenlkLmpjbm9kZS50b3A6NTkyMTEjdmlwMSUyMCVFNiU5NiVCMCVFNSU4QSVBMCVFNSU5RCVBMS0wMg0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6ZHgwMS5qY25vZGUudG9wOjQxOTcyI3ZpcDElMjAlRTYlOTYlQjAlRTUlOEElQTAlRTUlOUQlQTEtMDMNCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnemR4Lmpjbm9kZS50b3A6MzA2NDEjdmlwMSUyMCVFNiU5NiVCMCVFNSU4QSVBMCVFNSU5RCVBMS0wNg0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6eWQuamNub2RlLnRvcDoyMDAxNCN2aXAxJTIwJUU2JTk2JUIwJUU1JThBJUEwJUU1JTlEJUExLTA3DQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVG8zT1RVMVlUVXpZaTAzTXpJMExUUTNNbUl0T1RKak9TMHlaVGcxTlRnd1ptSXhabVlAZ3pkeDAxLmpjbm9kZS50b3A6NDQ3NzMjdmlwMSUyMCVFNiU5NiVCMCVFNSU4QSVBMCVFNSU5RCVBMS0wOA0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6ZHguamNub2RlLnRvcDoyMDg4NyN2aXAxJTIwJUU3JUJFJThFJUU1JTlCJUJELTAxDQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVG8zT1RVMVlUVXpZaTAzTXpJMExUUTNNbUl0T1RKak9TMHlaVGcxTlRnd1ptSXhabVlAZ3p5ZC5qY25vZGUudG9wOjQxMzQyI3ZpcDElMjAlRTclQkUlOEUlRTUlOUIlQkQtMDINCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnemR4MDEuamNub2RlLnRvcDo0MDE3MSN2aXAxJTIwJUU3JUJFJThFJUU1JTlCJUJELTAzDQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVG8zT1RVMVlUVXpZaTAzTXpJMExUUTNNbUl0T1RKak9TMHlaVGcxTlRnd1ptSXhabVlAZ3pkeC5qY25vZGUudG9wOjM5MjExI3ZpcDElMjAlRTclQkUlOEUlRTUlOUIlQkQtMDYNCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnenlkLmpjbm9kZS50b3A6MzUzODcjdmlwMSUyMCVFNyVCRSU4RSVFNSU5QiVCRC0wNw0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6ZHgwMS5qY25vZGUudG9wOjIzMzEwI3ZpcDElMjAlRTclQkUlOEUlRTUlOUIlQkQtMDgNCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnemR4Lmpjbm9kZS50b3A6NDM0NDEjdmlwMSUyMCVFNyVCRSU4RSVFNSU5QiVCRC0xMQ0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6eWQuamNub2RlLnRvcDo0MTg2OCN2aXAxJTIwJUU3JUJFJThFJUU1JTlCJUJELTEyDQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVG8zT1RVMVlUVXpZaTAzTXpJMExUUTNNbUl0T1RKak9TMHlaVGcxTlRnd1ptSXhabVlAZ3pkeDAxLmpjbm9kZS50b3A6MTM3OTMjdmlwMSUyMCVFNyVCRSU4RSVFNSU5QiVCRC0xMw0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6ZHguamNub2RlLnRvcDozNzE2OSN2aXAxJTIwJUU1JThEJUIwJUU1JUJBJUE2LTAxDQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVG8zT1RVMVlUVXpZaTAzTXpJMExUUTNNbUl0T1RKak9TMHlaVGcxTlRnd1ptSXhabVlAZ3p5ZC5qY25vZGUudG9wOjI1OTk3I3ZpcDElMjAlRTUlOEQlQjAlRTUlQkElQTYtMDINCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnemR4MDEuamNub2RlLnRvcDoxOTk3NSN2aXAxJTIwJUU1JThEJUIwJUU1JUJBJUE2LTAzDQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVG8zT1RVMVlUVXpZaTAzTXpJMExUUTNNbUl0T1RKak9TMHlaVGcxTlRnd1ptSXhabVlAZ3pkeC5qY25vZGUudG9wOjIzMzE5I3ZpcDElMjAlRTYlQkUlQjMlRTUlQTQlQTclRTUlODglQTklRTQlQkElOUEtMDENCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnenlkLmpjbm9kZS50b3A6NjExNjMjdmlwMSUyMCVFNiVCRSVCMyVFNSVBNCVBNyVFNSU4OCVBOSVFNCVCQSU5QS0wMg0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6ZHgwMS5qY25vZGUudG9wOjIwOTIyI3ZpcDElMjAlRTYlQkUlQjMlRTUlQTQlQTclRTUlODglQTklRTQlQkElOUEtMDMNCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnemR4Lmpjbm9kZS50b3A6MzcxMTUjdmlwMSUyMCVFNSU5QyU5RiVFOCU4MCVCMyVFNSU4NSVCNi0wMQ0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6eWQuamNub2RlLnRvcDoyNzA0OCN2aXAxJTIwJUU1JTlDJTlGJUU4JTgwJUIzJUU1JTg1JUI2LTAyDQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVG8zT1RVMVlUVXpZaTAzTXpJMExUUTNNbUl0T1RKak9TMHlaVGcxTlRnd1ptSXhabVlAZ3pkeDAxLmpjbm9kZS50b3A6MjIyNTQjdmlwMSUyMCVFNSU5QyU5RiVFOCU4MCVCMyVFNSU4NSVCNi0wMw0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6ZHguamNub2RlLnRvcDoxNDU2MiN2aXAxJTIwJUU1JUJFJUI3JUU1JTlCJUJELTAxDQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVG8zT1RVMVlUVXpZaTAzTXpJMExUUTNNbUl0T1RKak9TMHlaVGcxTlRnd1ptSXhabVlAZ3p5ZC5qY25vZGUudG9wOjYyNTA2I3ZpcDElMjAlRTUlQkUlQjclRTUlOUIlQkQtMDINCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnemR4MDEuamNub2RlLnRvcDozMzkxMiN2aXAxJTIwJUU1JUJFJUI3JUU1JTlCJUJELTAzDQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVG8zT1RVMVlUVXpZaTAzTXpJMExUUTNNbUl0T1RKak9TMHlaVGcxTlRnd1ptSXhabVlAZ3pkeC5qY25vZGUudG9wOjIxNzgxI3ZpcDElMjAlRTglOEIlQjElRTUlOUIlQkQtMDENCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UbzNPVFUxWVRVellpMDNNekkwTFRRM01tSXRPVEpqT1MweVpUZzFOVGd3Wm1JeFptWUBnenlkLmpjbm9kZS50b3A6NDA3ODgjdmlwMSUyMCVFOCU4QiVCMSVFNSU5QiVCRC0wMg0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRvM09UVTFZVFV6WWkwM016STBMVFEzTW1JdE9USmpPUzB5WlRnMU5UZ3dabUl4Wm1ZQGd6ZHgwMS5qY25vZGUudG9wOjY1MTE3I3ZpcDElMjAlRTglOEIlQjElRTUlOUIlQkQtMDMNCg== -------------------------------------------------------------------------------- /sub/free/feiniaoyun.top: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddbc/getAirport/1122d12689005a96c8fd22fad4cf07ac25e6a20e/sub/free/feiniaoyun.top -------------------------------------------------------------------------------- /sub/free/flyairport.top: -------------------------------------------------------------------------------- 1 | dmxlc3M6Ly9mY2UzNzYzMS1kZjBiLTM4NjgtYjhhOS01YTU5ZDA3MTAwODZAZmx5YWlycG9ydC50b3A6MTAwODY/ZW5jcnlwdGlvbj1ub25lJnR5cGU9dGNwJnNlY3VyaXR5PSZwYXRoPSUyRiZoZWFkZXJUeXBlPW5vbmUjJUU1JTg5JUE5JUU0JUJEJTk5JUU2JUI1JTgxJUU5JTg3JThGJUVGJUJDJTlBMTVHQgp2bGVzczovL2ZjZTM3NjMxLWRmMGItMzg2OC1iOGE5LTVhNTlkMDcxMDA4NkBmbHlhaXJwb3J0LnRvcDoxMDA4Nj9lbmNyeXB0aW9uPW5vbmUmdHlwZT10Y3Amc2VjdXJpdHk9JnBhdGg9JTJGJmhlYWRlclR5cGU9bm9uZSMlRTglQkYlODclRTYlOUMlOUYlRTYlOTclQjYlRTklOTclQjQlRUYlQkMlOUEyMDIzLTAzLTA0Cg== -------------------------------------------------------------------------------- /sub/free/gflink.net: -------------------------------------------------------------------------------- 1 | dm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTVhNlk1NzJSNzd5YWFIUjBjSE02THk5amFteHdjbTh1WTJ4dmRXUWlMQ0poWkdRaU9pSm9ibVI0TG5KbGJHRjVNREV1Wm1GemREQXdNUzVpZFhwNklpd2ljRzl5ZENJNklqRTVNREl4SWl3aWFXUWlPaUpqWXpCak4yUTVaQzFqWkdZMkxUTmxZbVl0WWprNVl5MHdNak16WXpFME1EWm1OMlVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlJc0luTnVhU0k2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNlpxbjZZR1RJSHdnVGtZZ2ZDRGxqN0RtdWI0Z01ERWlMQ0poWkdRaU9pSm9ibVI0TG5KbGJHRjVNREV1Wm1GemREQXdNUzVpZFhwNklpd2ljRzl5ZENJNklqRTVNREl4SWl3aWFXUWlPaUpqWXpCak4yUTVaQzFqWkdZMkxUTmxZbVl0WWprNVl5MHdNak16WXpFME1EWm1OMlVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlJc0luTnVhU0k2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNlpxbjZZR1RJSHdnVGtZZ2ZDRGxqN0RtdWI0Z01ESWlMQ0poWkdRaU9pSjVlbVI0TG5KbGJHRjVNREV1Wm1GemREQXdNUzVpZFhwNklpd2ljRzl5ZENJNklqRTVNREl5SWl3aWFXUWlPaUpqWXpCak4yUTVaQzFqWkdZMkxUTmxZbVl0WWprNVl5MHdNak16WXpFME1EWm1OMlVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlJc0luTnVhU0k2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNlpxbjZZR1RJSHdnVGtZZ2ZDRHBwcG5tdUs4Z01ERWlMQ0poWkdRaU9pSjVlbVI0TG5KbGJHRjVNREV1Wm1GemREQXdNUzVpZFhwNklpd2ljRzl5ZENJNklqRTVNREkxSWl3aWFXUWlPaUpqWXpCak4yUTVaQzFqWkdZMkxUTmxZbVl0WWprNVl5MHdNak16WXpFME1EWm1OMlVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlJc0luTnVhU0k2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNlpxbjZZR1RJSHdnVGtZZ2ZDRHBwcG5tdUs4Z01ESWlMQ0poWkdRaU9pSjVlbVI0TG5KbGJHRjVNREV1Wm1GemREQXdNUzVpZFhwNklpd2ljRzl5ZENJNklqRTVNREkySWl3aWFXUWlPaUpqWXpCak4yUTVaQzFqWkdZMkxUTmxZbVl0WWprNVl5MHdNak16WXpFME1EWm1OMlVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlJc0luTnVhU0k2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNlpxbjZZR1RJSHdnVGtZZ2ZDRHBwcG5tdUs4Z01ETWlMQ0poWkdRaU9pSjVlbVI0TG5KbGJHRjVNREV1Wm1GemREQXdNUzVpZFhwNklpd2ljRzl5ZENJNklqRTVNREkzSWl3aWFXUWlPaUpqWXpCak4yUTVaQzFqWkdZMkxUTmxZbVl0WWprNVl5MHdNak16WXpFME1EWm1OMlVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlJc0luTnVhU0k2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNlpxbjZZR1RJSHdnVGtZZ2ZDRHBwcG5tdUs4Z01EUWlMQ0poWkdRaU9pSjVlbVI0TG5KbGJHRjVNREV1Wm1GemREQXdNUzVpZFhwNklpd2ljRzl5ZENJNklqRTVNREk0SWl3aWFXUWlPaUpqWXpCak4yUTVaQzFqWkdZMkxUTmxZbVl0WWprNVl5MHdNak16WXpFME1EWm1OMlVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlJc0luTnVhU0k2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNlpxbjZZR1RJSHdnVGtZZ2ZDRG1sNlhtbkt3Z01ERWlMQ0poWkdRaU9pSjVlbVI0TG5KbGJHRjVNREV1Wm1GemREQXdNUzVpZFhwNklpd2ljRzl5ZENJNklqRTVNRE00SWl3aWFXUWlPaUpqWXpCak4yUTVaQzFqWkdZMkxUTmxZbVl0WWprNVl5MHdNak16WXpFME1EWm1OMlVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlJc0luTnVhU0k2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNlpxbjZZR1RJSHdnVGtZZ2ZDRG1sNlhtbkt3Z01ESWlMQ0poWkdRaU9pSjVlbVI0TG5KbGJHRjVNREV1Wm1GemREQXdNUzVpZFhwNklpd2ljRzl5ZENJNklqRTVNRE01SWl3aWFXUWlPaUpqWXpCak4yUTVaQzFqWkdZMkxUTmxZbVl0WWprNVl5MHdNak16WXpFME1EWm1OMlVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlJc0luTnVhU0k2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNlpxbjZZR1RJSHdnVGtZZ2ZDRG1sNlhtbkt3Z01ETWlMQ0poWkdRaU9pSjVlbVI0TG5KbGJHRjVNREV1Wm1GemREQXdNUzVpZFhwNklpd2ljRzl5ZENJNklqRTVNRFF3SWl3aWFXUWlPaUpqWXpCak4yUTVaQzFqWkdZMkxUTmxZbVl0WWprNVl5MHdNak16WXpFME1EWm1OMlVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlJc0luTnVhU0k2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNlpxbjZZR1RJSHdnVGtZZ2ZDRG1sNlhtbkt3Z01EUWlMQ0poWkdRaU9pSjVlbVI0TG5KbGJHRjVNREV1Wm1GemREQXdNUzVpZFhwNklpd2ljRzl5ZENJNklqRTVNRFF4SWl3aWFXUWlPaUpqWXpCak4yUTVaQzFqWkdZMkxUTmxZbVl0WWprNVl5MHdNak16WXpFME1EWm1OMlVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlJc0luTnVhU0k2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNlpxbjZZR1RJSHdnVGtZZ2ZDRG1sckRsaXFEbG5hRWdNREVpTENKaFpHUWlPaUo1ZW1SNExuSmxiR0Y1TURFdVptRnpkREF3TVM1aWRYcDZJaXdpY0c5eWRDSTZJakU1TURJNUlpd2lhV1FpT2lKall6QmpOMlE1WkMxalpHWTJMVE5sWW1ZdFlqazVZeTB3TWpNell6RTBNRFptTjJVaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWRHTndJaXdpZEhsd1pTSTZJbTV2Ym1VaUxDSm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJbk51YVNJNklpSjkKdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTZacW42WUdUSUh3Z1RrWWdmQ0RtbHJEbGlxRGxuYUVnTURJaUxDSmhaR1FpT2lKNWVtUjRMbkpsYkdGNU1ERXVabUZ6ZERBd01TNWlkWHA2SWl3aWNHOXlkQ0k2SWpFNU1ETXdJaXdpYVdRaU9pSmpZekJqTjJRNVpDMWpaR1kyTFRObFltWXRZams1WXkwd01qTXpZekUwTURabU4yVWlMQ0poYVdRaU9pSXdJaXdpYm1WMElqb2lkR053SWl3aWRIbHdaU0k2SW01dmJtVWlMQ0pvYjNOMElqb2lJaXdpY0dGMGFDSTZJaUlzSW5Sc2N5STZJaUlzSW5OdWFTSTZJaUo5CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2k2WnFuNllHVElId2dUa1lnZkNEbWxyRGxpcURsbmFFZ01ETWlMQ0poWkdRaU9pSjVlbVI0TG5KbGJHRjVNREV1Wm1GemREQXdNUzVpZFhwNklpd2ljRzl5ZENJNklqRTVNRE14SWl3aWFXUWlPaUpqWXpCak4yUTVaQzFqWkdZMkxUTmxZbVl0WWprNVl5MHdNak16WXpFME1EWm1OMlVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlJc0luTnVhU0k2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNlpxbjZZR1RJSHdnVGtZZ2ZDRG1sckRsaXFEbG5hRWdNRFFpTENKaFpHUWlPaUo1ZW1SNExuSmxiR0Y1TURFdVptRnpkREF3TVM1aWRYcDZJaXdpY0c5eWRDSTZJakU1TURNeUlpd2lhV1FpT2lKall6QmpOMlE1WkMxalpHWTJMVE5sWW1ZdFlqazVZeTB3TWpNell6RTBNRFptTjJVaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWRHTndJaXdpZEhsd1pTSTZJbTV2Ym1VaUxDSm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJbk51YVNJNklpSjkKdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTZacW42WUdUSUh3Z1RrWWdmQ0Rudm83bG03MGdNREVpTENKaFpHUWlPaUo1ZW1SNExuSmxiR0Y1TURFdVptRnpkREF3TVM1aWRYcDZJaXdpY0c5eWRDSTZJakU1TURRMElpd2lhV1FpT2lKall6QmpOMlE1WkMxalpHWTJMVE5sWW1ZdFlqazVZeTB3TWpNell6RTBNRFptTjJVaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWRHTndJaXdpZEhsd1pTSTZJbTV2Ym1VaUxDSm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJbk51YVNJNklpSjkKdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTZacW42WUdUSUh3Z1RrWWdmQ0Rudm83bG03MGdNRElpTENKaFpHUWlPaUo1ZW1SNExuSmxiR0Y1TURFdVptRnpkREF3TVM1aWRYcDZJaXdpY0c5eWRDSTZJakU1TURRMUlpd2lhV1FpT2lKall6QmpOMlE1WkMxalpHWTJMVE5sWW1ZdFlqazVZeTB3TWpNell6RTBNRFptTjJVaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWRHTndJaXdpZEhsd1pTSTZJbTV2Ym1VaUxDSm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJbk51YVNJNklpSjkKdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTZacW42WUdUSUh3Z1RrWWdmQ0RwbjZubG03MGdNREVpTENKaFpHUWlPaUo1ZW1SNExuSmxiR0Y1TURFdVptRnpkREF3TVM1aWRYcDZJaXdpY0c5eWRDSTZJakU1TURReUlpd2lhV1FpT2lKall6QmpOMlE1WkMxalpHWTJMVE5sWW1ZdFlqazVZeTB3TWpNell6RTBNRFptTjJVaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWRHTndJaXdpZEhsd1pTSTZJbTV2Ym1VaUxDSm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJbk51YVNJNklpSjkKdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTZacW42WUdUSUh3Z1RrWWdmQ0RwbjZubG03MGdNRElpTENKaFpHUWlPaUo1ZW1SNExuSmxiR0Y1TURFdVptRnpkREF3TVM1aWRYcDZJaXdpY0c5eWRDSTZJakU1TURReklpd2lhV1FpT2lKall6QmpOMlE1WkMxalpHWTJMVE5sWW1ZdFlqazVZeTB3TWpNell6RTBNRFptTjJVaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWRHTndJaXdpZEhsd1pTSTZJbTV2Ym1VaUxDSm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJbk51YVNJNklpSjkKdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTZacW42WUdUSUh3Z1RrWWdmQ0RsdnJmbG03MGdNREVpTENKaFpHUWlPaUo1ZW1SNExuSmxiR0Y1TURFdVptRnpkREF3TVM1aWRYcDZJaXdpY0c5eWRDSTZJakU1TURRMklpd2lhV1FpT2lKall6QmpOMlE1WkMxalpHWTJMVE5sWW1ZdFlqazVZeTB3TWpNell6RTBNRFptTjJVaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWRHTndJaXdpZEhsd1pTSTZJbTV2Ym1VaUxDSm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJbk51YVNJNklpSjkKdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTZacW42WUdUSUh3Z1RrWWdmQ0RvaTdIbG03MGdNREVpTENKaFpHUWlPaUo1ZW1SNExuSmxiR0Y1TURFdVptRnpkREF3TVM1aWRYcDZJaXdpY0c5eWRDSTZJakU1TURRM0lpd2lhV1FpT2lKall6QmpOMlE1WkMxalpHWTJMVE5sWW1ZdFlqazVZeTB3TWpNell6RTBNRFptTjJVaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWRHTndJaXdpZEhsd1pTSTZJbTV2Ym1VaUxDSm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJbk51YVNJNklpSjkKdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTZacW42WUdUSUh3Z1RrWWdmQ0RvaTdIbG03MGdNRElpTENKaFpHUWlPaUo1ZW1SNExuSmxiR0Y1TURFdVptRnpkREF3TVM1aWRYcDZJaXdpY0c5eWRDSTZJakU1TURRNElpd2lhV1FpT2lKall6QmpOMlE1WkMxalpHWTJMVE5sWW1ZdFlqazVZeTB3TWpNell6RTBNRFptTjJVaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWRHTndJaXdpZEhsd1pTSTZJbTV2Ym1VaUxDSm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJbk51YVNJNklpSjkK -------------------------------------------------------------------------------- /sub/free/goodfree/goodfree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddbc/getAirport/1122d12689005a96c8fd22fad4cf07ac25e6a20e/sub/free/goodfree/goodfree -------------------------------------------------------------------------------- /sub/free/goodfree/goodfree64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddbc/getAirport/1122d12689005a96c8fd22fad4cf07ac25e6a20e/sub/free/goodfree/goodfree64 -------------------------------------------------------------------------------- /sub/free/goodfree/goodfreeClash.yml: -------------------------------------------------------------------------------- 1 | Url 解析错误 -------------------------------------------------------------------------------- /sub/free/goodfree/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /sub/free/htavpn.com: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddbc/getAirport/1122d12689005a96c8fd22fad4cf07ac25e6a20e/sub/free/htavpn.com -------------------------------------------------------------------------------- /sub/free/maossr.top: -------------------------------------------------------------------------------- 1 | dm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTVZK3c1cm0rSUVoSlRrVlU3NzJjNlpxbjZZR1RJREF4SWl3aVlXUmtJam9pTVRJd0xqRTVOUzR4T0RFdU5UUWlMQ0p3YjNKMElqb2lNell3TVRnaUxDSnBaQ0k2SWpRMk1qQm1PR0k1TFdKaU1EUXRNelF5WmkwNU5qVTBMVFl3Tm1Oak1qUTFZalJtTlNJc0ltRnBaQ0k2SWpBaUxDSnVaWFFpT2lKMFkzQWlMQ0owZVhCbElqb2libTl1WlNJc0ltaHZjM1FpT2lKM2QzY3VZbWx1Wnk1amIyMGlMQ0p3WVhSb0lqb2lMM1F2ZEM4eElpd2lkR3h6SWpvaUluMD0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTVZK3c1cm0rSUVoSlRrVlU3NzJjNlpxbjZZR1RJREF5SWl3aVlXUmtJam9pTVRJd0xqRTVOUzR4T0RFdU5UUWlMQ0p3YjNKMElqb2lNell3TVRraUxDSnBaQ0k2SWpRMk1qQm1PR0k1TFdKaU1EUXRNelF5WmkwNU5qVTBMVFl3Tm1Oak1qUTFZalJtTlNJc0ltRnBaQ0k2SWpBaUxDSnVaWFFpT2lKMFkzQWlMQ0owZVhCbElqb2libTl1WlNJc0ltaHZjM1FpT2lKM2QzY3VZbWx1Wnk1amIyMGlMQ0p3WVhSb0lqb2lMM1F2ZEM4eElpd2lkR3h6SWpvaUluMD0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTVZK3c1cm0rSUVoSlRrVlU3NzJjNlpxbjZZR1RJREF6SWl3aVlXUmtJam9pTVRJd0xqRTVOUzR4T0RFdU5UUWlMQ0p3YjNKMElqb2lNell3TWpBaUxDSnBaQ0k2SWpRMk1qQm1PR0k1TFdKaU1EUXRNelF5WmkwNU5qVTBMVFl3Tm1Oak1qUTFZalJtTlNJc0ltRnBaQ0k2SWpBaUxDSnVaWFFpT2lKMFkzQWlMQ0owZVhCbElqb2libTl1WlNJc0ltaHZjM1FpT2lKM2QzY3VZbWx1Wnk1amIyMGlMQ0p3WVhSb0lqb2lMM1F2ZEM4eElpd2lkR3h6SWpvaUluMD0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTVZK3c1cm0rSU9lYnRPaS9uakVpTENKaFpHUWlPaUp1WlhkMGR5NW9aVzU1Ynk1MWN5SXNJbkJ2Y25RaU9pSXhORFF6SWl3aWFXUWlPaUkwTmpJd1pqaGlPUzFpWWpBMExUTTBNbVl0T1RZMU5DMDJNRFpqWXpJME5XSTBaalVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZDNNaUxDSjBlWEJsSWpvaWJtOXVaU0lzSW1odmMzUWlPaUp1WlhkMGR5NW9aVzU1Ynk1MWN5SXNJbkJoZEdnaU9pSXZhR3h6TDNWek9DNXRNM1U0SWl3aWRHeHpJam9pZEd4ekluMD0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTVZK3c1cm0rSU9lYnRPaS9uaklpTENKaFpHUWlPaUowZHk1b1pXNTVieTUxY3lJc0luQnZjblFpT2lJeU1UUTBNeUlzSW1sa0lqb2lORFl5TUdZNFlqa3RZbUl3TkMwek5ESm1MVGsyTlRRdE5qQTJZMk15TkRWaU5HWTFJaXdpWVdsa0lqb2lNQ0lzSW01bGRDSTZJbmR6SWl3aWRIbHdaU0k2SW01dmJtVWlMQ0pvYjNOMElqb2lkSGN1YUdWdWVXOHVkWE1pTENKd1lYUm9Jam9pTDJoc2N5OTFjemd1YlROMU9DSXNJblJzY3lJNkluUnNjeUo5CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2k1WSt3NXJtK0lPZWJ0T2kvbmpNaUxDSmhaR1FpT2lKb2FXNWxkQzVvWlc1NWJ5NTFjeUlzSW5CdmNuUWlPaUl5TVRRME15SXNJbWxrSWpvaU5EWXlNR1k0WWprdFltSXdOQzB6TkRKbUxUazJOVFF0TmpBMlkyTXlORFZpTkdZMUlpd2lZV2xrSWpvaU1DSXNJbTVsZENJNkluZHpJaXdpZEhsd1pTSTZJbTV2Ym1VaUxDSm9iM04wSWpvaWFHbHVaWFF1YUdWdWVXOHVkWE1pTENKd1lYUm9Jam9pTDJoc2N5OTFjemd1YlROMU9DSXNJblJzY3lJNkluUnNjeUo5CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2k1WSt3NXJtK0lPZWJ0T2kvbmpRaUxDSmhaR1FpT2lKMGQzUjNMbWhsYm5sdkxuVnpJaXdpY0c5eWRDSTZJalEwTXlJc0ltbGtJam9pTkRZeU1HWTRZamt0WW1Jd05DMHpOREptTFRrMk5UUXROakEyWTJNeU5EVmlOR1kxSWl3aVlXbGtJam9pTUNJc0ltNWxkQ0k2SW5keklpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pZEhkMGR5NW9aVzU1Ynk1MWN5SXNJbkJoZEdnaU9pSXZhR3h6TDNWek9DNXRNM1U0SWl3aWRHeHpJam9pZEd4ekluMD0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTViNjM1WnU5NzcyYzZacW42WUdUSURBeElpd2lZV1JrSWpvaWMyRm9ibWMxTGpVNU5EZzRPQzU0ZVhvaUxDSndiM0owSWpvaU16WXdNVFlpTENKcFpDSTZJalEyTWpCbU9HSTVMV0ppTURRdE16UXlaaTA1TmpVMExUWXdObU5qTWpRMVlqUm1OU0lzSW1GcFpDSTZJakFpTENKdVpYUWlPaUowWTNBaUxDSjBlWEJsSWpvaWJtOXVaU0lzSW1odmMzUWlPaUozZDNjdVltbHVaeTVqYjIwaUxDSndZWFJvSWpvaUwzUXZkQzh4SWl3aWRHeHpJam9pSW4wPQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNXBhdzVZcWc1WjJoSU9lYnRPaS9uakVpTENKaFpHUWlPaUp6WnpFdU5UazBPRGc0TG5oNWVpSXNJbkJ2Y25RaU9pSTBORE1pTENKcFpDSTZJalEyTWpCbU9HSTVMV0ppTURRdE16UXlaaTA1TmpVMExUWXdObU5qTWpRMVlqUm1OU0lzSW1GcFpDSTZJakFpTENKdVpYUWlPaUozY3lJc0luUjVjR1VpT2lKdWIyNWxJaXdpYUc5emRDSTZJbk5uTVM0MU9UUTRPRGd1ZUhsNklpd2ljR0YwYUNJNklpOW9iSE12ZFhNNExtMHpkVGdpTENKMGJITWlPaUowYkhNaWZRPT0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTVwYXc1WXFnNVoyaElPZWJ0T2kvbmpJaUxDSmhaR1FpT2lKelp6SXVOVGswT0RnNExuaDVlaUlzSW5CdmNuUWlPaUkwTkRNaUxDSnBaQ0k2SWpRMk1qQm1PR0k1TFdKaU1EUXRNelF5WmkwNU5qVTBMVFl3Tm1Oak1qUTFZalJtTlNJc0ltRnBaQ0k2SWpBaUxDSnVaWFFpT2lKM2N5SXNJblI1Y0dVaU9pSnViMjVsSWl3aWFHOXpkQ0k2SW5Obk1pNDFPVFE0T0RndWVIbDZJaXdpY0dGMGFDSTZJaTlvYkhNdmRYTTRMbTB6ZFRnaUxDSjBiSE1pT2lKMGJITWlmUT09CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2k1cGF3NVlxZzVaMmg3NzJjNlpxbjZZR1RJREF4SWl3aVlXUmtJam9pWVhCcE1TNDFPVFE0T0RndWVIbDZJaXdpY0c5eWRDSTZJak0yTURBM0lpd2lhV1FpT2lJME5qSXdaamhpT1MxaVlqQTBMVE0wTW1ZdE9UWTFOQzAyTURaall6STBOV0kwWmpVaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWRHTndJaXdpZEhsd1pTSTZJbTV2Ym1VaUxDSm9iM04wSWpvaWQzZDNMbUpwYm1jdVkyOXRJaXdpY0dGMGFDSTZJaTkwTDNRdk1TSXNJblJzY3lJNklpSjkKdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTVwYXc1WXFnNVoyaDc3MmM2WnFuNllHVElEQXlJaXdpWVdSa0lqb2lZWEJwTWk0MU9UUTRPRGd1ZUhsNklpd2ljRzl5ZENJNklqTTJNREE0SWl3aWFXUWlPaUkwTmpJd1pqaGlPUzFpWWpBMExUTTBNbVl0T1RZMU5DMDJNRFpqWXpJME5XSTBaalVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pZDNkM0xtSnBibWN1WTI5dElpd2ljR0YwYUNJNklpOTBMM1F2TVNJc0luUnNjeUk2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNXBhdzVZcWc1WjJoNzcyYzZacW42WUdUSURBeklpd2lZV1JrSWpvaVlYQnBNeTQxT1RRNE9EZ3VlSGw2SWl3aWNHOXlkQ0k2SWpNMk1ESXlJaXdpYVdRaU9pSTBOakl3WmpoaU9TMWlZakEwTFRNME1tWXRPVFkxTkMwMk1EWmpZekkwTldJMFpqVWlMQ0poYVdRaU9pSXdJaXdpYm1WMElqb2lkR053SWl3aWRIbHdaU0k2SW01dmJtVWlMQ0pvYjNOMElqb2lkM2QzTG1KcGJtY3VZMjl0SWl3aWNHRjBhQ0k2SWk5MEwzUXZNU0lzSW5Sc2N5STZJaUo5CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2k1cGVsNXB5c0lPUzRuT1M2ck8rOW5PbWFwK21Ca3lBd01TSXNJbUZrWkNJNkluTmhhRzVuTkM0MU9UUTRPRGd1ZUhsNklpd2ljRzl5ZENJNklqTTJNREV4SWl3aWFXUWlPaUkwTmpJd1pqaGlPUzFpWWpBMExUTTBNbVl0T1RZMU5DMDJNRFpqWXpJME5XSTBaalVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pZDNkM0xtSnBibWN1WTI5dElpd2ljR0YwYUNJNklpOTBMM1F2TVNJc0luUnNjeUk2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNXBlbDVweXNJT1M0bk9TNnJPKzluT21hcCttQmt5QXdNeUJIUWxRaUxDSmhaR1FpT2lKellXaHVaekl1TlRrME9EZzRMbmg1ZWlJc0luQnZjblFpT2lJek5qQXhNeUlzSW1sa0lqb2lORFl5TUdZNFlqa3RZbUl3TkMwek5ESm1MVGsyTlRRdE5qQTJZMk15TkRWaU5HWTFJaXdpWVdsa0lqb2lNQ0lzSW01bGRDSTZJblJqY0NJc0luUjVjR1VpT2lKdWIyNWxJaXdpYUc5emRDSTZJbmQzZHk1aWFXNW5MbU52YlNJc0luQmhkR2dpT2lJdmRDOTBMekVpTENKMGJITWlPaUlpZlE9PQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNXBlbDVweXM1WXFvNW9DQklpd2lZV1JrSWpvaWFYQnpMbWhsYm5sdkxuVnpJaXdpY0c5eWRDSTZJakUwTkRNaUxDSnBaQ0k2SWpRMk1qQm1PR0k1TFdKaU1EUXRNelF5WmkwNU5qVTBMVFl3Tm1Oak1qUTFZalJtTlNJc0ltRnBaQ0k2SWpBaUxDSnVaWFFpT2lKM2N5SXNJblI1Y0dVaU9pSnViMjVsSWl3aWFHOXpkQ0k2SW1sd2N5NW9aVzU1Ynk1MWN5SXNJbkJoZEdnaU9pSXZhR3h6TDNWek9DNXRNM1U0SWl3aWRHeHpJam9pZEd4ekluMD0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTU3Nk81WnU5SU9hMG0rYWRpZWVmdHUrOW5PbWFwK21Ca3lBd01TSXNJbUZrWkNJNkluTmhhRzVuTnk0MU9UUTRPRGd1ZUhsNklpd2ljRzl5ZENJNklqTTJNREUwSWl3aWFXUWlPaUkwTmpJd1pqaGlPUzFpWWpBMExUTTBNbVl0T1RZMU5DMDJNRFpqWXpJME5XSTBaalVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pZDNkM0xtSnBibWN1WTI5dElpd2ljR0YwYUNJNklpOTBMM1F2TVNJc0luUnNjeUk2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNTc2TzVadTlJT2EwbSthZGllZWZ0dSs5bk9tYXArbUJreUF3TWlJc0ltRmtaQ0k2SW5OaGFHNW5NeTQxT1RRNE9EZ3VlSGw2SWl3aWNHOXlkQ0k2SWpNMk1ERTFJaXdpYVdRaU9pSTBOakl3WmpoaU9TMWlZakEwTFRNME1tWXRPVFkxTkMwMk1EWmpZekkwTldJMFpqVWlMQ0poYVdRaU9pSXdJaXdpYm1WMElqb2lkR053SWl3aWRIbHdaU0k2SW01dmJtVWlMQ0pvYjNOMElqb2lkM2QzTG1KcGJtY3VZMjl0SWl3aWNHRjBhQ0k2SWk5MEwzUXZNU0lzSW5Sc2N5STZJaUo5CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2k1NzZPNVp1OUlPZWJ0T2kvbmpFaUxDSmhaR1FpT2lKdFlXOTFjekV1ZDNwbmJXRnBiQzVqYjIwaUxDSndiM0owSWpvaU5EUXpJaXdpYVdRaU9pSTBOakl3WmpoaU9TMWlZakEwTFRNME1tWXRPVFkxTkMwMk1EWmpZekkwTldJMFpqVWlMQ0poYVdRaU9pSXdJaXdpYm1WMElqb2lkM01pTENKMGVYQmxJam9pYm05dVpTSXNJbWh2YzNRaU9pSnRZVzkxY3pFdWQzcG5iV0ZwYkM1amIyMGlMQ0p3WVhSb0lqb2lMMmhzY3k5MWN6Z3ViVE4xT0NJc0luUnNjeUk2SW5Sc2N5SjkKdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTU3Nk81WnU5SU9lYnRPaS9uaklpTENKaFpHUWlPaUp0WVc5MWN6SXVkM3BuYldGcGJDNWpiMjBpTENKd2IzSjBJam9pTkRReklpd2lhV1FpT2lJME5qSXdaamhpT1MxaVlqQTBMVE0wTW1ZdE9UWTFOQzAyTURaall6STBOV0kwWmpVaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWQzTWlMQ0owZVhCbElqb2libTl1WlNJc0ltaHZjM1FpT2lKdFlXOTFjekl1ZDNwbmJXRnBiQzVqYjIwaUxDSndZWFJvSWpvaUwyaHNjeTkxY3pndWJUTjFPQ0lzSW5Sc2N5STZJblJzY3lKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNTc2TzVadTlJT2VidE9pL25qTWlMQ0poWkdRaU9pSnRZVzkxY3pNdWQzcG5iV0ZwYkM1amIyMGlMQ0p3YjNKMElqb2lNekV5TXpVaUxDSnBaQ0k2SWpRMk1qQm1PR0k1TFdKaU1EUXRNelF5WmkwNU5qVTBMVFl3Tm1Oak1qUTFZalJtTlNJc0ltRnBaQ0k2SWpBaUxDSnVaWFFpT2lKM2N5SXNJblI1Y0dVaU9pSnViMjVsSWl3aWFHOXpkQ0k2SW0xaGIzVnpNeTUzZW1kdFlXbHNMbU52YlNJc0luQmhkR2dpT2lJdmJXRnZhR3N6SWl3aWRHeHpJam9pSW4wPQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNTc2TzVadTlJT2VidE9pL25qUWlMQ0poWkdRaU9pSnRZVzkxY3pRdWQzcG5iV0ZwYkM1amIyMGlMQ0p3YjNKMElqb2lNekV5TXpVaUxDSnBaQ0k2SWpRMk1qQm1PR0k1TFdKaU1EUXRNelF5WmkwNU5qVTBMVFl3Tm1Oak1qUTFZalJtTlNJc0ltRnBaQ0k2SWpBaUxDSnVaWFFpT2lKM2N5SXNJblI1Y0dVaU9pSnViMjVsSWl3aWFHOXpkQ0k2SW0xaGIzVnpOQzUzZW1kdFlXbHNMbU52YlNJc0luQmhkR2dpT2lJdmJXRnZhR3N6SWl3aWRHeHpJam9pSW4wPQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNkl1eDVadTk3NzJjNlpxbjZZR1RJREF4SWl3aVlXUmtJam9pYzJGb2JtY3hMalU1TkRnNE9DNTRlWG9pTENKd2IzSjBJam9pTXpZd01UY2lMQ0pwWkNJNklqUTJNakJtT0dJNUxXSmlNRFF0TXpReVppMDVOalUwTFRZd05tTmpNalExWWpSbU5TSXNJbUZwWkNJNklqQWlMQ0p1WlhRaU9pSjBZM0FpTENKMGVYQmxJam9pYm05dVpTSXNJbWh2YzNRaU9pSjNkM2N1WW1sdVp5NWpiMjBpTENKd1lYUm9Jam9pTDNRdmRDOHhJaXdpZEd4eklqb2lJbjA9CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2k2WitwNVp1OUlPbW1sdVd3bE8rOW5PbWFwK21Ca3lBd01TSXNJbUZrWkNJNkluTmhhRzVuTmk0MU9UUTRPRGd1ZUhsNklpd2ljRzl5ZENJNklqTTJNREV5SWl3aWFXUWlPaUkwTmpJd1pqaGlPUzFpWWpBMExUTTBNbVl0T1RZMU5DMDJNRFpqWXpJME5XSTBaalVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pZDNkM0xtSnBibWN1WTI5dElpd2ljR0YwYUNJNklpOTBMM1F2TVNJc0luUnNjeUk2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNmFhWjVyaXZJRWhMVk8rOW5PbWFwK21Ca3lBd01TSXNJbUZrWkNJNklqRXlNQzR4T1RVdU1UZ3hMalUwSWl3aWNHOXlkQ0k2SWpNMk1EQTVJaXdpYVdRaU9pSTBOakl3WmpoaU9TMWlZakEwTFRNME1tWXRPVFkxTkMwMk1EWmpZekkwTldJMFpqVWlMQ0poYVdRaU9pSXdJaXdpYm1WMElqb2lkR053SWl3aWRIbHdaU0k2SW01dmJtVWlMQ0pvYjNOMElqb2lkM2QzTG1KcGJtY3VZMjl0SWl3aWNHRjBhQ0k2SWk5MEwzUXZNU0lzSW5Sc2N5STZJaUo5CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2k2YWFaNXJpdklFaExWTys5bk9tYXArbUJreUF3TWlJc0ltRmtaQ0k2SWpFeU1DNHhPVFV1TVRneExqVTBJaXdpY0c5eWRDSTZJak0yTURFd0lpd2lhV1FpT2lJME5qSXdaamhpT1MxaVlqQTBMVE0wTW1ZdE9UWTFOQzAyTURaall6STBOV0kwWmpVaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWRHTndJaXdpZEhsd1pTSTZJbTV2Ym1VaUxDSm9iM04wSWpvaWQzZDNMbUpwYm1jdVkyOXRJaXdpY0dGMGFDSTZJaTkwTDNRdk1TSXNJblJzY3lJNklpSjkKdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTZhYVo1cml2SUVoTFZPKzluT21hcCttQmt5QXdNeUlzSW1Ga1pDSTZJakV5TUM0eE9UVXVNVGd4TGpVMElpd2ljRzl5ZENJNklqTTJNREl4SWl3aWFXUWlPaUkwTmpJd1pqaGlPUzFpWWpBMExUTTBNbVl0T1RZMU5DMDJNRFpqWXpJME5XSTBaalVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pZDNkM0xtSnBibWN1WTI5dElpd2ljR0YwYUNJNklpOTBMM1F2TVNJc0luUnNjeUk2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNmFhWjVyaXZJT2VidE9pL25qRWlMQ0poWkdRaU9pSm9hekV1TlRrME9EZzRMbmg1ZWlJc0luQnZjblFpT2lJeU5EUXpJaXdpYVdRaU9pSTBOakl3WmpoaU9TMWlZakEwTFRNME1tWXRPVFkxTkMwMk1EWmpZekkwTldJMFpqVWlMQ0poYVdRaU9pSXdJaXdpYm1WMElqb2lkM01pTENKMGVYQmxJam9pYm05dVpTSXNJbWh2YzNRaU9pSm9hekV1TlRrME9EZzRMbmg1ZWlJc0luQmhkR2dpT2lJdmJXRnZhR3N6SWl3aWRHeHpJam9pSW4wPQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNmFhWjVyaXZJT2VidE9pL25qSWlMQ0poWkdRaU9pSm9hekl1TlRrME9EZzRMbmg1ZWlJc0luQnZjblFpT2lJME5ETWlMQ0pwWkNJNklqUTJNakJtT0dJNUxXSmlNRFF0TXpReVppMDVOalUwTFRZd05tTmpNalExWWpSbU5TSXNJbUZwWkNJNklqQWlMQ0p1WlhRaU9pSjNjeUlzSW5SNWNHVWlPaUp1YjI1bElpd2lhRzl6ZENJNkltaHJNaTQxT1RRNE9EZ3VlSGw2SWl3aWNHRjBhQ0k2SWk5b2JITXZkWE00TG0wemRUZ2lMQ0owYkhNaU9pSjBiSE1pZlE9PQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNVltcDVMMlo1cldCNlllUDc3eWFNVEF5TkUxQ0lpd2lZV1JrSWpvaWJXRnZjM055TG5SdmNDSXNJbkJ2Y25RaU9pSXhNREE0TmlJc0ltbGtJam9pTkRZeU1HWTRZamt0WW1Jd05DMHpOREptTFRrMk5UUXROakEyWTJNeU5EVmlOR1kxSWl3aVlXbGtJam9pTUNJc0ltNWxkQ0k2SW5SamNDSXNJblI1Y0dVaU9pSnViMjVsSWl3aWFHOXpkQ0k2SWlJc0luQmhkR2dpT2lJdklpd2lkR3h6SWpvaUluMD0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTZMK0g1cHlmNXBlMjZaZTA3N3lhTWpBeU15MHdPQzB5T0NJc0ltRmtaQ0k2SW0xaGIzTnpjaTUwYjNBaUxDSndiM0owSWpvaU1UQXdPRFlpTENKcFpDSTZJalEyTWpCbU9HSTVMV0ppTURRdE16UXlaaTA1TmpVMExUWXdObU5qTWpRMVlqUm1OU0lzSW1GcFpDSTZJakFpTENKdVpYUWlPaUowWTNBaUxDSjBlWEJsSWpvaWJtOXVaU0lzSW1odmMzUWlPaUlpTENKd1lYUm9Jam9pTHlJc0luUnNjeUk2SWlKOQo= -------------------------------------------------------------------------------- /sub/free/shan-cloud.xyz: -------------------------------------------------------------------------------- 1 | c3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRwbVpHWTBNVEpoTnkxaVlUZ3dMVFEyTVdRdFlqQTRZUzB3WmpreU0yWXlNbU0xTUdZQHRvbmd6aGkuODEwODIzLnh5ejoxMzA4NiMlRTUlODklQTklRTQlQkQlOTklRTYlQjUlODElRTklODclOEYlRUYlQkMlOUExJTIwR0INCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UcG1aR1kwTVRKaE55MWlZVGd3TFRRMk1XUXRZakE0WVMwd1pqa3lNMll5TW1NMU1HWUB0b25nemhpLjgxMDgyMy54eXo6MTMwODYjJUU1JUE1JTk3JUU5JUE0JTkwJUU1JTg4JUIwJUU2JTlDJTlGJUVGJUJDJTlBMjAyMy0wMi0xMQ0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRwbVpHWTBNVEpoTnkxaVlUZ3dMVFEyTVdRdFlqQTRZUzB3WmpreU0yWXlNbU0xTUdZQHRvbmd6aGkuODEwODIzLnh5ejoxMzA4NiMlNUIlRTUlQUUlOTglRTclQkQlOTElNURzaGFuLWNsb3VkLnh5eg0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRwbVpHWTBNVEpoTnkxaVlUZ3dMVFEyTVdRdFlqQTRZUzB3WmpreU0yWXlNbU0xTUdZQHRvbmd6aGkuODEwODIzLnh5ejoxMzA4NiMlNUIlRTUlQTQlODclRTclOTQlQTglRTUlQUUlOTglRTclQkQlOTElNURzaGFuLWNsb3VkLnRvcA0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRwbVpHWTBNVEpoTnkxaVlUZ3dMVFEyTVdRdFlqQTRZUzB3WmpreU0yWXlNbU0xTUdZQHRvbmd6aGkuODEwODIzLnh5ejoxMzA4NiNURyVFNSU5NCVBRSVFNSU5MCU4RSVFNyVCRSVBNCU0MHNoYW5jbG91ZHZwbg0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRwbVpHWTBNVEpoTnkxaVlUZ3dMVFEyTVdRdFlqQTRZUzB3WmpreU0yWXlNbU0xTUdZQHRvbmd6aGkuODEwODIzLnh5ejoxMzA4NiMlRTYlOEIlOUJBRkYlRTUlQkUlQUElRTclOEUlQUYlRTQlQkQlQTMlRTklODclOTE1MCUyNSVFNyVBNyU5MiVFNiU4RiU5MCVFNyU4RSVCMA0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRwbVpHWTBNVEpoTnkxaVlUZ3dMVFEyTVdRdFlqQTRZUzB3WmpreU0yWXlNbU0xTUdZQHRvbmd6aGkuODEwODIzLnh5ejoxMzA4NiMlRTklOTklOTAlRTYlOTclQjYlRTglQUYlOTUlRTclOTQlQTgxSDFHJUVGJUJDJThDJUU1JUJDJTgwJUU5JTgwJTlBJUU1JUE1JTk3JUU5JUE0JTkwJUU0JUI4JThEJUU5JTk5JTkwJUU1JTg4JUI2DQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVHBtWkdZME1USmhOeTFpWVRnd0xUUTJNV1F0WWpBNFlTMHdaamt5TTJZeU1tTTFNR1lAc2gtanAtZHgtaXBsYy44MTA4MjMueHl6OjEzMDgyIyU1QiVFNCVCOCU5MyVFNyVCQSVCRjJ4JTVEJUU5JTlGJUE5JUU1JTlCJUJES1IlRTIlODYlOTAlRTYlQjIlQUElRTYlOTclQTVJUExDDQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVHBtWkdZME1USmhOeTFpWVRnd0xUUTJNV1F0WWpBNFlTMHdaamt5TTJZeU1tTTFNR1lAc2gtanAtZHgtaXBsYy44MTA4MjMueHl6OjEzMDgxIyU1QiVFNCVCOCU5MyVFNyVCQSVCRjJ4JTVEJUU2JTk3JUE1JUU2JTlDJUFDSlAlRTIlODYlOTAlRTYlQjIlQUElRTYlOTclQTVJUExDDQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVHBtWkdZME1USmhOeTFpWVRnd0xUUTJNV1F0WWpBNFlTMHdaamt5TTJZeU1tTTFNR1lAc2gtanAtZHgtaXBsYy44MTA4MjMueHl6OjEzMDAxIyU1QiVFNCVCOCU5MyVFNyVCQSVCRjJ4JTVEJUU3JUJFJThFJUU1JTlCJUJEVVNBJUUyJTg2JTkwJUU2JUIyJUFBJUU2JTk3JUE1SVBMQw0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRwbVpHWTBNVEpoTnkxaVlUZ3dMVFEyTVdRdFlqQTRZUzB3WmpreU0yWXlNbU0xTUdZQHNoLWpwLWR4LWlwbGMuODEwODIzLnh5ejoxMzA2NSMlNUIlRTQlQjglOTMlRTclQkElQkYyeCU1RCVFNiU5NiVCMCVFNSU4QSVBMCVFNSU5RCVBMVNHJUUyJTg2JTkwJUU2JUIyJUFBJUU2JTk3JUE1SVBMQw0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRwbVpHWTBNVEpoTnkxaVlUZ3dMVFEyTVdRdFlqQTRZUzB3WmpreU0yWXlNbU0xTUdZQHoxLjgxMDgyMy54eXo6MTMwODIjJTVCJUU0JUI4JUFEJUU4JUJEJUFDMXglNUQlRTklOUYlQTklRTUlOUIlQkRLUiVFMiU4NiU5MCVFNCVCOCU4QSVFNiVCNSVCNyVFNyU5NCVCNSVFNCVCRiVBMQ0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRwbVpHWTBNVEpoTnkxaVlUZ3dMVFEyTVdRdFlqQTRZUzB3WmpreU0yWXlNbU0xTUdZQHoxLjgxMDgyMy54eXo6MTMwODEjJTVCJUU0JUI4JUFEJUU4JUJEJUFDMXglNUQlRTYlOTclQTUlRTYlOUMlQUNKUCVFMiU4NiU5MCVFNCVCOCU4QSVFNiVCNSVCNyVFNyU5NCVCNSVFNCVCRiVBMQ0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRwbVpHWTBNVEpoTnkxaVlUZ3dMVFEyTVdRdFlqQTRZUzB3WmpreU0yWXlNbU0xTUdZQHoxLjgxMDgyMy54eXo6MTMwMDEjJTVCJUU0JUI4JUFEJUU4JUJEJUFDMXglNUQlRTclQkUlOEUlRTUlOUIlQkRVU0ElRTIlODYlOTAlRTQlQjglOEElRTYlQjUlQjclRTclOTQlQjUlRTQlQkYlQTENCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UcG1aR1kwTVRKaE55MWlZVGd3TFRRMk1XUXRZakE0WVMwd1pqa3lNMll5TW1NMU1HWUB6MS44MTA4MjMueHl6OjEzMDY1IyU1QiVFNCVCOCVBRCVFOCVCRCVBQzF4JTVEJUU2JTk2JUIwJUU1JThBJUEwJUU1JTlEJUExU0clRTIlODYlOTAlRTQlQjglOEElRTYlQjUlQjclRTclOTQlQjUlRTQlQkYlQTENCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UcG1aR1kwTVRKaE55MWlZVGd3TFRRMk1XUXRZakE0WVMwd1pqa3lNMll5TW1NMU1HWUB6MS44MTA4MjMueHl6OjEzMDQ5IyU1QiVFNCVCOCVBRCVFOCVCRCVBQzF4JTVEJUU1JUJFJUI3JUU1JTlCJUJEREUlRTIlODYlOTAlRTQlQjglOEElRTYlQjUlQjclRTclOTQlQjUlRTQlQkYlQTENCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UcG1aR1kwTVRKaE55MWlZVGd3TFRRMk1XUXRZakE0WVMwd1pqa3lNMll5TW1NMU1HWUB6MS44MTA4MjMueHl6OjEzOTcxIyU1QiVFNCVCOCVBRCVFOCVCRCVBQzF4JTVEJUU5JTk4JUJGJUU4JTgxJTk0JUU5JTg1JThCQUUlRTIlODYlOTAlRTQlQjglOEElRTYlQjUlQjclRTclOTQlQjUlRTQlQkYlQTENCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UcG1aR1kwTVRKaE55MWlZVGd3TFRRMk1XUXRZakE0WVMwd1pqa3lNMll5TW1NMU1HWUB6Mi44MTA4MjMueHl6OjEzMDgyIyU1QiVFNCVCOCVBRCVFOCVCRCVBQzF4JTVEJUU5JTlGJUE5JUU1JTlCJUJES1IlRTIlODYlOTAlRTUlQjklQkYlRTQlQjglOUMlRTclQTclQkIlRTUlOEElQTgNCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UcG1aR1kwTVRKaE55MWlZVGd3TFRRMk1XUXRZakE0WVMwd1pqa3lNMll5TW1NMU1HWUB6Mi44MTA4MjMueHl6OjEzMDgxIyU1QiVFNCVCOCVBRCVFOCVCRCVBQzF4JTVEJUU2JTk3JUE1JUU2JTlDJUFDSlAlRTIlODYlOTAlRTUlQjklQkYlRTQlQjglOUMlRTclQTclQkIlRTUlOEElQTgNCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UcG1aR1kwTVRKaE55MWlZVGd3TFRRMk1XUXRZakE0WVMwd1pqa3lNMll5TW1NMU1HWUB6Mi44MTA4MjMueHl6OjEzMDAxIyU1QiVFNCVCOCVBRCVFOCVCRCVBQzF4JTVEJUU3JUJFJThFJUU1JTlCJUJEVVNBJUUyJTg2JTkwJUU1JUI5JUJGJUU0JUI4JTlDJUU3JUE3JUJCJUU1JThBJUE4DQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVHBtWkdZME1USmhOeTFpWVRnd0xUUTJNV1F0WWpBNFlTMHdaamt5TTJZeU1tTTFNR1lAejIuODEwODIzLnh5ejoxMzA2NSMlNUIlRTQlQjglQUQlRTglQkQlQUMxeCU1RCVFNiU5NiVCMCVFNSU4QSVBMCVFNSU5RCVBMVNHJUUyJTg2JTkwJUU1JUI5JUJGJUU0JUI4JTlDJUU3JUE3JUJCJUU1JThBJUE4DQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVHBtWkdZME1USmhOeTFpWVRnd0xUUTJNV1F0WWpBNFlTMHdaamt5TTJZeU1tTTFNR1lAejIuODEwODIzLnh5ejoxMzA0OSMlNUIlRTQlQjglQUQlRTglQkQlQUMxeCU1RCVFNSVCRSVCNyVFNSU5QiVCRERFJUUyJTg2JTkwJUU1JUI5JUJGJUU0JUI4JTlDJUU3JUE3JUJCJUU1JThBJUE4DQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVHBtWkdZME1USmhOeTFpWVRnd0xUUTJNV1F0WWpBNFlTMHdaamt5TTJZeU1tTTFNR1lAejIuODEwODIzLnh5ejoxMzk3MSMlNUIlRTQlQjglQUQlRTglQkQlQUMxeCU1RCVFOSU5OCVCRiVFOCU4MSU5NCVFOSU4NSU4QkFFJUUyJTg2JTkwJUU1JUI5JUJGJUU0JUI4JTlDJUU3JUE3JUJCJUU1JThBJUE4DQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVHBtWkdZME1USmhOeTFpWVRnd0xUUTJNV1F0WWpBNFlTMHdaamt5TTJZeU1tTTFNR1lAejMuODEwODIzLnh5ejoxMzA4MiMlNUIlRTQlQjglQUQlRTglQkQlQUMxeCU1RCVFOSU5RiVBOSVFNSU5QiVCREtSJUUyJTg2JTkwJUU2JUIxJTlGJUU4JThCJThGJUU3JUE3JUJCJUU1JThBJUE4DQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVHBtWkdZME1USmhOeTFpWVRnd0xUUTJNV1F0WWpBNFlTMHdaamt5TTJZeU1tTTFNR1lAejMuODEwODIzLnh5ejoxMzA4MSMlNUIlRTQlQjglQUQlRTglQkQlQUMxeCU1RCVFNiU5NyVBNSVFNiU5QyVBQ0pQJUUyJTg2JTkwJUU2JUIxJTlGJUU4JThCJThGJUU3JUE3JUJCJUU1JThBJUE4DQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVHBtWkdZME1USmhOeTFpWVRnd0xUUTJNV1F0WWpBNFlTMHdaamt5TTJZeU1tTTFNR1lAejMuODEwODIzLnh5ejoxMzAwMSMlNUIlRTQlQjglQUQlRTglQkQlQUMxeCU1RCVFNyVCRSU4RSVFNSU5QiVCRFVTQSVFMiU4NiU5MCVFNiVCMSU5RiVFOCU4QiU4RiVFNyVBNyVCQiVFNSU4QSVBOA0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRwbVpHWTBNVEpoTnkxaVlUZ3dMVFEyTVdRdFlqQTRZUzB3WmpreU0yWXlNbU0xTUdZQHozLjgxMDgyMy54eXo6MTMwNjUjJTVCJUU0JUI4JUFEJUU4JUJEJUFDMXglNUQlRTYlOTYlQjAlRTUlOEElQTAlRTUlOUQlQTFTRyVFMiU4NiU5MCVFNiVCMSU5RiVFOCU4QiU4RiVFNyVBNyVCQiVFNSU4QSVBOA0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRwbVpHWTBNVEpoTnkxaVlUZ3dMVFEyTVdRdFlqQTRZUzB3WmpreU0yWXlNbU0xTUdZQHozLjgxMDgyMy54eXo6MTMwNDkjJTVCJUU0JUI4JUFEJUU4JUJEJUFDMXglNUQlRTUlQkUlQjclRTUlOUIlQkRERSVFMiU4NiU5MCVFNiVCMSU5RiVFOCU4QiU4RiVFNyVBNyVCQiVFNSU4QSVBOA0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRwbVpHWTBNVEpoTnkxaVlUZ3dMVFEyTVdRdFlqQTRZUzB3WmpreU0yWXlNbU0xTUdZQHozLjgxMDgyMy54eXo6MTM5NzEjJTVCJUU0JUI4JUFEJUU4JUJEJUFDMXglNUQlRTklOTglQkYlRTglODElOTQlRTklODUlOEJBRSVFMiU4NiU5MCVFNiVCMSU5RiVFOCU4QiU4RiVFNyVBNyVCQiVFNSU4QSVBOA0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRwbVpHWTBNVEpoTnkxaVlUZ3dMVFEyTVdRdFlqQTRZUzB3WmpreU0yWXlNbU0xTUdZQHo0LjgxMDgyMy54eXo6MTMwODIjJTVCJUU0JUI4JUFEJUU4JUJEJUFDMXglNUQlRTklOUYlQTklRTUlOUIlQkRLUiVFMiU4NiU5MCVFNiVCOSU5NiVFNSU4RCU5NyVFNyVBNyVCQiVFNSU4QSVBOA0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRwbVpHWTBNVEpoTnkxaVlUZ3dMVFEyTVdRdFlqQTRZUzB3WmpreU0yWXlNbU0xTUdZQHo0LjgxMDgyMy54eXo6MTMwODEjJTVCJUU0JUI4JUFEJUU4JUJEJUFDMXglNUQlRTYlOTclQTUlRTYlOUMlQUNKUCVFMiU4NiU5MCVFNiVCOSU5NiVFNSU4RCU5NyVFNyVBNyVCQiVFNSU4QSVBOA0Kc3M6Ly9ZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRwbVpHWTBNVEpoTnkxaVlUZ3dMVFEyTVdRdFlqQTRZUzB3WmpreU0yWXlNbU0xTUdZQHo0LjgxMDgyMy54eXo6MTMwMDEjJTVCJUU0JUI4JUFEJUU4JUJEJUFDMXglNUQlRTclQkUlOEUlRTUlOUIlQkRVU0ElRTIlODYlOTAlRTYlQjklOTYlRTUlOEQlOTclRTclQTclQkIlRTUlOEElQTgNCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UcG1aR1kwTVRKaE55MWlZVGd3TFRRMk1XUXRZakE0WVMwd1pqa3lNMll5TW1NMU1HWUB6NC44MTA4MjMueHl6OjEzMDY1IyU1QiVFNCVCOCVBRCVFOCVCRCVBQzF4JTVEJUU2JTk2JUIwJUU1JThBJUEwJUU1JTlEJUExU0clRTIlODYlOTAlRTYlQjklOTYlRTUlOEQlOTclRTclQTclQkIlRTUlOEElQTgNCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UcG1aR1kwTVRKaE55MWlZVGd3TFRRMk1XUXRZakE0WVMwd1pqa3lNMll5TW1NMU1HWUB6NC44MTA4MjMueHl6OjEzMDQ5IyU1QiVFNCVCOCVBRCVFOCVCRCVBQzF4JTVEJUU1JUJFJUI3JUU1JTlCJUJEREUlRTIlODYlOTAlRTYlQjklOTYlRTUlOEQlOTclRTclQTclQkIlRTUlOEElQTgNCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UcG1aR1kwTVRKaE55MWlZVGd3TFRRMk1XUXRZakE0WVMwd1pqa3lNMll5TW1NMU1HWUB6NC44MTA4MjMueHl6OjEzOTcxIyU1QiVFNCVCOCVBRCVFOCVCRCVBQzF4JTVEJUU5JTk4JUJGJUU4JTgxJTk0JUU5JTg1JThCQUUlRTIlODYlOTAlRTYlQjklOTYlRTUlOEQlOTclRTclQTclQkIlRTUlOEElQTgNCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UcG1aR1kwTVRKaE55MWlZVGd3TFRRMk1XUXRZakE0WVMwd1pqa3lNMll5TW1NMU1HWUB6NS44MTA4MjMueHl6OjEzMDgyIyU1QiVFNCVCOCVBRCVFOCVCRCVBQzF4JTVEJUU5JTlGJUE5JUU1JTlCJUJES1IlRTIlODYlOTAlRTUlOEMlOTclRTQlQkElQUMlRTglODElOTQlRTklODAlOUENCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UcG1aR1kwTVRKaE55MWlZVGd3TFRRMk1XUXRZakE0WVMwd1pqa3lNMll5TW1NMU1HWUB6NS44MTA4MjMueHl6OjEzMDgxIyU1QiVFNCVCOCVBRCVFOCVCRCVBQzF4JTVEJUU2JTk3JUE1JUU2JTlDJUFDSlAlRTIlODYlOTAlRTUlOEMlOTclRTQlQkElQUMlRTglODElOTQlRTklODAlOUENCnNzOi8vWTJoaFkyaGhNakF0YVdWMFppMXdiMng1TVRNd05UcG1aR1kwTVRKaE55MWlZVGd3TFRRMk1XUXRZakE0WVMwd1pqa3lNMll5TW1NMU1HWUB6NS44MTA4MjMueHl6OjEzMDAxIyU1QiVFNCVCOCVBRCVFOCVCRCVBQzF4JTVEJUU3JUJFJThFJUU1JTlCJUJEVVNBJUUyJTg2JTkwJUU1JThDJTk3JUU0JUJBJUFDJUU4JTgxJTk0JUU5JTgwJTlBDQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVHBtWkdZME1USmhOeTFpWVRnd0xUUTJNV1F0WWpBNFlTMHdaamt5TTJZeU1tTTFNR1lAejUuODEwODIzLnh5ejoxMzA2NSMlNUIlRTQlQjglQUQlRTglQkQlQUMxeCU1RCVFNiU5NiVCMCVFNSU4QSVBMCVFNSU5RCVBMVNHJUUyJTg2JTkwJUU1JThDJTk3JUU0JUJBJUFDJUU4JTgxJTk0JUU5JTgwJTlBDQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVHBtWkdZME1USmhOeTFpWVRnd0xUUTJNV1F0WWpBNFlTMHdaamt5TTJZeU1tTTFNR1lAejUuODEwODIzLnh5ejoxMzA0OSMlNUIlRTQlQjglQUQlRTglQkQlQUMxeCU1RCVFNSVCRSVCNyVFNSU5QiVCRERFJUUyJTg2JTkwJUU1JThDJTk3JUU0JUJBJUFDJUU4JTgxJTk0JUU5JTgwJTlBDQpzczovL1kyaGhZMmhoTWpBdGFXVjBaaTF3YjJ4NU1UTXdOVHBtWkdZME1USmhOeTFpWVRnd0xUUTJNV1F0WWpBNFlTMHdaamt5TTJZeU1tTTFNR1lAejUuODEwODIzLnh5ejoxMzk3MSMlNUIlRTQlQjglQUQlRTglQkQlQUMxeCU1RCVFOSU5OCVCRiVFOCU4MSU5NCVFOSU4NSU4QkFFJUUyJTg2JTkwJUU1JThDJTk3JUU0JUJBJUFDJUU4JTgxJTk0JUU5JTgwJTlBDQo= -------------------------------------------------------------------------------- /sub/free/www.ckcloud.xyz: -------------------------------------------------------------------------------- 1 | dHJvamFuOi8vZjZkYzY2YjctOGI1MS00Mzk3LTk2ZTYtNjhiNzUzNmVmZGI5QGd6ZHguamNub2RlLnRvcDoxNzAyMj9hbGxvd0luc2VjdXJlPTEmcGVlcj12bjAxLmNrY2xvdWQuaW5mbyZzbmk9dm4wMS5ja2Nsb3VkLmluZm8jJUU1JTg5JUE5JUU0JUJEJTk5JUU2JUI1JTgxJUU5JTg3JThGJUVGJUJDJTlBMSUyMEdCDQp0cm9qYW46Ly9mNmRjNjZiNy04YjUxLTQzOTctOTZlNi02OGI3NTM2ZWZkYjlAZ3pkeC5qY25vZGUudG9wOjE3MDIyP2FsbG93SW5zZWN1cmU9MSZwZWVyPXZuMDEuY2tjbG91ZC5pbmZvJnNuaT12bjAxLmNrY2xvdWQuaW5mbyMlRTglQjclOUQlRTclQTYlQkIlRTQlQjglOEIlRTYlQUMlQTElRTklODclOEQlRTclQkQlQUUlRTUlODklQTklRTQlQkQlOTklRUYlQkMlOUE0JTIwJUU1JUE0JUE5DQp0cm9qYW46Ly9mNmRjNjZiNy04YjUxLTQzOTctOTZlNi02OGI3NTM2ZWZkYjlAZ3pkeC5qY25vZGUudG9wOjE3MDIyP2FsbG93SW5zZWN1cmU9MSZwZWVyPXZuMDEuY2tjbG91ZC5pbmZvJnNuaT12bjAxLmNrY2xvdWQuaW5mbyMlRTUlQTUlOTclRTklQTQlOTAlRTUlODglQjAlRTYlOUMlOUYlRUYlQkMlOUEyMDIzLTEwLTI4DQp0cm9qYW46Ly9mNmRjNjZiNy04YjUxLTQzOTctOTZlNi02OGI3NTM2ZWZkYjlAZ3pkeC5qY25vZGUudG9wOjE3MDIyP2FsbG93SW5zZWN1cmU9MSZwZWVyPXZuMDEuY2tjbG91ZC5pbmZvJnNuaT12bjAxLmNrY2xvdWQuaW5mbyNKQ0JCJUU2JUIwJUI4JUU0JUI5JTg1JUU4JUI3JUIzJUU4JUJEJUFDJUU1JTlDJUIwJUU1JTlEJTgwJTIwamNiYi5jYw0KdHJvamFuOi8vZjZkYzY2YjctOGI1MS00Mzk3LTk2ZTYtNjhiNzUzNmVmZGI5QGd6ZHgwMS5qY25vZGUudG9wOjE1MDM1P2FsbG93SW5zZWN1cmU9MSZwZWVyPXNnMDEuY2tjbG91ZC5pbmZvJnNuaT1zZzAxLmNrY2xvdWQuaW5mbyNKQ0JCXyUyMCVFNiU5NiVCMCVFNSU4QSVBMCVFNSU5RCVBMSUyMDAxJUUzJTgwJTkwdmlwMSUyMCVFMyU4MCU5MQ0KdHJvamFuOi8vZjZkYzY2YjctOGI1MS00Mzk3LTk2ZTYtNjhiNzUzNmVmZGI5QGd6ZHguamNub2RlLnRvcDo0MTc1ND9hbGxvd0luc2VjdXJlPTEmcGVlcj1zZzAxLmNrY2xvdWQuaW5mbyZzbmk9c2cwMS5ja2Nsb3VkLmluZm8jSkNCQl8lMjAlRTYlOTYlQjAlRTUlOEElQTAlRTUlOUQlQTElMjAwMiVFMyU4MCU5MHZpcDElMjAlRTMlODAlOTENCnRyb2phbjovL2Y2ZGM2NmI3LThiNTEtNDM5Ny05NmU2LTY4Yjc1MzZlZmRiOUBnenlkLmpjbm9kZS50b3A6MjE0MjU/YWxsb3dJbnNlY3VyZT0xJnBlZXI9c2cwMS5ja2Nsb3VkLmluZm8mc25pPXNnMDEuY2tjbG91ZC5pbmZvI0pDQkJfJTIwJUU2JTk2JUIwJUU1JThBJUEwJUU1JTlEJUExJTIwMDMlRTMlODAlOTB2aXAxJTIwJUUzJTgwJTkxDQp0cm9qYW46Ly9mNmRjNjZiNy04YjUxLTQzOTctOTZlNi02OGI3NTM2ZWZkYjlAZ3p5ZC5qY25vZGUudG9wOjIwNzA3P2FsbG93SW5zZWN1cmU9MSZwZWVyPXNnMDMuY2tjbG91ZC5pbmZvJnNuaT1zZzAzLmNrY2xvdWQuaW5mbyNKQ0JCXyUyMCVFNiU5NiVCMCVFNSU4QSVBMCVFNSU5RCVBMSUyMDA0JUUzJTgwJTkwdmlwMSUyMCVFMyU4MCU5MQ0KdHJvamFuOi8vZjZkYzY2YjctOGI1MS00Mzk3LTk2ZTYtNjhiNzUzNmVmZGI5QGd6ZHgwMS5qY25vZGUudG9wOjU2OTE1P2FsbG93SW5zZWN1cmU9MSZwZWVyPXNnMDMuY2tjbG91ZC5pbmZvJnNuaT1zZzAzLmNrY2xvdWQuaW5mbyNKQ0JCXyUyMCVFNiU5NiVCMCVFNSU4QSVBMCVFNSU5RCVBMSUyMDA1JUUzJTgwJTkwdmlwMSVFMyU4MCU5MQ0KdHJvamFuOi8vZjZkYzY2YjctOGI1MS00Mzk3LTk2ZTYtNjhiNzUzNmVmZGI5QGd6ZHguamNub2RlLnRvcDoxODcxNj9hbGxvd0luc2VjdXJlPTEmcGVlcj1zZzAzLmNrY2xvdWQuaW5mbyZzbmk9c2cwMy5ja2Nsb3VkLmluZm8jSkNCQl8lMjAlRTYlOTYlQjAlRTUlOEElQTAlRTUlOUQlQTElMjAwNiVFMyU4MCU5MHZpcDElRTMlODAlOTENCnRyb2phbjovL2Y2ZGM2NmI3LThiNTEtNDM5Ny05NmU2LTY4Yjc1MzZlZmRiOUBnemR4MDEuamNub2RlLnRvcDo0MTM5MD9hbGxvd0luc2VjdXJlPTEmcGVlcj1oazA1LmNrY2xvdWQuaW5mbyZzbmk9aGswNS5ja2Nsb3VkLmluZm8jSkNCQl8lRTklQTYlOTklRTYlQjglQUYwMSVFMyU4MCU5MHZpcDElRTMlODAlOTENCnRyb2phbjovL2Y2ZGM2NmI3LThiNTEtNDM5Ny05NmU2LTY4Yjc1MzZlZmRiOUBnemR4Lmpjbm9kZS50b3A6NDczMjE/YWxsb3dJbnNlY3VyZT0xJnBlZXI9aGswNS5ja2Nsb3VkLmluZm8mc25pPWhrMDUuY2tjbG91ZC5pbmZvI0pDQkJfJUU5JUE2JTk5JUU2JUI4JUFGMDIlRTMlODAlOTB2aXAxJUUzJTgwJTkxDQp0cm9qYW46Ly9mNmRjNjZiNy04YjUxLTQzOTctOTZlNi02OGI3NTM2ZWZkYjlAZ3p5ZC5qY25vZGUudG9wOjQ5NDg2P2FsbG93SW5zZWN1cmU9MSZwZWVyPWhrMDUuY2tjbG91ZC5pbmZvJnNuaT1oazA1LmNrY2xvdWQuaW5mbyNKQ0JCXyVFOSVBNiU5OSVFNiVCOCVBRjAzXzElRTMlODAlOTB2aXAxJUUzJTgwJTkxDQp0cm9qYW46Ly9mNmRjNjZiNy04YjUxLTQzOTctOTZlNi02OGI3NTM2ZWZkYjlAZ3p5ZC5qY25vZGUudG9wOjExOTM2P2FsbG93SW5zZWN1cmU9MSZwZWVyPWhrMDMuY2tjbG91ZC5pbmZvJnNuaT1oazAzLmNrY2xvdWQuaW5mbyNKQ0JCXyVFOSVBNiU5OSVFNiVCOCVBRjAzJUUzJTgwJTkwdmlwMSVFMyU4MCU5MQ0KdHJvamFuOi8vZjZkYzY2YjctOGI1MS00Mzk3LTk2ZTYtNjhiNzUzNmVmZGI5QGd6ZHguamNub2RlLnRvcDozNTI1Nz9hbGxvd0luc2VjdXJlPTEmcGVlcj1oazAzLmNrY2xvdWQuaW5mbyZzbmk9aGswMy5ja2Nsb3VkLmluZm8jSkNCQl8lRTklQTYlOTklRTYlQjglQUYwNCVFMyU4MCU5MHZpcDElRTMlODAlOTENCnRyb2phbjovL2Y2ZGM2NmI3LThiNTEtNDM5Ny05NmU2LTY4Yjc1MzZlZmRiOUBnemR4MDEuamNub2RlLnRvcDo1MTg4ND9hbGxvd0luc2VjdXJlPTEmcGVlcj1oazAzLmNrY2xvdWQuaW5mbyZzbmk9aGswMy5ja2Nsb3VkLmluZm8jSkNCQl8lRTklQTYlOTklRTYlQjglQUYwJTIwNF8xJUUzJTgwJTkwdmlwMSVFMyU4MCU5MQ0KdHJvamFuOi8vZjZkYzY2YjctOGI1MS00Mzk3LTk2ZTYtNjhiNzUzNmVmZGI5QGd6eWQuamNub2RlLnRvcDoyMjE3ND9hbGxvd0luc2VjdXJlPTEmcGVlcj1oazAyLmNrY2xvdWQuaW5mbyZzbmk9aGswMi5ja2Nsb3VkLmluZm8jSkNCQl8lRTklQTYlOTklRTYlQjglQUYlMjAwNSVFMyU4MCU5MHZpcDElRTMlODAlOTENCnRyb2phbjovL2Y2ZGM2NmI3LThiNTEtNDM5Ny05NmU2LTY4Yjc1MzZlZmRiOUBnemR4MDEuamNub2RlLnRvcDoxNzk2Nz9hbGxvd0luc2VjdXJlPTEmcGVlcj1oazAyLmNrY2xvdWQuaW5mbyZzbmk9aGswMi5ja2Nsb3VkLmluZm8jSkNCQl8lRTklQTYlOTklRTYlQjglQUYlMjAwNl8xJUUzJTgwJTkwdmlwMSVFMyU4MCU5MQ0KdHJvamFuOi8vZjZkYzY2YjctOGI1MS00Mzk3LTk2ZTYtNjhiNzUzNmVmZGI5QGd6ZHguamNub2RlLnRvcDozNjU2ND9hbGxvd0luc2VjdXJlPTEmcGVlcj1oazAyLmNrY2xvdWQuaW5mbyZzbmk9aGswMi5ja2Nsb3VkLmluZm8jSkNCQl8lRTklQTYlOTklRTYlQjglQUYlMjAwNiVFMyU4MCU5MHZpcDElRTMlODAlOTENCnRyb2phbjovL2Y2ZGM2NmI3LThiNTEtNDM5Ny05NmU2LTY4Yjc1MzZlZmRiOUBnenlkLmpjbm9kZS50b3A6NTQwODg/YWxsb3dJbnNlY3VyZT0xJnBlZXI9aGswNC5ja2Nsb3VkLmluZm8mc25pPWhrMDQuY2tjbG91ZC5pbmZvI0pDQkJfJUU5JUE2JTk5JUU2JUI4JUFGMDklRTMlODAlOTB2aXAxJUUzJTgwJTkxDQp0cm9qYW46Ly9mNmRjNjZiNy04YjUxLTQzOTctOTZlNi02OGI3NTM2ZWZkYjlAZ3pkeDAxLmpjbm9kZS50b3A6NTcyMzA/YWxsb3dJbnNlY3VyZT0xJnBlZXI9aGswNC5ja2Nsb3VkLmluZm8mc25pPWhrMDQuY2tjbG91ZC5pbmZvI0pDQkJfJUU5JUE2JTk5JUU2JUI4JUFGMTBfMSVFMyU4MCU5MHZpcDElRTMlODAlOTENCnRyb2phbjovL2Y2ZGM2NmI3LThiNTEtNDM5Ny05NmU2LTY4Yjc1MzZlZmRiOUBnemR4Lmpjbm9kZS50b3A6Mjc3NTM/YWxsb3dJbnNlY3VyZT0xJnBlZXI9aGswNC5ja2Nsb3VkLmluZm8mc25pPWhrMDQuY2tjbG91ZC5pbmZvI0pDQkJfJUU5JUE2JTk5JUU2JUI4JUFGMTAlRTMlODAlOTB2aXAxJUUzJTgwJTkxDQp0cm9qYW46Ly9mNmRjNjZiNy04YjUxLTQzOTctOTZlNi02OGI3NTM2ZWZkYjlAZ3p5ZC5qY25vZGUudG9wOjE1NDMxP2FsbG93SW5zZWN1cmU9MSZwZWVyPWRlMDEuY2tjbG91ZC5pbmZvJnNuaT1kZTAxLmNrY2xvdWQuaW5mbyNKQ0JCXyVFNSVCRSVCNyVFNSU5QiVCRDAxJUUzJTgwJTkwdmlwMSVFMyU4MCU5MQ0KdHJvamFuOi8vZjZkYzY2YjctOGI1MS00Mzk3LTk2ZTYtNjhiNzUzNmVmZGI5QGd6ZHgwMS5qY25vZGUudG9wOjE2NTI1P2FsbG93SW5zZWN1cmU9MSZwZWVyPWRlMDEuY2tjbG91ZC5pbmZvJnNuaT1kZTAxLmNrY2xvdWQuaW5mbyNKQ0JCXyVFNSVCRSVCNyVFNSU5QiVCRDAyJUUzJTgwJTkwdmlwMSVFMyU4MCU5MQ0KdHJvamFuOi8vZjZkYzY2YjctOGI1MS00Mzk3LTk2ZTYtNjhiNzUzNmVmZGI5QGd6ZHguamNub2RlLnRvcDozMzgzMD9hbGxvd0luc2VjdXJlPTEmcGVlcj1kZTAxLmNrY2xvdWQuaW5mbyZzbmk9ZGUwMS5ja2Nsb3VkLmluZm8jSkNCQl8lRTUlQkUlQjclRTUlOUIlQkQwMyVFMyU4MCU5MHZpcDElRTMlODAlOTENCnRyb2phbjovL2Y2ZGM2NmI3LThiNTEtNDM5Ny05NmU2LTY4Yjc1MzZlZmRiOUBnemR4MDEuamNub2RlLnRvcDoyMjI0Mz9hbGxvd0luc2VjdXJlPTEmcGVlcj1pZDAxLmNrY2xvdWQuaW5mbyZzbmk9aWQwMS5ja2Nsb3VkLmluZm8jSkNCQl8lMjAlRTUlOEQlQjAlRTUlQkElQTYwMSVFMyU4MCU5MHZpcDElRTMlODAlOTENCnRyb2phbjovL2Y2ZGM2NmI3LThiNTEtNDM5Ny05NmU2LTY4Yjc1MzZlZmRiOUBnemR4Lmpjbm9kZS50b3A6MTgwODU/YWxsb3dJbnNlY3VyZT0xJnBlZXI9aWQwMS5ja2Nsb3VkLmluZm8mc25pPWlkMDEuY2tjbG91ZC5pbmZvI0pDQkJfJTIwJUU1JThEJUIwJUU1JUJBJUE2MDIlRTMlODAlOTB2aXAxJUUzJTgwJTkxDQp0cm9qYW46Ly9mNmRjNjZiNy04YjUxLTQzOTctOTZlNi02OGI3NTM2ZWZkYjlAZ3p5ZC5qY25vZGUudG9wOjU1MTk5P2FsbG93SW5zZWN1cmU9MSZwZWVyPWlkMDEuY2tjbG91ZC5pbmZvJnNuaT1pZDAxLmNrY2xvdWQuaW5mbyNKQ0JCXyUyMCVFNSU4RCVCMCVFNSVCQSVBNjAzJUUzJTgwJTkwdmlwMSVFMyU4MCU5MQ0KdHJvamFuOi8vZjZkYzY2YjctOGI1MS00Mzk3LTk2ZTYtNjhiNzUzNmVmZGI5QGd6ZHgwMS5qY25vZGUudG9wOjQ0NTMyP2FsbG93SW5zZWN1cmU9MSZwZWVyPXVrMDEuY2tjbG91ZC5pbmZvJnNuaT11azAxLmNrY2xvdWQuaW5mbyNKQ0JCXyUyMCVFOCU4QiVCMSVFNSU5QiVCRDAxJUUzJTgwJTkwdmlwMSVFMyU4MCU5MQ0KdHJvamFuOi8vZjZkYzY2YjctOGI1MS00Mzk3LTk2ZTYtNjhiNzUzNmVmZGI5QGd6ZHguamNub2RlLnRvcDo1Mjc1OD9hbGxvd0luc2VjdXJlPTEmcGVlcj11azAxLmNrY2xvdWQuaW5mbyZzbmk9dWswMS5ja2Nsb3VkLmluZm8jSkNCQl8lMjAlRTglOEIlQjElRTUlOUIlQkQwMiVFMyU4MCU5MHZpcDElRTMlODAlOTENCnRyb2phbjovL2Y2ZGM2NmI3LThiNTEtNDM5Ny05NmU2LTY4Yjc1MzZlZmRiOUBnenlkLmpjbm9kZS50b3A6MjQ2NjI/YWxsb3dJbnNlY3VyZT0xJnBlZXI9dWswMS5ja2Nsb3VkLmluZm8mc25pPXVrMDEuY2tjbG91ZC5pbmZvI0pDQkJfJTIwJUU4JThCJUIxJUU1JTlCJUJEMDMlRTMlODAlOTB2aXAxJUUzJTgwJTkxDQp0cm9qYW46Ly9mNmRjNjZiNy04YjUxLTQzOTctOTZlNi02OGI3NTM2ZWZkYjlAZ3pkeDAxLmpjbm9kZS50b3A6MTQ2NDM/YWxsb3dJbnNlY3VyZT0xJnBlZXI9anAwMS5ja2Nsb3VkLmluZm8mc25pPWpwMDEuY2tjbG91ZC5pbmZvI0pDQkJfJUU2JTk3JUE1JUU2JTlDJUFDMDElRTMlODAlOTB2aXAxJUUzJTgwJTkxDQp0cm9qYW46Ly9mNmRjNjZiNy04YjUxLTQzOTctOTZlNi02OGI3NTM2ZWZkYjlAZ3pkeC5qY25vZGUudG9wOjMxNTUwP2FsbG93SW5zZWN1cmU9MSZwZWVyPWpwMDEuY2tjbG91ZC5pbmZvJnNuaT1qcDAxLmNrY2xvdWQuaW5mbyNKQ0JCXyVFNiU5NyVBNSVFNiU5QyVBQzAyJUUzJTgwJTkwdmlwMSVFMyU4MCU5MQ0KdHJvamFuOi8vZjZkYzY2YjctOGI1MS00Mzk3LTk2ZTYtNjhiNzUzNmVmZGI5QGd6eWQuamNub2RlLnRvcDo0NDg5MT9hbGxvd0luc2VjdXJlPTEmcGVlcj1qcDAxLmNrY2xvdWQuaW5mbyZzbmk9anAwMS5ja2Nsb3VkLmluZm8jSkNCQl8lRTYlOTclQTUlRTYlOUMlQUMwMyVFMyU4MCU5MHZpcDElRTMlODAlOTENCnRyb2phbjovL2Y2ZGM2NmI3LThiNTEtNDM5Ny05NmU2LTY4Yjc1MzZlZmRiOUBnemR4MDEuamNub2RlLnRvcDoxMDQ0ND9hbGxvd0luc2VjdXJlPTEmcGVlcj1qcDAzLmNrY2xvdWQuaW5mbyZzbmk9anAwMy5ja2Nsb3VkLmluZm8jSkNCQl8lRTYlOTclQTUlRTYlOUMlQUMwNCVFMyU4MCU5MHZpcDElRTMlODAlOTENCnRyb2phbjovL2Y2ZGM2NmI3LThiNTEtNDM5Ny05NmU2LTY4Yjc1MzZlZmRiOUBnemR4Lmpjbm9kZS50b3A6NDkwMzg/YWxsb3dJbnNlY3VyZT0xJnBlZXI9anAwMy5ja2Nsb3VkLmluZm8mc25pPWpwMDMuY2tjbG91ZC5pbmZvI0pDQkJfJUU2JTk3JUE1JUU2JTlDJUFDMDUlRTMlODAlOTB2aXAxJUUzJTgwJTkxDQp0cm9qYW46Ly9mNmRjNjZiNy04YjUxLTQzOTctOTZlNi02OGI3NTM2ZWZkYjlAZ3p5ZC5qY25vZGUudG9wOjI0NDk4P2FsbG93SW5zZWN1cmU9MSZwZWVyPWpwMDMuY2tjbG91ZC5pbmZvJnNuaT1qcDAzLmNrY2xvdWQuaW5mbyNKQ0JCXyVFNiU5NyVBNSVFNiU5QyVBQzA2JUUzJTgwJTkwdmlwMSVFMyU4MCU5MQ0KdHJvamFuOi8vZjZkYzY2YjctOGI1MS00Mzk3LTk2ZTYtNjhiNzUzNmVmZGI5QGd6ZHgwMS5qY25vZGUudG9wOjQyMTQ5P2FsbG93SW5zZWN1cmU9MSZwZWVyPXJjdHcwMS5ja2Nsb3VkLmluZm8mc25pPXJjdHcwMS5ja2Nsb3VkLmluZm8jSkNCQl8lMjAlRTUlOEYlQjAlRTYlQjklQkUlMjAwMV8xJUUzJTgwJTkwdmlwMSVFMyU4MCU5MQ0KdHJvamFuOi8vZjZkYzY2YjctOGI1MS00Mzk3LTk2ZTYtNjhiNzUzNmVmZGI5QGd6ZHguamNub2RlLnRvcDo0NTU0MD9hbGxvd0luc2VjdXJlPTEmcGVlcj1yY3R3MDEuY2tjbG91ZC5pbmZvJnNuaT1yY3R3MDEuY2tjbG91ZC5pbmZvI0pDQkJfJTIwJUU1JThGJUIwJUU2JUI5JUJFJTIwMDElRTMlODAlOTB2aXAxJUUzJTgwJTkxDQp0cm9qYW46Ly9mNmRjNjZiNy04YjUxLTQzOTctOTZlNi02OGI3NTM2ZWZkYjlAZ3p5ZC5qY25vZGUudG9wOjU1MzQ1P2FsbG93SW5zZWN1cmU9MSZwZWVyPXJjdHcwMS5ja2Nsb3VkLmluZm8mc25pPXJjdHcwMS5ja2Nsb3VkLmluZm8jSkNCQl8lMjAlRTUlOEYlQjAlRTYlQjklQkUlMjAwMiVFMyU4MCU5MHZpcDElRTMlODAlOTENCnRyb2phbjovL2Y2ZGM2NmI3LThiNTEtNDM5Ny05NmU2LTY4Yjc1MzZlZmRiOUBnemR4MDEuamNub2RlLnRvcDoyNDQ0OD9hbGxvd0luc2VjdXJlPTEmcGVlcj1yY3R3MDIuY2tjbG91ZC5pbmZvJnNuaT1yY3R3MDIuY2tjbG91ZC5pbmZvI0pDQkJfJTIwJUU1JThGJUIwJUU2JUI5JUJFJTIwMDVfMSVFMyU4MCU5MHZpcDElRTMlODAlOTENCnRyb2phbjovL2Y2ZGM2NmI3LThiNTEtNDM5Ny05NmU2LTY4Yjc1MzZlZmRiOUBnemR4Lmpjbm9kZS50b3A6NjE0MTM/YWxsb3dJbnNlY3VyZT0xJnBlZXI9cmN0dzAyLmNrY2xvdWQuaW5mbyZzbmk9cmN0dzAyLmNrY2xvdWQuaW5mbyNKQ0JCXyUyMCVFNSU4RiVCMCVFNiVCOSVCRSUyMDA1JUUzJTgwJTkwdmlwMSVFMyU4MCU5MQ0KdHJvamFuOi8vZjZkYzY2YjctOGI1MS00Mzk3LTk2ZTYtNjhiNzUzNmVmZGI5QGd6eWQuamNub2RlLnRvcDoyMjA4ND9hbGxvd0luc2VjdXJlPTEmcGVlcj1yY3R3MDIuY2tjbG91ZC5pbmZvJnNuaT1yY3R3MDIuY2tjbG91ZC5pbmZvI0pDQkJfJTIwJUU1JThGJUIwJUU2JUI5JUJFJTIwMDYlRTMlODAlOTB2aXAxJUUzJTgwJTkxDQp0cm9qYW46Ly9mNmRjNjZiNy04YjUxLTQzOTctOTZlNi02OGI3NTM2ZWZkYjlAZ3pkeC5qY25vZGUudG9wOjUyNTQ2P2FsbG93SW5zZWN1cmU9MSZwZWVyPXR1cjAxLmNrY2xvdWQuaW5mbyZzbmk9dHVyMDEuY2tjbG91ZC5pbmZvI0pDQkJfJUU1JTlDJTlGJUU4JTgwJUIzJUU1JTg1JUI2JTIwMDElRTMlODAlOTB2aXAxJUUzJTgwJTkxDQp0cm9qYW46Ly9mNmRjNjZiNy04YjUxLTQzOTctOTZlNi02OGI3NTM2ZWZkYjlAZ3p5ZC5qY25vZGUudG9wOjQ2NTQxP2FsbG93SW5zZWN1cmU9MSZwZWVyPXR1cjAxLmNrY2xvdWQuaW5mbyZzbmk9dHVyMDEuY2tjbG91ZC5pbmZvI0pDQkJfJUU1JTlDJTlGJUU4JTgwJUIzJUU1JTg1JUI2JTIwMDIlRTMlODAlOTB2aXAxJUUzJTgwJTkxDQp0cm9qYW46Ly9mNmRjNjZiNy04YjUxLTQzOTctOTZlNi02OGI3NTM2ZWZkYjlAZ3pkeDAxLmpjbm9kZS50b3A6NTU4NTY/YWxsb3dJbnNlY3VyZT0xJnBlZXI9dHVyMDEuY2tjbG91ZC5pbmZvJnNuaT10dXIwMS5ja2Nsb3VkLmluZm8jSkNCQl8lRTUlOUMlOUYlRTglODAlQjMlRTUlODUlQjYlMjAwMyVFMyU4MCU5MHZpcDElRTMlODAlOTENCnRyb2phbjovL2Y2ZGM2NmI3LThiNTEtNDM5Ny05NmU2LTY4Yjc1MzZlZmRiOUBnenlkLmpjbm9kZS50b3A6MTYyNDI/YWxsb3dJbnNlY3VyZT0xJnBlZXI9dm4wMS5ja2Nsb3VkLmluZm8mc25pPXZuMDEuY2tjbG91ZC5pbmZvI0pDQkJfJUU4JUI2JThBJUU1JThEJTk3JTIwMDElRTMlODAlOTB2aXAxJUUzJTgwJTkxDQp0cm9qYW46Ly9mNmRjNjZiNy04YjUxLTQzOTctOTZlNi02OGI3NTM2ZWZkYjlAZ3pkeDAxLmpjbm9kZS50b3A6MjE3NjA/YWxsb3dJbnNlY3VyZT0xJnBlZXI9dm4wMS5ja2Nsb3VkLmluZm8mc25pPXZuMDEuY2tjbG91ZC5pbmZvI0pDQkJfJUU4JUI2JThBJUU1JThEJTk3JTIwMDIlRTMlODAlOTB2aXAxJUUzJTgwJTkxDQp0cm9qYW46Ly9mNmRjNjZiNy04YjUxLTQzOTctOTZlNi02OGI3NTM2ZWZkYjlAZ3pkeC5qY25vZGUudG9wOjE3MDIyP2FsbG93SW5zZWN1cmU9MSZwZWVyPXZuMDEuY2tjbG91ZC5pbmZvJnNuaT12bjAxLmNrY2xvdWQuaW5mbyNKQ0JCXyVFOCVCNiU4QSVFNSU4RCU5NyUyMDAzJUUzJTgwJTkwdmlwMSVFMyU4MCU5MQ0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVNrTkNRbDhnWEhVM1pqaGxYSFUxTm1aa01ERmNkVE13TVRCMmFYQXhYSFV6TURFeElpd2lZV1JrSWpvaVozcDVaQzVxWTI1dlpHVXVkRzl3SWl3aWNHOXlkQ0k2SWpNNE16Z3hJaXdpYVdRaU9pSm1ObVJqTmpaaU55MDRZalV4TFRRek9UY3RPVFpsTmkwMk9HSTNOVE0yWldaa1lqa2lMQ0poYVdRaU9pSXdJaXdpYm1WMElqb2lkM01pTENKMGVYQmxJam9pYm05dVpTSXNJbWh2YzNRaU9pSWlMQ0p3WVhSb0lqb2lJaXdpZEd4eklqb2lJbjA9DQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pU2tOQ1FsOGdYSFUzWmpobFhIVTFObVprTURKZk1WeDFNekF4TUhacGNERmNkVE13TVRFaUxDSmhaR1FpT2lKbmVtUjRNREV1YW1OdWIyUmxMblJ2Y0NJc0luQnZjblFpT2lJeU1ERTFNeUlzSW1sa0lqb2laalprWXpZMllqY3RPR0kxTVMwME16azNMVGsyWlRZdE5qaGlOelV6Tm1WbVpHSTVJaXdpWVdsa0lqb2lNQ0lzSW01bGRDSTZJbmR6SWl3aWRIbHdaU0k2SW01dmJtVWlMQ0pvYjNOMElqb2lJaXdpY0dGMGFDSTZJaUlzSW5Sc2N5STZJaUo5DQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pU2tOQ1FsOGdYSFUzWmpobFhIVTFObVprTURKY2RUTXdNVEIyYVhBeFhIVXpNREV4SWl3aVlXUmtJam9pWjNwa2VDNXFZMjV2WkdVdWRHOXdJaXdpY0c5eWRDSTZJakk0TWpBMElpd2lhV1FpT2lKbU5tUmpOalppTnkwNFlqVXhMVFF6T1RjdE9UWmxOaTAyT0dJM05UTTJaV1prWWpraUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWQzTWlMQ0owZVhCbElqb2libTl1WlNJc0ltaHZjM1FpT2lJaUxDSndZWFJvSWpvaUlpd2lkR3h6SWpvaUluMD0NCnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lTa05DUWw4Z1hIVTNaamhsWEhVMU5tWmtJREF6WEhVek1ERXdkbWx3TVZ4MU16QXhNU0lzSW1Ga1pDSTZJbWQ2ZVdRdWFtTnViMlJsTG5SdmNDSXNJbkJ2Y25RaU9pSXlNVEF6TmlJc0ltbGtJam9pWmpaa1l6WTJZamN0T0dJMU1TMDBNemszTFRrMlpUWXROamhpTnpVek5tVm1aR0k1SWl3aVlXbGtJam9pTUNJc0ltNWxkQ0k2SW5keklpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlKOQ0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVNrTkNRbDhnWEhVM1pqaGxYSFUxTm1aa0lEQTBYekZjZFRNd01UQjJhWEF4WEhVek1ERXhJaXdpWVdSa0lqb2laM3BrZURBeExtcGpibTlrWlM1MGIzQWlMQ0p3YjNKMElqb2lNalkyTVRFaUxDSnBaQ0k2SW1ZMlpHTTJObUkzTFRoaU5URXRORE01TnkwNU5tVTJMVFk0WWpjMU16WmxabVJpT1NJc0ltRnBaQ0k2SWpBaUxDSnVaWFFpT2lKM2N5SXNJblI1Y0dVaU9pSnViMjVsSWl3aWFHOXpkQ0k2SWlJc0luQmhkR2dpT2lJaUxDSjBiSE1pT2lJaWZRPT0NCnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lTa05DUWw4Z1hIVTNaamhsWEhVMU5tWmtJREEwWEhVek1ERXdkbWx3TVZ4MU16QXhNU0lzSW1Ga1pDSTZJbWQ2WkhndWFtTnViMlJsTG5SdmNDSXNJbkJ2Y25RaU9pSTJNalk0TkNJc0ltbGtJam9pWmpaa1l6WTJZamN0T0dJMU1TMDBNemszTFRrMlpUWXROamhpTnpVek5tVm1aR0k1SWl3aVlXbGtJam9pTUNJc0ltNWxkQ0k2SW5keklpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlKOQ0KdHJvamFuOi8vZjZkYzY2YjctOGI1MS00Mzk3LTk2ZTYtNjhiNzUzNmVmZGI5QGd6ZHgwMS5qY25vZGUudG9wOjE3NTAzP2FsbG93SW5zZWN1cmU9MSZwZWVyPXVzMDQuY2tjbG91ZC5pbmZvJnNuaT11czA0LmNrY2xvdWQuaW5mbyNKQ0JCXyVFNyVCRSU4RSVFNSU5QiVCRDA1XzElRTMlODAlOTB2aXAxJUUzJTgwJTkxDQp0cm9qYW46Ly9mNmRjNjZiNy04YjUxLTQzOTctOTZlNi02OGI3NTM2ZWZkYjlAZ3p5ZC5qY25vZGUudG9wOjU2MTAyP2FsbG93SW5zZWN1cmU9MSZwZWVyPXVzMDQuY2tjbG91ZC5pbmZvJnNuaT11czA0LmNrY2xvdWQuaW5mbyNKQ0JCXyVFNyVCRSU4RSVFNSU5QiVCRDA1JUUzJTgwJTkwdmlwMSVFMyU4MCU5MQ0KdHJvamFuOi8vZjZkYzY2YjctOGI1MS00Mzk3LTk2ZTYtNjhiNzUzNmVmZGI5QGd6ZHguamNub2RlLnRvcDo2NTA5Nz9hbGxvd0luc2VjdXJlPTEmcGVlcj11czA0LmNrY2xvdWQuaW5mbyZzbmk9dXMwNC5ja2Nsb3VkLmluZm8jSkNCQl8lRTclQkUlOEUlRTUlOUIlQkQwNiVFMyU4MCU5MHZpcDElRTMlODAlOTENCg== -------------------------------------------------------------------------------- /sub/free/www.dgycom.com: -------------------------------------------------------------------------------- 1 | dm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVhIVTFNalk1WEhVMFpqVTVYSFUyWkRReFhIVTVNV05tWEhWbVpqRmhNVEFnUjBJaUxDSmhaR1FpT2lKdWN6QXhMbWQxZEdsdVozUnBibWN1WTI5dElpd2ljRzl5ZENJNklqTXdNRFEwSWl3aWFXUWlPaUkxWlRCbE1XUmxOaTAwTXpWbUxUUXhPRGt0WWpBeFl5MDFOMk5pT1dVMVltRXpNbUVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZDNNaUxDSjBlWEJsSWpvaWJtOXVaU0lzSW1odmMzUWlPaUp6YURBeExtWmhjM1JqYkc5MVpDNWpiSFZpSWl3aWNHRjBhQ0k2SWx3dllXTmxZVzFsWkhZaUxDSjBiSE1pT2lJaWZRPT0NCnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lYSFU0WkdSa1hIVTNPV0ppWEhVMFpUQmlYSFUyWWpJeFhIVTVNV05rWEhVM1pqWmxYSFUxTWpZNVhIVTBaalU1WEhWbVpqRmhNU0JjZFRVNU1qa2lMQ0poWkdRaU9pSnVjekF4TG1kMWRHbHVaM1JwYm1jdVkyOXRJaXdpY0c5eWRDSTZJak13TURRMElpd2lhV1FpT2lJMVpUQmxNV1JsTmkwME16Vm1MVFF4T0RrdFlqQXhZeTAxTjJOaU9XVTFZbUV6TW1FaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWQzTWlMQ0owZVhCbElqb2libTl1WlNJc0ltaHZjM1FpT2lKemFEQXhMbVpoYzNSamJHOTFaQzVqYkhWaUlpd2ljR0YwYUNJNklsd3ZZV05sWVcxbFpIWWlMQ0owYkhNaU9pSWlmUT09DQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pWEhVMU9UVTNYSFU1T1RFd1hIVTFNak13WEhVMk56Rm1YSFZtWmpGaE1qQXlNeTB3TkMweU1DSXNJbUZrWkNJNkltNXpNREV1WjNWMGFXNW5kR2x1Wnk1amIyMGlMQ0p3YjNKMElqb2lNekF3TkRRaUxDSnBaQ0k2SWpWbE1HVXhaR1UyTFRRek5XWXROREU0T1MxaU1ERmpMVFUzWTJJNVpUVmlZVE15WVNJc0ltRnBaQ0k2SWpBaUxDSnVaWFFpT2lKM2N5SXNJblI1Y0dVaU9pSnViMjVsSWl3aWFHOXpkQ0k2SW5Ob01ERXVabUZ6ZEdOc2IzVmtMbU5zZFdJaUxDSndZWFJvSWpvaVhDOWhZMlZoYldWa2RpSXNJblJzY3lJNklpSjkNCnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lYSFZrT0ROa1hIVmtaVGczSUZzZ1hIVTRNRFUwWEhVNU1ERmhJRjBnWEhVMk5XVTFYSFUyTnpKaklGeDFNREJpTnlCR01TQmNkVEF3WWpjZ01ESWdYSFV3TUdJM0lGeDFOMlZpWmx4MU9HUmxaakVpTENKaFpHUWlPaUp1Y3pBeExtZDFkR2x1WjNScGJtY3VZMjl0SWl3aWNHOXlkQ0k2SWpNd01EUTBJaXdpYVdRaU9pSTFaVEJsTVdSbE5pMDBNelZtTFRReE9Ea3RZakF4WXkwMU4yTmlPV1UxWW1Fek1tRWlMQ0poYVdRaU9pSXdJaXdpYm1WMElqb2lkM01pTENKMGVYQmxJam9pYm05dVpTSXNJbWh2YzNRaU9pSnphREF4TG1aaGMzUmpiRzkxWkM1amJIVmlJaXdpY0dGMGFDSTZJbHd2WVdObFlXMWxaSFlpTENKMGJITWlPaUlpZlE9PQ0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVhIVmtPRE5rWEhWa1pUZzNJRnNnWEhVNE1EVTBYSFU1TURGaElGMGdYSFUyTldVMVhIVTJOekpqSUZ4MU1EQmlOeUJHTVNCY2RUQXdZamNnTURNZ1hIVXdNR0kzSUZ4MU4yVmlabHgxT0dSbFpqSWlMQ0poWkdRaU9pSnVjekF5TG1kMWRHbHVaM1JwYm1jdVkyOXRJaXdpY0c5eWRDSTZJak13TURJeElpd2lhV1FpT2lJMVpUQmxNV1JsTmkwME16Vm1MVFF4T0RrdFlqQXhZeTAxTjJOaU9XVTFZbUV6TW1FaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWQzTWlMQ0owZVhCbElqb2libTl1WlNJc0ltaHZjM1FpT2lKemFEQXhMbVpoYzNSamJHOTFaQzVqYkhWaUlpd2ljR0YwYUNJNklsd3ZZV05sWVcxbFpIWWlMQ0owYkhNaU9pSWlmUT09DQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pWEhWa09ETmtYSFZrWlRnM0lGc2dYSFU0TURVMFhIVTVNREZoSUYwZ1hIVTJOV1UxWEhVMk56SmpJRngxTURCaU55QkdNU0JjZFRBd1lqY2dNREVnWEhVd01HSTNJRngxTjJWaVpseDFPR1JsWmpFaUxDSmhaR1FpT2lKdWN6QXhMbWQxZEdsdVozUnBibWN1WTI5dElpd2ljRzl5ZENJNklqTXdNREE1SWl3aWFXUWlPaUkxWlRCbE1XUmxOaTAwTXpWbUxUUXhPRGt0WWpBeFl5MDFOMk5pT1dVMVltRXpNbUVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZDNNaUxDSjBlWEJsSWpvaWJtOXVaU0lzSW1odmMzUWlPaUp6YURBeExtWmhjM1JqYkc5MVpDNWpiSFZpSWl3aWNHRjBhQ0k2SWx3dllXTmxZVzFsWkhZaUxDSjBiSE1pT2lJaWZRPT0NCnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lYSFZrT0ROa1hIVmtaVGczSUZzZ1hIVTRNRFUwWEhVNU1ERmhJRjBnWEhVMk5XVTFYSFUyTnpKaklGeDFNREJpTnlCR01TQmNkVEF3WWpjZ01EUWdYSFV3TUdJM0lGeDFOMlZpWmx4MU9HUmxaaklpTENKaFpHUWlPaUp1Y3pBeUxtZDFkR2x1WjNScGJtY3VZMjl0SWl3aWNHOXlkQ0k2SWpNd01EUTFJaXdpYVdRaU9pSTFaVEJsTVdSbE5pMDBNelZtTFRReE9Ea3RZakF4WXkwMU4yTmlPV1UxWW1Fek1tRWlMQ0poYVdRaU9pSXdJaXdpYm1WMElqb2lkM01pTENKMGVYQmxJam9pYm05dVpTSXNJbWh2YzNRaU9pSnphREF5TG1aaGMzUmpiRzkxWkM1amJIVmlJaXdpY0dGMGFDSTZJbHd2WVdObFlXMWxaSFlpTENKMGJITWlPaUlpZlE9PQ0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVhIVmtPRE5rWEhWa1pUZzNJRnNnWEhVNE1EVTBYSFU1TURGaElGMGdYSFU1T1RrNVhIVTJaVEptSUZ4MU1EQmlOeUJHTVNCY2RUQXdZamNnTURFZ1hIVXdNR0kzSUZ4MU4yVmlabHgxT0dSbFpqSWlMQ0poWkdRaU9pSjJNREl1WjNWMGFXNW5kR2x1Wnk1amIyMGlMQ0p3YjNKMElqb2lNekF3TVRVaUxDSnBaQ0k2SWpWbE1HVXhaR1UyTFRRek5XWXROREU0T1MxaU1ERmpMVFUzWTJJNVpUVmlZVE15WVNJc0ltRnBaQ0k2SWpBaUxDSnVaWFFpT2lKM2N5SXNJblI1Y0dVaU9pSnViMjVsSWl3aWFHOXpkQ0k2SW1kNkxtWmhjM1JqYkc5MVpDNWpiSFZpSWl3aWNHRjBhQ0k2SWx3dllXTmxZVzFsWkhZaUxDSjBiSE1pT2lJaWZRPT0NCnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lYSFZrT0ROa1hIVmtaVGczSUZzZ1hIVTRNRFUwWEhVNU1ERmhJRjBnWEhVNU9UazVYSFUyWlRKbUlGeDFNREJpTnlCR01TQmNkVEF3WWpjZ01ESWdYSFV3TUdJM0lGeDFOMlZpWmx4MU9HUmxaakVpTENKaFpHUWlPaUoyTURFdVozVjBhVzVuZEdsdVp5NWpiMjBpTENKd2IzSjBJam9pTXpBd01qTWlMQ0pwWkNJNklqVmxNR1V4WkdVMkxUUXpOV1l0TkRFNE9TMWlNREZqTFRVM1kySTVaVFZpWVRNeVlTSXNJbUZwWkNJNklqQWlMQ0p1WlhRaU9pSjNjeUlzSW5SNWNHVWlPaUp1YjI1bElpd2lhRzl6ZENJNkltZDZMbVpoYzNSamJHOTFaQzVqYkhWaUlpd2ljR0YwYUNJNklsd3ZZV05sWVcxbFpIWWlMQ0owYkhNaU9pSWlmUT09DQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pWEhWa09ETmtYSFZrWlRnM0lGc2dYSFU0TURVMFhIVTVNREZoSUYwZ1hIVTVPVGs1WEhVMlpUSm1JRngxTURCaU55QkdNU0JjZFRBd1lqY2dNRE1nWEhVd01HSTNJRngxTjJWaVpseDFPR1JsWmpJaUxDSmhaR1FpT2lKMk1ESXVaM1YwYVc1bmRHbHVaeTVqYjIwaUxDSndiM0owSWpvaU16QXdNalFpTENKcFpDSTZJalZsTUdVeFpHVTJMVFF6TldZdE5ERTRPUzFpTURGakxUVTNZMkk1WlRWaVlUTXlZU0lzSW1GcFpDSTZJakFpTENKdVpYUWlPaUozY3lJc0luUjVjR1VpT2lKdWIyNWxJaXdpYUc5emRDSTZJbWQ2TG1aaGMzUmpiRzkxWkM1amJIVmlJaXdpY0dGMGFDSTZJbHd2WVdObFlXMWxaSFlpTENKMGJITWlPaUlpZlE9PQ0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVhIVmtPRE5rWEhWa1pUZzNJRnNnZGpFZ1hTQmNkVGs1T1RsY2RUWmxNbVpjZFRVek9XWmNkVGMxTVdZZ1hIVXdNR0kzSURBeElGeDFNREJpTnlCY2RUZGxZbVpjZFRoa1pXWXlJaXdpWVdSa0lqb2lkakF5TG1kMWRHbHVaM1JwYm1jdVkyOXRJaXdpY0c5eWRDSTZJak13TURBM0lpd2lhV1FpT2lJMVpUQmxNV1JsTmkwME16Vm1MVFF4T0RrdFlqQXhZeTAxTjJOaU9XVTFZbUV6TW1FaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWQzTWlMQ0owZVhCbElqb2libTl1WlNJc0ltaHZjM1FpT2lKemFEQXlMbVpoYzNSamJHOTFaQzVqYkhWaUlpd2ljR0YwYUNJNklsd3ZZV05sWVcxbFpIWWlMQ0owYkhNaU9pSWlmUT09DQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pWEhWa09ETmtYSFZrWlRnM0lGc2dkakVnWFNCY2RUazVPVGxjZFRabE1tWmNkVFV6T1daY2RUYzFNV1lnWEhVd01HSTNJREF5SUZ4MU1EQmlOeUJjZFRkbFltWmNkVGhrWldZeUlpd2lZV1JrSWpvaWRqQXlMbWQxZEdsdVozUnBibWN1WTI5dElpd2ljRzl5ZENJNklqTXdNREE0SWl3aWFXUWlPaUkxWlRCbE1XUmxOaTAwTXpWbUxUUXhPRGt0WWpBeFl5MDFOMk5pT1dVMVltRXpNbUVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZDNNaUxDSjBlWEJsSWpvaWJtOXVaU0lzSW1odmMzUWlPaUp6YURBeUxtWmhjM1JqYkc5MVpDNWpiSFZpSWl3aWNHRjBhQ0k2SWx3dllXTmxZVzFsWkhZaUxDSjBiSE1pT2lJaWZRPT0NCnRyb2phbjovLzVlMGUxZGU2LTQzNWYtNDE4OS1iMDFjLTU3Y2I5ZTViYTMyYUB2MDIuZ3V0aW5ndGluZy5jb206MzAwMTc/YWxsb3dJbnNlY3VyZT0xJnBlZXI9djJoZ2MwMS5mdXFpYW5ncmVuLmNvbSZzbmk9djJoZ2MwMS5mdXFpYW5ncmVuLmNvbSMlRjAlOUYlOUElODclMjAlRTklQTYlOTklRTYlQjglQUYlRTUlOEUlOUYlRTclOTQlOUYlMjAlQzIlQjclMjBoa3QlMjAlQzIlQjclMjAwMSUyMCVDMiVCNyUyMCVFNyVCQSVCRiVFOCVCNyVBRjINCnRyb2phbjovLzVlMGUxZGU2LTQzNWYtNDE4OS1iMDFjLTU3Y2I5ZTViYTMyYUB2MDIuZ3V0aW5ndGluZy5jb206MzAwMDU/YWxsb3dJbnNlY3VyZT0xJnBlZXI9djJoZ2MwMS5mdXFpYW5ncmVuLmNvbSZzbmk9djJoZ2MwMS5mdXFpYW5ncmVuLmNvbSMlRjAlOUYlOUElODclMjAlRTklQTYlOTklRTYlQjglQUYlRTUlOEUlOUYlRTclOTQlOUYlMjAlQzIlQjclMjBoa3QlMjAlMjAlQzIlQjclMjAwMiUyMCVDMiVCNyUyMCVFNyVCQSVCRiVFOCVCNyVBRjINCnRyb2phbjovLzVlMGUxZGU2LTQzNWYtNDE4OS1iMDFjLTU3Y2I5ZTViYTMyYUB2MDIuZ3V0aW5ndGluZy5jb206MzAwMDY/YWxsb3dJbnNlY3VyZT0xJnBlZXI9djJoZ2MwMi5mdXFpYW5ncmVuLmNvbSZzbmk9djJoZ2MwMi5mdXFpYW5ncmVuLmNvbSMlRjAlOUYlOUElODclMjAlNUIlMjAlRTclQTclQkIlRTUlOEElQTglMjAlNUQlMjAlRTklQTYlOTklRTYlQjglQUYlMjAlQzIlQjclMjBFMSUyMCVDMiVCNyUyMDAzJTIwJUMyJUI3JTIwJUU3JUJBJUJGJUU4JUI3JUFGMg0KdHJvamFuOi8vNWUwZTFkZTYtNDM1Zi00MTg5LWIwMWMtNTdjYjllNWJhMzJhQHYwMi5ndXRpbmd0aW5nLmNvbTozMDAzOD9hbGxvd0luc2VjdXJlPTEmcGVlcj12MmhnYzAyLmZ1cWlhbmdyZW4uY29tJnNuaT12MmhnYzAyLmZ1cWlhbmdyZW4uY29tIyVGMCU5RiU5QSU4NyUyMCU1QiUyMCVFNyVBNyVCQiVFNSU4QSVBOCUyMCU1RCUyMCVFOSVBNiU5OSVFNiVCOCVBRiUyMCVDMiVCNyUyMEUxJTIwJUMyJUI3JTIwMDQlMjAlQzIlQjclMjAlRTclQkElQkYlRTglQjclQUYyDQp0cm9qYW46Ly81ZTBlMWRlNi00MzVmLTQxODktYjAxYy01N2NiOWU1YmEzMmFAdjAyLmd1dGluZ3RpbmcuY29tOjMwMDU1P2FsbG93SW5zZWN1cmU9MSZwZWVyPXYxanAwMi5mdXFpYW5ncmVuLmNvbSZzbmk9djFqcDAyLmZ1cWlhbmdyZW4uY29tIyVGMCU5RiU5MiU4RSUyMCU1QiUyMHYxJTIwJTVEJTIwJUU2JTk3JUE1JUU2JTlDJUFDJTIwJUMyJUI3JTIwMDYlMjAlQzIlQjclMjAlRTclQkElQkYlRTglQjclQUYyDQp0cm9qYW46Ly81ZTBlMWRlNi00MzVmLTQxODktYjAxYy01N2NiOWU1YmEzMmFAdjAxLmd1dGluZ3RpbmcuY29tOjIwMjIxP2FsbG93SW5zZWN1cmU9MSZwZWVyPXYyanAwMS5mdXFpYW5ncmVuLmNvbSZzbmk9djJqcDAxLmZ1cWlhbmdyZW4uY29tIyVGMCU5RiU5MiU4RSUyMCU1QiUyMFQxJTIwJTVEJTIwJUU2JTk3JUE1JUU2JTlDJUFDJTIwJUMyJUI3JTIwMDIlMjAlQzIlQjclMjAlRTclQkElQkYlRTglQjclQUYxDQp0cm9qYW46Ly81ZTBlMWRlNi00MzVmLTQxODktYjAxYy01N2NiOWU1YmEzMmFAdjAxLmd1dGluZ3RpbmcuY29tOjIwMjIwP2FsbG93SW5zZWN1cmU9MSZwZWVyPXYyanAwMS5mdXFpYW5ncmVuLmNvbSZzbmk9djJqcDAxLmZ1cWlhbmdyZW4uY29tIyVGMCU5RiU5MiU4RSUyMCU1QiUyMFQxJTIwJTVEJTIwJUU2JTk3JUE1JUU2JTlDJUFDJTIwJUMyJUI3JTIwMDElMjAlQzIlQjclMjAlRTclQkElQkYlRTglQjclQUYxDQp0cm9qYW46Ly81ZTBlMWRlNi00MzVmLTQxODktYjAxYy01N2NiOWU1YmEzMmFAdjAyLmd1dGluZ3RpbmcuY29tOjMwMDU0P2FsbG93SW5zZWN1cmU9MSZwZWVyPXYxanAwMS5mdXFpYW5ncmVuLmNvbSZzbmk9djFqcDAxLmZ1cWlhbmdyZW4uY29tIyVGMCU5RiU5MiU4RSUyMCU1QiUyMHYxJTIwJTVEJTIwJUU2JTk3JUE1JUU2JTlDJUFDJTIwJUMyJUI3JTIwMDUlMjAlQzIlQjclMjAlRTclQkElQkYlRTglQjclQUYyDQp0cm9qYW46Ly81ZTBlMWRlNi00MzVmLTQxODktYjAxYy01N2NiOWU1YmEzMmFAdjAxLmd1dGluZ3RpbmcuY29tOjMwMDAyP2FsbG93SW5zZWN1cmU9MSZwZWVyPXYydHcwMS5mdXFpYW5ncmVuLmNvbSZzbmk9djJ0dzAxLmZ1cWlhbmdyZW4uY29tIyVGMCU5RiU5QSU4NyUyMCU1QiUyMHYxJTIwJTVEJTIwJUU1JThGJUIwJUU2JUI5JUJFJUU1JThFJTlGJUU3JTk0JTlGJTIwJUMyJUI3JTIwMDElMjAlQzIlQjclMjAlRTclQkElQkYlRTglQjclQUYxDQp0cm9qYW46Ly81ZTBlMWRlNi00MzVmLTQxODktYjAxYy01N2NiOWU1YmEzMmFAdjAyLmd1dGluZ3RpbmcuY29tOjMwMDAzP2FsbG93SW5zZWN1cmU9MSZwZWVyPXYydHcwMS5mdXFpYW5ncmVuLmNvbSZzbmk9djJ0dzAxLmZ1cWlhbmdyZW4uY29tIyVGMCU5RiU5QSU4NyUyMCU1QiUyMHYxJTIwJTVEJTIwJUU1JThGJUIwJUU2JUI5JUJFJUU1JThFJTlGJUU3JTk0JTlGJTIwJUMyJUI3JTIwMDIlMjAlQzIlQjclMjAlRTclQkElQkYlRTglQjclQUYyDQp0cm9qYW46Ly81ZTBlMWRlNi00MzVmLTQxODktYjAxYy01N2NiOWU1YmEzMmFAdjAxLmd1dGluZ3RpbmcuY29tOjMwMDU2P2FsbG93SW5zZWN1cmU9MSZwZWVyPXYxa3IwMS5mdXFpYW5ncmVuLmNvbSZzbmk9djFrcjAxLmZ1cWlhbmdyZW4uY29tIyVGMCU5RiU5QSU4NyUyMCU1QiUyMCVFOCU4MSU5NCVFOSU4MCU5QSUyMCU1RCUyMCVFOSU5RiVBOSVFNSU5QiVCRCUyMCVDMiVCNyUyMEUxJTIwJUMyJUI3JTIwMDElMjAlQzIlQjclMjAlRTclQkElQkYlRTglQjclQUYxDQp0cm9qYW46Ly81ZTBlMWRlNi00MzVmLTQxODktYjAxYy01N2NiOWU1YmEzMmFAdjAyLmd1dGluZ3RpbmcuY29tOjMwMDU3P2FsbG93SW5zZWN1cmU9MSZwZWVyPXYxa3IwMi5mdXFpYW5ncmVuLmNvbSZzbmk9djFrcjAyLmZ1cWlhbmdyZW4uY29tIyVGMCU5RiU5QSU4NyUyMCU1QiUyMCVFOCU4MSU5NCVFOSU4MCU5QSUyMCU1RCUyMCVFOSU5RiVBOSVFNSU5QiVCRCUyMCVDMiVCNyUyMEUxJTIwJUMyJUI3JTIwMDIlMjAlQzIlQjclMjAlRTclQkElQkYlRTglQjclQUYyDQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pWEhWa09ETmtYSFZrWlRnM0lGc2dkakVnWFNCY2RUWTFZakJjZFRVeVlUQmNkVFUzTmpFZ1hIVXdNR0kzSURBeElGeDFNREJpTnlCY2RUZGxZbVpjZFRoa1pXWXhJaXdpWVdSa0lqb2lkakF4TG1kMWRHbHVaM1JwYm1jdVkyOXRJaXdpY0c5eWRDSTZJak13TURNMUlpd2lhV1FpT2lJMVpUQmxNV1JsTmkwME16Vm1MVFF4T0RrdFlqQXhZeTAxTjJOaU9XVTFZbUV6TW1FaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWQzTWlMQ0owZVhCbElqb2libTl1WlNJc0ltaHZjM1FpT2lKMk1ERXVaM1YwYVc1bmRHbHVaeTVqYjIwaUxDSndZWFJvSWpvaVhDOWhZMlZoYldWa2RpSXNJblJzY3lJNklpSjkNCnRyb2phbjovLzVlMGUxZGU2LTQzNWYtNDE4OS1iMDFjLTU3Y2I5ZTViYTMyYUB2MDEuZ3V0aW5ndGluZy5jb206MjAyMjI/YWxsb3dJbnNlY3VyZT0xJnBlZXI9djJzZzAxLmZ1cWlhbmdyZW4uY29tJnNuaT12MnNnMDEuZnVxaWFuZ3Jlbi5jb20jJUYwJTlGJTkyJThFJTIwJTVCJTIwVDElMjAlNUQlMjAlRTYlOTYlQjAlRTUlOEElQTAlRTUlOUQlQTElMjAlQzIlQjclMjAwMSUyMCVDMiVCNyUyMCVFNyVCQSVCRiVFOCVCNyVBRjENCnRyb2phbjovLzVlMGUxZGU2LTQzNWYtNDE4OS1iMDFjLTU3Y2I5ZTViYTMyYUB2MDEuZ3V0aW5ndGluZy5jb206MzAwNTA/YWxsb3dJbnNlY3VyZT0xJnBlZXI9djJzZzAyLmZ1cWlhbmdyZW4uY29tJnNuaT12MnNnMDIuZnVxaWFuZ3Jlbi5jb20jJUYwJTlGJTkyJThFJTIwJTVCJTIwdjElMjAlNUQlMjAlRTYlOTYlQjAlRTUlOEElQTAlRTUlOUQlQTElMjAlQzIlQjclMjAwMiUyMCVDMiVCNyUyMCVFNyVCQSVCRiVFOCVCNyVBRjENCnRyb2phbjovLzVlMGUxZGU2LTQzNWYtNDE4OS1iMDFjLTU3Y2I5ZTViYTMyYUB2MDIuZ3V0aW5ndGluZy5jb206MzAwNDk/YWxsb3dJbnNlY3VyZT0xJnBlZXI9djJzZzAyLmZ1cWlhbmdyZW4uY29tJnNuaT12MnNnMDIuZnVxaWFuZ3Jlbi5jb20jJUYwJTlGJTkyJThFJTIwJTVCJTIwdjElMjAlNUQlMjAlRTYlOTYlQjAlRTUlOEElQTAlRTUlOUQlQTElMjAlQzIlQjclMjAwMyUyMCVDMiVCNyUyMCVFNyVCQSVCRiVFOCVCNyVBRjINCnRyb2phbjovLzVlMGUxZGU2LTQzNWYtNDE4OS1iMDFjLTU3Y2I5ZTViYTMyYUB2MDIuZ3V0aW5ndGluZy5jb206MjAyMjM/YWxsb3dJbnNlY3VyZT0xJnBlZXI9djJzZzAxLmZ1cWlhbmdyZW4uY29tJnNuaT12MnNnMDEuZnVxaWFuZ3Jlbi5jb20jJUYwJTlGJTkyJThFJTIwJTVCJTIwVDElMjAlNUQlMjAlRTYlOTYlQjAlRTUlOEElQTAlRTUlOUQlQTElMjAlQzIlQjclMjAwMiUyMCVDMiVCNyUyMCVFNyVCQSVCRiVFOCVCNyVBRjINCnRyb2phbjovLzVlMGUxZGU2LTQzNWYtNDE4OS1iMDFjLTU3Y2I5ZTViYTMyYUB2MDEuZ3V0aW5ndGluZy5jb206MjAyMjQ/YWxsb3dJbnNlY3VyZT0xJnBlZXI9djJ1c2EwMS5mdXFpYW5ncmVuLmNvbSZzbmk9djJ1c2EwMS5mdXFpYW5ncmVuLmNvbSMlRjAlOUYlOTIlOEUlMjAlNUIlMjBUMSUyMCU1RCUyMCVFNyVCRSU4RSVFNSU5QiVCRCUyMCVDMiVCNyUyMDAxJTIwJUMyJUI3JTIwJUU3JUJBJUJGJUU4JUI3JUFGMQ0KdHJvamFuOi8vNWUwZTFkZTYtNDM1Zi00MTg5LWIwMWMtNTdjYjllNWJhMzJhQHYwMi5ndXRpbmd0aW5nLmNvbToyMDIyNT9hbGxvd0luc2VjdXJlPTEmcGVlcj12MnVzYTAxLmZ1cWlhbmdyZW4uY29tJnNuaT12MnVzYTAxLmZ1cWlhbmdyZW4uY29tIyVGMCU5RiU5MiU4RSUyMCU1QiUyMFQxJTIwJTVEJTIwJUU3JUJFJThFJUU1JTlCJUJEJTIwJUMyJUI3JTIwMDIlMjAlQzIlQjclMjAlRTclQkElQkYlRTglQjclQUYyDQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pWEhWa09ETmtYSFZrWlRnM0lGc2dkakVnWFNCY2RUZG1PR1ZjZFRVMlptUWdYSFV3TUdJM0lEQXlJRngxTURCaU55QmNkVGRsWW1aY2RUaGtaV1l4SWl3aVlXUmtJam9pZGpBeExtZDFkR2x1WjNScGJtY3VZMjl0SWl3aWNHOXlkQ0k2SWpNd01EUTRJaXdpYVdRaU9pSTFaVEJsTVdSbE5pMDBNelZtTFRReE9Ea3RZakF4WXkwMU4yTmlPV1UxWW1Fek1tRWlMQ0poYVdRaU9pSXdJaXdpYm1WMElqb2lkM01pTENKMGVYQmxJam9pYm05dVpTSXNJbWh2YzNRaU9pSnphREF5TG1aaGMzUmpiRzkxWkM1amJIVmlJaXdpY0dGMGFDSTZJbHd2WVdObFlXMWxaSFlpTENKMGJITWlPaUlpZlE9PQ0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVhIVmtPRE5rWEhWa1pUZzNJRnNnZGpFZ1hTQmNkVGRtT0dWY2RUVTJabVFnWEhVd01HSTNJREF6SUZ4MU1EQmlOeUJjZFRkbFltWmNkVGhrWldZeUlpd2lZV1JrSWpvaWRqQXlMbWQxZEdsdVozUnBibWN1WTI5dElpd2ljRzl5ZENJNklqTXdNREF3SWl3aWFXUWlPaUkxWlRCbE1XUmxOaTAwTXpWbUxUUXhPRGt0WWpBeFl5MDFOMk5pT1dVMVltRXpNbUVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZDNNaUxDSjBlWEJsSWpvaWJtOXVaU0lzSW1odmMzUWlPaUpuZWk1bVlYTjBZMnh2ZFdRdVkyeDFZaUlzSW5CaGRHZ2lPaUpjTDJGalpXRnRaV1IySWl3aWRHeHpJam9pSW4wPQ0KdHJvamFuOi8vNWUwZTFkZTYtNDM1Zi00MTg5LWIwMWMtNTdjYjllNWJhMzJhQHYwMS5ndXRpbmd0aW5nLmNvbToyMDIyNj9hbGxvd0luc2VjdXJlPTAmcGVlcj12MnVrMDEuZnVxaWFuZ3Jlbi5jb20mc25pPXYydWswMS5mdXFpYW5ncmVuLmNvbSMlRjAlOUYlOTIlOEUlMjAlNUIlMjBUMSUyMCU1RCUyMCVFOCU4QiVCMSVFNSU5QiVCRCUyMCVDMiVCNyUyMDAxJTIwJUMyJUI3JTIwJUU3JUJBJUJGJUU4JUI3JUFGMQ0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVhIVmtPRE5rWEhWa1pUZzNJRnNnZGpFZ1hTQmNkVGd5WmpGY2RUVTJabVFnWEhVd01HSTNJREF4SUZ4MU1EQmlOeUJjZFRkbFltWmNkVGhrWldZeElpd2lZV1JrSWpvaWRqQXhMbWQxZEdsdVozUnBibWN1WTI5dElpd2ljRzl5ZENJNklqTXdNREUySWl3aWFXUWlPaUkxWlRCbE1XUmxOaTAwTXpWbUxUUXhPRGt0WWpBeFl5MDFOMk5pT1dVMVltRXpNbUVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZDNNaUxDSjBlWEJsSWpvaWJtOXVaU0lzSW1odmMzUWlPaUp6YURBeExtWmhjM1JqYkc5MVpDNWpiSFZpSWl3aWNHRjBhQ0k2SWx3dllXTmxZVzFsWkhZaUxDSjBiSE1pT2lJaWZRPT0NCnRyb2phbjovLzVlMGUxZGU2LTQzNWYtNDE4OS1iMDFjLTU3Y2I5ZTViYTMyYUB2MDIuZ3V0aW5ndGluZy5jb206MjAyMjc/YWxsb3dJbnNlY3VyZT0xJnBlZXI9djJ1azAxLmZ1cWlhbmdyZW4uY29tJnNuaT12MnVrMDEuZnVxaWFuZ3Jlbi5jb20jJUYwJTlGJTkyJThFJTIwJTVCJTIwVDElMjAlNUQlMjAlRTglOEIlQjElRTUlOUIlQkQlMjAlQzIlQjclMjAwMiUyMCVDMiVCNyUyMCVFNyVCQSVCRiVFOCVCNyVBRjINCnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lYSFZrT0ROa1hIVmtaVGczSUZzZ2RqRWdYU0JjZFRneVpqRmNkVFUyWm1RZ1hIVXdNR0kzSURBeUlGeDFNREJpTnlCY2RUZGxZbVpjZFRoa1pXWXlJaXdpWVdSa0lqb2lkakF5TG1kMWRHbHVaM1JwYm1jdVkyOXRJaXdpY0c5eWRDSTZJak13TURJMUlpd2lhV1FpT2lJMVpUQmxNV1JsTmkwME16Vm1MVFF4T0RrdFlqQXhZeTAxTjJOaU9XVTFZbUV6TW1FaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWQzTWlMQ0owZVhCbElqb2libTl1WlNJc0ltaHZjM1FpT2lKemFEQXhMbVpoYzNSamJHOTFaQzVqYkhWaUlpd2ljR0YwYUNJNklsd3ZZV05sWVcxbFpIWWlMQ0owYkhNaU9pSWlmUT09DQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pWEhWa09ETmtYSFZrWlRnM0lGc2dkakVnWFNCY2RUZ3laakZjZFRVMlptUmNkVFV6T1daY2RUYzFNV1lnWEhVd01HSTNJREF4SUZ4MU1EQmlOeUJjZFRkbFltWmNkVGhrWldZeElpd2lZV1JrSWpvaWRqQXhMbWQxZEdsdVozUnBibWN1WTI5dElpd2ljRzl5ZENJNklqTXdNRFF3SWl3aWFXUWlPaUkxWlRCbE1XUmxOaTAwTXpWbUxUUXhPRGt0WWpBeFl5MDFOMk5pT1dVMVltRXpNbUVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZDNNaUxDSjBlWEJsSWpvaWJtOXVaU0lzSW1odmMzUWlPaUp6YURBeExtWmhjM1JqYkc5MVpDNWpiSFZpSWl3aWNHRjBhQ0k2SWx3dllXTmxZVzFsWkhZaUxDSjBiSE1pT2lJaWZRPT0NCnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lYSFZrT0ROa1hIVmtaVGczSUZzZ2RqRWdYU0JjZFRneVpqRmNkVFUyWm1SY2RUVXpPV1pjZFRjMU1XWWdYSFV3TUdJM0lEQXlJRngxTURCaU55QmNkVGRsWW1aY2RUaGtaV1l5SWl3aVlXUmtJam9pZGpBeUxtZDFkR2x1WjNScGJtY3VZMjl0SWl3aWNHOXlkQ0k2SWpNd01EUXhJaXdpYVdRaU9pSTFaVEJsTVdSbE5pMDBNelZtTFRReE9Ea3RZakF4WXkwMU4yTmlPV1UxWW1Fek1tRWlMQ0poYVdRaU9pSXdJaXdpYm1WMElqb2lkM01pTENKMGVYQmxJam9pYm05dVpTSXNJbWh2YzNRaU9pSnphREF4TG1aaGMzUmpiRzkxWkM1amJIVmlJaXdpY0dGMGFDSTZJbHd2WVdObFlXMWxaSFlpTENKMGJITWlPaUlpZlE9PQ0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVhIVmtPRE5rWEhWa1pUZzNJRnNnZGpFZ1hTQmNkVFV6TnpCY2RUVmxZVFlnWEhVd01HSTNJREF4SUZ4MU1EQmlOeUJjZFRkbFltWmNkVGhrWldZeElpd2lZV1JrSWpvaWRqQXhMbWQxZEdsdVozUnBibWN1WTI5dElpd2ljRzl5ZENJNklqTXdNREkzSWl3aWFXUWlPaUkxWlRCbE1XUmxOaTAwTXpWbUxUUXhPRGt0WWpBeFl5MDFOMk5pT1dVMVltRXpNbUVpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZDNNaUxDSjBlWEJsSWpvaWJtOXVaU0lzSW1odmMzUWlPaUp6YURBeExtWmhjM1JqYkc5MVpDNWpiSFZpSWl3aWNHRjBhQ0k2SWx3dllXTmxZVzFsWkhZaUxDSjBiSE1pT2lJaWZRPT0NCnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lYSFZrT0ROa1hIVmtaVGczSUZzZ2RqRWdYU0JjZFRVek56QmNkVFZsWVRZZ1hIVXdNR0kzSURBeUlGeDFNREJpTnlCY2RUZGxZbVpjZFRoa1pXWXlJaXdpWVdSa0lqb2lkakF5TG1kMWRHbHVaM1JwYm1jdVkyOXRJaXdpY0c5eWRDSTZJak13TURJNElpd2lhV1FpT2lJMVpUQmxNV1JsTmkwME16Vm1MVFF4T0RrdFlqQXhZeTAxTjJOaU9XVTFZbUV6TW1FaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWQzTWlMQ0owZVhCbElqb2libTl1WlNJc0ltaHZjM1FpT2lKemFEQXhMbVpoYzNSamJHOTFaQzVqYkhWaUlpd2ljR0YwYUNJNklsd3ZZV05sWVcxbFpIWWlMQ0owYkhNaU9pSWlmUT09DQp0cm9qYW46Ly81ZTBlMWRlNi00MzVmLTQxODktYjAxYy01N2NiOWU1YmEzMmFAdjAyLmd1dGluZ3RpbmcuY29tOjMwMDU5P2FsbG93SW5zZWN1cmU9MSZwZWVyPXYyc2dncHQwMS5mdXFpYW5ncmVuLmNvbSZzbmk9djJzZ2dwdDAxLmZ1cWlhbmdyZW4uY29tIyVGMCU5RiU5MiU4RSUyMENoYXRHUFQlRTglQTclQTMlRTklOTQlODElMjAlQzIlQjclMjAwMSUyMCVDMiVCNyUyMCVFNyVCQSVCRiVFOCVCNyVBRjENCnRyb2phbjovLzVlMGUxZGU2LTQzNWYtNDE4OS1iMDFjLTU3Y2I5ZTViYTMyYUB2MDIuZ3V0aW5ndGluZy5jb206MzAwNTE/YWxsb3dJbnNlY3VyZT0xJnBlZXI9djJ2bjAxLmZ1cWlhbmdyZW4uY29tJnNuaT12MnZuMDEuZnVxaWFuZ3Jlbi5jb20jJUYwJTlGJTlBJTg3JTIwJTVCJTIwdjElMjAlNUQlMjAlRTglQjYlOEElRTUlOEQlOTclMjAlQzIlQjclMjAwMSUyMCVDMiVCNyUyMCVFNyVCQSVCRiVFOCVCNyVBRjINCnRyb2phbjovLzVlMGUxZGU2LTQzNWYtNDE4OS1iMDFjLTU3Y2I5ZTViYTMyYUB2MDIuZ3V0aW5ndGluZy5jb206MzAwNTM/YWxsb3dJbnNlY3VyZT0xJnBlZXI9djJwaGwwMS5mdXFpYW5ncmVuLmNvbSZzbmk9djJwaGwwMS5mdXFpYW5ncmVuLmNvbSMlRjAlOUYlOUElODclMjAlNUIlMjB2MSUyMCU1RCUyMCVFOCU4RiVCMiVFNSVCRSU4QiVFNSVBRSVCRSUyMCVDMiVCNyUyMDAxJTIwJUMyJUI3JTIwJUU3JUJBJUJGJUU4JUI3JUFGMg0KdHJvamFuOi8vNWUwZTFkZTYtNDM1Zi00MTg5LWIwMWMtNTdjYjllNWJhMzJhQHYwMi5ndXRpbmd0aW5nLmNvbTozMDA1Mj9hbGxvd0luc2VjdXJlPTEmcGVlcj12MnRoMDEuZnVxaWFuZ3Jlbi5jb20mc25pPXYydGgwMS5mdXFpYW5ncmVuLmNvbSMlRjAlOUYlOUElODclMjAlNUIlMjB2MSUyMCU1RCUyMCVFNiVCMyVCMCVFNSU5QiVCRCUyMCVDMiVCNyUyMDAxJTIwJUMyJUI3JTIwJUU3JUJBJUJGJUU4JUI3JUFGMg0KdHJvamFuOi8vNWUwZTFkZTYtNDM1Zi00MTg5LWIwMWMtNTdjYjllNWJhMzJhQHp6anAwMS5ndXRpbmd0aW5nLmNvbToyMDIyMD9hbGxvd0luc2VjdXJlPTEmcGVlcj16empwMDEuZ3V0aW5ndGluZy5jb20mc25pPXp6anAwMS5ndXRpbmd0aW5nLmNvbSMlNUIlMjAlRTclOUIlQjQlRTglQkYlOUUlRTQlQjglOEQlRTQlQkYlOUQlRTglQUYlODElRTUlOUIlQkQlRTUlODYlODUlMjAlNUQlMjAlRTYlOTclQTUlRTYlOUMlQUMlMjAlQzIlQjclMjBVMSUyMCU3QyUyMDAxDQp0cm9qYW46Ly81ZTBlMWRlNi00MzVmLTQxODktYjAxYy01N2NiOWU1YmEzMmFAenpqcDAxLmd1dGluZ3RpbmcuY29tOjIwMjIxP2FsbG93SW5zZWN1cmU9MSZwZWVyPXp6anAwMS5ndXRpbmd0aW5nLmNvbSZzbmk9enpqcDAxLmd1dGluZ3RpbmcuY29tIyU1QiUyMCVFNyU5QiVCNCVFOCVCRiU5RSVFNCVCOCU4RCVFNCVCRiU5RCVFOCVBRiU4MSVFNSU5QiVCRCVFNSU4NiU4NSUyMCU1RCUyMCVFNiU5NyVBNSVFNiU5QyVBQyUyMCVDMiVCNyUyMFUxJTIwJTdDJTIwMDINCnRyb2phbjovLzVlMGUxZGU2LTQzNWYtNDE4OS1iMDFjLTU3Y2I5ZTViYTMyYUB6enVzMDEuZ3V0aW5ndGluZy5jb206MjAyMjA/YWxsb3dJbnNlY3VyZT0xJnBlZXI9enp1czAxLmd1dGluZ3RpbmcuY29tJnNuaT16enVzMDEuZ3V0aW5ndGluZy5jb20jJTVCJTIwJUU3JTlCJUI0JUU4JUJGJTlFJUU0JUI4JThEJUU0JUJGJTlEJUU4JUFGJTgxJUU1JTlCJUJEJUU1JTg2JTg1JTIwJTVEJTIwJUU3JUJFJThFJUU1JTlCJUJEJTIwJUMyJUI3JTIwVTElMjAlN0MlMjAwMQ0KdHJvamFuOi8vNWUwZTFkZTYtNDM1Zi00MTg5LWIwMWMtNTdjYjllNWJhMzJhQHp6dXMwMS5ndXRpbmd0aW5nLmNvbToyMDIyMD9hbGxvd0luc2VjdXJlPTEmcGVlcj16enVzMDEuZ3V0aW5ndGluZy5jb20mc25pPXp6dXMwMS5ndXRpbmd0aW5nLmNvbSMlNUIlMjAlRTclOUIlQjQlRTglQkYlOUUlRTQlQjglOEQlRTQlQkYlOUQlRTglQUYlODElRTUlOUIlQkQlRTUlODYlODUlMjAlNUQlMjAlRTclQkUlOEUlRTUlOUIlQkQlMjAlQzIlQjclMjBVMSUyMCU3QyUyMDAyDQo= -------------------------------------------------------------------------------- /sub/free/www.douluos.xyz: -------------------------------------------------------------------------------- 1 | dm1lc3M6Ly9leUp5WlcxaGNtc2lPaUxsaWFua3Zabm10WUhwaDQvdnZKb3hNREkwVFVJaUxDSjBlWEJsSWpwdWRXeHNMQ0poWkdRaU9pSjNkM2N1Wkc5MWJIVnZlWFZ1TG14dmJDSXNJbkJ2Y25RaU9qRXdNRGcyTENKcFpDSTZJalJoTWpKak1qQmpMVEUwTURBdE0ySmtOeTA1TW1JMkxUVTJaVFl6T0dNMU16azNNaUlzSW01bGRDSTZJblJqY0NJc0ltRnBaQ0k2TUN3aWNITWlPaUxsaWFua3Zabm10WUhwaDQvdnZKb3hNREkwVFVJaWZRPT0Kdm1lc3M6Ly9leUp5WlcxaGNtc2lPaUxvdjRmbW5KL21sN2JwbDdUdnZKb3lNREl5TFRFeUxURXdJaXdpZEhsd1pTSTZiblZzYkN3aVlXUmtJam9pZDNkM0xtUnZkV3gxYjNsMWJpNXNiMndpTENKd2IzSjBJam94TURBNE5pd2lhV1FpT2lJMFlUSXlZekl3WXkweE5EQXdMVE5pWkRjdE9USmlOaTAxTm1VMk16aGpOVE01TnpJaUxDSnVaWFFpT2lKMFkzQWlMQ0poYVdRaU9qQXNJbkJ6SWpvaTZMK0g1cHlmNXBlMjZaZTA3N3lhTWpBeU1pMHhNaTB4TUNKOQp2bWVzczovL2V5Sm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJblpsY21sbWVWOWpaWEowSWpwMGNuVmxMQ0poWkdRaU9pSXhOUzVrYjNWc2RXOHVZbVZoZFhSNUlpd2ljRzl5ZENJNk5UTXdNVFVzSW1GcFpDSTZNaXdpYm1WMElqb2lkR053SWl3aWFHVmhaR1Z5Vkhsd1pTSTZJbTV2Ym1VaUxDSjJJam9pTWlJc0luUjVjR1VpT2lKdWIyNWxJaXdpY0hNaU9pSjJhWEF4TGVhV3NPV0tvT1dkb1RGOGZPbVprT21BbnpFd01FMGlMQ0p5WlcxaGNtc2lPaUoyYVhBeExlYVdzT1dLb09XZG9URjhmT21aa09tQW56RXdNRTBpTENKcFpDSTZJalJoTWpKak1qQmpMVEUwTURBdE0ySmtOeTA1TW1JMkxUVTJaVFl6T0dNMU16azNNaUlzSW1Oc1lYTnpJam94ZlE9PQp2bWVzczovL2V5Sm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJblpsY21sbWVWOWpaWEowSWpwMGNuVmxMQ0poWkdRaU9pSXhOaTVrYjNWc2RXOHVZbVZoZFhSNUlpd2ljRzl5ZENJNk5UTXdNVFlzSW1GcFpDSTZNaXdpYm1WMElqb2lkR053SWl3aWFHVmhaR1Z5Vkhsd1pTSTZJbTV2Ym1VaUxDSjJJam9pTWlJc0luUjVjR1VpT2lKdWIyNWxJaXdpY0hNaU9pSjJhWEF4TGVhV3NPV0tvT1dkb1RKOGZPbVprT21BbnpFd01FMGlMQ0p5WlcxaGNtc2lPaUoyYVhBeExlYVdzT1dLb09XZG9USjhmT21aa09tQW56RXdNRTBpTENKcFpDSTZJalJoTWpKak1qQmpMVEUwTURBdE0ySmtOeTA1TW1JMkxUVTJaVFl6T0dNMU16azNNaUlzSW1Oc1lYTnpJam94ZlE9PQp2bWVzczovL2V5Sm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJblpsY21sbWVWOWpaWEowSWpwMGNuVmxMQ0poWkdRaU9pSXhPQzVrYjNWc2RXOHVZbVZoZFhSNUlpd2ljRzl5ZENJNk5UUXdNVGdzSW1GcFpDSTZNaXdpYm1WMElqb2lkR053SWl3aWFHVmhaR1Z5Vkhsd1pTSTZJbTV2Ym1VaUxDSjJJam9pTWlJc0luUjVjR1VpT2lKdWIyNWxJaXdpY0hNaU9pSjJhWEF4TGVhV3NPV0tvT1dkb1RSOGZPbVprT21BbnpFd01FMGlMQ0p5WlcxaGNtc2lPaUoyYVhBeExlYVdzT1dLb09XZG9UUjhmT21aa09tQW56RXdNRTBpTENKcFpDSTZJalJoTWpKak1qQmpMVEUwTURBdE0ySmtOeTA1TW1JMkxUVTJaVFl6T0dNMU16azNNaUlzSW1Oc1lYTnpJam94ZlE9PQp2bWVzczovL2V5Sm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJblpsY21sbWVWOWpaWEowSWpwMGNuVmxMQ0poWkdRaU9pSXlPUzVrYjNWc2RXOHVZbVZoZFhSNUlpd2ljRzl5ZENJNk5UWXhNamtzSW1GcFpDSTZNaXdpYm1WMElqb2lkR053SWl3aWFHVmhaR1Z5Vkhsd1pTSTZJbTV2Ym1VaUxDSjJJam9pTWlJc0luUjVjR1VpT2lKdWIyNWxJaXdpY0hNaU9pSjJhWEF4TGVhV3NPV0tvT1dkb1RWOGZERXdNRzBpTENKeVpXMWhjbXNpT2lKMmFYQXhMZWFXc09XS29PV2RvVFY4ZkRFd01HMGlMQ0pwWkNJNklqUmhNakpqTWpCakxURTBNREF0TTJKa055MDVNbUkyTFRVMlpUWXpPR00xTXprM01pSXNJbU5zWVhOeklqb3hmUT09CnZtZXNzOi8vZXlKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlJc0luWmxjbWxtZVY5alpYSjBJanAwY25WbExDSmhaR1FpT2lJeE1pNWtiM1ZzZFc4dVltVmhkWFI1SWl3aWNHOXlkQ0k2TlRNd01USXNJbUZwWkNJNk1pd2libVYwSWpvaWRHTndJaXdpYUdWaFpHVnlWSGx3WlNJNkltNXZibVVpTENKMklqb2lNaUlzSW5SNWNHVWlPaUp1YjI1bElpd2ljSE1pT2lKMmFYQXhMZWFXc09XS29PV2RvVFY4Zk9tWmtPbUFuekV3TUUwaUxDSnlaVzFoY21zaU9pSjJhWEF4TGVhV3NPV0tvT1dkb1RWOGZPbVprT21BbnpFd01FMGlMQ0pwWkNJNklqUmhNakpqTWpCakxURTBNREF0TTJKa055MDVNbUkyTFRVMlpUWXpPR00xTXprM01pSXNJbU5zWVhOeklqb3hmUT09CnZtZXNzOi8vZXlKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlJc0luWmxjbWxtZVY5alpYSjBJanAwY25WbExDSmhaR1FpT2lJeE1TNWtiM1ZzZFc4dVltVmhkWFI1SWl3aWNHOXlkQ0k2TlRFd01URXNJbUZwWkNJNk1pd2libVYwSWpvaWRHTndJaXdpYUdWaFpHVnlWSGx3WlNJNkltNXZibVVpTENKMklqb2lNaUlzSW5SNWNHVWlPaUp1YjI1bElpd2ljSE1pT2lKMmFYQXhMZWFXc09XS29PV2RvVFo4Zk9tWmtPbUFuekV3TUUwaUxDSnlaVzFoY21zaU9pSjJhWEF4TGVhV3NPV0tvT1dkb1RaOGZPbVprT21BbnpFd01FMGlMQ0pwWkNJNklqUmhNakpqTWpCakxURTBNREF0TTJKa055MDVNbUkyTFRVMlpUWXpPR00xTXprM01pSXNJbU5zWVhOeklqb3hmUT09CnZtZXNzOi8vZXlKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlJc0luWmxjbWxtZVY5alpYSjBJanAwY25WbExDSmhaR1FpT2lJNUxtUnZkV3gxYnk1aVpXRjFkSGtpTENKd2IzSjBJam96TXpBd09Td2lZV2xrSWpveUxDSnVaWFFpT2lKMFkzQWlMQ0pvWldGa1pYSlVlWEJsSWpvaWJtOXVaU0lzSW5ZaU9pSXlJaXdpZEhsd1pTSTZJbTV2Ym1VaUxDSndjeUk2SW5acGNERXQ1cGVsNXB5c01USjhmT21aa09tQW56RXdNRTBpTENKeVpXMWhjbXNpT2lKMmFYQXhMZWFYcGVhY3JERXlmSHpwbVpEcGdKOHhNREJOSWl3aWFXUWlPaUkwWVRJeVl6SXdZeTB4TkRBd0xUTmlaRGN0T1RKaU5pMDFObVUyTXpoak5UTTVOeklpTENKamJHRnpjeUk2TVgwPQp2bWVzczovL2V5Sm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJblpsY21sbWVWOWpaWEowSWpwMGNuVmxMQ0poWkdRaU9pSXpMbVJ2ZFd4MWJ5NWlaV0YxZEhraUxDSndiM0owSWpvMU1UQXdNeXdpWVdsa0lqb3lMQ0p1WlhRaU9pSjBZM0FpTENKb1pXRmtaWEpVZVhCbElqb2libTl1WlNJc0luWWlPaUl5SWl3aWRIbHdaU0k2SW01dmJtVWlMQ0p3Y3lJNkluWnBjREV0NXBlbDVweXNNWHg4NlptUTZZQ2ZNVEF3VFNJc0luSmxiV0Z5YXlJNkluWnBjREV0NXBlbDVweXNNWHg4NlptUTZZQ2ZNVEF3VFNJc0ltbGtJam9pTkdFeU1tTXlNR010TVRRd01DMHpZbVEzTFRreVlqWXROVFpsTmpNNFl6VXpPVGN5SWl3aVkyeGhjM01pT2pGOQp2bWVzczovL2V5Sm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJblpsY21sbWVWOWpaWEowSWpwMGNuVmxMQ0poWkdRaU9pSTBMbVJ2ZFd4MWJ5NWlaV0YxZEhraUxDSndiM0owSWpvMU16QXdOQ3dpWVdsa0lqb3lMQ0p1WlhRaU9pSjBZM0FpTENKb1pXRmtaWEpVZVhCbElqb2libTl1WlNJc0luWWlPaUl5SWl3aWRIbHdaU0k2SW01dmJtVWlMQ0p3Y3lJNkluWnBjREV0NXBlbDVweXNNbng4NlptUTZZQ2ZNVEF3VFNJc0luSmxiV0Z5YXlJNkluWnBjREV0NXBlbDVweXNNbng4NlptUTZZQ2ZNVEF3VFNJc0ltbGtJam9pTkdFeU1tTXlNR010TVRRd01DMHpZbVEzTFRreVlqWXROVFpsTmpNNFl6VXpPVGN5SWl3aVkyeGhjM01pT2pGOQp2bWVzczovL2V5Sm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJblpsY21sbWVWOWpaWEowSWpwMGNuVmxMQ0poWkdRaU9pSTJMbVJ2ZFd4MWJ5NWlaV0YxZEhraUxDSndiM0owSWpvMU5EQXdOaXdpWVdsa0lqb3lMQ0p1WlhRaU9pSjBZM0FpTENKb1pXRmtaWEpVZVhCbElqb2libTl1WlNJc0luWWlPaUl5SWl3aWRIbHdaU0k2SW01dmJtVWlMQ0p3Y3lJNkluWnBjREV0NXBlbDVweXNOSHg4NlptUTZZQ2ZNVEF3VFNJc0luSmxiV0Z5YXlJNkluWnBjREV0NXBlbDVweXNOSHg4NlptUTZZQ2ZNVEF3VFNJc0ltbGtJam9pTkdFeU1tTXlNR010TVRRd01DMHpZbVEzTFRreVlqWXROVFpsTmpNNFl6VXpPVGN5SWl3aVkyeGhjM01pT2pGOQp2bWVzczovL2V5Sm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJblpsY21sbWVWOWpaWEowSWpwMGNuVmxMQ0poWkdRaU9pSTNMbVJ2ZFd4MWJ5NWlaV0YxZEhraUxDSndiM0owSWpvMU16QXdOeXdpWVdsa0lqb3lMQ0p1WlhRaU9pSjBZM0FpTENKb1pXRmtaWEpVZVhCbElqb2libTl1WlNJc0luWWlPaUl5SWl3aWRIbHdaU0k2SW01dmJtVWlMQ0p3Y3lJNkluWnBjREV0NXBlbDVweXNOWHg4NlptUTZZQ2ZNVEF3VFNJc0luSmxiV0Z5YXlJNkluWnBjREV0NXBlbDVweXNOWHg4NlptUTZZQ2ZNVEF3VFNJc0ltbGtJam9pTkdFeU1tTXlNR010TVRRd01DMHpZbVEzTFRreVlqWXROVFpsTmpNNFl6VXpPVGN5SWl3aVkyeGhjM01pT2pGOQp2bWVzczovL2V5Sm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJblpsY21sbWVWOWpaWEowSWpwMGNuVmxMQ0poWkdRaU9pSTRMbVJ2ZFd4MWJ5NWlaV0YxZEhraUxDSndiM0owSWpvME16QXdPQ3dpWVdsa0lqb3lMQ0p1WlhRaU9pSjBZM0FpTENKb1pXRmtaWEpVZVhCbElqb2libTl1WlNJc0luWWlPaUl5SWl3aWRIbHdaU0k2SW01dmJtVWlMQ0p3Y3lJNkluWnBjREV0NXBlbDVweXNObng4NlptUTZZQ2ZNVEF3VFNJc0luSmxiV0Z5YXlJNkluWnBjREV0NXBlbDVweXNObng4NlptUTZZQ2ZNVEF3VFNJc0ltbGtJam9pTkdFeU1tTXlNR010TVRRd01DMHpZbVEzTFRreVlqWXROVFpsTmpNNFl6VXpPVGN5SWl3aVkyeGhjM01pT2pGOQp2bWVzczovL2V5Sm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJblpsY21sbWVWOWpaWEowSWpwMGNuVmxMQ0poWkdRaU9pSXhPUzVrYjNWc2RXOHVZbVZoZFhSNUlpd2ljRzl5ZENJNk5UTXdNVGtzSW1GcFpDSTZNaXdpYm1WMElqb2lkR053SWl3aWFHVmhaR1Z5Vkhsd1pTSTZJbTV2Ym1VaUxDSjJJam9pTWlJc0luUjVjR1VpT2lKdWIyNWxJaXdpY0hNaU9pSjJhWEF4TGVlK2p1V2J2VEY4Zk9tWmtPbUFuekV3TUUwaUxDSnlaVzFoY21zaU9pSjJhWEF4TGVlK2p1V2J2VEY4Zk9tWmtPbUFuekV3TUUwaUxDSnBaQ0k2SWpSaE1qSmpNakJqTFRFME1EQXRNMkprTnkwNU1tSTJMVFUyWlRZek9HTTFNemszTWlJc0ltTnNZWE56SWpveGZRPT0Kdm1lc3M6Ly9leUpvYjNOMElqb2lJaXdpY0dGMGFDSTZJaUlzSW5Sc2N5STZJaUlzSW5abGNtbG1lVjlqWlhKMElqcDBjblZsTENKaFpHUWlPaUl5TWk1a2IzVnNkVzh1WW1WaGRYUjVJaXdpY0c5eWRDSTZNek13TWpJc0ltRnBaQ0k2TWl3aWJtVjBJam9pZEdOd0lpd2lhR1ZoWkdWeVZIbHdaU0k2SW01dmJtVWlMQ0oySWpvaU1pSXNJblI1Y0dVaU9pSnViMjVsSWl3aWNITWlPaUoyYVhBeExlbWZxZVdidlRGOGZPbVprT21BbnpFd01FMGlMQ0p5WlcxaGNtc2lPaUoyYVhBeExlbWZxZVdidlRGOGZPbVprT21BbnpFd01FMGlMQ0pwWkNJNklqUmhNakpqTWpCakxURTBNREF0TTJKa055MDVNbUkyTFRVMlpUWXpPR00xTXprM01pSXNJbU5zWVhOeklqb3hmUT09CnZtZXNzOi8vZXlKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlJc0luWmxjbWxtZVY5alpYSjBJanAwY25WbExDSmhaR1FpT2lJeE1DNWtiM1ZzZFc4dVltVmhkWFI1SWl3aWNHOXlkQ0k2TlRNd01UQXNJbUZwWkNJNk1pd2libVYwSWpvaWRHTndJaXdpYUdWaFpHVnlWSGx3WlNJNkltNXZibVVpTENKMklqb2lNaUlzSW5SNWNHVWlPaUp1YjI1bElpd2ljSE1pT2lKMmFYQXhMZW1tbWVhNHJ6RjhmT21aa09tQW56RXdNRTBpTENKeVpXMWhjbXNpT2lKMmFYQXhMZW1tbWVhNHJ6RjhmT21aa09tQW56RXdNRTBpTENKcFpDSTZJalJoTWpKak1qQmpMVEUwTURBdE0ySmtOeTA1TW1JMkxUVTJaVFl6T0dNMU16azNNaUlzSW1Oc1lYTnpJam94ZlE9PQp2bWVzczovL2V5Sm9iM04wSWpvaUlpd2ljR0YwYUNJNklpSXNJblJzY3lJNklpSXNJblpsY21sbWVWOWpaWEowSWpwMGNuVmxMQ0poWkdRaU9pSXhNeTVrYjNWc2RXOHVZbVZoZFhSNUlpd2ljRzl5ZENJNk5UTXdNVE1zSW1GcFpDSTZNaXdpYm1WMElqb2lkR053SWl3aWFHVmhaR1Z5Vkhsd1pTSTZJbTV2Ym1VaUxDSjJJam9pTWlJc0luUjVjR1VpT2lKdWIyNWxJaXdpY0hNaU9pSjJhWEF4TGVtbW1lYTRyelI4Zk9tWmtPbUFuekV3TUUwaUxDSnlaVzFoY21zaU9pSjJhWEF4TGVtbW1lYTRyelI4Zk9tWmtPbUFuekV3TUUwaUxDSnBaQ0k2SWpSaE1qSmpNakJqTFRFME1EQXRNMkprTnkwNU1tSTJMVFUyWlRZek9HTTFNemszTWlJc0ltTnNZWE56SWpveGZRPT0Kdm1lc3M6Ly9leUpvYjNOMElqb2lJaXdpY0dGMGFDSTZJaUlzSW5Sc2N5STZJaUlzSW5abGNtbG1lVjlqWlhKMElqcDBjblZsTENKaFpHUWlPaUl4TkM1a2IzVnNkVzh1WW1WaGRYUjVJaXdpY0c5eWRDSTZOVEV3TVRRc0ltRnBaQ0k2TWl3aWJtVjBJam9pZEdOd0lpd2lhR1ZoWkdWeVZIbHdaU0k2SW01dmJtVWlMQ0oySWpvaU1pSXNJblI1Y0dVaU9pSnViMjVsSWl3aWNITWlPaUoyYVhBeExlbW1tZWE0cnpWOGZPbVprT21BbnpFd01FMGlMQ0p5WlcxaGNtc2lPaUoyYVhBeExlbW1tZWE0cnpWOGZPbVprT21BbnpFd01FMGlMQ0pwWkNJNklqUmhNakpqTWpCakxURTBNREF0TTJKa055MDVNbUkyTFRVMlpUWXpPR00xTXprM01pSXNJbU5zWVhOeklqb3hmUT09CnZtZXNzOi8vZXlKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlJc0luWmxjbWxtZVY5alpYSjBJanAwY25WbExDSmhaR1FpT2lJeU1DNWtiM1ZzZFc4dVltVmhkWFI1SWl3aWNHOXlkQ0k2TlRNd01qQXNJbUZwWkNJNk1pd2libVYwSWpvaWRHTndJaXdpYUdWaFpHVnlWSGx3WlNJNkltNXZibVVpTENKMklqb2lNaUlzSW5SNWNHVWlPaUp1YjI1bElpd2ljSE1pT2lKMmFYQXhMZW1tbWVhNHJ6WjhmT21aa09tQW56RXdNRTBpTENKeVpXMWhjbXNpT2lKMmFYQXhMZW1tbWVhNHJ6WjhmT21aa09tQW56RXdNRTBpTENKcFpDSTZJalJoTWpKak1qQmpMVEUwTURBdE0ySmtOeTA1TW1JMkxUVTJaVFl6T0dNMU16azNNaUlzSW1Oc1lYTnpJam94ZlE9PQp2bWVzczovL2V5Sm9iM04wSWpvaUlpd2ljR0YwYUNJNklpOGlMQ0owYkhNaU9pSWlMQ0oyWlhKcFpubGZZMlZ5ZENJNmRISjFaU3dpWVdSa0lqb2lNelF1Wkc5MWJIVnZlWFZ1TG5SdmNDSXNJbkJ2Y25RaU9qSTVNVE0wTENKaGFXUWlPaklzSW01bGRDSTZJbmR6SWl3aWFHVmhaR1Z5Vkhsd1pTSTZJbTV2Ym1VaUxDSjJJam9pTWlJc0luUjVjR1VpT2lKdWIyNWxJaXdpY0hNaU9pTG1uSURtbHJEbG41L2xrSTN2dkpvZ2QzZDNMbVJ2ZFd4MWIzbDFiaTVzYjJ3Z0lPV0lzT2FjbitpdnQrZTdyZWkwdVNEcG1MTGxwTEhvZ1pUa3VKUG5sS2dpTENKeVpXMWhjbXNpT2lMbW5JRG1sckRsbjUvbGtJM3Z2Sm9nZDNkM0xtUnZkV3gxYjNsMWJpNXNiMndnSU9XSXNPYWNuK2l2dCtlN3JlaTB1U0RwbUxMbHBMSG9nWlRrdUpQbmxLZ2lMQ0pwWkNJNklqUmhNakpqTWpCakxURTBNREF0TTJKa055MDVNbUkyTFRVMlpUWXpPR00xTXprM01pSXNJbU5zWVhOeklqb3dmUT09Cg== -------------------------------------------------------------------------------- /sub/free/www.iacgbt.com: -------------------------------------------------------------------------------- 1 | dHJvamFuOi8vMDhmOThhOWItMDdhMi0zNzhmLTg4YWEtM2Q3NTkxNjYyNmFiQGF6eGcuaWFjZ2J0LmNvbToyNjAxMD9zbmk9YTEuaWFjZ2J0LmNvbSPlpoLml6Dms5Xkvb/nlKjor7fmm7TmlrDorqLpmIUKdHJvamFuOi8vMDhmOThhOWItMDdhMi0zNzhmLTg4YWEtM2Q3NTkxNjYyNmFiQGF6eGcuaWFjZ2J0LmNvbToyNjAxMD9zbmk9YTEuaWFjZ2J0LmNvbSPlrpjmlrnnvZHnq5nvvJppYWNnYnQuY29tCnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2k4SitIcmZDZmg3QWdJT21tbWVhNHJ5QjhJREV3TXlCOElPYWRyZWE0cnlCOElERjRJaXdpWVdSa0lqb2ljbVZzWVhrdGRYTXVZbVp6ZEdWakxtTnZiU0lzSW5CdmNuUWlPaUl6TVRBd01pSXNJbWxrSWpvaU1EaG1PVGhoT1dJdE1EZGhNaTB6TnpobUxUZzRZV0V0TTJRM05Ua3hOall5Tm1GaUlpd2lZV2xrSWpvaU1DSXNJbTVsZENJNkluUmpjQ0lzSW5SNWNHVWlPaUp1YjI1bElpd2lhRzl6ZENJNklpSXNJbkJoZEdnaU9pSWlMQ0owYkhNaU9pSWlMQ0p6Ym1raU9pSWlmUT09CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2k4SitIcmZDZmg3QWc2YWFaNXJpdklId2dNVEExSUh3ZzVyVzM1cml2SUh3Z01YaGNkQ0lzSW1Ga1pDSTZJbkpsYkdGNUxXaHJNaTVpWm5OMFpXTXVZMjl0SWl3aWNHOXlkQ0k2SWpRME1qYzFJaXdpYVdRaU9pSXdPR1k1T0dFNVlpMHdOMkV5TFRNM09HWXRPRGhoWVMwelpEYzFPVEUyTmpJMllXSWlMQ0poYVdRaU9pSXdJaXdpYm1WMElqb2lkR053SWl3aWRIbHdaU0k2SW01dmJtVWlMQ0pvYjNOMElqb2lJaXdpY0dGMGFDSTZJaUlzSW5Sc2N5STZJaUlzSW5OdWFTSTZJaUo5CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2k4SitIdXZDZmg3SWc1NzZPNVp1OUlId2dNVEF6SUh3ZzU3Nk81WXk2NktlajZaU0JJSHdnTVhnaUxDSmhaR1FpT2lKeVpXeGhlUzExY3k1aVpuTjBaV011WTI5dElpd2ljRzl5ZENJNklqSTFNVEU1SWl3aWFXUWlPaUl3T0dZNU9HRTVZaTB3TjJFeUxUTTNPR1l0T0RoaFlTMHpaRGMxT1RFMk5qSTJZV0lpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlJc0luTnVhU0k2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pOEorSHV2Q2ZoN0lnNTc2TzVadTlJSHdnTVRBeElId2c1cldCNWFxUzVMMlQ1THlZNVl5V0lId2dNWGdpTENKaFpHUWlPaUp5Wld4aGVTMTFjekl1WW1aemRHVmpMbU52YlNJc0luQnZjblFpT2lJMU1UazFPU0lzSW1sa0lqb2lNRGhtT1RoaE9XSXRNRGRoTWkwek56aG1MVGc0WVdFdE0yUTNOVGt4TmpZeU5tRmlJaXdpWVdsa0lqb2lNQ0lzSW01bGRDSTZJblJqY0NJc0luUjVjR1VpT2lKdWIyNWxJaXdpYUc5emRDSTZJaUlzSW5CaGRHZ2lPaUlpTENKMGJITWlPaUlpTENKemJta2lPaUlpZlE9PQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pOEorSHIvQ2ZoN1VnNXBlbDVweXNJSHdnTVRBeUlId2c1cldCNWFxUzVMMlQ1THlZNVl5V0lId2dNWGdpTENKaFpHUWlPaUp5Wld4aGVTMXFjQzVpWm5OMFpXTXVZMjl0SWl3aWNHOXlkQ0k2SWpJM01UVXlJaXdpYVdRaU9pSXdPR1k1T0dFNVlpMHdOMkV5TFRNM09HWXRPRGhoWVMwelpEYzFPVEUyTmpJMllXSWlMQ0poYVdRaU9pSXdJaXdpYm1WMElqb2lkR053SWl3aWRIbHdaU0k2SW01dmJtVWlMQ0pvYjNOMElqb2lJaXdpY0dGMGFDSTZJaUlzSW5Sc2N5STZJaUlzSW5OdWFTSTZJaUo5CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2k4SitIcVBDZmg3TWc1cGF3NVlxZzVaMmhJSHdnTVRBeElId2c1cDJ0NWJlZTVZV2w1WStqSUh3Z01YZ2lMQ0poWkdRaU9pSnlaV3hoZVMxelp6RXVZbVp6ZEdWakxtTnZiU0lzSW5CdmNuUWlPaUl4TVRJeE1TSXNJbWxrSWpvaU1EaG1PVGhoT1dJdE1EZGhNaTB6TnpobUxUZzRZV0V0TTJRM05Ua3hOall5Tm1GaUlpd2lZV2xrSWpvaU1DSXNJbTVsZENJNkluUmpjQ0lzSW5SNWNHVWlPaUp1YjI1bElpd2lhRzl6ZENJNklpSXNJbkJoZEdnaU9pSWlMQ0owYkhNaU9pSWlMQ0p6Ym1raU9pSWlmUT09CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2k4SitIcVBDZmg3TWc2WitwNVp1OUlDQjhJREV3TVNCOElPYXhuK2lMajBKSFVDQjhJREY0WEhRaUxDSmhaR1FpT2lKeVpXeGhlUzF6Wnk1aVpuTjBaV011WTI5dElpd2ljRzl5ZENJNklqVXlOemt4SWl3aWFXUWlPaUl3T0dZNU9HRTVZaTB3TjJFeUxUTTNPR1l0T0RoaFlTMHpaRGMxT1RFMk5qSTJZV0lpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWlJc0luUnNjeUk2SWlJc0luTnVhU0k2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pOEorSHJmQ2ZoN0FnNmFhWjVyaXZJSHdnTVRBMklId2c1cmV4NXJpdlNWQk1ReUI4SURGNFhIUWlMQ0poWkdRaU9pSnlaV3hoZVMxb2F6TXVZbVp6ZEdWakxtTnZiU0lzSW5CdmNuUWlPaUl6TWpFeU15SXNJbWxrSWpvaU1EaG1PVGhoT1dJdE1EZGhNaTB6TnpobUxUZzRZV0V0TTJRM05Ua3hOall5Tm1GaUlpd2lZV2xrSWpvaU1DSXNJbTVsZENJNkluUmpjQ0lzSW5SNWNHVWlPaUp1YjI1bElpd2lhRzl6ZENJNklpSXNJbkJoZEdnaU9pSWlMQ0owYkhNaU9pSWlMQ0p6Ym1raU9pSWlmUT09CnZsZXNzOi8vMDhmOThhOWItMDdhMi0zNzhmLTg4YWEtM2Q3NTkxNjYyNmFiQHd3dy5pYWNnYnQuY29tOjEwMDg2P2VuY3J5cHRpb249bm9uZSZ0eXBlPXRjcCZzZWN1cml0eT0mcGF0aD0lMkYmaGVhZGVyVHlwZT1ub25lIyVFNSU4OSVBOSVFNCVCRCU5OSVFNiVCNSU4MSVFOSU4NyU4RiVFRiVCQyU5QTUwR0IKdmxlc3M6Ly8wOGY5OGE5Yi0wN2EyLTM3OGYtODhhYS0zZDc1OTE2NjI2YWJAd3d3LmlhY2didC5jb206MTAwODY/ZW5jcnlwdGlvbj1ub25lJnR5cGU9dGNwJnNlY3VyaXR5PSZwYXRoPSUyRiZoZWFkZXJUeXBlPW5vbmUjJUU4JUJGJTg3JUU2JTlDJTlGJUU2JTk3JUI2JUU5JTk3JUI0JUVGJUJDJTlBMjAyMy0wMS0yOQo= -------------------------------------------------------------------------------- /sub/free/www.jafiyun.cc: -------------------------------------------------------------------------------- 1 | dm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTVZbXA1TDJaNXJXQjZZZVA3N3lhTUNJc0ltRmtaQ0k2SW5kM2R5NXFZV1pwZVhWdU1qQXlNeTVtZVdraUxDSndiM0owSWpvaU1UQXdPRFlpTENKcFpDSTZJakZqTURjeFpUSTFMVFZqTnprdE0yUXpaaTFpTkdJNUxXUmlORGxrWXpGa05tWTBaaUlzSW1GcFpDSTZJakFpTENKdVpYUWlPaUowWTNBaUxDSjBlWEJsSWpvaWJtOXVaU0lzSW1odmMzUWlPaUlpTENKd1lYUm9Jam9pTHlJc0luUnNjeUk2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNkwrSDVweWY1cGUyNlplMDc3eWFNakF5TXkweE1DMHlOeUlzSW1Ga1pDSTZJbmQzZHk1cVlXWnBlWFZ1TWpBeU15NW1lV2tpTENKd2IzSjBJam9pTVRBd09EWWlMQ0pwWkNJNklqRmpNRGN4WlRJMUxUVmpOemt0TTJRelppMWlOR0k1TFdSaU5EbGtZekZrTm1ZMFppSXNJbUZwWkNJNklqQWlMQ0p1WlhRaU9pSjBZM0FpTENKMGVYQmxJam9pYm05dVpTSXNJbWh2YzNRaU9pSWlMQ0p3WVhSb0lqb2lMeUlzSW5Sc2N5STZJaUo5dHJvamFuOi8vMWMwNzFlMjUtNWM3OS0zZDNmLWI0YjktZGI0OWRjMWQ2ZjRmQGNsb3VkMTUuamFmaXl1bjIwMjMuY2xvdWQ6MjIwMTU/cGVlcj1jbG91ZDE1LmphZml5dW4yMDIzLmNsb3VkJnNuaT1jbG91ZDE1LmphZml5dW4yMDIzLmNsb3VkI1ZpcDElRTQlQjglQTgxNS0lRTklOUYlQTklRTUlOUIlQkQlRTQlQjglQThUcm9qYW4lRTQlQjglQThUaWt0b2sKdHJvamFuOi8vMWMwNzFlMjUtNWM3OS0zZDNmLWI0YjktZGI0OWRjMWQ2ZjRmQGNsb3VkMTYuamFmaXl1bjIwMjMuY2xvdWQ6MjIwMTY/cGVlcj1jbG91ZDE2LmphZml5dW4yMDIzLmNsb3VkJnNuaT1jbG91ZDE2LmphZml5dW4yMDIzLmNsb3VkI1ZpcDElRTQlQjglQTgxNi0lRTklOUYlQTklRTUlOUIlQkQlRTQlQjglQThUcm9qYW4lRTQlQjglQThUaWt0b2sKdHJvamFuOi8vMWMwNzFlMjUtNWM3OS0zZDNmLWI0YjktZGI0OWRjMWQ2ZjRmQGNsb3VkMTcuamFmaXl1bjIwMjMuY2xvdWQ6MjIwMTc/cGVlcj1jbG91ZDE3LmphZml5dW4yMDIzLmNsb3VkJnNuaT1jbG91ZDE3LmphZml5dW4yMDIzLmNsb3VkI1ZpcDElRTQlQjglQTgxNy0lRTUlOEYlQjAlRTYlQjklQkUlRTQlQjglQTglRTUlOEUlOUYlRTclOTQlOUYlRTQlQjglQThDaGF0R1BUCnRyb2phbjovLzFjMDcxZTI1LTVjNzktM2QzZi1iNGI5LWRiNDlkYzFkNmY0ZkBjbG91ZDE4LmphZml5dW4yMDIzLmNsb3VkOjIyMDE4P3BlZXI9Y2xvdWQxOC5qYWZpeXVuMjAyMy5jbG91ZCZzbmk9Y2xvdWQxOC5qYWZpeXVuMjAyMy5jbG91ZCNWaXAxJUU0JUI4JUE4MTgtJUU5JTlGJUE5JUU1JTlCJUJEJUU0JUI4JUE4VGlrdG9rCnRyb2phbjovLzFjMDcxZTI1LTVjNzktM2QzZi1iNGI5LWRiNDlkYzFkNmY0ZkBjbG91ZDE5LmphZml5dW4yMDIzLmNsb3VkOjIyMDE5P3BlZXI9Y2xvdWQxOS5qYWZpeXVuMjAyMy5jbG91ZCZzbmk9Y2xvdWQxOS5qYWZpeXVuMjAyMy5jbG91ZCNWaXAxJUU0JUI4JUE4MTktJUU5JTlGJUE5JUU1JTlCJUJEJUU0JUI4JUE4VGlrdG9rCnRyb2phbjovLzFjMDcxZTI1LTVjNzktM2QzZi1iNGI5LWRiNDlkYzFkNmY0ZkBjbG91ZDQxLmphZml5dW4yMDIzLmNsb3VkOjIyMDQxP3BlZXI9Y2xvdWQ0MS5qYWZpeXVuMjAyMy5jbG91ZCZzbmk9Y2xvdWQ0MS5qYWZpeXVuMjAyMy5jbG91ZCNWaXAxJUU0JUI4JUE4NDEtJUU1JThGJUIwJUU2JUI5JUJFJUU0JUI4JUE4JUU1JThFJTlGJUU3JTk0JTlGJUU0JUI4JUE4Q2hhdEdQVAp0cm9qYW46Ly8xYzA3MWUyNS01Yzc5LTNkM2YtYjRiOS1kYjQ5ZGMxZDZmNGZAY2xvdWQ0Mi5qYWZpeXVuMjAyMy5jbG91ZDoyMjA0Mj9wZWVyPWNsb3VkNDIuamFmaXl1bjIwMjMuY2xvdWQmc25pPWNsb3VkNDIuamFmaXl1bjIwMjMuY2xvdWQjVmlwMSVFNCVCOCVBODQyLSVFNSU4RiVCMCVFNiVCOSVCRSVFNCVCOCVBOCVFNSU4RSU5RiVFNyU5NCU5RiVFNCVCOCVBOENoYXRHUFQKdHJvamFuOi8vMWMwNzFlMjUtNWM3OS0zZDNmLWI0YjktZGI0OWRjMWQ2ZjRmQGNsb3VkNDUuamFmaXl1bjIwMjMuY2xvdWQ6MjIwNDU/cGVlcj1jbG91ZDQ1LmphZml5dW4yMDIzLmNsb3VkJnNuaT1jbG91ZDQ1LmphZml5dW4yMDIzLmNsb3VkI1ZpcDElRTQlQjglQTg0NS0lRTYlOTclQTUlRTYlOUMlQUMlRTQlQjglQTglRTUlOEUlOUYlRTclOTQlOUYlRTQlQjglQTglRTYlQjUlODElRTUlQUElOTIlRTQlQkQlOTMlRTQlQjglQThDaGF0R1BUCnRyb2phbjovLzFjMDcxZTI1LTVjNzktM2QzZi1iNGI5LWRiNDlkYzFkNmY0ZkBjbG91ZDQ3LmphZml5dW4yMDIzLmNsb3VkOjIyMDQ3P3BlZXI9Y2xvdWQ0Ny5qYWZpeXVuMjAyMy5jbG91ZCZzbmk9Y2xvdWQ0Ny5qYWZpeXVuMjAyMy5jbG91ZCNWaXAxJUU0JUI4JUE4NDctJUU2JTk3JUE1JUU2JTlDJUFDJUU0JUI4JUE4JUU1JThFJTlGJUU3JTk0JTlGJUU0JUI4JUE4JUU2JUI1JTgxJUU1JUFBJTkyJUU0JUJEJTkzJUU0JUI4JUE4Q2hhdEdQVAp0cm9qYW46Ly8xYzA3MWUyNS01Yzc5LTNkM2YtYjRiOS1kYjQ5ZGMxZDZmNGZAY2xvdWQ1Mi5qYWZpeXVuMjAyMy5jbG91ZDoyMjA1Mj9wZWVyPWNsb3VkNTIuamFmaXl1bjIwMjMuY2xvdWQmc25pPWNsb3VkNTIuamFmaXl1bjIwMjMuY2xvdWQjVmlwMSVFNCVCOCVBODUyLSVFNiU5NyVBNSVFNiU5QyVBQyVFNCVCOCVBOCVFNSU4RSU5RiVFNyU5NCU5RiVFNCVCOCVBOENoYXRHUFQKdHJvamFuOi8vMWMwNzFlMjUtNWM3OS0zZDNmLWI0YjktZGI0OWRjMWQ2ZjRmQGNsb3VkNTMuamFmaXl1bjIwMjMuY2xvdWQ6MjIwNTM/cGVlcj1jbG91ZDUzLmphZml5dW4yMDIzLmNsb3VkJnNuaT1jbG91ZDUzLmphZml5dW4yMDIzLmNsb3VkI1ZpcDElRTQlQjglQTg1My0lRTYlOTclQTUlRTYlOUMlQUMlRTQlQjglQTglRTUlOEUlOUYlRTclOTQlOUYlRTQlQjglQThDaGF0R1BUCnRyb2phbjovLzFjMDcxZTI1LTVjNzktM2QzZi1iNGI5LWRiNDlkYzFkNmY0ZkBjbG91ZDU0LmphZml5dW4yMDIzLmNsb3VkOjIyMDU0P3BlZXI9Y2xvdWQ1NC5qYWZpeXVuMjAyMy5jbG91ZCZzbmk9Y2xvdWQ1NC5qYWZpeXVuMjAyMy5jbG91ZCNWaXAxJUU0JUI4JUE4NTQtJUU2JTk3JUE1JUU2JTlDJUFDJUU0JUI4JUE4JUU1JThFJTlGJUU3JTk0JTlGJUU0JUI4JUE4Q2hhdEdQVAp0cm9qYW46Ly8xYzA3MWUyNS01Yzc5LTNkM2YtYjRiOS1kYjQ5ZGMxZDZmNGZAY2xvdWQ1NS5qYWZpeXVuMjAyMy5jbG91ZDoyMjA1NT9wZWVyPWNsb3VkNTUuamFmaXl1bjIwMjMuY2xvdWQmc25pPWNsb3VkNTUuamFmaXl1bjIwMjMuY2xvdWQjVmlwMSVFNCVCOCVBODU1LSVFNiVCRSVCMyVFNSVBNCVBNyVFNSU4OCVBOSVFNCVCQSU5QSVFNCVCOCVBOFRyb2phbiVFNCVCOCVBOAp0cm9qYW46Ly8xYzA3MWUyNS01Yzc5LTNkM2YtYjRiOS1kYjQ5ZGMxZDZmNGZAY2xvdWQ1Ni5qYWZpeXVuMjAyMy5jbG91ZDoyMjA1Nj9wZWVyPWNsb3VkNTYuamFmaXl1bjIwMjMuY2xvdWQmc25pPWNsb3VkNTYuamFmaXl1bjIwMjMuY2xvdWQjVmlwMSVFNCVCOCVBODU2LSVFNyVCRSU4RSVFNSU5QiVCRCVFNCVCOCVBOCVFNSU4RSU5RiVFNyU5NCU5RiVFNCVCOCVBOENoYXRHUFQKdHJvamFuOi8vMWMwNzFlMjUtNWM3OS0zZDNmLWI0YjktZGI0OWRjMWQ2ZjRmQGNsb3VkNTcuamFmaXl1bjIwMjMuY2xvdWQ6MjIwNTc/cGVlcj1jbG91ZDU3LmphZml5dW4yMDIzLmNsb3VkJnNuaT1jbG91ZDU3LmphZml5dW4yMDIzLmNsb3VkI1ZpcDElRTQlQjglQTg1Ny0lRTclQkUlOEUlRTUlOUIlQkQlRTQlQjglQTglRTUlOEUlOUYlRTclOTQlOUYlRTQlQjglQThDaGF0R1BUCnRyb2phbjovLzFjMDcxZTI1LTVjNzktM2QzZi1iNGI5LWRiNDlkYzFkNmY0ZkBjbG91ZDU4LmphZml5dW4yMDIzLmNsb3VkOjIyMDU4P3BlZXI9Y2xvdWQ1OC5qYWZpeXVuMjAyMy5jbG91ZCZzbmk9Y2xvdWQ1OC5qYWZpeXVuMjAyMy5jbG91ZCNWaXAxJUU0JUI4JUE4NTgtJUU3JUJFJThFJUU1JTlCJUJEJUU0JUI4JUE4VHJvamFuJUU0JUI4JUE4Q2hhdEdQVAp0cm9qYW46Ly8xYzA3MWUyNS01Yzc5LTNkM2YtYjRiOS1kYjQ5ZGMxZDZmNGZAY2xvdWQ1OS5qYWZpeXVuMjAyMy5jbG91ZDoyMjA1OT9wZWVyPWNsb3VkNTkuamFmaXl1bjIwMjMuY2xvdWQmc25pPWNsb3VkNTkuamFmaXl1bjIwMjMuY2xvdWQjVmlwMSVFNCVCOCVBODU5LSVFNiU5NyVBNSVFNiU5QyVBQyVFNCVCOCVBOFRyb2phbiVFNCVCOCVBOENoYXRHUFQKdHJvamFuOi8vMWMwNzFlMjUtNWM3OS0zZDNmLWI0YjktZGI0OWRjMWQ2ZjRmQGNsb3VkNjAuamFmaXl1bjIwMjMuY2xvdWQ6MjIwNjA/cGVlcj1jbG91ZDYwLmphZml5dW4yMDIzLmNsb3VkJnNuaT1jbG91ZDYwLmphZml5dW4yMDIzLmNsb3VkI1ZpcDElRTQlQjglQTg2MC0lRTYlOTclQTUlRTYlOUMlQUMlRTQlQjglQThUcm9qYW4lRTQlQjglQThDaGF0R1BUCnRyb2phbjovLzFjMDcxZTI1LTVjNzktM2QzZi1iNGI5LWRiNDlkYzFkNmY0ZkBjbG91ZDIxLmphZml5dW4yMDIzLmNsb3VkOjIyMDIxP3BlZXI9Y2xvdWQyMS5qYWZpeXVuMjAyMy5jbG91ZCZzbmk9Y2xvdWQyMS5qYWZpeXVuMjAyMy5jbG91ZCNWaXAxJUU0JUI4JUE4JUU1JThBJUEwJUU2JThCJUJGJUU1JUE0JUE3MjElRTQlQjglQTgKdHJvamFuOi8vMWMwNzFlMjUtNWM3OS0zZDNmLWI0YjktZGI0OWRjMWQ2ZjRmQGNsb3VkMjIuamFmaXl1bjIwMjMuY2xvdWQ6MjIwMjI/cGVlcj1jbG91ZDIyLmphZml5dW4yMDIzLmNsb3VkJnNuaT1jbG91ZDIyLmphZml5dW4yMDIzLmNsb3VkI1ZpcDElRTQlQjglQTglRTUlOEQlQjAlRTUlQkElQTYyMiVFNCVCOCVBOAp0cm9qYW46Ly8xYzA3MWUyNS01Yzc5LTNkM2YtYjRiOS1kYjQ5ZGMxZDZmNGZAY2xvdWQ0My5qYWZpeXVuMjAyMy5jbG91ZDoyMjA0Mz9wZWVyPWNsb3VkNDMuamFmaXl1bjIwMjMuY2xvdWQmc25pPWNsb3VkNDMuamFmaXl1bjIwMjMuY2xvdWQjVmlwMSVFNCVCOCVBOCVFNiU5NiVCMCVFNSU4QSVBMCVFNSU5RCVBMTQzJUU0JUI4JUE4JUU1JUE1JTg4JUU5JUEzJTlFJTI4U0clMjklRTklOUQlOUUlRTglODclQUElRTUlODglQjYlRTUlODklQTclRTglQTclQTMlRTklOTQlODElRUYlQkMlODglRTQlQkYlOUQlRTglQUYlODElRUYlQkMlODktQ2hhdEdQVCVFNCVCOCVBOAp0cm9qYW46Ly8xYzA3MWUyNS01Yzc5LTNkM2YtYjRiOS1kYjQ5ZGMxZDZmNGZAY2xvdWQ0OC5qYWZpeXVuMjAyMy5jbG91ZDoyMjA0OD9wZWVyPWNsb3VkNDguamFmaXl1bjIwMjMuY2xvdWQmc25pPWNsb3VkNDguamFmaXl1bjIwMjMuY2xvdWQjVmlwMSVFNCVCOCVBOCVFNiU5NiVCMCVFNSU4QSVBMCVFNSU5RCVBMTQ4JUU0JUI4JUE4JUU1JUE1JTg4JUU5JUEzJTlFJTI4U0clMjklRTklOUQlOUUlRTglODclQUElRTUlODglQjYlRTUlODklQTclRTglQTclQTMlRTklOTQlODElRUYlQkMlODglRTQlQkYlOUQlRTglQUYlODElRUYlQkMlODktQ2hhdEdQVAp0cm9qYW46Ly8xYzA3MWUyNS01Yzc5LTNkM2YtYjRiOS1kYjQ5ZGMxZDZmNGZAY2xvdWQ0OS5qYWZpeXVuMjAyMy5jbG91ZDoyMjA0OT9wZWVyPWNsb3VkNDkuamFmaXl1bjIwMjMuY2xvdWQmc25pPWNsb3VkNDkuamFmaXl1bjIwMjMuY2xvdWQjVmlwMSVFNCVCOCVBOCVFNiU5NiVCMCVFNSU4QSVBMCVFNSU5RCVBMTQ5JUU0JUI4JUE4JUU1JUE1JTg4JUU5JUEzJTlFJTI4U0clMjklRTklOUQlOUUlRTglODclQUElRTUlODglQjYlRTUlODklQTclRTglQTclQTMlRTklOTQlODElRUYlQkMlODglRTQlQkYlOUQlRTglQUYlODElRUYlQkMlODktQ2hhdEdQVAp0cm9qYW46Ly8xYzA3MWUyNS01Yzc5LTNkM2YtYjRiOS1kYjQ5ZGMxZDZmNGZAY2xvdWQyMy5qYWZpeXVuMjAyMy5jbG91ZDoyMjAyMz9wZWVyPWNsb3VkMjMuamFmaXl1bjIwMjMuY2xvdWQmc25pPWNsb3VkMjMuamFmaXl1bjIwMjMuY2xvdWQjVmlwMSVFNCVCOCVBOCVFOCU4QiVCMSVFNSU5QiVCRDIzJUU0JUI4JUE4CnRyb2phbjovLzFjMDcxZTI1LTVjNzktM2QzZi1iNGI5LWRiNDlkYzFkNmY0ZkBjbG91ZDMwLmphZml5dW4yMDIzLmNsb3VkOjIyMDMwP3BlZXI9Y2xvdWQzMC5qYWZpeXVuMjAyMy5jbG91ZCZzbmk9Y2xvdWQzMC5qYWZpeXVuMjAyMy5jbG91ZCNWaXAxJUU0JUI4JUE4JUU5JUE2JTk5JUU2JUI4JUFGMzAlRTQlQjglQTgKdHJvamFuOi8vMWMwNzFlMjUtNWM3OS0zZDNmLWI0YjktZGI0OWRjMWQ2ZjRmQGNsb3VkMzEuamFmaXl1bjIwMjMuY2xvdWQ6MjIwMzE/cGVlcj1jbG91ZDMxLmphZml5dW4yMDIzLmNsb3VkJnNuaT1jbG91ZDMxLmphZml5dW4yMDIzLmNsb3VkI1ZpcDElRTQlQjglQTglRTklQTYlOTklRTYlQjglQUYzMSVFNCVCOCVBOAp0cm9qYW46Ly8xYzA3MWUyNS01Yzc5LTNkM2YtYjRiOS1kYjQ5ZGMxZDZmNGZAY2xvdWQzMi5qYWZpeXVuMjAyMy5jbG91ZDoyMjAzMj9wZWVyPWNsb3VkMzIuamFmaXl1bjIwMjMuY2xvdWQmc25pPWNsb3VkMzIuamFmaXl1bjIwMjMuY2xvdWQjVmlwMSVFNCVCOCVBOCVFOSVBNiU5OSVFNiVCOCVBRjMyJUU0JUI4JUE4CnRyb2phbjovLzFjMDcxZTI1LTVjNzktM2QzZi1iNGI5LWRiNDlkYzFkNmY0ZkBjbG91ZDYzLmphZml5dW4yMDIzLmNsb3VkOjIyMDYzP3BlZXI9Y2xvdWQ2My5qYWZpeXVuMjAyMy5jbG91ZCZzbmk9Y2xvdWQ2My5qYWZpeXVuMjAyMy5jbG91ZCMlRTMlODAlOTBWaXAxJUU0JUI4JUE4JUU1JTlDJTlGJUU4JTgwJUIzJUU1JTg1JUI2NjMlRTQlQjglQTglRTMlODAlOTElRTUlOUIlQkElRTUlQUUlOUFJUCVFNCVCOCVBOCVFNyVBNiU4MSVFOCVCRCVBRSVFNSVBRCU5MCVFNyU5QiVCOCVFNSU4NSVCMyVFOCVBRSVCRiVFOSU5NyVBRQoK -------------------------------------------------------------------------------- /sub/free/www.kuaicloud.xyz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddbc/getAirport/1122d12689005a96c8fd22fad4cf07ac25e6a20e/sub/free/www.kuaicloud.xyz -------------------------------------------------------------------------------- /sub/free/www.wolaile.icu: -------------------------------------------------------------------------------- 1 | dm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaWFIZ3hMZW1tbWVhNHIyRXRNVWRpY0hNaUxDSmhaR1FpT2lKbWMzbDVMbVp2YzJrdWFHc2lMQ0p3YjNKMElqb2lOREE0TVRVaUxDSnBaQ0k2SWpsa056WmhNVFV3TFdaaU5USXRNMlV4TVMxaU56aGtMVFk1TWpSa1lUUTJObUpqTWlJc0ltRnBaQ0k2SWpBaUxDSnVaWFFpT2lKMFkzQWlMQ0owZVhCbElqb2libTl1WlNJc0ltaHZjM1FpT2lJaUxDSndZWFJvSWpvaUwybHVaR1Y0SWl3aWRHeHpJam9pSWl3aWMyNXBJam9pSW4wPQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pYUhneExlbW1tZWE0cjJJdE1VZGljSE1pTENKaFpHUWlPaUp4Y1dKa1ozcDVaR0l1Wm05emFTNW9heUlzSW5CdmNuUWlPaUkwTmpBMk9DSXNJbWxrSWpvaU9XUTNObUV4TlRBdFptSTFNaTB6WlRFeExXSTNPR1F0TmpreU5HUmhORFkyWW1NeUlpd2lZV2xrSWpvaU1DSXNJbTVsZENJNkluUmpjQ0lzSW5SNWNHVWlPaUp1YjI1bElpd2lhRzl6ZENJNklpSXNJbkJoZEdnaU9pSXZhVzVrWlhnaUxDSjBiSE1pT2lJaUxDSnpibWtpT2lJaWZRPT0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVFYZ3hMZW1tbWVhNHIySXRNVWRpY0hNZ0xYZ3k1WUNONTQ2SElpd2lZV1JrSWpvaWNYRmlaR2Q2ZVdSaUxtWnZjMmt1YUdzaUxDSndiM0owSWpvaU5UWTBNRGdpTENKcFpDSTZJamxrTnpaaE1UVXdMV1ppTlRJdE0yVXhNUzFpTnpoa0xUWTVNalJrWVRRMk5tSmpNaUlzSW1GcFpDSTZJakFpTENKdVpYUWlPaUowWTNBaUxDSjBlWEJsSWpvaWJtOXVaU0lzSW1odmMzUWlPaUlpTENKd1lYUm9Jam9pTDJsdVpHVjRJaXdpZEd4eklqb2lJaXdpYzI1cElqb2lJbjA9CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lRWGd5TGVtbW1lYTRyMkV0TVVkaWNITWlMQ0poWkdRaU9pSm5aR1I0TG1admMya3VhR3NpTENKd2IzSjBJam9pTkRReU16RWlMQ0pwWkNJNklqbGtOelpoTVRVd0xXWmlOVEl0TTJVeE1TMWlOemhrTFRZNU1qUmtZVFEyTm1Kak1pSXNJbUZwWkNJNklqQWlMQ0p1WlhRaU9pSjBZM0FpTENKMGVYQmxJam9pYm05dVpTSXNJbWh2YzNRaU9pSWlMQ0p3WVhSb0lqb2lMMmx1WkdWNElpd2lkR3h6SWpvaUlpd2ljMjVwSWpvaUluMD0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVFYZ3lMZW1tbWVhNHIySXRNVWRpY0hNaUxDSmhaR1FpT2lKaGFHaG1ZaTVtYjNOcExtaHJJaXdpY0c5eWRDSTZJalExTlRNMklpd2lhV1FpT2lJNVpEYzJZVEUxTUMxbVlqVXlMVE5sTVRFdFlqYzRaQzAyT1RJMFpHRTBOalppWXpJaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWRHTndJaXdpZEhsd1pTSTZJbTV2Ym1VaUxDSm9iM04wSWpvaUlpd2ljR0YwYUNJNklpOXBibVJsZUNJc0luUnNjeUk2SWlJc0luTnVhU0k2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pYUhneElPV1BzT2E1dmpFZ0xURkhZbkJ6SWl3aVlXUmtJam9pYzJoa2VDNWtiMjVuYUhWcExuUmxZMmdpTENKd2IzSjBJam9pTlRNNU9UQWlMQ0pwWkNJNklqbGtOelpoTVRVd0xXWmlOVEl0TTJVeE1TMWlOemhrTFRZNU1qUmtZVFEyTm1Kak1pSXNJbUZwWkNJNklqQWlMQ0p1WlhRaU9pSjBZM0FpTENKMGVYQmxJam9pYm05dVpTSXNJbWh2YzNRaU9pSWlMQ0p3WVhSb0lqb2lMMmx1WkdWNElpd2lkR3h6SWpvaUlpd2ljMjVwSWpvaUluMD0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaWFIZ3hMZWFXc09XS29PV2RvUzFoTVVkaWNITWdMWGd6NVlDTjU0NkhJaXdpWVdSa0lqb2labk41ZVM1bWIzTnBMbWhySWl3aWNHOXlkQ0k2SWpVME5qTTBJaXdpYVdRaU9pSTVaRGMyWVRFMU1DMW1ZalV5TFRObE1URXRZamM0WkMwMk9USTBaR0UwTmpaaVl6SWlMQ0poYVdRaU9pSXdJaXdpYm1WMElqb2lkR053SWl3aWRIbHdaU0k2SW01dmJtVWlMQ0pvYjNOMElqb2lJaXdpY0dGMGFDSTZJaTlwYm1SbGVDSXNJblJzY3lJNklpSXNJbk51YVNJNklpSjkKdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaWFIZ3hMZWFXc09XS29PV2RvUzFpTVVkaWNITWdMWGd6NVlDTjU0NkhJaXdpWVdSa0lqb2labk41ZVM1bWIzTnBMbWhySWl3aWNHOXlkQ0k2SWpVME5qTTBJaXdpYVdRaU9pSTVaRGMyWVRFMU1DMW1ZalV5TFRObE1URXRZamM0WkMwMk9USTBaR0UwTmpaaVl6SWlMQ0poYVdRaU9pSXdJaXdpYm1WMElqb2lkR053SWl3aWRIbHdaU0k2SW01dmJtVWlMQ0pvYjNOMElqb2lJaXdpY0dGMGFDSTZJaTlwYm1SbGVDSXNJblJzY3lJNklpSXNJbk51YVNJNklpSjkKdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaWFIZ3hMZWFYcGVhY3JHRXRNVWRpY0hNaUxDSmhaR1FpT2lKemFITm9ZM1ZoTG1admMya3VhR3NpTENKd2IzSjBJam9pTWpVNE5UUWlMQ0pwWkNJNklqbGtOelpoTVRVd0xXWmlOVEl0TTJVeE1TMWlOemhrTFRZNU1qUmtZVFEyTm1Kak1pSXNJbUZwWkNJNklqQWlMQ0p1WlhRaU9pSjBZM0FpTENKMGVYQmxJam9pYm05dVpTSXNJbWh2YzNRaU9pSWlMQ0p3WVhSb0lqb2lMMmx1WkdWNElpd2lkR3h6SWpvaUlpd2ljMjVwSWpvaUluMD0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaWFIZ3hMZWFYcGVhY3JHSXRNVWRpY0hNZ0xTQjRNdVdBamVlT2h5SXNJbUZrWkNJNkluRnhZbVJ6YUdOdExtUnZibWRvZFdrdWRHVmphQ0lzSW5CdmNuUWlPaUkwTkRVd09DSXNJbWxrSWpvaU9XUTNObUV4TlRBdFptSTFNaTB6WlRFeExXSTNPR1F0TmpreU5HUmhORFkyWW1NeUlpd2lZV2xrSWpvaU1DSXNJbTVsZENJNkluUmpjQ0lzSW5SNWNHVWlPaUp1YjI1bElpd2lhRzl6ZENJNklpSXNJbkJoZEdnaU9pSXZhVzVrWlhnaUxDSjBiSE1pT2lJaUxDSnpibWtpT2lJaWZRPT0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaWFIZ3hMZWUranVXYnZXRXRNVWRpY0hNZ0xYZ3k1WUNONTQ2SElpd2lZV1JrSWpvaWFIcGpkUzVrYjI1bmFIVnBMblJsWTJnaUxDSndiM0owSWpvaU5UWXpNelFpTENKcFpDSTZJamxrTnpaaE1UVXdMV1ppTlRJdE0yVXhNUzFpTnpoa0xUWTVNalJrWVRRMk5tSmpNaUlzSW1GcFpDSTZJakFpTENKdVpYUWlPaUowWTNBaUxDSjBlWEJsSWpvaWJtOXVaU0lzSW1odmMzUWlPaUlpTENKd1lYUm9Jam9pTDJsdVpHVjRJaXdpZEd4eklqb2lJaXdpYzI1cElqb2lJbjA9CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lhSGd4TGVlK2p1V2J2VUV0TVVkaWNITWdMWGd6NVlDTjU0NkhJaXdpWVdSa0lqb2ljMmhrZUM1a2IyNW5hSFZwTG5SbFkyZ2lMQ0p3YjNKMElqb2lOREEzTmpVaUxDSnBaQ0k2SWpsa056WmhNVFV3TFdaaU5USXRNMlV4TVMxaU56aGtMVFk1TWpSa1lUUTJObUpqTWlJc0ltRnBaQ0k2SWpBaUxDSnVaWFFpT2lKMFkzQWlMQ0owZVhCbElqb2libTl1WlNJc0ltaHZjM1FpT2lJaUxDSndZWFJvSWpvaUwybHVaR1Y0SWl3aWRHeHpJam9pSWl3aWMyNXBJam9pSW4wPQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pYUhneExlbWZxZVdidlRFdE1VZGljSE10ZURMbGdJM25qb2NpTENKaFpHUWlPaUppWW1wamRTNWtiMjVuYUhWcExuUmxZMmdpTENKd2IzSjBJam9pTWpVeU5EQWlMQ0pwWkNJNklqbGtOelpoTVRVd0xXWmlOVEl0TTJVeE1TMWlOemhrTFRZNU1qUmtZVFEyTm1Kak1pSXNJbUZwWkNJNklqQWlMQ0p1WlhRaU9pSjBZM0FpTENKMGVYQmxJam9pYm05dVpTSXNJbWh2YzNRaU9pSWlMQ0p3WVhSb0lqb2lMMmx1WkdWNElpd2lkR3h6SWpvaUlpd2ljMjVwSWpvaUluMD0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaWFIZ3hMZW1mcWVXYnZUSXRNVWRpY0hNdGVESXVOZVdBamVlT2h5SXNJbUZrWkNJNkltaDZlV1F1Wkc5dVoyaDFhUzUwWldOb0lpd2ljRzl5ZENJNklqTTVOakV3SWl3aWFXUWlPaUk1WkRjMllURTFNQzFtWWpVeUxUTmxNVEV0WWpjNFpDMDJPVEkwWkdFME5qWmlZeklpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWk5cGJtUmxlQ0lzSW5Sc2N5STZJaUlzSW5OdWFTSTZJaUo5CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lhSGd5TGVXK3QrV2J2V0VpTENKaFpHUWlPaUppWW1wamRTNWtiMjVuYUhWcExuUmxZMmdpTENKd2IzSjBJam9pTmpRMU5ERWlMQ0pwWkNJNklqbGtOelpoTVRVd0xXWmlOVEl0TTJVeE1TMWlOemhrTFRZNU1qUmtZVFEyTm1Kak1pSXNJbUZwWkNJNklqQWlMQ0p1WlhRaU9pSjBZM0FpTENKMGVYQmxJam9pYm05dVpTSXNJbWh2YzNRaU9pSWlMQ0p3WVhSb0lqb2lMMmx1WkdWNElpd2lkR3h6SWpvaUlpd2ljMjVwSWpvaUluMD0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaWFIZ3lMZWkyaXVXTmwyRXRNU0lzSW1Ga1pDSTZJbVp6ZVhrdVptOXphUzVvYXlJc0luQnZjblFpT2lJek9URTROaUlzSW1sa0lqb2lPV1EzTm1FeE5UQXRabUkxTWkwelpURXhMV0kzT0dRdE5qa3lOR1JoTkRZMlltTXlJaXdpWVdsa0lqb2lNQ0lzSW01bGRDSTZJblJqY0NJc0luUjVjR1VpT2lKdWIyNWxJaXdpYUc5emRDSTZJaUlzSW5CaGRHZ2lPaUl2YVc1a1pYZ2lMQ0owYkhNaU9pSWlMQ0p6Ym1raU9pSWlmUT09CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lhSGd5NWI2MzVadTlZaUF0SWl3aVlXUmtJam9pWm5ONWVTNW1iM05wTG1ocklpd2ljRzl5ZENJNklqUTNOVGM0SWl3aWFXUWlPaUk1WkRjMllURTFNQzFtWWpVeUxUTmxNVEV0WWpjNFpDMDJPVEkwWkdFME5qWmlZeklpTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWk5cGJtUmxlQ0lzSW5Sc2N5STZJaUlzSW5OdWFTSTZJaUo5CnZsZXNzOi8vOWQ3NmExNTAtZmI1Mi0zZTExLWI3OGQtNjkyNGRhNDY2YmMyQGNjZGRjZC5jb206MTAwODY/ZW5jcnlwdGlvbj1ub25lJnR5cGU9dGNwJnNlY3VyaXR5PSZwYXRoPSUyRiZoZWFkZXJUeXBlPW5vbmUjJUU1JTg5JUE5JUU0JUJEJTk5JUU2JUI1JTgxJUU5JTg3JThGJUVGJUJDJTlBMTAyNE1CCnZsZXNzOi8vOWQ3NmExNTAtZmI1Mi0zZTExLWI3OGQtNjkyNGRhNDY2YmMyQGNjZGRjZC5jb206MTAwODY/ZW5jcnlwdGlvbj1ub25lJnR5cGU9dGNwJnNlY3VyaXR5PSZwYXRoPSUyRiZoZWFkZXJUeXBlPW5vbmUjJUU4JUJGJTg3JUU2JTlDJTlGJUU2JTk3JUI2JUU5JTk3JUI0JUVGJUJDJTlBMjAyMy0wOC0yNAo= -------------------------------------------------------------------------------- /sub/free/zhuzhu12.com: -------------------------------------------------------------------------------- 1 | dm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTZhYVo1cml2SURFaUxDSmhaR1FpT2lKamJURXRlR2N1WjI4d01ERXVZblY2ZWlJc0luQnZjblFpT2lJeE9UZ3hNU0lzSW1sa0lqb2lNV1kwWlRKbVlqZ3ROVGN4TUMwelpqY3lMVGcwTm1JdE1EVTFZakZqTnpVME1UZ3pJaXdpWVdsa0lqb2lNQ0lzSW01bGRDSTZJblJqY0NJc0luUjVjR1VpT2lKdWIyNWxJaXdpYUc5emRDSTZJaUlzSW5CaGRHZ2lPaUl2WjI4aUxDSjBiSE1pT2lJaUxDSnpibWtpT2lJaWZRPT0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTZhYVo1cml2SURJaUxDSmhaR1FpT2lKamRERXRlR2N1WjI4d01ERXVZblY2ZWlJc0luQnZjblFpT2lJeE9UZ3hNaUlzSW1sa0lqb2lNV1kwWlRKbVlqZ3ROVGN4TUMwelpqY3lMVGcwTm1JdE1EVTFZakZqTnpVME1UZ3pJaXdpWVdsa0lqb2lNQ0lzSW01bGRDSTZJblJqY0NJc0luUjVjR1VpT2lKdWIyNWxJaXdpYUc5emRDSTZJaUlzSW5CaGRHZ2lPaUl2WjI4aUxDSjBiSE1pT2lJaUxDSnpibWtpT2lJaWZRPT0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTVZK3c1cm0rSURFZzVZcW81NVM3NTVhdklpd2lZV1JrSWpvaVkyMHhMWGhuTG1kdk1EQXhMbUoxZW5vaUxDSndiM0owSWpvaU1UazRNakVpTENKcFpDSTZJakZtTkdVeVptSTRMVFUzTVRBdE0yWTNNaTA0TkRaaUxUQTFOV0l4WXpjMU5ERTRNeUlzSW1GcFpDSTZJakFpTENKdVpYUWlPaUowWTNBaUxDSjBlWEJsSWpvaWJtOXVaU0lzSW1odmMzUWlPaUlpTENKd1lYUm9Jam9pTDJkdklpd2lkR3h6SWpvaUlpd2ljMjVwSWpvaUluMD0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTVZK3c1cm0rSURJZzVZcW81NVM3NTVhdklpd2lZV1JrSWpvaVkzUXhMWGhuTG1kdk1EQXhMbUoxZW5vaUxDSndiM0owSWpvaU1UazRNaklpTENKcFpDSTZJakZtTkdVeVptSTRMVFUzTVRBdE0yWTNNaTA0TkRaaUxUQTFOV0l4WXpjMU5ERTRNeUlzSW1GcFpDSTZJakFpTENKdVpYUWlPaUowWTNBaUxDSjBlWEJsSWpvaWJtOXVaU0lzSW1odmMzUWlPaUlpTENKd1lYUm9Jam9pTDJkdklpd2lkR3h6SWpvaUlpd2ljMjVwSWpvaUluMD0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTVwZWw1cHlzSURFZ1RtbGpieUJCWW1WdFlTSXNJbUZrWkNJNkltTnRNUzE0Wnk1bmJ6QXdNUzVpZFhwNklpd2ljRzl5ZENJNklqRTVPRE14SWl3aWFXUWlPaUl4WmpSbE1tWmlPQzAxTnpFd0xUTm1Oekl0T0RRMllpMHdOVFZpTVdNM05UUXhPRE1pTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWk5bmJ5SXNJblJzY3lJNklpSXNJbk51YVNJNklpSjkKdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTVwZWw1cHlzSURJZ1RtbGpieUJCWW1WdFlTSXNJbUZrWkNJNkltTjBNUzE0Wnk1bmJ6QXdNUzVpZFhwNklpd2ljRzl5ZENJNklqRTVPRE15SWl3aWFXUWlPaUl4WmpSbE1tWmlPQzAxTnpFd0xUTm1Oekl0T0RRMllpMHdOVFZpTVdNM05UUXhPRE1pTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWk5bmJ5SXNJblJzY3lJNklpSXNJbk51YVNJNklpSjkKdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTVwYXc1WXFnNVoyaElERWdUbVYwWm14cGVDQWlMQ0poWkdRaU9pSmpiVEV0ZUdjdVoyOHdNREV1WW5WNmVpSXNJbkJ2Y25RaU9pSXhPVGcwTVNJc0ltbGtJam9pTVdZMFpUSm1Zamd0TlRjeE1DMHpaamN5TFRnME5tSXRNRFUxWWpGak56VTBNVGd6SWl3aVlXbGtJam9pTUNJc0ltNWxkQ0k2SW5SamNDSXNJblI1Y0dVaU9pSnViMjVsSWl3aWFHOXpkQ0k2SWlJc0luQmhkR2dpT2lJdloyOGlMQ0owYkhNaU9pSWlMQ0p6Ym1raU9pSWlmUT09CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2k1cGF3NVlxZzVaMmhJRElnVG1WMFpteHBlQ0lzSW1Ga1pDSTZJbU4wTVMxNFp5NW5iekF3TVM1aWRYcDZJaXdpY0c5eWRDSTZJakU1T0RReUlpd2lhV1FpT2lJeFpqUmxNbVppT0MwMU56RXdMVE5tTnpJdE9EUTJZaTB3TlRWaU1XTTNOVFF4T0RNaUxDSmhhV1FpT2lJd0lpd2libVYwSWpvaWRHTndJaXdpZEhsd1pTSTZJbTV2Ym1VaUxDSm9iM04wSWpvaUlpd2ljR0YwYUNJNklpOW5ieUlzSW5Sc2N5STZJaUlzSW5OdWFTSTZJaUo5CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2k1NzZPNVp1OUlERWdRMmhoZEVkUVZDSXNJbUZrWkNJNkltTnRNUzE0Wnk1bmJ6QXdNUzVpZFhwNklpd2ljRzl5ZENJNklqRTVPRFl4SWl3aWFXUWlPaUl4WmpSbE1tWmlPQzAxTnpFd0xUTm1Oekl0T0RRMllpMHdOVFZpTVdNM05UUXhPRE1pTENKaGFXUWlPaUl3SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltNXZibVVpTENKb2IzTjBJam9pSWl3aWNHRjBhQ0k2SWk5bmJ5SXNJblJzY3lJNklpSXNJbk51YVNJNklpSjkKdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaTU3Nk81WnU5SURJZ1EyaGhkRWRRVkNJc0ltRmtaQ0k2SW1OME1TMTRaeTVuYnpBd01TNWlkWHA2SWl3aWNHOXlkQ0k2SWpFNU9EWXlJaXdpYVdRaU9pSXhaalJsTW1aaU9DMDFOekV3TFRObU56SXRPRFEyWWkwd05UVmlNV00zTlRReE9ETWlMQ0poYVdRaU9pSXdJaXdpYm1WMElqb2lkR053SWl3aWRIbHdaU0k2SW01dmJtVWlMQ0pvYjNOMElqb2lJaXdpY0dGMGFDSTZJaTluYnlJc0luUnNjeUk2SWlJc0luTnVhU0k2SWlKOQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNXJPVjVadTlJREVpTENKaFpHUWlPaUpqYlRFdGVHY3VaMjh3TURFdVluVjZlaUlzSW5CdmNuUWlPaUl4T1RnNU1pSXNJbWxrSWpvaU1XWTBaVEptWWpndE5UY3hNQzB6WmpjeUxUZzBObUl0TURVMVlqRmpOelUwTVRneklpd2lZV2xrSWpvaU1DSXNJbTVsZENJNkluUmpjQ0lzSW5SNWNHVWlPaUp1YjI1bElpd2lhRzl6ZENJNklpSXNJbkJoZEdnaU9pSXZaMjhpTENKMGJITWlPaUlpTENKemJta2lPaUlpZlE9PQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNWI2MzVadTlJREVpTENKaFpHUWlPaUpqYlRFdGVHY3VaMjh3TURFdVluVjZlaUlzSW5CdmNuUWlPaUl4T1RnNU1TSXNJbWxrSWpvaU1XWTBaVEptWWpndE5UY3hNQzB6WmpjeUxUZzBObUl0TURVMVlqRmpOelUwTVRneklpd2lZV2xrSWpvaU1DSXNJbTVsZENJNkluUmpjQ0lzSW5SNWNHVWlPaUp1YjI1bElpd2lhRzl6ZENJNklpSXNJbkJoZEdnaU9pSXZaMjhpTENKMGJITWlPaUlpTENKemJta2lPaUlpZlE9PQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNVkydzVicW01YkM4NktXLzVMcWFJREVpTENKaFpHUWlPaUpqYlRFdGVHY3VaMjh3TURFdVluVjZlaUlzSW5CdmNuUWlPaUl4T1RnNE15SXNJbWxrSWpvaU1XWTBaVEptWWpndE5UY3hNQzB6WmpjeUxUZzBObUl0TURVMVlqRmpOelUwTVRneklpd2lZV2xrSWpvaU1DSXNJbTVsZENJNkluUmpjQ0lzSW5SNWNHVWlPaUp1YjI1bElpd2lhRzl6ZENJNklpSXNJbkJoZEdnaU9pSXZaMjhpTENKMGJITWlPaUlpTENKemJta2lPaUlpZlE9PQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNVkydzVicW1JREVpTENKaFpHUWlPaUpqYlRFdGVHY3VaMjh3TURFdVluVjZlaUlzSW5CdmNuUWlPaUl4T1RnNE1pSXNJbWxrSWpvaU1XWTBaVEptWWpndE5UY3hNQzB6WmpjeUxUZzBObUl0TURVMVlqRmpOelUwTVRneklpd2lZV2xrSWpvaU1DSXNJbTVsZENJNkluUmpjQ0lzSW5SNWNHVWlPaUp1YjI1bElpd2lhRzl6ZENJNklpSXNJbkJoZEdnaU9pSXZaMjhpTENKMGJITWlPaUlpTENKemJta2lPaUlpZlE9PQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pNVp5ZjZJQ3o1WVcySURFaUxDSmhaR1FpT2lKamJURXRlR2N1WjI4d01ERXVZblY2ZWlJc0luQnZjblFpT2lJeE9UZzRNU0lzSW1sa0lqb2lNV1kwWlRKbVlqZ3ROVGN4TUMwelpqY3lMVGcwTm1JdE1EVTFZakZqTnpVME1UZ3pJaXdpWVdsa0lqb2lNQ0lzSW01bGRDSTZJblJqY0NJc0luUjVjR1VpT2lKdWIyNWxJaXdpYUc5emRDSTZJaUlzSW5CaGRHZ2lPaUl2WjI4aUxDSjBiSE1pT2lJaUxDSnpibWtpT2lJaWZRPT0Kdmxlc3M6Ly8xZjRlMmZiOC01NzEwLTNmNzItODQ2Yi0wNTViMWM3NTQxODNAdmlweGd5dW4uY29tOjEwMDg2P2VuY3J5cHRpb249bm9uZSZ0eXBlPXRjcCZzZWN1cml0eT0mcGF0aD0lMkYmaGVhZGVyVHlwZT1ub25lIyVFNSU4OSVBOSVFNCVCRCU5OSVFNiVCNSU4MSVFOSU4NyU4RiVFRiVCQyU5QTEwR0IKdmxlc3M6Ly8xZjRlMmZiOC01NzEwLTNmNzItODQ2Yi0wNTViMWM3NTQxODNAdmlweGd5dW4uY29tOjEwMDg2P2VuY3J5cHRpb249bm9uZSZ0eXBlPXRjcCZzZWN1cml0eT0mcGF0aD0lMkYmaGVhZGVyVHlwZT1ub25lIyVFOCVCRiU4NyVFNiU5QyU5RiVFNiU5NyVCNiVFOSU5NyVCNCVFRiVCQyU5QTIwMjMtMDgtMTkK -------------------------------------------------------------------------------- /sub/miningUrl: -------------------------------------------------------------------------------- 1 | vmess://eyJ2IjoiMiIsInBzIjoiR2V0QUZyZWVOb2RlLmNvbS1LYW5zYXMiLCJhZGQiOiJLb3RpY2suc2l0ZSIsInBvcnQiOiI0NDMiLCJ0eXBlIjoibm9uZSIsImlkIjoiMkYwOTQ4NDUtRTJCRC1FQkY3LURFQjctOTk1OTkyNDM2RkFGIiwiYWlkIjoiMCIsIm5ldCI6IndzIiwicGF0aCI6Ii9zcGVlZHRlc3QiLCJob3N0IjoiS2Fuc2FzLktvdGljay5zaXRlIiwidGxzIjoidGxzIn0= 2 | vmess://eyJ2IjoiMiIsInBzIjoiR2V0QUZyZWVOb2RlLmNvbS1MaWxsZSIsImFkZCI6IktvdGljay5zaXRlIiwicG9ydCI6IjQ0MyIsInR5cGUiOiJub25lIiwiaWQiOiIyRjA5NDg0NS1FMkJELUVCRjctREVCNy05OTU5OTI0MzZGQUYiLCJhaWQiOiIwIiwibmV0Ijoid3MiLCJwYXRoIjoiL3NwZWVkdGVzdCIsImhvc3QiOiJMaWxsZS5Lb3RpY2suc2l0ZSIsInRscyI6InRscyJ9 3 | vmess://eyJ2IjoiMiIsInBzIjoiR2V0QUZyZWVOb2RlLmNvbS1Mb3NBbmdlbGVzIiwiYWRkIjoiS290aWNrLnNpdGUiLCJwb3J0IjoiNDQzIiwidHlwZSI6Im5vbmUiLCJpZCI6IjJGMDk0ODQ1LUUyQkQtRUJGNy1ERUI3LTk5NTk5MjQzNkZBRiIsImFpZCI6IjAiLCJuZXQiOiJ3cyIsInBhdGgiOiIvc3BlZWR0ZXN0IiwiaG9zdCI6Ikxvc0FuZ2VsZXMuS290aWNrLnNpdGUiLCJ0bHMiOiJ0bHMifQ== 4 | -------------------------------------------------------------------------------- /sub/miningUrl64: -------------------------------------------------------------------------------- 1 | dm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVIyVjBRVVp5WldWT2IyUmxMbU52YlMxTFlXNXpZWE1pTENKaFpHUWlPaUpMYjNScFkyc3VjMmwwWlNJc0luQnZjblFpT2lJME5ETWlMQ0owZVhCbElqb2libTl1WlNJc0ltbGtJam9pTWtZd09UUTRORFV0UlRKQ1JDMUZRa1kzTFVSRlFqY3RPVGsxT1RreU5ETTJSa0ZHSWl3aVlXbGtJam9pTUNJc0ltNWxkQ0k2SW5keklpd2ljR0YwYUNJNklpOXpjR1ZsWkhSbGMzUWlMQ0pvYjNOMElqb2lTMkZ1YzJGekxrdHZkR2xqYXk1emFYUmxJaXdpZEd4eklqb2lkR3h6SW4wPQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pUjJWMFFVWnlaV1ZPYjJSbExtTnZiUzFNYVd4c1pTSXNJbUZrWkNJNklrdHZkR2xqYXk1emFYUmxJaXdpY0c5eWRDSTZJalEwTXlJc0luUjVjR1VpT2lKdWIyNWxJaXdpYVdRaU9pSXlSakE1TkRnME5TMUZNa0pFTFVWQ1JqY3RSRVZDTnkwNU9UVTVPVEkwTXpaR1FVWWlMQ0poYVdRaU9pSXdJaXdpYm1WMElqb2lkM01pTENKd1lYUm9Jam9pTDNOd1pXVmtkR1Z6ZENJc0ltaHZjM1FpT2lKTWFXeHNaUzVMYjNScFkyc3VjMmwwWlNJc0luUnNjeUk2SW5Sc2N5SjkKdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVIyVjBRVVp5WldWT2IyUmxMbU52YlMxTWIzTkJibWRsYkdWeklpd2lZV1JrSWpvaVMyOTBhV05yTG5OcGRHVWlMQ0p3YjNKMElqb2lORFF6SWl3aWRIbHdaU0k2SW01dmJtVWlMQ0pwWkNJNklqSkdNRGswT0RRMUxVVXlRa1F0UlVKR055MUVSVUkzTFRrNU5UazVNalF6TmtaQlJpSXNJbUZwWkNJNklqQWlMQ0p1WlhRaU9pSjNjeUlzSW5CaGRHZ2lPaUl2YzNCbFpXUjBaWE4wSWl3aWFHOXpkQ0k2SWt4dmMwRnVaMlZzWlhNdVMyOTBhV05yTG5OcGRHVWlMQ0owYkhNaU9pSjBiSE1pZlE9PQo= -------------------------------------------------------------------------------- /utils/checkUrllist/check.py: -------------------------------------------------------------------------------- 1 | import re 2 | import requests 3 | import threading 4 | import time 5 | import requests 6 | from tqdm import tqdm 7 | from retry import retry 8 | from datetime import datetime 9 | 10 | #check列表的位置 11 | urllist_path = './config/sublist_mining' 12 | 13 | def list_rm(url_list): #列表去重 14 | begin = 0 15 | length = len(url_list) 16 | print(f'\n-----去重开始-----\n') 17 | while begin < length: 18 | proxy_compared = url_list[begin] 19 | begin_2 = begin + 1 20 | while begin_2 <= (length - 1): 21 | if proxy_compared == url_list[begin_2]: 22 | url_list.pop(begin_2) 23 | length -= 1 24 | begin_2 += 1 25 | begin += 1 26 | print(f'\n-----去重结束-----\n') 27 | return url_list 28 | 29 | def sub_check(url,bar): 30 | headers = {'User-Agent': 'ClashforWindows/0.18.1'} 31 | with thread_max_num: 32 | @retry(tries=3) 33 | def start_check(url): 34 | res=requests.get(url,headers=headers,timeout=5)#设置5秒超时防止卡死 35 | if res.status_code == 200: 36 | try: #有流量信息 37 | info = res.headers['subscription-userinfo'] 38 | info_num = re.findall('\d+',info) 39 | time_now=int(time.time()) 40 | # 剩余流量大于10MB 41 | if int(info_num[2])-int(info_num[1])-int(info_num[0])>10485760: 42 | if len(info_num) == 4: # 有时间信息 43 | if time_now <= int(info_num[3]): # 没有过期 44 | new_list.append(url) 45 | else: # 已经过期 46 | old_list.append(url) 47 | else: # 没有时间信息 48 | new_list.append(url) 49 | else: # 流量小于10MB 50 | old_list.append(url) 51 | except: 52 | old_list.append(url) 53 | # output_text='无流量信息捏' 54 | else: 55 | old_list.append(url) 56 | try: 57 | start_check(url) 58 | except: 59 | old_list.append(url) 60 | bar.update(1) 61 | 62 | if __name__=='__main__': 63 | new_list = [] 64 | old_list = [] 65 | with open(urllist_path, 'r') as f: 66 | data = f.read() 67 | url_list=re.findall("https?://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]",data)#使用正则表达式查找订阅链接并创建列表 68 | url_list=list_rm(url_list) # 去重 69 | # url_list = data.split() :list 70 | thread_max_num =threading.Semaphore(32) #32线程 71 | bar = tqdm(total=len(url_list), desc='订阅筛选:') 72 | thread_list = [] 73 | for url in url_list: 74 | #为每个新URL创建线程 75 | t = threading.Thread(target=sub_check, args=(url,bar)) 76 | #加入线程池并启动 77 | thread_list.append(t) 78 | t.setDaemon(True) 79 | t.start() 80 | for t in thread_list: 81 | t.join() 82 | bar.close() 83 | with open(urllist_path,"w+") as f: 84 | # str = '\n' 85 | # f.write(str.join(list)) 86 | for url in new_list: 87 | f.write(url+'\n') 88 | """ 89 | with open("./logs/old/old","a") as f: 90 | for url in old_list: 91 | f.write(url+'\n') 92 | with open("./logs/old/time","w",encoding="UTF-8") as f: 93 | currentTime = datetime.now().strftime("%Y-%m-%d\t%H:%M:%S") 94 | f.write('更新时间:\t'+currentTime+'\n') 95 | """ 96 | -------------------------------------------------------------------------------- /utils/checkUrllist/ip_update.py: -------------------------------------------------------------------------------- 1 | # from ip_update import geoip_update #更新IP位置数据库,将此行放入需要引用的文件里使用'geoip_update()'即可用的文件里 2 | # 默认下载位置 './Country.mmdb'--- 3 | 4 | from urllib import request # Urllib是python内置的HTTP请求库,urllib.request获取URL的Python模块 5 | 6 | #Country.mmdb 下载地址 7 | geoip_url = 'https://raw.githubusercontent.com/Loyalsoldier/geoip/release/Country.mmdb' 8 | 9 | #根据自己情况设置mmdb存放位置 10 | countrymmdb_file = './Country.mmdb' 11 | 12 | def geoip_update(url = geoip_url): # 更新IP位置数据库存放到 `./utils/Country.mmdb` 13 | print('Downloading Country.mmdb...') 14 | try: 15 | request.urlretrieve(url, countrymmdb_file) 16 | print('Downloading Country.mmdb Success!\n') 17 | except Exception: 18 | print('Downloading Country.mmdb Failed!\n') 19 | pass 20 | 21 | if __name__ == '__main__': 22 | geoip_update(geoip_url) # 更新IP位置数据库 23 | -------------------------------------------------------------------------------- /utils/checkUrllist/sub_convert.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # 此转换功能需要安装订阅转换工具-subconverter 4 | #-------------------------------------------------- 5 | # - name: 安装订阅转换工具-subconverter 6 | # run: | 7 | # wget -O subconverter.tar.gz https://github.com/tindy2013/subconverter/releases/latest/download/subconverter_linux64.tar.gz 8 | # tar -zxvf subconverter.tar.gz -C ./ 9 | # chmod +x ./subconverter/subconverter && nohup ./subconverter/subconverter >./subconverter.log 2>&1 & 10 | #-------------------------------------------------- 11 | #安装subconverter,调用本模块,默认地址: host = 'http://127.0.0.1:25500',可以不设置host 12 | #使用网络host:调用sub_convert功能类里的use_urlhost() 列如:sub_convert.use_urlhost() 13 | 14 | import re, yaml, json, base64 15 | import requests, socket, urllib.parse 16 | from requests.adapters import HTTPAdapter 17 | 18 | import geoip2.database 19 | 20 | #默认mmdb位置 21 | countrymmdb_file = './Country.mmdb' 22 | 23 | #默认转clash配置文件.ini地址 24 | config_url = 'https://raw.githubusercontent.com/rxsweet/getAirport/main/config/provider/config.ini' 25 | 26 | #host备用网络地址 - 可用不用安装subconverter,直接使用这些网站 27 | url_host ={ 28 | 'https://sub.id9.cc/', 29 | 'https://sub.xeton.dev/', 30 | 'https://api.dler.io/', 31 | 'https://sub.maoxiongnet.com/', 32 | 'https://api.wcc.best/', 33 | 'https://api.tsutsu.one/', 34 | 'https://pub-api-1.bianyuan.xyz/', 35 | 'https://api.sublink.dev/' 36 | } 37 | 38 | class sub_convert(): 39 | 40 | def main(raw_input, input_type='url', output_type='url', custom_set={'dup_rm_enabled': False, 'format_name_enabled': False}): # {'input_type': ['url', 'content'],'output_type': ['url', 'YAML', 'Base64']} 41 | """Convert subscribe content to YAML or Base64 or url. 42 | 首先获取到订阅内容,然后对其进行格式化处理。如果内容不是 “订阅内容解析错误”,在进行去重、改名操作后(可选)输出目标格式,否则输出 “订阅内容解析错误”。 43 | """ 44 | if input_type == 'url': # 获取 URL 订阅链接内容 45 | sub_content = '' 46 | if isinstance(raw_input, list): 47 | a_content = [] 48 | for url in raw_input: 49 | s = requests.Session() 50 | s.mount('http://', HTTPAdapter(max_retries=5)) 51 | s.mount('https://', HTTPAdapter(max_retries=5)) 52 | try: 53 | print('Downloading from:' + url) 54 | resp = s.get(url, timeout=5) 55 | s_content = sub_convert.yaml_decode(sub_convert.format(resp.content.decode('utf-8'))) 56 | a_content.append(s_content) 57 | except Exception as err: 58 | print(err) 59 | return 'Url 解析错误' 60 | sub_content = sub_convert.format(''.join(a_content)) 61 | else: 62 | s = requests.Session() 63 | s.mount('http://', HTTPAdapter(max_retries=5)) 64 | s.mount('https://', HTTPAdapter(max_retries=5)) 65 | try: 66 | print('Downloading from:' + raw_input) 67 | resp = s.get(raw_input, timeout=5) 68 | sub_content = sub_convert.format(resp.content.decode('utf-8')) 69 | except Exception as err: 70 | print(err) 71 | return 'Url 解析错误' 72 | elif input_type == 'content': # 解析订阅内容 73 | sub_content = sub_convert.format(raw_input) 74 | 75 | if sub_content != '订阅内容解析错误': 76 | dup_rm_enabled = custom_set['dup_rm_enabled'] 77 | format_name_enabled = custom_set['format_name_enabled'] 78 | final_content = sub_convert.makeup(sub_content,dup_rm_enabled,format_name_enabled) 79 | if output_type == 'YAML': 80 | return final_content 81 | elif output_type == 'Base64': 82 | return sub_convert.base64_encode(sub_convert.yaml_decode(final_content)) 83 | elif output_type == 'url': 84 | return sub_convert.yaml_decode(final_content) 85 | else: 86 | print('Please define right output type.') 87 | return '订阅内容解析错误' 88 | else: 89 | return '订阅内容解析错误' 90 | def format(sub_content,output=False): # 对链接文本(Base64, url, YAML)进行格式化处理, 输出节点的配置字典(Clash 配置), output 为真是输出 YAML 文本 91 | if '' not in sub_content: 92 | if 'proxies:' not in sub_content: # 对 URL 内容进行格式化处理 93 | url_list = [] 94 | try: 95 | if '://' not in sub_content: 96 | sub_content = sub_convert.base64_decode(sub_content) 97 | 98 | raw_url_list = re.split(r'\r?\n+', sub_content) 99 | 100 | for url in raw_url_list: 101 | while len(re.split('ss://|ssr://|vmess://|trojan://|vless://', url)) > 2: 102 | url_to_split = url[8:] 103 | if 'ss://' in url_to_split and 'vmess://' not in url_to_split and 'vless://' not in url_to_split: 104 | url_splited = url_to_split.replace('ss://', '\nss://', 1) # https://www.runoob.com/python/att-string-replace.html 105 | elif 'ssr://' in url_to_split: 106 | url_splited = url_to_split.replace('ssr://', '\nssr://', 1) 107 | elif 'vmess://' in url_to_split: 108 | url_splited = url_to_split.replace('vmess://', '\nvmess://', 1) 109 | elif 'trojan://' in url_to_split: 110 | url_splited = url_to_split.replace('trojan://', '\ntrojan://', 1) 111 | elif 'vless://' in url_to_split: 112 | url_splited = url_to_split.replace('vless://', '\nvless://', 1) 113 | url_split = url_splited.split('\n') 114 | 115 | front_url = url[:8] + url_split[0] 116 | url_list.append(front_url) 117 | url = url_split[1] 118 | 119 | url_list.append(url) 120 | 121 | url_content = '\n'.join(url_list) 122 | return sub_convert.yaml_encode(url_content,output=False) 123 | except: 124 | print('Sub_content 格式错误') 125 | return '订阅内容解析错误' 126 | 127 | elif 'proxies:' in sub_content: # 对 Clash 内容进行格式化处理 128 | try: 129 | try_load = yaml.safe_load(sub_content) 130 | if output: 131 | raise ValueError 132 | else: 133 | content_yaml_dic = try_load 134 | return content_yaml_dic # 返回字典, output 值为 True 时返回修饰过的 YAML 文本 135 | except Exception: 136 | try: 137 | sub_content = sub_content.replace('\'', '').replace('"', '') 138 | url_list = [] 139 | il_chars = ['|', '?', '[', ']', '@', '!', '%', ':'] 140 | lines = re.split(r'\n+', sub_content) 141 | line_fix_list = [] 142 | for line in lines: 143 | value_list = re.split(r': |, ', line) 144 | if len(value_list) > 6: 145 | value_list_fix = [] 146 | for value in value_list: 147 | for char in il_chars: 148 | value_il = False 149 | if char in value: 150 | value_il = True 151 | break 152 | if value_il == True and ('{' not in value and '}' not in value): 153 | value = '"' + value + '"' 154 | value_list_fix.append(value) 155 | elif value_il == True and '}' in value: 156 | if '}}}' in value: 157 | host_part = value.replace('}}}','') 158 | host_value = '"'+host_part+'"}}}' 159 | value_list_fix.append(host_value) 160 | elif '}}' not in value: 161 | host_part = value.replace('}','') 162 | host_value = '"'+host_part+'"}' 163 | value_list_fix.append(host_value) 164 | else: 165 | value_list_fix.append(value) 166 | line_fix = line 167 | for index in range(len(value_list_fix)): 168 | line_fix = line_fix.replace(value_list[index], value_list_fix[index]) 169 | line_fix_list.append(line_fix) 170 | elif len(value_list) == 2: 171 | value_list_fix = [] 172 | for value in value_list: 173 | for char in il_chars: 174 | value_il = False 175 | if char in value: 176 | value_il = True 177 | break 178 | if value_il == True: 179 | value = '"' + value + '"' 180 | value_list_fix.append(value) 181 | line_fix = line 182 | for index in range(len(value_list_fix)): 183 | line_fix = line_fix.replace(value_list[index], value_list_fix[index]) 184 | line_fix_list.append(line_fix) 185 | elif len(value_list) == 1: 186 | if ':' in line: 187 | line_fix_list.append(line) 188 | else: 189 | line_fix_list.append(line) 190 | 191 | sub_content = '\n'.join(line_fix_list).replace('False', 'false').replace('True', 'true') 192 | if output: 193 | return sub_content 194 | else: 195 | content_yaml_dic = yaml.safe_load(sub_content) 196 | return content_yaml_dic # 返回字典, output 值为 True 时返回修饰过的 YAML 文本 197 | except: 198 | print('Sub_content 格式错误') 199 | return '订阅内容解析错误' 200 | else: 201 | print('订阅内容解析错误') 202 | return '订阅内容解析错误' 203 | else: 204 | print('订阅内容解析错误') 205 | return '订阅内容解析错误' 206 | def makeup(input, dup_rm_enabled=False, format_name_enabled=False): # 输入节点配置字典, 对节点进行区域的筛选和重命名,输出 YAML 文本 207 | # 区域判断(Clash YAML): https://blog.csdn.net/CSDN_duomaomao/article/details/89712826 (ip-api) 208 | if isinstance(input, dict): 209 | sub_content = input 210 | else: 211 | sub_content = sub_convert.format(input) 212 | proxies_list = sub_content['proxies'] 213 | 214 | if dup_rm_enabled: # 去重 215 | begin = 0 216 | raw_length = len(proxies_list) 217 | length = len(proxies_list) 218 | while begin < length: 219 | if (begin + 1) == 1: 220 | print(f'\n-----去重开始-----\n起始数量{length}') 221 | elif (begin + 1) % 100 == 0: 222 | print(f'当前基准{begin + 1}-----当前数量{length}') 223 | elif (begin + 1) == length and (begin + 1) % 100 != 0: 224 | repetition = raw_length - length 225 | print(f'当前基准{begin + 1}-----当前数量{length}\n重复数量{repetition}\n-----去重完成-----\n') 226 | proxy_compared = proxies_list[begin] 227 | 228 | begin_2 = begin + 1 229 | while begin_2 <= (length - 1): 230 | 231 | if proxy_compared['server'] == proxies_list[begin_2]['server'] and proxy_compared['port'] == proxies_list[begin_2]['port']: 232 | proxies_list.pop(begin_2) 233 | length -= 1 234 | begin_2 += 1 235 | begin += 1 236 | 237 | url_list = [] 238 | 239 | for proxy in proxies_list: # 改名 240 | if format_name_enabled: 241 | emoji = { 242 | 'AD': '🇦🇩', 'AE': '🇦🇪', 'AF': '🇦🇫', 'AG': '🇦🇬', 243 | 'AI': '🇦🇮', 'AL': '🇦🇱', 'AM': '🇦🇲', 'AO': '🇦🇴', 244 | 'AQ': '🇦🇶', 'AR': '🇦🇷', 'AS': '🇦🇸', 'AT': '🇦🇹', 245 | 'AU': '🇦🇺', 'AW': '🇦🇼', 'AX': '🇦🇽', 'AZ': '🇦🇿', 246 | 'BA': '🇧🇦', 'BB': '🇧🇧', 'BD': '🇧🇩', 'BE': '🇧🇪', 247 | 'BF': '🇧🇫', 'BG': '🇧🇬', 'BH': '🇧🇭', 'BI': '🇧🇮', 248 | 'BJ': '🇧🇯', 'BL': '🇧🇱', 'BM': '🇧🇲', 'BN': '🇧🇳', 249 | 'BO': '🇧🇴', 'BQ': '🇧🇶', 'BR': '🇧🇷', 'BS': '🇧🇸', 250 | 'BT': '🇧🇹', 'BV': '🇧🇻', 'BW': '🇧🇼', 'BY': '🇧🇾', 251 | 'BZ': '🇧🇿', 'CA': '🇨🇦', 'CC': '🇨🇨', 'CD': '🇨🇩', 252 | 'CF': '🇨🇫', 'CG': '🇨🇬', 'CH': '🇨🇭', 'CI': '🇨🇮', 253 | 'CK': '🇨🇰', 'CL': '🇨🇱', 'CM': '🇨🇲', 'CN': '🇨🇳', 254 | 'CO': '🇨🇴', 'CR': '🇨🇷', 'CU': '🇨🇺', 'CV': '🇨🇻', 255 | 'CW': '🇨🇼', 'CX': '🇨🇽', 'CY': '🇨🇾', 'CZ': '🇨🇿', 256 | 'DE': '🇩🇪', 'DJ': '🇩🇯', 'DK': '🇩🇰', 'DM': '🇩🇲', 257 | 'DO': '🇩🇴', 'DZ': '🇩🇿', 'EC': '🇪🇨', 'EE': '🇪🇪', 258 | 'EG': '🇪🇬', 'EH': '🇪🇭', 'ER': '🇪🇷', 'ES': '🇪🇸', 259 | 'ET': '🇪🇹', 'EU': '🇪🇺', 'FI': '🇫🇮', 'FJ': '🇫🇯', 260 | 'FK': '🇫🇰', 'FM': '🇫🇲', 'FO': '🇫🇴', 'FR': '🇫🇷', 261 | 'GA': '🇬🇦', 'GB': '🇬🇧', 'GD': '🇬🇩', 'GE': '🇬🇪', 262 | 'GF': '🇬🇫', 'GG': '🇬🇬', 'GH': '🇬🇭', 'GI': '🇬🇮', 263 | 'GL': '🇬🇱', 'GM': '🇬🇲', 'GN': '🇬🇳', 'GP': '🇬🇵', 264 | 'GQ': '🇬🇶', 'GR': '🇬🇷', 'GS': '🇬🇸', 'GT': '🇬🇹', 265 | 'GU': '🇬🇺', 'GW': '🇬🇼', 'GY': '🇬🇾', 'HK': '🇭🇰', 266 | 'HM': '🇭🇲', 'HN': '🇭🇳', 'HR': '🇭🇷', 'HT': '🇭🇹', 267 | 'HU': '🇭🇺', 'ID': '🇮🇩', 'IE': '🇮🇪', 'IL': '🇮🇱', 268 | 'IM': '🇮🇲', 'IN': '🇮🇳', 'IO': '🇮🇴', 'IQ': '🇮🇶', 269 | 'IR': '🇮🇷', 'IS': '🇮🇸', 'IT': '🇮🇹', 'JE': '🇯🇪', 270 | 'JM': '🇯🇲', 'JO': '🇯🇴', 'JP': '🇯🇵', 'KE': '🇰🇪', 271 | 'KG': '🇰🇬', 'KH': '🇰🇭', 'KI': '🇰🇮', 'KM': '🇰🇲', 272 | 'KN': '🇰🇳', 'KP': '🇰🇵', 'KR': '🇰🇷', 'KW': '🇰🇼', 273 | 'KY': '🇰🇾', 'KZ': '🇰🇿', 'LA': '🇱🇦', 'LB': '🇱🇧', 274 | 'LC': '🇱🇨', 'LI': '🇱🇮', 'LK': '🇱🇰', 'LR': '🇱🇷', 275 | 'LS': '🇱🇸', 'LT': '🇱🇹', 'LU': '🇱🇺', 'LV': '🇱🇻', 276 | 'LY': '🇱🇾', 'MA': '🇲🇦', 'MC': '🇲🇨', 'MD': '🇲🇩', 277 | 'ME': '🇲🇪', 'MF': '🇲🇫', 'MG': '🇲🇬', 'MH': '🇲🇭', 278 | 'MK': '🇲🇰', 'ML': '🇲🇱', 'MM': '🇲🇲', 'MN': '🇲🇳', 279 | 'MO': '🇲🇴', 'MP': '🇲🇵', 'MQ': '🇲🇶', 'MR': '🇲🇷', 280 | 'MS': '🇲🇸', 'MT': '🇲🇹', 'MU': '🇲🇺', 'MV': '🇲🇻', 281 | 'MW': '🇲🇼', 'MX': '🇲🇽', 'MY': '🇲🇾', 'MZ': '🇲🇿', 282 | 'NA': '🇳🇦', 'NC': '🇳🇨', 'NE': '🇳🇪', 'NF': '🇳🇫', 283 | 'NG': '🇳🇬', 'NI': '🇳🇮', 'NL': '🇳🇱', 'NO': '🇳🇴', 284 | 'NP': '🇳🇵', 'NR': '🇳🇷', 'NU': '🇳🇺', 'NZ': '🇳🇿', 285 | 'OM': '🇴🇲', 'PA': '🇵🇦', 'PE': '🇵🇪', 'PF': '🇵🇫', 286 | 'PG': '🇵🇬', 'PH': '🇵🇭', 'PK': '🇵🇰', 'PL': '🇵🇱', 287 | 'PM': '🇵🇲', 'PN': '🇵🇳', 'PR': '🇵🇷', 'PS': '🇵🇸', 288 | 'PT': '🇵🇹', 'PW': '🇵🇼', 'PY': '🇵🇾', 'QA': '🇶🇦', 289 | 'RE': '🇷🇪', 'RO': '🇷🇴', 'RS': '🇷🇸', 'RU': '🇷🇺', 290 | 'RW': '🇷🇼', 'SA': '🇸🇦', 'SB': '🇸🇧', 'SC': '🇸🇨', 291 | 'SD': '🇸🇩', 'SE': '🇸🇪', 'SG': '🇸🇬', 'SH': '🇸🇭', 292 | 'SI': '🇸🇮', 'SJ': '🇸🇯', 'SK': '🇸🇰', 'SL': '🇸🇱', 293 | 'SM': '🇸🇲', 'SN': '🇸🇳', 'SO': '🇸🇴', 'SR': '🇸🇷', 294 | 'SS': '🇸🇸', 'ST': '🇸🇹', 'SV': '🇸🇻', 'SX': '🇸🇽', 295 | 'SY': '🇸🇾', 'SZ': '🇸🇿', 'TC': '🇹🇨', 'TD': '🇹🇩', 296 | 'TF': '🇹🇫', 'TG': '🇹🇬', 'TH': '🇹🇭', 'TJ': '🇹🇯', 297 | 'TK': '🇹🇰', 'TL': '🇹🇱', 'TM': '🇹🇲', 'TN': '🇹🇳', 298 | 'TO': '🇹🇴', 'TR': '🇹🇷', 'TT': '🇹🇹', 'TV': '🇹🇻', 299 | 'TW': '🇹🇼', 'TZ': '🇹🇿', 'UA': '🇺🇦', 'UG': '🇺🇬', 300 | 'UM': '🇺🇲', 'US': '🇺🇸', 'UY': '🇺🇾', 'UZ': '🇺🇿', 301 | 'VA': '🇻🇦', 'VC': '🇻🇨', 'VE': '🇻🇪', 'VG': '🇻🇬', 302 | 'VI': '🇻🇮', 'VN': '🇻🇳', 'VU': '🇻🇺', 'WF': '🇼🇫', 303 | 'WS': '🇼🇸', 'XK': '🇽🇰', 'YE': '🇾🇪', 'YT': '🇾🇹', 304 | 'ZA': '🇿🇦', 'ZM': '🇿🇲', 'ZW': '🇿🇼', 305 | 'RELAY': '🏁', 306 | 'NOWHERE': '🇦🇶', 307 | } 308 | 309 | server = proxy['server'] 310 | if server.replace('.','').isdigit(): 311 | ip = server 312 | else: 313 | try: 314 | ip = socket.gethostbyname(server) # https://cloud.tencent.com/developer/article/1569841 315 | except Exception: 316 | ip = server 317 | 318 | with geoip2.database.Reader(countrymmdb_file) as ip_reader: 319 | try: 320 | response = ip_reader.country(ip) 321 | country_code = response.country.iso_code 322 | except Exception: 323 | ip = '0.0.0.0' 324 | country_code = 'NOWHERE' 325 | 326 | if country_code == 'CLOUDFLARE': 327 | country_code = 'RELAY' 328 | elif country_code == 'PRIVATE': 329 | country_code = 'RELAY' 330 | 331 | if country_code in emoji: 332 | name_emoji = emoji[country_code] 333 | else: 334 | name_emoji = emoji['NOWHERE'] 335 | 336 | proxy_index = proxies_list.index(proxy) 337 | if len(proxies_list) >= 999: 338 | proxy['name'] = f'{name_emoji}{country_code}-{ip}-{proxy_index:0>4d}' 339 | elif len(proxies_list) <= 999 and len(proxies_list) > 99: 340 | proxy['name'] = f'{name_emoji}{country_code}-{ip}-{proxy_index:0>3d}' 341 | elif len(proxies_list) <= 99: 342 | proxy['name'] = f'{name_emoji}{country_code}-{ip}-{proxy_index:0>2d}' 343 | 344 | if proxy['server'] != '127.0.0.1': 345 | proxy_str = str(proxy) 346 | url_list.append(proxy_str) 347 | elif format_name_enabled == False: 348 | if proxy['server'] != '127.0.0.1': # 防止加入无用节点 349 | proxy_str = str(proxy) 350 | url_list.append(proxy_str) 351 | 352 | yaml_content_dic = {'proxies': url_list} 353 | yaml_content_raw = yaml.dump(yaml_content_dic, default_flow_style=False, sort_keys=False, allow_unicode=True, width=750, indent=2) # yaml.dump 显示中文方法 https://blog.csdn.net/weixin_41548578/article/details/90651464 yaml.dump 各种参数 https://blog.csdn.net/swinfans/article/details/88770119 354 | yaml_content = sub_convert.format(yaml_content_raw,output=True) 355 | 356 | return yaml_content # 输出 YAML 格式文本 357 | 358 | def yaml_encode(url_content,output=True): # 将 URL 内容转换为 YAML 文本, output 为 False 时输出节点配置字典 359 | url_list = [] 360 | 361 | lines = re.split(r'\n+', url_content) 362 | 363 | for line in lines: 364 | yaml_url = {} 365 | if 'vmess://' in line: 366 | try: 367 | vmess_json_config = json.loads(sub_convert.base64_decode(line.replace('vmess://', ''))) 368 | vmess_default_config = { 369 | 'v': 'Vmess Node', 'ps': 'Vmess Node', 'add': '0.0.0.0', 'port': 0, 'id': '', 370 | 'aid': 0, 'scy': 'auto', 'net': '', 'type': '', 'host': vmess_json_config['add'], 'path': '/', 'tls': '' 371 | } 372 | vmess_default_config.update(vmess_json_config) 373 | vmess_config = vmess_default_config 374 | 375 | yaml_url = {} 376 | #yaml_config_str = ['name', 'server', 'port', 'type', 'uuid', 'alterId', 'cipher', 'tls', 'skip-cert-verify', 'network', 'ws-path', 'ws-headers'] 377 | #vmess_config_str = ['ps', 'add', 'port', 'id', 'aid', 'scy', 'tls', 'net', 'host', 'path'] 378 | # 生成 yaml 节点字典 379 | if vmess_config['id'] == '' or vmess_config['id'] is None: 380 | print('节点格式错误') 381 | else: 382 | yaml_url.setdefault('name', urllib.parse.unquote(str(vmess_config['ps']))) 383 | yaml_url.setdefault('server', vmess_config['add']) 384 | yaml_url.setdefault('port', int(vmess_config['port'])) 385 | yaml_url.setdefault('type', 'vmess') 386 | yaml_url.setdefault('uuid', vmess_config['id']) 387 | yaml_url.setdefault('alterId', int(vmess_config['aid'])) 388 | yaml_url.setdefault('cipher', vmess_config['scy']) 389 | yaml_url.setdefault('skip-cert-vertify', True) 390 | if vmess_config['net'] == '' or vmess_config['net'] is False or vmess_config['net'] is None: 391 | yaml_url.setdefault('network', 'tcp') 392 | else: 393 | yaml_url.setdefault('network', vmess_config['net']) 394 | if vmess_config['net'] == 'h2' or vmess_config['net'] == 'grpc': 395 | yaml_url.setdefault('tls', True) 396 | elif vmess_config['tls'] == '' or vmess_config['tls'] is False or vmess_config['tls'] is None: 397 | yaml_url.setdefault('tls', False) 398 | else: 399 | yaml_url.setdefault('tls', True) 400 | yaml_url.setdefault('ws-opts', {}) 401 | if vmess_config['path'] == '' or vmess_config['path'] is False or vmess_config['path'] is None: 402 | yaml_url['ws-opts'].setdefault('path', '/') 403 | else: 404 | yaml_url['ws-opts'].setdefault('path', vmess_config['path']) 405 | if vmess_config['host'] == '': 406 | yaml_url['ws-opts'].setdefault('headers', {'Host': vmess_config['add']}) 407 | else: 408 | yaml_url['ws-opts'].setdefault('headers', {'Host': vmess_config['host']}) 409 | 410 | url_list.append(yaml_url) 411 | except Exception as err: 412 | print(f'yaml_encode 解析 vmess 节点发生错误: {err}') 413 | pass 414 | 415 | if 'ss://' in line and 'vless://' not in line and 'vmess://' not in line: 416 | if '#' not in line: 417 | line = line + '#SS%20Node' 418 | try: 419 | ss_content = line.replace('ss://', '') 420 | part_list = ss_content.split('#', 1) # https://www.runoob.com/python/att-string-split.html 421 | yaml_url.setdefault('name', urllib.parse.unquote(part_list[1])) 422 | if '@' in part_list[0]: 423 | mix_part = part_list[0].split('@', 1) 424 | method_part = sub_convert.base64_decode(mix_part[0]) 425 | server_part = f'{method_part}@{mix_part[1]}' 426 | else: 427 | server_part = sub_convert.base64_decode(part_list[0]) 428 | 429 | server_part_list = server_part.split(':', 1) # 使用多个分隔符 https://blog.csdn.net/shidamowang/article/details/80254476 https://zhuanlan.zhihu.com/p/92287240 430 | method_part = server_part_list[0] 431 | server_part_list = server_part_list[1].rsplit('@', 1) 432 | password_part = server_part_list[0] 433 | server_part_list = server_part_list[1].split(':', 1) 434 | 435 | yaml_url.setdefault('server', server_part_list[0]) 436 | yaml_url.setdefault('port', server_part_list[1]) 437 | yaml_url.setdefault('type', 'ss') 438 | yaml_url.setdefault('cipher', method_part) 439 | yaml_url.setdefault('password', password_part) 440 | 441 | url_list.append(yaml_url) 442 | except Exception as err: 443 | print(f'yaml_encode 解析 ss 节点发生错误: {err}') 444 | pass 445 | 446 | if 'ssr://' in line: 447 | try: 448 | ssr_content = sub_convert.base64_decode(line.replace('ssr://', '')) 449 | 450 | parts = re.split(':', ssr_content) 451 | if len(parts) != 6: 452 | print('SSR 格式错误: %s' % ssr_content) 453 | password_and_params = parts[5] 454 | password_and_params = re.split('/\?', password_and_params) 455 | password_encode_str = password_and_params[0] 456 | params = password_and_params[1] 457 | 458 | param_parts = re.split('\&', params) 459 | param_dic = {'remarks': 'U1NSIE5vZGU=','obfsparam': '','protoparam': '','group': ''} 460 | for part in param_parts: 461 | key_and_value = re.split('\=', part) 462 | param_dic.update({key_and_value[0]: key_and_value[1]}) 463 | yaml_url.setdefault('name', sub_convert.base64_decode(param_dic['remarks'])) 464 | yaml_url.setdefault('server', parts[0]) 465 | yaml_url.setdefault('port', parts[1]) 466 | yaml_url.setdefault('type', 'ssr') 467 | yaml_url.setdefault('cipher', parts[3]) 468 | yaml_url.setdefault('password', sub_convert.base64_decode(password_encode_str)) 469 | yaml_url.setdefault('obfs', parts[4]) 470 | yaml_url.setdefault('protocol', parts[2]) 471 | yaml_url.setdefault('obfsparam', sub_convert.base64_decode(param_dic['obfsparam'])) 472 | yaml_url.setdefault('protoparam', sub_convert.base64_decode(param_dic['protoparam'])) 473 | yaml_url.setdefault('group', sub_convert.base64_decode(param_dic['group'])) 474 | 475 | url_list.append(yaml_url) 476 | except Exception as err: 477 | print(f'yaml_encode 解析 ssr 节点发生错误: {err}') 478 | pass 479 | 480 | if 'trojan://' in line: 481 | try: 482 | url_content = line.replace('trojan://', '') 483 | part_list = re.split('#', url_content, maxsplit=1) # https://www.runoob.com/python/att-string-split.html 484 | yaml_url.setdefault('name', urllib.parse.unquote(part_list[1])) 485 | 486 | server_part = part_list[0].replace('trojan://', '') 487 | server_part_list = re.split(':|@|\?|&', server_part) # 使用多个分隔符 https://blog.csdn.net/shidamowang/article/details/80254476 https://zhuanlan.zhihu.com/p/92287240 488 | yaml_url.setdefault('server', server_part_list[1]) 489 | yaml_url.setdefault('port', server_part_list[2]) 490 | yaml_url.setdefault('type', 'trojan') 491 | yaml_url.setdefault('password', server_part_list[0]) 492 | server_part_list = server_part_list[3:] 493 | 494 | for config in server_part_list: 495 | if 'sni=' in config: 496 | yaml_url.setdefault('sni', config[4:]) 497 | elif 'allowInsecure=' in config or 'tls=' in config: 498 | if config[-1] == 0: 499 | yaml_url.setdefault('tls', False) 500 | elif 'type=' in config: 501 | if config[5:] != 'tcp': 502 | yaml_url.setdefault('network', config[5:]) 503 | elif 'path=' in config: 504 | yaml_url.setdefault('ws-path', config[5:]) 505 | elif 'security=' in config: 506 | if config[9:] != 'tls': 507 | yaml_url.setdefault('tls', False) 508 | 509 | yaml_url.setdefault('skip-cert-verify', True) 510 | 511 | url_list.append(yaml_url) 512 | except Exception as err: 513 | print(f'yaml_encode 解析 trojan 节点发生错误: {err}') 514 | pass 515 | 516 | yaml_content_dic = {'proxies': url_list} 517 | if output: 518 | yaml_content = yaml.dump(yaml_content_dic, default_flow_style=False, sort_keys=False, allow_unicode=True, width=750, indent=2) 519 | else: 520 | yaml_content = yaml_content_dic 521 | return yaml_content 522 | def base64_encode(url_content): # 将 URL 内容转换为 Base64 523 | if url_content == None: 524 | url_content = '' 525 | base64_content = base64.b64encode(url_content.encode('utf-8')).decode('ascii') 526 | return base64_content 527 | 528 | def yaml_decode(url_content): # YAML 文本转换为 URL 链接内容 529 | try: 530 | if isinstance(url_content, dict): 531 | sub_content = url_content 532 | else: 533 | sub_content = sub_convert.format(url_content) 534 | proxies_list = sub_content['proxies'] 535 | 536 | protocol_url = [] 537 | for index in range(len(proxies_list)): # 不同节点订阅链接内容 https://github.com/hoochanlon/fq-book/blob/master/docs/append/srvurl.md 538 | proxy = proxies_list[index] 539 | 540 | if proxy['type'] == 'vmess': # Vmess 节点提取, 由 Vmess 所有参数 dump JSON 后 base64 encode 得来。 541 | 542 | yaml_default_config = { 543 | 'name': 'Vmess Node', 'server': '0.0.0.0', 'port': 0, 'uuid': '', 'alterId': 0, 544 | 'cipher': 'auto', 'network': 'ws', 'ws-opts': {'path': '/', 'headers': {'Host': proxy['server']}}, 545 | 'tls': '', 'sni': '' 546 | } 547 | 548 | yaml_default_config.update(proxy) 549 | proxy_config = yaml_default_config 550 | 551 | vmess_value = { 552 | 'v': 2, 'ps': proxy_config['name'], 'add': proxy_config['server'], 553 | 'port': proxy_config['port'], 'id': proxy_config['uuid'], 'aid': proxy_config['alterId'], 554 | 'scy': proxy_config['cipher'], 'net': proxy_config['network'], 'type': None, 'host': proxy_config['ws-opts']['headers']['Host'], 555 | 'path': proxy_config['ws-opts']['path'], 'tls': proxy_config['tls'], 'sni': proxy_config['sni'] 556 | } 557 | 558 | vmess_raw_proxy = json.dumps(vmess_value, sort_keys=False, indent=2, ensure_ascii=False) 559 | vmess_proxy = str('vmess://' + sub_convert.base64_encode(vmess_raw_proxy) + '\n') 560 | protocol_url.append(vmess_proxy) 561 | 562 | elif proxy['type'] == 'ss': # SS 节点提取, 由 ss_base64_decoded 部分(参数: 'cipher', 'password', 'server', 'port') Base64 编码后 加 # 加注释(URL_encode) 563 | ss_base64_decoded = str(proxy['cipher']) + ':' + str(proxy['password']) + '@' + str(proxy['server']) + ':' + str(proxy['port']) 564 | ss_base64 = sub_convert.base64_encode(ss_base64_decoded) 565 | ss_proxy = str('ss://' + ss_base64 + '#' + str(urllib.parse.quote(proxy['name'])) + '\n') 566 | protocol_url.append(ss_proxy) 567 | 568 | elif proxy['type'] == 'trojan': # Trojan 节点提取, 由 trojan_proxy 中参数再加上 # 加注释(URL_encode) # trojan Go https://p4gefau1t.github.io/trojan-go/developer/url/ 569 | if 'tls' in proxy.keys() and 'network' in proxy.keys(): 570 | if proxy['tls'] == True and proxy['network'] != 'tcp': 571 | network_type = proxy['network'] 572 | trojan_go = f'?security=tls&type={network_type}&headerType=none' 573 | elif proxy['tls'] == False and proxy['network'] != 'tcp': 574 | trojan_go = f'??allowInsecure=0&type={network_type}&headerType=none' 575 | else: 576 | trojan_go = '?allowInsecure=1' 577 | if 'sni' in proxy.keys(): 578 | trojan_go = trojan_go+'&sni='+proxy['sni'] 579 | trojan_proxy = str('trojan://' + str(proxy['password']) + '@' + str(proxy['server']) + ':' + str(proxy['port']) + trojan_go + '#' + str(urllib.parse.quote(proxy['name'])) + '\n') 580 | protocol_url.append(trojan_proxy) 581 | 582 | elif proxy['type'] == 'ssr': # ssr 节点提取, 由 ssr_base64_decoded 中所有参数总体 base64 encode 583 | ssr_default_config = {} 584 | remarks = sub_convert.base64_encode(proxy['name']).replace('+', '-') 585 | server = proxy['server'] 586 | port = str(proxy['port']) 587 | password = sub_convert.base64_encode(proxy['password']) 588 | cipher = proxy['cipher'] 589 | protocol = proxy['protocol'] 590 | obfs = proxy['obfs'] 591 | param_dic = {'group': 'U1NSUHJvdmlkZXI', 'obfsparam':'', 'protoparam':''} 592 | for key in param_dic.keys(): 593 | try: 594 | param_dic.update({key: sub_convert.base64_encode(proxy[key])}) 595 | except Exception: 596 | pass 597 | group, obfsparam, protoparam = param_dic['group'], param_dic['obfsparam'], param_dic['protoparam'] 598 | """ 599 | for key in {'group', 'obfsparam', 'protoparam'}: 600 | if key in proxy: 601 | if key == 'group': 602 | group = sub_convert.base64_encode(proxy[key]) 603 | elif key == 'obfsparam': 604 | obfsparam = sub_convert.base64_encode(proxy[key]) 605 | elif key == 'protoparam': 606 | protoparam = sub_convert.base64_encode(proxy[key]) 607 | else: 608 | if key == 'group': 609 | group = 'U1NSUHJvdmlkZXI' 610 | elif key == 'obfsparam': 611 | obfsparam = '' 612 | elif key == 'protoparam': 613 | protoparam = '' 614 | """ 615 | 616 | ssr_proxy = 'ssr://'+sub_convert.base64_encode(server+':'+port+':'+protocol+':'+cipher+':'+obfs+':'+password+'/?group='+group+'&remarks='+remarks+'&obfsparam='+obfsparam+'&protoparam='+protoparam+'\n') 617 | protocol_url.append(ssr_proxy) 618 | 619 | yaml_content = ''.join(protocol_url) 620 | return yaml_content 621 | except Exception as err: 622 | print(f'yaml decode 发生 {err} 错误') 623 | return '订阅内容解析错误' 624 | def base64_decode(url_content): # Base64 转换为 URL 链接内容 625 | if '-' in url_content: 626 | url_content = url_content.replace('-', '+') 627 | if '_' in url_content: 628 | url_content = url_content.replace('_', '/') 629 | #print(len(url_content)) 630 | missing_padding = len(url_content) % 4 631 | if missing_padding != 0: 632 | url_content += '='*(4 - missing_padding) # 不是4的倍数后加= https://www.cnblogs.com/wswang/p/7717997.html 633 | try: 634 | base64_content = base64.b64decode(url_content.encode('utf-8')).decode('utf-8','ignore') # https://www.codenong.com/42339876/ 635 | base64_content_format = base64_content 636 | return base64_content_format 637 | except UnicodeDecodeError: 638 | base64_content = base64.b64decode(url_content) 639 | base64_content_format = base64_content 640 | return str(base64_content) 641 | 642 | # 使用远程订阅转换服务,输出相应配置,默认输出clash订阅格式 643 | # 注意 订阅地址必须是base64,或者yaml,(直接是url节点内容的话,会解析错误) 644 | def convert_remote(url='', output_type='clash', host='http://127.0.0.1:25500',configUrl = config_url): 645 | #url='订阅链接', 646 | #output_type={'clash': 输出可以订阅的Clash配置, 'base64': 输出 Base64 配置, 'url': 输出 url 配置, 'YAML': 输出 YAML 配置}, 647 | #host='远程订阅转化服务地址',configUrl转clash订阅时用 648 | sever_host = host 649 | url = urllib.parse.quote(url, safe='') # https://docs.python.org/zh-cn/3/library/urllib.parse.html 650 | if output_type == 'clash': 651 | converted_url = sever_host+'/sub?target=clash&url='+url+'&insert=false&config='+configUrl+'&emoji=true' 652 | print('\n'+converted_url+'\n') 653 | try: 654 | resp = requests.get(converted_url) 655 | print(resp) 656 | except Exception as err: 657 | print(err) 658 | return 'Url 解析错误' 659 | if resp.text == 'No nodes were found!': 660 | sub_content = 'Url 解析错误' 661 | print('Url 解析错误: No nodes were found!\n') 662 | else: 663 | sub_content = resp.text 664 | elif output_type == 'base64': 665 | converted_url = sever_host+'/sub?target=mixed&url='+url+'&insert=false&emoji=true&list=true' 666 | try: 667 | resp = requests.get(converted_url) 668 | except Exception as err: 669 | print(err) 670 | return 'Url 解析错误' 671 | if resp.text == 'No nodes were found!': 672 | sub_content = 'Url 解析错误' 673 | print('Url 解析错误: No nodes were found!\n') 674 | else: 675 | sub_content = sub_convert.base64_encode(resp.text) 676 | elif output_type == 'url': 677 | converted_url = sever_host+'/sub?target=mixed&url='+url+'&insert=false&emoji=true&list=true' 678 | try: 679 | resp = requests.get(converted_url) 680 | except Exception as err: 681 | print(err) 682 | return 'Url 解析错误' 683 | if resp.text == 'No nodes were found!': 684 | sub_content = 'Url 解析错误' 685 | print('Url 解析错误: No nodes were found!\n') 686 | else: 687 | sub_content = resp.text 688 | elif output_type == 'YAML': 689 | converted_url = sever_host+'/sub?target=clash&url='+url+'&insert=false&emoji=true&list=true' 690 | try: 691 | resp = requests.get(converted_url) 692 | except Exception as err: 693 | print(err) 694 | return 'Url 解析错误' 695 | if resp.text == 'No nodes were found!': 696 | sub_content = 'Url 解析错误' 697 | print('Url 解析错误: No nodes were found!\n') 698 | else: 699 | sub_content = sub_convert.makeup(sub_convert.format(resp.text), dup_rm_enabled=False, format_name_enabled=True) 700 | 701 | return sub_content 702 | 703 | # 读取可用的URLhost(在线订阅转换地址) 704 | # 要转换的订阅地址必须是网络订阅才可用使用网络URLhost,本地订阅文件获取不到数据 705 | def use_urlhost(url=url_host): 706 | s = requests.Session() # 用requests.session()创建session对象,相当于创建了一个空的会话框,准备保持cookies。 707 | s.mount('http://', HTTPAdapter(max_retries=2)) # 重试次数为2 708 | s.mount('https://', HTTPAdapter(max_retries=2)) # 重试次数为2 709 | for index in url: 710 | try: 711 | resp = s.get(index, timeout=2) # 超时时间为2s 712 | status = resp.status_code # 状态码赋值200? 713 | except Exception: 714 | status = 404 715 | if status == 200: 716 | print('url host use =='+index+'\n') 717 | return index 718 | else: 719 | print('\n'+index+' :url host is bad,please use new url!...\n') 720 | 721 | print('oh,my god ,all url host are bad,sorry no work!...\n') 722 | return 'bad url Host' 723 | if __name__ == '__main__': 724 | subscribe = 'https://raw.githubusercontent.com/rxsweet/fetchProxy/main/sub/rx64' 725 | output_path = './output.yml' 726 | sub_convert.use_urlhost() 727 | content = sub_convert.convert_remote(subscribe,'clash',sub_convert.use_urlhost()) 728 | 729 | file = open(output_path, 'w', encoding= 'utf-8') 730 | file.write(content) 731 | file.close() 732 | print(f'Writing content to output.yml\n') 733 | -------------------------------------------------------------------------------- /utils/checkUrllist/urllist2sub.py: -------------------------------------------------------------------------------- 1 | import re, yaml 2 | import time, os 3 | from tqdm import tqdm #进度条库 4 | import threading #线程 5 | from ip_update import geoip_update # 更新ip库Country.mmdb 6 | from sub_convert import sub_convert 7 | 8 | #源文件 9 | urllistfile = './config/sublist_mining' 10 | #输出订阅文件位置 11 | outputUrlSub_path = './sub/miningUrl' 12 | outputBase64Sub_path = './sub/miningUrl64' 13 | outputClashSub_path = './sub/miningClash.yml' 14 | 15 | #code begin 16 | 17 | def sub_to_url(url,bar,allProxy): #将url订阅内容append到allProxy列表,并完成进度bar 18 | if 'http' in url: 19 | subContent =sub_convert.convert_remote(url,'url') 20 | allProxy.append(subContent) 21 | bar.update(1) 22 | 23 | # 写入文件模块 24 | def write_file(file,content): 25 | f = open(file, 'w', encoding= 'utf-8') 26 | f.write(content) 27 | f.close() 28 | 29 | 30 | def urlListToSub(urllistfile): #将url订阅列表内容转换成url,base64,clash文件保存 31 | 32 | #打开url列表文件 33 | file_urllist = open(urllistfile, 'r', encoding='utf-8') 34 | urllist_content = file_urllist.read() 35 | file_urllist.close() 36 | 37 | #打开url列表文件内容,以行为单位存放到line列表 38 | lines = re.split(r'\n+',urllist_content) 39 | allProxy = [] 40 | 41 | #计算打印url总数 42 | lenlines =len(lines) 43 | print('airport total == '+str(lenlines)+'\n') 44 | 45 | #Semaphore 是用于控制进入数量的锁,控制同时进行的线程,内部是基于Condition来进行实现的 46 | #https://www.cnblogs.com/callyblog/p/11147456.html 47 | #文件, 读、写, 写一般只是用于一个线程写,读可以允许有多个 48 | thread_max_num =threading.Semaphore(lenlines) 49 | 50 | #进度条添加 51 | bar = tqdm(total=lenlines, desc='订阅获取:') 52 | thread_list = [] 53 | 54 | for line in lines: 55 | #为每个新URL创建线程 56 | t = threading.Thread(target=sub_to_url, args=(line,bar,allProxy)) 57 | #加入线程池 58 | thread_list.append(t) 59 | #setDaemon()线程守护,配合下面的一组for...t.join(),实现所有线程执行结束后,才开始执行下面代码 60 | t.setDaemon(True) #python多线程之t.setDaemon(True) 和 t.join() https://www.cnblogs.com/my8100/p/7366567.html 61 | #启动 62 | t.start() 63 | 64 | #等待所有线程完成,配合上面的t.setDaemon(True) 65 | for t in thread_list: 66 | t.join() 67 | bar.close() #进度条结束 68 | 69 | # 将列表内容,以行写入字符串? 70 | ownallProxy = '\n'.join(allProxy) 71 | 72 | 73 | #开始写入文件 74 | # 写入url 订阅文件 75 | print('write miningUrl content!') 76 | write_file(outputUrlSub_path,ownallProxy) 77 | 78 | # 写入base64 订阅文件 79 | print('write miningUrl64 content!') 80 | subContent = sub_convert.base64_encode(ownallProxy) 81 | write_file(outputBase64Sub_path,subContent) 82 | 83 | # 写入Clash 订阅文件 84 | print('write miningClash content!') 85 | good_file_path = os.path.abspath(outputBase64Sub_path) 86 | print('mining_file_path =' + good_file_path) 87 | content = sub_convert.convert_remote(good_file_path,'clash') 88 | write_file(outputClashSub_path,content) 89 | 90 | 91 | if __name__ == '__main__': 92 | #更新IP库 93 | geoip_update() 94 | urlListToSub(urllistfile) 95 | -------------------------------------------------------------------------------- /utils/checkUrllist/urllist2sub.py.bak: -------------------------------------------------------------------------------- 1 | import re, yaml 2 | import time, os 3 | from tqdm import tqdm #进度条库 4 | import threading #线程 5 | from ip_update import geoip_update # 更新ip库Country.mmdb 6 | from sub_convert import sub_convert 7 | 8 | #源文件 9 | urllistfile = './config/sublist_mining' 10 | #输出订阅文件位置 11 | outputUrlSub_path = './sub/miningUrl' 12 | outputBase64Sub_path = './sub/miningUrl64' 13 | outputClashSub_path = './sub/miningClash.yml' 14 | #转YAML需要用到的config.yml文件 15 | config_file = './config/provider/config.yml' 16 | 17 | class NoAliasDumper(yaml.SafeDumper): # https://ttl255.com/yaml-anchors-and-aliases-and-how-to-disable-them/ 18 | def ignore_aliases(self, data): 19 | return True 20 | 21 | def eternity_convert(file, config, output, provider_file_enabled=True): 22 | 23 | file_eternity = open(file, 'r', encoding='utf-8') 24 | sub_content = file_eternity.read() 25 | file_eternity.close() 26 | all_provider = sub_convert.main(sub_content,'content','YAML',custom_set={'dup_rm_enabled': True,'format_name_enabled': True}) 27 | 28 | # 创建并写入 provider 29 | lines = re.split(r'\n+', all_provider) 30 | 31 | all_proxy = [] 32 | hk_proxy = [] 33 | jp_proxy = [] 34 | sg_proxy = [] 35 | others_proxy = [] 36 | 37 | for line in lines: 38 | if line != 'proxies:' and 'plugin' not in line: 39 | line = ' ' + line 40 | all_proxy.append(line) 41 | if 'HK' in line or '香港' in line: 42 | hk_proxy.append(line) 43 | elif 'JP' in line or '日本' in line: 44 | jp_proxy.append(line) 45 | elif 'SG' in line or '新加坡' in line: 46 | sg_proxy.append(line) 47 | else: 48 | others_proxy.append(line) 49 | allproxy_provider = 'proxies:\n' + '\n'.join(all_proxy) 50 | hk_provider = 'proxies:\n' + '\n'.join(hk_proxy) 51 | jp_provider = 'proxies:\n' + '\n'.join(jp_proxy) 52 | sg_provider = 'proxies:\n' + '\n'.join(sg_proxy) 53 | others_provider = 'proxies:\n' + '\n'.join(others_proxy) 54 | 55 | eternity_providers = { 56 | 'all': allproxy_provider, 57 | 'hk': hk_provider, 58 | 'jp': jp_provider, 59 | 'sg': sg_provider, 60 | 'others': others_provider 61 | } 62 | 63 | # 创建完全配置的Eternity.yml 64 | config_f = open(config_file, 'r', encoding='utf-8') 65 | config_raw = config_f.read() 66 | config_f.close() 67 | 68 | config = yaml.safe_load(config_raw) 69 | all_provider_dic = {'proxies': []} 70 | hk_provider_dic = {'proxies': []} 71 | jp_provider_dic = {'proxies': []} 72 | sg_provider_dic = {'proxies': []} 73 | others_provider_dic = {'proxies': []} 74 | 75 | provider_dic = { 76 | 'all': all_provider_dic, 77 | 'hk': hk_provider_dic, 78 | 'jp': jp_provider_dic, 79 | 'sg': sg_provider_dic, 80 | 'others': others_provider_dic 81 | } 82 | for key in eternity_providers.keys(): # 将节点转换为字典形式 83 | provider_load = yaml.safe_load(eternity_providers[key]) 84 | provider_dic[key].update(provider_load) 85 | 86 | # 创建节点名列表 87 | all_name = [] 88 | hk_name = [] 89 | jp_name = [] 90 | sg_name = [] 91 | others_name = [] 92 | 93 | name_dict = { 94 | 'all': all_name, 95 | 'hk': hk_name, 96 | 'jp': jp_name, 97 | 'sg': sg_name, 98 | 'others': others_name 99 | } 100 | for key in provider_dic.keys(): 101 | if not provider_dic[key]['proxies'] is None: 102 | for proxy in provider_dic[key]['proxies']: 103 | name_dict[key].append(proxy['name']) 104 | if provider_dic[key]['proxies'] is None: 105 | name_dict[key].append('DIRECT') 106 | # 策略分组添加节点名 107 | proxy_groups = config['proxy-groups'] 108 | proxy_group_fill = [] 109 | for rule in proxy_groups: 110 | if rule['proxies'] is None: # 不是空集加入待加入名称列表 111 | proxy_group_fill.append(rule['name']) 112 | for rule_name in proxy_group_fill: 113 | for rule in proxy_groups: 114 | if rule['name'] == rule_name: 115 | rule.update({'proxies': all_name}) 116 | 117 | if '香港' in rule_name: 118 | rule.update({'proxies': hk_name}) 119 | elif '日本' in rule_name: 120 | rule.update({'proxies': jp_name}) 121 | elif '狮城' in rule_name or '新加坡' in rule_name: 122 | rule.update({'proxies': sg_name}) 123 | elif '其他节点' in rule_name: 124 | rule.update({'proxies': others_name}) 125 | else: 126 | rule.update({'proxies': all_name}) 127 | 128 | config.update(all_provider_dic) 129 | config.update({'proxy-groups': proxy_groups}) 130 | 131 | config_yaml = yaml.dump(config, default_flow_style=False, sort_keys=False, allow_unicode=True, width=750, indent=2, Dumper=NoAliasDumper) 132 | 133 | Eternity_yml = open(output, 'w+', encoding='utf-8') 134 | Eternity_yml.write(config_yaml) 135 | Eternity_yml.close() 136 | 137 | def sub_to_url(url,bar,allProxy): #将url订阅内容append到allProxy列表,并完成进度bar 138 | if 'http' in url: 139 | subContent =sub_convert.convert_remote(url,'url','http://127.0.0.1:25500') 140 | allProxy.append(subContent) 141 | bar.update(1) 142 | 143 | 144 | def urlListToSub(urllistfile): #将url订阅列表内容转换成url,base64,clash文件保存 145 | 146 | #打开url列表文件 147 | file_urllist = open(urllistfile, 'r', encoding='utf-8') 148 | urllist_content = file_urllist.read() 149 | file_urllist.close() 150 | 151 | #打开url列表文件内容,以行为单位存放到line列表 152 | lines = re.split(r'\n+',urllist_content) 153 | allProxy = [] 154 | 155 | #计算打印url总数 156 | lenlines =len(lines) 157 | print('airport total == '+str(lenlines)+'\n') 158 | 159 | #Semaphore 是用于控制进入数量的锁,控制同时进行的线程,内部是基于Condition来进行实现的 160 | #https://www.cnblogs.com/callyblog/p/11147456.html 161 | #文件, 读、写, 写一般只是用于一个线程写,读可以允许有多个 162 | thread_max_num =threading.Semaphore(lenlines) 163 | 164 | #进度条添加 165 | bar = tqdm(total=lenlines, desc='订阅获取:') 166 | thread_list = [] 167 | 168 | for line in lines: 169 | #为每个新URL创建线程 170 | t = threading.Thread(target=sub_to_url, args=(line,bar,allProxy)) 171 | #加入线程池 172 | thread_list.append(t) 173 | #setDaemon()线程守护,配合下面的一组for...t.join(),实现所有线程执行结束后,才开始执行下面代码 174 | t.setDaemon(True) #python多线程之t.setDaemon(True) 和 t.join() https://www.cnblogs.com/my8100/p/7366567.html 175 | #启动 176 | t.start() 177 | 178 | #等待所有线程完成,配合上面的t.setDaemon(True) 179 | for t in thread_list: 180 | t.join() 181 | bar.close() #进度条结束 182 | 183 | # 将列表内容,以行写入字符串? 184 | ownallProxy = '\n'.join(allProxy) 185 | 186 | # 写入url 订阅文件 187 | print('write miningUrl content!') 188 | file = open(outputUrlSub_path, 'w', encoding= 'utf-8') 189 | file.write(ownallProxy) 190 | file.close() 191 | 192 | # 写入base64 订阅文件 193 | subContent = sub_convert.base64_encode(ownallProxy) 194 | print('write miningUrl64 content!') 195 | file = open(outputBase64Sub_path, 'w', encoding= 'utf-8') 196 | file.write(subContent) 197 | file.close() 198 | 199 | # 写入Clash 订阅文件 200 | print('write miningClash begin!') 201 | eternity_convert(outputBase64Sub_path, config_file, output=outputClashSub_path) 202 | print('write miningClash Over!') 203 | 204 | if __name__ == '__main__': 205 | #更新IP库 206 | geoip_update('https://raw.githubusercontent.com/Loyalsoldier/geoip/release/Country.mmdb') 207 | urlListToSub(urllistfile) 208 | 209 | 210 | -------------------------------------------------------------------------------- /utils/free/config.yaml: -------------------------------------------------------------------------------- 1 | #想取消那个可以在单行开头'#' 2 | V2board: 3 | #优秀 4 | - https://www.dgycom.com/ #10G,1天,多线 5 | #普通 6 | - https://fastestcloud.xyz/ #1G,2天,多线路 7 | - https://feiniaoyun.top/ #1G,1天,多线路 8 | - https://shan-cloud.xyz/ #5G,1天,多线路 9 | - https://www.ckcloud.xyz/ #1G,1天,多线路 10 | 11 | 12 | SSpanel: 13 | #优秀 14 | - https://www.iacgbt.com/ #50G,1天,多线 15 | - http://zhuzhu12.com/ #100G,7天,多线,需验证机器人 16 | 17 | #普通 18 | - https://flyairport.top/ #5G,1天,单线路,只支持v2 19 | - https://www.douluos.xyz/ #2G,1天,多线路 20 | - https://jsmao.org/ #1G,1天,多线路 21 | - https://www.jafiyun.cc/ #512MB,1天,多线路 22 | - https://www.liuchangyun.com/ #1G,1天,多线路 23 | - https://www.wolaile.icu/ #1G,1天,多线路 24 | - https://gflink.net/ #1G,1天,多线 25 | - https://maossr.top/ #1G,1天,多线路 26 | - https://www.kuaicloud.xyz/ #1G,1天,多线路 需用QQ邮箱 27 | - https://htavpn.com/ #1G,1天,多线路 需用QQ邮箱 28 | # 流量少 29 | # - https://www.wiougong.me/ #102.4MB,1天,多线路 30 | # - https://www.wiougong.space/ #102.4MB,1天,多线路 31 | 32 | 33 | # bad 34 | # - https://www.mxyssr.fun/ #10G,1天,多线路 35 | # - https://v2ray.mom/ #qq邮箱,不限量,限速512KB,可用1年半 36 | # - https://kakayun.xyz/ #2G,2天,多线路 37 | # - https://paopaocloud.com/ #1G,1天,多线路 38 | -------------------------------------------------------------------------------- /utils/free/freess.py: -------------------------------------------------------------------------------- 1 | import re 2 | import yaml 3 | import urllib 4 | import requests,random,string 5 | # config.yaml配置文件地址 6 | config_file_path = './utils/free/config.yaml' 7 | out_list_file_path = './config/sublist_free' 8 | out_freesub_path = "./sub/free/" 9 | ''' 10 | "name":"www.kuaicloud.xyz", 11 | "url":'https://www.kuaicloud.xyz/', 12 | "reg_url":"https://www.kuaicloud.xyz/auth/register", 13 | "sub":"https://www.kuaicloud.xyz/link/1y9vD5mYIdpNjmxJ?sub=3&extend=1" 14 | ''' 15 | 16 | proxies = { 17 | 'http': 'http://127.0.0.1:7890', 18 | 'https': 'http://127.0.0.1:7890' 19 | } 20 | 21 | class tempsite(): 22 | def __init__(self,url,proxy=None): # 注册信息模板 23 | self._proxies = proxy 24 | self._name='' 25 | self._url = url 26 | self._reg_url='' 27 | self._login_url = '' 28 | self._user_url = '' 29 | self._sub='' 30 | 31 | def set_env(self): # 设置注册地址和获取sub的地址的模板链接 32 | self._name = urllib.parse.urlparse(self._url).netloc # 网站名字获取 33 | self._reg_url = self._url+'auth/register' # 注册地址 34 | self._login_url = self._url+'auth/login' # 登录地址 35 | self._user_url = self._url+'user' # 用户界面地址 36 | 37 | def register(self,email,password): # 注册账号 38 | headers= { 39 | "User-Agent":'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36', 40 | "referer": self._reg_url 41 | } 42 | data={ 43 | "email":email, 44 | "name":password, 45 | "passwd":password, 46 | "repasswd":password, 47 | "invite_code":None, 48 | "email_code":None 49 | } 50 | geetest={ 51 | "geetest_challenge": "98dce83da57b0395e163467c9dae521b1f", 52 | "geetest_validate": "bebe713_e80_222ebc4a0", 53 | "geetest_seccode": "bebe713_e80_222ebc4a0|jordan"} 54 | data.update(geetest) 55 | with requests.session() as session: 56 | resp = session.post(self._reg_url,headers=headers,data=data,timeout=5,proxies=self._proxies) 57 | print(resp.json()) 58 | 59 | data ={ 60 | 'email': email, 61 | 'passwd': password, 62 | 'code': '', 63 | 'remember_me': 1, 64 | } 65 | try: 66 | resp = session.post(self._login_url,headers=headers,data=data,timeout=5,proxies=self._proxies) 67 | print(resp.json()) 68 | except: 69 | pass 70 | 71 | resp = session.get(self._user_url,headers=headers,timeout=5,proxies=self._proxies) 72 | # print(resp.text) 73 | try: 74 | token= re.search("https?://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+sub=3", resp.text).group(0) 75 | except: 76 | token = re.search("https?://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+clash=1", resp.text).group(0) 77 | self._sub = token 78 | print(token) 79 | return token # 返回解析完的订阅地址 80 | 81 | 82 | def getSubscribe(self): # 注册url网站账号,返回sub订阅地址 83 | password=''.join(random.sample(string.ascii_letters + string.digits + string.ascii_lowercase, 10)) 84 | email=password+"@gmail.com" 85 | subscribe=self.register(email,password) 86 | return subscribe # 返回刚注册账号的订阅地址 87 | 88 | def save_conf(self): # 注册账号,获取订阅内容,写入list_file_path地址文件和./free/内容文件夹 89 | sub_url=self.getSubscribe() # 注册url网站账号,返回sub订阅地址 90 | #retry 91 | for k in range(3): 92 | try: 93 | req=requests.get(sub_url,timeout=5) # 获取订阅内容 94 | v2conf=req.text # 将订阅内容的节点信息赋值v2conf 95 | with open(out_list_file_path, 'a') as f: 96 | f.write(sub_url+'\n') # 将订阅地址写入sub_url文件 97 | break 98 | except: 99 | v2conf="" 100 | with open(out_freesub_path+self._name,"w") as f: 101 | f.write(v2conf) # 根据获取的网站名称将订阅内容写入./free/目录下的网站名文件里面 102 | 103 | def get_conf(): # 根据config.yaml里面的地址,注册新账号获取订阅 104 | with open(config_file_path,encoding="UTF-8") as f: # 获取config地址内容 105 | data = yaml.load(f, Loader=yaml.FullLoader) 106 | url_list = data['SSpanel'] # 将SSpanel格式网站地址取出到url_list 107 | for url in url_list: #读取url_list的地址 108 | sub = tempsite(url) # 定义一个sub名字的tempsite()类,默认初始化类_init_(self,url,proxy = None) 109 | try: 110 | sub.set_env() # 设置注册地址和获取sub的地址的模板链接 111 | sub.save_conf() # 注册账号,获取订阅内容,写入./sub_list地址文件和./free/内容文件夹 112 | except: 113 | pass 114 | 115 | # get_conf() 116 | -------------------------------------------------------------------------------- /utils/free/freess.py.bak: -------------------------------------------------------------------------------- 1 | import yaml 2 | import urllib 3 | from bs4 import BeautifulSoup 4 | import requests,random,string 5 | 6 | ''' 7 | "name":"www.kuaicloud.xyz", 8 | "url":'https://www.kuaicloud.xyz/', 9 | "reg_url":"https://www.kuaicloud.xyz/auth/register", 10 | "sub":"https://www.kuaicloud.xyz/link/1y9vD5mYIdpNjmxJ?sub=3&extend=1" 11 | ''' 12 | 13 | proxies = { 14 | 'http': 'http://127.0.0.1:7890', 15 | 'https': 'http://127.0.0.1:7890' 16 | } 17 | 18 | class tempsite(): 19 | def __init__(self,url,proxy=None): 20 | self._proxies = proxy 21 | self._name='' 22 | self._url = url 23 | self._reg_url='' 24 | self._login_url = '' 25 | self._user_url = '' 26 | self._sub='' 27 | 28 | def set_env(self): 29 | self._name = urllib.parse.urlparse(self._url).netloc 30 | self._reg_url = self._url+'auth/register' 31 | self._login_url = self._url+'auth/login' 32 | self._user_url = self._url+'user' 33 | 34 | def register(self,email,password): 35 | headers= { 36 | "User-Agent":'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36', 37 | "referer": self._reg_url 38 | } 39 | data={ 40 | "email":email, 41 | "name":self._name, 42 | "passwd":password, 43 | "repasswd":password, 44 | "invite_code":None, 45 | "email_code":None 46 | } 47 | with requests.session() as session: 48 | resp = session.post(self._reg_url,headers=headers,data=data,timeout=5,proxies=self._proxies) 49 | print(resp.json()) 50 | data ={ 51 | 'email': email, 52 | 'passwd': password, 53 | 'code': '', 54 | 'remember_me': 1, 55 | } 56 | resp = session.post(self._login_url,headers=headers,data=data,timeout=5,proxies=self._proxies) 57 | print(resp.json()) 58 | resp = session.get(self._user_url,headers=headers,timeout=5,proxies=self._proxies) 59 | # print(resp.text) 60 | page = BeautifulSoup(resp.text,'html.parser') 61 | token = page.find("a",class_='btn btn-icon icon-left btn-primary btn-v2ray copy-text btn-lg btn-round')['data-clipboard-text'] 62 | self._sub = token 63 | print(token) 64 | return token 65 | 66 | 67 | def getSubscribe(self): 68 | password=''.join(random.sample(string.ascii_letters + string.digits + string.ascii_lowercase, 10)) 69 | email=password+"@gmail.com" 70 | subscribe=self.register(email,password) 71 | return subscribe 72 | 73 | def save_conf(self): 74 | sub_url=self.getSubscribe() 75 | #retry 76 | for k in range(3): 77 | try: 78 | req=requests.get(sub_url,timeout=5) 79 | v2conf=req.text 80 | with open('./sub_list', 'a') as f: 81 | f.write(sub_url+'\n') 82 | break 83 | except: 84 | v2conf="" 85 | with open("./free/"+self._name,"w") as f: 86 | f.write(v2conf) 87 | 88 | def get_conf(): 89 | with open('./utils/config.yaml',encoding="UTF-8") as f: 90 | data = yaml.load(f, Loader=yaml.FullLoader) 91 | url_list = data['SSpanel'] 92 | for url in url_list: 93 | sub = tempsite(url) 94 | try: 95 | sub.set_env() 96 | sub.save_conf() 97 | except: 98 | pass 99 | 100 | # get_conf() 101 | -------------------------------------------------------------------------------- /utils/free/freess2.py.bak: -------------------------------------------------------------------------------- 1 | import yaml 2 | import urllib 3 | from bs4 import BeautifulSoup 4 | import requests,random,string 5 | 6 | ''' 7 | "name":"www.kuaicloud.xyz", 8 | "url":'https://paopaocloud.com/', 9 | "reg_url":"hhttps://paopaocloud.com/auth/register", 10 | "sub":"https://www.kuaicloud.xyz/link/1y9vD5mYIdpNjmxJ?sub=3&extend=1" 11 | ''' 12 | 13 | proxies = { 14 | 'http': 'http://127.0.0.1:7890', 15 | 'https': 'http://127.0.0.1:7890' 16 | } 17 | 18 | class tempsite(): 19 | def __init__(self,url,proxy=None): 20 | self._proxies = proxy 21 | self._name='' 22 | self._url = url 23 | self._reg_url='' 24 | self._login_url = '' 25 | self._user_url = '' 26 | self._sub='' 27 | 28 | def set_env(self): 29 | self._name = urllib.parse.urlparse(self._url).netloc 30 | self._reg_url = self._url+'auth/register' 31 | self._login_url = self._url+'auth/login' 32 | self._user_url = self._url+'user' 33 | 34 | def register(self,email,password): 35 | headers= { 36 | "User-Agent":'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36', 37 | "referer": self._reg_url 38 | } 39 | data={ 40 | "email":email, 41 | "name":self._name, 42 | "passwd":password, 43 | "repasswd":password, 44 | "invite_code":None, 45 | "email_code":None 46 | } 47 | with requests.session() as session: 48 | resp = session.post(self._reg_url,headers=headers,data=data,timeout=5,proxies=self._proxies) 49 | print(resp.json()) 50 | resp = session.get(self._user_url,headers=headers,timeout=5,proxies=self._proxies) 51 | # print(resp.text) 52 | page = BeautifulSoup(resp.text,'html.parser') 53 | token = page.find("a",class_='copy-text btn-dl')['data-clipboard-text'] 54 | token = token[:-1]+'3' 55 | self._sub = token 56 | print(token) 57 | return token 58 | 59 | 60 | def getSubscribe(self): 61 | password=''.join(random.sample(string.ascii_letters + string.digits + string.ascii_lowercase, 10)) 62 | email=password+"@gmail.com" 63 | subscribe=self.register(email,password) 64 | return subscribe 65 | 66 | def save_conf(self): 67 | sub_url=self.getSubscribe() 68 | #retry 69 | for k in range(3): 70 | try: 71 | req=requests.get(sub_url,timeout=5) 72 | v2conf=req.text 73 | with open('./sub_list', 'a') as f: 74 | f.write(sub_url+'\n') 75 | break 76 | except: 77 | v2conf="" 78 | with open("./free/"+self._name,"w") as f: 79 | f.write(v2conf) 80 | 81 | def get_conf(): 82 | with open('./utils/config.yaml',encoding="UTF-8") as f: 83 | data = yaml.load(f, Loader=yaml.FullLoader) 84 | url_list = data['SSpanel2'] 85 | for url in url_list: 86 | sub = tempsite(url) 87 | try: 88 | sub.set_env() 89 | sub.save_conf() 90 | except: 91 | pass 92 | 93 | # get_conf() 94 | -------------------------------------------------------------------------------- /utils/free/freev2.py: -------------------------------------------------------------------------------- 1 | import yaml 2 | import urllib 3 | # import requests,random,string 4 | from datetime import datetime 5 | import requests,random,string 6 | 7 | # config.yaml配置文件地址 8 | config_file_path = './utils/free/config.yaml' 9 | out_list_file_path = './config/sublist_free' 10 | out_freesub_path = "./sub/free/" 11 | 12 | ''' 13 | "name":"feiniao", 14 | "url":"https://feiniaoyun.xyz/", 15 | "reg_url":"https://feiniaoyun.xyz/api/v1/passport/auth/register", 16 | "sub":"https://feiniaoyun.xyz/api/v1/client/subscribe?token={token}" 17 | ''' 18 | 19 | proxies = { 20 | 'http': 'http://127.0.0.1:7890', 21 | 'https': 'http://127.0.0.1:7890' 22 | } 23 | 24 | class tempsite(): 25 | def __init__(self,url,proxy=None): # 注册信息模板 26 | self._proxies = proxy 27 | self._name='' 28 | self._url = url 29 | self._reg_url='' 30 | self._sub='' 31 | 32 | def set_env(self): # 设置注册地址和获取sub的地址的模板链接 33 | self._name = urllib.parse.urlparse(self._url).netloc # 网站名字获取 34 | self._reg_url = self._url+'api/v1/passport/auth/register' # 注册地址 35 | self._sub = self._url+'api/v1/client/subscribe?token={token}' # 获取sub的地址的模板链接 36 | 37 | def register(self,email,password): # 注册账号 38 | headers= { 39 | "User-Agent":'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36', 40 | "Refer": self._url 41 | } 42 | data={ 43 | "email":email, 44 | "password":password, 45 | "invite_code":None, 46 | "email_code":None 47 | } 48 | req=requests.post(self._reg_url,headers=headers,data=data,timeout=5,proxies=self._proxies) # 注册 49 | return req 50 | 51 | def getSubscribe(self): # 注册url网站账号,返回sub订阅地址 52 | password=''.join(random.sample(string.ascii_letters + string.digits + string.ascii_lowercase, 10)) 53 | email=password+"@gmail.com" 54 | req=self.register(email,password) #根据email 和 password 注册账号 55 | token=req.json()["data"]["token"] # 获取token 56 | subscribe=self._sub.format(token=token) # 将获取的token传给self._sub 里面的{token} 字段 57 | return subscribe # 返回刚注册账号的订阅地址 58 | 59 | def save_conf(self): # 注册账号,获取订阅内容,写入./sub_list地址文件和./free/内容文件夹 60 | sub_url=self.getSubscribe() # 注册url网站账号,返回sub订阅地址 61 | #retry 62 | for k in range(3): 63 | try: 64 | req=requests.get(sub_url,timeout=5) # 获取订阅内容 65 | v2conf=req.text # 将订阅内容的节点信息赋值v2conf 66 | with open(out_list_file_path, 'a') as f: 67 | f.write(sub_url+'\n') # 将订阅地址写入sub_url文件 68 | break 69 | except: 70 | v2conf="" 71 | with open(out_freesub_path+self._name,"w") as f: 72 | f.write(v2conf) # 根据获取的网站名称将订阅内容写入./free/目录下的网站名文件里面 73 | 74 | def get_conf(): # 根据config.yaml里面的地址,注册新账号获取订阅 75 | currentTime = datetime.now().strftime("%Y-%m-%d\t%H:%M:%S") # 获取现在的时转成字符串 76 | with open(out_list_file_path,'w',encoding="UTF-8") as fp: # 打开写入文件 77 | fp.write('更新时间:\t'+currentTime+'\n') # 在写入的文件开头写入更新时间 78 | with open(config_file_path,encoding="UTF-8") as f: # 获取config地址内容 79 | data = yaml.load(f, Loader=yaml.FullLoader) 80 | url_list = data['V2board'] # 将V2board格式网站地址取出到url_list 81 | for url in url_list: #读取url_list的地址 82 | sub = tempsite(url) # 定义一个sub名字的tempsite()类,默认初始化类_init_(self,url,proxy = None) 83 | try: 84 | sub.set_env() # # 设置注册地址和获取sub的地址的模板链接 85 | sub.save_conf() # 注册账号,获取订阅内容,写入./sub_list地址文件和./free/内容文件夹 86 | except: 87 | pass # 有什么问题直接pass 88 | 89 | # get_conf() 90 | -------------------------------------------------------------------------------- /utils/free/main.py: -------------------------------------------------------------------------------- 1 | import freev2 2 | import qqfreev2 3 | import freess 4 | 5 | if __name__=='__main__': 6 | freev2.get_conf() # 获取 V2board 类网站的,需用Gmail邮箱注册的订阅信息 7 | #qqfreev2.get_conf() # 获取 V2board 类网站的,需用QQ邮箱注册的订阅信息 8 | freess.get_conf() 9 | -------------------------------------------------------------------------------- /utils/free/qqfreev2.py: -------------------------------------------------------------------------------- 1 | import yaml 2 | import urllib 3 | import requests,random,string 4 | 5 | # config.yaml配置文件地址 6 | config_file_path = './utils/free/config.yaml' 7 | out_list_file_path = './config/sublist_free' 8 | out_freesub_path = "./sub/free/v2board/" 9 | 10 | ''' 11 | "name":"feiniao", 12 | "url":"https://feiniaoyun.xyz/", 13 | "reg_url":"https://feiniaoyun.xyz/api/v1/passport/auth/register", 14 | "sub":"https://feiniaoyun.xyz/api/v1/client/subscribe?token={token}" 15 | ''' 16 | 17 | proxies = { 18 | 'http': 'http://127.0.0.1:7890', 19 | 'https': 'http://127.0.0.1:7890' 20 | } 21 | 22 | class tempsite(): 23 | def __init__(self,url,proxy=None): # 注册信息模板 24 | self._proxies = proxy 25 | self._name='' 26 | self._url = url 27 | self._reg_url='' 28 | self._sub='' 29 | 30 | def set_env(self): # 设置注册地址和获取sub的地址的模板链接 31 | self._name = urllib.parse.urlparse(self._url).netloc # 网站名字获取 32 | self._reg_url = self._url+'api/v1/passport/auth/register' # 注册地址 33 | self._sub = self._url+'api/v1/client/subscribe?token={token}' # 获取sub的地址的模板链接 34 | 35 | def register(self,email,password): # 注册账号 36 | headers= { 37 | "User-Agent":'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36', 38 | "Refer": self._url 39 | } 40 | data={ 41 | "email":email, 42 | "password":password, 43 | "invite_code":None, 44 | "email_code":None 45 | } 46 | req=requests.post(self._reg_url,headers=headers,data=data,timeout=5,proxies=self._proxies) # 注册 47 | return req 48 | 49 | def getSubscribe(self): # 注册url网站账号,返回sub订阅地址 50 | password=''.join(random.sample(string.ascii_letters + string.digits + string.ascii_lowercase, 10)) 51 | email=password+"@qq.com" 52 | req=self.register(email,password) #根据email 和 password 注册账号 53 | token=req.json()["data"]["token"] # 获取token 54 | subscribe=self._sub.format(token=token) # 将获取的token传给self._sub 里面的{token} 字段 55 | return subscribe # 返回刚注册账号的订阅地址 56 | 57 | def save_conf(self): # 注册账号,获取订阅内容,写入./sub_list地址文件 58 | sub_url=self.getSubscribe() # 注册url网站账号,返回sub订阅地址 59 | #retry 怕覆盖Gmail邮箱注册的订阅,取消了写入./free/文件,但是获取的订阅地址放入了sub_list文件 60 | for k in range(3): 61 | try: 62 | with open(out_list_file_path, 'a') as f: 63 | f.write(sub_url+'\n') 64 | break 65 | except: 66 | pass 67 | 68 | def get_conf(): # 根据config.yaml里面的地址,注册新账号获取订阅 69 | with open(config_file_path,encoding="UTF-8") as f: # 获取config地址内容 70 | data = yaml.load(f, Loader=yaml.FullLoader) 71 | url_list = data['V2board'] # 将V2board格式网站地址取出到url_list 72 | for url in url_list: #读取url_list的地址 73 | sub = tempsite(url) # 定义一个sub名字的tempsite()类,默认初始化类_init_(self,url,proxy = None) 74 | try: 75 | sub.set_env() # 设置注册地址和获取sub的地址的模板链接 76 | sub.save_conf() # 注册账号,获取订阅内容,写入./sub_list地址文件 77 | except: 78 | pass # 有什么问题直接pass 79 | 80 | # get_conf() 81 | -------------------------------------------------------------------------------- /utils/free/toClash/ip_update.py: -------------------------------------------------------------------------------- 1 | # from ip_update import geoip_update #更新IP位置数据库,将此行放入需要引用的文件里使用'geoip_update()'即可用的文件里 2 | # 默认下载位置 './Country.mmdb'--- 3 | 4 | from urllib import request # Urllib是python内置的HTTP请求库,urllib.request获取URL的Python模块 5 | 6 | #Country.mmdb 下载地址 7 | geoip_url = 'https://raw.githubusercontent.com/Loyalsoldier/geoip/release/Country.mmdb' 8 | 9 | #根据自己情况设置mmdb存放位置 10 | countrymmdb_file = './Country.mmdb' 11 | 12 | def geoip_update(url = geoip_url): # 更新IP位置数据库存放到 `./utils/Country.mmdb` 13 | print('Downloading Country.mmdb...') 14 | try: 15 | request.urlretrieve(url, countrymmdb_file) 16 | print('Downloading Country.mmdb Success!\n') 17 | except Exception: 18 | print('Downloading Country.mmdb Failed!\n') 19 | pass 20 | 21 | if __name__ == '__main__': 22 | geoip_update(geoip_url) # 更新IP位置数据库 23 | -------------------------------------------------------------------------------- /utils/free/toClash/readme.md: -------------------------------------------------------------------------------- 1 | ``` 2 | #优秀 3 | https://www.dgycom.com/ #10G,1天,多线 4 | #优秀 5 | https://www.iacgbt.com/ #50G,1天,多线 6 | http://zhuzhu12.com/ #100G,7天,多线,需验证机器人 7 | ``` 8 | -------------------------------------------------------------------------------- /utils/free/toClash/toClash.py: -------------------------------------------------------------------------------- 1 | import re, yaml 2 | import time, os 3 | from tqdm import tqdm #进度条库 4 | import threading #线程 5 | from ip_update import geoip_update # 更新ip库Country.mmdb 6 | from sub_convert import sub_convert 7 | 8 | #源文件 9 | urllistfile = './config/sublist_free' 10 | #输出订阅文件位置 11 | outputUrlSub_path = './sub/free/goodfree/goodfree' 12 | outputBase64Sub_path = './sub/free/goodfree/goodfree64' 13 | outputClashSub_path = './sub/free/goodfree/goodfreeClash.yml' 14 | 15 | # 有优质free添加至sub_to_url功能模块里if处 16 | 17 | #code begin 18 | 19 | def sub_to_url(url,bar,allProxy): #将url订阅内容append到allProxy列表,并完成进度bar 20 | if 'www.dgycom.com' in url or 'www.iacgbt.com' in url: #优质free收集,有新goodfree添加至此 21 | subContent =sub_convert.convert_remote(url,'url') 22 | allProxy.append(subContent) 23 | bar.update(1) 24 | 25 | # 写入文件模块 26 | def write_file(file,content): 27 | f = open(file, 'w', encoding= 'utf-8') 28 | f.write(content) 29 | f.close() 30 | 31 | 32 | def urlListToSub(urllistfile): #将url订阅列表内容转换成url,base64,clash文件保存 33 | 34 | #打开url列表文件 35 | file_urllist = open(urllistfile, 'r', encoding='utf-8') 36 | urllist_content = file_urllist.read() 37 | file_urllist.close() 38 | 39 | #打开url列表文件内容,以行为单位存放到line列表 40 | lines = re.split(r'\n+',urllist_content) 41 | allProxy = [] 42 | 43 | #计算打印url总数 44 | lenlines =len(lines) 45 | print('airport total == '+str(lenlines)+'\n') 46 | 47 | #Semaphore 是用于控制进入数量的锁,控制同时进行的线程,内部是基于Condition来进行实现的 48 | #https://www.cnblogs.com/callyblog/p/11147456.html 49 | #文件, 读、写, 写一般只是用于一个线程写,读可以允许有多个 50 | thread_max_num =threading.Semaphore(lenlines) 51 | 52 | #进度条添加 53 | bar = tqdm(total=lenlines, desc='订阅获取:') 54 | thread_list = [] 55 | 56 | for line in lines: 57 | #为每个新URL创建线程 58 | t = threading.Thread(target=sub_to_url, args=(line,bar,allProxy)) 59 | #加入线程池 60 | thread_list.append(t) 61 | #setDaemon()线程守护,配合下面的一组for...t.join(),实现所有线程执行结束后,才开始执行下面代码 62 | t.setDaemon(True) #python多线程之t.setDaemon(True) 和 t.join() https://www.cnblogs.com/my8100/p/7366567.html 63 | #启动 64 | t.start() 65 | 66 | #等待所有线程完成,配合上面的t.setDaemon(True) 67 | for t in thread_list: 68 | t.join() 69 | bar.close() #进度条结束 70 | 71 | # 将列表内容,以行写入字符串? 72 | ownallProxy = '\n'.join(allProxy) 73 | 74 | 75 | #开始写入文件 76 | # 写入url 订阅文件 77 | print('write goodfree content!') 78 | write_file(outputUrlSub_path,ownallProxy) 79 | 80 | # 写入base64 订阅文件 81 | print('write goodfree64 content!') 82 | subContent = sub_convert.base64_encode(ownallProxy) 83 | write_file(outputBase64Sub_path,subContent) 84 | 85 | # 写入Clash 订阅文件 86 | print('write goodfreeClash content!') 87 | good_file_path = os.path.abspath(outputBase64Sub_path) 88 | print('mining_file_path =' + good_file_path) 89 | content = sub_convert.convert_remote(good_file_path,'clash') 90 | write_file(outputClashSub_path,content) 91 | 92 | 93 | if __name__ == '__main__': 94 | #更新IP库 95 | geoip_update() 96 | urlListToSub(urllistfile) 97 | 98 | 99 | -------------------------------------------------------------------------------- /utils/getSubSource/getSubSource.py: -------------------------------------------------------------------------------- 1 | import re, yaml 2 | import time, os 3 | import sys 4 | import datetime 5 | from urllib import request 6 | 7 | source_sublist_path = './config/subsource/subsource.yaml' 8 | free_sublist_path = './config/sublist_mining' 9 | 10 | 11 | def get_subSource(): # 12 | with open(source_sublist_path,encoding="UTF-8") as f: # 获取config地址内容 13 | data = yaml.load(f, Loader=yaml.FullLoader) 14 | url_list = data['机场订阅'] # 将free_V2board_sspanel格式网站地址取出到url_list 15 | new_url_list = [] 16 | for url in url_list: #读取url_list的地址 17 | new_url_list.append(url) 18 | free_list = '\n'.join(new_url_list) 19 | with open(free_sublist_path,'a',encoding="UTF-8") as fp: # 打开写入文件 20 | fp.write(free_list) 21 | 22 | def sublist_update(sourceSublist): # 23 | print('Downloading sublist...') 24 | try: 25 | request.urlretrieve(sourceSublist, source_sublist_path) 26 | print('Downloading sublist Success!\n') 27 | except Exception: 28 | print('Downloading sublist Failed!\n') 29 | pass 30 | 31 | def GetSublistUrl(): 32 | today = datetime.datetime.today() 33 | path_base = 'https://raw.githubusercontent.com/rxsweet/collectSub/main/sub/' 34 | path_year = str(today.year) 35 | path_mon = path_year+'/'+str(today.month) 36 | path_yaml = path_base+'/'+path_mon+'/'+str(today.month)+'-'+str(today.day)+'.yaml' 37 | return path_yaml 38 | 39 | if __name__ == '__main__': 40 | 41 | # 下载最新sublist源 42 | urllistsource = GetSublistUrl() # 获取subsource地址 43 | print(urllistsource) 44 | sublist_update(urllistsource) 45 | get_subSource() 46 | -------------------------------------------------------------------------------- /utils/requirements.txt: -------------------------------------------------------------------------------- 1 | requests == 2.28.1 2 | PyYAML == 6.0 3 | tqdm == 4.64.0 4 | retry == 0.9.2 5 | bs4 == 0.0.1 6 | geoip2==4.4.0 7 | --------------------------------------------------------------------------------