summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog196
-rw-r--r--ReleaseNotes55
-rw-r--r--changes/170704
-rw-r--r--changes/199653
-rw-r--r--changes/205113
-rw-r--r--changes/208534
-rw-r--r--changes/bug200854
-rw-r--r--changes/bug20306_0294
-rw-r--r--changes/bug205304
-rw-r--r--changes/bug205594
-rw-r--r--changes/bug205604
-rw-r--r--changes/bug205975
-rw-r--r--changes/bug206136
-rw-r--r--changes/bug206465
-rw-r--r--changes/bug206675
-rw-r--r--changes/bug208395
-rw-r--r--changes/bug208604
-rw-r--r--changes/feature1505628
-rw-r--r--changes/feature172384
-rw-r--r--changes/feature205522
-rw-r--r--changes/ticket1887310
-rw-r--r--changes/ticket207173
-rw-r--r--changes/ticket209605
-rw-r--r--configure.ac38
-rw-r--r--doc/HACKING/ReleasingTor.md16
-rw-r--r--doc/HACKING/WritingTests.md2
-rw-r--r--doc/tor.1.txt38
-rwxr-xr-xscripts/codegen/run_trunnel.sh6
-rw-r--r--src/common/address.c3
-rw-r--r--src/common/compat.c10
-rw-r--r--src/common/crypto.c40
-rw-r--r--src/common/crypto_ed25519.c20
-rw-r--r--src/common/crypto_ed25519.h4
-rw-r--r--src/common/crypto_format.c16
-rw-r--r--src/common/crypto_format.h1
-rw-r--r--src/common/log.c4
-rw-r--r--src/common/sandbox.c5
-rw-r--r--src/common/timers.c14
-rw-r--r--src/common/timers.h2
-rw-r--r--src/common/util.c23
-rw-r--r--src/config/geoip6259
-rw-r--r--src/config/geoip61193
-rw-r--r--src/ext/trunnel/trunnel-impl.h2
-rw-r--r--src/ext/trunnel/trunnel.c2
-rw-r--r--src/ext/trunnel/trunnel.h2
-rw-r--r--src/or/channel.c151
-rw-r--r--src/or/channel.h40
-rw-r--r--src/or/channeltls.c18
-rw-r--r--src/or/circuitbuild.c106
-rw-r--r--src/or/circuitbuild.h11
-rw-r--r--src/or/circuitstats.c2
-rw-r--r--src/or/circuituse.c201
-rw-r--r--src/or/circuituse.h20
-rw-r--r--src/or/config.c43
-rw-r--r--src/or/connection.c15
-rw-r--r--src/or/connection_edge.c10
-rw-r--r--src/or/connection_or.c299
-rw-r--r--src/or/connection_or.h5
-rw-r--r--src/or/control.c4
-rw-r--r--src/or/directory.c37
-rw-r--r--src/or/dirserv.c61
-rw-r--r--src/or/dirserv.h3
-rw-r--r--src/or/dnsserv.c2
-rw-r--r--src/or/entrynodes.c33
-rw-r--r--src/or/entrynodes.h3
-rw-r--r--src/or/hibernate.c6
-rw-r--r--src/or/hs_descriptor.c59
-rw-r--r--src/or/hs_descriptor.h1
-rw-r--r--src/or/include.am2
-rw-r--r--src/or/main.c4
-rw-r--r--src/or/networkstatus.c63
-rw-r--r--src/or/networkstatus.h4
-rw-r--r--src/or/nodelist.c79
-rw-r--r--src/or/nodelist.h8
-rw-r--r--src/or/onion.c314
-rw-r--r--src/or/onion.h2
-rw-r--r--src/or/or.h23
-rw-r--r--src/or/protover.c2
-rw-r--r--src/or/rendservice.c490
-rw-r--r--src/or/rendservice.h15
-rw-r--r--src/or/router.c52
-rw-r--r--src/or/router.h3
-rw-r--r--src/or/routerkeys.c30
-rw-r--r--src/or/routerkeys.h2
-rw-r--r--src/or/routerlist.c49
-rw-r--r--src/or/routerlist.h1
-rw-r--r--src/or/routerparse.c41
-rw-r--r--src/or/shared_random.c6
-rw-r--r--src/or/torcert.c50
-rw-r--r--src/or/torcert.h2
-rw-r--r--src/or/transports.c2
-rw-r--r--src/test/include.am1
-rw-r--r--src/test/log_test_helpers.h17
-rw-r--r--src/test/test.c1
-rw-r--r--src/test/test.h1
-rw-r--r--src/test/test_address.c18
-rw-r--r--src/test/test_cell_formats.c35
-rw-r--r--src/test/test_channel.c107
-rw-r--r--src/test/test_circuituse.c304
-rw-r--r--src/test/test_config.c32
-rw-r--r--src/test/test_dir.c7
-rw-r--r--src/test/test_dir_handle_get.c60
-rw-r--r--src/test/test_helpers.c23
-rw-r--r--src/test/test_helpers.h2
-rw-r--r--src/test/test_hs.c129
-rw-r--r--src/test/test_hs_descriptor.c10
-rw-r--r--src/test/test_link_handshake.c10
-rw-r--r--src/test/test_oom.c19
-rw-r--r--src/test/test_options.c30
-rw-r--r--src/test/test_util.c4
-rw-r--r--src/trunnel/ed25519_cert.c923
-rw-r--r--src/trunnel/ed25519_cert.h348
-rw-r--r--src/trunnel/ed25519_cert.trunnel53
-rw-r--r--src/trunnel/hs/cell_common.c8
-rw-r--r--src/trunnel/hs/cell_common.h8
-rw-r--r--src/trunnel/hs/cell_establish_intro.c8
-rw-r--r--src/trunnel/hs/cell_establish_intro.h8
-rw-r--r--src/trunnel/hs/cell_introduce1.c14
-rw-r--r--src/trunnel/hs/cell_introduce1.h14
-rw-r--r--src/trunnel/link_handshake.c16
-rw-r--r--src/trunnel/link_handshake.h16
-rw-r--r--src/trunnel/pwbox.c8
-rw-r--r--src/trunnel/pwbox.h8
123 files changed, 8874 insertions, 3809 deletions
diff --git a/ChangeLog b/ChangeLog
index 555618256d..30840809d8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,163 @@
Changes in version 0.3.0.1-alpha - 2016-??-??
+Changes in version 0.2.9.7-rc - 2016-12-12
+ Tor 0.2.9.7-rc fixes a few small bugs remaining in Tor 0.2.9.6-rc,
+ including a few that had prevented tests from passing on
+ some platforms.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the December 7 2016 Maxmind GeoLite2
+ Country database.
+
+ o Minor bugfix (build):
+ - The current Git revision when building from a local repository is
+ now detected correctly when using git worktrees. Fixes bug 20492;
+ bugfix on 0.2.3.9-alpha.
+
+ o Minor bugfixes (directory authority):
+ - When computing old Tor protocol line version in protover, we were
+ looking at 0.2.7.5 twice instead of a specific case for
+ 0.2.9.1-alpha. Fixes bug 20810; bugfix on tor-0.2.9.4-alpha.
+
+ o Minor bugfixes (download scheduling):
+ - Resolve a "bug" warning when considering a download schedule whose
+ delay had approached INT_MAX. Fixes 20875; bugfix on 0.2.9.5-alpha.
+
+ o Minor bugfixes (logging):
+ - Downgrade a harmless log message about the
+ pending_entry_connections list from "warn" to "info". Mitigates
+ bug 19926.
+
+ o Minor bugfixes (memory leak):
+ - Fix a small memory leak when receiving AF_UNIX connections on a
+ SocksPort. Fixes bug 20716; bugfix on 0.2.6.3-alpha.
+ - When moving a signed descriptor object from a source to an
+ existing destination, free the allocated memory inside that
+ destination object. Fixes bug 20715; bugfix on tor-0.2.8.3-alpha.
+
+ o Minor bugfixes (memory leak, use-after-free, linux seccomp2 sandbox):
+ - Fix a memory leak and use-after-free error when removing entries
+ from the sandbox's getaddrinfo() cache. Fixes bug 20710; bugfix on
+ 0.2.5.5-alpha. Patch from "cypherpunks".
+
+ o Minor bugfixes (portability):
+ - Use the correct spelling of MAC_OS_X_VERSION_10_12 on configure.ac
+ Fixes bug 20935; bugfix on 0.2.9.6-rc.
+
+ o Minor bugfixes (unit tests):
+ - Stop expecting NetBSD unit tests to report success for ipfw. Part
+ of a fix for bug 19960; bugfix on 0.2.9.5-alpha.
+ - Fix tolerances in unit tests for monotonic time comparisons
+ between nanoseconds and microseconds. Previously, we accepted a 10
+ us difference only, which is not realistic on every platform's
+ clock_gettime(). Fixes bug 19974; bugfix on 0.2.9.1-alpha.
+ - Remove a double-free in the single onion service unit test. Stop
+ ignoring a return value. Make future changes less error-prone.
+ Fixes bug 20864; bugfix on 0.2.9.6-rc.
+
+
+Changes in version 0.2.8.11 - 2016-12-08
+ Tor 0.2.8.11 backports fixes for additional portability issues that
+ could prevent Tor from building correctly on OSX Sierra, or with
+ OpenSSL 1.1. Affected users should upgrade; others can safely stay
+ with 0.2.8.10.
+
+ o Minor bugfixes (portability):
+ - Avoid compilation errors when building on OSX Sierra. Sierra began
+ to support the getentropy() and clock_gettime() APIs, but created
+ a few problems in doing so. Tor 0.2.9 has a more thorough set of
+ workarounds; in 0.2.8, we are just using the /dev/urandom and mach
+ monotonic time interfaces. Fixes bug 20865. Bugfix
+ on 0.2.8.1-alpha.
+
+ o Minor bugfixes (portability, backport from 0.2.9.5-alpha):
+ - Fix compilation with OpenSSL 1.1 and less commonly-used CPU
+ architectures. Closes ticket 20588.
+
+
+Changes in version 0.2.8.10 - 2016-12-02
+ Tor 0.2.8.10 backports a fix for a bug that would sometimes make clients
+ unusable after they left standby mode. It also backports fixes for
+ a few portability issues and a small but problematic memory leak.
+
+ o Major bugfixes (client reliability, backport from 0.2.9.5-alpha):
+ - When Tor leaves standby because of a new application request, open
+ circuits as needed to serve that request. Previously, we would
+ potentially wait a very long time. Fixes part of bug 19969; bugfix
+ on 0.2.8.1-alpha.
+
+ o Major bugfixes (client performance, backport from 0.2.9.5-alpha):
+ - Clients now respond to new application stream requests immediately
+ when they arrive, rather than waiting up to one second before
+ starting to handle them. Fixes part of bug 19969; bugfix
+ on 0.2.8.1-alpha.
+
+ o Minor bugfixes (portability, backport from 0.2.9.6-rc):
+ - Work around a bug in the OSX 10.12 SDK that would prevent us from
+ successfully targeting earlier versions of OSX. Resolves
+ ticket 20235.
+
+ o Minor bugfixes (portability, backport from 0.2.9.5-alpha):
+ - Fix implicit conversion warnings under OpenSSL 1.1. Fixes bug
+ 20551; bugfix on 0.2.1.1-alpha.
+
+ o Minor bugfixes (relay, backport from 0.2.9.5-alpha):
+ - Work around a memory leak in OpenSSL 1.1 when encoding public
+ keys. Fixes bug 20553; bugfix on 0.0.2pre8.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the November 3 2016 Maxmind GeoLite2
+ Country database.
+
+Changes in version 0.2.9.6-rc - 2016-12-02
+ Tor 0.2.9.6-rc fixes a few remaining bugs found in the previous alpha
+ version. We hope that it will be ready to become stable soon, and we
+ encourage everyone to test this release. If no showstopper bugs are
+ found here, the next 0.2.9 release will be stable.
+
+ o Major bugfixes (relay, resolver, logging):
+ - For relays that don't know their own address, avoid attempting a
+ local hostname resolve for each descriptor we download. This
+ will cut down on the number of "Success: chose address 'x.x.x.x'"
+ log lines, and also avoid confusing clock jumps if the resolver
+ is slow. Fixes bugs 20423 and 20610; bugfix on 0.2.8.1-alpha.
+
+ o Minor bugfixes (client, fascistfirewall):
+ - Avoid spurious warnings when ReachableAddresses or FascistFirewall
+ is set. Fixes bug 20306; bugfix on 0.2.8.2-alpha.
+
+ o Minor bugfixes (hidden services):
+ - Stop ignoring the anonymity status of saved keys for hidden
+ services and single onion services when first starting tor.
+ Instead, refuse to start tor if any hidden service key has been
+ used in a different hidden service anonymity mode. Fixes bug
+ 20638; bugfix on 17178 in 0.2.9.3-alpha; reported by ahf.
+
+ o Minor bugfixes (portability):
+ - Work around a bug in the OSX 10.12 SDK that would prevent us from
+ successfully targeting earlier versions of OSX. Resolves
+ ticket 20235.
+ - Run correctly when built on Windows build environments that
+ require _vcsprintf(). Fixes bug 20560; bugfix on 0.2.2.11-alpha.
+
+ o Minor bugfixes (single onion services, Tor2web):
+ - Stop complaining about long-term one-hop circuits deliberately
+ created by single onion services and Tor2web. These log messages
+ are intended to diagnose issue 8387, which relates to circuits
+ hanging around forever for no reason. Fixes bug 20613; bugfix on
+ 0.2.9.1-alpha. Reported by "pastly".
+
+ o Minor bugfixes (unit tests):
+ - Stop spurious failures in the local interface address discovery
+ unit tests. Fixes bug 20634; bugfix on 0.2.8.1-alpha; patch by
+ Neel Chauhan.
+
+ o Documentation:
+ - Correct the minimum bandwidth value in torrc.sample, and queue a
+ corresponding change for torrc.minimal. Closes ticket 20085.
+
+
Changes in version 0.2.9.5-alpha - 2016-11-08
Tor 0.2.9.5-alpha fixes numerous bugs discovered in the previous alpha
version. We believe one or two probably remain, and we encourage
@@ -319,8 +476,9 @@ Changes in version 0.2.9.3-alpha - 2016-09-23
OpenSSL 0.9.7 or later since 2009. Closes ticket 19998.
o Minor feature (fallback directories):
- - Remove broken entries from the hard-coded fallback directory list.
- Closes ticket 20190; patch by teor.
+ - Remove 8 fallbacks that are no longer suitable, leaving 81 of the
+ 100 fallbacks originally introduced in Tor 0.2.8.2-alpha in March
+ 2016. Closes ticket 20190; patch by teor.
o Minor features (geoip, also in 0.2.8.8):
- Update geoip and geoip6 to the September 6 2016 Maxmind GeoLite2
@@ -498,8 +656,9 @@ Changes in version 0.2.8.8 - 2016-09-23
this one.
o Minor feature (fallback directories):
- - Remove broken fallbacks from the hard-coded fallback directory
- list. Closes ticket 20190; patch by teor.
+ - Remove 8 fallbacks that are no longer suitable, leaving 81 of the
+ 100 fallbacks originally introduced in Tor 0.2.8.2-alpha in March
+ 2016. Closes ticket 20190; patch by teor.
o Minor features (geoip):
- Update geoip and geoip6 to the September 6 2016 Maxmind GeoLite2
@@ -953,8 +1112,9 @@ Changes in version 0.2.8.6 - 2016-08-02
is signed. Fixes bug 19682; bugfix on 0.2.8.1-alpha.
o Minor bugfixes (fallback directories):
- - Remove a fallback that was on the hardcoded list, then opted-out.
- Fixes bug 19782; update to fallback list from 0.2.8.2-alpha.
+ - Remove 1 fallback that was on the hardcoded list, then opted-out,
+ leaving 89 of the 100 fallbacks originally introduced in Tor
+ 0.2.8.2-alpha in March 2016. Closes ticket 19782; patch by teor.
o Minor bugfixes (Linux seccomp2 sandbox):
- Allow more syscalls when running with "Sandbox 1" enabled:
@@ -1026,8 +1186,9 @@ Changes in version 0.2.8.5-rc - 2016-07-07
- Update fallback whitelist and blacklist based on relay operator
emails. Blacklist unsuitable (non-working, over-volatile)
fallbacks. Resolves ticket 19071. Patch by teor.
- - Update hard-coded fallback list to remove unsuitable fallbacks.
- Resolves ticket 19071. Patch by teor.
+ - Remove 10 unsuitable fallbacks, leaving 90 of the 100 fallbacks
+ originally introduced in Tor 0.2.8.2-alpha in March 2016. Closes
+ ticket 19071; patch by teor.
Changes in version 0.2.8.4-rc - 2016-06-15
@@ -1137,10 +1298,12 @@ Changes in version 0.2.8.3-alpha - 2016-05-26
- Give each fallback the same weight for client selection; restrict
fallbacks to one per operator; report fallback directory detail
changes when rebuilding list; add new fallback directory mirrors
- to the whitelist; update fallback directories based on the latest
- OnionOO data; and any other minor simplifications and fixes.
- Closes tasks 17158, 17905, 18749, bug 18689, and fixes part of bug
- 18812 on 0.2.8.1-alpha; patch by "teor".
+ to the whitelist; and many other minor simplifications and fixes.
+ Closes tasks 17905, 18749, bug 18689, and fixes part of bug 18812 on
+ 0.2.8.1-alpha; patch by "teor".
+ - Replace the 21 fallbacks generated in January 2016 and included in
+ Tor 0.2.8.1-alpha, with a list of 100 fallbacks generated in March
+ 2016. Closes task 17158; patch by "teor".
o Minor features (geoip):
- Update geoip and geoip6 to the May 4 2016 Maxmind GeoLite2
@@ -1584,10 +1747,11 @@ Changes in version 0.2.8.1-alpha - 2016-02-04
should reduces failures due to fallback churn. Implements ticket
4483. Patch by "teor". Implements IPv4 portions of proposal 210 by
"mikeperry" and "teor".
- - Include a trial list of default fallback directories, based on an
- opt-in survey of suitable relays. Doing this should make clients
- bootstrap more quickly and reliably, and reduce the load on the
- directory authorities. Closes ticket 15775. Patch by "teor".
+ - Include a trial list of 21 default fallback directories, generated
+ in January 2016, based on an opt-in survey of suitable relays.
+ Doing this should make clients bootstrap more quickly and reliably,
+ and reduce the load on the directory authorities. Closes ticket
+ 15775. Patch by "teor".
Candidates identified using an OnionOO script by "weasel", "teor",
"gsathya", and "karsten".
- Previously only relays that explicitly opened a directory port
diff --git a/ReleaseNotes b/ReleaseNotes
index af61a4d739..97db5af763 100644
--- a/ReleaseNotes
+++ b/ReleaseNotes
@@ -2,6 +2,61 @@ This document summarizes new features and bugfixes in each stable release
of Tor. If you want to see more detailed descriptions of the changes in
each development snapshot, see the ChangeLog file.
+
+Changes in version 0.2.8.11 - 2016-12-08
+ Tor 0.2.8.11 backports fixes for additional portability issues that
+ could prevent Tor from building correctly on OSX Sierra, or with
+ OpenSSL 1.1. Affected users should upgrade; others can safely stay
+ with 0.2.8.10.
+
+ o Minor bugfixes (portability):
+ - Avoid compilation errors when building on OSX Sierra. Sierra began
+ to support the getentropy() and clock_gettime() APIs, but created
+ a few problems in doing so. Tor 0.2.9 has a more thorough set of
+ workarounds; in 0.2.8, we are just using the /dev/urandom and mach
+ monotonic time interfaces. Fixes bug 20865. Bugfix
+ on 0.2.8.1-alpha.
+
+ o Minor bugfixes (portability, backport from 0.2.9.5-alpha):
+ - Fix compilation with OpenSSL 1.1 and less commonly-used CPU
+ architectures. Closes ticket 20588.
+
+
+Changes in version 0.2.8.10 - 2016-12-02
+ Tor 0.2.8.10 backports a fix for a bug that would sometimes make clients
+ unusable after they left standby mode. It also backports fixes for
+ a few portability issues and a small but problematic memory leak.
+
+ o Major bugfixes (client reliability, backport from 0.2.9.5-alpha):
+ - When Tor leaves standby because of a new application request, open
+ circuits as needed to serve that request. Previously, we would
+ potentially wait a very long time. Fixes part of bug 19969; bugfix
+ on 0.2.8.1-alpha.
+
+ o Major bugfixes (client performance, backport from 0.2.9.5-alpha):
+ - Clients now respond to new application stream requests immediately
+ when they arrive, rather than waiting up to one second before
+ starting to handle them. Fixes part of bug 19969; bugfix
+ on 0.2.8.1-alpha.
+
+ o Minor bugfixes (portability, backport from 0.2.9.6-rc):
+ - Work around a bug in the OSX 10.12 SDK that would prevent us from
+ successfully targeting earlier versions of OSX. Resolves
+ ticket 20235.
+
+ o Minor bugfixes (portability, backport from 0.2.9.5-alpha):
+ - Fix implicit conversion warnings under OpenSSL 1.1. Fixes bug
+ 20551; bugfix on 0.2.1.1-alpha.
+
+ o Minor bugfixes (relay, backport from 0.2.9.5-alpha):
+ - Work around a memory leak in OpenSSL 1.1 when encoding public
+ keys. Fixes bug 20553; bugfix on 0.0.2pre8.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the November 3 2016 Maxmind GeoLite2
+ Country database.
+
+
Changes in version 0.2.8.9 - 2016-10-17
Tor 0.2.8.9 backports a fix for a security hole in previous versions
of Tor that would allow a remote attacker to crash a Tor client,
diff --git a/changes/17070 b/changes/17070
new file mode 100644
index 0000000000..ffe616f38d
--- /dev/null
+++ b/changes/17070
@@ -0,0 +1,4 @@
+ o Documentation (SOCKS connections):
+ - Clarify that when `ClientRejectInternalAddresses` is enabled (which is the
+ default), multicast DNS hostnames for machines on the local network (of
+ the form *.local) are also rejected. Closes ticket 17070.
diff --git a/changes/19965 b/changes/19965
new file mode 100644
index 0000000000..904f5c9db0
--- /dev/null
+++ b/changes/19965
@@ -0,0 +1,3 @@
+ o Minor bugfix (configuration):
+ - Accept non-space whitespace characters after the severity level in the
+ `Log` option. Fixes bug 19965; bugfix on 0.2.1.1-alpha.
diff --git a/changes/20511 b/changes/20511
new file mode 100644
index 0000000000..d6e962eeb7
--- /dev/null
+++ b/changes/20511
@@ -0,0 +1,3 @@
+ o Minor feature:
+ - Relays and bridges will now refuse to serve the consensus they have if
+ they know it is too old for a client to use. Closes ticket 20511.
diff --git a/changes/20853 b/changes/20853
new file mode 100644
index 0000000000..84d95c41e0
--- /dev/null
+++ b/changes/20853
@@ -0,0 +1,4 @@
+ o Minor bugfix (hidden services):
+ - Change ephemeral service checks in `rendservice.c` to use the new
+ `rend_service_is_ephemeral` helper function. Fixes bug 20853; bugfix on
+ bug 20526; not in any released version of Tor.
diff --git a/changes/bug20085 b/changes/bug20085
deleted file mode 100644
index fd10e7eeeb..0000000000
--- a/changes/bug20085
+++ /dev/null
@@ -1,4 +0,0 @@
- o Documentation:
- - Correct the minimum bandwidth value in torrc.sample, and queue a
- corresponding change for torrc.minimal. Closes ticket 20085.
-
diff --git a/changes/bug20306_029 b/changes/bug20306_029
deleted file mode 100644
index ada2676b2b..0000000000
--- a/changes/bug20306_029
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor bugfixes (fascistfirewall):
- - Avoid spurious warnings when ReachableAddresses or FascistFirewall
- is set. Fixes bug 20306; bugfix on 0.2.8.2-alpha.
-
diff --git a/changes/bug20530 b/changes/bug20530
new file mode 100644
index 0000000000..85d1b0115b
--- /dev/null
+++ b/changes/bug20530
@@ -0,0 +1,4 @@
+ o Minor bugfixes (Windows):
+ - Check for getpagesize before using it to mmap files. This fixes
+ compilation in some MinGW environments. Fixes bug 20530; bugfix on
+ 0.1.2.1-alpha. Reported by "ice".
diff --git a/changes/bug20559 b/changes/bug20559
new file mode 100644
index 0000000000..f117162dde
--- /dev/null
+++ b/changes/bug20559
@@ -0,0 +1,4 @@
+ o Minor bugfixes (hidden services):
+ - Stop ignoring misconfigured hidden services. Instead, refuse to start
+ tor until the misconfigurations have been corrected.
+ Fixes bug 20559; bugfix on multiple commits in 0.2.7.1-alpha and earlier.
diff --git a/changes/bug20560 b/changes/bug20560
deleted file mode 100644
index 43d605b296..0000000000
--- a/changes/bug20560
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor bugfixes (portability):
- - Run correctly when built on Windows build environments that require
- _vcsprintf(). Fixes bug 20560; bugfix on 0.2.2.11-alpha.
-
diff --git a/changes/bug20597 b/changes/bug20597
deleted file mode 100644
index f199b63933..0000000000
--- a/changes/bug20597
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor bugfixes (test networks, exponential backoff):
- - When using exponential backoff in test networks, use a lower exponent,
- so the delays do not vary as much. This helps test networks bootstrap
- consistently. Fixes bug 20597; bugfix on 20499; not in any released
- version of tor.
diff --git a/changes/bug20613 b/changes/bug20613
deleted file mode 100644
index 19bb61f4e0..0000000000
--- a/changes/bug20613
+++ /dev/null
@@ -1,6 +0,0 @@
- o Minor bugfixes (single onion services, Tor2web):
- - Stop logging long-term one-hop circuits deliberately created by single
- onion services and Tor2web. These log messages are intended to diagnose
- issue 8387, which relates to circuits hanging around forever for no
- reason.
- Fixes bug 20613; bugfix on 0.2.9.1-alpha. Reported by "pastly".
diff --git a/changes/bug20646 b/changes/bug20646
new file mode 100644
index 0000000000..7cff38fb80
--- /dev/null
+++ b/changes/bug20646
@@ -0,0 +1,5 @@
+ o Minor bugfix (util):
+ - When finishing writing a file to disk, if we were about to replace the
+ file with the temporary file created before and we fail to replace it,
+ remove the temporary file so it doesn't stay on disk. Fixes bug 20646;
+ bugfix on tor-0.2.0.7-alpha. Patch by fk.
diff --git a/changes/bug20667 b/changes/bug20667
new file mode 100644
index 0000000000..93b293a4e6
--- /dev/null
+++ b/changes/bug20667
@@ -0,0 +1,5 @@
+ o Minor bugfixes (directory downloads):
+ - Download all consensus flavors, descriptors, and authority certificates
+ when FetchUselessDescriptors is set, regardless of whether tor is a
+ directory cache or not.
+ Fixes bug 20667; bugfix on all recent tor versions.
diff --git a/changes/bug20839 b/changes/bug20839
new file mode 100644
index 0000000000..c290097d80
--- /dev/null
+++ b/changes/bug20839
@@ -0,0 +1,5 @@
+ o Minor bugfixes (descriptors):
+ - Correctly recognise downloaded full descriptors as valid, even when
+ using microdescriptors as circuits. This affects clients with
+ FetchUselessDescriptors set, and may affect directory authorities.
+ Fixes bug 20839; bugfix on commit 6083276 in 0.2.3.2-alpha.
diff --git a/changes/bug20860 b/changes/bug20860
new file mode 100644
index 0000000000..81b0dd8fc0
--- /dev/null
+++ b/changes/bug20860
@@ -0,0 +1,4 @@
+ o Minor bugfixes (hidden services):
+ - Stop ignoring duplicate hidden services when validating: this could
+ lead to a crash when those services were created.
+ Fixes bug 20860; bugfix on 20559; not in any released version of tor.
diff --git a/changes/feature15056 b/changes/feature15056
new file mode 100644
index 0000000000..46226f881f
--- /dev/null
+++ b/changes/feature15056
@@ -0,0 +1,28 @@
+ o Major features (ed25519 identity keys):
+ - Relays now understand requests to extend to other relays
+ by their Ed25519 identity keys. When an Ed25519 identity key
+ is included in an EXTEND2 cell, the relay will only extend
+ the circuit if the other relay can prove ownership of that identity.
+ Implements part of ticket 15056; part of proposal 220.
+ - Clients now support including Ed25519 identity keys in the EXTEND2
+ cells they generate. By default, this is controlled by a consensus
+ parameter, currently disabled. You can turn this feature on for
+ testing by setting ExtendByEd25519ID in your configuration. This might
+ make your traffic appear different than the traffic generated by other
+ users, however.
+ Implements part of ticket 15056; part of proposal 220.
+
+ o Code simplification and refactoring:
+ - The code to generate and parse EXTEND and EXTEND2 cells has
+ been replaced with code automatically generated by the "trunnel"
+ utility.
+ - Remove data structures that were used to index or_connection objects by
+ their RSA identity digests. These structures are fully redundant with
+ the similar structures used in the channel abstraction.
+
+ o Minor features (directory authority):
+ - Add a new authority-only AuthDirTestEd25519LinkKeys option (on by
+ default) to control whether authorities should try to probe relays by
+ their Ed25519 link keys. This option will go away in a few
+ releases--unless we encounter major trouble in our ed25519 link
+ protocol rollout, in which case it will serve as a safety option.
diff --git a/changes/feature17238 b/changes/feature17238
index eba9fb794e..88dfee92cf 100644
--- a/changes/feature17238
+++ b/changes/feature17238
@@ -1,6 +1,6 @@
- o Major features (onion service)
+ o Major features (onion services):
- Tor relays now support the HSDir version 3 protocol meaning they can
store and serve v3 descriptors. This is part of the next generation
onion service work detailled in proposal 224. The tor daemon also
contains all the necessary code to encode and decode a v3 descriptor but
- it's currently only used by the directory subsystem. Closes #17238.
+ it's currently only used by the directory subsystem. Closes ticket 17238.
diff --git a/changes/feature20552 b/changes/feature20552
index 11954807a7..75fbdde56b 100644
--- a/changes/feature20552
+++ b/changes/feature20552
@@ -1,4 +1,4 @@
o Minor features (ed25519 link handshake):
- Advertise support for the ed25519 link handshake using the
subprotocol-versions mechanism, so that clients can tell which
- relays can identity themselves by Ed25519 ID.
+ relays can identity themselves by Ed25519 ID. Closes ticket 20552.
diff --git a/changes/ticket18873 b/changes/ticket18873
new file mode 100644
index 0000000000..11a867d393
--- /dev/null
+++ b/changes/ticket18873
@@ -0,0 +1,10 @@
+ o Code simplification and refactoring:
+ - Refactor circuit_predict_and_launch_new for readability and
+ testability. Closes ticket 18873.
+ - Extract magic numbers in circuituse.c into defined variables.
+ - Refactor circuit_is_available_for_use to remove unnecessary check.
+
+ o Minor features (unit tests):
+ - Extract dummy_origin_circuit_new so it can be used by other test
+ functions.
+ - Add unit tests circuit_predict_and_launch_new.
diff --git a/changes/ticket20717 b/changes/ticket20717
new file mode 100644
index 0000000000..71d3edd13e
--- /dev/null
+++ b/changes/ticket20717
@@ -0,0 +1,3 @@
+ o Code simplification and refactoring:
+ - Refactor the hashing API to return negative values for errors, as is done
+ as throughout the codebase. Closes ticket 20717.
diff --git a/changes/ticket20960 b/changes/ticket20960
new file mode 100644
index 0000000000..3c21ae680f
--- /dev/null
+++ b/changes/ticket20960
@@ -0,0 +1,5 @@
+ o Removed features:
+ - The AuthDirMaxServersPerAuthAddr option no longer exists: The same
+ limit for relays running on a single IP applies to authority IP
+ addresses as well as to non-authority IP addresses. Closes ticket
+ 20960.
diff --git a/configure.ac b/configure.ac
index 27d7577a5a..bf721a9e64 100644
--- a/configure.ac
+++ b/configure.ac
@@ -379,14 +379,12 @@ AC_CHECK_FUNCS(
accept4 \
backtrace \
backtrace_symbols_fd \
- clock_gettime \
eventfd \
explicit_bzero \
timingsafe_memcmp \
flock \
ftime \
getaddrinfo \
- getentropy \
getifaddrs \
getpass \
getrlimit \
@@ -424,6 +422,34 @@ AC_CHECK_FUNCS(
_vscprintf
)
+# Apple messed up when they added two functions functions in Sierra: they
+# forgot to decorate them with appropriate AVAILABLE_MAC_OS_VERSION
+# checks. So we should only probe for those functions if we are sure that we
+# are not targetting OSX 10.11 or earlier.
+AC_MSG_CHECKING([for a pre-Sierra OSX build target])
+AC_TRY_COMPILE([
+#ifdef __APPLE__
+# include <AvailabilityMacros.h>
+# ifndef MAC_OS_X_VERSION_10_12
+# define MAC_OS_X_VERSION_10_12 101200
+# endif
+# if defined(MAC_OS_X_VERSION_MIN_REQUIRED)
+# if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12
+# error "Running on Mac OSX 10.11 or earlier"
+# endif
+# endif
+#endif
+], [],
+ [on_macos_pre_10_12=no ; AC_MSG_RESULT([no])],
+ [on_macos_pre_10_12=yes; AC_MSG_RESULT([yes])])
+
+if test "$on_macos_pre_10_12" = "no"; then
+ AC_CHECK_FUNCS(
+ clock_gettime \
+ getentropy \
+ )
+fi
+
if test "$bwin32" != "true"; then
AC_CHECK_HEADERS(pthread.h)
AC_CHECK_FUNCS(pthread_create)
@@ -1410,6 +1436,14 @@ AC_CHECK_DECLS([mlockall], , , [
#include <sys/mman.h>
#endif])
+# Some MinGW environments don't have getpagesize in unistd.h. We don't use
+# AC_CHECK_FUNCS(getpagesize), because other environments rename getpagesize
+# using macros
+AC_CHECK_DECLS([getpagesize], , , [
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif])
+
# Allow user to specify an alternate syslog facility
AC_ARG_WITH(syslog-facility,
AS_HELP_STRING(--with-syslog-facility=LOG, [syslog facility to use (default=LOG_DAEMON)]),
diff --git a/doc/HACKING/ReleasingTor.md b/doc/HACKING/ReleasingTor.md
index 04d9ecc3e8..4761ca9a37 100644
--- a/doc/HACKING/ReleasingTor.md
+++ b/doc/HACKING/ReleasingTor.md
@@ -98,7 +98,7 @@ new Tor release:
to a release-0.2.x branch, manually commit the changelogs to the later
git branches too.
-3. If you're doing the first stable release in a series, you need to
+3. If you're doing the first stable release in a series, you need to
create a ReleaseNotes for the series as a whole. To get started
there, copy all of the Changelog entries from the series into a new
file, and run `./scripts/maint/sortChanges.py` on it. That will
@@ -164,12 +164,15 @@ new Tor release:
0.2.2.23-alpha" (or whatever the version is), and we select the date as
the date in the ChangeLog.
-5. Wait up to a day or two (for a development release), or until most
- packages are up (for a stable release), and mail the release blurb and
- changelog to tor-talk or tor-announce.
+5. Mail the release blurb and ChangeLog to tor-talk (development release) or
+ tor-announce (stable).
- (We might be moving to faster announcements, but don't announce until
- the website is at least updated.)
+ Post the changelog on the the blog as well. You can generate a
+ blog-formatted version of the changelog with the -B option to
+ format-changelog.
+
+ When you post, include an estimate of when the next TorBrowser releases
+ will come out that include this Tor release.
=== V. Aftermath and cleanup
@@ -182,4 +185,5 @@ new Tor release:
2. Forward-port the ChangeLog (and ReleaseNotes if appropriate).
+3. Keep an eye on the blog post, to moderate comments and answer questions.
diff --git a/doc/HACKING/WritingTests.md b/doc/HACKING/WritingTests.md
index de80bbdef2..4dae41e922 100644
--- a/doc/HACKING/WritingTests.md
+++ b/doc/HACKING/WritingTests.md
@@ -48,7 +48,7 @@ isolation, you just run `./src/test/test-memwipe`.
To run tests within the unit test programs, you can specify the name
of the test. The string ".." can be used as a wildcard at the end of the
test name. For example, to run all the cell format tests, enter
-`./src/test/test cellfmt/..`. To run
+`./src/test/test cellfmt/..`.
Many tests that need to mess with global state run in forked subprocesses in
order to keep from contaminating one another. But when debugging a failing test,
diff --git a/doc/tor.1.txt b/doc/tor.1.txt
index cbc7ac181e..eef74547ee 100644
--- a/doc/tor.1.txt
+++ b/doc/tor.1.txt
@@ -504,11 +504,13 @@ GENERAL OPTIONS
(Default: 1)
[[FetchUselessDescriptors]] **FetchUselessDescriptors** **0**|**1**::
- If set to 1, Tor will fetch every non-obsolete descriptor from the
- authorities that it hears about. Otherwise, it will avoid fetching useless
- descriptors, for example for routers that are not running. This option is
- useful if you're using the contributed "exitlist" script to enumerate Tor
- nodes that exit to certain addresses. (Default: 0)
+ If set to 1, Tor will fetch every consensus flavor, descriptor, and
+ certificate that it hears about. Otherwise, it will avoid fetching useless
+ descriptors: flavors that it is not using to build circuits, and authority
+ certificates it does not trust. This option is useful if you're using a
+ tor client with an external parser that uses a full consensus.
+ This option fetches all documents, **DirCache** fetches and serves
+ all documents. (Default: 0)
[[HTTPProxy]] **HTTPProxy** __host__[:__port__]::
Tor will make all its directory requests through this host:port (or host:80
@@ -717,6 +719,13 @@ GENERAL OPTIONS
127.0.0.1 or 10.0.0.1. This is mostly useful for debugging
rate-limiting. (Default: 0)
+[[ExtendByEd25519ID]] **ExtendByEd25519ID** **0**|**1**|**auto**::
+ If this option is set to 1, we always try to include a relay's Ed25519 ID
+ when telling the proceeding relay in a circuit to extend to it.
+ If this option is set to 0, we never include Ed25519 IDs when extending
+ circuits. If the option is set to "default", we obey a
+ parameter in the consensus document. (Default: auto)
+
CLIENT OPTIONS
--------------
@@ -1412,7 +1421,8 @@ The following options are useful only for clients (that is, if
If true, Tor does not try to fulfill requests to connect to an internal
address (like 127.0.0.1 or 192.168.0.1) __unless a exit node is
specifically requested__ (for example, via a .exit hostname, or a
- controller request). (Default: 1)
+ controller request). If true, multicast DNS hostnames for machines on the
+ local network (of the form *.local) are also rejected. (Default: 1)
[[DownloadExtraInfo]] **DownloadExtraInfo** **0**|**1**::
If true, Tor downloads and caches "extra-info" documents. These documents
@@ -2236,10 +2246,6 @@ on the public Tor network.
list as acceptable on a single IP address. Set this to "0" for "no limit".
(Default: 2)
-[[AuthDirMaxServersPerAuthAddr]] **AuthDirMaxServersPerAuthAddr** __NUM__::
- Authoritative directories only. Like AuthDirMaxServersPerAddr, but applies
- to addresses shared with directory authorities. (Default: 5)
-
[[AuthDirFastGuarantee]] **AuthDirFastGuarantee** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**|**TBytes**|**KBits**|**MBits**|**GBits**|**TBits**::
Authoritative directories only. If non-zero, always vote the
Fast flag for any relay advertising this amount of capacity or
@@ -2263,6 +2269,13 @@ on the public Tor network.
(default), the flag "shared-rand-participate" is added to the authority
vote indicating participation in the protocol. (Default: 1)
+[[AuthDirTestEd25519LinkKeys]] **AuthDirTestEd25519LinkKeys** **0**|**1**::
+ Authoritative directories only. If this option is set to 0, then we treat
+ relays as "Running" if their RSA key is correct when we probe them,
+ regardless of their Ed25519 key. We should only ever set this option to 0
+ if there is some major bug in Ed25519 link authentication that causes us
+ to label all the relays as not Running. (Default: 1)
+
[[BridgePassword]] **BridgePassword** __Password__::
If set, contains an HTTP authenticator that tells a bridge authority to
serve all requested bridge information. Used by the (only partially
@@ -2427,8 +2440,9 @@ The following options are used to configure a hidden service.
servers with different IP addresses.
HiddenServiceSingleHopMode requires HiddenServiceNonAnonymousMode to be set
- to 1. Since a Single Onion is non-anonymous, you can not to run an
- anonymous SOCKSPort on the same tor instance as a Single Onion service.
+ to 1. Since a Single Onion service is non-anonymous, you can not configure
+ a SOCKSPort on a tor instance that is running in
+ **HiddenServiceSingleHopMode**.
(Default: 0)
[[HiddenServiceNonAnonymousMode]] **HiddenServiceNonAnonymousMode** **0**|**1**::
diff --git a/scripts/codegen/run_trunnel.sh b/scripts/codegen/run_trunnel.sh
index c574ea8069..428804342a 100755
--- a/scripts/codegen/run_trunnel.sh
+++ b/scripts/codegen/run_trunnel.sh
@@ -5,11 +5,13 @@ if test "x$TRUNNEL_PATH" != "x"; then
export PYTHONPATH
fi
+OPTIONS="--require-version=1.5.1"
+
# Get all .trunnel files recursively from that directory so we can support
# multiple sub-directories.
for file in `find ./src/trunnel/ -name '*.trunnel'`; do
- python -m trunnel --require-version=1.4 $file
+ python -m trunnel ${OPTIONS} $file
done
-python -m trunnel --require-version=1.4 --write-c-files --target-dir=./src/ext/trunnel/
+python -m trunnel ${OPTIONS} --write-c-files --target-dir=./src/ext/trunnel/
diff --git a/src/common/address.c b/src/common/address.c
index 773e688554..fa6630ef92 100644
--- a/src/common/address.c
+++ b/src/common/address.c
@@ -2100,7 +2100,8 @@ get_interface_address,(int severity, uint32_t *addr))
}
/** Return true if we can tell that <b>name</b> is a canonical name for the
- * loopback address. */
+ * loopback address. Return true also for *.local hostnames, which are
+ * multicast DNS names for hosts on the local network. */
int
tor_addr_hostname_is_local(const char *name)
{
diff --git a/src/common/compat.c b/src/common/compat.c
index 8d6a491c42..ebf05f59e1 100644
--- a/src/common/compat.c
+++ b/src/common/compat.c
@@ -204,7 +204,15 @@ tor_rename(const char *path_old, const char *path_new)
sandbox_intern_string(path_new));
}
-#if defined(HAVE_SYS_MMAN_H) || defined(RUNNING_DOXYGEN)
+/* Some MinGW builds have sys/mman.h, but not the corresponding symbols.
+ * Other configs rename the symbols using macros (including getpagesize).
+ * So check for sys/mman.h and unistd.h, and a getpagesize declaration. */
+#if (defined(HAVE_SYS_MMAN_H) && defined(HAVE_UNISTD_H) && \
+ defined(HAVE_DECL_GETPAGESIZE))
+#define COMPAT_HAS_MMAN_AND_PAGESIZE
+#endif
+
+#if defined(COMPAT_HAS_MMAN_AND_PAGESIZE) || defined(RUNNING_DOXYGEN)
/** Try to create a memory mapping for <b>filename</b> and return it. On
* failure, return NULL. Sets errno properly, using ERANGE to mean
* "empty file". */
diff --git a/src/common/crypto.c b/src/common/crypto.c
index 1b1f1f9aef..60d77fcfaa 100644
--- a/src/common/crypto.c
+++ b/src/common/crypto.c
@@ -1506,7 +1506,7 @@ crypto_pk_get_hashed_fingerprint(crypto_pk_t *pk, char *fp_out)
if (crypto_pk_get_digest(pk, digest)) {
return -1;
}
- if (crypto_digest(hashed_digest, digest, DIGEST_LEN)) {
+ if (crypto_digest(hashed_digest, digest, DIGEST_LEN) < 0) {
return -1;
}
base16_encode(fp_out, FINGERPRINT_LEN + 1, hashed_digest, DIGEST_LEN);
@@ -1700,19 +1700,21 @@ crypto_cipher_decrypt_with_iv(const char *key,
/** Compute the SHA1 digest of the <b>len</b> bytes on data stored in
* <b>m</b>. Write the DIGEST_LEN byte result into <b>digest</b>.
- * Return 0 on success, 1 on failure.
+ * Return 0 on success, -1 on failure.
*/
int
crypto_digest(char *digest, const char *m, size_t len)
{
tor_assert(m);
tor_assert(digest);
- return (SHA1((const unsigned char*)m,len,(unsigned char*)digest) == NULL);
+ if (SHA1((const unsigned char*)m,len,(unsigned char*)digest) == NULL)
+ return -1;
+ return 0;
}
/** Compute a 256-bit digest of <b>len</b> bytes in data stored in <b>m</b>,
* using the algorithm <b>algorithm</b>. Write the DIGEST_LEN256-byte result
- * into <b>digest</b>. Return 0 on success, 1 on failure. */
+ * into <b>digest</b>. Return 0 on success, -1 on failure. */
int
crypto_digest256(char *digest, const char *m, size_t len,
digest_algorithm_t algorithm)
@@ -1720,16 +1722,22 @@ crypto_digest256(char *digest, const char *m, size_t len,
tor_assert(m);
tor_assert(digest);
tor_assert(algorithm == DIGEST_SHA256 || algorithm == DIGEST_SHA3_256);
+
+ int ret = 0;
if (algorithm == DIGEST_SHA256)
- return (SHA256((const uint8_t*)m,len,(uint8_t*)digest) == NULL);
+ ret = (SHA256((const uint8_t*)m,len,(uint8_t*)digest) != NULL);
else
- return (sha3_256((uint8_t *)digest, DIGEST256_LEN,(const uint8_t *)m, len)
- == -1);
+ ret = (sha3_256((uint8_t *)digest, DIGEST256_LEN,(const uint8_t *)m, len)
+ > -1);
+
+ if (!ret)
+ return -1;
+ return 0;
}
/** Compute a 512-bit digest of <b>len</b> bytes in data stored in <b>m</b>,
* using the algorithm <b>algorithm</b>. Write the DIGEST_LEN512-byte result
- * into <b>digest</b>. Return 0 on success, 1 on failure. */
+ * into <b>digest</b>. Return 0 on success, -1 on failure. */
int
crypto_digest512(char *digest, const char *m, size_t len,
digest_algorithm_t algorithm)
@@ -1737,12 +1745,18 @@ crypto_digest512(char *digest, const char *m, size_t len,
tor_assert(m);
tor_assert(digest);
tor_assert(algorithm == DIGEST_SHA512 || algorithm == DIGEST_SHA3_512);
+
+ int ret = 0;
if (algorithm == DIGEST_SHA512)
- return (SHA512((const unsigned char*)m,len,(unsigned char*)digest)
- == NULL);
+ ret = (SHA512((const unsigned char*)m,len,(unsigned char*)digest)
+ != NULL);
else
- return (sha3_512((uint8_t*)digest, DIGEST512_LEN, (const uint8_t*)m, len)
- == -1);
+ ret = (sha3_512((uint8_t*)digest, DIGEST512_LEN, (const uint8_t*)m, len)
+ > -1);
+
+ if (!ret)
+ return -1;
+ return 0;
}
/** Set the common_digests_t in <b>ds_out</b> to contain every digest on the
@@ -2657,7 +2671,7 @@ crypto_expand_key_material_TAP(const uint8_t *key_in, size_t key_in_len,
for (cp = key_out, i=0; cp < key_out+key_out_len;
++i, cp += DIGEST_LEN) {
tmp[key_in_len] = i;
- if (crypto_digest((char*)digest, (const char *)tmp, key_in_len+1))
+ if (crypto_digest((char*)digest, (const char *)tmp, key_in_len+1) < 0)
goto exit;
memcpy(cp, digest, MIN(DIGEST_LEN, key_out_len-(cp-key_out)));
}
diff --git a/src/common/crypto_ed25519.c b/src/common/crypto_ed25519.c
index 1be225d1a7..8977e7a325 100644
--- a/src/common/crypto_ed25519.c
+++ b/src/common/crypto_ed25519.c
@@ -211,6 +211,14 @@ ed25519_keypair_generate(ed25519_keypair_t *keypair_out, int extra_strong)
return 0;
}
+/** Return true iff 'pubkey' is set to zero (eg to indicate that it is not
+ * set). */
+int
+ed25519_public_key_is_zero(const ed25519_public_key_t *pubkey)
+{
+ return tor_mem_is_zero((char*)pubkey->pubkey, ED25519_PUBKEY_LEN);
+}
+
/* Return a heap-allocated array that contains <b>msg</b> prefixed by the
* string <b>prefix_str</b>. Set <b>final_msg_len_out</b> to the size of the
* final array. If an error occured, return NULL. It's the resonsibility of the
@@ -620,6 +628,18 @@ ed25519_pubkey_eq(const ed25519_public_key_t *key1,
return tor_memeq(key1->pubkey, key2->pubkey, ED25519_PUBKEY_LEN);
}
+/**
+ * Set <b>dest</b> to contain the same key as <b>src</b>.
+ */
+void
+ed25519_pubkey_copy(ed25519_public_key_t *dest,
+ const ed25519_public_key_t *src)
+{
+ tor_assert(dest);
+ tor_assert(src);
+ memcpy(dest, src, sizeof(ed25519_public_key_t));
+}
+
/** Check whether the given Ed25519 implementation seems to be working.
* If so, return 0; otherwise return -1. */
static int
diff --git a/src/common/crypto_ed25519.h b/src/common/crypto_ed25519.h
index 08ba9be2fc..56782cc12e 100644
--- a/src/common/crypto_ed25519.h
+++ b/src/common/crypto_ed25519.h
@@ -67,6 +67,8 @@ ed25519_checksig_prefixed(const ed25519_signature_t *signature,
const char *prefix_str,
const ed25519_public_key_t *pubkey);
+int ed25519_public_key_is_zero(const ed25519_public_key_t *pubkey);
+
/**
* A collection of information necessary to check an Ed25519 signature. Used
* for batch verification.
@@ -119,6 +121,8 @@ void ed25519_keypair_free(ed25519_keypair_t *kp);
int ed25519_pubkey_eq(const ed25519_public_key_t *key1,
const ed25519_public_key_t *key2);
+void ed25519_pubkey_copy(ed25519_public_key_t *dest,
+ const ed25519_public_key_t *src);
void ed25519_set_impl_params(int use_donna);
void ed25519_init(void);
diff --git a/src/common/crypto_format.c b/src/common/crypto_format.c
index 2f6d847c83..483013ee68 100644
--- a/src/common/crypto_format.c
+++ b/src/common/crypto_format.c
@@ -161,6 +161,22 @@ curve25519_public_from_base64(curve25519_public_key_t *pkey,
}
}
+/** For convenience: Convert <b>pkey</b> to a statically allocated base64
+ * string and return it. Not threadsafe. Subsequent calls invalidate
+ * previous returns. */
+const char *
+ed25519_fmt(const ed25519_public_key_t *pkey)
+{
+ static char formatted[ED25519_BASE64_LEN+1];
+ if (pkey) {
+ int r = ed25519_public_to_base64(formatted, pkey);
+ tor_assert(!r);
+ } else {
+ strlcpy(formatted, "<null>", sizeof(formatted));
+ }
+ return formatted;
+}
+
/** Try to decode the string <b>input</b> into an ed25519 public key. On
* success, store the value in <b>pkey</b> and return 0. Otherwise return
* -1. */
diff --git a/src/common/crypto_format.h b/src/common/crypto_format.h
index 012e228cc4..86c29d319c 100644
--- a/src/common/crypto_format.h
+++ b/src/common/crypto_format.h
@@ -28,6 +28,7 @@ int ed25519_public_from_base64(ed25519_public_key_t *pkey,
const char *input);
int ed25519_public_to_base64(char *output,
const ed25519_public_key_t *pkey);
+const char *ed25519_fmt(const ed25519_public_key_t *pkey);
/* XXXX move these to crypto_format.h */
#define ED25519_SIG_BASE64_LEN 86
diff --git a/src/common/log.c b/src/common/log.c
index 3b0eb882c3..1c592c6bda 100644
--- a/src/common/log.c
+++ b/src/common/log.c
@@ -1319,10 +1319,8 @@ parse_log_severity_config(const char **cfg_ptr,
if (got_an_unqualified_range > 1)
return -1;
- space = strchr(cfg, ' ');
+ space = find_whitespace(cfg);
dash = strchr(cfg, '-');
- if (!space)
- space = strchr(cfg, '\0');
if (dash && dash < space) {
sev_lo = tor_strndup(cfg, dash-cfg);
sev_hi = tor_strndup(dash+1, space-(dash+1));
diff --git a/src/common/sandbox.c b/src/common/sandbox.c
index 24ba8a2997..ebc843e130 100644
--- a/src/common/sandbox.c
+++ b/src/common/sandbox.c
@@ -1579,13 +1579,14 @@ sandbox_add_addrinfo(const char *name)
void
sandbox_free_getaddrinfo_cache(void)
{
- cached_getaddrinfo_item_t **next, **item;
+ cached_getaddrinfo_item_t **next, **item, *this;
for (item = HT_START(getaddrinfo_cache, &getaddrinfo_cache);
item;
item = next) {
+ this = *item;
next = HT_NEXT_RMV(getaddrinfo_cache, &getaddrinfo_cache, item);
- cached_getaddrinfo_item_free(*item);
+ cached_getaddrinfo_item_free(this);
}
HT_CLEAR(getaddrinfo_cache, &getaddrinfo_cache);
diff --git a/src/common/timers.c b/src/common/timers.c
index 41b2008ac4..e1ad47b15b 100644
--- a/src/common/timers.c
+++ b/src/common/timers.c
@@ -255,6 +255,20 @@ timer_set_cb(tor_timer_t *t, timer_cb_fn_t cb, void *arg)
}
/**
+ * Set *<b>cb_out</b> (if provided) to this timer's callback function,
+ * and *<b>arg_out</b> (if provided) to this timer's callback argument.
+ */
+void
+timer_get_cb(const tor_timer_t *t,
+ timer_cb_fn_t *cb_out, void **arg_out)
+{
+ if (cb_out)
+ *cb_out = t->callback.cb;
+ if (arg_out)
+ *arg_out = t->callback.arg;
+}
+
+/**
* Schedule the timer t to fire at the current time plus a delay of
* <b>delay</b> microseconds. All times are relative to monotime_get().
*/
diff --git a/src/common/timers.h b/src/common/timers.h
index 5f918f8e15..c5246a3335 100644
--- a/src/common/timers.h
+++ b/src/common/timers.h
@@ -13,6 +13,8 @@ typedef void (*timer_cb_fn_t)(tor_timer_t *, void *,
const struct monotime_t *);
tor_timer_t *timer_new(timer_cb_fn_t cb, void *arg);
void timer_set_cb(tor_timer_t *t, timer_cb_fn_t cb, void *arg);
+void timer_get_cb(const tor_timer_t *t,
+ timer_cb_fn_t *cb_out, void **arg_out);
void timer_schedule(tor_timer_t *t, const struct timeval *delay);
void timer_disable(tor_timer_t *t);
void timer_free(tor_timer_t *t);
diff --git a/src/common/util.c b/src/common/util.c
index cb5f12821e..417aa89433 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -2270,10 +2270,14 @@ check_private_dir,(const char *dirname, cpd_check_t check,
* permissions on the directory will be checked again below.*/
fd = open(sandbox_intern_string(dirname), O_NOFOLLOW);
- if (fd == -1)
+ if (fd == -1) {
+ log_warn(LD_FS, "Could not reopen recently created directory %s: %s",
+ dirname,
+ strerror(errno));
return -1;
- else
+ } else {
close(fd);
+ }
} else if (!(check & CPD_CHECK)) {
log_warn(LD_FS, "Directory %s does not exist.", dirname);
@@ -2601,6 +2605,14 @@ finish_writing_to_file_impl(open_file_t *file_data, int abort_write)
if (file_data->rename_on_close) {
tor_assert(file_data->tempname && file_data->filename);
+ if (!abort_write) {
+ tor_assert(strcmp(file_data->filename, file_data->tempname));
+ if (replace_file(file_data->tempname, file_data->filename)) {
+ log_warn(LD_FS, "Error replacing \"%s\": %s", file_data->filename,
+ strerror(errno));
+ abort_write = r = -1;
+ }
+ }
if (abort_write) {
int res = unlink(file_data->tempname);
if (res != 0) {
@@ -2609,13 +2621,6 @@ finish_writing_to_file_impl(open_file_t *file_data, int abort_write)
file_data->tempname, strerror(errno));
r = -1;
}
- } else {
- tor_assert(strcmp(file_data->filename, file_data->tempname));
- if (replace_file(file_data->tempname, file_data->filename)) {
- log_warn(LD_FS, "Error replacing \"%s\": %s", file_data->filename,
- strerror(errno));
- r = -1;
- }
}
}
diff --git a/src/config/geoip b/src/config/geoip
index 966c440827..406fff09e7 100644
--- a/src/config/geoip
+++ b/src/config/geoip
@@ -1,4 +1,4 @@
-# Last updated based on November 3 2016 Maxmind GeoLite2 Country
+# Last updated based on December 7 2016 Maxmind GeoLite2 Country
# wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz
# gunzip GeoLite2-Country.mmdb.gz
# python mmdb-convert.py GeoLite2-Country.mmdb
@@ -150,7 +150,13 @@
39583744,39845887,RU
39845888,40370175,GB
40370176,40894463,DK
-40894464,41418751,IT
+40894464,40915719,IT
+40915720,40915735,SI
+40915736,40916671,IT
+40916672,40916687,SI
+40916688,41223311,IT
+41223312,41223319,SI
+41223320,41418751,IT
41418752,41943039,GB
41943040,42205183,DK
42205184,42467327,KZ
@@ -296,7 +302,7 @@
85394432,85394439,IT
85394944,85395199,HU
85395456,85395711,TR
-85395968,85396223,BE
+85395968,85396223,LU
85396480,85397503,ES
85398528,85398783,SA
85399552,85400063,FR
@@ -469,7 +475,9 @@
86448856,86448859,PT
86448860,86448951,FR
86448952,86448955,DE
-86448956,86449311,FR
+86448956,86449119,FR
+86449120,86449151,PT
+86449152,86449311,FR
86449312,86449343,ES
86449344,86449363,FR
86449364,86449367,DE
@@ -485,11 +493,7 @@
86449760,86449791,IE
86449792,86449883,FR
86449884,86449884,DE
-86449885,86450003,FR
-86450004,86450007,PT
-86450008,86450011,FR
-86450012,86450015,IE
-86450016,86450163,FR
+86449885,86450163,FR
86450164,86450167,GB
86450168,86450335,FR
86450336,86450339,GB
@@ -621,7 +625,8 @@
86470360,86470363,PT
86470364,86470727,FR
86470728,86470731,ES
-86470732,86470751,FR
+86470732,86470735,FR
+86470736,86470751,GB
86470752,86470767,PT
86470768,86470951,FR
86470952,86470959,GB
@@ -674,7 +679,9 @@
86497280,86499327,NL
86499328,86503423,FR
86503424,86505471,DE
-86505472,86507519,GB
+86505472,86505983,GB
+86505984,86506239,PK
+86506240,86507519,GB
86507520,86573055,ES
86573056,86638591,SA
86638592,86671359,RU
@@ -811,7 +818,13 @@
87755776,87756799,RU
87756800,87758847,ES
87758848,87761407,RU
-87761408,87818239,CZ
+87761408,87761663,CZ
+87761664,87761919,RU
+87761920,87762431,FR
+87762432,87762943,CZ
+87762944,87763967,KZ
+87763968,87766015,RU
+87766016,87818239,CZ
87818240,87883775,PL
87883776,87885823,IT
87885824,87889919,RU
@@ -839,7 +852,10 @@
87957760,87965695,GB
87965696,87967743,DE
87967744,87969791,IT
-87969792,87972863,IM
+87969792,87970815,IM
+87970816,87971071,GG
+87971072,87971839,IM
+87971840,87972863,IE
87972864,87973375,GI
87973376,87973887,IM
87973888,87981567,DE
@@ -920,9 +936,7 @@
90516992,90517503,NL
90517504,90518527,RU
90518528,90519551,NL
-90519552,90522623,RU
-90522624,90523647,NL
-90523648,90529791,RU
+90519552,90529791,RU
90529792,90533119,NL
90533120,90533375,DE
90533376,90533631,NL
@@ -1217,7 +1231,9 @@
92745208,92745215,ES
92745216,92745395,FR
92745396,92745399,GB
-92745400,92746415,FR
+92745400,92745663,FR
+92745664,92745695,PL
+92745696,92746415,FR
92746416,92746431,ES
92746432,92747547,FR
92747548,92747567,ES
@@ -1289,7 +1305,9 @@
92760324,92760327,DE
92760328,92760607,FR
92760608,92760639,GB
-92760640,92761375,FR
+92760640,92761151,FR
+92761152,92761215,PT
+92761216,92761375,FR
92761376,92761391,FI
92761392,92762055,FR
92762056,92762059,GB
@@ -1307,7 +1325,9 @@
92764224,92764287,ES
92764288,92764687,FR
92764688,92764703,ES
-92764704,92765423,FR
+92764704,92764911,FR
+92764912,92764927,GB
+92764928,92765423,FR
92765424,92765427,GB
92765428,92766015,FR
92766016,92766047,ES
@@ -1407,9 +1427,7 @@
92797164,92797167,PT
92797168,92797355,FR
92797356,92797359,DE
-92797360,92797727,FR
-92797728,92797743,DE
-92797744,92798975,FR
+92797360,92798975,FR
92798976,93323263,RU
93323264,93335551,CH
93335552,93339647,IL
@@ -1523,7 +1541,9 @@
94176768,94177535,SE
94177536,94177791,IT
94177792,94178047,DK
-94178048,94180351,SE
+94178048,94178303,SE
+94178304,94178559,IE
+94178560,94180351,SE
94180352,94180607,PT
94180608,94181631,SE
94181632,94181887,CZ
@@ -1818,7 +1838,9 @@
96759312,96759327,ES
96759328,96759735,FR
96759736,96759739,ES
-96759740,96761855,FR
+96759740,96760099,FR
+96760100,96760103,IE
+96760104,96761855,FR
96761856,96761871,BE
96761872,96762799,FR
96762800,96762815,BE
@@ -1836,7 +1858,9 @@
96764384,96764399,FI
96764400,96766063,FR
96766064,96766079,ES
-96766080,96767031,FR
+96766080,96766911,FR
+96766912,96766915,GB
+96766916,96767031,FR
96767032,96767035,GB
96767036,96767823,FR
96767824,96767839,BE
@@ -1862,11 +1886,15 @@
96773120,96773375,ES
96773376,96773743,FR
96773744,96773759,ES
-96773760,96774719,FR
+96773760,96774631,FR
+96774632,96774635,BE
+96774636,96774719,FR
96774720,96774751,ES
96774752,96775183,FR
96775184,96775199,PT
-96775200,96775551,FR
+96775200,96775491,FR
+96775492,96775495,ES
+96775496,96775551,FR
96775552,96775567,GB
96775568,96775999,FR
96776000,96776063,GB
@@ -1931,7 +1959,9 @@
96785408,96785411,NL
96785412,96785415,FR
96785416,96785423,NL
-96785424,96786431,FR
+96785424,96785603,FR
+96785604,96785607,PT
+96785608,96786431,FR
96786432,96786495,GB
96786496,96788143,FR
96788144,96788159,ES
@@ -2163,8 +2193,8 @@
100559424,100559439,GB
100559440,100559447,RO
100559448,100559455,GB
-100559456,100559487,RO
-100559488,100559519,GB
+100559456,100559471,RO
+100559472,100559519,GB
100559520,100559551,RO
100559552,100559615,GB
100559616,100559743,RO
@@ -2286,10 +2316,8 @@
214698240,214698255,VI
214698256,214698303,US
214698304,214698311,VI
-214698312,214778879,US
-214778880,214779135,PR
-214779136,214779391,US
-214779392,214781951,PR
+214698312,214777855,US
+214777856,214781951,PR
214781952,214787583,US
214787584,214788095,PR
214788096,219187465,US
@@ -2346,7 +2374,9 @@
224707744,224707775,IE
224707776,224708735,US
224708736,224708767,KR
-224708768,225050623,US
+224708768,224712959,US
+224712960,224712991,KR
+224712992,225050623,US
225050624,225051647,IN
225051648,225052159,SG
225052160,225052671,JP
@@ -2378,7 +2408,13 @@
225074688,225076735,US
225076736,225077247,NL
225077248,225077759,IE
-225077760,234881023,US
+225077760,225078783,US
+225078784,225079295,IE
+225079296,225079807,HK
+225079808,225080319,PR
+225080320,225443839,US
+225443840,225705983,JP
+225705984,234881023,US
234881024,234883071,CN
234883072,234884095,JP
234884096,234885119,CN
@@ -2440,7 +2476,6 @@
243269632,243270655,JP
243270656,243271679,NZ
243271680,243272703,TH
-243272704,243273727,NP
243273728,243277823,JP
243277824,243286015,AU
243286016,243302399,JP
@@ -2521,7 +2556,8 @@
288169472,288169983,CA
288169984,288176127,US
288176128,288178175,MX
-288178176,288196607,US
+288178176,288180223,CA
+288180224,288196607,US
288196608,288197119,CA
288197120,288197631,US
288197632,288198143,CA
@@ -2541,7 +2577,9 @@
288223232,288227327,CA
288227328,289406975,US
289406976,289554431,IE
-289554432,289624063,US
+289554432,289615871,US
+289615872,289619967,FR
+289619968,289624063,US
289624064,289628159,CH
289628160,289630207,US
289630208,289632255,SE
@@ -2631,15 +2669,25 @@
290310144,290312191,IN
290312192,290357247,US
290357248,290365439,IL
-290365440,290377727,US
+290365440,290374911,US
+290374912,290375167,GB
+290375168,290377727,US
290377728,290379775,GB
-290379776,290423807,US
+290379776,290383103,US
+290383104,290383359,NL
+290383360,290423807,US
290423808,290424831,SE
290424832,290586623,US
290586624,290652159,SG
-290652160,290873343,US
+290652160,290717183,US
+290717184,290717439,JP
+290717440,290737919,US
+290737920,290738175,SG
+290738176,290873343,US
290873344,290881535,AU
-290881536,290955263,US
+290881536,290913791,US
+290913792,290914047,AU
+290914048,290955263,US
290955264,290963455,CN
290963456,300646399,US
300646400,300650495,JP
@@ -2656,7 +2704,9 @@
301802496,301802751,GB
301802752,301803007,US
301803008,301803263,SE
-301803264,301806591,US
+301803264,301805567,US
+301805568,301805823,DE
+301805824,301806591,US
301806592,301806847,NL
301806848,301807103,US
301807104,301807359,DE
@@ -2668,7 +2718,9 @@
301810688,301810943,JP
301810944,301811199,US
301811200,301811455,JP
-301811456,301814271,US
+301811456,301812223,US
+301812224,301812479,JP
+301812480,301814271,US
301814272,301814527,SG
301814528,301814783,US
301814784,301815039,HK
@@ -2718,9 +2770,7 @@
385920512,385920767,NL
385920768,385930239,US
385930240,385931263,NL
-385931264,385934335,US
-385934336,385934847,NL
-385934848,385939967,US
+385931264,385939967,US
385939968,385940479,NL
385940480,385942527,US
385942528,385943551,NL
@@ -2728,9 +2778,7 @@
385950720,385951743,NL
385951744,385957887,US
385957888,385961983,NL
-385961984,385986559,US
-385986560,385990655,NL
-385990656,386002431,US
+385961984,386002431,US
386002432,386002943,NL
386002944,386003199,US
386003200,386003967,NL
@@ -2746,9 +2794,7 @@
386015232,386015487,NL
386015488,386020351,US
386020352,386021375,NL
-386021376,386025471,US
-386025472,386026495,NL
-386026496,386035711,US
+386021376,386035711,US
386035712,386039807,NL
386039808,386060287,US
386060288,386068479,NL
@@ -2779,8 +2825,8 @@
386245632,386247679,US
386247680,386248703,NL
386248704,386297855,US
-386297856,386310143,NL
-386310144,386383871,US
+386297856,386301951,NL
+386301952,386383871,US
386383872,386387967,NL
386387968,386400255,US
386400256,386404351,NL
@@ -2880,7 +2926,9 @@
388227072,388272127,US
388272128,388284415,NL
388284416,388288511,US
-388288512,388300799,NL
+388288512,388292607,NL
+388292608,388296703,US
+388296704,388300799,NL
388300800,388308991,US
388308992,388317183,NL
388317184,388325375,US
@@ -2889,8 +2937,8 @@
388341760,388345855,NL
388345856,388354047,US
388354048,388358143,NL
-388358144,388362239,US
-388362240,388386815,NL
+388358144,388366335,US
+388366336,388386815,NL
388386816,388390911,US
388390912,388392447,NL
388392448,388397055,US
@@ -2976,29 +3024,23 @@
389365760,389390335,US
389390336,389398527,NL
389398528,389402623,US
-389402624,389423103,NL
-389423104,389435391,US
+389402624,389419007,NL
+389419008,389435391,US
389435392,389455871,NL
389455872,389480447,US
389480448,389484543,NL
-389484544,389494783,US
-389494784,389495807,NL
+389484544,389495295,US
+389495296,389495807,NL
389495808,389509119,US
389509120,389513215,NL
389513216,389515263,US
389515264,389521407,NL
389521408,389537791,US
389537792,389541887,NL
-389541888,389599743,US
-389599744,389600450,NL
-389600451,389600451,US
-389600452,389600767,NL
-389600768,389602303,US
-389602304,389603327,NL
-389603328,389611519,US
+389541888,389611519,US
389611520,389619711,NL
-389619712,389627903,US
-389627904,389628927,NL
+389619712,389628415,US
+389628416,389628927,NL
389628928,389631999,US
389632000,389641215,NL
389641216,389701119,US
@@ -3011,20 +3053,16 @@
389767168,389775359,NL
389775360,389812223,US
389812224,389816319,NL
-389816320,389824511,US
-389824512,389825535,NL
-389825536,389825791,US
+389816320,389825791,US
389825792,389826559,NL
389826560,389852159,US
389852160,389853183,NL
389853184,389857279,US
389857280,389865471,NL
-389865472,389902335,US
-389902336,389903359,NL
-389903360,389923839,US
+389865472,389923839,US
389923840,389924351,NL
-389924352,389924607,US
-389924608,389925375,NL
+389924352,389924863,US
+389924864,389925375,NL
389925376,389926911,US
389926912,389936127,NL
389936128,389937151,US
@@ -3035,9 +3073,7 @@
389938688,389940223,NL
389940224,389941503,US
389941504,389941759,NL
-389941760,389942271,US
-389942272,389942783,NL
-389942784,389952767,US
+389941760,389952767,US
389952768,389953023,NL
389953024,389954815,US
389954816,389955071,NL
@@ -3083,14 +3119,14 @@
390148096,390165503,US
390165504,390166527,NL
390166528,390181887,US
-390181888,390182399,NL
-390182400,390184959,US
+390181888,390182143,NL
+390182144,390184959,US
390184960,390193151,NL
390193152,390205439,US
390205440,390209535,NL
390209536,390261247,US
-390261248,390262783,NL
-390262784,390276863,US
+390261248,390261759,NL
+390261760,390276863,US
390276864,390277375,NL
390277376,390277631,US
390277632,390278143,NL
@@ -3104,10 +3140,10 @@
390299648,390304767,NL
390304768,390332159,US
390332160,390332415,NL
-390332416,390694655,US
-390694656,390694911,NL
-390694912,390731775,US
-390731776,390732799,NL
+390332416,390731775,US
+390731776,390732031,NL
+390732032,390732287,US
+390732288,390732799,NL
390732800,390733823,US
390733824,390737919,NL
390737920,390746111,US
@@ -3116,13 +3152,7 @@
390767616,390768639,NL
390768640,390770687,US
390770688,390778879,NL
-390778880,390896639,US
-390896640,390897151,NL
-390897152,390943743,US
-390943744,390944767,NL
-390944768,390972159,US
-390972160,390972415,NL
-390972416,390972927,US
+390778880,390972927,US
390972928,390973951,NL
390973952,390975487,US
390975488,390976511,NL
@@ -3418,12 +3448,16 @@
397410304,397410559,CA
397475840,397476095,US
397541376,397672447,CA
-397672448,397672703,US
+397672448,397803519,US
397803520,397803775,CA
-397934592,397934847,US
+397869056,397869311,US
+397934592,398065663,US
398065664,398065919,CA
+398131200,398131455,US
398196736,398196991,KY
+398262272,398262527,US
398327808,398328063,PR
+398393344,398393599,US
398458880,398500351,US
398500352,398500863,NL
398500864,398532607,US
@@ -3448,10 +3482,8 @@
398779904,398781439,NL
398781440,398782463,US
398782464,398790655,NL
-398790656,398802431,US
-398802432,398802943,NL
-398802944,398850047,US
-398850048,398852095,NL
+398790656,398851071,US
+398851072,398852095,NL
398852096,398856191,US
398856192,398860287,NL
398860288,398868479,US
@@ -3487,7 +3519,9 @@
399355904,399365119,US
399365120,399366143,NL
399366144,399367167,US
-399367168,399388671,NL
+399367168,399378943,NL
+399378944,399380479,US
+399380480,399388671,NL
399388672,399396863,US
399396864,399406591,NL
399406592,399458303,US
@@ -3500,21 +3534,15 @@
399601664,399619583,NL
399619584,399621631,US
399621632,399639551,NL
-399639552,399719679,US
-399719680,399719935,NL
-399719936,399737855,US
-399737856,399738367,NL
-399738368,399738879,US
+399639552,399738879,US
399738880,399739647,NL
399739648,399740927,US
399740928,399749119,NL
399749120,399797247,US
399797248,399797759,NL
-399797760,399815679,US
-399815680,399817215,NL
-399817216,399818751,US
-399818752,399826943,NL
-399826944,399870975,US
+399797760,399818751,US
+399818752,399822847,NL
+399822848,399870975,US
399870976,399871999,NL
399872000,399908863,US
399908864,399919615,NL
@@ -3528,9 +3556,7 @@
399990784,399991295,NL
399991296,399998975,US
399998976,399999487,NL
-399999488,399999999,US
-400000000,400000511,NL
-400000512,400021247,US
+399999488,400021247,US
400021248,400021503,NL
400021504,400047103,US
400047104,400047615,NL
@@ -3546,9 +3572,7 @@
400121856,400122367,NL
400122368,400124927,US
400124928,400130047,NL
-400130048,400138239,US
-400138240,400143359,NL
-400143360,400144383,US
+400130048,400144383,US
400144384,400145407,NL
400145408,400154623,US
400154624,400162815,NL
@@ -3556,9 +3580,7 @@
400201216,400202751,NL
400202752,400203775,US
400203776,400211967,NL
-400211968,400248831,US
-400248832,400250367,NL
-400250368,400283647,US
+400211968,400283647,US
400283648,400284671,NL
400284672,400293887,US
400293888,400302079,NL
@@ -3595,7 +3617,9 @@
400884736,400884991,GB
400884992,400885103,US
400885104,400885111,GB
-400885112,400887551,US
+400885112,400887343,US
+400887344,400887351,SE
+400887352,400887551,US
400887552,400887807,GB
400887808,400888575,US
400888576,400888831,GB
@@ -3605,10 +3629,11 @@
400897536,400897791,GB
400897792,400911103,US
400911104,400911359,PA
-400911360,400911615,AU
+400911360,400911583,AU
+400911584,400911615,US
400911616,400911871,CR
-400911872,400912159,US
-400912160,400912255,SG
+400911872,400912191,US
+400912192,400912255,SG
400912256,400912319,US
400912320,400912383,SG
400912384,401114367,US
@@ -3670,7 +3695,9 @@
401378560,401386495,US
401386496,401387007,SE
401387008,401387263,RU
-401387264,401547263,US
+401387264,401400871,US
+401400872,401400879,NO
+401400880,401547263,US
401547264,401555455,CA
401555456,402096639,US
402096640,402096895,FR
@@ -3738,9 +3765,15 @@
402243584,402247679,CA
402247680,402249215,US
402249216,402249727,GB
-402249728,402260271,US
+402249728,402260031,US
+402260032,402260039,FI
+402260040,402260271,US
402260272,402260279,GB
-402260280,402279935,US
+402260280,402262455,US
+402262456,402262463,FI
+402262464,402266727,US
+402266728,402266735,NO
+402266736,402279935,US
402279936,402280063,CA
402280064,402366463,US
402366464,402374655,CA
@@ -3754,7 +3787,9 @@
402410240,402410751,TR
402410752,402411263,US
402411264,402411519,TR
-402411520,402550015,US
+402411520,402524263,US
+402524264,402524271,FI
+402524272,402550015,US
402550016,402550271,CA
402550272,402550783,GB
402550784,402591663,US
@@ -4394,10 +4429,8 @@
520953856,520962047,RU
520962048,520962310,IE
520962311,520962311,US
-520962312,520963407,IE
-520963408,520963408,US
-520963409,520963583,IE
-520963584,520963839,US
+520962312,520963327,IE
+520963328,520963839,US
520963840,520964354,IE
520964355,520964355,US
520964356,520965119,IE
@@ -4417,7 +4450,9 @@
521007104,521011199,BG
521011200,521014015,RO
521014016,521014271,NL
-521014272,521019135,RO
+521014272,521018367,RO
+521018368,521018623,IT
+521018624,521019135,RO
521019136,521019391,GB
521019392,521019647,NL
521019648,521019903,BG
@@ -4673,10 +4708,10 @@
523182080,523190271,IR
523190272,523192319,FI
523192320,523194367,ES
-523194368,523196415,DE
-523196416,523196927,AE
-523196928,523197183,BH
-523197184,523198463,AE
+523194368,523197183,DE
+523197184,523197951,AE
+523197952,523198207,DE
+523198208,523198463,AE
523198464,523202559,CZ
523202560,523223039,RU
523223040,523225087,AM
@@ -4797,15 +4832,15 @@
529817600,529818623,CZ
529818624,529826303,RU
529826304,529826815,CZ
-529826816,529827839,RU
-529827840,529828863,CZ
-529828864,529829887,RU
-529829888,529830911,CZ
-529830912,529838079,RU
+529826816,529829887,RU
+529829888,529830911,UZ
+529830912,529831935,RU
+529831936,529833983,SY
+529833984,529838079,RU
529838080,529842175,UA
529842176,529843199,ES
-529843200,529844223,RU
-529844224,529845247,CZ
+529843200,529843711,RU
+529843712,529845247,CZ
529845248,529846271,UZ
529846272,529847295,CZ
529847296,529848319,GB
@@ -4824,8 +4859,8 @@
529989632,530055167,NL
530055168,530120703,GR
530120704,530165759,CY
-530165760,530174207,GR
-530174208,530186239,CY
+530165760,530173951,GR
+530173952,530186239,CY
530186240,530251775,IL
530251776,530317311,TR
530317312,530579455,IT
@@ -4900,9 +4935,7 @@
531425280,531427327,FR
531427328,531427503,GB
531427504,531427511,IT
-531427512,531427703,GB
-531427704,531427711,IT
-531427712,531427967,GB
+531427512,531427967,GB
531427968,531427983,IT
531427984,531428191,GB
531428192,531428199,IT
@@ -4988,8 +5021,7 @@
532324352,532328447,NL
532328448,532330495,PS
532330496,532332543,CZ
-532332544,532340479,SK
-532340480,532340735,PL
+532332544,532340735,SK
532340736,532341503,GB
532341504,532341759,DE
532341760,532343967,GB
@@ -5367,10 +5399,12 @@
543686656,543694847,BR
543694848,544436771,US
544436772,544436775,CA
-544436776,586975999,US
-586976256,587006719,US
+544436776,586678271,US
+586678272,586975999,IE
+586976256,587006719,IE
587006720,587006975,GB
-587006976,597295103,US
+587006976,587202559,IE
+587202560,597295103,US
597295104,597360639,IN
597360640,597426175,US
597426176,597688319,DE
@@ -5408,7 +5442,7 @@
620703744,620704767,NZ
620704768,620705791,BD
620705792,620706815,HK
-620706816,620707839,PK
+620706816,620707839,AU
620707840,620708863,IN
620708864,620709887,HK
620709888,620711935,AU
@@ -5436,9 +5470,11 @@
620739584,620740607,BD
620740608,620741631,CN
620741632,620743679,IN
-620743680,620744703,HK
+620743680,620743935,HK
+620743936,620744191,AU
+620744192,620744703,HK
620744704,620745727,IN
-620745728,620746751,US
+620745728,620746751,AU
620746752,620747775,JP
620747776,620748799,PH
620748800,620751871,IN
@@ -5522,7 +5558,11 @@
621410304,621412351,IR
621412352,621414399,NL
621414400,621414655,HK
-621414656,621418495,NL
+621414656,621416447,NL
+621416448,621416703,GB
+621416704,621417471,NL
+621417472,621417727,DE
+621417728,621418495,NL
621418496,621419007,US
621419008,621427711,NL
621427712,621427967,GB
@@ -5737,9 +5777,7 @@
623822336,623822847,NL
623822848,623824895,GB
623824896,623826943,CZ
-623826944,623827967,UA
-623827968,623828991,BG
-623828992,623837183,UA
+623826944,623837183,UA
623837184,623902719,PL
623902720,623919103,CZ
623919104,623935487,NL
@@ -5881,9 +5919,7 @@
624657544,624657547,ES
624657548,624657615,FR
624657616,624657631,GB
-624657632,624657675,FR
-624657676,624657679,ES
-624657680,624657711,FR
+624657632,624657711,FR
624657712,624657715,ES
624657716,624657719,PT
624657720,624657831,FR
@@ -5970,7 +6006,9 @@
624665588,624665591,DE
624665592,624665611,FR
624665612,624665615,ES
-624665616,624666167,FR
+624665616,624665663,FR
+624665664,624665695,ES
+624665696,624666167,FR
624666168,624666175,GB
624666176,624666219,FR
624666220,624666223,DE
@@ -6127,9 +6165,7 @@
624683016,624683023,ES
624683024,624683031,FR
624683032,624683039,GB
-624683040,624683199,FR
-624683200,624683215,ES
-624683216,624683295,FR
+624683040,624683295,FR
624683296,624683311,DE
624683312,624683339,FR
624683340,624683343,ES
@@ -6159,7 +6195,9 @@
624684908,624684911,ES
624684912,624685071,FR
624685072,624685075,ES
-624685076,624685535,FR
+624685076,624685375,FR
+624685376,624685439,ES
+624685440,624685535,FR
624685536,624685539,PT
624685540,624685683,FR
624685684,624685687,FI
@@ -6279,7 +6317,10 @@
625516544,625518591,BE
625518592,625518847,NL
625518848,625519103,US
-625519104,625520639,NL
+625519104,625520135,NL
+625520136,625520447,US
+625520448,625520495,NL
+625520496,625520639,US
625520640,625522687,RU
625522688,625523455,SE
625523456,625523711,NO
@@ -6363,7 +6404,7 @@
628015104,628017151,FR
628017152,628019199,CH
628019200,628021247,UZ
-628021248,628023295,GB
+628021248,628023295,IE
628023296,628029439,RU
628029440,628031487,GB
628031488,628064255,MM
@@ -6561,7 +6602,8 @@
630808576,630810623,NL
630810624,630816767,CH
630816768,630817791,IR
-630817792,630818303,RO
+630817792,630818047,GB
+630818048,630818303,RO
630818304,630818431,CN
630818432,630818559,KR
630818560,630819327,RO
@@ -6792,25 +6834,19 @@
635187200,635191295,FR
635191296,635195391,RS
635195392,635197439,RU
-635197440,635199671,GB
-635199672,635199679,IT
-635199680,635199775,GB
+635197440,635199775,GB
635199776,635199783,IT
635199784,635200167,GB
635200168,635200175,IT
635200176,635200263,GB
635200264,635200271,IT
-635200272,635200319,GB
-635200320,635200327,IT
-635200328,635200335,GB
+635200272,635200335,GB
635200336,635200343,IT
635200344,635200431,GB
635200432,635200439,IT
635200440,635200631,GB
635200632,635200639,IT
-635200640,635200663,GB
-635200664,635200671,IT
-635200672,635200727,GB
+635200640,635200727,GB
635200728,635200735,IT
635200736,635200847,GB
635200848,635200855,IT
@@ -6887,7 +6923,8 @@
635858944,635860479,RU
635860480,635860991,NL
635860992,635863039,BE
-635863040,635864575,RU
+635863040,635864063,US
+635864064,635864575,RU
635864576,635864831,LB
635864832,635865087,ES
635865088,635865855,RU
@@ -7019,7 +7056,9 @@
637337088,637337599,RU
637337600,637403135,NO
637403136,637534207,IR
-637534208,639442943,US
+637534208,639242239,US
+639242240,639246335,CA
+639246336,639442943,US
639442944,639451135,CA
639451136,639459327,US
639459328,639467519,CA
@@ -7301,7 +7340,8 @@
675975168,675979263,IE
675979264,676168959,US
676168960,676169215,IE
-676169216,676175903,US
+676169216,676169471,HK
+676169472,676175903,US
676175904,676176191,HK
676176192,676176255,US
676176256,676176383,HK
@@ -7309,7 +7349,9 @@
676176640,676192767,US
676192768,676192895,HK
676192896,676193023,IE
-676193024,676249599,US
+676193024,676193535,US
+676193536,676193791,IE
+676193792,676249599,US
676249600,676265983,AU
676265984,676298751,US
676298752,676331519,IE
@@ -7335,7 +7377,29 @@
676841472,676843519,JP
676843520,676845567,AU
676845568,676848639,IN
-676848640,677380095,US
+676848640,677020095,US
+677020096,677020127,IE
+677020128,677020159,US
+677020160,677020191,NL
+677020192,677020479,US
+677020480,677020543,GB
+677020544,677020607,KR
+677020608,677021951,US
+677021952,677021983,JP
+677021984,677022079,US
+677022080,677022143,IN
+677022144,677022175,IE
+677022176,677022207,US
+677022208,677022239,NL
+677022240,677022303,CA
+677022304,677022335,US
+677022336,677022367,AU
+677022368,677022431,US
+677022432,677022463,IN
+677022464,677022527,US
+677022528,677022591,GB
+677022592,677022655,KR
+677022656,677380095,US
677380096,677380127,AU
677380128,677380159,IE
677380160,677380191,NL
@@ -7627,17 +7691,15 @@
677739520,677739775,NL
677739776,677740031,IE
677740032,677740543,FI
-677740544,677773311,US
-677773312,677774335,NL
+677740544,677774335,US
677774336,677776383,BR
-677776384,677781503,NL
+677776384,677781503,US
677781504,677781615,CL
-677781616,677781799,NL
+677781616,677781799,US
677781800,677781975,CL
-677781976,677784575,NL
-677784576,677785599,US
-677785600,677806079,NL
-677806080,677838847,US
+677781976,677784575,US
+677784576,677785599,PR
+677785600,677838847,US
677838848,677838863,NL
677838864,677838879,IE
677838880,677838895,FI
@@ -7847,7 +7909,12 @@
678203136,678203391,NL
678203392,678205183,US
678205184,678205439,NL
-678205440,678428671,US
+678205440,678205695,US
+678205696,678205951,KR
+678205952,678206463,CA
+678206464,678206719,KR
+678206720,678206975,IE
+678206976,678428671,US
678428672,678436863,IE
678436864,678437887,US
678437888,678438015,IE
@@ -8460,7 +8527,8 @@
702054400,702058495,ZA
702058496,702062591,BF
702062592,702066687,NG
-702066688,702070527,CM
+702066688,702067711,PL
+702067712,702070527,CM
702070528,702070783,RU
702070784,702074879,ZA
702074880,702076927,BW
@@ -8702,9 +8770,7 @@
711166592,711169311,JP
711169312,711169327,IN
711169328,711173119,JP
-711173120,711173210,SG
-711173211,711173211,ID
-711173212,711173375,SG
+711173120,711173375,SG
711173376,711196671,JP
711196672,711458815,CN
711458816,711983103,IN
@@ -8914,7 +8980,7 @@
736411648,736412671,NP
736412672,736413695,TH
736413696,736414719,MY
-736414720,736415743,CN
+736414720,736415743,HK
736415744,736416767,BD
736416768,736417791,SG
736417792,736418815,HK
@@ -8947,8 +9013,7 @@
736450560,736452607,IN
736452608,736453631,CN
736453632,736455679,IN
-736455680,736456703,CN
-736456704,736458751,HK
+736455680,736458751,HK
736458752,736459775,CN
736460800,736461823,SG
736461824,736462847,TH
@@ -8996,7 +9061,9 @@
736520192,736521215,IN
736521216,736521471,AU
736521472,736521727,PH
-736521728,736522239,AU
+736521728,736521747,AU
+736521748,736521748,US
+736521749,736522239,AU
736522240,736524287,HK
736524288,736525311,BD
736525312,736526335,CN
@@ -9271,7 +9338,8 @@
737503232,737505279,SG
737505280,737506303,AU
737506304,737507327,BD
-737507328,737508351,AU
+737507328,737507583,AU
+737507584,737508351,BD
737508352,737509375,MY
737509376,737510399,PK
737510400,737511423,AU
@@ -9386,7 +9454,6 @@
737714176,737715199,JP
737715200,737718271,HK
737718272,737727487,CN
-737727488,737728511,AU
737728512,737729535,JP
737729536,737730559,IN
737730560,737731583,HK
@@ -9449,8 +9516,7 @@
737811456,737814527,CN
737814528,737815551,IN
737815552,737816575,TW
-737816576,737816831,HK
-737816832,737817087,JP
+737816576,737817087,JP
737817088,737817599,HK
737817600,737818623,AU
737818624,737821695,HK
@@ -9520,7 +9586,8 @@
737905664,737906687,HK
737906688,737908735,IN
737908736,737909759,AU
-737909760,737911807,HK
+737909760,737910783,HK
+737910784,737911807,DE
737911808,737912703,SG
737912704,737912831,MY
737912832,737915903,IN
@@ -9641,8 +9708,8 @@
738135040,738136063,TW
738136064,738137087,CN
738137088,738138111,BD
-738138112,738138367,US
-738138368,738139135,NZ
+738138112,738138623,US
+738138624,738139135,NZ
738140160,738141183,AU
738141184,738142207,HK
738142208,738143231,JP
@@ -9700,7 +9767,9 @@
756023296,757015551,US
757015552,757015807,CA
757015808,757071871,US
-757071872,757071951,NL
+757071872,757071911,NL
+757071912,757071919,US
+757071920,757071951,NL
757071952,757071975,US
757071976,757071991,NL
757071992,757071999,US
@@ -9710,11 +9779,13 @@
757072128,757072383,US
757072384,757072639,NL
757072640,757072703,US
-757072704,757072719,NL
-757072720,757072727,US
+757072704,757072711,NL
+757072712,757072727,US
757072728,757072775,NL
-757072776,757072783,US
-757072784,757073007,NL
+757072776,757072791,US
+757072792,757072895,NL
+757072896,757072903,US
+757072904,757073007,NL
757073008,757073023,US
757073024,757073047,NL
757073048,757073055,US
@@ -9888,8 +9959,9 @@
757799424,757799935,US
757799936,757800959,CA
757800960,757809151,US
-757809664,757809919,MA
-757813248,757858303,US
+757809408,757809663,RO
+757809664,757809919,GB
+757817344,757858303,US
757858304,757956607,CA
757956608,757956863,HK
757956864,757957119,DE
@@ -9936,7 +10008,9 @@
758747392,758747647,LT
758747648,758750463,US
758750464,758750719,IN
-758750720,758761727,US
+758750720,758752199,US
+758752200,758752207,FI
+758752208,758761727,US
758761728,758762239,LT
758762240,758779903,US
758779904,758783999,CA
@@ -10011,7 +10085,23 @@
758889728,758889983,TN
758889984,758972415,US
758972416,758976511,CA
-758976512,758984703,US
+758976512,758981247,US
+758981248,758981375,GM
+758981376,758981887,US
+758981888,758982015,ML
+758982016,758982143,TV
+758982144,758982271,US
+758982272,758982399,KM
+758982400,758982527,US
+758982528,758982655,ST
+758982656,758982783,MV
+758982784,758982911,AR
+758982912,758983551,US
+758983552,758983679,MN
+758983680,758983807,US
+758983808,758983935,VA
+758983936,758984063,ZW
+758984064,758984703,US
758984704,758988799,CA
758988800,758994943,US
758994944,758996991,IN
@@ -10163,21 +10253,24 @@
759848960,759860735,CA
759860736,759860991,US
759860992,759955455,CA
-759955456,759975935,US
+759955456,759963647,US
+759963648,759965695,NL
+759965696,759975935,US
759975936,759977471,DE
759977472,759980031,US
-759980032,759983103,JP
-759983104,759983135,US
-759983136,759984127,JP
-759984128,759988223,US
-759988224,759990271,GB
-759990272,759992319,US
-759992320,759994367,SG
-759994368,760004607,US
-760004608,760006911,JP
-760006912,760007039,US
+759980032,759984127,JP
+759984128,759985151,AU
+759985152,759988223,US
+759988224,759990783,GB
+759990784,759992319,US
+759992320,759996415,SG
+759996416,760004607,US
+760004608,760006967,JP
+760006968,760007039,US
760007040,760007103,JP
-760007104,760111103,US
+760007104,760007167,US
+760007168,760011263,JP
+760011264,760111103,US
760111104,760119295,CA
760119296,760127487,US
760127488,760152063,CA
@@ -10501,7 +10594,7 @@
762815488,762816511,JP
762816512,762824703,IN
762824704,762825727,SG
-762825728,762827775,JP
+762825728,762826751,JP
762827776,762829823,VN
762829824,762830847,AU
762830848,762832895,IN
@@ -10705,7 +10798,7 @@
763194368,763196415,HK
763196416,763197439,IN
763197440,763199487,AU
-763199488,763201535,IN
+763200512,763201535,IN
763201536,763202559,CN
763202560,763207679,IN
763207680,763209727,HK
@@ -10832,6 +10925,18 @@
768606208,768868351,GH
768868352,769130495,ZM
769130496,769392639,MA
+769425408,769458175,ZA
+769458176,769459199,MU
+769462272,769463295,MU
+769463296,769464319,AO
+769465088,769465343,EG
+769465344,769466367,CI
+769466368,769474559,ZA
+769474560,769476607,SC
+769476608,769478655,UG
+769478656,769507327,ZA
+769507328,769509375,TZ
+769509376,769515519,ZA
769515520,769523711,BJ
769523712,769535999,ZA
769536000,769540095,GH
@@ -10847,15 +10952,7 @@
771237376,771237887,MY
771237888,771238911,IN
771238912,771239935,US
-771239936,771240959,AU
-771240960,771241214,US
-771241215,771241215,AU
-771241216,771241470,US
-771241471,771241471,AU
-771241472,771241726,US
-771241727,771241727,AU
-771241728,771241982,US
-771241983,771241983,AU
+771239936,771241983,AU
771241984,771245055,IN
771245056,771246079,HK
771246080,771247103,KR
@@ -10878,8 +10975,7 @@
771308544,771309567,HK
771309568,771310591,KR
771310592,771315711,IN
-771315712,771315967,US
-771315968,771316223,AU
+771315712,771316223,AU
771316224,771316479,KR
771316480,771316735,HK
771316736,771317759,CN
@@ -11003,7 +11099,13 @@
772014080,772145151,DE
772145152,772210687,ES
772210688,772276223,IE
-772276224,772284415,GB
+772276224,772282367,EE
+772282368,772282623,RU
+772282624,772282879,KZ
+772282880,772283391,RU
+772283392,772283647,ES
+772283648,772284159,RU
+772284160,772284415,UZ
772284416,772284927,RU
772284928,772285183,UA
772285184,772285439,UZ
@@ -11013,7 +11115,9 @@
772287772,772287772,NL
772287773,772339967,RU
772339968,772340223,NL
-772340224,772341247,RU
+772340224,772340735,RU
+772340736,772340991,KZ
+772340992,772341247,RU
772341248,772341503,US
772341504,772341759,RU
772341760,772407295,NO
@@ -11402,14 +11506,18 @@
773963776,773971967,ME
773971968,773980159,UA
773980160,773988351,GB
-773988352,774000823,ES
+773988352,773996543,ES
+773996544,773996799,TR
+773996800,774000823,ES
774000824,774000824,GB
774000825,774001663,ES
774001664,774002687,NL
774002688,774002815,ES
774002816,774002842,NL
774002844,774002943,NL
-774002944,774004735,ES
+774002944,774003199,ES
+774003200,774003711,TR
+774003712,774004735,ES
774004736,774012927,IR
774012928,774021119,RU
774021120,774029311,IR
@@ -11661,7 +11769,9 @@
778304306,778304306,SI
778304307,778305535,AL
778305536,778371071,IR
-778371072,778395647,GB
+778371072,778388893,GB
+778388894,778388894,DE
+778388895,778395647,GB
778395648,778436607,DE
778436608,778461183,RO
778461184,778461439,TR
@@ -11723,7 +11833,11 @@
778655936,778655999,IE
778656000,778656223,FR
778656224,778656255,PT
-778656256,778657399,FR
+778656256,778656575,FR
+778656576,778656607,PT
+778656608,778657335,FR
+778657336,778657339,IE
+778657340,778657399,FR
778657400,778657403,PT
778657404,778657471,FR
778657472,778657535,GB
@@ -11911,7 +12025,9 @@
778689008,778689015,FI
778689016,778689923,FR
778689924,778689927,DE
-778689928,778690735,FR
+778689928,778690655,FR
+778690656,778690687,ES
+778690688,778690735,FR
778690736,778690751,PT
778690752,778691975,FR
778691976,778691983,ES
@@ -11945,7 +12061,9 @@
778693428,778693431,ES
778693432,778693439,FR
778693440,778693455,GB
-778693456,778693759,FR
+778693456,778693663,FR
+778693664,778693679,ES
+778693680,778693759,FR
778693760,778693763,ES
778693764,778693967,FR
778693968,778693971,ES
@@ -12120,7 +12238,9 @@
781975552,782106623,NO
782106624,782254079,RU
782254080,782270463,UA
-782270464,782317567,RU
+782270464,782313471,RU
+782313472,782313727,UA
+782313728,782317567,RU
782317568,782317695,IN
782317696,782317823,CN
782317824,782317951,TR
@@ -12362,7 +12482,9 @@
784240640,784241151,SG
784241152,784242175,AU
784242176,784242687,HK
-784242688,784269311,GB
+784242688,784268799,GB
+784268800,784269055,US
+784269056,784269311,GB
784269312,784302079,BY
784302080,784334847,RU
784334848,784457727,FR
@@ -12935,8 +13057,7 @@
800522241,800522241,CA
800522242,803209215,US
803209216,803930111,CA
-803930112,804257791,US
-804257792,804716543,CA
+803930112,804716543,US
804716544,804782079,IN
804782080,804913151,CA
804913152,805240831,US
@@ -13072,7 +13193,9 @@
839009024,839009279,HU
839009280,839016191,US
839016192,839016447,CA
-839016448,839339607,US
+839016448,839078911,US
+839078912,839079935,DE
+839079936,839339607,US
839339610,839340031,US
839340032,839341055,ES
839341056,839343103,DE
@@ -13165,15 +13288,7 @@
855638016,855900159,GB
855900160,856031231,DE
856031232,856162303,GB
-856162304,856195071,US
-856195072,856199199,DE
-856199200,856199231,US
-856199232,856199295,DE
-856199296,856199423,US
-856199424,856199679,DE
-856199680,856203263,US
-856203264,856219647,DE
-856219648,856227839,US
+856162304,856227839,DE
856227840,856621055,GB
856621056,856637439,NL
856637440,856686591,FR
@@ -13246,7 +13361,9 @@
872304396,872304399,CZ
872304400,872304447,FR
872304448,872304511,ES
-872304512,872305439,FR
+872304512,872304831,FR
+872304832,872304895,ES
+872304896,872305439,FR
872305440,872305471,GB
872305472,872306183,FR
872306184,872306191,US
@@ -13254,7 +13371,9 @@
872306368,872306399,GB
872306400,872307263,FR
872307264,872307327,ES
-872307328,872308351,FR
+872307328,872307603,FR
+872307604,872307607,GB
+872307608,872308351,FR
872308352,872308371,GB
872308372,872308372,US
872308373,872308455,GB
@@ -13272,7 +13391,11 @@
872311247,872311249,BE
872311250,872311983,FR
872311984,872311999,FI
-872312000,872316797,FR
+872312000,872312511,FR
+872312512,872312575,IE
+872312576,872312703,FR
+872312704,872312767,ES
+872312768,872316797,FR
872316798,872316798,PT
872316799,872321183,FR
872321184,872321215,FI
@@ -13286,7 +13409,9 @@
872323552,872323583,GB
872323584,872323775,FR
872323776,872323839,ES
-872323840,872325567,FR
+872323840,872323936,FR
+872323937,872323937,DE
+872323938,872325567,FR
872325568,872325583,FI
872325584,872325707,FR
872325708,872325711,ES
@@ -13294,9 +13419,7 @@
872326152,872326155,CZ
872326156,872326175,FR
872326176,872326207,PT
-872326208,872326655,FR
-872326656,872326687,GB
-872326688,872327615,FR
+872326208,872327615,FR
872327616,872327679,ES
872327680,872327807,FR
872327808,872327811,FI
@@ -13368,7 +13491,9 @@
872356416,872357423,FR
872357424,872357439,PT
872357440,872357503,ES
-872357504,872363871,FR
+872357504,872363135,FR
+872363136,872363199,PL
+872363200,872363871,FR
872363872,872363903,PT
872363904,872364863,FR
872364864,872364927,NL
@@ -13424,9 +13549,7 @@
872386176,872386303,GB
872386304,872386335,FR
872386336,872386367,FI
-872386368,872386591,FR
-872386592,872386623,ES
-872386624,872387007,FR
+872386368,872387007,FR
872387008,872387071,IE
872387072,872388287,FR
872388288,872388351,ES
@@ -13475,7 +13598,8 @@
874381312,874512383,IE
874512384,875560959,US
875560960,875823103,IE
-875823104,876150783,US
+875823104,876085247,US
+876085248,876150783,GB
876150784,876347391,DE
876347392,876412927,CA
876412928,876478463,US
@@ -13504,7 +13628,8 @@
878464000,878465023,US
878465024,878466047,JP
878466048,878467071,CA
-878467072,878508031,US
+878467072,878468095,GB
+878468096,878508031,US
878508032,878509055,IN
878509056,878510079,US
878510080,878510335,IE
@@ -13526,18 +13651,18 @@
878578688,878578943,US
878578944,878579199,AU
878579200,878579455,CA
-878579456,878579967,US
+878579456,878579711,GB
+878579712,878579967,US
878579968,878580223,DE
-878580224,878580735,US
-878580736,878580991,KR
-878580992,878581247,BR
-878581248,878581759,US
+878580224,878581759,US
878581760,878582783,IE
-878582784,878591999,US
+878582784,878583807,US
+878583808,878591999,GB
878592000,878593023,CA
878593024,878596095,US
878596096,878604287,CA
-878604288,878625791,US
+878604288,878605311,GB
+878605312,878625791,US
878625792,878626047,IE
878626048,878626319,US
878626320,878626335,BR
@@ -13548,14 +13673,31 @@
878626400,878626415,SG
878626416,878626431,AU
878626432,878626447,CA
-878626448,878626815,US
+878626448,878626463,GB
+878626464,878626815,US
878626816,878627071,JP
878627072,878627839,US
878627840,878628351,DE
878628352,878628863,BR
878628864,878630911,US
878630912,878632959,IE
-878632960,878648831,US
+878632960,878639119,US
+878639120,878639135,IE
+878639136,878639151,SG
+878639152,878639167,BR
+878639168,878639183,AU
+878639184,878639199,JP
+878639200,878639215,US
+878639216,878639231,DE
+878639232,878639247,US
+878639248,878639263,IN
+878639264,878639279,US
+878639280,878639295,KR
+878639296,878639311,GB
+878639312,878639327,CA
+878639328,878639359,US
+878639360,878639375,CN
+878639376,878648831,US
878648832,878649343,JP
878649344,878649855,US
878649856,878650111,JP
@@ -13573,7 +13715,8 @@
878675968,878676735,BR
878676736,878678271,US
878678272,878679039,CA
-878679040,878690303,US
+878679040,878679807,GB
+878679808,878690303,US
878690304,878694399,KR
878694400,878695423,US
878695424,878696447,SG
@@ -13589,7 +13732,8 @@
878705152,878705407,CA
878705408,878705663,US
878705664,878705919,KR
-878705920,878706431,US
+878705920,878706175,GB
+878706176,878706431,US
878706432,878706447,BR
878706448,878706463,AU
878706464,878706479,SG
@@ -13638,7 +13782,8 @@
879829504,879829759,US
879829760,879829887,AU
879829888,879830015,IN
-879830016,879837183,US
+879830016,879830143,KR
+879830144,879837183,US
879837184,879837247,KR
879837248,879837311,HK
879837312,879837439,SG
@@ -13652,15 +13797,24 @@
879841536,879841663,US
879841664,879841727,AU
879841728,879841791,IN
-879841792,880543743,US
+879841792,879841855,KR
+879841856,880216831,US
+880216832,880217087,CA
+880217088,880269311,US
+880269312,880271359,JP
+880271360,880543743,US
880543744,880545791,CA
880545792,880553983,US
880553984,880556031,CA
-880556032,880558079,US
+880556032,880557567,US
+880557568,880557823,CA
+880557824,880558079,US
880558080,880574463,CA
880574464,880872191,US
880872192,880872447,CA
-880872448,880876543,US
+880872448,880874751,US
+880874752,880875007,CA
+880875008,880876543,US
880876544,880877567,CA
880878080,880878591,CA
880878592,880879233,US
@@ -13781,11 +13935,15 @@
888485888,888486143,HK
888486144,888487935,US
888487936,888488191,GB
-888488192,888569855,US
+888488192,888491007,US
+888491008,888491263,IN
+888491264,888569855,US
888569856,888573951,HK
888573952,888578047,US
888578048,888586239,JP
-888586240,889192447,US
+888586240,888750079,US
+888750080,888758271,IN
+888758272,889192447,US
889192448,897238054,DE
897238056,905969663,DE
905969664,910163967,US
@@ -14123,7 +14281,8 @@
962310144,962314239,BS
962314240,962318335,TT
962318336,962322431,PR
-962322432,962330623,FR
+962322432,962324479,AW
+962324480,962330623,FR
962330624,962334719,AF
962334720,962338815,BD
962338816,962342911,BT
@@ -14332,7 +14491,8 @@
999828992,999829311,MY
999829312,999829343,CN
999829344,999829375,MM
-999829376,999829407,HK
+999829376,999829383,TH
+999829384,999829407,HK
999829408,999829439,KR
999829440,999829471,VN
999829472,999829503,ID
@@ -14537,7 +14697,9 @@
1025296128,1025296639,AU
1025296640,1025296895,MY
1025296896,1025297407,SG
-1025297408,1025299455,AU
+1025297408,1025299199,AU
+1025299200,1025299263,IN
+1025299264,1025299455,AU
1025299456,1025299711,CN
1025299712,1025300735,AU
1025300736,1025300991,US
@@ -14930,7 +15092,9 @@
1044932304,1044932311,BE
1044932312,1044933499,GB
1044933500,1044933503,BE
-1044933504,1044935183,GB
+1044933504,1044935119,GB
+1044935120,1044935135,BE
+1044935136,1044935183,GB
1044935184,1044935191,BE
1044935192,1044935663,GB
1044935664,1044935671,BE
@@ -15002,7 +15166,9 @@
1045755904,1045757951,UA
1045757952,1045790719,LV
1045790720,1045798911,FR
-1045798912,1045889023,IT
+1045798912,1045824355,IT
+1045824356,1045824359,SI
+1045824360,1045889023,IT
1045889024,1045921791,ES
1045921792,1045954559,PL
1045954560,1045987327,BE
@@ -15067,7 +15233,9 @@
1046489472,1046489487,ES
1046489488,1046489503,GB
1046489504,1046489519,DE
-1046489520,1046492471,GB
+1046489520,1046489999,GB
+1046490000,1046490007,DE
+1046490008,1046492471,GB
1046492472,1046492479,DE
1046492480,1046492719,GB
1046492720,1046492727,DE
@@ -15155,7 +15323,9 @@
1046535624,1046535631,DE
1046535632,1046535665,GB
1046535666,1046535666,DE
-1046535667,1046536631,GB
+1046535667,1046536511,GB
+1046536512,1046536543,DE
+1046536544,1046536631,GB
1046536632,1046536639,DE
1046536640,1046537023,GB
1046537024,1046537039,DE
@@ -15186,7 +15356,8 @@
1046773760,1046781951,FR
1046781952,1046791167,GB
1046791168,1046792191,IT
-1046792192,1046794239,GB
+1046792192,1046793215,IN
+1046793216,1046794239,GB
1046794240,1046794495,US
1046794496,1046796287,GB
1046796288,1046797311,US
@@ -15241,10 +15412,51 @@
1047396352,1047461887,IT
1047461888,1047494655,DE
1047494656,1047527423,PL
-1047527424,1047535615,BE
+1047527424,1047529471,GB
+1047529472,1047535103,BE
+1047535104,1047535359,US
+1047535360,1047535615,BE
1047535616,1047551999,DE
1047552000,1047560191,RU
-1047560192,1047568383,DE
+1047560192,1047563431,DE
+1047563432,1047563435,CH
+1047563436,1047565279,DE
+1047565280,1047565311,CH
+1047565312,1047565343,DE
+1047565344,1047565359,CH
+1047565360,1047565839,DE
+1047565840,1047565887,CH
+1047565888,1047566435,DE
+1047566436,1047566439,CH
+1047566440,1047566451,DE
+1047566452,1047566459,CH
+1047566460,1047566519,DE
+1047566520,1047566527,CH
+1047566528,1047566531,DE
+1047566532,1047566535,CH
+1047566536,1047566543,DE
+1047566544,1047566547,CH
+1047566548,1047566967,DE
+1047566968,1047566971,CH
+1047566972,1047567015,DE
+1047567016,1047567019,CH
+1047567020,1047567027,DE
+1047567028,1047567031,CH
+1047567032,1047567143,DE
+1047567144,1047567147,CH
+1047567148,1047567151,DE
+1047567152,1047567159,CH
+1047567160,1047567359,DE
+1047567360,1047567375,CH
+1047567376,1047567467,DE
+1047567468,1047567471,CH
+1047567472,1047567475,DE
+1047567476,1047567483,CH
+1047567484,1047567823,DE
+1047567824,1047567839,CH
+1047567840,1047567903,DE
+1047567904,1047567935,CH
+1047567936,1047568383,DE
1047568384,1047576575,NL
1047576576,1047584767,HU
1047584768,1047592959,NL
@@ -15429,12 +15641,23 @@
1050673152,1050804223,FR
1050804224,1050869759,MK
1050869760,1050935295,NL
-1050938112,1050938367,ES
+1050938112,1050938623,ES
1050938880,1050939135,ES
+1050939136,1050939647,BR
+1050939648,1050940159,MX
+1050940160,1050940671,GB
+1050940672,1050940927,HK
1050941696,1050941951,DE
+1050941952,1050942207,US
+1050942464,1050942719,US
+1050942720,1050942975,BR
1050943232,1050943487,ES
1050945536,1050945791,ES
1050948608,1050948863,ES
+1050959872,1050961919,ES
+1050961920,1050962943,MX
+1050962944,1050963967,GB
+1050963968,1050964991,ES
1050968064,1051000831,GB
1051000832,1051017215,RU
1051017216,1051033599,NL
@@ -15523,9 +15746,7 @@
1052151808,1052153855,PL
1052155904,1052157951,UA
1052157952,1052159999,DK
-1052160000,1052160703,LU
-1052160704,1052161215,BE
-1052161216,1052162047,LU
+1052160000,1052162047,LU
1052162048,1052164095,CH
1052164096,1052168191,RU
1052168192,1052170239,PL
@@ -16426,7 +16647,9 @@
1053933568,1053949951,CZ
1053949952,1053968188,FR
1053968189,1053968189,PT
-1053968190,1054015487,FR
+1053968190,1053985279,FR
+1053985280,1053985535,GB
+1053985536,1054015487,FR
1054015488,1054089215,IT
1054089216,1054097407,GE
1054097408,1054105599,NL
@@ -16641,8 +16864,8 @@
1065373696,1065493759,US
1065493760,1065494015,GB
1065494016,1065506047,US
-1065506048,1065506303,GB
-1065506304,1065519247,US
+1065506048,1065506559,GB
+1065506560,1065519247,US
1065519248,1065519263,IN
1065519264,1065519303,US
1065519304,1065519311,IN
@@ -16654,8 +16877,10 @@
1065525792,1065525807,IN
1065525808,1065526015,US
1065526016,1065526271,GB
-1065526272,1065533439,US
-1065533440,1065537535,GB
+1065526272,1065529343,US
+1065529344,1065530879,GB
+1065530880,1065531391,US
+1065531392,1065537535,GB
1065537536,1065539583,US
1065539584,1065539839,GB
1065539840,1065547775,US
@@ -16668,8 +16893,8 @@
1065873408,1065877503,PR
1065877504,1065906175,US
1065906176,1065908223,KY
-1065908224,1066214399,US
-1066214400,1066214911,NL
+1065908224,1066213887,US
+1066213888,1066214911,NL
1066214912,1066254975,US
1066254976,1066255103,GB
1066255104,1066311679,US
@@ -16872,7 +17097,9 @@
1073044992,1073045247,US
1073045248,1073045503,PR
1073045504,1073047551,CO
-1073047552,1073049599,US
+1073047552,1073049064,US
+1073049065,1073049065,CW
+1073049066,1073049599,US
1073049600,1073053695,BS
1073053696,1073116159,US
1073116160,1073117183,GB
@@ -17017,9 +17244,7 @@
1074757632,1074765823,CA
1074765824,1074777343,US
1074777344,1074777599,AU
-1074777600,1074871591,US
-1074871592,1074871599,CA
-1074871600,1074871807,US
+1074777600,1074871807,US
1074871808,1074872319,CA
1074872320,1074937855,US
1074937856,1074946047,CA
@@ -17419,7 +17644,8 @@
1080024320,1080024575,CA
1080024576,1080033279,US
1080033280,1080164351,KY
-1080164352,1080168447,CA
+1080164352,1080165375,US
+1080165376,1080168447,CA
1080168448,1080172543,US
1080172544,1080176639,CA
1080176640,1080197119,US
@@ -17700,8 +17926,8 @@
1089151488,1089152255,US
1089152256,1089152511,NL
1089152512,1089153279,US
-1089153280,1089153280,SG
-1089153281,1089167359,US
+1089153280,1089153535,SG
+1089153536,1089167359,US
1089167360,1089171455,CA
1089171456,1089183231,US
1089183232,1089183487,GB
@@ -17887,11 +18113,7 @@
1093967872,1093976063,HK
1093976064,1093984255,US
1093984256,1093986303,IE
-1093986304,1093990399,US
-1093990400,1093992447,IE
-1093992448,1094059327,US
-1094059328,1094059391,SG
-1094059392,1094064127,US
+1093986304,1094064127,US
1094064128,1094064575,IE
1094064576,1094064639,US
1094064640,1094064799,IE
@@ -17908,8 +18130,7 @@
1094066912,1094066975,IE
1094066976,1094067199,US
1094067200,1094068223,NL
-1094068224,1094068479,SG
-1094068480,1094074879,US
+1094068224,1094074879,US
1094074880,1094075167,BR
1094075168,1094077439,US
1094077440,1094077695,PR
@@ -18011,7 +18232,9 @@
1098178384,1098178391,CA
1098178392,1098891623,US
1098891624,1098891631,AU
-1098891632,1100505127,US
+1098891632,1098892255,US
+1098892256,1098892263,AU
+1098892264,1100505127,US
1100505128,1100505135,CA
1100505136,1100560647,US
1100560648,1100560655,TR
@@ -18114,7 +18337,9 @@
1104168960,1104265215,US
1104265216,1104265727,PH
1104265728,1104301567,US
-1104301568,1104301823,PR
+1104301568,1104301663,PR
+1104301664,1104301695,US
+1104301696,1104301823,PR
1104301824,1104842751,US
1104842752,1104844799,PR
1104844800,1104899839,US
@@ -18324,7 +18549,8 @@
1113657344,1113661439,CA
1113661440,1113669631,US
1113669632,1113677823,CA
-1113677824,1113718783,US
+1113677824,1113681919,US
+1113686016,1113718783,US
1113718784,1113743359,DO
1113743360,1113854207,US
1113854208,1113854463,CA
@@ -18547,92 +18773,47 @@
1119109120,1119109887,CA
1119109888,1119110143,US
1119110144,1119111167,CA
-1119111168,1119166863,US
+1119111168,1119166723,US
+1119166848,1119166855,US
1119166864,1119166871,HT
-1119166872,1119167079,US
+1119166952,1119166959,US
+1119166976,1119167007,US
+1119167072,1119167079,US
1119167080,1119167087,CA
-1119167088,1119167495,US
+1119167088,1119167095,US
+1119167200,1119167215,US
+1119167232,1119167495,US
1119167496,1119167503,CA
-1119167504,1119168023,US
+1119167512,1119167519,US
+1119167536,1119167543,US
+1119167552,1119167999,US
1119168024,1119168031,CA
-1119168032,1119171383,US
+1119168032,1119168047,US
+1119168112,1119168119,US
+1119168128,1119170559,US
+1119171072,1119171327,US
+1119171360,1119171383,US
1119171384,1119171391,CA
-1119171392,1119172199,US
+1119171392,1119171583,US
+1119172056,1119172063,US
+1119172096,1119172159,US
+1119172192,1119172199,US
1119172200,1119172207,CA
-1119172208,1119172895,US
-1119172896,1119172903,MX
-1119172904,1119172911,US
-1119172912,1119172991,MX
-1119172992,1119173007,US
-1119173008,1119173095,MX
-1119173096,1119173119,US
-1119173120,1119173143,MX
-1119173144,1119173151,US
-1119173152,1119173207,MX
-1119173208,1119173215,US
-1119173216,1119173223,MX
-1119173224,1119173231,US
-1119173232,1119173263,MX
-1119173264,1119173279,US
-1119173280,1119173295,MX
-1119173296,1119173311,US
-1119173312,1119173343,MX
-1119173344,1119173351,US
-1119173352,1119173367,MX
-1119173368,1119173375,US
-1119173376,1119173399,MX
-1119173400,1119173407,US
-1119173408,1119173471,MX
-1119173472,1119173495,US
-1119173496,1119173527,MX
-1119173528,1119173535,US
-1119173536,1119173543,MX
-1119173544,1119173551,US
-1119173552,1119173575,MX
-1119173576,1119173591,US
-1119173592,1119173655,MX
-1119173656,1119173671,US
-1119173672,1119173679,MX
-1119173680,1119173719,US
-1119173720,1119173727,MX
-1119173728,1119173735,US
-1119173736,1119173751,MX
-1119173752,1119173767,US
-1119173768,1119173775,MX
-1119173776,1119173799,US
-1119173800,1119173815,MX
-1119173816,1119173831,US
-1119173832,1119173847,MX
-1119173848,1119173863,US
-1119173864,1119173871,MX
-1119173872,1119173935,US
-1119173936,1119173983,MX
-1119173984,1119173999,US
-1119174000,1119174007,MX
-1119174008,1119174023,US
+1119172256,1119172263,US
+1119172352,1119172863,US
+1119172864,1119174015,MX
1119174024,1119174031,GT
1119174032,1119174039,MX
-1119174040,1119174047,US
-1119174048,1119174119,MX
-1119174120,1119174127,US
-1119174128,1119174199,MX
-1119174200,1119174215,US
-1119174216,1119174247,GT
-1119174248,1119174287,US
-1119174288,1119174319,MX
-1119174320,1119174343,US
+1119174048,1119174207,MX
+1119174208,1119174271,GT
+1119174272,1119174335,MX
1119174344,1119174351,GT
1119174352,1119174359,MX
-1119174360,1119174399,US
1119174400,1119174407,GT
1119174408,1119174415,MX
-1119174416,1119174423,US
-1119174424,1119174471,MX
-1119174472,1119174479,US
-1119174480,1119174511,MX
-1119174512,1119174535,US
+1119174424,1119174527,MX
1119174536,1119174543,MX
-1119174544,1119199231,US
+1119174656,1119199231,US
1119199232,1119207169,MN
1119207170,1119207170,US
1119207171,1119207423,MN
@@ -18899,13 +19080,7 @@
1123801088,1123801343,RU
1123801344,1123848191,US
1123848192,1123852287,CA
-1123852288,1123870063,US
-1123870064,1123870071,GB
-1123870072,1123870295,US
-1123870296,1123870303,HK
-1123870304,1123870343,US
-1123870344,1123870351,HK
-1123870352,1123950591,US
+1123852288,1123950591,US
1123950592,1123958783,CA
1123958784,1125064703,US
1125064704,1125065215,GB
@@ -19014,9 +19189,7 @@
1137376356,1137376356,CA
1137376357,1137378815,US
1137378816,1137379071,UA
-1137379072,1137384191,US
-1137384192,1137384447,PK
-1137384448,1137426431,US
+1137379072,1137426431,US
1137426432,1137442815,PR
1137442816,1137491967,US
1137491968,1137508351,CA
@@ -19024,9 +19197,7 @@
1137524736,1137541119,CA
1137541120,1137623039,US
1137623040,1137639423,PR
-1137639424,1137680959,US
-1137680960,1137680975,UA
-1137680976,1137681583,US
+1137639424,1137681583,US
1137681584,1137681599,AR
1137681600,1137704959,US
1137704960,1137712383,CA
@@ -19058,15 +19229,11 @@
1137967104,1137983487,US
1137983488,1137991679,CA
1137991680,1138049023,US
-1138049024,1138053631,CA
-1138053632,1138053887,US
-1138053888,1138061311,CA
+1138049024,1138061311,CA
1138061312,1138069503,US
1138069504,1138073599,JM
1138073600,1138163711,US
-1138163712,1138166175,CA
-1138166176,1138166183,US
-1138166184,1138166919,CA
+1138163712,1138166919,CA
1138166920,1138166927,SA
1138166928,1138166935,CA
1138166936,1138166943,SA
@@ -19362,7 +19529,9 @@
1160563200,1160563711,MP
1160563712,1160609791,US
1160609792,1160610815,MX
-1160610816,1160665599,US
+1160610816,1160662015,US
+1160662016,1160662271,CN
+1160662272,1160665599,US
1160665600,1160665855,CH
1160665856,1160667135,US
1160667136,1160675327,CA
@@ -19412,7 +19581,9 @@
1161426944,1161427967,AI
1161427968,1161428223,AG
1161428224,1161428991,KN
-1161428992,1161430079,US
+1161428992,1161429711,US
+1161429712,1161429719,FI
+1161429720,1161430079,US
1161430080,1161430111,BG
1161430112,1161432063,US
1161432064,1161432126,CA
@@ -19426,32 +19597,26 @@
1161617408,1161625599,CA
1161625600,1161631623,US
1161631624,1161631631,KW
-1161631632,1161649407,US
+1161631632,1161631839,US
+1161631840,1161631871,AT
+1161631872,1161632071,US
+1161632072,1161632075,AT
+1161632076,1161649407,US
1161649408,1161649663,AR
1161649664,1161764863,US
1161764864,1161773055,CA
1161773056,1161777151,SZ
1161777152,1161818111,US
1161818112,1161822207,CA
-1161822208,1161831257,US
-1161831258,1161831258,DE
-1161831259,1161831305,US
-1161831306,1161831306,DE
-1161831307,1161833967,US
+1161822208,1161833967,US
1161833968,1161833975,DE
1161833976,1161834979,US
1161834980,1161834980,BZ
1161834981,1161835058,US
1161835059,1161835059,BZ
-1161835060,1161835153,US
-1161835154,1161835154,BZ
-1161835155,1161835230,US
+1161835060,1161835230,US
1161835231,1161835231,PH
-1161835232,1161835475,US
-1161835476,1161835476,BZ
-1161835477,1161835948,US
-1161835949,1161835949,BZ
-1161835950,1161837174,US
+1161835232,1161837174,US
1161837175,1161837175,BZ
1161837176,1161837567,US
1161837568,1161837823,JP
@@ -19778,9 +19943,7 @@
1176620448,1176620479,CA
1176620480,1176621311,US
1176621312,1176621567,CA
-1176621568,1176622079,US
-1176622080,1176622335,GB
-1176622336,1176622591,US
+1176621568,1176622591,US
1176622592,1176623103,CA
1176623104,1176623871,US
1176623872,1176625151,CA
@@ -19788,9 +19951,7 @@
1176626112,1176626127,CA
1176626128,1176630271,US
1176630272,1176631295,CA
-1176631296,1176702975,US
-1176702976,1176707071,CA
-1176707072,1176731647,US
+1176631296,1176731647,US
1176731648,1176735743,PR
1176735744,1176736767,US
1176736768,1176737023,CR
@@ -19821,9 +19982,7 @@
1176897048,1176897055,US
1176897056,1176900735,CA
1176900736,1176900743,US
-1176900744,1176904767,CA
-1176904768,1176904775,US
-1176904776,1176904871,CA
+1176900744,1176904871,CA
1176904872,1176904879,US
1176904880,1176917831,CA
1176917832,1176917839,AU
@@ -19853,9 +20012,7 @@
1177165088,1177354239,US
1177354240,1177419775,PR
1177419776,1177550847,US
-1177550848,1177606655,CA
-1177606656,1177606911,US
-1177606912,1178075135,CA
+1177550848,1178075135,CA
1178075136,1178599423,US
1178599424,1179910143,CA
1179910144,1189672191,US
@@ -19886,9 +20043,7 @@
1208107008,1208590335,US
1208590336,1208598527,CA
1208598528,1208647679,US
-1208647680,1208657775,CA
-1208657776,1208657783,TR
-1208657784,1208659967,CA
+1208647680,1208659967,CA
1208659968,1208721407,US
1208721408,1208729599,CA
1208729600,1208770559,US
@@ -19988,9 +20143,7 @@
1210420480,1210421503,US
1210421504,1210421551,CA
1210421552,1210449919,US
-1210449920,1210503167,CA
-1210503168,1210503423,US
-1210503424,1210545471,CA
+1210449920,1210545471,CA
1210545472,1210545503,US
1210545504,1210557823,CA
1210557824,1210558079,US
@@ -20079,13 +20232,13 @@
1219256320,1219264511,CA
1219264512,1219272703,US
1219272704,1219276799,CA
-1219276800,1219295295,US
+1219276800,1219290623,US
+1219290624,1219290751,AU
+1219290752,1219295295,US
1219295296,1219295359,GR
1219295360,1224091903,US
1224091904,1224092159,NL
-1224092160,1224093183,US
-1224093184,1224093439,NL
-1224093440,1224094463,US
+1224092160,1224094463,US
1224094464,1224094719,NL
1224094720,1224095231,US
1224095232,1224095487,NL
@@ -20117,9 +20270,7 @@
1224200192,1224200959,NL
1224200960,1224201215,US
1224201216,1224202239,NL
-1224202240,1224207359,US
-1224207360,1224207871,NL
-1224207872,1224210431,US
+1224202240,1224210431,US
1224210432,1224212479,NL
1224212480,1224329215,US
1224329216,1224329471,CA
@@ -20601,8 +20752,8 @@
1280126976,1280131071,JP
1280131072,1280139263,CA
1280139264,1280242175,US
-1280242176,1280242431,CA
-1280242432,1291845631,US
+1280242176,1280242687,CA
+1280242688,1291845631,US
1291845632,1292894207,DE
1292894208,1293156351,NO
1293156352,1293549567,DE
@@ -20624,7 +20775,9 @@
1294467072,1294499839,RU
1294499840,1294532607,NO
1294532608,1294598143,RU
-1294598144,1294630911,IT
+1294598144,1294602239,IT
+1294602240,1294606335,IR
+1294606336,1294630911,IT
1294630912,1294663679,LB
1294663680,1294696447,IT
1294696448,1294729215,RU
@@ -20777,9 +20930,7 @@
1296433152,1296465919,BG
1296465920,1296469687,LU
1296469688,1296469691,BF
-1296469692,1296469703,LU
-1296469704,1296469711,AF
-1296469712,1296469759,LU
+1296469692,1296469759,LU
1296469760,1296479743,FR
1296479744,1296482303,NO
1296482304,1296498687,FR
@@ -21114,7 +21265,8 @@
1298694144,1298710527,US
1298710528,1298726911,CZ
1298726912,1298743295,RS
-1298743296,1298759679,FI
+1298743296,1298757631,FI
+1298757632,1298759679,FJ
1298759680,1298776063,RU
1298776064,1298792447,SE
1298792448,1298825215,RU
@@ -21151,9 +21303,7 @@
1299103744,1299120127,NO
1299120128,1299136511,SI
1299136512,1299169279,HU
-1299169280,1299171839,GB
-1299171840,1299172351,US
-1299172352,1299172863,GB
+1299169280,1299172863,GB
1299172864,1299173375,NL
1299173376,1299174399,FR
1299174400,1299178495,GB
@@ -21285,9 +21435,7 @@
1307467776,1307469823,RU
1307469824,1307475967,IR
1307475968,1307484159,RU
-1307484160,1307488767,GB
-1307488768,1307489023,IE
-1307489024,1307492351,GB
+1307484160,1307492351,GB
1307492352,1307500543,BA
1307500544,1307508735,RU
1307508736,1307516927,BA
@@ -21608,7 +21756,6 @@
1311271936,1311272447,KZ
1311272448,1311272703,NL
1311272704,1311272959,IE
-1311272960,1311275007,GB
1311275008,1311277055,FR
1311277056,1311279103,IT
1311279104,1311280127,BG
@@ -21945,9 +22092,7 @@
1319070976,1319071103,PL
1319071104,1319071231,DE
1319071232,1319071487,PL
-1319071488,1319073023,DE
-1319073024,1319073279,TR
-1319073280,1319074815,DE
+1319071488,1319074815,DE
1319074816,1319074943,PL
1319074944,1319075071,DE
1319075072,1319075199,PL
@@ -22101,7 +22246,9 @@
1334214656,1334222847,JO
1334222848,1334231039,BG
1334231040,1334239231,RU
-1334239232,1334243327,CH
+1334239232,1334242303,CH
+1334242304,1334242559,IS
+1334242560,1334243327,CH
1334243328,1334247423,IS
1334247424,1334255615,NO
1334255616,1334263807,IT
@@ -23311,7 +23458,8 @@
1355284480,1355415551,BE
1355415552,1355546623,NO
1355546624,1355808767,IT
-1355808768,1356070911,DK
+1355808768,1356005375,DK
+1356005376,1356070911,IT
1356070912,1356201983,NO
1356201984,1356333055,FR
1356333056,1356464127,SE
@@ -23332,8 +23480,17 @@
1357318208,1357318215,IT
1357318272,1357318279,CH
1357318288,1357318303,FR
+1357318348,1357318351,NL
+1357318356,1357318356,DE
+1357318372,1357318375,BE
+1357318378,1357318378,FR
+1357318379,1357318379,PL
+1357318384,1357318387,PL
+1357318388,1357318391,FR
+1357318396,1357318399,DE
1357318400,1357318655,FR
1357318912,1357319167,DE
+1357319168,1357319171,PL
1357321024,1357321087,KE
1357321984,1357322239,GB
1357322240,1357322255,DE
@@ -23343,13 +23500,17 @@
1357323776,1357323791,FI
1357323792,1357324287,GB
1357324288,1357324295,RU
-1357324296,1357324319,PL
+1357324296,1357324327,PL
1357326336,1357326337,ES
1357326338,1357326339,SL
1357326352,1357326367,GB
1357326592,1357326975,GB
1357327360,1357327615,FR
-1357328384,1357328895,GB
+1357328384,1357328687,GB
+1357328688,1357328695,ES
+1357328696,1357328703,IT
+1357328704,1357328711,IE
+1357328712,1357328895,GB
1357328896,1357329159,NL
1357329160,1357329407,GB
1357329408,1357329415,BE
@@ -23395,8 +23556,9 @@
1357373540,1357373543,PT
1357373544,1357375215,GB
1357375216,1357375223,ES
-1357375224,1357375487,GB
-1357377536,1357378623,FR
+1357375224,1357375423,GB
+1357375424,1357375487,IE
+1357377536,1357378639,FR
1357378816,1357379071,FR
1357381632,1357414399,NO
1357414400,1357447167,LV
@@ -23469,7 +23631,8 @@
1357926400,1357930495,GB
1357930496,1357932287,RU
1357932288,1357932543,GB
-1357932544,1357933567,RU
+1357932544,1357933055,RU
+1357933056,1357933567,ES
1357933568,1357934079,GB
1357934080,1357934335,RU
1357934336,1357934591,GB
@@ -23490,7 +23653,9 @@
1357984104,1357984111,IT
1357984112,1357984167,GB
1357984168,1357984175,IT
-1357984176,1357984367,GB
+1357984176,1357984311,GB
+1357984312,1357984319,IT
+1357984320,1357984367,GB
1357984368,1357984375,IT
1357984376,1357984511,GB
1357984512,1357984519,IT
@@ -23762,9 +23927,10 @@
1359118656,1359118719,GR
1359118720,1359118847,DE
1359118848,1359119103,IT
-1359119104,1359119199,DE
+1359119104,1359119199,ES
1359119200,1359119231,NL
-1359119232,1359121407,DE
+1359119232,1359119359,ES
+1359119360,1359121407,DE
1359121408,1359122431,ES
1359122432,1359123967,DE
1359123968,1359124479,ES
@@ -24112,8 +24278,8 @@
1361051648,1362100223,ES
1362100224,1362395647,FR
1362395648,1362396031,US
-1362396032,1362396671,FR
-1362396672,1362396927,US
+1362396032,1362396415,FR
+1362396416,1362396927,US
1362396928,1362397439,FR
1362397440,1362397695,US
1362397696,1362398463,FR
@@ -24458,9 +24624,7 @@
1372000256,1372001279,UG
1372001280,1372012543,GB
1372012544,1372013567,ZM
-1372013568,1372014079,GB
-1372014080,1372014335,NG
-1372014336,1372016127,GB
+1372013568,1372016127,GB
1372016128,1372016383,GH
1372016384,1372017583,GB
1372017584,1372017599,CD
@@ -24468,7 +24632,8 @@
1372020736,1372022783,CD
1372022784,1372023807,GB
1372023808,1372024831,IL
-1372024832,1372026623,GB
+1372024832,1372025087,ZM
+1372025088,1372026623,GB
1372026624,1372026879,KE
1372026880,1372027903,IL
1372027904,1372043519,GB
@@ -26240,7 +26405,7 @@
1412333568,1412366335,LT
1412366336,1412399103,SK
1412399104,1412400127,RU
-1412400128,1412400639,RO
+1412400128,1412400639,UA
1412400640,1412403711,RU
1412403712,1412403967,RO
1412403968,1412405759,RU
@@ -26254,9 +26419,9 @@
1412413952,1412414719,RU
1412414720,1412414975,RO
1412414976,1412415487,RU
-1412415488,1412419583,IR
-1412419584,1412420607,AE
-1412420608,1412431871,IR
+1412415488,1412423679,IR
+1412423680,1412425727,AE
+1412425728,1412431871,IR
1412431872,1412562943,NO
1412562944,1412628479,EE
1412628480,1412644863,TR
@@ -26316,11 +26481,29 @@
1417526784,1417674751,ES
1417674752,1421869055,DE
1421869056,1422393343,BE
-1422393344,1422413567,DE
+1422393344,1422400407,DE
+1422400408,1422400415,IN
+1422400416,1422402175,DE
+1422402176,1422402239,IN
+1422402240,1422406655,DE
+1422406656,1422406783,IN
+1422406784,1422406911,DE
+1422406912,1422407039,IN
+1422407040,1422407295,DE
+1422407296,1422407423,IN
+1422407424,1422413567,DE
1422413568,1422413695,AT
-1422413696,1422463231,DE
+1422413696,1422415743,DE
+1422415744,1422415871,IN
+1422415872,1422442751,DE
+1422442752,1422442879,IN
+1422442880,1422452351,DE
+1422452352,1422452479,IN
+1422452480,1422463231,DE
1422463232,1422463743,NL
-1422463744,1422491647,DE
+1422463744,1422468351,DE
+1422468352,1422468607,IN
+1422468608,1422491647,DE
1422491648,1422495615,RU
1422495616,1422495679,NL
1422495680,1422508031,RU
@@ -26400,7 +26583,9 @@
1424618465,1424618465,NL
1424618466,1424618479,GB
1424618480,1424618495,NL
-1424618496,1424619855,GB
+1424618496,1424619343,GB
+1424619344,1424619351,IT
+1424619352,1424619855,GB
1424619856,1424619863,BE
1424619864,1424621567,GB
1424621568,1424625663,PL
@@ -26542,11 +26727,7 @@
1426980864,1426997247,BG
1426997248,1427013631,PL
1427013632,1427030015,FR
-1427030016,1427032855,DE
-1427032856,1427032863,TR
-1427032864,1427032959,DE
-1427032960,1427032967,NL
-1427032968,1427033247,DE
+1427030016,1427033247,DE
1427033248,1427033263,TW
1427033264,1427046399,DE
1427046400,1427062783,IR
@@ -26600,9 +26781,15 @@
1428142080,1428144127,DE
1428144128,1428152319,FR
1428152320,1428160511,PL
-1428160512,1428260863,IT
+1428160512,1428183111,IT
+1428183112,1428183119,SI
+1428183120,1428183143,IT
+1428183144,1428183151,SI
+1428183152,1428260863,IT
1428260864,1428261119,GB
-1428261120,1429209087,IT
+1428261120,1428973199,IT
+1428973200,1428973207,SI
+1428973208,1429209087,IT
1429209088,1430257663,ES
1430257664,1430388735,IL
1430388736,1430519807,HU
@@ -26689,7 +26876,17 @@
1432322048,1432338431,RU
1432338432,1432346623,FR
1432346624,1433403391,TR
-1433403392,1433411583,ES
+1433403392,1433411071,ES
+1433411072,1433411327,TR
+1433411328,1433411343,ES
+1433411344,1433411375,TR
+1433411376,1433411407,US
+1433411408,1433411423,TR
+1433411424,1433411439,ES
+1433411440,1433411455,TR
+1433411456,1433411551,ES
+1433411552,1433411567,TR
+1433411568,1433411583,ES
1433411584,1433419775,RU
1433419776,1433427967,LB
1433427968,1433436159,RU
@@ -26715,13 +26912,10 @@
1433591808,1433599999,GE
1433600000,1433608191,DE
1433608192,1433608447,TR
-1433608448,1433608627,NL
-1433608628,1433608628,BE
-1433608629,1433608703,NL
+1433608448,1433608703,NL
1433608704,1433609471,GB
1433609472,1433609727,SE
-1433609728,1433609983,GB
-1433609984,1433610239,IT
+1433609728,1433610239,GB
1433610240,1433611263,US
1433611264,1433614335,GB
1433614336,1433615027,DE
@@ -26899,10 +27093,13 @@
1437073408,1437335551,FR
1437335552,1437597695,RU
1437597696,1438121983,DE
-1438121984,1438146559,NL
+1438121984,1438127103,NL
+1438127104,1438127359,GB
+1438127360,1438127615,SE
+1438127616,1438127871,BE
+1438127872,1438146559,NL
1438146560,1438154751,MT
-1438154752,1438162943,NL
-1438162944,1438171135,DK
+1438154752,1438171135,DK
1438171136,1438173183,GB
1438173184,1438179327,IM
1438179328,1438181375,NL
@@ -26940,7 +27137,8 @@
1438573376,1438573439,KR
1438573440,1438573503,PT
1438573504,1438573567,DK
-1438573568,1438574079,DE
+1438573568,1438573823,US
+1438573824,1438574079,DE
1438574080,1438574335,GB
1438574336,1438574591,DE
1438574592,1438578687,PL
@@ -27094,7 +27292,8 @@
1439460608,1439460863,MD
1439460864,1439462655,RO
1439462656,1439462911,MD
-1439462912,1439463423,RO
+1439462912,1439463167,RO
+1439463168,1439463423,IT
1439463424,1439463935,DK
1439463936,1439465471,RO
1439465472,1439466495,IR
@@ -27103,7 +27302,9 @@
1439467520,1439468031,DK
1439468032,1439468543,RO
1439468544,1439469567,ES
-1439469568,1439475711,RO
+1439469568,1439470335,RO
+1439470336,1439470591,IT
+1439470592,1439475711,RO
1439475712,1439475967,IN
1439475968,1439476735,RO
1439476736,1439477759,IN
@@ -27162,14 +27363,16 @@
1440213257,1440251903,DE
1440251904,1440284671,SK
1440284672,1440317439,FI
-1440317440,1440317695,BG
-1440317696,1440317951,DE
-1440317952,1440319999,BG
-1440320000,1440320511,DE
-1440320512,1440321535,BG
-1440321536,1440323583,DE
-1440323584,1440325631,BG
-1440325632,1440333823,DE
+1440317440,1440320255,BG
+1440320256,1440320511,DE
+1440320512,1440322047,BG
+1440322048,1440323071,DE
+1440323072,1440325631,BG
+1440325632,1440326655,DE
+1440326656,1440328703,BG
+1440328704,1440329727,DE
+1440329728,1440331775,BG
+1440331776,1440333823,DE
1440333824,1440350207,BG
1440350208,1440382975,CH
1440382976,1440415743,DK
@@ -27380,7 +27583,9 @@
1449736192,1449738239,MD
1449738240,1449742335,RO
1449742336,1449744383,MD
-1449744384,1449750527,RO
+1449744384,1449748479,RO
+1449748480,1449749503,GB
+1449749504,1449750527,RO
1449750528,1449752575,SE
1449752576,1449754623,RO
1449754624,1449758719,IR
@@ -27394,7 +27599,7 @@
1449765120,1449765887,RO
1449765888,1449766911,MD
1449766912,1449767167,GB
-1449767168,1449767423,RO
+1449767168,1449767423,IT
1449767424,1449767679,GB
1449767680,1449767935,IT
1449767936,1449768959,RO
@@ -27678,10 +27883,8 @@
1467572224,1467582463,BG
1467582464,1467584511,DE
1467584512,1467593727,BG
-1467593728,1467598335,DE
-1467598336,1467598847,BG
-1467598848,1467599871,DE
-1467599872,1467600895,BG
+1467593728,1467597823,DE
+1467597824,1467600895,BG
1467600896,1467601407,DE
1467601408,1467604991,BG
1467604992,1467744255,DE
@@ -27837,8 +28040,7 @@
1475323904,1475327999,PL
1475328000,1475330047,NL
1475330048,1475332095,PL
-1475332096,1475334143,LI
-1475334144,1475336191,CH
+1475332096,1475336191,CH
1475336192,1475338239,PL
1475338240,1475340287,RO
1475340288,1475342335,GR
@@ -27862,17 +28064,13 @@
1475510272,1475543039,GB
1475543040,1475545087,RO
1475545088,1475559423,KZ
-1475559424,1475560191,GR
-1475560192,1475562111,BG
-1475562112,1475562239,GR
-1475562240,1475562367,BG
-1475562368,1475562495,GR
-1475562496,1475562751,BG
-1475562752,1475563263,GR
-1475563264,1475563519,BG
-1475563520,1475571711,GR
+1475559424,1475563007,GR
+1475563008,1475563263,BG
+1475563264,1475571711,GR
1475571712,1475572735,BG
-1475572736,1475575807,GR
+1475572736,1475574783,GR
+1475574784,1475575039,BG
+1475575040,1475575807,GR
1475575808,1475592191,AT
1475592192,1475608575,GB
1475608576,1475624959,RU
@@ -27992,8 +28190,8 @@
1476009984,1476010047,RS
1476010048,1476010111,XK
1476010112,1476011327,RS
-1476011328,1476012031,XK
-1476012032,1476012095,RS
+1476011328,1476011775,XK
+1476011776,1476012095,RS
1476012096,1476012287,XK
1476012288,1476013055,RS
1476013056,1476013311,XK
@@ -28066,7 +28264,17 @@
1476378624,1476386815,KZ
1476386816,1476395007,RU
1476395008,1478492159,ES
-1478492160,1480589311,IT
+1478492160,1478552319,IT
+1478552320,1478552327,SI
+1478552328,1479067415,IT
+1479067416,1479067423,SI
+1479067424,1479738383,IT
+1479738384,1479738391,SI
+1479738392,1479738479,IT
+1479738480,1479738487,SI
+1479738488,1480413711,IT
+1480413712,1480413719,SI
+1480413720,1480589311,IT
1480589312,1481637887,DE
1481637888,1481646079,SE
1481646080,1481654271,RU
@@ -28144,9 +28352,7 @@
1482145792,1482153983,ES
1482153984,1482162175,HU
1482162176,1482686463,NO
-1482686464,1482822399,GB
-1482822400,1482822911,US
-1482822912,1482842111,GB
+1482686464,1482842111,GB
1482842112,1482850303,ES
1482850304,1482883071,GB
1482883072,1482948607,DE
@@ -28538,7 +28744,8 @@
1495306240,1495306573,GB
1495306574,1495306574,RO
1495306575,1495308287,GB
-1495308288,1495309311,RO
+1495308288,1495308799,IT
+1495308800,1495309311,RO
1495309312,1495310335,IT
1495310336,1495312383,ES
1495312384,1495312895,IT
@@ -28598,7 +28805,8 @@
1495365120,1495365375,SE
1495365376,1495367679,RO
1495367680,1495368191,IR
-1495368192,1495369215,RO
+1495368192,1495368959,RO
+1495368960,1495369215,IT
1495369216,1495369471,GB
1495369472,1495369727,RO
1495369728,1495371775,SE
@@ -28619,7 +28827,8 @@
1495388656,1495388656,KZ
1495388657,1495388671,RU
1495388672,1495392255,KZ
-1495392256,1495394815,RO
+1495392256,1495394303,SY
+1495394304,1495394815,RO
1495394816,1495395327,IR
1495395328,1495396351,RO
1495396352,1495396863,IR
@@ -28659,7 +28868,9 @@
1495431168,1495432191,ES
1495432192,1495433215,RO
1495433216,1495441407,IR
-1495441408,1495442431,RO
+1495441408,1495441663,RO
+1495441664,1495441919,IT
+1495441920,1495442431,SY
1495442432,1495442559,FR
1495442560,1495442943,RO
1495442944,1495443199,AE
@@ -28691,7 +28902,7 @@
1495468032,1495470079,MD
1495470080,1495472127,NL
1495472128,1495474175,RO
-1495474176,1495474431,ES
+1495474176,1495474431,NL
1495474432,1495474687,RO
1495474688,1495474943,MD
1495474944,1495476223,RO
@@ -28802,7 +29013,8 @@
1495588864,1495589119,RO
1495589120,1495589375,FI
1495589376,1495589887,IR
-1495589888,1495590911,RO
+1495589888,1495590143,IT
+1495590144,1495590911,RO
1495590912,1495591935,US
1495591936,1495596031,RO
1495596032,1495596543,IR
@@ -28829,11 +29041,13 @@
1495622144,1495623167,RO
1495623168,1495623679,IR
1495623680,1495624191,MD
-1495624192,1495630079,RO
-1495630080,1495631615,GB
+1495624192,1495629823,RO
+1495629824,1495631615,GB
1495631616,1495632127,RO
1495632128,1495632639,MD
-1495632640,1495633919,RO
+1495632640,1495632895,RO
+1495632896,1495633151,ES
+1495633152,1495633919,RO
1495633920,1495636991,IR
1495636992,1495640063,RO
1495640064,1495641087,IR
@@ -28872,7 +29086,9 @@
1495688704,1495689215,IR
1495689216,1495689727,RO
1495689728,1495690239,DE
-1495690240,1495699455,RO
+1495690240,1495693311,RO
+1495693312,1495695359,GB
+1495695360,1495699455,RO
1495699456,1495700479,GB
1495700480,1495701503,FR
1495701504,1495704575,RO
@@ -28948,8 +29164,8 @@
1495795456,1495795711,RU
1495795712,1495803391,RO
1495803392,1495803903,IR
-1495803904,1495804927,RO
-1495804928,1495805439,GB
+1495803904,1495804671,RO
+1495804672,1495805439,GB
1495805440,1495805951,RO
1495805952,1495810047,KZ
1495810048,1495813631,RO
@@ -28992,7 +29208,9 @@
1495848960,1495849471,SE
1495849472,1495852031,RO
1495852032,1495853055,MD
-1495853056,1495855103,RO
+1495853056,1495853567,RO
+1495853568,1495854079,IT
+1495854080,1495855103,RO
1495855104,1495859199,IR
1495859200,1495860223,ES
1495860224,1495861247,AZ
@@ -29012,7 +29230,9 @@
1495874560,1495875071,GB
1495875072,1495875583,RO
1495875584,1495891967,MD
-1495891968,1495900159,RO
+1495891968,1495894527,RO
+1495894528,1495896063,SY
+1495896064,1495900159,RO
1495900160,1495902207,SE
1495902208,1495906303,RO
1495906304,1495907327,IR
@@ -29024,9 +29244,13 @@
1495926784,1495927039,SG
1495927040,1495927295,RO
1495927296,1495927551,GB
-1495927552,1495931647,RO
+1495927552,1495931135,RO
+1495931136,1495931391,IT
+1495931392,1495931647,RO
1495931648,1495931903,BG
-1495931904,1495932927,RO
+1495931904,1495932159,RO
+1495932160,1495932415,GB
+1495932416,1495932927,RO
1495932928,1495933439,IR
1495933440,1495935743,RO
1495935744,1495935999,ES
@@ -29070,7 +29294,9 @@
1495976960,1495977983,KZ
1495977984,1495979007,RO
1495979008,1495979263,NL
-1495979264,1495982079,RO
+1495979264,1495979775,RO
+1495979776,1495980031,GB
+1495980032,1495982079,RO
1495982080,1495983103,MD
1495983104,1495983615,IR
1495983616,1495983871,IT
@@ -29228,7 +29454,9 @@
1496213504,1496215551,IT
1496215552,1496216319,RO
1496216320,1496216575,MD
-1496216576,1496220671,RO
+1496216576,1496218879,RO
+1496218880,1496219135,DE
+1496219136,1496220671,RO
1496220672,1496221695,US
1496221696,1496223743,ES
1496223744,1496228863,RO
@@ -29268,7 +29496,11 @@
1496299520,1496301567,SE
1496301568,1496302591,RO
1496302592,1496304639,IR
-1496304640,1496317951,RO
+1496304640,1496315647,RO
+1496315648,1496315903,GB
+1496315904,1496316159,RO
+1496316160,1496316415,GB
+1496316416,1496317951,RO
1496317952,1497366527,DE
1497366528,1498415103,PL
1498415104,1499463679,FR
@@ -29414,9 +29646,7 @@
1502980880,1502980895,DE
1502980896,1502980927,IE
1502980928,1502981119,DE
-1502981120,1502981887,IE
-1502981888,1502982143,NL
-1502982144,1502986239,IE
+1502981120,1502986239,IE
1502986240,1502986255,DE
1502986256,1502986495,TR
1502986496,1502986511,DE
@@ -29481,29 +29711,17 @@
1503895664,1503895671,FR
1503895672,1503895679,DE
1503895680,1503895687,IT
-1503895688,1503895807,DE
-1503895808,1503895871,RU
-1503895872,1503895927,DE
+1503895688,1503895927,DE
1503895928,1503895935,DK
-1503895936,1503896115,DE
-1503896116,1503896119,SE
-1503896120,1503896159,DE
+1503895936,1503896159,DE
1503896160,1503896175,CH
-1503896176,1503896259,DE
-1503896260,1503896263,CH
-1503896264,1503896343,DE
+1503896176,1503896343,DE
1503896344,1503896351,AT
1503896352,1503896411,DE
1503896412,1503896415,AT
-1503896416,1503896519,DE
-1503896520,1503896527,NO
-1503896528,1503897303,DE
-1503897304,1503897311,AT
-1503897312,1503897367,DE
+1503896416,1503897367,DE
1503897368,1503897375,BE
-1503897376,1503897443,DE
-1503897444,1503897447,IT
-1503897448,1503897495,DE
+1503897376,1503897495,DE
1503897496,1503897503,CH
1503897504,1503898175,DE
1503898176,1503898183,IT
@@ -29515,27 +29733,17 @@
1503898352,1503898359,CH
1503898360,1503898791,DE
1503898792,1503898799,AT
-1503898800,1503898823,DE
-1503898824,1503898831,AT
-1503898832,1503898911,DE
+1503898800,1503898911,DE
1503898912,1503898919,LT
1503898920,1503898935,DE
1503898936,1503898943,IT
1503898944,1503898959,DE
1503898960,1503898967,IT
-1503898968,1503898991,DE
-1503898992,1503898999,GB
-1503899000,1503899071,DE
+1503898968,1503899071,DE
1503899072,1503899079,AT
-1503899080,1503899119,DE
-1503899120,1503899127,NL
-1503899128,1503899263,DE
-1503899264,1503899295,UA
-1503899296,1503899463,DE
+1503899080,1503899463,DE
1503899464,1503899471,IT
-1503899472,1503899583,DE
-1503899584,1503899647,TW
-1503899648,1503899687,DE
+1503899472,1503899687,DE
1503899688,1503899695,IT
1503899696,1503899703,BE
1503899704,1503899927,DE
@@ -29552,22 +29760,13 @@
1503903688,1503903695,IT
1503903696,1503903711,DE
1503903712,1503903719,IT
-1503903720,1503904343,DE
-1503904344,1503904351,BE
-1503904352,1503905551,DE
+1503903720,1503905551,DE
1503905552,1503905559,CH
-1503905560,1503905567,ES
-1503905568,1503905647,DE
+1503905560,1503905647,DE
1503905648,1503905655,IT
-1503905656,1503905663,AT
-1503905664,1503905895,DE
-1503905896,1503905903,GB
-1503905904,1503906055,DE
+1503905656,1503906055,DE
1503906056,1503906063,CH
-1503906064,1503906071,TR
-1503906072,1503906111,DE
-1503906112,1503906175,TR
-1503906176,1503906343,DE
+1503906064,1503906343,DE
1503906344,1503906351,AT
1503906352,1503906407,DE
1503906408,1503906415,MX
@@ -29651,7 +29850,13 @@
1505646848,1505647103,PL
1505647104,1505648639,CZ
1505648640,1505656831,LT
-1505665024,1505673215,IT
+1505665024,1505669491,IT
+1505669492,1505669495,SI
+1505669496,1505670159,IT
+1505670160,1505670163,SI
+1505670164,1505672239,IT
+1505672240,1505672243,SI
+1505672244,1505673215,IT
1505673216,1505681407,BG
1505681408,1505689599,RU
1505689600,1505697791,NO
@@ -29660,7 +29865,8 @@
1505714176,1505722367,LV
1505722368,1505738751,PL
1505738752,1505746943,GB
-1505746944,1505755135,RU
+1505746944,1505751039,IL
+1505751040,1505755135,RU
1505755136,1506017279,GB
1506017280,1506082815,IR
1506082816,1506148351,GB
@@ -29897,7 +30103,10 @@
1508811192,1508811195,NL
1508811196,1508812519,GB
1508812520,1508812527,CZ
-1508812528,1508817407,GB
+1508812528,1508815103,GB
+1508815104,1508815359,NL
+1508815360,1508815615,ES
+1508815616,1508817407,GB
1508817408,1508817663,CZ
1508817664,1508818735,GB
1508818736,1508818743,IE
@@ -29933,7 +30142,9 @@
1509494784,1509498879,RU
1509498880,1509502975,DE
1509502976,1509507071,RU
-1509507072,1509509375,GB
+1509507072,1509507327,GB
+1509507328,1509507583,DE
+1509507584,1509509375,GB
1509509376,1509509631,BE
1509509632,1509511167,GB
1509511168,1509515263,LT
@@ -30186,7 +30397,9 @@
1512370443,1512372735,GP
1512372736,1512372991,FR
1512372992,1512374271,GP
-1512374272,1514143743,FR
+1512374272,1513892207,FR
+1513892208,1513892208,ES
+1513892209,1514143743,FR
1514143744,1514176511,SK
1514176512,1514405887,FR
1514405888,1514536959,ES
@@ -30501,10 +30714,14 @@
1533805568,1533807615,NL
1533807616,1533808639,US
1533808640,1533809663,SG
-1533809664,1533818879,GB
+1533809664,1533818879,RU
1533818880,1533819903,NL
1533819904,1533820927,RU
-1533820928,1533833215,DE
+1533820928,1533825407,DE
+1533825408,1533825535,IN
+1533825536,1533825919,DE
+1533825920,1533826047,IN
+1533826048,1533833215,DE
1533833216,1533845503,IR
1533845504,1533847551,GB
1533847552,1533849599,RU
@@ -30538,7 +30755,9 @@
1533929472,1533932799,GB
1533932800,1533933055,DE
1533933056,1534066687,GB
-1534066688,1534328831,AT
+1534066688,1534300159,AT
+1534300160,1534300415,DE
+1534300416,1534328831,AT
1534328832,1534459903,ES
1534459904,1534590975,AT
1534590976,1534656511,HU
@@ -30755,7 +30974,9 @@
1535551904,1535551919,NL
1535551920,1535552463,FR
1535552464,1535552479,NL
-1535552480,1535553471,FR
+1535552480,1535553343,FR
+1535553344,1535553407,PL
+1535553408,1535553471,FR
1535553472,1535553535,ES
1535553536,1535553983,FR
1535553984,1535554047,GB
@@ -30775,7 +30996,11 @@
1535556864,1535557119,GB
1535557120,1535558015,FR
1535558016,1535558143,ES
-1535558144,1535559935,FR
+1535558144,1535559695,FR
+1535559696,1535559711,IT
+1535559712,1535559807,FR
+1535559808,1535559871,FI
+1535559872,1535559935,FR
1535559936,1535560191,GB
1535560192,1535560287,FR
1535560288,1535560319,FI
@@ -30789,11 +31014,15 @@
1535562592,1535562623,FI
1535562624,1535562879,FR
1535562880,1535563007,ES
-1535563008,1535563455,FR
+1535563008,1535563371,FR
+1535563372,1535563375,FI
+1535563376,1535563455,FR
1535563456,1535563519,IE
1535563520,1535566143,FR
1535566144,1535566159,ES
-1535566160,1535566655,FR
+1535566160,1535566563,FR
+1535566564,1535566567,GB
+1535566568,1535566655,FR
1535566656,1535566719,PL
1535566720,1535567551,FR
1535567552,1535567615,ES
@@ -30812,7 +31041,9 @@
1535573308,1535573311,NL
1535573312,1535573391,FR
1535573392,1535573407,ES
-1535573408,1535573543,FR
+1535573408,1535573439,FR
+1535573440,1535573503,PL
+1535573504,1535573543,FR
1535573544,1535573547,LT
1535573548,1535574015,FR
1535574016,1535578111,GB
@@ -30914,8 +31145,8 @@
1536450231,1536450231,RS
1536450232,1536450494,XK
1536450495,1536450495,RS
-1536450496,1536452607,XK
-1536452608,1536453375,RS
+1536450496,1536450559,XK
+1536450560,1536453375,RS
1536453376,1536453631,XK
1536453632,1536453887,RS
1536453888,1536453903,XK
@@ -31632,7 +31863,6 @@
1539745024,1539745279,GB
1539745280,1539745535,GI
1539745792,1539746303,DK
-1539746560,1539746815,RU
1539746816,1539747071,DK
1539747072,1539747327,CH
1539747328,1539747583,NL
@@ -32063,7 +32293,9 @@
1540008960,1540011007,PL
1540011008,1540014079,RU
1540014080,1540015103,PL
-1540015104,1540016393,RU
+1540015104,1540016193,RU
+1540016194,1540016194,NL
+1540016195,1540016393,RU
1540016394,1540016394,IE
1540016395,1540016453,RU
1540016454,1540016454,IE
@@ -32199,7 +32431,6 @@
1540182016,1540183039,IT
1540183040,1540184063,RU
1540184064,1540185087,PL
-1540185088,1540186111,RU
1540186112,1540187135,NL
1540187136,1540188159,US
1540190208,1540191231,PT
@@ -33454,7 +33685,10 @@
1540848640,1540849663,UA
1540849664,1540850687,RU
1540850688,1540851711,FI
-1540851712,1540853759,RU
+1540851712,1540852239,KZ
+1540852240,1540852240,RU
+1540852241,1540852735,KZ
+1540852736,1540853759,RU
1540853760,1540854783,UA
1540854784,1540855807,NL
1540855808,1540856831,BG
@@ -33889,9 +34123,7 @@
1541041152,1541044223,RU
1541044224,1541045247,US
1541045248,1541046271,NL
-1541046272,1541047295,RU
-1541047296,1541047551,UA
-1541047552,1541051391,RU
+1541046272,1541051391,RU
1541051392,1541052415,NL
1541052416,1541053439,RO
1541053440,1541054463,PL
@@ -34002,7 +34234,6 @@
1541152768,1541153023,PL
1541153024,1541153279,RU
1541153280,1541153535,DE
-1541153536,1541153791,RO
1541153792,1541154047,DE
1541154048,1541154303,NL
1541154304,1541154559,RU
@@ -34590,7 +34821,6 @@
1541400832,1541401087,NL
1541401088,1541401343,UA
1541401344,1541401599,DK
-1541401600,1541401855,LV
1541401856,1541402111,HR
1541402112,1541402367,SI
1541402368,1541402623,RU
@@ -35737,6 +35967,7 @@
1542124800,1542125567,PL
1542125568,1542126591,CZ
1542126592,1542127103,PL
+1542127104,1542127359,GB
1542127616,1542128127,PL
1542128128,1542128383,RU
1542128384,1542129151,RO
@@ -36044,7 +36275,7 @@
1542308096,1542308863,RO
1542308864,1542309119,PL
1542309120,1542309375,GB
-1542309376,1542310911,RU
+1542309632,1542310911,RU
1542310912,1542312191,UA
1542312192,1542312447,RU
1542312448,1542312959,GB
@@ -36287,7 +36518,6 @@
1542448896,1542449151,AT
1542449152,1542450175,UA
1542450176,1542450687,CZ
-1542450688,1542450943,SY
1542450944,1542451199,RU
1542451200,1542451455,BG
1542451456,1542451711,UA
@@ -36369,7 +36599,7 @@
1542494976,1542495231,RU
1542495232,1542496255,RO
1542496256,1542496767,DE
-1542496768,1542497279,RU
+1542496768,1542497023,RU
1542497280,1542497535,DE
1542497536,1542497791,NL
1542497792,1542498303,IT
@@ -36397,7 +36627,7 @@
1542507520,1542508543,NO
1542508544,1542509567,RU
1542509568,1542510079,CY
-1542510080,1542510591,RU
+1542510080,1542510335,RU
1542510592,1542510847,SI
1542510848,1542511103,DE
1542511104,1542511871,RU
@@ -36491,14 +36721,13 @@
1542640896,1542641151,RU
1542641152,1542641663,IN
1542641664,1542641919,RO
-1542641920,1542642175,OM
1542642176,1542642431,PL
1542642688,1542643199,PL
1542643200,1542643455,UA
1542643456,1542643711,NL
1542643712,1542660095,UA
-1542660096,1542667263,RU
-1542667264,1542668799,NL
+1542660096,1542668287,RU
+1542668288,1542668799,NL
1542668800,1542669311,PL
1542669312,1542669567,RU
1542669568,1542669823,NO
@@ -36518,7 +36747,7 @@
1542675968,1542676223,US
1542676224,1542681087,RU
1542681088,1542681343,GB
-1542681344,1542683135,RU
+1542681600,1542683135,RU
1542683136,1542683391,SK
1542683392,1542683647,RS
1542683648,1542684159,RU
@@ -36556,7 +36785,6 @@
1542763776,1542764031,BG
1542764032,1542764543,RU
1542764544,1542766591,PL
-1542766592,1542770687,RU
1542770688,1542774783,PL
1542774784,1542775039,NL
1542775040,1542775295,PL
@@ -36654,7 +36882,8 @@
1543143424,1543159807,RO
1543159808,1543167999,SE
1543168000,1543172095,IR
-1543172096,1543173375,RO
+1543172096,1543173119,RO
+1543173120,1543173375,GB
1543173376,1543173631,MD
1543173632,1543176191,RO
1543176192,1543241727,IR
@@ -36686,7 +36915,8 @@
1546014720,1546015743,RU
1546015744,1546015999,CZ
1546016000,1546016255,DE
-1546016256,1546017791,CZ
+1546016256,1546016767,CZ
+1546016768,1546017791,IT
1546017792,1546017969,RU
1546017970,1546017970,CZ
1546017971,1546018303,RU
@@ -36730,7 +36960,6 @@
1546125312,1546256383,GB
1546256384,1546264575,RU
1546264576,1546266623,TR
-1546266624,1546268671,RU
1546268672,1546270719,IR
1546270720,1546272767,GB
1546272768,1546274815,NO
@@ -37234,7 +37463,8 @@
1560135936,1560139775,GB
1560139776,1560141823,CZ
1560141824,1560143871,GB
-1560143872,1560150015,CZ
+1560143872,1560145919,FR
+1560145920,1560150015,CZ
1560150016,1560182783,NL
1560182784,1560215551,SE
1560215552,1560281087,RU
@@ -37560,7 +37790,7 @@
1567778816,1567780863,IR
1567780864,1567785471,RO
1567785472,1567785727,TR
-1567785728,1567785983,RO
+1567785728,1567785983,ES
1567785984,1567786239,MD
1567786240,1567789055,RO
1567789056,1567793151,ES
@@ -37615,7 +37845,8 @@
1567858688,1567860735,SE
1567860736,1567861247,BE
1567861248,1567861759,IT
-1567861760,1567866879,RO
+1567861760,1567862783,RO
+1567862784,1567866879,GB
1567866880,1567867135,IN
1567867136,1567867391,RO
1567867392,1567867519,GB
@@ -37688,7 +37919,7 @@
1568122880,1568130047,RO
1568130048,1568133119,MD
1568133120,1568137215,IR
-1568137216,1568137983,RO
+1568137216,1568138239,RO
1568138240,1568141311,MD
1568141312,1568145407,DE
1568145408,1568178175,RO
@@ -37726,7 +37957,11 @@
1568555008,1568571391,UA
1568571392,1568604159,LB
1568604160,1568636927,UA
-1568636928,1569193983,DE
+1568636928,1568662143,DE
+1568662144,1568662271,IN
+1568662272,1568667391,DE
+1568667392,1568667519,IN
+1568667520,1569193983,DE
1569193984,1569718271,HR
1569718272,1570242559,IT
1570242560,1570275327,GB
@@ -37810,8 +38045,7 @@
1571432448,1571434495,RU
1571434496,1571435519,UA
1571435520,1571436031,RU
-1571436032,1571436287,CZ
-1571436288,1571436543,UA
+1571436032,1571436543,UA
1571436544,1571438591,BA
1571438592,1571440639,UA
1571440640,1571440895,RU
@@ -37853,7 +38087,8 @@
1571467264,1571467775,RU
1571467776,1571468287,CZ
1571468288,1571469311,RU
-1571469312,1571470335,BY
+1571469312,1571470079,BY
+1571470080,1571470335,LT
1571470336,1571470847,UA
1571470848,1571475455,RU
1571475456,1571475967,UA
@@ -37981,8 +38216,7 @@
1571748608,1571748863,GB
1571748864,1571749119,US
1571749120,1571749375,SG
-1571749376,1571749631,GB
-1571749632,1571749887,SG
+1571749376,1571749887,GB
1571749888,1571758079,RU
1571758080,1571766271,IL
1571766272,1571786751,PL
@@ -38197,13 +38431,12 @@
1572708352,1572710399,GG
1572710400,1572712447,DE
1572712448,1572714495,ES
-1572714496,1572714943,NG
-1572714944,1572714959,IT
+1572714496,1572714935,NG
+1572714936,1572714959,IT
1572714960,1572715433,NG
1572715434,1572715434,IT
-1572715435,1572715775,NG
-1572715776,1572716031,IT
-1572716032,1572716543,NG
+1572715435,1572715519,NG
+1572715520,1572716543,IT
1572716544,1572718591,SA
1572718592,1572720639,RU
1572720640,1572722687,IT
@@ -38423,7 +38656,9 @@
1578612060,1578612063,ES
1578612064,1578612103,FR
1578612104,1578612111,GB
-1578612112,1578612907,FR
+1578612112,1578612391,FR
+1578612392,1578612395,GB
+1578612396,1578612907,FR
1578612908,1578612911,ES
1578612912,1578613436,FR
1578613437,1578613437,ES
@@ -38517,13 +38752,15 @@
1580126208,1580128255,CY
1580128256,1580129279,NL
1580129280,1580129535,GB
-1580129536,1580130303,US
+1580129536,1580130079,US
+1580130080,1580130095,GB
+1580130096,1580130303,US
1580130304,1580135423,SE
1580135424,1580135679,GB
1580135680,1580138495,SE
-1580138496,1580199935,IT
-1580199936,1580200191,US
-1580200192,1580204031,IT
+1580138496,1580201343,IT
+1580201344,1580201351,SI
+1580201352,1580204031,IT
1580204032,1580335103,SA
1580335104,1580466175,RU
1580466176,1580597247,RO
@@ -38562,7 +38799,17 @@
1582252032,1582268415,TR
1582268416,1582284799,DE
1582284800,1582301183,BH
-1582301184,1583349759,IT
+1582301184,1582351791,IT
+1582351792,1582351799,SI
+1582351800,1583089271,IT
+1583089272,1583089279,SI
+1583089280,1583345951,IT
+1583345952,1583345959,SI
+1583345960,1583347199,IT
+1583347200,1583347207,SI
+1583347208,1583347215,IT
+1583347216,1583347223,SI
+1583347224,1583349759,IT
1583349760,1583611903,SA
1583611904,1583615999,LV
1583616000,1583617791,NL
@@ -38609,23 +38856,21 @@
1583763456,1583765503,SY
1583765504,1583766015,RU
1583766016,1583766527,TR
-1583766528,1583767551,RU
+1583766528,1583767551,SY
1583767552,1583771647,AT
1583771648,1583775743,RU
1583775744,1583779839,IT
1583779840,1583779847,GB
1583779848,1583779855,IT
-1583779856,1583780063,GB
-1583780064,1583780071,IT
-1583780072,1583780263,GB
+1583779856,1583780263,GB
1583780264,1583780271,IT
1583780272,1583780423,GB
1583780424,1583780431,IT
1583780432,1583780447,GB
1583780448,1583780455,IT
1583780456,1583780743,GB
-1583780744,1583780751,IT
-1583780752,1583780767,GB
+1583780744,1583780759,IT
+1583780760,1583780767,GB
1583780768,1583780775,IT
1583780776,1583780791,GB
1583780792,1583780799,IT
@@ -38647,9 +38892,7 @@
1583782976,1583782983,IT
1583782984,1583783495,GB
1583783496,1583783503,IT
-1583783504,1583783719,GB
-1583783720,1583783727,IT
-1583783728,1583783775,GB
+1583783504,1583783775,GB
1583783776,1583783783,IT
1583783784,1583783935,GB
1583788032,1583792127,TM
@@ -38957,7 +39200,7 @@
1588593920,1588594687,RO
1588594688,1588602879,IR
1588602880,1588603135,RO
-1588603136,1588603391,MD
+1588603136,1588603391,BG
1588603392,1588604927,RO
1588604928,1588609023,IR
1588609024,1588613119,MD
@@ -39001,11 +39244,13 @@
1588682752,1588684799,RO
1588684800,1588685055,TH
1588685056,1588685311,VG
-1588685312,1588689407,RO
+1588685312,1588688383,RO
+1588688384,1588688639,GB
+1588688640,1588689407,RO
1588689408,1588689663,GB
1588689664,1588689919,RU
1588689920,1588690687,GB
-1588690688,1588690943,RO
+1588690688,1588690943,IT
1588690944,1588692991,PL
1588692992,1588697087,RO
1588697088,1588699135,ES
@@ -39035,7 +39280,9 @@
1589444608,1589477375,DK
1589477376,1589510143,RS
1589510144,1589542911,RU
-1589542912,1589575679,BG
+1589542912,1589560319,BG
+1589560320,1589561343,GI
+1589561344,1589575679,BG
1589575680,1589608447,RU
1589608448,1589622783,SE
1589622784,1589641215,DK
@@ -39133,7 +39380,9 @@
1592082432,1592086527,GB
1592086528,1592087551,CZ
1592087552,1592088063,PL
-1592088064,1592090623,CZ
+1592088064,1592088191,CZ
+1592088192,1592088319,PL
+1592088320,1592090623,CZ
1592090624,1592094719,RU
1592094720,1592098815,RS
1592098816,1592102911,GB
@@ -39235,8 +39484,7 @@
1593134864,1593135359,GB
1593135360,1593135615,IE
1593135616,1593136639,GB
-1593136640,1593136895,IE
-1593137152,1593139199,IE
+1593136640,1593139199,IE
1593139200,1593140223,NL
1593140224,1593140351,IE
1593140352,1593140479,NL
@@ -39341,7 +39589,11 @@
1596851456,1596851711,CZ
1596851712,1596851967,UA
1596851968,1596852223,LV
-1596852224,1596854271,UA
+1596852224,1596852479,UA
+1596852480,1596852735,RU
+1596852736,1596853247,UA
+1596853248,1596853759,RU
+1596853760,1596854271,UA
1596854272,1596858367,BY
1596858368,1596858879,CZ
1596858880,1596859391,RU
@@ -39353,13 +39605,17 @@
1596866560,1596868607,UZ
1596868608,1596869631,RU
1596869632,1596870655,UA
-1596870656,1596873727,RU
+1596870656,1596873215,RU
+1596873216,1596873471,UZ
+1596873472,1596873727,RU
1596873728,1596873983,UZ
1596873984,1596874751,RU
1596874752,1596875775,UA
1596875776,1596876799,UZ
1596876800,1596877311,RU
-1596877312,1596877823,CZ
+1596877312,1596877596,CZ
+1596877597,1596877597,UA
+1596877598,1596877823,CZ
1596877824,1596878079,UA
1596878080,1596879359,RU
1596879360,1596879871,CZ
@@ -39376,7 +39632,7 @@
1596887296,1596887551,KZ
1596887552,1596888063,UA
1596888064,1596889599,RU
-1596889600,1596889855,CZ
+1596889600,1596889855,KG
1596889856,1596890111,UA
1596890112,1596890623,RU
1596890624,1596890879,CZ
@@ -39833,25 +40089,23 @@
1604714496,1604780031,DK
1604780032,1604845567,RU
1604845568,1604853759,FR
-1604853760,1604861951,HU
-1604861952,1604870143,RS
+1604853760,1604870143,HU
1604870144,1604878335,HR
1604878336,1604886527,DE
-1604886528,1604886655,NL
-1604886656,1604886783,RU
+1604886528,1604886783,NL
1604886784,1604887039,DE
-1604887040,1604887295,GB
+1604887040,1604887295,NL
1604887296,1604888063,DE
-1604888064,1604889599,TR
+1604888064,1604888831,NL
+1604888832,1604889599,TR
1604889600,1604890111,DE
-1604890112,1604890367,RU
+1604890112,1604890367,NL
1604890368,1604890879,TR
1604890880,1604891967,DE
-1604891968,1604892159,RU
+1604891968,1604892159,NL
1604892160,1604892927,DE
1604892928,1604893183,HK
-1604893184,1604893311,DE
-1604893312,1604893375,NL
+1604893184,1604893375,NL
1604893376,1604893951,DE
1604893952,1604894463,TR
1604894464,1604894719,DE
@@ -39891,9 +40145,7 @@
1605109352,1605109359,IT
1605109360,1605109495,GB
1605109496,1605109503,IT
-1605109504,1605109855,GB
-1605109856,1605109863,IT
-1605109864,1605110183,GB
+1605109504,1605110183,GB
1605110184,1605110191,IT
1605110192,1605110263,GB
1605110264,1605110271,IT
@@ -39913,7 +40165,9 @@
1605111904,1605111911,IT
1605111912,1605111935,GB
1605111936,1605111943,IT
-1605111944,1605113383,GB
+1605111944,1605112119,GB
+1605112120,1605112127,IT
+1605112128,1605113383,GB
1605113384,1605113391,IT
1605113392,1605113407,GB
1605113408,1605113415,IT
@@ -39929,9 +40183,7 @@
1605114288,1605114295,IT
1605114296,1605114327,GB
1605114328,1605114335,IT
-1605114336,1605114855,GB
-1605114856,1605114863,IT
-1605114864,1605115007,GB
+1605114336,1605115007,GB
1605115008,1605115015,IT
1605115016,1605115191,GB
1605115192,1605115199,IT
@@ -39939,19 +40191,19 @@
1605115416,1605115423,IT
1605115424,1605115503,GB
1605115504,1605115511,IT
-1605115512,1605115567,GB
-1605115568,1605115575,IT
-1605115576,1605115903,GB
+1605115512,1605115903,GB
1605115904,1605124095,RU
1605124096,1605125263,GB
1605125264,1605125275,DE
1605125276,1605125276,GB
1605125277,1605125279,DE
-1605125280,1605125903,GB
-1605125904,1605125919,DE
+1605125280,1605125887,GB
+1605125888,1605125919,DE
1605125920,1605126701,GB
1605126702,1605126702,US
-1605126703,1605130239,GB
+1605126703,1605126911,GB
+1605126912,1605127167,DE
+1605127168,1605130239,GB
1605130240,1605130271,NL
1605130272,1605131263,GB
1605131264,1605131519,DE
@@ -40146,8 +40398,8 @@
1611036672,1611037183,NL
1611037184,1611042815,US
1611042816,1611046911,NL
-1611046912,1611084031,US
-1611084032,1611084799,NL
+1611046912,1611084543,US
+1611084544,1611084799,NL
1611084800,1611086335,US
1611086336,1611086847,NL
1611086848,1611116543,US
@@ -40243,9 +40495,7 @@
1653500928,1653501103,FR
1653501104,1653501111,IN
1653501112,1653501175,FR
-1653501176,1653501183,US
-1653501184,1653501439,IL
-1653501440,1653534719,US
+1653501176,1653534719,US
1653534720,1653538815,CA
1653538816,1653555199,US
1653555200,1653567487,CA
@@ -40664,6 +40914,7 @@
1728427008,1728428031,MY
1728428032,1728430079,IN
1728430080,1728431103,CN
+1728431104,1728431615,AF
1728431616,1728431871,HK
1728431872,1728432127,SG
1728432128,1728433151,IN
@@ -41012,7 +41263,6 @@
1728751616,1728751871,IN
1728751872,1728752639,ID
1728752640,1728753663,HK
-1728753664,1728754687,PH
1728754688,1728755711,IN
1728755712,1728756735,ID
1728756736,1728757759,IN
@@ -41130,8 +41380,8 @@
1728854016,1728854527,AU
1728854528,1728854783,PK
1728854784,1728855039,AU
-1728855040,1728856063,JP
-1728856064,1728857087,MY
+1728855040,1728855551,TH
+1728855552,1728857087,MY
1728857088,1728858111,CN
1728858112,1728859135,BD
1728859136,1728860159,HK
@@ -41308,7 +41558,6 @@
1729010688,1729011711,CN
1729011712,1729012735,IN
1729012736,1729013759,TH
-1729013760,1729014783,NZ
1729014784,1729015807,AU
1729015808,1729016831,JP
1729016832,1729017855,IN
@@ -41371,7 +41620,7 @@
1729065984,1729067007,JP
1729067008,1729068031,HK
1729068032,1729068287,IN
-1729068288,1729068543,SG
+1729068288,1729068543,US
1729068544,1729069055,NZ
1729069056,1729070079,AU
1729070080,1729071103,HK
@@ -41482,8 +41731,8 @@
1729167360,1729168383,IN
1729169408,1729170431,TW
1729170432,1729170687,HK
-1729170688,1729170719,CN
-1729170720,1729171455,HK
+1729170688,1729171199,CN
+1729171200,1729171455,IN
1729171456,1729171967,AU
1729171968,1729172223,IN
1729172224,1729172479,MY
@@ -41732,7 +41981,7 @@
1729411072,1729413119,ID
1729413120,1729414143,HK
1729414144,1729414655,ID
-1729414656,1729416191,AU
+1729415168,1729416191,AU
1729416192,1729417215,TH
1729417216,1729418239,AU
1729418240,1729419263,IN
@@ -41809,9 +42058,7 @@
1729492480,1729492991,US
1729492992,1729494015,NZ
1729494016,1729495039,MY
-1729495040,1729519615,CN
-1729519616,1729520639,HK
-1729520640,1729527807,CN
+1729495040,1729527807,CN
1729527808,1729528831,SG
1729528832,1729530879,ID
1729530880,1729531903,IN
@@ -41834,8 +42081,7 @@
1729545216,1729546239,AU
1729546240,1729546495,JP
1729546496,1729546751,SG
-1729546752,1729547007,NZ
-1729547008,1729547263,HK
+1729546752,1729547263,HK
1729547264,1729548287,ID
1729548288,1729549311,AU
1729549312,1729550335,TW
@@ -42380,7 +42626,7 @@
1730070528,1730071551,CN
1730071552,1730072575,KR
1730072576,1730073343,SG
-1730073344,1730073855,HK
+1730073344,1730073599,HK
1730073856,1730074111,MY
1730074112,1730074367,AU
1730074368,1730074623,SG
@@ -42476,7 +42722,6 @@
1730373632,1730374655,CN
1730374656,1730375679,BD
1730375680,1730376191,AU
-1730376192,1730376703,VU
1730376704,1730377727,CN
1730377728,1730378239,IN
1730378240,1730378495,HK
@@ -42506,7 +42751,6 @@
1730398208,1730399231,CN
1730399232,1730400255,TW
1730400256,1730402303,PK
-1730402304,1730402559,NZ
1730402560,1730402815,IN
1730402816,1730403071,ID
1730403072,1730403327,AU
@@ -42566,7 +42810,6 @@
1730480640,1730481151,JP
1730481152,1730483199,CN
1730483200,1730483711,IN
-1730483712,1730484223,AU
1730484224,1730485247,CN
1730485248,1730487295,VN
1730487296,1730488319,TW
@@ -42580,9 +42823,7 @@
1730496512,1730497535,CN
1730497536,1730499583,IN
1730499584,1730500607,HK
-1730500608,1730501631,IN
1730501632,1730502655,JP
-1730502656,1730503167,MY
1730503424,1730503679,AU
1730503680,1730505727,CN
1730505728,1730508799,JP
@@ -42650,7 +42891,6 @@
1730586624,1730587647,HK
1730587648,1730588671,PH
1730588672,1730589695,IN
-1730589696,1730590719,JP
1730590720,1730591743,SG
1730591744,1730591999,PH
1730592000,1730592767,IN
@@ -42685,7 +42925,8 @@
1730623488,1730624511,HK
1730624512,1730625535,AU
1730625536,1730626559,CN
-1730626560,1730629631,HK
+1730626560,1730627583,HK
+1730628608,1730629631,HK
1730629632,1730630655,PK
1730630656,1730631679,AU
1730631680,1730632703,CN
@@ -42695,7 +42936,6 @@
1730638080,1730638335,JP
1730638336,1730638847,NZ
1730638848,1730639871,IN
-1730639872,1730640383,AU
1730640384,1730640895,MY
1730641920,1730643967,IN
1730643968,1730644735,AU
@@ -42716,7 +42956,6 @@
1730675712,1730677759,HK
1730677760,1730686975,CN
1730686976,1730687999,IN
-1730688000,1730688511,AU
1730688512,1730689023,ID
1730689024,1730692095,IN
1730692096,1730692607,ID
@@ -42890,14 +43129,14 @@
1730895872,1730898943,CN
1730898944,1730899967,MO
1730899968,1730900991,IN
-1730900992,1730901247,HK
+1730900992,1730901247,AU
1730901248,1730901503,SG
1730901504,1730901759,DE
1730901760,1730902015,AU
1730902016,1730903039,KR
1730903040,1730904063,CN
1730904064,1730905087,ID
-1730905088,1730906111,CN
+1730905088,1730906111,HK
1730906112,1730906367,TH
1730906368,1730907135,AU
1730907136,1730908159,JP
@@ -43077,7 +43316,7 @@
1731186688,1731187711,SG
1731187712,1731188735,CN
1731188736,1731189759,IN
-1731189760,1731190783,CN
+1731189760,1731190783,HK
1731190784,1731191807,SG
1731191808,1731192831,ID
1731192832,1731193087,SG
@@ -43169,7 +43408,7 @@
1731291648,1731292159,AU
1731292160,1731293183,CN
1731293184,1731294207,SG
-1731294208,1731296767,IN
+1731294208,1731296255,IN
1731296768,1731297023,HK
1731297024,1731297279,AU
1731297280,1731298303,CN
@@ -43727,7 +43966,6 @@
1731987456,1731987711,SG
1731987712,1731987967,ID
1731987968,1731988479,SG
-1731988480,1731989503,JP
1731989504,1731990527,VN
1731990528,1731990783,AU
1731990784,1731991039,IN
@@ -43900,7 +44138,6 @@
1732236288,1732237311,VN
1732237312,1732240383,JP
1732240384,1732241407,AU
-1732241408,1732241663,IN
1732241664,1732241919,ID
1732241920,1732242431,BD
1732242432,1732243455,HK
@@ -44081,7 +44318,9 @@
1732541440,1732541695,AU
1732541696,1732542463,SG
1732542464,1732543487,CN
-1732543488,1732544511,SG
+1732543488,1732543743,SG
+1732543744,1732543999,IL
+1732544000,1732544511,SG
1732544512,1732545023,ID
1732545024,1732545279,TW
1732545280,1732545535,MM
@@ -44097,7 +44336,7 @@
1732555776,1732556799,HK
1732556800,1732557823,IN
1732557824,1732558847,AU
-1732558848,1732559871,CN
+1732558848,1732559871,HK
1732559872,1732560127,IN
1732560128,1732560639,NZ
1732560640,1732560895,IN
@@ -44232,8 +44471,7 @@
1732712960,1732713215,US
1732713216,1732713471,AU
1732713472,1732714495,HK
-1732714496,1732715007,CN
-1732715008,1732715519,HK
+1732714496,1732715519,CN
1732715520,1732716543,JP
1732716544,1732717567,BD
1732717568,1732718079,ID
@@ -44252,8 +44490,7 @@
1732730880,1732737023,IN
1732737024,1732740095,CN
1732740096,1732741119,SG
-1732741120,1732741631,KR
-1732741632,1732742143,HK
+1732741120,1732742143,KR
1732742144,1732743167,TW
1732743168,1732744191,CN
1732744192,1732746239,HK
@@ -44474,7 +44711,9 @@
1733016576,1733017599,MY
1733017600,1733019647,IN
1733019648,1733020159,TH
-1733020160,1733021695,AU
+1733020160,1733020415,AU
+1733020416,1733020671,IN
+1733020672,1733021695,AU
1733021696,1733022719,ID
1733022720,1733023743,JP
1733023744,1733024767,SG
@@ -44626,6 +44865,170 @@
1733175296,1733176319,HK
1733176320,1733176831,ID
1733176832,1733177087,IN
+1733177088,1733177855,MY
+1733177856,1733178111,AU
+1733178112,1733178367,US
+1733178368,1733179391,BD
+1733179392,1733183487,CN
+1733183488,1733184511,ID
+1733184512,1733185535,VN
+1733185536,1733186559,ID
+1733186560,1733189631,VN
+1733189632,1733192447,ID
+1733192448,1733192703,SE
+1733192704,1733193215,AU
+1733193216,1733193471,ID
+1733193472,1733193727,BT
+1733193728,1733194751,ID
+1733194752,1733195263,BT
+1733195264,1733195775,JP
+1733195776,1733196799,US
+1733196800,1733197823,CN
+1733197824,1733198847,KH
+1733198848,1733199359,KR
+1733199360,1733199871,PK
+1733199872,1733200127,AU
+1733200128,1733200383,IN
+1733200384,1733202943,ID
+1733202944,1733204223,IN
+1733204224,1733204479,AU
+1733204480,1733204991,IN
+1733204992,1733205503,AU
+1733205504,1733205759,TH
+1733205760,1733206015,IN
+1733206016,1733207039,BD
+1733207040,1733209087,IN
+1733209088,1733211135,CN
+1733211136,1733212415,IN
+1733212416,1733212671,AU
+1733212672,1733213183,IN
+1733213184,1733214207,BD
+1733214208,1733214719,ID
+1733214720,1733214975,AU
+1733214976,1733215231,ID
+1733215232,1733216255,CN
+1733216256,1733218303,IN
+1733218304,1733221375,ID
+1733221376,1733221631,AU
+1733221632,1733221887,IN
+1733221888,1733221904,BT
+1733221905,1733222399,PH
+1733222400,1733223423,BD
+1733223424,1733224447,CN
+1733224448,1733225471,ID
+1733225472,1733226751,IN
+1733226752,1733227007,AU
+1733227008,1733227519,TH
+1733227520,1733228543,IN
+1733228544,1733230591,BD
+1733230592,1733231615,IN
+1733231616,1733232639,AU
+1733232640,1733233663,IN
+1733233664,1733234687,JP
+1733234688,1733235711,PK
+1733235712,1733235967,AU
+1733235968,1733236223,IN
+1733236224,1733236479,AU
+1733236480,1733236735,NZ
+1733236736,1733238783,CN
+1733238784,1733239807,IN
+1733239808,1733242879,CN
+1733242880,1733243903,JP
+1733243904,1733249023,CN
+1733249024,1733249279,AU
+1733249280,1733249791,IN
+1733249792,1733250047,AU
+1733250048,1733251071,GB
+1733251072,1733253119,CN
+1733253120,1733253631,AU
+1733253632,1733254143,ID
+1733254144,1733255167,SG
+1733255168,1733255423,ID
+1733255424,1733255679,IN
+1733255680,1733256191,ID
+1733256192,1733257215,IN
+1733257216,1733258751,AU
+1733258752,1733259263,PH
+1733259264,1733260543,IN
+1733260544,1733261055,BD
+1733261056,1733261311,IN
+1733261312,1733262335,CN
+1733262336,1733263359,AU
+1733263360,1733264383,TH
+1733264384,1733265407,KR
+1733265408,1733266431,CN
+1733266432,1733268479,VN
+1733268480,1733269503,SG
+1733269504,1733270527,ID
+1733270528,1733271295,IN
+1733271296,1733271551,AU
+1733271552,1733274623,IN
+1733274624,1733275647,AU
+1733275648,1733276671,HK
+1733276672,1733277183,AU
+1733277184,1733277695,BD
+1733277696,1733278719,HK
+1733278720,1733285887,CN
+1733285888,1733286911,BD
+1733286912,1733287935,IN
+1733287936,1733288959,BD
+1733288960,1733289471,IN
+1733289472,1733289727,NZ
+1733289728,1733289983,AU
+1733289984,1733292031,IN
+1733292032,1733293055,CN
+1733293056,1733296127,IN
+1733296128,1733297151,BD
+1733297152,1733298175,JP
+1733298176,1733299199,HK
+1733299200,1733300223,IN
+1733300224,1733301247,HK
+1733301248,1733301759,AU
+1733301760,1733302271,IN
+1733302272,1733304319,CN
+1733304320,1733305343,IN
+1733305344,1733306367,MM
+1733306368,1733307391,AU
+1733307392,1733308415,CN
+1733308416,1733309439,TH
+1733309440,1733309695,IN
+1733309696,1733309951,AU
+1733309952,1733313791,IN
+1733313792,1733314047,AU
+1733314048,1733314559,BD
+1733314560,1733315583,CN
+1733315584,1733315839,NZ
+1733315840,1733316095,ID
+1733316096,1733316351,AU
+1733316352,1733316607,IN
+1733316608,1733317631,ID
+1733317632,1733318655,ES
+1733318656,1733321727,ID
+1733321728,1733322239,TH
+1733322240,1733322751,AU
+1733322752,1733323775,JP
+1733323776,1733324799,BT
+1733324800,1733326847,IN
+1733326848,1733327871,AU
+1733327872,1733328895,HK
+1733328896,1733329151,AU
+1733329152,1733329407,TH
+1733329408,1733329919,IN
+1733329920,1733330943,HK
+1733330944,1733331967,AU
+1733331968,1733332991,PH
+1733332992,1733334015,HK
+1733334016,1733338111,IN
+1733338112,1733338367,AU
+1733338368,1733338623,ID
+1733338624,1733339135,IN
+1733339136,1733340159,HK
+1733340160,1733341183,IN
+1733341184,1733344255,CN
+1733344256,1733345279,ID
+1733345280,1733346303,CN
+1733346304,1733347327,IN
+1733347328,1733348351,CN
1740636160,1740644351,CN
1740644352,1740645375,IN
1740645376,1740647423,HK
@@ -44818,7 +45221,6 @@
1740895232,1740901375,IN
1740901376,1740901887,TH
1740901888,1740902143,ID
-1740902144,1740902399,IN
1740902400,1740903423,VN
1740903424,1740904447,US
1740904448,1740904959,NZ
@@ -44850,7 +45252,6 @@
1740932096,1740933119,IN
1740933120,1740934143,PH
1740934144,1740935167,SG
-1740935168,1740936191,IN
1740936192,1740937215,AU
1740938240,1740938495,AU
1740938496,1740938751,IN
@@ -44859,7 +45260,6 @@
1740941312,1740942335,CN
1740942336,1740943359,TW
1740944384,1740945407,US
-1740945408,1740946431,CN
1740946432,1740947967,IN
1740947968,1740948223,AU
1740948224,1740948479,MY
@@ -44924,7 +45324,6 @@
1741020160,1741022207,IN
1741022208,1741023231,CN
1741023232,1741025279,AU
-1741025280,1741026303,IN
1741026304,1741027327,TH
1741027328,1741028351,BD
1741028352,1741028519,CN
@@ -45092,7 +45491,6 @@
1741372416,1741376511,IN
1741376512,1741377535,ID
1741377536,1741380095,IN
-1741380096,1741380351,SG
1741380352,1741380607,ID
1741380608,1741381631,BD
1741381632,1741390847,CN
@@ -45119,7 +45517,7 @@
1741409280,1741411327,IN
1741411328,1741413375,CN
1741413376,1741413631,HK
-1741413632,1741413887,CN
+1741413632,1741413887,SG
1741413888,1741414399,HK
1741414400,1741423615,IN
1741423616,1741425663,MY
@@ -45394,7 +45792,7 @@
1741756416,1741756927,AU
1741756928,1741757439,IN
1741757440,1741758463,HK
-1741758464,1741759487,PK
+1741758464,1741759487,AU
1741759488,1741760511,IN
1741760512,1741761535,HK
1741761536,1741762559,AU
@@ -45457,9 +45855,9 @@
1741815808,1741816831,CN
1741816832,1741817855,PK
1741817856,1741818367,PH
-1741818368,1741818879,AU
-1741818880,1741819391,PK
-1741819392,1741819903,US
+1741818368,1741819135,AU
+1741819136,1741819391,PK
+1741819392,1741819903,AU
1741819904,1741820927,BD
1741820928,1741821951,PH
1741821952,1741822975,AU
@@ -45826,14 +46224,8 @@
1742257152,1742257407,ID
1742257408,1742257663,NZ
1742257664,1742258175,AU
-1742258176,1742259454,US
-1742259455,1742259455,AU
-1742259456,1742259710,US
-1742259711,1742259711,AU
-1742259712,1742259966,US
-1742259967,1742259967,AU
-1742259968,1742260222,US
-1742260223,1742260223,AU
+1742258176,1742259199,US
+1742259200,1742260223,AU
1742260224,1742260735,IN
1742260736,1742261247,KR
1742261248,1742264319,IN
@@ -45894,7 +46286,8 @@
1742402560,1742407167,IN
1742407168,1742407423,ID
1742407424,1742407679,AU
-1742407680,1742411263,IN
+1742407680,1742410751,IN
+1742410752,1742411263,SG
1742411264,1742411775,GB
1742411776,1742415871,CN
1742415872,1742419967,IN
@@ -46218,7 +46611,9 @@
1742946048,1742947327,AU
1742947328,1742948351,IN
1742948352,1742951423,CN
-1742951424,1742953471,HK
+1742951424,1742952703,HK
+1742952704,1742952704,SG
+1742952705,1742953471,HK
1742953472,1742954495,US
1742954496,1742955519,IN
1742955520,1742956543,CN
@@ -46327,7 +46722,6 @@
1743062528,1743063039,AU
1743063040,1743064063,SG
1743064064,1743064575,ID
-1743064576,1743065087,IN
1743065088,1743066111,TW
1743066112,1743067135,CN
1743067136,1743068159,IN
@@ -46504,8 +46898,7 @@
1743240192,1743241215,SG
1743241216,1743242239,JP
1743242240,1743244287,ID
-1743244288,1743244799,AU
-1743244800,1743245311,AF
+1743244288,1743245311,AU
1743245312,1743248383,IN
1743248384,1743248895,SG
1743248896,1743249407,IN
@@ -46627,7 +47020,7 @@
1743359488,1743361023,ID
1743361024,1743362047,AU
1743362048,1743364095,ID
-1743364096,1743365119,IN
+1743364096,1743364607,IN
1743365120,1743366143,HK
1743366144,1743367167,IN
1743367168,1743368191,SG
@@ -46794,7 +47187,7 @@
1743571200,1743571455,ID
1743571456,1743571967,AU
1743571968,1743574015,IN
-1743574016,1743575039,US
+1743574528,1743574783,US
1743575040,1743576063,HK
1743576064,1743577087,CN
1743577088,1743578111,JP
@@ -46877,7 +47270,7 @@
1743702016,1743703039,ID
1743703040,1743704063,CN
1743704064,1743706111,VN
-1743706112,1743708159,IN
+1743707136,1743708159,IN
1743708160,1743709183,HK
1743709184,1743711231,IN
1743711232,1743712255,JP
@@ -46917,7 +47310,7 @@
1743748608,1743748863,HK
1743748864,1743749119,MY
1743749120,1743751167,AU
-1743751168,1743755263,IN
+1743751168,1743754239,IN
1743755264,1743757311,CN
1743757312,1743758335,TO
1743758336,1743758591,HK
@@ -46944,7 +47337,7 @@
1743783936,1743784959,IN
1743784960,1743785983,JP
1743785984,1743787007,CN
-1743787008,1743789055,JP
+1743787008,1743788031,JP
1743789056,1743790079,KR
1743790080,1743791103,IN
1743791104,1743792127,CN
@@ -47076,7 +47469,7 @@
1743929344,1743930367,CN
1743930368,1743931391,NZ
1743931392,1743932415,HK
-1743932416,1743933439,IN
+1743932672,1743932927,IN
1743933440,1743934463,AU
1743934464,1743934975,ID
1743934976,1743935487,IN
@@ -47351,7 +47744,6 @@
1744214016,1744216063,CN
1744216064,1744217087,HK
1744217088,1744218111,JP
-1744218112,1744218367,AU
1744218368,1744218623,ID
1744218624,1744219135,IN
1744219136,1744220159,KR
@@ -47508,7 +47900,6 @@
1744367616,1744368639,HK
1744368640,1744369663,IN
1744369664,1744369919,ID
-1744369920,1744370175,AU
1744370432,1744370687,JP
1744370688,1744371711,HK
1744371712,1744372735,BD
@@ -47712,7 +48103,7 @@
1744590080,1744590335,ID
1744590336,1744590591,IN
1744590592,1744590847,AU
-1744590848,1744591871,HK
+1744590848,1744591871,DE
1744591872,1744592895,IN
1744592896,1744593919,CN
1744593920,1744594431,ID
@@ -47999,7 +48390,52 @@
1747735744,1747736063,US
1747736064,1747736319,IE
1747736320,1747736575,HK
-1747736576,1747738815,US
+1747736576,1747736639,US
+1747736640,1747736671,IE
+1747736672,1747736767,US
+1747736768,1747736799,HK
+1747736800,1747736831,JP
+1747736832,1747736863,US
+1747736864,1747736895,SG
+1747736896,1747737055,US
+1747737056,1747737119,GB
+1747737120,1747737183,US
+1747737184,1747737215,AU
+1747737216,1747737247,US
+1747737248,1747737279,KR
+1747737280,1747737311,NL
+1747737312,1747737407,US
+1747737408,1747737439,IE
+1747737440,1747737535,US
+1747737536,1747737567,HK
+1747737568,1747737631,JP
+1747737632,1747737663,SG
+1747737664,1747737727,US
+1747737728,1747737791,IN
+1747737792,1747737823,IE
+1747737824,1747737855,US
+1747737856,1747737887,NL
+1747737888,1747737951,CA
+1747737952,1747738015,AU
+1747738016,1747738047,US
+1747738048,1747738079,NL
+1747738080,1747738111,IN
+1747738112,1747738143,US
+1747738144,1747738159,IE
+1747738160,1747738207,US
+1747738208,1747738223,HK
+1747738224,1747738255,JP
+1747738256,1747738271,SG
+1747738272,1747738303,US
+1747738304,1747738335,IN
+1747738336,1747738367,KR
+1747738368,1747738383,US
+1747738384,1747738415,CA
+1747738416,1747738447,AU
+1747738448,1747738463,US
+1747738464,1747738479,NL
+1747738480,1747738495,IN
+1747738496,1747738815,US
1747738816,1747739135,SG
1747739136,1747740159,US
1747740160,1747740671,AU
@@ -48133,10 +48569,12 @@
1749172224,1749188607,NL
1749188608,1749196799,US
1749196800,1749204991,NL
-1749204992,1749217279,US
-1749217280,1749237759,NL
+1749204992,1749221375,US
+1749221376,1749237759,NL
1749237760,1749327871,US
-1749327872,1749344255,NL
+1749327872,1749336063,NL
+1749336064,1749340159,US
+1749340160,1749344255,NL
1749344256,1749364735,US
1749364736,1749389311,NL
1749389312,1749397503,US
@@ -48157,13 +48595,9 @@
1749516800,1749517055,NL
1749517056,1749517311,US
1749517312,1749518335,NL
-1749518336,1749519871,US
-1749519872,1749520383,NL
-1749520384,1749528575,US
-1749528576,1749539327,NL
-1749539328,1749540863,US
-1749540864,1749549055,NL
-1749549056,1749567121,US
+1749518336,1749537791,US
+1749537792,1749539327,NL
+1749539328,1749567121,US
1749567122,1749567122,AU
1749567123,1749567130,US
1749567131,1749567131,AU
@@ -48460,7 +48894,9 @@
1753309184,1753317375,CA
1753317376,1753341951,US
1753341952,1753346047,CA
-1753346048,1753483263,US
+1753346048,1753481727,US
+1753481728,1753481983,SG
+1753481984,1753483263,US
1753483264,1753483519,IE
1753483520,1753483775,IL
1753483776,1753484607,US
@@ -48514,7 +48950,9 @@
1753735168,1753743359,IE
1753743360,1754136575,US
1754136576,1754169343,CA
-1754169344,1754206719,US
+1754169344,1754206335,US
+1754206336,1754206463,WS
+1754206464,1754206719,US
1754206720,1754206975,GW
1754206976,1754207231,RW
1754207232,1754207487,GA
@@ -48565,7 +49003,15 @@
1754258432,1754258687,MG
1754258688,1754258943,US
1754258944,1754259199,TN
-1754259200,1754333183,US
+1754259200,1754282967,US
+1754282968,1754282975,SE
+1754282976,1754289495,US
+1754289496,1754289503,NO
+1754289504,1754307895,US
+1754307896,1754307903,SE
+1754307904,1754308951,US
+1754308952,1754308959,SE
+1754308960,1754333183,US
1754333184,1754337279,CA
1754337280,1754394367,US
1754394368,1754394623,CA
@@ -48889,11 +49335,7 @@
1757552640,1757560831,CA
1757560832,1757596415,US
1757596416,1757596671,AU
-1757596672,1757597695,US
-1757597696,1757598719,GB
-1757598720,1757598975,US
-1757598976,1757599743,GB
-1757599744,1757642751,US
+1757596672,1757642751,US
1757642752,1757675519,CA
1757675520,1757916815,US
1757916816,1757916816,AU
@@ -49106,11 +49548,17 @@
1759535104,1759543295,CA
1759543296,1759547391,US
1759547392,1759548415,NL
-1759548416,1759709183,US
+1759548416,1759707735,US
+1759707736,1759707743,NO
+1759707744,1759709183,US
1759709184,1759709439,LT
-1759709440,1759727103,US
+1759709440,1759721831,US
+1759721832,1759721839,NO
+1759721840,1759727103,US
1759727104,1759727359,IN
-1759727360,1760047103,US
+1759727360,1759748647,US
+1759748648,1759748655,SE
+1759748656,1760047103,US
1760047104,1760051199,CA
1760051200,1760083967,US
1760083968,1760086015,SE
@@ -49166,7 +49614,7 @@
1760818432,1760818687,MX
1760818688,1760818943,AW
1760818944,1760819199,SE
-1760819200,1760819455,ES
+1760819200,1760819455,IT
1760819456,1760819711,GB
1760819712,1760819967,MA
1760819968,1760820223,HK
@@ -49330,7 +49778,9 @@
1761489920,1761499135,US
1761499136,1761501183,CA
1761501184,1761501695,VG
-1761501696,1761507615,US
+1761501696,1761505279,US
+1761505280,1761507327,HK
+1761507328,1761507615,US
1761507616,1761507711,GB
1761507712,1761508351,US
1761509376,1761515519,US
@@ -49358,7 +49808,9 @@
1761601536,1761602559,VC
1761602560,1761606655,US
1761606656,1761607679,LC
-1761607680,1762656255,ZA
+1761607680,1762613861,ZA
+1762613862,1762613862,US
+1762613863,1762656255,ZA
1762656256,1762660351,MU
1762660352,1762661375,KE
1762661376,1762661887,MU
@@ -49520,9 +49972,7 @@
1795555840,1795555855,CA
1795555856,1795556351,US
1795556352,1795556607,CA
-1795556608,1795557375,US
-1795557376,1795557631,IN
-1795557632,1795559423,US
+1795556608,1795559423,US
1795559424,1795559679,AR
1795559680,1795560447,US
1795560448,1795560959,CA
@@ -49530,9 +49980,7 @@
1795561248,1795561343,CA
1795561344,1795561983,US
1795561984,1795562495,CA
-1795562496,1795562911,US
-1795562912,1795562943,CA
-1795562944,1795563007,US
+1795562496,1795563007,US
1795563008,1795563519,CA
1795563520,1795564031,US
1795564032,1795564543,CA
@@ -49565,8 +50013,8 @@
1805016320,1805016575,RU
1805016576,1805016831,NZ
1805016832,1805017087,TR
-1805017088,1805021183,CN
-1805021184,1805033983,US
+1805017088,1805018111,CN
+1805018112,1805033983,US
1805033984,1805038591,TR
1805038592,1805046271,US
1805046272,1805046783,GB
@@ -49576,17 +50024,29 @@
1805049856,1805058047,CA
1805058048,1805144063,US
1805144064,1805148159,CA
-1805148160,1805165823,US
+1805148160,1805150463,US
+1805150464,1805150719,GB
+1805150720,1805165823,US
1805165824,1805166079,IN
1805166080,1805166335,US
1805166336,1805166591,IN
1805166592,1805167103,US
1805167104,1805167359,FR
-1805167360,1805171231,US
+1805167360,1805168855,US
+1805168856,1805168863,SE
+1805168864,1805171231,US
1805171232,1805171239,CA
1805171240,1805171607,US
1805171608,1805171615,CA
-1805171616,1805190399,US
+1805171616,1805185159,US
+1805185160,1805185167,FI
+1805185168,1805185959,US
+1805185960,1805185967,NO
+1805185968,1805187111,US
+1805187112,1805187119,NO
+1805187120,1805188375,US
+1805188376,1805188383,FI
+1805188384,1805190399,US
1805190400,1805190655,ES
1805190656,1805190911,DE
1805190912,1805194239,US
@@ -49653,7 +50113,8 @@
1805752576,1805753087,CA
1805753088,1805754111,US
1805754112,1805754367,CA
-1805754368,1806131199,US
+1805754368,1805756415,US
+1805756928,1806131199,US
1806132224,1806132479,US
1806132608,1806132735,US
1806134784,1806135039,US
@@ -49670,7 +50131,9 @@
1806174208,1806174463,BR
1806174464,1806180351,US
1806180352,1806180607,AU
-1806180608,1806183679,US
+1806180608,1806182911,US
+1806182912,1806183167,BR
+1806183168,1806183679,US
1806183680,1806183935,NL
1806183936,1806184447,US
1806184448,1806184959,AU
@@ -49694,14 +50157,13 @@
1806925824,1806958591,CA
1806958592,1807056895,US
1807056896,1807057151,AU
-1807057152,1807057663,US
1807057664,1807057919,GB
1807057920,1807058431,US
1807058688,1807058943,US
1807058944,1807059199,GB
1807059200,1807059455,NL
-1807059456,1807060991,US
1807060992,1807062015,CA
+1807062016,1807062271,US
1807063040,1807072255,US
1807072256,1807072767,CA
1807072768,1807548415,US
@@ -49823,22 +50285,16 @@
1822553856,1822554111,HK
1822554112,1822572543,US
1822572544,1822605311,CA
-1822605312,1822609407,US
-1822609408,1822609663,CA
-1822609664,1822612991,US
+1822605312,1822612991,US
1822612992,1822613503,HK
-1822613504,1822613759,US
-1822613760,1822614015,SG
+1822613504,1822614015,US
1822614016,1822614527,JP
1822614528,1822615039,FR
-1822615040,1822615551,DE
-1822615552,1822617343,US
+1822615040,1822617343,US
1822617344,1822618367,CA
1822618368,1822619391,US
1822619392,1822620671,AU
-1822620672,1822620927,US
-1822620928,1822621183,DE
-1822621184,1822654463,US
+1822620672,1822654463,US
1822654464,1822662143,CA
1822662144,1822662399,US
1822662400,1822670847,CA
@@ -49867,13 +50323,21 @@
1823211520,1823342591,CA
1823342592,1823346687,US
1823346688,1823350783,CA
-1823350784,1823361791,US
+1823350784,1823355647,US
+1823355648,1823355903,NL
+1823355904,1823356159,US
+1823356160,1823356415,NL
+1823356416,1823356671,US
+1823356672,1823356927,NL
+1823356928,1823361791,US
1823361792,1823362303,CA
1823362304,1823375359,US
1823375360,1823379455,CA
1823379456,1823383551,US
1823383552,1823387647,CA
-1823387648,1823428607,US
+1823387648,1823422463,US
+1823422464,1823423487,LU
+1823423488,1823428607,US
1823428608,1823432703,CA
1823432704,1823440895,US
1823440896,1823444991,CA
@@ -50006,9 +50470,9 @@
1833315968,1833316351,IM
1833316352,1833318399,DK
1833318400,1833320447,GB
-1833320448,1833320959,AE
-1833320960,1833321215,IQ
-1833321216,1833322495,AE
+1833320448,1833321215,IQ
+1833321216,1833321471,AE
+1833321472,1833322495,IQ
1833322496,1833324543,IT
1833324544,1833326591,NO
1833326592,1833327103,GB
@@ -50156,7 +50620,8 @@
1834876928,1834885119,RU
1834885120,1834893311,FR
1834893312,1834901503,RU
-1834901504,1834909695,RS
+1834901504,1834902527,XK
+1834902528,1834909695,RS
1834909696,1834913791,GB
1834913792,1834917887,RO
1834917888,1834921983,UA
@@ -50273,9 +50738,7 @@
1835922648,1835922655,IT
1835922656,1835922671,GB
1835922672,1835922679,IT
-1835922680,1835923007,GB
-1835923008,1835923015,IT
-1835923016,1835923151,GB
+1835922680,1835923151,GB
1835923152,1835923159,IT
1835923160,1835923511,GB
1835923512,1835923527,IT
@@ -50283,9 +50746,9 @@
1835923680,1835923687,IT
1835923688,1835923719,GB
1835923720,1835923727,IT
-1835923728,1835923855,GB
-1835923856,1835923863,IT
-1835923864,1835924375,GB
+1835923728,1835924287,GB
+1835924288,1835924295,IT
+1835924296,1835924375,GB
1835924376,1835924383,IT
1835924384,1835925007,GB
1835925008,1835925015,IT
@@ -50739,11 +51202,11 @@
1841926101,1841930239,NL
1841930240,1841938431,KG
1841938432,1841946623,RU
-1841946624,1841946658,PT
+1841946624,1841946658,US
1841946659,1841946659,UA
-1841946660,1841948671,PT
+1841946660,1841948671,US
1841948672,1841948927,UA
-1841948928,1841954815,PT
+1841948928,1841954815,US
1841954816,1841971199,RU
1841971200,1841979391,CZ
1841979392,1841981439,NL
@@ -50827,7 +51290,7 @@
1842213632,1842213887,SK
1842213888,1842214911,CZ
1842214912,1842216959,RU
-1842216960,1842225151,RO
+1842216960,1842225151,KZ
1842225152,1842233343,UA
1842233344,1842241535,SA
1842241536,1842249727,RS
@@ -51577,9 +52040,7 @@
1897170944,1897172991,ID
1897172992,1897175039,PH
1897175040,1897176063,JP
-1897176064,1897176575,SG
-1897176576,1897176831,JP
-1897176832,1897177087,US
+1897176064,1897177087,SG
1897177088,1897201663,JP
1897201664,1897209855,KR
1897209856,1897213951,AU
@@ -51941,7 +52402,6 @@
1934901248,1934917631,LA
1934917632,1934925823,MV
1934925824,1934927871,KR
-1934927872,1934929919,PH
1934929920,1934931967,VN
1934931968,1934934015,JP
1934934016,1934942207,CN
@@ -52344,7 +52804,8 @@
1964174336,1964174591,SG
1964174621,1964174621,TW
1964175360,1964179455,GB
-1964179456,1964244991,TW
+1964179456,1964179456,AU
+1964179457,1964244991,TW
1964244992,1964249087,AU
1964249088,1964253183,PK
1964253184,1964255231,WF
@@ -52585,7 +53046,9 @@
1992364032,1992368127,HK
1992368128,1992380415,CN
1992380416,1992384511,HK
-1992384512,1992406228,CN
+1992384512,1992398967,CN
+1992398968,1992398968,HK
+1992398969,1992406228,CN
1992406229,1992406229,HK
1992406230,1992417279,CN
1992417280,1992417535,HK
@@ -52836,7 +53299,9 @@
2001926144,2001928191,KH
2001928192,2001993727,JP
2001993728,2002518015,CN
-2002518016,2002780159,PH
+2002518016,2002575325,PH
+2002575326,2002575326,US
+2002575327,2002780159,PH
2002780160,2003304447,CN
2003304448,2003566591,JP
2003566592,2003697663,CN
@@ -52873,7 +53338,9 @@
2007065600,2007066623,SG
2007066624,2007070719,JP
2007070720,2007498751,CN
-2007498752,2008023039,JP
+2007498752,2007499008,JP
+2007499009,2007499009,PH
+2007499010,2008023039,JP
2008023040,2009071615,CN
2009071616,2011168767,KR
2011168768,2011205631,NZ
@@ -53075,7 +53542,7 @@
2033625088,2033627135,HK
2033627136,2033629183,CN
2033629184,2033630207,AU
-2033630208,2033631231,CN
+2033630208,2033631231,HK
2033631232,2033647615,KR
2033647616,2033663999,CN
2033664000,2033696767,KR
@@ -53446,7 +53913,7 @@
2070677504,2070679551,ID
2070679552,2070683647,KR
2070683648,2070691839,IN
-2070691840,2070700031,AU
+2070692864,2070693887,AU
2070700032,2070702079,ID
2070702080,2070703103,AU
2070703104,2070704127,HK
@@ -53532,7 +53999,6 @@
2079981568,2080112639,KR
2080112640,2080145407,TW
2080145408,2080178175,IN
-2080178176,2080243711,CN
2080243712,2080260095,JP
2080260096,2080268287,KR
2080268288,2080270335,CN
@@ -53774,7 +54240,7 @@
2101116928,2101149695,PH
2101149696,2101182463,KR
2101182464,2101231615,CN
-2101231616,2101239807,AU
+2101234688,2101235711,AU
2101239808,2101270527,IN
2101270528,2101272575,KR
2101272576,2101276671,TW
@@ -53790,7 +54256,9 @@
2103967744,2105540607,CN
2105540608,2107637759,KR
2107637760,2108162047,ID
-2108162048,2108227583,AU
+2108162048,2108218879,AU
+2108218880,2108219391,NZ
+2108219392,2108227583,AU
2108227584,2108293119,CN
2108293120,2108358655,JP
2108358656,2108424191,CN
@@ -54253,7 +54721,8 @@
2182086656,2182610943,US
2182610944,2182676479,GB
2182676480,2182742015,IT
-2182742016,2182873087,US
+2182742016,2182807551,IN
+2182807552,2182873087,US
2182873088,2182938623,SE
2182938624,2183135231,US
2183135232,2183200767,GB
@@ -54421,9 +54890,7 @@
2193707496,2193707503,IT
2193707504,2193707655,GB
2193707656,2193707663,IT
-2193707664,2193707727,GB
-2193707728,2193707735,IT
-2193707736,2193707751,GB
+2193707664,2193707751,GB
2193707752,2193707759,IT
2193707760,2193707767,GB
2193707768,2193707775,IT
@@ -54435,9 +54902,7 @@
2193708376,2193708383,IT
2193708384,2193708863,GB
2193708864,2193708871,IT
-2193708872,2193708967,GB
-2193708968,2193708975,IT
-2193708976,2193709199,GB
+2193708872,2193709199,GB
2193709200,2193709215,IT
2193709216,2193711103,GB
2193711104,2193713151,DE
@@ -54521,8 +54986,7 @@
2197858448,2197859327,CO
2197859328,2197860351,CL
2197860352,2197865471,BR
-2197865472,2197865983,ES
-2197865984,2197866495,AR
+2197865472,2197866495,ES
2197866496,2197869567,BR
2197869568,2197870591,UY
2197870592,2197874687,BR
@@ -54804,11 +55268,15 @@
2214068224,2214133759,JP
2214133760,2214264831,US
2214264832,2214330367,GB
-2214330368,2214399047,US
+2214330368,2214398975,US
+2214398976,2214398983,CN
+2214398984,2214399047,US
2214399048,2214399055,IE
-2214399056,2214399071,US
+2214399056,2214399071,CN
2214399072,2214399135,SG
-2214399136,2214399295,US
+2214399136,2214399215,US
+2214399216,2214399223,CN
+2214399224,2214399295,US
2214399296,2214399303,SG
2214399304,2214399887,US
2214399888,2214399903,IE
@@ -55050,23 +55518,30 @@
2230685856,2230685871,HK
2230685872,2230688255,US
2230688256,2230688767,SG
-2230688768,2230689791,BR
-2230689792,2230689999,SG
+2230688768,2230688895,BR
+2230688896,2230688943,US
+2230688944,2230688991,BR
+2230688992,2230689791,US
+2230689792,2230689807,SG
+2230689808,2230689823,US
+2230689824,2230689999,SG
2230690000,2230690007,AU
-2230690008,2230690463,SG
+2230690008,2230690047,SG
+2230690048,2230690463,US
2230690464,2230690639,AU
-2230690640,2230690679,SG
+2230690640,2230690679,US
2230690680,2230690823,AU
-2230690824,2230690831,SG
+2230690824,2230690831,US
2230690832,2230690863,AU
-2230690864,2230690959,SG
+2230690864,2230690959,US
2230690960,2230690975,AU
2230690976,2230691007,SG
2230691008,2230691039,MY
2230691040,2230691071,AU
2230691072,2230691199,SG
2230691200,2230691215,AU
-2230691216,2230693887,SG
+2230691216,2230691231,SG
+2230691232,2230693887,US
2230693888,2230693919,NL
2230693920,2230693951,US
2230693952,2230693967,IE
@@ -55259,10 +55734,8 @@
2255814656,2255880191,CA
2255880192,2255945727,US
2255945728,2255998975,DE
-2255998976,2256000031,FR
-2256000032,2256000047,DE
-2256000048,2256000063,FR
-2256000064,2256011263,DE
+2255998976,2256003071,FR
+2256003072,2256011263,DE
2256011264,2256535551,US
2256535552,2256543743,GB
2256543744,2256551935,US
@@ -55590,7 +56063,9 @@
2266694656,2266694911,SG
2266694912,2270442495,US
2270442496,2270443519,NL
-2270443520,2270463999,US
+2270443520,2270455807,US
+2270455808,2270456831,CA
+2270456832,2270463999,US
2270464000,2270465023,CA
2270465024,2270467071,US
2270467072,2270468095,NL
@@ -55634,8 +56109,10 @@
2282226432,2282226943,US
2282227200,2282264063,US
2282264320,2282264575,US
-2282264832,2291171327,US
-2291171328,2291204095,NL
+2282264832,2283151359,US
+2283151360,2283159551,IN
+2283159552,2291142655,US
+2291142656,2291204095,NL
2291204096,2291269631,PR
2291269632,2291400703,US
2291400704,2291466239,GB
@@ -55672,7 +56149,8 @@
2296512512,2296774655,US
2296774656,2296840191,DE
2296840192,2296905727,NL
-2296905728,2297167871,US
+2296905728,2297036799,IN
+2297036800,2297167871,US
2297167872,2297233407,AU
2297233408,2297237503,US
2297237504,2297237759,BE
@@ -55767,11 +56245,15 @@
2303331904,2303331967,ES
2303331968,2303332799,FR
2303332800,2303332831,GB
-2303332832,2303334271,FR
+2303332832,2303332967,FR
+2303332968,2303332971,GB
+2303332972,2303334271,FR
2303334272,2303334399,ES
2303334400,2303340639,FR
2303340640,2303340671,FI
-2303340672,2303342459,FR
+2303340672,2303341283,FR
+2303341284,2303341287,FI
+2303341288,2303342459,FR
2303342460,2303342463,DE
2303342464,2303343039,FR
2303343040,2303343103,PT
@@ -55793,13 +56275,21 @@
2303353216,2303353343,GB
2303353344,2303353783,FR
2303353784,2303353787,GB
-2303353788,2303361079,FR
+2303353788,2303354639,FR
+2303354640,2303354643,GB
+2303354644,2303361079,FR
2303361080,2303361087,GB
2303361088,2303361535,FR
2303361536,2303361599,GB
2303361600,2303362063,FR
2303362064,2303362079,DE
-2303362080,2303377311,FR
+2303362080,2303365279,FR
+2303365280,2303365295,GB
+2303365296,2303374745,FR
+2303374746,2303374746,ES
+2303374747,2303376807,FR
+2303376808,2303376815,ES
+2303376816,2303377311,FR
2303377312,2303377343,GB
2303377344,2303382879,FR
2303382880,2303382895,ES
@@ -56309,9 +56799,15 @@
2323315712,2323316735,MX
2323316736,2323382271,US
2323382272,2323447807,NO
-2323447808,2323650007,US
+2323447808,2323648007,US
+2323648008,2323648015,FI
+2323648016,2323649823,US
+2323649824,2323649831,NO
+2323649832,2323650007,US
2323650008,2323650015,RO
-2323650016,2323690495,US
+2323650016,2323650183,US
+2323650184,2323650191,FI
+2323650192,2323690495,US
2323690496,2323690751,IN
2323690752,2323699711,US
2323699712,2323700735,NL
@@ -56588,7 +57084,10 @@
2334064640,2334916607,US
2334916608,2334982143,AU
2334982144,2335113215,US
-2335113216,2335178751,NL
+2335113216,2335129599,NL
+2335129600,2335145983,ES
+2335145984,2335154175,NL
+2335154176,2335178751,DE
2335178752,2335244287,CA
2335244288,2335309823,US
2335309824,2335375359,DE
@@ -56598,13 +57097,17 @@
2335637504,2335768575,US
2335768576,2335834111,CA
2335834112,2335899647,SE
-2335899648,2335932415,IN
+2335899648,2335924223,IN
+2335924224,2335928319,SG
+2335928320,2335932415,IN
2335932416,2335940607,DE
2335940608,2335948799,GB
2335948800,2335952895,SG
2335952896,2335954943,DE
2335954944,2335965183,SG
-2335965184,2336161791,US
+2335965184,2336010239,US
+2336010240,2336014335,PR
+2336014336,2336161791,US
2336161792,2336227327,NL
2336292864,2336358399,US
2336358400,2336411647,FI
@@ -56630,7 +57133,7 @@
2338324480,2338390015,SE
2338390016,2338455551,FI
2338455552,2338521087,NO
-2338521088,2338553855,US
+2338521088,2338553855,SG
2338553856,2338586623,AU
2338586624,2338652159,FR
2338652160,2338717695,JP
@@ -56889,9 +57392,8 @@
2372218880,2372222207,FR
2372222208,2372222975,CH
2372222976,2372223487,NL
-2372223488,2372223999,FR
-2372224000,2372224255,TW
-2372224256,2372224511,DE
+2372223488,2372224255,FR
+2372224256,2372224511,US
2372224512,2372225023,GB
2372225024,2372225791,US
2372225792,2372226047,NL
@@ -56899,8 +57401,10 @@
2372226304,2372226559,SG
2372226560,2372227583,SE
2372227584,2372228607,KR
-2372228608,2372229631,PL
-2372229632,2372230655,AT
+2372228608,2372229375,US
+2372229376,2372229631,PL
+2372229632,2372230143,US
+2372230144,2372230655,AT
2372230656,2372231679,CZ
2372231680,2372232191,GB
2372232192,2372233215,CL
@@ -57058,7 +57562,9 @@
2379284480,2380201983,US
2380201984,2380267519,KR
2380267520,2380398591,US
-2380398592,2380464127,IL
+2380398592,2380434431,IL
+2380434432,2380435455,US
+2380435456,2380464127,IL
2380464128,2380464639,FR
2380464640,2380465151,US
2380465152,2380465407,FR
@@ -57129,7 +57635,11 @@
2382684160,2382692351,US
2382692352,2383085567,CA
2383085568,2383151103,US
-2383151104,2385903615,CA
+2383151104,2385031167,CA
+2385031168,2385032191,BR
+2385032192,2385032703,CA
+2385032704,2385035263,BR
+2385035264,2385903615,CA
2385903616,2385908735,US
2385908736,2385909759,VG
2385909760,2385915903,US
@@ -57715,9 +58225,7 @@
2426732544,2426798079,FR
2426798080,2426942463,US
2426942464,2426943487,CA
-2426943488,2426962911,US
-2426962912,2426962919,GB
-2426962920,2427224063,US
+2426943488,2427224063,US
2427224064,2427256831,CA
2427256832,2427322367,GB
2427322368,2427453439,US
@@ -57741,18 +58249,15 @@
2429353984,2429419519,AU
2429419520,2429485055,RU
2429485056,2429550591,US
-2429550592,2429554687,AT
-2429554688,2429556735,US
-2429556736,2429566975,AT
-2429566976,2429575167,US
+2429550592,2429566975,AT
+2429566976,2429573119,US
+2429573120,2429573375,CA
+2429573376,2429575167,US
2429575168,2429577215,CA
2429577216,2429579263,US
2429579264,2429580287,CA
2429580288,2429583359,US
-2429583360,2429591551,AT
-2429591552,2429599743,US
-2429599744,2429607935,AT
-2429607936,2429616127,US
+2429583360,2429616127,AT
2429616128,2429640703,NL
2429640704,2429648895,RU
2429648896,2429681663,NL
@@ -57762,7 +58267,11 @@
2429878272,2429943807,JP
2429943808,2430009343,HK
2430009344,2430140415,US
-2430140416,2430205951,CA
+2430140416,2430152552,CA
+2430152553,2430152553,US
+2430152554,2430168575,CA
+2430168576,2430168591,US
+2430168592,2430205951,CA
2430271488,2430918655,US
2430918656,2430922751,BR
2430922752,2432172031,US
@@ -57956,7 +58465,9 @@
2454978560,2455175167,US
2455175168,2455240703,GB
2455240704,2455244799,US
-2455244800,2455245055,AU
+2455244800,2455244943,AU
+2455244944,2455244944,US
+2455244945,2455245055,AU
2455245056,2455245311,US
2455245312,2455245567,AU
2455245568,2455245823,NL
@@ -58294,7 +58805,9 @@
2465683456,2465685503,FR
2465685504,2465690367,DE
2465690368,2465693695,IT
-2465693696,2465726463,NO
+2465693696,2465701887,NO
+2465701888,2465718271,SE
+2465718272,2465726463,NO
2465726464,2465791999,CH
2465792000,2465857535,FR
2465857536,2465923071,US
@@ -58382,11 +58895,11 @@
2471219456,2471219679,FR
2471219691,2471219691,GB
2471219712,2471223295,IL
-2471223296,2471227391,CH
-2471227392,2471231487,US
+2471223296,2471231487,US
2471231488,2471297023,AU
2471297024,2471362559,GB
-2471428096,2471690239,US
+2471428096,2471624703,US
+2471624704,2471690239,RO
2471690240,2471821311,ES
2471821312,2471886847,US
2471886848,2472083455,CH
@@ -58516,7 +59029,11 @@
2486697984,2486763519,ES
2486763520,2486927359,US
2486927360,2486928127,CA
-2486928128,2486949887,US
+2486928128,2486928895,US
+2486928896,2486929151,CA
+2486929152,2486946815,US
+2486946816,2486947327,CA
+2486947328,2486949887,US
2486949888,2486951423,CA
2486951424,2486952959,US
2486952960,2486953471,CA
@@ -58690,7 +59207,9 @@
2500202752,2500203007,ES
2500203008,2500209663,US
2500209664,2500210687,GB
-2500210688,2500211728,US
+2500210688,2500211671,US
+2500211672,2500211679,RO
+2500211680,2500211728,US
2500211729,2500211730,SI
2500211731,2500212415,US
2500212416,2500212423,CH
@@ -58734,7 +59253,9 @@
2500289024,2500289535,FR
2500289536,2500290559,US
2500290560,2500290815,FR
-2500290816,2500292607,US
+2500290816,2500291327,US
+2500291328,2500291583,FR
+2500291584,2500292607,US
2500292608,2500296703,DE
2500296704,2500313087,US
2500313088,2500317183,AT
@@ -58746,7 +59267,9 @@
2500393984,2500394239,GB
2500394240,2500532749,US
2500532750,2500532750,GR
-2500532751,2500535399,US
+2500532751,2500535327,US
+2500535328,2500535335,IE
+2500535336,2500535399,US
2500535400,2500535407,IE
2500535408,2500536319,US
2500536320,2500538367,GB
@@ -58754,7 +59277,9 @@
2500542752,2500542755,NL
2500542756,2500544767,US
2500544768,2500545023,GR
-2500545024,2500546559,US
+2500545024,2500545703,US
+2500545704,2500545711,SE
+2500545712,2500546559,US
2500546560,2500549271,UA
2500549272,2500549279,ES
2500549280,2500550655,UA
@@ -58763,7 +59288,9 @@
2500553760,2500553767,GB
2500553768,2500554379,US
2500554380,2500554487,DE
-2500554488,2500560895,US
+2500554488,2500556295,US
+2500556296,2500556303,CZ
+2500556304,2500560895,US
2500560896,2500562943,GB
2500562944,2500562959,US
2500562960,2500562967,ES
@@ -58792,7 +59319,9 @@
2500661760,2500662271,ES
2500662272,2500663295,US
2500663296,2500664319,ES
-2500664320,2500666111,US
+2500664320,2500665087,US
+2500665088,2500665343,ES
+2500665344,2500666111,US
2500666368,2500666463,US
2500666464,2500666471,LU
2500666472,2500681759,US
@@ -58814,13 +59343,19 @@
2500723968,2500726783,GB
2500726784,2500728063,US
2500728064,2500728319,GB
-2500728320,2500739071,US
+2500728320,2500732063,US
+2500732064,2500732071,GB
+2500732072,2500739071,US
2500739072,2500740095,DE
2500740096,2500740417,US
2500740418,2500740418,DE
2500740419,2500743215,US
2500743216,2500743223,GB
-2500743224,2500984831,US
+2500743224,2500746767,US
+2500746768,2500746775,GB
+2500746776,2500748543,US
+2500748544,2500748799,ES
+2500748800,2500984831,US
2500984832,2501033983,GB
2501033984,2501574655,US
2501574656,2501640191,KZ
@@ -58830,7 +59365,8 @@
2502041600,2502045695,ES
2502045696,2502047743,US
2502047744,2502049791,ES
-2502049792,2502164479,US
+2502049792,2502098943,US
+2502098944,2502164479,IT
2502164480,2502165503,GB
2502165504,2503016447,US
2503016448,2503147519,IL
@@ -58931,7 +59467,9 @@
2505703424,2505768959,PT
2505768960,2505770495,US
2505770496,2505771007,ES
-2505771008,2505789439,US
+2505771008,2505772543,US
+2505772544,2505772799,GB
+2505772800,2505789439,US
2505789440,2505790463,FR
2505790464,2505791487,US
2505791488,2505792511,FR
@@ -58989,7 +59527,29 @@
2508109824,2508111871,DE
2508111872,2508128255,RU
2508128256,2508259327,US
-2508259328,2508324863,MY
+2508259328,2508261375,MY
+2508261376,2508262911,SG
+2508262912,2508263167,MY
+2508263168,2508263423,SG
+2508263424,2508265471,MY
+2508265472,2508266495,SG
+2508266496,2508267519,MY
+2508267520,2508269567,SG
+2508269568,2508277759,MY
+2508277760,2508280831,SG
+2508280832,2508281343,MY
+2508281344,2508282879,SG
+2508282880,2508296959,MY
+2508296960,2508297471,SG
+2508297472,2508297727,MY
+2508297728,2508298239,SG
+2508298240,2508307455,MY
+2508307456,2508308479,SG
+2508308480,2508312575,MY
+2508312576,2508313855,SG
+2508313856,2508316671,MY
+2508316672,2508320767,SG
+2508320768,2508324863,MY
2508324864,2508455935,US
2508455936,2508521471,IT
2508521472,2508587007,CH
@@ -59069,7 +59629,9 @@
2513057047,2513068287,FR
2513068288,2513068351,ES
2513068352,2513068415,GB
-2513068416,2513068631,FR
+2513068416,2513068448,FR
+2513068449,2513068449,DE
+2513068450,2513068631,FR
2513068632,2513068635,PT
2513068636,2513070559,FR
2513070560,2513070591,ES
@@ -59077,7 +59639,9 @@
2513070624,2513070655,ES
2513070656,2513071435,FR
2513071436,2513071439,NL
-2513071440,2513073375,FR
+2513071440,2513071595,FR
+2513071596,2513071599,FI
+2513071600,2513073375,FR
2513073376,2513073391,BE
2513073392,2513073791,FR
2513073792,2513073855,IT
@@ -59124,7 +59688,9 @@
2513101920,2513101951,PT
2513101952,2513102047,FR
2513102048,2513102063,ES
-2513102064,2513102899,FR
+2513102064,2513102511,FR
+2513102512,2513102515,GB
+2513102516,2513102899,FR
2513102900,2513102903,CZ
2513102904,2513103895,FR
2513103896,2513103935,PT
@@ -59197,7 +59763,9 @@
2516582400,2516647935,CN
2516647936,2522812415,JP
2522812416,2522813439,VN
-2522813440,2522816511,SG
+2522813440,2522814463,TH
+2522814464,2522815743,SG
+2522815744,2522816511,TH
2522816512,2523201535,JP
2523201536,2523267071,AU
2523267072,2523463679,US
@@ -59276,7 +59844,7 @@
2525071360,2525072383,CN
2525072384,2525073407,MN
2525073408,2525075455,IN
-2525075456,2525076479,CN
+2525075456,2525076479,HK
2525076480,2525077503,IN
2525077504,2525078527,ID
2525078528,2525083647,IN
@@ -59378,7 +59946,11 @@
2532506624,2532507647,IN
2532507648,2532573183,US
2532573184,2532638719,ES
-2532638720,2533031935,US
+2532638720,2532704255,US
+2532704256,2532769791,JP
+2532769792,2532900863,US
+2532900864,2532966399,JP
+2532966400,2533031935,US
2533031936,2533032191,HK
2533032192,2533032447,SG
2533032448,2533032703,FR
@@ -59391,7 +59963,9 @@
2533294080,2533359615,CN
2533359616,2533375999,UA
2533376000,2533392383,HU
-2533392384,2538602495,IT
+2533392384,2534823255,IT
+2534823256,2534823263,SI
+2534823264,2538602495,IT
2538602496,2538604967,FR
2538604968,2538604975,ES
2538604976,2538605271,FR
@@ -59405,7 +59979,9 @@
2538606032,2538606039,ES
2538606040,2538606043,FR
2538606044,2538606047,DE
-2538606048,2538606403,FR
+2538606048,2538606343,FR
+2538606344,2538606351,PL
+2538606352,2538606403,FR
2538606404,2538606407,GB
2538606408,2538613134,FR
2538613135,2538613135,NL
@@ -59431,7 +60007,9 @@
2538625584,2538625599,PT
2538625600,2538626687,FR
2538626688,2538626703,ES
-2538626704,2538631583,FR
+2538626704,2538629727,FR
+2538629728,2538629759,ES
+2538629760,2538631583,FR
2538631584,2538631615,FI
2538631616,2538633551,FR
2538633552,2538633567,IE
@@ -59504,7 +60082,9 @@
2538657440,2538657443,ES
2538657444,2538657967,FR
2538657968,2538657983,IE
-2538657984,2538658347,FR
+2538657984,2538658327,FR
+2538658328,2538658331,IE
+2538658332,2538658347,FR
2538658348,2538658351,DE
2538658352,2538658495,FR
2538658496,2538658499,DE
@@ -59565,6 +60145,7 @@
2547524608,2547525631,IR
2547525632,2547535871,GB
2547548160,2547580927,NO
+2547580928,2547646463,DE
2548039680,2548072320,GB
2548072321,2548072321,US
2548072322,2548563967,GB
@@ -59718,9 +60299,34 @@
2556559360,2556624895,AU
2556624896,2556690431,KR
2556690432,2556755967,US
-2556755968,2556780031,HK
+2556755968,2556757247,HK
+2556757248,2556757503,TW
+2556757504,2556757759,HK
+2556757760,2556758015,SG
+2556758016,2556761087,HK
+2556761088,2556761343,JP
+2556761344,2556762367,HK
+2556762368,2556763135,TW
+2556763136,2556763903,HK
+2556763904,2556764159,SG
+2556764160,2556764415,TW
+2556764416,2556766207,HK
+2556766208,2556766719,DE
+2556766720,2556768767,HK
+2556768768,2556769023,TW
+2556769024,2556773887,HK
+2556773888,2556774143,SG
+2556774144,2556776703,HK
+2556776704,2556776959,DE
+2556776960,2556780031,HK
2556780032,2556780799,SG
-2556780800,2556821503,HK
+2556780800,2556787967,HK
+2556787968,2556788223,JP
+2556788224,2556800511,HK
+2556800512,2556800767,TW
+2556800768,2556807423,HK
+2556807424,2556807679,JP
+2556807680,2556821503,HK
2556821504,2556887039,SG
2556887040,2556985343,HK
2556985344,2557018111,CN
@@ -59796,7 +60402,9 @@
2570125312,2570190847,BE
2570190848,2572681215,US
2572681216,2572746751,SE
-2572746752,2572947455,US
+2572746752,2572944127,US
+2572944128,2572944383,LT
+2572944384,2572947455,US
2572947456,2572950271,PL
2572950272,2572950527,ES
2572950528,2572951551,DE
@@ -59922,7 +60530,7 @@
2584741376,2584741439,AU
2584741440,2584741503,ZA
2584741504,2584741519,IE
-2584741520,2584741631,ZA
+2584741520,2584741631,DE
2584741632,2584741887,US
2584741888,2584741951,AU
2584741952,2584742143,ZA
@@ -59979,23 +60587,29 @@
2584750336,2584750591,US
2584750592,2584750655,MY
2584750656,2584750687,DE
-2584750688,2584750847,ZA
+2584750688,2584750719,ZA
+2584750720,2584750847,DE
2584750848,2584751103,US
2584751104,2584751167,AE
-2584751168,2584751359,ZA
+2584751168,2584751231,ZA
+2584751232,2584751359,DE
2584751360,2584751615,US
2584751616,2584751679,AE
-2584751680,2584751871,ZA
+2584751680,2584751743,ZA
+2584751744,2584751871,DE
2584751872,2584752127,US
2584752128,2584752191,AE
2584752192,2584752207,SE
-2584752208,2584752383,ZA
+2584752208,2584752255,ZA
+2584752256,2584752383,DE
2584752384,2584752639,US
2584752640,2584752703,AE
-2584752704,2584752895,ZA
+2584752704,2584752767,ZA
+2584752768,2584752895,DE
2584752896,2584753151,US
2584753152,2584753215,AE
-2584753216,2584753407,ZA
+2584753216,2584753279,ZA
+2584753280,2584753407,DE
2584753408,2584753663,US
2584753664,2584753727,AE
2584753728,2584753919,ZA
@@ -60092,7 +60706,9 @@
2586379264,2586480639,US
2586480640,2586484735,IL
2586484736,2586492927,GB
-2586492928,2586510335,US
+2586492928,2586509823,US
+2586509824,2586510079,ES
+2586510080,2586510335,US
2586510336,2586511359,ES
2586511360,2586544127,US
2586544128,2586546175,SE
@@ -60136,7 +60752,9 @@
2586805504,2586805759,ES
2586805760,2586806271,US
2586806272,2586807295,ES
-2586807296,2586828799,US
+2586807296,2586814463,US
+2586814464,2586816511,RO
+2586816512,2586828799,US
2586828800,2586828863,CH
2586828864,2586829311,US
2586829312,2586829823,CH
@@ -60199,8 +60817,10 @@
2587362048,2587377663,US
2587377664,2587385855,FR
2587385856,2587394047,US
-2587394048,2587399167,ES
-2587399168,2587410431,US
+2587394048,2587399423,ES
+2587399424,2587399679,US
+2587399680,2587400191,ES
+2587400192,2587410431,US
2587410432,2587418623,IT
2587418624,2587426815,US
2587426816,2587435007,GR
@@ -60232,15 +60852,17 @@
2587596800,2587598847,GB
2587598848,2587623423,US
2587623424,2587631615,BG
-2587631616,2587639807,US
+2587631616,2587631871,US
+2587631872,2587632127,ES
+2587632128,2587639807,US
2587639808,2587640063,GB
2587640064,2587648511,US
2587648512,2587649023,ES
2587649024,2587674623,US
2587674624,2587676671,IT
2587676672,2587681279,US
-2587681280,2587681791,ES
-2587681792,2587697151,US
+2587681280,2587682815,ES
+2587682816,2587697151,US
2587697152,2587697407,GB
2587697408,2587698175,US
2587698176,2587699199,GB
@@ -60370,7 +60992,9 @@
2588502016,2588503039,BI
2588503040,2588504063,LY
2588504064,2588505087,TD
-2588505088,2588506111,CG
+2588505088,2588505599,CG
+2588505600,2588505855,US
+2588505856,2588506111,CG
2588506112,2588507135,ZA
2588507136,2588508159,SO
2588508160,2588510207,LY
@@ -60466,6 +61090,7 @@
2596339712,2597322751,ZA
2597322752,2598371327,US
2598371328,2598895615,UG
+2598895616,2599157759,CI
2599419904,2600468479,DZ
2600468480,2600534015,ZM
2600534016,2600665087,US
@@ -60617,9 +61242,10 @@
2617115136,2617115647,CA
2617115648,2617123839,US
2617123840,2617124095,DE
-2617124096,2617124863,US
+2617124352,2617124607,US
2617124864,2617126911,NL
-2617126912,2617131007,US
+2617129984,2617130239,US
+2617130496,2617130751,US
2617131008,2617139199,CA
2617139200,2617139455,PE
2617139456,2617139711,SZ
@@ -60653,7 +61279,11 @@
2617146880,2617147135,DE
2617147136,2617149439,US
2617149440,2617151487,CA
-2617151488,2617163775,US
+2617151488,2617157119,US
+2617157120,2617157631,RU
+2617157632,2617158655,US
+2617158656,2617159679,SE
+2617159680,2617163775,US
2617163776,2617164031,SK
2617164032,2617164287,MC
2617164288,2617164543,AZ
@@ -60934,7 +61564,9 @@
2624302147,2624302335,AU
2624302336,2624302591,US
2624302592,2624303103,AU
-2624303104,2624391696,US
+2624303104,2624303615,US
+2624303616,2624304639,CN
+2624304640,2624391696,US
2624391698,2624393727,US
2624393984,2624395263,US
2624395264,2624395775,GB
@@ -60966,7 +61598,7 @@
2634022912,2634088447,CN
2634088448,2635202559,JP
2635202560,2635268095,CN
-2635268096,2635399167,JP
+2635268096,2635333631,JP
2635399168,2635530239,US
2635530240,2635595775,FR
2635595776,2635661311,FI
@@ -61012,22 +61644,29 @@
2637630656,2637630783,IE
2637630784,2637630847,US
2637630848,2637631487,IE
-2637631488,2637637631,US
-2637637632,2637637887,NL
+2637631488,2637637663,US
+2637637664,2637637695,NL
+2637637696,2637637759,US
+2637637760,2637637887,NL
2637637888,2637638143,IE
2637638144,2637638399,NL
2637638400,2637638463,IE
-2637638464,2637638503,NL
+2637638464,2637638495,NL
+2637638496,2637638503,US
2637638504,2637638511,IE
-2637638512,2637638671,NL
+2637638512,2637638671,US
2637638672,2637638815,IE
2637638816,2637638879,NL
2637638880,2637638911,IE
-2637638912,2637639167,NL
+2637638912,2637638927,NL
+2637638928,2637639167,US
2637639168,2637639199,IE
-2637639200,2637639359,NL
+2637639200,2637639231,US
+2637639232,2637639295,NL
+2637639296,2637639327,US
+2637639328,2637639359,NL
2637639360,2637639383,IE
-2637639384,2637639391,NL
+2637639384,2637639391,US
2637639392,2637639423,IE
2637639424,2637639551,NL
2637639552,2637639679,IE
@@ -61126,15 +61765,16 @@
2640314368,2640379903,GB
2640379904,2640402431,NL
2640402432,2640404479,ES
-2640404480,2640406527,NL
+2640404480,2640405503,NL
+2640405504,2640406527,US
2640406528,2640408575,DE
2640408576,2640410623,NL
2640410624,2640411135,US
2640411136,2640411391,MX
2640411392,2640411647,NL
2640411648,2640412671,US
-2640412672,2640424959,NL
-2640424960,2640427007,ES
+2640412672,2640423935,NL
+2640423936,2640427007,ES
2640427008,2640445439,NL
2640445440,2640510975,US
2640510976,2640576511,FR
@@ -61454,8 +62094,10 @@
2659385344,2659450879,FI
2659450880,2659516415,HK
2659516416,2659581951,CH
-2659581952,2659991552,US
-2659991553,2660007935,PS
+2659581952,2659979263,US
+2659979264,2659983359,PS
+2659983360,2659991551,US
+2659991552,2660007935,PS
2660007936,2660016127,SG
2660016128,2660024319,ID
2660024320,2660032511,AU
@@ -61698,7 +62340,9 @@
2674917376,2675048447,US
2675048448,2675113983,GB
2675113984,2675245055,US
-2675245056,2675302399,NZ
+2675245056,2675286015,NZ
+2675286016,2675294207,US
+2675294208,2675302399,NZ
2675302400,2675310591,HK
2675310592,2675574239,US
2675574240,2675574271,IT
@@ -61726,19 +62370,25 @@
2675608752,2675608767,HK
2675608768,2675608983,US
2675608984,2675608991,AU
-2675608992,2675609487,US
+2675608992,2675609011,US
+2675609012,2675609015,JP
+2675609016,2675609487,US
2675609488,2675609503,CN
2675609504,2675610191,US
2675610192,2675610207,IL
2675610208,2675611295,US
2675611296,2675611359,IT
-2675611360,2675613119,US
+2675611360,2675612487,US
+2675612488,2675612495,IT
+2675612496,2675613119,US
2675613120,2675613151,IT
2675613152,2675613279,US
2675613280,2675613311,IT
2675613312,2675613463,US
2675613464,2675613471,IL
-2675613472,2675624399,US
+2675613472,2675613599,US
+2675613600,2675613631,JP
+2675613632,2675624399,US
2675624400,2675624415,CN
2675624416,2675626239,US
2675626240,2675626271,GB
@@ -61752,9 +62402,7 @@
2675633184,2675633215,GB
2675633216,2675633359,US
2675633360,2675633375,GB
-2675633376,2675636143,US
-2675636144,2675636151,GB
-2675636152,2675636170,US
+2675633376,2675636170,US
2675636171,2675636171,GB
2675636172,2675965951,US
2675965952,2676031487,CA
@@ -62032,7 +62680,8 @@
2684340224,2684344319,GB
2684344320,2684346367,NL
2684346368,2684354559,FI
-2684354560,2684616703,US
+2684354560,2684387327,MU
+2684420096,2684616703,US
2684616704,2684682239,NZ
2684682240,2684747775,GB
2684747776,2684813311,IE
@@ -62062,7 +62711,8 @@
2685677568,2685678591,CN
2685678592,2685681663,HK
2685724672,2685726719,CA
-2685730816,2686320639,JP
+2685730816,2685796351,JP
+2685861888,2686320639,JP
2686386176,2686844927,US
2686844928,2686910463,GB
2686910464,2686975999,US
@@ -62154,7 +62804,8 @@
2696216576,2696282111,BG
2696282112,2696413183,GM
2696413184,2696478719,US
-2696478720,2697594879,JP
+2696478720,2696609791,JP
+2696675328,2697594879,JP
2697594880,2697596927,IN
2697601024,2697602047,KH
2697602048,2697603071,IN
@@ -62358,7 +63009,7 @@
2708537344,2708635135,US
2708635392,2708733951,US
2708733952,2708799487,ES
-2708799488,2708865023,AU
+2708799488,2708865023,SG
2708865024,2708930559,JP
2708930560,2709127167,US
2709127168,2709192703,KR
@@ -62440,25 +63091,21 @@
2714373128,2714373128,SG
2714373129,2714373279,US
2714373280,2714373287,NL
-2714373288,2714373743,US
+2714373288,2714373711,US
+2714373712,2714373719,ID
+2714373720,2714373743,US
2714373744,2714373759,IN
-2714373760,2714375215,US
-2714375216,2714375231,ID
-2714375232,2714376223,US
+2714373760,2714376223,US
2714376224,2714376239,JP
2714376240,2714377103,US
2714377104,2714377119,IN
2714377120,2714377439,US
2714377440,2714377471,SG
-2714377472,2714377735,US
-2714377736,2714377743,ID
-2714377744,2714378463,US
+2714377472,2714378463,US
2714378464,2714378495,HK
2714378496,2714379103,US
2714379104,2714379135,HK
-2714379136,2714381183,US
-2714381184,2714381191,DE
-2714381192,2714381951,US
+2714379136,2714381951,US
2714381952,2714381983,HK
2714381984,2714382530,US
2714382531,2714382531,HK
@@ -62482,17 +63129,13 @@
2714408704,2714408719,JP
2714408720,2714408959,US
2714408960,2714408991,JP
-2714408992,2714410883,US
-2714410884,2714410887,TW
-2714410888,2714412655,US
+2714408992,2714412655,US
2714412656,2714412671,VN
2714412672,2714413343,US
2714413344,2714413359,PH
2714413360,2714416375,US
2714416376,2714416383,IN
-2714416384,2714416991,US
-2714416992,2714416999,JP
-2714417000,2714417215,US
+2714416384,2714417215,US
2714417216,2714417247,JP
2714417248,2714419743,US
2714419744,2714419775,SG
@@ -62508,9 +63151,7 @@
2714422880,2714422911,SG
2714422912,2714428767,US
2714428768,2714428783,JP
-2714428784,2714430719,US
-2714430720,2714430751,TW
-2714430752,2714697727,US
+2714428784,2714697727,US
2714697728,2714763263,CN
2714763264,2715025407,US
2715025408,2715090943,VE
@@ -62630,8 +63271,8 @@
2728272896,2728273919,IE
2728273920,2728274943,KE
2728274944,2728278015,IN
-2728278016,2728284159,US
-2728284160,2728288255,DE
+2728278016,2728284671,US
+2728284672,2728288255,DE
2728288256,2728289279,AE
2728289280,2728290303,PL
2728290304,2728291327,US
@@ -62648,7 +63289,7 @@
2728300544,2728301567,CA
2728301568,2728302591,CH
2728302592,2728303615,GB
-2728303616,2728304639,AT
+2728303616,2728304639,US
2728304640,2728306687,SG
2728306688,2728308735,US
2728308736,2728309759,HK
@@ -62979,7 +63620,9 @@
2734452736,2734454783,CA
2734454784,2734457855,US
2734457856,2734458879,CA
-2734458880,2734471167,US
+2734458880,2734467327,US
+2734467328,2734467583,CA
+2734467584,2734471167,US
2734471168,2734472191,CA
2734472192,2734473215,AG
2734473216,2734477311,US
@@ -63051,7 +63694,7 @@
2737602560,2737610751,SG
2737610752,2737618943,JP
2737618944,2737619967,VN
-2737619968,2737620991,SG
+2737619968,2737620991,TH
2737620992,2737621247,VN
2737621248,2737622015,SG
2737622016,2737623039,VN
@@ -63195,7 +63838,7 @@
2748645376,2748710911,KR
2748710912,2749235199,JP
2749235200,2749300735,KR
-2749300736,2749628415,JP
+2749366272,2749628415,JP
2749628416,2749693951,US
2749693952,2749759487,KR
2749759488,2749890559,US
@@ -63335,7 +63978,11 @@
2760118876,2760118878,BE
2760118879,2760118975,FR
2760118976,2760119039,ES
-2760119040,2760119967,FR
+2760119040,2760119263,FR
+2760119264,2760119295,PL
+2760119296,2760119495,FR
+2760119496,2760119499,ES
+2760119500,2760119967,FR
2760119968,2760119983,GB
2760119984,2760120543,FR
2760120544,2760120575,ES
@@ -63352,11 +63999,15 @@
2760132160,2760132223,ES
2760132224,2760132911,FR
2760132912,2760132927,PT
-2760132928,2760134975,FR
+2760132928,2760134783,FR
+2760134784,2760134799,ES
+2760134800,2760134975,FR
2760134976,2760135039,ES
2760135040,2760135935,FR
2760135936,2760136191,PT
-2760136192,2760137535,FR
+2760136192,2760137215,FR
+2760137216,2760137471,GB
+2760137472,2760137535,FR
2760137536,2760137599,ES
2760137600,2760138335,FR
2760138336,2760138367,FI
@@ -63368,7 +64019,9 @@
2760145216,2760145279,ES
2760145280,2760145855,FR
2760145856,2760145919,GB
-2760145920,2760147647,FR
+2760145920,2760146111,FR
+2760146112,2760146143,FI
+2760146144,2760147647,FR
2760147648,2760147711,ES
2760147712,2760148551,FR
2760148552,2760148559,FI
@@ -63390,7 +64043,8 @@
2760151344,2760151359,GB
2760151360,2760151903,FR
2760151904,2760151935,PT
-2760151936,2760152607,FR
+2760151936,2760152591,FR
+2760152592,2760152607,PL
2760152608,2760152639,FI
2760152640,2760153439,FR
2760153440,2760153471,ES
@@ -63412,7 +64066,11 @@
2760162682,2760162682,PL
2760162683,2760163135,FR
2760163136,2760163199,ES
-2760163200,2760167951,FR
+2760163200,2760167583,FR
+2760167584,2760167599,ES
+2760167600,2760167647,FR
+2760167648,2760167679,GB
+2760167680,2760167951,FR
2760167952,2760167967,ES
2760167968,2760168127,FR
2760168128,2760168191,IE
@@ -63603,7 +64261,7 @@
2774532096,2774597631,JP
2774597632,2774663167,US
2774663168,2774728703,NI
-2774728704,2774990847,JP
+2774794240,2774990847,JP
2774990848,2775318527,US
2775318528,2775384063,JP
2775384064,2775711743,US
@@ -63710,8 +64368,8 @@
2782855168,2782990335,US
2782990336,2782990847,GB
2782990848,2782995455,US
-2782995456,2782996479,CA
-2782996480,2783002623,US
+2782995456,2782995967,CA
+2782995968,2783002623,US
2783002624,2783002879,DK
2783002880,2783003135,US
2783003136,2783003391,RU
@@ -63725,7 +64383,8 @@
2783006720,2783007743,GB
2783007744,2783008255,PL
2783008256,2783008767,IT
-2783008768,2783010815,US
+2783008768,2783009279,BE
+2783009280,2783010815,US
2783010816,2783011327,HK
2783011328,2783011839,AU
2783011840,2783012351,JP
@@ -63927,7 +64586,9 @@
2809316624,2809321007,CA
2809321008,2809321015,US
2809321016,2809323519,CA
-2809323520,2809331711,FR
+2809323520,2809327569,FR
+2809327570,2809327570,RU
+2809327571,2809331711,FR
2809331712,2809397247,US
2809397248,2809462783,UY
2809462784,2809855999,US
@@ -63948,7 +64609,7 @@
2811625472,2812084223,US
2812084224,2812149759,BO
2812149760,2812280831,US
-2812280832,2812289023,TR
+2812280832,2812289023,NL
2812289024,2812291071,US
2812291072,2812292095,DE
2812292096,2812293119,US
@@ -63995,7 +64656,9 @@
2816271616,2816271871,JP
2816271872,2816272127,IN
2816272128,2816272383,AU
-2816272384,2816273407,JP
+2816272384,2816272415,JP
+2816272416,2816272543,SG
+2816272544,2816273407,JP
2816273408,2816274431,IN
2816274432,2816275455,AU
2816275456,2816276479,CN
@@ -64220,7 +64883,8 @@
2826977792,2826978047,NL
2826978048,2826985471,ZA
2826985472,2826987519,NZ
-2826987520,2827026431,ZA
+2826987520,2826989567,GB
+2826989568,2827026431,ZA
2827026432,2827091967,US
2827091968,2827157503,AU
2827157504,2827223039,KR
@@ -64390,8 +65054,7 @@
2831482880,2831493119,BR
2831493120,2831494143,MX
2831494144,2831496191,AR
-2831496192,2831497215,BR
-2831498240,2831500287,BR
+2831496192,2831500287,BR
2831500288,2831501311,CO
2831501312,2831505407,BR
2831505408,2831506431,CL
@@ -64401,8 +65064,10 @@
2831509504,2831510527,BR
2831510528,2831511551,SX
2831511552,2831513599,BR
-2831514624,2831515647,MX
-2831515648,2831524863,BR
+2831513600,2831515647,MX
+2831515648,2831516671,BR
+2831516672,2831517695,CR
+2831517696,2831524863,BR
2831524864,2831525887,AR
2831525888,2831526911,BR
2831526912,2831527935,HN
@@ -64412,6 +65077,7 @@
2831531008,2831532031,EC
2831532032,2831533055,BR
2831533056,2831535103,AR
+2831535104,2831536127,BR
2831536128,2831537151,BZ
2831537152,2831538175,BR
2831538176,2831539199,AR
@@ -64576,9 +65242,7 @@
2838260096,2838260127,IE
2838260128,2838261759,US
2838261760,2838265855,GB
-2838265856,2838266751,US
-2838266752,2838266783,NL
-2838266784,2838298623,US
+2838265856,2838298623,US
2838298624,2838298655,NL
2838298656,2838298687,US
2838298688,2838298975,NL
@@ -64587,9 +65251,7 @@
2838299440,2838299455,US
2838299456,2838299695,NL
2838299696,2838299775,US
-2838299776,2838300035,NL
-2838300036,2838300039,US
-2838300040,2838300671,NL
+2838299776,2838300671,NL
2838300672,2838300927,US
2838300928,2838301119,NL
2838301120,2838301183,US
@@ -64601,9 +65263,17 @@
2838304224,2838304255,US
2838304256,2838304319,NL
2838304320,2838304383,US
-2838304384,2838307055,NL
+2838304384,2838304447,NL
+2838304448,2838304511,US
+2838304512,2838304703,NL
+2838304704,2838304767,US
+2838304768,2838307055,NL
2838307056,2838307063,US
-2838307064,2838307295,NL
+2838307064,2838307135,NL
+2838307136,2838307167,US
+2838307168,2838307199,NL
+2838307200,2838307231,US
+2838307232,2838307295,NL
2838307296,2838307303,US
2838307304,2838307311,NL
2838307312,2838307327,US
@@ -64615,11 +65285,11 @@
2838315392,2838315407,US
2838315408,2838315567,NL
2838315568,2838315583,US
-2838315584,2838315695,NL
-2838315696,2838315711,US
-2838315712,2838315740,NL
+2838315584,2838315740,NL
2838315741,2838315741,US
-2838315742,2838316063,NL
+2838315742,2838315799,NL
+2838315800,2838315801,US
+2838315802,2838316063,NL
2838316064,2838316079,US
2838316080,2838316591,NL
2838316592,2838316607,US
@@ -64627,9 +65297,13 @@
2838316624,2838316631,US
2838316632,2838316767,NL
2838316768,2838316783,US
-2838316784,2838318511,NL
+2838316784,2838317901,NL
+2838317902,2838317903,US
+2838317904,2838318511,NL
2838318512,2838318527,US
-2838318528,2838320191,NL
+2838318528,2838319135,NL
+2838319136,2838319167,US
+2838319168,2838320191,NL
2838320192,2838320192,US
2838320193,2838320543,NL
2838320544,2838320551,US
@@ -64641,9 +65315,7 @@
2838321472,2838321535,US
2838321536,2838323071,NL
2838323072,2838323103,US
-2838323104,2838323455,NL
-2838323456,2838323487,US
-2838323488,2838323535,NL
+2838323104,2838323535,NL
2838323536,2838323583,US
2838323584,2838324039,NL
2838324040,2838324047,US
@@ -64670,7 +65342,9 @@
2838330163,2838330575,NL
2838330576,2838330591,US
2838330592,2838330735,NL
-2838330736,2838330815,US
+2838330736,2838330751,US
+2838330752,2838330767,NL
+2838330768,2838330815,US
2838330816,2838331535,NL
2838331536,2838331551,US
2838331552,2838331567,NL
@@ -64686,9 +65360,7 @@
2838337296,2838337759,NL
2838337760,2838337761,IN
2838337762,2838337763,US
-2838337764,2838338177,NL
-2838338178,2838338179,IN
-2838338180,2838338271,NL
+2838337764,2838338271,NL
2838338272,2838338303,JP
2838338304,2838338567,NL
2838338568,2838338575,US
@@ -64701,9 +65373,7 @@
2838338816,2838338823,US
2838338824,2838339743,NL
2838339744,2838339759,US
-2838339760,2838339871,NL
-2838339872,2838339903,US
-2838339904,2838340015,NL
+2838339760,2838340015,NL
2838340016,2838340031,US
2838340032,2838340351,NL
2838340352,2838340383,US
@@ -64735,15 +65405,15 @@
2838345744,2838345751,US
2838345752,2838346015,NL
2838346016,2838346047,US
-2838346048,2838346559,NL
+2838346048,2838346239,NL
+2838346240,2838346271,US
+2838346272,2838346559,NL
2838346560,2838346591,US
2838346592,2838346623,NL
2838346624,2838346655,US
2838346656,2838346687,NL
2838346688,2838346719,US
-2838346720,2838347007,NL
-2838347008,2838347015,JP
-2838347016,2838347031,NL
+2838346720,2838347031,NL
2838347032,2838347039,US
2838347040,2838347231,NL
2838347232,2838347271,US
@@ -64767,7 +65437,9 @@
2838349808,2838349823,US
2838349824,2838350911,NL
2838350912,2838350927,US
-2838350928,2838351295,NL
+2838350928,2838351135,NL
+2838351136,2838351167,US
+2838351168,2838351295,NL
2838351296,2838351327,US
2838351328,2838351623,NL
2838351624,2838351631,US
@@ -64775,7 +65447,9 @@
2838351712,2838351743,CO
2838351744,2838352575,NL
2838352576,2838352583,US
-2838352584,2838352639,NL
+2838352584,2838352591,NL
+2838352592,2838352599,US
+2838352600,2838352639,NL
2838352640,2838352655,CO
2838352656,2838355151,NL
2838355152,2838355159,US
@@ -64850,12 +65524,20 @@
2838408896,2838409439,NL
2838409440,2838409471,US
2838409472,2838409479,NL
-2838409480,2838409487,US
-2838409488,2838410719,NL
-2838410720,2838410751,US
-2838410752,2838410895,NL
+2838409480,2838409503,US
+2838409504,2838410191,NL
+2838410192,2838410199,US
+2838410200,2838410367,NL
+2838410368,2838410399,US
+2838410400,2838410895,NL
2838410896,2838410911,US
-2838410912,2838429983,NL
+2838410912,2838411327,NL
+2838411328,2838411359,US
+2838411360,2838413311,NL
+2838413312,2838415359,US
+2838415360,2838415391,NL
+2838415392,2838415423,US
+2838415424,2838429983,NL
2838429984,2838430015,US
2838430016,2838431039,NL
2838431040,2838431135,US
@@ -64865,9 +65547,7 @@
2838432000,2838432127,US
2838432128,2838433183,NL
2838433184,2838433199,US
-2838433200,2838433201,NL
-2838433202,2838433202,US
-2838433203,2838433519,NL
+2838433200,2838433519,NL
2838433520,2838433535,US
2838433536,2838433599,NL
2838433600,2838433607,US
@@ -64875,27 +65555,43 @@
2838433792,2838433855,US
2838433856,2838433919,NL
2838433920,2838433951,US
-2838433952,2838434271,NL
-2838434272,2838434303,US
-2838434304,2838434311,NL
-2838434312,2838434319,US
-2838434320,2838435519,NL
+2838433952,2838435519,NL
2838435520,2838435551,US
2838435552,2838436815,NL
2838436816,2838436831,US
2838436832,2838437359,NL
2838437360,2838437361,US
-2838437362,2838438127,NL
+2838437362,2838437375,NL
+2838437376,2838437407,US
+2838437408,2838437631,NL
+2838437632,2838437663,US
+2838437664,2838438127,NL
2838438128,2838438135,US
-2838438136,2838438415,NL
-2838438416,2838438431,US
-2838438432,2838560767,NL
+2838438136,2838438975,NL
+2838438976,2838439007,US
+2838439008,2838439935,NL
+2838439936,2838439943,US
+2838439944,2838441215,NL
+2838441216,2838441247,US
+2838441248,2838441375,NL
+2838441376,2838441407,US
+2838441408,2838441535,NL
+2838441536,2838441567,US
+2838441568,2838441695,NL
+2838441696,2838441711,US
+2838441712,2838560767,NL
2838560768,2838626303,CH
-2838626304,2838626575,US
+2838626304,2838626399,US
+2838626400,2838626431,SA
+2838626432,2838626575,US
2838626576,2838626591,CN
2838626592,2838628319,US
2838628320,2838628351,DE
-2838628352,2838631871,US
+2838628352,2838629331,US
+2838629332,2838629333,SA
+2838629334,2838631367,US
+2838631368,2838631375,SA
+2838631376,2838631871,US
2838631872,2838631903,DE
2838631904,2838631967,US
2838631968,2838631999,DE
@@ -64903,17 +65599,13 @@
2838632096,2838632127,DE
2838632128,2838633295,US
2838633296,2838633311,SA
-2838633312,2838642719,US
-2838642720,2838642723,GB
-2838642724,2838643407,US
+2838633312,2838643407,US
2838643408,2838643408,GB
2838643409,2838643487,US
2838643488,2838643519,HK
2838643520,2838643696,US
2838643697,2838643697,GB
-2838643698,2838643951,US
-2838643952,2838643967,NL
-2838643968,2838645839,US
+2838643698,2838645839,US
2838645840,2838645855,GB
2838645856,2838646207,US
2838646208,2838646239,GB
@@ -64931,13 +65623,11 @@
2838653632,2838653639,GB
2838653640,2838655527,US
2838655528,2838655535,GB
-2838655536,2838657295,US
-2838657296,2838657299,GB
-2838657300,2838657343,US
-2838657344,2838657351,GB
-2838657352,2838658607,US
+2838655536,2838658607,US
2838658608,2838658623,NL
-2838658624,2838663167,US
+2838658624,2838659007,US
+2838659008,2838659023,GB
+2838659024,2838663167,US
2838663168,2838663175,NL
2838663176,2838663807,US
2838663808,2838663809,BO
@@ -64947,13 +65637,13 @@
2838664128,2838664135,ES
2838664136,2838664167,US
2838664168,2838664175,VN
-2838664176,2838665759,US
+2838664176,2838664727,US
+2838664728,2838664735,ZA
+2838664736,2838665759,US
2838665760,2838665791,JP
2838665792,2838667103,US
2838667104,2838667135,NL
-2838667136,2838675519,US
-2838675520,2838675527,GR
-2838675528,2838708223,US
+2838667136,2838708223,US
2838708224,2838724607,NO
2838724608,2838757375,US
2838757376,2838822911,CH
@@ -64983,9 +65673,7 @@
2838881408,2838881423,IN
2838881424,2838887271,US
2838887272,2838887279,IN
-2838887280,2838887455,US
-2838887456,2838887487,BO
-2838887488,2838887871,US
+2838887280,2838887871,US
2838887872,2838887887,EC
2838887888,2838902591,US
2838902592,2838902623,BO
@@ -65009,9 +65697,7 @@
2838933920,2838933951,NL
2838933952,2838938991,US
2838938992,2838939007,AU
-2838939008,2838942753,US
-2838942754,2838942755,IN
-2838942756,2838946735,US
+2838939008,2838946735,US
2838946736,2838946751,CA
2838946752,2838957535,US
2838957536,2838957551,HK
@@ -65031,7 +65717,9 @@
2838969536,2838969536,IL
2838969537,2838969737,US
2838969738,2838969738,ES
-2838969739,2838988639,US
+2838969739,2838969828,US
+2838969829,2838969829,NL
+2838969830,2838988639,US
2838988640,2838988671,CA
2838988672,2838988687,US
2838988688,2838988703,CA
@@ -65045,9 +65733,7 @@
2838996064,2838996095,HK
2838996096,2838998015,US
2838998016,2838998047,CA
-2838998048,2838998527,US
-2838998528,2838998559,CA
-2838998560,2839010815,US
+2838998048,2839010815,US
2839010816,2839010847,NL
2839010848,2839035903,US
2839035904,2839052287,KR
@@ -65211,12 +65897,14 @@
2852187136,2852189183,BR
2852189184,2852190207,TT
2852190208,2852192255,BR
-2852192256,2853306367,US
+2852192256,2852839423,US
+2852839424,2852847615,CA
+2852847616,2853306367,US
2853306368,2853371903,CL
2853371904,2853765119,US
2853765120,2853830655,MX
2853830656,2854289407,US
-2854289408,2854354943,MY
+2854289408,2854354943,SG
2854354944,2854617087,US
2854617088,2854682623,MY
2854748160,2855288831,US
@@ -65243,8 +65931,11 @@
2856714240,2856779775,MX
2856779776,2857082879,US
2857082880,2857086975,CA
-2857086976,2857238527,US
+2857086976,2857140223,US
+2857140224,2857140735,CA
+2857140736,2857238527,US
2857238528,2857248767,BR
+2857248768,2857249791,CO
2857249792,2857250815,AR
2857250816,2857252863,BR
2857252864,2857253887,CO
@@ -65259,25 +65950,73 @@
2857270272,2857271295,AR
2857271296,2857273343,BR
2857273344,2857274367,AR
-2857274368,2857281535,BR
-2857283584,2857285631,BR
+2857274368,2857285631,BR
2857285632,2857285887,AR
+2857285888,2857286143,CO
2857286144,2857286655,BR
2857286656,2857287679,MX
2857287680,2857288703,AR
2857288704,2857289727,BR
2857289728,2857290751,AR
-2857291776,2857293823,BR
+2857290752,2857294847,BR
2857294848,2857295871,AR
-2857295872,2857308159,BR
+2857295872,2857303039,BR
+2857303040,2857304063,CL
+2857304064,2857308159,BR
2857308160,2857309183,AR
2857309184,2857313279,BR
2857313280,2857314303,PE
2857314304,2857315327,CL
-2857315328,2857317375,BR
-2857323520,2857324031,BR
+2857315328,2857324031,BR
2857324032,2857324543,US
-2857336832,2857369599,BR
+2857324544,2857326591,BR
+2857326592,2857327615,CO
+2857327616,2857329663,BR
+2857329664,2857330687,CL
+2857330688,2857331711,BR
+2857331712,2857332735,PA
+2857332736,2857335807,BR
+2857335808,2857336831,MX
+2857336832,2857340927,BR
+2857340928,2857341951,DO
+2857341952,2857350143,BR
+2857350144,2857351167,AR
+2857351168,2857363455,BR
+2857363456,2857364479,CL
+2857364480,2857368575,BR
+2857368576,2857369599,AR
+2857369600,2857371647,BR
+2857371648,2857372671,CO
+2857372672,2857373695,BR
+2857373696,2857374719,NI
+2857374720,2857375743,GT
+2857375744,2857376767,AR
+2857376768,2857377791,MX
+2857377792,2857387007,BR
+2857388032,2857389055,CL
+2857389056,2857390079,BR
+2857392128,2857393151,CR
+2857393152,2857394175,CL
+2857394176,2857399295,BR
+2857399296,2857400319,AR
+2857400320,2857402367,BR
+2857403392,2857404415,BR
+2857404416,2857405439,AR
+2857405440,2857406463,HN
+2857406464,2857411583,BR
+2857412608,2857414655,AR
+2857414656,2857420799,BR
+2857420800,2857421823,AR
+2857421824,2857437183,BR
+2857437184,2857438207,DO
+2857440256,2857441279,BR
+2857441280,2857442303,CO
+2857443328,2857444351,CR
+2857444352,2857445375,BR
+2857446400,2857447423,BR
+2857448448,2857449471,HN
+2857451520,2857459711,BR
+2857466880,2857467903,HN
2857631744,2857633791,BR
2857633792,2857634815,TT
2857634816,2857643007,BR
@@ -65398,7 +66137,7 @@
2867403776,2867404799,AR
2867404800,2867414015,BR
2867414016,2867415039,AR
-2867415040,2867416063,GY
+2867415040,2867416063,GF
2867416064,2867420159,BR
2867420160,2867421183,AR
2867421184,2867426303,BR
@@ -65422,7 +66161,72 @@
2867457024,2867462143,BR
2867462144,2867593215,US
2867593216,2867724287,CH
-2867724288,2867789823,BR
+2867724288,2867725311,EC
+2867725312,2867726335,BR
+2867727360,2867728383,BR
+2867728384,2867729407,PY
+2867729408,2867730431,AR
+2867730432,2867731455,CL
+2867733504,2867734527,BR
+2867734528,2867735551,AR
+2867735552,2867740671,BR
+2867740672,2867741183,CO
+2867741184,2867741695,AR
+2867741696,2867751935,BR
+2867751936,2867752959,HN
+2867752960,2867756031,BR
+2867756032,2867757055,AR
+2867757056,2867767295,BR
+2867767296,2867767807,CO
+2867767808,2867768319,EC
+2867768320,2867775487,BR
+2867775488,2867776511,CL
+2867776512,2867777535,AR
+2867777536,2867780607,BR
+2867780608,2867781631,MX
+2867782144,2867782655,CO
+2867782656,2867784703,BR
+2867784704,2867785727,CO
+2867785728,2867787775,AR
+2867787776,2867788799,BR
+2867788800,2867789823,MX
+2867789824,2867791871,BR
+2867792896,2867793919,HT
+2867793920,2867796991,BR
+2867796992,2867799039,AR
+2867799040,2867802111,BR
+2867802112,2867803135,AR
+2867803136,2867804159,BR
+2867804160,2867805183,GT
+2867805184,2867806207,BR
+2867806208,2867807231,CL
+2867807232,2867811327,BR
+2867811328,2867812351,CL
+2867812352,2867813375,AR
+2867813376,2867815423,BR
+2867815424,2867816447,PE
+2867816448,2867819519,BR
+2867820544,2867821567,BO
+2867821568,2867822591,BR
+2867822592,2867823615,AR
+2867823616,2867827711,BR
+2867827712,2867828735,MX
+2867828736,2867829759,CL
+2867829760,2867831807,BR
+2867831808,2867832831,DO
+2867832832,2867834879,AR
+2867834880,2867835903,BR
+2867835904,2867836927,AR
+2867836928,2867837951,BR
+2867837952,2867838975,CL
+2867838976,2867842047,BR
+2867842048,2867843071,EC
+2867843072,2867848191,BR
+2867849216,2867850239,BR
+2867850240,2867851263,SV
+2867851264,2867852287,BR
+2867852288,2867853311,AR
+2867853312,2867855359,BR
2867855360,2868117503,US
2868379648,2868380159,IN
2868380160,2868380671,BR
@@ -65624,7 +66428,9 @@
2870091264,2870091775,BE
2870091776,2870149119,FR
2870149120,2870214655,HU
-2870214656,2870234111,DK
+2870214656,2870228223,DK
+2870228224,2870228991,US
+2870228992,2870234111,DK
2870234112,2870234367,SG
2870234368,2870280191,DK
2870280192,2870411263,NL
@@ -65726,10 +66532,12 @@
2890152960,2890153983,GR
2890153984,2890161151,US
2890161152,2890162175,ES
-2890162176,2890163199,US
+2890162176,2890163199,PA
2890163200,2890164223,PT
2890164224,2890165247,TH
-2890165248,2890956799,US
+2890165248,2890167295,US
+2890167296,2890168319,AU
+2890168320,2890956799,US
2890956800,2890989567,AE
2890989568,2891017215,US
2891017216,2891017471,JP
@@ -65788,17 +66596,18 @@
2891863040,2891863551,AU
2891863552,2891864063,JP
2891864064,2891864575,SG
-2891864576,2891865599,US
+2891864576,2891865087,US
+2891865088,2891865343,NL
+2891865344,2891865599,US
2891865600,2891865855,HK
2891865856,2891866111,US
-2891866112,2891866367,AU
-2891866368,2891866623,US
-2891866624,2891867391,AU
-2891867392,2891867903,US
-2891867904,2891868159,AU
-2891868160,2891869439,US
+2891866112,2891867647,AU
+2891867648,2891867903,US
+2891867904,2891868927,AU
+2891868928,2891869439,US
2891869440,2891869695,AT
-2891869696,2891870207,US
+2891869696,2891869951,US
+2891869952,2891870207,HK
2891870208,2891870975,RU
2891870976,2891871231,US
2891871232,2891871487,CA
@@ -65814,7 +66623,23 @@
2892050432,2892052479,CA
2892052480,2892053503,US
2892053504,2892054527,CA
-2892054528,2892068863,US
+2892054528,2892059263,US
+2892059264,2892059391,KP
+2892059392,2892059775,US
+2892059776,2892059903,BI
+2892059904,2892060031,US
+2892060032,2892060159,CC
+2892060160,2892060799,US
+2892060800,2892060927,WS
+2892060928,2892061055,US
+2892061056,2892061183,MU
+2892061184,2892061311,AD
+2892061312,2892061439,SL
+2892061440,2892061567,US
+2892061568,2892061695,PA
+2892061696,2892062079,US
+2892062080,2892062207,GU
+2892062208,2892068863,US
2892068864,2892069887,CA
2892069888,2892070911,US
2892070912,2892103679,CA
@@ -65842,7 +66667,17 @@
2892174336,2892177407,CA
2892177408,2892369919,US
2892369920,2892374015,CA
-2892374016,2892420607,US
+2892374016,2892399103,US
+2892399104,2892399231,TG
+2892399232,2892399615,US
+2892399616,2892399743,FJ
+2892399744,2892401023,US
+2892401024,2892401151,ER
+2892401152,2892401919,US
+2892401920,2892402047,MF
+2892402048,2892402175,US
+2892402176,2892402303,MP
+2892402304,2892420607,US
2892420608,2892420863,CA
2892420864,2892421631,US
2892421632,2892421887,CA
@@ -65855,7 +66690,29 @@
2892464128,2892496895,CA
2892496896,2892906495,US
2892906496,2892910591,CA
-2892910592,2892988415,US
+2892910592,2892943743,US
+2892943744,2892943871,LR
+2892943872,2892943999,MC
+2892944000,2892944127,SZ
+2892944128,2892944255,US
+2892944256,2892944383,BT
+2892944384,2892944767,US
+2892944768,2892944895,GQ
+2892944896,2892945023,US
+2892945024,2892945151,LS
+2892945152,2892945279,US
+2892945280,2892945407,LI
+2892945408,2892945791,US
+2892945792,2892945919,CV
+2892945920,2892946047,US
+2892946048,2892946175,LA
+2892946176,2892946303,US
+2892946304,2892946431,CF
+2892946432,2892946815,US
+2892946816,2892946943,SM
+2892946944,2892947327,US
+2892947328,2892947455,TO
+2892947456,2892988415,US
2892988416,2892988671,SC
2892988672,2892988927,HU
2892988928,2892989183,RO
@@ -65872,7 +66729,7 @@
2892992512,2892993023,IT
2892993024,2892993535,JP
2892993536,2892993791,BE
-2892993792,2892994047,AE
+2892993792,2892994047,PA
2892994048,2892994303,GB
2892994304,2892994559,US
2892994560,2892994815,JO
@@ -65892,20 +66749,22 @@
2892998912,2892999167,MX
2892999168,2892999423,CR
2892999424,2892999551,TW
-2892999552,2893000191,US
+2892999552,2892999935,US
+2892999936,2893000191,IT
2893000192,2893000447,JP
2893000448,2893000959,HK
2893000960,2893001215,CA
2893001216,2893001727,GB
-2893001728,2893001983,IT
-2893001984,2893002239,US
+2893001728,2893002239,IT
2893002240,2893002495,EE
-2893002496,2893003007,US
+2893002496,2893002751,PA
+2893002752,2893003007,NZ
2893003008,2893003263,KR
2893003264,2893003775,GB
2893003776,2893004031,DE
2893004032,2893004287,JP
-2893004288,2893004799,US
+2893004288,2893004543,DK
+2893004544,2893004799,US
2893004800,2893005311,HK
2893005312,2893005567,US
2893005568,2893005823,FR
@@ -65917,9 +66776,13 @@
2893007104,2893007359,US
2893007360,2893007615,IE
2893007616,2893007871,DE
-2893007872,2893009663,US
+2893007872,2893009151,US
+2893009152,2893009407,AM
+2893009408,2893009663,US
2893009664,2893010175,GB
-2893010176,2893010943,US
+2893010176,2893010431,US
+2893010432,2893010687,DE
+2893010688,2893010943,US
2893010944,2893011199,AT
2893011200,2893011455,US
2893011456,2893011711,SG
@@ -66082,9 +66945,7 @@
2916167376,2916167383,US
2916167384,2916168159,CA
2916168160,2916168167,US
-2916168168,2916169015,CA
-2916169016,2916169023,US
-2916169024,2916171775,CA
+2916168168,2916171775,CA
2916171776,2916184063,US
2916184064,2916196351,CA
2916196352,2916253695,US
@@ -66107,9 +66968,7 @@
2917040128,2917041407,NL
2917041408,2917045503,US
2917045504,2917045759,NL
-2917045760,2917048831,US
-2917048832,2917049343,NL
-2917049344,2917058559,US
+2917045760,2917058559,US
2917058560,2917059583,NL
2917059584,2917060607,US
2917060608,2917061631,NL
@@ -66209,16 +67068,10 @@
2918023168,2918043647,US
2918043648,2918047743,CA
2918047744,2918051839,US
-2918051840,2918110463,CA
-2918110464,2918110719,US
-2918110720,2918121471,CA
+2918051840,2918121471,CA
2918121472,2918154239,US
2918154240,2918170623,CA
-2918170624,2918171391,US
-2918171392,2918171647,SG
-2918171648,2918171903,US
-2918171904,2918172159,SG
-2918172160,2918172415,US
+2918170624,2918172415,US
2918172416,2918172416,SG
2918172417,2918174463,US
2918174464,2918174719,MX
@@ -66313,7 +67166,9 @@
2919174144,2919178239,CA
2919178240,2919186431,US
2919186432,2919190527,CA
-2919190528,2919204543,US
+2919190528,2919204527,US
+2919204528,2919204535,NL
+2919204536,2919204543,US
2919204544,2919204551,NL
2919204552,2919204747,US
2919204748,2919204755,NL
@@ -66737,8 +67592,7 @@
2954832288,2954832343,FR
2954832344,2954832347,CH
2954832348,2954832351,ES
-2954832352,2954832383,FR
-2954832384,2954832399,GB
+2954832352,2954832399,FR
2954832400,2954832415,FI
2954832416,2954832607,FR
2954832608,2954832639,PT
@@ -66875,9 +67729,7 @@
2954842412,2954842415,GB
2954842416,2954842471,FR
2954842472,2954842479,GB
-2954842480,2954842559,FR
-2954842560,2954842575,IE
-2954842576,2954843043,FR
+2954842480,2954843043,FR
2954843044,2954843047,GB
2954843048,2954843187,FR
2954843188,2954843191,GB
@@ -67119,7 +67971,9 @@
2954944512,2954946559,GB
2954946560,2954948607,DE
2954948608,2954950655,RU
-2954950656,2954952703,ES
+2954950656,2954951167,ES
+2954951168,2954951679,DE
+2954951680,2954952703,ES
2954952704,2955018239,TR
2955018240,2955027726,JP
2955027727,2955027727,IE
@@ -67139,7 +67993,9 @@
2955935744,2956230655,RU
2956230656,2956238847,SI
2956238848,2956242943,ES
-2956242944,2956244479,JO
+2956242944,2956243967,JO
+2956243968,2956244223,GR
+2956244224,2956244479,JO
2956244480,2956244991,SE
2956244992,2956245247,FR
2956245248,2956245503,RO
@@ -67359,7 +68215,7 @@
2959310848,2959343615,RU
2959343616,2959351807,UA
2959353856,2959355903,RU
-2959355904,2959357951,RO
+2959355904,2959357951,KZ
2959357952,2959359999,UA
2959360000,2959384575,RU
2959384576,2959392767,UA
@@ -67700,7 +68556,7 @@
2961057792,2961061887,RU
2961061888,2961062911,PL
2961062912,2961063935,UA
-2961063936,2961064191,US
+2961063936,2961064191,DE
2961064192,2961064447,NL
2961064448,2961064703,RU
2961064704,2961064959,BG
@@ -67710,8 +68566,7 @@
2961065728,2961066239,HK
2961066240,2961066751,DE
2961066752,2961067007,BG
-2961067008,2961067263,US
-2961067264,2961067519,DE
+2961067008,2961067519,DE
2961067520,2961067775,GB
2961067776,2961068543,DE
2961068544,2961068799,NL
@@ -67719,7 +68574,8 @@
2961069056,2961069311,SE
2961069312,2961069567,NL
2961069568,2961069823,SE
-2961069824,2961072127,US
+2961069824,2961070079,DE
+2961070080,2961072127,US
2961072128,2961088511,UA
2961088512,2961088767,SE
2961088768,2961089023,RU
@@ -67849,11 +68705,15 @@
2968648576,2968649727,FR
2968649728,2969042943,IT
2969042944,2969567231,GB
-2969567232,2975594495,BR
+2969567232,2972098569,BR
+2972098570,2972098570,US
+2972098571,2975594495,BR
2975594496,2975596543,PE
2975596544,2984247295,BR
2984247296,2984607743,MX
-2984607744,2984615935,US
+2984607744,2984613648,US
+2984613649,2984613649,MX
+2984613650,2984615935,US
2984615936,2984935423,MX
2984935424,2984936447,AR
2984936448,2984937471,BR
@@ -67971,7 +68831,9 @@
2987728896,2987730943,GB
2987730944,2987732991,IR
2987732992,2987735039,HU
-2987735040,2987737087,ES
+2987735040,2987736577,ES
+2987736578,2987736578,BY
+2987736579,2987737087,ES
2987737088,2987739135,RU
2987739136,2987742982,SE
2987742983,2987742983,DK
@@ -68160,7 +69022,9 @@
2988459648,2988459679,GB
2988459680,2988459687,FR
2988459688,2988459691,PL
-2988459692,2988459863,FR
+2988459692,2988459715,FR
+2988459716,2988459719,FI
+2988459720,2988459863,FR
2988459864,2988459867,ES
2988459868,2988460143,FR
2988460144,2988460147,GB
@@ -68186,8 +69050,8 @@
2988461708,2988461799,FR
2988461800,2988461807,ES
2988461808,2988462159,FR
-2988462160,2988462171,ES
-2988462172,2988462331,FR
+2988462160,2988462167,ES
+2988462168,2988462331,FR
2988462332,2988462335,ES
2988462336,2988462747,FR
2988462748,2988462751,ES
@@ -68223,12 +69087,7 @@
2988464788,2988464791,ES
2988464792,2988465215,FR
2988465216,2988465219,ES
-2988465220,2988465511,FR
-2988465512,2988465515,PT
-2988465516,2988465519,GB
-2988465520,2988465523,FR
-2988465524,2988465527,ES
-2988465528,2988465551,FR
+2988465220,2988465551,FR
2988465552,2988465563,ES
2988465564,2988466059,FR
2988466060,2988466063,CZ
@@ -68258,7 +69117,9 @@
2988479728,2988479735,DE
2988479736,2988479791,FR
2988479792,2988479807,GB
-2988479808,2988480011,FR
+2988479808,2988479903,FR
+2988479904,2988479935,PL
+2988479936,2988480011,FR
2988480012,2988480015,GB
2988480016,2988480063,FR
2988480064,2988480095,ES
@@ -68317,17 +69178,13 @@
2988484340,2988484343,PT
2988484344,2988484399,FR
2988484400,2988484403,PT
-2988484404,2988484483,FR
-2988484484,2988484487,DE
-2988484488,2988484831,FR
+2988484404,2988484831,FR
2988484832,2988484847,GB
2988484848,2988484879,FR
2988484880,2988484883,GB
2988484884,2988484891,FR
2988484892,2988484895,GB
-2988484896,2988485351,FR
-2988485352,2988485355,GB
-2988485356,2988485455,FR
+2988484896,2988485455,FR
2988485456,2988485471,GB
2988485472,2988485503,FR
2988485504,2988485519,GB
@@ -68339,7 +69196,8 @@
2988485800,2988485803,PT
2988485804,2988486083,FR
2988486084,2988486087,PT
-2988486088,2988486095,FR
+2988486088,2988486091,GB
+2988486092,2988486095,FR
2988486096,2988486099,GB
2988486100,2988486135,FR
2988486136,2988486139,ES
@@ -68574,7 +69432,9 @@
2988512996,2988512999,GB
2988513000,2988513003,FR
2988513004,2988513007,ES
-2988513008,2988513283,FR
+2988513008,2988513167,FR
+2988513168,2988513171,PT
+2988513172,2988513283,FR
2988513284,2988513287,ES
2988513288,2988513311,FR
2988513312,2988513327,PT
@@ -68605,7 +69465,9 @@
2988521952,2988521983,ES
2988521984,2988523599,FR
2988523600,2988523603,ES
-2988523604,2988523663,FR
+2988523604,2988523631,FR
+2988523632,2988523635,DE
+2988523636,2988523663,FR
2988523664,2988523667,IE
2988523668,2988523679,FR
2988523680,2988523711,ES
@@ -68929,9 +69791,7 @@
2988557540,2988557543,ES
2988557544,2988557631,FR
2988557632,2988557635,GB
-2988557636,2988558203,FR
-2988558204,2988558207,DE
-2988558208,2988558731,FR
+2988557636,2988558731,FR
2988558732,2988558735,PT
2988558736,2988558803,FR
2988558804,2988558807,ES
@@ -68997,7 +69857,9 @@
2988564404,2988564407,ES
2988564408,2988566331,FR
2988566332,2988566332,GB
-2988566333,2988572671,FR
+2988566333,2988569423,FR
+2988569424,2988569439,FI
+2988569440,2988572671,FR
2988572672,2988703743,RU
2988703744,2988834815,PL
2988834816,2988965887,CH
@@ -69070,7 +69932,11 @@
2991521792,2991538175,RS
2991538176,2991554559,SI
2991554560,2991570943,GB
-2991570944,2991587327,IT
+2991570944,2991581183,IT
+2991581184,2991582207,DE
+2991582208,2991583231,FR
+2991583232,2991585279,DE
+2991585280,2991587327,GB
2991587328,2991718399,SA
2991718400,2991849471,CH
2991849472,2991980543,NL
@@ -69133,16 +69999,23 @@
2996682752,2996699135,DK
2996699136,2996764671,UA
2996764672,2996768767,GB
-2996768768,2996773375,RU
-2996773376,2996773631,UA
+2996768768,2996773631,RU
2996773632,2996773887,KZ
-2996773888,2996774143,UA
-2996774144,2996774655,RU
-2996774656,2996776959,UA
-2996776960,2996781055,RU
+2996773888,2996774399,RU
+2996774400,2996774911,UA
+2996774912,2996775423,RU
+2996775424,2996775935,UA
+2996775936,2996781055,RU
2996781056,2996785151,RO
2996785152,2996789247,RU
-2996789248,2996797439,UA
+2996789248,2996789503,UA
+2996789504,2996789759,RU
+2996789760,2996790015,UA
+2996790016,2996790271,US
+2996790272,2996790527,TR
+2996790528,2996792063,UA
+2996792064,2996792319,US
+2996792320,2996797439,UA
2996797440,2996801535,PL
2996801536,2996805631,RO
2996805632,2996809727,PL
@@ -69155,7 +70028,8 @@
2996862976,2996895743,AM
2996895744,2996928511,KW
2996928512,2996994047,RU
-2996994048,2997026815,DE
+2996994048,2997010431,NL
+2997010432,2997026815,DE
2997026816,2997059583,RU
2997059584,2997092351,BY
2997092352,2997125119,NO
@@ -69195,12 +70069,14 @@
2997513355,2997515683,FR
2997515684,2997515684,GB
2997515685,2997518335,FR
-2997518336,2997520895,NL
+2997518336,2997520383,US
+2997520384,2997520895,NL
2997520896,2997521151,MT
2997521152,2997521407,US
2997521408,2997521663,UY
2997521664,2997521919,IN
-2997521920,2997522431,NL
+2997521920,2997522175,US
+2997522176,2997522431,NL
2997522432,2997522687,IT
2997522688,2997522943,BE
2997522944,2997523199,NO
@@ -69255,7 +70131,8 @@
3000008704,3000016895,RU
3000016896,3000020991,GB
3000020992,3000021247,DZ
-3000021248,3000025087,GB
+3000021248,3000021503,DE
+3000021504,3000025087,GB
3000025088,3000033279,GI
3000033280,3000041471,RU
3000041472,3000049663,BA
@@ -70026,14 +70903,9 @@
3007123456,3007143935,AR
3007143936,3007148031,CL
3007148032,3007152127,CO
-3007152128,3007152143,CL
-3007152144,3007152159,DE
-3007152160,3007152383,CL
+3007152128,3007152383,DE
3007152384,3007152639,US
-3007152640,3007152655,CL
-3007152656,3007152671,DE
-3007152672,3007152895,CL
-3007152896,3007153151,DE
+3007152640,3007153151,DE
3007153152,3007153167,CL
3007153168,3007153183,DE
3007153184,3007153279,CL
@@ -70048,9 +70920,7 @@
3007154944,3007155199,US
3007155200,3007155327,DE
3007155328,3007155711,US
-3007155712,3007155727,CL
-3007155728,3007155743,DE
-3007155744,3007155967,CL
+3007155712,3007155967,DE
3007155968,3007156223,US
3007156224,3007156351,DE
3007156352,3007156479,US
@@ -70311,8 +71181,9 @@
3025603092,3025603102,CN
3025603103,3025603103,IN
3025603104,3025603215,HK
-3025603216,3025603223,CN
-3025603224,3025603327,IN
+3025603216,3025603231,CN
+3025603232,3025603247,HK
+3025603248,3025603327,IN
3025603328,3025603335,GU
3025603336,3025603583,IN
3025603584,3025603839,SG
@@ -70367,10 +71238,12 @@
3025621760,3025622015,IN
3025622016,3025622275,SG
3025622276,3025622279,IN
-3025622280,3025622287,SG
-3025622288,3025623055,IN
+3025622280,3025622351,SG
+3025622352,3025623055,IN
3025623056,3025623103,SG
-3025623104,3025623295,IN
+3025623104,3025623247,IN
+3025623248,3025623251,HK
+3025623252,3025623295,IN
3025623296,3025623551,JP
3025623552,3025623807,SG
3025623808,3025624063,IN
@@ -70389,7 +71262,7 @@
3025625856,3025625887,IN
3025625888,3025625915,SG
3025625916,3025625919,IN
-3025625920,3025625927,SG
+3025625920,3025625927,KR
3025625928,3025625935,IN
3025625936,3025625983,SG
3025625984,3025626111,IN
@@ -70410,13 +71283,13 @@
3025631776,3025631839,HK
3025631840,3025631999,IN
3025632000,3025632255,HK
-3025632256,3025632423,SG
-3025632424,3025632447,IN
+3025632256,3025632427,SG
+3025632428,3025632447,IN
3025632448,3025632463,SG
3025632464,3025632479,HK
3025632480,3025632511,IN
-3025632512,3025633023,SG
-3025633024,3025633535,IN
+3025632512,3025633151,SG
+3025633152,3025633535,IN
3025633536,3025633791,HK
3025633792,3025633807,AU
3025633808,3025633823,IN
@@ -70431,10 +71304,11 @@
3025637376,3025637631,HK
3025637632,3025637887,MY
3025637888,3025638015,IN
-3025638016,3025638023,HK
-3025638024,3025638031,IN
+3025638016,3025638027,HK
+3025638028,3025638031,IN
3025638032,3025638047,HK
-3025638048,3025638279,IN
+3025638048,3025638063,MY
+3025638064,3025638279,IN
3025638280,3025638287,SG
3025638288,3025638399,IN
3025638400,3025638655,SG
@@ -70561,7 +71435,8 @@
3029604352,3029605375,AU
3029605376,3029606399,JP
3029606400,3029614591,IN
-3029614592,3029630975,AU
+3029614592,3029622783,AU
+3029622784,3029630975,NZ
3029630976,3029635071,VN
3029635072,3029637119,JP
3029637120,3029639167,CN
@@ -70581,7 +71456,9 @@
3029715200,3029715455,AU
3029715456,3029716991,JP
3029716992,3029721087,PK
-3029721088,3029723135,IN
+3029721088,3029722111,IN
+3029722112,3029722367,AU
+3029722368,3029723135,IN
3029723136,3029724159,BD
3029724160,3029725183,CN
3029725184,3029727231,IN
@@ -70780,7 +71657,9 @@
3039416736,3039416739,US
3039416740,3039416741,SG
3039416742,3039416831,CL
-3039416832,3039417599,BR
+3039416832,3039417087,BR
+3039417088,3039417343,DE
+3039417344,3039417599,BR
3039417600,3039417855,US
3039417856,3039418111,BR
3039418112,3039418623,US
@@ -70994,8 +71873,7 @@
3050708992,3050709007,AT
3050709008,3050709119,BR
3050709120,3050709247,US
-3050709248,3050709375,DE
-3050709376,3050709503,BR
+3050709248,3050709503,DE
3050709504,3050709519,TH
3050709520,3050709631,BR
3050709632,3050709759,US
@@ -71202,9 +72080,7 @@
3050805312,3050805375,FI
3050805376,3050805759,US
3050805760,3050805791,DK
-3050805792,3050827775,US
-3050827776,3050828799,IL
-3050828800,3050829567,US
+3050805792,3050829567,US
3050829568,3050829823,UA
3050829824,3050831871,US
3050831872,3051356159,BR
@@ -71566,9 +72442,7 @@
3088686592,3088687103,NL
3088687104,3088701439,US
3088701440,3088702463,NL
-3088702464,3088752639,US
-3088752640,3088752895,NL
-3088752896,3088753919,US
+3088702464,3088753919,US
3088753920,3088754175,NL
3088754176,3088785407,US
3088785408,3088786431,NL
@@ -71830,6 +72704,8 @@
3103870464,3103870719,MD
3103870976,3103871231,IT
3103871232,3103871487,RU
+3103871488,3103871743,SE
+3103872000,3103872511,UA
3103916032,3103917055,CH
3103917056,3103918079,IT
3103918080,3103919103,DE
@@ -72008,7 +72884,7 @@
3104089088,3104090111,GB
3104090112,3104091135,CH
3104091136,3104092159,NO
-3104092160,3104094207,RU
+3104093184,3104094207,RU
3104094208,3104096255,ES
3104096256,3104097279,IE
3104097280,3104098303,GB
@@ -72401,7 +73277,9 @@
3104495616,3104496639,JO
3104496640,3104497663,DK
3104497664,3104498687,CH
-3104498688,3104500735,NL
+3104498688,3104499119,NL
+3104499120,3104499127,IT
+3104499128,3104500735,NL
3104500736,3104501759,CZ
3104501760,3104502783,LY
3104502784,3104503807,DE
@@ -73255,7 +74133,9 @@
3105373184,3105374207,SY
3105374208,3105375231,GB
3105375232,3105375295,IT
-3105375296,3105375375,CA
+3105375296,3105375327,DE
+3105375328,3105375367,CA
+3105375368,3105375375,DE
3105375376,3105375391,US
3105375392,3105375551,IT
3105375552,3105375615,DE
@@ -74898,7 +75778,8 @@
3106966528,3106967551,IT
3106967552,3106968575,CH
3106968576,3106969599,KZ
-3106969600,3106970623,DK
+3106969600,3106969631,DK
+3106969632,3106970623,NO
3106970624,3106971647,DE
3106971648,3106973695,GB
3106973696,3106974719,PL
@@ -75259,7 +76140,7 @@
3107337216,3107339263,PL
3107339264,3107340287,LB
3107340288,3107341311,GB
-3107341312,3107342335,DE
+3107341312,3107342335,NL
3107342336,3107343359,GB
3107343360,3107344383,DE
3107344384,3107345407,CH
@@ -75912,7 +76793,8 @@
3108001792,3108002815,GB
3108002816,3108003839,RO
3108003840,3108004863,DE
-3108004864,3108005887,RU
+3108004864,3108005375,RU
+3108005376,3108005887,GB
3108005888,3108006911,LT
3108006912,3108007935,NL
3108007936,3108008959,DE
@@ -76477,7 +77359,9 @@
3108592640,3108593663,NL
3108593664,3108594687,ES
3108594688,3108597759,CZ
-3108597760,3108598783,IR
+3108597760,3108598271,IR
+3108598272,3108598527,GB
+3108598528,3108598783,IR
3108598784,3108600831,CH
3108600832,3108601855,NL
3108601856,3108602879,US
@@ -76693,9 +77577,7 @@
3108844544,3108845567,LI
3108845568,3108846591,GB
3108846592,3108847615,BE
-3108847616,3108847959,GB
-3108847960,3108847967,IT
-3108847968,3108848639,GB
+3108847616,3108848639,GB
3108848640,3108849663,CH
3108849664,3108850687,GB
3108850688,3108851711,PL
@@ -76939,7 +77821,9 @@
3109082112,3109083135,PL
3109083136,3109084159,SE
3109084160,3109085183,NL
-3109085184,3109086207,AL
+3109085184,3109085439,AL
+3109085440,3109085695,BG
+3109085696,3109086207,AL
3109086208,3109087231,RU
3109087232,3109088255,NL
3109088256,3109089279,LV
@@ -76969,7 +77853,9 @@
3109113856,3109115903,AZ
3109115904,3109116927,AU
3109116928,3109117951,GE
-3109117952,3109118975,IR
+3109117952,3109118463,IR
+3109118464,3109118719,NL
+3109118720,3109118975,IR
3109118976,3109119999,DE
3109120000,3109121023,PL
3109121024,3109122047,SE
@@ -77317,7 +78203,9 @@
3109456896,3109457919,PS
3109457920,3109458943,RU
3109458944,3109459711,SE
-3109459712,3109459869,GB
+3109459712,3109459771,GB
+3109459772,3109459772,LV
+3109459773,3109459869,GB
3109459870,3109459870,LV
3109459871,3109459967,GB
3109459968,3109460991,TR
@@ -77692,8 +78580,7 @@
3109847040,3109848063,AE
3109848064,3109849087,BG
3109849088,3109852159,RU
-3109852160,3109853183,NL
-3109853184,3109854207,DE
+3109852160,3109854207,DE
3109854208,3109855231,PL
3109855232,3109856255,DE
3109856256,3109857279,IT
@@ -77719,17 +78606,18 @@
3109876736,3109877759,ES
3109877760,3109878783,PL
3109878784,3109879807,GB
-3109879808,3109880063,US
-3109880064,3109880831,CZ
+3109879808,3109880319,US
+3109880320,3109880831,CZ
3109880832,3109881087,GB
3109881088,3109881855,FR
3109881856,3109882879,AT
3109882880,3109883903,NL
-3109883904,3109884927,BE
+3109883904,3109884927,RO
3109884928,3109885951,GL
3109885952,3109886975,NL
3109886976,3109887999,GB
-3109888000,3109888767,PL
+3109888000,3109888255,CZ
+3109888256,3109888767,PL
3109888768,3109889023,RU
3109889024,3109890047,FR
3109890048,3109891071,RU
@@ -77804,8 +78692,7 @@
3109947392,3109948415,CH
3109948416,3109949439,SE
3109949440,3109949695,IT
-3109949696,3109949951,GB
-3109949952,3109950207,ES
+3109949696,3109950207,GB
3109950208,3109950463,DE
3109950464,3109951487,IT
3109951488,3109952511,DE
@@ -78060,8 +78947,8 @@
3110181888,3110182911,IT
3110182912,3110183935,GB
3110183936,3110184959,RU
-3110184960,3110185983,ES
-3110185984,3110187007,DE
+3110184960,3110185984,ES
+3110185985,3110187007,DE
3110187008,3110187263,BE
3110187264,3110189055,DE
3110189056,3110190079,FR
@@ -78254,7 +79141,10 @@
3110379520,3110380543,DE
3110380544,3110381567,IT
3110381568,3110382591,LB
-3110382592,3110383615,GB
+3110382592,3110382847,GB
+3110382848,3110383103,US
+3110383104,3110383359,GB
+3110383360,3110383615,US
3110383616,3110384639,IT
3110384640,3110385663,ES
3110385664,3110386687,FR
@@ -78413,7 +79303,9 @@
3110543360,3110545407,NL
3110545408,3110546431,UA
3110546432,3110547455,DE
-3110547456,3110548479,SE
+3110547456,3110547967,SE
+3110547968,3110548223,JP
+3110548224,3110548479,DE
3110548480,3110549503,IT
3110549504,3110550527,NL
3110550528,3110551551,RU
@@ -78428,7 +79320,8 @@
3110559744,3110560767,GB
3110560768,3110561791,RU
3110561792,3110562815,IE
-3110562816,3110563327,RU
+3110562816,3110563071,RU
+3110563072,3110563327,US
3110563328,3110563583,FI
3110563584,3110563839,RU
3110563840,3110564863,IT
@@ -78750,11 +79643,7 @@
3110914048,3110915071,AT
3110915072,3110916095,ES
3110916096,3110918143,RU
-3110918144,3110918607,DE
-3110918608,3110918623,CA
-3110918624,3110918911,DE
-3110918912,3110919135,CA
-3110919136,3110919167,DE
+3110918144,3110919167,DE
3110919168,3110920191,RU
3110920192,3110921215,NL
3110921216,3110922239,DE
@@ -78966,7 +79855,7 @@
3111144448,3111145471,ES
3111145472,3111145983,RU
3111145984,3111146239,FI
-3111146240,3111146495,RU
+3111146240,3111146495,US
3111146496,3111149567,IT
3111149568,3111150591,GB
3111150592,3111151615,RU
@@ -79005,7 +79894,7 @@
3111183360,3111184383,FR
3111184384,3111185407,IQ
3111185408,3111186431,RU
-3111186432,3111189503,GB
+3111187456,3111189503,GB
3111189504,3111190527,DE
3111190528,3111191551,GB
3111191552,3111192575,DE
@@ -79219,7 +80108,7 @@
3111397376,3111399423,NL
3111399424,3111400447,CZ
3111400448,3111402495,GB
-3111402496,3111403519,BE
+3111402496,3111403519,KE
3111403520,3111404543,IE
3111404544,3111405567,GB
3111405568,3111406591,BE
@@ -79471,8 +80360,7 @@
3111660544,3111661567,ES
3111661568,3111662591,FI
3111662592,3111663615,GB
-3111663616,3111663871,LB
-3111663872,3111664639,RU
+3111663616,3111664639,RU
3111664640,3111665663,DE
3111665664,3111666687,PL
3111666688,3111667711,CZ
@@ -79488,8 +80376,8 @@
3111676928,3111677951,AE
3111677952,3111678975,ES
3111678976,3111679231,GB
-3111679232,3111679487,NL
-3111679488,3111679999,GB
+3111679232,3111679743,NL
+3111679744,3111679999,GB
3111680000,3111681023,IR
3111681024,3111682047,IL
3111682048,3111683071,GB
@@ -79832,9 +80720,8 @@
3112034336,3112034336,IL
3112034337,3112034337,AE
3112034338,3112034338,SA
-3112034339,3112034569,DE
-3112034570,3112034573,US
-3112034574,3112034579,DE
+3112034339,3112034559,DE
+3112034560,3112034579,US
3112034580,3112034580,VE
3112034581,3112034581,CO
3112034582,3112034582,BR
@@ -79845,8 +80732,7 @@
3112034587,3112034587,PY
3112034588,3112034588,UY
3112034589,3112034589,MX
-3112034590,3112034815,DE
-3112034816,3112034835,US
+3112034590,3112034835,US
3112034836,3112034836,CA
3112034837,3112035091,US
3112035092,3112035092,CA
@@ -79882,10 +80768,10 @@
3112074240,3112075263,IR
3112075264,3112076287,RU
3112076288,3112077311,IR
-3112077312,3112078335,ES
+3112077312,3112078335,GB
3112078336,3112079359,IT
3112079360,3112080383,IR
-3112080384,3112081407,ES
+3112080384,3112081407,GB
3112081408,3112082431,DK
3112082432,3112083455,IR
3112083456,3112085503,GB
@@ -79903,12 +80789,12 @@
3112096768,3112097791,DE
3112097792,3112098815,TR
3112098816,3112099839,CH
-3112099840,3112100863,ES
+3112099840,3112100863,GB
3112100864,3112102911,FR
-3112102912,3112103935,ES
+3112102912,3112103935,GB
3112103936,3112104959,DE
3112104960,3112105983,FR
-3112105984,3112107007,ES
+3112105984,3112107007,GB
3112107008,3112108031,UA
3112108032,3112109055,LT
3112109056,3112110079,FR
@@ -80393,7 +81279,8 @@
3112635264,3112635391,DE
3112635392,3112636415,BE
3112636416,3112637439,AT
-3112637440,3112638463,CZ
+3112637440,3112637951,CZ
+3112637952,3112638463,SK
3112638464,3112639487,DE
3112639488,3112640511,IR
3112640512,3112641535,DE
@@ -80519,7 +81406,9 @@
3112764416,3112765439,NO
3112765440,3112766463,GB
3112766464,3112767487,DE
-3112767488,3112768511,NL
+3112767488,3112768018,NL
+3112768019,3112768019,RU
+3112768020,3112768511,NL
3112768512,3112769535,IE
3112769536,3112770559,IR
3112770560,3112771583,DE
@@ -80720,7 +81609,8 @@
3112972288,3112973311,US
3112973312,3112973567,SE
3112973568,3112973823,DE
-3112973824,3112974335,SE
+3112973824,3112974079,UA
+3112974080,3112974335,SE
3112974336,3112975359,IR
3112975360,3112977407,ES
3112977408,3112978431,FR
@@ -80762,7 +81652,6 @@
3113012224,3113013247,US
3113013248,3113014271,RU
3113014272,3113016319,ES
-3113016320,3113017343,FI
3113017344,3113018367,NL
3113018368,3113019391,LT
3113019392,3113020415,IR
@@ -80853,7 +81742,7 @@
3113102336,3113103359,ES
3113103360,3113104383,SK
3113104384,3113105407,FR
-3113105408,3113106431,US
+3113105408,3113106431,PS
3113106432,3113107455,ES
3113107456,3113108479,RU
3113108480,3113109503,IT
@@ -80872,7 +81761,7 @@
3113123840,3113124863,GB
3113124864,3113125887,RU
3113125888,3113126911,FR
-3113126912,3113127167,GB
+3113126912,3113127167,US
3113127168,3113127423,NL
3113127424,3113127935,AT
3113127936,3113128959,NL
@@ -80896,7 +81785,7 @@
3113149440,3113150463,DE
3113150464,3113151487,IR
3113151488,3113152511,NL
-3113152512,3113153535,NO
+3113152512,3113153535,SG
3113153536,3113154559,IT
3113154560,3113156607,NL
3113156608,3113157631,ES
@@ -81059,7 +81948,7 @@
3113297664,3113297887,DE
3113297888,3113297919,GB
3113297920,3113298943,ES
-3113298944,3113299199,MD
+3113298944,3113299199,RU
3113299200,3113299455,NL
3113299456,3113300991,GB
3113300992,3113303039,RU
@@ -81185,7 +82074,9 @@
3113425152,3113425407,SK
3113425408,3113425919,CZ
3113425920,3113426943,KW
-3113426944,3113427967,IM
+3113426944,3113427455,IM
+3113427456,3113427711,NL
+3113427712,3113427967,IM
3113427968,3113428991,RU
3113428992,3113430015,IR
3113430016,3113431039,CZ
@@ -81195,7 +82086,9 @@
3113434112,3113435135,TR
3113435136,3113436159,FR
3113436160,3113437183,PL
-3113437184,3113438207,DK
+3113437184,3113437439,DK
+3113437440,3113437567,GB
+3113437568,3113438207,DK
3113438208,3113439231,DE
3113439232,3113440255,RU
3113440256,3113441279,IR
@@ -81347,7 +82240,7 @@
3113596928,3113597951,CZ
3113597952,3113598975,IT
3113598976,3113599999,GB
-3113600000,3113601023,PA
+3113600000,3113601023,UA
3113601024,3113602047,PL
3113602048,3113603071,CZ
3113603072,3113604095,GB
@@ -81577,7 +82470,7 @@
3113762816,3113763839,SK
3113763840,3113764863,VA
3113764864,3113765887,IE
-3113765888,3113767935,RU
+3113766912,3113767935,RU
3113767936,3113768959,NL
3113768960,3113769983,TR
3113769984,3113771007,RU
@@ -81623,7 +82516,6 @@
3113814016,3113815039,FR
3113815040,3113816063,MD
3113816064,3113817087,ES
-3113817088,3113818111,GB
3113818112,3113819135,SI
3113819136,3113820159,FR
3113820160,3113822207,PL
@@ -81666,7 +82558,7 @@
3113859072,3113860095,IR
3113860096,3113861119,NL
3113861120,3113862143,CZ
-3113862144,3113863167,RU
+3113862144,3113863167,MD
3113863168,3113864191,LT
3113864192,3113865215,GB
3113865216,3113866239,IR
@@ -81829,8 +82721,7 @@
3114027008,3114028031,RU
3114028032,3114030079,FR
3114030080,3114031103,DE
-3114031104,3114032127,NO
-3114032128,3114033151,FI
+3114031104,3114033151,FI
3114033152,3114034175,DK
3114034176,3114035199,ES
3114035200,3114036223,GB
@@ -81910,7 +82801,8 @@
3114112000,3114113023,GB
3114113024,3114114047,ES
3114114048,3114115071,DE
-3114115072,3114116095,SE
+3114115072,3114115839,SE
+3114115840,3114116095,CA
3114116096,3114117119,PL
3114117120,3114118143,SE
3114118144,3114119167,PL
@@ -82011,13 +82903,11 @@
3114194944,3114195967,BY
3114195968,3114196991,GR
3114196992,3114198015,DE
-3114198016,3114198336,AT
-3114198337,3114198400,DE
-3114198401,3114198527,US
-3114198528,3114199039,AT
+3114198016,3114199039,AT
3114199040,3114201087,IT
3114201088,3114203135,GB
-3114203136,3114203647,NL
+3114203136,3114203391,RO
+3114203392,3114203647,NL
3114203648,3114204159,DE
3114204160,3114205183,ES
3114205184,3114206207,IT
@@ -82104,11 +82994,21 @@
3114285056,3114286079,NL
3114286080,3114288127,UA
3114288128,3114289151,IS
-3114289152,3114292223,BG
+3114289152,3114290175,BG
+3114290176,3114291199,MD
+3114291200,3114292223,BG
3114292224,3114293247,DE
3114293248,3114294271,UA
3114294272,3114295295,RO
-3114295296,3114297343,DE
+3114295296,3114296319,DE
+3114296320,3114296447,IE
+3114296448,3114296575,GB
+3114296576,3114296703,ES
+3114296704,3114296831,PT
+3114296832,3114296959,PL
+3114296960,3114297087,HR
+3114297088,3114297215,FR
+3114297216,3114297343,IT
3114297344,3114298367,IR
3114298368,3114299391,SK
3114299392,3114300415,IE
@@ -82196,7 +83096,7 @@
3114386432,3114387455,NL
3114387456,3114388479,US
3114388480,3114389503,HU
-3114389504,3114390527,UA
+3114389504,3114390527,NL
3114390528,3114391551,SE
3114391552,3114392575,MD
3114392576,3114393599,IT
@@ -82207,7 +83107,9 @@
3114397696,3114398719,CZ
3114398720,3114399743,AT
3114399744,3114400767,GB
-3114400768,3114401791,CZ
+3114400768,3114401023,SK
+3114401024,3114401279,CZ
+3114401280,3114401791,SK
3114401792,3114402815,HU
3114402816,3114403839,CZ
3114403840,3114404863,NL
@@ -82219,7 +83121,18 @@
3114409984,3114411007,RU
3114411008,3114412031,IT
3114412032,3114413055,IR
-3114413056,3114414079,DE
+3114413056,3114413119,LT
+3114413120,3114413183,EE
+3114413184,3114413247,LV
+3114413248,3114413311,PL
+3114413312,3114413439,DK
+3114413440,3114413567,DE
+3114413568,3114413631,CZ
+3114413632,3114413695,HU
+3114413696,3114413759,BG
+3114413760,3114413823,MD
+3114413824,3114413951,DE
+3114413952,3114414079,CH
3114414080,3114415103,IT
3114415104,3114416127,ES
3114416128,3114417151,NL
@@ -82338,7 +83251,18 @@
3114536960,3114537983,IL
3114537984,3114541055,SA
3114541056,3114542079,BA
-3114542080,3114543103,DE
+3114542080,3114542207,SE
+3114542208,3114542335,NO
+3114542336,3114542399,SI
+3114542400,3114542463,SK
+3114542464,3114542527,RO
+3114542528,3114542591,RS
+3114542592,3114542719,BE
+3114542720,3114542847,NL
+3114542848,3114542911,TH
+3114542912,3114542975,ID
+3114542976,3114543039,KR
+3114543040,3114543103,MY
3114543104,3114544127,ES
3114544128,3114545151,GB
3114545152,3114546175,MD
@@ -82397,14 +83321,26 @@
3114600448,3114603519,DE
3114603520,3114604543,TR
3114604544,3114605567,BG
-3114605568,3114606591,IR
+3114605568,3114606335,IR
+3114606336,3114606591,GB
3114606592,3114607615,FR
3114607616,3114608639,SK
3114608640,3114609663,IR
3114609664,3114610687,TR
3114610688,3114612735,NL
3114612736,3114613759,IT
-3114613760,3114614783,DE
+3114613760,3114613823,JP
+3114613824,3114613887,AU
+3114613888,3114613951,TW
+3114613952,3114614015,SG
+3114614016,3114614079,SA
+3114614080,3114614143,AE
+3114614144,3114614207,PK
+3114614208,3114614271,TR
+3114614272,3114614399,MX
+3114614400,3114614527,IN
+3114614528,3114614655,FI
+3114614656,3114614783,CA
3114614784,3114615807,FR
3114615808,3114616831,NL
3114616832,3114617855,DK
@@ -82496,14 +83432,14 @@
3114713088,3114714111,CH
3114714112,3114715135,RU
3114715136,3114716159,DE
-3114716160,3114717183,NO
-3114717184,3114718207,SE
+3114716160,3114718207,SE
3114718208,3114719231,ES
3114719232,3114721279,UA
3114721280,3114722303,GB
3114722304,3114723327,HU
3114723328,3114724351,SE
-3114724352,3114725375,NL
+3114724352,3114725119,NL
+3114725120,3114725375,US
3114725376,3114726399,RU
3114726400,3114727423,SE
3114727424,3114728447,BE
@@ -82545,10 +83481,9 @@
3114768384,3114769407,IL
3114769408,3114770431,DE
3114770432,3114771455,UA
-3114771456,3114771967,US
-3114771968,3114772479,DK
+3114771456,3114772479,DK
3114772480,3114773503,GB
-3114773504,3114774527,DE
+3114773504,3114774527,BG
3114774528,3114775551,SE
3114775552,3114776575,GB
3114776576,3114777599,CZ
@@ -82559,7 +83494,7 @@
3114781696,3114782719,NL
3114782720,3114783743,CZ
3114783744,3114784767,PL
-3114784768,3114785791,RU
+3114784768,3114785791,EE
3114785792,3114786815,FR
3114786816,3114787839,RU
3114787840,3114788863,GB
@@ -82588,7 +83523,8 @@
3114812416,3114813439,IL
3114813440,3114814463,NO
3114814464,3114815487,IT
-3114815488,3114816511,DE
+3114815488,3114815743,BE
+3114815744,3114816511,DE
3114816512,3114817535,NL
3114817536,3114818559,IT
3114818560,3114819583,GB
@@ -82683,11 +83619,11 @@
3114915840,3114916863,RU
3114916864,3114917887,LB
3114917888,3114918911,IT
-3114918912,3114919167,CH
-3114919168,3114919423,GI
+3114918912,3114919423,CH
3114919424,3114919679,UA
3114919680,3114919935,CH
-3114919936,3114920959,GB
+3114919936,3114920703,GB
+3114920704,3114920959,NL
3114920960,3114921983,IT
3114921984,3114923007,CH
3114923008,3114924031,GB
@@ -82821,8 +83757,7 @@
3115062272,3115063295,GB
3115063296,3115064319,EE
3115064320,3115066367,MD
-3115066368,3115066879,NL
-3115066880,3115067391,US
+3115066368,3115067391,NL
3115067392,3115068415,DE
3115068416,3115069439,HU
3115069440,3115070463,NL
@@ -82848,7 +83783,8 @@
3115090944,3115091967,NL
3115091968,3115092991,RU
3115092992,3115094015,IT
-3115094016,3115095039,NL
+3115094016,3115094527,DE
+3115094528,3115095039,NL
3115095040,3115096063,DE
3115096064,3115097087,FR
3115097088,3115098111,LT
@@ -82881,7 +83817,9 @@
3115127808,3115128831,NL
3115128832,3115129855,DE
3115129856,3115130879,BA
-3115130880,3115131903,DE
+3115130880,3115131135,DE
+3115131136,3115131391,PA
+3115131392,3115131903,DE
3115131904,3115132927,RU
3115132928,3115133951,KW
3115133952,3115134975,ES
@@ -82921,7 +83859,7 @@
3115171840,3115172863,GB
3115172864,3115173887,SE
3115173888,3115174911,FR
-3115174912,3115175935,RS
+3115174912,3115175935,AL
3115175936,3115176959,FI
3115176960,3115177983,IT
3115177984,3115179007,NL
@@ -82940,8 +83878,7 @@
3115192320,3115193343,HU
3115193344,3115194367,TR
3115194368,3115195391,FI
-3115195392,3115195647,DE
-3115195648,3115196415,TR
+3115195392,3115196415,DE
3115196416,3115197439,LI
3115197440,3115198463,DE
3115198464,3115199487,NL
@@ -83023,7 +83960,9 @@
3115276288,3115277311,NL
3115277312,3115278335,ES
3115278336,3115279359,NO
-3115279360,3115280383,GB
+3115279360,3115279871,GB
+3115279872,3115280127,DE
+3115280128,3115280383,FR
3115280384,3115281407,PL
3115281408,3115282431,IL
3115282432,3115283455,GB
@@ -83033,6 +83972,303 @@
3115286528,3115287551,RU
3115287552,3115288575,SK
3115288576,3115289599,GB
+3115289600,3115290623,CZ
+3115290624,3115291647,GB
+3115291648,3115292671,FR
+3115292672,3115293695,GB
+3115293696,3115294719,RU
+3115294720,3115295743,GB
+3115295744,3115296767,NL
+3115296768,3115297791,IE
+3115297792,3115298815,RU
+3115298816,3115299839,FI
+3115299840,3115300863,BE
+3115300864,3115301887,PT
+3115301888,3115302911,NL
+3115302912,3115303935,LT
+3115303936,3115305983,NL
+3115305984,3115306495,TR
+3115306496,3115307007,BE
+3115307008,3115308031,DE
+3115308032,3115309055,IT
+3115309056,3115310079,BE
+3115310080,3115311103,CZ
+3115311104,3115312127,RU
+3115312128,3115313151,SY
+3115313152,3115314175,DE
+3115314176,3115315199,UA
+3115315200,3115316223,IR
+3115316224,3115317247,UA
+3115317248,3115318271,JO
+3115318272,3115319295,AL
+3115319296,3115320319,IE
+3115320320,3115322367,ES
+3115322368,3115323391,IE
+3115323392,3115324415,DE
+3115324416,3115325439,IT
+3115325440,3115326463,RU
+3115326464,3115327487,SE
+3115327488,3115328511,IR
+3115328512,3115329535,NO
+3115329536,3115330559,BG
+3115330560,3115331583,JO
+3115331584,3115332607,NL
+3115332608,3115333631,IS
+3115333632,3115334655,IR
+3115334656,3115335679,LV
+3115335680,3115336703,FR
+3115336704,3115337727,ES
+3115337728,3115338751,SK
+3115338752,3115340799,GB
+3115340800,3115341823,ES
+3115341824,3115342847,GB
+3115342848,3115343871,RU
+3115343872,3115344895,SE
+3115344896,3115345919,IE
+3115345920,3115346943,ES
+3115346944,3115347967,UA
+3115347968,3115348991,GB
+3115348992,3115350015,LV
+3115350016,3115351039,PL
+3115351040,3115352063,GB
+3115352064,3115353087,IE
+3115353088,3115354111,GB
+3115354112,3115355135,CZ
+3115355136,3115356159,NL
+3115356160,3115357183,LB
+3115357184,3115358207,FR
+3115358208,3115362303,DE
+3115362304,3115363327,FR
+3115363328,3115364351,GB
+3115364352,3115365375,FR
+3115365376,3115366399,ES
+3115366400,3115367423,SE
+3115367424,3115368447,ES
+3115368448,3115369471,BG
+3115369472,3115370495,GB
+3115370496,3115371519,IT
+3115371520,3115372543,GB
+3115372544,3115373567,LB
+3115373568,3115374591,NO
+3115374592,3115375615,BG
+3115375616,3115376639,LV
+3115376640,3115377663,UA
+3115377664,3115378687,DE
+3115378688,3115379711,FR
+3115379712,3115380735,CH
+3115380736,3115381759,GB
+3115381760,3115382783,NO
+3115382784,3115383807,GB
+3115383808,3115384831,DE
+3115384832,3115385855,TJ
+3115385856,3115387903,SK
+3115387904,3115388927,MK
+3115388928,3115389951,AT
+3115389952,3115390463,GB
+3115390464,3115390719,RO
+3115390720,3115390975,NL
+3115390976,3115391999,GB
+3115392000,3115393023,AL
+3115393024,3115395071,IT
+3115395072,3115396095,ES
+3115396096,3115397119,FR
+3115397120,3115398143,GB
+3115398144,3115399167,RU
+3115399168,3115400191,BG
+3115400192,3115401215,RU
+3115401216,3115402239,GB
+3115402240,3115403263,NL
+3115403264,3115404287,ES
+3115404288,3115406335,GB
+3115406336,3115407359,DE
+3115407360,3115408383,CY
+3115408384,3115409407,MD
+3115409408,3115410431,RU
+3115410432,3115411455,NL
+3115411456,3115412479,AM
+3115412480,3115414527,RU
+3115414528,3115415551,DE
+3115415552,3115416575,DK
+3115416576,3115417599,MD
+3115417600,3115418623,DE
+3115418624,3115419647,IS
+3115419648,3115420671,NL
+3115420672,3115421695,DE
+3115421696,3115422719,NL
+3115422720,3115423743,DE
+3115423744,3115424767,ES
+3115424768,3115425791,IR
+3115425792,3115426815,DK
+3115426816,3115427839,TR
+3115427840,3115428863,ES
+3115428864,3115429887,US
+3115429888,3115430399,NL
+3115430400,3115430911,FI
+3115430912,3115431935,FR
+3115431936,3115432959,GB
+3115432960,3115433983,UA
+3115433984,3115435007,IT
+3115435008,3115436031,ES
+3115436032,3115437055,GB
+3115437056,3115438079,DE
+3115438080,3115439103,GB
+3115439104,3115440127,IT
+3115440128,3115441151,RU
+3115441152,3115442175,NL
+3115442176,3115443199,FR
+3115443200,3115444223,GB
+3115444224,3115445247,US
+3115445248,3115446271,RU
+3115446272,3115447295,UA
+3115447296,3115448319,IT
+3115448320,3115449343,DE
+3115449344,3115450367,BG
+3115450368,3115451391,AT
+3115451392,3115452415,BG
+3115452416,3115453439,IT
+3115453440,3115454463,MD
+3115454464,3115455487,ES
+3115455488,3115456511,DK
+3115456512,3115457535,DE
+3115457536,3115458559,FR
+3115458560,3115461631,DE
+3115461632,3115462655,UA
+3115462656,3115463679,GB
+3115463680,3115464703,FR
+3115464704,3115465727,TR
+3115465728,3115466751,CH
+3115466752,3115468799,IE
+3115468800,3115469823,DE
+3115469824,3115470847,FR
+3115470848,3115471871,ES
+3115471872,3115472895,PL
+3115472896,3115473919,UA
+3115473920,3115474943,IT
+3115474944,3115475967,PL
+3115475968,3115476991,IT
+3115476992,3115478015,IR
+3115478016,3115479039,DE
+3115479040,3115480063,DK
+3115480064,3115481087,DE
+3115481088,3115482111,CH
+3115482112,3115483135,SE
+3115483136,3115484159,RU
+3115484160,3115485183,FR
+3115485184,3115486207,ES
+3115486208,3115487231,SE
+3115487232,3115488255,NL
+3115488256,3115489279,SY
+3115489280,3115490303,US
+3115490304,3115491327,PL
+3115491328,3115492351,ES
+3115492352,3115493375,GB
+3115493376,3115494399,ES
+3115494400,3115495423,CZ
+3115495424,3115496447,GR
+3115496448,3115497471,SE
+3115497472,3115498495,FR
+3115498496,3115499519,GB
+3115499520,3115501567,DE
+3115501568,3115502591,NL
+3115502592,3115504639,RU
+3115504640,3115505663,DE
+3115505664,3115506687,GB
+3115506688,3115507711,IR
+3115507712,3115508735,SI
+3115508736,3115509759,RO
+3115509760,3115510783,NL
+3115510784,3115511807,PL
+3115511808,3115512831,TR
+3115512832,3115513855,RU
+3115513856,3115514879,FR
+3115514880,3115515903,IT
+3115515904,3115517951,RU
+3115517952,3115518975,KZ
+3115518976,3115519999,UA
+3115520000,3115521023,CH
+3115521024,3115522047,GB
+3115522048,3115523071,TR
+3115523072,3115524095,AL
+3115524096,3115525119,CZ
+3115525120,3115526143,RU
+3115526144,3115527167,IE
+3115527168,3115528191,BE
+3115528192,3115529215,SI
+3115529216,3115530239,ME
+3115530240,3115531263,PL
+3115531264,3115532287,AT
+3115532288,3115533311,DE
+3115533312,3115534335,MT
+3115534336,3115535359,RU
+3115535360,3115536383,IS
+3115536384,3115537407,BY
+3115537408,3115538431,RU
+3115538432,3115539455,NL
+3115539456,3115540479,ME
+3115540480,3115541503,DK
+3115541504,3115542527,DE
+3115542528,3115543551,ES
+3115543552,3115544575,IS
+3115544576,3115545599,NL
+3115545600,3115546623,FI
+3115546624,3115547647,GB
+3115547648,3115548671,RU
+3115548672,3115549695,NO
+3115549696,3115550719,PL
+3115550720,3115551743,RS
+3115551744,3115552767,ES
+3115552768,3115553791,RU
+3115553792,3115554815,FR
+3115554816,3115555839,DE
+3115555840,3115556863,RO
+3115556864,3115557887,RU
+3115557888,3115558911,DE
+3115558912,3115559935,IR
+3115559936,3115560959,RU
+3115560960,3115561983,FR
+3115561984,3115563007,DE
+3115563008,3115564031,ES
+3115564032,3115565055,RU
+3115565056,3115566079,FR
+3115566080,3115567103,RU
+3115567104,3115569151,NL
+3115569152,3115570175,GB
+3115570176,3115571199,UA
+3115571200,3115572223,SI
+3115572224,3115573247,IR
+3115573248,3115574271,RU
+3115574272,3115575295,GB
+3115575296,3115576319,ES
+3115576320,3115577343,FI
+3115577344,3115577567,IL
+3115577568,3115577583,US
+3115577584,3115577855,IL
+3115577856,3115578367,NL
+3115578368,3115579391,GB
+3115579392,3115580415,US
+3115580416,3115581439,GB
+3115581440,3115582463,CZ
+3115582464,3115583487,GB
+3115583488,3115584511,NL
+3115584512,3115585535,CZ
+3115585536,3115586559,RU
+3115586560,3115587583,CH
+3115587584,3115588607,DE
+3115588608,3115589631,TR
+3115589632,3115590655,GB
+3115590656,3115591423,GR
+3115591424,3115591679,NL
+3115591680,3115592703,CH
+3115592704,3115593727,BE
+3115593728,3115594751,GB
+3115594752,3115595775,IR
+3115595776,3115596799,RU
+3115596800,3115597823,IQ
+3115597824,3115598847,NO
+3115598848,3115599871,BE
+3115599872,3115600895,HU
+3115600896,3115601919,BE
+3115601920,3115602943,JO
3117416448,3117417471,FR
3120562176,3120594943,CO
3120594944,3120599039,AR
@@ -83332,7 +84568,9 @@
3154571776,3154575359,HU
3154575360,3154640895,FR
3154640896,3155165183,IT
-3155165184,3155427327,RU
+3155165184,3155312938,RU
+3155312939,3155312939,US
+3155312940,3155427327,RU
3155427328,3155689471,AT
3155689472,3155951615,RO
3155951616,3156213759,GB
@@ -83479,7 +84717,8 @@
3158852608,3158853119,ES
3158853120,3158853631,NL
3158853632,3158855679,RU
-3158855680,3158859903,NL
+3158855680,3158857727,US
+3158857728,3158859903,NL
3158859904,3158860031,CZ
3158860032,3158860287,GB
3158860288,3158860543,NL
@@ -83689,7 +84928,8 @@
3161833472,3161835519,RS
3161835520,3161841663,AT
3161841664,3161845759,RS
-3161845760,3161847807,AT
+3161845760,3161846271,GR
+3161846272,3161847807,AT
3161847808,3161849855,GR
3161849856,3161866239,BE
3161866240,3161882623,IR
@@ -83794,8 +85034,7 @@
3162682368,3162682879,MD
3162682880,3162683135,GB
3162683136,3162683391,ES
-3162683392,3162685439,RU
-3162685440,3162693631,EE
+3162683392,3162693631,EE
3162693632,3162701567,RU
3162701568,3162701823,UZ
3162701824,3162734591,MD
@@ -84253,7 +85492,8 @@
3168018688,3168020479,RO
3168020480,3168022527,MD
3168022528,3168035839,IR
-3168035840,3168037887,RO
+3168035840,3168036863,RO
+3168036864,3168037887,GB
3168037888,3168038399,SE
3168038400,3168038911,RO
3168038912,3168039935,MD
@@ -84273,8 +85513,8 @@
3168074240,3168074495,GB
3168074496,3168075263,RO
3168075264,3168075519,GB
-3168075520,3168077823,RO
-3168077824,3168079871,ES
+3168075520,3168076799,RO
+3168076800,3168079871,ES
3168079872,3168081919,RO
3168081920,3168083967,FR
3168083968,3168084991,RO
@@ -84471,12 +85711,16 @@
3169851392,3169853439,NL
3169853440,3169854463,AU
3169854464,3169855487,ES
-3169855488,3169862911,RO
+3169855488,3169856511,RO
+3169856512,3169857023,IT
+3169857024,3169862911,RO
3169862912,3169863167,IT
3169863168,3169863423,MD
3169863424,3169863679,RO
3169863680,3169864703,BG
-3169864704,3169867775,RO
+3169864704,3169866495,RO
+3169866496,3169866751,GB
+3169866752,3169867775,RO
3169867776,3169868031,GB
3169868032,3169869823,RO
3169869824,3169878015,MD
@@ -84519,7 +85763,9 @@
3169935360,3169937407,ES
3169937408,3169946623,RO
3169946624,3169947135,IT
-3169947136,3169951743,RO
+3169947136,3169950207,RO
+3169950208,3169950463,IT
+3169950464,3169951743,RO
3169951744,3169955839,SE
3169955840,3169959423,RO
3169959424,3169959935,IT
@@ -85710,11 +86956,13 @@
3210744704,3210744831,US
3210744832,3210744863,NZ
3210744864,3210744895,IS
-3210744896,3210745087,CL
+3210744896,3210744959,CL
+3210744960,3210745087,BR
3210745088,3210745343,US
3210745344,3210745359,RU
3210745360,3210745375,BR
-3210745376,3210745599,CL
+3210745376,3210745471,CL
+3210745472,3210745599,DE
3210745600,3210745855,US
3210745856,3210745871,IT
3210745872,3210745919,BR
@@ -85723,7 +86971,8 @@
3210746384,3210746623,BR
3210746624,3210746879,US
3210746880,3210746895,CH
-3210746896,3210747135,CL
+3210746896,3210747007,CL
+3210747008,3210747135,BR
3210747136,3210748159,US
3210748160,3210748175,JP
3210748176,3210748287,BR
@@ -85734,7 +86983,8 @@
3210752512,3210755839,US
3210755840,3210755855,MY
3210755856,3210755871,BR
-3210755872,3210756095,CL
+3210755872,3210755967,CL
+3210755968,3210756095,BR
3210756096,3210756351,SG
3210756352,3210756607,US
3210756608,3210756863,DE
@@ -85746,7 +86996,7 @@
3210764048,3210764063,BR
3210764064,3210764095,CL
3210764096,3210764159,US
-3210764160,3210764287,CL
+3210764160,3210764287,BR
3210764288,3210765055,US
3210765056,3210765071,SE
3210765072,3210765311,BR
@@ -85815,9 +87065,7 @@
3210786592,3210787071,CL
3210787072,3210788863,US
3210788864,3210789119,HR
-3210789120,3210792959,US
-3210792960,3210793471,CL
-3210793472,3210795007,US
+3210789120,3210795007,US
3210795008,3210796031,IL
3210796032,3210798847,US
3210798848,3210799103,ES
@@ -86010,7 +87258,15 @@
3211099936,3211100159,CL
3211100160,3211101951,US
3211101952,3211102207,SG
-3211102208,3211104767,AU
+3211102208,3211102335,AU
+3211102336,3211102463,BR
+3211102464,3211102591,AU
+3211102592,3211102719,BR
+3211102720,3211102847,AU
+3211102848,3211102975,BR
+3211102976,3211103103,AU
+3211103104,3211103231,BR
+3211103232,3211104767,AU
3211104768,3211105791,US
3211105792,3211106303,ES
3211106304,3211111423,US
@@ -86150,8 +87406,7 @@
3219802432,3219802495,US
3219802496,3219802623,BR
3219802624,3219802639,NL
-3219802640,3219808767,BR
-3219808768,3219816447,NL
+3219802640,3219816447,BR
3219816448,3219818495,US
3219818496,3219819007,BR
3219819008,3219819519,JP
@@ -86623,7 +87878,8 @@
3223634944,3223635455,GB
3223635456,3223637247,SE
3223637248,3223637503,GB
-3223637504,3223638271,SE
+3223637504,3223638015,SE
+3223638016,3223638271,NL
3223638272,3223638527,GB
3223638528,3223640831,SE
3223640832,3223641087,GB
@@ -86862,7 +88118,7 @@
3224795904,3224796415,US
3224796416,3224797439,DE
3224797440,3224797695,US
-3224797696,3224797951,NZ
+3224797696,3224797951,AU
3224797952,3224798207,US
3224798208,3224798463,CH
3224798464,3224798975,US
@@ -87855,7 +89111,8 @@
3227528448,3227528703,ZA
3227528704,3227528959,MU
3227528960,3227531519,ZA
-3227531520,3227532031,MU
+3227531520,3227531775,MU
+3227531776,3227532031,ZA
3227532032,3227532287,US
3227532288,3227532799,ZA
3227532800,3227534335,US
@@ -87875,8 +89132,8 @@
3227545088,3227547647,ZA
3227547648,3227551743,MU
3227551744,3227552255,MF
-3227552256,3227552511,ZA
-3227552512,3227553791,MU
+3227552256,3227552767,ZA
+3227552768,3227553791,MU
3227553792,3227554047,ZA
3227554304,3227554559,ZA
3227554560,3227554815,MU
@@ -88885,8 +90142,6 @@
3230093824,3230094079,NL
3230094080,3230094335,CA
3230094336,3230095615,US
-3230095616,3230095871,JP
-3230096384,3230096639,JP
3230096640,3230096895,US
3230096896,3230097151,JP
3230097408,3230100735,JP
@@ -89867,7 +91122,9 @@
3232100096,3232100351,IE
3232100352,3232101119,GB
3232101120,3232102144,SE
-3232102146,3232104447,SE
+3232102146,3232103167,SE
+3232103168,3232103423,FR
+3232103424,3232104447,SE
3232104448,3232106495,DE
3232107520,3232108543,RU
3232108544,3232112639,DE
@@ -90003,7 +91260,9 @@
3233453632,3233456191,US
3233456192,3233456255,LV
3233456256,3233456383,US
-3233456384,3233456447,UA
+3233456384,3233456391,UA
+3233456392,3233456399,NO
+3233456400,3233456447,UA
3233456448,3233456639,US
3233456640,3233456655,CA
3233456656,3233456671,US
@@ -90023,7 +91282,9 @@
3233458944,3233458959,BG
3233458960,3233458975,US
3233458976,3233459007,BG
-3233459008,3233484799,US
+3233459008,3233460511,US
+3233460512,3233460519,SE
+3233460520,3233484799,US
3233484800,3233487359,ES
3233487360,3233487871,US
3233487872,3233488895,CA
@@ -90047,7 +91308,6 @@
3233564672,3233564927,US
3233564928,3233566719,JP
3233567744,3233567999,US
-3233568000,3233568767,JP
3233568768,3233569023,CA
3233569536,3233569791,US
3233569792,3233570047,JP
@@ -90377,7 +91637,9 @@
3234227936,3234227951,CA
3234227952,3234228223,US
3234228224,3234228287,CA
-3234228288,3234230015,US
+3234228288,3234229215,US
+3234229216,3234229223,SE
+3234229224,3234230015,US
3234230016,3234230207,ES
3234230208,3234232319,US
3234232320,3234232575,EG
@@ -90471,7 +91733,6 @@
3234784000,3234794495,US
3234794496,3234794751,CA
3234794752,3234795007,US
-3234795008,3234795263,GB
3234795264,3234799359,US
3234799360,3234799615,NL
3234799616,3234799871,US
@@ -90559,7 +91820,9 @@
3235389440,3235389951,VE
3235389952,3235512319,US
3235512320,3235577855,JP
-3235577856,3235643135,CA
+3235577856,3235641855,CA
+3235641856,3235642111,US
+3235642112,3235643135,CA
3235643136,3235745791,US
3235745792,3235745792,DE
3235745793,3235747839,US
@@ -90883,7 +92146,9 @@
3237041408,3237041663,CA
3237041664,3237043967,US
3237043968,3237044223,CH
-3237044224,3237047039,US
+3237044224,3237046647,US
+3237046648,3237046655,SE
+3237046656,3237047039,US
3237047040,3237047295,FR
3237047296,3237048831,US
3237048832,3237049087,IN
@@ -91316,7 +92581,9 @@
3237867776,3237868031,GB
3237868032,3237868159,HK
3237868160,3237868287,AU
-3237868288,3237869311,US
+3237868288,3237868543,DK
+3237868544,3237868799,GB
+3237868800,3237869311,US
3237869312,3237869439,KR
3237869440,3237869567,JP
3237869568,3237869823,AU
@@ -91391,7 +92658,6 @@
3238018560,3238018815,FR
3238018816,3238019071,DE
3238019072,3238035711,PL
-3238035712,3238035967,DE
3238035968,3238037503,RU
3238037504,3238039039,LV
3238039040,3238039551,UA
@@ -92800,7 +94066,6 @@
3241035520,3241035775,SI
3241035776,3241036031,GB
3241036032,3241036287,CH
-3241036288,3241036543,RU
3241036544,3241036799,SI
3241036800,3241037055,GB
3241037056,3241037311,RU
@@ -93000,7 +94265,42 @@
3242475520,3242483711,LV
3242483712,3242524671,BG
3242524672,3242590207,NO
-3242590208,3242622975,FR
+3242590208,3242594463,FR
+3242594464,3242594495,ES
+3242594496,3242594559,FI
+3242594560,3242594635,FR
+3242594636,3242594639,GB
+3242594640,3242594663,FR
+3242594664,3242594667,DE
+3242594668,3242595967,FR
+3242595968,3242596095,ES
+3242596096,3242596415,FR
+3242596416,3242596479,PT
+3242596480,3242597343,FR
+3242597344,3242597375,NL
+3242597376,3242603119,FR
+3242603120,3242603135,GB
+3242603136,3242604755,FR
+3242604756,3242604756,NL
+3242604757,3242606975,FR
+3242606976,3242607039,ES
+3242607040,3242608383,FR
+3242608384,3242608639,GB
+3242608640,3242609919,FR
+3242609920,3242610047,GB
+3242610048,3242610271,FR
+3242610272,3242610303,FI
+3242610304,3242615167,FR
+3242615168,3242615295,IE
+3242615296,3242615871,FR
+3242615872,3242615935,PL
+3242615936,3242616191,FR
+3242616192,3242616319,ES
+3242616320,3242618239,FR
+3242618240,3242618241,NL
+3242618242,3242618431,FR
+3242618432,3242618495,PL
+3242618496,3242622975,FR
3242622976,3242655743,IT
3242655744,3242721279,NO
3242721280,3242852351,CH
@@ -94086,7 +95386,8 @@
3246120960,3246129151,GB
3246129152,3246131711,RU
3246131712,3246132735,SY
-3246132736,3246135807,RU
+3246132736,3246132991,DE
+3246132992,3246135807,RU
3246135808,3246136831,SY
3246136832,3246138879,RU
3246138880,3246139391,SY
@@ -94101,7 +95402,8 @@
3246148608,3246149631,DE
3246149632,3246150143,RU
3246150144,3246150655,SY
-3246150656,3246151167,RU
+3246150656,3246150911,DE
+3246150912,3246151167,RU
3246151168,3246151679,SY
3246151680,3246153727,RU
3246153728,3246157823,SY
@@ -94132,13 +95434,14 @@
3246350848,3246351103,ES
3246351616,3246352639,ES
3246360576,3246362623,US
-3246370816,3246371073,ES
+3246362624,3246371073,ES
3246371074,3246371074,PT
3246371075,3246374911,ES
3246378752,3246379007,ES
3246379008,3246381055,GB
3246383104,3246387199,US
3246387200,3246388223,GB
+3246389248,3246390783,ES
3246391296,3246547199,GB
3246547456,3246613503,GB
3246613504,3246614527,HU
@@ -94147,7 +95450,11 @@
3246825984,3246826239,US
3246826240,3246828066,CH
3246828068,3246915583,CH
-3246915584,3247046655,PT
+3246915584,3246979608,PT
+3246979609,3246979609,US
+3246979610,3246979783,PT
+3246979784,3246979784,US
+3246979785,3247046655,PT
3247046656,3247046911,AT
3247046912,3247047679,SI
3247048192,3247048703,NO
@@ -94329,9 +95636,7 @@
3247394048,3247394303,PL
3247394560,3247397887,FI
3247397888,3247398143,RU
-3247398144,3247398911,FI
-3247399424,3247399679,RU
-3247399680,3247404799,FI
+3247398144,3247404799,FI
3247404800,3247405055,RU
3247405056,3247405311,RO
3247405312,3247405567,PL
@@ -94498,18 +95803,8 @@
3248553984,3248554239,RO
3248557056,3248558079,UA
3248558080,3248560127,NO
-3248560896,3248561151,NO
-3248561664,3248561952,NO
-3248561953,3248561953,DK
-3248561954,3248561954,FI
-3248561955,3248561955,NO
-3248561956,3248561956,SE
-3248561957,3248562080,NO
-3248562081,3248562081,DK
-3248562082,3248562082,FI
-3248562083,3248562083,NO
-3248562084,3248562084,SE
-3248562085,3248575487,NO
+3248560896,3248561151,IN
+3248561664,3248575487,NO
3248575488,3248576511,CZ
3248576512,3248599039,NO
3248599040,3248603135,SE
@@ -95970,7 +97265,7 @@
3253617664,3253618687,GB
3253618688,3253619711,UA
3253619712,3253620735,IT
-3253620736,3253622783,GB
+3253620736,3253621759,GB
3253622784,3253623807,DE
3253623808,3253624831,PL
3253624832,3253625855,UA
@@ -96204,7 +97499,13 @@
3253778752,3253778879,BE
3253778880,3253779215,GB
3253779216,3253779247,DE
-3253779248,3253796863,GB
+3253779248,3253781423,GB
+3253781424,3253781431,DE
+3253781432,3253781615,GB
+3253781616,3253781631,FR
+3253781632,3253783487,GB
+3253783488,3253783519,DE
+3253783520,3253796863,GB
3253796864,3253862399,SE
3253862400,3253862655,GB
3253862656,3253882879,FR
@@ -96247,7 +97548,6 @@
3253899776,3253900287,PL
3253900288,3253901311,RU
3253901312,3253901567,PL
-3253901568,3253901823,RU
3253901824,3253902079,SI
3253902080,3253902335,DK
3253902336,3253904383,UA
@@ -96845,13 +98145,75 @@
3255435264,3255435295,EE
3255435296,3255435327,LT
3255435328,3255435359,LV
+3255435360,3255435367,AT
+3255435368,3255435375,CZ
+3255435392,3255435399,EE
+3255435400,3255435407,DE
+3255435424,3255435431,HU
+3255435432,3255435439,LV
+3255435456,3255435463,LT
+3255435464,3255435471,NL
+3255435488,3255435495,PL
+3255435496,3255435503,RO
3255435520,3255435551,IS
+3255435552,3255435559,BE
+3255435560,3255435567,DK
+3255435584,3255435591,FR
+3255435592,3255435599,IS
+3255435616,3255435623,IE
+3255435624,3255435631,LU
+3255435648,3255435655,CH
+3255435656,3255435663,GB
3255435776,3255435807,IS
+3255435808,3255435815,BE
+3255435816,3255435823,DK
+3255435840,3255435847,FR
+3255435848,3255435855,IS
+3255435872,3255435879,IE
+3255435880,3255435887,LU
+3255435904,3255435911,CH
+3255435912,3255435919,GB
3255436032,3255436063,EE
3255436064,3255436095,LT
3255436096,3255436127,LV
+3255436128,3255436135,AT
+3255436136,3255436143,CZ
+3255436160,3255436167,EE
+3255436168,3255436175,DE
+3255436192,3255436199,HU
+3255436200,3255436207,LV
+3255436224,3255436231,LT
+3255436232,3255436239,NL
+3255436256,3255436263,PL
+3255436264,3255436271,RO
3255436288,3255436319,MT
+3255436320,3255436327,BG
+3255436328,3255436335,HR
+3255436352,3255436359,CY
+3255436360,3255436367,FI
+3255436384,3255436391,GR
+3255436392,3255436399,IT
+3255436416,3255436423,MT
+3255436424,3255436431,NO
+3255436448,3255436455,PT
+3255436456,3255436463,SI
+3255436480,3255436487,ES
+3255436488,3255436495,SE
3255436544,3255436575,MT
+3255436576,3255436583,BG
+3255436584,3255436591,HR
+3255436608,3255436615,CY
+3255436616,3255436623,FI
+3255436640,3255436647,GR
+3255436648,3255436655,IT
+3255436672,3255436679,MT
+3255436680,3255436687,NO
+3255436704,3255436711,PT
+3255436712,3255436719,SI
+3255436736,3255436743,ES
+3255436744,3255436751,SE
+3255436800,3255436807,SK
+3255438352,3255438359,SK
3255451648,3255452671,FR
3255474176,3255476223,GB
3255483392,3255484415,DE
@@ -96918,7 +98280,9 @@
3255743744,3255743999,US
3255744000,3255752959,SE
3255752960,3255753215,LI
-3255753216,3255762431,SE
+3255753216,3255760895,SE
+3255760896,3255761151,FO
+3255761152,3255762431,SE
3255762432,3255762943,BE
3255762944,3255771135,DE
3255779328,3255787519,DE
@@ -97157,7 +98521,7 @@
3256963840,3256964095,PL
3256964096,3256965119,RU
3256966144,3256967167,RU
-3256967168,3256967423,NL
+3256967168,3256967423,LT
3256967424,3256967679,RU
3256967680,3256968191,CH
3256968192,3256969215,RO
@@ -97382,7 +98746,7 @@
3258064128,3258064383,FR
3258064384,3258065151,GB
3258065152,3258065407,DE
-3258065408,3258065663,LI
+3258065408,3258065663,CH
3258065664,3258065919,SA
3258065920,3258066175,DE
3258066176,3258066431,PL
@@ -97441,7 +98805,6 @@
3258085632,3258085887,DE
3258085888,3258086143,PA
3258086144,3258086399,AT
-3258086400,3258086655,RU
3258086656,3258086911,PL
3258086912,3258087167,GB
3258087168,3258087423,UA
@@ -97788,9 +99151,19 @@
3259320056,3259320063,AT
3259320064,3259320575,GB
3259320576,3259320583,FR
-3259320584,3259328190,GB
+3259320584,3259326975,GB
+3259326976,3259327487,IE
+3259327488,3259328190,GB
3259328191,3259328191,US
-3259328192,3259334655,GB
+3259328192,3259328511,GB
+3259328512,3259328703,EE
+3259328704,3259328799,GB
+3259328800,3259328863,EE
+3259328864,3259334495,GB
+3259334496,3259334527,IE
+3259334528,3259334543,GB
+3259334544,3259334551,IE
+3259334552,3259334655,GB
3259334656,3259338751,DE
3259338752,3259339263,GB
3259339520,3259341823,GB
@@ -97903,7 +99276,8 @@
3260554240,3260555263,CH
3260555264,3260563455,HU
3260563456,3260571647,GB
-3260571648,3260579839,BE
+3260571648,3260575743,BE
+3260575744,3260579839,GB
3260579840,3260580351,PL
3260580352,3260580863,HU
3260580864,3260581375,GB
@@ -97911,7 +99285,7 @@
3260581888,3260582399,IL
3260582400,3260583423,RU
3260583424,3260583679,GB
-3260583680,3260583935,PT
+3260583680,3260583935,IE
3260583936,3260584447,NO
3260584448,3260585471,RO
3260585472,3260586495,UA
@@ -98002,9 +99376,7 @@
3261532928,3261533183,GB
3261533184,3261533439,SE
3261533440,3261533695,US
-3261533696,3261534207,SE
-3261534208,3261534463,NL
-3261534464,3261534719,SE
+3261533696,3261534719,SE
3261534720,3261534975,US
3261534976,3261538559,SE
3261538560,3261538815,GB
@@ -98251,7 +99623,7 @@
3262422016,3262422527,SE
3262422528,3262423039,AT
3262423040,3262423551,GB
-3262423552,3262424063,UA
+3262423552,3262424063,US
3262424064,3262424575,IT
3262424576,3262424831,PL
3262424832,3262425087,GB
@@ -99137,9 +100509,7 @@
3262478032,3262478035,AT
3262478036,3262478039,DE
3262478040,3262478043,NL
-3262478044,3262478122,DE
-3262478123,3262478123,CY
-3262478124,3262478211,DE
+3262478044,3262478211,DE
3262478212,3262478215,NL
3262478216,3262478219,FR
3262478220,3262478223,SE
@@ -99212,9 +100582,7 @@
3262478922,3262478924,DE
3262478925,3262478925,NL
3262478926,3262478926,AT
-3262478927,3262478931,DE
-3262478932,3262478932,CH
-3262478933,3262478935,DE
+3262478927,3262478935,DE
3262478936,3262478937,CH
3262478938,3262478938,NL
3262478939,3262478939,GB
@@ -99295,8 +100663,7 @@
3262479054,3262479056,DE
3262479057,3262479057,GB
3262479058,3262479058,FR
-3262479059,3262479059,IT
-3262479060,3262479062,DE
+3262479059,3262479062,DE
3262479063,3262479063,CH
3262479064,3262479064,FR
3262479065,3262479065,DE
@@ -99389,9 +100756,7 @@
3262479190,3262479191,IT
3262479192,3262479192,FR
3262479193,3262479193,GB
-3262479194,3262479196,DE
-3262479197,3262479197,GB
-3262479198,3262479199,DE
+3262479194,3262479199,DE
3262479200,3262479200,NL
3262479201,3262479201,HU
3262479202,3262479202,FR
@@ -99410,8 +100775,8 @@
3262479234,3262479234,GB
3262479235,3262479238,DE
3262479239,3262479239,FR
-3262479240,3262479240,DE
-3262479241,3262479242,FR
+3262479240,3262479241,DE
+3262479242,3262479242,FR
3262479243,3262479243,NL
3262479244,3262479244,IT
3262479245,3262479249,DE
@@ -99490,9 +100855,7 @@
3262479357,3262479357,FR
3262479358,3262479361,DE
3262479362,3262479362,PT
-3262479363,3262479366,DE
-3262479367,3262479367,CH
-3262479368,3262479368,DE
+3262479363,3262479368,DE
3262479369,3262479369,FR
3262479370,3262479370,CH
3262479371,3262479371,GB
@@ -99558,7 +100921,7 @@
3262479472,3262479472,DE
3262479473,3262479473,CH
3262479474,3262479474,BE
-3262479475,3262479475,CH
+3262479475,3262479475,DE
3262479476,3262479476,GB
3262479477,3262479477,BE
3262479478,3262479478,IT
@@ -99629,14 +100992,14 @@
3262479586,3262479586,GR
3262479587,3262479588,DE
3262479589,3262479589,IT
-3262479590,3262479590,GB
+3262479590,3262479590,DE
3262479591,3262479591,NL
3262479592,3262479592,DE
3262479593,3262479593,FR
3262479594,3262479594,DE
3262479595,3262479595,FR
-3262479596,3262479598,DE
-3262479599,3262479600,IT
+3262479596,3262479599,DE
+3262479600,3262479600,IT
3262479601,3262479601,DE
3262479602,3262479602,GB
3262479603,3262479604,DE
@@ -99667,8 +101030,7 @@
3262479637,3262479637,ES
3262479638,3262479638,DE
3262479639,3262479639,AT
-3262479640,3262479640,FR
-3262479641,3262479641,IT
+3262479640,3262479641,DE
3262479642,3262479642,GB
3262479643,3262479643,DE
3262479644,3262479644,NL
@@ -99728,9 +101090,7 @@
3262479717,3262479717,BE
3262479718,3262479720,DE
3262479721,3262479721,AT
-3262479722,3262479724,DE
-3262479725,3262479725,AT
-3262479726,3262479727,DE
+3262479722,3262479727,DE
3262479728,3262479728,BE
3262479729,3262479729,DE
3262479730,3262479730,ES
@@ -99777,8 +101137,7 @@
3262479792,3262479793,DE
3262479794,3262479794,FR
3262479795,3262479795,CH
-3262479796,3262479796,DE
-3262479797,3262479797,AT
+3262479796,3262479797,DE
3262479798,3262479799,GB
3262479800,3262479808,DE
3262479809,3262479809,FR
@@ -99838,8 +101197,7 @@
3262480173,3262480173,NL
3262480174,3262480174,DE
3262480175,3262480175,NL
-3262480176,3262480176,DE
-3262480177,3262480177,CH
+3262480176,3262480177,DE
3262480178,3262480178,IT
3262480179,3262480179,DE
3262480180,3262480180,FR
@@ -99850,9 +101208,7 @@
3262480187,3262480187,DE
3262480188,3262480188,FI
3262480189,3262480189,CH
-3262480190,3262480190,DE
-3262480191,3262480191,NO
-3262480192,3262480194,DE
+3262480190,3262480194,DE
3262480195,3262480195,GB
3262480196,3262480197,DE
3262480198,3262480198,NL
@@ -99932,9 +101288,7 @@
3262480341,3262480341,CH
3262480342,3262480342,DE
3262480343,3262480343,DK
-3262480344,3262480344,DE
-3262480345,3262480345,CH
-3262480346,3262480346,DE
+3262480344,3262480346,DE
3262480347,3262480347,NL
3262480348,3262480352,DE
3262480353,3262480353,CH
@@ -99942,8 +101296,8 @@
3262480355,3262480355,GB
3262480356,3262480356,DE
3262480357,3262480357,GB
-3262480358,3262480359,CH
-3262480360,3262480365,DE
+3262480358,3262480358,CH
+3262480359,3262480365,DE
3262480366,3262480366,AT
3262480367,3262480367,DE
3262480368,3262480368,GB
@@ -100173,7 +101527,9 @@
3263514112,3263520767,GB
3263520768,3263525887,DE
3263525888,3263526143,ZA
-3263526144,3263545343,DE
+3263526144,3263527423,DE
+3263527424,3263527679,ZW
+3263527680,3263545343,DE
3263545344,3263561727,US
3263561728,3263627263,NL
3263627264,3263627519,RU
@@ -100192,7 +101548,8 @@
3263637248,3263637503,UA
3263637504,3263638527,RU
3263638528,3263639039,UA
-3263639040,3263639551,RU
+3263639040,3263639295,RU
+3263639296,3263639551,DE
3263639552,3263640575,GB
3263640576,3263647743,RU
3263647744,3263651619,LT
@@ -100202,7 +101559,8 @@
3263654400,3263654911,SY
3263654912,3263656959,RU
3263656960,3263657471,SY
-3263657472,3263660031,RU
+3263657472,3263657727,DE
+3263657728,3263660031,RU
3263660032,3263661055,DE
3263661056,3263666175,RU
3263666176,3263676415,AZ
@@ -100907,9 +102265,7 @@
3266805760,3266813951,AT
3266813952,3266822143,UA
3266822144,3266830335,FR
-3266830336,3266836479,BE
-3266836480,3266837503,LU
-3266837504,3266838527,BE
+3266830336,3266838527,BE
3266838528,3266969599,IT
3266969600,3267035135,RU
3267035136,3267039231,NO
@@ -100967,14 +102323,12 @@
3267097600,3267098623,KZ
3267098624,3267098879,GB
3267098880,3267098895,FR
-3267098912,3267099043,FR
+3267098944,3267099043,FR
3267099136,3267099263,DE
3267099264,3267099327,NL
3267099328,3267099383,GB
3267099384,3267099387,NL
-3267099388,3267099407,BE
-3267099408,3267099415,DE
-3267099416,3267099455,BE
+3267099388,3267099455,BE
3267099456,3267099463,GB
3267099464,3267099647,BE
3267099648,3267100671,IT
@@ -101029,7 +102383,9 @@
3267845632,3267846655,FR
3267846656,3267846911,MQ
3267846912,3267887103,FR
-3267887104,3268078591,GB
+3267887104,3268017469,GB
+3268017470,3268017470,KE
+3268017471,3268078591,GB
3268078848,3268139005,GB
3268139007,3268149247,GB
3268149248,3268165631,EE
@@ -101394,7 +102750,9 @@
3270672384,3270680575,GB
3270680576,3270684671,IL
3270684672,3270688767,FR
-3270688768,3270772079,IT
+3270688768,3270716167,IT
+3270716168,3270716171,SI
+3270716172,3270772079,IT
3270772080,3270772087,NL
3270772088,3270836223,IT
3270836224,3270901759,DE
@@ -103070,10 +104428,9 @@
3275439104,3275439679,GB
3275439688,3275439935,GB
3275439944,3275439951,GB
-3275439968,3275440655,GB
-3275440672,3275441407,GB
+3275439968,3275441407,GB
3275441424,3275441439,GB
-3275441472,3275441535,GB
+3275441472,3275441567,GB
3275441600,3275441823,GB
3275441832,3275441835,GB
3275441840,3275442723,GB
@@ -103091,7 +104448,7 @@
3275448320,3275449359,GB
3275449376,3275449399,GB
3275449440,3275449471,GB
-3275449480,3275449519,GB
+3275449488,3275449519,GB
3275449520,3275449527,FR
3275449528,3275449567,GB
3275449584,3275449887,GB
@@ -103150,7 +104507,7 @@
3275473232,3275473311,GB
3275473328,3275473359,GB
3275473368,3275473895,GB
-3275473904,3275474079,GB
+3275473904,3275474047,GB
3275474088,3275474735,GB
3275474752,3275474887,GB
3275474896,3275474911,GB
@@ -103160,8 +104517,7 @@
3275475292,3275475295,GB
3275475376,3275475399,GB
3275475408,3275475447,GB
-3275475456,3275475719,GB
-3275475728,3275475791,GB
+3275475456,3275475791,GB
3275475800,3275475831,GB
3275475840,3275475871,GB
3275475876,3275475879,GB
@@ -103169,7 +104525,7 @@
3275475968,3275476223,GB
3275476288,3275476479,GB
3275476608,3275476631,GB
-3275476656,3275476687,GB
+3275476640,3275476687,GB
3275476704,3275476735,GB
3275476920,3275476927,GB
3275476944,3275476959,GB
@@ -103472,9 +104828,7 @@
3276036544,3276036607,FR
3276036608,3276039263,GB
3276039264,3276039279,FR
-3276039280,3276042015,GB
-3276042016,3276042031,FR
-3276042032,3276042079,GB
+3276039280,3276042079,GB
3276042080,3276042095,FR
3276042096,3276045247,GB
3276045248,3276045255,FR
@@ -103628,7 +104982,6 @@
3276490776,3276490776,NL
3276490782,3276490782,AT
3276490783,3276490783,CH
-3276494480,3276494495,GB
3276499504,3276499567,DE
3276503040,3276505087,DE
3276509184,3276510207,IT
@@ -104130,9 +105483,7 @@
3276912672,3276912687,IT
3276912688,3276912879,GB
3276912880,3276912895,IT
-3276912896,3276917183,GB
-3276917184,3276917215,ES
-3276917216,3276917231,GB
+3276912896,3276917231,GB
3276917232,3276917247,FR
3276917248,3276917735,GB
3276917736,3276917739,ES
@@ -104341,8 +105692,8 @@
3277403312,3277403327,GB
3277403328,3277403359,FR
3277403360,3277403375,GB
-3277403376,3277403471,FR
-3277403472,3277403647,GB
+3277403376,3277403487,FR
+3277403488,3277403647,GB
3277403648,3277403807,ES
3277403808,3277404159,GB
3277404160,3277404415,DE
@@ -104677,11 +106028,9 @@
3278938648,3278938659,DE
3278938660,3278938663,CH
3278938664,3278938667,GB
-3278938668,3278938671,DE
-3278938672,3278938675,IT
+3278938668,3278938675,DE
3278938676,3278938679,FR
-3278938680,3278938683,NO
-3278938684,3278938687,DE
+3278938680,3278938687,DE
3278938688,3278938691,CH
3278938692,3278938695,DE
3278938696,3278938699,IT
@@ -104720,9 +106069,7 @@
3278938892,3278938895,DE
3278938896,3278938903,FR
3278938904,3278938911,GB
-3278938912,3278938919,DE
-3278938920,3278938923,SK
-3278938924,3278938927,DE
+3278938912,3278938927,DE
3278938928,3278938931,GB
3278938932,3278938943,DE
3278938944,3278938947,IT
@@ -104738,13 +106085,9 @@
3278938996,3278938999,DE
3278939000,3278939003,ES
3278939004,3278939007,NL
-3278939008,3278939011,IE
+3278939008,3278939011,DE
3278939012,3278939015,RU
-3278939016,3278939023,DE
-3278939024,3278939027,IT
-3278939028,3278939035,DE
-3278939036,3278939039,HU
-3278939040,3278939047,DE
+3278939016,3278939047,DE
3278939048,3278939055,FR
3278939056,3278939075,DE
3278939076,3278939079,CH
@@ -104756,9 +106099,7 @@
3278939100,3278939103,DE
3278939104,3278939107,CH
3278939108,3278939111,FR
-3278939112,3278939115,DE
-3278939116,3278939119,NL
-3278939120,3278939131,DE
+3278939112,3278939131,DE
3278939132,3278939135,NL
3278939136,3278939147,US
3278939148,3278939151,AR
@@ -104792,8 +106133,7 @@
3278939404,3278939407,CH
3278939408,3278939419,DE
3278939420,3278939423,IE
-3278939424,3278939427,GB
-3278939428,3278939439,DE
+3278939424,3278939439,DE
3278939440,3278939443,IT
3278939444,3278939459,DE
3278939460,3278939463,DK
@@ -104829,60 +106169,29 @@
3278939636,3278939639,DK
3278939640,3278939647,DE
3278939648,3278939651,FR
-3278939652,3278939655,DE
-3278939656,3278939659,FR
-3278939660,3278939663,TR
+3278939652,3278939663,DE
3278939664,3278939667,IT
-3278939668,3278939671,GB
-3278939672,3278939679,FR
-3278939680,3278939683,GR
-3278939684,3278939687,FR
-3278939688,3278939691,DE
-3278939692,3278939695,FR
-3278939696,3278939699,GR
-3278939700,3278939703,TR
-3278939704,3278939707,KE
-3278939708,3278939711,TR
-3278939712,3278939715,CY
-3278939716,3278939723,TR
-3278939724,3278939727,MC
-3278939728,3278939731,DE
-3278939732,3278939735,AT
-3278939736,3278939739,RU
-3278939740,3278939743,HU
+3278939668,3278939743,DE
3278939744,3278939747,GB
-3278939748,3278939751,ES
+3278939748,3278939751,DE
3278939752,3278939755,GR
3278939756,3278939759,DE
3278939760,3278939763,FR
-3278939764,3278939767,DE
-3278939768,3278939771,ES
-3278939772,3278939775,IT
-3278939776,3278939779,DE
-3278939780,3278939783,FR
+3278939764,3278939783,DE
3278939784,3278939787,BE
-3278939788,3278939791,DE
-3278939792,3278939795,ES
-3278939796,3278939799,DE
-3278939800,3278939803,ES
+3278939788,3278939803,DE
3278939804,3278939807,GB
-3278939808,3278939815,DE
-3278939816,3278939819,NL
-3278939820,3278939823,DE
+3278939808,3278939823,DE
3278939824,3278939827,HU
3278939828,3278939835,DE
3278939836,3278939839,FR
-3278939840,3278939843,IT
-3278939844,3278939847,BE
-3278939848,3278939855,DE
-3278939856,3278939859,FR
+3278939840,3278939859,DE
3278939860,3278939863,GB
3278939864,3278939867,IT
-3278939868,3278939871,CH
+3278939868,3278939871,DE
3278939872,3278939875,ES
3278939876,3278939879,IT
-3278939880,3278939883,ES
-3278939884,3278939887,DE
+3278939880,3278939887,DE
3278939888,3278939891,PL
3278939892,3278939899,ES
3278939900,3278939903,IT
@@ -104929,7 +106238,7 @@
3278940156,3278940159,PH
3278940160,3278940163,GR
3278940164,3278940167,CH
-3278940168,3278940171,DK
+3278940168,3278940171,DE
3278940172,3278940175,FR
3278940176,3278940179,GB
3278940180,3278940183,CH
@@ -104942,8 +106251,7 @@
3278940228,3278940231,DE
3278940232,3278940235,CH
3278940236,3278940239,ES
-3278940240,3278940243,CY
-3278940244,3278940247,DE
+3278940240,3278940247,DE
3278940248,3278940251,FR
3278940252,3278940255,IT
3278940256,3278940259,BE
@@ -104955,9 +106263,7 @@
3278940284,3278940291,NL
3278940292,3278940295,DE
3278940296,3278940299,IT
-3278940300,3278940303,FR
-3278940304,3278940307,DE
-3278940308,3278940311,CH
+3278940300,3278940311,DE
3278940312,3278940315,IT
3278940316,3278940319,DE
3278940320,3278940323,NL
@@ -104965,9 +106271,10 @@
3278940328,3278940335,DE
3278940336,3278940339,NL
3278940340,3278940347,DE
-3278940348,3278940355,GB
+3278940348,3278940351,GB
+3278940352,3278940355,DE
3278940356,3278940359,NL
-3278940360,3278940363,GR
+3278940360,3278940363,DE
3278940364,3278940367,IT
3278940368,3278940371,FR
3278940372,3278940375,GB
@@ -104976,14 +106283,10 @@
3278940384,3278940387,NL
3278940388,3278940391,IE
3278940392,3278940395,FR
-3278940396,3278940399,NL
-3278940400,3278940403,DE
+3278940396,3278940403,DE
3278940404,3278940407,FR
3278940408,3278940411,IT
-3278940412,3278940412,CH
-3278940413,3278940415,DE
-3278940416,3278940419,BE
-3278940420,3278940423,DE
+3278940412,3278940423,DE
3278940424,3278940427,CH
3278940428,3278940431,DE
3278940432,3278940435,CH
@@ -105023,8 +106326,7 @@
3278940604,3278940607,FR
3278940608,3278940611,ES
3278940612,3278940615,PT
-3278940616,3278940619,IT
-3278940620,3278940623,DE
+3278940616,3278940623,DE
3278940624,3278940631,IT
3278940632,3278940635,GB
3278940636,3278940639,BE
@@ -105034,8 +106336,7 @@
3278940652,3278940655,FR
3278940656,3278940663,DE
3278940664,3278940667,FR
-3278940668,3278940679,DE
-3278940680,3278940683,CH
+3278940668,3278940683,DE
3278940684,3278940691,NL
3278940692,3278940695,SE
3278940696,3278940707,DE
@@ -105077,8 +106378,7 @@
3278940892,3278940899,DE
3278940900,3278940903,FR
3278940904,3278940911,ES
-3278940912,3278940915,IT
-3278940916,3278940919,DE
+3278940912,3278940919,DE
3278940920,3278940923,PT
3278940924,3278940931,DE
3278940932,3278940935,NL
@@ -105093,8 +106393,7 @@
3278940968,3278940983,DE
3278940984,3278940987,IT
3278940988,3278940991,NL
-3278940992,3278940995,PT
-3278940996,3278940999,DE
+3278940992,3278940999,DE
3278941000,3278941003,NL
3278941004,3278941023,DE
3278941024,3278941027,IT
@@ -105108,8 +106407,7 @@
3278941060,3278941063,GB
3278941064,3278941067,IT
3278941068,3278941071,ES
-3278941072,3278941075,IT
-3278941076,3278941083,DE
+3278941072,3278941083,DE
3278941084,3278941087,GB
3278941088,3278941091,BE
3278941092,3278941095,DE
@@ -105245,9 +106543,7 @@
3278942168,3278942171,CH
3278942172,3278942179,DE
3278942180,3278942183,FR
-3278942184,3278942187,DE
-3278942188,3278942191,IT
-3278942192,3278942203,DE
+3278942184,3278942203,DE
3278942204,3278942207,CH
3278942208,3278942211,TW
3278942212,3278942227,AU
@@ -105443,9 +106739,7 @@
3278942880,3278942881,DE
3278942882,3278942882,CH
3278942883,3278942883,GB
-3278942884,3278942884,DE
-3278942885,3278942885,NL
-3278942886,3278942889,DE
+3278942884,3278942889,DE
3278942890,3278942890,ES
3278942891,3278942894,DE
3278942895,3278942895,NL
@@ -105495,8 +106789,7 @@
3278942969,3278942969,AT
3278942970,3278942970,ES
3278942971,3278942971,IT
-3278942972,3278942977,DE
-3278942978,3278942978,BE
+3278942972,3278942978,DE
3278942979,3278942979,FR
3278942980,3278942980,IT
3278942981,3278942984,DE
@@ -105612,8 +106905,7 @@
3278943141,3278943141,NL
3278943142,3278943142,FR
3278943143,3278943143,ES
-3278943144,3278943145,DE
-3278943146,3278943146,CH
+3278943144,3278943146,DE
3278943147,3278943147,NL
3278943148,3278943148,FR
3278943149,3278943149,BE
@@ -105847,9 +107139,7 @@
3278943469,3278943469,NL
3278943470,3278943471,ES
3278943472,3278943472,BE
-3278943473,3278943473,DE
-3278943474,3278943474,BE
-3278943475,3278943477,DE
+3278943473,3278943477,DE
3278943478,3278943478,NL
3278943479,3278943481,DE
3278943482,3278943482,IT
@@ -105857,11 +107147,9 @@
3278943490,3278943490,BE
3278943491,3278943491,DE
3278943492,3278943492,CH
-3278943493,3278943494,DE
-3278943495,3278943495,FR
+3278943493,3278943495,DE
3278943496,3278943496,GB
-3278943497,3278943499,DE
-3278943500,3278943500,IT
+3278943497,3278943500,DE
3278943501,3278943501,FR
3278943502,3278943505,DE
3278943506,3278943506,AT
@@ -106004,9 +107292,7 @@
3278943687,3278943687,CH
3278943688,3278943689,IT
3278943690,3278943690,ES
-3278943691,3278943693,DE
-3278943694,3278943694,GB
-3278943695,3278943695,DE
+3278943691,3278943695,DE
3278943696,3278943696,GB
3278943697,3278943697,DE
3278943698,3278943698,IT
@@ -106095,7 +107381,7 @@
3278943812,3278943812,IT
3278943813,3278943813,DE
3278943814,3278943814,ES
-3278943815,3278943815,MA
+3278943815,3278943815,DE
3278943816,3278943816,GB
3278943817,3278943817,FR
3278943818,3278943818,DE
@@ -106120,7 +107406,7 @@
3278943839,3278943839,IT
3278943840,3278943845,DE
3278943846,3278943846,GB
-3278943847,3278943847,FR
+3278943847,3278943847,DE
3278943848,3278943848,IT
3278943849,3278943849,DE
3278943850,3278943851,FR
@@ -106191,9 +107477,7 @@
3278943944,3278943944,IT
3278943945,3278943945,NL
3278943946,3278943946,LU
-3278943947,3278943947,DE
-3278943948,3278943948,ES
-3278943949,3278943950,DE
+3278943947,3278943950,DE
3278943951,3278943951,LU
3278943952,3278943953,DE
3278943954,3278943954,FR
@@ -106222,8 +107506,7 @@
3278943988,3278943988,ES
3278943989,3278943990,DE
3278943991,3278943991,NL
-3278943992,3278943992,IT
-3278943993,3278943995,DE
+3278943992,3278943995,DE
3278943996,3278943997,CH
3278943998,3278944001,DE
3278944002,3278944002,GB
@@ -106276,8 +107559,7 @@
3278944067,3278944067,DE
3278944068,3278944068,ES
3278944069,3278944069,PL
-3278944070,3278944070,DE
-3278944071,3278944071,DK
+3278944070,3278944071,DE
3278944072,3278944072,AT
3278944073,3278944073,FR
3278944074,3278944075,ES
@@ -106305,7 +107587,7 @@
3278944099,3278944099,GB
3278944100,3278944102,DE
3278944103,3278944104,IT
-3278944105,3278944105,FR
+3278944105,3278944105,DE
3278944106,3278944106,AT
3278944107,3278944108,DE
3278944109,3278944109,ES
@@ -106321,8 +107603,7 @@
3278944123,3278944123,IT
3278944124,3278944124,DE
3278944125,3278944125,SE
-3278944126,3278944126,ES
-3278944127,3278944127,DE
+3278944126,3278944127,DE
3278944128,3278944128,PT
3278944129,3278944129,BE
3278944130,3278944130,DE
@@ -106344,9 +107625,7 @@
3278944148,3278944148,ES
3278944149,3278944149,DE
3278944150,3278944150,IE
-3278944151,3278944151,DE
-3278944152,3278944152,IS
-3278944153,3278944158,DE
+3278944151,3278944158,DE
3278944159,3278944159,CH
3278944160,3278944160,FR
3278944161,3278944163,DE
@@ -106385,7 +107664,7 @@
3278944210,3278944210,AT
3278944211,3278944211,DE
3278944212,3278944212,FR
-3278944213,3278944213,DK
+3278944213,3278944213,DE
3278944214,3278944214,GB
3278944215,3278944215,IT
3278944216,3278944216,DE
@@ -106403,9 +107682,7 @@
3278944232,3278944232,NL
3278944233,3278944233,GB
3278944234,3278944234,AT
-3278944235,3278944235,DE
-3278944236,3278944236,IT
-3278944237,3278944238,DE
+3278944235,3278944238,DE
3278944239,3278944239,SE
3278944240,3278944240,FR
3278944241,3278944241,IT
@@ -106733,8 +108010,7 @@
3278945817,3278945821,DE
3278945822,3278945822,GR
3278945823,3278945823,CH
-3278945824,3278945826,DE
-3278945827,3278945827,DK
+3278945824,3278945827,DE
3278945828,3278945828,FR
3278945829,3278945829,DE
3278945830,3278945831,NL
@@ -107237,9 +108513,7 @@
3280658176,3280658431,DE
3280658432,3280660479,MT
3280660480,3280662527,RU
-3280662528,3280662543,CA
-3280662544,3280662575,DE
-3280662576,3280662591,CA
+3280662528,3280662591,DE
3280662592,3280662607,IT
3280662608,3280662623,DE
3280662624,3280662655,IT
@@ -107252,9 +108526,7 @@
3280663344,3280663391,IT
3280663392,3280663407,HK
3280663408,3280663423,IT
-3280663424,3280663519,DE
-3280663520,3280663551,CA
-3280663552,3280663999,DE
+3280663424,3280663999,DE
3280664000,3280664063,IT
3280664064,3280664319,CZ
3280664320,3280664831,DE
@@ -107292,11 +108564,7 @@
3280796672,3280797695,CZ
3280797696,3280863231,CH
3280863232,3280928767,TR
-3280928768,3280928831,GB
-3280928832,3280928847,RU
-3280928848,3280928855,GB
-3280928856,3280928863,RU
-3280928864,3280934927,GB
+3280928768,3280934927,GB
3280934928,3280934935,DE
3280934936,3280935055,GB
3280935056,3280935063,IT
@@ -107884,7 +109152,9 @@
3284030616,3284030623,SE
3284030624,3284030775,GB
3284030776,3284030783,SE
-3284030784,3284030991,GB
+3284030784,3284030799,GB
+3284030800,3284030815,SE
+3284030816,3284030991,GB
3284030992,3284031007,FR
3284031008,3284033535,GB
3284033536,3284041727,RU
@@ -108244,7 +109514,6 @@
3285449472,3285449727,RU
3285449728,3285450751,UA
3285451456,3285451471,GB
-3285451608,3285451615,GB
3285452354,3285452354,GB
3285452496,3285452511,GB
3285453440,3285453823,GB
@@ -108380,6 +109649,7 @@
3285929216,3285929231,DE
3285930752,3285931007,GB
3285931528,3285931559,DE
+3285931560,3285931567,HU
3285935872,3285936127,GB
3285936136,3285936147,FR
3285936152,3285936167,FR
@@ -108407,6 +109677,7 @@
3285961984,3285961991,GB
3285962752,3285963775,DE
3285964800,3285964935,DE
+3285964944,3285964959,DE
3285965056,3285966079,DE
3285968896,3285970943,GB
3285975040,3286013695,FR
@@ -108860,6 +110131,7 @@
3287467008,3287468031,SA
3287468032,3287469055,UA
3287469056,3287470079,DE
+3287471360,3287471615,CH
3287472128,3287472639,RU
3287472640,3287473151,UA
3287473152,3287474175,GB
@@ -108889,9 +110161,7 @@
3287572480,3287580671,DE
3287580672,3287588863,LV
3287588864,3287597055,BE
-3287597056,3287603082,GI
-3287603083,3287603083,US
-3287603084,3287605247,GI
+3287597056,3287605247,GI
3287605248,3287630335,DE
3287630336,3287631359,PL
3287631360,3287631871,IR
@@ -108921,7 +110191,7 @@
3287663616,3287663871,NL
3287663872,3287664127,PT
3287664128,3287664383,PL
-3287664384,3287664639,DE
+3287664384,3287664639,US
3287664640,3287664895,UA
3287664896,3287665151,GB
3287665152,3287665407,NO
@@ -109530,6 +110800,8 @@
3291043584,3291043839,KE
3291043840,3291044095,ZW
3291044096,3291044351,KE
+3291044352,3291044607,GN
+3291044608,3291044863,KE
3291044864,3291045119,AO
3291045120,3291045375,KE
3291045376,3291045631,NG
@@ -109721,6 +110993,7 @@
3291554304,3291554559,MZ
3291554816,3291555071,CD
3291555328,3291555583,CM
+3291555840,3291556095,GN
3291611136,3291611647,ZA
3291611648,3291611903,MU
3291676672,3291742207,ZA
@@ -110129,14 +111402,17 @@
3292267008,3292267263,KE
3292267520,3292267775,BW
3292268032,3292268287,CM
+3292268544,3292269055,ZA
+3292274688,3292274943,ZA
+3292275712,3292275967,KE
+3292276224,3292276479,GN
3292332032,3292334079,MU
3292334080,3292336127,TZ
3292336128,3292340223,ZA
3292340224,3292344319,GH
3292344320,3292345343,ZA
3292345344,3292346367,KE
-3292346368,3292348415,ZA
-3292349440,3292350463,ZA
+3292346368,3292350463,ZA
3292350464,3292351487,CD
3292351488,3292352511,AO
3292352512,3292364799,ZA
@@ -110175,7 +111451,9 @@
3301140480,3301146623,NG
3301146624,3301171199,ZA
3301171200,3301172223,IN
-3301172224,3301175295,ZA
+3301172224,3301173247,ZA
+3301173248,3301173759,UG
+3301173760,3301175295,ZA
3301175296,3301179391,EG
3301179392,3301179903,RU
3301179904,3301181183,SC
@@ -110582,6 +111860,7 @@
3304669184,3304685567,TZ
3304685568,3304701951,ZA
3304701952,3304718335,AO
+3304718336,3304849407,MU
3304849408,3305111551,ZA
3305111552,3307208703,TN
3307208704,3309305855,EG
@@ -110803,7 +112082,9 @@
3320905728,3320938495,DJ
3320938496,3320971263,AO
3320971264,3320979455,GA
-3320979456,3320985599,ZA
+3320979456,3320981503,ZA
+3320981504,3320981759,KE
+3320981760,3320985599,ZA
3320985600,3320985607,KE
3320985608,3320995839,ZA
3320995840,3321004031,NG
@@ -111030,9 +112311,7 @@
3322361907,3322361914,GB
3322361915,3322362367,US
3322362368,3322362431,DE
-3322362432,3322363039,US
-3322363040,3322363071,BR
-3322363072,3322609663,US
+3322362432,3322609663,US
3322609664,3322610687,SA
3322610688,3322678535,US
3322678536,3322678551,SA
@@ -111138,9 +112417,7 @@
3322890440,3322890447,QA
3322890448,3322890719,US
3322890720,3322890727,QA
-3322890728,3322891855,US
-3322891856,3322891871,BR
-3322891872,3322892631,US
+3322890728,3322892631,US
3322892632,3322892639,IN
3322892640,3322893063,US
3322893064,3322893071,BR
@@ -111166,9 +112443,7 @@
3322899088,3322899103,US
3322899104,3322899135,HK
3322899136,3322899143,IN
-3322899144,3322901007,US
-3322901008,3322901015,BR
-3322901016,3322902831,US
+3322899144,3322902831,US
3322902832,3322902847,IN
3322902848,3322903375,US
3322903376,3322903383,GB
@@ -111335,7 +112610,6 @@
3323027712,3323031807,US
3323032576,3323032831,US
3323032832,3323033087,IT
-3323033088,3323033343,JP
3323033344,3323033599,US
3323033600,3323034111,BR
3323034112,3323038719,US
@@ -111405,12 +112679,8 @@
3323244096,3323244319,US
3323244320,3323244327,IN
3323244328,3323244543,US
-3323244544,3323244703,CA
-3323244704,3323244735,US
-3323244736,3323244767,CA
-3323244768,3323244783,US
-3323244784,3323244799,CA
-3323244800,3323245311,US
+3323244544,3323244671,CA
+3323244672,3323245311,US
3323245312,3323245319,IN
3323245320,3323245327,CA
3323245328,3323245343,US
@@ -111431,16 +112701,9 @@
3323245536,3323245551,SG
3323245552,3323245559,GB
3323245560,3323245567,CN
-3323245568,3323245823,US
-3323245824,3323245951,GB
-3323245952,3323245959,US
-3323245960,3323245983,GB
-3323245984,3323246015,US
-3323246016,3323246079,GB
-3323246080,3323246463,US
+3323245568,3323246463,US
3323246464,3323246591,CN
-3323246592,3323246847,CA
-3323246848,3323247359,US
+3323246592,3323247359,US
3323247360,3323247423,CA
3323247424,3323247439,US
3323247440,3323247487,CA
@@ -111977,8 +113240,7 @@
3324587776,3324633087,US
3324633088,3324634111,PE
3324634112,3324635135,AR
-3324635136,3324635391,SG
-3324635392,3324635647,US
+3324635136,3324635647,US
3324635648,3324635903,HK
3324635904,3324636159,US
3324636160,3324637183,NZ
@@ -112501,7 +113763,9 @@
3325119888,3325119903,MX
3325119904,3325120076,US
3325120077,3325120081,MX
-3325120082,3325128703,US
+3325120082,3325120423,US
+3325120424,3325120431,IN
+3325120432,3325128703,US
3325128704,3325129215,TH
3325129216,3325131775,US
3325131776,3325132031,AU
@@ -113962,7 +115226,7 @@
3328774400,3328775935,CA
3328775936,3328789503,US
3328790016,3328794623,US
-3328795648,3328798719,US
+3328795648,3328796671,US
3328798720,3328799743,NL
3328800000,3328800255,NL
3328800256,3328800767,IT
@@ -114141,9 +115405,7 @@
3331371008,3331371071,NZ
3331371072,3331371327,US
3331371328,3331371343,SE
-3331371344,3331371975,US
-3331371976,3331371983,PK
-3331371984,3331372287,US
+3331371344,3331372287,US
3331372288,3331372319,FR
3331372320,3331527167,US
3331527168,3331527679,GB
@@ -114303,9 +115565,7 @@
3332833536,3332841471,CA
3332841472,3332841727,US
3332841728,3332866303,CA
-3332866304,3332869904,US
-3332869905,3332869905,BD
-3332869906,3332874239,US
+3332866304,3332874239,US
3332874240,3332875007,CA
3332875008,3332875263,US
3332875264,3332876287,CA
@@ -114544,58 +115804,9 @@
3335573760,3335574015,IN
3335574016,3335581695,US
3335581952,3335582463,US
-3335582720,3335660999,US
-3335661000,3335661040,GR
-3335661041,3335661057,US
-3335661058,3335661156,ID
-3335661157,3335661313,US
-3335661314,3335661412,BS
-3335661413,3335661668,US
-3335661669,3335661763,BD
-3335661764,3335661825,US
-3335661826,3335661924,NO
-3335661925,3335662014,AM
-3335662015,3335662023,US
-3335662024,3335662069,IT
-3335662070,3335662180,US
-3335662181,3335662278,IN
-3335662279,3335662279,US
-3335662280,3335662325,GB
-3335662326,3335662535,US
-3335662536,3335662586,JP
-3335662587,3335662692,US
-3335662693,3335662787,LA
-3335662788,3335662791,US
-3335662792,3335662827,TH
-3335662828,3335662849,US
-3335662850,3335662948,JP
-3335662949,3335663716,US
-3335663717,3335663811,JP
-3335663812,3335663972,US
-3335663973,3335664062,KR
-3335664063,3335664129,US
-3335664130,3335664228,JP
-3335664229,3335664323,TH
-3335664324,3335664385,US
-3335664386,3335664484,UA
-3335664485,3335664569,PL
-3335664570,3335664996,US
-3335664997,3335665071,LV
-3335665072,3335665252,US
+3335582720,3335665252,US
3335665253,3335665342,TH
-3335665343,3335665508,US
-3335665509,3335665598,TH
-3335665599,3335665764,US
-3335665765,3335665854,IN
-3335665855,3335666177,US
-3335666178,3335666276,ID
-3335666277,3335666532,US
-3335666533,3335666627,CN
-3335666628,3335666788,US
-3335666789,3335666878,IS
-3335666879,3335666945,US
-3335666946,3335667044,JO
-3335667045,3335719071,US
+3335665343,3335719071,US
3335719072,3335719087,IN
3335719088,3335747071,US
3335747072,3335749631,NL
@@ -114721,12 +115932,10 @@
3337961600,3337961615,RO
3337961616,3337961631,US
3337961632,3337961663,GB
-3337961664,3337961679,CA
-3337961680,3337962623,US
+3337961664,3337961671,CA
+3337961672,3337962623,US
3337962624,3337962751,CA
-3337962752,3337963135,US
-3337963136,3337963263,TR
-3337963264,3337963639,US
+3337962752,3337963639,US
3337963640,3337963647,CA
3337963648,3337963775,US
3337963776,3337963783,AZ
@@ -114984,7 +116193,9 @@
3339264000,3339270399,US
3339270400,3339270655,CA
3339271168,3339327999,US
-3339328512,3339328831,CA
+3339328512,3339328783,CA
+3339328784,3339328791,US
+3339328792,3339328831,CA
3339328832,3339328895,US
3339328896,3339328943,CA
3339328944,3339328959,AE
@@ -114994,9 +116205,7 @@
3339329280,3339329407,US
3339329408,3339329439,CA
3339329440,3339329455,GB
-3339329456,3339329519,CA
-3339329520,3339329527,GB
-3339329528,3339329535,CA
+3339329456,3339329535,CA
3339329536,3339338239,US
3339338240,3339338495,CA
3339338496,3339342847,US
@@ -115014,10 +116223,12 @@
3339707392,3339708415,BM
3339708416,3339722623,US
3339722624,3339722639,VN
-3339722640,3339722655,US
-3339722656,3339722687,IN
+3339722640,3339722671,US
+3339722672,3339722687,IN
3339722688,3339722703,EG
-3339722704,3339722751,VN
+3339722704,3339722719,CA
+3339722720,3339722735,VN
+3339722736,3339722751,ID
3339722752,3339727343,US
3339727344,3339727351,CA
3339727352,3339728895,US
@@ -115027,9 +116238,7 @@
3339729920,3339743231,US
3339743232,3339744255,CA
3339744256,3339747327,US
-3339747328,3339747583,CA
-3339747584,3339747839,FR
-3339747840,3339748351,CA
+3339747328,3339748351,CA
3339748352,3339753471,US
3339753472,3339754495,CA
3339754496,3339760639,US
@@ -115161,9 +116370,7 @@
3339965440,3339968511,CA
3339968512,3339975935,US
3339975936,3339976703,CA
-3339976704,3340059343,US
-3340059344,3340059359,CA
-3340059360,3340080127,US
+3339976704,3340080127,US
3340080128,3340081151,CA
3340081152,3340084223,US
3340084224,3340085247,KN
@@ -115185,9 +116392,7 @@
3340391818,3340391825,LK
3340391826,3340391833,US
3340391834,3340391841,LK
-3340391842,3340391925,US
-3340391926,3340391933,EG
-3340391934,3340392169,US
+3340391842,3340392169,US
3340392170,3340392190,LK
3340392191,3340418559,US
3340418560,3340419071,CA
@@ -115201,15 +116406,15 @@
3340481536,3340482559,CA
3340482560,3340490751,US
3340490752,3340492799,CA
-3340492800,3340584703,US
-3340584704,3340584959,KW
-3340584960,3340637439,US
+3340492800,3340637439,US
3340637440,3340637695,IE
3340637696,3340639231,US
3340639232,3340639295,IE
3340639296,3340677119,US
3340677120,3340679167,CA
-3340679168,3340694783,US
+3340679168,3340693679,US
+3340693680,3340693695,GB
+3340693696,3340694783,US
3340694784,3340695039,CA
3340695040,3340846111,US
3340846112,3340846119,CA
@@ -115384,29 +116589,24 @@
3341533952,3341534207,CA
3341534720,3341535007,US
3341535008,3341535015,ID
-3341535016,3341535023,US
-3341535024,3341535031,MY
+3341535016,3341535031,US
3341535032,3341535039,VN
3341535040,3341535047,MA
-3341535048,3341535055,SA
-3341535056,3341535087,US
-3341535088,3341535095,GB
-3341535096,3341535103,US
-3341535104,3341535135,HK
-3341535136,3341535151,US
-3341535152,3341535167,CN
-3341535168,3341535183,US
+3341535048,3341535087,US
+3341535088,3341535095,BD
+3341535096,3341535151,US
+3341535152,3341535171,CN
+3341535172,3341535183,US
3341535184,3341535187,ID
3341535188,3341535195,US
3341535196,3341535199,SA
3341535200,3341535231,US
3341535232,3341536255,GB
-3341536256,3341536383,HK
-3341536384,3341536415,US
-3341536416,3341536447,IN
-3341536448,3341536479,BR
-3341536480,3341536511,VN
-3341536512,3341546239,US
+3341536256,3341536319,US
+3341536320,3341536383,GB
+3341536384,3341536511,US
+3341536512,3341536767,CA
+3341536768,3341546239,US
3341546240,3341547007,CA
3341547008,3341547519,CH
3341547520,3341549311,CA
@@ -115490,8 +116690,8 @@
3342488897,3342488908,GB
3342488909,3342488909,US
3342488910,3342488925,GB
-3342488926,3342488959,US
-3342488960,3342489215,SC
+3342488926,3342489087,US
+3342489088,3342489215,SC
3342489216,3342489279,GB
3342489280,3342489301,US
3342489302,3342489311,AR
@@ -115505,7 +116705,6 @@
3342489504,3342489567,GB
3342489568,3342496767,US
3342496768,3342497791,CA
-3342497792,3342499839,GD
3342499840,3342505983,US
3342505984,3342507007,BB
3342507008,3342510079,US
@@ -115582,11 +116781,7 @@
3343047792,3343047799,PL
3343047800,3343047847,US
3343047848,3343047855,IT
-3343047856,3343047863,US
-3343047864,3343047865,RU
-3343047866,3343047866,US
-3343047867,3343047871,RU
-3343047872,3343055871,US
+3343047856,3343055871,US
3343055872,3343056895,CA
3343056896,3343108095,US
3343108096,3343108863,GB
@@ -115645,8 +116840,7 @@
3343378896,3343378911,US
3343378912,3343378919,VE
3343378920,3343378927,NL
-3343378928,3343378935,GB
-3343378936,3343378959,US
+3343378928,3343378959,US
3343378960,3343378967,RU
3343378968,3343379039,US
3343379040,3343379071,GB
@@ -115666,10 +116860,8 @@
3343379392,3343379399,NI
3343379400,3343379407,CO
3343379408,3343380479,US
-3343380480,3343384575,CA
-3343384576,3343457439,US
-3343457440,3343457455,GB
-3343457456,3343457527,US
+3343380480,3343384319,CA
+3343384320,3343457527,US
3343457528,3343457535,ID
3343457536,3343457607,US
3343457608,3343457615,AU
@@ -115681,7 +116873,9 @@
3343460864,3343461375,CA
3343461376,3343465471,US
3343465472,3343466495,JM
-3343466496,3343649791,US
+3343466496,3343563521,US
+3343563522,3343563522,SG
+3343563523,3343649791,US
3343649792,3343650815,VI
3343650816,3343653535,US
3343653536,3343653551,CA
@@ -115693,7 +116887,9 @@
3343656512,3343656575,VI
3343656576,3343656703,US
3343656704,3343656959,VI
-3343656960,3343858687,US
+3343656960,3343747583,US
+3343747584,3343748095,VE
+3343748096,3343858687,US
3343858688,3343859199,VG
3343859200,3343922975,US
3343922976,3343923007,PA
@@ -115755,9 +116951,7 @@
3344381224,3344381255,US
3344381256,3344381263,CA
3344381264,3344381271,MX
-3344381272,3344381935,US
-3344381936,3344381943,MX
-3344381944,3344406527,US
+3344381272,3344406527,US
3344406528,3344408575,CA
3344408576,3344415679,US
3344415680,3344415743,AR
@@ -115836,38 +117030,9 @@
3345299456,3345301503,CA
3345301504,3345303551,US
3345303552,3345304575,CA
-3345304576,3345309855,US
-3345309856,3345309871,BR
-3345309872,3345309959,US
-3345309960,3345309967,ES
-3345309968,3345310079,US
-3345310080,3345310143,PL
-3345310144,3345310223,US
-3345310224,3345310231,CA
-3345310232,3345310271,US
-3345310272,3345310279,BR
-3345310280,3345310287,US
-3345310288,3345310295,AR
-3345310296,3345310351,US
-3345310352,3345310367,BR
-3345310368,3345310383,US
-3345310384,3345310399,BR
-3345310400,3345310559,US
-3345310560,3345310575,IN
-3345310576,3345310975,US
-3345310976,3345311039,PL
-3345311040,3345311103,US
-3345311104,3345311119,BR
-3345311120,3345311135,US
-3345311136,3345311167,RO
-3345311168,3345311199,US
-3345311200,3345311207,BR
-3345311208,3345311215,SK
-3345311216,3345311223,US
-3345311224,3345311231,SK
-3345311232,3345311719,US
-3345311720,3345311727,BR
-3345311728,3345315071,US
+3345304576,3345310247,US
+3345310248,3345310255,GB
+3345310256,3345315071,US
3345315072,3345315327,TW
3345315328,3345315583,US
3345315584,3345315839,TW
@@ -115883,60 +117048,57 @@
3345332288,3345332295,BR
3345332296,3345332303,PK
3345332304,3345332311,US
-3345332312,3345332319,CY
+3345332312,3345332319,BR
3345332320,3345332327,PT
-3345332328,3345332331,US
-3345332332,3345332335,BR
-3345332336,3345332339,US
-3345332340,3345332343,ID
+3345332328,3345332339,US
+3345332340,3345332343,BR
3345332344,3345332347,VN
3345332348,3345332351,CY
3345332352,3345332375,US
3345332376,3345332383,CA
-3345332384,3345332387,BR
-3345332388,3345332399,US
-3345332400,3345332403,LK
-3345332404,3345332407,GB
-3345332408,3345332411,ID
+3345332384,3345332399,US
+3345332400,3345332403,BR
+3345332404,3345332411,ID
3345332412,3345332423,US
3345332424,3345332431,MY
3345332432,3345332435,VN
-3345332436,3345332439,US
-3345332440,3345332447,NL
-3345332448,3345332455,US
+3345332436,3345332439,GB
+3345332440,3345332455,US
3345332456,3345332459,MY
-3345332460,3345332487,US
-3345332488,3345332495,IN
+3345332460,3345332463,US
+3345332464,3345332471,BR
+3345332472,3345332475,US
+3345332476,3345332479,CN
+3345332480,3345332487,US
+3345332488,3345332495,AU
3345332496,3345332503,CA
3345332504,3345332511,US
3345332512,3345332519,ID
-3345332520,3345332535,US
-3345332536,3345332543,IN
-3345332544,3345332583,US
+3345332520,3345332583,US
3345332584,3345332587,CY
3345332588,3345332591,ID
-3345332592,3345332595,BR
+3345332592,3345332595,US
3345332596,3345332599,BD
-3345332600,3345332603,CN
+3345332600,3345332603,US
3345332604,3345332607,ID
-3345332608,3345332647,US
-3345332648,3345332655,BR
+3345332608,3345332655,US
3345332656,3345332659,CY
-3345332660,3345332663,US
-3345332664,3345332667,IN
+3345332660,3345332667,US
3345332668,3345332671,ID
3345332672,3345332735,HR
3345332736,3345332751,US
3345332752,3345332767,GB
3345332768,3345332799,US
3345332800,3345332815,GB
-3345332816,3345332831,BR
-3345332832,3345332863,IN
-3345332864,3345333119,VN
-3345333120,3345333183,US
+3345332816,3345332831,US
+3345332832,3345332863,GB
+3345332864,3345333055,VN
+3345333056,3345333183,US
3345333184,3345333215,IN
-3345333216,3345333223,MY
-3345333224,3345333247,US
+3345333216,3345333223,US
+3345333224,3345333227,MX
+3345333228,3345333231,CY
+3345333232,3345333247,US
3345333248,3345334271,GP
3345334272,3345339391,US
3345339392,3345340415,CA
@@ -115950,9 +117112,7 @@
3345398784,3345399807,BS
3345399808,3345401855,PR
3345401856,3345403903,CA
-3345403904,3345408017,US
-3345408018,3345408021,GB
-3345408022,3345408092,US
+3345403904,3345408092,US
3345408093,3345408094,GB
3345408095,3345408110,US
3345408111,3345408114,AU
@@ -115968,9 +117128,7 @@
3345408391,3345408394,GB
3345408395,3345408415,US
3345408416,3345408420,AU
-3345408421,3345408424,US
-3345408425,3345408428,GB
-3345408429,3345408460,US
+3345408421,3345408460,US
3345408461,3345408464,IN
3345408465,3345408496,US
3345408497,3345408497,GB
@@ -115989,9 +117147,7 @@
3345408652,3345408655,CA
3345408656,3345408667,US
3345408668,3345408671,CA
-3345408672,3345408697,US
-3345408698,3345408701,GB
-3345408702,3345408784,US
+3345408672,3345408784,US
3345408785,3345408788,CA
3345408789,3345408903,US
3345408904,3345408907,GB
@@ -116003,9 +117159,7 @@
3345409094,3345409097,CA
3345409098,3345409175,US
3345409176,3345409179,CN
-3345409180,3345409204,US
-3345409205,3345409212,AU
-3345409213,3345409558,US
+3345409180,3345409558,US
3345409559,3345409562,CA
3345409563,3345409578,US
3345409579,3345409580,GB
@@ -116073,7 +117227,8 @@
3345667120,3346194175,US
3346194432,3346196479,US
3346196480,3346197503,CA
-3346197504,3346201599,US
+3346197504,3346198527,US
+3346200576,3346201599,US
3346201600,3346202623,CA
3346202624,3346209279,US
3346209792,3346210241,JM
@@ -116123,11 +117278,7 @@
3346232960,3346232991,GB
3346232992,3346233023,US
3346233024,3346233087,GB
-3346233088,3346233256,US
-3346233257,3346233266,AR
-3346233267,3346233267,US
-3346233268,3346233268,AR
-3346233269,3346233279,US
+3346233088,3346233279,US
3346233280,3346233311,GB
3346233312,3346234367,US
3346234368,3346234687,CA
@@ -116156,13 +117307,9 @@
3346505784,3346505791,GB
3346505792,3346505895,US
3346505896,3346505903,AU
-3346505904,3346506039,US
-3346506040,3346506047,CA
-3346506048,3346506111,US
+3346505904,3346506111,US
3346506112,3346506119,JM
-3346506120,3346506159,US
-3346506160,3346506167,VE
-3346506168,3346506271,US
+3346506120,3346506271,US
3346506272,3346506279,GB
3346506280,3346506287,CA
3346506288,3346506311,US
@@ -116177,9 +117324,7 @@
3346506528,3346506535,GB
3346506536,3346506567,US
3346506568,3346506575,TR
-3346506576,3346506743,US
-3346506744,3346506751,CA
-3346506752,3346520063,US
+3346506576,3346520063,US
3346520064,3346521087,CA
3346521088,3346523135,US
3346523136,3346523391,BO
@@ -116204,12 +117349,12 @@
3346989056,3347014143,US
3347014144,3347014255,CA
3347014256,3347014271,CY
-3347014272,3347015551,CA
-3347015552,3347015615,US
-3347015616,3347015647,CA
+3347014272,3347014399,CA
+3347014400,3347014655,US
+3347014656,3347015423,CA
+3347015424,3347015647,US
3347015648,3347015663,AE
-3347015664,3347015679,CA
-3347015680,3347016703,US
+3347015664,3347016703,US
3347016704,3347017727,CA
3347017728,3347021823,US
3347021824,3347022847,CA
@@ -116261,9 +117406,7 @@
3349619392,3349619503,US
3349619504,3349619519,PA
3349619520,3349619583,CA
-3349619584,3349621243,US
-3349621244,3349621245,IN
-3349621246,3349621826,US
+3349619584,3349621826,US
3349621827,3349621828,DK
3349621829,3349637119,US
3349637120,3349639167,CA
@@ -116281,7 +117424,9 @@
3349649408,3349653503,CA
3349653504,3349702623,US
3349702624,3349702655,LK
-3349702656,3349723260,US
+3349702656,3349723199,US
+3349723200,3349723215,PK
+3349723216,3349723260,US
3349723261,3349723265,CA
3349723266,3349723360,US
3349723361,3349723367,CA
@@ -116291,11 +117436,14 @@
3349724192,3349724199,AF
3349724200,3349724207,US
3349724208,3349724215,CA
-3349724216,3349724415,US
+3349724216,3349724351,US
+3349724352,3349724359,PK
+3349724360,3349724415,US
3349724416,3349724447,AE
3349724448,3349724985,US
3349724986,3349724999,PK
-3349725000,3349727231,US
+3349725000,3349725183,US
+3349726208,3349727231,US
3349729280,3349731327,US
3349731328,3349732003,CA
3349732004,3349732007,US
@@ -116319,7 +117467,9 @@
3350146048,3350150143,US
3350150144,3350160639,CA
3350160640,3350160895,US
-3350160896,3350169855,CA
+3350160896,3350161919,CA
+3350161920,3350162431,US
+3350162432,3350169855,CA
3350169856,3350170111,US
3350170112,3350181887,CA
3350181888,3350183167,US
@@ -116360,9 +117510,7 @@
3350488960,3350489023,CN
3350489024,3350489063,US
3350489064,3350489071,CN
-3350489072,3350492369,US
-3350492370,3350492383,GB
-3350492384,3350492961,US
+3350489072,3350492961,US
3350492962,3350492990,GB
3350492991,3350501395,US
3350501396,3350501399,TR
@@ -116385,7 +117533,9 @@
3350518916,3350518919,TT
3350518920,3350519035,US
3350519036,3350519039,PA
-3350519040,3350548735,US
+3350519040,3350519059,US
+3350519060,3350519063,IN
+3350519064,3350548735,US
3350548736,3350548991,CA
3350549248,3350561279,US
3350561536,3350574591,US
@@ -116398,9 +117548,7 @@
3350618112,3350619135,CA
3350619136,3350620383,US
3350620384,3350620415,GB
-3350620416,3350620991,US
-3350620992,3350621023,KY
-3350621024,3350623231,US
+3350620416,3350623231,US
3350623232,3350624255,CA
3350624256,3350625279,US
3350626304,3350628351,CA
@@ -116434,13 +117582,7 @@
3350836268,3350836275,IN
3350836276,3350836279,ZA
3350836280,3350836283,CA
-3350836284,3350836287,US
-3350836288,3350836295,GB
-3350836296,3350836303,CO
-3350836304,3350836311,AR
-3350836312,3350836319,PH
-3350836320,3350836327,MX
-3350836328,3350836991,US
+3350836284,3350836991,US
3350836992,3350837247,CA
3350837248,3350837759,US
3350837760,3350843391,CA
@@ -116518,7 +117660,8 @@
3351035904,3351036927,US
3351036928,3351037951,CA
3351037952,3351043071,US
-3351043072,3351043583,FR
+3351043072,3351043327,CA
+3351043328,3351043583,FR
3351043584,3351044095,CA
3351044096,3351045311,US
3351045312,3351045343,EE
@@ -116527,53 +117670,27 @@
3351058944,3351059455,CA
3351059456,3351071743,US
3351071744,3351072767,CA
-3351072768,3351074240,US
-3351074241,3351074241,IN
-3351074242,3351074243,US
-3351074244,3351074249,IN
-3351074250,3351074250,US
-3351074251,3351074252,IN
-3351074253,3351074254,US
-3351074255,3351074255,TH
-3351074256,3351074256,IN
-3351074257,3351074257,PK
-3351074258,3351074258,IN
-3351074259,3351074260,US
+3351072768,3351074260,US
3351074261,3351074261,BR
-3351074262,3351074263,US
-3351074264,3351074264,MX
-3351074265,3351074266,IN
-3351074267,3351074267,US
-3351074268,3351074268,CY
-3351074269,3351074270,US
-3351074271,3351074271,PK
+3351074262,3351074271,US
3351074272,3351074272,GT
-3351074273,3351074279,US
-3351074280,3351074280,EG
-3351074281,3351074283,US
+3351074273,3351074283,US
3351074284,3351074284,BR
-3351074285,3351074286,US
-3351074287,3351074287,EG
-3351074288,3351074294,US
-3351074295,3351074296,GR
-3351074297,3351074297,EG
-3351074298,3351074300,US
-3351074301,3351074301,GR
+3351074285,3351074301,US
3351074302,3351074302,PT
3351074303,3351074303,BR
3351074304,3351074367,US
3351074368,3351074369,BR
3351074370,3351074373,US
-3351074374,3351074374,IN
+3351074374,3351074374,DE
3351074375,3351074375,BR
-3351074376,3351074376,US
-3351074377,3351074377,IN
-3351074378,3351074382,US
-3351074383,3351074383,IN
-3351074384,3351074384,US
+3351074376,3351074377,DE
+3351074378,3351074379,US
+3351074380,3351074380,DE
+3351074381,3351074384,US
3351074385,3351074385,CL
-3351074386,3351074386,RU
-3351074387,3351074387,US
+3351074386,3351074386,US
+3351074387,3351074387,BR
3351074388,3351074388,DE
3351074389,3351074389,US
3351074390,3351074390,DE
@@ -116583,123 +117700,70 @@
3351074394,3351074395,UA
3351074396,3351074396,BR
3351074397,3351074397,UA
-3351074398,3351074401,US
-3351074402,3351074402,UA
+3351074398,3351074402,US
3351074403,3351074403,BR
3351074404,3351074404,CL
3351074405,3351074405,US
3351074406,3351074406,CA
-3351074407,3351074407,RU
-3351074408,3351074408,DE
-3351074409,3351074409,IN
+3351074407,3351074409,BR
3351074410,3351074410,DE
3351074411,3351074411,US
-3351074412,3351074413,CO
-3351074414,3351074414,US
-3351074415,3351074415,BD
+3351074412,3351074413,PA
+3351074414,3351074415,US
3351074416,3351074417,BR
-3351074418,3351074419,US
-3351074420,3351074420,BR
-3351074421,3351074422,US
+3351074418,3351074418,US
+3351074419,3351074419,IN
+3351074420,3351074422,US
3351074423,3351074423,UA
3351074424,3351074426,US
3351074427,3351074427,DE
3351074428,3351074429,US
3351074430,3351074430,BR
-3351074431,3351074437,US
-3351074438,3351074438,BR
-3351074439,3351074445,US
+3351074431,3351074439,US
+3351074440,3351074440,CA
+3351074441,3351074444,US
+3351074445,3351074445,CA
3351074446,3351074446,CL
-3351074447,3351074449,US
-3351074450,3351074452,PH
+3351074447,3351074451,US
+3351074452,3351074452,IN
3351074453,3351074453,US
-3351074454,3351074457,PH
-3351074458,3351074458,US
-3351074459,3351074459,PH
-3351074460,3351074460,IN
-3351074461,3351074463,PH
-3351074464,3351074464,US
-3351074465,3351074466,PH
-3351074467,3351074470,US
-3351074471,3351074471,PH
-3351074472,3351074472,US
+3351074454,3351074457,IN
+3351074458,3351074463,US
+3351074464,3351074466,BR
+3351074467,3351074472,US
3351074473,3351074473,BR
3351074474,3351074474,US
3351074475,3351074475,BR
-3351074476,3351074481,US
-3351074482,3351074482,PH
-3351074483,3351074484,US
-3351074485,3351074485,PH
-3351074486,3351074486,US
+3351074476,3351074483,US
+3351074484,3351074484,CA
+3351074485,3351074486,US
3351074487,3351074487,DE
3351074488,3351074498,US
-3351074499,3351074501,PH
-3351074502,3351074502,GB
-3351074503,3351074503,PH
-3351074504,3351074504,RU
+3351074499,3351074499,CL
+3351074500,3351074504,US
3351074505,3351074505,DE
-3351074506,3351074506,GB
-3351074507,3351074516,US
+3351074506,3351074516,US
3351074517,3351074518,CA
3351074519,3351074524,US
3351074525,3351074528,CA
-3351074529,3351074529,US
-3351074530,3351074530,PH
-3351074531,3351074534,US
-3351074535,3351074537,RU
-3351074538,3351074552,US
-3351074553,3351074553,UA
-3351074554,3351074557,US
+3351074529,3351074557,US
3351074558,3351074558,CA
-3351074559,3351074687,US
-3351074688,3351074688,IN
-3351074689,3351074690,US
+3351074559,3351074690,US
3351074691,3351074691,BR
-3351074692,3351074693,US
-3351074694,3351074694,PK
-3351074695,3351074696,BR
-3351074697,3351074697,PE
-3351074698,3351074698,BR
-3351074699,3351074700,US
-3351074701,3351074701,IN
-3351074702,3351074702,PK
-3351074703,3351074703,CA
-3351074704,3351074704,US
-3351074705,3351074706,PK
-3351074707,3351074707,IN
-3351074708,3351074708,US
+3351074692,3351074708,US
3351074709,3351074709,CA
3351074710,3351074711,US
3351074712,3351074712,TR
-3351074713,3351074713,BR
-3351074714,3351074714,PK
-3351074715,3351074715,IN
-3351074716,3351074716,BR
-3351074717,3351074718,US
-3351074719,3351074720,IN
-3351074721,3351074721,PK
-3351074722,3351074722,US
-3351074723,3351074724,PK
-3351074725,3351074726,PA
-3351074727,3351074727,PK
-3351074728,3351074728,BR
+3351074713,3351074728,US
3351074729,3351074729,EG
-3351074730,3351074730,US
-3351074731,3351074731,PA
+3351074730,3351074731,US
3351074732,3351074732,BR
-3351074733,3351074733,PK
-3351074734,3351074734,RU
+3351074733,3351074734,US
3351074735,3351074735,BR
-3351074736,3351074738,US
-3351074739,3351074739,GB
-3351074740,3351074740,BR
-3351074741,3351074741,IN
-3351074742,3351074743,US
+3351074736,3351074743,US
3351074744,3351074745,BR
3351074746,3351074746,AU
-3351074747,3351074747,US
-3351074748,3351074749,IN
-3351074750,3351074750,BR
+3351074747,3351074750,US
3351074751,3351074751,HU
3351074752,3351074815,US
3351074816,3351076863,CA
@@ -116724,64 +117788,56 @@
3351196672,3351197695,US
3351197696,3351197711,PT
3351197712,3351197715,EG
-3351197716,3351197735,US
+3351197716,3351197719,CN
+3351197720,3351197735,US
3351197736,3351197739,CY
-3351197740,3351197743,CA
+3351197740,3351197743,BR
3351197744,3351197751,VN
3351197752,3351197759,PT
-3351197760,3351197763,ID
-3351197764,3351197775,US
+3351197760,3351197775,US
3351197776,3351197783,BR
3351197784,3351197787,US
-3351197788,3351197791,BR
+3351197788,3351197791,GT
3351197792,3351197795,IN
-3351197796,3351197799,US
-3351197800,3351197803,VN
+3351197796,3351197799,BR
+3351197800,3351197803,SI
3351197804,3351197807,AE
-3351197808,3351197823,US
-3351197824,3351197827,BD
+3351197808,3351197827,US
3351197828,3351197831,VN
-3351197832,3351197835,ID
-3351197836,3351197847,US
-3351197848,3351197851,RU
-3351197852,3351197859,US
-3351197860,3351197863,HK
+3351197832,3351197835,US
+3351197836,3351197839,BR
+3351197840,3351197843,US
+3351197844,3351197847,CN
+3351197848,3351197859,US
+3351197860,3351197863,CY
3351197864,3351197867,VN
3351197868,3351197871,CY
-3351197872,3351197879,US
-3351197880,3351197887,VN
+3351197872,3351197887,US
3351197888,3351197891,MX
-3351197892,3351197895,AE
-3351197896,3351197899,US
+3351197892,3351197895,VN
+3351197896,3351197899,BR
3351197900,3351197903,CY
3351197904,3351197911,VN
3351197912,3351197983,US
3351197984,3351198015,MX
-3351198016,3351198039,US
+3351198016,3351198031,US
+3351198032,3351198039,MD
3351198040,3351198047,AE
-3351198048,3351198063,US
-3351198064,3351198071,CN
+3351198048,3351198071,US
3351198072,3351198079,VN
-3351198080,3351198087,US
-3351198088,3351198091,BR
-3351198092,3351198095,US
-3351198096,3351198103,CN
+3351198080,3351198095,US
+3351198096,3351198103,MX
3351198104,3351198111,VN
-3351198112,3351198123,US
-3351198124,3351198127,HK
-3351198128,3351198131,GB
+3351198112,3351198131,US
3351198132,3351198135,BR
-3351198136,3351198139,US
-3351198140,3351198143,BR
-3351198144,3351198151,US
-3351198152,3351198155,HK
+3351198136,3351198151,US
+3351198152,3351198155,GB
3351198156,3351198159,EG
3351198160,3351198171,US
3351198172,3351198175,AU
-3351198176,3351198179,HK
-3351198180,3351198183,US
-3351198184,3351198187,VN
-3351198188,3351198191,HK
+3351198176,3351198179,BD
+3351198180,3351198187,US
+3351198188,3351198191,GH
3351198192,3351198195,CN
3351198196,3351198207,US
3351198208,3351198215,VN
@@ -116789,70 +117845,68 @@
3351198224,3351198231,US
3351198232,3351198235,CA
3351198236,3351198239,US
-3351198240,3351198247,CN
-3351198248,3351198255,HK
+3351198240,3351198251,ID
+3351198252,3351198255,GH
3351198256,3351198259,VN
-3351198260,3351198263,GH
+3351198260,3351198263,DE
3351198264,3351198271,US
-3351198272,3351198279,IL
+3351198272,3351198279,ID
3351198280,3351198335,US
3351198336,3351198351,CA
-3351198352,3351198359,BR
+3351198352,3351198359,US
3351198360,3351198363,GB
3351198364,3351198371,US
3351198372,3351198383,CA
-3351198384,3351198387,GB
+3351198384,3351198387,MX
3351198388,3351198391,US
3351198392,3351198399,TR
-3351198400,3351198403,GB
+3351198400,3351198403,US
3351198404,3351198407,IN
3351198408,3351198411,BR
3351198412,3351198415,GB
-3351198416,3351198423,US
+3351198416,3351198423,CL
3351198424,3351198427,RO
-3351198428,3351198431,ID
+3351198428,3351198431,US
3351198432,3351198439,IN
3351198440,3351198447,US
3351198448,3351198463,JO
-3351198464,3351198471,US
-3351198472,3351198475,PK
+3351198464,3351198475,US
3351198476,3351198479,CY
-3351198480,3351198487,VN
+3351198480,3351198487,BR
3351198488,3351198495,US
3351198496,3351198503,VN
3351198504,3351198507,US
3351198508,3351198511,CY
3351198512,3351198515,US
-3351198516,3351198519,GB
-3351198520,3351198527,US
+3351198516,3351198519,ID
+3351198520,3351198527,IN
3351198528,3351198535,RU
3351198536,3351198539,CY
-3351198540,3351198551,US
-3351198552,3351198559,MY
-3351198560,3351198567,CY
+3351198540,3351198559,US
+3351198560,3351198567,LK
3351198568,3351198575,US
3351198576,3351198579,CY
3351198580,3351198607,US
3351198608,3351198615,GR
3351198616,3351198619,MX
-3351198620,3351198623,CN
+3351198620,3351198623,BD
3351198624,3351198627,CY
3351198628,3351198631,CA
3351198632,3351198687,US
3351198688,3351198703,MA
-3351198704,3351198707,IN
-3351198708,3351198711,CN
+3351198704,3351198711,IN
3351198712,3351232511,US
3351232512,3351232767,IL
-3351232768,3351268111,US
+3351232768,3351267327,US
+3351267328,3351267583,HK
+3351267584,3351267839,JP
+3351267840,3351268111,US
3351268112,3351268115,GB
3351268116,3351268131,US
3351268132,3351268135,GB
3351268136,3351268493,US
3351268494,3351268494,DE
-3351268495,3351268505,US
-3351268506,3351268506,GB
-3351268507,3351268533,US
+3351268495,3351268533,US
3351268534,3351268534,CN
3351268535,3351268537,US
3351268538,3351268538,CN
@@ -117082,10 +118136,8 @@
3351895552,3351895807,CA
3351895808,3351904255,US
3351904256,3351912703,CA
-3351912704,3351914495,US
-3351914496,3351916543,CA
-3351916544,3351920639,US
-3351920640,3351933951,CA
+3351912704,3351912959,US
+3351912960,3351933951,CA
3351933952,3351939071,US
3351939072,3351959551,CA
3351959552,3351961599,US
@@ -117119,7 +118171,9 @@
3352563200,3352563455,US
3352563456,3352573951,CA
3352573952,3352574207,US
-3352574464,3352581631,CA
+3352574464,3352575743,CA
+3352575744,3352575999,US
+3352576000,3352581631,CA
3352581632,3352582143,US
3352582144,3352583935,CA
3352583936,3352584191,US
@@ -117130,42 +118184,33 @@
3352616960,3352887295,CA
3352887296,3352916379,US
3352916380,3352916380,VE
-3352916381,3352916488,US
-3352916489,3352916489,GB
-3352916490,3352916496,US
-3352916497,3352916503,RU
-3352916504,3352916504,PA
-3352916505,3352916507,US
-3352916508,3352916512,PK
-3352916513,3352916513,UA
-3352916514,3352916514,PK
-3352916515,3352916515,UA
-3352916516,3352916527,PK
-3352916528,3352916528,UA
-3352916529,3352916529,US
-3352916530,3352916530,UA
-3352916531,3352916533,PK
+3352916381,3352916479,US
+3352916480,3352916506,BR
+3352916507,3352916507,US
+3352916508,3352916512,BR
+3352916513,3352916513,US
+3352916514,3352916514,BR
+3352916515,3352916515,US
+3352916516,3352916527,BR
+3352916528,3352916530,US
+3352916531,3352916533,BR
3352916534,3352916534,US
-3352916535,3352916541,PK
+3352916535,3352916541,BR
3352916542,3352916542,US
-3352916543,3352916555,RU
-3352916556,3352916556,AR
-3352916557,3352916557,CO
-3352916558,3352916564,RU
-3352916565,3352916565,MY
-3352916566,3352916566,RU
-3352916567,3352916568,US
-3352916569,3352916571,GB
-3352916572,3352916588,US
-3352916589,3352916607,MY
-3352916608,3352916627,US
-3352916628,3352916631,PK
-3352916632,3352916638,US
+3352916543,3352916557,BR
+3352916558,3352916566,US
+3352916567,3352916584,BR
+3352916585,3352916607,US
+3352916608,3352916615,BR
+3352916616,3352916619,US
+3352916620,3352916635,BR
+3352916636,3352916636,US
+3352916637,3352916638,BR
3352916639,3352916639,DE
-3352916640,3352916732,US
-3352916733,3352916733,PK
-3352916734,3352916735,GB
-3352916736,3352918015,US
+3352916640,3352916640,BR
+3352916641,3352916648,US
+3352916649,3352916689,BR
+3352916690,3352918015,US
3352918016,3352919039,CA
3352919040,3353335303,US
3353335304,3353335309,NL
@@ -117185,8 +118230,8 @@
3353335354,3353335359,NL
3353335360,3353335361,US
3353335362,3353335363,NL
-3353335364,3353335372,US
-3353335373,3353335376,NL
+3353335364,3353335374,US
+3353335375,3353335376,NL
3353335377,3353335378,US
3353335379,3353335380,NL
3353335381,3353335382,US
@@ -117194,13 +118239,17 @@
3353335387,3353335388,US
3353335389,3353335390,NL
3353335391,3353335392,US
-3353335393,3353335406,NL
+3353335393,3353335394,NL
+3353335395,3353335396,US
+3353335397,3353335406,NL
3353335407,3353335407,US
3353335408,3353335411,NL
3353335412,3353335414,US
3353335415,3353335420,NL
3353335421,3353335422,US
-3353335423,3353335435,NL
+3353335423,3353335424,NL
+3353335425,3353335426,US
+3353335427,3353335435,NL
3353335436,3353335437,US
3353335438,3353335445,NL
3353335446,3353335447,US
@@ -117242,13 +118291,9 @@
3353335613,3353335614,US
3353335615,3353335616,NL
3353335617,3353335619,US
-3353335620,3353335635,NL
-3353335636,3353335637,US
-3353335638,3353335639,NL
-3353335640,3353335643,US
-3353335644,3353335655,NL
-3353335656,3353335660,US
-3353335661,3353335664,NL
+3353335620,3353335655,NL
+3353335656,3353335662,US
+3353335663,3353335664,NL
3353335665,3353335666,US
3353335667,3353335668,NL
3353335669,3353335670,US
@@ -117287,18 +118332,13 @@
3353731776,3353731823,IL
3353731824,3353731999,US
3353732000,3353732031,CN
-3353732032,3353732063,US
-3353732064,3353732071,RU
-3353732072,3353732127,US
-3353732128,3353732143,RU
-3353732144,3353732159,US
+3353732032,3353732159,US
3353732160,3353732191,CA
3353732192,3353732351,US
3353732352,3353732863,DE
3353732864,3353737215,US
3353737216,3353737471,GB
-3353737472,3353752581,US
-3353752582,3353752585,FR
+3353737472,3353752585,US
3353752586,3353752589,BE
3353752590,3353753055,US
3353753056,3353753059,BR
@@ -117352,15 +118392,7 @@
3353982720,3353983231,CA
3353983232,3353989631,US
3353989632,3353989887,CA
-3353989888,3353995647,US
-3353995648,3353995711,GB
-3353995712,3353996047,US
-3353996048,3353996055,BR
-3353996056,3353996735,US
-3353996736,3353996767,IN
-3353996768,3353996815,US
-3353996816,3353996823,BR
-3353996824,3354066943,US
+3353989888,3354066943,US
3354066944,3354132479,CA
3354132480,3354467748,US
3354467749,3354467749,BL
@@ -117387,17 +118419,17 @@
3354501120,3354503167,CA
3354503168,3354507271,US
3354507272,3354507279,ID
-3354507280,3354507283,PH
-3354507284,3354507287,FR
+3354507280,3354507283,NZ
+3354507284,3354507287,US
3354507288,3354507291,CY
-3354507292,3354507295,GB
+3354507292,3354507295,BR
3354507296,3354507299,VN
3354507300,3354507303,US
-3354507304,3354507307,BR
-3354507308,3354507311,GH
-3354507312,3354507315,CN
+3354507304,3354507307,IN
+3354507308,3354507311,MA
+3354507312,3354507315,BR
3354507316,3354507327,US
-3354507328,3354507335,CY
+3354507328,3354507335,MD
3354507336,3354507343,US
3354507344,3354507347,IN
3354507348,3354507351,BR
@@ -117406,77 +118438,67 @@
3354507364,3354507367,CY
3354507368,3354507375,CA
3354507376,3354507383,ID
-3354507384,3354507387,BD
+3354507384,3354507387,BR
3354507388,3354507391,CN
3354507392,3354507399,CA
3354507400,3354507403,EG
3354507404,3354507407,CN
-3354507408,3354507415,US
-3354507416,3354507423,GB
-3354507424,3354507427,US
-3354507428,3354507431,IN
-3354507432,3354507439,US
+3354507408,3354507439,US
3354507440,3354507443,CY
3354507444,3354507447,JO
3354507448,3354507459,US
-3354507460,3354507463,PK
-3354507464,3354507467,HK
+3354507460,3354507463,BR
+3354507464,3354507467,GH
3354507468,3354507471,CY
3354507472,3354507475,MY
3354507476,3354507479,CY
-3354507480,3354507483,VN
-3354507484,3354507487,US
-3354507488,3354507503,VN
-3354507504,3354507507,US
+3354507480,3354507483,BR
+3354507484,3354507507,US
3354507508,3354507511,PK
3354507512,3354507519,MA
3354507520,3354507535,US
3354507536,3354507539,CN
3354507540,3354507543,HU
3354507544,3354507551,US
-3354507552,3354507559,BD
-3354507560,3354507567,BR
-3354507568,3354507575,GB
+3354507552,3354507567,CN
+3354507568,3354507575,VN
3354507576,3354507583,AE
3354507584,3354507591,US
3354507592,3354507599,CY
3354507600,3354507607,US
3354507608,3354507611,CN
-3354507612,3354507615,HK
+3354507612,3354507615,US
3354507616,3354507623,IN
3354507624,3354507631,EG
3354507632,3354507639,US
-3354507640,3354507647,VN
-3354507648,3354507655,ID
-3354507656,3354507659,US
+3354507640,3354507647,MD
+3354507648,3354507655,US
+3354507656,3354507659,ID
3354507660,3354507667,CY
-3354507668,3354507671,RO
+3354507668,3354507671,BR
3354507672,3354507683,IN
3354507684,3354507687,PT
3354507688,3354507691,CA
3354507692,3354507703,US
3354507704,3354507711,NZ
-3354507712,3354507719,ID
+3354507712,3354507719,LK
3354507720,3354507723,VN
3354507724,3354507727,US
3354507728,3354507735,BR
-3354507736,3354507743,LK
+3354507736,3354507743,IN
3354507744,3354507747,TH
3354507748,3354507751,US
3354507752,3354507755,ID
3354507756,3354507759,IN
3354507760,3354507767,LK
-3354507768,3354507775,BD
+3354507768,3354507775,US
3354507776,3354507779,CY
3354507780,3354507787,US
3354507788,3354507791,CY
3354507792,3354507803,US
3354507804,3354507807,CY
3354507808,3354507815,BR
-3354507816,3354507823,CY
-3354507824,3354507827,US
-3354507828,3354507831,BR
-3354507832,3354507835,US
+3354507816,3354507835,US
3354507836,3354507839,CY
3354507840,3354507847,CN
3354507848,3354507855,CY
@@ -117485,15 +118507,13 @@
3354507872,3354507887,US
3354507888,3354507895,BR
3354507896,3354507903,CY
-3354507904,3354507907,BR
-3354507908,3354507911,BD
-3354507912,3354507915,PK
+3354507904,3354507907,US
+3354507908,3354507911,IN
+3354507912,3354507915,ID
3354507916,3354507919,FR
-3354507920,3354507923,AU
-3354507924,3354507927,US
-3354507928,3354507931,CY
-3354507932,3354507935,IN
-3354507936,3354507943,CY
+3354507920,3354507927,AU
+3354507928,3354507931,US
+3354507932,3354507943,CY
3354507944,3354507959,US
3354507960,3354507967,AE
3354507968,3354507983,MX
@@ -117501,35 +118521,37 @@
3354507992,3354507999,PK
3354508000,3354508015,US
3354508016,3354508031,MX
-3354508032,3354508039,BR
+3354508032,3354508035,US
+3354508036,3354508039,BR
3354508040,3354508043,US
-3354508044,3354508047,CN
-3354508048,3354508059,US
+3354508044,3354508047,DK
+3354508048,3354508051,US
+3354508052,3354508055,VN
+3354508056,3354508059,AU
3354508060,3354508063,BR
3354508064,3354508067,EG
3354508068,3354508071,US
3354508072,3354508075,CY
3354508076,3354508079,RU
3354508080,3354508095,US
-3354508096,3354508099,BD
+3354508096,3354508099,CY
3354508100,3354508107,US
3354508108,3354508111,BD
3354508112,3354508115,CY
-3354508116,3354508119,BD
+3354508116,3354508119,US
3354508120,3354508123,BR
-3354508124,3354508127,CN
+3354508124,3354508127,US
3354508128,3354508135,ID
-3354508136,3354508139,HR
-3354508140,3354508143,US
+3354508136,3354508139,IN
+3354508140,3354508143,CY
3354508144,3354508147,MY
-3354508148,3354508151,NZ
+3354508148,3354508151,BB
3354508152,3354508163,US
3354508164,3354508167,CY
-3354508168,3354508171,US
-3354508172,3354508175,RU
-3354508176,3354508187,US
+3354508168,3354508187,US
3354508188,3354508191,VN
-3354508192,3354508199,IN
+3354508192,3354508195,IN
+3354508196,3354508199,CY
3354508200,3354508203,CA
3354508204,3354508207,US
3354508208,3354508211,VN
@@ -117538,11 +118560,11 @@
3354508220,3354508223,IN
3354508224,3354508235,US
3354508236,3354508239,CA
-3354508240,3354508255,US
+3354508240,3354508247,US
+3354508248,3354508251,VN
+3354508252,3354508255,US
3354508256,3354508259,EG
-3354508260,3354508263,BR
-3354508264,3354508267,VN
-3354508268,3354508271,US
+3354508260,3354508271,US
3354508272,3354508275,TW
3354508276,3354508287,US
3354508288,3354508303,CY
@@ -117557,10 +118579,10 @@
3354508360,3354508367,AU
3354508368,3354508375,BD
3354508376,3354508383,MA
-3354508384,3354508395,US
+3354508384,3354508391,US
+3354508392,3354508395,BR
3354508396,3354508399,VN
-3354508400,3354508415,US
-3354508416,3354508423,GB
+3354508400,3354508423,US
3354508424,3354508431,MD
3354508432,3354508439,RO
3354508440,3354508447,AE
@@ -117572,13 +118594,12 @@
3354508516,3354508519,VN
3354508520,3354508527,IN
3354508528,3354508535,AE
-3354508536,3354508543,US
+3354508536,3354508543,BD
3354508544,3354508559,GR
-3354508560,3354508567,US
-3354508568,3354508579,BD
-3354508580,3354508583,US
-3354508584,3354508591,TH
-3354508592,3354508603,US
+3354508560,3354508571,US
+3354508572,3354508575,CN
+3354508576,3354508579,BR
+3354508580,3354508603,US
3354508604,3354508607,CY
3354508608,3354508623,US
3354508624,3354508639,MX
@@ -117587,20 +118608,19 @@
3354508672,3354508679,US
3354508680,3354508683,CY
3354508684,3354508687,PK
-3354508688,3354508703,US
+3354508688,3354508695,AR
+3354508696,3354508703,US
3354508704,3354508735,AE
3354508736,3354508743,PK
3354508744,3354508751,IN
-3354508752,3354508759,US
+3354508752,3354508759,MD
3354508760,3354508767,SE
3354508768,3354508775,GB
-3354508776,3354508799,US
-3354508800,3354508831,CN
-3354508832,3354508847,US
+3354508776,3354508847,US
3354508848,3354508855,MA
3354508856,3354508863,RO
3354508864,3354508895,CY
-3354508896,3354508927,VN
+3354508896,3354508927,US
3354508928,3354508943,GB
3354508944,3354508951,VN
3354508952,3354508959,PK
@@ -117610,24 +118630,18 @@
3354509004,3354509007,VN
3354509008,3354509019,US
3354509020,3354509023,GR
-3354509024,3354509027,CN
+3354509024,3354509027,BR
3354509028,3354509031,US
3354509032,3354509039,CY
-3354509040,3354509047,MX
-3354509048,3354509135,US
-3354509136,3354509143,BR
-3354509144,3354509151,US
-3354509152,3354509159,HK
-3354509160,3354509183,US
+3354509040,3354509183,US
3354509184,3354509191,BR
-3354509192,3354509199,EG
-3354509200,3354509247,US
+3354509192,3354509247,US
3354509248,3354509255,BR
-3354509256,3354509263,GB
+3354509256,3354509263,US
3354509264,3354509279,BR
3354509280,3354509283,AU
3354509284,3354509287,ID
-3354509288,3354509291,PK
+3354509288,3354509291,CY
3354509292,3354509295,US
3354509296,3354509299,CA
3354509300,3354509391,US
@@ -117721,29 +118735,22 @@
3355389696,3355389951,JP
3355389952,3355407359,US
3355407360,3355408383,PR
-3355408384,3355412735,US
-3355412736,3355412767,PK
-3355412768,3355412771,BR
+3355408384,3355412771,US
3355412772,3355412775,CY
-3355412776,3355412783,MD
-3355412784,3355412791,BR
+3355412776,3355412791,US
3355412792,3355412795,CY
-3355412796,3355412799,US
+3355412796,3355412799,ID
3355412800,3355412803,CY
3355412804,3355412807,CN
3355412808,3355412815,US
3355412816,3355412823,EG
-3355412824,3355412831,US
-3355412832,3355412863,VN
+3355412824,3355412863,US
3355412864,3355412927,FR
3355412928,3355412991,US
3355412992,3355413087,IN
-3355413088,3355413183,US
-3355413184,3355413247,IN
-3355413248,3355417735,US
+3355413088,3355417735,US
3355417736,3355417743,BR
-3355417744,3355417759,IN
-3355417760,3355417799,US
+3355417744,3355417799,US
3355417800,3355417803,CN
3355417804,3355417991,US
3355417992,3355417999,ID
@@ -117755,28 +118762,26 @@
3355418080,3355418111,CN
3355418112,3355418367,US
3355418368,3355418371,BR
-3355418372,3355418379,US
+3355418372,3355418375,US
+3355418376,3355418379,VN
3355418380,3355418383,BR
-3355418384,3355418391,US
-3355418392,3355418395,BR
+3355418384,3355418395,US
3355418396,3355418399,GT
3355418400,3355418431,BE
-3355418432,3355418439,GB
-3355418440,3355418447,VN
-3355418448,3355418455,IN
+3355418432,3355418455,GB
3355418456,3355418463,AE
3355418464,3355418527,US
3355418528,3355418535,BR
3355418536,3355418543,VN
-3355418544,3355418551,NZ
+3355418544,3355418551,BR
3355418552,3355418555,CY
-3355418556,3355418559,HK
-3355418560,3355418567,US
+3355418556,3355418567,US
3355418568,3355418575,MX
3355418576,3355418591,GB
3355418592,3355418607,US
3355418608,3355418615,MX
-3355418616,3355418623,IN
+3355418616,3355418619,US
+3355418620,3355418623,CY
3355418624,3355432959,US
3355432960,3355435007,CA
3355435008,3355443199,US
@@ -117860,7 +118865,6 @@
3355516928,3355525119,AR
3355525120,3355535359,CO
3355535360,3355537407,TT
-3355537408,3355537663,BR
3355537664,3355537919,AR
3355538176,3355538431,CL
3355538432,3355539199,AR
@@ -117981,7 +118985,10 @@
3355924480,3355926527,TT
3355926528,3355927039,NL
3355927040,3355928063,US
-3355928064,3355930623,PA
+3355928064,3355928575,CA
+3355928576,3355929087,GB
+3355929088,3355929599,US
+3355929600,3355930623,PA
3355930624,3355934719,BR
3355934720,3355939839,AR
3355939840,3355940863,SR
@@ -119137,7 +120144,9 @@
3362692864,3362695167,AR
3362695168,3362697215,CO
3362697216,3362703359,AR
-3362703360,3362709503,CO
+3362703360,3362705407,CO
+3362705408,3362707455,AR
+3362707456,3362709503,CO
3362709504,3362711551,AR
3362711552,3362713599,EC
3362713600,3362714623,VE
@@ -119251,7 +120260,7 @@
3367841792,3368052991,BR
3368052992,3368053247,PE
3368053248,3368053503,CO
-3368053760,3368086527,BR
+3368053504,3368086527,BR
3368086528,3368087551,CR
3368087552,3368601799,BR
3368601801,3370188799,BR
@@ -119709,7 +120718,6 @@
3389284352,3389292543,BD
3389292544,3389300735,CN
3389300736,3389301247,ID
-3389301248,3389301759,AU
3389301760,3389302015,IN
3389302016,3389302527,AU
3389302528,3389302783,PK
@@ -121208,7 +122216,7 @@
3393858816,3393859071,ID
3393859072,3393859327,AU
3393859328,3393859583,JP
-3393859584,3393860095,AU
+3393859840,3393860095,AU
3393860096,3393860607,HK
3393860608,3393860863,CN
3393860864,3393861375,IN
@@ -121254,7 +122262,16 @@
3393974272,3393976319,SG
3393976320,3393977343,MO
3393977344,3393978367,CN
-3393978368,3394011135,HK
+3393978368,3393995775,HK
+3393995776,3393996031,DE
+3393996032,3393999615,HK
+3393999616,3393999871,JP
+3393999872,3394000127,HK
+3394000128,3394000383,SG
+3394000384,3394000639,TW
+3394000640,3394005759,HK
+3394005760,3394006015,US
+3394006016,3394011135,HK
3394011136,3394027519,AU
3394027520,3394035711,JP
3394035712,3394039807,MY
@@ -121309,7 +122326,9 @@
3394234368,3394236415,VN
3394236416,3394238463,JP
3394238464,3394239487,CN
-3394239488,3394248703,HK
+3394239488,3394244095,HK
+3394244096,3394244607,TW
+3394244608,3394248703,HK
3394248704,3394252799,VU
3394252800,3394256895,IN
3394256896,3394265087,AU
@@ -121409,14 +122428,29 @@
3394754560,3394756607,MY
3394756608,3394760703,JP
3394760704,3394764799,ID
-3394764800,3394772991,HK
+3394764800,3394765311,HK
+3394765312,3394765567,JP
+3394765568,3394765823,DE
+3394765824,3394768639,HK
+3394768640,3394768895,US
+3394768896,3394769151,HK
+3394769152,3394769407,SG
+3394769408,3394769919,HK
+3394769920,3394770431,TW
+3394770432,3394770687,HK
+3394770688,3394770943,SG
+3394770944,3394771711,HK
+3394771712,3394771967,TW
+3394771968,3394772991,HK
3394772992,3394774015,CN
3394774016,3394775039,HK
3394775040,3394776063,BD
3394776064,3394777087,NZ
3394777088,3394781183,JP
3394781184,3394789375,MP
-3394789376,3394797567,HK
+3394789376,3394791167,HK
+3394791168,3394791423,US
+3394791424,3394797567,HK
3394797568,3394813951,IN
3394813952,3394815999,JP
3394816000,3394818047,HK
@@ -121833,7 +122867,6 @@
3397793024,3397793279,NZ
3397793280,3397793535,VN
3397793536,3397793791,HK
-3397793792,3397794303,PH
3397794304,3397794559,CN
3397794560,3397794815,IN
3397794816,3397812223,HK
@@ -122195,8 +123228,7 @@
3399995392,3399999487,KR
3399999488,3400000475,JP
3400000476,3400000479,US
-3400000480,3400000487,AU
-3400000488,3400002303,JP
+3400000480,3400002303,JP
3400002304,3400002367,HK
3400002368,3400003583,JP
3400003584,3400005631,AU
@@ -122292,7 +123324,6 @@
3400359936,3400364031,JP
3400364032,3400365055,CN
3400365056,3400366079,US
-3400366080,3400367103,CN
3400367104,3400368127,IN
3400368128,3400388607,AU
3400388608,3400392703,TH
@@ -124247,7 +125278,6 @@
3411189760,3411197951,AU
3411197952,3411202047,BD
3411202048,3411204607,AU
-3411204608,3411204863,IN
3411204864,3411205631,KR
3411205632,3411206143,HK
3411206144,3411210239,CN
@@ -124290,7 +125320,9 @@
3411341312,3411345407,KR
3411345408,3411354879,HK
3411354880,3411355647,SG
-3411355648,3411410943,HK
+3411355648,3411376127,HK
+3411376128,3411376383,US
+3411376384,3411410943,HK
3411410944,3411443711,CN
3411443712,3411460095,HK
3411460096,3411464191,NZ
@@ -125236,7 +126268,6 @@
3417264128,3417268223,JP
3417272320,3417274367,NZ
3417274368,3417275391,AU
-3417275392,3417276415,PH
3417276416,3417284607,CN
3417284608,3417288703,SG
3417288704,3417289215,IN
@@ -125264,8 +126295,7 @@
3417354240,3417356287,ID
3417356288,3417357311,AU
3417357312,3417357567,NZ
-3417357568,3417357823,AU
-3417357824,3417358335,PK
+3417357568,3417358335,PK
3417358336,3417374719,HK
3417374720,3417440255,PH
3417440256,3417833471,JP
@@ -125382,7 +126412,6 @@
3418308608,3418324991,CN
3418324992,3418326271,AU
3418326272,3418326527,CN
-3418326528,3418327039,PH
3418327040,3418329087,JP
3418329088,3418333183,CN
3418333184,3418345471,AU
@@ -125398,6 +126427,8 @@
3418399232,3418399247,PH
3418400862,3418400862,SG
3418401456,3418401459,TW
+3418401632,3418401647,PH
+3418405936,3418405939,PH
3418406912,3418423295,IN
3418423296,3418444091,HK
3418444092,3418444095,CN
@@ -126510,14 +127541,12 @@
3448990720,3448991743,IN
3448991744,3449001245,US
3449001246,3449001246,MC
-3449001247,3449098239,US
-3449098240,3449098495,GB
+3449001247,3449098751,US
3449098752,3449099263,DE
-3449099776,3449100287,US
+3449099264,3449100287,US
3449100288,3449100799,HK
3449100800,3449101311,AU
-3449101312,3449101823,US
-3449102336,3449159679,US
+3449101312,3449159679,US
3449159680,3449168639,CA
3449168640,3449168895,US
3449168896,3449169151,CA
@@ -128106,7 +129135,9 @@
3468598016,3468598143,US
3468598144,3468598175,SG
3468598176,3468598271,US
-3468598272,3468599039,SG
+3468598272,3468598391,SG
+3468598392,3468598399,NL
+3468598400,3468599039,SG
3468599040,3468599295,HK
3468599296,3468613631,US
3468613632,3468614655,PR
@@ -128213,6 +129244,7 @@
3470750208,3470752767,US
3470752768,3470753023,CO
3470753024,3470754047,US
+3470754048,3470754303,CA
3470754304,3470754559,PE
3470754560,3470755839,US
3470755840,3470756095,MU
@@ -128227,8 +129259,8 @@
3470886656,3470886911,GB
3470886912,3471057919,US
3471057920,3471058943,VE
-3471058944,3471059455,US
-3471059456,3471060223,ES
+3471058944,3471059967,US
+3471059968,3471060223,ES
3471060224,3471060991,US
3471060992,3471061247,NL
3471061248,3471061503,US
@@ -128316,9 +129348,7 @@
3475670848,3475671039,AG
3475671040,3475681279,US
3475681280,3475685375,HN
-3475685376,3475879279,US
-3475879280,3475879287,TT
-3475879288,3475882767,US
+3475685376,3475882767,US
3475882768,3475882783,FR
3475882784,3475882799,US
3475882800,3475882815,FR
@@ -128391,7 +129421,9 @@
3476447232,3476455423,CA
3476455424,3476881407,US
3476881408,3476946943,CA
-3476946944,3477384735,US
+3476946944,3477384711,US
+3477384712,3477384719,CN
+3477384720,3477384735,US
3477384736,3477384743,IE
3477384744,3477384783,US
3477384784,3477384799,IE
@@ -128415,7 +129447,9 @@
3478275984,3478275999,GB
3478276000,3478277951,US
3478277952,3478277983,GB
-3478277984,3478286591,US
+3478277984,3478278399,US
+3478278400,3478278655,GB
+3478278656,3478286591,US
3478286592,3478286847,GB
3478286848,3478288607,US
3478288608,3478288615,GB
@@ -128692,7 +129726,9 @@
3482775552,3482779647,PR
3482779648,3482910719,US
3482910720,3482927103,CA
-3482927104,3483435007,US
+3482927104,3483025407,US
+3483025408,3483029503,DE
+3483029504,3483435007,US
3483435008,3483533311,CA
3483533312,3483631615,US
3483631616,3483697151,CA
@@ -129123,7 +130159,7 @@
3489153536,3489154047,HN
3489154048,3489155583,MX
3489155584,3489156607,AR
-3489156608,3489157119,MX
+3489156608,3489157375,MX
3489157376,3489157631,CO
3489157632,3489158399,MX
3489158400,3489158655,AR
@@ -130038,7 +131074,19 @@
3509157888,3509166079,CA
3509166080,3509215231,US
3509215232,3509223423,CA
-3509223424,3509305599,US
+3509223424,3509239807,US
+3509239808,3509242879,NL
+3509242880,3509243135,US
+3509243136,3509244159,NL
+3509244160,3509244415,US
+3509244416,3509245231,NL
+3509245232,3509245239,US
+3509245240,3509245279,NL
+3509245280,3509245295,US
+3509245296,3509249279,NL
+3509249280,3509249535,US
+3509249536,3509256191,NL
+3509256192,3509305599,US
3509305600,3509305615,GB
3509305616,3509346303,US
3509346304,3509350711,CA
@@ -130227,7 +131275,9 @@
3510935552,3510943743,CA
3510943744,3511140351,US
3511140352,3511156735,CA
-3511156736,3511812095,US
+3511156736,3511257855,US
+3511257856,3511258111,CN
+3511258112,3511812095,US
3511812096,3511844863,CA
3511844864,3512012095,US
3512012096,3512012159,GB
@@ -130399,9 +131449,7 @@
3514723697,3514723697,BZ
3514723698,3514724455,US
3514724456,3514724456,BZ
-3514724457,3514724635,US
-3514724636,3514724636,UA
-3514724637,3514724707,US
+3514724457,3514724707,US
3514724708,3514724708,BZ
3514724709,3514826751,US
3514826752,3514843135,CA
@@ -130646,7 +131694,9 @@
3518062592,3518066687,CA
3518066688,3518075647,US
3518075648,3518075903,AU
-3518075904,3518076671,US
+3518075904,3518076079,US
+3518076080,3518076087,AU
+3518076088,3518076671,US
3518076672,3518076927,PA
3518076928,3518374719,US
3518374720,3518374783,IN
@@ -130698,7 +131748,9 @@
3519723520,3519724031,CA
3519724032,3519741951,US
3519741952,3519758335,ZA
-3519758336,3519873023,US
+3519758336,3519864831,US
+3519864832,3519868927,CA
+3519868928,3519873023,US
3519873024,3519874559,CA
3519874560,3519875071,US
3519875072,3519877119,CA
@@ -130718,7 +131770,37 @@
3519884288,3519901695,CA
3519901696,3519930367,US
3519934464,3519938559,CA
-3519938560,3519967231,US
+3519938560,3519938815,AT
+3519938816,3519939071,BE
+3519939072,3519939327,BG
+3519939328,3519939583,HR
+3519939584,3519939839,CY
+3519939840,3519940095,CZ
+3519940096,3519940351,DK
+3519940352,3519940607,FI
+3519940608,3519940863,FR
+3519940864,3519941119,GI
+3519941120,3519941375,GR
+3519941376,3519941631,HU
+3519941632,3519941887,IE
+3519941888,3519942143,IT
+3519942144,3519942399,LV
+3519942400,3519942655,LT
+3519942656,3519942911,LU
+3519942912,3519943167,NO
+3519943168,3519943423,PL
+3519943424,3519943679,PT
+3519943680,3519943935,RO
+3519943936,3519944191,RU
+3519944192,3519944447,SK
+3519944448,3519944703,SI
+3519944704,3519944959,ES
+3519944960,3519945215,SE
+3519945216,3519945471,CH
+3519945472,3519945727,TR
+3519945728,3519945983,UA
+3519945984,3519946751,IL
+3519946752,3519967231,US
3519967232,3519969279,CA
3519969280,3519971071,US
3519971072,3519971327,CA
@@ -130800,9 +131882,7 @@
3522125056,3522125311,GB
3522125312,3522130302,US
3522130303,3522130303,BZ
-3522130304,3522130307,US
-3522130308,3522130308,BZ
-3522130309,3522131858,US
+3522130304,3522131858,US
3522131859,3522131859,DE
3522131860,3522132227,US
3522132228,3522132228,BZ
@@ -131065,9 +132145,7 @@
3524827552,3524827615,JP
3524827616,3524828127,SG
3524828128,3524828159,JP
-3524828160,3524828415,SG
-3524828416,3524828671,JP
-3524828672,3524828927,SG
+3524828160,3524828927,SG
3524828928,3524829183,JP
3524829184,3524829439,SG
3524829440,3524829695,JP
@@ -131223,7 +132301,13 @@
3534863445,3534867711,HK
3534867968,3534880767,HK
3534880768,3535273983,KR
-3535273984,3535339519,HK
+3535273984,3535279103,HK
+3535279104,3535279359,US
+3535279360,3535280895,HK
+3535280896,3535281151,SG
+3535281152,3535292671,HK
+3535292672,3535292927,SG
+3535292928,3535339519,HK
3535339520,3535355903,NZ
3535355904,3535372287,AU
3535372288,3535380479,JP
@@ -131529,8 +132613,8 @@
3558178816,3558187007,BG
3558187008,3558195199,DE
3558195200,3558196327,GB
-3558196328,3558196335,IT
-3558196336,3558197247,GB
+3558196328,3558196343,IT
+3558196344,3558197247,GB
3558197248,3558199295,US
3558199296,3558203391,GB
3558203392,3558211583,ES
@@ -131542,9 +132626,7 @@
3558231552,3558231807,SK
3558231808,3558232063,FR
3558232064,3558232575,LB
-3558232576,3558235647,RU
-3558235648,3558235903,LB
-3558235904,3558236159,RU
+3558232576,3558236159,RU
3558236160,3558244351,GB
3558244352,3558252543,IT
3558252544,3558260735,KE
@@ -131686,9 +132768,7 @@
3559091200,3559093247,BE
3559093248,3559093311,GB
3559093312,3559093319,BE
-3559093320,3559093695,GB
-3559093696,3559093703,BE
-3559093704,3559094303,GB
+3559093320,3559094303,GB
3559094304,3559094319,BE
3559094320,3559095455,GB
3559095456,3559095456,BE
@@ -131940,9 +133020,7 @@
3560898560,3560906751,FI
3560906752,3560923135,DE
3560923136,3560931327,ES
-3560931328,3560939523,DE
-3560939524,3560939527,AT
-3560939528,3560939535,DE
+3560931328,3560939535,DE
3560939536,3560939539,PT
3560939540,3560939543,IT
3560939544,3560939555,DE
@@ -131951,15 +133029,11 @@
3560939568,3560939571,NL
3560939572,3560939579,ES
3560939580,3560939583,BE
-3560939584,3560939587,DE
-3560939588,3560939591,BE
-3560939592,3560939607,DE
+3560939584,3560939607,DE
3560939608,3560939611,IT
3560939612,3560939643,DE
3560939644,3560939647,BE
-3560939648,3560939655,DE
-3560939656,3560939659,CH
-3560939660,3560939679,DE
+3560939648,3560939679,DE
3560939680,3560939683,IT
3560939684,3560939687,AT
3560939688,3560939691,ES
@@ -131967,7 +133041,10 @@
3560939696,3560939719,DE
3560939720,3560939727,GR
3560939728,3560939735,NL
-3560939736,3560939751,FR
+3560939736,3560939739,FR
+3560939740,3560939743,DE
+3560939744,3560939747,FR
+3560939748,3560939751,DE
3560939752,3560939755,IT
3560939756,3560939759,DE
3560939760,3560939763,IT
@@ -131975,21 +133052,17 @@
3560939768,3560939771,IE
3560939772,3560939775,CZ
3560939776,3560939779,BE
-3560939780,3560939791,DE
-3560939792,3560939795,FR
+3560939780,3560939795,DE
3560939796,3560939799,GB
-3560939800,3560939803,DE
-3560939804,3560939807,IT
+3560939800,3560939807,DE
3560939808,3560939811,FR
-3560939812,3560939815,DE
-3560939816,3560939819,CH
-3560939820,3560939827,DE
+3560939812,3560939827,DE
3560939828,3560939831,FR
3560939832,3560939839,DE
3560939840,3560939843,GB
-3560939844,3560939847,ES
+3560939844,3560939847,DE
3560939848,3560939851,BE
-3560939852,3560939855,ES
+3560939852,3560939855,DE
3560939856,3560939859,FR
3560939860,3560939863,HU
3560939864,3560939867,ES
@@ -131999,13 +133072,11 @@
3560939896,3560939899,ES
3560939900,3560939903,GB
3560939904,3560939907,BR
-3560939908,3560939911,NL
-3560939912,3560939915,DE
+3560939908,3560939915,DE
3560939916,3560939919,ES
3560939920,3560939927,DE
3560939928,3560939931,NL
-3560939932,3560939935,IT
-3560939936,3560939943,DE
+3560939932,3560939943,DE
3560939944,3560939951,FR
3560939952,3560939955,DE
3560939956,3560939959,AT
@@ -132038,8 +133109,8 @@
3560940104,3560940115,DE
3560940116,3560940119,FR
3560940120,3560940123,GB
-3560940124,3560940127,DE
-3560940128,3560940135,IT
+3560940124,3560940131,DE
+3560940132,3560940135,IT
3560940136,3560940139,AT
3560940140,3560940147,DE
3560940148,3560940151,IT
@@ -132066,8 +133137,8 @@
3560940244,3560940247,GB
3560940248,3560940251,DE
3560940252,3560940255,CH
-3560940256,3560940267,DE
-3560940268,3560940275,GB
+3560940256,3560940271,DE
+3560940272,3560940275,GB
3560940276,3560940279,FR
3560940280,3560940283,AT
3560940284,3560940287,DE
@@ -132098,8 +133169,7 @@
3560940444,3560940447,SL
3560940448,3560940451,DE
3560940452,3560940455,NL
-3560940456,3560940459,DE
-3560940460,3560940463,HU
+3560940456,3560940463,DE
3560940464,3560940467,CY
3560940468,3560940471,DE
3560940472,3560940475,FR
@@ -132116,20 +133186,19 @@
3560940528,3560940531,DE
3560940532,3560940535,FR
3560940536,3560940539,HU
-3560940540,3560940543,IT
-3560940544,3560940547,DE
+3560940540,3560940547,DE
3560940548,3560940551,IE
3560940552,3560940563,DE
3560940564,3560940567,GB
3560940568,3560940571,DE
3560940572,3560940575,DK
-3560940576,3560940579,ES
+3560940576,3560940579,DE
3560940580,3560940583,IT
3560940584,3560940587,FR
3560940588,3560940591,IT
3560940592,3560940595,GR
3560940596,3560940599,CH
-3560940600,3560940603,MA
+3560940600,3560940603,DE
3560940604,3560940607,GB
3560940608,3560940611,FR
3560940612,3560940619,DE
@@ -132141,8 +133210,7 @@
3560940640,3560940647,GB
3560940648,3560940655,DE
3560940656,3560940663,IT
-3560940664,3560940683,DE
-3560940684,3560940687,DK
+3560940664,3560940687,DE
3560940688,3560940691,IT
3560940692,3560940695,NO
3560940696,3560940699,FR
@@ -132176,15 +133244,13 @@
3560940832,3560940839,DE
3560940840,3560940843,IT
3560940844,3560940851,ES
-3560940852,3560940859,DE
-3560940860,3560940863,PT
+3560940852,3560940863,DE
3560940864,3560940867,IT
3560940868,3560940879,DE
3560940880,3560940883,IT
3560940884,3560940887,NL
3560940888,3560940891,LU
-3560940892,3560940895,ES
-3560940896,3560940899,DE
+3560940892,3560940899,DE
3560940900,3560940903,NL
3560940904,3560940907,DE
3560940908,3560940915,GB
@@ -132200,14 +133266,12 @@
3560940972,3560940979,DE
3560940980,3560940983,LU
3560940984,3560940987,IT
-3560940988,3560940995,DE
-3560940996,3560940999,DK
+3560940988,3560940999,DE
3560941000,3560941003,ES
3560941004,3560941019,DE
3560941020,3560941023,IT
3560941024,3560941027,FR
-3560941028,3560941031,CH
-3560941032,3560941047,DE
+3560941028,3560941047,DE
3560941048,3560941051,GR
3560941052,3560941059,FR
3560941060,3560941067,DE
@@ -132228,11 +133292,9 @@
3560941132,3560941135,GB
3560941136,3560941147,DE
3560941148,3560941151,IT
-3560941152,3560941155,DK
+3560941152,3560941155,DE
3560941156,3560941159,ES
-3560941160,3560941167,DE
-3560941168,3560941171,NL
-3560941172,3560941175,DE
+3560941160,3560941175,DE
3560941176,3560941179,ES
3560941180,3560941183,GB
3560941184,3560941187,IT
@@ -132249,9 +133311,9 @@
3560941232,3560941235,FR
3560941236,3560941243,DE
3560941244,3560941251,IT
-3560941252,3560941255,FR
+3560941252,3560941255,DE
3560941256,3560941259,AT
-3560941260,3560941263,GB
+3560941260,3560941263,DE
3560941264,3560941271,ES
3560941272,3560941275,DE
3560941276,3560941279,GR
@@ -132263,8 +133325,8 @@
3560941304,3560941307,FR
3560941308,3560941315,DE
3560941316,3560941319,SE
-3560941320,3560941323,ES
-3560941324,3560941331,IT
+3560941320,3560941327,DE
+3560941328,3560941331,IT
3560941332,3560941335,PT
3560941336,3560941339,BE
3560941340,3560941343,GB
@@ -132272,15 +133334,11 @@
3560941348,3560941351,IE
3560941352,3560941355,NL
3560941356,3560941359,ES
-3560941360,3560941367,DE
-3560941368,3560941371,DK
-3560941372,3560941379,DE
+3560941360,3560941379,DE
3560941380,3560941383,CH
3560941384,3560941387,IE
3560941388,3560941391,SE
-3560941392,3560941395,DK
-3560941396,3560941399,IS
-3560941400,3560941407,DE
+3560941392,3560941407,DE
3560941408,3560941411,CH
3560941412,3560941415,IT
3560941416,3560941419,DE
@@ -132299,15 +133357,12 @@
3560941484,3560941487,ES
3560941488,3560941491,DE
3560941492,3560941495,GB
-3560941496,3560941499,FR
-3560941500,3560941503,ES
-3560941504,3560941507,DE
+3560941496,3560941507,DE
3560941508,3560941511,IT
3560941512,3560941515,AT
3560941516,3560941519,SE
3560941520,3560941523,NO
-3560941524,3560941535,DE
-3560941536,3560941539,DK
+3560941524,3560941539,DE
3560941540,3560941543,FR
3560941544,3560941547,GB
3560941548,3560941551,DE
@@ -132321,11 +133376,9 @@
3560941600,3560941603,FR
3560941604,3560941607,CH
3560941608,3560941611,GB
-3560941612,3560941623,DE
-3560941624,3560941627,GB
-3560941628,3560941631,ES
+3560941612,3560941631,DE
3560941632,3560941635,NL
-3560941636,3560941639,BE
+3560941636,3560941639,DE
3560941640,3560941643,GB
3560941644,3560941647,BE
3560941648,3560941651,NO
@@ -132351,7 +133404,9 @@
3560941748,3560941751,ES
3560941752,3560941755,BE
3560941756,3560941771,DE
-3560941772,3560941787,GB
+3560941772,3560941779,GB
+3560941780,3560941783,DE
+3560941784,3560941787,GB
3560941788,3560941791,DE
3560941792,3560941795,ES
3560941796,3560941799,FR
@@ -132361,11 +133416,9 @@
3560941812,3560941815,NO
3560941816,3560941819,FR
3560941820,3560941823,NL
-3560941824,3560941827,DE
-3560941828,3560941831,ES
+3560941824,3560941831,DE
3560941832,3560941835,GB
-3560941836,3560941843,DE
-3560941844,3560941847,IT
+3560941836,3560941847,DE
3560941848,3560941851,BE
3560941852,3560941855,CH
3560941856,3560941859,BE
@@ -132380,14 +133433,9 @@
3560941896,3560941899,ES
3560941900,3560941903,DE
3560941904,3560941907,GB
-3560941908,3560941911,DE
-3560941912,3560941919,FR
-3560941920,3560941931,DE
-3560941932,3560941935,CH
-3560941936,3560941947,DE
-3560941948,3560941951,DK
-3560941952,3560941955,IT
-3560941956,3560941959,DE
+3560941908,3560941915,DE
+3560941916,3560941919,FR
+3560941920,3560941959,DE
3560941960,3560941963,LU
3560941964,3560941967,FR
3560941968,3560941971,DE
@@ -132412,28 +133460,24 @@
3560942056,3560942059,IS
3560942060,3560942063,DE
3560942064,3560942067,ES
-3560942068,3560942071,BE
-3560942072,3560942083,DE
+3560942068,3560942083,DE
3560942084,3560942087,FR
3560942088,3560942095,DE
3560942096,3560942099,FR
3560942100,3560942103,DE
3560942104,3560942107,NL
-3560942108,3560942115,DE
-3560942116,3560942119,HU
+3560942108,3560942119,DE
3560942120,3560942123,AT
-3560942124,3560942127,BE
-3560942128,3560942131,DE
+3560942124,3560942131,DE
3560942132,3560942135,ES
3560942136,3560942143,DE
3560942144,3560942147,GB
3560942148,3560942151,DE
3560942152,3560942155,IT
-3560942156,3560942159,ES
-3560942160,3560942163,DE
+3560942156,3560942163,DE
3560942164,3560942171,ES
3560942172,3560942175,SE
-3560942176,3560942179,BE
+3560942176,3560942179,DE
3560942180,3560942183,ES
3560942184,3560942191,DE
3560942192,3560942195,HU
@@ -132470,8 +133514,8 @@
3560942352,3560942355,ES
3560942356,3560942359,IT
3560942360,3560942363,AT
-3560942364,3560942367,DE
-3560942368,3560942375,FR
+3560942364,3560942371,DE
+3560942372,3560942375,FR
3560942376,3560942379,DE
3560942380,3560942383,GB
3560942384,3560942387,DE
@@ -132480,10 +133524,7 @@
3560942408,3560942411,GB
3560942412,3560942415,DE
3560942416,3560942419,IT
-3560942420,3560942423,FR
-3560942424,3560942427,NO
-3560942428,3560942447,DE
-3560942448,3560942455,CH
+3560942420,3560942455,DE
3560942456,3560942459,ES
3560942460,3560942463,RU
3560942464,3560942467,BE
@@ -132493,28 +133534,20 @@
3560942480,3560942483,ES
3560942484,3560942487,HU
3560942488,3560942495,FR
-3560942496,3560942499,ES
-3560942500,3560942503,DE
+3560942496,3560942503,DE
3560942504,3560942511,ES
-3560942512,3560942515,IT
-3560942516,3560942523,DE
+3560942512,3560942523,DE
3560942524,3560942527,NL
-3560942528,3560942535,DE
-3560942536,3560942539,FR
-3560942540,3560942547,DE
-3560942548,3560942551,DK
-3560942552,3560942555,DE
+3560942528,3560942555,DE
3560942556,3560942559,FR
3560942560,3560942563,IT
3560942564,3560942567,ES
-3560942568,3560942571,DE
-3560942572,3560942579,FR
+3560942568,3560942575,DE
+3560942576,3560942579,FR
3560942580,3560942583,DE
3560942584,3560942587,GB
3560942588,3560942590,ES
-3560942591,3560942599,DE
-3560942600,3560942603,DK
-3560942604,3560942619,DE
+3560942591,3560942619,DE
3560942620,3560942623,BE
3560942624,3560942627,IT
3560942628,3560942631,GB
@@ -132528,9 +133561,7 @@
3560942668,3560942671,DE
3560942672,3560942675,IT
3560942676,3560942679,BE
-3560942680,3560942683,DE
-3560942684,3560942687,BE
-3560942688,3560942691,NL
+3560942680,3560942691,DE
3560942692,3560942695,LU
3560942696,3560942699,DE
3560942700,3560942703,ES
@@ -132538,7 +133569,8 @@
3560942708,3560942711,IT
3560942712,3560942715,LU
3560942716,3560942719,BE
-3560942720,3560942727,IT
+3560942720,3560942723,DE
+3560942724,3560942727,IT
3560942728,3560942731,GB
3560942732,3560942735,DE
3560942736,3560942739,CH
@@ -132552,8 +133584,7 @@
3560942788,3560942791,HU
3560942792,3560942795,DE
3560942796,3560942799,FR
-3560942800,3560942803,AT
-3560942804,3560942807,DE
+3560942800,3560942807,DE
3560942808,3560942811,AT
3560942812,3560942815,FR
3560942816,3560942819,DE
@@ -132561,16 +133592,11 @@
3560942824,3560942827,GB
3560942828,3560942831,AT
3560942832,3560942835,IT
-3560942836,3560942839,CH
-3560942840,3560942843,BE
+3560942836,3560942843,DE
3560942844,3560942847,ES
3560942848,3560942851,IT
3560942852,3560942855,ES
-3560942856,3560942859,DE
-3560942860,3560942863,IT
-3560942864,3560942871,DE
-3560942872,3560942875,IT
-3560942876,3560942879,DE
+3560942856,3560942879,DE
3560942880,3560942883,GB
3560942884,3560942887,DE
3560942888,3560942891,FR
@@ -132592,8 +133618,9 @@
3560942960,3560942963,GB
3560942964,3560942983,DE
3560942984,3560942987,BE
-3560942988,3560942999,IT
-3560943000,3560943003,PL
+3560942988,3560942991,DE
+3560942992,3560942999,IT
+3560943000,3560943003,DE
3560943004,3560943007,DK
3560943008,3560943011,CH
3560943012,3560943015,IT
@@ -132604,15 +133631,13 @@
3560943032,3560943035,FR
3560943036,3560943039,PL
3560943040,3560943043,NO
-3560943044,3560943047,ES
+3560943044,3560943047,DE
3560943048,3560943051,HR
3560943052,3560943055,CY
3560943056,3560943059,BE
3560943060,3560943075,DE
3560943076,3560943079,ES
-3560943080,3560943095,DE
-3560943096,3560943099,PL
-3560943100,3560943110,DE
+3560943080,3560943110,DE
3560943111,3560943111,ES
3560943112,3560943113,DE
3560943114,3560943115,ES
@@ -132620,8 +133645,7 @@
3560943117,3560943117,IL
3560943118,3560943118,DE
3560943119,3560943119,IT
-3560943120,3560943120,DE
-3560943121,3560943121,CH
+3560943120,3560943121,DE
3560943122,3560943122,ES
3560943123,3560943125,DE
3560943126,3560943126,FR
@@ -132637,8 +133661,7 @@
3560943140,3560943140,ES
3560943141,3560943142,DE
3560943143,3560943145,HU
-3560943146,3560943146,IE
-3560943147,3560943149,DE
+3560943146,3560943149,DE
3560943150,3560943150,ES
3560943151,3560943151,IT
3560943152,3560943152,HU
@@ -132646,13 +133669,11 @@
3560943155,3560943155,FR
3560943156,3560943157,DE
3560943158,3560943158,FR
-3560943159,3560943159,IT
-3560943160,3560943160,DE
-3560943161,3560943161,BE
+3560943159,3560943161,DE
3560943162,3560943162,GR
3560943163,3560943163,DE
3560943164,3560943164,PL
-3560943165,3560943165,FR
+3560943165,3560943165,DE
3560943166,3560943166,GB
3560943167,3560943167,FR
3560943168,3560943168,ES
@@ -132661,8 +133682,8 @@
3560943171,3560943171,IT
3560943172,3560943172,ES
3560943173,3560943173,BE
-3560943174,3560943175,DE
-3560943176,3560943177,CH
+3560943174,3560943176,DE
+3560943177,3560943177,CH
3560943178,3560943178,IT
3560943179,3560943179,PL
3560943180,3560943180,GB
@@ -132672,8 +133693,7 @@
3560943185,3560943185,DE
3560943186,3560943186,ES
3560943187,3560943187,PT
-3560943188,3560943188,IT
-3560943189,3560943192,DE
+3560943188,3560943192,DE
3560943193,3560943193,ES
3560943194,3560943195,DE
3560943196,3560943197,IT
@@ -132698,17 +133718,17 @@
3560943225,3560943226,GR
3560943227,3560943227,DE
3560943228,3560943230,NL
-3560943231,3560943232,FR
+3560943231,3560943231,FR
+3560943232,3560943232,DE
3560943233,3560943233,PL
3560943234,3560943234,EE
3560943235,3560943235,CH
-3560943236,3560943237,NL
-3560943238,3560943238,DE
+3560943236,3560943236,NL
+3560943237,3560943238,DE
3560943239,3560943239,FR
3560943240,3560943240,GB
3560943241,3560943241,FR
-3560943242,3560943242,DE
-3560943243,3560943243,FR
+3560943242,3560943243,DE
3560943244,3560943244,PL
3560943245,3560943245,CH
3560943246,3560943247,DE
@@ -132759,9 +133779,7 @@
3560943302,3560943302,ES
3560943303,3560943303,IT
3560943304,3560943304,FR
-3560943305,3560943306,DE
-3560943307,3560943307,ES
-3560943308,3560943309,DE
+3560943305,3560943309,DE
3560943310,3560943311,IT
3560943312,3560943312,PL
3560943313,3560943313,DE
@@ -132777,8 +133795,8 @@
3560943324,3560943324,DE
3560943325,3560943325,CH
3560943326,3560943326,RU
-3560943327,3560943329,DE
-3560943330,3560943331,IT
+3560943327,3560943330,DE
+3560943331,3560943331,IT
3560943332,3560943335,DE
3560943336,3560943336,ES
3560943337,3560943337,IT
@@ -132821,11 +133839,9 @@
3560943387,3560943387,GB
3560943388,3560943391,DE
3560943392,3560943392,GB
-3560943393,3560943393,DE
-3560943394,3560943394,ES
+3560943393,3560943394,DE
3560943395,3560943395,NL
-3560943396,3560943396,BE
-3560943397,3560943397,DE
+3560943396,3560943397,DE
3560943398,3560943398,BE
3560943399,3560943399,CH
3560943400,3560943400,IT
@@ -132856,8 +133872,7 @@
3560943427,3560943427,FR
3560943428,3560943428,NO
3560943429,3560943430,NL
-3560943431,3560943432,DE
-3560943433,3560943433,GB
+3560943431,3560943433,DE
3560943434,3560943434,SE
3560943435,3560943435,DE
3560943436,3560943436,FR
@@ -132905,16 +133920,13 @@
3560943488,3560943488,ES
3560943489,3560943489,DE
3560943490,3560943490,GB
-3560943491,3560943491,DE
-3560943492,3560943493,FR
+3560943491,3560943492,DE
+3560943493,3560943493,FR
3560943494,3560943494,GB
3560943495,3560943495,IT
-3560943496,3560943499,DE
-3560943500,3560943500,CH
+3560943496,3560943500,DE
3560943501,3560943501,ES
-3560943502,3560943507,DE
-3560943508,3560943508,DK
-3560943509,3560943510,DE
+3560943502,3560943510,DE
3560943511,3560943511,IT
3560943512,3560943512,DE
3560943513,3560943513,LU
@@ -132970,7 +133982,7 @@
3560943571,3560943572,DE
3560943573,3560943573,FR
3560943574,3560943574,NO
-3560943575,3560943575,BE
+3560943575,3560943575,DE
3560943576,3560943576,IT
3560943577,3560943577,DK
3560943578,3560943578,ES
@@ -132984,7 +133996,7 @@
3560943587,3560943587,DE
3560943588,3560943588,IT
3560943589,3560943589,NL
-3560943590,3560943590,HU
+3560943590,3560943590,DE
3560943591,3560943591,AT
3560943592,3560943592,SK
3560943593,3560943593,PL
@@ -133002,8 +134014,7 @@
3560943611,3560943611,FR
3560943612,3560943612,DE
3560943613,3560943613,ES
-3560943614,3560943617,DE
-3560943618,3560943618,FR
+3560943614,3560943618,DE
3560943619,3560943620,ES
3560943621,3560943621,SE
3560943622,3560943622,BE
@@ -133098,7 +134109,7 @@
3560943729,3560943729,DE
3560943730,3560943730,NL
3560943731,3560943731,IT
-3560943732,3560943732,FR
+3560943732,3560943732,DE
3560943733,3560943733,NO
3560943734,3560943736,DE
3560943737,3560943737,GR
@@ -133140,7 +134151,7 @@
3560943783,3560943783,BE
3560943784,3560943786,DE
3560943787,3560943787,ES
-3560943788,3560943788,DK
+3560943788,3560943788,DE
3560943789,3560943789,IT
3560943790,3560943790,DE
3560943791,3560943791,IT
@@ -133157,14 +134168,14 @@
3560943804,3560943804,ES
3560943805,3560943805,DE
3560943806,3560943806,ES
-3560943807,3560943807,DK
-3560943808,3560943810,DE
+3560943807,3560943810,DE
3560943811,3560943811,ES
3560943812,3560943812,IT
3560943813,3560943813,CH
3560943814,3560943814,DE
3560943815,3560943815,IT
-3560943816,3560943817,FR
+3560943816,3560943816,DE
+3560943817,3560943817,FR
3560943818,3560943818,PT
3560943819,3560943819,DE
3560943820,3560943820,FR
@@ -133322,9 +134333,7 @@
3560944624,3560944627,CL
3560944628,3560944631,DE
3560944632,3560944635,CA
-3560944636,3560944731,DE
-3560944732,3560944735,TR
-3560944736,3560944779,DE
+3560944636,3560944779,DE
3560944780,3560944783,ES
3560944784,3560944787,FR
3560944788,3560944791,NL
@@ -133342,7 +134351,7 @@
3560944840,3560944847,DE
3560944848,3560944855,FR
3560944856,3560944859,NL
-3560944860,3560944863,DK
+3560944860,3560944863,DE
3560944864,3560944871,FR
3560944872,3560944875,DE
3560944876,3560944879,ES
@@ -134008,7 +135017,9 @@
3562078208,3562086399,SK
3562094592,3562102449,GB
3562102450,3562102450,DE
-3562102451,3562110975,GB
+3562102451,3562110607,GB
+3562110608,3562110623,FR
+3562110624,3562110975,GB
3562110976,3562143743,ES
3562143744,3562151935,GB
3562151936,3562160127,DE
@@ -134052,7 +135063,7 @@
3562414080,3562422271,DE
3562422272,3562430463,IR
3562430464,3562431231,UA
-3562431232,3562431487,RU
+3562431232,3562431487,BZ
3562431488,3562438655,UA
3562438656,3562463231,DE
3562463232,3562471423,UA
@@ -134097,9 +135108,8 @@
3562799104,3562807295,HU
3562807296,3562815487,ES
3562815488,3562823679,NL
-3562823680,3562827775,RU
-3562827776,3562830847,NL
-3562830848,3562831359,RU
+3562823680,3562825727,RU
+3562825728,3562831359,NL
3562831360,3562831615,FR
3562831616,3562848255,RU
3562848256,3562856447,HR
@@ -134121,15 +135131,9 @@
3562995712,3563003903,AT
3563003904,3563005183,DE
3563005184,3563005311,KZ
-3563005312,3563005439,DE
-3563005440,3563005695,TR
-3563005696,3563005951,DE
-3563005952,3563006463,TR
-3563006464,3563006591,DE
+3563005312,3563006591,DE
3563006592,3563006719,CA
-3563006720,3563007487,DE
-3563007488,3563007999,TR
-3563008000,3563008255,DE
+3563006720,3563008255,DE
3563008256,3563008511,PL
3563008512,3563010815,DE
3563010816,3563011071,PL
@@ -134402,8 +135406,8 @@
3564572428,3564572431,ES
3564572432,3564572527,GB
3564572528,3564572531,DK
-3564572532,3564574847,GB
-3564574848,3564574975,NL
+3564572532,3564574719,GB
+3564574720,3564574975,NL
3564574976,3564575487,GB
3564575488,3564575615,DE
3564575616,3564576767,GB
@@ -134748,7 +135752,9 @@
3567427584,3567435775,SE
3567435776,3567453079,GB
3567453080,3567453087,ES
-3567453088,3567453695,GB
+3567453088,3567453407,GB
+3567453408,3567453439,ES
+3567453440,3567453695,GB
3567453696,3567453951,ES
3567453952,3567456407,GB
3567456408,3567456415,ES
@@ -135204,7 +136210,31 @@
3572170752,3572203519,IL
3572203520,3572236287,SI
3572236288,3572301823,AT
-3572301824,3572367359,DK
+3572301824,3572318207,IT
+3572318208,3572326399,GB
+3572326400,3572330495,DK
+3572330496,3572334591,IQ
+3572334592,3572338687,DK
+3572338688,3572340735,SE
+3572340736,3572342783,LU
+3572342784,3572346879,DE
+3572346880,3572348927,DK
+3572348928,3572350975,RS
+3572350976,3572355071,SE
+3572355072,3572356095,DK
+3572356096,3572357119,GB
+3572357120,3572358143,NL
+3572358144,3572360191,GB
+3572360192,3572361215,ES
+3572361216,3572362239,LT
+3572362240,3572363263,DK
+3572363264,3572364287,RS
+3572364288,3572365311,DE
+3572365312,3572366335,DK
+3572366336,3572366591,IT
+3572366592,3572366847,NL
+3572366848,3572367103,DE
+3572367104,3572367359,ES
3572367360,3572432895,NL
3572432896,3572465663,IT
3572465664,3572498431,BE
@@ -135294,9 +136324,7 @@
3574464512,3574530047,TR
3574530048,3574530207,SE
3574530208,3574530239,DE
-3574530240,3574531631,SE
-3574531632,3574531639,GB
-3574531640,3574594559,SE
+3574530240,3574594559,SE
3574594560,3574595583,GB
3574595584,3574596607,GP
3574596608,3574596863,MF
@@ -135358,7 +136386,9 @@
3575653760,3575653887,ES
3575653888,3575655039,FR
3575655040,3575655103,ES
-3575655104,3575656287,FR
+3575655104,3575655615,FR
+3575655616,3575655623,IE
+3575655624,3575656287,FR
3575656288,3575656319,PT
3575656320,3575657087,FR
3575657088,3575657215,ES
@@ -135376,7 +136406,9 @@
3575660160,3575660223,ES
3575660224,3575660351,FR
3575660352,3575660415,PT
-3575660416,3575669375,FR
+3575660416,3575667791,FR
+3575667792,3575667807,FI
+3575667808,3575669375,FR
3575669376,3575669503,IE
3575669504,3575670911,FR
3575670912,3575671039,ES
@@ -135389,10 +136421,12 @@
3575672880,3575672895,GB
3575672896,3575673087,FR
3575673088,3575673343,GB
-3575673344,3575693311,FR
+3575673344,3575676255,FR
+3575676256,3575676271,GB
+3575676272,3575693311,FR
3575693312,3575697407,DE
3575697408,3575701503,IT
-3575701504,3575703551,DK
+3575701504,3575703551,GB
3575703552,3575705599,SE
3575705600,3575707647,DK
3575707648,3575708671,LU
@@ -135562,7 +136596,9 @@
3576110016,3576110939,GB
3576110940,3576110943,NL
3576110944,3576111103,GB
-3576111104,3576116127,FR
+3576111104,3576114463,FR
+3576114464,3576114471,US
+3576114472,3576116127,FR
3576116128,3576116135,DE
3576116136,3576119295,FR
3576119296,3576120315,GB
@@ -135605,9 +136641,7 @@
3576258928,3576258935,FR
3576258936,3576260607,GB
3576260608,3576260623,FR
-3576260624,3576260863,GB
-3576260864,3576260871,FR
-3576260872,3576261631,GB
+3576260624,3576261631,GB
3576261632,3576262655,FR
3576262656,3576263919,GB
3576263920,3576263935,FR
@@ -136048,7 +137082,7 @@
3582238720,3582251319,NL
3582251320,3582251327,FI
3582251328,3582255103,NL
-3582255104,3582263039,KW
+3582255104,3582263295,KW
3582263296,3582271487,ME
3582271488,3582279679,NL
3582279680,3582283775,GB
@@ -136161,7 +137195,9 @@
3583107072,3583115263,AT
3583115264,3583123455,CH
3583123456,3583131647,PL
-3583131648,3583148031,DE
+3583131648,3583131709,DE
+3583131710,3583131710,DK
+3583131711,3583148031,DE
3583148032,3583160319,GB
3583160320,3583161343,DE
3583161344,3583164415,GB
@@ -136273,7 +137309,7 @@
3583959040,3583967231,NO
3583967232,3583969279,TR
3583969280,3583969791,FR
-3583969792,3583970815,NL
+3583969792,3583970815,GB
3583970816,3583971327,US
3583971328,3583973887,NL
3583973888,3583974399,IT
@@ -136679,7 +137715,9 @@
3586628288,3586628319,GB
3586628320,3586628351,AT
3586628352,3586629631,GB
-3586629632,3586633727,IE
+3586629632,3586631935,IE
+3586631936,3586632191,CN
+3586632192,3586633727,IE
3586633728,3586634079,NL
3586634080,3586634087,IE
3586634088,3586634175,NL
@@ -136789,7 +137827,9 @@
3587235840,3587237887,NL
3587237888,3587239487,GB
3587239488,3587239495,NL
-3587239496,3587239583,GB
+3587239496,3587239551,GB
+3587239552,3587239552,NL
+3587239553,3587239583,GB
3587239584,3587239599,NL
3587239600,3587239711,GB
3587239712,3587239727,NL
@@ -136894,7 +137934,9 @@
3588456448,3588464639,NL
3588464640,3588465151,AT
3588465152,3588465663,FR
-3588465664,3588472831,AT
+3588465664,3588466431,AT
+3588466432,3588466687,AU
+3588466688,3588472831,AT
3588472832,3588489215,UA
3588489216,3588505599,FR
3588505600,3588521983,RU
@@ -137210,7 +138252,7 @@
3624443920,3624452095,CA
3624452096,3624480767,US
3624480768,3624484863,CA
-3624484864,3624529919,US
+3624484864,3624525823,US
3624529920,3624534015,CA
3624534016,3624587263,US
3624587264,3624591359,JM
@@ -137745,7 +138787,9 @@
3634759936,3634880511,US
3634880512,3634888703,CA
3634888704,3634913279,US
-3634913280,3634915663,CA
+3634913280,3634914815,CA
+3634914816,3634915071,US
+3634915072,3634915663,CA
3634915664,3634915679,US
3634915680,3634921471,CA
3634921472,3634925567,US
@@ -137853,9 +138897,9 @@
3635970048,3636014553,US
3636014555,3636019199,US
3636019200,3636027391,CA
-3636027392,3636031517,SG
-3636031518,3636031518,US
-3636031519,3636035583,SG
+3636027392,3636031487,SG
+3636031488,3636031743,US
+3636031744,3636035583,SG
3636035584,3636064255,US
3636064256,3636068351,CA
3636068352,3636150783,US
@@ -137949,7 +138993,7 @@
3638250560,3638250623,GB
3638250624,3638304767,US
3638304768,3638312959,CA
-3638312960,3638370303,US
+3638312960,3638366207,US
3638370304,3638386687,CA
3638386688,3638399743,US
3638399744,3638399999,CH
@@ -138077,9 +139121,7 @@
3639737375,3639737599,GB
3639737600,3639737629,US
3639737630,3639737630,GB
-3639737631,3639868159,US
-3639868160,3639868415,MX
-3639868416,3639902207,US
+3639737631,3639902207,US
3639902208,3639918591,PE
3639918592,3639934975,AR
3639934976,3640023079,US
@@ -138338,9 +139380,9 @@
3642032128,3642036223,PS
3642036224,3642040319,HU
3642040320,3642048511,BY
-3642048512,3642053439,GB
-3642053440,3642053631,TZ
-3642053632,3642056703,GB
+3642048512,3642048767,IL
+3642048768,3642049023,DE
+3642049024,3642056703,GB
3642056704,3642060799,RU
3642060800,3642064895,KE
3642064896,3642068991,IT
@@ -138485,9 +139527,11 @@
3642535936,3642540031,IS
3642540032,3642544127,SE
3642544128,3642552319,RU
-3642552320,3642553936,UA
+3642552320,3642553935,UA
+3642553936,3642553936,RU
3642553937,3642553937,US
-3642553938,3642554111,UA
+3642553938,3642553951,RU
+3642553952,3642554111,UA
3642554112,3642554367,RU
3642554368,3642554623,LT
3642554624,3642554720,UA
@@ -138618,7 +139662,8 @@
3645009920,3645014015,FR
3645014016,3645018111,DE
3645018112,3645022207,RU
-3645022208,3645030399,CZ
+3645022208,3645030143,CZ
+3645030144,3645030399,SK
3645030400,3645038591,IR
3645038592,3645046783,PS
3645046784,3645050879,RU
@@ -138932,9 +139977,7 @@
3645763739,3645763740,ES
3645763741,3645763742,DE
3645763743,3645763743,IT
-3645763744,3645763744,DE
-3645763745,3645763745,FR
-3645763746,3645763746,DE
+3645763744,3645763746,DE
3645763747,3645763752,NL
3645763753,3645763753,ES
3645763754,3645763755,NL
@@ -138957,8 +140000,7 @@
3645763774,3645763774,NL
3645763775,3645763775,DE
3645763776,3645763776,NL
-3645763777,3645763777,BE
-3645763778,3645763781,DE
+3645763777,3645763781,DE
3645763782,3645763782,NL
3645763783,3645763783,DE
3645763784,3645763784,NL
@@ -139030,7 +140072,7 @@
3645763895,3645763895,ES
3645763896,3645763896,DE
3645763897,3645763897,BE
-3645763898,3645763898,NL
+3645763898,3645763898,DE
3645763899,3645763899,ES
3645763900,3645763900,NL
3645763901,3645763902,LU
@@ -139069,8 +140111,7 @@
3645763937,3645763937,FR
3645763938,3645763938,DE
3645763939,3645763939,NL
-3645763940,3645763941,DE
-3645763942,3645763942,CH
+3645763940,3645763942,DE
3645763943,3645763943,ES
3645763944,3645763944,CH
3645763945,3645763945,DE
@@ -139084,8 +140125,7 @@
3645763955,3645763955,FR
3645763956,3645763956,DE
3645763957,3645763957,GB
-3645763958,3645763958,AT
-3645763959,3645763959,DE
+3645763958,3645763959,DE
3645763960,3645763960,IT
3645763961,3645763961,DE
3645763962,3645763962,ES
@@ -139098,7 +140138,7 @@
3645763970,3645763970,DE
3645763971,3645763971,ES
3645763972,3645763972,IT
-3645763973,3645763973,BE
+3645763973,3645763973,DE
3645763974,3645763974,GB
3645763975,3645763975,AT
3645763976,3645763976,IT
@@ -139191,7 +140231,7 @@
3645764104,3645764105,IT
3645764106,3645764106,NL
3645764107,3645764107,GR
-3645764108,3645764108,PL
+3645764108,3645764108,DE
3645764109,3645764109,CH
3645764110,3645764110,DK
3645764111,3645764111,DE
@@ -139216,8 +140256,7 @@
3645764131,3645764131,DE
3645764132,3645764132,ES
3645764133,3645764133,CY
-3645764134,3645764134,DE
-3645764135,3645764135,IT
+3645764134,3645764135,DE
3645764136,3645764136,BE
3645764137,3645764137,DE
3645764138,3645764138,CH
@@ -139274,18 +140313,17 @@
3645764202,3645764202,IT
3645764203,3645764203,DE
3645764204,3645764204,ES
-3645764205,3645764206,DE
-3645764207,3645764207,IT
+3645764205,3645764207,DE
3645764208,3645764208,NO
3645764209,3645764210,DE
3645764211,3645764211,FR
3645764212,3645764212,NL
-3645764213,3645764213,GB
+3645764213,3645764213,DE
3645764214,3645764214,NL
3645764215,3645764216,DE
3645764217,3645764217,IT
3645764218,3645764218,CH
-3645764219,3645764219,FR
+3645764219,3645764219,DE
3645764220,3645764220,NL
3645764221,3645764221,IT
3645764222,3645764222,BE
@@ -139298,8 +140336,7 @@
3645764229,3645764229,PL
3645764230,3645764230,NL
3645764231,3645764231,CH
-3645764232,3645764234,DE
-3645764235,3645764235,FR
+3645764232,3645764235,DE
3645764236,3645764236,IT
3645764237,3645764238,DE
3645764239,3645764240,ES
@@ -139309,8 +140346,7 @@
3645764244,3645764244,FR
3645764245,3645764246,NL
3645764247,3645764247,IT
-3645764248,3645764250,DE
-3645764251,3645764251,FR
+3645764248,3645764251,DE
3645764252,3645764253,ES
3645764254,3645764254,DE
3645764255,3645764255,CH
@@ -139327,15 +140363,14 @@
3645764271,3645764271,IT
3645764272,3645764272,DE
3645764273,3645764273,IT
-3645764274,3645764274,DE
-3645764275,3645764275,FR
-3645764276,3645764277,DE
+3645764274,3645764277,DE
3645764278,3645764278,NL
3645764279,3645764279,ES
3645764280,3645764280,IT
3645764281,3645764281,DE
3645764282,3645764282,NL
-3645764283,3645764284,FR
+3645764283,3645764283,DE
+3645764284,3645764284,FR
3645764285,3645764285,IT
3645764286,3645764286,NL
3645764287,3645764287,BE
@@ -139344,7 +140379,8 @@
3645764290,3645764290,DE
3645764291,3645764291,NL
3645764292,3645764292,FR
-3645764293,3645764294,IT
+3645764293,3645764293,IT
+3645764294,3645764294,DE
3645764295,3645764295,ES
3645764296,3645764297,DE
3645764298,3645764298,GR
@@ -139377,7 +140413,7 @@
3645764330,3645764330,DE
3645764331,3645764331,RU
3645764332,3645764332,NL
-3645764333,3645764333,GR
+3645764333,3645764333,DE
3645764334,3645764334,ES
3645764335,3645764335,DE
3645764336,3645764336,MY
@@ -139396,10 +140432,9 @@
3645764351,3645764356,DE
3645764357,3645764357,RU
3645764358,3645764358,FR
-3645764359,3645764359,IT
-3645764360,3645764360,DE
+3645764359,3645764360,DE
3645764361,3645764361,CH
-3645764362,3645764362,GB
+3645764362,3645764362,DE
3645764363,3645764363,NL
3645764364,3645764364,DE
3645764365,3645764365,BE
@@ -139408,8 +140443,8 @@
3645764369,3645764369,DE
3645764370,3645764370,GB
3645764371,3645764371,ES
-3645764372,3645764373,FR
-3645764374,3645764375,DE
+3645764372,3645764372,FR
+3645764373,3645764375,DE
3645764376,3645764377,NL
3645764378,3645764378,DE
3645764379,3645764380,GB
@@ -139435,7 +140470,7 @@
3645764409,3645764409,FR
3645764410,3645764410,DE
3645764411,3645764411,FR
-3645764412,3645764412,NL
+3645764412,3645764412,DE
3645764413,3645764413,FR
3645764414,3645764414,NL
3645764415,3645764415,DE
@@ -139537,25 +140572,21 @@
3645764567,3645764568,NL
3645764569,3645764569,DE
3645764570,3645764570,MA
-3645764571,3645765127,DE
-3645765128,3645765131,GR
-3645765132,3645765135,DE
+3645764571,3645765135,DE
3645765136,3645765139,BE
3645765140,3645765143,IT
3645765144,3645765147,DE
3645765148,3645765151,IT
3645765152,3645765155,BE
-3645765156,3645765171,IT
+3645765156,3645765167,IT
+3645765168,3645765171,DE
3645765172,3645765175,NO
3645765176,3645765179,DE
3645765180,3645765183,FR
3645765184,3645765187,GR
3645765188,3645765195,DE
3645765196,3645765199,CH
-3645765200,3645765203,GB
-3645765204,3645765207,DE
-3645765208,3645765211,FR
-3645765212,3645765215,DE
+3645765200,3645765215,DE
3645765216,3645765219,ES
3645765220,3645765223,PL
3645765224,3645765227,BE
@@ -139568,27 +140599,25 @@
3645765252,3645765255,DE
3645765256,3645765259,GR
3645765260,3645765263,PL
-3645765264,3645765267,IT
+3645765264,3645765267,DE
3645765268,3645765271,PL
3645765272,3645765275,IT
-3645765276,3645765279,FR
-3645765280,3645765283,DE
+3645765276,3645765283,DE
3645765284,3645765287,ES
3645765288,3645765295,DE
3645765296,3645765299,ES
-3645765300,3645765303,FR
-3645765304,3645765311,IT
+3645765300,3645765307,DE
+3645765308,3645765311,IT
3645765312,3645765315,TR
3645765316,3645765319,IT
-3645765320,3645765323,FR
+3645765320,3645765323,DE
3645765324,3645765331,ES
-3645765332,3645765335,FR
+3645765332,3645765335,DE
3645765336,3645765339,IT
3645765340,3645765343,FR
-3645765344,3645765347,PL
+3645765344,3645765347,DE
3645765348,3645765351,GR
-3645765352,3645765355,IT
-3645765356,3645765359,ES
+3645765352,3645765359,DE
3645765360,3645765363,FR
3645765364,3645765367,ES
3645765368,3645765371,IT
@@ -139598,15 +140627,13 @@
3645765384,3645765387,NL
3645765388,3645765391,DE
3645765392,3645765399,ES
-3645765400,3645765403,DE
-3645765404,3645765407,GR
+3645765400,3645765407,DE
3645765408,3645765411,DK
3645765412,3645765415,IT
3645765416,3645765419,FR
3645765420,3645765423,DE
3645765424,3645765427,IT
-3645765428,3645765443,DE
-3645765444,3645765447,FR
+3645765428,3645765447,DE
3645765448,3645765451,ES
3645765452,3645765455,FR
3645765456,3645765459,AT
@@ -139621,14 +140648,13 @@
3645765500,3645765503,NL
3645765504,3645765507,CH
3645765508,3645765511,IT
-3645765512,3645765519,GB
-3645765520,3645765523,FR
+3645765512,3645765515,GB
+3645765516,3645765523,DE
3645765524,3645765527,IT
3645765528,3645765535,FR
3645765536,3645765539,SE
3645765540,3645765543,IL
-3645765544,3645765547,BE
-3645765548,3645765559,DE
+3645765544,3645765559,DE
3645765560,3645765563,IE
3645765564,3645765567,ES
3645765568,3645765571,FR
@@ -139636,12 +140662,9 @@
3645765576,3645765579,IT
3645765580,3645765591,DE
3645765592,3645765595,IE
-3645765596,3645765611,DE
-3645765612,3645765615,IT
-3645765616,3645765619,GB
+3645765596,3645765619,DE
3645765620,3645765623,CH
-3645765624,3645765627,FR
-3645765628,3645765639,DE
+3645765624,3645765639,DE
3645765640,3645765643,DK
3645765644,3645765647,GB
3645765648,3645765651,NL
@@ -139649,13 +140672,11 @@
3645765672,3645765675,FR
3645765676,3645765679,DE
3645765680,3645765683,FR
-3645765684,3645765687,NL
+3645765684,3645765687,DE
3645765688,3645765691,FR
3645765692,3645765695,CH
3645765696,3645765703,IT
-3645765704,3645765707,DE
-3645765708,3645765711,FR
-3645765712,3645765715,DE
+3645765704,3645765715,DE
3645765716,3645765719,FR
3645765720,3645766401,DE
3645766402,3645766407,US
@@ -139958,7 +140979,10 @@
3649241088,3649306623,TR
3649306624,3649372159,IL
3649372160,3649437695,IT
-3649437696,3649512191,GB
+3649437696,3649470463,GB
+3649470464,3649471487,SG
+3649471488,3649472511,HK
+3649472512,3649512191,GB
3649512192,3649512447,FR
3649512448,3649568767,GB
3649568768,3649634303,BE
@@ -140303,8 +141327,9 @@
3651941120,3651944447,DE
3651944448,3651948543,ES
3651948544,3651952639,FO
-3651952640,3651954687,AE
-3651954688,3651960831,IR
+3651952640,3651954175,AE
+3651954176,3651958783,IR
+3651958784,3651960831,AE
3651960832,3651964927,GB
3651964928,3651969023,SK
3651969024,3651977215,DE
@@ -140353,7 +141378,8 @@
3652173824,3652177919,AT
3652177920,3652182015,CY
3652182016,3652190207,DE
-3652190208,3652714495,GB
+3652190208,3652648959,GB
+3652648960,3652714495,IE
3652714496,3653238783,DE
3653238784,3653369855,CH
3653369856,3653373951,IT
@@ -140522,7 +141548,6 @@
3664001024,3664001279,NZ
3664001280,3664001535,LK
3664001536,3664001791,MY
-3664001792,3664002047,AU
3664002048,3664002303,VN
3664002304,3664002559,LK
3664002560,3664003327,ID
@@ -140636,9 +141661,7 @@
3699376128,3700424703,TW
3700424704,3700752383,JP
3700752384,3700817919,KR
-3700817920,3700977663,JP
-3700977664,3700979711,AU
-3700979712,3700981759,JP
+3700817920,3700981759,JP
3700981760,3701014527,CN
3701014528,3701080063,JP
3701080064,3701211135,CN
diff --git a/src/config/geoip6 b/src/config/geoip6
index fa4fffe2e6..1f1430e4c6 100644
--- a/src/config/geoip6
+++ b/src/config/geoip6
@@ -1,4 +1,4 @@
-# Last updated based on November 3 2016 Maxmind GeoLite2 Country
+# Last updated based on December 7 2016 Maxmind GeoLite2 Country
# wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz
# gunzip GeoLite2-Country.mmdb.gz
# python mmdb-convert.py GeoLite2-Country.mmdb
@@ -158,7 +158,9 @@
2001:470:28:1a6::,2001:470:28:1a6:ffff:ffff:ffff:ffff,RU
2001:470:28:1a7::,2001:470:28:2df:ffff:ffff:ffff:ffff,US
2001:470:28:2e0::,2001:470:28:2e0:ffff:ffff:ffff:ffff,SE
-2001:470:28:2e1::,2001:470:28:8ff:ffff:ffff:ffff:ffff,US
+2001:470:28:2e1::,2001:470:28:36d:ffff:ffff:ffff:ffff,US
+2001:470:28:36e::,2001:470:28:36e:ffff:ffff:ffff:ffff,DK
+2001:470:28:36f::,2001:470:28:8ff:ffff:ffff:ffff:ffff,US
2001:470:28:900::,2001:470:28:906:ffff:ffff:ffff:ffff,SE
2001:470:28:907::,2001:470:28:907:ffff:ffff:ffff:ffff,RU
2001:470:28:908::,2001:470:28:9ff:ffff:ffff:ffff:ffff,SE
@@ -204,7 +206,11 @@
2001:470:1f0b:785::,2001:470:1f0b:785:ffff:ffff:ffff:ffff,PL
2001:470:1f0b:786::,2001:470:1f0b:be6:ffff:ffff:ffff:ffff,US
2001:470:1f0b:be7::,2001:470:1f0b:be7:ffff:ffff:ffff:ffff,RU
-2001:470:1f0b:be8::,2001:470:1f14:ffff:ffff:ffff:ffff:ffff,US
+2001:470:1f0b:be8::,2001:470:1f0b:118a:ffff:ffff:ffff:ffff,US
+2001:470:1f0b:118b::,2001:470:1f0b:118b:ffff:ffff:ffff:ffff,DE
+2001:470:1f0b:118c::,2001:470:1f0b:11d1:ffff:ffff:ffff:ffff,US
+2001:470:1f0b:11d2::,2001:470:1f0b:11d2:ffff:ffff:ffff:ffff,DE
+2001:470:1f0b:11d3::,2001:470:1f14:ffff:ffff:ffff:ffff:ffff,US
2001:470:1f15::,2001:470:1f15:b3:ffff:ffff:ffff:ffff,RU
2001:470:1f15:b4::,2001:470:1f15:b4:ffff:ffff:ffff:ffff,NL
2001:470:1f15:b5::,2001:470:1f15:44f:ffff:ffff:ffff:ffff,RU
@@ -230,7 +236,9 @@
2001:470:3919::,2001:470:3919:7fff:ffff:ffff:ffff:ffff,AU
2001:470:3919:8000::,2001:470:49e5:7fff:ffff:ffff:ffff:ffff,US
2001:470:49e5:8000::,2001:470:49e5:ffff:ffff:ffff:ffff:ffff,CN
-2001:470:49e6::,2001:470:53a7:ffff:ffff:ffff:ffff:ffff,US
+2001:470:49e6::,2001:470:4a63:ffff:ffff:ffff:ffff:ffff,US
+2001:470:4a64::,2001:470:4a64:ffff:ffff:ffff:ffff:ffff,NZ
+2001:470:4a65::,2001:470:53a7:ffff:ffff:ffff:ffff:ffff,US
2001:470:53a8::,2001:470:53a8:7fff:ffff:ffff:ffff:ffff,DE
2001:470:53a8:8000::,2001:470:587d:ffff:ffff:ffff:ffff:ffff,US
2001:470:587e::,2001:470:587e:7fff:ffff:ffff:ffff:ffff,CZ
@@ -324,7 +332,9 @@
2001:470:da02::,2001:470:da02:7fff:ffff:ffff:ffff:ffff,AR
2001:470:da02:8000::,2001:470:dc5c:ffff:ffff:ffff:ffff:ffff,US
2001:470:dc5d::,2001:470:dc5d:7fff:ffff:ffff:ffff:ffff,SE
-2001:470:dc5d:8000::,2001:470:dd94:ffff:ffff:ffff:ffff:ffff,US
+2001:470:dc5d:8000::,2001:470:dd67:ffff:ffff:ffff:ffff:ffff,US
+2001:470:dd68::,2001:470:dd68:ffff:ffff:ffff:ffff:ffff,DK
+2001:470:dd69::,2001:470:dd94:ffff:ffff:ffff:ffff:ffff,US
2001:470:dd95::,2001:470:dd95:7fff:ffff:ffff:ffff:ffff,UA
2001:470:dd95:8000::,2001:470:dec3:ffff:ffff:ffff:ffff:ffff,US
2001:470:dec4::,2001:470:dec4:ffff:ffff:ffff:ffff:ffff,SE
@@ -716,11 +726,29 @@
2001:678:290::,2001:678:290:ffff:ffff:ffff:ffff:ffff,RU
2001:678:294::,2001:678:294:ffff:ffff:ffff:ffff:ffff,CH
2001:678:298::,2001:678:298:ffff:ffff:ffff:ffff:ffff,CH
+2001:678:29c::,2001:678:29c:ffff:ffff:ffff:ffff:ffff,SI
+2001:678:2a0::,2001:678:2a0:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:2a4::,2001:678:2a4:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:2a8::,2001:678:2a8:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:2ac::,2001:678:2ac:ffff:ffff:ffff:ffff:ffff,RO
+2001:678:2b0::,2001:678:2b0:ffff:ffff:ffff:ffff:ffff,PL
+2001:678:2b4::,2001:678:2b4:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:2b8::,2001:678:2b9:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:2c0::,2001:678:2c0:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:2c4::,2001:678:2c4:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:2c8::,2001:678:2c8:ffff:ffff:ffff:ffff:ffff,NL
+2001:678:2cc::,2001:678:2cc:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:2d0::,2001:678:2d0:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:2d4::,2001:678:2d4:ffff:ffff:ffff:ffff:ffff,CZ
+2001:678:2d8::,2001:678:2d8:ffff:ffff:ffff:ffff:ffff,AT
+2001:678:2dc::,2001:678:2dc:ffff:ffff:ffff:ffff:ffff,GB
+2001:678:2e0::,2001:678:2e0:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:2e4::,2001:678:2e4:ffff:ffff:ffff:ffff:ffff,NL
+2001:678:2e8::,2001:678:2e8:ffff:ffff:ffff:ffff:ffff,RU
2001:67c::,2001:67c::ffff:ffff:ffff:ffff:ffff,IE
2001:67c:4::,2001:67c:4:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:8::,2001:67c:8:ffff:ffff:ffff:ffff:ffff,CH
2001:67c:c::,2001:67c:c:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:10::,2001:67c:10:ffff:ffff:ffff:ffff:ffff,RO
2001:67c:14::,2001:67c:14:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:18::,2001:67c:18:ffff:ffff:ffff:ffff:ffff,NL
2001:67c:1c::,2001:67c:1c:ffff:ffff:ffff:ffff:ffff,SE
@@ -1061,7 +1089,6 @@
2001:67c:560::,2001:67c:560:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:564::,2001:67c:564:ffff:ffff:ffff:ffff:ffff,DK
2001:67c:568::,2001:67c:568:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:56c::,2001:67c:56c:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:570::,2001:67c:570:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:574::,2001:67c:574:ffff:ffff:ffff:ffff:ffff,NL
2001:67c:578::,2001:67c:578:ffff:ffff:ffff:ffff:ffff,SE
@@ -1788,6 +1815,7 @@
2001:67c:1ba8::,2001:67c:1ba8:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:1bac::,2001:67c:1bac:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:1bb0::,2001:67c:1bb0:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:1bb4::,2001:67c:1bb4:ffff:ffff:ffff:ffff:ffff,AT
2001:67c:1bb8::,2001:67c:1bb8:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:1bbc::,2001:67c:1bbc:ffff:ffff:ffff:ffff:ffff,NL
2001:67c:1bc0::,2001:67c:1bc0:ffff:ffff:ffff:ffff:ffff,RU
@@ -1820,7 +1848,6 @@
2001:67c:2028::,2001:67c:2028:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:202c::,2001:67c:202c:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:2030::,2001:67c:2030:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2034::,2001:67c:2034:ffff:ffff:ffff:ffff:ffff,CH
2001:67c:2038::,2001:67c:2038:ffff:ffff:ffff:ffff:ffff,CZ
2001:67c:203c::,2001:67c:203c:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:2040::,2001:67c:2040:ffff:ffff:ffff:ffff:ffff,AE
@@ -1858,7 +1885,7 @@
2001:67c:20cc::,2001:67c:20cc:ffff:ffff:ffff:ffff:ffff,NL
2001:67c:20d0::,2001:67c:20d1:ffff:ffff:ffff:ffff:ffff,BG
2001:67c:20d8::,2001:67c:20d8:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:20dc::,2001:67c:20dc:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:20dc::,2001:67c:20dc:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:20e0::,2001:67c:20e0:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:20e4::,2001:67c:20e4:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:20e8::,2001:67c:20e8:ffff:ffff:ffff:ffff:ffff,GB
@@ -2968,6 +2995,7 @@
2001:7f8:a9::,2001:7f8:a9:ffff:ffff:ffff:ffff:ffff,MD
2001:7f8:ab::,2001:7f8:ab:ffff:ffff:ffff:ffff:ffff,IT
2001:7f8:ac::,2001:7f8:ac:ffff:ffff:ffff:ffff:ffff,RU
+2001:7f8:ad::,2001:7f8:ad:ffff:ffff:ffff:ffff:ffff,SE
2001:7f9:4::,2001:7f9:4:ffff:ffff:ffff:ffff:ffff,AL
2001:7f9:8::,2001:7f9:8:ffff:ffff:ffff:ffff:ffff,AM
2001:7fa:0:1::,2001:7fa::1:ffff:ffff:ffff:ffff,HK
@@ -3019,7 +3047,7 @@
2001:8b8::,2001:8bf:ffff:ffff:ffff:ffff:ffff:ffff,FI
2001:8c0::,2001:8c7:ffff:ffff:ffff:ffff:ffff:ffff,NO
2001:8c8::,2001:8c8:ffff:ffff:ffff:ffff:ffff:ffff,RS
-2001:8d0::,2001:8d0:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2001:8d0::,2001:8d7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2001:8d8::,2001:8d8:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:8e0::,2001:8e7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2001:8f0::,2001:8f1:ffff:ffff:ffff:ffff:ffff:ffff,GR
@@ -3028,7 +3056,7 @@
2001:900::,2001:900:ffff:ffff:ffff:ffff:ffff:ffff,FR
2001:908::,2001:90f:ffff:ffff:ffff:ffff:ffff:ffff,PL
2001:910::,2001:917:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2001:918::,2001:918:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2001:918::,2001:91f:ffff:ffff:ffff:ffff:ffff:ffff,CH
2001:920::,2001:920:1845:ffff:ffff:ffff:ffff:ffff,GB
2001:920:1846::,2001:920:1846:7fff:ffff:ffff:ffff:ffff,DE
2001:920:1846:8000::,2001:920:186b:7fff:ffff:ffff:ffff:ffff,GB
@@ -3064,7 +3092,7 @@
2001:998::,2001:99b:ffff:ffff:ffff:ffff:ffff:ffff,FI
2001:9a0::,2001:9a0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:9a8::,2001:9a8:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2001:9b0::,2001:9b0:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2001:9b0::,2001:9b7:ffff:ffff:ffff:ffff:ffff:ffff,SE
2001:9c0::,2001:9c0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:9c8::,2001:9cf:ffff:ffff:ffff:ffff:ffff:ffff,SE
2001:9d0::,2001:9d0:ffff:ffff:ffff:ffff:ffff:ffff,AT
@@ -3097,11 +3125,15 @@
2001:ac0::,2001:ac7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2001:ac8::,2001:ac8:20::ffff:ffff:ffff:ffff,GB
2001:ac8:20:1::,2001:ac8:20:1:ffff:ffff:ffff:ffff,DE
-2001:ac8:20:2::,2001:ac8:26:ffff:ffff:ffff:ffff:ffff,GB
+2001:ac8:20:2::,2001:ac8:24:ffff:ffff:ffff:ffff:ffff,GB
+2001:ac8:25::,2001:ac8:25:ffff:ffff:ffff:ffff:ffff,FR
+2001:ac8:26::,2001:ac8:26:ffff:ffff:ffff:ffff:ffff,GB
2001:ac8:27::,2001:ac8:27:ffff:ffff:ffff:ffff:ffff,BE
2001:ac8:28::,2001:ac8:28:ffff:ffff:ffff:ffff:ffff,CH
2001:ac8:29::,2001:ac8:29:ffff:ffff:ffff:ffff:ffff,AT
-2001:ac8:2a::,2001:ac8:32:ffff:ffff:ffff:ffff:ffff,GB
+2001:ac8:2a::,2001:ac8:2f:ffff:ffff:ffff:ffff:ffff,GB
+2001:ac8:30::,2001:ac8:30:ffff:ffff:ffff:ffff:ffff,BG
+2001:ac8:31::,2001:ac8:32:ffff:ffff:ffff:ffff:ffff,GB
2001:ac8:33::,2001:ac8:33:ffff:ffff:ffff:ffff:ffff,CZ
2001:ac8:34::,2001:ac8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:ad0::,2001:ad0:ffff:ffff:ffff:ffff:ffff:ffff,EE
@@ -3239,7 +3271,6 @@
2001:de8:2::,2001:de8:2:ffff:ffff:ffff:ffff:ffff,ID
2001:de8:3::,2001:de8:3:ffff:ffff:ffff:ffff:ffff,VN
2001:de8:4::,2001:de8:8:ffff:ffff:ffff:ffff:ffff,JP
-2001:de8:9::,2001:de8:9:ffff:ffff:ffff:ffff:ffff,AU
2001:de8:a::,2001:de8:a:ffff:ffff:ffff:ffff:ffff,VN
2001:de8:b::,2001:de8:b:ffff:ffff:ffff:ffff:ffff,BD
2001:de8:c::,2001:de8:c:ffff:ffff:ffff:ffff:ffff,JP
@@ -3269,6 +3300,7 @@
2001:ded::,2001:ded::ffff:ffff:ffff:ffff:ffff,SG
2001:ded:8000::,2001:ded:8000:ffff:ffff:ffff:ffff:ffff,IN
2001:dee::,2001:dee::ffff:ffff:ffff:ffff:ffff,HK
+2001:dee:8000::,2001:dee:8000:ffff:ffff:ffff:ffff:ffff,NZ
2001:def::,2001:def::ffff:ffff:ffff:ffff:ffff,HK
2001:df0::,2001:df0:1:ffff:ffff:ffff:ffff:ffff,NZ
2001:df0:2::,2001:df0:2:ffff:ffff:ffff:ffff:ffff,JP
@@ -3294,7 +3326,7 @@
2001:df0:49::,2001:df0:49:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:4a::,2001:df0:4a:ffff:ffff:ffff:ffff:ffff,NZ
2001:df0:4b::,2001:df0:4d:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:4f::,2001:df0:60:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:50::,2001:df0:60:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:62::,2001:df0:62:ffff:ffff:ffff:ffff:ffff,TH
2001:df0:63::,2001:df0:63:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:65::,2001:df0:65:ffff:ffff:ffff:ffff:ffff,ID
@@ -3361,7 +3393,7 @@
2001:df0:cf::,2001:df0:cf:ffff:ffff:ffff:ffff:ffff,JP
2001:df0:d1::,2001:df0:d1:ffff:ffff:ffff:ffff:ffff,NZ
2001:df0:d2::,2001:df0:d2:ffff:ffff:ffff:ffff:ffff,HK
-2001:df0:d4::,2001:df0:d6:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:d4::,2001:df0:d5:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:d7::,2001:df0:d7:ffff:ffff:ffff:ffff:ffff,KR
2001:df0:d8::,2001:df0:d8:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:d9::,2001:df0:d9:ffff:ffff:ffff:ffff:ffff,TW
@@ -3647,7 +3679,6 @@
2001:df0:2600::,2001:df0:2600:ffff:ffff:ffff:ffff:ffff,ID
2001:df0:2800::,2001:df0:2800:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:2a00::,2001:df0:2a00:ffff:ffff:ffff:ffff:ffff,VN
-2001:df0:2c00::,2001:df0:2c00:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:2e00::,2001:df0:2e00:ffff:ffff:ffff:ffff:ffff,CN
2001:df0:3000::,2001:df0:3000:ffff:ffff:ffff:ffff:ffff,PH
2001:df0:3200::,2001:df0:3200:ffff:ffff:ffff:ffff:ffff,PK
@@ -3701,7 +3732,6 @@
2001:df0:9e00::,2001:df0:9e00:ffff:ffff:ffff:ffff:ffff,ID
2001:df0:a000::,2001:df0:a000:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:a200::,2001:df0:a200:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:a400::,2001:df0:a400:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:a600::,2001:df0:a600:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:a800::,2001:df0:a800:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:aa00::,2001:df0:aa00:ffff:ffff:ffff:ffff:ffff,SG
@@ -4172,7 +4202,6 @@
2001:df4:7200::,2001:df4:7200:ffff:ffff:ffff:ffff:ffff,JP
2001:df4:7400::,2001:df4:7400:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:7600::,2001:df4:7600:ffff:ffff:ffff:ffff:ffff,SG
-2001:df4:7800::,2001:df4:7800:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:7a00::,2001:df4:7a00:ffff:ffff:ffff:ffff:ffff,HK
2001:df4:7c00::,2001:df4:7c00:ffff:ffff:ffff:ffff:ffff,AU
2001:df4:7e00::,2001:df4:7e00:ffff:ffff:ffff:ffff:ffff,SG
@@ -4319,7 +4348,6 @@
2001:df5:a200::,2001:df5:a200:ffff:ffff:ffff:ffff:ffff,IN
2001:df5:a400::,2001:df5:a400:ffff:ffff:ffff:ffff:ffff,IN
2001:df5:a600::,2001:df5:a600:ffff:ffff:ffff:ffff:ffff,AU
-2001:df5:a800::,2001:df5:a800:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:aa00::,2001:df5:aa00:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:ac00::,2001:df5:ac00:ffff:ffff:ffff:ffff:ffff,IN
2001:df5:ae00::,2001:df5:ae00:ffff:ffff:ffff:ffff:ffff,PH
@@ -4368,67 +4396,128 @@
2001:df6:800::,2001:df6:80f:ffff:ffff:ffff:ffff:ffff,HK
2001:df6:a00::,2001:df6:a00:ffff:ffff:ffff:ffff:ffff,ID
2001:df6:c00::,2001:df6:c00:ffff:ffff:ffff:ffff:ffff,TH
+2001:df6:e00::,2001:df6:e00:ffff:ffff:ffff:ffff:ffff,HK
2001:df6:1000::,2001:df6:1000:ffff:ffff:ffff:ffff:ffff,PH
+2001:df6:1200::,2001:df6:1200:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:1400::,2001:df6:1400:ffff:ffff:ffff:ffff:ffff,AU
+2001:df6:1600::,2001:df6:1600:ffff:ffff:ffff:ffff:ffff,VN
2001:df6:1800::,2001:df6:1800:ffff:ffff:ffff:ffff:ffff,ID
+2001:df6:1a00::,2001:df6:1a00:ffff:ffff:ffff:ffff:ffff,VN
2001:df6:1c00::,2001:df6:1c00:ffff:ffff:ffff:ffff:ffff,CN
+2001:df6:1e00::,2001:df6:1e00:ffff:ffff:ffff:ffff:ffff,VN
2001:df6:2000::,2001:df6:2001:ffff:ffff:ffff:ffff:ffff,HK
+2001:df6:2200::,2001:df6:2200:ffff:ffff:ffff:ffff:ffff,VN
2001:df6:2400::,2001:df6:2400:ffff:ffff:ffff:ffff:ffff,AU
+2001:df6:2600::,2001:df6:2600:ffff:ffff:ffff:ffff:ffff,US
2001:df6:2800::,2001:df6:2800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:2a00::,2001:df6:2a00:ffff:ffff:ffff:ffff:ffff,ID
2001:df6:2c00::,2001:df6:2c00:ffff:ffff:ffff:ffff:ffff,VN
+2001:df6:2e00::,2001:df6:2e00:ffff:ffff:ffff:ffff:ffff,ID
2001:df6:3000::,2001:df6:3000:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df6:3200::,2001:df6:3200:ffff:ffff:ffff:ffff:ffff,ID
2001:df6:3400::,2001:df6:3400:ffff:ffff:ffff:ffff:ffff,VN
+2001:df6:3600::,2001:df6:3600:ffff:ffff:ffff:ffff:ffff,IN
2001:df6:3800::,2001:df6:3800:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df6:3a00::,2001:df6:3a00:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:3c00::,2001:df6:3c00:ffff:ffff:ffff:ffff:ffff,PK
+2001:df6:3e00::,2001:df6:3e00:ffff:ffff:ffff:ffff:ffff,ID
2001:df6:4000::,2001:df6:4001:ffff:ffff:ffff:ffff:ffff,AU
+2001:df6:4200::,2001:df6:4200:ffff:ffff:ffff:ffff:ffff,ID
2001:df6:4400::,2001:df6:4400:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:4600::,2001:df6:4600:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:4800::,2001:df6:4801:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df6:4a00::,2001:df6:4a00:ffff:ffff:ffff:ffff:ffff,TH
2001:df6:4c00::,2001:df6:4c00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:4e00::,2001:df6:4e00:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:5000::,2001:df6:5000:ffff:ffff:ffff:ffff:ffff,AU
-2001:df6:5400::,2001:df6:5400:ffff:ffff:ffff:ffff:ffff,TH
+2001:df6:5200::,2001:df6:5200:ffff:ffff:ffff:ffff:ffff,AU
+2001:df6:5600::,2001:df6:5600:ffff:ffff:ffff:ffff:ffff,ID
2001:df6:5800::,2001:df6:5800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:5a00::,2001:df6:5a00:ffff:ffff:ffff:ffff:ffff,ID
2001:df6:5c00::,2001:df6:5c00:ffff:ffff:ffff:ffff:ffff,TH
+2001:df6:5e00::,2001:df6:5e01:ffff:ffff:ffff:ffff:ffff,IN
2001:df6:6000::,2001:df6:6000:ffff:ffff:ffff:ffff:ffff,JP
+2001:df6:6200::,2001:df6:6200:ffff:ffff:ffff:ffff:ffff,IN
2001:df6:6400::,2001:df6:6400:ffff:ffff:ffff:ffff:ffff,SG
+2001:df6:6600::,2001:df6:6600:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:6800::,2001:df6:6800:ffff:ffff:ffff:ffff:ffff,CN
+2001:df6:6a00::,2001:df6:6a00:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:6c00::,2001:df6:6c00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:6e00::,2001:df6:6e00:ffff:ffff:ffff:ffff:ffff,MY
2001:df6:7000::,2001:df6:7000:ffff:ffff:ffff:ffff:ffff,VN
+2001:df6:7200::,2001:df6:7200:ffff:ffff:ffff:ffff:ffff,IN
2001:df6:7400::,2001:df6:7400:ffff:ffff:ffff:ffff:ffff,TH
+2001:df6:7600::,2001:df6:7600:ffff:ffff:ffff:ffff:ffff,IN
2001:df6:7800::,2001:df6:7800:ffff:ffff:ffff:ffff:ffff,HK
+2001:df6:7a00::,2001:df6:7a00:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:7c00::,2001:df6:7c00:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:8000::,2001:df6:8000:ffff:ffff:ffff:ffff:ffff,JP
+2001:df6:8200::,2001:df6:8200:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:8400::,2001:df6:8400:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:8800::,2001:df6:8800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df6:8a00::,2001:df6:8a00:ffff:ffff:ffff:ffff:ffff,ID
2001:df6:8c00::,2001:df6:8c00:ffff:ffff:ffff:ffff:ffff,TH
+2001:df6:8e00::,2001:df6:8e00:ffff:ffff:ffff:ffff:ffff,ID
2001:df6:9000::,2001:df6:9000:ffff:ffff:ffff:ffff:ffff,AU
+2001:df6:9200::,2001:df6:9200:ffff:ffff:ffff:ffff:ffff,ID
2001:df6:9400::,2001:df6:9400:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:9600::,2001:df6:9600:ffff:ffff:ffff:ffff:ffff,ID
2001:df6:9800::,2001:df6:9800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df6:9a00::,2001:df6:9a00:ffff:ffff:ffff:ffff:ffff,TH
2001:df6:9c00::,2001:df6:9c00:ffff:ffff:ffff:ffff:ffff,TH
+2001:df6:9e00::,2001:df6:9e00:ffff:ffff:ffff:ffff:ffff,IN
2001:df6:a000::,2001:df6:a000:ffff:ffff:ffff:ffff:ffff,JP
+2001:df6:a200::,2001:df6:a200:ffff:ffff:ffff:ffff:ffff,BD
2001:df6:a400::,2001:df6:a400:ffff:ffff:ffff:ffff:ffff,SG
+2001:df6:a600::,2001:df6:a600:ffff:ffff:ffff:ffff:ffff,IN
2001:df6:a800::,2001:df6:a800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:aa00::,2001:df6:aa00:ffff:ffff:ffff:ffff:ffff,VN
2001:df6:ac00::,2001:df6:ac00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df6:ae00::,2001:df6:ae00:ffff:ffff:ffff:ffff:ffff,IN
2001:df6:b000::,2001:df6:b000:ffff:ffff:ffff:ffff:ffff,TH
+2001:df6:b200::,2001:df6:b200:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:b400::,2001:df6:b400:ffff:ffff:ffff:ffff:ffff,MY
+2001:df6:b600::,2001:df6:b600:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:b800::,2001:df6:b800:ffff:ffff:ffff:ffff:ffff,SG
+2001:df6:ba00::,2001:df6:ba00:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:bc00::,2001:df6:bc00:ffff:ffff:ffff:ffff:ffff,HK
+2001:df6:be00::,2001:df6:be00:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df6:c200::,2001:df6:c200:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:c400::,2001:df6:c400:ffff:ffff:ffff:ffff:ffff,AU
-2001:df6:c800::,2001:df6:c800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:c600::,2001:df6:c600:ffff:ffff:ffff:ffff:ffff,BD
+2001:df6:c800::,2001:df6:c801:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:ca00::,2001:df6:ca00:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:cc00::,2001:df6:cc00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df6:ce00::,2001:df6:ce00:ffff:ffff:ffff:ffff:ffff,IN
2001:df6:d000::,2001:df6:d000:ffff:ffff:ffff:ffff:ffff,HK
+2001:df6:d200::,2001:df6:d200:ffff:ffff:ffff:ffff:ffff,IN
2001:df6:d400::,2001:df6:d400:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:d600::,2001:df6:d600:ffff:ffff:ffff:ffff:ffff,BD
2001:df6:d800::,2001:df6:d800:ffff:ffff:ffff:ffff:ffff,BD
+2001:df6:da00::,2001:df6:da00:ffff:ffff:ffff:ffff:ffff,ID
2001:df6:dc00::,2001:df6:dc00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df6:de00::,2001:df6:de00:ffff:ffff:ffff:ffff:ffff,BD
+2001:df6:e200::,2001:df6:e200:ffff:ffff:ffff:ffff:ffff,NZ
2001:df6:e400::,2001:df6:e400:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:e600::,2001:df6:e600:ffff:ffff:ffff:ffff:ffff,ES
2001:df6:e800::,2001:df6:e800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:ea00::,2001:df6:ea00:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:ec00::,2001:df6:ec00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df6:ee00::,2001:df6:ee00:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:f000::,2001:df6:f000:ffff:ffff:ffff:ffff:ffff,HK
+2001:df6:f200::,2001:df6:f200:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:f400::,2001:df6:f400:ffff:ffff:ffff:ffff:ffff,CN
+2001:df6:f600::,2001:df6:f600:ffff:ffff:ffff:ffff:ffff,ID
2001:df6:f800::,2001:df6:f800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df6:fa00::,2001:df6:fa00:ffff:ffff:ffff:ffff:ffff,IN
2001:df6:fc00::,2001:df6:fc00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df6:fe00::,2001:df6:fe00:ffff:ffff:ffff:ffff:ffff,AU
2001:df7::,2001:df7::ffff:ffff:ffff:ffff:ffff,IN
+2001:df7:200::,2001:df7:201:ffff:ffff:ffff:ffff:ffff,IN
2001:df7:400::,2001:df7:400:ffff:ffff:ffff:ffff:ffff,HK
+2001:df7:600::,2001:df7:600:ffff:ffff:ffff:ffff:ffff,IN
2001:df7:800::,2001:df7:800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df7:a00::,2001:df7:a00:ffff:ffff:ffff:ffff:ffff,ID
2001:df7:c00::,2001:df7:c00:ffff:ffff:ffff:ffff:ffff,TW
2001:df7:1000::,2001:df7:1000:ffff:ffff:ffff:ffff:ffff,IN
2001:df7:1400::,2001:df7:1400:ffff:ffff:ffff:ffff:ffff,AU
@@ -4639,7 +4728,7 @@
2001:1408::,2001:1408:ffff:ffff:ffff:ffff:ffff:ffff,AT
2001:1410::,2001:1410:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:1418::,2001:1418:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2001:1420::,2001:1420:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2001:1420::,2001:1427:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:1428::,2001:1428:ffff:ffff:ffff:ffff:ffff:ffff,RU
2001:1430::,2001:1430:ffff:ffff:ffff:ffff:ffff:ffff,FI
2001:1438::,2001:1438:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -4688,7 +4777,7 @@
2001:1568::,2001:1568:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2001:1578::,2001:157f:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:1580::,2001:1580:ffff:ffff:ffff:ffff:ffff:ffff,DK
-2001:1588::,2001:1588:ffff:ffff:ffff:ffff:ffff:ffff,PT
+2001:1588::,2001:158f:ffff:ffff:ffff:ffff:ffff:ffff,PT
2001:1590::,2001:1590:ffff:ffff:ffff:ffff:ffff:ffff,SI
2001:1598::,2001:1598:ffff:ffff:ffff:ffff:ffff:ffff,BE
2001:15a8::,2001:15a8:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -5069,7 +5158,11 @@
2001:42b0::,2001:42b0:ffff:ffff:ffff:ffff:ffff:ffff,ZW
2001:42b8::,2001:42b8:ffff:ffff:ffff:ffff:ffff:ffff,EG
2001:42c0::,2001:42c0:ffff:ffff:ffff:ffff:ffff:ffff,ML
-2001:42c8::,2001:42c8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2001:42c8::,2001:42c8::ff:ffff:ffff:ffff:ffff,ZA
+2001:42c8:0:100::,2001:42c8::1ff:ffff:ffff:ffff:ffff,KE
+2001:42c8:0:200::,2001:42c8:ff:ffff:ffff:ffff:ffff:ffff,ZA
+2001:42c8:100::,2001:42c8:100:ff:ffff:ffff:ffff:ffff,KE
+2001:42c8:100:100::,2001:42c8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2001:42d0::,2001:42d0:ffff:ffff:ffff:ffff:ffff:ffff,MU
2001:42d8::,2001:42d8:ffff:ffff:ffff:ffff:ffff:ffff,CI
2001:42e0::,2001:42e0:ffff:ffff:ffff:ffff:ffff:ffff,SC
@@ -5237,6 +5330,11 @@
2001:43f8:c00::,2001:43f8:c00:ffff:ffff:ffff:ffff:ffff,GH
2001:43f8:c10::,2001:43f8:c10:ffff:ffff:ffff:ffff:ffff,CG
2001:43f8:c20::,2001:43f8:c20:ffff:ffff:ffff:ffff:ffff,KE
+2001:43f8:c30::,2001:43f8:c30:ffff:ffff:ffff:ffff:ffff,KE
+2001:43f8:c40::,2001:43f8:c40:ffff:ffff:ffff:ffff:ffff,KE
+2001:43f8:c50::,2001:43f8:c50:ffff:ffff:ffff:ffff:ffff,EG
+2001:43f8:c60::,2001:43f8:c61:ffff:ffff:ffff:ffff:ffff,GN
+2001:43f8:e00::,2001:43f8:eff:ffff:ffff:ffff:ffff:ffff,MU
2001:4400::,2001:4403:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2001:4408::,2001:4408:ffff:ffff:ffff:ffff:ffff:ffff,IN
2001:4410::,2001:4410:ffff:ffff:ffff:ffff:ffff:ffff,NZ
@@ -5291,20 +5389,116 @@
2001:4860::,2001:4860:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:4868::,2001:4868:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:4870::,2001:4871:ffff:ffff:ffff:ffff:ffff:ffff,US
-2001:4878::,2001:4878:8203:ffff:ffff:ffff:ffff:ffff,US
+2001:4878::,2001:4878:128:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:129::,2001:4878:129:ffff:ffff:ffff:ffff:ffff,CR
+2001:4878:12a::,2001:4878:214:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:215::,2001:4878:215:ffff:ffff:ffff:ffff:ffff,GB
+2001:4878:216::,2001:4878:227:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:228::,2001:4878:228:ffff:ffff:ffff:ffff:ffff,IL
+2001:4878:229::,2001:4878:241:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:242::,2001:4878:242:ffff:ffff:ffff:ffff:ffff,NL
+2001:4878:243::,2001:4878:243:ffff:ffff:ffff:ffff:ffff,PL
+2001:4878:244::,2001:4878:245:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:246::,2001:4878:246:ffff:ffff:ffff:ffff:ffff,DK
+2001:4878:247::,2001:4878:248:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:249::,2001:4878:249:ffff:ffff:ffff:ffff:ffff,FR
+2001:4878:24a::,2001:4878:2214:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:2215::,2001:4878:2215:ffff:ffff:ffff:ffff:ffff,GB
+2001:4878:2216::,2001:4878:2224:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:2225::,2001:4878:2225:ffff:ffff:ffff:ffff:ffff,PL
+2001:4878:2226::,2001:4878:2227:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:2228::,2001:4878:2228:ffff:ffff:ffff:ffff:ffff,IL
+2001:4878:2229::,2001:4878:2233:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:2234::,2001:4878:2234:ffff:ffff:ffff:ffff:ffff,GB
+2001:4878:2235::,2001:4878:2241:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:2242::,2001:4878:2242:ffff:ffff:ffff:ffff:ffff,NL
+2001:4878:2243::,2001:4878:2243:ffff:ffff:ffff:ffff:ffff,PL
+2001:4878:2244::,2001:4878:2245:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:2246::,2001:4878:2246:ffff:ffff:ffff:ffff:ffff,DK
+2001:4878:2247::,2001:4878:2248:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:2249::,2001:4878:2249:ffff:ffff:ffff:ffff:ffff,FR
+2001:4878:224a::,2001:4878:224f:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:2250::,2001:4878:2250:ffff:ffff:ffff:ffff:ffff,IT
+2001:4878:2251::,2001:4878:4128:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:4129::,2001:4878:4129:ffff:ffff:ffff:ffff:ffff,CR
+2001:4878:412a::,2001:4878:4214:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:4215::,2001:4878:4215:ffff:ffff:ffff:ffff:ffff,GB
+2001:4878:4216::,2001:4878:4224:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:4225::,2001:4878:4225:ffff:ffff:ffff:ffff:ffff,PL
+2001:4878:4226::,2001:4878:4227:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:4228::,2001:4878:4228:ffff:ffff:ffff:ffff:ffff,IL
+2001:4878:4229::,2001:4878:4233:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:4234::,2001:4878:4234:ffff:ffff:ffff:ffff:ffff,GB
+2001:4878:4235::,2001:4878:4241:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:4242::,2001:4878:4242:ffff:ffff:ffff:ffff:ffff,NL
+2001:4878:4243::,2001:4878:4245:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:4246::,2001:4878:4246:ffff:ffff:ffff:ffff:ffff,DK
+2001:4878:4247::,2001:4878:4248:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:4249::,2001:4878:4249:ffff:ffff:ffff:ffff:ffff,FR
+2001:4878:424a::,2001:4878:424f:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:4250::,2001:4878:4250:ffff:ffff:ffff:ffff:ffff,IT
+2001:4878:4251::,2001:4878:8128:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8129::,2001:4878:8129:ffff:ffff:ffff:ffff:ffff,CR
+2001:4878:812a::,2001:4878:8203:ffff:ffff:ffff:ffff:ffff,US
2001:4878:8204::,2001:4878:8204:7fff:ffff:ffff:ffff:ffff,DE
-2001:4878:8204:8000::,2001:4878:8216:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8204:8000::,2001:4878:8214:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8215::,2001:4878:8215:ffff:ffff:ffff:ffff:ffff,GB
+2001:4878:8216::,2001:4878:8216:ffff:ffff:ffff:ffff:ffff,US
2001:4878:8217::,2001:4878:8217:7fff:ffff:ffff:ffff:ffff,ES
2001:4878:8217:8000::,2001:4878:8224:ffff:ffff:ffff:ffff:ffff,US
-2001:4878:8225::,2001:4878:8225:7fff:ffff:ffff:ffff:ffff,PL
-2001:4878:8225:8000::,2001:4878:8227:ffff:ffff:ffff:ffff:ffff,US
-2001:4878:8228::,2001:4878:8228:7fff:ffff:ffff:ffff:ffff,IL
-2001:4878:8228:8000::,2001:4878:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8225::,2001:4878:8225:ffff:ffff:ffff:ffff:ffff,PL
+2001:4878:8226::,2001:4878:8227:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8228::,2001:4878:8228:ffff:ffff:ffff:ffff:ffff,IL
+2001:4878:8229::,2001:4878:8233:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8234::,2001:4878:8234:ffff:ffff:ffff:ffff:ffff,GB
+2001:4878:8235::,2001:4878:8241:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8242::,2001:4878:8242:ffff:ffff:ffff:ffff:ffff,NL
+2001:4878:8243::,2001:4878:8243:ffff:ffff:ffff:ffff:ffff,PL
+2001:4878:8244::,2001:4878:8245:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8246::,2001:4878:8246:ffff:ffff:ffff:ffff:ffff,DK
+2001:4878:8247::,2001:4878:8248:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8249::,2001:4878:8249:ffff:ffff:ffff:ffff:ffff,FR
+2001:4878:824a::,2001:4878:824f:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8250::,2001:4878:8250:ffff:ffff:ffff:ffff:ffff,IT
+2001:4878:8251::,2001:4878:a128:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a129::,2001:4878:a129:ffff:ffff:ffff:ffff:ffff,CR
+2001:4878:a12a::,2001:4878:a224:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a225::,2001:4878:a225:ffff:ffff:ffff:ffff:ffff,PL
+2001:4878:a226::,2001:4878:a227:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a228::,2001:4878:a228:ffff:ffff:ffff:ffff:ffff,IL
+2001:4878:a229::,2001:4878:a233:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a234::,2001:4878:a234:ffff:ffff:ffff:ffff:ffff,GB
+2001:4878:a235::,2001:4878:a241:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a242::,2001:4878:a242:ffff:ffff:ffff:ffff:ffff,NL
+2001:4878:a243::,2001:4878:a243:ffff:ffff:ffff:ffff:ffff,PL
+2001:4878:a244::,2001:4878:a248:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a249::,2001:4878:a249:ffff:ffff:ffff:ffff:ffff,FR
+2001:4878:a24a::,2001:4878:a24f:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a250::,2001:4878:a250:ffff:ffff:ffff:ffff:ffff,IT
+2001:4878:a251::,2001:4878:c128:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:c129::,2001:4878:c129:ffff:ffff:ffff:ffff:ffff,CR
+2001:4878:c12a::,2001:4878:c214:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:c215::,2001:4878:c215:ffff:ffff:ffff:ffff:ffff,GB
+2001:4878:c216::,2001:4878:c224:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:c225::,2001:4878:c225:ffff:ffff:ffff:ffff:ffff,PL
+2001:4878:c226::,2001:4878:c227:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:c228::,2001:4878:c228:ffff:ffff:ffff:ffff:ffff,IL
+2001:4878:c229::,2001:4878:c233:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:c234::,2001:4878:c234:ffff:ffff:ffff:ffff:ffff,GB
+2001:4878:c235::,2001:4878:c242:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:c243::,2001:4878:c243:ffff:ffff:ffff:ffff:ffff,PL
+2001:4878:c244::,2001:4878:c245:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:c246::,2001:4878:c246:ffff:ffff:ffff:ffff:ffff,DK
+2001:4878:c247::,2001:4878:c248:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:c249::,2001:4878:c249:ffff:ffff:ffff:ffff:ffff,FR
+2001:4878:c24a::,2001:4878:c24f:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:c250::,2001:4878:c250:ffff:ffff:ffff:ffff:ffff,IT
+2001:4878:c251::,2001:4878:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:4888::,2001:4888:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:4890::,2001:4890:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:4898::,2001:4898:e80f:ffff:ffff:ffff:ffff:ffff,US
-2001:4898:e810::,2001:4898:e810:7fff:ffff:ffff:ffff:ffff,BR
-2001:4898:e810:8000::,2001:489a:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4898:e810::,2001:4898:e810:ffff:ffff:ffff:ffff:ffff,BR
+2001:4898:e811::,2001:489a:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:48a0::,2001:48a0:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:48a8::,2001:48a8:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:48b0::,2001:48b0:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -5456,7 +5650,7 @@
2001:4d20::,2001:4d20:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:4d30::,2001:4d30:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:4d38::,2001:4d38:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2001:4d48::,2001:4d48:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2001:4d48::,2001:4d4f:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:4d50::,2001:4d50:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:4d60::,2001:4d60:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:4d68::,2001:4d68:ffff:ffff:ffff:ffff:ffff:ffff,IE
@@ -5486,105 +5680,210 @@
2160:150::,2160:150:7fff:ffff:ffff:ffff:ffff:ffff,US
2400::,2400:fff:ffff:ffff:ffff:ffff:ffff:ffff,KR
2400:1000::,2400:1000:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2400:1040::,2400:1040:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2400:10c0::,2400:10c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2400:1100::,2400:1100:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2400:1140::,2400:1140:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2400:11c0::,2400:11c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:1200::,2400:1200:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2400:1240::,2400:1240:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2400:12c0::,2400:12c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1300::,2400:1300:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2400:1340::,2400:1340:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1380::,2400:1380:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2400:13c0::,2400:13c0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:1400::,2400:1400:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2400:1440::,2400:1440:ffff:ffff:ffff:ffff:ffff:ffff,BT
2400:1480::,2400:1480:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2400:14c0::,2400:14c0:ffff:ffff:ffff:ffff:ffff:ffff,PK
2400:1500::,2400:1500:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2400:1540::,2400:1540:ffff:ffff:ffff:ffff:ffff:ffff,SG
2400:1580::,2400:1580:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2400:15c0::,2400:15c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1600::,2400:1600:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2400:1640::,2400:1640:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1680::,2400:1680:ffff:ffff:ffff:ffff:ffff:ffff,PK
+2400:16c0::,2400:16c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1700::,2400:1700:ffff:ffff:ffff:ffff:ffff:ffff,SG
-2400:1780::,2400:1780:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2400:1740::,2400:1740:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2400:17c0::,2400:17c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1800::,2400:1800:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2400:1840::,2400:1840:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1880::,2400:1880:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2400:18c0::,2400:18c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1900::,2400:1900:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2400:1940::,2400:1940:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1980::,2400:1980:ffff:ffff:ffff:ffff:ffff:ffff,AF
+2400:19c0::,2400:19c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1a00::,2400:1a00:ffff:ffff:ffff:ffff:ffff:ffff,NP
+2400:1a40::,2400:1a40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1a80::,2400:1a80:ffff:ffff:ffff:ffff:ffff:ffff,PK
+2400:1ac0::,2400:1ac0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1b00::,2400:1b00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2400:1b40::,2400:1b40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1b80::,2400:1b80:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2400:1bc0::,2400:1bc0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:1c00::,2400:1c00:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2400:1c40::,2400:1c40:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:1c80::,2400:1c80:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2400:1cc0::,2400:1cc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1d00::,2400:1d00:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2400:1d40::,2400:1d40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1d80::,2400:1d80:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2400:1dc0::,2400:1dc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1e00::,2400:1e00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2400:1e40::,2400:1e40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1e80::,2400:1e80:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2400:1ec0::,2400:1ec0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1f00::,2400:1f00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2400:1f40::,2400:1f40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1f80::,2400:1f80:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2400:1fc0::,2400:1fc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:2000::,2400:3000:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2400:3040::,2400:3040:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3080::,2400:3080:ffff:ffff:ffff:ffff:ffff:ffff,AF
+2400:30c0::,2400:30c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2400:3100::,2400:3100:ffff:ffff:ffff:ffff:ffff:ffff,VU
+2400:3140::,2400:3140:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3180::,2400:3180:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2400:31c0::,2400:31c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3200::,2400:3200:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2400:3240::,2400:3240:ffff:ffff:ffff:ffff:ffff:ffff,BD
2400:3280::,2400:3280:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2400:32c0::,2400:32c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3300::,2400:3300:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2400:3340::,2400:3340:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3380::,2400:3380:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2400:33c0::,2400:33c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3400::,2400:3400:ffff:ffff:ffff:ffff:ffff:ffff,VU
+2400:3440::,2400:3440:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3480::,2400:3480:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2400:34c0::,2400:34c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3500::,2400:3500:ffff:ffff:ffff:ffff:ffff:ffff,TV
+2400:3540::,2400:3540:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3580::,2400:3580:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2400:35c0::,2400:35c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3600::,2400:3600:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2400:3640::,2400:3640:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3680::,2400:3680:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2400:36c0::,2400:36c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2400:3740::,2400:3740:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2400:37c0::,2400:37c0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:3800::,2400:3800:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2400:3840::,2400:3840:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:3880::,2400:3880:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2400:38c0::,2400:38c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3900::,2400:3900:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2400:3940::,2400:3940:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:3980::,2400:3980:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2400:39c0::,2400:39c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3a00::,2400:3a00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2400:3a40::,2400:3a40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3a80::,2400:3a80:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2400:3ac0::,2400:3ac0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:3b00::,2400:3b00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2400:3b40::,2400:3b40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3b80::,2400:3b80:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2400:3bc0::,2400:3bc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3c00::,2400:3c03:ffff:ffff:ffff:ffff:ffff:ffff,US
+2400:3c40::,2400:3c40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3c80::,2400:3c80:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2400:3cc0::,2400:3cc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3d00::,2400:3d00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2400:3d40::,2400:3d40:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:3d80::,2400:3d80:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2400:3dc0::,2400:3dc0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2400:3e00::,2400:3e00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2400:3e40::,2400:3e40:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:3e80::,2400:3e80:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2400:3ec0::,2400:3ec0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:3f00::,2400:3f00:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2400:3f40::,2400:3f40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3f80::,2400:3f80:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2400:3fc0::,2400:3fc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:4000::,2400:43ff:ffff:ffff:ffff:ffff:ffff:ffff,JP
2400:4400::,2400:4400:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2400:4440::,2400:4440:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:4480::,2400:4480:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2400:44c0::,2400:44c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:4500::,2400:4500:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2400:4540::,2400:4540:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:4580::,2400:4580:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2400:45c0::,2400:45c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2400:4600::,2400:4600:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2400:4640::,2400:4640:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:4680::,2400:4680:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2400:46c0::,2400:46c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:4700::,2400:4700:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2400:4740::,2400:4740:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:4780::,2400:4780:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2400:47c0::,2400:47c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2400:4800::,2400:4800:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2400:4840::,2400:4840:ffff:ffff:ffff:ffff:ffff:ffff,JP
2400:4880::,2400:4880:ffff:ffff:ffff:ffff:ffff:ffff,KH
+2400:48c0::,2400:48c0:ffff:ffff:ffff:ffff:ffff:ffff,JP
2400:4900::,2400:4900:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2400:4940::,2400:4940:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:4980::,2400:4980:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2400:49c0::,2400:49c0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:4a00::,2400:4a00:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2400:4a40::,2400:4a40:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:4a80::,2400:4a80:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2400:4ac0::,2400:4ac0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2400:4b00::,2400:4b00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2400:4b40::,2400:4b40:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:4b80::,2400:4b80:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2400:4bc0::,2400:4bc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:4c00::,2400:4c00:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2400:4c40::,2400:4c40:ffff:ffff:ffff:ffff:ffff:ffff,BD
2400:4c80::,2400:4c80:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2400:4cc0::,2400:4cc0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2400:4d00::,2400:4d00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2400:4d40::,2400:4d40:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2400:4dc0::,2400:4dc0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:4e00::,2400:4e00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2400:4e40::,2400:4e40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:4e80::,2400:4e80:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2400:4ec0::,2400:4ec0:ffff:ffff:ffff:ffff:ffff:ffff,ID
2400:4f00::,2400:4f00:ffff:ffff:ffff:ffff:ffff:ffff,PK
+2400:4f40::,2400:4f40:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2400:4fc0::,2400:4fc0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2400:5000::,2400:5000:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2400:5040::,2400:5040:ffff:ffff:ffff:ffff:ffff:ffff,ID
2400:5080::,2400:5080:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2400:50c0::,2400:50c0:ffff:ffff:ffff:ffff:ffff:ffff,BT
2400:5100::,2400:5100:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2400:5140::,2400:5140:ffff:ffff:ffff:ffff:ffff:ffff,ID
2400:5180::,2400:5180:ffff:ffff:ffff:ffff:ffff:ffff,AF
+2400:51c0::,2400:51c0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:5200::,2400:5200:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2400:5240::,2400:5240:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:5280::,2400:5280:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2400:52c0::,2400:52c0:ffff:ffff:ffff:ffff:ffff:ffff,SG
2400:5300::,2400:5300:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2400:5340::,2400:5340:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:5380::,2400:5380:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2400:53c0::,2400:53c0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:5400::,2400:5400:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2400:5440::,2400:5440:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:5480::,2400:5480:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2400:54c0::,2400:54c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:5500::,2400:5500:ffff:ffff:ffff:ffff:ffff:ffff,PH
+2400:5540::,2400:5540:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2400:5580::,2400:5580:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2400:55c0::,2400:55c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:5600::,2400:5600:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2400:5640::,2400:5640:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:5680::,2400:5680:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2400:56c0::,2400:56c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:5700::,2400:5700:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2400:5740::,2400:5740:ffff:ffff:ffff:ffff:ffff:ffff,ID
2400:5780::,2400:5780:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2400:57c0::,2400:57c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:5800::,2400:5800:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2400:5840::,2400:5840:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:5880::,2400:5880:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2400:58c0::,2400:58c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:5900::,2400:5900:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2400:5a00::,2400:5a00:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:5a80::,2400:5a80:ffff:ffff:ffff:ffff:ffff:ffff,BD
@@ -5608,7 +5907,15 @@
2400:6380::,2400:6380:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:6400::,2400:6400:ffff:ffff:ffff:ffff:ffff:ffff,TO
2400:6480::,2400:6480:ffff:ffff:ffff:ffff:ffff:ffff,IN
-2400:6500::,2400:6500:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2400:6500::,2400:6500::70ff:ffff:ffff:ffff:ffff,SG
+2400:6500:0:7100::,2400:6500::71ff:ffff:ffff:ffff:ffff,JP
+2400:6500:0:7200::,2400:6500::72ff:ffff:ffff:ffff:ffff,AU
+2400:6500:0:7300::,2400:6500::73ff:ffff:ffff:ffff:ffff,SG
+2400:6500:0:7400::,2400:6500::74ff:ffff:ffff:ffff:ffff,KR
+2400:6500:0:7500::,2400:6500::75ff:ffff:ffff:ffff:ffff,IN
+2400:6500:0:7600::,2400:6500:100:70ff:ffff:ffff:ffff:ffff,SG
+2400:6500:100:7100::,2400:6500:100:71ff:ffff:ffff:ffff:ffff,CN
+2400:6500:100:7200::,2400:6500:ffff:ffff:ffff:ffff:ffff:ffff,SG
2400:6580::,2400:6580:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:6600::,2400:6600:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:6680::,2400:6680:ffff:ffff:ffff:ffff:ffff:ffff,SG
@@ -5718,7 +6025,6 @@
2400:9980::,2400:9980:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:9a00::,2400:9a00:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:9a80::,2400:9a80:ffff:ffff:ffff:ffff:ffff:ffff,AU
-2400:9b00::,2400:9b00:ffff:ffff:ffff:ffff:ffff:ffff,NP
2400:9b80::,2400:9b80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:9c00::,2400:9c00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:9c80::,2400:9c80:ffff:ffff:ffff:ffff:ffff:ffff,ID
@@ -5729,7 +6035,6 @@
2400:9f80::,2400:9f80:ffff:ffff:ffff:ffff:ffff:ffff,KR
2400:a000::,2400:a000:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:a080::,2400:a080:ffff:ffff:ffff:ffff:ffff:ffff,JP
-2400:a280::,2400:a280:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:a300::,2400:a300:ffff:ffff:ffff:ffff:ffff:ffff,JP
2400:a380::,2400:a380:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:a400::,2400:a400:ffff:ffff:ffff:ffff:ffff:ffff,NP
@@ -5814,15 +6119,13 @@
2400:cb00:26::,2400:cb00:26:ffff:ffff:ffff:ffff:ffff,AU
2400:cb00:27::,2400:cb00:28:ffff:ffff:ffff:ffff:ffff,US
2400:cb00:29::,2400:cb00:29:ffff:ffff:ffff:ffff:ffff,CA
-2400:cb00:2a::,2400:cb00:2f:ffff:ffff:ffff:ffff:ffff,US
-2400:cb00:30::,2400:cb00:30:ffff:ffff:ffff:ffff:ffff,AT
+2400:cb00:2a::,2400:cb00:30:ffff:ffff:ffff:ffff:ffff,US
2400:cb00:31::,2400:cb00:31:ffff:ffff:ffff:ffff:ffff,CZ
2400:cb00:32::,2400:cb00:32:ffff:ffff:ffff:ffff:ffff,SE
-2400:cb00:33::,2400:cb00:33:ffff:ffff:ffff:ffff:ffff,PL
+2400:cb00:33::,2400:cb00:33:ffff:ffff:ffff:ffff:ffff,US
2400:cb00:34::,2400:cb00:34:ffff:ffff:ffff:ffff:ffff,KR
2400:cb00:35::,2400:cb00:35:ffff:ffff:ffff:ffff:ffff,SG
-2400:cb00:36::,2400:cb00:36:ffff:ffff:ffff:ffff:ffff,US
-2400:cb00:37::,2400:cb00:37:ffff:ffff:ffff:ffff:ffff,DE
+2400:cb00:36::,2400:cb00:37:ffff:ffff:ffff:ffff:ffff,US
2400:cb00:38::,2400:cb00:38:ffff:ffff:ffff:ffff:ffff,CL
2400:cb00:39::,2400:cb00:39:ffff:ffff:ffff:ffff:ffff,IT
2400:cb00:3a::,2400:cb00:3f:ffff:ffff:ffff:ffff:ffff,US
@@ -5878,7 +6181,9 @@
2400:cb00:87::,2400:cb00:87:ffff:ffff:ffff:ffff:ffff,RU
2400:cb00:88::,2400:cb00:88:ffff:ffff:ffff:ffff:ffff,GR
2400:cb00:89::,2400:cb00:89:ffff:ffff:ffff:ffff:ffff,ES
-2400:cb00:8a::,2400:cb00:95:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:8a::,2400:cb00:8f:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:90::,2400:cb00:90:ffff:ffff:ffff:ffff:ffff,PA
+2400:cb00:91::,2400:cb00:95:ffff:ffff:ffff:ffff:ffff,US
2400:cb00:96::,2400:cb00:96:ffff:ffff:ffff:ffff:ffff,AO
2400:cb00:97::,2400:cb00:97:ffff:ffff:ffff:ffff:ffff,BR
2400:cb00:98::,2400:cb00:103:ffff:ffff:ffff:ffff:ffff,US
@@ -5887,9 +6192,7 @@
2400:cb00:107::,2400:cb00:107:ffff:ffff:ffff:ffff:ffff,PT
2400:cb00:108::,2400:cb00:113:ffff:ffff:ffff:ffff:ffff,US
2400:cb00:114::,2400:cb00:114:ffff:ffff:ffff:ffff:ffff,AT
-2400:cb00:115::,2400:cb00:568:ffff:ffff:ffff:ffff:ffff,US
-2400:cb00:569::,2400:cb00:569:ffff:ffff:ffff:ffff:ffff,CA
-2400:cb00:56a::,2400:cb00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:115::,2400:cb00:ffff:ffff:ffff:ffff:ffff:ffff,US
2400:cb80::,2400:cb80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:cc00::,2400:cc00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:cc80::,2400:cc80:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -5959,7 +6262,6 @@
2400:f080::,2400:f080:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:f100::,2400:f100:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:f180::,2400:f180:ffff:ffff:ffff:ffff:ffff:ffff,SG
-2400:f200::,2400:f200:ffff:ffff:ffff:ffff:ffff:ffff,PH
2400:f280::,2400:f280:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:f300::,2400:f300:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:f380::,2400:f380:ffff:ffff:ffff:ffff:ffff:ffff,AU
@@ -5994,6 +6296,7 @@
2401:300::,2401:300:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:380::,2401:380:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:400::,2401:403:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2401:4c1:c202:1193:f0a8:d737:3761:2b87,2401:4c1:c202:1193:f0a8:d737:3761:2b87,US
2401:500::,2401:500:ffff:ffff:ffff:ffff:ffff:ffff,TH
2401:580::,2401:580:ffff:ffff:ffff:ffff:ffff:ffff,BD
2401:600::,2401:600:ffff:ffff:ffff:ffff:ffff:ffff,JP
@@ -6123,7 +6426,6 @@
2401:4400::,2401:4400:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:4480::,2401:4480:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:4580::,2401:4580:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2401:4600::,2401:4600:ffff:ffff:ffff:ffff:ffff:ffff,BD
2401:4680::,2401:4680:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:4700::,2401:4700:ffff:ffff:ffff:ffff:ffff:ffff,IN
2401:4780::,2401:4780:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -6179,7 +6481,6 @@
2401:7300::,2401:7300:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:7380::,2401:7380:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:7400::,2401:7401:ffff:ffff:ffff:ffff:ffff:ffff,SG
-2401:7480::,2401:7480:ffff:ffff:ffff:ffff:ffff:ffff,MY
2401:7500::,2401:7500:ffff:ffff:ffff:ffff:ffff:ffff,IN
2401:7580::,2401:7580:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:7600::,2401:7600:ffff:ffff:ffff:ffff:ffff:ffff,HK
@@ -6463,8 +6764,8 @@
2401:fa00:7::,2401:fa00:8:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:9::,2401:fa00:9:7fff:ffff:ffff:ffff:ffff,AU
2401:fa00:9:8000::,2401:fa00:c:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:d::,2401:fa00:d:7fff:ffff:ffff:ffff:ffff,KR
-2401:fa00:d:8000::,2401:fa00:e:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:d::,2401:fa00:d:ffff:ffff:ffff:ffff:ffff,KR
+2401:fa00:e::,2401:fa00:e:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:f::,2401:fa00:f:7fff:ffff:ffff:ffff:ffff,SG
2401:fa00:f:8000::,2401:fa00:10:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:11::,2401:fa00:11:7fff:ffff:ffff:ffff:ffff,AU
@@ -6481,7 +6782,9 @@
2401:fa00:26::,2401:fa00:26:ffff:ffff:ffff:ffff:ffff,PH
2401:fa00:27::,2401:fa00:28:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:29::,2401:fa00:29:7fff:ffff:ffff:ffff:ffff,AU
-2401:fa00:29:8000::,2401:fa00:32:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:29:8000::,2401:fa00:2c:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:2d::,2401:fa00:2d:ffff:ffff:ffff:ffff:ffff,SG
+2401:fa00:2e::,2401:fa00:32:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:33::,2401:fa00:33:ffff:ffff:ffff:ffff:ffff,PH
2401:fa00:34::,2401:fa00:3f:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:40::,2401:fa00:40:7fff:ffff:ffff:ffff:ffff,CN
@@ -6595,7 +6898,6 @@
2402:3280::,2402:3280:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:3300::,2402:3300:ffff:ffff:ffff:ffff:ffff:ffff,SG
2402:3380::,2402:3380:ffff:ffff:ffff:ffff:ffff:ffff,AU
-2402:3400::,2402:3400:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:3480::,2402:3480:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:3500::,2402:3500:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2402:3580::,2402:3580:ffff:ffff:ffff:ffff:ffff:ffff,NZ
@@ -6763,7 +7065,6 @@
2402:8800::,2402:8800:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:8880::,2402:8880:ffff:ffff:ffff:ffff:ffff:ffff,MN
2402:8900::,2402:8900:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2402:8980::,2402:8980:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:8a00::,2402:8a00:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:8a80::,2402:8a80:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:8b00::,2402:8b00:ffff:ffff:ffff:ffff:ffff:ffff,ID
@@ -6913,7 +7214,6 @@
2402:d400::,2402:d400:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:d500::,2402:d500:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:d580::,2402:d580:ffff:ffff:ffff:ffff:ffff:ffff,US
-2402:d581::,2402:d581:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:d600::,2402:d600:ffff:ffff:ffff:ffff:ffff:ffff,JP
2402:d680::,2402:d680:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:d700::,2402:d700:ffff:ffff:ffff:ffff:ffff:ffff,JP
@@ -6979,7 +7279,6 @@
2402:f700::,2402:f700:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:f780::,2402:f780:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:f800::,2402:f800:ffff:ffff:ffff:ffff:ffff:ffff,VN
-2402:f880::,2402:f880:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:f900::,2402:f900:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2402:f980::,2402:f980:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:fa00::,2402:fa00:ffff:ffff:ffff:ffff:ffff:ffff,AU
@@ -7338,7 +7637,9 @@
2403:ad00::,2403:ad00:ffff:ffff:ffff:ffff:ffff:ffff,IN
2403:ad80::,2403:ad80:5f:ffff:ffff:ffff:ffff:ffff,HK
2403:ad80:60::,2403:ad80:67:ffff:ffff:ffff:ffff:ffff,JP
-2403:ad80:68::,2403:ad80:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2403:ad80:68::,2403:ad80:7f:ffff:ffff:ffff:ffff:ffff,HK
+2403:ad80:80::,2403:ad80:87:ffff:ffff:ffff:ffff:ffff,US
+2403:ad80:88::,2403:ad80:ffff:ffff:ffff:ffff:ffff:ffff,HK
2403:ae00::,2403:ae00:ffff:ffff:ffff:ffff:ffff:ffff,ID
2403:ae80::,2403:ae80:ffff:ffff:ffff:ffff:ffff:ffff,NR
2403:af00::,2403:af00:ffff:ffff:ffff:ffff:ffff:ffff,ID
@@ -7792,7 +8093,9 @@
2404:8500::,2404:8500:ffff:ffff:ffff:ffff:ffff:ffff,IN
2404:8580::,2404:8580:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:8600::,2404:8600:ffff:ffff:ffff:ffff:ffff:ffff,AU
-2404:8680::,2404:8680:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2404:8680::,2404:8680:fff:ffff:ffff:ffff:ffff:ffff,SG
+2404:8680:1000::,2404:8680:1fff:ffff:ffff:ffff:ffff:ffff,TH
+2404:8680:2000::,2404:8680:ffff:ffff:ffff:ffff:ffff:ffff,SG
2404:8700::,2404:8700:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:8780::,2404:8780:ffff:ffff:ffff:ffff:ffff:ffff,HK
2404:8800::,2404:8800:ffff:ffff:ffff:ffff:ffff:ffff,TH
@@ -7848,7 +8151,6 @@
2404:a280::,2404:a280:ffff:ffff:ffff:ffff:ffff:ffff,IN
2404:a300::,2404:a300:ffff:ffff:ffff:ffff:ffff:ffff,TH
2404:a380::,2404:a380:ffff:ffff:ffff:ffff:ffff:ffff,AU
-2404:a480::,2404:a480:ffff:ffff:ffff:ffff:ffff:ffff,JP
2404:a500::,2404:a500:ffff:ffff:ffff:ffff:ffff:ffff,IN
2404:a580::,2404:a580:ffff:ffff:ffff:ffff:ffff:ffff,SG
2404:a600::,2404:a600:ffff:ffff:ffff:ffff:ffff:ffff,JP
@@ -7861,7 +8163,6 @@
2404:ab00::,2404:ab00:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2404:ab80::,2404:ab80:ffff:ffff:ffff:ffff:ffff:ffff,MV
2404:ac00::,2404:ac00:ffff:ffff:ffff:ffff:ffff:ffff,IN
-2404:ad00::,2404:ad00:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2404:ad80::,2404:ad80:ffff:ffff:ffff:ffff:ffff:ffff,SG
2404:ae00::,2404:ae00:ffff:ffff:ffff:ffff:ffff:ffff,HK
2404:ae80::,2404:ae80:ffff:ffff:ffff:ffff:ffff:ffff,TH
@@ -8022,7 +8323,9 @@
2404:f801:30::,2404:f801:30::,AU
2404:f801:30::1,2404:f801:8027:ffff:ffff:ffff:ffff:ffff,SG
2404:f801:8028::,2404:f801:8028:ffff:ffff:ffff:ffff:ffff,IN
-2404:f801:8029::,2404:f801:8057:ffff:ffff:ffff:ffff:ffff,SG
+2404:f801:8029::,2404:f801:8050::ffff:ffff:ffff:ffff,SG
+2404:f801:8050:1::,2404:f801:8050:8:ffff:ffff:ffff:ffff,JP
+2404:f801:8050:9::,2404:f801:8057:ffff:ffff:ffff:ffff:ffff,SG
2404:f801:8058::,2404:f801:8058:ffff:ffff:ffff:ffff:ffff,IN
2404:f801:8059::,2404:f801:e817:ffff:ffff:ffff:ffff:ffff,SG
2404:f801:e818::,2404:f801:e818:7fff:ffff:ffff:ffff:ffff,AU
@@ -8104,7 +8407,9 @@
2405:2000:400:300::,2405:2000:400:3ff:ffff:ffff:ffff:ffff,HK
2405:2000:400:400::,2405:2000:400:ffff:ffff:ffff:ffff:ffff,IN
2405:2000:401::,2405:2000:401:ffff:ffff:ffff:ffff:ffff,HK
-2405:2000:402::,2405:2000:7ff:ffff:ffff:ffff:ffff:ffff,IN
+2405:2000:402::,2405:2000:500:ffff:ffff:ffff:ffff:ffff,IN
+2405:2000:501::,2405:2000:501:ffff:ffff:ffff:ffff:ffff,HK
+2405:2000:502::,2405:2000:7ff:ffff:ffff:ffff:ffff:ffff,IN
2405:2000:800::,2405:2000:800:ff:ffff:ffff:ffff:ffff,SG
2405:2000:800:100::,2405:2000:8ff:ffff:ffff:ffff:ffff:ffff,IN
2405:2000:900::,2405:2000:900:ff:ffff:ffff:ffff:ffff,JP
@@ -8160,7 +8465,6 @@
2405:2a80::,2405:2a80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:2b00::,2405:2b00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2405:2b80::,2405:2b80:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2405:2c00::,2405:2c00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2405:2c80::,2405:2c80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:2d00::,2405:2d00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2405:2d80::,2405:2d80:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -8377,7 +8681,6 @@
2405:9880::,2405:9880:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:9900::,2405:9900:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:9980::,2405:9980:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2405:9a00::,2405:9a00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2405:9a80::,2405:9a80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:9b00::,2405:9b00:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:9b80::,2405:9b80:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -8992,7 +9295,75 @@
2406:d800::,2406:d800:ffff:ffff:ffff:ffff:ffff:ffff,IN
2406:d880::,2406:d880:ffff:ffff:ffff:ffff:ffff:ffff,CN
2406:d980::,2406:d980:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2406:da00::,2406:daff:ffff:ffff:ffff:ffff:ffff:ffff,US
+2406:da00::,2406:da00:1fff:ffff:ffff:ffff:ffff:ffff,US
+2406:da00:2000::,2406:da00:20ff:ffff:ffff:ffff:ffff:ffff,KR
+2406:da00:2100::,2406:da00:3fff:ffff:ffff:ffff:ffff:ffff,US
+2406:da00:4000::,2406:da00:40ff:ffff:ffff:ffff:ffff:ffff,JP
+2406:da00:4100::,2406:da00:7fff:ffff:ffff:ffff:ffff:ffff,US
+2406:da00:8000::,2406:da00:80ff:ffff:ffff:ffff:ffff:ffff,SG
+2406:da00:8100::,2406:da00:9fff:ffff:ffff:ffff:ffff:ffff,US
+2406:da00:a000::,2406:da00:a0ff:ffff:ffff:ffff:ffff:ffff,IN
+2406:da00:a100::,2406:da00:bfff:ffff:ffff:ffff:ffff:ffff,US
+2406:da00:c000::,2406:da00:c0ff:ffff:ffff:ffff:ffff:ffff,AU
+2406:da00:c100::,2406:da11:ffff:ffff:ffff:ffff:ffff:ffff,US
+2406:da12::,2406:da12:fff:ffff:ffff:ffff:ffff:ffff,KR
+2406:da12:1000::,2406:da13:ffff:ffff:ffff:ffff:ffff:ffff,US
+2406:da14::,2406:da14:fff:ffff:ffff:ffff:ffff:ffff,JP
+2406:da14:1000::,2406:da17:ffff:ffff:ffff:ffff:ffff:ffff,US
+2406:da18::,2406:da18:fff:ffff:ffff:ffff:ffff:ffff,SG
+2406:da18:1000::,2406:da19:ffff:ffff:ffff:ffff:ffff:ffff,US
+2406:da1a::,2406:da1a:fff:ffff:ffff:ffff:ffff:ffff,IN
+2406:da1a:1000::,2406:da1b:ffff:ffff:ffff:ffff:ffff:ffff,US
+2406:da1c::,2406:da1c:fff:ffff:ffff:ffff:ffff:ffff,AU
+2406:da1c:1000::,2406:daa0:203f:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:2040::,2406:daa0:204f:ffff:ffff:ffff:ffff:ffff,KR
+2406:daa0:2050::,2406:daa0:207f:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:2080::,2406:daa0:208f:ffff:ffff:ffff:ffff:ffff,KR
+2406:daa0:2090::,2406:daa0:20bf:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:20c0::,2406:daa0:20cf:ffff:ffff:ffff:ffff:ffff,KR
+2406:daa0:20d0::,2406:daa0:401f:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:4020::,2406:daa0:402f:ffff:ffff:ffff:ffff:ffff,JP
+2406:daa0:4030::,2406:daa0:403f:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:4040::,2406:daa0:404f:ffff:ffff:ffff:ffff:ffff,JP
+2406:daa0:4050::,2406:daa0:405f:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:4060::,2406:daa0:406f:ffff:ffff:ffff:ffff:ffff,JP
+2406:daa0:4070::,2406:daa0:407f:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:4080::,2406:daa0:408f:ffff:ffff:ffff:ffff:ffff,JP
+2406:daa0:4090::,2406:daa0:409f:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:40a0::,2406:daa0:40af:ffff:ffff:ffff:ffff:ffff,JP
+2406:daa0:40b0::,2406:daa0:40bf:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:40c0::,2406:daa0:40cf:ffff:ffff:ffff:ffff:ffff,JP
+2406:daa0:40d0::,2406:daa0:801f:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:8020::,2406:daa0:802f:ffff:ffff:ffff:ffff:ffff,SG
+2406:daa0:8030::,2406:daa0:807f:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:8080::,2406:daa0:808f:ffff:ffff:ffff:ffff:ffff,SG
+2406:daa0:8090::,2406:daa0:80bf:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:80c0::,2406:daa0:80cf:ffff:ffff:ffff:ffff:ffff,SG
+2406:daa0:80d0::,2406:daa0:a03f:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:a040::,2406:daa0:a04f:ffff:ffff:ffff:ffff:ffff,IN
+2406:daa0:a050::,2406:daa0:a07f:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:a080::,2406:daa0:a08f:ffff:ffff:ffff:ffff:ffff,IN
+2406:daa0:a090::,2406:daa0:a0bf:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:a0c0::,2406:daa0:a0cf:ffff:ffff:ffff:ffff:ffff,IN
+2406:daa0:a0d0::,2406:daa0:c01f:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:c020::,2406:daa0:c02f:ffff:ffff:ffff:ffff:ffff,AU
+2406:daa0:c030::,2406:daa0:c03f:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:c040::,2406:daa0:c04f:ffff:ffff:ffff:ffff:ffff,AU
+2406:daa0:c050::,2406:daa0:c07f:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:c080::,2406:daa0:c08f:ffff:ffff:ffff:ffff:ffff,AU
+2406:daa0:c090::,2406:daa0:c0bf:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:c0c0::,2406:daa0:c0cf:ffff:ffff:ffff:ffff:ffff,AU
+2406:daa0:c0d0::,2406:dafc:1fff:ffff:ffff:ffff:ffff:ffff,US
+2406:dafc:2000::,2406:dafc:20ff:ffff:ffff:ffff:ffff:ffff,KR
+2406:dafc:2100::,2406:dafc:3fff:ffff:ffff:ffff:ffff:ffff,US
+2406:dafc:4000::,2406:dafc:40ff:ffff:ffff:ffff:ffff:ffff,JP
+2406:dafc:4100::,2406:dafc:7fff:ffff:ffff:ffff:ffff:ffff,US
+2406:dafc:8000::,2406:dafc:80ff:ffff:ffff:ffff:ffff:ffff,SG
+2406:dafc:8100::,2406:dafc:9fff:ffff:ffff:ffff:ffff:ffff,US
+2406:dafc:a000::,2406:dafc:a0ff:ffff:ffff:ffff:ffff:ffff,IN
+2406:dafc:a100::,2406:dafc:bfff:ffff:ffff:ffff:ffff:ffff,US
+2406:dafc:c000::,2406:dafc:c0ff:ffff:ffff:ffff:ffff:ffff,AU
+2406:dafc:c100::,2406:daff:ffff:ffff:ffff:ffff:ffff:ffff,US
2406:db00::,2406:db00:ffff:ffff:ffff:ffff:ffff:ffff,IN
2406:db80::,2406:db80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2406:dc00::,2406:dc00:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -9138,7 +9509,6 @@
2407:2480::,2407:2480:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2407:2500::,2407:2500:ffff:ffff:ffff:ffff:ffff:ffff,AU
2407:2580::,2407:2580:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2407:2600::,2407:2600:ffff:ffff:ffff:ffff:ffff:ffff,AU
2407:2680::,2407:2680:ffff:ffff:ffff:ffff:ffff:ffff,BD
2407:2780::,2407:2780:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:2800::,2407:2800:ffff:ffff:ffff:ffff:ffff:ffff,WS
@@ -9381,89 +9751,180 @@
2407:a380::,2407:a380:ffff:ffff:ffff:ffff:ffff:ffff,SG
2407:a480::,2407:a480:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:a500::,2407:a500:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2407:a580::,2407:a580:ffff:ffff:ffff:ffff:ffff:ffff,AU
2407:a600::,2407:a600:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2407:a680::,2407:a680:ffff:ffff:ffff:ffff:ffff:ffff,BD
2407:a700::,2407:a700:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2407:a780::,2407:a780:ffff:ffff:ffff:ffff:ffff:ffff,IN
2407:a800::,2407:a800:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2407:a880::,2407:a880:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2407:a980::,2407:a980:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2407:aa80::,2407:aa80:ffff:ffff:ffff:ffff:ffff:ffff,PK
2407:ab00::,2407:ab00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2407:ab80::,2407:ab80:ffff:ffff:ffff:ffff:ffff:ffff,ID
2407:ac00::,2407:ac00:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2407:ac80::,2407:ac80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2407:ad00::,2407:ad00:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2407:ad80::,2407:ad80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:ae00::,2407:ae00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2407:ae80::,2407:ae80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:af00::,2407:af00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2407:af80::,2407:af80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:b000::,2407:b001:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2407:b080::,2407:b080:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:b100::,2407:b100:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2407:b180::,2407:b180:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:b200::,2407:b200:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2407:b280::,2407:b280:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2407:b380::,2407:b380:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:b400::,2407:b400:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2407:b480::,2407:b480:ffff:ffff:ffff:ffff:ffff:ffff,US
2407:b500::,2407:b500:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2407:b580::,2407:b580:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:b600::,2407:b600:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2407:b680::,2407:b680:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:b700::,2407:b700:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2407:b780::,2407:b780:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:b800::,2407:b800:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2407:b880::,2407:b880:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:b900::,2407:b900:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2407:b980::,2407:b980:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:ba00::,2407:ba00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2407:ba80::,2407:ba80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:bb00::,2407:bb00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2407:bb80::,2407:bb80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:bc00::,2407:bc00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2407:bc80::,2407:bc80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:bd00::,2407:bd00:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2407:bd80::,2407:bd80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:be00::,2407:be00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2407:be80::,2407:be80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:bf00::,2407:bf00:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2407:bf80::,2407:bf80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:c000::,2407:c000:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2407:c080::,2407:c080:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:c100::,2407:c100:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2407:c180::,2407:c180:ffff:ffff:ffff:ffff:ffff:ffff,KH
2407:c200::,2407:c200:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2407:c280::,2407:c280:ffff:ffff:ffff:ffff:ffff:ffff,AU
2407:c300::,2407:c300:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2407:c380::,2407:c380:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:c400::,2407:c400:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2407:c480::,2407:c480:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:c500::,2407:c500:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2407:c580::,2407:c580:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:c600::,2407:c600:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2407:c680::,2407:c680:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:c700::,2407:c700:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2407:c780::,2407:c780:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:c800::,2407:c800:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2407:c880::,2407:c880:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:c900::,2407:c900:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2407:c980::,2407:c980:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:ca00::,2407:ca00:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2407:ca80::,2407:ca80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2407:cb00::,2407:cb00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2407:cb80::,2407:cb80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:cc00::,2407:cc00:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2407:cc80::,2407:cc80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:cd00::,2407:cd00:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2407:cd80::,2407:cd80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:ce00::,2407:ce00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2407:ce80::,2407:ce80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:cf00::,2407:cf00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2407:cf80::,2407:cf80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:d000::,2407:d000:ffff:ffff:ffff:ffff:ffff:ffff,PK
+2407:d080::,2407:d080:ffff:ffff:ffff:ffff:ffff:ffff,AU
2407:d100::,2407:d100:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2407:d180::,2407:d180:ffff:ffff:ffff:ffff:ffff:ffff,ID
2407:d200::,2407:d200:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2407:d280::,2407:d280:ffff:ffff:ffff:ffff:ffff:ffff,BD
2407:d300::,2407:d300:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2407:d380::,2407:d380:ffff:ffff:ffff:ffff:ffff:ffff,BD
2407:d400::,2407:d400:ffff:ffff:ffff:ffff:ffff:ffff,NP
+2407:d480::,2407:d480:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:d500::,2407:d500:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2407:d580::,2407:d580:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:d600::,2407:d600:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2407:d680::,2407:d680:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:d700::,2407:d700:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2407:d780::,2407:d780:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:d800::,2407:d800:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2407:d880::,2407:d880:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:d900::,2407:d900:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2407:d980::,2407:d980:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:da00::,2407:da00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2407:da80::,2407:da80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:db00::,2407:db00:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2407:db80::,2407:db80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:dc00::,2407:dc00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2407:dc80::,2407:dc80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2407:dd80::,2407:dd80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:de00::,2407:de00:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2407:de80::,2407:de80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:df00::,2407:df00:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2407:df80::,2407:df80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:e000::,2407:e000:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2407:e080::,2407:e080:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:e100::,2407:e100:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2407:e180::,2407:e180:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:e200::,2407:e200:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2407:e280::,2407:e280:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:e300::,2407:e301:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2407:e380::,2407:e380:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:e400::,2407:e400:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2407:e480::,2407:e480:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:e500::,2407:e501:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2407:e580::,2407:e580:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:e600::,2407:e600:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2407:e680::,2407:e680:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:e700::,2407:e700:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2407:e780::,2407:e780:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:e800::,2407:e800:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2407:e880::,2407:e880:ffff:ffff:ffff:ffff:ffff:ffff,IN
2407:e900:1::,2407:e900:1:7fff:ffff:ffff:ffff:ffff,IN
+2407:e980::,2407:e980:ffff:ffff:ffff:ffff:ffff:ffff,BD
2407:ea00::,2407:ea00:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2407:ea80::,2407:ea80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:eb00::,2407:eb00:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2407:eb80::,2407:eb80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:ec00::,2407:ec00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2407:ec80::,2407:ec80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:ed00::,2407:ed00:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2407:ed80::,2407:ed80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:ee00::,2407:ee00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2407:ee80::,2407:ee80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:ef00::,2407:ef00:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2407:ef80::,2407:ef80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:f000::,2407:f000:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2407:f080::,2407:f080:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:f100::,2407:f100:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2407:f180::,2407:f180:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:f200::,2407:f200:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2407:f280::,2407:f280:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:f300::,2407:f300:ffff:ffff:ffff:ffff:ffff:ffff,MM
+2407:f380::,2407:f380:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:f400::,2407:f400:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2407:f480::,2407:f480:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2407:f580::,2407:f580:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:f600::,2407:f600:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2407:f680::,2407:f680:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:f700::,2407:f700:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2407:f780::,2407:f780:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:f800::,2407:f800:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2407:f880::,2407:f880:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:f900::,2407:f900:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2407:f980::,2407:f980:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:fa00::,2407:fa00:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2407:fa80::,2407:fa80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2407:fb80::,2407:fb80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2407:fc80::,2407:fc80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:fd00::,2407:fd00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2407:fd80::,2407:fd80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:fe00::,2407:fe00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2407:fe80::,2407:fe80:ffff:ffff:ffff:ffff:ffff:ffff,BD
2407:ff00::,2407:ff00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2407:ff80::,2407:ff80:ffff:ffff:ffff:ffff:ffff:ffff,BD
2408::,2408:3ff:ffff:ffff:ffff:ffff:ffff:ffff,JP
2408:4000::,2408:43ff:ffff:ffff:ffff:ffff:ffff:ffff,CN
2408:8000::,2408:8fff:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -9504,7 +9965,33 @@
2600:1b00::,2600:1bff:ffff:ffff:ffff:ffff:ffff:ffff,JM
2600:1d00::,2600:1d0f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:1e00::,2600:1e0f:ffff:ffff:ffff:ffff:ffff:ffff,VC
-2600:1f00::,2600:200f:ffff:ffff:ffff:ffff:ffff:ffff,US
+2600:1f00::,2600:1f00:fff:ffff:ffff:ffff:ffff:ffff,US
+2600:1f00:1000::,2600:1f00:10ff:ffff:ffff:ffff:ffff:ffff,CA
+2600:1f00:1100::,2600:1f00:dfff:ffff:ffff:ffff:ffff:ffff,US
+2600:1f00:e000::,2600:1f00:e0ff:ffff:ffff:ffff:ffff:ffff,BR
+2600:1f00:e100::,2600:1f10:ffff:ffff:ffff:ffff:ffff:ffff,US
+2600:1f11::,2600:1f11:fff:ffff:ffff:ffff:ffff:ffff,CA
+2600:1f11:1000::,2600:1f1d:ffff:ffff:ffff:ffff:ffff:ffff,US
+2600:1f1e::,2600:1f1e:fff:ffff:ffff:ffff:ffff:ffff,BR
+2600:1f1e:1000::,2600:1fa0:103f:ffff:ffff:ffff:ffff:ffff,US
+2600:1fa0:1040::,2600:1fa0:104f:ffff:ffff:ffff:ffff:ffff,CA
+2600:1fa0:1050::,2600:1fa0:107f:ffff:ffff:ffff:ffff:ffff,US
+2600:1fa0:1080::,2600:1fa0:108f:ffff:ffff:ffff:ffff:ffff,CA
+2600:1fa0:1090::,2600:1fa0:10bf:ffff:ffff:ffff:ffff:ffff,US
+2600:1fa0:10c0::,2600:1fa0:10cf:ffff:ffff:ffff:ffff:ffff,CA
+2600:1fa0:10d0::,2600:1fa0:e01f:ffff:ffff:ffff:ffff:ffff,US
+2600:1fa0:e020::,2600:1fa0:e02f:ffff:ffff:ffff:ffff:ffff,BR
+2600:1fa0:e030::,2600:1fa0:e03f:ffff:ffff:ffff:ffff:ffff,US
+2600:1fa0:e040::,2600:1fa0:e04f:ffff:ffff:ffff:ffff:ffff,BR
+2600:1fa0:e050::,2600:1fa0:e07f:ffff:ffff:ffff:ffff:ffff,US
+2600:1fa0:e080::,2600:1fa0:e08f:ffff:ffff:ffff:ffff:ffff,BR
+2600:1fa0:e090::,2600:1fa0:e0bf:ffff:ffff:ffff:ffff:ffff,US
+2600:1fa0:e0c0::,2600:1fa0:e0cf:ffff:ffff:ffff:ffff:ffff,BR
+2600:1fa0:e0d0::,2600:1ffc:fff:ffff:ffff:ffff:ffff:ffff,US
+2600:1ffc:1000::,2600:1ffc:10ff:ffff:ffff:ffff:ffff:ffff,CA
+2600:1ffc:1100::,2600:1ffc:dfff:ffff:ffff:ffff:ffff:ffff,US
+2600:1ffc:e000::,2600:1ffc:e0ff:ffff:ffff:ffff:ffff:ffff,BR
+2600:1ffc:e100::,2600:200f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:2100::,2600:210f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:2200::,2600:220f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:2300::,2600:230f:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -9513,6 +10000,7 @@
2600:2600::,2600:260f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:2700::,2600:270f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:2800::,2600:2803:ffff:ffff:ffff:ffff:ffff:ffff,US
+2600:2900::,2600:290f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:2c00::,2600:2c03:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:3000::,2600:3007:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:3400::,2600:340f:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -9552,6 +10040,12 @@
2602:233::,2602:233:ffff:ffff:ffff:ffff:ffff:ffff,US
2602:240::,2602:25f:ffff:ffff:ffff:ffff:ffff:ffff,US
2602:300::,2602:3ff:ffff:ffff:ffff:ffff:ffff:ffff,US
+2602:ff1c::,2602:ff1c:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ff1d::,2602:ff1d:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ff1e::,2602:ff1e:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ff1f::,2602:ff1f:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ff20::,2602:ff20:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ff21::,2602:ff21:fff:ffff:ffff:ffff:ffff:ffff,CA
2602:ff22::,2602:ff22:fff:ffff:ffff:ffff:ffff:ffff,CA
2602:ff23::,2602:ff23:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff24::,2602:ff24:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -9614,7 +10108,6 @@
2602:ff5d::,2602:ff5d:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff5e::,2602:ff5e:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff5f::,2602:ff5f:fff:ffff:ffff:ffff:ffff:ffff,US
-2602:ff60::,2602:ff60:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff61::,2602:ff61:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff62::,2602:ff62:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff63::,2602:ff63:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -9641,7 +10134,6 @@
2602:ff7a::,2602:ff7b:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff7c::,2602:ff7c:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff7d::,2602:ff7d:fff:ffff:ffff:ffff:ffff:ffff,US
-2602:ff7e::,2602:ff7e:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff7f::,2602:ff7f:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff80::,2602:ff80:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff81::,2602:ff81:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -9712,7 +10204,9 @@
2602:ffc2::,2602:ffc2:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ffc3::,2602:ffc3:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ffc4::,2602:ffc4:fff:ffff:ffff:ffff:ffff:ffff,US
-2602:ffc5::,2602:ffc6:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ffc5::,2602:ffc5:104:ffff:ffff:ffff:ffff:ffff,US
+2602:ffc5:105::,2602:ffc5:105:ffff:ffff:ffff:ffff:ffff,CA
+2602:ffc5:106::,2602:ffc6:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ffc7::,2602:ffc7:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ffc8::,2602:ffc9:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ffca::,2602:ffca:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -9801,8 +10295,8 @@
2603:1026:2b::,2603:1026:2b:ffff:ffff:ffff:ffff:ffff,FI
2603:1026:2c::,2603:1026:2d:ffff:ffff:ffff:ffff:ffff,IE
2603:1026:2e::,2603:1026:1ff:ffff:ffff:ffff:ffff:ffff,US
-2603:1026:200::,2603:1026:205:ffff:ffff:ffff:ffff:ffff,NL
-2603:1026:206::,2603:1026:21f:ffff:ffff:ffff:ffff:ffff,US
+2603:1026:200::,2603:1026:206:ffff:ffff:ffff:ffff:ffff,NL
+2603:1026:207::,2603:1026:21f:ffff:ffff:ffff:ffff:ffff,US
2603:1026:220::,2603:1026:224:ffff:ffff:ffff:ffff:ffff,NL
2603:1026:225::,2603:1026:227:ffff:ffff:ffff:ffff:ffff,US
2603:1026:228::,2603:1026:22b:ffff:ffff:ffff:ffff:ffff,NL
@@ -9821,8 +10315,8 @@
2603:1026:801::,2603:1026:81f:ffff:ffff:ffff:ffff:ffff,US
2603:1026:820::,2603:1026:828:ffff:ffff:ffff:ffff:ffff,GB
2603:1026:829::,2603:1026:fff:ffff:ffff:ffff:ffff:ffff,US
-2603:1026:1000::,2603:1026:1000:ffff:ffff:ffff:ffff:ffff,IE
-2603:1026:1001::,2603:1029:2ff:ffff:ffff:ffff:ffff:ffff,US
+2603:1026:1000::,2603:1026:1001:ffff:ffff:ffff:ffff:ffff,IE
+2603:1026:1002::,2603:1029:2ff:ffff:ffff:ffff:ffff:ffff,US
2603:1029:300::,2603:1029:300:ffff:ffff:ffff:ffff:ffff,AT
2603:1029:301::,2603:1029:3ff:ffff:ffff:ffff:ffff:ffff,US
2603:1029:400::,2603:1029:404:ffff:ffff:ffff:ffff:ffff,IE
@@ -9892,11 +10386,13 @@
2603:1046:900::,2603:1046:900:ffff:ffff:ffff:ffff:ffff,IN
2603:1046:901::,2603:1047:ff:ffff:ffff:ffff:ffff:ffff,US
2603:1047:100::,2603:1047:100:ffff:ffff:ffff:ffff:ffff,SG
-2603:1047:101::,2603:1048:ffff:ffff:ffff:ffff:ffff:ffff,US
+2603:1047:101::,2603:1047:1ff:ffff:ffff:ffff:ffff:ffff,US
+2603:1047:200::,2603:1047:200:ffff:ffff:ffff:ffff:ffff,HK
+2603:1047:201::,2603:1048:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:1049::,2603:1049:3:ffff:ffff:ffff:ffff:ffff,SG
2603:1049:4::,2603:1049:1ff:ffff:ffff:ffff:ffff:ffff,US
-2603:1049:200::,2603:1049:201:ffff:ffff:ffff:ffff:ffff,HK
-2603:1049:202::,2603:1049:3ff:ffff:ffff:ffff:ffff:ffff,US
+2603:1049:200::,2603:1049:202:ffff:ffff:ffff:ffff:ffff,HK
+2603:1049:203::,2603:1049:3ff:ffff:ffff:ffff:ffff:ffff,US
2603:1049:400::,2603:1049:401:ffff:ffff:ffff:ffff:ffff,JP
2603:1049:402::,2603:1049:5ff:ffff:ffff:ffff:ffff:ffff,US
2603:1049:600::,2603:1049:601:ffff:ffff:ffff:ffff:ffff,JP
@@ -9911,20 +10407,20 @@
2603:1050:1::,2603:1050:20f:ffff:ffff:ffff:ffff:ffff,US
2603:1050:210::,2603:1050:210:ffff:ffff:ffff:ffff:ffff,CL
2603:1050:211::,2603:1055:ffff:ffff:ffff:ffff:ffff:ffff,US
-2603:1056::,2603:1056::ffff:ffff:ffff:ffff:ffff,BR
-2603:1056:1::,2603:1056:1f:ffff:ffff:ffff:ffff:ffff,US
+2603:1056::,2603:1056:1:ffff:ffff:ffff:ffff:ffff,BR
+2603:1056:2::,2603:1056:1f:ffff:ffff:ffff:ffff:ffff,US
2603:1056:20::,2603:1056:20:ffff:ffff:ffff:ffff:ffff,BR
2603:1056:21::,2603:1056:27:ffff:ffff:ffff:ffff:ffff,US
2603:1056:28::,2603:1056:28:ffff:ffff:ffff:ffff:ffff,BR
2603:1056:29::,2603:1056:1ff:ffff:ffff:ffff:ffff:ffff,US
-2603:1056:200::,2603:1056:201:ffff:ffff:ffff:ffff:ffff,BR
-2603:1056:202::,2603:1056:3ff:ffff:ffff:ffff:ffff:ffff,US
+2603:1056:200::,2603:1056:202:ffff:ffff:ffff:ffff:ffff,BR
+2603:1056:203::,2603:1056:3ff:ffff:ffff:ffff:ffff:ffff,US
2603:1056:400::,2603:1056:402:ffff:ffff:ffff:ffff:ffff,BR
2603:1056:403::,2603:1056:40f:ffff:ffff:ffff:ffff:ffff,US
2603:1056:410::,2603:1056:41f:ffff:ffff:ffff:ffff:ffff,BR
2603:1056:420::,2603:1056:5ff:ffff:ffff:ffff:ffff:ffff,US
-2603:1056:600::,2603:1056:600:ffff:ffff:ffff:ffff:ffff,CL
-2603:1056:601::,2603:1058:f:ffff:ffff:ffff:ffff:ffff,US
+2603:1056:600::,2603:1056:601:ffff:ffff:ffff:ffff:ffff,CL
+2603:1056:602::,2603:1058:f:ffff:ffff:ffff:ffff:ffff,US
2603:1058:10::,2603:1058:1f:ffff:ffff:ffff:ffff:ffff,CL
2603:1058:20::,2603:1058:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:1059::,2603:1059::ffff:ffff:ffff:ffff:ffff,BR
@@ -9935,6 +10431,7 @@
2603:2000::,2603:30ff:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:4000::,2603:40ff:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:5000::,2603:50ff:ffff:ffff:ffff:ffff:ffff:ffff,US
+2603:6000::,2603:60ff:ffff:ffff:ffff:ffff:ffff:ffff,US
2604::,2604::ffff:ffff:ffff:ffff:ffff:ffff,US
2604:10::,2604:10:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:100::,2604:100:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -10066,7 +10563,6 @@
2604:4200::,2604:4200:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:4280::,2604:4280:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:4300::,2604:4300:ffff:ffff:ffff:ffff:ffff:ffff,US
-2604:4380::,2604:4380:ffff:ffff:ffff:ffff:ffff:ffff,GD
2604:4400::,2604:4400:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:4480::,2604:4480:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:4500::,2604:4500:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -10965,6 +11461,7 @@
2606:1100::,2606:1100:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:1180::,2606:1180:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:1200::,2606:1200:ffff:ffff:ffff:ffff:ffff:ffff,US
+2606:1280::,2606:1280:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:1300::,2606:1300:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:1380::,2606:1380:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:1400::,2606:1400:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -11865,36 +12362,69 @@
2607:bf00::,2607:bf00:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:bf80::,2607:bf80:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:c000::,2607:c000:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2607:c080::,2607:c080:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:c100::,2607:c100:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:c180::,2607:c180:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:c200::,2607:c200:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:c280::,2607:c280:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:c300::,2607:c300:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:c380::,2607:c380:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:c400::,2607:c400:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:c480::,2607:c480:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:c500::,2607:c500:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:c580::,2607:c580:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:c600::,2607:c600:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:c680::,2607:c680:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:c700::,2607:c700:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:c780::,2607:c780:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:c800::,2607:c800:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:c880::,2607:c880:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:c980::,2607:c980:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:ca00::,2607:ca00:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2607:ca80::,2607:ca80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:cb00::,2607:cb00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:cb80::,2607:cb80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:cc00::,2607:cc00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:cc80::,2607:cc80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:cd00::,2607:cd00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:cd80::,2607:cd80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:ce00::,2607:ce00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:ce80::,2607:ce80:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:cf00::,2607:cf03:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:cf80::,2607:cf80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:d000::,2607:d000:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:d080::,2607:d080:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:d100::,2607:d100:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:d180::,2607:d180:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:d200::,2607:d200:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:d280::,2607:d280:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:d300::,2607:d300:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:d380::,2607:d380:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:d400::,2607:d400:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:d480::,2607:d480:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:d500::,2607:d500:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2607:d580::,2607:d580:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:d600::,2607:d600:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:d680::,2607:d680:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:d700::,2607:d700:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2607:d780::,2607:d780:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:d800::,2607:d800:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:d880::,2607:d880:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:d900::,2607:d900:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:d980::,2607:d980:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:da00::,2607:da00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:da80::,2607:da80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:db80::,2607:db80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:dc00::,2607:dc00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:dc80::,2607:dc80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:dd00::,2607:dd00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:dd80::,2607:dd80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:de00::,2607:de00:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2607:de80::,2607:de80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:df00::,2607:df00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:df80::,2607:df80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:e000::,2607:e000:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:e080::,2607:e080:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:e100::,2607:e100:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:e200::,2607:e200:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:e300::,2607:e300:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -12632,7 +13162,9 @@
2620:0:1052::,2620::1052:7fff:ffff:ffff:ffff:ffff,IE
2620:0:1052:8000::,2620::1052:ffff:ffff:ffff:ffff:ffff,US
2620:0:1053::,2620::1053:7fff:ffff:ffff:ffff:ffff,FR
-2620:0:1053:8000::,2620::105e:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1053:8000::,2620::1054:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1055::,2620::1055:ffff:ffff:ffff:ffff:ffff,BE
+2620:0:1056::,2620::105e:ffff:ffff:ffff:ffff:ffff,US
2620:0:105f::,2620::105f:ffff:ffff:ffff:ffff:ffff,CH
2620:0:1060::,2620::1068:ffff:ffff:ffff:ffff:ffff,US
2620:0:1069::,2620::1069:7fff:ffff:ffff:ffff:ffff,PL
@@ -12814,9 +13346,7 @@
2620:b::,2620:b::ffff:ffff:ffff:ffff:ffff,US
2620:b:2000::,2620:b:2000:ffff:ffff:ffff:ffff:ffff,US
2620:b:4000::,2620:b:4000:ffff:ffff:ffff:ffff:ffff,US
-2620:b:6000::,2620:b:6000:ffff:ffff:ffff:ffff:ffff,US
2620:b:8000::,2620:b:8000:ffff:ffff:ffff:ffff:ffff,US
-2620:b:a000::,2620:b:a000:ffff:ffff:ffff:ffff:ffff,US
2620:b:c000::,2620:b:c000:ffff:ffff:ffff:ffff:ffff,US
2620:b:e000::,2620:b:e000:ffff:ffff:ffff:ffff:ffff,CA
2620:c::,2620:c:f:ffff:ffff:ffff:ffff:ffff,US
@@ -12826,14 +13356,23 @@
2620:c:8000::,2620:c:8000:ffff:ffff:ffff:ffff:ffff,US
2620:c:a000::,2620:c:a000:ffff:ffff:ffff:ffff:ffff,US
2620:c:c000::,2620:c:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:c:e000::,2620:c:e000:ffff:ffff:ffff:ffff:ffff,US
2620:d::,2620:d::ffff:ffff:ffff:ffff:ffff,US
+2620:d:2000::,2620:d:2000:ffff:ffff:ffff:ffff:ffff,US
2620:d:4000::,2620:d:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:d:6000::,2620:d:6000:ffff:ffff:ffff:ffff:ffff,US
2620:d:8000::,2620:d:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d:a000::,2620:d:a000:ffff:ffff:ffff:ffff:ffff,US
2620:d:c000::,2620:d:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:d:e000::,2620:d:e000:ffff:ffff:ffff:ffff:ffff,US
2620:e::,2620:e::ffff:ffff:ffff:ffff:ffff,US
+2620:e:2000::,2620:e:2000:ffff:ffff:ffff:ffff:ffff,US
2620:e:4000::,2620:e:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:e:6000::,2620:e:6000:ffff:ffff:ffff:ffff:ffff,US
2620:e:8000::,2620:e:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e:a000::,2620:e:a000:ffff:ffff:ffff:ffff:ffff,US
2620:e:c000::,2620:e:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:e:e000::,2620:e:e000:ffff:ffff:ffff:ffff:ffff,US
2620:f::,2620:f:f:ffff:ffff:ffff:ffff:ffff,US
2620:f:4000::,2620:f:4000:ffff:ffff:ffff:ffff:ffff,US
2620:f:8000::,2620:f:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -13245,7 +13784,6 @@
2620:78:8000::,2620:78:8000:ffff:ffff:ffff:ffff:ffff,US
2620:78:c000::,2620:78:c000:ffff:ffff:ffff:ffff:ffff,CA
2620:79::,2620:79:f:ffff:ffff:ffff:ffff:ffff,US
-2620:79:4000::,2620:79:4000:ffff:ffff:ffff:ffff:ffff,US
2620:79:8000::,2620:79:8000:ffff:ffff:ffff:ffff:ffff,US
2620:79:c000::,2620:79:c000:ffff:ffff:ffff:ffff:ffff,US
2620:7a::,2620:7a::ffff:ffff:ffff:ffff:ffff,US
@@ -13310,7 +13848,6 @@
2620:88:8000::,2620:88:800f:ffff:ffff:ffff:ffff:ffff,US
2620:88:c000::,2620:88:c000:ffff:ffff:ffff:ffff:ffff,US
2620:89::,2620:89::ffff:ffff:ffff:ffff:ffff,US
-2620:89:4000::,2620:89:4000:ffff:ffff:ffff:ffff:ffff,US
2620:89:8000::,2620:89:8000:ffff:ffff:ffff:ffff:ffff,US
2620:89:c000::,2620:89:c000:ffff:ffff:ffff:ffff:ffff,US
2620:8a::,2620:8a::ffff:ffff:ffff:ffff:ffff,US
@@ -13888,7 +14425,9 @@
2620:107:1000::,2620:107:100f:ffff:ffff:ffff:ffff:ffff,US
2620:107:2000::,2620:107:200f:ffff:ffff:ffff:ffff:ffff,US
2620:107:3000::,2620:107:300f:ffff:ffff:ffff:ffff:ffff,US
-2620:107:4000::,2620:107:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:107:4000::,2620:107:4000:77ff:ffff:ffff:ffff:ffff,US
+2620:107:4000:7800::,2620:107:4000:78ff:ffff:ffff:ffff:ffff,CA
+2620:107:4000:7900::,2620:107:400f:ffff:ffff:ffff:ffff:ffff,US
2620:107:5000::,2620:107:50ff:ffff:ffff:ffff:ffff:ffff,US
2620:107:6000::,2620:107:600f:ffff:ffff:ffff:ffff:ffff,US
2620:107:7000::,2620:107:700f:ffff:ffff:ffff:ffff:ffff,US
@@ -14467,6 +15006,22 @@
2620:12b::,2620:12b:f:ffff:ffff:ffff:ffff:ffff,US
2620:12b:1000::,2620:12b:10ff:ffff:ffff:ffff:ffff:ffff,US
2620:12b:2000::,2620:12b:20ff:ffff:ffff:ffff:ffff:ffff,US
+2620:12b:3000::,2620:12b:30ff:ffff:ffff:ffff:ffff:ffff,US
+2620:12b:4000::,2620:12b:40ff:ffff:ffff:ffff:ffff:ffff,US
+2620:12b:5000::,2620:12b:50ff:ffff:ffff:ffff:ffff:ffff,CA
+2620:12b:6000::,2620:12b:600f:ffff:ffff:ffff:ffff:ffff,CA
+2620:12b:7000::,2620:12b:700f:ffff:ffff:ffff:ffff:ffff,US
+2620:12b:8000::,2620:12b:80ff:ffff:ffff:ffff:ffff:ffff,US
+2620:12b:9000::,2620:12b:900f:ffff:ffff:ffff:ffff:ffff,US
+2620:12b:a000::,2620:12b:a0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:12b:b000::,2620:12b:b00f:ffff:ffff:ffff:ffff:ffff,US
+2620:12b:c000::,2620:12b:c0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:12b:d000::,2620:12b:d00f:ffff:ffff:ffff:ffff:ffff,US
+2620:12b:e000::,2620:12b:e0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:12b:f000::,2620:12b:f0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:12c::,2620:12c:f:ffff:ffff:ffff:ffff:ffff,US
+2620:12c:1000::,2620:12c:100f:ffff:ffff:ffff:ffff:ffff,US
+2620:12c:2000::,2620:12c:20ff:ffff:ffff:ffff:ffff:ffff,US
2620:140::,2620:140:3ff:ffff:ffff:ffff:ffff:ffff,US
2620:141::,2620:141:fff:ffff:ffff:ffff:ffff:ffff,US
2620:143::,2620:143:7ff:ffff:ffff:ffff:ffff:ffff,US
@@ -14542,6 +15097,7 @@
2620:1dc::,2620:1dc:fff:ffff:ffff:ffff:ffff:ffff,US
2620:1dd::,2620:1dd:fff:ffff:ffff:ffff:ffff:ffff,CA
2620:1de::,2620:1de:fff:ffff:ffff:ffff:ffff:ffff,US
+2620:1df::,2620:1df:fff:ffff:ffff:ffff:ffff:ffff,US
2620:1e0::,2620:1e1:fff:ffff:ffff:ffff:ffff:ffff,US
2620:1e2::,2620:1e2:fff:ffff:ffff:ffff:ffff:ffff,US
2620:1e3::,2620:1e3:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -14856,6 +15412,7 @@
2801:11:1000::,2801:11:1000:ffff:ffff:ffff:ffff:ffff,PY
2801:11:2000::,2801:11:2000:ffff:ffff:ffff:ffff:ffff,AR
2801:11:4000::,2801:11:4000:ffff:ffff:ffff:ffff:ffff,CO
+2801:11:5000::,2801:11:5000:ffff:ffff:ffff:ffff:ffff,CO
2801:11:6000::,2801:11:6000:ffff:ffff:ffff:ffff:ffff,AR
2801:11:8000::,2801:11:8000:ffff:ffff:ffff:ffff:ffff,CO
2801:11:9000::,2801:11:9000:ffff:ffff:ffff:ffff:ffff,CO
@@ -14876,6 +15433,7 @@
2801:13:1000::,2801:13:1000:ffff:ffff:ffff:ffff:ffff,AR
2801:13:2000::,2801:13:2000:ffff:ffff:ffff:ffff:ffff,AR
2801:13:4000::,2801:13:4000:ffff:ffff:ffff:ffff:ffff,CL
+2801:13:5000::,2801:13:5000:ffff:ffff:ffff:ffff:ffff,AR
2801:13:6000::,2801:13:6000:ffff:ffff:ffff:ffff:ffff,GT
2801:13:8000::,2801:13:8000:ffff:ffff:ffff:ffff:ffff,SV
2801:13:9000::,2801:13:9000:ffff:ffff:ffff:ffff:ffff,AR
@@ -14897,6 +15455,7 @@
2801:15:1000::,2801:15:1000:ffff:ffff:ffff:ffff:ffff,SV
2801:15:2000::,2801:15:2000:ffff:ffff:ffff:ffff:ffff,CR
2801:15:4000::,2801:15:4000:ffff:ffff:ffff:ffff:ffff,CO
+2801:15:5000::,2801:15:5000:ffff:ffff:ffff:ffff:ffff,CO
2801:15:6000::,2801:15:6000:ffff:ffff:ffff:ffff:ffff,SV
2801:15:8000::,2801:15:8000:ffff:ffff:ffff:ffff:ffff,CR
2801:15:9000::,2801:15:9000:ffff:ffff:ffff:ffff:ffff,AR
@@ -14908,6 +15467,7 @@
2801:16:1000::,2801:16:1000:ffff:ffff:ffff:ffff:ffff,AR
2801:16:2000::,2801:16:2000:ffff:ffff:ffff:ffff:ffff,HN
2801:16:4000::,2801:16:4000:ffff:ffff:ffff:ffff:ffff,AR
+2801:16:5000::,2801:16:5000:ffff:ffff:ffff:ffff:ffff,CO
2801:16:6000::,2801:16:6000:ffff:ffff:ffff:ffff:ffff,AR
2801:16:8000::,2801:16:8000:ffff:ffff:ffff:ffff:ffff,CO
2801:16:9000::,2801:16:9000:ffff:ffff:ffff:ffff:ffff,BO
@@ -14929,7 +15489,7 @@
2801:18:5000::,2801:18:5000:ffff:ffff:ffff:ffff:ffff,CO
2801:18:6000::,2801:18:6000:ffff:ffff:ffff:ffff:ffff,AR
2801:18:8000::,2801:18:8000:ffff:ffff:ffff:ffff:ffff,AR
-2801:18:9000::,2801:18:9000:ffff:ffff:ffff:ffff:ffff,CO
+2801:18:9000::,2801:18:900f:ffff:ffff:ffff:ffff:ffff,CO
2801:18:a000::,2801:18:a000:ffff:ffff:ffff:ffff:ffff,BO
2801:18:c000::,2801:18:c000:ffff:ffff:ffff:ffff:ffff,AR
2801:18:e000::,2801:18:e000:ffff:ffff:ffff:ffff:ffff,DO
@@ -14937,6 +15497,7 @@
2801:19:1000::,2801:19:1000:ffff:ffff:ffff:ffff:ffff,PA
2801:19:2000::,2801:19:2000:ffff:ffff:ffff:ffff:ffff,CL
2801:19:4000::,2801:19:4000:ffff:ffff:ffff:ffff:ffff,PY
+2801:19:5000::,2801:19:5000:ffff:ffff:ffff:ffff:ffff,CO
2801:19:6000::,2801:19:6000:ffff:ffff:ffff:ffff:ffff,CW
2801:19:8000::,2801:19:8000:ffff:ffff:ffff:ffff:ffff,EC
2801:19:9000::,2801:19:9000:ffff:ffff:ffff:ffff:ffff,AR
@@ -14958,6 +15519,7 @@
2801:1b:1000::,2801:1b:1000:ffff:ffff:ffff:ffff:ffff,CL
2801:1b:2000::,2801:1b:2000:ffff:ffff:ffff:ffff:ffff,UY
2801:1b:4000::,2801:1b:4000:ffff:ffff:ffff:ffff:ffff,CL
+2801:1b:5000::,2801:1b:5000:ffff:ffff:ffff:ffff:ffff,AR
2801:1b:6000::,2801:1b:6000:ffff:ffff:ffff:ffff:ffff,CL
2801:1b:8000::,2801:1b:8000:ffff:ffff:ffff:ffff:ffff,CL
2801:1b:9000::,2801:1b:9000:ffff:ffff:ffff:ffff:ffff,CL
@@ -14978,6 +15540,7 @@
2801:1d:1000::,2801:1d:1000:ffff:ffff:ffff:ffff:ffff,AR
2801:1d:2000::,2801:1d:2000:ffff:ffff:ffff:ffff:ffff,GT
2801:1d:4000::,2801:1d:4000:ffff:ffff:ffff:ffff:ffff,TT
+2801:1d:5000::,2801:1d:5000:ffff:ffff:ffff:ffff:ffff,AR
2801:1d:6000::,2801:1d:6000:ffff:ffff:ffff:ffff:ffff,NI
2801:1d:8000::,2801:1d:8000:ffff:ffff:ffff:ffff:ffff,AR
2801:1d:9000::,2801:1d:9000:ffff:ffff:ffff:ffff:ffff,CO
@@ -14988,6 +15551,7 @@
2801:1e:1000::,2801:1e:1000:ffff:ffff:ffff:ffff:ffff,AR
2801:1e:2000::,2801:1e:2000:ffff:ffff:ffff:ffff:ffff,AR
2801:1e:4000::,2801:1e:4007:ffff:ffff:ffff:ffff:ffff,AR
+2801:1e:5000::,2801:1e:5000:ffff:ffff:ffff:ffff:ffff,EC
2801:1e:6000::,2801:1e:6000:ffff:ffff:ffff:ffff:ffff,CO
2801:1e:8000::,2801:1e:8000:ffff:ffff:ffff:ffff:ffff,CR
2801:1e:9000::,2801:1e:9000:ffff:ffff:ffff:ffff:ffff,SV
@@ -15233,7 +15797,6 @@
2801:80:f20::,2801:80:f20:ffff:ffff:ffff:ffff:ffff,BR
2801:80:f30::,2801:80:f30:ffff:ffff:ffff:ffff:ffff,BR
2801:80:f40::,2801:80:f4f:ffff:ffff:ffff:ffff:ffff,BR
-2801:80:f60::,2801:80:f60:ffff:ffff:ffff:ffff:ffff,BR
2801:80:f70::,2801:80:f70:ffff:ffff:ffff:ffff:ffff,BR
2801:80:f80::,2801:80:f8f:ffff:ffff:ffff:ffff:ffff,BR
2801:80:fa0::,2801:80:faf:ffff:ffff:ffff:ffff:ffff,BR
@@ -15316,6 +15879,12 @@
2801:80:1a70::,2801:80:1a70:ffff:ffff:ffff:ffff:ffff,BR
2801:80:1a80::,2801:80:1a80:ffff:ffff:ffff:ffff:ffff,BR
2801:80:1a90::,2801:80:1a90:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:1aa0::,2801:80:1aa0:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:1ab0::,2801:80:1ab0:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:1ac0::,2801:80:1ac0:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:1ad0::,2801:80:1ad1:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:1ae0::,2801:80:1ae0:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:1af0::,2801:80:1af0:ffff:ffff:ffff:ffff:ffff,BR
2801:82::,2801:82:ffff:ffff:ffff:ffff:ffff:ffff,BR
2801:84::,2801:84:ffff:ffff:ffff:ffff:ffff:ffff,BR
2801:86::,2801:86:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -15352,6 +15921,7 @@
2801:c4:10::,2801:c4:10:ffff:ffff:ffff:ffff:ffff,MX
2801:c4:12::,2801:c4:12:ffff:ffff:ffff:ffff:ffff,MX
2801:c4:14::,2801:c4:15:ffff:ffff:ffff:ffff:ffff,MX
+2801:c4:17::,2801:c4:17:ffff:ffff:ffff:ffff:ffff,MX
2801:c4:20::,2801:c4:20:ffff:ffff:ffff:ffff:ffff,MX
2801:c4:30::,2801:c4:30:ffff:ffff:ffff:ffff:ffff,MX
2801:c4:40::,2801:c4:40:ffff:ffff:ffff:ffff:ffff,MX
@@ -15368,6 +15938,7 @@
2801:f0:20::,2801:f0:20:ffff:ffff:ffff:ffff:ffff,MX
2801:f0:28::,2801:f0:28:ffff:ffff:ffff:ffff:ffff,MX
2801:100::,2801:100:ff:ffff:ffff:ffff:ffff:ffff,AR
+2801:104::,2801:104:ff:ffff:ffff:ffff:ffff:ffff,BO
2801:108::,2801:108:f:ffff:ffff:ffff:ffff:ffff,CO
2801:110::,2801:110:1fff:ffff:ffff:ffff:ffff:ffff,CO
2801:118::,2801:118:ff:ffff:ffff:ffff:ffff:ffff,AR
@@ -15382,7 +15953,9 @@
2801:160::,2801:160:ff:ffff:ffff:ffff:ffff:ffff,CO
2801:168::,2801:168:ff:ffff:ffff:ffff:ffff:ffff,AR
2801:170::,2801:170:fff:ffff:ffff:ffff:ffff:ffff,CO
+2801:178::,2801:178:1fff:ffff:ffff:ffff:ffff:ffff,CO
2801:180::,2801:180:f:ffff:ffff:ffff:ffff:ffff,PA
+2801:184::,2801:184:f:ffff:ffff:ffff:ffff:ffff,DO
2801:188::,2801:188:ff:ffff:ffff:ffff:ffff:ffff,AR
2801:190::,2801:190:fff:ffff:ffff:ffff:ffff:ffff,CO
2801:198::,2801:198:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -15397,6 +15970,7 @@
2801:1e0::,2801:1e0:7f:ffff:ffff:ffff:ffff:ffff,AR
2801:1e8::,2801:1e8:ff:ffff:ffff:ffff:ffff:ffff,AR
2801:1f0::,2801:1f0:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2801:1f8::,2801:1f8:f:ffff:ffff:ffff:ffff:ffff,CO
2802::,2802:2:9fff:ffff:ffff:ffff:ffff:ffff,CO
2802:2:a000::,2802:2:afff:ffff:ffff:ffff:ffff:ffff,BR
2802:2:b000::,2802:2:ffff:ffff:ffff:ffff:ffff:ffff,CO
@@ -15426,6 +16000,7 @@
2803:400::,2803:400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:440::,2803:440:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:480::,2803:480:ffff:ffff:ffff:ffff:ffff:ffff,EC
+2803:4c0::,2803:4c0:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:500::,2803:500:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:540::,2803:540:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:580::,2803:580:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -15451,6 +16026,7 @@
2803:c00::,2803:c00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c40::,2803:c40:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:c80::,2803:c80:ffff:ffff:ffff:ffff:ffff:ffff,PY
+2803:cc0::,2803:cc0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:d00::,2803:d00:ffff:ffff:ffff:ffff:ffff:ffff,GY
2803:d40::,2803:d40:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:d80::,2803:d87:ffff:ffff:ffff:ffff:ffff:ffff,CO
@@ -15479,6 +16055,7 @@
2803:1380::,2803:1380:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:1400::,2803:1400:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:1440::,2803:1440:ffff:ffff:ffff:ffff:ffff:ffff,GT
+2803:14c0::,2803:14c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1500::,2803:1500:ffff:ffff:ffff:ffff:ffff:ffff,TT
2803:1540::,2803:1540:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:1580::,2803:1580:ffff:ffff:ffff:ffff:ffff:ffff,CO
@@ -15486,7 +16063,7 @@
2803:1640::,2803:1640:ffff:ffff:ffff:ffff:ffff:ffff,NI
2803:1680::,2803:1680:ffff:ffff:ffff:ffff:ffff:ffff,GF
2803:1700::,2803:1700:ffff:ffff:ffff:ffff:ffff:ffff,AR
-2803:1740::,2803:1740:ffff:ffff:ffff:ffff:ffff:ffff,GY
+2803:1740::,2803:1740:ffff:ffff:ffff:ffff:ffff:ffff,GF
2803:1780::,2803:1780:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:1800::,2803:1800:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:1840::,2803:1840:ffff:ffff:ffff:ffff:ffff:ffff,CO
@@ -15503,6 +16080,7 @@
2803:1b80::,2803:1b80:ffff:ffff:ffff:ffff:ffff:ffff,TT
2803:1c40::,2803:1c40:ffff:ffff:ffff:ffff:ffff:ffff,NI
2803:1c80::,2803:1c80:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:1cc0::,2803:1cc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1d00::,2803:1d00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1d40::,2803:1d40:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:1d80::,2803:1d80:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -15528,6 +16106,7 @@
2803:2400::,2803:2400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2440::,2803:2440:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2480::,2803:2480:ffff:ffff:ffff:ffff:ffff:ffff,PE
+2803:24c0::,2803:24c0:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:2500::,2803:2500:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:2540::,2803:2540:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:2580::,2803:2580:ffff:ffff:ffff:ffff:ffff:ffff,HN
@@ -15553,6 +16132,7 @@
2803:2c00::,2803:2c00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2c40::,2803:2c40:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:2c80::,2803:2c80:ffff:ffff:ffff:ffff:ffff:ffff,VE
+2803:2cc0::,2803:2cc0:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:2d00::,2803:2d00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2d40::,2803:2d40:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:2d80::,2803:2d80:ffff:ffff:ffff:ffff:ffff:ffff,PA
@@ -15577,6 +16157,7 @@
2803:3400::,2803:3400:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:3440::,2803:3440:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:3480::,2803:3480:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:34c0::,2803:34c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:3500::,2803:3500:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3540::,2803:3540:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3580::,2803:3580:ffff:ffff:ffff:ffff:ffff:ffff,PE
@@ -15602,6 +16183,7 @@
2803:3c00::,2803:3c00:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:3c40::,2803:3c40:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:3c80::,2803:3c80:ffff:ffff:ffff:ffff:ffff:ffff,CL
+2803:3cc0::,2803:3cc0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:3d00::,2803:3d00:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:3d40::,2803:3d40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3d80::,2803:3d80:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -15627,6 +16209,7 @@
2803:4400::,2803:4400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4440::,2803:4440:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4480::,2803:4480:ffff:ffff:ffff:ffff:ffff:ffff,PE
+2803:44c0::,2803:44c0:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:4500::,2803:4500:ffff:ffff:ffff:ffff:ffff:ffff,CW
2803:4540::,2803:4540:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:4580::,2803:4580:ffff:ffff:ffff:ffff:ffff:ffff,CR
@@ -15651,6 +16234,7 @@
2803:4c00::,2803:4c00:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:4c40::,2803:4c40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4c80::,2803:4c80:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:4cc0::,2803:4cc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4d00::,2803:4d00:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:4d40::,2803:4d40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4d80::,2803:4d80:ffff:ffff:ffff:ffff:ffff:ffff,CW
@@ -15676,6 +16260,7 @@
2803:5400::,2803:5400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5440::,2803:5440:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5480::,2803:5480:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:54c0::,2803:54c0:ffff:ffff:ffff:ffff:ffff:ffff,GT
2803:5500::,2803:5500:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5540::,2803:5540:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5580::,2803:5580:ffff:ffff:ffff:ffff:ffff:ffff,CR
@@ -15700,6 +16285,7 @@
2803:5c00::,2803:5c00:ffff:ffff:ffff:ffff:ffff:ffff,BO
2803:5c40::,2803:5c40:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:5c80::,2803:5c80:ffff:ffff:ffff:ffff:ffff:ffff,CL
+2803:5cc0::,2803:5cc0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:5d00::,2803:5d00:ffff:ffff:ffff:ffff:ffff:ffff,SV
2803:5d40::,2803:5d40:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:5d80::,2803:5d80:ffff:ffff:ffff:ffff:ffff:ffff,BZ
@@ -15724,6 +16310,7 @@
2803:6400::,2803:6400:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:6440::,2803:6440:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6480::,2803:6480:ffff:ffff:ffff:ffff:ffff:ffff,BZ
+2803:64c0::,2803:64c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6500::,2803:6500:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:6540::,2803:6540:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6580::,2803:6580:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -15748,6 +16335,7 @@
2803:6c00::,2803:6c00:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:6c40::,2803:6c40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6c80::,2803:6c80:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:6cc0::,2803:6cc0:ffff:ffff:ffff:ffff:ffff:ffff,SV
2803:6d00::,2803:6d00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6d40::,2803:6d40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6d80::,2803:6d80:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -15773,6 +16361,7 @@
2803:7400::,2803:7400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7440::,2803:7440:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7480::,2803:7480:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:74c0::,2803:74c0:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:7500::,2803:7500:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:7540::,2803:7540:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7580::,2803:7580:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -15798,6 +16387,7 @@
2803:7c00::,2803:7c00:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:7c40::,2803:7c40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7c80::,2803:7c80:ffff:ffff:ffff:ffff:ffff:ffff,PA
+2803:7cc0::,2803:7cc0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:7d00::,2803:7d00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7d40::,2803:7d40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7d80::,2803:7d80:ffff:ffff:ffff:ffff:ffff:ffff,PY
@@ -15823,6 +16413,7 @@
2803:8400::,2803:8400:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:8440::,2803:8440:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8480::,2803:8480:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:84c0::,2803:84c0:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:8500::,2803:8500:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8540::,2803:8540:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:8580::,2803:8580:ffff:ffff:ffff:ffff:ffff:ffff,CO
@@ -15847,6 +16438,7 @@
2803:8c00::,2803:8c00:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:8c40::,2803:8c40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8c80::,2803:8c80:ffff:ffff:ffff:ffff:ffff:ffff,PA
+2803:8cc0::,2803:8cc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8d00::,2803:8d00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8d43::,2803:8d43:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:8d80::,2803:8d80:ffff:ffff:ffff:ffff:ffff:ffff,UY
@@ -15872,6 +16464,7 @@
2803:9400::,2803:9400:ffff:ffff:ffff:ffff:ffff:ffff,BO
2803:9440::,2803:9440:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9480::,2803:9480:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:94c0::,2803:94c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9500::,2803:9500:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9540::,2803:9540:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:9580::,2803:9580:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -15896,6 +16489,7 @@
2803:9c00::,2803:9c00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9c40::,2803:9c40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9c80::,2803:9c80:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:9cc0::,2803:9cc0:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:9d00::,2803:9d00:ffff:ffff:ffff:ffff:ffff:ffff,SV
2803:9d40::,2803:9d40:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:9d80::,2803:9d80:ffff:ffff:ffff:ffff:ffff:ffff,SV
@@ -15920,6 +16514,7 @@
2803:a400::,2803:a400:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:a440::,2803:a440:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:a480::,2803:a480:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:a4c0::,2803:a4c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:a500::,2803:a500:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:a540::,2803:a540:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:a580::,2803:a580:ffff:ffff:ffff:ffff:ffff:ffff,HT
@@ -15945,6 +16540,7 @@
2803:ac00::,2803:ac00:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:ac40::,2803:ac40:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:ac80::,2803:ac80:ffff:ffff:ffff:ffff:ffff:ffff,CO
+2803:acc0::,2803:acc0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:ad00::,2803:ad00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ad40::,2803:ad40:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:ad80::,2803:ad80:ffff:ffff:ffff:ffff:ffff:ffff,PA
@@ -15969,6 +16565,7 @@
2803:b400::,2803:b400:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:b440::,2803:b440:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:b480::,2803:b480:ffff:ffff:ffff:ffff:ffff:ffff,CL
+2803:b4c0::,2803:b4c0:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:b500::,2803:b500:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:b540::,2803:b540:ffff:ffff:ffff:ffff:ffff:ffff,BO
2803:b580::,2803:b580:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -15993,6 +16590,7 @@
2803:bc00::,2803:bc00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:bc40::,2803:bc40:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:bc80::,2803:bc80:ffff:ffff:ffff:ffff:ffff:ffff,CO
+2803:bcc0::,2803:bcc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:bd00::,2803:bd00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:bd40::,2803:bd40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:bd80::,2803:bd80:ffff:ffff:ffff:ffff:ffff:ffff,PA
@@ -16018,6 +16616,7 @@
2803:c400::,2803:c400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c440::,2803:c440:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c480::,2803:c480:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:c4c0::,2803:c4c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:c500::,2803:c500:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c540::,2803:c540:ffff:ffff:ffff:ffff:ffff:ffff,GT
2803:c580::,2803:c580:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -16043,6 +16642,7 @@
2803:cc00::,2803:cc00:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:cc40::,2803:cc40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:cc80::,2803:cc80:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:ccc0::,2803:ccc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:cd00::,2803:cd00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:cd40::,2803:cd40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:cd80::,2803:cd80:ffff:ffff:ffff:ffff:ffff:ffff,TT
@@ -16069,6 +16669,7 @@
2803:d400::,2803:d400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:d440::,2803:d440:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:d480::,2803:d480:ffff:ffff:ffff:ffff:ffff:ffff,VE
+2803:d4c0::,2803:d4c0:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:d500::,2803:d500:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:d540::,2803:d540:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:d580::,2803:d580:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -16094,6 +16695,7 @@
2803:dc00::,2803:dc00:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:dc40::,2803:dc40:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:dc80::,2803:dc80:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:dcc0::,2803:dcc0:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:dd00::,2803:dd00:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:dd40::,2803:dd40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:dd80::,2803:dd80:ffff:ffff:ffff:ffff:ffff:ffff,VE
@@ -16119,6 +16721,7 @@
2803:e400::,2803:e400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:e440::,2803:e440:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:e480::,2803:e480:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:e4c0::,2803:e4c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:e500::,2803:e500:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:e540::,2803:e540:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:e580::,2803:e580:ffff:ffff:ffff:ffff:ffff:ffff,CO
@@ -16144,6 +16747,7 @@
2803:ec00::,2803:ec00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ec40::,2803:ec40:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:ec80::,2803:ec80:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:ecc0::,2803:ecc0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:ed00::,2803:ed00:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:ed40::,2803:ed40:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:ed80::,2803:ed80:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -16169,6 +16773,7 @@
2803:f400::,2803:f400:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:f440::,2803:f440:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:f480::,2803:f480:ffff:ffff:ffff:ffff:ffff:ffff,CO
+2803:f4c0::,2803:f4c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:f500::,2803:f500:ffff:ffff:ffff:ffff:ffff:ffff,CW
2803:f540::,2803:f540:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:f580::,2803:f580:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -16180,6 +16785,7 @@
2803:f780::,2803:f780:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:f800::,2803:f800:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:f840::,2803:f840:ffff:ffff:ffff:ffff:ffff:ffff,CO
+2803:f8c0::,2803:f8c0:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:f900::,2803:f900:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:f940::,2803:f940:ffff:ffff:ffff:ffff:ffff:ffff,SX
2803:f980::,2803:f980:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -17366,7 +17972,6 @@
2804:1324::,2804:1324:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1328::,2804:1328:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:132c::,2804:132c:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:1330::,2804:1330:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1334::,2804:1334:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1338::,2804:1338:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:133c::,2804:133c:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -17586,7 +18191,6 @@
2804:16a0::,2804:16a0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:16a4::,2804:16a4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:16a8::,2804:16a8:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:16ac::,2804:16ac:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:16b0::,2804:16b0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:16b4::,2804:16b4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:16b8::,2804:16b8:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -19501,6 +20105,124 @@
2804:3550::,2804:3550:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:3554::,2804:3554:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:3558::,2804:3558:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:355c::,2804:355c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3560::,2804:3560:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3564::,2804:3564:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3568::,2804:3568:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:356c::,2804:356c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3570::,2804:3570:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3574::,2804:3574:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3578::,2804:3578:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:357c::,2804:357c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3580::,2804:3580:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3584::,2804:3584:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3588::,2804:3588:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:358c::,2804:358c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3590::,2804:3590:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3594::,2804:3594:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3598::,2804:3598:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:359c::,2804:359c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35a0::,2804:35a0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35a4::,2804:35a4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35a8::,2804:35a8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35ac::,2804:35ac:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35b0::,2804:35b0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35b4::,2804:35b4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35b8::,2804:35b8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35bc::,2804:35bc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35c0::,2804:35c0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35c4::,2804:35c4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35c8::,2804:35c8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35cc::,2804:35cc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35d0::,2804:35d0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35d4::,2804:35d4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35d8::,2804:35d8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35dc::,2804:35dc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35e0::,2804:35e0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35e4::,2804:35e4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35e8::,2804:35e8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35ec::,2804:35ec:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35f0::,2804:35f0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35f4::,2804:35f4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35f8::,2804:35f8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:35fc::,2804:35fc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3600::,2804:3600:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3604::,2804:3604:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3608::,2804:3608:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:360c::,2804:360c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3610::,2804:3610:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3614::,2804:3614:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3618::,2804:3618:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:361c::,2804:361c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3620::,2804:3620:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3624::,2804:3624:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3628::,2804:3628:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:362c::,2804:362c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3630::,2804:3630:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3634::,2804:3634:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3638::,2804:3638:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:363c::,2804:363c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3640::,2804:3640:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3644::,2804:3644:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3648::,2804:3648:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:364c::,2804:364c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3650::,2804:3650:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3654::,2804:3654:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3658::,2804:3658:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:365c::,2804:365c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3660::,2804:3660:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3664::,2804:3664:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3668::,2804:3668:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:366c::,2804:366c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3670::,2804:3670:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3674::,2804:3674:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3678::,2804:3678:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:367c::,2804:367c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3680::,2804:3680:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3684::,2804:3684:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3688::,2804:3688:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:368c::,2804:368c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3690::,2804:3690:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3694::,2804:3694:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3698::,2804:3698:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:369c::,2804:369c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36a0::,2804:36a0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36a4::,2804:36a4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36a8::,2804:36a8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36ac::,2804:36ac:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36b0::,2804:36b0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36b4::,2804:36b4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36b8::,2804:36b8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36bc::,2804:36bc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36c0::,2804:36c0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36c4::,2804:36c4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36c8::,2804:36c8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36cc::,2804:36cc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36d0::,2804:36d0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36d4::,2804:36d4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36d8::,2804:36d8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36dc::,2804:36dc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36e0::,2804:36e0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36e4::,2804:36e4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36e8::,2804:36e8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36ec::,2804:36ec:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36f0::,2804:36f0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36f4::,2804:36f4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36f8::,2804:36f8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:36fc::,2804:36fc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3700::,2804:3700:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3704::,2804:3704:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3708::,2804:3708:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:370c::,2804:370c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3710::,2804:3710:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3714::,2804:3714:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3718::,2804:3718:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:371c::,2804:371c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3720::,2804:3720:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3724::,2804:3724:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3728::,2804:3728:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:372c::,2804:372c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3730::,2804:3730:ffff:ffff:ffff:ffff:ffff:ffff,BR
2806::,2806:f:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:200::,2806:216::ffff:ffff:ffff:ffff:ffff,MX
2806:217::,2806:220:ffff:ffff:ffff:ffff:ffff:ffff,MX
@@ -19511,7 +20233,7 @@
2806:250::,2806:250:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:260::,2806:260:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:270::,2806:270:ffff:ffff:ffff:ffff:ffff:ffff,MX
-2806:280::,2806:283:ffff:ffff:ffff:ffff:ffff:ffff,MX
+2806:280::,2806:286:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:290::,2806:290:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:2a0::,2806:2a0:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:2b0::,2806:2b0:ffff:ffff:ffff:ffff:ffff:ffff,MX
@@ -19576,7 +20298,7 @@
2a00:d78::,2a00:d78:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:d80::,2a00:d80:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a00:d88::,2a00:d8f:ffff:ffff:ffff:ffff:ffff:ffff,AT
-2a00:d90::,2a00:d90:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a00:d90::,2a00:d97:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a00:d98::,2a00:d98:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:da8::,2a00:da9:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:db0::,2a00:db0:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -19847,7 +20569,6 @@
2a00:1630::,2a00:1637:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:1638::,2a00:1638:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a00:1640::,2a00:1640:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a00:1648::,2a00:1648:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:1650::,2a00:1650:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a00:1660::,2a00:1660:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a00:1668::,2a00:1668:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -20738,7 +21459,6 @@
2a00:87a0::,2a00:87a0:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a00:87c0::,2a00:87c0:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a00:87e0::,2a00:87e0:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a00:8800::,2a00:8800:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:8820::,2a00:8820:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a00:8840::,2a00:8840:ffff:ffff:ffff:ffff:ffff:ffff,UZ
2a00:8880::,2a00:8880:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -20901,7 +21621,6 @@
2a00:9be0::,2a00:9be0:ffff:ffff:ffff:ffff:ffff:ffff,AL
2a00:9c00::,2a00:9c00:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a00:9c20::,2a00:9c20:ffff:ffff:ffff:ffff:ffff:ffff,BE
-2a00:9c40::,2a00:9c40:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:9c60::,2a00:9c60:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:9c80::,2a00:9c80:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a00:9ca0::,2a00:9ca0:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -21381,7 +22100,7 @@
2a00:d840::,2a00:d840:ffff:ffff:ffff:ffff:ffff:ffff,SI
2a00:d860::,2a00:d860:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a00:d880::,2a00:d880:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a00:d8a0::,2a00:d8a0:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a00:d8a0::,2a00:d8a7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:d8c0::,2a00:d8c0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:d8e0::,2a00:d8e0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:d900::,2a00:d900:ffff:ffff:ffff:ffff:ffff:ffff,AT
@@ -21550,7 +22269,7 @@
2a00:ee40::,2a00:ee40:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:ee60::,2a00:ee60:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:ee80::,2a00:ee80:ffff:ffff:ffff:ffff:ffff:ffff,LB
-2a00:eea0::,2a00:eea0:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a00:eea0::,2a00:eea7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:eec0::,2a00:eec0:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a00:eee0::,2a00:eee0:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a00:ef00::,2a00:ef00:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -21689,8 +22408,7 @@
2a00:ffc0::,2a00:ffc0:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a00:ffe0::,2a00:ffe0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01::,2a01::ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a01:8::,2a01:8:ffff:ffff:ffff:ffff:ffff:ffff,PT
-2a01:10::,2a01:10:ffff:ffff:ffff:ffff:ffff:ffff,PT
+2a01:8::,2a01:17:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a01:18::,2a01:18:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a01:20::,2a01:20:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a01:28::,2a01:28:ffff:ffff:ffff:ffff:ffff:ffff,CZ
@@ -21726,7 +22444,11 @@
2a01:f8::,2a01:f8:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a01:100::,2a01:100:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a01:108::,2a01:108:ffff:ffff:ffff:ffff:ffff:ffff,SK
-2a01:110::,2a01:111::c6:3fff:ffff:ffff:ffff,GB
+2a01:110::,2a01:110:9008::ffff:ffff:ffff:ffff,GB
+2a01:110:9008:1::,2a01:110:9008:8:ffff:ffff:ffff:ffff,EE
+2a01:110:9008:9::,2a01:110:a008::ffff:ffff:ffff:ffff,GB
+2a01:110:a008:1::,2a01:110:a008:8:ffff:ffff:ffff:ffff,IE
+2a01:110:a008:9::,2a01:111::c6:3fff:ffff:ffff:ffff,GB
2a01:111:0:c6:4000::,2a01:111::c6:7fff:ffff:ffff:ffff,IE
2a01:111:0:c6:8000::,2a01:111::cb:bfff:ffff:ffff:ffff,GB
2a01:111:0:cb:c000::,2a01:111::cb:ffff:ffff:ffff:ffff,US
@@ -21888,6 +22610,7 @@
2a01:3e0:3200::,2a01:3e0:3200:ff:ffff:ffff:ffff:ffff,RO
2a01:3e0:3300::,2a01:3e0:3300:ff:ffff:ffff:ffff:ffff,BG
2a01:3e0:3400::,2a01:3e0:3400:ff:ffff:ffff:ffff:ffff,HU
+2a01:3e0:3500::,2a01:3e0:3500:ff:ffff:ffff:ffff:ffff,LU
2a01:3e0:ff24::,2a01:3e0:ff24:ffff:ffff:ffff:ffff:ffff,DE
2a01:3e8::,2a01:3e8:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a01:3f0::,2a01:3f7:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -21938,7 +22661,15 @@
2a01:558::,2a01:558:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a01:560::,2a01:567:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a01:568::,2a01:570:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a01:578::,2a01:578:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a01:578::,2a01:578::6fff:ffff:ffff:ffff:ffff,US
+2a01:578:0:7000::,2a01:578::70ff:ffff:ffff:ffff:ffff,IE
+2a01:578:0:7100::,2a01:578::71ff:ffff:ffff:ffff:ffff,DE
+2a01:578:0:7200::,2a01:578::72ff:ffff:ffff:ffff:ffff,GB
+2a01:578:0:7300::,2a01:578:2:ffff:ffff:ffff:ffff:ffff,US
+2a01:578:3::,2a01:578:3::ffff:ffff:ffff:ffff,IE
+2a01:578:3:1::,2a01:578:12:ffff:ffff:ffff:ffff:ffff,US
+2a01:578:13::,2a01:578:13::ffff:ffff:ffff:ffff,DE
+2a01:578:13:1::,2a01:578:ffff:ffff:ffff:ffff:ffff:ffff,US
2a01:580::,2a01:580:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:590::,2a01:590:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:598::,2a01:59f:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -22416,7 +23147,7 @@
2a01:7180::,2a01:7180:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a01:71a0::,2a01:71a0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:71c0::,2a01:71c1:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a01:71e0::,2a01:71e0:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a01:71e0::,2a01:71e0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a01:7200::,2a01:7200:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a01:7220::,2a01:7220:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a01:7240::,2a01:7240:ffff:ffff:ffff:ffff:ffff:ffff,IE
@@ -22850,7 +23581,7 @@
2a01:a7a0::,2a01:a7a0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:a7c0::,2a01:a7c0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a01:a7e0::,2a01:a7e0:ffff:ffff:ffff:ffff:ffff:ffff,FI
-2a01:a800::,2a01:a800:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a01:a800::,2a01:a807:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a01:a820::,2a01:a820:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a01:a840::,2a01:a840:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a01:a860::,2a01:a860:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -22885,7 +23616,7 @@
2a01:ac20::,2a01:ac20:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:ac40::,2a01:ac40:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a01:ac60::,2a01:ac60:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a01:ac80::,2a01:ac80:ffff:ffff:ffff:ffff:ffff:ffff,RS
+2a01:ac80::,2a01:ac87:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a01:aca0::,2a01:aca0:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a01:acc0::,2a01:acc0:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a01:ace0::,2a01:ace0:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -23037,9 +23768,9 @@
2a01:bfa0::,2a01:bfa0:ffff:ffff:ffff:ffff:ffff:ffff,KG
2a01:bfc0::,2a01:bfc0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:bfe0::,2a01:bfe0:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a01:c000::,2a01:c844:1092:1600:f830:5237:bdc:ccd0,FR
-2a01:c844:1092:1600:f830:5237:bdc:ccd1,2a01:c844:1092:1600:f830:5237:bdc:ccd1,SK
-2a01:c844:1092:1600:f830:5237:bdc:ccd2,2a01:c844:140a:e00:50e1:6f6d:63d4:31e,FR
+2a01:c000::,2a01:c844:fff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c844:1000::,2a01:c844:11ff:ffff:ffff:ffff:ffff:ffff,SK
+2a01:c844:1200::,2a01:c844:140a:e00:50e1:6f6d:63d4:31e,FR
2a01:c844:140a:e00:50e1:6f6d:63d4:31f,2a01:c844:140a:e00:50e1:6f6d:63d4:31f,SK
2a01:c844:140a:e00:50e1:6f6d:63d4:320,2a01:dfff:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02::,2a02::ffff:ffff:ffff:ffff:ffff:ffff,LU
@@ -23059,7 +23790,6 @@
2a02:78::,2a02:78:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a02:80::,2a02:87:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a02:88::,2a02:88:ffff:ffff:ffff:ffff:ffff:ffff,EE
-2a02:90::,2a02:97:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a02:98::,2a02:98:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:a0::,2a02:a0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a02:a8::,2a02:a8:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -23143,7 +23873,7 @@
2a02:310::,2a02:310:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:318::,2a02:318:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:320::,2a02:320:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:328::,2a02:328:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:328::,2a02:32f:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:330::,2a02:330:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:338::,2a02:338:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:340::,2a02:340:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -23275,7 +24005,7 @@
2a02:750:8::,2a02:750:8:ffff:ffff:ffff:ffff:ffff,US
2a02:750:9::,2a02:757:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a02:758::,2a02:758:ffff:ffff:ffff:ffff:ffff:ffff,AT
-2a02:760::,2a02:760:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a02:760::,2a02:767:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a02:768::,2a02:768:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:770::,2a02:770:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a02:778::,2a02:778:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -24292,7 +25022,6 @@
2a02:60e0::,2a02:60e0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:6100::,2a02:6100:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:6120::,2a02:6120:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a02:6140::,2a02:6140:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:6160::,2a02:6160:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:6180::,2a02:6180:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a02:61a0::,2a02:61a0:ffff:ffff:ffff:ffff:ffff:ffff,RS
@@ -24918,7 +25647,7 @@
2a03:740::,2a03:740:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:760::,2a03:767:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:780::,2a03:780:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a03:7a0::,2a03:7a0:ffff:ffff:ffff:ffff:ffff:ffff,ME
+2a03:7a0::,2a03:7a7:ffff:ffff:ffff:ffff:ffff:ffff,ME
2a03:7c0::,2a03:7c0:ffff:ffff:ffff:ffff:ffff:ffff,PS
2a03:7e0::,2a03:7e0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:800::,2a03:807:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -25399,7 +26128,6 @@
2a03:4240::,2a03:4240:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:4260::,2a03:4260:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:4280::,2a03:4280:ffff:ffff:ffff:ffff:ffff:ffff,HR
-2a03:42a0::,2a03:42a0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:42c0::,2a03:42c0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:42e0::,2a03:42e0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:4300::,2a03:4307:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -25490,7 +26218,7 @@
2a03:4ae0::,2a03:4ae0:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:4b00::,2a03:4b00:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a03:4b20::,2a03:4b20:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a03:4b40::,2a03:4b40:ffff:ffff:ffff:ffff:ffff:ffff,IQ
+2a03:4b40::,2a03:4b47:ffff:ffff:ffff:ffff:ffff:ffff,IQ
2a03:4b60::,2a03:4b60:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a03:4b80::,2a03:4b80:ffff:ffff:ffff:ffff:ffff:ffff,AL
2a03:4ba0::,2a03:4ba0:ffff:ffff:ffff:ffff:ffff:ffff,BG
@@ -25538,7 +26266,9 @@
2a03:5120::,2a03:5120:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:5140::,2a03:5140:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:5160::,2a03:5160:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a03:5180::,2a03:5180:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a03:5180::,2a03:5180:5:6:ffff:ffff:ffff:ffff,RO
+2a03:5180:5:7::,2a03:5180:5:7::f,GB
+2a03:5180:5:7::10,2a03:5180:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a03:51a0::,2a03:51a0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:51c0::,2a03:51c0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:51e0::,2a03:51e0:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -27045,7 +27775,9 @@
2a04:5bc0::,2a04:5bc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:5c00::,2a04:5c07:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a04:5c40::,2a04:5c47:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a04:5c80::,2a04:5c87:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a04:5c80::,2a04:5c85:3fff:ffff:ffff:ffff:ffff:ffff,CH
+2a04:5c85:4000::,2a04:5c85:4fff:ffff:ffff:ffff:ffff:ffff,US
+2a04:5c85:5000::,2a04:5c87:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a04:5cc0::,2a04:5cc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:5d00::,2a04:5d07:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:5d40::,2a04:5d47:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -27335,7 +28067,6 @@
2a04:a180::,2a04:a187:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:a1c0::,2a04:a1c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:a200::,2a04:a207:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a04:a240::,2a04:a247:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:a280::,2a04:a287:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:a2c0::,2a04:a2c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a04:a300::,2a04:a307:ffff:ffff:ffff:ffff:ffff:ffff,IR
@@ -27346,7 +28077,7 @@
2a04:a440::,2a04:a440:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:a450::,2a04:a451:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:a460::,2a04:a461:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2a04:a470::,2a04:a471:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a04:a470::,2a04:a471:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a04:a480::,2a04:a487:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a04:a4c0::,2a04:a4c7:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a04:a500::,2a04:a507:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -27524,7 +28255,7 @@
2a04:cf40::,2a04:cf47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:cf80::,2a04:cf87:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a04:cfc0::,2a04:cfc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a04:d000::,2a04:d007:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a04:d000::,2a04:d007:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:d040::,2a04:d047:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a04:d080::,2a04:d087:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a04:d0c0::,2a04:d0c7:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -27915,7 +28646,6 @@
2a05:3040::,2a05:3047:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:3080::,2a05:3087:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a05:30c0::,2a05:30c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a05:3100::,2a05:3107:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a05:3140::,2a05:3147:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:3180::,2a05:3187:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:31c0::,2a05:31c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -27964,7 +28694,6 @@
2a05:3c00::,2a05:3c07:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a05:3c40::,2a05:3c47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:3c80::,2a05:3c87:ffff:ffff:ffff:ffff:ffff:ffff,CZ
-2a05:3cc0::,2a05:3cc7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a05:3d00::,2a05:3d07:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a05:3d40::,2a05:3d47:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a05:3d80::,2a05:3d87:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -28547,7 +29276,31 @@
2a05:cf40::,2a05:cf47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:cf80::,2a05:cf87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:cfc0::,2a05:cfc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a05:d000::,2a05:d07f:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d000::,2a05:d000:3fff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d000:4000::,2a05:d000:40ff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:d000:4100::,2a05:d000:bfff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d000:c000::,2a05:d000:c0ff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:d000:c100::,2a05:d013:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d014::,2a05:d014:fff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:d014:1000::,2a05:d01b:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d01c::,2a05:d01c:fff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:d01c:1000::,2a05:d050:403f:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d050:4040::,2a05:d050:404f:ffff:ffff:ffff:ffff:ffff,DE
+2a05:d050:4050::,2a05:d050:407f:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d050:4080::,2a05:d050:408f:ffff:ffff:ffff:ffff:ffff,DE
+2a05:d050:4090::,2a05:d050:40bf:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d050:40c0::,2a05:d050:40cf:ffff:ffff:ffff:ffff:ffff,DE
+2a05:d050:40d0::,2a05:d050:c03f:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d050:c040::,2a05:d050:c04f:ffff:ffff:ffff:ffff:ffff,GB
+2a05:d050:c050::,2a05:d050:c07f:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d050:c080::,2a05:d050:c08f:ffff:ffff:ffff:ffff:ffff,GB
+2a05:d050:c090::,2a05:d050:c0bf:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d050:c0c0::,2a05:d050:c0cf:ffff:ffff:ffff:ffff:ffff,GB
+2a05:d050:c0d0::,2a05:d07c:3fff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d07c:4000::,2a05:d07c:40ff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:d07c:4100::,2a05:d07c:bfff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d07c:c000::,2a05:d07c:c0ff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:d07c:c100::,2a05:d07f:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d400::,2a05:d407:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:d440::,2a05:d447:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:d480::,2a05:d487:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -28607,9 +29360,9 @@
2a05:dfc7:11::,2a05:dfc7:19:ffff:ffff:ffff:ffff:ffff,CH
2a05:dfc7:1a::,2a05:dfc7:1a::,AT
2a05:dfc7:1a::1,2a05:dfc7:1f:ffff:ffff:ffff:ffff:ffff,CH
-2a05:dfc7:20::,2a05:dfc7:30::47,GB
-2a05:dfc7:30::48,2a05:dfc7:30::48,US
-2a05:dfc7:30::49,2a05:dfc7:3f:ffff:ffff:ffff:ffff:ffff,GB
+2a05:dfc7:20::,2a05:dfc7:2f:ffff:ffff:ffff:ffff:ffff,GB
+2a05:dfc7:30::,2a05:dfc7:30:ffff:ffff:ffff:ffff:ffff,US
+2a05:dfc7:31::,2a05:dfc7:3f:ffff:ffff:ffff:ffff:ffff,GB
2a05:dfc7:40::,2a05:dfc7:40:ffff:ffff:ffff:ffff:ffff,BY
2a05:dfc7:41::,2a05:dfc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:e000::,2a05:e007:ffff:ffff:ffff:ffff:ffff:ffff,DK
@@ -29702,7 +30455,7 @@
2a06:e800::,2a06:e807:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a06:e840::,2a06:e847:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a06:e880::,2a06:e881:105:ffff:ffff:ffff:ffff:ffff,CH
-2a06:e881:106::,2a06:e881:106:ffff:ffff:ffff:ffff:ffff,GB
+2a06:e881:106::,2a06:e881:106:ffff:ffff:ffff:ffff:ffff,FR
2a06:e881:107::,2a06:e881:1ff:ffff:ffff:ffff:ffff:ffff,CH
2a06:e881:200::,2a06:e881:2ff:ffff:ffff:ffff:ffff:ffff,AT
2a06:e881:300::,2a06:e881:14ff:ffff:ffff:ffff:ffff:ffff,CH
@@ -30623,175 +31376,331 @@
2a07:cb40::,2a07:cb47:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a08::,2a08:1fff:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a::,2a0a:7:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0a:80::,2a0a:87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:100::,2a0a:107:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0a:180::,2a0a:187:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:200::,2a0a:200:ffff:ffff:ffff:ffff:ffff:ffff,HU
+2a0a:280::,2a0a:287:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:300::,2a0a:307:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0a:380::,2a0a:387:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0a:400::,2a0a:400:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0a:480::,2a0a:487:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0a:500::,2a0a:507:ffff:ffff:ffff:ffff:ffff:ffff,LB
+2a0a:580::,2a0a:580:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:600::,2a0a:607:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0a:680::,2a0a:687:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0a:700::,2a0a:707:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0a:780::,2a0a:780:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:800::,2a0a:807:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a0a:880::,2a0a:880:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:900::,2a0a:907:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a0a:980::,2a0a:987:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:a00::,2a0a:a00:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:a80::,2a0a:a87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:b00::,2a0a:b07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0a:b80::,2a0a:b87:ffff:ffff:ffff:ffff:ffff:ffff,IS
2a0a:c00::,2a0a:c07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:c80::,2a0a:c87:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0a:d00::,2a0a:d07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0a:d80::,2a0a:d87:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:e00::,2a0a:e07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0a:e80::,2a0a:e87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:f00::,2a0a:f07:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0a:f80::,2a0a:f87:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0a:1000::,2a0a:1007:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0a:1100::,2a0a:1107:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:1180::,2a0a:1187:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a0a:1200::,2a0a:1207:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0a:1280::,2a0a:1287:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0a:1300::,2a0a:1307:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0a:1380::,2a0a:1387:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0a:1400::,2a0a:1407:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0a:1480::,2a0a:1487:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:1500::,2a0a:1507:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0a:1580::,2a0a:1587:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:1600::,2a0a:1607:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a0a:1680::,2a0a:1687:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:1700::,2a0a:1707:ffff:ffff:ffff:ffff:ffff:ffff,SA
+2a0a:1780::,2a0a:1787:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0a:1800::,2a0a:1800:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:1880::,2a0a:1887:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:1900::,2a0a:1907:ffff:ffff:ffff:ffff:ffff:ffff,CY
+2a0a:1980::,2a0a:1987:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:1a00::,2a0a:1a07:ffff:ffff:ffff:ffff:ffff:ffff,SK
+2a0a:1a80::,2a0a:1a87:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0a:1b00::,2a0a:1b07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0a:1b80::,2a0a:1b87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:1c00::,2a0a:1c07:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0a:1c80::,2a0a:1c87:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:1d00::,2a0a:1d00:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0a:1d80::,2a0a:1d87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:1e00::,2a0a:1e07:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0a:1e80::,2a0a:1e87:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0a:1f00::,2a0a:1f07:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a0a:1f80::,2a0a:1f87:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a0a:2000::,2a0a:2007:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a0a:2080::,2a0a:2087:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:2100::,2a0a:2107:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0a:2180::,2a0a:2187:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a0a:2200::,2a0a:2200:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a0a:2280::,2a0a:2287:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a0a:2300::,2a0a:2307:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:2380::,2a0a:2380:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a0a:2400::,2a0a:2400:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a0a:2480::,2a0a:2487:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0a:2500::,2a0a:2500:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a0a:2580::,2a0a:2587:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:2600::,2a0a:2607:ffff:ffff:ffff:ffff:ffff:ffff,IS
+2a0a:2680::,2a0a:2687:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0a:2700::,2a0a:2707:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0a:2780::,2a0a:2787:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a0a:2800::,2a0a:2807:ffff:ffff:ffff:ffff:ffff:ffff,SA
+2a0a:2880::,2a0a:2887:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:2900::,2a0a:2907:ffff:ffff:ffff:ffff:ffff:ffff,GE
+2a0a:2980::,2a0a:2987:ffff:ffff:ffff:ffff:ffff:ffff,TJ
2a0a:2a00::,2a0a:2a00:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a0a:2a80::,2a0a:2a87:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a0a:2b00::,2a0a:2b00:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0a:2b80::,2a0a:2b87:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a0a:2c00::,2a0a:2c07:ffff:ffff:ffff:ffff:ffff:ffff,MD
+2a0a:2c80::,2a0a:2c87:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0a:2d00::,2a0a:2d07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0a:2d80::,2a0a:2d87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:2e00::,2a0a:2e07:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a0a:2e80::,2a0a:2e87:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a0a:2f00::,2a0a:2f07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:2f80::,2a0a:2f80:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:3000::,2a0a:3000:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0a:3080::,2a0a:3087:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:3100::,2a0a:3107:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a0a:3180::,2a0a:3187:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a0a:3200::,2a0a:3207:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0a:3280::,2a0a:3287:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:3300::,2a0a:3307:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a0a:3380::,2a0a:3387:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:3400::,2a0a:3407:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a0a:3480::,2a0a:3487:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:3500::,2a0a:3507:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a0a:3580::,2a0a:3587:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:3600::,2a0a:3607:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0a:3680::,2a0a:3687:ffff:ffff:ffff:ffff:ffff:ffff,CY
2a0a:3700::,2a0a:3707:ffff:ffff:ffff:ffff:ffff:ffff,MD
+2a0a:3780::,2a0a:3787:ffff:ffff:ffff:ffff:ffff:ffff,MD
2a0a:3800::,2a0a:3807:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:3880::,2a0a:3887:ffff:ffff:ffff:ffff:ffff:ffff,AM
2a0a:3900::,2a0a:3907:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0a:3980::,2a0a:3980:ffff:ffff:ffff:ffff:ffff:ffff,US
2a0a:3a00::,2a0a:3a07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0a:3a80::,2a0a:3a87:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0a:3b00::,2a0a:3b00:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0a:3b80::,2a0a:3b80:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0a:3c00::,2a0a:3c00:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0a:3c80::,2a0a:3c87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:3d00::,2a0a:3d00:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0a:3d80::,2a0a:3d87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:3e00::,2a0a:3e07:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0a:3e80::,2a0a:3e87:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0a:3f00::,2a0a:3f00:ffff:ffff:ffff:ffff:ffff:ffff,LT
+2a0a:3f80::,2a0a:3f80:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:4000::,2a0a:4007:ffff:ffff:ffff:ffff:ffff:ffff,HU
+2a0a:4080::,2a0a:4087:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:4100::,2a0a:4107:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0a:4180::,2a0a:4187:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:4200::,2a0a:4207:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0a:4280::,2a0a:4287:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0a:4300::,2a0a:4307:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0a:4380::,2a0a:4387:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:4400::,2a0a:4407:ffff:ffff:ffff:ffff:ffff:ffff,GE
+2a0a:4480::,2a0a:4487:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0a:4500::,2a0a:4507:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0a:4580::,2a0a:4587:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:4600::,2a0a:4607:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0a:4680::,2a0a:4687:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0a:4700::,2a0a:4707:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0a:4780::,2a0a:4787:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:4800::,2a0a:4807:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0a:4880::,2a0a:4887:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:4900::,2a0a:4907:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:4980::,2a0a:4987:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:4a00::,2a0a:4a07:ffff:ffff:ffff:ffff:ffff:ffff,MD
+2a0a:4a80::,2a0a:4a87:ffff:ffff:ffff:ffff:ffff:ffff,US
2a0a:4b00::,2a0a:4b07:ffff:ffff:ffff:ffff:ffff:ffff,IL
+2a0a:4b80::,2a0a:4b87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:4c00::,2a0a:4c06:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:4c07::,2a0a:4c07::ffff:ffff:ffff:ffff:ffff,CA
2a0a:4c07:1::,2a0a:4c07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0a:4c80::,2a0a:4c87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:4d00::,2a0a:4d07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0a:4d80::,2a0a:4d87:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0a:4e00::,2a0a:4e07:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0a:4e80::,2a0a:4e87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:4f00::,2a0a:4f07:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a0a:4f80::,2a0a:4f87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:5000::,2a0a:5007:ffff:ffff:ffff:ffff:ffff:ffff,GE
+2a0a:5080::,2a0a:5087:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0a:5100::,2a0a:5107:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0a:5180::,2a0a:5187:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:5200::,2a0a:5200:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a0a:5280::,2a0a:5287:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:5300::,2a0a:5307:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:5380::,2a0a:5387:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a0a:5400::,2a0a:5407:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a0a:5480::,2a0a:5487:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:5500::,2a0a:5507:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0a:5580::,2a0a:5587:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:5600::,2a0a:5607:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0a:5680::,2a0a:5687:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0a:5700::,2a0a:5707:ffff:ffff:ffff:ffff:ffff:ffff,IS
+2a0a:5780::,2a0a:5780:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a0a:5800::,2a0a:5807:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0a:5880::,2a0a:5887:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a0a:5900::,2a0a:5907:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0a:5980::,2a0a:5987:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:5a00::,2a0a:5a07:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a0a:5a80::,2a0a:5a87:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:5b00::,2a0a:5b07:ffff:ffff:ffff:ffff:ffff:ffff,PT
+2a0a:5b80::,2a0a:5b87:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0a:5c00::,2a0a:5c07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:5c80::,2a0a:5c87:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0a:5d00::,2a0a:5d00:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a0a:5d80::,2a0a:5d87:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0a:5e00::,2a0a:5e07:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0a:5e80::,2a0a:5e87:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0a:5f00::,2a0a:5f07:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a0a:5f80::,2a0a:5f87:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0a:6000::,2a0a:6007:ffff:ffff:ffff:ffff:ffff:ffff,MD
+2a0a:6080::,2a0a:6087:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:6100::,2a0a:6107:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a0a:6180::,2a0a:6187:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:6200::,2a0a:6200:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0a:6280::,2a0a:6287:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0a:6300::,2a0a:6307:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a0a:6380::,2a0a:6387:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0a:6400::,2a0a:6407:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0a:6480::,2a0a:6487:ffff:ffff:ffff:ffff:ffff:ffff,MD
2a0a:6500::,2a0a:6507:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:6580::,2a0a:6580:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0a:6600::,2a0a:6607:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:6680::,2a0a:6680:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:6700::,2a0a:6707:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:6780::,2a0a:6787:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0a:6800::,2a0a:6807:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a0a:6880::,2a0a:6887:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:6900::,2a0a:6907:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0a:6980::,2a0a:6980:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0a:6a00::,2a0a:6a07:ffff:ffff:ffff:ffff:ffff:ffff,IQ
+2a0a:6a80::,2a0a:6a87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:6b00::,2a0a:6b07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0a:6b80::,2a0a:6b87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:6c00::,2a0a:6c07:ffff:ffff:ffff:ffff:ffff:ffff,LB
+2a0a:6c80::,2a0a:6c87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:6d00::,2a0a:6d07:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0a:6d80::,2a0a:6d87:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:6e00::,2a0a:6e00:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0a:6e80::,2a0a:6e87:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0a:6f00::,2a0a:6f07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0a:6f80::,2a0a:6f80:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:7000::,2a0a:7007:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0a:7080::,2a0a:7087:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0a:7100::,2a0a:7107:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:7180::,2a0a:7187:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:7200::,2a0a:7207:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:7280::,2a0a:7287:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:7300::,2a0a:7300:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0a:7380::,2a0a:7387:ffff:ffff:ffff:ffff:ffff:ffff,KZ
2a0a:7400::,2a0a:7407:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0a:7480::,2a0a:7487:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0a:7500::,2a0a:7500:ffff:ffff:ffff:ffff:ffff:ffff,TJ
+2a0a:7580::,2a0a:7587:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0a:7600::,2a0a:7607:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:7680::,2a0a:7687:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:7700::,2a0a:7707:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:7780::,2a0a:7787:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0a:7800::,2a0a:7807:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0a:7880::,2a0a:7887:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a0a:7900::,2a0a:7907:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:7980::,2a0a:7987:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:7a00::,2a0a:7a04:7fff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:7a04:8000::,2a0a:7a04:8000:ffff:ffff:ffff:ffff:ffff,US
2a0a:7a04:8001::,2a0a:7a04:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:7a05::,2a0a:7a05:ffff:ffff:ffff:ffff:ffff:ffff,US
2a0a:7a06::,2a0a:7a07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0a:7a80::,2a0a:7a80:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0a:7b00::,2a0a:7b07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0a:7b80::,2a0a:7b87:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0a:7c00::,2a0a:7c07:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0a:7c80::,2a0a:7c80:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0a:7d00::,2a0a:7d07:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0a:7d80::,2a0a:7d87:ffff:ffff:ffff:ffff:ffff:ffff,BY
2a0a:7e00::,2a0a:7e03:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:7e04::,2a0a:7e04::ffff:ffff:ffff:ffff:ffff,US
2a0a:7e04:1::,2a0a:7e07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0a:7e80::,2a0a:7e87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:7f00::,2a0a:7f07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0a:7f80::,2a0a:7f87:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:8000::,2a0a:8007:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:8100::,2a0a:8107:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a0a:8180::,2a0a:8187:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:8200::,2a0a:8207:ffff:ffff:ffff:ffff:ffff:ffff,IL
+2a0a:8280::,2a0a:8287:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:8300::,2a0a:8307:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0a:8380::,2a0a:8387:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:8400::,2a0a:8407:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0a:8480::,2a0a:8480:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0a:8500::,2a0a:8507:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0a:8580::,2a0a:8587:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:8600::,2a0a:8604:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:8605::,2a0a:8605::ffff:ffff:ffff:ffff:ffff,US
2a0a:8605:1::,2a0a:8605:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:8606::,2a0a:8606:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:8607::,2a0a:8607:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0a:8680::,2a0a:8687:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:8700::,2a0a:8707:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0a:8780::,2a0a:8787:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0a:8800::,2a0a:8807:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0a:8880::,2a0a:8887:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a0a:8900::,2a0a:8907:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0a:8980::,2a0a:8987:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:8a00::,2a0a:8a00:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0a:8a80::,2a0a:8a87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:8b00::,2a0a:8b07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0a:8b80::,2a0a:8b87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:8c00::,2a0a:8c07:ffff:ffff:ffff:ffff:ffff:ffff,SA
+2a0a:8c80::,2a0a:8c87:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:8d00::,2a0a:8d07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:8d80::,2a0a:8d87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:8e00::,2a0a:8e07:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0a:8e80::,2a0a:8e87:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0a:8f00::,2a0a:8f00:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0a:8f80::,2a0a:8f87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:9000::,2a0a:9007:ffff:ffff:ffff:ffff:ffff:ffff,PT
+2a0a:9080::,2a0a:9087:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:9100::,2a0a:9107:ffff:ffff:ffff:ffff:ffff:ffff,LB
+2a0a:9180::,2a0a:9180:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:9200::,2a0a:9207:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0a:9280::,2a0a:9287:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:9300::,2a0a:9307:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0a:9380::,2a0a:9387:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0a:9400::,2a0a:9407:ffff:ffff:ffff:ffff:ffff:ffff,SA
+2a0a:9480::,2a0a:9480:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a0a:9500::,2a0a:9507:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a0a:9580::,2a0a:9587:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:9600::,2a0a:9607:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0a:9680::,2a0a:9687:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0a:9700::,2a0a:9700:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0a:9780::,2a0a:9787:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:9800::,2a0a:9807:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0a:9880::,2a0a:9887:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:9900::,2a0a:9907:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0a:9980::,2a0a:9987:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:9a00::,2a0a:9a07:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0a:9a80::,2a0a:9a80:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:9b00::,2a0a:9b07:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0a:9b80::,2a0a:9b80:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a0a:9c00::,2a0a:9c07:ffff:ffff:ffff:ffff:ffff:ffff,SA
+2a0a:9c80::,2a0a:9c80:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a0a:9d00::,2a0a:9d00:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0a:9d80::,2a0a:9d87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:9e00::,2a0a:9e07:ffff:ffff:ffff:ffff:ffff:ffff,US
2a0a:9f00::,2a0a:9f07:ffff:ffff:ffff:ffff:ffff:ffff,US
2a0a:a000::,2a0a:a000:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -31135,11 +32044,17 @@
2a0b:f200::,2a0b:f200:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a0b:f300::,2a0b:f307:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:f400::,2a0b:f400:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0b:f500::,2a0b:f507:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0b:f600::,2a0b:f607:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0b:f700::,2a0b:f707:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0b:f800::,2a0b:f800:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0b:f900::,2a0b:f907:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0b:fa00::,2a0b:fa07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0b:fb00::,2a0b:fb07:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:fc00::,2a0b:fc07:ffff:ffff:ffff:ffff:ffff:ffff,PT
+2a0b:fd00::,2a0b:fd00:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0b:fe00::,2a0b:fe07:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0b:ff00::,2a0b:ff07:ffff:ffff:ffff:ffff:ffff:ffff,GB
2c0e::,2c0e:fff:ffff:ffff:ffff:ffff:ffff:ffff,EG
2c0e:2000::,2c0e:2fff:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0e:4000::,2c0e:40ff:ffff:ffff:ffff:ffff:ffff:ffff,ZA
@@ -31187,6 +32102,18 @@
2c0f:f348::,2c0f:f348:ffff:ffff:ffff:ffff:ffff:ffff,ET
2c0f:f350::,2c0f:f350:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:f358::,2c0f:f358:ffff:ffff:ffff:ffff:ffff:ffff,KE
+2c0f:f360::,2c0f:f360:ffff:ffff:ffff:ffff:ffff:ffff,SC
+2c0f:f368::,2c0f:f368:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:f370::,2c0f:f370:ffff:ffff:ffff:ffff:ffff:ffff,TZ
+2c0f:f378::,2c0f:f378:ffff:ffff:ffff:ffff:ffff:ffff,MA
+2c0f:f380::,2c0f:f380:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:f388::,2c0f:f388:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:f390::,2c0f:f390:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:f398::,2c0f:f398:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:f3a0::,2c0f:f3a0:ffff:ffff:ffff:ffff:ffff:ffff,TN
+2c0f:f3a8::,2c0f:f3a8:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:f3b0::,2c0f:f3b0:ffff:ffff:ffff:ffff:ffff:ffff,CI
+2c0f:f3b8::,2c0f:f3b8:ffff:ffff:ffff:ffff:ffff:ffff,NG
2c0f:f400::,2c0f:f400:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:f408::,2c0f:f408:ffff:ffff:ffff:ffff:ffff:ffff,KE
2c0f:f410::,2c0f:f410:ffff:ffff:ffff:ffff:ffff:ffff,NG
diff --git a/src/ext/trunnel/trunnel-impl.h b/src/ext/trunnel/trunnel-impl.h
index 0cbd4f5637..bc805851b1 100644
--- a/src/ext/trunnel/trunnel-impl.h
+++ b/src/ext/trunnel/trunnel-impl.h
@@ -1,4 +1,4 @@
-/* trunnel-impl.h -- copied from Trunnel v1.5
+/* trunnel-impl.h -- copied from Trunnel v1.5.1
* https://gitweb.torproject.org/trunnel.git
* You probably shouldn't edit this file.
*/
diff --git a/src/ext/trunnel/trunnel.c b/src/ext/trunnel/trunnel.c
index f80a587a97..a008fb9f31 100644
--- a/src/ext/trunnel/trunnel.c
+++ b/src/ext/trunnel/trunnel.c
@@ -1,4 +1,4 @@
-/* trunnel.c -- copied from Trunnel v1.5
+/* trunnel.c -- copied from Trunnel v1.5.1
* https://gitweb.torproject.org/trunnel.git
* You probably shouldn't edit this file.
*/
diff --git a/src/ext/trunnel/trunnel.h b/src/ext/trunnel/trunnel.h
index afd404db0f..85bbcc5451 100644
--- a/src/ext/trunnel/trunnel.h
+++ b/src/ext/trunnel/trunnel.h
@@ -1,4 +1,4 @@
-/* trunnel.h -- copied from Trunnel v1.5
+/* trunnel.h -- copied from Trunnel v1.5.1
* https://gitweb.torproject.org/trunnel.git
* You probably shouldn't edit this file.
*/
diff --git a/src/or/channel.c b/src/or/channel.c
index af5810788c..7984558b40 100644
--- a/src/or/channel.c
+++ b/src/or/channel.c
@@ -733,27 +733,62 @@ channel_find_by_global_id(uint64_t global_identifier)
return rv;
}
+/** Return true iff <b>chan</b> matches <b>rsa_id_digest</b> and <b>ed_id</b>.
+ * as its identity keys. If either is NULL, do not check for a match. */
+static int
+channel_remote_identity_matches(const channel_t *chan,
+ const char *rsa_id_digest,
+ const ed25519_public_key_t *ed_id)
+{
+ if (BUG(!chan))
+ return 0;
+ if (rsa_id_digest) {
+ if (tor_memneq(rsa_id_digest, chan->identity_digest, DIGEST_LEN))
+ return 0;
+ }
+ if (ed_id) {
+ if (tor_memneq(ed_id->pubkey, chan->ed25519_identity.pubkey,
+ ED25519_PUBKEY_LEN))
+ return 0;
+ }
+ return 1;
+}
+
/**
- * Find channel by digest of the remote endpoint
+ * Find channel by RSA/Ed25519 identity of of the remote endpoint
+ *
+ * This function looks up a channel by the digest of its remote endpoint's RSA
+ * identity key. If <b>ed_id</b> is provided and nonzero, only a channel
+ * matching the <b>ed_id</b> will be returned.
*
- * This function looks up a channel by the digest of its remote endpoint in
- * the channel digest map. It's possible that more than one channel to a
- * given endpoint exists. Use channel_next_with_digest() to walk the list.
+ * It's possible that more than one channel to a given endpoint exists. Use
+ * channel_next_with_rsa_identity() to walk the list of channels; make sure
+ * to test for Ed25519 identity match too (as appropriate)
*/
-
channel_t *
-channel_find_by_remote_digest(const char *identity_digest)
+channel_find_by_remote_identity(const char *rsa_id_digest,
+ const ed25519_public_key_t *ed_id)
{
channel_t *rv = NULL;
channel_idmap_entry_t *ent, search;
- tor_assert(identity_digest);
+ tor_assert(rsa_id_digest); /* For now, we require that every channel have
+ * an RSA identity, and that every lookup
+ * contain an RSA identity */
+ if (ed_id && ed25519_public_key_is_zero(ed_id)) {
+ /* Treat zero as meaning "We don't care about the presence or absence of
+ * an Ed key", not "There must be no Ed key". */
+ ed_id = NULL;
+ }
- memcpy(search.digest, identity_digest, DIGEST_LEN);
+ memcpy(search.digest, rsa_id_digest, DIGEST_LEN);
ent = HT_FIND(channel_idmap, &channel_identity_map, &search);
if (ent) {
rv = TOR_LIST_FIRST(&ent->channel_list);
}
+ while (rv && ! channel_remote_identity_matches(rv, rsa_id_digest, ed_id)) {
+ rv = channel_next_with_rsa_identity(rv);
+ }
return rv;
}
@@ -766,7 +801,7 @@ channel_find_by_remote_digest(const char *identity_digest)
*/
channel_t *
-channel_next_with_digest(channel_t *chan)
+channel_next_with_rsa_identity(channel_t *chan)
{
tor_assert(chan);
@@ -1433,10 +1468,10 @@ channel_clear_identity_digest(channel_t *chan)
* This function sets the identity digest of the remote endpoint for a
* channel; this is intended for use by the lower layer.
*/
-
void
channel_set_identity_digest(channel_t *chan,
- const char *identity_digest)
+ const char *identity_digest,
+ const ed25519_public_key_t *ed_identity)
{
int was_in_digest_map, should_be_in_digest_map, state_not_in_map;
@@ -1475,6 +1510,11 @@ channel_set_identity_digest(channel_t *chan,
memset(chan->identity_digest, 0,
sizeof(chan->identity_digest));
}
+ if (ed_identity) {
+ memcpy(&chan->ed25519_identity, ed_identity, sizeof(*ed_identity));
+ } else {
+ memset(&chan->ed25519_identity, 0, sizeof(*ed_identity));
+ }
/* Put it in the digest map if we should */
if (should_be_in_digest_map)
@@ -3296,7 +3336,8 @@ channel_is_better(time_t now, channel_t *a, channel_t *b,
*/
channel_t *
-channel_get_for_extend(const char *digest,
+channel_get_for_extend(const char *rsa_id_digest,
+ const ed25519_public_key_t *ed_id,
const tor_addr_t *target_addr,
const char **msg_out,
int *launch_out)
@@ -3309,14 +3350,14 @@ channel_get_for_extend(const char *digest,
tor_assert(msg_out);
tor_assert(launch_out);
- chan = channel_find_by_remote_digest(digest);
+ chan = channel_find_by_remote_identity(rsa_id_digest, ed_id);
/* Walk the list, unrefing the old one and refing the new at each
* iteration.
*/
- for (; chan; chan = channel_next_with_digest(chan)) {
+ for (; chan; chan = channel_next_with_rsa_identity(chan)) {
tor_assert(tor_memeq(chan->identity_digest,
- digest, DIGEST_LEN));
+ rsa_id_digest, DIGEST_LEN));
if (CHANNEL_CONDEMNED(chan))
continue;
@@ -3327,6 +3368,11 @@ channel_get_for_extend(const char *digest,
continue;
}
+ /* The Ed25519 key has to match too */
+ if (!channel_remote_identity_matches(chan, rsa_id_digest, ed_id)) {
+ continue;
+ }
+
/* Never return a non-open connection. */
if (!CHANNEL_IS_OPEN(chan)) {
/* If the address matches, don't launch a new connection for this
@@ -4498,6 +4544,81 @@ channel_set_circid_type,(channel_t *chan,
}
}
+/** Helper for channel_update_bad_for_new_circs(): Perform the
+ * channel_update_bad_for_new_circs operation on all channels in <b>lst</b>,
+ * all of which MUST have the same RSA ID. (They MAY have different
+ * Ed25519 IDs.) */
+static void
+channel_rsa_id_group_set_badness(struct channel_list_s *lst, int force)
+{
+ /*XXXX This function should really be about channels. 15056 */
+ channel_t *chan;
+
+ /* First, get a minimal list of the ed25519 identites */
+ smartlist_t *ed_identities = smartlist_new();
+ TOR_LIST_FOREACH(chan, lst, next_with_same_id) {
+ uint8_t *id_copy =
+ tor_memdup(&chan->ed25519_identity.pubkey, DIGEST256_LEN);
+ smartlist_add(ed_identities, id_copy);
+ }
+ smartlist_sort_digests256(ed_identities);
+ smartlist_uniq_digests256(ed_identities);
+
+ /* Now, for each Ed identity, build a smartlist and find the best entry on
+ * it. */
+ smartlist_t *or_conns = smartlist_new();
+ SMARTLIST_FOREACH_BEGIN(ed_identities, const uint8_t *, ed_id) {
+ TOR_LIST_FOREACH(chan, lst, next_with_same_id) {
+ channel_tls_t *chantls = BASE_CHAN_TO_TLS(chan);
+ if (tor_memneq(ed_id, &chan->ed25519_identity.pubkey, DIGEST256_LEN))
+ continue;
+ or_connection_t *orconn = chantls->conn;
+ if (orconn) {
+ tor_assert(orconn->chan == chantls);
+ smartlist_add(or_conns, orconn);
+ }
+ }
+
+ connection_or_group_set_badness_(or_conns, force);
+ smartlist_clear(or_conns);
+ } SMARTLIST_FOREACH_END(ed_id);
+
+ /* XXXX 15056 we may want to do something special with connections that have
+ * no set Ed25519 identity! */
+
+ smartlist_free(or_conns);
+
+ SMARTLIST_FOREACH(ed_identities, uint8_t *, ed_id, tor_free(ed_id));
+ smartlist_free(ed_identities);
+}
+
+/** Go through all the channels (or if <b>digest</b> is non-NULL, just
+ * the OR connections with that digest), and set the is_bad_for_new_circs
+ * flag based on the rules in connection_or_group_set_badness() (or just
+ * always set it if <b>force</b> is true).
+ */
+void
+channel_update_bad_for_new_circs(const char *digest, int force)
+{
+ if (digest) {
+ channel_idmap_entry_t *ent;
+ channel_idmap_entry_t search;
+ memset(&search, 0, sizeof(search));
+ memcpy(search.digest, digest, DIGEST_LEN);
+ ent = HT_FIND(channel_idmap, &channel_identity_map, &search);
+ if (ent) {
+ channel_rsa_id_group_set_badness(&ent->channel_list, force);
+ }
+ return;
+ }
+
+ /* no digest; just look at everything. */
+ channel_idmap_entry_t **iter;
+ HT_FOREACH(iter, channel_idmap, &channel_identity_map) {
+ channel_rsa_id_group_set_badness(&(*iter)->channel_list, force);
+ }
+}
+
/**
* Update the estimated number of bytes queued to transmit for this channel,
* and notify the scheduler. The estimate includes both the channel queue and
diff --git a/src/or/channel.h b/src/or/channel.h
index 7e7b2ec899..26aa93b5e2 100644
--- a/src/or/channel.h
+++ b/src/or/channel.h
@@ -153,16 +153,32 @@ struct channel_s {
int (*write_var_cell)(channel_t *, var_cell_t *);
/**
- * Hash of the public RSA key for the other side's identity key, or
- * zeroes if the other side hasn't shown us a valid identity key.
+ * Hash of the public RSA key for the other side's RSA identity key -- or
+ * zeroes if we don't have an RSA identity in mind for the other side, and
+ * it hasn't shown us one.
+ *
+ * Note that this is the RSA identity that we hope the other side has -- not
+ * necessarily its true identity. Don't believe this identity unless
+ * authentication has happened.
*/
char identity_digest[DIGEST_LEN];
+ /**
+ * Ed25519 key for the other side of this channel -- or zeroes if we don't
+ * have an Ed25519 identity in mind for the other side, and it hasn't shown
+ * us one.
+ *
+ * Note that this is the identity that we hope the other side has -- not
+ * necessarily its true identity. Don't believe this identity unless
+ * authentication has happened.
+ */
+ ed25519_public_key_t ed25519_identity;
+
/** Nickname of the OR on the other side, or NULL if none. */
char *nickname;
/**
- * Linked list of channels with the same identity digest, for the
- * digest->channel map
+ * Linked list of channels with the same RSA identity digest, for use with
+ * the digest->channel map
*/
TOR_LIST_ENTRY(channel_s) next_with_same_id;
@@ -427,7 +443,8 @@ void channel_mark_incoming(channel_t *chan);
void channel_mark_outgoing(channel_t *chan);
void channel_mark_remote(channel_t *chan);
void channel_set_identity_digest(channel_t *chan,
- const char *identity_digest);
+ const char *identity_digest,
+ const ed25519_public_key_t *ed_identity);
void channel_set_remote_end(channel_t *chan,
const char *identity_digest,
const char *nickname);
@@ -489,10 +506,11 @@ int channel_send_destroy(circid_t circ_id, channel_t *chan,
*/
channel_t * channel_connect(const tor_addr_t *addr, uint16_t port,
- const char *id_digest,
+ const char *rsa_id_digest,
const ed25519_public_key_t *ed_id);
-channel_t * channel_get_for_extend(const char *digest,
+channel_t * channel_get_for_extend(const char *rsa_id_digest,
+ const ed25519_public_key_t *ed_id,
const tor_addr_t *target_addr,
const char **msg_out,
int *launch_out);
@@ -506,11 +524,13 @@ int channel_is_better(time_t now,
*/
channel_t * channel_find_by_global_id(uint64_t global_identifier);
-channel_t * channel_find_by_remote_digest(const char *identity_digest);
+channel_t * channel_find_by_remote_identity(const char *rsa_id_digest,
+ const ed25519_public_key_t *ed_id);
/** For things returned by channel_find_by_remote_digest(), walk the list.
+ * The RSA key will match for all returned elements; the Ed25519 key might not.
*/
-channel_t * channel_next_with_digest(channel_t *chan);
+channel_t * channel_next_with_rsa_identity(channel_t *chan);
/*
* Helper macros to lookup state of given channel.
@@ -582,6 +602,8 @@ void channel_listener_dump_statistics(channel_listener_t *chan_l,
void channel_listener_dump_transport_statistics(channel_listener_t *chan_l,
int severity);
+void channel_update_bad_for_new_circs(const char *digest, int force);
+
/* Flow control queries */
uint64_t channel_get_global_queue_estimate(void);
int channel_num_cells_writeable(channel_t *chan);
diff --git a/src/or/channeltls.c b/src/or/channeltls.c
index 9fb309d0fd..aef0143c9d 100644
--- a/src/or/channeltls.c
+++ b/src/or/channeltls.c
@@ -174,7 +174,6 @@ channel_tls_connect(const tor_addr_t *addr, uint16_t port,
const char *id_digest,
const ed25519_public_key_t *ed_id)
{
- (void) ed_id; // XXXX not fully used yet
channel_tls_t *tlschan = tor_malloc_zero(sizeof(*tlschan));
channel_t *chan = &(tlschan->base_);
@@ -1652,9 +1651,10 @@ channel_tls_process_netinfo_cell(cell_t *cell, channel_tls_t *chan)
connection_or_init_conn_from_address(chan->conn,
&(chan->conn->base_.addr),
chan->conn->base_.port,
+ /* zero, checked above */
(const char*)(chan->conn->handshake_state->
authenticated_rsa_peer_id),
- NULL, // XXXX Ed key
+ NULL, /* Ed25519 ID: Also checked as zero */
0);
}
}
@@ -1993,12 +1993,15 @@ channel_tls_process_certs_cell(var_cell_t *cell, channel_tls_t *chan)
checked_ed_id, sizeof(ed25519_public_key_t));
}
+ log_debug(LD_HANDSHAKE, "calling client_learned_peer_id from "
+ "process_certs_cell");
+
if (connection_or_client_learned_peer_id(chan->conn,
chan->conn->handshake_state->authenticated_rsa_peer_id,
checked_ed_id) < 0)
ERR("Problem setting or checking peer id");
- log_info(LD_OR,
+ log_info(LD_HANDSHAKE,
"Got some good certificates from %s:%d: Authenticated it with "
"RSA%s",
safe_str(chan->conn->base_.address), chan->conn->base_.port,
@@ -2334,6 +2337,13 @@ channel_tls_process_authenticate_cell(var_cell_t *cell, channel_tls_t *chan)
chan->conn->link_proto < MIN_LINK_PROTO_FOR_WIDE_CIRC_IDS);
crypto_pk_free(identity_rcvd);
+ log_debug(LD_HANDSHAKE,
+ "Calling connection_or_init_conn_from_address for %s "
+ " from %s, with%s ed25519 id.",
+ safe_str(chan->conn->base_.address),
+ __func__,
+ ed_identity_received ? "" : "out");
+
connection_or_init_conn_from_address(chan->conn,
&(chan->conn->base_.addr),
chan->conn->base_.port,
@@ -2342,7 +2352,7 @@ channel_tls_process_authenticate_cell(var_cell_t *cell, channel_tls_t *chan)
ed_identity_received,
0);
- log_info(LD_OR,
+ log_debug(LD_HANDSHAKE,
"Got an AUTHENTICATE cell from %s:%d, type %d: Looks good.",
safe_str(chan->conn->base_.address),
chan->conn->base_.port,
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index 0881f231aa..9bd0125972 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -63,8 +63,9 @@
#include "transports.h"
static channel_t * channel_connect_for_circuit(const tor_addr_t *addr,
- uint16_t port,
- const char *id_digest);
+ uint16_t port,
+ const char *id_digest,
+ const ed25519_public_key_t *ed_id);
static int circuit_deliver_create_cell(circuit_t *circ,
const create_cell_t *create_cell,
int relayed);
@@ -80,13 +81,12 @@ static int onion_append_hop(crypt_path_t **head_ptr, extend_info_t *choice);
*/
static channel_t *
channel_connect_for_circuit(const tor_addr_t *addr, uint16_t port,
- const char *id_digest)
+ const char *id_digest,
+ const ed25519_public_key_t *ed_id)
{
channel_t *chan;
- chan = channel_connect(addr, port, id_digest,
- NULL // XXXX Ed25519 id.
- );
+ chan = channel_connect(addr, port, id_digest, ed_id);
if (chan) command_setup_channel(chan);
return chan;
@@ -556,6 +556,7 @@ circuit_handle_first_hop(origin_circuit_t *circ)
firsthop->extend_info->port));
n_chan = channel_get_for_extend(firsthop->extend_info->identity_digest,
+ &firsthop->extend_info->ed_identity,
&firsthop->extend_info->addr,
&msg,
&should_launch);
@@ -573,7 +574,8 @@ circuit_handle_first_hop(origin_circuit_t *circ)
n_chan = channel_connect_for_circuit(
&firsthop->extend_info->addr,
firsthop->extend_info->port,
- firsthop->extend_info->identity_digest);
+ firsthop->extend_info->identity_digest,
+ &firsthop->extend_info->ed_identity);
if (!n_chan) { /* connect failed, forget the whole thing */
log_info(LD_CIRC,"connect to firsthop failed. Closing.");
return -END_CIRC_REASON_CONNECTFAILED;
@@ -1041,6 +1043,9 @@ circuit_send_next_onion_skin(origin_circuit_t *circ)
ec.orport_ipv4.port = hop->extend_info->port;
tor_addr_make_unspec(&ec.orport_ipv6.addr);
memcpy(ec.node_id, hop->extend_info->identity_digest, DIGEST_LEN);
+ /* Set the ED25519 identity too -- it will only get included
+ * in the extend2 cell if we're configured to use it, though. */
+ ed25519_pubkey_copy(&ec.ed_pubkey, &hop->extend_info->ed_identity);
len = onion_skin_create(ec.create_cell.handshake_type,
hop->extend_info,
@@ -1159,7 +1164,7 @@ circuit_extend(cell_t *cell, circuit_t *circ)
/* Check if they asked us for 0000..0000. We support using
* an empty fingerprint for the first hop (e.g. for a bridge relay),
- * but we don't want to let people send us extend cells for empty
+ * but we don't want to let clients send us extend cells for empty
* fingerprints -- a) because it opens the user up to a mitm attack,
* and b) because it lets an attacker force the relay to hold open a
* new TLS connection for each extend request. */
@@ -1169,6 +1174,18 @@ circuit_extend(cell_t *cell, circuit_t *circ)
return -1;
}
+ /* Fill in ed_pubkey if it was not provided and we can infer it from
+ * our networkstatus */
+ if (ed25519_public_key_is_zero(&ec.ed_pubkey)) {
+ const node_t *node = node_get_by_id((const char*)ec.node_id);
+ const ed25519_public_key_t *node_ed_id = NULL;
+ if (node &&
+ node_supports_ed25519_link_authentication(node) &&
+ (node_ed_id = node_get_ed25519_id(node))) {
+ ed25519_pubkey_copy(&ec.ed_pubkey, node_ed_id);
+ }
+ }
+
/* Next, check if we're being asked to connect to the hop that the
* extend cell came from. There isn't any reason for that, and it can
* assist circular-path attacks. */
@@ -1180,7 +1197,17 @@ circuit_extend(cell_t *cell, circuit_t *circ)
return -1;
}
+ /* Check the previous hop Ed25519 ID too */
+ if (! ed25519_public_key_is_zero(&ec.ed_pubkey) &&
+ ed25519_pubkey_eq(&ec.ed_pubkey,
+ &TO_OR_CIRCUIT(circ)->p_chan->ed25519_identity)) {
+ log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
+ "Client asked me to extend back to the previous hop "
+ "(by Ed25519 ID).");
+ }
+
n_chan = channel_get_for_extend((const char*)ec.node_id,
+ &ec.ed_pubkey,
&ec.orport_ipv4.addr,
&msg,
&should_launch);
@@ -1192,8 +1219,9 @@ circuit_extend(cell_t *cell, circuit_t *circ)
circ->n_hop = extend_info_new(NULL /*nickname*/,
(const char*)ec.node_id,
- NULL /*onion_key*/,
- NULL /*curve25519_key*/,
+ &ec.ed_pubkey,
+ NULL, /*onion_key*/
+ NULL, /*curve25519_key*/
&ec.orport_ipv4.addr,
ec.orport_ipv4.port);
@@ -1206,7 +1234,8 @@ circuit_extend(cell_t *cell, circuit_t *circ)
/* we should try to open a connection */
n_chan = channel_connect_for_circuit(&ec.orport_ipv4.addr,
ec.orport_ipv4.port,
- (const char*)ec.node_id);
+ (const char*)ec.node_id,
+ &ec.ed_pubkey);
if (!n_chan) {
log_info(LD_CIRC,"Launching n_chan failed. Closing circuit.");
circuit_mark_for_close(circ, END_CIRC_REASON_CONNECTFAILED);
@@ -1508,9 +1537,9 @@ circuit_get_unhandled_ports(time_t now)
* If we're returning 0, set need_uptime and need_capacity to
* indicate any requirements that the unhandled ports have.
*/
-int
-circuit_all_predicted_ports_handled(time_t now, int *need_uptime,
- int *need_capacity)
+MOCK_IMPL(int,
+circuit_all_predicted_ports_handled, (time_t now, int *need_uptime,
+ int *need_capacity))
{
int i, enough;
uint16_t *port;
@@ -2356,19 +2385,23 @@ onion_append_hop(crypt_path_t **head_ptr, extend_info_t *choice)
/** Allocate a new extend_info object based on the various arguments. */
extend_info_t *
-extend_info_new(const char *nickname, const char *digest,
+extend_info_new(const char *nickname,
+ const char *rsa_id_digest,
+ const ed25519_public_key_t *ed_id,
crypto_pk_t *onion_key,
- const curve25519_public_key_t *curve25519_key,
+ const curve25519_public_key_t *ntor_key,
const tor_addr_t *addr, uint16_t port)
{
extend_info_t *info = tor_malloc_zero(sizeof(extend_info_t));
- memcpy(info->identity_digest, digest, DIGEST_LEN);
+ memcpy(info->identity_digest, rsa_id_digest, DIGEST_LEN);
+ if (ed_id && !ed25519_public_key_is_zero(ed_id))
+ memcpy(&info->ed_identity, ed_id, sizeof(ed25519_public_key_t));
if (nickname)
strlcpy(info->nickname, nickname, sizeof(info->nickname));
if (onion_key)
info->onion_key = crypto_pk_dup_key(onion_key);
- if (curve25519_key)
- memcpy(&info->curve25519_onion_key, curve25519_key,
+ if (ntor_key)
+ memcpy(&info->curve25519_onion_key, ntor_key,
sizeof(curve25519_public_key_t));
tor_addr_copy(&info->addr, addr);
info->port = port;
@@ -2418,20 +2451,35 @@ extend_info_from_node(const node_t *node, int for_direct_connect)
return NULL;
}
+ const ed25519_public_key_t *ed_pubkey = NULL;
+
+ /* Don't send the ed25519 pubkey unless the target node actually supports
+ * authenticating with it. */
+ if (node_supports_ed25519_link_authentication(node)) {
+ log_info(LD_CIRC, "Including Ed25519 ID for %s", node_describe(node));
+ ed_pubkey = node_get_ed25519_id(node);
+ } else if (node_get_ed25519_id(node)) {
+ log_info(LD_CIRC, "Not including the ed25519 ID for %s, since it won't "
+ " be able to authenticate it.",
+ node_describe(node));
+ }
+
if (valid_addr && node->ri)
return extend_info_new(node->ri->nickname,
- node->identity,
- node->ri->onion_pkey,
- node->ri->onion_curve25519_pkey,
- &ap.addr,
- ap.port);
+ node->identity,
+ ed_pubkey,
+ node->ri->onion_pkey,
+ node->ri->onion_curve25519_pkey,
+ &ap.addr,
+ ap.port);
else if (valid_addr && node->rs && node->md)
return extend_info_new(node->rs->nickname,
- node->identity,
- node->md->onion_pkey,
- node->md->onion_curve25519_pkey,
- &ap.addr,
- ap.port);
+ node->identity,
+ ed_pubkey,
+ node->md->onion_pkey,
+ node->md->onion_curve25519_pkey,
+ &ap.addr,
+ ap.port);
else
return NULL;
}
diff --git a/src/or/circuitbuild.h b/src/or/circuitbuild.h
index 1244601f71..54d14bbc7f 100644
--- a/src/or/circuitbuild.h
+++ b/src/or/circuitbuild.h
@@ -40,15 +40,18 @@ int onionskin_answer(or_circuit_t *circ,
const struct created_cell_t *created_cell,
const char *keys,
const uint8_t *rend_circ_nonce);
-int circuit_all_predicted_ports_handled(time_t now, int *need_uptime,
- int *need_capacity);
+MOCK_DECL(int, circuit_all_predicted_ports_handled, (time_t now,
+ int *need_uptime,
+ int *need_capacity));
int circuit_append_new_exit(origin_circuit_t *circ, extend_info_t *info);
int circuit_extend_to_new_exit(origin_circuit_t *circ, extend_info_t *info);
void onion_append_to_cpath(crypt_path_t **head_ptr, crypt_path_t *new_hop);
-extend_info_t *extend_info_new(const char *nickname, const char *digest,
+extend_info_t *extend_info_new(const char *nickname,
+ const char *rsa_id_digest,
+ const ed25519_public_key_t *ed_id,
crypto_pk_t *onion_key,
- const curve25519_public_key_t *curve25519_key,
+ const curve25519_public_key_t *ntor_key,
const tor_addr_t *addr, uint16_t port);
extend_info_t *extend_info_from_node(const node_t *r, int for_direct_connect);
extend_info_t *extend_info_dup(extend_info_t *info);
diff --git a/src/or/circuitstats.c b/src/or/circuitstats.c
index 418acc0024..6cb99e4175 100644
--- a/src/or/circuitstats.c
+++ b/src/or/circuitstats.c
@@ -1431,7 +1431,7 @@ circuit_build_times_network_check_changed(circuit_build_times_t *cbt)
#define MAX_TIMEOUT ((int32_t) (INT32_MAX/2))
/* Check to see if this has happened before. If so, double the timeout
- * to give people on abysmally bad network connections a shot at access */
+ * to give clients on abysmally bad network connections a shot at access */
if (cbt->timeout_ms >= circuit_build_times_get_initial_timeout()) {
if (cbt->timeout_ms > MAX_TIMEOUT || cbt->close_ms > MAX_TIMEOUT) {
log_warn(LD_CIRC, "Insanely large circuit build timeout value. "
diff --git a/src/or/circuituse.c b/src/or/circuituse.c
index ba7b75ff25..e109cef5dd 100644
--- a/src/or/circuituse.c
+++ b/src/or/circuituse.c
@@ -1022,8 +1022,117 @@ circuit_stream_is_being_handled(entry_connection_t *conn,
/** Don't keep more than this many unused open circuits around. */
#define MAX_UNUSED_OPEN_CIRCUITS 14
-/** Figure out how many circuits we have open that are clean. Make
- * sure it's enough for all the upcoming behaviors we predict we'll have.
+/* Return true if a circuit is available for use, meaning that it is open,
+ * clean, usable for new multi-hop connections, and a general purpose origin
+ * circuit.
+ * Accept any kind of circuit, return false if the above conditions are not
+ * met. */
+STATIC int
+circuit_is_available_for_use(const circuit_t *circ)
+{
+ const origin_circuit_t *origin_circ;
+ cpath_build_state_t *build_state;
+
+ if (!CIRCUIT_IS_ORIGIN(circ))
+ return 0; /* We first filter out only origin circuits before doing the
+ following checks. */
+ if (circ->marked_for_close)
+ return 0; /* Don't mess with marked circs */
+ if (circ->timestamp_dirty)
+ return 0; /* Only count clean circs */
+ if (circ->purpose != CIRCUIT_PURPOSE_C_GENERAL)
+ return 0; /* We only pay attention to general purpose circuits.
+ General purpose circuits are always origin circuits. */
+
+ origin_circ = CONST_TO_ORIGIN_CIRCUIT(circ);
+ if (origin_circ->unusable_for_new_conns)
+ return 0;
+
+ build_state = origin_circ->build_state;
+ if (build_state->onehop_tunnel)
+ return 0;
+
+ return 1;
+}
+
+/* Return true if we need any more exit circuits.
+ * needs_uptime and needs_capacity are set only if we need more exit circuits.
+ * Check if we know of a port that's been requested recently and no circuit
+ * is currently available that can handle it. */
+STATIC int
+needs_exit_circuits(time_t now, int *needs_uptime, int *needs_capacity)
+{
+ return (!circuit_all_predicted_ports_handled(now, needs_uptime,
+ needs_capacity) &&
+ router_have_consensus_path() == CONSENSUS_PATH_EXIT);
+}
+
+/* Hidden services need at least this many internal circuits */
+#define SUFFICIENT_UPTIME_INTERNAL_HS_SERVERS 3
+
+/* Return true if we need any more hidden service server circuits.
+ * HS servers only need an internal circuit. */
+STATIC int
+needs_hs_server_circuits(int num_uptime_internal)
+{
+ return (num_rend_services() &&
+ num_uptime_internal < SUFFICIENT_UPTIME_INTERNAL_HS_SERVERS &&
+ router_have_consensus_path() != CONSENSUS_PATH_UNKNOWN);
+}
+
+/* We need at least this many internal circuits for hidden service clients */
+#define SUFFICIENT_INTERNAL_HS_CLIENTS 3
+
+/* We need at least this much uptime for internal circuits for hidden service
+ * clients */
+#define SUFFICIENT_UPTIME_INTERNAL_HS_CLIENTS 2
+
+/* Return true if we need any more hidden service client circuits.
+ * HS clients only need an internal circuit. */
+STATIC int
+needs_hs_client_circuits(time_t now, int *needs_uptime, int *needs_capacity,
+ int num_internal, int num_uptime_internal)
+{
+ int used_internal_recently = rep_hist_get_predicted_internal(now,
+ needs_uptime,
+ needs_capacity);
+ int requires_uptime = num_uptime_internal <
+ SUFFICIENT_UPTIME_INTERNAL_HS_CLIENTS &&
+ needs_uptime;
+
+ return (used_internal_recently &&
+ (requires_uptime || num_internal < SUFFICIENT_INTERNAL_HS_CLIENTS) &&
+ router_have_consensus_path() != CONSENSUS_PATH_UNKNOWN);
+}
+
+/* The minimum number of open slots we should keep in order to preemptively
+ * build circuits. */
+#define CBT_MIN_REMAINING_PREEMPTIVE_CIRCUITS 2
+
+/* Check to see if we need more circuits to have a good build timeout. However,
+ * leave a couple slots open so that we can still build circuits preemptively
+ * as needed. */
+#define CBT_MAX_UNUSED_OPEN_CIRCUITS (MAX_UNUSED_OPEN_CIRCUITS - \
+ CBT_MIN_REMAINING_PREEMPTIVE_CIRCUITS)
+
+/* Return true if we need more circuits for a good build timeout.
+ * XXXX make the assumption that build timeout streams should be
+ * created whenever we can build internal circuits. */
+STATIC int
+needs_circuits_for_build(int num)
+{
+ if (router_have_consensus_path() != CONSENSUS_PATH_UNKNOWN) {
+ if (num < CBT_MAX_UNUSED_OPEN_CIRCUITS &&
+ !circuit_build_times_disabled() &&
+ circuit_build_times_needs_circuits_now(get_circuit_build_times())) {
+ return 1;
+ }
+ }
+ return 0;
+}
+
+/** Determine how many circuits we have open that are clean,
+ * Make sure it's enough for all the upcoming behaviors we predict we'll have.
* But put an upper bound on the total number of circuits.
*/
static void
@@ -1035,25 +1144,14 @@ circuit_predict_and_launch_new(void)
time_t now = time(NULL);
int flags = 0;
- /* First, count how many of each type of circuit we have already. */
+ /* Count how many of each type of circuit we currently have. */
SMARTLIST_FOREACH_BEGIN(circuit_get_global_list(), circuit_t *, circ) {
- cpath_build_state_t *build_state;
- origin_circuit_t *origin_circ;
- if (!CIRCUIT_IS_ORIGIN(circ))
- continue;
- if (circ->marked_for_close)
- continue; /* don't mess with marked circs */
- if (circ->timestamp_dirty)
- continue; /* only count clean circs */
- if (circ->purpose != CIRCUIT_PURPOSE_C_GENERAL)
- continue; /* only pay attention to general-purpose circs */
- origin_circ = TO_ORIGIN_CIRCUIT(circ);
- if (origin_circ->unusable_for_new_conns)
- continue;
- build_state = origin_circ->build_state;
- if (build_state->onehop_tunnel)
+ if (!circuit_is_available_for_use(circ))
continue;
+
num++;
+
+ cpath_build_state_t *build_state = TO_ORIGIN_CIRCUIT(circ)->build_state;
if (build_state->is_internal)
num_internal++;
if (build_state->need_uptime && build_state->is_internal)
@@ -1063,19 +1161,14 @@ circuit_predict_and_launch_new(void)
/* If that's enough, then stop now. */
if (num >= MAX_UNUSED_OPEN_CIRCUITS)
- return; /* we already have many, making more probably will hurt */
-
- /* Second, see if we need any more exit circuits. */
- /* check if we know of a port that's been requested recently
- * and no circuit is currently available that can handle it.
- * Exits (obviously) require an exit circuit. */
- if (!circuit_all_predicted_ports_handled(now, &port_needs_uptime,
- &port_needs_capacity)
- && router_have_consensus_path() == CONSENSUS_PATH_EXIT) {
+ return;
+
+ if (needs_exit_circuits(now, &port_needs_uptime, &port_needs_capacity)) {
if (port_needs_uptime)
flags |= CIRCLAUNCH_NEED_UPTIME;
if (port_needs_capacity)
flags |= CIRCLAUNCH_NEED_CAPACITY;
+
log_info(LD_CIRC,
"Have %d clean circs (%d internal), need another exit circ.",
num, num_internal);
@@ -1083,12 +1176,10 @@ circuit_predict_and_launch_new(void)
return;
}
- /* Third, see if we need any more hidden service (server) circuits.
- * HS servers only need an internal circuit. */
- if (num_rend_services() && num_uptime_internal < 3
- && router_have_consensus_path() != CONSENSUS_PATH_UNKNOWN) {
+ if (needs_hs_server_circuits(num_uptime_internal)) {
flags = (CIRCLAUNCH_NEED_CAPACITY | CIRCLAUNCH_NEED_UPTIME |
CIRCLAUNCH_IS_INTERNAL);
+
log_info(LD_CIRC,
"Have %d clean circs (%d internal), need another internal "
"circ for my hidden service.",
@@ -1097,18 +1188,16 @@ circuit_predict_and_launch_new(void)
return;
}
- /* Fourth, see if we need any more hidden service (client) circuits.
- * HS clients only need an internal circuit. */
- if (rep_hist_get_predicted_internal(now, &hidserv_needs_uptime,
- &hidserv_needs_capacity) &&
- ((num_uptime_internal<2 && hidserv_needs_uptime) ||
- num_internal<3)
- && router_have_consensus_path() != CONSENSUS_PATH_UNKNOWN) {
+ if (needs_hs_client_circuits(now, &hidserv_needs_uptime,
+ &hidserv_needs_capacity,
+ num_internal, num_uptime_internal))
+ {
if (hidserv_needs_uptime)
flags |= CIRCLAUNCH_NEED_UPTIME;
if (hidserv_needs_capacity)
flags |= CIRCLAUNCH_NEED_CAPACITY;
flags |= CIRCLAUNCH_IS_INTERNAL;
+
log_info(LD_CIRC,
"Have %d clean circs (%d uptime-internal, %d internal), need"
" another hidden service circ.",
@@ -1117,26 +1206,17 @@ circuit_predict_and_launch_new(void)
return;
}
- /* Finally, check to see if we still need more circuits to learn
- * a good build timeout. But if we're close to our max number we
- * want, don't do another -- we want to leave a few slots open so
- * we can still build circuits preemptively as needed.
- * XXXX make the assumption that build timeout streams should be
- * created whenever we can build internal circuits. */
- if (router_have_consensus_path() != CONSENSUS_PATH_UNKNOWN) {
- if (num < MAX_UNUSED_OPEN_CIRCUITS-2 &&
- ! circuit_build_times_disabled() &&
- circuit_build_times_needs_circuits_now(get_circuit_build_times())) {
- flags = CIRCLAUNCH_NEED_CAPACITY;
- /* if there are no exits in the consensus, make timeout
- * circuits internal */
- if (router_have_consensus_path() == CONSENSUS_PATH_INTERNAL)
- flags |= CIRCLAUNCH_IS_INTERNAL;
+ if (needs_circuits_for_build(num)) {
+ flags = CIRCLAUNCH_NEED_CAPACITY;
+ /* if there are no exits in the consensus, make timeout
+ * circuits internal */
+ if (router_have_consensus_path() == CONSENSUS_PATH_INTERNAL)
+ flags |= CIRCLAUNCH_IS_INTERNAL;
+
log_info(LD_CIRC,
"Have %d clean circs need another buildtime test circ.", num);
circuit_launch(CIRCUIT_PURPOSE_C_GENERAL, flags);
return;
- }
}
}
@@ -2088,6 +2168,10 @@ circuit_get_open_circ_or_launch(entry_connection_t *conn,
if (want_onehop && conn->chosen_exit_name[0] == '$') {
/* We're asking for a one-hop circuit to a router that
* we don't have a routerinfo about. Make up an extend_info. */
+ /* XXX prop220: we need to make chosen_exit_name able to
+ * encode both key formats. This is not absolutely critical
+ * since this is just for one-hop circuits, but we should
+ * still get it done */
char digest[DIGEST_LEN];
char *hexdigest = conn->chosen_exit_name+1;
tor_addr_t addr;
@@ -2102,9 +2186,12 @@ circuit_get_open_circ_or_launch(entry_connection_t *conn,
escaped_safe_str_client(conn->socks_request->address));
return -1;
}
+ /* XXXX prop220 add a workaround for ed25519 ID below*/
extend_info = extend_info_new(conn->chosen_exit_name+1,
- digest, NULL, NULL, &addr,
- conn->socks_request->port);
+ digest,
+ NULL, /* Ed25519 ID */
+ NULL, NULL, /* onion keys */
+ &addr, conn->socks_request->port);
} else { /* ! (want_onehop && conn->chosen_exit_name[0] == '$') */
/* We will need an onion key for the router, and we
* don't have one. Refuse or relax requirements. */
@@ -2511,7 +2598,7 @@ connection_ap_handshake_attach_circuit(entry_connection_t *conn)
log_debug(LD_APP|LD_CIRC,
"Attaching apconn to circ %u (stream %d sec old).",
(unsigned)circ->base_.n_circ_id, conn_age);
- /* print the circ's path, so people can figure out which circs are
+ /* print the circ's path, so clients can figure out which circs are
* sucking. */
circuit_log_path(LOG_INFO,LD_APP|LD_CIRC,circ);
diff --git a/src/or/circuituse.h b/src/or/circuituse.h
index 5973978c45..d484be1986 100644
--- a/src/or/circuituse.h
+++ b/src/or/circuituse.h
@@ -59,5 +59,25 @@ int hostname_in_track_host_exits(const or_options_t *options,
const char *address);
void mark_circuit_unusable_for_new_conns(origin_circuit_t *circ);
+#ifdef TOR_UNIT_TESTS
+/* Used only by circuituse.c and test_circuituse.c */
+
+STATIC int circuit_is_available_for_use(const circuit_t *circ);
+
+STATIC int needs_exit_circuits(time_t now,
+ int *port_needs_uptime,
+ int *port_needs_capacity);
+STATIC int needs_hs_server_circuits(int num_uptime_internal);
+
+STATIC int needs_hs_client_circuits(time_t now,
+ int *needs_uptime,
+ int *needs_capacity,
+ int num_internal,
+ int num_uptime_internal);
+
+STATIC int needs_circuits_for_build(int num);
+
+#endif
+
#endif
diff --git a/src/or/config.c b/src/or/config.c
index 9553822ba3..c68f83ab69 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -218,7 +218,7 @@ static config_var_t option_vars_[] = {
OBSOLETE("AuthDirListBadDirs"),
V(AuthDirListBadExits, BOOL, "0"),
V(AuthDirMaxServersPerAddr, UINT, "2"),
- V(AuthDirMaxServersPerAuthAddr,UINT, "5"),
+ OBSOLETE("AuthDirMaxServersPerAuthAddr"),
V(AuthDirHasIPv6Connectivity, BOOL, "0"),
VAR("AuthoritativeDirectory", BOOL, AuthoritativeDir, "0"),
V(AutomapHostsOnResolve, BOOL, "0"),
@@ -305,6 +305,7 @@ static config_var_t option_vars_[] = {
V(ExtORPortCookieAuthFile, STRING, NULL),
V(ExtORPortCookieAuthFileGroupReadable, BOOL, "0"),
V(ExtraInfoStatistics, BOOL, "1"),
+ V(ExtendByEd25519ID, AUTOBOOL, "auto"),
V(FallbackDir, LINELIST, NULL),
V(UseDefaultFallbackDirs, BOOL, "1"),
@@ -497,6 +498,7 @@ static config_var_t option_vars_[] = {
V(User, STRING, NULL),
OBSOLETE("UserspaceIOCPBuffers"),
V(AuthDirSharedRandomness, BOOL, "1"),
+ V(AuthDirTestEd25519LinkKeys, BOOL, "1"),
OBSOLETE("V1AuthoritativeDirectory"),
OBSOLETE("V2AuthoritativeDirectory"),
VAR("V3AuthoritativeDirectory",BOOL, V3AuthoritativeDir, "0"),
@@ -592,7 +594,6 @@ static const config_var_t testing_tor_network_defaults[] = {
V(EnforceDistinctSubnets, BOOL, "0"),
V(AssumeReachable, BOOL, "1"),
V(AuthDirMaxServersPerAddr, UINT, "0"),
- V(AuthDirMaxServersPerAuthAddr,UINT, "0"),
V(ClientBootstrapConsensusAuthorityDownloadSchedule, CSV_INTERVAL,
"0, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 16, 32, 60"),
V(ClientBootstrapConsensusFallbackDownloadSchedule, CSV_INTERVAL,
@@ -1778,25 +1779,6 @@ options_act(const or_options_t *old_options)
monitor_owning_controller_process(options->OwningControllerProcess);
- /* We must create new keys after we poison the directories, because our
- * poisoning code checks for existing keys, and refuses to modify their
- * directories. */
-
- /* If we use non-anonymous single onion services, make sure we poison any
- new hidden service directories, so that we never accidentally launch the
- non-anonymous hidden services thinking they are anonymous. */
- if (running_tor && rend_service_non_anonymous_mode_enabled(options)) {
- if (options->RendConfigLines && !num_rend_services()) {
- log_warn(LD_BUG,"Error: hidden services configured, but not parsed.");
- return -1;
- }
- if (rend_service_poison_new_single_onion_dirs(NULL) < 0) {
- log_warn(LD_GENERAL,"Failed to mark new hidden services as non-anonymous"
- ".");
- return -1;
- }
- }
-
/* reload keys as needed for rendezvous services. */
if (rend_service_load_all_keys(NULL)<0) {
log_warn(LD_GENERAL,"Error loading rendezvous service keys");
@@ -1916,7 +1898,7 @@ options_act(const or_options_t *old_options)
addressmap_clear_invalid_automaps(options);
/* How long should we delay counting bridge stats after becoming a bridge?
- * We use this so we don't count people who used our bridge thinking it is
+ * We use this so we don't count clients who used our bridge thinking it is
* a relay. If you change this, don't forget to change the log message
* below. It's 4 hours (the time it takes to stop being used by clients)
* plus some extra time for clock skew. */
@@ -2940,21 +2922,6 @@ options_validate_single_onion(or_options_t *options, char **msg)
options->UseEntryGuards = 0;
}
- /* Check if existing hidden service keys were created in a different
- * single onion service mode, and refuse to launch if they
- * have. We'll poison new keys in options_act() just before we create them.
- */
- if (rend_service_list_verify_single_onion_poison(NULL, options) < 0) {
- log_warn(LD_GENERAL, "We are configured with "
- "HiddenServiceNonAnonymousMode %d, but one or more hidden "
- "service keys were created in %s mode. This is not allowed.",
- rend_service_non_anonymous_mode_enabled(options) ? 1 : 0,
- rend_service_non_anonymous_mode_enabled(options) ?
- "an anonymous" : "a non-anonymous"
- );
- return -1;
- }
-
return 0;
}
@@ -3087,7 +3054,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
} else if (!strcasecmp(options->TransProxyType, "ipfw")) {
#ifndef KERNEL_MAY_SUPPORT_IPFW
/* Earlier versions of OS X have ipfw */
- REJECT("ipfw is a FreeBSD-specific"
+ REJECT("ipfw is a FreeBSD-specific "
"and OS X/Darwin-specific feature.");
#else
options->TransProxyType_parsed = TPT_IPFW;
diff --git a/src/or/connection.c b/src/or/connection.c
index 2e3df34a5a..ac3408a72e 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -644,7 +644,7 @@ connection_free_(connection_t *conn)
if (conn->type == CONN_TYPE_OR &&
!tor_digest_is_zero(TO_OR_CONN(conn)->identity_digest)) {
log_warn(LD_BUG, "called on OR conn with non-zeroed identity_digest");
- connection_or_remove_from_identity_map(TO_OR_CONN(conn));
+ connection_or_clear_identity(TO_OR_CONN(conn));
}
if (conn->type == CONN_TYPE_OR || conn->type == CONN_TYPE_EXT_OR) {
connection_or_remove_from_ext_or_id_map(TO_OR_CONN(conn));
@@ -675,7 +675,7 @@ connection_free,(connection_t *conn))
}
if (connection_speaks_cells(conn)) {
if (!tor_digest_is_zero(TO_OR_CONN(conn)->identity_digest)) {
- connection_or_remove_from_identity_map(TO_OR_CONN(conn));
+ connection_or_clear_identity(TO_OR_CONN(conn));
}
}
if (conn->type == CONN_TYPE_CONTROL) {
@@ -1595,16 +1595,19 @@ connection_handle_listener_read(connection_t *conn, int new_type)
/* remember the remote address */
tor_addr_copy(&newconn->addr, &addr);
- newconn->port = port;
- newconn->address = tor_addr_to_str_dup(&addr);
+ if (new_type == CONN_TYPE_AP && conn->socket_family == AF_UNIX) {
+ newconn->port = 0;
+ newconn->address = tor_strdup(conn->address);
+ } else {
+ newconn->port = port;
+ newconn->address = tor_addr_to_str_dup(&addr);
+ }
if (new_type == CONN_TYPE_AP && conn->socket_family != AF_UNIX) {
log_info(LD_NET, "New SOCKS connection opened from %s.",
fmt_and_decorate_addr(&addr));
}
if (new_type == CONN_TYPE_AP && conn->socket_family == AF_UNIX) {
- newconn->port = 0;
- newconn->address = tor_strdup(conn->address);
log_info(LD_NET, "New SOCKS AF_UNIX connection opened");
}
if (new_type == CONN_TYPE_CONTROL) {
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c
index 875c911f01..fb077bb0c5 100644
--- a/src/or/connection_edge.c
+++ b/src/or/connection_edge.c
@@ -1300,7 +1300,7 @@ connection_ap_handshake_rewrite(entry_connection_t *conn,
* an internal address? If so, we should reject it if we're configured to
* do so. */
if (options->ClientDNSRejectInternalAddresses) {
- /* Don't let people try to do a reverse lookup on 10.0.0.1. */
+ /* Don't let clients try to do a reverse lookup on 10.0.0.1. */
tor_addr_t addr;
int ok;
ok = tor_addr_parse_PTR_name(
@@ -1627,11 +1627,9 @@ connection_ap_handshake_rewrite_and_attach(entry_connection_t *conn,
}
tor_assert(!automap);
rep_hist_note_used_resolve(now); /* help predict this next time */
- }
+ } else if (socks->command == SOCKS_COMMAND_CONNECT) {
+ /* Now see if this is a connect request that we can reject immediately */
- /* Now see if this is a connect request that we can reject immediately */
- if (socks->command == SOCKS_COMMAND_CONNECT) {
- /* Special handling for attempts to connect */
tor_assert(!automap);
/* Don't allow connections to port 0. */
if (socks->port == 0) {
@@ -1771,7 +1769,7 @@ connection_ap_handshake_rewrite_and_attach(entry_connection_t *conn,
rep_hist_note_used_resolve(now); /* help predict this next time */
/* no extra processing needed */
} else {
- /* We should only be doing CONNECT or RESOLVE! */
+ /* We should only be doing CONNECT, RESOLVE, or RESOLVE_PTR! */
tor_fragile_assert();
}
diff --git a/src/or/connection_or.c b/src/or/connection_or.c
index eb67f0653f..635d3e416a 100644
--- a/src/or/connection_or.c
+++ b/src/or/connection_or.c
@@ -75,56 +75,25 @@ static void connection_or_mark_bad_for_new_circs(or_connection_t *or_conn);
static void connection_or_change_state(or_connection_t *conn, uint8_t state);
-/**************************************************************/
+static void connection_or_check_canonicity(or_connection_t *conn,
+ int started_here);
-/** Map from identity digest of connected OR or desired OR to a connection_t
- * with that identity digest. If there is more than one such connection_t,
- * they form a linked list, with next_with_same_id as the next pointer. */
-static digestmap_t *orconn_identity_map = NULL;
+/**************************************************************/
/** Global map between Extended ORPort identifiers and OR
* connections. */
static digestmap_t *orconn_ext_or_id_map = NULL;
-/** If conn is listed in orconn_identity_map, remove it, and clear
- * conn->identity_digest. Otherwise do nothing. */
+/** Clear clear conn->identity_digest and update other data
+ * structures as appropriate.*/
void
-connection_or_remove_from_identity_map(or_connection_t *conn)
+connection_or_clear_identity(or_connection_t *conn)
{
- or_connection_t *tmp;
tor_assert(conn);
- if (!orconn_identity_map)
- return;
- tmp = digestmap_get(orconn_identity_map, conn->identity_digest);
- if (!tmp) {
- if (!tor_digest_is_zero(conn->identity_digest)) {
- log_warn(LD_BUG, "Didn't find connection '%s' on identity map when "
- "trying to remove it.",
- conn->nickname ? conn->nickname : "NULL");
- }
- return;
- }
- if (conn == tmp) {
- if (conn->next_with_same_id)
- digestmap_set(orconn_identity_map, conn->identity_digest,
- conn->next_with_same_id);
- else
- digestmap_remove(orconn_identity_map, conn->identity_digest);
- } else {
- while (tmp->next_with_same_id) {
- if (tmp->next_with_same_id == conn) {
- tmp->next_with_same_id = conn->next_with_same_id;
- break;
- }
- tmp = tmp->next_with_same_id;
- }
- }
memset(conn->identity_digest, 0, DIGEST_LEN);
- conn->next_with_same_id = NULL;
}
-/** Remove all entries from the identity-to-orconn map, and clear
- * all identities in OR conns.*/
+/** Clear all identities in OR conns.*/
void
connection_or_clear_identity_map(void)
{
@@ -132,60 +101,72 @@ connection_or_clear_identity_map(void)
SMARTLIST_FOREACH(conns, connection_t *, conn,
{
if (conn->type == CONN_TYPE_OR) {
- or_connection_t *or_conn = TO_OR_CONN(conn);
- memset(or_conn->identity_digest, 0, DIGEST_LEN);
- or_conn->next_with_same_id = NULL;
+ connection_or_clear_identity(TO_OR_CONN(conn));
}
});
-
- digestmap_free(orconn_identity_map, NULL);
- orconn_identity_map = NULL;
}
/** Change conn->identity_digest to digest, and add conn into
- * orconn_digest_map. */
+ * the appropriate digest maps.
+ *
+ * NOTE that this function only allows two kinds of transitions: from
+ * unset identity to set identity, and from idempotent re-settings
+ * of the same identity. It's not allowed to clear an identity or to
+ * change an identity. Return 0 on success, and -1 if the transition
+ * is not allowed.
+ **/
static void
connection_or_set_identity_digest(or_connection_t *conn,
const char *rsa_digest,
const ed25519_public_key_t *ed_id)
{
- (void) ed_id; // DOCDOC // XXXX not implemented yet.
- or_connection_t *tmp;
+ channel_t *chan = NULL;
tor_assert(conn);
tor_assert(rsa_digest);
- if (!orconn_identity_map)
- orconn_identity_map = digestmap_new();
- if (tor_memeq(conn->identity_digest, rsa_digest, DIGEST_LEN))
+ if (conn->chan)
+ chan = TLS_CHAN_TO_BASE(conn->chan);
+
+ log_info(LD_HANDSHAKE, "Set identity digest for %p (%s): %s %s.",
+ conn,
+ escaped_safe_str(conn->base_.address),
+ hex_str(rsa_digest, DIGEST_LEN),
+ ed25519_fmt(ed_id));
+ log_info(LD_HANDSHAKE, " (Previously: %s %s)",
+ hex_str(conn->identity_digest, DIGEST_LEN),
+ chan ? ed25519_fmt(&chan->ed25519_identity) : "<null>");
+
+ const int rsa_id_was_set = ! tor_digest_is_zero(conn->identity_digest);
+ const int ed_id_was_set =
+ chan && !ed25519_public_key_is_zero(&chan->ed25519_identity);
+ const int rsa_changed =
+ tor_memneq(conn->identity_digest, rsa_digest, DIGEST_LEN);
+ const int ed_changed = ed_id_was_set &&
+ (!ed_id || !ed25519_pubkey_eq(ed_id, &chan->ed25519_identity));
+
+ tor_assert(!rsa_changed || !rsa_id_was_set);
+ tor_assert(!ed_changed || !ed_id_was_set);
+
+ if (!rsa_changed && !ed_changed)
return;
/* If the identity was set previously, remove the old mapping. */
- if (! tor_digest_is_zero(conn->identity_digest)) {
- connection_or_remove_from_identity_map(conn);
- if (conn->chan)
- channel_clear_identity_digest(TLS_CHAN_TO_BASE(conn->chan));
+ if (rsa_id_was_set) {
+ connection_or_clear_identity(conn);
+ if (chan)
+ channel_clear_identity_digest(chan);
}
memcpy(conn->identity_digest, rsa_digest, DIGEST_LEN);
- /* If we're setting the ID to zero, don't add a mapping. */
- if (tor_digest_is_zero(rsa_digest))
+ /* If we're initializing the IDs to zero, don't add a mapping yet. */
+ if (tor_digest_is_zero(rsa_digest) &&
+ (!ed_id || ed25519_public_key_is_zero(ed_id)))
return;
- tmp = digestmap_set(orconn_identity_map, rsa_digest, conn);
- conn->next_with_same_id = tmp;
-
/* Deal with channels */
- if (conn->chan)
- channel_set_identity_digest(TLS_CHAN_TO_BASE(conn->chan), rsa_digest);
-
-#if 1
- /* Testing code to check for bugs in representation. */
- for (; tmp; tmp = tmp->next_with_same_id) {
- tor_assert(tor_memeq(tmp->identity_digest, rsa_digest, DIGEST_LEN));
- tor_assert(tmp != conn);
- }
-#endif
+ if (chan)
+ channel_set_identity_digest(chan, rsa_digest, ed_id);
}
/** Remove the Extended ORPort identifier of <b>conn</b> from the
@@ -883,14 +864,44 @@ connection_or_init_conn_from_address(or_connection_t *conn,
const ed25519_public_key_t *ed_id,
int started_here)
{
- (void) ed_id; // not fully used yet.
- const node_t *r = node_get_by_id(id_digest);
+ log_debug(LD_HANDSHAKE, "init conn from address %s: %s, %s (%d)",
+ fmt_addr(addr),
+ hex_str((const char*)id_digest, DIGEST_LEN),
+ ed25519_fmt(ed_id),
+ started_here);
+
connection_or_set_identity_digest(conn, id_digest, ed_id);
connection_or_update_token_buckets_helper(conn, 1, get_options());
conn->base_.port = port;
tor_addr_copy(&conn->base_.addr, addr);
tor_addr_copy(&conn->real_addr, addr);
+
+ connection_or_check_canonicity(conn, started_here);
+}
+
+/** Check whether the identity of <b>conn</b> matches a known node. If it
+ * does, check whether the address of conn matches the expected address, and
+ * update the connection's is_canonical flag, nickname, and address fields as
+ * appropriate. */
+static void
+connection_or_check_canonicity(or_connection_t *conn, int started_here)
+{
+ const char *id_digest = conn->identity_digest;
+ const ed25519_public_key_t *ed_id = NULL;
+ const tor_addr_t *addr = &conn->real_addr;
+ if (conn->chan)
+ ed_id = & TLS_CHAN_TO_BASE(conn->chan)->ed25519_identity;
+
+ const node_t *r = node_get_by_id(id_digest);
+ if (r &&
+ node_supports_ed25519_link_authentication(r) &&
+ ! node_ed25519_id_matches(r, ed_id)) {
+ /* If this node is capable of proving an ed25519 ID,
+ * we can't call this a canonical connection unless both IDs match. */
+ r = NULL;
+ }
+
if (r) {
tor_addr_port_t node_ap;
node_get_pref_orport(r, &node_ap);
@@ -912,10 +923,12 @@ connection_or_init_conn_from_address(or_connection_t *conn,
tor_addr_copy(&conn->base_.addr, &node_ap.addr);
conn->base_.port = node_ap.port;
}
+ tor_free(conn->nickname);
conn->nickname = tor_strdup(node_get_nickname(r));
tor_free(conn->base_.address);
conn->base_.address = tor_addr_to_str_dup(&node_ap.addr);
} else {
+ tor_free(conn->nickname);
conn->nickname = tor_malloc(HEX_DIGEST_LEN+2);
conn->nickname[0] = '$';
base16_encode(conn->nickname+1, HEX_DIGEST_LEN+1,
@@ -961,7 +974,7 @@ connection_or_mark_bad_for_new_circs(or_connection_t *or_conn)
* too old for new circuits? */
#define TIME_BEFORE_OR_CONN_IS_TOO_OLD (60*60*24*7)
-/** Given the head of the linked list for all the or_connections with a given
+/** Given a list of all the or_connections with a given
* identity, set elements of that list as is_bad_for_new_circs as
* appropriate. Helper for connection_or_set_bad_connections().
*
@@ -978,16 +991,19 @@ connection_or_mark_bad_for_new_circs(or_connection_t *or_conn)
* See channel_is_better() in channel.c for our idea of what makes one OR
* connection better than another.
*/
-static void
-connection_or_group_set_badness(or_connection_t *head, int force)
+void
+connection_or_group_set_badness_(smartlist_t *group, int force)
{
- or_connection_t *or_conn = NULL, *best = NULL;
+ /* XXXX this function should be entirely about channels, not OR
+ * XXXX connections. */
+
+ or_connection_t *best = NULL;
int n_old = 0, n_inprogress = 0, n_canonical = 0, n_other = 0;
time_t now = time(NULL);
/* Pass 1: expire everything that's old, and see what the status of
* everything else is. */
- for (or_conn = head; or_conn; or_conn = or_conn->next_with_same_id) {
+ SMARTLIST_FOREACH_BEGIN(group, or_connection_t *, or_conn) {
if (or_conn->base_.marked_for_close ||
connection_or_is_bad_for_new_circs(or_conn))
continue;
@@ -1011,11 +1027,11 @@ connection_or_group_set_badness(or_connection_t *head, int force)
} else {
++n_other;
}
- }
+ } SMARTLIST_FOREACH_END(or_conn);
/* Pass 2: We know how about how good the best connection is.
* expire everything that's worse, and find the very best if we can. */
- for (or_conn = head; or_conn; or_conn = or_conn->next_with_same_id) {
+ SMARTLIST_FOREACH_BEGIN(group, or_connection_t *, or_conn) {
if (or_conn->base_.marked_for_close ||
connection_or_is_bad_for_new_circs(or_conn))
continue; /* This one doesn't need to be marked bad. */
@@ -1042,7 +1058,7 @@ connection_or_group_set_badness(or_connection_t *head, int force)
0)) {
best = or_conn;
}
- }
+ } SMARTLIST_FOREACH_END(or_conn);
if (!best)
return;
@@ -1061,7 +1077,7 @@ connection_or_group_set_badness(or_connection_t *head, int force)
* 0.1.2.x dies out, the first case will go away, and the second one is
* "mostly harmless", so a fix can wait until somebody is bored.
*/
- for (or_conn = head; or_conn; or_conn = or_conn->next_with_same_id) {
+ SMARTLIST_FOREACH_BEGIN(group, or_connection_t *, or_conn) {
if (or_conn->base_.marked_for_close ||
connection_or_is_bad_for_new_circs(or_conn) ||
or_conn->base_.state != OR_CONN_STATE_OPEN)
@@ -1095,24 +1111,7 @@ connection_or_group_set_badness(or_connection_t *head, int force)
connection_or_mark_bad_for_new_circs(or_conn);
}
}
- }
-}
-
-/** Go through all the OR connections (or if <b>digest</b> is non-NULL, just
- * the OR connections with that digest), and set the is_bad_for_new_circs
- * flag based on the rules in connection_or_group_set_badness() (or just
- * always set it if <b>force</b> is true).
- */
-void
-connection_or_set_bad_connections(const char *digest, int force)
-{
- if (!orconn_identity_map)
- return;
-
- DIGESTMAP_FOREACH(orconn_identity_map, identity, or_connection_t *, conn) {
- if (!digest || tor_memeq(digest, conn->identity_digest, DIGEST_LEN))
- connection_or_group_set_badness(conn, force);
- } DIGESTMAP_FOREACH_END;
+ } SMARTLIST_FOREACH_END(or_conn);
}
/** <b>conn</b> is in the 'connecting' state, and it failed to complete
@@ -1182,7 +1181,6 @@ connection_or_connect, (const tor_addr_t *_addr, uint16_t port,
const ed25519_public_key_t *ed_id,
channel_tls_t *chan))
{
- (void) ed_id; // XXXX not fully used yet.
or_connection_t *conn;
const or_options_t *options = get_options();
int socket_error = 0;
@@ -1201,6 +1199,11 @@ connection_or_connect, (const tor_addr_t *_addr, uint16_t port,
log_info(LD_PROTOCOL,"Client asked me to connect to myself. Refusing.");
return NULL;
}
+ if (server_mode(options) && router_ed25519_id_is_me(ed_id)) {
+ log_info(LD_PROTOCOL,"Client asked me to connect to myself by Ed25519 "
+ "identity. Refusing.");
+ return NULL;
+ }
conn = or_connection_new(CONN_TYPE_OR, tor_addr_family(&addr));
@@ -1570,20 +1573,25 @@ connection_or_check_valid_tls_handshake(or_connection_t *conn,
crypto_pk_free(identity_rcvd);
- if (started_here)
+ if (started_here) {
+ /* A TLS handshake can't teach us an Ed25519 ID, so we set it to NULL
+ * here. */
+ log_debug(LD_HANDSHAKE, "Calling client_learned_peer_id from "
+ "check_valid_tls_handshake");
return connection_or_client_learned_peer_id(conn,
(const uint8_t*)digest_rcvd_out,
- NULL // Ed25519 ID
- );
+ NULL);
+ }
return 0;
}
/** Called when we (as a connection initiator) have definitively,
* authenticatedly, learned that ID of the Tor instance on the other
- * side of <b>conn</b> is <b>peer_id</b>. For v1 and v2 handshakes,
+ * side of <b>conn</b> is <b>rsa_peer_id</b> and optionally <b>ed_peer_id</b>.
+ * For v1 and v2 handshakes,
* this is right after we get a certificate chain in a TLS handshake
- * or renegotiation. For v3 handshakes, this is right after we get a
+ * or renegotiation. For v3+ handshakes, this is right after we get a
* certificate chain in a CERTS cell.
*
* If we did not know the ID before, record the one we got.
@@ -1607,11 +1615,26 @@ connection_or_client_learned_peer_id(or_connection_t *conn,
const uint8_t *rsa_peer_id,
const ed25519_public_key_t *ed_peer_id)
{
- (void) ed_peer_id; // not used yet.
-
const or_options_t *options = get_options();
-
- if (tor_digest_is_zero(conn->identity_digest)) {
+ channel_tls_t *chan_tls = conn->chan;
+ channel_t *chan = channel_tls_to_base(chan_tls);
+ int changed_identity = 0;
+ tor_assert(chan);
+
+ const int expected_rsa_key =
+ ! tor_digest_is_zero(conn->identity_digest);
+ const int expected_ed_key =
+ ! ed25519_public_key_is_zero(&chan->ed25519_identity);
+
+ log_info(LD_HANDSHAKE, "learned peer id for %p (%s): %s, %s",
+ conn,
+ safe_str_client(conn->base_.address),
+ hex_str((const char*)rsa_peer_id, DIGEST_LEN),
+ ed25519_fmt(ed_peer_id));
+
+ if (! expected_rsa_key && ! expected_ed_key) {
+ log_info(LD_HANDSHAKE, "(we had no ID in mind when we made this "
+ "connection.");
connection_or_set_identity_digest(conn,
(const char*)rsa_peer_id, ed_peer_id);
tor_free(conn->nickname);
@@ -1625,16 +1648,39 @@ connection_or_client_learned_peer_id(or_connection_t *conn,
/* if it's a bridge and we didn't know its identity fingerprint, now
* we do -- remember it for future attempts. */
learned_router_identity(&conn->base_.addr, conn->base_.port,
- (const char*)rsa_peer_id /*, ed_peer_id XXXX */);
+ (const char*)rsa_peer_id, ed_peer_id);
+ changed_identity = 1;
}
- if (tor_memneq(rsa_peer_id, conn->identity_digest, DIGEST_LEN)) {
+ const int rsa_mismatch = expected_rsa_key &&
+ tor_memneq(rsa_peer_id, conn->identity_digest, DIGEST_LEN);
+ /* It only counts as an ed25519 mismatch if we wanted an ed25519 identity
+ * and didn't get it. It's okay if we get one that we didn't ask for. */
+ const int ed25519_mismatch =
+ expected_ed_key &&
+ (ed_peer_id == NULL ||
+ ! ed25519_pubkey_eq(&chan->ed25519_identity, ed_peer_id));
+
+ if (rsa_mismatch || ed25519_mismatch) {
/* I was aiming for a particular digest. I didn't get it! */
- char seen[HEX_DIGEST_LEN+1];
- char expected[HEX_DIGEST_LEN+1];
- base16_encode(seen, sizeof(seen), (const char*)rsa_peer_id, DIGEST_LEN);
- base16_encode(expected, sizeof(expected), conn->identity_digest,
+ char seen_rsa[HEX_DIGEST_LEN+1];
+ char expected_rsa[HEX_DIGEST_LEN+1];
+ char seen_ed[ED25519_BASE64_LEN+1];
+ char expected_ed[ED25519_BASE64_LEN+1];
+ base16_encode(seen_rsa, sizeof(seen_rsa),
+ (const char*)rsa_peer_id, DIGEST_LEN);
+ base16_encode(expected_rsa, sizeof(expected_rsa), conn->identity_digest,
DIGEST_LEN);
+ if (ed_peer_id) {
+ ed25519_public_to_base64(seen_ed, ed_peer_id);
+ } else {
+ strlcpy(seen_ed, "no ed25519 key", sizeof(seen_ed));
+ }
+ if (! ed25519_public_key_is_zero(&chan->ed25519_identity)) {
+ ed25519_public_to_base64(expected_ed, &chan->ed25519_identity);
+ } else {
+ strlcpy(expected_ed, "no ed25519 key", sizeof(expected_ed));
+ }
const int using_hardcoded_fingerprints =
!networkstatus_get_reasonably_live_consensus(time(NULL),
usable_consensus_flavor());
@@ -1669,9 +1715,11 @@ connection_or_client_learned_peer_id(or_connection_t *conn,
}
log_fn(severity, LD_HANDSHAKE,
- "Tried connecting to router at %s:%d, but identity key was not "
- "as expected: wanted %s but got %s.%s",
- conn->base_.address, conn->base_.port, expected, seen, extra_log);
+ "Tried connecting to router at %s:%d, but RSA identity key was not "
+ "as expected: wanted %s + %s but got %s + %s.%s",
+ conn->base_.address, conn->base_.port,
+ expected_rsa, expected_ed, seen_rsa, seen_ed, extra_log);
+
entry_guard_register_connect_status(conn->identity_digest, 0, 1,
time(NULL));
control_event_or_conn_status(conn, OR_CONN_EVENT_FAILED,
@@ -1683,9 +1731,24 @@ connection_or_client_learned_peer_id(or_connection_t *conn,
conn);
return -1;
}
+
+ if (!expected_ed_key && ed_peer_id) {
+ log_info(LD_HANDSHAKE, "(we had no Ed25519 ID in mind when we made this "
+ "connection.");
+ connection_or_set_identity_digest(conn,
+ (const char*)rsa_peer_id, ed_peer_id);
+ changed_identity = 1;
+ }
+
+ if (changed_identity) {
+ /* If we learned an identity for this connection, then we might have
+ * just discovered it to be canonical. */
+ connection_or_check_canonicity(conn, conn->handshake_state->started_here);
+ }
+
if (authdir_mode_tests_reachability(options)) {
dirserv_orconn_tls_done(&conn->base_.addr, conn->base_.port,
- (const char*)rsa_peer_id /*, ed_id XXXX */);
+ (const char*)rsa_peer_id, ed_peer_id);
}
return 0;
diff --git a/src/or/connection_or.h b/src/or/connection_or.h
index da95718ac9..80a5bddb14 100644
--- a/src/or/connection_or.h
+++ b/src/or/connection_or.h
@@ -12,14 +12,13 @@
#ifndef TOR_CONNECTION_OR_H
#define TOR_CONNECTION_OR_H
-void connection_or_remove_from_identity_map(or_connection_t *conn);
+void connection_or_clear_identity(or_connection_t *conn);
void connection_or_clear_identity_map(void);
void clear_broken_connection_map(int disable);
or_connection_t *connection_or_get_for_extend(const char *digest,
const tor_addr_t *target_addr,
const char **msg_out,
int *launch_out);
-void connection_or_set_bad_connections(const char *digest, int force);
void connection_or_block_renegotiation(or_connection_t *conn);
int connection_or_reached_eof(or_connection_t *conn);
@@ -111,5 +110,7 @@ void var_cell_free(var_cell_t *cell);
/* DOCDOC */
#define MIN_LINK_PROTO_FOR_WIDE_CIRC_IDS 4
+void connection_or_group_set_badness_(smartlist_t *group, int force);
+
#endif
diff --git a/src/or/control.c b/src/or/control.c
index 96cc41bc4b..a22113174a 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -1705,7 +1705,7 @@ getinfo_helper_misc(control_connection_t *conn, const char *question,
*answer = tor_strdup("VERBOSE_NAMES EXTENDED_EVENTS");
} else if (!strcmp(question, "address")) {
uint32_t addr;
- if (router_pick_published_address(get_options(), &addr) < 0) {
+ if (router_pick_published_address(get_options(), &addr, 0) < 0) {
*errmsg = "Address unknown";
return -1;
}
@@ -2029,7 +2029,7 @@ getinfo_helper_dir(control_connection_t *control_conn,
} else if (!strcmpstart(question, "dir/status/")) {
*answer = tor_strdup("");
} else if (!strcmp(question, "dir/status-vote/current/consensus")) { /* v3 */
- if (directory_caches_dir_info(get_options())) {
+ if (we_want_to_fetch_flavor(get_options(), FLAV_NS)) {
const cached_dir_t *consensus = dirserv_get_consensus("ns");
if (consensus)
*answer = tor_strdup(consensus->dir);
diff --git a/src/or/directory.c b/src/or/directory.c
index 65ddd7d583..84623593ab 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -2939,6 +2939,28 @@ handle_get_frontpage(dir_connection_t *conn, const get_handler_args_t *args)
return 0;
}
+/** Warn that the consensus <b>v</b> of type <b>flavor</b> is too old and will
+ * not be served to clients. Rate-limit the warning to avoid logging an entry
+ * on every request.
+ */
+static void
+warn_consensus_is_too_old(networkstatus_t *v, const char *flavor, time_t now)
+{
+#define TOO_OLD_WARNING_INTERVAL (60*60)
+ static ratelim_t warned = RATELIM_INIT(TOO_OLD_WARNING_INTERVAL);
+ char timestamp[ISO_TIME_LEN+1];
+ char *dupes;
+
+ if ((dupes = rate_limit_log(&warned, now))) {
+ format_local_iso_time(timestamp, v->valid_until);
+ log_warn(LD_DIRSERV, "Our %s%sconsensus is too old, so we will not "
+ "serve it to clients. It was valid until %s local time and we "
+ "continued to serve it for up to 24 hours after it expired.%s",
+ flavor ? flavor : "", flavor ? " " : "", timestamp, dupes);
+ tor_free(dupes);
+ }
+}
+
/** Helper function for GET /tor/status-vote/current/consensus
*/
static int
@@ -2983,6 +3005,15 @@ handle_get_current_consensus(dir_connection_t *conn,
v = networkstatus_get_latest_consensus_by_flavor(flav);
+ if (v && !networkstatus_consensus_reasonably_live(v, now)) {
+ write_http_status_line(conn, 404, "Consensus is too old");
+ warn_consensus_is_too_old(v, flavor, now);
+ smartlist_free(dir_fps);
+ geoip_note_ns_response(GEOIP_REJECT_NOT_FOUND);
+ tor_free(flavor);
+ goto done;
+ }
+
if (v && want_fps &&
!client_likes_consensus(v, want_fps)) {
write_http_status_line(conn, 404, "Consensus not signed by sufficient "
@@ -3988,10 +4019,12 @@ STATIC int
next_random_exponential_delay(int delay, int max_delay)
{
/* Check preconditions */
+ if (BUG(max_delay < 0))
+ max_delay = 0;
if (BUG(delay > max_delay))
delay = max_delay;
- if (BUG(delay == INT_MAX))
- delay -= 1; /* prevent overflow */
+ if (delay == INT_MAX)
+ return INT_MAX; /* prevent overflow */
if (BUG(delay < 0))
delay = 0;
diff --git a/src/or/dirserv.c b/src/or/dirserv.c
index c797c9aa0e..4d349ddf16 100644
--- a/src/or/dirserv.c
+++ b/src/or/dirserv.c
@@ -1033,7 +1033,8 @@ directory_fetches_from_authorities(const or_options_t *options)
return 1;
if (options->BridgeRelay == 1)
return 0;
- if (server_mode(options) && router_pick_published_address(options, &addr)<0)
+ if (server_mode(options) &&
+ router_pick_published_address(options, &addr, 1) < 0)
return 1; /* we don't know our IP address; ask an authority. */
refuseunknown = ! router_my_exit_policy_is_reject_star() &&
should_refuse_unknown_exits(options);
@@ -1068,8 +1069,10 @@ directory_fetches_dir_info_later(const or_options_t *options)
return options->UseBridges != 0;
}
-/** Return true iff we want to fetch and keep certificates for authorities
+/** Return true iff we want to serve certificates for authorities
* that we don't acknowledge as authorities ourself.
+ * Use we_want_to_fetch_unknown_auth_certs to check if we want to fetch
+ * and keep these certificates.
*/
int
directory_caches_unknown_auth_certs(const or_options_t *options)
@@ -1077,11 +1080,14 @@ directory_caches_unknown_auth_certs(const or_options_t *options)
return dir_server_mode(options) || options->BridgeRelay;
}
-/** Return 1 if we want to keep descriptors, networkstatuses, etc around.
+/** Return 1 if we want to fetch and serve descriptors, networkstatuses, etc
* Else return 0.
* Check options->DirPort_set and directory_permits_begindir_requests()
* to see if we are willing to serve these directory documents to others via
* the DirPort and begindir-over-ORPort, respectively.
+ *
+ * To check if we should fetch documents, use we_want_to_fetch_flavor and
+ * we_want_to_fetch_unknown_auth_certs instead of this function.
*/
int
directory_caches_dir_info(const or_options_t *options)
@@ -1096,7 +1102,7 @@ directory_caches_dir_info(const or_options_t *options)
should_refuse_unknown_exits(options);
}
-/** Return 1 if we want to allow remote people to ask us directory
+/** Return 1 if we want to allow remote clients to ask us directory
* requests via the "begin_dir" interface, which doesn't require
* having any separate port open. */
int
@@ -2050,12 +2056,8 @@ get_possible_sybil_list(const smartlist_t *routers)
int addr_count;
/* Allow at most this number of Tor servers on a single IP address, ... */
int max_with_same_addr = options->AuthDirMaxServersPerAddr;
- /* ... unless it's a directory authority, in which case allow more. */
- int max_with_same_addr_on_authority = options->AuthDirMaxServersPerAuthAddr;
if (max_with_same_addr <= 0)
max_with_same_addr = INT_MAX;
- if (max_with_same_addr_on_authority <= 0)
- max_with_same_addr_on_authority = INT_MAX;
smartlist_add_all(routers_by_ip, routers);
smartlist_sort(routers_by_ip, compare_routerinfo_by_ip_and_bw_);
@@ -2068,9 +2070,7 @@ get_possible_sybil_list(const smartlist_t *routers)
last_addr = ri->addr;
addr_count = 1;
} else if (++addr_count > max_with_same_addr) {
- if (!router_addr_is_trusted_dir(ri->addr) ||
- addr_count > max_with_same_addr_on_authority)
- digestmap_set(omit_as_sybil, ri->cache_info.identity_digest, ri);
+ digestmap_set(omit_as_sybil, ri->cache_info.identity_digest, ri);
}
} SMARTLIST_FOREACH_END(ri);
@@ -2230,8 +2230,8 @@ dirserv_set_routerstatus_testing(routerstatus_t *rs)
}
/** Routerstatus <b>rs</b> is part of a group of routers that are on
- * too narrow an IP-space. Clear out its flags: we don't want people
- * using it.
+ * too narrow an IP-space. Clear out its flags since we don't want it be used
+ * because of its Sybil-like appearance.
*/
static void
clear_status_flags_on_sybil(routerstatus_t *rs)
@@ -3170,7 +3170,8 @@ dirserv_get_routerdescs(smartlist_t *descs_out, const char *key,
void
dirserv_orconn_tls_done(const tor_addr_t *addr,
uint16_t or_port,
- const char *digest_rcvd)
+ const char *digest_rcvd,
+ const ed25519_public_key_t *ed_id_rcvd)
{
node_t *node = NULL;
tor_addr_port_t orport;
@@ -3182,8 +3183,25 @@ dirserv_orconn_tls_done(const tor_addr_t *addr,
node = node_get_mutable_by_id(digest_rcvd);
if (node == NULL || node->ri == NULL)
return;
+
ri = node->ri;
+ if (get_options()->AuthDirTestEd25519LinkKeys &&
+ ri->cache_info.signing_key_cert) {
+ /* We allow the node to have an ed25519 key if we haven't been told one in
+ * the routerinfo, but if we *HAVE* been told one in the routerinfo, it
+ * needs to match. */
+ const ed25519_public_key_t *expected_id =
+ &ri->cache_info.signing_key_cert->signing_key;
+ tor_assert(!ed25519_public_key_is_zero(expected_id));
+ if (! ed_id_rcvd || ! ed25519_pubkey_eq(ed_id_rcvd, expected_id)) {
+ log_info(LD_DIRSERV, "Router at %s:%d with RSA ID %s "
+ "did not present expected Ed25519 ID.",
+ fmt_addr(addr), or_port, hex_str(digest_rcvd, DIGEST_LEN));
+ return; /* Don't mark it as reachable. */
+ }
+ }
+
tor_addr_copy(&orport.addr, addr);
orport.port = or_port;
if (router_has_orport(ri, &orport)) {
@@ -3239,23 +3257,31 @@ dirserv_should_launch_reachability_test(const routerinfo_t *ri,
void
dirserv_single_reachability_test(time_t now, routerinfo_t *router)
{
+ const or_options_t *options = get_options();
channel_t *chan = NULL;
node_t *node = NULL;
tor_addr_t router_addr;
+ const ed25519_public_key_t *ed_id_key;
(void) now;
tor_assert(router);
node = node_get_mutable_by_id(router->cache_info.identity_digest);
tor_assert(node);
+ if (options->AuthDirTestEd25519LinkKeys &&
+ node_supports_ed25519_link_authentication(node)) {
+ ed_id_key = &router->cache_info.signing_key_cert->signing_key;
+ } else {
+ ed_id_key = NULL;
+ }
+
/* IPv4. */
log_debug(LD_OR,"Testing reachability of %s at %s:%u.",
router->nickname, fmt_addr32(router->addr), router->or_port);
tor_addr_from_ipv4h(&router_addr, router->addr);
chan = channel_tls_connect(&router_addr, router->or_port,
router->cache_info.identity_digest,
- NULL // XXXX Ed25519 ID.
- );
+ ed_id_key);
if (chan) command_setup_channel(chan);
/* Possible IPv6. */
@@ -3268,8 +3294,7 @@ dirserv_single_reachability_test(time_t now, routerinfo_t *router)
router->ipv6_orport);
chan = channel_tls_connect(&router->ipv6_addr, router->ipv6_orport,
router->cache_info.identity_digest,
- NULL // XXXX Ed25519 ID.
- );
+ ed_id_key);
if (chan) command_setup_channel(chan);
}
}
diff --git a/src/or/dirserv.h b/src/or/dirserv.h
index 1e4f27e3d7..e83da5e5ac 100644
--- a/src/or/dirserv.h
+++ b/src/or/dirserv.h
@@ -73,7 +73,8 @@ int dirserv_get_routerdescs(smartlist_t *descs_out, const char *key,
const char **msg);
void dirserv_orconn_tls_done(const tor_addr_t *addr,
uint16_t or_port,
- const char *digest_rcvd);
+ const char *digest_rcvd,
+ const ed25519_public_key_t *ed_id_rcvd);
int dirserv_should_launch_reachability_test(const routerinfo_t *ri,
const routerinfo_t *ri_old);
void dirserv_single_reachability_test(time_t now, routerinfo_t *router);
diff --git a/src/or/dnsserv.c b/src/or/dnsserv.c
index c5c0a88b09..8768b2a1d1 100644
--- a/src/or/dnsserv.c
+++ b/src/or/dnsserv.c
@@ -284,7 +284,7 @@ dnsserv_reject_request(entry_connection_t *conn)
}
/** Look up the original name that corresponds to 'addr' in req. We use this
- * to preserve case in order to facilitate people using 0x20-hacks to avoid
+ * to preserve case in order to facilitate clients using 0x20-hacks to avoid
* DNS poisoning. */
static const char *
evdns_get_orig_address(const struct evdns_server_request *req,
diff --git a/src/or/entrynodes.c b/src/or/entrynodes.c
index b3fa31df7b..af1b1a39ab 100644
--- a/src/or/entrynodes.c
+++ b/src/or/entrynodes.c
@@ -15,13 +15,13 @@
#define ENTRYNODES_PRIVATE
#include "or.h"
+#include "channel.h"
#include "circpathbias.h"
#include "circuitbuild.h"
#include "circuitstats.h"
#include "config.h"
#include "confparse.h"
#include "connection.h"
-#include "connection_or.h"
#include "control.h"
#include "directory.h"
#include "entrynodes.h"
@@ -2108,18 +2108,34 @@ node_is_a_configured_bridge(const node_t *node)
*/
void
learned_router_identity(const tor_addr_t *addr, uint16_t port,
- const char *digest)
+ const char *digest,
+ const ed25519_public_key_t *ed_id)
{
+ // XXXX prop220 use ed_id here, once there is some way to specify
+ (void)ed_id;
+ int learned = 0;
bridge_info_t *bridge =
get_configured_bridge_by_addr_port_digest(addr, port, digest);
if (bridge && tor_digest_is_zero(bridge->identity)) {
+ memcpy(bridge->identity, digest, DIGEST_LEN);
+ learned = 1;
+ }
+ /* XXXX prop220 remember bridge ed25519 identities -- add a field */
+#if 0
+ if (bridge && ed_id &&
+ ed25519_public_key_is_zero(&bridge->ed25519_identity) &&
+ !ed25519_public_key_is_zero(ed_id)) {
+ memcpy(&bridge->ed25519_identity, ed_id, sizeof(*ed_id));
+ learned = 1;
+ }
+#endif
+ if (learned) {
char *transport_info = NULL;
const char *transport_name =
find_transport_name_by_bridge_addrport(addr, port);
if (transport_name)
tor_asprintf(&transport_info, " (with transport '%s')", transport_name);
-
- memcpy(bridge->identity, digest, DIGEST_LEN);
+ // XXXX prop220 log both fingerprints.
log_notice(LD_DIR, "Learned fingerprint %s for bridge %s%s.",
hex_str(digest, DIGEST_LEN), fmt_addrport(addr, port),
transport_info ? transport_info : "");
@@ -2216,6 +2232,8 @@ bridge_add_from_config(bridge_line_t *bridge_line)
{
bridge_info_t *b;
+ // XXXX prop220 add a way to specify ed25519 ID to bridge_line_t.
+
{ /* Log the bridge we are about to register: */
log_debug(LD_GENERAL, "Registering bridge at %s (transport: %s) (%s)",
fmt_addrport(&bridge_line->addr, bridge_line->port),
@@ -2306,7 +2324,10 @@ routerset_contains_bridge(const routerset_t *routerset,
return 0;
extinfo = extend_info_new(
- NULL, bridge->identity, NULL, NULL, &bridge->addr, bridge->port);
+ NULL, bridge->identity,
+ NULL, /* Ed25519 ID */
+ NULL, NULL, /* onion keys */
+ &bridge->addr, bridge->port);
result = routerset_contains_extendinfo(routerset, extinfo);
extend_info_free(extinfo);
return result;
@@ -2746,7 +2767,7 @@ entries_retry_helper(const or_options_t *options, int act)
* the node down and undermine the retry attempt. We mark even
* the established conns, since if the network just came back
* we'll want to attach circuits to fresh conns. */
- connection_or_set_bad_connections(node->identity, 1);
+ channel_update_bad_for_new_circs(node->identity, 1);
/* mark this entry node for retry */
router_set_status(node->identity, 1);
diff --git a/src/or/entrynodes.h b/src/or/entrynodes.h
index 00f96916b6..f8aaedf171 100644
--- a/src/or/entrynodes.h
+++ b/src/or/entrynodes.h
@@ -167,7 +167,8 @@ int extend_info_is_a_configured_bridge(const extend_info_t *ei);
int routerinfo_is_a_configured_bridge(const routerinfo_t *ri);
int node_is_a_configured_bridge(const node_t *node);
void learned_router_identity(const tor_addr_t *addr, uint16_t port,
- const char *digest);
+ const char *digest,
+ const ed25519_public_key_t *ed_id);
struct bridge_line_t;
void bridge_add_from_config(struct bridge_line_t *bridge_line);
void retry_bridge_descriptor_fetch_directly(const char *digest);
diff --git a/src/or/hibernate.c b/src/or/hibernate.c
index aaf5c4bdcd..c2b3bbb839 100644
--- a/src/or/hibernate.c
+++ b/src/or/hibernate.c
@@ -424,8 +424,8 @@ configure_accounting(time_t now)
if (-0.50 <= delta && delta <= 0.50) {
/* The start of the period is now a little later or earlier than we
* remembered. That's fine; we might lose some bytes we could otherwise
- * have written, but better to err on the side of obeying people's
- * accounting settings. */
+ * have written, but better to err on the side of obeying accounting
+ * settings. */
log_info(LD_ACCT, "Accounting interval moved by %.02f%%; "
"that's fine.", delta*100);
interval_end_time = start_of_accounting_period_after(now);
@@ -896,7 +896,7 @@ hibernate_go_dormant(time_t now)
log_notice(LD_ACCT,"Going dormant. Blowing away remaining connections.");
/* Close all OR/AP/exit conns. Leave dir conns because we still want
- * to be able to upload server descriptors so people know we're still
+ * to be able to upload server descriptors so clients know we're still
* running, and download directories so we can detect if we're obsolete.
* Leave control conns because we still want to be controllable.
*/
diff --git a/src/or/hs_descriptor.c b/src/or/hs_descriptor.c
index 1517ccb12e..37aa1d745e 100644
--- a/src/or/hs_descriptor.c
+++ b/src/or/hs_descriptor.c
@@ -15,6 +15,7 @@
#include "ed25519_cert.h" /* Trunnel interface. */
#include "parsecommon.h"
#include "rendcache.h"
+#include "torcert.h" /* tor_cert_encode_ed22519() */
/* Constant string value used for the descriptor format. */
#define str_hs_desc "hs-descriptor"
@@ -135,45 +136,6 @@ desc_encrypted_data_free_contents(hs_desc_encrypted_data_t *desc)
/* === ENCODING === */
-/* Encode the ed25519 certificate <b>cert</b> and put the newly allocated
- * string in <b>cert_str_out</b>. Return 0 on success else a negative value. */
-STATIC int
-encode_cert(const tor_cert_t *cert, char **cert_str_out)
-{
- int ret = -1;
- char *ed_cert_b64 = NULL;
- size_t ed_cert_b64_len;
-
- tor_assert(cert);
- tor_assert(cert_str_out);
-
- /* Get the encoded size and add the NUL byte. */
- ed_cert_b64_len = base64_encode_size(cert->encoded_len,
- BASE64_ENCODE_MULTILINE) + 1;
- ed_cert_b64 = tor_malloc_zero(ed_cert_b64_len);
-
- /* Base64 encode the encoded certificate. */
- if (base64_encode(ed_cert_b64, ed_cert_b64_len,
- (const char *) cert->encoded, cert->encoded_len,
- BASE64_ENCODE_MULTILINE) < 0) {
- log_err(LD_BUG, "Couldn't base64-encode descriptor signing key cert!");
- goto err;
- }
-
- /* Put everything together in a NUL terminated string. */
- tor_asprintf(cert_str_out,
- "-----BEGIN ED25519 CERT-----\n"
- "%s"
- "-----END ED25519 CERT-----",
- ed_cert_b64);
- /* Success! */
- ret = 0;
-
- err:
- tor_free(ed_cert_b64);
- return ret;
-}
-
/* Encode the given link specifier objects into a newly allocated string.
* This can't fail so caller can always assume a valid string being
* returned. */
@@ -327,7 +289,7 @@ encode_enc_key(const ed25519_keypair_t *sig_key,
if (!cross_cert) {
goto err;
}
- ret = encode_cert(cross_cert, &encoded_cert);
+ ret = tor_cert_encode_ed22519(cross_cert, &encoded_cert);
tor_cert_free(cross_cert);
if (ret) {
goto err;
@@ -375,7 +337,7 @@ encode_intro_point(const ed25519_keypair_t *sig_key,
/* Authentication key encoding. */
{
char *encoded_cert;
- if (encode_cert(ip->auth_key_cert, &encoded_cert) < 0) {
+ if (tor_cert_encode_ed22519(ip->auth_key_cert, &encoded_cert) < 0) {
goto err;
}
smartlist_add_asprintf(lines, "%s\n%s", str_ip_auth_key, encoded_cert);
@@ -769,7 +731,7 @@ desc_encode_v3(const hs_descriptor_t *desc, char **encoded_out)
"(%d)", (int) desc->plaintext_data.signing_key_cert->cert_type);
goto err;
}
- if (encode_cert(desc->plaintext_data.signing_key_cert,
+ if (tor_cert_encode_ed22519(desc->plaintext_data.signing_key_cert,
&encoded_cert) < 0) {
/* The function will print error logs. */
goto err;
@@ -1394,15 +1356,10 @@ decode_intro_points(const hs_descriptor_t *desc,
retval = 0;
err:
- if (chunked_desc) {
- SMARTLIST_FOREACH(chunked_desc, char *, a, tor_free(a));
- smartlist_free(chunked_desc);
- }
- if (intro_points) {
- SMARTLIST_FOREACH(intro_points, char *, a, tor_free(a));
- smartlist_free(intro_points);
- }
-
+ SMARTLIST_FOREACH(chunked_desc, char *, a, tor_free(a));
+ smartlist_free(chunked_desc);
+ SMARTLIST_FOREACH(intro_points, char *, a, tor_free(a));
+ smartlist_free(intro_points);
return retval;
}
/* Return 1 iff the given base64 encoded signature in b64_sig from the encoded
diff --git a/src/or/hs_descriptor.h b/src/or/hs_descriptor.h
index 895bed2485..083d353860 100644
--- a/src/or/hs_descriptor.h
+++ b/src/or/hs_descriptor.h
@@ -216,7 +216,6 @@ size_t hs_desc_plaintext_obj_size(const hs_desc_plaintext_data_t *data);
#ifdef HS_DESCRIPTOR_PRIVATE
/* Encoding. */
-STATIC int encode_cert(const tor_cert_t *cert, char **cert_str_out);
STATIC char *encode_link_specifiers(const smartlist_t *specs);
STATIC size_t build_plaintext_padding(const char *plaintext,
size_t plaintext_len,
diff --git a/src/or/include.am b/src/or/include.am
index 38777ccc6d..c0ab0bc3e1 100644
--- a/src/or/include.am
+++ b/src/or/include.am
@@ -212,7 +212,7 @@ noinst_HEADERS+= $(ORHEADERS) micro-revision.i
micro-revision.i: FORCE
$(AM_V_at)rm -f micro-revision.tmp; \
- if test -d "$(top_srcdir)/.git" && \
+ if test -r "$(top_srcdir)/.git" && \
test -x "`which git 2>&1;true`"; then \
HASH="`cd "$(top_srcdir)" && git rev-parse --short=16 HEAD`"; \
echo \"$$HASH\" > micro-revision.tmp; \
diff --git a/src/or/main.c b/src/or/main.c
index ff477dba5b..327b768842 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -363,7 +363,7 @@ connection_unlink(connection_t *conn)
}
if (conn->type == CONN_TYPE_OR) {
if (!tor_digest_is_zero(TO_OR_CONN(conn)->identity_digest))
- connection_or_remove_from_identity_map(TO_OR_CONN(conn));
+ connection_or_clear_identity(TO_OR_CONN(conn));
/* connection_unlink() can only get called if the connection
* was already on the closeable list, and it got there by
* connection_mark_for_close(), which was called from
@@ -1427,7 +1427,7 @@ run_scheduled_events(time_t now)
}
/* 5. We do housekeeping for each connection... */
- connection_or_set_bad_connections(NULL, 0);
+ channel_update_bad_for_new_circs(NULL, 0);
int i;
for (i=0;i<smartlist_len(connection_array);i++) {
run_connection_housekeeping(i, now);
diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index 316ce48387..fa548305f9 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -814,8 +814,11 @@ networkstatus_nickname_is_unnamed(const char *nickname)
#define NONAUTHORITY_NS_CACHE_INTERVAL (60*60)
/** Return true iff, given the options listed in <b>options</b>, <b>flavor</b>
- * is the flavor of a consensus networkstatus that we would like to fetch. */
-static int
+ * is the flavor of a consensus networkstatus that we would like to fetch.
+ *
+ * For certificate fetches, use we_want_to_fetch_unknown_auth_certs, and
+ * for serving fetched documents, use directory_caches_dir_info. */
+int
we_want_to_fetch_flavor(const or_options_t *options, int flavor)
{
if (flavor < 0 || flavor > N_CONSENSUS_FLAVORS) {
@@ -837,6 +840,29 @@ we_want_to_fetch_flavor(const or_options_t *options, int flavor)
return flavor == usable_consensus_flavor();
}
+/** Return true iff, given the options listed in <b>options</b>, we would like
+ * to fetch and store unknown authority certificates.
+ *
+ * For consensus and descriptor fetches, use we_want_to_fetch_flavor, and
+ * for serving fetched certificates, use directory_caches_unknown_auth_certs.
+ */
+int
+we_want_to_fetch_unknown_auth_certs(const or_options_t *options)
+{
+ if (authdir_mode_v3(options) ||
+ directory_caches_unknown_auth_certs((options))) {
+ /* We want to serve all certs to others, regardless if we would use
+ * them ourselves. */
+ return 1;
+ }
+ if (options->FetchUselessDescriptors) {
+ /* Unknown certificates are definitely useless. */
+ return 1;
+ }
+ /* Otherwise, don't fetch unknown certificates. */
+ return 0;
+}
+
/** How long will we hang onto a possibly live consensus for which we're
* fetching certs before we check whether there is a better one? */
#define DELAY_WHILE_FETCHING_CERTS (20*60)
@@ -1351,6 +1377,24 @@ networkstatus_get_live_consensus,(time_t now))
return NULL;
}
+/** Determine if <b>consensus</b> is valid or expired recently enough that
+ * we can still use it.
+ *
+ * Return 1 if the consensus is reasonably live, or 0 if it is too old.
+ */
+int
+networkstatus_consensus_reasonably_live(networkstatus_t *consensus, time_t now)
+{
+#define REASONABLY_LIVE_TIME (24*60*60)
+ if (BUG(!consensus))
+ return 0;
+
+ if (now <= consensus->valid_until + REASONABLY_LIVE_TIME)
+ return 1;
+
+ return 0;
+}
+
/* XXXX remove this in favor of get_live_consensus. But actually,
* leave something like it for bridge users, who need to not totally
* lose if they spend a while fetching a new consensus. */
@@ -1359,12 +1403,11 @@ networkstatus_get_live_consensus,(time_t now))
networkstatus_t *
networkstatus_get_reasonably_live_consensus(time_t now, int flavor)
{
-#define REASONABLY_LIVE_TIME (24*60*60)
networkstatus_t *consensus =
networkstatus_get_latest_consensus_by_flavor(flavor);
if (consensus &&
consensus->valid_after <= now &&
- now <= consensus->valid_until+REASONABLY_LIVE_TIME)
+ networkstatus_consensus_reasonably_live(consensus, now))
return consensus;
else
return NULL;
@@ -1728,9 +1771,9 @@ networkstatus_set_current_consensus(const char *consensus,
}
if (flav != usable_consensus_flavor() &&
- !directory_caches_dir_info(options)) {
- /* This consensus is totally boring to us: we won't use it, and we won't
- * serve it. Drop it. */
+ !we_want_to_fetch_flavor(options, flav)) {
+ /* This consensus is totally boring to us: we won't use it, we didn't want
+ * it, and we won't serve it. Drop it. */
goto done;
}
@@ -1932,7 +1975,7 @@ networkstatus_set_current_consensus(const char *consensus,
download_status_failed(&consensus_dl_status[flav], 0);
}
- if (directory_caches_dir_info(options)) {
+ if (we_want_to_fetch_flavor(options, flav)) {
dirserv_set_cached_consensus_networkstatus(consensus,
flavor,
&c->digests,
@@ -2381,9 +2424,9 @@ int
client_would_use_router(const routerstatus_t *rs, time_t now,
const or_options_t *options)
{
- if (!rs->is_flagged_running && !options->FetchUselessDescriptors) {
+ if (!rs->is_flagged_running) {
/* If we had this router descriptor, we wouldn't even bother using it.
- * But, if we want to have a complete list, fetch it anyway. */
+ * (Fetching and storing depends on by we_want_to_fetch_flavor().) */
return 0;
}
if (rs->published_on + options->TestingEstimatedDescriptorPropagationTime
diff --git a/src/or/networkstatus.h b/src/or/networkstatus.h
index 71f36b69ed..d584c2ecfc 100644
--- a/src/or/networkstatus.h
+++ b/src/or/networkstatus.h
@@ -66,6 +66,8 @@ const routerstatus_t *router_get_consensus_status_by_nickname(
int warn_if_unnamed);
const char *networkstatus_get_router_digest_by_nickname(const char *nickname);
int networkstatus_nickname_is_unnamed(const char *nickname);
+int we_want_to_fetch_flavor(const or_options_t *options, int flavor);
+int we_want_to_fetch_unknown_auth_certs(const or_options_t *options);
void networkstatus_consensus_download_failed(int status_code,
const char *flavname);
void update_consensus_networkstatus_fetch_time(time_t now);
@@ -79,6 +81,8 @@ MOCK_DECL(networkstatus_t *,networkstatus_get_latest_consensus,(void));
MOCK_DECL(networkstatus_t *,networkstatus_get_latest_consensus_by_flavor,
(consensus_flavor_t f));
MOCK_DECL(networkstatus_t *, networkstatus_get_live_consensus,(time_t now));
+int networkstatus_consensus_reasonably_live(networkstatus_t *consensus,
+ time_t now);
networkstatus_t *networkstatus_get_reasonably_live_consensus(time_t now,
int flavor);
MOCK_DECL(int, networkstatus_consensus_is_bootstrapping,(time_t now));
diff --git a/src/or/nodelist.c b/src/or/nodelist.c
index 2802d5b9e0..2bcedbfb0c 100644
--- a/src/or/nodelist.c
+++ b/src/or/nodelist.c
@@ -49,10 +49,12 @@
#include "networkstatus.h"
#include "nodelist.h"
#include "policies.h"
+#include "protover.h"
#include "rendservice.h"
#include "router.h"
#include "routerlist.h"
#include "routerset.h"
+#include "torcert.h"
#include <string.h>
@@ -646,6 +648,73 @@ node_get_by_nickname,(const char *nickname, int warn_if_unnamed))
}
}
+/** Return the Ed25519 identity key for the provided node, or NULL if it
+ * doesn't have one. */
+const ed25519_public_key_t *
+node_get_ed25519_id(const node_t *node)
+{
+ if (node->ri) {
+ if (node->ri->cache_info.signing_key_cert) {
+ const ed25519_public_key_t *pk =
+ &node->ri->cache_info.signing_key_cert->signing_key;
+ if (BUG(ed25519_public_key_is_zero(pk)))
+ goto try_the_md;
+ return pk;
+ }
+ }
+ try_the_md:
+ if (node->md) {
+ if (node->md->ed25519_identity_pkey) {
+ return node->md->ed25519_identity_pkey;
+ }
+ }
+ return NULL;
+}
+
+/** Return true iff this node's Ed25519 identity matches <b>id</b>.
+ * (An absent Ed25519 identity matches NULL or zero.) */
+int
+node_ed25519_id_matches(const node_t *node, const ed25519_public_key_t *id)
+{
+ const ed25519_public_key_t *node_id = node_get_ed25519_id(node);
+ if (node_id == NULL || ed25519_public_key_is_zero(node_id)) {
+ return id == NULL || ed25519_public_key_is_zero(id);
+ } else {
+ return id && ed25519_pubkey_eq(node_id, id);
+ }
+}
+
+/** Return true iff <b>node</b> supports authenticating itself
+ * by ed25519 ID during the link handshake in a way that we can understand
+ * when we probe it. */
+int
+node_supports_ed25519_link_authentication(const node_t *node)
+{
+ /* XXXX Oh hm. What if some day in the future there are link handshake
+ * versions that aren't 3 but which are ed25519 */
+ if (! node_get_ed25519_id(node))
+ return 0;
+ if (node->ri) {
+ const char *protos = node->ri->protocol_list;
+ if (protos == NULL)
+ return 0;
+ return protocol_list_supports_protocol(protos, PRT_LINKAUTH, 3);
+ }
+ if (node->rs) {
+ return node->rs->supports_ed25519_link_handshake;
+ }
+ tor_assert_nonfatal_unreached_once();
+ return 0;
+}
+
+/** Return the RSA ID key's SHA1 digest for the provided node. */
+const uint8_t *
+node_get_rsa_id_digest(const node_t *node)
+{
+ tor_assert(node);
+ return (const uint8_t*)node->identity;
+}
+
/** Return the nickname of <b>node</b>, or NULL if we can't find one. */
const char *
node_get_nickname(const node_t *node)
@@ -1569,8 +1638,8 @@ router_have_minimum_dir_info(void)
* this can cause router_have_consensus_path() to be set to
* CONSENSUS_PATH_EXIT, even if there are no nodes with accept exit policies.
*/
-consensus_path_type_t
-router_have_consensus_path(void)
+MOCK_IMPL(consensus_path_type_t,
+router_have_consensus_path, (void))
{
return have_consensus_path;
}
@@ -1659,9 +1728,9 @@ count_usable_descriptors(int *num_present, int *num_usable,
* If **<b>status_out</b> is present, allocate a new string and print the
* available percentages of guard, middle, and exit nodes to it, noting
* whether there are exits in the consensus.
- * If there are no guards in the consensus,
- * we treat the exit fraction as 100%.
- */
+ * If there are no exits in the consensus, we treat the exit fraction as 100%,
+ * but set router_have_consensus_path() so that we can only build internal
+ * paths. */
static double
compute_frac_paths_available(const networkstatus_t *consensus,
const or_options_t *options, time_t now,
diff --git a/src/or/nodelist.h b/src/or/nodelist.h
index 71a91e107f..8456d21c6c 100644
--- a/src/or/nodelist.h
+++ b/src/or/nodelist.h
@@ -55,6 +55,11 @@ void node_get_address_string(const node_t *node, char *cp, size_t len);
long node_get_declared_uptime(const node_t *node);
time_t node_get_published_on(const node_t *node);
const smartlist_t *node_get_declared_family(const node_t *node);
+const ed25519_public_key_t *node_get_ed25519_id(const node_t *node);
+int node_ed25519_id_matches(const node_t *node,
+ const ed25519_public_key_t *id);
+int node_supports_ed25519_link_authentication(const node_t *node);
+const uint8_t *node_get_rsa_id_digest(const node_t *node);
int node_has_ipv6_addr(const node_t *node);
int node_has_ipv6_orport(const node_t *node);
@@ -118,7 +123,8 @@ typedef enum {
* create exit and internal paths, circuits, streams, ... */
CONSENSUS_PATH_EXIT = 1
} consensus_path_type_t;
-consensus_path_type_t router_have_consensus_path(void);
+
+MOCK_DECL(consensus_path_type_t, router_have_consensus_path, (void));
void router_dir_info_changed(void);
const char *get_dir_info_status_string(void);
diff --git a/src/or/onion.c b/src/or/onion.c
index a987883802..42b9ca4b18 100644
--- a/src/or/onion.c
+++ b/src/or/onion.c
@@ -76,6 +76,9 @@
#include "rephist.h"
#include "router.h"
+// trunnel
+#include "ed25519_cert.h"
+
/** Type for a linked list of circuits that are waiting for a free CPU worker
* to process a waiting onion handshake. */
typedef struct onion_queue_t {
@@ -871,13 +874,114 @@ check_extend_cell(const extend_cell_t *cell)
return check_create_cell(&cell->create_cell, 1);
}
-/** Protocol constants for specifier types in EXTEND2
- * @{
- */
-#define SPECTYPE_IPV4 0
-#define SPECTYPE_IPV6 1
-#define SPECTYPE_LEGACY_ID 2
-/** @} */
+static int
+extend_cell_from_extend1_cell_body(extend_cell_t *cell_out,
+ const extend1_cell_body_t *cell)
+{
+ tor_assert(cell_out);
+ tor_assert(cell);
+ memset(cell_out, 0, sizeof(*cell_out));
+ tor_addr_make_unspec(&cell_out->orport_ipv4.addr);
+ tor_addr_make_unspec(&cell_out->orport_ipv6.addr);
+
+ cell_out->cell_type = RELAY_COMMAND_EXTEND;
+ tor_addr_from_ipv4h(&cell_out->orport_ipv4.addr, cell->ipv4addr);
+ cell_out->orport_ipv4.port = cell->port;
+ if (tor_memeq(cell->onionskin, NTOR_CREATE_MAGIC, 16)) {
+ cell_out->create_cell.cell_type = CELL_CREATE2;
+ cell_out->create_cell.handshake_type = ONION_HANDSHAKE_TYPE_NTOR;
+ cell_out->create_cell.handshake_len = NTOR_ONIONSKIN_LEN;
+ memcpy(cell_out->create_cell.onionskin, cell->onionskin + 16,
+ NTOR_ONIONSKIN_LEN);
+ } else {
+ cell_out->create_cell.cell_type = CELL_CREATE;
+ cell_out->create_cell.handshake_type = ONION_HANDSHAKE_TYPE_TAP;
+ cell_out->create_cell.handshake_len = TAP_ONIONSKIN_CHALLENGE_LEN;
+ memcpy(cell_out->create_cell.onionskin, cell->onionskin,
+ TAP_ONIONSKIN_CHALLENGE_LEN);
+ }
+ memcpy(cell_out->node_id, cell->identity, DIGEST_LEN);
+ return 0;
+}
+
+static int
+create_cell_from_create2_cell_body(create_cell_t *cell_out,
+ const create2_cell_body_t *cell)
+{
+ tor_assert(cell_out);
+ tor_assert(cell);
+ memset(cell_out, 0, sizeof(create_cell_t));
+ if (BUG(cell->handshake_len > sizeof(cell_out->onionskin))) {
+ /* This should be impossible because there just isn't enough room in the
+ * input cell to make the handshake_len this large and provide a
+ * handshake_data to match. */
+ return -1;
+ }
+
+ cell_out->cell_type = CELL_CREATE2;
+ cell_out->handshake_type = cell->handshake_type;
+ cell_out->handshake_len = cell->handshake_len;
+ memcpy(cell_out->onionskin,
+ create2_cell_body_getconstarray_handshake_data(cell),
+ cell->handshake_len);
+ return 0;
+}
+
+static int
+extend_cell_from_extend2_cell_body(extend_cell_t *cell_out,
+ const extend2_cell_body_t *cell)
+{
+ tor_assert(cell_out);
+ tor_assert(cell);
+ int found_ipv4 = 0, found_ipv6 = 0, found_rsa_id = 0, found_ed_id = 0;
+ memset(cell_out, 0, sizeof(*cell_out));
+ tor_addr_make_unspec(&cell_out->orport_ipv4.addr);
+ tor_addr_make_unspec(&cell_out->orport_ipv6.addr);
+ cell_out->cell_type = RELAY_COMMAND_EXTEND2;
+
+ unsigned i;
+ for (i = 0; i < cell->n_spec; ++i) {
+ const link_specifier_t *ls = extend2_cell_body_getconst_ls(cell, i);
+ switch (ls->ls_type) {
+ case LS_IPV4:
+ if (found_ipv4)
+ continue;
+ found_ipv4 = 1;
+ tor_addr_from_ipv4h(&cell_out->orport_ipv4.addr, ls->un_ipv4_addr);
+ cell_out->orport_ipv4.port = ls->un_ipv4_port;
+ break;
+ case LS_IPV6:
+ if (found_ipv6)
+ continue;
+ found_ipv6 = 1;
+ tor_addr_from_ipv6_bytes(&cell_out->orport_ipv6.addr,
+ (const char *)ls->un_ipv6_addr);
+ cell_out->orport_ipv6.port = ls->un_ipv6_port;
+ break;
+ case LS_LEGACY_ID:
+ if (found_rsa_id)
+ return -1;
+ found_rsa_id = 1;
+ memcpy(cell_out->node_id, ls->un_legacy_id, 20);
+ break;
+ case LS_ED25519_ID:
+ if (found_ed_id)
+ return -1;
+ found_ed_id = 1;
+ memcpy(cell_out->ed_pubkey.pubkey, ls->un_ed25519_id, 32);
+ break;
+ default:
+ /* Ignore this, whatever it is. */
+ break;
+ }
+ }
+
+ if (!found_rsa_id || !found_ipv4) /* These are mandatory */
+ return -1;
+
+ return create_cell_from_create2_cell_body(&cell_out->create_cell,
+ cell->create2);
+}
/** Parse an EXTEND or EXTEND2 cell (according to <b>command</b>) from the
* <b>payload_length</b> bytes of <b>payload</b> into <b>cell_out</b>. Return
@@ -886,101 +990,44 @@ int
extend_cell_parse(extend_cell_t *cell_out, const uint8_t command,
const uint8_t *payload, size_t payload_length)
{
- const uint8_t *eop;
- memset(cell_out, 0, sizeof(*cell_out));
+ tor_assert(cell_out);
+ tor_assert(payload);
+
if (payload_length > RELAY_PAYLOAD_SIZE)
return -1;
- eop = payload + payload_length;
switch (command) {
case RELAY_COMMAND_EXTEND:
{
- if (payload_length != 6 + TAP_ONIONSKIN_CHALLENGE_LEN + DIGEST_LEN)
+ extend1_cell_body_t *cell = NULL;
+ if (extend1_cell_body_parse(&cell, payload, payload_length)<0 ||
+ cell == NULL) {
+ if (cell)
+ extend1_cell_body_free(cell);
return -1;
-
- cell_out->cell_type = RELAY_COMMAND_EXTEND;
- tor_addr_from_ipv4n(&cell_out->orport_ipv4.addr, get_uint32(payload));
- cell_out->orport_ipv4.port = ntohs(get_uint16(payload+4));
- tor_addr_make_unspec(&cell_out->orport_ipv6.addr);
- if (tor_memeq(payload + 6, NTOR_CREATE_MAGIC, 16)) {
- cell_out->create_cell.cell_type = CELL_CREATE2;
- cell_out->create_cell.handshake_type = ONION_HANDSHAKE_TYPE_NTOR;
- cell_out->create_cell.handshake_len = NTOR_ONIONSKIN_LEN;
- memcpy(cell_out->create_cell.onionskin, payload + 22,
- NTOR_ONIONSKIN_LEN);
- } else {
- cell_out->create_cell.cell_type = CELL_CREATE;
- cell_out->create_cell.handshake_type = ONION_HANDSHAKE_TYPE_TAP;
- cell_out->create_cell.handshake_len = TAP_ONIONSKIN_CHALLENGE_LEN;
- memcpy(cell_out->create_cell.onionskin, payload + 6,
- TAP_ONIONSKIN_CHALLENGE_LEN);
}
- memcpy(cell_out->node_id, payload + 6 + TAP_ONIONSKIN_CHALLENGE_LEN,
- DIGEST_LEN);
- break;
+ int r = extend_cell_from_extend1_cell_body(cell_out, cell);
+ extend1_cell_body_free(cell);
+ if (r < 0)
+ return r;
}
+ break;
case RELAY_COMMAND_EXTEND2:
{
- uint8_t n_specs, spectype, speclen;
- int i;
- int found_ipv4 = 0, found_ipv6 = 0, found_id = 0;
- tor_addr_make_unspec(&cell_out->orport_ipv4.addr);
- tor_addr_make_unspec(&cell_out->orport_ipv6.addr);
-
- if (payload_length == 0)
+ extend2_cell_body_t *cell = NULL;
+ if (extend2_cell_body_parse(&cell, payload, payload_length) < 0 ||
+ cell == NULL) {
+ if (cell)
+ extend2_cell_body_free(cell);
return -1;
-
- cell_out->cell_type = RELAY_COMMAND_EXTEND2;
- n_specs = *payload++;
- /* Parse the specifiers. We'll only take the first IPv4 and first IPv6
- * address, and the node ID, and ignore everything else */
- for (i = 0; i < n_specs; ++i) {
- if (eop - payload < 2)
- return -1;
- spectype = payload[0];
- speclen = payload[1];
- payload += 2;
- if (eop - payload < speclen)
- return -1;
- switch (spectype) {
- case SPECTYPE_IPV4:
- if (speclen != 6)
- return -1;
- if (!found_ipv4) {
- tor_addr_from_ipv4n(&cell_out->orport_ipv4.addr,
- get_uint32(payload));
- cell_out->orport_ipv4.port = ntohs(get_uint16(payload+4));
- found_ipv4 = 1;
- }
- break;
- case SPECTYPE_IPV6:
- if (speclen != 18)
- return -1;
- if (!found_ipv6) {
- tor_addr_from_ipv6_bytes(&cell_out->orport_ipv6.addr,
- (const char*)payload);
- cell_out->orport_ipv6.port = ntohs(get_uint16(payload+16));
- found_ipv6 = 1;
- }
- break;
- case SPECTYPE_LEGACY_ID:
- if (speclen != 20)
- return -1;
- if (found_id)
- return -1;
- memcpy(cell_out->node_id, payload, 20);
- found_id = 1;
- break;
- }
- payload += speclen;
}
- if (!found_id || !found_ipv4)
- return -1;
- if (parse_create2_payload(&cell_out->create_cell,payload,eop-payload)<0)
- return -1;
- break;
+ int r = extend_cell_from_extend2_cell_body(cell_out, cell);
+ extend2_cell_body_free(cell);
+ if (r < 0)
+ return r;
}
+ break;
default:
return -1;
}
@@ -992,6 +1039,7 @@ extend_cell_parse(extend_cell_t *cell_out, const uint8_t command,
static int
check_extended_cell(const extended_cell_t *cell)
{
+ tor_assert(cell);
if (cell->created_cell.cell_type == CELL_CREATED) {
if (cell->cell_type != RELAY_COMMAND_EXTENDED)
return -1;
@@ -1013,6 +1061,9 @@ extended_cell_parse(extended_cell_t *cell_out,
const uint8_t command, const uint8_t *payload,
size_t payload_len)
{
+ tor_assert(cell_out);
+ tor_assert(payload);
+
memset(cell_out, 0, sizeof(*cell_out));
if (payload_len > RELAY_PAYLOAD_SIZE)
return -1;
@@ -1129,6 +1180,21 @@ created_cell_format(cell_t *cell_out, const created_cell_t *cell_in)
return 0;
}
+/** Return true iff we are configured (by torrc or by the networkstatus
+ * parameters) to use Ed25519 identities in our Extend2 cells. */
+static int
+should_include_ed25519_id_extend_cells(const networkstatus_t *ns,
+ const or_options_t *options)
+{
+ if (options->ExtendByEd25519ID != -1)
+ return options->ExtendByEd25519ID; /* The user has an opinion. */
+
+ return (int) networkstatus_get_param(ns, "ExtendByEd25519ID",
+ 0 /* default */,
+ 0 /* min */,
+ 1 /*max*/);
+}
+
/** Format the EXTEND{,2} cell in <b>cell_in</b>, storing its relay payload in
* <b>payload_out</b>, the number of bytes used in *<b>len_out</b>, and the
* relay command in *<b>command_out</b>. The <b>payload_out</b> must have
@@ -1137,12 +1203,11 @@ int
extend_cell_format(uint8_t *command_out, uint16_t *len_out,
uint8_t *payload_out, const extend_cell_t *cell_in)
{
- uint8_t *p, *eop;
+ uint8_t *p;
if (check_extend_cell(cell_in) < 0)
return -1;
p = payload_out;
- eop = payload_out + RELAY_PAYLOAD_SIZE;
memset(p, 0, RELAY_PAYLOAD_SIZE);
@@ -1165,33 +1230,56 @@ extend_cell_format(uint8_t *command_out, uint16_t *len_out,
break;
case RELAY_COMMAND_EXTEND2:
{
- uint8_t n = 2;
+ uint8_t n_specifiers = 2;
*command_out = RELAY_COMMAND_EXTEND2;
-
- *p++ = n; /* 2 identifiers */
- *p++ = SPECTYPE_IPV4; /* First is IPV4. */
- *p++ = 6; /* It's 6 bytes long. */
- set_uint32(p, tor_addr_to_ipv4n(&cell_in->orport_ipv4.addr));
- set_uint16(p+4, htons(cell_in->orport_ipv4.port));
- p += 6;
- *p++ = SPECTYPE_LEGACY_ID; /* Next is an identity digest. */
- *p++ = 20; /* It's 20 bytes long */
- memcpy(p, cell_in->node_id, DIGEST_LEN);
- p += 20;
-
- /* Now we can send the handshake */
- set_uint16(p, htons(cell_in->create_cell.handshake_type));
- set_uint16(p+2, htons(cell_in->create_cell.handshake_len));
- p += 4;
-
- if (cell_in->create_cell.handshake_len > eop - p)
- return -1;
-
- memcpy(p, cell_in->create_cell.onionskin,
+ extend2_cell_body_t *cell = extend2_cell_body_new();
+ link_specifier_t *ls;
+ {
+ /* IPv4 specifier first. */
+ ls = link_specifier_new();
+ extend2_cell_body_add_ls(cell, ls);
+ ls->ls_type = LS_IPV4;
+ ls->ls_len = 6;
+ ls->un_ipv4_addr = tor_addr_to_ipv4h(&cell_in->orport_ipv4.addr);
+ ls->un_ipv4_port = cell_in->orport_ipv4.port;
+ }
+ {
+ /* Then RSA id */
+ ls = link_specifier_new();
+ extend2_cell_body_add_ls(cell, ls);
+ ls->ls_type = LS_LEGACY_ID;
+ ls->ls_len = DIGEST_LEN;
+ memcpy(ls->un_legacy_id, cell_in->node_id, DIGEST_LEN);
+ }
+ if (should_include_ed25519_id_extend_cells(NULL, get_options()) &&
+ !ed25519_public_key_is_zero(&cell_in->ed_pubkey)) {
+ /* Then, maybe, the ed25519 id! */
+ ++n_specifiers;
+ ls = link_specifier_new();
+ extend2_cell_body_add_ls(cell, ls);
+ ls->ls_type = LS_ED25519_ID;
+ ls->ls_len = 32;
+ memcpy(ls->un_ed25519_id, cell_in->ed_pubkey.pubkey, 32);
+ }
+ cell->n_spec = n_specifiers;
+
+ /* Now, the handshake */
+ cell->create2 = create2_cell_body_new();
+ cell->create2->handshake_type = cell_in->create_cell.handshake_type;
+ cell->create2->handshake_len = cell_in->create_cell.handshake_len;
+ create2_cell_body_setlen_handshake_data(cell->create2,
+ cell_in->create_cell.handshake_len);
+ memcpy(create2_cell_body_getarray_handshake_data(cell->create2),
+ cell_in->create_cell.onionskin,
cell_in->create_cell.handshake_len);
- p += cell_in->create_cell.handshake_len;
- *len_out = p - payload_out;
+ ssize_t len_encoded = extend2_cell_body_encode(
+ payload_out, RELAY_PAYLOAD_SIZE,
+ cell);
+ extend2_cell_body_free(cell);
+ if (len_encoded < 0 || len_encoded > UINT16_MAX)
+ return -1;
+ *len_out = (uint16_t) len_encoded;
}
break;
default:
diff --git a/src/or/onion.h b/src/or/onion.h
index 0275fa00d2..19e4a7c381 100644
--- a/src/or/onion.h
+++ b/src/or/onion.h
@@ -85,6 +85,8 @@ typedef struct extend_cell_t {
tor_addr_port_t orport_ipv6;
/** Identity fingerprint of the node we're conecting to.*/
uint8_t node_id[DIGEST_LEN];
+ /** Ed25519 public identity key. Zero if not set. */
+ ed25519_public_key_t ed_pubkey;
/** The "create cell" embedded in this extend cell. Note that unlike the
* create cells we generate ourself, this once can have a handshake type we
* don't recognize. */
diff --git a/src/or/or.h b/src/or/or.h
index 10cfc76856..f63fe06a40 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -1582,8 +1582,6 @@ typedef struct or_connection_t {
* bandwidthburst. (OPEN ORs only) */
int write_bucket; /**< When this hits 0, stop writing. Like read_bucket. */
- struct or_connection_t *next_with_same_id; /**< Next connection with same
- * identity digest as this one. */
/** Last emptied read token bucket in msec since midnight; only used if
* TB_EMPTY events are enabled. */
uint32_t read_emptied_time;
@@ -1661,6 +1659,8 @@ typedef struct entry_connection_t {
edge_connection_t edge_;
/** Nickname of planned exit node -- used with .exit support. */
+ /* XXX prop220: we need to make chosen_exit_name able to encode Ed IDs too.
+ * That's logically part of the UI parts for prop220 though. */
char *chosen_exit_name;
socks_request_t *socks_request; /**< SOCKS structure describing request (AP
@@ -2711,7 +2711,10 @@ typedef struct {
typedef struct extend_info_t {
char nickname[MAX_HEX_NICKNAME_LEN+1]; /**< This router's nickname for
* display. */
- char identity_digest[DIGEST_LEN]; /**< Hash of this router's identity key. */
+ /** Hash of this router's RSA identity key. */
+ char identity_digest[DIGEST_LEN];
+ /** Ed25519 identity for this router, if any. */
+ ed25519_public_key_t ed_identity;
uint16_t port; /**< OR port. */
tor_addr_t addr; /**< IP address. */
crypto_pk_t *onion_key; /**< Current onionskin key. */
@@ -3872,7 +3875,7 @@ typedef struct {
uint64_t BandwidthBurst; /**< How much bandwidth, at maximum, are we willing
* to use in a second? */
uint64_t MaxAdvertisedBandwidth; /**< How much bandwidth are we willing to
- * tell people we have? */
+ * tell other nodes we have? */
uint64_t RelayBandwidthRate; /**< How much bandwidth, on average, are we
* willing to use for all relayed conns? */
uint64_t RelayBandwidthBurst; /**< How much bandwidth, at maximum, will we
@@ -3958,9 +3961,6 @@ typedef struct {
* and vote for all other exits as good. */
int AuthDirMaxServersPerAddr; /**< Do not permit more than this
* number of servers per IP address. */
- int AuthDirMaxServersPerAuthAddr; /**< Do not permit more than this
- * number of servers per IP address shared
- * with an authority. */
int AuthDirHasIPv6Connectivity; /**< Boolean: are we on IPv6? */
int AuthDirPinKeys; /**< Boolean: Do we enforce key-pinning? */
@@ -4562,6 +4562,15 @@ typedef struct {
/** If 1, we skip all OOS checks. */
int DisableOOSCheck;
+
+ /** Autobool: Should we include Ed25519 identities in extend2 cells?
+ * If -1, we should do whatever the consensus parameter says. */
+ int ExtendByEd25519ID;
+
+ /** Bool (default: 1): When testing routerinfos as a directory authority,
+ * do we enforce Ed25519 identity match? */
+ /* NOTE: remove this option someday. */
+ int AuthDirTestEd25519LinkKeys;
} or_options_t;
/** Persistent state for an onion router, as saved to disk. */
diff --git a/src/or/protover.c b/src/or/protover.c
index 5972e61be7..ceaf2d5ccf 100644
--- a/src/or/protover.c
+++ b/src/or/protover.c
@@ -697,7 +697,7 @@ protover_compute_for_old_tor(const char *version)
if (tor_version_as_new_as(version,
FIRST_TOR_VERSION_TO_ADVERTISE_PROTOCOLS)) {
return "";
- } else if (tor_version_as_new_as(version, "0.2.7.5")) {
+ } else if (tor_version_as_new_as(version, "0.2.9.1-alpha")) {
/* 0.2.9.1-alpha HSRend=2 */
return "Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1-2 "
"Link=1-4 LinkAuth=1 "
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index e483a498e4..9a39090ac2 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -76,6 +76,13 @@ static ssize_t rend_service_parse_intro_for_v3(
static int rend_service_check_private_dir(const or_options_t *options,
const rend_service_t *s,
int create);
+static int rend_service_check_private_dir_impl(const or_options_t *options,
+ const rend_service_t *s,
+ int create);
+static const smartlist_t* rend_get_service_list(
+ const smartlist_t* substitute_service_list);
+static smartlist_t* rend_get_service_list_mutable(
+ smartlist_t* substitute_service_list);
/** Represents the mapping from a virtual port of a rendezvous service to
* a real port on some IP.
@@ -121,8 +128,44 @@ static const char *hostname_fname = "hostname";
static const char *client_keys_fname = "client_keys";
static const char *sos_poison_fname = "onion_service_non_anonymous";
+/** A list of rend_service_t's for services run on this OP.
+ */
+static smartlist_t *rend_service_list = NULL;
+
+/* Like rend_get_service_list_mutable, but returns a read-only list. */
+static const smartlist_t*
+rend_get_service_list(const smartlist_t* substitute_service_list)
+{
+ /* It is safe to cast away the const here, because
+ * rend_get_service_list_mutable does not actually modify the list */
+ return rend_get_service_list_mutable((smartlist_t*)substitute_service_list);
+}
+
+/* Return a mutable list of hidden services.
+ * If substitute_service_list is not NULL, return it.
+ * Otherwise, check if the global rend_service_list is non-NULL, and if so,
+ * return it.
+ * Otherwise, log a BUG message and return NULL.
+ * */
+static smartlist_t*
+rend_get_service_list_mutable(smartlist_t* substitute_service_list)
+{
+ if (substitute_service_list) {
+ return substitute_service_list;
+ }
+
+ /* If no special service list is provided, then just use the global one. */
+
+ if (BUG(!rend_service_list)) {
+ /* No global HS list, which is a programmer error. */
+ return NULL;
+ }
+
+ return rend_service_list;
+}
+
/** Tells if onion service <b>s</b> is ephemeral.
-*/
+ */
static unsigned int
rend_service_is_ephemeral(const struct rend_service_t *s)
{
@@ -137,10 +180,6 @@ rend_service_escaped_dir(const struct rend_service_t *s)
return rend_service_is_ephemeral(s) ? "[EPHEMERAL]" : escaped(s->directory);
}
-/** A list of rend_service_t's for services run on this OP.
- */
-static smartlist_t *rend_service_list = NULL;
-
/** Return the number of rendezvous services we have configured. */
int
num_rend_services(void)
@@ -225,21 +264,32 @@ rend_service_free_all(void)
rend_service_list = NULL;
}
-/** Validate <b>service</b> and add it to rend_service_list if possible.
+/** Validate <b>service</b> and add it to <b>service_list</b>, or to
+ * the global rend_service_list if <b>service_list</b> is NULL.
* Return 0 on success. On failure, free <b>service</b> and return -1.
+ * Takes ownership of <b>service</b>.
*/
static int
-rend_add_service(rend_service_t *service)
+rend_add_service(smartlist_t *service_list, rend_service_t *service)
{
int i;
rend_service_port_config_t *p;
+ tor_assert(service);
+
+ smartlist_t *s_list = rend_get_service_list_mutable(service_list);
+ /* We must have a service list, even if it's a temporary one, so we can
+ * check for duplicate services */
+ if (BUG(!s_list)) {
+ return -1;
+ }
+
service->intro_nodes = smartlist_new();
service->expiring_nodes = smartlist_new();
if (service->max_streams_per_circuit < 0) {
log_warn(LD_CONFIG, "Hidden service (%s) configured with negative max "
- "streams per circuit; ignoring.",
+ "streams per circuit.",
rend_service_escaped_dir(service));
rend_service_free(service);
return -1;
@@ -248,24 +298,24 @@ rend_add_service(rend_service_t *service)
if (service->max_streams_close_circuit < 0 ||
service->max_streams_close_circuit > 1) {
log_warn(LD_CONFIG, "Hidden service (%s) configured with invalid "
- "max streams handling; ignoring.",
+ "max streams handling.",
rend_service_escaped_dir(service));
rend_service_free(service);
return -1;
}
if (service->auth_type != REND_NO_AUTH &&
- smartlist_len(service->clients) == 0) {
+ (!service->clients ||
+ smartlist_len(service->clients) == 0)) {
log_warn(LD_CONFIG, "Hidden service (%s) with client authorization but no "
- "clients; ignoring.",
+ "clients.",
rend_service_escaped_dir(service));
rend_service_free(service);
return -1;
}
- if (!smartlist_len(service->ports)) {
- log_warn(LD_CONFIG, "Hidden service (%s) with no ports configured; "
- "ignoring.",
+ if (!service->ports || !smartlist_len(service->ports)) {
+ log_warn(LD_CONFIG, "Hidden service (%s) with no ports configured.",
rend_service_escaped_dir(service));
rend_service_free(service);
return -1;
@@ -286,20 +336,20 @@ rend_add_service(rend_service_t *service)
* lock file. But this is enough to detect a simple mistake that
* at least one person has actually made.
*/
+ tor_assert(s_list);
if (!rend_service_is_ephemeral(service)) {
/* Skip dupe for ephemeral services. */
- SMARTLIST_FOREACH(rend_service_list, rend_service_t*, ptr,
+ SMARTLIST_FOREACH(s_list, rend_service_t*, ptr,
dupe = dupe ||
!strcmp(ptr->directory, service->directory));
if (dupe) {
log_warn(LD_REND, "Another hidden service is already configured for "
- "directory %s, ignoring.",
+ "directory %s.",
rend_service_escaped_dir(service));
rend_service_free(service);
return -1;
}
}
- smartlist_add(rend_service_list, service);
log_debug(LD_REND,"Configuring service with directory %s",
rend_service_escaped_dir(service));
for (i = 0; i < smartlist_len(service->ports); ++i) {
@@ -315,14 +365,19 @@ rend_add_service(rend_service_t *service)
"Service maps port %d to socket at \"%s\"",
p->virtual_port, p->unix_addr);
#else
- log_debug(LD_REND,
- "Service maps port %d to an AF_UNIX socket, but we "
- "have no AF_UNIX support on this platform. This is "
- "probably a bug.",
- p->virtual_port);
+ log_warn(LD_BUG,
+ "Service maps port %d to an AF_UNIX socket, but we "
+ "have no AF_UNIX support on this platform. This is "
+ "probably a bug.",
+ p->virtual_port);
+ rend_service_free(service);
+ return -1;
#endif /* defined(HAVE_SYS_UN_H) */
}
}
+ /* The service passed all the checks */
+ tor_assert(s_list);
+ smartlist_add(s_list, service);
return 0;
}
/* NOTREACHED */
@@ -344,9 +399,9 @@ rend_service_port_config_new(const char *socket_path)
return conf;
}
-/** Parses a real-port to virtual-port mapping separated by the provided
- * separator and returns a new rend_service_port_config_t, or NULL and an
- * optional error string on failure.
+/** Parses a virtual-port to real-port/socket mapping separated by
+ * the provided separator and returns a new rend_service_port_config_t,
+ * or NULL and an optional error string on failure.
*
* The format is: VirtualPort SEP (IP|RealPort|IP:RealPort|'socket':path)?
*
@@ -371,14 +426,12 @@ rend_service_parse_port_config(const char *string, const char *sep,
smartlist_split_string(sl, string, sep,
SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 2);
if (smartlist_len(sl) < 1 || BUG(smartlist_len(sl) > 2)) {
- if (err_msg_out)
- err_msg = tor_strdup("Bad syntax in hidden service port configuration.");
+ err_msg = tor_strdup("Bad syntax in hidden service port configuration.");
goto err;
}
virtport = (int)tor_parse_long(smartlist_get(sl,0), 10, 1, 65535, NULL,NULL);
if (!virtport) {
- if (err_msg_out)
- tor_asprintf(&err_msg, "Missing or invalid port %s in hidden service "
+ tor_asprintf(&err_msg, "Missing or invalid port %s in hidden service "
"port configuration", escaped(smartlist_get(sl,0)));
goto err;
@@ -406,10 +459,8 @@ rend_service_parse_port_config(const char *string, const char *sep,
} else if (strchr(addrport, ':') || strchr(addrport, '.')) {
/* else try it as an IP:port pair if it has a : or . in it */
if (tor_addr_port_lookup(addrport, &addr, &p)<0) {
- if (err_msg_out)
- err_msg = tor_strdup("Unparseable address in hidden service port "
- "configuration.");
-
+ err_msg = tor_strdup("Unparseable address in hidden service port "
+ "configuration.");
goto err;
}
realport = p?p:virtport;
@@ -417,11 +468,9 @@ rend_service_parse_port_config(const char *string, const char *sep,
/* No addr:port, no addr -- must be port. */
realport = (int)tor_parse_long(addrport, 10, 1, 65535, NULL, NULL);
if (!realport) {
- if (err_msg_out)
- tor_asprintf(&err_msg, "Unparseable or out-of-range port %s in "
- "hidden service port configuration.",
- escaped(addrport));
-
+ tor_asprintf(&err_msg, "Unparseable or out-of-range port %s in "
+ "hidden service port configuration.",
+ escaped(addrport));
goto err;
}
tor_addr_from_ipv4h(&addr, 0x7F000001u); /* Default to 127.0.0.1 */
@@ -440,7 +489,11 @@ rend_service_parse_port_config(const char *string, const char *sep,
err:
tor_free(addrport);
- if (err_msg_out) *err_msg_out = err_msg;
+ if (err_msg_out != NULL) {
+ *err_msg_out = err_msg;
+ } else {
+ tor_free(err_msg);
+ }
SMARTLIST_FOREACH(sl, char *, c, tor_free(c));
smartlist_free(sl);
@@ -454,6 +507,41 @@ rend_service_port_config_free(rend_service_port_config_t *p)
tor_free(p);
}
+/* Check the directory for <b>service</b>, and add the service to
+ * <b>service_list</b>, or to the global list if <b>service_list</b> is NULL.
+ * Only add the service to the list if <b>validate_only</b> is false.
+ * If <b>validate_only</b> is true, free the service.
+ * If <b>service</b> is NULL, ignore it, and return 0.
+ * Returns 0 on success, and -1 on failure.
+ * Takes ownership of <b>service</b>, either freeing it, or adding it to the
+ * global service list.
+ */
+STATIC int
+rend_service_check_dir_and_add(smartlist_t *service_list,
+ const or_options_t *options,
+ rend_service_t *service,
+ int validate_only)
+{
+ if (!service) {
+ /* It is ok for a service to be NULL, this means there are no services */
+ return 0;
+ }
+
+ if (rend_service_check_private_dir(options, service, !validate_only)
+ < 0) {
+ rend_service_free(service);
+ return -1;
+ }
+
+ smartlist_t *s_list = rend_get_service_list_mutable(service_list);
+ /* We must have a service list, even if it's a temporary one, so we can
+ * check for duplicate services */
+ if (BUG(!s_list)) {
+ return -1;
+ }
+ return rend_add_service(s_list, service);
+}
+
/** Set up rend_service_list, based on the values of HiddenServiceDir and
* HiddenServicePort in <b>options</b>. Return 0 on success and -1 on
* failure. (If <b>validate_only</b> is set, parse, warn and return as
@@ -466,25 +554,21 @@ rend_config_services(const or_options_t *options, int validate_only)
rend_service_t *service = NULL;
rend_service_port_config_t *portcfg;
smartlist_t *old_service_list = NULL;
+ smartlist_t *temp_service_list = NULL;
int ok = 0;
- if (!validate_only) {
- old_service_list = rend_service_list;
- rend_service_list = smartlist_new();
- }
+ /* Use a temporary service list, so that we can check the new services'
+ * consistency with each other */
+ temp_service_list = smartlist_new();
for (line = options->RendConfigLines; line; line = line->next) {
if (!strcasecmp(line->key, "HiddenServiceDir")) {
- if (service) { /* register the one we just finished parsing */
- if (rend_service_check_private_dir(options, service, 0) < 0) {
- rend_service_free(service);
+ /* register the service we just finished parsing
+ * this code registers every service except the last one parsed,
+ * which is registered below the loop */
+ if (rend_service_check_dir_and_add(temp_service_list, options, service,
+ validate_only) < 0) {
return -1;
- }
-
- if (validate_only)
- rend_service_free(service);
- else
- rend_add_service(service);
}
service = tor_malloc_zero(sizeof(rend_service_t));
service->directory = tor_strdup(line->value);
@@ -695,19 +779,30 @@ rend_config_services(const or_options_t *options, int validate_only)
}
}
}
- if (service) {
- if (rend_service_check_private_dir(options, service, 0) < 0) {
- rend_service_free(service);
- return -1;
- }
+ /* register the final service after we have finished parsing all services
+ * this code only registers the last service, other services are registered
+ * within the loop. It is ok for this service to be NULL, it is ignored. */
+ if (rend_service_check_dir_and_add(temp_service_list, options, service,
+ validate_only) < 0) {
+ return -1;
+ }
- if (validate_only) {
- rend_service_free(service);
- } else {
- rend_add_service(service);
- }
+ /* Free the newly added services if validating */
+ if (validate_only) {
+ SMARTLIST_FOREACH(temp_service_list, rend_service_t *, ptr,
+ rend_service_free(ptr));
+ smartlist_free(temp_service_list);
+ temp_service_list = NULL;
+ return 0;
}
+ /* Otherwise, use the newly added services as the new service list
+ * Since we have now replaced the global service list, from this point on we
+ * must succeed, or die trying. */
+ old_service_list = rend_service_list;
+ rend_service_list = temp_service_list;
+ temp_service_list = NULL;
+
/* If this is a reload and there were hidden services configured before,
* keep the introduction points that are still needed and close the
* other ones. */
@@ -729,7 +824,7 @@ rend_config_services(const or_options_t *options, int validate_only)
* will NOT have their intro point closed.
*/
SMARTLIST_FOREACH(old_service_list, rend_service_t *, old, {
- if (!old->directory) {
+ if (rend_service_is_ephemeral(old)) {
SMARTLIST_DEL_CURRENT(old_service_list, old);
smartlist_add(surviving_services, old);
smartlist_add(rend_service_list, old);
@@ -741,15 +836,20 @@ rend_config_services(const or_options_t *options, int validate_only)
* probably ok? */
SMARTLIST_FOREACH_BEGIN(rend_service_list, rend_service_t *, new) {
SMARTLIST_FOREACH_BEGIN(old_service_list, rend_service_t *, old) {
- if (new->directory && old->directory &&
- !strcmp(old->directory, new->directory)) {
- smartlist_add_all(new->intro_nodes, old->intro_nodes);
- smartlist_clear(old->intro_nodes);
- smartlist_add_all(new->expiring_nodes, old->expiring_nodes);
- smartlist_clear(old->expiring_nodes);
- smartlist_add(surviving_services, old);
- break;
+ if (BUG(rend_service_is_ephemeral(new)) ||
+ BUG(rend_service_is_ephemeral(old))) {
+ continue;
+ }
+ if (BUG(!new->directory) || BUG(!old->directory) ||
+ strcmp(old->directory, new->directory)) {
+ continue;
}
+ smartlist_add_all(new->intro_nodes, old->intro_nodes);
+ smartlist_clear(old->intro_nodes);
+ smartlist_add_all(new->expiring_nodes, old->expiring_nodes);
+ smartlist_clear(old->expiring_nodes);
+ smartlist_add(surviving_services, old);
+ break;
} SMARTLIST_FOREACH_END(old);
} SMARTLIST_FOREACH_END(new);
@@ -861,7 +961,7 @@ rend_service_add_ephemeral(crypto_pk_t *pk,
}
/* Initialize the service. */
- if (rend_add_service(s)) {
+ if (rend_add_service(NULL, s)) {
return RSAE_INTERNAL;
}
*service_id_out = tor_strdup(s->service_id);
@@ -1011,6 +1111,11 @@ service_is_single_onion_poisoned(const rend_service_t *service)
char *poison_fname = NULL;
file_status_t fstatus;
+ /* Passing a NULL service is a bug */
+ if (BUG(!service)) {
+ return 0;
+ }
+
if (rend_service_is_ephemeral(service)) {
return 0;
}
@@ -1044,58 +1149,69 @@ rend_service_private_key_exists(const rend_service_t *service)
return private_key_status == FN_FILE;
}
-/** Check the single onion service poison state of all existing hidden service
- * directories:
- * - If each service is poisoned, and we are in Single Onion Mode,
+/** Check the single onion service poison state of the directory for s:
+ * - If the service is poisoned, and we are in Single Onion Mode,
* return 0,
- * - If each service is not poisoned, and we are not in Single Onion Mode,
+ * - If the service is not poisoned, and we are not in Single Onion Mode,
* return 0,
- * - Otherwise, the poison state is invalid, and a service that was created in
- * one mode is being used in the other, return -1.
- * Hidden service directories without keys are not checked for consistency.
- * When their keys are created, they will be poisoned (if needed).
- * If a <b>service_list</b> is provided, treat it
- * as the list of hidden services (used in unittests). */
-int
-rend_service_list_verify_single_onion_poison(const smartlist_t *service_list,
- const or_options_t *options)
+ * - Otherwise, the poison state is invalid: the service was created in one
+ * mode, and is being used in the other, return -1.
+ * Hidden service directories without keys are always considered consistent.
+ * They will be poisoned after their directory is created (if needed). */
+STATIC int
+rend_service_verify_single_onion_poison(const rend_service_t* s,
+ const or_options_t* options)
{
- const smartlist_t *s_list;
- /* If no special service list is provided, then just use the global one. */
- if (!service_list) {
- if (!rend_service_list) { /* No global HS list. Nothing to see here. */
- return 0;
- }
+ /* Passing a NULL service is a bug */
+ if (BUG(!s)) {
+ return -1;
+ }
- s_list = rend_service_list;
- } else {
- s_list = service_list;
+ /* Ephemeral services are checked at ADD_ONION time */
+ if (BUG(rend_service_is_ephemeral(s))) {
+ return -1;
}
- int consistent = 1;
- SMARTLIST_FOREACH_BEGIN(s_list, const rend_service_t *, s) {
- if (service_is_single_onion_poisoned(s) !=
- rend_service_non_anonymous_mode_enabled(options) &&
- rend_service_private_key_exists(s)) {
- consistent = 0;
- }
- } SMARTLIST_FOREACH_END(s);
+ /* Service is expected to have a directory */
+ if (BUG(!s->directory)) {
+ return -1;
+ }
- return consistent ? 0 : -1;
+ /* Services without keys are always ok - their keys will only ever be used
+ * in the current mode */
+ if (!rend_service_private_key_exists(s)) {
+ return 0;
+ }
+
+ /* The key has been used before in a different mode */
+ if (service_is_single_onion_poisoned(s) !=
+ rend_service_non_anonymous_mode_enabled(options)) {
+ return -1;
+ }
+
+ /* The key exists and is consistent with the current mode */
+ return 0;
}
-/*** Helper for rend_service_poison_new_single_onion_dirs(). Add a file to
- * this hidden service directory that marks it as a single onion service.
- * Tor must be in single onion mode before calling this function.
+/*** Helper for rend_service_poison_new_single_onion_dir(). Add a file to
+ * the hidden service directory for s that marks it as a single onion service.
+ * Tor must be in single onion mode before calling this function, and the
+ * service directory must already have been created.
* Returns 0 when a directory is successfully poisoned, or if it is already
* poisoned. Returns -1 on a failure to read the directory or write the poison
* file, or if there is an existing private key file in the directory. (The
* service should have been poisoned when the key was created.) */
static int
-poison_new_single_onion_hidden_service_dir(const rend_service_t *service)
+poison_new_single_onion_hidden_service_dir_impl(const rend_service_t *service,
+ const or_options_t* options)
{
+ /* Passing a NULL service is a bug */
+ if (BUG(!service)) {
+ return -1;
+ }
+
/* We must only poison directories if we're in Single Onion mode */
- tor_assert(rend_service_non_anonymous_mode_enabled(get_options()));
+ tor_assert(rend_service_non_anonymous_mode_enabled(options));
int fd;
int retval = -1;
@@ -1113,8 +1229,8 @@ poison_new_single_onion_hidden_service_dir(const rend_service_t *service)
return -1;
}
- /* Make sure the directory exists */
- if (rend_service_check_private_dir(get_options(), service, 1) < 0)
+ /* Make sure the directory was created before calling this function. */
+ if (BUG(rend_service_check_private_dir_impl(options, service, 0) < 0))
return -1;
poison_fname = rend_service_sos_poison_path(service);
@@ -1151,44 +1267,39 @@ poison_new_single_onion_hidden_service_dir(const rend_service_t *service)
return retval;
}
-/** We just got launched in Single Onion Mode. That's a non-anoymous
- * mode for hidden services; hence we should mark all new hidden service
- * directories appropriately so that they are never launched as
- * location-private hidden services again. (New directories don't have private
- * key files.)
- * If a <b>service_list</b> is provided, treat it as the list of hidden
- * services (used in unittests).
+/** We just got launched in Single Onion Mode. That's a non-anonymous mode for
+ * hidden services. If s is new, we should mark its hidden service
+ * directory appropriately so that it is never launched as a location-private
+ * hidden service. (New directories don't have private key files.)
* Return 0 on success, -1 on fail. */
-int
-rend_service_poison_new_single_onion_dirs(const smartlist_t *service_list)
+STATIC int
+rend_service_poison_new_single_onion_dir(const rend_service_t *s,
+ const or_options_t* options)
{
+ /* Passing a NULL service is a bug */
+ if (BUG(!s)) {
+ return -1;
+ }
+
/* We must only poison directories if we're in Single Onion mode */
- tor_assert(rend_service_non_anonymous_mode_enabled(get_options()));
+ tor_assert(rend_service_non_anonymous_mode_enabled(options));
- const smartlist_t *s_list;
- /* If no special service list is provided, then just use the global one. */
- if (!service_list) {
- if (!rend_service_list) { /* No global HS list. Nothing to see here. */
- return 0;
- }
+ /* Ephemeral services aren't allowed in non-anonymous mode */
+ if (BUG(rend_service_is_ephemeral(s))) {
+ return -1;
+ }
- s_list = rend_service_list;
- } else {
- s_list = service_list;
+ /* Service is expected to have a directory */
+ if (BUG(!s->directory)) {
+ return -1;
}
- SMARTLIST_FOREACH_BEGIN(s_list, const rend_service_t *, s) {
- if (!rend_service_private_key_exists(s)) {
- if (poison_new_single_onion_hidden_service_dir(s) < 0) {
- return -1;
- }
+ if (!rend_service_private_key_exists(s)) {
+ if (poison_new_single_onion_hidden_service_dir_impl(s, options)
+ < 0) {
+ return -1;
}
- } SMARTLIST_FOREACH_END(s);
-
- /* The keys for these services are linked to the server IP address */
- log_notice(LD_REND, "The configured onion service directories have been "
- "used in single onion mode. They can not be used for anonymous "
- "hidden services.");
+ }
return 0;
}
@@ -1202,13 +1313,10 @@ rend_service_poison_new_single_onion_dirs(const smartlist_t *service_list)
int
rend_service_load_all_keys(const smartlist_t *service_list)
{
- const smartlist_t *s_list;
- /* If no special service list is provided, then just use the global one. */
- if (!service_list) {
- tor_assert(rend_service_list);
- s_list = rend_service_list;
- } else {
- s_list = service_list;
+ /* Use service_list for unit tests */
+ const smartlist_t *s_list = rend_get_service_list(service_list);
+ if (BUG(!s_list)) {
+ return -1;
}
SMARTLIST_FOREACH_BEGIN(s_list, rend_service_t *, s) {
@@ -1272,6 +1380,32 @@ rend_service_derive_key_digests(struct rend_service_t *s)
return 0;
}
+/* Implements the directory check from rend_service_check_private_dir,
+ * without doing the single onion poison checks. */
+static int
+rend_service_check_private_dir_impl(const or_options_t *options,
+ const rend_service_t *s,
+ int create)
+{
+ cpd_check_t check_opts = CPD_NONE;
+ if (create) {
+ check_opts |= CPD_CREATE;
+ } else {
+ check_opts |= CPD_CHECK_MODE_ONLY;
+ check_opts |= CPD_CHECK;
+ }
+ if (s->dir_group_readable) {
+ check_opts |= CPD_GROUP_READ;
+ }
+ /* Check/create directory */
+ if (check_private_dir(s->directory, check_opts, options->User) < 0) {
+ log_warn(LD_REND, "Checking service directory %s failed.", s->directory);
+ return -1;
+ }
+
+ return 0;
+}
+
/** Make sure that the directory for <b>s</b> is private, using the config in
* <b>options</b>.
* If <b>create</b> is true:
@@ -1286,20 +1420,58 @@ rend_service_check_private_dir(const or_options_t *options,
const rend_service_t *s,
int create)
{
- cpd_check_t check_opts = CPD_NONE;
- if (create) {
- check_opts |= CPD_CREATE;
- } else {
- check_opts |= CPD_CHECK_MODE_ONLY;
- check_opts |= CPD_CHECK;
- }
- if (s->dir_group_readable) {
- check_opts |= CPD_GROUP_READ;
+ /* Passing a NULL service is a bug */
+ if (BUG(!s)) {
+ return -1;
}
+
/* Check/create directory */
- if (check_private_dir(s->directory, check_opts, options->User) < 0) {
+ if (rend_service_check_private_dir_impl(options, s, create) < 0) {
+ return -1;
+ }
+
+ /* Check if the hidden service key exists, and was created in a different
+ * single onion service mode, and refuse to launch if it has.
+ * This is safe to call even when create is false, as it ignores missing
+ * keys and directories: they are always valid.
+ */
+ if (rend_service_verify_single_onion_poison(s, options) < 0) {
+ /* We can't use s->service_id here, as the key may not have been loaded */
+ log_warn(LD_GENERAL, "We are configured with "
+ "HiddenServiceNonAnonymousMode %d, but the hidden "
+ "service key in directory %s was created in %s mode. "
+ "This is not allowed.",
+ rend_service_non_anonymous_mode_enabled(options) ? 1 : 0,
+ rend_service_escaped_dir(s),
+ rend_service_non_anonymous_mode_enabled(options) ?
+ "an anonymous" : "a non-anonymous"
+ );
return -1;
}
+
+ /* Poison new single onion directories immediately after they are created,
+ * so that we never accidentally launch non-anonymous hidden services
+ * thinking they are anonymous. Any keys created later will end up with the
+ * correct poisoning state.
+ */
+ if (create && rend_service_non_anonymous_mode_enabled(options)) {
+ static int logged_warning = 0;
+
+ if (rend_service_poison_new_single_onion_dir(s, options) < 0) {
+ log_warn(LD_GENERAL,"Failed to mark new hidden services as non-anonymous"
+ ".");
+ return -1;
+ }
+
+ if (!logged_warning) {
+ /* The keys for these services are linked to the server IP address */
+ log_notice(LD_REND, "The configured onion service directories have been "
+ "used in single onion mode. They can not be used for "
+ "anonymous hidden services.");
+ logged_warning = 1;
+ }
+ }
+
return 0;
}
@@ -1312,7 +1484,9 @@ rend_service_load_keys(rend_service_t *s)
char *fname = NULL;
char buf[128];
- if (rend_service_check_private_dir(get_options(), s, 1) < 0)
+ /* Make sure the directory was created and single onion poisoning was
+ * checked before calling this function */
+ if (BUG(rend_service_check_private_dir(get_options(), s, 0) < 0))
goto err;
/* Load key */
diff --git a/src/or/rendservice.h b/src/or/rendservice.h
index 8fb3e8f97a..4e6b9a2536 100644
--- a/src/or/rendservice.h
+++ b/src/or/rendservice.h
@@ -119,6 +119,16 @@ typedef struct rend_service_t {
STATIC void rend_service_free(rend_service_t *service);
STATIC char *rend_service_sos_poison_path(const rend_service_t *service);
+STATIC int rend_service_check_dir_and_add(smartlist_t *service_list,
+ const or_options_t *options,
+ rend_service_t *service,
+ int validate_only);
+STATIC int rend_service_verify_single_onion_poison(
+ const rend_service_t *s,
+ const or_options_t *options);
+STATIC int rend_service_poison_new_single_onion_dir(
+ const rend_service_t *s,
+ const or_options_t* options);
STATIC ssize_t encode_establish_intro_cell_legacy(char *cell_body_out,
crypto_pk_t *intro_key,
char *rend_circ_nonce);
@@ -167,11 +177,6 @@ void rend_service_port_config_free(rend_service_port_config_t *p);
void rend_authorized_client_free(rend_authorized_client_t *client);
-int rend_service_list_verify_single_onion_poison(
- const smartlist_t *service_list,
- const or_options_t *options);
-int rend_service_poison_new_single_onion_dirs(const smartlist_t *service_list);
-
/** Return value from rend_service_add_ephemeral. */
typedef enum {
RSAE_BADAUTH = -5, /**< Invalid auth_type/auth_clients */
diff --git a/src/or/router.c b/src/or/router.c
index 79caf42a2a..2d8208aa04 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -1178,9 +1178,9 @@ router_should_be_directory_server(const or_options_t *options, int dir_port)
if (accounting_is_enabled(options) &&
get_options()->AccountingRule != ACCT_IN) {
/* Don't spend bytes for directory traffic if we could end up hibernating,
- * but allow DirPort otherwise. Some people set AccountingMax because
- * they're confused or to get statistics. Directory traffic has a much
- * larger effect on output than input so there is no reason to turn it
+ * but allow DirPort otherwise. Some relay operators set AccountingMax
+ * because they're confused or to get statistics. Directory traffic has a
+ * much larger effect on output than input so there is no reason to turn it
* off if using AccountingRule in. */
int interval_length = accounting_get_interval_length();
uint32_t effective_bw = get_effective_bwrate(options);
@@ -1312,8 +1312,15 @@ extend_info_from_router(const routerinfo_t *r)
/* Make sure we don't need to check address reachability */
tor_assert_nonfatal(router_skip_or_reachability(get_options(), 0));
+ const ed25519_public_key_t *ed_id_key;
+ if (r->cache_info.signing_key_cert)
+ ed_id_key = &r->cache_info.signing_key_cert->signing_key;
+ else
+ ed_id_key = NULL;
+
router_get_prim_orport(r, &ap);
return extend_info_new(r->nickname, r->cache_info.identity_digest,
+ ed_id_key,
r->onion_pkey, r->onion_curve25519_pkey,
&ap.addr, ap.port);
}
@@ -1961,23 +1968,34 @@ static int router_guess_address_from_dir_headers(uint32_t *guess);
/** Make a current best guess at our address, either because
* it's configured in torrc, or because we've learned it from
* dirserver headers. Place the answer in *<b>addr</b> and return
- * 0 on success, else return -1 if we have no guess. */
+ * 0 on success, else return -1 if we have no guess.
+ *
+ * If <b>cache_only</b> is true, just return any cached answers, and
+ * don't try to get any new answers.
+ */
MOCK_IMPL(int,
-router_pick_published_address,(const or_options_t *options, uint32_t *addr))
+router_pick_published_address,(const or_options_t *options, uint32_t *addr,
+ int cache_only))
{
+ /* First, check the cached output from resolve_my_address(). */
*addr = get_last_resolved_addr();
- if (!*addr &&
- resolve_my_address(LOG_INFO, options, addr, NULL, NULL) < 0) {
- log_info(LD_CONFIG, "Could not determine our address locally. "
- "Checking if directory headers provide any hints.");
- if (router_guess_address_from_dir_headers(addr) < 0) {
- log_info(LD_CONFIG, "No hints from directory headers either. "
- "Will try again later.");
- return -1;
+ if (*addr)
+ return 0;
+
+ /* Second, consider doing a resolve attempt right here. */
+ if (!cache_only) {
+ if (resolve_my_address(LOG_INFO, options, addr, NULL, NULL) >= 0) {
+ log_info(LD_CONFIG,"Success: chose address '%s'.", fmt_addr32(*addr));
+ return 0;
}
}
- log_info(LD_CONFIG,"Success: chose address '%s'.", fmt_addr32(*addr));
- return 0;
+
+ /* Third, check the cached output from router_new_address_suggestion(). */
+ if (router_guess_address_from_dir_headers(addr) >= 0)
+ return 0;
+
+ /* We have no useful cached answers. Return failure. */
+ return -1;
}
/* Like router_check_descriptor_address_consistency, but specifically for the
@@ -2074,7 +2092,7 @@ router_build_fresh_descriptor(routerinfo_t **r, extrainfo_t **e)
int hibernating = we_are_hibernating();
const or_options_t *options = get_options();
- if (router_pick_published_address(options, &addr) < 0) {
+ if (router_pick_published_address(options, &addr, 0) < 0) {
log_warn(LD_CONFIG, "Don't know my address while generating descriptor");
return -1;
}
@@ -2323,7 +2341,7 @@ router_rebuild_descriptor(int force)
if (desc_clean_since && !force)
return 0;
- if (router_pick_published_address(options, &addr) < 0 ||
+ if (router_pick_published_address(options, &addr, 0) < 0 ||
router_get_advertised_or_port(options) == 0) {
/* Stop trying to rebuild our descriptor every second. We'll
* learn that it's time to try again when ip_address_changed()
diff --git a/src/or/router.h b/src/or/router.h
index 73bfea1faa..c30a0301b7 100644
--- a/src/or/router.h
+++ b/src/or/router.h
@@ -91,7 +91,8 @@ const uint8_t *router_get_my_id_digest(void);
int router_extrainfo_digest_is_me(const char *digest);
int router_is_me(const routerinfo_t *router);
MOCK_DECL(int,router_pick_published_address,(const or_options_t *options,
- uint32_t *addr));
+ uint32_t *addr,
+ int cache_only));
int router_build_fresh_descriptor(routerinfo_t **r, extrainfo_t **e);
int router_rebuild_descriptor(int force);
char *router_dump_router_to_string(routerinfo_t *router,
diff --git a/src/or/routerkeys.c b/src/or/routerkeys.c
index 8d9a1328b8..51802b15e5 100644
--- a/src/or/routerkeys.c
+++ b/src/or/routerkeys.c
@@ -742,8 +742,12 @@ load_ed_keys(const or_options_t *options, time_t now)
if (need_new_signing_key) {
log_notice(LD_OR, "It looks like I need to generate and sign a new "
- "medium-term signing key, because %s. To do that, I need to "
- "load%s the permanent master identity key.",
+ "medium-term signing key, because %s. To do that, I "
+ "need to load%s the permanent master identity key. "
+ "If the master identity key was not moved or encrypted "
+ "with a passphrase, this will be done automatically and "
+ "no further action is required. Otherwise, provide the "
+ "necessary data using 'tor --keygen' to do it manually.",
(NULL == use_signing) ? "I don't have one" :
EXPIRES_SOON(check_signing_cert, 0) ? "the one I have is expired" :
"you asked me to make one with --keygen",
@@ -751,15 +755,19 @@ load_ed_keys(const or_options_t *options, time_t now)
} else if (want_new_signing_key && !offline_master) {
log_notice(LD_OR, "It looks like I should try to generate and sign a "
"new medium-term signing key, because the one I have is "
- "going to expire soon. To do that, I'm going to have to try to "
- "load the permanent master identity key.");
+ "going to expire soon. To do that, I'm going to have to "
+ "try to load the permanent master identity key. "
+ "If the master identity key was not moved or encrypted "
+ "with a passphrase, this will be done automatically and "
+ "no further action is required. Otherwise, provide the "
+ "necessary data using 'tor --keygen' to do it manually.");
} else if (want_new_signing_key) {
log_notice(LD_OR, "It looks like I should try to generate and sign a "
"new medium-term signing key, because the one I have is "
"going to expire soon. But OfflineMasterKey is set, so I "
- "won't try to load a permanent master identity key is set. "
- "You will need to use 'tor --keygen' make a new signing key "
- "and certificate.");
+ "won't try to load a permanent master identity key. You "
+ "will need to use 'tor --keygen' to make a new signing "
+ "key and certificate.");
}
{
@@ -1091,6 +1099,14 @@ get_master_identity_key(void)
return &master_identity_key->pubkey;
}
+/** Return true iff <b>id</b> is our Ed25519 master identity key. */
+int
+router_ed25519_id_is_me(const ed25519_public_key_t *id)
+{
+ return id && master_identity_key &&
+ ed25519_pubkey_eq(id, &master_identity_key->pubkey);
+}
+
#ifdef TOR_UNIT_TESTS
/* only exists for the unit tests, since otherwise the identity key
* should be used to sign nothing but the signing key. */
diff --git a/src/or/routerkeys.h b/src/or/routerkeys.h
index 307a1cd234..98894cdc0b 100644
--- a/src/or/routerkeys.h
+++ b/src/or/routerkeys.h
@@ -45,6 +45,8 @@ const struct tor_cert_st *get_current_auth_key_cert(void);
void get_master_rsa_crosscert(const uint8_t **cert_out,
size_t *size_out);
+int router_ed25519_id_is_me(const ed25519_public_key_t *id);
+
struct tor_cert_st *make_ntor_onion_key_crosscert(
const curve25519_keypair_t *onion_key,
const ed25519_public_key_t *master_id_key,
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index c99d22ed41..69ae51ad4a 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -586,7 +586,7 @@ trusted_dirs_load_certs_from_string(const char *contents, int source,
"signing key %s", from_store ? "cached" : "downloaded",
ds->nickname, hex_str(cert->signing_key_digest,DIGEST_LEN));
} else {
- int adding = directory_caches_unknown_auth_certs(get_options());
+ int adding = we_want_to_fetch_unknown_auth_certs(get_options());
log_info(LD_DIR, "%s %s certificate for unrecognized directory "
"authority with signing key %s",
adding ? "Adding" : "Not adding",
@@ -1012,7 +1012,7 @@ authority_certs_fetch_missing(networkstatus_t *status, time_t now,
char *resource = NULL;
cert_list_t *cl;
const or_options_t *options = get_options();
- const int cache = directory_caches_unknown_auth_certs(options);
+ const int keep_unknown = we_want_to_fetch_unknown_auth_certs(options);
fp_pair_t *fp_tmp = NULL;
char id_digest_str[2*DIGEST_LEN+1];
char sk_digest_str[2*DIGEST_LEN+1];
@@ -1084,9 +1084,10 @@ authority_certs_fetch_missing(networkstatus_t *status, time_t now,
if (!smartlist_len(voter->sigs))
continue; /* This authority never signed this consensus, so don't
* go looking for a cert with key digest 0000000000. */
- if (!cache &&
+ if (!keep_unknown &&
!trusteddirserver_get_by_v3_auth_digest(voter->identity_digest))
- continue; /* We are not a cache, and we don't know this authority.*/
+ continue; /* We don't want unknown certs, and we don't know this
+ * authority.*/
/*
* If we don't know *any* cert for this authority, and a download by ID
@@ -2990,20 +2991,6 @@ router_digest_is_trusted_dir_type(const char *digest, dirinfo_type_t type)
return 0;
}
-/** Return true iff <b>addr</b> is the address of one of our trusted
- * directory authorities. */
-int
-router_addr_is_trusted_dir(uint32_t addr)
-{
- if (!trusted_dir_servers)
- return 0;
- SMARTLIST_FOREACH(trusted_dir_servers, dir_server_t *, ent,
- if (ent->addr == addr)
- return 1;
- );
- return 0;
-}
-
/** If hexdigest is correctly formed, base16_decode it into
* digest, which must have DIGEST_LEN space in it.
* Return 0 on success, -1 on failure.
@@ -3236,6 +3223,17 @@ signed_descriptor_free(signed_descriptor_t *sd)
tor_free(sd);
}
+/** Reset the given signed descriptor <b>sd</b> by freeing the allocated
+ * memory inside the object and by zeroing its content. */
+static void
+signed_descriptor_reset(signed_descriptor_t *sd)
+{
+ tor_assert(sd);
+ tor_free(sd->signed_descriptor_body);
+ tor_cert_free(sd->signing_key_cert);
+ memset(sd, 0, sizeof(*sd));
+}
+
/** Copy src into dest, and steal all references inside src so that when
* we free src, we don't mess up dest. */
static void
@@ -3243,6 +3241,8 @@ signed_descriptor_move(signed_descriptor_t *dest,
signed_descriptor_t *src)
{
tor_assert(dest != src);
+ /* Cleanup destination object before overwriting it.*/
+ signed_descriptor_reset(dest);
memcpy(dest, src, sizeof(signed_descriptor_t));
src->signed_descriptor_body = NULL;
src->signing_key_cert = NULL;
@@ -3895,7 +3895,7 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg,
router_describe(router));
*msg = "Router descriptor is not referenced by any network-status.";
- /* Only journal this desc if we'll be serving it. */
+ /* Only journal this desc if we want to keep old descriptors */
if (!from_cache && should_cache_old_descriptors())
signed_desc_append_to_journal(&router->cache_info,
&routerlist->desc_store);
@@ -4482,7 +4482,7 @@ router_load_extrainfo_from_string(const char *s, const char *eos,
ei->cache_info.identity_digest,
DIGEST_LEN);
smartlist_string_remove(requested_fingerprints, fp);
- /* We silently let people stuff us with extrainfos we didn't ask for,
+ /* We silently let relays stuff us with extrainfos we didn't ask for,
* so long as we would have wanted them anyway. Since we always fetch
* all the extrainfos we want, and we never actually act on them
* inside Tor, this should be harmless. */
@@ -4525,13 +4525,14 @@ router_load_extrainfo_from_string(const char *s, const char *eos,
smartlist_free(extrainfo_list);
}
-/** Return true iff any networkstatus includes a descriptor whose digest
- * is that of <b>desc</b>. */
+/** Return true iff the latest ns-flavored consensus includes a descriptor
+ * whose digest is that of <b>desc</b>. */
static int
signed_desc_digest_is_recognized(signed_descriptor_t *desc)
{
const routerstatus_t *rs;
- networkstatus_t *consensus = networkstatus_get_latest_consensus();
+ networkstatus_t *consensus = networkstatus_get_latest_consensus_by_flavor(
+ FLAV_NS);
if (consensus) {
rs = networkstatus_vote_find_entry(consensus, desc->identity_digest);
@@ -5154,7 +5155,7 @@ update_consensus_router_descriptor_downloads(time_t now, int is_vote,
++n_would_reject;
continue; /* We would throw it out immediately. */
}
- if (!directory_caches_dir_info(options) &&
+ if (!we_want_to_fetch_flavor(options, consensus->flavor) &&
!client_would_use_router(rs, now, options)) {
++n_wouldnt_use;
continue; /* We would never use it ourself. */
diff --git a/src/or/routerlist.h b/src/or/routerlist.h
index 606e9085ce..8b68d69f28 100644
--- a/src/or/routerlist.h
+++ b/src/or/routerlist.h
@@ -86,7 +86,6 @@ int router_digest_is_trusted_dir_type(const char *digest,
#define router_digest_is_trusted_dir(d) \
router_digest_is_trusted_dir_type((d), NO_DIRINFO)
-int router_addr_is_trusted_dir(uint32_t addr);
int hexdigest_to_digest(const char *hexdigest, char *digest);
const routerinfo_t *router_get_by_id_digest(const char *digest);
routerinfo_t *router_get_mutable_by_digest(const char *digest);
diff --git a/src/or/routerparse.c b/src/or/routerparse.c
index 2cfd3fc58a..e3f2186c32 100644
--- a/src/or/routerparse.c
+++ b/src/or/routerparse.c
@@ -370,8 +370,7 @@ static int router_get_hashes_impl(const char *s, size_t s_len,
char end_char);
static smartlist_t *find_all_exitpolicy(smartlist_t *s);
-#define CST_CHECK_AUTHORITY (1<<0)
-#define CST_NO_CHECK_OBJTYPE (1<<1)
+#define CST_NO_CHECK_OBJTYPE (1<<0)
static int check_signature_token(const char *digest,
ssize_t digest_len,
directory_token_t *tok,
@@ -715,7 +714,7 @@ dump_desc_populate_one_file, (const char *dirname, const char *f))
* filename.
*/
if (crypto_digest256((char *)content_digest, desc, (size_t) st.st_size,
- DIGEST_SHA256) != 0) {
+ DIGEST_SHA256) < 0) {
/* Weird, but okay */
log_info(LD_DIR,
"Unable to hash content of %s from unparseable descriptors "
@@ -879,7 +878,7 @@ dump_desc(const char *desc, const char *type)
/* Get the hash for logging purposes anyway */
len = strlen(desc);
if (crypto_digest256((char *)digest_sha256, desc, len,
- DIGEST_SHA256) != 0) {
+ DIGEST_SHA256) < 0) {
log_info(LD_DIR,
"Unable to parse descriptor of type %s, and unable to even hash"
" it!", type);
@@ -1173,28 +1172,9 @@ tor_version_is_obsolete(const char *myversion, const char *versionlist)
return ret;
}
-/** Return true iff <b>key</b> is allowed to sign directories.
- */
-static int
-dir_signing_key_is_trusted(crypto_pk_t *key)
-{
- char digest[DIGEST_LEN];
- if (!key) return 0;
- if (crypto_pk_get_digest(key, digest) < 0) {
- log_warn(LD_DIR, "Error computing dir-signing-key digest");
- return 0;
- }
- if (!router_digest_is_trusted_dir(digest)) {
- log_warn(LD_DIR, "Listed dir-signing-key is not trusted");
- return 0;
- }
- return 1;
-}
-
/** Check whether the object body of the token in <b>tok</b> has a good
- * signature for <b>digest</b> using key <b>pkey</b>. If
- * <b>CST_CHECK_AUTHORITY</b> is set, make sure that <b>pkey</b> is the key of
- * a directory authority. If <b>CST_NO_CHECK_OBJTYPE</b> is set, do not check
+ * signature for <b>digest</b> using key <b>pkey</b>.
+ * If <b>CST_NO_CHECK_OBJTYPE</b> is set, do not check
* the object type of the signature object. Use <b>doctype</b> as the type of
* the document when generating log messages. Return 0 on success, negative
* on failure.
@@ -1209,7 +1189,6 @@ check_signature_token(const char *digest,
{
char *signed_digest;
size_t keysize;
- const int check_authority = (flags & CST_CHECK_AUTHORITY);
const int check_objtype = ! (flags & CST_NO_CHECK_OBJTYPE);
tor_assert(pkey);
@@ -1217,12 +1196,6 @@ check_signature_token(const char *digest,
tor_assert(digest);
tor_assert(doctype);
- if (check_authority && !dir_signing_key_is_trusted(pkey)) {
- log_warn(LD_DIR, "Key on %s did not come from an authority; rejecting",
- doctype);
- return -1;
- }
-
if (check_objtype) {
if (strcmp(tok->object_type, "SIGNATURE")) {
log_warn(LD_DIR, "Bad object type on %s signature", doctype);
@@ -4536,12 +4509,12 @@ router_get_hash_impl(const char *s, size_t s_len, char *digest,
return -1;
if (alg == DIGEST_SHA1) {
- if (crypto_digest(digest, start, end-start)) {
+ if (crypto_digest(digest, start, end-start) < 0) {
log_warn(LD_BUG,"couldn't compute digest");
return -1;
}
} else {
- if (crypto_digest256(digest, start, end-start, alg)) {
+ if (crypto_digest256(digest, start, end-start, alg) < 0) {
log_warn(LD_BUG,"couldn't compute digest");
return -1;
}
diff --git a/src/or/shared_random.c b/src/or/shared_random.c
index 5f6b03f1ba..0eb93382ca 100644
--- a/src/or/shared_random.c
+++ b/src/or/shared_random.c
@@ -192,7 +192,7 @@ verify_commit_and_reveal(const sr_commit_t *commit)
/* Use the invariant length since the encoded reveal variable has an
* extra byte for the NUL terminated byte. */
if (crypto_digest256(received_hashed_reveal, commit->encoded_reveal,
- SR_REVEAL_BASE64_LEN, commit->alg)) {
+ SR_REVEAL_BASE64_LEN, commit->alg) < 0) {
/* Unable to digest the reveal blob, this is unlikely. */
goto invalid;
}
@@ -932,7 +932,7 @@ sr_generate_our_commit(time_t timestamp, const authority_cert_t *my_rsa_cert)
/* The invariant length is used here since the encoded reveal variable
* has an extra byte added for the NULL terminated byte. */
if (crypto_digest256(commit->hashed_reveal, commit->encoded_reveal,
- SR_REVEAL_BASE64_LEN, commit->alg)) {
+ SR_REVEAL_BASE64_LEN, commit->alg) < 0) {
goto error;
}
@@ -1012,7 +1012,7 @@ sr_compute_srv(void)
SMARTLIST_FOREACH(chunks, char *, s, tor_free(s));
smartlist_free(chunks);
if (crypto_digest256(hashed_reveals, reveals, strlen(reveals),
- SR_DIGEST_ALG)) {
+ SR_DIGEST_ALG) < 0) {
goto end;
}
current_srv = generate_srv(hashed_reveals, reveal_num,
diff --git a/src/or/torcert.c b/src/or/torcert.c
index 852def9ef6..c58f3da2d3 100644
--- a/src/or/torcert.c
+++ b/src/or/torcert.c
@@ -156,11 +156,12 @@ tor_cert_parse(const uint8_t *encoded, const size_t len)
cert->encoded_len = len;
memcpy(cert->signed_key.pubkey, parsed->certified_key, 32);
- const int64_t valid_until_64 = ((int64_t)parsed->exp_field) * 3600;
+ int64_t valid_until_64 = ((int64_t)parsed->exp_field) * 3600;
+#if SIZEOF_TIME_T < SIZEOF_INT64_T
if (valid_until_64 > TIME_MAX)
- cert->valid_until = TIME_MAX - 1;
- else
- cert->valid_until = (time_t) valid_until_64;
+ valid_until_64 = TIME_MAX - 1;
+#endif
+ cert->valid_until = (time_t) valid_until_64;
cert->cert_type = parsed->cert_type;
for (unsigned i = 0; i < ed25519_cert_getlen_ext(parsed); ++i) {
@@ -647,3 +648,44 @@ or_handshake_certs_check_both(int severity,
}
}
+/* === ENCODING === */
+
+/* Encode the ed25519 certificate <b>cert</b> and put the newly allocated
+ * string in <b>cert_str_out</b>. Return 0 on success else a negative value. */
+int
+tor_cert_encode_ed22519(const tor_cert_t *cert, char **cert_str_out)
+{
+ int ret = -1;
+ char *ed_cert_b64 = NULL;
+ size_t ed_cert_b64_len;
+
+ tor_assert(cert);
+ tor_assert(cert_str_out);
+
+ /* Get the encoded size and add the NUL byte. */
+ ed_cert_b64_len = base64_encode_size(cert->encoded_len,
+ BASE64_ENCODE_MULTILINE) + 1;
+ ed_cert_b64 = tor_malloc_zero(ed_cert_b64_len);
+
+ /* Base64 encode the encoded certificate. */
+ if (base64_encode(ed_cert_b64, ed_cert_b64_len,
+ (const char *) cert->encoded, cert->encoded_len,
+ BASE64_ENCODE_MULTILINE) < 0) {
+ log_err(LD_BUG, "Couldn't base64-encode ed22519 cert!");
+ goto err;
+ }
+
+ /* Put everything together in a NUL terminated string. */
+ tor_asprintf(cert_str_out,
+ "-----BEGIN ED25519 CERT-----\n"
+ "%s"
+ "-----END ED25519 CERT-----",
+ ed_cert_b64);
+ /* Success! */
+ ret = 0;
+
+ err:
+ tor_free(ed_cert_b64);
+ return ret;
+}
+
diff --git a/src/or/torcert.h b/src/or/torcert.h
index 4bd816f4a4..090f6b5811 100644
--- a/src/or/torcert.h
+++ b/src/or/torcert.h
@@ -98,5 +98,7 @@ void or_handshake_certs_check_both(int severity,
const ed25519_public_key_t **ed_id_out,
const common_digests_t **rsa_id_out);
+int tor_cert_encode_ed22519(const tor_cert_t *cert, char **cert_str_out);
+
#endif
diff --git a/src/or/transports.c b/src/or/transports.c
index 614b28c168..f755882c16 100644
--- a/src/or/transports.c
+++ b/src/or/transports.c
@@ -1611,7 +1611,7 @@ pt_get_extra_info_descriptor_string(void)
uint32_t external_ip_address = 0;
if (tor_addr_is_null(&t->addr) &&
router_pick_published_address(get_options(),
- &external_ip_address) >= 0) {
+ &external_ip_address, 0) >= 0) {
tor_addr_t addr;
tor_addr_from_ipv4h(&addr, external_ip_address);
addrport = fmt_addrport(&addr, t->port);
diff --git a/src/test/include.am b/src/test/include.am
index 6177e5f920..d406d6d324 100644
--- a/src/test/include.am
+++ b/src/test/include.am
@@ -80,6 +80,7 @@ src_test_test_SOURCES = \
src/test/test_checkdir.c \
src/test/test_circuitlist.c \
src/test/test_circuitmux.c \
+ src/test/test_circuituse.c \
src/test/test_compat_libevent.c \
src/test/test_config.c \
src/test/test_connection.c \
diff --git a/src/test/log_test_helpers.h b/src/test/log_test_helpers.h
index 4c020c7ec3..922c68b42f 100644
--- a/src/test/log_test_helpers.h
+++ b/src/test/log_test_helpers.h
@@ -49,7 +49,22 @@ void mock_dump_saved_logs(void);
#define expect_log_msg_containing_either(str1, str2) \
assert_log_predicate(mock_saved_log_has_message_containing(str1) || \
mock_saved_log_has_message_containing(str2), \
- "expected log to contain " # str1 " or " # str2);
+ "expected log to contain " # str1 " or " # str2);
+
+#define expect_log_msg_containing_either3(str1, str2, str3) \
+ assert_log_predicate(mock_saved_log_has_message_containing(str1) || \
+ mock_saved_log_has_message_containing(str2) || \
+ mock_saved_log_has_message_containing(str3), \
+ "expected log to contain " # str1 " or " # str2 \
+ " or " # str3);
+
+#define expect_log_msg_containing_either4(str1, str2, str3, str4) \
+ assert_log_predicate(mock_saved_log_has_message_containing(str1) || \
+ mock_saved_log_has_message_containing(str2) || \
+ mock_saved_log_has_message_containing(str3) || \
+ mock_saved_log_has_message_containing(str4), \
+ "expected log to contain " # str1 " or " # str2 \
+ " or " # str3 " or " # str4);
#define expect_single_log_msg(str) \
do { \
diff --git a/src/test/test.c b/src/test/test.c
index b49180cbfd..866408e856 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -1190,6 +1190,7 @@ struct testgroup_t testgroups[] = {
{ "checkdir/", checkdir_tests },
{ "circuitlist/", circuitlist_tests },
{ "circuitmux/", circuitmux_tests },
+ { "circuituse/", circuituse_tests },
{ "compat/libevent/", compat_libevent_tests },
{ "config/", config_tests },
{ "connection/", connection_tests },
diff --git a/src/test/test.h b/src/test/test.h
index cf4735146f..2bd58f51c8 100644
--- a/src/test/test.h
+++ b/src/test/test.h
@@ -185,6 +185,7 @@ extern struct testcase_t channeltls_tests[];
extern struct testcase_t checkdir_tests[];
extern struct testcase_t circuitlist_tests[];
extern struct testcase_t circuitmux_tests[];
+extern struct testcase_t circuituse_tests[];
extern struct testcase_t compat_libevent_tests[];
extern struct testcase_t config_tests[];
extern struct testcase_t connection_tests[];
diff --git a/src/test/test_address.c b/src/test/test_address.c
index e52779cb64..0d142ad483 100644
--- a/src/test/test_address.c
+++ b/src/test/test_address.c
@@ -808,8 +808,13 @@ test_address_get_if_addrs6_list_internal(void *arg)
results = get_interface_address6_list(LOG_ERR, AF_INET6, 1);
tt_int_op(smartlist_len(mock_saved_logs()), OP_LE, 1);
if (smartlist_len(mock_saved_logs()) == 1) {
- expect_log_msg_containing_either("connect() failed",
- "unable to create socket");
+ expect_log_msg_containing_either4("connect() failed",
+ "unable to create socket",
+ "Address that we determined via UDP "
+ "socket magic is unsuitable for public "
+ "comms.",
+ "getsockname() to determine interface "
+ "failed");
}
teardown_capture_of_logs();
@@ -846,8 +851,13 @@ test_address_get_if_addrs6_list_no_internal(void *arg)
results = get_interface_address6_list(LOG_ERR, AF_INET6, 0);
tt_int_op(smartlist_len(mock_saved_logs()), OP_LE, 1);
if (smartlist_len(mock_saved_logs()) == 1) {
- expect_log_msg_containing_either("connect() failed",
- "unable to create socket");
+ expect_log_msg_containing_either4("connect() failed",
+ "unable to create socket",
+ "Address that we determined via UDP "
+ "socket magic is unsuitable for public "
+ "comms.",
+ "getsockname() to determine interface "
+ "failed");
}
teardown_capture_of_logs();
diff --git a/src/test/test_cell_formats.c b/src/test/test_cell_formats.c
index f839a5b72c..bbcff38d6d 100644
--- a/src/test/test_cell_formats.c
+++ b/src/test/test_cell_formats.c
@@ -11,6 +11,7 @@
#include "channel.h"
#include "connection_edge.h"
#include "connection_or.h"
+#include "config.h"
#include "onion.h"
#include "onion_tap.h"
#include "onion_fast.h"
@@ -698,6 +699,7 @@ test_cfmt_extend_cells(void *arg)
tt_int_op(61681, OP_EQ, ec.orport_ipv4.port);
tt_str_op("2002::f0:c51e", OP_EQ, fmt_addr(&ec.orport_ipv6.addr));
tt_int_op(4370, OP_EQ, ec.orport_ipv6.port);
+ tt_assert(ed25519_public_key_is_zero(&ec.ed_pubkey));
tt_mem_op(ec.node_id,OP_EQ, "anthropomorphization", 20);
tt_int_op(cc->cell_type, OP_EQ, CELL_CREATE2);
tt_int_op(cc->handshake_type, OP_EQ, 0x105);
@@ -717,6 +719,37 @@ test_cfmt_extend_cells(void *arg)
tt_mem_op(p2+1+8+22+4,OP_EQ, b, 99+20);
tt_int_op(0, OP_EQ, create_cell_format_relayed(&cell, cc));
+ /* Now let's add an ed25519 key to that extend2 cell. */
+ memcpy(ec.ed_pubkey.pubkey,
+ "brownshoesdontmakeit/brownshoesd", 32);
+
+ /* As before, since we aren't extending by ed25519. */
+ get_options_mutable()->ExtendByEd25519ID = 0;
+ tt_int_op(0, OP_EQ, extend_cell_format(&p2_cmd, &p2_len, p2, &ec));
+ tt_int_op(p2_len, OP_EQ, 89+99-34-20);
+ test_memeq_hex(p2,
+ "02000612F40001F0F1"
+ "0214616e7468726f706f6d6f727068697a6174696f6e"
+ "01050063");
+
+ /* Now try with the ed25519 ID. */
+ get_options_mutable()->ExtendByEd25519ID = 1;
+ tt_int_op(0, OP_EQ, extend_cell_format(&p2_cmd, &p2_len, p2, &ec));
+ tt_int_op(p2_len, OP_EQ, 89+99-34-20 + 34);
+ test_memeq_hex(p2,
+ "03000612F40001F0F1"
+ "0214616e7468726f706f6d6f727068697a6174696f6e"
+ // ed digest follows:
+ "0320" "62726f776e73686f6573646f6e746d616b656"
+ "9742f62726f776e73686f657364"
+ "01050063");
+ /* Can we parse that? Did the key come through right? */
+ memset(&ec, 0, sizeof(ec));
+ tt_int_op(0, OP_EQ, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ p2, p2_len));
+ tt_mem_op("brownshoesdontmakeit/brownshoesd", OP_EQ,
+ ec.ed_pubkey.pubkey, 32);
+
/* == Now try parsing some junk */
/* Try a too-long handshake */
@@ -1257,7 +1290,7 @@ struct testcase_t cell_format_tests[] = {
TEST(connected_cells, 0),
TEST(create_cells, 0),
TEST(created_cells, 0),
- TEST(extend_cells, 0),
+ TEST(extend_cells, TT_FORK),
TEST(extended_cells, 0),
TEST(resolved_cells, 0),
TEST(is_destroy, 0),
diff --git a/src/test/test_channel.c b/src/test/test_channel.c
index e87f99ef50..862bd6dfa6 100644
--- a/src/test/test_channel.c
+++ b/src/test/test_channel.c
@@ -1768,6 +1768,112 @@ test_channel_write(void *arg)
return;
}
+static void
+test_channel_id_map(void *arg)
+{
+ (void)arg;
+#define N_CHAN 6
+ char rsa_id[N_CHAN][DIGEST_LEN];
+ ed25519_public_key_t *ed_id[N_CHAN];
+ channel_t *chan[N_CHAN];
+ int i;
+ ed25519_public_key_t ed_zero;
+ memset(&ed_zero, 0, sizeof(ed_zero));
+
+ tt_assert(sizeof(rsa_id[0]) == DIGEST_LEN); // Do I remember C?
+
+ for (i = 0; i < N_CHAN; ++i) {
+ crypto_rand(rsa_id[i], DIGEST_LEN);
+ ed_id[i] = tor_malloc_zero(sizeof(*ed_id[i]));
+ crypto_rand((char*)ed_id[i]->pubkey, sizeof(ed_id[i]->pubkey));
+ }
+
+ /* For channel 3, have no Ed identity. */
+ tor_free(ed_id[3]);
+
+ /* Channel 2 and 4 have same ROSA identity */
+ memcpy(rsa_id[4], rsa_id[2], DIGEST_LEN);
+
+ /* Channel 2 and 4 and 5 have same RSA identity */
+ memcpy(rsa_id[4], rsa_id[2], DIGEST_LEN);
+ memcpy(rsa_id[5], rsa_id[2], DIGEST_LEN);
+
+ /* Channels 2 and 5 have same Ed25519 identity */
+ memcpy(ed_id[5], ed_id[2], sizeof(*ed_id[2]));
+
+ for (i = 0; i < N_CHAN; ++i) {
+ chan[i] = new_fake_channel();
+ channel_register(chan[i]);
+ channel_set_identity_digest(chan[i], rsa_id[i], ed_id[i]);
+ }
+
+ /* Lookup by RSA id only */
+ tt_ptr_op(chan[0], OP_EQ,
+ channel_find_by_remote_identity(rsa_id[0], NULL));
+ tt_ptr_op(chan[1], OP_EQ,
+ channel_find_by_remote_identity(rsa_id[1], NULL));
+ tt_ptr_op(chan[3], OP_EQ,
+ channel_find_by_remote_identity(rsa_id[3], NULL));
+ channel_t *ch;
+ ch = channel_find_by_remote_identity(rsa_id[2], NULL);
+ tt_assert(ch == chan[2] || ch == chan[4] || ch == chan[5]);
+ ch = channel_next_with_rsa_identity(ch);
+ tt_assert(ch == chan[2] || ch == chan[4] || ch == chan[5]);
+ ch = channel_next_with_rsa_identity(ch);
+ tt_assert(ch == chan[2] || ch == chan[4] || ch == chan[5]);
+ ch = channel_next_with_rsa_identity(ch);
+ tt_assert(ch == NULL);
+
+ /* As above, but with zero Ed25519 ID (meaning "any ID") */
+ tt_ptr_op(chan[0], OP_EQ,
+ channel_find_by_remote_identity(rsa_id[0], &ed_zero));
+ tt_ptr_op(chan[1], OP_EQ,
+ channel_find_by_remote_identity(rsa_id[1], &ed_zero));
+ tt_ptr_op(chan[3], OP_EQ,
+ channel_find_by_remote_identity(rsa_id[3], &ed_zero));
+ ch = channel_find_by_remote_identity(rsa_id[2], &ed_zero);
+ tt_assert(ch == chan[2] || ch == chan[4] || ch == chan[5]);
+ ch = channel_next_with_rsa_identity(ch);
+ tt_assert(ch == chan[2] || ch == chan[4] || ch == chan[5]);
+ ch = channel_next_with_rsa_identity(ch);
+ tt_assert(ch == chan[2] || ch == chan[4] || ch == chan[5]);
+ ch = channel_next_with_rsa_identity(ch);
+ tt_assert(ch == NULL);
+
+ /* Lookup nonexistent RSA identity */
+ tt_ptr_op(NULL, OP_EQ,
+ channel_find_by_remote_identity("!!!!!!!!!!!!!!!!!!!!", NULL));
+
+ /* Look up by full identity pair */
+ tt_ptr_op(chan[0], OP_EQ,
+ channel_find_by_remote_identity(rsa_id[0], ed_id[0]));
+ tt_ptr_op(chan[1], OP_EQ,
+ channel_find_by_remote_identity(rsa_id[1], ed_id[1]));
+ tt_ptr_op(chan[3], OP_EQ,
+ channel_find_by_remote_identity(rsa_id[3], ed_id[3] /*NULL*/));
+ tt_ptr_op(chan[4], OP_EQ,
+ channel_find_by_remote_identity(rsa_id[4], ed_id[4]));
+ ch = channel_find_by_remote_identity(rsa_id[2], ed_id[2]);
+ tt_assert(ch == chan[2] || ch == chan[5]);
+
+ /* Look up RSA identity with wrong ed25519 identity */
+ tt_ptr_op(NULL, OP_EQ,
+ channel_find_by_remote_identity(rsa_id[4], ed_id[0]));
+ tt_ptr_op(NULL, OP_EQ,
+ channel_find_by_remote_identity(rsa_id[2], ed_id[1]));
+ tt_ptr_op(NULL, OP_EQ,
+ channel_find_by_remote_identity(rsa_id[3], ed_id[1]));
+
+ done:
+ for (i = 0; i < N_CHAN; ++i) {
+ channel_clear_identity_digest(chan[i]);
+ channel_unregister(chan[i]);
+ free_fake_channel(chan[i]);
+ tor_free(ed_id[i]);
+ }
+#undef N_CHAN
+}
+
struct testcase_t channel_tests[] = {
{ "dumpstats", test_channel_dumpstats, TT_FORK, NULL, NULL },
{ "flush", test_channel_flush, TT_FORK, NULL, NULL },
@@ -1780,6 +1886,7 @@ struct testcase_t channel_tests[] = {
{ "queue_incoming", test_channel_queue_incoming, TT_FORK, NULL, NULL },
{ "queue_size", test_channel_queue_size, TT_FORK, NULL, NULL },
{ "write", test_channel_write, TT_FORK, NULL, NULL },
+ { "id_map", test_channel_id_map, TT_FORK, NULL, NULL },
END_OF_TESTCASES
};
diff --git a/src/test/test_circuituse.c b/src/test/test_circuituse.c
new file mode 100644
index 0000000000..27a87660ff
--- /dev/null
+++ b/src/test/test_circuituse.c
@@ -0,0 +1,304 @@
+/* Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2016, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#define CIRCUITLIST_PRIVATE
+
+#include "or.h"
+#include "test.h"
+#include "test_helpers.h"
+#include "config.h"
+#include "circuitlist.h"
+#include "circuituse.h"
+#include "circuitbuild.h"
+#include "nodelist.h"
+
+static void
+test_circuit_is_available_for_use_ret_false_when_marked_for_close(void *arg)
+{
+ (void)arg;
+
+ circuit_t *circ = tor_malloc(sizeof(circuit_t));
+ circ->marked_for_close = 1;
+
+ tt_int_op(0, ==, circuit_is_available_for_use(circ));
+
+ done:
+ tor_free(circ);
+}
+
+static void
+test_circuit_is_available_for_use_ret_false_when_timestamp_dirty(void *arg)
+{
+ (void)arg;
+
+ circuit_t *circ = tor_malloc(sizeof(circuit_t));
+ circ->timestamp_dirty = 1;
+
+ tt_int_op(0, ==, circuit_is_available_for_use(circ));
+
+ done:
+ tor_free(circ);
+}
+
+static void
+test_circuit_is_available_for_use_ret_false_for_non_general_purpose(void *arg)
+{
+ (void)arg;
+
+ circuit_t *circ = tor_malloc(sizeof(circuit_t));
+ circ->purpose = CIRCUIT_PURPOSE_REND_POINT_WAITING;
+
+ tt_int_op(0, ==, circuit_is_available_for_use(circ));
+
+ done:
+ tor_free(circ);
+}
+
+static void
+test_circuit_is_available_for_use_ret_false_for_non_general_origin(void *arg)
+{
+ (void)arg;
+
+ circuit_t *circ = tor_malloc(sizeof(circuit_t));
+ circ->purpose = CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT;
+
+ tt_int_op(0, ==, circuit_is_available_for_use(circ));
+
+ done:
+ tor_free(circ);
+}
+
+static void
+test_circuit_is_available_for_use_ret_false_for_non_origin_purpose(void *arg)
+{
+ (void)arg;
+
+ circuit_t *circ = tor_malloc(sizeof(circuit_t));
+ circ->purpose = CIRCUIT_PURPOSE_OR;
+
+ tt_int_op(0, ==, circuit_is_available_for_use(circ));
+
+ done:
+ tor_free(circ);
+}
+
+static void
+test_circuit_is_available_for_use_ret_false_unusable_for_new_conns(void *arg)
+{
+ (void)arg;
+
+ circuit_t *circ = dummy_origin_circuit_new(30);
+ mark_circuit_unusable_for_new_conns(TO_ORIGIN_CIRCUIT(circ));
+
+ tt_int_op(0, ==, circuit_is_available_for_use(circ));
+
+ done:
+ circuit_free(circ);
+}
+
+static void
+test_circuit_is_available_for_use_returns_false_for_onehop_tunnel(void *arg)
+{
+ (void)arg;
+
+ circuit_t *circ = dummy_origin_circuit_new(30);
+ origin_circuit_t *oc = TO_ORIGIN_CIRCUIT(circ);
+ oc->build_state = tor_malloc_zero(sizeof(cpath_build_state_t));
+ oc->build_state->onehop_tunnel = 1;
+
+ tt_int_op(0, ==, circuit_is_available_for_use(circ));
+
+ done:
+ circuit_free(circ);
+}
+
+static void
+test_circuit_is_available_for_use_returns_true_for_clean_circuit(void *arg)
+{
+ (void)arg;
+
+ circuit_t *circ = dummy_origin_circuit_new(30);
+ origin_circuit_t *oc = TO_ORIGIN_CIRCUIT(circ);
+ oc->build_state = tor_malloc_zero(sizeof(cpath_build_state_t));
+ oc->build_state->onehop_tunnel = 0;
+
+ tt_int_op(1, ==, circuit_is_available_for_use(circ));
+
+ done:
+ circuit_free(circ);
+}
+
+static int
+mock_circuit_all_predicted_ports_handled(time_t now,
+ int *need_uptime,
+ int *need_capacity)
+{
+ (void)now;
+
+ if (need_uptime && need_capacity)
+ return 0;
+ return 1;
+}
+
+static consensus_path_type_t
+mock_router_have_unknown_consensus_path(void)
+{
+ return CONSENSUS_PATH_UNKNOWN;
+}
+
+static consensus_path_type_t
+mock_router_have_exit_consensus_path(void)
+{
+ return CONSENSUS_PATH_EXIT;
+}
+
+static void
+test_needs_exit_circuits_ret_false_for_predicted_ports_and_path(void *arg)
+{
+ (void)arg;
+
+ MOCK(circuit_all_predicted_ports_handled,
+ mock_circuit_all_predicted_ports_handled);
+ int needs_uptime = 1;
+ int needs_capacity = 0;
+
+ time_t now = time(NULL);
+ tt_int_op(0, ==, needs_exit_circuits(now, &needs_uptime, &needs_capacity));
+
+ done:
+ UNMOCK(circuit_all_predicted_ports_handled);
+}
+
+static void
+test_needs_exit_circuits_ret_false_for_non_exit_consensus_path(void *arg)
+{
+ (void)arg;
+
+ MOCK(circuit_all_predicted_ports_handled,
+ mock_circuit_all_predicted_ports_handled);
+ int needs_uptime = 1;
+ int needs_capacity = 1;
+ MOCK(router_have_consensus_path, mock_router_have_unknown_consensus_path);
+
+ time_t now = time(NULL);
+ tt_int_op(0, ==, needs_exit_circuits(now, &needs_uptime, &needs_capacity));
+
+ done:
+ UNMOCK(circuit_all_predicted_ports_handled);
+ UNMOCK(router_have_consensus_path);
+}
+
+static void
+test_needs_exit_circuits_ret_true_for_predicted_ports_and_path(void *arg)
+{
+ (void)arg;
+
+ MOCK(circuit_all_predicted_ports_handled,
+ mock_circuit_all_predicted_ports_handled);
+ int needs_uptime = 1;
+ int needs_capacity = 1;
+ MOCK(router_have_consensus_path, mock_router_have_exit_consensus_path);
+
+ time_t now = time(NULL);
+ tt_int_op(1, ==, needs_exit_circuits(now, &needs_uptime, &needs_capacity));
+
+ done:
+ UNMOCK(circuit_all_predicted_ports_handled);
+ UNMOCK(router_have_consensus_path);
+}
+
+static void
+test_needs_circuits_for_build_ret_false_consensus_path_unknown(void *arg)
+{
+ (void)arg;
+ MOCK(router_have_consensus_path, mock_router_have_unknown_consensus_path);
+ tt_int_op(0, ==, needs_circuits_for_build(0));
+ done: ;
+}
+
+static void
+test_needs_circuits_for_build_ret_false_if_num_less_than_max(void *arg)
+{
+ (void)arg;
+ MOCK(router_have_consensus_path, mock_router_have_exit_consensus_path);
+ tt_int_op(0, ==, needs_circuits_for_build(13));
+ done:
+ UNMOCK(router_have_consensus_path);
+}
+
+static void
+test_needs_circuits_for_build_returns_true_when_more_are_needed(void *arg)
+{
+ (void)arg;
+ MOCK(router_have_consensus_path, mock_router_have_exit_consensus_path);
+ tt_int_op(1, ==, needs_circuits_for_build(0));
+ done:
+ UNMOCK(router_have_consensus_path);
+}
+
+struct testcase_t circuituse_tests[] = {
+ { "marked",
+ test_circuit_is_available_for_use_ret_false_when_marked_for_close,
+ TT_FORK, NULL, NULL
+ },
+ { "timestamp",
+ test_circuit_is_available_for_use_ret_false_when_timestamp_dirty,
+ TT_FORK, NULL, NULL
+ },
+ { "non_general",
+ test_circuit_is_available_for_use_ret_false_for_non_general_purpose,
+ TT_FORK, NULL, NULL
+ },
+ { "non_general",
+ test_circuit_is_available_for_use_ret_false_for_non_general_origin,
+ TT_FORK, NULL, NULL
+ },
+ { "origin",
+ test_circuit_is_available_for_use_ret_false_for_non_origin_purpose,
+ TT_FORK, NULL, NULL
+ },
+ { "clean",
+ test_circuit_is_available_for_use_ret_false_unusable_for_new_conns,
+ TT_FORK, NULL, NULL
+ },
+ { "onehop",
+ test_circuit_is_available_for_use_returns_false_for_onehop_tunnel,
+ TT_FORK, NULL, NULL
+ },
+ { "clean_circ",
+ test_circuit_is_available_for_use_returns_true_for_clean_circuit,
+ TT_FORK, NULL, NULL
+ },
+ { "exit_f",
+ test_needs_exit_circuits_ret_false_for_predicted_ports_and_path,
+ TT_FORK, NULL, NULL
+ },
+ { "exit_t",
+ test_needs_exit_circuits_ret_true_for_predicted_ports_and_path,
+ TT_FORK, NULL, NULL
+ },
+ { "non_exit",
+ test_needs_exit_circuits_ret_false_for_non_exit_consensus_path,
+ TT_FORK, NULL, NULL
+ },
+ { "true",
+ test_needs_exit_circuits_ret_true_for_predicted_ports_and_path,
+ TT_FORK, NULL, NULL
+ },
+ { "consensus_path_unknown",
+ test_needs_circuits_for_build_ret_false_consensus_path_unknown,
+ TT_FORK, NULL, NULL
+ },
+ { "less_than_max",
+ test_needs_circuits_for_build_ret_false_if_num_less_than_max,
+ TT_FORK, NULL, NULL
+ },
+ { "more_needed",
+ test_needs_circuits_for_build_returns_true_when_more_are_needed,
+ TT_FORK, NULL, NULL
+ },
+ END_OF_TESTCASES
+};
+
diff --git a/src/test/test_config.c b/src/test/test_config.c
index 384bff410f..1e0dc759e6 100644
--- a/src/test/test_config.c
+++ b/src/test/test_config.c
@@ -3480,10 +3480,12 @@ test_config_default_dir_servers(void *arg)
static int mock_router_pick_published_address_result = 0;
static int
-mock_router_pick_published_address(const or_options_t *options, uint32_t *addr)
+mock_router_pick_published_address(const or_options_t *options,
+ uint32_t *addr, int cache_only)
{
(void)options;
(void)addr;
+ (void)cache_only;
return mock_router_pick_published_address_result;
}
@@ -4888,6 +4890,33 @@ test_config_parse_port_config__ports__server_options(void *data)
config_free_lines(config_port_valid); config_port_valid = NULL;
}
+static void
+test_config_parse_log_severity(void *data)
+{
+ int ret;
+ const char *severity_log_lines[] = {
+ "debug file /tmp/debug.log",
+ "debug\tfile /tmp/debug.log",
+ "[handshake]debug [~net,~mm]info notice stdout",
+ "[handshake]debug\t[~net,~mm]info\tnotice\tstdout",
+ NULL
+ };
+ int i;
+ log_severity_list_t *severity;
+
+ (void) data;
+
+ severity = tor_malloc(sizeof(log_severity_list_t));
+ for (i = 0; severity_log_lines[i]; i++) {
+ memset(severity, 0, sizeof(log_severity_list_t));
+ ret = parse_log_severity_config(&severity_log_lines[i], severity);
+ tt_int_op(ret, OP_EQ, 0);
+ }
+
+ done:
+ tor_free(severity);
+}
+
#define CONFIG_TEST(name, flags) \
{ #name, test_config_ ## name, flags, NULL, NULL }
@@ -4914,6 +4943,7 @@ struct testcase_t config_tests[] = {
CONFIG_TEST(parse_port_config__ports__no_ports_given, 0),
CONFIG_TEST(parse_port_config__ports__server_options, 0),
CONFIG_TEST(parse_port_config__ports__ports_given, 0),
+ CONFIG_TEST(parse_log_severity, 0),
END_OF_TESTCASES
};
diff --git a/src/test/test_dir.c b/src/test/test_dir.c
index 6f83ceff00..fa0a174813 100644
--- a/src/test/test_dir.c
+++ b/src/test/test_dir.c
@@ -3501,10 +3501,15 @@ test_dir_purpose_needs_anonymity_returns_true_by_default(void *arg)
(void)arg;
tor_capture_bugs_(1);
+ setup_full_capture_of_logs(LOG_WARN);
tt_int_op(1, ==, purpose_needs_anonymity(0, 0, NULL));
tt_int_op(1, ==, smartlist_len(tor_get_captured_bug_log_()));
+ expect_single_log_msg_containing("Called with dir_purpose=0");
+
tor_end_capture_bugs_();
- done: ;
+ done:
+ tor_end_capture_bugs_();
+ teardown_capture_of_logs();
}
static void
diff --git a/src/test/test_dir_handle_get.c b/src/test/test_dir_handle_get.c
index c215feee26..a0868f9253 100644
--- a/src/test/test_dir_handle_get.c
+++ b/src/test/test_dir_handle_get.c
@@ -30,6 +30,7 @@
#include "dirserv.h"
#include "torgzip.h"
#include "dirvote.h"
+#include "log_test_helpers.h"
#ifdef _WIN32
/* For mkdir() */
@@ -53,6 +54,7 @@ ENABLE_GCC_WARNING(overlength-strings)
#define NOT_FOUND "HTTP/1.0 404 Not found\r\n\r\n"
#define BAD_REQUEST "HTTP/1.0 400 Bad request\r\n\r\n"
#define SERVER_BUSY "HTTP/1.0 503 Directory busy, try again later\r\n\r\n"
+#define TOO_OLD "HTTP/1.0 404 Consensus is too old\r\n\r\n"
#define NOT_ENOUGH_CONSENSUS_SIGNATURES "HTTP/1.0 404 " \
"Consensus not signed by sufficient number of requested authorities\r\n\r\n"
@@ -1617,6 +1619,7 @@ test_dir_handle_get_status_vote_current_consensus_ns_not_enough_sigs(void* d)
mock_ns_val = tor_malloc_zero(sizeof(networkstatus_t));
mock_ns_val->flavor = FLAV_NS;
mock_ns_val->voters = smartlist_new();
+ mock_ns_val->valid_until = time(NULL);
/* init mock */
init_mock_options();
@@ -1696,6 +1699,62 @@ test_dir_handle_get_status_vote_current_consensus_ns_not_found(void* data)
or_options_free(mock_options); mock_options = NULL;
}
+static void
+test_dir_handle_get_status_vote_current_consensus_too_old(void *data)
+{
+ dir_connection_t *conn = NULL;
+ char *header = NULL;
+ (void)data;
+
+ mock_ns_val = tor_malloc_zero(sizeof(networkstatus_t));
+ mock_ns_val->flavor = FLAV_MICRODESC;
+ mock_ns_val->valid_until = time(NULL) - (60 * 60 * 24) - 1;
+
+ init_mock_options();
+ MOCK(get_options, mock_get_options);
+ MOCK(connection_write_to_buf_impl_, connection_write_to_buf_mock);
+ MOCK(networkstatus_get_latest_consensus_by_flavor, mock_ns_get_by_flavor);
+
+ conn = new_dir_conn();
+
+ setup_capture_of_logs(LOG_WARN);
+
+ tt_int_op(0, OP_EQ, directory_handle_command_get(conn,
+ GET("/tor/status-vote/current/consensus-microdesc"), NULL, 0));
+
+ fetch_from_buf_http(TO_CONN(conn)->outbuf, &header, MAX_HEADERS_SIZE,
+ NULL, NULL, 1, 0);
+ tt_assert(header);
+ tt_str_op(TOO_OLD, OP_EQ, header);
+
+ expect_log_msg_containing("too old");
+
+ tor_free(header);
+ teardown_capture_of_logs();
+
+ setup_capture_of_logs(LOG_WARN);
+
+ tt_int_op(0, OP_EQ, directory_handle_command_get(conn,
+ GET("/tor/status-vote/current/consensus"), NULL, 0));
+
+ fetch_from_buf_http(TO_CONN(conn)->outbuf, &header, MAX_HEADERS_SIZE,
+ NULL, NULL, 1, 0);
+ tt_assert(header);
+ tt_str_op(TOO_OLD, OP_EQ, header);
+
+ expect_no_log_entry();
+
+ done:
+ teardown_capture_of_logs();
+ UNMOCK(networkstatus_get_latest_consensus_by_flavor);
+ UNMOCK(connection_write_to_buf_impl_);
+ UNMOCK(get_options);
+ connection_free_(TO_CONN(conn));
+ tor_free(header);
+ tor_free(mock_ns_val);
+ or_options_free(mock_options); mock_options = NULL;
+}
+
NS_DECL(int, geoip_get_country_by_addr, (const tor_addr_t *addr));
int
@@ -2481,6 +2540,7 @@ struct testcase_t dir_handle_get_tests[] = {
DIR_HANDLE_CMD(status_vote_next_authority, 0),
DIR_HANDLE_CMD(status_vote_current_consensus_ns_not_enough_sigs, 0),
DIR_HANDLE_CMD(status_vote_current_consensus_ns_not_found, 0),
+ DIR_HANDLE_CMD(status_vote_current_consensus_too_old, 0),
DIR_HANDLE_CMD(status_vote_current_consensus_ns_busy, 0),
DIR_HANDLE_CMD(status_vote_current_consensus_ns, 0),
DIR_HANDLE_CMD(status_vote_current_d_not_found, 0),
diff --git a/src/test/test_helpers.c b/src/test/test_helpers.c
index 130ec43a3a..132af39776 100644
--- a/src/test/test_helpers.c
+++ b/src/test/test_helpers.c
@@ -10,6 +10,7 @@
#include "orconfig.h"
#include "or.h"
+#include "relay.h"
#include "routerlist.h"
#include "nodelist.h"
#include "buffers.h"
@@ -23,6 +24,8 @@ DISABLE_GCC_WARNING(overlength-strings)
* at large. */
#endif
#include "test_descriptors.inc"
+#include "or.h"
+#include "circuitlist.h"
#ifdef HAVE_CFLAG_WOVERLENGTH_STRINGS
ENABLE_GCC_WARNING(overlength-strings)
#endif
@@ -105,3 +108,23 @@ connection_write_to_buf_mock(const char *string, size_t len,
write_to_buf(string, len, conn->outbuf);
}
+/* Set up a fake origin circuit with the specified number of cells,
+ * Return a pointer to the newly-created dummy circuit */
+circuit_t *
+dummy_origin_circuit_new(int n_cells)
+{
+ origin_circuit_t *circ = origin_circuit_new();
+ int i;
+ cell_t cell;
+
+ for (i=0; i < n_cells; ++i) {
+ crypto_rand((void*)&cell, sizeof(cell));
+ cell_queue_append_packed_copy(TO_CIRCUIT(circ),
+ &TO_CIRCUIT(circ)->n_chan_cells,
+ 1, &cell, 1, 0);
+ }
+
+ TO_CIRCUIT(circ)->purpose = CIRCUIT_PURPOSE_C_GENERAL;
+ return TO_CIRCUIT(circ);
+}
+
diff --git a/src/test/test_helpers.h b/src/test/test_helpers.h
index b77a459256..ba93b100d5 100644
--- a/src/test/test_helpers.h
+++ b/src/test/test_helpers.h
@@ -6,6 +6,8 @@
const char *get_yesterday_date_str(void);
+circuit_t * dummy_origin_circuit_new(int num_cells);
+
/* Number of descriptors contained in test_descriptors.txt. */
#define HELPER_NUMBER_OF_DESCRIPTORS 8
diff --git a/src/test/test_hs.c b/src/test/test_hs.c
index 318c549762..ac9788ceea 100644
--- a/src/test/test_hs.c
+++ b/src/test/test_hs.c
@@ -550,17 +550,18 @@ test_single_onion_poisoning(void *arg)
rend_service_t *service_2 = tor_malloc_zero(sizeof(rend_service_t));
char *dir2 = tor_strdup(get_fname_rnd("test_hs_dir2"));
smartlist_t *services = smartlist_new();
+ char *poison_path = NULL;
- /* No services, no problem! */
+ /* No services, no service to verify, no problem! */
mock_options->HiddenServiceSingleHopMode = 0;
mock_options->HiddenServiceNonAnonymousMode = 0;
- ret = rend_service_list_verify_single_onion_poison(services, mock_options);
+ ret = rend_config_services(mock_options, 1);
tt_assert(ret == 0);
/* Either way, no problem. */
mock_options->HiddenServiceSingleHopMode = 1;
mock_options->HiddenServiceNonAnonymousMode = 1;
- ret = rend_service_list_verify_single_onion_poison(services, mock_options);
+ ret = rend_config_services(mock_options, 1);
tt_assert(ret == 0);
/* Create the data directory, and, if the correct bit in arg is set,
@@ -580,42 +581,86 @@ test_single_onion_poisoning(void *arg)
service_1->directory = dir1;
service_2->directory = dir2;
+ /* The services own the directory pointers now */
dir1 = dir2 = NULL;
- smartlist_add(services, service_1);
+ /* Add port to service 1 */
+ service_1->ports = smartlist_new();
+ service_2->ports = smartlist_new();
+ char *err_msg = NULL;
+ rend_service_port_config_t *port1 = rend_service_parse_port_config("80", " ",
+ &err_msg);
+ tt_assert(port1);
+ tt_assert(!err_msg);
+ smartlist_add(service_1->ports, port1);
+
+ rend_service_port_config_t *port2 = rend_service_parse_port_config("90", " ",
+ &err_msg);
+ /* Add port to service 2 */
+ tt_assert(port2);
+ tt_assert(!err_msg);
+ smartlist_add(service_2->ports, port2);
+
+ /* No services, a service to verify, no problem! */
+ mock_options->HiddenServiceSingleHopMode = 0;
+ mock_options->HiddenServiceNonAnonymousMode = 0;
+ ret = rend_service_verify_single_onion_poison(service_1, mock_options);
+ tt_assert(ret == 0);
+ ret = rend_service_verify_single_onion_poison(service_2, mock_options);
+ tt_assert(ret == 0);
+
+ /* Either way, no problem. */
+ mock_options->HiddenServiceSingleHopMode = 1;
+ mock_options->HiddenServiceNonAnonymousMode = 1;
+ ret = rend_service_verify_single_onion_poison(service_1, mock_options);
+ tt_assert(ret == 0);
+ ret = rend_service_verify_single_onion_poison(service_2, mock_options);
+ tt_assert(ret == 0);
+
+ /* Add the first service */
+ ret = rend_service_check_dir_and_add(services, mock_options, service_1, 0);
+ tt_assert(ret == 0);
/* But don't add the second service yet. */
/* Service directories, but no previous keys, no problem! */
mock_options->HiddenServiceSingleHopMode = 0;
mock_options->HiddenServiceNonAnonymousMode = 0;
- ret = rend_service_list_verify_single_onion_poison(services, mock_options);
+ ret = rend_service_verify_single_onion_poison(service_1, mock_options);
+ tt_assert(ret == 0);
+ ret = rend_service_verify_single_onion_poison(service_2, mock_options);
tt_assert(ret == 0);
/* Either way, no problem. */
mock_options->HiddenServiceSingleHopMode = 1;
mock_options->HiddenServiceNonAnonymousMode = 1;
- ret = rend_service_list_verify_single_onion_poison(services, mock_options);
+ ret = rend_service_verify_single_onion_poison(service_1, mock_options);
+ tt_assert(ret == 0);
+ ret = rend_service_verify_single_onion_poison(service_2, mock_options);
tt_assert(ret == 0);
/* Poison! Poison! Poison!
* This can only be done in HiddenServiceSingleHopMode. */
mock_options->HiddenServiceSingleHopMode = 1;
mock_options->HiddenServiceNonAnonymousMode = 1;
- ret = rend_service_poison_new_single_onion_dirs(services);
+ ret = rend_service_poison_new_single_onion_dir(service_1, mock_options);
tt_assert(ret == 0);
/* Poisoning twice is a no-op. */
- ret = rend_service_poison_new_single_onion_dirs(services);
+ ret = rend_service_poison_new_single_onion_dir(service_1, mock_options);
tt_assert(ret == 0);
/* Poisoned service directories, but no previous keys, no problem! */
mock_options->HiddenServiceSingleHopMode = 0;
mock_options->HiddenServiceNonAnonymousMode = 0;
- ret = rend_service_list_verify_single_onion_poison(services, mock_options);
+ ret = rend_service_verify_single_onion_poison(service_1, mock_options);
+ tt_assert(ret == 0);
+ ret = rend_service_verify_single_onion_poison(service_2, mock_options);
tt_assert(ret == 0);
/* Either way, no problem. */
mock_options->HiddenServiceSingleHopMode = 1;
mock_options->HiddenServiceNonAnonymousMode = 1;
- ret = rend_service_list_verify_single_onion_poison(services, mock_options);
+ ret = rend_service_verify_single_onion_poison(service_1, mock_options);
+ tt_assert(ret == 0);
+ ret = rend_service_verify_single_onion_poison(service_2, mock_options);
tt_assert(ret == 0);
/* Now add some keys, and we'll have a problem. */
@@ -625,95 +670,121 @@ test_single_onion_poisoning(void *arg)
/* Poisoned service directories with previous keys are not allowed. */
mock_options->HiddenServiceSingleHopMode = 0;
mock_options->HiddenServiceNonAnonymousMode = 0;
- ret = rend_service_list_verify_single_onion_poison(services, mock_options);
+ ret = rend_service_verify_single_onion_poison(service_1, mock_options);
tt_assert(ret < 0);
+ ret = rend_service_verify_single_onion_poison(service_2, mock_options);
+ tt_assert(ret == 0);
/* But they are allowed if we're in non-anonymous mode. */
mock_options->HiddenServiceSingleHopMode = 1;
mock_options->HiddenServiceNonAnonymousMode = 1;
- ret = rend_service_list_verify_single_onion_poison(services, mock_options);
+ ret = rend_service_verify_single_onion_poison(service_1, mock_options);
+ tt_assert(ret == 0);
+ ret = rend_service_verify_single_onion_poison(service_2, mock_options);
tt_assert(ret == 0);
/* Re-poisoning directories with existing keys is a no-op, because
* directories with existing keys are ignored. */
mock_options->HiddenServiceSingleHopMode = 1;
mock_options->HiddenServiceNonAnonymousMode = 1;
- ret = rend_service_poison_new_single_onion_dirs(services);
+ ret = rend_service_poison_new_single_onion_dir(service_1, mock_options);
tt_assert(ret == 0);
/* And it keeps the poison. */
- ret = rend_service_list_verify_single_onion_poison(services, mock_options);
+ ret = rend_service_verify_single_onion_poison(service_1, mock_options);
+ tt_assert(ret == 0);
+ ret = rend_service_verify_single_onion_poison(service_2, mock_options);
tt_assert(ret == 0);
/* Now add the second service: it has no key and no poison file */
- smartlist_add(services, service_2);
+ ret = rend_service_check_dir_and_add(services, mock_options, service_2, 0);
+ tt_assert(ret == 0);
/* A new service, and an existing poisoned service. Not ok. */
mock_options->HiddenServiceSingleHopMode = 0;
mock_options->HiddenServiceNonAnonymousMode = 0;
- ret = rend_service_list_verify_single_onion_poison(services, mock_options);
+ ret = rend_service_verify_single_onion_poison(service_1, mock_options);
tt_assert(ret < 0);
+ ret = rend_service_verify_single_onion_poison(service_2, mock_options);
+ tt_assert(ret == 0);
/* But ok to add in non-anonymous mode. */
mock_options->HiddenServiceSingleHopMode = 1;
mock_options->HiddenServiceNonAnonymousMode = 1;
- ret = rend_service_list_verify_single_onion_poison(services, mock_options);
+ ret = rend_service_verify_single_onion_poison(service_1, mock_options);
+ tt_assert(ret == 0);
+ ret = rend_service_verify_single_onion_poison(service_2, mock_options);
tt_assert(ret == 0);
/* Now remove the poisoning from the first service, and we have the opposite
* problem. */
- char *poison_path = rend_service_sos_poison_path(service_1);
+ poison_path = rend_service_sos_poison_path(service_1);
+ tt_assert(poison_path);
ret = unlink(poison_path);
- tor_free(poison_path);
tt_assert(ret == 0);
/* Unpoisoned service directories with previous keys are ok, as are empty
* directories. */
mock_options->HiddenServiceSingleHopMode = 0;
mock_options->HiddenServiceNonAnonymousMode = 0;
- ret = rend_service_list_verify_single_onion_poison(services, mock_options);
+ ret = rend_service_verify_single_onion_poison(service_1, mock_options);
+ tt_assert(ret == 0);
+ ret = rend_service_verify_single_onion_poison(service_2, mock_options);
tt_assert(ret == 0);
/* But the existing unpoisoned key is not ok in non-anonymous mode, even if
* there is an empty service. */
mock_options->HiddenServiceSingleHopMode = 1;
mock_options->HiddenServiceNonAnonymousMode = 1;
- ret = rend_service_list_verify_single_onion_poison(services, mock_options);
+ ret = rend_service_verify_single_onion_poison(service_1, mock_options);
tt_assert(ret < 0);
+ ret = rend_service_verify_single_onion_poison(service_2, mock_options);
+ tt_assert(ret == 0);
/* Poisoning directories with existing keys is a no-op, because directories
* with existing keys are ignored. But the new directory should poison. */
mock_options->HiddenServiceSingleHopMode = 1;
mock_options->HiddenServiceNonAnonymousMode = 1;
- ret = rend_service_poison_new_single_onion_dirs(services);
+ ret = rend_service_poison_new_single_onion_dir(service_1, mock_options);
+ tt_assert(ret == 0);
+ ret = rend_service_poison_new_single_onion_dir(service_2, mock_options);
tt_assert(ret == 0);
/* And the old directory remains unpoisoned. */
- ret = rend_service_list_verify_single_onion_poison(services, mock_options);
+ ret = rend_service_verify_single_onion_poison(service_1, mock_options);
tt_assert(ret < 0);
+ ret = rend_service_verify_single_onion_poison(service_2, mock_options);
+ tt_assert(ret == 0);
/* And the new directory should be ignored, because it has no key. */
mock_options->HiddenServiceSingleHopMode = 0;
mock_options->HiddenServiceNonAnonymousMode = 0;
- ret = rend_service_list_verify_single_onion_poison(services, mock_options);
+ ret = rend_service_verify_single_onion_poison(service_1, mock_options);
+ tt_assert(ret == 0);
+ ret = rend_service_verify_single_onion_poison(service_2, mock_options);
tt_assert(ret == 0);
/* Re-poisoning directories without existing keys is a no-op. */
mock_options->HiddenServiceSingleHopMode = 1;
mock_options->HiddenServiceNonAnonymousMode = 1;
- ret = rend_service_poison_new_single_onion_dirs(services);
+ ret = rend_service_poison_new_single_onion_dir(service_1, mock_options);
+ tt_assert(ret == 0);
+ ret = rend_service_poison_new_single_onion_dir(service_2, mock_options);
tt_assert(ret == 0);
/* And the old directory remains unpoisoned. */
- ret = rend_service_list_verify_single_onion_poison(services, mock_options);
+ ret = rend_service_verify_single_onion_poison(service_1, mock_options);
tt_assert(ret < 0);
+ ret = rend_service_verify_single_onion_poison(service_2, mock_options);
+ tt_assert(ret == 0);
done:
/* The test harness deletes the directories at exit */
+ tor_free(poison_path);
+ tor_free(dir1);
+ tor_free(dir2);
+ smartlist_free(services);
rend_service_free(service_1);
rend_service_free(service_2);
- smartlist_free(services);
UNMOCK(get_options);
tor_free(mock_options->DataDirectory);
- tor_free(dir1);
- tor_free(dir2);
}
struct testcase_t hs_tests[] = {
diff --git a/src/test/test_hs_descriptor.c b/src/test/test_hs_descriptor.c
index 8af5cabca3..3f588dfcaf 100644
--- a/src/test/test_hs_descriptor.c
+++ b/src/test/test_hs_descriptor.c
@@ -130,6 +130,7 @@ static void
helper_compare_hs_desc(const hs_descriptor_t *desc1,
const hs_descriptor_t *desc2)
{
+ char *addr1 = NULL, *addr2 = NULL;
/* Plaintext data section. */
tt_int_op(desc1->plaintext_data.version, OP_EQ,
desc2->plaintext_data.version);
@@ -204,8 +205,8 @@ helper_compare_hs_desc(const hs_descriptor_t *desc1,
case LS_IPV4:
case LS_IPV6:
{
- char *addr1 = tor_addr_to_str_dup(&ls1->u.ap.addr),
- *addr2 = tor_addr_to_str_dup(&ls2->u.ap.addr);
+ addr1 = tor_addr_to_str_dup(&ls1->u.ap.addr);
+ addr2 = tor_addr_to_str_dup(&ls2->u.ap.addr);
tt_str_op(addr1, OP_EQ, addr2);
tor_free(addr1);
tor_free(addr2);
@@ -225,7 +226,8 @@ helper_compare_hs_desc(const hs_descriptor_t *desc1,
}
done:
- ;
+ tor_free(addr1);
+ tor_free(addr2);
}
/* Test certificate encoding put in a descriptor. */
@@ -254,7 +256,7 @@ test_cert_encoding(void *arg)
tt_assert(cert);
/* Test the certificate encoding function. */
- ret = encode_cert(cert, &encoded);
+ ret = tor_cert_encode_ed22519(cert, &encoded);
tt_int_op(ret, ==, 0);
/* Validated the certificate string. */
diff --git a/src/test/test_link_handshake.c b/src/test/test_link_handshake.c
index 9899e54231..421f3aaedf 100644
--- a/src/test/test_link_handshake.c
+++ b/src/test/test_link_handshake.c
@@ -117,6 +117,9 @@ test_link_handshake_certs_ok(void *arg)
crypto_pk_t *key1 = NULL, *key2 = NULL;
const int with_ed = !strcmp((const char *)arg, "Ed25519");
+ tor_addr_from_ipv4h(&c1->base_.addr, 0x7f000001);
+ tor_addr_from_ipv4h(&c2->base_.addr, 0x7f000001);
+
scheduler_init();
MOCK(tor_tls_cert_matches_key, mock_tls_cert_matches_key);
@@ -323,7 +326,7 @@ recv_certs_cleanup(const struct testcase_t *test, void *obj)
if (d) {
tor_free(d->cell);
certs_cell_free(d->ccell);
- connection_or_remove_from_identity_map(d->c);
+ connection_or_clear_identity(d->c);
connection_free_(TO_CONN(d->c));
circuitmux_free(d->chan->base_.cmux);
tor_free(d->chan);
@@ -354,6 +357,7 @@ recv_certs_setup(const struct testcase_t *test)
d->chan = tor_malloc_zero(sizeof(*d->chan));
d->c->chan = d->chan;
d->c->base_.address = tor_strdup("HaveAnAddress");
+ tor_addr_from_ipv4h(&d->c->base_.addr, 0x801f0127);
d->c->base_.state = OR_CONN_STATE_OR_HANDSHAKING_V3;
d->chan->conn = d->c;
tt_int_op(connection_init_or_handshake_state(d->c, 1), ==, 0);
@@ -1133,8 +1137,8 @@ authenticate_data_cleanup(const struct testcase_t *test, void *arg)
authenticate_data_t *d = arg;
if (d) {
tor_free(d->cell);
- connection_or_remove_from_identity_map(d->c1);
- connection_or_remove_from_identity_map(d->c2);
+ connection_or_clear_identity(d->c1);
+ connection_or_clear_identity(d->c2);
connection_free_(TO_CONN(d->c1));
connection_free_(TO_CONN(d->c2));
circuitmux_free(d->chan2->base_.cmux);
diff --git a/src/test/test_oom.c b/src/test/test_oom.c
index 6102af01f5..0f97972032 100644
--- a/src/test/test_oom.c
+++ b/src/test/test_oom.c
@@ -15,6 +15,7 @@
#include "config.h"
#include "relay.h"
#include "test.h"
+#include "test_helpers.h"
/* small replacement mock for circuit_mark_for_close_ to avoid doing all
* the other bookkeeping that comes with marking circuits. */
@@ -58,24 +59,6 @@ dummy_or_circuit_new(int n_p_cells, int n_n_cells)
return TO_CIRCUIT(circ);
}
-static circuit_t *
-dummy_origin_circuit_new(int n_cells)
-{
- origin_circuit_t *circ = origin_circuit_new();
- int i;
- cell_t cell;
-
- for (i=0; i < n_cells; ++i) {
- crypto_rand((void*)&cell, sizeof(cell));
- cell_queue_append_packed_copy(TO_CIRCUIT(circ),
- &TO_CIRCUIT(circ)->n_chan_cells,
- 1, &cell, 1, 0);
- }
-
- TO_CIRCUIT(circ)->purpose = CIRCUIT_PURPOSE_C_GENERAL;
- return TO_CIRCUIT(circ);
-}
-
static void
add_bytes_to_buf(buf_t *buf, size_t n_bytes)
{
diff --git a/src/test/test_options.c b/src/test/test_options.c
index 0eada98cb2..e85e11805b 100644
--- a/src/test/test_options.c
+++ b/src/test/test_options.c
@@ -1050,7 +1050,7 @@ test_options_validate__transproxy(void *ignored)
tt_int_op(ret, OP_EQ, -1);
#ifndef KERNEL_MAY_SUPPORT_IPFW
- tt_str_op(msg, OP_EQ, "ipfw is a FreeBSD-specificand OS X/Darwin-specific "
+ tt_str_op(msg, OP_EQ, "ipfw is a FreeBSD-specific and OS X/Darwin-specific "
"feature.");
#else
tt_int_op(tdata->opt->TransProxyType_parsed, OP_EQ, TPT_IPFW);
@@ -1071,26 +1071,38 @@ test_options_validate__transproxy(void *ignored)
free_options_test_data(tdata);
tdata = NULL;
-#if defined(linux)
+#if defined(__linux__)
tdata = get_options_test_data("TransProxyType tproxy\n"
"TransPort 127.0.0.1:123\n");
ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
tt_int_op(ret, OP_EQ, -1);
- tt_assert(!msg);
-#endif
-#if defined(__FreeBSD_kernel__) || defined( DARWIN ) || defined(__NetBSD__)
+ if (msg) {
+ TT_DIE(("Expected NULL but got '%s'", msg));
+ }
+#elif defined(KERNEL_MAY_SUPPORT_IPFW)
tdata = get_options_test_data("TransProxyType ipfw\n"
"TransPort 127.0.0.1:123\n");
ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
tt_int_op(ret, OP_EQ, -1);
- tt_assert(!msg);
-#endif
-#if defined(__OpenBSD__)
+ if (msg) {
+ TT_DIE(("Expected NULL but got '%s'", msg));
+ }
+#elif defined(__OpenBSD__)
tdata = get_options_test_data("TransProxyType pf-divert\n"
"TransPort 127.0.0.1:123\n");
ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
tt_int_op(ret, OP_EQ, -1);
- tt_assert(!msg);
+ if (msg) {
+ TT_DIE(("Expected NULL but got '%s'", msg));
+ }
+#elif defined(__NetBSD__)
+ tdata = get_options_test_data("TransProxyType default\n"
+ "TransPort 127.0.0.1:123\n");
+ ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
+ tt_int_op(ret, OP_EQ, -1);
+ if (msg) {
+ TT_DIE(("Expected NULL but got '%s'", msg));
+ }
#endif
// Assert that a test has run for some TransProxyType
diff --git a/src/test/test_util.c b/src/test/test_util.c
index b74f658146..7e5a44cb59 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -5531,9 +5531,9 @@ test_util_monotonic_time(void *arg)
tt_u64_op(msecc1, OP_GE, nsecc1 / 1000000);
tt_u64_op(usecc1, OP_GE, nsecc1 / 1000);
tt_u64_op(msec1, OP_LE, nsec1 / 1000000 + 1);
- tt_u64_op(usec1, OP_LE, nsec1 / 1000 +10);
+ tt_u64_op(usec1, OP_LE, nsec1 / 1000 + 1000);
tt_u64_op(msecc1, OP_LE, nsecc1 / 1000000 + 1);
- tt_u64_op(usecc1, OP_LE, nsecc1 / 1000 + 10);
+ tt_u64_op(usecc1, OP_LE, nsecc1 / 1000 + 1000);
done:
;
diff --git a/src/trunnel/ed25519_cert.c b/src/trunnel/ed25519_cert.c
index dd5088b231..ee02fda646 100644
--- a/src/trunnel/ed25519_cert.c
+++ b/src/trunnel/ed25519_cert.c
@@ -1,4 +1,4 @@
-/* ed25519_cert.c -- generated by Trunnel v1.5.
+/* ed25519_cert.c -- generated by Trunnel v1.5.1.
* https://gitweb.torproject.org/trunnel.git
* You probably shouldn't edit this file.
*/
@@ -28,6 +28,281 @@ int edcert_deadcode_dummy__ = 0;
} \
} while (0)
+create2_cell_body_t *
+create2_cell_body_new(void)
+{
+ create2_cell_body_t *val = trunnel_calloc(1, sizeof(create2_cell_body_t));
+ if (NULL == val)
+ return NULL;
+ return val;
+}
+
+/** Release all storage held inside 'obj', but do not free 'obj'.
+ */
+static void
+create2_cell_body_clear(create2_cell_body_t *obj)
+{
+ (void) obj;
+ TRUNNEL_DYNARRAY_WIPE(&obj->handshake_data);
+ TRUNNEL_DYNARRAY_CLEAR(&obj->handshake_data);
+}
+
+void
+create2_cell_body_free(create2_cell_body_t *obj)
+{
+ if (obj == NULL)
+ return;
+ create2_cell_body_clear(obj);
+ trunnel_memwipe(obj, sizeof(create2_cell_body_t));
+ trunnel_free_(obj);
+}
+
+uint16_t
+create2_cell_body_get_handshake_type(const create2_cell_body_t *inp)
+{
+ return inp->handshake_type;
+}
+int
+create2_cell_body_set_handshake_type(create2_cell_body_t *inp, uint16_t val)
+{
+ inp->handshake_type = val;
+ return 0;
+}
+uint16_t
+create2_cell_body_get_handshake_len(const create2_cell_body_t *inp)
+{
+ return inp->handshake_len;
+}
+int
+create2_cell_body_set_handshake_len(create2_cell_body_t *inp, uint16_t val)
+{
+ inp->handshake_len = val;
+ return 0;
+}
+size_t
+create2_cell_body_getlen_handshake_data(const create2_cell_body_t *inp)
+{
+ return TRUNNEL_DYNARRAY_LEN(&inp->handshake_data);
+}
+
+uint8_t
+create2_cell_body_get_handshake_data(create2_cell_body_t *inp, size_t idx)
+{
+ return TRUNNEL_DYNARRAY_GET(&inp->handshake_data, idx);
+}
+
+uint8_t
+create2_cell_body_getconst_handshake_data(const create2_cell_body_t *inp, size_t idx)
+{
+ return create2_cell_body_get_handshake_data((create2_cell_body_t*)inp, idx);
+}
+int
+create2_cell_body_set_handshake_data(create2_cell_body_t *inp, size_t idx, uint8_t elt)
+{
+ TRUNNEL_DYNARRAY_SET(&inp->handshake_data, idx, elt);
+ return 0;
+}
+int
+create2_cell_body_add_handshake_data(create2_cell_body_t *inp, uint8_t elt)
+{
+#if SIZE_MAX >= UINT16_MAX
+ if (inp->handshake_data.n_ == UINT16_MAX)
+ goto trunnel_alloc_failed;
+#endif
+ TRUNNEL_DYNARRAY_ADD(uint8_t, &inp->handshake_data, elt, {});
+ return 0;
+ trunnel_alloc_failed:
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+}
+
+uint8_t *
+create2_cell_body_getarray_handshake_data(create2_cell_body_t *inp)
+{
+ return inp->handshake_data.elts_;
+}
+const uint8_t *
+create2_cell_body_getconstarray_handshake_data(const create2_cell_body_t *inp)
+{
+ return (const uint8_t *)create2_cell_body_getarray_handshake_data((create2_cell_body_t*)inp);
+}
+int
+create2_cell_body_setlen_handshake_data(create2_cell_body_t *inp, size_t newlen)
+{
+ uint8_t *newptr;
+#if UINT16_MAX < SIZE_MAX
+ if (newlen > UINT16_MAX)
+ goto trunnel_alloc_failed;
+#endif
+ newptr = trunnel_dynarray_setlen(&inp->handshake_data.allocated_,
+ &inp->handshake_data.n_, inp->handshake_data.elts_, newlen,
+ sizeof(inp->handshake_data.elts_[0]), (trunnel_free_fn_t) NULL,
+ &inp->trunnel_error_code_);
+ if (newlen != 0 && newptr == NULL)
+ goto trunnel_alloc_failed;
+ inp->handshake_data.elts_ = newptr;
+ return 0;
+ trunnel_alloc_failed:
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+}
+const char *
+create2_cell_body_check(const create2_cell_body_t *obj)
+{
+ if (obj == NULL)
+ return "Object was NULL";
+ if (obj->trunnel_error_code_)
+ return "A set function failed on this object";
+ if (TRUNNEL_DYNARRAY_LEN(&obj->handshake_data) != obj->handshake_len)
+ return "Length mismatch for handshake_data";
+ return NULL;
+}
+
+ssize_t
+create2_cell_body_encoded_len(const create2_cell_body_t *obj)
+{
+ ssize_t result = 0;
+
+ if (NULL != create2_cell_body_check(obj))
+ return -1;
+
+
+ /* Length of u16 handshake_type */
+ result += 2;
+
+ /* Length of u16 handshake_len */
+ result += 2;
+
+ /* Length of u8 handshake_data[handshake_len] */
+ result += TRUNNEL_DYNARRAY_LEN(&obj->handshake_data);
+ return result;
+}
+int
+create2_cell_body_clear_errors(create2_cell_body_t *obj)
+{
+ int r = obj->trunnel_error_code_;
+ obj->trunnel_error_code_ = 0;
+ return r;
+}
+ssize_t
+create2_cell_body_encode(uint8_t *output, const size_t avail, const create2_cell_body_t *obj)
+{
+ ssize_t result = 0;
+ size_t written = 0;
+ uint8_t *ptr = output;
+ const char *msg;
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ const ssize_t encoded_len = create2_cell_body_encoded_len(obj);
+#endif
+
+ if (NULL != (msg = create2_cell_body_check(obj)))
+ goto check_failed;
+
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ trunnel_assert(encoded_len >= 0);
+#endif
+
+ /* Encode u16 handshake_type */
+ trunnel_assert(written <= avail);
+ if (avail - written < 2)
+ goto truncated;
+ trunnel_set_uint16(ptr, trunnel_htons(obj->handshake_type));
+ written += 2; ptr += 2;
+
+ /* Encode u16 handshake_len */
+ trunnel_assert(written <= avail);
+ if (avail - written < 2)
+ goto truncated;
+ trunnel_set_uint16(ptr, trunnel_htons(obj->handshake_len));
+ written += 2; ptr += 2;
+
+ /* Encode u8 handshake_data[handshake_len] */
+ {
+ size_t elt_len = TRUNNEL_DYNARRAY_LEN(&obj->handshake_data);
+ trunnel_assert(obj->handshake_len == elt_len);
+ trunnel_assert(written <= avail);
+ if (avail - written < elt_len)
+ goto truncated;
+ if (elt_len)
+ memcpy(ptr, obj->handshake_data.elts_, elt_len);
+ written += elt_len; ptr += elt_len;
+ }
+
+
+ trunnel_assert(ptr == output + written);
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ {
+ trunnel_assert(encoded_len >= 0);
+ trunnel_assert((size_t)encoded_len == written);
+ }
+
+#endif
+
+ return written;
+
+ truncated:
+ result = -2;
+ goto fail;
+ check_failed:
+ (void)msg;
+ result = -1;
+ goto fail;
+ fail:
+ trunnel_assert(result < 0);
+ return result;
+}
+
+/** As create2_cell_body_parse(), but do not allocate the output
+ * object.
+ */
+static ssize_t
+create2_cell_body_parse_into(create2_cell_body_t *obj, const uint8_t *input, const size_t len_in)
+{
+ const uint8_t *ptr = input;
+ size_t remaining = len_in;
+ ssize_t result = 0;
+ (void)result;
+
+ /* Parse u16 handshake_type */
+ CHECK_REMAINING(2, truncated);
+ obj->handshake_type = trunnel_ntohs(trunnel_get_uint16(ptr));
+ remaining -= 2; ptr += 2;
+
+ /* Parse u16 handshake_len */
+ CHECK_REMAINING(2, truncated);
+ obj->handshake_len = trunnel_ntohs(trunnel_get_uint16(ptr));
+ remaining -= 2; ptr += 2;
+
+ /* Parse u8 handshake_data[handshake_len] */
+ CHECK_REMAINING(obj->handshake_len, truncated);
+ TRUNNEL_DYNARRAY_EXPAND(uint8_t, &obj->handshake_data, obj->handshake_len, {});
+ obj->handshake_data.n_ = obj->handshake_len;
+ if (obj->handshake_len)
+ memcpy(obj->handshake_data.elts_, ptr, obj->handshake_len);
+ ptr += obj->handshake_len; remaining -= obj->handshake_len;
+ trunnel_assert(ptr + remaining == input + len_in);
+ return len_in - remaining;
+
+ truncated:
+ return -2;
+ trunnel_alloc_failed:
+ return -1;
+}
+
+ssize_t
+create2_cell_body_parse(create2_cell_body_t **output, const uint8_t *input, const size_t len_in)
+{
+ ssize_t result;
+ *output = create2_cell_body_new();
+ if (NULL == *output)
+ return -1;
+ result = create2_cell_body_parse_into(*output, input, len_in);
+ if (result < 0) {
+ create2_cell_body_free(*output);
+ *output = NULL;
+ }
+ return result;
+}
ed25519_cert_extension_t *
ed25519_cert_extension_new(void)
{
@@ -58,7 +333,7 @@ ed25519_cert_extension_free(ed25519_cert_extension_t *obj)
}
uint16_t
-ed25519_cert_extension_get_ext_length(ed25519_cert_extension_t *inp)
+ed25519_cert_extension_get_ext_length(const ed25519_cert_extension_t *inp)
{
return inp->ext_length;
}
@@ -69,7 +344,7 @@ ed25519_cert_extension_set_ext_length(ed25519_cert_extension_t *inp, uint16_t va
return 0;
}
uint8_t
-ed25519_cert_extension_get_ext_type(ed25519_cert_extension_t *inp)
+ed25519_cert_extension_get_ext_type(const ed25519_cert_extension_t *inp)
{
return inp->ext_type;
}
@@ -80,7 +355,7 @@ ed25519_cert_extension_set_ext_type(ed25519_cert_extension_t *inp, uint8_t val)
return 0;
}
uint8_t
-ed25519_cert_extension_get_ext_flags(ed25519_cert_extension_t *inp)
+ed25519_cert_extension_get_ext_flags(const ed25519_cert_extension_t *inp)
{
return inp->ext_flags;
}
@@ -430,6 +705,287 @@ ed25519_cert_extension_parse(ed25519_cert_extension_t **output, const uint8_t *i
}
return result;
}
+extend1_cell_body_t *
+extend1_cell_body_new(void)
+{
+ extend1_cell_body_t *val = trunnel_calloc(1, sizeof(extend1_cell_body_t));
+ if (NULL == val)
+ return NULL;
+ return val;
+}
+
+/** Release all storage held inside 'obj', but do not free 'obj'.
+ */
+static void
+extend1_cell_body_clear(extend1_cell_body_t *obj)
+{
+ (void) obj;
+}
+
+void
+extend1_cell_body_free(extend1_cell_body_t *obj)
+{
+ if (obj == NULL)
+ return;
+ extend1_cell_body_clear(obj);
+ trunnel_memwipe(obj, sizeof(extend1_cell_body_t));
+ trunnel_free_(obj);
+}
+
+uint32_t
+extend1_cell_body_get_ipv4addr(const extend1_cell_body_t *inp)
+{
+ return inp->ipv4addr;
+}
+int
+extend1_cell_body_set_ipv4addr(extend1_cell_body_t *inp, uint32_t val)
+{
+ inp->ipv4addr = val;
+ return 0;
+}
+uint16_t
+extend1_cell_body_get_port(const extend1_cell_body_t *inp)
+{
+ return inp->port;
+}
+int
+extend1_cell_body_set_port(extend1_cell_body_t *inp, uint16_t val)
+{
+ inp->port = val;
+ return 0;
+}
+size_t
+extend1_cell_body_getlen_onionskin(const extend1_cell_body_t *inp)
+{
+ (void)inp; return 186;
+}
+
+uint8_t
+extend1_cell_body_get_onionskin(extend1_cell_body_t *inp, size_t idx)
+{
+ trunnel_assert(idx < 186);
+ return inp->onionskin[idx];
+}
+
+uint8_t
+extend1_cell_body_getconst_onionskin(const extend1_cell_body_t *inp, size_t idx)
+{
+ return extend1_cell_body_get_onionskin((extend1_cell_body_t*)inp, idx);
+}
+int
+extend1_cell_body_set_onionskin(extend1_cell_body_t *inp, size_t idx, uint8_t elt)
+{
+ trunnel_assert(idx < 186);
+ inp->onionskin[idx] = elt;
+ return 0;
+}
+
+uint8_t *
+extend1_cell_body_getarray_onionskin(extend1_cell_body_t *inp)
+{
+ return inp->onionskin;
+}
+const uint8_t *
+extend1_cell_body_getconstarray_onionskin(const extend1_cell_body_t *inp)
+{
+ return (const uint8_t *)extend1_cell_body_getarray_onionskin((extend1_cell_body_t*)inp);
+}
+size_t
+extend1_cell_body_getlen_identity(const extend1_cell_body_t *inp)
+{
+ (void)inp; return 20;
+}
+
+uint8_t
+extend1_cell_body_get_identity(extend1_cell_body_t *inp, size_t idx)
+{
+ trunnel_assert(idx < 20);
+ return inp->identity[idx];
+}
+
+uint8_t
+extend1_cell_body_getconst_identity(const extend1_cell_body_t *inp, size_t idx)
+{
+ return extend1_cell_body_get_identity((extend1_cell_body_t*)inp, idx);
+}
+int
+extend1_cell_body_set_identity(extend1_cell_body_t *inp, size_t idx, uint8_t elt)
+{
+ trunnel_assert(idx < 20);
+ inp->identity[idx] = elt;
+ return 0;
+}
+
+uint8_t *
+extend1_cell_body_getarray_identity(extend1_cell_body_t *inp)
+{
+ return inp->identity;
+}
+const uint8_t *
+extend1_cell_body_getconstarray_identity(const extend1_cell_body_t *inp)
+{
+ return (const uint8_t *)extend1_cell_body_getarray_identity((extend1_cell_body_t*)inp);
+}
+const char *
+extend1_cell_body_check(const extend1_cell_body_t *obj)
+{
+ if (obj == NULL)
+ return "Object was NULL";
+ if (obj->trunnel_error_code_)
+ return "A set function failed on this object";
+ return NULL;
+}
+
+ssize_t
+extend1_cell_body_encoded_len(const extend1_cell_body_t *obj)
+{
+ ssize_t result = 0;
+
+ if (NULL != extend1_cell_body_check(obj))
+ return -1;
+
+
+ /* Length of u32 ipv4addr */
+ result += 4;
+
+ /* Length of u16 port */
+ result += 2;
+
+ /* Length of u8 onionskin[186] */
+ result += 186;
+
+ /* Length of u8 identity[20] */
+ result += 20;
+ return result;
+}
+int
+extend1_cell_body_clear_errors(extend1_cell_body_t *obj)
+{
+ int r = obj->trunnel_error_code_;
+ obj->trunnel_error_code_ = 0;
+ return r;
+}
+ssize_t
+extend1_cell_body_encode(uint8_t *output, const size_t avail, const extend1_cell_body_t *obj)
+{
+ ssize_t result = 0;
+ size_t written = 0;
+ uint8_t *ptr = output;
+ const char *msg;
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ const ssize_t encoded_len = extend1_cell_body_encoded_len(obj);
+#endif
+
+ if (NULL != (msg = extend1_cell_body_check(obj)))
+ goto check_failed;
+
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ trunnel_assert(encoded_len >= 0);
+#endif
+
+ /* Encode u32 ipv4addr */
+ trunnel_assert(written <= avail);
+ if (avail - written < 4)
+ goto truncated;
+ trunnel_set_uint32(ptr, trunnel_htonl(obj->ipv4addr));
+ written += 4; ptr += 4;
+
+ /* Encode u16 port */
+ trunnel_assert(written <= avail);
+ if (avail - written < 2)
+ goto truncated;
+ trunnel_set_uint16(ptr, trunnel_htons(obj->port));
+ written += 2; ptr += 2;
+
+ /* Encode u8 onionskin[186] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 186)
+ goto truncated;
+ memcpy(ptr, obj->onionskin, 186);
+ written += 186; ptr += 186;
+
+ /* Encode u8 identity[20] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 20)
+ goto truncated;
+ memcpy(ptr, obj->identity, 20);
+ written += 20; ptr += 20;
+
+
+ trunnel_assert(ptr == output + written);
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ {
+ trunnel_assert(encoded_len >= 0);
+ trunnel_assert((size_t)encoded_len == written);
+ }
+
+#endif
+
+ return written;
+
+ truncated:
+ result = -2;
+ goto fail;
+ check_failed:
+ (void)msg;
+ result = -1;
+ goto fail;
+ fail:
+ trunnel_assert(result < 0);
+ return result;
+}
+
+/** As extend1_cell_body_parse(), but do not allocate the output
+ * object.
+ */
+static ssize_t
+extend1_cell_body_parse_into(extend1_cell_body_t *obj, const uint8_t *input, const size_t len_in)
+{
+ const uint8_t *ptr = input;
+ size_t remaining = len_in;
+ ssize_t result = 0;
+ (void)result;
+
+ /* Parse u32 ipv4addr */
+ CHECK_REMAINING(4, truncated);
+ obj->ipv4addr = trunnel_ntohl(trunnel_get_uint32(ptr));
+ remaining -= 4; ptr += 4;
+
+ /* Parse u16 port */
+ CHECK_REMAINING(2, truncated);
+ obj->port = trunnel_ntohs(trunnel_get_uint16(ptr));
+ remaining -= 2; ptr += 2;
+
+ /* Parse u8 onionskin[186] */
+ CHECK_REMAINING(186, truncated);
+ memcpy(obj->onionskin, ptr, 186);
+ remaining -= 186; ptr += 186;
+
+ /* Parse u8 identity[20] */
+ CHECK_REMAINING(20, truncated);
+ memcpy(obj->identity, ptr, 20);
+ remaining -= 20; ptr += 20;
+ trunnel_assert(ptr + remaining == input + len_in);
+ return len_in - remaining;
+
+ truncated:
+ return -2;
+}
+
+ssize_t
+extend1_cell_body_parse(extend1_cell_body_t **output, const uint8_t *input, const size_t len_in)
+{
+ ssize_t result;
+ *output = extend1_cell_body_new();
+ if (NULL == *output)
+ return -1;
+ result = extend1_cell_body_parse_into(*output, input, len_in);
+ if (result < 0) {
+ extend1_cell_body_free(*output);
+ *output = NULL;
+ }
+ return result;
+}
link_specifier_t *
link_specifier_new(void)
{
@@ -460,7 +1016,7 @@ link_specifier_free(link_specifier_t *obj)
}
uint8_t
-link_specifier_get_ls_type(link_specifier_t *inp)
+link_specifier_get_ls_type(const link_specifier_t *inp)
{
return inp->ls_type;
}
@@ -471,7 +1027,7 @@ link_specifier_set_ls_type(link_specifier_t *inp, uint8_t val)
return 0;
}
uint8_t
-link_specifier_get_ls_len(link_specifier_t *inp)
+link_specifier_get_ls_len(const link_specifier_t *inp)
{
return inp->ls_len;
}
@@ -482,7 +1038,7 @@ link_specifier_set_ls_len(link_specifier_t *inp, uint8_t val)
return 0;
}
uint32_t
-link_specifier_get_un_ipv4_addr(link_specifier_t *inp)
+link_specifier_get_un_ipv4_addr(const link_specifier_t *inp)
{
return inp->un_ipv4_addr;
}
@@ -493,7 +1049,7 @@ link_specifier_set_un_ipv4_addr(link_specifier_t *inp, uint32_t val)
return 0;
}
uint16_t
-link_specifier_get_un_ipv4_port(link_specifier_t *inp)
+link_specifier_get_un_ipv4_port(const link_specifier_t *inp)
{
return inp->un_ipv4_port;
}
@@ -540,7 +1096,7 @@ link_specifier_getconstarray_un_ipv6_addr(const link_specifier_t *inp)
return (const uint8_t *)link_specifier_getarray_un_ipv6_addr((link_specifier_t*)inp);
}
uint16_t
-link_specifier_get_un_ipv6_port(link_specifier_t *inp)
+link_specifier_get_un_ipv6_port(const link_specifier_t *inp)
{
return inp->un_ipv6_port;
}
@@ -1059,7 +1615,7 @@ ed25519_cert_free(ed25519_cert_t *obj)
}
uint8_t
-ed25519_cert_get_version(ed25519_cert_t *inp)
+ed25519_cert_get_version(const ed25519_cert_t *inp)
{
return inp->version;
}
@@ -1074,7 +1630,7 @@ ed25519_cert_set_version(ed25519_cert_t *inp, uint8_t val)
return 0;
}
uint8_t
-ed25519_cert_get_cert_type(ed25519_cert_t *inp)
+ed25519_cert_get_cert_type(const ed25519_cert_t *inp)
{
return inp->cert_type;
}
@@ -1085,7 +1641,7 @@ ed25519_cert_set_cert_type(ed25519_cert_t *inp, uint8_t val)
return 0;
}
uint32_t
-ed25519_cert_get_exp_field(ed25519_cert_t *inp)
+ed25519_cert_get_exp_field(const ed25519_cert_t *inp)
{
return inp->exp_field;
}
@@ -1096,7 +1652,7 @@ ed25519_cert_set_exp_field(ed25519_cert_t *inp, uint32_t val)
return 0;
}
uint8_t
-ed25519_cert_get_cert_key_type(ed25519_cert_t *inp)
+ed25519_cert_get_cert_key_type(const ed25519_cert_t *inp)
{
return inp->cert_key_type;
}
@@ -1143,7 +1699,7 @@ ed25519_cert_getconstarray_certified_key(const ed25519_cert_t *inp)
return (const uint8_t *)ed25519_cert_getarray_certified_key((ed25519_cert_t*)inp);
}
uint8_t
-ed25519_cert_get_n_extensions(ed25519_cert_t *inp)
+ed25519_cert_get_n_extensions(const ed25519_cert_t *inp)
{
return inp->n_extensions;
}
@@ -1528,6 +2084,343 @@ ed25519_cert_parse(ed25519_cert_t **output, const uint8_t *input, const size_t l
}
return result;
}
+extend2_cell_body_t *
+extend2_cell_body_new(void)
+{
+ extend2_cell_body_t *val = trunnel_calloc(1, sizeof(extend2_cell_body_t));
+ if (NULL == val)
+ return NULL;
+ return val;
+}
+
+/** Release all storage held inside 'obj', but do not free 'obj'.
+ */
+static void
+extend2_cell_body_clear(extend2_cell_body_t *obj)
+{
+ (void) obj;
+ {
+
+ unsigned idx;
+ for (idx = 0; idx < TRUNNEL_DYNARRAY_LEN(&obj->ls); ++idx) {
+ link_specifier_free(TRUNNEL_DYNARRAY_GET(&obj->ls, idx));
+ }
+ }
+ TRUNNEL_DYNARRAY_WIPE(&obj->ls);
+ TRUNNEL_DYNARRAY_CLEAR(&obj->ls);
+ create2_cell_body_free(obj->create2);
+ obj->create2 = NULL;
+}
+
+void
+extend2_cell_body_free(extend2_cell_body_t *obj)
+{
+ if (obj == NULL)
+ return;
+ extend2_cell_body_clear(obj);
+ trunnel_memwipe(obj, sizeof(extend2_cell_body_t));
+ trunnel_free_(obj);
+}
+
+uint8_t
+extend2_cell_body_get_n_spec(const extend2_cell_body_t *inp)
+{
+ return inp->n_spec;
+}
+int
+extend2_cell_body_set_n_spec(extend2_cell_body_t *inp, uint8_t val)
+{
+ inp->n_spec = val;
+ return 0;
+}
+size_t
+extend2_cell_body_getlen_ls(const extend2_cell_body_t *inp)
+{
+ return TRUNNEL_DYNARRAY_LEN(&inp->ls);
+}
+
+struct link_specifier_st *
+extend2_cell_body_get_ls(extend2_cell_body_t *inp, size_t idx)
+{
+ return TRUNNEL_DYNARRAY_GET(&inp->ls, idx);
+}
+
+ const struct link_specifier_st *
+extend2_cell_body_getconst_ls(const extend2_cell_body_t *inp, size_t idx)
+{
+ return extend2_cell_body_get_ls((extend2_cell_body_t*)inp, idx);
+}
+int
+extend2_cell_body_set_ls(extend2_cell_body_t *inp, size_t idx, struct link_specifier_st * elt)
+{
+ link_specifier_t *oldval = TRUNNEL_DYNARRAY_GET(&inp->ls, idx);
+ if (oldval && oldval != elt)
+ link_specifier_free(oldval);
+ return extend2_cell_body_set0_ls(inp, idx, elt);
+}
+int
+extend2_cell_body_set0_ls(extend2_cell_body_t *inp, size_t idx, struct link_specifier_st * elt)
+{
+ TRUNNEL_DYNARRAY_SET(&inp->ls, idx, elt);
+ return 0;
+}
+int
+extend2_cell_body_add_ls(extend2_cell_body_t *inp, struct link_specifier_st * elt)
+{
+#if SIZE_MAX >= UINT8_MAX
+ if (inp->ls.n_ == UINT8_MAX)
+ goto trunnel_alloc_failed;
+#endif
+ TRUNNEL_DYNARRAY_ADD(struct link_specifier_st *, &inp->ls, elt, {});
+ return 0;
+ trunnel_alloc_failed:
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+}
+
+struct link_specifier_st * *
+extend2_cell_body_getarray_ls(extend2_cell_body_t *inp)
+{
+ return inp->ls.elts_;
+}
+const struct link_specifier_st * const *
+extend2_cell_body_getconstarray_ls(const extend2_cell_body_t *inp)
+{
+ return (const struct link_specifier_st * const *)extend2_cell_body_getarray_ls((extend2_cell_body_t*)inp);
+}
+int
+extend2_cell_body_setlen_ls(extend2_cell_body_t *inp, size_t newlen)
+{
+ struct link_specifier_st * *newptr;
+#if UINT8_MAX < SIZE_MAX
+ if (newlen > UINT8_MAX)
+ goto trunnel_alloc_failed;
+#endif
+ newptr = trunnel_dynarray_setlen(&inp->ls.allocated_,
+ &inp->ls.n_, inp->ls.elts_, newlen,
+ sizeof(inp->ls.elts_[0]), (trunnel_free_fn_t) link_specifier_free,
+ &inp->trunnel_error_code_);
+ if (newlen != 0 && newptr == NULL)
+ goto trunnel_alloc_failed;
+ inp->ls.elts_ = newptr;
+ return 0;
+ trunnel_alloc_failed:
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+}
+struct create2_cell_body_st *
+extend2_cell_body_get_create2(extend2_cell_body_t *inp)
+{
+ return inp->create2;
+}
+const struct create2_cell_body_st *
+extend2_cell_body_getconst_create2(const extend2_cell_body_t *inp)
+{
+ return extend2_cell_body_get_create2((extend2_cell_body_t*) inp);
+}
+int
+extend2_cell_body_set_create2(extend2_cell_body_t *inp, struct create2_cell_body_st *val)
+{
+ if (inp->create2 && inp->create2 != val)
+ create2_cell_body_free(inp->create2);
+ return extend2_cell_body_set0_create2(inp, val);
+}
+int
+extend2_cell_body_set0_create2(extend2_cell_body_t *inp, struct create2_cell_body_st *val)
+{
+ inp->create2 = val;
+ return 0;
+}
+const char *
+extend2_cell_body_check(const extend2_cell_body_t *obj)
+{
+ if (obj == NULL)
+ return "Object was NULL";
+ if (obj->trunnel_error_code_)
+ return "A set function failed on this object";
+ {
+ const char *msg;
+
+ unsigned idx;
+ for (idx = 0; idx < TRUNNEL_DYNARRAY_LEN(&obj->ls); ++idx) {
+ if (NULL != (msg = link_specifier_check(TRUNNEL_DYNARRAY_GET(&obj->ls, idx))))
+ return msg;
+ }
+ }
+ if (TRUNNEL_DYNARRAY_LEN(&obj->ls) != obj->n_spec)
+ return "Length mismatch for ls";
+ {
+ const char *msg;
+ if (NULL != (msg = create2_cell_body_check(obj->create2)))
+ return msg;
+ }
+ return NULL;
+}
+
+ssize_t
+extend2_cell_body_encoded_len(const extend2_cell_body_t *obj)
+{
+ ssize_t result = 0;
+
+ if (NULL != extend2_cell_body_check(obj))
+ return -1;
+
+
+ /* Length of u8 n_spec */
+ result += 1;
+
+ /* Length of struct link_specifier ls[n_spec] */
+ {
+
+ unsigned idx;
+ for (idx = 0; idx < TRUNNEL_DYNARRAY_LEN(&obj->ls); ++idx) {
+ result += link_specifier_encoded_len(TRUNNEL_DYNARRAY_GET(&obj->ls, idx));
+ }
+ }
+
+ /* Length of struct create2_cell_body create2 */
+ result += create2_cell_body_encoded_len(obj->create2);
+ return result;
+}
+int
+extend2_cell_body_clear_errors(extend2_cell_body_t *obj)
+{
+ int r = obj->trunnel_error_code_;
+ obj->trunnel_error_code_ = 0;
+ return r;
+}
+ssize_t
+extend2_cell_body_encode(uint8_t *output, const size_t avail, const extend2_cell_body_t *obj)
+{
+ ssize_t result = 0;
+ size_t written = 0;
+ uint8_t *ptr = output;
+ const char *msg;
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ const ssize_t encoded_len = extend2_cell_body_encoded_len(obj);
+#endif
+
+ if (NULL != (msg = extend2_cell_body_check(obj)))
+ goto check_failed;
+
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ trunnel_assert(encoded_len >= 0);
+#endif
+
+ /* Encode u8 n_spec */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->n_spec));
+ written += 1; ptr += 1;
+
+ /* Encode struct link_specifier ls[n_spec] */
+ {
+
+ unsigned idx;
+ for (idx = 0; idx < TRUNNEL_DYNARRAY_LEN(&obj->ls); ++idx) {
+ trunnel_assert(written <= avail);
+ result = link_specifier_encode(ptr, avail - written, TRUNNEL_DYNARRAY_GET(&obj->ls, idx));
+ if (result < 0)
+ goto fail; /* XXXXXXX !*/
+ written += result; ptr += result;
+ }
+ }
+
+ /* Encode struct create2_cell_body create2 */
+ trunnel_assert(written <= avail);
+ result = create2_cell_body_encode(ptr, avail - written, obj->create2);
+ if (result < 0)
+ goto fail; /* XXXXXXX !*/
+ written += result; ptr += result;
+
+
+ trunnel_assert(ptr == output + written);
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ {
+ trunnel_assert(encoded_len >= 0);
+ trunnel_assert((size_t)encoded_len == written);
+ }
+
+#endif
+
+ return written;
+
+ truncated:
+ result = -2;
+ goto fail;
+ check_failed:
+ (void)msg;
+ result = -1;
+ goto fail;
+ fail:
+ trunnel_assert(result < 0);
+ return result;
+}
+
+/** As extend2_cell_body_parse(), but do not allocate the output
+ * object.
+ */
+static ssize_t
+extend2_cell_body_parse_into(extend2_cell_body_t *obj, const uint8_t *input, const size_t len_in)
+{
+ const uint8_t *ptr = input;
+ size_t remaining = len_in;
+ ssize_t result = 0;
+ (void)result;
+
+ /* Parse u8 n_spec */
+ CHECK_REMAINING(1, truncated);
+ obj->n_spec = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+
+ /* Parse struct link_specifier ls[n_spec] */
+ TRUNNEL_DYNARRAY_EXPAND(link_specifier_t *, &obj->ls, obj->n_spec, {});
+ {
+ link_specifier_t * elt;
+ unsigned idx;
+ for (idx = 0; idx < obj->n_spec; ++idx) {
+ result = link_specifier_parse(&elt, ptr, remaining);
+ if (result < 0)
+ goto relay_fail;
+ trunnel_assert((size_t)result <= remaining);
+ remaining -= result; ptr += result;
+ TRUNNEL_DYNARRAY_ADD(link_specifier_t *, &obj->ls, elt, {link_specifier_free(elt);});
+ }
+ }
+
+ /* Parse struct create2_cell_body create2 */
+ result = create2_cell_body_parse(&obj->create2, ptr, remaining);
+ if (result < 0)
+ goto relay_fail;
+ trunnel_assert((size_t)result <= remaining);
+ remaining -= result; ptr += result;
+ trunnel_assert(ptr + remaining == input + len_in);
+ return len_in - remaining;
+
+ truncated:
+ return -2;
+ relay_fail:
+ trunnel_assert(result < 0);
+ return result;
+ trunnel_alloc_failed:
+ return -1;
+}
+
+ssize_t
+extend2_cell_body_parse(extend2_cell_body_t **output, const uint8_t *input, const size_t len_in)
+{
+ ssize_t result;
+ *output = extend2_cell_body_new();
+ if (NULL == *output)
+ return -1;
+ result = extend2_cell_body_parse_into(*output, input, len_in);
+ if (result < 0) {
+ extend2_cell_body_free(*output);
+ *output = NULL;
+ }
+ return result;
+}
link_specifier_list_t *
link_specifier_list_new(void)
{
@@ -1565,7 +2458,7 @@ link_specifier_list_free(link_specifier_list_t *obj)
}
uint8_t
-link_specifier_list_get_n_spec(link_specifier_list_t *inp)
+link_specifier_list_get_n_spec(const link_specifier_list_t *inp)
{
return inp->n_spec;
}
diff --git a/src/trunnel/ed25519_cert.h b/src/trunnel/ed25519_cert.h
index 571e6d1a53..782bd59585 100644
--- a/src/trunnel/ed25519_cert.h
+++ b/src/trunnel/ed25519_cert.h
@@ -1,4 +1,4 @@
-/* ed25519_cert.h -- generated by by Trunnel v1.5.
+/* ed25519_cert.h -- generated by by Trunnel v1.5.1.
* https://gitweb.torproject.org/trunnel.git
* You probably shouldn't edit this file.
*/
@@ -14,6 +14,15 @@
#define LS_IPV6 1
#define LS_LEGACY_ID 2
#define LS_ED25519_ID 3
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_CREATE2_CELL_BODY)
+struct create2_cell_body_st {
+ uint16_t handshake_type;
+ uint16_t handshake_len;
+ TRUNNEL_DYNARRAY_HEAD(, uint8_t) handshake_data;
+ uint8_t trunnel_error_code_;
+};
+#endif
+typedef struct create2_cell_body_st create2_cell_body_t;
#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_ED25519_CERT_EXTENSION)
struct ed25519_cert_extension_st {
uint16_t ext_length;
@@ -25,6 +34,16 @@ struct ed25519_cert_extension_st {
};
#endif
typedef struct ed25519_cert_extension_st ed25519_cert_extension_t;
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_EXTEND1_CELL_BODY)
+struct extend1_cell_body_st {
+ uint32_t ipv4addr;
+ uint16_t port;
+ uint8_t onionskin[186];
+ uint8_t identity[20];
+ uint8_t trunnel_error_code_;
+};
+#endif
+typedef struct extend1_cell_body_st extend1_cell_body_t;
#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_LINK_SPECIFIER)
struct link_specifier_st {
uint8_t ls_type;
@@ -54,6 +73,15 @@ struct ed25519_cert_st {
};
#endif
typedef struct ed25519_cert_st ed25519_cert_t;
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_EXTEND2_CELL_BODY)
+struct extend2_cell_body_st {
+ uint8_t n_spec;
+ TRUNNEL_DYNARRAY_HEAD(, struct link_specifier_st *) ls;
+ struct create2_cell_body_st *create2;
+ uint8_t trunnel_error_code_;
+};
+#endif
+typedef struct extend2_cell_body_st extend2_cell_body_t;
#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_LINK_SPECIFIER_LIST)
struct link_specifier_list_st {
uint8_t n_spec;
@@ -62,6 +90,95 @@ struct link_specifier_list_st {
};
#endif
typedef struct link_specifier_list_st link_specifier_list_t;
+/** Return a newly allocated create2_cell_body with all elements set
+ * to zero.
+ */
+create2_cell_body_t *create2_cell_body_new(void);
+/** Release all storage held by the create2_cell_body in 'victim'. (Do
+ * nothing if 'victim' is NULL.)
+ */
+void create2_cell_body_free(create2_cell_body_t *victim);
+/** Try to parse a create2_cell_body from the buffer in 'input', using
+ * up to 'len_in' bytes from the input buffer. On success, return the
+ * number of bytes consumed and set *output to the newly allocated
+ * create2_cell_body_t. On failure, return -2 if the input appears
+ * truncated, and -1 if the input is otherwise invalid.
+ */
+ssize_t create2_cell_body_parse(create2_cell_body_t **output, const uint8_t *input, const size_t len_in);
+/** Return the number of bytes we expect to need to encode the
+ * create2_cell_body in 'obj'. On failure, return a negative value.
+ * Note that this value may be an overestimate, and can even be an
+ * underestimate for certain unencodeable objects.
+ */
+ssize_t create2_cell_body_encoded_len(const create2_cell_body_t *obj);
+/** Try to encode the create2_cell_body from 'input' into the buffer
+ * at 'output', using up to 'avail' bytes of the output buffer. On
+ * success, return the number of bytes used. On failure, return -2 if
+ * the buffer was not long enough, and -1 if the input was invalid.
+ */
+ssize_t create2_cell_body_encode(uint8_t *output, size_t avail, const create2_cell_body_t *input);
+/** Check whether the internal state of the create2_cell_body in 'obj'
+ * is consistent. Return NULL if it is, and a short message if it is
+ * not.
+ */
+const char *create2_cell_body_check(const create2_cell_body_t *obj);
+/** Clear any errors that were set on the object 'obj' by its setter
+ * functions. Return true iff errors were cleared.
+ */
+int create2_cell_body_clear_errors(create2_cell_body_t *obj);
+/** Return the value of the handshake_type field of the
+ * create2_cell_body_t in 'inp'
+ */
+uint16_t create2_cell_body_get_handshake_type(const create2_cell_body_t *inp);
+/** Set the value of the handshake_type field of the
+ * create2_cell_body_t in 'inp' to 'val'. Return 0 on success; return
+ * -1 and set the error code on 'inp' on failure.
+ */
+int create2_cell_body_set_handshake_type(create2_cell_body_t *inp, uint16_t val);
+/** Return the value of the handshake_len field of the
+ * create2_cell_body_t in 'inp'
+ */
+uint16_t create2_cell_body_get_handshake_len(const create2_cell_body_t *inp);
+/** Set the value of the handshake_len field of the
+ * create2_cell_body_t in 'inp' to 'val'. Return 0 on success; return
+ * -1 and set the error code on 'inp' on failure.
+ */
+int create2_cell_body_set_handshake_len(create2_cell_body_t *inp, uint16_t val);
+/** Return the length of the dynamic array holding the handshake_data
+ * field of the create2_cell_body_t in 'inp'.
+ */
+size_t create2_cell_body_getlen_handshake_data(const create2_cell_body_t *inp);
+/** Return the element at position 'idx' of the dynamic array field
+ * handshake_data of the create2_cell_body_t in 'inp'.
+ */
+uint8_t create2_cell_body_get_handshake_data(create2_cell_body_t *inp, size_t idx);
+/** As create2_cell_body_get_handshake_data, but take and return a
+ * const pointer
+ */
+uint8_t create2_cell_body_getconst_handshake_data(const create2_cell_body_t *inp, size_t idx);
+/** Change the element at position 'idx' of the dynamic array field
+ * handshake_data of the create2_cell_body_t in 'inp', so that it will
+ * hold the value 'elt'.
+ */
+int create2_cell_body_set_handshake_data(create2_cell_body_t *inp, size_t idx, uint8_t elt);
+/** Append a new element 'elt' to the dynamic array field
+ * handshake_data of the create2_cell_body_t in 'inp'.
+ */
+int create2_cell_body_add_handshake_data(create2_cell_body_t *inp, uint8_t elt);
+/** Return a pointer to the variable-length array field handshake_data
+ * of 'inp'.
+ */
+uint8_t * create2_cell_body_getarray_handshake_data(create2_cell_body_t *inp);
+/** As create2_cell_body_get_handshake_data, but take and return a
+ * const pointer
+ */
+const uint8_t * create2_cell_body_getconstarray_handshake_data(const create2_cell_body_t *inp);
+/** Change the length of the variable-length array field
+ * handshake_data of 'inp' to 'newlen'.Fill extra elements with 0.
+ * Return 0 on success; return -1 and set the error code on 'inp' on
+ * failure.
+ */
+int create2_cell_body_setlen_handshake_data(create2_cell_body_t *inp, size_t newlen);
/** Return a newly allocated ed25519_cert_extension with all elements
* set to zero.
*/
@@ -101,7 +218,7 @@ int ed25519_cert_extension_clear_errors(ed25519_cert_extension_t *obj);
/** Return the value of the ext_length field of the
* ed25519_cert_extension_t in 'inp'
*/
-uint16_t ed25519_cert_extension_get_ext_length(ed25519_cert_extension_t *inp);
+uint16_t ed25519_cert_extension_get_ext_length(const ed25519_cert_extension_t *inp);
/** Set the value of the ext_length field of the
* ed25519_cert_extension_t in 'inp' to 'val'. Return 0 on success;
* return -1 and set the error code on 'inp' on failure.
@@ -110,7 +227,7 @@ int ed25519_cert_extension_set_ext_length(ed25519_cert_extension_t *inp, uint16_
/** Return the value of the ext_type field of the
* ed25519_cert_extension_t in 'inp'
*/
-uint8_t ed25519_cert_extension_get_ext_type(ed25519_cert_extension_t *inp);
+uint8_t ed25519_cert_extension_get_ext_type(const ed25519_cert_extension_t *inp);
/** Set the value of the ext_type field of the
* ed25519_cert_extension_t in 'inp' to 'val'. Return 0 on success;
* return -1 and set the error code on 'inp' on failure.
@@ -119,7 +236,7 @@ int ed25519_cert_extension_set_ext_type(ed25519_cert_extension_t *inp, uint8_t v
/** Return the value of the ext_flags field of the
* ed25519_cert_extension_t in 'inp'
*/
-uint8_t ed25519_cert_extension_get_ext_flags(ed25519_cert_extension_t *inp);
+uint8_t ed25519_cert_extension_get_ext_flags(const ed25519_cert_extension_t *inp);
/** Set the value of the ext_flags field of the
* ed25519_cert_extension_t in 'inp' to 'val'. Return 0 on success;
* return -1 and set the error code on 'inp' on failure.
@@ -184,6 +301,109 @@ const uint8_t * ed25519_cert_extension_getconstarray_un_unparsed(const ed25519_
* success; return -1 and set the error code on 'inp' on failure.
*/
int ed25519_cert_extension_setlen_un_unparsed(ed25519_cert_extension_t *inp, size_t newlen);
+/** Return a newly allocated extend1_cell_body with all elements set
+ * to zero.
+ */
+extend1_cell_body_t *extend1_cell_body_new(void);
+/** Release all storage held by the extend1_cell_body in 'victim'. (Do
+ * nothing if 'victim' is NULL.)
+ */
+void extend1_cell_body_free(extend1_cell_body_t *victim);
+/** Try to parse a extend1_cell_body from the buffer in 'input', using
+ * up to 'len_in' bytes from the input buffer. On success, return the
+ * number of bytes consumed and set *output to the newly allocated
+ * extend1_cell_body_t. On failure, return -2 if the input appears
+ * truncated, and -1 if the input is otherwise invalid.
+ */
+ssize_t extend1_cell_body_parse(extend1_cell_body_t **output, const uint8_t *input, const size_t len_in);
+/** Return the number of bytes we expect to need to encode the
+ * extend1_cell_body in 'obj'. On failure, return a negative value.
+ * Note that this value may be an overestimate, and can even be an
+ * underestimate for certain unencodeable objects.
+ */
+ssize_t extend1_cell_body_encoded_len(const extend1_cell_body_t *obj);
+/** Try to encode the extend1_cell_body from 'input' into the buffer
+ * at 'output', using up to 'avail' bytes of the output buffer. On
+ * success, return the number of bytes used. On failure, return -2 if
+ * the buffer was not long enough, and -1 if the input was invalid.
+ */
+ssize_t extend1_cell_body_encode(uint8_t *output, size_t avail, const extend1_cell_body_t *input);
+/** Check whether the internal state of the extend1_cell_body in 'obj'
+ * is consistent. Return NULL if it is, and a short message if it is
+ * not.
+ */
+const char *extend1_cell_body_check(const extend1_cell_body_t *obj);
+/** Clear any errors that were set on the object 'obj' by its setter
+ * functions. Return true iff errors were cleared.
+ */
+int extend1_cell_body_clear_errors(extend1_cell_body_t *obj);
+/** Return the value of the ipv4addr field of the extend1_cell_body_t
+ * in 'inp'
+ */
+uint32_t extend1_cell_body_get_ipv4addr(const extend1_cell_body_t *inp);
+/** Set the value of the ipv4addr field of the extend1_cell_body_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int extend1_cell_body_set_ipv4addr(extend1_cell_body_t *inp, uint32_t val);
+/** Return the value of the port field of the extend1_cell_body_t in
+ * 'inp'
+ */
+uint16_t extend1_cell_body_get_port(const extend1_cell_body_t *inp);
+/** Set the value of the port field of the extend1_cell_body_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int extend1_cell_body_set_port(extend1_cell_body_t *inp, uint16_t val);
+/** Return the (constant) length of the array holding the onionskin
+ * field of the extend1_cell_body_t in 'inp'.
+ */
+size_t extend1_cell_body_getlen_onionskin(const extend1_cell_body_t *inp);
+/** Return the element at position 'idx' of the fixed array field
+ * onionskin of the extend1_cell_body_t in 'inp'.
+ */
+uint8_t extend1_cell_body_get_onionskin(extend1_cell_body_t *inp, size_t idx);
+/** As extend1_cell_body_get_onionskin, but take and return a const
+ * pointer
+ */
+uint8_t extend1_cell_body_getconst_onionskin(const extend1_cell_body_t *inp, size_t idx);
+/** Change the element at position 'idx' of the fixed array field
+ * onionskin of the extend1_cell_body_t in 'inp', so that it will hold
+ * the value 'elt'.
+ */
+int extend1_cell_body_set_onionskin(extend1_cell_body_t *inp, size_t idx, uint8_t elt);
+/** Return a pointer to the 186-element array field onionskin of
+ * 'inp'.
+ */
+uint8_t * extend1_cell_body_getarray_onionskin(extend1_cell_body_t *inp);
+/** As extend1_cell_body_get_onionskin, but take and return a const
+ * pointer
+ */
+const uint8_t * extend1_cell_body_getconstarray_onionskin(const extend1_cell_body_t *inp);
+/** Return the (constant) length of the array holding the identity
+ * field of the extend1_cell_body_t in 'inp'.
+ */
+size_t extend1_cell_body_getlen_identity(const extend1_cell_body_t *inp);
+/** Return the element at position 'idx' of the fixed array field
+ * identity of the extend1_cell_body_t in 'inp'.
+ */
+uint8_t extend1_cell_body_get_identity(extend1_cell_body_t *inp, size_t idx);
+/** As extend1_cell_body_get_identity, but take and return a const
+ * pointer
+ */
+uint8_t extend1_cell_body_getconst_identity(const extend1_cell_body_t *inp, size_t idx);
+/** Change the element at position 'idx' of the fixed array field
+ * identity of the extend1_cell_body_t in 'inp', so that it will hold
+ * the value 'elt'.
+ */
+int extend1_cell_body_set_identity(extend1_cell_body_t *inp, size_t idx, uint8_t elt);
+/** Return a pointer to the 20-element array field identity of 'inp'.
+ */
+uint8_t * extend1_cell_body_getarray_identity(extend1_cell_body_t *inp);
+/** As extend1_cell_body_get_identity, but take and return a const
+ * pointer
+ */
+const uint8_t * extend1_cell_body_getconstarray_identity(const extend1_cell_body_t *inp);
/** Return a newly allocated link_specifier with all elements set to
* zero.
*/
@@ -222,7 +442,7 @@ int link_specifier_clear_errors(link_specifier_t *obj);
/** Return the value of the ls_type field of the link_specifier_t in
* 'inp'
*/
-uint8_t link_specifier_get_ls_type(link_specifier_t *inp);
+uint8_t link_specifier_get_ls_type(const link_specifier_t *inp);
/** Set the value of the ls_type field of the link_specifier_t in
* 'inp' to 'val'. Return 0 on success; return -1 and set the error
* code on 'inp' on failure.
@@ -231,7 +451,7 @@ int link_specifier_set_ls_type(link_specifier_t *inp, uint8_t val);
/** Return the value of the ls_len field of the link_specifier_t in
* 'inp'
*/
-uint8_t link_specifier_get_ls_len(link_specifier_t *inp);
+uint8_t link_specifier_get_ls_len(const link_specifier_t *inp);
/** Set the value of the ls_len field of the link_specifier_t in 'inp'
* to 'val'. Return 0 on success; return -1 and set the error code on
* 'inp' on failure.
@@ -240,7 +460,7 @@ int link_specifier_set_ls_len(link_specifier_t *inp, uint8_t val);
/** Return the value of the un_ipv4_addr field of the link_specifier_t
* in 'inp'
*/
-uint32_t link_specifier_get_un_ipv4_addr(link_specifier_t *inp);
+uint32_t link_specifier_get_un_ipv4_addr(const link_specifier_t *inp);
/** Set the value of the un_ipv4_addr field of the link_specifier_t in
* 'inp' to 'val'. Return 0 on success; return -1 and set the error
* code on 'inp' on failure.
@@ -249,7 +469,7 @@ int link_specifier_set_un_ipv4_addr(link_specifier_t *inp, uint32_t val);
/** Return the value of the un_ipv4_port field of the link_specifier_t
* in 'inp'
*/
-uint16_t link_specifier_get_un_ipv4_port(link_specifier_t *inp);
+uint16_t link_specifier_get_un_ipv4_port(const link_specifier_t *inp);
/** Set the value of the un_ipv4_port field of the link_specifier_t in
* 'inp' to 'val'. Return 0 on success; return -1 and set the error
* code on 'inp' on failure.
@@ -283,7 +503,7 @@ const uint8_t * link_specifier_getconstarray_un_ipv6_addr(const link_specifier_
/** Return the value of the un_ipv6_port field of the link_specifier_t
* in 'inp'
*/
-uint16_t link_specifier_get_un_ipv6_port(link_specifier_t *inp);
+uint16_t link_specifier_get_un_ipv6_port(const link_specifier_t *inp);
/** Set the value of the un_ipv6_port field of the link_specifier_t in
* 'inp' to 'val'. Return 0 on success; return -1 and set the error
* code on 'inp' on failure.
@@ -412,7 +632,7 @@ int ed25519_cert_clear_errors(ed25519_cert_t *obj);
/** Return the value of the version field of the ed25519_cert_t in
* 'inp'
*/
-uint8_t ed25519_cert_get_version(ed25519_cert_t *inp);
+uint8_t ed25519_cert_get_version(const ed25519_cert_t *inp);
/** Set the value of the version field of the ed25519_cert_t in 'inp'
* to 'val'. Return 0 on success; return -1 and set the error code on
* 'inp' on failure.
@@ -421,7 +641,7 @@ int ed25519_cert_set_version(ed25519_cert_t *inp, uint8_t val);
/** Return the value of the cert_type field of the ed25519_cert_t in
* 'inp'
*/
-uint8_t ed25519_cert_get_cert_type(ed25519_cert_t *inp);
+uint8_t ed25519_cert_get_cert_type(const ed25519_cert_t *inp);
/** Set the value of the cert_type field of the ed25519_cert_t in
* 'inp' to 'val'. Return 0 on success; return -1 and set the error
* code on 'inp' on failure.
@@ -430,7 +650,7 @@ int ed25519_cert_set_cert_type(ed25519_cert_t *inp, uint8_t val);
/** Return the value of the exp_field field of the ed25519_cert_t in
* 'inp'
*/
-uint32_t ed25519_cert_get_exp_field(ed25519_cert_t *inp);
+uint32_t ed25519_cert_get_exp_field(const ed25519_cert_t *inp);
/** Set the value of the exp_field field of the ed25519_cert_t in
* 'inp' to 'val'. Return 0 on success; return -1 and set the error
* code on 'inp' on failure.
@@ -439,7 +659,7 @@ int ed25519_cert_set_exp_field(ed25519_cert_t *inp, uint32_t val);
/** Return the value of the cert_key_type field of the ed25519_cert_t
* in 'inp'
*/
-uint8_t ed25519_cert_get_cert_key_type(ed25519_cert_t *inp);
+uint8_t ed25519_cert_get_cert_key_type(const ed25519_cert_t *inp);
/** Set the value of the cert_key_type field of the ed25519_cert_t in
* 'inp' to 'val'. Return 0 on success; return -1 and set the error
* code on 'inp' on failure.
@@ -473,7 +693,7 @@ const uint8_t * ed25519_cert_getconstarray_certified_key(const ed25519_cert_t *
/** Return the value of the n_extensions field of the ed25519_cert_t
* in 'inp'
*/
-uint8_t ed25519_cert_get_n_extensions(ed25519_cert_t *inp);
+uint8_t ed25519_cert_get_n_extensions(const ed25519_cert_t *inp);
/** Set the value of the n_extensions field of the ed25519_cert_t in
* 'inp' to 'val'. Return 0 on success; return -1 and set the error
* code on 'inp' on failure.
@@ -536,6 +756,104 @@ uint8_t * ed25519_cert_getarray_signature(ed25519_cert_t *inp);
/** As ed25519_cert_get_signature, but take and return a const pointer
*/
const uint8_t * ed25519_cert_getconstarray_signature(const ed25519_cert_t *inp);
+/** Return a newly allocated extend2_cell_body with all elements set
+ * to zero.
+ */
+extend2_cell_body_t *extend2_cell_body_new(void);
+/** Release all storage held by the extend2_cell_body in 'victim'. (Do
+ * nothing if 'victim' is NULL.)
+ */
+void extend2_cell_body_free(extend2_cell_body_t *victim);
+/** Try to parse a extend2_cell_body from the buffer in 'input', using
+ * up to 'len_in' bytes from the input buffer. On success, return the
+ * number of bytes consumed and set *output to the newly allocated
+ * extend2_cell_body_t. On failure, return -2 if the input appears
+ * truncated, and -1 if the input is otherwise invalid.
+ */
+ssize_t extend2_cell_body_parse(extend2_cell_body_t **output, const uint8_t *input, const size_t len_in);
+/** Return the number of bytes we expect to need to encode the
+ * extend2_cell_body in 'obj'. On failure, return a negative value.
+ * Note that this value may be an overestimate, and can even be an
+ * underestimate for certain unencodeable objects.
+ */
+ssize_t extend2_cell_body_encoded_len(const extend2_cell_body_t *obj);
+/** Try to encode the extend2_cell_body from 'input' into the buffer
+ * at 'output', using up to 'avail' bytes of the output buffer. On
+ * success, return the number of bytes used. On failure, return -2 if
+ * the buffer was not long enough, and -1 if the input was invalid.
+ */
+ssize_t extend2_cell_body_encode(uint8_t *output, size_t avail, const extend2_cell_body_t *input);
+/** Check whether the internal state of the extend2_cell_body in 'obj'
+ * is consistent. Return NULL if it is, and a short message if it is
+ * not.
+ */
+const char *extend2_cell_body_check(const extend2_cell_body_t *obj);
+/** Clear any errors that were set on the object 'obj' by its setter
+ * functions. Return true iff errors were cleared.
+ */
+int extend2_cell_body_clear_errors(extend2_cell_body_t *obj);
+/** Return the value of the n_spec field of the extend2_cell_body_t in
+ * 'inp'
+ */
+uint8_t extend2_cell_body_get_n_spec(const extend2_cell_body_t *inp);
+/** Set the value of the n_spec field of the extend2_cell_body_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int extend2_cell_body_set_n_spec(extend2_cell_body_t *inp, uint8_t val);
+/** Return the length of the dynamic array holding the ls field of the
+ * extend2_cell_body_t in 'inp'.
+ */
+size_t extend2_cell_body_getlen_ls(const extend2_cell_body_t *inp);
+/** Return the element at position 'idx' of the dynamic array field ls
+ * of the extend2_cell_body_t in 'inp'.
+ */
+struct link_specifier_st * extend2_cell_body_get_ls(extend2_cell_body_t *inp, size_t idx);
+/** As extend2_cell_body_get_ls, but take and return a const pointer
+ */
+ const struct link_specifier_st * extend2_cell_body_getconst_ls(const extend2_cell_body_t *inp, size_t idx);
+/** Change the element at position 'idx' of the dynamic array field ls
+ * of the extend2_cell_body_t in 'inp', so that it will hold the value
+ * 'elt'. Free the previous value, if any.
+ */
+int extend2_cell_body_set_ls(extend2_cell_body_t *inp, size_t idx, struct link_specifier_st * elt);
+/** As extend2_cell_body_set_ls, but does not free the previous value.
+ */
+int extend2_cell_body_set0_ls(extend2_cell_body_t *inp, size_t idx, struct link_specifier_st * elt);
+/** Append a new element 'elt' to the dynamic array field ls of the
+ * extend2_cell_body_t in 'inp'.
+ */
+int extend2_cell_body_add_ls(extend2_cell_body_t *inp, struct link_specifier_st * elt);
+/** Return a pointer to the variable-length array field ls of 'inp'.
+ */
+struct link_specifier_st * * extend2_cell_body_getarray_ls(extend2_cell_body_t *inp);
+/** As extend2_cell_body_get_ls, but take and return a const pointer
+ */
+const struct link_specifier_st * const * extend2_cell_body_getconstarray_ls(const extend2_cell_body_t *inp);
+/** Change the length of the variable-length array field ls of 'inp'
+ * to 'newlen'.Fill extra elements with NULL; free removed elements.
+ * Return 0 on success; return -1 and set the error code on 'inp' on
+ * failure.
+ */
+int extend2_cell_body_setlen_ls(extend2_cell_body_t *inp, size_t newlen);
+/** Return the value of the create2 field of the extend2_cell_body_t
+ * in 'inp'
+ */
+struct create2_cell_body_st * extend2_cell_body_get_create2(extend2_cell_body_t *inp);
+/** As extend2_cell_body_get_create2, but take and return a const
+ * pointer
+ */
+const struct create2_cell_body_st * extend2_cell_body_getconst_create2(const extend2_cell_body_t *inp);
+/** Set the value of the create2 field of the extend2_cell_body_t in
+ * 'inp' to 'val'. Free the old value if any. Steals the referenceto
+ * 'val'.Return 0 on success; return -1 and set the error code on
+ * 'inp' on failure.
+ */
+int extend2_cell_body_set_create2(extend2_cell_body_t *inp, struct create2_cell_body_st *val);
+/** As extend2_cell_body_set_create2, but does not free the previous
+ * value.
+ */
+int extend2_cell_body_set0_create2(extend2_cell_body_t *inp, struct create2_cell_body_st *val);
/** Return a newly allocated link_specifier_list with all elements set
* to zero.
*/
@@ -575,7 +893,7 @@ int link_specifier_list_clear_errors(link_specifier_list_t *obj);
/** Return the value of the n_spec field of the link_specifier_list_t
* in 'inp'
*/
-uint8_t link_specifier_list_get_n_spec(link_specifier_list_t *inp);
+uint8_t link_specifier_list_get_n_spec(const link_specifier_list_t *inp);
/** Set the value of the n_spec field of the link_specifier_list_t in
* 'inp' to 'val'. Return 0 on success; return -1 and set the error
* code on 'inp' on failure.
diff --git a/src/trunnel/ed25519_cert.trunnel b/src/trunnel/ed25519_cert.trunnel
index 012b2afc30..e424ce5464 100644
--- a/src/trunnel/ed25519_cert.trunnel
+++ b/src/trunnel/ed25519_cert.trunnel
@@ -23,40 +23,6 @@ struct ed25519_cert_extension {
};
}
-/*
-struct cert_revocation {
- u8 prefix[8];
- u8 version IN [1];
- u8 keytype;
- u8 identity_key[32];
- u8 revoked_key[32];
- u64 published;
- u8 n_extensions;
- struct cert_extension ext[n_extensions];
- u8 signature[64];
-}
-
-struct crosscert_ed_rsa {
- u8 ed_key[32];
- u32 expiration_date;
- u8 signature[128];
-}
-
-struct auth02_cell {
- u8 type[8];
- u8 cid[32];
- u8 sid[32];
- u8 cid_ed[32];
- u8 sid_ed[32];
- u8 slog[32];
- u8 clog[32];
- u8 scert[32];
- u8 tlssecrets[32];
- u8 rand[24];
- u8 sig[64];
-}
-*/
-
const LS_IPV4 = 0x00;
const LS_IPV6 = 0x01;
const LS_LEGACY_ID = 0x02;
@@ -79,3 +45,22 @@ struct link_specifier_list {
u8 n_spec;
struct link_specifier spec[n_spec];
}
+
+struct extend1_cell_body {
+ u32 ipv4addr;
+ u16 port;
+ u8 onionskin[186];
+ u8 identity[20];
+}
+
+struct create2_cell_body {
+ u16 handshake_type;
+ u16 handshake_len;
+ u8 handshake_data[handshake_len];
+}
+
+struct extend2_cell_body {
+ u8 n_spec;
+ struct link_specifier ls[n_spec];
+ struct create2_cell_body create2;
+}
diff --git a/src/trunnel/hs/cell_common.c b/src/trunnel/hs/cell_common.c
index c6c610d213..830f2260ee 100644
--- a/src/trunnel/hs/cell_common.c
+++ b/src/trunnel/hs/cell_common.c
@@ -1,4 +1,4 @@
-/* cell_common.c -- generated by Trunnel v1.5.
+/* cell_common.c -- generated by Trunnel v1.5.1.
* https://gitweb.torproject.org/trunnel.git
* You probably shouldn't edit this file.
*/
@@ -58,7 +58,7 @@ cell_extension_fields_free(cell_extension_fields_t *obj)
}
uint8_t
-cell_extension_fields_get_field_type(cell_extension_fields_t *inp)
+cell_extension_fields_get_field_type(const cell_extension_fields_t *inp)
{
return inp->field_type;
}
@@ -69,7 +69,7 @@ cell_extension_fields_set_field_type(cell_extension_fields_t *inp, uint8_t val)
return 0;
}
uint8_t
-cell_extension_fields_get_field_len(cell_extension_fields_t *inp)
+cell_extension_fields_get_field_len(const cell_extension_fields_t *inp)
{
return inp->field_len;
}
@@ -340,7 +340,7 @@ cell_extension_free(cell_extension_t *obj)
}
uint8_t
-cell_extension_get_num(cell_extension_t *inp)
+cell_extension_get_num(const cell_extension_t *inp)
{
return inp->num;
}
diff --git a/src/trunnel/hs/cell_common.h b/src/trunnel/hs/cell_common.h
index 3c847f71e5..8999f7da40 100644
--- a/src/trunnel/hs/cell_common.h
+++ b/src/trunnel/hs/cell_common.h
@@ -1,4 +1,4 @@
-/* cell_common.h -- generated by by Trunnel v1.5.
+/* cell_common.h -- generated by by Trunnel v1.5.1.
* https://gitweb.torproject.org/trunnel.git
* You probably shouldn't edit this file.
*/
@@ -64,7 +64,7 @@ int cell_extension_fields_clear_errors(cell_extension_fields_t *obj);
/** Return the value of the field_type field of the
* cell_extension_fields_t in 'inp'
*/
-uint8_t cell_extension_fields_get_field_type(cell_extension_fields_t *inp);
+uint8_t cell_extension_fields_get_field_type(const cell_extension_fields_t *inp);
/** Set the value of the field_type field of the
* cell_extension_fields_t in 'inp' to 'val'. Return 0 on success;
* return -1 and set the error code on 'inp' on failure.
@@ -73,7 +73,7 @@ int cell_extension_fields_set_field_type(cell_extension_fields_t *inp, uint8_t v
/** Return the value of the field_len field of the
* cell_extension_fields_t in 'inp'
*/
-uint8_t cell_extension_fields_get_field_len(cell_extension_fields_t *inp);
+uint8_t cell_extension_fields_get_field_len(const cell_extension_fields_t *inp);
/** Set the value of the field_len field of the
* cell_extension_fields_t in 'inp' to 'val'. Return 0 on success;
* return -1 and set the error code on 'inp' on failure.
@@ -150,7 +150,7 @@ const char *cell_extension_check(const cell_extension_t *obj);
int cell_extension_clear_errors(cell_extension_t *obj);
/** Return the value of the num field of the cell_extension_t in 'inp'
*/
-uint8_t cell_extension_get_num(cell_extension_t *inp);
+uint8_t cell_extension_get_num(const cell_extension_t *inp);
/** Set the value of the num field of the cell_extension_t in 'inp' to
* 'val'. Return 0 on success; return -1 and set the error code on
* 'inp' on failure.
diff --git a/src/trunnel/hs/cell_establish_intro.c b/src/trunnel/hs/cell_establish_intro.c
index f3a3f53e91..02094fe2bf 100644
--- a/src/trunnel/hs/cell_establish_intro.c
+++ b/src/trunnel/hs/cell_establish_intro.c
@@ -1,4 +1,4 @@
-/* cell_establish_intro.c -- generated by Trunnel v1.5.
+/* cell_establish_intro.c -- generated by Trunnel v1.5.1.
* https://gitweb.torproject.org/trunnel.git
* You probably shouldn't edit this file.
*/
@@ -75,7 +75,7 @@ hs_cell_establish_intro_get_start_cell(const hs_cell_establish_intro_t *inp)
return inp->start_cell;
}
uint8_t
-hs_cell_establish_intro_get_auth_key_type(hs_cell_establish_intro_t *inp)
+hs_cell_establish_intro_get_auth_key_type(const hs_cell_establish_intro_t *inp)
{
return inp->auth_key_type;
}
@@ -90,7 +90,7 @@ hs_cell_establish_intro_set_auth_key_type(hs_cell_establish_intro_t *inp, uint8_
return 0;
}
uint16_t
-hs_cell_establish_intro_get_auth_key_len(hs_cell_establish_intro_t *inp)
+hs_cell_establish_intro_get_auth_key_len(const hs_cell_establish_intro_t *inp)
{
return inp->auth_key_len;
}
@@ -232,7 +232,7 @@ hs_cell_establish_intro_getconstarray_handshake_mac(const hs_cell_establish_intr
return (const uint8_t *)hs_cell_establish_intro_getarray_handshake_mac((hs_cell_establish_intro_t*)inp);
}
uint16_t
-hs_cell_establish_intro_get_sig_len(hs_cell_establish_intro_t *inp)
+hs_cell_establish_intro_get_sig_len(const hs_cell_establish_intro_t *inp)
{
return inp->sig_len;
}
diff --git a/src/trunnel/hs/cell_establish_intro.h b/src/trunnel/hs/cell_establish_intro.h
index 9a066b1804..a9166f10d8 100644
--- a/src/trunnel/hs/cell_establish_intro.h
+++ b/src/trunnel/hs/cell_establish_intro.h
@@ -1,4 +1,4 @@
-/* cell_establish_intro.h -- generated by by Trunnel v1.5.
+/* cell_establish_intro.h -- generated by by Trunnel v1.5.1.
* https://gitweb.torproject.org/trunnel.git
* You probably shouldn't edit this file.
*/
@@ -75,7 +75,7 @@ const uint8_t * hs_cell_establish_intro_get_start_cell(const hs_cell_establish_i
/** Return the value of the auth_key_type field of the
* hs_cell_establish_intro_t in 'inp'
*/
-uint8_t hs_cell_establish_intro_get_auth_key_type(hs_cell_establish_intro_t *inp);
+uint8_t hs_cell_establish_intro_get_auth_key_type(const hs_cell_establish_intro_t *inp);
/** Set the value of the auth_key_type field of the
* hs_cell_establish_intro_t in 'inp' to 'val'. Return 0 on success;
* return -1 and set the error code on 'inp' on failure.
@@ -84,7 +84,7 @@ int hs_cell_establish_intro_set_auth_key_type(hs_cell_establish_intro_t *inp, ui
/** Return the value of the auth_key_len field of the
* hs_cell_establish_intro_t in 'inp'
*/
-uint16_t hs_cell_establish_intro_get_auth_key_len(hs_cell_establish_intro_t *inp);
+uint16_t hs_cell_establish_intro_get_auth_key_len(const hs_cell_establish_intro_t *inp);
/** Set the value of the auth_key_len field of the
* hs_cell_establish_intro_t in 'inp' to 'val'. Return 0 on success;
* return -1 and set the error code on 'inp' on failure.
@@ -173,7 +173,7 @@ const uint8_t * hs_cell_establish_intro_getconstarray_handshake_mac(const hs_ce
/** Return the value of the sig_len field of the
* hs_cell_establish_intro_t in 'inp'
*/
-uint16_t hs_cell_establish_intro_get_sig_len(hs_cell_establish_intro_t *inp);
+uint16_t hs_cell_establish_intro_get_sig_len(const hs_cell_establish_intro_t *inp);
/** Set the value of the sig_len field of the
* hs_cell_establish_intro_t in 'inp' to 'val'. Return 0 on success;
* return -1 and set the error code on 'inp' on failure.
diff --git a/src/trunnel/hs/cell_introduce1.c b/src/trunnel/hs/cell_introduce1.c
index 51f567655e..5922a086dc 100644
--- a/src/trunnel/hs/cell_introduce1.c
+++ b/src/trunnel/hs/cell_introduce1.c
@@ -1,4 +1,4 @@
-/* cell_introduce1.c -- generated by Trunnel v1.5.
+/* cell_introduce1.c -- generated by Trunnel v1.5.1.
* https://gitweb.torproject.org/trunnel.git
* You probably shouldn't edit this file.
*/
@@ -114,7 +114,7 @@ hs_cell_introduce1_getconstarray_legacy_key_id(const hs_cell_introduce1_t *inp)
return (const uint8_t *)hs_cell_introduce1_getarray_legacy_key_id((hs_cell_introduce1_t*)inp);
}
uint8_t
-hs_cell_introduce1_get_auth_key_type(hs_cell_introduce1_t *inp)
+hs_cell_introduce1_get_auth_key_type(const hs_cell_introduce1_t *inp)
{
return inp->auth_key_type;
}
@@ -129,7 +129,7 @@ hs_cell_introduce1_set_auth_key_type(hs_cell_introduce1_t *inp, uint8_t val)
return 0;
}
uint16_t
-hs_cell_introduce1_get_auth_key_len(hs_cell_introduce1_t *inp)
+hs_cell_introduce1_get_auth_key_len(const hs_cell_introduce1_t *inp)
{
return inp->auth_key_len;
}
@@ -543,7 +543,7 @@ hs_cell_introduce_ack_free(hs_cell_introduce_ack_t *obj)
}
uint16_t
-hs_cell_introduce_ack_get_status(hs_cell_introduce_ack_t *inp)
+hs_cell_introduce_ack_get_status(const hs_cell_introduce_ack_t *inp)
{
return inp->status;
}
@@ -830,7 +830,7 @@ hs_cell_introduce_encrypted_set0_extensions(hs_cell_introduce_encrypted_t *inp,
return 0;
}
uint8_t
-hs_cell_introduce_encrypted_get_onion_key_type(hs_cell_introduce_encrypted_t *inp)
+hs_cell_introduce_encrypted_get_onion_key_type(const hs_cell_introduce_encrypted_t *inp)
{
return inp->onion_key_type;
}
@@ -845,7 +845,7 @@ hs_cell_introduce_encrypted_set_onion_key_type(hs_cell_introduce_encrypted_t *in
return 0;
}
uint16_t
-hs_cell_introduce_encrypted_get_onion_key_len(hs_cell_introduce_encrypted_t *inp)
+hs_cell_introduce_encrypted_get_onion_key_len(const hs_cell_introduce_encrypted_t *inp)
{
return inp->onion_key_len;
}
@@ -923,7 +923,7 @@ hs_cell_introduce_encrypted_setlen_onion_key(hs_cell_introduce_encrypted_t *inp,
return -1;
}
uint8_t
-hs_cell_introduce_encrypted_get_nspec(hs_cell_introduce_encrypted_t *inp)
+hs_cell_introduce_encrypted_get_nspec(const hs_cell_introduce_encrypted_t *inp)
{
return inp->nspec;
}
diff --git a/src/trunnel/hs/cell_introduce1.h b/src/trunnel/hs/cell_introduce1.h
index 09ee0fb4b3..ccd2cda904 100644
--- a/src/trunnel/hs/cell_introduce1.h
+++ b/src/trunnel/hs/cell_introduce1.h
@@ -1,4 +1,4 @@
-/* cell_introduce1.h -- generated by by Trunnel v1.5.
+/* cell_introduce1.h -- generated by by Trunnel v1.5.1.
* https://gitweb.torproject.org/trunnel.git
* You probably shouldn't edit this file.
*/
@@ -110,7 +110,7 @@ const uint8_t * hs_cell_introduce1_getconstarray_legacy_key_id(const hs_cell_in
/** Return the value of the auth_key_type field of the
* hs_cell_introduce1_t in 'inp'
*/
-uint8_t hs_cell_introduce1_get_auth_key_type(hs_cell_introduce1_t *inp);
+uint8_t hs_cell_introduce1_get_auth_key_type(const hs_cell_introduce1_t *inp);
/** Set the value of the auth_key_type field of the
* hs_cell_introduce1_t in 'inp' to 'val'. Return 0 on success; return
* -1 and set the error code on 'inp' on failure.
@@ -119,7 +119,7 @@ int hs_cell_introduce1_set_auth_key_type(hs_cell_introduce1_t *inp, uint8_t val)
/** Return the value of the auth_key_len field of the
* hs_cell_introduce1_t in 'inp'
*/
-uint16_t hs_cell_introduce1_get_auth_key_len(hs_cell_introduce1_t *inp);
+uint16_t hs_cell_introduce1_get_auth_key_len(const hs_cell_introduce1_t *inp);
/** Set the value of the auth_key_len field of the
* hs_cell_introduce1_t in 'inp' to 'val'. Return 0 on success; return
* -1 and set the error code on 'inp' on failure.
@@ -250,7 +250,7 @@ int hs_cell_introduce_ack_clear_errors(hs_cell_introduce_ack_t *obj);
/** Return the value of the status field of the
* hs_cell_introduce_ack_t in 'inp'
*/
-uint16_t hs_cell_introduce_ack_get_status(hs_cell_introduce_ack_t *inp);
+uint16_t hs_cell_introduce_ack_get_status(const hs_cell_introduce_ack_t *inp);
/** Set the value of the status field of the hs_cell_introduce_ack_t
* in 'inp' to 'val'. Return 0 on success; return -1 and set the error
* code on 'inp' on failure.
@@ -358,7 +358,7 @@ int hs_cell_introduce_encrypted_set0_extensions(hs_cell_introduce_encrypted_t *i
/** Return the value of the onion_key_type field of the
* hs_cell_introduce_encrypted_t in 'inp'
*/
-uint8_t hs_cell_introduce_encrypted_get_onion_key_type(hs_cell_introduce_encrypted_t *inp);
+uint8_t hs_cell_introduce_encrypted_get_onion_key_type(const hs_cell_introduce_encrypted_t *inp);
/** Set the value of the onion_key_type field of the
* hs_cell_introduce_encrypted_t in 'inp' to 'val'. Return 0 on
* success; return -1 and set the error code on 'inp' on failure.
@@ -367,7 +367,7 @@ int hs_cell_introduce_encrypted_set_onion_key_type(hs_cell_introduce_encrypted_t
/** Return the value of the onion_key_len field of the
* hs_cell_introduce_encrypted_t in 'inp'
*/
-uint16_t hs_cell_introduce_encrypted_get_onion_key_len(hs_cell_introduce_encrypted_t *inp);
+uint16_t hs_cell_introduce_encrypted_get_onion_key_len(const hs_cell_introduce_encrypted_t *inp);
/** Set the value of the onion_key_len field of the
* hs_cell_introduce_encrypted_t in 'inp' to 'val'. Return 0 on
* success; return -1 and set the error code on 'inp' on failure.
@@ -410,7 +410,7 @@ int hs_cell_introduce_encrypted_setlen_onion_key(hs_cell_introduce_encrypted_t *
/** Return the value of the nspec field of the
* hs_cell_introduce_encrypted_t in 'inp'
*/
-uint8_t hs_cell_introduce_encrypted_get_nspec(hs_cell_introduce_encrypted_t *inp);
+uint8_t hs_cell_introduce_encrypted_get_nspec(const hs_cell_introduce_encrypted_t *inp);
/** Set the value of the nspec field of the
* hs_cell_introduce_encrypted_t in 'inp' to 'val'. Return 0 on
* success; return -1 and set the error code on 'inp' on failure.
diff --git a/src/trunnel/link_handshake.c b/src/trunnel/link_handshake.c
index a4b1fe034a..887f710d9c 100644
--- a/src/trunnel/link_handshake.c
+++ b/src/trunnel/link_handshake.c
@@ -1,4 +1,4 @@
-/* link_handshake.c -- generated by Trunnel v1.5.
+/* link_handshake.c -- generated by Trunnel v1.5.1.
* https://gitweb.torproject.org/trunnel.git
* You probably shouldn't edit this file.
*/
@@ -94,7 +94,7 @@ auth_challenge_cell_getconstarray_challenge(const auth_challenge_cell_t *inp)
return (const uint8_t *)auth_challenge_cell_getarray_challenge((auth_challenge_cell_t*)inp);
}
uint16_t
-auth_challenge_cell_get_n_methods(auth_challenge_cell_t *inp)
+auth_challenge_cell_get_n_methods(const auth_challenge_cell_t *inp)
{
return inp->n_methods;
}
@@ -362,7 +362,7 @@ auth_ctx_free(auth_ctx_t *obj)
}
uint8_t
-auth_ctx_get_is_ed(auth_ctx_t *inp)
+auth_ctx_get_is_ed(const auth_ctx_t *inp)
{
return inp->is_ed;
}
@@ -402,7 +402,7 @@ certs_cell_cert_free(certs_cell_cert_t *obj)
}
uint8_t
-certs_cell_cert_get_cert_type(certs_cell_cert_t *inp)
+certs_cell_cert_get_cert_type(const certs_cell_cert_t *inp)
{
return inp->cert_type;
}
@@ -413,7 +413,7 @@ certs_cell_cert_set_cert_type(certs_cell_cert_t *inp, uint8_t val)
return 0;
}
uint16_t
-certs_cell_cert_get_cert_len(certs_cell_cert_t *inp)
+certs_cell_cert_get_cert_len(const certs_cell_cert_t *inp)
{
return inp->cert_len;
}
@@ -712,7 +712,7 @@ rsa_ed_crosscert_getconstarray_ed_key(const rsa_ed_crosscert_t *inp)
return (const uint8_t *)rsa_ed_crosscert_getarray_ed_key((rsa_ed_crosscert_t*)inp);
}
uint32_t
-rsa_ed_crosscert_get_expiration(rsa_ed_crosscert_t *inp)
+rsa_ed_crosscert_get_expiration(const rsa_ed_crosscert_t *inp)
{
return inp->expiration;
}
@@ -728,7 +728,7 @@ rsa_ed_crosscert_get_end_of_signed(const rsa_ed_crosscert_t *inp)
return inp->end_of_signed;
}
uint8_t
-rsa_ed_crosscert_get_sig_len(rsa_ed_crosscert_t *inp)
+rsa_ed_crosscert_get_sig_len(const rsa_ed_crosscert_t *inp)
{
return inp->sig_len;
}
@@ -1807,7 +1807,7 @@ certs_cell_free(certs_cell_t *obj)
}
uint8_t
-certs_cell_get_n_certs(certs_cell_t *inp)
+certs_cell_get_n_certs(const certs_cell_t *inp)
{
return inp->n_certs;
}
diff --git a/src/trunnel/link_handshake.h b/src/trunnel/link_handshake.h
index 0b2ad344ab..418662631a 100644
--- a/src/trunnel/link_handshake.h
+++ b/src/trunnel/link_handshake.h
@@ -1,4 +1,4 @@
-/* link_handshake.h -- generated by by Trunnel v1.5.
+/* link_handshake.h -- generated by by Trunnel v1.5.1.
* https://gitweb.torproject.org/trunnel.git
* You probably shouldn't edit this file.
*/
@@ -141,7 +141,7 @@ const uint8_t * auth_challenge_cell_getconstarray_challenge(const auth_challeng
/** Return the value of the n_methods field of the
* auth_challenge_cell_t in 'inp'
*/
-uint16_t auth_challenge_cell_get_n_methods(auth_challenge_cell_t *inp);
+uint16_t auth_challenge_cell_get_n_methods(const auth_challenge_cell_t *inp);
/** Set the value of the n_methods field of the auth_challenge_cell_t
* in 'inp' to 'val'. Return 0 on success; return -1 and set the error
* code on 'inp' on failure.
@@ -190,7 +190,7 @@ auth_ctx_t *auth_ctx_new(void);
void auth_ctx_free(auth_ctx_t *victim);
/** Return the value of the is_ed field of the auth_ctx_t in 'inp'
*/
-uint8_t auth_ctx_get_is_ed(auth_ctx_t *inp);
+uint8_t auth_ctx_get_is_ed(const auth_ctx_t *inp);
/** Set the value of the is_ed field of the auth_ctx_t in 'inp' to
* 'val'. Return 0 on success; return -1 and set the error code on
* 'inp' on failure.
@@ -235,7 +235,7 @@ int certs_cell_cert_clear_errors(certs_cell_cert_t *obj);
/** Return the value of the cert_type field of the certs_cell_cert_t
* in 'inp'
*/
-uint8_t certs_cell_cert_get_cert_type(certs_cell_cert_t *inp);
+uint8_t certs_cell_cert_get_cert_type(const certs_cell_cert_t *inp);
/** Set the value of the cert_type field of the certs_cell_cert_t in
* 'inp' to 'val'. Return 0 on success; return -1 and set the error
* code on 'inp' on failure.
@@ -244,7 +244,7 @@ int certs_cell_cert_set_cert_type(certs_cell_cert_t *inp, uint8_t val);
/** Return the value of the cert_len field of the certs_cell_cert_t in
* 'inp'
*/
-uint16_t certs_cell_cert_get_cert_len(certs_cell_cert_t *inp);
+uint16_t certs_cell_cert_get_cert_len(const certs_cell_cert_t *inp);
/** Set the value of the cert_len field of the certs_cell_cert_t in
* 'inp' to 'val'. Return 0 on success; return -1 and set the error
* code on 'inp' on failure.
@@ -344,7 +344,7 @@ const uint8_t * rsa_ed_crosscert_getconstarray_ed_key(const rsa_ed_crosscert_t
/** Return the value of the expiration field of the rsa_ed_crosscert_t
* in 'inp'
*/
-uint32_t rsa_ed_crosscert_get_expiration(rsa_ed_crosscert_t *inp);
+uint32_t rsa_ed_crosscert_get_expiration(const rsa_ed_crosscert_t *inp);
/** Set the value of the expiration field of the rsa_ed_crosscert_t in
* 'inp' to 'val'. Return 0 on success; return -1 and set the error
* code on 'inp' on failure.
@@ -356,7 +356,7 @@ const uint8_t * rsa_ed_crosscert_get_end_of_signed(const rsa_ed_crosscert_t *inp
/** Return the value of the sig_len field of the rsa_ed_crosscert_t in
* 'inp'
*/
-uint8_t rsa_ed_crosscert_get_sig_len(rsa_ed_crosscert_t *inp);
+uint8_t rsa_ed_crosscert_get_sig_len(const rsa_ed_crosscert_t *inp);
/** Set the value of the sig_len field of the rsa_ed_crosscert_t in
* 'inp' to 'val'. Return 0 on success; return -1 and set the error
* code on 'inp' on failure.
@@ -715,7 +715,7 @@ const char *certs_cell_check(const certs_cell_t *obj);
int certs_cell_clear_errors(certs_cell_t *obj);
/** Return the value of the n_certs field of the certs_cell_t in 'inp'
*/
-uint8_t certs_cell_get_n_certs(certs_cell_t *inp);
+uint8_t certs_cell_get_n_certs(const certs_cell_t *inp);
/** Set the value of the n_certs field of the certs_cell_t in 'inp' to
* 'val'. Return 0 on success; return -1 and set the error code on
* 'inp' on failure.
diff --git a/src/trunnel/pwbox.c b/src/trunnel/pwbox.c
index 059fcfd7da..f4b910bdab 100644
--- a/src/trunnel/pwbox.c
+++ b/src/trunnel/pwbox.c
@@ -1,4 +1,4 @@
-/* pwbox.c -- generated by Trunnel v1.5.
+/* pwbox.c -- generated by Trunnel v1.5.1.
* https://gitweb.torproject.org/trunnel.git
* You probably shouldn't edit this file.
*/
@@ -62,7 +62,7 @@ pwbox_encoded_free(pwbox_encoded_t *obj)
}
uint32_t
-pwbox_encoded_get_fixedbytes0(pwbox_encoded_t *inp)
+pwbox_encoded_get_fixedbytes0(const pwbox_encoded_t *inp)
{
return inp->fixedbytes0;
}
@@ -77,7 +77,7 @@ pwbox_encoded_set_fixedbytes0(pwbox_encoded_t *inp, uint32_t val)
return 0;
}
uint32_t
-pwbox_encoded_get_fixedbytes1(pwbox_encoded_t *inp)
+pwbox_encoded_get_fixedbytes1(const pwbox_encoded_t *inp)
{
return inp->fixedbytes1;
}
@@ -92,7 +92,7 @@ pwbox_encoded_set_fixedbytes1(pwbox_encoded_t *inp, uint32_t val)
return 0;
}
uint8_t
-pwbox_encoded_get_header_len(pwbox_encoded_t *inp)
+pwbox_encoded_get_header_len(const pwbox_encoded_t *inp)
{
return inp->header_len;
}
diff --git a/src/trunnel/pwbox.h b/src/trunnel/pwbox.h
index 9376a7cd1b..939b3c41a7 100644
--- a/src/trunnel/pwbox.h
+++ b/src/trunnel/pwbox.h
@@ -1,4 +1,4 @@
-/* pwbox.h -- generated by by Trunnel v1.5.
+/* pwbox.h -- generated by by Trunnel v1.5.1.
* https://gitweb.torproject.org/trunnel.git
* You probably shouldn't edit this file.
*/
@@ -61,7 +61,7 @@ int pwbox_encoded_clear_errors(pwbox_encoded_t *obj);
/** Return the value of the fixedbytes0 field of the pwbox_encoded_t
* in 'inp'
*/
-uint32_t pwbox_encoded_get_fixedbytes0(pwbox_encoded_t *inp);
+uint32_t pwbox_encoded_get_fixedbytes0(const pwbox_encoded_t *inp);
/** Set the value of the fixedbytes0 field of the pwbox_encoded_t in
* 'inp' to 'val'. Return 0 on success; return -1 and set the error
* code on 'inp' on failure.
@@ -70,7 +70,7 @@ int pwbox_encoded_set_fixedbytes0(pwbox_encoded_t *inp, uint32_t val);
/** Return the value of the fixedbytes1 field of the pwbox_encoded_t
* in 'inp'
*/
-uint32_t pwbox_encoded_get_fixedbytes1(pwbox_encoded_t *inp);
+uint32_t pwbox_encoded_get_fixedbytes1(const pwbox_encoded_t *inp);
/** Set the value of the fixedbytes1 field of the pwbox_encoded_t in
* 'inp' to 'val'. Return 0 on success; return -1 and set the error
* code on 'inp' on failure.
@@ -79,7 +79,7 @@ int pwbox_encoded_set_fixedbytes1(pwbox_encoded_t *inp, uint32_t val);
/** Return the value of the header_len field of the pwbox_encoded_t in
* 'inp'
*/
-uint8_t pwbox_encoded_get_header_len(pwbox_encoded_t *inp);
+uint8_t pwbox_encoded_get_header_len(const pwbox_encoded_t *inp);
/** Set the value of the header_len field of the pwbox_encoded_t in
* 'inp' to 'val'. Return 0 on success; return -1 and set the error
* code on 'inp' on failure.