diff options
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/README.md | 4 | ||||
-rw-r--r-- | contrib/bitcoin-qt.pro | 1 | ||||
-rwxr-xr-x | contrib/devtools/clang-format-diff.py | 4 | ||||
-rwxr-xr-x | contrib/devtools/copyright_header.py | 34 | ||||
-rwxr-xr-x | contrib/devtools/symbol-check.py | 4 | ||||
-rw-r--r-- | contrib/gitian-descriptors/gitian-linux.yml | 2 | ||||
-rw-r--r-- | contrib/gitian-descriptors/gitian-osx.yml | 2 | ||||
-rw-r--r-- | contrib/gitian-descriptors/gitian-win.yml | 2 | ||||
-rw-r--r-- | contrib/guix/libexec/build.sh | 42 | ||||
-rwxr-xr-x | contrib/linearize/linearize-data.py | 4 | ||||
-rwxr-xr-x | contrib/linearize/linearize-hashes.py | 4 | ||||
-rw-r--r-- | contrib/macdeploy/README.md | 2 | ||||
-rwxr-xr-x | contrib/macdeploy/macdeployqtplus | 150 | ||||
-rwxr-xr-x | contrib/seeds/generate-seeds.py | 3 | ||||
-rwxr-xr-x | contrib/seeds/makeseeds.py | 121 | ||||
-rw-r--r-- | contrib/seeds/nodes_main.txt | 1950 | ||||
-rw-r--r-- | contrib/testgen/README.md | 2 |
17 files changed, 956 insertions, 1375 deletions
diff --git a/contrib/README.md b/contrib/README.md index e9e72f6686..361975baa4 100644 --- a/contrib/README.md +++ b/contrib/README.md @@ -33,12 +33,12 @@ Files used during the gitian build process. For more information about gitian, s PGP keys used for signing Bitcoin Core [Gitian release](/doc/release-process.md) results. ### [MacDeploy](/contrib/macdeploy) ### -Scripts and notes for Mac builds. +Scripts and notes for Mac builds. ### [Gitian-build](/contrib/gitian-build.py) ### Script for running full Gitian builds. -Test and Verify Tools +Test and Verify Tools --------------------- ### [TestGen](/contrib/testgen) ### diff --git a/contrib/bitcoin-qt.pro b/contrib/bitcoin-qt.pro index b8133bf789..0e4eeee0a7 100644 --- a/contrib/bitcoin-qt.pro +++ b/contrib/bitcoin-qt.pro @@ -16,6 +16,7 @@ FORMS += \ ../src/qt/forms/sendcoinsentry.ui \ ../src/qt/forms/signverifymessagedialog.ui \ ../src/qt/forms/transactiondescdialog.ui \ + ../src/qt/forms/createwalletdialog.ui RESOURCES += \ ../src/qt/bitcoin.qrc diff --git a/contrib/devtools/clang-format-diff.py b/contrib/devtools/clang-format-diff.py index f322b3a880..98eee67f43 100755 --- a/contrib/devtools/clang-format-diff.py +++ b/contrib/devtools/clang-format-diff.py @@ -106,7 +106,7 @@ def main(): filename = None lines_by_file = {} for line in sys.stdin: - match = re.search('^\+\+\+\ (.*?/){%s}(\S*)' % args.p, line) + match = re.search(r'^\+\+\+\ (.*?/){%s}(\S*)' % args.p, line) if match: filename = match.group(2) if filename is None: @@ -119,7 +119,7 @@ def main(): if not re.match('^%s$' % args.iregex, filename, re.IGNORECASE): continue - match = re.search('^@@.*\+(\d+)(,(\d+))?', line) + match = re.search(r'^@@.*\+(\d+)(,(\d+))?', line) if match: start_line = int(match.group(1)) line_count = 1 diff --git a/contrib/devtools/copyright_header.py b/contrib/devtools/copyright_header.py index fc01e570aa..5307b04197 100755 --- a/contrib/devtools/copyright_header.py +++ b/contrib/devtools/copyright_header.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# Copyright (c) 2016-2018 The Bitcoin Core developers +# Copyright (c) 2016-2019 The Bitcoin Core developers # Distributed under the MIT software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -34,7 +34,7 @@ EXCLUDE_DIRS = [ "src/univalue/", ] -INCLUDE = ['*.h', '*.cpp', '*.cc', '*.c', '*.mm', '*.py'] +INCLUDE = ['*.h', '*.cpp', '*.cc', '*.c', '*.mm', '*.py', '*.sh', '*.bash-completion'] INCLUDE_COMPILED = re.compile('|'.join([fnmatch.translate(m) for m in INCLUDE])) def applies_to_file(filename): @@ -71,7 +71,7 @@ def get_filenames_to_examine(base_directory): ################################################################################ -COPYRIGHT_WITH_C = 'Copyright \(c\)' +COPYRIGHT_WITH_C = r'Copyright \(c\)' COPYRIGHT_WITHOUT_C = 'Copyright' ANY_COPYRIGHT_STYLE = '(%s|%s)' % (COPYRIGHT_WITH_C, COPYRIGHT_WITHOUT_C) @@ -85,21 +85,21 @@ ANY_COPYRIGHT_STYLE_OR_YEAR_STYLE = ("%s %s" % (ANY_COPYRIGHT_STYLE, ANY_COPYRIGHT_COMPILED = re.compile(ANY_COPYRIGHT_STYLE_OR_YEAR_STYLE) def compile_copyright_regex(copyright_style, year_style, name): - return re.compile('%s %s,? %s' % (copyright_style, year_style, name)) + return re.compile(r'%s %s,? %s( +\*)?\n' % (copyright_style, year_style, name)) EXPECTED_HOLDER_NAMES = [ - "Satoshi Nakamoto\n", - "The Bitcoin Core developers\n", - "BitPay Inc\.\n", - "University of Illinois at Urbana-Champaign\.\n", - "Pieter Wuille\n", - "Wladimir J. van der Laan\n", - "Jeff Garzik\n", - "Jan-Klaas Kollhof\n", - "ArtForz -- public domain half-a-node\n", - "Intel Corporation", - "The Zcash developers", - "Jeremy Rubin", + r"Satoshi Nakamoto", + r"The Bitcoin Core developers", + r"BitPay Inc\.", + r"University of Illinois at Urbana-Champaign\.", + r"Pieter Wuille", + r"Wladimir J\. van der Laan", + r"Jeff Garzik", + r"Jan-Klaas Kollhof", + r"ArtForz -- public domain half-a-node", + r"Intel Corporation ?", + r"The Zcash developers", + r"Jeremy Rubin", ] DOMINANT_STYLE_COMPILED = {} @@ -329,7 +329,7 @@ def write_file_lines(filename, file_lines): # update header years execution ################################################################################ -COPYRIGHT = 'Copyright \(c\)' +COPYRIGHT = r'Copyright \(c\)' YEAR = "20[0-9][0-9]" YEAR_RANGE = '(%s)(-%s)?' % (YEAR, YEAR) HOLDER = 'The Bitcoin Core developers' diff --git a/contrib/devtools/symbol-check.py b/contrib/devtools/symbol-check.py index dd35d862c9..d8b684026c 100755 --- a/contrib/devtools/symbol-check.py +++ b/contrib/devtools/symbol-check.py @@ -141,7 +141,7 @@ def read_libraries(filename): for line in stdout.splitlines(): tokens = line.split() if len(tokens)>2 and tokens[1] == '(NEEDED)': - match = re.match('^Shared library: \[(.*)\]$', ' '.join(tokens[2:])) + match = re.match(r'^Shared library: \[(.*)\]$', ' '.join(tokens[2:])) if match: libraries.append(match.group(1)) else: @@ -171,5 +171,3 @@ if __name__ == '__main__': retval = 1 sys.exit(retval) - - diff --git a/contrib/gitian-descriptors/gitian-linux.yml b/contrib/gitian-descriptors/gitian-linux.yml index c50750ed44..dbd52cd788 100644 --- a/contrib/gitian-descriptors/gitian-linux.yml +++ b/contrib/gitian-descriptors/gitian-linux.yml @@ -1,5 +1,5 @@ --- -name: "bitcoin-core-linux-0.19" +name: "bitcoin-core-linux-0.20" enable_cache: true distro: "ubuntu" suites: diff --git a/contrib/gitian-descriptors/gitian-osx.yml b/contrib/gitian-descriptors/gitian-osx.yml index 8c51ce7159..a563bef778 100644 --- a/contrib/gitian-descriptors/gitian-osx.yml +++ b/contrib/gitian-descriptors/gitian-osx.yml @@ -1,5 +1,5 @@ --- -name: "bitcoin-core-osx-0.19" +name: "bitcoin-core-osx-0.20" enable_cache: true distro: "ubuntu" suites: diff --git a/contrib/gitian-descriptors/gitian-win.yml b/contrib/gitian-descriptors/gitian-win.yml index f227c6ad92..675ee6a125 100644 --- a/contrib/gitian-descriptors/gitian-win.yml +++ b/contrib/gitian-descriptors/gitian-win.yml @@ -1,5 +1,5 @@ --- -name: "bitcoin-core-win-0.19" +name: "bitcoin-core-win-0.20" enable_cache: true distro: "ubuntu" suites: diff --git a/contrib/guix/libexec/build.sh b/contrib/guix/libexec/build.sh index 56b972a5cb..ee207a957c 100644 --- a/contrib/guix/libexec/build.sh +++ b/contrib/guix/libexec/build.sh @@ -30,23 +30,38 @@ fi # Given a package name and an output name, return the path of that output in our # current guix environment store_path() { - grep --extended-regexp "/[^-]{32}-${1}-cross-${HOST}-[^-]+${2:+-${2}}" "${GUIX_ENVIRONMENT}/manifest" \ + grep --extended-regexp "/[^-]{32}-${1}-[^-]+${2:+-${2}}" "${GUIX_ENVIRONMENT}/manifest" \ | head --lines=1 \ | sed --expression='s|^[[:space:]]*"||' \ --expression='s|"[[:space:]]*$||' } # Determine output paths to use in CROSS_* environment variables -CROSS_GLIBC="$(store_path glibc)" -CROSS_GLIBC_STATIC="$(store_path glibc static)" -CROSS_KERNEL="$(store_path linux-libre-headers)" -CROSS_GCC="$(store_path gcc)" +CROSS_GLIBC="$(store_path glibc-cross-${HOST})" +CROSS_GLIBC_STATIC="$(store_path glibc-cross-${HOST} static)" +CROSS_KERNEL="$(store_path linux-libre-headers-cross-${HOST})" +CROSS_GCC="$(store_path gcc-cross-${HOST})" +CROSS_GCC_LIBS=( "${CROSS_GCC}/lib/gcc/${HOST}"/* ) # This expands to an array of directories... +CROSS_GCC_LIB="${CROSS_GCC_LIBS[0]}" # ...we just want the first one (there should only be one) # Set environment variables to point Guix's cross-toolchain to the right # includes/libs for $HOST -export CROSS_C_INCLUDE_PATH="${CROSS_GCC}/include:${CROSS_GLIBC}/include:${CROSS_KERNEL}/include" -export CROSS_CPLUS_INCLUDE_PATH="${CROSS_GCC}/include/c++:${CROSS_GLIBC}/include:${CROSS_KERNEL}/include" -export CROSS_LIBRARY_PATH="${CROSS_GLIBC}/lib:${CROSS_GLIBC_STATIC}/lib:${CROSS_GCC}/lib:${CROSS_GCC}/${HOST}/lib:${CROSS_KERNEL}/lib" +# +# NOTE: CROSS_C_INCLUDE_PATH is missing ${CROSS_GCC_LIB}/include-fixed, because +# the limits.h in it is missing a '#include_next <limits.h>' +# +export CROSS_C_INCLUDE_PATH="${CROSS_GCC_LIB}/include:${CROSS_GLIBC}/include:${CROSS_KERNEL}/include" +export CROSS_CPLUS_INCLUDE_PATH="${CROSS_GCC}/include/c++:${CROSS_GCC}/include/c++/${HOST}:${CROSS_GCC}/include/c++/backward:${CROSS_C_INCLUDE_PATH}" +export CROSS_LIBRARY_PATH="${CROSS_GCC}/lib:${CROSS_GCC}/${HOST}/lib:${CROSS_GCC_LIB}:${CROSS_GLIBC}/lib:${CROSS_GLIBC_STATIC}/lib" + +# Sanity check CROSS_*_PATH directories +IFS=':' read -ra PATHS <<< "${CROSS_C_INCLUDE_PATH}:${CROSS_CPLUS_INCLUDE_PATH}:${CROSS_LIBRARY_PATH}" +for p in "${PATHS[@]}"; do + if [ ! -d "$p" ]; then + echo "'$p' doesn't exist or isn't a directory... Aborting..." + exit 1 + fi +done # Disable Guix ld auto-rpath behavior export GUIX_LD_WRAPPER_DISABLE_RPATH=yes @@ -121,17 +136,10 @@ DISTNAME="$(basename "$SOURCEDIST" '.tar.gz')" # Binary Tarball Building # ########################### -# Create a spec file to normalize ssp linking behaviour -spec_file="$(mktemp)" -cat << EOF > "$spec_file" -*link_ssp: -%{fstack-protector|fstack-protector-all|fstack-protector-strong|fstack-protector-explicit:} -EOF - # Similar flags to Gitian CONFIGFLAGS="--enable-glibc-back-compat --enable-reduce-exports --disable-bench --disable-gui-tests" -HOST_CFLAGS="-O2 -g -specs=${spec_file} -ffile-prefix-map=${PWD}=." -HOST_CXXFLAGS="-O2 -g -specs=${spec_file} -ffile-prefix-map=${PWD}=." +HOST_CFLAGS="-O2 -g -ffile-prefix-map=${PWD}=." +HOST_CXXFLAGS="-O2 -g -ffile-prefix-map=${PWD}=." HOST_LDFLAGS="-Wl,--as-needed -Wl,--dynamic-linker=$glibc_dynamic_linker -static-libstdc++" # Make $HOST-specific native binaries from depends available in $PATH diff --git a/contrib/linearize/linearize-data.py b/contrib/linearize/linearize-data.py index e0718f1075..863b22f6b1 100755 --- a/contrib/linearize/linearize-data.py +++ b/contrib/linearize/linearize-data.py @@ -266,12 +266,12 @@ if __name__ == '__main__': f = open(sys.argv[1], encoding="utf8") for line in f: # skip comment lines - m = re.search('^\s*#', line) + m = re.search(r'^\s*#', line) if m: continue # parse key=value lines - m = re.search('^(\w+)\s*=\s*(\S.*)$', line) + m = re.search(r'^(\w+)\s*=\s*(\S.*)$', line) if m is None: continue settings[m.group(1)] = m.group(2) diff --git a/contrib/linearize/linearize-hashes.py b/contrib/linearize/linearize-hashes.py index 8529470e09..02c96d2a75 100755 --- a/contrib/linearize/linearize-hashes.py +++ b/contrib/linearize/linearize-hashes.py @@ -106,12 +106,12 @@ if __name__ == '__main__': f = open(sys.argv[1], encoding="utf8") for line in f: # skip comment lines - m = re.search('^\s*#', line) + m = re.search(r'^\s*#', line) if m: continue # parse key=value lines - m = re.search('^(\w+)\s*=\s*(\S.*)$', line) + m = re.search(r'^(\w+)\s*=\s*(\S.*)$', line) if m is None: continue settings[m.group(1)] = m.group(2) diff --git a/contrib/macdeploy/README.md b/contrib/macdeploy/README.md index 6163734e62..e90120ea79 100644 --- a/contrib/macdeploy/README.md +++ b/contrib/macdeploy/README.md @@ -1,7 +1,7 @@ ### MacDeploy ### For Snow Leopard (which uses [Python 2.6](http://www.python.org/download/releases/2.6/)), you will need the param_parser package: - + sudo easy_install argparse This script should not be run manually, instead, after building as usual: diff --git a/contrib/macdeploy/macdeployqtplus b/contrib/macdeploy/macdeployqtplus index 9da03e5b02..d8088aa123 100755 --- a/contrib/macdeploy/macdeployqtplus +++ b/contrib/macdeploy/macdeployqtplus @@ -19,6 +19,7 @@ import subprocess, sys, re, os, shutil, stat, os.path, time from string import Template from argparse import ArgumentParser +from typing import List, Optional # This is ported from the original macdeployqt with modifications @@ -48,18 +49,18 @@ class FrameworkInfo(object): return False def __str__(self): - return """ Framework name: %s - Framework directory: %s - Framework path: %s - Binary name: %s - Binary directory: %s - Binary path: %s - Version: %s - Install name: %s - Deployed install name: %s - Source file Path: %s - Deployed Directory (relative to bundle): %s -""" % (self.frameworkName, + return """ Framework name: {} + Framework directory: {} + Framework path: {} + Binary name: {} + Binary directory: {} + Binary path: {} + Version: {} + Install name: {} + Deployed install name: {} + Source file Path: {} + Deployed Directory (relative to bundle): {} +""".format(self.frameworkName, self.frameworkDirectory, self.frameworkPath, self.binaryName, @@ -85,7 +86,7 @@ class FrameworkInfo(object): bundleBinaryDirectory = "Contents/MacOS" @classmethod - def fromOtoolLibraryLine(cls, line): + def fromOtoolLibraryLine(cls, line: str) -> Optional['FrameworkInfo']: # Note: line must be trimmed if line == "": return None @@ -146,13 +147,12 @@ class FrameworkInfo(object): info.sourceContentsDirectory = os.path.join(info.frameworkPath, "Contents") info.sourceVersionContentsDirectory = os.path.join(info.frameworkPath, "Versions", info.version, "Contents") info.destinationResourcesDirectory = os.path.join(cls.bundleFrameworkDirectory, info.frameworkName, "Resources") - info.destinationContentsDirectory = os.path.join(cls.bundleFrameworkDirectory, info.frameworkName, "Contents") info.destinationVersionContentsDirectory = os.path.join(cls.bundleFrameworkDirectory, info.frameworkName, "Versions", info.version, "Contents") return info class ApplicationBundleInfo(object): - def __init__(self, path): + def __init__(self, path: str): self.path = path appName = "Bitcoin-Qt" self.binaryPath = os.path.join(path, "Contents", "MacOS", appName) @@ -167,7 +167,7 @@ class DeploymentInfo(object): self.pluginPath = None self.deployedFrameworks = [] - def detectQtPath(self, frameworkDirectory): + def detectQtPath(self, frameworkDirectory: str): parentDir = os.path.dirname(frameworkDirectory) if os.path.exists(os.path.join(parentDir, "translations")): # Classic layout, e.g. "/usr/local/Trolltech/Qt-4.x.x" @@ -180,9 +180,9 @@ class DeploymentInfo(object): if os.path.exists(pluginPath): self.pluginPath = pluginPath - def usesFramework(self, name): - nameDot = "%s." % name - libNameDot = "lib%s." % name + def usesFramework(self, name: str) -> bool: + nameDot = "{}.".format(name) + libNameDot = "lib{}.".format(name) for framework in self.deployedFrameworks: if framework.endswith(".framework"): if framework.startswith(nameDot): @@ -192,7 +192,7 @@ class DeploymentInfo(object): return True return False -def getFrameworks(binaryPath, verbose): +def getFrameworks(binaryPath: str, verbose: int) -> List[FrameworkInfo]: if verbose >= 3: print("Inspecting with otool: " + binaryPath) otoolbin=os.getenv("OTOOL", "otool") @@ -202,7 +202,7 @@ def getFrameworks(binaryPath, verbose): if verbose >= 1: sys.stderr.write(o_stderr) sys.stderr.flush() - raise RuntimeError("otool failed with return code %d" % otool.returncode) + raise RuntimeError("otool failed with return code {}".format(otool.returncode)) otoolLines = o_stdout.split("\n") otoolLines.pop(0) # First line is the inspected binary @@ -221,11 +221,11 @@ def getFrameworks(binaryPath, verbose): return libraries -def runInstallNameTool(action, *args): +def runInstallNameTool(action: str, *args): installnametoolbin=os.getenv("INSTALLNAMETOOL", "install_name_tool") subprocess.check_call([installnametoolbin, "-"+action] + list(args)) -def changeInstallName(oldName, newName, binaryPath, verbose): +def changeInstallName(oldName: str, newName: str, binaryPath: str, verbose: int): if verbose >= 3: print("Using install_name_tool:") print(" in", binaryPath) @@ -233,21 +233,21 @@ def changeInstallName(oldName, newName, binaryPath, verbose): print(" to", newName) runInstallNameTool("change", oldName, newName, binaryPath) -def changeIdentification(id, binaryPath, verbose): +def changeIdentification(id: str, binaryPath: str, verbose: int): if verbose >= 3: print("Using install_name_tool:") print(" change identification in", binaryPath) print(" to", id) runInstallNameTool("id", id, binaryPath) -def runStrip(binaryPath, verbose): +def runStrip(binaryPath: str, verbose: int): stripbin=os.getenv("STRIP", "strip") if verbose >= 3: print("Using strip:") print(" stripped", binaryPath) subprocess.check_call([stripbin, "-x", binaryPath]) -def copyFramework(framework, path, verbose): +def copyFramework(framework: FrameworkInfo, path: str, verbose: int) -> Optional[str]: if framework.sourceFilePath.startswith("Qt"): #standard place for Nokia Qt installer's frameworks fromPath = "/Library/Frameworks/" + framework.sourceFilePath @@ -309,7 +309,7 @@ def copyFramework(framework, path, verbose): return toPath -def deployFrameworks(frameworks, bundlePath, binaryPath, strip, verbose, deploymentInfo=None): +def deployFrameworks(frameworks: List[FrameworkInfo], bundlePath: str, binaryPath: str, strip: bool, verbose: int, deploymentInfo: Optional[DeploymentInfo] = None) -> DeploymentInfo: if deploymentInfo is None: deploymentInfo = DeploymentInfo() @@ -355,15 +355,15 @@ def deployFrameworks(frameworks, bundlePath, binaryPath, strip, verbose, deploym return deploymentInfo -def deployFrameworksForAppBundle(applicationBundle, strip, verbose): +def deployFrameworksForAppBundle(applicationBundle: ApplicationBundleInfo, strip: bool, verbose: int) -> DeploymentInfo: frameworks = getFrameworks(applicationBundle.binaryPath, verbose) if len(frameworks) == 0 and verbose >= 1: - print("Warning: Could not find any external frameworks to deploy in %s." % (applicationBundle.path)) + print("Warning: Could not find any external frameworks to deploy in {}.".format(applicationBundle.path)) return DeploymentInfo() else: return deployFrameworks(frameworks, applicationBundle.path, applicationBundle.binaryPath, strip, verbose) -def deployPlugins(appBundleInfo, deploymentInfo, strip, verbose): +def deployPlugins(appBundleInfo: ApplicationBundleInfo, deploymentInfo: DeploymentInfo, strip: bool, verbose: int): # Lookup available plugins, exclude unneeded plugins = [] if deploymentInfo.pluginPath is None: @@ -373,10 +373,12 @@ def deployPlugins(appBundleInfo, deploymentInfo, strip, verbose): if pluginDirectory == "designer": # Skip designer plugins continue - elif pluginDirectory == "phonon" or pluginDirectory == "phonon_backend": - # Deploy the phonon plugins only if phonon is in use - if not deploymentInfo.usesFramework("phonon"): - continue + elif pluginDirectory == "printsupport": + # Skip printsupport plugins + continue + elif pluginDirectory == "imageformats": + # Skip imageformats plugins + continue elif pluginDirectory == "sqldrivers": # Deploy the sql plugins only if QtSql is in use if not deploymentInfo.usesFramework("QtSql"): @@ -409,6 +411,42 @@ def deployPlugins(appBundleInfo, deploymentInfo, strip, verbose): # Deploy the mediaservice plugins only if QtMultimediaWidgets is in use if not deploymentInfo.usesFramework("QtMultimediaWidgets"): continue + elif pluginDirectory == "canbus": + # Deploy the canbus plugins only if QtSerialBus is in use + if not deploymentInfo.usesFramework("QtSerialBus"): + continue + elif pluginDirectory == "webview": + # Deploy the webview plugins only if QtWebView is in use + if not deploymentInfo.usesFramework("QtWebView"): + continue + elif pluginDirectory == "gamepads": + # Deploy the webview plugins only if QtGamepad is in use + if not deploymentInfo.usesFramework("QtGamepad"): + continue + elif pluginDirectory == "geoservices": + # Deploy the webview plugins only if QtLocation is in use + if not deploymentInfo.usesFramework("QtLocation"): + continue + elif pluginDirectory == "texttospeech": + # Deploy the texttospeech plugins only if QtTextToSpeech is in use + if not deploymentInfo.usesFramework("QtTextToSpeech"): + continue + elif pluginDirectory == "virtualkeyboard": + # Deploy the virtualkeyboard plugins only if QtVirtualKeyboard is in use + if not deploymentInfo.usesFramework("QtVirtualKeyboard"): + continue + elif pluginDirectory == "sceneparsers": + # Deploy the virtualkeyboard plugins only if Qt3DCore is in use + if not deploymentInfo.usesFramework("Qt3DCore"): + continue + elif pluginDirectory == "renderplugins": + # Deploy the renderplugins plugins only if Qt3DCore is in use + if not deploymentInfo.usesFramework("Qt3DCore"): + continue + elif pluginDirectory == "geometryloaders": + # Deploy the geometryloaders plugins only if Qt3DCore is in use + if not deploymentInfo.usesFramework("Qt3DCore"): + continue for pluginName in filenames: pluginPath = os.path.join(pluginDirectory, pluginName) @@ -431,6 +469,10 @@ def deployPlugins(appBundleInfo, deploymentInfo, strip, verbose): # Deploy the accessible qtquick plugin only if QtQuick is in use if not deploymentInfo.usesFramework("QtQuick"): continue + elif pluginPath == "platforminputcontexts/libqtvirtualkeyboardplugin.dylib": + # Deploy the virtualkeyboardplugin plugin only if QtVirtualKeyboard is in use + if not deploymentInfo.usesFramework("QtVirtualKeyboard"): + continue plugins.append((pluginDirectory, pluginName)) @@ -499,7 +541,7 @@ app_bundle = config.app_bundle[0] if not os.path.exists(app_bundle): if verbose >= 1: - sys.stderr.write("Error: Could not find app bundle \"%s\"\n" % (app_bundle)) + sys.stderr.write("Error: Could not find app bundle \"{}\"\n".format(app_bundle)) sys.exit(1) app_bundle_name = os.path.splitext(os.path.basename(app_bundle))[0] @@ -511,7 +553,7 @@ if config.translations_dir and config.translations_dir[0]: translations_dir = config.translations_dir[0] else: if verbose >= 1: - sys.stderr.write("Error: Could not find translation dir \"%s\"\n" % (translations_dir)) + sys.stderr.write("Error: Could not find translation dir \"{}\"\n".format(translations_dir)) sys.exit(1) # ------------------------------------------------ @@ -520,7 +562,7 @@ for p in config.add_resources: print("Checking for \"%s\"..." % p) if not os.path.exists(p): if verbose >= 1: - sys.stderr.write("Error: Could not find additional resource file \"%s\"\n" % (p)) + sys.stderr.write("Error: Could not find additional resource file \"{}\"\n".format(p)) sys.exit(1) # ------------------------------------------------ @@ -537,17 +579,17 @@ if len(config.fancy) == 1: p = config.fancy[0] if verbose >= 3: - print("Fancy: Loading \"%s\"..." % p) + print("Fancy: Loading \"{}\"...".format(p)) if not os.path.exists(p): if verbose >= 1: - sys.stderr.write("Error: Could not find fancy disk image plist at \"%s\"\n" % (p)) + sys.stderr.write("Error: Could not find fancy disk image plist at \"{}\"\n".format(p)) sys.exit(1) try: fancy = plistlib.readPlist(p) except: if verbose >= 1: - sys.stderr.write("Error: Could not parse fancy disk image plist at \"%s\"\n" % (p)) + sys.stderr.write("Error: Could not parse fancy disk image plist at \"{}\"\n".format(p)) sys.exit(1) try: @@ -561,18 +603,18 @@ if len(config.fancy) == 1: assert isinstance(value, list) and len(value) == 2 and isinstance(value[0], int) and isinstance(value[1], int) except: if verbose >= 1: - sys.stderr.write("Error: Bad format of fancy disk image plist at \"%s\"\n" % (p)) + sys.stderr.write("Error: Bad format of fancy disk image plist at \"{}\"\n".format(p)) sys.exit(1) if "background_picture" in fancy: bp = fancy["background_picture"] if verbose >= 3: - print("Fancy: Resolving background picture \"%s\"..." % bp) + print("Fancy: Resolving background picture \"{}\"...".format(bp)) if not os.path.exists(bp): bp = os.path.join(os.path.dirname(p), bp) if not os.path.exists(bp): if verbose >= 1: - sys.stderr.write("Error: Could not find background picture at \"%s\" or \"%s\"\n" % (fancy["background_picture"], bp)) + sys.stderr.write("Error: Could not find background picture at \"{}\" or \"{}\"\n".format(fancy["background_picture"], bp)) sys.exit(1) else: fancy["background_picture"] = bp @@ -623,7 +665,7 @@ try: config.plugins = False except RuntimeError as e: if verbose >= 1: - sys.stderr.write("Error: %s\n" % str(e)) + sys.stderr.write("Error: {}\n".format(str(e))) sys.exit(1) # ------------------------------------------------ @@ -636,7 +678,7 @@ if config.plugins: deployPlugins(applicationBundle, deploymentInfo, config.strip, verbose) except RuntimeError as e: if verbose >= 1: - sys.stderr.write("Error: %s\n" % str(e)) + sys.stderr.write("Error: {}\n".format(str(e))) sys.exit(1) # ------------------------------------------------ @@ -652,14 +694,14 @@ else: else: sys.stderr.write("Error: Could not find Qt translation path\n") sys.exit(1) - add_qt_tr = ["qt_%s.qm" % lng for lng in config.add_qt_tr[0].split(",")] + add_qt_tr = ["qt_{}.qm".format(lng) for lng in config.add_qt_tr[0].split(",")] for lng_file in add_qt_tr: p = os.path.join(qt_tr_dir, lng_file) if verbose >= 3: - print("Checking for \"%s\"..." % p) + print("Checking for \"{}\"...".format(p)) if not os.path.exists(p): if verbose >= 1: - sys.stderr.write("Error: Could not find Qt translation file \"%s\"\n" % (lng_file)) + sys.stderr.write("Error: Could not find Qt translation file \"{}\"\n".format(lng_file)) sys.exit(1) # ------------------------------------------------ @@ -700,14 +742,14 @@ if config.sign and 'CODESIGNARGS' not in os.environ: print("You must set the CODESIGNARGS environment variable. Skipping signing.") elif config.sign: if verbose >= 1: - print("Code-signing app bundle %s"%(target,)) - subprocess.check_call("codesign --force %s %s"%(os.environ['CODESIGNARGS'], target), shell=True) + print("Code-signing app bundle {}".format(target)) + subprocess.check_call("codesign --force {} {}".format(os.environ['CODESIGNARGS'], target), shell=True) # ------------------------------------------------ if config.dmg is not None: - def runHDIUtil(verb, image_basename, **kwargs): + def runHDIUtil(verb: str, image_basename: str, **kwargs) -> int: hdiutil_args = ["hdiutil", verb, image_basename + ".dmg"] if "capture_stdout" in kwargs: del kwargs["capture_stdout"] @@ -721,7 +763,7 @@ if config.dmg is not None: for key, value in kwargs.items(): hdiutil_args.append("-" + key) - if not value is True: + if value is not True: hdiutil_args.append(str(value)) return run(hdiutil_args, universal_newlines=True) @@ -765,8 +807,8 @@ if config.dmg is not None: output = runHDIUtil("attach", dmg_name + ".temp", readwrite=True, noverify=True, noautoopen=True, capture_stdout=True) except subprocess.CalledProcessError as e: sys.exit(e.returncode) - - m = re.search("/Volumes/(.+$)", output) + + m = re.search(r"/Volumes/(.+$)", output) disk_root = m.group(0) disk_name = m.group(1) diff --git a/contrib/seeds/generate-seeds.py b/contrib/seeds/generate-seeds.py index fe7cd1d597..7630a7a4fa 100755 --- a/contrib/seeds/generate-seeds.py +++ b/contrib/seeds/generate-seeds.py @@ -74,7 +74,7 @@ def name_to_ipv6(addr): raise ValueError('Could not parse address %s' % addr) def parse_spec(s, defaultport): - match = re.match('\[([0-9a-fA-F:]+)\](?::([0-9]+))?$', s) + match = re.match(r'\[([0-9a-fA-F:]+)\](?::([0-9]+))?$', s) if match: # ipv6 host = match.group(1) port = match.group(2) @@ -136,4 +136,3 @@ def main(): if __name__ == '__main__': main() - diff --git a/contrib/seeds/makeseeds.py b/contrib/seeds/makeseeds.py index 523386e393..ec589d4c02 100755 --- a/contrib/seeds/makeseeds.py +++ b/contrib/seeds/makeseeds.py @@ -30,7 +30,15 @@ SUSPICIOUS_HOSTS = { PATTERN_IPV4 = re.compile(r"^((\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})):(\d+)$") PATTERN_IPV6 = re.compile(r"^\[([0-9a-z:]+)\]:(\d+)$") PATTERN_ONION = re.compile(r"^([abcdefghijklmnopqrstuvwxyz234567]{16}\.onion):(\d+)$") -PATTERN_AGENT = re.compile(r"^(/Satoshi:0.14.(0|1|2|99)/|/Satoshi:0.15.(0|1|2|99)|/Satoshi:0.16.(0|1|2|99)/)$") +PATTERN_AGENT = re.compile( + r"^/Satoshi:(" + r"0.14.(0|1|2|3|99)|" + r"0.15.(0|1|2|99)|" + r"0.16.(0|1|2|3|99)|" + r"0.17.(0|0.1|1|2|99)|" + r"0.18.(0|1|99)|" + r"0.19.99" + r")") def parseline(line): sline = line.split() @@ -99,6 +107,13 @@ def parseline(line): 'sortkey': sortkey, } +def dedup(ips): + '''deduplicate by address,port''' + d = {} + for ip in ips: + d[ip['ip'],ip['port']] = ip + return list(d.values()) + def filtermultiport(ips): '''Filter out hosts with more nodes per IP''' hist = collections.defaultdict(list) @@ -106,71 +121,105 @@ def filtermultiport(ips): hist[ip['sortkey']].append(ip) return [value[0] for (key,value) in list(hist.items()) if len(value)==1] +def lookup_asn(net, ip): + ''' + Look up the asn for an IP (4 or 6) address by querying cymru.com, or None + if it could not be found. + ''' + try: + if net == 'ipv4': + ipaddr = ip + prefix = '.origin' + else: # http://www.team-cymru.com/IP-ASN-mapping.html + res = str() # 2001:4860:b002:23::68 + for nb in ip.split(':')[:4]: # pick the first 4 nibbles + for c in nb.zfill(4): # right padded with '0' + res += c + '.' # 2001 4860 b002 0023 + ipaddr = res.rstrip('.') # 2.0.0.1.4.8.6.0.b.0.0.2.0.0.2.3 + prefix = '.origin6' + + asn = int([x.to_text() for x in dns.resolver.query('.'.join( + reversed(ipaddr.split('.'))) + prefix + '.asn.cymru.com', + 'TXT').response.answer][0].split('\"')[1].split(' ')[0]) + return asn + except Exception: + sys.stderr.write('ERR: Could not resolve ASN for "' + ip + '"\n') + return None + # Based on Greg Maxwell's seed_filter.py -def filterbyasn(ips, max_per_asn, max_total): +def filterbyasn(ips, max_per_asn, max_per_net): # Sift out ips by type ips_ipv46 = [ip for ip in ips if ip['net'] in ['ipv4', 'ipv6']] ips_onion = [ip for ip in ips if ip['net'] == 'onion'] - # Filter IPv46 by ASN + # Filter IPv46 by ASN, and limit to max_per_net per network result = [] - asn_count = {} + net_count = collections.defaultdict(int) + asn_count = collections.defaultdict(int) for ip in ips_ipv46: - if len(result) == max_total: - break - try: - if ip['net'] == 'ipv4': - ipaddr = ip['ip'] - prefix = '.origin' - else: # http://www.team-cymru.com/IP-ASN-mapping.html - res = str() # 2001:4860:b002:23::68 - for nb in ip['ip'].split(':')[:4]: # pick the first 4 nibbles - for c in nb.zfill(4): # right padded with '0' - res += c + '.' # 2001 4860 b002 0023 - ipaddr = res.rstrip('.') # 2.0.0.1.4.8.6.0.b.0.0.2.0.0.2.3 - prefix = '.origin6' - - asn = int([x.to_text() for x in dns.resolver.query('.'.join( - reversed(ipaddr.split('.'))) + prefix + '.asn.cymru.com', - 'TXT').response.answer][0].split('\"')[1].split(' ')[0]) - if asn not in asn_count: - asn_count[asn] = 0 - if asn_count[asn] == max_per_asn: - continue - asn_count[asn] += 1 - result.append(ip) - except: - sys.stderr.write('ERR: Could not resolve ASN for "' + ip['ip'] + '"\n') - - # Add back Onions - result.extend(ips_onion) + if net_count[ip['net']] == max_per_net: + continue + asn = lookup_asn(ip['net'], ip['ip']) + if asn is None or asn_count[asn] == max_per_asn: + continue + asn_count[asn] += 1 + net_count[ip['net']] += 1 + result.append(ip) + + # Add back Onions (up to max_per_net) + result.extend(ips_onion[0:max_per_net]) return result +def ip_stats(ips): + hist = collections.defaultdict(int) + for ip in ips: + if ip is not None: + hist[ip['net']] += 1 + + return '%6d %6d %6d' % (hist['ipv4'], hist['ipv6'], hist['onion']) + def main(): lines = sys.stdin.readlines() ips = [parseline(line) for line in lines] - # Skip entries with valid address. + print('\x1b[7m IPv4 IPv6 Onion Pass \x1b[0m', file=sys.stderr) + print('%s Initial' % (ip_stats(ips)), file=sys.stderr) + # Skip entries with invalid address. ips = [ip for ip in ips if ip is not None] + print('%s Skip entries with invalid address' % (ip_stats(ips)), file=sys.stderr) + # Skip duplicates (in case multiple seeds files were concatenated) + ips = dedup(ips) + print('%s After removing duplicates' % (ip_stats(ips)), file=sys.stderr) # Skip entries from suspicious hosts. ips = [ip for ip in ips if ip['ip'] not in SUSPICIOUS_HOSTS] + print('%s Skip entries from suspicious hosts' % (ip_stats(ips)), file=sys.stderr) # Enforce minimal number of blocks. ips = [ip for ip in ips if ip['blocks'] >= MIN_BLOCKS] + print('%s Enforce minimal number of blocks' % (ip_stats(ips)), file=sys.stderr) # Require service bit 1. ips = [ip for ip in ips if (ip['service'] & 1) == 1] - # Require at least 50% 30-day uptime. - ips = [ip for ip in ips if ip['uptime'] > 50] + print('%s Require service bit 1' % (ip_stats(ips)), file=sys.stderr) + # Require at least 50% 30-day uptime for clearnet, 10% for onion. + req_uptime = { + 'ipv4': 50, + 'ipv6': 50, + 'onion': 10, + } + ips = [ip for ip in ips if ip['uptime'] > req_uptime[ip['net']]] + print('%s Require minimum uptime' % (ip_stats(ips)), file=sys.stderr) # Require a known and recent user agent. ips = [ip for ip in ips if PATTERN_AGENT.match(ip['agent'])] + print('%s Require a known and recent user agent' % (ip_stats(ips)), file=sys.stderr) # Sort by availability (and use last success as tie breaker) ips.sort(key=lambda x: (x['uptime'], x['lastsuccess'], x['ip']), reverse=True) # Filter out hosts with multiple bitcoin ports, these are likely abusive ips = filtermultiport(ips) + print('%s Filter out hosts with multiple bitcoin ports' % (ip_stats(ips)), file=sys.stderr) # Look up ASNs and limit results, both per ASN and globally. ips = filterbyasn(ips, MAX_SEEDS_PER_ASN, NSEEDS) + print('%s Look up ASNs and limit results per ASN and per net' % (ip_stats(ips)), file=sys.stderr) # Sort the results by IP address (for deterministic output). ips.sort(key=lambda x: (x['net'], x['sortkey'])) - for ip in ips: if ip['net'] == 'ipv6': print('[%s]:%i' % (ip['ip'], ip['port'])) diff --git a/contrib/seeds/nodes_main.txt b/contrib/seeds/nodes_main.txt index c0b5b299bd..89eb1d1638 100644 --- a/contrib/seeds/nodes_main.txt +++ b/contrib/seeds/nodes_main.txt @@ -1,1268 +1,752 @@ -2.132.100.47:8333 -5.1.97.4:8333 -5.39.174.116:8333 -5.45.79.14:8333 -5.53.16.133:8333 -5.101.139.166:8333 -5.178.78.139:8333 -5.189.176.17:8333 -5.228.64.71:8333 -8.18.38.122:8333 -13.115.96.63:8333 -14.2.124.84:8333 -14.3.170.1:8333 -23.94.28.250:8333 -23.111.172.106:8333 -23.125.224.84:8333 -23.152.0.108:8333 -23.175.0.222:8333 -23.229.16.234:8333 -23.233.6.70:8333 -24.142.34.253:8333 -24.171.203.87:8333 +2.24.141.73:8333 +5.8.18.29:8333 +5.43.228.99:8333 +5.145.10.122:8333 +5.166.35.47:8333 +5.188.187.130:8333 +5.199.133.193:8333 +5.206.226.216:8333 +5.206.226.231:8333 +13.92.254.226:8335 +13.125.188.128:8333 +18.228.144.20:8333 +23.175.0.200:8333 +23.226.90.172:8333 +23.233.107.28:8333 +23.245.24.154:8333 +24.121.16.35:8333 +24.150.94.79:8333 24.188.200.170:8333 -24.216.65.41:8333 -24.227.69.146:8333 -27.33.11.193:8333 -31.24.11.139:8333 -31.28.10.13:8333 -31.165.17.164:8333 -31.179.204.142:8333 -31.186.96.186:8333 -31.210.172.21:8333 -31.211.102.129:62734 -34.217.122.178:8333 -35.230.64.29:8333 -35.231.225.42:8333 -36.3.172.13:8333 -36.251.163.42:8333 -37.136.97.246:8333 -37.153.1.150:8333 -37.153.1.157:8333 -37.228.92.110:8333 -37.252.14.22:8333 -38.27.101.224:8333 -38.102.134.85:8333 -38.104.225.30:8333 -43.229.76.38:8333 -45.40.132.57:8333 -45.45.34.122:8333 -45.48.177.222:8333 -46.19.34.236:8333 -46.28.66.196:8333 -46.28.204.21:8333 -46.28.205.161:8333 -46.30.42.144:8333 -46.138.139.195:8333 -46.165.245.221:8333 -46.166.129.155:8333 -46.166.160.52:8333 -46.166.160.56:8333 -46.188.44.82:8333 -46.188.126.74:8333 -46.229.165.145:8333 -46.229.168.201:8333 -46.229.238.187:8333 -47.54.204.246:8333 -47.74.128.138:8333 -47.94.224.99:8333 -47.97.96.198:8333 -47.187.36.48:8333 -47.218.16.81:8333 -47.223.66.222:8333 -47.254.128.15:8333 -50.31.170.53:8333 -50.35.67.146:8333 -50.76.96.230:8333 -50.82.177.142:8333 -51.15.3.46:8333 -51.175.141.243:8333 -52.144.47.153:8333 -52.232.38.122:8333 -54.38.192.164:8333 -54.85.65.6:8333 -54.91.227.188:8333 -58.180.36.14:8333 -59.106.208.68:8333 -60.70.73.26:8333 -61.160.234.57:8333 -62.43.198.56:8333 -62.45.0.15:8333 +24.246.31.205:8333 +27.102.102.157:8333 +31.6.98.94:8333 +31.20.226.115:8333 +31.21.182.79:8333 +31.43.140.190:8333 +31.132.135.134:8333 +31.173.48.61:8333 +32.214.183.114:8333 +34.231.234.150:8333 +35.209.114.159:8333 +35.213.18.190:8333 +37.97.228.224:8333 +37.116.95.41:8333 +37.123.132.33:8333 +37.133.140.169:8334 +37.134.165.205:8333 +37.191.253.125:8333 +39.108.68.237:7781 +40.78.19.149:8333 +42.60.217.183:8333 +43.229.132.102:8333 +45.58.126.138:8333 +46.28.132.34:8333 +46.166.162.45:20001 +46.166.176.137:8333 +46.227.68.104:8333 +46.227.68.105:8333 +47.74.32.190:8885 +47.89.19.134:30303 +47.97.117.250:8333 +50.2.13.166:8333 +50.5.163.139:8333 +50.34.65.217:8333 +50.66.209.54:8333 +50.67.179.36:8333 +51.15.166.138:8333 +51.15.239.164:8333 +51.154.60.34:8333 +51.154.136.60:8333 +52.116.159.247:8333 +54.167.232.37:8333 +58.22.123.120:8333 +58.158.0.86:8333 +62.45.159.66:8333 +62.75.191.166:8333 +62.75.210.81:8333 +62.97.244.242:8333 62.107.200.30:8333 -62.133.194.2:8333 -62.138.3.224:8333 -62.146.70.216:8333 -64.78.163.10:8333 -64.120.110.2:8333 -64.131.160.31:8333 -66.18.172.16:8333 -66.85.74.242:8333 -66.110.132.10:8333 -66.114.33.90:8333 -66.180.64.95:8333 -66.222.164.188:8333 -67.11.139.67:8333 -67.43.191.118:8333 -67.61.137.157:8333 -67.193.184.12:8333 +62.138.0.217:8333 +62.213.214.207:8333 +64.98.18.21:8333 +65.79.145.209:8333 +66.151.242.154:8335 +66.206.13.51:8333 +66.248.206.86:8333 +67.40.207.169:8333 +67.149.252.79:8333 +67.193.189.42:8333 67.210.228.203:8333 -67.215.12.43:8333 -67.253.72.119:8333 -68.201.228.6:8333 +67.220.22.78:8333 +67.222.131.151:8333 +68.168.122.2:8333 68.202.128.19:8333 -69.30.218.226:8333 -69.61.35.175:8333 -69.61.171.22:8333 -69.125.194.25:8333 -70.35.98.12:8333 -70.103.171.66:8333 -70.172.252.29:8333 -71.34.96.135:8333 -71.68.48.149:8333 -71.93.161.162:8333 -71.162.192.5:8333 -72.11.174.71:8333 -72.50.240.124:8333 -72.70.32.215:8333 -72.211.196.232:8333 -72.234.112.22:8333 -72.253.237.0:8333 -73.241.192.40:8333 -74.15.230.112:8333 -74.83.79.52:8333 -74.126.14.27:8333 -75.76.137.164:8333 -76.64.166.230:8333 -76.191.79.98:8333 -77.37.170.106:8333 -77.70.107.83:8333 -77.95.226.194:8333 -77.111.172.134:8333 -77.163.136.136:8333 -77.203.13.57:8333 -77.239.37.12:8333 -77.240.168.19:8333 -77.244.219.164:8333 -78.31.67.156:8333 -78.34.2.126:8333 -78.108.187.246:8333 -78.109.163.153:8333 -79.28.205.145:8333 -79.66.70.89:8333 -79.132.230.144:8333 -80.209.224.79:8333 -80.211.252.104:8333 -80.229.28.60:8333 -81.7.13.84:8333 +68.206.21.144:8333 +69.30.215.42:8333 +69.59.18.22:8333 +69.70.170.178:8333 +69.132.150.43:8333 +69.145.122.160:8333 +70.26.149.104:8333 +70.51.142.43:8333 +70.63.170.86:8333 +71.57.73.173:8333 +71.237.255.140:8333 +72.24.235.10:8333 +72.95.104.94:8333 +72.231.187.25:8333 +72.253.239.246:8333 +74.78.140.178:8333 +74.83.234.97:8333 +74.84.128.158:9333 +74.197.236.58:8333 +74.208.94.172:8333 +74.220.255.190:8333 +75.101.96.6:8333 +75.157.77.34:8333 +76.93.183.209:8333 +76.174.129.203:8333 +77.53.158.137:8333 +77.85.204.149:8333 +77.120.119.27:8433 +77.134.172.81:8333 +78.42.12.201:8333 +78.58.140.102:8333 +78.108.108.162:8333 +78.119.180.62:8333 +78.128.62.52:8333 +78.130.148.218:8885 +78.130.161.76:8333 +78.143.214.223:8333 +79.77.33.128:8333 +79.175.125.210:8333 +79.175.154.228:8333 +80.79.114.34:8333 +80.89.203.172:8001 +80.100.128.128:8333 +80.122.43.78:8333 +80.151.124.127:8333 +80.167.79.174:8333 +80.211.191.11:8333 +80.229.151.187:8333 +81.4.102.69:8333 +81.4.102.91:8333 +81.6.34.154:8333 81.7.16.182:8333 -81.18.224.62:8333 -81.171.27.138:8333 -81.187.80.221:8333 -81.217.112.225:8333 -81.245.141.6:8333 -82.43.171.91:8333 -82.102.10.251:8333 -82.118.234.178:8333 -82.144.197.93:8333 -82.161.109.190:8333 -82.193.102.228:8333 -82.193.109.199:8333 -82.199.102.10:8333 -82.212.130.94:8333 -82.213.208.16:8333 -82.217.67.17:8333 -82.221.108.27:8333 -82.221.133.174:8333 -83.55.130.30:8333 -83.77.39.46:8333 -83.137.41.10:8333 -83.149.70.48:8333 -83.151.233.218:8333 -83.162.43.154:8333 -83.164.131.243:8333 -83.221.11.7:8333 -83.243.128.13:8333 -84.16.38.218:8333 -84.38.3.249:8333 -84.75.26.172:8333 -84.200.106.128:8333 -84.212.250.219:8333 -84.215.134.195:8333 -84.245.27.209:8333 -84.254.40.152:8333 -84.255.193.28:8333 -85.10.112.194:8333 -85.93.2.76:54382 -85.94.172.33:8333 -85.129.0.126:8333 -85.145.168.159:8333 -85.170.238.26:8333 -85.195.232.197:8333 -85.214.68.122:8333 -85.214.235.137:8333 -85.218.48.146:8333 -85.220.165.205:8333 -85.229.134.98:8333 -85.241.49.242:8333 -86.25.32.77:8333 -86.41.89.170:8333 -86.50.143.43:8333 -86.61.67.183:8333 -86.137.26.210:8333 -86.177.194.215:8333 -87.157.177.58:8333 +81.7.17.202:8333 +81.25.71.68:8444 +81.235.185.150:8333 +82.23.106.56:8333 +82.29.58.109:8333 +82.117.166.77:8333 +82.145.41.24:8333 +82.146.153.130:8333 +82.149.97.25:17567 +82.150.180.30:8333 +82.177.176.24:8333 +82.194.153.233:8333 +82.197.215.125:8333 +82.197.218.97:8333 +82.199.102.133:8333 +82.200.205.30:8333 +82.221.111.136:8333 +83.32.70.197:8333 +83.58.134.138:8333 +83.85.131.168:8333 +83.163.211.75:8333 +83.208.254.182:8333 +83.243.191.199:8333 +84.46.116.71:8333 +84.52.255.147:8333 +84.56.105.17:8333 +84.59.243.22:8333 +84.197.198.167:8333 +84.214.74.65:8333 +84.217.160.164:8333 +84.227.14.62:8333 +84.246.200.122:8333 +85.14.79.26:8333 +85.119.83.25:8333 +85.190.0.5:8333 +85.192.173.14:8333 +85.214.80.203:8333 +85.214.204.63:8333 +85.229.166.15:8333 +85.233.38.5:8333 +86.76.7.132:8333 +86.80.62.194:8333 +86.107.204.50:8333 +86.139.248.102:8333 +87.79.68.86:8333 +87.79.94.221:8333 +87.99.79.123:8333 +87.104.127.153:8333 +87.117.19.226:8333 +87.120.8.5:20008 87.224.163.66:8333 -87.236.196.169:8333 -87.246.46.132:8333 -88.99.64.76:8333 -89.1.100.49:8333 -89.10.155.88:8333 -89.27.59.246:8333 -89.163.132.73:8333 -89.179.240.131:8333 -89.205.81.5:8333 -89.212.75.6:8333 -89.217.130.147:8333 +87.233.181.146:8333 +87.249.207.89:8333 +88.86.116.140:8333 +88.86.116.141:8333 +88.86.243.241:8333 +88.87.93.52:1691 +88.98.198.130:8333 +88.99.109.66:8333 +88.119.128.36:8333 +88.129.253.46:8333 +88.212.44.33:8333 +89.23.35.9:8333 +89.47.217.222:8333 +89.106.199.38:8333 +89.142.75.60:8333 +89.179.126.97:8333 +89.212.9.96:8333 +89.218.198.46:8333 89.230.96.42:8333 -89.248.172.10:8333 -90.46.57.17:8333 -90.110.11.101:8333 -90.240.37.163:8333 -91.65.4.21:8333 -91.65.192.159:8333 -91.83.237.185:8333 -91.110.125.26:8333 -91.121.160.59:8333 +90.125.157.153:8333 +90.146.97.100:8333 +90.182.165.18:8333 +90.227.130.6:8333 +91.92.128.32:8333 +91.123.82.15:8333 91.135.0.187:8333 -91.143.109.68:8333 -91.195.42.134:8333 -91.221.70.137:8333 -92.35.132.5:8333 -92.42.37.141:8333 -92.54.16.144:8333 -92.62.34.184:8333 -92.186.231.240:8333 -93.123.80.47:8333 -93.170.13.15:8333 -93.171.201.68:8333 -93.179.197.152:8333 -93.190.206.151:8333 -93.191.131.177:8333 -93.208.132.214:8333 -94.104.97.247:8333 -94.156.35.8:8333 -94.199.173.113:8333 -95.42.2.113:8333 -95.94.225.61:8333 -95.154.237.24:8333 -95.158.39.64:8333 -95.163.71.126:8333 -95.163.106.139:8333 -95.208.163.214:8333 +91.152.121.138:8333 +91.178.131.108:8333 +91.185.198.234:8333 +91.193.237.88:8333 +91.202.133.75:8885 +91.204.99.178:8333 +91.204.149.5:8333 +91.216.149.28:8333 +91.219.25.232:8333 +91.222.128.59:8333 +92.62.231.253:8333 +92.63.192.206:8333 +92.63.197.243:8333 +92.63.197.245:8333 +92.119.112.59:8333 +92.243.244.101:8333 +92.255.176.109:8333 +93.38.119.141:8333 +93.50.177.66:8333 +93.79.204.222:10333 +93.115.28.30:11100 +93.115.89.76:8333 +93.115.240.26:8333 +93.123.180.164:8333 +93.126.94.192:8333 +93.170.128.106:8333 +93.185.103.70:8333 +93.189.145.169:8333 +93.190.142.127:8333 +93.228.3.234:8333 +94.19.128.204:8333 +94.26.49.71:8333 +94.63.65.127:8333 +94.72.143.28:8333 +94.104.217.250:8333 +94.209.115.52:8333 +94.237.72.166:8333 +94.242.255.31:8333 +95.24.48.84:15426 +95.69.249.63:8333 +95.79.35.133:8333 +95.87.226.56:8333 +95.91.80.140:8333 +95.102.60.168:8333 +95.154.90.99:8333 +95.156.252.34:8333 +95.165.175.75:8333 +95.174.125.24:18333 +95.183.54.101:12853 +95.211.189.3:8333 95.213.143.13:8333 -95.226.77.108:8333 -96.3.74.66:8333 -96.23.128.65:8333 -96.27.8.242:8333 -96.27.129.94:8333 -96.126.100.148:8333 -97.74.6.105:8333 -97.116.160.102:8333 -98.7.64.249:8333 -98.10.106.49:8333 -98.25.197.125:8333 -98.29.7.103:8333 -98.127.130.17:8333 -99.224.192.201:8333 -101.190.172.209:8333 -103.35.151.76:8334 -103.74.193.127:8333 -103.80.133.191:8333 -103.80.168.57:8333 -103.99.168.102:8333 -103.194.42.10:8333 -104.168.101.207:8333 -104.200.67.162:8333 -104.207.132.42:8333 -104.237.4.202:8333 -107.155.72.108:8333 -107.183.37.162:8333 -108.175.3.18:8333 -108.220.192.57:8333 -109.61.102.5:8333 -109.206.177.21:8333 -109.237.111.156:8333 -115.68.47.82:8333 -116.88.75.110:8333 -118.67.201.40:8333 -119.28.4.230:8333 -119.28.130.210:8333 -120.31.143.167:8333 -120.220.14.92:8333 -120.220.14.93:8333 -124.18.133.220:8333 -126.207.39.22:8333 -128.77.37.214:8333 -128.125.100.2:8333 -129.158.74.237:8333 -129.213.32.176:8333 -131.113.41.119:8333 -131.113.41.125:8333 -131.114.10.233:8333 -131.188.40.191:8333 -131.188.42.36:8333 -134.0.112.92:8333 -134.3.26.190:8333 -135.23.196.24:8333 -135.84.207.4:8333 -136.59.129.125:8333 -136.61.239.7:8333 -137.117.164.18:8333 -139.130.41.82:8333 -141.134.71.188:8333 -141.213.6.57:8333 -141.223.82.139:8333 -142.0.130.49:8333 -142.0.130.53:8333 -144.118.141.232:8333 -148.66.58.146:8333 -150.95.130.17:8333 -150.187.36.233:8333 -150.249.76.102:8333 -153.125.129.187:8333 -153.125.224.107:8333 -154.48.236.250:8887 -154.66.207.126:8333 -155.143.140.186:8333 -157.131.142.164:8333 -158.64.79.182:8333 -158.85.93.163:8333 -158.140.128.239:8333 -158.174.131.171:8333 -159.8.4.19:8333 -159.217.144.68:8333 -159.217.144.252:8333 -159.253.47.202:8333 -162.155.64.226:8333 -162.222.100.118:8333 -162.255.168.27:8333 -162.255.168.30:8333 -163.158.228.125:8333 -165.227.96.38:8333 -169.229.238.17:8333 -171.25.165.145:8333 +95.213.184.109:778 +96.9.80.109:8333 +96.47.122.171:8333 +97.81.244.191:8333 +97.99.13.150:8333 +97.104.206.3:8333 +98.116.105.49:8333 +99.224.131.4:8333 +101.92.39.116:8333 +101.100.163.118:8327 +101.100.174.24:8333 +101.251.68.146:12337 +102.132.229.253:8333 +103.14.244.190:8333 +103.16.128.63:8333 +103.59.144.135:8333 +103.59.144.238:8333 +103.99.168.100:8333 +103.99.168.130:8333 +103.100.220.46:8333 +103.105.56.82:8333 +103.106.208.207:8333 +103.106.211.107:8333 +103.108.228.51:8333 +104.11.144.71:8333 +104.128.228.252:8333 +104.152.204.204:8333 +104.153.30.236:8333 +104.155.233.13:8333 +104.198.126.116:8333 +104.245.125.251:8333 +106.12.57.72:8333 +106.72.36.96:46289 +106.163.158.127:8333 +107.150.41.179:8333 +107.191.116.103:8333 +108.15.243.207:8333 +108.58.252.82:8333 +108.160.202.208:8333 +108.213.205.103:8333 +109.72.83.127:8333 +109.99.63.159:8333 +109.104.8.48:8333 +109.183.251.77:8333 +109.198.191.22:8333 +109.236.90.122:58333 +109.238.81.82:8333 +109.248.206.13:8333 +109.252.133.57:8333 +111.90.145.57:8333 +111.90.159.184:50001 +113.35.179.149:8333 +113.52.135.125:8333 +115.47.141.250:8885 +115.70.110.4:8333 +116.58.171.67:8333 +118.1.96.81:8333 +118.103.126.140:28333 +119.29.54.159:8333 +119.207.78.152:8333 +121.211.151.99:8333 +122.112.148.153:8339 +124.160.119.93:8333 +128.197.128.222:8333 +129.13.189.212:8333 +129.97.243.18:8333 +130.185.77.105:8333 +130.255.187.86:8333 +131.114.10.236:8333 +131.188.40.34:8333 +132.249.239.163:8333 +133.18.1.114:8333 +134.19.186.195:8333 +136.36.123.20:8333 +136.56.42.119:8333 +137.226.34.46:8333 +138.68.20.137:8333 +141.101.8.36:8333 +145.239.9.3:8333 +145.249.106.103:8333 +146.255.227.182:4033 +147.192.18.175:8333 +147.253.54.26:8333 +148.66.58.58:8333 +148.70.82.85:8333 +149.90.34.119:8333 +150.143.231.72:8333 +153.92.127.216:8333 +153.120.115.15:8333 +153.124.187.220:8333 +154.209.1.138:8333 +154.211.159.200:8333 +155.4.52.45:8333 +156.19.19.90:8333 +157.7.211.107:8333 +159.100.248.234:8333 +159.138.45.220:22235 +160.16.0.30:8333 +162.154.207.147:8333 +163.158.243.230:8333 +166.62.82.103:32771 +166.62.100.55:8333 +167.179.136.11:8333 +168.235.74.110:8333 +169.55.182.185:8333 171.33.177.9:8333 -172.72.228.93:8333 -172.96.161.244:8333 -172.102.228.150:8333 -172.118.136.98:8333 -173.46.65.8:8333 -173.212.193.35:8333 -173.239.33.85:8333 -173.243.64.48:8333 -174.115.129.37:8333 -176.12.6.59:8333 -176.107.184.29:8333 -176.123.10.192:8333 +172.99.120.113:8333 +172.105.112.233:8333 +172.110.30.81:8333 +173.21.218.95:8333 +173.23.103.30:8000 +173.51.177.2:8333 +173.89.28.137:8333 +173.208.128.10:8333 +173.249.11.207:18333 +174.65.135.60:8333 +176.38.7.43:8333 +176.92.150.12:8333 +176.99.2.207:8333 176.126.167.10:8333 -176.185.235.163:8333 -176.223.130.254:8333 -178.0.71.136:8333 -178.12.32.39:8333 -178.85.64.212:8333 -178.124.162.209:8333 -178.128.192.21:8333 -178.151.133.56:8333 -178.193.96.201:8333 -178.248.200.126:8333 -178.254.7.88:8333 -180.233.106.171:8333 -181.166.168.210:8333 -183.66.227.70:12060 -183.111.108.56:8333 -184.70.33.190:8333 -184.105.70.100:8333 -184.105.70.101:8333 -185.12.7.38:8333 -185.21.216.134:8333 +176.212.185.153:8333 +176.223.136.171:8333 +177.52.173.62:8333 +178.33.136.162:8333 +178.128.39.110:8333 +178.143.50.8:8333 +178.198.60.155:8333 +178.236.137.63:8333 +179.48.251.41:8333 +180.150.52.37:8333 +183.230.93.139:8333 +184.80.255.250:8333 +184.95.58.166:8336 +184.180.129.98:8333 +185.19.28.195:8333 185.25.48.184:8333 -185.25.48.217:8333 185.25.60.199:8333 -185.28.76.179:8333 -185.35.139.54:8333 -185.44.78.208:8333 -185.47.132.55:8333 -185.51.128.27:8333 -185.59.100.107:8333 -185.67.175.75:8333 -185.67.204.76:8333 -185.67.204.80:8333 -185.70.105.74:8339 -185.85.3.140:8333 -185.86.15.23:8333 -185.86.15.25:8333 -185.102.71.6:8333 -185.117.74.21:8333 -185.121.173.223:8333 -185.128.40.122:8333 -185.145.131.218:8333 -185.147.237.169:8333 -185.162.128.83:8333 -185.165.76.220:8333 -185.172.165.130:8333 -185.177.5.4:8333 -185.183.131.75:8333 -185.186.208.208:8333 -185.215.224.22:8333 -185.224.80.108:8333 -185.225.16.4:8333 -185.243.112.214:8333 -185.244.193.18:8333 -185.248.160.66:8333 -186.19.136.144:8333 -188.68.38.243:8333 -188.68.240.89:8333 +185.50.68.64:8333 +185.53.158.12:8333 +185.61.79.213:8333 +185.64.116.15:8333 +185.95.219.53:8333 +185.130.215.73:8333 +185.130.215.187:8333 +185.141.60.127:8333 +185.147.11.108:8333 +185.154.159.164:9992 +185.198.56.77:8333 +185.198.59.183:8333 +185.216.140.33:8333 +185.217.241.142:8333 +185.249.199.106:8333 +188.42.40.234:18333 +188.65.212.138:8333 +188.65.212.211:8333 +188.68.45.143:8333 +188.120.246.125:8333 +188.134.5.47:8333 188.134.6.84:8333 -188.134.77.121:8333 -188.138.1.43:8333 -188.217.9.168:8333 -190.2.133.91:8333 +188.167.101.51:8333 +188.175.77.16:8333 +188.213.168.152:8333 +188.230.245.188:8333 +189.121.185.148:8333 +190.104.249.44:8333 190.184.198.34:8333 -190.211.204.68:8333 -192.139.35.143:8333 -192.162.100.156:8333 -192.162.101.250:8333 -192.206.202.6:8333 -192.207.12.244:8333 -192.207.12.245:8333 -192.228.101.157:8333 -193.112.192.73:8333 -193.170.166.12:8333 -194.15.231.236:8333 -194.165.16.33:8333 -194.181.80.77:8333 -194.186.160.253:8333 -194.247.13.7:8333 -194.247.13.32:8333 -195.0.203.21:8333 -195.38.168.114:8333 -195.43.141.28:8333 -195.95.225.248:8333 -195.123.224.7:8333 -195.154.235.79:8333 -195.169.99.82:8333 -195.201.0.81:8333 -197.155.6.43:8333 +190.210.234.38:8333 +190.218.190.85:8333 +192.3.11.20:8333 +192.3.11.24:8333 +192.166.47.32:8333 +192.167.149.143:8333 +192.169.94.29:8333 +192.169.94.70:8333 +192.198.90.98:8333 +192.254.89.134:8333 +192.254.89.220:8333 +193.41.78.125:8333 +193.46.83.8:8333 +193.59.41.11:8333 +193.77.135.181:8333 +193.84.116.22:8333 +193.194.163.53:8333 +194.71.225.55:8333 +194.135.135.69:8333 +194.158.92.150:8333 +195.13.220.165:8333 +195.56.63.10:8333 +195.135.194.8:8333 +195.168.36.20:8333 +195.201.33.0:8333 +195.202.169.149:8333 +195.242.93.189:8333 +198.1.231.6:8333 198.44.231.160:6333 -198.58.102.35:8333 -198.137.202.175:8333 -199.127.224.50:8333 -199.182.129.26:8333 -199.188.204.102:8333 -199.188.204.155:8333 -199.244.49.224:8333 -199.249.230.37:15738 -200.83.123.46:8333 -200.109.67.71:8333 -200.122.128.185:8333 -202.153.199.182:8333 -202.159.136.54:8333 -202.168.16.232:8333 -203.11.71.1:8333 -203.162.80.219:8333 -203.178.143.13:8333 -204.15.11.4:8333 -206.125.169.162:8333 -206.174.55.164:8333 -207.182.146.18:8333 -208.93.66.198:8333 -208.98.196.249:8333 -208.107.224.202:8333 -208.110.65.114:8333 -208.118.235.190:8333 -209.122.208.131:8333 -209.126.110.198:8333 -209.131.238.80:8333 -212.56.108.81:8333 -212.73.150.132:8333 -212.77.224.145:8333 -212.85.90.194:8333 -212.92.101.30:8333 -212.112.133.92:8333 -212.227.132.167:8333 -213.10.100.182:8333 -213.57.240.69:8333 -213.91.205.134:8333 -213.125.67.108:8333 -213.152.161.170:45893 -213.155.3.216:8333 -213.180.70.138:8333 -213.185.226.225:8333 -216.71.203.79:8333 -216.194.164.211:8333 -216.240.168.226:8333 -217.20.130.72:8333 -217.23.9.180:8333 +198.54.113.59:8333 +198.251.83.19:8333 +199.68.199.4:8333 +199.247.1.117:8333 +199.247.10.26:8333 +200.76.194.7:8333 +201.241.2.85:8333 +202.185.45.110:8333 +203.86.207.53:8333 +203.130.48.117:8885 +204.14.245.180:8333 +204.111.241.195:8333 +204.152.203.98:8333 +205.185.122.150:8333 +206.124.149.66:8333 +207.182.154.178:8333 +208.81.1.105:8333 +209.133.201.114:8333 +209.173.25.140:8333 +209.180.174.200:8333 +209.190.36.13:8333 +210.54.38.227:8333 +210.54.39.99:8333 +210.203.222.52:8223 +211.104.154.140:8333 +212.24.103.20:8333 +212.33.204.190:8333 +212.51.156.139:8333 +212.109.198.126:8333 +212.237.96.98:8333 +212.241.70.213:8333 +213.37.92.163:8333 +213.89.98.199:8333 +213.89.150.13:8333 +213.174.156.72:8333 +213.209.123.165:8333 +213.227.152.108:8333 +216.38.129.164:8333 +216.86.154.215:8333 +216.93.139.63:8333 +216.186.250.53:8333 +216.194.165.98:8333 +217.22.132.220:8333 +217.43.72.105:8333 217.64.47.138:8333 -217.169.14.90:8333 -218.245.1.205:8333 -220.130.128.58:8333 -220.133.39.61:8333 -222.239.193.116:8333 -222.239.193.120:8333 -[2001:0:4137:9e76:1cbd:3bc0:ade7:bf44]:8333 -[2001:0:4137:9e76:2046:150d:8d65:de4]:8333 -[2001:0:4137:9e76:2c99:3f36:d003:f47a]:8333 -[2001:0:4137:9e76:34b6:3910:a3dc:7bfa]:8333 -[2001:0:4137:9e76:3cec:2b5:525b:fb3c]:8333 -[2001:0:53aa:64c:c5:235d:a10d:e0]:8333 -[2001:0:53aa:64c:cbc:5ace:a625:39d1]:8333 -[2001:0:5ef5:79fb:38e5:36c1:d0ee:5d98]:8333 -[2001:0:5ef5:79fb:3c5c:c6c:39cf:69d3]:8333 -[2001:0:5ef5:79fb:896:ef4:ba63:8d15]:8333 -[2001:0:9d38:6ab8:106a:2112:e06b:b881]:8333 -[2001:0:9d38:6ab8:1c99:1655:e782:9340]:8333 -[2001:0:9d38:6ab8:20cd:1cd9:54e6:5a6e]:8333 -[2001:0:9d38:6ab8:245e:2b3:a300:317e]:8333 -[2001:0:9d38:6ab8:2814:215c:88e3:4ee0]:8333 -[2001:0:9d38:6ab8:30ac:3a51:b2da:712d]:8333 -[2001:0:9d38:6ab8:34a6:eeb:c3ed:5be7]:8333 -[2001:0:9d38:6ab8:c2f:16d5:525a:107e]:8333 -[2001:0:9d38:6ab8:cb1:2557:431c:f3e1]:8333 -[2001:0:9d38:6abd:1056:290d:a671:3d90]:8333 -[2001:0:9d38:6abd:1865:14fe:d0a7:1f72]:8333 -[2001:0:9d38:6abd:2c3c:3006:a486:93c3]:8333 -[2001:0:9d38:6abd:2c73:3313:f21a:96da]:8333 -[2001:0:9d38:6abd:3050:fbff:a250:3386]:8333 -[2001:0:9d38:6abd:3828:494:fdaa:56cd]:8333 -[2001:0:9d38:6abd:454:187d:3e75:b00b]:8333 -[2001:0:9d38:78cf:c2c:1dcc:fa42:41a3]:8333 -[2001:0:9d38:90d7:1c4a:20d4:4daa:eb5a]:8333 -[2001:0:9d38:90d7:1ca7:1612:9a18:31e5]:8333 -[2001:0:9d38:90d7:24c8:3a0a:a68d:f799]:8333 -[2001:0:9d38:90d7:2837:324e:d0cb:9f45]:22475 -[2001:0:9d38:90d7:28c1:361e:a69c:b099]:8333 -[2001:0:9d38:90d7:30fe:1c89:d0b4:4d18]:8333 -[2001:0:9d38:90d7:3474:1df1:e732:e5e3]:8333 -[2001:0:9d38:90d7:34a8:fb1:88e3:fb19]:8333 -[2001:0:9d38:90d7:3c19:3d23:d0b4:f831]:18652 -[2001:0:9d38:90d7:3c45:2342:d0cb:d6ca]:8333 -[2001:0:9d38:90d7:3c5f:3105:d0b4:60b6]:8333 -[2001:0:9d38:90d7:8a1:2fb:d0cb:1e8f]:8333 -[2001:0:9d38:90d7:a3:36e0:e020:53fa]:8333 -[2001:0:9d38:90d7:eb:3b30:d0a4:aa5]:8333 -[2001:0:9d38:953c:104e:8af:b3aa:f300]:8333 -[2001:0:9d38:953c:1434:71f:b850:bab1]:8333 -[2001:0:9d38:953c:144a:36e8:519a:bb69]:8333 -[2001:0:9d38:953c:20fc:26ef:ed26:c737]:8333 -[2001:0:9d38:953c:454:120:88e8:2fb]:8333 -[2001:0:9d38:953c:801:1620:bc22:95bc]:8333 -[2001:0:9d38:953c:8a0:1fdb:ab00:bc2]:8333 -[2001:0:9d38:953c:cf6:3d48:4386:4937]:8333 -[2001:13d8:1c01:1000::8]:8333 -[2001:1620:923:0:75be:ed92:1a01:641]:8333 -[2001:1680:101:8c::1]:8333 -[2001:1970:5ae2:2b00:30bd:7910:c84:7a8f]:8333 -[2001:1970:5d56:aa01:1e75:8ff:fead:da48]:8333 -[2001:19f0:300:1045:225:90ff:fec9:29b3]:8333 -[2001:19f0:5:1f93:5400:1ff:fe7a:c65a]:8333 -[2001:19f0:6c01:4bd:5400:1ff:fe76:4db6]:8333 -[2001:19f0:ac01:2fb:5400:ff:fe5b:c3ff]:8333 -[2001:1a48:7:af1a:75f8:2c47:3285:d50e]:8333 -[2001:1af8:4010:a094:3333::8c38]:8333 -[2001:1af8:4070:a016:3333::5afb]:8333 -[2001:1af8:4700:a071:4444::e26e]:8333 -[2001:200:0:8801:5054:ff:fef2:1d0]:8333 -[2001:4128:6135:2010:21e:bff:fee8:a3c0]:8333 -[2001:41d0:1000:1f98::]:8333 -[2001:41d0:1004:18c7::]:8333 -[2001:41d0:1004:19dc::]:18555 -[2001:41d0:1004:1f7c::]:8333 -[2001:41d0:1008:2bed::]:8333 -[2001:41d0:1:45d8::1]:8333 -[2001:41d0:1:5395::1]:8333 -[2001:41d0:1:85d3::1]:8333 -[2001:41d0:1:8649::1]:8333 -[2001:41d0:1:8b26::1]:8333 -[2001:41d0:1:a5b8::1]:8333 -[2001:41d0:1:ab6b::1]:8333 -[2001:41d0:1:d227::]:8333 -[2001:41d0:1:f897::1]:8333 -[2001:41d0:1:f932::1]:8333 -[2001:41d0:2:34b7::1]:8333 -[2001:41d0:2:4975::]:8333 -[2001:41d0:2:5c22::]:8333 -[2001:41d0:2:84d4::1]:8333 -[2001:41d0:2:ab38::]:8333 -[2001:41d0:2:c33c::]:8333 -[2001:41d0:303:193b::]:8333 -[2001:41d0:303:2505::1a]:8333 -[2001:41d0:303:41db::]:58333 -[2001:41d0:303:4c68::]:8333 -[2001:41d0:303:508::]:8333 -[2001:41d0:303:6767::]:8333 -[2001:41d0:303:68cd::]:8333 -[2001:41d0:602:17a4::]:8333 -[2001:41d0:602:1842::]:8333 -[2001:41d0:602:3b7::]:8333 -[2001:41d0:602:898::]:8333 -[2001:41d0:602:b1a::]:8333 -[2001:41d0:800:135::]:8333 -[2001:41d0:800:3d3::]:8333 -[2001:41d0:8:101d::1]:8333 -[2001:41d0:8:1b29::]:8333 -[2001:41d0:8:3f74::1]:8333 -[2001:41d0:8:43a0::]:8333 -[2001:41d0:8:bb32::1]:8333 -[2001:41d0:8:bed3::]:8333 -[2001:41d0:8:c67c::]:8333 -[2001:41d0:8:ca2d::]:8333 -[2001:41d0:8:d444::1]:8333 -[2001:41d0:8:ddb::1]:8333 -[2001:41d0:8:ea86::1]:8333 -[2001:41d0:a:1220::1]:8333 -[2001:41d0:a:27ed::1]:8333 -[2001:41d0:a:296c::]:8139 -[2001:41d0:a:2b18::1]:8333 -[2001:41d0:a:405c::]:8333 -[2001:41d0:a:42df::]:8312 -[2001:41d0:a:4c49::aca:7929]:8333 -[2001:41d0:a:6927::1]:8333 -[2001:41d0:a:69a2::1]:8333 -[2001:41d0:a:6a87::1]:8333 -[2001:41d0:a:6c29::1]:8333 -[2001:41d0:a:6c7d::1]:8333 -[2001:41d0:a:f243::1]:8333 -[2001:41d0:a:f9cd::1]:8333 -[2001:41d0:d:dc9::]:8333 -[2001:41d0:e:1146::1]:8333 -[2001:41d0:e:126::1]:8333 -[2001:41d0:e:12aa::1]:8333 -[2001:41d0:e:1388::1]:8333 -[2001:41d0:e:ec5::1]:8333 -[2001:41f0:0:4:62:6974:636f:696e]:8333 -[2001:470:18:be4::2]:8333 -[2001:470:1c62:b170:bbff:53f1:edbf:99df]:42434 -[2001:470:1f06:15b4::2]:8333 -[2001:470:1f06:cea::2]:8333 -[2001:470:1f07:803:20c:29ff:fe2d:5879]:8333 -[2001:470:1f08:3cc::2]:8333 -[2001:470:1f0a:18dd::2]:8333 -[2001:470:1f15:11f8::10]:8333 -[2001:470:1f15:cf7::14]:8333 -[2001:470:1f17:b5::10]:8333 -[2001:470:1f1a:172::2]:8333 -[2001:470:1f1b:5a6:216:3eff:fe24:1162]:8333 -[2001:470:28:365::7]:8333 -[2001:470:41:6::2]:8333 -[2001:470:6c80:101::1]:8333 -[2001:470:6c80:3::1]:8333 -[2001:470:7:63e::2]:8333 -[2001:470:7:b74::2]:8333 -[2001:470:8:bd3:4d25:ca57:a5b7:c6c4]:8333 -[2001:470:a:c13::2]:8333 -[2001:470:c144:cafe::23]:8333 -[2001:470:c3c4:100:100::202]:8333 -[2001:470:e696::1]:8333 +217.69.145.234:8333 +217.158.9.102:8333 +220.130.142.178:33389 +220.233.138.130:8333 +[2001:1ba8:401:32:b842:3891:5915:c68f]:8333 +[2001:1bc0:cc::a001]:8333 +[2001:250:200:7:d6a9:fcf4:e78d:2d82]:8333 +[2001:4128:6135:e001:5054:ff:fe37:e9eb]:8333 +[2001:41d0:fc63:9c00:1acc:d22f:3f5c:ef7f]:8333 +[2001:44b8:4195:1801:5c73:5d67:d2a6:9910]:8333 +[2001:4800:7821:101:be76:4eff:fe04:9f50]:8333 +[2001:4801:7819:74:b745:b9d5:ff10:a61a]:8333 +[2001:4801:7821:77:be76:4eff:fe10:c7f6]:8333 +[2001:48d0:1:2163:0:ff:febe:5a80]:8333 [2001:48f8:1003::3ba]:8333 -[2001:48f8:9015:1422:3dc0:fcf2:772f:57bc]:8333 -[2001:4ba0:babe:832::]:8333 -[2001:628:22a0:9::12]:8333 +[2001:4ba0:fffa:5d::93]:8333 +[2001:4c48:2:a328:d8a7:e0ff:fe96:403a]:8333 +[2001:56b:dda9:4b00:49f9:121b:aa9e:de30]:8333 [2001:638:a000:4140::ffff:191]:8333 -[2001:638:a000:4142::ff10:bed6]:8333 +[2001:678:7dc:8::2]:8333 +[2001:678:ec:1:250:56ff:fea7:47e9]:8333 +[2001:67c:16dc:1201:5054:ff:fe17:4dac]:8333 [2001:67c:21ec:1000::a]:8333 -[2001:8d8:90b:c000::21:2fc0]:8333 -[2001:8d8:91c:9200::5c:d425]:8333 -[2001:980:231b:1:8e89:a5ff:fee3:f8be]:8333 -[2001:980:ade8:1:14fc:fd6d:608c:f669]:8333 -[2001:981:bdbd:1:c506:7d38:4b47:da15]:8333 -[2001:982:27f2:1:7271:bcff:fe94:d5bb]:8333 -[2001:984:26b5::1]:8333 -[2001:984:aec7:1:dcb7:29a:7eda:b9a2]:8333 -[2001:985:79af:20::35]:8333 -[2001:985:cb69:0:20c:29ff:feaf:dd5e]:8333 -[2001:b011:300d:1870:9c87:d4ff:fe9c:2d0f]:8333 -[2001:b030:2422::208d]:8333 -[2001:bc8:31d7:100::1]:8333 -[2001:bc8:323c:100::]:8333 -[2001:bc8:33ac:19ff::26]:8333 -[2001:bc8:399f:f000::1]:8333 -[2001:bc8:3dc1:100::142]:8333 -[2001:bc8:4400:2000::463b]:8333 -[2001:bc8:4400:2400::1b35]:8333 -[2001:bc8:4700:2000::5823]:8333 -[2001:da8:8001:2303:1cf4:4466:3f1a:7edb]:8333 -[2001:da8:d800:741:652d:52db:5713:4515]:8333 -[2002:17e5:10ea::17e5:10ea]:8333 -[2002:1f2b:8cbe::1f2b:8cbe]:8333 -[2002:2f59:30f3::2f59:30f3]:8333 -[2002:2f5a:562a::2f5a:562a]:8333 -[2002:3e92:46d8::3e92:46d8]:8333 -[2002:3f62:e6bb::3f62:e6bb]:8333 -[2002:404e:a30a::404e:a30a]:8333 -[2002:43db:9616::43db:9616]:8333 -[2002:43e5:a1fa::43e5:a1fa]:8333 -[2002:5266:afb::5266:afb]:8333 -[2002:5dbd:91a9::5dbd:91a9]:8333 -[2002:627e:333d::627e:333d]:8333 -[2002:6b9b:486c::6b9b:486c]:8333 -[2002:6dcb:7cba::6dcb:7cba]:8333 -[2002:7cf8:e33e::7cf8:e33e]:8333 -[2002:8e00:8231::8e00:8231]:8333 -[2002:8e00:8233::8e00:8233]:8333 -[2002:b07e:a70a::b07e:a70a]:8333 -[2002:b2c9:e6fc:10:3d5c:e3ad:813:9c46]:8333 -[2002:b4b2:3612::b4b2:3612]:8333 -[2002:b610:1ca2::b610:1ca2]:8333 -[2002:b610:1ca3::b610:1ca3]:8333 -[2002:b845:3322::1]:8333 -[2002:b946:694a::b946:694a]:8339 -[2002:b960:5e18::b960:5e18]:8333 -[2002:c23f:8fc5::c23f:8fc5]:8333 -[2002:c2a5:1021::c2a5:1021]:8333 -[2002:c62c:e7a0::c62c:e7a0]:6333 -[2002:ca99:c7b6::ca99:c7b6]:8333 -[2002:d035:2734::d035:2734]:8333 -[2002:d06e:5d1a::d06e:5d1a]:8333 -[2002:d8da:b949::d8da:b949]:8333 -[2400:2410:a960:4800:18be:d624:7018:cd2f]:8333 -[2400:6180:0:d0::3e1:b001]:8333 -[2400:6180:0:d0::5cd2:a001]:8333 -[2400:6180:0:d1::4c6:8001]:8333 -[2400:6180:100:d0::797:a001]:8333 -[2400:8500:1302:817:150:95:130:17]:8333 -[2401:1800:7800:106:be76:4eff:fe1c:1879]:8333 +[2001:67c:22fc:1337::5]:8333 +[2001:67c:2824:8001:225:90ff:fe67:9830]:7777 +[2001:67c:2b5c:101:216:3eff:fea3:5234]:8333 +[2001:67c:2db8:13::83]:8333 +[2001:718:801:311:5054:ff:fe19:c483]:8333 +[2001:8003:d136:1001::11:ffd1]:8333 +[2001:8d8:96a:9300::ad:ae2c]:8333 +[2001:8f1:1602:700:1b28:a3e3:bb08:a708]:9444 +[2001:8f8:1327:1587:3f10:5ab:804d:4039]:8333 +[2001:ba8:1f1:f069::2]:8333 +[2001:e42:103:100::30]:8333 +[2400:2650:480:bc00:bcaf:7c49:8c9e:7cdf]:8333 +[2400:4052:e20:4f00:69fe:bb33:7b1c:a1ca]:8333 +[2400:8902::f03c:91ff:fea5:ebb7]:8333 +[2401:1800:7800:102:be76:4eff:fe1c:a7d]:8333 +[2401:2500:203:184::15]:8333 [2401:3900:2:1::2]:8333 -[2401:a400:3200:5600:3c16:2deb:abce:70cd]:8333 -[2401:b140::43:100]:8333 -[2401:b140::43:102]:8333 -[2402:1f00:8100:21c::]:8333 -[2403:bd80:c000:1:103:202:216:182]:8333 -[2405:6580:c5c0:1700:6cd2:b72e:740e:4311]:8333 -[2405:800:1000:1:1000::2001]:8333 -[2405:9800:b560:96d:630:c28e:a79a:a182]:8333 +[2402:7340:1:56::d0d]:8333 +[2405:9800:ba01:251a:c53c:b80a:320d:5b41]:8333 [2405:aa00:2::40]:8333 [2409:10:ca20:1df0:224:e8ff:fe1f:60d9]:8333 -[2600:1f16:625:e00:269a:3452:2edf:1011]:8333 -[2600:1f16:625:e00:7bc:5879:4463:15dd]:8333 -[2600:1f16:625:e00:a28b:5a16:849c:fe41]:8333 -[2600:1f16:625:e00:a70f:e728:e8e1:2c2e]:8333 -[2600:3c00::f03c:91ff:fe0c:4d74]:8333 -[2600:3c00::f03c:91ff:fe2b:bf38]:8333 -[2600:3c00::f03c:91ff:fe91:3e49]:8333 -[2600:3c00::f03c:91ff:feb6:19f2]:8333 -[2600:3c01::f03c:91ff:fe91:6a29]:8333 -[2600:3c01::f03c:91ff:fed8:85a2]:8333 -[2600:3c01::f03c:91ff:fed8:db38]:8333 -[2600:3c03::f03c:91ff:fe28:1445]:8333 -[2601:147:4300:e61::30c]:8333 -[2601:147:4300:e61::f91]:8333 -[2601:186:c100:6bcd:16bd:cea1:235d:1c19]:8333 -[2601:18d:4600:5f32:20e7:b3ff:fecf:a99]:8333 -[2601:240:4601:ecee:309a:f9de:b64d:87df]:8333 -[2601:240:8100:256b:20c:29ff:fe5e:d707]:8333 -[2601:646:c202:5301:101b:a096:efba:c10a]:8333 -[2601:807:8000:9508:9993:d2b3:1a:8225]:8333 -[2601:c8:4100:770:c37:807b:98cc:bd7e]:8333 -[2602:100:6154:d6e3:2c91:d0de:b032:b0a4]:8333 -[2602:100:6154:d6e3::60]:8333 -[2602:61:786c:2c00::1]:8333 -[2602:ff83:fff:fffe::75]:8333 -[2602:ff83:fff:fffe::76]:8333 -[2603:3005:3000:5000:bc5a:72ac:36e9:175e]:8333 -[2604:0:c1:100:6bc1:f98a:97f9:3845]:8333 -[2604:2d80:c808:857b:8d6:9e1c:7131:4bea]:8333 -[2604:4080:1008:0:96de:80ff:fe62:e650]:8333 -[2604:4300:a:104:b699:baff:feaa:5109]:8333 -[2604:5500:c226:7f00:2d96:ed64:ce45:9a6]:8333 -[2604:8d80:100::adf3:4030]:8333 -[2604:a880:2:d0::22f8:e001]:8333 -[2604:a880:2:d0::22f8:f001]:8333 -[2604:a880:2:d0::22f9:1]:8333 -[2604:a880:2:d0::22f9:1001]:8333 -[2604:a880:2:d0::22f9:c001]:8333 -[2604:a880:2:d0::22f9:d001]:8333 -[2604:a880:2:d0::22f9:e001]:8333 -[2604:a880:2:d0::22fa:1001]:8333 -[2604:a880:2:d0::22fa:2001]:8333 -[2604:a880:2:d0::22fa:3001]:8333 -[2604:a880:2:d0::38:f001]:8333 -[2604:a880:2:d0::662:c001]:8333 -[2604:a880:400:d0::1ac4:b001]:8333 -[2604:a880:400:d0::2004:4001]:8333 -[2604:a880:400:d0::2004:5001]:8333 -[2604:a880:400:d0::2004:6001]:8333 -[2604:a880:400:d0::2004:d001]:8333 -[2604:a880:400:d0::2004:e001]:8333 -[2604:a880:400:d0::2005:1]:8333 -[2604:a880:400:d0::2005:2001]:8333 -[2604:a880:400:d0::2005:3001]:8333 -[2604:a880:400:d0::cd7:4001]:8333 -[2604:a880:400:d1::729:b001]:8333 -[2604:a880:800:a1::11a9:8001]:8333 -[2604:a880:800:a1::59:9001]:8333 -[2604:a880:800:a1::cbb:f001]:8333 -[2604:a880:800:a1::ee8:e001]:8333 -[2604:a880:cad:d0::370:f001]:8333 -[2604:a880:cad:d0::a52:6001]:8333 -[2605:4d00::50]:8333 -[2605:9880:0:1cf:225:90ff:fec9:29b3]:8333 -[2605:9880:0:3::8333]:8333 +[2409:13:1200:d200:16da:e9ff:fee9:b19a]:8333 +[240d:1a:3c0:ab00:e9f1:87c:93ac:7687]:8333 +[2602:ffc5:1f::1f:9211]:8333 +[2604:2000:ffc0:0:5862:b6f8:fe72:762f]:8333 +[2604:4300:a:2e:21b:21ff:fe11:392]:8333 +[2604:5500:c2a3:7b00:cc6:373b:44a8:caa4]:8333 [2605:9880:201:17::4b7c]:8333 -[2605:a000:4a87:9501:d613:fbf8:1e82:8d3c]:8333 -[2605:a000:f343:b700:5054:ff:fea7:131]:8333 -[2605:a601:a41:1a00:a00:27ff:fefc:4759]:8333 [2605:ae00:203::203]:8333 [2605:c000:2a0a:1::102]:8333 -[2605:e000:1c00:80e8:984e:a697:97a3:50ed]:8333 -[2605:e000:1c0d:437b:5054:ff:fe1b:2913]:8333 -[2605:e000:9093:a700:9853:4464:5f78:c484]:8333 -[2605:f700:100:400::104e:43bd]:8333 [2605:f700:100:400::131:5b54]:8333 -[2605:f700:100:c10:5575:8e73:b07c:bf5a]:8333 -[2606:6000:c149:8830:5054:ff:fe78:66ff]:8333 -[2607:1c00:a:6:3c1c:1b0d:ba4:8ea9]:8333 -[2607:1c00:a:6::1000]:8333 -[2607:5300:120:a04::]:8333 -[2607:5300:203:2fac::]:8333 -[2607:5300:203:408::]:8333 -[2607:5300:203:6bc::]:18333 -[2607:5300:203:8d::]:8333 -[2607:5300:60:10aa::1]:8333 -[2607:5300:60:122a::1]:8333 -[2607:5300:60:13bb::1]:8333 -[2607:5300:60:3ddf::]:8333 -[2607:5300:60:5735::]:8333 -[2607:5300:60:714::1]:8333 -[2607:5300:60:981::1]:8333 -[2607:5300:60:cff1::]:28633 +[2606:c680:0:b:3830:34ff:fe66:6663]:8333 [2607:9280:b:73b:250:56ff:fe21:bf32]:8333 -[2607:f178:0:8::106]:8333 -[2607:f1c0:823:af00::35:bbd1]:8333 -[2607:f2c0:f00e:300:201:2eff:fe67:9130]:8333 -[2607:fa18:0:beef::c012]:8333 -[2607:ff28:1:7::176e:c4a5]:8333 -[2607:ff28:1:7::65af:9afb]:8333 -[2620:71:4000:0:192:30:120:110]:8333 -[2801:84:0:1034:76d4:35ff:fe7f:5033]:8333 -[2803:1500:1200:c487::1]:8333 -[2804:14c:6582:60f0::1]:8333 -[2804:14d:baa6:962c:486:47f6:c161:a79d]:8333 +[2607:f128:40:1703::2]:8333 +[2607:f3a0:1000:9:f82a:fdff:fea1:3315]:8333 +[2607:f470:8:1048:ae1f:6bff:fe68:5e42]:8333 +[2607:fd70:4a:babe:b00b:1e5:1bd5:f78]:8333 +[2607:ff50:0:71::13]:8333 +[2620:6e:a000:1:42:42:42:42]:8333 +[2804:14d:baa7:9674:3615:9eff:fe23:d610]:8333 +[2a00:1328:e101:c00::163]:8333 +[2a00:1398:4:2a03:215:5dff:fed6:1033]:8333 [2a00:13a0:3015:1:85:14:79:26]:8333 -[2a00:16d8:c::5b6a:c261]:8333 -[2a00:1768:2001:24::148:218]:8333 -[2a00:1838:36:2c::ed85]:8333 -[2a00:1a28:1157:2f8::946a]:8333 -[2a00:1c48:6:203:a60:6eff:fe44:8086]:8333 -[2a00:1f40:2::1126]:8333 -[2a00:7c80:0:5d::1d0e]:8333 +[2a00:1630:14::101]:8333 +[2a00:1768:2001:27::ef6a]:8333 +[2a00:1828:a004:2::666]:8333 +[2a00:1838:36:2c::3e95]:8333 +[2a00:1b60:2:4:40d0:eff:fe88:ebd4]:8333 +[2a00:7b80:452:2000::138]:8333 +[2a00:7b80:454:2000::101]:8333 [2a00:8a60:e012:a00::21]:8333 -[2a00:ab00:603:84::3]:8333 -[2a00:bbe0:cc:0:6651:6ff:fe0e:9418]:8333 -[2a00:ca8:a1f:3025:4121:5ca1:3b:4469]:8333 -[2a00:ca8:a1f:9091:945e:80a3:830a:78cf]:8333 -[2a01:238:433c:5300:7a61:3e1a:27f4:9dc2]:8333 -[2a01:4240:a21:983b::c0a8:32]:8333 -[2a01:488:66:1000:53a9:21b8:0:1]:8333 -[2a01:4d60:3:1:5::1]:8333 -[2a01:4f8:10a:3524::2]:8333 -[2a01:4f8:10b:362::2]:8333 -[2a01:4f8:10b:d50::2]:8333 -[2a01:4f8:10b:f44::2]:8333 -[2a01:4f8:120:1391::2]:8333 -[2a01:4f8:120:70a3::2]:8333 -[2a01:4f8:120:93f8::2]:8333 -[2a01:4f8:121:2385::2]:8333 -[2a01:4f8:130:71d2::2]:8333 -[2a01:4f8:130:7422::2]:8333 -[2a01:4f8:13a:124f::2]:8333 -[2a01:4f8:13a:1dcb::2]:8333 -[2a01:4f8:13a:708::2]:21775 -[2a01:4f8:13a:723::2]:8333 -[2a01:4f8:13b:109e::2]:8333 -[2a01:4f8:13b:1a9e::201]:8333 -[2a01:4f8:13b:271c::2]:10731 -[2a01:4f8:13b:2d42::2]:8333 -[2a01:4f8:13b:2d94::2]:8333 -[2a01:4f8:13b:3810::2]:8333 -[2a01:4f8:13b:3da8::2]:8333 -[2a01:4f8:13b:41e6::2]:8333 -[2a01:4f8:13b:4281::2]:8333 -[2a01:4f8:13b:5c7::2]:8333 -[2a01:4f8:13b:81::2]:8333 -[2a01:4f8:140:236a:cafe::5]:8333 -[2a01:4f8:140:324e::2]:8333 -[2a01:4f8:140:5329::102]:8333 -[2a01:4f8:140:5329::50:109]:8333 -[2a01:4f8:140:931a::2]:8333 -[2a01:4f8:140:93b0::2]:8333 -[2a01:4f8:141:47::2]:8333 -[2a01:4f8:150:53a4::4]:8333 -[2a01:4f8:150:72ee::4202]:8333 -[2a01:4f8:160:41f0::1:33]:8333 -[2a01:4f8:160:4443::2]:8333 -[2a01:4f8:160:6092:d7bd:a39:3e52:b65d]:8333 -[2a01:4f8:160:60aa::2]:8333 -[2a01:4f8:160:636e::2]:8333 -[2a01:4f8:161:6091::2]:8333 -[2a01:4f8:161:6111::2]:8333 -[2a01:4f8:161:812e::2]:8333 -[2a01:4f8:162:2c6::2]:8333 -[2a01:4f8:162:33ac::2]:8333 -[2a01:4f8:171:1c3::2]:8333 -[2a01:4f8:171:2bdc::2]:8333 -[2a01:4f8:171:3248::2]:8333 -[2a01:4f8:171:4dc::2]:8333 -[2a01:4f8:171:d09::2]:8333 -[2a01:4f8:171:d4a::2]:8333 -[2a01:4f8:171:e0d::2]:8333 -[2a01:4f8:171:ecd::2]:8333 -[2a01:4f8:172:1823::2]:8333 -[2a01:4f8:173:1622::2]:8333 -[2a01:4f8:190:50b6::2]:8333 -[2a01:4f8:190:5176::123]:8333 -[2a01:4f8:191:268::2]:8333 -[2a01:4f8:192:216c::2]:8333 -[2a01:4f8:192:628a::83]:8333 -[2a01:4f8:1c0c:77af::1]:8333 -[2a01:4f8:200:1012::2]:8333 -[2a01:4f8:200:442d::2]:8333 -[2a01:4f8:201:1113::2]:8333 -[2a01:4f8:201:4f0::2]:8333 -[2a01:4f8:201:53cc::2]:8333 -[2a01:4f8:201:8026::1337]:8333 -[2a01:4f8:201:8026::2]:8333 -[2a01:4f8:202:32c6::2]:8333 -[2a01:4f8:211:309::2]:8333 -[2a01:4f8:211:f08::2]:8333 -[2a01:4f8:212:1e16::2]:8333 -[2a01:4f8:221:1808::2]:15000 -[2a01:4f8:221:2e18::2]:8333 -[2a01:4f8:221:2fcf::2]:8333 -[2a01:4f8:221:3441::2]:8333 -[2a01:4f8:221:3452::2]:8333 -[2a01:4f8:221:39c1::2]:8335 -[2a01:4f8:221:3c82::2]:8333 -[2a01:4f8:221:3c82:fea1::666]:8333 -[2a01:4f8:221:6cd::2]:8333 -[2a01:4f8:221:801::2]:8333 -[2a01:4f8:221:f59::2]:8333 -[2a01:4f8:a0:6147::2]:8333 -[2a01:4f8:c0c:4268::2]:8333 -[2a01:4f8:c0c:56a5::2]:8333 -[2a01:4f8:c17:e00::2]:8333 -[2a01:4f9:2a:10d4::2]:8333 -[2a01:4f9:2a:1827::2]:8333 -[2a01:4f9:2a:192c::2]:8333 -[2a01:4f9:2a:1c87::2]:8333 -[2a01:4f9:2a:2510::2]:8333 -[2a01:4f9:2a:2518::2]:8333 -[2a01:4f9:2a:2585::2]:8333 -[2a01:4f9:2a:2698::2]:8333 -[2a01:4f9:2a:2d0a::2]:8333 -[2a01:4f9:2a:2d17::2]:8333 -[2a01:4f9:2a:347::2]:8333 -[2a01:4f9:2a:650::2]:8333 -[2a01:4f9:2a:d54::2]:8333 -[2a01:4f9:c010:12e7::1]:8333 -[2a01:4f9:c010:1736::1]:8333 -[2a01:5d00:1:4b6:d2bf:9cff:fe45:b834]:8333 -[2a01:79c:cebe:70cc:1a03:73ff:fe48:e691]:8333 -[2a01:7a0:2:1374::7]:8333 -[2a01:7a7:2:1218:ec4:7aff:fe83:83c4]:8333 -[2a01:7a7:2:1288:ea39:35ff:fef0:c429]:8333 -[2a01:7c8:aaba:18:5054:ff:fe2b:df20]:8333 -[2a01:7c8:fffa:50e:3035:741b:be02:b5de]:8333 -[2a01:be00:10:201:0:80:cece:1]:8333 -[2a01:cb00:5be:d500:227:eff:fe28:c565]:8333 -[2a01:cb00:b3:d300:9276:8a8c:74bf:2a88]:8333 -[2a01:cb14:b8:a500:dd9d:80f5:d305:68f9]:8333 -[2a01:e0a:20:9120:7c3f:5643:9978:1825]:8333 -[2a01:e0a:d:6ea0:56:deab:1b2f:300b]:8333 -[2a01:e34:ec16:93f0:725d:d8d2:bb90:eabf]:8333 -[2a01:e34:ee33:1640:c418:3c3a:8ff6:3eab]:8333 -[2a01:e34:eed7:6670:28c0:183c:7783:7dc3]:8333 -[2a01:e35:2f7d:a0b0:59c2:3c8a:95a2:c4d1]:8333 -[2a01:e35:87ba:d0c0:75a2:9f39:efcb:f59f]:8333 -[2a02:120b:c3c5:cef0:ec82:a43d:4d6:dc2]:8333 -[2a02:120b:c3d1:f2d0:eea8:6bff:fefc:2265]:8333 -[2a02:168:404c:0:eea8:6bff:fef3:7d5c]:8333 -[2a02:180:1:1::517:10b6]:8333 -[2a02:180:1:1::5b8f:538c]:8333 -[2a02:1b8:10:147::2]:8333 -[2a02:2168:d05:2c00:216:3eff:fef7:a099]:8333 -[2a02:2528:503:2::14]:8333 -[2a02:2528:fa:1400::1]:8333 -[2a02:2770:17:0:21a:4aff:fe7b:175f]:8333 -[2a02:2770:5:0:21a:4aff:fe44:8370]:8333 -[2a02:2808:5401:0:225:90ff:fe4e:ee42]:8333 +[2a01:4240:5f52:9246::1]:8333 +[2a01:430:17:1::ffff:1153]:8333 +[2a01:488:66:1000:53a9:1573:0:1]:8333 +[2a01:6f0:ffff:120::8dcb]:8333 +[2a01:7a0:2:137a::11]:8333 +[2a01:7a7:2:131b:20c:29ff:fe9a:3922]:8333 +[2a01:7c8:d002:318:5054:ff:febe:cbb1]:8333 +[2a01:cb00:d3d:7700:227:eff:fe28:c565]:8333 +[2a01:d0:ffff:7368::2]:8333 +[2a01:e0a:182:1300:591e:529:b376:c654]:8333 +[2a01:e34:ee6b:2ab0:88c2:1c12:f4eb:c26c]:8333 +[2a02:1205:34c3:d890:c0e:741e:c45f:3605]:8333 +[2a02:2c8:1:400:34::184]:8333 +[2a02:2f0d:202:f900:5e9a:d8ff:fe57:8bc5]:8333 [2a02:390:9000:0:218:7dff:fe10:be33]:8333 -[2a02:750:7:c11:5054:ff:fe43:eb81]:8333 +[2a02:4780:9:0:2:f928:f280:9a6f]:8333 +[2a02:578:4f07:24:76ad:cef7:93c1:b9b9]:8333 [2a02:7aa0:1619::590:eba2]:8333 -[2a02:7b40:3e4d:9ed9::1]:8333 -[2a02:7b40:50d1:e04f::1]:8333 -[2a02:7b40:5928:f9e::1]:8333 -[2a02:7b40:592f:a590::1]:8333 -[2a02:7b40:b0df:82fe::1]:8333 -[2a02:7b40:b0df:8925::1]:8333 -[2a02:7b40:b0df:8b41::1]:8333 -[2a02:7b40:b0df:8d57::1]:8333 -[2a02:7b40:d418:6fcd::1]:8333 -[2a02:8108:2340:1c18:7a:231e:1430:7f12]:8333 -[2a02:8108:9c3f:dd18:922b:34ff:fe30:ac42]:8333 -[2a02:810d:8a40:36f8:9af2:b3ff:fee8:6d7a]:8333 -[2a02:8388:e301:7180:201:2eff:fe82:b3cc]:8333 -[2a02:908:213:54a0:39bf:d4aa:60b2:d9c3]:8333 -[2a02:908:4f0:7e1c:5054:ff:feb7:ce4b]:8333 -[2a02:930:1:0:250:56ff:fe8e:2819]:8333 -[2a02:a80:0:2052::2]:8333 -[2a02:c205:0:5145::1]:8333 -[2a02:c205:2008:272::1]:8333 -[2a02:c205:2010:6230::1]:8333 -[2a02:c205:2016:4327::1]:8333 -[2a02:c205:2017:2116::1]:8333 -[2a02:c205:2018:1754::1]:8333 -[2a02:c205:2018:8229::1]:8333 -[2a02:c205:3002:2787::1]:8333 -[2a02:c205:3002:6525::1]:8333 -[2a02:c207:0:3829::1]:8333 -[2a02:c207:2007:4699::1]:8333 -[2a02:c207:2009:213::1]:8333 -[2a02:c207:2010:7751::1]:8333 -[2a02:c207:2012:4826::1]:8333 -[2a02:c207:2014:4199::1]:8333 -[2a02:c207:2014:5639::1]:8333 +[2a02:7aa0:1619::adc:8de0]:8333 +[2a02:8108:95bf:eae3:211:32ff:fe8e:b5b8]:8333 [2a02:c207:2014:9913::1]:18333 -[2a02:c207:2015:3799::1]:8333 -[2a02:c207:2015:3926::1]:8333 -[2a02:c207:2015:5919::1]:8333 -[2a02:c207:2015:6681::1]:8333 -[2a02:c207:2016:2394::1]:8333 -[2a02:c207:2016:9375::1]:8333 -[2a02:c207:2017:1988::1]:8333 -[2a02:c207:2017:3720::1]:8333 -[2a02:c207:2017:4486::1]:8333 -[2a02:c207:2017:4708::1]:8333 -[2a02:c207:2017:5828::1]:8333 -[2a02:c207:2017:7320::1]:8333 -[2a02:c207:2017:8175::1]:8333 -[2a02:c207:2017:8998::1]:8333 -[2a02:c207:2018:1462::1]:8333 -[2a02:c207:2018:3094::1]:8333 -[2a02:c207:2018:3275::1]:8333 -[2a02:c207:2018:3710::1]:8333 -[2a02:c207:2018:4790::1]:8333 -[2a02:c207:2018:7407::1]:8333 -[2a02:c207:2019:1067::1]:8333 -[2a02:c207:2019:1425::1]:8333 -[2a02:c207:2019:2041::1]:8333 -[2a02:c207:2019:248::1]:8333 -[2a02:c207:2019:3592::1]:8333 -[2a02:c207:3001:9320::1]:8333 -[2a02:c207:3002:1287::1]:8333 -[2a02:c207:3002:4187::1]:8333 -[2a02:c207:3002:5642::1]:8333 -[2a02:c207:3002:7150::1]:8333 -[2a02:c207:3002:7222::1]:8333 -[2a02:c207:3002:7610::1]:8333 -[2a02:c207:3002:8456::1]:8333 -[2a02:ce80:0:20::1]:8333 -[2a02:e00:fff0:1b9::1]:8333 -[2a02:e00:fff0:1b9::a]:8333 -[2a02:e00:fff0:1e2::1]:8333 -[2a03:b0c0:1:d0::69:3001]:8333 -[2a03:b0c0:2:d0::3ba:b001]:8333 -[2a03:b0c0:2:d0::8ce:4001]:8333 -[2a03:b0c0:3:d0::116:5001]:8333 -[2a03:b0c0:3:d0::12a:1]:8333 -[2a03:b0c0:3:d0::23fb:6001]:8333 -[2a03:b0c0:3:d0::409:1001]:8333 -[2a03:b0c0:3:d0::44b8:9001]:8333 -[2a03:b0c0:3:d0::44b8:a001]:8333 -[2a03:b0c0:3:d0::44b8:e001]:8333 -[2a03:b0c0:3:d0::44b8:f001]:8333 -[2a03:b0c0:3:d0::44b9:1]:8333 -[2a03:b0c0:3:d0::44b9:1001]:8333 -[2a03:b0c0:3:d0::44b9:2001]:8333 -[2a03:b0c0:3:d0::44b9:4001]:8333 -[2a03:b0c0:3:d0::5e48:d001]:8333 -[2a03:ee40:0:294:250:56ff:fe8d:4ad7]:8333 +[2a02:e00:fff0:23f::1]:8333 +[2a02:f680:1:1100::5453]:8333 +[2a03:1b20:1:f410:40::3e]:16463 +[2a03:2260:11e:301::8]:8333 +[2a03:2260:11e:302::3]:8333 +[2a03:4000:6:416c::43]:8333 [2a04:2180:1:c:f000::15]:8333 -[2a07:440:2000:20::ca0:1817]:8333 -[2a0a:c800:1:1::4]:8333 -226eupdnaouu4h2v.onion:8333 -23wdfqkzttmenvki.onion:8333 -2bfsxzluysybysnr.onion:8333 -2f4xg7m3g6vtxqcd.onion:8333 -2i5i6kvxoggngz67.onion:8333 -336lqgffb4tg5gpm.onion:8333 -342ouaetvqzgepjx.onion:8333 -3mutzniftca5w7ou.onion:8333 -3qpbpt4gkp3dxn2r.onion:8333 -3r44ddzjitznyahw.onion:8333 -3xucqntxp5ddoaz5.onion:8333 -44walnmvlhcqa3c2.onion:8333 -4ehtdyvvzhbbo6c5.onion:8333 -4jekbh7cdlfda3ve.onion:8333 -4mewwo2bfxk6lg3f.onion:8333 -53tsjt6zq3iasv5q.onion:8333 -546esc6botbjfbxb.onion:8333 -55zzzsk7iqv6p3ew.onion:8333 -56stijc6kcgw6flk.onion:8333 -5elzwcg4xysogalo.onion:8333 -5f4ysqk4eed4jcvj.onion:8333 -5k3oxus2laabmyip.onion:8333 -5ptuzplawb3svsos.onion:8333 -5rmpsrrdb3vpfgzh.onion:8333 -5wnkqzjzjehmq7hn.onion:8333 -5xxsqhppii22pges.onion:8333 -5ygszbkbbauzjx7m.onion:8333 -5z2she4d6fvrdnme.onion:8333 -64qrhyxglyjjhkne.onion:8333 -6kn76kajckqg22ao.onion:8333 -6m2iqgnqjxh7ulyk.onion:8333 -6wcfnbb3vmaw6cwa.onion:8333 -6zynxbbupfmnvc3g.onion:8333 -7sns7raurpmllybi.onion:8333 -7whaszg22pdkvfck.onion:8333 -a3a6plzycomx5gqw.onion:8333 -acs7hylaadjkt7mk.onion:8333 -agpwcvixadbinyet.onion:8333 -ajqvsylg5xd5vs3y.onion:8333 -aktfeaqkbnk52bfx.onion:8333 -albsennsmbsgxls3.onion:8333 -alruzrdz7xcek67f.onion:8333 -am6aq3dluz3njcnt.onion:8333 -aoefyxgnpgaiw2xg.onion:8333 -ap2frg2maqxpmkkd.onion:8333 -ap4zz4imxbdl6plr.onion:8333 -apbbvhk32myudnyy.onion:8333 -arlocvowxtnlbpo3.onion:8333 -b5d6etfljm2lje5y.onion:8333 -bdwvcwafzpssqckj.onion:8333 -brwqezn6le54w2bb.onion:8333 -bxxvkb7czrxtvz2c.onion:8333 -c2tpqkaz4ihjzwgb.onion:8333 -cgcv32rbbbjyyzow.onion:8333 -ckkqplgkzof45h2y.onion:8333 -cpyfqbs4fs3vnbpf.onion:8333 -ctzuzxnvla5xvb7z.onion:8333 -cw4iqvcdy67b5tpw.onion:8333 -cyvpgt25274i5b7c.onion:8333 -dmudsr7x7edvyglt.onion:8333 -dsbn53f2dwphv5mx.onion:8333 -dssqdj6pxnzkth6i.onion:8333 -e3zbephvcqmzcqkr.onion:8333 -e63i7c7qazbdtjma.onion:8333 -eiuaj2qjvbn737ph.onion:8333 -ep2mjzox3kvb6ax4.onion:8333 -eyvfxeefr4eokefr.onion:8333 -f3nfioh27j2xlfe5.onion:8333 -f5ezxphghknfbrtg.onion:8333 -faewczjuzs4wfxhv.onion:8333 -fefisckqu5raqe3c.onion:8333 -fgbss353vsvandn7.onion:8333 -fnlkrowsyrfeub6s.onion:8333 -fno4aakpl6sg6y47.onion:8333 -fnpnjdk24pzgcplx.onion:8333 -foe4ymjz4hjhowud.onion:8333 -fql436nz7qdis3nk.onion:8333 -frhfucww5vghf7cv.onion:8333 -frrxefv5dir5hm7l.onion:8333 -fuckerolyuv7ebla.onion:8333 -fz6nsij6jiyuwlsc.onion:8333 -g4qfwcu5wm7ze5lg.onion:8333 -gb5ypqt63du3wfhn.onion:8333 -gcydj5id3jcxybzr.onion:8333 -gfvnnnwcddfzosav.onion:8333 -golevvyaydsduuw2.onion:8333 -gq4su6stjnosqu67.onion:8333 -hb4oreglor5x3xoa.onion:8333 -hbuair37dxnblurw.onion:8333 -hda7fvzq3voh7mu6.onion:8333 -hnvk3pgvieyixyc2.onion:8333 -ifwxwunja4pgwydg.onion:8333 -ijmbmziunbszzxtj.onion:8333 -in7r5ieo7ogkxbne.onion:8333 -inysvhakrulg6lts.onion:8333 -iwrwbwss7lfalfg4.onion:8333 -ja7dmgkri7fi47xk.onion:8333 -jtksnokusbzms7wl.onion:8333 -jwxyqhp42cmwhqf3.onion:8333 -jxrfatqtcevzwywz.onion:8333 -jy6mvzb2ntutiye6.onion:8333 -jydquxzliej6dm24.onion:8333 -k2gdzvryrx7v6ksw.onion:8333 -kkdas3qebkosygu5.onion:8333 +[2a04:3543:1000:2310:8492:b8ff:fe91:22e8]:8333 +[2a05:6d40:b94e:d100:225:90ff:fe0d:cfc2]:8333 +[2a05:fc87:4::6]:8333 +[2a07:7200:ffff:c53f::e1:17]:8333 +[2a0b:2ac0:1:0:d6ae:52ff:fe7b:741c]:8333 +[2a0b:2ac0:1:0:d6ae:52ff:fe7b:88eb]:8333 +25lhwv6jaqbtek5x.onion:8333 +2empatdfea6vwete.onion:8333 +2hpjn6ndxjafgoej.onion:8333 +34aqcwnnuiqh234f.onion:8333 +3frtobxxkgkhwjx7.onion:8333 +3gxqibajrtysyp5o.onion:8333 +3lf37sdzhpxh6fpv.onion:8333 +3q5iydjrrutqjb2y.onion:8333 +3qzrkpxduf44jqg5.onion:8333 +3sami4tg4yhctjyc.onion:8333 +3w77hrilg6q64opl.onion:8333 +46xh2sbjsjiyl4fu.onion:8333 +4ee44qsamrjpywju.onion:8333 +4gwvtoppsaffaxg7.onion:8333 +4haplrtkprjqhm2j.onion:8333 +4u3y3zf2emynt6ui.onion:8333 +4wx34hn3kybujklg.onion:8333 +56czufbruq46sb2c.onion:8333 +57dytizbai7o4kq7.onion:8333 +5guaeulc7xm4g2mm.onion:8334 +5mtvd4dk62ccdk4v.onion:8333 +5nsfm4nqqzzprjrp.onion:8333 +5pmjz6mmikyabaw5.onion:8333 +6eurcxoqsa4qpiqq.onion:8333 +6ivvkeseojsmpby4.onion:8333 +6luc7owlbbaj52lr.onion:8333 +6tlha6njtcuwpfa3.onion:8333 +6ymgbvnn6d5nfmv4.onion:8333 +6z5cyaswulhxcvhj.onion:8333 +72y2n5rary4mywkz.onion:8333 +7a354g25lnvry4ic.onion:8333 +7b75ub5dapphemit.onion:8333 +7xaqpr7exrtlnjbb.onion:8333 +a64haiqsl76l25gv.onion:8333 +ab7ftdfw6qhdx3re.onion:8333 +aiupgbtdqpmwfpuz.onion:8333 +akeg56rzkg7rsyyg.onion:8333 +akinbo7tlegsnsxn.onion:8333 +anem5aq4cr2zl7tz.onion:8333 +at3w5qisczgguije.onion:8333 +auo4zjsp44vydv6c.onion:8333 +b6vrxhrrle7jxiua.onion:8333 +bitcoinranliixsu.onion:8333 +blcktrgve5vetjsk.onion:8333 +bowg4prf63givea4.onion:8333 +cj2nexmwocyy5unq.onion:8333 +cjuek22p4vv4hzbu.onion:8333 +cklaa2xdawrb75fg.onion:8333 +coxiru76nnfw3vdj.onion:8333 +cqwcyvvk5xnqv3yw.onion:8333 +cwq2fuc54mlp3ojc.onion:8333 +dganr7dffsacayml.onion:8333 +djbsspmvlc6ijiis.onion:8333 +dmfwov5ycnpvulij.onion:8333 +dp2ekfbxubpdfrt4.onion:8333 +dw2ufbybrgtzssts.onion:4333 +dxv5u4xaeydpbrrp.onion:8333 +edkmfeaapvavhtku.onion:8333 +ejdoey3uay3cz7bs.onion:8333 +eladlvwflaahxomr.onion:8333 +ffhx6ttq7ejbodua.onion:8333 +fqdzxl4kjboae35b.onion:8333 +hbnnzteon75un65y.onion:8333 +hcyxhownxdv7yybw.onion:8333 +hdfcxll2tqs2l4jc.onion:8333 +hdld2bxyvzy45ds4.onion:8333 +hnqwmqikfmnkpdja.onion:8333 +hvmjovdasoin43wn.onion:8333 +hwzcbnenp6dsp6ow.onion:8333 +hz26wamjlbd7arrl.onion:8333 +i5ellwzndjuke242.onion:8333 +iapvpwzs4gpbl6fk.onion:8885 +if7fsvgyqwowxkcn.onion:8333 +ilukzjazxlxrbuwy.onion:8333 +ju5duo3r6p6diznc.onion:8333 +k3i3suxlg4w27uas.onion:8333 +k7omfveynnjg674e.onion:8333 +ko37ti7twplktxqu.onion:8333 kswfyurnglm65u7b.onion:8333 -l2pruzr3mnhieuug.onion:8333 -lgkgcd4brjmhrqna.onion:8333 -lgkvbvro67jomosw.onion:8333 -llljnatksfgtlhko.onion:8333 -mdpt6w5sjwcnxtwy.onion:8333 -mhjcepzc4gyadw2w.onion:8333 -mn744hbioayn3ojs.onion:8333 -mpakpgzu7umgu3ze.onion:8333 -mvomwfdddqfqg3lq.onion:8333 -mx5kdfxwowc3ymzg.onion:8333 -n4m32zcp5hvomkt4.onion:8333 -n73steqcmjz5hwni.onion:8333 -nc2bgkhqohrmwbxr.onion:8333 -nc6zlswwqqg7c5yz.onion:8333 -nrrfwdmrm3imuebn.onion:8333 -nrrmkgmulpgsbwlt.onion:8333 -o2tku2dbsd6iumch.onion:8333 -o72zyzrv77ea2bwu.onion:8333 -ohgwa5y65z4eem7b.onion:8333 -olvdu57g7rxwpcr4.onion:8333 -onlzo775ogdpjn5x.onion:8333 -otshttbd6v2k3jlz.onion:8333 -owr5tm7ygw62z4vl.onion:8333 -pcfhsdqzs6q63ryu.onion:8333 -pffwqxvuldeq55zc.onion:8333 -pgnz7kwc36rcucpu.onion:8333 -ph4g7b4jsyuntvr4.onion:8333 -pjghcivzkoersesd.onion:8333 -pu7w3jfyrzp7sxsi.onion:8333 -pxvkjp6sfb2f7foe.onion:8333 -qaxm5spmx5d2k3up.onion:8333 -qepth54daysmpy5y.onion:8333 -qj6irqn2i73edff5.onion:8333 -qjpejfzlwqqnzsol.onion:8333 -qxe3bqjmrcepxpx4.onion:8333 -rlonjm7ui6fdyz4h.onion:8333 -rs635ss24ymwyqkw.onion:8333 -sgiitogeoqslvkjv.onion:8333 -spidernetimmmkth.onion:8333 -tb7qlicrt6rdzxzd.onion:8333 -thbjka62axzuwtnt.onion:8333 -toguvy5upyuctudx.onion:8333 -u7mpvxotmnqntyn5.onion:8333 -uccmw67l4kgl646y.onion:8333 -ueo6royc3775ioq7.onion:8333 -ujsb2qcjk4t6234z.onion:8333 -uub43p3artmornv5.onion:8333 -uvb55mwvuy22mgm2.onion:8333 -uzzyjgqlf47ackbr.onion:8333 -v5fgr3fnz3nw663t.onion:8333 -v5zs2sgjyr3glh6c.onion:8333 -vk3qjdehyy4dwcxw.onion:8333 -voy6xbvejox4xbax.onion:8333 -vuiw75kgpcqke4mv.onion:8333 -w3q47ucyajtfic76.onion:8333 -wg6vwmbrzyyzapun.onion:8333 -wgpfwxgy2dowienn.onion:8333 -wjtmvsznvdclncau.onion:8333 -xab45bpmmrl5g3by.onion:8333 -xdlu3ujzieheouo7.onion:8333 -xgykmaa2jjay7cfu.onion:8333 -xnlu3tvakngy7tkp.onion:8333 -xsn5icce45gs3qy7.onion:8333 -ydonogjpjd3me45v.onion:8333 -ykn7vof37bavxetd.onion:8333 -yl525dwhvqis7ryc.onion:8333 -yrbaccpbyge6xaba.onion:8333 -yyuxafli7fqdizhq.onion:8333 -z33nukt7ngik3cpe.onion:8333 -zon2bbc2q2ihqt4c.onion:8333 -zqjvtxskxonu4kzv.onion:8333 +ldu2hbiorkvdymja.onion:8333 +lftugyhf6vnouikf.onion:8333 +ln3csnn6774nzgyn.onion:8333 +lvh7k53s62frc6ro.onion:8333 +lvvgedppmpigudhz.onion:8333 +mbjkotfqcn5gnsrm.onion:8333 +mk3bnep5ubou7i44.onion:8333 +muhp42ytbwi6qf62.onion:8333 +n5khsbd6whw7ooip.onion:8333 +na6otugfitr7pnlv.onion:8333 +nclrhbeertvin7cu.onion:8333 +ndmbrjcvu2s6jcom.onion:8333 +nf4iypnyjwfpcjm7.onion:8333 +nkdw6ywzt3dqwxuf.onion:8333 +nqmxpgrpuysullkq.onion:8333 +ntml2aeumyglyjlk.onion:8333 +o4sl5na6jeqgi3l6.onion:8333 +opencubebqqx3buj.onion:8333 +oudab5q7ruclifdv.onion:8333 +ovbkvgdllk3xxeah.onion:8333 +pg2jeh62fkq3byps.onion:8333 +pgufebhe6mt7knqz.onion:8333 +pkcgxf23ws3lwqvq.onion:8333 +po3j2hfkmf7sh36o.onion:8333 +qdtau72ifwauot6b.onion:8333 +qidnrqy2ozz3nzqq.onion:8333 +qpebweackyztorrm.onion:8333 +qsl3x63225alx4bt.onion:8333 +readybit5veyche6.onion:8333 +rjw6vpw5ffoncxuh.onion:8333 +s2epxac7ovy36ruj.onion:8333 +srkgyv5edn2pa7il.onion:8333 +sv5oitfnsmfoc3wu.onion:8333 +tdlpmqnpfqehqj7c.onion:8333 +ttx7ddwltrixannm.onion:8333 +uftbw4zi5wlzcwho.onion:8333 +uoailgcebjuws47e.onion:8333 +uqvucqhplwqbjrsb.onion:8333 +uz3pvdhie3372vxw.onion:8333 +v2x7gpj3shxfnl25.onion:8333 +vdhrg3k2akmf6kek.onion:8333 +vov46htt6gyixdmb.onion:8333 +vrfs5jwtfzj2ss6n.onion:8333 +vwpcfguewxhky4iy.onion:8333 +wg3b3qxcwcrraq2o.onion:8333 +wgeecjm4w4ko66f7.onion:8333 +wmxc6ask4a5xyaxh.onion:8333 +wqrafn4zal3bbbhr.onion:8333 +xagzqmjgwgdvl2di.onion:8333 +xhi5x5qc44elydk4.onion:8333 +xk6bjlmgvwojvozj.onion:8333 +xmgr7fsmp7bgburk.onion:8333 +xocvz3dzyu2kzu6f.onion:8333 +xv7pt6etwxiygss6.onion:8444 +xz563swdjd7yqymb.onion:8333 +yumx7asj7feoozic.onion:8333 +yzmyolvp55rydnsm.onion:8333 +z3forfpyjyxxgfr5.onion:8333 +z5x2wes6mhbml2t5.onion:8333 +zmaddsqelw2oywfb.onion:8444 +zqlojwtc4lsurgie.onion:8333 +zvwc7ad4m2dvc74x.onion:8333 diff --git a/contrib/testgen/README.md b/contrib/testgen/README.md index 580ed541cf..573a71a675 100644 --- a/contrib/testgen/README.md +++ b/contrib/testgen/README.md @@ -2,7 +2,7 @@ Utilities to generate test vectors for the data-driven Bitcoin tests. -Usage: +Usage: PYTHONPATH=../../test/functional/test_framework ./gen_key_io_test_vectors.py valid 50 > ../../src/test/data/key_io_keys_valid.json PYTHONPATH=../../test/functional/test_framework ./gen_key_io_test_vectors.py invalid 50 > ../../src/test/data/key_io_keys_invalid.json |