summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore8
-rw-r--r--ChangeLog283
-rw-r--r--LICENSE2
-rw-r--r--Makefile.nmake10
-rw-r--r--acinclude.m42
-rwxr-xr-xautogen.sh12
-rw-r--r--changes/bug70544
-rw-r--r--changes/bug715726
-rw-r--r--changes/bug7799.ratelim6
-rw-r--r--changes/bug7816.0248
-rw-r--r--changes/bug7816_0237
-rw-r--r--changes/bug7816_023_small3
-rw-r--r--changes/bug79027
-rw-r--r--changes/bug81217
-rw-r--r--changes/bug81515
-rw-r--r--changes/bug81616
-rw-r--r--changes/dh_benchmarks3
-rw-r--r--changes/dirguards8
-rw-r--r--changes/tls_ecdhe26
-rw-r--r--configure.ac134
-rwxr-xr-xcontrib/redox.py2
-rw-r--r--contrib/tor-mingw.nsi.in2
-rw-r--r--doc/tor.1.txt126
-rw-r--r--src/common/Makefile.nmake11
-rw-r--r--src/common/address.c6
-rw-r--r--src/common/address.h2
-rw-r--r--src/common/aes.c2
-rw-r--r--src/common/aes.h2
-rw-r--r--src/common/compat.c4
-rw-r--r--src/common/compat.h26
-rw-r--r--src/common/compat_libevent.c105
-rw-r--r--src/common/compat_libevent.h2
-rw-r--r--src/common/container.c24
-rw-r--r--src/common/container.h14
-rw-r--r--src/common/crypto.c192
-rw-r--r--src/common/crypto.h17
-rw-r--r--src/common/crypto_curve25519.c191
-rw-r--r--src/common/crypto_curve25519.h68
-rw-r--r--src/common/crypto_format.c46
-rw-r--r--src/common/di_ops.c91
-rw-r--r--src/common/di_ops.h18
-rw-r--r--src/common/include.am27
-rw-r--r--src/common/log.c6
-rw-r--r--src/common/memarea.c2
-rw-r--r--src/common/memarea.h2
-rw-r--r--src/common/mempool.c2
-rw-r--r--src/common/mempool.h2
-rw-r--r--src/common/procmon.c4
-rw-r--r--src/common/procmon.h2
-rw-r--r--src/common/torgzip.c2
-rw-r--r--src/common/torgzip.h2
-rw-r--r--src/common/torint.h6
-rw-r--r--src/common/torlog.h3
-rw-r--r--src/common/tortls.c63
-rw-r--r--src/common/tortls.h2
-rw-r--r--src/common/util.c14
-rw-r--r--src/common/util.h2
-rw-r--r--src/config/geoip19722
-rw-r--r--src/ext/README9
-rw-r--r--src/ext/curve25519_donna/README44
-rw-r--r--src/ext/curve25519_donna/curve25519-donna-c64.c449
-rw-r--r--src/ext/curve25519_donna/curve25519-donna.c730
-rw-r--r--src/ext/eventdns.c122
-rw-r--r--src/ext/ht.h2
-rw-r--r--src/ext/tor_queue.h341
-rw-r--r--src/or/Makefile.nmake80
-rw-r--r--src/or/addressmap.c4
-rw-r--r--src/or/addressmap.h2
-rw-r--r--src/or/buffers.c8
-rw-r--r--src/or/buffers.h2
-rw-r--r--src/or/channel.c138
-rw-r--r--src/or/channel.h8
-rw-r--r--src/or/channeltls.c4
-rw-r--r--src/or/channeltls.h2
-rw-r--r--src/or/circuitbuild.c1329
-rw-r--r--src/or/circuitbuild.h25
-rw-r--r--src/or/circuitlist.c37
-rw-r--r--src/or/circuitlist.h2
-rw-r--r--src/or/circuitmux.c2
-rw-r--r--src/or/circuitmux.h2
-rw-r--r--src/or/circuitmux_ewma.c2
-rw-r--r--src/or/circuitmux_ewma.h2
-rw-r--r--src/or/circuitstats.c12
-rw-r--r--src/or/circuitstats.h2
-rw-r--r--src/or/circuituse.c194
-rw-r--r--src/or/circuituse.h2
-rw-r--r--src/or/command.c85
-rw-r--r--src/or/command.h2
-rw-r--r--src/or/config.c125
-rw-r--r--src/or/config.h2
-rw-r--r--src/or/confparse.c2
-rw-r--r--src/or/confparse.h2
-rw-r--r--src/or/connection.c42
-rw-r--r--src/or/connection.h2
-rw-r--r--src/or/connection_edge.c42
-rw-r--r--src/or/connection_edge.h3
-rw-r--r--src/or/connection_or.c6
-rw-r--r--src/or/connection_or.h2
-rw-r--r--src/or/control.c6
-rw-r--r--src/or/control.h2
-rw-r--r--src/or/cpuworker.c380
-rw-r--r--src/or/cpuworker.h10
-rw-r--r--src/or/directory.c31
-rw-r--r--src/or/directory.h2
-rw-r--r--src/or/dirserv.c81
-rw-r--r--src/or/dirserv.h3
-rw-r--r--src/or/dirvote.c44
-rw-r--r--src/or/dirvote.h8
-rw-r--r--src/or/dns.c27
-rw-r--r--src/or/dns.h2
-rw-r--r--src/or/dnsserv.c2
-rw-r--r--src/or/dnsserv.h2
-rw-r--r--src/or/entrynodes.c72
-rw-r--r--src/or/entrynodes.h13
-rw-r--r--src/or/eventdns_tor.h2
-rw-r--r--src/or/geoip.c201
-rw-r--r--src/or/geoip.h9
-rw-r--r--src/or/hibernate.c2
-rw-r--r--src/or/hibernate.h2
-rw-r--r--src/or/include.am17
-rw-r--r--src/or/main.c49
-rw-r--r--src/or/main.h2
-rw-r--r--src/or/microdesc.c3
-rw-r--r--src/or/microdesc.h2
-rw-r--r--src/or/networkstatus.c29
-rw-r--r--src/or/networkstatus.h3
-rw-r--r--src/or/nodelist.c176
-rw-r--r--src/or/nodelist.h3
-rw-r--r--src/or/ntmain.c2
-rw-r--r--src/or/ntmain.h2
-rw-r--r--src/or/onion.c1199
-rw-r--r--src/or/onion.h120
-rw-r--r--src/or/onion_fast.c123
-rw-r--r--src/or/onion_fast.h38
-rw-r--r--src/or/onion_ntor.c295
-rw-r--r--src/or/onion_ntor.h63
-rw-r--r--src/or/onion_tap.c218
-rw-r--r--src/or/onion_tap.h37
-rw-r--r--src/or/or.h193
-rw-r--r--src/or/policies.c8
-rw-r--r--src/or/policies.h2
-rw-r--r--src/or/reasons.c9
-rw-r--r--src/or/reasons.h2
-rw-r--r--src/or/relay.c89
-rw-r--r--src/or/relay.h2
-rw-r--r--src/or/rendclient.c60
-rw-r--r--src/or/rendclient.h2
-rw-r--r--src/or/rendcommon.c4
-rw-r--r--src/or/rendcommon.h2
-rw-r--r--src/or/rendmid.c6
-rw-r--r--src/or/rendmid.h2
-rw-r--r--src/or/rendservice.c47
-rw-r--r--src/or/rendservice.h2
-rw-r--r--src/or/rephist.c25
-rw-r--r--src/or/rephist.h4
-rw-r--r--src/or/replaycache.c2
-rw-r--r--src/or/replaycache.h2
-rw-r--r--src/or/router.c265
-rw-r--r--src/or/router.h8
-rw-r--r--src/or/routerlist.c107
-rw-r--r--src/or/routerlist.h6
-rw-r--r--src/or/routerparse.c35
-rw-r--r--src/or/routerparse.h2
-rw-r--r--src/or/routerset.c43
-rw-r--r--src/or/routerset.h3
-rw-r--r--src/or/statefile.c3
-rw-r--r--src/or/statefile.h2
-rw-r--r--src/or/status.c4
-rw-r--r--src/or/status.h2
-rw-r--r--src/or/tor_main.c2
-rw-r--r--src/or/transports.c6
-rw-r--r--src/or/transports.h2
-rw-r--r--src/test/Makefile.nmake24
-rw-r--r--src/test/bench.c153
-rw-r--r--src/test/include.am23
-rw-r--r--src/test/ntor_ref.py387
-rw-r--r--src/test/test-child.c2
-rw-r--r--src/test/test.c125
-rw-r--r--src/test/test.h2
-rw-r--r--src/test/test_addr.c2
-rw-r--r--src/test/test_cell_formats.c504
-rw-r--r--src/test/test_config.c2
-rw-r--r--src/test/test_containers.c115
-rw-r--r--src/test/test_crypto.c288
-rw-r--r--src/test/test_data.c2
-rw-r--r--src/test/test_dir.c2
-rw-r--r--src/test/test_introduce.c2
-rw-r--r--src/test/test_microdesc.c2
-rw-r--r--src/test/test_ntor_cl.c166
-rw-r--r--src/test/test_pt.c2
-rw-r--r--src/test/test_replay.c2
-rw-r--r--src/test/test_util.c40
-rw-r--r--src/tools/Makefile.nmake4
-rw-r--r--src/tools/include.am6
-rw-r--r--src/tools/tor-checkkey.c2
-rw-r--r--src/tools/tor-fw-helper/tor-fw-helper-natpmp.c2
-rw-r--r--src/tools/tor-fw-helper/tor-fw-helper-natpmp.h2
-rw-r--r--src/tools/tor-fw-helper/tor-fw-helper-upnp.c2
-rw-r--r--src/tools/tor-fw-helper/tor-fw-helper-upnp.h2
-rw-r--r--src/tools/tor-fw-helper/tor-fw-helper.c2
-rw-r--r--src/tools/tor-fw-helper/tor-fw-helper.h2
-rw-r--r--src/tools/tor-gencert.c9
-rw-r--r--src/tools/tor-resolve.c2
-rw-r--r--src/win32/orconfig.h10
204 files changed, 16566 insertions, 14811 deletions
diff --git a/.gitignore b/.gitignore
index 8034ae6611..e48918d32c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,6 +24,8 @@
.dirstamp
# Stuff made by our makefiles
*.bak
+# Python droppings
+*.pyc
# /
/Makefile
@@ -47,6 +49,7 @@
/stamp-h
/stamp-h.in
/stamp-h1
+/test-driver
/tor.sh
/tor.spec
/depcomp
@@ -130,6 +133,8 @@
/src/common/libor-crypto.lib
/src/common/libor-event.a
/src/common/libor-event.lib
+/src/common/libcurve25519_donna.a
+/src/common/libcurve25519_donna.lib
# /src/config/
/src/config/Makefile
@@ -154,9 +159,10 @@
/src/test/bench.exe
/src/test/test
/src/test/test-child
+/src/test/test-ntor-cl
/src/test/test.exe
/src/test/test-child.exe
-
+/src/test/test-ntor-cl.exe
# /src/tools/
/src/tools/tor-checkkey
diff --git a/ChangeLog b/ChangeLog
index 499873052c..cd7f691e67 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,286 @@
+Changes in version 0.2.4.10-alpha - 2013-02-04
+ Tor 0.2.4.10-alpha adds defenses at the directory authority level from
+ certain attacks that flood the network with relays; changes the queue
+ for circuit create requests from a sized-based limit to a time-based
+ limit; resumes building with MSVC on Windows; and fixes a wide variety
+ of other issues.
+
+ o Major bugfixes (directory authority):
+ - When computing directory thresholds, ignore any rejected-as-sybil
+ nodes during the computation so that they can't influence Fast,
+ Guard, etc. (We should have done this for proposal 109.) Fixes
+ bug 8146.
+ - When marking a node as a likely sybil, reset its uptime metrics
+ to zero, so that it cannot time towards getting marked as Guard,
+ Stable, or HSDir. (We should have done this for proposal 109.) Fixes
+ bug 8147.
+
+ o Major bugfixes:
+ - When a TLS write is partially successful but incomplete, remember
+ that the flushed part has been flushed, and notice that bytes were
+ actually written. Reported and fixed pseudonymously. Fixes bug
+ 7708; bugfix on Tor 0.1.0.5-rc.
+ - Reject bogus create and relay cells with 0 circuit ID or 0 stream
+ ID: these could be used to create unexpected streams and circuits
+ which would count as "present" to some parts of Tor but "absent"
+ to others, leading to zombie circuits and streams or to a bandwidth
+ denial-of-service. Fixes bug 7889; bugfix on every released version
+ of Tor. Reported by "oftc_must_be_destroyed".
+ - Rename all macros in our local copy of queue.h to begin with "TOR_".
+ This change seems the only good way to permanently prevent conflicts
+ with queue.h on various operating systems. Fixes bug 8107; bugfix
+ on 0.2.4.6-alpha.
+
+ o Major features (relay):
+ - Instead of limiting the number of queued onionskins (aka circuit
+ create requests) to a fixed, hard-to-configure number, we limit
+ the size of the queue based on how many we expect to be able to
+ process in a given amount of time. We estimate the time it will
+ take to process an onionskin based on average processing time
+ of previous onionskins. Closes ticket 7291. You'll never have to
+ configure MaxOnionsPending again.
+
+ o Major features (portability):
+ - Resume building correctly with MSVC and Makefile.nmake. This patch
+ resolves numerous bugs and fixes reported by ultramage, including
+ 7305, 7308, 7309, 7310, 7312, 7313, 7315, 7316, and 7669.
+ - Make the ntor and curve25519 code build correctly with MSVC.
+ Fix on 0.2.4.8-alpha.
+
+ o Minor features:
+ - When directory authorities are computing thresholds for flags,
+ never let the threshold for the Fast flag fall below 4096
+ bytes. Also, do not consider nodes with extremely low bandwidths
+ when deciding thresholds for various directory flags. This change
+ should raise our threshold for Fast relays, possibly in turn
+ improving overall network performance; see ticket 1854. Resolves
+ ticket 8145.
+ - The Tor client now ignores sub-domain components of a .onion
+ address. This change makes HTTP "virtual" hosting
+ possible: http://foo.aaaaaaaaaaaaaaaa.onion/ and
+ http://bar.aaaaaaaaaaaaaaaa.onion/ can be two different websites
+ hosted on the same hidden service. Implements proposal 204.
+ - We compute the overhead from passing onionskins back and forth to
+ cpuworkers, and report it when dumping statistics in response to
+ SIGUSR1. Supports ticket 7291.
+
+ o Minor features (path selection):
+ - When deciding whether we have enough descriptors to build circuits,
+ instead of looking at raw relay counts, look at which fraction
+ of (bandwidth-weighted) paths we're able to build. This approach
+ keeps clients from building circuits if their paths are likely to
+ stand out statistically. The default fraction of paths needed is
+ taken from the consensus directory; you can override it with the
+ new PathsNeededToBuildCircuits option. Fixes ticket 5956.
+ - When any country code is listed in ExcludeNodes or ExcludeExitNodes,
+ and we have GeoIP information, also exclude all nodes with unknown
+ countries "??" and "A1". This behavior is controlled by the
+ new GeoIPExcludeUnknown option: you can make such nodes always
+ excluded with "GeoIPExcludeUnknown 1", and disable the feature
+ with "GeoIPExcludeUnknown 0". Setting "GeoIPExcludeUnknown auto"
+ gets you the default behavior. Implements feature 7706.
+ - Path Use Bias: Perform separate accounting for successful circuit
+ use. Keep separate statistics on stream attempt rates versus stream
+ success rates for each guard. Provide configurable thresholds to
+ determine when to emit log messages or disable use of guards that
+ fail too many stream attempts. Resolves ticket 7802.
+
+ o Minor features (log messages):
+ - When learning a fingerprint for a bridge, log its corresponding
+ transport type. Implements ticket 7896.
+ - Improve the log message when "Bug/attack: unexpected sendme cell
+ from client" occurs, to help us track bug 8093.
+
+ o Minor bugfixes:
+ - Remove a couple of extraneous semicolons that were upsetting the
+ cparser library. Patch by Christian Grothoff. Fixes bug 7115;
+ bugfix on 0.2.2.1-alpha.
+ - Remove a source of rounding error during path bias count scaling;
+ don't count cannibalized circuits as used for path bias until we
+ actually try to use them; and fix a circuit_package_relay_cell()
+ warning message about n_chan==NULL. Fixes bug 7802.
+ - Detect nacl when its headers are in a nacl/ subdirectory. Also,
+ actually link against nacl when we're configured to use it. Fixes
+ bug 7972; bugfix on 0.2.4.8-alpha.
+ - Compile correctly with the --disable-curve25519 option. Fixes
+ bug 8153; bugfix on 0.2.4.8-alpha.
+
+ o Build improvements:
+ - Do not report status verbosely from autogen.sh unless the -v flag
+ is specified. Fixes issue 4664. Patch from Onizuka.
+ - Replace all calls to snprintf() outside of src/ext with
+ tor_snprintf(). Also remove the #define to replace snprintf with
+ _snprintf on Windows; they have different semantics, and all of
+ our callers should be using tor_snprintf() anyway. Fixes bug 7304.
+ - Try to detect if we are ever building on a platform where
+ memset(...,0,...) does not set the value of a double to 0.0. Such
+ platforms are permitted by the C standard, though in practice
+ they're pretty rare (since IEEE 754 is nigh-ubiquitous). We don't
+ currently support them, but it's better to detect them and fail
+ than to perform erroneously.
+
+ o Removed features:
+ - Stop exporting estimates of v2 and v3 directory traffic shares
+ in extrainfo documents. They were unneeded and sometimes inaccurate.
+ Also stop exporting any v2 directory request statistics. Resolves
+ ticket 5823.
+ - Drop support for detecting and warning about versions of Libevent
+ before 1.3e. Nothing reasonable ships with them any longer;
+ warning the user about them shouldn't be needed. Resolves ticket
+ 6826.
+
+ o Code simplifications and refactoring:
+ - Rename "isin" functions to "contains", for grammar. Resolves
+ ticket 5285.
+ - Rename Tor's logging function log() to tor_log(), to avoid conflicts
+ with the natural logarithm function from the system libm. Resolves
+ ticket 7599.
+
+
+Changes in version 0.2.4.9-alpha - 2013-01-15
+ Tor 0.2.4.9-alpha provides a quick fix to make the new ntor handshake
+ work more robustly.
+
+ o Major bugfixes:
+ - Fix backward compatibility logic when receiving an embedded ntor
+ handshake tunneled in a CREATE cell. This clears up the "Bug:
+ couldn't format CREATED cell" warning. Fixes bug 7959; bugfix
+ on 0.2.4.8-alpha.
+
+
+Changes in version 0.2.4.8-alpha - 2013-01-14
+ Tor 0.2.4.8-alpha introduces directory guards to reduce user enumeration
+ risks, adds a new stronger and faster circuit handshake, and offers
+ stronger and faster link encryption when both sides support it.
+
+ o Major features:
+ - Preliminary support for directory guards (proposal 207): when
+ possible, clients now use their entry guards for non-anonymous
+ directory requests. This can help prevent client enumeration. Note
+ that this behavior only works when we have a usable consensus
+ directory, and when options about what to download are more or less
+ standard. In the future we should re-bootstrap from our guards,
+ rather than re-bootstrapping from the preconfigured list of
+ directory sources that ships with Tor. Resolves ticket 6526.
+ - Tor relays and clients now support a better CREATE/EXTEND cell
+ format, allowing the sender to specify multiple address, identity,
+ and handshake types. Implements Robert Ransom's proposal 200;
+ closes ticket 7199.
+
+ o Major features (new circuit handshake):
+ - Tor now supports a new circuit extension handshake designed by Ian
+ Goldberg, Douglas Stebila, and Berkant Ustaoglu. Our original
+ circuit extension handshake, later called "TAP", was a bit slow
+ (especially on the relay side), had a fragile security proof, and
+ used weaker keys than we'd now prefer. The new circuit handshake
+ uses Dan Bernstein's "curve25519" elliptic-curve Diffie-Hellman
+ function, making it significantly more secure than the older
+ handshake, and significantly faster. Tor can use one of two built-in
+ pure-C curve25519-donna implementations by Adam Langley, or it
+ can link against the "nacl" library for a tuned version if present.
+
+ The built-in version is very fast for 64-bit systems when building
+ with GCC. The built-in 32-bit version is still faster than the
+ old TAP protocol, but using libnacl is better on most such hosts.
+
+ Clients don't currently use this protocol by default, since
+ comparatively few clients support it so far. To try it, set
+ UseNTorHandshake to 1.
+
+ Implements proposal 216; closes ticket 7202.
+
+ o Major features (better link encryption):
+ - Relays can now enable the ECDHE TLS ciphersuites when available
+ and appropriate. These ciphersuites let us negotiate forward-secure
+ TLS secret keys more safely and more efficiently than with our
+ previous use of Diffie-Hellman modulo a 1024-bit prime. By default,
+ public relays prefer the (faster) P224 group, and bridges prefer
+ the (more common) P256 group; you can override this with the
+ TLSECGroup option.
+
+ Enabling these ciphers was a little tricky, since for a long time,
+ clients had been claiming to support them without actually doing
+ so, in order to foil fingerprinting. But with the client-side
+ implementation of proposal 198 in 0.2.3.17-beta, clients can now
+ match the ciphers from recent Firefox versions *and* list the
+ ciphers they actually mean, so relays can believe such clients
+ when they advertise ECDHE support in their TLS ClientHello messages.
+
+ This feature requires clients running 0.2.3.17-beta or later,
+ and requires both sides to be running OpenSSL 1.0.0 or later
+ with ECC support. OpenSSL 1.0.1, with the compile-time option
+ "enable-ec_nistp_64_gcc_128", is highly recommended.
+
+ Implements the relay side of proposal 198; closes ticket 7200.
+
+ o Major bugfixes:
+ - Avoid crashing when, as a relay without IPv6-exit support, a
+ client insists on getting an IPv6 address or nothing. Fixes bug
+ 7814; bugfix on 0.2.4.7-alpha.
+
+ o Minor features:
+ - Improve circuit build timeout handling for hidden services.
+ In particular: adjust build timeouts more accurately depending
+ upon the number of hop-RTTs that a particular circuit type
+ undergoes. Additionally, launch intro circuits in parallel
+ if they timeout, and take the first one to reply as valid.
+ - Work correctly on Unix systems where EAGAIN and EWOULDBLOCK are
+ separate error codes; or at least, don't break for that reason.
+ Fixes bug 7935. Reported by "oftc_must_be_destroyed".
+ - Update to the January 2 2013 Maxmind GeoLite Country database.
+
+ o Minor features (testing):
+ - Add benchmarks for DH (1024-bit multiplicative group) and ECDH
+ (P-256) Diffie-Hellman handshakes to src/or/bench.
+ - Add benchmark functions to test onion handshake performance.
+
+ o Minor features (path bias detection):
+ - Alter the Path Bias log messages to be more descriptive in terms
+ of reporting timeouts and other statistics.
+ - Create three levels of Path Bias log messages, as opposed to just
+ two. These are configurable via consensus as well as via the torrc
+ options PathBiasNoticeRate, PathBiasWarnRate, PathBiasExtremeRate.
+ The default values are 0.70, 0.50, and 0.30 respectively.
+ - Separate the log message levels from the decision to drop guards,
+ which also is available via torrc option PathBiasDropGuards.
+ PathBiasDropGuards still defaults to 0 (off).
+ - Deprecate PathBiasDisableRate in favor of PathBiasDropGuards
+ in combination with PathBiasExtremeRate.
+ - Increase the default values for PathBiasScaleThreshold and
+ PathBiasCircThreshold from (200, 20) to (300, 150).
+ - Add in circuit usage accounting to path bias. If we try to use a
+ built circuit but fail for any reason, it counts as path bias.
+ Certain classes of circuits where the adversary gets to pick your
+ destination node are exempt from this accounting. Usage accounting
+ can be specifically disabled via consensus parameter or torrc.
+ - Convert all internal path bias state to double-precision floating
+ point, to avoid roundoff error and other issues.
+ - Only record path bias information for circuits that have completed
+ *two* hops. Assuming end-to-end tagging is the attack vector, this
+ makes us more resilient to ambient circuit failure without any
+ detection capability loss.
+
+ o Minor bugfixes (log messages):
+ - Rate-limit the "No circuits are opened. Relaxed timeout for a
+ circuit with channel state open..." message to once per hour to
+ keep it from filling the notice logs. Mitigates bug 7799 but does
+ not fix the underlying cause. Bugfix on 0.2.4.7-alpha.
+ - Avoid spurious warnings when configuring multiple client ports of
+ which only some are nonlocal. Previously, we had claimed that some
+ were nonlocal when in fact they weren't. Fixes bug 7836; bugfix on
+ 0.2.3.3-alpha.
+
+ o Code simplifications and refactoring:
+ - Get rid of a couple of harmless clang warnings, where we compared
+ enums to ints. These warnings are newly introduced in clang 3.2.
+ - Split the onion.c file into separate modules for the onion queue
+ and the different handshakes it supports.
+ - Remove the marshalling/unmarshalling code for sending requests to
+ cpuworkers over a socket, and instead just send structs. The
+ recipient will always be the same Tor binary as the sender, so
+ any encoding is overkill.
+
+
Changes in version 0.2.4.7-alpha - 2012-12-24
Tor 0.2.4.7-alpha introduces a new approach to providing fallback
directory mirrors for more robust bootstrapping; fixes more issues where
diff --git a/LICENSE b/LICENSE
index 3058377a5a..4ed3bd8da8 100644
--- a/LICENSE
+++ b/LICENSE
@@ -13,7 +13,7 @@ Tor is distributed under this license:
Copyright (c) 2001-2004, Roger Dingledine
Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson
-Copyright (c) 2007-2012, The Tor Project, Inc.
+Copyright (c) 2007-2013, The Tor Project, Inc.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
diff --git a/Makefile.nmake b/Makefile.nmake
index 425f1ec262..a0a11ebdb9 100644
--- a/Makefile.nmake
+++ b/Makefile.nmake
@@ -3,3 +3,13 @@ all:
$(MAKE) /F Makefile.nmake
cd ../../src/or
$(MAKE) /F Makefile.nmake
+ cd ../../src/test
+ $(MAKE) /F Makefile.nmake
+
+clean:
+ cd src/common
+ $(MAKE) /F Makefile.nmake clean
+ cd ../../src/or
+ $(MAKE) /F Makefile.nmake clean
+ cd ../../src/test
+ $(MAKE) /F Makefile.nmake clean
diff --git a/acinclude.m4 b/acinclude.m4
index 5ea3097cea..af1505156c 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -2,7 +2,7 @@ dnl Helper macros for Tor configure.ac
dnl Copyright (c) 2001-2004, Roger Dingledine
dnl Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson
dnl Copyright (c) 2007-2008, Roger Dingledine, Nick Mathewson
-dnl Copyright (c) 2007-2012, The Tor Project, Inc.
+dnl Copyright (c) 2007-2013, The Tor Project, Inc.
dnl See LICENSE for licensing information
AC_DEFUN([TOR_EXTEND_CODEPATH],
diff --git a/autogen.sh b/autogen.sh
index 0592f16c2e..efa2251c24 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -1,7 +1,17 @@
#!/bin/sh
if [ -x "`which autoreconf 2>/dev/null`" ] ; then
- exec autoreconf -ivf
+ opt="-if"
+
+ for i in $@; do
+ case "$i" in
+ -v)
+ opt=$opt"v"
+ ;;
+ esac
+ done
+
+ exec autoreconf $opt
fi
set -e
diff --git a/changes/bug7054 b/changes/bug7054
new file mode 100644
index 0000000000..15680d72ce
--- /dev/null
+++ b/changes/bug7054
@@ -0,0 +1,4 @@
+ o Minor bugfixes (man page):
+ - Say "KBytes" rather than "KB" in the man page (for various values
+ of K), to further reduce confusion about whether Tor counts in
+ units of memory or fractions of units of memory. Fixes bug 7054.
diff --git a/changes/bug7157 b/changes/bug7157
deleted file mode 100644
index 4f0e3b3fcb..0000000000
--- a/changes/bug7157
+++ /dev/null
@@ -1,26 +0,0 @@
-
- o Minor features:
- - Alter the Path Bias log messages to be more descriptive in terms
- of reporting timeouts and other statistics.
- - Create three levels of Path Bias log messages, as opposed to just
- two. These are configurable via consensus as well as via torrc
- options PathBiasNoticeRate, PathBiasWarnRate, PathBiasExtremeRate.
- The default values are 0.70, 0.50, and 0.30 respectively.
- - Separate the log message levels from the decision to drop guards,
- which also is available via torrc option PathBiasDropGuards.
- PathBiasDropGuards defaults to 0 (off).
- - Deprecate PathBiasDisableRate in favor of PathBiasDropGuards
- in combination with PathBiasExtremeRate.
- - Increase the default values for PathBiasScaleThreshold and
- PathBiasCircThreshold from 200 and 20 to 300 and 150, respectively.
- - Add in circuit usage accounting to path bias. If we try to use a
- built circuit but fail for any reason, it counts as path bias.
- Certain classes of circuits where the adversary gets to pick your
- destination node are exempt from this accounting. Usage accounting
- can be specifically disabled via consensus parameter or torrc.
- - Convert all internal path bias state to double-precision floating
- point, to avoid roundoff error and other issues.
- - Only record path bias information for circuits that have completed
- *two* hops. Assuming end-to-end tagging is the attack vector, this
- makes us more resilient to ambient circuit failure without any
- detection capability loss.
diff --git a/changes/bug7799.ratelim b/changes/bug7799.ratelim
deleted file mode 100644
index cb7742c5da..0000000000
--- a/changes/bug7799.ratelim
+++ /dev/null
@@ -1,6 +0,0 @@
- o Minor bugfixes:
- - Rate-limit the "No circuits are opened. Relaxed timeout for a
- circuit with channel state open..." message to once per hour to
- keep it from filling the notice logs. Mitigates bug 7799 but does
- not fix the underlying cause. Bugfix on 0.2.4.7-alpha.
-
diff --git a/changes/bug7816.024 b/changes/bug7816.024
new file mode 100644
index 0000000000..b5d55f5d6d
--- /dev/null
+++ b/changes/bug7816.024
@@ -0,0 +1,8 @@
+ o Minor bugfixes:
+ - Avoid leaking IPv6 policy content if we fail to format it into
+ a router descriptor. Spotted by Coverity. Fixes part of 7816;
+ bugfix on 0.2.4.7-alpha.
+
+ - Avoid leaking memory if we fail to compute a consensus signature
+ or we generated a consensus we couldn't parse. Spotted by Coverity.
+ Fixes part of 7816; bugfix on 0.2.0.5-alpha.
diff --git a/changes/bug7816_023 b/changes/bug7816_023
new file mode 100644
index 0000000000..a4530292cc
--- /dev/null
+++ b/changes/bug7816_023
@@ -0,0 +1,7 @@
+ o Minor bugfixes (memory leak, controller):
+ - Fix a memory leak during safe-cookie controller authentication.
+ Spotted by Coverity. Fixes part of bug 7816; bugfix on 0.2.3.13-alpha.
+
+ o Minor bugfixes (memory leak, HTTPS proxy support):
+ - Fix a memory leak when receiving headers from an HTTPS proxy.
+ Spotted by Coverity. Fixes part of bug 7816; bugfix on 0.2.1.1-alpha.
diff --git a/changes/bug7816_023_small b/changes/bug7816_023_small
new file mode 100644
index 0000000000..cd90f035f1
--- /dev/null
+++ b/changes/bug7816_023_small
@@ -0,0 +1,3 @@
+ o Minor bugfixes:
+ - Fix various places where we leak file descriptors or memory on
+ error cases. Spotted by coverity. Fixes parts of bug 7816.
diff --git a/changes/bug7902 b/changes/bug7902
new file mode 100644
index 0000000000..051759dc0a
--- /dev/null
+++ b/changes/bug7902
@@ -0,0 +1,7 @@
+ o Minor bugfixes:
+ - When we receive a RELAY_END cell with the reason DONE, or with no
+ reason, before receiving a RELAY_CONNECTED cell, report the SOCKS
+ status as "connection refused." Previously we reporting these
+ cases as success but then immediately closing the connection.
+ Fixes bug 7902; bugfix on 0.1.0.1-rc. Reported by "oftc_must_
+ be_destroyed."
diff --git a/changes/bug8121 b/changes/bug8121
new file mode 100644
index 0000000000..60cba72848
--- /dev/null
+++ b/changes/bug8121
@@ -0,0 +1,7 @@
+ o Minor features:
+ - Clear the high bit on curve25519 public keys before passing them to
+ our backend, in case we ever wind up using a backend that doesn't do
+ so itself. If we used such a backend, and *didn't* clear the high bit,
+ we could wind up in a situation where users with such backends would
+ be distinguishable from users without. Fix for bug 8121; bugfix on
+ 0.2.4.8-alpha.
diff --git a/changes/bug8151 b/changes/bug8151
new file mode 100644
index 0000000000..e20fa3c31a
--- /dev/null
+++ b/changes/bug8151
@@ -0,0 +1,5 @@
+ o Minor features (directory authority):
+ - Include inside each vote a statement of the performance
+ thresholds that made the authority vote for its flags. Implements
+ ticket 8151.
+ \ No newline at end of file
diff --git a/changes/bug8161 b/changes/bug8161
new file mode 100644
index 0000000000..ab7b9c0cad
--- /dev/null
+++ b/changes/bug8161
@@ -0,0 +1,6 @@
+ o Minor changes:
+ - Lower path use bias thresholds to .80 for notice and .60 for warn.
+ Fixes bug #8161; bugfix on 0.2.4.10-alpa.
+ - Make the rate limiting flags for the path use bias log messages
+ independent from the original path bias flags. Fixes bug #8161;
+ bugfix on 0.2.4.10-alpha.
diff --git a/changes/dh_benchmarks b/changes/dh_benchmarks
deleted file mode 100644
index 2301995a74..0000000000
--- a/changes/dh_benchmarks
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor features (testing):
- - Add benchmarks for DH (1024-bit multiplicative group) and ECDH
- (P-256) diffie-hellman handshakes to src/or/bench.
diff --git a/changes/dirguards b/changes/dirguards
deleted file mode 100644
index 942ae6c24f..0000000000
--- a/changes/dirguards
+++ /dev/null
@@ -1,8 +0,0 @@
- o Major features:
- - Preliminary support for directory guards: when possible,
- clients now use guards for non-anonymous directory requests.
- This can help prevent client enumeration. Note that this
- behavior only works when we have a usable consensus directory:
- and when options about what to download are more or less
- standard. Implements proposal 207; closes ticket 6526.
-
diff --git a/changes/tls_ecdhe b/changes/tls_ecdhe
deleted file mode 100644
index 48c6384dad..0000000000
--- a/changes/tls_ecdhe
+++ /dev/null
@@ -1,26 +0,0 @@
- o Major features:
-
- - Servers can now enable the ECDHE TLS ciphersuites when available
- and appropriate. These ciphersuites let us negotiate forward-
- secure TLS secret keys more safely and more efficiently than with
- our previous use of Diffie Hellman modulo a 1024-bit prime.
- By default, public servers prefer the (faster) P224 group, and
- bridges prefer the (more common) P256 group; you can override this
- with the TLSECGroup option.
-
- Enabling these ciphers was a little tricky, since for a long
- time, clients had been claiming to support them without
- actually doing so, in order to foil fingerprinting. But with
- the client-side implementation of proposal 198 in
- 0.2.3.17-beta, clients can now match the ciphers from recent
- firefox versions *and* list the ciphers they actually mean, so
- servers can believe such clients when they advertise ECDHE
- support in their TLS ClientHello messages.
-
- This feature requires clients running 0.2.3.17-beta or later,
- and requires both sides to be running OpenSSL 1.0.0 or later
- with ECC support. OpenSSL 1.0.1, with the compile-time option
- "enable-ec_nistp_64_gcc_128", is highly recommended.
- Implements the server side of proposal 198; closes ticket
- 7200.
-
diff --git a/configure.ac b/configure.ac
index df56efd5e8..c27cbd2c85 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,9 +1,9 @@
dnl Copyright (c) 2001-2004, Roger Dingledine
dnl Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson
-dnl Copyright (c) 2007-2012, The Tor Project, Inc.
+dnl Copyright (c) 2007-2013, The Tor Project, Inc.
dnl See LICENSE for licensing information
-AC_INIT([tor],[0.2.4.7-alpha-dev])
+AC_INIT([tor],[0.2.4.10-alpha-dev])
AC_CONFIG_SRCDIR([src/or/main.c])
AM_INIT_AUTOMAKE
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
@@ -36,6 +36,8 @@ AC_ARG_ENABLE(static-zlib,
AS_HELP_STRING(--enable-static-zlib, Link against a static zlib library. Requires --with-zlib-dir))
AC_ARG_ENABLE(static-tor,
AS_HELP_STRING(--enable-static-tor, Create an entirely static Tor binary. Requires --with-openssl-dir and --with-libevent-dir and --with-zlib-dir))
+AC_ARG_ENABLE(curve25519,
+ AS_HELP_STRING(--disable-curve25519, Build Tor with no curve25519 elliptic-curve crypto support))
if test "$enable_static_tor" = "yes"; then
enable_static_libevent="yes";
@@ -639,6 +641,110 @@ if test "$upnp" = "true"; then
fi
fi
+dnl ============================================================
+dnl We need an implementation of curve25519.
+
+dnl set these defaults.
+have_a_curve25519=no
+build_curve25519_donna=no
+build_curve25519_donna_c64=no
+use_curve25519_donna=no
+use_curve25519_nacl=no
+CURVE25519_LIBS=
+
+if test x$enable_curve25519 != xno; then
+
+ dnl The best choice is using curve25519-donna-c64, but that requires
+ dnl that we
+ AC_CACHE_CHECK([whether we can use curve25519-donna-c64],
+ tor_cv_can_use_curve25519_donna_c64,
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM([dnl
+ #include <stdint.h>
+ typedef unsigned uint128_t __attribute__((mode(TI)));
+ ], [dnl
+ uint64_t a = ((uint64_t)2000000000) * 1000000000;
+ uint64_t b = ((uint64_t)1234567890) << 24;
+ uint128_t c = ((uint128_t)a) * b;
+ return ((uint64_t)(c>>96)) == 522859 &&
+ ((uint64_t)(c>>64))&0xffffffffL == 3604448702L &&
+ ((uint64_t)(c>>32))&0xffffffffL == 2351960064L &&
+ ((uint64_t)(c))&0xffffffffL == 0;
+ ])],
+ [tor_cv_can_use_curve25519_donna_c64=yes],
+ [tor_cv_can_use_curve25519_donna_c64=no],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([dnl
+ #include <stdint.h>
+ typedef unsigned uint128_t __attribute__((mode(TI)));
+ ], [dnl
+ uint64_t a = ((uint64_t)2000000000) * 1000000000;
+ uint64_t b = ((uint64_t)1234567890) << 24;
+ uint128_t c = ((uint128_t)a) * b;
+ return ((uint64_t)(c>>96)) == 522859 &&
+ ((uint64_t)(c>>64))&0xffffffffL == 3604448702L &&
+ ((uint64_t)(c>>32))&0xffffffffL == 2351960064L &&
+ ((uint64_t)(c))&0xffffffffL == 0;
+ ])],
+ [tor_cv_can_use_curve25519_donna_c64=cross],
+ [tor_cv_can_use_curve25519_donna_c64=no])])])
+
+ AC_CHECK_HEADERS([crypto_scalarmult_curve25519.h \
+ nacl/crypto_scalarmult_curve25519.h])
+
+ AC_CACHE_CHECK([whether we can use curve25519 from nacl],
+ tor_cv_can_use_curve25519_nacl,
+ [tor_saved_LIBS="$LIBS"
+ LIBS="$LIBS -lnacl"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([dnl
+ #ifdef HAVE_CRYPTO_SCALARMULT_CURVE25519_H
+ #include <crypto_scalarmult_curve25519.h>
+ #elif defined(HAVE_NACL_CRYPTO_SCALARMULT_CURVE25519_H)
+ #include <nacl/crypto_scalarmult_curve25519.h>
+ #endif
+ #ifdef crypto_scalarmult_curve25519_ref_BYTES
+ #error Hey, this is the reference implementation!
+ #endif
+ ], [
+ unsigned char *a, *b, *c; crypto_scalarmult_curve25519(a,b,c);
+ ])], [tor_cv_can_use_curve25519_nacl=yes],
+ [tor_cv_can_use_curve25519_nacl=no])
+ LIBS="$tor_saved_LIBS" ])
+
+ dnl Okay, now we need to figure out which one to actually use. Fall back
+ dnl to curve25519-donna.c
+
+ if test x$tor_cv_can_use_curve25519_donna_c64 != xno; then
+ build_curve25519_donna_c64=yes
+ use_curve25519_donna=yes
+ elif test x$tor_cv_can_use_curve25519_nacl = xyes; then
+ use_curve25519_nacl=yes
+ CURVE25519_LIBS=-lnacl
+ else
+ build_curve25519_donna=yes
+ use_curve25519_donna=yes
+ fi
+ have_a_curve25519=yes
+fi
+
+if test x$have_a_curve25519 = xyes; then
+ AC_DEFINE(CURVE25519_ENABLED, 1,
+ [Defined if we have a curve25519 implementation])
+fi
+if test x$use_curve25519_donna = xyes; then
+ AC_DEFINE(USE_CURVE25519_DONNA, 1,
+ [Defined if we should use an internal curve25519_donna{,_c64} implementation])
+fi
+if test x$use_curve25519_nacl = xyes; then
+ AC_DEFINE(USE_CURVE25519_NACL, 1,
+ [Defined if we should use a curve25519 from nacl])
+fi
+AM_CONDITIONAL(BUILD_CURVE25519_DONNA, test x$build_curve25519_donna = xyes)
+AM_CONDITIONAL(BUILD_CURVE25519_DONNA_C64, test x$build_curve25519_donna_c64 = xyes)
+AM_CONDITIONAL(CURVE25519_ENABLED, test x$have_a_curve25519 = xyes)
+AC_SUBST(CURVE25519_LIBS)
+
dnl Make sure to enable support for large off_t if available.
AC_SYS_LARGEFILE
@@ -927,6 +1033,30 @@ if test "$tor_cv_null_is_zero" != no; then
[Define to 1 iff memset(0) sets pointers to NULL])
fi
+AC_CACHE_CHECK([whether memset(0) sets doubles to 0.0], tor_cv_dbl0_is_zero,
+[AC_RUN_IFELSE([AC_LANG_SOURCE(
+[[#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#ifdef HAVE_STDDEF_H
+#include <stddef.h>
+#endif
+int main () { double d1,d2; d1=0; memset(&d2,0,sizeof(d2));
+return memcmp(&d1,&d2,sizeof(d1))?1:0; }]])],
+ [tor_cv_dbl0_is_zero=yes],
+ [tor_cv_dbl0_is_zero=no],
+ [tor_cv_dbl0_is_zero=cross])])
+
+if test "$tor_cv_dbl0_is_zero" = cross ; then
+ # Cross-compiling; let's hope that the target isn't raving mad.
+ AC_MSG_NOTICE([Cross-compiling: we'll assume that 0.0 can be represented as a sequence of 0-valued bytes.])
+fi
+
+if test "$tor_cv_dbl0_is_zero" != no; then
+ AC_DEFINE([DOUBLE_0_REP_IS_ZERO_BYTES], 1,
+ [Define to 1 iff memset(0) sets doubles to 0.0])
+fi
+
# And what happens when we malloc zero?
AC_CACHE_CHECK([whether we can malloc(0) safely.], tor_cv_malloc_zero_works,
[AC_RUN_IFELSE([AC_LANG_SOURCE(
diff --git a/contrib/redox.py b/contrib/redox.py
index 43200dd076..e9914dab18 100755
--- a/contrib/redox.py
+++ b/contrib/redox.py
@@ -1,6 +1,6 @@
#!/usr/bin/python
#
-# Copyright (c) 2008-2012 The Tor Project, Inc.
+# Copyright (c) 2008-2013, The Tor Project, Inc.
# See LICENSE for licensing information.
#
# Hi!
diff --git a/contrib/tor-mingw.nsi.in b/contrib/tor-mingw.nsi.in
index af70dbbb83..d5379bd578 100644
--- a/contrib/tor-mingw.nsi.in
+++ b/contrib/tor-mingw.nsi.in
@@ -8,7 +8,7 @@
!include "LogicLib.nsh"
!include "FileFunc.nsh"
!insertmacro GetParameters
-!define VERSION "0.2.4.7-alpha-dev"
+!define VERSION "0.2.4.10-alpha-dev"
!define INSTALLER "tor-${VERSION}-win32.exe"
!define WEBSITE "https://www.torproject.org/"
!define LICENSE "LICENSE"
diff --git a/doc/tor.1.txt b/doc/tor.1.txt
index 08da24d3c8..b1e758f552 100644
--- a/doc/tor.1.txt
+++ b/doc/tor.1.txt
@@ -124,42 +124,42 @@ option name with a forward slash.
GENERAL OPTIONS
---------------
-**BandwidthRate** __N__ **bytes**|**KB**|**MB**|**GB**::
+**BandwidthRate** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**::
A token bucket limits the average incoming bandwidth usage on this node to
the specified number of bytes per second, and the average outgoing
bandwidth usage to that same value. If you want to run a relay in the
- public network, this needs to be _at the very least_ 30 KB (that is,
- 30720 bytes). (Default: 1 GB)
+ public network, this needs to be _at the very least_ 30 KBytes (that is,
+ 30720 bytes). (Default: 1 GByte)
-**BandwidthBurst** __N__ **bytes**|**KB**|**MB**|**GB**::
+**BandwidthBurst** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**::
Limit the maximum token bucket size (also known as the burst) to the given
- number of bytes in each direction. (Default: 1 GB)
+ number of bytes in each direction. (Default: 1 GByte)
-**MaxAdvertisedBandwidth** __N__ **bytes**|**KB**|**MB**|**GB**::
+**MaxAdvertisedBandwidth** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**::
If set, we will not advertise more than this amount of bandwidth for our
BandwidthRate. Server operators who want to reduce the number of clients
who ask to build circuits through them (since this is proportional to
advertised bandwidth rate) can thus reduce the CPU demands on their server
without impacting network performance.
-**RelayBandwidthRate** __N__ **bytes**|**KB**|**MB**|**GB**::
+**RelayBandwidthRate** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**::
If not 0, a separate token bucket limits the average incoming bandwidth
usage for \_relayed traffic_ on this node to the specified number of bytes
per second, and the average outgoing bandwidth usage to that same value.
Relayed traffic currently is calculated to include answers to directory
requests, but that may change in future versions. (Default: 0)
-**RelayBandwidthBurst** __N__ **bytes**|**KB**|**MB**|**GB**::
+**RelayBandwidthBurst** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**::
If not 0, limit the maximum token bucket size (also known as the burst) for
\_relayed traffic_ to the given number of bytes in each direction.
(Default: 0)
-**PerConnBWRate** __N__ **bytes**|**KB**|**MB**|**GB**::
+**PerConnBWRate** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**::
If set, do separate rate limiting for each connection from a non-relay.
You should never need to change this value, since a network-wide value is
published in the consensus and your relay will use that value. (Default: 0)
-**PerConnBWBurst** __N__ **bytes**|**KB**|**MB**|**GB**::
+**PerConnBWBurst** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**::
If set, do separate rate limiting for each connection from a non-relay.
You should never need to change this value, since a network-wide value is
published in the consensus and your relay will use that value. (Default: 0)
@@ -222,7 +222,7 @@ GENERAL OPTIONS
the TCP stream and will reduce throughput in proportion to round trip
time on long paths. (Default: 0)
-**ConstrainedSockSize** __N__ **bytes**|**KB**::
+**ConstrainedSockSize** __N__ **bytes**|**KBytes**::
When **ConstrainedSockets** is enabled the receive and transmit buffers for
all sockets will be set to this limit. Must be a value between 2048 and
262144, in 1024 byte increments. Default of 8192 is recommended.
@@ -679,7 +679,11 @@ The following options are useful only for clients (that is, if
Note also that if you are a relay, this (and the other node selection
options below) only affects your own circuits that Tor builds for you.
Clients can still build circuits through you to any node. Controllers
- can tell Tor to build circuits through any node.
+ can tell Tor to build circuits through any node. +
+ +
+ Country codes are case-insensitive. The code "\{??}" refers to nodes whose
+ country can't be identified. No country code, including \{??}, works if
+ no GeoIPFile can be loaded. See also the GeoIPExcludeUnknown option below.
**ExcludeExitNodes** __node__,__node__,__...__::
@@ -689,6 +693,14 @@ The following options are useful only for clients (that is, if
node listed in ExcludeNodes is automatically considered to be part of this
list too. See also the caveats on the "ExitNodes" option below.
+**GeoIPExcludeUnknown** **0**|**1**|**auto**::
+ If this option is set to 'auto', then whenever any country code is set in
+ ExcludeNodes or ExcludeEntryNodes, all nodes with unknown country (\{??} and
+ possibly \{A1}) are treated as excluded as well. If this option is set to
+ '1', then all unknown countries are treated as excluded in ExcludeNodes
+ and ExcludeEntryNodes. This option has no effect when a GeoIP file isn't
+ configured or can't be found. (Default: auto)
+
**ExitNodes** __node__,__node__,__...__::
A list of identity fingerprints, nicknames, country codes and address
patterns of nodes to use as exit node---that is, a
@@ -1218,6 +1230,16 @@ The following options are useful only for clients (that is, if
"auto" (recommended) then it is on for all clients that do not set
FetchUselessDescriptors. (Default: auto)
+**UseNTorHandshake** **0**|**1**|**auto**::
+ The "ntor" circuit-creation handshake is faster and (we think) more
+ secure than the original ("TAP") circuit handshake, but starting to use
+ it too early might make your client stand out. If this option is 0, your
+ Tor client won't use the ntor handshake. If it's 1, your Tor client
+ will use the ntor handshake to extend circuits through servers that
+ support it. If this option is "auto" (recommended), then your client
+ will use the ntor handshake once enough directory authorities recommend
+ it. (Default: auto)
+
**PathBiasCircThreshold** __NUM__ +
**PathBiasNoticeRate** __NUM__ +
@@ -1228,20 +1250,11 @@ The following options are useful only for clients (that is, if
**PathBiasDropGuards** __NUM__ +
-**PathBiasScaleThreshold** __NUM__ +
-
-**PathBiasMultFactor** __NUM__ +
-
-**PathBiasScaleFactor** __NUM__ +
-
-**PathBiasUseCloseCounts** __NUM__::
+**PathBiasScaleThreshold** __NUM__::
These options override the default behavior of Tor's (**currently
experimental**) path bias detection algorithm. To try to find broken or
misbehaving guard nodes, Tor looks for nodes where more than a certain
- fraction of circuits through that guard fail to get built. If
- PathBiasUseCloseCounts is set to 1 (the default), usage-based accounting is
- performed, and circuits that fail to carry streams are also counted as
- failures. +
+ fraction of circuits through that guard fail to get built.
+
The PathBiasCircThreshold option controls how many circuits we need to build
through a guard before we make these checks. The PathBiasNoticeRate,
@@ -1251,14 +1264,35 @@ The following options are useful only for clients (that is, if
is set to 1, we disable use of that guard. +
+
When we have seen more than PathBiasScaleThreshold
- circuits through a guard, we scale our observations by
- PathBiasMultFactor/PathBiasScaleFactor, so that new observations don't get
- swamped by old ones. +
+ circuits through a guard, we scale our observations by 0.5 (governed by
+ the consensus) so that new observations don't get swamped by old ones. +
+
By default, or if a negative value is provided for one of these options,
Tor uses reasonable defaults from the networkstatus consensus document.
If no defaults are available there, these options default to 150, .70,
- .50, .30, 0, 300, 1, and 2 respectively.
+ .50, .30, 0, and 300 respectively.
+
+**PathBiasUseThreshold** __NUM__ +
+
+**PathBiasNoticeUseRate** __NUM__ +
+
+**PathBiasExtremeUseRate** __NUM__ +
+
+**PathBiasScaleUseThreshold** __NUM__::
+ Similar to the above options, these options override the default behavior
+ of Tor's (**currently experimental**) path use bias detection algorithm.
+ +
+ Where as the path bias parameters govern thresholds for successfully
+ building circuits, these four path use bias parameters govern thresholds
+ only for circuit usage. Circuits which receive no stream usage
+ are not counted by this detection algorithm. A used circuit is considered
+ successful if it is capable of carrying streams or otherwise receiving
+ well-formed responses to RELAY cells.
+ +
+ By default, or if a negative value is provided for one of these options,
+ Tor uses reasonable defaults from the networkstatus consensus document.
+ If no defaults are available there, these options default to 20, .80,
+ .60, and 100, respectively.
**ClientUseIPv6** **0**|**1**::
If this option is set to 1, Tor might connect to entry nodes over
@@ -1272,6 +1306,18 @@ The following options are useful only for clients (that is, if
things may influence the choice. This option breaks a tie to the
favor of IPv6. (Default: 0)
+**PathsNeededToBuildCircuits** __NUM__::
+ Tor clients don't build circuits for user traffic until they know
+ about enough of the network so that they could potentially construct
+ enough of the possible paths through the network. If this option
+ is set to a fraction between 0.25 and 0.95, Tor won't build circuits
+ until it has enough descriptors or microdescriptors to construct
+ that fraction of possible paths. Note that setting this option too low
+ can make your Tor client less anonymous, and setting it too high can
+ prevent your Tor client from bootstrapping. If this option is negative,
+ Tor will use a default value chosen by the directory
+ authorities. (Default: -1.)
+
SERVER OPTIONS
--------------
@@ -1366,9 +1412,9 @@ is non-zero):
If set, and we are an exit node, allow clients to use us for IPv6
traffic. (Default: 0)
-**MaxOnionsPending** __NUM__::
- If you have more than this number of onionskins queued for decrypt, reject
- new ones. (Default: 100)
+**MaxOnionQueueDelay** __NUM__ [**msec**|**second**]::
+ If we have more onionskins queued for processing than we can process in
+ this amount of time, reject new ones. (Default: 1750 msec)
**MyFamily** __node__,__node__,__...__::
Declare that this Tor server is controlled or administered by a group or
@@ -1461,14 +1507,14 @@ is non-zero):
server is still alive and doing useful things. Settings this
to 0 will disable the heartbeat. (Default: 6 hours)
-**AccountingMax** __N__ **bytes**|**KB**|**MB**|**GB**|**TB**::
+**AccountingMax** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**|**TBytes**::
Never send more than the specified number of bytes in a given accounting
period, or receive more than that number in the period. For example, with
- AccountingMax set to 1 GB, a server could send 900 MB and receive 800 MB
- and continue running. It will only hibernate once one of the two reaches 1
- GB. When the number of bytes gets low, Tor will stop accepting new
- connections and circuits. When the number of bytes
- is exhausted, Tor will hibernate until some
+ AccountingMax set to 1 GByte, a server could send 900 MBytes and
+ receive 800 MBytes and continue running. It will only hibernate once
+ one of the two reaches 1 GByte. When the number of bytes gets low,
+ Tor will stop accepting new connections and circuits. When the
+ number of bytes is exhausted, Tor will hibernate until some
time in the next accounting period. To prevent all servers from waking at
the same time, Tor will also wait until a random point in each period
before waking up. If you have bandwidth cost issues, enabling hibernation
@@ -1783,15 +1829,15 @@ DIRECTORY AUTHORITY SERVER OPTIONS
Authoritative directories only. Like AuthDirMaxServersPerAddr, but applies
to addresses shared with directory authorities. (Default: 5)
-**AuthDirFastGuarantee** __N__ **bytes**|**KB**|**MB**|**GB**::
+**AuthDirFastGuarantee** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**::
Authoritative directories only. If non-zero, always vote the
Fast flag for any relay advertising this amount of capacity or
- more. (Default: 100 KB)
+ more. (Default: 100 KBytes)
-**AuthDirGuardBWGuarantee** __N__ **bytes**|**KB**|**MB**|**GB**::
+**AuthDirGuardBWGuarantee** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**::
Authoritative directories only. If non-zero, this advertised capacity
or more is always sufficient to satisfy the bandwidth requirement
- for the Guard flag. (Default: 250 KB)
+ for the Guard flag. (Default: 250 KBytes)
**BridgePassword** __Password__::
If set, contains an HTTP authenticator that tells a bridge authority to
diff --git a/src/common/Makefile.nmake b/src/common/Makefile.nmake
index e548273670..0ebeaaaf71 100644
--- a/src/common/Makefile.nmake
+++ b/src/common/Makefile.nmake
@@ -1,15 +1,19 @@
all: libor.lib libor-crypto.lib libor-event.lib
-CFLAGS = /I ..\win32 /I ..\..\..\build-alpha\include
+CFLAGS = /I ..\win32 /I ..\..\..\build-alpha\include /I ..\ext
LIBOR_OBJECTS = address.obj compat.obj container.obj di_ops.obj \
log.obj memarea.obj mempool.obj procmon.obj util.obj \
util_codedigest.obj
-LIBOR_CRYPTO_OBJECTS = aes.obj crypto.obj torgzip.obj tortls.obj
+LIBOR_CRYPTO_OBJECTS = aes.obj crypto.obj torgzip.obj tortls.obj \
+ crypto_curve25519.obj curve25519-donna.obj
LIBOR_EVENT_OBJECTS = compat_libevent.obj
+curve25519-donna.obj: ..\ext\curve25519_donna\curve25519-donna.c
+ $(CC) $(CFLAGS) /D inline=_inline /c ..\ext\curve25519_donna\curve25519-donna.c
+
libor.lib: $(LIBOR_OBJECTS)
lib $(LIBOR_OBJECTS) /out:libor.lib
@@ -18,3 +22,6 @@ libor-crypto.lib: $(LIBOR_CRYPTO_OBJECTS)
libor-event.lib: $(LIBOR_EVENT_OBJECTS)
lib $(LIBOR_EVENT_OBJECTS) /out:libor-event.lib
+
+clean:
+ del *.obj *.lib libor*.lib
diff --git a/src/common/address.c b/src/common/address.c
index 3b844f7993..6fc9fb3c47 100644
--- a/src/common/address.c
+++ b/src/common/address.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -1270,14 +1270,14 @@ get_interface_addresses_raw(int severity)
/* This interface, AFAICT, only supports AF_INET addresses */
fd = socket(AF_INET, SOCK_DGRAM, 0);
if (fd < 0) {
- log(severity, LD_NET, "socket failed: %s", strerror(errno));
+ tor_log(severity, LD_NET, "socket failed: %s", strerror(errno));
goto done;
}
/* Guess how much space we need. */
ifc.ifc_len = sz = 15*1024;
ifc.ifc_ifcu.ifcu_req = tor_malloc(sz);
if (ioctl(fd, SIOCGIFCONF, &ifc) < 0) {
- log(severity, LD_NET, "ioctl failed: %s", strerror(errno));
+ tor_log(severity, LD_NET, "ioctl failed: %s", strerror(errno));
close(fd);
goto done;
}
diff --git a/src/common/address.h b/src/common/address.h
index 0e2bbdcf88..9cbc32ce9b 100644
--- a/src/common/address.h
+++ b/src/common/address.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/aes.c b/src/common/aes.c
index d8865d7116..f454a7f7b2 100644
--- a/src/common/aes.c
+++ b/src/common/aes.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/aes.h b/src/common/aes.h
index fadeacc7ad..8ff28a7622 100644
--- a/src/common/aes.h
+++ b/src/common/aes.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/* Implements a minimal interface to counter-mode AES. */
diff --git a/src/common/compat.c b/src/common/compat.c
index d0e516c2ce..3b15f8ad24 100644
--- a/src/common/compat.c
+++ b/src/common/compat.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -2758,7 +2758,7 @@ tor_cond_wait(tor_cond_t *cond, tor_mutex_t *mutex)
EnterCriticalSection(&cond->mutex);
tor_assert(WaitForSingleObject(event, 0) == WAIT_TIMEOUT);
- tor_assert(!smartlist_isin(cond->events, event));
+ tor_assert(!smartlist_contains(cond->events, event));
smartlist_add(cond->events, event);
LeaveCriticalSection(&cond->mutex);
diff --git a/src/common/compat.h b/src/common/compat.h
index 9c544fa309..d2944e6f48 100644
--- a/src/common/compat.h
+++ b/src/common/compat.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_COMPAT_H
@@ -53,13 +53,13 @@
#endif
#include <stdio.h>
+#include <errno.h>
#if defined (WINCE)
#include <fcntl.h>
#include <io.h>
#include <math.h>
#include <projects.h>
-#define snprintf _snprintf
/* this is not exported as W .... */
#define SHGetPathFromIDListW SHGetPathFromIDList
/* wcecompat has vasprintf */
@@ -74,6 +74,10 @@
#error "It seems your platform does not represent NULL as zero. We can't cope."
#endif
+#ifndef DOUBLE_0_REP_IS_ZERO_BYTES
+#error "It seems your platform does not represent 0.0 as zeros. We can't cope."
+#endif
+
#if 'a'!=97 || 'z'!=122 || 'A'!=65 || ' '!=32
#error "It seems that you encode characters in something other than ASCII."
#endif
@@ -132,6 +136,17 @@ extern INLINE double U64_TO_DBL(uint64_t x) {
#define DBL_TO_U64(x) ((uint64_t) (x))
#endif
+#if defined(_MSC_VER)
+/* XXXX024 we should instead have a more general check for "Is enum signed?"*/
+#define ENUM_BF(t) unsigned
+#else
+/** Wrapper for having a bitfield of an enumerated type. Where possible, we
+ * just use the enumerated type (so the compiler can help us and notice
+ * problems), but if enumerated types are unsigned, we must use unsigned,
+ * so that the loss of precision doesn't make large values negative. */
+#define ENUM_BF(t) t
+#endif
+
/* GCC has several useful attributes. */
#if defined(__GNUC__) && __GNUC__ >= 3
#define ATTR_NORETURN __attribute__((noreturn))
@@ -538,10 +553,15 @@ int tor_socket_errno(tor_socket_t sock);
const char *tor_socket_strerror(int e);
#else
#define SOCK_ERRNO(e) e
+#if EAGAIN == EWOULDBLOCK
#define ERRNO_IS_EAGAIN(e) ((e) == EAGAIN)
+#else
+#define ERRNO_IS_EAGAIN(e) ((e) == EAGAIN || (e) == EWOULDBLOCK)
+#endif
#define ERRNO_IS_EINPROGRESS(e) ((e) == EINPROGRESS)
#define ERRNO_IS_CONN_EINPROGRESS(e) ((e) == EINPROGRESS)
-#define ERRNO_IS_ACCEPT_EAGAIN(e) ((e) == EAGAIN || (e) == ECONNABORTED)
+#define ERRNO_IS_ACCEPT_EAGAIN(e) \
+ (ERRNO_IS_EAGAIN(e) || (e) == ECONNABORTED)
#define ERRNO_IS_ACCEPT_RESOURCE_LIMIT(e) \
((e) == EMFILE || (e) == ENFILE || (e) == ENOBUFS || (e) == ENOMEM)
#define ERRNO_IS_EADDRINUSE(e) ((e) == EADDRINUSE)
diff --git a/src/common/compat_libevent.c b/src/common/compat_libevent.c
index 0d06c49c9f..200a7c65fb 100644
--- a/src/common/compat_libevent.c
+++ b/src/common/compat_libevent.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009-2012, The Tor Project, Inc. */
+/* Copyright (c) 2009-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -54,7 +54,9 @@ typedef uint32_t le_version_t;
* it is. */
#define LE_OTHER V(0,0,99)
+#if 0
static le_version_t tor_get_libevent_version(const char **v_out);
+#endif
#if defined(HAVE_EVENT_SET_LOG_CALLBACK) || defined(RUNNING_DOXYGEN)
/** A string which, if it appears in a libevent log, should be ignored. */
@@ -74,19 +76,19 @@ libevent_logging_callback(int severity, const char *msg)
}
switch (severity) {
case _EVENT_LOG_DEBUG:
- log(LOG_DEBUG, LD_NOCB|LD_NET, "Message from libevent: %s", buf);
+ log_debug(LD_NOCB|LD_NET, "Message from libevent: %s", buf);
break;
case _EVENT_LOG_MSG:
- log(LOG_INFO, LD_NOCB|LD_NET, "Message from libevent: %s", buf);
+ log_info(LD_NOCB|LD_NET, "Message from libevent: %s", buf);
break;
case _EVENT_LOG_WARN:
- log(LOG_WARN, LD_NOCB|LD_GENERAL, "Warning from libevent: %s", buf);
+ log_warn(LD_NOCB|LD_GENERAL, "Warning from libevent: %s", buf);
break;
case _EVENT_LOG_ERR:
- log(LOG_ERR, LD_NOCB|LD_GENERAL, "Error from libevent: %s", buf);
+ log_err(LD_NOCB|LD_GENERAL, "Error from libevent: %s", buf);
break;
default:
- log(LOG_WARN, LD_NOCB|LD_GENERAL, "Message [%d] from libevent: %s",
+ log_warn(LD_NOCB|LD_GENERAL, "Message [%d] from libevent: %s",
severity, buf);
break;
}
@@ -185,13 +187,6 @@ tor_libevent_initialize(tor_libevent_cfg *torcfg)
/* some paths below don't use torcfg, so avoid unused variable warnings */
(void)torcfg;
-#ifdef __APPLE__
- if (MACOSX_KQUEUE_IS_BROKEN ||
- tor_get_libevent_version(NULL) < V_OLD(1,1,'b')) {
- setenv("EVENT_NOKQUEUE","1",1);
- }
-#endif
-
#ifdef HAVE_EVENT2_EVENT_H
{
int attempts = 0;
@@ -266,13 +261,13 @@ tor_libevent_initialize(tor_libevent_cfg *torcfg)
#if defined(HAVE_EVENT_GET_VERSION) && defined(HAVE_EVENT_GET_METHOD)
/* Making this a NOTICE for now so we can link bugs to a libevent versions
* or methods better. */
- log(LOG_INFO, LD_GENERAL,
+ log_info(LD_GENERAL,
"Initialized libevent version %s using method %s. Good.",
event_get_version(), tor_libevent_get_method());
#else
- log(LOG_NOTICE, LD_GENERAL,
+ log_notice(LD_GENERAL,
"Initialized old libevent (version 1.0b or earlier).");
- log(LOG_WARN, LD_GENERAL,
+ log_warn(LD_GENERAL,
"You have a *VERY* old version of libevent. It is likely to be buggy; "
"please build Tor with a more recent version.");
#endif
@@ -364,6 +359,7 @@ le_versions_compatibility(le_version_t v)
return 5;
}
+#if 0
/** Return the version number of the currently running version of Libevent.
* See le_version_t for info on the format.
*/
@@ -386,6 +382,7 @@ tor_get_libevent_version(const char **v_out)
*v_out = v;
return r;
}
+#endif
/** Return a string representation of the version of the currently running
* version of Libevent. */
@@ -407,77 +404,9 @@ void
tor_check_libevent_version(const char *m, int server,
const char **badness_out)
{
- int buggy = 0, iffy = 0, slow = 0, thread_unsafe = 0;
- le_version_t version;
- const char *v = NULL;
- const char *badness = NULL;
- const char *sad_os = "";
-
- version = tor_get_libevent_version(&v);
-
- /* It would be better to disable known-buggy methods rather than warning
- * about them. But the problem is that with older versions of Libevent,
- * it's not trivial to get them to change their methods once they're
- * initialized... and with newer versions of Libevent, they aren't actually
- * broken. But we should revisit this if we ever find a post-1.4 version
- * of Libevent where we need to disable a given method. */
- if (!strcmp(m, "kqueue")) {
- if (version < V_OLD(1,1,'b'))
- buggy = 1;
- } else if (!strcmp(m, "epoll")) {
- if (version < V(1,1,0))
- iffy = 1;
- } else if (!strcmp(m, "poll")) {
- if (version < V_OLD(1,0,'e'))
- buggy = 1;
- if (version < V(1,1,0))
- slow = 1;
- } else if (!strcmp(m, "select")) {
- if (version < V(1,1,0))
- slow = 1;
- } else if (!strcmp(m, "win32")) {
- if (version < V_OLD(1,1,'b'))
- buggy = 1;
- }
-
- /* Libevent versions before 1.3b do very badly on operating systems with
- * user-space threading implementations. */
-#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__NetBSD__)
- if (server && version < V_OLD(1,3,'b')) {
- thread_unsafe = 1;
- sad_os = "BSD variants";
- }
-#elif defined(__APPLE__) || defined(__darwin__)
- if (server && version < V_OLD(1,3,'b')) {
- thread_unsafe = 1;
- sad_os = "Mac OS X";
- }
-#endif
-
- if (thread_unsafe) {
- log(LOG_WARN, LD_GENERAL,
- "Libevent version %s often crashes when running a Tor server with %s. "
- "Please use the latest version of libevent (1.3b or later)",v,sad_os);
- badness = "BROKEN";
- } else if (buggy) {
- log(LOG_WARN, LD_GENERAL,
- "There are serious bugs in using %s with libevent %s. "
- "Please use the latest version of libevent.", m, v);
- badness = "BROKEN";
- } else if (iffy) {
- log(LOG_WARN, LD_GENERAL,
- "There are minor bugs in using %s with libevent %s. "
- "You may want to use the latest version of libevent.", m, v);
- badness = "BUGGY";
- } else if (slow && server) {
- log(LOG_WARN, LD_GENERAL,
- "libevent %s can be very slow with %s. "
- "When running a server, please use the latest version of libevent.",
- v,m);
- badness = "SLOW";
- }
-
- *badness_out = badness;
+ (void) m;
+ (void) server;
+ *badness_out = NULL;
}
#if defined(LIBEVENT_VERSION)
@@ -511,7 +440,7 @@ tor_check_libevent_header_compatibility(void)
verybad = compat1 != compat2;
- log(verybad ? LOG_WARN : LOG_NOTICE,
+ tor_log(verybad ? LOG_WARN : LOG_NOTICE,
LD_GENERAL, "We were compiled with headers from version %s "
"of Libevent, but we're using a Libevent library that says it's "
"version %s.", HEADER_VERSION, event_get_version());
diff --git a/src/common/compat_libevent.h b/src/common/compat_libevent.h
index 68da472cfc..2472e2c49e 100644
--- a/src/common/compat_libevent.h
+++ b/src/common/compat_libevent.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009-2012, The Tor Project, Inc. */
+/* Copyright (c) 2009-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_COMPAT_LIBEVENT_H
diff --git a/src/common/container.c b/src/common/container.c
index d4a2f89c90..eec497a3e6 100644
--- a/src/common/container.c
+++ b/src/common/container.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -163,7 +163,7 @@ smartlist_string_remove(smartlist_t *sl, const char *element)
/** Return true iff some element E of sl has E==element.
*/
int
-smartlist_isin(const smartlist_t *sl, const void *element)
+smartlist_contains(const smartlist_t *sl, const void *element)
{
int i;
for (i=0; i < sl->num_used; i++)
@@ -176,7 +176,7 @@ smartlist_isin(const smartlist_t *sl, const void *element)
* !strcmp(E,<b>element</b>)
*/
int
-smartlist_string_isin(const smartlist_t *sl, const char *element)
+smartlist_contains_string(const smartlist_t *sl, const char *element)
{
int i;
if (!sl) return 0;
@@ -203,7 +203,7 @@ smartlist_string_pos(const smartlist_t *sl, const char *element)
* !strcasecmp(E,<b>element</b>)
*/
int
-smartlist_string_isin_case(const smartlist_t *sl, const char *element)
+smartlist_contains_string_case(const smartlist_t *sl, const char *element)
{
int i;
if (!sl) return 0;
@@ -217,11 +217,11 @@ smartlist_string_isin_case(const smartlist_t *sl, const char *element)
* to the decimal encoding of <b>num</b>.
*/
int
-smartlist_string_num_isin(const smartlist_t *sl, int num)
+smartlist_contains_int_as_string(const smartlist_t *sl, int num)
{
char buf[32]; /* long enough for 64-bit int, and then some. */
tor_snprintf(buf,sizeof(buf),"%d", num);
- return smartlist_string_isin(sl, buf);
+ return smartlist_contains_string(sl, buf);
}
/** Return true iff the two lists contain the same strings in the same
@@ -247,7 +247,7 @@ smartlist_strings_eq(const smartlist_t *sl1, const smartlist_t *sl2)
* tor_memeq(E,<b>element</b>,DIGEST_LEN)
*/
int
-smartlist_digest_isin(const smartlist_t *sl, const char *element)
+smartlist_contains_digest(const smartlist_t *sl, const char *element)
{
int i;
if (!sl) return 0;
@@ -257,19 +257,19 @@ smartlist_digest_isin(const smartlist_t *sl, const char *element)
return 0;
}
-/** Return true iff some element E of sl2 has smartlist_isin(sl1,E).
+/** Return true iff some element E of sl2 has smartlist_contains(sl1,E).
*/
int
smartlist_overlap(const smartlist_t *sl1, const smartlist_t *sl2)
{
int i;
for (i=0; i < sl2->num_used; i++)
- if (smartlist_isin(sl1, sl2->list[i]))
+ if (smartlist_contains(sl1, sl2->list[i]))
return 1;
return 0;
}
-/** Remove every element E of sl1 such that !smartlist_isin(sl2,E).
+/** Remove every element E of sl1 such that !smartlist_contains(sl2,E).
* Does not preserve the order of sl1.
*/
void
@@ -277,13 +277,13 @@ smartlist_intersect(smartlist_t *sl1, const smartlist_t *sl2)
{
int i;
for (i=0; i < sl1->num_used; i++)
- if (!smartlist_isin(sl2, sl1->list[i])) {
+ if (!smartlist_contains(sl2, sl1->list[i])) {
sl1->list[i] = sl1->list[--sl1->num_used]; /* swap with the end */
i--; /* so we process the new i'th element */
}
}
-/** Remove every element E of sl1 such that smartlist_isin(sl2,E).
+/** Remove every element E of sl1 such that smartlist_contains(sl2,E).
* Does not preserve the order of sl1.
*/
void
diff --git a/src/common/container.h b/src/common/container.h
index 0b3a3d1412..e247fb7ea6 100644
--- a/src/common/container.h
+++ b/src/common/container.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_CONTAINER_H
@@ -35,13 +35,13 @@ void smartlist_remove(smartlist_t *sl, const void *element);
void *smartlist_pop_last(smartlist_t *sl);
void smartlist_reverse(smartlist_t *sl);
void smartlist_string_remove(smartlist_t *sl, const char *element);
-int smartlist_isin(const smartlist_t *sl, const void *element);
-int smartlist_string_isin(const smartlist_t *sl, const char *element);
+int smartlist_contains(const smartlist_t *sl, const void *element);
+int smartlist_contains_string(const smartlist_t *sl, const char *element);
int smartlist_string_pos(const smartlist_t *, const char *elt);
-int smartlist_string_isin_case(const smartlist_t *sl, const char *element);
-int smartlist_string_num_isin(const smartlist_t *sl, int num);
+int smartlist_contains_string_case(const smartlist_t *sl, const char *element);
+int smartlist_contains_int_as_string(const smartlist_t *sl, int num);
int smartlist_strings_eq(const smartlist_t *sl1, const smartlist_t *sl2);
-int smartlist_digest_isin(const smartlist_t *sl, const char *element);
+int smartlist_contains_digest(const smartlist_t *sl, const char *element);
int smartlist_overlap(const smartlist_t *sl1, const smartlist_t *sl2);
void smartlist_intersect(smartlist_t *sl1, const smartlist_t *sl2);
void smartlist_subtract(smartlist_t *sl1, const smartlist_t *sl2);
@@ -623,7 +623,7 @@ digestset_add(digestset_t *set, const char *digest)
/** If <b>digest</b> is in <b>set</b>, return nonzero. Otherwise,
* <em>probably</em> return zero. */
static INLINE int
-digestset_isin(const digestset_t *set, const char *digest)
+digestset_contains(const digestset_t *set, const char *digest)
{
const uint32_t *p = (const uint32_t *)digest;
const uint32_t d1 = p[0] + (p[1]>>16);
diff --git a/src/common/crypto.c b/src/common/crypto.c
index 39f5a4a642..70bd45299f 100644
--- a/src/common/crypto.c
+++ b/src/common/crypto.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -151,10 +151,11 @@ crypto_log_errors(int severity, const char *doing)
if (!lib) lib = "(null)";
if (!func) func = "(null)";
if (doing) {
- log(severity, LD_CRYPTO, "crypto error while %s: %s (in %s:%s)",
- doing, msg, lib, func);
+ tor_log(severity, LD_CRYPTO, "crypto error while %s: %s (in %s:%s)",
+ doing, msg, lib, func);
} else {
- log(severity, LD_CRYPTO, "crypto error: %s (in %s:%s)", msg, lib, func);
+ tor_log(severity, LD_CRYPTO, "crypto error: %s (in %s:%s)",
+ msg, lib, func);
}
}
}
@@ -168,10 +169,10 @@ log_engine(const char *fn, ENGINE *e)
const char *name, *id;
name = ENGINE_get_name(e);
id = ENGINE_get_id(e);
- log(LOG_NOTICE, LD_CRYPTO, "Using OpenSSL engine %s [%s] for %s",
+ log_notice(LD_CRYPTO, "Using OpenSSL engine %s [%s] for %s",
name?name:"?", id?id:"?", fn);
} else {
- log(LOG_INFO, LD_CRYPTO, "Using default implementation for %s", fn);
+ log_info(LD_CRYPTO, "Using default implementation for %s", fn);
}
}
#endif
@@ -1458,7 +1459,7 @@ crypto_digest256(char *digest, const char *m, size_t len,
int
crypto_digest_all(digests_t *ds_out, const char *m, size_t len)
{
- digest_algorithm_t i;
+ int i;
tor_assert(ds_out);
memset(ds_out, 0, sizeof(*ds_out));
if (crypto_digest(ds_out->d[DIGEST_SHA1], m, len) < 0)
@@ -1505,7 +1506,7 @@ struct crypto_digest_t {
SHA256_CTX sha2; /**< state for SHA256 */
} d; /**< State for the digest we're using. Only one member of the
* union is usable, depending on the value of <b>algorithm</b>. */
- digest_algorithm_t algorithm : 8; /**< Which algorithm is in use? */
+ ENUM_BF(digest_algorithm_t) algorithm : 8; /**< Which algorithm is in use? */
};
/** Allocate and return a new digest object to compute SHA1 digests.
@@ -2036,6 +2037,16 @@ crypto_dh_new(int dh_type)
return NULL;
}
+/** Return a copy of <b>dh</b>, sharing its internal state. */
+crypto_dh_t *
+crypto_dh_dup(const crypto_dh_t *dh)
+{
+ crypto_dh_t *dh_new = tor_malloc_zero(sizeof(crypto_dh_t));
+ dh_new->dh = dh->dh;
+ DH_up_ref(dh->dh);
+ return dh_new;
+}
+
/** Return the length of the DH key in <b>dh</b>, in bytes.
*/
int
@@ -2174,8 +2185,8 @@ crypto_dh_compute_secret(int severity, crypto_dh_t *dh,
goto error;
}
secret_len = result;
- if (crypto_expand_key_material(secret_tmp, secret_len,
- secret_out, secret_bytes_out)<0)
+ if (crypto_expand_key_material_TAP((uint8_t*)secret_tmp, secret_len,
+ (uint8_t*)secret_out, secret_bytes_out)<0)
goto error;
secret_len = secret_bytes_out;
@@ -2201,15 +2212,18 @@ crypto_dh_compute_secret(int severity, crypto_dh_t *dh,
* <b>key_out</b> by taking the first <b>key_out_len</b> bytes of
* H(K | [00]) | H(K | [01]) | ....
*
+ * This is the key expansion algorithm used in the "TAP" circuit extension
+ * mechanism; it shouldn't be used for new protocols.
+ *
* Return 0 on success, -1 on failure.
*/
int
-crypto_expand_key_material(const char *key_in, size_t key_in_len,
- char *key_out, size_t key_out_len)
+crypto_expand_key_material_TAP(const uint8_t *key_in, size_t key_in_len,
+ uint8_t *key_out, size_t key_out_len)
{
int i;
- char *cp, *tmp = tor_malloc(key_in_len+1);
- char digest[DIGEST_LEN];
+ uint8_t *cp, *tmp = tor_malloc(key_in_len+1);
+ uint8_t digest[DIGEST_LEN];
/* If we try to get more than this amount of key data, we'll repeat blocks.*/
tor_assert(key_out_len <= DIGEST_LEN*256);
@@ -2218,7 +2232,7 @@ crypto_expand_key_material(const char *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(digest, tmp, key_in_len+1))
+ if (crypto_digest((char*)digest, (const char *)tmp, key_in_len+1))
goto err;
memcpy(cp, digest, MIN(DIGEST_LEN, key_out_len-(cp-key_out)));
}
@@ -2234,6 +2248,65 @@ crypto_expand_key_material(const char *key_in, size_t key_in_len,
return -1;
}
+/** Expand some secret key material according to RFC5869, using SHA256 as the
+ * underlying hash. The <b>key_in_len</b> bytes at <b>key_in</b> are the
+ * secret key material; the <b>salt_in_len</b> bytes at <b>salt_in</b> and the
+ * <b>info_in_len</b> bytes in <b>info_in_len</b> are the algorithm's "salt"
+ * and "info" parameters respectively. On success, write <b>key_out_len</b>
+ * bytes to <b>key_out</b> and return 0. On failure, return -1.
+ */
+int
+crypto_expand_key_material_rfc5869_sha256(
+ const uint8_t *key_in, size_t key_in_len,
+ const uint8_t *salt_in, size_t salt_in_len,
+ const uint8_t *info_in, size_t info_in_len,
+ uint8_t *key_out, size_t key_out_len)
+{
+ uint8_t prk[DIGEST256_LEN];
+ uint8_t tmp[DIGEST256_LEN + 128 + 1];
+ uint8_t mac[DIGEST256_LEN];
+ int i;
+ uint8_t *outp;
+ size_t tmp_len;
+
+ crypto_hmac_sha256((char*)prk,
+ (const char*)salt_in, salt_in_len,
+ (const char*)key_in, key_in_len);
+
+ /* If we try to get more than this amount of key data, we'll repeat blocks.*/
+ tor_assert(key_out_len <= DIGEST256_LEN * 256);
+ tor_assert(info_in_len <= 128);
+ memset(tmp, 0, sizeof(tmp));
+ outp = key_out;
+ i = 1;
+
+ while (key_out_len) {
+ size_t n;
+ if (i > 1) {
+ memcpy(tmp, mac, DIGEST256_LEN);
+ memcpy(tmp+DIGEST256_LEN, info_in, info_in_len);
+ tmp[DIGEST256_LEN+info_in_len] = i;
+ tmp_len = DIGEST256_LEN + info_in_len + 1;
+ } else {
+ memcpy(tmp, info_in, info_in_len);
+ tmp[info_in_len] = i;
+ tmp_len = info_in_len + 1;
+ }
+ crypto_hmac_sha256((char*)mac,
+ (const char*)prk, DIGEST256_LEN,
+ (const char*)tmp, tmp_len);
+ n = key_out_len < DIGEST256_LEN ? key_out_len : DIGEST256_LEN;
+ memcpy(outp, mac, n);
+ key_out_len -= n;
+ outp += n;
+ ++i;
+ }
+
+ memwipe(tmp, 0, sizeof(tmp));
+ memwipe(mac, 0, sizeof(mac));
+ return 0;
+}
+
/** Free a DH key exchange object.
*/
void
@@ -2272,22 +2345,16 @@ seed_weak_rng(void)
tor_init_weak_random(seed);
}
-/** Seed OpenSSL's random number generator with bytes from the operating
- * system. <b>startup</b> should be true iff we have just started Tor and
- * have not yet allocated a bunch of fds. Return 0 on success, -1 on failure.
+/** Try to get <b>out_len</b> bytes of the strongest entropy we can generate,
+ * storing it into <b>out</b>.
*/
int
-crypto_seed_rng(int startup)
+crypto_strongest_rand(uint8_t *out, size_t out_len)
{
- int rand_poll_status = 0;
-
- /* local variables */
#ifdef _WIN32
- unsigned char buf[ADD_ENTROPY];
static int provider_set = 0;
static HCRYPTPROV provider;
#else
- char buf[ADD_ENTROPY];
static const char *filenames[] = {
"/dev/srandom", "/dev/urandom", "/dev/random", NULL
};
@@ -2295,58 +2362,77 @@ crypto_seed_rng(int startup)
size_t n;
#endif
- /* OpenSSL has a RAND_poll function that knows about more kinds of
- * entropy than we do. We'll try calling that, *and* calling our own entropy
- * functions. If one succeeds, we'll accept the RNG as seeded. */
- if (startup || RAND_POLL_IS_SAFE) {
- rand_poll_status = RAND_poll();
- if (rand_poll_status == 0)
- log_warn(LD_CRYPTO, "RAND_poll() failed.");
- }
-
#ifdef _WIN32
if (!provider_set) {
if (!CryptAcquireContext(&provider, NULL, NULL, PROV_RSA_FULL,
CRYPT_VERIFYCONTEXT)) {
if ((unsigned long)GetLastError() != (unsigned long)NTE_BAD_KEYSET) {
log_warn(LD_CRYPTO, "Can't get CryptoAPI provider [1]");
- return rand_poll_status ? 0 : -1;
+ return -1;
}
}
provider_set = 1;
}
- if (!CryptGenRandom(provider, sizeof(buf), buf)) {
+ if (!CryptGenRandom(provider, out_len, out)) {
log_warn(LD_CRYPTO, "Can't get entropy from CryptoAPI.");
- return rand_poll_status ? 0 : -1;
+ return -1;
}
- RAND_seed(buf, sizeof(buf));
- memwipe(buf, 0, sizeof(buf));
- seed_weak_rng();
+
return 0;
#else
for (i = 0; filenames[i]; ++i) {
fd = open(filenames[i], O_RDONLY, 0);
if (fd<0) continue;
- log_info(LD_CRYPTO, "Seeding RNG from \"%s\"", filenames[i]);
- n = read_all(fd, buf, sizeof(buf), 0);
+ log_info(LD_CRYPTO, "Reading entropy from \"%s\"", filenames[i]);
+ n = read_all(fd, (char*)out, out_len, 0);
close(fd);
- if (n != sizeof(buf)) {
+ if (n != out_len) {
log_warn(LD_CRYPTO,
"Error reading from entropy source (read only %lu bytes).",
(unsigned long)n);
return -1;
}
- RAND_seed(buf, (int)sizeof(buf));
- memwipe(buf, 0, sizeof(buf));
- seed_weak_rng();
+
return 0;
}
- log_warn(LD_CRYPTO, "Cannot seed RNG -- no entropy source found.");
- return rand_poll_status ? 0 : -1;
+ log_warn(LD_CRYPTO, "Cannot get strong entropy: no entropy source found.");
+ return -1;
#endif
}
+/** Seed OpenSSL's random number generator with bytes from the operating
+ * system. <b>startup</b> should be true iff we have just started Tor and
+ * have not yet allocated a bunch of fds. Return 0 on success, -1 on failure.
+ */
+int
+crypto_seed_rng(int startup)
+{
+ int rand_poll_ok = 0, load_entropy_ok = 0;
+ uint8_t buf[ADD_ENTROPY];
+
+ /* OpenSSL has a RAND_poll function that knows about more kinds of
+ * entropy than we do. We'll try calling that, *and* calling our own entropy
+ * functions. If one succeeds, we'll accept the RNG as seeded. */
+ if (startup || RAND_POLL_IS_SAFE) {
+ rand_poll_ok = RAND_poll();
+ if (rand_poll_ok == 0)
+ log_warn(LD_CRYPTO, "RAND_poll() failed.");
+ }
+
+ load_entropy_ok = !crypto_strongest_rand(buf, sizeof(buf));
+ if (load_entropy_ok) {
+ RAND_seed(buf, sizeof(buf));
+ }
+
+ memwipe(buf, 0, sizeof(buf));
+ seed_weak_rng();
+ if (rand_poll_ok || load_entropy_ok)
+ return 0;
+ else
+ return -1;
+}
+
/** Write <b>n</b> bytes of strong random data to <b>to</b>. Return 0 on
* success, -1 on failure.
*/
@@ -2494,7 +2580,7 @@ smartlist_shuffle(smartlist_t *sl)
}
}
-/** Base-64 encode <b>srclen</b> bytes of data from <b>src</b>. Write
+/** Base64 encode <b>srclen</b> bytes of data from <b>src</b>. Write
* the result into <b>dest</b>, if it will fit within <b>destlen</b>
* bytes. Return the number of bytes written on success; -1 if
* destlen is too short, or other failure.
@@ -2553,7 +2639,7 @@ static const uint8_t base64_decode_table[256] = {
X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X,
};
-/** Base-64 decode <b>srclen</b> bytes of data from <b>src</b>. Write
+/** Base64 decode <b>srclen</b> bytes of data from <b>src</b>. Write
* the result into <b>dest</b>, if it will fit within <b>destlen</b>
* bytes. Return the number of bytes written on success; -1 if
* destlen is too short, or other failure.
@@ -2660,7 +2746,7 @@ base64_decode(char *dest, size_t destlen, const char *src, size_t srclen)
#undef SP
#undef PAD
-/** Base-64 encode DIGEST_LINE bytes from <b>digest</b>, remove the trailing =
+/** Base64 encode DIGEST_LINE bytes from <b>digest</b>, remove the trailing =
* and newline characters, and store the nul-terminated result in the first
* BASE64_DIGEST_LEN+1 bytes of <b>d64</b>. */
int
@@ -2673,7 +2759,7 @@ digest_to_base64(char *d64, const char *digest)
return 0;
}
-/** Given a base-64 encoded, nul-terminated digest in <b>d64</b> (without
+/** Given a base64 encoded, nul-terminated digest in <b>d64</b> (without
* trailing newline or = characters), decode it and store the result in the
* first DIGEST_LEN bytes at <b>digest</b>. */
int
@@ -2698,7 +2784,7 @@ digest_from_base64(char *digest, const char *d64)
#endif
}
-/** Base-64 encode DIGEST256_LINE bytes from <b>digest</b>, remove the
+/** Base64 encode DIGEST256_LINE bytes from <b>digest</b>, remove the
* trailing = and newline characters, and store the nul-terminated result in
* the first BASE64_DIGEST256_LEN+1 bytes of <b>d64</b>. */
int
@@ -2711,7 +2797,7 @@ digest256_to_base64(char *d64, const char *digest)
return 0;
}
-/** Given a base-64 encoded, nul-terminated digest in <b>d64</b> (without
+/** Given a base64 encoded, nul-terminated digest in <b>d64</b> (without
* trailing newline or = characters), decode it and store the result in the
* first DIGEST256_LEN bytes at <b>digest</b>. */
int
diff --git a/src/common/crypto.h b/src/common/crypto.h
index 4c5fa6ad97..08efc801d3 100644
--- a/src/common/crypto.h
+++ b/src/common/crypto.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -230,6 +230,7 @@ void crypto_hmac_sha256(char *hmac_out,
#define DH_TYPE_REND 2
#define DH_TYPE_TLS 3
crypto_dh_t *crypto_dh_new(int dh_type);
+crypto_dh_t *crypto_dh_dup(const crypto_dh_t *dh);
int crypto_dh_get_bytes(crypto_dh_t *dh);
int crypto_dh_generate_public(crypto_dh_t *dh);
int crypto_dh_get_public(crypto_dh_t *dh, char *pubkey_out,
@@ -238,12 +239,20 @@ ssize_t crypto_dh_compute_secret(int severity, crypto_dh_t *dh,
const char *pubkey, size_t pubkey_len,
char *secret_out, size_t secret_out_len);
void crypto_dh_free(crypto_dh_t *dh);
-int crypto_expand_key_material(const char *key_in, size_t in_len,
- char *key_out, size_t key_out_len);
+
+int crypto_expand_key_material_TAP(const uint8_t *key_in,
+ size_t key_in_len,
+ uint8_t *key_out, size_t key_out_len);
+int crypto_expand_key_material_rfc5869_sha256(
+ const uint8_t *key_in, size_t key_in_len,
+ const uint8_t *salt_in, size_t salt_in_len,
+ const uint8_t *info_in, size_t info_in_len,
+ uint8_t *key_out, size_t key_out_len);
/* random numbers */
int crypto_seed_rng(int startup);
int crypto_rand(char *to, size_t n);
+int crypto_strongest_rand(uint8_t *out, size_t out_len);
int crypto_rand_int(unsigned int max);
uint64_t crypto_rand_uint64(uint64_t max);
double crypto_rand_double(void);
@@ -257,7 +266,7 @@ void smartlist_shuffle(struct smartlist_t *sl);
int base64_encode(char *dest, size_t destlen, const char *src, size_t srclen);
int base64_decode(char *dest, size_t destlen, const char *src, size_t srclen);
-/** Characters that can appear (case-insensitively) in a base-32 encoding. */
+/** Characters that can appear (case-insensitively) in a base32 encoding. */
#define BASE32_CHARS "abcdefghijklmnopqrstuvwxyz234567"
void base32_encode(char *dest, size_t destlen, const char *src, size_t srclen);
int base32_decode(char *dest, size_t destlen, const char *src, size_t srclen);
diff --git a/src/common/crypto_curve25519.c b/src/common/crypto_curve25519.c
new file mode 100644
index 0000000000..3e4004db2e
--- /dev/null
+++ b/src/common/crypto_curve25519.c
@@ -0,0 +1,191 @@
+/* Copyright (c) 2012-2013, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/* Wrapper code for a curve25519 implementation. */
+
+#define CRYPTO_CURVE25519_PRIVATE
+#include "orconfig.h"
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#include "crypto.h"
+#include "crypto_curve25519.h"
+#include "util.h"
+#include "torlog.h"
+
+/* ==============================
+ Part 1: wrap a suitable curve25519 implementation as curve25519_impl
+ ============================== */
+
+#ifdef USE_CURVE25519_DONNA
+int curve25519_donna(uint8_t *mypublic,
+ const uint8_t *secret, const uint8_t *basepoint);
+#endif
+#ifdef USE_CURVE25519_NACL
+#ifdef HAVE_CRYPTO_SCALARMULT_CURVE25519_H
+#include <crypto_scalarmult_curve25519.h>
+#elif defined(HAVE_NACL_CRYPTO_SCALARMULT_CURVE25519_H)
+#include <nacl/crypto_scalarmult_curve25519.h>
+#endif
+#endif
+
+int
+curve25519_impl(uint8_t *output, const uint8_t *secret,
+ const uint8_t *basepoint)
+{
+ uint8_t bp[CURVE25519_PUBKEY_LEN];
+ int r;
+ memcpy(bp, basepoint, CURVE25519_PUBKEY_LEN);
+ /* Clear the high bit, in case our backend foolishly looks at it. */
+ bp[31] &= 0x7f;
+#ifdef USE_CURVE25519_DONNA
+ r = curve25519_donna(output, secret, bp);
+#elif defined(USE_CURVE25519_NACL)
+ r = crypto_scalarmult_curve25519(output, secret, bp);
+#else
+#error "No implementation of curve25519 is available."
+#endif
+ memwipe(bp, 0, sizeof(bp));
+ return r;
+}
+
+/* ==============================
+ Part 2: Wrap curve25519_impl with some convenience types and functions.
+ ============================== */
+
+/**
+ * Return true iff a curve25519_public_key_t seems valid. (It's not necessary
+ * to see if the point is on the curve, since the twist is also secure, but we
+ * do need to make sure that it isn't the point at infinity.) */
+int
+curve25519_public_key_is_ok(const curve25519_public_key_t *key)
+{
+ return !safe_mem_is_zero(key->public_key, CURVE25519_PUBKEY_LEN);
+}
+
+/** Generate a new keypair and return the secret key. If <b>extra_strong</b>
+ * is true, this key is possibly going to get used more than once, so
+ * use a better-than-usual RNG. Return 0 on success, -1 on failure. */
+int
+curve25519_secret_key_generate(curve25519_secret_key_t *key_out,
+ int extra_strong)
+{
+ uint8_t k_tmp[CURVE25519_SECKEY_LEN];
+
+ if (crypto_rand((char*)key_out->secret_key, CURVE25519_SECKEY_LEN) < 0)
+ return -1;
+ if (extra_strong && !crypto_strongest_rand(k_tmp, CURVE25519_SECKEY_LEN)) {
+ /* If they asked for extra-strong entropy and we have some, use it as an
+ * HMAC key to improve not-so-good entropy rather than using it directly,
+ * just in case the extra-strong entropy is less amazing than we hoped. */
+ crypto_hmac_sha256((char *)key_out->secret_key,
+ (const char *)k_tmp, sizeof(k_tmp),
+ (const char *)key_out->secret_key, CURVE25519_SECKEY_LEN);
+ }
+ memwipe(k_tmp, 0, sizeof(k_tmp));
+ key_out->secret_key[0] &= 248;
+ key_out->secret_key[31] &= 127;
+ key_out->secret_key[31] |= 64;
+
+ return 0;
+}
+
+void
+curve25519_public_key_generate(curve25519_public_key_t *key_out,
+ const curve25519_secret_key_t *seckey)
+{
+ static const uint8_t basepoint[32] = {9};
+
+ curve25519_impl(key_out->public_key, seckey->secret_key, basepoint);
+}
+
+int
+curve25519_keypair_generate(curve25519_keypair_t *keypair_out,
+ int extra_strong)
+{
+ if (curve25519_secret_key_generate(&keypair_out->seckey, extra_strong) < 0)
+ return -1;
+ curve25519_public_key_generate(&keypair_out->pubkey, &keypair_out->seckey);
+ return 0;
+}
+
+int
+curve25519_keypair_write_to_file(const curve25519_keypair_t *keypair,
+ const char *fname,
+ const char *tag)
+{
+ char contents[32 + CURVE25519_SECKEY_LEN + CURVE25519_PUBKEY_LEN];
+ int r;
+
+ memset(contents, 0, sizeof(contents));
+ tor_snprintf(contents, sizeof(contents), "== c25519v1: %s ==", tag);
+ tor_assert(strlen(contents) <= 32);
+ memcpy(contents+32, keypair->seckey.secret_key, CURVE25519_SECKEY_LEN);
+ memcpy(contents+32+CURVE25519_SECKEY_LEN,
+ keypair->pubkey.public_key, CURVE25519_PUBKEY_LEN);
+
+ r = write_bytes_to_file(fname, contents, sizeof(contents), 1);
+
+ memwipe(contents, 0, sizeof(contents));
+ return r;
+}
+
+int
+curve25519_keypair_read_from_file(curve25519_keypair_t *keypair_out,
+ char **tag_out,
+ const char *fname)
+{
+ char prefix[33];
+ char *content;
+ struct stat st;
+ int r = -1;
+
+ *tag_out = NULL;
+
+ st.st_size = 0;
+ content = read_file_to_str(fname, RFTS_BIN|RFTS_IGNORE_MISSING, &st);
+ if (! content)
+ goto end;
+ if (st.st_size != 32 + CURVE25519_SECKEY_LEN + CURVE25519_PUBKEY_LEN)
+ goto end;
+
+ memcpy(prefix, content, 32);
+ prefix[32] = '\0';
+ if (strcmpstart(prefix, "== c25519v1: ") ||
+ strcmpend(prefix, " =="))
+ goto end;
+
+ *tag_out = tor_strndup(prefix+strlen("== c25519v1: "),
+ strlen(prefix) - strlen("== c25519v1: =="));
+
+ memcpy(keypair_out->seckey.secret_key, content+32, CURVE25519_SECKEY_LEN);
+ curve25519_public_key_generate(&keypair_out->pubkey, &keypair_out->seckey);
+ if (tor_memneq(keypair_out->pubkey.public_key,
+ content + 32 + CURVE25519_SECKEY_LEN,
+ CURVE25519_PUBKEY_LEN))
+ goto end;
+
+ r = 0;
+
+ end:
+ if (content) {
+ memwipe(content, 0, st.st_size);
+ tor_free(content);
+ }
+ if (r != 0) {
+ memset(keypair_out, 0, sizeof(*keypair_out));
+ tor_free(*tag_out);
+ }
+ return r;
+}
+
+/** Perform the curve25519 ECDH handshake with <b>skey</b> and <b>pkey</b>,
+ * writing CURVE25519_OUTPUT_LEN bytes of output into <b>output</b>. */
+void
+curve25519_handshake(uint8_t *output,
+ const curve25519_secret_key_t *skey,
+ const curve25519_public_key_t *pkey)
+{
+ curve25519_impl(output, skey->secret_key, pkey->public_key);
+}
+
diff --git a/src/common/crypto_curve25519.h b/src/common/crypto_curve25519.h
new file mode 100644
index 0000000000..652f1883c6
--- /dev/null
+++ b/src/common/crypto_curve25519.h
@@ -0,0 +1,68 @@
+/* Copyright (c) 2012-2013, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#ifndef TOR_CRYPTO_CURVE25519_H
+#define TOR_CRYPTO_CURVE25519_H
+
+#include "torint.h"
+
+/** Length of a curve25519 public key when encoded. */
+#define CURVE25519_PUBKEY_LEN 32
+/** Length of a curve25519 secret key when encoded. */
+#define CURVE25519_SECKEY_LEN 32
+/** Length of the result of a curve25519 handshake. */
+#define CURVE25519_OUTPUT_LEN 32
+
+/** Wrapper type for a curve25519 public key */
+typedef struct curve25519_public_key_t {
+ uint8_t public_key[CURVE25519_PUBKEY_LEN];
+} curve25519_public_key_t;
+
+/** Wrapper type for a curve25519 secret key */
+typedef struct curve25519_secret_key_t {
+ uint8_t secret_key[CURVE25519_SECKEY_LEN];
+} curve25519_secret_key_t;
+
+/** A paired public and private key for curve25519. **/
+typedef struct curve25519_keypair_t {
+ curve25519_public_key_t pubkey;
+ curve25519_secret_key_t seckey;
+} curve25519_keypair_t;
+
+#ifdef CURVE25519_ENABLED
+int curve25519_public_key_is_ok(const curve25519_public_key_t *);
+
+int curve25519_secret_key_generate(curve25519_secret_key_t *key_out,
+ int extra_strong);
+void curve25519_public_key_generate(curve25519_public_key_t *key_out,
+ const curve25519_secret_key_t *seckey);
+int curve25519_keypair_generate(curve25519_keypair_t *keypair_out,
+ int extra_strong);
+
+void curve25519_handshake(uint8_t *output,
+ const curve25519_secret_key_t *,
+ const curve25519_public_key_t *);
+
+int curve25519_keypair_write_to_file(const curve25519_keypair_t *keypair,
+ const char *fname,
+ const char *tag);
+
+int curve25519_keypair_read_from_file(curve25519_keypair_t *keypair_out,
+ char **tag_out,
+ const char *fname);
+
+#ifdef CRYPTO_CURVE25519_PRIVATE
+int curve25519_impl(uint8_t *output, const uint8_t *secret,
+ const uint8_t *basepoint);
+#endif
+#endif
+
+#define CURVE25519_BASE64_PADDED_LEN 44
+
+int curve25519_public_from_base64(curve25519_public_key_t *pkey,
+ const char *input);
+int curve25519_public_to_base64(char *output,
+ const curve25519_public_key_t *pkey);
+
+#endif
+
diff --git a/src/common/crypto_format.c b/src/common/crypto_format.c
new file mode 100644
index 0000000000..93932f839c
--- /dev/null
+++ b/src/common/crypto_format.c
@@ -0,0 +1,46 @@
+/* Copyright (c) 2012-2013, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/* Formatting and parsing code for crypto-related data structures. */
+
+#define CRYPTO_CURVE25519_PRIVATE
+#include "orconfig.h"
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#include "crypto.h"
+#include "crypto_curve25519.h"
+#include "util.h"
+#include "torlog.h"
+
+int
+curve25519_public_to_base64(char *output,
+ const curve25519_public_key_t *pkey)
+{
+ char buf[128];
+ base64_encode(buf, sizeof(buf),
+ (const char*)pkey->public_key, CURVE25519_PUBKEY_LEN);
+ buf[CURVE25519_BASE64_PADDED_LEN] = '\0';
+ memcpy(output, buf, CURVE25519_BASE64_PADDED_LEN+1);
+ return 0;
+}
+
+int
+curve25519_public_from_base64(curve25519_public_key_t *pkey,
+ const char *input)
+{
+ size_t len = strlen(input);
+ if (len == CURVE25519_BASE64_PADDED_LEN - 1) {
+ /* not padded */
+ return digest256_from_base64((char*)pkey->public_key, input);
+ } else if (len == CURVE25519_BASE64_PADDED_LEN) {
+ char buf[128];
+ if (base64_decode(buf, sizeof(buf), input, len) != CURVE25519_PUBKEY_LEN)
+ return -1;
+ memcpy(pkey->public_key, buf, CURVE25519_PUBKEY_LEN);
+ return 0;
+ } else {
+ return -1;
+ }
+}
+
diff --git a/src/common/di_ops.c b/src/common/di_ops.c
index 418d6e3dca..14a1443400 100644
--- a/src/common/di_ops.c
+++ b/src/common/di_ops.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2012, The Tor Project, Inc. */
+/* Copyright (c) 2011-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -8,6 +8,8 @@
#include "orconfig.h"
#include "di_ops.h"
+#include "torlog.h"
+#include "util.h"
/**
* Timing-safe version of memcmp. As memcmp, compare the <b>sz</b> bytes at
@@ -131,3 +133,90 @@ tor_memeq(const void *a, const void *b, size_t sz)
return 1 & ((any_difference - 1) >> 8);
}
+/* Implement di_digest256_map_t as a linked list of entries. */
+struct di_digest256_map_t {
+ struct di_digest256_map_t *next;
+ uint8_t key[32];
+ void *val;
+};
+
+/** Release all storage held in <b>map</b>, calling free_fn on each value
+ * as we go. */
+void
+dimap_free(di_digest256_map_t *map, dimap_free_fn free_fn)
+{
+ while (map) {
+ di_digest256_map_t *victim = map;
+ map = map->next;
+ if (free_fn)
+ free_fn(victim->val);
+ tor_free(victim);
+ }
+}
+
+/** Adjust the map at *<b>map</b>, adding an entry for <b>key</b> ->
+ * <b>val</b>, where <b>key</b> is a DIGEST256_LEN-byte key.
+ *
+ * The caller MUST NOT add a key that already appears in the map.
+ */
+void
+dimap_add_entry(di_digest256_map_t **map,
+ const uint8_t *key, void *val)
+{
+ di_digest256_map_t *new_ent;
+ {
+ void *old_val = dimap_search(*map, key, NULL);
+ tor_assert(! old_val);
+ tor_assert(val);
+ }
+ new_ent = tor_malloc_zero(sizeof(di_digest256_map_t));
+ new_ent->next = *map;
+ memcpy(new_ent->key, key, 32);
+ new_ent->val = val;
+ *map = new_ent;
+}
+
+/** Search the map at <b>map</b> for an entry whose key is <b>key</b> (a
+ * DIGEST256_LEN-byte key) returning the corresponding value if we found one,
+ * and returning <b>dflt_val</b> if the key wasn't found.
+ *
+ * This operation takes an amount of time dependent only on the length of
+ * <b>map</b>, not on the position or presence of <b>key</b> within <b>map</b>.
+ */
+void *
+dimap_search(const di_digest256_map_t *map, const uint8_t *key,
+ void *dflt_val)
+{
+ uintptr_t result = (uintptr_t)dflt_val;
+
+ while (map) {
+ uintptr_t r = (uintptr_t) tor_memeq(map->key, key, 32);
+ r -= 1; /* Now r is (uintptr_t)-1 if memeq returned false, and
+ * 0 if memeq returned true. */
+
+ result &= r;
+ result |= ((uintptr_t)(map->val)) & ~r;
+
+ map = map->next;
+ }
+
+ return (void *)result;
+}
+
+/**
+ * Return true iff the <b>sz</b> bytes at <b>mem</b> are all zero. Runs in
+ * time independent of the contents of <b>mem</b>.
+ */
+int
+safe_mem_is_zero(const void *mem, size_t sz)
+{
+ uint32_t total = 0;
+ const uint8_t *ptr = mem;
+
+ while (sz--) {
+ total |= *ptr++;
+ }
+
+ return 1 & ((total - 1) >> 8);
+}
+
diff --git a/src/common/di_ops.h b/src/common/di_ops.h
index 8f0bb698f9..d93534b69b 100644
--- a/src/common/di_ops.h
+++ b/src/common/di_ops.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -27,5 +27,21 @@ int tor_memeq(const void *a, const void *b, size_t sz);
#define fast_memeq(a,b,c) (0==memcmp((a),(b),(c)))
#define fast_memneq(a,b,c) (0!=memcmp((a),(b),(c)))
+int safe_mem_is_zero(const void *mem, size_t sz);
+
+/** A type for a map from DIGEST256_LEN-byte blobs to void*, such that
+ * data lookups take an amount of time proportional only to the size
+ * of the map, and not to the position or presence of the item in the map.
+ *
+ * Not efficient for large maps! */
+typedef struct di_digest256_map_t di_digest256_map_t;
+typedef void (*dimap_free_fn)(void *);
+
+void dimap_free(di_digest256_map_t *map, dimap_free_fn free_fn);
+void dimap_add_entry(di_digest256_map_t **map,
+ const uint8_t *key, void *val);
+void *dimap_search(const di_digest256_map_t *map, const uint8_t *key,
+ void *dflt_val);
+
#endif
diff --git a/src/common/include.am b/src/common/include.am
index 0fdc72057f..b796ebfae8 100644
--- a/src/common/include.am
+++ b/src/common/include.am
@@ -14,6 +14,28 @@ else
libor_extra_source=
endif
+if BUILD_CURVE25519_DONNA
+src_common_libcurve25519_donna_a_SOURCES=\
+ src/ext/curve25519_donna/curve25519-donna.c
+noinst_LIBRARIES+=src/common/libcurve25519_donna.a
+LIBDONNA=src/common/libcurve25519_donna.a
+else
+if BUILD_CURVE25519_DONNA_C64
+src_common_libcurve25519_donna_a_SOURCES=\
+ src/ext/curve25519_donna/curve25519-donna-c64.c
+noinst_LIBRARIES+=src/common/libcurve25519_donna.a
+LIBDONNA=src/common/libcurve25519_donna.a
+else
+LIBDONNA=
+endif
+endif
+
+src_common_libcurve25519_donna_a_CFLAGS =
+
+if CURVE25519_ENABLED
+libcrypto_extra_source=src/common/crypto_curve25519.c
+endif
+
src_common_libor_a_SOURCES = \
src/common/address.c \
src/common/compat.c \
@@ -30,8 +52,10 @@ src_common_libor_a_SOURCES = \
src_common_libor_crypto_a_SOURCES = \
src/common/aes.c \
src/common/crypto.c \
+ src/common/crypto_format.c \
src/common/torgzip.c \
- src/common/tortls.c
+ src/common/tortls.c \
+ $(libcrypto_extra_source)
src_common_libor_event_a_SOURCES = src/common/compat_libevent.c
@@ -43,6 +67,7 @@ COMMONHEADERS = \
src/common/compat_libevent.h \
src/common/container.h \
src/common/crypto.h \
+ src/common/crypto_curve25519.h \
src/common/di_ops.h \
src/common/memarea.h \
src/common/mempool.h \
diff --git a/src/common/log.c b/src/common/log.c
index 15df2e02f0..e196a11287 100644
--- a/src/common/log.c
+++ b/src/common/log.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -874,8 +874,10 @@ add_file_log(const log_severity_list_t *severity, const char *filename)
fd = tor_open_cloexec(filename, O_WRONLY|O_CREAT|O_APPEND, 0644);
if (fd<0)
return -1;
- if (tor_fd_seekend(fd)<0)
+ if (tor_fd_seekend(fd)<0) {
+ close(fd);
return -1;
+ }
LOCK_LOGS();
add_stream_log_impl(severity, filename, fd);
diff --git a/src/common/memarea.c b/src/common/memarea.c
index ef8a8d76bc..0ae0ccca1d 100644
--- a/src/common/memarea.c
+++ b/src/common/memarea.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008-2012, The Tor Project, Inc. */
+/* Copyright (c) 2008-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/** \file memarea.c
diff --git a/src/common/memarea.h b/src/common/memarea.h
index 26c3e6dfe3..8b88585d35 100644
--- a/src/common/memarea.h
+++ b/src/common/memarea.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008-2012, The Tor Project, Inc. */
+/* Copyright (c) 2008-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/* Tor dependencies */
diff --git a/src/common/mempool.c b/src/common/mempool.c
index 78d4da6f76..4389888760 100644
--- a/src/common/mempool.c
+++ b/src/common/mempool.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2012, The Tor Project, Inc. */
+/* Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#if 1
/* Tor dependencies */
diff --git a/src/common/mempool.h b/src/common/mempool.h
index b01277df86..20312fb4c9 100644
--- a/src/common/mempool.h
+++ b/src/common/mempool.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2012, The Tor Project, Inc. */
+/* Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/procmon.c b/src/common/procmon.c
index 08fcfec49c..0a49689e3a 100644
--- a/src/common/procmon.c
+++ b/src/common/procmon.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2012, The Tor Project, Inc. */
+/* Copyright (c) 2011-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -321,7 +321,7 @@ tor_process_monitor_poll_cb(evutil_socket_t unused1, short unused2,
its_dead_jim = its_dead_jim && (errno == ESRCH);
#endif
- log(its_dead_jim ? LOG_NOTICE : LOG_INFO,
+ tor_log(its_dead_jim ? LOG_NOTICE : LOG_INFO,
procmon->log_domain, "Monitored process "PID_T_FORMAT" is %s.",
procmon->pid,
its_dead_jim ? "dead" : "still alive");
diff --git a/src/common/procmon.h b/src/common/procmon.h
index 88d64d6a15..b9388e2e90 100644
--- a/src/common/procmon.h
+++ b/src/common/procmon.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2012, The Tor Project, Inc. */
+/* Copyright (c) 2011-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/torgzip.c b/src/common/torgzip.c
index da4136228e..4328c63c8b 100644
--- a/src/common/torgzip.c
+++ b/src/common/torgzip.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/torgzip.h b/src/common/torgzip.h
index 921b232b0f..be1016445b 100644
--- a/src/common/torgzip.h
+++ b/src/common/torgzip.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/torint.h b/src/common/torint.h
index 0db9cc7e24..a993d7649a 100644
--- a/src/common/torint.h
+++ b/src/common/torint.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -214,16 +214,20 @@ typedef int32_t ssize_t;
#if (SIZEOF_VOID_P > 4 && SIZEOF_VOID_P <= 8)
#ifndef HAVE_INTPTR_T
typedef int64_t intptr_t;
+#define SIZEOF_INTPTR_T 8
#endif
#ifndef HAVE_UINTPTR_T
typedef uint64_t uintptr_t;
+#define SIZEOF_UINTPTR_T 8
#endif
#elif (SIZEOF_VOID_P > 2 && SIZEOF_VOID_P <= 4)
#ifndef HAVE_INTPTR_T
typedef int32_t intptr_t;
+#define SIZEOF_INTPTR_T 4
#endif
#ifndef HAVE_UINTPTR_T
typedef uint32_t uintptr_t;
+#define SIZEOF_UINTPTR_T 4
#endif
#else
#error "void * is either >8 bytes or <= 2. In either case, I am confused."
diff --git a/src/common/torlog.h b/src/common/torlog.h
index cc1fa64071..8675d7b6e7 100644
--- a/src/common/torlog.h
+++ b/src/common/torlog.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -153,7 +153,6 @@ void set_log_time_granularity(int granularity_msec);
void tor_log(int severity, log_domain_mask_t domain, const char *format, ...)
CHECK_PRINTF(3,4);
-#define log tor_log /* hack it so we don't conflict with log() as much */
#if defined(__GNUC__) || defined(RUNNING_DOXYGEN)
extern int log_global_min_severity_;
diff --git a/src/common/tortls.c b/src/common/tortls.c
index 1010425e13..94cedba24b 100644
--- a/src/common/tortls.c
+++ b/src/common/tortls.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -147,6 +147,12 @@ typedef struct tor_tls_context_t {
#define TOR_TLS_MAGIC 0x71571571
+typedef enum {
+ TOR_TLS_ST_HANDSHAKE, TOR_TLS_ST_OPEN, TOR_TLS_ST_GOTCLOSE,
+ TOR_TLS_ST_SENTCLOSE, TOR_TLS_ST_CLOSED, TOR_TLS_ST_RENEGOTIATE,
+ TOR_TLS_ST_BUFFEREVENT
+} tor_tls_state_t;
+
/** Holds a SSL object and its associated data. Members are only
* accessed from within tortls.c.
*/
@@ -156,12 +162,9 @@ struct tor_tls_t {
SSL *ssl; /**< An OpenSSL SSL object. */
int socket; /**< The underlying file descriptor for this TLS connection. */
char *address; /**< An address to log when describing this connection. */
- enum {
- TOR_TLS_ST_HANDSHAKE, TOR_TLS_ST_OPEN, TOR_TLS_ST_GOTCLOSE,
- TOR_TLS_ST_SENTCLOSE, TOR_TLS_ST_CLOSED, TOR_TLS_ST_RENEGOTIATE,
- TOR_TLS_ST_BUFFEREVENT
- } state : 3; /**< The current SSL state, depending on which operations have
- * completed successfully. */
+ ENUM_BF(tor_tls_state_t) state : 3; /**< The current SSL state,
+ * depending on which operations
+ * have completed successfully. */
unsigned int isServer:1; /**< True iff this is a server-side connection */
unsigned int wasV2Handshake:1; /**< True iff the original handshake for
* this connection used the updated version
@@ -331,11 +334,11 @@ tor_tls_log_one_error(tor_tls_t *tls, unsigned long err,
if (!lib) lib = "(null)";
if (!func) func = "(null)";
if (doing) {
- log(severity, domain, "TLS error while %s%s%s: %s (in %s:%s:%s)",
+ tor_log(severity, domain, "TLS error while %s%s%s: %s (in %s:%s:%s)",
doing, addr?" with ":"", addr?addr:"",
msg, lib, func, state);
} else {
- log(severity, domain, "TLS error%s%s: %s (in %s:%s:%s)",
+ tor_log(severity, domain, "TLS error%s%s: %s (in %s:%s:%s)",
addr?" with ":"", addr?addr:"",
msg, lib, func, state);
}
@@ -359,35 +362,19 @@ tls_log_errors(tor_tls_t *tls, int severity, int domain, const char *doing)
static int
tor_errno_to_tls_error(int e)
{
-#if defined(_WIN32)
switch (e) {
- case WSAECONNRESET: // most common
+ case SOCK_ERRNO(ECONNRESET): // most common
return TOR_TLS_ERROR_CONNRESET;
- case WSAETIMEDOUT:
+ case SOCK_ERRNO(ETIMEDOUT):
return TOR_TLS_ERROR_TIMEOUT;
- case WSAENETUNREACH:
- case WSAEHOSTUNREACH:
+ case SOCK_ERRNO(EHOSTUNREACH):
+ case SOCK_ERRNO(ENETUNREACH):
return TOR_TLS_ERROR_NO_ROUTE;
- case WSAECONNREFUSED:
+ case SOCK_ERRNO(ECONNREFUSED):
return TOR_TLS_ERROR_CONNREFUSED; // least common
default:
return TOR_TLS_ERROR_MISC;
}
-#else
- switch (e) {
- case ECONNRESET: // most common
- return TOR_TLS_ERROR_CONNRESET;
- case ETIMEDOUT:
- return TOR_TLS_ERROR_TIMEOUT;
- case EHOSTUNREACH:
- case ENETUNREACH:
- return TOR_TLS_ERROR_NO_ROUTE;
- case ECONNREFUSED:
- return TOR_TLS_ERROR_CONNREFUSED; // least common
- default:
- return TOR_TLS_ERROR_MISC;
- }
-#endif
}
/** Given a TOR_TLS_* error code, return a string equivalent. */
@@ -440,12 +427,12 @@ tor_tls_get_error(tor_tls_t *tls, int r, int extra,
if (extra&CATCH_SYSCALL)
return TOR_TLS_SYSCALL_;
if (r == 0) {
- log(severity, LD_NET, "TLS error: unexpected close while %s (%s)",
+ tor_log(severity, LD_NET, "TLS error: unexpected close while %s (%s)",
doing, SSL_state_string_long(tls->ssl));
tor_error = TOR_TLS_ERROR_IO;
} else {
int e = tor_socket_errno(tls->socket);
- log(severity, LD_NET,
+ tor_log(severity, LD_NET,
"TLS error: <syscall error while %s> (errno=%d: %s; state=%s)",
doing, e, tor_socket_strerror(e),
SSL_state_string_long(tls->ssl));
@@ -456,7 +443,7 @@ tor_tls_get_error(tor_tls_t *tls, int r, int extra,
case SSL_ERROR_ZERO_RETURN:
if (extra&CATCH_ZERO)
return TOR_TLS_ZERORETURN_;
- log(severity, LD_NET, "TLS connection closed while %s in state %s",
+ tor_log(severity, LD_NET, "TLS connection closed while %s in state %s",
doing, SSL_state_string_long(tls->ssl));
tls_log_errors(tls, severity, domain, doing);
return TOR_TLS_CLOSE;
@@ -1237,7 +1224,7 @@ tor_tls_context_new(crypto_pk_t *identity, unsigned int key_lifetime,
authcert = tor_tls_create_certificate(rsa_auth, identity, nickname, nn2,
key_lifetime);
if (!cert || !idcert || !authcert) {
- log(LOG_WARN, LD_CRYPTO, "Error creating certificate");
+ log_warn(LD_CRYPTO, "Error creating certificate");
goto error;
}
}
@@ -2285,7 +2272,7 @@ tor_tls_shutdown(tor_tls_t *tls)
*/
if (tls->state == TOR_TLS_ST_GOTCLOSE ||
tls->state == TOR_TLS_ST_SENTCLOSE) {
- log(LOG_WARN, LD_NET,
+ log_warn(LD_NET,
"TLS returned \"half-closed\" value while already half-closed");
return TOR_TLS_ERROR_MISC;
}
@@ -2335,7 +2322,7 @@ log_cert_lifetime(int severity, const X509 *cert, const char *problem)
struct tm tm;
if (problem)
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
"Certificate %s. Either their clock is set wrong, or your clock "
"is wrong.",
problem);
@@ -2360,7 +2347,7 @@ log_cert_lifetime(int severity, const X509 *cert, const char *problem)
strftime(mytime, 32, "%b %d %H:%M:%S %Y UTC", tor_gmtime_r(&now, &tm));
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
"(certificate lifetime runs from %s through %s. Your time is %s.)",
s1,s2,mytime);
@@ -2581,7 +2568,7 @@ check_no_tls_errors_(const char *fname, int line)
{
if (ERR_peek_error() == 0)
return;
- log(LOG_WARN, LD_CRYPTO, "Unhandled OpenSSL errors found at %s:%d: ",
+ log_warn(LD_CRYPTO, "Unhandled OpenSSL errors found at %s:%d: ",
tor_fix_source_file(fname), line);
tls_log_errors(NULL, LOG_WARN, LD_NET, NULL);
}
diff --git a/src/common/tortls.h b/src/common/tortls.h
index df3ab87a17..1ae6344d04 100644
--- a/src/common/tortls.h
+++ b/src/common/tortls.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_TORTLS_H
diff --git a/src/common/util.c b/src/common/util.c
index 61d09aa4a8..93e2ba8e14 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -20,7 +20,6 @@
#define UTIL_PRIVATE
#include "util.h"
#include "torlog.h"
-#undef log
#include "crypto.h"
#include "torint.h"
#include "container.h"
@@ -323,8 +322,8 @@ tor_log_mallinfo(int severity)
* ===== */
/**
- * Returns the natural logarithm of d base 2. We define this wrapper here so
- * as to make it easier not to conflict with Tor's log() macro.
+ * Returns the natural logarithm of d base e. We defined this wrapper here so
+ * to avoid conflicts with old versions of tor_log(), which were named log().
*/
double
tor_mathlog(double d)
@@ -2375,8 +2374,10 @@ read_file_to_str(const char *filename, int flags, struct stat *stat_out)
}
#endif
- if ((uint64_t)(statbuf.st_size)+1 >= SIZE_T_CEILING)
+ if ((uint64_t)(statbuf.st_size)+1 >= SIZE_T_CEILING) {
+ close(fd);
return NULL;
+ }
string = tor_malloc((size_t)(statbuf.st_size+1));
@@ -4919,7 +4920,8 @@ tor_check_port_forwarding(const char *filename,
status = tor_spawn_background(filename, argv, NULL, &child_handle);
#endif
- tor_free(argv);
+ tor_free_((void*)argv);
+ argv=NULL;
if (PROCESS_STATUS_ERROR == status) {
log_warn(LD_GENERAL, "Failed to start port forwarding helper %s",
diff --git a/src/common/util.h b/src/common/util.h
index 005a3f37cd..911b1b5a37 100644
--- a/src/common/util.h
+++ b/src/common/util.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/config/geoip b/src/config/geoip
index 7b7055b2e3..df45034037 100644
--- a/src/config/geoip
+++ b/src/config/geoip
@@ -1,4 +1,4 @@
-# Last updated based on December 5 2012 Maxmind GeoLite Country
+# Last updated based on January 2 2013 Maxmind GeoLite Country
# Visit the following URL for details on the conversion:
# https://gitweb.torproject.org/tor.git/blob/HEAD:/src/config/README.geoip
16777216,16777471,AU
@@ -71,7 +71,9 @@
30408704,33488895,KR
33488896,33554431,AU
33554432,34603007,FR
-34603008,35127295,EU
+34603008,34911743,EU
+34911744,34911999,AT
+34912000,35127295,EU
35127296,35651583,GB
35651584,36700159,IT
36700160,36962303,AE
@@ -80,17 +82,13 @@
37486592,37748735,RU
37748736,38273023,SE
38273024,38797311,KZ
-38797312,38802175,PT
-38802176,38802431,FR
-38802432,39059455,PT
+38797312,39059455,PT
39059456,39321599,GR
39321600,39583743,SA
39583744,39845887,RU
39845888,40370175,GB
40370176,40894463,DK
-40894464,41005055,IT
-41005056,41005311,US
-41005312,41418751,IT
+40894464,41418751,IT
41418752,41943039,GB
41943040,42205183,DK
42205184,42467327,KZ
@@ -109,9 +107,9 @@
49807360,50331647,SE
50331648,57083940,US
57083941,57083941,BE
-57083942,68257567,US
-68257568,68257599,CA
-68257600,68296775,US
+57083942,68259583,US
+68259584,68259599,CA
+68259600,68296775,US
68296776,68296783,MX
68296784,68298887,US
68298888,68298895,CA
@@ -173,9 +171,7 @@
71667634,71667634,DE
71667635,71667656,US
71667657,71667657,NL
-71667658,72303007,US
-72303008,72303039,CA
-72303040,72348895,US
+71667658,72348895,US
72348896,72348927,CA
72348928,83886079,US
83886080,83951615,SY
@@ -251,7 +247,8 @@
85403648,85405695,FR
85405696,85407743,RU
85407744,85409791,FI
-85409792,85417983,CH
+85409792,85411839,IS
+85411840,85417983,CH
85417984,85422079,RU
85422080,85424127,IR
85424128,85426175,TR
@@ -347,7 +344,8 @@
86507520,86573055,ES
86573056,86638591,RO
86638592,86671359,RU
-86671360,86673407,GB
+86671360,86671871,JE
+86671872,86673407,GB
86673408,86675455,DE
86675456,86677503,IT
86677504,86679551,FR
@@ -382,7 +380,12 @@
86812672,86814719,RU
86814720,86816767,SE
86816768,86818815,EE
-86818816,86822911,PT
+86818816,86819071,SE
+86819072,86819327,PT
+86819328,86819583,SE
+86819584,86821375,PT
+86821376,86821887,SE
+86821888,86822911,PT
86822912,86824959,AT
86824960,86827007,LV
86827008,86831103,GB
@@ -442,7 +445,15 @@
87638016,87640063,UA
87640064,87642111,RS
87642112,87646207,GB
-87646208,87654399,FR
+87646208,87648255,RE
+87648256,87648767,FR
+87648768,87649279,RE
+87649280,87649535,FR
+87649536,87650303,RE
+87650304,87650559,FR
+87650560,87651071,RE
+87651072,87652351,FR
+87652352,87654399,RE
87654400,87670783,PL
87670784,87672831,DE
87672832,87674879,CH
@@ -660,8 +671,8 @@
93681664,93683711,UA
93683712,93685759,AT
93685760,93687807,BE
-93687808,93690367,RU
-93690368,93691903,GB
+93687808,93690879,RU
+93690880,93691903,GB
93691904,93693951,PL
93693952,93695999,IE
93696000,93700095,FR
@@ -745,7 +756,8 @@
95170560,95174655,GB
95174656,95191039,IT
95191040,95195135,CH
-95195136,95197183,PT
+95195136,95195391,SE
+95195392,95197183,PT
95197184,95203327,GB
95203328,95205375,FR
95205376,95207423,PL
@@ -927,7 +939,11 @@
136239104,136415487,US
136415488,136415743,CA
136415744,167772159,US
-184549376,201859071,US
+184549376,201620303,US
+201620304,201620311,CA
+201620312,201674095,US
+201674096,201674111,CA
+201674112,201859071,US
201859072,201859087,VI
201859088,201897983,US
201897984,201898239,PR
@@ -941,19 +957,18 @@
202621480,202621487,PR
202621488,202621495,US
202621496,202621503,PR
-202621504,202621703,US
-202621704,202621711,PR
-202621712,202625287,US
+202621504,202625287,US
202625288,202625295,PR
-202625296,202706431,US
+202625296,202696783,US
+202696784,202696791,PR
+202696792,202706431,US
202706432,202706943,PR
202706944,202935551,US
202935552,202935807,PR
-202935808,203197063,US
-203197064,203197071,CA
-203197072,203625391,US
+202935808,203625391,US
203625392,203625399,PR
-203625400,203658303,US
+203625400,203658287,US
+203658288,203658303,VI
203658304,203658367,PR
203658368,203658415,US
203658416,203658423,VI
@@ -967,9 +982,9 @@
203658944,203658951,PR
203658952,203658967,US
203658968,203658991,VI
-203658992,203659071,US
-203659072,203659135,VI
-203659136,203850679,US
+203658992,203659007,US
+203659008,203659263,VI
+203659264,203850679,US
203850680,203850687,CA
203850688,204046335,US
204046336,204047103,PR
@@ -979,9 +994,7 @@
204047256,204047263,VI
204047264,204047311,US
204047312,204047335,VI
-204047336,204047391,US
-204047392,204047423,VI
-204047424,204047439,US
+204047336,204047439,US
204047440,204047455,VI
204047456,204047463,US
204047464,204047471,VI
@@ -1011,7 +1024,11 @@
205953312,205953319,PR
205953320,205953327,US
205953328,205953351,PR
-205953352,209783247,US
+205953352,208651559,US
+208651560,208651567,PR
+208651568,208651639,US
+208651640,208651647,PR
+208651648,209783247,US
209783248,209783255,CA
209783256,209783679,US
209783680,209783807,CA
@@ -1019,7 +1036,11 @@
209784952,209784959,CA
209784960,209788767,US
209788768,209788783,CA
-209788784,209809407,US
+209788784,209789959,US
+209789960,209789967,FR
+209789968,209799007,US
+209799008,209799031,CA
+209799032,209809407,US
209809408,209809471,CA
209809472,209809599,US
209809600,209809663,CA
@@ -1029,11 +1050,7 @@
209845144,209845151,DE
209845152,209867103,US
209867104,209867111,CA
-209867112,209988527,US
-209988528,209988535,VI
-209988536,210090111,US
-210090112,210090119,PR
-210090120,210458623,US
+209867112,210458623,US
210458624,210458631,PR
210458632,210785791,US
210785792,210786303,BO
@@ -1041,19 +1058,23 @@
211126784,211126911,PR
211126912,211263999,US
211264000,211264255,SA
-211264256,211410031,US
-211410032,211410039,PR
-211410040,211410127,US
-211410128,211410135,PR
-211410136,211597055,US
+211264256,211597055,US
211597056,211597071,VI
-211597072,212122039,US
+211597072,211597375,US
+211597376,211597439,VI
+211597440,211597719,US
+211597720,211597727,VI
+211597728,211597743,PR
+211597744,211597759,US
+211597760,211597775,PR
+211597776,211597791,VI
+211597792,212122039,US
212122040,212122047,PR
-212122048,212267567,US
-212267568,212267575,VI
-212267576,212491249,US
+212122048,212491249,US
212491250,212491250,US
-212491251,212787199,US
+212491251,212733527,US
+212733528,212733535,PR
+212733536,212787199,US
212787200,212788223,PR
212788224,212788479,US
212788480,212788607,VI
@@ -1081,7 +1102,10 @@
212791448,212791455,US
212791456,212791479,VI
212791480,212791807,PR
-212791808,212792063,VI
+212791808,212791815,US
+212791816,212791871,VI
+212791872,212791935,US
+212791936,212792063,VI
212792064,212792191,US
212792192,212792199,PR
212792200,212792215,VI
@@ -1110,19 +1134,13 @@
212794912,212794943,PR
212794944,212794999,US
212795000,212795007,VI
-212795008,212838529,US
-212838530,212838531,PR
-212838532,213579471,US
-213579472,213579479,PR
-213579480,213895679,US
+212795008,213895679,US
213895680,213895743,VI
213895744,213923839,US
213923840,213924863,PR
213924864,213925631,US
213925632,213925887,PR
-213925888,213936895,US
-213936896,213936903,PR
-213936904,214185215,US
+213925888,214185215,US
214185216,214185471,PR
214185472,214185983,US
214185984,214187007,PR
@@ -1163,7 +1181,17 @@
214698656,214698919,PR
214698920,214698927,US
214698928,214699231,PR
-214699232,214699519,US
+214699232,214699271,US
+214699272,214699279,VI
+214699280,214699303,US
+214699304,214699311,VI
+214699312,214699335,PR
+214699336,214699367,VI
+214699368,214699383,US
+214699384,214699455,VI
+214699456,214699471,US
+214699472,214699487,VI
+214699488,214699519,US
214699520,214699647,PR
214699648,214699775,VI
214699776,214699783,PR
@@ -1187,13 +1215,19 @@
215001344,215001599,VI
215001600,215002111,US
215002112,215002127,VI
-215002128,216627287,US
+215002128,216417663,US
+216417664,216417727,PR
+216417728,216627287,US
216627288,216627295,PR
-216627296,216637639,US
-216637640,216637647,PR
-216637648,218955263,US
-218955264,218955519,CA
-218955520,219187465,US
+216627296,216996407,US
+216996408,216996415,PR
+216996416,216996543,US
+216996544,216996559,PR
+216996560,217046775,US
+217046776,217046783,PR
+217046784,218955263,US
+218955264,218955391,CA
+218955392,219187465,US
219187466,219187467,EU
219187468,219249919,US
219249920,219250175,GB
@@ -1210,7 +1244,6 @@
234947584,234950655,JP
234950656,234951679,AU
234951680,234952703,HK
-234952704,234954751,JP
234954752,234961663,NZ
234961664,234961919,US
234961920,234971135,NZ
@@ -1256,9 +1289,9 @@
247472128,247479295,JP
247479296,247480319,CN
247480320,247482367,MY
-247482368,247482623,PG
-247482624,247482879,AU
-247482880,247483391,PG
+247482368,247482879,PG
+247482880,247483135,AU
+247483136,247483391,PG
247483392,247484415,CN
247484416,247488511,KR
247488512,247496703,JP
@@ -1289,9 +1322,9 @@
265529600,265529855,AP
265529856,265545983,US
265545984,265546239,CN
-265546240,266062079,US
-266062080,266062335,IN
-266062336,266070271,US
+265546240,266059775,US
+266059776,266067967,IN
+266067968,266070271,US
266070272,266070527,AU
266070528,266578175,US
266578176,266578431,CA
@@ -1299,9 +1332,9 @@
266586368,266586623,CA
266586624,266598655,US
266598656,266598911,BR
-266598912,288224255,US
-288224256,288224767,CA
-288224768,289406975,US
+266598912,288195071,US
+288195072,288198655,CA
+288198656,289406975,US
289406976,289603583,IE
289603584,289628415,GB
289628416,289628671,US
@@ -1356,45 +1389,17 @@
290423808,290424831,SE
290424832,290513663,US
290513664,290513919,MY
-290513920,290595839,US
-290595840,290596095,SG
-290596096,290856959,US
-290856960,290865151,AU
-290865152,291361279,US
-291361280,291361535,CN
-291361536,300440575,US
-300440576,300440831,GB
-300440832,300458751,US
-300458752,300459007,GB
-300459008,300477951,US
-300477952,300478207,AU
-300478208,300479743,US
-300479744,300479999,GB
-300480000,300505599,US
-300505600,300505855,GB
-300505856,300512255,US
-300512256,300513279,CA
-300513280,300520447,US
-300520448,300520703,GB
-300520704,300521215,US
-300521216,300521471,DE
-300521472,300537599,US
-300537600,300537855,CA
-300537856,344260607,US
+290513920,344260607,US
344260608,344261119,GB
344261120,344261778,US
344261779,344261779,EU
344261780,344262655,US
344262656,344262911,GB
-344262912,344264703,US
-344264704,344264959,DK
-344264960,344268817,US
+344262912,344268817,US
344268818,344268818,EU
-344268819,344270847,US
-344270848,344271103,GB
-344271104,344276991,US
-344276992,344277247,NL
-344277248,344588543,US
+344268819,344270860,US
+344270861,344270861,GB
+344270862,344588543,US
344588544,344589055,GB
344589056,344592895,US
344592896,344592945,GB
@@ -1423,7 +1428,9 @@
344881152,344881407,IN
344881408,344977407,US
344977408,344977663,IN
-344977664,386924543,US
+344977664,386862079,US
+386862080,386862335,JP
+386862336,386924543,US
386924544,387055615,CA
387055616,387121151,PR
387121152,387132143,US
@@ -1469,6 +1476,7 @@
406216704,406241279,US
406241280,406257663,PR
406274048,406290431,PR
+406290432,406298623,US
406298624,406306815,PR
406306816,406323199,CA
406323200,406388735,US
@@ -1503,9 +1511,27 @@
410174844,410174847,US
410174848,410177735,CA
410177736,410177743,US
-410177744,410178463,CA
-410178464,410178467,US
-410178468,410189823,CA
+410177744,410180643,CA
+410180644,410180647,US
+410180648,410180695,CA
+410180696,410180703,US
+410180704,410180711,CA
+410180712,410180715,US
+410180716,410180759,CA
+410180760,410180763,US
+410180764,410180771,CA
+410180772,410180775,US
+410180776,410186719,CA
+410186720,410186723,US
+410186724,410187015,CA
+410187016,410187023,US
+410187024,410187175,CA
+410187176,410187183,US
+410187184,410187451,CA
+410187452,410187455,US
+410187456,410187703,CA
+410187704,410187707,US
+410187708,410189823,CA
410189824,410648575,US
410648576,410714111,CA
410714112,411164671,US
@@ -1521,9 +1547,7 @@
411664384,411680767,US
411680768,411682391,CA
411682392,411682399,US
-411682400,411682975,CA
-411682976,411682983,US
-411682984,411683863,CA
+411682400,411683863,CA
411683864,411683871,US
411683872,411684599,CA
411684600,411684607,US
@@ -1724,7 +1748,9 @@
460279808,460283903,AU
460283904,460292095,KR
460292096,460300287,JP
-460300288,460312575,HK
+460300288,460300799,HK
+460300800,460300927,JP
+460300928,460312575,HK
460312576,460320767,SG
460320768,460324863,AU
460324864,460341247,CN
@@ -1754,10 +1780,7 @@
460596224,460597247,AU
460598272,460599295,CN
460599296,460601343,IN
-460601344,460601491,US
-460601492,460601495,AF
-460601496,460601599,US
-460601600,460602367,AF
+460601344,460602367,AF
460602368,460603391,KH
460603392,460718079,KR
460718080,460722175,JP
@@ -1833,8 +1856,7 @@
461574144,461578239,JP
461578240,461586431,MY
461586432,461602815,AU
-461602816,461606911,GB
-461606912,461619199,TH
+461602816,461619199,TH
461619200,461623295,JP
461623296,461625343,IN
461625344,461626367,AU
@@ -1887,7 +1909,17 @@
520421376,520486911,AT
520486912,520493567,GB
520493568,520494079,GB
-520494080,520503295,GB
+520494080,520495871,GB
+520495872,520496383,DE
+520496384,520497151,GB
+520497152,520497407,FR
+520497408,520497663,GB
+520497664,520498175,FR
+520498176,520498943,GB
+520498944,520499199,FR
+520499200,520500479,GB
+520500480,520500735,DE
+520500736,520503295,GB
520503296,520505343,PL
520505344,520507391,GB
520507392,520511487,TR
@@ -1989,7 +2021,10 @@
521676800,521678847,ES
521678848,521680895,NL
521680896,521682943,EE
-521682944,521687039,SE
+521682944,521683679,SE
+521683680,521683695,FI
+521683696,521683711,NO
+521683712,521687039,SE
521687040,521689087,GB
521689088,521691135,BY
521691136,521693183,DE
@@ -2194,12 +2229,11 @@
528723968,528726015,ES
528726016,528736255,RU
528736256,528740351,SK
-528740352,528742399,IT
+528740352,528742143,IT
+528742144,528742399,US
528742400,528744447,RU
528744448,528746495,GB
-528746496,528748543,RO
528748544,528752639,CZ
-528752640,528760831,RO
528760832,528762879,PL
528762880,528764927,RU
528764928,528769023,RO
@@ -2233,7 +2267,9 @@
528941056,528943103,RO
528943104,528945151,RU
528945152,528949247,PL
-528949248,528973823,RU
+528949248,528967679,RU
+528967680,528968703,UA
+528968704,528973823,RU
528973824,528982015,UA
528982016,528986111,PL
528986112,528988159,UA
@@ -2249,14 +2285,11 @@
529596416,529661951,TR
529661952,529727487,GE
529727488,529793023,HR
-529793024,529797119,RU
-529797120,529801215,CZ
-529801216,529813503,RU
-529813504,529819647,CZ
-529819648,529821695,RU
+529793024,529821695,RU
529821696,529856511,CZ
529856512,529857535,KZ
-529857536,529858559,CZ
+529857536,529857791,UA
+529857792,529858559,CZ
529858560,529924095,NL
529924096,529989631,DE
529989632,530055167,NL
@@ -2264,9 +2297,7 @@
530120704,530186239,CY
530186240,530251775,IL
530251776,530317311,TR
-530317312,530399231,IT
-530399232,530407423,US
-530407424,530579455,IT
+530317312,530579455,IT
530579456,530710527,NL
530710528,530841599,RU
530841600,530972671,CH
@@ -2279,7 +2310,9 @@
531183616,531185663,NL
531185664,531193855,TR
531193856,531194367,IE
-531194368,531195903,GB
+531194368,531194879,GB
+531194880,531195391,IE
+531195392,531195903,GB
531195904,531197951,IT
531197952,531199999,GB
531200000,531202047,RU
@@ -2320,15 +2353,10 @@
531402752,531404799,LU
531404800,531406847,FI
531406848,531408895,FR
-531408896,531410943,IM
-531410944,531412479,PL
-531412480,531412735,IM
-531412736,531413503,PL
-531413504,531415039,IM
+531408896,531415039,PL
531415040,531423231,RU
531423232,531425279,NO
-531425280,531426303,SE
-531426304,531427327,FR
+531425280,531427327,FR
531427328,531431423,GB
531431424,531496959,RO
531496960,531628031,PL
@@ -2355,8 +2383,7 @@
532152320,532168703,DE
532168704,532185087,NL
532185088,532201471,IR
-532201472,532201727,AZ
-532201728,532221951,RU
+532201472,532221951,RU
532221952,532223999,IT
532224000,532226047,NO
532226048,532234239,GB
@@ -2404,7 +2431,8 @@
532740096,532742143,KG
532742144,532746239,GB
532746240,532750335,IT
-532750336,532752383,SM
+532750336,532752127,SM
+532752128,532752383,IT
532752384,532754431,BE
532754432,532756479,FR
532756480,532758527,IT
@@ -2428,9 +2456,7 @@
532801536,532803583,DK
532803584,532805631,FR
532805632,532807679,SE
-532807680,532957583,IT
-532957584,532957599,US
-532957600,533200895,IT
+532807680,533200895,IT
533200896,533233663,TR
533233664,533250047,IE
533250048,533254143,RU
@@ -2462,9 +2488,7 @@
533725184,533807103,SE
533807104,533811199,LT
533811200,533815295,DE
-533815296,533818367,CY
-533818368,533818879,GB
-533818880,533819391,CY
+533815296,533819391,CY
533819392,533823487,DE
533823488,533825535,BE
533825536,533831679,IS
@@ -2476,7 +2500,6 @@
533858304,533859231,HU
533859232,533859263,TR
533859264,533860351,HU
-533860352,533862399,DE
533862400,533864447,GB
533864448,533889023,TR
533889024,533891071,GB
@@ -2500,9 +2523,7 @@
533987328,534118399,DE
534118400,534151167,KW
534151168,534183935,DE
-534183936,534233599,RO
-534233600,534233855,IT
-534233856,534249471,RO
+534183936,534249471,RO
534249472,534253567,GB
534253568,534257663,FR
534257664,534259711,SE
@@ -2560,40 +2581,10 @@
534767616,534769663,HU
534769664,534773759,IT
534773760,536870911,DE
-536870912,539623999,US
-539624000,539624031,NL
-539624032,539624567,US
-539624568,539624575,IE
-539624576,539624577,US
+536870912,539623423,US
+539623424,539624577,NL
539624578,539624578,EU
-539624579,539624703,US
-539624704,539624735,GB
-539624736,539624743,NL
-539624744,539624751,GB
-539624752,539624767,NL
-539624768,539624775,US
-539624776,539624799,GB
-539624800,539624831,US
-539624832,539624959,IE
-539624960,539625087,US
-539625088,539625119,GB
-539625120,539625135,US
-539625136,539625151,NL
-539625152,539625391,US
-539625392,539625407,GB
-539625408,539626495,US
-539626496,539626543,GB
-539626544,539627127,US
-539627128,539627135,SE
-539627136,539627231,US
-539627232,539627247,JP
-539627248,539627263,CW
-539627264,539627391,US
-539627392,539627399,JP
-539627400,539627407,IE
-539627408,539627423,JP
-539627424,539627503,US
-539627504,539627519,NL
+539624579,539627519,NL
539627520,539656191,US
539656192,539660287,IN
539660288,540687231,US
@@ -2602,91 +2593,21 @@
540737536,540737757,BZ
540737758,540737758,BR
540737759,540737791,BZ
-540737792,540738047,BR
-540738048,540750175,BZ
+540737792,540737919,BR
+540737920,540750175,BZ
540750176,540750207,MX
540750208,540750239,BZ
540750240,540750255,MX
-540750256,540753919,BZ
-540753920,540754175,AR
-540754176,540762111,BZ
-540762112,540762367,CL
-540762368,540778495,BZ
-540778496,540786687,BR
-540786688,540803071,BZ
-540803072,540811791,US
-540811792,540811799,JP
-540811800,540811871,US
-540811872,540811903,GB
-540811904,540811935,US
-540811936,540811967,DE
-540811968,540811983,JP
-540811984,540811991,US
-540811992,540811999,DE
-540812000,540812295,US
-540812296,540812303,SG
-540812304,540812319,DE
-540812320,540812503,US
-540812504,540812511,SG
-540812512,540812719,US
-540812720,540812727,SG
-540812728,540812735,US
-540812736,540812743,SG
-540812744,540812751,NL
-540812752,540812767,SG
-540812768,540812775,US
-540812776,540812783,NL
-540812784,540813055,US
-540813056,540813063,SG
-540813064,540813071,US
-540813072,540813103,NL
-540813104,540813119,US
-540813120,540813183,SG
-540813184,540813247,NL
-540813248,540813287,US
-540813288,540813295,DE
-540813296,540813303,SG
-540813304,540813311,US
-540813312,540813567,NL
-540813568,540813639,DE
-540813640,540813671,TW
-540813672,540813695,US
-540813696,540814015,TW
-540814016,540814079,US
-540814080,540814271,TW
-540814272,540814279,DE
-540814280,540814327,US
-540814328,540814335,IN
+540750256,540803071,BZ
+540803072,540811263,US
+540811264,540814335,SG
540814336,540814591,AP
-540814592,540814719,US
-540814720,540814735,SG
-540814736,540815124,US
-540815125,540815126,SG
-540815127,540815168,US
-540815169,540815182,SG
-540815183,540819455,US
-540819456,540823551,CA
-540823552,540826671,US
-540826672,540826719,CA
-540826720,540827135,US
-540827136,540827263,CA
-540827264,540827295,US
-540827296,540827311,CA
-540827312,540827359,US
-540827360,540827375,CA
-540827376,540827391,US
-540827392,540827647,CA
-540827648,540829183,US
-540829184,540829439,CA
-540829440,540829695,US
-540829696,540829951,CA
-540829952,540830511,US
-540830512,540830527,CA
-540830528,540830559,US
-540830560,540830575,CA
-540830576,540830623,US
-540830624,540830975,CA
-540830976,543690751,US
+540814592,540815359,SG
+540815360,540819455,US
+540819456,540827647,CA
+540827648,540829695,US
+540829696,540831743,CA
+540831744,543690751,US
543690752,543691007,AR
543691008,543691263,US
543691264,543691519,BR
@@ -2727,7 +2648,9 @@
543834112,543835135,GB
543835136,543835647,FR
543835648,543836159,US
-543836160,543838207,FR
+543836160,543836671,FR
+543836672,543837183,US
+543837184,543838207,FR
543838208,543840255,US
543840256,543841279,BE
543841280,543842303,US
@@ -2781,25 +2704,15 @@
543878656,543880191,IT
543880192,543881727,NL
543881728,543883263,GB
-543883264,544249855,US
-544249856,544250111,GB
-544250112,544432127,US
-544432128,544436223,CA
-544436224,545712127,US
-545712128,545714175,PR
-545714176,548646399,US
-548646400,548646911,PR
-548646912,586973439,US
-586973440,586973695,CA
-586973696,586975999,US
+543883264,548608767,US
+548608768,548609023,PR
+548609024,548616191,US
+548616192,548618239,PR
+548618240,586975999,US
586976000,586976255,AP
-586976256,586977023,US
-586977024,586977279,AU
-586977280,587006719,US
+586976256,587006719,US
587006720,587006975,GB
-587006976,587039487,US
-587039488,587039743,NO
-587039744,603979775,US
+587006976,603979775,US
603979776,603980799,CN
603980800,603981823,NP
603981824,604110847,CN
@@ -2897,8 +2810,9 @@
621928448,621932543,DE
621932544,621934591,UA
621934592,621936639,SE
-621936640,621969407,RU
-621969408,621971455,RO
+621936640,621939455,RU
+621939456,621940479,GE
+621940480,621969407,RU
621971456,621971967,IM
621971968,621973503,GB
621973504,621975551,IE
@@ -3041,9 +2955,7 @@
624005120,624007167,IR
624007168,624009215,DE
624009216,624025599,RU
-624025600,624026111,NL
-624026112,624026367,DE
-624026368,624027647,NL
+624025600,624027647,NL
624027648,624029695,FR
624029696,624033791,SE
624033792,624164863,DE
@@ -3370,9 +3282,7 @@
630736896,630738943,TR
630738944,630743039,ES
630743040,630751231,SK
-630751232,630757375,ES
-630757376,630757631,GB
-630757632,630759423,ES
+630751232,630759423,ES
630759424,630767615,IR
630767616,630783999,GB
630784000,630802431,RU
@@ -3415,7 +3325,9 @@
633098240,633100287,HU
633100288,633102335,FR
633102336,633110527,GB
-633110528,633143295,CZ
+633110528,633134079,CZ
+633134080,633135103,SK
+633135104,633143295,CZ
633143296,633208831,PT
633208832,633241599,RU
633241600,633274367,PL
@@ -3467,9 +3379,12 @@
634204160,634206207,RU
634206208,634208255,GB
634208256,634216447,RU
-634216448,634217983,HU
-634217984,634218495,HR
-634218496,634220543,HU
+634216448,634217471,HR
+634217472,634218239,HU
+634218240,634218495,HR
+634218496,634218751,HU
+634218752,634219007,HR
+634219008,634220543,HU
634220544,634222591,IQ
634222592,634224639,DK
634224640,634388479,IT
@@ -3548,7 +3463,7 @@
635717632,635719679,NL
635719680,635723775,RU
635723776,635725823,ES
-635725824,635727871,NO
+635725824,635727871,US
635727872,635729919,RU
635729920,635748351,DE
635748352,635764735,IE
@@ -3578,10 +3493,12 @@
636162048,636166143,IR
636166144,636168191,ES
636168192,636170239,GB
-636170240,636170495,AT
+636170240,636170495,PL
636170496,636170751,IS
636170752,636171007,CH
-636171008,636171824,AT
+636171008,636171263,AT
+636171264,636171519,CL
+636171520,636171824,AT
636171825,636171825,GB
636171826,636172031,AT
636172032,636172287,IM
@@ -3604,7 +3521,9 @@
636952576,636956671,NL
636956672,636958719,IT
636958720,636960767,PL
-636960768,636968959,DE
+636960768,636967935,DE
+636967936,636968191,IT
+636968192,636968959,DE
636968960,636975103,TR
636975104,636977151,ES
636977152,637140991,PL
@@ -3621,8 +3540,8 @@
637302784,637304831,NL
637304832,637313023,CH
637313024,637317119,EU
-637317120,637317375,ES
-637317376,637319167,CH
+637317120,637318143,ES
+637318144,637319167,CH
637319168,637321215,AT
637321216,637323263,GB
637323264,637325311,FR
@@ -3638,14 +3557,14 @@
641741056,641741311,US
641741312,641744895,CA
641744896,641761279,US
-641761280,641761535,CA
-641761536,641762815,US
-641762816,641763071,CA
-641763072,641765375,US
-641765376,641765887,CA
-641765888,641826815,US
+641761280,641765887,CA
+641765888,641766399,US
+641766400,641767423,CA
+641767424,641826815,US
641826816,641827839,MX
-641827840,642695167,US
+641827840,642088959,US
+642088960,642097151,CA
+642097152,642695167,US
642695168,642696191,US
642696192,642793471,US
642793472,642795519,CA
@@ -3655,62 +3574,48 @@
642797056,642797567,CA
642797568,642801663,US
642801664,642809855,CA
-642809856,643875071,US
+642809856,642924543,US
+642924544,642926591,MX
+642926592,643875071,US
643875072,643875327,US
-643875328,644042751,US
-644042752,644043007,IR
-644043008,644048127,US
+643875328,644048127,US
644048128,644048383,US
644048384,644049151,US
644049152,644049407,US
644049408,644055039,US
-644055040,644055807,CA
-644055808,644056063,US
-644056064,644056575,CA
-644056576,644057087,US
-644057088,644057599,CA
-644057600,644058111,US
-644058112,644058975,CA
-644058976,644058991,US
-644058992,644059135,CA
+644055040,644056047,CA
+644056048,644056063,US
+644056064,644059135,CA
644059136,644059391,CA
-644059392,644059647,CA
-644059648,644060671,US
-644060672,644061183,CA
-644061184,644062463,US
-644062464,644062719,CA
-644062720,644063231,US
-644063232,644064767,CA
-644064768,644066559,US
-644066560,644066815,CA
-644066816,644067071,US
-644067072,644067711,CA
-644067712,644093439,US
+644059392,644061631,CA
+644061632,644061663,US
+644061664,644065023,CA
+644065024,644065055,US
+644065056,644071679,CA
+644071680,644072447,US
+644072448,644073471,CA
+644073472,644084223,US
+644084224,644084479,GU
+644084480,644093439,US
644093440,644093695,US
644093696,644121855,US
644121856,644122111,US
-644122112,644236031,US
-644236032,644236287,CA
-644236288,644237311,US
-644237312,644237567,CA
-644237568,644239359,US
-644239360,644240383,CA
-644240384,644268671,US
-644268672,644268735,CA
-644268736,644323391,US
+644122112,644235263,US
+644235264,644243455,CA
+644243456,644268543,US
+644268544,644268799,CA
+644268800,644323391,US
644323392,644323407,CA
-644323408,644389375,US
-644389376,644389631,CA
-644389632,644389759,US
-644389760,644390911,CA
-644390912,644399103,US
-644399104,644399359,CA
-644399360,644403199,US
+644323408,644388863,US
+644388864,644390911,CA
+644390912,644403199,US
644403200,644403711,CA
-644403712,644408063,US
+644403712,644403967,US
+644403968,644404223,CA
+644404224,644408063,US
644408064,644408319,CA
-644408320,644414207,US
-644414208,644414463,CA
+644408320,644413439,US
+644413440,644414463,CA
644414464,644422911,US
644422912,644423423,JP
644423424,644569087,US
@@ -3720,43 +3625,33 @@
644583424,644628479,US
644628480,644636671,CA
644636672,644718591,US
-644718592,644720639,CA
-644720640,644759551,US
+644718592,644722687,CA
+644722688,644759551,US
644759552,644767743,CA
644767744,644833279,US
-644833280,644834303,CA
-644834304,644834815,US
-644834816,644835327,CA
-644835328,644836351,US
-644836352,644837375,CA
-644837376,644838399,US
-644838400,644841471,CA
-644841472,644875519,US
-644875520,644875775,CA
-644875776,644881919,US
-644881920,644882141,CA
-644882142,644882142,US
-644882143,644882175,CA
-644882176,644890623,US
+644833280,644837375,CA
+644837376,644838655,US
+644838656,644838783,CA
+644838784,644838911,US
+644838912,644841471,CA
+644841472,644875647,US
+644875648,644875775,CA
+644875776,644876225,US
+644876226,644876226,CA
+644876227,644879329,US
+644879330,644879330,CA
+644879331,644890623,US
644890624,644892927,CA
644892928,644893183,US
644893184,644907007,CA
644907008,644980735,US
-644980736,644986879,CA
-644986880,644987647,US
-644987648,644988927,CA
+644980736,644988927,CA
644988928,645001215,US
645001216,645003263,US
645003264,645185535,US
645185536,645189631,CA
645189632,645218303,US
-645218304,645220351,CA
-645220352,645220863,US
-645220864,645224447,CA
-645224448,645225471,US
-645225472,645225727,CA
-645225728,645226495,US
-645226496,645234687,CA
+645218304,645234687,CA
645234688,645358271,US
645358272,645358335,US
645358336,645361663,US
@@ -3764,14 +3659,14 @@
645361920,645362175,US
645362176,645362431,US
645362432,645482495,US
-645482496,645482751,CA
-645482752,645483263,US
-645483264,645483519,CA
-645483520,645527551,US
-645527552,645529599,CA
+645482496,645484543,CA
+645484544,645525503,US
+645525504,645529599,CA
645529600,645547007,US
645547008,645547263,CA
-645547264,645644287,US
+645547264,645576703,US
+645576704,645576959,CA
+645576960,645644287,US
645644288,645645311,MX
645645312,645703679,US
645703680,645705727,MX
@@ -3782,9 +3677,7 @@
645736704,645810943,US
645810944,645811199,US
645811200,645873663,US
-645873664,645879039,CA
-645879040,645879295,US
-645879296,645881855,CA
+645873664,645881855,CA
645881856,654311423,US
654311424,654311679,CN
654311680,654311935,AU
@@ -3839,9 +3732,7 @@
692486144,692518911,AO
692518912,692551679,ZA
692551680,692584447,NG
-692584448,692588543,AO
-692588544,692588799,PT
-692588800,692600831,AO
+692584448,692600831,AO
692600832,692609023,EG
692609024,692617215,ZM
692617216,692625407,ZA
@@ -4058,9 +3949,7 @@
693370880,693403647,ZA
693403648,693411839,KE
693411840,693420031,NG
-693420032,693423103,UG
-693423104,693423359,KE
-693423360,693428223,UG
+693420032,693428223,UG
693428224,693436415,SZ
693436416,693477375,ZA
693477376,693485567,BJ
@@ -4088,9 +3977,7 @@
693960704,693993471,TZ
693993472,694026239,GH
694026240,694091775,MZ
-694091776,694092287,SD
-694092288,694092543,AE
-694092544,694157311,SD
+694091776,694157311,SD
694157312,695205887,DZ
695205888,696254463,ZA
696254464,696516607,EG
@@ -4107,14 +3994,13 @@
696942592,696950783,MR
696950784,696958975,NG
696958976,696963071,TZ
-696963072,696967167,UG
+696963072,696966911,UG
+696966912,696967167,TZ
696967168,696971263,MZ
696971264,696975359,KE
696975360,696991743,GH
696991744,697008127,NG
-697008128,697014783,KE
-697014784,697015039,GB
-697015040,697040895,KE
+697008128,697040895,KE
697040896,697303039,MA
697303040,697827327,ZA
697827328,697958399,EG
@@ -4145,9 +4031,7 @@
700284928,700293119,GH
700293120,700301311,EG
700301312,700309503,CD
-700309504,700310527,DJ
-700310528,700310783,SO
-700310784,700313599,DJ
+700309504,700313599,DJ
700313600,700317695,US
700317696,700325887,NG
700325888,700334079,ZW
@@ -4165,8 +4049,7 @@
700366848,700375039,UG
700375040,700376063,CM
700376064,700377087,NE
-700378112,700378879,MG
-700378880,700379135,CA
+700378112,700379135,MG
700379136,700380159,NG
700380160,700381183,BW
700381184,700382207,EG
@@ -4186,8 +4069,7 @@
700410880,700411903,NG
700411904,700412927,ZA
700412928,700413951,ZM
-700413952,700414463,GB
-700414464,700414975,SC
+700413952,700414975,SC
700414976,700432383,ZA
700432384,700434431,KE
700434432,700436479,LS
@@ -4197,11 +4079,7 @@
700446720,700447743,SL
700447744,700448767,DZ
700448768,700579839,ZA
-700579840,700582399,A2
-700582400,700582655,NG
-700582656,700586495,A2
-700586496,700586751,US
-700586752,700587007,A2
+700579840,700587007,A2
700587008,700587263,ZM
700587264,700588031,A2
700588032,700588286,KM
@@ -4213,13 +4091,15 @@
700592384,700592639,KE
700592640,700593151,A2
700593152,700594175,NG
-700594176,700645375,A2
+700594176,700595967,A2
+700595968,700596223,CD
+700596224,700645375,A2
700645376,700710911,ZA
700710912,700776447,EG
700776448,700841983,RW
-700841984,700849919,MU
-700849920,700858367,NA
-700858368,700866559,MU
+700841984,700851199,MU
+700851200,700852223,NA
+700852224,700866559,MU
700866560,700866815,NG
700866816,700867327,MU
700867328,700867583,NG
@@ -4235,8 +4115,7 @@
701104128,701112319,GH
701112320,701120511,ZA
701120512,701145087,CI
-701145088,701149183,MY
-701149184,701153279,SD
+701145088,701153279,SD
701153280,701161471,CM
701161472,701169663,UG
701169664,701186047,ZA
@@ -4245,16 +4124,12 @@
701190138,701202431,NG
701202432,701210623,NE
701210624,701214719,ZA
-701214720,701215359,LS
-701215360,701215423,ZA
-701215424,701218815,LS
+701214720,701218815,LS
701218816,701222911,ML
701222912,701227007,KE
701227008,701231103,BF
701231104,701235199,SC
-701235200,701236223,SZ
-701236224,701237247,ZA
-701237248,701243391,SZ
+701235200,701243391,SZ
701243392,701251583,GH
701251584,701259775,CM
701259776,701267967,MG
@@ -4278,12 +4153,8 @@
701407232,701423615,ZA
701423616,701431807,NG
701431808,701439999,CI
-701440000,701446911,MG
-701446912,701447167,FR
-701447168,701448191,MG
-701448192,701456383,KE
-701456384,701456639,GB
-701456640,701461247,KE
+701440000,701448191,MG
+701448192,701461247,KE
701461248,701461503,CD
701461504,701462783,KE
701462784,701463039,CG
@@ -4298,13 +4169,13 @@
701472768,701480959,TG
701480960,701489151,CI
701489152,701513727,ZA
-701513728,701523455,LY
-701523456,701523711,AE
-701523712,701530111,LY
+701513728,701530111,LY
701530112,701546495,SN
701546496,701562879,ZA
701562880,701579263,KE
-701579264,701595647,SD
+701579264,701593343,SD
+701593344,701593471,AE
+701593472,701595647,SD
701595648,701603839,DZ
701612032,701628415,EG
701628416,701644799,GH
@@ -4387,7 +4258,9 @@
702328832,702332927,TZ
702332928,702337023,MZ
702337024,702341119,UG
-702341120,702349311,KE
+702341120,702345215,KE
+702345216,702346239,US
+702346240,702349311,KE
702349312,702353407,ZA
702353408,702357503,DZ
702357504,702365695,TZ
@@ -4641,7 +4514,9 @@
772927488,772929535,UA
772929536,772931583,RU
772931584,772933631,UA
-772933632,772935679,GB
+772933632,772933920,GB
+772933921,772933928,IE
+772933929,772935679,GB
772935680,772937727,PS
772937728,772939775,IT
772939776,772941823,BE
@@ -4686,11 +4561,7 @@
773027840,773031935,FR
773031936,773032191,CH
773032192,773032447,CH
-773032448,773033087,CH
-773033088,773033181,FR
-773033182,773033182,CH
-773033183,773033215,FR
-773033216,773033727,CH
+773032448,773033727,CH
773033728,773033983,CH
773033984,773036031,LV
773036032,773038079,DE
@@ -4703,14 +4574,9 @@
773050368,773052415,IE
773052416,773054463,NL
773054464,773054719,RS
-773054720,773055231,AL
-773055232,773055487,RS
-773055488,773055516,AL
-773055517,773055517,RS
-773055518,773055743,AL
-773055744,773056127,RS
-773056128,773056255,AL
-773056256,773056511,US
+773054720,773055487,AL
+773055488,773056127,RS
+773056128,773056511,AL
773056512,773058559,IT
773058560,773060607,BE
773060608,773062655,DK
@@ -4880,8 +4746,7 @@
773795840,773797887,NL
773797888,773799935,ES
773799936,773801983,CY
-773801984,773803007,US
-773803008,773804031,IQ
+773801984,773804031,IQ
773804032,773806079,GB
773806080,773808127,BE
773808128,773810175,IL
@@ -4898,17 +4763,17 @@
773830656,773832703,NO
773832704,773834751,FR
773834752,773835007,GB
-773835008,773836543,IM
-773836544,773836799,GB
+773835008,773835519,IM
+773835520,773835647,GB
+773835648,773836031,IM
+773836032,773836799,GB
773836800,773838847,FR
773838848,773840895,DE
-773840896,773843967,GB
-773843968,773844991,EU
-773844992,773845247,GB
-773845248,773845503,GG
-773845504,773846015,GB
-773846016,773846271,GG
-773846272,773847039,GB
+773840896,773842943,GB
+773842944,773844991,EU
+773844992,773846015,GB
+773846016,773846527,GG
+773846528,773847039,GB
773847040,773849087,IT
773849088,773857279,IR
773857280,773865471,DK
@@ -4923,12 +4788,12 @@
773939200,773947391,CZ
773947392,773955583,GB
773955584,773963775,FR
-773963776,773964031,ME
-773964032,773964799,RU
-773964800,773971967,ME
+773963776,773971967,ME
773971968,773980159,UA
773980160,773988351,GB
-773988352,774004735,ES
+773988352,774000771,ES
+774000772,774000772,NL
+774000773,774004735,ES
774004736,774012927,IR
774012928,774021119,RU
774021120,774029311,IR
@@ -4970,9 +4835,7 @@
774163221,774163224,DJ
774163225,774163225,VA
774163226,774163229,CF
-774163230,774163230,VA
-774163231,774163234,HM
-774163235,774163235,VA
+774163230,774163235,VA
774163236,774163239,MF
774163240,774163240,VA
774163241,774163244,VC
@@ -5124,25 +4987,55 @@
778043392,778108927,UA
778108928,778174463,RO
778174464,778239999,UA
-778240000,778260479,AL
-778260480,778264575,RS
-778264576,778305535,AL
+778240000,778244351,AL
+778244352,778244607,RS
+778244608,778305535,AL
778305536,778371071,IR
778371072,778436607,RU
778436608,778499049,RO
778499050,778499050,NL
778499051,778502143,RO
-778502144,778514431,GR
-778514432,778515455,CY
-778515456,778549247,GR
-778549248,778550271,CY
-778550272,778556415,GR
+778502144,778510335,GR
+778510336,778510591,CY
+778510592,778514431,GR
+778514432,778514687,CY
+778514688,778514943,GR
+778514944,778515455,CY
+778515456,778518015,GR
+778518016,778518271,CY
+778518272,778518527,GR
+778518528,778519551,CY
+778519552,778523135,GR
+778523136,778523647,CY
+778523648,778534911,GR
+778534912,778536959,CY
+778536960,778538495,GR
+778538496,778539007,CY
+778539008,778541567,GR
+778541568,778542079,CY
+778542080,778546175,GR
+778546176,778546943,CY
+778546944,778549247,GR
+778549248,778549759,CY
+778549760,778550271,GR
+778550272,778550783,CY
+778550784,778553343,GR
+778553344,778555391,CY
+778555392,778555903,GR
+778555904,778556159,CY
+778556160,778556415,GR
778556416,778557439,CY
-778557440,778561535,GR
-778561536,778563583,CY
+778557440,778559999,GR
+778560000,778560255,CY
+778560256,778560511,GR
+778560512,778561535,CY
+778561536,778562559,GR
+778562560,778563583,CY
778563584,778567679,GR
778567680,778633215,TR
-778633216,778679212,FR
+778633216,778679135,FR
+778679136,778679151,DE
+778679152,778679212,FR
778679213,778679214,FI
778679215,778681503,FR
778681504,778681507,DE
@@ -5158,9 +5051,7 @@
779354112,779485183,IL
779485184,779616255,UA
779616256,779747327,IL
-779747328,779778047,SI
-779778048,779778303,DE
-779778304,779878399,SI
+779747328,779878399,SI
779878400,780009471,AT
780009472,780140543,CH
780140544,780206079,DE
@@ -5172,7 +5063,9 @@
780533760,780599295,PL
780599296,780664831,CZ
780664832,780730367,FR
-780730368,780756724,IE
+780730368,780756170,IE
+780756171,780756171,EU
+780756172,780756724,IE
780756725,780756725,EU
780756726,780779519,IE
780779520,780795903,SG
@@ -5182,7 +5075,9 @@
780992512,781058047,IT
781058048,781123583,DE
781123584,781189119,IR
-781189120,781320191,NL
+781189120,781223423,NL
+781223424,781223679,GB
+781223680,781320191,NL
781320192,781451263,RU
781451264,781455359,PL
781455360,781459455,UA
@@ -5271,7 +5166,9 @@
782663680,782663935,GB
782663936,782665471,GB
782665472,782666751,GB
-782666752,782671103,GB
+782666752,782667519,GB
+782667520,782667775,LU
+782667776,782671103,GB
782671104,782671359,GB
782671360,782680063,GB
782680064,782696447,RU
@@ -5345,9 +5242,7 @@
783278080,783282175,PL
783282176,783286271,UA
783286272,783417343,GR
-783417344,783507455,BE
-783507456,783511551,NL
-783511552,783548415,BE
+783417344,783548415,BE
783548416,783679487,RU
783679488,783681535,FR
783681536,783683583,IE
@@ -5390,9 +5285,7 @@
783757312,783759359,FR
783759360,783763455,CZ
783763456,783765503,FI
-783765504,783766015,RU
-783766016,783766271,US
-783766272,783767551,RU
+783765504,783767551,RU
783767552,783769599,IL
783769600,783771647,DE
783771648,783773695,GB
@@ -5413,11 +5306,7 @@
783804416,783806463,IT
783806464,783810559,NL
783810560,783843327,SA
-783843328,783850751,BH
-783850752,783851007,US
-783851008,783861759,BH
-783861760,783862015,US
-783862016,783876095,BH
+783843328,783876095,BH
783876096,783908863,UA
783908864,783941631,JO
783941632,783974399,PL
@@ -5435,11 +5324,36 @@
784334848,784465919,FR
784465920,784596991,SE
784596992,784728063,TR
-784728064,784733183,GR
-784733184,784733695,CY
-784733696,784759295,GR
-784759296,784762879,CY
-784762880,784763903,GR
+784728064,784728575,CY
+784728576,784729087,GR
+784729088,784729599,CY
+784729600,784730111,GR
+784730112,784730879,CY
+784730880,784732159,GR
+784732160,784732671,CY
+784732672,784732927,GR
+784732928,784733055,CY
+784733056,784733439,GR
+784733440,784733695,CY
+784733696,784745471,GR
+784745472,784745983,CY
+784745984,784750079,GR
+784750080,784750847,CY
+784750848,784751359,GR
+784751360,784751615,CY
+784751616,784753663,GR
+784753664,784754175,CY
+784754176,784756735,GR
+784756736,784756991,CY
+784756992,784757247,GR
+784757248,784757759,CY
+784757760,784758271,GR
+784758272,784758783,CY
+784758784,784760831,GR
+784760832,784762879,CY
+784762880,784763391,GR
+784763392,784763647,CY
+784763648,784763903,GR
784763904,784859135,CY
784859136,785121279,UA
785121280,785252351,PL
@@ -5466,7 +5380,9 @@
786567168,786569215,CZ
786569216,786571263,NO
786571264,786575359,ES
-786575360,786577407,GB
+786575360,786575871,GB
+786575872,786576127,SE
+786576128,786577407,GB
786577408,786579455,NL
786579456,786581503,RU
786581504,786583551,GB
@@ -5545,8 +5461,7 @@
786788352,786792447,CZ
786792448,786796543,RU
786796544,786800639,PL
-786800640,786801663,BY
-786801664,786804735,NL
+786800640,786804735,NL
786804736,786808831,RU
786808832,786812927,BG
786812928,786817023,RU
@@ -5657,20 +5572,33 @@
787333120,787349503,DE
787349504,787365887,BG
787365888,787382271,PL
-787382272,787382887,FR
-787382888,787382888,GP
-787382889,787383039,FR
-787383040,787385599,GP
-787385600,787386367,FR
-787386368,787386623,MQ
-787386624,787386879,FR
-787386880,787392511,MQ
-787392512,787393023,GP
-787393024,787393791,FR
-787393792,787394303,GP
-787394304,787394559,FR
-787394560,787396607,GF
-787396608,787398655,FR
+787382272,787382527,GP
+787382528,787382783,FR
+787382784,787383039,GP
+787383040,787383295,FR
+787383296,787384575,GP
+787384576,787385087,FR
+787385088,787385343,GP
+787385344,787385599,FR
+787385600,787385855,GP
+787385856,787386879,FR
+787386880,787387391,MQ
+787387392,787389183,FR
+787389184,787390719,MQ
+787390720,787391487,FR
+787391488,787391999,MQ
+787392000,787392255,FR
+787392256,787392511,MQ
+787392512,787392767,GP
+787392768,787394047,FR
+787394048,787394303,GP
+787394304,787395071,FR
+787395072,787395583,GF
+787395584,787396095,FR
+787396096,787396607,GF
+787396608,787397887,FR
+787397888,787398143,GF
+787398144,787398655,FR
787398656,787415039,PL
787415040,787431423,BA
787431424,787447807,SE
@@ -5727,11 +5655,7 @@
788054016,788062207,JO
788062208,788070399,GB
788070400,788078591,RU
-788078592,788079359,NL
-788079360,788079615,IN
-788079616,788085503,NL
-788085504,788085759,FR
-788085760,788086783,NL
+788078592,788086783,NL
788086784,788094975,BG
788094976,788103167,IR
788103168,788111359,HU
@@ -5790,8 +5714,7 @@
788410368,788412415,TR
788412416,788414463,SI
788414464,788416511,CZ
-788416512,788418303,PL
-788418304,788418559,CH
+788416512,788418559,PL
788418560,788422655,RU
788422656,788424703,FI
788424704,788426751,IT
@@ -5980,11 +5903,7 @@
837795840,837812223,CN
837812224,838074367,JP
838074368,838139903,NP
-838139904,838166527,SG
-838166528,838167551,MY
-838167552,838168063,SG
-838168064,838168575,MY
-838168576,838205439,SG
+838139904,838205439,SG
838205440,838238207,KR
838238208,838262783,VN
838262784,838270975,CN
@@ -5993,13 +5912,24 @@
838467584,838729727,JP
838729728,838795263,KR
838795264,838860799,AU
-838860800,838999039,US
+838860800,838993423,US
+838993424,838993447,MY
+838993448,838993463,PK
+838993464,838994175,US
+838994176,838994271,HK
+838994272,838995455,US
+838995456,838995967,CA
+838995968,838999039,US
838999040,838999295,CA
-838999296,839002431,US
+838999296,839000159,US
+839000160,839000191,EG
+839000192,839002399,US
+839002400,839002431,ID
839002432,839002463,EE
-839002464,839003775,US
-839003776,839003807,EG
-839003808,839005215,US
+839002464,839002495,HK
+839002496,839003775,US
+839003776,839003839,EG
+839003840,839005215,US
839005216,839005280,CA
839005281,839010559,US
839010560,839010815,CA
@@ -6137,64 +6067,7 @@
840909056,840909311,CA
840909312,840957695,US
840957696,840957951,JP
-840957952,842530895,US
-842530896,842530903,IL
-842530904,842531443,US
-842531444,842531447,GB
-842531448,842531519,US
-842531520,842531523,MX
-842531524,842531603,US
-842531604,842531605,ES
-842531606,842531659,US
-842531660,842531661,IN
-842531662,842533679,US
-842533680,842533683,BR
-842533684,842534251,US
-842534252,842534255,NO
-842534256,842534335,US
-842534336,842534339,ES
-842534340,842541693,US
-842541694,842541695,ZA
-842541696,842541723,US
-842541724,842541725,CA
-842541726,842542399,US
-842542400,842542407,NZ
-842542408,842542415,US
-842542416,842542423,NZ
-842542424,842542431,JO
-842542432,842564897,US
-842564898,842564899,ES
-842564900,842564933,US
-842564934,842564935,CA
-842564936,842565975,US
-842565976,842565979,AU
-842565980,842566015,US
-842566016,842566019,BR
-842566020,842570261,US
-842570262,842570263,AU
-842570264,842570327,US
-842570328,842570329,CN
-842570330,842571891,US
-842571892,842571895,IN
-842571896,842572055,US
-842572056,842572059,MX
-842572060,842572215,US
-842572216,842572219,CA
-842572220,842597639,US
-842597640,842597647,GT
-842597648,842597759,US
-842597760,842597767,CA
-842597768,842598703,US
-842598704,842598719,CZ
-842598720,842600079,US
-842600080,842600087,GB
-842600088,842601607,US
-842601608,842601615,AR
-842601616,842602423,US
-842602424,842602431,IN
-842602432,842651119,US
-842651120,842651127,MX
-842651128,843055103,US
+840957952,843055103,US
843055104,843644927,CA
843644928,844890111,US
844890112,844988415,CA
@@ -6222,19 +6095,9 @@
846441890,846441900,RO
846441901,846442495,US
846442496,846446591,CA
-846446592,846529791,US
-846529792,846530047,US
-846530048,846537727,US
+846446592,846537727,US
846537728,846537983,US
-846537984,846542847,US
-846542848,846543103,US
-846543104,846543615,US
-846543616,846543871,US
-846543872,846544127,US
-846544128,846544383,US
-846544384,846546943,US
-846546944,846547199,US
-846547200,846561279,US
+846537984,846561279,US
846561280,846594047,CA
846594048,846626815,US
846626816,846627071,CN
@@ -6255,7 +6118,9 @@
905969664,921174015,US
921174016,921239551,BR
921239552,922091519,US
-922091520,922222591,IE
+922091520,922189311,IE
+922189312,922189567,EU
+922189568,922222591,IE
922222592,922353663,JP
922353664,922419199,US
922419200,922484735,SG
@@ -6264,21 +6129,13 @@
959447040,959512575,US
959512576,960629507,EU
960629508,960629508,GB
-960629509,960640255,EU
-960640256,960640511,GB
-960640512,960640769,EU
+960629509,960640769,EU
960640770,960640770,GB
960640771,960643365,EU
960643366,960643367,GB
-960643368,960649215,EU
-960649216,960654335,GB
-960654336,960654847,EU
-960654848,960655359,GB
-960655360,960661759,EU
-960661760,960662015,CH
-960662016,960670207,EU
-960670208,960670719,DE
-960670720,960676607,EU
+960643368,960647167,EU
+960647168,960651263,GB
+960651264,960676607,EU
960676608,960676863,PL
960676864,960692223,EU
960692224,960724991,FR
@@ -6287,9 +6144,7 @@
960727040,960727295,US
960727296,960729343,EU
960729344,960729599,ZA
-960729600,960731647,EU
-960731648,960731903,FR
-960731904,960741375,EU
+960729600,960741375,EU
960741376,960749567,NL
960749568,960757759,LU
960757760,960888831,US
@@ -6348,9 +6203,7 @@
961445888,961478655,ES
961478656,961511423,CH
961511424,961519615,PT
-961519616,961521407,EU
-961521408,961521663,SE
-961521664,961527807,EU
+961519616,961527807,EU
961527808,961531903,MC
961531904,961535999,SM
961536000,961540095,VA
@@ -6414,13 +6267,7 @@
962416640,962461695,EU
962461696,962469887,IE
962469888,962527231,TR
-962527232,972744447,EU
-972744448,972744703,IN
-972744704,972747263,EU
-972747264,972747519,US
-972747520,972749823,EU
-972749824,972750079,US
-972750080,973078527,EU
+962527232,973078527,EU
973078528,973209599,JP
973209600,973275135,IN
973275136,973471743,JP
@@ -6452,7 +6299,9 @@
977764352,977797119,MY
977797120,978321407,KR
978321408,978452479,JP
-978452480,978583551,CN
+978452480,978485247,CN
+978485248,978518015,SG
+978518016,978583551,CN
978599936,978640895,AU
978640896,978644991,NZ
978644992,978714623,JP
@@ -6461,9 +6310,7 @@
978784256,978788351,JP
978788352,978796543,KR
978796544,978812927,CN
-978812928,978972671,JP
-978972672,978973695,US
-978973696,979369983,JP
+978812928,979369983,JP
979369984,979410943,AU
979410944,979419135,HK
979419136,979435519,AU
@@ -6513,9 +6360,7 @@
984875008,984956927,KR
984956928,984965119,AU
984965120,984973311,PK
-984973312,984983039,TH
-984983040,984983295,AU
-984983296,985006079,TH
+984973312,985006079,TH
985006080,985071615,SG
985071616,985137151,JP
985137152,985202687,KR
@@ -6543,11 +6388,7 @@
996802560,996868095,JP
996868096,997195775,CN
997195776,998244351,TW
-998244352,998760447,JP
-998760448,998760703,US
-998760704,998973376,JP
-998973377,998973377,US
-998973378,999292927,JP
+998244352,999292927,JP
999292928,999423999,IN
999424000,999555071,JP
999555072,999686143,HK
@@ -6604,9 +6445,7 @@
1023238144,1023246335,ID
1023246336,1023279103,CN
1023279104,1023311871,IN
-1023311872,1023315711,US
-1023315712,1023315967,AU
-1023315968,1023316991,US
+1023311872,1023316991,US
1023316992,1023317247,AU
1023317248,1023317759,US
1023317760,1023318015,IN
@@ -6617,7 +6456,9 @@
1023344640,1023410175,CN
1023410176,1023672319,IN
1023672320,1023688703,HK
-1023688704,1023692799,MM
+1023688704,1023692031,MM
+1023692032,1023692287,SG
+1023692288,1023692799,MM
1023692800,1023696895,CN
1023696896,1023705087,MY
1023705088,1023717375,JP
@@ -6628,9 +6469,7 @@
1023778816,1023787007,KR
1023787008,1023791103,AF
1023791104,1023795199,NC
-1023795200,1023799039,JP
-1023799040,1023799295,US
-1023799296,1023803391,JP
+1023795200,1023803391,JP
1023803392,1023852543,MY
1023852544,1023868927,BN
1023868928,1023901695,JP
@@ -6646,9 +6485,7 @@
1023979520,1023983615,AU
1023983616,1023991551,SG
1023991552,1023991807,AP
-1023991808,1023998207,SG
-1023998208,1023998463,MY
-1023998464,1023999999,SG
+1023991808,1023999999,SG
1024000000,1024032767,PH
1024032768,1024065535,AU
1024065536,1024131071,HK
@@ -6662,21 +6499,13 @@
1024327680,1024344063,US
1024344064,1024352255,SG
1024352256,1024360447,AU
-1024360448,1024362495,JP
-1024362496,1024363519,MY
-1024363520,1024364031,AU
+1024360448,1024363775,JP
+1024363776,1024364031,AU
1024364032,1024365055,JP
1024365056,1024365311,AP
-1024365312,1024365567,JP
-1024365568,1024365823,SG
-1024365824,1024369407,JP
-1024369408,1024369663,MY
-1024369664,1024370687,JP
+1024365312,1024370687,JP
1024370688,1024371199,PH
-1024371200,1024372479,JP
-1024372480,1024372735,HK
-1024372736,1024374783,PH
-1024374784,1024375295,JP
+1024371200,1024375295,JP
1024375296,1024375807,AU
1024375808,1024376831,JP
1024376832,1024393215,PH
@@ -6721,7 +6550,8 @@
1026420736,1026422783,JP
1026422784,1026423295,AU
1026423296,1026423551,AP
-1026423552,1026424831,AU
+1026423552,1026423807,BD
+1026423808,1026424831,AU
1026424832,1026490367,JP
1026490368,1026523135,TH
1026523136,1026539519,CN
@@ -6731,9 +6561,7 @@
1027866624,1027997695,AU
1027997696,1028128767,TW
1028128768,1029046271,KR
-1029046272,1029119999,JP
-1029120000,1029120255,US
-1029120256,1029144575,JP
+1029046272,1029144575,JP
1029144576,1029160959,SG
1029160960,1029177343,CN
1029177344,1029242879,AU
@@ -6746,17 +6574,11 @@
1029701632,1030750207,KR
1030750208,1030946303,JP
1030946304,1030946559,AP
-1030946560,1031311359,JP
-1031311360,1031315455,US
-1031315456,1031415039,JP
+1030946560,1031415039,JP
1031415040,1031415295,US
-1031415296,1031635199,JP
-1031635200,1031635455,IN
-1031635456,1031798783,JP
+1031415296,1031798783,JP
1031798784,1035993087,CN
-1035993088,1036447999,JP
-1036448000,1036448255,US
-1036448256,1037410303,JP
+1035993088,1037410303,JP
1037410304,1037415679,US
1037415680,1037415935,AP
1037415936,1037418495,US
@@ -6785,9 +6607,7 @@
1040318464,1040344063,CH
1040344064,1040344319,AT
1040344320,1040383999,CH
-1040384000,1040388095,SA
-1040388096,1040388351,US
-1040388352,1040390853,SA
+1040384000,1040390853,SA
1040390854,1040390854,ZA
1040390855,1040400383,SA
1040400384,1040416767,GB
@@ -6803,9 +6623,7 @@
1040482304,1040515071,BE
1040515072,1040547839,SE
1040547840,1040580607,RU
-1040580608,1040625663,GB
-1040625664,1040625919,US
-1040625920,1040711679,GB
+1040580608,1040711679,GB
1040711680,1040719871,FR
1040719872,1040728063,DE
1040728064,1040736255,KE
@@ -6816,8 +6634,7 @@
1040973824,1040982015,NL
1040982016,1040982527,DK
1040982528,1040982783,FI
-1040982784,1040983295,DK
-1040983296,1040983551,US
+1040982784,1040983551,DK
1040983552,1040983807,EU
1040983808,1040990207,DK
1040990208,1040994303,CY
@@ -6847,52 +6664,90 @@
1041638912,1041642751,ES
1041642752,1041643007,EU
1041643008,1041694719,ES
-1041694720,1041697279,GB
+1041694720,1041696255,GB
+1041696256,1041696511,FR
+1041696512,1041697279,GB
1041697280,1041697535,FR
-1041697536,1041700863,GB
-1041700864,1041701375,FR
-1041701376,1041701631,GB
-1041701632,1041705471,FR
-1041705472,1041705727,GB
-1041705728,1041709055,FR
-1041709056,1041713663,GB
+1041697536,1041700351,GB
+1041700352,1041700607,FR
+1041700608,1041700863,GB
+1041700864,1041701119,FR
+1041701120,1041701631,GB
+1041701632,1041701887,FR
+1041701888,1041702143,GB
+1041702144,1041702527,FR
+1041702528,1041702655,GB
+1041702656,1041702911,FR
+1041702912,1041703423,GB
+1041703424,1041703679,FR
+1041703680,1041703935,GB
+1041703936,1041704191,FR
+1041704192,1041704447,GB
+1041704448,1041704959,FR
+1041704960,1041706239,GB
+1041706240,1041707007,FR
+1041707008,1041707263,GB
+1041707264,1041708031,FR
+1041708032,1041708287,GB
+1041708288,1041708543,FR
+1041708544,1041708799,GB
+1041708800,1041709055,FR
+1041709056,1041712383,GB
+1041712384,1041712639,FR
+1041712640,1041713663,GB
1041713664,1041713919,FR
-1041713920,1041719551,GB
+1041713920,1041714431,GB
+1041714432,1041715199,FR
+1041715200,1041718527,GB
+1041718528,1041718783,FR
+1041718784,1041719551,GB
1041719552,1041720063,FR
1041720064,1041720319,GB
-1041720320,1041720831,FR
-1041720832,1041722111,GB
+1041720320,1041721087,FR
+1041721088,1041722111,GB
1041722112,1041722367,FR
1041722368,1041722623,GB
-1041722624,1041724671,FR
-1041724672,1041724927,GB
-1041724928,1041726719,FR
-1041726720,1041727231,GB
-1041727232,1041728255,FR
-1041728256,1041730303,GB
-1041730304,1041730559,FR
-1041730560,1041731071,GB
-1041731072,1041731839,FR
-1041731840,1041731967,GB
-1041731968,1041732863,FR
-1041732864,1041733119,GB
-1041733120,1041733887,FR
+1041722624,1041722879,FR
+1041722880,1041724415,GB
+1041724416,1041724671,FR
+1041724672,1041725183,GB
+1041725184,1041725439,FR
+1041725440,1041725695,GB
+1041725696,1041725951,FR
+1041725952,1041728767,GB
+1041728768,1041729023,FR
+1041729024,1041731071,GB
+1041731072,1041731327,FR
+1041731328,1041731839,GB
+1041731840,1041732095,FR
+1041732096,1041733375,GB
+1041733376,1041733887,FR
1041733888,1041734399,GB
-1041734400,1041735167,FR
-1041735168,1041744127,GB
-1041744128,1041744895,FR
-1041744896,1041745151,GB
+1041734400,1041734655,FR
+1041734656,1041734911,GB
+1041734912,1041735167,FR
+1041735168,1041741055,GB
+1041741056,1041741311,FR
+1041741312,1041744127,GB
+1041744128,1041744639,FR
+1041744640,1041745151,GB
1041745152,1041745407,FR
-1041745408,1041748991,GB
+1041745408,1041745663,GB
+1041745664,1041745919,FR
+1041745920,1041748991,GB
1041748992,1041749247,EU
1041749248,1041749759,GB
-1041749760,1041751039,FR
+1041749760,1041750015,FR
+1041750016,1041750527,GB
+1041750528,1041751039,FR
1041751040,1041753599,GB
1041753600,1041754111,FR
1041754112,1041755391,GB
-1041755392,1041757439,FR
-1041757440,1041757695,GB
-1041757696,1041758207,FR
+1041755392,1041755647,FR
+1041755648,1041756671,GB
+1041756672,1041757183,FR
+1041757184,1041757951,GB
+1041757952,1041758207,FR
1041758208,1041760255,GB
1041760256,1041768447,DE
1041768448,1041776639,NO
@@ -6928,8 +6783,8 @@
1042879744,1042879999,NL
1042880000,1042880255,GB
1042880256,1042889983,NL
-1042889984,1042890111,GB
-1042890112,1042892799,NL
+1042889984,1042890143,GB
+1042890144,1042892799,NL
1042892800,1042893055,EU
1042893056,1042939903,NL
1042939904,1043070975,ES
@@ -6946,9 +6801,9 @@
1043349504,1043357695,DE
1043357696,1043365887,CH
1043365888,1043398655,PT
-1043398656,1043473151,GB
-1043473152,1043473407,DE
-1043473408,1043483406,GB
+1043398656,1043475455,GB
+1043475456,1043475711,DE
+1043475712,1043483406,GB
1043483407,1043483407,CH
1043483408,1043488767,GB
1043488768,1043496959,DE
@@ -6961,13 +6816,9 @@
1043595264,1043661567,DE
1043661568,1043661823,GB
1043661824,1043857407,DE
-1043857408,1043892735,GB
-1043892736,1043892991,CD
-1043892992,1043910143,GB
+1043857408,1043910143,GB
1043910144,1043910399,A2
-1043910400,1043914239,GB
-1043914240,1043914751,NG
-1043914752,1043922943,GB
+1043910400,1043922943,GB
1043922944,1043988479,ES
1043988480,1043991103,BE
1043991104,1043991167,NL
@@ -6975,16 +6826,14 @@
1043992576,1043992831,NL
1043992832,1043996671,BE
1043996672,1043996927,NL
-1043996928,1043999743,BE
-1043999744,1044000255,NL
-1044000256,1044003839,BE
-1044003840,1044004095,NL
-1044004096,1044012031,BE
+1043996928,1044004073,BE
+1044004074,1044004074,NL
+1044004075,1044012031,BE
1044012032,1044012543,NL
1044012544,1044037631,BE
1044037632,1044038143,NL
-1044038144,1044038655,BE
-1044038656,1044039935,NL
+1044038144,1044039679,BE
+1044039680,1044039935,NL
1044039936,1044119551,BE
1044119552,1044152319,GB
1044152320,1044185087,IR
@@ -7015,26 +6864,16 @@
1044512768,1044578303,DK
1044578304,1044638273,GB
1044638274,1044638274,GB
-1044638275,1044643839,GB
+1044638275,1044642815,GB
+1044642816,1044643327,DE
+1044643328,1044643839,GB
1044643840,1044652031,DE
1044652032,1044660223,LY
-1044660224,1044660479,GR
-1044660480,1044660991,US
-1044660992,1044661247,AU
-1044661248,1044661503,SA
-1044661504,1044661759,GR
-1044661760,1044662271,AU
-1044662272,1044663807,US
-1044663808,1044664063,AU
-1044664064,1044664575,US
-1044664576,1044665343,GR
-1044665344,1044666111,US
-1044666112,1044666367,GR
-1044666368,1044666623,US
-1044666624,1044667391,GR
-1044667392,1044667647,US
-1044667648,1044668159,GR
-1044668160,1044668415,SA
+1044660224,1044665855,GR
+1044665856,1044666367,US
+1044666368,1044667647,GR
+1044667648,1044667903,US
+1044667904,1044668415,GR
1044668416,1044676607,BA
1044676608,1044684799,RU
1044684800,1044692991,HU
@@ -7046,9 +6885,7 @@
1044701184,1044709375,EG
1044709376,1044717567,RU
1044717568,1044742143,GB
-1044742144,1044742399,IT
-1044742400,1044742655,US
-1044742656,1044744191,IT
+1044742144,1044744191,IT
1044744192,1044746239,GB
1044746240,1044748287,DE
1044748288,1044750335,DK
@@ -7060,16 +6897,24 @@
1044840448,1044905983,FI
1044905984,1044930559,DE
1044930560,1044930815,GB
-1044930816,1044931583,BE
-1044931584,1044931839,GB
-1044931840,1044932607,BE
-1044932608,1044932863,GB
-1044932864,1044934399,BE
-1044934400,1044934655,GB
-1044934656,1044935935,BE
-1044935936,1044936191,GB
-1044936192,1044936959,BE
-1044936960,1044946943,GB
+1044930816,1044930911,BE
+1044930912,1044930927,DE
+1044930928,1044931327,BE
+1044931328,1044933293,GB
+1044933294,1044933294,BE
+1044933295,1044933887,GB
+1044933888,1044934143,BE
+1044934144,1044934911,GB
+1044934912,1044935167,BE
+1044935168,1044935423,GB
+1044935424,1044935679,BE
+1044935680,1044936547,GB
+1044936548,1044936548,BE
+1044936549,1044936703,GB
+1044936704,1044936959,BE
+1044936960,1044937727,GB
+1044937728,1044937983,BE
+1044937984,1044946943,GB
1044946944,1044955135,UA
1044955136,1044963327,NL
1044963328,1044971519,FI
@@ -7096,25 +6941,25 @@
1045323776,1045364735,FI
1045364736,1045430271,DK
1045430272,1045446655,DE
-1045446656,1045447423,CZ
-1045447424,1045447679,HU
-1045447680,1045454847,CZ
+1045446656,1045454847,CZ
1045454848,1045463039,DE
1045463040,1045471231,FI
1045471232,1045479423,UA
1045479424,1045487615,SE
1045487616,1045495807,LT
-1045495808,1045588223,ES
-1045588224,1045588479,CZ
-1045588480,1045692415,ES
+1045495808,1045692415,ES
1045692416,1045700607,LV
1045700608,1045708799,KZ
1045708800,1045716991,LB
1045716992,1045725183,RU
1045725184,1045733375,CZ
1045733376,1045742335,GB
-1045742336,1045744127,SE
-1045744128,1045749759,GB
+1045742336,1045742591,SE
+1045742592,1045743871,GB
+1045743872,1045744127,SE
+1045744128,1045745407,GB
+1045745408,1045745663,SE
+1045745664,1045749759,GB
1045749760,1045753855,SI
1045753856,1045755903,NL
1045755904,1045757951,UA
@@ -7142,33 +6987,64 @@
1046315008,1046323199,GB
1046323200,1046331391,ES
1046331392,1046347775,EU
-1046347776,1046413311,IT
+1046347776,1046391807,IT
+1046391808,1046392319,US
+1046392320,1046413311,IT
1046413312,1046446079,SE
1046446080,1046478847,EU
-1046478848,1046479103,DE
-1046479104,1046481151,GB
+1046478848,1046481151,GB
1046481152,1046481407,DE
1046481408,1046482175,GB
1046482176,1046482431,DE
-1046482432,1046485247,GB
+1046482432,1046482943,GB
+1046482944,1046483199,DE
+1046483200,1046485247,GB
1046485248,1046485759,DE
-1046485760,1046488063,GB
+1046485760,1046486015,GB
+1046486016,1046486271,DE
+1046486272,1046487039,GB
+1046487040,1046487295,DE
+1046487296,1046488063,GB
1046488064,1046488575,DE
-1046488576,1046504447,GB
+1046488576,1046492159,GB
+1046492160,1046492415,DE
+1046492416,1046492671,GB
+1046492672,1046492927,DE
+1046492928,1046493695,GB
+1046493696,1046493951,DE
+1046493952,1046494719,GB
+1046494720,1046495231,DE
+1046495232,1046502911,GB
+1046502912,1046503423,DE
+1046503424,1046504447,GB
1046504448,1046507519,DE
-1046507520,1046512639,GB
-1046512640,1046513663,DE
-1046513664,1046518783,GB
+1046507520,1046512127,GB
+1046512128,1046513663,DE
+1046513664,1046514175,GB
+1046514176,1046514431,DE
+1046514432,1046514943,GB
+1046514944,1046515071,DE
+1046515072,1046518783,GB
1046518784,1046519039,DE
-1046519040,1046526719,GB
+1046519040,1046519295,GB
+1046519296,1046519551,DE
+1046519552,1046524159,GB
+1046524160,1046524415,DE
+1046524416,1046526719,GB
1046526720,1046526975,DE
-1046526976,1046530815,GB
-1046530816,1046531071,DE
-1046531072,1046538751,GB
+1046526976,1046530559,GB
+1046530560,1046531327,DE
+1046531328,1046538751,GB
1046538752,1046539263,DE
-1046539264,1046541311,GB
-1046541312,1046541823,DE
-1046541824,1046544383,GB
+1046539264,1046540031,GB
+1046540032,1046540287,DE
+1046540288,1046540543,GB
+1046540544,1046540799,DE
+1046540800,1046541311,GB
+1046541312,1046541567,DE
+1046541568,1046541823,GB
+1046541824,1046542079,DE
+1046542080,1046544383,GB
1046544384,1046560767,IT
1046560768,1046585343,ES
1046585344,1046609919,NO
@@ -7210,12 +7086,16 @@
1047273472,1047281663,DE
1047281664,1047289855,TR
1047289856,1047298047,RS
-1047298048,1047306239,CH
+1047298048,1047300351,CH
+1047300352,1047300607,GB
+1047300608,1047306239,CH
1047306240,1047314431,PL
1047314432,1047322623,SE
1047322624,1047330815,IT
1047330816,1047339007,RU
-1047339008,1047347199,SE
+1047339008,1047343871,SE
+1047343872,1047344127,NO
+1047344128,1047347199,SE
1047347200,1047363583,DE
1047363584,1047371775,CZ
1047371776,1047373559,RU
@@ -7248,11 +7128,7 @@
1047871488,1047887871,RU
1047887872,1047920639,ES
1047920640,1047986175,RU
-1047986176,1048006655,SE
-1048006656,1048006744,DK
-1048006745,1048006872,SE
-1048006873,1048006911,DK
-1048006912,1048011775,SE
+1047986176,1048011775,SE
1048011776,1048012031,EU
1048012032,1048051711,SE
1048051712,1048117247,SA
@@ -7288,10 +7164,10 @@
1048246272,1048248319,NO
1048248320,1048313855,IT
1048313856,1048510463,GB
-1048510464,1048575999,SE
-1048576000,1048581887,DE
-1048581888,1048582143,IT
-1048582144,1048584191,DE
+1048510464,1048537087,SE
+1048537088,1048539135,DK
+1048539136,1048575999,SE
+1048576000,1048584191,DE
1048584192,1048592383,IL
1048592384,1048600575,IT
1048600576,1048608767,DE
@@ -7312,27 +7188,23 @@
1048772608,1048838143,NL
1048838144,1048853503,DE
1048853504,1048853759,NL
-1048853760,1048859903,DE
-1048859904,1048860159,NL
-1048860160,1048868863,DE
+1048853760,1048868863,DE
1048868864,1048869119,NL
-1048869120,1048869375,DE
-1048869376,1048869631,NL
-1048869632,1048871423,DE
-1048871424,1048871935,NL
-1048871936,1048872703,DE
-1048872704,1048874239,NL
+1048869120,1048871423,DE
+1048871424,1048871679,NL
+1048871680,1048873983,DE
+1048873984,1048874239,NL
1048874240,1048888319,DE
-1048888320,1048890367,NL
-1048890368,1048890559,DE
-1048890560,1048890623,NL
-1048890624,1048893183,DE
+1048888320,1048888575,NL
+1048888576,1048889855,DE
+1048889856,1048890623,NL
+1048890624,1048890879,DE
+1048890880,1048891135,NL
+1048891136,1048893183,DE
1048893184,1048893439,NL
1048893440,1048901631,DE
1048901632,1048901887,NL
-1048901888,1048902143,DE
-1048902144,1048902399,NL
-1048902400,1048903679,DE
+1048901888,1048903679,DE
1048903680,1048911871,GB
1048911872,1048920063,IT
1048920064,1048936447,NL
@@ -7340,22 +7212,28 @@
1048944640,1048952831,RU
1048952832,1048969215,NL
1048969216,1048979455,EU
-1048979456,1048980479,DE
-1048980480,1048980991,EU
-1048980992,1048981247,GB
-1048981248,1048985087,EU
-1048985088,1048985343,NL
-1048985344,1049012479,EU
-1049012480,1049012735,DE
-1049012736,1049016575,EU
+1048979456,1048979711,DE
+1048979712,1048980223,EU
+1048980224,1048980479,DE
+1048980480,1048982783,EU
+1048982784,1048983039,DE
+1048983040,1048985087,EU
+1048985088,1048985343,DE
+1048985344,1049016575,EU
1049016576,1049016831,DE
-1049016832,1049021439,EU
-1049021440,1049021695,GB
-1049021696,1049027071,EU
-1049027072,1049027583,DE
-1049027584,1049028095,EU
-1049028096,1049028351,DE
-1049028352,1049034751,EU
+1049016832,1049017087,EU
+1049017088,1049017343,DE
+1049017344,1049017599,EU
+1049017600,1049017855,DE
+1049017856,1049021695,EU
+1049021696,1049021951,DE
+1049021952,1049027071,EU
+1049027072,1049028607,DE
+1049028608,1049029119,EU
+1049029120,1049029375,DE
+1049029376,1049032191,EU
+1049032192,1049032703,DE
+1049032704,1049034751,EU
1049034752,1049067519,EG
1049067520,1049100287,DK
1049100288,1049231359,GB
@@ -7404,9 +7282,11 @@
1049985024,1050017791,IT
1050017792,1050041087,KW
1050041088,1050041599,US
-1050041600,1050047993,KW
-1050047994,1050047995,US
-1050047996,1050083327,KW
+1050041600,1050047994,KW
+1050047995,1050047995,US
+1050047996,1050048767,KW
+1050048768,1050049023,US
+1050049024,1050083327,KW
1050083328,1050148863,ES
1050148864,1050157055,CY
1050157056,1050173439,RU
@@ -7415,26 +7295,18 @@
1050189824,1050198015,DE
1050198016,1050206207,RU
1050206208,1050214399,SK
-1050214400,1050268671,DE
-1050268672,1050269183,US
-1050269184,1050272511,DE
+1050214400,1050272511,DE
1050272512,1050272767,EU
-1050272768,1050316799,DE
-1050316800,1050317311,US
-1050317312,1050332441,DE
+1050272768,1050332441,DE
1050332442,1050332442,GB
1050332443,1050340607,DE
1050340608,1050340639,US
1050340640,1050470911,DE
1050470912,1050471167,GB
-1050471168,1050627491,DE
-1050627492,1050627495,EU
-1050627496,1050642687,DE
-1050642688,1050642943,US
-1050642944,1050673151,DE
-1050673152,1050768471,FR
-1050768472,1050768479,RE
-1050768480,1050804223,FR
+1050471168,1050627327,DE
+1050627328,1050627583,EU
+1050627584,1050673151,DE
+1050673152,1050804223,FR
1050804224,1050869759,MK
1050869760,1050935295,NL
1050935296,1050968063,EU
@@ -7443,9 +7315,7 @@
1051017216,1051033599,NL
1051033600,1051049983,FI
1051049984,1051066367,HU
-1051066368,1051125759,BE
-1051125760,1051126271,NL
-1051126272,1051131903,BE
+1051066368,1051131903,BE
1051131904,1051197439,CH
1051197440,1051213823,CZ
1051213824,1051230207,SK
@@ -7467,24 +7337,10 @@
1051549347,1051557887,GB
1051557888,1051566079,RU
1051566080,1051574271,IT
-1051574272,1051576831,GB
-1051576832,1051577023,DE
-1051577024,1051577063,GB
-1051577064,1051577087,DE
-1051577088,1051577855,GB
-1051577856,1051578111,NL
-1051578112,1051590655,GB
-1051590656,1051694079,ES
-1051694080,1051694335,GB
-1051694336,1051694591,ES
-1051694592,1051694847,GB
-1051694848,1051695359,ES
-1051695360,1051695615,GB
-1051695616,1051695871,ES
-1051695872,1051696127,GB
-1051696128,1051719167,ES
-1051719168,1051719423,GB
-1051719424,1051721727,ES
+1051574272,1051584207,GB
+1051584208,1051584223,BE
+1051584224,1051590655,GB
+1051590656,1051721727,ES
1051721728,1051729919,RU
1051729920,1051738111,FI
1051738112,1051754495,BG
@@ -7499,25 +7355,33 @@
1051852800,1051918335,AT
1051918336,1051918591,PL
1051918592,1051983871,AT
-1051983872,1051994879,EU
-1051994880,1051995135,DE
-1051995136,1051999487,EU
+1051983872,1051999487,EU
1051999488,1051999743,DE
-1051999744,1052007041,EU
-1052007042,1052007042,DE
-1052007043,1052011263,EU
+1051999744,1052002303,EU
+1052002304,1052002559,DE
+1052002560,1052003327,EU
+1052003328,1052003583,DE
+1052003584,1052011263,EU
1052011264,1052012287,DE
-1052012288,1052015871,EU
-1052015872,1052016127,DE
-1052016128,1052019711,EU
-1052019712,1052019967,GB
-1052019968,1052042719,EU
-1052042720,1052042751,DE
+1052012288,1052014205,EU
+1052014206,1052014206,DE
+1052014207,1052016114,EU
+1052016115,1052016115,DE
+1052016116,1052017535,EU
+1052017536,1052017663,DE
+1052017664,1052041215,EU
+1052041216,1052041471,DE
+1052041472,1052042495,EU
+1052042496,1052042751,DE
1052042752,1052043007,EU
-1052043008,1052043071,FR
-1052043072,1052043087,DE
-1052043088,1052043263,FR
-1052043264,1052049407,EU
+1052043008,1052043103,DE
+1052043104,1052043111,EU
+1052043112,1052043263,DE
+1052043264,1052043583,EU
+1052043584,1052043615,DE
+1052043616,1052046335,EU
+1052046336,1052046591,DE
+1052046592,1052049407,EU
1052049408,1052057599,PL
1052057600,1052065791,RU
1052065792,1052082175,SE
@@ -7553,33 +7417,17 @@
1052180480,1052213247,RU
1052213248,1052246015,FI
1052246016,1052508159,EU
-1052508160,1052630015,GB
-1052630016,1052630159,BE
-1052630160,1052630175,GB
-1052630176,1052630271,BE
-1052630272,1052632575,GB
-1052632576,1052632583,ZA
-1052632584,1052653823,GB
+1052508160,1052653823,GB
1052653824,1052654079,EU
-1052654080,1052667903,GB
-1052667904,1052668063,US
-1052668064,1052668079,GB
-1052668080,1052668159,US
-1052668160,1052770303,GB
+1052654080,1052675839,GB
+1052675840,1052676095,IE
+1052676096,1052770303,GB
1052770304,1052778495,CH
1052778496,1052786687,RU
1052786688,1052803071,NL
1052803072,1052803327,DE
1052803328,1052803583,EU
-1052803584,1052804607,US
-1052804608,1052804863,DE
-1052804864,1052805119,AF
-1052805120,1052805887,US
-1052805888,1052806655,DE
-1052806656,1052806911,US
-1052806912,1052807679,DE
-1052807680,1052809727,US
-1052809728,1052810495,DE
+1052803584,1052810495,DE
1052810496,1052810751,US
1052810752,1052811263,DE
1052811264,1052819455,RU
@@ -7602,13 +7450,21 @@
1053138944,1053147135,FI
1053147136,1053163519,SK
1053163520,1053294591,DK
-1053294592,1053307903,EU
+1053294592,1053299711,EU
+1053299712,1053299967,GB
+1053299968,1053300223,EU
+1053300224,1053300479,GB
+1053300480,1053300991,EU
+1053300992,1053301247,FR
+1053301248,1053307903,EU
1053307904,1053308415,GB
-1053308416,1053313535,EU
-1053313536,1053313791,GB
-1053313792,1053316607,EU
+1053308416,1053313279,EU
+1053313280,1053313535,GB
+1053313536,1053316607,EU
1053316608,1053316863,GB
-1053316864,1053329407,EU
+1053316864,1053327615,EU
+1053327616,1053327871,ZA
+1053327872,1053329407,EU
1053329408,1053329663,ES
1053329664,1053340927,EU
1053340928,1053341183,GB
@@ -7637,19 +7493,17 @@
1053655040,1053663231,UA
1053663232,1053671423,RU
1053671424,1053687807,LV
-1053687808,1053720895,DE
-1053720896,1053720959,GB
-1053720960,1053753343,DE
+1053687808,1053753343,DE
1053753344,1053818879,NL
-1053818880,1053843455,EU
-1053843456,1053843711,GB
-1053843712,1053856511,EU
+1053818880,1053837823,EU
+1053837824,1053837951,FK
+1053837952,1053856511,EU
1053856512,1053856767,GB
1053856768,1053857791,EU
1053857792,1053858047,GB
-1053858048,1053858655,EU
-1053858656,1053858687,GB
-1053858688,1053876479,EU
+1053858048,1053858559,EU
+1053858560,1053858815,GB
+1053858816,1053876479,EU
1053876480,1053876735,GB
1053876736,1053884415,EU
1053884416,1053892607,BH
@@ -7663,21 +7517,27 @@
1053949952,1054015487,FR
1054015488,1054089215,IT
1054089216,1054097407,GE
-1054097408,1054099583,NL
-1054099584,1054099711,DE
-1054099712,1054105599,NL
+1054097408,1054105599,NL
1054105600,1054113791,FR
1054113792,1054121983,NL
1054121984,1054130175,AT
1054130176,1054138367,LT
1054138368,1054146559,AZ
1054146560,1054179327,RU
-1054179328,1054183807,GB
-1054183808,1054183935,DE
-1054183936,1054187519,GB
+1054179328,1054183423,GB
+1054183424,1054185471,DE
+1054185472,1054187519,GB
1054187520,1054195711,BG
1054195712,1054212095,BE
-1054212096,1054277631,DE
+1054212096,1054248959,DE
+1054248960,1054249007,FR
+1054249008,1054249015,DE
+1054249016,1054249031,FR
+1054249032,1054249039,DE
+1054249040,1054249199,FR
+1054249200,1054249207,DE
+1054249208,1054249215,FR
+1054249216,1054277631,DE
1054277632,1054343167,KW
1054343168,1054351359,NL
1054351360,1054359551,UA
@@ -7704,26 +7564,32 @@
1054646272,1054654463,SE
1054654464,1054662655,MK
1054662656,1054670847,FI
-1054670848,1054672127,EU
-1054672128,1054672383,DE
-1054672384,1054679039,EU
+1054670848,1054679039,EU
1054679040,1054687231,UA
1054687232,1054703615,MD
1054703616,1054711807,BG
1054711808,1054719999,IT
1054720000,1054867455,NL
-1054867456,1054941695,DE
-1054941696,1054941951,BE
-1054941952,1054948253,DE
+1054867456,1054948253,DE
1054948254,1054948254,EU
1054948255,1054949727,DE
1054949728,1054949735,US
-1054949736,1054973951,DE
+1054949736,1054971487,DE
+1054971488,1054971503,AT
+1054971504,1054971511,DE
+1054971512,1054971519,AT
+1054971520,1054973951,DE
1054973952,1054974207,EU
1054974208,1055129599,DE
-1055129600,1055163647,CY
-1055163648,1055163775,GR
-1055163776,1055186943,CY
+1055129600,1055133183,CY
+1055133184,1055133439,GR
+1055133440,1055145983,CY
+1055145984,1055146239,GR
+1055146240,1055173119,CY
+1055173120,1055173631,GR
+1055173632,1055174143,CY
+1055174144,1055174655,GR
+1055174656,1055186943,CY
1055186944,1055194879,GR
1055194880,1055195135,CY
1055195136,1055326207,EU
@@ -7757,13 +7623,7 @@
1056014336,1056022527,EG
1056022528,1056030719,GB
1056030720,1056047103,FI
-1056047104,1056143615,DK
-1056143616,1056143775,SE
-1056143776,1056143839,DK
-1056143840,1056143871,SE
-1056143872,1056161023,DK
-1056161024,1056161279,US
-1056161280,1056178175,DK
+1056047104,1056178175,DK
1056178176,1056194559,UA
1056194560,1056210943,FR
1056210944,1056219135,PL
@@ -7805,13 +7665,9 @@
1061853696,1061854207,GB
1061854208,1061939711,US
1061939712,1061940223,JM
-1061940224,1061991583,US
-1061991584,1061991591,AF
-1061991592,1062069247,US
+1061940224,1062069247,US
1062069248,1062070271,PR
-1062070272,1062112767,US
-1062112768,1062113023,IN
-1062113024,1062219519,US
+1062070272,1062219519,US
1062219520,1062219775,IN
1062219776,1062222975,US
1062222976,1062223039,PH
@@ -7819,17 +7675,13 @@
1062244312,1062244319,PH
1062244320,1062262783,US
1062262784,1062263039,PH
-1062263040,1062299615,US
-1062299616,1062299631,AU
-1062299632,1062378767,US
+1062263040,1062378767,US
1062378768,1062378783,CA
1062378784,1062429695,US
1062429696,1062430207,PR
1062430208,1062473731,US
1062473732,1062473732,IN
-1062473733,1062475935,US
-1062475936,1062475951,GB
-1062475952,1062486271,US
+1062473733,1062486271,US
1062486272,1062486527,MX
1062486528,1062497791,US
1062497792,1062498303,FM
@@ -7841,7 +7693,9 @@
1062597376,1062597631,PR
1062597632,1062636287,US
1062636288,1062636351,GB
-1062636352,1062725103,US
+1062636352,1062691159,US
+1062691160,1062691167,AF
+1062691168,1062725103,US
1062725104,1062725111,IL
1062725112,1062871551,US
1062871552,1062872319,PR
@@ -7950,13 +7804,13 @@
1064445184,1064445439,PK
1064445440,1064650751,US
1064650752,1064651775,EC
-1064651776,1064662015,US
-1064662016,1064662271,GB
-1064662272,1064769023,US
+1064651776,1064769023,US
1064769024,1064769535,A2
1064769536,1064973055,US
1064973056,1064973183,AU
-1064973184,1065389439,US
+1064973184,1065049471,US
+1065049472,1065049535,CA
+1065049536,1065389439,US
1065389440,1065389455,MY
1065389456,1065390591,US
1065390592,1065390599,MY
@@ -7964,10 +7818,7 @@
1065390656,1065390687,MX
1065390688,1065517087,US
1065517088,1065517119,A2
-1065517120,1065519247,US
-1065519248,1065519263,IN
-1065519264,1065519279,IT
-1065519280,1065520895,US
+1065517120,1065520895,US
1065520896,1065520911,CA
1065520912,1065520927,IT
1065520928,1065530879,US
@@ -7997,7 +7848,17 @@
1066352640,1066355711,JM
1066355712,1066355967,BB
1066355968,1066369023,JM
-1066369024,1066828279,US
+1066369024,1066439055,US
+1066439056,1066439071,CA
+1066439072,1066439087,US
+1066439088,1066439095,CA
+1066439096,1066473807,US
+1066473808,1066473823,CA
+1066473824,1066535679,US
+1066535680,1066535687,GB
+1066535688,1066771303,US
+1066771304,1066771319,ME
+1066771320,1066828279,US
1066828280,1066828287,IN
1066828288,1066830119,US
1066830120,1066830127,SG
@@ -8005,9 +7866,7 @@
1066830288,1066830303,ML
1066830304,1066830311,US
1066830312,1066830319,SG
-1066830320,1066830335,US
-1066830336,1066830591,AU
-1066830592,1066830783,US
+1066830320,1066830783,US
1066830784,1066830799,SG
1066830800,1066830991,US
1066830992,1066831007,JP
@@ -8348,9 +8207,7 @@
1071315712,1071315967,JP
1071315968,1071318783,US
1071318784,1071319039,IN
-1071319040,1071319807,US
-1071319808,1071320063,CD
-1071320064,1071321087,US
+1071319040,1071321087,US
1071321088,1071322111,HK
1071322112,1071362063,US
1071362064,1071362079,DM
@@ -8411,19 +8268,13 @@
1071599393,1071599415,PH
1071599416,1071599477,US
1071599478,1071599490,PH
-1071599491,1071954175,US
-1071954176,1071954279,IE
+1071599491,1071954279,US
1071954280,1071954287,FR
-1071954288,1071954431,IE
-1071954432,1071985631,US
+1071954288,1071954375,US
+1071954376,1071954383,NE
+1071954384,1071985631,US
1071985632,1071985663,ML
-1071985664,1071987679,US
-1071987680,1071987711,CA
-1071987712,1072157599,US
-1072157600,1072157615,NE
-1072157616,1072157663,GE
-1072157664,1072157695,RO
-1072157696,1072228863,US
+1071985664,1072228863,US
1072228864,1072229375,CA
1072229376,1072360703,US
1072360704,1072360959,HK
@@ -8435,9 +8286,13 @@
1072707328,1072707583,IN
1072707584,1072710327,US
1072710328,1072710335,DE
-1072710336,1072715943,US
+1072710336,1072712479,US
+1072712480,1072712495,IL
+1072712496,1072715943,US
1072715944,1072715951,IL
-1072715952,1072725071,US
+1072715952,1072718031,US
+1072718032,1072718039,DE
+1072718040,1072725071,US
1072725072,1072725079,NZ
1072725080,1072725311,US
1072725312,1072725343,DE
@@ -8455,7 +8310,11 @@
1072774464,1072774479,JP
1072774480,1072777631,US
1072777632,1072777647,TW
-1072777648,1072790015,US
+1072777648,1072785415,US
+1072785416,1072785423,DK
+1072785424,1072785439,US
+1072785440,1072785471,DK
+1072785472,1072790015,US
1072790016,1072790031,JP
1072790032,1072923135,US
1072923136,1072923391,CA
@@ -8465,8 +8324,10 @@
1072924672,1072925183,US
1072925184,1072925695,GB
1072925696,1072926207,CA
-1072926208,1072926463,US
-1072926464,1072926719,CA
+1072926208,1072926471,US
+1072926472,1072926527,CA
+1072926528,1072926591,US
+1072926592,1072926719,CA
1072926720,1072926975,PH
1072926976,1072927487,CA
1072927488,1072927743,US
@@ -8477,9 +8338,7 @@
1072928128,1072928255,US
1072928256,1072928263,CA
1072928264,1072928287,US
-1072928288,1072928322,CA
-1072928323,1072928323,GA
-1072928324,1072928383,CA
+1072928288,1072928383,CA
1072928384,1072928447,US
1072928448,1072928767,CA
1072928768,1072929023,US
@@ -8493,8 +8352,8 @@
1072931584,1072931839,SY
1072931840,1072932607,CA
1072932608,1072932863,NG
-1072932864,1072933887,US
-1072933888,1072934399,CA
+1072932864,1072933119,US
+1072933120,1072934399,CA
1072934400,1072934719,US
1072934720,1072934751,CA
1072934752,1072934775,US
@@ -8559,7 +8418,9 @@
1073049600,1073052671,BS
1073052672,1073075460,US
1073075461,1073075716,NL
-1073075717,1073093646,US
+1073075717,1073091397,US
+1073091398,1073091407,CH
+1073091408,1073093646,US
1073093647,1073093654,PE
1073093655,1073094557,US
1073094558,1073094570,IT
@@ -8567,9 +8428,7 @@
1073373184,1073381375,CA
1073381376,1073381631,US
1073381632,1073381887,EU
-1073381888,1073383519,US
-1073383520,1073383551,SV
-1073383552,1073383727,US
+1073381888,1073383727,US
1073383728,1073383735,CA
1073383736,1073383839,US
1073383840,1073383871,VE
@@ -8593,9 +8452,7 @@
1073385152,1073385183,BR
1073385184,1073385279,US
1073385280,1073385311,BR
-1073385312,1073389764,US
-1073389765,1073389765,CA
-1073389766,1073390207,US
+1073385312,1073390207,US
1073390208,1073390215,CA
1073390216,1073390271,US
1073390272,1073390303,CA
@@ -8667,7 +8524,9 @@
1073438208,1073438463,A2
1073438464,1073442863,US
1073442864,1073442879,GB
-1073442880,1074020351,US
+1073442880,1073448927,US
+1073448928,1073448959,IL
+1073448960,1074020351,US
1074020352,1074028543,CA
1074028544,1074118655,US
1074118656,1074120703,CA
@@ -8692,9 +8551,7 @@
1074241536,1074397439,US
1074397440,1074399039,CA
1074399040,1074399231,US
-1074399232,1074408319,CA
-1074408320,1074408447,US
-1074408448,1074462463,CA
+1074399232,1074462463,CA
1074462464,1074463743,US
1074463744,1074493695,CA
1074493696,1074493823,US
@@ -8761,7 +8618,9 @@
1074708992,1074709247,PH
1074709248,1074711039,US
1074711040,1074711055,IN
-1074711056,1074716679,US
+1074711056,1074711103,US
+1074711104,1074711167,GB
+1074711168,1074716679,US
1074716680,1074716687,GB
1074716688,1074716719,US
1074716720,1074716735,GB
@@ -8796,14 +8655,16 @@
1075269632,1075421183,US
1075421184,1075429375,CA
1075429376,1075478527,US
-1075478528,1075479607,CA
+1075478528,1075479103,CA
+1075479104,1075479111,GB
+1075479112,1075479135,CA
+1075479136,1075479151,US
+1075479152,1075479607,CA
1075479608,1075479615,US
-1075479616,1075491359,CA
-1075491360,1075491375,SE
-1075491376,1075494911,CA
-1075494912,1075497983,US
-1075497984,1075498495,IN
-1075498496,1075513151,US
+1075479616,1075482655,CA
+1075482656,1075482671,US
+1075482672,1075494911,CA
+1075494912,1075513151,US
1075513152,1075513183,KW
1075513184,1075532663,US
1075532664,1075532673,IT
@@ -8894,15 +8755,13 @@
1075982848,1075983199,CA
1075983200,1075983231,US
1075983232,1075984383,CA
-1075984384,1075984823,US
-1075984824,1075984831,CA
-1075984832,1075985919,US
+1075984384,1075985919,US
1075985920,1075989055,CA
1075989056,1075989119,US
-1075989120,1075989247,CA
-1075989248,1075989279,FI
+1075989120,1075989263,CA
+1075989264,1075989279,US
1075989280,1075989295,CA
-1075989296,1075989311,FI
+1075989296,1075989311,US
1075989312,1075989327,CA
1075989328,1075989335,US
1075989336,1075989359,CA
@@ -8945,7 +8804,7 @@
1075995584,1075996671,CA
1075996672,1075996751,US
1075996752,1075996767,CA
-1075996768,1075996799,BV
+1075996768,1075996799,US
1075996800,1075997119,CA
1075997120,1075997183,MX
1075997184,1075997519,CA
@@ -9093,7 +8952,9 @@
1076030320,1076030335,US
1076030336,1076030399,CA
1076030400,1076030463,US
-1076030464,1076030623,CA
+1076030464,1076030599,CA
+1076030600,1076030607,US
+1076030608,1076030623,CA
1076030624,1076030631,US
1076030632,1076031487,CA
1076031488,1076031743,US
@@ -9291,236 +9152,9 @@
1076294656,1076294687,CY
1076294688,1076294703,US
1076294704,1076294719,NO
-1076294720,1076295071,US
-1076295072,1076295087,NL
-1076295088,1076295167,US
+1076294720,1076295167,US
1076295168,1076295199,CY
-1076295200,1076298503,US
-1076298504,1076298511,GB
-1076298512,1076298591,US
-1076298592,1076298607,BD
-1076298608,1076298631,US
-1076298632,1076298655,BD
-1076298656,1076298695,US
-1076298696,1076298703,MH
-1076298704,1076299823,US
-1076299824,1076299831,GB
-1076299832,1076299847,US
-1076299848,1076299855,VI
-1076299856,1076299863,GB
-1076299864,1076299871,CA
-1076299872,1076299943,US
-1076299944,1076299951,IT
-1076299952,1076299959,US
-1076299960,1076299975,FR
-1076299976,1076300015,US
-1076300016,1076300031,GB
-1076300032,1076300047,US
-1076300048,1076300055,BD
-1076300056,1076300071,GB
-1076300072,1076300079,CK
-1076300080,1076300095,IL
-1076300096,1076300111,BD
-1076300112,1076300119,IN
-1076300120,1076300207,US
-1076300208,1076300223,RU
-1076300224,1076300231,MX
-1076300232,1076300255,US
-1076300256,1076300271,SE
-1076300272,1076300279,ID
-1076300280,1076300287,AU
-1076300288,1076300295,US
-1076300296,1076300303,IN
-1076300304,1076300311,US
-1076300312,1076300319,GB
-1076300320,1076300335,US
-1076300336,1076300343,IN
-1076300344,1076300383,US
-1076300384,1076300391,GB
-1076300392,1076300399,IN
-1076300400,1076300447,US
-1076300448,1076300455,MY
-1076300456,1076300463,US
-1076300464,1076300471,IN
-1076300472,1076300479,US
-1076300480,1076300487,IN
-1076300488,1076300511,US
-1076300512,1076300519,IN
-1076300520,1076300527,GB
-1076300528,1076300663,US
-1076300664,1076300671,AU
-1076300672,1076300799,US
-1076300800,1076300807,IN
-1076300808,1076300847,US
-1076300848,1076300855,AU
-1076300856,1076300903,US
-1076300904,1076300911,IN
-1076300912,1076300919,US
-1076300920,1076300927,IN
-1076300928,1076300991,US
-1076300992,1076301007,NZ
-1076301008,1076301015,US
-1076301016,1076301023,GR
-1076301024,1076301047,US
-1076301048,1076301055,AU
-1076301056,1076301087,US
-1076301088,1076301095,CA
-1076301096,1076301143,US
-1076301144,1076301151,NL
-1076301152,1076301159,US
-1076301160,1076301167,GB
-1076301168,1076301183,US
-1076301184,1076301191,AU
-1076301192,1076301199,US
-1076301200,1076301207,AU
-1076301208,1076301263,US
-1076301264,1076301271,CA
-1076301272,1076301279,IN
-1076301280,1076301823,US
-1076301824,1076301831,IN
-1076301832,1076301871,US
-1076301872,1076301879,SE
-1076301880,1076301895,US
-1076301896,1076301903,IL
-1076301904,1076301927,US
-1076301928,1076301935,AU
-1076301936,1076302359,US
-1076302360,1076302367,GB
-1076302368,1076302407,US
-1076302408,1076302415,IN
-1076302416,1076302439,US
-1076302440,1076302447,CA
-1076302448,1076302495,US
-1076302496,1076302503,BD
-1076302504,1076302511,GB
-1076302512,1076302519,US
-1076302520,1076302527,DE
-1076302528,1076302639,US
-1076302640,1076302655,FR
-1076302656,1076302719,US
-1076302720,1076302735,NZ
-1076302736,1076302751,US
-1076302752,1076302759,DK
-1076302760,1076302783,US
-1076302784,1076302799,IN
-1076302800,1076302807,US
-1076302808,1076302815,AU
-1076302816,1076302839,US
-1076302840,1076302847,GB
-1076302848,1076302855,NZ
-1076302856,1076302879,US
-1076302880,1076302887,IN
-1076302888,1076302911,US
-1076302912,1076302919,IN
-1076302920,1076302983,US
-1076302984,1076302991,AR
-1076302992,1076303079,US
-1076303080,1076303087,RU
-1076303088,1076303167,US
-1076303168,1076303183,CA
-1076303184,1076303215,US
-1076303216,1076303223,IN
-1076303224,1076303231,MX
-1076303232,1076303271,US
-1076303272,1076303287,AU
-1076303288,1076303319,US
-1076303320,1076303327,EG
-1076303328,1076303335,AU
-1076303336,1076303359,US
-1076303360,1076303391,BH
-1076303392,1076303439,US
-1076303440,1076303455,KW
-1076303456,1076303495,US
-1076303496,1076303511,AU
-1076303512,1076303519,CA
-1076303520,1076303527,US
-1076303528,1076303535,AU
-1076303536,1076303551,US
-1076303552,1076303559,AU
-1076303560,1076303599,US
-1076303600,1076303615,AU
-1076303616,1076303631,US
-1076303632,1076303639,CH
-1076303640,1076303647,US
-1076303648,1076303655,AU
-1076303656,1076303663,US
-1076303664,1076303679,GI
-1076303680,1076303695,US
-1076303696,1076303703,GB
-1076303704,1076303711,US
-1076303712,1076303719,CA
-1076303720,1076303775,US
-1076303776,1076303791,AU
-1076303792,1076303831,US
-1076303832,1076303839,SE
-1076303840,1076303983,US
-1076303984,1076303991,AU
-1076303992,1076304031,US
-1076304032,1076304039,CA
-1076304040,1076304079,US
-1076304080,1076304087,CA
-1076304088,1076304127,US
-1076304128,1076304135,CA
-1076304136,1076304151,US
-1076304152,1076304159,CA
-1076304160,1076304191,BH
-1076304192,1076304215,US
-1076304216,1076304223,GI
-1076304224,1076304255,US
-1076304256,1076304383,IT
-1076304384,1076304391,CA
-1076304392,1076304407,US
-1076304408,1076304415,CA
-1076304416,1076304439,US
-1076304440,1076304447,CA
-1076304448,1076304487,US
-1076304488,1076304495,EG
-1076304496,1076304567,US
-1076304568,1076304575,IN
-1076304576,1076304583,BM
-1076304584,1076304591,CA
-1076304592,1076304607,US
-1076304608,1076304615,GB
-1076304616,1076304623,US
-1076304624,1076304631,GB
-1076304632,1076304639,US
-1076304640,1076304647,GB
-1076304648,1076304655,JP
-1076304656,1076304663,SE
-1076304664,1076304687,US
-1076304688,1076304695,IN
-1076304696,1076304751,US
-1076304752,1076304759,RU
-1076304760,1076304831,US
-1076304832,1076304839,VE
-1076304840,1076304895,US
-1076304896,1076304911,AU
-1076304912,1076304919,US
-1076304920,1076304927,ES
-1076304928,1076304951,US
-1076304952,1076304959,NZ
-1076304960,1076304991,US
-1076304992,1076304999,ID
-1076305000,1076305023,US
-1076305024,1076305039,CA
-1076305040,1076305055,RU
-1076305056,1076305079,US
-1076305080,1076305087,AT
-1076305088,1076305111,GB
-1076305112,1076305167,US
-1076305168,1076305175,FR
-1076305176,1076305191,US
-1076305192,1076305207,CA
-1076305208,1076305215,AR
-1076305216,1076305231,DE
-1076305232,1076305239,US
-1076305240,1076305247,GB
-1076305248,1076305255,VE
-1076305256,1076305263,US
-1076305264,1076305271,CA
-1076305272,1076305303,US
-1076305304,1076305311,RU
-1076305312,1076306463,US
+1076295200,1076306463,US
1076306464,1076306479,GB
1076306480,1076306511,US
1076306512,1076306527,AE
@@ -9567,11 +9201,9 @@
1076406272,1076408063,A2
1076408064,1076408319,US
1076408320,1076412415,CA
-1076412416,1076422143,US
-1076422144,1076422192,GB
+1076412416,1076422192,US
1076422193,1076422193,EU
-1076422194,1076422399,GB
-1076422400,1076424703,US
+1076422194,1076424703,US
1076424704,1076428799,CA
1076428800,1076493311,US
1076493312,1076493375,IN
@@ -9604,303 +9236,14 @@
1076756480,1076772863,CA
1076772864,1076850687,US
1076850688,1076850943,CA
-1076850944,1076851455,US
-1076851456,1076851711,CA
-1076851712,1076880383,US
+1076850944,1076880383,US
1076880384,1076880639,CH
1076880640,1076880895,GB
1076880896,1076985855,US
1076985856,1076991487,A2
1076991488,1076991743,US
1076991744,1077002239,A2
-1077002240,1077002255,US
-1077002256,1077002271,GB
-1077002272,1077002343,US
-1077002344,1077002351,VE
-1077002352,1077002359,US
-1077002360,1077002367,AG
-1077002368,1077002399,US
-1077002400,1077002407,CA
-1077002408,1077002495,US
-1077002496,1077002503,CA
-1077002504,1077002543,US
-1077002544,1077002551,CY
-1077002552,1077002559,CA
-1077002560,1077002575,US
-1077002576,1077002583,CA
-1077002584,1077002599,US
-1077002600,1077002607,BH
-1077002608,1077002823,US
-1077002824,1077002831,IN
-1077002832,1077002847,FR
-1077002848,1077002855,NZ
-1077002856,1077002863,AU
-1077002864,1077002911,US
-1077002912,1077002927,MX
-1077002928,1077002935,IN
-1077002936,1077002943,CA
-1077002944,1077002991,US
-1077002992,1077002999,BH
-1077003000,1077003023,US
-1077003024,1077003039,RU
-1077003040,1077003047,AU
-1077003048,1077003079,US
-1077003080,1077003087,IN
-1077003088,1077003199,US
-1077003200,1077003231,IN
-1077003232,1077003431,US
-1077003432,1077003439,IE
-1077003440,1077003687,US
-1077003688,1077003695,PH
-1077003696,1077003711,US
-1077003712,1077003727,AU
-1077003728,1077003735,DE
-1077003736,1077003783,US
-1077003784,1077003791,CA
-1077003792,1077003807,US
-1077003808,1077003815,AU
-1077003816,1077003895,US
-1077003896,1077003903,IN
-1077003904,1077003919,US
-1077003920,1077003927,JP
-1077003928,1077003959,US
-1077003960,1077003967,BH
-1077003968,1077003991,US
-1077003992,1077003999,AT
-1077004000,1077004119,US
-1077004120,1077004127,GB
-1077004128,1077004143,US
-1077004144,1077004159,FR
-1077004160,1077004199,US
-1077004200,1077004207,NZ
-1077004208,1077004239,US
-1077004240,1077004247,GB
-1077004248,1077004255,US
-1077004256,1077004263,AU
-1077004264,1077004303,US
-1077004304,1077004319,FR
-1077004320,1077004327,AU
-1077004328,1077004343,US
-1077004344,1077004351,AT
-1077004352,1077004367,US
-1077004368,1077004375,ZA
-1077004376,1077004431,US
-1077004432,1077004439,CA
-1077004440,1077004511,US
-1077004512,1077004527,FR
-1077004528,1077004543,US
-1077004544,1077004559,CA
-1077004560,1077004583,US
-1077004584,1077004591,CA
-1077004592,1077004687,US
-1077004688,1077004695,GB
-1077004696,1077004703,AE
-1077004704,1077004735,FR
-1077004736,1077004743,US
-1077004744,1077004751,CA
-1077004752,1077004759,US
-1077004760,1077004767,NZ
-1077004768,1077004783,US
-1077004784,1077004791,CA
-1077004792,1077004799,GB
-1077004800,1077004815,CA
-1077004816,1077004847,US
-1077004848,1077004863,CA
-1077004864,1077004871,US
-1077004872,1077004879,GB
-1077004880,1077005119,US
-1077005120,1077005151,AU
-1077005152,1077005295,US
-1077005296,1077005303,CN
-1077005304,1077005487,US
-1077005488,1077005503,CA
-1077005504,1077005535,US
-1077005536,1077005543,AU
-1077005544,1077005551,US
-1077005552,1077005559,CA
-1077005560,1077005631,US
-1077005632,1077005695,AU
-1077005696,1077005823,US
-1077005824,1077005839,AU
-1077005840,1077005895,US
-1077005896,1077005903,RU
-1077005904,1077005911,VE
-1077005912,1077005943,US
-1077005944,1077005951,TR
-1077005952,1077006023,US
-1077006024,1077006031,IN
-1077006032,1077006039,US
-1077006040,1077006047,NZ
-1077006048,1077006071,US
-1077006072,1077006079,IN
-1077006080,1077006159,US
-1077006160,1077006167,AE
-1077006168,1077006407,US
-1077006408,1077006415,CA
-1077006416,1077006463,US
-1077006464,1077006471,AU
-1077006472,1077006623,US
-1077006624,1077006631,GB
-1077006632,1077006639,ES
-1077006640,1077006647,IE
-1077006648,1077006719,US
-1077006720,1077006735,AU
-1077006736,1077006743,US
-1077006744,1077006751,IL
-1077006752,1077006847,US
-1077006848,1077006863,CA
-1077006864,1077006887,US
-1077006888,1077006895,IN
-1077006896,1077006927,US
-1077006928,1077006935,CA
-1077006936,1077006943,AR
-1077006944,1077006959,US
-1077006960,1077006967,MX
-1077006968,1077006991,US
-1077006992,1077006999,CA
-1077007000,1077007007,HK
-1077007008,1077007063,CA
-1077007064,1077007071,US
-1077007072,1077007087,CA
-1077007088,1077007103,US
-1077007104,1077007111,NL
-1077007112,1077007119,CA
-1077007120,1077007167,US
-1077007168,1077007191,CA
-1077007192,1077007199,KR
-1077007200,1077007247,US
-1077007248,1077007255,BZ
-1077007256,1077007287,US
-1077007288,1077007295,CA
-1077007296,1077007303,AU
-1077007304,1077007311,IN
-1077007312,1077007935,US
-1077007936,1077007943,AU
-1077007944,1077007967,US
-1077007968,1077007983,NL
-1077007984,1077008047,US
-1077008048,1077008063,FR
-1077008064,1077008127,US
-1077008128,1077008191,CA
-1077008192,1077008207,US
-1077008208,1077008215,CA
-1077008216,1077008239,US
-1077008240,1077008271,CA
-1077008272,1077008295,US
-1077008296,1077008311,CA
-1077008312,1077008319,US
-1077008320,1077008335,CA
-1077008336,1077008343,US
-1077008344,1077008383,CA
-1077008384,1077008431,US
-1077008432,1077008439,PH
-1077008440,1077008735,US
-1077008736,1077008751,BM
-1077008752,1077008879,US
-1077008880,1077008895,GB
-1077008896,1077010431,US
-1077010432,1077010439,HK
-1077010440,1077011247,US
-1077011248,1077011255,CA
-1077011256,1077011287,US
-1077011288,1077011295,AU
-1077011296,1077011311,US
-1077011312,1077011319,IN
-1077011320,1077011327,TR
-1077011328,1077011599,US
-1077011600,1077011607,EG
-1077011608,1077011615,NZ
-1077011616,1077011807,US
-1077011808,1077011823,GR
-1077011824,1077011831,AT
-1077011832,1077012031,US
-1077012032,1077012039,CO
-1077012040,1077012063,US
-1077012064,1077012079,AU
-1077012080,1077012111,US
-1077012112,1077012127,GB
-1077012128,1077012143,US
-1077012144,1077012159,EG
-1077012160,1077012167,GB
-1077012168,1077012295,US
-1077012296,1077012303,HK
-1077012304,1077012311,IN
-1077012312,1077012455,US
-1077012456,1077012463,IN
-1077012464,1077012495,US
-1077012496,1077012511,IT
-1077012512,1077012559,US
-1077012560,1077012567,CA
-1077012568,1077012575,US
-1077012576,1077012583,ES
-1077012584,1077013247,US
-1077013248,1077013255,HK
-1077013256,1077013263,US
-1077013264,1077013279,MX
-1077013280,1077013343,US
-1077013344,1077013351,AU
-1077013352,1077013359,US
-1077013360,1077013375,NL
-1077013376,1077013391,US
-1077013392,1077013399,HK
-1077013400,1077013407,US
-1077013408,1077013415,NZ
-1077013416,1077013431,US
-1077013432,1077013439,NZ
-1077013440,1077013511,US
-1077013512,1077013519,NZ
-1077013520,1077013551,US
-1077013552,1077013559,IN
-1077013560,1077013567,RU
-1077013568,1077013647,US
-1077013648,1077013663,DK
-1077013664,1077013671,US
-1077013672,1077013679,CA
-1077013680,1077013695,US
-1077013696,1077013703,CA
-1077013704,1077013735,US
-1077013736,1077013743,CR
-1077013744,1077013759,IN
-1077013760,1077014111,US
-1077014112,1077014127,MX
-1077014128,1077014151,US
-1077014152,1077014159,AU
-1077014160,1077014167,US
-1077014168,1077014175,IN
-1077014176,1077014527,US
-1077014528,1077014535,CA
-1077014536,1077014567,US
-1077014568,1077014575,FR
-1077014576,1077014607,US
-1077014608,1077014623,BY
-1077014624,1077014631,US
-1077014632,1077014639,IN
-1077014640,1077014647,US
-1077014648,1077014703,HK
-1077014704,1077014711,ZA
-1077014712,1077014743,US
-1077014744,1077014767,AE
-1077014768,1077015551,US
-1077015552,1077015559,GB
-1077015560,1077015623,US
-1077015624,1077015631,IN
-1077015632,1077015831,US
-1077015832,1077015847,ZA
-1077015848,1077015871,US
-1077015872,1077015879,CA
-1077015880,1077015919,US
-1077015920,1077015935,GB
-1077015936,1077017327,US
-1077017328,1077017335,IN
-1077017336,1077017439,US
-1077017440,1077017455,FR
-1077017456,1077017631,US
-1077017632,1077017647,VG
-1077017648,1077018023,US
-1077018024,1077018031,GB
-1077018032,1077018079,US
-1077018080,1077018111,BD
-1077018112,1077055487,US
+1077002240,1077055487,US
1077055488,1077059583,CA
1077059584,1077383167,US
1077383168,1077384191,US
@@ -10566,110 +9909,7 @@
1077940183,1077940186,CA
1077940187,1077940213,US
1077940214,1077940217,MX
-1077940218,1077942289,US
-1077942290,1077942290,CN
-1077942291,1077942310,US
-1077942311,1077942314,AU
-1077942315,1077942342,US
-1077942343,1077942346,CN
-1077942347,1077942363,US
-1077942364,1077942367,AU
-1077942368,1077942390,US
-1077942391,1077942398,CA
-1077942399,1077942411,US
-1077942412,1077942415,CA
-1077942416,1077942427,US
-1077942428,1077942431,CA
-1077942432,1077942435,SG
-1077942436,1077942443,US
-1077942444,1077942447,IN
-1077942448,1077942456,US
-1077942457,1077942461,CN
-1077942462,1077942493,US
-1077942494,1077942497,MX
-1077942498,1077942501,VN
-1077942502,1077942505,IN
-1077942506,1077942509,GB
-1077942510,1077942513,AE
-1077942514,1077942535,US
-1077942536,1077942539,AU
-1077942540,1077942543,IN
-1077942544,1077942544,US
-1077942545,1077942559,CN
-1077942560,1077942572,US
-1077942573,1077942576,CA
-1077942577,1077942600,US
-1077942601,1077942604,PE
-1077942605,1077942608,CO
-1077942609,1077942612,JP
-1077942613,1077942616,US
-1077942617,1077942620,MX
-1077942621,1077942624,BD
-1077942625,1077942636,US
-1077942637,1077942640,AU
-1077942641,1077942656,US
-1077942657,1077942660,CA
-1077942661,1077942672,US
-1077942673,1077942676,AU
-1077942677,1077942718,US
-1077942719,1077942722,CA
-1077942723,1077942746,US
-1077942747,1077942750,GB
-1077942751,1077942754,MY
-1077942755,1077942758,UA
-1077942759,1077942762,US
-1077942763,1077942766,AU
-1077942767,1077942770,SG
-1077942771,1077942813,US
-1077942814,1077942817,OM
-1077942818,1077942850,US
-1077942851,1077942854,CN
-1077942855,1077942858,ID
-1077942859,1077942867,US
-1077942868,1077942871,CA
-1077942872,1077942889,US
-1077942890,1077942893,ES
-1077942894,1077942922,US
-1077942923,1077942926,ZA
-1077942927,1077942930,CA
-1077942931,1077942943,US
-1077942944,1077942947,CA
-1077942948,1077942960,US
-1077942961,1077942964,OM
-1077942965,1077942972,US
-1077942973,1077942976,CA
-1077942977,1077942984,US
-1077942985,1077942988,IN
-1077942989,1077942992,NZ
-1077942993,1077943028,US
-1077943029,1077943038,TH
-1077943039,1077943045,US
-1077943046,1077943053,FI
-1077943054,1077943096,US
-1077943097,1077943100,AU
-1077943101,1077943104,US
-1077943105,1077943108,CN
-1077943109,1077943109,US
-1077943110,1077943110,CN
-1077943111,1077943139,US
-1077943140,1077943143,IN
-1077943144,1077943175,US
-1077943176,1077943179,DO
-1077943180,1077943183,AU
-1077943184,1077943191,CA
-1077943192,1077943224,US
-1077943225,1077943228,MY
-1077943229,1077943242,US
-1077943243,1077943246,IN
-1077943247,1077943247,US
-1077943248,1077943251,PK
-1077943252,1077943270,US
-1077943271,1077943274,BD
-1077943275,1077943279,US
-1077943280,1077943283,CN
-1077943284,1077943287,SG
-1077943288,1077943291,TH
-1077943292,1077960751,US
+1077940218,1077960751,US
1077960752,1077960759,CA
1077960760,1077960791,US
1077960792,1077960799,CO
@@ -10746,8 +9986,7 @@
1078284032,1078284255,CA
1078284256,1078284351,US
1078284352,1078284367,CA
-1078284368,1078284383,BV
-1078284384,1078284399,US
+1078284368,1078284399,US
1078284400,1078284687,CA
1078284688,1078284695,US
1078284696,1078284703,MX
@@ -10857,11 +10096,7 @@
1078433318,1078433343,IT
1078433344,1078433631,US
1078433632,1078433663,CN
-1078433664,1078434079,US
-1078434080,1078434087,LV
-1078434088,1078434271,US
-1078434272,1078434303,GR
-1078434304,1078434759,US
+1078433664,1078434759,US
1078434760,1078434767,BE
1078434768,1078434775,US
1078434776,1078434783,JP
@@ -10935,17 +10170,13 @@
1078581312,1078581327,CR
1078581328,1078581359,US
1078581360,1078581391,IN
-1078581392,1078581503,US
-1078581504,1078581759,CA
-1078581760,1078615679,US
+1078581392,1078615679,US
1078615680,1078615711,GB
1078615712,1078621695,US
1078621696,1078621951,IN
1078621952,1078651055,US
1078651056,1078651071,CA
-1078651072,1078654431,US
-1078654432,1078654439,AU
-1078654440,1078660799,US
+1078651072,1078660799,US
1078660800,1078660831,CN
1078660832,1078661807,US
1078661808,1078661823,IN
@@ -11148,9 +10379,7 @@
1079328512,1079328767,CA
1079328768,1079329919,US
1079329920,1079329951,CA
-1079329952,1079355967,US
-1079355968,1079355991,CA
-1079355992,1079377919,US
+1079329952,1079377919,US
1079377920,1079378943,CA
1079378944,1079379199,US
1079379200,1079379455,CA
@@ -11304,7 +10533,9 @@
1079626992,1079627775,PR
1079627776,1079664639,US
1079664640,1079668735,CA
-1079668736,1079861247,US
+1079668736,1079827871,US
+1079827872,1079827887,RU
+1079827888,1079861247,US
1079861248,1079865343,CA
1079865344,1079943999,US
1079944000,1079944031,AU
@@ -11314,9 +10545,7 @@
1079953568,1079953599,GB
1079953600,1079962879,US
1079962880,1079963135,GB
-1079963136,1080021999,US
-1080022000,1080022007,GT
-1080022008,1080024319,US
+1079963136,1080024319,US
1080024320,1080024575,CA
1080024576,1080030527,US
1080030528,1080030591,AR
@@ -11325,10 +10554,10 @@
1080295424,1080492031,US
1080492032,1080496127,BE
1080496128,1080498431,US
-1080498432,1080498559,FR
-1080498560,1080498664,US
+1080498432,1080498664,GB
1080498665,1080498665,EU
-1080498666,1080501503,US
+1080498666,1080498687,GB
+1080498688,1080501503,US
1080501504,1080501759,EU
1080501760,1080508415,US
1080508416,1080516607,GB
@@ -11336,21 +10565,22 @@
1080524800,1080543231,IN
1080543232,1080549375,US
1080549376,1080557567,IN
-1080557568,1080569343,US
-1080569344,1080569599,JP
-1080569600,1080569730,US
-1080569731,1080569731,JP
-1080569732,1080570367,US
-1080570368,1080570623,JP
-1080570624,1080578047,US
-1080578048,1080580095,SG
-1080580096,1080581887,US
+1080557568,1080565759,US
+1080565760,1080573951,JP
+1080573952,1080581631,US
+1080581632,1080581887,SG
1080581888,1080582143,AP
-1080582144,1080590335,US
+1080582144,1080589311,US
+1080589312,1080589567,SG
+1080589568,1080590335,US
1080590336,1080598527,IN
1080598528,1080606719,US
-1080606720,1080619007,AU
-1080619008,1080622079,US
+1080606720,1080614911,AU
+1080614912,1080615679,US
+1080615680,1080615935,AU
+1080615936,1080621311,US
+1080621312,1080621567,AU
+1080621568,1080622079,US
1080622080,1080622335,AU
1080622336,1080722827,US
1080722828,1080722837,IT
@@ -11663,12 +10893,22 @@
1081487992,1081488111,US
1081488112,1081488119,A2
1081488120,1081488123,US
-1081488124,1081488127,A2
-1081488128,1081489671,US
+1081488124,1081488135,A2
+1081488136,1081488159,US
+1081488160,1081488167,A2
+1081488168,1081488295,US
+1081488296,1081488303,A2
+1081488304,1081488335,US
+1081488336,1081488343,A2
+1081488344,1081488351,US
+1081488352,1081488383,A2
+1081488384,1081489671,US
1081489672,1081489679,A2
1081489680,1081489687,US
1081489688,1081489919,A2
-1081489920,1081565183,US
+1081489920,1081546495,US
+1081546496,1081546751,CA
+1081546752,1081565183,US
1081565184,1081573375,CA
1081573376,1081581615,US
1081581616,1081581623,JP
@@ -11723,9 +10963,7 @@
1081588768,1081589759,US
1081589760,1081593855,BB
1081593856,1081597951,CA
-1081597952,1081607759,US
-1081607760,1081607767,CA
-1081607768,1081608191,US
+1081597952,1081608191,US
1081608192,1081608207,CA
1081608208,1081608223,US
1081608224,1081608231,CA
@@ -11764,15 +11002,7 @@
1081612192,1081612655,US
1081612656,1081612663,CA
1081612664,1081612671,IN
-1081612672,1081613351,US
-1081613352,1081613359,CA
-1081613360,1081613399,US
-1081613400,1081613407,CA
-1081613408,1081613447,US
-1081613448,1081613455,CA
-1081613456,1081613543,US
-1081613544,1081613551,CA
-1081613552,1081618047,US
+1081612672,1081618047,US
1081618048,1081618055,ZA
1081618056,1081618079,US
1081618080,1081618095,ZA
@@ -11784,19 +11014,15 @@
1081625672,1081625679,CA
1081625680,1081625775,US
1081625776,1081625783,CA
-1081625784,1081630903,US
-1081630904,1081630911,CA
-1081630912,1081633919,US
+1081625784,1081633919,US
1081633920,1081634047,IN
1081634048,1081872663,US
1081872664,1081872671,FI
1081872672,1081912575,US
1081912576,1081912639,DE
-1081912640,1081914879,US
-1081914880,1081915135,GB
-1081915136,1081977919,US
-1081977920,1081977935,GB
-1081977936,1081978623,US
+1081912640,1081927135,US
+1081927136,1081927143,GB
+1081927144,1081978623,US
1081978624,1081978631,CH
1081978632,1082091263,US
1082091264,1082091271,CN
@@ -11804,7 +11030,9 @@
1082093680,1082093695,AU
1082093696,1082097055,US
1082097056,1082097071,CA
-1082097072,1082138623,US
+1082097072,1082131199,US
+1082131200,1082131455,AS
+1082131456,1082138623,US
1082138624,1082139409,A2
1082139410,1082139410,ZA
1082139411,1082140671,A2
@@ -11872,9 +11100,9 @@
1082350656,1082350671,IT
1082350672,1082350911,US
1082350912,1082350943,RU
-1082350944,1082351359,US
-1082351360,1082351615,SA
-1082351616,1082419455,US
+1082350944,1082351361,US
+1082351362,1082351362,SA
+1082351363,1082419455,US
1082419456,1082419711,A2
1082419712,1082679807,US
1082683392,1082687487,CA
@@ -11888,7 +11116,9 @@
1082790144,1082790399,IN
1082790400,1082819839,US
1082819840,1082820351,IN
-1082820352,1082945535,US
+1082820352,1082885855,US
+1082885856,1082885887,CA
+1082885888,1082945535,US
1082945536,1082948943,CA
1082948944,1082948959,US
1082948960,1082949631,CA
@@ -11896,9 +11126,7 @@
1082952704,1082952959,CA
1082952960,1082982399,US
1082982400,1083015167,CA
-1083015168,1083145727,US
-1083145728,1083145983,MX
-1083145984,1083261311,US
+1083015168,1083261311,US
1083261312,1083261439,US
1083261440,1083264383,US
1083264384,1083264447,US
@@ -11908,7 +11136,9 @@
1083265024,1083265279,CA
1083265280,1083396095,US
1083396096,1083400191,BM
-1083400192,1083417727,US
+1083400192,1083413247,US
+1083413248,1083413375,CA
+1083413376,1083417727,US
1083417728,1083417791,CA
1083417792,1083437055,US
1083437056,1083441151,CA
@@ -12053,17 +11283,19 @@
1087379456,1087379711,GB
1087379712,1087385855,US
1087385856,1087386111,EU
-1087386112,1087393791,US
-1087393792,1087395503,GB
+1087386112,1087395327,US
+1087395328,1087395503,GB
1087395504,1087395511,US
-1087395512,1087395839,GB
-1087395840,1087399167,US
+1087395512,1087395583,GB
+1087395584,1087399167,US
1087399168,1087399423,GB
1087399424,1087401727,US
1087401728,1087401791,GB
-1087401792,1087419135,US
-1087419136,1087419391,GB
-1087419392,1087419903,US
+1087401792,1087401855,US
+1087401856,1087401887,MX
+1087401888,1087401919,US
+1087401920,1087401983,MX
+1087401984,1087419903,US
1087419904,1087420159,CA
1087420160,1087432599,US
1087432600,1087432607,FR
@@ -12090,18 +11322,22 @@
1087496960,1087497855,US
1087497856,1087497887,CA
1087497888,1087514879,US
-1087514880,1087515391,BB
-1087515392,1087515647,US
+1087514880,1087515135,BB
+1087515136,1087515647,US
1087515648,1087516671,BB
1087516672,1087554751,US
1087554752,1087554759,IL
1087554760,1087580927,US
1087580928,1087581183,BR
-1087581184,1087608485,US
-1087608486,1087608486,GB
-1087608487,1087643723,US
+1087581184,1087596031,US
+1087596032,1087596287,DE
+1087596288,1087608319,US
+1087608320,1087608575,GB
+1087608576,1087643723,US
1087643724,1087643727,FR
-1087643728,1087678623,US
+1087643728,1087651839,US
+1087651840,1087655935,VE
+1087655936,1087678623,US
1087678624,1087678655,GB
1087678656,1087686655,US
1087686656,1087686911,PR
@@ -12121,9 +11357,7 @@
1087729664,1087733759,PR
1087733760,1087735639,US
1087735640,1087735647,GB
-1087735648,1087738879,US
-1087738880,1087739135,AR
-1087739136,1087746079,US
+1087735648,1087746079,US
1087746080,1087746083,HK
1087746084,1087758335,US
1087758336,1087766527,PR
@@ -12134,11 +11368,13 @@
1087825920,1087839231,US
1087839232,1087839743,GB
1087839744,1087854079,US
-1087854080,1087854335,GB
-1087854336,1087862783,US
+1087854080,1087854591,GB
+1087854592,1087862783,US
1087862784,1087864831,PA
1087864832,1087873023,US
-1087873024,1087874559,CA
+1087873024,1087873535,CA
+1087873536,1087873791,US
+1087873792,1087874559,CA
1087874560,1087874815,US
1087874816,1087875071,CA
1087875072,1087883263,US
@@ -12235,12 +11471,16 @@
1089172984,1089172991,US
1089172992,1089173119,NL
1089173120,1089173247,A2
-1089173248,1089174271,US
-1089174272,1089175551,A2
+1089173248,1089174015,US
+1089174016,1089174159,A2
+1089174160,1089174167,US
+1089174168,1089174175,A2
+1089174176,1089174199,US
+1089174200,1089174207,A2
+1089174208,1089174215,US
+1089174216,1089175551,A2
1089175552,1089191935,US
-1089191936,1089196623,CA
-1089196624,1089196639,US
-1089196640,1089200127,CA
+1089191936,1089200127,CA
1089200128,1089200751,US
1089200752,1089200783,CA
1089200784,1089203439,US
@@ -12312,7 +11552,9 @@
1089493632,1089493647,CA
1089493648,1089503871,US
1089503872,1089503879,CA
-1089503880,1089526783,US
+1089503880,1089507159,US
+1089507160,1089507167,CA
+1089507168,1089526783,US
1089526784,1089527039,VE
1089527040,1089552383,US
1089552384,1089552391,AU
@@ -12322,9 +11564,7 @@
1089574320,1089574327,CA
1089574328,1089576623,US
1089576624,1089576631,CA
-1089576632,1089579215,US
-1089579216,1089579223,VI
-1089579224,1089579519,US
+1089576632,1089579519,US
1089579520,1089580031,VE
1089580032,1089581287,US
1089581288,1089581295,CA
@@ -12386,15 +11626,25 @@
1090356328,1090356335,US
1090356336,1090356399,CA
1090356400,1090356415,US
-1090356416,1090363391,CA
+1090356416,1090357535,CA
+1090357536,1090357567,US
+1090357568,1090357663,CA
+1090357664,1090357679,US
+1090357680,1090357703,CA
+1090357704,1090357711,US
+1090357712,1090357727,CA
+1090357728,1090357735,US
+1090357736,1090363391,CA
1090363392,1090387967,US
1090387968,1090396159,CA
-1090396160,1090424287,US
-1090424288,1090424319,FI
-1090424320,1090424831,US
+1090396160,1090424831,US
1090424832,1090428927,CA
1090428928,1090445311,US
-1090445312,1090453503,CA
+1090445312,1090447359,CA
+1090447360,1090447487,US
+1090447488,1090448127,CA
+1090448128,1090448255,US
+1090448256,1090453503,CA
1090453504,1090497903,US
1090497904,1090497919,AU
1090497920,1091683357,US
@@ -12458,13 +11708,7 @@
1091694878,1091694887,DE
1091694888,1091695007,US
1091695008,1091695017,CA
-1091695018,1091695123,US
-1091695124,1091695163,CA
-1091695164,1091695213,US
-1091695214,1091695223,CA
-1091695224,1091695283,US
-1091695284,1091695293,CA
-1091695294,1091797263,US
+1091695018,1091797263,US
1091797264,1091797279,IT
1091797280,1091797975,US
1091797976,1091797983,US
@@ -12575,7 +11819,7 @@
1093111904,1093111935,CA
1093111936,1093111943,US
1093111944,1093111959,CA
-1093111960,1093111967,BV
+1093111960,1093111967,US
1093111968,1093112431,CA
1093112432,1093112479,US
1093112480,1093112543,CA
@@ -12634,9 +11878,7 @@
1093119744,1093119831,CA
1093119832,1093119839,US
1093119840,1093120383,CA
-1093120384,1093120399,US
-1093120400,1093120415,BV
-1093120416,1093120431,US
+1093120384,1093120431,US
1093120432,1093120767,CA
1093120768,1093120911,US
1093120912,1093120943,CA
@@ -12726,10 +11968,8 @@
1093136896,1093137351,CA
1093137352,1093137359,US
1093137360,1093137375,MX
-1093137376,1093138175,CA
-1093138176,1093138303,US
-1093138304,1093138319,CA
-1093138320,1093138559,US
+1093137376,1093138431,CA
+1093138432,1093138559,US
1093138560,1093138623,CA
1093138624,1093138687,NL
1093138688,1093139455,US
@@ -12738,9 +11978,11 @@
1093139648,1093139679,CA
1093139680,1093139695,US
1093139696,1093140223,CA
-1093140224,1093671591,US
-1093671592,1093671599,UY
-1093671600,1093697535,US
+1093140224,1093320191,US
+1093320192,1093320255,PR
+1093320256,1093320287,US
+1093320288,1093320447,PR
+1093320448,1093697535,US
1093697536,1093699071,BB
1093699072,1093700607,GD
1093700608,1093701631,VC
@@ -12776,146 +12018,7 @@
1093748800,1093748863,CN
1093748864,1094441727,US
1094441728,1094441983,US
-1094441984,1094549687,US
-1094549688,1094549695,CA
-1094549696,1094549783,US
-1094549784,1094549791,AU
-1094549792,1094549807,US
-1094549808,1094549815,UZ
-1094549816,1094549863,US
-1094549864,1094549871,BD
-1094549872,1094549935,US
-1094549936,1094549943,CA
-1094549944,1094549951,CY
-1094549952,1094550223,US
-1094550224,1094550239,AU
-1094550240,1094550247,BD
-1094550248,1094550487,US
-1094550488,1094550495,RO
-1094550496,1094550607,US
-1094550608,1094550615,BD
-1094550616,1094550679,US
-1094550680,1094550695,VE
-1094550696,1094550799,US
-1094550800,1094550807,NL
-1094550808,1094550823,US
-1094550824,1094550831,CA
-1094550832,1094550847,US
-1094550848,1094550855,IN
-1094550856,1094550879,US
-1094550880,1094550887,NZ
-1094550888,1094550895,JP
-1094550896,1094550911,US
-1094550912,1094550919,JM
-1094550920,1094550967,US
-1094550968,1094550975,JM
-1094550976,1094550991,US
-1094550992,1094550999,NL
-1094551000,1094551207,US
-1094551208,1094551215,GB
-1094551216,1094551231,AU
-1094551232,1094551455,US
-1094551456,1094551471,SE
-1094551472,1094551839,US
-1094551840,1094551855,GB
-1094551856,1094552023,US
-1094552024,1094552031,IN
-1094552032,1094552191,US
-1094552192,1094552199,GB
-1094552200,1094552239,US
-1094552240,1094552247,IN
-1094552248,1094552287,US
-1094552288,1094552311,NZ
-1094552312,1094552319,US
-1094552320,1094552335,IN
-1094552336,1094552375,US
-1094552376,1094552383,AE
-1094552384,1094552527,US
-1094552528,1094552543,CY
-1094552544,1094552551,US
-1094552552,1094552559,NL
-1094552560,1094553855,US
-1094553856,1094553863,GB
-1094553864,1094553927,US
-1094553928,1094553935,IN
-1094553936,1094553975,US
-1094553976,1094553983,NZ
-1094553984,1094554879,US
-1094554880,1094554887,LK
-1094554888,1094554967,US
-1094554968,1094554975,UZ
-1094554976,1094555077,US
-1094555078,1094555081,IN
-1094555082,1094556191,US
-1094556192,1094556207,IN
-1094556208,1094556703,US
-1094556704,1094556719,CA
-1094556720,1094556783,US
-1094556784,1094556799,NZ
-1094556800,1094557183,US
-1094557184,1094557199,AU
-1094557200,1094557271,US
-1094557272,1094557279,CA
-1094557280,1094557751,US
-1094557752,1094557759,GB
-1094557760,1094558463,US
-1094558464,1094558471,JP
-1094558472,1094558751,US
-1094558752,1094558783,CA
-1094558784,1094558975,US
-1094558976,1094558991,BD
-1094558992,1094559535,US
-1094559536,1094559551,GB
-1094559552,1094559623,US
-1094559624,1094559631,CA
-1094559632,1094559743,US
-1094559744,1094559775,AU
-1094559776,1094559807,US
-1094559808,1094559903,AU
-1094559904,1094559919,US
-1094559920,1094559935,AU
-1094559936,1094560063,US
-1094560064,1094560103,FR
-1094560104,1094560255,US
-1094560256,1094560263,IN
-1094560264,1094560279,US
-1094560280,1094560287,GB
-1094560288,1094560319,US
-1094560320,1094560335,IN
-1094560336,1094560831,US
-1094560832,1094560863,BD
-1094560864,1094560895,US
-1094560896,1094561023,CA
-1094561024,1094561047,US
-1094561048,1094561055,CA
-1094561056,1094561311,US
-1094561312,1094561319,ES
-1094561320,1094561327,CA
-1094561328,1094561399,US
-1094561400,1094561407,IL
-1094561408,1094561535,US
-1094561536,1094561639,HK
-1094561640,1094561831,US
-1094561832,1094561839,AU
-1094561840,1094561855,US
-1094561856,1094561919,AU
-1094561920,1094562431,US
-1094562432,1094562455,TH
-1094562456,1094562799,US
-1094562800,1094562807,CA
-1094562808,1094562879,US
-1094562880,1094562895,MX
-1094562896,1094562911,US
-1094562912,1094562927,DK
-1094562928,1094563743,US
-1094563744,1094563775,BD
-1094563776,1094563887,US
-1094563888,1094563895,MX
-1094563896,1094564671,US
-1094564672,1094564703,BD
-1094564704,1094565695,US
-1094565696,1094565727,BD
-1094565728,1094565887,US
+1094441984,1094565887,US
1094565888,1094582271,CA
1094582272,1094662271,US
1094662272,1094662303,CN
@@ -12929,11 +12032,7 @@
1095450624,1095467007,BS
1095467008,1095627775,US
1095627776,1095628287,CA
-1095628288,1095740415,US
-1095740416,1095740671,IN
-1095740672,1096224919,US
-1096224920,1096224927,CO
-1096224928,1096278015,US
+1095628288,1096278015,US
1096278016,1096286207,CA
1096286208,1096290879,US
1096290880,1096290943,A2
@@ -12954,9 +12053,7 @@
1096890880,1096891135,GB
1096891136,1096925183,US
1096925184,1096941567,CA
-1096941568,1096947471,US
-1096947472,1096947479,MY
-1096947480,1096950551,US
+1096941568,1096950551,US
1096950552,1096950559,CA
1096950560,1096952455,US
1096952456,1096952463,GB
@@ -13011,7 +12108,9 @@
1097131472,1097727999,US
1097728000,1097729151,CA
1097729152,1097729167,US
-1097729168,1097736191,CA
+1097729168,1097731447,CA
+1097731448,1097731455,GB
+1097731456,1097736191,CA
1097736192,1097768959,US
1097768960,1097777151,CA
1097785344,1097830399,US
@@ -13028,9 +12127,7 @@
1097947136,1097949183,VI
1097949184,1097951231,US
1097951232,1097953279,VI
-1097953280,1098057375,US
-1098057376,1098057407,CA
-1098057408,1098083895,US
+1097953280,1098083895,US
1098083896,1098083903,ME
1098083904,1098187599,US
1098187600,1098187607,GB
@@ -13046,9 +12143,7 @@
1098398976,1098399231,A2
1098399232,1098399487,US
1098399488,1098399743,A2
-1098399744,1098507263,US
-1098507264,1098507519,CA
-1098507520,1098891575,US
+1098399744,1098891575,US
1098891576,1098891607,AU
1098891608,1098891623,US
1098891624,1098891631,AU
@@ -13097,9 +12192,7 @@
1101339888,1101339903,CA
1101339904,1101352959,US
1101352960,1101355007,HN
-1101355008,1101384415,US
-1101384416,1101384447,CA
-1101384448,1101385855,US
+1101355008,1101385855,US
1101385856,1101385919,DK
1101385920,1101402031,US
1101402032,1101402047,PR
@@ -13153,9 +12246,7 @@
1101791744,1101791999,A2
1101792000,1101792255,US
1101792256,1101792767,A2
-1101792768,1101798143,US
-1101798144,1101798399,BB
-1101798400,1101803519,US
+1101792768,1101803519,US
1101803520,1101804543,HN
1101804544,1101837311,US
1101837312,1101837567,EC
@@ -13163,17 +12254,17 @@
1101856768,1101856775,DK
1101856776,1101857295,US
1101857296,1101857311,CA
-1101857312,1101864223,US
-1101864224,1101864255,BE
-1101864256,1101869055,US
+1101857312,1101869055,US
1101869056,1101869567,GH
1101869568,1101871103,US
1101871104,1101873151,BO
-1101873152,1101905407,US
+1101873152,1101881935,US
+1101881936,1101881951,GB
+1101881952,1101905407,US
1101905408,1101905663,GH
-1101905664,1101921407,US
-1101921408,1101921471,BA
-1101921472,1101983231,US
+1101905664,1101952439,US
+1101952440,1101952447,CA
+1101952448,1101983231,US
1101983232,1101983743,CW
1101983744,1102004223,US
1102004224,1102004479,IN
@@ -13266,7 +12357,9 @@
1102512128,1102516223,JM
1102516224,1103244799,US
1103244800,1103245055,EC
-1103245056,1103476223,US
+1103245056,1103475871,US
+1103475872,1103475879,AF
+1103475880,1103476223,US
1103476224,1103476255,CA
1103476256,1103548415,US
1103548416,1103550463,BS
@@ -13276,9 +12369,7 @@
1103586368,1103586375,AF
1103586376,1103603711,US
1103603712,1103605759,EC
-1103605760,1103617023,US
-1103617024,1103617279,IT
-1103617280,1103623167,US
+1103605760,1103623167,US
1103623168,1103623679,CO
1103623680,1103675647,US
1103675648,1103675711,AU
@@ -13318,7 +12409,9 @@
1104096408,1104096415,DE
1104096416,1104166911,US
1104166912,1104168959,CO
-1104168960,1104265215,US
+1104168960,1104232743,US
+1104232744,1104232751,CA
+1104232752,1104265215,US
1104265216,1104265727,PH
1104265728,1104413695,US
1104413696,1104413711,CA
@@ -13338,7 +12431,9 @@
1104630976,1104631039,CA
1104631040,1104666751,US
1104666752,1104666767,CA
-1104666768,1104842751,US
+1104666768,1104753151,US
+1104753152,1104753407,SX
+1104753408,1104842751,US
1104842752,1104844799,PR
1104844800,1104875335,US
1104875336,1104875351,AF
@@ -13350,17 +12445,23 @@
1105034496,1105034751,IT
1105034752,1105099519,US
1105099520,1105099775,EC
-1105099776,1105143039,US
+1105099776,1105142463,US
+1105142464,1105142471,MN
+1105142472,1105143039,US
1105143040,1105143047,MN
1105143048,1105153215,US
1105153216,1105153279,PH
-1105153280,1106305663,US
+1105153280,1105196775,US
+1105196776,1105196783,AF
+1105196784,1106305663,US
1106305664,1106305671,CA
1106305672,1106306047,US
1106306048,1106306079,CA
1106306080,1106349599,US
1106349600,1106349607,UM
-1106349608,1106469887,US
+1106349608,1106469695,US
+1106469696,1106469759,CO
+1106469760,1106469887,US
1106469888,1106470911,BS
1106470912,1106475007,US
1106475008,1106475519,CO
@@ -13403,7 +12504,9 @@
1107288064,1107292159,CA
1107292160,1107701759,US
1107701760,1107705855,CA
-1107705856,1107808842,US
+1107705856,1107801367,US
+1107801368,1107801375,CA
+1107801376,1107808842,US
1107808843,1107808846,PE
1107808847,1107808877,US
1107808878,1107808881,PE
@@ -13438,9 +12541,7 @@
1107948800,1108025343,US
1108025344,1108029439,CA
1108029440,1108033535,US
-1108033536,1108036679,CA
-1108036680,1108036687,US
-1108036688,1108041727,CA
+1108033536,1108041727,CA
1108041728,1108054015,US
1108054016,1108054303,CA
1108054304,1108054311,US
@@ -13546,9 +12647,13 @@
1109650656,1109688319,US
1109688320,1109696511,CA
1109696512,1109705727,US
-1109705728,1109705823,CD
-1109705824,1109705839,CG
-1109705840,1109705928,CD
+1109705728,1109705743,CG
+1109705744,1109705759,US
+1109705760,1109705791,CD
+1109705792,1109705823,US
+1109705824,1109705839,CD
+1109705840,1109705855,US
+1109705856,1109705928,CD
1109705929,1109705929,LB
1109705930,1109705983,CD
1109705984,1109707007,US
@@ -13563,9 +12668,7 @@
1109711176,1109711183,HT
1109711184,1109712767,US
1109712768,1109712895,A2
-1109712896,1109738495,US
-1109738496,1109738623,VA
-1109738624,1109772223,US
+1109712896,1109772223,US
1109772224,1109772239,HK
1109772240,1109774175,US
1109774176,1109774183,CA
@@ -13576,7 +12679,11 @@
1109819392,1109848831,CA
1109848832,1109849087,CA
1109849088,1109852159,CA
-1109852160,1109918463,US
+1109852160,1109902415,US
+1109902416,1109902431,CY
+1109902432,1109902511,US
+1109902512,1109902527,CY
+1109902528,1109918463,US
1109918464,1109918719,GB
1109918720,1109919743,US
1109919744,1109919999,GB
@@ -13604,9 +12711,7 @@
1109954352,1109954367,ES
1109954368,1110126591,US
1110126592,1110130687,CA
-1110130688,1110307903,US
-1110307904,1110307967,AU
-1110307968,1110310911,US
+1110130688,1110310911,US
1110310912,1110376447,CA
1110376448,1110415929,US
1110415930,1110415930,US
@@ -13748,7 +12853,9 @@
1110474496,1110474751,CA
1110474752,1110540287,US
1110540288,1110573055,CA
-1110573056,1110638591,PR
+1110573056,1110578431,PR
+1110578432,1110578687,US
+1110578688,1110638591,PR
1110638592,1110654463,US
1110654464,1110654719,HT
1110654720,1110663167,US
@@ -13817,17 +12924,13 @@
1112906368,1112906375,BR
1112906376,1112906431,US
1112906432,1112906439,GB
-1112906440,1112906943,US
-1112906944,1112906959,BR
-1112906960,1112907775,US
+1112906440,1112907775,US
1112907776,1112907783,CA
1112907784,1112907919,US
1112907920,1112907935,EG
1112907936,1112914175,US
1112914176,1112914239,GB
-1112914240,1113212479,US
-1113212480,1113212495,CA
-1113212496,1113591807,US
+1112914240,1113591807,US
1113591808,1113595903,CA
1113595904,1113596415,CL
1113596416,1113596927,GT
@@ -13936,11 +13039,11 @@
1114537984,1114550271,CA
1114550272,1114579831,US
1114579832,1114579832,US
-1114579833,1114612991,US
-1114612992,1114613247,AU
-1114613248,1114628995,US
+1114579833,1114628995,US
1114628996,1114628996,US
-1114628997,1114681343,US
+1114628997,1114653951,US
+1114653952,1114653983,MO
+1114653984,1114681343,US
1114681344,1114685439,CA
1114685440,1114730495,US
1114730496,1114734591,CA
@@ -13976,7 +13079,11 @@
1114881280,1114881407,CY
1114881408,1114881471,US
1114881472,1114881535,CY
-1114881536,1114930175,US
+1114881536,1114928863,US
+1114928864,1114928871,GB
+1114928872,1114929071,US
+1114929072,1114929087,RU
+1114929088,1114930175,US
1114930176,1114930303,GB
1114930304,1114966815,US
1114966816,1114966831,GB
@@ -13988,7 +13095,9 @@
1115111936,1115112063,PR
1115112064,1115112079,US
1115112080,1115112087,ES
-1115112088,1115113471,US
+1115112088,1115112575,US
+1115112576,1115112607,IN
+1115112608,1115113471,US
1115113472,1115114495,HN
1115114496,1115114751,MX
1115114752,1115115007,GT
@@ -14005,7 +13114,9 @@
1115136000,1115144191,CA
1115144192,1115705343,US
1115705344,1115709439,CA
-1115709440,1115774799,US
+1115709440,1115768351,US
+1115768352,1115768367,CA
+1115768368,1115774799,US
1115774800,1115774815,A2
1115774816,1115783167,US
1115783168,1115791359,CA
@@ -14021,7 +13132,9 @@
1116015872,1116016127,A2
1116016128,1116021247,US
1116021248,1116021503,CI
-1116021504,1116027135,US
+1116021504,1116024063,US
+1116024064,1116024127,PG
+1116024128,1116027135,US
1116027136,1116027903,A2
1116027904,1116158271,US
1116158272,1116158335,CA
@@ -14032,9 +13145,7 @@
1116158720,1116159519,US
1116159520,1116159535,BR
1116159536,1116168191,US
-1116168192,1116169311,CA
-1116169312,1116169327,US
-1116169328,1116175103,CA
+1116168192,1116175103,CA
1116175104,1116175135,JM
1116175136,1116176383,CA
1116176384,1116425393,US
@@ -14049,11 +13160,11 @@
1117142272,1117142527,CA
1117142528,1117167855,US
1117167856,1117167871,GB
-1117167872,1117178287,US
-1117178288,1117178303,GB
-1117178304,1117189951,US
+1117167872,1117189951,US
1117189952,1117190015,KR
-1117190016,1117198591,US
+1117190016,1117195991,US
+1117195992,1117195999,A2
+1117196000,1117198591,US
1117198592,1117198847,CA
1117198848,1117274111,US
1117274112,1117282303,CA
@@ -14099,9 +13210,7 @@
1117815296,1117815551,CN
1117815552,1117817919,US
1117817920,1117817983,CA
-1117817984,1117818975,US
-1117818976,1117818991,HK
-1117818992,1117819631,US
+1117817984,1117819631,US
1117819632,1117819647,AE
1117819648,1117822463,US
1117822464,1117822527,CA
@@ -14117,9 +13226,23 @@
1117831424,1117978623,US
1117978624,1117979503,CA
1117979504,1117979519,US
-1117979520,1117986575,CA
-1117986576,1117986687,US
-1117986688,1117986815,CA
+1117979520,1117982639,CA
+1117982640,1117982655,US
+1117982656,1117982999,CA
+1117983000,1117983007,US
+1117983008,1117983023,CA
+1117983024,1117983039,US
+1117983040,1117983215,CA
+1117983216,1117983223,US
+1117983224,1117985055,CA
+1117985056,1117985079,US
+1117985080,1117985423,CA
+1117985424,1117985447,US
+1117985448,1117985463,CA
+1117985464,1117985471,US
+1117985472,1117986591,CA
+1117986592,1117986607,US
+1117986608,1117986815,CA
1117986816,1117995007,US
1117995008,1117999103,CA
1117999104,1118027783,US
@@ -14211,11 +13334,42 @@
1118151464,1118151471,CR
1118151472,1118151631,US
1118151632,1118151647,MX
-1118151648,1118156319,US
-1118156320,1118156335,PE
-1118156336,1118156399,US
-1118156400,1118156415,VE
-1118156416,1118158847,US
+1118151648,1118152239,US
+1118152240,1118152255,AW
+1118152256,1118152271,PR
+1118152272,1118152287,US
+1118152288,1118152303,BR
+1118152304,1118152319,FR
+1118152320,1118152415,US
+1118152416,1118152431,PR
+1118152432,1118153071,US
+1118153072,1118153087,UY
+1118153088,1118153151,US
+1118153152,1118153167,AR
+1118153168,1118153543,US
+1118153544,1118153547,BR
+1118153548,1118153551,US
+1118153552,1118153567,DE
+1118153568,1118153679,US
+1118153680,1118153695,VE
+1118153696,1118153871,US
+1118153872,1118153887,CO
+1118153888,1118153919,US
+1118153920,1118153935,PA
+1118153936,1118153951,TT
+1118153952,1118154063,US
+1118154064,1118154079,MX
+1118154080,1118154207,US
+1118154208,1118154223,CL
+1118154224,1118155999,US
+1118156000,1118156015,GT
+1118156016,1118158079,US
+1118158080,1118158087,PA
+1118158088,1118158319,US
+1118158320,1118158323,SV
+1118158324,1118158331,US
+1118158332,1118158335,SV
+1118158336,1118158847,US
1118158848,1118167039,CA
1118167040,1118474239,US
1118474240,1118474535,CA
@@ -14249,7 +13403,9 @@
1118543872,1118547967,CA
1118547968,1118548671,US
1118548672,1118548679,CA
-1118548680,1118564607,US
+1118548680,1118549575,US
+1118549576,1118549583,IN
+1118549584,1118564607,US
1118564608,1118564639,NO
1118564640,1118564655,US
1118564656,1118564671,IN
@@ -14265,9 +13421,30 @@
1118789784,1118789791,BB
1118789792,1118790655,US
1118790656,1118790911,IL
-1118790912,1118793471,US
+1118790912,1118791999,US
+1118792000,1118792031,PR
+1118792032,1118792063,DO
+1118792064,1118792127,US
+1118792128,1118792143,AU
+1118792144,1118793407,US
+1118793408,1118793423,BB
+1118793424,1118793471,US
1118793472,1118793727,CO
-1118793728,1118796543,US
+1118793728,1118793823,US
+1118793824,1118793839,CA
+1118793840,1118793871,US
+1118793872,1118793887,DO
+1118793888,1118793935,US
+1118793936,1118793951,ES
+1118793952,1118793967,US
+1118793968,1118793983,HT
+1118793984,1118794127,US
+1118794128,1118794143,NO
+1118794144,1118795791,US
+1118795792,1118795807,AG
+1118795808,1118795895,US
+1118795896,1118795903,CY
+1118795904,1118796543,US
1118796544,1118796799,GB
1118796800,1118797063,US
1118797064,1118797071,CR
@@ -14293,8 +13470,13 @@
1118964880,1118964991,A2
1118964992,1118965247,CW
1118965248,1118965503,AS
-1118965504,1118965759,A2
-1118965760,1118966015,GF
+1118965504,1118965839,A2
+1118965840,1118965847,EC
+1118965848,1118965911,A2
+1118965912,1118965919,MA
+1118965920,1118965991,A2
+1118965992,1118966007,NG
+1118966008,1118966015,A2
1118966016,1118966271,BR
1118966272,1118966351,SV
1118966352,1118966367,A2
@@ -14492,8 +13674,12 @@
1118977312,1118977343,NG
1118977344,1118977351,KE
1118977352,1118977535,A2
-1118977536,1118977791,US
-1118977792,1118977839,A2
+1118977536,1118977551,US
+1118977552,1118977575,A2
+1118977576,1118977583,SA
+1118977584,1118977631,A2
+1118977632,1118977639,US
+1118977640,1118977839,A2
1118977840,1118977847,LB
1118977848,1118977879,A2
1118977880,1118977887,NI
@@ -14771,7 +13957,9 @@
1119211520,1119215615,CA
1119215616,1119289343,US
1119289344,1119354879,CA
-1119354880,1119428607,US
+1119354880,1119369407,US
+1119369408,1119369415,UM
+1119369416,1119428607,US
1119428608,1119432703,VI
1119432704,1119436799,CA
1119436800,1119440895,US
@@ -14786,11 +13974,11 @@
1119502336,1119510527,CA
1119510528,1119558143,US
1119558144,1119558655,PR
-1119558656,1119580159,US
+1119558656,1119571967,US
+1119571968,1119576063,CA
+1119576064,1119580159,US
1119580160,1119584255,CA
-1119584256,1119612671,US
-1119612672,1119612927,AU
-1119612928,1120064511,US
+1119584256,1120064511,US
1120064512,1120064767,AR
1120064768,1120149503,US
1120149504,1120149599,CA
@@ -14802,9 +13990,7 @@
1120151712,1120152159,CA
1120152160,1120152191,US
1120152192,1120153599,CA
-1120153600,1120159487,US
-1120159488,1120159743,GB
-1120159744,1120272383,US
+1120153600,1120272383,US
1120272384,1120276991,CA
1120276992,1120277503,US
1120277504,1120280575,CA
@@ -14877,7 +14063,9 @@
1120371712,1120372223,US
1120372224,1120372479,CA
1120372480,1120372735,US
-1120372736,1120374047,CA
+1120372736,1120373423,CA
+1120373424,1120373503,US
+1120373504,1120374047,CA
1120374048,1120374063,US
1120374064,1120374279,CA
1120374280,1120374303,US
@@ -14959,7 +14147,13 @@
1120382440,1120382447,CA
1120382448,1120382463,US
1120382464,1120382975,CA
-1120382976,1120383775,US
+1120382976,1120383263,US
+1120383264,1120383327,CA
+1120383328,1120383343,US
+1120383344,1120383367,CA
+1120383368,1120383423,US
+1120383424,1120383439,CA
+1120383440,1120383775,US
1120383776,1120383951,CA
1120383952,1120385135,US
1120385136,1120385143,CA
@@ -15048,9 +14242,7 @@
1120517632,1120517887,US
1120517888,1120518143,CL
1120518144,1120534527,CA
-1120534528,1120575167,US
-1120575168,1120575199,CA
-1120575200,1120641023,US
+1120534528,1120641023,US
1120641024,1120657407,CA
1120657408,1120731391,US
1120731392,1120731647,A2
@@ -15110,10 +14302,20 @@
1120911360,1120919551,CA
1120919552,1121005567,US
1121005568,1121009663,CA
-1121009664,1121038335,US
+1121009664,1121009983,US
+1121009984,1121009999,CA
+1121010000,1121038335,US
1121038336,1121042431,CA
1121042432,1121230847,US
-1121230848,1121239039,CA
+1121230848,1121232119,CA
+1121232120,1121232127,US
+1121232128,1121233455,CA
+1121233456,1121233463,US
+1121233464,1121233471,DE
+1121233472,1121233575,CA
+1121233576,1121233583,US
+1121233584,1121233599,DE
+1121233600,1121239039,CA
1121239040,1121247231,US
1121247232,1121247239,CA
1121247240,1121247255,AG
@@ -15286,253 +14488,7 @@
1121253376,1121253887,CA
1121253888,1121254143,BZ
1121254144,1121255423,CA
-1121255424,1121468463,US
-1121468464,1121468479,AR
-1121468480,1121468495,US
-1121468496,1121468511,PK
-1121468512,1121468519,AU
-1121468520,1121468527,IN
-1121468528,1121468551,US
-1121468552,1121468559,CA
-1121468560,1121468567,US
-1121468568,1121468575,AU
-1121468576,1121468591,US
-1121468592,1121468600,AU
-1121468601,1121468911,US
-1121468912,1121468927,GB
-1121468928,1121469175,US
-1121469176,1121469183,CA
-1121469184,1121469367,US
-1121469368,1121469375,CA
-1121469376,1121469839,US
-1121469840,1121469847,AU
-1121469848,1121469871,US
-1121469872,1121469879,SE
-1121469880,1121469911,US
-1121469912,1121469919,PH
-1121469920,1121470015,US
-1121470016,1121470047,AU
-1121470048,1121470175,US
-1121470176,1121470191,CA
-1121470192,1121470215,US
-1121470216,1121470223,CA
-1121470224,1121470263,US
-1121470264,1121470271,CA
-1121470272,1121470311,US
-1121470312,1121470319,IL
-1121470320,1121470423,US
-1121470424,1121470463,NL
-1121470464,1121470551,US
-1121470552,1121470559,LB
-1121470560,1121470583,US
-1121470584,1121470591,AU
-1121470592,1121470703,US
-1121470704,1121470711,VU
-1121470712,1121470727,US
-1121470728,1121470735,CA
-1121470736,1121470759,US
-1121470760,1121470767,FR
-1121470768,1121470815,US
-1121470816,1121470831,AU
-1121470832,1121470847,US
-1121470848,1121470863,AU
-1121470864,1121470871,US
-1121470872,1121470879,AU
-1121470880,1121471063,US
-1121471064,1121471071,AU
-1121471072,1121471087,US
-1121471088,1121471095,AU
-1121471096,1121471127,US
-1121471128,1121471135,AU
-1121471136,1121471151,US
-1121471152,1121471159,CH
-1121471160,1121471279,US
-1121471280,1121471295,GB
-1121471296,1121471375,US
-1121471376,1121471391,DK
-1121471392,1121471471,US
-1121471472,1121471487,CA
-1121471488,1121471503,MY
-1121471504,1121471511,US
-1121471512,1121471519,BR
-1121471520,1121471527,US
-1121471528,1121471535,EC
-1121471536,1121471559,US
-1121471560,1121471575,CA
-1121471576,1121471591,US
-1121471592,1121471599,CA
-1121471600,1121471623,US
-1121471624,1121471631,CA
-1121471632,1121471655,US
-1121471656,1121471663,CA
-1121471664,1121471703,US
-1121471704,1121471711,JP
-1121471712,1121471719,US
-1121471720,1121471727,IT
-1121471728,1121471935,US
-1121471936,1121471943,CA
-1121471944,1121471951,IN
-1121471952,1121471975,US
-1121471976,1121471983,CA
-1121471984,1121472047,US
-1121472048,1121472055,MY
-1121472056,1121472263,US
-1121472264,1121472271,LK
-1121472272,1121472287,US
-1121472288,1121472303,IN
-1121472304,1121472375,US
-1121472376,1121472447,AU
-1121472448,1121472463,IN
-1121472464,1121472511,US
-1121472512,1121472519,NZ
-1121472520,1121472527,CA
-1121472528,1121472559,US
-1121472560,1121472567,IN
-1121472568,1121472655,US
-1121472656,1121472663,UA
-1121472664,1121472727,US
-1121472728,1121472735,CA
-1121472736,1121472743,LB
-1121472744,1121472775,US
-1121472776,1121472807,RU
-1121472808,1121472831,US
-1121472832,1121472839,LB
-1121472840,1121472847,US
-1121472848,1121472863,IN
-1121472864,1121472871,US
-1121472872,1121472879,SE
-1121472880,1121472887,IT
-1121472888,1121472927,US
-1121472928,1121472935,GB
-1121472936,1121473175,US
-1121473176,1121473183,FR
-1121473184,1121473239,US
-1121473240,1121473247,ES
-1121473248,1121473279,US
-1121473280,1121473295,AU
-1121473296,1121473303,US
-1121473304,1121473311,AU
-1121473312,1121473439,US
-1121473440,1121473471,AU
-1121473472,1121473479,US
-1121473480,1121473487,CA
-1121473488,1121473599,US
-1121473600,1121473607,GB
-1121473608,1121473871,US
-1121473872,1121473887,NL
-1121473888,1121474007,US
-1121474008,1121474015,DE
-1121474016,1121474031,US
-1121474032,1121474039,AG
-1121474040,1121474063,US
-1121474064,1121474071,GB
-1121474072,1121474079,SI
-1121474080,1121474095,US
-1121474096,1121474111,CA
-1121474112,1121474151,US
-1121474152,1121474159,CA
-1121474160,1121474351,US
-1121474352,1121474359,NZ
-1121474360,1121474383,US
-1121474384,1121474415,AU
-1121474416,1121474535,US
-1121474536,1121474543,GB
-1121474544,1121474591,US
-1121474592,1121474607,CA
-1121474608,1121474927,US
-1121474928,1121474935,AU
-1121474936,1121475967,US
-1121475968,1121476031,AU
-1121476032,1121476191,US
-1121476192,1121476223,BD
-1121476224,1121476431,US
-1121476432,1121476439,JP
-1121476440,1121476927,US
-1121476928,1121476935,IN
-1121476936,1121477391,US
-1121477392,1121477399,IN
-1121477400,1121477415,US
-1121477416,1121477423,NZ
-1121477424,1121477439,US
-1121477440,1121477447,ID
-1121477448,1121477551,US
-1121477552,1121477567,CA
-1121477568,1121477599,US
-1121477600,1121477607,AU
-1121477608,1121477935,US
-1121477936,1121477943,CA
-1121477944,1121478023,US
-1121478024,1121478031,GB
-1121478032,1121478079,US
-1121478080,1121478087,CA
-1121478088,1121478095,US
-1121478096,1121478111,CA
-1121478112,1121478167,US
-1121478168,1121478175,AU
-1121478176,1121478207,US
-1121478208,1121478239,GB
-1121478240,1121478343,US
-1121478344,1121478367,AU
-1121478368,1121478511,US
-1121478512,1121478519,RU
-1121478520,1121478527,KE
-1121478528,1121478591,US
-1121478592,1121478655,AU
-1121478656,1121478687,US
-1121478688,1121478703,NZ
-1121478704,1121478967,US
-1121478968,1121478975,AU
-1121478976,1121478991,US
-1121478992,1121478999,IN
-1121479000,1121479023,US
-1121479024,1121479031,CY
-1121479032,1121479143,US
-1121479144,1121479167,EG
-1121479168,1121479215,US
-1121479216,1121479231,CA
-1121479232,1121479295,US
-1121479296,1121479303,HK
-1121479304,1121479343,CA
-1121479344,1121479359,US
-1121479360,1121479367,NZ
-1121479368,1121479407,US
-1121479408,1121479415,CA
-1121479416,1121479687,US
-1121479688,1121479695,CA
-1121479696,1121479759,US
-1121479760,1121479783,AU
-1121479784,1121479831,US
-1121479832,1121479839,NZ
-1121479840,1121479847,IN
-1121479848,1121479919,US
-1121479920,1121479927,AU
-1121479928,1121480783,US
-1121480784,1121480791,TH
-1121480792,1121480847,US
-1121480848,1121480855,CY
-1121480856,1121480903,US
-1121480904,1121480911,HK
-1121480912,1121480959,US
-1121480960,1121480967,AU
-1121480968,1121480991,US
-1121480992,1121481023,AU
-1121481024,1121481039,US
-1121481040,1121481047,AU
-1121481048,1121481055,US
-1121481056,1121481087,AU
-1121481088,1121481407,US
-1121481408,1121481415,GB
-1121481416,1121481439,US
-1121481440,1121481447,AT
-1121481448,1121482799,US
-1121482800,1121482807,AU
-1121482808,1121483467,US
-1121483468,1121483468,CA
-1121483469,1121483567,US
-1121483568,1121483575,PT
-1121483576,1121483759,US
-1121483760,1121483775,FR
-1121483776,1121654863,US
+1121255424,1121654863,US
1121654864,1121654879,IN
1121654880,1121654975,US
1121654976,1121654991,FR
@@ -15544,9 +14500,7 @@
1121714999,1121714999,KW
1121715000,1121715935,US
1121715936,1121715943,US
-1121715944,1121717431,US
-1121717432,1121717439,JP
-1121717440,1121878015,US
+1121715944,1121878015,US
1121878016,1121910783,CA
1121910784,1122074623,US
1122074624,1122087935,CA
@@ -15618,8 +14572,8 @@
1122497392,1122497535,US
1122497536,1122498047,PR
1122498048,1122498559,US
-1122498560,1122499327,PR
-1122499328,1122499583,US
+1122498560,1122499071,PR
+1122499072,1122499583,US
1122499584,1122500095,PR
1122500096,1122528603,US
1122528604,1122528613,ES
@@ -15630,7 +14584,9 @@
1122635776,1122639871,CA
1122639872,1122667071,US
1122667072,1122667135,CH
-1122667136,1123123199,US
+1122667136,1122759247,US
+1122759248,1122759263,CA
+1122759264,1123123199,US
1123123200,1123127295,CA
1123127296,1123180543,US
1123180544,1123184639,CA
@@ -15651,9 +14607,9 @@
1123598336,1123651583,US
1123651584,1123651839,JM
1123651840,1123652095,BB
-1123652096,1123652223,JM
-1123652224,1123652351,AG
-1123652352,1123653119,JM
+1123652096,1123652351,AI
+1123652352,1123652863,JM
+1123652864,1123653119,HT
1123653120,1123653375,BB
1123653376,1123653631,JM
1123653632,1123654655,KY
@@ -15860,37 +14816,16 @@
1125290242,1125290242,AE
1125290243,1125350145,US
1125350146,1125350146,US
-1125350147,1125454007,US
-1125454008,1125454015,GB
-1125454016,1125454111,US
+1125350147,1125454111,US
1125454112,1125454119,ES
1125454120,1125454271,US
1125454272,1125454279,DE
1125454280,1125454303,US
1125454304,1125454323,NO
1125454324,1125454327,SG
-1125454328,1125454343,US
-1125454344,1125454351,NO
-1125454352,1125454371,US
-1125454372,1125454375,ES
-1125454376,1125454383,US
-1125454384,1125454395,NO
-1125454396,1125454411,US
-1125454412,1125454423,NO
-1125454424,1125454435,ES
-1125454436,1125454439,NO
-1125454440,1125454447,ES
-1125454448,1125454451,NO
-1125454452,1125454459,US
-1125454460,1125454463,NO
-1125454464,1125454467,ES
-1125454468,1125454471,NO
-1125454472,1125454479,ES
-1125454480,1125454483,NO
-1125454484,1125454487,ES
-1125454488,1125454495,NO
-1125454496,1125454587,US
-1125454588,1125454591,CA
+1125454328,1125454411,US
+1125454412,1125454527,NO
+1125454528,1125454591,US
1125454592,1125454847,A2
1125454848,1125455359,US
1125455360,1125455363,CA
@@ -15944,11 +14879,7 @@
1125456240,1125456247,GB
1125456248,1125456259,CW
1125456260,1125456263,ES
-1125456264,1125456407,US
-1125456408,1125456411,CW
-1125456412,1125456415,US
-1125456416,1125456419,CW
-1125456420,1125474303,US
+1125456264,1125474303,US
1125474304,1125478399,CA
1125478400,1125481215,US
1125481216,1125481727,CA
@@ -16026,9 +14957,7 @@
1125550336,1125552127,CA
1125552128,1125572607,US
1125572608,1125576703,CA
-1125576704,1125593371,US
-1125593372,1125593375,GB
-1125593376,1125595695,US
+1125576704,1125595695,US
1125595696,1125595711,NG
1125595712,1125596687,US
1125596688,1125596695,VE
@@ -16125,9 +15054,7 @@
1128818688,1128818719,CA
1128818720,1130536959,US
1130536960,1130539007,GU
-1130539008,1131762175,US
-1131762176,1131762431,IN
-1131762432,1132582463,US
+1130539008,1132582463,US
1132582464,1132582479,CA
1132582480,1132698119,US
1132698120,1132698127,CA
@@ -16139,8 +15066,14 @@
1132954320,1132954335,IS
1132954336,1133461247,US
1133461248,1133461503,CA
-1133461504,1133785087,US
-1133785088,1133785599,GB
+1133461504,1133785375,US
+1133785376,1133785383,NE
+1133785384,1133785391,US
+1133785392,1133785407,GB
+1133785408,1133785471,US
+1133785472,1133785503,GB
+1133785504,1133785567,US
+1133785568,1133785599,BE
1133785600,1134029311,US
1134029312,1134029567,A2
1134029568,1134440447,US
@@ -16179,712 +15112,9 @@
1134546944,1134551039,CA
1134551040,1134759726,US
1134759727,1134759727,US
-1134759728,1136656503,US
-1136656504,1136656511,CA
-1136656512,1136656583,US
-1136656584,1136656591,GB
-1136656592,1136656615,US
-1136656616,1136656631,AU
-1136656632,1136656863,US
-1136656864,1136656895,CA
-1136656896,1136657039,US
-1136657040,1136657047,CA
-1136657048,1136657615,US
-1136657616,1136657623,GB
-1136657624,1136657775,US
-1136657776,1136657783,CA
-1136657784,1136657815,US
-1136657816,1136657823,CA
-1136657824,1136657871,US
-1136657872,1136657887,GT
-1136657888,1136657911,US
-1136657912,1136657919,CA
-1136657920,1136658087,US
-1136658088,1136658095,CN
-1136658096,1136658111,MX
-1136658112,1136658119,US
-1136658120,1136658127,JP
-1136658128,1136658135,US
-1136658136,1136658143,AU
-1136658144,1136658151,US
-1136658152,1136658159,AU
-1136658160,1136658439,US
-1136658440,1136658447,MX
-1136658448,1136658711,US
-1136658712,1136658719,IN
-1136658720,1136658727,NZ
-1136658728,1136658991,US
-1136658992,1136658999,AU
-1136659000,1136659023,US
-1136659024,1136659031,AU
-1136659032,1136659039,US
-1136659040,1136659047,AU
-1136659048,1136659599,US
-1136659600,1136659607,MX
-1136659608,1136659639,US
-1136659640,1136659647,FR
-1136659648,1136659767,US
-1136659768,1136659775,CA
-1136659776,1136659927,US
-1136659928,1136659935,CA
-1136659936,1136659967,US
-1136659968,1136659975,CA
-1136659976,1136660047,US
-1136660048,1136660055,GB
-1136660056,1136660223,US
-1136660224,1136660231,CA
-1136660232,1136660239,US
-1136660240,1136660247,GB
-1136660248,1136660471,US
-1136660472,1136660479,GB
-1136660480,1136660487,US
-1136660488,1136660495,NO
-1136660496,1136660511,US
-1136660512,1136660519,HR
-1136660520,1136660759,US
-1136660760,1136660767,CA
-1136660768,1136660775,US
-1136660776,1136660791,CA
-1136660792,1136660823,US
-1136660824,1136660839,CA
-1136660840,1136660871,US
-1136660872,1136660879,AU
-1136660880,1136660943,US
-1136660944,1136660951,IN
-1136660952,1136661295,US
-1136661296,1136661303,TW
-1136661304,1136661327,US
-1136661328,1136661335,IN
-1136661336,1136661343,US
-1136661344,1136661351,CN
-1136661352,1136661367,US
-1136661368,1136661375,IN
-1136661376,1136661399,US
-1136661400,1136661407,MX
-1136661408,1136661631,US
-1136661632,1136661639,IN
-1136661640,1136661687,US
-1136661688,1136661695,GB
-1136661696,1136661727,US
-1136661728,1136661743,CA
-1136661744,1136661919,US
-1136661920,1136661951,CA
-1136661952,1136662087,US
-1136662088,1136662095,CA
-1136662096,1136662151,US
-1136662152,1136662159,MX
-1136662160,1136662575,US
-1136662576,1136662583,CA
-1136662584,1136662663,US
-1136662664,1136662671,CA
-1136662672,1136662815,US
-1136662816,1136662823,IN
-1136662824,1136662911,US
-1136662912,1136662919,IN
-1136662920,1136663247,US
-1136663248,1136663255,CL
-1136663256,1136663575,US
-1136663576,1136663583,CN
-1136663584,1136663679,US
-1136663680,1136663687,IN
-1136663688,1136663695,JP
-1136663696,1136664543,US
-1136664544,1136664551,AU
-1136664552,1136664639,US
-1136664640,1136664647,CA
-1136664648,1136664791,US
-1136664792,1136664799,GB
-1136664800,1136664815,US
-1136664816,1136664823,IL
-1136664824,1136664847,US
-1136664848,1136664863,CA
-1136664864,1136665103,US
-1136665104,1136665111,AU
-1136665112,1136665135,US
-1136665136,1136665143,GB
-1136665144,1136665655,US
-1136665656,1136665663,IN
-1136665664,1136665735,US
-1136665736,1136665743,GB
-1136665744,1136665759,US
-1136665760,1136665767,CA
-1136665768,1136665831,US
-1136665832,1136665839,CA
-1136665840,1136665919,US
-1136665920,1136665927,DE
-1136665928,1136666143,US
-1136666144,1136666151,CA
-1136666152,1136666223,US
-1136666224,1136666231,PT
-1136666232,1136666351,US
-1136666352,1136666359,IL
-1136666360,1136666447,US
-1136666448,1136666463,GB
-1136666464,1136666743,US
-1136666744,1136666751,CA
-1136666752,1136666791,US
-1136666792,1136666799,IL
-1136666800,1136666863,US
-1136666864,1136666871,GB
-1136666872,1136666991,US
-1136666992,1136667007,CA
-1136667008,1136667087,US
-1136667088,1136667103,IL
-1136667104,1136667447,US
-1136667448,1136667455,GB
-1136667456,1136667551,US
-1136667552,1136667559,AU
-1136667560,1136667599,US
-1136667600,1136667615,IN
-1136667616,1136667655,US
-1136667656,1136667663,CA
-1136667664,1136667759,US
-1136667760,1136667767,KW
-1136667768,1136668023,US
-1136668024,1136668031,GB
-1136668032,1136668127,US
-1136668128,1136668159,AU
-1136668160,1136668287,US
-1136668288,1136668303,IN
-1136668304,1136668319,MX
-1136668320,1136668335,US
-1136668336,1136668351,MX
-1136668352,1136668383,US
-1136668384,1136668415,IN
-1136668416,1136668447,US
-1136668448,1136668455,IN
-1136668456,1136668559,US
-1136668560,1136668567,CA
-1136668568,1136668671,US
-1136668672,1136668679,IN
-1136668680,1136668887,US
-1136668888,1136668895,CL
-1136668896,1136669143,US
-1136669144,1136669151,IN
-1136669152,1136669263,US
-1136669264,1136669279,GB
-1136669280,1136669343,US
-1136669344,1136669359,CO
-1136669360,1136669487,US
-1136669488,1136669495,CA
-1136669496,1136669511,US
-1136669512,1136669519,CA
-1136669520,1136669567,US
-1136669568,1136669575,CA
-1136669576,1136669583,MX
-1136669584,1136669775,US
-1136669776,1136669783,NL
-1136669784,1136669911,US
-1136669912,1136669919,ES
-1136669920,1136670063,US
-1136670064,1136670071,SG
-1136670072,1136670151,US
-1136670152,1136670159,SG
-1136670160,1136672999,US
-1136673000,1136673007,CA
-1136673008,1136673039,US
-1136673040,1136673047,IN
-1136673048,1136673231,US
-1136673232,1136673239,GB
-1136673240,1136673279,US
-1136673280,1136673287,CA
-1136673288,1136673327,US
-1136673328,1136673335,CA
-1136673336,1136673423,US
-1136673424,1136673431,CA
-1136673432,1136673559,US
-1136673560,1136673567,VE
-1136673568,1136673703,US
-1136673704,1136673711,MX
-1136673712,1136673855,US
-1136673856,1136673863,CA
-1136673864,1136673903,US
-1136673904,1136673919,CA
-1136673920,1136673927,GB
-1136673928,1136674079,US
-1136674080,1136674095,AU
-1136674096,1136674447,US
-1136674448,1136674463,AU
-1136674464,1136674583,US
-1136674584,1136674591,CA
-1136674592,1136674607,MX
-1136674608,1136674807,US
-1136674808,1136674815,GB
-1136674816,1136674863,US
-1136674864,1136674871,IN
-1136674872,1136674895,US
-1136674896,1136674903,IL
-1136674904,1136674911,GB
-1136674912,1136674967,US
-1136674968,1136674975,CA
-1136674976,1136675007,US
-1136675008,1136675015,AU
-1136675016,1136675023,CL
-1136675024,1136675055,US
-1136675056,1136675063,ES
-1136675064,1136675311,US
-1136675312,1136675319,GB
-1136675320,1136675751,US
-1136675752,1136675759,IN
-1136675760,1136675815,US
-1136675816,1136675823,AE
-1136675824,1136675839,US
-1136675840,1136676095,GB
-1136676096,1136676127,US
-1136676128,1136676143,IE
-1136676144,1136676255,US
-1136676256,1136676271,CA
-1136676272,1136676551,US
-1136676552,1136676559,GB
-1136676560,1136676583,US
-1136676584,1136676591,AU
-1136676592,1136676671,US
-1136676672,1136676679,CA
-1136676680,1136677375,US
-1136677376,1136677391,AU
-1136677392,1136677463,US
-1136677464,1136677471,CA
-1136677472,1136677615,US
-1136677616,1136677631,CA
-1136677632,1136678103,US
-1136678104,1136678111,IN
-1136678112,1136678303,US
-1136678304,1136678319,MX
-1136678320,1136678431,US
-1136678432,1136678447,GB
-1136678448,1136679071,US
-1136679072,1136679087,CA
-1136679088,1136679135,US
-1136679136,1136679167,BR
-1136679168,1136679215,US
-1136679216,1136679223,GB
-1136679224,1136679231,US
-1136679232,1136679263,IL
-1136679264,1136679279,US
-1136679280,1136679295,CA
-1136679296,1136680055,US
-1136680056,1136680063,CA
-1136680064,1136680143,US
-1136680144,1136680151,NO
-1136680152,1136680159,US
-1136680160,1136680175,BD
-1136680176,1136680311,US
-1136680312,1136680319,IN
-1136680320,1136680743,US
-1136680744,1136680751,BD
-1136680752,1136680759,IN
-1136680760,1136681167,US
-1136681168,1136681175,CA
-1136681176,1136681191,US
-1136681192,1136681199,MX
-1136681200,1136681215,US
-1136681216,1136681223,HN
-1136681224,1136681231,US
-1136681232,1136681239,IL
-1136681240,1136681311,US
-1136681312,1136681319,BR
-1136681320,1136681439,US
-1136681440,1136681447,GB
-1136681448,1136681455,US
-1136681456,1136681471,IL
-1136681472,1136681487,US
-1136681488,1136681495,GB
-1136681496,1136681559,US
-1136681560,1136681567,CA
-1136681568,1136682271,US
-1136682272,1136682303,GB
-1136682304,1136682495,US
-1136682496,1136682503,CA
-1136682504,1136682527,US
-1136682528,1136682559,CA
-1136682560,1136682583,US
-1136682584,1136682591,CA
-1136682592,1136682695,US
-1136682696,1136682703,CA
-1136682704,1136682863,US
-1136682864,1136682871,CA
-1136682872,1136683095,US
-1136683096,1136683103,IL
-1136683104,1136683367,US
-1136683368,1136683375,GB
-1136683376,1136683383,ZA
-1136683384,1136683527,US
-1136683528,1136683535,AU
-1136683536,1136683543,US
-1136683544,1136683551,AE
-1136683552,1136684047,US
-1136684048,1136684063,CA
-1136684064,1136684087,US
-1136684088,1136684095,MX
-1136684096,1136684103,US
-1136684104,1136684111,CA
-1136684112,1136684231,US
-1136684232,1136684239,CA
-1136684240,1136684247,IN
-1136684248,1136684463,US
-1136684464,1136684471,CA
-1136684472,1136684559,US
-1136684560,1136684575,CA
-1136684576,1136684607,US
-1136684608,1136684615,CA
-1136684616,1136684623,US
-1136684624,1136684631,IN
-1136684632,1136684663,US
-1136684664,1136684671,AU
-1136684672,1136684679,GB
-1136684680,1136684703,US
-1136684704,1136684719,MX
-1136684720,1136684735,US
-1136684736,1136684751,IN
-1136684752,1136684807,US
-1136684808,1136684815,IT
-1136684816,1136684895,US
-1136684896,1136684911,CA
-1136684912,1136684919,HR
-1136684920,1136684975,US
-1136684976,1136684983,CA
-1136684984,1136684991,US
-1136684992,1136684999,JP
-1136685000,1136685055,US
-1136685056,1136685183,CA
-1136685184,1136685191,US
-1136685192,1136685199,BM
-1136685200,1136685231,US
-1136685232,1136685239,CN
-1136685240,1136685247,US
-1136685248,1136685263,CA
-1136685264,1136685791,US
-1136685792,1136685799,IL
-1136685800,1136685871,US
-1136685872,1136685879,CA
-1136685880,1136685903,US
-1136685904,1136685911,HR
-1136685912,1136685935,US
-1136685936,1136685943,IT
-1136685944,1136686047,US
-1136686048,1136686055,IE
-1136686056,1136689271,US
-1136689272,1136689279,MX
-1136689280,1136689431,US
-1136689432,1136689439,BM
-1136689440,1136689503,US
-1136689504,1136689511,VE
-1136689512,1136689551,US
-1136689552,1136689559,IN
-1136689560,1136689735,US
-1136689736,1136689743,GB
-1136689744,1136689815,US
-1136689816,1136689823,GB
-1136689824,1136689951,US
-1136689952,1136689959,CA
-1136689960,1136689975,US
-1136689976,1136689983,IL
-1136689984,1136690023,US
-1136690024,1136690031,IN
-1136690032,1136690055,US
-1136690056,1136690063,CA
-1136690064,1136690079,US
-1136690080,1136690087,AU
-1136690088,1136690407,US
-1136690408,1136690415,BD
-1136690416,1136690847,US
-1136690848,1136690863,GB
-1136690864,1136691415,US
-1136691416,1136691423,CA
-1136691424,1136691935,US
-1136691936,1136691943,CA
-1136691944,1136692039,US
-1136692040,1136692047,AU
-1136692048,1136692071,US
-1136692072,1136692079,CA
-1136692080,1136692239,US
-1136692240,1136692247,AR
-1136692248,1136692319,US
-1136692320,1136692327,NL
-1136692328,1136692535,US
-1136692536,1136692543,GB
-1136692544,1136692799,US
-1136692800,1136692807,NZ
-1136692808,1136692919,US
-1136692920,1136692927,IN
-1136692928,1136692991,US
-1136692992,1136693023,IR
-1136693024,1136693055,IE
-1136693056,1136693063,AU
-1136693064,1136693503,US
-1136693504,1136693511,GB
-1136693512,1136693519,CA
-1136693520,1136693887,US
-1136693888,1136693903,CA
-1136693904,1136693951,US
-1136693952,1136693959,CA
-1136693960,1136693967,AU
-1136693968,1136693975,US
-1136693976,1136693983,GB
-1136693984,1136694079,US
-1136694080,1136694087,BG
-1136694088,1136694263,US
-1136694264,1136694271,GB
-1136694272,1136694303,US
-1136694304,1136694311,KR
-1136694312,1136694319,US
-1136694320,1136694327,KR
-1136694328,1136694399,US
-1136694400,1136694415,CA
-1136694416,1136694895,US
-1136694896,1136694903,AU
-1136694904,1136694991,US
-1136694992,1136694999,GB
-1136695000,1136695503,US
-1136695504,1136695511,GB
-1136695512,1136695703,US
-1136695704,1136695711,DK
-1136695712,1136695719,US
-1136695720,1136695727,IL
-1136695728,1136695743,DK
-1136695744,1136696087,US
-1136696088,1136696095,AU
-1136696096,1136696111,US
-1136696112,1136696127,AU
-1136696128,1136696263,US
-1136696264,1136696271,CA
-1136696272,1136696647,US
-1136696648,1136696655,GB
-1136696656,1136696671,US
-1136696672,1136696679,IL
-1136696680,1136696711,US
-1136696712,1136696719,GT
-1136696720,1136696767,US
-1136696768,1136696775,IL
-1136696776,1136696855,US
-1136696856,1136696863,GB
-1136696864,1136697047,US
-1136697048,1136697055,BM
-1136697056,1136697455,US
-1136697456,1136697463,CA
-1136697464,1136697647,US
-1136697648,1136697655,CA
-1136697656,1136697767,US
-1136697768,1136697775,GB
-1136697776,1136697975,US
-1136697976,1136697983,CA
-1136697984,1136698023,US
-1136698024,1136698031,GB
-1136698032,1136698039,US
-1136698040,1136698111,IE
-1136698112,1136698815,US
-1136698816,1136698823,GB
-1136698824,1136699023,US
-1136699024,1136699039,GB
-1136699040,1136699087,US
-1136699088,1136699095,GB
-1136699096,1136699487,US
-1136699488,1136699503,CA
-1136699504,1136699511,US
-1136699512,1136699519,SE
-1136699520,1136699583,US
-1136699584,1136699599,CA
-1136699600,1136699623,US
-1136699624,1136699631,CA
-1136699632,1136699647,IN
-1136699648,1136699695,US
-1136699696,1136699703,AU
-1136699704,1136699839,US
-1136699840,1136699847,MT
-1136699848,1136699935,US
-1136699936,1136699943,AU
-1136699944,1136699999,US
-1136700000,1136700007,GB
-1136700008,1136700031,US
-1136700032,1136700039,CA
-1136700040,1136700103,US
-1136700104,1136700111,NZ
-1136700112,1136700263,US
-1136700264,1136700271,IL
-1136700272,1136700343,US
-1136700344,1136700351,MX
-1136700352,1136700479,US
-1136700480,1136700487,NZ
-1136700488,1136700583,US
-1136700584,1136700591,AU
-1136700592,1136700663,US
-1136700664,1136700671,DK
-1136700672,1136700783,US
-1136700784,1136700791,CA
-1136700792,1136700847,US
-1136700848,1136700855,CL
-1136700856,1136700911,US
-1136700912,1136700919,CA
-1136700920,1136701119,US
-1136701120,1136701183,AU
-1136701184,1136701279,US
-1136701280,1136701287,CA
-1136701288,1136701311,US
-1136701312,1136701327,ZA
-1136701328,1136701335,US
-1136701336,1136701343,GB
-1136701344,1136701455,US
-1136701456,1136701463,IN
-1136701464,1136701527,US
-1136701528,1136701543,CA
-1136701544,1136702711,US
-1136702712,1136702719,GB
-1136702720,1136702727,CA
-1136702728,1136702799,US
-1136702800,1136702807,GB
-1136702808,1136702871,US
-1136702872,1136702879,AT
-1136702880,1136702911,US
-1136702912,1136702919,GB
-1136702920,1136703095,US
-1136703096,1136703103,CA
-1136703104,1136703279,US
-1136703280,1136703287,CA
-1136703288,1136704639,US
-1136704640,1136704703,GB
-1136704704,1136705575,US
-1136705576,1136705583,CA
-1136705584,1136705671,US
-1136705672,1136705679,CA
-1136705680,1136705807,US
-1136705808,1136705815,IN
-1136705816,1136705823,RU
-1136705824,1136706087,US
-1136706088,1136706095,IN
-1136706096,1136706119,US
-1136706120,1136706127,CA
-1136706128,1136706231,US
-1136706232,1136706239,MX
-1136706240,1136706359,US
-1136706360,1136706367,BM
-1136706368,1136706455,US
-1136706456,1136706463,GB
-1136706464,1136706471,CA
-1136706472,1136706495,US
-1136706496,1136706559,IE
-1136706560,1136706591,US
-1136706592,1136706599,AU
-1136706600,1136706703,US
-1136706704,1136706711,CA
-1136706712,1136706935,US
-1136706936,1136706943,AU
-1136706944,1136707087,US
-1136707088,1136707095,GB
-1136707096,1136707175,US
-1136707176,1136707183,ZA
-1136707184,1136707263,US
-1136707264,1136707271,IN
-1136707272,1136707751,US
-1136707752,1136707759,GB
-1136707760,1136707775,US
-1136707776,1136707783,BR
-1136707784,1136707847,US
-1136707848,1136707855,SG
-1136707856,1136707887,US
-1136707888,1136707895,CA
-1136707896,1136708039,US
-1136708040,1136708047,CA
-1136708048,1136708679,US
-1136708680,1136708687,GB
-1136708688,1136708871,US
-1136708872,1136708879,GB
-1136708880,1136709023,US
-1136709024,1136709031,BD
-1136709032,1136709647,US
-1136709648,1136709655,CA
-1136709656,1136709679,US
-1136709680,1136709695,AU
-1136709696,1136709767,US
-1136709768,1136709775,GB
-1136709776,1136709815,US
-1136709816,1136709823,CA
-1136709824,1136709927,US
-1136709928,1136709935,CA
-1136709936,1136710191,US
-1136710192,1136710199,GB
-1136710200,1136710415,US
-1136710416,1136710431,AU
-1136710432,1136711479,US
-1136711480,1136711487,ZA
-1136711488,1136711927,US
-1136711928,1136711935,GB
-1136711936,1136711991,US
-1136711992,1136711999,AU
-1136712000,1136712607,US
-1136712608,1136712615,GB
-1136712616,1136712695,US
-1136712696,1136712703,CA
-1136712704,1136712991,US
-1136712992,1136712999,CA
-1136713000,1136713087,US
-1136713088,1136713103,CA
-1136713104,1136713151,US
-1136713152,1136713167,CA
-1136713168,1136713471,US
-1136713472,1136713479,SG
-1136713480,1136713583,US
-1136713584,1136713591,CA
-1136713592,1136713919,US
-1136713920,1136713935,NO
-1136713936,1136714031,US
-1136714032,1136714039,BR
-1136714040,1136714167,US
-1136714168,1136714175,IE
-1136714176,1136714255,US
-1136714256,1136714263,GB
-1136714264,1136714271,US
-1136714272,1136714279,GB
-1136714280,1136714639,US
-1136714640,1136714647,DE
-1136714648,1136714671,US
-1136714672,1136714679,CN
-1136714680,1136715135,US
-1136715136,1136715151,MX
-1136715152,1136715623,US
-1136715624,1136715631,AU
-1136715632,1136716287,US
-1136716288,1136716295,ZA
-1136716296,1136716431,US
-1136716432,1136716439,IN
-1136716440,1136716447,US
-1136716448,1136716479,CA
-1136716480,1136716631,US
-1136716632,1136716639,AU
-1136716640,1136716703,US
-1136716704,1136716711,IN
-1136716712,1136716759,US
-1136716760,1136716767,CA
-1136716768,1136716775,US
-1136716776,1136716783,NZ
-1136716784,1136716799,US
-1136716800,1136716831,VI
-1136716832,1136717167,US
-1136717168,1136717183,IT
-1136717184,1136717399,US
-1136717400,1136717407,GB
-1136717408,1136717551,US
-1136717552,1136717559,CA
-1136717560,1136717583,US
-1136717584,1136717599,GB
-1136717600,1136717935,US
-1136717936,1136717943,CA
-1136717944,1136718391,US
-1136718392,1136718399,MX
-1136718400,1136718439,US
-1136718440,1136718447,IN
-1136718448,1136718487,US
-1136718488,1136718495,IN
-1136718496,1136718759,US
-1136718760,1136718767,AU
-1136718768,1136718791,US
-1136718792,1136718799,CA
-1136718800,1136718879,US
-1136718880,1136718895,AU
-1136718896,1136721919,US
+1134759728,1136721919,US
1136721920,1136787455,CA
-1136787456,1137102847,US
-1137102848,1137103103,CN
-1137103104,1137189135,US
+1136787456,1137189135,US
1137189136,1137189151,IE
1137189152,1137189247,US
1137189248,1137189255,GB
@@ -16898,7 +15128,9 @@
1137255168,1137255423,IT
1137255424,1137256191,US
1137256192,1137256203,IT
-1137256204,1137278975,US
+1137256204,1137261119,US
+1137261120,1137261183,IT
+1137261184,1137278975,US
1137278976,1137283071,CA
1137283072,1137287167,US
1137287168,1137295359,CA
@@ -16912,8 +15144,8 @@
1137369224,1137369359,CA
1137369360,1137369375,US
1137369376,1137369519,CA
-1137369520,1137369551,US
-1137369552,1137369855,CA
+1137369520,1137369535,US
+1137369536,1137369855,CA
1137369856,1137376255,US
1137376256,1137376335,CA
1137376336,1137376351,US
@@ -16946,9 +15178,7 @@
1137508352,1137524735,US
1137524736,1137525642,CA
1137525643,1137525643,CA
-1137525644,1137537023,CA
-1137537024,1137537247,US
-1137537248,1137541119,CA
+1137525644,1137541119,CA
1137541120,1137623039,US
1137623040,1137639423,PR
1137639424,1137704967,US
@@ -16958,23 +15188,19 @@
1137705384,1137705391,NL
1137705392,1137705447,CA
1137705448,1137705455,US
-1137705456,1137706239,CA
-1137706240,1137706311,US
-1137706312,1137706319,CA
-1137706320,1137706495,US
-1137706496,1137707071,CA
-1137707072,1137707095,US
-1137707096,1137707127,CA
-1137707128,1137707143,US
-1137707144,1137707151,CA
-1137707152,1137707159,NL
-1137707160,1137707191,US
-1137707192,1137707199,CA
-1137707200,1137707207,NL
-1137707208,1137707223,US
-1137707224,1137707255,CA
-1137707256,1137707263,US
-1137707264,1137707519,CA
+1137705456,1137705727,CA
+1137705728,1137705735,US
+1137705736,1137705767,CA
+1137705768,1137705791,US
+1137705792,1137705879,CA
+1137705880,1137705887,US
+1137705888,1137705903,CA
+1137705904,1137705911,US
+1137705912,1137705943,CA
+1137705944,1137705951,US
+1137705952,1137706399,CA
+1137706400,1137706431,US
+1137706432,1137707519,CA
1137707520,1137707575,US
1137707576,1137707583,NL
1137707584,1137707623,CA
@@ -17015,7 +15241,13 @@
1137709440,1137709447,US
1137709448,1137709463,CA
1137709464,1137709487,US
-1137709488,1137710847,CA
+1137709488,1137709831,CA
+1137709832,1137709839,US
+1137709840,1137709903,CA
+1137709904,1137709911,US
+1137709912,1137709959,CA
+1137709960,1137709967,NL
+1137709968,1137710847,CA
1137710848,1137710959,US
1137710960,1137710967,CA
1137710968,1137711135,US
@@ -17178,9 +15410,7 @@
1138049024,1138053631,CA
1138053632,1138053887,US
1138053888,1138061311,CA
-1138061312,1138106367,US
-1138106368,1138108415,GT
-1138108416,1138163711,US
+1138061312,1138163711,US
1138163712,1138163967,CA
1138163968,1138163975,MA
1138163976,1138163991,CA
@@ -17530,11 +15760,7 @@
1138662624,1138662639,GB
1138662640,1138662640,US
1138662641,1138662648,EG
-1138662649,1138662841,US
-1138662842,1138662849,GB
-1138662850,1138662865,US
-1138662866,1138662873,VE
-1138662874,1138663021,US
+1138662649,1138663021,US
1138663022,1138663166,GB
1138663167,1138712575,US
1138712576,1138714071,CA
@@ -17548,9 +15774,7 @@
1138778112,1138780159,US
1138780160,1138780415,CA
1138780416,1138786303,US
-1138786304,1138793215,PR
-1138793216,1138793343,US
-1138793344,1138819071,PR
+1138786304,1138819071,PR
1138819072,1138851839,CA
1138851840,1138851847,US
1138851848,1138851855,IN
@@ -17570,9 +15794,13 @@
1139146752,1139154943,GT
1139154944,1139167231,JM
1139167232,1139167743,US
-1139167744,1139170559,PR
-1139170560,1139171071,US
-1139171072,1139171327,PR
+1139167744,1139168895,PR
+1139168896,1139169279,US
+1139169280,1139170047,PR
+1139170048,1139170303,US
+1139170304,1139170559,PR
+1139170560,1139170815,US
+1139170816,1139171327,PR
1139171328,1139175423,GT
1139175424,1139179519,US
1139179520,1139195903,CA
@@ -17592,8 +15820,8 @@
1145243136,1145243391,EU
1145243392,1145243647,US
1145243648,1145244159,EU
-1145244160,1145244671,NO
-1145244672,1145249791,US
+1145244160,1145244415,NO
+1145244416,1145249791,US
1145249792,1145257983,CA
1145257984,1145259007,US
1145259008,1145259071,IN
@@ -17617,29 +15845,16 @@
1145333192,1145333199,CN
1145333200,1145333215,US
1145333216,1145333223,CN
-1145333224,1145333327,US
-1145333328,1145333343,CN
-1145333344,1145333351,US
-1145333352,1145333359,CN
-1145333360,1145333367,US
-1145333368,1145333375,PA
-1145333376,1145333503,BD
-1145333504,1145333879,US
-1145333880,1145333895,CN
-1145333896,1145334151,US
+1145333224,1145333879,US
+1145333880,1145333887,CN
+1145333888,1145334151,US
1145334152,1145334167,CN
1145334168,1145334175,US
1145334176,1145334223,CN
1145334224,1145334231,US
1145334232,1145334239,CN
1145334240,1145334527,US
-1145334528,1145334621,US
-1145334622,1145334623,US
-1145334624,1145334755,US
-1145334756,1145334759,US
-1145334760,1145334943,US
-1145334944,1145334975,US
-1145334976,1145335039,US
+1145334528,1145335039,US
1145335040,1145335103,US
1145335104,1145335135,NL
1145335136,1145335167,US
@@ -17653,7 +15868,9 @@
1145413632,1145421823,US
1145421824,1145430015,CA
1145430016,1145475071,US
-1145475072,1145479167,CA
+1145475072,1145476887,CA
+1145476888,1145476895,US
+1145476896,1145479167,CA
1145479168,1145484031,US
1145484032,1145484063,VG
1145484064,1145503743,US
@@ -17721,13 +15938,11 @@
1152082176,1152082303,IN
1152082304,1152083455,US
1152083456,1152083967,CN
-1152083968,1152084735,US
-1152084736,1152084991,IN
+1152083968,1152084479,US
+1152084480,1152084991,IN
1152084992,1152116479,US
1152116480,1152116735,CA
-1152116736,1152116991,US
-1152116992,1152117247,CA
-1152117248,1152581631,US
+1152116736,1152581631,US
1152581632,1152614399,CA
1152614400,1152778239,US
1152778240,1152843775,CA
@@ -17764,9 +15979,19 @@
1157910778,1157910782,CR
1157910783,1157910848,CA
1157910849,1157910864,US
-1157910865,1157911355,CA
+1157910865,1157910911,CA
+1157910912,1157911039,US
+1157911040,1157911295,CA
+1157911296,1157911326,US
+1157911327,1157911355,CA
1157911356,1157911386,US
-1157911387,1157912448,CA
+1157911387,1157911391,CA
+1157911392,1157911423,US
+1157911424,1157911551,CA
+1157911552,1157912063,US
+1157912064,1157912319,CA
+1157912320,1157912447,US
+1157912448,1157912448,CA
1157912449,1157912456,LB
1157912457,1157912464,ES
1157912465,1157912472,DE
@@ -17777,7 +16002,9 @@
1157912578,1157912606,US
1157912607,1157912833,CA
1157912834,1157912848,MY
-1157912849,1157913154,CA
+1157912849,1157912959,CA
+1157912960,1157913023,US
+1157913024,1157913154,CA
1157913155,1157913168,MY
1157913169,1157914194,CA
1157914195,1157914202,IN
@@ -17846,7 +16073,30 @@
1158488834,1158488846,IL
1158488847,1158493441,US
1158493442,1158493566,CA
-1158493567,1158498457,US
+1158493567,1158496497,US
+1158496498,1158496506,TC
+1158496507,1158496530,US
+1158496531,1158496539,WS
+1158496540,1158496779,US
+1158496780,1158496788,FJ
+1158496789,1158496797,BE
+1158496798,1158496806,US
+1158496807,1158496815,PE
+1158496816,1158497616,US
+1158497617,1158497625,CH
+1158497626,1158497652,US
+1158497653,1158497661,CA
+1158497662,1158497670,GE
+1158497671,1158497770,US
+1158497771,1158497779,CA
+1158497780,1158497825,US
+1158497826,1158497834,GE
+1158497835,1158497865,WS
+1158497866,1158498032,US
+1158498033,1158498041,HK
+1158498042,1158498282,US
+1158498283,1158498291,MX
+1158498292,1158498457,US
1158498458,1158498466,GR
1158498467,1158498778,US
1158498779,1158498787,IT
@@ -17898,15 +16148,17 @@
1158526931,1158526963,AS
1158526964,1158538864,US
1158538865,1158538872,WS
-1158538873,1158711559,US
-1158711560,1158711567,AE
-1158711568,1158714111,US
+1158538873,1158714111,US
1158714112,1158714367,US
-1158714368,1158716415,US
+1158714368,1158715007,US
+1158715008,1158715039,IE
+1158715040,1158716415,US
1158716416,1158716423,IN
1158716424,1158716543,US
1158716544,1158716551,IE
-1158716552,1158726731,US
+1158716552,1158716671,US
+1158716672,1158716703,IE
+1158716704,1158726731,US
1158726732,1158726739,CA
1158726740,1158732876,US
1158732877,1158732884,GB
@@ -17922,298 +16174,7 @@
1158794240,1158794495,US
1158794496,1158799359,BM
1158799360,1158807551,CA
-1158807552,1158940823,US
-1158940824,1158940831,ES
-1158940832,1158940911,US
-1158940912,1158940919,CA
-1158940920,1158941247,US
-1158941248,1158941255,CY
-1158941256,1158941351,US
-1158941352,1158941359,CR
-1158941360,1158941367,CA
-1158941368,1158941399,US
-1158941400,1158941407,CA
-1158941408,1158941775,US
-1158941776,1158941791,JM
-1158941792,1158941799,IE
-1158941800,1158942271,US
-1158942272,1158942279,IE
-1158942280,1158942311,US
-1158942312,1158942319,CA
-1158942320,1158943423,US
-1158943424,1158943431,PK
-1158943432,1158943535,US
-1158943536,1158943543,CA
-1158943544,1158943599,US
-1158943600,1158943615,GB
-1158943616,1158943707,US
-1158943708,1158943709,CA
-1158943710,1158943863,US
-1158943864,1158943871,CR
-1158943872,1158943975,US
-1158943976,1158943983,CA
-1158943984,1158944505,US
-1158944506,1158944507,BG
-1158944508,1158944863,US
-1158944864,1158944871,CA
-1158944872,1158944895,US
-1158944896,1158944903,ZA
-1158944904,1158944951,US
-1158944952,1158944959,IN
-1158944960,1158945095,US
-1158945096,1158945103,TH
-1158945104,1158945111,US
-1158945112,1158945119,CA
-1158945120,1158945127,US
-1158945128,1158945135,MX
-1158945136,1158945271,US
-1158945272,1158945287,CA
-1158945288,1158945319,US
-1158945320,1158945335,CA
-1158945336,1158945535,US
-1158945536,1158945543,CA
-1158945544,1158945791,US
-1158945792,1158945799,IE
-1158945800,1158945807,US
-1158945808,1158945815,IE
-1158945816,1158945823,US
-1158945824,1158945831,JP
-1158945832,1158945935,US
-1158945936,1158945943,CA
-1158945944,1158946047,US
-1158946048,1158946055,CA
-1158946056,1158946151,US
-1158946152,1158946159,IE
-1158946160,1158946207,US
-1158946208,1158946215,CA
-1158946216,1158946299,US
-1158946300,1158946301,CA
-1158946302,1158946487,US
-1158946488,1158946495,GB
-1158946496,1158946551,US
-1158946552,1158946559,CH
-1158946560,1158946575,US
-1158946576,1158946583,IN
-1158946584,1158946711,US
-1158946712,1158946719,HK
-1158946720,1158946771,US
-1158946772,1158946772,MX
-1158946773,1158947391,US
-1158947392,1158947399,CA
-1158947400,1158947591,US
-1158947592,1158947599,JP
-1158947600,1158947647,US
-1158947648,1158947655,CA
-1158947656,1158947663,US
-1158947664,1158947695,IE
-1158947696,1158947711,US
-1158947712,1158947719,CA
-1158947720,1158947735,US
-1158947736,1158947743,IN
-1158947744,1158947759,AT
-1158947760,1158947791,US
-1158947792,1158947799,IN
-1158947800,1158947831,US
-1158947832,1158947839,TR
-1158947840,1158947847,US
-1158947848,1158947849,CA
-1158947850,1158948383,US
-1158948384,1158948391,IT
-1158948392,1158948895,US
-1158948896,1158948903,CA
-1158948904,1158948967,US
-1158948968,1158948975,CA
-1158948976,1158949007,US
-1158949008,1158949015,IL
-1158949016,1158949287,US
-1158949288,1158949295,CA
-1158949296,1158950105,US
-1158950106,1158950107,CA
-1158950108,1158950335,US
-1158950336,1158950351,CA
-1158950352,1158950359,IN
-1158950360,1158950367,CA
-1158950368,1158950767,US
-1158950768,1158950775,TH
-1158950776,1158951231,US
-1158951232,1158951263,TH
-1158951264,1158951423,US
-1158951424,1158951439,CA
-1158951440,1158951447,NL
-1158951448,1158951551,US
-1158951552,1158951559,NL
-1158951560,1158951575,US
-1158951576,1158951583,CA
-1158951584,1158951627,US
-1158951628,1158951631,CA
-1158951632,1158951743,US
-1158951744,1158951751,IN
-1158951752,1158951839,US
-1158951840,1158951855,CA
-1158951856,1158952711,US
-1158952712,1158952719,IN
-1158952720,1158952743,US
-1158952744,1158952751,FI
-1158952752,1158953503,US
-1158953504,1158953511,NL
-1158953512,1158954815,US
-1158954816,1158954823,GB
-1158954824,1158954831,CA
-1158954832,1158955015,US
-1158955016,1158955023,CA
-1158955024,1158955039,US
-1158955040,1158955047,GB
-1158955048,1158956063,US
-1158956064,1158956079,NL
-1158956080,1158956095,US
-1158956096,1158956103,CA
-1158956104,1158956295,US
-1158956296,1158956303,CA
-1158956304,1158957455,US
-1158957456,1158957471,NL
-1158957472,1158957647,US
-1158957648,1158957655,AU
-1158957656,1158957663,PE
-1158957664,1158957801,US
-1158957802,1158957803,NL
-1158957804,1158958295,US
-1158958296,1158958303,AG
-1158958304,1158958311,ES
-1158958312,1158958367,US
-1158958368,1158958375,CA
-1158958376,1158958591,US
-1158958592,1158958599,ZA
-1158958600,1158958607,IL
-1158958608,1158958671,US
-1158958672,1158958679,SA
-1158958680,1158958719,US
-1158958720,1158958751,CA
-1158958752,1158959031,US
-1158959032,1158959039,CA
-1158959040,1158959135,US
-1158959136,1158959151,BD
-1158959152,1158959679,US
-1158959680,1158959687,CR
-1158959688,1158960455,US
-1158960456,1158960463,IN
-1158960464,1158960535,US
-1158960536,1158960543,NZ
-1158960544,1158961063,US
-1158961064,1158961071,TW
-1158961072,1158961151,US
-1158961152,1158961159,GB
-1158961160,1158961175,US
-1158961176,1158961183,CA
-1158961184,1158961255,US
-1158961256,1158961263,ES
-1158961264,1158961775,US
-1158961776,1158961783,CA
-1158961784,1158962023,US
-1158962024,1158962027,IL
-1158962028,1158962175,US
-1158962176,1158962183,GB
-1158962184,1158962287,US
-1158962288,1158962295,ZA
-1158962296,1158962591,US
-1158962592,1158962607,GB
-1158962608,1158962615,US
-1158962616,1158962623,GB
-1158962624,1158962671,US
-1158962672,1158962675,IN
-1158962676,1158963271,US
-1158963272,1158963279,IE
-1158963280,1158963453,US
-1158963454,1158963455,CA
-1158963456,1158963647,US
-1158963648,1158963663,IN
-1158963664,1158964103,US
-1158964104,1158964111,IN
-1158964112,1158964189,US
-1158964190,1158964191,CA
-1158964192,1158964287,US
-1158964288,1158964319,CA
-1158964320,1158964631,US
-1158964632,1158964639,CA
-1158964640,1158964647,MX
-1158964648,1158964701,US
-1158964702,1158964703,CA
-1158964704,1158964711,US
-1158964712,1158964713,JE
-1158964714,1158964799,US
-1158964800,1158964807,IE
-1158964808,1158964831,US
-1158964832,1158964839,GB
-1158964840,1158964943,US
-1158964944,1158964951,MX
-1158964952,1158965087,US
-1158965088,1158965111,CA
-1158965112,1158965119,US
-1158965120,1158965135,AR
-1158965136,1158965159,US
-1158965160,1158965167,IL
-1158965168,1158965199,US
-1158965200,1158965215,CA
-1158965216,1158965247,US
-1158965248,1158965255,IN
-1158965256,1158965559,US
-1158965560,1158965567,IN
-1158965568,1158965743,US
-1158965744,1158965751,IN
-1158965752,1158966127,US
-1158966128,1158966143,FR
-1158966144,1158966335,US
-1158966336,1158966343,PL
-1158966344,1158966359,CA
-1158966360,1158966485,US
-1158966486,1158966489,AT
-1158966490,1158966567,US
-1158966568,1158966591,CA
-1158966592,1158966799,US
-1158966800,1158966807,CA
-1158966808,1158966911,US
-1158966912,1158966919,MX
-1158966920,1158966959,US
-1158966960,1158966967,MX
-1158966968,1158966991,US
-1158966992,1158966999,CA
-1158967000,1158967263,US
-1158967264,1158967279,TH
-1158967280,1158967327,US
-1158967328,1158967335,JP
-1158967336,1158967343,GB
-1158967344,1158967527,US
-1158967528,1158967535,CA
-1158967536,1158967543,IE
-1158967544,1158967559,US
-1158967560,1158967567,CA
-1158967568,1158967615,US
-1158967616,1158967623,GT
-1158967624,1158967631,US
-1158967632,1158967679,CA
-1158967680,1158968015,US
-1158968016,1158968017,GB
-1158968018,1158968071,US
-1158968072,1158968079,MT
-1158968080,1158968103,US
-1158968104,1158968111,HU
-1158968112,1158968207,US
-1158968208,1158968239,CA
-1158968240,1158968823,US
-1158968824,1158968827,GB
-1158968828,1158969447,US
-1158969448,1158969455,CA
-1158969456,1158969663,US
-1158969664,1158969679,MX
-1158969680,1158969703,US
-1158969704,1158969711,CA
-1158969712,1158970127,US
-1158970128,1158970135,CA
-1158970136,1158970287,US
-1158970288,1158970295,CA
-1158970296,1158970303,MY
-1158970304,1158970943,US
-1158970944,1158970975,CA
-1158970976,1158995967,US
+1158807552,1158995967,US
1158995968,1158997879,CA
1158997880,1158997887,US
1158997888,1158997919,CA
@@ -18282,15 +16243,17 @@
1159281920,1159282175,GB
1159282176,1159290655,US
1159290656,1159290687,CA
-1159290688,1159300607,US
+1159290688,1159292807,US
+1159292808,1159292815,AU
+1159292816,1159293487,US
+1159293488,1159293503,BR
+1159293504,1159300607,US
1159300608,1159300863,SE
1159300864,1159314943,US
1159314944,1159315199,CR
1159315200,1159318015,US
1159318016,1159318047,GB
-1159318048,1159343615,US
-1159343616,1159343871,FR
-1159343872,1159347199,US
+1159318048,1159347199,US
1159347200,1159347455,AU
1159347456,1159348223,US
1159348224,1159356415,CA
@@ -18369,10 +16332,9 @@
1159522168,1159522175,CA
1159522176,1159522207,US
1159522208,1159522239,CA
-1159522240,1159522271,BV
+1159522240,1159522271,US
1159522272,1159522287,CA
-1159522288,1159522303,BV
-1159522304,1159522815,US
+1159522288,1159522815,US
1159522816,1159523327,CA
1159523328,1159523583,US
1159523584,1159524351,CA
@@ -18384,9 +16346,7 @@
1159656488,1159656495,BR
1159656496,1159657023,US
1159657024,1159657039,AU
-1159657040,1159659071,US
-1159659072,1159659079,IN
-1159659080,1159668479,US
+1159657040,1159668479,US
1159668480,1159668735,CA
1159668736,1159673471,US
1159673472,1159673503,CA
@@ -18398,9 +16358,7 @@
1159694592,1159694847,CA
1159694848,1159700479,US
1159700480,1159725055,CA
-1159725056,1159767039,US
-1159767040,1159767295,CA
-1159767296,1159988735,US
+1159725056,1159988735,US
1159988736,1159988991,MX
1159988992,1159995647,US
1159995648,1159995655,AU
@@ -18419,7 +16377,15 @@
1159998712,1160011775,US
1160011776,1160012783,CA
1160012784,1160012791,US
-1160012792,1160014775,CA
+1160012792,1160013399,CA
+1160013400,1160013423,US
+1160013424,1160013463,CA
+1160013464,1160013479,US
+1160013480,1160013647,CA
+1160013648,1160013663,US
+1160013664,1160013679,CA
+1160013680,1160013687,US
+1160013688,1160014775,CA
1160014776,1160014783,US
1160014784,1160014959,CA
1160014960,1160014967,US
@@ -18474,9 +16440,7 @@
1160373440,1160373503,AE
1160373504,1160392703,US
1160392704,1160396799,CA
-1160396800,1160397007,US
-1160397008,1160397023,GB
-1160397024,1160405631,US
+1160396800,1160405631,US
1160405632,1160406015,DO
1160406016,1160406271,US
1160406272,1160406303,VE
@@ -18490,7 +16454,17 @@
1160408320,1160408575,CA
1160408576,1160409599,US
1160409600,1160410111,CO
-1160410112,1160411407,US
+1160410112,1160410287,US
+1160410288,1160410303,DO
+1160410304,1160410447,US
+1160410448,1160410463,UY
+1160410464,1160410479,TT
+1160410480,1160410495,US
+1160410496,1160410511,PR
+1160410512,1160410519,EC
+1160410520,1160410551,US
+1160410552,1160410559,EC
+1160410560,1160411407,US
1160411408,1160411423,GB
1160411424,1160411567,US
1160411568,1160411583,BR
@@ -18579,9 +16553,7 @@
1160665816,1160667087,US
1160667088,1160667095,GB
1160667096,1160667135,US
-1160667136,1160667967,CA
-1160667968,1160668031,US
-1160668032,1160675327,CA
+1160667136,1160675327,CA
1160675328,1160677247,US
1160677248,1160677279,GB
1160677280,1160677375,US
@@ -18595,9 +16567,25 @@
1160684064,1160684071,US
1160684072,1160684887,CA
1160684888,1160684895,US
-1160684896,1160685695,CA
-1160685696,1160685823,US
-1160685824,1160689419,CA
+1160684896,1160686567,CA
+1160686568,1160686575,US
+1160686576,1160687271,CA
+1160687272,1160687279,US
+1160687280,1160687583,CA
+1160687584,1160687591,US
+1160687592,1160688555,CA
+1160688556,1160688578,US
+1160688579,1160688687,CA
+1160688688,1160688695,US
+1160688696,1160688703,CA
+1160688704,1160688711,US
+1160688712,1160688767,CA
+1160688768,1160688783,US
+1160688784,1160688815,CA
+1160688816,1160688823,US
+1160688824,1160688831,CA
+1160688832,1160688839,US
+1160688840,1160689419,CA
1160689420,1160689447,US
1160689448,1160689531,CA
1160689532,1160689571,US
@@ -18650,7 +16638,9 @@
1160691648,1160691671,CA
1160691672,1160691679,US
1160691680,1160691711,CA
-1160691712,1160810495,US
+1160691712,1160808255,US
+1160808256,1160808287,CA
+1160808288,1160810495,US
1160810496,1160810751,CA
1160810752,1160811551,US
1160811552,1160811559,BE
@@ -18658,9 +16648,7 @@
1160847360,1160855551,CA
1160855552,1160863999,US
1160864000,1160864255,CA
-1160864256,1160867839,US
-1160867840,1160871935,CA
-1160871936,1160905215,US
+1160864256,1160905215,US
1160905216,1160905471,US
1160905472,1160921087,US
1160921088,1160925183,AG
@@ -18702,8 +16690,9 @@
1161363456,1161367551,CA
1161367552,1161416703,US
1161416704,1161420799,CA
-1161420800,1161421055,AG
-1161421056,1161421311,GB
+1161420800,1161421151,AG
+1161421152,1161421167,MS
+1161421168,1161421311,AG
1161421312,1161421567,AI
1161421568,1161422079,AG
1161422080,1161422335,VG
@@ -18728,7 +16717,9 @@
1161426176,1161426943,AG
1161426944,1161427199,AI
1161427200,1161427455,VG
-1161427456,1161428223,AG
+1161427456,1161427487,AG
+1161427488,1161427519,MS
+1161427520,1161428223,AG
1161428224,1161428991,KN
1161428992,1161429247,US
1161429248,1161429503,CA
@@ -18769,8 +16760,40 @@
1161430720,1161430743,CA
1161430744,1161430751,IT
1161430752,1161430759,TH
-1161430760,1161431039,CA
-1161431040,1161433087,US
+1161430760,1161431063,CA
+1161431064,1161431071,US
+1161431072,1161431087,CA
+1161431088,1161431095,AU
+1161431096,1161431111,CA
+1161431112,1161431127,GR
+1161431128,1161431167,CA
+1161431168,1161431175,CY
+1161431176,1161431191,CA
+1161431192,1161431199,CY
+1161431200,1161431263,CA
+1161431264,1161431279,US
+1161431280,1161431359,CA
+1161431360,1161431367,US
+1161431368,1161431375,CA
+1161431376,1161431383,HR
+1161431384,1161431391,CA
+1161431392,1161431407,US
+1161431408,1161431415,RU
+1161431416,1161431423,CA
+1161431424,1161431486,US
+1161431487,1161431495,CA
+1161431496,1161431503,IN
+1161431504,1161431511,US
+1161431512,1161431519,CA
+1161431520,1161431527,US
+1161431528,1161431535,CA
+1161431536,1161431543,US
+1161431544,1161431551,QA
+1161431552,1161432127,CA
+1161432128,1161432319,NO
+1161432320,1161432575,IN
+1161432576,1161432831,CA
+1161432832,1161433087,US
1161433088,1161437183,CA
1161437184,1161453567,US
1161453568,1161457663,CA
@@ -19153,12 +17176,8 @@
1161651096,1161651103,HR
1161651104,1161651135,GB
1161651136,1161651143,BG
-1161651144,1161651775,US
-1161651776,1161651807,AR
-1161651808,1161651839,US
-1161651840,1161651855,MY
-1161651856,1161651935,US
-1161651936,1161651999,AF
+1161651144,1161651967,US
+1161651968,1161651999,AF
1161652000,1161652095,US
1161652096,1161652103,CY
1161652104,1161652135,US
@@ -19218,7 +17237,82 @@
1161796100,1161796103,CZ
1161796104,1161818111,US
1161818112,1161822207,CA
-1161822208,1161830928,US
+1161822208,1161830417,US
+1161830418,1161830418,JP
+1161830419,1161830425,US
+1161830426,1161830426,CA
+1161830427,1161830427,US
+1161830428,1161830428,DE
+1161830429,1161830438,US
+1161830439,1161830439,CA
+1161830440,1161830449,US
+1161830450,1161830450,HR
+1161830451,1161830465,US
+1161830466,1161830466,BR
+1161830467,1161830479,US
+1161830480,1161830480,BY
+1161830481,1161830497,US
+1161830498,1161830498,VN
+1161830499,1161830554,US
+1161830555,1161830555,BR
+1161830556,1161830582,US
+1161830583,1161830583,AE
+1161830584,1161830613,US
+1161830614,1161830614,EC
+1161830615,1161830620,US
+1161830621,1161830621,CA
+1161830622,1161830639,US
+1161830640,1161830640,UA
+1161830641,1161830662,US
+1161830663,1161830664,BR
+1161830665,1161830683,US
+1161830684,1161830684,BR
+1161830685,1161830694,US
+1161830695,1161830695,UA
+1161830696,1161830696,GT
+1161830697,1161830721,US
+1161830722,1161830722,CY
+1161830723,1161830753,US
+1161830754,1161830754,CA
+1161830755,1161830779,US
+1161830780,1161830780,BE
+1161830781,1161830784,US
+1161830785,1161830785,CY
+1161830786,1161830799,US
+1161830800,1161830800,BE
+1161830801,1161830804,US
+1161830805,1161830805,BE
+1161830806,1161830806,BD
+1161830807,1161830807,CA
+1161830808,1161830811,US
+1161830812,1161830812,DE
+1161830813,1161830813,US
+1161830814,1161830814,CA
+1161830815,1161830815,US
+1161830816,1161830816,CN
+1161830817,1161830817,US
+1161830818,1161830818,CA
+1161830819,1161830819,CN
+1161830820,1161830820,US
+1161830821,1161830821,CY
+1161830822,1161830822,CN
+1161830823,1161830832,US
+1161830833,1161830833,CN
+1161830834,1161830839,US
+1161830840,1161830840,PK
+1161830841,1161830842,US
+1161830843,1161830843,PK
+1161830844,1161830844,CL
+1161830845,1161830845,US
+1161830846,1161830846,MD
+1161830847,1161830852,US
+1161830853,1161830853,CO
+1161830854,1161830866,US
+1161830867,1161830867,VN
+1161830868,1161830893,US
+1161830894,1161830894,BE
+1161830895,1161830895,BR
+1161830896,1161830928,US
1161830929,1161830929,MX
1161830930,1161830933,US
1161830934,1161830934,MX
@@ -19396,8 +17490,8 @@
1161832474,1161832475,CA
1161832476,1161832476,US
1161832477,1161832478,CA
-1161832479,1161832482,US
-1161832483,1161832484,UA
+1161832479,1161832483,US
+1161832484,1161832484,UA
1161832485,1161832485,TR
1161832486,1161832486,US
1161832487,1161832488,TR
@@ -19412,22 +17506,24 @@
1161832509,1161832509,MX
1161832510,1161832510,MD
1161832511,1161832516,US
-1161832517,1161832530,CA
+1161832517,1161832518,BR
+1161832519,1161832524,CA
+1161832525,1161832530,BR
1161832531,1161832531,US
-1161832532,1161832536,CA
+1161832532,1161832536,BR
1161832537,1161832537,US
-1161832538,1161832538,CA
+1161832538,1161832538,BR
1161832539,1161832539,PK
-1161832540,1161832541,CA
+1161832540,1161832541,BR
1161832542,1161832542,US
-1161832543,1161832543,CA
-1161832544,1161832544,TR
+1161832543,1161832543,BR
+1161832544,1161832544,US
1161832545,1161832545,NL
-1161832546,1161832550,CA
+1161832546,1161832550,BR
1161832551,1161832553,US
1161832554,1161832554,NL
-1161832555,1161832555,TR
-1161832556,1161832556,CA
+1161832555,1161832555,US
+1161832556,1161832556,BR
1161832557,1161832558,IN
1161832559,1161832559,CA
1161832560,1161832562,US
@@ -19455,7 +17551,9 @@
1161832623,1161832623,CA
1161832624,1161832625,US
1161832626,1161832632,CA
-1161832633,1161832799,US
+1161832633,1161832770,US
+1161832771,1161832782,BR
+1161832783,1161832799,US
1161832800,1161832831,BR
1161832832,1161832927,US
1161832928,1161832959,LT
@@ -19481,26 +17579,31 @@
1161833078,1161833081,BR
1161833082,1161833082,TR
1161833083,1161833083,NL
-1161833084,1161833093,US
-1161833094,1161833094,TR
+1161833084,1161833089,US
+1161833090,1161833090,BR
+1161833091,1161833093,US
+1161833094,1161833094,CA
1161833095,1161833097,US
1161833098,1161833100,CA
-1161833101,1161833101,US
+1161833101,1161833101,BR
1161833102,1161833128,CA
1161833129,1161833129,US
-1161833130,1161833134,CA
+1161833130,1161833132,CA
+1161833133,1161833134,BR
1161833135,1161833136,US
-1161833137,1161833138,CA
+1161833137,1161833138,BR
1161833139,1161833139,US
-1161833140,1161833144,CA
+1161833140,1161833144,BR
1161833145,1161833145,US
-1161833146,1161833151,CA
+1161833146,1161833151,BR
1161833152,1161833152,US
-1161833153,1161833168,CA
+1161833153,1161833168,BR
1161833169,1161833169,US
-1161833170,1161833170,CA
-1161833171,1161833174,US
-1161833175,1161833175,TR
+1161833170,1161833170,BR
+1161833171,1161833171,US
+1161833172,1161833173,BR
+1161833174,1161833174,US
+1161833175,1161833175,CA
1161833176,1161833191,US
1161833192,1161833197,CA
1161833198,1161833198,US
@@ -19580,8 +17683,9 @@
1161837948,1161837948,PK
1161837949,1161837958,BR
1161837959,1161837959,US
-1161837960,1161837967,BR
-1161837968,1161837975,US
+1161837960,1161837971,BR
+1161837972,1161837974,US
+1161837975,1161837975,CA
1161837976,1161837976,BR
1161837977,1161837994,US
1161837995,1161838000,BR
@@ -19604,7 +17708,9 @@
1161838437,1161838437,IR
1161838438,1161838441,US
1161838442,1161838442,BR
-1161838443,1161838456,US
+1161838443,1161838452,US
+1161838453,1161838453,PH
+1161838454,1161838456,US
1161838457,1161838458,RU
1161838459,1161838459,US
1161838460,1161838460,BR
@@ -19612,11 +17718,13 @@
1161838469,1161838469,DO
1161838470,1161838475,US
1161838476,1161838476,CA
-1161838477,1161838480,US
+1161838477,1161838477,BR
+1161838478,1161838480,US
1161838481,1161838481,CA
1161838482,1161838505,US
1161838506,1161838506,CA
-1161838507,1161838514,US
+1161838507,1161838511,US
+1161838512,1161838514,AU
1161838515,1161838515,PK
1161838516,1161838516,IN
1161838517,1161838517,US
@@ -19698,7 +17806,9 @@
1162204971,1162204972,US
1162204973,1162215423,US
1162215424,1162280959,CA
-1162280960,1162297343,US
+1162280960,1162296407,US
+1162296408,1162296415,CA
+1162296416,1162297343,US
1162297344,1162305535,CA
1162305536,1162313727,US
1162313728,1162320127,A2
@@ -19728,7 +17838,9 @@
1162473472,1162475007,GD
1162475008,1162477567,BB
1162477568,1162715135,US
-1162715136,1162723327,CA
+1162715136,1162716159,CA
+1162716160,1162716175,US
+1162716176,1162723327,CA
1162723328,1162807295,US
1162807296,1162809343,PR
1162809344,1162811391,US
@@ -19738,11 +17850,9 @@
1162812416,1162813439,BS
1162813440,1162817535,CW
1162817536,1162821631,GT
-1162821632,1162823679,PR
+1162821632,1162823679,US
1162823680,1162825727,GT
-1162825728,1162829823,US
-1162829824,1162831103,PR
-1162831104,1162831871,US
+1162825728,1162831871,US
1162831872,1162833919,PR
1162833920,1162835967,GT
1162835968,1162836223,BS
@@ -19891,10 +18001,14 @@
1163468800,1163469055,PR
1163469056,1163469311,US
1163469312,1163472895,PR
-1163472896,1163526143,US
-1163526144,1163526911,CA
-1163526912,1163527167,GB
-1163527168,1163527903,CA
+1163472896,1163479295,US
+1163479296,1163479551,CA
+1163479552,1163526143,US
+1163526144,1163527059,CA
+1163527060,1163527071,US
+1163527072,1163527103,CA
+1163527104,1163527135,US
+1163527136,1163527903,CA
1163527904,1163527935,US
1163527936,1163529215,CA
1163529216,1163530239,US
@@ -19978,11 +18092,8 @@
1163545216,1163545295,CA
1163545296,1163545303,US
1163545304,1163545311,CA
-1163545312,1163545343,BV
-1163545344,1163545423,US
-1163545424,1163545439,CA
-1163545440,1163545599,US
-1163545600,1163545631,CA
+1163545312,1163545567,US
+1163545568,1163545631,CA
1163545632,1163545663,GB
1163545664,1163545695,CA
1163545696,1163545727,US
@@ -19994,9 +18105,7 @@
1163546040,1163546047,NZ
1163546048,1163546119,CA
1163546120,1163546127,US
-1163546128,1163546135,CA
-1163546136,1163546143,US
-1163546144,1163546199,CA
+1163546128,1163546199,CA
1163546200,1163546207,US
1163546208,1163546399,CA
1163546400,1163546423,US
@@ -20006,7 +18115,15 @@
1163546528,1163546535,US
1163546536,1163546551,CA
1163546552,1163546559,US
-1163546560,1163550239,CA
+1163546560,1163547487,CA
+1163547488,1163547519,US
+1163547520,1163547535,CA
+1163547536,1163547539,US
+1163547540,1163547567,CA
+1163547568,1163547583,VG
+1163547584,1163547951,CA
+1163547952,1163547983,US
+1163547984,1163550239,CA
1163550240,1163550255,US
1163550256,1163550335,CA
1163550336,1163550351,US
@@ -20037,8 +18154,7 @@
1163552704,1163553855,CA
1163553856,1163553871,US
1163553872,1163553919,CA
-1163553920,1163553935,BV
-1163553936,1163553951,US
+1163553920,1163553951,US
1163553952,1163554559,CA
1163554560,1163554591,US
1163554592,1163554639,CA
@@ -20078,8 +18194,8 @@
1163571984,1163571999,US
1163572000,1163572175,CA
1163572176,1163572183,US
-1163572184,1163573247,CA
-1163573248,1163573439,US
+1163572184,1163573263,CA
+1163573264,1163573439,US
1163573440,1163573503,IN
1163573504,1163575039,US
1163575040,1163575295,IN
@@ -20164,11 +18280,7 @@
1163870576,1163870583,CN
1163870584,1163878399,US
1163878400,1163878407,CN
-1163878408,1167319111,US
-1167319112,1167319119,ZA
-1167319120,1167319255,US
-1167319256,1167319263,CA
-1167319264,1167319359,US
+1163878408,1167319359,US
1167319360,1167319367,CA
1167319368,1167320071,US
1167320072,1167320079,CA
@@ -20184,9 +18296,7 @@
1167323544,1167323551,CA
1167323552,1167323823,US
1167323824,1167323831,IN
-1167323832,1167324047,US
-1167324048,1167324055,CA
-1167324056,1167324287,US
+1167323832,1167324287,US
1167324288,1167324295,GB
1167324296,1167324311,US
1167324312,1167324319,CA
@@ -20212,7 +18322,9 @@
1167327112,1167327119,IN
1167327120,1167327207,US
1167327208,1167327215,IN
-1167327216,1167851519,US
+1167327216,1167693199,US
+1167693200,1167693215,UA
+1167693216,1167851519,US
1167851520,1168113663,CA
1168113664,1168138239,US
1168138240,1168146431,JM
@@ -20278,21 +18390,12 @@
1168953120,1168953279,CA
1168953280,1168953311,US
1168953312,1168953343,CA
-1168953344,1168954075,US
-1168954076,1168954079,CA
-1168954080,1168955647,US
+1168953344,1168955647,US
1168955648,1168956415,CA
1168956416,1168957183,US
1168957184,1168957311,IN
1168957312,1168957439,US
-1168957440,1168958047,CA
-1168958048,1168958055,DE
-1168958056,1168958063,CA
-1168958064,1168958071,US
-1168958072,1168958111,CA
-1168958112,1168958127,US
-1168958128,1168958191,CA
-1168958192,1168958207,AU
+1168957440,1168958207,CA
1168958208,1168958211,US
1168958212,1168958215,CA
1168958216,1168958223,US
@@ -20366,8 +18469,7 @@
1169203200,1169211391,CA
1169211392,1170190335,US
1170190336,1170190847,GB
-1170190848,1170191103,JP
-1170191104,1170375167,US
+1170190848,1170375167,US
1170375168,1170375679,US
1170375680,1170456959,US
1170456960,1170456975,CR
@@ -20416,9 +18518,7 @@
1175977984,1176502271,CA
1176502272,1176511831,US
1176511832,1176511839,CA
-1176511840,1176512175,US
-1176512176,1176512183,CA
-1176512184,1176512703,US
+1176511840,1176512703,US
1176512704,1176512711,ZA
1176512712,1176513479,US
1176513480,1176513487,CA
@@ -20452,14 +18552,18 @@
1176620784,1176620863,CA
1176620864,1176620879,US
1176620880,1176620911,CA
-1176620912,1176620927,US
+1176620912,1176620915,US
+1176620916,1176620919,CA
+1176620920,1176620927,US
1176620928,1176620967,CA
1176620968,1176620975,US
1176620976,1176620991,CA
1176620992,1176620999,US
1176621000,1176621599,CA
1176621600,1176621631,US
-1176621632,1176621695,CA
+1176621632,1176621663,CA
+1176621664,1176621679,US
+1176621680,1176621695,CA
1176621696,1176621727,US
1176621728,1176621759,CA
1176621760,1176621823,US
@@ -20476,8 +18580,36 @@
1176623568,1176623583,US
1176623584,1176623615,CA
1176623616,1176623871,US
-1176623872,1176627199,CA
-1176627200,1176629247,US
+1176623872,1176625151,CA
+1176625152,1176626207,US
+1176626208,1176626271,CA
+1176626272,1176626287,US
+1176626288,1176626431,CA
+1176626432,1176626463,US
+1176626464,1176626495,BM
+1176626496,1176626559,US
+1176626560,1176626567,CA
+1176626568,1176626575,US
+1176626576,1176626591,CA
+1176626592,1176626975,US
+1176626976,1176627007,CA
+1176627008,1176627135,US
+1176627136,1176627199,CA
+1176627200,1176628223,US
+1176628224,1176628351,CA
+1176628352,1176628447,US
+1176628448,1176628671,CA
+1176628672,1176628703,US
+1176628704,1176628719,CA
+1176628720,1176628783,US
+1176628784,1176628799,CA
+1176628800,1176628863,US
+1176628864,1176628943,CA
+1176628944,1176628951,US
+1176628952,1176628975,CA
+1176628976,1176628991,US
+1176628992,1176629031,CA
+1176629032,1176629247,US
1176629248,1176629279,CA
1176629280,1176629295,US
1176629296,1176629303,CA
@@ -20496,13 +18628,31 @@
1176629760,1176630271,US
1176630272,1176631295,CA
1176631296,1176631423,NL
-1176631424,1176662015,US
-1176662016,1176666111,CA
-1176666112,1176702975,US
+1176631424,1176702975,US
1176702976,1176707071,CA
1176707072,1176731647,US
1176731648,1176735743,PR
-1176735744,1176739839,A2
+1176735744,1176735871,GB
+1176735872,1176735999,NG
+1176736000,1176736127,A2
+1176736128,1176736255,NG
+1176736256,1176736415,A2
+1176736416,1176736447,GN
+1176736448,1176736623,A2
+1176736624,1176736639,LR
+1176736640,1176736767,A2
+1176736768,1176737247,CR
+1176737248,1176737471,A2
+1176737472,1176737535,NI
+1176737536,1176737919,A2
+1176737920,1176737935,NG
+1176737936,1176738047,A2
+1176738048,1176738303,US
+1176738304,1176739071,CO
+1176739072,1176739327,US
+1176739328,1176739407,CO
+1176739408,1176739583,A2
+1176739584,1176739839,CO
1176739840,1176743935,CA
1176743936,1176752127,US
1176752128,1176756223,CA
@@ -20526,23 +18676,21 @@
1176771840,1176771895,US
1176771896,1176771903,AE
1176771904,1176772079,US
-1176772080,1176772095,DO
-1176772096,1176776703,US
+1176772080,1176772087,MX
+1176772088,1176776703,US
1176776704,1176780799,CA
1176780800,1176895487,US
-1176895488,1176896519,CA
-1176896520,1176896527,MX
-1176896528,1176896543,CA
-1176896544,1176896551,MX
-1176896552,1176897047,CA
+1176895488,1176897047,CA
1176897048,1176897055,US
-1176897056,1176899151,CA
-1176899152,1176899159,KZ
-1176899160,1176908223,CA
+1176897056,1176900735,CA
+1176900736,1176900743,US
+1176900744,1176904767,CA
+1176904768,1176904775,US
+1176904776,1176904871,CA
+1176904872,1176904879,US
+1176904880,1176908223,CA
1176908224,1176908231,MX
-1176908232,1176909671,CA
-1176909672,1176909679,US
-1176909680,1176917831,CA
+1176908232,1176917831,CA
1176917832,1176917839,AU
1176917840,1176925007,CA
1176925008,1176925015,NG
@@ -20553,9 +18701,7 @@
1177022976,1177023231,GB
1177023232,1177030655,US
1177030656,1177033727,AG
-1177033728,1177053695,US
-1177053696,1177053951,GB
-1177053952,1177059327,US
+1177033728,1177059327,US
1177059328,1177061375,CA
1177061376,1177062143,US
1177062144,1177075455,CA
@@ -20570,19 +18716,21 @@
1177164896,1177164927,US
1177164928,1177164943,CA
1177164944,1177165055,US
-1177165056,1177165087,CA
-1177165088,1177165311,US
-1177165312,1177165823,CA
-1177165824,1177182527,US
+1177165056,1177165823,CA
+1177165824,1177174143,US
+1177174144,1177174175,AE
+1177174176,1177175199,US
+1177175200,1177175231,CZ
+1177175232,1177182527,US
1177182528,1177182591,CA
1177182592,1177187663,US
1177187664,1177187671,GB
1177187672,1177210983,US
1177210984,1177211007,FR
1177211008,1177354239,US
-1177354240,1177389941,PR
-1177389942,1177389942,US
-1177389943,1177419775,PR
+1177354240,1177355263,PR
+1177355264,1177355391,US
+1177355392,1177419775,PR
1177419776,1177505401,US
1177505402,1177505402,BB
1177505403,1177550847,US
@@ -20619,7 +18767,9 @@
1192468480,1192476671,CA
1192476672,1192488959,US
1192488960,1192493055,CA
-1192493056,1199722495,US
+1192493056,1199718695,US
+1199718696,1199718703,A2
+1199718704,1199722495,US
1199722496,1199722503,A2
1199722504,1207975935,US
1207975936,1207980031,CA
@@ -20638,361 +18788,7 @@
1208107008,1208122031,US
1208122032,1208122047,GB
1208122048,1208122063,CA
-1208122064,1208189951,US
-1208189952,1208190015,GB
-1208190016,1208190543,US
-1208190544,1208190559,GB
-1208190560,1208190583,US
-1208190584,1208190591,GB
-1208190592,1208191047,US
-1208191048,1208191055,AU
-1208191056,1208191087,US
-1208191088,1208191095,NO
-1208191096,1208191311,US
-1208191312,1208191313,GB
-1208191314,1208191317,US
-1208191318,1208191319,GB
-1208191320,1208191359,US
-1208191360,1208191367,GB
-1208191368,1208191391,US
-1208191392,1208191423,NO
-1208191424,1208191447,US
-1208191448,1208191455,IE
-1208191456,1208191567,US
-1208191568,1208191575,SG
-1208191576,1208191647,US
-1208191648,1208191655,AG
-1208191656,1208192167,US
-1208192168,1208192175,BM
-1208192176,1208192311,US
-1208192312,1208192319,CA
-1208192320,1208192359,US
-1208192360,1208192367,GB
-1208192368,1208192487,US
-1208192488,1208192495,CA
-1208192496,1208192879,US
-1208192880,1208192895,MY
-1208192896,1208192903,US
-1208192904,1208192911,CA
-1208192912,1208192959,US
-1208192960,1208192967,IL
-1208192968,1208193135,US
-1208193136,1208193151,MY
-1208193152,1208193391,US
-1208193392,1208193407,AU
-1208193408,1208193455,US
-1208193456,1208193463,PA
-1208193464,1208193599,US
-1208193600,1208193615,CA
-1208193616,1208193871,US
-1208193872,1208193879,AU
-1208193880,1208194045,US
-1208194046,1208194047,IL
-1208194048,1208194191,US
-1208194192,1208194223,MY
-1208194224,1208194289,US
-1208194290,1208194291,GB
-1208194292,1208194511,US
-1208194512,1208194513,CA
-1208194514,1208194519,US
-1208194520,1208194523,AU
-1208194524,1208195359,US
-1208195360,1208195375,MY
-1208195376,1208195391,US
-1208195392,1208195399,IN
-1208195400,1208195447,US
-1208195448,1208195455,GB
-1208195456,1208195487,US
-1208195488,1208195519,HU
-1208195520,1208195535,US
-1208195536,1208195551,GB
-1208195552,1208195703,US
-1208195704,1208195711,CA
-1208195712,1208195759,US
-1208195760,1208195775,BG
-1208195776,1208195855,US
-1208195856,1208195871,GB
-1208195872,1208195887,US
-1208195888,1208195903,ID
-1208195904,1208196143,US
-1208196144,1208196151,AU
-1208196152,1208196327,US
-1208196328,1208196335,CA
-1208196336,1208196607,US
-1208196608,1208196615,CA
-1208196616,1208196703,US
-1208196704,1208196719,CA
-1208196720,1208196951,US
-1208196952,1208196959,ZA
-1208196960,1208197047,US
-1208197048,1208197055,BM
-1208197056,1208197057,BR
-1208197058,1208197135,US
-1208197136,1208197167,MY
-1208197168,1208197239,US
-1208197240,1208197247,CA
-1208197248,1208197527,US
-1208197528,1208197535,FR
-1208197536,1208197559,US
-1208197560,1208197567,AU
-1208197568,1208197579,US
-1208197580,1208197583,GB
-1208197584,1208197631,US
-1208197632,1208197639,AU
-1208197640,1208197967,US
-1208197968,1208197983,AU
-1208197984,1208198031,US
-1208198032,1208198039,AU
-1208198040,1208198047,BS
-1208198048,1208198135,US
-1208198136,1208198143,AU
-1208198144,1208198159,US
-1208198160,1208198167,ID
-1208198168,1208198343,US
-1208198344,1208198347,GB
-1208198348,1208198349,CA
-1208198350,1208198559,US
-1208198560,1208198575,IN
-1208198576,1208198743,US
-1208198744,1208198751,GB
-1208198752,1208199055,US
-1208199056,1208199063,AU
-1208199064,1208199087,US
-1208199088,1208199103,MY
-1208199104,1208199127,US
-1208199128,1208199129,IE
-1208199130,1208199223,US
-1208199224,1208199231,AR
-1208199232,1208199343,US
-1208199344,1208199351,CR
-1208199352,1208199359,MY
-1208199360,1208199637,US
-1208199638,1208199639,NG
-1208199640,1208199767,US
-1208199768,1208199775,MX
-1208199776,1208199783,MY
-1208199784,1208199831,US
-1208199832,1208199839,AR
-1208199840,1208200167,US
-1208200168,1208200175,CA
-1208200176,1208200247,US
-1208200248,1208200255,MC
-1208200256,1208200271,US
-1208200272,1208200287,BD
-1208200288,1208200303,US
-1208200304,1208200319,AU
-1208200320,1208200823,US
-1208200824,1208200887,BS
-1208200888,1208200959,US
-1208200960,1208200963,ID
-1208200964,1208201063,US
-1208201064,1208201071,IN
-1208201072,1208201535,US
-1208201536,1208201543,GB
-1208201544,1208201631,US
-1208201632,1208201639,CA
-1208201640,1208201951,US
-1208201952,1208201959,MY
-1208201960,1208202007,US
-1208202008,1208202015,CA
-1208202016,1208202255,US
-1208202256,1208202287,MY
-1208202288,1208202495,US
-1208202496,1208202511,GB
-1208202512,1208202519,AU
-1208202520,1208202559,US
-1208202560,1208202575,JP
-1208202576,1208202731,US
-1208202732,1208202733,CA
-1208202734,1208203023,US
-1208203024,1208203071,MY
-1208203072,1208203255,US
-1208203256,1208203257,RO
-1208203258,1208203343,US
-1208203344,1208203359,AU
-1208203360,1208204007,US
-1208204008,1208204015,NL
-1208204016,1208204031,US
-1208204032,1208204039,GB
-1208204040,1208204047,US
-1208204048,1208204055,JP
-1208204056,1208204259,US
-1208204260,1208204263,MX
-1208204264,1208204775,US
-1208204776,1208204783,CA
-1208204784,1208205049,US
-1208205050,1208205053,IL
-1208205054,1208205063,US
-1208205064,1208205079,MY
-1208205080,1208205167,US
-1208205168,1208205231,MY
-1208205232,1208205247,US
-1208205248,1208205263,IN
-1208205264,1208205303,US
-1208205304,1208205311,CO
-1208205312,1208205415,US
-1208205416,1208205423,MY
-1208205424,1208205455,US
-1208205456,1208205463,CA
-1208205464,1208205523,US
-1208205524,1208205525,IN
-1208205526,1208205703,US
-1208205704,1208205711,CA
-1208205712,1208205959,US
-1208205960,1208205967,SG
-1208205968,1208206041,US
-1208206042,1208206043,SG
-1208206044,1208206231,US
-1208206232,1208206239,CH
-1208206240,1208206535,US
-1208206536,1208206537,IL
-1208206538,1208206559,US
-1208206560,1208206561,BH
-1208206562,1208206783,US
-1208206784,1208206785,ZA
-1208206786,1208207095,US
-1208207096,1208207097,IN
-1208207098,1208207183,US
-1208207184,1208207191,AU
-1208207192,1208207359,US
-1208207360,1208207391,CA
-1208207392,1208207583,US
-1208207584,1208207591,AU
-1208207592,1208207599,US
-1208207600,1208207607,AU
-1208207608,1208207623,US
-1208207624,1208207631,GB
-1208207632,1208207983,US
-1208207984,1208207999,NL
-1208208000,1208208111,US
-1208208112,1208208127,CA
-1208208128,1208208215,US
-1208208216,1208208223,CA
-1208208224,1208208231,AU
-1208208232,1208208303,US
-1208208304,1208208311,KR
-1208208312,1208208319,US
-1208208320,1208208321,CA
-1208208322,1208208799,US
-1208208800,1208208807,AU
-1208208808,1208208815,US
-1208208816,1208208831,CA
-1208208832,1208208875,US
-1208208876,1208208877,CH
-1208208878,1208208879,CA
-1208208880,1208208927,US
-1208208928,1208208943,AU
-1208208944,1208209095,US
-1208209096,1208209097,IN
-1208209098,1208209175,US
-1208209176,1208209183,CA
-1208209184,1208209215,US
-1208209216,1208209231,MY
-1208209232,1208209359,US
-1208209360,1208209375,MY
-1208209376,1208209643,US
-1208209644,1208209645,JE
-1208209646,1208209719,US
-1208209720,1208209727,TH
-1208209728,1208209863,US
-1208209864,1208209871,GT
-1208209872,1208209959,US
-1208209960,1208209967,IN
-1208209968,1208210063,US
-1208210064,1208210071,HK
-1208210072,1208210079,US
-1208210080,1208210095,GB
-1208210096,1208210303,US
-1208210304,1208210351,GB
-1208210352,1208210431,US
-1208210432,1208210439,JP
-1208210440,1208210511,US
-1208210512,1208210519,CA
-1208210520,1208210751,US
-1208210752,1208210759,TR
-1208210760,1208211239,US
-1208211240,1208211247,JM
-1208211248,1208211423,US
-1208211424,1208211439,IL
-1208211440,1208211935,US
-1208211936,1208211943,BM
-1208211944,1208211951,US
-1208211952,1208211959,ES
-1208211960,1208212839,US
-1208212840,1208212847,CA
-1208212848,1208213087,US
-1208213088,1208213103,NG
-1208213104,1208213383,US
-1208213384,1208213391,CA
-1208213392,1208214679,US
-1208214680,1208214687,JP
-1208214688,1208215311,US
-1208215312,1208215319,CA
-1208215320,1208215351,US
-1208215352,1208215359,PR
-1208215360,1208215447,US
-1208215448,1208215455,AU
-1208215456,1208215935,US
-1208215936,1208215951,GB
-1208215952,1208216367,US
-1208216368,1208216375,CA
-1208216376,1208218031,US
-1208218032,1208218039,HK
-1208218040,1208218415,US
-1208218416,1208218423,IN
-1208218424,1208218823,US
-1208218824,1208218831,FR
-1208218832,1208219159,US
-1208219160,1208219167,AU
-1208219168,1208219319,US
-1208219320,1208219327,AU
-1208219328,1208219751,US
-1208219752,1208219759,AU
-1208219760,1208220655,US
-1208220656,1208220663,AU
-1208220664,1208220671,NZ
-1208220672,1208220743,US
-1208220744,1208220751,GB
-1208220752,1208220815,US
-1208220816,1208220823,FR
-1208220824,1208250367,US
-1208250368,1208250375,CA
-1208250376,1208250623,US
-1208250624,1208250631,NL
-1208250632,1208250711,US
-1208250712,1208250719,GB
-1208250720,1208250735,US
-1208250736,1208250743,IN
-1208250744,1208251199,US
-1208251200,1208251207,CA
-1208251208,1208251215,US
-1208251216,1208251223,AU
-1208251224,1208251415,US
-1208251416,1208251423,GB
-1208251424,1208251431,IL
-1208251432,1208251439,US
-1208251440,1208251447,ES
-1208251448,1208251479,US
-1208251480,1208251487,GB
-1208251488,1208251495,BB
-1208251496,1208251631,US
-1208251632,1208251647,GB
-1208251648,1208251679,US
-1208251680,1208251695,GB
-1208251696,1208251807,US
-1208251808,1208251823,CA
-1208251824,1208251871,US
-1208251872,1208251887,GB
-1208251888,1208251903,IL
-1208251904,1208252423,US
-1208252424,1208252431,CA
-1208252432,1208252703,US
-1208252704,1208252735,AU
-1208252736,1208252927,US
-1208252928,1208253183,MX
-1208253184,1208253599,US
-1208253600,1208253615,IN
-1208253616,1208301455,US
+1208122064,1208301455,US
1208301456,1208301471,CA
1208301472,1208333567,US
1208333568,1208333823,GB
@@ -21246,8 +19042,10 @@
1208936448,1208954879,US
1208954880,1208957695,CA
1208957696,1208957823,US
-1208957824,1208957887,CA
-1208957888,1208957951,US
+1208957824,1208957855,CA
+1208957856,1208957919,US
+1208957920,1208957935,CA
+1208957936,1208957951,US
1208957952,1208958975,CA
1208958976,1208975359,US
1208975360,1208980503,CA
@@ -21255,14 +19053,12 @@
1208980512,1208982799,CA
1208982800,1208982815,SE
1208982816,1208983551,CA
-1208983552,1208991775,US
-1208991776,1208991791,GB
-1208991792,1209002351,US
+1208983552,1209002351,US
1209002352,1209002367,A2
1209002368,1209002495,US
1209002496,1209002687,A2
-1209002688,1209003007,US
-1209003008,1209004031,A2
+1209002688,1209003519,US
+1209003520,1209004031,A2
1209004032,1209189379,US
1209189380,1209189395,MX
1209189396,1209190147,US
@@ -21351,676 +19147,16 @@
1209892608,1209892863,CA
1209892864,1209893503,US
1209893504,1209893519,MX
-1209893520,1209917439,US
-1209917440,1209921055,CA
-1209921056,1209921087,US
-1209921088,1209925631,CA
-1209925632,1210057039,US
-1210057040,1210057047,JM
-1210057048,1210057055,US
-1210057056,1210057071,DE
-1210057072,1210057519,US
-1210057520,1210057535,IN
-1210057536,1210057567,US
-1210057568,1210057583,NG
-1210057584,1210057615,US
-1210057616,1210057623,CA
-1210057624,1210057639,US
-1210057640,1210057647,GB
-1210057648,1210057879,US
-1210057880,1210057887,IL
-1210057888,1210057895,US
-1210057896,1210057903,MX
-1210057904,1210057911,GB
-1210057912,1210058159,US
-1210058160,1210058167,CA
-1210058168,1210058191,US
-1210058192,1210058199,CA
-1210058200,1210058615,US
-1210058616,1210058623,AU
-1210058624,1210059271,US
-1210059272,1210059279,ES
-1210059280,1210059303,US
-1210059304,1210059311,AU
-1210059312,1210059591,US
-1210059592,1210059599,CA
-1210059600,1210059767,US
-1210059768,1210059775,CH
-1210059776,1210059791,GB
-1210059792,1210060031,US
-1210060032,1210060047,AE
-1210060048,1210060351,US
-1210060352,1210060359,IN
-1210060360,1210060383,US
-1210060384,1210060407,IL
-1210060408,1210060515,US
-1210060516,1210060517,IN
-1210060518,1210060623,US
-1210060624,1210060639,CA
-1210060640,1210060783,US
-1210060784,1210060787,NL
-1210060788,1210060799,US
-1210060800,1210060815,BR
-1210060816,1210060823,US
-1210060824,1210060831,IN
-1210060832,1210060839,US
-1210060840,1210060847,AU
-1210060848,1210060855,IN
-1210060856,1210061327,US
-1210061328,1210061335,CA
-1210061336,1210061367,US
-1210061368,1210061375,IN
-1210061376,1210061407,US
-1210061408,1210061415,AU
-1210061416,1210061463,US
-1210061464,1210061471,HK
-1210061472,1210061599,US
-1210061600,1210061631,IL
-1210061632,1210061655,US
-1210061656,1210061663,GB
-1210061664,1210061727,US
-1210061728,1210061735,GB
-1210061736,1210061803,US
-1210061804,1210061807,AU
-1210061808,1210061991,US
-1210061992,1210061999,AU
-1210062000,1210062095,US
-1210062096,1210062103,NZ
-1210062104,1210062463,US
-1210062464,1210062479,IN
-1210062480,1210062487,US
-1210062488,1210062495,MX
-1210062496,1210062815,US
-1210062816,1210062831,ZA
-1210062832,1210062847,IL
-1210062848,1210062927,US
-1210062928,1210062935,AU
-1210062936,1210062967,US
-1210062968,1210062975,IE
-1210062976,1210062983,CR
-1210062984,1210064067,US
-1210064068,1210064071,CA
-1210064072,1210064311,US
-1210064312,1210064319,IE
-1210064320,1210064527,US
-1210064528,1210064535,AU
-1210064536,1210064663,US
-1210064664,1210064671,AU
-1210064672,1210064989,US
-1210064990,1210064991,AU
-1210064992,1210065023,US
-1210065024,1210065031,CA
-1210065032,1210065319,US
-1210065320,1210065327,AU
-1210065328,1210065535,US
-1210065536,1210065543,IN
-1210065544,1210065663,US
-1210065664,1210065679,IN
-1210065680,1210065695,US
-1210065696,1210065703,IN
-1210065704,1210065751,US
-1210065752,1210065759,GB
-1210065760,1210065783,US
-1210065784,1210065791,PA
-1210065792,1210065823,US
-1210065824,1210065855,AU
-1210065856,1210065877,US
-1210065878,1210065879,AU
-1210065880,1210066175,US
-1210066176,1210066183,CA
-1210066184,1210066287,US
-1210066288,1210066295,IN
-1210066296,1210066787,US
-1210066788,1210066791,CR
-1210066792,1210066807,US
-1210066808,1210066831,CA
-1210066832,1210066883,US
-1210066884,1210066887,CA
-1210066888,1210066921,US
-1210066922,1210066923,IN
-1210066924,1210067207,US
-1210067208,1210067215,AU
-1210067216,1210067263,US
-1210067264,1210067287,GB
-1210067288,1210067295,AU
-1210067296,1210067311,NL
-1210067312,1210067417,US
-1210067418,1210067419,IE
-1210067420,1210067632,US
-1210067633,1210067640,AU
-1210067641,1210067671,US
-1210067672,1210067675,NL
-1210067676,1210068039,US
-1210068040,1210068047,GB
-1210068048,1210068163,US
-1210068164,1210068165,IN
-1210068166,1210068319,US
-1210068320,1210068327,CA
-1210068328,1210068343,US
-1210068344,1210068351,MX
-1210068352,1210068447,US
-1210068448,1210068471,NO
-1210068472,1210068607,US
-1210068608,1210068735,IL
-1210068736,1210068903,US
-1210068904,1210068927,AU
-1210068928,1210069015,US
-1210069016,1210069023,CA
-1210069024,1210069159,US
-1210069160,1210069167,AU
-1210069168,1210070175,US
-1210070176,1210070183,IL
-1210070184,1210070631,US
-1210070632,1210070639,MX
-1210070640,1210070799,US
-1210070800,1210070807,AU
-1210070808,1210070959,US
-1210070960,1210070967,JP
-1210070968,1210071007,US
-1210071008,1210071015,GB
-1210071016,1210071039,US
-1210071040,1210071167,GB
-1210071168,1210072519,US
-1210072520,1210072527,NZ
-1210072528,1210072559,US
-1210072560,1210072567,GB
-1210072568,1210075279,US
-1210075280,1210075295,FR
-1210075296,1210076039,US
-1210076040,1210076047,CA
-1210076048,1210076097,US
-1210076098,1210076099,NL
-1210076100,1210076109,US
-1210076110,1210076111,CH
-1210076112,1210079911,US
-1210079912,1210079919,BM
-1210079920,1210079959,US
-1210079960,1210079961,MX
-1210079962,1210080079,US
-1210080080,1210080111,GB
-1210080112,1210080407,US
-1210080408,1210080415,NL
-1210080416,1210080423,US
-1210080424,1210080455,NL
-1210080456,1210080731,US
-1210080732,1210080733,IL
-1210080734,1210080799,US
-1210080800,1210080815,CA
-1210080816,1210081087,US
-1210081088,1210081103,CA
-1210081104,1210081335,US
-1210081336,1210081343,CR
-1210081344,1210081559,US
-1210081560,1210081567,PK
-1210081568,1210081599,US
-1210081600,1210081615,AU
-1210081616,1210081751,US
-1210081752,1210081753,FR
-1210081754,1210081789,US
-1210081790,1210081791,IN
-1210081792,1210081823,US
-1210081824,1210081831,MX
-1210081832,1210081839,US
-1210081840,1210081847,MX
-1210081848,1210081879,US
-1210081880,1210081887,MX
-1210081888,1210081911,US
-1210081912,1210081919,AU
-1210081920,1210081943,US
-1210081944,1210081951,CA
-1210081952,1210082043,US
-1210082044,1210082047,CA
-1210082048,1210082055,IN
-1210082056,1210082327,US
-1210082328,1210082335,CA
-1210082336,1210082447,US
-1210082448,1210082463,AU
-1210082464,1210082655,US
-1210082656,1210082663,CA
-1210082664,1210082797,US
-1210082798,1210082799,AU
-1210082800,1210082809,US
-1210082810,1210082811,IN
-1210082812,1210082831,US
-1210082832,1210082839,AU
-1210082840,1210082847,IN
-1210082848,1210082975,US
-1210082976,1210082991,GB
-1210082992,1210083071,US
-1210083072,1210083079,JP
-1210083080,1210083567,US
-1210083568,1210083569,BH
-1210083570,1210083719,US
-1210083720,1210083735,IN
-1210083736,1210083871,US
-1210083872,1210083879,CA
-1210083880,1210083983,US
-1210083984,1210083991,IN
-1210083992,1210084215,US
-1210084216,1210084223,VE
-1210084224,1210084263,US
-1210084264,1210084271,NZ
-1210084272,1210084359,US
-1210084360,1210084367,BG
-1210084368,1210084415,US
-1210084416,1210084479,CA
-1210084480,1210084711,US
-1210084712,1210084719,AU
-1210084720,1210084783,US
-1210084784,1210084799,BD
-1210084800,1210085055,US
-1210085056,1210085057,AU
-1210085058,1210086503,US
-1210086504,1210086511,GB
-1210086512,1210086551,US
-1210086552,1210086559,SE
-1210086560,1210086583,US
-1210086584,1210086591,SE
-1210086592,1210086599,US
-1210086600,1210086607,NZ
-1210086608,1210086623,US
-1210086624,1210086631,SE
-1210086632,1210087295,US
-1210087296,1210087303,GB
-1210087304,1210087423,US
-1210087424,1210087431,MX
-1210087432,1210087463,US
-1210087464,1210087471,CA
-1210087472,1210088959,US
-1210088960,1210088967,GB
-1210088968,1210089047,US
-1210089048,1210089055,MX
-1210089056,1210089375,US
-1210089376,1210089383,CA
-1210089384,1210089399,US
-1210089400,1210089407,GB
-1210089408,1210089705,US
-1210089706,1210089707,HK
-1210089708,1210089823,US
-1210089824,1210089855,CA
-1210089856,1210090071,US
-1210090072,1210090079,MX
-1210090080,1210090219,US
-1210090220,1210090221,AU
-1210090222,1210090287,US
-1210090288,1210090295,AU
-1210090296,1210090367,US
-1210090368,1210090375,JM
-1210090376,1210090383,US
-1210090384,1210090399,CA
-1210090400,1210090439,US
-1210090440,1210090443,FR
-1210090444,1210090475,US
-1210090476,1210090479,CA
-1210090480,1210090623,US
-1210090624,1210090639,BD
-1210090640,1210090767,US
-1210090768,1210090783,BD
-1210090784,1210090895,US
-1210090896,1210090903,AU
-1210090904,1210091079,US
-1210091080,1210091087,SG
-1210091088,1210091135,US
-1210091136,1210091151,CA
-1210091152,1210091175,US
-1210091176,1210091183,SR
-1210091184,1210091351,US
-1210091352,1210091359,AU
-1210091360,1210091535,US
-1210091536,1210091543,CA
-1210091544,1210091663,US
-1210091664,1210091671,IN
-1210091672,1210091679,US
-1210091680,1210091687,AU
-1210091688,1210091723,US
-1210091724,1210091725,GB
-1210091726,1210091839,US
-1210091840,1210091847,CA
-1210091848,1210091987,US
-1210091988,1210091991,GB
-1210091992,1210092001,US
-1210092002,1210092003,AU
-1210092004,1210092287,US
-1210092288,1210092543,ES
-1210092544,1210092567,US
-1210092568,1210092575,AU
-1210092576,1210092583,CA
-1210092584,1210092591,MX
-1210092592,1210092607,US
-1210092608,1210092639,GB
-1210092640,1210092799,US
-1210092800,1210092815,CA
-1210092816,1210093191,US
-1210093192,1210093199,CA
-1210093200,1210093247,US
-1210093248,1210093249,AU
-1210093250,1210093255,US
-1210093256,1210093257,AU
-1210093258,1210093283,US
-1210093284,1210093285,AU
-1210093286,1210093407,US
-1210093408,1210093423,MX
-1210093424,1210093639,US
-1210093640,1210093647,CA
-1210093648,1210093663,US
-1210093664,1210093671,CA
-1210093672,1210093679,AU
-1210093680,1210093751,US
-1210093752,1210093759,AU
-1210093760,1210093771,US
-1210093772,1210093775,HU
-1210093776,1210093811,US
-1210093812,1210093813,AU
-1210093814,1210093815,US
-1210093816,1210093817,JE
-1210093818,1210093847,US
-1210093848,1210093855,AU
-1210093856,1210094043,US
-1210094044,1210094045,AU
-1210094046,1210094175,US
-1210094176,1210094183,TT
-1210094184,1210094407,US
-1210094408,1210094415,GB
-1210094416,1210094831,US
-1210094832,1210094847,SG
-1210094848,1210094855,US
-1210094856,1210094863,SE
-1210094864,1210095263,US
-1210095264,1210095271,GB
-1210095272,1210095503,US
-1210095504,1210095519,IN
-1210095520,1210095543,US
-1210095544,1210095551,SG
-1210095552,1210095711,US
-1210095712,1210095727,GB
-1210095728,1210095935,US
-1210095936,1210095951,IN
-1210095952,1210095959,US
-1210095960,1210095967,GB
-1210095968,1210096295,US
-1210096296,1210096303,GB
-1210096304,1210096391,US
-1210096392,1210096399,AU
-1210096400,1210096543,US
-1210096544,1210096551,MX
-1210096552,1210096559,US
-1210096560,1210096575,DE
-1210096576,1210096871,US
-1210096872,1210096879,CA
-1210096880,1210097151,US
-1210097152,1210097159,GB
-1210097160,1210097303,US
-1210097304,1210097311,MX
-1210097312,1210097335,US
-1210097336,1210097343,IE
-1210097344,1210097415,US
-1210097416,1210097423,ZA
-1210097424,1210097567,US
-1210097568,1210097575,GB
-1210097576,1210097655,US
-1210097656,1210097663,GB
-1210097664,1210097783,US
-1210097784,1210097791,GB
-1210097792,1210098111,US
-1210098112,1210098119,IL
-1210098120,1210098127,US
-1210098128,1210098143,CA
-1210098144,1210098215,US
-1210098216,1210098223,IN
-1210098224,1210098319,US
-1210098320,1210098327,CA
-1210098328,1210098527,US
-1210098528,1210098535,SG
-1210098536,1210098775,US
-1210098776,1210098783,CN
-1210098784,1210098899,US
-1210098900,1210098901,MX
-1210098902,1210098959,US
-1210098960,1210098975,CA
-1210098976,1210099383,US
-1210099384,1210099399,AE
-1210099400,1210099495,US
-1210099496,1210099503,BG
-1210099504,1210099511,US
-1210099512,1210099519,MX
-1210099520,1210099695,US
-1210099696,1210099711,AU
-1210099712,1210099783,US
-1210099784,1210099791,NZ
-1210099792,1210099879,US
-1210099880,1210099895,GB
-1210099896,1210099967,US
-1210099968,1210099975,MT
-1210099976,1210100103,US
-1210100104,1210100111,MT
-1210100112,1210100199,US
-1210100200,1210100203,CA
-1210100204,1210100231,US
-1210100232,1210100239,CA
-1210100240,1210100255,PK
-1210100256,1210100287,CA
-1210100288,1210100359,US
-1210100360,1210100367,AU
-1210100368,1210100463,US
-1210100464,1210100479,CA
-1210100480,1210100631,US
-1210100632,1210100639,NZ
-1210100640,1210101023,US
-1210101024,1210101039,GB
-1210101040,1210101191,US
-1210101192,1210101195,CA
-1210101196,1210101263,US
-1210101264,1210101279,MY
-1210101280,1210101311,US
-1210101312,1210101319,IE
-1210101320,1210101327,IL
-1210101328,1210101519,US
-1210101520,1210101527,IL
-1210101528,1210101559,US
-1210101560,1210101567,AU
-1210101568,1210101727,US
-1210101728,1210101743,GB
-1210101744,1210101863,US
-1210101864,1210101871,CH
-1210101872,1210101879,US
-1210101880,1210101887,CA
-1210101888,1210102287,US
-1210102288,1210102295,IL
-1210102296,1210102399,US
-1210102400,1210102407,AU
-1210102408,1210102815,US
-1210102816,1210102823,CA
-1210102824,1210102879,US
-1210102880,1210102895,IL
-1210102896,1210103255,US
-1210103256,1210103263,AU
-1210103264,1210107967,US
-1210107968,1210107975,MO
-1210107976,1210108295,US
-1210108296,1210108303,IN
-1210108304,1210108335,US
-1210108336,1210108343,CA
-1210108344,1210108351,IL
-1210108352,1210108359,US
-1210108360,1210108367,CA
-1210108368,1210108423,US
-1210108424,1210108431,PR
-1210108432,1210108631,US
-1210108632,1210108639,GB
-1210108640,1210108903,US
-1210108904,1210108911,AU
-1210108912,1210108919,GB
-1210108920,1210109247,US
-1210109248,1210109255,DK
-1210109256,1210109263,IL
-1210109264,1210109271,CA
-1210109272,1210109751,US
-1210109752,1210109759,IL
-1210109760,1210109767,GB
-1210109768,1210109775,IN
-1210109776,1210109935,US
-1210109936,1210109943,BB
-1210109944,1210110955,US
-1210110956,1210110957,GH
-1210110958,1210111007,US
-1210111008,1210111015,GB
-1210111016,1210111279,US
-1210111280,1210111287,VG
-1210111288,1210111295,US
-1210111296,1210111303,AU
-1210111304,1210111991,US
-1210111992,1210111999,BR
-1210112000,1210112007,CA
-1210112008,1210112039,US
-1210112040,1210112047,IL
-1210112048,1210112455,US
-1210112456,1210112463,ZA
-1210112464,1210112679,US
-1210112680,1210112687,CA
-1210112688,1210112727,US
-1210112728,1210112735,PY
-1210112736,1210112815,US
-1210112816,1210112823,MX
-1210112824,1210113055,US
-1210113056,1210113063,CA
-1210113064,1210113535,US
-1210113536,1210113551,CA
-1210113552,1210113615,US
-1210113616,1210113631,GB
-1210113632,1210113991,US
-1210113992,1210113999,IE
-1210114000,1210114095,US
-1210114096,1210114103,CR
-1210114104,1210114151,US
-1210114152,1210114159,MY
-1210114160,1210114167,US
-1210114168,1210114175,HN
-1210114176,1210114279,US
-1210114280,1210114287,AU
-1210114288,1210114351,US
-1210114352,1210114367,AU
-1210114368,1210114439,US
-1210114440,1210114447,GB
-1210114448,1210114471,US
-1210114472,1210114479,AU
-1210114480,1210114487,CL
-1210114488,1210114495,AU
-1210114496,1210114503,US
-1210114504,1210114511,BB
-1210114512,1210114551,US
-1210114552,1210114559,AU
-1210114560,1210114623,US
-1210114624,1210114631,CA
-1210114632,1210114711,US
-1210114712,1210114719,ZA
-1210114720,1210114759,US
-1210114760,1210114775,MT
-1210114776,1210114831,US
-1210114832,1210114839,AU
-1210114840,1210114991,US
-1210114992,1210114999,AU
-1210115000,1210115079,US
-1210115080,1210115087,AU
-1210115088,1210115135,US
-1210115136,1210115143,AU
-1210115144,1210115199,US
-1210115200,1210115207,GB
-1210115208,1210115335,US
-1210115336,1210115343,GB
-1210115344,1210115471,US
-1210115472,1210115479,IN
-1210115480,1210115495,US
-1210115496,1210115503,AU
-1210115504,1210115551,US
-1210115552,1210115575,BB
-1210115576,1210115719,US
-1210115720,1210115727,AU
-1210115728,1210115791,US
-1210115792,1210115799,GB
-1210115800,1210115911,US
-1210115912,1210115919,GB
-1210115920,1210116255,US
-1210116256,1210116263,IN
-1210116264,1210116375,US
-1210116376,1210116383,CA
-1210116384,1210116423,US
-1210116424,1210116431,GB
-1210116432,1210116527,US
-1210116528,1210116535,PR
-1210116536,1210116671,US
-1210116672,1210116679,AU
-1210116680,1210116687,GB
-1210116688,1210116695,NG
-1210116696,1210116863,US
-1210116864,1210116871,GB
-1210116872,1210117191,US
-1210117192,1210117199,CA
-1210117200,1210117567,US
-1210117568,1210117599,CA
-1210117600,1210117631,US
-1210117632,1210117639,IN
-1210117640,1210117647,GB
-1210117648,1210117655,AE
-1210117656,1210117871,US
-1210117872,1210117879,CA
-1210117880,1210118089,US
-1210118090,1210118091,IN
-1210118092,1210118191,US
-1210118192,1210118199,NZ
-1210118200,1210118239,US
-1210118240,1210118255,TH
-1210118256,1210118431,US
-1210118432,1210118439,AU
-1210118440,1210118655,US
-1210118656,1210118663,IN
-1210118664,1210118687,US
-1210118688,1210118703,IN
-1210118704,1210118815,US
-1210118816,1210118823,CA
-1210118824,1210118887,US
-1210118888,1210118895,BR
-1210118896,1210119119,US
-1210119120,1210119135,GB
-1210119136,1210119183,US
-1210119184,1210119191,CA
-1210119192,1210119255,US
-1210119256,1210119263,MY
-1210119264,1210119311,US
-1210119312,1210119319,CW
-1210119320,1210119551,US
-1210119552,1210119559,MX
-1210119560,1210119823,US
-1210119824,1210119831,CA
-1210119832,1210119881,US
-1210119882,1210119883,GB
-1210119884,1210119911,US
-1210119912,1210119913,AU
-1210119914,1210120007,US
-1210120008,1210120015,IN
-1210120016,1210120155,US
-1210120156,1210120157,CA
-1210120158,1210120175,US
-1210120176,1210120177,IN
-1210120178,1210120847,US
-1210120848,1210120855,MY
-1210120856,1210120895,US
-1210120896,1210120903,MX
-1210120904,1210120991,US
-1210120992,1210120999,IN
-1210121000,1210121023,US
-1210121024,1210121039,AU
-1210121040,1210121839,US
-1210121840,1210121847,IL
-1210121848,1210122063,US
-1210122064,1210122071,MX
-1210122072,1210122211,US
-1210122212,1210122215,CA
-1210122216,1210253311,US
+1209893520,1209904959,US
+1209904960,1209904975,GB
+1209904976,1209917439,US
+1209917440,1209918367,CA
+1209918368,1209918399,US
+1209918400,1209925631,CA
+1209925632,1210253311,US
1210253312,1210254703,CA
1210254704,1210254719,NZ
-1210254720,1210258431,CA
-1210258432,1210258687,US
-1210258688,1210261503,CA
+1210254720,1210261503,CA
1210261504,1210381759,US
1210381760,1210381823,RU
1210381824,1210418175,US
@@ -22039,22 +19175,37 @@
1210925056,1210941439,CA
1210941440,1211032223,US
1211032224,1211032255,VE
-1211032256,1211032271,US
-1211032272,1211032287,DO
-1211032288,1211033087,US
+1211032256,1211033087,US
1211033088,1211033599,CO
-1211033600,1211036031,US
+1211033600,1211035647,US
+1211035648,1211035663,PR
+1211035664,1211035711,US
+1211035712,1211035775,CA
+1211035776,1211035791,US
+1211035792,1211035807,CR
+1211035808,1211036031,US
1211036032,1211036095,EC
1211036096,1211036319,US
1211036320,1211036335,CA
-1211036336,1211038719,US
+1211036336,1211037519,US
+1211037520,1211037535,UY
+1211037536,1211037679,US
+1211037680,1211037695,AR
+1211037696,1211037999,US
+1211038000,1211038007,BB
+1211038008,1211038011,TT
+1211038012,1211038063,US
+1211038064,1211038079,TT
+1211038080,1211038719,US
1211038720,1211038975,CY
-1211038976,1211236351,US
+1211038976,1211039007,US
+1211039008,1211039023,VG
+1211039024,1211039087,US
+1211039088,1211039103,RU
+1211039104,1211236351,US
1211236352,1211255551,PR
1211255552,1211255807,US
-1211255808,1211266047,PR
-1211266048,1211266303,US
-1211266304,1211269119,PR
+1211255808,1211269119,PR
1211269120,1211304063,US
1211304064,1211304159,CA
1211304160,1211304207,US
@@ -22077,7 +19228,7 @@
1211306774,1211306879,CA
1211306880,1211308167,US
1211308168,1211308175,CA
-1211308176,1211308191,BV
+1211308176,1211308191,US
1211308192,1211308543,CA
1211308544,1211308559,KN
1211308560,1211308607,CA
@@ -22089,15 +19240,13 @@
1211308672,1211308703,CA
1211308704,1211308719,VG
1211308720,1211308735,CA
-1211308736,1211308751,BV
+1211308736,1211308751,US
1211308752,1211308767,CA
1211308768,1211308783,US
1211308784,1211310079,CA
1211310080,1211310404,US
1211310405,1211310405,IN
-1211310406,1211310951,US
-1211310952,1211310952,IN
-1211310953,1211311378,US
+1211310406,1211311378,US
1211311379,1211311379,IN
1211311380,1211311394,US
1211311395,1211311395,IN
@@ -22107,11 +19256,7 @@
1211311964,1211311964,IN
1211311965,1211312569,US
1211312570,1211312570,IN
-1211312571,1211313219,US
-1211313220,1211313231,IN
-1211313232,1211313311,US
-1211313312,1211313315,IN
-1211313316,1211313431,US
+1211312571,1211313431,US
1211313432,1211313439,IN
1211313440,1211313567,US
1211313568,1211313579,IN
@@ -22150,9 +19295,7 @@
1211384280,1211384287,GB
1211384288,1211384327,US
1211384328,1211384335,US
-1211384336,1211387983,US
-1211387984,1211387999,AE
-1211388000,1211388159,US
+1211384336,1211388159,US
1211388160,1211388287,US
1211388288,1211391455,US
1211391456,1211391487,CN
@@ -22175,9 +19318,7 @@
1211421741,1211432959,US
1211432960,1211473919,CA
1211473920,1211596799,US
-1211596800,1211598079,CA
-1211598080,1211598335,US
-1211598336,1211605999,CA
+1211596800,1211605999,CA
1211606000,1211606003,US
1211606004,1211613183,CA
1211613184,1212191304,US
@@ -22194,15 +19335,15 @@
1218693120,1218696191,IN
1218696192,1218697215,US
1218697216,1218697471,IN
-1218697472,1218731807,US
+1218697472,1218706431,US
+1218706432,1218706687,CN
+1218706688,1218731807,US
1218731808,1218731815,A2
1218731816,1218778111,US
1218778112,1218778367,SG
1218778368,1218987263,US
1218987264,1218987519,CA
-1218987520,1219253119,US
-1219253120,1219253135,IN
-1219253136,1219253319,US
+1218987520,1219253319,US
1219253320,1219253327,CA
1219253328,1219256319,US
1219256320,1219264511,CA
@@ -22276,13 +19417,14 @@
1224476672,1224478719,CW
1224478720,1224480767,US
1224480768,1224484863,JM
-1224484864,1224485887,MX
-1224485888,1224493055,GT
+1224484864,1224493055,GT
1224493056,1224497151,US
1224497152,1224501247,GT
1224501248,1224503551,JM
1224503552,1224503807,BS
-1224503808,1224539904,JM
+1224503808,1224525568,JM
+1224525569,1224525823,US
+1224525824,1224539904,JM
1224539905,1224701942,US
1224701943,1224701943,CA
1224701944,1241743359,US
@@ -22291,17 +19433,13 @@
1242300416,1242562559,CA
1242562560,1244659711,US
1244659712,1244790783,CA
-1244790784,1244822783,US
-1244822784,1244823039,AE
-1244823040,1244831743,US
+1244790784,1244831743,US
1244831744,1244839935,CA
1244839936,1244848127,US
1244848128,1244852223,CA
1244852224,1244864511,US
1244864512,1244872703,CA
-1244872704,1244917759,US
-1244917760,1244918015,CA
-1244918016,1244996655,US
+1244872704,1244996655,US
1244996656,1244996663,CH
1244996664,1245050689,US
1245050690,1245050690,SA
@@ -22335,7 +19473,9 @@
1245665746,1245665747,US
1245665748,1246864899,US
1246864900,1246864958,EG
-1246864959,1246874127,US
+1246864959,1246865663,US
+1246865664,1246865919,GB
+1246865920,1246874127,US
1246874128,1246874216,GB
1246874217,1246874368,US
1246874369,1246874496,GB
@@ -22343,19 +19483,19 @@
1246874559,1246874590,GB
1246874591,1246875509,US
1246875510,1246875520,NL
-1246875521,1246890463,US
+1246875521,1246887935,US
+1246887936,1246888191,PL
+1246888192,1246890463,US
1246890464,1246890464,US
1246890465,1246902783,US
1246902784,1246903039,NL
1246903040,1246937087,US
1246937088,1246945279,CA
1246945280,1247027199,US
-1247027200,1247034559,A2
-1247034560,1247034623,US
+1247027200,1247034367,A2
+1247034368,1247034623,US
1247034624,1247035391,A2
-1247035392,1247069303,US
-1247069304,1247069311,VA
-1247069312,1247072719,US
+1247035392,1247072719,US
1247072720,1247072735,NL
1247072736,1247073791,US
1247073792,1247074303,A2
@@ -22370,13 +19510,15 @@
1247481904,1247481911,US
1247481912,1247481927,CN
1247481928,1247481951,US
-1247481952,1247481967,CN
-1247481968,1247481983,US
+1247481952,1247481959,CN
+1247481960,1247481983,US
1247481984,1247482015,GB
1247482016,1247482047,CN
1247482048,1247482063,CA
1247482064,1247482079,US
-1247482080,1247482175,CN
+1247482080,1247482103,CN
+1247482104,1247482111,US
+1247482112,1247482175,CN
1247482176,1247482239,US
1247482240,1247482255,GB
1247482256,1247482263,CN
@@ -22397,11 +19539,9 @@
1247482568,1247482583,CN
1247482584,1247482615,US
1247482616,1247482623,CN
-1247482624,1247482687,US
-1247482688,1247482751,CA
-1247482752,1247482815,US
-1247482816,1247482879,CN
-1247482880,1247482927,US
+1247482624,1247482815,US
+1247482816,1247482847,CN
+1247482848,1247482927,US
1247482928,1247482951,BO
1247482952,1247482967,US
1247482968,1247482975,CN
@@ -22441,19 +19581,7 @@
1248864256,1248866303,CA
1248866304,1248885759,US
1248885760,1248886783,CA
-1248886784,1248887935,US
-1248887936,1248887943,CA
-1248887944,1248888055,US
-1248888056,1248888063,BR
-1248888064,1248888439,US
-1248888440,1248888447,BO
-1248888448,1248888631,US
-1248888632,1248888639,CA
-1248888640,1248888679,US
-1248888680,1248888687,BO
-1248888688,1248888703,US
-1248888704,1248888711,BR
-1248888712,1248899071,US
+1248886784,1248899071,US
1248899072,1248900095,CA
1248900096,1248902143,US
1248902144,1248903167,CA
@@ -22505,7 +19633,8 @@
1249027648,1249027655,GB
1249027656,1249027719,US
1249027720,1249027727,GR
-1249027728,1249027823,US
+1249027728,1249027735,CO
+1249027736,1249027823,US
1249027824,1249027839,CA
1249027840,1249027895,US
1249027896,1249027903,PL
@@ -22538,13 +19667,7 @@
1249101824,1249102847,PR
1249102848,1249103103,US
1249103104,1249103871,CA
-1249103872,1249105279,US
-1249105280,1249105295,CA
-1249105296,1249105367,US
-1249105368,1249105375,ES
-1249105376,1249105567,US
-1249105568,1249105599,CA
-1249105600,1249106431,US
+1249103872,1249106431,US
1249106432,1249106687,DE
1249106688,1249106943,US
1249106944,1249107967,CA
@@ -22603,9 +19726,7 @@
1249256650,1249256687,GB
1249256688,1249256835,CA
1249256836,1249256868,US
-1249256869,1249256988,CA
-1249256989,1249256998,US
-1249256999,1249256999,CA
+1249256869,1249256999,CA
1249257000,1249257009,LB
1249257010,1249257178,CA
1249257179,1249257213,GB
@@ -22634,9 +19755,7 @@
1249382288,1249382303,DE
1249382304,1249384447,US
1249384448,1249386495,PR
-1249386496,1249389343,US
-1249389344,1249389375,CR
-1249389376,1249391615,US
+1249386496,1249391615,US
1249391616,1249392639,CA
1249392640,1249396735,US
1249396736,1249397759,CA
@@ -22718,13 +19837,7 @@
1249690678,1249690686,GB
1249690687,1249690783,US
1249690784,1249690815,AU
-1249690816,1249691999,US
-1249692000,1249692031,CA
-1249692032,1249692735,US
-1249692736,1249692767,HK
-1249692768,1249693263,US
-1249693264,1249693271,CA
-1249693272,1249710143,US
+1249690816,1249710143,US
1249710144,1249710207,CN
1249710208,1249710271,NL
1249710272,1249710335,BE
@@ -22734,12 +19847,16 @@
1249715968,1249716735,US
1249716736,1249716991,DE
1249716992,1249720319,US
-1249720320,1249720575,AU
+1249720320,1249720352,AU
+1249720353,1249720353,JP
+1249720354,1249720575,AU
1249720576,1249720599,GB
1249720600,1249720607,IT
-1249720608,1249720767,GB
-1249720768,1249720831,DE
-1249720832,1249721343,US
+1249720608,1249720623,CH
+1249720624,1249720703,GB
+1249720704,1249720751,US
+1249720752,1249720767,GB
+1249720768,1249721343,US
1249721344,1249721351,AT
1249721352,1249721359,BE
1249721360,1249721367,CH
@@ -22761,7 +19878,7 @@
1249721512,1249721519,TR
1249721520,1249721527,ZA
1249721528,1249721535,DK
-1249721536,1249721599,US
+1249721536,1249721599,GB
1249721600,1249721607,AT
1249721608,1249721615,BE
1249721616,1249721623,CH
@@ -22788,7 +19905,8 @@
1249721792,1249721799,KE
1249721800,1249721807,TR
1249721808,1249721815,ZA
-1249721816,1249722111,US
+1249721816,1249721855,GB
+1249721856,1249722111,US
1249722112,1249722367,IN
1249722368,1249723903,US
1249723904,1249724159,CN
@@ -22799,10 +19917,12 @@
1249726208,1249727999,US
1249728000,1249728255,HU
1249728256,1249736959,US
-1249736960,1249737215,GB
-1249737216,1249744895,US
+1249736960,1249737471,EU
+1249737472,1249744895,US
1249744896,1249745151,TW
-1249745152,1249796095,US
+1249745152,1249773023,US
+1249773024,1249773055,CA
+1249773056,1249796095,US
1249796096,1249804287,CA
1249804288,1249838847,US
1249838848,1249838911,IN
@@ -22851,12 +19971,12 @@
1254604176,1254604191,US
1254604192,1254604199,IE
1254604200,1254621183,US
-1254621184,1254622207,CA
-1254622208,1254622463,US
-1254622464,1254629375,CA
+1254621184,1254629375,CA
1254629376,1254704383,US
1254704384,1254704639,PH
-1254704640,1254713359,US
+1254704640,1254704903,US
+1254704904,1254704911,PH
+1254704912,1254713359,US
1254713360,1254713407,CA
1254713408,1254738239,US
1254738240,1254738255,CA
@@ -22866,462 +19986,29 @@
1254752192,1254752207,CH
1254752208,1254924687,US
1254924688,1254924703,RO
-1254924704,1254948927,US
-1254948928,1254948935,SG
-1254948936,1254949247,US
-1254949248,1254949279,IN
-1254949280,1254950199,US
-1254950200,1254950207,IL
-1254950208,1254950671,US
-1254950672,1254950679,RU
-1254950680,1254950687,CA
-1254950688,1254950751,US
-1254950752,1254950759,IL
-1254950760,1254950767,US
-1254950768,1254950775,GR
-1254950776,1254950847,US
-1254950848,1254950855,IL
-1254950856,1254950919,US
-1254950920,1254950927,CA
-1254950928,1254950951,US
-1254950952,1254950959,IN
-1254950960,1254951247,US
-1254951248,1254951263,CA
-1254951264,1254951431,US
-1254951432,1254951439,CA
-1254951440,1254951471,US
-1254951472,1254951479,MX
-1254951480,1254951591,US
-1254951592,1254951599,IL
-1254951600,1254951607,US
-1254951608,1254951615,IN
-1254951616,1254951631,US
-1254951632,1254951639,JP
-1254951640,1254951655,US
-1254951656,1254951663,CA
-1254951664,1254951871,US
-1254951872,1254951887,TH
-1254951888,1254952047,US
-1254952048,1254952055,MX
-1254952056,1254952255,US
-1254952256,1254952263,CA
-1254952264,1254952279,US
-1254952280,1254952287,CA
-1254952288,1254952295,IL
-1254952296,1254952591,US
-1254952592,1254952599,CA
-1254952600,1254952927,US
-1254952928,1254952935,CA
-1254952936,1254953031,US
-1254953032,1254953039,CA
-1254953040,1254953047,ZA
-1254953048,1254953055,US
-1254953056,1254953063,IL
-1254953064,1254953071,US
-1254953072,1254953079,CA
-1254953080,1254953087,US
-1254953088,1254953095,CA
-1254953096,1254953279,US
-1254953280,1254953295,BD
-1254953296,1254953327,US
-1254953328,1254953343,NL
-1254953344,1254953615,US
-1254953616,1254953623,GB
-1254953624,1254953639,US
-1254953640,1254953647,TW
-1254953648,1254953743,US
-1254953744,1254953751,IN
-1254953752,1254953759,US
-1254953760,1254953767,IN
-1254953768,1254953775,GB
-1254953776,1254953815,US
-1254953816,1254953823,GT
-1254953824,1254953855,US
-1254953856,1254953863,NL
-1254953864,1254953871,US
-1254953872,1254953879,NL
-1254953880,1254953919,US
-1254953920,1254953935,NL
-1254953936,1254954255,US
-1254954256,1254954263,CA
-1254954264,1254954287,US
-1254954288,1254954295,CA
-1254954296,1254954319,US
-1254954320,1254954327,CA
-1254954328,1254954639,US
-1254954640,1254954647,GB
-1254954648,1254954655,CA
-1254954656,1254954663,US
-1254954664,1254954671,GB
-1254954672,1254954887,US
-1254954888,1254954895,IL
-1254954896,1254955599,US
-1254955600,1254955607,GB
-1254955608,1254955735,US
-1254955736,1254955743,GB
-1254955744,1254956135,US
-1254956136,1254956143,IL
-1254956144,1254956383,US
-1254956384,1254956391,IL
-1254956392,1254957055,US
-1254957056,1254957063,GB
-1254957064,1254957071,MX
-1254957072,1254957239,US
-1254957240,1254957247,GB
-1254957248,1254957255,MT
-1254957256,1254957287,US
-1254957288,1254957295,IN
-1254957296,1254957311,US
-1254957312,1254957327,CA
-1254957328,1254957375,US
-1254957376,1254957391,CA
-1254957392,1254957407,US
-1254957408,1254957423,IN
-1254957424,1254958303,US
-1254958304,1254958319,GB
-1254958320,1254958351,US
-1254958352,1254958359,BO
-1254958360,1254958535,US
-1254958536,1254958543,CA
-1254958544,1254958567,US
-1254958568,1254958575,MX
-1254958576,1254958855,US
-1254958856,1254958863,NZ
-1254958864,1254958895,US
-1254958896,1254958903,CA
-1254958904,1254959151,US
-1254959152,1254959183,CA
-1254959184,1254959391,US
-1254959392,1254959399,GB
-1254959400,1254959671,US
-1254959672,1254959679,GB
-1254959680,1254959775,US
-1254959776,1254959783,KR
-1254959784,1254959799,US
-1254959800,1254959807,GB
-1254959808,1254959927,US
-1254959928,1254959935,MX
-1254959936,1254959943,US
-1254959944,1254959951,CA
-1254959952,1254959991,US
-1254959992,1254959999,MX
-1254960000,1254960039,US
-1254960040,1254960047,IN
-1254960048,1254960279,US
-1254960280,1254960287,JM
-1254960288,1254960351,US
-1254960352,1254960359,AU
-1254960360,1254960367,CA
-1254960368,1254960415,US
-1254960416,1254960423,CA
-1254960424,1254960447,US
-1254960448,1254960455,AU
-1254960456,1254960463,US
-1254960464,1254960471,SG
-1254960472,1254960487,AU
-1254960488,1254960495,GB
-1254960496,1254960583,US
-1254960584,1254960591,MY
-1254960592,1254960655,US
-1254960656,1254960663,CA
-1254960664,1254960879,US
-1254960880,1254960887,CA
-1254960888,1254960903,US
-1254960904,1254960911,NZ
-1254960912,1254960935,US
-1254960936,1254960943,IN
-1254960944,1254960967,US
-1254960968,1254960975,IN
-1254960976,1254961567,US
-1254961568,1254961599,BD
-1254961600,1254961751,US
-1254961752,1254961767,GB
-1254961768,1254961823,US
-1254961824,1254961831,AE
-1254961832,1254961911,US
-1254961912,1254961919,CA
-1254961920,1254962015,US
-1254962016,1254962023,AE
-1254962024,1254962351,US
-1254962352,1254962359,GB
-1254962360,1254962511,US
-1254962512,1254962527,JP
-1254962528,1254962695,US
-1254962696,1254962703,GB
-1254962704,1254962799,US
-1254962800,1254962807,CA
-1254962808,1254962855,US
-1254962856,1254962863,CA
-1254962864,1254962951,US
-1254962952,1254962959,NZ
-1254962960,1254962975,US
-1254962976,1254962983,CA
-1254962984,1254963047,US
-1254963048,1254963055,MX
-1254963056,1254963583,US
-1254963584,1254963591,AU
-1254963592,1254964079,US
-1254964080,1254964087,DK
-1254964088,1254964255,US
-1254964256,1254964263,BR
-1254964264,1254964335,US
-1254964336,1254964343,NZ
-1254964344,1254964351,PR
-1254964352,1254964391,US
-1254964392,1254964399,AU
-1254964400,1254964799,US
-1254964800,1254964815,CA
-1254964816,1254964927,US
-1254964928,1254964943,CA
-1254964944,1254965095,US
-1254965096,1254965103,IN
-1254965104,1254965239,US
-1254965240,1254965247,GB
-1254965248,1254965431,US
-1254965432,1254965439,GB
-1254965440,1254965887,US
-1254965888,1254965895,MX
-1254965896,1254966031,US
-1254966032,1254966039,CA
-1254966040,1254966383,US
-1254966384,1254966391,ZA
-1254966392,1254966487,US
-1254966488,1254966495,IE
-1254966496,1254966567,US
-1254966568,1254966575,ZA
-1254966576,1254966607,US
-1254966608,1254966615,JO
-1254966616,1254966863,US
-1254966864,1254966879,IL
-1254966880,1254966927,US
-1254966928,1254966943,FR
-1254966944,1254966975,US
-1254966976,1254966991,IL
-1254966992,1254967279,US
-1254967280,1254967287,FR
-1254967288,1254967519,US
-1254967520,1254967535,CA
-1254967536,1254967607,US
-1254967608,1254967615,CA
-1254967616,1254967647,US
-1254967648,1254967655,EG
-1254967656,1254967887,US
-1254967888,1254967895,CA
-1254967896,1254967975,US
-1254967976,1254967991,IN
-1254967992,1254968103,US
-1254968104,1254968111,UY
-1254968112,1254968295,US
-1254968296,1254968303,IT
-1254968304,1254968391,US
-1254968392,1254968399,SG
-1254968400,1254968487,US
-1254968488,1254968495,CA
-1254968496,1254968671,US
-1254968672,1254968679,DO
-1254968680,1254968751,US
-1254968752,1254968759,GB
-1254968760,1254968927,US
-1254968928,1254968935,CA
-1254968936,1254968951,US
-1254968952,1254968959,GB
-1254968960,1254968991,US
-1254968992,1254968999,CA
-1254969000,1254969111,US
-1254969112,1254969127,AU
-1254969128,1254969175,US
-1254969176,1254969183,AU
-1254969184,1254969247,US
-1254969248,1254969255,CO
-1254969256,1254969263,BD
-1254969264,1254969287,US
-1254969288,1254969295,GB
-1254969296,1254969311,US
-1254969312,1254969319,CA
-1254969320,1254969399,US
-1254969400,1254969407,CA
-1254969408,1254969423,US
-1254969424,1254969431,CA
-1254969432,1254969439,GB
-1254969440,1254969447,CA
-1254969448,1254969455,US
-1254969456,1254969463,IL
-1254969464,1254969471,GB
-1254969472,1254969495,US
-1254969496,1254969503,DK
-1254969504,1254969551,US
-1254969552,1254969559,CA
-1254969560,1254969575,US
-1254969576,1254969583,AE
-1254969584,1254969727,US
-1254969728,1254969735,CA
-1254969736,1254970047,US
-1254970048,1254970063,CA
-1254970064,1254970095,US
-1254970096,1254970111,AE
-1254970112,1254970167,US
-1254970168,1254970175,GB
-1254970176,1254970183,US
-1254970184,1254970191,GB
-1254970192,1254970287,US
-1254970288,1254970295,IN
-1254970296,1254970335,US
-1254970336,1254970343,CH
-1254970344,1254970527,US
-1254970528,1254970543,GB
-1254970544,1254970591,US
-1254970592,1254970607,PH
-1254970608,1254970623,GH
-1254970624,1254970631,MX
-1254970632,1254970831,US
-1254970832,1254970839,MX
-1254970840,1254970903,US
-1254970904,1254970911,CA
-1254970912,1254971007,US
-1254971008,1254971015,JP
-1254971016,1254971023,IN
-1254971024,1254971055,US
-1254971056,1254971063,GB
-1254971064,1254971231,US
-1254971232,1254971239,IN
-1254971240,1254971319,US
-1254971320,1254971327,MX
-1254971328,1254971951,US
-1254971952,1254971959,GB
-1254971960,1254971967,IN
-1254971968,1254972239,US
-1254972240,1254972247,CA
-1254972248,1254972335,US
-1254972336,1254972343,GH
-1254972344,1254972407,US
-1254972408,1254972415,AU
-1254972416,1254972431,US
-1254972432,1254972439,AU
-1254972440,1254972447,US
-1254972448,1254972455,GG
-1254972456,1254972727,US
-1254972728,1254972735,AU
-1254972736,1254972879,US
-1254972880,1254972895,MX
-1254972896,1254972983,US
-1254972984,1254972991,CA
-1254972992,1254973015,US
-1254973016,1254973023,BR
-1254973024,1254973047,US
-1254973048,1254973055,AU
-1254973056,1254973575,US
-1254973576,1254973583,MX
-1254973584,1254973663,US
-1254973664,1254973671,PH
-1254973672,1254973679,US
-1254973680,1254973687,IN
-1254973688,1254973695,US
-1254973696,1254973703,MY
-1254973704,1254973807,US
-1254973808,1254973815,IN
-1254973816,1254974167,US
-1254974168,1254974175,MX
-1254974176,1254974327,US
-1254974328,1254974335,MX
-1254974336,1254974367,US
-1254974368,1254974375,CA
-1254974376,1254974391,US
-1254974392,1254974399,CA
-1254974400,1254974511,US
-1254974512,1254974519,IL
-1254974520,1254974767,US
-1254974768,1254974775,GB
-1254974776,1254974887,US
-1254974888,1254974895,AU
-1254974896,1254974951,US
-1254974952,1254974959,NZ
-1254974960,1254975231,US
-1254975232,1254975239,AU
-1254975240,1254975415,US
-1254975416,1254975423,CA
-1254975424,1254975471,US
-1254975472,1254975487,GB
-1254975488,1254975615,US
-1254975616,1254975623,IN
-1254975624,1254975887,US
-1254975888,1254975895,IN
-1254975896,1254975919,US
-1254975920,1254975927,IN
-1254975928,1254975935,CA
-1254975936,1254976023,US
-1254976024,1254976031,GB
-1254976032,1254976127,US
-1254976128,1254976135,AU
-1254976136,1254976151,US
-1254976152,1254976167,CA
-1254976168,1254976303,US
-1254976304,1254976311,GB
-1254976312,1254976351,US
-1254976352,1254976359,GB
-1254976360,1254976399,US
-1254976400,1254976407,MX
-1254976408,1254976735,US
-1254976736,1254976751,CA
-1254976752,1254976767,US
-1254976768,1254976775,GB
-1254976776,1254976791,US
-1254976792,1254976799,IN
-1254976800,1254976903,US
-1254976904,1254976911,MX
-1254976912,1254976991,US
-1254976992,1254977023,IN
-1254977024,1254977095,US
-1254977096,1254977103,CO
-1254977104,1254977135,US
-1254977136,1254977143,NZ
-1254977144,1254977159,US
-1254977160,1254977167,IN
-1254977168,1254977247,US
-1254977248,1254977255,CL
-1254977256,1254977455,US
-1254977456,1254977471,IN
-1254977472,1254977487,US
-1254977488,1254977503,TH
-1254977504,1254977647,US
-1254977648,1254977655,AE
-1254977656,1254977735,US
-1254977736,1254977743,NZ
-1254977744,1254977791,US
-1254977792,1254977799,GB
-1254977800,1254978183,US
-1254978184,1254978191,GB
-1254978192,1254978327,US
-1254978328,1254978335,IN
-1254978336,1254978375,US
-1254978376,1254978383,BR
-1254978384,1254978391,CA
-1254978392,1254978447,US
-1254978448,1254978463,IN
-1254978464,1254978495,US
-1254978496,1254978559,NL
-1254978560,1254978751,US
+1254924704,1254978751,US
1254978752,1254978767,LB
-1254978768,1254979407,US
-1254979408,1254979423,CA
-1254979424,1254989823,US
-1254989824,1254990335,CA
-1254990336,1254990591,US
-1254990592,1254998015,CA
-1254998016,1255002111,US
-1255002112,1255004927,CA
-1255004928,1255005183,US
-1255005184,1255006207,CA
+1254978768,1254993919,US
+1254993920,1254994175,CA
+1254994176,1255002111,US
+1255002112,1255006207,CA
1255006208,1255007487,US
1255007488,1255007711,CA
-1255007712,1255011343,US
+1255007712,1255011327,US
+1255011328,1255011335,CA
+1255011336,1255011343,US
1255011344,1255011359,CA
-1255011360,1255011375,US
-1255011376,1255011551,CA
+1255011360,1255011367,US
+1255011368,1255011551,CA
1255011552,1255011559,US
1255011560,1255011839,CA
-1255011840,1255039631,US
+1255011840,1255039503,US
+1255039504,1255039519,CA
+1255039520,1255039631,US
1255039632,1255039663,CA
-1255039664,1255047167,US
+1255039664,1255044351,US
+1255044352,1255044479,CA
+1255044480,1255047167,US
1255047168,1255055359,CA
1255055360,1255057887,US
1255057888,1255057919,NL
@@ -23397,31 +20084,31 @@
1255972864,1255981055,CA
1255981056,1256001535,US
1256001536,1256005631,CA
-1256005632,1256054271,US
+1256005632,1256030207,US
+1256030208,1256030463,CA
+1256030464,1256030663,US
+1256030664,1256030671,CA
+1256030672,1256030687,US
+1256030688,1256034303,CA
+1256034304,1256054271,US
1256054272,1256054303,CZ
1256054304,1256057975,US
1256057976,1256057983,BZ
-1256057984,1256058719,US
-1256058720,1256058727,CA
-1256058728,1256063231,US
-1256063232,1256063359,CN
-1256063360,1256079359,US
-1256079360,1256087039,KY
-1256087040,1256087295,GB
-1256087296,1256087551,KY
+1256057984,1256079359,US
+1256079360,1256087551,KY
1256087552,1258767359,US
1258767360,1258767615,US
-1258767616,1263263999,US
-1263264000,1263264127,CA
-1263264128,1263264511,US
-1263264512,1263264767,CA
-1263264768,1263268275,US
+1258767616,1258958095,US
+1258958096,1258958103,CA
+1258958104,1263266815,US
+1263266816,1263266823,CN
+1263266824,1263266855,US
+1263266856,1263266863,CN
+1263266864,1263268275,US
1263268276,1263268340,CA
1263268341,1263268343,US
1263268344,1263268351,CA
-1263268352,1263270143,US
-1263270144,1263270159,CA
-1263270160,1263271423,US
+1263268352,1263271423,US
1263271424,1263271679,CA
1263271680,1264717823,US
1264717824,1264718079,CA
@@ -23429,21 +20116,23 @@
1264718592,1264718847,CA
1264718848,1264719103,US
1264719104,1264719871,CA
-1264719872,1264733759,US
-1264733760,1264733823,IL
-1264733824,1264762879,US
+1264719872,1264762879,US
1264762880,1264763391,CA
1264763392,1264763647,IE
-1264763648,1264766975,CA
+1264763648,1264764927,CA
+1264764928,1264764959,US
+1264764960,1264766975,CA
1264766976,1264968406,US
1264968407,1264968407,US
1264968408,1264980735,US
1264980736,1264980743,CA
-1264980744,1264984575,US
+1264980744,1264982847,US
+1264982848,1264982855,CA
+1264982856,1264982895,US
+1264982896,1264982903,AF
+1264982904,1264984575,US
1264984576,1264984583,VE
-1264984584,1264984799,US
-1264984800,1264984807,AF
-1264984808,1264990975,US
+1264984584,1264990975,US
1264990976,1264991231,NL
1264991232,1266147327,US
1266147328,1266155519,CA
@@ -23453,8 +20142,8 @@
1266498176,1266498303,MA
1266498304,1266516817,US
1266516818,1266516830,IE
-1266516831,1266614591,US
-1266614592,1266614607,CA
+1266516831,1266614599,US
+1266614600,1266614607,CA
1266614608,1266614655,US
1266614656,1266614783,CA
1266614784,1266615551,US
@@ -23511,7 +20200,10 @@
1275711488,1275712511,US
1275712512,1275714047,CA
1275714048,1275714559,US
-1275714560,1275715583,CA
+1275714560,1275714815,CA
+1275714816,1275714831,US
+1275714832,1275714847,IE
+1275714848,1275715583,CA
1275715584,1275756543,US
1275756544,1275772927,CA
1275772928,1275789311,US
@@ -23732,9 +20424,7 @@
1275899952,1275899967,NG
1275899968,1275900271,US
1275900272,1275900287,GB
-1275900288,1275900455,US
-1275900456,1275900479,AU
-1275900480,1275901007,US
+1275900288,1275901007,US
1275901008,1275901023,PT
1275901024,1275901135,US
1275901136,1275901143,IL
@@ -23918,7 +20608,9 @@
1279940944,1279940959,DE
1279940960,1279940991,US
1279940992,1279940999,DE
-1279941000,1279950847,US
+1279941000,1279943679,US
+1279943680,1279943743,PR
+1279943744,1279950847,US
1279950848,1279951103,CA
1279951104,1279951167,US
1279951168,1279951199,CA
@@ -23977,17 +20669,11 @@
1279957180,1279957180,IN
1279957181,1279957184,US
1279957185,1279957185,IN
-1279957186,1279957252,US
-1279957253,1279957253,IN
-1279957254,1279957375,US
-1279957376,1279957383,IN
-1279957384,1279957431,US
+1279957186,1279957431,US
1279957432,1279957439,IN
1279957440,1279957631,US
1279957632,1279957651,IN
-1279957652,1279958305,US
-1279958306,1279958306,IN
-1279958307,1279959551,US
+1279957652,1279959551,US
1279959552,1279959807,CA
1279959808,1279960063,US
1279960064,1279960127,CA
@@ -24016,8 +20702,16 @@
1279963968,1279965183,US
1279965184,1279966207,CA
1279966208,1279967231,US
-1279967232,1279971327,CA
-1279971328,1279971583,US
+1279967232,1279967519,CA
+1279967520,1279967543,US
+1279967544,1279967583,CA
+1279967584,1279967695,US
+1279967696,1279967711,CA
+1279967712,1279969311,US
+1279969312,1279969343,CA
+1279969344,1279969407,US
+1279969408,1279969423,CA
+1279969424,1279971583,US
1279971584,1279972095,CA
1279972096,1279973951,US
1279973952,1279973967,CA
@@ -24050,20 +20744,13 @@
1279977728,1279978111,CA
1279978112,1279978143,US
1279978144,1279978495,CA
-1279978496,1279978683,US
-1279978684,1279978692,IN
-1279978693,1279978693,US
-1279978694,1279978702,IN
-1279978703,1279979424,US
-1279979425,1279979425,IN
-1279979426,1279979559,US
+1279978496,1279979559,US
1279979560,1279979575,CA
1279979576,1279979583,US
1279979584,1279979647,CA
1279979648,1279979775,US
1279979776,1279980063,CA
-1279980064,1279980071,US
-1279980072,1279980079,BV
+1279980064,1279980079,US
1279980080,1279980127,CA
1279980128,1279980135,US
1279980136,1279980159,CA
@@ -24218,9 +20905,7 @@
1286398976,1286399487,US
1286399488,1287611402,US
1287611403,1287611403,US
-1287611404,1287612122,US
-1287612123,1287612136,SE
-1287612137,1287877503,US
+1287611404,1287877503,US
1287877504,1287877567,UM
1287877568,1290252799,US
1290252800,1290252863,GB
@@ -24246,9 +20931,7 @@
1294532608,1294598143,RU
1294598144,1294630911,IT
1294630912,1294663679,LB
-1294663680,1294687743,IT
-1294687744,1294687999,BE
-1294688000,1294696447,IT
+1294663680,1294696447,IT
1294696448,1294729215,RU
1294729216,1294761983,GB
1294761984,1294794751,SY
@@ -24266,7 +20949,9 @@
1295056896,1295122431,GR
1295122432,1295253503,RU
1295253504,1295319039,UA
-1295319040,1295384575,SE
+1295319040,1295349119,SE
+1295349120,1295349247,NO
+1295349248,1295384575,SE
1295384576,1295450111,PT
1295450112,1295515647,PL
1295515648,1295777791,CH
@@ -24276,15 +20961,11 @@
1296105472,1296171007,PL
1296171008,1296203775,DK
1296203776,1296236543,RU
-1296236544,1296241919,IE
-1296241920,1296242175,GB
-1296242176,1296244991,IE
+1296236544,1296244991,IE
1296244992,1296245247,CH
-1296245248,1296246271,IE
-1296246272,1296246527,ES
-1296246528,1296248063,IE
-1296248064,1296248319,GB
-1296248320,1296249023,IE
+1296245248,1296245759,IE
+1296245760,1296246783,ES
+1296246784,1296249023,IE
1296249024,1296249087,GB
1296249088,1296256840,IE
1296256841,1296256848,US
@@ -24505,22 +21186,21 @@
1297868800,1297870847,DE
1297870848,1297872895,FR
1297872896,1297874943,GB
-1297874944,1297880831,CY
-1297880832,1297883135,TR
+1297874944,1297879295,CY
+1297879296,1297879551,TR
+1297879552,1297879807,CY
+1297879808,1297880063,TR
+1297880064,1297881087,CY
+1297881088,1297883135,TR
1297883136,1297891327,PL
1297891328,1297899519,GB
1297899520,1297915903,TR
1297915904,1297924095,BH
1297924096,1297932287,CZ
-1297932288,1297936383,GE
-1297936384,1297936895,RU
-1297936896,1297937407,GE
-1297937408,1297940479,RU
+1297932288,1297940479,GE
1297940480,1297948671,LV
1297948672,1297956863,UA
-1297956864,1297959167,NL
-1297959168,1297959423,CA
-1297959424,1297965055,NL
+1297956864,1297965055,NL
1297965056,1297973247,RU
1297973248,1297981439,GB
1297981440,1297989631,RO
@@ -24586,23 +21266,24 @@
1298956288,1298972671,GB
1298972672,1298989055,RU
1298989056,1299005439,UA
-1299005440,1299008767,NL
-1299008768,1299009791,BE
-1299009792,1299010047,NL
+1299005440,1299009279,NL
+1299009280,1299009535,BE
+1299009536,1299010047,NL
1299010048,1299010815,BE
1299010816,1299011071,RU
1299011072,1299011327,BE
-1299011328,1299013887,NL
-1299013888,1299015167,BE
-1299015168,1299015423,NL
-1299015424,1299015679,BE
-1299015680,1299017727,NL
-1299017728,1299018495,BE
-1299018496,1299018879,NL
-1299018880,1299019775,BE
+1299011328,1299013631,NL
+1299013632,1299014399,BE
+1299014400,1299014911,NL
+1299014912,1299015679,BE
+1299015680,1299016703,NL
+1299016704,1299016959,BE
+1299016960,1299017727,NL
+1299017728,1299018751,BE
+1299018752,1299019007,NL
+1299019008,1299019775,BE
1299019776,1299020031,NL
-1299020032,1299020543,BE
-1299020544,1299021823,NL
+1299020032,1299021823,BE
1299021824,1299038207,CH
1299038208,1299054591,FI
1299054592,1299070975,SE
@@ -24623,8 +21304,8 @@
1305477120,1305739263,ES
1305739264,1306001407,DK
1306001408,1306218495,SE
-1306218496,1306222591,LT
-1306222592,1306263551,SE
+1306218496,1306220543,LT
+1306220544,1306263551,SE
1306263552,1306265599,A2
1306265600,1306266879,KE
1306266880,1306267135,NG
@@ -24658,9 +21339,7 @@
1306492928,1306501119,TR
1306501120,1306509311,NO
1306509312,1306525695,PL
-1306525696,1306721279,ES
-1306721280,1306721535,GB
-1306721536,1307049983,ES
+1306525696,1307049983,ES
1307049984,1307066367,RU
1307066368,1307068869,EU
1307068870,1307068870,CH
@@ -24748,7 +21427,9 @@
1307635712,1307637247,EE
1307637248,1307637759,LV
1307637760,1307638271,EE
-1307638272,1307639807,LT
+1307638272,1307638527,LT
+1307638528,1307639551,EE
+1307639552,1307639807,LT
1307639808,1307643903,IT
1307643904,1307652095,RU
1307652096,1307656191,ES
@@ -24756,7 +21437,7 @@
1307660288,1307664383,BE
1307664384,1307668479,NO
1307668480,1307672575,ES
-1307672576,1307676671,DK
+1307672576,1307676671,SE
1307676672,1307680767,RU
1307680768,1307684863,LV
1307684864,1307688959,GB
@@ -24779,17 +21460,15 @@
1307742208,1307746303,HU
1307746304,1307750399,UA
1307750400,1307754495,IT
-1307754496,1307756856,GB
-1307756857,1307756857,FR
-1307756858,1307758591,GB
+1307754496,1307756799,GB
+1307756800,1307757055,FR
+1307757056,1307758591,GB
1307758592,1307762687,SM
1307762688,1307766783,PL
1307766784,1307770879,GB
1307770880,1307774975,RU
1307774976,1307779071,RS
-1307779072,1307780607,DK
-1307780608,1307780863,DE
-1307780864,1307787263,DK
+1307779072,1307787263,DK
1307787264,1307791359,MT
1307791360,1307795455,KZ
1307795456,1307803647,RU
@@ -24820,9 +21499,7 @@
1307893760,1307897855,SE
1307897856,1307901951,AT
1307901952,1307906047,JO
-1307906048,1307906815,CH
-1307906816,1307907071,GB
-1307907072,1307910143,CH
+1307906048,1307910143,CH
1307910144,1307914239,DE
1307914240,1307918335,NL
1307918336,1307922431,GB
@@ -24838,9 +21515,12 @@
1307963392,1307967487,PL
1307967488,1307971583,IT
1307971584,1307980543,GB
-1307980544,1307981311,ZW
-1307981312,1307983359,GB
-1307983360,1307983871,ZA
+1307980544,1307980799,ZW
+1307980800,1307981055,GB
+1307981056,1307981311,ZW
+1307981312,1307981567,GB
+1307981568,1307981823,ZW
+1307981824,1307983871,GB
1307983872,1307984383,NG
1307984384,1307987967,LB
1307987968,1307992063,FR
@@ -24879,9 +21559,7 @@
1308098560,1308360703,NL
1308360704,1308622847,PL
1308622848,1308884991,HR
-1308884992,1309141759,IT
-1309141760,1309142015,GB
-1309142016,1309147135,IT
+1308884992,1309147135,IT
1309147136,1309409279,PL
1309409280,1309671423,IT
1309671424,1309933567,IE
@@ -24897,7 +21575,6 @@
1310212096,1310214143,HU
1310214144,1310216191,UA
1310216192,1310218239,IT
-1310218240,1310220287,NO
1310220288,1310222335,NL
1310222336,1310224383,RS
1310224384,1310226431,GB
@@ -24923,9 +21600,7 @@
1310326784,1310343167,NO
1310343168,1310359551,IT
1310359552,1310392319,UA
-1310392320,1310401023,NL
-1310401024,1310401279,ES
-1310401280,1310408703,NL
+1310392320,1310408703,NL
1310408704,1310425087,FI
1310425088,1310457855,UA
1310457856,1310474239,PL
@@ -25013,8 +21688,8 @@
1311301632,1311303679,TR
1311303680,1311307775,GB
1311307776,1311309823,IS
-1311309824,1311310079,GB
-1311310080,1311310847,GG
+1311309824,1311310335,GB
+1311310336,1311310847,GG
1311310848,1311311103,GB
1311311104,1311311359,GG
1311311360,1311311871,GB
@@ -25038,9 +21713,7 @@
1311350784,1311352831,FR
1311352832,1311354879,SK
1311354880,1311356927,RU
-1311356928,1311358207,FR
-1311358208,1311358463,PL
-1311358464,1311358975,FR
+1311356928,1311358975,FR
1311358976,1311361023,RU
1311361024,1311363071,NL
1311363072,1311365119,GB
@@ -25055,7 +21728,9 @@
1311506432,1311637503,CZ
1311637504,1312292863,DE
1312292864,1312817151,LT
-1312817152,1313865727,SE
+1312817152,1313192191,SE
+1313192192,1313192447,DK
+1313192448,1313865727,SE
1313865728,1313931263,CZ
1313931264,1313996799,RU
1313996800,1314062335,SE
@@ -25077,9 +21752,7 @@
1314783232,1314848767,DE
1314848768,1315045375,RO
1315045376,1315176447,SK
-1315176448,1315184383,QA
-1315184384,1315184639,US
-1315184640,1315307519,QA
+1315176448,1315307519,QA
1315307520,1315438591,CZ
1315438592,1315504127,AT
1315504128,1315569663,GB
@@ -25097,7 +21770,15 @@
1315745792,1315749887,CZ
1315749888,1315753983,RU
1315753984,1315758079,KZ
-1315758080,1315762175,RE
+1315758080,1315759103,RE
+1315759104,1315759871,FR
+1315759872,1315760383,RE
+1315760384,1315760895,FR
+1315760896,1315761023,RE
+1315761024,1315761407,FR
+1315761408,1315761663,RE
+1315761664,1315761919,FR
+1315761920,1315762175,RE
1315762176,1315766271,BG
1315766272,1315769087,NL
1315769088,1315769343,EU
@@ -25136,7 +21817,7 @@
1315893248,1315897343,RU
1315897344,1315901439,IR
1315901440,1315905535,UA
-1315905536,1315909631,SI
+1315905536,1315909631,BA
1315909632,1315913727,AZ
1315913728,1315917823,DE
1315917824,1315921919,RU
@@ -25147,9 +21828,7 @@
1315938304,1315942399,DK
1315942400,1315946495,UA
1315946496,1315946751,GB
-1315946752,1315947391,GG
-1315947392,1315947487,GB
-1315947488,1315950591,GG
+1315946752,1315950591,GG
1315950592,1315954687,UA
1315954688,1315958783,DE
1315958784,1315962879,RU
@@ -25168,9 +21847,7 @@
1317371904,1317404671,PL
1317404672,1317437439,IT
1317437440,1317470207,HR
-1317470208,1317473279,TR
-1317473280,1317473791,GB
-1317473792,1317502975,TR
+1317470208,1317502975,TR
1317502976,1317535743,IE
1317535744,1317552127,GB
1317552128,1317568511,ES
@@ -25181,9 +21858,7 @@
1317625856,1317627903,DE
1317627904,1317629951,RU
1317629952,1317634047,GB
-1317634048,1317646847,IE
-1317646848,1317647103,GB
-1317647104,1317650431,IE
+1317634048,1317650431,IE
1317650432,1317666815,PT
1317666816,1317683199,GB
1317683200,1317699583,DE
@@ -25218,16 +21893,19 @@
1318658048,1318666239,SI
1318666240,1318674431,DE
1318674432,1318682623,HU
-1318682624,1318687231,RU
-1318687232,1318687487,CZ
-1318687488,1318690815,RU
+1318682624,1318690815,RU
1318690816,1318699007,DK
1318699008,1318707199,IE
-1318707200,1318708223,SE
-1318708224,1318708735,FR
+1318707200,1318707455,FR
+1318707456,1318708479,SE
+1318708480,1318708735,FR
1318708736,1318709247,SE
1318709248,1318711295,FR
-1318711296,1318715391,SE
+1318711296,1318711807,SE
+1318711808,1318712319,FR
+1318712320,1318713023,SE
+1318713024,1318713119,FR
+1318713120,1318715391,SE
1318715392,1318723583,BG
1318723584,1318731775,IR
1318731776,1318739967,PL
@@ -25242,33 +21920,37 @@
1318813696,1318821887,FR
1318821888,1318838271,RU
1318838272,1318839039,GB
-1318839040,1318839807,IE
-1318839808,1318840959,GB
+1318839040,1318840319,IE
+1318840320,1318840959,GB
1318840960,1318841078,IE
1318841079,1318841079,GB
1318841080,1318841087,IE
-1318841088,1318841599,GB
-1318841600,1318841855,IE
+1318841088,1318841471,GB
+1318841472,1318841855,IE
1318841856,1318842111,GB
1318842112,1318842367,IE
-1318842368,1318846463,GB
+1318842368,1318842623,GB
+1318842624,1318842879,IE
+1318842880,1318846463,GB
1318846464,1318854655,NO
1318854656,1318862847,CZ
1318862848,1318871039,GB
1318871040,1318879231,DK
1318879232,1318887423,CZ
1318887424,1318895615,PL
-1318895616,1318897663,SE
-1318897664,1318901247,DK
-1318901248,1318901503,SE
-1318901504,1318903807,DK
+1318895616,1318898687,SE
+1318898688,1318899199,DK
+1318899200,1318900735,SE
+1318900736,1318903807,DK
1318903808,1318911999,RU
1318912000,1318920191,MK
1318920192,1318928383,IR
1318928384,1318936575,LT
1318936576,1318944767,DK
-1318944768,1318959103,CZ
-1318959104,1318960895,PL
+1318944768,1318958079,CZ
+1318958080,1318959615,PL
+1318959616,1318960639,CZ
+1318960640,1318960895,PL
1318960896,1318961151,CZ
1318961152,1318969343,GB
1318969344,1318977535,RU
@@ -25282,9 +21964,7 @@
1319043072,1319051263,FR
1319051264,1319059455,UA
1319059456,1319067647,PL
-1319067648,1319074303,DE
-1319074304,1319074559,RU
-1319074560,1319075839,DE
+1319067648,1319075839,DE
1319075840,1319084031,BG
1319084032,1319092223,KW
1319092224,1319100415,IT
@@ -25306,8 +21986,7 @@
1331836928,1331838975,FR
1331838976,1331841023,ES
1331841024,1331843071,CZ
-1331843072,1331844863,GB
-1331844864,1331845119,FR
+1331843072,1331845119,GB
1331845120,1331847167,RU
1331847168,1331849215,FR
1331849216,1331851263,BG
@@ -25366,7 +22045,9 @@
1332215808,1332346879,RU
1332346880,1332412415,AL
1332412416,1332477951,GR
-1332477952,1332609023,ES
+1332477952,1332489215,ES
+1332489216,1332489727,US
+1332489728,1332609023,ES
1332609024,1332613119,PL
1332613120,1332617215,UA
1332617216,1332621311,CZ
@@ -25409,8 +22090,7 @@
1334091776,1334099967,LT
1334099968,1334108159,IR
1334108160,1334116351,BE
-1334116352,1334116863,AX
-1334116864,1334123391,FI
+1334116352,1334123391,FI
1334123392,1334123519,AX
1334123520,1334124543,FI
1334124544,1334132735,DE
@@ -25439,18 +22119,14 @@
1334345728,1334378495,RU
1334378496,1334411263,IT
1334411264,1334444031,RU
-1334444032,1334485503,SE
-1334485504,1334485887,DK
-1334485888,1334486655,SE
-1334486656,1334488319,DK
+1334444032,1334484991,SE
+1334484992,1334487039,DK
+1334487040,1334487295,SE
+1334487296,1334488319,DK
1334488320,1334488575,SE
1334488576,1334489087,DK
-1334489088,1334501631,SE
-1334501632,1334504703,DK
-1334504704,1334504959,SE
-1334504960,1334508799,DK
-1334508800,1334509055,SE
-1334509056,1334509567,DK
+1334489088,1334501375,SE
+1334501376,1334509567,DK
1334509568,1334542335,PL
1334542336,1334575103,RU
1334575104,1334579199,UA
@@ -25467,20 +22143,20 @@
1334624256,1334625535,GB
1334625536,1334625791,AP
1334625792,1334626303,AU
-1334626304,1334628351,GB
+1334626304,1334627839,GB
+1334627840,1334628095,NO
+1334628096,1334628351,GB
1334628352,1334632447,IE
1334632448,1334636543,KZ
1334636544,1334640639,RU
1334640640,1334644735,FR
-1334644736,1334644991,DE
-1334644992,1334645051,LB
+1334644736,1334645051,DE
1334645052,1334645052,A2
-1334645053,1334645222,LB
+1334645053,1334645222,DE
1334645223,1334645223,US
-1334645224,1334645226,LB
+1334645224,1334645226,DE
1334645227,1334645227,US
-1334645228,1334645247,LB
-1334645248,1334648831,DE
+1334645228,1334648831,DE
1334648832,1334652927,GB
1334652928,1334661119,RU
1334661120,1334665215,CH
@@ -25488,9 +22164,9 @@
1334669312,1334673407,MK
1334673408,1334677503,GB
1334677504,1334681599,FI
-1334681600,1334682371,DE
-1334682372,1334682375,FR
-1334682376,1334682879,DE
+1334681600,1334682367,DE
+1334682368,1334682623,FR
+1334682624,1334682879,DE
1334682880,1334683135,DK
1334683136,1334685695,DE
1334685696,1334689791,IT
@@ -25505,7 +22181,9 @@
1334718464,1334722559,KZ
1334722560,1334726655,NL
1334726656,1334729983,RU
-1334729984,1334730751,KZ
+1334729984,1334730239,KZ
+1334730240,1334730495,RU
+1334730496,1334730751,KZ
1334730752,1334734847,RU
1334734848,1334738943,LT
1334738944,1334743039,CH
@@ -25538,16 +22216,16 @@
1336147968,1336279039,RU
1336279040,1336410111,GR
1336410112,1336541183,PT
-1336541184,1336543231,SA
+1336541184,1336542207,SA
+1336542208,1336542463,US
+1336542464,1336543231,SA
1336543232,1336545279,ES
1336545280,1336547327,SE
1336547328,1336549375,RU
1336549376,1336551423,IM
1336551424,1336553471,GB
1336553472,1336555519,SA
-1336555520,1336556031,BE
-1336556032,1336556287,SE
-1336556288,1336557567,BE
+1336555520,1336557567,BE
1336557568,1336559615,ES
1336559616,1336561663,GB
1336561664,1336563711,NO
@@ -25557,7 +22235,6 @@
1336571904,1336573951,PL
1336573952,1336575999,DK
1336576000,1336578047,RU
-1336578048,1336580095,IR
1336580096,1336584191,RU
1336584192,1336586239,TR
1336586240,1336588287,GB
@@ -25579,7 +22256,9 @@
1336619008,1336621055,AL
1336621056,1336623103,DE
1336623104,1336625151,BE
-1336625152,1336627199,IE
+1336625152,1336626259,IE
+1336626260,1336626263,GB
+1336626264,1336627199,IE
1336627200,1336629247,NO
1336629248,1336631295,DE
1336631296,1336633343,IS
@@ -25625,81 +22304,86 @@
1337458688,1337982975,PL
1337982976,1342177279,DE
1342177280,1342701567,GB
-1342701568,1342707455,MQ
-1342707456,1342707711,FR
-1342707712,1342708223,MQ
-1342708224,1342708479,FR
-1342708480,1342708735,MQ
-1342708736,1342709247,FR
-1342709248,1342714111,MQ
-1342714112,1342714623,FR
-1342714624,1342715903,MQ
-1342715904,1342716159,FR
-1342716160,1342716671,MQ
-1342716672,1342716927,FR
-1342716928,1342717951,MQ
-1342717952,1342719743,GP
-1342719744,1342719999,FR
-1342720000,1342722559,GP
+1342701568,1342701823,FR
+1342701824,1342703103,MQ
+1342703104,1342703359,FR
+1342703360,1342705663,MQ
+1342705664,1342705919,FR
+1342705920,1342712319,MQ
+1342712320,1342712575,FR
+1342712576,1342714879,MQ
+1342714880,1342715135,FR
+1342715136,1342715647,MQ
+1342715648,1342715903,FR
+1342715904,1342716671,MQ
+1342716672,1342717183,FR
+1342717184,1342717951,MQ
+1342717952,1342722559,GP
1342722560,1342722815,FR
-1342722816,1342734335,GP
-1342734336,1342736383,RE
-1342736384,1342736639,FR
-1342736640,1342742015,RE
-1342742016,1342742271,FR
-1342742272,1342746111,RE
+1342722816,1342727679,GP
+1342727680,1342727935,FR
+1342727936,1342733311,GP
+1342733312,1342733567,FR
+1342733568,1342734335,GP
+1342734336,1342735615,RE
+1342735616,1342735871,FR
+1342735872,1342736639,RE
+1342736640,1342736895,FR
+1342736896,1342737407,RE
+1342737408,1342737663,FR
+1342737664,1342741247,RE
+1342741248,1342741503,FR
+1342741504,1342743551,RE
+1342743552,1342743807,FR
+1342743808,1342746111,RE
1342746112,1342746367,FR
-1342746368,1342748671,RE
+1342746368,1342747135,RE
+1342747136,1342747391,FR
+1342747392,1342747647,RE
+1342747648,1342748159,FR
+1342748160,1342748671,RE
1342748672,1342748927,FR
1342748928,1342750463,RE
1342750464,1342750719,FR
-1342750720,1342751487,RE
-1342751488,1342751743,FR
-1342751744,1342752255,RE
-1342752256,1342752511,FR
-1342752512,1342753535,RE
+1342750720,1342753535,RE
1342753536,1342753791,FR
1342753792,1342758911,RE
-1342758912,1342759679,GF
-1342759680,1342759935,FR
-1342759936,1342760447,GF
-1342760448,1342760959,FR
-1342760960,1342762239,GF
+1342758912,1342759423,GF
+1342759424,1342761727,FR
+1342761728,1342762239,GF
1342762240,1342763007,FR
-1342763008,1342767103,GF
+1342763008,1342765055,GF
+1342765056,1342765823,FR
+1342765824,1342767103,GF
1342767104,1342996479,FR
1342996480,1342996991,GF
1342996992,1342997247,FR
-1342997248,1342997759,GF
-1342997760,1342998015,FR
-1342998016,1342998271,GF
-1342998272,1342998783,FR
-1342998784,1342999039,GF
-1342999040,1342999295,FR
-1342999296,1343000575,GF
-1343000576,1343000831,FR
-1343000832,1343005695,GF
+1342997248,1342998015,GF
+1342998016,1342998271,FR
+1342998272,1342998527,GF
+1342998528,1342998783,FR
+1342998784,1343003391,GF
+1343003392,1343003647,FR
+1343003648,1343005695,GF
1343005696,1343005951,FR
1343005952,1343006719,GF
-1343006720,1343007231,FR
-1343007232,1343008511,GF
+1343006720,1343006975,FR
+1343006976,1343008511,GF
1343008512,1343008767,FR
-1343008768,1343012863,GF
+1343008768,1343011327,GF
+1343011328,1343011583,FR
+1343011584,1343012351,GF
+1343012352,1343012607,FR
+1343012608,1343012863,GF
1343012864,1343017983,FR
-1343017984,1343018239,RE
-1343018240,1343018272,FR
-1343018273,1343018273,RE
-1343018274,1343225855,FR
+1343017984,1343018495,RE
+1343018496,1343225855,FR
1343225856,1343475711,IT
1343475712,1343475967,US
1343475968,1343605503,IT
1343605504,1343605759,US
-1343605760,1343746559,IT
-1343746560,1343746815,US
-1343746816,1343750143,IT
-1343750144,1344566271,ES
-1344566272,1344566527,US
-1344566528,1344798719,ES
+1343605760,1343750143,IT
+1343750144,1344798719,ES
1344798720,1345323007,GB
1345323008,1345847295,PL
1345847296,1345978367,NL
@@ -25748,7 +22432,6 @@
1346539520,1346543615,RU
1346543616,1346547711,FI
1346547712,1346551807,IR
-1346551808,1346555903,DE
1346555904,1346559999,IT
1346560000,1346564095,LI
1346564096,1346568191,EE
@@ -25756,7 +22439,9 @@
1346572288,1346576383,DE
1346576384,1346580479,DK
1346580480,1346584575,RU
-1346584576,1346592767,EU
+1346584576,1346587135,EU
+1346587136,1346587391,US
+1346587392,1346592767,EU
1346592768,1346596863,ES
1346596864,1346600959,IT
1346605056,1346609151,CH
@@ -25786,13 +22471,13 @@
1346740224,1346744319,FI
1346744320,1346748415,RU
1346748416,1346752511,DE
-1346752512,1346752767,RE
-1346752768,1346753023,FR
-1346753024,1346753151,RE
-1346753152,1346753535,FR
-1346753536,1346753791,RE
-1346753792,1346754559,FR
-1346754560,1346756607,RE
+1346752512,1346753535,FR
+1346753536,1346754047,RE
+1346754048,1346754559,FR
+1346754560,1346754815,RE
+1346754816,1346755071,FR
+1346755072,1346755583,RE
+1346755584,1346756607,FR
1346756608,1346760703,SE
1346760704,1346764799,IR
1346764800,1346768895,DK
@@ -25879,23 +22564,13 @@
1347166208,1347174399,GR
1347174400,1347182591,IT
1347182592,1347186687,RU
-1347186688,1347187791,GB
-1347187792,1347187807,US
-1347187808,1347190783,GB
+1347186688,1347190783,GB
1347190784,1347194879,RU
1347194880,1347198975,SE
1347198976,1347203071,QA
1347203072,1347207167,RU
1347207168,1347215359,GB
-1347215360,1347219644,RU
-1347219645,1347219645,KW
-1347219646,1347219967,RU
-1347219968,1347220479,US
-1347220480,1347222015,RU
-1347222016,1347222271,US
-1347222272,1347222527,RU
-1347222528,1347222783,US
-1347222784,1347223551,RU
+1347215360,1347223551,RU
1347223552,1347227647,GB
1347227648,1347231743,DE
1347231744,1347235839,UA
@@ -26115,9 +22790,7 @@
1347296265,1347296272,US
1347296273,1347297279,SE
1347297280,1347305471,UA
-1347305472,1347308927,AL
-1347308928,1347309055,IT
-1347309056,1347309567,AL
+1347305472,1347309567,AL
1347309568,1347313663,DE
1347313664,1347321855,RU
1347321856,1347322111,KW
@@ -26145,8 +22818,9 @@
1347375616,1347375871,EU
1347375872,1347379199,GB
1347379200,1347383295,NL
-1347383296,1347387135,EE
-1347387136,1347387391,FI
+1347383296,1347385599,EE
+1347385600,1347385855,FR
+1347385856,1347387391,EE
1347387392,1347391487,GB
1347391488,1347395583,LB
1347395584,1347399679,SE
@@ -26166,11 +22840,7 @@
1347452928,1347455930,BG
1347455931,1347455931,BG
1347455932,1347461119,BG
-1347461120,1347464618,AL
-1347464619,1347464619,US
-1347464620,1347464703,AL
-1347464704,1347464959,US
-1347464960,1347465215,AL
+1347461120,1347465215,AL
1347465216,1347469311,GB
1347469312,1347473407,RU
1347473408,1347477503,UZ
@@ -26247,13 +22917,13 @@
1347837952,1347846143,RO
1347846144,1347850239,NO
1347850240,1347854335,IT
-1347854336,1347854591,EU
-1347854592,1347854847,DE
-1347854848,1347855871,EU
-1347855872,1347856127,DE
-1347856128,1347862015,EU
-1347862016,1347862271,DE
-1347862272,1347862527,EU
+1347854336,1347854599,EU
+1347854600,1347854607,DE
+1347854608,1347854655,EU
+1347854656,1347854719,DE
+1347854720,1347855615,EU
+1347855616,1347856127,DE
+1347856128,1347862527,EU
1347862528,1347866623,CH
1347866624,1347870719,NO
1347870720,1347874815,AM
@@ -26289,8 +22959,9 @@
1347989504,1347993599,FI
1347993600,1348001791,GB
1348001792,1348005887,ES
-1348005888,1348009471,BH
-1348009472,1348009983,US
+1348005888,1348009215,BH
+1348009216,1348009471,US
+1348009472,1348009983,BH
1348009984,1348014079,RU
1348014080,1348018175,DK
1348018176,1348026367,NO
@@ -26300,8 +22971,8 @@
1348038656,1348042751,FR
1348042752,1348050943,RU
1348050944,1348055039,SE
-1348055040,1348057599,LB
-1348057600,1348058111,NG
+1348055040,1348057087,LB
+1348057088,1348058111,NG
1348058112,1348059135,LB
1348059136,1348063231,RU
1348063232,1348067327,CH
@@ -26315,9 +22986,7 @@
1348104192,1348108287,RU
1348108288,1348112383,CZ
1348112384,1348116479,DE
-1348116480,1348117503,JO
-1348117504,1348117759,CN
-1348117760,1348120575,JO
+1348116480,1348120575,JO
1348120576,1348124671,RU
1348124672,1348128767,GB
1348128768,1348132863,SI
@@ -26340,16 +23009,15 @@
1348198400,1348202495,NO
1348202496,1348206591,EU
1348206592,1348218879,RU
-1348218880,1348220159,US
+1348218880,1348219647,DE
+1348219648,1348220159,US
1348220160,1348222975,DE
1348222976,1348231167,LU
1348231168,1348235263,RU
1348235264,1348239359,AT
-1348239360,1348241663,SE
-1348241664,1348241919,NO
-1348241920,1348242175,SE
-1348242176,1348242943,NO
-1348242944,1348243455,SE
+1348239360,1348241407,SE
+1348241408,1348242431,NO
+1348242432,1348243455,SE
1348243456,1348247551,GB
1348247552,1348251647,RU
1348251648,1348255743,GE
@@ -26409,44 +23077,33 @@
1348993024,1349124095,IT
1349124096,1349255167,GR
1349255168,1349517311,AT
-1349517312,1349763071,NL
+1349517312,1349584543,NL
+1349584544,1349584551,GB
+1349584552,1349763071,NL
1349763072,1349771263,RU
1349771264,1349779455,NL
1349779456,1349910527,IT
1349910528,1350041599,FR
-1350041600,1350159935,AT
-1350159936,1350159967,DE
-1350159968,1350215679,AT
+1350041600,1350215679,AT
1350215680,1350215935,IQ
-1350215936,1350216703,US
-1350216704,1350216959,AT
+1350215936,1350216959,AT
1350216960,1350217215,IQ
-1350217216,1350217471,US
+1350217216,1350217471,AT
1350217472,1350217727,IQ
-1350217728,1350296063,AT
-1350296064,1350296575,US
-1350296576,1350303743,AT
+1350217728,1350303743,AT
1350303744,1350434815,FR
1350434816,1350565887,NL
-1350565888,1351950079,DE
-1351950080,1351950335,GB
-1351950336,1351972679,DE
-1351972680,1351972687,CH
-1351972688,1351998679,DE
+1350565888,1351998679,DE
1351998680,1351998687,TH
1351998688,1352031618,DE
1352031619,1352031619,EU
1352031620,1352069631,DE
-1352069632,1352069887,US
-1352069888,1352151063,DE
-1352151064,1352151071,US
-1352151072,1352271543,DE
-1352271544,1352271551,US
-1352271552,1352276991,DE
-1352276992,1352277503,US
-1352277504,1352293375,DE
-1352293376,1352293631,GB
-1352293632,1352294911,DE
+1352069632,1352069759,US
+1352069760,1352069799,DE
+1352069800,1352069887,US
+1352069888,1352293471,DE
+1352293472,1352293479,GB
+1352293480,1352294911,DE
1352294912,1352295167,EU
1352295168,1352299775,DE
1352299776,1352300031,US
@@ -26454,25 +23111,24 @@
1352405504,1352405759,US
1352405760,1352412159,DE
1352412160,1352412415,FR
-1352412416,1352412671,DE
-1352412672,1352412799,FR
-1352412800,1352663039,DE
+1352412416,1352663039,DE
1352663040,1353187327,DK
-1353187328,1353267711,GB
+1353187328,1353266959,GB
+1353266960,1353266975,IE
+1353266976,1353267711,GB
1353267712,1353267967,IE
-1353267968,1353272319,GB
-1353272320,1353273343,ES
-1353273344,1353274367,GB
-1353274368,1353274623,ES
-1353274624,1353274879,GB
-1353274880,1353275391,ES
-1353275392,1353277439,GB
-1353277440,1353278463,CH
-1353278464,1353279743,GB
-1353279744,1353279999,IT
-1353280000,1353282047,GB
-1353282048,1353282303,IT
-1353282304,1353286143,GB
+1353267968,1353272575,GB
+1353272576,1353272831,ES
+1353272832,1353273087,GB
+1353273088,1353273343,ES
+1353273344,1353274623,GB
+1353274624,1353274879,ES
+1353274880,1353275015,GB
+1353275016,1353275135,ES
+1353275136,1353277439,GB
+1353277440,1353279487,CH
+1353279488,1353279999,IT
+1353280000,1353286143,GB
1353286144,1353286255,EU
1353286256,1353286271,GB
1353286272,1353286303,EU
@@ -26480,14 +23136,18 @@
1353286312,1353286397,EU
1353286398,1353286398,GB
1353286399,1353286399,EU
-1353286400,1353287327,GB
-1353287328,1353287359,IE
-1353287360,1353287679,GB
-1353287680,1353289471,IE
-1353289472,1353312255,GB
-1353312256,1353312511,CH
-1353312512,1353315327,GB
-1353315328,1353316095,ES
+1353286400,1353288191,GB
+1353288192,1353288703,IE
+1353288704,1353289215,GB
+1353289216,1353289471,IE
+1353289472,1353298687,GB
+1353298688,1353298943,SE
+1353298944,1353312767,GB
+1353312768,1353313023,IT
+1353313024,1353313535,GB
+1353313536,1353313791,IE
+1353313792,1353315839,GB
+1353315840,1353316095,ES
1353316096,1353318399,GB
1353318400,1353383935,SE
1353383936,1353449471,DE
@@ -26528,9 +23188,7 @@
1356201984,1356333055,FR
1356333056,1356464127,SE
1356464128,1356595199,CH
-1356595200,1356714111,FI
-1356714112,1356714239,AX
-1356714240,1356857343,FI
+1356595200,1356857343,FI
1356857344,1356922879,ES
1356922880,1356988415,GB
1356988416,1357053951,DE
@@ -26548,21 +23206,19 @@
1357323776,1357342975,EU
1357342976,1357343231,GB
1357343232,1357360127,EU
-1357360128,1357360273,GB
-1357360274,1357360274,FR
-1357360275,1357360383,GB
+1357360128,1357360271,GB
+1357360272,1357360279,FR
+1357360280,1357360383,GB
1357360384,1357361151,EU
1357361152,1357363199,GB
1357363200,1357366015,EU
1357366016,1357366271,KM
-1357366272,1357366783,EU
-1357366784,1357367039,BE
-1357367040,1357371391,EU
+1357366272,1357371391,EU
1357371392,1357371647,GB
-1357371648,1357373183,EU
-1357373184,1357373439,GB
-1357373440,1357381631,EU
-1357381632,1357414399,NO
+1357371648,1357381631,EU
+1357381632,1357386143,NO
+1357386144,1357386147,DK
+1357386148,1357414399,NO
1357414400,1357447167,LV
1357447168,1357479935,IE
1357479936,1357512703,LV
@@ -26584,7 +23240,12 @@
1357840384,1357873151,NO
1357873152,1357883391,EU
1357883392,1357883647,FR
-1357883648,1357902365,EU
+1357883648,1357883903,SE
+1357883904,1357892863,EU
+1357892864,1357893119,NL
+1357893120,1357899007,EU
+1357899008,1357899263,DE
+1357899264,1357902365,EU
1357902366,1357902366,NO
1357902367,1357905919,EU
1357905920,1357910015,LT
@@ -26601,16 +23262,14 @@
1357967360,1357971455,RU
1357971456,1357975551,KZ
1357975552,1357979647,AT
-1357979648,1357982463,KZ
-1357982464,1357982719,GB
-1357982720,1357983743,KZ
+1357979648,1357983743,KZ
1357983744,1357985791,GB
1357985792,1357987839,DE
1357987840,1357991935,GB
1357991936,1357996031,NO
1357996032,1358000127,CH
1358000128,1358004223,LI
-1358004224,1358008319,PL
+1358004224,1358006271,PL
1358008320,1358012415,BH
1358012416,1358016511,IT
1358016512,1358020607,GE
@@ -26641,13 +23300,12 @@
1358151680,1358155775,DE
1358155776,1358159871,CH
1358159872,1358163967,ES
-1358163968,1358165503,MQ
-1358165504,1358166015,FR
-1358166016,1358168063,MQ
+1358163968,1358166015,FR
+1358166016,1358167295,MQ
+1358167296,1358167807,FR
+1358167808,1358168063,MQ
1358168064,1358172159,GB
-1358172160,1358172415,GR
-1358172416,1358172671,CY
-1358172672,1358176255,GR
+1358172160,1358176255,GR
1358176256,1358180351,RU
1358180352,1358184447,ES
1358184448,1358192639,SE
@@ -26657,7 +23315,11 @@
1358209024,1358213119,IL
1358213120,1358217215,GB
1358217216,1358221311,SE
-1358221312,1358225407,DE
+1358221312,1358223615,DE
+1358223616,1358223871,GB
+1358223872,1358225027,DE
+1358225028,1358225028,IT
+1358225029,1358225407,DE
1358225408,1358229503,RU
1358229504,1358233599,DE
1358233600,1358237695,ES
@@ -26726,12 +23388,12 @@
1358528512,1358536703,RU
1358536704,1358540799,HU
1358540800,1358548991,RU
-1358548992,1358550015,NL
-1358550016,1358550527,JO
-1358550528,1358551039,NL
+1358548992,1358551039,NL
1358551040,1358553087,GB
1358553088,1358557183,UA
-1358557184,1358561279,IE
+1358557184,1358557375,IE
+1358557376,1358557407,GB
+1358557408,1358561279,IE
1358561280,1358569471,CZ
1358569472,1358573567,NG
1358573568,1358577663,LV
@@ -26744,11 +23406,11 @@
1358610432,1358614527,IR
1358614528,1358622719,RU
1358622720,1358626815,SK
-1358626816,1358627925,GB
+1358626816,1358627839,GB
+1358627840,1358627925,US
1358627926,1358627926,A2
-1358627927,1358628095,GB
-1358628096,1358628351,US
-1358628352,1358635007,GB
+1358627927,1358628863,US
+1358628864,1358635007,GB
1358635008,1358639103,TR
1358639104,1358643199,RU
1358643200,1358647295,ES
@@ -26756,14 +23418,11 @@
1358651392,1358655487,FR
1358655488,1358667775,RU
1358667776,1358668543,GB
-1358668544,1358669823,PT
-1358669824,1358671359,GB
+1358668544,1358668799,PT
+1358668800,1358671359,GB
1358671360,1358671615,PT
1358671616,1358675967,GB
-1358675968,1358677247,SE
-1358677248,1358677759,DK
-1358677760,1358679807,SE
-1358679808,1358680063,DK
+1358675968,1358680063,SE
1358680064,1358688255,RU
1358688256,1358692351,CZ
1358692352,1358696447,PL
@@ -26771,9 +23430,7 @@
1358700544,1358704639,AT
1358704640,1358708735,HU
1358708736,1358712831,GB
-1358712832,1358714007,NL
-1358714008,1358714015,SG
-1358714016,1358716927,NL
+1358712832,1358716927,NL
1358716928,1358721023,DE
1358721024,1358725119,GB
1358725120,1358733311,RU
@@ -26810,27 +23467,24 @@
1358860288,1358860835,GB
1358860836,1358860836,EU
1358860837,1358861311,GB
-1358861312,1358861567,DE
-1358861568,1358862847,GB
+1358861312,1358861567,EU
+1358861568,1358861823,GB
+1358861824,1358862079,FR
+1358862080,1358862847,GB
1358862848,1358862898,EU
1358862899,1358862899,NO
1358862900,1358863103,EU
-1358863104,1358863135,DE
-1358863136,1358863167,CH
-1358863168,1358863359,DE
+1358863104,1358863359,CH
1358863360,1358864383,GB
1358864384,1358872575,CH
1358872576,1358876671,IT
1358876672,1358880767,LV
-1358880768,1358884863,GB
1358884864,1358888959,SE
1358888960,1358893055,DE
1358893056,1358897151,RU
-1358897152,1358898291,GB
-1358898292,1358898292,US
-1358898293,1358898943,GB
-1358898944,1358899199,US
-1358899200,1358899711,GB
+1358897152,1358898975,GB
+1358898976,1358898991,US
+1358898992,1358899711,GB
1358899712,1358899967,US
1358899968,1358900223,KE
1358900224,1358905343,GB
@@ -26881,9 +23535,13 @@
1359413248,1359429631,DE
1359429632,1359446015,LT
1359446016,1359462399,DK
-1359462400,1359468031,DE
+1359462400,1359467007,DE
+1359467008,1359467263,US
+1359467264,1359468031,DE
1359468032,1359468287,US
-1359468288,1359470591,DE
+1359468288,1359468543,DE
+1359468544,1359468799,SG
+1359468800,1359470591,DE
1359470592,1359478783,CH
1359478784,1359511551,TR
1359511552,1359544319,SE
@@ -26928,7 +23586,9 @@
1360113664,1360117759,HU
1360117760,1360121855,FI
1360121856,1360125951,DE
-1360125952,1360130047,SI
+1360125952,1360129023,SI
+1360129024,1360129279,BA
+1360129280,1360130047,SI
1360130048,1360134143,IE
1360134144,1360138239,NL
1360138240,1360142335,CH
@@ -26954,9 +23614,7 @@
1360232448,1360236543,RU
1360236544,1360240639,AT
1360240640,1360244735,ES
-1360244736,1360251391,GB
-1360251392,1360251647,ZA
-1360251648,1360257023,GB
+1360244736,1360257023,GB
1360257024,1360265215,DK
1360265216,1360269311,GB
1360269312,1360273407,KG
@@ -27036,9 +23694,8 @@
1360613376,1360617471,SE
1360617472,1360621567,IT
1360621568,1360625663,ES
-1360625664,1360628492,DE
-1360628493,1360628493,LB
-1360628494,1360629759,DE
+1360625664,1360625919,A2
+1360625920,1360629759,DE
1360629760,1360633855,SE
1360633856,1360637951,RU
1360637952,1360642047,FO
@@ -27118,27 +23775,27 @@
1361018880,1361022975,AT
1361022976,1361027071,IT
1361027072,1361035263,IR
-1361035264,1361035627,US
+1361035264,1361035627,NL
1361035628,1361035631,DZ
-1361035632,1361039359,US
+1361035632,1361039359,NL
1361039360,1361041407,IE
1361041408,1361042431,NL
1361042432,1361043455,PL
1361043456,1361051647,IR
1361051648,1362100223,ES
-1362100224,1362423807,FR
-1362423808,1362424063,US
-1362424064,1362755583,FR
+1362100224,1362755583,FR
1362755584,1362756095,NL
1362756096,1362771967,BE
-1362771968,1362780159,NL
-1362780160,1362788351,BE
-1362788352,1362798591,NL
+1362771968,1362796543,NL
+1362796544,1362797567,BE
+1362797568,1362798591,NL
1362798592,1362818091,BE
1362818092,1362818092,NL
1362818093,1362821119,BE
1362821120,1362829311,NL
-1362829312,1362886655,BE
+1362829312,1362880767,BE
+1362880768,1362881023,NL
+1362881024,1362886655,BE
1362886656,1363017727,ES
1363017728,1363148799,CH
1363148800,1363410943,FR
@@ -27151,21 +23808,18 @@
1364459520,1364525055,PT
1364525056,1364525311,NL
1364525312,1364525567,A2
-1364525568,1364537087,NL
-1364537088,1364537343,US
-1364537344,1364579839,NL
+1364525568,1364579839,NL
1364579840,1364580095,US
-1364580096,1364585727,NL
+1364580096,1364582399,NL
+1364582400,1364583423,US
+1364583424,1364585727,NL
1364585728,1364585983,CA
1364585984,1364586239,LB
-1364586240,1364587263,NL
-1364587264,1364587519,US
-1364587520,1364588977,NL
+1364586240,1364588977,NL
1364588978,1364588978,US
1364588979,1364589567,NL
1364589568,1364589823,A2
-1364589824,1364590335,NL
-1364590336,1364590591,US
+1364589824,1364590591,NL
1364590592,1364721663,GB
1364721664,1364725759,SE
1364725760,1364733951,DE
@@ -27176,9 +23830,7 @@
1364750336,1364754431,RU
1364754432,1364758527,SK
1364758528,1364762623,KZ
-1364762624,1364764159,GB
-1364764160,1364764415,IM
-1364764416,1364766719,GB
+1364762624,1364766719,GB
1364766720,1364770815,CH
1364770816,1364774911,KG
1364774912,1364779007,RU
@@ -27247,10 +23899,13 @@
1365041664,1365041695,FR
1365041696,1365042047,LU
1365042048,1365042055,GB
-1365042056,1365045247,LU
+1365042056,1365044900,LU
+1365044901,1365044901,FR
+1365044902,1365045247,LU
1365045248,1365047295,AT
-1365047296,1365049087,SK
-1365049088,1365049343,AT
+1365047296,1365047551,SK
+1365047552,1365048319,AT
+1365048320,1365049343,SK
1365049344,1365057535,FR
1365057536,1365061631,IT
1365061632,1365065727,NL
@@ -27293,12 +23948,8 @@
1365237760,1365241855,UZ
1365241856,1365245951,DK
1365245952,1366294527,GB
-1366294528,1366673407,IT
-1366673408,1366673663,US
-1366673664,1367343103,IT
-1367343104,1368440063,GB
-1368440064,1368440319,US
-1368440320,1369440255,GB
+1366294528,1367343103,IT
+1367343104,1369440255,GB
1369440256,1369473023,DE
1369473024,1369505791,HU
1369505792,1369509887,RO
@@ -27357,7 +24008,9 @@
1370182912,1370183167,NL
1370183168,1370185983,NL
1370185984,1370186495,NL
-1370186496,1370189311,NL
+1370186496,1370188799,NL
+1370188800,1370189055,US
+1370189056,1370189311,NL
1370189312,1370189567,NL
1370189568,1370193919,NL
1370193920,1370226687,GB
@@ -27372,9 +24025,7 @@
1370456064,1370488831,FI
1370488832,1370619903,RU
1370619904,1370750975,GB
-1370750976,1370768383,RO
-1370768384,1370768639,MD
-1370768640,1370882047,RO
+1370750976,1370882047,RO
1370882048,1371013119,HU
1371013120,1371078655,ES
1371078656,1371144191,FR
@@ -27387,9 +24038,7 @@
1371406336,1371471871,PL
1371471872,1371537407,NO
1371537408,1371602943,MA
-1371602944,1371610111,PT
-1371610112,1371610623,US
-1371610624,1371668479,PT
+1371602944,1371668479,PT
1371668480,1371734015,FR
1371734016,1371799551,RU
1371799552,1371865087,RO
@@ -27400,16 +24049,18 @@
1371996928,1371997183,GB
1371997184,1371997439,KE
1371997440,1371997695,A2
-1371997696,1372006426,GB
+1371997696,1371998463,GB
+1371998464,1371998719,NG
+1371998720,1372006426,GB
1372006427,1372006427,TZ
-1372006428,1372026367,GB
+1372006428,1372011775,GB
+1372011776,1372012031,ZM
+1372012032,1372026367,GB
1372026368,1372026879,KE
1372026880,1372027903,IL
1372027904,1372033279,GB
1372033280,1372033535,IN
-1372033536,1372043007,GB
-1372043008,1372043263,NG
-1372043264,1372045567,GB
+1372033536,1372045567,GB
1372045568,1372045823,ZM
1372045824,1372060159,GB
1372060160,1372060415,IL
@@ -27450,10 +24101,10 @@
1372618752,1372651519,GB
1372651520,1372684287,FI
1372684288,1372689663,EU
-1372689664,1372689919,DE
-1372689920,1372693503,EU
-1372693504,1372693759,CY
-1372693760,1372695999,EU
+1372689664,1372690175,DE
+1372690176,1372692223,EU
+1372692224,1372692479,DE
+1372692480,1372695999,EU
1372696000,1372696007,DK
1372696008,1372699135,EU
1372699136,1372699391,DE
@@ -27462,9 +24113,7 @@
1372713472,1372717055,EU
1372717056,1372749823,PL
1372749824,1372782591,DE
-1372782592,1372784639,RU
-1372784640,1372784895,EU
-1372784896,1372815359,RU
+1372782592,1372815359,RU
1372815360,1372848127,SE
1372848128,1373110271,TR
1373110272,1373175807,SE
@@ -27475,70 +24124,88 @@
1373437952,1373503487,CH
1373503488,1373569023,RU
1373569024,1373634559,AT
-1373634560,1374165631,SE
-1374165632,1374165759,DK
-1374165760,1374683135,SE
+1373634560,1374683135,SE
1374683136,1375080959,BE
1375080960,1375081215,EU
-1375081216,1375089407,BE
-1375089408,1375089663,CH
-1375089664,1375207423,BE
+1375081216,1375207423,BE
1375207424,1375208447,MQ
1375208448,1375208703,GP
1375208704,1375210239,MQ
1375210240,1375210495,GP
-1375210496,1375210751,FR
-1375210752,1375211519,MQ
-1375211520,1375214591,GP
+1375210496,1375211519,MQ
+1375211520,1375211775,FR
+1375211776,1375212799,GP
+1375212800,1375213055,FR
+1375213056,1375214591,GP
1375214592,1375214847,FR
-1375214848,1375215615,GP
-1375215616,1375217919,GF
+1375214848,1375215103,GP
+1375215104,1375215359,FR
+1375215360,1375215615,GP
+1375215616,1375216895,GF
+1375216896,1375217151,FR
+1375217152,1375217919,GF
1375217920,1375218175,FR
-1375218176,1375218687,GF
-1375218688,1375218943,FR
-1375218944,1375219455,GF
-1375219456,1375219711,FR
-1375219712,1375223807,GF
-1375223808,1375231999,MQ
+1375218176,1375219711,GF
+1375219712,1375219967,FR
+1375219968,1375223807,GF
+1375223808,1375224575,FR
+1375224576,1375225087,MQ
+1375225088,1375225343,FR
+1375225344,1375226111,MQ
+1375226112,1375226879,FR
+1375226880,1375227135,MQ
+1375227136,1375228159,FR
+1375228160,1375231999,MQ
1375232000,1375233023,FR
-1375233024,1375233279,MQ
-1375233280,1375233535,FR
-1375233536,1375237887,MQ
-1375237888,1375238143,FR
-1375238144,1375239679,MQ
-1375239680,1375240191,FR
-1375240192,1375240703,GP
-1375240704,1375240959,FR
-1375240960,1375241983,GP
-1375241984,1375242239,FR
-1375242240,1375245311,GP
+1375233024,1375233535,MQ
+1375233536,1375233791,FR
+1375233792,1375234559,MQ
+1375234560,1375236095,FR
+1375236096,1375237119,MQ
+1375237120,1375237631,FR
+1375237632,1375237887,MQ
+1375237888,1375238399,FR
+1375238400,1375240191,MQ
+1375240192,1375240447,FR
+1375240448,1375241215,GP
+1375241216,1375241471,FR
+1375241472,1375243775,GP
+1375243776,1375244031,FR
+1375244032,1375244543,GP
+1375244544,1375244799,FR
+1375244800,1375245311,GP
1375245312,1375245567,FR
-1375245568,1375246335,GP
-1375246336,1375246847,FR
-1375246848,1375247871,GP
-1375247872,1375248127,FR
-1375248128,1375248895,GP
-1375248896,1375249151,FR
-1375249152,1375255039,GP
-1375255040,1375255295,FR
-1375255296,1375256319,GP
-1375256320,1375256575,FR
-1375256576,1375257599,RE
-1375257600,1375258111,FR
-1375258112,1375270911,RE
+1375245568,1375247359,GP
+1375247360,1375247615,FR
+1375247616,1375251455,GP
+1375251456,1375251967,FR
+1375251968,1375252223,GP
+1375252224,1375252479,FR
+1375252480,1375253503,GP
+1375253504,1375253759,FR
+1375253760,1375256575,GP
+1375256576,1375257343,RE
+1375257344,1375257599,FR
+1375257600,1375257855,RE
+1375257856,1375258111,FR
+1375258112,1375260415,RE
+1375260416,1375260671,FR
+1375260672,1375262207,RE
+1375262208,1375262463,FR
+1375262464,1375263999,RE
+1375264000,1375264255,FR
+1375264256,1375270911,RE
1375270912,1375271167,FR
-1375271168,1375272191,RE
-1375272192,1375272447,FR
-1375272448,1375272959,RE
-1375272960,1375497039,FR
-1375497040,1375497047,MQ
-1375497048,1375705984,FR
+1375271168,1375271423,RE
+1375271424,1375271679,FR
+1375271680,1375272959,RE
+1375272960,1375705984,FR
1375705985,1375705985,EU
1375705986,1375731711,FR
-1375731712,1375844607,GB
-1375844608,1375844743,US
-1375844744,1375844751,GB
-1375844752,1375844863,US
+1375731712,1375844671,GB
+1375844672,1375844735,US
+1375844736,1375844767,GB
+1375844768,1375844863,US
1375844864,1378719197,GB
1378719198,1378719198,EU
1378719199,1378877439,GB
@@ -27570,7 +24237,9 @@
1382213632,1382219775,GB
1382219776,1382222847,SE
1382222848,1382223103,FI
-1382223104,1382252543,SE
+1382223104,1382233407,SE
+1382233408,1382233423,NO
+1382233424,1382252543,SE
1382252544,1382268927,CZ
1382268928,1382285311,IR
1382285312,1382301695,CZ
@@ -27592,13 +24261,11 @@
1382547456,1382809599,IT
1382809600,1382967551,GB
1382967552,1382967807,GB
-1382967808,1383005439,GB
-1383005440,1383005695,QA
-1383005696,1383071743,GB
+1382967808,1383071743,GB
1383071744,1383088127,RU
1383088128,1383096319,IS
-1383096320,1383099135,GB
-1383099136,1383099391,DE
+1383096320,1383098879,GB
+1383098880,1383099391,DE
1383099392,1383100159,GB
1383100160,1383100415,FR
1383100416,1383104511,GB
@@ -27623,18 +24290,20 @@
1383194624,1383202815,GB
1383202816,1383211007,RU
1383211008,1383219199,CY
-1383219200,1383219461,AL
-1383219462,1383219462,US
-1383219463,1383223039,AL
-1383223040,1383223551,RS
-1383223552,1383223623,AL
-1383223624,1383223631,RS
-1383223632,1383223727,AL
-1383223728,1383223743,RS
-1383223744,1383226921,AL
-1383226922,1383226922,RS
-1383226923,1383227135,AL
-1383227136,1383227391,RS
+1383219200,1383222463,AL
+1383222464,1383222471,RS
+1383222472,1383223125,AL
+1383223126,1383223126,RS
+1383223127,1383223295,AL
+1383223296,1383223807,RS
+1383223808,1383224063,AL
+1383224064,1383224319,RS
+1383224320,1383225343,AL
+1383225344,1383225599,RS
+1383225600,1383226111,AL
+1383226112,1383226367,RS
+1383226368,1383226879,AL
+1383226880,1383227391,RS
1383227392,1383243775,RU
1383243776,1383251967,YE
1383251968,1383260159,CZ
@@ -27650,9 +24319,7 @@
1383325696,1383333887,GB
1383333888,1383350271,RU
1383350272,1383358463,NO
-1383358464,1383367167,DE
-1383367168,1383367423,US
-1383367424,1383368957,DE
+1383358464,1383368957,DE
1383368958,1383368958,US
1383368959,1383369727,DE
1383369728,1383369760,SA
@@ -27705,9 +24372,7 @@
1384382464,1384415231,HR
1384415232,1384480767,GB
1384480768,1384513535,FI
-1384513536,1384527103,NO
-1384527104,1384527119,AU
-1384527120,1384546303,NO
+1384513536,1384546303,NO
1384546304,1384579071,NL
1384579072,1384611839,DE
1384611840,1384644607,LT
@@ -27769,13 +24434,9 @@
1385316352,1385324543,NO
1385324544,1385332735,BE
1385332736,1385340927,GB
-1385340928,1385341439,LB
-1385341440,1385341634,US
+1385340928,1385341634,LB
1385341635,1385341635,GB
-1385341636,1385341695,US
-1385341696,1385342207,LB
-1385342208,1385342463,US
-1385342464,1385349119,LB
+1385341636,1385349119,LB
1385349120,1385357311,CH
1385357312,1385365503,PL
1385365504,1385373695,GB
@@ -27801,13 +24462,15 @@
1385545728,1385553919,RU
1385553920,1385562111,DE
1385562112,1385566719,EU
-1385566720,1385567231,FR
-1385567232,1385570303,EU
+1385566720,1385566975,FR
+1385566976,1385570303,EU
1385570304,1385578495,HU
1385578496,1385580543,TR
1385580544,1385580799,DK
1385580800,1385586687,TR
-1385586688,1385594879,GB
+1385586688,1385588223,GB
+1385588224,1385588479,US
+1385588480,1385594879,GB
1385594880,1385603071,NL
1385603072,1385611263,CZ
1385611264,1385619455,AT
@@ -27822,9 +24485,13 @@
1385668608,1385676799,NL
1385676800,1385684991,RU
1385684992,1385824255,GB
-1385824256,1385955327,PT
+1385824256,1385833471,PT
+1385833472,1385833727,GB
+1385833728,1385955327,PT
1385955328,1386086399,NL
-1386086400,1386217471,ES
+1386086400,1386217319,ES
+1386217320,1386217327,NO
+1386217328,1386217471,ES
1386217472,1386283007,PL
1386283008,1386348543,NL
1386348544,1386414079,RU
@@ -27842,9 +24509,7 @@
1387528192,1387593727,DK
1387593728,1387659263,FI
1387659264,1387790335,SE
-1387790336,1388128511,IT
-1388128512,1388128767,US
-1388128768,1388314623,IT
+1387790336,1388314623,IT
1388314624,1388322815,AT
1388322816,1388331007,SI
1388331008,1388339199,NL
@@ -27870,9 +24535,7 @@
1388519424,1388527615,NL
1388527616,1388535807,DE
1388535808,1388543999,GB
-1388544000,1388545535,IE
-1388545536,1388545791,CY
-1388545792,1388552191,IE
+1388544000,1388552191,IE
1388552192,1388560383,GB
1388560384,1388568575,FI
1388568576,1388570841,CH
@@ -27885,9 +24548,9 @@
1388588288,1388588543,GB
1388588544,1388588799,EU
1388588800,1388589055,GB
-1388589056,1388590127,EU
-1388590128,1388590327,FR
-1388590328,1388591103,EU
+1388589056,1388590079,EU
+1388590080,1388590335,FR
+1388590336,1388591103,EU
1388591104,1388591359,AU
1388591360,1388593151,EU
1388593152,1388601343,RU
@@ -27899,8 +24562,7 @@
1388642304,1388650495,FI
1388650496,1388658687,PL
1388658688,1388666879,GB
-1388666880,1388667391,RE
-1388667392,1388675071,FR
+1388666880,1388675071,FR
1388675072,1388683263,EU
1388683264,1388691455,CH
1388691456,1388699647,NL
@@ -27912,8 +24574,7 @@
1388714240,1388714495,LB
1388714496,1388715007,RU
1388715008,1388715263,LB
-1388715264,1388715775,RU
-1388715776,1388716031,LB
+1388715264,1388716031,RU
1388716032,1388724223,ES
1388724224,1388732415,DE
1388732416,1388740607,ES
@@ -27925,9 +24586,7 @@
1388781568,1388789759,ES
1388789760,1388794943,NL
1388794944,1388794959,GB
-1388794960,1388796610,NL
-1388796611,1388796611,DE
-1388796612,1388797951,NL
+1388794960,1388797951,NL
1388797952,1388806143,RU
1388806144,1388814335,DE
1388814336,1388822527,AX
@@ -27946,23 +24605,15 @@
1389166592,1389199359,PS
1389199360,1389199871,AE
1389199872,1389200159,US
-1389200160,1389203455,AE
-1389203456,1389204479,US
-1389204480,1389210627,AE
+1389200160,1389210627,AE
1389210628,1389210631,US
1389210632,1389212159,AE
1389212160,1389212415,GB
-1389212416,1389215743,AE
-1389215744,1389215999,US
-1389216000,1389223935,AE
+1389212416,1389223935,AE
1389223936,1389224191,US
-1389224192,1389224959,AE
-1389224960,1389225215,US
-1389225216,1389231103,AE
-1389231104,1389231359,US
+1389224192,1389231359,AE
1389231360,1389231615,EU
-1389231616,1389231871,US
-1389231872,1389232127,AE
+1389231616,1389232127,AE
1389232128,1389264895,DE
1389264896,1389265151,TZ
1389265152,1389265407,GB
@@ -27972,23 +24623,19 @@
1389266944,1389266957,A2
1389266958,1389266958,NG
1389266959,1389267199,A2
-1389267200,1389268257,GB
-1389268258,1389268258,US
-1389268259,1389268305,GB
-1389268306,1389268306,US
-1389268307,1389268489,GB
-1389268490,1389268490,US
-1389268491,1389272575,GB
-1389272576,1389272831,US
-1389272832,1389275647,GB
+1389267200,1389268481,GB
+1389268482,1389268482,US
+1389268483,1389275647,GB
1389275648,1389275903,ZA
-1389275904,1389289471,GB
+1389275904,1389281791,GB
+1389281792,1389282047,ZA
+1389282048,1389289471,GB
1389289472,1389290239,NO
1389290240,1389293311,GB
1389293312,1389293567,A2
-1389293568,1389295573,GB
-1389295574,1389295574,US
-1389295575,1389297663,GB
+1389293568,1389295103,GB
+1389295104,1389295615,US
+1389295616,1389297663,GB
1389297664,1389330431,UA
1389330432,1389363199,DE
1389363200,1389365780,CZ
@@ -28004,11 +24651,7 @@
1389494272,1389510655,DE
1389510656,1389527039,NL
1389527040,1389543423,PL
-1389543424,1389552639,DE
-1389552640,1389552895,US
-1389552896,1389554943,DE
-1389554944,1389555199,BE
-1389555200,1389557247,DE
+1389543424,1389557247,DE
1389557248,1389557375,EU
1389557376,1389557391,DE
1389557392,1389557503,EU
@@ -28020,9 +24663,7 @@
1389598720,1389598975,RU
1389598976,1389604863,GE
1389604864,1389605119,RU
-1389605120,1389607935,GE
-1389607936,1389608447,US
-1389608448,1389608959,GE
+1389605120,1389608959,GE
1389608960,1389625343,DK
1389625344,1389641727,DE
1389641728,1389658111,JO
@@ -28079,7 +24720,11 @@
1397489664,1397751807,CH
1397751808,1398276095,NL
1398276096,1398800383,DK
-1398800384,1398833151,KW
+1398800384,1398817279,KW
+1398817280,1398817343,US
+1398817344,1398817407,KW
+1398817408,1398817535,US
+1398817536,1398833151,KW
1398833152,1398865919,NL
1398865920,1398867967,RU
1398867968,1398870015,NL
@@ -28115,7 +24760,9 @@
1399848960,1400111103,FR
1400111104,1400373247,NL
1400373248,1400635391,DE
-1400635392,1400713215,EU
+1400635392,1400705791,EU
+1400705792,1400706047,DE
+1400706048,1400713215,EU
1400713216,1400717311,DE
1400717312,1400731647,EU
1400731648,1400733695,DE
@@ -28129,9 +24776,7 @@
1401290752,1401356287,BE
1401356288,1401421823,DE
1401421824,1401423871,GB
-1401423872,1401425151,AE
-1401425152,1401425407,US
-1401425408,1401425919,AE
+1401423872,1401425919,AE
1401425920,1401427967,NL
1401427968,1401430015,RU
1401430016,1401432063,AT
@@ -28160,7 +24805,9 @@
1401479168,1401481215,PL
1401481216,1401485311,RU
1401485312,1401487359,FI
-1401487360,1401489407,GB
+1401487360,1401487871,GB
+1401487872,1401488127,EU
+1401488128,1401489407,GB
1401489408,1401491455,SE
1401491456,1401493503,NL
1401493504,1401495551,CH
@@ -28190,10 +24837,9 @@
1401544704,1401546751,GB
1401546752,1401548799,IT
1401548800,1401550847,FR
-1401550848,1401551103,GB
-1401551104,1401551359,JE
-1401551360,1401551615,GB
-1401551616,1401552895,JE
+1401550848,1401551871,GB
+1401551872,1401552383,JE
+1401552384,1401552895,GB
1401552896,1401554943,NL
1401554944,1401556991,IE
1401556992,1401563135,GB
@@ -28221,7 +24867,7 @@
1401831424,1401833471,GB
1401833472,1401835519,FI
1401835520,1401837567,DE
-1401837568,1401839615,FR
+1401837568,1401839615,CH
1401839616,1401841663,NO
1401841664,1401843711,UA
1401843712,1401847807,PL
@@ -28246,11 +24892,9 @@
1401892864,1401894911,RU
1401894912,1401896959,FI
1401896960,1401899007,RU
-1401899008,1401901055,PL
1401901056,1401903103,NO
1401903104,1401905151,FI
1401905152,1401907199,PL
-1401909248,1401911295,NO
1401911296,1401913343,DK
1401913344,1401917439,PL
1401917440,1401919487,BG
@@ -28334,9 +24978,7 @@
1403650048,1403653631,A2
1403653632,1403653663,DE
1403653664,1403666431,A2
-1403666432,1403673855,GB
-1403673856,1403674111,AE
-1403674112,1403699199,GB
+1403666432,1403699199,GB
1403699200,1403715583,UA
1403715584,1403731967,LT
1403731968,1403748351,RU
@@ -28358,9 +25000,8 @@
1403994112,1404010495,AT
1404010496,1404026879,PL
1404026880,1404043263,ES
-1404043264,1404044287,SE
-1404044288,1404045311,EE
-1404045312,1404059647,SE
+1404043264,1404047359,EE
+1404047360,1404059647,SE
1404059648,1404076031,NO
1404076032,1404084223,SE
1404084224,1404085247,NO
@@ -28377,55 +25018,77 @@
1404218112,1404232191,SE
1404232192,1404232703,NO
1404232704,1404379135,SE
-1404379136,1404381183,AT
-1404381184,1404387327,SE
-1404387328,1404391423,DE
-1404391424,1404393471,SE
+1404379136,1404383231,AT
+1404383232,1404387327,SE
+1404387328,1404389375,DE
+1404389376,1404393471,SE
1404393472,1404393983,DE
-1404393984,1404575743,SE
+1404393984,1404394495,SE
+1404394496,1404395007,DE
+1404395008,1404575743,SE
1404575744,1404583935,HR
1404583936,1404772351,SE
1404772352,1404780543,NL
1404780544,1404796927,SE
-1404796928,1404801023,EE
-1404801024,1404802047,SE
-1404802048,1404803071,EE
-1404803072,1404805119,SE
+1404796928,1404799487,EE
+1404799488,1404802047,SE
+1404802048,1404802559,EE
+1404802560,1404803071,SE
+1404803072,1404803583,LV
+1404803584,1404805119,SE
1404805120,1404813311,AT
1404813312,1404815871,SE
1404815872,1404816127,LT
-1404816128,1404903935,SE
-1404903936,1404904191,DE
-1404904192,1404908287,SE
-1404908288,1404908543,DE
-1404908544,1404908799,SE
-1404908800,1404909567,DE
-1404909568,1404910591,SE
-1404910592,1404910847,DE
-1404910848,1404912127,SE
-1404912128,1404912383,DE
-1404912384,1404915711,SE
-1404915712,1404916223,DE
-1404916224,1404918783,SE
+1404816128,1404870655,SE
+1404870656,1404871679,LT
+1404871680,1404903679,SE
+1404903680,1404904703,DE
+1404904704,1404905215,SE
+1404905216,1404905983,DE
+1404905984,1404906495,SE
+1404906496,1404907007,DE
+1404907008,1404907263,SE
+1404907264,1404907519,DE
+1404907520,1404908799,SE
+1404908800,1404909311,DE
+1404909312,1404909567,SE
+1404909568,1404909823,DE
+1404909824,1404910079,SE
+1404910080,1404910335,DE
+1404910336,1404910847,SE
+1404910848,1404911103,DE
+1404911104,1404912127,SE
+1404912128,1404912639,DE
+1404912640,1404913151,SE
+1404913152,1404913663,DE
+1404913664,1404914175,SE
+1404914176,1404914687,DE
+1404914688,1404914943,SE
+1404914944,1404915199,DE
+1404915200,1404916991,SE
+1404916992,1404917247,DE
+1404917248,1404918783,SE
1404918784,1404919039,DE
-1404919040,1404919551,SE
-1404919552,1404919807,DE
-1404919808,1405026303,SE
-1405026304,1405042687,NO
-1405042688,1405050879,SE
+1404919040,1404919295,SE
+1404919296,1404919551,DE
+1404919552,1404921855,SE
+1404921856,1404923903,DE
+1404923904,1405026303,SE
+1405026304,1405030399,NO
+1405030400,1405050879,SE
1405050880,1405059071,AT
-1405059072,1405064447,SE
-1405064448,1405064703,NO
-1405064704,1405066239,SE
-1405066240,1405066751,NO
-1405066752,1405091839,SE
+1405059072,1405063167,SE
+1405063168,1405067263,NO
+1405067264,1405091839,SE
1405091840,1406010111,FR
1406010112,1406010367,RE
1406010368,1406140415,FR
1406140416,1406205951,CZ
1406205952,1406271487,SE
1406271488,1406337023,IE
-1406337024,1406402559,IT
+1406337024,1406376703,IT
+1406376704,1406376959,US
+1406376960,1406402559,IT
1406402560,1406468095,GR
1406468096,1406533631,ES
1406533632,1406599167,FR
@@ -28443,22 +25106,26 @@
1406730240,1406746623,RU
1406746624,1406754815,BE
1406754816,1406763007,GB
-1406763008,1406770943,LU
-1406770944,1406771199,BE
+1406763008,1406764031,BE
+1406764032,1406765055,LU
+1406765056,1406766079,BE
+1406766080,1406766591,LU
+1406766592,1406767103,BE
+1406767104,1406768127,LU
+1406768128,1406769407,BE
+1406769408,1406769663,LU
+1406769664,1406770175,BE
+1406770176,1406771199,LU
1406771200,1406779391,GB
1406779392,1406787583,RU
1406787584,1406789631,ES
1406789632,1406789887,FR
1406789888,1406795775,ES
1406795776,1406797823,IM
-1406797824,1406798079,GB
-1406798080,1406798591,IM
-1406798592,1406802175,GB
-1406802176,1406802431,IM
-1406802432,1406802943,GB
-1406802944,1406803775,IM
-1406803776,1406803807,GB
-1406803808,1406803967,IM
+1406797824,1406798591,GB
+1406798592,1406798847,IM
+1406798848,1406802943,GB
+1406802944,1406803967,IM
1406803968,1406812159,DE
1406812160,1406820351,SE
1406820352,1406828543,PL
@@ -28469,8 +25136,7 @@
1406861312,1406869503,RU
1406869504,1406877695,GB
1406877696,1406885887,NL
-1406885888,1406889471,CH
-1406889472,1406889983,DE
+1406887936,1406889983,DE
1406889984,1406894079,CH
1406894080,1406902271,RU
1406902272,1406910463,AT
@@ -28486,9 +25152,9 @@
1407000576,1407016959,DE
1407016960,1407025151,IT
1407025152,1407033343,DK
-1407033344,1407035391,RU
-1407035392,1407041535,UZ
-1407041536,1407049727,RU
+1407033344,1407036927,RU
+1407036928,1407037439,UZ
+1407037440,1407049727,RU
1407049728,1407057919,DE
1407057920,1407066111,RU
1407066112,1407074303,LU
@@ -28496,9 +25162,7 @@
1407090688,1407098879,CH
1407098880,1407107071,BG
1407107072,1407115263,RU
-1407115264,1407121663,GB
-1407121664,1407121919,SG
-1407121920,1407123455,GB
+1407115264,1407123455,GB
1407123456,1407131647,SE
1407131648,1407139839,NL
1407139840,1407148031,DE
@@ -28511,28 +25175,28 @@
1407320064,1407451135,SE
1407451136,1407483903,BG
1407483904,1407516671,CH
-1407516672,1407516687,GB
-1407516688,1407516695,NG
-1407516696,1407522303,GB
+1407516672,1407520511,GB
+1407520512,1407520767,NG
+1407520768,1407522303,GB
1407522304,1407522559,A2
-1407522560,1407522815,US
-1407522816,1407529175,GB
-1407529176,1407529178,SO
+1407522560,1407528959,GB
+1407528960,1407529178,US
1407529179,1407529180,NG
-1407529181,1407529183,SO
-1407529184,1407534365,GB
+1407529181,1407529215,US
+1407529216,1407532927,GB
+1407532928,1407533055,US
+1407533056,1407534365,GB
1407534366,1407534366,NG
-1407534367,1407536127,GB
+1407534367,1407535359,GB
+1407535360,1407535615,GA
+1407535616,1407536127,GB
1407536128,1407536639,GA
-1407536640,1407548415,GB
-1407548416,1407549439,ZA
+1407536640,1407549439,GB
1407549440,1407582207,RU
1407582208,1407614975,PL
1407614976,1407680511,ES
1407680512,1407713279,GB
-1407713280,1407730175,NL
-1407730176,1407730431,BE
-1407730432,1407778815,NL
+1407713280,1407778815,NL
1407778816,1407844351,SE
1407844352,1407909887,RU
1407909888,1407975423,GR
@@ -28585,28 +25249,20 @@
1409941504,1410007039,PL
1410007040,1410008831,DE
1410008832,1410009087,US
-1410009088,1410009599,DE
-1410009600,1410009855,US
-1410009856,1410035967,DE
-1410035968,1410036223,US
-1410036224,1410040319,DE
-1410040320,1410040575,US
-1410040576,1410042367,DE
+1410009088,1410009855,DE
+1410009856,1410010111,US
+1410010112,1410017535,DE
+1410017536,1410017791,US
+1410017792,1410042367,DE
1410042368,1410042623,US
1410042624,1410043169,DE
1410043170,1410043171,US
1410043172,1410043172,DE
1410043173,1410043173,US
-1410043174,1410043903,DE
-1410043904,1410044159,GB
-1410044160,1410046463,DE
-1410046464,1410046719,CA
-1410046720,1410072575,DE
+1410043174,1410072575,DE
1410072576,1410203647,GB
1410203648,1410269183,FR
-1410269184,1410273023,LT
-1410273024,1410273279,LV
-1410273280,1410334719,LT
+1410269184,1410334719,LT
1410334720,1410342911,ES
1410342912,1410351103,SK
1410351104,1410359295,CH
@@ -28627,8 +25283,7 @@
1410473984,1410490367,JO
1410490368,1410498559,RU
1410498560,1410506751,IT
-1410506752,1410507007,GB
-1410507008,1410514943,IE
+1410506752,1410514943,IE
1410514944,1410523135,GB
1410523136,1410531327,PT
1410531328,1410539519,DE
@@ -28661,8 +25316,10 @@
1410727936,1410736127,BG
1410736128,1410744319,RS
1410744320,1410745087,FR
-1410745088,1410745343,US
-1410745344,1410752511,FR
+1410745088,1410745343,A2
+1410745344,1410751487,FR
+1410751488,1410751999,DE
+1410752000,1410752511,FR
1410752512,1410760703,DE
1410760704,1410768895,RU
1410768896,1410777087,GB
@@ -28681,12 +25338,10 @@
1411448832,1411514367,IT
1411514368,1411579903,FI
1411579904,1411645439,NL
-1411645440,1411659007,EG
-1411659008,1411659263,US
-1411659264,1411710975,EG
+1411645440,1411710975,EG
1411710976,1411776511,FR
1411776512,1411778559,RU
-1411778560,1411780607,GR
+1411778560,1411780607,NO
1411780608,1411784703,PL
1411784704,1411788799,GB
1411788800,1411792895,IT
@@ -28702,8 +25357,7 @@
1411833856,1411837951,NL
1411837952,1411842047,BG
1411842048,1411850239,NL
-1411850240,1411854335,PT
-1411854336,1411858431,RO
+1411850240,1411858431,RO
1411858432,1411870719,DE
1411870720,1411872767,EU
1411872768,1411874815,NL
@@ -28723,9 +25377,9 @@
1411907584,1411923967,EU
1411923968,1411940351,BG
1411940352,1411973119,PL
-1411973120,1412000255,SI
-1412000256,1412000767,BA
-1412000768,1412002815,SI
+1411973120,1411999999,SI
+1412000000,1412000511,BA
+1412000512,1412002815,SI
1412002816,1412003071,BA
1412003072,1412005887,SI
1412005888,1412038655,NL
@@ -28776,9 +25430,7 @@
1415446528,1415577599,IL
1415577600,1416101887,FR
1416101888,1416364031,NL
-1416364032,1416610303,IL
-1416610304,1416610559,US
-1416610560,1416626175,IL
+1416364032,1416626175,IL
1416626176,1417150463,AT
1417150464,1417674751,ES
1417674752,1421869055,DE
@@ -28802,9 +25454,8 @@
1422786560,1422852095,HU
1422852096,1422911231,EU
1422911232,1422911487,NL
-1422911488,1422917585,EU
-1422917586,1422917586,GB
-1422917587,1422917631,EU
+1422911488,1422917375,EU
+1422917376,1422917631,GB
1422917632,1423441919,NO
1423441920,1423704063,SE
1423704064,1423966207,IT
@@ -28812,36 +25463,39 @@
1424097280,1424228351,CH
1424228352,1424359423,IL
1424359424,1424490495,FI
-1424490496,1424507903,ES
-1424507904,1424508159,GB
-1424508160,1424523263,ES
+1424490496,1424523263,ES
1424523264,1424556031,RO
1424556032,1424588799,EG
-1424588800,1424592639,GB
+1424588800,1424589055,DE
+1424589056,1424592639,GB
1424592640,1424592895,FR
1424592896,1424594431,GB
1424594432,1424594687,IE
-1424594688,1424597069,GB
+1424594688,1424595711,GB
+1424595712,1424595967,IT
+1424595968,1424597069,GB
1424597070,1424597070,CZ
-1424597071,1424597759,GB
-1424597760,1424598015,US
-1424598016,1424600575,GB
+1424597071,1424600575,GB
1424600576,1424600831,FR
1424600832,1424602879,GB
1424602880,1424603135,US
-1424603136,1424604447,GB
-1424604448,1424604463,NL
+1424603136,1424604415,GB
+1424604416,1424604463,NL
1424604464,1424604671,GB
1424604672,1424604927,EU
-1424604928,1424608255,GB
-1424608256,1424608511,FR
-1424608512,1424610815,GB
+1424604928,1424606463,GB
+1424606464,1424606719,IT
+1424606720,1424608351,GB
+1424608352,1424608383,FR
+1424608384,1424608433,GB
+1424608434,1424608434,FR
+1424608435,1424609063,GB
+1424609064,1424609064,DE
+1424609065,1424610815,GB
1424610816,1424611071,FR
-1424611072,1424613631,GB
-1424613632,1424614143,IT
-1424614144,1424614399,GB
-1424614400,1424614655,US
-1424614656,1424615679,GB
+1424611072,1424613887,GB
+1424613888,1424614143,IT
+1424614144,1424615679,GB
1424615680,1424615935,IT
1424615936,1424621567,GB
1424621568,1424625663,PL
@@ -28858,9 +25512,9 @@
1424713728,1424719871,SA
1424719872,1424752639,DE
1424752640,1424785407,HU
-1424785408,1424811519,ES
-1424811520,1424811775,GB
-1424811776,1424818175,ES
+1424785408,1424811775,ES
+1424811776,1424812031,GB
+1424812032,1424818175,ES
1424818176,1424850943,RU
1424850944,1424883711,LV
1424883712,1424916479,DK
@@ -28905,8 +25559,8 @@
1425446912,1425448959,GB
1425448960,1425451007,CZ
1425451008,1425459199,GB
-1425459200,1425460991,IM
-1425460992,1425461247,GB
+1425459200,1425460735,IM
+1425460736,1425461247,GB
1425461248,1425463295,ES
1425463296,1425467391,FR
1425467392,1425469439,CH
@@ -28917,11 +25571,13 @@
1425485824,1425506303,RO
1425506304,1425522687,NO
1425522688,1425539071,IT
-1425539072,1425711103,FI
-1425711104,1425711615,AX
-1425711616,1425715071,FI
+1425539072,1425712895,FI
+1425712896,1425713151,AX
+1425713152,1425715071,FI
1425715072,1425715199,AX
-1425715200,1425801215,FI
+1425715200,1425715967,FI
+1425715968,1425716223,AX
+1425716224,1425801215,FI
1425801216,1425817599,BG
1425817600,1425833983,DE
1425833984,1425850367,RU
@@ -28934,13 +25590,12 @@
1425948672,1425965055,DE
1425965056,1425970175,IT
1425970176,1425970431,FR
-1425970432,1425970687,IT
-1425970688,1425970943,US
-1425970944,1425971967,IT
+1425970432,1425971967,IT
1425971968,1425972223,A2
1425972224,1425980415,IT
1425980416,1425980671,IQ
-1425980672,1425981439,IT
+1425980672,1425981183,IT
+1425981184,1425981439,US
1425981440,1425997823,RU
1425997824,1426014207,MT
1426014208,1426030591,DK
@@ -28979,9 +25634,7 @@
1427062784,1427095551,RU
1427095552,1427111935,LV
1427111936,1427177471,DE
-1427177472,1427218687,NL
-1427218688,1427218943,DE
-1427218944,1427220556,NL
+1427177472,1427220556,NL
1427220557,1427220557,KG
1427220558,1427236631,NL
1427236632,1427236633,US
@@ -28994,9 +25647,7 @@
1427570688,1427636223,FI
1427636224,1427668991,DK
1427668992,1427701759,SE
-1427701760,1427737599,DE
-1427737600,1427737855,RU
-1427737856,1427739889,DE
+1427701760,1427739889,DE
1427739890,1427739890,RU
1427739891,1427767295,DE
1427767296,1427800063,BE
@@ -29004,7 +25655,9 @@
1427832832,1427865599,BE
1427865600,1427898367,DK
1427898368,1427914751,RU
-1427914752,1427931135,BE
+1427914752,1427923967,BE
+1427923968,1427924223,FR
+1427924224,1427931135,BE
1427931136,1427947519,PL
1427947520,1427963903,RU
1427963904,1427980287,TR
@@ -29016,10 +25669,9 @@
1428062208,1428078591,SE
1428078592,1428094975,RU
1428094976,1428103167,AT
-1428103168,1428115455,GB
-1428115456,1428116735,US
-1428116736,1428117503,GB
-1428117504,1428119551,US
+1428103168,1428118783,GB
+1428118784,1428119039,US
+1428119040,1428119551,GB
1428119552,1428121599,LV
1428121600,1428123647,FR
1428123648,1428127743,RU
@@ -29031,23 +25683,27 @@
1428137984,1428140031,GB
1428140032,1428142079,RU
1428142080,1428144127,DE
-1428144128,1428146175,SE
-1428146176,1428147199,FR
-1428147200,1428147711,SE
-1428147712,1428151295,FR
-1428151296,1428152319,SE
+1428144128,1428145151,FR
+1428145152,1428146431,SE
+1428146432,1428146687,FR
+1428146688,1428147519,SE
+1428147520,1428147615,FR
+1428147616,1428147711,SE
+1428147712,1428148223,FR
+1428148224,1428148991,SE
+1428148992,1428149247,FR
+1428149248,1428150271,SE
+1428150272,1428151295,FR
+1428151296,1428152063,SE
+1428152064,1428152319,FR
1428152320,1428160511,PL
1428160512,1428260863,IT
1428260864,1428261119,GB
-1428261120,1428272127,IT
-1428272128,1428272383,US
-1428272384,1428474367,IT
+1428261120,1428474367,IT
1428474368,1428474623,US
1428474624,1428536831,IT
-1428536832,1428537343,US
-1428537344,1428737279,IT
-1428737280,1428737535,US
-1428737536,1429209087,IT
+1428536832,1428537087,US
+1428537088,1429209087,IT
1429209088,1430257663,ES
1430257664,1430388735,IL
1430388736,1430519807,HU
@@ -29072,14 +25728,11 @@
1431928832,1431937023,IT
1431937024,1431945215,PL
1431945216,1431953407,NO
-1431953408,1431955967,DK
-1431955968,1431956223,GB
-1431956224,1431956735,DK
+1431953408,1431956735,DK
1431956736,1431956991,EU
1431956992,1431961599,DK
1431961600,1431969791,CH
-1431969792,1431973887,GB
-1431973888,1431977983,FR
+1431969792,1431977983,GB
1431977984,1431986175,NL
1431986176,1431994367,RU
1431994368,1432002559,AT
@@ -29152,10 +25805,10 @@
1433610240,1433611519,US
1433611520,1433615027,GB
1433615028,1433615028,EU
-1433615029,1433616383,GB
-1433616384,1433619455,AE
-1433619456,1433619711,US
-1433619712,1433624575,AE
+1433615029,1433615359,GB
+1433615360,1433615615,FR
+1433615616,1433616383,GB
+1433616384,1433624575,AE
1433624576,1433632767,LV
1433632768,1433640959,GI
1433640960,1433649151,RU
@@ -29199,7 +25852,9 @@
1433862144,1433864191,CH
1433864192,1433866239,HU
1433866240,1433867519,GB
-1433867520,1433867775,NL
+1433867520,1433867521,NL
+1433867522,1433867522,GB
+1433867523,1433867775,NL
1433867776,1433870335,GB
1433870336,1433872383,TR
1433872384,1433874431,IT
@@ -29253,9 +25908,7 @@
1435500544,1436024831,NL
1436024832,1436090367,ES
1436090368,1436155903,TR
-1436155904,1436206591,OM
-1436206592,1436207103,US
-1436207104,1436221439,OM
+1436155904,1436221439,OM
1436221440,1436286975,ES
1436286976,1436418047,FI
1436418048,1436420095,DE
@@ -29354,13 +26007,11 @@
1438875648,1438876927,RU
1438876928,1438877183,IQ
1438877184,1438877439,A2
-1438877440,1438878063,RU
-1438878064,1438878079,LB
-1438878080,1438878207,RU
-1438878208,1438878463,LB
-1438878464,1438890495,RU
-1438890496,1438890751,IQ
-1438890752,1438892031,RU
+1438877440,1438877951,RU
+1438877952,1438878463,LB
+1438878464,1438884607,RU
+1438884608,1438884863,IQ
+1438884864,1438892031,RU
1438892032,1438908415,CH
1438908416,1438924799,GR
1438924800,1438941183,NO
@@ -29446,11 +26097,7 @@
1441447936,1441456127,BE
1441456128,1441464319,NL
1441464320,1441468671,SE
-1441468672,1441469183,DK
-1441469184,1441469439,SE
-1441469440,1441470271,DK
-1441470272,1441470463,SE
-1441470464,1441470719,DK
+1441468672,1441470719,DK
1441470720,1441472511,SE
1441472512,1441480703,RU
1441480704,1441488895,TR
@@ -29469,7 +26116,9 @@
1441568768,1441570815,FR
1441570816,1441579007,RU
1441579008,1441587199,DE
-1441587200,1441603583,AT
+1441587200,1441594879,AT
+1441594880,1441595135,DE
+1441595136,1441603583,AT
1441603584,1441611775,RU
1441611776,1441619967,DE
1441619968,1441628159,FR
@@ -29497,19 +26146,9 @@
1441767424,1441775615,IT
1441775616,1441783807,ES
1441783808,1441791999,CZ
-1441792000,1441798399,PT
-1441798400,1441798655,US
-1441798656,1441911295,PT
-1441911296,1441911807,US
-1441911808,1441913087,PT
-1441913088,1441913343,US
-1441913344,1442047487,PT
-1442047488,1442047999,US
-1442048000,1442048767,PT
-1442048768,1442049023,US
-1442049024,1442087935,PT
-1442087936,1442088191,GB
-1442088192,1442316287,PT
+1441792000,1441870847,PT
+1441870848,1441871359,US
+1441871360,1442316287,PT
1442316288,1442381823,SK
1442381824,1442447359,RU
1442447360,1442512895,IL
@@ -29553,15 +26192,16 @@
1446576128,1446608895,IR
1446608896,1446641663,BY
1446641664,1446674431,SI
-1446674432,1446707199,DK
+1446674432,1446707175,DK
+1446707176,1446707183,NO
+1446707184,1446707199,DK
1446707200,1446739967,AT
1446739968,1446772735,HU
1446772736,1446805503,SA
1446805504,1446838271,FI
1446838272,1446871039,SI
1446871040,1446903807,CZ
-1446903808,1446904831,AE
-1446904832,1446905087,US
+1446903808,1446905087,AE
1446905088,1446905343,A2
1446905344,1446906879,AE
1446906880,1446907135,IQ
@@ -29586,9 +26226,11 @@
1449459712,1449525247,HU
1449525248,1449590783,RU
1449590784,1449656319,DE
-1449656320,1449840639,RO
-1449840640,1449844735,MD
-1449844736,1449918463,RO
+1449656320,1449841663,RO
+1449841664,1449843711,MD
+1449843712,1449850879,RO
+1449850880,1449852927,MD
+1449852928,1449918463,RO
1449918464,1449951231,JO
1449951232,1449983999,TR
1449984000,1449992191,NL
@@ -29626,7 +26268,9 @@
1450311680,1450442751,FI
1450442752,1450704895,CH
1450704896,1451229183,RO
-1451229184,1455423487,GB
+1451229184,1455204703,GB
+1455204704,1455204735,GG
+1455204736,1455423487,GB
1455423488,1459617791,FR
1459617792,1461714943,IT
1461714944,1462763519,IE
@@ -29634,9 +26278,7 @@
1463162612,1463162612,US
1463162613,1463162613,DK
1463162614,1463162614,US
-1463162615,1463171071,DK
-1463171072,1463171327,US
-1463171328,1463812095,DK
+1463162615,1463812095,DK
1463812096,1464074239,BE
1464074240,1464336383,IL
1464336384,1464467455,DK
@@ -29646,9 +26288,7 @@
1464606720,1464614911,KZ
1464614912,1464664063,UA
1464664064,1464860671,DE
-1464860672,1465242399,GB
-1465242400,1465242415,US
-1465242416,1465384959,GB
+1464860672,1465384959,GB
1465384960,1465647103,FR
1465647104,1465909247,FI
1465909248,1465942015,PL
@@ -29669,12 +26309,9 @@
1466241024,1466249215,PL
1466249216,1466253311,GR
1466253312,1466257407,PL
-1466257408,1466261503,GR
1466261504,1466265599,GB
1466265600,1466269695,HU
-1466269696,1466269951,SA
-1466269952,1466270207,GB
-1466270208,1466302463,SA
+1466269696,1466302463,SA
1466302464,1466335231,GB
1466335232,1466367999,CH
1466368000,1466400767,PT
@@ -29756,7 +26393,9 @@
1475092480,1475094527,CY
1475094528,1475096575,RU
1475096576,1475098623,BH
-1475098624,1475102719,GB
+1475098624,1475101695,GB
+1475101696,1475101951,ZA
+1475101952,1475102719,GB
1475102720,1475104767,FR
1475104768,1475106815,RU
1475106816,1475107583,SE
@@ -29813,9 +26452,7 @@
1475206400,1475206655,AP
1475206656,1475207151,DE
1475207152,1475207183,US
-1475207184,1475208447,AE
-1475208448,1475208959,US
-1475208960,1475209215,AE
+1475207184,1475209215,AE
1475209216,1475211263,UZ
1475211264,1475213311,DE
1475213312,1475215359,FR
@@ -29828,7 +26465,9 @@
1475237888,1475239935,ES
1475239936,1475241983,RU
1475241984,1475244031,MC
-1475244032,1475245055,DE
+1475244032,1475244287,DE
+1475244288,1475244543,SD
+1475244544,1475245055,DE
1475245056,1475245311,US
1475245312,1475245823,DE
1475245824,1475246079,RU
@@ -29902,7 +26541,9 @@
1475706880,1475723263,RU
1475723264,1475726079,GB
1475726080,1475726335,RU
-1475726336,1475739647,GB
+1475726336,1475726847,GB
+1475726848,1475727103,RU
+1475727104,1475739647,GB
1475739648,1475756031,BG
1475756032,1475772415,GB
1475772416,1475788799,LV
@@ -29932,9 +26573,7 @@
1475928064,1475952639,RU
1475952640,1475954175,GB
1475954176,1475954687,NO
-1475954688,1475956735,GB
-1475956736,1475956991,US
-1475956992,1475958527,GB
+1475954688,1475958527,GB
1475958528,1475958783,NO
1475958784,1475960831,GB
1475960832,1475969023,NL
@@ -29948,7 +26587,9 @@
1476042752,1476050943,PL
1476050944,1476067327,RU
1476067328,1476075519,TR
-1476075520,1476083711,NL
+1476075520,1476079555,NL
+1476079556,1476079557,DE
+1476079558,1476083711,NL
1476083712,1476116479,RU
1476116480,1476124671,SE
1476124672,1476132863,PL
@@ -29965,7 +26606,9 @@
1476214784,1476222975,SE
1476222976,1476231167,IT
1476231168,1476239359,NL
-1476239360,1476247551,DE
+1476239360,1476245759,DE
+1476245760,1476246015,PL
+1476246016,1476247551,DE
1476247552,1476255743,RU
1476255744,1476257791,ES
1476257792,1476259839,FR
@@ -29987,22 +26630,14 @@
1476378624,1476386815,KZ
1476386816,1476395007,RU
1476395008,1478492159,ES
-1478492160,1478544383,IT
-1478544384,1478544639,US
-1478544640,1479006463,IT
-1479006464,1479006719,US
-1479006720,1479016191,IT
+1478492160,1479016191,IT
1479016192,1479016447,US
-1479016448,1479400447,IT
-1479400448,1479401471,US
+1479016448,1479400703,IT
+1479400704,1479401471,US
1479401472,1479898367,IT
1479898368,1479898623,US
-1479898624,1480287231,IT
-1480287232,1480287487,US
-1480287488,1480589311,IT
-1480589312,1481629951,DE
-1481629952,1481630143,US
-1481630144,1481633041,DE
+1479898624,1480589311,IT
+1480589312,1481633041,DE
1481633042,1481633042,DE
1481633043,1481637887,DE
1481637888,1481646079,SE
@@ -30016,14 +26651,11 @@
1481711616,1481719807,RU
1481719808,1481727999,CZ
1481728000,1481736191,IE
-1481736192,1481741823,GG
-1481741824,1481742079,GB
+1481736192,1481741568,GG
+1481741569,1481742079,GB
1481742080,1481742335,GG
-1481742336,1481744287,GB
-1481744288,1481744303,GG
-1481744304,1481744328,GB
-1481744329,1481744329,GG
-1481744330,1481744383,GB
+1481742336,1481744127,GB
+1481744128,1481744383,GG
1481744384,1481752575,IT
1481752576,1481760767,RU
1481760768,1481768959,UA
@@ -30081,17 +26713,15 @@
1482948608,1483210751,CZ
1483210752,1483735039,GB
1483735040,1483997183,FI
-1483997184,1484038143,AT
-1484038144,1484038399,US
-1484038400,1484038911,AT
-1484038912,1484039167,US
-1484039168,1484128255,AT
+1483997184,1484128255,AT
1484128256,1484259327,LT
1484259328,1484783615,FR
1484783616,1484849151,DE
1484849152,1484914687,SE
1484914688,1484980223,DE
-1484980224,1485045759,SE
+1484980224,1485001055,SE
+1485001056,1485001087,NO
+1485001088,1485045759,SE
1485045760,1485111295,HU
1485111296,1485242367,DE
1485242368,1485246463,RU
@@ -30111,9 +26741,7 @@
1486061568,1486094335,RU
1486094336,1486127103,ES
1486127104,1486159871,FI
-1486159872,1486179157,IS
-1486179158,1486179158,DK
-1486179159,1486192639,IS
+1486159872,1486192639,IS
1486192640,1486225407,IT
1486225408,1486258175,DE
1486258176,1486290943,RS
@@ -30165,22 +26793,13 @@
1489534976,1489567743,RU
1489567744,1489600511,BH
1489600512,1489633279,RU
-1489633280,1489637887,IT
-1489637888,1489638399,US
-1489638400,1489644543,IT
+1489633280,1489644543,IT
1489644544,1489644799,IQ
-1489644800,1489645055,US
-1489645056,1489645567,IT
-1489645568,1489645823,US
-1489645824,1489646335,IT
-1489646336,1489646847,US
-1489646848,1489649151,IT
-1489649152,1489649158,A2
+1489644800,1489646335,IT
+1489646336,1489646591,US
+1489646592,1489649158,IT
1489649159,1489649159,US
-1489649160,1489649407,A2
-1489649408,1489661951,IT
-1489661952,1489662207,US
-1489662208,1489666047,IT
+1489649160,1489666047,IT
1489666048,1489698815,GB
1489698816,1489731583,MT
1489731584,1489764351,BG
@@ -30201,14 +26820,18 @@
1490075648,1490092031,GB
1490092032,1490108415,DE
1490108416,1490116863,MC
-1490116864,1490118143,FR
-1490118144,1490118399,MC
-1490118400,1490118655,FR
-1490118656,1490124799,MC
+1490116864,1490117119,FR
+1490117120,1490117631,MC
+1490117632,1490118143,FR
+1490118144,1490124799,MC
1490124800,1490157567,HU
1490157568,1490173951,RU
1490173952,1490190335,PT
-1490190336,1490206719,GB
+1490190336,1490196991,GB
+1490196992,1490197247,IE
+1490197248,1490201087,GB
+1490201088,1490201343,DE
+1490201344,1490206719,GB
1490206720,1490223103,GE
1490223104,1490255871,GB
1490255872,1490272255,NL
@@ -30223,7 +26846,9 @@
1490419712,1490436095,DE
1490436096,1490452479,UA
1490452480,1490468863,PT
-1490468864,1490501631,GB
+1490468864,1490478591,GB
+1490478592,1490478847,RU
+1490478848,1490501631,GB
1490501632,1490518015,DE
1490518016,1490534399,RU
1490534400,1490550783,DE
@@ -30236,22 +26861,23 @@
1490944000,1491075071,LT
1491075072,1493172223,TR
1493172224,1493303295,DE
-1493303296,1493431807,FR
-1493431808,1493432319,GP
-1493432320,1493433855,FR
-1493433856,1493434111,MQ
-1493434112,1493434367,FR
+1493303296,1493434367,FR
1493434368,1493565439,SA
1493565440,1493696511,ES
1493696512,1493958655,NO
1493958656,1494220799,DE
-1494220800,1494221567,RE
-1494221568,1494221823,FR
-1494221824,1494222079,RE
-1494222080,1494222335,FR
-1494222336,1494224383,RE
+1494220800,1494221055,FR
+1494221056,1494221311,RE
+1494221312,1494222335,FR
+1494222336,1494223103,RE
+1494223104,1494224127,FR
+1494224128,1494224383,RE
1494224384,1494224895,FR
-1494224896,1494228991,GP
+1494224896,1494226431,GP
+1494226432,1494226943,FR
+1494226944,1494227455,GP
+1494227456,1494227967,FR
+1494227968,1494228991,GP
1494228992,1494237183,RU
1494237184,1494245375,IE
1494245376,1494253567,RU
@@ -30262,7 +26888,18 @@
1494286336,1494294527,HR
1494294528,1494302719,RU
1494302720,1494310911,FI
-1494310912,1494318591,LB
+1494310912,1494311423,GB
+1494311424,1494311679,LB
+1494311680,1494312447,GB
+1494312448,1494312959,LB
+1494312960,1494313215,GB
+1494313216,1494313727,LB
+1494313728,1494313983,GB
+1494313984,1494315007,LB
+1494315008,1494315519,GB
+1494315520,1494316287,LB
+1494316288,1494317055,GB
+1494317056,1494318591,LB
1494318592,1494319103,GB
1494319104,1494327295,IS
1494327296,1494335487,IT
@@ -30344,10 +26981,14 @@
1495070720,1495072767,RU
1495072768,1495105535,CZ
1495105536,1495138303,ES
-1495138304,1495168767,EU
+1495138304,1495167743,EU
+1495167744,1495167999,FR
+1495168000,1495168767,EU
1495168768,1495169023,GB
1495169024,1495170047,EU
-1495170048,1495171071,FR
+1495170048,1495170303,FR
+1495170304,1495170815,EU
+1495170816,1495171071,FR
1495171072,1495203839,NL
1495203840,1495205887,DE
1495205888,1495207935,CZ
@@ -30383,16 +27024,18 @@
1495326720,1495328767,MD
1495328768,1495334911,RO
1495334912,1495335935,MD
-1495335936,1495883775,RO
-1495883776,1495887871,MD
-1495887872,1496262655,RO
-1496262656,1496263167,US
+1495335936,1495875583,RO
+1495875584,1495879679,MD
+1495879680,1495884799,RO
+1495884800,1495885823,MD
+1495885824,1496178943,RO
+1496178944,1496179199,AE
+1496179200,1496262911,RO
+1496262912,1496263167,US
1496263168,1496317951,RO
1496317952,1497366527,DE
1497366528,1498415103,PL
-1498415104,1498452375,FR
-1498452376,1498452376,NC
-1498452377,1499463679,FR
+1498415104,1499463679,FR
1499463680,1499594751,IT
1499594752,1499725823,NL
1499725824,1499856895,IE
@@ -30432,12 +27075,7 @@
1500180480,1500182527,BE
1500182528,1500184575,RU
1500184576,1500184831,GB
-1500184832,1500186367,IM
-1500186368,1500186463,GB
-1500186464,1500186479,IM
-1500186480,1500186527,GB
-1500186528,1500186543,IM
-1500186544,1500186623,GB
+1500184832,1500186623,IM
1500186624,1500188671,KW
1500188672,1500190719,GB
1500190720,1500194815,RU
@@ -30481,9 +27119,7 @@
1500495872,1500512255,BA
1500512256,1500643327,RU
1500643328,1500774399,RO
-1500774400,1500903167,LT
-1500903168,1500903423,GB
-1500903424,1500905471,LT
+1500774400,1500905471,LT
1500905472,1501036543,IT
1501036544,1501298687,RO
1501298688,1501560831,IE
@@ -30491,9 +27127,7 @@
1501822976,1502085119,HU
1502085120,1502216191,RO
1502216192,1502347263,IL
-1502347264,1502399551,ES
-1502399552,1502399615,GB
-1502399616,1502478335,ES
+1502347264,1502478335,ES
1502478336,1502609407,SI
1502609408,1502625791,DE
1502625792,1502642175,SA
@@ -30514,11 +27148,8 @@
1502806016,1502822399,SA
1502822400,1502838783,HU
1502838784,1502855167,SE
-1502855168,1502867455,AZ
-1502867456,1502867711,TR
-1502867712,1502871551,AZ
-1502871552,1502887679,BH
-1502887680,1502887935,US
+1502855168,1502871551,AZ
+1502871552,1502887935,BH
1502887936,1502904319,HU
1502904320,1502920703,IT
1502920704,1502937087,RU
@@ -30569,9 +27200,7 @@
1504444416,1504509951,HR
1504509952,1504575487,SK
1504575488,1504641023,PL
-1504641024,1504675839,RU
-1504675840,1504676095,US
-1504676096,1504706559,RU
+1504641024,1504706559,RU
1504706560,1504837631,CZ
1504837632,1504968703,RU
1504968704,1505099775,PT
@@ -30635,7 +27264,13 @@
1505665024,1505673215,IT
1505673216,1505681407,BG
1505681408,1505689599,RU
-1505689600,1505697791,NO
+1505689600,1505691391,NO
+1505691392,1505691418,DK
+1505691419,1505691423,NO
+1505691424,1505691551,DK
+1505691552,1505691559,NO
+1505691560,1505691647,DK
+1505691648,1505697791,NO
1505697792,1505705983,IE
1505705984,1505714175,DE
1505714176,1505722367,LV
@@ -30662,25 +27297,33 @@
1506410496,1506443263,DE
1506443264,1506445567,GB
1506445568,1506445823,FR
-1506445824,1506447359,GB
+1506445824,1506446079,GB
+1506446080,1506446335,FR
+1506446336,1506447359,GB
1506447360,1506447615,IT
-1506447616,1506450943,GB
+1506447616,1506449151,GB
+1506449152,1506449407,BE
+1506449408,1506450175,GB
+1506450176,1506450431,CH
+1506450432,1506450943,GB
1506450944,1506451199,DK
1506451200,1506451711,GB
-1506451712,1506451967,ES
+1506451712,1506451791,ES
+1506451792,1506451799,GB
+1506451800,1506451967,ES
1506451968,1506452223,GB
1506452224,1506452479,DE
-1506452480,1506456831,GB
+1506452480,1506455295,GB
+1506455296,1506455551,IT
+1506455552,1506456831,GB
1506456832,1506457087,IT
1506457088,1506459177,GB
1506459178,1506459178,EU
1506459179,1506459391,GB
1506459392,1506459647,BE
1506459648,1506459903,GB
-1506459904,1506460159,FR
-1506460160,1506460529,GB
-1506460530,1506460530,FR
-1506460531,1506460927,GB
+1506459904,1506460415,FR
+1506460416,1506460927,GB
1506460928,1506461183,IT
1506461184,1506461439,GB
1506461440,1506461695,IT
@@ -30688,25 +27331,29 @@
1506462624,1506462655,FR
1506462656,1506462719,GB
1506462720,1506462975,IT
-1506462976,1506465023,GB
+1506462976,1506463231,GB
+1506463232,1506463487,SE
+1506463488,1506463743,GB
+1506463744,1506463999,DE
+1506464000,1506465023,GB
1506465024,1506465187,EU
1506465188,1506465188,NL
1506465189,1506465279,EU
1506465280,1506466399,GB
-1506466400,1506466431,DE
-1506466432,1506468863,GB
+1506466400,1506466559,DE
+1506466560,1506468863,GB
1506468864,1506469119,IT
1506469120,1506469631,GB
1506469632,1506469887,IT
1506469888,1506470655,GB
-1506470656,1506471679,IT
-1506471680,1506472191,GB
+1506470656,1506471167,IT
+1506471168,1506472191,GB
1506472192,1506472447,IT
1506472448,1506473471,GB
-1506473472,1506473983,IT
-1506473984,1506474755,GB
-1506474756,1506474756,IT
-1506474757,1506476031,GB
+1506473472,1506474495,IT
+1506474496,1506474751,GB
+1506474752,1506475007,IT
+1506475008,1506476031,GB
1506476032,1506508799,KW
1506508800,1506541567,CZ
1506541568,1506574335,RU
@@ -30808,9 +27455,7 @@
1508648448,1508648703,DK
1508648704,1508650751,SE
1508650752,1508651263,DK
-1508651264,1508651775,SE
-1508651776,1508652031,DK
-1508652032,1508652543,SE
+1508651264,1508652543,SE
1508652544,1508654079,DK
1508654080,1508654591,SE
1508654592,1508655103,DK
@@ -30840,7 +27485,8 @@
1509449728,1509453823,ES
1509453824,1509457919,RU
1509457920,1509462015,NL
-1509462016,1509466111,LI
+1509462016,1509465855,LI
+1509465856,1509466111,CH
1509466112,1509470207,NL
1509470208,1509478399,RU
1509478400,1509482495,FR
@@ -30867,7 +27513,15 @@
1509584896,1509588991,NO
1509588992,1509593087,DE
1509593088,1509601279,RU
-1509601280,1509605375,NL
+1509601280,1509604111,NL
+1509604112,1509604129,BE
+1509604130,1509604130,NL
+1509604131,1509604255,BE
+1509604256,1509604287,NL
+1509604288,1509604303,BE
+1509604304,1509604311,NL
+1509604312,1509604351,BE
+1509604352,1509605375,NL
1509605376,1509609471,PL
1509609472,1509617663,RU
1509617664,1509621759,CZ
@@ -30882,7 +27536,9 @@
1509654528,1509658623,DE
1509658624,1509666815,RU
1509666816,1509670911,IT
-1509670912,1509679103,GB
+1509670912,1509677311,GB
+1509677312,1509677567,NO
+1509677568,1509679103,GB
1509679104,1509683199,ES
1509683200,1509687295,CH
1509687296,1509703679,UA
@@ -30901,247 +27557,321 @@
1509900288,1509916671,RU
1509916672,1509933055,GB
1509933056,1509949439,US
-1509949440,1511981567,FR
-1511981568,1511982847,RE
-1511982848,1511983103,FR
-1511983104,1511985663,RE
-1511985664,1511986175,FR
-1511986176,1511987455,RE
-1511987456,1511987711,FR
-1511987712,1511990271,RE
+1509949440,1511981055,FR
+1511981056,1511986175,RE
+1511986176,1511986431,FR
+1511986432,1511987967,RE
+1511987968,1511988223,FR
+1511988224,1511989247,RE
+1511989248,1511989503,FR
+1511989504,1511989759,RE
+1511989760,1511990015,FR
+1511990016,1511990271,RE
1511990272,1511990527,FR
-1511990528,1511991551,RE
-1511991552,1511991807,FR
-1511991808,1511992831,RE
+1511990528,1511992831,RE
1511992832,1511993087,FR
1511993088,1511993855,RE
1511993856,1511994367,FR
-1511994368,1511994879,RE
-1511994880,1511995391,FR
-1511995392,1511996927,RE
-1511996928,1511997439,FR
+1511994368,1511996671,RE
+1511996672,1511996927,FR
+1511996928,1511997183,RE
+1511997184,1511997439,FR
1511997440,1511997695,MQ
1511997696,1511997951,FR
-1511997952,1511999487,MQ
-1511999488,1512000511,FR
-1512000512,1512001535,MQ
+1511997952,1512001535,MQ
1512001536,1512001791,FR
-1512001792,1512005631,MQ
-1512005632,1512007679,GP
-1512007680,1512007935,FR
-1512007936,1512008191,GP
-1512008192,1512008703,FR
-1512008704,1512008959,GP
-1512008960,1512009471,FR
-1512009472,1512009727,GP
-1512009728,1512011519,GF
-1512011520,1512011775,FR
-1512011776,1512012543,GF
-1512012544,1512012799,FR
-1512012800,1512014335,GF
-1512014336,1512014591,FR
-1512014592,1512015103,GF
-1512015104,1512015615,FR
-1512015616,1512016639,GF
-1512016640,1512017407,FR
-1512017408,1512018431,GF
-1512018432,1512018687,FR
-1512018688,1512019967,GF
-1512019968,1512022015,FR
-1512022016,1512022527,GF
-1512022528,1512023295,FR
-1512023296,1512023551,GF
-1512023552,1512024063,FR
-1512024064,1512025599,GF
+1512001792,1512004863,MQ
+1512004864,1512005119,FR
+1512005120,1512005375,MQ
+1512005376,1512005631,FR
+1512005632,1512009727,GP
+1512009728,1512009983,GF
+1512009984,1512010239,FR
+1512010240,1512010495,GF
+1512010496,1512010751,FR
+1512010752,1512011263,GP
+1512011264,1512011519,GF
+1512011520,1512011775,GP
+1512011776,1512012031,GF
+1512012032,1512012287,GP
+1512012288,1512012543,GF
+1512012544,1512012799,GP
+1512012800,1512013055,FR
+1512013056,1512013311,GF
+1512013312,1512013823,FR
+1512013824,1512014847,GF
+1512014848,1512015103,FR
+1512015104,1512016383,GF
+1512016384,1512016639,FR
+1512016640,1512017151,GF
+1512017152,1512017407,FR
+1512017408,1512019967,GF
+1512019968,1512022271,FR
+1512022272,1512022783,GF
+1512022784,1512023039,FR
+1512023040,1512023807,GF
+1512023808,1512024063,FR
+1512024064,1512024575,GF
+1512024576,1512024831,FR
+1512024832,1512025599,GF
1512025600,1512025855,FR
-1512025856,1512027135,GF
-1512027136,1512027903,FR
-1512027904,1512028159,GF
+1512025856,1512028159,GF
1512028160,1512030207,FR
1512030208,1512046591,YT
1512046592,1512767487,FR
-1512767488,1512772095,RE
+1512767488,1512769023,RE
+1512769024,1512769279,FR
+1512769280,1512771071,RE
+1512771072,1512771327,FR
+1512771328,1512772095,RE
1512772096,1512772863,FR
-1512772864,1512779007,RE
+1512772864,1512773631,RE
+1512773632,1512773887,FR
+1512773888,1512774399,RE
+1512774400,1512774911,FR
+1512774912,1512775423,RE
+1512775424,1512775935,FR
+1512775936,1512776447,RE
+1512776448,1512776959,FR
+1512776960,1512777215,RE
+1512777216,1512777471,FR
+1512777472,1512779007,RE
1512779008,1512779263,FR
1512779264,1512780031,RE
1512780032,1512780287,FR
-1512780288,1512780543,RE
-1512780544,1512780799,FR
-1512780800,1512781823,RE
+1512780288,1512781823,RE
1512781824,1512782847,FR
-1512782848,1512783871,RE
-1512783872,1512784639,FR
-1512784640,1512785919,RE
-1512785920,1512786431,FR
-1512786432,1512788991,RE
+1512782848,1512783359,RE
+1512783360,1512783615,FR
+1512783616,1512783871,RE
+1512783872,1512784127,FR
+1512784128,1512784895,RE
+1512784896,1512785407,FR
+1512785408,1512785919,RE
+1512785920,1512786943,FR
+1512786944,1512788991,RE
1512788992,1512789247,FR
-1512789248,1512791551,RE
+1512789248,1512791039,RE
+1512791040,1512791295,FR
+1512791296,1512791551,RE
1512791552,1512792063,FR
-1512792064,1512793087,RE
-1512793088,1512793343,FR
-1512793344,1512798207,RE
+1512792064,1512798207,RE
1512798208,1512799231,FR
-1512799232,1512800255,RE
-1512800256,1512801791,MQ
-1512801792,1512802047,FR
-1512802048,1512809471,MQ
-1512809472,1512810495,FR
-1512810496,1512814079,MQ
-1512814080,1512814335,FR
-1512814336,1512816383,MQ
-1512816384,1512816639,FR
-1512816640,1512817407,GP
-1512817408,1512817663,FR
-1512817664,1512819711,GP
-1512819712,1512819967,FR
-1512819968,1512824063,GP
+1512799232,1512799487,RE
+1512799488,1512800255,FR
+1512800256,1512803327,MQ
+1512803328,1512803583,FR
+1512803584,1512804351,MQ
+1512804352,1512804607,FR
+1512804608,1512805887,MQ
+1512805888,1512806399,FR
+1512806400,1512809471,MQ
+1512809472,1512809983,FR
+1512809984,1512810239,MQ
+1512810240,1512810495,FR
+1512810496,1512811263,MQ
+1512811264,1512811519,FR
+1512811520,1512811775,MQ
+1512811776,1512812031,FR
+1512812032,1512816639,MQ
+1512816640,1512819199,GP
+1512819200,1512819455,FR
+1512819456,1512820223,GP
+1512820224,1512820479,FR
+1512820480,1512820735,GP
+1512820736,1512820991,FR
+1512820992,1512824063,GP
1512824064,1512824319,FR
-1512824320,1512828159,GP
-1512828160,1512828415,FR
-1512828416,1512828927,GP
-1512828928,1512829439,FR
-1512829440,1512829695,GP
-1512829696,1512829951,FR
-1512829952,1512831743,GP
-1512831744,1512831999,FR
-1512832000,1512833023,GP
-1512833024,1514110975,FR
-1514110976,1514111999,GP
-1514112000,1514112255,FR
-1514112256,1514113535,GP
-1514113536,1514113791,FR
-1514113792,1514118655,GP
-1514118656,1514119423,FR
-1514119424,1514119935,GP
-1514119936,1514120191,FR
-1514120192,1514123007,GP
-1514123008,1514123263,FR
-1514123264,1514126335,GP
-1514126336,1514126591,FR
-1514126592,1514126847,GP
-1514126848,1514127359,FR
-1514127360,1514127615,RE
-1514127616,1514127871,FR
-1514127872,1514131967,RE
-1514131968,1514132479,FR
-1514132480,1514133503,RE
-1514133504,1514134271,FR
-1514134272,1514135295,RE
-1514135296,1514135551,FR
-1514135552,1514142207,RE
-1514142208,1514142463,FR
-1514142464,1514142719,RE
-1514142720,1514142975,FR
-1514142976,1514143743,RE
+1512824320,1512824831,GP
+1512824832,1512825087,FR
+1512825088,1512825599,GP
+1512825600,1512825855,FR
+1512825856,1512826879,GP
+1512826880,1512827135,FR
+1512827136,1512829183,GP
+1512829184,1512829439,FR
+1512829440,1512829951,GP
+1512829952,1512830719,FR
+1512830720,1512832767,GP
+1512832768,1514110975,FR
+1514110976,1514118143,GP
+1514118144,1514118399,FR
+1514118400,1514118655,GP
+1514118656,1514119167,FR
+1514119168,1514127359,GP
+1514127360,1514128127,RE
+1514128128,1514128383,FR
+1514128384,1514131967,RE
+1514131968,1514132223,FR
+1514132224,1514134015,RE
+1514134016,1514134271,FR
+1514134272,1514139391,RE
+1514139392,1514139647,FR
+1514139648,1514143743,RE
1514143744,1515192639,FR
1515192640,1515192655,EU
1515192656,1518338047,FR
-1518338048,1518365183,SE
-1518365184,1518365695,DE
-1518365696,1518365951,SE
-1518365952,1518366207,DE
-1518366208,1518367231,SE
-1518367232,1518367743,DE
-1518367744,1518368255,SE
-1518368256,1518368511,DE
-1518368512,1518368767,SE
-1518368768,1518369279,DE
-1518369280,1518370303,SE
-1518370304,1518370559,DE
+1518338048,1518362623,SE
+1518362624,1518362879,DE
+1518362880,1518363135,SE
+1518363136,1518363391,DE
+1518363392,1518364415,SE
+1518364416,1518364927,DE
+1518364928,1518365311,SE
+1518365312,1518366463,DE
+1518366464,1518366719,SE
+1518366720,1518367743,DE
+1518367744,1518368767,SE
+1518368768,1518369023,DE
+1518369024,1518369791,SE
+1518369792,1518370559,DE
1518370560,1518452735,SE
1518452736,1518460927,AT
-1518460928,1518501887,SE
-1518501888,1518503935,EE
-1518503936,1518508031,LT
+1518460928,1518502911,SE
+1518502912,1518503935,EE
+1518503936,1518504959,LT
+1518504960,1518505983,SE
+1518505984,1518508031,LT
1518508032,1518510079,SE
-1518510080,1518514175,LV
-1518514176,1518555135,SE
-1518555136,1518557183,NL
-1518557184,1518731775,SE
-1518731776,1518732287,DE
-1518732288,1518732799,SE
-1518732800,1518733311,DE
-1518733312,1518733823,SE
-1518733824,1518736383,DE
-1518736384,1518737919,SE
+1518510080,1518516223,LV
+1518516224,1518551039,SE
+1518551040,1518559231,NL
+1518559232,1518563327,SE
+1518563328,1518565375,NL
+1518565376,1518733823,SE
+1518733824,1518734335,DE
+1518734336,1518734847,SE
+1518734848,1518735359,DE
+1518735360,1518736383,SE
+1518736384,1518737407,DE
+1518737408,1518737919,SE
1518737920,1518738431,DE
-1518738432,1518742527,SE
+1518738432,1518740479,SE
+1518740480,1518740991,DE
+1518740992,1518742527,SE
1518742528,1518743551,DE
1518743552,1518744575,SE
1518744576,1518745087,DE
-1518745088,1518864895,SE
-1518864896,1518865407,DE
+1518745088,1518746111,SE
+1518746112,1518746623,DE
+1518746624,1518863871,SE
+1518863872,1518865407,DE
1518865408,1518865919,SE
-1518865920,1518866687,DE
-1518866688,1518867455,SE
-1518867456,1518873599,DE
-1518873600,1518874111,SE
-1518874112,1518874367,DE
+1518865920,1518866175,DE
+1518866176,1518866431,SE
+1518866432,1518866687,DE
+1518866688,1518867967,SE
+1518867968,1518868479,DE
+1518868480,1518869503,SE
+1518869504,1518870015,DE
+1518870016,1518870271,SE
+1518870272,1518870527,DE
+1518870528,1518871295,SE
+1518871296,1518874367,DE
1518874368,1518874623,SE
-1518874624,1518876671,DE
-1518876672,1518877695,SE
-1518877696,1518879999,DE
-1518880000,1518881023,SE
-1518881024,1518881791,DE
-1518881792,1518882559,SE
-1518882560,1518883327,DE
+1518874624,1518875903,DE
+1518875904,1518876159,SE
+1518876160,1518876415,DE
+1518876416,1518876671,SE
+1518876672,1518877695,DE
+1518877696,1518878463,SE
+1518878464,1518878975,DE
+1518878976,1518879231,SE
+1518879232,1518879743,DE
+1518879744,1518880767,SE
+1518880768,1518881791,DE
+1518881792,1518882815,SE
+1518882816,1518883327,DE
1518883328,1518883839,SE
-1518883840,1518885887,DE
-1518885888,1518890495,SE
-1518890496,1518892031,DE
-1518892032,1518893055,SE
-1518893056,1518896127,DE
-1518896128,1518899199,SE
-1518899200,1518900223,DE
-1518900224,1518901759,SE
-1518901760,1518902271,DE
-1518902272,1518902783,SE
-1518902784,1518903039,DE
-1518903040,1518904319,SE
-1518904320,1518905343,DE
-1518905344,1518905855,SE
-1518905856,1518906367,DE
-1518906368,1518907391,SE
-1518907392,1518909439,DE
-1518909440,1518911999,SE
-1518912000,1518912255,DE
-1518912256,1518913023,SE
-1518913024,1518913279,DE
-1518913280,1518914047,SE
-1518914048,1518914303,DE
-1518914304,1518914559,SE
-1518914560,1518915583,DE
-1518915584,1518917631,SE
-1518917632,1518919679,DE
-1518919680,1518920191,SE
-1518920192,1518920703,DE
-1518920704,1518922751,SE
-1518922752,1518924799,DE
-1518924800,1518926335,SE
-1518926336,1518926591,DE
-1518926592,1518964991,SE
-1518964992,1518965119,HR
-1518965120,1519149055,SE
-1519149056,1519157247,RU
-1519157248,1519452159,SE
+1518883840,1518884351,DE
+1518884352,1518884863,SE
+1518884864,1518885119,DE
+1518885120,1518885887,SE
+1518885888,1518886911,DE
+1518886912,1518888447,SE
+1518888448,1518891007,DE
+1518891008,1518891519,SE
+1518891520,1518892031,DE
+1518892032,1518892287,SE
+1518892288,1518892799,DE
+1518892800,1518893055,SE
+1518893056,1518893567,DE
+1518893568,1518894079,SE
+1518894080,1518894591,DE
+1518894592,1518895615,SE
+1518895616,1518895871,DE
+1518895872,1518896639,SE
+1518896640,1518897663,DE
+1518897664,1518898175,SE
+1518898176,1518900223,DE
+1518900224,1518900991,SE
+1518900992,1518902783,DE
+1518902784,1518903295,SE
+1518903296,1518903807,DE
+1518903808,1518904319,SE
+1518904320,1518904831,DE
+1518904832,1518905343,SE
+1518905344,1518906367,DE
+1518906368,1518907903,SE
+1518907904,1518909439,DE
+1518909440,1518909951,SE
+1518909952,1518910463,DE
+1518910464,1518910719,SE
+1518910720,1518910975,DE
+1518910976,1518911487,SE
+1518911488,1518911743,DE
+1518911744,1518912511,SE
+1518912512,1518913023,DE
+1518913024,1518913535,SE
+1518913536,1518914047,DE
+1518914048,1518914303,SE
+1518914304,1518914559,DE
+1518914560,1518914815,SE
+1518914816,1518916351,DE
+1518916352,1518919679,SE
+1518919680,1518920703,DE
+1518920704,1518921215,SE
+1518921216,1518921727,DE
+1518921728,1518921983,SE
+1518921984,1518922495,DE
+1518922496,1518922751,SE
+1518922752,1518923263,DE
+1518923264,1518924287,SE
+1518924288,1518925311,DE
+1518925312,1518925567,SE
+1518925568,1518925823,DE
+1518925824,1518927359,SE
+1518927360,1518927871,DE
+1518927872,1518964735,SE
+1518964736,1518964991,HR
+1518964992,1518965503,SE
+1518965504,1518965759,HR
+1518965760,1518966015,SE
+1518966016,1518966271,HR
+1518966272,1518966527,SE
+1518966528,1518966783,HR
+1518966784,1518968063,SE
+1518968064,1518968319,HR
+1518968320,1518968831,SE
+1518968832,1518969087,HR
+1518969088,1519452159,SE
1519452160,1519517695,NL
1519517696,1519583231,AT
1519583232,1519648767,IT
1519648768,1519714303,SA
1519714304,1519779839,NO
1519779840,1519910911,RU
-1519910912,1519926015,GB
-1519926016,1519926271,US
-1519926272,1519927295,GB
-1519927296,1519927807,NL
-1519927808,1519929343,GB
+1519910912,1519927615,GB
+1519927616,1519927679,NL
+1519927680,1519929343,GB
1519929344,1519931391,NL
1519931392,1519943679,GB
1519943680,1519976447,AT
-1519976448,1519980223,DE
-1519980224,1519980255,GB
-1519980256,1520009215,DE
+1519976448,1519980159,DE
+1519980160,1519980191,GB
+1519980192,1519980199,DE
+1519980200,1519980287,GB
+1519980288,1520009215,DE
1520009216,1520041983,SY
1520041984,1520074751,RU
1520074752,1520107519,BG
@@ -31158,7 +27888,9 @@
1522270208,1522401279,RU
1522401280,1522532351,EE
1522532352,1524629503,GB
-1524629504,1525678079,SE
+1524629504,1524886783,SE
+1524886784,1524887039,DK
+1524887040,1525678079,SE
1525678080,1526726655,GB
1526726656,1531183103,DE
1531183104,1531445247,FR
@@ -31232,12 +27964,14 @@
1533478912,1533480959,RS
1533480960,1533483007,NL
1533483008,1533485055,AM
-1533485056,1533486239,GB
-1533486240,1533486271,SE
-1533486272,1533486303,GB
-1533486304,1533486335,SE
-1533486336,1533487103,GB
-1533487104,1533489151,FR
+1533485056,1533486079,GB
+1533486080,1533486207,SE
+1533486208,1533486335,GB
+1533486336,1533486591,NO
+1533486592,1533487103,GB
+1533487104,1533487359,FR
+1533487360,1533487615,US
+1533487616,1533489151,FR
1533489152,1533491199,ES
1533491200,1533493247,AM
1533493248,1533499391,RU
@@ -31263,31 +27997,35 @@
1533640704,1533669375,RU
1533669376,1533671423,DE
1533671424,1533673471,FI
-1533673472,1533677567,GB
+1533673472,1533677567,DE
1533677568,1533679615,ES
-1533679616,1533681663,GB
+1533679616,1533681663,PL
1533681664,1533689855,IQ
-1533689856,1533702143,GB
+1533689856,1533698047,IR
+1533698048,1533702143,JO
1533702144,1533704191,RU
-1533704192,1533712383,DE
-1533712384,1533713407,GB
-1533713408,1533722623,DE
-1533722624,1533724671,GB
+1533704192,1533722623,DE
+1533722624,1533724671,SE
1533724672,1533726719,RU
1533726720,1533728767,CY
1533728768,1533730815,FR
1533730816,1533732863,NL
1533732864,1533734911,RU
1533734912,1533739007,CZ
-1533739008,1533847551,GB
+1533739008,1533804543,RU
+1533804544,1533837311,DE
+1533837312,1533845503,IR
+1533845504,1533847551,GB
1533847552,1533849599,RU
1533849600,1533851647,EE
1533851648,1533853695,CH
-1533853696,1533878271,GB
+1533853696,1533870079,IQ
+1533870080,1533874175,GB
+1533874176,1533878271,DE
1533878272,1533880319,CZ
1533880320,1533882367,GB
1533882368,1533886463,IT
-1533886464,1533894655,GB
+1533886464,1533894655,RU
1533894656,1533896703,ES
1533896704,1533900799,PT
1533900800,1533902847,FR
@@ -31304,7 +28042,9 @@
1533933568,1533935615,GI
1533935616,1534066687,GB
1534066688,1534328831,AT
-1534328832,1534459903,ES
+1534328832,1534363903,ES
+1534363904,1534364159,PT
+1534364160,1534459903,ES
1534459904,1534590975,AT
1534590976,1534656511,HU
1534656512,1534720003,FR
@@ -31329,15 +28069,13 @@
1534849024,1534853119,NL
1534853120,1534918655,UA
1534918656,1534984191,GB
-1534984192,1534985727,ES
-1534985728,1534986239,SE
-1534986240,1535049727,ES
+1534984192,1535049727,ES
1535049728,1535115263,SK
1535115264,1535197183,AT
-1535197184,1535205375,SE
-1535205376,1535221759,AT
-1535221760,1535238143,SE
-1535238144,1535242239,AT
+1535197184,1535213567,SE
+1535213568,1535229951,AT
+1535229952,1535238655,SE
+1535238656,1535242239,AT
1535242240,1535246335,SE
1535246336,1535377407,AT
1535377408,1535442943,GR
@@ -31359,8 +28097,10 @@
1535631360,1535635455,GB
1535635456,1535639551,AZ
1535639552,1535672319,GB
-1535672320,1535705343,DE
-1535705344,1535721471,CH
+1535672320,1535706111,DE
+1535706112,1535715839,CH
+1535715840,1535716351,DE
+1535716352,1535721471,CH
1535721472,1535721727,DE
1535721728,1535737855,CH
1535737856,1535770623,HU
@@ -31369,7 +28109,9 @@
1535836160,1535868927,HU
1535868928,1535901695,BG
1535901696,1535934463,GR
-1535934464,1535963391,KW
+1535934464,1535959551,KW
+1535959552,1535959807,US
+1535959808,1535963391,KW
1535963392,1535963647,US
1535963648,1535967231,KW
1535967232,1535999999,AT
@@ -31379,12 +28121,14 @@
1536040960,1536045055,GB
1536045056,1536045311,IQ
1536045312,1536045567,LB
-1536045568,1536049151,DE
+1536045568,1536047103,DE
+1536047104,1536047359,LB
+1536047360,1536049151,DE
1536049152,1536051199,IT
1536051200,1536057343,RU
1536057344,1536061439,IE
1536061440,1536065535,SE
-1536065536,1536065791,GB
+1536065536,1536065791,DE
1536065792,1536066303,LU
1536066304,1536066815,NL
1536066816,1536067071,RU
@@ -31494,20 +28238,12 @@
1538981888,1538990079,BY
1538990080,1538998271,CZ
1538998272,1539006463,AD
-1539006464,1539006719,AL
-1539006720,1539006975,US
-1539006976,1539011327,AL
-1539011328,1539011583,DE
-1539011584,1539011839,AL
-1539011840,1539012095,RS
-1539012096,1539014655,AL
+1539006464,1539014655,AL
1539014656,1539022847,RS
1539022848,1539031039,LT
1539031040,1539039231,IT
1539039232,1539047423,PL
-1539047424,1539047807,IT
-1539047808,1539047935,HR
-1539047936,1539055615,IT
+1539047424,1539055615,IT
1539055616,1539063807,LV
1539063808,1539071999,FR
1539072000,1539080191,PL
@@ -31526,9 +28262,7 @@
1539135488,1539136255,GB
1539136256,1539136511,US
1539136512,1539137535,GB
-1539137536,1539137791,NL
-1539137792,1539138047,PL
-1539138048,1539139583,NL
+1539137536,1539139583,NL
1539139584,1539141631,FR
1539141632,1539143679,RU
1539143680,1539145727,NO
@@ -31915,8 +28649,7 @@
1539567616,1539568127,DE
1539568128,1539568639,NL
1539568640,1539569151,UA
-1539569152,1539569407,LV
-1539569408,1539569663,EE
+1539569152,1539569663,EE
1539569664,1539570175,UA
1539570176,1539570687,PL
1539570688,1539571711,RU
@@ -32818,8 +29551,11 @@
1540217856,1540218879,GB
1540218880,1540219903,RU
1540219904,1540220927,PL
-1540220928,1540221951,NL
-1540221952,1540223999,RU
+1540220928,1540221441,NL
+1540221442,1540221569,US
+1540221570,1540221825,NL
+1540221826,1540222081,US
+1540222082,1540223999,RU
1540224000,1540225023,PL
1540225024,1540226047,GB
1540226048,1540227071,RU
@@ -32949,7 +29685,9 @@
1540299776,1540300287,KZ
1540300288,1540300799,RU
1540300800,1540301311,DK
-1540301312,1540301823,IL
+1540301312,1540301568,IL
+1540301569,1540301569,A2
+1540301570,1540301823,IL
1540301824,1540302847,GB
1540302848,1540303871,RU
1540303872,1540304895,UA
@@ -33297,8 +30035,7 @@
1540428288,1540428543,SI
1540428544,1540428799,FR
1540428800,1540429055,PL
-1540429056,1540429311,BG
-1540429312,1540429823,RO
+1540429568,1540429823,RO
1540429824,1540430079,UA
1540430080,1540430335,FR
1540430336,1540430591,DE
@@ -33315,7 +30052,8 @@
1540433152,1540433407,GB
1540433408,1540433663,AM
1540433664,1540433919,DK
-1540433920,1540434431,GB
+1540433920,1540434175,GB
+1540434176,1540434431,CH
1540434432,1540434687,DE
1540434688,1540434943,GB
1540434944,1540435199,FR
@@ -33366,7 +30104,6 @@
1540448256,1540448511,UA
1540448512,1540448767,IT
1540448768,1540449023,CH
-1540449024,1540449279,DE
1540449280,1540449535,UA
1540449536,1540449791,CZ
1540449792,1540450047,RO
@@ -33410,7 +30147,6 @@
1540460800,1540461055,SI
1540461056,1540461311,BG
1540461312,1540461823,RU
-1540461824,1540462079,RO
1540462080,1540462335,SI
1540462336,1540462591,UA
1540462592,1540463103,PL
@@ -33905,7 +30641,7 @@
1540702464,1540702719,PT
1540702720,1540702975,DK
1540702976,1540703231,RU
-1540703232,1540703487,GB
+1540703232,1540703487,DE
1540703488,1540703743,NL
1540703744,1540703999,DK
1540704000,1540704255,PL
@@ -34163,7 +30899,9 @@
1540860928,1540861951,KZ
1540861952,1540862975,BY
1540862976,1540865023,GB
-1540865024,1540872191,RU
+1540865024,1540867071,RU
+1540867072,1540868095,KZ
+1540868096,1540872191,RU
1540872192,1540873215,BG
1540873216,1540875263,RU
1540875264,1540876287,PL
@@ -34535,7 +31273,6 @@
1541000192,1541000447,PL
1541000448,1541000703,BG
1541000704,1541000959,DE
-1541000960,1541001215,RU
1541001216,1541001471,PL
1541001472,1541001727,SE
1541001728,1541001983,NL
@@ -34752,7 +31489,6 @@
1541161984,1541162239,BE
1541162240,1541162495,RU
1541162496,1541162751,GB
-1541162752,1541163007,DE
1541163008,1541163263,RO
1541163264,1541163519,PL
1541163520,1541163775,DE
@@ -35257,7 +31993,6 @@
1541383424,1541383679,LV
1541383680,1541383935,SI
1541383936,1541384447,PL
-1541384448,1541384703,LV
1541384704,1541384959,RU
1541384960,1541385215,PL
1541385216,1541385471,NL
@@ -35378,8 +32113,8 @@
1541426176,1541426687,RU
1541426688,1541427199,UA
1541427200,1541428223,RU
-1541428224,1541428735,UA
-1541428736,1541429247,RU
+1541428224,1541428991,UA
+1541428992,1541429247,RU
1541429248,1541429759,FI
1541429760,1541430271,CZ
1541430272,1541430783,LT
@@ -36012,7 +32747,6 @@
1541831680,1541832191,SA
1541832192,1541833983,SE
1541833984,1541834239,RU
-1541834240,1541834495,LV
1541834496,1541834751,RU
1541835776,1541836287,CH
1541836288,1541836543,AT
@@ -36182,7 +32916,7 @@
1541927168,1541927679,PL
1541927680,1541927935,DE
1541927936,1541929983,PL
-1541929984,1541931007,TJ
+1541929984,1541931007,RU
1541931008,1541932031,UA
1541932032,1541932543,PL
1541932544,1541935103,RU
@@ -37435,12 +34169,9 @@
1546076160,1546080255,RU
1546080256,1546084351,AZ
1546084352,1546088447,RU
-1546088448,1546092287,GB
-1546092288,1546092543,ZA
+1546088448,1546092543,GB
1546092544,1546096639,RU
-1546096640,1546097919,IT
-1546097920,1546098175,GB
-1546098176,1546100735,IT
+1546096640,1546100735,IT
1546100736,1546104831,AT
1546104832,1546108927,IE
1546108928,1546113023,IM
@@ -37509,28 +34240,31 @@
1546387456,1546518527,TR
1546518528,1546649599,KZ
1546649600,1546665983,SA
-1546665984,1546674175,GB
-1546674176,1546674431,AE
-1546674432,1546679839,GB
+1546665984,1546679839,GB
1546679840,1546679840,HR
1546679841,1546682367,GB
1546682368,1546698751,BE
1546698752,1546715135,NL
1546715136,1546731519,LV
-1546731520,1546732543,RE
-1546732544,1546733567,FR
-1546733568,1546735359,RE
-1546735360,1546735615,FR
-1546735616,1546736127,RE
-1546736128,1546736639,FR
-1546736640,1546737663,RE
-1546737664,1546739711,FR
-1546739712,1546741503,GP
-1546741504,1546741631,FR
-1546741632,1546742015,GP
-1546742016,1546742527,MQ
-1546742528,1546743807,GF
-1546743808,1546747903,MQ
+1546731520,1546733567,RE
+1546733568,1546734079,FR
+1546734080,1546734591,RE
+1546734592,1546735103,FR
+1546735104,1546735359,RE
+1546735360,1546739711,FR
+1546739712,1546739967,GP
+1546739968,1546740223,FR
+1546740224,1546741503,GP
+1546741504,1546742271,FR
+1546742272,1546742527,MQ
+1546742528,1546742783,FR
+1546742784,1546743039,GF
+1546743040,1546743551,FR
+1546743552,1546743807,GF
+1546743808,1546744319,FR
+1546744320,1546744831,MQ
+1546744832,1546747647,FR
+1546747648,1546747903,MQ
1546747904,1546764287,RU
1546764288,1546780671,UA
1546780672,1546797055,IR
@@ -37605,8 +34339,8 @@
1547612160,1547616255,IR
1547616256,1547620351,DK
1547620352,1547623167,JE
-1547623168,1547623679,NG
-1547623680,1547624447,JE
+1547623168,1547623423,NG
+1547623424,1547624447,JE
1547624448,1547628543,CZ
1547628544,1547632639,BG
1547632640,1547636735,TR
@@ -37626,9 +34360,7 @@
1547694080,1547698175,HU
1547698176,1547846143,NL
1547846144,1547846335,FR
-1547846336,1548156995,NL
-1548156996,1548156996,SE
-1548156997,1548158599,NL
+1547846336,1548158599,NL
1548158600,1548158607,GB
1548158608,1548159231,NL
1548159232,1548159235,ES
@@ -37644,59 +34376,96 @@
1550319616,1550581759,CH
1550581760,1550843903,NL
1550843904,1550974975,UA
-1550974976,1551022847,RO
-1551022848,1551036415,MD
-1551036416,1551039999,RO
+1550974976,1551011839,RO
+1551011840,1551015935,MD
+1551015936,1551021567,RO
+1551021568,1551023103,MD
+1551023104,1551024127,RO
+1551024128,1551030271,MD
+1551030272,1551034623,RO
+1551034624,1551034879,MD
+1551034880,1551039999,RO
1551040000,1551040255,MD
-1551040256,1551056895,RO
-1551056896,1551066111,MD
-1551066112,1551076863,RO
+1551040256,1551042559,RO
+1551042560,1551043583,MD
+1551043584,1551046655,RO
+1551046656,1551046911,MD
+1551046912,1551056895,RO
+1551056896,1551058943,MD
+1551058944,1551060991,RO
+1551060992,1551065599,MD
+1551065600,1551071231,RO
+1551071232,1551073279,MD
+1551073280,1551076863,RO
1551076864,1551077119,MD
-1551077120,1551081471,RO
-1551081472,1551097855,MD
-1551097856,1551101951,RO
-1551101952,1551106047,MD
+1551077120,1551077375,RO
+1551077376,1551081471,MD
+1551081472,1551083519,RO
+1551083520,1551089663,MD
+1551089664,1551090687,RO
+1551090688,1551091711,MD
+1551091712,1551106047,RO
1551106048,1551237119,DE
1551237120,1551368191,GR
1551368192,1551499263,NL
-1551499264,1551531519,EU
-1551531520,1551531775,GB
-1551531776,1551553023,EU
-1551553024,1551553279,GB
-1551553280,1551630335,EU
+1551499264,1551630335,EU
1551630336,1551892479,RU
1551892480,1553989631,FR
-1553989632,1553994239,MQ
-1553994240,1553994495,FR
-1553994496,1553994751,MQ
-1553994752,1553995007,FR
-1553995008,1553998335,MQ
-1553998336,1553998591,FR
-1553998592,1554006015,MQ
+1553989632,1553991167,MQ
+1553991168,1553991423,FR
+1553991424,1553992959,MQ
+1553992960,1553993215,FR
+1553993216,1553994495,MQ
+1553994496,1553994751,FR
+1553994752,1553997055,MQ
+1553997056,1553997311,FR
+1553997312,1553997823,MQ
+1553997824,1553998079,FR
+1553998080,1554000895,MQ
+1554000896,1554001919,FR
+1554001920,1554002687,MQ
+1554002688,1554002943,FR
+1554002944,1554005247,MQ
+1554005248,1554005503,FR
+1554005504,1554006015,MQ
1554006016,1554006271,FR
-1554006272,1554006527,GP
-1554006528,1554007039,FR
-1554007040,1554011391,GP
-1554011392,1554011647,FR
-1554011648,1554013183,GP
+1554006272,1554007039,GP
+1554007040,1554007295,FR
+1554007296,1554008063,GP
+1554008064,1554008831,FR
+1554008832,1554013183,GP
1554013184,1554013439,FR
-1554013440,1554016255,GP
-1554016256,1554016511,FR
-1554016512,1554019583,GP
-1554019584,1554019839,FR
-1554019840,1554030591,GP
-1554030592,1554032639,MQ
-1554032640,1554032895,FR
-1554032896,1554034431,MQ
+1554013440,1554017279,GP
+1554017280,1554017535,FR
+1554017536,1554018303,GP
+1554018304,1554018815,FR
+1554018816,1554022143,GP
+1554022144,1554022399,FR
+1554022400,1554023167,GP
+1554023168,1554023423,FR
+1554023424,1554030591,GP
+1554030592,1554031359,MQ
+1554031360,1554031871,FR
+1554031872,1554032383,MQ
+1554032384,1554032639,FR
+1554032640,1554034431,MQ
1554034432,1554034687,FR
-1554034688,1554038783,MQ
-1554038784,1554046975,RE
-1554046976,1554047231,FR
-1554047232,1554049791,RE
-1554049792,1554050303,FR
-1554050304,1554053119,RE
-1554053120,1554053375,FR
-1554053376,1554054911,RE
+1554034688,1554036735,MQ
+1554036736,1554036991,FR
+1554036992,1554038015,MQ
+1554038016,1554038271,FR
+1554038272,1554038783,MQ
+1554038784,1554039295,RE
+1554039296,1554039551,FR
+1554039552,1554039807,RE
+1554039808,1554040063,FR
+1554040064,1554044671,RE
+1554044672,1554044927,FR
+1554044928,1554046719,RE
+1554046720,1554046975,FR
+1554046976,1554049791,RE
+1554049792,1554050047,FR
+1554050048,1554054911,RE
1554054912,1556086783,FR
1556086784,1556491204,DE
1556491205,1556491205,EU
@@ -37711,9 +34480,7 @@
1559271424,1559273471,FI
1559273472,1559281663,CZ
1559281664,1559289855,RU
-1559289856,1559296383,SK
-1559296384,1559296511,AE
-1559296512,1559298047,SK
+1559289856,1559298047,SK
1559298048,1559306239,RU
1559306240,1559314431,JO
1559314432,1559322623,GE
@@ -37762,24 +34529,23 @@
1559838720,1559855103,UA
1559855104,1559887871,HU
1559887872,1559920639,PT
-1559920640,1559923711,LU
-1559923712,1559923967,ES
-1559923968,1559924693,LU
+1559920640,1559924693,LU
1559924694,1559924694,GB
-1559924695,1559925759,LU
-1559925760,1559926271,DE
-1559926272,1559934975,LU
-1559934976,1559937023,DE
-1559937024,1559940095,LU
-1559940096,1559941119,DE
-1559941120,1559941631,LU
+1559924695,1559933183,LU
+1559933184,1559933439,DE
+1559933440,1559934463,LU
+1559934464,1559936511,DE
+1559936512,1559937535,LU
+1559937536,1559938303,DE
+1559938304,1559941631,LU
1559941632,1559943167,DE
1559943168,1559947775,LU
1559947776,1559948287,DE
-1559948288,1559948799,LU
-1559948800,1559949311,DE
-1559949312,1559951871,LU
-1559951872,1559953407,DE
+1559948288,1559951103,LU
+1559951104,1559951359,DE
+1559951360,1559951871,LU
+1559951872,1559952895,DE
+1559952896,1559953407,LU
1559953408,1559986175,MT
1559986176,1560018943,IE
1560018944,1560051711,DE
@@ -37790,16 +34556,10 @@
1560182784,1560215551,SE
1560215552,1560281087,RU
1560281088,1562378239,FR
-1562378240,1564389631,IT
-1564389632,1564389887,US
-1564389888,1564474111,IT
-1564474112,1564474367,US
-1564474368,1564999679,IT
+1562378240,1564999679,IT
1564999680,1565523967,UA
1565523968,1565655039,RU
-1565655040,1565746147,AT
-1565746148,1565746151,NL
-1565746152,1565786111,AT
+1565655040,1565786111,AT
1565786112,1565917183,BY
1565917184,1566048255,RS
1566048256,1566056447,RU
@@ -37897,7 +34657,9 @@
1566388224,1566390271,HU
1566390272,1566392319,LT
1566392320,1566394367,ES
-1566394368,1566396415,NO
+1566394368,1566394529,NO
+1566394530,1566394534,DK
+1566394535,1566396415,NO
1566396416,1566398463,GB
1566398464,1566400511,RU
1566400512,1566402559,NO
@@ -37970,8 +34732,9 @@
1566554112,1566556159,UA
1566556160,1566558207,RU
1566558208,1566560255,JO
-1566560256,1566562303,SM
-1566562304,1566564351,IT
+1566560256,1566560767,IT
+1566560768,1566561023,SM
+1566561024,1566564351,IT
1566564352,1566566399,IS
1566566400,1566568447,FR
1566568448,1566570495,KZ
@@ -37995,56 +34758,67 @@
1567555584,1567621119,AT
1567621120,1567716607,RO
1567716608,1567716863,MD
-1567716864,1567883775,RO
+1567716864,1567763521,RO
+1567763522,1567763522,EU
+1567763523,1567763542,RO
+1567763543,1567763543,EU
+1567763544,1567883775,RO
1567883776,1567884031,MD
-1567884032,1567889407,RO
-1567889408,1567891455,MD
-1567891456,1567911935,RO
-1567911936,1567916031,MD
+1567884032,1567890431,RO
+1567890432,1567890687,MD
+1567890688,1567891455,RO
+1567891456,1567895551,MD
+1567895552,1567913983,RO
+1567913984,1567916031,MD
1567916032,1567932415,RO
-1567932416,1567941119,MD
-1567941120,1568178175,RO
+1567932416,1567940607,MD
+1567940608,1567943935,RO
+1567943936,1567944191,MD
+1567944192,1568178175,RO
1568178176,1568210943,RU
1568210944,1568243711,GB
1568243712,1568245759,GP
-1568245760,1568246527,FR
+1568245760,1568246015,FR
+1568246016,1568246527,GF
1568246528,1568247039,GP
-1568247040,1568247295,GF
-1568247296,1568247551,FR
+1568247040,1568247551,GF
1568247552,1568248831,GP
-1568248832,1568249087,FR
-1568249088,1568249343,MQ
-1568249344,1568250111,FR
-1568250112,1568250879,GP
-1568250880,1568251007,MQ
-1568251008,1568251135,FR
-1568251136,1568253951,MQ
-1568253952,1568254463,GP
+1568248832,1568249087,MQ
+1568249088,1568249855,FR
+1568249856,1568250879,GP
+1568250880,1568251135,MQ
+1568251136,1568251391,FR
+1568251392,1568251647,GP
+1568251648,1568251903,FR
+1568251904,1568253951,MQ
+1568253952,1568254079,FR
+1568254080,1568254463,GP
1568254464,1568254975,FR
-1568254976,1568257791,GP
-1568257792,1568258303,MQ
-1568258304,1568259071,FR
-1568259072,1568260351,MQ
-1568260352,1568261119,FR
+1568254976,1568255743,GP
+1568255744,1568255999,FR
+1568256000,1568257791,GP
+1568257792,1568258047,MQ
+1568258048,1568258559,FR
+1568258560,1568259071,GF
+1568259072,1568260223,MQ
+1568260224,1568261119,FR
1568261120,1568264191,MQ
-1568264192,1568266239,GP
-1568266240,1568266495,FR
-1568266496,1568267519,GP
-1568267520,1568268543,FR
-1568268544,1568269311,GF
+1568264192,1568268287,GP
+1568268288,1568269311,FR
1568269312,1568269823,MQ
-1568269824,1568270079,FR
-1568270080,1568270335,MQ
-1568270336,1568270847,FR
-1568270848,1568271359,GP
-1568271360,1568271615,FR
-1568271616,1568272639,GP
+1568269824,1568270847,FR
+1568270848,1568271103,GP
+1568271104,1568271359,FR
+1568271360,1568272639,GP
1568272640,1568273407,GF
-1568273408,1568275967,MQ
-1568275968,1568276479,FR
-1568276480,1568292939,DE
-1568292940,1568292941,GB
-1568292942,1568309247,DE
+1568273408,1568274687,MQ
+1568274688,1568274943,FR
+1568274944,1568275199,MQ
+1568275200,1568275455,FR
+1568275456,1568275967,MQ
+1568275968,1568276223,FR
+1568276224,1568276479,MQ
+1568276480,1568309247,DE
1568309248,1568342015,RO
1568342016,1568374783,BG
1568374784,1568440319,RU
@@ -38092,7 +34866,9 @@
1570627584,1570635775,RU
1570635776,1570644991,FR
1570644992,1570645247,GB
-1570645248,1570652159,FR
+1570645248,1570647807,FR
+1570647808,1570648063,GB
+1570648064,1570652159,FR
1570652160,1570655999,SE
1570656000,1570656255,GB
1570656256,1570668543,SE
@@ -38122,7 +34898,8 @@
1571443456,1571443711,UA
1571443712,1571531263,CZ
1571531264,1571531775,UA
-1571531776,1571534847,CZ
+1571531776,1571534335,CZ
+1571534336,1571534847,RU
1571534848,1571535103,LV
1571535104,1571551231,CZ
1571551232,1571552255,UA
@@ -38167,26 +34944,28 @@
1571790848,1571794943,PL
1571794944,1571799039,NL
1571799040,1571815423,UA
-1571815424,1571815935,RE
-1571815936,1571816447,FR
-1571816448,1571817983,RE
+1571815424,1571817215,FR
+1571817216,1571817983,RE
1571817984,1571818239,FR
-1571818240,1571822079,RE
-1571822080,1571822335,FR
-1571822336,1571823359,RE
-1571823360,1571823487,FR
-1571823488,1571825919,RE
-1571825920,1571826175,FR
-1571826176,1571827967,RE
-1571827968,1571828223,FR
-1571828224,1571829247,RE
-1571829248,1571829759,FR
-1571829760,1571831807,RE
+1571818240,1571818751,RE
+1571818752,1571820543,FR
+1571820544,1571821311,RE
+1571821312,1571822591,FR
+1571822592,1571823103,RE
+1571823104,1571824383,FR
+1571824384,1571824639,RE
+1571824640,1571826175,FR
+1571826176,1571826687,RE
+1571826688,1571826943,FR
+1571826944,1571827199,RE
+1571827200,1571830271,FR
+1571830272,1571831295,RE
+1571831296,1571831807,FR
1571831808,1571848191,DK
1571848192,1571864575,RU
1571864576,1571880959,PL
1571880960,1571897343,RU
-1571897344,1571913727,NO
+1571898368,1571898623,NO
1571913728,1571930111,GE
1571930112,1571946495,LV
1571946496,1571962879,SA
@@ -38194,7 +34973,9 @@
1571979264,1571995647,DK
1571995648,1572012031,UA
1572012032,1572028415,SE
-1572028416,1572044799,RU
+1572028416,1572028927,RU
+1572028928,1572029183,UA
+1572029184,1572044799,RU
1572044800,1572061183,IT
1572061184,1572077567,PL
1572077568,1572093951,RU
@@ -38255,7 +35036,8 @@
1572462592,1572466687,LB
1572466688,1572470783,EE
1572470784,1572474879,DE
-1572474880,1572483071,GB
+1572474880,1572475135,ZA
+1572475136,1572483071,GB
1572483072,1572487167,RU
1572487168,1572491263,RS
1572491264,1572495359,IT
@@ -38269,15 +35051,15 @@
1572524032,1572528127,GE
1572528128,1572532223,RU
1572532224,1572536319,IT
-1572536320,1572537599,JE
-1572537600,1572537855,GB
-1572537856,1572538367,JE
+1572536320,1572538367,JE
1572538368,1572540415,NL
1572540416,1572542463,GB
1572542464,1572544511,IT
1572544512,1572544575,IQ
1572544576,1572544767,US
-1572544768,1572546559,IQ
+1572544768,1572545279,IQ
+1572545280,1572545535,US
+1572545536,1572546559,IQ
1572546560,1572548607,FR
1572548608,1572550655,NL
1572550656,1572552703,DE
@@ -38291,7 +35073,9 @@
1572567040,1572569087,RU
1572569088,1572571135,NL
1572571136,1572573183,RO
-1572573184,1572574975,GG
+1572573184,1572574463,GG
+1572574464,1572574719,GB
+1572574720,1572574975,GG
1572574976,1572575231,GB
1572575232,1572577279,RU
1572577280,1572579327,AM
@@ -38352,10 +35136,11 @@
1572702208,1572704255,IT
1572704256,1572706303,RU
1572706304,1572708351,DE
-1572708352,1572708607,GB
-1572708608,1572709375,GG
+1572708352,1572708863,GB
+1572708864,1572709375,GG
1572709376,1572709887,GB
-1572709888,1572710399,GG
+1572709888,1572710143,GG
+1572710144,1572710399,GB
1572710400,1572712447,DE
1572712448,1572714495,ES
1572714496,1572716543,IT
@@ -38459,9 +35244,7 @@
1578614528,1578631167,FR
1578631168,1578663935,RO
1578663936,1578762239,RU
-1578762240,1578768959,BG
-1578768960,1578768991,CY
-1578768992,1578795007,BG
+1578762240,1578795007,BG
1578795008,1578827775,RU
1578827776,1578860543,UA
1578860544,1578893311,HU
@@ -38483,16 +35266,8 @@
1580048384,1580064767,RU
1580064768,1580072959,DE
1580072960,1580134591,PT
-1580134592,1580134655,ES
-1580134656,1580134663,PT
-1580134664,1580134667,ES
-1580134668,1580134727,PT
-1580134728,1580134735,ES
-1580134736,1580134755,PT
-1580134756,1580134759,ES
-1580134760,1580134766,PT
-1580134767,1580134771,ES
-1580134772,1580138495,PT
+1580134592,1580134911,ES
+1580134912,1580138495,PT
1580138496,1580204031,IT
1580204032,1580335103,RO
1580335104,1580466175,RU
@@ -38506,8 +35281,8 @@
1581809664,1581826047,BG
1581826048,1581842431,GB
1581842432,1581858815,BG
-1581858816,1581867007,IT
-1581867008,1581869055,US
+1581858816,1581868287,IT
+1581868288,1581869055,US
1581869056,1581875199,IT
1581875200,1581891583,TR
1581891584,1581907967,RU
@@ -38523,12 +35298,8 @@
1582029902,1582039039,NL
1582039040,1582055423,BH
1582055424,1582071807,UA
-1582071808,1582084607,ES
-1582084608,1582084863,GB
-1582084864,1582088191,ES
-1582088192,1582099647,GB
-1582099648,1582099679,US
-1582099680,1582104575,GB
+1582071808,1582088191,ES
+1582088192,1582104575,GB
1582104576,1582153727,RU
1582153728,1582170111,SA
1582170112,1582186495,CH
@@ -38540,16 +35311,15 @@
1582252032,1582268415,TR
1582268416,1582284799,DE
1582284800,1582301183,BH
-1582301184,1583067903,IT
-1583067904,1583068159,GB
-1583068160,1583176703,IT
+1582301184,1583176703,IT
1583176704,1583177727,US
1583177728,1583349759,IT
1583349760,1583611903,SA
1583611904,1583615999,LV
1583616000,1583617844,NL
1583617845,1583617845,NL
-1583617846,1583620095,NL
+1583617846,1583619839,NL
+1583619840,1583620095,US
1583620096,1583624191,IT
1583624192,1583628287,RS
1583628288,1583632383,DE
@@ -38601,7 +35371,6 @@
1583824896,1583828991,SI
1583828992,1583833087,RU
1583833088,1583837183,CH
-1583837184,1583841279,GB
1583841280,1583845375,FR
1583845376,1583849471,NL
1583849472,1583853567,DE
@@ -38628,12 +35397,12 @@
1585217536,1585219583,FR
1585219584,1585221631,NL
1585221632,1585223679,SK
-1585223680,1585223935,FR
-1585223936,1585224191,RE
-1585224192,1585224703,FR
-1585224704,1585224959,GF
+1585223680,1585224447,FR
+1585224448,1585224703,GP
+1585224704,1585224959,FR
1585224960,1585225215,RE
-1585225216,1585225727,FR
+1585225216,1585225471,FR
+1585225472,1585225727,YT
1585225728,1585227775,UA
1585227776,1585231871,RU
1585231872,1585233919,CZ
@@ -38647,7 +35416,9 @@
1585248256,1585250303,CZ
1585250304,1585254399,RU
1585254400,1585256447,GB
-1585256448,1585258495,DE
+1585256448,1585256959,DE
+1585256960,1585257215,FR
+1585257216,1585258495,DE
1585258496,1585260543,GB
1585260544,1585264639,RU
1585264640,1585266687,IM
@@ -38691,7 +35462,7 @@
1585346560,1585348607,GB
1585348608,1585350655,CH
1585350656,1585352703,IT
-1585352704,1585354751,GB
+1585352704,1585354751,PT
1585354752,1585356799,RU
1585356800,1585358847,FI
1585358848,1585360895,PT
@@ -38915,7 +35686,7 @@
1590073344,1590075391,NL
1590075392,1590077439,BE
1590077440,1590079487,GB
-1590079488,1590079743,MQ
+1590079488,1590079743,GP
1590079744,1590081535,FR
1590081536,1590083583,GB
1590083584,1590085631,RU
@@ -38988,8 +35759,8 @@
1592078336,1592082431,NL
1592082432,1592086527,GB
1592086528,1592087295,CZ
-1592087296,1592087551,PL
-1592087552,1592090623,CZ
+1592087296,1592087807,PL
+1592087808,1592090623,CZ
1592090624,1592094719,RU
1592094720,1592098815,RS
1592098816,1592102911,GB
@@ -39147,9 +35918,13 @@
1596456960,1596588031,PL
1596588032,1596719103,BG
1596719104,1596850175,IE
-1596850176,1596901375,CZ
+1596850176,1596866559,CZ
+1596866560,1596874751,RU
+1596874752,1596901375,CZ
1596901376,1596905471,BY
-1596905472,1596981247,CZ
+1596905472,1596907519,CZ
+1596907520,1596915711,RU
+1596915712,1596981247,CZ
1596981248,1597243391,PL
1597243392,1597505535,RU
1597505536,1597767679,KZ
@@ -39178,9 +35953,11 @@
1599127552,1599143935,CZ
1599143936,1599160319,UA
1599160320,1599176703,IR
-1599176704,1599186959,FR
-1599186960,1599187199,ES
-1599187200,1599193087,FR
+1599176704,1599189247,FR
+1599189248,1599189503,DE
+1599189504,1599190015,FR
+1599190016,1599190271,EU
+1599190272,1599193087,FR
1599193088,1599209471,RU
1599209472,1599242239,IR
1599242240,1599258623,CZ
@@ -39202,30 +35979,10 @@
1599567872,1599569919,IT
1599569920,1599586303,SI
1599586304,1599602687,BG
-1599602688,1599674367,DE
-1599674368,1599675391,US
-1599675392,1599675647,DE
-1599675648,1599676159,US
-1599676160,1599676415,DE
-1599676416,1599677439,US
-1599677440,1599677695,DE
-1599677696,1599677951,US
-1599677952,1599680767,DE
-1599680768,1599681023,US
-1599681024,1599683583,DE
-1599683584,1599684607,US
-1599684608,1599686911,DE
-1599686912,1599687167,US
-1599687168,1599699967,DE
-1599699968,1599700991,US
-1599700992,1599705599,DE
-1599705600,1599705855,US
-1599705856,1599864831,DE
+1599602688,1599864831,DE
1599864832,1600126975,PT
1600126976,1600389119,NL
-1600389120,1600451071,EU
-1600451072,1600451199,GB
-1600451200,1600520191,EU
+1600389120,1600520191,EU
1600520192,1600651263,SK
1600651264,1600684031,GE
1600684032,1600749567,RU
@@ -39353,8 +36110,7 @@
1602459648,1602461695,GB
1602461696,1602465791,ES
1602465792,1602467839,RU
-1602467840,1602468095,GB
-1602468096,1602469887,GI
+1602467840,1602469887,GI
1602469888,1602471935,AT
1602471936,1602473983,SE
1602473984,1602476031,RU
@@ -39368,36 +36124,44 @@
1602781184,1602813951,FR
1602813952,1602846719,RU
1602846720,1602879487,GE
-1602879488,1602879743,FR
-1602879744,1602886399,RE
-1602886400,1602886655,FR
-1602886656,1602887423,RE
-1602887424,1602887679,FR
-1602887680,1602891775,RE
-1602891776,1602892031,FR
-1602892032,1602895359,RE
-1602895360,1602895615,FR
-1602895616,1602895871,RE
-1602895872,1602896127,FR
-1602896128,1602896383,MQ
-1602896384,1602896639,RE
-1602896640,1602896895,FR
-1602896896,1602896924,MQ
+1602879488,1602879743,RE
+1602879744,1602880255,FR
+1602880256,1602881535,RE
+1602881536,1602882559,FR
+1602882560,1602882815,RE
+1602882816,1602883327,FR
+1602883328,1602884607,RE
+1602884608,1602889215,FR
+1602889216,1602889727,RE
+1602889728,1602890239,FR
+1602890240,1602891775,RE
+1602891776,1602892287,FR
+1602892288,1602892799,RE
+1602892800,1602893823,FR
+1602893824,1602894335,RE
+1602894336,1602894847,FR
+1602894848,1602895103,RE
+1602895104,1602896924,FR
1602896925,1602896925,RE
-1602896926,1602897919,MQ
-1602897920,1602898431,FR
-1602898432,1602901503,MQ
-1602901504,1602901759,FR
-1602901760,1602904063,MQ
-1602904064,1602905087,RE
-1602905088,1602906111,FR
-1602906112,1602906879,RE
-1602906880,1602907135,FR
-1602907136,1602907391,RE
-1602907392,1602908159,FR
-1602908160,1602910207,RE
-1602910208,1602910463,FR
-1602910464,1602912255,RE
+1602896926,1602898431,FR
+1602898432,1602898943,MQ
+1602898944,1602900223,FR
+1602900224,1602900991,MQ
+1602900992,1602901503,FR
+1602901504,1602902783,MQ
+1602902784,1602903807,FR
+1602903808,1602904063,MQ
+1602904064,1602904319,RE
+1602904320,1602906111,FR
+1602906112,1602908415,RE
+1602908416,1602909183,FR
+1602909184,1602910207,RE
+1602910208,1602910719,FR
+1602910720,1602910975,RE
+1602910976,1602911231,FR
+1602911232,1602911487,RE
+1602911488,1602911743,FR
+1602911744,1602912255,RE
1602912256,1602928639,GB
1602928640,1602930687,HU
1602930688,1602932735,GB
@@ -39457,7 +36221,9 @@
1603207168,1603215359,RU
1603215360,1603219455,DE
1603219456,1603223551,CH
-1603223552,1603226623,SE
+1603223552,1603225087,SE
+1603225088,1603225343,FR
+1603225344,1603226623,SE
1603226624,1603227647,FR
1603227648,1603231743,AT
1603231744,1603235839,IT
@@ -39480,7 +36246,9 @@
1603895296,1603928063,RU
1603928064,1603944447,DK
1603944448,1603977215,RU
-1603977216,1603993599,GB
+1603977216,1603979519,GB
+1603979520,1603979775,US
+1603979776,1603993599,GB
1603993600,1604009983,ME
1604009984,1604026367,PL
1604026368,1604042751,NL
@@ -39511,9 +36279,7 @@
1604853760,1604861951,HU
1604861952,1604870143,RS
1604870144,1604878335,HR
-1604878336,1604892415,DE
-1604892416,1604892671,RU
-1604892672,1604894719,DE
+1604878336,1604894719,DE
1604894720,1604902911,CZ
1604902912,1604911103,BG
1604911104,1604919295,UA
@@ -39523,11 +36289,7 @@
1604952064,1604960255,DE
1604960256,1604968447,BG
1604968448,1604976639,ES
-1604976640,1604981503,FR
-1604981504,1604981759,GB
-1604981760,1604982527,FR
-1604982528,1604982783,GB
-1604982784,1604993023,FR
+1604976640,1604993023,FR
1604993024,1605001215,NL
1605001216,1605025791,RU
1605025792,1605033983,IQ
@@ -39556,9 +36318,7 @@
1605132288,1605148671,RU
1605148672,1605156863,PT
1605156864,1605165055,JO
-1605165056,1605167412,GB
-1605167413,1605167413,US
-1605167414,1605169411,GB
+1605165056,1605169411,GB
1605169412,1605169412,DE
1605169413,1605173247,GB
1605173248,1605181439,TR
@@ -39599,9 +36359,7 @@
1605632000,1605664767,RS
1605664768,1605697535,MK
1605697536,1605795839,RU
-1605795840,1605810175,BE
-1605810176,1605810431,FR
-1605810432,1605828607,BE
+1605795840,1605828607,BE
1605828608,1605861375,RU
1605861376,1605894143,TR
1605894144,1606156287,RO
@@ -39611,25 +36369,20 @@
1606636544,1607467007,SE
1607467008,1607532543,DE
1607532544,1607569407,SE
-1607569408,1607571455,DK
-1607571456,1607581695,SE
-1607581696,1607583743,DK
-1607583744,1607585791,SE
-1607585792,1607586303,DK
-1607586304,1607586431,SE
-1607586432,1607587071,DK
-1607587072,1607587327,SE
-1607587328,1607588607,DK
-1607588608,1607588735,SE
-1607588736,1607598079,DK
+1607569408,1607570431,DK
+1607570432,1607573503,SE
+1607573504,1607577599,DK
+1607577600,1607586815,SE
+1607586816,1607587327,DK
+1607587328,1607587583,SE
+1607587584,1607588607,DK
+1607588608,1607588863,SE
+1607588864,1607598079,DK
1607598080,1607598335,IT
1607598336,1607598591,EU
-1607598592,1607602175,IT
-1607602176,1607606271,FR
-1607606272,1607607295,IT
-1607607296,1607607807,PL
-1607607808,1607608831,IT
-1607608832,1607609343,GB
+1607598592,1607606015,IT
+1607606016,1607606271,FR
+1607606272,1607609343,IT
1607609344,1607609599,EU
1607609600,1607614463,IT
1607614464,1607616511,FR
@@ -39637,23 +36390,14 @@
1607619072,1607620607,GB
1607620608,1607625983,IT
1607625984,1607626239,EU
-1607626240,1607626751,IT
-1607626752,1607628543,ES
+1607626240,1607628543,IT
1607628544,1607628799,EU
-1607628800,1607630847,IT
-1607630848,1607632895,IE
-1607632896,1607639039,IT
+1607628800,1607639039,IT
1607639040,1607647231,EU
-1607647232,1607647743,IT
-1607647744,1607648511,DE
-1607648512,1607649791,IT
-1607649792,1607650303,DE
-1607650304,1607651327,IT
-1607651328,1607651839,FR
-1607651840,1607663615,IT
-1607663616,1607685887,NL
-1607685888,1607686143,FR
-1607686144,1607695559,NL
+1607647232,1607651583,IT
+1607651584,1607652351,FR
+1607652352,1607663615,IT
+1607663616,1607695559,NL
1607695560,1607695560,NL
1607695561,1607729151,NL
1607729152,1607794687,EG
@@ -39759,11 +36503,7 @@
1613488128,1613492223,CA
1613492224,1613504511,US
1613504512,1613529087,CA
-1613529088,1613538122,US
-1613538123,1613538125,US
-1613538126,1613544799,US
-1613544800,1613544807,DE
-1613544808,1613545471,US
+1613529088,1613545471,US
1613545472,1613545495,CA
1613545496,1613545503,US
1613545504,1613545551,CA
@@ -39797,14 +36537,22 @@
1613552152,1613552159,US
1613552160,1613552199,CA
1613552200,1613552207,US
-1613552208,1613565951,CA
+1613552208,1613556511,CA
+1613556512,1613556535,US
+1613556536,1613556559,CA
+1613556560,1613556583,US
+1613556584,1613556599,CA
+1613556600,1613556615,US
+1613556616,1613558359,CA
+1613558360,1613558375,NL
+1613558376,1613565951,CA
1613565952,1613606911,US
-1613606912,1613615103,CA
+1613606912,1613613119,CA
+1613613120,1613613151,IE
+1613613152,1613615103,CA
1613615104,1613635583,US
1613635584,1613639679,CA
-1613639680,1613640703,US
-1613640704,1613640831,CA
-1613640832,1613676543,US
+1613639680,1613676543,US
1613676544,1613680639,CA
1613680640,1613703670,US
1613703671,1613703678,LK
@@ -39862,585 +36610,7 @@
1652481280,1652481791,CN
1652481792,1652487286,US
1652487287,1652487287,TR
-1652487288,1652621327,US
-1652621328,1652621335,CA
-1652621336,1652621343,AU
-1652621344,1652621359,CA
-1652621360,1652621495,US
-1652621496,1652621503,CA
-1652621504,1652621663,US
-1652621664,1652621671,GB
-1652621672,1652621679,US
-1652621680,1652621687,CA
-1652621688,1652621695,US
-1652621696,1652621703,MX
-1652621704,1652621911,US
-1652621912,1652621919,GB
-1652621920,1652622119,US
-1652622120,1652622127,GB
-1652622128,1652622175,US
-1652622176,1652622207,GB
-1652622208,1652622271,US
-1652622272,1652622279,AU
-1652622280,1652622575,US
-1652622576,1652622583,GB
-1652622584,1652622895,US
-1652622896,1652622903,MX
-1652622904,1652623903,US
-1652623904,1652623935,IN
-1652623936,1652624111,US
-1652624112,1652624119,MX
-1652624120,1652624511,US
-1652624512,1652624519,IN
-1652624520,1652624527,US
-1652624528,1652624535,GB
-1652624536,1652624591,US
-1652624592,1652624599,IE
-1652624600,1652624655,US
-1652624656,1652624663,ZA
-1652624664,1652625119,US
-1652625120,1652625127,ZA
-1652625128,1652625303,US
-1652625304,1652625311,CA
-1652625312,1652625495,US
-1652625496,1652625503,CA
-1652625504,1652625695,US
-1652625696,1652625711,IN
-1652625712,1652626055,US
-1652626056,1652626063,GB
-1652626064,1652626319,US
-1652626320,1652626327,GB
-1652626328,1652626399,US
-1652626400,1652626407,IE
-1652626408,1652626487,US
-1652626488,1652626495,GB
-1652626496,1652626727,US
-1652626728,1652626735,IL
-1652626736,1652627519,US
-1652627520,1652627567,MY
-1652627568,1652627575,US
-1652627576,1652627583,GB
-1652627584,1652628055,US
-1652628056,1652628063,IN
-1652628064,1652628311,US
-1652628312,1652628319,BO
-1652628320,1652628351,US
-1652628352,1652628359,CA
-1652628360,1652629551,US
-1652629552,1652629559,NZ
-1652629560,1652630031,US
-1652630032,1652630039,GB
-1652630040,1652630247,US
-1652630248,1652630255,AU
-1652630256,1652630655,US
-1652630656,1652630663,IL
-1652630664,1652630887,US
-1652630888,1652630895,AU
-1652630896,1652631015,US
-1652631016,1652631023,IN
-1652631024,1652631343,US
-1652631344,1652631351,CA
-1652631352,1652631535,US
-1652631536,1652631551,MY
-1652631552,1652631751,US
-1652631752,1652631759,GB
-1652631760,1652631999,US
-1652632000,1652632015,AE
-1652632016,1652632255,US
-1652632256,1652632263,IL
-1652632264,1652632431,US
-1652632432,1652632439,CA
-1652632440,1652632647,US
-1652632648,1652632655,MY
-1652632656,1652632671,US
-1652632672,1652632751,MY
-1652632752,1652632863,US
-1652632864,1652632879,CA
-1652632880,1652632887,US
-1652632888,1652632895,AU
-1652632896,1652632911,US
-1652632912,1652632919,CA
-1652632920,1652632935,US
-1652632936,1652632943,PH
-1652632944,1652633159,US
-1652633160,1652633167,CA
-1652633168,1652633999,US
-1652634000,1652634007,GB
-1652634008,1652634143,US
-1652634144,1652634151,AE
-1652634152,1652634423,US
-1652634424,1652634431,CA
-1652634432,1652634647,US
-1652634648,1652634655,PH
-1652634656,1652634663,AU
-1652634664,1652634767,US
-1652634768,1652634775,AU
-1652634776,1652634791,US
-1652634792,1652634799,CA
-1652634800,1652634855,US
-1652634856,1652634863,CA
-1652634864,1652635047,US
-1652635048,1652635055,GB
-1652635056,1652635295,US
-1652635296,1652635311,CA
-1652635312,1652635591,US
-1652635592,1652635599,CA
-1652635600,1652635903,US
-1652635904,1652635911,AU
-1652635912,1652636423,US
-1652636424,1652636431,CA
-1652636432,1652636631,US
-1652636632,1652636639,IL
-1652636640,1652636655,US
-1652636656,1652636663,CA
-1652636664,1652636839,US
-1652636840,1652636847,CA
-1652636848,1652637207,US
-1652637208,1652637215,FR
-1652637216,1652637623,US
-1652637624,1652637631,GB
-1652637632,1652637887,US
-1652637888,1652637895,IL
-1652637896,1652638143,US
-1652638144,1652638151,CH
-1652638152,1652638191,US
-1652638192,1652638207,IN
-1652638208,1652638215,US
-1652638216,1652638223,AU
-1652638224,1652638703,US
-1652638704,1652638711,IN
-1652638712,1652638855,US
-1652638856,1652638863,CA
-1652638864,1652638895,US
-1652638896,1652638903,GB
-1652638904,1652639015,US
-1652639016,1652639023,MX
-1652639024,1652639135,US
-1652639136,1652639143,AU
-1652639144,1652639455,US
-1652639456,1652639471,IN
-1652639472,1652639535,US
-1652639536,1652639543,CA
-1652639544,1652639671,US
-1652639672,1652639679,GB
-1652639680,1652640631,US
-1652640632,1652640639,NL
-1652640640,1652641183,US
-1652641184,1652641191,BR
-1652641192,1652641431,US
-1652641432,1652641439,IN
-1652641440,1652641879,US
-1652641880,1652641887,GB
-1652641888,1652641895,US
-1652641896,1652641911,GB
-1652641912,1652641919,CA
-1652641920,1652641983,US
-1652641984,1652642015,AE
-1652642016,1652642023,CA
-1652642024,1652643215,US
-1652643216,1652643223,IT
-1652643224,1652643351,US
-1652643352,1652643359,CA
-1652643360,1652643431,US
-1652643432,1652643447,CA
-1652643448,1652643463,US
-1652643464,1652643471,CA
-1652643472,1652643575,US
-1652643576,1652643583,EG
-1652643584,1652643631,US
-1652643632,1652643639,IN
-1652643640,1652643655,US
-1652643656,1652643663,GB
-1652643664,1652643679,US
-1652643680,1652643687,GB
-1652643688,1652643799,US
-1652643800,1652643807,GB
-1652643808,1652643839,US
-1652643840,1652643847,GB
-1652643848,1652643879,US
-1652643880,1652643887,AU
-1652643888,1652643895,CA
-1652643896,1652644223,US
-1652644224,1652644231,AU
-1652644232,1652644247,US
-1652644248,1652644255,GB
-1652644256,1652644311,US
-1652644312,1652644319,CA
-1652644320,1652644375,US
-1652644376,1652644383,CA
-1652644384,1652644591,US
-1652644592,1652644639,BD
-1652644640,1652644647,US
-1652644648,1652644655,BO
-1652644656,1652644799,US
-1652644800,1652644807,CA
-1652644808,1652644863,US
-1652644864,1652644871,AU
-1652644872,1652645103,US
-1652645104,1652645111,CA
-1652645112,1652645751,US
-1652645752,1652645759,NZ
-1652645760,1652645791,US
-1652645792,1652645799,IN
-1652645800,1652645879,US
-1652645880,1652645887,NZ
-1652645888,1652645919,US
-1652645920,1652645935,AE
-1652645936,1652646271,US
-1652646272,1652646279,AU
-1652646280,1652646487,US
-1652646488,1652646495,CA
-1652646496,1652646503,US
-1652646504,1652646511,CA
-1652646512,1652646815,US
-1652646816,1652646823,BD
-1652646824,1652647199,US
-1652647200,1652647207,IL
-1652647208,1652647215,GB
-1652647216,1652647303,US
-1652647304,1652647311,AU
-1652647312,1652647319,US
-1652647320,1652647327,IL
-1652647328,1652647351,US
-1652647352,1652647359,GB
-1652647360,1652647511,US
-1652647512,1652647519,CA
-1652647520,1652647647,US
-1652647648,1652647655,MX
-1652647656,1652647823,US
-1652647824,1652647831,CA
-1652647832,1652647855,US
-1652647856,1652647871,CA
-1652647872,1652647919,US
-1652647920,1652647935,IE
-1652647936,1652648103,US
-1652648104,1652648111,MX
-1652648112,1652648255,US
-1652648256,1652648263,GB
-1652648264,1652648399,US
-1652648400,1652648407,IN
-1652648408,1652648639,US
-1652648640,1652648647,MY
-1652648648,1652648879,US
-1652648880,1652648887,BD
-1652648888,1652648983,US
-1652648984,1652648991,NZ
-1652648992,1652649463,US
-1652649464,1652649471,GB
-1652649472,1652649519,US
-1652649520,1652649527,SE
-1652649528,1652649543,US
-1652649544,1652649551,CA
-1652649552,1652650303,US
-1652650304,1652650311,SE
-1652650312,1652650335,US
-1652650336,1652650343,CA
-1652650344,1652650679,US
-1652650680,1652650687,CA
-1652650688,1652650751,US
-1652650752,1652650759,AU
-1652650760,1652650791,US
-1652650792,1652650799,GB
-1652650800,1652651063,US
-1652651064,1652651071,SG
-1652651072,1652651079,US
-1652651080,1652651087,GB
-1652651088,1652651111,US
-1652651112,1652651119,NZ
-1652651120,1652651271,US
-1652651272,1652651279,IN
-1652651280,1652651351,US
-1652651352,1652651359,CA
-1652651360,1652651495,US
-1652651496,1652651503,AR
-1652651504,1652652151,US
-1652652152,1652652159,IN
-1652652160,1652652327,US
-1652652328,1652652335,SG
-1652652336,1652652591,US
-1652652592,1652652599,BD
-1652652600,1652652655,US
-1652652656,1652652663,GB
-1652652664,1652652895,US
-1652652896,1652652927,CA
-1652652928,1652653231,US
-1652653232,1652653239,CA
-1652653240,1652653247,US
-1652653248,1652653279,BD
-1652653280,1652653343,US
-1652653344,1652653359,BD
-1652653360,1652653631,US
-1652653632,1652653639,CA
-1652653640,1652653663,US
-1652653664,1652653671,IN
-1652653672,1652653679,GB
-1652653680,1652653855,US
-1652653856,1652653863,AR
-1652653864,1652654023,US
-1652654024,1652654031,CA
-1652654032,1652654527,US
-1652654528,1652654535,NZ
-1652654536,1652654543,CA
-1652654544,1652654719,US
-1652654720,1652654727,GB
-1652654728,1652654783,US
-1652654784,1652654815,BD
-1652654816,1652654927,US
-1652654928,1652654935,GB
-1652654936,1652655007,US
-1652655008,1652655015,GB
-1652655016,1652655063,US
-1652655064,1652655071,GU
-1652655072,1652655231,US
-1652655232,1652655263,CA
-1652655264,1652655303,US
-1652655304,1652655311,IN
-1652655312,1652655431,US
-1652655432,1652655439,GU
-1652655440,1652655511,US
-1652655512,1652655519,AU
-1652655520,1652655727,US
-1652655728,1652655743,GB
-1652655744,1652655871,US
-1652655872,1652655879,CA
-1652655880,1652655887,US
-1652655888,1652655895,IN
-1652655896,1652655903,GB
-1652655904,1652655943,US
-1652655944,1652655951,JM
-1652655952,1652655983,US
-1652655984,1652655999,GB
-1652656000,1652656063,US
-1652656064,1652656071,GB
-1652656072,1652656383,US
-1652656384,1652656391,CA
-1652656392,1652656431,US
-1652656432,1652656439,ZA
-1652656440,1652656447,CA
-1652656448,1652656671,US
-1652656672,1652656679,GB
-1652656680,1652656703,US
-1652656704,1652656711,CA
-1652656712,1652656719,US
-1652656720,1652656727,NZ
-1652656728,1652656759,US
-1652656760,1652656767,CN
-1652656768,1652656799,US
-1652656800,1652656807,GB
-1652656808,1652656855,US
-1652656856,1652656863,PH
-1652656864,1652656927,US
-1652656928,1652656935,GB
-1652656936,1652657295,US
-1652657296,1652657311,AU
-1652657312,1652657439,US
-1652657440,1652657447,MX
-1652657448,1652657567,US
-1652657568,1652657575,JM
-1652657576,1652657863,US
-1652657864,1652657871,GB
-1652657872,1652658223,US
-1652658224,1652658231,GB
-1652658232,1652658367,US
-1652658368,1652658375,MX
-1652658376,1652658431,US
-1652658432,1652658439,GB
-1652658440,1652658535,US
-1652658536,1652658543,GB
-1652658544,1652658559,US
-1652658560,1652658567,CA
-1652658568,1652658687,US
-1652658688,1652658695,NZ
-1652658696,1652658727,US
-1652658728,1652658735,IN
-1652658736,1652659151,US
-1652659152,1652659159,GB
-1652659160,1652659367,US
-1652659368,1652659375,CA
-1652659376,1652660007,US
-1652660008,1652660015,CA
-1652660016,1652660127,US
-1652660128,1652660135,CA
-1652660136,1652660183,US
-1652660184,1652660191,MX
-1652660192,1652660287,US
-1652660288,1652660295,IN
-1652660296,1652660303,MX
-1652660304,1652660551,US
-1652660552,1652660559,GB
-1652660560,1652660639,US
-1652660640,1652660663,AU
-1652660664,1652660959,US
-1652660960,1652660967,BR
-1652660968,1652661087,US
-1652661088,1652661095,MY
-1652661096,1652661135,US
-1652661136,1652661143,GB
-1652661144,1652661151,US
-1652661152,1652661159,IL
-1652661160,1652661191,US
-1652661192,1652661199,CA
-1652661200,1652662735,US
-1652662736,1652662751,GB
-1652662752,1652662919,US
-1652662920,1652662927,AU
-1652662928,1652663039,US
-1652663040,1652663047,MX
-1652663048,1652663135,US
-1652663136,1652663143,CA
-1652663144,1652664527,US
-1652664528,1652664543,CA
-1652664544,1652665079,US
-1652665080,1652665087,CA
-1652665088,1652665103,US
-1652665104,1652665111,CA
-1652665112,1652665319,US
-1652665320,1652665327,BR
-1652665328,1652665335,PR
-1652665336,1652665455,US
-1652665456,1652665463,CA
-1652665464,1652665479,US
-1652665480,1652665487,GB
-1652665488,1652665671,US
-1652665672,1652665679,MX
-1652665680,1652665687,IE
-1652665688,1652665807,US
-1652665808,1652665815,GB
-1652665816,1652665863,US
-1652665864,1652665871,AU
-1652665872,1652665951,US
-1652665952,1652665959,IT
-1652665960,1652665983,US
-1652665984,1652665991,CA
-1652665992,1652666175,US
-1652666176,1652666183,CA
-1652666184,1652666207,US
-1652666208,1652666215,GB
-1652666216,1652666327,US
-1652666328,1652666335,MX
-1652666336,1652666495,US
-1652666496,1652666511,CA
-1652666512,1652666527,US
-1652666528,1652666543,GB
-1652666544,1652668951,US
-1652668952,1652668959,IE
-1652668960,1652668967,US
-1652668968,1652668975,AU
-1652668976,1652669191,US
-1652669192,1652669199,IN
-1652669200,1652669231,US
-1652669232,1652669239,CA
-1652669240,1652669567,US
-1652669568,1652669575,GB
-1652669576,1652670015,US
-1652670016,1652670023,CA
-1652670024,1652670311,US
-1652670312,1652670319,BR
-1652670320,1652670327,US
-1652670328,1652670335,BR
-1652670336,1652670463,CA
-1652670464,1652670871,US
-1652670872,1652670879,CA
-1652670880,1652671167,US
-1652671168,1652671175,NL
-1652671176,1652671207,US
-1652671208,1652671215,NL
-1652671216,1652671271,US
-1652671272,1652671279,GB
-1652671280,1652671343,US
-1652671344,1652671351,GB
-1652671352,1652671359,MX
-1652671360,1652671375,US
-1652671376,1652671383,CA
-1652671384,1652671407,US
-1652671408,1652671415,GB
-1652671416,1652671783,US
-1652671784,1652671791,NL
-1652671792,1652672023,US
-1652672024,1652672031,MX
-1652672032,1652672063,US
-1652672064,1652672071,GB
-1652672072,1652672159,US
-1652672160,1652672167,JP
-1652672168,1652672191,US
-1652672192,1652672199,PK
-1652672200,1652672295,US
-1652672296,1652672303,MT
-1652672304,1652672335,US
-1652672336,1652672343,MT
-1652672344,1652672439,US
-1652672440,1652672447,CA
-1652672448,1652672455,GB
-1652672456,1652672463,US
-1652672464,1652672471,IN
-1652672472,1652672479,ZA
-1652672480,1652672487,IN
-1652672488,1652673279,US
-1652673280,1652673535,CA
-1652673536,1652674063,US
-1652674064,1652674071,CA
-1652674072,1652674135,US
-1652674136,1652674143,MX
-1652674144,1652674327,US
-1652674328,1652674335,GB
-1652674336,1652674343,US
-1652674344,1652674351,NA
-1652674352,1652674367,US
-1652674368,1652674375,GB
-1652674376,1652674879,US
-1652674880,1652674887,CA
-1652674888,1652674919,US
-1652674920,1652674927,CH
-1652674928,1652674943,US
-1652674944,1652674951,CA
-1652674952,1652675047,US
-1652675048,1652675055,MX
-1652675056,1652675103,US
-1652675104,1652675111,GB
-1652675112,1652675391,US
-1652675392,1652675399,IN
-1652675400,1652675487,US
-1652675488,1652675495,NZ
-1652675496,1652675951,US
-1652675952,1652675959,KE
-1652675960,1652676031,US
-1652676032,1652676047,IN
-1652676048,1652676191,US
-1652676192,1652676199,IN
-1652676200,1652676615,US
-1652676616,1652676623,AU
-1652676624,1652676679,US
-1652676680,1652676687,CA
-1652676688,1652677007,US
-1652677008,1652677015,IN
-1652677016,1652677039,US
-1652677040,1652677047,MT
-1652677048,1652677335,US
-1652677336,1652677343,KE
-1652677344,1652677367,US
-1652677368,1652677375,GB
-1652677376,1652677407,US
-1652677408,1652677415,IN
-1652677416,1652677575,US
-1652677576,1652677583,CH
-1652677584,1652678999,US
-1652679000,1652679007,SG
-1652679008,1652679031,US
-1652679032,1652679039,BR
-1652679040,1652679103,US
-1652679104,1652679111,MX
-1652679112,1652679119,NO
-1652679120,1652680743,US
-1652680744,1652680751,CA
-1652680752,1652681047,US
-1652681048,1652681055,GB
-1652681056,1652681455,US
-1652681456,1652681463,CA
-1652681464,1652681471,US
-1652681472,1652681479,GB
-1652681480,1652681511,US
-1652681512,1652681519,IL
-1652681520,1653500927,US
+1652487288,1653500927,US
1653500928,1653501183,FR
1653501184,1653501439,IL
1653501440,1653501695,HK
@@ -40462,14 +36632,18 @@
1654542336,1654546431,CA
1654546432,1654550527,VG
1654550528,1654554623,US
-1654554624,1654558719,CA
+1654554624,1654558207,CA
+1654558208,1654558463,US
+1654558464,1654558719,CA
1654558720,1654583103,US
1654583104,1654583135,CA
1654583136,1654597647,US
1654597648,1654597655,PL
1654597656,1654648831,US
1654648832,1654652927,CA
-1654652928,1673527295,US
+1654652928,1663444375,US
+1663444376,1663444383,CA
+1663444384,1673527295,US
1673527296,1673560063,CA
1673560064,1673562207,US
1673562208,1673562239,CR
@@ -40758,9 +36932,7 @@
1728161792,1728162815,CN
1728162816,1728163839,SG
1728163840,1728164863,LK
-1728164864,1728165104,FJ
-1728165105,1728165105,AU
-1728165106,1728165887,FJ
+1728164864,1728165887,FJ
1728165888,1728168959,AU
1728168960,1728169983,IN
1728169984,1728171007,VN
@@ -40971,7 +37143,6 @@
1728437248,1728438271,HK
1728438272,1728439295,NZ
1728439296,1728439807,NP
-1728439808,1728440319,AU
1728440320,1728441343,BD
1728441344,1728442367,MY
1728442368,1728443391,SG
@@ -41386,7 +37557,7 @@
1728827392,1728828415,JP
1728828416,1728829439,AU
1728829440,1728830463,KH
-1728830464,1728830719,US
+1728830464,1728830719,SG
1728830720,1728830975,JP
1728830976,1728831487,ID
1728831488,1728832511,IN
@@ -41994,7 +38165,7 @@
1729946624,1729949695,JP
1729949696,1729950207,IN
1729950208,1729950719,KH
-1729950720,1729952767,JP
+1729951744,1729952767,JP
1729952768,1729953791,IN
1729953792,1729954815,MY
1729954816,1729955839,ID
@@ -42058,7 +38229,7 @@
1730010112,1730011135,IN
1730011136,1730012159,BT
1730012160,1730013183,ID
-1730013184,1730015231,IN
+1730013184,1730014207,IN
1730015232,1730016255,MY
1730016256,1730017279,PH
1730017280,1730017791,IN
@@ -42181,8 +38352,67 @@
1730145280,1730146303,BD
1730146304,1730147327,HK
1730147328,1730148351,JP
-1730148352,1730148863,ID
+1730148352,1730149375,ID
1730149376,1730150399,JP
+1744044032,1744045055,HK
+1744045056,1744047103,SG
+1744047104,1744048127,BD
+1744048128,1744049151,CN
+1744049152,1744050175,BD
+1744050176,1744051199,HK
+1744051200,1744052223,PH
+1744052224,1744053247,MN
+1744053248,1744054271,ID
+1744054272,1744055295,KR
+1744055296,1744056319,HK
+1744056320,1744056575,IN
+1744056576,1744056831,MY
+1744057088,1744057343,ID
+1744057344,1744058367,HK
+1744058368,1744067583,CN
+1744067584,1744068607,JP
+1744068608,1744069631,ID
+1744069632,1744070655,SG
+1744070656,1744071679,JP
+1744071680,1744072703,KR
+1744072704,1744074751,JP
+1744074752,1744076799,IN
+1744076800,1744077823,AU
+1744077824,1744078847,PK
+1744078848,1744079871,VN
+1744079872,1744080895,BD
+1744080896,1744081919,AF
+1744081920,1744082943,CN
+1744082944,1744083967,IN
+1744083968,1744084991,HK
+1744084992,1744085503,ID
+1744085504,1744085759,BD
+1744085760,1744086015,MY
+1744086016,1744087039,CN
+1744087040,1744088063,IN
+1744088064,1744090111,PK
+1744090112,1744091135,NZ
+1744091136,1744092159,BD
+1744092160,1744092671,MY
+1744092672,1744092927,IN
+1744092928,1744093183,MY
+1744093184,1744096255,AU
+1744096256,1744097279,ID
+1744097280,1744098303,JP
+1744098304,1744099327,NZ
+1744099328,1744101375,JP
+1744101376,1744102399,HK
+1744102400,1744103423,FJ
+1744103424,1744104447,CN
+1744104448,1744105471,AU
+1744105472,1744106751,IN
+1744106752,1744107007,ID
+1744107008,1744107519,SG
+1744107520,1744108543,KH
+1744108544,1744109567,CN
+1744109568,1744109823,IN
+1744110592,1744111615,JP
+1744111616,1744113663,IN
1744175104,1744176127,ID
1744176128,1744177151,AU
1744177152,1744179199,CN
@@ -42329,6 +38559,9 @@
1744304128,1744305151,AU
1744305152,1744306175,PH
1769996288,1772093439,MA
+1772093440,1772617727,KE
+1772617728,1773142015,AO
+1774190592,1774452735,EG
1774452736,1774714879,NG
1774714880,1775239167,EG
1775239168,1776680959,ZA
@@ -42371,7 +38604,13 @@
1784676352,1785200639,KR
1785200640,1785462783,TW
1785462784,1786773503,CN
-1786773504,1790967807,JP
+1786773504,1790595071,JP
+1790595072,1790597119,US
+1790597120,1790648319,JP
+1790648320,1790649007,CN
+1790649008,1790649008,JP
+1790649009,1790650367,CN
+1790650368,1790967807,JP
1790967808,1793064959,IN
1793064960,1794113535,CN
1794113536,1795162111,KR
@@ -42417,13 +38656,11 @@
1795559808,1795560447,US
1795560448,1795560959,CA
1795560960,1795561215,US
-1795561216,1795561359,CA
-1795561360,1795561375,US
-1795561376,1795562239,CA
+1795561216,1795562239,CA
1795562240,1795563263,US
1795563264,1795563519,CA
-1795563520,1795564287,US
-1795564288,1795564543,CA
+1795563520,1795564031,US
+1795564032,1795564543,CA
1795564544,1795565631,US
1795565632,1795565719,CA
1795565720,1795565759,US
@@ -42497,17 +38734,21 @@
1815951248,1815951263,US
1815951264,1815951407,US
1815951408,1815951423,US
-1815951424,1816001791,US
+1815951424,1815957823,US
+1815957824,1815957887,US
+1815957888,1815996159,US
+1815996160,1815996415,CA
+1815996416,1816001791,US
1816001792,1816002559,NL
1816002560,1816005799,US
1816005800,1816005807,LK
-1816005808,1816007663,US
+1816005808,1816007167,US
+1816007168,1816007175,CA
+1816007176,1816007663,US
1816007664,1816007671,CA
1816007672,1816008959,US
1816008960,1816009215,IN
-1816009216,1816018471,US
-1816018472,1816018479,CA
-1816018480,1816024319,US
+1816009216,1816024319,US
1816024320,1816024575,CA
1816024576,1816031343,US
1816031344,1816031351,CA
@@ -42522,7 +38763,9 @@
1822433280,1822445567,US
1822445568,1822451199,CA
1822451200,1822486527,US
-1822486528,1822490623,CA
+1822486528,1822489111,CA
+1822489112,1822489119,US
+1822489120,1822490623,CA
1822490624,1822498815,US
1822498816,1822502911,CA
1822502912,1822519295,US
@@ -42535,152 +38778,39 @@
1822552528,1822552535,GB
1822552536,1822572543,US
1822572544,1822605311,CA
-1822605312,1822613759,US
-1822613760,1822614015,AU
-1822614016,1822654463,US
+1822605312,1822654463,US
1822654464,1822670847,CA
-1822670848,1822818367,US
-1822818368,1822818375,CA
-1822818376,1822818999,US
-1822819000,1822819007,CA
-1822819008,1822819031,US
-1822819032,1822819039,IL
-1822819040,1822819215,US
-1822819216,1822819223,CA
-1822819224,1822819347,US
-1822819348,1822819351,NO
-1822819352,1822819563,US
-1822819564,1822819567,AU
-1822819568,1822819839,US
-1822819840,1822819843,PE
-1822819844,1822819891,US
-1822819892,1822819895,CA
-1822819896,1822820147,US
-1822820148,1822820151,AU
-1822820152,1822820195,US
-1822820196,1822820199,AU
-1822820200,1822820327,US
-1822820328,1822820331,AU
-1822820332,1822820553,US
-1822820554,1822820555,NL
-1822820556,1822820569,US
-1822820570,1822820571,BG
-1822820572,1822820641,US
-1822820642,1822820643,FR
-1822820644,1822820689,US
-1822820690,1822820691,FR
-1822820692,1822820761,US
-1822820762,1822820763,IL
-1822820764,1822820767,US
-1822820768,1822820769,IL
-1822820770,1822820771,US
-1822820772,1822820773,IN
-1822820774,1822820805,US
-1822820806,1822820807,IL
-1822820808,1822820837,US
-1822820838,1822820839,IE
-1822820840,1822820861,US
-1822820862,1822820863,KY
-1822820864,1822821183,US
-1822821184,1822821199,IN
-1822821200,1822822175,US
-1822822176,1822822183,IL
-1822822184,1822822239,US
-1822822240,1822822247,IN
-1822822248,1822822863,US
-1822822864,1822822871,CA
-1822822872,1822823423,US
-1822823424,1822823431,CA
-1822823432,1822823671,US
-1822823672,1822823679,CY
-1822823680,1822825003,US
-1822825004,1822825007,AU
-1822825008,1822825119,US
-1822825120,1822825123,CA
-1822825124,1822825135,US
-1822825136,1822825139,CY
-1822825140,1822825143,NZ
-1822825144,1822825211,US
-1822825212,1822825215,NO
-1822825216,1822825783,US
-1822825784,1822825791,AU
-1822825792,1822825895,US
-1822825896,1822825903,NZ
-1822825904,1822826151,US
-1822826152,1822826175,IL
-1822826176,1822826207,US
-1822826208,1822826215,AU
-1822826216,1822826559,US
-1822826560,1822826575,MX
-1822826576,1822826975,US
-1822826976,1822827007,IL
-1822827008,1822827055,US
-1822827056,1822827063,DK
-1822827064,1822827167,US
-1822827168,1822827175,IL
-1822827176,1822827183,US
-1822827184,1822827191,DK
-1822827192,1822827311,US
-1822827312,1822827319,IN
-1822827320,1822827407,US
-1822827408,1822827415,GT
-1822827416,1822827463,US
-1822827464,1822827471,AU
-1822827472,1822827687,US
-1822827688,1822827691,CZ
-1822827692,1822827727,US
-1822827728,1822827731,CA
-1822827732,1822827771,US
-1822827772,1822827775,AU
-1822827776,1822827871,US
-1822827872,1822827879,AU
-1822827880,1822829103,US
-1822829104,1822829111,BG
-1822829112,1822830223,US
-1822830224,1822830239,CA
-1822830240,1822830939,US
-1822830940,1822830943,CA
-1822830944,1822830951,US
-1822830952,1822830955,CA
-1822830956,1822831003,US
-1822831004,1822831007,CA
-1822831008,1822831407,US
-1822831408,1822831415,CO
-1822831416,1822831559,US
-1822831560,1822831567,IL
-1822831568,1822949375,US
+1822670848,1822949375,US
1822949376,1822982143,CA
1822982144,1823081975,US
1823081976,1823081983,ID
1823081984,1823082199,US
1823082200,1823082207,TR
-1823082208,1823084799,US
+1823082208,1823083583,US
+1823083584,1823083591,QA
+1823083592,1823083823,US
+1823083824,1823083831,QA
+1823083832,1823084767,US
+1823084768,1823084775,QA
+1823084776,1823084799,US
1823084800,1823084807,TR
-1823084808,1823090775,US
+1823084808,1823085855,US
+1823085856,1823085863,PE
+1823085864,1823087287,US
+1823087288,1823087295,BG
+1823087296,1823090367,US
+1823090368,1823090431,BG
+1823090432,1823090775,US
1823090776,1823090783,EG
-1823090784,1823113215,US
+1823090784,1823092511,US
+1823092512,1823092527,IN
+1823092528,1823093063,US
+1823093064,1823093071,QA
+1823093072,1823113215,US
1823113216,1823129599,CA
1823129600,1823162367,US
1823162368,1823170559,CA
-1823170560,1823187975,US
-1823187976,1823187983,FI
-1823187984,1823188279,US
-1823188280,1823188287,MX
-1823188288,1823188311,US
-1823188312,1823188319,IN
-1823188320,1823188927,US
-1823188928,1823188935,CA
-1823188936,1823189011,US
-1823189012,1823189015,AU
-1823189016,1823189047,US
-1823189048,1823189075,KY
-1823189076,1823189155,US
-1823189156,1823189159,AU
-1823189160,1823189251,US
-1823189252,1823189255,CY
-1823189256,1823189387,US
-1823189388,1823189391,CA
-1823189392,1823211519,US
+1823170560,1823211519,US
1823211520,1823342591,CA
1823342592,1823346687,US
1823346688,1823350783,CA
@@ -42719,7 +38849,9 @@
1823358520,1823358527,CA
1823358528,1823358575,US
1823358576,1823358583,GB
-1823358584,1823358743,US
+1823358584,1823358591,US
+1823358592,1823358599,GB
+1823358600,1823358743,US
1823358744,1823358751,CA
1823358752,1823358783,US
1823358784,1823358791,SE
@@ -42791,7 +38923,9 @@
1823424128,1823424159,CA
1823424160,1823428607,US
1823428608,1823432703,CA
-1823432704,1823449247,US
+1823432704,1823440895,US
+1823440896,1823444991,CA
+1823444992,1823449247,US
1823449248,1823449255,MK
1823449256,1823449311,US
1823449312,1823449327,BO
@@ -42822,26 +38956,32 @@
1831862272,1832124415,PT
1832124416,1832386559,IT
1832386560,1832517631,DK
-1832517632,1832583167,SE
-1832583168,1832639487,DK
-1832639488,1832639743,SE
-1832639744,1832648703,DK
+1832517632,1832607743,SE
+1832607744,1832615935,DK
+1832615936,1832648703,SE
1832648704,1832681471,HR
1832681472,1832714239,RU
1832714240,1832747007,HU
1832747008,1832779775,RU
-1832779776,1832780799,MQ
-1832780800,1832782335,FR
-1832782336,1832783871,MQ
-1832783872,1832786431,GP
-1832786432,1832786687,FR
-1832786688,1832786943,GP
-1832786944,1832787967,GF
-1832787968,1832792063,FR
-1832792064,1832792575,RE
+1832779776,1832782591,FR
+1832782592,1832783103,MQ
+1832783104,1832783359,FR
+1832783360,1832783615,MQ
+1832783616,1832784127,FR
+1832784128,1832784383,GP
+1832784384,1832784639,FR
+1832784640,1832786431,GP
+1832786432,1832786943,FR
+1832786944,1832787199,GF
+1832787200,1832791807,FR
+1832791808,1832792063,YT
+1832792064,1832792319,FR
+1832792320,1832792575,RE
1832792576,1832794111,FR
-1832794112,1832794623,GP
-1832794624,1832796927,FR
+1832794112,1832796159,GP
+1832796160,1832796415,FR
+1832796416,1832796671,RE
+1832796672,1832796927,FR
1832796928,1832797183,MQ
1832797184,1832812543,FR
1832812544,1832845311,RU
@@ -42879,9 +39019,7 @@
1833232384,1833234431,TJ
1833234432,1833236479,GB
1833236480,1833238527,FI
-1833238528,1833239807,AL
-1833239808,1833240063,IT
-1833240064,1833240575,AL
+1833238528,1833240575,AL
1833240576,1833242623,ES
1833242624,1833246719,RU
1833246720,1833248767,FI
@@ -42919,16 +39057,12 @@
1833315328,1833316351,GB
1833316352,1833318399,DK
1833318400,1833320447,GB
-1833320448,1833320703,IQ
-1833320704,1833320959,AE
+1833320448,1833320959,AE
1833320960,1833321215,IQ
1833321216,1833321282,US
1833321283,1833321283,AE
1833321284,1833321471,US
-1833321472,1833321727,IQ
-1833321728,1833321983,AE
-1833321984,1833322239,IQ
-1833322240,1833322495,AE
+1833321472,1833322495,AE
1833322496,1833324543,IT
1833324544,1833326591,NO
1833326592,1833328639,US
@@ -43027,9 +39161,7 @@
1833639936,1833644031,AM
1833644032,1833648127,TJ
1833648128,1833652223,LB
-1833652224,1833656063,DE
-1833656064,1833656319,GB
-1833656320,1833660415,DE
+1833652224,1833660415,DE
1833660416,1833664511,IT
1833664512,1833668607,RU
1833668608,1833672703,CZ
@@ -43090,7 +39222,9 @@
1835597824,1835606015,HU
1835606016,1835614207,CZ
1835614208,1835622399,RU
-1835622400,1835630591,SE
+1835622400,1835624959,SE
+1835624960,1835625215,DK
+1835625216,1835630591,SE
1835630592,1835646975,RU
1835646976,1835655167,BA
1835655168,1835663359,CY
@@ -43143,13 +39277,11 @@
1836048384,1836056575,RS
1836056576,1836580863,IT
1836580864,1836597247,RU
-1836597248,1836597759,LU
-1836597760,1836598271,DE
-1836598272,1836601343,LU
-1836601344,1836603391,DE
-1836603392,1836605439,LU
-1836605440,1836605695,DE
-1836605696,1836613631,LU
+1836597248,1836600831,LU
+1836600832,1836604415,DE
+1836604416,1836605439,LU
+1836605440,1836605951,DE
+1836605952,1836613631,LU
1836613632,1836630015,RU
1836630016,1836646399,BG
1836646400,1836679167,RS
@@ -43159,22 +39291,46 @@
1836744704,1836745983,FR
1836745984,1836746239,RE
1836746240,1836746495,FR
-1836746496,1836747519,RE
-1836747520,1836747775,FR
-1836747776,1836750335,RE
-1836750336,1836750591,FR
-1836750592,1836756991,RE
+1836746496,1836746751,RE
+1836746752,1836747775,FR
+1836747776,1836748543,RE
+1836748544,1836748799,FR
+1836748800,1836749311,RE
+1836749312,1836749567,FR
+1836749568,1836749823,RE
+1836749824,1836750335,FR
+1836750336,1836750591,RE
+1836750592,1836750847,FR
+1836750848,1836751103,RE
+1836751104,1836751359,FR
+1836751360,1836751871,RE
+1836751872,1836752127,FR
+1836752128,1836752383,RE
+1836752384,1836752895,FR
+1836752896,1836753663,RE
+1836753664,1836754175,FR
+1836754176,1836754943,RE
+1836754944,1836755711,FR
+1836755712,1836756479,RE
+1836756480,1836756735,FR
+1836756736,1836756991,RE
1836756992,1836758015,FR
-1836758016,1836759551,RE
-1836759552,1836759807,FR
-1836759808,1836761087,RE
+1836758016,1836758783,RE
+1836758784,1836759039,FR
+1836759040,1836759551,RE
+1836759552,1836760063,FR
+1836760064,1836760319,RE
+1836760320,1836760575,FR
+1836760576,1836761087,RE
1836761088,1836777471,IR
1836777472,1836793855,SI
1836793856,1836810239,GB
1836810240,1836826623,RU
1836826624,1836843007,CZ
1836843008,1836875775,RU
-1836875776,1836892159,SE
+1836875776,1836876543,SE
+1836876544,1836876639,RU
+1836876640,1836892159,SE
1836892160,1836908543,RU
1836908544,1836924927,IE
1836924928,1836941311,DE
@@ -43193,7 +39349,9 @@
1839202304,1839235071,BG
1839235072,1839267839,IL
1839267840,1839300607,RU
-1839300608,1839333375,BH
+1839300608,1839330303,BH
+1839330304,1839330559,US
+1839330560,1839333375,BH
1839333376,1839366143,UA
1839366144,1839398911,IR
1839398912,1839431679,NO
@@ -43300,9 +39458,7 @@
1841799168,1841807359,DE
1841807360,1841815551,NO
1841815552,1841823743,BG
-1841823744,1841829850,GB
-1841829851,1841829851,FR
-1841829852,1841831935,GB
+1841823744,1841831935,GB
1841831936,1841840127,MT
1841840128,1841848319,PL
1841848320,1841856511,RU
@@ -43334,15 +39490,11 @@
1842053120,1842061311,ES
1842061312,1842069503,IR
1842069504,1842077695,RU
-1842077696,1842079743,MQ
-1842079744,1842080255,GP
-1842080256,1842080511,MQ
+1842077696,1842080511,MQ
1842080512,1842082047,GP
-1842082048,1842082815,MQ
-1842082816,1842083839,GP
-1842083840,1842084351,MQ
-1842084352,1842084863,GP
-1842084864,1842085887,MQ
+1842082048,1842082303,MQ
+1842082304,1842082815,GP
+1842082816,1842085887,MQ
1842085888,1842118655,GB
1842118656,1842151423,FI
1842151424,1842153471,FR
@@ -43359,13 +39511,11 @@
1842173952,1842175999,RO
1842176000,1842178047,FI
1842178048,1842180095,IT
-1842180096,1842180403,IQ
-1842180404,1842180407,US
-1842180408,1842180607,IQ
-1842180608,1842180863,US
-1842180864,1842181399,IQ
-1842181400,1842181407,US
-1842181408,1842182143,IQ
+1842180096,1842180607,IQ
+1842180608,1842180791,US
+1842180792,1842180799,IQ
+1842180800,1842180863,US
+1842180864,1842182143,IQ
1842182144,1842184191,LV
1842184192,1842186239,DE
1842186240,1842188287,ES
@@ -43407,13 +39557,7 @@
1842339840,1842343935,RU
1842343936,1842348031,UZ
1842348032,1843396607,FR
-1843396608,1843403519,IQ
-1843403520,1843403775,GB
-1843403776,1843404287,IQ
-1843404288,1843404543,US
-1843404544,1843408895,IQ
-1843408896,1843409919,US
-1843409920,1843412991,IQ
+1843396608,1843412991,IQ
1843412992,1843429375,CZ
1843429376,1843462143,GB
1843462144,1843478527,RU
@@ -43533,9 +39677,7 @@
1844115456,1844117503,DE
1844117504,1844119551,CZ
1844119552,1844121599,UA
-1844121600,1844122111,ES
-1844122112,1844122367,US
-1844122368,1844123647,ES
+1844121600,1844123647,ES
1844123648,1844125695,RU
1844125696,1844127743,NL
1844127744,1844129791,DE
@@ -43549,11 +39691,7 @@
1844144128,1844146175,SM
1844146176,1844148223,NO
1844148224,1844150271,GB
-1844150272,1844151167,ES
-1844151168,1844151295,GB
-1844151296,1844151551,ES
-1844151552,1844151807,GB
-1844151808,1844152319,ES
+1844150272,1844152319,ES
1844152320,1844154367,DE
1844154368,1844156415,GB
1844156416,1844158463,IT
@@ -43562,11 +39700,13 @@
1844162560,1844164607,CZ
1844164608,1844166655,RU
1844166656,1844168703,AZ
-1844168704,1844169471,GI
-1844169472,1844169727,US
-1844169728,1844169759,GI
-1844169760,1844169943,US
-1844169944,1844169983,GI
+1844168704,1844169503,GI
+1844169504,1844169519,US
+1844169520,1844169567,GI
+1844169568,1844169583,US
+1844169584,1844169769,GI
+1844169770,1844169770,US
+1844169771,1844169983,GI
1844169984,1844170239,US
1844170240,1844170751,GI
1844170752,1844174847,RU
@@ -43613,9 +39753,7 @@
1844359168,1844363263,IR
1844363264,1844367359,RU
1844367360,1844371455,CZ
-1844371456,1844371711,GE
-1844371712,1844371967,US
-1844371968,1844375551,GE
+1844371456,1844375551,GE
1844375552,1844379647,RU
1844379648,1844383743,IR
1844383744,1844387839,AZ
@@ -43654,9 +39792,7 @@
1845766144,1845768191,MY
1845768192,1845772287,JP
1845772288,1845788671,KR
-1845788672,1845809919,JP
-1845809920,1845810175,US
-1845810176,1845837823,JP
+1845788672,1845837823,JP
1845837824,1845839871,PH
1845839872,1845841919,IN
1845841920,1845846015,AU
@@ -43896,13 +40032,13 @@
1870462976,1870479359,JP
1870479360,1870480895,PH
1870480896,1870481151,US
-1870481152,1870495743,PH
+1870481152,1870487551,PH
+1870487552,1870487807,US
+1870487808,1870495743,PH
1870495744,1870497791,TW
1870497792,1870499839,IN
1870499840,1870501887,JP
-1870501888,1870502655,AF
-1870502656,1870502911,US
-1870502912,1870503935,AF
+1870501888,1870503935,AF
1870503936,1870512127,AU
1870512128,1870528511,IN
1870528512,1873281023,CN
@@ -43988,9 +40124,7 @@
1886224384,1886257151,CN
1886257152,1886322687,IN
1886322688,1886781439,CN
-1886781440,1886846975,HK
-1886846976,1886847231,CA
-1886847232,1886978047,HK
+1886781440,1886978047,HK
1886978048,1886986239,KR
1886986240,1886990335,TW
1886990336,1886994431,IN
@@ -44011,8 +40145,7 @@
1888038912,1888040959,CN
1888040960,1888059391,JP
1888059392,1888063487,VN
-1888063488,1888067071,JP
-1888067072,1888067583,US
+1888063488,1888067583,JP
1888067584,1888071679,MY
1888071680,1888073727,KR
1888073728,1888239615,JP
@@ -44034,9 +40167,7 @@
1891958784,1892024319,VN
1892024320,1892122623,PH
1892122624,1892155391,SG
-1892155392,1892480511,PH
-1892480512,1892480639,AU
-1892480640,1892941823,PH
+1892155392,1892941823,PH
1892941824,1893015551,KR
1893015552,1893019647,AU
1893019648,1893023743,TW
@@ -44190,9 +40321,7 @@
1909161984,1909194751,PK
1909194752,1909456895,CN
1909456896,1909473279,JP
-1909473280,1909475327,HK
-1909475328,1909475583,US
-1909475584,1909479939,HK
+1909473280,1909479939,HK
1909479940,1909479940,US
1909479941,1909481471,HK
1909481472,1909587967,CN
@@ -44301,10 +40430,9 @@
1921388544,1921392639,PG
1921392640,1921400831,JP
1921400832,1921404927,ID
-1921404928,1921405695,HK
-1921405696,1921405823,SG
+1921404928,1921405823,HK
1921405824,1921405855,MM
-1921405856,1921405919,SG
+1921405856,1921405919,HK
1921405920,1921405951,MM
1921405952,1921406975,HK
1921406976,1921409023,BD
@@ -44335,7 +40463,9 @@
1921945600,1921949695,HK
1921949696,1921953791,AU
1921953792,1921957887,JP
-1921957888,1921974271,GU
+1921957888,1921964031,GU
+1921964032,1921964287,US
+1921964288,1921974271,GU
1921974272,1922039807,IN
1922039808,1925447679,JP
1925447680,1925578751,CN
@@ -44408,9 +40538,7 @@
1934929920,1934931967,VN
1934931968,1934934015,JP
1934934016,1934942207,CN
-1934942208,1934955007,PH
-1934955008,1934955263,AU
-1934955264,1934966783,PH
+1934942208,1934966783,PH
1934966784,1934974975,ID
1934974976,1934983167,JP
1934983168,1934983423,MY
@@ -44476,7 +40604,9 @@
1940357120,1940389887,JP
1940389888,1940914175,CN
1940914176,1941045247,JP
-1941045248,1941049343,HK
+1941045248,1941046783,HK
+1941046784,1941047295,AU
+1941047296,1941049343,HK
1941049344,1941051391,AU
1941051392,1941052415,KH
1941052416,1941053439,AU
@@ -44591,9 +40721,7 @@
1951399936,1951662079,JP
1951662080,1951727615,KR
1951727616,1951793151,CN
-1951793152,1952018431,SG
-1952018432,1952018943,IN
-1952018944,1952022527,SG
+1951793152,1952022527,SG
1952022528,1952026623,TW
1952026624,1952030719,CN
1952030720,1952038911,KR
@@ -44656,8 +40784,9 @@
1959104512,1959106559,AU
1959106560,1959108607,JP
1959110656,1959112703,JP
-1959112704,1959113727,IN
-1959113728,1959116799,HK
+1959112704,1959113215,HK
+1959113216,1959113471,IN
+1959113472,1959116799,HK
1959116800,1959133183,SG
1959133184,1959239679,CN
1959239680,1959241727,KR
@@ -44826,7 +40955,8 @@
1970798592,1970800639,SG
1970800640,1970803711,AU
1970803712,1970804223,HK
-1970804224,1970804735,AU
+1970804224,1970804479,AU
+1970804480,1970804735,SG
1970804736,1970806783,KH
1970806784,1970808831,NZ
1970808832,1970810879,AU
@@ -44848,7 +40978,9 @@
1970962432,1970995199,CN
1970995200,1971060735,KR
1971060736,1975517183,CN
-1975517184,1979711487,IN
+1975517184,1976195839,IN
+1976195840,1976196095,US
+1976196096,1979711487,IN
1979711488,1981284351,JP
1981284352,1981546494,CN
1981546495,1981546495,SG
@@ -44919,9 +41051,7 @@
1986772992,1986789375,MY
1986789376,1987051519,JP
1987051520,1988034559,CN
-1988034560,1988035071,AU
-1988035072,1988035327,NZ
-1988035328,1988067327,AU
+1988034560,1988067327,AU
1988067328,1988075519,CN
1988075520,1988083711,AU
1988083712,1988158975,KR
@@ -45017,7 +41147,9 @@
1997723648,1997725695,JP
1997725696,1998061567,CN
1998061568,1998258175,JP
-1998258176,1998274559,SG
+1998258176,1998274047,SG
+1998274048,1998274303,US
+1998274304,1998274559,SG
1998274560,1998454783,CN
1998454784,1998456831,AU
1998456832,1998458879,JP
@@ -45059,11 +41191,7 @@
1999298560,1999306751,CN
1999306752,1999372287,IN
1999372288,1999503359,CN
-1999503360,1999535359,TH
-1999535360,1999535615,AU
-1999535616,1999538175,TH
-1999538176,1999540223,SG
-1999540224,1999568895,TH
+1999503360,1999568895,TH
1999568896,1999589375,JP
1999589376,1999591423,HK
1999591424,1999593471,ID
@@ -45079,7 +41207,9 @@
2000373760,2000375807,HK
2000375808,2000376319,AF
2000376320,2000376575,US
-2000376576,2000377855,AF
+2000376576,2000377087,AF
+2000377088,2000377343,US
+2000377344,2000377855,AF
2000377856,2000379903,JP
2000379904,2000388095,TH
2000388096,2000617471,CN
@@ -45198,13 +41328,12 @@
2013065216,2014314495,CN
2014314496,2014838783,AU
2014838784,2015100927,CN
-2015100928,2015118847,PH
-2015118848,2015119103,US
-2015119104,2015166463,PH
+2015100928,2015166463,PH
2015166464,2015182847,AU
2015182848,2015199231,PH
2015199232,2015203327,KR
-2015203328,2015205375,US
+2015203328,2015203839,JP
+2015203840,2015205375,US
2015205376,2015207423,ID
2015207424,2015215615,JP
2015215616,2015219711,IN
@@ -45243,8 +41372,8 @@
2019035136,2019037183,CN
2019037184,2019041279,JP
2019041280,2019045375,IN
-2019045376,2019045631,US
-2019045632,2019049471,JP
+2019045376,2019046399,US
+2019046400,2019049471,JP
2019049472,2019078143,AU
2019078144,2019082239,IN
2019082240,2019098623,HK
@@ -45265,9 +41394,7 @@
2022184960,2022187007,KH
2022187008,2022187663,HK
2022187664,2022187679,US
-2022187680,2022189055,HK
-2022189056,2022189311,AU
-2022189312,2022189651,HK
+2022187680,2022189651,HK
2022189652,2022189652,HK
2022189653,2022191103,HK
2022191104,2022195199,NZ
@@ -45348,12 +41475,7 @@
2033664000,2033696767,KR
2033696768,2033708799,GU
2033708800,2033709055,US
-2033709056,2033710591,GU
-2033710592,2033710847,US
-2033710848,2033712383,GU
-2033712384,2033712639,US
-2033712640,2033712895,GU
-2033712896,2033713151,US
+2033709056,2033713151,GU
2033713152,2033876991,CN
2033876992,2033879039,JP
2033879040,2033887231,CN
@@ -45382,9 +41504,7 @@
2036598784,2036600831,JP
2036600832,2036604927,ID
2036604928,2036609023,SG
-2036609024,2036610047,AF
-2036610048,2036610303,US
-2036610304,2036611071,AF
+2036609024,2036611071,AF
2036611072,2036613119,JP
2036613120,2036629503,KR
2036629504,2036678655,CN
@@ -45443,7 +41563,8 @@
2047082496,2047475711,CN
2047475712,2047492095,HK
2047492096,2047496191,KR
-2047496192,2047526911,CN
+2047496192,2047508479,HK
+2047508480,2047526911,CN
2047526912,2047531007,HK
2047531008,2047574015,CN
2047574016,2047606783,SG
@@ -45464,7 +41585,8 @@
2050097152,2050099199,SG
2050099200,2050101247,IN
2050101248,2050113535,JP
-2050113536,2050129919,SG
+2050113536,2050129663,SG
+2050129664,2050129919,JP
2050129920,2050162687,IN
2050162688,2050228223,CN
2050228224,2050490367,PH
@@ -45491,8 +41613,9 @@
2053515264,2053519359,ID
2053519360,2053521407,JP
2053521408,2053529599,CN
-2053529600,2053532671,AU
-2053532672,2053533695,NZ
+2053529600,2053532927,AU
+2053532928,2053533183,NZ
+2053533184,2053533695,AU
2053533696,2053534719,VN
2053534720,2053537791,IN
2053537792,2053636095,JP
@@ -45530,13 +41653,7 @@
2056265728,2056273919,TW
2056273920,2056290303,PH
2056290304,2056323071,CN
-2056323072,2056340991,JP
-2056340992,2056341247,US
-2056341248,2056341503,JP
-2056341504,2056341759,US
-2056341760,2056342271,JP
-2056342272,2056342527,US
-2056342528,2056388607,JP
+2056323072,2056388607,JP
2056388608,2056519679,TW
2056519680,2056781823,AU
2056781824,2056794111,JP
@@ -45564,7 +41681,6 @@
2059931648,2059933695,IN
2059933696,2059935743,AU
2059935744,2059937791,JP
-2059937792,2059939839,BD
2059939840,2059941887,ID
2059941888,2059943935,AU
2059943936,2059960319,CN
@@ -45577,13 +41693,9 @@
2059976704,2059995135,JP
2059995136,2059997183,VN
2059997184,2060001279,MN
-2060001280,2060001535,HK
-2060001536,2060001791,US
-2060001792,2060002303,HK
-2060002304,2060002559,US
+2060001280,2060002559,HK
2060002560,2060002815,ID
-2060002816,2060003071,US
-2060003072,2060004351,HK
+2060002816,2060004351,HK
2060004352,2060004607,US
2060004608,2060005119,HK
2060005120,2060005375,US
@@ -45609,26 +41721,26 @@
2063081472,2063085567,ID
2063085568,2063089663,CN
2063089664,2063097855,JP
-2063097856,2063106047,MM
+2063097856,2063098367,MM
+2063098368,2063098495,SG
+2063098496,2063106047,MM
2063106048,2063107071,JP
2063107072,2063107327,AP
2063107328,2063107623,JP
2063107624,2063107631,AU
2063107632,2063111679,JP
2063111680,2063112191,AU
-2063112192,2063113215,JP
-2063113216,2063114239,AU
-2063114240,2063114495,JP
+2063112192,2063114495,JP
2063114496,2063114751,IN
2063114752,2063115007,JP
2063115008,2063115263,IN
2063115264,2063118335,JP
2063118336,2063118591,IN
2063118592,2063119871,JP
-2063119872,2063120383,IN
-2063120384,2063120895,JP
-2063120896,2063121151,AU
-2063121152,2063122431,JP
+2063119872,2063119999,IN
+2063120000,2063120383,JP
+2063120384,2063121407,AU
+2063121408,2063122431,JP
2063122432,2063138815,SG
2063138816,2063335423,JP
2063335424,2063341567,AU
@@ -45636,8 +41748,7 @@
2063343616,2063351807,JP
2063351808,2063368191,KR
2063368192,2063372287,JP
-2063372288,2063372543,AU
-2063372544,2063374335,AP
+2063372288,2063374335,AP
2063374336,2063376383,NZ
2063376384,2063380479,TW
2063380480,2063382527,KH
@@ -45833,12 +41944,11 @@
2082324480,2082340863,PK
2082340864,2082406399,IN
2082406400,2082471935,CN
-2082471936,2083004415,JP
-2083004416,2083012607,US
+2082471936,2083007231,JP
+2083007232,2083012607,US
2083012608,2083024895,JP
2083024896,2083053567,CN
2083053568,2083057663,TH
-2083057664,2083058687,AU
2083058688,2083059711,IN
2083059712,2083061759,ID
2083061760,2083110911,JP
@@ -45879,9 +41989,7 @@
2087462912,2087464959,CN
2087464960,2087467007,KH
2087467008,2087469055,JP
-2087469056,2087477759,HK
-2087477760,2087478015,AU
-2087478016,2087485439,HK
+2087469056,2087485439,HK
2087485440,2087501823,TW
2087501824,2087518207,JP
2087518208,2087519231,TH
@@ -45956,7 +42064,9 @@
2093383680,2093416447,NZ
2093416448,2093432831,KR
2093432832,2093445119,TW
-2093445120,2093449215,AF
+2093445120,2093448447,AF
+2093448448,2093448703,US
+2093448704,2093449215,AF
2093449216,2093481983,KR
2093481984,2094006271,CN
2094006272,2094530559,JP
@@ -45996,11 +42106,7 @@
2097545216,2097610751,JP
2097610752,2097643519,AU
2097643520,2097676287,KR
-2097676288,2098114815,JP
-2098114816,2098115071,US
-2098115072,2098122495,JP
-2098122496,2098122751,US
-2098122752,2098200575,JP
+2097676288,2098200575,JP
2098200576,2098623239,IN
2098623240,2098623240,PG
2098623241,2098724863,IN
@@ -46011,9 +42117,7 @@
2099216384,2099232767,KR
2099232768,2100297727,CN
2100297728,2100854783,JP
-2100854784,2100874495,US
-2100874496,2100874751,AU
-2100874752,2100887551,US
+2100854784,2100887551,US
2100887552,2100953087,KR
2100953088,2100969471,VN
2100969472,2100985855,JP
@@ -46059,19 +42163,15 @@
2111111168,2111143935,CN
2111143936,2111152127,ID
2111152128,2111160319,AU
-2111160320,2111161855,AF
-2111161856,2111162111,US
-2111162112,2111164159,AF
-2111164160,2111164415,US
-2111164416,2111168511,AF
+2111160320,2111161599,AF
+2111161600,2111161855,US
+2111161856,2111168511,AF
2111168512,2111176703,TH
2111176704,2111193087,VN
2111193088,2111201279,AU
2111201280,2111209471,CN
2111209472,2111217663,JP
-2111217664,2111225343,LK
-2111225344,2111225599,SG
-2111225600,2111225855,LK
+2111217664,2111225855,LK
2111225856,2111242239,HK
2111242240,2111258623,CN
2111258624,2111275007,JP
@@ -46081,13 +42181,15 @@
2112487424,2112618495,VN
2112618496,2112880639,NZ
2112880640,2113683455,KR
-2113683456,2113687551,MY
-2113687552,2113688575,AU
-2113688576,2113688831,MY
-2113688832,2113691647,AU
-2113691648,2113692671,JP
-2113692672,2113692927,HK
-2113692928,2113716223,JP
+2113683456,2113685247,JP
+2113685248,2113685311,PH
+2113685312,2113685759,JP
+2113685760,2113686015,MY
+2113686016,2113687807,JP
+2113687808,2113688063,AU
+2113688064,2113693695,JP
+2113693696,2113693951,HK
+2113693952,2113716223,JP
2113716224,2113732607,SG
2113732608,2113761279,AU
2113761280,2113765375,VN
@@ -46103,7 +42205,7 @@
2147485696,2147487743,DK
2147487744,2147489791,NO
2147489792,2147491839,RU
-2147491840,2147500031,RO
+2147491840,2147500031,DE
2147500032,2147502079,NL
2147502080,2147504127,DK
2147504128,2147508223,RU
@@ -46205,9 +42307,7 @@
2156716032,2156718079,RO
2156718080,2156720127,IS
2156720128,2156724223,BY
-2156724224,2156760063,CH
-2156760064,2156761087,FR
-2156761088,2156855295,CH
+2156724224,2156855295,CH
2156855296,2156920831,US
2156920832,2156986367,CA
2156986368,2159017983,US
@@ -46270,11 +42370,11 @@
2166575360,2166575615,GB
2166575616,2166598655,US
2166598656,2166598911,FR
-2166598912,2166606079,US
-2166606080,2166606335,DE
-2166606336,2166606847,US
-2166606848,2166607103,DE
-2166607104,2166613759,US
+2166598912,2166606335,US
+2166606336,2166606591,FR
+2166606592,2166607009,US
+2166607010,2166607011,DE
+2166607012,2166613759,US
2166613760,2166614015,DE
2166614016,2168193023,US
2168193024,2168258559,JP
@@ -46348,17 +42448,13 @@
2178351104,2178416639,GB
2178416640,2178482175,US
2178482176,2178547711,DE
-2178547712,2178826239,US
-2178826240,2178830335,BR
-2178830336,2179173887,US
-2179173888,2179174143,SE
-2179174144,2179348479,US
-2179348480,2179348735,DE
-2179348736,2179379199,US
+2178547712,2179379199,US
2179379200,2179395583,GB
2179395584,2179397632,US
2179397633,2179397633,GB
-2179397634,2179465215,US
+2179397634,2179398143,US
+2179398144,2179398399,GB
+2179398400,2179465215,US
2179530752,2179596287,DE
2179596288,2179661823,GB
2179661824,2179989503,US
@@ -46435,9 +42531,9 @@
2184577024,2184642559,JP
2184642560,2184708095,US
2184708096,2184773631,AU
-2184773632,2184781311,US
-2184781312,2184781567,AU
-2184781568,2184904703,US
+2184773632,2184803839,US
+2184803840,2184804351,GB
+2184804352,2184904703,US
2184904704,2185035775,CH
2185035776,2185166847,US
2185166848,2185232383,CA
@@ -46508,22 +42604,28 @@
2188706103,2188706453,EU
2188706454,2188706454,DK
2188706455,2188707839,EU
-2188707840,2188708351,FR
-2188708352,2188711800,EU
+2188707840,2188708863,FR
+2188708864,2188711800,EU
2188711801,2188711801,DE
-2188711802,2188717055,EU
-2188717056,2188717183,FR
-2188717184,2188718581,EU
+2188711802,2188716031,EU
+2188716032,2188718079,FR
+2188718080,2188718581,EU
2188718582,2188718582,DE
2188718583,2188724463,EU
2188724464,2188724464,NL
-2188724465,2188726783,EU
+2188724465,2188724991,EU
+2188724992,2188725247,IL
+2188725248,2188726783,EU
2188726784,2188727039,GB
2188727040,2188728319,EU
2188728320,2188728575,GB
2188728576,2188734463,EU
-2188734464,2188738559,GB
-2188738560,2188768767,EU
+2188734464,2188734719,FR
+2188734720,2188736511,EU
+2188736512,2188737023,GB
+2188737024,2188737791,EU
+2188737792,2188738047,GB
+2188738048,2188768767,EU
2188768768,2188769023,YT
2188769024,2188769279,EU
2188769280,2188769535,NL
@@ -46578,10 +42680,11 @@
2193184768,2193186815,ES
2193186816,2193188863,PL
2193188864,2193190911,DE
-2193190912,2193195007,RU
2193195008,2193199103,DK
2193199104,2193201151,GB
-2193201152,2193203199,SE
+2193201152,2193202175,SE
+2193202176,2193202431,US
+2193202432,2193203199,SE
2193203200,2193205247,GB
2193205248,2193207295,FR
2193207296,2193209343,CZ
@@ -46623,9 +42726,7 @@
2195069437,2195069437,AP
2195069438,2195073023,US
2195073024,2195073279,EU
-2195073280,2195079167,US
-2195079168,2195079423,IN
-2195079424,2195193855,US
+2195073280,2195193855,US
2195193856,2195324927,NZ
2195324928,2195455999,US
2195456000,2195521535,AU
@@ -46828,9 +42929,9 @@
2226716672,2226782207,GB
2226782208,2226847743,AE
2226847744,2226913279,DE
-2226913280,2226921571,US
-2226921572,2226921572,EU
-2226921573,2227052543,US
+2226913280,2226921471,US
+2226921472,2226921727,EU
+2226921728,2227052543,US
2227052544,2227052609,EU
2227052610,2227052610,CH
2227052611,2227052799,EU
@@ -46911,15 +43012,7 @@
2250047488,2250113023,US
2250113024,2250178559,DE
2250178560,2250244095,CA
-2250244096,2250249471,US
-2250249472,2250249727,GB
-2250249728,2250254335,US
-2250254336,2250256383,GB
-2250256384,2250268671,US
-2250268672,2250272767,GB
-2250272768,2250285055,US
-2250285056,2250293247,GB
-2250293248,2250375167,US
+2250244096,2250375167,US
2250375168,2250440703,DE
2250440704,2250506239,US
2250506240,2250571775,GB
@@ -47011,19 +43104,26 @@
2258594816,2258596095,AU
2258596096,2258596351,HK
2258596352,2258596863,AP
-2258596864,2258597293,AU
-2258597294,2258597294,PG
-2258597295,2258597375,AU
+2258596864,2258597119,AU
+2258597120,2258597375,PG
2258597376,2258597439,HK
-2258597440,2258601471,AU
+2258597440,2258598079,AU
+2258598080,2258598087,TW
+2258598088,2258598639,AU
+2258598640,2258598655,TW
+2258598656,2258601471,AU
2258601472,2258601983,JP
-2258601984,2258604799,AU
+2258601984,2258602431,AU
+2258602432,2258602447,HK
+2258602448,2258602879,AU
+2258602880,2258603263,HK
+2258603264,2258604799,AU
2258604800,2258605055,AP
-2258605056,2258607871,AU
+2258605056,2258606079,AU
+2258606080,2258606335,HK
+2258606336,2258607871,AU
2258607872,2258608639,HK
-2258608640,2258608842,AU
-2258608843,2258608843,US
-2258608844,2258609663,AU
+2258608640,2258609663,AU
2258609664,2258610175,HK
2258610176,2258610431,IN
2258610432,2258610687,AU
@@ -47050,9 +43150,7 @@
2260598784,2260664319,CA
2260664320,2260723711,GB
2260723712,2260723967,IL
-2260723968,2260726783,GB
-2260726784,2260727039,IE
-2260727040,2260729343,GB
+2260723968,2260729343,GB
2260729344,2260729599,IL
2260729600,2260729855,GB
2260729856,2260991999,US
@@ -47062,11 +43160,7 @@
2261254144,2261385215,US
2261385216,2261450751,PR
2261450752,2261516287,NL
-2261516288,2261569535,US
-2261569536,2261569791,TH
-2261569792,2261573631,US
-2261573632,2261573887,GB
-2261573888,2261647359,US
+2261516288,2261647359,US
2261647360,2261712895,FR
2261712896,2261778431,US
2261778432,2261843967,TW
@@ -47151,11 +43245,9 @@
2292842496,2292908031,GB
2292908032,2292973567,US
2292973568,2293039103,DE
-2293039104,2293080575,LU
-2293080576,2293080831,BE
-2293080832,2293085183,LU
-2293085184,2293085439,BE
-2293085440,2293104639,LU
+2293039104,2293080063,LU
+2293080064,2293088255,BE
+2293088256,2293104639,LU
2293104640,2293891071,US
2293891072,2293956607,AU
2293956608,2294022143,JP
@@ -47179,13 +43271,7 @@
2297626624,2297692159,DE
2297692160,2298118655,US
2298118656,2298118911,GB
-2298118912,2298142719,US
-2298142720,2298150911,GB
-2298150912,2298362879,US
-2298362880,2298363903,GB
-2298363904,2298370047,US
-2298370048,2298372095,GB
-2298372096,2298395903,US
+2298118912,2298395903,US
2298395904,2298396159,GB
2298396160,2299461631,US
2299461632,2299527167,CA
@@ -47211,9 +43297,9 @@
2302541824,2302607359,CH
2302672896,2302935039,US
2302935040,2303000575,KR
-2303000576,2303189503,US
-2303189504,2303189759,IE
-2303189760,2303190527,US
+2303000576,2303189557,US
+2303189558,2303189558,IE
+2303189559,2303190527,US
2303190528,2303190783,AP
2303190784,2303262719,US
2303262720,2303328255,GB
@@ -47247,13 +43333,7 @@
2307129344,2307194879,SG
2307194880,2307260415,NO
2307260416,2307522559,US
-2307522560,2307530751,CH
-2307530752,2307534847,FR
-2307534848,2307536895,CH
-2307536896,2307538943,FR
-2307538944,2307545087,CH
-2307545088,2307547135,FR
-2307547136,2307588095,CH
+2307522560,2307588095,CH
2307588096,2308112383,US
2308112384,2308177919,AU
2308177920,2308243455,US
@@ -47315,7 +43395,9 @@
2315649024,2315714559,SE
2315714560,2315780095,AU
2315780096,2315911167,US
-2315911168,2316042239,CA
+2315911168,2315976703,CA
+2315976704,2315976959,US
+2315976960,2316042239,CA
2316042240,2316173311,US
2316173312,2316238847,SE
2316238848,2316500991,US
@@ -47331,11 +43413,10 @@
2317395968,2317396223,NO
2317396224,2317398015,US
2317398016,2317398271,GB
-2317398272,2317412351,US
-2317412352,2317413375,CA
+2317398272,2317413119,US
+2317413120,2317413375,CA
2317413376,2317413631,ID
-2317413632,2317414399,CA
-2317414400,2317414655,US
+2317413632,2317414655,US
2317414656,2317414911,AU
2317414912,2317417983,US
2317417984,2317418239,AP
@@ -47402,13 +43483,10 @@
2328231936,2328297471,GB
2328297472,2328314367,EU
2328314368,2328314623,NL
-2328314624,2328316159,EU
-2328316160,2328316415,FR
-2328316416,2328316671,EU
-2328316672,2328316927,FR
-2328316928,2328317439,EU
+2328314624,2328317439,EU
2328317440,2328317695,NL
-2328317696,2328363007,EU
+2328317696,2328317951,FR
+2328317952,2328363007,EU
2328363008,2328494079,DE
2328494080,2328559615,US
2328559616,2328625151,BE
@@ -47425,7 +43503,9 @@
2329477120,2329542655,AU
2329542656,2329608191,CA
2329673728,2329739263,US
-2329739264,2330180863,CH
+2329739264,2330084351,CH
+2330084352,2330084607,US
+2330084608,2330180863,CH
2330180864,2330181119,SE
2330181120,2330263551,CH
2330263552,2330267647,US
@@ -47561,13 +43641,9 @@
2344353792,2344419327,AU
2344419328,2344484863,CN
2344484864,2344550399,PK
-2344550400,2344554495,EU
-2344554496,2344554751,IT
-2344554752,2344570879,EU
-2344570880,2344574975,IT
-2344574976,2344583167,EU
-2344583168,2344591359,ES
-2344591360,2344615935,EU
+2344550400,2344566783,EU
+2344566784,2344574975,IT
+2344574976,2344615935,EU
2344615936,2344878079,ID
2344878080,2346188799,CN
2346188800,2346450943,AU
@@ -47675,18 +43751,14 @@
2365456384,2365521919,US
2365521920,2365587455,CN
2365587456,2365589503,JO
-2365589504,2365589643,US
-2365589644,2365589645,AU
-2365589646,2365590527,US
+2365589504,2365590527,US
2365590528,2365591039,NO
2365591040,2365591455,US
2365591456,2365591551,NO
2365591552,2365593599,DE
2365593600,2365595647,NL
2365595648,2365603839,GB
-2365603840,2365623497,NO
-2365623498,2365623498,SE
-2365623499,2365624319,NO
+2365603840,2365624319,NO
2365624320,2365630463,GB
2365630464,2365632511,NL
2365632512,2365634559,RU
@@ -47710,7 +43782,9 @@
2366308352,2366368255,GB
2366368256,2366368511,FR
2366368512,2366369791,GB
-2366369792,2366373887,FR
+2366369792,2366370815,FR
+2366370816,2366371071,GB
+2366371072,2366373887,FR
2366373888,2370579746,DE
2370579747,2370579747,DE
2370579748,2370895871,DE
@@ -47756,9 +43830,7 @@
2372796416,2372993023,US
2372993024,2373025791,DE
2373025792,2373026047,SG
-2373026048,2373034239,DE
-2373034240,2373034495,BR
-2373034496,2373058559,DE
+2373026048,2373058559,DE
2373058560,2373124095,US
2373124096,2373189631,FR
2373189632,2373255167,US
@@ -47807,9 +43879,9 @@
2374688768,2374696959,GB
2374696960,2374959103,US
2374959104,2375352319,SE
-2375352320,2376079615,US
-2376079616,2376079871,GB
-2376079872,2376269823,US
+2375352320,2376233215,US
+2376233216,2376233471,AU
+2376233472,2376269823,US
2376269824,2376335359,GB
2376335360,2376597503,US
2376597504,2376663039,AU
@@ -47886,8 +43958,8 @@
2382168064,2382233599,BE
2382233600,2382299135,US
2382299136,2382331903,GR
-2382331904,2382338303,FR
-2382338304,2382340095,NL
+2382331904,2382335999,FR
+2382336000,2382340095,NL
2382340096,2382342143,CH
2382342144,2382344191,AT
2382344192,2382346239,NL
@@ -48033,14 +44105,14 @@
2382684160,2382692351,US
2382692352,2383085567,CA
2383085568,2383151103,US
-2383151104,2385193983,CA
-2385193984,2385194239,GB
-2385194240,2385903615,CA
+2383151104,2385903615,CA
2385903616,2385915903,US
2385915904,2385919999,CA
2385920000,2385945007,US
2385945008,2385945015,MX
-2385945016,2385969151,US
+2385945016,2385968127,US
+2385968128,2385968383,CA
+2385968384,2385969151,US
2385969152,2386067455,CA
2386067456,2386083839,US
2386083840,2386624511,CA
@@ -48081,13 +44153,9 @@
2394947584,2395013119,US
2395013120,2395209727,CA
2395209728,2395340799,US
-2395340800,2395804159,CA
-2395804160,2395804415,GB
-2395804416,2395814911,CA
-2395814912,2395815423,US
-2395815424,2395841279,CA
-2395841280,2395841535,GB
-2395841536,2398748671,CA
+2395340800,2397700095,CA
+2397700096,2397765631,US
+2397765632,2398748671,CA
2398748672,2398879743,US
2398945280,2399010815,CA
2399010816,2399109119,US
@@ -48104,8 +44172,8 @@
2402549760,2402680831,GB
2402680832,2402746367,BR
2402746368,2402945023,US
-2402945024,2402946047,GB
-2402946048,2403401727,US
+2402945024,2402945279,GB
+2402945280,2403401727,US
2403401728,2403467263,GB
2403467264,2404974591,US
2404974592,2405040127,HK
@@ -48121,9 +44189,7 @@
2405629952,2405695487,CH
2405695488,2406088703,US
2406088704,2406285311,BR
-2406285312,2406808575,US
-2406808576,2406808831,IN
-2406808832,2406809599,US
+2406285312,2406809599,US
2406809600,2406875135,GB
2406875136,2406940671,SE
2406940672,2407006207,AU
@@ -48208,26 +44274,24 @@
2417688576,2417754111,SE
2417754112,2418016255,US
2418016256,2418081791,GB
-2418081792,2418309119,US
-2418309120,2418309375,PL
-2418309376,2418311167,US
+2418081792,2418311167,US
2418311168,2418313215,IN
2418313216,2418315263,US
-2418315264,2418317311,IN
-2418317312,2418323007,US
+2418315264,2418315775,IN
+2418315776,2418323007,US
2418323008,2418323008,PH
2418323009,2418323455,US
2418323456,2418331647,IN
2418331648,2418332159,US
-2418332160,2418332671,IN
-2418332672,2418333183,US
-2418333184,2418333695,IN
-2418333696,2418336767,US
-2418336768,2418337279,IN
-2418337280,2418337791,US
-2418337792,2418338815,IN
-2418338816,2418339839,US
-2418339840,2418343935,IN
+2418332160,2418332415,IN
+2418332416,2418336767,US
+2418336768,2418337535,IN
+2418337536,2418337791,US
+2418337792,2418338047,IN
+2418338048,2418338303,US
+2418338304,2418338815,IN
+2418338816,2418341887,US
+2418341888,2418343935,IN
2418343936,2418606079,US
2418606080,2418671615,DE
2418671616,2418737151,US
@@ -48264,9 +44328,7 @@
2422210560,2422276095,US
2422276096,2422341631,AU
2422341632,2422407167,GB
-2422407168,2422605823,US
-2422605824,2422606079,DE
-2422606080,2423128063,US
+2422407168,2423128063,US
2423128064,2423193599,AU
2423193600,2423717887,US
2423717888,2423783423,NL
@@ -48291,18 +44353,14 @@
2427536896,2427537151,US
2427537152,2427544575,NO
2427544576,2427544831,AP
-2427544832,2427551999,NO
-2427552000,2427552255,AU
-2427552256,2427584511,NO
+2427544832,2427584511,NO
2427584512,2427650047,GB
2427650048,2427846655,NO
2427846656,2428174335,US
2428174336,2428178431,GB
2428178432,2428183562,US
2428183563,2428183563,EU
-2428183564,2428212223,US
-2428212224,2428212479,IN
-2428212480,2428567551,US
+2428183564,2428567551,US
2428567552,2428633087,NO
2428633088,2428696831,CA
2428696832,2428697087,EU
@@ -48323,13 +44381,16 @@
2429943808,2430009343,HK
2430009344,2432172031,US
2432172032,2432237567,BE
-2432237568,2432573439,US
-2432573440,2432575999,GB
-2432576000,2432576511,DE
-2432576512,2432581631,GB
-2432581632,2432602879,US
+2432237568,2432575487,US
+2432575488,2432576511,DE
+2432576512,2432577535,US
+2432577536,2432579583,GB
+2432579584,2432602879,US
2432602880,2432603135,PL
-2432603136,2432614399,US
+2432603136,2432604159,US
+2432604160,2432606207,GB
+2432606208,2432610303,US
+2432610304,2432614399,IT
2432614400,2432616447,NL
2432616448,2432616448,US
2432616449,2432617472,NL
@@ -48337,19 +44398,13 @@
2432630784,2432696319,CN
2432696320,2433247231,NL
2433247232,2433247487,GB
-2433247488,2435091455,NL
-2435091456,2435091967,IN
-2435091968,2435115775,NL
+2433247488,2435115775,NL
2435115776,2435116031,GB
2435116032,2436767743,NL
2436767744,2436767874,EU
2436767875,2436767875,DE
2436767876,2436767999,EU
-2436768000,2436924927,NL
-2436924928,2436925183,DE
-2436925184,2437813503,NL
-2437813504,2437813759,GB
-2437813760,2446983167,NL
+2436768000,2446983167,NL
2446983168,2447048703,EU
2447048704,2447376383,NL
2447376384,2447441919,GB
@@ -48364,7 +44419,9 @@
2447966208,2448031743,GB
2448031744,2448097279,CH
2448097280,2448162815,SE
-2448162816,2448228351,HU
+2448162816,2448174591,HU
+2448174592,2448174847,RO
+2448174848,2448228351,HU
2448228352,2448293887,PL
2448293888,2448359423,FR
2448359424,2448424959,GB
@@ -48421,11 +44478,7 @@
2451031040,2451031295,AP
2451031296,2451035135,US
2451035136,2451035391,EU
-2451035392,2451042815,US
-2451042816,2451043071,ZA
-2451043072,2451044863,US
-2451044864,2451045119,TH
-2451045120,2451986959,US
+2451035392,2451986959,US
2451986960,2451986960,GB
2451986961,2452619263,US
2452619264,2452684799,IT
@@ -48513,7 +44566,9 @@
2457075712,2457141247,AU
2457206784,2457272319,AU
2457272320,2457337855,FI
-2457337856,2457403391,CZ
+2457337856,2457398271,CZ
+2457398272,2457400319,RU
+2457400320,2457403391,CZ
2457403392,2457599999,US
2457600000,2457665535,GR
2457665536,2458058751,US
@@ -48536,7 +44591,9 @@
2459893760,2459959295,CH
2459959296,2460024831,US
2460024832,2460090367,FI
-2460090368,2460155903,GB
+2460090368,2460152319,GB
+2460152320,2460152831,FR
+2460152832,2460155903,GB
2460155904,2460221439,US
2460221440,2460286975,BR
2460286976,2460549119,US
@@ -48563,7 +44620,9 @@
2461609984,2461611575,BE
2461611576,2461611583,NL
2461611584,2461612031,BE
-2461612032,2461614079,IL
+2461612032,2461613567,IL
+2461613568,2461613823,PS
+2461613824,2461614079,IL
2461614080,2461630463,TR
2461630464,2461663231,RU
2461663232,2461794303,US
@@ -48667,15 +44726,11 @@
2469855232,2470182911,US
2470182912,2470183167,CH
2470183168,2470183423,AP
-2470183424,2470197759,CH
-2470197760,2470198015,SG
-2470198016,2470248447,CH
+2470183424,2470248447,CH
2470248448,2470510591,US
2470510592,2470576127,BR
2470576128,2470641663,AU
-2470641664,2470642687,LU
-2470642688,2470642943,BE
-2470642944,2470707199,LU
+2470641664,2470707199,LU
2470707200,2470772735,GB
2470772736,2470838271,AU
2470838272,2471165951,US
@@ -48698,7 +44753,9 @@
2472673280,2472869887,FR
2472869888,2472935423,US
2472935424,2473000959,GR
-2473000960,2473394175,US
+2473000960,2473344255,US
+2473344256,2473344511,GB
+2473344512,2473394175,US
2473394176,2473459711,AU
2473459712,2473525247,ZA
2473525248,2473656319,NO
@@ -48779,7 +44836,9 @@
2481455104,2481520639,SK
2481520640,2481848319,IL
2481848320,2482175999,US
-2482176000,2482236415,FI
+2482176000,2482231295,FI
+2482231296,2482231551,CN
+2482231552,2482236415,FI
2482236416,2482236671,CN
2482236672,2482241535,FI
2482241536,2482634751,US
@@ -48807,11 +44866,9 @@
2488401920,2488532991,NO
2488532992,2488795135,US
2488795136,2488860671,GB
-2488860672,2489995519,US
-2489995520,2489995544,AU
+2488860672,2489995544,US
2489995545,2489995545,AP
-2489995546,2489995775,AU
-2489995776,2490007551,US
+2489995546,2490007551,US
2490007552,2490007807,GB
2490007808,2490041599,US
2490041600,2490041855,AP
@@ -48821,9 +44878,7 @@
2490236928,2490302463,LU
2490302464,2490695679,US
2490695680,2490761215,CA
-2490761216,2491070463,NO
-2491070464,2491070719,US
-2491070720,2491154431,NO
+2490761216,2491154431,NO
2491154432,2491875327,US
2491875328,2492006399,SE
2492006400,2492071935,US
@@ -48845,19 +44900,15 @@
2494103552,2494169087,FR
2494169088,2494562303,US
2494562304,2494627839,GB
-2494627840,2494655487,US
-2494655488,2494655743,MX
-2494655744,2494660607,US
+2494627840,2494650367,US
+2494650368,2494652415,BR
+2494652416,2494660607,US
2494660608,2494661119,EU
-2494661120,2494675199,US
-2494675200,2494675455,JP
-2494675456,2494676991,US
+2494661120,2494676991,US
2494676992,2494681087,AU
2494681088,2494683391,US
2494683392,2494683647,AP
-2494683648,2494689023,US
-2494689024,2494689279,PH
-2494689280,2494689791,US
+2494683648,2494689791,US
2494689792,2494690047,IN
2494690048,2494889983,US
2494889984,2494955519,GB
@@ -48867,12 +44918,16 @@
2495217664,2495283199,US
2495283200,2495348735,CH
2495348736,2495348991,US
-2495348992,2495349247,DE
+2495348992,2495349051,DE
+2495349052,2495349052,EU
+2495349053,2495349247,DE
2495349248,2495351039,US
2495351040,2495351295,EU
2495351296,2495353143,US
2495353144,2495353144,EU
-2495353145,2495412223,US
+2495353145,2495410943,US
+2495410944,2495411199,AU
+2495411200,2495412223,US
2495412224,2495412479,AP
2495412480,2495807487,US
2495807488,2495873023,AU
@@ -48902,40 +44957,39 @@
2500141312,2500141471,US
2500141472,2500141503,IE
2500141504,2500141823,US
-2500141824,2500144127,IE
+2500141824,2500142847,IE
+2500142848,2500142975,US
+2500142976,2500144127,IE
2500144128,2500144895,US
2500144896,2500145151,IE
2500145152,2500149247,US
-2500149248,2500149503,GB
-2500149504,2500158463,US
-2500158464,2500158975,GB
-2500158976,2500161023,US
-2500161024,2500161535,GB
-2500161536,2500162047,US
-2500162048,2500162303,GB
-2500162304,2500175871,US
+2500149248,2500149759,GB
+2500149760,2500157439,US
+2500157440,2500165631,GB
+2500165632,2500175871,US
2500175872,2500175879,RO
-2500175880,2500188159,US
-2500188160,2500188671,CH
-2500188672,2500198911,US
+2500175880,2500198911,US
2500198912,2500199167,GB
2500199168,2500199423,US
-2500199424,2500199679,IE
-2500199680,2500225553,US
+2500199424,2500199935,IE
+2500199936,2500218879,US
+2500218880,2500220927,DE
+2500220928,2500225553,US
2500225554,2500225561,ES
2500225562,2500227071,US
2500227072,2500229119,FR
-2500229120,2500231679,US
+2500229120,2500231167,GB
+2500231168,2500231679,US
2500231680,2500231935,ES
-2500231936,2500232703,US
-2500232704,2500233215,BE
-2500233216,2500235775,US
+2500231936,2500235775,US
2500235776,2500236031,GB
2500236032,2500236837,US
2500236838,2500236838,ES
2500236839,2500238047,US
2500238048,2500238055,FR
-2500238056,2500238383,US
+2500238056,2500238079,US
+2500238080,2500238335,YT
+2500238336,2500238383,US
2500238384,2500238399,DE
2500238400,2500238463,US
2500238464,2500238527,DE
@@ -48945,21 +44999,22 @@
2500240896,2500241407,FR
2500241408,2500245503,US
2500245504,2500245759,GB
-2500245760,2500246015,US
-2500246016,2500246271,GB
-2500246272,2500272127,US
+2500245760,2500272127,US
2500272128,2500280319,GB
2500280320,2500288511,US
2500288512,2500288767,FR
-2500288768,2500292607,US
-2500292608,2500292863,DE
-2500292864,2500392959,US
+2500288768,2500296703,DE
+2500296704,2500392959,US
2500392960,2500393215,IN
2500393216,2500393983,US
2500393984,2500394239,GB
2500394240,2500535295,US
2500535296,2500535551,IE
-2500535552,2500616191,US
+2500535552,2500537343,US
+2500537344,2500537599,GB
+2500537600,2500555263,US
+2500555264,2500555519,FR
+2500555520,2500616191,US
2500616192,2500616703,IT
2500616704,2500636735,US
2500636736,2500636799,GB
@@ -48969,7 +45024,9 @@
2500647936,2500648959,FR
2500648960,2500719615,US
2500719616,2500720639,IE
-2500720640,2501574655,US
+2500720640,2500723711,US
+2500723712,2500723967,ES
+2500723968,2501574655,US
2501574656,2501640191,KZ
2501640192,2503016447,US
2503016448,2503081983,IL
@@ -48988,9 +45045,7 @@
2503911424,2503915519,ES
2503915520,2503917567,IT
2503917568,2503933951,BG
-2503933952,2504892415,US
-2504892416,2504900607,IN
-2504900608,2506293247,US
+2503933952,2506293247,US
2506293248,2506358783,CA
2506358784,2507124735,US
2507124736,2507124991,IN
@@ -49122,9 +45177,7 @@
2524971008,2525036543,ES
2525102080,2525233151,US
2525233152,2525298687,SE
-2525298688,2525331455,US
-2525331456,2525333503,AU
-2525333504,2525626367,US
+2525298688,2525626367,US
2525626368,2525757439,CN
2525757440,2525822975,GR
2525822976,2526085119,US
@@ -49203,9 +45256,7 @@
2543583232,2543648767,SE
2543648768,2543714303,NO
2543714304,2543779839,JP
-2543779840,2544046847,US
-2544046848,2544047103,GB
-2544047104,2544500735,US
+2543779840,2544500735,US
2544500736,2544566271,GB
2544566272,2544631807,US
2544697344,2544828415,US
@@ -49229,8 +45280,8 @@
2546039040,2547187711,US
2547187712,2547318783,GB
2547318784,2547515391,US
-2547515392,2547523583,DE
-2547531776,2547548159,FR
+2547523584,2547531775,IT
+2547580928,2547646463,DE
2548039680,2548563967,GB
2548563968,2548826111,IR
2548826112,2548834303,AT
@@ -49291,7 +45342,9 @@
2549929984,2549932031,DE
2549932032,2549940223,HR
2549940224,2550136831,RO
-2550136832,2554227967,US
+2550136832,2554211383,US
+2554211384,2554211387,AP
+2554211388,2554227967,US
2554227968,2554228223,EU
2554228224,2554462207,US
2554462208,2554527743,HU
@@ -49343,7 +45396,9 @@
2557673472,2557739007,DK
2557739008,2557870079,US
2557870080,2557935615,ID
-2557935616,2558789571,US
+2557935616,2558658499,US
+2558658500,2558658500,PR
+2558658501,2558789571,US
2558789572,2558789572,PR
2558789573,2558918655,US
2558918656,2558984191,GB
@@ -49393,9 +45448,7 @@
2570190848,2572681215,US
2572681216,2572746751,SE
2572746752,2572943359,US
-2572943360,2573353983,DE
-2573353984,2573354239,BE
-2573354240,2573402111,DE
+2572943360,2573402111,DE
2573402112,2573467647,CN
2573467648,2573533183,DE
2573533184,2573598719,CN
@@ -49404,11 +45457,7 @@
2573991936,2574123007,CH
2574123008,2574188543,NO
2574188544,2574254079,NZ
-2574254080,2574286847,SE
-2574286848,2574287103,AU
-2574287104,2574311423,SE
-2574311424,2574311679,CN
-2574311680,2574319615,SE
+2574254080,2574319615,SE
2574319616,2574647295,US
2574647296,2574778367,CN
2574778368,2583691263,JP
@@ -49424,15 +45473,29 @@
2584739840,2585001983,US
2585001984,2585067519,CA
2585067520,2585788415,US
-2585788416,2585828351,GB
-2585828352,2585828607,JE
-2585828608,2585853951,GB
+2585788416,2585853951,GB
2585853952,2585985023,JP
-2585985024,2586619903,US
+2585985024,2586607615,US
+2586607616,2586610687,GB
+2586610688,2586611199,ES
+2586611200,2586615807,GB
+2586615808,2586619903,US
2586619904,2586620415,FR
-2586620416,2587018239,US
+2586620416,2586622463,US
+2586622464,2586622975,ES
+2586622976,2586716159,US
+2586716160,2586717183,ES
+2586717184,2586804991,US
+2586804992,2586805247,ES
+2586805248,2586828799,US
+2586828800,2586828863,CH
+2586828864,2587017727,US
+2587017728,2587017983,IE
+2587017984,2587018239,US
2587018240,2587018495,IE
-2587018496,2587067647,US
+2587018496,2587066879,US
+2587066880,2587067135,GB
+2587067136,2587067647,US
2587067648,2587067903,GB
2587067904,2587951103,US
2600534016,2600665087,US
@@ -49488,9 +45551,7 @@
2609119232,2609184767,FR
2609184768,2609250303,DE
2609250304,2609381375,US
-2609381376,2609428479,GB
-2609428480,2609428735,IN
-2609428736,2609446911,GB
+2609381376,2609446911,GB
2609446912,2609512447,DK
2609512448,2609643519,US
2609643520,2609677815,GB
@@ -49547,7 +45608,9 @@
2616770304,2616770559,EU
2616770560,2616786943,US
2616786944,2616852479,GB
-2616852480,2616885527,DE
+2616852480,2616885247,DE
+2616885248,2616885503,FR
+2616885504,2616885527,DE
2616885528,2616885529,EU
2616885530,2616918015,DE
2616983552,2617049087,US
@@ -49607,9 +45670,7 @@
2622750720,2623602687,US
2623602688,2623668223,CL
2623668224,2624192511,US
-2624192512,2624256255,CH
-2624256256,2624256511,FR
-2624256512,2624258047,CH
+2624192512,2624258047,CH
2624258048,2624266495,US
2624266496,2624266751,AP
2624266752,2624391696,US
@@ -49726,7 +45787,9 @@
2647326720,2647392255,GB
2647392256,2647457791,US
2647457792,2647523327,JP
-2647523328,2647851007,US
+2647523328,2647687167,US
+2647687168,2647687423,CA
+2647687424,2647851007,US
2647851008,2647916543,AU
2647916544,2648899583,US
2648899584,2648965119,IN
@@ -49776,9 +45839,7 @@
2654644224,2654646271,IT
2654646272,2654648319,FR
2654648320,2654650367,IR
-2654650368,2654658559,BG
-2654658560,2654659583,GB
-2654659584,2654666751,BG
+2654650368,2654666751,BG
2654666752,2654994431,US
2654994432,2655059967,LU
2655059968,2655125503,US
@@ -49809,9 +45870,7 @@
2658009088,2658074623,IT
2658074624,2658140159,US
2658140160,2658205695,NO
-2658205696,2658451455,US
-2658451456,2658451711,MY
-2658451712,2658459648,US
+2658205696,2658459648,US
2658459649,2658459649,EU
2658459650,2658598911,US
2658598912,2658664447,GB
@@ -49904,7 +45963,10 @@
2667536384,2667544575,FR
2667544576,2667560959,RU
2667560960,2667565055,IT
-2667565056,2667567103,AT
+2667565056,2667566335,AT
+2667566336,2667566591,US
+2667566592,2667566847,DE
+2667566848,2667567103,AT
2667567104,2667569151,SE
2667569152,2667571199,GB
2667571200,2667573247,ES
@@ -50023,11 +46085,9 @@
2677407744,2677473279,US
2677473280,2677538815,FR
2677538816,2677604351,FI
-2677604352,2677639679,US
-2677639680,2677639935,CA
-2677639936,2677641215,US
-2677641216,2677641471,CA
-2677641472,2677644287,US
+2677604352,2677639167,US
+2677639168,2677640191,CA
+2677640192,2677644287,US
2677644288,2677644347,GB
2677644348,2677644348,EU
2677644349,2677644543,GB
@@ -50035,11 +46095,7 @@
2677669888,2677735423,DE
2677735424,2677800959,US
2677800960,2677866495,CH
-2677866496,2677924863,US
-2677924864,2677925119,GB
-2677925120,2677931519,US
-2677931520,2677931775,SG
-2677931776,2677997567,US
+2677866496,2677997567,US
2677997568,2678063103,CA
2678063104,2678128639,UA
2678128640,2678194175,US
@@ -50081,7 +46137,9 @@
2679242752,2679308287,US
2679308288,2679373823,CH
2679373824,2679439359,GB
-2679439360,2680029183,US
+2679439360,2679525631,US
+2679525632,2679525887,BR
+2679525888,2680029183,US
2680029184,2680094719,SE
2680094720,2680225791,US
2680225792,2680356863,SE
@@ -50105,7 +46163,9 @@
2681798656,2681864191,FR
2681864192,2681929727,US
2681929728,2681995263,GB
-2681995264,2682257407,US
+2681995264,2682107903,US
+2682107904,2682108159,GB
+2682108160,2682257407,US
2682257408,2682322943,UA
2682322944,2682388479,US
2682388480,2682454015,CN
@@ -50188,7 +46248,9 @@
2687299120,2687299127,US
2687299128,2687301375,DE
2687301376,2687301631,NL
-2687301632,2687762431,DE
+2687301632,2687560191,DE
+2687560192,2687560447,ZA
+2687560448,2687762431,DE
2687762432,2687827967,AT
2687827968,2687893503,CH
2687893504,2688221183,DE
@@ -50239,9 +46301,7 @@
2689802240,2689810431,GB
2689810432,2689818623,US
2689818624,2689819135,IN
-2689819136,2689820927,US
-2689820928,2689821183,HK
-2689821184,2689826815,US
+2689819136,2689826815,US
2689826816,2689835007,JP
2689835008,2689843199,AU
2689843200,2689925119,US
@@ -50260,9 +46320,7 @@
2691301376,2691366911,CA
2691366912,2691760127,US
2691825664,2691891199,HU
-2691891200,2692489727,ZA
-2692489728,2692489983,SZ
-2692489984,2692546559,ZA
+2691891200,2692546559,ZA
2692546560,2694840319,US
2696151040,2696216575,IT
2696413184,2697789439,JP
@@ -50325,9 +46383,7 @@
2704277504,2704343039,FR
2704343040,2704408575,US
2704408576,2704474111,AU
-2704474112,2704478207,US
-2704478208,2704478463,SG
-2704478464,2704485119,US
+2704474112,2704485119,US
2704485120,2704485375,AU
2704485376,2704539647,US
2704539648,2704605183,SE
@@ -50344,9 +46400,7 @@
2705522688,2705588223,ES
2705588224,2705596159,US
2705596160,2705596415,CA
-2705596416,2705621759,US
-2705621760,2705622015,CH
-2705622016,2705691647,US
+2705596416,2705691647,US
2705691648,2705692671,GB
2705692672,2705710079,US
2705710080,2705711103,IN
@@ -50360,7 +46414,11 @@
2706243584,2706309119,CH
2706309120,2706374655,BR
2706374656,2706571263,US
-2706571264,2707226623,NL
+2706571264,2706694911,NL
+2706694912,2706695167,US
+2706695168,2706964223,NL
+2706964224,2706964479,US
+2706964480,2707226623,NL
2707226624,2707488767,JP
2707488768,2707619839,US
2707619840,2707947519,GB
@@ -50397,9 +46455,7 @@
2710700032,2710765567,AU
2710765568,2710831103,IT
2710831104,2710896639,BR
-2710896640,2711042047,US
-2711042048,2711042303,JP
-2711042304,2711093247,US
+2710896640,2711093247,US
2711093248,2711158783,AU
2711158784,2711486463,US
2711486464,2711551999,NL
@@ -50448,26 +46504,20 @@
2719481856,2719547391,US
2719547392,2719612927,AT
2719612928,2719678463,CH
-2719678464,2719719423,US
-2719719424,2719719935,PL
-2719719936,2720399359,US
+2719678464,2720399359,US
2720399360,2720464895,FR
2720464896,2721382399,US
2721382400,2721447935,CA
2721447936,2722627583,US
-2722693120,2722754559,CA
-2722754560,2722754815,GB
-2722754816,2722758655,CA
-2722758656,2722812415,US
-2722812416,2722812671,BR
-2722812672,2723479551,US
+2722693120,2722758655,CA
+2722758656,2723479551,US
2723479552,2723545087,CA
2723545088,2723610623,CH
2723610624,2723832575,US
2723832576,2723832831,GB
-2723832832,2724293375,US
-2724293376,2724293631,HK
-2724293632,2724724735,US
+2723832832,2723852287,US
+2723852288,2723852543,GB
+2723852544,2724724735,US
2724790272,2724855807,CN
2724855808,2724921343,CA
2724921344,2725249023,US
@@ -50542,11 +46592,7 @@
2746351616,2746417151,CR
2746417152,2746482687,CN
2746482688,2746548223,KR
-2746548224,2746749695,US
-2746749696,2746749951,SG
-2746749952,2747037695,US
-2747037696,2747037951,CA
-2747037952,2747072511,US
+2746548224,2747072511,US
2747072512,2747138047,AU
2747138048,2747465727,US
2747465728,2748055551,ZA
@@ -50610,9 +46656,7 @@
2754150400,2754215935,BR
2754215936,2754281471,PR
2754281472,2754347007,JP
-2754347008,2754366207,US
-2754366208,2754366463,CA
-2754366464,2754478079,US
+2754347008,2754478079,US
2754478080,2754543615,JP
2754543616,2754609151,US
2754609152,2754674687,SE
@@ -50691,9 +46735,7 @@
2760566784,2760568831,IQ
2760568832,2760570879,FR
2760570880,2760572927,NL
-2760572928,2760574719,DE
-2760574720,2760574975,PL
-2760574976,2760638463,DE
+2760572928,2760638463,DE
2760638464,2760703999,NL
2760704000,2760769535,FI
2760769536,2760835071,IT
@@ -50753,9 +46795,7 @@
2773010688,2773024767,US
2773090304,2773221375,US
2773221376,2773286911,JP
-2773286912,2773352447,US
-2773352448,2773417983,CA
-2773417984,2773745663,US
+2773286912,2773745663,US
2773745664,2773811199,NZ
2773811200,2773876735,US
2773876736,2773942271,AU
@@ -50770,15 +46810,14 @@
2775318528,2775384063,JP
2775384064,2775711743,US
2775711744,2775777279,NL
-2775777280,2775806335,CA
-2775806336,2775806463,US
+2775777280,2775806207,CA
+2775806208,2775806463,US
2775806464,2775842815,CA
2775842816,2775973887,US
2775973888,2776039423,AU
2776039424,2776478207,US
2776478208,2776478463,EU
-2776478464,2776478719,ZA
-2776478720,2776478975,US
+2776478464,2776478975,US
2776478976,2776479231,AU
2776479232,2776697614,US
2776697615,2776697615,EU
@@ -50971,18 +47010,12 @@
2789148360,2789148367,CN
2789148368,2789148399,US
2789148400,2789148407,PA
-2789148408,2789187583,US
-2789187584,2789191679,GB
-2789191680,2789212159,US
+2789148408,2789212159,US
2789212160,2789277695,AU
2789277696,2789343231,NZ
2789343232,2789933055,US
2789933056,2789998591,CL
-2789998592,2790148145,US
-2790148146,2790148147,MY
-2790148148,2790148353,US
-2790148354,2790148355,MY
-2790148356,2790195199,US
+2789998592,2790195199,US
2790195200,2790260735,KR
2790260736,2790326271,US
2790391808,2790457343,US
@@ -51009,17 +47042,27 @@
2793209856,2793275391,KR
2793275392,2796748799,US
2796748800,2796814335,NZ
-2796814336,2798412543,US
+2796814336,2798393343,US
+2798393344,2798394367,PR
+2798394368,2798412543,US
2798412544,2798412799,PR
-2798412800,2798452223,US
+2798412800,2798429439,US
+2798429440,2798430207,PR
+2798430208,2798452223,US
2798452224,2798452479,PR
-2798452480,2798838015,US
+2798452480,2798784511,US
+2798784512,2798786559,CO
+2798786560,2798821375,US
+2798821376,2798829567,CO
+2798829568,2798838015,US
2798838016,2798838271,CO
-2798838272,2800566271,US
-2800566272,2800568319,PA
-2800568320,2800587263,US
-2800587264,2800587519,PA
-2800587520,2800600319,US
+2798838272,2799086335,US
+2799086336,2799086591,PR
+2799086592,2799097855,US
+2799097856,2799099903,PR
+2799099904,2800567295,US
+2800567296,2800567807,PA
+2800567808,2800600319,US
2800600320,2800600575,PA
2800600576,2800607743,US
2800607744,2800607999,PA
@@ -51027,31 +47070,9 @@
2800609024,2800609791,PA
2800609792,2800610303,US
2800610304,2800610559,PA
-2800610560,2800611327,US
-2800611328,2800611839,PA
-2800611840,2800612095,US
-2800612096,2800612351,PA
-2800612352,2800613887,US
-2800613888,2800614143,PA
-2800614144,2800617983,US
-2800617984,2800618239,CO
-2800618240,2800618495,US
-2800618496,2800619519,CO
-2800619520,2800623615,US
-2800623616,2800627711,CO
-2800627712,2800646143,US
-2800646144,2800648191,CO
-2800648192,2800652287,US
-2800652288,2800656383,CO
-2800656384,2800658431,US
-2800658432,2800660479,CO
-2800660480,2800662783,US
-2800662784,2800663039,CO
-2800663040,2800664575,US
-2800664576,2800668671,CO
-2800668672,2800669183,US
-2800669184,2800669695,CO
-2800669696,2802386186,US
+2800610560,2800637951,US
+2800637952,2800639999,CO
+2800640000,2802386186,US
2802386187,2802386187,EU
2802386188,2802515967,US
2802515968,2802581503,CA
@@ -51071,9 +47092,7 @@
2807236864,2807237119,EU
2807237120,2807259647,US
2807259648,2807260159,AP
-2807260160,2807262463,US
-2807262464,2807262719,AT
-2807262720,2807267327,US
+2807260160,2807267327,US
2807267328,2807275519,AU
2807275520,2807824383,US
2807824384,2807889919,CA
@@ -51125,7 +47144,7 @@
2813329408,2813526015,US
2813526016,2813591551,NZ
2813591552,2813908479,US
-2813908480,2813908735,AU
+2813908480,2813908735,SG
2813908736,2814181375,US
2814181376,2814246911,AU
2814246912,2814377215,US
@@ -51171,13 +47190,15 @@
2817061120,2817062911,LU
2817062912,2817325055,US
2817325056,2817325311,EU
-2817325312,2817933056,US
-2817933057,2817933058,CA
-2817933059,2817986303,US
+2817325312,2817933055,US
+2817933056,2817933311,CA
+2817933312,2817986303,US
2817986304,2817986559,AP
-2817986560,2818003722,US
+2817986560,2818003711,US
+2818003712,2818003722,GB
2818003723,2818003723,EU
-2818003724,2818038537,US
+2818003724,2818003967,GB
+2818003968,2818038537,US
2818038538,2818038538,AP
2818038539,2818310143,US
2818310144,2818375679,AR
@@ -51185,9 +47206,7 @@
2818637824,2818703359,CH
2818703360,2822848997,US
2822848998,2822848998,EU
-2822848999,2822960639,US
-2822960640,2822960895,GB
-2822960896,2823159807,US
+2822848999,2823159807,US
2823159808,2823225343,HK
2823225344,2823553023,US
2823553024,2823618559,ZA
@@ -51197,9 +47216,11 @@
2823815168,2823946239,ZA
2823946240,2824011775,US
2824011776,2824077311,AR
-2824077312,2824274720,US
+2824077312,2824274687,US
+2824274688,2824274720,CH
2824274721,2824274721,EU
-2824274722,2824289279,US
+2824274722,2824274943,CH
+2824274944,2824289279,US
2824289280,2824289535,GB
2824289536,2824357375,US
2824357376,2824357631,GB
@@ -51246,11 +47267,7 @@
2827991488,2827991503,US
2827991504,2827991519,US
2827991520,2828009471,US
-2828009472,2828034047,CA
-2828034048,2828042239,US
-2828042240,2828055295,CA
-2828055296,2828055551,FR
-2828055552,2828075007,CA
+2828009472,2828075007,CA
2828075008,2828533759,US
2828533760,2828664831,AU
2828664832,2828730367,KR
@@ -51283,11 +47300,9 @@
2829385728,2829451263,MX
2829451264,2829516799,US
2829516800,2829582335,BW
-2829582336,2829590783,US
-2829590784,2829591033,GB
+2829582336,2829591033,US
2829591034,2829591034,EU
-2829591035,2829591039,GB
-2829591040,2829593343,US
+2829591035,2829593343,US
2829593344,2829593599,EU
2829593600,2829844479,US
2829844480,2829910015,ZA
@@ -51302,7 +47317,13 @@
2830761984,2830827519,AU
2830827520,2830830335,KW
2830830336,2830830591,US
-2830830592,2830853887,KW
+2830830592,2830845183,KW
+2830845184,2830845439,US
+2830845440,2830852351,KW
+2830852352,2830853119,US
+2830853120,2830853375,KW
+2830853376,2830853631,US
+2830853632,2830853887,KW
2830853888,2830854143,US
2830854144,2830855935,KW
2830855936,2830856191,US
@@ -51318,15 +47339,13 @@
2832793600,2832859135,AU
2832859136,2832924671,US
2832924672,2832990207,KR
-2832990208,2833252607,US
-2833252608,2833252863,GB
-2833252864,2833293311,US
+2832990208,2833252621,US
+2833252622,2833252622,GB
+2833252623,2833293311,US
2833293312,2833293567,EU
2833293568,2833383423,US
2833383424,2833448959,AR
-2833580032,2833646079,US
-2833646080,2833646335,IN
-2833646336,2833707007,US
+2833580032,2833707007,US
2833707008,2833707263,GB
2833707264,2833711103,US
2833711104,2833776639,CL
@@ -51354,9 +47373,7 @@
2844902656,2844902911,SG
2844902912,2844912639,US
2844912640,2844912895,JP
-2844912896,2845411327,US
-2845411328,2845411583,CA
-2845411584,2845704191,US
+2844912896,2845704191,US
2845704192,2845755391,CU
2845755392,2845755647,EU
2845755648,2845769727,CU
@@ -51369,21 +47386,13 @@
2850029568,2851995647,US
2852126720,2852716653,US
2852716654,2852716654,AU
-2852716655,2852765695,US
-2852765696,2852765823,GB
-2852765824,2853041663,US
-2853041664,2853041919,GB
-2853041920,2853306367,US
+2852716655,2853306367,US
2853306368,2853371903,CL
2853371904,2853765119,US
2853765120,2853830655,MX
2853830656,2854617087,US
2854617088,2854682623,MY
-2854748160,2854811647,US
-2854811648,2854812159,IN
-2854812160,2854812415,TH
-2854812416,2854812671,IN
-2854812672,2855469055,US
+2854748160,2855469055,US
2855469056,2855483391,PY
2855483392,2855485439,AR
2855485440,2855501823,UY
@@ -51394,9 +47403,9 @@
2855811584,2855811839,DE
2855811840,2856058879,US
2856058880,2856124415,CH
-2856124416,2856189439,US
-2856189440,2856189695,AU
-2856189696,2856452095,US
+2856124416,2856184831,US
+2856184832,2856185855,GB
+2856185856,2856452095,US
2856452096,2856517631,BR
2856517632,2856714239,US
2856714240,2856779775,MX
@@ -51419,9 +47428,7 @@
2861876992,2861881087,US
2861881088,2861881343,GB
2861881344,2861957119,US
-2862022656,2862153727,US
-2862153728,2862154239,CA
-2862154240,2862284799,US
+2862022656,2862284799,US
2862284800,2862350335,AR
2862350336,2862415871,US
2862415872,2862481407,AU
@@ -51446,29 +47453,22 @@
2865954816,2867593215,US
2867593216,2867724287,CH
2867855360,2868117503,US
-2868379648,2868383743,IN
-2868383744,2868585983,US
-2868585984,2868586239,GB
-2868586240,2868605183,US
-2868605184,2868605439,NO
-2868605440,2868658175,US
+2868379648,2868605376,US
+2868605377,2868605377,NO
+2868605378,2868658175,US
2868658176,2868660223,GB
2868660224,2868660479,EU
2868660480,2868662271,US
2868662272,2868662527,EU
-2868662528,2868673023,US
-2868673024,2868673279,FR
+2868662528,2868673279,US
2868673280,2868673535,ZA
-2868673536,2868674559,US
+2868673536,2868674336,US
+2868674337,2868674337,EU
+2868674338,2868674559,US
2868674560,2868682751,AU
-2868682752,2868682752,PH
+2868682752,2868682752,US
2868682753,2868682753,AP
-2868682754,2868683007,PH
-2868683008,2868689407,US
-2868689408,2868689663,AU
-2868689664,2868689919,US
-2868689920,2868690175,SG
-2868690176,2868772863,US
+2868682754,2868772863,US
2868838400,2868903935,BE
2868903936,2869035007,SG
2869035008,2869166079,JP
@@ -51476,9 +47476,11 @@
2869428224,2869952511,CN
2869952512,2870018047,FR
2870018048,2870083583,DE
-2870083584,2870090495,FR
+2870083584,2870089727,FR
+2870089728,2870090495,DE
2870090496,2870090751,BE
-2870090752,2870149119,FR
+2870090752,2870091775,DE
+2870091776,2870149119,FR
2870149120,2870214655,HU
2870214656,2870280191,DK
2870280192,2870345727,NL
@@ -51543,13 +47545,13 @@
2871132160,2872049663,CN
2872049664,2873098239,IN
2873098240,2873368575,US
-2873368576,2873376767,IN
+2873368576,2873368831,IN
+2873368832,2873369087,US
+2873369088,2873376767,IN
2873376768,2873884671,US
2873884672,2874146815,IN
2874146816,2875195391,CN
-2875195392,2875390719,TH
-2875390720,2875390975,NO
-2875390976,2875719679,TH
+2875195392,2875719679,TH
2875719680,2877292543,CN
2877292544,2879332607,US
2879332608,2879332863,GB
@@ -51594,7 +47596,29 @@
2899968000,2900099071,CA
2900099072,2900361215,US
2902458368,2902462463,US
-2902462464,2902475263,US
+2902462464,2902470775,US
+2902470776,2902470777,BD
+2902470778,2902472018,US
+2902472019,2902472021,AL
+2902472022,2902472725,US
+2902472726,2902472728,BD
+2902472729,2902472788,US
+2902472789,2902472790,LK
+2902472791,2902472813,US
+2902472814,2902472814,LK
+2902472815,2902472834,US
+2902472835,2902472836,BD
+2902472837,2902473028,US
+2902473029,2902473031,IN
+2902473032,2902473107,US
+2902473108,2902473109,BD
+2902473110,2902473556,US
+2902473557,2902473558,LK
+2902473559,2902473649,US
+2902473650,2902473650,BD
+2902473651,2902473652,US
+2902473653,2902473653,BD
+2902473654,2902475263,US
2902475264,2902475327,CY
2902475328,2902475399,US
2902475400,2902475407,UY
@@ -51622,38 +47646,20 @@
2905045248,2905045503,SG
2905045504,2905350729,US
2905350730,2905350730,US
-2905350731,2905376119,US
-2905376120,2905376127,MX
-2905376128,2905376199,US
-2905376200,2905376207,PH
-2905376208,2905376223,GB
-2905376224,2905376231,PH
-2905376232,2905376391,US
+2905350731,2905376391,US
2905376392,2905376399,PK
2905376400,2905376415,US
-2905376416,2905376423,AZ
+2905376416,2905376423,CN
2905376424,2905376431,TW
2905376432,2905376447,US
2905376448,2905376455,HK
2905376456,2905376463,PK
-2905376464,2905376471,HK
-2905376472,2905376511,US
-2905376512,2905376575,HK
-2905376576,2905376607,CN
+2905376464,2905376607,US
2905376608,2905376615,CA
-2905376616,2905376735,US
-2905376736,2905376743,PH
-2905376744,2905377023,US
-2905377024,2905377223,CA
-2905377224,2905377231,US
-2905377232,2905377255,CA
-2905377256,2905377503,US
+2905376616,2905377503,US
2905377504,2905377511,ID
2905377512,2905377519,MY
-2905377520,2905378495,US
-2905378496,2905378503,GB
-2905378504,2905378511,US
-2905378512,2905378559,GB
+2905377520,2905378559,US
2905378560,2905378815,CA
2905378816,2905379071,US
2905379072,2905379327,CA
@@ -51661,9 +47667,7 @@
2905380608,2905380863,CA
2905380864,2905382559,US
2905382560,2905382591,EE
-2905382592,2905384959,US
-2905384960,2905385215,CA
-2905385216,2905385879,US
+2905382592,2905385879,US
2905385880,2905385887,PH
2905385888,2905385911,US
2905385912,2905385919,VN
@@ -51685,14 +47689,20 @@
2905391616,2905394175,US
2905394176,2905394687,CA
2905394688,2905404703,US
-2905404704,2905404799,IN
+2905404704,2905404759,IN
+2905404760,2905404767,MY
+2905404768,2905404799,IN
2905404800,2905404943,US
2905404944,2905404951,MY
-2905404952,2905405055,US
+2905404952,2905404975,US
+2905404976,2905404983,MY
+2905404984,2905405055,US
2905405056,2905405063,CN
2905405064,2905405071,US
2905405072,2905405079,HK
-2905405080,2905405439,US
+2905405080,2905405167,US
+2905405168,2905405199,MY
+2905405200,2905405439,US
2905405440,2905405447,MY
2905405448,2905405679,US
2905405680,2905405687,CN
@@ -51705,8 +47715,8 @@
2905415936,2905446655,US
2905446656,2905446911,DE
2905446912,2905449983,US
-2905449984,2905451007,CA
-2905451008,2905451487,US
+2905449984,2905450495,CA
+2905450496,2905451487,US
2905451488,2905451503,CW
2905451504,2905451519,US
2905451520,2905451647,PA
@@ -51741,299 +47751,13 @@
2915527680,2915528715,NL
2915528716,2915528719,US
2915528720,2915528783,NL
-2915528784,2915765279,US
-2915765280,2915765287,IN
-2915765288,2915765367,US
-2915765368,2915765375,ZA
-2915765376,2915765431,US
-2915765432,2915765439,MX
-2915765440,2915765471,US
-2915765472,2915765479,CA
-2915765480,2915765671,US
-2915765672,2915765679,AU
-2915765680,2915766079,US
-2915766080,2915766095,BR
-2915766096,2915766447,US
-2915766448,2915766463,GB
-2915766464,2915766559,US
-2915766560,2915766591,GB
-2915766592,2915766839,US
-2915766840,2915766847,DE
-2915766848,2915767663,US
-2915767664,2915767679,NZ
-2915767680,2915767695,GB
-2915767696,2915767743,US
-2915767744,2915767775,GB
-2915767776,2915767895,US
-2915767896,2915767903,KW
-2915767904,2915768191,US
-2915768192,2915768199,GB
-2915768200,2915768303,US
-2915768304,2915768311,MX
-2915768312,2915768359,US
-2915768360,2915768367,GB
-2915768368,2915768431,US
-2915768432,2915768439,IE
-2915768440,2915768703,US
-2915768704,2915768767,GB
-2915768768,2915768903,US
-2915768904,2915768911,GR
-2915768912,2915769095,US
-2915769096,2915769103,BB
-2915769104,2915769111,US
-2915769112,2915769119,BB
-2915769120,2915769239,US
-2915769240,2915769247,CA
-2915769248,2915769295,US
-2915769296,2915769303,BR
-2915769304,2915770167,US
-2915770168,2915770175,BR
-2915770176,2915770255,US
-2915770256,2915770263,CA
-2915770264,2915770279,JE
-2915770280,2915770311,US
-2915770312,2915770319,MX
-2915770320,2915771103,US
-2915771104,2915771135,CA
-2915771136,2915772671,US
-2915772672,2915772679,IN
-2915772680,2915772711,US
-2915772712,2915772719,GB
-2915772720,2915772751,US
-2915772752,2915772759,DE
-2915772760,2915773023,US
-2915773024,2915773039,IN
-2915773040,2915773175,US
-2915773176,2915773183,KW
-2915773184,2915773791,US
-2915773792,2915773807,CA
-2915773808,2915773839,JE
-2915773840,2915794959,US
-2915794960,2915794975,MX
-2915794976,2915795007,US
-2915795008,2915795023,MX
-2915795024,2915795263,US
-2915795264,2915795279,NZ
-2915795280,2915795343,US
-2915795344,2915795359,NZ
-2915795360,2915795535,US
-2915795536,2915795551,CA
-2915795552,2915795727,US
-2915795728,2915795743,CA
-2915795744,2915795967,US
-2915795968,2915795975,GB
-2915795976,2915795983,US
-2915795984,2915795991,AE
-2915795992,2915796039,US
-2915796040,2915796047,MX
-2915796048,2915796055,US
-2915796056,2915796063,MX
-2915796064,2915796135,US
-2915796136,2915796143,CA
-2915796144,2915796151,US
-2915796152,2915796159,AR
-2915796160,2915796199,US
-2915796200,2915796207,IL
-2915796208,2915796303,US
-2915796304,2915796311,MX
-2915796312,2915796351,US
-2915796352,2915796359,CA
-2915796360,2915796399,US
-2915796400,2915796407,PE
-2915796408,2915796431,US
-2915796432,2915796439,AU
-2915796440,2915796495,US
-2915796496,2915796503,IL
-2915796504,2915796631,US
-2915796632,2915796639,BR
-2915796640,2915796647,US
-2915796648,2915796655,AU
-2915796656,2915796711,US
-2915796712,2915796719,GB
-2915796720,2915796815,US
-2915796816,2915796823,CA
-2915796824,2915796919,US
-2915796920,2915796927,BR
-2915796928,2915796967,US
-2915796968,2915796975,BR
-2915796976,2915797151,US
-2915797152,2915797159,MX
-2915797160,2915797447,US
-2915797448,2915797455,CA
-2915797456,2915797463,MX
-2915797464,2915797543,US
-2915797544,2915797551,CA
-2915797552,2915797559,IN
-2915797560,2915797727,US
-2915797728,2915797735,IL
-2915797736,2915797767,US
-2915797768,2915797775,MX
-2915797776,2915797871,US
-2915797872,2915797879,IN
-2915797880,2915797895,US
-2915797896,2915797903,MX
-2915797904,2915798079,US
-2915798080,2915798111,IN
-2915798112,2915798687,US
-2915798688,2915798719,BR
-2915798720,2915798943,US
-2915798944,2915798975,PH
-2915798976,2915799007,US
-2915799008,2915799039,CA
-2915799040,2915799047,US
-2915799048,2915799055,ES
-2915799056,2915799167,US
-2915799168,2915799175,GB
-2915799176,2915799183,US
-2915799184,2915799191,GB
-2915799192,2915799199,JE
-2915799200,2915799215,US
-2915799216,2915799223,MX
-2915799224,2915799327,US
-2915799328,2915799335,TH
-2915799336,2915799431,US
-2915799432,2915799439,TH
-2915799440,2915799535,US
-2915799536,2915799543,JP
-2915799544,2915799591,US
-2915799592,2915799599,IN
-2915799600,2915799775,US
-2915799776,2915799791,PR
-2915799792,2915799807,CA
-2915799808,2915799903,US
-2915799904,2915799911,CA
-2915799912,2915799935,US
-2915799936,2915799943,AR
-2915799944,2915800055,US
-2915800056,2915800063,NZ
-2915800064,2915800231,US
-2915800232,2915800239,AU
-2915800240,2915800271,US
-2915800272,2915800279,AU
-2915800280,2915800415,US
-2915800416,2915800423,GB
-2915800424,2915800519,US
-2915800520,2915800527,PH
-2915800528,2915800543,US
-2915800544,2915800551,IN
-2915800552,2915800631,US
-2915800632,2915800639,TH
-2915800640,2915800663,US
-2915800664,2915800679,BG
-2915800680,2915800711,US
-2915800712,2915800719,CA
-2915800720,2915800735,US
-2915800736,2915800743,CA
-2915800744,2915800751,US
-2915800752,2915800759,CL
-2915800760,2915800903,US
-2915800904,2915800911,IL
-2915800912,2915800951,US
-2915800952,2915800959,GB
-2915800960,2915801679,US
-2915801680,2915801687,MX
-2915801688,2915801871,US
-2915801872,2915801879,BR
-2915801880,2915801991,US
-2915801992,2915801999,IL
-2915802000,2915802319,US
-2915802320,2915802327,AW
-2915802328,2915802351,US
-2915802352,2915802359,AW
-2915802360,2915802375,US
-2915802376,2915802383,CA
-2915802384,2915802415,US
-2915802416,2915802423,CA
-2915802424,2915802551,US
-2915802552,2915802559,AU
-2915802560,2915802711,US
-2915802712,2915802719,ZA
-2915802720,2915802895,US
-2915802896,2915802903,PH
-2915802904,2915802999,US
-2915803000,2915803007,RU
-2915803008,2915803191,US
-2915803192,2915803199,CA
-2915803200,2915803207,GB
-2915803208,2915803239,US
-2915803240,2915803247,BR
-2915803248,2915803295,US
-2915803296,2915803311,CA
-2915803312,2915803327,ID
-2915803328,2915803783,US
-2915803784,2915803791,CN
-2915803792,2915803815,US
-2915803816,2915803823,PE
-2915803824,2915804375,US
-2915804376,2915804383,BR
-2915804384,2915804519,US
-2915804520,2915804527,CN
-2915804528,2915804591,US
-2915804592,2915804599,CA
-2915804600,2915804679,US
-2915804680,2915804687,CA
-2915804688,2915804759,US
-2915804760,2915804767,NZ
-2915804768,2915804791,US
-2915804792,2915804799,GB
-2915804800,2915804807,US
-2915804808,2915804815,NZ
-2915804816,2915804847,US
-2915804848,2915804855,CO
-2915804856,2915805055,US
-2915805056,2915805063,GB
-2915805064,2915805375,US
-2915805376,2915805391,PH
-2915805392,2915805439,US
-2915805440,2915805455,BR
-2915805456,2915806735,US
-2915806736,2915806751,IT
-2915806752,2915806823,US
-2915806824,2915806831,IN
-2915806832,2915806863,US
-2915806864,2915806871,IN
-2915806872,2915806895,US
-2915806896,2915806903,CA
-2915806904,2915806967,US
-2915806968,2915806975,CA
-2915806976,2915807271,US
-2915807272,2915807279,GB
-2915807280,2915807287,US
-2915807288,2915807295,ZA
-2915807296,2915807439,US
-2915807440,2915807447,CA
-2915807448,2915807455,US
-2915807456,2915807463,PT
-2915807464,2915807559,US
-2915807560,2915807567,CA
-2915807568,2915807607,US
-2915807608,2915807615,IL
-2915807616,2915808095,US
-2915808096,2915808103,CA
-2915808104,2915808183,US
-2915808184,2915808191,CA
-2915808192,2915808247,US
-2915808248,2915808255,DE
-2915808256,2915810335,US
-2915810336,2915810343,GB
-2915810344,2915810351,MX
-2915810352,2915810431,US
-2915810432,2915810439,AU
-2915810440,2915810471,US
-2915810472,2915810479,GB
-2915810480,2915811135,US
-2915811136,2915811199,IN
-2915811200,2915821791,US
-2915821792,2915821823,IL
-2915821824,2915958783,US
+2915528784,2915795013,US
+2915795014,2915795014,MX
+2915795015,2915958783,US
2915958784,2916024319,CA
2916024320,2916098191,US
2916098192,2916098207,CA
-2916098208,2916101535,US
-2916101536,2916101543,CA
-2916101544,2916101615,US
-2916101616,2916101623,CA
-2916101624,2916104703,US
+2916098208,2916104703,US
2916104704,2916104719,ZA
2916104720,2916110399,US
2916110400,2916110407,LK
@@ -52043,13 +47767,7 @@
2916111328,2916111343,CA
2916111344,2916111687,US
2916111688,2916111695,CA
-2916111696,2916112175,US
-2916112176,2916112191,CA
-2916112192,2916112367,US
-2916112368,2916112383,CA
-2916112384,2916118223,US
-2916118224,2916118231,LK
-2916118232,2916120823,US
+2916111696,2916120823,US
2916120824,2916120831,CA
2916120832,2916121367,US
2916121368,2916121375,CA
@@ -52092,9 +47810,7 @@
2916441120,2916441151,CA
2916441152,2916443151,US
2916443152,2916443159,GB
-2916443160,2916443614,US
-2916443615,2916443615,CA
-2916443616,2916515839,US
+2916443160,2916515839,US
2916515840,2916519935,CA
2916519936,2916525087,US
2916525088,2916525103,PE
@@ -52113,16 +47829,17 @@
2916544960,2916547839,US
2916547840,2916547871,BZ
2916547872,2916581375,US
-2916581376,2916614143,PR
+2916581376,2916594687,PR
+2916594688,2916594943,US
+2916594944,2916614143,PR
2916614144,2917167299,US
-2917167300,2917167302,TR
+2917167300,2917167302,CA
2917167303,2917167311,US
2917167312,2917167312,CA
2917167313,2917167313,US
2917167314,2917167316,CA
2917167317,2917167317,US
-2917167318,2917167318,TR
-2917167319,2917167322,CA
+2917167318,2917167322,CA
2917167323,2917167325,US
2917167326,2917167326,CA
2917167327,2917167327,BR
@@ -52142,7 +47859,8 @@
2917167680,2917167711,BR
2917167712,2917167714,US
2917167715,2917167743,BR
-2917167744,2917167775,US
+2917167744,2917167773,US
+2917167774,2917167775,BR
2917167776,2917167807,LT
2917167808,2917167839,US
2917167840,2917167871,TR
@@ -52155,10 +47873,9 @@
2917168032,2917168095,US
2917168096,2917168127,GB
2917168128,2917168223,US
-2917168224,2917168230,CA
+2917168224,2917168230,BR
2917168231,2917168232,US
-2917168233,2917168233,CA
-2917168234,2917168255,BR
+2917168233,2917168255,BR
2917168256,2917168319,US
2917168320,2917168351,AR
2917168352,2917168352,US
@@ -52167,25 +47884,29 @@
2917168384,2917168415,BR
2917168416,2917168447,US
2917168448,2917168479,BR
-2917168480,2917168959,US
+2917168480,2917168607,US
+2917168608,2917168608,AU
+2917168609,2917168615,US
+2917168616,2917168618,BR
+2917168619,2917168632,US
+2917168633,2917168633,BR
+2917168634,2917168959,US
2917168960,2917169023,DE
2917169024,2917169096,US
-2917169097,2917169098,TR
+2917169097,2917169098,CA
2917169099,2917169100,BR
2917169101,2917169101,US
2917169102,2917169102,BR
-2917169103,2917169106,TR
+2917169103,2917169106,CA
2917169107,2917169109,US
-2917169110,2917169110,TR
+2917169110,2917169110,CA
2917169111,2917169113,BR
-2917169114,2917169114,TR
+2917169114,2917169114,CA
2917169115,2917169120,US
2917169121,2917169123,BR
-2917169124,2917169124,TR
+2917169124,2917169124,CA
2917169125,2917169125,US
-2917169126,2917169131,BR
-2917169132,2917169134,US
-2917169135,2917169144,BR
+2917169126,2917169144,BR
2917169145,2917169145,US
2917169146,2917169147,BR
2917169148,2917169149,US
@@ -52197,19 +47918,37 @@
2917170048,2917170079,BR
2917170080,2917170111,US
2917170112,2917170143,TR
-2917170144,2917170758,US
+2917170144,2917170246,US
+2917170247,2917170248,BR
+2917170249,2917170255,US
+2917170256,2917170256,BR
+2917170257,2917170257,US
+2917170258,2917170258,BR
+2917170259,2917170264,US
+2917170265,2917170265,BR
+2917170266,2917170266,US
+2917170267,2917170268,BR
+2917170269,2917170272,US
+2917170273,2917170276,BR
+2917170277,2917170281,US
+2917170282,2917170285,BR
+2917170286,2917170286,US
+2917170287,2917170287,BR
+2917170288,2917170758,US
2917170759,2917170761,BR
2917170762,2917170764,CA
2917170765,2917170771,US
2917170772,2917170772,CA
2917170773,2917170774,US
-2917170775,2917170777,CA
+2917170775,2917170776,CA
+2917170777,2917170777,BR
2917170778,2917170785,US
-2917170786,2917170800,CA
+2917170786,2917170786,CA
+2917170787,2917170800,BR
2917170801,2917170801,US
-2917170802,2917170806,CA
+2917170802,2917170806,BR
2917170807,2917170809,US
-2917170810,2917170812,CA
+2917170810,2917170812,BR
2917170813,2917170819,US
2917170820,2917170820,BR
2917170821,2917170821,US
@@ -52222,12 +47961,14 @@
2917170846,2917170846,PH
2917170847,2917170847,PK
2917170848,2917170848,PH
-2917170849,2917170852,US
+2917170849,2917170850,US
+2917170851,2917170851,BR
+2917170852,2917170852,US
2917170853,2917170853,BR
2917170854,2917170854,PH
2917170855,2917170860,US
2917170861,2917170861,PH
-2917170862,2917170862,EC
+2917170862,2917170862,CA
2917170863,2917170863,US
2917170864,2917170864,MX
2917170865,2917170869,US
@@ -52271,8 +48012,7 @@
2917171095,2917171120,US
2917171121,2917171121,BR
2917171122,2917171167,US
-2917171168,2917171175,BR
-2917171176,2917171199,TR
+2917171168,2917171199,BR
2917171200,2917195775,US
2917195776,2917196031,A2
2917196032,2917196415,CA
@@ -52293,9 +48033,7 @@
2917268480,2917269503,JM
2917269504,2917449727,US
2917449728,2917466111,PR
-2917466112,2917571071,US
-2917571072,2917571327,CN
-2917571328,2917572607,US
+2917466112,2917572607,US
2917572608,2917580799,CA
2917580800,2917591807,US
2917591808,2917591823,RO
@@ -52370,9 +48108,7 @@
2917661696,2917661823,ZA
2917661824,2917661951,PK
2917661952,2917662079,CN
-2917662080,2917663231,US
-2917663232,2917663263,EG
-2917663264,2917663391,US
+2917662080,2917663391,US
2917663392,2917663423,EG
2917663424,2917663455,US
2917663456,2917663487,EG
@@ -52390,7 +48126,9 @@
2917672192,2917672223,CA
2917672224,2917672319,US
2917672320,2917672351,EG
-2917672352,2917676031,US
+2917672352,2917672927,US
+2917672928,2917672959,EG
+2917672960,2917676031,US
2917676032,2917676287,CA
2917676288,2917681423,US
2917681424,2917681439,MY
@@ -52423,14 +48161,11 @@
2917713920,2917714431,CA
2917714432,2917715967,US
2917715968,2917716223,DE
-2917716224,2917724159,US
-2917724160,2917724415,CA
-2917724416,2917724943,US
+2917716224,2917724943,US
2917724944,2917724959,MY
2917724960,2917724991,US
2917724992,2917725007,MY
-2917725008,2917726207,US
-2917726208,2917726463,CA
+2917725008,2917726463,US
2917726464,2917726495,CR
2917726496,2917795951,US
2917795952,2917795959,CA
@@ -52498,15 +48233,11 @@
2917828352,2917828479,IN
2917828480,2917829727,US
2917829728,2917829743,CA
-2917829744,2917834143,US
-2917834144,2917834151,CA
-2917834152,2917835679,US
+2917829744,2917835679,US
2917835680,2917835687,CA
2917835688,2917835815,US
2917835816,2917835823,CA
-2917835824,2917837663,US
-2917837664,2917837671,CA
-2917837672,2917842175,US
+2917835824,2917842175,US
2917842176,2917842431,CA
2917842432,2917847063,US
2917847064,2917847071,CA
@@ -52555,13 +48286,9 @@
2918051840,2918121471,CA
2918121472,2918154239,US
2918154240,2918170623,CA
-2918170624,2918187263,US
-2918187264,2918187519,CA
-2918187520,2918199679,US
+2918170624,2918199679,US
2918199680,2918199743,CA
-2918199744,2918200287,US
-2918200288,2918200303,CA
-2918200304,2918201551,US
+2918199744,2918201551,US
2918201552,2918201567,CA
2918201568,2918202079,US
2918202080,2918202087,CA
@@ -52586,8 +48313,8 @@
2918264832,2918277119,US
2918277120,2918281215,CA
2918281216,2918286335,US
-2918286336,2918286591,CA
-2918286592,2918286879,US
+2918286336,2918286719,CA
+2918286720,2918286879,US
2918286880,2918286895,GB
2918286896,2918287103,US
2918287104,2918287359,CR
@@ -52605,9 +48332,9 @@
2918375424,2918391807,US
2918391808,2918395903,CA
2918395904,2918404095,US
-2918404096,2918407167,PR
-2918407168,2918407295,US
-2918407296,2918408191,PR
+2918404096,2918406911,PR
+2918406912,2918407167,US
+2918407168,2918408191,PR
2918408192,2918412903,US
2918412904,2918412911,ES
2918412912,2918412927,US
@@ -52622,9 +48349,7 @@
2918473216,2918473727,CA
2918473728,2918477823,US
2918477824,2918481919,CA
-2918481920,2918495231,US
-2918495232,2918495487,SA
-2918495488,2918502078,US
+2918481920,2918502078,US
2918502079,2918502079,US
2918502080,2918514943,US
2918514944,2918515079,CA
@@ -52632,7 +48357,9 @@
2918515200,2918515327,CA
2918515328,2918515599,US
2918515600,2918515607,NL
-2918515608,2918532111,US
+2918515608,2918532095,US
+2918532096,2918532103,US
+2918532104,2918532111,US
2918532112,2918532119,CN
2918532120,2918532143,US
2918532144,2918532151,PK
@@ -52653,15 +48380,13 @@
2918534816,2918534879,CN
2918534880,2918534943,US
2918534944,2918534975,CN
-2918534976,2918534983,US
-2918534984,2918534991,ID
-2918534992,2918536183,US
+2918534976,2918536031,US
+2918536032,2918536063,US
+2918536064,2918536183,US
2918536184,2918536187,US
2918536188,2918536447,US
2918536448,2918536703,US
-2918536704,2918536719,US
-2918536720,2918536727,CA
-2918536728,2918580223,US
+2918536704,2918580223,US
2918580224,2918588415,CA
2918588416,2918596607,US
2918596608,2918604287,CA
@@ -53073,9 +48798,7 @@
2919171088,2919171095,TR
2919171096,2919171103,US
2919171104,2919171111,PL
-2919171112,2919171143,US
-2919171144,2919171151,TR
-2919171152,2919171159,US
+2919171112,2919171159,US
2919171160,2919171167,AU
2919171168,2919171183,US
2919171184,2919171191,ZA
@@ -53108,9 +48831,9 @@
2919206912,2919211007,CA
2919211008,2919211263,US
2919211264,2919211519,US
-2919211520,2919231999,US
-2919232000,2919232255,CN
-2919232256,2919235583,US
+2919211520,2919218687,US
+2919218688,2919218943,US
+2919218944,2919235583,US
2919235584,2919759871,CA
2919759872,2921496895,US
2921496896,2921496903,IN
@@ -53120,7 +48843,11 @@
2921497416,2921497423,IN
2921497424,2921497471,US
2921497472,2921497599,IN
-2921497600,2921498215,US
+2921497600,2921497855,US
+2921497856,2921497863,CA
+2921497864,2921498031,US
+2921498032,2921498039,CA
+2921498040,2921498215,US
2921498216,2921498223,CA
2921498224,2921498383,US
2921498384,2921498391,ID
@@ -53128,9 +48855,7 @@
2921498432,2921498439,CA
2921498440,2921501167,US
2921501168,2921501175,CA
-2921501176,2921503695,US
-2921503696,2921503703,ID
-2921503704,2921504431,US
+2921501176,2921504431,US
2921504432,2921504439,GB
2921504440,2921505951,US
2921505952,2921505983,IN
@@ -53156,7 +48881,9 @@
2921511392,2921512703,US
2921512704,2921512959,CA
2921512960,2921562111,US
-2921562112,2921594879,CA
+2921562112,2921589759,CA
+2921589760,2921590015,US
+2921590016,2921594879,CA
2921594880,2921658191,US
2921658192,2921658199,US
2921658200,2925002751,US
@@ -53169,9 +48896,7 @@
2927152176,2927152183,CH
2927152184,2927154847,US
2927154848,2927154855,CH
-2927154856,2927207423,US
-2927207424,2927207679,CY
-2927207680,2927242751,US
+2927154856,2927242751,US
2927242752,2927243263,AE
2927243264,2927254783,US
2927254784,2927255039,AE
@@ -53264,7 +48989,21 @@
2928265056,2928265103,US
2928265104,2928265143,CA
2928265144,2928265215,US
-2928265216,2928265727,CA
+2928265216,2928265471,CA
+2928265472,2928265479,US
+2928265480,2928265503,CA
+2928265504,2928265527,US
+2928265528,2928265559,CA
+2928265560,2928265567,US
+2928265568,2928265575,CA
+2928265576,2928265623,US
+2928265624,2928265631,CA
+2928265632,2928265647,US
+2928265648,2928265671,CA
+2928265672,2928265687,US
+2928265688,2928265703,CA
+2928265704,2928265711,US
+2928265712,2928265727,CA
2928265728,2928265735,US
2928265736,2928266023,CA
2928266024,2928266031,US
@@ -53282,12 +49021,42 @@
2928266360,2928266367,US
2928266368,2928266407,CA
2928266408,2928266415,US
-2928266416,2928272775,CA
+2928266416,2928270135,CA
+2928270136,2928270143,US
+2928270144,2928270175,CA
+2928270176,2928270183,US
+2928270184,2928270479,CA
+2928270480,2928270487,NL
+2928270488,2928270551,CA
+2928270552,2928270559,US
+2928270560,2928270583,CA
+2928270584,2928270591,US
+2928270592,2928270607,CA
+2928270608,2928270615,US
+2928270616,2928270623,CA
+2928270624,2928270631,US
+2928270632,2928270647,CA
+2928270648,2928270655,US
+2928270656,2928270727,CA
+2928270728,2928270743,US
+2928270744,2928270751,CA
+2928270752,2928270767,US
+2928270768,2928270791,CA
+2928270792,2928270799,US
+2928270800,2928271143,CA
+2928271144,2928271151,US
+2928271152,2928271183,CA
+2928271184,2928271191,US
+2928271192,2928272775,CA
2928272776,2928272783,US
2928272784,2928272839,CA
2928272840,2928272847,US
-2928272848,2928273151,CA
-2928273152,2928273183,US
+2928272848,2928272903,CA
+2928272904,2928272919,US
+2928272920,2928272951,CA
+2928272952,2928273071,US
+2928273072,2928273079,CA
+2928273080,2928273183,US
2928273184,2928273191,CA
2928273192,2928273199,US
2928273200,2928273295,CA
@@ -53295,8 +49064,22 @@
2928273304,2928273311,CA
2928273312,2928273367,US
2928273368,2928273383,CA
-2928273384,2928273407,US
-2928273408,2928274175,CA
+2928273384,2928273439,US
+2928273440,2928273447,CA
+2928273448,2928273471,US
+2928273472,2928273479,CA
+2928273480,2928273591,US
+2928273592,2928273599,CA
+2928273600,2928273607,NL
+2928273608,2928273639,CA
+2928273640,2928273647,US
+2928273648,2928273671,CA
+2928273672,2928273703,US
+2928273704,2928273735,CA
+2928273736,2928273799,US
+2928273800,2928273807,CA
+2928273808,2928273919,US
+2928273920,2928274175,CA
2928274176,2928274199,US
2928274200,2928274207,CA
2928274208,2928274247,US
@@ -53308,14 +49091,28 @@
2928274336,2928274359,US
2928274360,2928274367,CA
2928274368,2928274391,US
-2928274392,2928275455,CA
+2928274392,2928274495,CA
+2928274496,2928274503,US
+2928274504,2928274519,CA
+2928274520,2928274527,US
+2928274528,2928274575,CA
+2928274576,2928274583,US
+2928274584,2928274599,CA
+2928274600,2928274607,US
+2928274608,2928274615,CA
+2928274616,2928274623,US
+2928274624,2928274631,CA
+2928274632,2928274639,US
+2928274640,2928275455,CA
2928275456,2928275463,US
2928275464,2928275479,CA
2928275480,2928275495,US
2928275496,2928275599,CA
2928275600,2928275607,US
-2928275608,2928276223,CA
-2928276224,2928276231,US
+2928275608,2928276071,CA
+2928276072,2928276079,US
+2928276080,2928276191,CA
+2928276192,2928276231,US
2928276232,2928276287,CA
2928276288,2928276319,US
2928276320,2928276367,CA
@@ -53330,7 +49127,19 @@
2928276696,2928276711,US
2928276712,2928276727,CA
2928276728,2928276735,US
-2928276736,2928278791,CA
+2928276736,2928276743,CA
+2928276744,2928276903,US
+2928276904,2928276911,CA
+2928276912,2928276919,US
+2928276920,2928277167,CA
+2928277168,2928277183,US
+2928277184,2928277199,CA
+2928277200,2928277215,US
+2928277216,2928277279,CA
+2928277280,2928277303,US
+2928277304,2928277335,CA
+2928277336,2928277343,US
+2928277344,2928278791,CA
2928278792,2928278799,US
2928278800,2928278879,CA
2928278880,2928278887,US
@@ -53370,9 +49179,7 @@
2928452352,2928455679,US
2928455680,2928459775,CA
2928459776,2928541695,US
-2928541696,2928551023,CA
-2928551024,2928551031,US
-2928551032,2928553303,CA
+2928541696,2928553303,CA
2928553304,2928553311,HU
2928553312,2928558943,CA
2928558944,2928558951,PE
@@ -53385,495 +49192,9 @@
2928583744,2928595959,CA
2928595960,2928595967,US
2928595968,2928607231,CA
-2928607232,2928607287,US
-2928607288,2928607303,NO
-2928607304,2928607343,US
-2928607344,2928607351,GB
-2928607352,2928607567,US
-2928607568,2928607575,CA
-2928607576,2928607711,US
-2928607712,2928607719,CA
-2928607720,2928607815,US
-2928607816,2928607823,CA
-2928607824,2928608751,US
-2928608752,2928608783,GB
-2928608784,2928609471,US
-2928609472,2928609983,BD
-2928609984,2928610143,US
-2928610144,2928610175,GB
-2928610176,2928610383,US
-2928610384,2928610391,VG
-2928610392,2928610615,US
-2928610616,2928610623,IL
-2928610624,2928610655,US
-2928610656,2928610663,MX
-2928610664,2928610703,US
-2928610704,2928610711,IN
-2928610712,2928610823,US
-2928610824,2928610831,CA
-2928610832,2928610839,GB
-2928610840,2928610935,US
-2928610936,2928610943,GB
-2928610944,2928611303,US
-2928611304,2928611311,IL
-2928611312,2928611351,US
-2928611352,2928611359,ZA
-2928611360,2928611375,US
-2928611376,2928611383,ZA
-2928611384,2928611591,US
-2928611592,2928611599,CA
-2928611600,2928611695,US
-2928611696,2928611703,BB
-2928611704,2928611791,US
-2928611792,2928611807,GB
-2928611808,2928611839,US
-2928611840,2928611847,CA
-2928611848,2928612135,US
-2928612136,2928612143,AU
-2928612144,2928612231,US
-2928612232,2928612239,GB
-2928612240,2928612279,US
-2928612280,2928612287,GB
-2928612288,2928612319,US
-2928612320,2928612327,CA
-2928612328,2928612343,US
-2928612344,2928612351,CA
-2928612352,2928612415,US
-2928612416,2928612447,CA
-2928612448,2928612735,US
-2928612736,2928612799,CA
-2928612800,2928615455,US
-2928615456,2928615463,GB
-2928615464,2928615735,US
-2928615736,2928615743,GB
-2928615744,2928615759,CA
-2928615760,2928615871,US
-2928615872,2928615879,MY
-2928615880,2928615983,US
-2928615984,2928615991,AU
-2928615992,2928616863,US
-2928616864,2928616879,ZA
-2928616880,2928617023,US
-2928617024,2928617039,IN
-2928617040,2928617199,US
-2928617200,2928617215,IL
-2928617216,2928617359,US
-2928617360,2928617375,CA
-2928617376,2928617623,US
-2928617624,2928617631,IN
-2928617632,2928617639,US
-2928617640,2928617647,JP
-2928617648,2928617895,US
-2928617896,2928617903,IN
-2928617904,2928617951,US
-2928617952,2928617959,GB
-2928617960,2928618231,US
-2928618232,2928618239,IL
-2928618240,2928618247,US
-2928618248,2928618255,GB
-2928618256,2928618271,US
-2928618272,2928618279,IL
-2928618280,2928618367,US
-2928618368,2928618375,GB
-2928618376,2928618383,US
-2928618384,2928618399,CA
-2928618400,2928618479,US
-2928618480,2928618487,CA
-2928618488,2928618559,US
-2928618560,2928618591,IN
-2928618592,2928619071,US
-2928619072,2928619103,BD
-2928619104,2928619391,US
-2928619392,2928619423,CA
-2928619424,2928620135,US
-2928620136,2928620143,IN
-2928620144,2928620151,CA
-2928620152,2928620183,US
-2928620184,2928620191,FR
-2928620192,2928620231,US
-2928620232,2928620239,SE
-2928620240,2928620303,US
-2928620304,2928620311,GB
-2928620312,2928620359,US
-2928620360,2928620367,IN
-2928620368,2928620439,US
-2928620440,2928620447,NL
-2928620448,2928620615,US
-2928620616,2928620623,AU
-2928620624,2928620855,US
-2928620856,2928620863,ZA
-2928620864,2928620991,US
-2928620992,2928620999,GB
-2928621000,2928621135,US
-2928621136,2928621143,GB
-2928621144,2928621215,US
-2928621216,2928621223,GB
-2928621224,2928621551,US
-2928621552,2928621559,FR
-2928621560,2928621567,GB
-2928621568,2928621823,US
-2928621824,2928621839,CA
-2928621840,2928621903,US
-2928621904,2928621911,AE
-2928621912,2928621935,US
-2928621936,2928621943,NZ
-2928621944,2928621951,IN
-2928621952,2928622047,US
-2928622048,2928622055,CA
-2928622056,2928622175,US
-2928622176,2928622183,GB
-2928622184,2928622231,US
-2928622232,2928622239,AU
-2928622240,2928622327,US
-2928622328,2928622335,CN
-2928622336,2928622623,US
-2928622624,2928622639,NZ
-2928622640,2928622703,US
-2928622704,2928622719,GB
-2928622720,2928622799,US
-2928622800,2928622815,CA
-2928622816,2928622927,US
-2928622928,2928622959,CA
-2928622960,2928623239,US
-2928623240,2928623247,CA
-2928623248,2928623263,US
-2928623264,2928623271,MX
-2928623272,2928623495,US
-2928623496,2928623503,CA
-2928623504,2928623807,US
-2928623808,2928623815,AU
-2928623816,2928623831,US
-2928623832,2928623839,NO
-2928623840,2928623855,US
-2928623856,2928623863,NZ
-2928623864,2928623999,US
-2928624000,2928624007,CA
-2928624008,2928624127,US
-2928624128,2928624135,CY
-2928624136,2928624143,CA
-2928624144,2928624151,US
-2928624152,2928624159,CA
-2928624160,2928624303,US
-2928624304,2928624311,NL
-2928624312,2928624319,US
-2928624320,2928624327,CA
-2928624328,2928624479,US
-2928624480,2928624487,MX
-2928624488,2928624711,US
-2928624712,2928624719,AU
-2928624720,2928624791,US
-2928624792,2928624799,AU
-2928624800,2928625175,US
-2928625176,2928625183,AU
-2928625184,2928625231,US
-2928625232,2928625239,CA
-2928625240,2928626175,US
-2928626176,2928626191,CA
-2928626192,2928626431,US
-2928626432,2928626447,HU
-2928626448,2928626479,CA
-2928626480,2928626607,US
-2928626608,2928626623,IN
-2928626624,2928626831,US
-2928626832,2928626839,MX
-2928626840,2928626871,US
-2928626872,2928626879,AU
-2928626880,2928626903,US
-2928626904,2928626911,GB
-2928626912,2928626975,US
-2928626976,2928626983,CA
-2928626984,2928627055,US
-2928627056,2928627063,AU
-2928627064,2928627071,GB
-2928627072,2928627095,US
-2928627096,2928627103,AU
-2928627104,2928627167,US
-2928627168,2928627175,GB
-2928627176,2928627183,IE
-2928627184,2928627383,US
-2928627384,2928627391,AU
-2928627392,2928627415,US
-2928627416,2928627423,AU
-2928627424,2928627431,IL
-2928627432,2928627439,GB
-2928627440,2928627463,US
-2928627464,2928627471,TW
-2928627472,2928627487,US
-2928627488,2928627495,IN
-2928627496,2928627543,US
-2928627544,2928627551,GB
-2928627552,2928628783,US
-2928628784,2928628791,GB
-2928628792,2928628799,US
-2928628800,2928628807,CA
-2928628808,2928628879,US
-2928628880,2928628887,AU
-2928628888,2928629007,US
-2928629008,2928629015,CA
-2928629016,2928629031,US
-2928629032,2928629039,HK
-2928629040,2928629183,US
-2928629184,2928629191,GB
-2928629192,2928629199,CA
-2928629200,2928629207,US
-2928629208,2928629215,IL
-2928629216,2928629239,US
-2928629240,2928629247,GB
-2928629248,2928629511,US
-2928629512,2928629519,MX
-2928629520,2928629607,US
-2928629608,2928629615,GB
-2928629616,2928629655,US
-2928629656,2928629663,IL
-2928629664,2928629671,US
-2928629672,2928629679,JP
-2928629680,2928629695,US
-2928629696,2928629703,CA
-2928629704,2928629887,US
-2928629888,2928629951,BD
-2928629952,2928630527,US
-2928630528,2928630559,CA
-2928630560,2928630791,US
-2928630792,2928630807,GB
-2928630808,2928630895,US
-2928630896,2928630903,MX
-2928630904,2928630911,HU
-2928630912,2928631079,US
-2928631080,2928631087,GB
-2928631088,2928631111,US
-2928631112,2928631119,AU
-2928631120,2928631135,US
-2928631136,2928631143,CA
-2928631144,2928631239,US
-2928631240,2928631247,CA
-2928631248,2928631311,US
-2928631312,2928631319,CA
-2928631320,2928631423,US
-2928631424,2928631431,MX
-2928631432,2928631551,US
-2928631552,2928631559,SG
-2928631560,2928631567,US
-2928631568,2928631575,CA
-2928631576,2928631743,US
-2928631744,2928631751,MX
-2928631752,2928631775,US
-2928631776,2928631783,IL
-2928631784,2928631855,US
-2928631856,2928631863,CA
-2928631864,2928631871,AU
-2928631872,2928631887,US
-2928631888,2928631895,FR
-2928631896,2928631951,US
-2928631952,2928631959,SG
-2928631960,2928631975,US
-2928631976,2928631983,IN
-2928631984,2928632031,US
-2928632032,2928632039,NO
-2928632040,2928632055,US
-2928632056,2928632063,MX
-2928632064,2928632223,US
-2928632224,2928632231,GB
-2928632232,2928632367,US
-2928632368,2928632375,IN
-2928632376,2928632399,US
-2928632400,2928632407,CA
-2928632408,2928632519,US
-2928632520,2928632527,IN
-2928632528,2928633087,US
-2928633088,2928633103,CA
-2928633104,2928633119,US
-2928633120,2928633135,CA
-2928633136,2928633199,US
+2928607232,2928633199,US
2928633200,2928633215,CA
-2928633216,2928633423,US
-2928633424,2928633439,IN
-2928633440,2928633583,US
-2928633584,2928633599,GB
-2928633600,2928633879,US
-2928633880,2928633887,IL
-2928633888,2928633895,CA
-2928633896,2928633959,US
-2928633960,2928633967,GB
-2928633968,2928634191,US
-2928634192,2928634199,CH
-2928634200,2928634247,US
-2928634248,2928634255,CA
-2928634256,2928634479,US
-2928634480,2928634487,CA
-2928634488,2928634495,US
-2928634496,2928634503,CN
-2928634504,2928634511,US
-2928634512,2928634519,CA
-2928634520,2928634543,US
-2928634544,2928634551,IN
-2928634552,2928634639,US
-2928634640,2928634647,VG
-2928634648,2928634655,US
-2928634656,2928634663,IN
-2928634664,2928634839,US
-2928634840,2928634847,GB
-2928634848,2928634903,US
-2928634904,2928634911,MX
-2928634912,2928634935,US
-2928634936,2928634943,PH
-2928634944,2928634959,US
-2928634960,2928634967,CA
-2928634968,2928635111,US
-2928635112,2928635119,IN
-2928635120,2928635127,US
-2928635128,2928635135,IE
-2928635136,2928635191,US
-2928635192,2928635199,IN
-2928635200,2928635207,US
-2928635208,2928635215,IN
-2928635216,2928635271,US
-2928635272,2928635279,IL
-2928635280,2928635303,US
-2928635304,2928635311,CA
-2928635312,2928635343,US
-2928635344,2928635351,ZA
-2928635352,2928635663,US
-2928635664,2928635671,AU
-2928635672,2928635815,US
-2928635816,2928635823,BR
-2928635824,2928635831,GB
-2928635832,2928635863,US
-2928635864,2928635871,AU
-2928635872,2928636191,US
-2928636192,2928636199,CA
-2928636200,2928636375,US
-2928636376,2928636383,CA
-2928636384,2928636479,US
-2928636480,2928636487,SE
-2928636488,2928636527,US
-2928636528,2928636535,CA
-2928636536,2928636655,US
-2928636656,2928636663,NZ
-2928636664,2928636927,US
-2928636928,2928636935,IL
-2928636936,2928637007,US
-2928637008,2928637015,BG
-2928637016,2928637039,US
-2928637040,2928637047,CA
-2928637048,2928637487,US
-2928637488,2928637495,CA
-2928637496,2928637983,US
-2928637984,2928637991,IN
-2928637992,2928638047,US
-2928638048,2928638055,BE
-2928638056,2928638095,US
-2928638096,2928638103,IN
-2928638104,2928638119,US
-2928638120,2928638127,IN
-2928638128,2928638207,US
-2928638208,2928638215,GB
-2928638216,2928638359,US
-2928638360,2928638367,CA
-2928638368,2928638375,IN
-2928638376,2928638455,US
-2928638456,2928638463,MX
-2928638464,2928638847,US
-2928638848,2928638855,CA
-2928638856,2928639527,US
-2928639528,2928639535,GB
-2928639536,2928639615,US
-2928639616,2928639623,CA
-2928639624,2928639679,US
-2928639680,2928639687,GB
-2928639688,2928639767,US
-2928639768,2928639775,CA
-2928639776,2928641087,US
-2928641088,2928641151,CA
-2928641152,2928641383,US
-2928641384,2928641391,ID
-2928641392,2928642599,US
-2928642600,2928642607,IN
-2928642608,2928648319,US
-2928648320,2928648383,BD
-2928648384,2928648415,US
-2928648416,2928648447,BD
-2928648448,2928648479,US
-2928648480,2928648575,BD
-2928648576,2928648607,US
-2928648608,2928648639,BD
-2928648640,2928649255,US
-2928649256,2928649263,ZA
-2928649264,2928649271,IL
-2928649272,2928649287,US
-2928649288,2928649295,RO
-2928649296,2928649303,GR
-2928649304,2928649311,IN
-2928649312,2928649351,US
-2928649352,2928649359,JP
-2928649360,2928649375,US
-2928649376,2928649383,IN
-2928649384,2928649415,US
-2928649416,2928649423,CA
-2928649424,2928649447,US
-2928649448,2928649455,GB
-2928649456,2928649551,US
-2928649552,2928649559,BO
-2928649560,2928650087,US
-2928650088,2928650095,CZ
-2928650096,2928650111,US
-2928650112,2928650119,IN
-2928650120,2928650151,US
-2928650152,2928650159,AU
-2928650160,2928650207,US
-2928650208,2928650215,IL
-2928650216,2928655895,US
-2928655896,2928655903,CA
-2928655904,2928655927,US
-2928655928,2928655935,NZ
-2928655936,2928655943,US
-2928655944,2928655951,NZ
-2928655952,2928655983,US
-2928655984,2928655991,GB
-2928655992,2928656639,US
-2928656640,2928656647,CA
-2928656648,2928656655,US
-2928656656,2928656663,PK
-2928656664,2928656823,US
-2928656824,2928656831,ZA
-2928656832,2928656879,US
-2928656880,2928656895,GB
-2928656896,2928657983,US
-2928657984,2928658015,NO
-2928658016,2928662671,US
-2928662672,2928662687,GB
-2928662688,2928662879,US
-2928662880,2928662895,IL
-2928662896,2928662959,US
-2928662960,2928662975,IN
-2928662976,2928663103,US
-2928663104,2928663119,MX
-2928663120,2928663759,US
-2928663760,2928663775,GB
-2928663776,2928664159,US
-2928664160,2928664175,GB
-2928664176,2928664191,US
-2928664192,2928664207,GB
-2928664208,2928664527,US
-2928664528,2928664543,CA
-2928664544,2928664639,US
-2928664640,2928664671,GB
-2928664672,2928665471,US
-2928665472,2928665503,GB
-2928665504,2928665535,US
-2928665536,2928665567,GB
-2928665568,2928665855,US
-2928665856,2928665871,GB
-2928665872,2928666031,US
-2928666032,2928666047,SG
-2928666048,2928666159,US
-2928666160,2928666175,GB
-2928666176,2928666303,US
-2928666304,2928666319,AU
-2928666320,2928666335,US
-2928666336,2928666351,GB
-2928666352,2928666591,US
-2928666592,2928666607,AU
-2928666608,2936012799,US
+2928633216,2936012799,US
2936012800,2937847807,CN
2937847808,2937848831,KH
2937848832,2937849855,JP
@@ -53906,7 +49227,6 @@
2939002880,2939004927,KR
2939004928,2939006975,JP
2939006976,2939007999,KP
-2939008000,2939009023,IN
2939009024,2939011071,ID
2939011072,2939027455,KR
2939027456,2942304255,CN
@@ -53967,15 +49287,19 @@
2947579904,2947583999,KR
2947584000,2947586047,TO
2947588096,2947590143,ID
-2947590144,2947592191,SG
+2947590144,2947590655,JP
+2947590656,2947592191,SG
2947596288,2947597311,IN
2947597312,2947598335,JP
2947598336,2947602431,AU
2947602432,2947603455,NZ
2947603456,2947604479,TH
-2947604480,2947609599,HK
-2947609600,2947609855,US
-2947609856,2947612671,HK
+2947604480,2947609855,HK
+2947609856,2947610111,US
+2947610112,2947610367,HK
+2947610368,2947610623,PH
+2947610624,2947611647,AU
+2947611648,2947612671,HK
2947612672,2947678207,JP
2947678208,2947743743,CN
2947743744,2947809279,JP
@@ -54026,11 +49350,13 @@
2954756096,2954821631,TR
2954821632,2954827799,FR
2954827800,2954827807,DE
-2954827808,2954828287,FR
-2954828288,2954828543,DE
-2954828544,2954829843,FR
+2954827808,2954828291,FR
+2954828292,2954828299,DE
+2954828300,2954829843,FR
2954829844,2954829847,DE
-2954829848,2954835451,FR
+2954829848,2954832343,FR
+2954832344,2954832347,CH
+2954832348,2954835451,FR
2954835452,2954835455,ES
2954835456,2954837071,FR
2954837072,2954837075,ES
@@ -54079,7 +49405,10 @@
2956230656,2956238847,SI
2956238848,2956242943,ES
2956242944,2956244991,SE
-2956244992,2956247039,FR
+2956244992,2956245247,FR
+2956245248,2956245503,RO
+2956245504,2956245759,GB
+2956245760,2956247039,FR
2956247040,2956251135,DE
2956251136,2956253183,GB
2956253184,2956255231,IE
@@ -54124,7 +49453,9 @@
2956599296,2956607487,RU
2956607488,2956611583,PS
2956611584,2956613631,IT
-2956613632,2956615679,EU
+2956613632,2956614143,EU
+2956614144,2956614399,FR
+2956614400,2956615679,EU
2956615680,2956623871,GB
2956623872,2956656639,GR
2956656640,2956722175,RU
@@ -54170,14 +49501,7 @@
2957195264,2957197311,PS
2957197312,2957201407,IR
2957201408,2957202431,US
-2957202432,2957202511,US
-2957202512,2957202527,NO
-2957202528,2957202543,SE
-2957202544,2957202599,US
-2957202600,2957202607,BG
-2957202608,2957202615,GR
-2957202616,2957202623,TR
-2957202624,2957202943,US
+2957202432,2957202943,US
2957202944,2957203455,US
2957203456,2957205503,FR
2957205504,2957213695,PS
@@ -54218,16 +49542,45 @@
2957901824,2958032895,PT
2958032896,2958557183,ES
2958557184,2958819327,TR
-2958819328,2958823423,GR
-2958823424,2958824447,CY
-2958824448,2958838015,GR
-2958838016,2958838783,CY
-2958838784,2958850047,GR
-2958850048,2958851583,CY
-2958851584,2958851839,GR
-2958851840,2958856191,CY
-2958856192,2958872575,GR
-2958872576,2958884863,CY
+2958819328,2958825471,GR
+2958825472,2958825727,CY
+2958825728,2958825983,GR
+2958825984,2958826239,CY
+2958826240,2958826751,GR
+2958826752,2958829055,CY
+2958829056,2958836735,GR
+2958836736,2958837247,CY
+2958837248,2958838015,GR
+2958838016,2958839295,CY
+2958839296,2958839551,GR
+2958839552,2958839807,CY
+2958839808,2958841855,GR
+2958841856,2958842879,CY
+2958842880,2958843903,GR
+2958843904,2958844671,CY
+2958844672,2958844927,GR
+2958844928,2958845183,CY
+2958845184,2958846975,GR
+2958846976,2958848255,CY
+2958848256,2958848511,GR
+2958848512,2958848767,CY
+2958848768,2958850047,GR
+2958850048,2958851071,CY
+2958851072,2958851839,GR
+2958851840,2958852095,CY
+2958852096,2958853119,GR
+2958853120,2958853631,CY
+2958853632,2958853887,GR
+2958853888,2958854143,CY
+2958854144,2958855167,GR
+2958855168,2958856191,CY
+2958856192,2958858239,GR
+2958858240,2958860287,CY
+2958860288,2958870527,GR
+2958870528,2958871551,CY
+2958871552,2958872575,GR
+2958872576,2958876671,CY
+2958876672,2958884863,GR
2958884864,2958950399,FI
2958950400,2959081471,DE
2959081472,2959089663,RU
@@ -54267,7 +49620,6 @@
2959208448,2959210495,CZ
2959210496,2959212543,PL
2959212544,2959220735,UA
-2959220736,2959224831,RO
2959224832,2959226879,UA
2959226880,2959228927,RO
2959228928,2959237119,UA
@@ -54344,7 +49696,6 @@
2959663104,2959704063,UA
2959704064,2959708159,PL
2959712256,2959728639,UA
-2959728640,2959736831,RO
2959736832,2959738879,UA
2959738880,2959745023,RU
2959745024,2959747071,PL
@@ -54357,8 +49708,8 @@
2959767552,2959769599,RS
2959769600,2959777791,RU
2959777792,2959783935,LV
-2959783936,2959788031,SK
-2959788032,2959794175,UA
+2959783936,2959785983,SK
+2959785984,2959794175,UA
2959794176,2959796223,IL
2959796224,2959806463,RU
2959806464,2959810559,SK
@@ -54444,10 +49795,8 @@
2960162816,2960171007,CZ
2960171008,2960175103,RU
2960175104,2960179199,SK
-2960179200,2960205823,RU
-2960205824,2960207871,RO
-2960207872,2960211967,RU
-2960211968,2960224255,RO
+2960179200,2960211967,RU
+2960220160,2960224255,RO
2960224256,2960228351,RU
2960228352,2960232447,TJ
2960232448,2960240639,UA
@@ -54507,7 +49856,7 @@
2960558080,2960560127,PL
2960560128,2960562175,UA
2960562176,2960564223,BY
-2960564224,2960576511,RO
+2960574464,2960576511,RO
2960576512,2960580607,CZ
2960580608,2960588799,RU
2960588800,2960592895,UA
@@ -54529,7 +49878,7 @@
2960678912,2960685055,UA
2960685056,2960687103,PL
2960687104,2960695295,FR
-2960695296,2960697343,RU
+2960695296,2960697343,AT
2960697344,2960699391,ES
2960699392,2960719871,RU
2960719872,2960723967,CZ
@@ -54707,9 +50056,7 @@
2968647680,2968649727,FR
2968649728,2969042943,IT
2969042944,2969567231,GB
-2969567232,2978457087,BR
-2978457088,2978457599,AR
-2978457600,2984247295,BR
+2969567232,2986344447,BR
2986344448,2987393023,DE
2987393024,2987397119,IM
2987397120,2987401215,LV
@@ -54904,9 +50251,9 @@
2988444209,2988444209,FI
2988444210,2988444671,FR
2988444672,2988444679,ES
-2988444680,2988454655,FR
-2988454656,2988454911,US
-2988454912,2988455935,FR
+2988444680,2988452095,FR
+2988452096,2988452351,BE
+2988452352,2988455935,FR
2988455936,2988457983,GB
2988457984,2988459119,FR
2988459120,2988459127,IT
@@ -54920,9 +50267,7 @@
2988462608,2988463999,FR
2988464000,2988464007,IE
2988464008,2988464015,LT
-2988464016,2988476671,FR
-2988476672,2988476927,AE
-2988476928,2988478579,FR
+2988464016,2988478579,FR
2988478580,2988478583,DE
2988478584,2988478587,FR
2988478588,2988478591,DE
@@ -54932,17 +50277,13 @@
2988482112,2988482143,DE
2988482144,2988484831,FR
2988484832,2988484847,GB
-2988484848,2988499699,FR
-2988499700,2988499711,DE
-2988499712,2988499729,FR
+2988484848,2988499729,FR
2988499730,2988499730,GB
-2988499731,2988502051,FR
+2988499731,2988499756,FR
+2988499757,2988499757,ES
+2988499758,2988502051,FR
2988502052,2988502055,PL
-2988502056,2988502839,FR
-2988502840,2988502843,NL
-2988502844,2988502847,FR
-2988502848,2988502855,CH
-2988502856,2988504371,FR
+2988502056,2988504371,FR
2988504372,2988504375,PL
2988504376,2988548095,FR
2988548096,2988550143,ES
@@ -54965,7 +50306,9 @@
2989228032,2989490175,RU
2989490176,2989555711,HU
2989555712,2989621247,RU
-2989621248,2989752319,BE
+2989621248,2989640447,BE
+2989640448,2989640703,FR
+2989640704,2989752319,BE
2989752320,2989817855,SY
2989817856,2989883391,KW
2989883392,2989948927,UA
@@ -54973,25 +50316,45 @@
2990014464,2990079999,PL
2990080000,2990145535,RU
2990145536,2990211071,SI
-2990211072,2990271487,GR
-2990271488,2990273023,CY
-2990273024,2990273535,GR
-2990273536,2990275583,CY
-2990275584,2990276607,GR
+2990211072,2990223359,GR
+2990223360,2990223871,CY
+2990223872,2990235903,GR
+2990235904,2990236159,CY
+2990236160,2990236671,GR
+2990236672,2990239743,CY
+2990239744,2990256383,GR
+2990256384,2990256639,CY
+2990256640,2990259711,GR
+2990259712,2990260223,CY
+2990260224,2990262271,GR
+2990262272,2990262783,CY
+2990262784,2990269439,GR
+2990269440,2990269951,CY
+2990269952,2990271487,GR
+2990271488,2990273535,CY
+2990273536,2990274559,GR
+2990274560,2990276351,CY
+2990276352,2990276607,GR
2990276608,2990342143,ES
-2990342144,2990407679,KW
+2990342144,2990385919,KW
+2990385920,2990386175,US
+2990386176,2990386687,KW
+2990386688,2990386943,US
+2990386944,2990407679,KW
2990407680,2990473215,RU
-2990473216,2990500113,DE
+2990473216,2990475674,DE
+2990475675,2990475675,HR
+2990475676,2990500113,DE
2990500114,2990500115,PL
2990500116,2990538751,DE
2990538752,2991063039,RU
-2991063040,2991068159,SE
-2991068160,2991068415,DK
-2991068416,2991068671,SE
-2991068672,2991068927,DK
-2991068928,2991069695,SE
-2991069696,2991070975,DK
-2991070976,2991079423,SE
+2991063040,2991068415,SE
+2991068416,2991068671,DK
+2991068672,2991069183,SE
+2991069184,2991069695,DK
+2991069696,2991070207,SE
+2991070208,2991071231,DK
+2991071232,2991079423,SE
2991079424,2991095807,RU
2991095808,2991112191,AM
2991112192,2991128575,CZ
@@ -55027,9 +50390,7 @@
2991718400,2991849471,CH
2991849472,2991980543,NL
2991980544,2992111615,UA
-2992111616,2992244735,KZ
-2992244736,2992245503,RU
-2992245504,2992373759,KZ
+2992111616,2992373759,KZ
2992373760,2992635903,UA
2992635904,2993684479,GB
2993684480,2993946623,AT
@@ -55054,9 +50415,10 @@
2995044352,2995046399,ES
2995046400,2995048447,RU
2995048448,2995050495,NL
-2995050496,2995050561,AL
+2995050496,2995050561,AT
2995050562,2995050562,RS
-2995050563,2995052543,AL
+2995050563,2995050751,AT
+2995050752,2995052543,AL
2995052544,2995056639,DK
2995056640,2995058687,DE
2995058688,2995060735,SE
@@ -55107,9 +50469,7 @@
2996996074,2996996074,DE
2996996075,2997004607,DE
2997004608,2997004671,RU
-2997004672,2997008127,DE
-2997008128,2997008383,AE
-2997008384,2997026815,DE
+2997004672,2997026815,DE
2997026816,2997059583,RU
2997059584,2997092351,BY
2997092352,2997125119,NO
@@ -55133,24 +50493,24 @@
2997747712,2997780479,DE
2997780480,2997813247,SE
2997813248,2997817343,ME
-2997817344,2997818879,RS
-2997818880,2997826559,ME
-2997826560,2997827583,RS
-2997827584,2997833727,ME
+2997817344,2997819391,RS
+2997819392,2997832447,ME
+2997832448,2997832703,RS
+2997832704,2997833727,ME
2997833728,2997833983,RS
2997833984,2997834239,ME
-2997834240,2997836287,RS
-2997836288,2997838847,ME
-2997838848,2997839359,RS
+2997834240,2997834751,RS
+2997834752,2997835775,ME
+2997835776,2997836287,RS
+2997836288,2997838591,ME
+2997838592,2997839359,RS
2997839360,2997846015,ME
2997846016,2997878783,MD
2997878784,2998140927,RU
2998140928,2998403071,PL
2998403072,2998665215,RU
2998665216,2998927359,AT
-2998927360,2999392511,CH
-2999392512,2999392767,IT
-2999392768,2999451647,CH
+2998927360,2999451647,CH
2999451648,2999713791,DE
2999713792,2999975935,RU
2999975936,2999984127,FR
@@ -55250,7 +50610,7 @@
3000506368,3000508415,PL
3000508416,3000510463,UA
3000510464,3000512511,PL
-3000512512,3000514559,EE
+3000512512,3000514559,SE
3000514560,3000516607,SI
3000516608,3000520703,RU
3000520704,3000522751,CZ
@@ -55311,7 +50671,9 @@
3000700928,3000705023,PL
3000705024,3000709119,RU
3000709120,3000713215,AM
-3000713216,3000717311,IT
+3000713216,3000715519,IT
+3000715520,3000715775,US
+3000715776,3000717311,IT
3000717312,3000721407,UA
3000721408,3000733695,PL
3000733696,3000737791,RU
@@ -55335,15 +50697,17 @@
3001831424,3001835519,BA
3001835520,3001839615,RU
3001839616,3001843711,ES
-3001843712,3001846271,RU
-3001846272,3001846783,GB
+3001843712,3001845759,RU
+3001845760,3001846783,GB
3001846784,3001847807,RU
3001847808,3001851903,GB
3001851904,3001855999,IT
3001856000,3001860095,NL
-3001860096,3001863167,EE
-3001863168,3001863423,LT
-3001863424,3001864191,EE
+3001860096,3001861887,EE
+3001861888,3001862143,LT
+3001862144,3001863167,EE
+3001863168,3001863679,LT
+3001863680,3001864191,EE
3001864192,3001868287,RU
3001868288,3001872383,FR
3001872384,3001876479,RU
@@ -55351,7 +50715,14 @@
3001880576,3001884671,RU
3001884672,3001888767,NL
3001888768,3001892863,BH
-3001892864,3001896959,AZ
+3001892864,3001893247,AZ
+3001893248,3001893631,RU
+3001893632,3001894399,AZ
+3001894400,3001894655,RU
+3001894656,3001894911,AZ
+3001894912,3001895167,RU
+3001895168,3001896191,AZ
+3001896192,3001896959,RU
3001896960,3001901055,CH
3001901056,3001905151,FR
3001905152,3001909247,GB
@@ -55442,9 +50813,7 @@
3002699776,3002701823,SE
3002701824,3002703871,NL
3002703872,3002705919,DE
-3002705920,3002706431,BG
-3002706432,3002706943,MK
-3002706944,3002707967,BG
+3002705920,3002707967,MK
3002707968,3002710015,KW
3002710016,3002712063,IT
3002712064,3002714111,LU
@@ -55537,7 +50906,6 @@
3003076608,3003080703,GB
3003080704,3003082751,FR
3003082752,3003084799,ES
-3003084800,3003086847,IT
3003086848,3003088895,RU
3003088896,3003090943,FR
3003090944,3003092991,DE
@@ -55613,23 +50981,20 @@
3026069504,3026071551,JP
3026071552,3026073599,HK
3026073600,3026075647,CN
-3026075648,3026077183,AF
-3026077184,3026077439,US
-3026077440,3026078719,AF
-3026078720,3026078975,US
-3026078976,3026079999,AF
-3026080000,3026080767,US
-3026080768,3026080769,AF
-3026080770,3026080770,US
-3026080771,3026081535,AF
-3026081536,3026081791,US
-3026081792,3026083839,AF
+3026075648,3026076927,AF
+3026076928,3026077183,IT
+3026077184,3026079743,US
+3026079744,3026079999,AF
+3026080000,3026080511,US
+3026080512,3026080767,AF
+3026080768,3026081279,US
+3026081280,3026083839,AF
3026083840,3026087935,CN
3026087936,3026089983,AU
3026092032,3026108415,MO
3026108416,3026114559,JP
-3026114560,3026115071,SG
-3026115072,3026116607,JP
+3026114560,3026115583,SG
+3026115584,3026116607,AU
3026116608,3026118655,HK
3026118656,3026120703,AU
3026120704,3026124799,JP
@@ -55709,13 +51074,7 @@
3031695360,3031760895,TH
3031760896,3031826431,AU
3031826432,3031891967,KR
-3031891968,3031910911,TH
-3031910912,3031911167,GB
-3031911168,3031911295,TH
-3031911296,3031911423,FR
-3031911424,3031934719,TH
-3031934720,3031934975,DK
-3031934976,3031957503,TH
+3031891968,3031957503,TH
3031957504,3032252415,CN
3032252416,3032271871,HK
3032271872,3032272895,AU
@@ -55783,8 +51142,8 @@
3034472448,3034478591,IN
3034478592,3034480639,JP
3034480640,3034482687,SG
-3034482688,3034483711,AF
-3034483712,3034483967,US
+3034482688,3034483199,AF
+3034483200,3034483967,US
3034483968,3034484735,AF
3034484736,3034488831,TH
3034488832,3034492927,NZ
@@ -55847,9 +51206,13 @@
3044147200,3044155391,GT
3044163584,3044171775,BO
3044188160,3044196351,BO
-3044196352,3044204543,AR
+3044196352,3044206591,AR
+3044208640,3044212735,BZ
3044212736,3044245503,HN
-3044278272,3044540415,AR
+3044278272,3044343807,AR
+3044409344,3044505599,AR
+3044505600,3044507647,US
+3044507648,3044540415,AR
3044802560,3045064703,PY
3045064704,3047161855,CO
3047161856,3047423999,CL
@@ -55863,7 +51226,10 @@
3049078272,3049078527,MX
3049078528,3049095167,CR
3049095168,3049103359,GT
+3049103360,3049107455,AR
+3049111552,3049119743,AR
3049119744,3049127935,HN
+3049127936,3049193471,CL
3049193472,3049259007,PA
3049259008,3049521151,CR
3049652224,3049717759,EC
@@ -55874,10 +51240,15 @@
3051356160,3051372543,CR
3051380736,3051388927,AR
3051388928,3051397119,PA
+3051405312,3051407359,CR
+3051407360,3051408383,PE
+3051409408,3051411455,AR
3051413504,3051421695,PE
3051487232,3051552767,CL
3051618304,3051749375,AR
3051880448,3051913215,CO
+3051945984,3051962367,CR
+3051995136,3052011519,PE
3052142592,3052273663,CO
3052273664,3052404735,AR
3052404736,3053453311,CO
@@ -55999,8 +51370,8 @@
3064811520,3064823807,KR
3064823808,3064831999,JP
3064832000,3064840191,KR
-3064840192,3064854271,GU
-3064854272,3064854527,US
+3064840192,3064852479,GU
+3064852480,3064854527,US
3064854528,3064856575,GU
3064856576,3064987647,CN
3064987648,3066036223,PK
@@ -56073,11 +51444,7 @@
3075866624,3075915775,JP
3075915776,3075932159,KR
3075932160,3075997695,IN
-3075997696,3076018303,TH
-3076018304,3076018431,GB
-3076018432,3076066047,TH
-3076066048,3076066303,CA
-3076066304,3076128767,TH
+3075997696,3076128767,TH
3076128768,3076161535,SG
3076161536,3076169727,KR
3076169728,3076171775,VN
@@ -56125,9 +51492,7 @@
3091955712,3091959807,CA
3091959808,3091976191,US
3091976192,3091980287,CA
-3091980288,3092569343,US
-3092569344,3092569599,AU
-3092569600,3092569855,US
+3091980288,3092569855,US
3092569856,3092570111,AU
3092570112,3092700671,US
3092700672,3092700927,AU
@@ -56157,15 +51522,9 @@
3093245576,3093245583,BR
3093245584,3093245719,US
3093245720,3093245727,AU
-3093245728,3093245999,US
-3093246000,3093246007,AU
-3093246008,3093246431,US
-3093246432,3093246439,AU
-3093246440,3093247327,US
+3093245728,3093247327,US
3093247328,3093247335,AU
-3093247336,3093247511,US
-3093247512,3093247519,AU
-3093247520,3093248375,US
+3093247336,3093248375,US
3093248376,3093248399,AU
3093248400,3093248415,US
3093248416,3093248431,AU
@@ -56193,137 +51552,7 @@
3093850112,3093855487,DE
3093855488,3093908991,US
3093908992,3093909247,PR
-3093909248,3093954759,US
-3093954760,3093954767,AR
-3093954768,3093954975,US
-3093954976,3093954983,AU
-3093954984,3093955023,US
-3093955024,3093955031,CA
-3093955032,3093955079,US
-3093955080,3093955087,CA
-3093955088,3093955127,US
-3093955128,3093955135,CA
-3093955136,3093955175,US
-3093955176,3093955183,AU
-3093955184,3093955231,US
-3093955232,3093955247,AU
-3093955248,3093955359,US
-3093955360,3093955367,GB
-3093955368,3093955439,US
-3093955440,3093955447,CA
-3093955448,3093955455,GB
-3093955456,3093955663,US
-3093955664,3093955679,CA
-3093955680,3093956415,US
-3093956416,3093956423,VE
-3093956424,3093956479,US
-3093956480,3093956495,IE
-3093956496,3093956543,US
-3093956544,3093956551,AU
-3093956552,3093956567,US
-3093956568,3093956575,MX
-3093956576,3093956895,US
-3093956896,3093956943,CA
-3093956944,3093957103,US
-3093957104,3093957119,CA
-3093957120,3093957143,US
-3093957144,3093957151,IL
-3093957152,3093957703,US
-3093957704,3093957711,BE
-3093957712,3093957887,US
-3093957888,3093957895,CA
-3093957896,3093957903,US
-3093957904,3093957911,CA
-3093957912,3093958111,US
-3093958112,3093958119,CA
-3093958120,3093958175,US
-3093958176,3093958183,GB
-3093958184,3093958231,US
-3093958232,3093958239,AU
-3093958240,3093958503,US
-3093958504,3093958511,CA
-3093958512,3093958623,US
-3093958624,3093958631,MX
-3093958632,3093958663,US
-3093958664,3093958667,MX
-3093958668,3093958721,US
-3093958722,3093958723,IL
-3093958724,3093958745,US
-3093958746,3093958747,FR
-3093958748,3093959559,US
-3093959560,3093959567,CA
-3093959568,3093959751,US
-3093959752,3093959759,GB
-3093959760,3093959911,US
-3093959912,3093959919,CA
-3093959920,3093960063,US
-3093960064,3093960095,CA
-3093960096,3093960191,US
-3093960192,3093960207,CA
-3093960208,3093960351,US
-3093960352,3093960383,CA
-3093960384,3093960447,US
-3093960448,3093960463,CA
-3093960464,3093962259,US
-3093962260,3093962263,CA
-3093962264,3093962287,US
-3093962288,3093962291,MX
-3093962292,3093962375,US
-3093962376,3093962379,CA
-3093962380,3093962475,US
-3093962476,3093962479,CA
-3093962480,3093962559,US
-3093962560,3093962575,GB
-3093962576,3093962807,US
-3093962808,3093962815,AU
-3093962816,3093962943,US
-3093962944,3093962951,GB
-3093962952,3093963359,US
-3093963360,3093963367,CA
-3093963368,3093963487,US
-3093963488,3093963495,IE
-3093963496,3093963599,US
-3093963600,3093963607,CA
-3093963608,3093965039,US
-3093965040,3093965055,GB
-3093965056,3093965663,US
-3093965664,3093965671,KW
-3093965672,3093965879,US
-3093965880,3093965881,CA
-3093965882,3093965885,US
-3093965886,3093965887,MX
-3093965888,3093965965,US
-3093965966,3093965967,MX
-3093965968,3093966319,US
-3093966320,3093966323,AU
-3093966324,3093967191,US
-3093967192,3093967199,CA
-3093967200,3093968911,US
-3093968912,3093968927,CA
-3093968928,3093968943,US
-3093968944,3093968951,MX
-3093968952,3093969007,US
-3093969008,3093969015,IE
-3093969016,3093969031,US
-3093969032,3093969035,CA
-3093969036,3093969131,US
-3093969132,3093969135,MX
-3093969136,3093970503,US
-3093970504,3093970507,GB
-3093970508,3093970511,US
-3093970512,3093970515,IE
-3093970516,3093973583,US
-3093973584,3093973599,BG
-3093973600,3093977159,US
-3093977160,3093977163,AU
-3093977164,3093977167,IL
-3093977168,3093977863,US
-3093977864,3093977871,CO
-3093977872,3093986367,US
-3093986368,3093986431,DE
-3093986432,3093986463,US
-3093986464,3093986495,GB
-3093986496,3094020095,US
+3093909248,3094020095,US
3094020096,3094085631,CA
3094085632,3096444927,US
3096444928,3096969215,CA
@@ -56371,9 +51600,7 @@
3098255400,3098255407,BR
3098255408,3098255903,US
3098255904,3098255911,MV
-3098255912,3098258671,US
-3098258672,3098258679,MV
-3098258680,3098263551,US
+3098255912,3098263551,US
3098263552,3098271743,CA
3098271744,3098275944,US
3098275945,3098275945,CL
@@ -56487,9 +51714,7 @@
3098376864,3098376895,BR
3098376896,3098377727,US
3098377728,3098377759,AR
-3098377760,3098379479,US
-3098379480,3098379487,TR
-3098379488,3098380047,US
+3098377760,3098380047,US
3098380048,3098380063,IN
3098380064,3098380527,US
3098380528,3098380535,IN
@@ -56698,7 +51923,9 @@
3104075776,3104076799,NL
3104076800,3104077823,GB
3104077824,3104078847,AT
-3104078848,3104079871,LU
+3104078848,3104079103,LU
+3104079104,3104079359,FR
+3104079360,3104079871,LU
3104079872,3104080895,GB
3104080896,3104081919,GR
3104081920,3104082943,DK
@@ -57139,6 +52366,7 @@
3104563200,3104564223,IT
3104564224,3104565247,RU
3104565248,3104566271,IT
+3104566272,3104567295,ES
3104567296,3104568319,GB
3104568320,3104569343,RU
3104569344,3104570367,TR
@@ -57152,6 +52380,155 @@
3104577536,3104578559,IQ
3104578560,3104579583,RU
3104579584,3104580607,FR
+3104580608,3104581631,GB
+3104581632,3104582655,ME
+3104582656,3104583679,EU
+3104583680,3104584703,FR
+3104584704,3104585727,RU
+3104585728,3104586751,NO
+3104586752,3104587775,IR
+3104587776,3104588799,DE
+3104588800,3104589823,RU
+3104589824,3104590847,NO
+3104590848,3104591871,BA
+3104591872,3104592895,EU
+3104592896,3104593919,RU
+3104593920,3104594943,DE
+3104594944,3104595967,RU
+3104595968,3104596991,FR
+3104596992,3104598015,IR
+3104598016,3104599039,ES
+3104599040,3104600063,TR
+3104600064,3104601087,UA
+3104601088,3104602111,PT
+3104602112,3104603135,NL
+3104603136,3104604159,RU
+3104604160,3104605183,CH
+3104605184,3104606207,NL
+3104606208,3104607231,GB
+3104607232,3104608255,UA
+3104608256,3104609279,NL
+3104609280,3104610303,SE
+3104610304,3104611327,RU
+3104611328,3104612351,IE
+3104612352,3104613375,GB
+3104613376,3104614399,SA
+3104614400,3104615423,BA
+3104615424,3104616447,SA
+3104616448,3104617471,FR
+3104617472,3104618495,AT
+3104618496,3104619519,PS
+3104619520,3104621567,GB
+3104621568,3104622591,CZ
+3104622592,3104623615,GB
+3104623616,3104624639,FR
+3104624640,3104625663,RU
+3104625664,3104626687,BY
+3104626688,3104627711,NL
+3104627712,3104628735,LB
+3104628736,3104629759,TR
+3104629760,3104630783,RU
+3104630784,3104631807,GB
+3104631808,3104632831,EE
+3104632832,3104633855,AT
+3104633856,3104634879,JO
+3104634880,3104635903,SE
+3104635904,3104637951,RU
+3104637952,3104638975,UA
+3104638976,3104639999,RS
+3104640000,3104641023,GB
+3104641024,3104642047,EE
+3104642048,3104643071,KZ
+3104643072,3104644095,RU
+3104644096,3104645119,DE
+3104645120,3104646143,RU
+3104646144,3104647167,FR
+3104647168,3104648191,MT
+3104648192,3104649215,RU
+3104649216,3104650239,GB
+3104650240,3104651263,SI
+3104651264,3104652287,TR
+3104652288,3104653311,ES
+3104653312,3104654335,FR
+3104654336,3104655359,DE
+3104655360,3104656383,GB
+3104656384,3104657407,ES
+3104657408,3104658431,GB
+3104658432,3104659455,JO
+3104659456,3104660479,LU
+3104660480,3104661503,NO
+3104661504,3104662527,SE
+3104662528,3104663551,FR
+3104663552,3104665599,GB
+3104665600,3104668671,RU
+3104668672,3104669695,NO
+3104669696,3104670719,GB
+3104670720,3104672767,RU
+3104672768,3104673791,GB
+3104673792,3104674815,PL
+3104674816,3104675839,DE
+3104675840,3104676863,LV
+3104676864,3104677887,DE
+3104677888,3104678911,RU
+3104678912,3104679935,IT
+3104679936,3104681983,PL
+3104681984,3104683007,RU
+3104683008,3104684031,FR
+3104684032,3104685055,PL
+3104685056,3104686079,GB
+3104686080,3104687103,IL
+3104687104,3104688127,AM
+3104688128,3104689151,ES
+3104689152,3104690175,GB
+3104690176,3104691199,DE
+3104691200,3104693247,FR
+3104693248,3104694271,IT
+3104694272,3104695295,NL
+3104695296,3104696319,IR
+3104696320,3104697343,PL
+3104697344,3104698367,MK
+3104698368,3104699391,BA
+3104699392,3104700415,GB
+3104700416,3104701439,UA
+3104701440,3104702463,IT
+3104702464,3104703487,FR
+3104703488,3104704511,RU
+3104704512,3104705535,IT
+3104705536,3104706559,DE
+3104706560,3104707583,UA
+3104707584,3104708607,TR
+3104708608,3104709631,ES
+3104709632,3104710655,UA
+3104710656,3104711679,RU
+3104711680,3104712703,ES
+3104712704,3104714751,RU
+3104714752,3104715775,DE
+3104715776,3104716799,AT
+3104716800,3104717823,ES
+3104717824,3104718847,GB
+3104718848,3104719871,TR
+3104719872,3104720895,RU
+3104720896,3104721919,PL
+3104721920,3104722943,IT
+3104722944,3104723967,IR
+3104723968,3104724991,GB
+3104724992,3104726015,RU
+3104726016,3104727039,DE
+3104727040,3104728063,CY
+3104728064,3104729087,KZ
+3104729088,3104730111,FR
+3104730112,3104731135,CH
+3104731136,3104732159,PL
+3104732160,3104733183,SK
+3104733184,3104734207,FR
+3104734208,3104735231,BA
+3104735232,3104736255,FR
+3104737280,3104738303,GB
+3104738304,3104739327,KW
+3104739328,3104740351,GB
+3104740352,3104741375,PL
+3104741376,3104742399,GB
+3104742400,3104743423,CH
3120562176,3120594943,CO
3120594944,3120599039,AR
3120599040,3120601087,EC
@@ -57165,7 +52542,8 @@
3120660480,3120668671,PA
3120668672,3120676863,CO
3120676864,3120680959,HT
-3120680960,3120693247,AR
+3120680960,3120691199,AR
+3120691200,3120693247,CO
3120693248,3120726015,BO
3120726016,3120734207,HN
3120734208,3120738303,BZ
@@ -57213,9 +52591,13 @@
3122732032,3122733055,US
3122733056,3122734079,AR
3122734080,3122734591,US
-3122734592,3122737919,AR
+3122734592,3122737407,AR
+3122737408,3122737663,US
+3122737664,3122737919,AR
3122737920,3122738175,US
-3122738176,3122741247,AR
+3122738176,3122739199,AR
+3122739200,3122739455,US
+3122739456,3122741247,AR
3122741248,3122757631,DO
3122757632,3122774015,EC
3122774016,3122790399,AR
@@ -57230,8 +52612,10 @@
3123707904,3124232191,UY
3124232192,3124760751,AR
3124760752,3124760759,MX
-3124760760,3124781055,AR
-3124785152,3124789247,CL
+3124760760,3124783103,AR
+3124783104,3124785151,GT
+3124785152,3124788223,CL
+3124788224,3124789247,PE
3124789248,3124822015,CR
3124822016,3124838399,EC
3124838400,3124840447,AR
@@ -57283,7 +52667,7 @@
3130458112,3130523647,GT
3130523648,3130654719,AR
3130654720,3130785791,CO
-3130785792,3130818559,CL
+3130785792,3130851327,CL
3130851328,3130982399,AR
3130982400,3131006975,CO
3131006976,3131011071,CW
@@ -57314,7 +52698,9 @@
3133073408,3133074431,CW
3133074432,3133075455,CL
3133075456,3133079551,CW
-3133079552,3133145087,AR
+3133079552,3133083647,AR
+3133083648,3133087743,UY
+3133087744,3133145087,AR
3133145088,3145727999,BR
3145728000,3154116607,MX
3154116608,3154124799,RU
@@ -57343,7 +52729,9 @@
3156475904,3156541439,HU
3156541440,3156606975,PT
3156606976,3156672511,TR
-3156672512,3156738047,GB
+3156672512,3156676863,GB
+3156676864,3156677119,ES
+3156677120,3156738047,GB
3156738048,3156759431,DE
3156759432,3156759432,GB
3156759433,3156803583,DE
@@ -57529,9 +52917,7 @@
3160287232,3160289279,GB
3160289280,3160291327,RU
3160291328,3160293375,ES
-3160293376,3160294399,FI
-3160294400,3160294655,SE
-3160294656,3160295423,FI
+3160293376,3160295423,FI
3160295424,3160297471,GB
3160297472,3160299519,MD
3160299520,3160301567,RU
@@ -57557,9 +52943,7 @@
3160348672,3160350719,PL
3160350720,3160352767,SE
3160352768,3160354815,GB
-3160354816,3160355839,NL
-3160355840,3160356095,UA
-3160356096,3160356863,NL
+3160354816,3160356863,NL
3160356864,3160358911,CZ
3160358912,3160360959,JO
3160360960,3160363007,IT
@@ -57583,9 +52967,7 @@
3160401920,3160403967,DE
3160403968,3160406015,NO
3160406016,3160408063,ES
-3160408064,3161406719,DE
-3161406720,3161406975,US
-3161406976,3161456639,DE
+3160408064,3161456639,DE
3161456640,3161473023,PL
3161473024,3161489407,SK
3161489408,3161505791,LV
@@ -57601,13 +52983,34 @@
3161620480,3161636863,DK
3161636864,3161653247,RU
3161653248,3161669631,LU
-3161669632,3161676031,RE
-3161676032,3161676287,FR
-3161676288,3161677823,RE
-3161677824,3161679871,MQ
-3161679872,3161681919,GP
-3161681920,3161682943,GF
-3161682944,3161686015,MQ
+3161669632,3161669887,RE
+3161669888,3161670143,FR
+3161670144,3161670655,RE
+3161670656,3161670911,FR
+3161670912,3161671167,RE
+3161671168,3161671679,FR
+3161671680,3161672191,RE
+3161672192,3161672959,FR
+3161672960,3161673727,RE
+3161673728,3161674751,FR
+3161674752,3161675263,RE
+3161675264,3161677311,FR
+3161677312,3161677823,RE
+3161677824,3161678079,MQ
+3161678080,3161678335,FR
+3161678336,3161678847,MQ
+3161678848,3161679103,FR
+3161679104,3161679871,MQ
+3161679872,3161682431,FR
+3161682432,3161682687,GF
+3161682688,3161683199,FR
+3161683200,3161683455,MQ
+3161683456,3161683711,FR
+3161683712,3161683967,MQ
+3161683968,3161684479,FR
+3161684480,3161685247,MQ
+3161685248,3161685759,FR
+3161685760,3161686015,MQ
3161686016,3161702399,UA
3161702400,3161718783,AM
3161718784,3161735167,PL
@@ -57641,8 +53044,10 @@
3162087424,3162095615,SK
3162095616,3162103807,GE
3162103808,3162104831,NL
-3162104832,3162109951,FR
-3162109952,3162111999,NL
+3162104832,3162107903,FR
+3162107904,3162108415,NL
+3162108416,3162108671,FR
+3162108672,3162111999,NL
3162112000,3162120191,PL
3162120192,3162128383,GB
3162128384,3162136575,NL
@@ -57699,10 +53104,10 @@
3162603520,3162636287,GE
3162636288,3162669055,FR
3162669056,3162681343,RU
-3162681344,3162681919,UA
-3162681920,3162682111,RU
-3162682112,3162682367,UA
-3162682368,3162701823,RU
+3162681344,3162682367,UA
+3162682368,3162685439,RU
+3162685440,3162687487,UA
+3162687488,3162701823,RU
3162701824,3162734591,MD
3162734592,3162767359,RU
3162767360,3162800127,SA
@@ -57758,13 +53163,17 @@
3164923904,3164925951,DE
3164925952,3164927999,PL
3164928000,3164930047,NL
-3164930048,3164952224,FR
+3164930048,3164936499,FR
+3164936500,3164936500,LT
+3164936501,3164952224,FR
3164952225,3164952231,GB
3164952232,3164952233,FR
3164952234,3164952235,GB
3164952236,3164952236,FR
3164952237,3164952237,GB
-3164952238,3164995583,FR
+3164952238,3164965575,FR
+3164965576,3164965576,FI
+3164965577,3164995583,FR
3164995584,3165061119,RU
3165061120,3165126655,SK
3165126656,3165192191,RU
@@ -57774,8 +53183,10 @@
3165388800,3165519871,RO
3165519872,3165585407,DE
3165585408,3165650943,CZ
-3165650944,3165938175,DK
-3165938176,3165938431,US
+3165650944,3165938239,DK
+3165938240,3165938367,US
+3165938368,3165938375,DK
+3165938376,3165938431,US
3165938432,3166175231,DK
3166175232,3166306303,CH
3166306304,3166437375,RU
@@ -57829,27 +53240,19 @@
3169054720,3169056767,GB
3169056768,3169058815,EE
3169058816,3169091583,DK
-3169091584,3169099775,IT
-3169099776,3169101823,US
-3169101824,3169107967,IT
-3169107968,3169112063,US
-3169112064,3169124351,IT
+3169091584,3169124351,IT
3169124352,3169157119,RO
3169157120,3169189887,SY
3169189888,3169222655,UA
3169222656,3169255423,SI
3169255424,3169264127,KW
3169264128,3169264383,US
-3169264384,3169265407,KW
-3169265408,3169265663,US
-3169265664,3169288191,KW
+3169264384,3169288191,KW
3169288192,3169320959,UA
3169320960,3169583103,RU
3169583104,3169648639,KW
3169648640,3169714175,MD
-3169714176,3169752575,FI
-3169752576,3169752831,AX
-3169752832,3169779711,FI
+3169714176,3169779711,FI
3169779712,3169845247,UA
3169845248,3169976319,RO
3169976320,3170111487,RU
@@ -57898,7 +53301,7 @@
3187732480,3187734527,CO
3187734528,3187736575,BO
3187736576,3187752959,AR
-3187752960,3187761151,CO
+3187752960,3187761151,VE
3187761152,3187769343,AR
3187769344,3187802111,CO
3187802112,3187818495,AR
@@ -57915,15 +53318,20 @@
3187910656,3187914751,CL
3187914752,3187916799,BO
3187916800,3187933183,CO
-3187933184,3187945471,HN
-3187945472,3187946111,GT
+3187933184,3187935607,GT
+3187935608,3187935615,HN
+3187935616,3187936711,GT
+3187936712,3187936719,HN
+3187936720,3187937279,GT
+3187937280,3187939327,HN
+3187939328,3187940351,GT
+3187940352,3187941375,HN
+3187941376,3187946111,GT
3187946112,3187946239,HN
3187946240,3187947983,GT
3187947984,3187947987,HN
3187947988,3187949567,GT
-3187949568,3187950079,CW
-3187950080,3187950335,NL
-3187950336,3187953663,CW
+3187949568,3187953663,CW
3187953664,3187955711,CL
3187955712,3187957759,CR
3187957760,3187961855,CL
@@ -57940,7 +53348,8 @@
3188056064,3188064255,PA
3188064256,3188080639,VE
3188080640,3188088831,CU
-3188088832,3188097023,AR
+3188088832,3188094975,AR
+3188094976,3188097023,CL
3188097024,3188105215,DO
3188105216,3188113407,CO
3188113408,3188117503,HN
@@ -58043,9 +53452,7 @@
3191193600,3191209983,HN
3191209984,3191275519,CL
3191275520,3191341055,AR
-3191341056,3191405951,GT
-3191405952,3191406079,HN
-3191406080,3191406591,GT
+3191341056,3191406591,GT
3191406592,3191439359,SV
3191439360,3191455743,EC
3191455744,3191472127,AR
@@ -58054,21 +53461,29 @@
3191607808,3191608319,CL
3191608320,3191611391,CO
3191611392,3191619583,VE
-3191619584,3191650559,CO
+3191619584,3191649279,CO
+3191649280,3191649791,US
+3191649792,3191650559,CO
3191650560,3191650815,US
3191650816,3191651071,CO
3191651072,3191651327,US
3191651328,3191676927,CO
-3191676928,3191685119,AR
+3191676928,3191679487,AR
+3191679488,3191679743,US
+3191679744,3191684351,AR
+3191684352,3191684607,US
+3191684608,3191685119,AR
3191685120,3191685631,CO
3191685632,3191685887,US
3191685888,3191688959,CO
-3191688960,3191689727,US
-3191689728,3191691263,CO
-3191691264,3191693311,US
-3191693312,3191699455,CO
-3191699456,3191701503,US
-3191701504,3191727103,CO
+3191688960,3191693311,US
+3191693312,3191697407,CO
+3191697408,3191701503,US
+3191701504,3191705599,CO
+3191705600,3191705855,US
+3191705856,3191721983,CO
+3191721984,3191722495,AR
+3191722496,3191727103,CO
3191727104,3191727359,AR
3191727360,3191730943,CO
3191730944,3191731199,AR
@@ -58087,10 +53502,10 @@
3193143296,3193176063,TT
3193176064,3193307135,CO
3193307136,3193438207,SV
-3193438208,3193469951,CW
-3193469952,3193470207,US
-3193470208,3193569279,CW
-3193569280,3193606143,CO
+3193438208,3193569279,CW
+3193569280,3193582847,CO
+3193582848,3193583103,EC
+3193583104,3193606143,CO
3193606144,3193606399,EC
3193606400,3193622527,CO
3193622528,3193623039,EC
@@ -58107,9 +53522,13 @@
3193737472,3193737727,US
3193737728,3193737983,AR
3193737984,3193738239,US
-3193738240,3193739263,AR
+3193738240,3193738751,AR
+3193738752,3193739007,US
+3193739008,3193739263,AR
3193739264,3193739519,US
-3193739520,3193741311,AR
+3193739520,3193740031,AR
+3193740032,3193740287,US
+3193740288,3193741311,AR
3193741312,3193741567,US
3193741568,3193743231,AR
3193743232,3193743359,US
@@ -58119,7 +53538,15 @@
3193746752,3193746815,US
3193746816,3193747839,AR
3193747840,3193748223,US
-3193748224,3193754623,AR
+3193748224,3193749503,AR
+3193749504,3193749759,US
+3193749760,3193750015,AR
+3193750016,3193750271,US
+3193750272,3193751807,AR
+3193751808,3193752063,US
+3193752064,3193753215,AR
+3193753216,3193753343,US
+3193753344,3193754623,AR
3193754624,3193754751,US
3193754752,3193765887,AR
3193765888,3193774079,TT
@@ -58157,7 +53584,7 @@
3194077184,3194085375,CO
3194085376,3194093567,VE
3194093568,3194126335,SR
-3194126336,3194127359,AR
+3194126336,3194127359,GT
3194127360,3194129407,PE
3194129408,3194129663,AR
3194129664,3194129671,BR
@@ -58165,8 +53592,8 @@
3194130432,3194134527,BR
3194134528,3194135551,AR
3194135552,3194136575,GT
-3194136576,3194140415,AR
-3194140416,3194142719,CR
+3194136576,3194140671,AR
+3194140672,3194142719,CR
3194142720,3194159103,CL
3194159104,3194165247,HN
3194165248,3194175487,SV
@@ -58211,9 +53638,7 @@
3194494976,3194507263,AR
3194511360,3194515455,AW
3194515456,3194519551,GT
-3194519552,3194526207,PY
-3194526208,3194527743,AR
-3194527744,3194535935,PY
+3194519552,3194535935,PY
3194535936,3194585087,AR
3194585088,3194589183,HN
3194589184,3194591231,AR
@@ -58264,7 +53689,7 @@
3194740736,3194742783,CL
3194742784,3194744831,EC
3194744832,3194746879,AR
-3194746880,3194748927,CW
+3194746880,3194748927,US
3194748928,3194757119,UY
3194757120,3194765311,AR
3194765312,3194767359,EC
@@ -58299,7 +53724,9 @@
3194977280,3194978303,AR
3194978304,3194982911,PA
3194982912,3194983039,US
-3194983040,3194985471,PA
+3194983040,3194984191,PA
+3194984192,3194984319,US
+3194984320,3194985471,PA
3194985472,3194985599,US
3194985600,3194994687,PA
3194994688,3195011071,AR
@@ -58331,8 +53758,8 @@
3195206656,3195207679,CL
3195207680,3195211775,GT
3195215872,3195224063,AR
-3195224064,3195232255,PA
-3195232256,3195234559,CR
+3195224064,3195232511,PA
+3195232512,3195234559,CR
3195234560,3195234815,PA
3195234816,3195236351,CR
3195236352,3195240447,AR
@@ -58349,7 +53776,7 @@
3195576320,3195580415,CL
3195580416,3195584511,AR
3195584512,3195592703,HT
-3195592704,3195596799,ID
+3195592704,3195596799,PA
3195596800,3195597823,CR
3195597824,3195598847,AR
3195598848,3195600895,VE
@@ -58428,13 +53855,12 @@
3198550016,3198681087,DO
3198681088,3198877695,VE
3198877696,3198894079,CR
+3198894080,3198902271,CO
3198910464,3198926847,CL
3198926848,3198943231,BO
3198943232,3199467519,AR
3199504384,3199505407,AR
-3199533056,3199542271,BO
-3199542272,3199542783,BR
-3199542784,3199549439,BO
+3199533056,3199549439,BO
3199549440,3199565823,AR
3199565824,3199582207,NI
3199582208,3199598591,HN
@@ -58464,7 +53890,9 @@
3200614400,3200647167,AR
3200647168,3201302527,VE
3201302528,3201433599,CL
-3201433600,3201499135,AR
+3201433600,3201441791,AR
+3201441792,3201442047,US
+3201442048,3201499135,AR
3201499136,3201515519,CL
3201515520,3201522687,AR
3201522688,3201531903,CR
@@ -58485,11 +53913,17 @@
3201761280,3201826815,CL
3201826816,3201859583,AR
3201859584,3201863679,CO
-3201863680,3201869823,AR
-3201869824,3201875967,PE
+3201863680,3201865727,CL
+3201865728,3201868287,AR
+3201868288,3201868543,PE
+3201868544,3201871871,AR
+3201871872,3201875967,PE
3201875968,3201880063,CO
-3201880064,3201882111,EC
-3201882112,3201884159,AR
+3201880064,3201880071,AR
+3201880072,3201880079,EC
+3201880080,3201880831,AR
+3201880832,3201881087,EC
+3201881088,3201884159,AR
3201884160,3201892351,VE
3201892352,3201925119,AR
3201925120,3201957887,CL
@@ -58525,9 +53959,7 @@
3203661824,3203923967,AR
3203923968,3204448255,CO
3221226496,3221227519,KY
-3221227520,3221229567,US
-3221233664,3221237759,US
-3221241856,3221258239,US
+3221227520,3221258239,US
3221258240,3221291007,CA
3221291008,3221334269,US
3221334270,3221334270,DZ
@@ -58575,11 +54007,9 @@
3221656832,3221657087,AU
3221657088,3221664255,US
3221664256,3221664511,EU
-3221664512,3221761535,US
-3221761536,3221762047,PL
-3221762048,3221800959,US
-3221800960,3221803007,IN
-3221803008,3221803775,US
+3221664512,3221801983,US
+3221801984,3221802239,IN
+3221802240,3221803775,US
3221803776,3221804031,IN
3221804032,3221806079,US
3221806080,3221806335,IN
@@ -58587,9 +54017,7 @@
3221806592,3221806847,IN
3221806848,3221843967,US
3221843968,3221844223,EU
-3221844224,3221991167,US
-3221991168,3221991423,NZ
-3221991424,3221993727,US
+3221844224,3221993727,US
3221993728,3221993983,EU
3221993984,3222003967,US
3222003968,3222004223,AP
@@ -58708,8 +54136,7 @@
3223077376,3223201791,US
3223201792,3223202815,PR
3223202816,3223203071,US
-3223203840,3223207935,US
-3223212032,3223214079,US
+3223203840,3223214079,US
3223214848,3223215103,US
3223215104,3223215359,AU
3223215360,3223215871,US
@@ -58717,8 +54144,7 @@
3223227904,3223228159,CA
3223229184,3223229695,US
3223229696,3223229951,CA
-3223230464,3223232511,US
-3223236608,3223243007,US
+3223230464,3223243007,US
3223243264,3223243519,CA
3223244288,3223248895,US
3223249408,3223249663,CA
@@ -58749,7 +54175,7 @@
3223286272,3223286527,IN
3223286528,3223286783,US
3223286784,3223289855,JP
-3223293952,3223299327,US
+3223289856,3223299327,US
3223299584,3223301119,NL
3223301120,3223303167,US
3223303168,3223303423,CA
@@ -58798,6 +54224,7 @@
3223449600,3223452671,US
3223452928,3223453183,US
3223453184,3223453439,DE
+3223453696,3223457791,US
3223458560,3223458815,GB
3223458816,3223461887,US
3223462656,3223462911,US
@@ -58816,8 +54243,7 @@
3223481088,3223481343,SE
3223481344,3223483391,US
3223483392,3223483647,NL
-3223484416,3223486463,US
-3223490560,3223498751,US
+3223484416,3223498751,US
3223499520,3223499775,FI
3223499776,3223504895,CA
3223504896,3223508991,US
@@ -58826,9 +54252,7 @@
3223519232,3223523583,DE
3223523584,3223523615,EU
3223523616,3223524351,DE
-3223524352,3223528231,US
-3223528232,3223528232,CA
-3223528233,3223528233,US
+3223524352,3223528233,US
3223528234,3223528234,GB
3223528235,3223534335,US
3223534336,3223534591,AU
@@ -58882,15 +54306,15 @@
3223865344,3223867391,FI
3223867392,3223867647,GB
3223868416,3223869439,BM
-3223871488,3223879679,US
+3223869440,3223871487,US
+3223871488,3223873535,CA
+3223873536,3223881727,US
3223881728,3223882751,CA
-3223883520,3223883775,US
-3223885824,3223896063,US
-3223898112,3223900159,US
+3223883520,3223902207,US
3223902464,3223902719,CA
3223903232,3223905279,US
3223905280,3223905535,FI
-3223908352,3223909375,CA
+3223906304,3223909375,CA
3223909376,3223910911,US
3223911936,3223912191,CA
3223912448,3223938559,US
@@ -59001,8 +54425,10 @@
3224367616,3224368127,US
3224368128,3224369663,CH
3224369664,3224373247,US
-3224373248,3224374271,AU
-3224374272,3224379135,US
+3224373248,3224373503,AU
+3224373504,3224373759,US
+3224373760,3224374015,AU
+3224374016,3224379135,US
3224379136,3224379391,DE
3224379392,3224398079,US
3224398336,3224398591,US
@@ -59013,8 +54439,7 @@
3224407296,3224407551,CA
3224407808,3224408319,US
3224408320,3224408575,DE
-3224408576,3224408831,GB
-3224408832,3224428543,US
+3224408576,3224428543,US
3224428544,3224428799,DE
3224428800,3224430079,US
3224430336,3224430591,DE
@@ -59043,8 +54468,7 @@
3224675072,3224675839,US
3224676864,3224677119,US
3224677120,3224678655,AU
-3224678656,3224681471,US
-3224682496,3224689919,US
+3224678656,3224689919,US
3224689920,3224690687,NL
3224690688,3224692735,US
3224692736,3224692991,DZ
@@ -59101,9 +54525,7 @@
3224828672,3224828927,AU
3224829184,3224829439,US
3224829440,3224829695,DE
-3224829952,3224831487,US
-3224831488,3224831743,MY
-3224831744,3224833535,US
+3224829952,3224833535,US
3224833536,3224833791,SG
3224833792,3224834047,US
3224834048,3224834303,SG
@@ -59166,8 +54588,7 @@
3224892160,3224892415,CA
3224892416,3224892671,DE
3224892928,3224893183,US
-3224893440,3224893951,US
-3224895488,3224899071,US
+3224893440,3224899071,US
3224899072,3224899327,AT
3224899328,3224908543,US
3224908544,3224908799,CA
@@ -59183,11 +54604,12 @@
3225034240,3225034751,FI
3225034752,3225035775,BG
3225035776,3225037055,US
-3225037056,3225051135,FI
-3225051136,3225057535,US
+3225037056,3225049599,FI
+3225050112,3225057535,US
3225057536,3225057791,CA
3225057792,3225060351,US
3225060352,3225061631,AU
+3225062400,3225063423,VC
3225063424,3225075967,US
3225076224,3225076479,CA
3225076480,3225076991,US
@@ -59207,18 +54629,26 @@
3225091584,3225091839,US
3225092096,3225314303,US
3225314304,3225314559,GB
-3225314560,3225419775,US
-3225420032,3225420287,US
-3225423872,3225424383,US
+3225314560,3225421823,US
+3225421824,3225423871,CA
+3225423872,3225426943,US
3225426944,3225427199,AT
+3225427968,3225428991,US
3225429504,3225429759,CA
+3225430016,3225431039,CA
3225431040,3225431551,CZ
-3225431552,3225433087,US
+3225431552,3225434111,US
+3225434112,3225436159,CA
3225436160,3225444607,US
3225445376,3225446399,BE
+3225446400,3225450495,US
+3225450496,3225451519,AG
3225451776,3225452031,SE
+3225456640,3225459711,US
3225459968,3225460479,US
3225460480,3225462783,CA
+3225462784,3225464831,US
+3225468928,3225469951,CA
3225470464,3225470719,US
3225471488,3225471743,DE
3225471744,3225472511,US
@@ -59241,6 +54671,8 @@
3225522944,3225524223,US
3225524224,3225524479,VE
3225524480,3225524735,GB
+3225525248,3225526271,US
+3225526272,3225528319,BB
3225528320,3225530367,US
3225530368,3225530623,PR
3225530624,3225530879,US
@@ -59251,6 +54683,7 @@
3225540864,3225541119,AU
3225541120,3225541375,US
3225541376,3225544703,GB
+3225544704,3225546751,CA
3225546752,3225550847,US
3225550848,3225616383,DK
3225617152,3225617407,IE
@@ -59260,7 +54693,8 @@
3225618688,3225618943,CA
3225619200,3225619455,US
3225619456,3225619711,AU
-3225619712,3225622527,US
+3225619712,3225624575,US
+3225624576,3225625599,CA
3225626368,3225626623,GB
3225626880,3225627391,US
3225627392,3225627647,GB
@@ -59291,7 +54725,7 @@
3225643264,3225643775,CA
3225643776,3225650943,US
3225650944,3225651199,GB
-3225651200,3225657343,US
+3225651200,3225658367,US
3225658624,3225659135,US
3225659136,3225659391,DE
3225659904,3225660159,DE
@@ -59361,21 +54795,25 @@
3225745920,3225746687,NL
3225746688,3225746943,US
3225746944,3225747199,DE
-3225747456,3225763839,US
+3225747456,3225757695,US
+3225757696,3225758719,CA
+3225759232,3225759487,US
3225763840,3225764095,BE
+3225764864,3225765887,CA
3225766400,3225766655,CA
-3225767936,3225769983,US
+3225766912,3225769983,US
+3225772032,3225773055,US
3225773312,3225773567,CA
3225776128,3225776383,US
3225777152,3225777407,AU
3225777408,3225777663,US
-3225780224,3225784319,US
-3225784320,3225788415,CA
-3225796096,3225796351,US
-3225796608,3225804799,US
-3225805824,3225806847,US
+3225780224,3225780479,US
+3225781248,3225782271,CA
+3225782272,3225785343,US
+3225785344,3225788415,CA
+3225794560,3225806847,US
3225807360,3225807615,DE
-3225808896,3225812991,US
+3225807872,3225812991,US
3225812992,3225843711,FR
3225843712,3225847039,US
3225847040,3225847551,TR
@@ -59436,21 +54874,19 @@
3226075136,3226107903,US
3226110208,3226110719,US
3226110720,3226128639,AU
-3226128640,3226131455,US
-3226132480,3226140671,US
+3226128640,3226140671,US
3226140672,3226157567,CA
3226157568,3226157823,US
-3226157824,3226161151,CA
-3226161152,3226161407,US
-3226161408,3226189823,CA
-3226191360,3226191615,US
+3226157824,3226189823,CA
+3226189824,3226191871,US
3226191872,3226201087,CA
3226201344,3226201855,CA
3226201856,3226202111,US
3226202112,3226205439,CA
3226205440,3226205695,AE
3226205696,3226205951,CA
-3226206208,3226215423,GB
+3226206208,3226207231,US
+3226207744,3226215423,GB
3226215424,3226236927,US
3226237184,3226237439,US
3226237440,3226237695,AU
@@ -59503,17 +54939,19 @@
3226480384,3226481407,US
3226481408,3226481663,DE
3226481664,3226492927,US
-3226521344,3226521855,US
+3226501120,3226517503,US
+3226519552,3226521855,US
3226521856,3226522111,BR
3226522112,3226533887,US
3226535936,3226536191,US
+3226536960,3226537983,CA
3226546176,3226546431,US
+3226547200,3226548223,CA
3226548992,3226549247,BE
3226549248,3226550271,GB
-3226550272,3226554367,US
+3226550272,3226555391,US
3226555648,3226555903,CA
-3226556416,3226556671,US
-3226558720,3226558975,US
+3226556416,3226560511,US
3226561792,3226562047,NO
3226563072,3226563327,US
3226564864,3226565119,DE
@@ -59724,11 +55162,7 @@
3227027456,3227035135,US
3227035136,3227035391,EU
3227035392,3227035647,AP
-3227035648,3227035903,US
-3227035904,3227036159,IN
-3227036160,3227036671,US
-3227036672,3227036927,FR
-3227036928,3227038207,US
+3227035648,3227038207,US
3227039744,3227040255,US
3227040512,3227040767,AU
3227040768,3227041279,US
@@ -59745,9 +55179,7 @@
3227053824,3227054079,DE
3227054080,3227056639,US
3227056640,3227058175,PT
-3227058176,3227092735,FI
-3227092736,3227092991,GB
-3227092992,3227123711,FI
+3227058176,3227123711,FI
3227123712,3227204617,US
3227204618,3227204619,EU
3227204620,3227225087,US
@@ -59872,6 +55304,10 @@
3227448576,3227448831,US
3227448832,3227449087,ZA
3227449088,3227450367,US
+3227451392,3227451423,US
+3227451424,3227455487,CA
+3227455488,3227456255,US
+3227456256,3227467775,CA
3227468032,3227468287,US
3227484160,3227516927,CA
3227516928,3227568127,ZA
@@ -59908,9 +55344,9 @@
3227804928,3227805183,CA
3227805184,3227805695,FI
3227805696,3227805951,US
-3227805952,3227806216,FI
-3227806217,3227806217,US
-3227806218,3227806463,FI
+3227805952,3227806247,FI
+3227806248,3227806248,US
+3227806249,3227806463,FI
3227806464,3227806719,GB
3227806720,3227809023,FI
3227809024,3227809279,IN
@@ -59966,7 +55402,9 @@
3227893760,3227894015,FI
3227894016,3227895039,US
3227895040,3227895551,DE
-3227895552,3227909631,US
+3227895552,3227909119,US
+3227909120,3227909375,BE
+3227909376,3227909631,US
3227909632,3227909887,AU
3227910400,3227910655,AT
3227910656,3227911679,US
@@ -59989,9 +55427,7 @@
3227934464,3227934719,CH
3227934720,3227947519,US
3227947520,3227955711,DE
-3227955712,3227962367,US
-3227962368,3227962623,CN
-3227962624,3227964927,US
+3227955712,3227964927,US
3227964928,3227965183,GB
3227965184,3227967487,US
3227967488,3227967743,FR
@@ -60252,7 +55688,7 @@
3229024256,3229057023,US
3229058816,3229059071,US
3229061120,3229065215,CA
-3229089792,3229092095,US
+3229073408,3229092095,US
3229092096,3229093887,AU
3229093888,3229104895,US
3229104896,3229105151,ES
@@ -60525,7 +55961,7 @@
3230168832,3230177791,US
3230177792,3230178303,GB
3230178304,3230178559,CH
-3230203904,3230210047,US
+3230187520,3230210047,US
3230210048,3230210303,CA
3230210304,3230211839,US
3230211840,3230212095,CN
@@ -60618,9 +56054,7 @@
3230333184,3230333695,US
3230333696,3230333951,NZ
3230333952,3230334975,US
-3230334976,3230353151,CA
-3230353152,3230353407,US
-3230353408,3230354943,CA
+3230334976,3230354943,CA
3230354944,3230355199,FR
3230355200,3230365183,CA
3230365184,3230365439,US
@@ -60629,11 +56063,7 @@
3230370304,3230370559,CA
3230370816,3230400511,CA
3230681088,3230683135,FR
-3230789632,3230794751,US
-3230794752,3230795007,JP
-3230795008,3230796543,US
-3230796544,3230796799,BE
-3230796800,3230823679,US
+3230789632,3230823679,US
3230823680,3230823935,DK
3230824192,3230824447,FR
3230824448,3230825215,US
@@ -60818,10 +56248,7 @@
3231049984,3231050239,US
3231050496,3231051263,US
3231051264,3231051519,GB
-3231051776,3231056895,US
-3231056896,3231057407,CA
-3231057408,3231057663,US
-3231057664,3231057919,CA
+3231051776,3231057919,US
3231057920,3231058175,EU
3231058176,3231060991,US
3231060992,3231061247,EU
@@ -61022,9 +56449,7 @@
3231416320,3231424511,US
3231449088,3231475199,US
3231475200,3231475455,PL
-3231475456,3231477759,US
-3231477760,3231478015,CA
-3231478016,3231482879,US
+3231475456,3231482879,US
3231482880,3231483135,BE
3231483136,3231484927,US
3231484928,3231490047,JP
@@ -61170,9 +56595,7 @@
3231739136,3231739391,GB
3231739392,3231739647,PL
3231739648,3231739903,BR
-3231739904,3231740287,US
-3231740288,3231740319,GB
-3231740320,3231742719,US
+3231739904,3231742719,US
3231742720,3231742975,FR
3231742976,3231743487,US
3231743488,3231743743,NO
@@ -61281,13 +56704,12 @@
3231973376,3232038911,AT
3232038912,3232052991,SE
3232052992,3232053247,US
-3232053248,3232071167,SE
-3232071168,3232071423,ZA
-3232071424,3232079871,SE
+3232053248,3232079871,SE
3232079872,3232080895,GB
-3232080896,3232093675,SE
+3232080896,3232093439,SE
+3232093440,3232093675,GB
3232093676,3232093676,EU
-3232093677,3232093695,SE
+3232093677,3232093695,GB
3232093696,3232093951,AP
3232093952,3232102144,SE
3232102145,3232102145,EU
@@ -61323,10 +56745,9 @@
3232309248,3232313343,SG
3232313344,3232325631,US
3232366592,3232432127,US
-3232432384,3232432639,EU
-3232432640,3232433151,DE
+3232432128,3232433151,EU
3232433152,3232433407,FR
-3232433408,3232433663,IT
+3232433408,3232433663,EU
3232433920,3232436735,US
3232448512,3232464895,US
3232464896,3232483327,GB
@@ -61667,9 +57088,9 @@
3233914880,3233915135,AP
3233915136,3233915903,US
3233915904,3233916159,AP
-3233916160,3233926143,US
-3233926144,3233926399,MX
-3233926400,3233936639,US
+3233916160,3233926294,US
+3233926295,3233926295,MX
+3233926296,3233936639,US
3233936640,3233936895,EU
3233936896,3233939455,US
3233939456,3234004991,FI
@@ -61764,9 +57185,7 @@
3234400680,3234400687,NA
3234400688,3234401511,US
3234401512,3234401519,NA
-3234401520,3234543871,US
-3234543872,3234544127,IN
-3234544128,3234549759,US
+3234401520,3234549759,US
3234549760,3234550015,RU
3234553856,3234556415,US
3234556416,3234556927,CA
@@ -61888,11 +57307,11 @@
3234988032,3234992127,CA
3234992128,3235004415,US
3235004416,3235020799,CA
-3235053568,3235086335,US
-3235119104,3235184639,US
+3235020800,3235184639,US
3235184640,3235184895,CA
3235184896,3235275007,US
3235278848,3235282943,BB
+3235282944,3235315711,CA
3235315712,3235389439,US
3235389440,3235389951,VE
3235389952,3235417215,US
@@ -61903,11 +57322,10 @@
3235643392,3235774463,US
3235774464,3235778559,CA
3235778560,3235807231,US
+3235807232,3235839999,CA
3235840000,3235856383,US
3235856384,3235872767,BR
-3235872768,3235875839,US
-3235875840,3235876095,IN
-3235876096,3235876607,US
+3235872768,3235876607,US
3235876608,3235876863,AP
3235876864,3235880447,US
3235880448,3235880703,GB
@@ -62178,13 +57596,11 @@
3237478400,3237511167,LK
3237511168,3237548031,US
3237548032,3237552127,KR
-3237552128,3237553151,US
-3237553152,3237553407,GB
-3237553408,3237553919,US
-3237553920,3237553922,FR
+3237552128,3237553154,US
+3237553155,3237553155,GB
+3237553156,3237553922,US
3237553923,3237553923,EU
-3237553924,3237554175,FR
-3237554176,3237554434,US
+3237553924,3237554434,US
3237554435,3237554435,AP
3237554436,3237557247,US
3237609472,3237613567,US
@@ -62770,8 +58186,7 @@
3239583232,3239583487,UA
3239583488,3239583743,RO
3239583744,3239591935,DE
-3239591936,3239592191,FI
-3239592192,3239592447,AU
+3239591936,3239592447,FI
3239592448,3239592703,US
3239592704,3239592959,FI
3239592960,3239593215,EU
@@ -62790,7 +58205,7 @@
3239635968,3239636991,DE
3239636992,3239638015,BG
3239638016,3239639039,PL
-3239639040,3239640063,CZ
+3239639040,3239640063,SI
3239640064,3239641087,DE
3239641088,3239643135,PL
3239643136,3239645183,RU
@@ -62826,7 +58241,8 @@
3239690496,3239690751,PL
3239691008,3239691263,FR
3239691264,3239691519,IT
-3239691520,3239692031,FR
+3239691520,3239691775,FR
+3239691776,3239692031,EU
3239692032,3239692287,AT
3239692288,3239697407,DE
3239697408,3239697663,HR
@@ -63447,9 +58863,11 @@
3240420096,3240420351,DE
3240420352,3240420607,RO
3240420608,3240420863,NL
-3240420864,3240436991,GB
-3240436992,3240437759,IE
-3240437760,3240460287,GB
+3240420864,3240436735,GB
+3240436736,3240437759,IE
+3240437760,3240454911,GB
+3240454912,3240455167,IN
+3240455168,3240460287,GB
3240460288,3240461055,IL
3240461056,3240461567,DE
3240461568,3240461823,UA
@@ -63541,7 +58959,6 @@
3240700928,3240701183,PL
3240701184,3240701439,LV
3240701440,3240701695,ES
-3240701696,3240701951,FR
3240701952,3240702975,UA
3240702976,3240703999,DE
3240704000,3240705023,GR
@@ -63671,11 +59088,9 @@
3240812544,3240813567,IT
3240813568,3240814591,PL
3240814592,3240818687,IT
-3240818688,3240819711,NL
-3240819712,3240819715,CH
+3240818688,3240819715,NL
3240819716,3240819716,EU
-3240819717,3240819727,CH
-3240819728,3240820735,NL
+3240819717,3240820735,NL
3240820736,3240820799,FR
3240820800,3240820831,CY
3240820832,3240820863,GB
@@ -63927,7 +59342,9 @@
3241856000,3241857279,NL
3241857280,3241857535,CH
3241857536,3241859071,AT
-3241859072,3241860863,US
+3241859072,3241859651,US
+3241859652,3241859652,MY
+3241859653,3241860863,US
3241860864,3241861119,FR
3241861120,3241863167,BE
3241863168,3241863423,PL
@@ -63955,10 +59372,7 @@
3241869312,3241934847,PL
3241934848,3242196991,GB
3242196992,3242393599,FI
-3242393600,3242393855,FR
-3242393856,3242399743,NL
-3242399744,3242399999,GB
-3242400000,3242419967,NL
+3242393600,3242419967,NL
3242419968,3242420223,EU
3242420224,3242426113,NL
3242426114,3242426114,EU
@@ -64117,9 +59531,7 @@
3244143616,3244144639,FR
3244144640,3244146687,UA
3244146688,3244147711,RU
-3244147712,3244148223,GB
-3244148224,3244148479,JO
-3244148480,3244149759,GB
+3244147712,3244149759,GB
3244149760,3244150783,PL
3244150784,3244151807,CH
3244151808,3244152831,KZ
@@ -64133,9 +59545,7 @@
3244161024,3244163071,NO
3244163072,3244228607,FI
3244228608,3244261375,TN
-3244261376,3244267807,IE
-3244267808,3244268031,GB
-3244268032,3244277759,IE
+3244261376,3244277759,IE
3244277760,3244294143,SI
3244294144,3244343807,DE
3244343808,3244344063,EU
@@ -64342,7 +59752,7 @@
3244873216,3244873471,SE
3244873472,3244873727,EU
3244873728,3244873983,DE
-3244873984,3244874239,SE
+3244873984,3244874239,FI
3244874240,3244874495,ES
3244874496,3244874751,FR
3244874752,3244875007,DE
@@ -64724,10 +60134,10 @@
3245079552,3245080575,CZ
3245080576,3245082623,SE
3245082624,3245084927,DE
-3245084928,3245085183,FR
+3245084928,3245085183,BE
3245085184,3245085439,GB
3245085440,3245085695,DE
-3245085696,3245086207,FR
+3245085952,3245086207,FR
3245086208,3245086463,AT
3245086464,3245086719,GH
3245086720,3245086975,BG
@@ -64987,7 +60397,7 @@
3245243392,3245244415,UA
3245244416,3245244671,ES
3245244672,3245244927,AT
-3245244928,3245245183,US
+3245244928,3245245183,BE
3245245184,3245245439,CH
3245245440,3245245695,BG
3245245696,3245245951,DE
@@ -65153,16 +60563,16 @@
3245339648,3245340671,LV
3245340672,3245341695,UA
3245341696,3245342719,RU
-3245342720,3245867007,GB
+3245342720,3245442685,GB
+3245442686,3245442686,FR
+3245442687,3245867007,GB
3245867008,3245932543,IE
3245932544,3245998079,BE
3245998080,3246129151,GB
3246129152,3246260223,RU
3246260224,3246325759,PT
-3246325760,3246377983,EU
-3246377984,3246378239,ES
-3246378240,3246378495,EU
-3246378496,3246379007,ES
+3246325760,3246378751,EU
+3246378752,3246379007,ES
3246379008,3246381567,EU
3246381568,3246381823,ES
3246381824,3246391295,EU
@@ -65201,7 +60611,7 @@
3247066880,3247067135,RU
3247067136,3247067647,DE
3247067648,3247067903,RU
-3247067904,3247068159,FR
+3247067904,3247068159,CH
3247068160,3247068415,UA
3247068416,3247068671,RO
3247068672,3247068927,GB
@@ -65256,8 +60666,7 @@
3247091712,3247092735,RU
3247092736,3247093759,DE
3247093760,3247094783,UA
-3247094784,3247095551,LV
-3247095552,3247095807,LT
+3247094784,3247095807,LV
3247095808,3247097855,RO
3247097856,3247098879,FI
3247098880,3247099903,NL
@@ -65273,9 +60682,13 @@
3247111168,3247112191,DE
3247112192,3247177727,FR
3247177728,3247243263,TR
-3247243264,3247273471,DE
-3247273472,3247273727,NL
-3247273728,3247286783,DE
+3247243264,3247266303,DE
+3247266304,3247266559,NL
+3247266560,3247277055,DE
+3247277056,3247277311,NL
+3247277312,3247280639,DE
+3247280640,3247280895,NL
+3247280896,3247286783,DE
3247286784,3247287039,NL
3247287040,3247299363,DE
3247299364,3247299364,EU
@@ -65396,12 +60809,16 @@
3247794439,3247794439,EU
3247794440,3247800319,FR
3247800320,3247816703,DK
-3247816704,3247833087,EU
+3247816704,3247831551,EU
+3247831552,3247831807,BE
+3247831808,3247833087,EU
3247833088,3247833599,RU
3247833600,3247834111,PL
3247834112,3247834623,DE
3247834624,3247835135,UA
-3247835136,3247836159,EU
+3247835136,3247835391,EU
+3247835392,3247835647,GB
+3247835648,3247836159,EU
3247836160,3247837183,CZ
3247837184,3247838207,ES
3247838208,3247838463,RU
@@ -65499,19 +60916,9 @@
3247963136,3247964159,UA
3247964160,3248095231,ES
3248095232,3248160767,AT
-3248160768,3248220159,DE
-3248220160,3248220415,US
-3248220416,3248226303,DE
+3248160768,3248226303,DE
3248226304,3248357375,NO
-3248357376,3248416351,DE
-3248416352,3248416367,CH
-3248416368,3248464895,DE
-3248464896,3248465407,US
-3248465408,3248481791,DE
-3248481792,3248482047,US
-3248482048,3248482175,DE
-3248482176,3248482303,US
-3248482304,3248488447,DE
+3248357376,3248488447,DE
3248488448,3248488703,FR
3248488704,3248491519,NO
3248491520,3248492031,RU
@@ -65587,9 +60994,7 @@
3248790784,3248791039,PL
3248791040,3248791295,BE
3248791296,3248791551,DE
-3248791552,3248792063,EU
-3248792064,3248792319,GB
-3248792320,3248799743,EU
+3248791552,3248799743,EU
3248799744,3248800255,NL
3248800256,3248800767,RU
3248800768,3248801279,FR
@@ -65634,8 +61039,7 @@
3249078784,3249079295,CH
3249079296,3249079807,RU
3249079808,3249080831,RO
-3249080832,3249081087,GB
-3249081088,3249081343,DE
+3249080832,3249081343,DE
3249081344,3249081855,LV
3249081856,3249082367,GB
3249082368,3249082879,HU
@@ -65913,8 +61317,7 @@
3250331648,3250335743,MT
3250335744,3250339839,KW
3250339840,3250348031,JO
-3250348032,3250348287,US
-3250348288,3250356223,BH
+3250348032,3250356223,BH
3250356224,3250357247,LB
3250357248,3250357823,GB
3250357824,3250357855,FR
@@ -66052,7 +61455,6 @@
3250695168,3250695679,IT
3250695680,3250697471,DE
3250697472,3250697727,PL
-3250697728,3250697983,BG
3250697984,3250698239,IT
3250698240,3250698751,GR
3250698752,3250699263,RU
@@ -66230,7 +61632,7 @@
3251157248,3251157503,BE
3251157504,3251158015,PL
3251158016,3251158271,TR
-3251158272,3251158527,KZ
+3251158272,3251158527,RU
3251158528,3251158783,UA
3251158784,3251159295,GB
3251159296,3251159551,DE
@@ -66448,9 +61850,7 @@
3251257856,3251258111,BE
3251258112,3251259903,EU
3251259904,3251260159,FR
-3251260160,3251260927,EU
-3251260928,3251261183,FR
-3251261184,3251261439,EU
+3251260160,3251261439,EU
3251261440,3251264255,CH
3251264256,3251265535,FR
3251265536,3251267839,NL
@@ -66519,7 +61919,8 @@
3251347456,3251355647,DE
3251355648,3251356159,GB
3251356160,3251356671,AT
-3251356672,3251357183,EE
+3251356672,3251356927,LV
+3251356928,3251357183,EE
3251357184,3251357695,BG
3251357696,3251358207,ES
3251358208,3251358719,RU
@@ -66542,9 +61943,9 @@
3251372032,3251634175,IT
3251634176,3251896319,FI
3251896320,3252158463,NO
-3252158464,3252197119,SE
-3252197120,3252197375,NO
-3252197376,3252289535,SE
+3252158464,3252204287,SE
+3252204288,3252204543,NO
+3252204544,3252289535,SE
3252289536,3252289791,BG
3252289792,3252291327,GR
3252291328,3252291583,SK
@@ -66638,31 +62039,15 @@
3252387072,3252387327,RU
3252387328,3252387583,PL
3252387584,3252387839,RU
-3252387840,3252405247,LT
-3252405248,3252406271,NO
-3252406272,3252415487,LT
+3252387840,3252415487,LT
3252415488,3252415743,US
-3252415744,3252417279,LT
-3252417280,3252417327,US
-3252417328,3252417343,AF
-3252417344,3252417439,US
-3252417440,3252417455,AF
-3252417456,3252417471,US
-3252417472,3252417479,AF
-3252417480,3252417535,US
-3252417536,3252433663,LT
-3252433664,3252433919,SO
-3252433920,3252435199,LT
-3252435200,3252435359,ZA
-3252435360,3252435375,BF
-3252435376,3252435455,ZA
-3252435456,3252449791,LT
+3252415744,3252432127,LT
+3252432128,3252432383,LR
+3252432384,3252449791,LT
3252449792,3252450047,DK
3252450048,3252455679,LT
-3252455680,3252455807,BI
-3252455808,3252456959,LT
-3252456960,3252457471,NG
-3252457472,3252486143,LT
+3252455680,3252455935,BI
+3252455936,3252486143,LT
3252486144,3252490239,BE
3252490240,3252496127,SE
3252496128,3252496383,AU
@@ -66737,9 +62122,7 @@
3252588032,3252600319,CH
3252600320,3252600575,NL
3252600576,3252600831,RU
-3252600832,3252613119,CH
-3252613120,3252613375,DE
-3252613376,3252616703,CH
+3252600832,3252616703,CH
3252616704,3252616959,ES
3252616960,3252617215,CH
3252617216,3252617471,PL
@@ -66785,7 +62168,6 @@
3252909568,3252909823,GB
3252909824,3252910335,UA
3252910336,3252910591,NL
-3252910592,3252910847,CH
3252910848,3252911103,PL
3252911104,3252911359,DE
3252911360,3252911615,RU
@@ -66815,7 +62197,7 @@
3252937728,3252938239,FR
3252938240,3252938751,UA
3252938752,3252939263,RU
-3252939264,3252939775,EU
+3252939264,3252939775,DE
3252939776,3252940287,RO
3252940288,3252940799,PT
3252940800,3252941311,RU
@@ -66857,13 +62239,9 @@
3253207040,3253338111,RU
3253338112,3253401343,SE
3253401344,3253401599,EU
-3253401600,3253405439,SE
-3253405440,3253405563,DK
+3253401600,3253405563,SE
3253405564,3253405564,EU
-3253405565,3253405695,DK
-3253405696,3253430783,SE
-3253430784,3253431039,BE
-3253431040,3253454335,SE
+3253405565,3253454335,SE
3253454336,3253454591,EU
3253454592,3253469183,SE
3253469184,3253534719,PT
@@ -66930,8 +62308,7 @@
3253665792,3253666815,CZ
3253666816,3253667839,EU
3253667840,3253668863,GB
-3253668864,3253669119,BE
-3253669120,3253669887,ES
+3253668864,3253669887,ES
3253669888,3253670911,DE
3253670912,3253671935,CH
3253671936,3253672959,UA
@@ -66970,7 +62347,6 @@
3253703680,3253704191,HU
3253704192,3253704703,RU
3253704704,3253705215,UA
-3253705216,3253705727,NO
3253705728,3253706239,DE
3253706240,3253706751,RO
3253707264,3253708287,DE
@@ -67131,32 +62507,32 @@
3254067712,3254067967,CZ
3254067968,3254124543,BE
3254124544,3254255615,CH
-3254255616,3254256127,FR
+3254255616,3254255871,FR
+3254255872,3254256127,RE
3254256128,3254256639,GP
-3254256640,3254266367,FR
-3254266368,3254266623,RE
-3254266624,3254274047,FR
-3254274048,3254274303,GF
-3254274304,3254275327,FR
+3254256640,3254261247,FR
+3254261248,3254261503,YT
+3254261504,3254261759,FR
+3254261760,3254262015,YT
+3254262016,3254275327,FR
3254275328,3254275583,MQ
3254275584,3254276607,FR
-3254276608,3254276863,YT
-3254276864,3254277887,FR
-3254277888,3254278143,YT
+3254276608,3254278143,YT
3254278144,3254291711,FR
3254291712,3254291967,RE
-3254291968,3254488831,FR
-3254488832,3254489087,US
-3254489088,3254493951,FR
-3254493952,3254494207,GF
-3254494208,3254509157,FR
-3254509158,3254509159,GQ
-3254509160,3254521855,FR
+3254291968,3254493695,FR
+3254493696,3254493951,GP
+3254493952,3254494207,MQ
+3254494208,3254508415,FR
+3254508416,3254508543,GQ
+3254508544,3254521855,FR
3254521856,3254522111,GB
3254522112,3254607871,FR
3254607872,3254608383,RE
3254608384,3254608639,FR
-3254608640,3254610687,RE
+3254608640,3254610175,RE
+3254610176,3254610431,FR
+3254610432,3254610687,RE
3254610688,3254611455,FR
3254611456,3254611456,YT
3254611457,3254611711,FR
@@ -67206,7 +62582,6 @@
3254709760,3254710271,PL
3254710272,3254710783,IT
3254710784,3254711295,RO
-3254711296,3254711807,FR
3254711808,3254712319,PL
3254712320,3254712831,RU
3254712832,3254713343,KZ
@@ -67463,7 +62838,9 @@
3255172352,3255172607,DE
3255172608,3255173119,FR
3255173120,3255173631,SH
-3255173632,3255197695,EU
+3255173632,3255174143,EU
+3255174144,3255174399,GB
+3255174400,3255197695,EU
3255197696,3255205887,GB
3255205888,3255214079,FR
3255214080,3255222271,CH
@@ -67502,17 +62879,11 @@
3255237888,3255238143,ES
3255238144,3255238399,GB
3255238400,3255238655,QA
-3255238656,3255254783,BE
-3255254784,3255255039,LU
-3255255040,3255274015,BE
+3255238656,3255274015,BE
3255274016,3255274047,US
3255274048,3255280018,BE
3255280019,3255280019,EU
-3255280020,3255283711,BE
-3255283712,3255283967,LU
-3255283968,3255291135,BE
-3255291136,3255291391,LU
-3255291392,3255304191,BE
+3255280020,3255304191,BE
3255304192,3255304447,DE
3255304448,3255305215,LV
3255305216,3255305471,BG
@@ -67638,7 +63009,6 @@
3255418880,3255422975,DE
3255422976,3255423999,RO
3255424000,3255425023,LV
-3255425024,3255426047,RO
3255426048,3255426559,IT
3255426560,3255426815,FR
3255426816,3255427071,PL
@@ -67671,9 +63041,9 @@
3255558400,3255558655,UA
3255558656,3255564031,CH
3255564032,3255564287,RU
-3255564288,3255565823,CH
-3255565824,3255566079,PL
-3255566080,3255566335,CH
+3255564288,3255565955,CH
+3255565956,3255565956,EU
+3255565957,3255566335,CH
3255566336,3255574527,SE
3255574528,3255578623,CZ
3255578624,3255582719,SE
@@ -67690,7 +63060,9 @@
3255743232,3255743487,IT
3255743488,3255743743,SE
3255743744,3255743999,US
-3255744000,3255762943,SE
+3255744000,3255745535,SE
+3255745536,3255745791,DK
+3255745792,3255762943,SE
3255762944,3255791615,DE
3255791616,3255792639,UA
3255792640,3255793663,RU
@@ -67750,13 +63122,9 @@
3256416768,3256417279,GB
3256417280,3256417791,NO
3256417792,3256418303,GB
-3256418304,3256442143,DE
-3256442144,3256442151,US
-3256442152,3256444415,DE
+3256418304,3256444415,DE
3256444416,3256444671,EU
-3256444672,3256461311,DE
-3256461312,3256461567,FR
-3256461568,3256483839,DE
+3256444672,3256483839,DE
3256483840,3256489471,NL
3256489472,3256489983,GR
3256489984,3256490239,BE
@@ -67828,14 +63196,18 @@
3256693760,3256694783,IT
3256694784,3256695807,CH
3256695808,3256696831,UA
-3256696832,3256705023,EU
+3256696832,3256698367,EU
+3256698368,3256698623,NL
+3256698624,3256698879,GB
+3256698880,3256701439,EU
+3256701440,3256701695,GB
+3256701696,3256705023,EU
3256705024,3256705279,IE
-3256705280,3256705535,BE
-3256705536,3256705791,EU
+3256705280,3256705791,BE
3256705792,3256706047,AT
-3256706048,3256710655,EU
-3256710656,3256710911,SE
-3256710912,3256711167,EU
+3256706048,3256709631,EU
+3256709632,3256709887,AT
+3256709888,3256711167,EU
3256711168,3256711423,DE
3256711424,3256713215,EU
3256713216,3256727551,PL
@@ -67869,7 +63241,6 @@
3256790016,3256790271,UA
3256790272,3256790783,DE
3256790784,3256791039,NL
-3256791040,3256791295,CH
3256791296,3256791551,RO
3256791552,3256791807,GR
3256791808,3256792063,PL
@@ -67941,7 +63312,6 @@
3256963328,3256963839,RU
3256963840,3256964095,PL
3256964096,3256965119,RU
-3256965120,3256966143,RO
3256966144,3256967167,RU
3256967168,3256967423,NL
3256967424,3256967679,RU
@@ -68008,9 +63378,7 @@
3257294848,3257303039,HU
3257303040,3257311231,PT
3257311232,3257335807,CH
-3257335808,3257336063,DE
-3257336064,3257336319,GB
-3257336320,3257357311,DE
+3257335808,3257357311,DE
3257357312,3257357567,PT
3257357568,3257357823,SI
3257357824,3257371903,DE
@@ -68101,17 +63469,27 @@
3257588736,3257589759,NL
3257589760,3257663487,GB
3257663488,3257729023,UA
-3257729024,3257769727,DE
+3257729024,3257731071,DE
+3257731072,3257731327,NL
+3257731328,3257750783,DE
+3257750784,3257751039,NL
+3257751040,3257762303,DE
+3257762304,3257762559,NL
+3257762560,3257769727,DE
3257769728,3257769983,NL
3257769984,3257794559,DE
3257794560,3257835519,GB
-3257835520,3257836031,IE
-3257836032,3257837311,GB
-3257837312,3257843711,IE
+3257835520,3257837311,IE
+3257837312,3257837567,GB
+3257837568,3257843711,IE
3257843712,3257845759,GB
-3257845760,3257846271,IE
-3257846272,3257851903,GB
-3257851904,3257860095,IE
+3257845760,3257847807,IE
+3257847808,3257851903,GB
+3257851904,3257854207,IE
+3257854208,3257854335,GB
+3257854336,3257854463,IE
+3257854464,3257854719,GB
+3257854720,3257860095,IE
3257860096,3257925631,SE
3257925632,3257925887,AT
3257925888,3257926143,SE
@@ -68332,9 +63710,7 @@
3258364928,3258365951,RS
3258365952,3258366975,UA
3258366976,3258367999,PL
-3258368000,3258379263,KW
-3258379264,3258379519,US
-3258379520,3258384383,KW
+3258368000,3258384383,KW
3258384384,3258427647,DE
3258427648,3258427903,RO
3258427904,3258449919,DE
@@ -68442,7 +63818,9 @@
3259039744,3259105279,PT
3259105280,3259170815,GB
3259170816,3259236351,RU
-3259236352,3259250722,SE
+3259236352,3259236863,SE
+3259236864,3259237119,CH
+3259237120,3259250722,SE
3259250723,3259250723,EU
3259250724,3259252479,SE
3259252480,3259252735,EU
@@ -68455,9 +63833,7 @@
3259310080,3259318271,EU
3259318272,3259334655,GB
3259334656,3259338751,DE
-3259338752,3259344383,EU
-3259344384,3259344639,CH
-3259344640,3259351039,EU
+3259338752,3259351039,EU
3259351040,3259351551,IT
3259351552,3259352063,FR
3259352064,3259352575,CH
@@ -68476,11 +63852,7 @@
3259435520,3259454719,SE
3259454720,3259454975,EU
3259454976,3259498495,SE
-3259498496,3259516519,GB
-3259516520,3259516527,US
-3259516528,3259590399,GB
-3259590400,3259590655,DE
-3259590656,3259760639,GB
+3259498496,3259760639,GB
3259760640,3259814399,DE
3259814400,3259814655,AT
3259814656,3259821823,DE
@@ -68492,7 +63864,9 @@
3259824128,3259891711,DE
3259891712,3259893503,BE
3259893504,3259893759,EU
-3259893760,3259957247,BE
+3259893760,3259900866,BE
+3259900867,3259900867,EU
+3259900868,3259957247,BE
3259957248,3259958271,DE
3259958272,3259959295,RU
3259959296,3259960319,UA
@@ -68622,21 +63996,15 @@
3261213203,3261213203,EU
3261213204,3261213439,FR
3261213440,3261213695,AF
-3261213696,3261239039,FR
-3261239040,3261239237,GB
+3261213696,3261239237,FR
3261239238,3261239238,EU
-3261239239,3261239295,GB
-3261239296,3261267967,FR
-3261267968,3261280511,DE
-3261280512,3261280512,FR
+3261239239,3261267967,FR
+3261267968,3261280512,DE
3261280513,3261280513,EU
-3261280514,3261280767,FR
-3261280768,3261297663,DE
+3261280514,3261297663,DE
3261297664,3261297919,RU
3261297920,3261298175,PL
-3261298176,3261323263,DE
-3261323264,3261323519,RU
-3261323520,3261333503,DE
+3261298176,3261333503,DE
3261333504,3261399039,FI
3261399040,3261472767,GB
3261472768,3261530111,RO
@@ -68658,12 +64026,9 @@
3261690353,3261690354,SG
3261690355,3261690355,EU
3261690356,3261691903,GB
-3261691904,3261692159,NL
-3261692160,3261692997,EU
+3261691904,3261692997,EU
3261692998,3261692998,US
-3261692999,3261693439,EU
-3261693440,3261693695,SG
-3261693696,3261693951,EU
+3261692999,3261693951,EU
3261693952,3261694463,NL
3261694464,3261694975,RU
3261694976,3261695487,PL
@@ -68714,11 +64079,9 @@
3261797632,3261797887,RU
3261797888,3261798143,TR
3261798144,3261798399,RU
-3261798400,3261798655,DE
-3261798656,3261812735,AT
+3261798400,3261812735,AT
3261812736,3261812991,RU
-3261812992,3261816319,AT
-3261816320,3261816575,GB
+3261812992,3261816575,AT
3261816576,3261816831,DE
3261816832,3261820927,AT
3261820928,3261821183,RO
@@ -68835,8 +64198,9 @@
3262053632,3262053887,RU
3262053888,3262054143,UA
3262054144,3262054399,RU
-3262054400,3262119935,FI
-3262119936,3262124031,AX
+3262054400,3262121727,FI
+3262121728,3262121983,AX
+3262121984,3262124031,FI
3262124032,3262128127,DE
3262128128,3262136319,GB
3262136320,3262152703,EU
@@ -68957,59 +64321,59 @@
3262611456,3262627839,GB
3262627840,3262636031,IT
3262636032,3262644223,BE
-3262644224,3262645679,DE
-3262645680,3262645695,NL
-3262645696,3262648319,DE
+3262644224,3262645503,DE
+3262645504,3262645759,NL
+3262645760,3262648319,DE
3262648320,3262648575,EU
3262648576,3262651647,DE
3262651648,3262651903,NL
3262651904,3262655999,DE
3262656000,3262656511,NL
-3262656512,3262665727,DE
+3262656512,3262662911,DE
+3262662912,3262663167,NL
+3262663168,3262665727,DE
3262665728,3262665983,EU
3262665984,3262666751,DE
3262666752,3262667007,EU
-3262667008,3262679039,DE
-3262679040,3262679295,NL
-3262679296,3262728959,DE
+3262667008,3262728959,DE
3262728960,3262729215,NL
-3262729216,3262734591,DE
-3262734592,3262734847,NL
-3262734848,3262757631,DE
-3262757632,3262757887,NL
-3262757888,3262765823,DE
+3262729216,3262739199,DE
+3262739200,3262739455,NL
+3262739456,3262765823,DE
3262765824,3262766079,NL
3262766080,3262790655,DE
3262790656,3262790911,NL
-3262790912,3262814975,DE
-3262814976,3262815231,NL
-3262815232,3262842879,DE
+3262790912,3262804735,DE
+3262804736,3262804991,NL
+3262804992,3262812159,DE
+3262812160,3262812415,NL
+3262812416,3262812671,DE
+3262812672,3262812927,NL
+3262812928,3262842879,DE
3262842880,3262843135,NL
-3262843136,3262857727,DE
-3262857728,3262858239,NL
+3262843136,3262846975,DE
+3262846976,3262847231,NL
+3262847232,3262857983,DE
+3262857984,3262858239,NL
3262858240,3262860031,DE
3262860032,3262860287,NL
-3262860288,3262863871,DE
+3262860288,3262863103,DE
+3262863104,3262863359,NL
+3262863360,3262863871,DE
3262863872,3262864127,NL
3262864128,3262873599,DE
3262873600,3262873855,NL
3262873856,3262878207,DE
3262878208,3262878463,NL
-3262878464,3262881535,DE
-3262881536,3262881791,NL
-3262881792,3262888191,DE
+3262878464,3262888191,DE
3262888192,3262888447,NL
-3262888448,3262891007,DE
-3262891008,3262891263,NL
-3262891264,3262897663,DE
+3262888448,3262891079,DE
+3262891080,3262891087,NL
+3262891088,3262897663,DE
3262897664,3262897919,NL
-3262897920,3262904079,DE
-3262904080,3262904087,NL
-3262904088,3262904111,DE
-3262904112,3262904119,NL
-3262904120,3262904263,DE
-3262904264,3262904271,NL
-3262904272,3262906367,DE
+3262897920,3262904063,DE
+3262904064,3262904319,NL
+3262904320,3262906367,DE
3262906368,3262964991,CH
3262964992,3262965247,DE
3262965248,3262971903,CH
@@ -69117,7 +64481,9 @@
3263138552,3263138815,AT
3263138816,3263168511,DE
3263168512,3263430655,GB
-3263430656,3263478015,SE
+3263430656,3263458303,SE
+3263458304,3263458559,DE
+3263458560,3263478015,SE
3263478016,3263478271,AU
3263478272,3263496191,SE
3263496192,3263499775,EU
@@ -69144,9 +64510,7 @@
3263878146,3263878146,US
3263878147,3263886079,DE
3263886080,3263886335,SG
-3263886336,3263915007,DE
-3263915008,3263915263,US
-3263915264,3263954943,DE
+3263886336,3263954943,DE
3263954944,3263979519,ES
3263979520,3263987711,DE
3263987712,3264004095,ES
@@ -69369,11 +64733,15 @@
3264607488,3264610303,DE
3264610304,3264612351,GB
3264612352,3264612607,FR
-3264612608,3264613887,GB
-3264613888,3264614143,NL
-3264614144,3264614911,GB
+3264612608,3264613119,GB
+3264613120,3264613375,FR
+3264613376,3264613904,GB
+3264613905,3264613905,NL
+3264613906,3264614911,GB
3264614912,3264615167,SE
-3264615168,3264624639,GB
+3264615168,3264615679,GB
+3264615680,3264615935,CH
+3264615936,3264624639,GB
3264624640,3264624671,US
3264624672,3264626687,GB
3264626688,3264627711,EE
@@ -69465,10 +64833,10 @@
3264806912,3264815103,GB
3264815104,3264825343,SE
3264825344,3264825599,NO
-3264825856,3264826879,GB
+3264825856,3264826111,NL
+3264826112,3264826879,GB
3264826880,3264827135,NL
3264827136,3264827391,LV
-3264827392,3264827647,FR
3264827648,3264828159,GR
3264828160,3264828415,EU
3264828416,3264828671,SE
@@ -69555,11 +64923,7 @@
3264897024,3264905215,GB
3264905216,3264913407,CY
3264913408,3264921599,GB
-3264921600,3264926343,LU
-3264926344,3264926351,FR
-3264926352,3264929279,LU
-3264929280,3264929535,FR
-3264929536,3264929791,LU
+3264921600,3264929791,LU
3264929792,3264937983,SK
3264937984,3265003519,GB
3265003520,3265015807,DE
@@ -69768,8 +65132,8 @@
3266781184,3266789375,PL
3266789376,3266797567,SM
3266797568,3266797823,GB
-3266797824,3266797871,ES
-3266797872,3266805759,GB
+3266797824,3266797951,ES
+3266797952,3266805759,GB
3266805760,3266813951,AT
3266813952,3266822143,UA
3266822144,3266830335,FR
@@ -69839,11 +65203,9 @@
3267166208,3267231743,GB
3267231744,3267297279,RU
3267297280,3267362815,CH
-3267362816,3267368447,DK
-3267368448,3267368480,SE
+3267362816,3267368480,DK
3267368481,3267368481,EU
-3267368482,3267368703,SE
-3267368704,3267428351,DK
+3267368482,3267428351,DK
3267428352,3267493887,GB
3267493888,3267559423,EU
3267559424,3267624959,DE
@@ -69856,9 +65218,13 @@
3267681536,3267685375,EU
3267685376,3267685631,NL
3267685632,3267690495,EU
-3267690496,3267756031,FI
+3267690496,3267710847,FI
+3267710848,3267710975,SE
+3267710976,3267756031,FI
3267756032,3267821567,SE
-3267821568,3267845375,FR
+3267821568,3267824639,FR
+3267824640,3267824895,MQ
+3267824896,3267845375,FR
3267845376,3267845631,GP
3267845632,3267846655,FR
3267846656,3267846911,MQ
@@ -69875,24 +65241,20 @@
3268173824,3268182015,MT
3268182016,3268198399,PL
3268198400,3268214783,MA
-3268214784,3268226559,EU
+3268214784,3268218111,EU
+3268218112,3268218367,GB
+3268218368,3268226559,EU
3268226560,3268226815,GB
3268226816,3268238335,EU
3268238336,3268238847,GB
-3268238848,3268240895,EU
-3268240896,3268241151,GB
-3268241152,3268243756,EU
-3268243757,3268243757,GB
-3268243758,3268251135,EU
+3268238848,3268251135,EU
3268251136,3268251647,GB
-3268251648,3268259583,EU
-3268259584,3268259839,GB
-3268259840,3268280319,EU
+3268251648,3268259817,EU
+3268259818,3268259819,GB
+3268259820,3268280319,EU
3268280320,3268345855,FR
3268345856,3268411391,GB
-3268411392,3268458495,AT
-3268458496,3268458879,DE
-3268458880,3268464127,AT
+3268411392,3268464127,AT
3268464128,3268464383,LI
3268464384,3268476927,AT
3268476928,3268537087,CH
@@ -69990,7 +65352,6 @@
3270643712,3270644223,AT
3270644224,3270644735,NL
3270644736,3270645247,DE
-3270645248,3270645759,PL
3270645760,3270646271,IL
3270646272,3270647807,RU
3270647808,3270648063,TR
@@ -70014,7 +65375,6 @@
3270653184,3270653439,UA
3270653440,3270653695,NL
3270653696,3270653951,GB
-3270653952,3270654207,ES
3270654208,3270654463,RO
3270654464,3270654719,BE
3270654720,3270655231,UA
@@ -70126,19 +65486,13 @@
3271024640,3271032831,GB
3271032832,3271098367,NO
3271098368,3271163903,SI
-3271163904,3271184211,FR
-3271184212,3271184212,GF
-3271184213,3271193343,FR
-3271193344,3271193599,GF
-3271193600,3271224319,FR
+3271163904,3271224319,FR
3271224320,3271224575,MQ
3271224576,3271229439,FR
3271229440,3271360511,FI
3271360512,3271426047,EU
3271426048,3271491583,FR
-3271491584,3271502591,DK
-3271502592,3271502847,SE
-3271502848,3271513343,DK
+3271491584,3271513343,DK
3271513344,3271513599,EU
3271513600,3271557119,DK
3271557120,3271589887,BE
@@ -70328,38 +65682,25 @@
3272138240,3272138751,BG
3272138752,3272146943,DE
3272146944,3272212479,RU
-3272212480,3272212735,US
-3272212736,3272214271,EU
+3272212480,3272214271,EU
3272214272,3272214527,GB
3272214528,3272217855,EU
3272217856,3272217875,ES
3272217876,3272218111,EU
3272218112,3272218623,GB
-3272218624,3272221951,EU
-3272221952,3272222207,US
-3272222208,3272223999,EU
+3272218624,3272223999,EU
3272224000,3272224255,GB
-3272224256,3272227327,EU
-3272227328,3272227583,GB
-3272227584,3272228863,EU
+3272224256,3272227491,EU
+3272227492,3272227492,GB
+3272227493,3272228863,EU
3272228864,3272237055,LU
3272237056,3272237823,GB
3272237824,3272238079,IM
3272238080,3272238591,GB
3272238592,3272238847,IM
-3272238848,3272239615,GB
-3272239616,3272239871,IM
-3272239872,3272240127,GB
-3272240128,3272240383,IM
-3272240384,3272240895,GB
-3272240896,3272241151,IM
-3272241152,3272241407,GB
+3272238848,3272241407,GB
3272241408,3272241919,IM
-3272241920,3272242431,GB
-3272242432,3272242943,IM
-3272242944,3272243199,GB
-3272243200,3272243455,IM
-3272243456,3272245247,GB
+3272241920,3272245247,GB
3272245248,3272261631,FI
3272261632,3272261887,MT
3272261888,3272262143,BG
@@ -70391,7 +65732,9 @@
3272268800,3272269055,IL
3272269056,3272269311,GB
3272269312,3272269567,IL
-3272269568,3272351743,GB
+3272269568,3272293631,GB
+3272293632,3272293887,AU
+3272293888,3272351743,GB
3272351744,3272352767,PL
3272352768,3272353791,UA
3272353792,3272355839,CH
@@ -70456,11 +65799,7 @@
3272482304,3272482559,PL
3272482560,3272482815,BE
3272482816,3272491007,RU
-3272491008,3272491263,GB
-3272491264,3272491327,DE
-3272491328,3272491391,GB
-3272491392,3272491519,DE
-3272491520,3272499199,GB
+3272491008,3272499199,GB
3272499200,3272499711,RU
3272499712,3272500223,US
3272500224,3272500735,RU
@@ -70630,7 +65969,9 @@
3273193984,3273194495,EU
3273194496,3273195007,UA
3273195008,3273195519,RU
-3273195520,3273261055,FR
+3273195520,3273225727,FR
+3273225728,3273225983,GF
+3273225984,3273261055,FR
3273261056,3273261567,NO
3273261568,3273262079,BE
3273262080,3273262591,LU
@@ -70662,23 +66003,19 @@
3273327360,3273327615,IE
3273327616,3273329663,EU
3273329664,3273329919,GB
-3273329920,3273330511,EU
-3273330512,3273330519,GB
-3273330520,3273330943,EU
+3273329920,3273330431,EU
+3273330432,3273330687,GB
+3273330688,3273330943,EU
3273330944,3273331199,GB
3273331200,3273331935,EU
3273331936,3273331967,GB
3273331968,3273335295,EU
3273335296,3273335551,GB
-3273335552,3273336831,EU
-3273336832,3273337087,DE
-3273337088,3273340031,EU
-3273340032,3273340095,GB
-3273340096,3273340111,EU
-3273340112,3273340119,GB
-3273340120,3273340370,EU
-3273340371,3273340371,GB
-3273340372,3273344511,EU
+3273335552,3273336881,EU
+3273336882,3273336882,DE
+3273336883,3273339903,EU
+3273339904,3273340415,GB
+3273340416,3273344511,EU
3273344512,3273344767,DE
3273344768,3273382143,EU
3273382144,3273382399,GB
@@ -70720,29 +66057,33 @@
3273440768,3273441279,AT
3273441280,3273443327,GB
3273443328,3273443583,FR
-3273443584,3273449471,GB
-3273449472,3273457663,CH
+3273443584,3273449727,GB
+3273449728,3273457663,CH
3273457664,3273523199,HR
3273523200,3273588735,DE
3273588736,3273687039,IT
3273687040,3273719807,DE
3273719808,3273720831,NL
3273720832,3273720847,IE
-3273720848,3273726909,NL
-3273726910,3273726910,GB
-3273726911,3273727119,NL
+3273720848,3273726719,NL
+3273726720,3273726975,GB
+3273726976,3273727119,NL
3273727120,3273727127,PT
3273727128,3273728590,NL
3273728591,3273728592,EU
-3273728593,3273734184,NL
-3273734185,3273734185,GB
-3273734186,3273744895,NL
+3273728593,3273744895,NL
3273744896,3273745151,GB
3273745152,3273746943,NL
3273746944,3273747199,EU
-3273747200,3273749120,NL
-3273749121,3273749121,GB
-3273749122,3273752831,NL
+3273747200,3273748991,NL
+3273748992,3273749247,GB
+3273749248,3273749631,NL
+3273749632,3273749759,FR
+3273749760,3273750271,NL
+3273750272,3273750527,GB
+3273750528,3273750783,NL
+3273750784,3273751295,GB
+3273751296,3273752831,NL
3273752832,3273753087,EU
3273753088,3273753343,NL
3273753344,3273753599,EU
@@ -70802,7 +66143,6 @@
3273875968,3273876223,DE
3273876224,3273876479,IT
3273876480,3273876991,SE
-3273876992,3273877247,CH
3273877248,3273877503,DE
3273877536,3273877567,AT
3273877568,3273877759,IT
@@ -70851,9 +66191,7 @@
3274150912,3274151167,US
3274151168,3274152447,KW
3274152448,3274152703,US
-3274152704,3274156256,KW
-3274156257,3274156286,US
-3274156287,3274162175,KW
+3274152704,3274162175,KW
3274162176,3274162687,GB
3274162688,3274163199,DE
3274163200,3274163711,UA
@@ -71156,10 +66494,13 @@
3275399168,3275407359,AT
3275407360,3275415551,GB
3275415552,3275423743,UA
-3275423744,3275423999,GB
-3275424000,3275424255,EU
-3275424256,3275425023,GB
-3275425024,3275426815,EU
+3275423744,3275423999,EU
+3275424000,3275424511,GB
+3275424512,3275424767,EU
+3275424768,3275425023,GB
+3275425024,3275425791,EU
+3275425792,3275426047,GB
+3275426048,3275426815,EU
3275426816,3275427327,GB
3275427328,3275427583,EU
3275427584,3275427839,GB
@@ -71167,55 +66508,50 @@
3275429888,3275430143,GB
3275430144,3275432703,EU
3275432704,3275432959,GB
-3275432960,3275435263,EU
+3275432960,3275434751,EU
+3275434752,3275435007,GB
+3275435008,3275435263,EU
3275435264,3275435519,GB
-3275435520,3275443199,EU
+3275435520,3275435775,EU
+3275435776,3275436031,GB
+3275436032,3275439615,EU
+3275439616,3275439871,GB
+3275439872,3275443199,EU
3275443200,3275443455,GB
3275443456,3275446783,EU
-3275446784,3275447295,GB
-3275447296,3275449343,EU
+3275446784,3275447039,GB
+3275447040,3275449343,EU
3275449344,3275449855,GB
-3275449856,3275449871,EU
-3275449872,3275449887,US
-3275449888,3275450047,EU
+3275449856,3275449919,EU
+3275449920,3275449927,GB
+3275449928,3275450047,EU
3275450048,3275450111,GB
3275450112,3275452927,EU
-3275452928,3275453247,GB
-3275453248,3275453695,EU
-3275453696,3275453951,GB
-3275453952,3275454047,EU
-3275454048,3275454063,GB
-3275454064,3275454111,EU
-3275454112,3275454127,GB
-3275454128,3275454207,EU
-3275454208,3275454463,GB
+3275452928,3275453439,GB
+3275453440,3275453695,EU
+3275453696,3275454463,GB
3275454464,3275455487,EU
3275455488,3275455743,GB
-3275455744,3275460863,EU
-3275460864,3275461119,GB
-3275461120,3275461631,EU
-3275461632,3275461887,GB
-3275461888,3275462399,EU
-3275462400,3275462655,GB
-3275462656,3275462847,EU
-3275462848,3275463167,GB
-3275463168,3275463423,EU
-3275463424,3275463935,GB
-3275463936,3275464959,EU
+3275455744,3275461631,EU
+3275461632,3275462143,GB
+3275462144,3275462399,EU
+3275462400,3275462911,GB
+3275462912,3275463423,EU
+3275463424,3275464191,GB
+3275464192,3275464959,EU
3275464960,3275465215,GB
-3275465216,3275465567,EU
-3275465568,3275465583,IE
-3275465584,3275465599,GB
-3275465600,3275465695,EU
-3275465696,3275465711,GB
-3275465712,3275466495,EU
+3275465216,3275465471,EU
+3275465472,3275465727,GB
+3275465728,3275466495,EU
3275466496,3275467007,GB
-3275467008,3275468543,EU
-3275468544,3275468799,IE
-3275468800,3275469055,EU
-3275469056,3275470079,GB
-3275470080,3275470335,EU
-3275470336,3275470591,GB
+3275467008,3275467519,EU
+3275467520,3275467775,GB
+3275467776,3275468740,EU
+3275468741,3275468741,IE
+3275468742,3275469055,EU
+3275469056,3275469567,GB
+3275469568,3275469823,EU
+3275469824,3275470591,GB
3275470592,3275471359,EU
3275471360,3275471615,GB
3275471616,3275472639,EU
@@ -71224,10 +66560,10 @@
3275473152,3275473407,GB
3275473408,3275473663,EU
3275473664,3275474175,GB
-3275474176,3275474687,EU
-3275474688,3275474943,GB
-3275474944,3275477247,EU
-3275477248,3275477503,GB
+3275474176,3275474431,EU
+3275474432,3275474943,GB
+3275474944,3275476991,EU
+3275476992,3275477503,GB
3275477504,3275489279,EU
3275489280,3275497471,GB
3275497472,3275505663,DE
@@ -71361,9 +66697,7 @@
3275661312,3275669503,IT
3275669504,3275677695,GB
3275677696,3275685887,IT
-3275685888,3275742207,DE
-3275742208,3275742463,FR
-3275742464,3275751423,DE
+3275685888,3275751423,DE
3275751424,3275751679,AT
3275751680,3275751935,EU
3275751936,3275759615,AT
@@ -71485,32 +66819,50 @@
3275923456,3275931647,ME
3275931648,3275939839,UA
3275939840,3275948031,GB
-3275948032,3275952639,SE
-3275952640,3275952767,GB
-3275952768,3275952775,SE
-3275952776,3275952895,GB
-3275952896,3276013567,SE
+3275948032,3276013567,SE
3276013568,3276014335,GB
3276014336,3276015103,FR
-3276015104,3276015359,GB
-3276015360,3276018431,FR
-3276018432,3276018687,GB
-3276018688,3276018943,FR
-3276018944,3276019199,GB
-3276019200,3276023551,FR
-3276023552,3276026367,GB
-3276026368,3276026879,FR
-3276026880,3276027135,GB
-3276027136,3276027647,FR
+3276015104,3276015871,GB
+3276015872,3276016127,FR
+3276016128,3276016639,GB
+3276016640,3276016895,FR
+3276016896,3276017919,GB
+3276017920,3276018431,FR
+3276018432,3276019967,GB
+3276019968,3276020479,FR
+3276020480,3276020991,GB
+3276020992,3276021247,FR
+3276021248,3276021503,GB
+3276021504,3276022015,FR
+3276022016,3276022527,GB
+3276022528,3276023039,FR
+3276023040,3276023295,GB
+3276023296,3276023551,FR
+3276023552,3276024575,GB
+3276024576,3276024831,FR
+3276024832,3276026367,GB
+3276026368,3276026623,FR
+3276026624,3276027391,GB
+3276027392,3276027647,FR
3276027648,3276030207,GB
-3276030208,3276030463,FR
-3276030464,3276031231,GB
-3276031232,3276037887,FR
-3276037888,3276038143,GB
-3276038144,3276039423,FR
+3276030208,3276030719,FR
+3276030720,3276031231,GB
+3276031232,3276031487,FR
+3276031488,3276033919,GB
+3276033920,3276034047,FR
+3276034048,3276036095,GB
+3276036096,3276036351,FR
+3276036352,3276037119,GB
+3276037120,3276037375,FR
+3276037376,3276039167,GB
+3276039168,3276039423,FR
3276039424,3276042239,GB
-3276042240,3276046079,FR
-3276046080,3276046335,GB
+3276042240,3276043007,FR
+3276043008,3276044799,GB
+3276044800,3276045055,FR
+3276045056,3276045917,GB
+3276045918,3276045918,FR
+3276045919,3276046335,GB
3276046336,3276062719,RU
3276062720,3276063231,PL
3276063232,3276063743,FR
@@ -71617,11 +66969,11 @@
3276316672,3276324863,GB
3276324864,3276333055,IT
3276333056,3276341247,RU
-3276341248,3276349183,DE
+3276341248,3276345343,DE
+3276345344,3276345599,NL
+3276345600,3276349183,DE
3276349184,3276349439,NL
-3276349440,3276364799,DE
-3276364800,3276365055,NL
-3276365056,3276380927,DE
+3276349440,3276380927,DE
3276380928,3276381183,NL
3276381184,3276390143,DE
3276390144,3276390399,NL
@@ -71668,22 +67020,20 @@
3276447744,3276455935,EU
3276455936,3276464127,BE
3276464128,3276472319,GR
-3276472320,3276478719,EU
-3276478720,3276479743,FR
-3276479744,3276479999,EU
+3276472320,3276479999,EU
3276480000,3276480255,FR
3276480256,3276485631,EU
3276485632,3276485887,GB
-3276485888,3276491007,EU
-3276491008,3276491263,SE
-3276491264,3276494351,EU
+3276485888,3276493567,EU
+3276493568,3276493823,GB
+3276493824,3276494351,EU
3276494352,3276494543,GB
-3276494544,3276517887,EU
-3276517888,3276518143,NL
-3276518144,3276536319,EU
-3276536320,3276536575,ES
-3276536576,3276537855,EU
-3276537856,3276668927,ES
+3276494544,3276534527,EU
+3276534528,3276534783,AU
+3276534784,3276537855,EU
+3276537856,3276627711,ES
+3276627712,3276627967,PT
+3276627968,3276668927,ES
3276668928,3276677119,MC
3276677120,3276678143,HR
3276678144,3276678655,SE
@@ -71769,49 +67119,70 @@
3276866304,3276866559,EU
3276866560,3276866815,IT
3276866816,3276867071,EU
-3276867072,3276868607,IT
+3276867072,3276867583,IT
+3276867584,3276868095,GB
+3276868096,3276868607,IT
3276868608,3276868863,GB
-3276868864,3276868927,IT
-3276868928,3276870143,GB
+3276868864,3276869119,IT
+3276869120,3276870143,GB
3276870144,3276870399,IT
3276870400,3276870655,GB
-3276870656,3276871423,IT
-3276871424,3276881919,GB
-3276881920,3276882943,IT
-3276882944,3276883711,GB
+3276870656,3276870911,IT
+3276870912,3276871167,GB
+3276871168,3276871423,IT
+3276871424,3276882175,GB
+3276882176,3276883199,IT
+3276883200,3276883711,GB
3276883712,3276883967,IT
3276883968,3276886783,GB
3276886784,3276887039,DE
-3276887040,3276890111,GB
+3276887040,3276888575,GB
+3276888576,3276888831,IT
+3276888832,3276890111,GB
3276890112,3276890367,US
3276890368,3276892415,GB
-3276892416,3276893695,IT
-3276893696,3276895743,GB
+3276892416,3276892927,IT
+3276892928,3276893439,GB
+3276893440,3276893951,IT
+3276893952,3276894207,GB
+3276894208,3276894463,IT
+3276894464,3276895743,GB
3276895744,3276895999,IT
-3276896000,3276901083,GB
-3276901084,3276901084,CH
-3276901085,3276901119,GB
-3276901120,3276901375,CH
-3276901376,3276903423,GB
-3276903424,3276903679,SE
-3276903680,3276907263,GB
-3276907264,3276907519,DK
-3276907520,3276908543,GB
-3276908544,3276908687,SE
+3276896000,3276898559,GB
+3276898560,3276899327,CH
+3276899328,3276899839,GB
+3276899840,3276900095,CH
+3276900096,3276900863,GB
+3276900864,3276901375,CH
+3276901376,3276901631,GB
+3276901632,3276901887,CH
+3276901888,3276903167,GB
+3276903168,3276903679,SE
+3276903680,3276907519,GB
+3276907520,3276907775,NL
+3276907776,3276908543,GB
+3276908544,3276908671,SE
+3276908672,3276908687,NL
3276908688,3276908703,GB
3276908704,3276908799,SE
3276908800,3276910847,GB
3276910848,3276911103,IT
-3276911104,3276911359,GB
-3276911360,3276912127,IT
-3276912128,3276912639,GB
-3276912640,3276913151,IT
+3276911104,3276911615,GB
+3276911616,3276912127,IT
+3276912128,3276912895,GB
+3276912896,3276913151,IT
3276913152,3276917231,GB
3276917232,3276917247,FR
-3276917248,3276919487,GB
-3276919488,3276919535,DE
-3276919536,3276922879,GB
-3276922880,3276923903,FR
+3276917248,3276917759,GB
+3276917760,3276918015,ES
+3276918016,3276919295,GB
+3276919296,3276919551,DE
+3276919552,3276920831,GB
+3276920832,3276921087,DE
+3276921088,3276922879,GB
+3276922880,3276923135,FR
+3276923136,3276923391,GB
+3276923392,3276923903,FR
3276923904,3276924039,GB
3276924040,3276924071,FR
3276924072,3276931071,GB
@@ -71891,7 +67262,7 @@
3277191936,3277192191,DK
3277192192,3277192447,PL
3277192448,3277192703,DK
-3277192704,3277192959,IL
+3277192704,3277192959,DE
3277192960,3277193215,TR
3277193216,3277258751,NL
3277258752,3277324287,TR
@@ -72010,9 +67381,7 @@
3277388544,3277388799,HU
3277388800,3277389311,RU
3277389312,3277389823,AM
-3277389824,3277399359,GB
-3277399360,3277399423,FR
-3277399424,3277455359,GB
+3277389824,3277455359,GB
3277455360,3277463551,DE
3277463552,3277467135,EU
3277467136,3277467391,US
@@ -72043,9 +67412,7 @@
3277680640,3277684735,GB
3277684736,3277685247,RU
3277685248,3277685759,DE
-3277685760,3277685815,IE
-3277685816,3277685816,GB
-3277685817,3277686271,IE
+3277685760,3277686271,IE
3277686272,3277686783,PL
3277686784,3277687295,RO
3277687296,3277687807,UA
@@ -72073,9 +67440,7 @@
3277699072,3277699583,UA
3277699584,3277700607,RU
3277700608,3277701119,UA
-3277701120,3277701313,DK
-3277701314,3277701314,NO
-3277701315,3277701631,DK
+3277701120,3277701631,DK
3277701632,3277702143,AT
3277702144,3277702655,EU
3277702656,3277703679,DE
@@ -72215,9 +67580,13 @@
3278036992,3278045183,FR
3278045184,3278110719,GB
3278110720,3278176255,SE
-3278176256,3278241791,FR
+3278176256,3278221091,FR
+3278221092,3278221093,GB
+3278221094,3278241791,FR
3278241792,3278307327,GB
-3278307328,3278372863,IT
+3278307328,3278358527,IT
+3278358528,3278358783,US
+3278358784,3278372863,IT
3278372864,3278635007,GB
3278635008,3278635263,NL
3278635264,3278635519,EU
@@ -72394,9 +67763,7 @@
3280009728,3280010239,GB
3280010240,3280010751,UA
3280010752,3280011263,TR
-3280011264,3280019967,EU
-3280019968,3280020223,CH
-3280020224,3280076799,EU
+3280011264,3280076799,EU
3280076800,3280084991,GB
3280084992,3280093183,BA
3280093184,3280109567,GR
@@ -72597,7 +67964,11 @@
3280796672,3280797695,CZ
3280797696,3280863231,CH
3280863232,3280928767,TR
-3280928768,3280994559,GB
+3280928768,3280933365,GB
+3280933366,3280933366,DE
+3280933367,3280936191,GB
+3280936192,3280936447,DE
+3280936448,3280994559,GB
3280994560,3280994815,RU
3280994816,3280995071,NL
3280995072,3280995327,DE
@@ -72635,7 +68006,19 @@
3281043456,3281059839,RU
3281059840,3281062911,DE
3281062912,3281063167,EU
-3281063168,3281125375,DE
+3281063168,3281068543,DE
+3281068544,3281068647,US
+3281068648,3281068655,DE
+3281068656,3281068751,US
+3281068752,3281068759,DE
+3281068760,3281068799,US
+3281068800,3281116927,DE
+3281116928,3281117007,PL
+3281117008,3281117023,DE
+3281117024,3281117119,PL
+3281117120,3281117135,DE
+3281117136,3281117183,PL
+3281117184,3281125375,DE
3281125376,3281133567,SK
3281133568,3281141759,IR
3281141760,3281149951,RU
@@ -72713,9 +68096,7 @@
3281385472,3281387519,BG
3281387520,3281453055,PL
3281453056,3281518591,RU
-3281518592,3281532415,GB
-3281532416,3281532671,IN
-3281532672,3281649663,GB
+3281518592,3281649663,GB
3281649664,3281715199,FR
3281715200,3281780735,TR
3281780736,3281846271,FI
@@ -72740,9 +68121,7 @@
3281975296,3281976319,RU
3281976320,3281976831,DE
3281976832,3281977343,RU
-3281977344,3281996577,NO
-3281996578,3281996578,SE
-3281996579,3282042879,NO
+3281977344,3282042879,NO
3282042880,3282083839,CH
3282083840,3282084351,DE
3282084352,3282084863,RO
@@ -72801,14 +68180,14 @@
3282194432,3282195455,UA
3282195456,3282196479,IE
3282196480,3282197503,UA
-3282197504,3282198015,RU
-3282198016,3282198271,KG
-3282198272,3282198527,RU
+3282197504,3282198527,RU
3282198528,3282206719,GB
3282206720,3282223103,CH
3282223104,3282231295,BE
3282231296,3282239487,DE
-3282239488,3282305023,SE
+3282239488,3282287615,SE
+3282287616,3282287871,FI
+3282287872,3282305023,SE
3282305024,3282370559,PL
3282370560,3282436095,FI
3282436096,3282477055,GB
@@ -72862,9 +68241,7 @@
3282747392,3282763775,RU
3282763776,3282772991,GB
3282772992,3282773247,EU
-3282773248,3282942210,GB
-3282942211,3282942211,US
-3282942212,3282960383,GB
+3282773248,3282960383,GB
3282960384,3283091455,TR
3283091456,3283156991,CH
3283156992,3283173375,DE
@@ -72891,10 +68268,9 @@
3283209728,3283210239,TR
3283210240,3283210751,UA
3283210752,3283211263,PL
-3283211264,3283211488,FR
+3283211264,3283211488,GB
3283211489,3283211489,EU
-3283211490,3283211519,FR
-3283211520,3283211775,GB
+3283211490,3283211775,GB
3283211776,3283212287,NL
3283212288,3283212799,PL
3283212800,3283213311,BG
@@ -73174,7 +68550,9 @@
3284016384,3284016639,CH
3284016640,3284017151,DK
3284017152,3284025343,GR
-3284025344,3284033535,GB
+3284025344,3284032701,GB
+3284032702,3284032702,DE
+3284032703,3284033535,GB
3284033536,3284041727,RU
3284041728,3284041983,DK
3284041984,3284042239,SI
@@ -73529,20 +68907,27 @@
3285446656,3285447679,UA
3285447680,3285449727,RU
3285449728,3285450751,UA
-3285450752,3285450879,EU
-3285450880,3285450991,GB
-3285450992,3285452287,EU
+3285450752,3285451007,GB
+3285451008,3285452287,EU
3285452288,3285452543,GB
-3285452544,3285457919,EU
+3285452544,3285454079,EU
+3285454080,3285454335,GB
+3285454336,3285457919,EU
3285457920,3285458175,GB
-3285458176,3285467647,EU
-3285467648,3285467903,DE
-3285467904,3285472255,EU
+3285458176,3285459967,EU
+3285459968,3285460223,FI
+3285460224,3285470975,EU
+3285470976,3285471231,IN
+3285471232,3285472255,EU
3285472256,3285472511,US
-3285472512,3285498623,EU
+3285472512,3285476029,EU
+3285476030,3285476030,AT
+3285476031,3285498623,EU
3285498624,3285498879,CH
3285498880,3285501695,EU
-3285501696,3285501951,CH
+3285501696,3285501823,GB
+3285501824,3285501887,CZ
+3285501888,3285501951,GB
3285501952,3285516287,EU
3285516288,3285544959,BE
3285544960,3285545215,EU
@@ -73618,9 +69003,9 @@
3285860352,3285868543,FI
3285868544,3285876735,IE
3285876736,3285909503,RU
-3285909504,3285910431,EU
-3285910432,3285910463,NG
-3285910464,3285922047,EU
+3285909504,3285910439,EU
+3285910440,3285910447,NG
+3285910448,3285922047,EU
3285922048,3285922303,FR
3285922304,3285927423,EU
3285927424,3285927679,GB
@@ -73631,11 +69016,15 @@
3285935872,3285936127,GB
3285936128,3285939743,EU
3285939744,3285939759,GB
-3285939760,3285946111,EU
+3285939760,3285943551,EU
+3285943552,3285943647,GB
+3285943648,3285943679,NG
+3285943680,3285943807,GB
+3285943808,3285946111,EU
3285946112,3285946367,ES
-3285946368,3285948927,EU
-3285948928,3285949183,NG
-3285949184,3285953535,EU
+3285946368,3285951487,EU
+3285951488,3285951743,GB
+3285951744,3285953535,EU
3285953536,3285954047,PK
3285954048,3285975039,EU
3285975040,3286013695,FR
@@ -73720,22 +69109,20 @@
3286367232,3286368255,BG
3286368256,3286376447,CH
3286376448,3286384639,GB
-3286384640,3286399935,DE
-3286399936,3286399999,GB
+3286384640,3286399759,DE
+3286399760,3286399807,GB
+3286399808,3286399815,DE
+3286399816,3286399831,GB
+3286399832,3286399839,DE
+3286399840,3286399999,GB
3286400000,3286401023,DE
-3286401024,3286401279,GB
-3286401280,3286401535,GG
-3286401536,3286403071,GB
-3286403072,3286403327,GG
-3286403328,3286403839,GB
-3286403840,3286404351,GG
-3286404352,3286404607,GB
-3286404608,3286405375,GG
+3286401024,3286404095,GB
+3286404096,3286405375,GG
3286405376,3286405887,GB
3286405888,3286407167,GG
3286407168,3286407679,GB
-3286407680,3286408191,GG
-3286408192,3286409215,GB
+3286407680,3286407935,GG
+3286407936,3286409215,GB
3286409216,3286417407,DE
3286417408,3286417663,UA
3286417664,3286417919,IT
@@ -73767,20 +69154,10 @@
3286424832,3286425087,TR
3286425088,3286425343,RU
3286425344,3286425599,IT
-3286425600,3286425855,KW
-3286425856,3286426111,US
-3286426112,3286426367,KW
-3286426368,3286426623,US
-3286426624,3286433791,KW
+3286425600,3286433791,KW
3286433792,3286499327,DE
3286499328,3286564863,HU
-3286564864,3286566911,AE
-3286566912,3286567167,US
-3286567168,3286568191,AE
-3286568192,3286568703,US
-3286568704,3286571263,AE
-3286571264,3286571519,US
-3286571520,3286630399,AE
+3286564864,3286630399,AE
3286630400,3286638591,BG
3286638592,3286646783,AT
3286646784,3286654975,RU
@@ -73885,7 +69262,7 @@
3286926592,3286926847,DE
3286926848,3286927103,PT
3286927104,3286927359,FI
-3286927360,3286927615,NL
+3286927360,3286927615,DE
3286927616,3286927871,SI
3286927872,3286928127,BG
3286928128,3286928383,DE
@@ -74114,11 +69491,7 @@
3287481344,3287482367,PL
3287482368,3287524095,DE
3287524096,3287524351,GB
-3287524352,3287533695,DE
-3287533696,3287533727,PL
-3287533728,3287535663,DE
-3287535664,3287535679,FR
-3287535680,3287548927,DE
+3287524352,3287548927,DE
3287548928,3287549439,UA
3287549440,3287549951,SE
3287549952,3287550463,UA
@@ -74158,8 +69531,7 @@
3287639552,3287640063,RU
3287640064,3287640575,PL
3287640576,3287641087,SI
-3287641088,3287641343,GB
-3287641344,3287641599,EU
+3287641088,3287641599,EU
3287641600,3287642111,FI
3287642112,3287642623,UA
3287642624,3287643135,BE
@@ -74372,8 +69744,7 @@
3288072192,3288088575,SE
3288088576,3288104959,RS
3288104960,3288236031,DE
-3288236032,3288236287,LI
-3288236288,3288236543,AT
+3288236032,3288236543,LI
3288236544,3288237055,FR
3288237056,3288238591,RO
3288238592,3288239103,PL
@@ -74384,7 +69755,6 @@
3288241152,3288241663,ES
3288241664,3288242175,UA
3288242176,3288242687,RO
-3288242688,3288243199,FR
3288243200,3288243711,PL
3288243712,3288244735,FR
3288244736,3288245247,DE
@@ -74411,7 +69781,9 @@
3288401152,3288401407,RU
3288401408,3288401663,SA
3288401664,3288401919,MU
-3288401920,3288406527,ZA
+3288401920,3288403711,ZA
+3288403712,3288403967,AO
+3288403968,3288406527,ZA
3288406528,3288407039,KE
3288407040,3288408063,NA
3288408064,3288413183,ZA
@@ -74439,7 +69811,9 @@
3288433920,3288434175,NG
3288434176,3288434431,IN
3288434432,3288434687,CU
-3288434688,3288435711,JM
+3288434688,3288434943,JM
+3288434944,3288435199,CD
+3288435200,3288435711,JM
3288435712,3288435967,US
3288435968,3288436223,PR
3288436224,3288436479,US
@@ -74459,8 +69833,8 @@
3288467456,3288469503,BI
3288469504,3288481791,ZA
3288481792,3288482303,ZW
-3288482304,3288483839,ZA
-3288483840,3288485887,ZW
+3288482304,3288485631,ZA
+3288485632,3288485887,ZW
3288485888,3288489983,MA
3288489984,3288514559,ZA
3288514560,3288522751,EG
@@ -74470,17 +69844,15 @@
3288535040,3288539135,CW
3288539136,3288543487,US
3288543488,3288543743,AP
-3288543744,3288543996,US
+3288543744,3288543996,CH
3288543997,3288543997,EU
-3288543998,3288543998,CH
-3288543999,3288544498,US
+3288543998,3288543999,CH
+3288544000,3288544498,US
3288544499,3288544499,EU
3288544500,3288544767,US
3288544768,3288545023,MX
3288545024,3288545279,FR
-3288545280,3288545379,US
-3288545380,3288545380,AU
-3288545381,3288545535,US
+3288545280,3288545535,AU
3288545536,3288545791,ZA
3288545792,3288546303,KE
3288546304,3288547327,NG
@@ -74512,8 +69884,7 @@
3288578048,3288580095,JM
3288580096,3288588287,BB
3288588288,3288608255,ZA
-3288608256,3288608511,DE
-3288608512,3288614655,US
+3288608256,3288614655,US
3288614656,3288616959,ZA
3288616960,3288617215,ZW
3288617216,3288661759,ZA
@@ -74730,7 +70101,6 @@
3291216128,3291216383,LS
3291216384,3291216639,AO
3291216640,3291216895,NG
-3291216896,3291217919,MU
3291217920,3291230207,ZA
3291230208,3291234303,GH
3291234304,3291242495,ZA
@@ -74802,8 +70172,8 @@
3291432448,3291432703,ZA
3291432704,3291432959,NA
3291432960,3291433471,ZA
-3291433472,3291433983,NA
-3291433984,3291434239,ZA
+3291433472,3291433727,NA
+3291433728,3291434239,ZA
3291434240,3291434751,A2
3291434752,3291435007,ZA
3291435008,3291439103,A2
@@ -74813,9 +70183,11 @@
3300917248,3300921343,MU
3300925440,3300929535,MG
3300933632,3300950015,MU
-3301048320,3301179391,ZA
+3300982784,3301179391,ZA
3301179392,3301244927,SC
-3301244928,3301441567,ZA
+3301244928,3301375999,ZA
+3301376000,3301441535,SC
+3301441536,3301441567,ZA
3301441568,3301441575,NG
3301441576,3301441655,ZA
3301441656,3301441663,NG
@@ -74891,17 +70263,14 @@
3301513216,3301515263,EG
3301515264,3301523455,GH
3301523456,3301531647,CI
-3301539840,3301540863,KE
-3301540864,3301541119,A2
-3301541120,3301541631,KE
-3301541632,3301541887,A2
-3301541888,3301544959,KE
+3301539840,3301543935,A2
+3301543936,3301544959,KE
3301544960,3301545215,A2
3301545216,3301548031,KE
3301548032,3301556223,GH
3301556224,3301557759,DJ
-3301557760,3301558271,US
-3301558272,3301560319,DJ
+3301557760,3301558015,US
+3301558016,3301560319,DJ
3301560320,3301566463,KE
3301568512,3301570559,EG
3301570560,3301572607,KE
@@ -74918,11 +70287,7 @@
3301900288,3301902663,NG
3301902664,3301902671,CM
3301902672,3301904383,NG
-3301904384,3301904895,KE
-3301904896,3301904913,CA
-3301904914,3301904914,KE
-3301904915,3301905407,CA
-3301905408,3301908479,KE
+3301904384,3301908479,KE
3301908480,3301912575,ZA
3301912576,3301916671,MU
3301949440,3301965823,SN
@@ -74959,6 +70324,7 @@
3302540800,3302541311,AO
3302541312,3302542335,NG
3302543360,3302544383,NG
+3302548480,3302548991,GH
3302548992,3302549503,ZA
3302549504,3302550015,KE
3302550016,3302550527,TZ
@@ -74980,13 +70346,7 @@
3302555648,3302621183,MA
3302621184,3302684671,EG
3302684672,3302686719,JO
-3302686720,3302696959,EG
-3302696960,3302697983,SA
-3302697984,3302746623,EG
-3302746624,3302746879,US
-3302746880,3302748927,EG
-3302748928,3302749183,US
-3302749184,3302752255,EG
+3302686720,3302752255,EG
3302752256,3302753359,NG
3302753360,3302753363,CM
3302753364,3302753607,NG
@@ -75120,17 +70480,20 @@
3315589120,3315597311,CM
3315597312,3316121599,EG
3316121600,3316645887,ZA
-3316645888,3316680703,KE
-3316680704,3316682751,US
-3316682752,3317170175,KE
+3316645888,3317170175,KE
+3317170176,3317301247,ZA
+3317301248,3317432319,TZ
3317694464,3318218751,EG
3318218752,3318743039,DZ
+3318743040,3318874111,SD
+3318947840,3318956031,NG
+3318988800,3319005183,ZW
3319005184,3319136255,ZM
3319136256,3319152639,NE
3319152640,3319156735,GQ
+3319160832,3319164927,NG
3319164928,3319166975,ZA
3319201792,3319234559,SL
-3319234560,3319267327,TZ
3319267328,3319398399,AO
3319398400,3319529471,MZ
3319529472,3319537663,ZM
@@ -75149,6 +70512,14 @@
3319652352,3319660543,ZW
3319660544,3319791615,EG
3319791616,3320053759,MU
+3320381440,3320446975,NA
+3320479744,3320500223,ZA
+3320500224,3320502271,BW
+3320504320,3320505343,TZ
+3320505344,3320506367,NG
+3320506368,3320507391,ZA
+3320507392,3320508415,KE
+3320508416,3320509439,SC
3320512512,3320578047,MZ
3320578048,3320643583,ZA
3320643584,3320709119,KE
@@ -75156,6 +70527,7 @@
3320774656,3320791039,UG
3320791040,3320807423,BF
3320807424,3320823807,ZA
+3320823808,3320840191,KE
3320840192,3320905727,NG
3320905728,3320938495,DJ
3320938496,3320971263,AO
@@ -75320,12 +70692,9 @@
3323203584,3323207679,US
3323207680,3323215871,CA
3323215872,3323232255,US
-3323267072,3323270399,US
-3323270400,3323270420,GB
+3323267072,3323270420,US
3323270421,3323270421,CH
-3323270422,3323270655,GB
-3323270656,3323289599,US
-3323297792,3323330559,US
+3323270422,3323330559,US
3323330816,3323331071,US
3323331072,3323331839,CA
3323331840,3323342335,US
@@ -75358,8 +70727,7 @@
3323434240,3323434303,BG
3323434304,3323462655,US
3323462656,3323463167,BR
-3323463168,3323469823,US
-3323478016,3323659263,US
+3323463168,3323659263,US
3323659264,3323660543,NZ
3323662336,3323674623,US
3323674624,3323681279,CA
@@ -75384,7 +70752,9 @@
3324266496,3324266751,AP
3324266752,3324270079,US
3324270080,3324270591,EU
-3324270592,3324379135,US
+3324270592,3324354559,US
+3324354560,3324362751,CA
+3324362752,3324379135,US
3324379136,3324380159,CA
3324380160,3324470271,US
3324470272,3324474367,GB
@@ -75488,6 +70858,7 @@
3325145088,3325169663,US
3325169664,3325171711,BR
3325171712,3325190143,US
+3325190144,3325198335,CA
3325231104,3325232127,US
3325233152,3325234175,US
3325234176,3325234431,SA
@@ -75513,7 +70884,7 @@
3325304832,3325307647,CA
3325307648,3325307903,BB
3325307904,3325313023,CA
-3325313024,3325321215,US
+3325313024,3325329407,US
3325362176,3325427711,CA
3325427712,3325452287,ZA
3325452800,3325453311,ZA
@@ -75539,8 +70910,7 @@
3325497344,3325501439,PR
3325501440,3325505535,US
3325505536,3325509631,CA
-3325509632,3325517823,US
-3325526016,3325591551,US
+3325509632,3325591551,US
3325624320,3325640703,US
3325640704,3325644799,CA
3325644800,3325648895,US
@@ -75550,74 +70920,7 @@
3325691904,3325693951,BR
3325693952,3325722623,US
3325722624,3325755391,CA
-3325755392,3325919407,US
-3325919408,3325919423,IL
-3325919424,3325919431,US
-3325919432,3325919435,IL
-3325919436,3325919455,US
-3325919456,3325919487,IL
-3325919488,3325919735,US
-3325919736,3325919743,AU
-3325919744,3325920199,US
-3325920200,3325920207,IN
-3325920208,3325920231,US
-3325920232,3325920239,BG
-3325920240,3325920247,BR
-3325920248,3325920415,US
-3325920416,3325920431,IE
-3325920432,3325920687,US
-3325920688,3325920695,MX
-3325920696,3325920895,US
-3325920896,3325920899,AU
-3325920900,3325921287,US
-3325921288,3325921295,CA
-3325921296,3325921439,US
-3325921440,3325921447,FI
-3325921448,3325921695,US
-3325921696,3325921703,NO
-3325921704,3325921727,US
-3325921728,3325921735,MX
-3325921736,3325922191,US
-3325922192,3325922195,BR
-3325922196,3325922295,US
-3325922296,3325922303,CA
-3325922304,3325922639,US
-3325922640,3325922647,CA
-3325922648,3325922999,US
-3325923000,3325923007,GT
-3325923008,3325923075,US
-3325923076,3325923079,CA
-3325923080,3325923179,US
-3325923180,3325923183,CH
-3325923184,3325923215,US
-3325923216,3325923263,GB
-3325923264,3325923455,US
-3325923456,3325923519,NO
-3325923520,3325923823,US
-3325923824,3325923839,CA
-3325923840,3325924039,US
-3325924040,3325924047,AU
-3325924048,3325924343,US
-3325924344,3325924347,BG
-3325924348,3325924351,US
-3325924352,3325924355,CA
-3325924356,3325925455,US
-3325925456,3325925487,IL
-3325925488,3325925519,US
-3325925520,3325925535,NO
-3325925536,3325926791,US
-3325926792,3325926793,BR
-3325926794,3325926823,US
-3325926824,3325926827,BG
-3325926828,3325926863,US
-3325926864,3325926867,BR
-3325926868,3325947983,US
-3325947984,3325947999,CA
-3325948000,3325948271,US
-3325948272,3325948279,AR
-3325948280,3325948415,US
-3325948416,3325948447,AT
-3325948448,3325956095,US
+3325755392,3325956095,US
3325956096,3325960191,CA
3325960192,3325976063,US
3325976064,3325976319,CA
@@ -75649,13 +70952,13 @@
3326420992,3326423039,PR
3326423040,3326492239,US
3326492240,3326492255,CA
-3326492256,3326499327,US
-3326499328,3326499583,IN
-3326499584,3326526463,US
+3326492256,3326526463,US
3326526464,3326526719,CA
3326526720,3326613503,US
3326613504,3326615551,CA
-3326615552,3326631935,US
+3326615552,3326619647,US
+3326619648,3326623743,CA
+3326623744,3326631935,US
3326631936,3326640127,CA
3326640128,3326676991,US
3326680832,3326682623,CA
@@ -75712,18 +71015,15 @@
3328202752,3328204799,US
3328204800,3328214783,CA
3328214784,3328215295,GB
-3328215296,3328224255,CA
-3328224256,3328224511,US
-3328224512,3328235007,CA
+3328215296,3328223231,CA
+3328223232,3328225279,US
+3328225280,3328235007,CA
3328235008,3328235263,US
3328235520,3328241663,CA
3328241664,3328242943,US
3328242944,3328243199,GB
3328243200,3328245759,CA
-3328245760,3328323839,US
-3328323840,3328327679,CA
-3328327680,3328360447,US
-3328376832,3328393727,US
+3328245760,3328393727,US
3328393728,3328393983,GB
3328393984,3328394239,US
3328394240,3328394495,GB
@@ -75741,71 +71041,7 @@
3328477184,3328479231,US
3328479232,3328481279,CA
3328481280,3328483327,US
-3328491520,3328542675,US
-3328542676,3328542679,NO
-3328542680,3328542879,US
-3328542880,3328542887,CA
-3328542888,3328542927,US
-3328542928,3328542935,AU
-3328542936,3328544031,US
-3328544032,3328544039,CA
-3328544040,3328544135,US
-3328544136,3328544143,IL
-3328544144,3328549119,US
-3328549120,3328549123,BG
-3328549124,3328550591,US
-3328550592,3328550655,IL
-3328550656,3328550847,US
-3328550848,3328550879,CA
-3328550880,3328550919,US
-3328550920,3328550927,IL
-3328550928,3328550975,US
-3328550976,3328550983,PE
-3328550984,3328551031,US
-3328551032,3328551039,GB
-3328551040,3328551127,US
-3328551128,3328551135,CA
-3328551136,3328551167,US
-3328551168,3328551175,IN
-3328551176,3328551191,US
-3328551192,3328551199,FR
-3328551200,3328551231,US
-3328551232,3328551239,DO
-3328551240,3328551319,US
-3328551320,3328551327,AW
-3328551328,3328551623,US
-3328551624,3328551627,GB
-3328551628,3328551631,CA
-3328551632,3328551871,US
-3328551872,3328551903,FR
-3328551904,3328552159,US
-3328552160,3328552163,CA
-3328552164,3328552727,US
-3328552728,3328552735,IL
-3328552736,3328555127,US
-3328555128,3328555135,GB
-3328555136,3328555199,US
-3328555200,3328555207,CA
-3328555208,3328555255,US
-3328555256,3328555263,CA
-3328555264,3328555971,US
-3328555972,3328555975,CA
-3328555976,3328556215,US
-3328556216,3328556223,IL
-3328556224,3328556295,US
-3328556296,3328556303,MX
-3328556304,3328556487,US
-3328556488,3328556495,MX
-3328556496,3328556583,US
-3328556584,3328556587,CA
-3328556588,3328556695,US
-3328556696,3328556699,AU
-3328556700,3328556863,US
-3328556864,3328556867,IE
-3328556868,3328556871,CA
-3328556872,3328557027,US
-3328557028,3328557031,CA
-3328557032,3328617983,US
+3328491520,3328617983,US
3328617984,3328618239,CA
3328618240,3328629503,US
3328629504,3328629759,EU
@@ -75815,9 +71051,7 @@
3328638976,3328704511,CA
3328704512,3328774399,US
3328774400,3328775935,CA
-3328775936,3328776191,US
-3328776192,3328776447,CA
-3328776448,3328776703,US
+3328775936,3328776703,US
3328778240,3328788479,US
3328788480,3328789503,FR
3328789504,3328790015,AP
@@ -75851,7 +71085,9 @@
3330664192,3330664447,CA
3330664448,3330677759,US
3330677760,3330678783,CA
-3330678784,3330714367,US
+3330678784,3330684927,US
+3330684928,3330685183,IN
+3330685184,3330714367,US
3330714368,3330714623,CA
3330714624,3330726655,US
3330726656,3330726911,CA
@@ -75924,12 +71160,8 @@
3331372352,3331372367,ES
3331372368,3331374079,US
3331374080,3331374335,CA
-3331374336,3331523583,US
-3331523584,3331523839,GB
-3331523840,3331524095,US
-3331524096,3331524607,SG
-3331524608,3331527423,US
-3331527424,3331527679,GB
+3331374336,3331527167,US
+3331527168,3331527679,GB
3331527680,3331563519,US
3331563520,3331563775,CH
3331563776,3331617855,US
@@ -76018,9 +71250,7 @@
3332083968,3332084223,AP
3332084224,3332095231,US
3332095232,3332095487,EU
-3332095488,3332405247,US
-3332405248,3332405503,AU
-3332405504,3332440063,US
+3332095488,3332440063,US
3332440064,3332460543,CA
3332460544,3332460799,US
3332460800,3332461311,CA
@@ -76036,7 +71266,9 @@
3332554752,3332558847,US
3332558848,3332562943,CA
3332562944,3332563455,US
-3332563456,3332590079,CA
+3332563456,3332579327,CA
+3332579328,3332581375,US
+3332581376,3332590079,CA
3332590080,3332590591,US
3332590592,3332616191,CA
3332616192,3332616959,US
@@ -76078,29 +71310,22 @@
3333213696,3333214079,US
3333214080,3333246505,US
3333246506,3333246506,US
-3333246507,3333374975,US
-3333374976,3333375231,IN
-3333375232,3333385983,US
+3333246507,3333385983,US
3333385984,3333386239,JP
-3333386240,3333396223,US
-3333396224,3333396479,HK
-3333396480,3333396735,GB
-3333396736,3333427967,US
+3333386240,3333427967,US
3333427968,3333428007,GB
3333428008,3333428008,EU
3333428009,3333428223,GB
3333428224,3333429759,US
-3333431296,3333471999,US
-3333472000,3333472255,AT
-3333472256,3333480191,US
+3333431296,3333480191,US
3333480192,3333481471,DE
-3333481472,3333603328,US
+3333481472,3333603327,US
+3333603328,3333603328,GB
3333603329,3333603329,EU
-3333603330,3333609733,US
+3333603330,3333603583,GB
+3333603584,3333609733,US
3333609734,3333609734,AU
-3333609735,3333614591,US
-3333614592,3333614847,GB
-3333614848,3333701887,US
+3333609735,3333701887,US
3333701888,3333702143,GB
3333702144,3333702399,US
3333702400,3333702655,CH
@@ -76123,9 +71348,9 @@
3333781504,3333783551,CA
3333783552,3333825791,US
3333825792,3333826047,EU
-3333826048,3333829631,US
-3333829632,3333829887,IN
-3333829888,3333859839,US
+3333826048,3333829657,US
+3333829658,3333829658,IN
+3333829659,3333859839,US
3333859840,3333860095,BM
3333860096,3333870847,US
3333871104,3333871359,CA
@@ -76133,9 +71358,9 @@
3333988608,3333988863,BR
3333988864,3333997823,US
3333997824,3333998079,CA
-3333998080,3334006527,US
-3334006528,3334006783,NL
-3334006784,3334007551,US
+3333998080,3334006781,US
+3334006782,3334006782,NL
+3334006783,3334007551,US
3334007552,3334007807,EU
3334007808,3334019583,US
3334020096,3334021119,CA
@@ -76143,7 +71368,10 @@
3334138624,3334138879,BM
3334138880,3334187775,US
3334187776,3334188031,BM
-3334188032,3334995967,US
+3334188032,3334932223,US
+3334932224,3334932479,CA
+3334932480,3334946815,US
+3334963200,3334995967,US
3334995968,3334998527,PH
3334999040,3335004159,US
3335028736,3335057407,US
@@ -76197,17 +71425,15 @@
3337055232,3337060351,CA
3337060352,3337069055,US
3337069056,3337069119,GB
-3337069120,3337106687,US
-3337106688,3337106943,SG
-3337106944,3337289983,US
+3337069120,3337289983,US
3337289984,3337292799,CA
3337292800,3337293823,US
3337293824,3337297919,CA
3337297920,3337302015,US
3337302016,3337303551,CA
3337303552,3337304063,US
-3337304064,3337304575,CA
-3337304576,3337305599,US
+3337304064,3337304319,CA
+3337304320,3337305599,US
3337305600,3337322495,CA
3337322496,3337322751,US
3337322752,3337323007,CA
@@ -76222,8 +71448,8 @@
3337650251,3337650251,EU
3337650252,3337650431,GB
3337650432,3337650687,CH
-3337650688,3337650943,US
-3337650944,3337651455,CH
+3337650688,3337651199,US
+3337651200,3337651455,CH
3337651456,3337651711,SG
3337651712,3337653503,CH
3337653504,3337653759,JP
@@ -76348,9 +71574,7 @@
3338770432,3338772479,PR
3338772480,3338825727,US
3338825728,3338827775,AW
-3338827776,3338849615,US
-3338849616,3338849631,FR
-3338849632,3338912767,US
+3338827776,3338912767,US
3338912768,3338913023,EC
3338913024,3338916351,US
3338916352,3338916479,CN
@@ -76500,7 +71724,9 @@
3339937280,3339937535,MX
3339937536,3339937816,US
3339937817,3339937879,CN
-3339937880,3339938595,US
+3339937880,3339937922,US
+3339937923,3339937983,PL
+3339937984,3339938595,US
3339938596,3339938622,ID
3339938623,3339938652,TH
3339938653,3339938817,US
@@ -76524,9 +71750,7 @@
3339952128,3339956223,CA
3339956224,3339965439,US
3339965440,3339968511,CA
-3339968512,3339991807,US
-3339991808,3339992063,CA
-3339992064,3340059343,US
+3339968512,3340059343,US
3340059344,3340059359,CA
3340059360,3340071679,US
3340071680,3340071743,ES
@@ -76576,13 +71800,7 @@
3340677120,3340679167,CA
3340679168,3340694783,US
3340694784,3340695039,CA
-3340695040,3340845567,US
-3340846080,3340846111,US
-3340846112,3340846119,CA
-3340846120,3340846127,GB
-3340846128,3340846131,MX
-3340846132,3340846139,BR
-3340846140,3340857343,US
+3340695040,3340857343,US
3340857344,3340858015,CA
3340858016,3340858047,US
3340858048,3340858367,CA
@@ -76593,11 +71811,7 @@
3340925104,3340925159,US
3340925160,3340925167,FR
3340925168,3340925175,BE
-3340925176,3340925247,US
-3340925248,3340925255,AR
-3340925256,3340925279,US
-3340925280,3340925287,CA
-3340925288,3340925335,US
+3340925176,3340925335,US
3340925336,3340925343,DK
3340925344,3340925383,US
3340925384,3340925391,RU
@@ -76614,9 +71828,7 @@
3340925528,3340925535,US
3340925536,3340925543,RU
3340925544,3340925551,GB
-3340925552,3340925607,US
-3340925608,3340925615,AU
-3340925616,3340925631,US
+3340925552,3340925631,US
3340925632,3340925639,FR
3340925640,3340925647,CO
3340925648,3340925679,US
@@ -76655,12 +71867,10 @@
3340926160,3340926175,AR
3340926176,3340926191,US
3340926192,3340926199,BR
-3340926200,3340926207,DE
-3340926208,3340926215,US
+3340926200,3340926215,US
3340926216,3340926223,SE
3340926224,3340926231,PT
-3340926232,3340926239,CA
-3340926240,3340926247,US
+3340926232,3340926247,US
3340926248,3340926255,AR
3340926256,3340926263,AU
3340926264,3340926271,US
@@ -76671,9 +71881,7 @@
3340926320,3340926327,RU
3340926328,3340926343,US
3340926344,3340926351,DE
-3340926352,3340926407,US
-3340926408,3340926415,GB
-3340926416,3340926439,US
+3340926352,3340926439,US
3340926440,3340926447,NO
3340926448,3340926455,DE
3340926456,3340926463,US
@@ -76689,14 +71897,12 @@
3340926600,3340926607,BR
3340926608,3340926615,US
3340926616,3340926623,NO
-3340926624,3340926655,GB
+3340926624,3340926655,US
3340926656,3340926663,CA
3340926664,3340926671,BR
3340926672,3340926679,US
3340926680,3340926687,RO
-3340926688,3340926791,US
-3340926792,3340926799,GB
-3340926800,3340926815,US
+3340926688,3340926815,US
3340926816,3340926823,CA
3340926824,3340926887,US
3340926888,3340926895,BR
@@ -76792,9 +71998,7 @@
3341479936,3341480447,DE
3341480448,3341484287,US
3341484288,3341485055,CA
-3341485056,3341487103,US
-3341487104,3341487615,GB
-3341487616,3341488895,US
+3341485056,3341488895,US
3341488896,3341489151,AP
3341489152,3341511679,US
3341511680,3341517823,CA
@@ -76868,9 +72072,7 @@
3342139392,3342204927,CH
3342204928,3342487551,US
3342487552,3342488575,CA
-3342488576,3342488639,US
-3342488640,3342488703,GB
-3342488704,3342488831,SC
+3342488576,3342488831,US
3342488832,3342488863,GB
3342488864,3342488872,US
3342488873,3342488882,BG
@@ -76933,9 +72135,7 @@
3342831104,3342831359,IN
3342831360,3342878971,US
3342878972,3342878972,EU
-3342878973,3342928383,US
-3342928384,3342928639,CA
-3342928640,3343013887,US
+3342878973,3343013887,US
3343013888,3343015935,CA
3343015936,3343046919,US
3343046920,3343046923,IT
@@ -76973,10 +72173,10 @@
3343055872,3343056895,CA
3343056896,3343108863,US
3343108864,3343109119,EU
-3343109120,3343127551,US
-3343127552,3343127807,GB
-3343127808,3343153407,US
-3343153408,3343155199,CA
+3343109120,3343153151,US
+3343153152,3343153167,CA
+3343153168,3343153175,US
+3343153176,3343155199,CA
3343155200,3343167487,US
3343167488,3343169535,CA
3343169536,3343171583,US
@@ -77038,9 +72238,7 @@
3344242176,3344242687,US
3344242688,3344255999,CA
3344256000,3344261631,US
-3344261888,3344263423,CA
-3344263424,3344263679,US
-3344263680,3344266239,CA
+3344261888,3344266239,CA
3344266240,3344266751,US
3344266752,3344268543,CA
3344268544,3344268799,GB
@@ -77090,9 +72288,7 @@
3344486400,3344488447,NL
3344488448,3344552959,US
3344552960,3344553215,GB
-3344553216,3344631807,US
-3344631808,3344632063,AU
-3344632064,3344633855,US
+3344553216,3344633855,US
3344633856,3344637951,CH
3344637952,3344649215,US
3344649216,3344650239,PR
@@ -77132,11 +72328,7 @@
3345299456,3345301503,CA
3345301504,3345309855,US
3345309856,3345309871,BR
-3345309872,3345309959,US
-3345309960,3345309967,ES
-3345309968,3345310079,US
-3345310080,3345310143,PL
-3345310144,3345310207,US
+3345309872,3345310207,US
3345310208,3345310231,CA
3345310232,3345310287,US
3345310288,3345310295,AR
@@ -77404,9 +72596,7 @@
3346332104,3346332111,GB
3346332112,3346497535,US
3346497536,3346498559,CA
-3346498560,3346499839,US
-3346499840,3346500095,CN
-3346500096,3346505783,US
+3346498560,3346505783,US
3346505784,3346505791,GB
3346505792,3346505895,US
3346505896,3346505903,AU
@@ -77428,9 +72618,7 @@
3346506280,3346506287,CA
3346506288,3346506311,US
3346506312,3346506319,CO
-3346506320,3346506391,US
-3346506392,3346506399,GB
-3346506400,3346506415,US
+3346506320,3346506415,US
3346506416,3346506423,IN
3346506424,3346506447,US
3346506448,3346506455,CA
@@ -77517,8 +72705,8 @@
3349545216,3349545727,CA
3349545728,3349545983,US
3349545984,3349551103,CA
-3349551104,3349553407,US
-3349553408,3349608447,CA
+3349551104,3349553663,US
+3349553664,3349608447,CA
3349608448,3349609215,US
3349609216,3349610239,CA
3349610240,3349614591,US
@@ -77529,17 +72717,11 @@
3349640192,3349641215,CA
3349641216,3349643263,US
3349643264,3349644287,CA
-3349644288,3349644656,US
-3349644657,3349644672,GB
-3349644673,3349645215,US
-3349645216,3349645231,ID
-3349645232,3349645311,US
+3349644288,3349645311,US
3349645312,3349647359,CA
3349647360,3349649407,US
3349649408,3349653503,CA
-3349653504,3349711474,US
-3349711475,3349711508,GB
-3349711509,3349711539,US
+3349653504,3349711539,US
3349711540,3349711547,GB
3349711548,3349723260,US
3349723261,3349723265,CA
@@ -77600,19 +72782,7 @@
3350491648,3350491903,PL
3350491904,3350492961,US
3350492962,3350492990,GB
-3350492991,3350495577,US
-3350495578,3350495585,GB
-3350495586,3350495602,US
-3350495603,3350495604,BD
-3350495605,3350495873,US
-3350495874,3350495874,IN
-3350495875,3350495881,US
-3350495882,3350495882,IN
-3350495883,3350496305,US
-3350496306,3350496317,PT
-3350496318,3350496447,US
-3350496448,3350496455,PT
-3350496456,3350496532,US
+3350492991,3350496532,US
3350496533,3350496533,IN
3350496534,3350496721,US
3350496722,3350496723,IN
@@ -77781,7 +72951,7 @@
3351074728,3351074729,CA
3351074730,3351074730,US
3351074731,3351074731,IL
-3351074732,3351074732,US
+3351074732,3351074732,BR
3351074733,3351074733,EG
3351074734,3351074735,US
3351074736,3351074738,PE
@@ -77789,7 +72959,7 @@
3351074743,3351074746,AU
3351074747,3351074751,US
3351074752,3351074783,DE
-3351074784,3351074815,TR
+3351074784,3351074815,BR
3351074816,3351076863,CA
3351076864,3351080959,US
3351080960,3351081983,AG
@@ -77825,8 +72995,7 @@
3351197920,3351197951,GB
3351197952,3351197983,US
3351197984,3351198015,MX
-3351198016,3351198031,AL
-3351198032,3351198047,US
+3351198016,3351198047,US
3351198048,3351198063,GB
3351198064,3351198095,US
3351198096,3351198103,CA
@@ -78005,9 +73174,7 @@
3351501824,3351502847,JM
3351502848,3351503871,US
3351503872,3351504895,CA
-3351504896,3351508991,US
-3351508992,3351511039,CA
-3351511040,3351524095,US
+3351504896,3351524095,US
3351524096,3351524351,GB
3351524352,3351642111,US
3351642112,3351695871,CA
@@ -78026,9 +73193,7 @@
3351869440,3351871487,CA
3351871488,3351895551,US
3351895552,3351895807,CA
-3351895808,3351896575,US
-3351896576,3351896831,GB
-3351896832,3351904255,US
+3351895808,3351904255,US
3351912448,3351927551,CA
3351927552,3351927807,US
3351927808,3351959551,CA
@@ -78036,9 +73201,7 @@
3351961600,3351969791,CA
3351969792,3352035327,IL
3352035328,3352036351,CA
-3352036352,3352037887,US
-3352037888,3352038143,GB
-3352038144,3352046591,US
+3352036352,3352046591,US
3352046592,3352049663,CA
3352049664,3352051711,US
3352051712,3352055807,CA
@@ -78071,44 +73234,44 @@
3352887296,3352911903,US
3352911904,3352911911,JP
3352911912,3352911919,US
-3352911920,3352911935,CA
+3352911920,3352911935,SG
3352911936,3352912031,US
3352912032,3352912063,SG
3352912064,3352912095,US
-3352912096,3352912111,CA
+3352912096,3352912111,SG
3352912112,3352912159,US
3352912160,3352912167,JP
3352912168,3352912175,US
-3352912176,3352912191,CA
+3352912176,3352912191,SG
3352912192,3352912351,US
-3352912352,3352912367,CA
+3352912352,3352912367,SG
3352912368,3352912415,US
3352912416,3352912423,JP
3352912424,3352912511,US
3352912512,3352912575,SG
3352912576,3352912607,US
-3352912608,3352912623,CA
+3352912608,3352912623,SG
3352912624,3352912655,US
3352912656,3352912671,CY
3352912672,3352912679,JP
3352912680,3352912687,US
-3352912688,3352912703,CA
+3352912688,3352912703,SG
3352912704,3352912863,US
-3352912864,3352912879,CA
+3352912864,3352912879,SG
3352912880,3352912959,US
3352912960,3352912967,JP
3352912968,3352912975,US
-3352912976,3352912991,CA
+3352912976,3352912991,SG
3352912992,3352913071,US
-3352913072,3352913087,CA
+3352913072,3352913087,SG
3352913088,3352913215,US
3352913216,3352913223,JP
3352913224,3352913231,CN
-3352913232,3352913247,CA
+3352913232,3352913247,SG
3352913248,3352913471,US
3352913472,3352913479,JP
3352913480,3352913487,US
-3352913488,3352913503,CA
+3352913488,3352913503,SG
3352913504,3352913599,US
3352913600,3352913663,SG
3352913664,3352913679,US
@@ -78116,7 +73279,7 @@
3352913688,3352913727,US
3352913728,3352913735,JP
3352913736,3352913823,US
-3352913824,3352913839,CA
+3352913824,3352913839,SG
3352913840,3352913855,US
3352913856,3352913919,SG
3352913920,3352916479,US
@@ -78138,13 +73301,9 @@
3352918016,3352919039,CA
3352919040,3353335349,US
3353335350,3353335353,IN
-3353335354,3353384191,US
-3353384192,3353384447,IN
-3353384448,3353633279,US
-3353633280,3353633535,IN
-3353633536,3353652735,US
-3353652736,3353652991,DE
-3353652992,3353653503,US
+3353335354,3353652735,US
+3353652736,3353652863,DE
+3353652864,3353653503,US
3353653504,3353653759,GB
3353653760,3353722367,US
3353722368,3353722623,GB
@@ -78161,8 +73320,8 @@
3353752678,3353752681,ES
3353752682,3353752716,US
3353752717,3353752720,IT
-3353752721,3353752828,US
-3353752829,3353752830,FR
+3353752721,3353752829,US
+3353752830,3353752830,GB
3353752831,3353752916,US
3353752917,3353752917,GB
3353752918,3353752969,US
@@ -78232,7 +73391,9 @@
3354501120,3354503167,CA
3354503168,3354507327,US
3354507328,3354507335,CY
-3354507336,3354507403,US
+3354507336,3354507367,US
+3354507368,3354507375,CA
+3354507376,3354507403,US
3354507404,3354507407,TH
3354507408,3354507439,US
3354507440,3354507443,ID
@@ -78242,9 +73403,9 @@
3354507536,3354507551,IE
3354507552,3354507599,US
3354507600,3354507607,BR
-3354507608,3354507647,US
-3354507648,3354507679,PT
-3354507680,3354507711,US
+3354507608,3354507687,US
+3354507688,3354507691,CA
+3354507692,3354507711,US
3354507712,3354507719,IN
3354507720,3354507759,US
3354507760,3354507775,AU
@@ -78254,7 +73415,9 @@
3354507816,3354507823,CY
3354507824,3354507879,US
3354507880,3354507887,ID
-3354507888,3354507927,US
+3354507888,3354507915,US
+3354507916,3354507919,CA
+3354507920,3354507927,US
3354507928,3354507931,CA
3354507932,3354507983,US
3354507984,3354507999,CN
@@ -78283,7 +73446,8 @@
3354508328,3354508367,US
3354508368,3354508375,GB
3354508376,3354508383,MY
-3354508384,3354508655,US
+3354508384,3354508391,CA
+3354508392,3354508655,US
3354508656,3354508671,CY
3354508672,3354508735,US
3354508736,3354508767,IN
@@ -78306,9 +73470,7 @@
3354731520,3354731775,AP
3354731776,3354737663,US
3354737664,3354737919,HK
-3354737920,3354751487,US
-3354751488,3354751743,GB
-3354751744,3354770687,US
+3354737920,3354770687,US
3354770688,3354770943,CA
3354770944,3354788095,US
3354788096,3354806399,CA
@@ -78338,9 +73500,7 @@
3355260928,3355262719,CA
3355262720,3355272189,US
3355272190,3355272190,EU
-3355272191,3355309567,US
-3355309568,3355309823,GB
-3355309824,3355310591,US
+3355272191,3355310591,US
3355310592,3355311103,CA
3355311104,3355319295,US
3355319296,3355320319,CA
@@ -78375,7 +73535,8 @@
3355447552,3355447807,AR
3355447808,3355448063,HT
3355448064,3355448319,AR
-3355448320,3355449343,CW
+3355448320,3355448831,CW
+3355448832,3355449343,SX
3355449344,3355450367,CU
3355450368,3355451391,EC
3355451392,3355459071,BR
@@ -78798,8 +73959,8 @@
3356340224,3356341247,HN
3356341248,3356341759,SV
3356341760,3356342015,HN
-3356342016,3356343295,SV
-3356343296,3356343551,HN
+3356342016,3356343039,SV
+3356343040,3356343551,HN
3356343552,3356344319,SV
3356344320,3356360703,CO
3356360704,3356362751,CL
@@ -79006,11 +74167,12 @@
3357605888,3357736959,MX
3357736960,3357745151,VE
3357745152,3357753343,CO
-3357753344,3357773823,VE
+3357753344,3357757487,VE
+3357757488,3357757495,BO
+3357757496,3357773823,VE
3357773824,3357775871,PA
3357775872,3357776895,UY
-3357777920,3357785087,GT
-3357785088,3357786111,SV
+3357777920,3357786111,GT
3357786112,3357802495,VE
3357802496,3357868031,MX
3357868032,3357933567,PE
@@ -79019,7 +74181,9 @@
3358130176,3358131199,EC
3358131200,3358131327,AR
3358131328,3358131455,CO
-3358131456,3358131983,AR
+3358131456,3358131839,AR
+3358131840,3358131967,CO
+3358131968,3358131983,AR
3358131984,3358131999,CO
3358132000,3358132087,AR
3358132088,3358132095,CO
@@ -79074,8 +74238,8 @@
3358154752,3358158847,PE
3358158848,3358159159,AR
3358159160,3358159167,US
-3358159168,3358159359,AR
-3358159360,3358159615,EC
+3358159168,3358159487,AR
+3358159488,3358159615,EC
3358159616,3358159871,US
3358159872,3358160895,VE
3358160896,3358236671,AR
@@ -79087,34 +74251,89 @@
3358326784,3358392319,VE
3358392320,3358457855,AR
3358457856,3358523391,PA
-3358523392,3358543871,AR
+3358523392,3358525439,VE
+3358525440,3358527487,AR
+3358527488,3358529791,VE
+3358529792,3358530303,AR
+3358530304,3358531071,VE
+3358531072,3358533631,AR
+3358533632,3358534143,VE
+3358534144,3358534655,AR
+3358534656,3358535423,VE
+3358535424,3358535679,AR
+3358535680,3358536703,VE
+3358536704,3358537727,AR
+3358537728,3358539519,VE
+3358539520,3358539775,AR
+3358539776,3358543871,VE
3358543872,3358544127,MX
-3358544128,3358558463,AR
+3358544128,3358548223,VE
+3358548224,3358548479,AR
+3358548480,3358549759,VE
+3358549760,3358550015,AR
+3358550016,3358552063,VE
+3358552064,3358556159,AR
+3358556160,3358558463,VE
3358558464,3358558591,PY
-3358558592,3358559231,AR
-3358559232,3358560255,VE
-3358560256,3358561791,AR
-3358561792,3358562303,VE
+3358558592,3358562303,VE
3358562304,3358563327,PE
3358563328,3358563839,CO
-3358563840,3358563967,AR
+3358563840,3358563967,VE
3358563968,3358564095,CO
3358564096,3358564351,MX
-3358564352,3358567423,AR
+3358564352,3358564415,AR
+3358564416,3358564447,VE
+3358564448,3358564479,AR
+3358564480,3358564511,VE
+3358564512,3358564575,AR
+3358564576,3358564607,VE
+3358564608,3358564623,AR
+3358564624,3358564719,VE
+3358564720,3358564751,AR
+3358564752,3358564767,VE
+3358564768,3358564783,AR
+3358564784,3358564807,VE
+3358564808,3358564815,AR
+3358564816,3358564839,VE
+3358564840,3358564847,AR
+3358564848,3358565183,VE
+3358565184,3358565247,AR
+3358565248,3358565311,VE
+3358565312,3358565343,AR
+3358565344,3358565567,VE
+3358565568,3358565599,AR
+3358565600,3358565791,VE
+3358565792,3358565855,AR
+3358565856,3358566047,VE
+3358566048,3358566111,AR
+3358566112,3358566847,VE
+3358566848,3358566879,AR
+3358566880,3358566911,VE
+3358566912,3358566975,AR
+3358566976,3358567103,VE
+3358567104,3358567167,AR
+3358567168,3358567231,VE
+3358567232,3358567263,AR
+3358567264,3358567327,VE
+3358567328,3358567343,AR
+3358567344,3358567375,VE
+3358567376,3358567391,AR
+3358567392,3358567407,VE
+3358567408,3358567423,AR
3358567424,3358568959,CO
-3358568960,3358569471,AR
-3358569472,3358570495,VE
+3358568960,3358570495,VE
3358570496,3358570751,MX
3358570752,3358571263,PE
3358571264,3358572031,MX
-3358572032,3358577151,AR
+3358572032,3358572543,VE
+3358572544,3358577151,AR
3358577152,3358577407,PE
3358577408,3358578431,AR
3358578432,3358578687,VE
3358578688,3358579967,CO
3358579968,3358580223,AR
3358580224,3358580735,MX
-3358580736,3358588927,AR
+3358580736,3358588927,VE
3358588928,3358654463,PE
3358654464,3358658559,AR
3358658560,3358660607,CL
@@ -79277,7 +74496,11 @@
3360405504,3360407551,HN
3360407552,3360423935,PA
3360423936,3360686079,MX
-3360686080,3360708991,AR
+3360686080,3360705791,AR
+3360705792,3360706047,US
+3360706048,3360708223,AR
+3360708224,3360708351,US
+3360708352,3360708991,AR
3360708992,3360709119,US
3360709120,3360710271,AR
3360710272,3360710399,US
@@ -79367,7 +74590,9 @@
3362430976,3362447359,CO
3362447360,3362448383,SV
3362448384,3362448895,HN
-3362448896,3362451455,SV
+3362448896,3362449151,SV
+3362449152,3362449407,HN
+3362449408,3362451455,SV
3362451456,3362452479,AR
3362452480,3362452991,BO
3362452992,3362453247,HN
@@ -79434,6 +74659,8 @@
3362942976,3362945023,GT
3362945024,3362983935,AR
3362983936,3362984447,PY
+3362984448,3362984703,CR
+3362984704,3362984959,PA
3362984960,3362985983,PE
3362985984,3362988031,AR
3362988032,3362992127,EC
@@ -79484,11 +74711,7 @@
3363602432,3363610623,CW
3363614720,3363617791,AR
3363617792,3363618815,PE
-3363618816,3363620863,UY
-3363620864,3363621631,BR
-3363621632,3363621887,UY
-3363621888,3363622911,BR
-3363622912,3363627007,UY
+3363618816,3363627007,UY
3363627008,3363635199,EC
3363635200,3363651583,UY
3363651584,3363667967,AR
@@ -79512,7 +74735,8 @@
3384410112,3384672255,CL
3384672256,3384688639,HN
3384688640,3384705023,CO
-3384705024,3384706047,PA
+3384705024,3384705535,US
+3384705536,3384706047,PA
3384706048,3384706559,US
3384706560,3384721407,PA
3384721408,3384725503,US
@@ -79547,7 +74771,8 @@
3386613760,3386621951,AR
3386621952,3386630143,CO
3386630144,3386632191,UY
-3386638336,3386642431,CW
+3386638336,3386642175,CW
+3386642176,3386642431,CA
3386642432,3386644479,AR
3386646528,3386647551,CO
3386647552,3386647679,VE
@@ -79587,9 +74812,7 @@
3387293696,3387359231,PE
3387359232,3387424767,AR
3387424768,3387555839,CO
-3387555840,3387568127,AR
-3387568128,3387568639,PE
-3387568640,3387568895,AR
+3387555840,3387568895,AR
3387568896,3387569023,PE
3387569024,3387569351,AR
3387569352,3387569355,PE
@@ -79612,16 +74835,14 @@
3387604992,3387608319,AR
3387608320,3387608447,EC
3387608448,3387608575,AR
-3387608576,3387608703,EC
-3387608704,3387609087,AR
+3387608576,3387608831,EC
+3387608832,3387609087,AR
3387609088,3387613183,EC
3387613184,3387614079,AR
3387614080,3387614207,VE
3387614208,3387614591,AR
3387614592,3387614719,VE
-3387614720,3387616767,AR
-3387616768,3387617023,VE
-3387617024,3387617439,AR
+3387614720,3387617439,AR
3387617440,3387617447,CO
3387617448,3387618175,AR
3387618176,3387618303,CO
@@ -79673,10 +74894,8 @@
3389025536,3389025791,IN
3389025792,3389026047,PK
3389026048,3389026303,TH
-3389026304,3389026559,IN
-3389026560,3389027071,AU
-3389027072,3389027583,IN
-3389027584,3389028607,TH
+3389026304,3389028351,IN
+3389028352,3389028607,TH
3389028608,3389028863,NZ
3389028864,3389029375,CN
3389029376,3389029887,NZ
@@ -79701,8 +74920,9 @@
3389071360,3389079551,PG
3389079552,3389087743,SG
3389087744,3389087999,HK
-3389088000,3389091839,SG
-3389091840,3389093887,AU
+3389088000,3389092351,SG
+3389092352,3389092863,PH
+3389092864,3389093887,AU
3389093888,3389095935,IN
3389095936,3389104127,SG
3389104128,3389112319,SB
@@ -79737,7 +74957,9 @@
3389211136,3389211391,IN
3389211392,3389211647,AU
3389211648,3389212671,TH
-3389212672,3389214463,IN
+3389212672,3389213439,AU
+3389213440,3389214207,IN
+3389214208,3389214463,SG
3389214464,3389214719,AU
3389214720,3389218815,NZ
3389218816,3389222911,AU
@@ -79805,8 +75027,8 @@
3389358080,3389366271,PK
3389366272,3389370177,AU
3389370178,3389370178,PG
-3389370179,3389373183,AU
-3389373184,3389373439,US
+3389370179,3389372415,AU
+3389372416,3389373439,US
3389373440,3389374463,AU
3389374464,3389378559,MN
3389382656,3389390847,TW
@@ -80149,9 +75371,7 @@
3390418944,3390423039,MV
3390423040,3390423807,SG
3390423808,3390424063,AP
-3390424064,3390427135,SG
-3390427136,3390427391,CN
-3390427392,3390439423,SG
+3390424064,3390439423,SG
3390439424,3390441471,NZ
3390441472,3390443519,TH
3390443520,3390447359,NZ
@@ -80179,20 +75399,10 @@
3390802432,3390832639,NZ
3390832640,3390963711,TH
3390963712,3391094783,KR
-3391094784,3391166463,JP
-3391166464,3391166719,US
-3391166720,3391170047,JP
-3391170048,3391170303,US
-3391170304,3391187967,JP
-3391187968,3391188479,US
-3391188480,3391192063,JP
+3391094784,3391192063,JP
3391192064,3391192319,AP
-3391192320,3391197951,JP
-3391197952,3391198207,US
-3391198208,3391356927,JP
-3391356928,3391360511,NZ
-3391360512,3391360767,AU
-3391360768,3391441407,NZ
+3391192320,3391356927,JP
+3391356928,3391441407,NZ
3391441408,3391441663,PH
3391441664,3391444479,NZ
3391444480,3391444991,VN
@@ -80488,7 +75698,10 @@
3392442368,3392442623,HK
3392442624,3392442879,AU
3392442880,3392443391,ID
-3392443392,3392444415,MY
+3392443392,3392443647,IN
+3392443648,3392443903,MY
+3392443904,3392444159,IN
+3392444160,3392444415,JP
3392444416,3392444671,NZ
3392444672,3392444927,IN
3392444928,3392445183,JP
@@ -80541,8 +75754,10 @@
3392700416,3392708607,SG
3392708608,3392712703,ID
3392712704,3392716799,AF
-3392716800,3392733183,IN
-3392733184,3392741375,ID
+3392716800,3392733439,IN
+3392733440,3392733695,ID
+3392733696,3392734207,IN
+3392734208,3392741375,ID
3392741376,3392765951,PH
3392765952,3392782335,TH
3392789504,3392790527,HK
@@ -80571,7 +75786,9 @@
3392832512,3392833535,IN
3392833536,3392835583,AU
3392835584,3392839679,JP
-3392839680,3392856063,ID
+3392839680,3392845823,ID
+3392845824,3392847871,HK
+3392847872,3392856063,ID
3392856064,3392857087,AU
3392857088,3392857343,IN
3392857344,3392858111,AU
@@ -80590,10 +75807,7 @@
3392864256,3392864511,CN
3392864512,3392864767,AU
3392864768,3392865279,IN
-3392865280,3392865439,NZ
-3392865440,3392865471,NU
-3392865472,3392865535,NZ
-3392865536,3392866303,NU
+3392865280,3392866303,NU
3392866304,3392880639,AU
3392880640,3392888831,PK
3392888832,3392892927,AU
@@ -80700,20 +75914,13 @@
3393150976,3393159167,IN
3393159168,3393163007,HK
3393163008,3393164287,SG
-3393164288,3393165823,HK
-3393165824,3393166335,SG
-3393166336,3393167359,HK
+3393164288,3393167359,HK
3393167360,3393175551,CN
3393175552,3393183743,PK
3393183744,3393183999,ID
3393184000,3393184255,AP
3393184256,3393184767,PK
-3393184768,3393185023,PG
-3393185024,3393185279,SG
-3393185280,3393185535,US
-3393185536,3393187071,SG
-3393187072,3393187327,US
-3393187328,3393187839,SG
+3393184768,3393187839,SG
3393187840,3393189887,NP
3393189888,3393190911,CN
3393190912,3393191167,IN
@@ -80722,7 +75929,8 @@
3393257472,3393260031,CN
3393260032,3393260543,BD
3393260544,3393265663,AU
-3393265664,3393273855,CK
+3393265664,3393267711,NZ
+3393267712,3393273855,CK
3393273856,3393282047,AU
3393286144,3393290239,ID
3393290240,3393298431,IN
@@ -80746,8 +75954,7 @@
3393478656,3393486847,AU
3393486848,3393495039,IN
3393495040,3393499135,AU
-3393499136,3393499391,US
-3393499392,3393503231,SG
+3393499136,3393503231,SG
3393503232,3393507327,HK
3393507328,3393511423,SG
3393511424,3393519615,KR
@@ -80843,7 +76050,9 @@
3393858048,3393858559,ID
3393858560,3393858815,AU
3393858816,3393859071,ID
-3393859072,3393860095,AU
+3393859072,3393859327,AU
+3393859328,3393859583,JP
+3393859584,3393860095,AU
3393860096,3393860607,HK
3393860608,3393861631,IN
3393861632,3393861887,VN
@@ -80979,8 +76188,7 @@
3394484224,3394486271,JP
3394486272,3394489599,HK
3394489600,3394489631,AP
-3394489632,3394489855,IN
-3394489856,3394494463,HK
+3394489632,3394494463,HK
3394494464,3394498559,JP
3394498560,3394500607,HK
3394500608,3394501631,SG
@@ -81006,9 +76214,7 @@
3394631680,3394634751,HK
3394634752,3394635775,IN
3394635776,3394637823,KR
-3394637824,3394641151,AF
-3394641152,3394641407,CH
-3394641408,3394641919,AF
+3394637824,3394641919,AF
3394641920,3394648063,AU
3394648064,3394650111,JP
3394650112,3394658303,HK
@@ -81042,7 +76248,8 @@
3394764800,3394772991,HK
3394772992,3394775039,PK
3394777088,3394781183,JP
-3394781184,3394789375,MP
+3394781184,3394783231,US
+3394783232,3394789375,MP
3394789376,3394797567,HK
3394797568,3394813951,IN
3394813952,3394815999,JP
@@ -81055,7 +76262,9 @@
3394835968,3394836223,AP
3394836224,3394836479,HK
3394836480,3394838527,BT
-3394838528,3394846719,NZ
+3394838528,3394841087,NZ
+3394841088,3394841599,AU
+3394841600,3394846719,NZ
3394846720,3394850815,IN
3394850816,3394854911,JP
3394855936,3394856959,AU
@@ -81063,9 +76272,7 @@
3394859008,3394860031,JP
3394860032,3394860543,ID
3394860544,3394861055,IN
-3394861056,3394861311,HK
-3394861312,3394861567,TW
-3394861568,3394862079,HK
+3394861056,3394862079,HK
3394862080,3394863103,KR
3394863104,3394871295,NZ
3394871296,3394879487,AU
@@ -81184,9 +76391,7 @@
3395181568,3395182591,CN
3395182592,3395182847,AP
3395182848,3395190783,SG
-3395190784,3395195135,JP
-3395195136,3395195391,US
-3395195392,3395198975,JP
+3395190784,3395198975,JP
3395198976,3395203071,MY
3395203072,3395215359,JP
3395215360,3395219455,HK
@@ -81242,9 +76447,7 @@
3397120000,3397124095,PK
3397124096,3397128191,JP
3397128192,3397131263,CN
-3397131264,3397131775,HK
-3397131776,3397132031,SG
-3397132032,3397132287,HK
+3397131264,3397132287,HK
3397132288,3397136383,AU
3397136384,3397140479,JP
3397140480,3397148671,AU
@@ -81304,8 +76507,8 @@
3397285888,3397287935,BD
3397287936,3397296127,SG
3397296128,3397298687,HK
-3397298688,3397299199,SG
-3397299200,3397304319,HK
+3397298688,3397299455,SG
+3397299456,3397304319,HK
3397304320,3397308415,NZ
3397308416,3397312511,HK
3397312512,3397320703,JP
@@ -81323,13 +76526,11 @@
3397369856,3397374463,CN
3397374464,3397374975,AU
3397374976,3397386239,CN
-3397386240,3397387519,GU
-3397387520,3397388287,US
-3397388288,3397394431,GU
+3397386240,3397387775,GU
+3397387776,3397388031,US
+3397388032,3397394431,GU
3397394432,3397402623,PH
-3397402624,3397406719,GU
-3397406720,3397406975,US
-3397406976,3397410815,GU
+3397402624,3397410815,GU
3397410816,3397411327,IN
3397411328,3397411583,SG
3397411584,3397411839,HK
@@ -81371,7 +76572,8 @@
3397513728,3397514239,SG
3397514240,3397515263,AU
3397515264,3397516287,NP
-3397516288,3397516799,AU
+3397516288,3397516543,AU
+3397516544,3397516799,NZ
3397516800,3397517055,JP
3397517056,3397517311,AU
3397517312,3397525503,CN
@@ -81383,12 +76585,9 @@
3397530624,3397531647,ID
3397531648,3397532671,SG
3397532672,3397533695,JP
-3397533696,3397550591,HK
-3397550592,3397550847,IN
-3397550848,3397551359,HK
+3397533696,3397551359,HK
3397551360,3397551615,AP
-3397551616,3397551871,MY
-3397551872,3397557247,HK
+3397551616,3397557247,HK
3397557248,3397557503,AP
3397557504,3397566463,HK
3397566464,3397574655,AU
@@ -81403,8 +76602,7 @@
3397603328,3397605375,KH
3397605376,3397607423,AU
3397607424,3397623807,IN
-3397623808,3397627903,MP
-3397627904,3397631999,GU
+3397623808,3397631999,GU
3397632000,3397636095,JP
3397636096,3397640191,CN
3397640192,3397648383,MN
@@ -81440,9 +76638,7 @@
3397836800,3397844991,AU
3397844992,3397869823,JP
3397869824,3397870079,AU
-3397870080,3397903103,JP
-3397903104,3397903359,HK
-3397903360,3397908735,JP
+3397870080,3397908735,JP
3397908736,3397908991,AU
3397908992,3397910527,JP
3397910528,3397914111,SG
@@ -81545,20 +76741,14 @@
3398619136,3398621183,AU
3398621184,3398623231,HK
3398623232,3398631423,ID
-3398631424,3398636031,JP
-3398636032,3398636287,MY
-3398636288,3398637119,JP
+3398631424,3398637119,JP
3398637120,3398637183,HK
3398637184,3398637823,JP
3398637824,3398638079,PH
-3398638080,3398640127,JP
-3398640128,3398640639,MY
-3398640640,3398641151,AU
-3398641152,3398641407,MY
-3398641408,3398641663,SG
-3398641664,3398643711,AU
-3398643712,3398647807,JP
-3398647808,3398668287,AU
+3398638080,3398640639,JP
+3398640640,3398640895,AU
+3398640896,3398641663,JP
+3398641664,3398668287,AU
3398668288,3398672383,CN
3398672384,3398680575,PK
3398680576,3398684671,ID
@@ -81625,7 +76815,6 @@
3399016448,3399024639,ID
3399024640,3399025663,CN
3399026176,3399026431,SG
-3399026432,3399026687,AU
3399026688,3399028735,HK
3399028736,3399032831,ID
3399032832,3399036927,IN
@@ -81683,8 +76872,8 @@
3399557120,3399565311,SG
3399565312,3399581695,AU
3399581696,3399583743,HK
-3399583744,3399584767,US
-3399584768,3399589631,HK
+3399583744,3399583999,US
+3399584000,3399589631,HK
3399589632,3399589887,NP
3399589888,3399593983,HK
3399593984,3399598079,BD
@@ -81742,7 +76931,11 @@
3399841792,3399852031,TW
3399852032,3399856127,JP
3399856128,3399860223,CN
-3399860224,3399864319,PG
+3399860224,3399863551,PG
+3399863552,3399863615,AU
+3399863616,3399863647,PG
+3399863648,3399863807,AU
+3399863808,3399864319,PG
3399864320,3399868415,CN
3399868416,3399872255,PK
3399872256,3399873023,CN
@@ -81769,9 +76962,8 @@
3399954432,3399974911,US
3399974912,3399995391,MY
3399995392,3399999487,KR
-3399999488,3400000255,SG
-3400000256,3400000511,AU
-3400000512,3400004607,SG
+3399999488,3400001535,AU
+3400001536,3400004607,SG
3400004608,3400005631,AU
3400005632,3400006143,SG
3400006144,3400006399,HK
@@ -81831,7 +77023,9 @@
3400264704,3400265215,ID
3400265216,3400265471,AU
3400265472,3400265727,IN
-3400265728,3400267775,PG
+3400265728,3400265983,PG
+3400265984,3400266239,AU
+3400266240,3400267775,PG
3400267776,3400268799,KR
3400268800,3400269823,MO
3400269824,3400270847,CN
@@ -81881,14 +77075,10 @@
3400438202,3400438202,US
3400438203,3400438527,HK
3400438528,3400438783,AF
-3400438784,3400439039,US
-3400439040,3400440319,HK
-3400440320,3400440575,US
-3400440576,3400441599,HK
+3400438784,3400441599,HK
3400441600,3400441855,AU
3400441856,3400445951,NZ
-3400445952,3400446463,AU
-3400446464,3400450047,NZ
+3400445952,3400450047,AU
3400450048,3400458239,JP
3400458240,3400466431,AU
3400466432,3400499199,MO
@@ -81901,17 +77091,13 @@
3400535552,3400536063,AU
3400536064,3400548351,JP
3400548352,3400581119,TH
-3400581120,3400587775,SG
-3400587776,3400588287,IN
-3400588288,3400589311,SG
+3400581120,3400589311,SG
3400589312,3400597503,CN
3400597504,3400605695,HK
3400605696,3400607743,JP
3400607744,3400608767,AU
3400608768,3400609791,IN
-3400609792,3400618751,JP
-3400618752,3400619007,US
-3400619008,3400630271,JP
+3400609792,3400630271,JP
3400630272,3400646655,IN
3400646656,3400648815,AU
3400648816,3400648831,HK
@@ -81989,16 +77175,12 @@
3401545728,3401547775,BD
3401547776,3401580543,IN
3401580544,3402629119,CN
-3402629120,3403081727,JP
-3403081728,3403082751,US
-3403082752,3404506879,JP
+3402629120,3404506879,JP
3404506880,3404507135,US
3404507136,3404630015,JP
3404630016,3404633087,US
-3404633088,3404693759,JP
-3404693760,3404694015,US
-3404694016,3404694271,JP
-3404694272,3404697599,US
+3404633088,3404693503,JP
+3404693504,3404697599,US
3404697600,3405774847,JP
3405774848,3405775871,AU
3405775872,3405776895,CN
@@ -82287,8 +77469,8 @@
3406392320,3406392575,CN
3406392576,3406405119,AU
3406405120,3406405375,CN
-3406405376,3406409983,AU
-3406409984,3406411775,NZ
+3406405376,3406409727,AU
+3406409728,3406411775,NZ
3406411776,3406434303,AU
3406434304,3406436351,MY
3406436352,3406438911,AU
@@ -82329,7 +77511,7 @@
3406528000,3406528255,CN
3406528256,3406528511,AU
3406528512,3406528767,AP
-3406528768,3406529535,AU
+3406528768,3406529535,HK
3406529536,3406529791,IN
3406529792,3406530047,HK
3406530048,3406530303,SG
@@ -82535,7 +77717,9 @@
3406948096,3406948351,CN
3406948352,3406948607,AU
3406948608,3406948863,CN
-3406948864,3406952447,AU
+3406948864,3406950399,AU
+3406950400,3406951423,NF
+3406951424,3406952447,AU
3406952448,3406952703,CN
3406952704,3406952959,PH
3406952960,3406954239,AU
@@ -83659,9 +78843,7 @@
3411107840,3411111935,LK
3411111936,3411116031,JP
3411116032,3411124223,KR
-3411124224,3411125631,MM
-3411125632,3411126015,SG
-3411126016,3411128319,MM
+3411124224,3411128319,MM
3411128320,3411130367,HK
3411130368,3411132415,ID
3411132416,3411144703,PK
@@ -83676,7 +78858,6 @@
3411161088,3411165183,PK
3411165184,3411173375,MY
3411173376,3411177471,AU
-3411181056,3411181311,US
3411181568,3411189759,JP
3411189760,3411197951,AU
3411197952,3411202047,BD
@@ -83729,9 +78910,7 @@
3411460096,3411464191,NZ
3411464192,3411468287,AU
3411468288,3411470335,JP
-3411470336,3411471615,HK
-3411471616,3411471871,GB
-3411471872,3411472383,HK
+3411470336,3411472383,HK
3411472384,3411474943,JP
3411475200,3411475455,AU
3411475456,3411475967,HK
@@ -83791,13 +78970,9 @@
3411763200,3411767295,CN
3411767296,3411769343,MN
3411769344,3411771391,CN
-3411771392,3411773183,HK
-3411773184,3411773439,US
-3411773440,3411773951,HK
+3411771392,3411773951,HK
3411773952,3411774207,BD
-3411774208,3411775487,HK
-3411775488,3411775743,US
-3411775744,3411775811,HK
+3411774208,3411775811,HK
3411775812,3411775813,US
3411775814,3411777023,HK
3411777024,3411777279,ID
@@ -83953,9 +79128,7 @@
3413180416,3413213183,TH
3413213184,3413229567,VN
3413229568,3413245951,AU
-3413245952,3413247999,SG
-3413248000,3413250047,MY
-3413250048,3413262335,SG
+3413245952,3413262335,SG
3413262336,3413270527,PH
3413270528,3413278719,TH
3413278720,3413295103,NZ
@@ -84147,8 +79320,7 @@
3415191552,3415195647,IN
3415195648,3415220223,AU
3415220224,3415224319,NZ
-3415224320,3415226367,IN
-3415226368,3415228415,US
+3415224320,3415228415,US
3415228416,3415236607,KH
3415236608,3415244799,CN
3415244800,3415277567,TH
@@ -84185,9 +79357,7 @@
3415605248,3415736319,TH
3415736320,3415740927,SG
3415740928,3415741183,TH
-3415741184,3415751167,SG
-3415751168,3415751423,TH
-3415751424,3415752703,SG
+3415741184,3415752703,SG
3415752704,3415760895,CN
3415760896,3415769087,NZ
3415769088,3415777279,CN
@@ -84246,9 +79416,7 @@
3416295936,3416296447,IN
3416296448,3416297471,KR
3416297472,3416301567,TW
-3416301568,3416305663,PH
-3416305664,3416307711,JP
-3416307712,3416309759,PH
+3416301568,3416309759,PH
3416309760,3416317951,CN
3416317952,3416326143,TW
3416326144,3416327167,CN
@@ -84289,7 +79457,9 @@
3416709120,3416709375,AU
3416709376,3416709631,ID
3416709632,3416710143,AU
-3416710144,3416711167,HK
+3416710144,3416710655,HK
+3416710656,3416710911,JP
+3416710912,3416711167,HK
3416711168,3416719359,AU
3416719360,3416727551,PH
3416727552,3416735743,JP
@@ -84342,7 +79512,8 @@
3416997888,3417014271,AU
3417014272,3417022463,JP
3417022464,3417030655,KR
-3417030656,3417035007,AU
+3417030656,3417034751,AU
+3417034752,3417035007,NZ
3417035008,3417035775,IN
3417035776,3417036799,JP
3417036800,3417037823,ID
@@ -84369,8 +79540,7 @@
3417182208,3417184767,AU
3417184768,3417185023,NZ
3417185024,3417185279,AF
-3417185280,3417185535,NZ
-3417185536,3417185791,SG
+3417185280,3417185791,SG
3417185792,3417186303,NZ
3417186304,3417194495,HK
3417194496,3417198591,JP
@@ -84420,16 +79590,17 @@
3417374720,3417440255,PH
3417440256,3417664511,JP
3417664512,3417665279,US
-3417665280,3417668095,JP
-3417668096,3417668351,US
-3417668352,3417833471,JP
+3417665280,3417833471,JP
3417833472,3417849855,NZ
3417849856,3417853951,AU
3417853952,3417858047,CN
3417858048,3417866239,JP
3417866240,3417915391,HK
3417915392,3417939967,TH
-3417939968,3417947903,PF
+3417939968,3417946111,PF
+3417946112,3417947135,AU
+3417947136,3417947391,IN
+3417947648,3417947903,AU
3417947904,3417948159,IN
3417948160,3417964543,AU
3417964544,3418030079,HK
@@ -84489,7 +79660,8 @@
3418247168,3418251263,PH
3418251264,3418255359,CN
3418255360,3418257407,ID
-3418257408,3418259455,HK
+3418257408,3418259199,HK
+3418259200,3418259455,MY
3418259456,3418267647,IN
3418267648,3418271743,VN
3418271744,3418273791,SG
@@ -84500,8 +79672,8 @@
3418282240,3418282495,AU
3418282496,3418283519,PH
3418283520,3418284031,AU
-3418284032,3418286079,SG
-3418286080,3418287103,AU
+3418284032,3418286847,SG
+3418286848,3418287103,AU
3418287104,3418288127,SG
3418288128,3418290175,ID
3418290176,3418290431,IN
@@ -84534,18 +79706,20 @@
3418365952,3418374143,TH
3418374144,3418382335,AU
3418382336,3418390527,JP
-3418390528,3418392831,AU
-3418392832,3418397183,AP
+3418390528,3418394623,AU
+3418394624,3418397183,AP
3418397184,3418397439,MY
3418397440,3418399231,AP
3418399232,3418399247,PH
-3418399248,3418402815,AP
+3418399248,3418400255,AP
+3418400256,3418400767,AU
+3418400768,3418402815,AP
3418402816,3418404863,AU
-3418404864,3418406911,AP
+3418404864,3418405439,AP
+3418405440,3418405471,AU
+3418405472,3418406911,AP
3418406912,3418423295,IN
-3418423296,3418434559,HK
-3418434560,3418434815,AU
-3418434816,3418444091,HK
+3418423296,3418444091,HK
3418444092,3418444095,CN
3418444096,3418448639,HK
3418448640,3418448895,SG
@@ -84554,9 +79728,7 @@
3418472448,3418480639,AU
3418480640,3418488831,CN
3418488832,3418505215,AU
-3418505216,3418512639,JP
-3418512640,3418512895,AU
-3418512896,3418513407,JP
+3418505216,3418513407,JP
3418513408,3418517503,IN
3418517504,3418519551,MN
3418519552,3418521599,CN
@@ -84601,9 +79773,7 @@
3418996736,3419013119,IN
3419013120,3419062271,AU
3419062272,3419070463,JP
-3419070464,3419070719,HK
-3419070720,3419070975,GB
-3419070976,3419072511,HK
+3419070464,3419072511,HK
3419073024,3419073279,SG
3419073280,3419073535,FJ
3419073536,3419074559,CN
@@ -84630,9 +79800,9 @@
3419412480,3419414527,PH
3419414528,3419422719,CN
3419422720,3419439103,AU
-3419439104,3419457279,SG
-3419457280,3419457535,MY
-3419457536,3419459407,SG
+3419439104,3419456767,SG
+3419456768,3419457023,US
+3419457024,3419459407,SG
3419459408,3419459423,GB
3419459424,3419459551,SG
3419459552,3419459583,HK
@@ -84776,7 +79946,8 @@
3422552064,3422717439,US
3422717440,3422717695,US
3422717696,3422847487,US
-3422847488,3422847999,GB
+3422847488,3422847743,GB
+3422847744,3422847999,FR
3422848000,3422850559,US
3422850560,3422851071,GB
3422851072,3422955519,US
@@ -84789,9 +79960,7 @@
3423092848,3423093759,VI
3423093760,3423094783,US
3423094784,3423095807,CA
-3423095808,3423101695,US
-3423101696,3423101951,IN
-3423101952,3423143935,US
+3423095808,3423143935,US
3423143936,3423145983,CA
3423145984,3423161031,US
3423161032,3423161039,CA
@@ -85047,9 +80216,7 @@
3423356384,3423356399,IN
3423356400,3423357111,US
3423357112,3423357127,AE
-3423357128,3423357511,US
-3423357512,3423357519,DE
-3423357520,3423361023,US
+3423357128,3423361023,US
3423361024,3423361279,AU
3423361280,3423363463,US
3423363464,3423363471,AU
@@ -85136,7 +80303,9 @@
3423378304,3423378431,CA
3423378432,3423378943,US
3423378944,3423379455,CA
-3423379456,3423393903,US
+3423379456,3423389047,US
+3423389048,3423389055,MX
+3423389056,3423393903,US
3423393904,3423393911,RU
3423393912,3423396487,US
3423396488,3423396495,RU
@@ -85176,11 +80345,7 @@
3423493968,3423493975,AT
3423493976,3423533055,US
3423533056,3423535103,AI
-3423535104,3423540087,US
-3423540088,3423540095,HN
-3423540096,3423540175,US
-3423540176,3423540183,HN
-3423540184,3423543295,US
+3423535104,3423543295,US
3423543296,3423545343,CA
3423545344,3423554183,US
3423554184,3423554191,CA
@@ -85193,10 +80358,29 @@
3423574016,3423579135,US
3423579136,3423580159,CA
3423580160,3423582207,US
-3423582208,3423586303,CA
+3423582208,3423584271,CA
+3423584272,3423584279,US
+3423584280,3423584303,CA
+3423584304,3423584311,AU
+3423584312,3423584327,CA
+3423584328,3423584351,US
+3423584352,3423584359,AU
+3423584360,3423584367,CA
+3423584368,3423584375,US
+3423584376,3423584407,CA
+3423584408,3423584415,US
+3423584416,3423584423,CA
+3423584424,3423584431,US
+3423584432,3423584447,CA
+3423584448,3423584455,US
+3423584456,3423584719,CA
+3423584720,3423584735,US
+3423584736,3423586303,CA
3423586304,3423589151,US
3423589152,3423589159,GB
-3423589160,3423591143,US
+3423589160,3423590871,US
+3423590872,3423590879,HT
+3423590880,3423591143,US
3423591144,3423591151,HN
3423591152,3423592599,US
3423592600,3423592607,ES
@@ -85274,12 +80458,24 @@
3425846784,3425847039,EU
3425847040,3425850519,CA
3425850520,3425850527,US
-3425850528,3425894399,CA
+3425850528,3425864583,CA
+3425864584,3425864591,US
+3425864592,3425864711,CA
+3425864712,3425864719,US
+3425864720,3425865327,CA
+3425865328,3425865335,US
+3425865336,3425894399,CA
3425894400,3425911967,US
3425911968,3425911983,IL
3425911984,3425911999,US
3425912000,3425912031,CA
-3425912032,3425914127,US
+3425912032,3425912575,US
+3425912576,3425912591,IL
+3425912592,3425912815,US
+3425912816,3425912831,DO
+3425912832,3425912847,US
+3425912848,3425912863,BB
+3425912864,3425914127,US
3425914128,3425914143,IL
3425914144,3425914159,US
3425914160,3425914239,A2
@@ -85289,7 +80485,13 @@
3426007808,3426008063,EU
3426008064,3426013183,US
3426013184,3426013439,IL
-3426013440,3426369023,US
+3426013440,3426306559,US
+3426306560,3426306567,IN
+3426306568,3426306591,US
+3426306592,3426306623,IN
+3426306624,3426306687,US
+3426306688,3426306815,IN
+3426306816,3426369023,US
3426369024,3426369535,CA
3426369536,3426387967,US
3426387968,3426388991,MX
@@ -85652,7 +80854,9 @@
3428606384,3428606415,US
3428606416,3428606431,CA
3428606432,3428606463,US
-3428606464,3428606719,CA
+3428606464,3428606591,CA
+3428606592,3428606655,US
+3428606656,3428606719,CA
3428606720,3428606911,US
3428606912,3428606975,IS
3428606976,3428607743,US
@@ -85714,12 +80918,20 @@
3428644016,3428644047,US
3428644048,3428644063,CA
3428644064,3428644351,US
-3428644352,3428645951,CA
+3428644352,3428645631,CA
+3428645632,3428645695,US
+3428645696,3428645759,CA
+3428645760,3428645791,US
+3428645792,3428645855,CA
+3428645856,3428645887,US
+3428645888,3428645951,CA
3428645952,3428646015,US
3428646016,3428646079,CA
3428646080,3428646143,US
3428646144,3428646911,CA
-3428646912,3428661247,US
+3428646912,3428660735,US
+3428660736,3428660991,CA
+3428660992,3428661247,US
3428661248,3428661503,CA
3428661504,3428671487,US
3428679680,3428689646,US
@@ -85737,11 +80949,9 @@
3428894048,3428958207,US
3428958208,3428962303,CO
3428962304,3429171199,US
-3429171200,3429235007,CA
-3429235008,3429235039,BM
-3429235040,3429236735,CA
+3429171200,3429236735,CA
3429236736,3429381887,US
-3429381888,3429382143,GB
+3429381888,3429382143,EU
3429382144,3429382399,DE
3429382400,3429500927,US
3429500928,3429502975,A2
@@ -85753,9 +80963,7 @@
3429520952,3429520955,GB
3429520956,3429739175,US
3429739176,3429739179,GB
-3429739180,3429774599,US
-3429774600,3429774607,BD
-3429774608,3429775359,US
+3429739180,3429775359,US
3429775360,3429777407,TC
3429777408,3429892095,US
3429892096,3429957631,CA
@@ -85841,16 +81049,11 @@
3431114496,3431114751,CA
3431114752,3431468031,US
3431468032,3431469055,CA
-3431469056,3431469311,LU
-3431469312,3431470847,US
-3431470848,3431471103,GB
-3431471104,3431520767,US
+3431469056,3431520767,US
3431520768,3431521023,AP
-3431521024,3431526911,US
-3431526912,3431526921,NL
+3431521024,3431526921,US
3431526922,3431526922,EU
-3431526923,3431527167,NL
-3431527168,3431596287,US
+3431526923,3431596287,US
3431596288,3431602687,CA
3431602688,3431602943,US
3431602944,3431606271,CA
@@ -85887,7 +81090,9 @@
3431732804,3431732807,RO
3431732808,3431732895,US
3431732896,3431732927,RO
-3431732928,3431745023,US
+3431732928,3431734095,US
+3431734096,3431734103,IL
+3431734104,3431745023,US
3431745024,3431745279,BE
3431745280,3431745791,US
3431745792,3431746047,GB
@@ -85991,8 +81196,7 @@
3434134080,3434423295,US
3434423296,3434423303,CA
3434423304,3434427391,US
-3434427392,3434427647,HN
-3434427648,3434428415,HR
+3434427392,3434428415,HR
3434428416,3434433279,US
3434433280,3434433535,PR
3434433536,3434553343,US
@@ -86069,9 +81273,7 @@
3436476416,3436478463,AW
3436478464,3436492799,US
3436492800,3436493055,NL
-3436493056,3436508927,US
-3436508928,3436509183,BB
-3436509184,3436697087,US
+3436493056,3436697087,US
3436697088,3436697343,VE
3436697344,3437232383,US
3437232384,3437232639,CA
@@ -86094,7 +81296,9 @@
3437281536,3437292799,US
3437292800,3437293055,CA
3437293056,3437297919,US
-3437297920,3437307391,CA
+3437297920,3437301759,CA
+3437301760,3437305855,US
+3437305856,3437307391,CA
3437307392,3437307903,US
3437307904,3437310975,CA
3437310976,3437311487,US
@@ -86189,187 +81393,9 @@
3437756160,3437756415,IE
3437756416,3437772799,US
3437772800,3437776895,CA
-3437776896,3437789847,US
-3437789848,3437789855,IN
-3437789856,3437789863,US
+3437776896,3437789863,US
3437789864,3437789871,AU
-3437789872,3437790143,US
-3437790144,3437790159,CA
-3437790160,3437790215,US
-3437790216,3437790223,AU
-3437790224,3437790615,US
-3437790616,3437790623,GB
-3437790624,3437790735,US
-3437790736,3437790743,SE
-3437790744,3437791199,US
-3437791200,3437791207,CO
-3437791208,3437791647,US
-3437791648,3437791663,CA
-3437791664,3437791935,US
-3437791936,3437791999,AU
-3437792000,3437792031,US
-3437792032,3437792063,AU
-3437792064,3437792279,US
-3437792280,3437792287,SE
-3437792288,3437792415,US
-3437792416,3437792423,AU
-3437792424,3437792527,US
-3437792528,3437792535,MX
-3437792536,3437792735,US
-3437792736,3437792743,CA
-3437792744,3437792775,US
-3437792776,3437792783,CA
-3437792784,3437793279,US
-3437793280,3437793535,BD
-3437793536,3437793727,US
-3437793728,3437793791,BD
-3437793792,3437794647,US
-3437794648,3437794655,GB
-3437794656,3437794831,US
-3437794832,3437794839,ID
-3437794840,3437794879,US
-3437794880,3437794887,CA
-3437794888,3437795103,US
-3437795104,3437795111,IN
-3437795112,3437795247,US
-3437795248,3437795255,CA
-3437795256,3437795303,US
-3437795304,3437795311,BD
-3437795312,3437795807,US
-3437795808,3437795815,AR
-3437795816,3437795919,US
-3437795920,3437795927,TH
-3437795928,3437796919,US
-3437796920,3437796935,ES
-3437796936,3437799303,US
-3437799304,3437799311,CA
-3437799312,3437799359,US
-3437799360,3437799367,IN
-3437799368,3437799439,US
-3437799440,3437799447,CA
-3437799448,3437799471,US
-3437799472,3437799479,CA
-3437799480,3437799599,US
-3437799600,3437799607,MX
-3437799608,3437799663,US
-3437799664,3437799671,GB
-3437799672,3437799775,US
-3437799776,3437799783,CA
-3437799784,3437799791,US
-3437799792,3437799799,IN
-3437799800,3437799871,US
-3437799872,3437799879,CA
-3437799880,3437800031,US
-3437800032,3437800039,AU
-3437800040,3437800215,US
-3437800216,3437800223,CN
-3437800224,3437800231,US
-3437800232,3437800239,CA
-3437800240,3437800831,US
-3437800832,3437800847,PH
-3437800848,3437800959,US
-3437800960,3437800975,FR
-3437800976,3437801695,US
-3437801696,3437801703,AU
-3437801704,3437801727,US
-3437801728,3437801735,CO
-3437801736,3437801743,CA
-3437801744,3437802039,US
-3437802040,3437802047,BR
-3437802048,3437802207,US
-3437802208,3437802223,BR
-3437802224,3437802495,US
-3437802496,3437802503,GB
-3437802504,3437802559,US
-3437802560,3437802567,SA
-3437802568,3437802727,US
-3437802728,3437802735,AR
-3437802736,3437802743,GB
-3437802744,3437802791,US
-3437802792,3437802799,CA
-3437802800,3437802823,GB
-3437802824,3437802879,US
-3437802880,3437802887,GB
-3437802888,3437803055,US
-3437803056,3437803071,EC
-3437803072,3437803383,US
-3437803384,3437803391,BR
-3437803392,3437803535,US
-3437803536,3437803543,GB
-3437803544,3437803647,US
-3437803648,3437803655,AU
-3437803656,3437803759,US
-3437803760,3437803767,CA
-3437803768,3437803783,US
-3437803784,3437803791,CA
-3437803792,3437803887,US
-3437803888,3437803895,CA
-3437803896,3437803919,US
-3437803920,3437803927,CA
-3437803928,3437803967,US
-3437803968,3437803975,FR
-3437803976,3437804063,US
-3437804064,3437804071,IL
-3437804072,3437804159,US
-3437804160,3437804167,GB
-3437804168,3437804175,NZ
-3437804176,3437804335,US
-3437804336,3437804351,PE
-3437804352,3437804447,US
-3437804448,3437804455,CA
-3437804456,3437804471,US
-3437804472,3437804487,IN
-3437804488,3437804671,US
-3437804672,3437804703,CA
-3437804704,3437804767,US
-3437804768,3437804799,PH
-3437804800,3437804807,US
-3437804808,3437804815,CA
-3437804816,3437804903,US
-3437804904,3437804911,CA
-3437804912,3437805159,US
-3437805160,3437805167,MX
-3437805168,3437805175,US
-3437805176,3437805183,CA
-3437805184,3437805191,GB
-3437805192,3437805207,US
-3437805208,3437805215,GB
-3437805216,3437805231,US
-3437805232,3437805239,FR
-3437805240,3437805271,US
-3437805272,3437805279,IL
-3437805280,3437814623,US
-3437814624,3437814631,CA
-3437814632,3437815807,US
-3437815808,3437815815,IN
-3437815816,3437815991,US
-3437815992,3437815999,CA
-3437816000,3437816007,AU
-3437816008,3437816095,US
-3437816096,3437816103,IT
-3437816104,3437816159,US
-3437816160,3437816167,IL
-3437816168,3437816183,US
-3437816184,3437816191,BR
-3437816192,3437816263,US
-3437816264,3437816271,GB
-3437816272,3437816431,US
-3437816432,3437816439,CA
-3437816440,3437817375,US
-3437817376,3437817383,IL
-3437817384,3437817391,US
-3437817392,3437817399,SG
-3437817400,3437817647,US
-3437817648,3437817663,FR
-3437817664,3437817855,US
-3437817856,3437817983,BD
-3437817984,3437819471,US
-3437819472,3437819479,IL
-3437819480,3437819871,US
-3437819872,3437819887,FR
-3437819888,3437821823,US
-3437821824,3437821887,BD
-3437821888,3437961215,US
+3437789872,3437961215,US
3437961216,3437964287,ZA
3437964288,3438006271,US
3438006272,3438010367,CA
@@ -86402,17 +81428,9 @@
3438546176,3438546183,US
3438546184,3438552271,CA
3438552272,3438552287,US
-3438552288,3438558479,CA
-3438558480,3438558487,US
-3438558488,3438558575,CA
-3438558576,3438558583,US
-3438558584,3438558615,CA
-3438558616,3438558623,US
-3438558624,3438559647,CA
+3438552288,3438559647,CA
3438559648,3438559679,US
-3438559680,3438569215,CA
-3438569216,3438569343,US
-3438569344,3438570031,CA
+3438559680,3438570031,CA
3438570032,3438570039,MY
3438570040,3438570495,CA
3438570496,3438570527,US
@@ -86642,19 +81660,7 @@
3449189792,3449189839,US
3449189840,3449190655,CA
3449190656,3449190911,US
-3449190912,3449191175,CA
-3449191176,3449191183,US
-3449191184,3449191255,CA
-3449191256,3449191263,US
-3449191264,3449191303,CA
-3449191304,3449191311,US
-3449191312,3449191319,CA
-3449191320,3449191327,US
-3449191328,3449191343,CA
-3449191344,3449191351,GB
-3449191352,3449191367,CA
-3449191368,3449191375,US
-3449191376,3449191679,CA
+3449190912,3449191679,CA
3449191680,3449191743,US
3449191744,3449195775,CA
3449195776,3449196031,US
@@ -86766,22 +81772,7 @@
3449594112,3449598975,US
3449598976,3449599231,AU
3449599232,3449638911,US
-3449638912,3449639359,GB
-3449639360,3449639361,US
-3449639362,3449639362,BE
-3449639363,3449639363,CH
-3449639364,3449639364,CZ
-3449639365,3449639365,US
-3449639366,3449639366,ES
-3449639367,3449639367,FR
-3449639368,3449639368,US
-3449639369,3449639369,IE
-3449639370,3449639370,IT
-3449639371,3449639371,NL
-3449639372,3449639372,PL
-3449639373,3449639373,RO
-3449639374,3449639423,US
-3449639424,3449639679,GB
+3449638912,3449639679,GB
3449639680,3449639935,US
3449639936,3449640191,GB
3449640192,3449640447,NL
@@ -86798,7 +81789,9 @@
3449843200,3449843711,YE
3449843712,3449874687,US
3449874688,3449874943,AG
-3449874944,3449910719,US
+3449874944,3449884159,US
+3449884160,3449884415,AS
+3449884416,3449910719,US
3449910720,3449910783,CA
3449910784,3449923583,US
3449923584,3449923839,ES
@@ -86846,9 +81839,11 @@
3450685440,3450699007,US
3450699008,3450699263,CA
3450699776,3450731519,US
-3450731520,3450732287,CA
-3450732288,3450773503,US
-3450773504,3450777599,CA
+3450731520,3450732543,CA
+3450732544,3450773503,US
+3450773504,3450774783,CA
+3450774784,3450775039,US
+3450775040,3450777599,CA
3450777600,3450849791,US
3450849792,3450850047,EU
3450850048,3450851839,US
@@ -86895,10 +81890,12 @@
3450961008,3450961015,DM
3450961016,3450974255,US
3450974256,3450974271,GB
-3450974272,3450974719,US
-3450974720,3450975231,ZM
+3450974272,3450974975,US
+3450974976,3450975231,ZM
3450975232,3450975743,LB
-3450975744,3450982399,US
+3450975744,3450976511,US
+3450976512,3450976767,IL
+3450976768,3450982399,US
3450982400,3450984447,TW
3450984448,3450986495,PH
3450986496,3450986751,HK
@@ -86981,9 +81978,7 @@
3451912192,3452174335,CA
3452174336,3452436479,US
3452436480,3452502015,CA
-3452502016,3452663039,US
-3452663040,3452663295,GB
-3452663296,3452678143,US
+3452502016,3452678143,US
3452678144,3452678399,EU
3452678400,3452682239,BE
3452682240,3452715007,US
@@ -87281,13 +82276,11 @@
3453681944,3453681951,IN
3453681952,3453740031,US
3453740032,3453740159,MX
-3453740160,3454002431,US
-3454002432,3454002687,IT
-3454002688,3454002943,US
-3454002944,3454003199,ES
-3454003200,3454004991,US
-3454004992,3454005247,GB
-3454005248,3454292479,US
+3453740160,3454003013,US
+3454003014,3454003014,ES
+3454003015,3454004997,US
+3454004998,3454004998,GB
+3454004999,3454292479,US
3454292480,3454292735,GB
3454292736,3454436351,US
3454436352,3454436607,GU
@@ -87311,9 +82304,7 @@
3454617600,3454617855,CA
3454617856,3454618111,US
3454618112,3454618367,CA
-3454618368,3454619007,US
-3454619008,3454619135,DO
-3454619136,3454619647,US
+3454618368,3454619647,US
3454619648,3454631423,CA
3454631424,3454631935,US
3454631936,3454634751,CA
@@ -87431,9 +82422,7 @@
3455418368,3455418879,KY
3455418880,3455421439,US
3455421440,3455421951,BE
-3455421952,3455433471,US
-3455433472,3455433727,DE
-3455433728,3455453439,US
+3455421952,3455453439,US
3455453440,3455453695,HT
3455453696,3455551999,US
3455552000,3455552255,EC
@@ -87591,7 +82580,9 @@
3456303104,3456311295,JP
3456311296,3456892927,US
3456892928,3456958463,CA
-3456958464,3457312191,US
+3456958464,3457246367,US
+3457246368,3457246383,SE
+3457246384,3457312191,US
3457312192,3457312255,IE
3457312256,3457327663,US
3457327664,3457327679,NZ
@@ -87659,9 +82650,7 @@
3458145744,3458145759,DE
3458145760,3458195455,US
3458195456,3458196479,SG
-3458196480,3458595327,US
-3458595328,3458595583,PR
-3458595584,3458765631,US
+3458196480,3458765631,US
3458765632,3458765695,CA
3458765696,3458811903,US
3458813952,3458818047,CA
@@ -87721,8 +82710,8 @@
3459288064,3459290111,US
3459290112,3459290623,CL
3459290624,3459310591,US
-3459310592,3459311103,KY
-3459311104,3459312639,US
+3459310592,3459310847,KY
+3459310848,3459312639,US
3459312640,3459312687,MX
3459312688,3459312767,US
3459312768,3459312895,MX
@@ -87852,15 +82841,17 @@
3459731456,3459735551,CA
3459735552,3459745535,US
3459745536,3459745791,IT
-3459745792,3459848959,US
+3459745792,3459842815,US
+3459842816,3459843071,AR
+3459843072,3459848959,US
3459848960,3459849215,FR
-3459849216,3459850239,US
-3459850240,3459850495,CA
+3459849216,3459850431,US
+3459850432,3459850495,CA
3459850496,3459852991,US
3459852992,3459853007,CA
-3459853008,3459874559,US
-3459874560,3459874815,GB
-3459874816,3460057283,US
+3459853008,3459873807,US
+3459873808,3459873823,IT
+3459873824,3460057283,US
3460057284,3460057287,TH
3460057288,3460061687,US
3460061688,3460061691,HK
@@ -87874,7 +82865,9 @@
3460104704,3460105215,MX
3460105216,3460108895,US
3460108896,3460108903,FI
-3460108904,3460114431,US
+3460108904,3460111871,US
+3460111872,3460111887,CA
+3460111888,3460114431,US
3460114432,3460116479,SR
3460116480,3460161535,US
3460161536,3460165631,PR
@@ -88229,10 +83222,8 @@
3460949056,3460949183,ID
3460949184,3460950271,US
3460950272,3460950527,DE
-3460950528,3460950559,HK
-3460950560,3460950671,US
-3460950672,3460950687,JP
-3460950688,3460950991,US
+3460950528,3460950783,HK
+3460950784,3460950991,US
3460950992,3460951007,JP
3460951008,3460951295,US
3460951296,3460951551,GB
@@ -88348,7 +83339,11 @@
3461536960,3461536975,CA
3461536976,3461554175,US
3461554176,3461556223,CA
-3461558272,3461808127,US
+3461558272,3461597887,US
+3461597888,3461597951,CO
+3461597952,3461598015,US
+3461598016,3461598079,CO
+3461598080,3461808127,US
3461808128,3461873663,CA
3461873664,3461897727,US
3461897728,3461897983,CA
@@ -88434,8 +83429,7 @@
3462593792,3462594559,GN
3462594560,3462633471,US
3462633472,3462633727,SG
-3462633728,3462633799,BV
-3462633800,3462633823,US
+3462633728,3462633823,US
3462633824,3462633855,SG
3462633856,3462633983,US
3462633984,3462634239,SG
@@ -88467,13 +83461,17 @@
3463156736,3463157759,BO
3463157760,3463176191,US
3463176192,3463176703,CW
-3463176704,3463184383,US
+3463176704,3463183943,US
+3463183944,3463183951,CN
+3463183952,3463184383,US
3463184384,3463194623,CA
3463194624,3463198719,US
3463198720,3463213311,CA
3463213312,3463213567,US
3463214080,3463215103,US
-3463215104,3463243775,CA
+3463215104,3463229327,CA
+3463229328,3463229335,US
+3463229336,3463243775,CA
3463243776,3463245055,US
3463245056,3463249663,CA
3463249664,3463502335,US
@@ -88508,11 +83506,9 @@
3464172032,3464173567,CA
3464173568,3464173823,US
3464173824,3464174591,CA
+3464175104,3464175359,US
3464175360,3464180735,CA
-3464180736,3464184487,US
-3464184488,3464184495,GB
-3464184496,3464184511,CA
-3464184512,3464191911,US
+3464180736,3464191911,US
3464191912,3464191919,ES
3464191920,3464195943,US
3464195944,3464195951,AU
@@ -88628,7 +83624,9 @@
3464785152,3464785407,AR
3464785408,3464802303,US
3464802304,3464806399,CA
-3464806400,3465154559,US
+3464806400,3464818943,US
+3464818944,3464819199,PL
+3464819200,3465154559,US
3465154560,3465158655,BS
3465158656,3465177087,US
3465177088,3465179135,PE
@@ -89049,9 +84047,7 @@
3468067760,3468067775,AR
3468067776,3468068095,US
3468068096,3468068351,MC
-3468068352,3468068527,US
-3468068528,3468068543,MX
-3468068544,3468068863,US
+3468068352,3468068863,US
3468068864,3468069631,CA
3468069632,3468071791,US
3468071792,3468071807,MX
@@ -89070,11 +84066,7 @@
3468075936,3468075967,US
3468075968,3468075999,MX
3468076000,3468076031,PH
-3468076032,3468076191,US
-3468076192,3468076207,BR
-3468076208,3468076223,US
-3468076224,3468076287,GB
-3468076288,3468077631,US
+3468076032,3468077631,US
3468077632,3468077663,AR
3468077664,3468079327,US
3468079328,3468079359,BR
@@ -89232,19 +84224,33 @@
3468546048,3468619007,US
3468619008,3468619263,CA
3468619264,3468623871,US
-3468623872,3468628119,CA
+3468623872,3468627663,CA
+3468627664,3468627679,US
+3468627680,3468628119,CA
3468628120,3468628127,GB
3468628128,3468628143,CA
3468628144,3468628159,US
3468628160,3468628183,CA
3468628184,3468628191,US
-3468628192,3468633759,CA
+3468628192,3468631583,CA
+3468631584,3468631615,US
+3468631616,3468631679,CA
+3468631680,3468631695,US
+3468631696,3468632735,CA
+3468632736,3468632743,US
+3468632744,3468632975,CA
+3468632976,3468632991,US
+3468632992,3468633759,CA
3468633760,3468633791,US
3468633792,3468635583,CA
3468635584,3468635647,US
3468635648,3468635919,CA
3468635920,3468635935,US
-3468635936,3468639935,CA
+3468635936,3468637839,CA
+3468637840,3468637847,SK
+3468637848,3468638143,CA
+3468638144,3468638159,US
+3468638160,3468639935,CA
3468639936,3468639967,US
3468639968,3468656639,CA
3468656640,3468799999,US
@@ -89261,11 +84267,7 @@
3469176320,3469176575,MX
3469176576,3469186303,US
3469186304,3469186559,MX
-3469186560,3469747455,US
-3469747456,3469747711,CA
-3469747712,3469857535,US
-3469857536,3469857791,CA
-3469857792,3469893631,US
+3469186560,3469893631,US
3469893632,3469901823,CA
3469901824,3470131199,US
3470131200,3470135295,AG
@@ -89776,13 +84778,18 @@
3470362624,3470362687,SE
3470362688,3470362731,US
3470362732,3470362735,AE
-3470362736,3470362895,US
+3470362736,3470362767,US
+3470362768,3470362783,MA
+3470362784,3470362847,US
+3470362848,3470362855,AF
+3470362856,3470362895,US
3470362896,3470362911,AU
3470362912,3470363455,US
3470363456,3470363519,SE
3470363520,3470363551,US
3470363552,3470363555,AF
-3470363556,3470363615,US
+3470363556,3470363599,US
+3470363600,3470363615,KW
3470363616,3470363631,ES
3470363632,3470363759,US
3470363760,3470363767,CA
@@ -89790,15 +84797,11 @@
3470363904,3470363919,CA
3470363920,3470363967,US
3470363968,3470363983,CA
-3470363984,3470364095,US
-3470364096,3470364103,AU
-3470364104,3470364415,US
+3470363984,3470364415,US
3470364416,3470364479,SE
3470364480,3470364559,US
3470364560,3470364575,HN
-3470364576,3470453247,US
-3470453248,3470453503,GB
-3470453504,3470458879,US
+3470364576,3470458879,US
3470458880,3470475263,KR
3470475264,3470509311,US
3470509312,3470509567,CA
@@ -90028,9 +85031,7 @@
3473381312,3473381343,DE
3473381344,3473703551,US
3473703552,3473703679,CA
-3473703680,3473715391,US
-3473715392,3473715407,GB
-3473715408,3473755391,US
+3473703680,3473755391,US
3473755392,3473755647,HN
3473755648,3473765887,US
3473765888,3473766399,EC
@@ -90088,9 +85089,7 @@
3475310848,3475311103,DE
3475311104,3475384679,US
3475384680,3475384687,CA
-3475384688,3475406527,US
-3475406528,3475406591,BR
-3475406592,3475589887,US
+3475384688,3475589887,US
3475589888,3475590143,EC
3475590144,3475670015,US
3475670016,3475670047,AG
@@ -90160,9 +85159,7 @@
3476447232,3476455423,CA
3476455424,3476718616,US
3476718617,3476718617,IN
-3476718618,3476720125,US
-3476720126,3476720126,GB
-3476720127,3476720363,US
+3476718618,3476720363,US
3476720364,3476720367,LV
3476720368,3476721159,US
3476721160,3476721167,IT
@@ -90189,13 +85186,7 @@
3476722528,3476722543,AU
3476722544,3476722591,US
3476722592,3476722607,GB
-3476722608,3476722719,US
-3476722720,3476722727,CO
-3476722728,3476722759,US
-3476722760,3476722767,IN
-3476722768,3476723670,US
-3476723671,3476723674,GB
-3476723675,3476725151,US
+3476722608,3476725151,US
3476725152,3476725183,AU
3476725184,3476725215,ZA
3476725216,3476725247,US
@@ -90232,7 +85223,9 @@
3477312512,3477313023,US
3477313024,3477313279,US
3477313280,3477313535,US
-3477313536,3478114303,US
+3477313536,3477542143,US
+3477542144,3477542175,IN
+3477542176,3478114303,US
3478114304,3478118399,PE
3478118400,3478192127,US
3478192128,3478257663,CA
@@ -90247,11 +85240,15 @@
3478261960,3478261983,SG
3478261984,3478262271,US
3478262272,3478262279,SG
-3478262280,3478262655,US
+3478262280,3478262399,US
+3478262400,3478262415,SG
+3478262416,3478262655,US
3478262656,3478262671,SG
3478262672,3478262743,US
3478262744,3478262751,SG
-3478262752,3478274255,US
+3478262752,3478262775,US
+3478262776,3478262783,HK
+3478262784,3478274255,US
3478274256,3478274303,GB
3478274304,3478274399,US
3478274400,3478274431,GB
@@ -90265,7 +85262,17 @@
3478274640,3478274655,GB
3478274656,3478274687,US
3478274688,3478274719,GB
-3478274720,3478294527,US
+3478274720,3478274823,US
+3478274824,3478274831,GB
+3478274832,3478274943,US
+3478274944,3478275007,GB
+3478275008,3478285407,US
+3478285408,3478285439,GB
+3478285440,3478285567,US
+3478285568,3478285607,GB
+3478285608,3478285615,US
+3478285616,3478285631,GB
+3478285632,3478294527,US
3478294528,3478294543,GB
3478294544,3478323391,US
3478323392,3478323399,CA
@@ -90287,175 +85294,7 @@
3478372352,3478380543,MX
3478380544,3479207935,US
3479207936,3479240703,CA
-3479240704,3479289919,US
-3479289920,3479289951,BD
-3479289952,3479290063,US
-3479290064,3479290071,MX
-3479290072,3479290087,US
-3479290088,3479290095,LC
-3479290096,3479290207,US
-3479290208,3479290239,BD
-3479290240,3479290351,US
-3479290352,3479290359,IN
-3479290360,3479290367,US
-3479290368,3479290431,BD
-3479290432,3479290487,US
-3479290488,3479290495,GB
-3479290496,3479290631,US
-3479290632,3479290639,GB
-3479290640,3479290743,US
-3479290744,3479290751,EC
-3479290752,3479290767,US
-3479290768,3479290783,CA
-3479290784,3479290869,US
-3479290870,3479290871,CA
-3479290872,3479291071,US
-3479291072,3479291087,CA
-3479291088,3479291279,US
-3479291280,3479291287,CA
-3479291288,3479291671,US
-3479291672,3479291679,CA
-3479291680,3479291687,AU
-3479291688,3479291695,US
-3479291696,3479291703,AU
-3479291704,3479291831,US
-3479291832,3479291847,AU
-3479291848,3479291855,JM
-3479291856,3479291871,US
-3479291872,3479291879,CA
-3479291880,3479292007,US
-3479292008,3479292015,CA
-3479292016,3479292223,US
-3479292224,3479292231,UY
-3479292232,3479292239,IN
-3479292240,3479292671,US
-3479292672,3479292687,AU
-3479292688,3479292735,US
-3479292736,3479292751,BD
-3479292752,3479292815,US
-3479292816,3479292823,IL
-3479292824,3479293007,US
-3479293008,3479293023,AU
-3479293024,3479293311,US
-3479293312,3479293319,CA
-3479293320,3479293583,US
-3479293584,3479293591,GB
-3479293592,3479294031,US
-3479294032,3479294039,BD
-3479294040,3479294223,US
-3479294224,3479294231,TH
-3479294232,3479294401,US
-3479294402,3479294403,BG
-3479294404,3479294419,US
-3479294420,3479294423,CA
-3479294424,3479294425,US
-3479294426,3479294427,CA
-3479294428,3479294487,US
-3479294488,3479294495,MX
-3479294496,3479294527,US
-3479294528,3479294543,BD
-3479294544,3479294663,US
-3479294664,3479294671,AU
-3479294672,3479294775,US
-3479294776,3479294783,CA
-3479294784,3479295015,US
-3479295016,3479295023,MY
-3479295024,3479295071,US
-3479295072,3479295079,CR
-3479295080,3479295103,US
-3479295104,3479295111,CA
-3479295112,3479295359,US
-3479295360,3479295367,AU
-3479295368,3479295519,US
-3479295520,3479295527,CA
-3479295528,3479295583,US
-3479295584,3479295591,NL
-3479295592,3479295703,US
-3479295704,3479295735,MY
-3479295736,3479295767,US
-3479295768,3479295775,MY
-3479295776,3479296007,US
-3479296008,3479296015,CA
-3479296016,3479296079,US
-3479296080,3479296095,MY
-3479296096,3479296319,US
-3479296320,3479296335,BD
-3479296336,3479296607,US
-3479296608,3479296615,BM
-3479296616,3479296631,US
-3479296632,3479296639,JP
-3479296640,3479296671,US
-3479296672,3479296679,NL
-3479296680,3479296759,US
-3479296760,3479296763,IL
-3479296764,3479297615,US
-3479297616,3479297623,CA
-3479297624,3479298047,US
-3479298048,3479298063,IS
-3479298064,3479298079,GB
-3479298080,3479298103,US
-3479298104,3479298111,BM
-3479298112,3479298199,US
-3479298200,3479298207,BM
-3479298208,3479298319,US
-3479298320,3479298327,IN
-3479298328,3479298399,US
-3479298400,3479298407,IN
-3479298408,3479298463,US
-3479298464,3479298471,CA
-3479298472,3479298591,US
-3479298592,3479298599,AU
-3479298600,3479298759,US
-3479298760,3479298767,CA
-3479298768,3479301127,US
-3479301128,3479301135,GB
-3479301136,3479301183,US
-3479301184,3479301191,GB
-3479301192,3479301287,US
-3479301288,3479301295,IL
-3479301296,3479301455,US
-3479301456,3479301463,IN
-3479301464,3479301519,US
-3479301520,3479301535,TH
-3479301536,3479301551,CA
-3479301552,3479301579,US
-3479301580,3479301583,IN
-3479301584,3479301663,US
-3479301664,3479301679,NL
-3479301680,3479301687,US
-3479301688,3479301695,NZ
-3479301696,3479301775,US
-3479301776,3479301783,IN
-3479301784,3479303759,US
-3479303760,3479303767,ZA
-3479303768,3479303951,US
-3479303952,3479303959,NL
-3479303960,3479303967,US
-3479303968,3479303975,NL
-3479303976,3479303983,US
-3479303984,3479303991,CA
-3479303992,3479304319,US
-3479304320,3479304327,JM
-3479304328,3479304447,US
-3479304448,3479304455,IL
-3479304456,3479304463,MX
-3479304464,3479304863,US
-3479304864,3479304871,PK
-3479304872,3479305175,US
-3479305176,3479305183,BM
-3479305184,3479305215,US
-3479305216,3479305231,EG
-3479305232,3479305271,US
-3479305272,3479305279,IN
-3479305280,3479305583,US
-3479305584,3479305599,BD
-3479305600,3479305983,US
-3479305984,3479306015,CA
-3479306016,3479306031,US
-3479306032,3479306039,PK
-3479306040,3479306079,US
-3479306080,3479306087,BD
-3479306088,3479568383,US
+3479240704,3479568383,US
3479568384,3479633919,CA
3479633920,3479789343,US
3479789344,3479789360,UY
@@ -90464,7 +85303,11 @@
3479956480,3479956735,US
3479956736,3479961599,CA
3479961600,3480223743,US
-3480223744,3480256511,CA
+3480223744,3480226415,CA
+3480226416,3480226423,US
+3480226424,3480251007,CA
+3480251008,3480251071,US
+3480251072,3480256511,CA
3480256512,3480284159,US
3480284160,3480284671,CA
3480284672,3480444927,US
@@ -90609,8 +85452,7 @@
3480610304,3480610559,ES
3480610560,3480610815,US
3480610816,3480610943,AU
-3480610944,3480611071,HU
-3480611072,3480611327,US
+3480610944,3480611327,US
3480611328,3480611583,JP
3480611584,3480611839,MX
3480611840,3480612095,BR
@@ -90639,16 +85481,18 @@
3481822064,3481822079,US
3481822080,3481829375,CA
3481829376,3481843455,US
-3481843456,3481843967,GB
-3481843968,3481936895,US
+3481843456,3481843711,GB
+3481843712,3481936895,US
3481936896,3481937919,VE
-3481937920,3481949695,US
-3481949696,3481949951,MX
-3481949952,3481951395,US
+3481937920,3481951395,US
3481951396,3481951399,GB
-3481951400,3481964575,US
+3481951400,3481958143,US
+3481958144,3481958399,NL
+3481958400,3481964575,US
3481964576,3481964579,IE
-3481964580,3481973247,US
+3481964580,3481966719,US
+3481966720,3481966847,CH
+3481966848,3481973247,US
3481973248,3481973503,CA
3481973504,3481993215,US
3481993216,3481993783,CA
@@ -90821,7 +85665,9 @@
3484462280,3484462295,US
3484462296,3484462975,CA
3484462976,3484463039,US
-3484463040,3484464143,CA
+3484463040,3484463151,CA
+3484463152,3484463183,US
+3484463184,3484464143,CA
3484464144,3484464159,US
3484464160,3484464175,CA
3484464176,3484464191,US
@@ -90878,9 +85724,7 @@
3484482560,3484483583,CA
3484483584,3484604039,US
3484604040,3484604047,AU
-3484604048,3484616703,US
-3484616704,3484616959,IN
-3484616960,3484647423,US
+3484604048,3484647423,US
3484647424,3484663807,CA
3484663808,3484762111,US
3484762112,3484775743,CA
@@ -90906,26 +85750,18 @@
3485466624,3485597695,US
3485597696,3485671583,CA
3485671584,3485671615,US
-3485671616,3485695103,CA
-3485695104,3485695167,US
-3485695168,3485695999,CA
+3485671616,3485695999,CA
3485696000,3485721056,US
3485721057,3485721057,AE
3485721058,3485724671,US
3485724672,3485728767,US
3485728768,3485885127,US
3485885128,3485885141,CA
-3485885142,3485886917,US
-3485886918,3485886931,IN
-3485886932,3485887747,US
+3485885142,3485887747,US
3485887748,3485887777,AU
-3485887778,3485958911,US
-3485958912,3485959423,SE
-3485959424,3485964287,US
-3485964288,3485965311,SE
-3485965312,3485972479,US
-3485972480,3485974527,SE
-3485974528,3486023679,US
+3485887778,3485891519,US
+3485891520,3485891583,DE
+3485891584,3486023679,US
3486023680,3486031871,CA
3486031872,3486269439,US
3486269440,3486285823,JM
@@ -91185,20 +86021,16 @@
3486700400,3486700407,CA
3486700408,3486700439,US
3486700440,3486700447,IT
-3486700448,3486701311,US
-3486701312,3486701567,CA
-3486701568,3486707519,US
+3486700448,3486707519,US
3486707520,3486707535,SE
3486707536,3486707559,US
3486707560,3486707567,HN
-3486707568,3486711551,US
-3486711552,3486711807,CA
-3486711808,3487039487,US
+3486707568,3487039487,US
3487039488,3487105023,CA
3487105024,3487175935,US
3487175936,3487176191,GB
-3487176192,3487177983,US
-3487177984,3487178239,GB
+3487176192,3487178111,US
+3487178112,3487178239,GB
3487178240,3487181359,US
3487181360,3487181375,GB
3487181376,3487189247,US
@@ -91380,9 +86212,7 @@
3487862016,3487875071,BM
3487875072,3487891455,US
3487891456,3487907839,CA
-3487907840,3487912959,US
-3487912960,3487913215,CA
-3487913216,3487969791,US
+3487907840,3487969791,US
3487969792,3487970047,KW
3487970048,3488014335,US
3488014336,3488022527,CA
@@ -91395,8 +86225,20 @@
3488104448,3488112639,US
3488112640,3488113839,CA
3488113840,3488113847,US
-3488113848,3488120831,CA
-3488120832,3488300287,US
+3488113848,3488116863,CA
+3488116864,3488116871,US
+3488116872,3488118559,CA
+3488118560,3488118567,US
+3488118568,3488120831,CA
+3488120832,3488291103,US
+3488291104,3488291135,IN
+3488291136,3488291295,US
+3488291296,3488291327,IN
+3488291328,3488291439,US
+3488291440,3488291447,IN
+3488291448,3488291519,US
+3488291520,3488291647,IN
+3488291648,3488300287,US
3488300288,3488300543,A2
3488300544,3488350207,US
3488350208,3488361215,CA
@@ -91406,15 +86248,10 @@
3488615936,3488616191,AU
3488616192,3488718847,US
3488718848,3488719615,A2
-3488719616,3488719871,US
-3488719872,3488719999,A2
-3488720000,3488720063,US
-3488720064,3488720095,BG
-3488720096,3488720111,BY
-3488720112,3488720383,A2
-3488720384,3488720895,US
-3488720896,3488721151,AL
-3488721152,3488727039,A2
+3488719616,3488720895,US
+3488720896,3488725503,A2
+3488725504,3488725759,US
+3488725760,3488727039,A2
3488727040,3488901887,US
3488901888,3488902143,CA
3488902144,3488940031,US
@@ -91439,13 +86276,11 @@
3489575936,3489577008,CN
3489577009,3489577215,US
3489577216,3489578239,CN
-3489578240,3489673471,US
+3489578240,3489665481,US
+3489665482,3489665482,PR
+3489665483,3489673471,US
3489673472,3489673727,PR
-3489673728,3489686527,US
-3489686528,3489686783,BB
-3489686784,3489687295,US
-3489687296,3489687551,BB
-3489687552,3489717759,US
+3489673728,3489717759,US
3489717760,3489718015,PR
3489718016,3489718271,US
3489718272,3489718527,DM
@@ -91472,9 +86307,7 @@
3489775104,3489775359,BO
3489775360,3489969151,US
3489969152,3489969663,PR
-3489969664,3490041503,US
-3490041504,3490041535,CA
-3490041536,3490228735,US
+3489969664,3490228735,US
3490228736,3490229247,CO
3490229248,3490263039,US
3490263040,3490265087,CO
@@ -91488,17 +86321,19 @@
3490702848,3490703103,AS
3490703104,3490703615,US
3490703616,3490703871,PR
-3490703872,3490786047,US
+3490703872,3490732431,US
+3490732432,3490732447,CA
+3490732448,3490786047,US
3490786048,3490786303,PR
3490786304,3490879231,US
3490879232,3490879487,PR
3490879488,3490974719,US
3490974720,3490975743,PR
-3490975744,3491226687,US
+3490975744,3491219183,US
+3491219184,3491219191,PR
+3491219192,3491226687,US
3491226688,3491226719,CA
-3491226720,3491231807,US
-3491231808,3491231823,PR
-3491231824,3491351455,US
+3491226720,3491351455,US
3491351456,3491351463,HR
3491351464,3491358183,US
3491358184,3491358191,PR
@@ -91559,21 +86394,27 @@
3492188800,3492188831,CH
3492188832,3492472039,US
3492472040,3492472047,GB
-3492472048,3492505799,US
-3492505800,3492505807,RU
-3492505808,3492669695,US
+3492472048,3492669695,US
3492669696,3492671487,PA
-3492671488,3492712511,US
+3492671488,3492710167,US
+3492710168,3492710175,CA
+3492710176,3492710191,US
+3492710192,3492710199,CA
+3492710200,3492710223,US
+3492710224,3492710239,CA
+3492710240,3492710255,US
+3492710256,3492710263,CA
+3492710264,3492710375,US
+3492710376,3492710383,CA
+3492710384,3492712191,US
+3492712192,3492712447,CA
+3492712448,3492712511,US
3492712512,3492712543,CA
3492712544,3492730415,US
3492730416,3492730431,CA
-3492730432,3492782175,US
-3492782176,3492782207,CA
-3492782208,3492795775,US
+3492730432,3492795775,US
3492795776,3492795903,AR
-3492795904,3492807155,US
-3492807156,3492807159,SE
-3492807160,3492815359,US
+3492795904,3492815359,US
3492815360,3492815487,GB
3492815488,3492827391,US
3492827392,3492827423,CA
@@ -91584,11 +86425,21 @@
3492827520,3492827647,AU
3492827648,3492827903,US
3492827904,3492827967,AU
-3492827968,3492869631,US
+3492827968,3492845823,US
+3492845824,3492846079,CH
+3492846080,3492869631,US
3492869632,3492870143,BR
-3492870144,3492892415,US
-3492892416,3492892671,FR
-3492892672,3492894975,US
+3492870144,3492886527,US
+3492886528,3492886559,GB
+3492886560,3492886591,US
+3492886592,3492886783,GB
+3492886784,3492893951,US
+3492893952,3492893953,GB
+3492893954,3492893954,US
+3492893955,3492893985,GB
+3492893986,3492893986,US
+3492893987,3492894207,GB
+3492894208,3492894975,US
3492894976,3492895231,BE
3492895232,3492897023,US
3492897024,3492897279,GB
@@ -91601,8 +86452,8 @@
3492912152,3492912159,US
3492912160,3492912383,GB
3492912384,3492917247,US
-3492917248,3492919295,VI
-3492919296,3492924991,US
+3492917248,3492917503,VI
+3492917504,3492924991,US
3492924992,3492925007,DE
3492925008,3492926079,US
3492926080,3492926095,EU
@@ -91612,17 +86463,29 @@
3492947088,3492947103,DE
3492947104,3492950863,US
3492950864,3492950879,DE
-3492950880,3492968415,US
+3492950880,3492960383,US
+3492960384,3492960511,ES
+3492960512,3492962303,US
+3492962304,3492962893,GB
+3492962894,3492962894,US
+3492962895,3492963327,GB
+3492963328,3492968415,US
3492968416,3492968447,GB
-3492968448,3492969471,US
-3492969472,3492969727,VI
-3492969728,3492996127,US
+3492968448,3492968703,US
+3492968704,3492970239,VI
+3492970240,3492996127,US
3492996128,3492996136,GB
3492996137,3493003519,US
3493003520,3493003775,AU
3493003776,3493008255,US
3493008256,3493008383,MX
-3493008384,3493014527,US
+3493008384,3493009279,US
+3493009280,3493009407,GB
+3493009408,3493011327,US
+3493011328,3493011455,GB
+3493011456,3493013247,US
+3493013248,3493013503,MX
+3493013504,3493014527,US
3493014528,3493014560,GB
3493014561,3493014592,US
3493014593,3493014783,GB
@@ -91638,7 +86501,9 @@
3493050497,3493050623,FR
3493050624,3493061119,US
3493061120,3493061375,BR
-3493061376,3493069055,US
+3493061376,3493068543,US
+3493068544,3493068799,GB
+3493068800,3493069055,US
3493069056,3493069311,A2
3493069312,3493073151,US
3493073152,3493073407,BO
@@ -91669,11 +86534,29 @@
3493886716,3493886719,BZ
3493886720,3493887823,US
3493887824,3493887831,BR
-3493887832,3493901311,US
+3493887832,3493900371,US
+3493900372,3493900375,GB
+3493900376,3493900911,US
+3493900912,3493900927,MX
+3493900928,3493901023,US
+3493901024,3493901031,HK
+3493901032,3493901103,US
+3493901104,3493901119,EC
+3493901120,3493901215,US
+3493901216,3493901231,AE
+3493901232,3493901307,US
+3493901308,3493901311,CA
3493901312,3493901567,AE
-3493901568,3493902295,US
-3493902296,3493902303,NG
-3493902304,3493903551,US
+3493901568,3493901579,US
+3493901580,3493901583,TT
+3493901584,3493901599,VG
+3493901600,3493901759,US
+3493901760,3493901767,AE
+3493901768,3493901791,US
+3493901792,3493901823,AE
+3493901824,3493901847,US
+3493901848,3493901851,CA
+3493901852,3493903551,US
3493903552,3493903567,KW
3493903568,3493914239,US
3493914240,3493914367,CA
@@ -91692,9 +86575,7 @@
3493987328,3493990399,US
3493990400,3493991423,CA
3493991424,3493998591,US
-3493998592,3493999615,AI
-3493999616,3493999871,KN
-3493999872,3494000639,AI
+3493998592,3494000639,AI
3494000640,3494003711,US
3494003712,3494004735,CA
3494004736,3494009855,US
@@ -91712,9 +86593,7 @@
3494076416,3494088703,US
3494088704,3494090751,CA
3494090752,3494094847,US
-3494094848,3494094918,CA
-3494094919,3494094919,US
-3494094920,3494095871,CA
+3494094848,3494095871,CA
3494095872,3494101319,US
3494101320,3494101327,GB
3494101328,3494101377,US
@@ -91731,13 +86610,7 @@
3494102688,3494102701,PE
3494102702,3494102735,US
3494102736,3494102743,VI
-3494102744,3494109925,US
-3494109926,3494109942,CA
-3494109943,3494110091,US
-3494110092,3494110109,CA
-3494110110,3494110145,US
-3494110146,3494110161,CA
-3494110162,3494115471,US
+3494102744,3494115471,US
3494115472,3494115487,AU
3494115488,3494115495,US
3494115496,3494115503,CA
@@ -91792,9 +86665,7 @@
3494197968,3494198259,CA
3494198260,3494198260,US
3494198261,3494198271,CA
-3494198272,3494206847,US
-3494206848,3494206887,CA
-3494206888,3494228031,US
+3494198272,3494228031,US
3494228032,3494228095,AU
3494228096,3494228319,US
3494228320,3494228335,RU
@@ -92002,7 +86873,10 @@
3494777856,3494785023,US
3494785024,3494785279,GP
3494785280,3494785535,MF
-3494785536,3494787071,GP
+3494785536,3494786047,GP
+3494786048,3494786303,MF
+3494786304,3494786559,GP
+3494786560,3494787071,MF
3494787072,3494787199,A2
3494787200,3494787231,GB
3494787232,3494787327,A2
@@ -92086,9 +86960,7 @@
3494968320,3494972415,CA
3494972416,3494979583,US
3494979584,3494981631,CA
-3494981632,3494985983,US
-3494985984,3494986239,JP
-3494986240,3495000063,US
+3494981632,3495000063,US
3495000064,3495001087,CA
3495001088,3495006207,US
3495006208,3495007231,CA
@@ -92097,9 +86969,7 @@
3495011328,3495012095,US
3495012096,3495012351,HK
3495012352,3495014399,PR
-3495014400,3495014448,US
-3495014449,3495014456,SG
-3495014457,3495023615,US
+3495014400,3495023615,US
3495023616,3495024639,CA
3495024640,3495057407,US
3495057408,3495059455,CA
@@ -92131,9 +87001,7 @@
3495136472,3495136479,AR
3495136480,3495136495,US
3495136496,3495136503,IN
-3495136504,3495136847,US
-3495136848,3495136855,PR
-3495136856,3495153663,US
+3495136504,3495153663,US
3495153664,3495155711,CA
3495155712,3495157039,US
3495157040,3495157047,SE
@@ -92158,9 +87026,9 @@
3495276288,3495276351,IN
3495276352,3495286783,US
3495286784,3495288831,CA
-3495288832,3495298559,US
-3495298560,3495298815,GB
-3495298816,3495331839,US
+3495288832,3495308607,US
+3495308608,3495308671,IL
+3495308672,3495331839,US
3495331840,3495332863,A2
3495332864,3495333887,CA
3495333888,3495349247,US
@@ -92286,9 +87154,7 @@
3495688192,3495689215,CA
3495689216,3495694335,US
3495694336,3495696383,CA
-3495696384,3495699967,US
-3495699968,3495700223,CA
-3495700224,3495703551,US
+3495696384,3495703551,US
3495703552,3495704063,GB
3495704064,3495704575,CA
3495704576,3495718911,US
@@ -92364,8 +87230,7 @@
3495881472,3495881727,PA
3495881728,3495896063,US
3495896064,3495897087,PR
-3495897088,3495916031,US
-3495916032,3495916287,CD
+3495897088,3495916287,US
3495916288,3495916543,SL
3495916544,3495930879,US
3495930880,3495931903,CA
@@ -92374,7 +87239,11 @@
3495985152,3495988223,NI
3495988224,3495989247,GT
3495989248,3496034303,US
-3496034304,3496050687,CA
+3496034304,3496048135,CA
+3496048136,3496048351,US
+3496048352,3496048359,CA
+3496048360,3496048383,US
+3496048384,3496050687,CA
3496050688,3496132607,US
3496132608,3496148991,CA
3496148992,3496181759,US
@@ -92423,7 +87292,15 @@
3496887520,3496887527,AU
3496887528,3496887535,US
3496887536,3496887543,PK
-3496887544,3496887807,US
+3496887544,3496887575,US
+3496887576,3496887583,AU
+3496887584,3496887631,US
+3496887632,3496887639,RU
+3496887640,3496887655,US
+3496887656,3496887663,AU
+3496887664,3496887703,US
+3496887704,3496887727,AU
+3496887728,3496887807,US
3496887808,3496887935,AU
3496887936,3496887975,US
3496887976,3496887983,AU
@@ -92445,11 +87322,17 @@
3496888400,3496888415,AU
3496888416,3496888431,US
3496888432,3496888439,AU
-3496888440,3496893695,US
+3496888440,3496888583,US
+3496888584,3496888591,AU
+3496888592,3496888599,US
+3496888600,3496888607,PK
+3496888608,3496888623,US
+3496888624,3496888655,AU
+3496888656,3496888671,US
+3496888672,3496888679,NO
+3496888680,3496893695,US
3496893696,3496893703,RU
-3496893704,3496893991,US
-3496893992,3496893999,TR
-3496894000,3496894463,US
+3496893704,3496894463,US
3496894464,3496902655,CA
3496902656,3496946175,US
3496946176,3496946431,HK
@@ -92553,11 +87436,7 @@
3497161216,3497161343,HK
3497161344,3497161375,US
3497161376,3497161407,HK
-3497161408,3497161607,US
-3497161608,3497161615,NO
-3497161616,3497161703,US
-3497161704,3497161711,GB
-3497161712,3497161735,US
+3497161408,3497161735,US
3497161736,3497161743,MT
3497161744,3497161751,US
3497161752,3497161759,GB
@@ -92643,7 +87522,11 @@
3497410560,3497431039,CA
3497431040,3497447423,US
3497447424,3497451519,CA
-3497451520,3497713415,US
+3497451520,3497453119,US
+3497453120,3497453135,GB
+3497453136,3497453695,US
+3497453696,3497453711,GB
+3497453712,3497713415,US
3497713416,3497713423,EC
3497713424,3497717759,US
3497717760,3497719807,A2
@@ -92662,9 +87545,7 @@
3498254448,3498254591,US
3498254592,3498254847,JM
3498254848,3498287103,US
-3498287104,3498292543,JM
-3498292544,3498292551,US
-3498292552,3498295295,JM
+3498287104,3498295295,JM
3498295296,3498428415,US
3498428416,3498429439,CR
3498429440,3498429951,US
@@ -92785,15 +87666,17 @@
3501183168,3501183231,SG
3501183232,3501183487,US
3501183488,3501183743,GB
-3501183744,3501368831,US
+3501183744,3501340415,US
+3501340416,3501340471,DE
+3501340472,3501340478,US
+3501340479,3501340671,DE
+3501340672,3501368831,US
3501368832,3501369087,NL
3501369088,3501376147,US
3501376148,3501376151,NL
3501376152,3501378047,US
3501378048,3501378303,DE
-3501378304,3501390591,US
-3501390592,3501390847,SG
-3501390848,3501522943,US
+3501378304,3501522943,US
3501522944,3501588479,CA
3501588480,3501721187,US
3501721188,3501721188,US
@@ -92827,9 +87710,7 @@
3502683136,3502683391,MC
3502683392,3502993407,US
3502993408,3502993919,NL
-3502993920,3503027327,US
-3503027328,3503027359,GB
-3503027360,3503058431,US
+3502993920,3503058431,US
3503058432,3503058447,CA
3503058448,3503206399,US
3503206400,3503206911,CR
@@ -92916,9 +87797,13 @@
3505999360,3506000127,PR
3506000128,3506043135,US
3506043136,3506044927,PA
-3506044928,3506135263,US
+3506044928,3506058815,US
+3506058816,3506058823,AF
+3506058824,3506135263,US
3506135264,3506135295,GB
-3506135296,3506161975,US
+3506135296,3506155751,US
+3506155752,3506155759,AF
+3506155760,3506161975,US
3506161976,3506161983,AF
3506161984,3506192639,US
3506192640,3506192895,A2
@@ -93109,7 +87994,9 @@
3507486720,3507540015,US
3507540016,3507540031,IN
3507540032,3507585023,US
-3507585024,3507601407,CA
+3507585024,3507598911,CA
+3507598912,3507598943,US
+3507598944,3507601407,CA
3507601408,3507634335,US
3507634336,3507634351,IQ
3507634352,3507634383,US
@@ -93179,9 +88066,7 @@
3507647808,3507647871,AU
3507647872,3507649263,US
3507649264,3507649279,QA
-3507649280,3507650047,US
-3507650048,3507650111,BV
-3507650112,3507650335,US
+3507649280,3507650335,US
3507650336,3507650367,PA
3507650368,3507650431,US
3507650432,3507650495,AU
@@ -93624,7 +88509,9 @@
3509520832,3509520895,US
3509520896,3509521151,CA
3509521152,3509521407,US
-3509521408,3509522431,CA
+3509521408,3509521791,CA
+3509521792,3509521919,US
+3509521920,3509522431,CA
3509522432,3509522687,KW
3509522688,3509523071,CA
3509523072,3509523199,US
@@ -93662,11 +88549,19 @@
3509530560,3509530623,US
3509530624,3509532671,CA
3509532672,3509532927,US
-3509532928,3509533951,CA
-3509533952,3509534335,US
+3509532928,3509533471,CA
+3509533472,3509533535,US
+3509533536,3509533567,CA
+3509533568,3509533599,US
+3509533600,3509533823,CA
+3509533824,3509534335,US
3509534336,3509534367,CA
3509534368,3509534719,US
-3509534720,3509536895,CA
+3509534720,3509535535,CA
+3509535536,3509535551,US
+3509535552,3509535663,CA
+3509535664,3509535679,US
+3509535680,3509536895,CA
3509536896,3509537023,US
3509537024,3509538335,CA
3509538336,3509538351,US
@@ -93678,7 +88573,13 @@
3509538816,3509539071,US
3509539072,3509539327,CA
3509539328,3509539583,US
-3509539584,3509539903,CA
+3509539584,3509539679,CA
+3509539680,3509539695,US
+3509539696,3509539727,CA
+3509539728,3509539743,US
+3509539744,3509539823,CA
+3509539824,3509539839,US
+3509539840,3509539903,CA
3509539904,3509539967,US
3509539968,3509540095,CA
3509540096,3509540127,US
@@ -93708,7 +88609,9 @@
3509549824,3509550079,US
3509550080,3509553151,CA
3509553152,3509553407,US
-3509553408,3509555119,CA
+3509553408,3509553855,CA
+3509553856,3509553919,US
+3509553920,3509555119,CA
3509555120,3509555135,US
3509555136,3509557439,CA
3509557440,3509557759,US
@@ -93743,8 +88646,10 @@
3509567200,3509567231,US
3509567232,3509569023,CA
3509569024,3509569535,US
-3509569536,3509570559,CA
-3509570560,3509570687,US
+3509569536,3509569919,CA
+3509569920,3509570047,US
+3509570048,3509570431,CA
+3509570432,3509570687,US
3509570688,3509571583,CA
3509571584,3509571647,US
3509571648,3509571663,CA
@@ -93767,11 +88672,7 @@
3509577408,3509577471,US
3509577472,3509577535,CA
3509577536,3509577551,US
-3509577552,3509577631,CA
-3509577632,3509577647,US
-3509577648,3509577695,CA
-3509577696,3509577711,US
-3509577712,3509577727,CA
+3509577552,3509577727,CA
3509577728,3509577983,US
3509577984,3509578367,CA
3509578368,3509578495,US
@@ -93904,14 +88805,8 @@
3509837640,3509837751,US
3509837752,3509837759,GB
3509837760,3509846015,US
-3509846016,3509939783,CA
-3509939784,3509939791,US
-3509939792,3509977087,CA
-3509977088,3509987329,US
-3509987330,3509987428,IN
-3509987429,3509988864,US
-3509988865,3509989119,IN
-3509989120,3509993471,US
+3509846016,3509977087,CA
+3509977088,3509993471,US
3509993472,3509997567,CA
3509997568,3510005759,US
3510005760,3510009855,CA
@@ -93969,12 +88864,18 @@
3510322176,3510323199,AG
3510323200,3510324223,KN
3510324224,3510325247,AI
-3510325248,3510326271,AG
+3510325248,3510325503,AG
+3510325504,3510325759,KN
+3510325760,3510326271,AG
3510326272,3510327295,VG
3510327296,3510328319,AG
3510328320,3510328575,KN
3510328576,3510328831,MS
-3510328832,3510329599,AG
+3510328832,3510329279,AG
+3510329280,3510329295,MS
+3510329296,3510329303,AG
+3510329304,3510329311,MS
+3510329312,3510329599,AG
3510329600,3510329855,MS
3510329856,3510331391,AG
3510331392,3510332415,DM
@@ -93988,363 +88889,11 @@
3510335744,3510335999,VG
3510336000,3510337279,AG
3510337280,3510337535,LC
-3510337536,3510360319,US
-3510360320,3510360447,GB
-3510360448,3510468631,US
-3510468632,3510468639,GB
-3510468640,3510468719,US
-3510468720,3510468727,MX
-3510468728,3510468847,US
-3510468848,3510468855,MX
-3510468856,3510468895,US
-3510468896,3510468903,CA
-3510468904,3510468911,ID
-3510468912,3510469023,US
-3510469024,3510469039,AG
-3510469040,3510469055,US
-3510469056,3510469063,CA
-3510469064,3510469071,US
-3510469072,3510469087,AU
-3510469088,3510469095,RU
-3510469096,3510469103,CA
-3510469104,3510469119,BS
-3510469120,3510469167,US
-3510469168,3510469175,FR
-3510469176,3510469183,BE
-3510469184,3510469191,US
-3510469192,3510469199,AU
-3510469200,3510469223,US
-3510469224,3510469231,AU
-3510469232,3510469247,US
-3510469248,3510469263,ID
-3510469264,3510469279,US
-3510469280,3510469295,MY
-3510469296,3510469343,US
-3510469344,3510469351,GB
-3510469352,3510469359,US
-3510469360,3510469367,CH
-3510469368,3510469375,GR
-3510469376,3510469399,US
-3510469400,3510469407,BE
-3510469408,3510469487,US
-3510469488,3510469495,CA
-3510469496,3510469519,US
-3510469520,3510469527,IN
-3510469528,3510469599,US
-3510469600,3510469607,CA
-3510469608,3510469615,VG
-3510469616,3510469623,US
-3510469624,3510469631,DE
-3510469632,3510469719,US
-3510469720,3510469727,CA
-3510469728,3510469743,AU
-3510469744,3510469751,CH
-3510469752,3510469767,US
-3510469768,3510469775,IN
-3510469776,3510469815,US
-3510469816,3510469831,CA
-3510469832,3510469855,US
-3510469856,3510469863,UM
-3510469864,3510469871,CA
-3510469872,3510469887,IN
-3510469888,3510469895,US
-3510469896,3510469903,IN
-3510469904,3510469919,US
-3510469920,3510469927,GB
-3510469928,3510469975,US
-3510469976,3510469983,IN
-3510469984,3510469991,CA
-3510469992,3510469999,GB
-3510470000,3510470031,US
-3510470032,3510470039,CA
-3510470040,3510470047,RU
-3510470048,3510470055,CA
-3510470056,3510470063,MX
-3510470064,3510470143,US
-3510470144,3510470151,DK
-3510470152,3510470159,US
-3510470160,3510470175,DK
-3510470176,3510470183,CA
-3510470184,3510470295,US
-3510470296,3510470319,CA
-3510470320,3510470327,TW
-3510470328,3510470359,US
-3510470360,3510470367,TH
-3510470368,3510470375,US
-3510470376,3510470383,CH
-3510470384,3510470455,US
-3510470456,3510470463,GB
-3510470464,3510470471,NL
-3510470472,3510470623,US
-3510470624,3510470631,BR
-3510470632,3510470647,US
-3510470648,3510470655,IN
-3510470656,3510470775,US
-3510470776,3510470783,GR
-3510470784,3510470799,US
-3510470800,3510470807,GB
-3510470808,3510470815,US
-3510470816,3510470831,GB
-3510470832,3510470855,US
-3510470856,3510470863,FR
-3510470864,3510470871,US
-3510470872,3510470879,AR
-3510470880,3510470927,US
+3510337536,3510470927,US
3510470928,3510470935,IL
-3510470936,3510470959,US
-3510470960,3510470975,IN
-3510470976,3510470999,US
-3510471000,3510471007,CH
-3510471008,3510471039,BH
-3510471040,3510471119,US
-3510471120,3510471135,GB
-3510471136,3510471183,US
-3510471184,3510471199,CA
-3510471200,3510471223,US
-3510471224,3510471231,DE
-3510471232,3510471311,US
-3510471312,3510471319,IE
-3510471320,3510471407,US
-3510471408,3510471415,GR
-3510471416,3510471431,US
-3510471432,3510471439,AU
-3510471440,3510471455,US
-3510471456,3510471487,FR
-3510471488,3510471511,US
-3510471512,3510471519,HK
-3510471520,3510471535,FR
-3510471536,3510471607,US
-3510471608,3510471615,DE
-3510471616,3510471639,US
-3510471640,3510471647,IN
-3510471648,3510471703,US
-3510471704,3510471711,JP
-3510471712,3510471751,US
-3510471752,3510471759,CA
-3510471760,3510471791,US
-3510471792,3510471799,IN
-3510471800,3510471839,US
-3510471840,3510471847,MX
-3510471848,3510471871,US
-3510471872,3510471887,VE
-3510471888,3510471911,US
-3510471912,3510471919,IN
-3510471920,3510471951,US
-3510471952,3510471959,ID
-3510471960,3510471991,US
-3510471992,3510471999,AR
-3510472000,3510472007,IN
-3510472008,3510472111,US
-3510472112,3510472119,GB
-3510472120,3510472191,US
-3510472192,3510472207,IN
-3510472208,3510472215,FR
-3510472216,3510472223,CA
-3510472224,3510472231,IT
-3510472232,3510472239,SG
-3510472240,3510472295,US
-3510472296,3510472303,AE
-3510472304,3510472447,US
-3510472448,3510472463,IN
-3510472464,3510472471,US
-3510472472,3510472479,EG
-3510472480,3510472511,US
-3510472512,3510472575,AG
-3510472576,3510472735,US
-3510472736,3510472743,AR
-3510472744,3510472751,US
-3510472752,3510472767,AR
-3510472768,3510472800,US
-3510472801,3510472831,DE
-3510472832,3510472919,US
-3510472920,3510472927,NL
-3510472928,3510473087,US
-3510473088,3510473095,TR
-3510473096,3510473103,US
-3510473104,3510473119,VE
-3510473120,3510473135,US
-3510473136,3510473143,NZ
-3510473144,3510473151,US
-3510473152,3510473159,DE
-3510473160,3510473175,US
-3510473176,3510473183,FR
-3510473184,3510473199,IE
-3510473200,3510473215,US
-3510473216,3510473223,IN
-3510473224,3510473231,US
-3510473232,3510473239,FR
-3510473240,3510473343,US
-3510473344,3510473383,DE
-3510473384,3510473407,US
-3510473408,3510473447,DE
-3510473448,3510473463,US
-3510473464,3510473471,NL
-3510473472,3510473511,DE
-3510473512,3510473607,US
-3510473608,3510473615,ID
-3510473616,3510473623,AU
-3510473624,3510474431,US
-3510474432,3510474447,TC
-3510474448,3510474479,US
-3510474480,3510474495,AU
-3510474496,3510475055,US
-3510475056,3510475063,BR
-3510475064,3510475151,US
-3510475152,3510475159,AU
-3510475160,3510475167,SE
-3510475168,3510477063,US
-3510477064,3510477071,GB
-3510477072,3510477087,US
-3510477088,3510477111,GB
-3510477112,3510477255,US
-3510477256,3510477257,MX
-3510477258,3510477311,US
-3510477312,3510477319,IN
-3510477320,3510477327,US
-3510477328,3510477335,GB
-3510477336,3510477343,MO
-3510477344,3510477375,AG
-3510477376,3510477487,US
-3510477488,3510477495,IN
-3510477496,3510477503,US
-3510477504,3510477519,GB
-3510477520,3510477535,US
-3510477536,3510477543,GB
-3510477544,3510477815,US
-3510477816,3510477823,GB
-3510477824,3510477903,US
-3510477904,3510477911,IT
-3510477912,3510477919,US
-3510477920,3510477927,NL
-3510477928,3510477975,US
-3510477976,3510477983,AR
-3510477984,3510478007,US
-3510478008,3510478015,IN
-3510478016,3510478023,CA
-3510478024,3510478127,US
-3510478128,3510478135,GB
-3510478136,3510478143,US
-3510478144,3510478175,FI
-3510478176,3510478231,US
-3510478232,3510478239,IN
-3510478240,3510478271,US
-3510478272,3510478279,MT
-3510478280,3510478311,US
-3510478312,3510478319,FI
-3510478320,3510478495,US
-3510478496,3510478527,FR
-3510478528,3510478535,US
-3510478536,3510478543,GB
-3510478544,3510478551,US
-3510478552,3510478559,VE
-3510478560,3510478567,NL
-3510478568,3510478591,US
-3510478592,3510478599,MX
-3510478600,3510478631,US
-3510478632,3510478639,GB
-3510478640,3510478655,US
-3510478656,3510478663,GB
-3510478664,3510478671,US
-3510478672,3510478719,AU
-3510478720,3510478735,US
-3510478736,3510478751,LB
-3510478752,3510478775,US
-3510478776,3510478783,CR
-3510478784,3510478855,US
-3510478856,3510478863,IN
-3510478864,3510478903,US
-3510478904,3510478919,GB
-3510478920,3510478943,US
-3510478944,3510478951,IN
-3510478952,3510479095,US
-3510479096,3510479103,GB
-3510479104,3510479359,GU
-3510479360,3510479407,US
-3510479408,3510479415,CA
-3510479416,3510479439,US
-3510479440,3510479447,CA
-3510479448,3510479455,GI
-3510479456,3510479503,US
-3510479504,3510479511,AU
-3510479512,3510479519,US
-3510479520,3510479535,LB
-3510479536,3510479575,US
-3510479576,3510479583,GI
-3510479584,3510479791,US
+3510470936,3510479791,US
3510479792,3510479799,IE
-3510479800,3510479831,US
-3510479832,3510479839,DE
-3510479840,3510479855,US
-3510479856,3510479863,DE
-3510479864,3510479879,US
-3510479880,3510479887,DE
-3510479888,3510479903,US
-3510479904,3510479919,ES
-3510479920,3510479935,US
-3510479936,3510479943,MY
-3510479944,3510479951,US
-3510479952,3510479959,AU
-3510479960,3510479967,US
-3510479968,3510479975,AE
-3510479976,3510479991,US
-3510479992,3510479999,SG
-3510480000,3510480047,US
-3510480048,3510480055,FR
-3510480056,3510480103,US
-3510480104,3510480111,CA
-3510480112,3510480119,MX
-3510480120,3510480205,US
-3510480206,3510480207,IE
-3510480208,3510480247,US
-3510480248,3510480251,GH
-3510480252,3510480415,US
-3510480416,3510480423,GB
-3510480424,3510480431,VE
-3510480432,3510480439,US
-3510480440,3510480447,BZ
-3510480448,3510480527,US
-3510480528,3510480535,GB
-3510480536,3510480543,US
-3510480544,3510480560,AT
-3510480561,3510480561,US
-3510480562,3510480575,AT
-3510480576,3510480655,US
-3510480656,3510480663,IN
-3510480664,3510480671,US
-3510480672,3510480735,AU
-3510480736,3510480815,US
-3510480816,3510480823,IN
-3510480824,3510480839,US
-3510480840,3510480847,IN
-3510480848,3510480959,US
-3510480960,3510480967,GB
-3510480968,3510480991,US
-3510480992,3510481023,CR
-3510481024,3510481191,US
-3510481192,3510481199,GB
-3510481200,3510481215,US
-3510481216,3510481231,CA
-3510481232,3510481295,US
-3510481296,3510481311,AU
-3510481312,3510481319,FR
-3510481320,3510481359,US
-3510481360,3510481375,ES
-3510481376,3510481407,US
-3510481408,3510481415,MY
-3510481416,3510481679,US
-3510481680,3510481687,AU
-3510481688,3510481711,US
-3510481712,3510481719,CA
-3510481720,3510481727,JP
-3510481728,3510481743,AU
-3510481744,3510481863,US
-3510481864,3510481871,CA
-3510481872,3510481919,US
-3510481920,3510481927,MX
-3510481928,3510482111,US
-3510482112,3510482143,CA
-3510482144,3510482151,AR
-3510482152,3510788447,US
+3510479800,3510788447,US
3510788448,3510788479,GB
3510788480,3510831527,US
3510831528,3510831535,GB
@@ -94367,8 +88916,8 @@
3510846528,3510846559,CA
3510846560,3510887423,US
3510887424,3510887935,HK
-3510887936,3510942719,US
-3510942720,3510943743,CA
+3510887936,3510935551,US
+3510935552,3510943743,CA
3510943744,3511130111,US
3511130112,3511131135,CA
3511131136,3511140351,US
@@ -94501,9 +89050,7 @@
3512067328,3512139775,US
3512139776,3512156159,CA
3512156160,3512172543,US
-3512172544,3512172671,CA
-3512172672,3512172799,US
-3512172800,3512176639,CA
+3512172544,3512176639,CA
3512176640,3512197119,US
3512197120,3512205311,CA
3512205312,3512205567,US
@@ -94603,9 +89150,7 @@
3512336384,3512369151,US
3512369152,3512371343,CA
3512371344,3512371351,US
-3512371352,3512377231,CA
-3512377232,3512377239,US
-3512377240,3512378983,CA
+3512371352,3512378983,CA
3512378984,3512378991,US
3512378992,3512381583,CA
3512381584,3512381591,US
@@ -95099,13 +89644,14 @@
3514593280,3514596863,US
3514596864,3514597375,SV
3514597376,3514826751,US
-3514826752,3514834687,CA
-3514834688,3514834815,US
-3514834816,3514834847,CA
-3514834848,3514834943,US
-3514834944,3514843135,CA
+3514826752,3514843135,CA
3514843136,3514993919,US
-3514993920,3514994049,GB
+3514993920,3514993983,GB
+3514993984,3514993987,FR
+3514993988,3514993991,DE
+3514993992,3514994007,GB
+3514994008,3514994023,DK
+3514994024,3514994049,GB
3514994050,3514994050,EU
3514994051,3514994175,GB
3514994176,3515001869,US
@@ -95118,11 +89664,7 @@
3515149568,3515149583,AU
3515149584,3515301887,US
3515301888,3515318271,CA
-3515318272,3515453055,US
-3515453056,3515453071,JP
-3515453072,3515453679,US
-3515453680,3515453687,JP
-3515453688,3515454399,US
+3515318272,3515454399,US
3515454400,3515454463,JP
3515454464,3515455999,US
3515456000,3515456015,JP
@@ -95219,7 +89761,9 @@
3517112320,3517116159,CA
3517116160,3517116415,US
3517116416,3517120511,CA
-3517120512,3517233151,US
+3517120512,3517173759,US
+3517173760,3517174783,IN
+3517174784,3517233151,US
3517233152,3517235199,GU
3517235200,3517382655,US
3517382656,3517384703,CA
@@ -95230,9 +89774,11 @@
3517388800,3517389311,US
3517389312,3517389567,CA
3517389568,3517389823,US
-3517389824,3517390335,CA
-3517390336,3517390591,US
-3517390592,3517392127,CA
+3517389824,3517391471,CA
+3517391472,3517391487,US
+3517391488,3517391535,CA
+3517391536,3517391551,US
+3517391552,3517392127,CA
3517392128,3517392383,US
3517392384,3517392639,CA
3517392640,3517392655,US
@@ -95316,19 +89862,13 @@
3517416144,3517416159,US
3517416160,3517416591,CA
3517416592,3517416607,US
-3517416608,3517416711,CA
-3517416712,3517416727,US
-3517416728,3517416735,CA
-3517416736,3517416743,US
-3517416744,3517416775,CA
-3517416776,3517416783,US
-3517416784,3517416791,CA
-3517416792,3517416799,US
-3517416800,3517416831,CA
-3517416832,3517416839,US
-3517416840,3517416871,CA
-3517416872,3517416879,US
-3517416880,3517418367,CA
+3517416608,3517417535,CA
+3517417536,3517417567,US
+3517417568,3517417631,CA
+3517417632,3517417663,US
+3517417664,3517417695,CA
+3517417696,3517417855,US
+3517417856,3517418367,CA
3517418368,3517418399,US
3517418400,3517419103,CA
3517419104,3517419135,US
@@ -95402,8 +89942,8 @@
3517431760,3517431775,US
3517431776,3517431807,CA
3517431808,3517431823,US
-3517431824,3517431919,CA
-3517431920,3517431951,US
+3517431824,3517431935,CA
+3517431936,3517431951,US
3517431952,3517431967,CA
3517431968,3517431983,US
3517431984,3517432191,CA
@@ -95483,7 +90023,9 @@
3517447864,3517448191,CA
3517448192,3517523167,US
3517523168,3517523183,BS
-3517523184,3517546495,US
+3517523184,3517524183,US
+3517524184,3517524191,VI
+3517524192,3517546495,US
3517546496,3517562879,CA
3517562880,3517595647,US
3517595648,3517596671,SE
@@ -95734,7 +90276,9 @@
3519700560,3519700567,US
3519700568,3519700575,CA
3519700576,3519700607,US
-3519700608,3519709183,CA
+3519700608,3519702319,CA
+3519702320,3519702327,US
+3519702328,3519709183,CA
3519709184,3519712447,US
3519712448,3519712511,CA
3519712512,3519715295,US
@@ -95770,13 +90314,7 @@
3519901696,3519934463,US
3519934464,3519938559,CA
3519938560,3520020479,US
-3520020480,3520020559,CA
-3520020560,3520020567,US
-3520020568,3520020655,CA
-3520020656,3520020663,US
-3520020664,3520020719,CA
-3520020720,3520020727,US
-3520020728,3520020991,CA
+3520020480,3520020991,CA
3520020992,3520021015,US
3520021016,3520021055,CA
3520021056,3520021071,US
@@ -95836,11 +90374,7 @@
3520024488,3520024495,US
3520024496,3520024807,CA
3520024808,3520024815,US
-3520024816,3520025191,CA
-3520025192,3520025199,US
-3520025200,3520025295,CA
-3520025296,3520025303,US
-3520025304,3520025503,CA
+3520024816,3520025503,CA
3520025504,3520025511,US
3520025512,3520025591,CA
3520025592,3520025599,NL
@@ -95866,15 +90400,21 @@
3520027232,3520027239,US
3520027240,3520027271,CA
3520027272,3520027279,US
-3520027280,3520027439,CA
-3520027440,3520027447,US
-3520027448,3520027711,CA
+3520027280,3520027711,CA
3520027712,3520027727,US
3520027728,3520027815,CA
3520027816,3520027823,US
3520027824,3520027839,CA
3520027840,3520027887,US
-3520027888,3520028487,CA
+3520027888,3520027951,CA
+3520027952,3520027991,US
+3520027992,3520028047,CA
+3520028048,3520028055,US
+3520028056,3520028095,CA
+3520028096,3520028103,US
+3520028104,3520028191,CA
+3520028192,3520028199,US
+3520028200,3520028487,CA
3520028488,3520028535,US
3520028536,3520028543,CA
3520028544,3520028551,US
@@ -95882,17 +90422,57 @@
3520028656,3520028671,US
3520028672,3520028695,CA
3520028696,3520028711,US
-3520028712,3520030799,CA
-3520030800,3520030807,US
-3520030808,3520030951,CA
-3520030952,3520030959,US
-3520030960,3520032767,CA
+3520028712,3520029167,CA
+3520029168,3520029175,IL
+3520029176,3520030975,CA
+3520030976,3520030983,NL
+3520030984,3520031143,CA
+3520031144,3520031151,US
+3520031152,3520032039,CA
+3520032040,3520032087,US
+3520032088,3520032103,CA
+3520032104,3520032111,US
+3520032112,3520032119,CA
+3520032120,3520032127,US
+3520032128,3520032159,CA
+3520032160,3520032191,US
+3520032192,3520032199,CA
+3520032200,3520032223,US
+3520032224,3520032303,CA
+3520032304,3520032311,US
+3520032312,3520032399,CA
+3520032400,3520032407,US
+3520032408,3520032591,CA
+3520032592,3520032599,US
+3520032600,3520032687,CA
+3520032688,3520032711,US
+3520032712,3520032735,CA
+3520032736,3520032759,US
+3520032760,3520032767,CA
3520032768,3520032791,US
3520032792,3520032807,CA
3520032808,3520032847,US
3520032848,3520032855,CA
3520032856,3520032863,US
-3520032864,3520034559,CA
+3520032864,3520033583,CA
+3520033584,3520033591,US
+3520033592,3520033631,CA
+3520033632,3520033639,US
+3520033640,3520033671,CA
+3520033672,3520033679,US
+3520033680,3520033695,CA
+3520033696,3520033703,US
+3520033704,3520033759,CA
+3520033760,3520033767,US
+3520033768,3520034151,CA
+3520034152,3520034159,US
+3520034160,3520034167,CA
+3520034168,3520034175,US
+3520034176,3520034263,CA
+3520034264,3520034271,US
+3520034272,3520034487,CA
+3520034488,3520034495,US
+3520034496,3520034559,CA
3520034560,3520034567,US
3520034568,3520034639,CA
3520034640,3520034647,GH
@@ -95996,28 +90576,24 @@
3520652544,3520656383,US
3520656384,3520656639,US
3520656640,3520675839,US
-3520675840,3520683247,CA
-3520683248,3520683263,US
-3520683264,3520691583,CA
+3520675840,3520679439,CA
+3520679440,3520679447,US
+3520679448,3520691583,CA
3520691584,3520691591,US
3520691592,3520691807,CA
3520691808,3520691839,US
3520691840,3520692223,CA
-3520692224,3520723967,US
-3520723968,3520724223,PK
-3520724224,3520749871,US
+3520692224,3520749871,US
3520749872,3520749879,CA
3520749880,3520937983,US
3520937984,3520954367,CA
-3520954368,3520960511,US
-3520960512,3520960767,AU
-3520960768,3520978943,US
+3520954368,3520978943,US
3520978944,3520979711,BZ
3520979712,3520980735,GB
3520980736,3520981247,NL
-3520981248,3520987391,US
-3520987392,3520987647,SA
-3520987648,3520994815,US
+3520981248,3520987903,US
+3520987904,3520987935,US
+3520987936,3520994815,US
3520994816,3520995327,ES
3520995328,3520999423,US
3520999424,3521003519,CA
@@ -96038,7 +90614,9 @@
3521098552,3521098559,MX
3521098560,3521103231,US
3521103232,3521103263,CA
-3521103264,3521186623,US
+3521103264,3521106527,US
+3521106528,3521106543,CA
+3521106544,3521186623,US
3521186624,3521186687,AR
3521186688,3521192703,US
3521192704,3521192735,FR
@@ -96092,15 +90670,7 @@
3521933438,3521933445,VE
3521933446,3521933493,US
3521933494,3521933501,EG
-3521933502,3521933605,US
-3521933606,3521933613,AE
-3521933614,3521933621,US
-3521933622,3521933629,EG
-3521933630,3521933725,US
-3521933726,3521933733,GB
-3521933734,3521933741,US
-3521933742,3521933785,GB
-3521933786,3521933833,US
+3521933502,3521933833,US
3521933834,3521933841,EG
3521933842,3521933929,US
3521933930,3521933937,IN
@@ -96125,7 +90695,11 @@
3521934194,3521934201,LK
3521934202,3521934289,US
3521934290,3521934297,EG
-3521934298,3521934421,US
+3521934298,3521934318,US
+3521934319,3521934326,SA
+3521934327,3521934369,US
+3521934370,3521934377,IN
+3521934378,3521934421,US
3521934422,3521934429,EG
3521934430,3521934437,US
3521934438,3521934445,IN
@@ -96162,12 +90736,10 @@
3522123520,3522123775,GB
3522123776,3522125055,US
3522125056,3522125311,GB
-3522125312,3522130180,US
-3522130181,3522130181,CA
-3522130182,3522130194,US
+3522125312,3522130194,US
3522130195,3522130195,CA
-3522130196,3522130206,US
-3522130207,3522130207,BR
+3522130196,3522130205,US
+3522130206,3522130207,BR
3522130208,3522130210,US
3522130211,3522130211,CA
3522130212,3522130220,US
@@ -96212,7 +90784,7 @@
3522130327,3522130330,US
3522130331,3522130331,BR
3522130332,3522130333,US
-3522130334,3522130336,BR
+3522130334,3522130336,IR
3522130337,3522130339,US
3522130340,3522130341,DO
3522130342,3522130342,PK
@@ -96236,20 +90808,21 @@
3522130367,3522130368,TW
3522130369,3522130370,HK
3522130371,3522130371,US
-3522130372,3522130372,TW
+3522130372,3522130372,CO
3522130373,3522130373,MX
-3522130374,3522130376,BR
+3522130374,3522130374,CO
+3522130375,3522130376,BR
3522130377,3522130377,US
3522130378,3522130378,BR
3522130379,3522130383,US
3522130384,3522130384,UA
3522130385,3522130389,US
-3522130390,3522130391,TW
+3522130390,3522130391,PK
3522130392,3522130392,AR
3522130393,3522130393,US
3522130394,3522130394,AR
3522130395,3522130400,US
-3522130401,3522130401,BO
+3522130401,3522130401,PK
3522130402,3522130405,US
3522130406,3522130408,BR
3522130409,3522130412,US
@@ -96265,8 +90838,15 @@
3522130426,3522130426,PH
3522130427,3522130427,BG
3522130428,3522130428,US
-3522130429,3522130430,GT
-3522130431,3522131455,US
+3522130429,3522130429,PK
+3522130430,3522130430,CA
+3522130431,3522130710,US
+3522130711,3522130728,BR
+3522130729,3522130787,US
+3522130788,3522130810,BR
+3522130811,3522130831,US
+3522130832,3522130894,BR
+3522130895,3522131455,US
3522131456,3522131487,CY
3522131488,3522131519,DE
3522131520,3522131528,BR
@@ -96330,10 +90910,9 @@
3522131960,3522131960,US
3522131961,3522131964,BR
3522131965,3522132100,US
-3522132101,3522132101,IN
+3522132101,3522132101,BR
3522132102,3522132107,US
-3522132108,3522132108,BR
-3522132109,3522132109,IN
+3522132108,3522132109,BR
3522132110,3522132123,US
3522132124,3522132124,GB
3522132125,3522132129,US
@@ -96348,7 +90927,7 @@
3522132148,3522132151,US
3522132152,3522132152,BR
3522132153,3522132155,US
-3522132156,3522132156,BR
+3522132156,3522132156,BD
3522132157,3522132157,US
3522132158,3522132158,BR
3522132159,3522132159,US
@@ -96358,7 +90937,8 @@
3522132164,3522132166,US
3522132167,3522132167,IN
3522132168,3522132175,BR
-3522132176,3522132184,PK
+3522132176,3522132182,PK
+3522132183,3522132184,BR
3522132185,3522132185,VN
3522132186,3522132188,NL
3522132189,3522132189,US
@@ -96367,9 +90947,10 @@
3522132192,3522132192,BR
3522132193,3522132193,PK
3522132194,3522132194,US
-3522132195,3522132195,TR
+3522132195,3522132195,IN
3522132196,3522132197,AT
-3522132198,3522132202,US
+3522132198,3522132198,MX
+3522132199,3522132202,US
3522132203,3522132203,BR
3522132204,3522132204,AR
3522132205,3522132205,US
@@ -96382,7 +90963,8 @@
3522132222,3522132222,BD
3522132223,3522132356,US
3522132357,3522132358,BR
-3522132359,3522132365,US
+3522132359,3522132359,AT
+3522132360,3522132365,US
3522132366,3522132366,BR
3522132367,3522132372,US
3522132373,3522132373,BR
@@ -96393,31 +90975,42 @@
3522132391,3522132395,US
3522132396,3522132397,BD
3522132398,3522132400,IN
-3522132401,3522132407,US
+3522132401,3522132402,US
+3522132403,3522132404,CA
+3522132405,3522132407,US
3522132408,3522132408,DE
3522132409,3522132409,GB
3522132410,3522132410,TR
-3522132411,3522132411,BR
+3522132411,3522132411,CL
3522132412,3522132414,US
-3522132415,3522132415,IN
+3522132415,3522132415,CA
3522132416,3522132417,GB
3522132418,3522132418,BD
3522132419,3522132419,IN
3522132420,3522132422,US
-3522132423,3522132426,BR
+3522132423,3522132425,IN
+3522132426,3522132426,BR
3522132427,3522132427,BD
3522132428,3522132430,BR
-3522132431,3522132431,US
-3522132432,3522132437,BR
-3522132438,3522132440,US
-3522132441,3522132441,BR
-3522132442,3522132443,US
+3522132431,3522132431,BY
+3522132432,3522132432,TR
+3522132433,3522132437,BR
+3522132438,3522132443,US
3522132444,3522132444,VN
3522132445,3522132446,US
-3522132447,3522132451,BR
-3522132452,3522132460,US
+3522132447,3522132453,BR
+3522132454,3522132459,US
+3522132460,3522132460,BD
3522132461,3522132461,BR
-3522132462,3522132575,US
+3522132462,3522132462,BD
+3522132463,3522132463,IN
+3522132464,3522132466,US
+3522132467,3522132468,ZA
+3522132469,3522132472,US
+3522132473,3522132473,BR
+3522132474,3522132475,US
+3522132476,3522132476,BD
+3522132477,3522132575,US
3522132576,3522132607,BR
3522132608,3522132639,CA
3522132640,3522132671,US
@@ -96441,14 +91034,23 @@
3522133024,3522133055,BR
3522133056,3522133124,US
3522133125,3522133125,BR
-3522133126,3522133135,US
+3522133126,3522133134,US
+3522133135,3522133135,GT
3522133136,3522133136,BR
-3522133137,3522133311,US
+3522133137,3522133137,US
+3522133138,3522133138,BD
+3522133139,3522133139,US
+3522133140,3522133142,BR
+3522133143,3522133311,US
3522133312,3522133375,CH
3522133376,3522133535,US
3522133536,3522133567,TR
3522133568,3522133599,BR
-3522133600,3522133639,US
+3522133600,3522133603,US
+3522133604,3522133620,BR
+3522133621,3522133621,US
+3522133622,3522133622,BR
+3522133623,3522133639,US
3522133640,3522133647,DE
3522133648,3522133663,US
3522133664,3522133695,DE
@@ -96460,9 +91062,7 @@
3522195456,3522199551,CA
3522199552,3522773503,US
3522773504,3522773759,US
-3522773760,3522816767,US
-3522816768,3522817023,CA
-3522817024,3522854911,US
+3522773760,3522854911,US
3522854912,3522871295,CA
3522871296,3522902015,US
3522902016,3522903039,CA
@@ -96474,9 +91074,7 @@
3523231744,3523248127,AU
3523248128,3523280895,HK
3523280896,3523297279,TH
-3523297280,3523298047,PH
-3523298048,3523298303,US
-3523298304,3523317759,PH
+3523297280,3523317759,PH
3523317760,3523330047,JP
3523330048,3523338239,AU
3523338240,3523340287,MY
@@ -96508,28 +91106,21 @@
3523557376,3523559423,CN
3523559424,3523575807,PH
3523575808,3523583999,CN
-3523584000,3523592447,HK
-3523592448,3523592959,US
-3523592960,3523593237,HK
-3523593238,3523593238,US
-3523593239,3523593855,HK
+3523584000,3523592495,HK
+3523592496,3523592503,IQ
+3523592504,3523593535,HK
+3523593536,3523593599,IR
+3523593600,3523593855,HK
3523593856,3523593919,IR
-3523593920,3523597923,HK
-3523597924,3523597924,US
-3523597925,3523598079,HK
-3523598080,3523598335,US
-3523598336,3523599615,HK
-3523599616,3523600383,US
-3523600384,3523601663,HK
+3523593920,3523597823,HK
+3523597824,3523598079,US
+3523598080,3523601663,HK
3523601664,3523601919,SA
-3523601920,3523602935,HK
-3523602936,3523602943,US
-3523602944,3523603199,HK
-3523603200,3523603711,US
+3523601920,3523603199,HK
+3523603200,3523603455,US
+3523603456,3523603711,HK
3523603712,3523603967,EU
-3523603968,3523604991,HK
-3523604992,3523605247,US
-3523605248,3523674111,HK
+3523603968,3523674111,HK
3523674112,3523682303,FJ
3523682304,3523686399,NZ
3523686400,3523690495,AU
@@ -96605,7 +91196,6 @@
3528404992,3528407039,NZ
3528407040,3528409087,AU
3528409088,3528425471,CN
-3528425472,3528441855,US
3528441856,3528445951,JP
3528445952,3528450047,ID
3528450048,3528458239,CN
@@ -96614,11 +91204,7 @@
3528474624,3528482815,TW
3528482816,3528491007,KR
3528491008,3528507391,AU
-3528507392,3528510975,JP
-3528510976,3528511231,US
-3528511232,3528513535,JP
-3528513536,3528514559,US
-3528514560,3528576767,JP
+3528507392,3528576767,JP
3528576768,3528577023,AP
3528577024,3528589311,JP
3528589312,3528720383,CN
@@ -96634,24 +91220,15 @@
3528978432,3528982527,HK
3528982528,3529056255,JP
3529056256,3529064447,IN
-3529064448,3529065983,HK
-3529065984,3529066239,AU
-3529066240,3529066495,US
-3529066496,3529072639,HK
+3529064448,3529072639,HK
3529072640,3529080831,JP
3529080832,3529089023,AU
3529089024,3529097215,KR
3529097216,3529113599,JP
3529113600,3531603967,KR
-3531603968,3531885055,JP
-3531885056,3531885311,US
-3531885312,3532792831,JP
-3532792832,3532793087,US
-3532793088,3532929279,JP
+3531603968,3532929279,JP
3532929280,3532929535,AP
-3532929536,3534002943,JP
-3534002944,3534003199,US
-3534003200,3534749695,JP
+3532929536,3534749695,JP
3534749696,3534763775,HK
3534763776,3534764031,AP
3534764032,3534867711,HK
@@ -96665,9 +91242,7 @@
3535380480,3535388671,PH
3535388672,3535405055,CN
3535405056,3535536127,MY
-3535536128,3535572991,JP
-3535572992,3535575039,US
-3535575040,3535798271,JP
+3535536128,3535798271,JP
3535798272,3535814655,TW
3535814656,3535822847,KR
3535822848,3535831039,CN
@@ -96677,9 +91252,7 @@
3535896576,3535929343,AU
3535929344,3535994879,JP
3535994880,3536060415,MY
-3536060416,3536151295,JP
-3536151296,3536151551,US
-3536151552,3536322559,JP
+3536060416,3536322559,JP
3536322560,3536551935,TW
3536551936,3536568319,TH
3536568320,3536584703,JP
@@ -96703,9 +91276,7 @@
3537325568,3537325823,AP
3537325824,3537371135,AU
3537371136,3537895423,KR
-3537895424,3538534911,JP
-3538534912,3538540543,US
-3538540544,3538943999,JP
+3537895424,3538943999,JP
3538944000,3539271679,TW
3539271680,3539304447,VN
3539304448,3539337215,HK
@@ -96725,22 +91296,14 @@
3544711168,3545235455,TW
3545235456,3546808319,CN
3546808320,3547856895,KR
-3547856896,3547916031,JP
-3547916032,3547916543,US
-3547916544,3547917567,JP
-3547917568,3547917823,US
-3547917824,3548905471,JP
+3547856896,3547916287,JP
+3547916288,3547916543,US
+3547916544,3548905471,JP
3548905472,3551002623,CN
3551002624,3556769791,KR
3556769792,3556786175,EU
3556786176,3556794367,RU
-3556794368,3556797439,ES
-3556797440,3556797623,PT
-3556797624,3556797631,ES
-3556797632,3556797655,PT
-3556797656,3556797663,ES
-3556797664,3556797695,PT
-3556797696,3556802559,ES
+3556794368,3556802559,ES
3556802560,3556810751,SD
3556810752,3556818943,PT
3556818944,3556827135,MD
@@ -96826,9 +91389,7 @@
3557572608,3557580799,RU
3557580800,3557588991,DE
3557588992,3557597183,TR
-3557597184,3557599231,SA
-3557599232,3557599487,US
-3557599488,3557605375,SA
+3557597184,3557605375,SA
3557605376,3557613567,LT
3557613568,3557621759,EG
3557621760,3557629951,RU
@@ -96863,7 +91424,9 @@
3557861984,3557862015,FI
3557862016,3557862399,SE
3557862400,3557862655,FI
-3557862656,3557864311,SE
+3557862656,3557863295,SE
+3557863296,3557863359,FI
+3557863360,3557864311,SE
3557864312,3557864319,FI
3557864320,3557867519,SE
3557867520,3557875711,RU
@@ -96904,20 +91467,19 @@
3558154240,3558155007,GB
3558155008,3558155263,US
3558155264,3558156287,GB
-3558156288,3558156543,US
-3558156544,3558157583,GB
-3558157584,3558157599,MM
-3558157600,3558157799,GB
-3558157800,3558157807,SL
-3558157808,3558158079,GB
+3558156288,3558156351,US
+3558156352,3558156359,GB
+3558156360,3558156543,US
+3558156544,3558158079,GB
3558158080,3558158207,US
-3558158208,3558159359,GB
+3558158208,3558158239,SC
+3558158240,3558158335,US
+3558158336,3558159359,GB
3558159360,3558159615,US
3558159616,3558159747,GB
3558159748,3558159748,US
-3558159749,3558162199,GB
-3558162200,3558162207,BI
-3558162208,3558162431,GB
+3558159749,3558162175,GB
+3558162176,3558162431,BI
3558162432,3558170623,DE
3558170624,3558178815,GB
3558178816,3558187007,BG
@@ -96931,7 +91493,9 @@
3558252544,3558260735,KE
3558260736,3558268927,UA
3558268928,3558277119,GI
-3558277120,3558288639,GB
+3558277120,3558286591,GB
+3558286592,3558286847,FR
+3558286848,3558288639,GB
3558288640,3558288895,EU
3558288896,3558289151,FR
3558289152,3558291295,GB
@@ -96964,8 +91528,7 @@
3558514688,3558522879,SK
3558522880,3558531071,NL
3558531072,3558539263,RU
-3558539264,3558543359,SE
-3558543360,3558547455,DK
+3558539264,3558547455,DK
3558547456,3558555647,FR
3558555648,3558572031,AT
3558572032,3558580223,DE
@@ -96989,14 +91552,14 @@
3558718208,3558718463,EU
3558718464,3558719487,NL
3558719488,3558735871,IL
-3558735872,3558736511,GB
-3558736512,3558736575,GG
-3558736576,3558740479,GB
-3558740480,3558742015,GG
-3558742016,3558742271,GB
-3558742272,3558742527,GG
-3558742528,3558742783,GB
-3558742784,3558744063,GG
+3558735872,3558736383,GB
+3558736384,3558736639,GG
+3558736640,3558740479,GB
+3558740480,3558741247,GG
+3558741248,3558741503,GB
+3558741504,3558742015,GG
+3558742016,3558743039,GB
+3558743040,3558744063,GG
3558744064,3558752255,LB
3558752256,3558760447,SI
3558760448,3558768639,FR
@@ -97033,14 +91596,16 @@
3559063552,3559079935,CH
3559079936,3559088127,JO
3559088128,3559088383,GB
-3559088384,3559089407,BE
+3559088384,3559088639,BE
+3559088640,3559089151,GB
+3559089152,3559089407,BE
3559089408,3559089663,GB
-3559089664,3559090943,BE
-3559090944,3559091455,GB
-3559091456,3559091711,BE
-3559091712,3559093247,GB
-3559093248,3559094783,BE
-3559094784,3559096319,GB
+3559089664,3559089919,BE
+3559089920,3559090431,GB
+3559090432,3559090687,BE
+3559090688,3559093247,GB
+3559093248,3559093759,BE
+3559093760,3559096319,GB
3559096320,3559104511,RO
3559104512,3559112703,RU
3559112704,3559120895,IT
@@ -97090,13 +91655,11 @@
3559473152,3559489535,CH
3559489536,3559491071,ES
3559491072,3559491327,NL
-3559491328,3559491762,ES
-3559491763,3559491763,NL
-3559491764,3559491765,ES
-3559491766,3559491766,NL
-3559491767,3559493167,ES
-3559493168,3559493183,NL
-3559493184,3559496703,ES
+3559491328,3559491583,ES
+3559491584,3559491839,NL
+3559491840,3559493119,ES
+3559493120,3559493375,NL
+3559493376,3559496703,ES
3559496704,3559496959,NL
3559496960,3559497727,ES
3559497728,3559505919,GB
@@ -97158,15 +91721,11 @@
3559964672,3559981055,RU
3559981056,3559989247,EE
3559989248,3559997439,PL
-3559997440,3560003688,KE
-3560003689,3560003689,NL
-3560003690,3560005631,KE
+3559997440,3560005631,KE
3560005632,3560013823,RU
3560013824,3560030207,ES
3560030208,3560046591,GB
-3560046592,3560052479,BG
-3560052480,3560052735,GB
-3560052736,3560054783,BG
+3560046592,3560054783,BG
3560054784,3560062975,TR
3560062976,3560071167,BG
3560071168,3560079359,CY
@@ -97204,9 +91763,7 @@
3560382464,3560390655,FO
3560390656,3560407039,RU
3560407040,3560423423,PT
-3560423424,3560429791,CH
-3560429792,3560429823,DE
-3560429824,3560431615,CH
+3560423424,3560431615,CH
3560431616,3560439807,SK
3560439808,3560447999,BG
3560448000,3560472575,GB
@@ -97261,11 +91818,7 @@
3560923136,3560931327,ES
3560931328,3560944127,DE
3560944128,3560944639,US
-3560944640,3560945663,DE
-3560945664,3560945919,US
-3560945920,3560946431,DE
-3560946432,3560946687,US
-3560946688,3560946943,DE
+3560944640,3560946943,DE
3560946944,3560947199,US
3560947200,3560947711,DE
3560947712,3560955903,SE
@@ -97333,7 +91886,9 @@
3561472000,3561480191,DE
3561480192,3561488383,GB
3561488384,3561496575,OM
-3561496576,3561504767,GB
+3561496576,3561497087,GB
+3561497088,3561497343,NL
+3561497344,3561504767,GB
3561504768,3561512959,DE
3561512960,3561521151,SI
3561521152,3561529343,GE
@@ -97346,11 +91901,15 @@
3561578496,3561586687,RU
3561586688,3561594879,BG
3561594880,3561603071,SE
-3561603072,3561609319,GB
-3561609320,3561609321,FR
-3561609322,3561618175,GB
-3561618176,3561618431,IE
-3561618432,3561618943,GB
+3561603072,3561603327,GB
+3561603328,3561603583,FR
+3561603584,3561607743,GB
+3561607744,3561607807,FR
+3561607808,3561609215,GB
+3561609216,3561609471,FR
+3561609472,3561616383,GB
+3561616384,3561616639,FR
+3561616640,3561618943,GB
3561618944,3561619455,ES
3561619456,3561641450,GB
3561641451,3561641451,FR
@@ -97370,13 +91929,10 @@
3561775104,3561783295,IL
3561783296,3561799679,RU
3561799680,3561807871,DE
-3561807872,3561814015,BE
-3561814016,3561814527,LU
-3561814528,3561815039,BE
-3561815040,3561815551,LU
+3561807872,3561815295,BE
+3561815296,3561815551,LU
3561815552,3561816063,BE
-3561816064,3561823999,VA
-3561824000,3561824255,IT
+3561816064,3561824255,VA
3561824256,3561832447,LI
3561832448,3561840639,IT
3561840640,3561848831,PL
@@ -97389,10 +91945,10 @@
3561897984,3561906175,GB
3561906176,3561914367,DE
3561914368,3561922559,ES
-3561922560,3561924863,GB
-3561924864,3561925631,NL
-3561925632,3561927423,GB
-3561927424,3561927679,NL
+3561922560,3561925009,GB
+3561925010,3561925010,NL
+3561925011,3561927551,GB
+3561927552,3561927679,NL
3561927680,3561930751,GB
3561930752,3561938943,NL
3561938944,3561947135,IE
@@ -97462,7 +92018,6 @@
3562496000,3562504191,BE
3562504192,3562512383,DE
3562512384,3562520575,UA
-3562520576,3562528767,ES
3562528768,3562536959,PL
3562536960,3562545151,AT
3562545152,3562553343,GB
@@ -97527,8 +92082,8 @@
3563067392,3563068415,MZ
3563068416,3563069439,NG
3563069440,3563077631,HU
-3563077632,3563078655,KZ
-3563078656,3563085823,SE
+3563077632,3563078911,KZ
+3563078912,3563085823,SE
3563085824,3563094015,RU
3563094016,3563102207,DE
3563102208,3563110399,CZ
@@ -97606,9 +92161,13 @@
3563814912,3563823103,SE
3563823104,3563831295,DE
3563831296,3563847679,RU
-3563847680,3563848847,ES
+3563847680,3563848447,ES
+3563848448,3563848847,NL
3563848848,3563848855,EU
-3563848856,3563855871,ES
+3563848856,3563848959,NL
+3563848960,3563851519,ES
+3563851520,3563852031,NL
+3563852032,3563855871,ES
3563855872,3563864063,AT
3563864064,3563872255,GB
3563872256,3563880447,RU
@@ -97648,8 +92207,12 @@
3564141312,3564142591,KG
3564142592,3564150783,DK
3564150784,3564153087,SE
-3564153088,3564153343,NO
-3564153344,3564158831,SE
+3564153088,3564153151,NO
+3564153152,3564153183,SE
+3564153184,3564153343,NO
+3564153344,3564157207,SE
+3564157208,3564157215,NO
+3564157216,3564158831,SE
3564158832,3564158839,FI
3564158840,3564158975,SE
3564158976,3564175359,DE
@@ -97692,9 +92255,7 @@
3564503040,3564511231,JO
3564511232,3564519423,RU
3564519424,3564527615,SI
-3564527616,3564529663,SA
-3564529664,3564529919,GB
-3564529920,3564543999,SA
+3564527616,3564543999,SA
3564544000,3564560383,DE
3564560384,3564560531,GB
3564560532,3564560532,EU
@@ -97702,7 +92263,8 @@
3564576768,3564584959,RU
3564584960,3564593151,SA
3564593152,3564601343,RU
-3564601344,3564609535,AT
+3564601344,3564605439,AT
+3564605440,3564609535,EE
3564609536,3564634111,RU
3564634112,3564642303,MK
3564642304,3564650495,CH
@@ -97715,14 +92277,16 @@
3564691456,3564699647,GI
3564699648,3564716031,GB
3564716032,3564724223,IT
-3564724224,3564729855,NL
-3564729856,3564730111,FR
-3564730112,3564732415,NL
+3564724224,3564732415,NL
3564732416,3564734207,GB
3564734208,3564734463,EU
-3564734464,3564738827,GB
-3564738828,3564738828,DE
-3564738829,3564740607,GB
+3564734464,3564738815,GB
+3564738816,3564739071,DE
+3564739072,3564740385,GB
+3564740386,3564740386,DE
+3564740387,3564740535,GB
+3564740536,3564740539,DE
+3564740540,3564740607,GB
3564740608,3564748799,FR
3564748800,3564756991,GB
3564756992,3564765183,ES
@@ -97738,22 +92302,18 @@
3564831488,3564831743,EU
3564831744,3564832511,BE
3564832512,3564832767,EU
-3564832768,3564836943,BE
-3564836944,3564836959,DE
-3564836960,3564837631,BE
-3564837632,3564837887,FR
-3564837888,3564838911,BE
+3564832768,3564838911,BE
3564838912,3564847103,DE
3564847104,3564855295,IT
3564855296,3564863487,DE
3564863488,3564879871,NL
3564879872,3564882431,GB
3564882432,3564882687,EU
-3564882688,3564892415,GB
-3564892416,3564892671,NL
-3564892672,3564892735,GB
-3564892736,3564892751,NL
-3564892752,3564896255,GB
+3564882688,3564886271,GB
+3564886272,3564886527,NL
+3564886528,3564892415,GB
+3564892416,3564892927,NL
+3564892928,3564896255,GB
3564896256,3564904447,RU
3564904448,3564912639,DE
3564912640,3564920831,BG
@@ -97768,13 +92328,7 @@
3564953856,3564954111,GB
3564954112,3564956671,AT
3564956672,3564956927,GB
-3564956928,3564959487,AT
-3564959488,3564959999,GB
-3564960000,3564960511,AT
-3564960512,3564960767,GB
-3564960768,3564961023,AT
-3564961024,3564961279,GB
-3564961280,3564961791,AT
+3564956928,3564961791,AT
3564961792,3564969983,TR
3564969984,3564978175,DE
3564978176,3564986367,GB
@@ -97806,15 +92360,17 @@
3565551616,3565682687,GB
3565682688,3565748223,NL
3565748224,3565756671,EU
-3565756672,3565757695,GB
-3565757696,3565759743,EU
+3565756672,3565756927,GB
+3565756928,3565757439,EU
+3565757440,3565757695,GB
+3565757696,3565758975,EU
+3565758976,3565759231,GB
+3565759232,3565759743,EU
3565759744,3565759999,GB
-3565760000,3565760767,EU
-3565760768,3565761023,GB
-3565761024,3565766143,EU
+3565760000,3565766143,EU
3565766144,3565766399,GB
-3565766400,3565767167,EU
-3565767168,3565767935,GB
+3565766400,3565767423,EU
+3565767424,3565767935,GB
3565767936,3565813759,EU
3565813760,3565879295,SA
3565879296,3566010367,GB
@@ -97829,11 +92385,9 @@
3566354432,3566370815,RO
3566370816,3566403583,TR
3566403584,3566436351,CH
-3566436352,3566438399,IE
-3566438400,3566438546,GB
+3566436352,3566438546,IE
3566438547,3566438547,EU
-3566438548,3566438655,GB
-3566438656,3566469119,IE
+3566438548,3566469119,IE
3566469120,3566534655,GB
3566534656,3566551039,DE
3566551040,3566600191,FI
@@ -97851,27 +92405,33 @@
3566895104,3566927871,KZ
3566927872,3566976767,FR
3566976768,3566977023,EU
-3566977024,3566988951,FR
-3566988952,3566988959,GB
-3566988960,3566993407,FR
+3566977024,3566993407,FR
3566993408,3567058943,TR
-3567058944,3567080703,FR
-3567080704,3567080959,GB
-3567080960,3567124479,FR
+3567058944,3567124479,FR
3567124480,3567157247,EU
3567157248,3567165439,CZ
3567165440,3567169535,RU
3567169536,3567173631,MK
3567173632,3567239167,GB
-3567239168,3567241471,EU
-3567241472,3567243007,NL
-3567243008,3567247615,EU
-3567247616,3567247871,NL
-3567247872,3567255551,EU
+3567239168,3567240191,EU
+3567240192,3567240703,NL
+3567240704,3567241471,EU
+3567241472,3567241727,NL
+3567241728,3567242751,EU
+3567242752,3567243007,NL
+3567243008,3567245055,EU
+3567245056,3567245311,NL
+3567245312,3567247359,EU
+3567247360,3567249407,NL
+3567249408,3567251455,EU
+3567251456,3567251711,NL
+3567251712,3567255551,EU
3567255552,3567321087,PL
3567321088,3567353855,GB
3567353856,3567386623,CH
-3567386624,3567390719,GB
+3567386624,3567387647,GB
+3567387648,3567387903,DE
+3567387904,3567390719,GB
3567390720,3567390975,DE
3567390976,3567391231,GB
3567391232,3567391487,DE
@@ -97895,16 +92455,14 @@
3567620096,3567620351,IN
3567620352,3567626239,GB
3567626240,3567626751,TZ
-3567626752,3567641087,GB
-3567641088,3567641343,US
-3567641344,3567648767,GB
+3567626752,3567648767,GB
3567648768,3567665151,BE
3567665152,3567673343,ES
3567673344,3567681535,AT
3567681536,3567714303,ES
-3567714304,3567716351,EU
-3567716352,3567716607,NL
-3567716608,3567779839,EU
+3567714304,3567715583,EU
+3567715584,3567715839,GB
+3567715840,3567779839,EU
3567779840,3567845375,DE
3567845376,3567861759,GB
3567861760,3567878143,NO
@@ -97912,11 +92470,7 @@
3567976448,3568041983,IT
3568041984,3568107519,DE
3568107520,3568173055,GB
-3568173056,3568233471,TR
-3568233472,3568234495,US
-3568234496,3568295935,TR
-3568295936,3568296191,US
-3568296192,3568304127,TR
+3568173056,3568304127,TR
3568304128,3568369663,RU
3568369664,3568435199,IT
3568435200,3568443391,UA
@@ -97926,9 +92480,7 @@
3568486656,3568486911,EU
3568486912,3568492543,NL
3568492544,3568500735,RS
-3568500736,3568513535,IL
-3568513536,3568513791,US
-3568513792,3568566271,IL
+3568500736,3568566271,IL
3568566272,3568585471,FR
3568585472,3568585727,EU
3568585728,3568599039,FR
@@ -97941,13 +92493,11 @@
3568795648,3568803839,GB
3568803840,3568812031,IT
3568812032,3568828415,ES
-3568828416,3568857519,DE
-3568857520,3568857527,US
-3568857528,3568898911,DE
-3568898912,3568898927,PL
-3568898928,3568904191,DE
+3568828416,3568904191,DE
3568904192,3568904447,EU
-3568904448,3568959487,DE
+3568904448,3568915791,DE
+3568915792,3568915807,LU
+3568915808,3568959487,DE
3568959488,3569025023,AT
3569025024,3569057791,NL
3569057792,3569074687,GB
@@ -97967,25 +92517,21 @@
3569167872,3569168127,EU
3569168128,3569188863,NL
3569188864,3569221631,IT
-3569221632,3569245951,BE
-3569245952,3569246207,GB
-3569246208,3569287167,BE
+3569221632,3569287167,BE
3569287168,3569352703,PL
3569352704,3569483775,RU
3569483776,3569614847,FR
3569614848,3569680383,GB
3569680384,3569713151,SK
3569713152,3569729535,AT
-3569729536,3569811455,FR
+3569729536,3569811175,FR
+3569811176,3569811176,GP
+3569811177,3569811455,FR
3569811456,3569876991,IL
3569876992,3569942527,RS
3569942528,3570073599,DE
3570073600,3570081791,NL
-3570081792,3570095679,CH
-3570095680,3570095767,FR
-3570095768,3570095775,CH
-3570095776,3570095871,FR
-3570095872,3570098687,CH
+3570081792,3570098687,CH
3570098688,3570098943,EU
3570098944,3570106367,CH
3570106368,3570139135,PL
@@ -98013,10 +92559,12 @@
3571253248,3571286015,BE
3571286016,3571318783,DE
3571318784,3571321599,GB
-3571321600,3571321855,DE
-3571321856,3571332351,GB
-3571332352,3571332607,DE
-3571332608,3571361279,GB
+3571321600,3571321727,DE
+3571321728,3571343393,GB
+3571343394,3571343394,DE
+3571343395,3571351551,GB
+3571351552,3571351807,DE
+3571351808,3571361279,GB
3571361280,3571361535,DE
3571361536,3571384319,GB
3571384320,3571482623,DE
@@ -98044,11 +92592,7 @@
3572367360,3572432895,NL
3572432896,3572465663,IT
3572465664,3572498431,BE
-3572498432,3572530431,GB
-3572530432,3572530591,FR
-3572530592,3572530623,GB
-3572530624,3572530687,FR
-3572530688,3572563967,GB
+3572498432,3572563967,GB
3572563968,3572572159,KG
3572572160,3572580351,NL
3572580352,3572596735,AT
@@ -98096,7 +92640,8 @@
3573921792,3573923839,RU
3573923840,3573925887,UA
3573925888,3573929983,PL
-3573929984,3573938175,RU
+3573929984,3573934079,RU
+3573936128,3573938175,RU
3573938176,3573940223,PL
3573940224,3574005759,PS
3574005760,3574071295,CY
@@ -98112,27 +92657,26 @@
3574464512,3574530047,TR
3574530048,3574594559,SE
3574594560,3574595583,GB
-3574595584,3574595839,GF
+3574595584,3574595839,FR
3574595840,3574596095,MQ
-3574596096,3574596351,RE
-3574596352,3574596623,FR
-3574596624,3574596639,GP
-3574596640,3574596735,FR
-3574596736,3574596767,GP
-3574596768,3574597119,FR
-3574597120,3574597375,MQ
-3574597376,3574597631,FR
+3574596096,3574596607,FR
+3574596608,3574596863,GP
+3574596864,3574597119,FR
+3574597120,3574597631,MQ
3574597632,3574598143,GP
3574598144,3574598655,FR
-3574598656,3574599679,MQ
+3574598656,3574598911,MQ
+3574598912,3574599167,FR
+3574599168,3574599679,MQ
3574599680,3574599935,GP
3574599936,3574600191,FR
3574600192,3574600447,MQ
-3574600448,3574601215,FR
-3574601216,3574601471,GP
-3574601472,3574602303,FR
-3574602304,3574602319,GF
-3574602320,3574603263,FR
+3574600448,3574600959,FR
+3574600960,3574601471,GP
+3574601472,3574602239,FR
+3574602240,3574602495,GF
+3574602496,3574603007,FR
+3574603008,3574603263,MQ
3574603264,3574603519,GP
3574603520,3574603775,FR
3574603776,3574611967,BG
@@ -98152,9 +92696,7 @@
3575054336,3575119871,DE
3575119872,3575185407,RU
3575185408,3575250943,PL
-3575250944,3575289855,IT
-3575289856,3575290111,US
-3575290112,3575316479,IT
+3575250944,3575316479,IT
3575316480,3575349247,RU
3575349248,3575382015,ES
3575382016,3575447551,FI
@@ -98167,25 +92709,23 @@
3575581696,3575588863,BE
3575588864,3575589119,A2
3575589120,3575589375,BE
-3575589376,3575589631,US
+3575589376,3575589631,A2
3575589632,3575589887,CY
3575589888,3575590655,BE
3575590656,3575590911,GB
-3575590912,3575624703,BE
+3575590912,3575622911,BE
+3575622912,3575623167,GB
+3575623168,3575624703,BE
3575624704,3575624959,EU
-3575624960,3575626239,BE
-3575626240,3575626495,GB
-3575626496,3575626751,BE
+3575624960,3575626751,BE
3575626752,3575627007,A2
-3575627008,3575628633,BE
-3575628634,3575628634,GB
-3575628635,3575630591,BE
-3575630592,3575630847,IL
-3575630848,3575631103,BE
+3575627008,3575631103,BE
3575631104,3575631359,EU
-3575631360,3575634175,BE
-3575634176,3575634431,IT
-3575634432,3575638181,BE
+3575631360,3575634255,BE
+3575634256,3575634263,IT
+3575634264,3575635985,BE
+3575635986,3575635986,DE
+3575635987,3575638181,BE
3575638182,3575638182,EU
3575638183,3575644159,BE
3575644160,3575709695,DK
@@ -98202,33 +92742,53 @@
3576040192,3576040447,GB
3576040448,3576072447,EU
3576072448,3576072703,GB
-3576072704,3576091903,EU
-3576091904,3576092159,GB
-3576092160,3576099071,EU
+3576072704,3576085698,EU
+3576085699,3576085699,GB
+3576085700,3576092129,EU
+3576092130,3576092130,GB
+3576092131,3576099071,EU
3576099072,3576099327,GB
-3576099328,3576101887,EU
-3576101888,3576102143,GB
-3576102144,3576102399,EU
-3576102400,3576102655,GB
-3576102656,3576102911,EU
-3576102912,3576135679,GB
+3576099328,3576100351,EU
+3576100352,3576100607,GB
+3576100608,3576101887,EU
+3576101888,3576135679,GB
3576135680,3576168447,DE
-3576168448,3576237055,GB
-3576237056,3576237311,FR
-3576237312,3576238335,GB
-3576238336,3576240639,FR
-3576240640,3576240895,GB
-3576240896,3576245503,FR
+3576168448,3576236031,GB
+3576236032,3576236287,FR
+3576236288,3576238079,GB
+3576238080,3576238847,FR
+3576238848,3576241151,GB
+3576241152,3576241407,FR
+3576241408,3576242175,GB
+3576242176,3576242431,FR
+3576242432,3576243199,GB
+3576243200,3576243455,FR
+3576243456,3576245247,GB
+3576245248,3576245503,FR
3576245504,3576249343,GB
-3576249344,3576250879,FR
-3576250880,3576251135,GB
-3576251136,3576252671,FR
-3576252672,3576254479,GB
-3576254480,3576254487,FR
-3576254488,3576258047,GB
-3576258048,3576260095,FR
-3576260096,3576265727,GB
-3576265728,3576299519,FR
+3576249344,3576249599,FR
+3576249600,3576252415,GB
+3576252416,3576252671,FR
+3576252672,3576254975,GB
+3576254976,3576255231,FR
+3576255232,3576257023,GB
+3576257024,3576257279,FR
+3576257280,3576258047,GB
+3576258048,3576258303,FR
+3576258304,3576258625,GB
+3576258626,3576258626,FR
+3576258627,3576259839,GB
+3576259840,3576260095,FR
+3576260096,3576260863,GB
+3576260864,3576261119,FR
+3576261120,3576263423,GB
+3576263424,3576263679,FR
+3576263680,3576265215,GB
+3576265216,3576265471,FR
+3576265472,3576265727,GB
+3576265728,3576265983,FR
+3576265984,3576266751,GB
+3576266752,3576299519,FR
3576299520,3576365055,AE
3576365056,3576430591,TR
3576430592,3576496127,FR
@@ -98239,27 +92799,27 @@
3576758272,3576823807,BE
3576823808,3576889343,SE
3576889344,3576954879,NL
-3576954880,3576959743,NO
-3576959744,3576959999,GB
-3576960000,3576987647,NO
+3576954880,3576987647,NO
3576987648,3577020415,GB
3577020416,3577085951,NL
3577085952,3577151487,DE
-3577151488,3577151999,RE
-3577152000,3577152255,FR
-3577152256,3577154047,RE
+3577151488,3577151999,FR
+3577152000,3577152511,RE
+3577152512,3577153535,FR
+3577153536,3577154047,RE
3577154048,3577154303,FR
-3577154304,3577157375,RE
-3577157376,3577157631,FR
-3577157632,3577159935,RE
-3577159936,3577161727,FR
+3577154304,3577155327,RE
+3577155328,3577155455,FR
+3577155456,3577156735,RE
+3577156736,3577156863,FR
+3577156864,3577159679,RE
+3577159680,3577161727,FR
3577161728,3577161983,RE
-3577161984,3577162495,FR
-3577162496,3577164287,RE
-3577164288,3577164543,FR
-3577164544,3577167103,RE
-3577167104,3577167359,FR
-3577167360,3577167871,RE
+3577161984,3577162751,FR
+3577162752,3577163263,RE
+3577163264,3577164031,FR
+3577164032,3577164287,RE
+3577164288,3577167871,FR
3577167872,3577184255,ET
3577184256,3577217023,CH
3577217024,3577282559,FR
@@ -98267,16 +92827,10 @@
3577348096,3577413631,PT
3577413632,3577479167,RU
3577479168,3577544703,ES
-3577544704,3577586687,DE
-3577586688,3577586943,GB
-3577586944,3577610239,DE
+3577544704,3577610239,DE
3577610240,3577625599,EU
3577625600,3577625855,GB
-3577625856,3577626111,EU
-3577626112,3577626367,GB
-3577626368,3577639679,EU
-3577639680,3577639935,FR
-3577639936,3577641215,EU
+3577625856,3577641215,EU
3577641216,3577641471,FR
3577641472,3577641983,EU
3577641984,3577642239,GB
@@ -98293,11 +92847,7 @@
3578064511,3578064639,EU
3578064640,3578159615,DE
3578159616,3578159871,EU
-3578159872,3578192988,DE
-3578192989,3578192989,GB
-3578192990,3578205439,DE
-3578205440,3578205695,GB
-3578205696,3578234623,DE
+3578159872,3578234623,DE
3578234624,3578234879,EU
3578234880,3578265599,DE
3578265600,3578331135,GB
@@ -98318,17 +92868,19 @@
3578822656,3578855423,RU
3578855424,3578888191,GB
3578888192,3578920959,SK
-3578920960,3578981631,IT
-3578981632,3578981887,ES
-3578981888,3578986495,IT
+3578920960,3578986495,IT
3578986496,3579002879,DE
3579002880,3579019263,GB
3579019264,3579052031,DK
3579052032,3579117567,NL
3579117568,3579183103,RU
3579183104,3579193599,GB
-3579193600,3579193855,BE
-3579193856,3579248639,GB
+3579193600,3579193655,BE
+3579193656,3579193663,NL
+3579193664,3579193855,BE
+3579193856,3579212287,GB
+3579212288,3579212543,FR
+3579212544,3579248639,GB
3579248640,3579346943,RU
3579346944,3579445247,SE
3579445248,3579478015,AT
@@ -98346,38 +92898,44 @@
3579723776,3579740159,AT
3579740160,3579772927,IE
3579772928,3579838463,DE
-3579838464,3579879935,ES
-3579879936,3579880191,US
-3579880192,3580100607,ES
+3579838464,3580100607,ES
3580100608,3580215295,SE
3580215296,3580215807,EE
-3580215808,3580223487,SE
-3580223488,3580223999,DE
-3580224000,3580224511,SE
-3580224512,3580224767,DE
+3580215808,3580223999,SE
+3580224000,3580224767,DE
3580224768,3580225023,SE
3580225024,3580225535,DE
-3580225536,3580226559,SE
-3580226560,3580227071,DE
-3580227072,3580228607,SE
-3580228608,3580229119,DE
-3580229120,3580229375,SE
-3580229376,3580230143,DE
-3580230144,3580230655,SE
-3580230656,3580231679,DE
-3580231680,3580236287,SE
+3580225536,3580226047,SE
+3580226048,3580226559,DE
+3580226560,3580226815,SE
+3580226816,3580228095,DE
+3580228096,3580228863,SE
+3580228864,3580229247,DE
+3580229248,3580229375,SE
+3580229376,3580229631,DE
+3580229632,3580230143,SE
+3580230144,3580230655,DE
+3580230656,3580230911,SE
+3580230912,3580231167,DE
+3580231168,3580236287,SE
3580236288,3580236543,LT
-3580236544,3580239359,SE
+3580236544,3580237055,SE
+3580237056,3580237311,LV
+3580237312,3580239359,SE
3580239360,3580239871,LV
3580239872,3580255231,SE
3580255232,3580258303,DE
-3580258304,3580260351,SE
-3580260352,3580263423,AT
-3580263424,3580268543,SE
-3580268544,3580272383,LV
-3580272384,3580338175,SE
-3580338176,3580338687,HR
-3580338688,3580362751,SE
+3580258304,3580260863,SE
+3580260864,3580264447,AT
+3580264448,3580264959,SE
+3580264960,3580265471,AT
+3580265472,3580268543,SE
+3580268544,3580271615,LV
+3580271616,3580271871,SE
+3580271872,3580272639,LV
+3580272640,3580338175,SE
+3580338176,3580338431,HR
+3580338432,3580362751,SE
3580362752,3580624895,GB
3580624896,3580626943,RU
3580626944,3580628991,PL
@@ -98390,11 +92948,7 @@
3580641280,3580643327,FR
3580643328,3580645375,UA
3580645376,3580647423,PL
-3580647424,3580647935,GB
-3580647936,3580648447,DE
-3580648448,3580648703,GB
-3580648704,3580648959,DE
-3580648960,3580649471,GB
+3580647424,3580649471,DE
3580649472,3580651519,SE
3580651520,3580653567,NL
3580653568,3580655615,PL
@@ -98430,9 +92984,7 @@
3581242624,3581245439,FR
3581245440,3581280255,EU
3581280256,3581411327,BE
-3581411328,3581521663,GB
-3581521664,3581521919,TR
-3581521920,3581673471,GB
+3581411328,3581673471,GB
3581673472,3581935615,NL
3581935616,3581943807,RU
3581943808,3581951999,FR
@@ -98463,7 +93015,7 @@
3582116864,3582117887,EE
3582117888,3582120959,SE
3582120960,3582121983,EE
-3582121984,3582124031,LT
+3582121984,3582124031,SE
3582124032,3582132223,FI
3582132224,3582140415,RU
3582140416,3582148607,GE
@@ -98518,15 +93070,12 @@
3582492672,3582509055,IT
3582509056,3582517247,SA
3582517248,3582525439,PL
-3582525440,3582525951,IM
-3582525952,3582526207,GB
-3582526208,3582527231,IM
-3582527232,3582527683,GB
-3582527684,3582527687,IM
-3582527688,3582531327,GB
-3582531328,3582532607,IM
-3582532608,3582533119,GB
-3582533120,3582533631,IM
+3582525440,3582525695,IM
+3582525696,3582526207,GB
+3582526208,3582527743,IM
+3582527744,3582531327,GB
+3582531328,3582531583,IM
+3582531584,3582533631,GB
3582533632,3582541823,BG
3582541824,3582550015,US
3582550016,3582558207,RS
@@ -98534,8 +93083,8 @@
3582560256,3582560511,GN
3582560512,3582566399,MC
3582566400,3582570751,EU
-3582570752,3582571007,FR
-3582571008,3582574591,EU
+3582570752,3582571263,FR
+3582571264,3582574591,EU
3582574592,3582582783,DE
3582582784,3582590975,RU
3582590976,3582599167,FR
@@ -98547,14 +93096,18 @@
3582640128,3582648319,RU
3582648320,3582656511,PT
3582656512,3582664703,ES
-3582664704,3582672895,JO
+3582664704,3582668095,JO
+3582668096,3582668223,US
+3582668224,3582672895,JO
3582672896,3582681087,DE
3582681088,3582689279,FR
3582689280,3582697471,DE
3582697472,3582705663,FI
3582705664,3582722047,TR
3582722048,3582730239,IT
-3582730240,3582738431,ES
+3582730240,3582737151,ES
+3582737152,3582737407,DZ
+3582737408,3582738431,ES
3582738432,3582746623,DK
3582746624,3582754815,RU
3582754816,3582763007,GR
@@ -98605,8 +93158,8 @@
3583123456,3583131647,PL
3583131648,3583139839,SE
3583139840,3583148031,DE
-3583148032,3583157503,GB
-3583157504,3583157759,IE
+3583148032,3583157247,GB
+3583157248,3583157759,IE
3583157760,3583164415,GB
3583164416,3583172607,PT
3583172608,3583188991,DE
@@ -98630,7 +93183,8 @@
3583336448,3583337727,ME
3583337728,3583337983,AL
3583337984,3583344639,ME
-3583344640,3583352831,BG
+3583344640,3583352575,BG
+3583352576,3583352831,MK
3583352832,3583361023,CY
3583361024,3583369215,IT
3583369216,3583377407,ES
@@ -98641,11 +93195,7 @@
3583410176,3583418367,SE
3583418368,3583426559,TN
3583426560,3583434751,CI
-3583434752,3583435775,AT
-3583435776,3583436031,GB
-3583436032,3583436799,AT
-3583436800,3583437055,DE
-3583437056,3583442943,AT
+3583434752,3583442943,AT
3583442944,3583451135,UA
3583451136,3583459327,IL
3583459328,3583467111,CZ
@@ -98662,9 +93212,7 @@
3583541248,3583549439,RU
3583549440,3583557631,NL
3583557632,3583565823,IT
-3583565824,3583573759,GB
-3583573760,3583573791,US
-3583573792,3583574015,GB
+3583565824,3583574015,GB
3583574016,3583582207,NO
3583582208,3583590399,AT
3583590400,3583598591,DE
@@ -98679,12 +93227,10 @@
3583696896,3583705087,NL
3583705088,3583713279,UA
3583713280,3583721471,CZ
-3583721472,3583727871,DE
-3583727872,3583728127,FR
-3583728128,3583729663,DE
+3583721472,3583729663,DE
3583729664,3583737855,TR
-3583737856,3583743487,EU
-3583743488,3583743743,GB
+3583737856,3583743615,EU
+3583743616,3583743743,GB
3583743744,3583743975,EU
3583743976,3583743983,IE
3583743984,3583746047,EU
@@ -98735,9 +93281,13 @@
3584091136,3584092415,NL
3584092416,3584092671,NO
3584092672,3584092927,NL
-3584092928,3584093183,NO
-3584093184,3584093439,NL
-3584093440,3584096255,NO
+3584092928,3584093695,NO
+3584093696,3584094975,NL
+3584094976,3584095231,NO
+3584095232,3584095487,NL
+3584095488,3584095743,NO
+3584095744,3584095999,NL
+3584096000,3584096255,NO
3584096256,3584098303,NL
3584098304,3584106495,SI
3584106496,3584114687,FI
@@ -98767,17 +93317,13 @@
3584247653,3584247956,NL
3584247957,3584247957,NL
3584247958,3584253951,NL
-3584253952,3584256273,ME
-3584256274,3584256274,US
-3584256275,3584262143,ME
+3584253952,3584260351,ME
+3584260352,3584260607,RS
+3584260608,3584262143,ME
3584262144,3584270335,SE
3584270336,3584278527,FR
-3584278528,3584280575,GB
-3584280576,3584280831,GG
-3584280832,3584286719,GB
-3584286720,3584296703,AT
-3584296704,3584296959,DE
-3584296960,3584303103,AT
+3584278528,3584286719,GB
+3584286720,3584303103,AT
3584303104,3584311295,ES
3584311296,3584319487,DE
3584319488,3584327679,LT
@@ -98786,17 +93332,17 @@
3584344064,3584352255,SE
3584352256,3584360447,RO
3584360448,3584368639,GB
-3584368640,3584372735,SA
-3584372736,3584376831,LB
+3584368640,3584370175,LB
+3584370176,3584370431,SA
+3584370432,3584370687,LB
+3584370688,3584371711,SA
+3584371712,3584376831,LB
3584376832,3584393215,DE
3584393216,3584401407,GB
3584401408,3584409599,MT
3584409600,3584417791,RU
3584417792,3584434175,GB
-3584434176,3584434431,FR
-3584434432,3584440063,LU
-3584440064,3584440191,FR
-3584440192,3584442367,LU
+3584434176,3584442367,LU
3584442368,3584450559,GB
3584450560,3584458751,EU
3584458752,3584466943,SA
@@ -98807,9 +93353,7 @@
3584499712,3584507903,RU
3584507904,3584516095,GB
3584516096,3584524287,NO
-3584524288,3584527359,IS
-3584527360,3584527615,US
-3584527616,3584532479,IS
+3584524288,3584532479,IS
3584532480,3584540671,DE
3584540672,3584548863,RU
3584548864,3584557055,ES
@@ -98841,18 +93385,14 @@
3584753664,3584770047,RU
3584770048,3584778239,NL
3584778240,3584786431,IT
-3584786432,3584787711,NL
-3584787712,3584787967,GB
-3584787968,3584794623,NL
+3584786432,3584794623,NL
3584794624,3584802815,IT
3584802816,3584811007,GB
3584811008,3584819199,ES
3584819200,3584827391,RU
3584827392,3584835583,ES
3584835584,3584843775,AZ
-3584843776,3584850873,DE
-3584850874,3584850874,US
-3584850875,3584851967,DE
+3584843776,3584851967,DE
3584860160,3584868351,PL
3584868352,3584876543,NO
3584876544,3584884735,SI
@@ -98921,8 +93461,7 @@
3585400832,3585409023,FR
3585409024,3585417215,RU
3585417216,3585425407,BE
-3585425408,3585425663,GB
-3585425664,3585433599,ES
+3585425408,3585433599,ES
3585433600,3585441791,IS
3585441792,3585449983,SK
3585449984,3585458175,SA
@@ -98937,9 +93476,7 @@
3585531904,3585540095,AT
3585540096,3585548287,DE
3585548288,3585556479,RU
-3585556480,3585558783,DE
-3585558784,3585559039,US
-3585559040,3585564671,DE
+3585556480,3585564671,DE
3585564672,3585572863,RU
3585572864,3585581055,IT
3585581056,3585597439,DE
@@ -98963,10 +93500,11 @@
3585677312,3585679359,SE
3585679360,3585687551,FI
3585687552,3585695743,DE
-3585695744,3585701631,GB
+3585695744,3585697279,GB
+3585697280,3585697535,NO
+3585697536,3585701631,GB
3585701632,3585701887,A2
-3585701888,3585702399,GB
-3585702400,3585702527,US
+3585701888,3585702527,GB
3585702528,3585702655,TZ
3585702656,3585703935,GB
3585703936,3585712127,DE
@@ -98985,7 +93523,9 @@
3585810432,3585818623,GB
3585818624,3585826815,DE
3585826816,3585835007,RU
-3585835008,3585843199,US
+3585835008,3585835871,US
+3585835872,3585835903,NL
+3585835904,3585843199,US
3585843200,3585851391,NO
3585851392,3585859583,SE
3585859584,3585865471,DE
@@ -98997,15 +93537,20 @@
3585884160,3585892351,IQ
3585892352,3585900543,DE
3585900544,3585908735,NO
-3585908736,3585909183,FR
-3585909184,3585909759,GF
+3585908736,3585909119,FR
+3585909120,3585909759,GF
3585909760,3585910015,FR
3585910016,3585910271,MQ
-3585910272,3585910783,GP
-3585910784,3585911551,FR
-3585911552,3585914623,GP
+3585910272,3585910527,GP
+3585910528,3585911551,FR
+3585911552,3585911807,GP
+3585911808,3585912575,FR
+3585912576,3585913343,GP
+3585913344,3585913599,FR
+3585913600,3585914623,GP
3585914624,3585914879,GF
-3585914880,3585916415,GP
+3585914880,3585915135,FR
+3585915136,3585916415,GP
3585916416,3585916671,FR
3585916672,3585916927,MQ
3585916928,3585925119,IT
@@ -99047,9 +93592,9 @@
3586211840,3586228223,CH
3586228224,3586244607,BE
3586244608,3586260991,NL
-3586260992,3586269279,ES
-3586269280,3586269311,NL
-3586269312,3586272255,ES
+3586260992,3586269183,ES
+3586269184,3586269439,NL
+3586269440,3586272255,ES
3586272256,3586272511,NL
3586272512,3586277375,ES
3586277376,3586293759,TR
@@ -99066,9 +93611,7 @@
3586457600,3586473983,NL
3586473984,3586476287,HU
3586476288,3586476303,SK
-3586476304,3586478079,HU
-3586478080,3586478591,SK
-3586478592,3586490367,HU
+3586476304,3586490367,HU
3586490368,3586506751,LT
3586506752,3586523135,NL
3586523136,3586555903,DE
@@ -99114,7 +93657,9 @@
3586912722,3586912722,FR
3586912723,3586916351,DE
3586916352,3586924543,IT
-3586924544,3586932735,AX
+3586924544,3586925823,AX
+3586925824,3586926079,FI
+3586926080,3586932735,AX
3586932736,3586949119,LB
3586949120,3586965503,SE
3586965504,3586981887,NL
@@ -99146,13 +93691,20 @@
3587219456,3587227647,RU
3587227648,3587233279,GB
3587233280,3587233791,NL
-3587233792,3587236863,GB
-3587236864,3587238655,NL
-3587238656,3587238911,GB
+3587233792,3587237439,GB
+3587237440,3587237503,NL
+3587237504,3587238911,GB
3587238912,3587239423,NL
3587239424,3587239679,GB
-3587239680,3587239935,BE
-3587239936,3587243519,NL
+3587239680,3587240191,NL
+3587240192,3587240447,GB
+3587240448,3587240703,NL
+3587240704,3587240959,GB
+3587240960,3587241215,NL
+3587241216,3587241983,GB
+3587241984,3587242239,NL
+3587242240,3587243263,GB
+3587243264,3587243519,NL
3587243520,3587244031,GB
3587244032,3587260415,IT
3587260416,3587284991,DE
@@ -99164,8 +93716,7 @@
3587286528,3587286783,EU
3587286784,3587289599,IT
3587289600,3587290111,EU
-3587290112,3587290367,FR
-3587290368,3587309567,IT
+3587290112,3587309567,IT
3587309568,3587325951,GB
3587325952,3587342335,RU
3587342336,3587358719,CZ
@@ -99180,11 +93731,7 @@
3587440640,3587444900,SE
3587444901,3587444916,FI
3587444917,3587457023,SE
-3587457024,3587460607,GB
-3587460608,3587460863,NL
-3587460864,3587471631,GB
-3587471632,3587471647,US
-3587471648,3587473407,GB
+3587457024,3587473407,GB
3587473408,3587489791,IT
3587489792,3587506175,EG
3587506176,3587538943,IT
@@ -99207,7 +93754,6 @@
3587719168,3587735551,PL
3587735552,3587751935,GB
3587751936,3587768319,FI
-3587768320,3587776511,DE
3587776512,3587784703,IR
3587784704,3587801087,DE
3587801088,3587817471,IT
@@ -99226,9 +93772,7 @@
3587997696,3588014079,DE
3588014080,3588030463,CZ
3588030464,3588046847,RU
-3588046848,3588056473,DE
-3588056474,3588056474,GB
-3588056475,3588063231,DE
+3588046848,3588063231,DE
3588063232,3588071423,CH
3588071424,3588079615,GB
3588079616,3588095999,CH
@@ -99238,9 +93782,7 @@
3588128768,3588145151,HU
3588145152,3588153343,PL
3588153344,3588161535,RU
-3588161536,3588173055,FR
-3588173056,3588173567,RE
-3588173568,3588227071,FR
+3588161536,3588227071,FR
3588227072,3588292607,BE
3588292608,3588308991,AT
3588308992,3588325375,NO
@@ -99251,21 +93793,9 @@
3588341760,3588358143,IT
3588358144,3588374527,BG
3588374528,3588390911,SE
-3588390912,3588394255,LT
-3588394256,3588394259,LV
-3588394260,3588394260,LT
-3588394261,3588394261,LV
-3588394262,3588394269,LT
-3588394270,3588394271,LV
-3588394272,3588394279,LT
-3588394280,3588394287,LV
-3588394288,3588394302,LT
-3588394303,3588394303,LV
-3588394304,3588394319,LT
-3588394320,3588394321,LV
-3588394322,3588394335,LT
-3588394336,3588394367,LV
-3588394368,3588407295,LT
+3588390912,3588394239,LT
+3588394240,3588394495,LV
+3588394496,3588407295,LT
3588407296,3588423679,CZ
3588423680,3588440063,ES
3588440064,3588456447,PL
@@ -99300,20 +93830,18 @@
3588857856,3588866047,IR
3588866048,3588882431,NL
3588882432,3588890623,RU
-3588890624,3588892415,GB
-3588892416,3588892671,US
-3588892672,3588898815,GB
+3588890624,3588898815,GB
3588898816,3588915199,NO
3588915200,3588931583,IT
3588931584,3588947967,RU
-3588947968,3588958111,GB
-3588958112,3588958127,NL
-3588958128,3588964351,GB
+3588947968,3588964351,GB
3588964352,3588997119,CZ
3588997120,3589013503,AT
3589013504,3589021695,ES
3589021696,3589029887,SA
-3589029888,3589034239,NL
+3589029888,3589030315,NL
+3589030316,3589030316,FR
+3589030317,3589034239,NL
3589034240,3589034495,EU
3589034496,3589037055,NL
3589037056,3589037311,EU
@@ -99339,9 +93867,9 @@
3589390336,3589423103,RU
3589423104,3589431039,GB
3589431040,3589431295,ES
-3589431296,3589433937,GB
-3589433938,3589433938,IE
-3589433939,3589439487,GB
+3589431296,3589433855,GB
+3589433856,3589434111,IE
+3589434112,3589439487,GB
3589439488,3589455871,SE
3589455872,3589472255,RU
3589472256,3589488639,TR
@@ -99351,9 +93879,13 @@
3589537792,3589545983,FR
3589545984,3589554175,DE
3589554176,3589570559,PS
-3589570560,3589580607,GB
-3589580608,3589580608,NL
-3589580609,3589583871,GB
+3589570560,3589578751,GB
+3589578752,3589579007,NL
+3589579008,3589580543,GB
+3589580544,3589580799,NL
+3589580800,3589580927,GB
+3589580928,3589580935,NL
+3589580936,3589583871,GB
3589583872,3589584127,NL
3589584128,3589586943,GB
3589586944,3589603327,RS
@@ -99363,17 +93895,19 @@
3589680601,3589680601,FR
3589680602,3589685247,FR
3589685248,3589718015,GB
-3589718016,3589729279,BE
-3589729280,3589729535,PT
-3589729536,3589734399,BE
+3589718016,3589734399,BE
3589734400,3589742591,EG
3589742592,3589767167,NL
3589767168,3589816319,RU
3589816320,3589825791,EU
3589825792,3589826047,DE
-3589826048,3589829119,EU
+3589826048,3589827839,EU
+3589827840,3589828095,DE
+3589828096,3589829119,EU
3589829120,3589829375,GB
-3589829376,3589832703,EU
+3589829376,3589831679,EU
+3589831680,3589831935,FR
+3589831936,3589832703,EU
3589832704,3589849087,TR
3589849088,3589865471,GB
3589865472,3589881855,GR
@@ -99390,7 +93924,9 @@
3590062080,3590078463,DE
3590078464,3590094847,RU
3590094848,3590111231,DE
-3590111232,3590127615,LT
+3590111232,3590113023,LT
+3590113024,3590113279,LV
+3590113280,3590127615,LT
3590127616,3590143999,GB
3590144000,3590160383,SI
3590160384,3590176767,GB
@@ -99398,20 +93934,15 @@
3590193152,3590201343,IT
3590201344,3590209535,DE
3590209536,3590225919,ES
-3590225920,3590226431,TR
-3590226432,3590226943,US
-3590226944,3590229247,TR
-3590229248,3590230271,US
-3590230272,3590231039,TR
-3590231040,3590231295,US
-3590231296,3590234111,TR
+3590225920,3590234111,TR
3590234112,3590242303,GB
3590242304,3590250239,IE
3590250240,3590250495,GR
3590250496,3590252543,IE
3590252544,3590253055,LB
3590253056,3590253311,DE
-3590253312,3590254847,IE
+3590253312,3590253567,GB
+3590253568,3590254847,IE
3590254848,3590255103,GB
3590255104,3590258687,IE
3590258688,3590291455,IT
@@ -99420,20 +93951,16 @@
3590307840,3590308607,GB
3590308608,3590308863,US
3590308864,3590309119,ZM
-3590309120,3590311899,GB
-3590311900,3590311900,YT
-3590311901,3590311903,GB
-3590311904,3590311919,YT
-3590311920,3590316031,GB
-3590316032,3590316543,US
-3590316544,3590317567,GB
-3590317568,3590317823,US
-3590317824,3590322175,GB
+3590309120,3590311679,GB
+3590311680,3590311935,YT
+3590311936,3590314495,GB
+3590314496,3590315007,US
+3590315008,3590316151,GB
+3590316152,3590316287,US
+3590316288,3590322175,GB
3590322176,3590322431,A2
3590322432,3590324223,GB
-3590324224,3590451455,US
-3590451456,3590451711,GU
-3590451712,3623890943,US
+3590324224,3623890943,US
3623890944,3623891199,ZA
3623891200,3623891455,US
3623891456,3623891711,ZA
@@ -99494,25 +94021,25 @@
3624357888,3624358143,KN
3624358144,3624359679,US
3624359680,3624360703,CW
-3624360704,3624376279,US
+3624360704,3624374431,US
+3624374432,3624374439,GB
+3624374440,3624376279,US
3624376280,3624376295,GB
-3624376296,3624376655,US
+3624376296,3624376335,US
+3624376336,3624376343,AU
+3624376344,3624376351,US
+3624376352,3624376359,PT
+3624376360,3624376567,US
+3624376568,3624376575,NL
+3624376576,3624376655,US
3624376656,3624376679,GB
-3624376680,3624377319,US
-3624377320,3624377323,GB
-3624377324,3624377863,US
-3624377864,3624377871,GB
-3624377872,3624377879,US
+3624376680,3624377879,US
3624377880,3624377887,GB
3624377888,3624377903,US
3624377904,3624377911,GB
3624377912,3624377919,US
3624377920,3624377935,ES
-3624377936,3624377999,US
-3624378000,3624378007,ES
-3624378008,3624378039,US
-3624378040,3624378047,GB
-3624378048,3624380831,US
+3624377936,3624380831,US
3624380832,3624380839,OM
3624380840,3624380935,US
3624380936,3624380943,SA
@@ -99537,7 +94064,15 @@
3624383296,3624386559,US
3624386560,3624394751,CA
3624394752,3624435711,US
-3624435712,3624452095,CA
+3624435712,3624443903,CA
+3624443904,3624443919,US
+3624443920,3624444303,CA
+3624444304,3624444319,US
+3624444320,3624444343,CA
+3624444344,3624444351,US
+3624444352,3624444359,CA
+3624444360,3624444367,US
+3624444368,3624452095,CA
3624452096,3624480767,US
3624480768,3624484863,CA
3624484864,3624534015,US
@@ -99551,7 +94086,19 @@
3624547328,3624547647,A2
3624547648,3624547711,US
3624547712,3624547743,A2
-3624547744,3624548095,US
+3624547744,3624547839,US
+3624547840,3624547847,A2
+3624547848,3624547863,US
+3624547864,3624547871,A2
+3624547872,3624547895,US
+3624547896,3624547919,A2
+3624547920,3624547967,US
+3624547968,3624548007,A2
+3624548008,3624548031,US
+3624548032,3624548039,A2
+3624548040,3624548063,US
+3624548064,3624548087,A2
+3624548088,3624548095,US
3624548096,3624548351,A2
3624548352,3624548359,US
3624548360,3624548679,A2
@@ -99569,13 +94116,7 @@
3624549080,3624549087,A2
3624549088,3624549103,US
3624549104,3624549111,A2
-3624549112,3624549119,US
-3624549120,3624549311,A2
-3624549312,3624549327,US
-3624549328,3624549335,A2
-3624549336,3624549343,US
-3624549344,3624549375,A2
-3624549376,3624549383,US
+3624549112,3624549383,US
3624549384,3624549471,A2
3624549472,3624549479,US
3624549480,3624549583,A2
@@ -99668,7 +94209,8 @@
3624903584,3624903679,US
3624903680,3624903807,CA
3624903808,3624903935,US
-3624903936,3624904703,CA
+3624903936,3624904463,CA
+3624904464,3624904703,US
3624904704,3624904767,IN
3624904768,3624904831,US
3624904832,3624904895,CA
@@ -99788,8 +94330,12 @@
3624915488,3624915903,US
3624915904,3624915935,HK
3624915936,3624916223,US
-3624916224,3624916735,CA
-3624916736,3624917247,US
+3624916224,3624916495,CA
+3624916496,3624916503,US
+3624916504,3624916511,CA
+3624916512,3624916519,US
+3624916520,3624916607,CA
+3624916608,3624917247,US
3624917248,3624917503,AU
3624917504,3624917919,US
3624917920,3624917951,CA
@@ -99864,10 +94410,14 @@
3624927072,3624927167,US
3624927168,3624927199,TH
3624927200,3624984575,US
-3624984576,3624991223,CA
+3624984576,3624986367,CA
+3624986368,3624986399,US
+3624986400,3624991223,CA
3624991224,3624991231,US
3624991232,3624992767,CA
-3624992768,3625058303,US
+3624992768,3625042327,US
+3625042328,3625042335,IT
+3625042336,3625058303,US
3625058304,3625091071,CA
3625091072,3625116671,US
3625116672,3625116767,CA
@@ -99908,7 +94458,13 @@
3625288888,3625288895,US
3625288896,3625289959,CA
3625289960,3625289967,US
-3625289968,3625295871,CA
+3625289968,3625292575,CA
+3625292576,3625292583,US
+3625292584,3625292671,CA
+3625292672,3625292679,US
+3625292680,3625292927,CA
+3625292928,3625292935,US
+3625292936,3625295871,CA
3625295872,3625314559,US
3625314560,3625314815,CA
3625314816,3625320447,US
@@ -100069,9 +94625,17 @@
3626230992,3626230999,GB
3626231000,3626231007,US
3626231008,3626231039,GB
-3626231040,3626231807,US
-3626231808,3626231967,GB
-3626231968,3626270719,US
+3626231040,3626231767,US
+3626231768,3626231783,GB
+3626231784,3626231791,US
+3626231792,3626231967,GB
+3626231968,3626231991,US
+3626231992,3626231999,GB
+3626232000,3626232415,US
+3626232416,3626232447,GB
+3626232448,3626232607,US
+3626232608,3626232623,GB
+3626232624,3626270719,US
3626270720,3626287103,CA
3626287104,3626332159,US
3626332160,3626334207,CA
@@ -100463,7 +95027,9 @@
3626385378,3626385381,US
3626385382,3626385389,IN
3626385390,3626385393,GB
-3626385394,3626508287,US
+3626385394,3626443839,US
+3626443840,3626443847,CA
+3626443848,3626508287,US
3626508288,3626512383,CA
3626512384,3626513427,US
3626513428,3626513428,EU
@@ -100487,13 +95053,31 @@
3626526296,3626526303,US
3626526304,3626526431,CA
3626526432,3626526463,CR
-3626526464,3626526711,CA
+3626526464,3626526567,CA
+3626526568,3626526575,US
+3626526576,3626526623,CA
+3626526624,3626526631,US
+3626526632,3626526711,CA
3626526712,3626526719,US
-3626526720,3626527487,CA
+3626526720,3626526983,CA
+3626526984,3626527023,US
+3626527024,3626527135,CA
+3626527136,3626527159,US
+3626527160,3626527167,CA
+3626527168,3626527183,US
+3626527184,3626527423,CA
+3626527424,3626527463,US
+3626527464,3626527471,CA
+3626527472,3626527479,US
+3626527480,3626527487,CA
3626527488,3626527495,US
3626527496,3626527551,CA
3626527552,3626527559,US
-3626527560,3626528535,CA
+3626527560,3626527903,CA
+3626527904,3626527911,US
+3626527912,3626528239,CA
+3626528240,3626528247,US
+3626528248,3626528535,CA
3626528536,3626528543,US
3626528544,3626528631,CA
3626528632,3626528639,US
@@ -100595,28 +95179,26 @@
3626532856,3626852351,US
3626852352,3626860543,CA
3626860544,3626893311,US
-3626893312,3626905599,CA
+3626893312,3626896175,CA
+3626896176,3626896183,US
+3626896184,3626905599,CA
3626905600,3626926079,US
3626926080,3626934271,CA
3626934272,3627044863,US
3627044864,3627048959,CA
3627048960,3627065343,US
3627065344,3627069439,CA
-3627069440,3627299071,US
+3627069440,3627288575,US
+3627288576,3627288607,GB
+3627288608,3627299071,US
3627299072,3627299327,IN
3627299328,3627309695,US
3627309696,3627309823,AE
3627309824,3627310471,US
3627310472,3627310479,BM
-3627310480,3627317087,US
-3627317088,3627317119,GB
-3627317120,3627317191,US
-3627317192,3627317199,CA
-3627317200,3627328055,US
+3627310480,3627328055,US
3627328056,3627328063,SR
-3627328064,3627350127,US
-3627350128,3627350135,IL
-3627350136,3627399935,US
+3627328064,3627399935,US
3627399936,3627399967,GE
3627399968,3627399999,US
3627400000,3627400063,DE
@@ -100642,9 +95224,12 @@
3627659264,3627663359,CA
3627663360,3627679743,US
3627679744,3627712511,CA
-3627712512,3627745343,US
+3627712512,3627741759,US
+3627741760,3627741791,CA
+3627741792,3627745343,US
3627745344,3627745375,BE
-3627745376,3627745471,US
+3627745376,3627745439,US
+3627745440,3627745471,IN
3627745472,3627745503,CA
3627745504,3627746399,US
3627746400,3627746431,CA
@@ -100834,15 +95419,25 @@
3628834816,3628843007,CA
3628843008,3628848639,US
3628848640,3628848895,EU
-3628848896,3628850687,US
-3628850688,3628850943,AU
-3628850944,3628963007,US
+3628848896,3628963007,US
3628963008,3628963039,PA
3628963040,3629187071,US
3629187072,3629195263,CA
3629195264,3629199359,US
-3629199360,3629201407,CA
-3629201408,3629202431,US
+3629199360,3629201463,CA
+3629201464,3629201467,US
+3629201468,3629201487,CA
+3629201488,3629201515,US
+3629201516,3629201539,CA
+3629201540,3629201543,US
+3629201544,3629201551,CA
+3629201552,3629201559,US
+3629201560,3629201563,CA
+3629201564,3629201599,US
+3629201600,3629201615,CA
+3629201616,3629201623,US
+3629201624,3629201627,CA
+3629201628,3629202431,US
3629202432,3629203199,CA
3629203200,3629318143,US
3629318144,3629326335,CA
@@ -100977,17 +95572,23 @@
3630055520,3630055551,US
3630055552,3630055679,CA
3630055680,3630055935,US
-3630055936,3630057471,CA
+3630055936,3630056959,CA
+3630056960,3630057215,US
+3630057216,3630057471,CA
3630057472,3630057727,US
3630057728,3630057983,CA
3630057984,3630058047,US
-3630058048,3630058495,CA
+3630058048,3630058335,CA
+3630058336,3630058367,US
+3630058368,3630058495,CA
3630058496,3630058751,US
3630058752,3630059007,CA
3630059008,3630059263,US
3630059264,3630059775,CA
3630059776,3630060031,US
-3630060032,3630060543,CA
+3630060032,3630060351,CA
+3630060352,3630060383,US
+3630060384,3630060543,CA
3630060544,3630060671,US
3630060672,3630060799,CA
3630060800,3630060815,US
@@ -101023,11 +95624,15 @@
3630065328,3630065343,US
3630065344,3630065359,CA
3630065360,3630065391,US
-3630065392,3630065919,CA
+3630065392,3630065727,CA
+3630065728,3630065791,US
+3630065792,3630065919,CA
3630065920,3630066175,CN
3630066176,3630068223,CA
3630068224,3630068479,US
-3630068480,3630069247,CA
+3630068480,3630068863,CA
+3630068864,3630068991,CN
+3630068992,3630069247,CA
3630069248,3630069503,US
3630069504,3630071247,CA
3630071248,3630071263,US
@@ -101037,7 +95642,9 @@
3630071872,3630072063,US
3630072064,3630072223,CA
3630072224,3630072255,US
-3630072256,3630074375,CA
+3630072256,3630074255,CA
+3630074256,3630074287,US
+3630074288,3630074375,CA
3630074376,3630074383,US
3630074384,3630074415,CA
3630074416,3630074431,US
@@ -101079,11 +95686,7 @@
3630083328,3630083391,US
3630083392,3630083519,CA
3630083520,3630083583,US
-3630083584,3630083727,CA
-3630083728,3630083743,US
-3630083744,3630083807,CA
-3630083808,3630083823,US
-3630083824,3630083839,CA
+3630083584,3630083839,CA
3630083840,3630084159,US
3630084160,3630084351,CA
3630084352,3630084607,US
@@ -101170,20 +95773,14 @@
3630106016,3630106031,CA
3630106032,3630106063,US
3630106064,3630106079,CA
-3630106080,3630116863,US
-3630116864,3630117887,CA
-3630117888,3630120959,US
+3630106080,3630120959,US
3630120960,3630130175,CA
3630130176,3630136575,US
3630136576,3630136831,CA
3630136832,3630139391,US
3630139392,3630139647,CA
3630139648,3630141439,US
-3630141440,3630141759,CA
-3630141760,3630141791,US
-3630141792,3630141887,CA
-3630141888,3630141951,US
-3630141952,3630144031,CA
+3630141440,3630144031,CA
3630144032,3630144063,US
3630144064,3630144223,CA
3630144224,3630144255,US
@@ -101221,7 +95818,9 @@
3630155584,3630155599,US
3630155600,3630155615,CA
3630155616,3630155631,US
-3630155632,3630158591,CA
+3630155632,3630158135,CA
+3630158136,3630158151,US
+3630158152,3630158591,CA
3630158592,3630158847,US
3630158848,3630158911,CA
3630158912,3630158943,US
@@ -101261,7 +95860,13 @@
3630163880,3630163887,US
3630163888,3630163927,CA
3630163928,3630163959,US
-3630163960,3630166719,CA
+3630163960,3630164847,CA
+3630164848,3630164863,US
+3630164864,3630164911,CA
+3630164912,3630164927,US
+3630164928,3630164975,CA
+3630164976,3630164991,US
+3630164992,3630166719,CA
3630166720,3630166751,US
3630166752,3630166815,CA
3630166816,3630166831,US
@@ -101292,17 +95897,17 @@
3630391296,3630395391,CA
3630395392,3630718975,US
3630718976,3630727167,CA
-3630727168,3630745727,US
-3630745728,3630746623,UG
+3630727168,3630745855,US
+3630745856,3630746111,UG
+3630746112,3630746367,US
+3630746368,3630746623,UG
3630746624,3630746879,US
3630746880,3630747391,TZ
3630747392,3630780415,US
3630780416,3630784511,CA
3630784512,3630850047,US
3630850048,3630854143,CA
-3630854144,3630869503,US
-3630869504,3630870527,GT
-3630870528,3630956543,US
+3630854144,3630956543,US
3630956544,3631005695,CA
3631005696,3631014915,US
3631014916,3631015011,HU
@@ -101347,8 +95952,8 @@
3631059240,3631096951,US
3631096952,3631096952,US
3631096953,3631112191,US
-3631112192,3631112447,VC
-3631112448,3631116543,BB
+3631112192,3631112703,VC
+3631112704,3631116543,BB
3631116544,3631117567,GD
3631117568,3631117823,BB
3631117824,3631118079,GD
@@ -101373,11 +95978,7 @@
3631663152,3631663159,CA
3631663160,3631665151,US
3631665152,3631667199,CA
-3631667200,3631667455,US
-3631667456,3631668223,CA
-3631668224,3631668479,US
-3631668480,3631668991,CA
-3631668992,3631669247,US
+3631667200,3631669247,US
3631669248,3631677439,A2
3631677440,3631712287,US
3631712288,3631712295,AR
@@ -101465,9 +96066,7 @@
3632332800,3632357375,CA
3632357376,3632381951,US
3632381952,3632390143,CA
-3632390144,3632407583,US
-3632407584,3632407591,GB
-3632407592,3632414719,US
+3632390144,3632414719,US
3632414720,3632422911,CA
3632422912,3632448255,US
3632448256,3632448511,CA
@@ -101500,7 +96099,9 @@
3632902144,3632971775,US
3632971776,3632972031,CA
3632972032,3632972063,US
-3632972064,3632988159,CA
+3632972064,3632973087,CA
+3632973088,3632973119,US
+3632973120,3632988159,CA
3632988160,3632994047,US
3632994048,3632994303,US
3632994304,3633029119,US
@@ -101633,14 +96234,13 @@
3633551360,3633552127,US
3633552128,3633552383,A2
3633552384,3633552639,US
-3633552640,3633552895,A2
-3633552896,3633553151,US
-3633553152,3633553279,GW
-3633553280,3633553311,US
-3633553312,3633553343,A2
-3633553344,3633635206,US
-3633635207,3633635207,IN
-3633635208,3633757439,US
+3633552640,3633552911,A2
+3633552912,3633552927,GA
+3633552928,3633553119,US
+3633553120,3633553127,A2
+3633553128,3633553143,US
+3633553144,3633553151,A2
+3633553152,3633757439,US
3633757440,3633757695,IN
3633757696,3633776399,US
3633776400,3633776415,CN
@@ -101711,26 +96311,7 @@
3633818800,3633818807,US
3633818808,3633818847,CA
3633818848,3633818855,US
-3633818856,3633818911,CA
-3633818912,3633818919,US
-3633818920,3633818939,CA
-3633818940,3633818943,US
-3633818944,3633818951,CA
-3633818952,3633818959,US
-3633818960,3633818967,CA
-3633818968,3633818983,US
-3633818984,3633818991,CA
-3633818992,3633818999,US
-3633819000,3633819071,CA
-3633819072,3633819079,US
-3633819080,3633819083,CA
-3633819084,3633819103,US
-3633819104,3633819107,CA
-3633819108,3633819111,US
-3633819112,3633819123,CA
-3633819124,3633819127,US
-3633819128,3633819131,CA
-3633819132,3633819135,EG
+3633818856,3633819135,CA
3633819136,3633819199,IN
3633819200,3633819231,US
3633819232,3633819263,CA
@@ -101798,9 +96379,18 @@
3633975040,3634020351,CA
3634020352,3634053119,US
3634053120,3634061311,CL
-3634061312,3634094079,US
+3634061312,3634065311,US
+3634065312,3634065343,SV
+3634065344,3634094079,US
3634094080,3634098175,SE
-3634098176,3634138127,US
+3634098176,3634125831,US
+3634125832,3634125839,CA
+3634125840,3634125855,JP
+3634125856,3634125951,US
+3634125952,3634125967,CA
+3634125968,3634136103,US
+3634136104,3634136111,CA
+3634136112,3634138127,US
3634138128,3634138143,CA
3634138144,3634189055,US
3634189056,3634189311,GB
@@ -101831,7 +96421,11 @@
3634749440,3634880511,US
3634880512,3634888703,CA
3634888704,3634913279,US
-3634913280,3634917663,CA
+3634913280,3634914175,CA
+3634914176,3634914207,US
+3634914208,3634914223,BM
+3634914224,3634914239,US
+3634914240,3634917663,CA
3634917664,3634917679,BM
3634917680,3634921471,CA
3634921472,3634925567,US
@@ -101849,9 +96443,7 @@
3635163136,3635171071,US
3635171072,3635171327,CA
3635171328,3635185407,US
-3635185408,3635185447,US
-3635185448,3635185449,US
-3635185450,3635185663,US
+3635185408,3635185663,US
3635185664,3635186175,US
3635186176,3635186431,US
3635186432,3635187199,US
@@ -101864,7 +96456,9 @@
3635466240,3635470335,CA
3635470336,3635532287,US
3635532288,3635532303,ES
-3635532304,3635533535,US
+3635532304,3635532543,US
+3635532544,3635532799,PR
+3635532800,3635533535,US
3635533536,3635533551,IN
3635533552,3635643391,US
3635643392,3635644415,JP
@@ -101904,7 +96498,9 @@
3635879936,3635892223,US
3635892224,3635895785,CA
3635895786,3635895786,US
-3635895787,3635896319,CA
+3635895787,3635895807,CA
+3635895808,3635895839,US
+3635895840,3635896319,CA
3635896320,3635904511,US
3635904512,3635912703,CA
3635912704,3635961855,US
@@ -101977,8 +96573,8 @@
3636152784,3636152799,CA
3636152800,3636152831,US
3636152832,3636152855,CA
-3636152856,3636152895,US
-3636152896,3636153023,CA
+3636152856,3636152879,US
+3636152880,3636153023,CA
3636153024,3636153055,KN
3636153056,3636153343,CA
3636153344,3636153375,US
@@ -102049,12 +96645,12 @@
3636161872,3636161885,US
3636161886,3636161943,CA
3636161944,3636161951,US
-3636161952,3636161967,CA
-3636161968,3636162015,US
+3636161952,3636161983,CA
+3636161984,3636162015,US
3636162016,3636162559,CA
3636162560,3636163583,US
3636163584,3636164095,CA
-3636164096,3636164111,BV
+3636164096,3636164111,US
3636164112,3636164143,CA
3636164144,3636164159,US
3636164160,3636164255,CA
@@ -102076,7 +96672,11 @@
3636267264,3636267519,CA
3636267520,3636267775,US
3636267776,3636268031,CA
-3636268032,3636396031,US
+3636268032,3636287487,US
+3636287488,3636287743,CA
+3636287744,3636291839,US
+3636291840,3636292095,CA
+3636292096,3636396031,US
3636396032,3636461567,CA
3636461568,3636577647,US
3636577648,3636577663,CA
@@ -102268,7 +96868,9 @@
3636917368,3636917447,US
3636917448,3636917455,HK
3636917456,3636917503,US
-3636917504,3636919039,CA
+3636917504,3636917775,CA
+3636917776,3636918015,US
+3636918016,3636919039,CA
3636919040,3636919071,IN
3636919072,3636919103,US
3636919104,3636919135,CA
@@ -102283,9 +96885,9 @@
3636920128,3636920191,CA
3636920192,3637015327,US
3637015328,3637015343,GB
-3637015344,3637022207,US
-3637022208,3637022463,GB
-3637022464,3637024767,US
+3637015344,3637023423,US
+3637023424,3637023487,TW
+3637023488,3637024767,US
3637024768,3637024895,CA
3637024896,3637025023,US
3637025024,3637025087,CA
@@ -102335,9 +96937,13 @@
3637441608,3637469439,US
3637469440,3637469695,GE
3637469696,3637510143,US
-3637510144,3637641215,CA
+3637510144,3637520127,CA
+3637520128,3637520191,US
+3637520192,3637641215,CA
3637641216,3637665791,US
-3637665792,3637669887,CA
+3637665792,3637667439,CA
+3637667440,3637667518,US
+3637667519,3637669887,CA
3637669888,3637706751,US
3637706752,3637739519,CA
3637739520,3637740767,US
@@ -102390,9 +96996,7 @@
3638222208,3638222463,US
3638222464,3638222591,AU
3638222592,3638222623,CA
-3638222624,3638222911,US
-3638222912,3638222919,IT
-3638222920,3638223559,US
+3638222624,3638223559,US
3638223560,3638223567,PA
3638223568,3638224255,US
3638224256,3638224271,IT
@@ -102406,9 +97010,7 @@
3638228024,3638228031,GB
3638228032,3638229279,US
3638229280,3638229311,IT
-3638229312,3638230671,US
-3638230672,3638230679,AU
-3638230680,3638230815,US
+3638229312,3638230815,US
3638230816,3638230847,ES
3638230848,3638230927,US
3638230928,3638230935,CA
@@ -102430,7 +97032,9 @@
3638249752,3638249791,GB
3638249792,3638249983,US
3638249984,3638250031,GB
-3638250032,3638250535,US
+3638250032,3638250063,US
+3638250064,3638250079,GB
+3638250080,3638250535,US
3638250536,3638250543,GB
3638250544,3638250559,US
3638250560,3638250623,GB
@@ -102475,23 +97079,22 @@
3638400768,3638401087,US
3638401088,3638401151,CA
3638401152,3638401279,CZ
-3638401280,3638401447,US
-3638401448,3638401455,BE
-3638401456,3638509567,US
-3638509568,3638534143,CA
+3638401280,3638509567,US
+3638509568,3638528751,CA
+3638528752,3638528759,US
+3638528760,3638530047,CA
+3638530048,3638530063,US
+3638530064,3638530239,CA
+3638530240,3638530255,US
+3638530256,3638534143,CA
3638534144,3638697983,US
3638697984,3638706175,CA
3638706176,3638706687,A2
3638706688,3638706943,NG
3638706944,3638710271,A2
-3638710272,3638738943,US
-3638740992,3638743039,US
-3638743040,3638743295,SL
-3638743296,3638874111,US
+3638710272,3638874111,US
3638874112,3638878207,CA
-3638878208,3638880511,US
-3638880512,3638880767,CA
-3638880768,3638960383,US
+3638878208,3638960383,US
3638960384,3638960639,BR
3638960640,3638984703,US
3638984704,3638985983,GT
@@ -102627,9 +97230,7 @@
3639558144,3639566335,CA
3639566336,3639593983,US
3639593984,3639595007,GB
-3639595008,3639596031,US
-3639596032,3639596287,GB
-3639596288,3639607295,US
+3639595008,3639607295,US
3639607296,3639611391,CA
3639611392,3639656447,US
3639656448,3639660543,CA
@@ -102639,11 +97240,13 @@
3639672832,3639681023,CL
3639681024,3639684991,US
3639684992,3639685119,SA
-3639685120,3639692031,US
-3639692032,3639692288,GB
+3639685120,3639692032,US
+3639692033,3639692288,GB
3639692289,3639730175,US
3639730176,3639734271,CA
-3639734272,3639886591,US
+3639734272,3639886215,US
+3639886216,3639886223,SA
+3639886224,3639886591,US
3639886592,3639886599,SG
3639886600,3639887639,US
3639887640,3639887647,AU
@@ -102673,7 +97276,9 @@
3639889408,3639889415,AU
3639889416,3639889423,US
3639889424,3639889439,SA
-3639889440,3639890447,US
+3639889440,3639890359,US
+3639890360,3639890367,SA
+3639890368,3639890447,US
3639890448,3639890463,AU
3639890464,3639890479,US
3639890480,3639890487,BR
@@ -102704,9 +97309,7 @@
3639893520,3639902207,US
3639902208,3639918591,PE
3639918592,3639934975,AR
-3639934976,3639948031,US
-3639948032,3639948287,SG
-3639948288,3640001751,US
+3639934976,3640001751,US
3640001752,3640001759,IL
3640001760,3640003239,US
3640003240,3640003247,TR
@@ -102794,7 +97397,9 @@
3640345456,3640345503,MX
3640345504,3640345743,US
3640345744,3640345854,MX
-3640345855,3640346879,US
+3640345855,3640346815,US
+3640346816,3640346847,MX
+3640346848,3640346879,US
3640346880,3640347134,MX
3640347135,3640347391,US
3640347392,3640347455,MX
@@ -102808,9 +97413,11 @@
3640347568,3640347599,MX
3640347600,3640347615,US
3640347616,3640347631,MX
-3640347632,3640351231,US
-3640351232,3640351743,MX
-3640351744,3640360959,US
+3640347632,3640347647,US
+3640347648,3640347711,MX
+3640347712,3640347839,US
+3640347840,3640347902,MX
+3640347903,3640360959,US
3640360960,3640369151,CA
3640369152,3640410111,US
3640410112,3640418303,CA
@@ -102826,7 +97433,9 @@
3640450048,3640451071,US
3640451072,3640459263,A2
3640459264,3640557567,US
-3640557568,3640565631,CA
+3640557568,3640564455,CA
+3640564456,3640564463,US
+3640564464,3640565631,CA
3640565632,3640565647,US
3640565648,3640578391,CA
3640578392,3640578399,GB
@@ -102837,20 +97446,28 @@
3640655872,3641020121,DE
3641020122,3641020122,GB
3641020123,3641029631,DE
-3641029632,3641029887,US
-3641029888,3641061119,DE
+3641029632,3641029695,US
+3641029696,3641029711,DE
+3641029712,3641029759,US
+3641029760,3641061119,DE
3641061120,3641061199,US
3641061200,3641061207,DE
-3641061208,3641061375,US
-3641061376,3641078167,DE
-3641078168,3641078175,US
-3641078176,3641078271,DE
-3641078272,3641078511,US
+3641061208,3641061279,US
+3641061280,3641061295,DE
+3641061296,3641061375,US
+3641061376,3641078271,DE
+3641078272,3641078327,US
+3641078328,3641078335,DE
+3641078336,3641078351,US
+3641078352,3641078359,DE
+3641078360,3641078367,US
+3641078368,3641078375,DE
+3641078376,3641078495,US
+3641078496,3641078503,DE
+3641078504,3641078511,US
3641078512,3641078519,DE
3641078520,3641078527,US
-3641078528,3641115271,DE
-3641115272,3641115279,US
-3641115280,3641150719,DE
+3641078528,3641150719,DE
3641150720,3641150759,CN
3641150760,3641150767,DE
3641150768,3641151232,CN
@@ -102882,18 +97499,12 @@
3641311232,3641315327,DE
3641315328,3641319423,DK
3641319424,3641323519,RU
-3641323520,3641331711,DE
+3641323520,3641324543,DE
+3641324544,3641324799,AT
+3641324800,3641331711,DE
3641331712,3641335807,ES
3641335808,3641343999,SE
-3641344000,3641352191,GB
-3641352192,3641352447,US
-3641352448,3641355263,GB
-3641355264,3641355277,BR
-3641355278,3641355278,AO
-3641355279,3641355519,BR
-3641355520,3641359615,GB
-3641359616,3641359871,US
-3641359872,3641360383,GB
+3641344000,3641360383,GB
3641360384,3641368575,RO
3641368576,3641372671,GB
3641372672,3641376767,BG
@@ -102960,8 +97571,8 @@
3641659392,3641663487,FR
3641663488,3641667583,MT
3641667584,3641669631,GB
-3641669632,3641670655,ZW
-3641670656,3641671679,GB
+3641669632,3641669887,ZW
+3641669888,3641671679,GB
3641671680,3641679871,RU
3641679872,3641680127,DK
3641680128,3641681151,GB
@@ -102991,8 +97602,8 @@
3641769984,3641774079,NO
3641774080,3641778175,DE
3641778176,3641782271,PL
-3641782272,3641784319,BG
-3641784320,3641784575,GB
+3641782272,3641784063,BG
+3641784064,3641784575,GB
3641784576,3641786367,BG
3641786368,3641790463,SE
3641790464,3641794559,LT
@@ -103074,25 +97685,15 @@
3642142720,3642146815,MT
3642146816,3642150911,DE
3642150912,3642163199,IT
-3642163200,3642166783,NL
-3642166784,3642167039,GB
-3642167040,3642167295,CA
+3642163200,3642167295,NL
3642167296,3642171391,RU
3642171392,3642175487,JO
3642175488,3642179583,DE
3642179584,3642187775,RU
3642187776,3642191871,DK
3642191872,3642195967,BY
-3642195968,3642199039,RU
-3642199040,3642199295,BY
-3642199296,3642204159,RU
-3642204160,3642206719,GB
-3642206720,3642207231,IM
-3642207232,3642207743,GB
-3642207744,3642207767,IM
-3642207768,3642207775,GB
-3642207776,3642207999,IM
-3642208000,3642208255,GB
+3642195968,3642204159,RU
+3642204160,3642208255,GB
3642208256,3642212351,RU
3642212352,3642216447,BA
3642216448,3642220543,HU
@@ -103120,7 +97721,8 @@
3642314752,3642318847,RU
3642318848,3642322943,FI
3642322944,3642327039,AT
-3642327040,3642331135,DE
+3642327040,3642327295,PL
+3642327296,3642331135,DE
3642331136,3642335231,RU
3642335232,3642339327,DE
3642339328,3642343423,FR
@@ -103146,9 +97748,7 @@
3642425088,3642425343,US
3642425344,3642429439,DE
3642429440,3642433535,GB
-3642433536,3642439679,CY
-3642439680,3642439935,LB
-3642439936,3642441727,CY
+3642433536,3642441727,CY
3642441728,3642449919,IT
3642449920,3642454015,CH
3642454016,3642458111,IT
@@ -103180,7 +97780,9 @@
3642544128,3642552319,RU
3642552320,3642556415,DE
3642556416,3642560511,CZ
-3642560512,3642564607,KG
+3642560512,3642561535,KG
+3642561536,3642561791,US
+3642561792,3642564607,KG
3642564608,3642568703,DE
3642568704,3642572799,RU
3642572800,3642576895,IT
@@ -103216,11 +97818,7 @@
3642691584,3642695679,DE
3642695680,3642699775,SK
3642699776,3642703871,CZ
-3642703872,3642706175,LU
-3642706176,3642706431,FR
-3642706432,3642706559,LU
-3642706560,3642706575,GB
-3642706576,3642707967,LU
+3642703872,3642707967,LU
3642707968,3642712063,DE
3642712064,3642716159,NO
3642716160,3642720255,IT
@@ -103303,11 +97901,7 @@
3645132800,3645136895,HR
3645136896,3645145087,NO
3645145088,3645149183,GB
-3645149184,3645161983,DE
-3645161984,3645162495,US
-3645162496,3645163007,DE
-3645163008,3645163519,US
-3645163520,3645165567,DE
+3645149184,3645165567,DE
3645165568,3645169663,TR
3645169664,3645173759,CH
3645173760,3645177855,GB
@@ -103347,9 +97941,9 @@
3645321216,3645325311,BA
3645325312,3645329407,IT
3645329408,3645333503,CH
-3645333504,3645336063,EU
-3645336064,3645336319,DE
-3645336320,3645337599,EU
+3645333504,3645335295,EU
+3645335296,3645335551,DE
+3645335552,3645337599,EU
3645337600,3645341695,FR
3645341696,3645345791,RU
3645345792,3645349887,FI
@@ -103401,7 +97995,9 @@
3645546496,3645550591,RU
3645550592,3645558783,DE
3645558784,3645562879,DK
-3645562880,3645566975,GB
+3645562880,3645565951,GB
+3645565952,3645566207,ZW
+3645566208,3645566975,GB
3645566976,3645571071,RU
3645571072,3645575167,IE
3645575168,3645579263,CH
@@ -103472,31 +98068,32 @@
3645888768,3645890559,DE
3645890560,3645894655,RU
3645894656,3645898751,NL
-3645898752,3646515967,DE
-3646515968,3646516223,FR
-3646516224,3646517247,US
-3646517248,3646519295,DE
-3646519296,3646519807,US
-3646519808,3646947327,DE
+3645898752,3646947327,DE
3646947328,3647209471,PL
3647209472,3647602687,NL
3647602688,3647733759,RU
-3647733760,3647753351,FR
-3647753352,3647753431,GP
-3647753432,3647795711,FR
-3647795712,3647795967,RE
-3647795968,3647864831,FR
-3647864832,3647875713,DE
-3647875714,3647875714,CH
-3647875715,3647890687,DE
+3647733760,3647864831,FR
+3647864832,3647875583,DE
+3647875584,3647875839,CH
+3647875840,3647890687,DE
3647890688,3647890943,EU
3647890944,3647947263,DE
3647947264,3647947519,US
3647947520,3647949567,DE
3647949568,3647949823,EU
-3647949824,3647966463,DE
-3647966464,3647966719,GB
-3647966720,3647967743,DE
+3647949824,3647964415,DE
+3647964416,3647964487,AU
+3647964488,3647964495,ES
+3647964496,3647964543,AU
+3647964544,3647964551,ES
+3647964552,3647964671,AU
+3647964672,3647965183,DE
+3647965184,3647965439,ES
+3647965440,3647965951,DE
+3647965952,3647966207,CH
+3647966208,3647966463,DE
+3647966464,3647967231,GB
+3647967232,3647967743,DE
3647967744,3647967999,BE
3647968000,3647968255,DE
3647968256,3647969023,FR
@@ -103504,17 +98101,19 @@
3647970048,3647970303,BE
3647970304,3647971583,DE
3647971584,3647972351,GB
-3647972352,3647973631,DE
-3647973632,3647973887,IT
-3647973888,3647974399,DE
-3647974400,3647975167,ES
-3647975168,3647975391,DE
-3647975392,3647976191,ES
-3647976192,3647977471,DE
-3647977472,3647977727,GB
-3647977728,3647977783,DE
-3647977784,3647977791,GB
-3647977792,3647978495,DE
+3647972352,3647973375,DE
+3647973376,3647973631,IT
+3647973632,3647974399,DE
+3647974400,3647974911,ES
+3647974912,3647975167,DE
+3647975168,3647975679,ES
+3647975680,3647975935,DE
+3647975936,3647976191,ES
+3647976192,3647976447,DE
+3647976448,3647976703,BE
+3647976704,3647977471,DE
+3647977472,3647978239,GB
+3647978240,3647978495,DE
3647978496,3647979007,NL
3647979008,3647979775,DE
3647979776,3647980543,FR
@@ -103522,14 +98121,14 @@
3647981056,3647982079,DE
3647982080,3647982591,BE
3647982592,3647982847,DE
-3647982848,3647983615,IT
-3647983616,3647986431,DE
-3647986432,3647986687,ES
-3647986688,3647987591,DE
-3647987592,3647987599,ES
-3647987600,3647987679,DE
-3647987680,3647987695,ES
-3647987696,3647995903,DE
+3647982848,3647983103,IT
+3647983104,3647983359,DE
+3647983360,3647983615,IT
+3647983616,3647987455,DE
+3647987456,3647987711,ES
+3647987712,3647989247,DE
+3647989248,3647989503,BE
+3647989504,3647995903,DE
3647995904,3648004095,RU
3648004096,3648008191,GB
3648008192,3648016383,FR
@@ -103537,10 +98136,12 @@
3648020480,3648024575,IT
3648024576,3648028671,NL
3648028672,3648032767,HU
-3648032768,3648033279,IE
-3648033280,3648033535,EU
+3648032768,3648033023,IE
+3648033024,3648033535,EU
3648033536,3648033791,IE
-3648033792,3648034887,EU
+3648033792,3648034047,EU
+3648034048,3648034303,GB
+3648034304,3648034887,EU
3648034888,3648034895,IE
3648034896,3648036863,EU
3648036864,3648040959,CZ
@@ -103552,8 +98153,8 @@
3648061440,3648069631,AM
3648069632,3648073727,DE
3648073728,3648077823,HU
-3648077824,3648078335,BE
-3648078336,3648078591,BF
+3648077824,3648078463,BE
+3648078464,3648078591,BF
3648078592,3648079103,BE
3648079104,3648079359,CG
3648079360,3648079615,CD
@@ -103636,9 +98237,7 @@
3648397312,3648405503,NO
3648405504,3648413695,RU
3648413696,3648417791,SK
-3648417792,3648418047,GB
-3648418048,3648418303,ES
-3648418304,3648425983,GB
+3648417792,3648425983,GB
3648425984,3648430079,IT
3648430080,3648434175,NL
3648434176,3648438271,RU
@@ -103669,9 +98268,7 @@
3649241088,3649306623,TR
3649306624,3649372159,IL
3649372160,3649437695,IT
-3649437696,3649512447,GB
-3649512448,3649512703,IN
-3649512704,3649568767,GB
+3649437696,3649568767,GB
3649568768,3649634303,BE
3649634304,3649765375,GB
3649765376,3649830911,EG
@@ -103686,9 +98283,7 @@
3649859072,3649859583,US
3649859584,3649863679,SE
3649863680,3649896447,FI
-3649896448,3649950719,IT
-3649950720,3649950975,US
-3649950976,3649961983,IT
+3649896448,3649961983,IT
3649961984,3650093055,SE
3650093056,3650097151,JO
3650097152,3650101247,SK
@@ -103764,13 +98359,15 @@
3650351992,3650351999,HU
3650352000,3650352007,GB
3650352008,3650352015,IE
-3650352016,3650352264,GB
-3650352265,3650352265,DE
-3650352266,3650352279,GB
+3650352016,3650352127,GB
+3650352128,3650352279,DE
3650352280,3650352287,IT
-3650352288,3650352319,GB
+3650352288,3650352295,DE
+3650352296,3650352303,SE
+3650352304,3650352319,DE
3650352320,3650352327,PL
-3650352328,3650355199,GB
+3650352328,3650352383,DE
+3650352384,3650355199,GB
3650355200,3650359295,CH
3650359296,3650363391,NL
3650363392,3650367487,GB
@@ -103796,9 +98393,7 @@
3650437120,3650441215,NL
3650441216,3650445311,IT
3650445312,3650449407,GB
-3650449408,3650450175,NO
-3650450176,3650450431,PL
-3650450432,3650453503,NO
+3650449408,3650453503,NO
3650453504,3650457599,NL
3650457600,3650461695,ES
3650461696,3650465791,AT
@@ -103845,40 +98440,38 @@
3650682880,3650748415,PL
3650748416,3650879487,GB
3650879488,3650912255,RO
-3650912256,3650912511,GB
-3650912512,3650912767,FR
+3650912256,3650912639,GB
+3650912640,3650912767,FR
3650912768,3650915327,GB
3650915328,3650915337,FR
3650915338,3650915338,US
3650915339,3650915583,FR
3650915584,3650922495,GB
3650922496,3650922751,US
-3650922752,3650926079,GB
-3650926080,3650926335,BE
-3650926336,3650926591,GB
-3650926592,3650929151,ES
-3650929152,3650939599,GB
+3650922752,3650926591,GB
+3650926592,3650929663,ES
+3650929664,3650930431,GB
+3650930432,3650930687,DE
+3650930688,3650939599,GB
3650939600,3650939607,FR
-3650939608,3650945023,GB
+3650939608,3650944511,GB
+3650944512,3650944767,FR
+3650944768,3650945023,GB
3650945024,3651010559,DK
3651010560,3651076095,GB
3651076096,3651108863,DE
3651108864,3651141631,EE
3651141632,3651207167,DE
-3651207168,3651210239,EU
-3651210240,3651210751,GB
+3651207168,3651210495,EU
+3651210496,3651210751,GB
3651210752,3651272703,EU
3651272704,3651338239,CH
-3651338240,3651342847,GB
-3651342848,3651343103,US
-3651343104,3651350783,GB
+3651338240,3651350783,GB
3651350784,3651351039,EU
3651351040,3651403775,GB
3651403776,3651534847,AE
3651534848,3651600383,NL
-3651600384,3651659951,FR
-3651659952,3651659959,BE
-3651659960,3651665919,FR
+3651600384,3651665919,FR
3651665920,3651670015,ES
3651670016,3651674111,GB
3651674112,3651682303,CH
@@ -103953,9 +98546,7 @@
3651985408,3651997695,PL
3651997696,3652001791,RU
3652001792,3652005887,HU
-3652005888,3652006143,GB
-3652006144,3652006399,US
-3652006400,3652009983,GB
+3652005888,3652009983,GB
3652009984,3652014079,RU
3652014080,3652018175,SA
3652018176,3652022271,IE
@@ -103973,9 +98564,8 @@
3652083712,3652087807,RU
3652087808,3652094463,IT
3652094464,3652094975,US
-3652094976,3652095487,IT
-3652095488,3652095743,US
-3652095744,3652095999,IT
+3652094976,3652095231,IT
+3652095232,3652095999,US
3652096000,3652100095,BG
3652100096,3652108287,RU
3652108288,3652116479,FR
@@ -103991,16 +98581,20 @@
3652149248,3652153343,DE
3652153344,3652157439,SE
3652157440,3652165631,RU
-3652165632,3652166655,FR
-3652166656,3652166783,GP
-3652166784,3652167167,FR
-3652167168,3652167423,GP
-3652167424,3652168447,FR
-3652168448,3652168959,MQ
+3652165632,3652165887,MQ
+3652165888,3652168703,FR
+3652168704,3652168959,MQ
3652168960,3652169215,FR
-3652169216,3652169727,GF
-3652169728,3652171775,MQ
-3652171776,3652173823,RE
+3652169216,3652169471,GF
+3652169472,3652169983,FR
+3652169984,3652170239,MQ
+3652170240,3652170495,FR
+3652170496,3652170751,MQ
+3652170752,3652171263,FR
+3652171264,3652171775,MQ
+3652171776,3652173055,FR
+3652173056,3652173311,RE
+3652173312,3652173823,FR
3652173824,3652177919,AT
3652177920,3652182015,CY
3652182016,3652190207,DE
@@ -104016,11 +98610,19 @@
3653394432,3653402623,NL
3653402624,3653407487,GB
3653407488,3653407743,US
-3653407744,3653408767,GB
+3653407744,3653407999,GB
+3653408000,3653408119,US
+3653408120,3653408127,GB
+3653408128,3653408255,US
+3653408256,3653408767,GB
3653408768,3653409023,CD
3653409024,3653410060,GB
3653410061,3653410061,YT
-3653410062,3653410559,GB
+3653410062,3653410095,GB
+3653410096,3653410111,US
+3653410112,3653410199,GB
+3653410200,3653410247,US
+3653410248,3653410559,GB
3653410560,3653410815,IL
3653410816,3653414911,CZ
3653414912,3653419007,IT
@@ -104035,9 +98637,7 @@
3653451776,3653464063,RU
3653464064,3653468159,NL
3653468160,3653472255,GR
-3653472256,3653472511,NL
-3653472512,3653472767,US
-3653472768,3653473023,NL
+3653472256,3653473023,NL
3653473024,3653473279,US
3653473280,3653476351,NL
3653476352,3653480447,CZ
@@ -104088,9 +98688,7 @@
3653685248,3653689343,DK
3653689344,3653693439,LV
3653693440,3653697535,DE
-3653697536,3653704383,IT
-3653704384,3653704447,GB
-3653704448,3653705727,IT
+3653697536,3653705727,IT
3653705728,3653713919,NO
3653713920,3653718015,DE
3653718016,3653722111,AT
@@ -104178,9 +98776,7 @@
3664009216,3664052223,CN
3664052224,3664084991,NZ
3664084992,3664117759,KR
-3664117760,3664200447,HK
-3664200448,3664200703,GB
-3664200704,3664248831,HK
+3664117760,3664248831,HK
3664248832,3664642047,CN
3664642048,3664707583,JP
3664707584,3664773119,MY
@@ -104217,9 +98813,7 @@
3673948160,3674210303,HK
3674210304,3678404607,JP
3678404608,3678535679,IN
-3678535680,3678593279,JP
-3678593280,3678593535,US
-3678593536,3678666751,JP
+3678535680,3678666751,JP
3678666752,3678928895,TW
3678928896,3678994431,CN
3678994432,3679027199,HK
@@ -104243,17 +98837,9 @@
3680239616,3680403455,MY
3680403456,3680436223,JP
3680436224,3680501759,MY
-3680501760,3680879615,JP
-3680879616,3680879871,US
-3680879872,3681560063,JP
-3681560064,3681560319,US
-3681560320,3681569023,JP
-3681569024,3681569279,US
-3681569280,3682554623,JP
+3680501760,3682554623,JP
3682554624,3682554879,AP
-3682554880,3682587903,JP
-3682587904,3682588159,US
-3682588160,3682598911,JP
+3682554880,3682598911,JP
3682598912,3684696063,CN
3684696064,3688366079,JP
3688366080,3689938943,CN
@@ -104262,24 +98848,18 @@
3690463232,3690987519,KR
3690987520,3695181823,JP
3695181824,3697278975,KR
-3697278976,3697311487,JP
-3697311488,3697311743,US
-3697311744,3697606655,JP
+3697278976,3697606655,JP
3697606656,3697655807,AU
3697655808,3697672191,CN
3697672192,3697737727,JP
3697737728,3697803263,KR
-3697803264,3698251007,JP
-3698251008,3698251263,US
-3698251264,3698327551,JP
+3697803264,3698327551,JP
3698327552,3698589695,CN
3698589696,3699376127,KR
3699376128,3700424703,TW
3700424704,3700752383,JP
3700752384,3700817919,KR
-3700817920,3700828159,JP
-3700828160,3700829183,US
-3700829184,3700977663,JP
+3700817920,3700977663,JP
3700977664,3700979711,AU
3700979712,3700981759,JP
3700981760,3701014527,CN
@@ -104380,9 +98960,7 @@
3732733952,3732799487,CN
3732799488,3732832255,PH
3732832256,3732865023,CN
-3732865024,3732870911,PH
-3732870912,3732871167,US
-3732871168,3732930559,PH
+3732865024,3732930559,PH
3732930560,3733979135,CN
3733979136,3734503423,JP
3734503424,3734765567,NZ
@@ -104394,9 +98972,7 @@
3735404544,3735420927,ID
3735420928,3735551999,HK
3735552000,3739222015,CN
-3739222016,3739555071,JP
-3739555072,3739555327,US
-3739555328,3739570175,JP
+3739222016,3739570175,JP
3739570176,3739572223,ID
3739572224,3739574271,AU
3739574272,3739680767,JP
@@ -104412,7 +98988,9 @@
3742629888,3742760959,CN
3742760960,3742892031,TW
3742892032,3742957567,TH
-3742957568,3742973951,PH
+3742957568,3742959871,PH
+3742959872,3742960127,US
+3742960128,3742973951,PH
3742973952,3742982143,SG
3742982144,3742986239,ID
3742986240,3742988287,AU
@@ -104443,9 +99021,7 @@
3743125504,3743129599,ID
3743129600,3743129855,MY
3743129856,3743130623,HK
-3743130624,3743132159,SG
-3743132160,3743132415,GB
-3743132416,3743133695,SG
+3743130624,3743133695,SG
3743133696,3743134719,AU
3743134720,3743135743,JP
3743135744,3743136767,CN
@@ -104468,9 +99044,7 @@
3749183488,3749838847,CN
3749838848,3749839871,SG
3749839872,3749840895,IN
-3749841920,3749842943,AU
-3749843968,3749846015,AU
-3749846016,3749847039,IN
+3749841920,3749847039,AU
3749847040,3749855231,HK
3749855232,3749969919,KR
3749969920,3750232063,JP
diff --git a/src/ext/README b/src/ext/README
index 8c850bef66..58ba7f699d 100644
--- a/src/ext/README
+++ b/src/ext/README
@@ -34,6 +34,11 @@ tor_queue.h
A copy of sys/queue.h from OpenBSD. We keep our own copy rather
than using sys/queue.h, since some platforms don't have a
sys/queue.h, and the ones that do have diverged in incompatible
- ways. (CIRCLEQ or no CIRCLEQ? SIMPLQ or STAILQ?)
+ ways. (CIRCLEQ or no CIRCLEQ? SIMPLQ or STAILQ?) We also rename
+ the identifiers with a TOR_ prefix to avoid conflicts with
+ the system headers.
-
+curve25519_donna/*.c
+
+ A copy of Adam Langley's curve25519-donna mostly-portable
+ implementations of curve25519.
diff --git a/src/ext/curve25519_donna/README b/src/ext/curve25519_donna/README
new file mode 100644
index 0000000000..9f77bd7d95
--- /dev/null
+++ b/src/ext/curve25519_donna/README
@@ -0,0 +1,44 @@
+See http://code.google.com/p/curve25519-donna/ for details.
+
+BUILDING:
+
+If you run `make`, two .a archives will be built, similar to djb's curve25519
+code. Alternatively, read on:
+
+The C implementation is contained within curve25519-donna.c. It has no external
+dependancies and is BSD licenced. You can copy/include/link it directly in with
+your program. Recommended C flags: -O2
+
+The x86-64 bit implementation is contained within curve25519-donna-x86-64.c and
+curve25519-donna-x86-64.s. Build like this:
+
+% cpp curve25519-donna-x86-64.s > curve25519-donna-x86-64.s.pp
+% as -o curve25519-donna-x86-64.s.o curve25519-donna-x86-64.s.pp
+% gcc -O2 -c curve25519-donna-x86-64.c
+
+Then the two .o files can be linked in
+
+USAGE:
+
+The usage is exactly the same as djb's code (as described at
+http://cr.yp.to/ecdh.html) expect that the function is called curve25519_donna.
+
+In short,
+
+To generate a private key, generate 32 random bytes and:
+
+ mysecret[0] &= 248;
+ mysecret[31] &= 127;
+ mysecret[31] |= 64;
+
+To generate the public key, just do
+
+ static const uint8_t basepoint[32] = {9};
+ curve25519_donna(mypublic, mysecret, basepoint);
+
+To generate an agreed key do:
+ uint8_t shared_key[32];
+ curve25519_donna(shared_key, mysecret, theirpublic);
+
+And hash the shared_key with a cryptographic hash function before using.
+
diff --git a/src/ext/curve25519_donna/curve25519-donna-c64.c b/src/ext/curve25519_donna/curve25519-donna-c64.c
new file mode 100644
index 0000000000..9ebd8a12d8
--- /dev/null
+++ b/src/ext/curve25519_donna/curve25519-donna-c64.c
@@ -0,0 +1,449 @@
+/* Copyright 2008, Google Inc.
+ * All rights reserved.
+ *
+ * Code released into the public domain.
+ *
+ * curve25519-donna: Curve25519 elliptic curve, public key function
+ *
+ * http://code.google.com/p/curve25519-donna/
+ *
+ * Adam Langley <agl@imperialviolet.org>
+ *
+ * Derived from public domain C code by Daniel J. Bernstein <djb@cr.yp.to>
+ *
+ * More information about curve25519 can be found here
+ * http://cr.yp.to/ecdh.html
+ *
+ * djb's sample implementation of curve25519 is written in a special assembly
+ * language called qhasm and uses the floating point registers.
+ *
+ * This is, almost, a clean room reimplementation from the curve25519 paper. It
+ * uses many of the tricks described therein. Only the crecip function is taken
+ * from the sample implementation.
+ */
+
+#include <string.h>
+#include <stdint.h>
+
+typedef uint8_t u8;
+typedef uint64_t limb;
+typedef limb felem[5];
+// This is a special gcc mode for 128-bit integers. It's implemented on 64-bit
+// platforms only as far as I know.
+typedef unsigned uint128_t __attribute__((mode(TI)));
+
+#undef force_inline
+#define force_inline __attribute__((always_inline))
+
+/* Sum two numbers: output += in */
+static inline void force_inline
+fsum(limb *output, const limb *in) {
+ output[0] += in[0];
+ output[1] += in[1];
+ output[2] += in[2];
+ output[3] += in[3];
+ output[4] += in[4];
+}
+
+/* Find the difference of two numbers: output = in - output
+ * (note the order of the arguments!)
+ *
+ * Assumes that out[i] < 2**52
+ * On return, out[i] < 2**55
+ */
+static inline void force_inline
+fdifference_backwards(felem out, const felem in) {
+ /* 152 is 19 << 3 */
+ static const limb two54m152 = (((limb)1) << 54) - 152;
+ static const limb two54m8 = (((limb)1) << 54) - 8;
+
+ out[0] = in[0] + two54m152 - out[0];
+ out[1] = in[1] + two54m8 - out[1];
+ out[2] = in[2] + two54m8 - out[2];
+ out[3] = in[3] + two54m8 - out[3];
+ out[4] = in[4] + two54m8 - out[4];
+}
+
+/* Multiply a number by a scalar: output = in * scalar */
+static inline void force_inline
+fscalar_product(felem output, const felem in, const limb scalar) {
+ uint128_t a;
+
+ a = ((uint128_t) in[0]) * scalar;
+ output[0] = ((limb)a) & 0x7ffffffffffff;
+
+ a = ((uint128_t) in[1]) * scalar + ((limb) (a >> 51));
+ output[1] = ((limb)a) & 0x7ffffffffffff;
+
+ a = ((uint128_t) in[2]) * scalar + ((limb) (a >> 51));
+ output[2] = ((limb)a) & 0x7ffffffffffff;
+
+ a = ((uint128_t) in[3]) * scalar + ((limb) (a >> 51));
+ output[3] = ((limb)a) & 0x7ffffffffffff;
+
+ a = ((uint128_t) in[4]) * scalar + ((limb) (a >> 51));
+ output[4] = ((limb)a) & 0x7ffffffffffff;
+
+ output[0] += (a >> 51) * 19;
+}
+
+/* Multiply two numbers: output = in2 * in
+ *
+ * output must be distinct to both inputs. The inputs are reduced coefficient
+ * form, the output is not.
+ *
+ * Assumes that in[i] < 2**55 and likewise for in2.
+ * On return, output[i] < 2**52
+ */
+static inline void force_inline
+fmul(felem output, const felem in2, const felem in) {
+ uint128_t t[5];
+ limb r0,r1,r2,r3,r4,s0,s1,s2,s3,s4,c;
+
+ r0 = in[0];
+ r1 = in[1];
+ r2 = in[2];
+ r3 = in[3];
+ r4 = in[4];
+
+ s0 = in2[0];
+ s1 = in2[1];
+ s2 = in2[2];
+ s3 = in2[3];
+ s4 = in2[4];
+
+ t[0] = ((uint128_t) r0) * s0;
+ t[1] = ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
+ t[2] = ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
+ t[3] = ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
+ t[4] = ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
+
+ r4 *= 19;
+ r1 *= 19;
+ r2 *= 19;
+ r3 *= 19;
+
+ t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
+ t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
+ t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
+ t[3] += ((uint128_t) r4) * s4;
+
+ r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
+ t[1] += c; r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
+ t[2] += c; r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
+ t[3] += c; r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
+ t[4] += c; r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
+ r0 += c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
+ r1 += c; c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
+ r2 += c;
+
+ output[0] = r0;
+ output[1] = r1;
+ output[2] = r2;
+ output[3] = r3;
+ output[4] = r4;
+}
+
+static inline void force_inline
+fsquare_times(felem output, const felem in, limb count) {
+ uint128_t t[5];
+ limb r0,r1,r2,r3,r4,c;
+ limb d0,d1,d2,d4,d419;
+
+ r0 = in[0];
+ r1 = in[1];
+ r2 = in[2];
+ r3 = in[3];
+ r4 = in[4];
+
+ do {
+ d0 = r0 * 2;
+ d1 = r1 * 2;
+ d2 = r2 * 2 * 19;
+ d419 = r4 * 19;
+ d4 = d419 * 2;
+
+ t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3 ));
+ t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
+ t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3 ));
+ t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419 ));
+ t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2 ));
+
+ r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
+ t[1] += c; r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
+ t[2] += c; r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
+ t[3] += c; r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
+ t[4] += c; r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
+ r0 += c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
+ r1 += c; c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
+ r2 += c;
+ } while(--count);
+
+ output[0] = r0;
+ output[1] = r1;
+ output[2] = r2;
+ output[3] = r3;
+ output[4] = r4;
+}
+
+/* Load a little-endian 64-bit number */
+static limb
+load_limb(const u8 *in) {
+ return
+ ((limb)in[0]) |
+ (((limb)in[1]) << 8) |
+ (((limb)in[2]) << 16) |
+ (((limb)in[3]) << 24) |
+ (((limb)in[4]) << 32) |
+ (((limb)in[5]) << 40) |
+ (((limb)in[6]) << 48) |
+ (((limb)in[7]) << 56);
+}
+
+static void
+store_limb(u8 *out, limb in) {
+ out[0] = in & 0xff;
+ out[1] = (in >> 8) & 0xff;
+ out[2] = (in >> 16) & 0xff;
+ out[3] = (in >> 24) & 0xff;
+ out[4] = (in >> 32) & 0xff;
+ out[5] = (in >> 40) & 0xff;
+ out[6] = (in >> 48) & 0xff;
+ out[7] = (in >> 56) & 0xff;
+}
+
+/* Take a little-endian, 32-byte number and expand it into polynomial form */
+static void
+fexpand(limb *output, const u8 *in) {
+ output[0] = load_limb(in) & 0x7ffffffffffff;
+ output[1] = (load_limb(in+6) >> 3) & 0x7ffffffffffff;
+ output[2] = (load_limb(in+12) >> 6) & 0x7ffffffffffff;
+ output[3] = (load_limb(in+19) >> 1) & 0x7ffffffffffff;
+ output[4] = (load_limb(in+24) >> 12) & 0x7ffffffffffff;
+}
+
+/* Take a fully reduced polynomial form number and contract it into a
+ * little-endian, 32-byte array
+ */
+static void
+fcontract(u8 *output, const felem input) {
+ uint128_t t[5];
+
+ t[0] = input[0];
+ t[1] = input[1];
+ t[2] = input[2];
+ t[3] = input[3];
+ t[4] = input[4];
+
+ t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff;
+ t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff;
+ t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff;
+ t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff;
+ t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff;
+
+ t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff;
+ t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff;
+ t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff;
+ t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff;
+ t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff;
+
+ /* now t is between 0 and 2^255-1, properly carried. */
+ /* case 1: between 0 and 2^255-20. case 2: between 2^255-19 and 2^255-1. */
+
+ t[0] += 19;
+
+ t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff;
+ t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff;
+ t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff;
+ t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff;
+ t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff;
+
+ /* now between 19 and 2^255-1 in both cases, and offset by 19. */
+
+ t[0] += 0x8000000000000 - 19;
+ t[1] += 0x8000000000000 - 1;
+ t[2] += 0x8000000000000 - 1;
+ t[3] += 0x8000000000000 - 1;
+ t[4] += 0x8000000000000 - 1;
+
+ /* now between 2^255 and 2^256-20, and offset by 2^255. */
+
+ t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff;
+ t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff;
+ t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff;
+ t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff;
+ t[4] &= 0x7ffffffffffff;
+
+ store_limb(output, t[0] | (t[1] << 51));
+ store_limb(output+8, (t[1] >> 13) | (t[2] << 38));
+ store_limb(output+16, (t[2] >> 26) | (t[3] << 25));
+ store_limb(output+24, (t[3] >> 39) | (t[4] << 12));
+}
+
+/* Input: Q, Q', Q-Q'
+ * Output: 2Q, Q+Q'
+ *
+ * x2 z3: long form
+ * x3 z3: long form
+ * x z: short form, destroyed
+ * xprime zprime: short form, destroyed
+ * qmqp: short form, preserved
+ */
+static void
+fmonty(limb *x2, limb *z2, /* output 2Q */
+ limb *x3, limb *z3, /* output Q + Q' */
+ limb *x, limb *z, /* input Q */
+ limb *xprime, limb *zprime, /* input Q' */
+ const limb *qmqp /* input Q - Q' */) {
+ limb origx[5], origxprime[5], zzz[5], xx[5], zz[5], xxprime[5],
+ zzprime[5], zzzprime[5];
+
+ memcpy(origx, x, 5 * sizeof(limb));
+ fsum(x, z);
+ fdifference_backwards(z, origx); // does x - z
+
+ memcpy(origxprime, xprime, sizeof(limb) * 5);
+ fsum(xprime, zprime);
+ fdifference_backwards(zprime, origxprime);
+ fmul(xxprime, xprime, z);
+ fmul(zzprime, x, zprime);
+ memcpy(origxprime, xxprime, sizeof(limb) * 5);
+ fsum(xxprime, zzprime);
+ fdifference_backwards(zzprime, origxprime);
+ fsquare_times(x3, xxprime, 1);
+ fsquare_times(zzzprime, zzprime, 1);
+ fmul(z3, zzzprime, qmqp);
+
+ fsquare_times(xx, x, 1);
+ fsquare_times(zz, z, 1);
+ fmul(x2, xx, zz);
+ fdifference_backwards(zz, xx); // does zz = xx - zz
+ fscalar_product(zzz, zz, 121665);
+ fsum(zzz, xx);
+ fmul(z2, zz, zzz);
+}
+
+// -----------------------------------------------------------------------------
+// Maybe swap the contents of two limb arrays (@a and @b), each @len elements
+// long. Perform the swap iff @swap is non-zero.
+//
+// This function performs the swap without leaking any side-channel
+// information.
+// -----------------------------------------------------------------------------
+static void
+swap_conditional(limb a[5], limb b[5], limb iswap) {
+ unsigned i;
+ const limb swap = -iswap;
+
+ for (i = 0; i < 5; ++i) {
+ const limb x = swap & (a[i] ^ b[i]);
+ a[i] ^= x;
+ b[i] ^= x;
+ }
+}
+
+/* Calculates nQ where Q is the x-coordinate of a point on the curve
+ *
+ * resultx/resultz: the x coordinate of the resulting curve point (short form)
+ * n: a little endian, 32-byte number
+ * q: a point of the curve (short form)
+ */
+static void
+cmult(limb *resultx, limb *resultz, const u8 *n, const limb *q) {
+ limb a[5] = {0}, b[5] = {1}, c[5] = {1}, d[5] = {0};
+ limb *nqpqx = a, *nqpqz = b, *nqx = c, *nqz = d, *t;
+ limb e[5] = {0}, f[5] = {1}, g[5] = {0}, h[5] = {1};
+ limb *nqpqx2 = e, *nqpqz2 = f, *nqx2 = g, *nqz2 = h;
+
+ unsigned i, j;
+
+ memcpy(nqpqx, q, sizeof(limb) * 5);
+
+ for (i = 0; i < 32; ++i) {
+ u8 byte = n[31 - i];
+ for (j = 0; j < 8; ++j) {
+ const limb bit = byte >> 7;
+
+ swap_conditional(nqx, nqpqx, bit);
+ swap_conditional(nqz, nqpqz, bit);
+ fmonty(nqx2, nqz2,
+ nqpqx2, nqpqz2,
+ nqx, nqz,
+ nqpqx, nqpqz,
+ q);
+ swap_conditional(nqx2, nqpqx2, bit);
+ swap_conditional(nqz2, nqpqz2, bit);
+
+ t = nqx;
+ nqx = nqx2;
+ nqx2 = t;
+ t = nqz;
+ nqz = nqz2;
+ nqz2 = t;
+ t = nqpqx;
+ nqpqx = nqpqx2;
+ nqpqx2 = t;
+ t = nqpqz;
+ nqpqz = nqpqz2;
+ nqpqz2 = t;
+
+ byte <<= 1;
+ }
+ }
+
+ memcpy(resultx, nqx, sizeof(limb) * 5);
+ memcpy(resultz, nqz, sizeof(limb) * 5);
+}
+
+
+// -----------------------------------------------------------------------------
+// Shamelessly copied from djb's code, tightened a little
+// -----------------------------------------------------------------------------
+static void
+crecip(felem out, const felem z) {
+ felem a,t0,b,c;
+
+ /* 2 */ fsquare_times(a, z, 1); // a = 2
+ /* 8 */ fsquare_times(t0, a, 2);
+ /* 9 */ fmul(b, t0, z); // b = 9
+ /* 11 */ fmul(a, b, a); // a = 11
+ /* 22 */ fsquare_times(t0, a, 1);
+ /* 2^5 - 2^0 = 31 */ fmul(b, t0, b);
+ /* 2^10 - 2^5 */ fsquare_times(t0, b, 5);
+ /* 2^10 - 2^0 */ fmul(b, t0, b);
+ /* 2^20 - 2^10 */ fsquare_times(t0, b, 10);
+ /* 2^20 - 2^0 */ fmul(c, t0, b);
+ /* 2^40 - 2^20 */ fsquare_times(t0, c, 20);
+ /* 2^40 - 2^0 */ fmul(t0, t0, c);
+ /* 2^50 - 2^10 */ fsquare_times(t0, t0, 10);
+ /* 2^50 - 2^0 */ fmul(b, t0, b);
+ /* 2^100 - 2^50 */ fsquare_times(t0, b, 50);
+ /* 2^100 - 2^0 */ fmul(c, t0, b);
+ /* 2^200 - 2^100 */ fsquare_times(t0, c, 100);
+ /* 2^200 - 2^0 */ fmul(t0, t0, c);
+ /* 2^250 - 2^50 */ fsquare_times(t0, t0, 50);
+ /* 2^250 - 2^0 */ fmul(t0, t0, b);
+ /* 2^255 - 2^5 */ fsquare_times(t0, t0, 5);
+ /* 2^255 - 21 */ fmul(out, t0, a);
+}
+
+int curve25519_donna(u8 *, const u8 *, const u8 *);
+
+int
+curve25519_donna(u8 *mypublic, const u8 *secret, const u8 *basepoint) {
+ limb bp[5], x[5], z[5], zmone[5];
+ uint8_t e[32];
+ int i;
+
+ for (i = 0;i < 32;++i) e[i] = secret[i];
+ e[0] &= 248;
+ e[31] &= 127;
+ e[31] |= 64;
+
+ fexpand(bp, basepoint);
+ cmult(x, z, e, bp);
+ crecip(zmone, z);
+ fmul(z, x, zmone);
+ fcontract(mypublic, z);
+ return 0;
+}
diff --git a/src/ext/curve25519_donna/curve25519-donna.c b/src/ext/curve25519_donna/curve25519-donna.c
new file mode 100644
index 0000000000..80e4594eec
--- /dev/null
+++ b/src/ext/curve25519_donna/curve25519-donna.c
@@ -0,0 +1,730 @@
+/* Copyright 2008, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * curve25519-donna: Curve25519 elliptic curve, public key function
+ *
+ * http://code.google.com/p/curve25519-donna/
+ *
+ * Adam Langley <agl@imperialviolet.org>
+ *
+ * Derived from public domain C code by Daniel J. Bernstein <djb@cr.yp.to>
+ *
+ * More information about curve25519 can be found here
+ * http://cr.yp.to/ecdh.html
+ *
+ * djb's sample implementation of curve25519 is written in a special assembly
+ * language called qhasm and uses the floating point registers.
+ *
+ * This is, almost, a clean room reimplementation from the curve25519 paper. It
+ * uses many of the tricks described therein. Only the crecip function is taken
+ * from the sample implementation.
+ */
+
+#include <string.h>
+#include <stdint.h>
+
+typedef uint8_t u8;
+typedef int32_t s32;
+typedef int64_t limb;
+
+/* Field element representation:
+ *
+ * Field elements are written as an array of signed, 64-bit limbs, least
+ * significant first. The value of the field element is:
+ * x[0] + 2^26·x[1] + x^51·x[2] + 2^102·x[3] + ...
+ *
+ * i.e. the limbs are 26, 25, 26, 25, ... bits wide.
+ */
+
+/* Sum two numbers: output += in */
+static void fsum(limb *output, const limb *in) {
+ unsigned i;
+ for (i = 0; i < 10; i += 2) {
+ output[0+i] = (output[0+i] + in[0+i]);
+ output[1+i] = (output[1+i] + in[1+i]);
+ }
+}
+
+/* Find the difference of two numbers: output = in - output
+ * (note the order of the arguments!)
+ */
+static void fdifference(limb *output, const limb *in) {
+ unsigned i;
+ for (i = 0; i < 10; ++i) {
+ output[i] = (in[i] - output[i]);
+ }
+}
+
+/* Multiply a number by a scalar: output = in * scalar */
+static void fscalar_product(limb *output, const limb *in, const limb scalar) {
+ unsigned i;
+ for (i = 0; i < 10; ++i) {
+ output[i] = in[i] * scalar;
+ }
+}
+
+/* Multiply two numbers: output = in2 * in
+ *
+ * output must be distinct to both inputs. The inputs are reduced coefficient
+ * form, the output is not.
+ */
+static void fproduct(limb *output, const limb *in2, const limb *in) {
+ output[0] = ((limb) ((s32) in2[0])) * ((s32) in[0]);
+ output[1] = ((limb) ((s32) in2[0])) * ((s32) in[1]) +
+ ((limb) ((s32) in2[1])) * ((s32) in[0]);
+ output[2] = 2 * ((limb) ((s32) in2[1])) * ((s32) in[1]) +
+ ((limb) ((s32) in2[0])) * ((s32) in[2]) +
+ ((limb) ((s32) in2[2])) * ((s32) in[0]);
+ output[3] = ((limb) ((s32) in2[1])) * ((s32) in[2]) +
+ ((limb) ((s32) in2[2])) * ((s32) in[1]) +
+ ((limb) ((s32) in2[0])) * ((s32) in[3]) +
+ ((limb) ((s32) in2[3])) * ((s32) in[0]);
+ output[4] = ((limb) ((s32) in2[2])) * ((s32) in[2]) +
+ 2 * (((limb) ((s32) in2[1])) * ((s32) in[3]) +
+ ((limb) ((s32) in2[3])) * ((s32) in[1])) +
+ ((limb) ((s32) in2[0])) * ((s32) in[4]) +
+ ((limb) ((s32) in2[4])) * ((s32) in[0]);
+ output[5] = ((limb) ((s32) in2[2])) * ((s32) in[3]) +
+ ((limb) ((s32) in2[3])) * ((s32) in[2]) +
+ ((limb) ((s32) in2[1])) * ((s32) in[4]) +
+ ((limb) ((s32) in2[4])) * ((s32) in[1]) +
+ ((limb) ((s32) in2[0])) * ((s32) in[5]) +
+ ((limb) ((s32) in2[5])) * ((s32) in[0]);
+ output[6] = 2 * (((limb) ((s32) in2[3])) * ((s32) in[3]) +
+ ((limb) ((s32) in2[1])) * ((s32) in[5]) +
+ ((limb) ((s32) in2[5])) * ((s32) in[1])) +
+ ((limb) ((s32) in2[2])) * ((s32) in[4]) +
+ ((limb) ((s32) in2[4])) * ((s32) in[2]) +
+ ((limb) ((s32) in2[0])) * ((s32) in[6]) +
+ ((limb) ((s32) in2[6])) * ((s32) in[0]);
+ output[7] = ((limb) ((s32) in2[3])) * ((s32) in[4]) +
+ ((limb) ((s32) in2[4])) * ((s32) in[3]) +
+ ((limb) ((s32) in2[2])) * ((s32) in[5]) +
+ ((limb) ((s32) in2[5])) * ((s32) in[2]) +
+ ((limb) ((s32) in2[1])) * ((s32) in[6]) +
+ ((limb) ((s32) in2[6])) * ((s32) in[1]) +
+ ((limb) ((s32) in2[0])) * ((s32) in[7]) +
+ ((limb) ((s32) in2[7])) * ((s32) in[0]);
+ output[8] = ((limb) ((s32) in2[4])) * ((s32) in[4]) +
+ 2 * (((limb) ((s32) in2[3])) * ((s32) in[5]) +
+ ((limb) ((s32) in2[5])) * ((s32) in[3]) +
+ ((limb) ((s32) in2[1])) * ((s32) in[7]) +
+ ((limb) ((s32) in2[7])) * ((s32) in[1])) +
+ ((limb) ((s32) in2[2])) * ((s32) in[6]) +
+ ((limb) ((s32) in2[6])) * ((s32) in[2]) +
+ ((limb) ((s32) in2[0])) * ((s32) in[8]) +
+ ((limb) ((s32) in2[8])) * ((s32) in[0]);
+ output[9] = ((limb) ((s32) in2[4])) * ((s32) in[5]) +
+ ((limb) ((s32) in2[5])) * ((s32) in[4]) +
+ ((limb) ((s32) in2[3])) * ((s32) in[6]) +
+ ((limb) ((s32) in2[6])) * ((s32) in[3]) +
+ ((limb) ((s32) in2[2])) * ((s32) in[7]) +
+ ((limb) ((s32) in2[7])) * ((s32) in[2]) +
+ ((limb) ((s32) in2[1])) * ((s32) in[8]) +
+ ((limb) ((s32) in2[8])) * ((s32) in[1]) +
+ ((limb) ((s32) in2[0])) * ((s32) in[9]) +
+ ((limb) ((s32) in2[9])) * ((s32) in[0]);
+ output[10] = 2 * (((limb) ((s32) in2[5])) * ((s32) in[5]) +
+ ((limb) ((s32) in2[3])) * ((s32) in[7]) +
+ ((limb) ((s32) in2[7])) * ((s32) in[3]) +
+ ((limb) ((s32) in2[1])) * ((s32) in[9]) +
+ ((limb) ((s32) in2[9])) * ((s32) in[1])) +
+ ((limb) ((s32) in2[4])) * ((s32) in[6]) +
+ ((limb) ((s32) in2[6])) * ((s32) in[4]) +
+ ((limb) ((s32) in2[2])) * ((s32) in[8]) +
+ ((limb) ((s32) in2[8])) * ((s32) in[2]);
+ output[11] = ((limb) ((s32) in2[5])) * ((s32) in[6]) +
+ ((limb) ((s32) in2[6])) * ((s32) in[5]) +
+ ((limb) ((s32) in2[4])) * ((s32) in[7]) +
+ ((limb) ((s32) in2[7])) * ((s32) in[4]) +
+ ((limb) ((s32) in2[3])) * ((s32) in[8]) +
+ ((limb) ((s32) in2[8])) * ((s32) in[3]) +
+ ((limb) ((s32) in2[2])) * ((s32) in[9]) +
+ ((limb) ((s32) in2[9])) * ((s32) in[2]);
+ output[12] = ((limb) ((s32) in2[6])) * ((s32) in[6]) +
+ 2 * (((limb) ((s32) in2[5])) * ((s32) in[7]) +
+ ((limb) ((s32) in2[7])) * ((s32) in[5]) +
+ ((limb) ((s32) in2[3])) * ((s32) in[9]) +
+ ((limb) ((s32) in2[9])) * ((s32) in[3])) +
+ ((limb) ((s32) in2[4])) * ((s32) in[8]) +
+ ((limb) ((s32) in2[8])) * ((s32) in[4]);
+ output[13] = ((limb) ((s32) in2[6])) * ((s32) in[7]) +
+ ((limb) ((s32) in2[7])) * ((s32) in[6]) +
+ ((limb) ((s32) in2[5])) * ((s32) in[8]) +
+ ((limb) ((s32) in2[8])) * ((s32) in[5]) +
+ ((limb) ((s32) in2[4])) * ((s32) in[9]) +
+ ((limb) ((s32) in2[9])) * ((s32) in[4]);
+ output[14] = 2 * (((limb) ((s32) in2[7])) * ((s32) in[7]) +
+ ((limb) ((s32) in2[5])) * ((s32) in[9]) +
+ ((limb) ((s32) in2[9])) * ((s32) in[5])) +
+ ((limb) ((s32) in2[6])) * ((s32) in[8]) +
+ ((limb) ((s32) in2[8])) * ((s32) in[6]);
+ output[15] = ((limb) ((s32) in2[7])) * ((s32) in[8]) +
+ ((limb) ((s32) in2[8])) * ((s32) in[7]) +
+ ((limb) ((s32) in2[6])) * ((s32) in[9]) +
+ ((limb) ((s32) in2[9])) * ((s32) in[6]);
+ output[16] = ((limb) ((s32) in2[8])) * ((s32) in[8]) +
+ 2 * (((limb) ((s32) in2[7])) * ((s32) in[9]) +
+ ((limb) ((s32) in2[9])) * ((s32) in[7]));
+ output[17] = ((limb) ((s32) in2[8])) * ((s32) in[9]) +
+ ((limb) ((s32) in2[9])) * ((s32) in[8]);
+ output[18] = 2 * ((limb) ((s32) in2[9])) * ((s32) in[9]);
+}
+
+/* Reduce a long form to a short form by taking the input mod 2^255 - 19. */
+static void freduce_degree(limb *output) {
+ /* Each of these shifts and adds ends up multiplying the value by 19. */
+ output[8] += output[18] << 4;
+ output[8] += output[18] << 1;
+ output[8] += output[18];
+ output[7] += output[17] << 4;
+ output[7] += output[17] << 1;
+ output[7] += output[17];
+ output[6] += output[16] << 4;
+ output[6] += output[16] << 1;
+ output[6] += output[16];
+ output[5] += output[15] << 4;
+ output[5] += output[15] << 1;
+ output[5] += output[15];
+ output[4] += output[14] << 4;
+ output[4] += output[14] << 1;
+ output[4] += output[14];
+ output[3] += output[13] << 4;
+ output[3] += output[13] << 1;
+ output[3] += output[13];
+ output[2] += output[12] << 4;
+ output[2] += output[12] << 1;
+ output[2] += output[12];
+ output[1] += output[11] << 4;
+ output[1] += output[11] << 1;
+ output[1] += output[11];
+ output[0] += output[10] << 4;
+ output[0] += output[10] << 1;
+ output[0] += output[10];
+}
+
+#if (-1 & 3) != 3
+#error "This code only works on a two's complement system"
+#endif
+
+/* return v / 2^26, using only shifts and adds. */
+static inline limb
+div_by_2_26(const limb v)
+{
+ /* High word of v; no shift needed*/
+ const uint32_t highword = (uint32_t) (((uint64_t) v) >> 32);
+ /* Set to all 1s if v was negative; else set to 0s. */
+ const int32_t sign = ((int32_t) highword) >> 31;
+ /* Set to 0x3ffffff if v was negative; else set to 0. */
+ const int32_t roundoff = ((uint32_t) sign) >> 6;
+ /* Should return v / (1<<26) */
+ return (v + roundoff) >> 26;
+}
+
+/* return v / (2^25), using only shifts and adds. */
+static inline limb
+div_by_2_25(const limb v)
+{
+ /* High word of v; no shift needed*/
+ const uint32_t highword = (uint32_t) (((uint64_t) v) >> 32);
+ /* Set to all 1s if v was negative; else set to 0s. */
+ const int32_t sign = ((int32_t) highword) >> 31;
+ /* Set to 0x1ffffff if v was negative; else set to 0. */
+ const int32_t roundoff = ((uint32_t) sign) >> 7;
+ /* Should return v / (1<<25) */
+ return (v + roundoff) >> 25;
+}
+
+static inline s32
+div_s32_by_2_25(const s32 v)
+{
+ const s32 roundoff = ((uint32_t)(v >> 31)) >> 7;
+ return (v + roundoff) >> 25;
+}
+
+/* Reduce all coefficients of the short form input so that |x| < 2^26.
+ *
+ * On entry: |output[i]| < 2^62
+ */
+static void freduce_coefficients(limb *output) {
+ unsigned i;
+
+ output[10] = 0;
+
+ for (i = 0; i < 10; i += 2) {
+ limb over = div_by_2_26(output[i]);
+ output[i] -= over << 26;
+ output[i+1] += over;
+
+ over = div_by_2_25(output[i+1]);
+ output[i+1] -= over << 25;
+ output[i+2] += over;
+ }
+ /* Now |output[10]| < 2 ^ 38 and all other coefficients are reduced. */
+ output[0] += output[10] << 4;
+ output[0] += output[10] << 1;
+ output[0] += output[10];
+
+ output[10] = 0;
+
+ /* Now output[1..9] are reduced, and |output[0]| < 2^26 + 19 * 2^38
+ * So |over| will be no more than 77825 */
+ {
+ limb over = div_by_2_26(output[0]);
+ output[0] -= over << 26;
+ output[1] += over;
+ }
+
+ /* Now output[0,2..9] are reduced, and |output[1]| < 2^25 + 77825
+ * So |over| will be no more than 1. */
+ {
+ /* output[1] fits in 32 bits, so we can use div_s32_by_2_25 here. */
+ s32 over32 = div_s32_by_2_25((s32) output[1]);
+ output[1] -= over32 << 25;
+ output[2] += over32;
+ }
+
+ /* Finally, output[0,1,3..9] are reduced, and output[2] is "nearly reduced":
+ * we have |output[2]| <= 2^26. This is good enough for all of our math,
+ * but it will require an extra freduce_coefficients before fcontract. */
+}
+
+/* A helpful wrapper around fproduct: output = in * in2.
+ *
+ * output must be distinct to both inputs. The output is reduced degree and
+ * reduced coefficient.
+ */
+static void
+fmul(limb *output, const limb *in, const limb *in2) {
+ limb t[19];
+ fproduct(t, in, in2);
+ freduce_degree(t);
+ freduce_coefficients(t);
+ memcpy(output, t, sizeof(limb) * 10);
+}
+
+static void fsquare_inner(limb *output, const limb *in) {
+ output[0] = ((limb) ((s32) in[0])) * ((s32) in[0]);
+ output[1] = 2 * ((limb) ((s32) in[0])) * ((s32) in[1]);
+ output[2] = 2 * (((limb) ((s32) in[1])) * ((s32) in[1]) +
+ ((limb) ((s32) in[0])) * ((s32) in[2]));
+ output[3] = 2 * (((limb) ((s32) in[1])) * ((s32) in[2]) +
+ ((limb) ((s32) in[0])) * ((s32) in[3]));
+ output[4] = ((limb) ((s32) in[2])) * ((s32) in[2]) +
+ 4 * ((limb) ((s32) in[1])) * ((s32) in[3]) +
+ 2 * ((limb) ((s32) in[0])) * ((s32) in[4]);
+ output[5] = 2 * (((limb) ((s32) in[2])) * ((s32) in[3]) +
+ ((limb) ((s32) in[1])) * ((s32) in[4]) +
+ ((limb) ((s32) in[0])) * ((s32) in[5]));
+ output[6] = 2 * (((limb) ((s32) in[3])) * ((s32) in[3]) +
+ ((limb) ((s32) in[2])) * ((s32) in[4]) +
+ ((limb) ((s32) in[0])) * ((s32) in[6]) +
+ 2 * ((limb) ((s32) in[1])) * ((s32) in[5]));
+ output[7] = 2 * (((limb) ((s32) in[3])) * ((s32) in[4]) +
+ ((limb) ((s32) in[2])) * ((s32) in[5]) +
+ ((limb) ((s32) in[1])) * ((s32) in[6]) +
+ ((limb) ((s32) in[0])) * ((s32) in[7]));
+ output[8] = ((limb) ((s32) in[4])) * ((s32) in[4]) +
+ 2 * (((limb) ((s32) in[2])) * ((s32) in[6]) +
+ ((limb) ((s32) in[0])) * ((s32) in[8]) +
+ 2 * (((limb) ((s32) in[1])) * ((s32) in[7]) +
+ ((limb) ((s32) in[3])) * ((s32) in[5])));
+ output[9] = 2 * (((limb) ((s32) in[4])) * ((s32) in[5]) +
+ ((limb) ((s32) in[3])) * ((s32) in[6]) +
+ ((limb) ((s32) in[2])) * ((s32) in[7]) +
+ ((limb) ((s32) in[1])) * ((s32) in[8]) +
+ ((limb) ((s32) in[0])) * ((s32) in[9]));
+ output[10] = 2 * (((limb) ((s32) in[5])) * ((s32) in[5]) +
+ ((limb) ((s32) in[4])) * ((s32) in[6]) +
+ ((limb) ((s32) in[2])) * ((s32) in[8]) +
+ 2 * (((limb) ((s32) in[3])) * ((s32) in[7]) +
+ ((limb) ((s32) in[1])) * ((s32) in[9])));
+ output[11] = 2 * (((limb) ((s32) in[5])) * ((s32) in[6]) +
+ ((limb) ((s32) in[4])) * ((s32) in[7]) +
+ ((limb) ((s32) in[3])) * ((s32) in[8]) +
+ ((limb) ((s32) in[2])) * ((s32) in[9]));
+ output[12] = ((limb) ((s32) in[6])) * ((s32) in[6]) +
+ 2 * (((limb) ((s32) in[4])) * ((s32) in[8]) +
+ 2 * (((limb) ((s32) in[5])) * ((s32) in[7]) +
+ ((limb) ((s32) in[3])) * ((s32) in[9])));
+ output[13] = 2 * (((limb) ((s32) in[6])) * ((s32) in[7]) +
+ ((limb) ((s32) in[5])) * ((s32) in[8]) +
+ ((limb) ((s32) in[4])) * ((s32) in[9]));
+ output[14] = 2 * (((limb) ((s32) in[7])) * ((s32) in[7]) +
+ ((limb) ((s32) in[6])) * ((s32) in[8]) +
+ 2 * ((limb) ((s32) in[5])) * ((s32) in[9]));
+ output[15] = 2 * (((limb) ((s32) in[7])) * ((s32) in[8]) +
+ ((limb) ((s32) in[6])) * ((s32) in[9]));
+ output[16] = ((limb) ((s32) in[8])) * ((s32) in[8]) +
+ 4 * ((limb) ((s32) in[7])) * ((s32) in[9]);
+ output[17] = 2 * ((limb) ((s32) in[8])) * ((s32) in[9]);
+ output[18] = 2 * ((limb) ((s32) in[9])) * ((s32) in[9]);
+}
+
+static void
+fsquare(limb *output, const limb *in) {
+ limb t[19];
+ fsquare_inner(t, in);
+ freduce_degree(t);
+ freduce_coefficients(t);
+ memcpy(output, t, sizeof(limb) * 10);
+}
+
+/* Take a little-endian, 32-byte number and expand it into polynomial form */
+static void
+fexpand(limb *output, const u8 *input) {
+#define F(n,start,shift,mask) \
+ output[n] = ((((limb) input[start + 0]) | \
+ ((limb) input[start + 1]) << 8 | \
+ ((limb) input[start + 2]) << 16 | \
+ ((limb) input[start + 3]) << 24) >> shift) & mask;
+ F(0, 0, 0, 0x3ffffff);
+ F(1, 3, 2, 0x1ffffff);
+ F(2, 6, 3, 0x3ffffff);
+ F(3, 9, 5, 0x1ffffff);
+ F(4, 12, 6, 0x3ffffff);
+ F(5, 16, 0, 0x1ffffff);
+ F(6, 19, 1, 0x3ffffff);
+ F(7, 22, 3, 0x1ffffff);
+ F(8, 25, 4, 0x3ffffff);
+ F(9, 28, 6, 0x1ffffff);
+#undef F
+}
+
+#if (-32 >> 1) != -16
+#error "This code only works when >> does sign-extension on negative numbers"
+#endif
+
+/* Take a fully reduced polynomial form number and contract it into a
+ * little-endian, 32-byte array
+ */
+static void
+fcontract(u8 *output, limb *input) {
+ int i;
+ int j;
+
+ for (j = 0; j < 2; ++j) {
+ for (i = 0; i < 9; ++i) {
+ if ((i & 1) == 1) {
+ /* This calculation is a time-invariant way to make input[i] positive
+ by borrowing from the next-larger limb.
+ */
+ const s32 mask = (s32)(input[i]) >> 31;
+ const s32 carry = -(((s32)(input[i]) & mask) >> 25);
+ input[i] = (s32)(input[i]) + (carry << 25);
+ input[i+1] = (s32)(input[i+1]) - carry;
+ } else {
+ const s32 mask = (s32)(input[i]) >> 31;
+ const s32 carry = -(((s32)(input[i]) & mask) >> 26);
+ input[i] = (s32)(input[i]) + (carry << 26);
+ input[i+1] = (s32)(input[i+1]) - carry;
+ }
+ }
+ {
+ const s32 mask = (s32)(input[9]) >> 31;
+ const s32 carry = -(((s32)(input[9]) & mask) >> 25);
+ input[9] = (s32)(input[9]) + (carry << 25);
+ input[0] = (s32)(input[0]) - (carry * 19);
+ }
+ }
+
+ /* The first borrow-propagation pass above ended with every limb
+ except (possibly) input[0] non-negative.
+
+ Since each input limb except input[0] is decreased by at most 1
+ by a borrow-propagation pass, the second borrow-propagation pass
+ could only have wrapped around to decrease input[0] again if the
+ first pass left input[0] negative *and* input[1] through input[9]
+ were all zero. In that case, input[1] is now 2^25 - 1, and this
+ last borrow-propagation step will leave input[1] non-negative.
+ */
+ {
+ const s32 mask = (s32)(input[0]) >> 31;
+ const s32 carry = -(((s32)(input[0]) & mask) >> 26);
+ input[0] = (s32)(input[0]) + (carry << 26);
+ input[1] = (s32)(input[1]) - carry;
+ }
+
+ /* Both passes through the above loop, plus the last 0-to-1 step, are
+ necessary: if input[9] is -1 and input[0] through input[8] are 0,
+ negative values will remain in the array until the end.
+ */
+
+ input[1] <<= 2;
+ input[2] <<= 3;
+ input[3] <<= 5;
+ input[4] <<= 6;
+ input[6] <<= 1;
+ input[7] <<= 3;
+ input[8] <<= 4;
+ input[9] <<= 6;
+#define F(i, s) \
+ output[s+0] |= input[i] & 0xff; \
+ output[s+1] = (input[i] >> 8) & 0xff; \
+ output[s+2] = (input[i] >> 16) & 0xff; \
+ output[s+3] = (input[i] >> 24) & 0xff;
+ output[0] = 0;
+ output[16] = 0;
+ F(0,0);
+ F(1,3);
+ F(2,6);
+ F(3,9);
+ F(4,12);
+ F(5,16);
+ F(6,19);
+ F(7,22);
+ F(8,25);
+ F(9,28);
+#undef F
+}
+
+/* Input: Q, Q', Q-Q'
+ * Output: 2Q, Q+Q'
+ *
+ * x2 z3: long form
+ * x3 z3: long form
+ * x z: short form, destroyed
+ * xprime zprime: short form, destroyed
+ * qmqp: short form, preserved
+ */
+static void fmonty(limb *x2, limb *z2, /* output 2Q */
+ limb *x3, limb *z3, /* output Q + Q' */
+ limb *x, limb *z, /* input Q */
+ limb *xprime, limb *zprime, /* input Q' */
+ const limb *qmqp /* input Q - Q' */) {
+ limb origx[10], origxprime[10], zzz[19], xx[19], zz[19], xxprime[19],
+ zzprime[19], zzzprime[19], xxxprime[19];
+
+ memcpy(origx, x, 10 * sizeof(limb));
+ fsum(x, z);
+ fdifference(z, origx); // does x - z
+
+ memcpy(origxprime, xprime, sizeof(limb) * 10);
+ fsum(xprime, zprime);
+ fdifference(zprime, origxprime);
+ fproduct(xxprime, xprime, z);
+ fproduct(zzprime, x, zprime);
+ freduce_degree(xxprime);
+ freduce_coefficients(xxprime);
+ freduce_degree(zzprime);
+ freduce_coefficients(zzprime);
+ memcpy(origxprime, xxprime, sizeof(limb) * 10);
+ fsum(xxprime, zzprime);
+ fdifference(zzprime, origxprime);
+ fsquare(xxxprime, xxprime);
+ fsquare(zzzprime, zzprime);
+ fproduct(zzprime, zzzprime, qmqp);
+ freduce_degree(zzprime);
+ freduce_coefficients(zzprime);
+ memcpy(x3, xxxprime, sizeof(limb) * 10);
+ memcpy(z3, zzprime, sizeof(limb) * 10);
+
+ fsquare(xx, x);
+ fsquare(zz, z);
+ fproduct(x2, xx, zz);
+ freduce_degree(x2);
+ freduce_coefficients(x2);
+ fdifference(zz, xx); // does zz = xx - zz
+ memset(zzz + 10, 0, sizeof(limb) * 9);
+ fscalar_product(zzz, zz, 121665);
+ /* No need to call freduce_degree here:
+ fscalar_product doesn't increase the degree of its input. */
+ freduce_coefficients(zzz);
+ fsum(zzz, xx);
+ fproduct(z2, zz, zzz);
+ freduce_degree(z2);
+ freduce_coefficients(z2);
+}
+
+/* Conditionally swap two reduced-form limb arrays if 'iswap' is 1, but leave
+ * them unchanged if 'iswap' is 0. Runs in data-invariant time to avoid
+ * side-channel attacks.
+ *
+ * NOTE that this function requires that 'iswap' be 1 or 0; other values give
+ * wrong results. Also, the two limb arrays must be in reduced-coefficient,
+ * reduced-degree form: the values in a[10..19] or b[10..19] aren't swapped,
+ * and all all values in a[0..9],b[0..9] must have magnitude less than
+ * INT32_MAX.
+ */
+static void
+swap_conditional(limb a[19], limb b[19], limb iswap) {
+ unsigned i;
+ const s32 swap = (s32) -iswap;
+
+ for (i = 0; i < 10; ++i) {
+ const s32 x = swap & ( ((s32)a[i]) ^ ((s32)b[i]) );
+ a[i] = ((s32)a[i]) ^ x;
+ b[i] = ((s32)b[i]) ^ x;
+ }
+}
+
+/* Calculates nQ where Q is the x-coordinate of a point on the curve
+ *
+ * resultx/resultz: the x coordinate of the resulting curve point (short form)
+ * n: a little endian, 32-byte number
+ * q: a point of the curve (short form)
+ */
+static void
+cmult(limb *resultx, limb *resultz, const u8 *n, const limb *q) {
+ limb a[19] = {0}, b[19] = {1}, c[19] = {1}, d[19] = {0};
+ limb *nqpqx = a, *nqpqz = b, *nqx = c, *nqz = d, *t;
+ limb e[19] = {0}, f[19] = {1}, g[19] = {0}, h[19] = {1};
+ limb *nqpqx2 = e, *nqpqz2 = f, *nqx2 = g, *nqz2 = h;
+
+ unsigned i, j;
+
+ memcpy(nqpqx, q, sizeof(limb) * 10);
+
+ for (i = 0; i < 32; ++i) {
+ u8 byte = n[31 - i];
+ for (j = 0; j < 8; ++j) {
+ const limb bit = byte >> 7;
+
+ swap_conditional(nqx, nqpqx, bit);
+ swap_conditional(nqz, nqpqz, bit);
+ fmonty(nqx2, nqz2,
+ nqpqx2, nqpqz2,
+ nqx, nqz,
+ nqpqx, nqpqz,
+ q);
+ swap_conditional(nqx2, nqpqx2, bit);
+ swap_conditional(nqz2, nqpqz2, bit);
+
+ t = nqx;
+ nqx = nqx2;
+ nqx2 = t;
+ t = nqz;
+ nqz = nqz2;
+ nqz2 = t;
+ t = nqpqx;
+ nqpqx = nqpqx2;
+ nqpqx2 = t;
+ t = nqpqz;
+ nqpqz = nqpqz2;
+ nqpqz2 = t;
+
+ byte <<= 1;
+ }
+ }
+
+ memcpy(resultx, nqx, sizeof(limb) * 10);
+ memcpy(resultz, nqz, sizeof(limb) * 10);
+}
+
+// -----------------------------------------------------------------------------
+// Shamelessly copied from djb's code
+// -----------------------------------------------------------------------------
+static void
+crecip(limb *out, const limb *z) {
+ limb z2[10];
+ limb z9[10];
+ limb z11[10];
+ limb z2_5_0[10];
+ limb z2_10_0[10];
+ limb z2_20_0[10];
+ limb z2_50_0[10];
+ limb z2_100_0[10];
+ limb t0[10];
+ limb t1[10];
+ int i;
+
+ /* 2 */ fsquare(z2,z);
+ /* 4 */ fsquare(t1,z2);
+ /* 8 */ fsquare(t0,t1);
+ /* 9 */ fmul(z9,t0,z);
+ /* 11 */ fmul(z11,z9,z2);
+ /* 22 */ fsquare(t0,z11);
+ /* 2^5 - 2^0 = 31 */ fmul(z2_5_0,t0,z9);
+
+ /* 2^6 - 2^1 */ fsquare(t0,z2_5_0);
+ /* 2^7 - 2^2 */ fsquare(t1,t0);
+ /* 2^8 - 2^3 */ fsquare(t0,t1);
+ /* 2^9 - 2^4 */ fsquare(t1,t0);
+ /* 2^10 - 2^5 */ fsquare(t0,t1);
+ /* 2^10 - 2^0 */ fmul(z2_10_0,t0,z2_5_0);
+
+ /* 2^11 - 2^1 */ fsquare(t0,z2_10_0);
+ /* 2^12 - 2^2 */ fsquare(t1,t0);
+ /* 2^20 - 2^10 */ for (i = 2;i < 10;i += 2) { fsquare(t0,t1); fsquare(t1,t0); }
+ /* 2^20 - 2^0 */ fmul(z2_20_0,t1,z2_10_0);
+
+ /* 2^21 - 2^1 */ fsquare(t0,z2_20_0);
+ /* 2^22 - 2^2 */ fsquare(t1,t0);
+ /* 2^40 - 2^20 */ for (i = 2;i < 20;i += 2) { fsquare(t0,t1); fsquare(t1,t0); }
+ /* 2^40 - 2^0 */ fmul(t0,t1,z2_20_0);
+
+ /* 2^41 - 2^1 */ fsquare(t1,t0);
+ /* 2^42 - 2^2 */ fsquare(t0,t1);
+ /* 2^50 - 2^10 */ for (i = 2;i < 10;i += 2) { fsquare(t1,t0); fsquare(t0,t1); }
+ /* 2^50 - 2^0 */ fmul(z2_50_0,t0,z2_10_0);
+
+ /* 2^51 - 2^1 */ fsquare(t0,z2_50_0);
+ /* 2^52 - 2^2 */ fsquare(t1,t0);
+ /* 2^100 - 2^50 */ for (i = 2;i < 50;i += 2) { fsquare(t0,t1); fsquare(t1,t0); }
+ /* 2^100 - 2^0 */ fmul(z2_100_0,t1,z2_50_0);
+
+ /* 2^101 - 2^1 */ fsquare(t1,z2_100_0);
+ /* 2^102 - 2^2 */ fsquare(t0,t1);
+ /* 2^200 - 2^100 */ for (i = 2;i < 100;i += 2) { fsquare(t1,t0); fsquare(t0,t1); }
+ /* 2^200 - 2^0 */ fmul(t1,t0,z2_100_0);
+
+ /* 2^201 - 2^1 */ fsquare(t0,t1);
+ /* 2^202 - 2^2 */ fsquare(t1,t0);
+ /* 2^250 - 2^50 */ for (i = 2;i < 50;i += 2) { fsquare(t0,t1); fsquare(t1,t0); }
+ /* 2^250 - 2^0 */ fmul(t0,t1,z2_50_0);
+
+ /* 2^251 - 2^1 */ fsquare(t1,t0);
+ /* 2^252 - 2^2 */ fsquare(t0,t1);
+ /* 2^253 - 2^3 */ fsquare(t1,t0);
+ /* 2^254 - 2^4 */ fsquare(t0,t1);
+ /* 2^255 - 2^5 */ fsquare(t1,t0);
+ /* 2^255 - 21 */ fmul(out,t1,z11);
+}
+
+int curve25519_donna(u8 *, const u8 *, const u8 *);
+
+int
+curve25519_donna(u8 *mypublic, const u8 *secret, const u8 *basepoint) {
+ limb bp[10], x[10], z[11], zmone[10];
+ uint8_t e[32];
+ int i;
+
+ for (i = 0; i < 32; ++i) e[i] = secret[i];
+ e[0] &= 248;
+ e[31] &= 127;
+ e[31] |= 64;
+
+ fexpand(bp, basepoint);
+ cmult(x, z, e, bp);
+ crecip(zmone, z);
+ fmul(z, x, zmone);
+ freduce_coefficients(z);
+ fcontract(mypublic, z);
+ return 0;
+}
diff --git a/src/ext/eventdns.c b/src/ext/eventdns.c
index 7e99f55626..3ee9f72459 100644
--- a/src/ext/eventdns.c
+++ b/src/ext/eventdns.c
@@ -368,7 +368,11 @@ error_is_eagain(int err)
#define CLOSE_SOCKET(x) closesocket(x)
#else
#define last_error(sock) (errno)
+#if EAGAIN != EWOULDBLOCK
+#define error_is_eagain(err) ((err) == EAGAIN || (err) == EWOULDBLOCK)
+#else
#define error_is_eagain(err) ((err) == EAGAIN)
+#endif
#define CLOSE_SOCKET(x) close(x)
#endif
@@ -423,9 +427,9 @@ evdns_set_log_fn(evdns_debug_log_fn_type fn)
#define EVDNS_LOG_CHECK
#endif
-static void _evdns_log(int warn, const char *fmt, ...) EVDNS_LOG_CHECK;
+static void evdns_log(int warn, const char *fmt, ...) EVDNS_LOG_CHECK;
static void
-_evdns_log(int warn, const char *fmt, ...)
+evdns_log(int warn, const char *fmt, ...)
{
va_list args;
static char buf[512];
@@ -442,8 +446,6 @@ _evdns_log(int warn, const char *fmt, ...)
va_end(args);
}
-#define log _evdns_log
-
static int
sockaddr_eq(const struct sockaddr *sa1, const struct sockaddr *sa2,
int include_port)
@@ -530,7 +532,7 @@ nameserver_probe_failed(struct nameserver *const ns) {
ns->failed_times++;
if (add_timeout_event(ns, (struct timeval *) timeout) < 0) {
- log(EVDNS_LOG_WARN,
+ evdns_log(EVDNS_LOG_WARN,
"Error from libevent when adding timer event for %s",
debug_ntop((struct sockaddr *)&ns->address));
/* ???? Do more? */
@@ -546,19 +548,19 @@ nameserver_failed(struct nameserver *const ns, const char *msg) {
/* then don't do anything */
if (!ns->state) return;
- log(EVDNS_LOG_WARN, "Nameserver %s has failed: %s",
+ evdns_log(EVDNS_LOG_WARN, "Nameserver %s has failed: %s",
debug_ntop((struct sockaddr *)&ns->address), msg);
global_good_nameservers--;
assert(global_good_nameservers >= 0);
if (global_good_nameservers == 0) {
- log(EVDNS_LOG_WARN, "All nameservers have failed");
+ evdns_log(EVDNS_LOG_WARN, "All nameservers have failed");
}
ns->state = 0;
ns->failed_times = 1;
if (add_timeout_event(ns, (struct timeval *) &global_nameserver_timeouts[0]) < 0) {
- log(EVDNS_LOG_WARN,
+ evdns_log(EVDNS_LOG_WARN,
"Error from libevent when adding timer event for %s",
debug_ntop((struct sockaddr *)&ns->address));
/* ???? Do more? */
@@ -589,7 +591,7 @@ nameserver_failed(struct nameserver *const ns, const char *msg) {
static void
nameserver_up(struct nameserver *const ns) {
if (ns->state) return;
- log(EVDNS_LOG_WARN, "Nameserver %s is back up",
+ evdns_log(EVDNS_LOG_WARN, "Nameserver %s is back up",
debug_ntop((struct sockaddr *)&ns->address));
del_timeout_event(ns);
ns->state = 1;
@@ -620,7 +622,7 @@ request_finished(struct evdns_request *const req, struct evdns_request **head) {
}
}
- log(EVDNS_LOG_DEBUG, "Removing timeout for request %lx",
+ evdns_log(EVDNS_LOG_DEBUG, "Removing timeout for request %lx",
(unsigned long) req);
del_timeout_event(req);
@@ -772,7 +774,7 @@ reply_handle(struct evdns_request *const req, u16 flags, u32 ttl, struct reply *
* confusing." Treat this as a timeout, not a failure.
*/
/*XXXX refactor the parts of */
- log(EVDNS_LOG_DEBUG, "Got a SERVERFAILED from nameserver %s; "
+ evdns_log(EVDNS_LOG_DEBUG, "Got a SERVERFAILED from nameserver %s; "
"will allow the request to time out.",
debug_ntop((struct sockaddr *)&req->ns->address));
break;
@@ -1264,7 +1266,7 @@ nameserver_read(struct nameserver *ns) {
}
/* XXX Match port too? */
if (!sockaddr_eq(sa, (struct sockaddr*)&ns->address, 0)) {
- log(EVDNS_LOG_WARN,
+ evdns_log(EVDNS_LOG_WARN,
"Address mismatch on received DNS packet. Address was %s",
debug_ntop(sa));
return;
@@ -1290,7 +1292,7 @@ server_port_read(struct evdns_server_port *s) {
if (r < 0) {
int err = last_error(s->socket);
if (error_is_eagain(err)) return;
- log(EVDNS_LOG_WARN, "Error %s (%d) while reading request.",
+ evdns_log(EVDNS_LOG_WARN, "Error %s (%d) while reading request.",
tor_socket_strerror(err), err);
return;
}
@@ -1310,7 +1312,7 @@ server_port_flush(struct evdns_server_port *port)
int err = last_error(port->socket);
if (error_is_eagain(err))
return;
- log(EVDNS_LOG_WARN, "Error %s (%d) while writing response to port; dropping", tor_socket_strerror(err), err);
+ evdns_log(EVDNS_LOG_WARN, "Error %s (%d) while writing response to port; dropping", tor_socket_strerror(err), err);
}
if (server_request_free(req)) {
/* we released the last reference to req->port. */
@@ -1327,7 +1329,7 @@ server_port_flush(struct evdns_server_port *port)
event_set(&port->event, port->socket, EV_READ | EV_PERSIST,
server_port_ready_callback, port);
if (event_add(&port->event, NULL) < 0) {
- log(EVDNS_LOG_WARN, "Error from libevent when adding event for DNS server.");
+ evdns_log(EVDNS_LOG_WARN, "Error from libevent when adding event for DNS server.");
/* ???? Do more? */
}
}
@@ -1345,7 +1347,7 @@ nameserver_write_waiting(struct nameserver *ns, char waiting) {
event_set(&ns->event, ns->socket, EV_READ | (waiting ? EV_WRITE : 0) | EV_PERSIST,
nameserver_ready_callback, ns);
if (event_add(&ns->event, NULL) < 0) {
- log(EVDNS_LOG_WARN, "Error from libevent when adding event for %s",
+ evdns_log(EVDNS_LOG_WARN, "Error from libevent when adding event for %s",
debug_ntop((struct sockaddr *)&ns->address));
/* ???? Do more? */
}
@@ -1855,7 +1857,7 @@ evdns_server_request_respond(struct evdns_server_request *_req, int err)
event_set(&port->event, port->socket, (port->closing?0:EV_READ) | EV_WRITE | EV_PERSIST, server_port_ready_callback, port);
if (event_add(&port->event, NULL) < 0) {
- log(EVDNS_LOG_WARN, "Error from libevent when adding event for DNS server");
+ evdns_log(EVDNS_LOG_WARN, "Error from libevent when adding event for DNS server");
}
}
@@ -1991,7 +1993,7 @@ evdns_request_timeout_callback(int fd, short events, void *arg) {
(void) fd;
(void) events;
- log(EVDNS_LOG_DEBUG, "Request %lx timed out", (unsigned long) arg);
+ evdns_log(EVDNS_LOG_DEBUG, "Request %lx timed out", (unsigned long) arg);
req->ns->timedout++;
if (req->ns->timedout > global_max_nameserver_timeout) {
@@ -2070,11 +2072,11 @@ evdns_request_transmit(struct evdns_request *req) {
* and make us retransmit the request anyway. */
default:
/* transmitted; we need to check for timeout. */
- log(EVDNS_LOG_DEBUG,
+ evdns_log(EVDNS_LOG_DEBUG,
"Setting timeout for request %lx", (unsigned long) req);
if (add_timeout_event(req, &global_timeout) < 0) {
- log(EVDNS_LOG_WARN,
+ evdns_log(EVDNS_LOG_WARN,
"Error from libevent when adding timer for request %lx",
(unsigned long) req);
/* ???? Do more? */
@@ -2122,7 +2124,7 @@ nameserver_send_probe(struct nameserver *const ns) {
addr = mm_malloc(sizeof(struct sockaddr_storage));
memcpy(addr, &ns->address, sizeof(struct sockaddr_storage));
- log(EVDNS_LOG_DEBUG, "Sending probe to %s", debug_ntop((struct sockaddr *)&ns->address));
+ evdns_log(EVDNS_LOG_DEBUG, "Sending probe to %s", debug_ntop((struct sockaddr *)&ns->address));
req = request_new(TYPE_A, "www.google.com", DNS_QUERY_NO_SEARCH, nameserver_probe_callback, addr);
if (!req) {
@@ -2278,14 +2280,14 @@ _evdns_nameserver_add_impl(const struct sockaddr *address,
if (server) {
do {
if (sockaddr_eq(address, (struct sockaddr *)&server->address, 1)) {
- log(EVDNS_LOG_DEBUG, "Duplicate nameserver.");
+ evdns_log(EVDNS_LOG_DEBUG, "Duplicate nameserver.");
return 3;
}
server = server->next;
} while (server != started_at);
}
if (addrlen > (int)sizeof(ns->address)) {
- log(EVDNS_LOG_DEBUG, "Addrlen %d too long.", (int)addrlen);
+ evdns_log(EVDNS_LOG_DEBUG, "Addrlen %d too long.", (int)addrlen);
return 2;
}
@@ -2311,14 +2313,14 @@ _evdns_nameserver_add_impl(const struct sockaddr *address,
!sockaddr_is_loopback((struct sockaddr*)&global_bind_address)) {
if (bind(ns->socket, (struct sockaddr *)&global_bind_address,
global_bind_addrlen) < 0) {
- log(EVDNS_LOG_DEBUG, "Couldn't bind to outgoing address.");
+ evdns_log(EVDNS_LOG_DEBUG, "Couldn't bind to outgoing address.");
err = 2;
goto out2;
}
}
if (connect(ns->socket, address, addrlen) != 0) {
- log(EVDNS_LOG_DEBUG, "Couldn't open socket to nameserver.");
+ evdns_log(EVDNS_LOG_DEBUG, "Couldn't open socket to nameserver.");
err = 2;
goto out2;
}
@@ -2327,12 +2329,12 @@ _evdns_nameserver_add_impl(const struct sockaddr *address,
ns->state = 1;
event_set(&ns->event, ns->socket, EV_READ | EV_PERSIST, nameserver_ready_callback, ns);
if (event_add(&ns->event, NULL) < 0) {
- log(EVDNS_LOG_DEBUG, "Couldn't add event for nameserver.");
+ evdns_log(EVDNS_LOG_DEBUG, "Couldn't add event for nameserver.");
err = 2;
goto out2;
}
- log(EVDNS_LOG_DEBUG, "Added nameserver %s", debug_ntop(address));
+ evdns_log(EVDNS_LOG_DEBUG, "Added nameserver %s", debug_ntop(address));
/* insert this nameserver into the list of them */
if (!server_head) {
@@ -2356,7 +2358,7 @@ out2:
out1:
CLEAR(ns);
mm_free(ns);
- log(EVDNS_LOG_WARN, "Unable to add nameserver %s: error %d", debug_ntop(address), err);
+ evdns_log(EVDNS_LOG_WARN, "Unable to add nameserver %s: error %d", debug_ntop(address), err);
return err;
}
@@ -2389,18 +2391,18 @@ evdns_nameserver_ip_add(const char *ip_as_string) {
* ipv4
*/
- log(EVDNS_LOG_DEBUG, "Trying to add nameserver <%s>", ip_as_string);
+ evdns_log(EVDNS_LOG_DEBUG, "Trying to add nameserver <%s>", ip_as_string);
cp = strchr(ip_as_string, ':');
if (*ip_as_string == '[') {
size_t len;
if (!(cp = strchr(ip_as_string, ']'))) {
- log(EVDNS_LOG_DEBUG, "Nameserver missing closing ]");
+ evdns_log(EVDNS_LOG_DEBUG, "Nameserver missing closing ]");
return 4;
}
len = cp-(ip_as_string + 1);
if (len > sizeof(buf)-1) {
- log(EVDNS_LOG_DEBUG, "[Nameserver] does not fit in buffer.");
+ evdns_log(EVDNS_LOG_DEBUG, "[Nameserver] does not fit in buffer.");
return 4;
}
memcpy(buf, ip_as_string+1, len);
@@ -2418,7 +2420,7 @@ evdns_nameserver_ip_add(const char *ip_as_string) {
} else if (cp) {
is_ipv6 = 0;
if (cp - ip_as_string > (int)sizeof(buf)-1) {
- log(EVDNS_LOG_DEBUG, "Nameserver does not fit in buffer.");
+ evdns_log(EVDNS_LOG_DEBUG, "Nameserver does not fit in buffer.");
return 4;
}
memcpy(buf, ip_as_string, cp-ip_as_string);
@@ -2436,7 +2438,7 @@ evdns_nameserver_ip_add(const char *ip_as_string) {
} else {
port = strtoint(port_part);
if (port <= 0 || port > 65535) {
- log(EVDNS_LOG_DEBUG, "Nameserver port <%s> out of range",
+ evdns_log(EVDNS_LOG_DEBUG, "Nameserver port <%s> out of range",
port_part);
return 4;
}
@@ -2453,7 +2455,7 @@ evdns_nameserver_ip_add(const char *ip_as_string) {
sin6.sin6_family = AF_INET6;
sin6.sin6_port = htons(port);
if (1 != tor_inet_pton(AF_INET6, addr_part, &sin6.sin6_addr)) {
- log(EVDNS_LOG_DEBUG, "inet_pton(%s) failed", addr_part);
+ evdns_log(EVDNS_LOG_DEBUG, "inet_pton(%s) failed", addr_part);
return 4;
}
return _evdns_nameserver_add_impl((struct sockaddr*)&sin6,
@@ -2467,7 +2469,7 @@ evdns_nameserver_ip_add(const char *ip_as_string) {
sin.sin_family = AF_INET;
sin.sin_port = htons(port);
if (!inet_aton(addr_part, &sin.sin_addr)) {
- log(EVDNS_LOG_DEBUG, "inet_pton(%s) failed", addr_part);
+ evdns_log(EVDNS_LOG_DEBUG, "inet_pton(%s) failed", addr_part);
return 4;
}
return _evdns_nameserver_add_impl((struct sockaddr*)&sin,
@@ -2590,7 +2592,7 @@ request_submit(struct evdns_request *const req) {
/* exported function */
int evdns_resolve_ipv4(const char *name, int flags,
evdns_callback_type callback, void *ptr) {
- log(EVDNS_LOG_DEBUG, "Resolve requested for %s", name);
+ evdns_log(EVDNS_LOG_DEBUG, "Resolve requested for %s", name);
if (flags & DNS_QUERY_NO_SEARCH) {
struct evdns_request *const req =
request_new(TYPE_A, name, flags, callback, ptr);
@@ -2606,7 +2608,7 @@ int evdns_resolve_ipv4(const char *name, int flags,
/* exported function */
int evdns_resolve_ipv6(const char *name, int flags,
evdns_callback_type callback, void *ptr) {
- log(EVDNS_LOG_DEBUG, "Resolve requested for %s", name);
+ evdns_log(EVDNS_LOG_DEBUG, "Resolve requested for %s", name);
if (flags & DNS_QUERY_NO_SEARCH) {
struct evdns_request *const req =
request_new(TYPE_AAAA, name, flags, callback, ptr);
@@ -2630,7 +2632,7 @@ int evdns_resolve_reverse(const struct in_addr *in, int flags, evdns_callback_ty
(int)(u8)((a>>8 )&0xff),
(int)(u8)((a>>16)&0xff),
(int)(u8)((a>>24)&0xff));
- log(EVDNS_LOG_DEBUG, "Resolve requested for %s (reverse)", buf);
+ evdns_log(EVDNS_LOG_DEBUG, "Resolve requested for %s (reverse)", buf);
req = request_new(TYPE_PTR, buf, flags, callback, ptr);
if (!req) return 1;
request_submit(req);
@@ -2654,7 +2656,7 @@ int evdns_resolve_reverse_ipv6(const struct in6_addr *in, int flags, evdns_callb
}
assert(cp + strlen("ip6.arpa") < buf+sizeof(buf));
memcpy(cp, "ip6.arpa", strlen("ip6.arpa")+1);
- log(EVDNS_LOG_DEBUG, "Resolve requested for %s (reverse)", buf);
+ evdns_log(EVDNS_LOG_DEBUG, "Resolve requested for %s (reverse)", buf);
req = request_new(TYPE_PTR, buf, flags, callback, ptr);
if (!req) return 1;
request_submit(req);
@@ -2870,7 +2872,7 @@ search_try_next(struct evdns_request *const req) {
if (string_num_dots(req->search_origname) < req->search_state->ndots) {
/* yep, we need to try it raw */
struct evdns_request *const newreq = request_new(req->request_type, req->search_origname, req->search_flags, req->user_callback, req->user_pointer);
- log(EVDNS_LOG_DEBUG, "Search: trying raw query %s", req->search_origname);
+ evdns_log(EVDNS_LOG_DEBUG, "Search: trying raw query %s", req->search_origname);
if (newreq) {
request_submit(newreq);
return 0;
@@ -2881,7 +2883,7 @@ search_try_next(struct evdns_request *const req) {
new_name = search_make_new(req->search_state, req->search_index, req->search_origname);
if (!new_name) return 1;
- log(EVDNS_LOG_DEBUG, "Search: now trying %s (%d)", new_name, req->search_index);
+ evdns_log(EVDNS_LOG_DEBUG, "Search: now trying %s (%d)", new_name, req->search_index);
newreq = request_new(req->request_type, new_name, req->search_flags, req->user_callback, req->user_pointer);
mm_free(new_name);
if (!newreq) return 1;
@@ -2951,7 +2953,7 @@ evdns_set_option(const char *option, const char *val, int flags)
const int ndots = strtoint(val);
if (ndots == -1) return -1;
if (!(flags & DNS_OPTION_SEARCH)) return 0;
- log(EVDNS_LOG_DEBUG, "Setting ndots to %d", ndots);
+ evdns_log(EVDNS_LOG_DEBUG, "Setting ndots to %d", ndots);
if (!global_search_state) global_search_state = search_state_new();
if (!global_search_state) return -1;
global_search_state->ndots = ndots;
@@ -2959,20 +2961,20 @@ evdns_set_option(const char *option, const char *val, int flags)
const int timeout = strtoint(val);
if (timeout == -1) return -1;
if (!(flags & DNS_OPTION_MISC)) return 0;
- log(EVDNS_LOG_DEBUG, "Setting timeout to %d", timeout);
+ evdns_log(EVDNS_LOG_DEBUG, "Setting timeout to %d", timeout);
global_timeout.tv_sec = timeout;
} else if (!strncmp(option, "max-timeouts:", 12)) {
const int maxtimeout = strtoint_clipped(val, 1, 255);
if (maxtimeout == -1) return -1;
if (!(flags & DNS_OPTION_MISC)) return 0;
- log(EVDNS_LOG_DEBUG, "Setting maximum allowed timeouts to %d",
+ evdns_log(EVDNS_LOG_DEBUG, "Setting maximum allowed timeouts to %d",
maxtimeout);
global_max_nameserver_timeout = maxtimeout;
} else if (!strncmp(option, "max-inflight:", 13)) {
const int maxinflight = strtoint_clipped(val, 1, 65000);
if (maxinflight == -1) return -1;
if (!(flags & DNS_OPTION_MISC)) return 0;
- log(EVDNS_LOG_DEBUG, "Setting maximum inflight requests to %d",
+ evdns_log(EVDNS_LOG_DEBUG, "Setting maximum inflight requests to %d",
maxinflight);
global_max_requests_inflight = maxinflight;
} else if (!strncmp(option, "attempts:", 9)) {
@@ -2980,12 +2982,12 @@ evdns_set_option(const char *option, const char *val, int flags)
if (retries == -1) return -1;
if (retries > 255) retries = 255;
if (!(flags & DNS_OPTION_MISC)) return 0;
- log(EVDNS_LOG_DEBUG, "Setting retries to %d", retries);
+ evdns_log(EVDNS_LOG_DEBUG, "Setting retries to %d", retries);
global_max_retransmits = retries;
} else if (!strncmp(option, "randomize-case:", 15)) {
int randcase = strtoint(val);
if (!(flags & DNS_OPTION_MISC)) return 0;
- log(EVDNS_LOG_DEBUG, "Setting randomize_case to %d", randcase);
+ evdns_log(EVDNS_LOG_DEBUG, "Setting randomize_case to %d", randcase);
global_randomize_case = randcase;
}
return 0;
@@ -3043,7 +3045,7 @@ evdns_resolv_conf_parse(int flags, const char *const filename) {
char *start;
int err = 0;
- log(EVDNS_LOG_DEBUG, "Parsing resolv.conf file %s", filename);
+ evdns_log(EVDNS_LOG_DEBUG, "Parsing resolv.conf file %s", filename);
fd = tor_open_cloexec(filename, O_RDONLY, 0);
if (fd < 0) {
@@ -3142,13 +3144,13 @@ load_nameservers_with_getnetworkparams(void)
GetNetworkParams_fn_t fn;
if (!(handle = load_windows_system_library(TEXT("iphlpapi.dll")))) {
- log(EVDNS_LOG_WARN, "Could not open iphlpapi.dll");
+ evdns_log(EVDNS_LOG_WARN, "Could not open iphlpapi.dll");
/* right now status = 0, doesn't that mean "good" - mikec */
status = -1;
goto done;
}
if (!(fn = (GetNetworkParams_fn_t) GetProcAddress(handle, TEXT("GetNetworkParams")))) {
- log(EVDNS_LOG_WARN, "Could not get address of function.");
+ evdns_log(EVDNS_LOG_WARN, "Could not get address of function.");
/* same as above */
status = -1;
goto done;
@@ -3169,7 +3171,7 @@ load_nameservers_with_getnetworkparams(void)
fixed = buf;
r = fn(fixed, &size);
if (r != ERROR_SUCCESS) {
- log(EVDNS_LOG_DEBUG, "fn() failed.");
+ evdns_log(EVDNS_LOG_DEBUG, "fn() failed.");
status = -1;
goto done;
}
@@ -3181,12 +3183,12 @@ load_nameservers_with_getnetworkparams(void)
while (ns) {
r = evdns_nameserver_ip_add_line(ns->IpAddress.String);
if (r) {
- log(EVDNS_LOG_DEBUG,"Could not add nameserver %s to list, "
+ evdns_log(EVDNS_LOG_DEBUG,"Could not add nameserver %s to list, "
"error: %d; status: %d",
(ns->IpAddress.String),(int)GetLastError(), r);
status = r;
} else {
- log(EVDNS_LOG_DEBUG,"Successfully added %s as nameserver",ns->IpAddress.String);
+ evdns_log(EVDNS_LOG_DEBUG,"Successfully added %s as nameserver",ns->IpAddress.String);
added_any++;
}
@@ -3194,7 +3196,7 @@ load_nameservers_with_getnetworkparams(void)
}
if (!added_any) {
- log(EVDNS_LOG_DEBUG, "No nameservers added.");
+ evdns_log(EVDNS_LOG_DEBUG, "No nameservers added.");
if (status == 0)
status = -1;
} else {
@@ -3250,10 +3252,10 @@ load_nameservers_from_registry(void)
#define TRY(k, name) \
if (!found && config_nameserver_from_reg_key(k,TEXT(name)) == 0) { \
- log(EVDNS_LOG_DEBUG,"Found nameservers in %s/%s",#k,name); \
+ evdns_log(EVDNS_LOG_DEBUG,"Found nameservers in %s/%s",#k,name); \
found = 1; \
} else if (!found) { \
- log(EVDNS_LOG_DEBUG,"Didn't find nameservers in %s/%s", \
+ evdns_log(EVDNS_LOG_DEBUG,"Didn't find nameservers in %s/%s", \
#k,#name); \
}
@@ -3262,14 +3264,14 @@ load_nameservers_from_registry(void)
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0,
KEY_READ, &nt_key) != ERROR_SUCCESS) {
- log(EVDNS_LOG_DEBUG,"Couldn't open nt key, %d",(int)GetLastError());
+ evdns_log(EVDNS_LOG_DEBUG,"Couldn't open nt key, %d",(int)GetLastError());
return -1;
}
r = RegOpenKeyEx(nt_key, TEXT("Interfaces"), 0,
KEY_QUERY_VALUE|KEY_ENUMERATE_SUB_KEYS,
&interfaces_key);
if (r != ERROR_SUCCESS) {
- log(EVDNS_LOG_DEBUG,"Couldn't open interfaces key, %d",(int)GetLastError());
+ evdns_log(EVDNS_LOG_DEBUG,"Couldn't open interfaces key, %d",(int)GetLastError());
return -1;
}
TRY(nt_key, "NameServer");
@@ -3282,7 +3284,7 @@ load_nameservers_from_registry(void)
HKEY win_key = 0;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, WIN_NS_9X_KEY, 0,
KEY_READ, &win_key) != ERROR_SUCCESS) {
- log(EVDNS_LOG_DEBUG, "Couldn't open registry key, %d", (int)GetLastError());
+ evdns_log(EVDNS_LOG_DEBUG, "Couldn't open registry key, %d", (int)GetLastError());
return -1;
}
TRY(win_key, "NameServer");
@@ -3290,7 +3292,7 @@ load_nameservers_from_registry(void)
}
if (found == 0) {
- log(EVDNS_LOG_WARN,"Didn't find any nameservers.");
+ evdns_log(EVDNS_LOG_WARN,"Didn't find any nameservers.");
}
return found ? 0 : -1;
diff --git a/src/ext/ht.h b/src/ext/ht.h
index 385aff2a9b..669a2ed929 100644
--- a/src/ext/ht.h
+++ b/src/ext/ht.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2002, Christopher Clark.
* Copyright (c) 2005-2006, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See license at end. */
/* Based on ideas by Christopher Clark and interfaces from Niels Provos. */
diff --git a/src/ext/tor_queue.h b/src/ext/tor_queue.h
index 595e4a3423..f05e48c18e 100644
--- a/src/ext/tor_queue.h
+++ b/src/ext/tor_queue.h
@@ -32,8 +32,8 @@
* @(#)queue.h 8.5 (Berkeley) 8/20/94
*/
-#ifndef _SYS_QUEUE_H_
-#define _SYS_QUEUE_H_
+#ifndef TOR_QUEUE_H_
+#define TOR_QUEUE_H_
/*
* This file defines five types of data structures: singly-linked lists,
@@ -83,78 +83,73 @@
*/
#if defined(QUEUE_MACRO_DEBUG) || (defined(_KERNEL) && defined(DIAGNOSTIC))
-#define _Q_INVALIDATE(a) (a) = ((void *)-1)
+#define TOR_Q_INVALIDATE_(a) (a) = ((void *)-1)
#else
-#define _Q_INVALIDATE(a)
+#define TOR_Q_INVALIDATE_(a)
#endif
/*
* Singly-linked List definitions.
*/
-#define SLIST_HEAD(name, type) \
+#define TOR_SLIST_HEAD(name, type) \
struct name { \
struct type *slh_first; /* first element */ \
}
-#define SLIST_HEAD_INITIALIZER(head) \
+#define TOR_SLIST_HEAD_INITIALIZER(head) \
{ NULL }
-/* XXXX This macro name conflicts with a typedef in winnt.h, so Tor
- * has to redefine it. */
#define TOR_SLIST_ENTRY(type) \
struct { \
struct type *sle_next; /* next element */ \
}
-#ifndef _WIN32
-#define SLIST_ENTRY(type) TOR_SLIST_ENTRY(type)
-#endif
/*
* Singly-linked List access methods.
*/
-#define SLIST_FIRST(head) ((head)->slh_first)
-#define SLIST_END(head) NULL
-#define SLIST_EMPTY(head) (SLIST_FIRST(head) == SLIST_END(head))
-#define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
-
-#define SLIST_FOREACH(var, head, field) \
- for((var) = SLIST_FIRST(head); \
- (var) != SLIST_END(head); \
- (var) = SLIST_NEXT(var, field))
-
-#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
- for ((var) = SLIST_FIRST(head); \
- (var) && ((tvar) = SLIST_NEXT(var, field), 1); \
+#define TOR_SLIST_FIRST(head) ((head)->slh_first)
+#define TOR_SLIST_END(head) NULL
+#define TOR_SLIST_EMPTY(head) (SLIST_FIRST(head) == TOR_SLIST_END(head))
+#define TOR_SLIST_NEXT(elm, field) ((elm)->field.sle_next)
+
+#define TOR_SLIST_FOREACH(var, head, field) \
+ for((var) = TOR_SLIST_FIRST(head); \
+ (var) != TOR_SLIST_END(head); \
+ (var) = TOR_SLIST_NEXT(var, field))
+
+#define TOR_SLIST_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = TOR_SLIST_FIRST(head); \
+ (var) && ((tvar) = TOR_SLIST_NEXT(var, field), 1); \
(var) = (tvar))
/*
* Singly-linked List functions.
*/
-#define SLIST_INIT(head) { \
- SLIST_FIRST(head) = SLIST_END(head); \
+#define TOR_SLIST_INIT(head) { \
+ TOR_SLIST_FIRST(head) = TOR_SLIST_END(head); \
}
-#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \
+#define TOR_SLIST_INSERT_AFTER(slistelm, elm, field) do { \
(elm)->field.sle_next = (slistelm)->field.sle_next; \
(slistelm)->field.sle_next = (elm); \
} while (0)
-#define SLIST_INSERT_HEAD(head, elm, field) do { \
+#define TOR_SLIST_INSERT_HEAD(head, elm, field) do { \
(elm)->field.sle_next = (head)->slh_first; \
(head)->slh_first = (elm); \
} while (0)
-#define SLIST_REMOVE_AFTER(elm, field) do { \
+#define TOR_SLIST_REMOVE_AFTER(elm, field) do { \
(elm)->field.sle_next = (elm)->field.sle_next->field.sle_next; \
} while (0)
-#define SLIST_REMOVE_HEAD(head, field) do { \
+#define TOR_SLIST_REMOVE_HEAD(head, field) do { \
(head)->slh_first = (head)->slh_first->field.sle_next; \
} while (0)
-#define SLIST_REMOVE(head, elm, type, field) do { \
+#define TOR_SLIST_REMOVE(head, elm, type, field) do { \
if ((head)->slh_first == (elm)) { \
- SLIST_REMOVE_HEAD((head), field); \
+ TOR_SLIST_REMOVE_HEAD((head), field); \
} else { \
struct type *curelm = (head)->slh_first; \
\
@@ -162,22 +157,22 @@ struct { \
curelm = curelm->field.sle_next; \
curelm->field.sle_next = \
curelm->field.sle_next->field.sle_next; \
- _Q_INVALIDATE((elm)->field.sle_next); \
+ TOR_Q_INVALIDATE_((elm)->field.sle_next); \
} \
} while (0)
/*
* List definitions.
*/
-#define LIST_HEAD(name, type) \
+#define TOR_LIST_HEAD(name, type) \
struct name { \
struct type *lh_first; /* first element */ \
}
-#define LIST_HEAD_INITIALIZER(head) \
+#define TOR_LIST_HEAD_INITIALIZER(head) \
{ NULL }
-#define LIST_ENTRY(type) \
+#define TOR_LIST_ENTRY(type) \
struct { \
struct type *le_next; /* next element */ \
struct type **le_prev; /* address of previous next element */ \
@@ -186,29 +181,29 @@ struct { \
/*
* List access methods
*/
-#define LIST_FIRST(head) ((head)->lh_first)
-#define LIST_END(head) NULL
-#define LIST_EMPTY(head) (LIST_FIRST(head) == LIST_END(head))
-#define LIST_NEXT(elm, field) ((elm)->field.le_next)
-
-#define LIST_FOREACH(var, head, field) \
- for((var) = LIST_FIRST(head); \
- (var)!= LIST_END(head); \
- (var) = LIST_NEXT(var, field))
-
-#define LIST_FOREACH_SAFE(var, head, field, tvar) \
- for ((var) = LIST_FIRST(head); \
- (var) && ((tvar) = LIST_NEXT(var, field), 1); \
+#define TOR_LIST_FIRST(head) ((head)->lh_first)
+#define TOR_LIST_END(head) NULL
+#define TOR_LIST_EMPTY(head) (TOR_LIST_FIRST(head) == TOR_LIST_END(head))
+#define TOR_LIST_NEXT(elm, field) ((elm)->field.le_next)
+
+#define TOR_LIST_FOREACH(var, head, field) \
+ for((var) = TOR_LIST_FIRST(head); \
+ (var)!= TOR_LIST_END(head); \
+ (var) = TOR_LIST_NEXT(var, field))
+
+#define TOR_LIST_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = TOR_LIST_FIRST(head); \
+ (var) && ((tvar) = TOR_LIST_NEXT(var, field), 1); \
(var) = (tvar))
/*
* List functions.
*/
-#define LIST_INIT(head) do { \
- LIST_FIRST(head) = LIST_END(head); \
+#define TOR_LIST_INIT(head) do { \
+ TOR_LIST_FIRST(head) = TOR_LIST_END(head); \
} while (0)
-#define LIST_INSERT_AFTER(listelm, elm, field) do { \
+#define TOR_LIST_INSERT_AFTER(listelm, elm, field) do { \
if (((elm)->field.le_next = (listelm)->field.le_next) != NULL) \
(listelm)->field.le_next->field.le_prev = \
&(elm)->field.le_next; \
@@ -216,52 +211,52 @@ struct { \
(elm)->field.le_prev = &(listelm)->field.le_next; \
} while (0)
-#define LIST_INSERT_BEFORE(listelm, elm, field) do { \
+#define TOR_LIST_INSERT_BEFORE(listelm, elm, field) do { \
(elm)->field.le_prev = (listelm)->field.le_prev; \
(elm)->field.le_next = (listelm); \
*(listelm)->field.le_prev = (elm); \
(listelm)->field.le_prev = &(elm)->field.le_next; \
} while (0)
-#define LIST_INSERT_HEAD(head, elm, field) do { \
+#define TOR_LIST_INSERT_HEAD(head, elm, field) do { \
if (((elm)->field.le_next = (head)->lh_first) != NULL) \
(head)->lh_first->field.le_prev = &(elm)->field.le_next;\
(head)->lh_first = (elm); \
(elm)->field.le_prev = &(head)->lh_first; \
} while (0)
-#define LIST_REMOVE(elm, field) do { \
+#define TOR_LIST_REMOVE(elm, field) do { \
if ((elm)->field.le_next != NULL) \
(elm)->field.le_next->field.le_prev = \
(elm)->field.le_prev; \
*(elm)->field.le_prev = (elm)->field.le_next; \
- _Q_INVALIDATE((elm)->field.le_prev); \
- _Q_INVALIDATE((elm)->field.le_next); \
+ TOR_Q_INVALIDATE_((elm)->field.le_prev); \
+ TOR_Q_INVALIDATE_((elm)->field.le_next); \
} while (0)
-#define LIST_REPLACE(elm, elm2, field) do { \
+#define TOR_LIST_REPLACE(elm, elm2, field) do { \
if (((elm2)->field.le_next = (elm)->field.le_next) != NULL) \
(elm2)->field.le_next->field.le_prev = \
&(elm2)->field.le_next; \
(elm2)->field.le_prev = (elm)->field.le_prev; \
*(elm2)->field.le_prev = (elm2); \
- _Q_INVALIDATE((elm)->field.le_prev); \
- _Q_INVALIDATE((elm)->field.le_next); \
+ TOR_Q_INVALIDATE_((elm)->field.le_prev); \
+ TOR_Q_INVALIDATE_((elm)->field.le_next); \
} while (0)
/*
* Simple queue definitions.
*/
-#define SIMPLEQ_HEAD(name, type) \
+#define TOR_SIMPLEQ_HEAD(name, type) \
struct name { \
struct type *sqh_first; /* first element */ \
struct type **sqh_last; /* addr of last next element */ \
}
-#define SIMPLEQ_HEAD_INITIALIZER(head) \
+#define TOR_SIMPLEQ_HEAD_INITIALIZER(head) \
{ NULL, &(head).sqh_first }
-#define SIMPLEQ_ENTRY(type) \
+#define TOR_SIMPLEQ_ENTRY(type) \
struct { \
struct type *sqe_next; /* next element */ \
}
@@ -269,53 +264,53 @@ struct { \
/*
* Simple queue access methods.
*/
-#define SIMPLEQ_FIRST(head) ((head)->sqh_first)
-#define SIMPLEQ_END(head) NULL
-#define SIMPLEQ_EMPTY(head) (SIMPLEQ_FIRST(head) == SIMPLEQ_END(head))
-#define SIMPLEQ_NEXT(elm, field) ((elm)->field.sqe_next)
-
-#define SIMPLEQ_FOREACH(var, head, field) \
- for((var) = SIMPLEQ_FIRST(head); \
- (var) != SIMPLEQ_END(head); \
- (var) = SIMPLEQ_NEXT(var, field))
-
-#define SIMPLEQ_FOREACH_SAFE(var, head, field, tvar) \
- for ((var) = SIMPLEQ_FIRST(head); \
- (var) && ((tvar) = SIMPLEQ_NEXT(var, field), 1); \
+#define TOR_SIMPLEQ_FIRST(head) ((head)->sqh_first)
+#define TOR_SIMPLEQ_END(head) NULL
+#define TOR_SIMPLEQ_EMPTY(head) (TOR_SIMPLEQ_FIRST(head) == TOR_SIMPLEQ_END(head))
+#define TOR_SIMPLEQ_NEXT(elm, field) ((elm)->field.sqe_next)
+
+#define TOR_SIMPLEQ_FOREACH(var, head, field) \
+ for((var) = TOR_SIMPLEQ_FIRST(head); \
+ (var) != TOR_SIMPLEQ_END(head); \
+ (var) = TOR_SIMPLEQ_NEXT(var, field))
+
+#define TOR_SIMPLEQ_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = TOR_SIMPLEQ_FIRST(head); \
+ (var) && ((tvar) = TOR_SIMPLEQ_NEXT(var, field), 1); \
(var) = (tvar))
/*
* Simple queue functions.
*/
-#define SIMPLEQ_INIT(head) do { \
+#define TOR_SIMPLEQ_INIT(head) do { \
(head)->sqh_first = NULL; \
(head)->sqh_last = &(head)->sqh_first; \
} while (0)
-#define SIMPLEQ_INSERT_HEAD(head, elm, field) do { \
+#define TOR_SIMPLEQ_INSERT_HEAD(head, elm, field) do { \
if (((elm)->field.sqe_next = (head)->sqh_first) == NULL) \
(head)->sqh_last = &(elm)->field.sqe_next; \
(head)->sqh_first = (elm); \
} while (0)
-#define SIMPLEQ_INSERT_TAIL(head, elm, field) do { \
+#define TOR_SIMPLEQ_INSERT_TAIL(head, elm, field) do { \
(elm)->field.sqe_next = NULL; \
*(head)->sqh_last = (elm); \
(head)->sqh_last = &(elm)->field.sqe_next; \
} while (0)
-#define SIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
+#define TOR_SIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
if (((elm)->field.sqe_next = (listelm)->field.sqe_next) == NULL)\
(head)->sqh_last = &(elm)->field.sqe_next; \
(listelm)->field.sqe_next = (elm); \
} while (0)
-#define SIMPLEQ_REMOVE_HEAD(head, field) do { \
+#define TOR_SIMPLEQ_REMOVE_HEAD(head, field) do { \
if (((head)->sqh_first = (head)->sqh_first->field.sqe_next) == NULL) \
(head)->sqh_last = &(head)->sqh_first; \
} while (0)
-#define SIMPLEQ_REMOVE_AFTER(head, elm, field) do { \
+#define TOR_SIMPLEQ_REMOVE_AFTER(head, elm, field) do { \
if (((elm)->field.sqe_next = (elm)->field.sqe_next->field.sqe_next) \
== NULL) \
(head)->sqh_last = &(elm)->field.sqe_next; \
@@ -324,16 +319,16 @@ struct { \
/*
* Tail queue definitions.
*/
-#define TAILQ_HEAD(name, type) \
+#define TOR_TAILQ_HEAD(name, type) \
struct name { \
struct type *tqh_first; /* first element */ \
struct type **tqh_last; /* addr of last next element */ \
}
-#define TAILQ_HEAD_INITIALIZER(head) \
+#define TOR_TAILQ_HEAD_INITIALIZER(head) \
{ NULL, &(head).tqh_first }
-#define TAILQ_ENTRY(type) \
+#define TOR_TAILQ_ENTRY(type) \
struct { \
struct type *tqe_next; /* next element */ \
struct type **tqe_prev; /* address of previous next element */ \
@@ -342,49 +337,49 @@ struct { \
/*
* tail queue access methods
*/
-#define TAILQ_FIRST(head) ((head)->tqh_first)
-#define TAILQ_END(head) NULL
-#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
-#define TAILQ_LAST(head, headname) \
+#define TOR_TAILQ_FIRST(head) ((head)->tqh_first)
+#define TOR_TAILQ_END(head) NULL
+#define TOR_TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
+#define TOR_TAILQ_LAST(head, headname) \
(*(((struct headname *)((head)->tqh_last))->tqh_last))
/* XXX */
-#define TAILQ_PREV(elm, headname, field) \
+#define TOR_TAILQ_PREV(elm, headname, field) \
(*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
-#define TAILQ_EMPTY(head) \
- (TAILQ_FIRST(head) == TAILQ_END(head))
-
-#define TAILQ_FOREACH(var, head, field) \
- for((var) = TAILQ_FIRST(head); \
- (var) != TAILQ_END(head); \
- (var) = TAILQ_NEXT(var, field))
-
-#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
- for ((var) = TAILQ_FIRST(head); \
- (var) != TAILQ_END(head) && \
- ((tvar) = TAILQ_NEXT(var, field), 1); \
+#define TOR_TAILQ_EMPTY(head) \
+ (TOR_TAILQ_FIRST(head) == TOR_TAILQ_END(head))
+
+#define TOR_TAILQ_FOREACH(var, head, field) \
+ for((var) = TOR_TAILQ_FIRST(head); \
+ (var) != TOR_TAILQ_END(head); \
+ (var) = TOR_TAILQ_NEXT(var, field))
+
+#define TOR_TAILQ_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = TOR_TAILQ_FIRST(head); \
+ (var) != TOR_TAILQ_END(head) && \
+ ((tvar) = TOR_TAILQ_NEXT(var, field), 1); \
(var) = (tvar))
-#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
- for((var) = TAILQ_LAST(head, headname); \
- (var) != TAILQ_END(head); \
- (var) = TAILQ_PREV(var, headname, field))
+#define TOR_TAILQ_FOREACH_REVERSE(var, head, headname, field) \
+ for((var) = TOR_TAILQ_LAST(head, headname); \
+ (var) != TOR_TAILQ_END(head); \
+ (var) = TOR_TAILQ_PREV(var, headname, field))
-#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
- for ((var) = TAILQ_LAST(head, headname); \
- (var) != TAILQ_END(head) && \
- ((tvar) = TAILQ_PREV(var, headname, field), 1); \
+#define TOR_TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
+ for ((var) = TOR_TAILQ_LAST(head, headname); \
+ (var) != TOR_TAILQ_END(head) && \
+ ((tvar) = TOR_TAILQ_PREV(var, headname, field), 1); \
(var) = (tvar))
/*
* Tail queue functions.
*/
-#define TAILQ_INIT(head) do { \
+#define TOR_TAILQ_INIT(head) do { \
(head)->tqh_first = NULL; \
(head)->tqh_last = &(head)->tqh_first; \
} while (0)
-#define TAILQ_INSERT_HEAD(head, elm, field) do { \
+#define TOR_TAILQ_INSERT_HEAD(head, elm, field) do { \
if (((elm)->field.tqe_next = (head)->tqh_first) != NULL) \
(head)->tqh_first->field.tqe_prev = \
&(elm)->field.tqe_next; \
@@ -394,14 +389,14 @@ struct { \
(elm)->field.tqe_prev = &(head)->tqh_first; \
} while (0)
-#define TAILQ_INSERT_TAIL(head, elm, field) do { \
+#define TOR_TAILQ_INSERT_TAIL(head, elm, field) do { \
(elm)->field.tqe_next = NULL; \
(elm)->field.tqe_prev = (head)->tqh_last; \
*(head)->tqh_last = (elm); \
(head)->tqh_last = &(elm)->field.tqe_next; \
} while (0)
-#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
+#define TOR_TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\
(elm)->field.tqe_next->field.tqe_prev = \
&(elm)->field.tqe_next; \
@@ -411,25 +406,25 @@ struct { \
(elm)->field.tqe_prev = &(listelm)->field.tqe_next; \
} while (0)
-#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \
+#define TOR_TAILQ_INSERT_BEFORE(listelm, elm, field) do { \
(elm)->field.tqe_prev = (listelm)->field.tqe_prev; \
(elm)->field.tqe_next = (listelm); \
*(listelm)->field.tqe_prev = (elm); \
(listelm)->field.tqe_prev = &(elm)->field.tqe_next; \
} while (0)
-#define TAILQ_REMOVE(head, elm, field) do { \
+#define TOR_TAILQ_REMOVE(head, elm, field) do { \
if (((elm)->field.tqe_next) != NULL) \
(elm)->field.tqe_next->field.tqe_prev = \
(elm)->field.tqe_prev; \
else \
(head)->tqh_last = (elm)->field.tqe_prev; \
*(elm)->field.tqe_prev = (elm)->field.tqe_next; \
- _Q_INVALIDATE((elm)->field.tqe_prev); \
- _Q_INVALIDATE((elm)->field.tqe_next); \
+ TOR_Q_INVALIDATE_((elm)->field.tqe_prev); \
+ TOR_Q_INVALIDATE_((elm)->field.tqe_next); \
} while (0)
-#define TAILQ_REPLACE(head, elm, elm2, field) do { \
+#define TOR_TAILQ_REPLACE(head, elm, elm2, field) do { \
if (((elm2)->field.tqe_next = (elm)->field.tqe_next) != NULL) \
(elm2)->field.tqe_next->field.tqe_prev = \
&(elm2)->field.tqe_next; \
@@ -437,23 +432,23 @@ struct { \
(head)->tqh_last = &(elm2)->field.tqe_next; \
(elm2)->field.tqe_prev = (elm)->field.tqe_prev; \
*(elm2)->field.tqe_prev = (elm2); \
- _Q_INVALIDATE((elm)->field.tqe_prev); \
- _Q_INVALIDATE((elm)->field.tqe_next); \
+ TOR_Q_INVALIDATE_((elm)->field.tqe_prev); \
+ TOR_Q_INVALIDATE_((elm)->field.tqe_next); \
} while (0)
/*
* Circular queue definitions.
*/
-#define CIRCLEQ_HEAD(name, type) \
+#define TOR_CIRCLEQ_HEAD(name, type) \
struct name { \
struct type *cqh_first; /* first element */ \
struct type *cqh_last; /* last element */ \
}
-#define CIRCLEQ_HEAD_INITIALIZER(head) \
- { CIRCLEQ_END(&head), CIRCLEQ_END(&head) }
+#define TOR_CIRCLEQ_HEAD_INITIALIZER(head) \
+ { TOR_CIRCLEQ_END(&head), TOR_CIRCLEQ_END(&head) }
-#define CIRCLEQ_ENTRY(type) \
+#define TOR_CIRCLEQ_ENTRY(type) \
struct { \
struct type *cqe_next; /* next element */ \
struct type *cqe_prev; /* previous element */ \
@@ -462,112 +457,112 @@ struct { \
/*
* Circular queue access methods
*/
-#define CIRCLEQ_FIRST(head) ((head)->cqh_first)
-#define CIRCLEQ_LAST(head) ((head)->cqh_last)
-#define CIRCLEQ_END(head) ((void *)(head))
-#define CIRCLEQ_NEXT(elm, field) ((elm)->field.cqe_next)
-#define CIRCLEQ_PREV(elm, field) ((elm)->field.cqe_prev)
-#define CIRCLEQ_EMPTY(head) \
- (CIRCLEQ_FIRST(head) == CIRCLEQ_END(head))
-
-#define CIRCLEQ_FOREACH(var, head, field) \
- for((var) = CIRCLEQ_FIRST(head); \
- (var) != CIRCLEQ_END(head); \
- (var) = CIRCLEQ_NEXT(var, field))
-
-#define CIRCLEQ_FOREACH_SAFE(var, head, field, tvar) \
- for ((var) = CIRCLEQ_FIRST(head); \
- (var) != CIRCLEQ_END(head) && \
- ((tvar) = CIRCLEQ_NEXT(var, field), 1); \
+#define TOR_CIRCLEQ_FIRST(head) ((head)->cqh_first)
+#define TOR_CIRCLEQ_LAST(head) ((head)->cqh_last)
+#define TOR_CIRCLEQ_END(head) ((void *)(head))
+#define TOR_CIRCLEQ_NEXT(elm, field) ((elm)->field.cqe_next)
+#define TOR_CIRCLEQ_PREV(elm, field) ((elm)->field.cqe_prev)
+#define TOR_CIRCLEQ_EMPTY(head) \
+ (TOR_CIRCLEQ_FIRST(head) == TOR_CIRCLEQ_END(head))
+
+#define TOR_CIRCLEQ_FOREACH(var, head, field) \
+ for((var) = TOR_CIRCLEQ_FIRST(head); \
+ (var) != TOR_CIRCLEQ_END(head); \
+ (var) = TOR_CIRCLEQ_NEXT(var, field))
+
+#define TOR_CIRCLEQ_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = TOR_CIRCLEQ_FIRST(head); \
+ (var) != TOR_CIRCLEQ_END(head) && \
+ ((tvar) = TOR_CIRCLEQ_NEXT(var, field), 1); \
(var) = (tvar))
-#define CIRCLEQ_FOREACH_REVERSE(var, head, field) \
- for((var) = CIRCLEQ_LAST(head); \
- (var) != CIRCLEQ_END(head); \
- (var) = CIRCLEQ_PREV(var, field))
+#define TOR_CIRCLEQ_FOREACH_REVERSE(var, head, field) \
+ for((var) = TOR_CIRCLEQ_LAST(head); \
+ (var) != TOR_CIRCLEQ_END(head); \
+ (var) = TOR_CIRCLEQ_PREV(var, field))
-#define CIRCLEQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
- for ((var) = CIRCLEQ_LAST(head, headname); \
- (var) != CIRCLEQ_END(head) && \
- ((tvar) = CIRCLEQ_PREV(var, headname, field), 1); \
+#define TOR_CIRCLEQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
+ for ((var) = TOR_CIRCLEQ_LAST(head, headname); \
+ (var) != TOR_CIRCLEQ_END(head) && \
+ ((tvar) = TOR_CIRCLEQ_PREV(var, headname, field), 1); \
(var) = (tvar))
/*
* Circular queue functions.
*/
-#define CIRCLEQ_INIT(head) do { \
- (head)->cqh_first = CIRCLEQ_END(head); \
- (head)->cqh_last = CIRCLEQ_END(head); \
+#define TOR_CIRCLEQ_INIT(head) do { \
+ (head)->cqh_first = TOR_CIRCLEQ_END(head); \
+ (head)->cqh_last = TOR_CIRCLEQ_END(head); \
} while (0)
-#define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
+#define TOR_CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
(elm)->field.cqe_next = (listelm)->field.cqe_next; \
(elm)->field.cqe_prev = (listelm); \
- if ((listelm)->field.cqe_next == CIRCLEQ_END(head)) \
+ if ((listelm)->field.cqe_next == TOR_CIRCLEQ_END(head)) \
(head)->cqh_last = (elm); \
else \
(listelm)->field.cqe_next->field.cqe_prev = (elm); \
(listelm)->field.cqe_next = (elm); \
} while (0)
-#define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do { \
+#define TOR_CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do { \
(elm)->field.cqe_next = (listelm); \
(elm)->field.cqe_prev = (listelm)->field.cqe_prev; \
- if ((listelm)->field.cqe_prev == CIRCLEQ_END(head)) \
+ if ((listelm)->field.cqe_prev == TOR_CIRCLEQ_END(head)) \
(head)->cqh_first = (elm); \
else \
(listelm)->field.cqe_prev->field.cqe_next = (elm); \
(listelm)->field.cqe_prev = (elm); \
} while (0)
-#define CIRCLEQ_INSERT_HEAD(head, elm, field) do { \
+#define TOR_CIRCLEQ_INSERT_HEAD(head, elm, field) do { \
(elm)->field.cqe_next = (head)->cqh_first; \
- (elm)->field.cqe_prev = CIRCLEQ_END(head); \
- if ((head)->cqh_last == CIRCLEQ_END(head)) \
+ (elm)->field.cqe_prev = TOR_CIRCLEQ_END(head); \
+ if ((head)->cqh_last == TOR_CIRCLEQ_END(head)) \
(head)->cqh_last = (elm); \
else \
(head)->cqh_first->field.cqe_prev = (elm); \
(head)->cqh_first = (elm); \
} while (0)
-#define CIRCLEQ_INSERT_TAIL(head, elm, field) do { \
- (elm)->field.cqe_next = CIRCLEQ_END(head); \
+#define TOR_CIRCLEQ_INSERT_TAIL(head, elm, field) do { \
+ (elm)->field.cqe_next = TOR_CIRCLEQ_END(head); \
(elm)->field.cqe_prev = (head)->cqh_last; \
- if ((head)->cqh_first == CIRCLEQ_END(head)) \
+ if ((head)->cqh_first == TOR_CIRCLEQ_END(head)) \
(head)->cqh_first = (elm); \
else \
(head)->cqh_last->field.cqe_next = (elm); \
(head)->cqh_last = (elm); \
} while (0)
-#define CIRCLEQ_REMOVE(head, elm, field) do { \
- if ((elm)->field.cqe_next == CIRCLEQ_END(head)) \
+#define TOR_CIRCLEQ_REMOVE(head, elm, field) do { \
+ if ((elm)->field.cqe_next == TOR_CIRCLEQ_END(head)) \
(head)->cqh_last = (elm)->field.cqe_prev; \
else \
(elm)->field.cqe_next->field.cqe_prev = \
(elm)->field.cqe_prev; \
- if ((elm)->field.cqe_prev == CIRCLEQ_END(head)) \
+ if ((elm)->field.cqe_prev == TOR_CIRCLEQ_END(head)) \
(head)->cqh_first = (elm)->field.cqe_next; \
else \
(elm)->field.cqe_prev->field.cqe_next = \
(elm)->field.cqe_next; \
- _Q_INVALIDATE((elm)->field.cqe_prev); \
- _Q_INVALIDATE((elm)->field.cqe_next); \
+ TOR_Q_INVALIDATE_((elm)->field.cqe_prev); \
+ TOR_Q_INVALIDATE_((elm)->field.cqe_next); \
} while (0)
-#define CIRCLEQ_REPLACE(head, elm, elm2, field) do { \
+#define TOR_CIRCLEQ_REPLACE(head, elm, elm2, field) do { \
if (((elm2)->field.cqe_next = (elm)->field.cqe_next) == \
- CIRCLEQ_END(head)) \
+ TOR_CIRCLEQ_END(head)) \
(head).cqh_last = (elm2); \
else \
(elm2)->field.cqe_next->field.cqe_prev = (elm2); \
if (((elm2)->field.cqe_prev = (elm)->field.cqe_prev) == \
- CIRCLEQ_END(head)) \
+ TOR_CIRCLEQ_END(head)) \
(head).cqh_first = (elm2); \
else \
(elm2)->field.cqe_prev->field.cqe_next = (elm2); \
- _Q_INVALIDATE((elm)->field.cqe_prev); \
- _Q_INVALIDATE((elm)->field.cqe_next); \
+ TOR_Q_INVALIDATE_((elm)->field.cqe_prev); \
+ TOR_Q_INVALIDATE_((elm)->field.cqe_next); \
} while (0)
#endif /* !_SYS_QUEUE_H_ */
diff --git a/src/or/Makefile.nmake b/src/or/Makefile.nmake
index 677618e74f..d67123a9a6 100644
--- a/src/or/Makefile.nmake
+++ b/src/or/Makefile.nmake
@@ -1,28 +1,74 @@
all: tor.exe
-CFLAGS = /I ..\win32 /I ..\..\..\build-alpha\include /I ..\common
+CFLAGS = /I ..\win32 /I ..\..\..\build-alpha\include /I ..\common \
+ /I ..\ext
-LIBS = ..\..\..\build-alpha\lib\libevent.a \
- ..\..\..\build-alpha\lib\libcrypto.a \
- ..\..\..\build-alpha\lib\libssl.a \
- ..\..\..\build-alpha\lib\libz.a \
- ws2_32.lib advapi32.lib shell32.lib
+LIBS = ..\..\..\build-alpha\lib\libevent.lib \
+ ..\..\..\build-alpha\lib\libcrypto.lib \
+ ..\..\..\build-alpha\lib\libssl.lib \
+ ..\..\..\build-alpha\lib\libz.lib \
+ ws2_32.lib advapi32.lib shell32.lib \
+ crypt32.lib gdi32.lib user32.lib
-LIBTOR_OBJECTS = buffers.obj channel.obj channeltls.obj circuitbuild.obj \
- circuitlist.obj circuitmux.obj circuitmux_ewma.obj circuituse.obj \
- command.obj config.obj connection.obj connection_edge.obj \
- connection_or.obj control.obj cpuworker.obj directory.obj \
- dirserv.obj dirvote.obj dns.obj dnsserv.obj geoip.obj hibernate.obj \
- main.obj microdesc.obj networkstatus.obj nodelist.obj onion.obj \
- policies.obj reasons.obj relay.obj rendclient.obj rendcommon.obj \
- rendmid.obj rendservice.obj rephist.obj router.obj routerlist.obj \
- routerparse.obj status.obj config_codedigest.obj ntmain.obj
+LIBTOR_OBJECTS = \
+ addressmap.obj \
+ buffers.obj \
+ channel.obj \
+ channeltls.obj \
+ circuitbuild.obj \
+ circuitlist.obj \
+ circuitmux.obj \
+ circuitmux_ewma.obj \
+ circuitstats.obj \
+ circuituse.obj \
+ command.obj \
+ config.obj \
+ config_codedigest.obj \
+ confparse.obj \
+ connection.obj \
+ connection_edge.obj \
+ connection_or.obj \
+ control.obj \
+ cpuworker.obj \
+ directory.obj \
+ dirserv.obj \
+ dirvote.obj \
+ dns.obj \
+ dnsserv.obj \
+ entrynodes.obj \
+ geoip.obj \
+ hibernate.obj \
+ main.obj \
+ microdesc.obj \
+ networkstatus.obj \
+ nodelist.obj \
+ ntmain.obj \
+ onion.obj \
+ onion_fast.obj \
+ onion_ntor.obj \
+ onion_tap.obj \
+ policies.obj \
+ reasons.obj \
+ relay.obj \
+ rendclient.obj \
+ rendcommon.obj \
+ rendmid.obj \
+ rendservice.obj \
+ rephist.obj \
+ replaycache.obj \
+ router.obj \
+ routerlist.obj \
+ routerparse.obj \
+ routerset.obj \
+ statefile.obj \
+ status.obj \
+ transports.obj
libtor.lib: $(LIBTOR_OBJECTS)
- lib $(LIBTOR_OBJECTS) /out:libtor.lib
+ lib $(LIBTOR_OBJECTS) /out:$@
tor.exe: libtor.lib tor_main.obj
- $(CC) $(CFLAGS) $(LIBS) libtor.lib ..\common\*.lib tor_main.obj
+ $(CC) $(CFLAGS) $(LIBS) libtor.lib ..\common\*.lib tor_main.obj /Fe$@
clean:
del $(LIBTOR_OBJECTS) *.lib tor.exe
diff --git a/src/or/addressmap.c b/src/or/addressmap.c
index f4c31295a8..826eb301db 100644
--- a/src/or/addressmap.c
+++ b/src/or/addressmap.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define ADDRESSMAP_PRIVATE
@@ -45,7 +45,7 @@
typedef struct {
char *new_address;
time_t expires;
- addressmap_entry_source_t source:3;
+ ENUM_BF(addressmap_entry_source_t) source:3;
unsigned src_wildcard:1;
unsigned dst_wildcard:1;
short num_resolve_failures;
diff --git a/src/or/addressmap.h b/src/or/addressmap.h
index 3f1c44571f..40210ee990 100644
--- a/src/or/addressmap.h
+++ b/src/or/addressmap.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_ADDRESSMAP_H
diff --git a/src/or/buffers.c b/src/or/buffers.c
index 4d4c879627..73c25579d6 100644
--- a/src/or/buffers.c
+++ b/src/or/buffers.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -335,11 +335,11 @@ buf_dump_freelist_sizes(int severity)
{
#ifdef ENABLE_BUF_FREELISTS
int i;
- log(severity, LD_MM, "====== Buffer freelists:");
+ tor_log(severity, LD_MM, "====== Buffer freelists:");
for (i = 0; freelists[i].alloc_size; ++i) {
uint64_t total = ((uint64_t)freelists[i].cur_length) *
freelists[i].alloc_size;
- log(severity, LD_MM,
+ tor_log(severity, LD_MM,
U64_FORMAT" bytes in %d %d-byte chunks ["U64_FORMAT
" misses; "U64_FORMAT" frees; "U64_FORMAT" hits]",
U64_PRINTF_ARG(total),
@@ -348,7 +348,7 @@ buf_dump_freelist_sizes(int severity)
U64_PRINTF_ARG(freelists[i].n_free),
U64_PRINTF_ARG(freelists[i].n_hit));
}
- log(severity, LD_MM, U64_FORMAT" allocations in non-freelist sizes",
+ tor_log(severity, LD_MM, U64_FORMAT" allocations in non-freelist sizes",
U64_PRINTF_ARG(n_freelist_miss));
#else
(void)severity;
diff --git a/src/or/buffers.h b/src/or/buffers.h
index f31d2910f7..c947f0ba98 100644
--- a/src/or/buffers.h
+++ b/src/or/buffers.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/channel.c b/src/or/channel.c
index 625d957811..104b018cf4 100644
--- a/src/or/channel.c
+++ b/src/or/channel.c
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -33,7 +33,7 @@
typedef struct cell_queue_entry_s cell_queue_entry_t;
struct cell_queue_entry_s {
- SIMPLEQ_ENTRY(cell_queue_entry_s) next;
+ TOR_SIMPLEQ_ENTRY(cell_queue_entry_s) next;
enum {
CELL_QUEUE_FIXED,
CELL_QUEUE_VAR,
@@ -89,7 +89,7 @@ HT_HEAD(channel_idmap, channel_idmap_entry_s) channel_identity_map =
typedef struct channel_idmap_entry_s {
HT_ENTRY(channel_idmap_entry_s) node;
uint8_t digest[DIGEST_LEN];
- LIST_HEAD(channel_list_s, channel_s) channel_list;
+ TOR_LIST_HEAD(channel_list_s, channel_s) channel_list;
} channel_idmap_entry_t;
static INLINE unsigned
@@ -554,10 +554,10 @@ channel_add_to_digest_map(channel_t *chan)
if (! ent) {
ent = tor_malloc(sizeof(channel_idmap_entry_t));
memcpy(ent->digest, chan->identity_digest, DIGEST_LEN);
- LIST_INIT(&ent->channel_list);
+ TOR_LIST_INIT(&ent->channel_list);
HT_INSERT(channel_idmap, &channel_identity_map, ent);
}
- LIST_INSERT_HEAD(&ent->channel_list, chan, next_with_same_id);
+ TOR_LIST_INSERT_HEAD(&ent->channel_list, chan, next_with_same_id);
log_debug(LD_CHANNEL,
"Added channel %p (global ID " U64_FORMAT ") "
@@ -612,7 +612,7 @@ channel_remove_from_digest_map(channel_t *chan)
#endif
/* Pull it out of its list, wherever that list is */
- LIST_REMOVE(chan, next_with_same_id);
+ TOR_LIST_REMOVE(chan, next_with_same_id);
memcpy(search.digest, chan->identity_digest, DIGEST_LEN);
ent = HT_FIND(channel_idmap, &channel_identity_map, &search);
@@ -621,7 +621,7 @@ channel_remove_from_digest_map(channel_t *chan)
if (ent) {
/* Okay, it's here */
- if (LIST_EMPTY(&ent->channel_list)) {
+ if (TOR_LIST_EMPTY(&ent->channel_list)) {
HT_REMOVE(channel_idmap, &channel_identity_map, ent);
tor_free(ent);
}
@@ -691,7 +691,7 @@ channel_find_by_remote_digest(const char *identity_digest)
memcpy(search.digest, identity_digest, DIGEST_LEN);
ent = HT_FIND(channel_idmap, &channel_identity_map, &search);
if (ent) {
- rv = LIST_FIRST(&ent->channel_list);
+ rv = TOR_LIST_FIRST(&ent->channel_list);
}
return rv;
@@ -709,7 +709,7 @@ channel_next_with_digest(channel_t *chan)
{
tor_assert(chan);
- return LIST_NEXT(chan, next_with_same_id);
+ return TOR_LIST_NEXT(chan, next_with_same_id);
}
/**
@@ -735,8 +735,8 @@ channel_init(channel_t *chan)
chan->next_circ_id = crypto_rand_int(1 << 15);
/* Initialize queues. */
- SIMPLEQ_INIT(&chan->incoming_queue);
- SIMPLEQ_INIT(&chan->outgoing_queue);
+ TOR_SIMPLEQ_INIT(&chan->incoming_queue);
+ TOR_SIMPLEQ_INIT(&chan->outgoing_queue);
/* Initialize list entries. */
memset(&chan->next_with_same_id, 0, sizeof(chan->next_with_same_id));
@@ -879,16 +879,16 @@ channel_force_free(channel_t *chan)
}
/* We might still have a cell queue; kill it */
- SIMPLEQ_FOREACH_SAFE(cell, &chan->incoming_queue, next, cell_tmp) {
+ TOR_SIMPLEQ_FOREACH_SAFE(cell, &chan->incoming_queue, next, cell_tmp) {
cell_queue_entry_free(cell, 0);
}
- SIMPLEQ_INIT(&chan->incoming_queue);
+ TOR_SIMPLEQ_INIT(&chan->incoming_queue);
/* Outgoing cell queue is similar, but we can have to free packed cells */
- SIMPLEQ_FOREACH_SAFE(cell, &chan->outgoing_queue, next, cell_tmp) {
+ TOR_SIMPLEQ_FOREACH_SAFE(cell, &chan->outgoing_queue, next, cell_tmp) {
cell_queue_entry_free(cell, 0);
}
- SIMPLEQ_INIT(&chan->outgoing_queue);
+ TOR_SIMPLEQ_INIT(&chan->outgoing_queue);
tor_free(chan);
}
@@ -1051,7 +1051,7 @@ channel_set_cell_handlers(channel_t *chan,
chan->var_cell_handler = var_cell_handler;
/* Re-run the queue if we have one and there's any reason to */
- if (! SIMPLEQ_EMPTY(&chan->incoming_queue) &&
+ if (! TOR_SIMPLEQ_EMPTY(&chan->incoming_queue) &&
try_again &&
(chan->cell_handler ||
chan->var_cell_handler)) channel_process_cells(chan);
@@ -1686,7 +1686,7 @@ channel_write_cell_queue_entry(channel_t *chan, cell_queue_entry_t *q)
}
/* Can we send it right out? If so, try */
- if (SIMPLEQ_EMPTY(&chan->outgoing_queue) &&
+ if (TOR_SIMPLEQ_EMPTY(&chan->outgoing_queue) &&
chan->state == CHANNEL_STATE_OPEN) {
/* Pick the right write function for this cell type and save the result */
switch (q->type) {
@@ -1728,7 +1728,7 @@ channel_write_cell_queue_entry(channel_t *chan, cell_queue_entry_t *q)
* used the stack.
*/
tmp = cell_queue_entry_dup(q);
- SIMPLEQ_INSERT_TAIL(&chan->outgoing_queue, tmp, next);
+ TOR_SIMPLEQ_INSERT_TAIL(&chan->outgoing_queue, tmp, next);
/* Try to process the queue? */
if (chan->state == CHANNEL_STATE_OPEN) channel_flush_cells(chan);
}
@@ -1914,15 +1914,15 @@ channel_change_state(channel_t *chan, channel_state_t to_state)
channel_do_open_actions(chan);
/* Check for queued cells to process */
- if (! SIMPLEQ_EMPTY(&chan->incoming_queue))
+ if (! TOR_SIMPLEQ_EMPTY(&chan->incoming_queue))
channel_process_cells(chan);
- if (! SIMPLEQ_EMPTY(&chan->outgoing_queue))
+ if (! TOR_SIMPLEQ_EMPTY(&chan->outgoing_queue))
channel_flush_cells(chan);
} else if (to_state == CHANNEL_STATE_CLOSED ||
to_state == CHANNEL_STATE_ERROR) {
/* Assert that all queues are empty */
- tor_assert(SIMPLEQ_EMPTY(&chan->incoming_queue));
- tor_assert(SIMPLEQ_EMPTY(&chan->outgoing_queue));
+ tor_assert(TOR_SIMPLEQ_EMPTY(&chan->incoming_queue));
+ tor_assert(TOR_SIMPLEQ_EMPTY(&chan->outgoing_queue));
}
}
@@ -2096,7 +2096,7 @@ channel_flush_some_cells_from_outgoing_queue(channel_t *chan,
/* If we aren't in CHANNEL_STATE_OPEN, nothing goes through */
if (chan->state == CHANNEL_STATE_OPEN) {
while ((unlimited || num_cells > flushed) &&
- NULL != (q = SIMPLEQ_FIRST(&chan->outgoing_queue))) {
+ NULL != (q = TOR_SIMPLEQ_FIRST(&chan->outgoing_queue))) {
if (1) {
/*
@@ -2185,7 +2185,7 @@ channel_flush_some_cells_from_outgoing_queue(channel_t *chan,
}
/* if q got NULLed out, we used it and should remove the queue entry */
- if (!q) SIMPLEQ_REMOVE_HEAD(&chan->outgoing_queue, next);
+ if (!q) TOR_SIMPLEQ_REMOVE_HEAD(&chan->outgoing_queue, next);
/* No cell removed from list, so we can't go on any further */
else break;
}
@@ -2193,7 +2193,7 @@ channel_flush_some_cells_from_outgoing_queue(channel_t *chan,
}
/* Did we drain the queue? */
- if (SIMPLEQ_EMPTY(&chan->outgoing_queue)) {
+ if (TOR_SIMPLEQ_EMPTY(&chan->outgoing_queue)) {
channel_timestamp_drained(chan);
}
@@ -2227,7 +2227,7 @@ channel_more_to_flush(channel_t *chan)
tor_assert(chan);
/* Check if we have any queued */
- if (! SIMPLEQ_EMPTY(&chan->incoming_queue))
+ if (! TOR_SIMPLEQ_EMPTY(&chan->incoming_queue))
return 1;
/* Check if any circuits would like to queue some */
@@ -2435,13 +2435,13 @@ channel_process_cells(channel_t *chan)
if (!(chan->cell_handler ||
chan->var_cell_handler)) return;
/* Nothing we can do if we have no cells */
- if (SIMPLEQ_EMPTY(&chan->incoming_queue)) return;
+ if (TOR_SIMPLEQ_EMPTY(&chan->incoming_queue)) return;
/*
* Process cells until we're done or find one we have no current handler
* for.
*/
- while (NULL != (q = SIMPLEQ_FIRST(&chan->incoming_queue))) {
+ while (NULL != (q = TOR_SIMPLEQ_FIRST(&chan->incoming_queue))) {
tor_assert(q);
tor_assert(q->type == CELL_QUEUE_FIXED ||
q->type == CELL_QUEUE_VAR);
@@ -2449,7 +2449,7 @@ channel_process_cells(channel_t *chan)
if (q->type == CELL_QUEUE_FIXED &&
chan->cell_handler) {
/* Handle a fixed-length cell */
- SIMPLEQ_REMOVE_HEAD(&chan->incoming_queue, next);
+ TOR_SIMPLEQ_REMOVE_HEAD(&chan->incoming_queue, next);
tor_assert(q->u.fixed.cell);
log_debug(LD_CHANNEL,
"Processing incoming cell_t %p for channel %p (global ID "
@@ -2461,7 +2461,7 @@ channel_process_cells(channel_t *chan)
} else if (q->type == CELL_QUEUE_VAR &&
chan->var_cell_handler) {
/* Handle a variable-length cell */
- SIMPLEQ_REMOVE_HEAD(&chan->incoming_queue, next);
+ TOR_SIMPLEQ_REMOVE_HEAD(&chan->incoming_queue, next);
tor_assert(q->u.var.var_cell);
log_debug(LD_CHANNEL,
"Processing incoming var_cell_t %p for channel %p (global ID "
@@ -2496,7 +2496,7 @@ channel_queue_cell(channel_t *chan, cell_t *cell)
/* Do we need to queue it, or can we just call the handler right away? */
if (!(chan->cell_handler)) need_to_queue = 1;
- if (! SIMPLEQ_EMPTY(&chan->incoming_queue))
+ if (! TOR_SIMPLEQ_EMPTY(&chan->incoming_queue))
need_to_queue = 1;
/* Timestamp for receiving */
@@ -2522,7 +2522,7 @@ channel_queue_cell(channel_t *chan, cell_t *cell)
"(global ID " U64_FORMAT ")",
cell, chan,
U64_PRINTF_ARG(chan->global_identifier));
- SIMPLEQ_INSERT_TAIL(&chan->incoming_queue, q, next);
+ TOR_SIMPLEQ_INSERT_TAIL(&chan->incoming_queue, q, next);
if (chan->cell_handler ||
chan->var_cell_handler) {
channel_process_cells(chan);
@@ -2549,7 +2549,7 @@ channel_queue_var_cell(channel_t *chan, var_cell_t *var_cell)
/* Do we need to queue it, or can we just call the handler right away? */
if (!(chan->var_cell_handler)) need_to_queue = 1;
- if (! SIMPLEQ_EMPTY(&chan->incoming_queue))
+ if (! TOR_SIMPLEQ_EMPTY(&chan->incoming_queue))
need_to_queue = 1;
/* Timestamp for receiving */
@@ -2575,7 +2575,7 @@ channel_queue_var_cell(channel_t *chan, var_cell_t *var_cell)
"(global ID " U64_FORMAT ")",
var_cell, chan,
U64_PRINTF_ARG(chan->global_identifier));
- SIMPLEQ_INSERT_TAIL(&chan->incoming_queue, q, next);
+ TOR_SIMPLEQ_INSERT_TAIL(&chan->incoming_queue, q, next);
if (chan->cell_handler ||
chan->var_cell_handler) {
channel_process_cells(chan);
@@ -2636,10 +2636,10 @@ void
channel_dumpstats(int severity)
{
if (all_channels && smartlist_len(all_channels) > 0) {
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
"Dumping statistics about %d channels:",
smartlist_len(all_channels));
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
"%d are active, and %d are done and waiting for cleanup",
(active_channels != NULL) ?
smartlist_len(active_channels) : 0,
@@ -2649,10 +2649,10 @@ channel_dumpstats(int severity)
SMARTLIST_FOREACH(all_channels, channel_t *, chan,
channel_dump_statistics(chan, severity));
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
"Done spamming about channels now");
} else {
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
"No channels to dump");
}
}
@@ -2668,10 +2668,10 @@ void
channel_listener_dumpstats(int severity)
{
if (all_listeners && smartlist_len(all_listeners) > 0) {
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
"Dumping statistics about %d channel listeners:",
smartlist_len(all_listeners));
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
"%d are active and %d are done and waiting for cleanup",
(active_listeners != NULL) ?
smartlist_len(active_listeners) : 0,
@@ -2681,10 +2681,10 @@ channel_listener_dumpstats(int severity)
SMARTLIST_FOREACH(all_listeners, channel_listener_t *, chan_l,
channel_listener_dump_statistics(chan_l, severity));
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
"Done spamming about channel listeners now");
} else {
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
"No channel listeners to dump");
}
}
@@ -3115,7 +3115,7 @@ chan_cell_queue_len(const chan_cell_queue_t *queue)
{
int r = 0;
cell_queue_entry_t *cell;
- SIMPLEQ_FOREACH(cell, queue, next)
+ TOR_SIMPLEQ_FOREACH(cell, queue, next)
++r;
return r;
}
@@ -3139,13 +3139,13 @@ channel_dump_statistics(channel_t *chan, int severity)
age = (double)(now - chan->timestamp_created);
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
"Channel " U64_FORMAT " (at %p) with transport %s is in state "
"%s (%d)",
U64_PRINTF_ARG(chan->global_identifier), chan,
channel_describe_transport(chan),
channel_state_to_string(chan->state), chan->state);
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " was created at " U64_FORMAT
" (" U64_FORMAT " seconds ago) "
"and last active at " U64_FORMAT " (" U64_FORMAT " seconds ago)",
@@ -3158,14 +3158,14 @@ channel_dump_statistics(channel_t *chan, int severity)
/* Handle digest and nickname */
if (!tor_digest_is_zero(chan->identity_digest)) {
if (chan->nickname) {
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " says it is connected "
"to an OR with digest %s and nickname %s",
U64_PRINTF_ARG(chan->global_identifier),
hex_str(chan->identity_digest, DIGEST_LEN),
chan->nickname);
} else {
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " says it is connected "
"to an OR with digest %s and no known nickname",
U64_PRINTF_ARG(chan->global_identifier),
@@ -3173,13 +3173,13 @@ channel_dump_statistics(channel_t *chan, int severity)
}
} else {
if (chan->nickname) {
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " does not know the digest"
" of the OR it is connected to, but reports its nickname is %s",
U64_PRINTF_ARG(chan->global_identifier),
chan->nickname);
} else {
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " does not know the digest"
" or the nickname of the OR it is connected to",
U64_PRINTF_ARG(chan->global_identifier));
@@ -3191,7 +3191,7 @@ channel_dump_statistics(channel_t *chan, int severity)
if (have_remote_addr) {
char *actual = tor_strdup(channel_get_actual_remote_descr(chan));
remote_addr_str = tor_dup_addr(&remote_addr);
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " says its remote address"
" is %s, and gives a canonical description of \"%s\" and an "
"actual description of \"%s\"",
@@ -3203,7 +3203,7 @@ channel_dump_statistics(channel_t *chan, int severity)
tor_free(actual);
} else {
char *actual = tor_strdup(channel_get_actual_remote_descr(chan));
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " does not know its remote "
"address, but gives a canonical description of \"%s\" and an "
"actual description of \"%s\"",
@@ -3214,7 +3214,7 @@ channel_dump_statistics(channel_t *chan, int severity)
}
/* Handle marks */
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " has these marks: %s %s %s "
"%s %s %s",
U64_PRINTF_ARG(chan->global_identifier),
@@ -3233,7 +3233,7 @@ channel_dump_statistics(channel_t *chan, int severity)
"incoming" : "outgoing");
/* Describe queues */
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " has %d queued incoming cells"
" and %d queued outgoing cells",
U64_PRINTF_ARG(chan->global_identifier),
@@ -3241,7 +3241,7 @@ channel_dump_statistics(channel_t *chan, int severity)
chan_cell_queue_len(&chan->outgoing_queue));
/* Describe circuits */
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " has %d active circuits out of"
" %d in total",
U64_PRINTF_ARG(chan->global_identifier),
@@ -3251,25 +3251,25 @@ channel_dump_statistics(channel_t *chan, int severity)
circuitmux_num_circuits(chan->cmux) : 0);
/* Describe timestamps */
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " was last used by a "
"client at " U64_FORMAT " (" U64_FORMAT " seconds ago)",
U64_PRINTF_ARG(chan->global_identifier),
U64_PRINTF_ARG(chan->timestamp_client),
U64_PRINTF_ARG(now - chan->timestamp_client));
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " was last drained at "
U64_FORMAT " (" U64_FORMAT " seconds ago)",
U64_PRINTF_ARG(chan->global_identifier),
U64_PRINTF_ARG(chan->timestamp_drained),
U64_PRINTF_ARG(now - chan->timestamp_drained));
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " last received a cell "
"at " U64_FORMAT " (" U64_FORMAT " seconds ago)",
U64_PRINTF_ARG(chan->global_identifier),
U64_PRINTF_ARG(chan->timestamp_recv),
U64_PRINTF_ARG(now - chan->timestamp_recv));
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " last trasmitted a cell "
"at " U64_FORMAT " (" U64_FORMAT " seconds ago)",
U64_PRINTF_ARG(chan->global_identifier),
@@ -3277,7 +3277,7 @@ channel_dump_statistics(channel_t *chan, int severity)
U64_PRINTF_ARG(now - chan->timestamp_xmit));
/* Describe counters and rates */
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " has received "
U64_FORMAT " cells and transmitted " U64_FORMAT,
U64_PRINTF_ARG(chan->global_identifier),
@@ -3288,13 +3288,13 @@ channel_dump_statistics(channel_t *chan, int severity)
if (chan->n_cells_recved > 0) {
avg = (double)(chan->n_cells_recved) / age;
if (avg >= 1.0) {
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " has averaged %f "
"cells received per second",
U64_PRINTF_ARG(chan->global_identifier), avg);
} else if (avg >= 0.0) {
interval = 1.0 / avg;
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " has averaged %f "
"seconds between received cells",
U64_PRINTF_ARG(chan->global_identifier), interval);
@@ -3303,13 +3303,13 @@ channel_dump_statistics(channel_t *chan, int severity)
if (chan->n_cells_xmitted > 0) {
avg = (double)(chan->n_cells_xmitted) / age;
if (avg >= 1.0) {
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " has averaged %f "
"cells transmitted per second",
U64_PRINTF_ARG(chan->global_identifier), avg);
} else if (avg >= 0.0) {
interval = 1.0 / avg;
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " has averaged %f "
"seconds between transmitted cells",
U64_PRINTF_ARG(chan->global_identifier), interval);
@@ -3337,13 +3337,13 @@ channel_listener_dump_statistics(channel_listener_t *chan_l, int severity)
age = (double)(now - chan_l->timestamp_created);
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
"Channel listener " U64_FORMAT " (at %p) with transport %s is in "
"state %s (%d)",
U64_PRINTF_ARG(chan_l->global_identifier), chan_l,
channel_listener_describe_transport(chan_l),
channel_listener_state_to_string(chan_l->state), chan_l->state);
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel listener " U64_FORMAT " was created at " U64_FORMAT
" (" U64_FORMAT " seconds ago) "
"and last active at " U64_FORMAT " (" U64_FORMAT " seconds ago)",
@@ -3353,7 +3353,7 @@ channel_listener_dump_statistics(channel_listener_t *chan_l, int severity)
U64_PRINTF_ARG(chan_l->timestamp_active),
U64_PRINTF_ARG(now - chan_l->timestamp_active));
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel listener " U64_FORMAT " last accepted an incoming "
"channel at " U64_FORMAT " (" U64_FORMAT " seconds ago) "
"and has accepted " U64_FORMAT " channels in total",
@@ -3371,13 +3371,13 @@ channel_listener_dump_statistics(channel_listener_t *chan_l, int severity)
chan_l->n_accepted > 0) {
avg = (double)(chan_l->n_accepted) / age;
if (avg >= 1.0) {
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel listener " U64_FORMAT " has averaged %f incoming "
"channels per second",
U64_PRINTF_ARG(chan_l->global_identifier), avg);
} else if (avg >= 0.0) {
interval = 1.0 / avg;
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" * Channel listener " U64_FORMAT " has averaged %f seconds "
"between incoming channels",
U64_PRINTF_ARG(chan_l->global_identifier), interval);
@@ -3504,7 +3504,7 @@ channel_has_queued_writes(channel_t *chan)
tor_assert(chan);
tor_assert(chan->has_queued_writes);
- if (! SIMPLEQ_EMPTY(&chan->outgoing_queue)) {
+ if (! TOR_SIMPLEQ_EMPTY(&chan->outgoing_queue)) {
has_writes = 1;
} else {
/* Check with the lower layer */
diff --git a/src/or/channel.h b/src/or/channel.h
index d2106551aa..ec79888063 100644
--- a/src/or/channel.h
+++ b/src/or/channel.h
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -19,7 +19,7 @@ typedef void (*channel_cell_handler_fn_ptr)(channel_t *, cell_t *);
typedef void (*channel_var_cell_handler_fn_ptr)(channel_t *, var_cell_t *);
struct cell_queue_entry_s;
-SIMPLEQ_HEAD(chan_cell_queue, cell_queue_entry_s) incoming_queue;
+TOR_SIMPLEQ_HEAD(chan_cell_queue, cell_queue_entry_s) incoming_queue;
typedef struct chan_cell_queue chan_cell_queue_t;
/*
@@ -125,7 +125,7 @@ struct channel_s {
* Linked list of channels with the same identity digest, for the
* digest->channel map
*/
- LIST_ENTRY(channel_s) next_with_same_id;
+ TOR_LIST_ENTRY(channel_s) next_with_same_id;
/* List of incoming cells to handle */
chan_cell_queue_t incoming_queue;
@@ -142,7 +142,7 @@ struct channel_s {
* When we send CREATE cells along this connection, which half of the
* space should we use?
*/
- circ_id_type_t circ_id_type:2;
+ ENUM_BF(circ_id_type_t) circ_id_type:2;
/*
* Which circ_id do we try to use next on this connection? This is
* always in the range 0..1<<15-1.
diff --git a/src/or/channeltls.c b/src/or/channeltls.c
index ede245894e..e3dfdcc25e 100644
--- a/src/or/channeltls.c
+++ b/src/or/channeltls.c
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -914,6 +914,8 @@ channel_tls_handle_cell(cell_t *cell, or_connection_t *conn)
case CELL_RELAY:
case CELL_RELAY_EARLY:
case CELL_DESTROY:
+ case CELL_CREATE2:
+ case CELL_CREATED2:
/*
* These are all transport independent and we pass them up through the
* channel_t mechanism. They are ultimately handled in command.c.
diff --git a/src/or/channeltls.h b/src/or/channeltls.h
index b7e0475de6..b4a7e2beac 100644
--- a/src/or/channeltls.h
+++ b/src/or/channeltls.h
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index 55f746177b..b9a4f89030 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -28,6 +28,8 @@
#include "networkstatus.h"
#include "nodelist.h"
#include "onion.h"
+#include "onion_tap.h"
+#include "onion_fast.h"
#include "policies.h"
#include "transports.h"
#include "relay.h"
@@ -37,6 +39,7 @@
#include "routerparse.h"
#include "routerset.h"
#include "crypto.h"
+#include "connection_edge.h"
#ifndef MIN
#define MIN(a,b) ((a)<(b)?(a):(b))
@@ -53,7 +56,8 @@ static channel_t * channel_connect_for_circuit(const tor_addr_t *addr,
uint16_t port,
const char *id_digest);
static int circuit_deliver_create_cell(circuit_t *circ,
- uint8_t cell_type, const char *payload);
+ const create_cell_t *create_cell,
+ int relayed);
static int onion_pick_cpath_exit(origin_circuit_t *circ, extend_info_t *exit);
static crypt_path_t *onion_next_hop_in_cpath(crypt_path_t *cpath);
static int onion_extend_cpath(origin_circuit_t *circ);
@@ -63,7 +67,10 @@ static int entry_guard_inc_circ_attempt_count(entry_guard_t *guard);
static void pathbias_count_build_success(origin_circuit_t *circ);
static void pathbias_count_successful_close(origin_circuit_t *circ);
static void pathbias_count_collapse(origin_circuit_t *circ);
-static void pathbias_count_unusable(origin_circuit_t *circ);
+static void pathbias_count_use_failed(origin_circuit_t *circ);
+static void pathbias_measure_use_rate(entry_guard_t *guard);
+static void pathbias_measure_close_rate(entry_guard_t *guard);
+static void pathbias_scale_use_rates(entry_guard_t *guard);
/** This function tries to get a channel to the specified endpoint,
* and then calls command_setup_channel() to give it the right
@@ -473,14 +480,13 @@ circuit_n_chan_done(channel_t *chan, int status)
* died? */
}
} else {
- /* pull the create cell out of circ->onionskin, and send it */
- tor_assert(circ->n_chan_onionskin);
- if (circuit_deliver_create_cell(circ,CELL_CREATE,
- circ->n_chan_onionskin)<0) {
+ /* pull the create cell out of circ->n_chan_create_cell, and send it */
+ tor_assert(circ->n_chan_create_cell);
+ if (circuit_deliver_create_cell(circ, circ->n_chan_create_cell, 1)<0) {
circuit_mark_for_close(circ, END_CIRC_REASON_RESOURCELIMIT);
continue;
}
- tor_free(circ->n_chan_onionskin);
+ tor_free(circ->n_chan_create_cell);
circuit_set_state(circ, CIRCUIT_STATE_OPEN);
}
}
@@ -491,22 +497,25 @@ circuit_n_chan_done(channel_t *chan, int status)
/** Find a new circid that isn't currently in use on the circ->n_chan
* for the outgoing
- * circuit <b>circ</b>, and deliver a cell of type <b>cell_type</b>
- * (either CELL_CREATE or CELL_CREATE_FAST) with payload <b>payload</b>
- * to this circuit.
- * Return -1 if we failed to find a suitable circid, else return 0.
+ * circuit <b>circ</b>, and deliver the cell <b>create_cell</b> to this
+ * circuit. If <b>relayed</b> is true, this is a create cell somebody
+ * gave us via an EXTEND cell, so we shouldn't worry if we don't understand
+ * it. Return -1 if we failed to find a suitable circid, else return 0.
*/
static int
-circuit_deliver_create_cell(circuit_t *circ, uint8_t cell_type,
- const char *payload)
+circuit_deliver_create_cell(circuit_t *circ, const create_cell_t *create_cell,
+ int relayed)
{
cell_t cell;
circid_t id;
+ int r;
tor_assert(circ);
tor_assert(circ->n_chan);
- tor_assert(payload);
- tor_assert(cell_type == CELL_CREATE || cell_type == CELL_CREATE_FAST);
+ tor_assert(create_cell);
+ tor_assert(create_cell->cell_type == CELL_CREATE ||
+ create_cell->cell_type == CELL_CREATE_FAST ||
+ create_cell->cell_type == CELL_CREATE2);
id = get_unique_circ_id_by_chan(circ->n_chan);
if (!id) {
@@ -517,10 +526,14 @@ circuit_deliver_create_cell(circuit_t *circ, uint8_t cell_type,
circuit_set_n_circid_chan(circ, id, circ->n_chan);
memset(&cell, 0, sizeof(cell_t));
- cell.command = cell_type;
+ r = relayed ? create_cell_format_relayed(&cell, create_cell)
+ : create_cell_format(&cell, create_cell);
+ if (r < 0) {
+ log_warn(LD_CIRC,"Couldn't format create cell");
+ return -1;
+ }
cell.circ_id = circ->n_circ_id;
- memcpy(cell.payload, payload, ONIONSKIN_CHALLENGE_LEN);
append_cell_to_circuit_queue(circ, circ->n_chan, &cell,
CELL_DIRECTION_OUT, 0);
@@ -610,6 +623,73 @@ circuit_timeout_want_to_count_circ(origin_circuit_t *circ)
&& circ->build_state->desired_path_len == DEFAULT_ROUTE_LEN;
}
+#ifdef CURVE25519_ENABLED
+/** Return true if the ntor handshake is enabled in the configuration, or if
+ * it's been set to "auto" in the configuration and it's enabled in the
+ * consensus. */
+static int
+circuits_can_use_ntor(void)
+{
+ const or_options_t *options = get_options();
+ if (options->UseNTorHandshake != -1)
+ return options->UseNTorHandshake;
+ return networkstatus_get_param(NULL, "UseNTorHandshake", 0, 0, 1);
+}
+#endif
+
+/** Decide whether to use a TAP or ntor handshake for connecting to <b>ei</b>
+ * directly, and set *<b>cell_type_out</b> and *<b>handshake_type_out</b>
+ * accordingly. */
+static void
+circuit_pick_create_handshake(uint8_t *cell_type_out,
+ uint16_t *handshake_type_out,
+ const extend_info_t *ei)
+{
+#ifdef CURVE25519_ENABLED
+ if (!tor_mem_is_zero((const char*)ei->curve25519_onion_key.public_key,
+ CURVE25519_PUBKEY_LEN) &&
+ circuits_can_use_ntor()) {
+ *cell_type_out = CELL_CREATE2;
+ *handshake_type_out = ONION_HANDSHAKE_TYPE_NTOR;
+ return;
+ }
+#else
+ (void) ei;
+#endif
+
+ *cell_type_out = CELL_CREATE;
+ *handshake_type_out = ONION_HANDSHAKE_TYPE_TAP;
+}
+
+/** Decide whether to use a TAP or ntor handshake for connecting to <b>ei</b>
+ * directly, and set *<b>handshake_type_out</b> accordingly. Decide whether,
+ * in extending through <b>node</b> to do so, we should use an EXTEND2 or an
+ * EXTEND cell to do so, and set *<b>cell_type_out</b> and
+ * *<b>create_cell_type_out</b> accordingly. */
+static void
+circuit_pick_extend_handshake(uint8_t *cell_type_out,
+ uint8_t *create_cell_type_out,
+ uint16_t *handshake_type_out,
+ const node_t *node_prev,
+ const extend_info_t *ei)
+{
+ uint8_t t;
+ circuit_pick_create_handshake(&t, handshake_type_out, ei);
+ /* XXXX024 The check for whether the node has a curve25519 key is a bad
+ * proxy for whether it can do extend2 cells; once a version that
+ * handles extend2 cells is out, remove it. */
+ if (node_prev &&
+ *handshake_type_out != ONION_HANDSHAKE_TYPE_TAP &&
+ (node_has_curve25519_onion_key(node_prev) ||
+ (node_prev->rs && node_prev->rs->version_supports_extend2_cells))) {
+ *cell_type_out = RELAY_COMMAND_EXTEND2;
+ *create_cell_type_out = CELL_CREATE2;
+ } else {
+ *cell_type_out = RELAY_COMMAND_EXTEND;
+ *create_cell_type_out = CELL_CREATE;
+ }
+}
+
/** This is the backbone function for building circuits.
*
* If circ's first hop is closed, then we need to build a create
@@ -625,16 +705,16 @@ circuit_send_next_onion_skin(origin_circuit_t *circ)
{
crypt_path_t *hop;
const node_t *node;
- char payload[2+4+DIGEST_LEN+ONIONSKIN_CHALLENGE_LEN];
- char *onionskin;
- size_t payload_len;
tor_assert(circ);
if (circ->cpath->state == CPATH_STATE_CLOSED) {
+ /* This is the first hop. */
+ create_cell_t cc;
int fast;
- uint8_t cell_type;
+ int len;
log_debug(LD_CIRC,"First skin; sending create cell.");
+ memset(&cc, 0, sizeof(cc));
if (circ->build_state->onehop_tunnel)
control_event_bootstrap(BOOTSTRAP_STATUS_ONEHOP_CREATE, 0);
else
@@ -644,30 +724,31 @@ circuit_send_next_onion_skin(origin_circuit_t *circ)
fast = should_use_create_fast_for_circuit(circ);
if (!fast) {
/* We are an OR and we know the right onion key: we should
- * send an old slow create cell.
+ * send a create cell.
*/
- cell_type = CELL_CREATE;
- if (onion_skin_create(circ->cpath->extend_info->onion_key,
- &(circ->cpath->dh_handshake_state),
- payload) < 0) {
- log_warn(LD_CIRC,"onion_skin_create (first hop) failed.");
- return - END_CIRC_REASON_INTERNAL;
- }
+ circuit_pick_create_handshake(&cc.cell_type, &cc.handshake_type,
+ circ->cpath->extend_info);
note_request("cell: create", 1);
} else {
/* We are not an OR, and we're building the first hop of a circuit to a
* new OR: we can be speedy and use CREATE_FAST to save an RSA operation
* and a DH operation. */
- cell_type = CELL_CREATE_FAST;
- memset(payload, 0, sizeof(payload));
- crypto_rand((char*) circ->cpath->fast_handshake_state,
- sizeof(circ->cpath->fast_handshake_state));
- memcpy(payload, circ->cpath->fast_handshake_state,
- sizeof(circ->cpath->fast_handshake_state));
+ cc.cell_type = CELL_CREATE_FAST;
+ cc.handshake_type = ONION_HANDSHAKE_TYPE_FAST;
note_request("cell: create fast", 1);
}
- if (circuit_deliver_create_cell(TO_CIRCUIT(circ), cell_type, payload) < 0)
+ len = onion_skin_create(cc.handshake_type,
+ circ->cpath->extend_info,
+ &circ->cpath->handshake_state,
+ cc.onionskin);
+ if (len < 0) {
+ log_warn(LD_CIRC,"onion_skin_create (first hop) failed.");
+ return - END_CIRC_REASON_INTERNAL;
+ }
+ cc.handshake_len = len;
+
+ if (circuit_deliver_create_cell(TO_CIRCUIT(circ), &cc, 0) < 0)
return - END_CIRC_REASON_RESOURCELIMIT;
circ->cpath->state = CPATH_STATE_AWAITING_KEYS;
@@ -676,10 +757,13 @@ circuit_send_next_onion_skin(origin_circuit_t *circ)
fast ? "CREATE_FAST" : "CREATE",
node ? node_describe(node) : "<unnamed>");
} else {
+ extend_cell_t ec;
+ int len;
tor_assert(circ->cpath->state == CPATH_STATE_OPEN);
tor_assert(circ->base_.state == CIRCUIT_STATE_BUILDING);
log_debug(LD_CIRC,"starting to send subsequent skin.");
hop = onion_next_hop_in_cpath(circ->cpath);
+ memset(&ec, 0, sizeof(ec));
if (!hop) {
/* done building the circuit. whew. */
circuit_set_state(TO_CIRCUIT(circ), CIRCUIT_STATE_OPEN);
@@ -740,9 +824,6 @@ circuit_send_next_onion_skin(origin_circuit_t *circ)
/* We're done with measurement circuits here. Just close them */
if (circ->base_.purpose == CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT) {
- /* If a measurement circ ever gets back to us, consider it
- * succeeded for path bias */
- circ->path_state = PATH_STATE_USE_SUCCEEDED;
circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_FINISHED);
}
return 0;
@@ -753,29 +834,50 @@ circuit_send_next_onion_skin(origin_circuit_t *circ)
return - END_CIRC_REASON_INTERNAL;
}
- set_uint32(payload, tor_addr_to_ipv4n(&hop->extend_info->addr));
- set_uint16(payload+4, htons(hop->extend_info->port));
+ {
+ const node_t *prev_node;
+ prev_node = node_get_by_id(hop->prev->extend_info->identity_digest);
+ circuit_pick_extend_handshake(&ec.cell_type,
+ &ec.create_cell.cell_type,
+ &ec.create_cell.handshake_type,
+ prev_node,
+ hop->extend_info);
+ }
- onionskin = payload+2+4;
- memcpy(payload+2+4+ONIONSKIN_CHALLENGE_LEN,
- hop->extend_info->identity_digest, DIGEST_LEN);
- payload_len = 2+4+ONIONSKIN_CHALLENGE_LEN+DIGEST_LEN;
+ tor_addr_copy(&ec.orport_ipv4.addr, &hop->extend_info->addr);
+ 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);
- if (onion_skin_create(hop->extend_info->onion_key,
- &(hop->dh_handshake_state), onionskin) < 0) {
+ len = onion_skin_create(ec.create_cell.handshake_type,
+ hop->extend_info,
+ &hop->handshake_state,
+ ec.create_cell.onionskin);
+ if (len < 0) {
log_warn(LD_CIRC,"onion_skin_create failed.");
return - END_CIRC_REASON_INTERNAL;
}
+ ec.create_cell.handshake_len = len;
log_info(LD_CIRC,"Sending extend relay cell.");
note_request("cell: extend", 1);
- /* send it to hop->prev, because it will transfer
- * it to a create cell and then send to hop */
- if (relay_send_command_from_edge(0, TO_CIRCUIT(circ),
- RELAY_COMMAND_EXTEND,
- payload, payload_len, hop->prev) < 0)
- return 0; /* circuit is closed */
+ {
+ uint8_t command = 0;
+ uint16_t payload_len=0;
+ uint8_t payload[RELAY_PAYLOAD_SIZE];
+ if (extend_cell_format(&command, &payload_len, payload, &ec)<0) {
+ log_warn(LD_CIRC,"Couldn't format extend cell");
+ return -END_CIRC_REASON_INTERNAL;
+ }
+ /* send it to hop->prev, because it will transfer
+ * it to a create cell and then send to hop */
+ if (relay_send_command_from_edge(0, TO_CIRCUIT(circ),
+ command,
+ (char*)payload, payload_len,
+ hop->prev) < 0)
+ return 0; /* circuit is closed */
+ }
hop->state = CPATH_STATE_AWAITING_KEYS;
}
return 0;
@@ -814,11 +916,7 @@ circuit_extend(cell_t *cell, circuit_t *circ)
{
channel_t *n_chan;
relay_header_t rh;
- char *onionskin;
- char *id_digest=NULL;
- uint32_t n_addr32;
- uint16_t n_port;
- tor_addr_t n_addr;
+ extend_cell_t ec;
const char *msg = NULL;
int should_launch = 0;
@@ -841,27 +939,21 @@ circuit_extend(cell_t *cell, circuit_t *circ)
relay_header_unpack(&rh, cell->payload);
- if (rh.length < 4+2+ONIONSKIN_CHALLENGE_LEN+DIGEST_LEN) {
+ if (extend_cell_parse(&ec, rh.command,
+ cell->payload+RELAY_HEADER_SIZE,
+ rh.length) < 0) {
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
- "Wrong length %d on extend cell. Closing circuit.",
- rh.length);
+ "Can't parse extend cell. Closing circuit.");
return -1;
}
- n_addr32 = ntohl(get_uint32(cell->payload+RELAY_HEADER_SIZE));
- n_port = ntohs(get_uint16(cell->payload+RELAY_HEADER_SIZE+4));
- onionskin = (char*) cell->payload+RELAY_HEADER_SIZE+4+2;
- id_digest = (char*) cell->payload+RELAY_HEADER_SIZE+4+2+
- ONIONSKIN_CHALLENGE_LEN;
- tor_addr_from_ipv4h(&n_addr, n_addr32);
-
- if (!n_port || !n_addr32) {
+ if (!ec.orport_ipv4.port || tor_addr_is_null(&ec.orport_ipv4.addr)) {
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Client asked me to extend to zero destination port or addr.");
return -1;
}
- if (tor_addr_is_internal(&n_addr, 0) &&
+ if (tor_addr_is_internal(&ec.orport_ipv4.addr, 0) &&
!get_options()->ExtendAllowPrivateAddresses) {
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Client asked me to extend to a private address");
@@ -874,7 +966,7 @@ circuit_extend(cell_t *cell, circuit_t *circ)
* 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. */
- if (tor_digest_is_zero(id_digest)) {
+ if (tor_digest_is_zero((const char*)ec.node_id)) {
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Client asked me to extend without specifying an id_digest.");
return -1;
@@ -883,7 +975,7 @@ circuit_extend(cell_t *cell, circuit_t *circ)
/* 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. */
- if (tor_memeq(id_digest,
+ if (tor_memeq(ec.node_id,
TO_OR_CIRCUIT(circ)->p_chan->identity_digest,
DIGEST_LEN)) {
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
@@ -891,27 +983,33 @@ circuit_extend(cell_t *cell, circuit_t *circ)
return -1;
}
- n_chan = channel_get_for_extend(id_digest,
- &n_addr,
+ n_chan = channel_get_for_extend((const char*)ec.node_id,
+ &ec.orport_ipv4.addr,
&msg,
&should_launch);
if (!n_chan) {
log_debug(LD_CIRC|LD_OR,"Next router (%s): %s",
- fmt_addrport(&n_addr, n_port), msg?msg:"????");
+ fmt_addrport(&ec.orport_ipv4.addr,ec.orport_ipv4.port),
+ msg?msg:"????");
circ->n_hop = extend_info_new(NULL /*nickname*/,
- id_digest,
- NULL /*onion_key*/,
- &n_addr, n_port);
+ (const char*)ec.node_id,
+ NULL /*onion_key*/,
+ NULL /*curve25519_key*/,
+ &ec.orport_ipv4.addr,
+ ec.orport_ipv4.port);
+
+ circ->n_chan_create_cell = tor_memdup(&ec.create_cell,
+ sizeof(ec.create_cell));
- circ->n_chan_onionskin = tor_malloc(ONIONSKIN_CHALLENGE_LEN);
- memcpy(circ->n_chan_onionskin, onionskin, ONIONSKIN_CHALLENGE_LEN);
circuit_set_state(circ, CIRCUIT_STATE_CHAN_WAIT);
if (should_launch) {
/* we should try to open a connection */
- n_chan = channel_connect_for_circuit(&n_addr, n_port, id_digest);
+ n_chan = channel_connect_for_circuit(&ec.orport_ipv4.addr,
+ ec.orport_ipv4.port,
+ (const char*)ec.node_id);
if (!n_chan) {
log_info(LD_CIRC,"Launching n_chan failed. Closing circuit.");
circuit_mark_for_close(circ, END_CIRC_REASON_CONNECTFAILED);
@@ -932,8 +1030,9 @@ circuit_extend(cell_t *cell, circuit_t *circ)
"n_chan is %s",
channel_get_canonical_remote_descr(n_chan));
- if (circuit_deliver_create_cell(circ, CELL_CREATE, onionskin) < 0)
+ if (circuit_deliver_create_cell(circ, &ec.create_cell, 1) < 0)
return -1;
+
return 0;
}
@@ -1077,53 +1176,93 @@ pathbias_get_scale_threshold(const or_options_t *options)
}
/**
- * The scale factor is the denominator for our scaling
- * of circuit counts for our path bias window.
+ * Compute the path bias scaling ratio from the consensus
+ * parameters pb_multfactor/pb_scalefactor.
*
- * Note that our use of doubles for the path bias state
- * file means that powers of 2 work best here.
+ * Returns a value in (0, 1.0] which we multiply our pathbias
+ * counts with to scale them down.
*/
+static double
+pathbias_get_scale_ratio(const or_options_t *options)
+{
+ /*
+ * The scale factor is the denominator for our scaling
+ * of circuit counts for our path bias window.
+ *
+ * Note that our use of doubles for the path bias state
+ * file means that powers of 2 work best here.
+ */
+ int denominator = networkstatus_get_param(NULL, "pb_scalefactor",
+ 2, 2, INT32_MAX);
+ (void) options;
+ /**
+ * The mult factor is the numerator for our scaling
+ * of circuit counts for our path bias window. It
+ * allows us to scale by fractions.
+ */
+ return networkstatus_get_param(NULL, "pb_multfactor",
+ 1, 1, denominator)/((double)denominator);
+}
+
+/** The minimum number of circuit usage attempts before we start
+ * thinking about warning about path use bias and dropping guards */
static int
-pathbias_get_scale_factor(const or_options_t *options)
+pathbias_get_min_use(const or_options_t *options)
+{
+#define DFLT_PATH_BIAS_MIN_USE 20
+ if (options->PathBiasUseThreshold >= 3)
+ return options->PathBiasUseThreshold;
+ else
+ return networkstatus_get_param(NULL, "pb_minuse",
+ DFLT_PATH_BIAS_MIN_USE,
+ 3, INT32_MAX);
+}
+
+/** The circuit use success rate below which we issue a notice */
+static double
+pathbias_get_notice_use_rate(const or_options_t *options)
{
-#define DFLT_PATH_BIAS_SCALE_FACTOR 2
- if (options->PathBiasScaleFactor >= 1)
- return options->PathBiasScaleFactor;
+#define DFLT_PATH_BIAS_NOTICE_USE_PCT 80
+ if (options->PathBiasNoticeUseRate >= 0.0)
+ return options->PathBiasNoticeUseRate;
else
- return networkstatus_get_param(NULL, "pb_scalefactor",
- DFLT_PATH_BIAS_SCALE_FACTOR, 1, INT32_MAX);
+ return networkstatus_get_param(NULL, "pb_noticeusepct",
+ DFLT_PATH_BIAS_NOTICE_USE_PCT,
+ 0, 100)/100.0;
}
/**
- * The mult factor is the numerator for our scaling
- * of circuit counts for our path bias window. It
- * allows us to scale by fractions.
+ * The extreme use rate is the rate at which we would drop the guard,
+ * if pb_dropguard is also set. Otherwise we just warn.
*/
-static int
-pathbias_get_mult_factor(const or_options_t *options)
+double
+pathbias_get_extreme_use_rate(const or_options_t *options)
{
-#define DFLT_PATH_BIAS_MULT_FACTOR 1
- if (options->PathBiasMultFactor >= 1)
- return options->PathBiasMultFactor;
+#define DFLT_PATH_BIAS_EXTREME_USE_PCT 60
+ if (options->PathBiasExtremeUseRate >= 0.0)
+ return options->PathBiasExtremeUseRate;
else
- return networkstatus_get_param(NULL, "pb_multfactor",
- DFLT_PATH_BIAS_MULT_FACTOR, 1,
- pathbias_get_scale_factor(options));
+ return networkstatus_get_param(NULL, "pb_extremeusepct",
+ DFLT_PATH_BIAS_EXTREME_USE_PCT,
+ 0, 100)/100.0;
}
/**
- * If this parameter is set to a true value (default), we use the
- * successful_circuits_closed. Otherwise, we use the success_count.
+ * This is the number of circuits at which we scale our
+ * use counts by mult_factor/scale_factor. Note, this count is
+ * not exact, as we only perform the scaling in the event
+ * of no integer truncation.
*/
static int
-pathbias_use_close_counts(const or_options_t *options)
+pathbias_get_scale_use_threshold(const or_options_t *options)
{
-#define DFLT_PATH_BIAS_USE_CLOSE_COUNTS 1
- if (options->PathBiasUseCloseCounts >= 0)
- return options->PathBiasUseCloseCounts;
+#define DFLT_PATH_BIAS_SCALE_USE_THRESHOLD 100
+ if (options->PathBiasScaleUseThreshold >= 10)
+ return options->PathBiasScaleUseThreshold;
else
- return networkstatus_get_param(NULL, "pb_useclosecounts",
- DFLT_PATH_BIAS_USE_CLOSE_COUNTS, 0, 1);
+ return networkstatus_get_param(NULL, "pb_scaleuse",
+ DFLT_PATH_BIAS_SCALE_USE_THRESHOLD,
+ 10, INT32_MAX);
}
/**
@@ -1139,10 +1278,14 @@ pathbias_state_to_string(path_state_t state)
return "build attempted";
case PATH_STATE_BUILD_SUCCEEDED:
return "build succeeded";
+ case PATH_STATE_USE_ATTEMPTED:
+ return "use attempted";
case PATH_STATE_USE_SUCCEEDED:
return "use succeeded";
case PATH_STATE_USE_FAILED:
return "use failed";
+ case PATH_STATE_ALREADY_COUNTED:
+ return "already counted";
}
return "unknown";
@@ -1204,6 +1347,24 @@ pathbias_should_count(origin_circuit_t *circ)
circ->base_.purpose == CIRCUIT_PURPOSE_S_REND_JOINED ||
(circ->base_.purpose >= CIRCUIT_PURPOSE_C_INTRODUCING &&
circ->base_.purpose <= CIRCUIT_PURPOSE_C_INTRODUCE_ACKED)) {
+
+ /* Check to see if the shouldcount result has changed due to a
+ * unexpected purpose change that would affect our results.
+ *
+ * The reason we check the path state too here is because for the
+ * cannibalized versions of these purposes, we count them as successful
+ * before their purpose change.
+ */
+ if (circ->pathbias_shouldcount == PATHBIAS_SHOULDCOUNT_COUNTED
+ && circ->path_state != PATH_STATE_ALREADY_COUNTED) {
+ log_info(LD_BUG,
+ "Circuit %d is now being ignored despite being counted "
+ "in the past. Purpose is %s, path state is %s",
+ circ->global_identifier,
+ circuit_purpose_to_string(circ->base_.purpose),
+ pathbias_state_to_string(circ->path_state));
+ }
+ circ->pathbias_shouldcount = PATHBIAS_SHOULDCOUNT_IGNORED;
return 0;
}
@@ -1226,9 +1387,33 @@ pathbias_should_count(origin_circuit_t *circ)
}
tor_fragile_assert();
}
+
+ /* Check to see if the shouldcount result has changed due to a
+ * unexpected change that would affect our results */
+ if (circ->pathbias_shouldcount == PATHBIAS_SHOULDCOUNT_COUNTED) {
+ log_info(LD_BUG,
+ "One-hop circuit %d is now being ignored despite being counted "
+ "in the past. Purpose is %s, path state is %s",
+ circ->global_identifier,
+ circuit_purpose_to_string(circ->base_.purpose),
+ pathbias_state_to_string(circ->path_state));
+ }
+ circ->pathbias_shouldcount = PATHBIAS_SHOULDCOUNT_IGNORED;
return 0;
}
+ /* Check to see if the shouldcount result has changed due to a
+ * unexpected purpose change that would affect our results */
+ if (circ->pathbias_shouldcount == PATHBIAS_SHOULDCOUNT_IGNORED) {
+ log_info(LD_BUG,
+ "Circuit %d is now being counted despite being ignored "
+ "in the past. Purpose is %s, path state is %s",
+ circ->global_identifier,
+ circuit_purpose_to_string(circ->base_.purpose),
+ pathbias_state_to_string(circ->path_state));
+ }
+ circ->pathbias_shouldcount = PATHBIAS_SHOULDCOUNT_COUNTED;
+
return 1;
}
@@ -1239,7 +1424,7 @@ pathbias_should_count(origin_circuit_t *circ)
* Also check for several potential error cases for bug #6475.
*/
static int
-pathbias_count_circ_attempt(origin_circuit_t *circ)
+pathbias_count_build_attempt(origin_circuit_t *circ)
{
#define CIRC_ATTEMPT_NOTICE_INTERVAL (600)
static ratelim_t circ_attempt_notice_limit =
@@ -1338,7 +1523,7 @@ pathbias_count_build_success(origin_circuit_t *circ)
}
/* Don't count cannibalized/reused circs for path bias
- * build success.. They get counted under use success */
+ * "build" success, since they get counted under "use" success. */
if (!circ->has_opened) {
if (circ->cpath && circ->cpath->extend_info) {
guard = entry_guard_get_by_id_digest(
@@ -1349,6 +1534,7 @@ pathbias_count_build_success(origin_circuit_t *circ)
if (circ->path_state == PATH_STATE_BUILD_ATTEMPTED) {
circ->path_state = PATH_STATE_BUILD_SUCCEEDED;
guard->circ_successes++;
+ entry_guards_changed();
log_info(LD_CIRC, "Got success count %f/%f for guard %s=%s",
guard->circ_successes, guard->circ_attempts,
@@ -1406,6 +1592,333 @@ pathbias_count_build_success(origin_circuit_t *circ)
}
/**
+ * Record an attempt to use a circuit. Changes the circuit's
+ * path state and update its guard's usage counter.
+ *
+ * Used for path bias usage accounting.
+ */
+void
+pathbias_count_use_attempt(origin_circuit_t *circ)
+{
+ entry_guard_t *guard;
+
+ if (!pathbias_should_count(circ)) {
+ return;
+ }
+
+ if (circ->path_state < PATH_STATE_BUILD_SUCCEEDED) {
+ log_notice(LD_BUG,
+ "Used circuit is in strange path state %s. "
+ "Circuit is a %s currently %s.",
+ pathbias_state_to_string(circ->path_state),
+ circuit_purpose_to_string(circ->base_.purpose),
+ circuit_state_to_string(circ->base_.state));
+ } else if (circ->path_state < PATH_STATE_USE_ATTEMPTED) {
+ guard = entry_guard_get_by_id_digest(
+ circ->cpath->extend_info->identity_digest);
+ if (guard) {
+ pathbias_measure_use_rate(guard);
+ pathbias_scale_use_rates(guard);
+ guard->use_attempts++;
+ entry_guards_changed();
+
+ log_debug(LD_CIRC,
+ "Marked circuit %d (%f/%f) as used for guard %s=%s.",
+ circ->global_identifier,
+ guard->use_successes, guard->use_attempts,
+ guard->nickname, hex_str(guard->identity, DIGEST_LEN));
+ }
+
+ circ->path_state = PATH_STATE_USE_ATTEMPTED;
+ } else {
+ /* Harmless but educational log message */
+ log_info(LD_CIRC,
+ "Used circuit %d is already in path state %s. "
+ "Circuit is a %s currently %s.",
+ circ->global_identifier,
+ pathbias_state_to_string(circ->path_state),
+ circuit_purpose_to_string(circ->base_.purpose),
+ circuit_state_to_string(circ->base_.state));
+ }
+
+ return;
+}
+
+/**
+ * Check the circuit's path state is appropriate and mark it as
+ * successfully used. Used for path bias usage accounting.
+ *
+ * We don't actually increment the guard's counters until
+ * pathbias_check_close(), because the circuit can still transition
+ * back to PATH_STATE_USE_ATTEMPTED if a stream fails later (this
+ * is done so we can probe the circuit for liveness at close).
+ */
+void
+pathbias_mark_use_success(origin_circuit_t *circ)
+{
+ if (!pathbias_should_count(circ)) {
+ return;
+ }
+
+ if (circ->path_state < PATH_STATE_USE_ATTEMPTED) {
+ log_notice(LD_BUG,
+ "Used circuit %d is in strange path state %s. "
+ "Circuit is a %s currently %s.",
+ circ->global_identifier,
+ pathbias_state_to_string(circ->path_state),
+ circuit_purpose_to_string(circ->base_.purpose),
+ circuit_state_to_string(circ->base_.state));
+
+ pathbias_count_use_attempt(circ);
+ }
+
+ /* We don't do any accounting at the guard until actual circuit close */
+ circ->path_state = PATH_STATE_USE_SUCCEEDED;
+
+ return;
+}
+
+/**
+ * If a stream ever detatches from a circuit in a retriable way,
+ * we need to mark this circuit as still needing either another
+ * successful stream, or in need of a probe.
+ *
+ * An adversary could let the first stream request succeed (ie the
+ * resolve), but then tag and timeout the remainder (via cell
+ * dropping), forcing them on new circuits.
+ *
+ * Rolling back the state will cause us to probe such circuits, which
+ * should lead to probe failures in the event of such tagging due to
+ * either unrecognized cells coming in while we wait for the probe,
+ * or the cipher state getting out of sync in the case of dropped cells.
+ */
+void
+pathbias_mark_use_rollback(origin_circuit_t *circ)
+{
+ if (circ->path_state == PATH_STATE_USE_SUCCEEDED) {
+ log_info(LD_CIRC,
+ "Rolling back pathbias use state to 'attempted' for detached "
+ "circuit %d", circ->global_identifier);
+ circ->path_state = PATH_STATE_USE_ATTEMPTED;
+ }
+}
+
+/**
+ * Actually count a circuit success towards a guard's usage counters
+ * if the path state is appropriate.
+ */
+static void
+pathbias_count_use_success(origin_circuit_t *circ)
+{
+ entry_guard_t *guard;
+
+ if (!pathbias_should_count(circ)) {
+ return;
+ }
+
+ if (circ->path_state != PATH_STATE_USE_SUCCEEDED) {
+ log_notice(LD_BUG,
+ "Successfully used circuit %d is in strange path state %s. "
+ "Circuit is a %s currently %s.",
+ circ->global_identifier,
+ pathbias_state_to_string(circ->path_state),
+ circuit_purpose_to_string(circ->base_.purpose),
+ circuit_state_to_string(circ->base_.state));
+ } else {
+ guard = entry_guard_get_by_id_digest(
+ circ->cpath->extend_info->identity_digest);
+ if (guard) {
+ guard->use_successes++;
+ entry_guards_changed();
+
+ log_debug(LD_CIRC,
+ "Marked circuit %d (%f/%f) as used successfully for guard "
+ "%s=%s.",
+ circ->global_identifier, guard->use_successes,
+ guard->use_attempts, guard->nickname,
+ hex_str(guard->identity, DIGEST_LEN));
+ }
+ }
+
+ return;
+}
+
+/**
+ * Send a probe down a circuit that the client attempted to use,
+ * but for which the stream timed out/failed. The probe is a
+ * RELAY_BEGIN cell with a 0.a.b.c destination address, which
+ * the exit will reject and reply back, echoing that address.
+ *
+ * The reason for such probes is because it is possible to bias
+ * a user's paths simply by causing timeouts, and these timeouts
+ * are not possible to differentiate from unresponsive servers.
+ *
+ * The probe is sent at the end of the circuit lifetime for two
+ * reasons: to prevent cryptographic taggers from being able to
+ * drop cells to cause timeouts, and to prevent easy recognition
+ * of probes before any real client traffic happens.
+ *
+ * Returns -1 if we couldn't probe, 0 otherwise.
+ */
+static int
+pathbias_send_usable_probe(circuit_t *circ)
+{
+ /* Based on connection_ap_handshake_send_begin() */
+ char payload[CELL_PAYLOAD_SIZE];
+ int payload_len;
+ origin_circuit_t *ocirc = TO_ORIGIN_CIRCUIT(circ);
+ crypt_path_t *cpath_layer = NULL;
+ char *probe_nonce = NULL;
+
+ tor_assert(ocirc);
+
+ cpath_layer = ocirc->cpath->prev;
+
+ if (cpath_layer->state != CPATH_STATE_OPEN) {
+ /* This can happen for cannibalized circuits. Their
+ * last hop isn't yet open */
+ log_info(LD_CIRC,
+ "Got pathbias probe request for unopened circuit %d. "
+ "Opened %d, len %d", ocirc->global_identifier,
+ ocirc->has_opened, ocirc->build_state->desired_path_len);
+ return -1;
+ }
+
+ /* We already went down this road. */
+ if (circ->purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING &&
+ ocirc->pathbias_probe_id) {
+ log_info(LD_CIRC,
+ "Got pathbias probe request for circuit %d with "
+ "outstanding probe", ocirc->global_identifier);
+ return -1;
+ }
+
+ /* Can't probe if the channel isn't open */
+ if (circ->n_chan == NULL ||
+ (circ->n_chan->state != CHANNEL_STATE_OPEN
+ && circ->n_chan->state != CHANNEL_STATE_MAINT)) {
+ log_info(LD_CIRC,
+ "Skipping pathbias probe for circuit %d: Channel is not open.",
+ ocirc->global_identifier);
+ return -1;
+ }
+
+ circuit_change_purpose(circ, CIRCUIT_PURPOSE_PATH_BIAS_TESTING);
+
+ /* Update timestamp for when circuit_expire_building() should kill us */
+ tor_gettimeofday(&circ->timestamp_began);
+
+ /* Generate a random address for the nonce */
+ crypto_rand((char*)&ocirc->pathbias_probe_nonce,
+ sizeof(ocirc->pathbias_probe_nonce));
+ ocirc->pathbias_probe_nonce &= 0x00ffffff;
+ probe_nonce = tor_dup_ip(ocirc->pathbias_probe_nonce);
+
+ tor_snprintf(payload,RELAY_PAYLOAD_SIZE, "%s:25", probe_nonce);
+ payload_len = (int)strlen(payload)+1;
+
+ // XXX: need this? Can we assume ipv4 will always be supported?
+ // If not, how do we tell?
+ //if (payload_len <= RELAY_PAYLOAD_SIZE - 4 && edge_conn->begincell_flags) {
+ // set_uint32(payload + payload_len, htonl(edge_conn->begincell_flags));
+ // payload_len += 4;
+ //}
+
+ /* Generate+Store stream id, make sure it's non-zero */
+ ocirc->pathbias_probe_id = get_unique_stream_id_by_circ(ocirc);
+
+ if (ocirc->pathbias_probe_id==0) {
+ log_warn(LD_CIRC,
+ "Ran out of stream IDs on circuit %u during "
+ "pathbias probe attempt.", ocirc->global_identifier);
+ tor_free(probe_nonce);
+ return -1;
+ }
+
+ log_info(LD_CIRC,
+ "Sending pathbias testing cell to %s:25 on stream %d for circ %d.",
+ probe_nonce, ocirc->pathbias_probe_id, ocirc->global_identifier);
+ tor_free(probe_nonce);
+
+ /* Send a test relay cell */
+ if (relay_send_command_from_edge(ocirc->pathbias_probe_id, circ,
+ RELAY_COMMAND_BEGIN, payload,
+ payload_len, cpath_layer) < 0) {
+ log_notice(LD_CIRC,
+ "Failed to send pathbias probe cell on circuit %d.",
+ ocirc->global_identifier);
+ return -1;
+ }
+
+ /* Mark it freshly dirty so it doesn't get expired in the meantime */
+ circ->timestamp_dirty = time(NULL);
+
+ return 0;
+}
+
+/**
+ * Check the response to a pathbias probe, to ensure the
+ * cell is recognized and the nonce and other probe
+ * characteristics are as expected.
+ *
+ * If the response is valid, return 0. Otherwise return < 0.
+ */
+int
+pathbias_check_probe_response(circuit_t *circ, const cell_t *cell)
+{
+ /* Based on connection_edge_process_relay_cell() */
+ relay_header_t rh;
+ int reason;
+ uint32_t ipv4_host;
+ origin_circuit_t *ocirc = TO_ORIGIN_CIRCUIT(circ);
+
+ tor_assert(cell);
+ tor_assert(ocirc);
+ tor_assert(circ->purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING);
+
+ relay_header_unpack(&rh, cell->payload);
+
+ reason = rh.length > 0 ?
+ get_uint8(cell->payload+RELAY_HEADER_SIZE) : END_STREAM_REASON_MISC;
+
+ if (rh.command == RELAY_COMMAND_END &&
+ reason == END_STREAM_REASON_EXITPOLICY &&
+ ocirc->pathbias_probe_id == rh.stream_id) {
+
+ /* Check length+extract host: It is in network order after the reason code.
+ * See connection_edge_end(). */
+ if (rh.length < 9) { /* reason+ipv4+dns_ttl */
+ log_notice(LD_PROTOCOL,
+ "Short path bias probe response length field (%d).", rh.length);
+ return - END_CIRC_REASON_TORPROTOCOL;
+ }
+
+ ipv4_host = ntohl(get_uint32(cell->payload+RELAY_HEADER_SIZE+1));
+
+ /* Check nonce */
+ if (ipv4_host == ocirc->pathbias_probe_nonce) {
+ pathbias_mark_use_success(ocirc);
+ circuit_mark_for_close(circ, END_CIRC_REASON_FINISHED);
+ log_info(LD_CIRC,
+ "Got valid path bias probe back for circ %d, stream %d.",
+ ocirc->global_identifier, ocirc->pathbias_probe_id);
+ return 0;
+ } else {
+ log_notice(LD_CIRC,
+ "Got strange probe value 0x%x vs 0x%x back for circ %d, "
+ "stream %d.", ipv4_host, ocirc->pathbias_probe_nonce,
+ ocirc->global_identifier, ocirc->pathbias_probe_id);
+ return -1;
+ }
+ }
+ log_info(LD_CIRC,
+ "Got another cell back back on pathbias probe circuit %d: "
+ "Command: %d, Reason: %d, Stream-id: %d",
+ ocirc->global_identifier, rh.command, reason, rh.stream_id);
+ return -1;
+}
+
+/**
* Check if a circuit was used and/or closed successfully.
*
* If we attempted to use the circuit to carry a stream but failed
@@ -1414,31 +1927,26 @@ pathbias_count_build_success(origin_circuit_t *circ)
*
* If we *have* successfully used the circuit, or it appears to
* have been closed by us locally, count it as a success.
+ *
+ * Returns 0 if we're done making decisions with the circ,
+ * or -1 if we want to probe it first.
*/
-void
+int
pathbias_check_close(origin_circuit_t *ocirc, int reason)
{
circuit_t *circ = &ocirc->base_;
if (!pathbias_should_count(ocirc)) {
- return;
+ return 0;
}
- if (ocirc->path_state == PATH_STATE_BUILD_SUCCEEDED) {
- if (circ->timestamp_dirty) {
- /* Any circuit where there were attempted streams but no successful
- * streams could be bias */
- log_info(LD_CIRC,
- "Circuit %d closed without successful use for reason %d. "
- "Circuit purpose %d currently %d,%s. Len %d.",
- ocirc->global_identifier,
- reason, circ->purpose, ocirc->has_opened,
- circuit_state_to_string(circ->state),
- ocirc->build_state->desired_path_len);
- pathbias_count_unusable(ocirc);
- } else {
+ switch (ocirc->path_state) {
+ /* If the circuit was closed after building, but before use, we need
+ * to ensure we were the ones who tried to close it (and not a remote
+ * actor). */
+ case PATH_STATE_BUILD_SUCCEEDED:
if (reason & END_CIRC_REASON_FLAG_REMOTE) {
- /* Unused remote circ close reasons all could be bias */
+ /* Remote circ close reasons on an unused circuit all could be bias */
log_info(LD_CIRC,
"Circuit %d remote-closed without successful use for reason %d. "
"Circuit purpose %d currently %d,%s. Len %d.",
@@ -1467,10 +1975,46 @@ pathbias_check_close(origin_circuit_t *ocirc, int reason)
} else {
pathbias_count_successful_close(ocirc);
}
- }
- } else if (ocirc->path_state == PATH_STATE_USE_SUCCEEDED) {
- pathbias_count_successful_close(ocirc);
+ break;
+
+ /* If we tried to use a circuit but failed, we should probe it to ensure
+ * it has not been tampered with. */
+ case PATH_STATE_USE_ATTEMPTED:
+ /* XXX: Only probe and/or count failure if the network is live?
+ * What about clock jumps/suspends? */
+ if (pathbias_send_usable_probe(circ) == 0)
+ return -1;
+ else
+ pathbias_count_use_failed(ocirc);
+
+ /* Any circuit where there were attempted streams but no successful
+ * streams could be bias */
+ log_info(LD_CIRC,
+ "Circuit %d closed without successful use for reason %d. "
+ "Circuit purpose %d currently %d,%s. Len %d.",
+ ocirc->global_identifier,
+ reason, circ->purpose, ocirc->has_opened,
+ circuit_state_to_string(circ->state),
+ ocirc->build_state->desired_path_len);
+ break;
+
+ case PATH_STATE_USE_SUCCEEDED:
+ pathbias_count_successful_close(ocirc);
+ pathbias_count_use_success(ocirc);
+ break;
+
+ case PATH_STATE_USE_FAILED:
+ pathbias_count_use_failed(ocirc);
+ break;
+
+ default:
+ // Other states are uninteresting. No stats to count.
+ break;
}
+
+ ocirc->path_state = PATH_STATE_ALREADY_COUNTED;
+
+ return 0;
}
/**
@@ -1518,6 +2062,7 @@ static void
pathbias_count_collapse(origin_circuit_t *circ)
{
entry_guard_t *guard = NULL;
+
if (!pathbias_should_count(circ)) {
return;
}
@@ -1542,8 +2087,13 @@ pathbias_count_collapse(origin_circuit_t *circ)
}
}
+/**
+ * Count a known failed circuit (because we could not probe it).
+ *
+ * This counter is informational.
+ */
static void
-pathbias_count_unusable(origin_circuit_t *circ)
+pathbias_count_use_failed(origin_circuit_t *circ)
{
entry_guard_t *guard = NULL;
if (!pathbias_should_count(circ)) {
@@ -1562,6 +2112,8 @@ pathbias_count_unusable(origin_circuit_t *circ)
/* In rare cases, CIRCUIT_PURPOSE_TESTING can get converted to
* CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT and have no guards here.
* No need to log that case. */
+ /* XXX note cut-and-paste code in this function compared to nearby
+ * functions. Would be nice to refactor. -RD */
log_info(LD_CIRC,
"Stream-failing circuit has no known guard. "
"Circuit is a %s currently %s",
@@ -1603,20 +2155,20 @@ pathbias_count_timeout(origin_circuit_t *circ)
}
/**
- * Return the number of circuits counted as successfully closed for
- * this guard.
- *
- * Also add in the currently open circuits to give them the benefit
- * of the doubt.
+ * Helper function to count all of the currently opened circuits
+ * for a guard that are in a given path state range. The state
+ * range is inclusive on both ends.
*/
-double
-pathbias_get_closed_count(entry_guard_t *guard)
+static int
+pathbias_count_circs_in_states(entry_guard_t *guard,
+ path_state_t from,
+ path_state_t to)
{
- circuit_t *circ = global_circuitlist;
+ circuit_t *circ;
int open_circuits = 0;
- /* Count currently open circuits. Give them the benefit of the doubt */
- for ( ; circ; circ = circ->next) {
+ /* Count currently open circuits. Give them the benefit of the doubt. */
+ for (circ = global_circuitlist; circ; circ = circ->next) {
origin_circuit_t *ocirc = NULL;
if (!CIRCUIT_IS_ORIGIN(circ) || /* didn't originate here */
circ->marked_for_close) /* already counted */
@@ -1627,62 +2179,196 @@ pathbias_get_closed_count(entry_guard_t *guard)
if (!ocirc->cpath || !ocirc->cpath->extend_info)
continue;
- if (ocirc->path_state >= PATH_STATE_BUILD_SUCCEEDED &&
+ if (ocirc->path_state >= from &&
+ ocirc->path_state <= to &&
+ pathbias_should_count(ocirc) &&
fast_memeq(guard->identity,
- ocirc->cpath->extend_info->identity_digest,
- DIGEST_LEN)) {
+ ocirc->cpath->extend_info->identity_digest,
+ DIGEST_LEN)) {
+ log_debug(LD_CIRC, "Found opened circuit %d in path_state %s",
+ ocirc->global_identifier,
+ pathbias_state_to_string(ocirc->path_state));
open_circuits++;
}
}
- return guard->successful_circuits_closed + open_circuits;
+ return open_circuits;
}
/**
- * This function checks the consensus parameters to decide
- * if it should return guard->circ_successes or
- * guard->successful_circuits_closed.
+ * Return the number of circuits counted as successfully closed for
+ * this guard.
+ *
+ * Also add in the currently open circuits to give them the benefit
+ * of the doubt.
*/
double
-pathbias_get_success_count(entry_guard_t *guard)
+pathbias_get_close_success_count(entry_guard_t *guard)
{
- if (pathbias_use_close_counts(get_options())) {
- return pathbias_get_closed_count(guard);
- } else {
- return guard->circ_successes;
- }
+ return guard->successful_circuits_closed +
+ pathbias_count_circs_in_states(guard,
+ PATH_STATE_BUILD_SUCCEEDED,
+ PATH_STATE_USE_SUCCEEDED);
}
-/** Increment the number of times we successfully extended a circuit to
- * 'guard', first checking if the failure rate is high enough that we should
- * eliminate the guard. Return -1 if the guard looks no good; return 0 if the
- * guard looks fine. */
-static int
-entry_guard_inc_circ_attempt_count(entry_guard_t *guard)
+/**
+ * Return the number of circuits counted as successfully used
+ * this guard.
+ *
+ * Also add in the currently open circuits that we are attempting
+ * to use to give them the benefit of the doubt.
+ */
+double
+pathbias_get_use_success_count(entry_guard_t *guard)
+{
+ return guard->use_successes +
+ pathbias_count_circs_in_states(guard,
+ PATH_STATE_USE_ATTEMPTED,
+ PATH_STATE_USE_SUCCEEDED);
+}
+
+/**
+ * Check the path bias use rate against our consensus parameter limits.
+ *
+ * Emits a log message if the use success rates are too low.
+ *
+ * If pathbias_get_dropguards() is set, we also disable the use of
+ * very failure prone guards.
+ */
+static void
+pathbias_measure_use_rate(entry_guard_t *guard)
{
const or_options_t *options = get_options();
- entry_guards_changed();
+ if (guard->use_attempts > pathbias_get_min_use(options)) {
+ /* Note: We rely on the < comparison here to allow us to set a 0
+ * rate and disable the feature entirely. If refactoring, don't
+ * change to <= */
+ if (pathbias_get_use_success_count(guard)/guard->use_attempts
+ < pathbias_get_extreme_use_rate(options)) {
+ /* Dropping is currently disabled by default. */
+ if (pathbias_get_dropguards(options)) {
+ if (!guard->path_bias_disabled) {
+ log_warn(LD_CIRC,
+ "Your Guard %s=%s is failing to carry an extremely large "
+ "amount of stream on its circuits. "
+ "To avoid potential route manipulation attacks, Tor has "
+ "disabled use of this guard. "
+ "Use counts are %ld/%ld. Success counts are %ld/%ld. "
+ "%ld circuits completed, %ld were unusable, %ld collapsed, "
+ "and %ld timed out. "
+ "For reference, your timeout cutoff is %ld seconds.",
+ guard->nickname, hex_str(guard->identity, DIGEST_LEN),
+ tor_lround(pathbias_get_use_success_count(guard)),
+ tor_lround(guard->use_attempts),
+ tor_lround(pathbias_get_close_success_count(guard)),
+ tor_lround(guard->circ_attempts),
+ tor_lround(guard->circ_successes),
+ tor_lround(guard->unusable_circuits),
+ tor_lround(guard->collapsed_circuits),
+ tor_lround(guard->timeouts),
+ tor_lround(circ_times.close_ms/1000));
+ guard->path_bias_disabled = 1;
+ guard->bad_since = approx_time();
+ entry_guards_changed();
+ return;
+ }
+ } else if (!guard->path_bias_use_extreme) {
+ guard->path_bias_use_extreme = 1;
+ log_warn(LD_CIRC,
+ "Your Guard %s=%s is failing to carry an extremely large "
+ "amount of streams on its circuits. "
+ "This could indicate a route manipulation attack, network "
+ "overload, bad local network connectivity, or a bug. "
+ "Use counts are %ld/%ld. Success counts are %ld/%ld. "
+ "%ld circuits completed, %ld were unusable, %ld collapsed, "
+ "and %ld timed out. "
+ "For reference, your timeout cutoff is %ld seconds.",
+ guard->nickname, hex_str(guard->identity, DIGEST_LEN),
+ tor_lround(pathbias_get_use_success_count(guard)),
+ tor_lround(guard->use_attempts),
+ tor_lround(pathbias_get_close_success_count(guard)),
+ tor_lround(guard->circ_attempts),
+ tor_lround(guard->circ_successes),
+ tor_lround(guard->unusable_circuits),
+ tor_lround(guard->collapsed_circuits),
+ tor_lround(guard->timeouts),
+ tor_lround(circ_times.close_ms/1000));
+ }
+ } else if (pathbias_get_use_success_count(guard)/guard->use_attempts
+ < pathbias_get_notice_use_rate(options)) {
+ if (!guard->path_bias_use_noticed) {
+ guard->path_bias_use_noticed = 1;
+ log_notice(LD_CIRC,
+ "Your Guard %s=%s is failing to carry more streams on its "
+ "circuits than usual. "
+ "Most likely this means the Tor network is overloaded "
+ "or your network connection is poor. "
+ "Use counts are %ld/%ld. Success counts are %ld/%ld. "
+ "%ld circuits completed, %ld were unusable, %ld collapsed, "
+ "and %ld timed out. "
+ "For reference, your timeout cutoff is %ld seconds.",
+ guard->nickname, hex_str(guard->identity, DIGEST_LEN),
+ tor_lround(pathbias_get_use_success_count(guard)),
+ tor_lround(guard->use_attempts),
+ tor_lround(pathbias_get_close_success_count(guard)),
+ tor_lround(guard->circ_attempts),
+ tor_lround(guard->circ_successes),
+ tor_lround(guard->unusable_circuits),
+ tor_lround(guard->collapsed_circuits),
+ tor_lround(guard->timeouts),
+ tor_lround(circ_times.close_ms/1000));
+ }
+ }
+ }
+}
+
+/**
+ * Check the path bias circuit close status rates against our consensus
+ * parameter limits.
+ *
+ * Emits a log message if the use success rates are too low.
+ *
+ * If pathbias_get_dropguards() is set, we also disable the use of
+ * very failure prone guards.
+ *
+ * XXX: This function shares similar log messages and checks to
+ * pathbias_measure_use_rate(). It may be possible to combine them
+ * eventually, especially if we can ever remove the need for 3
+ * levels of closure warns (if the overall circuit failure rate
+ * goes down with ntor). One way to do so would be to multiply
+ * the build rate with the use rate to get an idea of the total
+ * fraction of the total network paths the user is able to use.
+ * See ticket #8159.
+ */
+static void
+pathbias_measure_close_rate(entry_guard_t *guard)
+{
+ const or_options_t *options = get_options();
if (guard->circ_attempts > pathbias_get_min_circs(options)) {
/* Note: We rely on the < comparison here to allow us to set a 0
* rate and disable the feature entirely. If refactoring, don't
* change to <= */
- if (pathbias_get_success_count(guard)/guard->circ_attempts
+ if (pathbias_get_close_success_count(guard)/guard->circ_attempts
< pathbias_get_extreme_rate(options)) {
/* Dropping is currently disabled by default. */
if (pathbias_get_dropguards(options)) {
if (!guard->path_bias_disabled) {
log_warn(LD_CIRC,
- "Your Guard %s=%s is failing an extremely large amount of "
- "circuits. To avoid potential route manipluation attacks, "
- "Tor has disabled use of this guard. "
- "Success counts are %ld/%ld. %ld circuits completed, %ld "
- "were unusable, %ld collapsed, and %ld timed out. For "
- "reference, your timeout cutoff is %ld seconds.",
+ "Your Guard %s=%s is failing an extremely large "
+ "amount of circuits. "
+ "To avoid potential route manipulation attacks, Tor has "
+ "disabled use of this guard. "
+ "Success counts are %ld/%ld. Use counts are %ld/%ld. "
+ "%ld circuits completed, %ld were unusable, %ld collapsed, "
+ "and %ld timed out. "
+ "For reference, your timeout cutoff is %ld seconds.",
guard->nickname, hex_str(guard->identity, DIGEST_LEN),
- tor_lround(pathbias_get_closed_count(guard)),
+ tor_lround(pathbias_get_close_success_count(guard)),
tor_lround(guard->circ_attempts),
+ tor_lround(pathbias_get_use_success_count(guard)),
+ tor_lround(guard->use_attempts),
tor_lround(guard->circ_successes),
tor_lround(guard->unusable_circuits),
tor_lround(guard->collapsed_circuits),
@@ -1690,104 +2376,190 @@ entry_guard_inc_circ_attempt_count(entry_guard_t *guard)
tor_lround(circ_times.close_ms/1000));
guard->path_bias_disabled = 1;
guard->bad_since = approx_time();
- return -1;
+ entry_guards_changed();
+ return;
}
} else if (!guard->path_bias_extreme) {
guard->path_bias_extreme = 1;
log_warn(LD_CIRC,
- "Your Guard %s=%s is failing an extremely large amount of "
- "circuits. This could indicate a route manipulation attack, "
+ "Your Guard %s=%s is failing an extremely large "
+ "amount of circuits. "
+ "This could indicate a route manipulation attack, "
"extreme network overload, or a bug. "
- "Success counts are %ld/%ld. %ld circuits completed, %ld "
- "were unusable, %ld collapsed, and %ld timed out. For "
- "reference, your timeout cutoff is %ld seconds.",
+ "Success counts are %ld/%ld. Use counts are %ld/%ld. "
+ "%ld circuits completed, %ld were unusable, %ld collapsed, "
+ "and %ld timed out. "
+ "For reference, your timeout cutoff is %ld seconds.",
guard->nickname, hex_str(guard->identity, DIGEST_LEN),
- tor_lround(pathbias_get_closed_count(guard)),
+ tor_lround(pathbias_get_close_success_count(guard)),
tor_lround(guard->circ_attempts),
+ tor_lround(pathbias_get_use_success_count(guard)),
+ tor_lround(guard->use_attempts),
tor_lround(guard->circ_successes),
tor_lround(guard->unusable_circuits),
tor_lround(guard->collapsed_circuits),
tor_lround(guard->timeouts),
tor_lround(circ_times.close_ms/1000));
}
- } else if (pathbias_get_success_count(guard)/((double)guard->circ_attempts)
- < pathbias_get_warn_rate(options)) {
+ } else if (pathbias_get_close_success_count(guard)/guard->circ_attempts
+ < pathbias_get_warn_rate(options)) {
if (!guard->path_bias_warned) {
guard->path_bias_warned = 1;
log_warn(LD_CIRC,
- "Your Guard %s=%s is failing a very large amount of "
- "circuits. Most likely this means the Tor network is "
+ "Your Guard %s=%s is failing a very large "
+ "amount of circuits. "
+ "Most likely this means the Tor network is "
"overloaded, but it could also mean an attack against "
- "you or the potentially the guard itself. "
- "Success counts are %ld/%ld. %ld circuits completed, %ld "
- "were unusable, %ld collapsed, and %ld timed out. For "
- "reference, your timeout cutoff is %ld seconds.",
+ "you or potentially the guard itself. "
+ "Success counts are %ld/%ld. Use counts are %ld/%ld. "
+ "%ld circuits completed, %ld were unusable, %ld collapsed, "
+ "and %ld timed out. "
+ "For reference, your timeout cutoff is %ld seconds.",
guard->nickname, hex_str(guard->identity, DIGEST_LEN),
- tor_lround(pathbias_get_closed_count(guard)),
+ tor_lround(pathbias_get_close_success_count(guard)),
tor_lround(guard->circ_attempts),
+ tor_lround(pathbias_get_use_success_count(guard)),
+ tor_lround(guard->use_attempts),
tor_lround(guard->circ_successes),
tor_lround(guard->unusable_circuits),
tor_lround(guard->collapsed_circuits),
tor_lround(guard->timeouts),
tor_lround(circ_times.close_ms/1000));
}
- } else if (pathbias_get_success_count(guard)/((double)guard->circ_attempts)
+ } else if (pathbias_get_close_success_count(guard)/guard->circ_attempts
< pathbias_get_notice_rate(options)) {
if (!guard->path_bias_noticed) {
guard->path_bias_noticed = 1;
log_notice(LD_CIRC,
- "Your Guard %s=%s is failing more circuits than usual. "
- "Most likely this means the Tor network is overloaded. "
- "Success counts are %ld/%ld. %ld circuits completed, %ld "
- "were unusable, %ld collapsed, and %ld timed out. For "
- "reference, your timeout cutoff is %ld seconds.",
- guard->nickname, hex_str(guard->identity, DIGEST_LEN),
- tor_lround(pathbias_get_closed_count(guard)),
- tor_lround(guard->circ_attempts),
- tor_lround(guard->circ_successes),
- tor_lround(guard->unusable_circuits),
- tor_lround(guard->collapsed_circuits),
- tor_lround(guard->timeouts),
- tor_lround(circ_times.close_ms/1000));
+ "Your Guard %s=%s is failing more circuits than "
+ "usual. "
+ "Most likely this means the Tor network is overloaded. "
+ "Success counts are %ld/%ld. Use counts are %ld/%ld. "
+ "%ld circuits completed, %ld were unusable, %ld collapsed, "
+ "and %ld timed out. "
+ "For reference, your timeout cutoff is %ld seconds.",
+ guard->nickname, hex_str(guard->identity, DIGEST_LEN),
+ tor_lround(pathbias_get_close_success_count(guard)),
+ tor_lround(guard->circ_attempts),
+ tor_lround(pathbias_get_use_success_count(guard)),
+ tor_lround(guard->use_attempts),
+ tor_lround(guard->circ_successes),
+ tor_lround(guard->unusable_circuits),
+ tor_lround(guard->collapsed_circuits),
+ tor_lround(guard->timeouts),
+ tor_lround(circ_times.close_ms/1000));
}
}
}
+}
+
+/**
+ * This function scales the path bias use rates if we have
+ * more data than the scaling threshold. This allows us to
+ * be more sensitive to recent measurements.
+ *
+ * XXX: The attempt count transfer stuff here might be done
+ * better by keeping separate pending counters that get
+ * transfered at circuit close. See ticket #8160.
+ */
+static void
+pathbias_scale_close_rates(entry_guard_t *guard)
+{
+ const or_options_t *options = get_options();
/* If we get a ton of circuits, just scale everything down */
if (guard->circ_attempts > pathbias_get_scale_threshold(options)) {
- const int scale_factor = pathbias_get_scale_factor(options);
- const int mult_factor = pathbias_get_mult_factor(options);
+ double scale_ratio = pathbias_get_scale_ratio(options);
+ int opened_attempts = pathbias_count_circs_in_states(guard,
+ PATH_STATE_BUILD_ATTEMPTED, PATH_STATE_BUILD_ATTEMPTED);
+ int opened_built = pathbias_count_circs_in_states(guard,
+ PATH_STATE_BUILD_SUCCEEDED,
+ PATH_STATE_USE_FAILED);
+ guard->circ_attempts -= opened_attempts;
+ guard->circ_successes -= opened_built;
+
+ guard->circ_attempts *= scale_ratio;
+ guard->circ_successes *= scale_ratio;
+ guard->timeouts *= scale_ratio;
+ guard->successful_circuits_closed *= scale_ratio;
+ guard->collapsed_circuits *= scale_ratio;
+ guard->unusable_circuits *= scale_ratio;
+
+ guard->circ_attempts += opened_attempts;
+ guard->circ_successes += opened_built;
+
+ entry_guards_changed();
+
log_info(LD_CIRC,
- "Scaling pathbias counts to (%f/%f)*(%d/%d) for guard %s=%s",
- guard->circ_successes, guard->circ_attempts,
- mult_factor, scale_factor, guard->nickname,
- hex_str(guard->identity, DIGEST_LEN));
-
- guard->circ_attempts *= mult_factor;
- guard->circ_successes *= mult_factor;
- guard->timeouts *= mult_factor;
- guard->successful_circuits_closed *= mult_factor;
- guard->collapsed_circuits *= mult_factor;
- guard->unusable_circuits *= mult_factor;
-
- guard->circ_attempts /= scale_factor;
- guard->circ_successes /= scale_factor;
- guard->timeouts /= scale_factor;
- guard->successful_circuits_closed /= scale_factor;
- guard->collapsed_circuits /= scale_factor;
- guard->unusable_circuits /= scale_factor;
+ "Scaled pathbias counts to (%f,%f)/%f (%d/%d open) for guard "
+ "%s=%s",
+ guard->circ_successes, guard->successful_circuits_closed,
+ guard->circ_attempts, opened_built, opened_attempts,
+ guard->nickname, hex_str(guard->identity, DIGEST_LEN));
}
+}
+
+/**
+ * This function scales the path bias circuit close rates if we have
+ * more data than the scaling threshold. This allows us to be more
+ * sensitive to recent measurements.
+ *
+ * XXX: The attempt count transfer stuff here might be done
+ * better by keeping separate pending counters that get
+ * transfered at circuit close. See ticket #8160.
+ */
+void
+pathbias_scale_use_rates(entry_guard_t *guard)
+{
+ const or_options_t *options = get_options();
+
+ /* If we get a ton of circuits, just scale everything down */
+ if (guard->use_attempts > pathbias_get_scale_use_threshold(options)) {
+ double scale_ratio = pathbias_get_scale_ratio(options);
+ int opened_attempts = pathbias_count_circs_in_states(guard,
+ PATH_STATE_USE_ATTEMPTED, PATH_STATE_USE_SUCCEEDED);
+ guard->use_attempts -= opened_attempts;
+
+ guard->use_attempts *= scale_ratio;
+ guard->use_successes *= scale_ratio;
+
+ guard->use_attempts += opened_attempts;
+
+ log_info(LD_CIRC,
+ "Scaled pathbias use counts to %f/%f (%d open) for guard %s=%s",
+ guard->use_successes, guard->use_attempts, opened_attempts,
+ guard->nickname, hex_str(guard->identity, DIGEST_LEN));
+ entry_guards_changed();
+ }
+}
+
+/** Increment the number of times we successfully extended a circuit to
+ * <b>guard</b>, first checking if the failure rate is high enough that
+ * we should eliminate the guard. Return -1 if the guard looks no good;
+ * return 0 if the guard looks fine.
+ */
+static int
+entry_guard_inc_circ_attempt_count(entry_guard_t *guard)
+{
+ entry_guards_changed();
+
+ pathbias_measure_close_rate(guard);
+
+ if (guard->path_bias_disabled)
+ return -1;
+
+ pathbias_scale_close_rates(guard);
guard->circ_attempts++;
+
log_info(LD_CIRC, "Got success count %f/%f for guard %s=%s",
guard->circ_successes, guard->circ_attempts, guard->nickname,
hex_str(guard->identity, DIGEST_LEN));
return 0;
}
-/** A created or extended cell came back to us on the circuit, and it included
- * <b>reply</b> as its body. (If <b>reply_type</b> is CELL_CREATED, the body
- * contains (the second DH key, plus KH). If <b>reply_type</b> is
- * CELL_CREATED_FAST, the body contains a secret y and a hash H(x|y).)
+/** A "created" cell <b>reply</b> came back to us on circuit <b>circ</b>.
+ * (The body of <b>reply</b> varies depending on what sort of handshake
+ * this is.)
*
* Calculate the appropriate keys and digests, make sure KH is
* correct, and initialize this hop of the cpath.
@@ -1795,14 +2567,14 @@ entry_guard_inc_circ_attempt_count(entry_guard_t *guard)
* Return - reason if we want to mark circ for close, else return 0.
*/
int
-circuit_finish_handshake(origin_circuit_t *circ, uint8_t reply_type,
- const uint8_t *reply)
+circuit_finish_handshake(origin_circuit_t *circ,
+ const created_cell_t *reply)
{
char keys[CPATH_KEY_MATERIAL_LEN];
crypt_path_t *hop;
int rv;
- if ((rv = pathbias_count_circ_attempt(circ)) < 0)
+ if ((rv = pathbias_count_build_attempt(circ)) < 0)
return rv;
if (circ->cpath->state == CPATH_STATE_AWAITING_KEYS) {
@@ -1816,39 +2588,25 @@ circuit_finish_handshake(origin_circuit_t *circ, uint8_t reply_type,
}
tor_assert(hop->state == CPATH_STATE_AWAITING_KEYS);
- if (reply_type == CELL_CREATED && hop->dh_handshake_state) {
- if (onion_skin_client_handshake(hop->dh_handshake_state, (char*)reply,keys,
- DIGEST_LEN*2+CIPHER_KEY_LEN*2) < 0) {
+ {
+ if (onion_skin_client_handshake(hop->handshake_state.tag,
+ &hop->handshake_state,
+ reply->reply, reply->handshake_len,
+ (uint8_t*)keys, sizeof(keys),
+ (uint8_t*)hop->rend_circ_nonce) < 0) {
log_warn(LD_CIRC,"onion_skin_client_handshake failed.");
return -END_CIRC_REASON_TORPROTOCOL;
}
- /* Remember hash of g^xy */
- memcpy(hop->handshake_digest, reply+DH_KEY_LEN, DIGEST_LEN);
- } else if (reply_type == CELL_CREATED_FAST && !hop->dh_handshake_state) {
- if (fast_client_handshake(hop->fast_handshake_state, reply,
- (uint8_t*)keys,
- DIGEST_LEN*2+CIPHER_KEY_LEN*2) < 0) {
- log_warn(LD_CIRC,"fast_client_handshake failed.");
- return -END_CIRC_REASON_TORPROTOCOL;
- }
- memcpy(hop->handshake_digest, reply+DIGEST_LEN, DIGEST_LEN);
- } else {
- log_warn(LD_PROTOCOL,"CREATED cell type did not match CREATE cell type.");
- return -END_CIRC_REASON_TORPROTOCOL;
}
- crypto_dh_free(hop->dh_handshake_state); /* don't need it anymore */
- hop->dh_handshake_state = NULL;
-
- memset(hop->fast_handshake_state, 0, sizeof(hop->fast_handshake_state));
+ onion_handshake_state_release(&hop->handshake_state);
if (circuit_init_cpath_crypto(hop, keys, 0)<0) {
return -END_CIRC_REASON_TORPROTOCOL;
}
hop->state = CPATH_STATE_OPEN;
- log_info(LD_CIRC,"Finished building %scircuit hop:",
- (reply_type == CELL_CREATED_FAST) ? "fast " : "");
+ log_info(LD_CIRC,"Finished building circuit hop:");
circuit_log_path(LOG_INFO,LD_CIRC,circ);
control_event_circuit_status(circ, CIRC_EVENT_EXTENDED, 0);
@@ -1857,9 +2615,9 @@ circuit_finish_handshake(origin_circuit_t *circ, uint8_t reply_type,
/** We received a relay truncated cell on circ.
*
- * Since we don't ask for truncates currently, getting a truncated
+ * Since we don't send truncates currently, getting a truncated
* means that a connection broke or an extend failed. For now,
- * just give up: for circ to close, and return 0.
+ * just give up: force circ to close, and return 0.
*/
int
circuit_truncated(origin_circuit_t *circ, crypt_path_t *layer, int reason)
@@ -1870,7 +2628,7 @@ circuit_truncated(origin_circuit_t *circ, crypt_path_t *layer, int reason)
tor_assert(circ);
tor_assert(layer);
- /* XXX Since we don't ask for truncates currently, getting a truncated
+ /* XXX Since we don't send truncates currently, getting a truncated
* means that a connection broke or an extend failed. For now,
* just give up.
*/
@@ -1908,24 +2666,26 @@ circuit_truncated(origin_circuit_t *circ, crypt_path_t *layer, int reason)
* cell back.
*/
int
-onionskin_answer(or_circuit_t *circ, uint8_t cell_type, const char *payload,
- const char *keys)
+onionskin_answer(or_circuit_t *circ,
+ const created_cell_t *created_cell,
+ const char *keys,
+ const uint8_t *rend_circ_nonce)
{
cell_t cell;
crypt_path_t *tmp_cpath;
+ if (created_cell_format(&cell, created_cell) < 0) {
+ log_warn(LD_BUG,"couldn't format created cell (type=%d, len=%d)",
+ (int)created_cell->cell_type, (int)created_cell->handshake_len);
+ return -1;
+ }
+ cell.circ_id = circ->p_circ_id;
+
tmp_cpath = tor_malloc_zero(sizeof(crypt_path_t));
tmp_cpath->magic = CRYPT_PATH_MAGIC;
- memset(&cell, 0, sizeof(cell_t));
- cell.command = cell_type;
- cell.circ_id = circ->p_circ_id;
-
circuit_set_state(TO_CIRCUIT(circ), CIRCUIT_STATE_OPEN);
- memcpy(cell.payload, payload,
- cell_type == CELL_CREATED ? ONIONSKIN_REPLY_LEN : DIGEST_LEN*2);
-
log_debug(LD_CIRC,"init digest forward 0x%.8x, backward 0x%.8x.",
(unsigned int)get_uint32(keys),
(unsigned int)get_uint32(keys+20));
@@ -1941,12 +2701,9 @@ onionskin_answer(or_circuit_t *circ, uint8_t cell_type, const char *payload,
tmp_cpath->magic = 0;
tor_free(tmp_cpath);
- if (cell_type == CELL_CREATED)
- memcpy(circ->handshake_digest, cell.payload+DH_KEY_LEN, DIGEST_LEN);
- else
- memcpy(circ->handshake_digest, cell.payload+DIGEST_LEN, DIGEST_LEN);
+ memcpy(circ->rend_circ_nonce, rend_circ_nonce, DIGEST_LEN);
- circ->is_first_hop = (cell_type == CELL_CREATED_FAST);
+ circ->is_first_hop = (created_cell->cell_type == CELL_CREATED_FAST);
append_cell_to_circuit_queue(TO_CIRCUIT(circ),
circ->p_chan, &cell, CELL_DIRECTION_IN, 0);
@@ -1964,15 +2721,18 @@ onionskin_answer(or_circuit_t *circ, uint8_t cell_type, const char *payload,
return 0;
}
-/** Choose a length for a circuit of purpose <b>purpose</b>.
- * Default length is 3 + the number of endpoints that would give something
- * away. If the routerlist <b>routers</b> doesn't have enough routers
+/** Choose a length for a circuit of purpose <b>purpose</b>: three + the
+ * number of endpoints that would give something away about our destination.
+ *
+ * If the routerlist <b>nodes</b> doesn't have enough routers
* to handle the desired path length, return as large a path length as
* is feasible, except if it's less than 2, in which case return -1.
+ * XXX ^^ I think this behavior is a hold-over from back when we had only a
+ * few relays in the network, and certainly back before guards existed.
+ * We should very likely get rid of it. -RD
*/
static int
-new_route_len(uint8_t purpose, extend_info_t *exit,
- smartlist_t *nodes)
+new_route_len(uint8_t purpose, extend_info_t *exit, smartlist_t *nodes)
{
int num_acceptable_routers;
int routelen;
@@ -2037,7 +2797,7 @@ circuit_all_predicted_ports_handled(time_t now, int *need_uptime,
enough = (smartlist_len(sl) == 0);
for (i = 0; i < smartlist_len(sl); ++i) {
port = smartlist_get(sl, i);
- if (smartlist_string_num_isin(LongLivedServices, *port))
+ if (smartlist_contains_int_as_string(LongLivedServices, *port))
*need_uptime = 1;
tor_free(port);
}
@@ -2485,6 +3245,9 @@ circuit_extend_to_new_exit(origin_circuit_t *circ, extend_info_t *exit)
{
int err_reason = 0;
warn_if_last_router_excluded(circ, exit);
+
+ tor_gettimeofday(&circ->base_.timestamp_began);
+
circuit_append_new_exit(circ, exit);
circuit_set_state(TO_CIRCUIT(circ), CIRCUIT_STATE_BUILDING);
if ((err_reason = circuit_send_next_onion_skin(circ))<0) {
@@ -2494,9 +3257,7 @@ circuit_extend_to_new_exit(origin_circuit_t *circ, extend_info_t *exit)
return -1;
}
- /* Set timestamp_dirty, so we can check it for path use bias */
- if (!circ->base_.timestamp_dirty)
- circ->base_.timestamp_dirty = time(NULL);
+ // XXX: Should cannibalized circuits be dirty or not? Not easy to say..
return 0;
}
@@ -2751,8 +3512,9 @@ 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,
- crypto_pk_t *onion_key,
- const tor_addr_t *addr, uint16_t port)
+ crypto_pk_t *onion_key,
+ const curve25519_public_key_t *curve25519_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);
@@ -2760,6 +3522,13 @@ extend_info_new(const char *nickname, const char *digest,
strlcpy(info->nickname, nickname, sizeof(info->nickname));
if (onion_key)
info->onion_key = crypto_pk_dup_key(onion_key);
+#ifdef CURVE25519_ENABLED
+ if (curve25519_key)
+ memcpy(&info->curve25519_onion_key, curve25519_key,
+ sizeof(curve25519_public_key_t));
+#else
+ (void)curve25519_key;
+#endif
tor_addr_copy(&info->addr, addr);
info->port = port;
return info;
@@ -2794,12 +3563,14 @@ extend_info_from_node(const node_t *node, int for_direct_connect)
return extend_info_new(node->ri->nickname,
node->identity,
node->ri->onion_pkey,
+ node->ri->onion_curve25519_pkey,
&ap.addr,
ap.port);
else if (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);
else
diff --git a/src/or/circuitbuild.h b/src/or/circuitbuild.h
index 8cd61fae2d..3ca8d1531d 100644
--- a/src/or/circuitbuild.h
+++ b/src/or/circuitbuild.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -30,12 +30,15 @@ void circuit_note_clock_jumped(int seconds_elapsed);
int circuit_extend(cell_t *cell, circuit_t *circ);
int circuit_init_cpath_crypto(crypt_path_t *cpath, const char *key_data,
int reverse);
-int circuit_finish_handshake(origin_circuit_t *circ, uint8_t cell_type,
- const uint8_t *reply);
+struct created_cell_t;
+int circuit_finish_handshake(origin_circuit_t *circ,
+ const struct created_cell_t *created_cell);
int circuit_truncated(origin_circuit_t *circ, crypt_path_t *layer,
int reason);
-int onionskin_answer(or_circuit_t *circ, uint8_t cell_type,
- const char *payload, const char *keys);
+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);
@@ -43,8 +46,9 @@ 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,
- crypto_pk_t *onion_key,
- const tor_addr_t *addr, uint16_t port);
+ crypto_pk_t *onion_key,
+ const curve25519_public_key_t *curve25519_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);
void extend_info_free(extend_info_t *info);
@@ -54,9 +58,14 @@ const char *build_state_get_exit_nickname(cpath_build_state_t *state);
const node_t *choose_good_entry_server(uint8_t purpose,
cpath_build_state_t *state);
double pathbias_get_extreme_rate(const or_options_t *options);
+double pathbias_get_extreme_use_rate(const or_options_t *options);
int pathbias_get_dropguards(const or_options_t *options);
void pathbias_count_timeout(origin_circuit_t *circ);
-void pathbias_check_close(origin_circuit_t *circ, int reason);
+int pathbias_check_close(origin_circuit_t *circ, int reason);
+int pathbias_check_probe_response(circuit_t *circ, const cell_t *cell);
+void pathbias_count_use_attempt(origin_circuit_t *circ);
+void pathbias_mark_use_success(origin_circuit_t *circ);
+void pathbias_mark_use_rollback(origin_circuit_t *circ);
#endif
diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c
index 0ee29000ed..6987dc42fd 100644
--- a/src/or/circuitlist.c
+++ b/src/or/circuitlist.c
@@ -1,7 +1,7 @@
/* Copyright 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -23,6 +23,7 @@
#include "networkstatus.h"
#include "nodelist.h"
#include "onion.h"
+#include "onion_fast.h"
#include "relay.h"
#include "rendclient.h"
#include "rendcommon.h"
@@ -251,7 +252,7 @@ circuit_set_state(circuit_t *circ, uint8_t state)
smartlist_add(circuits_pending_chans, circ);
}
if (state == CIRCUIT_STATE_OPEN)
- tor_assert(!circ->n_chan_onionskin);
+ tor_assert(!circ->n_chan_create_cell);
circ->state = state;
}
@@ -413,6 +414,8 @@ circuit_purpose_to_controller_string(uint8_t purpose)
return "MEASURE_TIMEOUT";
case CIRCUIT_PURPOSE_CONTROLLER:
return "CONTROLLER";
+ case CIRCUIT_PURPOSE_PATH_BIAS_TESTING:
+ return "PATH_BIAS_TESTING";
default:
tor_snprintf(buf, sizeof(buf), "UNKNOWN_%d", (int)purpose);
@@ -440,6 +443,7 @@ circuit_purpose_to_controller_hs_state_string(uint8_t purpose)
case CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT:
case CIRCUIT_PURPOSE_TESTING:
case CIRCUIT_PURPOSE_CONTROLLER:
+ case CIRCUIT_PURPOSE_PATH_BIAS_TESTING:
return NULL;
case CIRCUIT_PURPOSE_INTRO_POINT:
@@ -678,7 +682,7 @@ circuit_free(circuit_t *circ)
}
extend_info_free(circ->n_hop);
- tor_free(circ->n_chan_onionskin);
+ tor_free(circ->n_chan_create_cell);
/* Remove from map. */
circuit_set_n_circid_chan(circ, 0, NULL);
@@ -748,7 +752,8 @@ circuit_free_cpath_node(crypt_path_t *victim)
crypto_cipher_free(victim->b_crypto);
crypto_digest_free(victim->f_digest);
crypto_digest_free(victim->b_digest);
- crypto_dh_free(victim->dh_handshake_state);
+ onion_handshake_state_release(&victim->handshake_state);
+ crypto_dh_free(victim->rend_dh_handshake_state);
extend_info_free(victim->extend_info);
memwipe(victim, 0xBB, sizeof(crypt_path_t)); /* poison memory */
@@ -778,8 +783,8 @@ circuit_dump_conn_details(int severity,
int this_circid,
int other_circid)
{
- log(severity, LD_CIRC, "Conn %d has %s circuit: circID %d (other side %d), "
- "state %d (%s), born %ld:",
+ tor_log(severity, LD_CIRC, "Conn %d has %s circuit: circID %d "
+ "(other side %d), state %d (%s), born %ld:",
conn_array_index, type, this_circid, other_circid, circ->state,
circuit_state_to_string(circ->state),
(long)circ->timestamp_began.tv_sec);
@@ -841,8 +846,8 @@ circuit_dump_chan_details(int severity,
int this_circid,
int other_circid)
{
- log(severity, LD_CIRC, "Conn %p has %s circuit: circID %d (other side %d), "
- "state %d (%s), born %ld:",
+ tor_log(severity, LD_CIRC, "Conn %p has %s circuit: circID %d "
+ "(other side %d), state %d (%s), born %ld:",
chan, type, this_circid, other_circid, circ->state,
circuit_state_to_string(circ->state),
(long)circ->timestamp_began.tv_sec);
@@ -1338,7 +1343,7 @@ circuit_mark_for_close_(circuit_t *circ, int reason, int line,
tor_assert(file);
if (circ->marked_for_close) {
- log(LOG_WARN,LD_BUG,
+ log_warn(LD_BUG,
"Duplicate call to circuit_mark_for_close at %s:%d"
" (first at %s:%d)", file, line,
circ->marked_for_close_file, circ->marked_for_close);
@@ -1354,7 +1359,10 @@ circuit_mark_for_close_(circuit_t *circ, int reason, int line,
}
if (CIRCUIT_IS_ORIGIN(circ)) {
- pathbias_check_close(TO_ORIGIN_CIRCUIT(circ), reason);
+ if (pathbias_check_close(TO_ORIGIN_CIRCUIT(circ), reason) == -1) {
+ /* Don't close it yet, we need to test it first */
+ return;
+ }
/* We don't send reasons when closing circuits at the origin. */
reason = END_CIRC_REASON_NONE;
@@ -1505,7 +1513,8 @@ assert_cpath_layer_ok(const crypt_path_t *cp)
tor_assert(cp->b_crypto);
/* fall through */
case CPATH_STATE_CLOSED:
- tor_assert(!cp->dh_handshake_state);
+ /*XXXX Assert that there's no handshake_state either. */
+ tor_assert(!cp->rend_dh_handshake_state);
break;
case CPATH_STATE_AWAITING_KEYS:
/* tor_assert(cp->dh_handshake_state); */
@@ -1592,7 +1601,7 @@ assert_circuit_ok(const circuit_t *c)
tor_assert(c->deliver_window >= 0);
tor_assert(c->package_window >= 0);
if (c->state == CIRCUIT_STATE_OPEN) {
- tor_assert(!c->n_chan_onionskin);
+ tor_assert(!c->n_chan_create_cell);
if (or_circ) {
tor_assert(or_circ->n_crypto);
tor_assert(or_circ->p_crypto);
@@ -1602,10 +1611,10 @@ assert_circuit_ok(const circuit_t *c)
}
if (c->state == CIRCUIT_STATE_CHAN_WAIT && !c->marked_for_close) {
tor_assert(circuits_pending_chans &&
- smartlist_isin(circuits_pending_chans, c));
+ smartlist_contains(circuits_pending_chans, c));
} else {
tor_assert(!circuits_pending_chans ||
- !smartlist_isin(circuits_pending_chans, c));
+ !smartlist_contains(circuits_pending_chans, c));
}
if (origin_circ && origin_circ->cpath) {
assert_cpath_ok(origin_circ->cpath);
diff --git a/src/or/circuitlist.h b/src/or/circuitlist.h
index a885af2fa0..e81c0785fe 100644
--- a/src/or/circuitlist.h
+++ b/src/or/circuitlist.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/circuitmux.c b/src/or/circuitmux.c
index f3b6b7cd7b..dcc1901819 100644
--- a/src/or/circuitmux.c
+++ b/src/or/circuitmux.c
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/circuitmux.h b/src/or/circuitmux.h
index ebab1ba7d3..25644ffab7 100644
--- a/src/or/circuitmux.h
+++ b/src/or/circuitmux.h
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/circuitmux_ewma.c b/src/or/circuitmux_ewma.c
index e1964d2383..3f37d7b9a0 100644
--- a/src/or/circuitmux_ewma.c
+++ b/src/or/circuitmux_ewma.c
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/circuitmux_ewma.h b/src/or/circuitmux_ewma.h
index 5621acc936..a512745c77 100644
--- a/src/or/circuitmux_ewma.h
+++ b/src/or/circuitmux_ewma.h
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/circuitstats.c b/src/or/circuitstats.c
index 4f12a6fbcd..73e34d9ed7 100644
--- a/src/or/circuitstats.c
+++ b/src/or/circuitstats.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CIRCUITSTATS_PRIVATE
@@ -183,16 +183,6 @@ circuit_build_times_quantile_cutoff(void)
return num/100.0;
}
-/* DOCDOC circuit_build_times_get_bw_scale */
-int
-circuit_build_times_get_bw_scale(networkstatus_t *ns)
-{
- return networkstatus_get_param(ns, "bwweightscale",
- BW_WEIGHT_SCALE,
- BW_MIN_WEIGHT_SCALE,
- BW_MAX_WEIGHT_SCALE);
-}
-
/**
* Retrieve and bounds-check the cbtclosequantile consensus paramter.
*
diff --git a/src/or/circuitstats.h b/src/or/circuitstats.h
index efe2799b0f..87dce99f4f 100644
--- a/src/or/circuitstats.h
+++ b/src/or/circuitstats.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/circuituse.c b/src/or/circuituse.c
index 2ffffa8423..c0612039be 100644
--- a/src/or/circuituse.c
+++ b/src/or/circuituse.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -280,17 +280,19 @@ circuit_get_best(const entry_connection_t *conn,
if (!CIRCUIT_IS_ORIGIN(circ))
continue;
origin_circ = TO_ORIGIN_CIRCUIT(circ);
- if (!circuit_is_acceptable(origin_circ,conn,must_be_open,purpose,
- need_uptime,need_internal,now.tv_sec))
- continue;
+ /* Log an info message if we're going to launch a new intro circ in
+ * parallel */
if (purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT &&
- !must_be_open && circ->state != CIRCUIT_STATE_OPEN &&
- tv_mdiff(&now, &circ->timestamp_began) > circ_times.timeout_ms) {
- intro_going_on_but_too_old = 1;
- continue;
+ !must_be_open && origin_circ->hs_circ_has_timed_out) {
+ intro_going_on_but_too_old = 1;
+ continue;
}
+ if (!circuit_is_acceptable(origin_circ,conn,must_be_open,purpose,
+ need_uptime,need_internal,now.tv_sec))
+ continue;
+
/* now this is an acceptable circ to hand back. but that doesn't
* mean it's the *best* circ to hand back. try to decide.
*/
@@ -367,8 +369,8 @@ circuit_expire_building(void)
* circuit_build_times_get_initial_timeout() if we haven't computed
* custom timeouts yet */
struct timeval general_cutoff, begindir_cutoff, fourhop_cutoff,
- cannibalize_cutoff, close_cutoff, extremely_old_cutoff,
- hs_extremely_old_cutoff;
+ close_cutoff, extremely_old_cutoff, hs_extremely_old_cutoff,
+ cannibalized_cutoff, c_intro_cutoff, s_intro_cutoff, stream_cutoff;
const or_options_t *options = get_options();
struct timeval now;
cpath_build_state_t *build_state;
@@ -407,10 +409,60 @@ circuit_expire_building(void)
timersub(&now, &diff, &target); \
} while (0)
+ /**
+ * Because circuit build timeout is calculated only based on 3 hop
+ * general purpose circuit construction, we need to scale the timeout
+ * to make it properly apply to longer circuits, and circuits of
+ * certain usage types. The following diagram illustrates how we
+ * derive the scaling below. In short, we calculate the number
+ * of times our telescoping-based circuit construction causes cells
+ * to traverse each link for the circuit purpose types in question,
+ * and then assume each link is equivalent.
+ *
+ * OP --a--> A --b--> B --c--> C
+ * OP --a--> A --b--> B --c--> C --d--> D
+ *
+ * Let h = a = b = c = d
+ *
+ * Three hops (general_cutoff)
+ * RTTs = 3a + 2b + c
+ * RTTs = 6h
+ * Cannibalized:
+ * RTTs = a+b+c+d
+ * RTTs = 4h
+ * Four hops:
+ * RTTs = 4a + 3b + 2c + d
+ * RTTs = 10h
+ * Client INTRODUCE1+ACK: // XXX: correct?
+ * RTTs = 5a + 4b + 3c + 2d
+ * RTTs = 14h
+ * Server intro:
+ * RTTs = 4a + 3b + 2c
+ * RTTs = 9h
+ */
SET_CUTOFF(general_cutoff, circ_times.timeout_ms);
SET_CUTOFF(begindir_cutoff, circ_times.timeout_ms);
- SET_CUTOFF(fourhop_cutoff, circ_times.timeout_ms * (4/3.0));
- SET_CUTOFF(cannibalize_cutoff, circ_times.timeout_ms / 2.0);
+
+ /* > 3hop circs seem to have a 1.0 second delay on their cannibalized
+ * 4th hop. */
+ SET_CUTOFF(fourhop_cutoff, circ_times.timeout_ms * (10/6.0) + 1000);
+
+ /* CIRCUIT_PURPOSE_C_ESTABLISH_REND behaves more like a RELAY cell.
+ * Use the stream cutoff (more or less). */
+ SET_CUTOFF(stream_cutoff, MAX(options->CircuitStreamTimeout,15)*1000 + 1000);
+
+ /* Be lenient with cannibalized circs. They already survived the official
+ * CBT, and they're usually not performance-critical. */
+ SET_CUTOFF(cannibalized_cutoff,
+ MAX(circ_times.close_ms*(4/6.0),
+ options->CircuitStreamTimeout * 1000) + 1000);
+
+ /* Intro circs have an extra round trip (and are also 4 hops long) */
+ SET_CUTOFF(c_intro_cutoff, circ_times.timeout_ms * (14/6.0) + 1000);
+
+ /* Server intro circs have an extra round trip */
+ SET_CUTOFF(s_intro_cutoff, circ_times.timeout_ms * (9/6.0) + 1000);
+
SET_CUTOFF(close_cutoff, circ_times.close_ms);
SET_CUTOFF(extremely_old_cutoff, circ_times.close_ms*2 + 1000);
@@ -441,13 +493,22 @@ circuit_expire_building(void)
build_state = TO_ORIGIN_CIRCUIT(victim)->build_state;
if (build_state && build_state->onehop_tunnel)
cutoff = begindir_cutoff;
- else if (build_state && build_state->desired_path_len == 4
- && !TO_ORIGIN_CIRCUIT(victim)->has_opened)
- cutoff = fourhop_cutoff;
- else if (TO_ORIGIN_CIRCUIT(victim)->has_opened)
- cutoff = cannibalize_cutoff;
else if (victim->purpose == CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT)
cutoff = close_cutoff;
+ else if (victim->purpose == CIRCUIT_PURPOSE_C_INTRODUCING ||
+ victim->purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT)
+ cutoff = c_intro_cutoff;
+ else if (victim->purpose == CIRCUIT_PURPOSE_S_ESTABLISH_INTRO)
+ cutoff = s_intro_cutoff;
+ else if (victim->purpose == CIRCUIT_PURPOSE_C_ESTABLISH_REND)
+ cutoff = stream_cutoff;
+ else if (victim->purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
+ cutoff = close_cutoff;
+ else if (TO_ORIGIN_CIRCUIT(victim)->has_opened &&
+ victim->state != CIRCUIT_STATE_OPEN)
+ cutoff = cannibalized_cutoff;
+ else if (build_state && build_state->desired_path_len >= 4)
+ cutoff = fourhop_cutoff;
else
cutoff = general_cutoff;
@@ -516,8 +577,6 @@ circuit_expire_building(void)
default: /* most open circuits can be left alone. */
continue; /* yes, continue inside a switch refers to the nearest
* enclosing loop. C is smart. */
- case CIRCUIT_PURPOSE_C_ESTABLISH_REND:
- case CIRCUIT_PURPOSE_C_INTRODUCING:
case CIRCUIT_PURPOSE_S_ESTABLISH_INTRO:
break; /* too old, need to die */
case CIRCUIT_PURPOSE_C_REND_READY:
@@ -529,6 +588,19 @@ circuit_expire_building(void)
victim->timestamp_dirty > cutoff.tv_sec)
continue;
break;
+ case CIRCUIT_PURPOSE_PATH_BIAS_TESTING:
+ /* Open path bias testing circuits are given a long
+ * time to complete the test, but not forever */
+ TO_ORIGIN_CIRCUIT(victim)->path_state = PATH_STATE_USE_FAILED;
+ break;
+ case CIRCUIT_PURPOSE_C_INTRODUCING:
+ /* We keep old introducing circuits around for
+ * a while in parallel, and they can end up "opened".
+ * We decide below if we're going to mark them timed
+ * out and eventually close them.
+ */
+ break;
+ case CIRCUIT_PURPOSE_C_ESTABLISH_REND:
case CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED:
case CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT:
/* rend and intro circs become dirty each time they
@@ -617,6 +689,9 @@ circuit_expire_building(void)
if (TO_ORIGIN_CIRCUIT(victim)->build_state->pending_final_cpath ==
NULL)
break;
+ /* fallthrough! */
+ case CIRCUIT_PURPOSE_C_INTRODUCING:
+ /* connection_ap_handshake_attach_circuit() will relaunch for us */
case CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT:
case CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED:
/* If we have reached this line, we want to spare the circ for now. */
@@ -649,15 +724,23 @@ circuit_expire_building(void)
}
if (victim->n_chan)
- log_info(LD_CIRC,"Abandoning circ %s:%d (state %d:%s, purpose %d)",
+ log_info(LD_CIRC,
+ "Abandoning circ %u %s:%d (state %d,%d:%s, purpose %d, "
+ "len %d)", TO_ORIGIN_CIRCUIT(victim)->global_identifier,
channel_get_canonical_remote_descr(victim->n_chan),
victim->n_circ_id,
+ TO_ORIGIN_CIRCUIT(victim)->has_opened,
victim->state, circuit_state_to_string(victim->state),
- victim->purpose);
+ victim->purpose,
+ TO_ORIGIN_CIRCUIT(victim)->build_state->desired_path_len);
else
- log_info(LD_CIRC,"Abandoning circ %d (state %d:%s, purpose %d)",
- victim->n_circ_id, victim->state,
- circuit_state_to_string(victim->state), victim->purpose);
+ log_info(LD_CIRC,
+ "Abandoning circ %u %d (state %d,%d:%s, purpose %d, len %d)",
+ TO_ORIGIN_CIRCUIT(victim)->global_identifier,
+ victim->n_circ_id, TO_ORIGIN_CIRCUIT(victim)->has_opened,
+ victim->state,
+ circuit_state_to_string(victim->state), victim->purpose,
+ TO_ORIGIN_CIRCUIT(victim)->build_state->desired_path_len);
circuit_log_path(LOG_INFO,LD_CIRC,TO_ORIGIN_CIRCUIT(victim));
if (victim->purpose == CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT)
@@ -705,7 +788,8 @@ circuit_stream_is_being_handled(entry_connection_t *conn,
const node_t *exitnode;
int num=0;
time_t now = time(NULL);
- int need_uptime = smartlist_string_num_isin(get_options()->LongLivedPorts,
+ int need_uptime = smartlist_contains_int_as_string(
+ get_options()->LongLivedPorts,
conn ? conn->socks_request->port : port);
for (circ=global_circuitlist;circ;circ = circ->next) {
@@ -990,7 +1074,10 @@ circuit_expire_old_circuits_clientside(void)
"purpose %d)",
circ->n_circ_id, (long)(now.tv_sec - circ->timestamp_dirty),
circ->purpose);
- circuit_mark_for_close(circ, END_CIRC_REASON_FINISHED);
+ /* Don't do this magic for testing circuits. Their death is governed
+ * by circuit_expire_building */
+ if (circ->purpose != CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
+ circuit_mark_for_close(circ, END_CIRC_REASON_FINISHED);
} else if (!circ->timestamp_dirty && circ->state == CIRCUIT_STATE_OPEN) {
if (timercmp(&circ->timestamp_began, &cutoff, <)) {
if (circ->purpose == CIRCUIT_PURPOSE_C_GENERAL ||
@@ -1161,18 +1248,6 @@ circuit_has_opened(origin_circuit_t *circ)
{
control_event_circuit_status(circ, CIRC_EVENT_BUILT, 0);
- /* Cannibalized circuits count as used for path bias.
- * (PURPOSE_GENERAL circs especially, since they are
- * marked dirty and often go unused after preemptive
- * building). */
- // XXX: Cannibalized now use RELAY_EARLY, which is visible
- // to taggers end-to-end! We really need to probe these instead.
- // Don't forget to remove this check once that's done!
- if (circ->has_opened &&
- circ->build_state->desired_path_len > DEFAULT_ROUTE_LEN) {
- circ->path_state = PATH_STATE_USE_SUCCEEDED;
- }
-
/* Remember that this circuit has finished building. Now if we start
* it building again later (e.g. by extending it), we will know not
* to consider its build time. */
@@ -1419,17 +1494,19 @@ circuit_launch_by_extend_info(uint8_t purpose,
purpose == CIRCUIT_PURPOSE_C_INTRODUCING) &&
circ->path_state == PATH_STATE_BUILD_SUCCEEDED) {
/* Path bias: Cannibalized rends pre-emptively count as a
- * successfully used circ. We don't wait until the extend,
- * because the rend point could be malicious.
+ * successfully built but unused closed circuit. We don't
+ * wait until the extend (or the close) because the rend
+ * point could be malicious.
*
* Same deal goes for client side introductions. Clients
* can be manipulated to connect repeatedly to them
* (especially web clients).
*
* If we decide to probe the initial portion of these circs,
- * (up to the adversaries final hop), we need to remove this.
+ * (up to the adversary's final hop), we need to remove this,
+ * or somehow mark the circuit with a special path state.
*/
- circ->path_state = PATH_STATE_USE_SUCCEEDED;
+
/* This must be called before the purpose change */
pathbias_check_close(circ, END_CIRC_REASON_FINISHED);
}
@@ -1534,7 +1611,7 @@ circuit_get_open_circ_or_launch(entry_connection_t *conn,
want_onehop = conn->want_onehop;
need_uptime = !conn->want_onehop && !conn->use_begindir &&
- smartlist_string_num_isin(options->LongLivedPorts,
+ smartlist_contains_int_as_string(options->LongLivedPorts,
conn->socks_request->port);
if (desired_circuit_purpose != CIRCUIT_PURPOSE_C_GENERAL)
@@ -1693,8 +1770,8 @@ circuit_get_open_circ_or_launch(entry_connection_t *conn,
return -1;
}
extend_info = extend_info_new(conn->chosen_exit_name+1,
- digest, NULL, &addr,
- conn->socks_request->port);
+ digest, NULL, NULL, &addr,
+ conn->socks_request->port);
} else {
/* We will need an onion key for the router, and we
* don't have one. Refuse or relax requirements. */
@@ -1949,6 +2026,8 @@ connection_ap_handshake_attach_chosen_circuit(entry_connection_t *conn,
if (!circ->base_.timestamp_dirty)
circ->base_.timestamp_dirty = time(NULL);
+ pathbias_count_use_attempt(circ);
+
link_apconn_to_circ(conn, circ, cpath);
tor_assert(conn->socks_request);
if (conn->socks_request->command == SOCKS_COMMAND_CONNECT) {
@@ -2075,6 +2154,11 @@ connection_ap_handshake_attach_circuit(entry_connection_t *conn)
* feasibility, at this point.
*/
rendcirc->base_.timestamp_dirty = time(NULL);
+
+ /* We've also attempted to use them. If they fail, we need to
+ * probe them for path bias */
+ pathbias_count_use_attempt(rendcirc);
+
link_apconn_to_circ(conn, rendcirc, NULL);
if (connection_ap_handshake_send_begin(conn) < 0)
return 0; /* already marked, let them fade away */
@@ -2097,28 +2181,12 @@ connection_ap_handshake_attach_circuit(entry_connection_t *conn)
if (retval > 0) {
/* one has already sent the intro. keep waiting. */
- circuit_t *c = NULL;
tor_assert(introcirc);
log_info(LD_REND, "Intro circ %d present and awaiting ack (rend %d). "
"Stalling. (stream %d sec old)",
introcirc->base_.n_circ_id,
rendcirc ? rendcirc->base_.n_circ_id : 0,
conn_age);
- /* abort parallel intro circs, if any */
- for (c = global_circuitlist; c; c = c->next) {
- if (c->purpose == CIRCUIT_PURPOSE_C_INTRODUCING &&
- !c->marked_for_close && CIRCUIT_IS_ORIGIN(c)) {
- origin_circuit_t *oc = TO_ORIGIN_CIRCUIT(c);
- if (oc->rend_data &&
- !rend_cmp_service_ids(
- ENTRY_TO_EDGE_CONN(conn)->rend_data->onion_address,
- oc->rend_data->onion_address)) {
- log_info(LD_REND|LD_CIRC, "Closing introduction circuit that we "
- "built in parallel.");
- circuit_mark_for_close(c, END_CIRC_REASON_TIMEOUT);
- }
- }
- }
return 0;
}
@@ -2142,6 +2210,10 @@ connection_ap_handshake_attach_circuit(entry_connection_t *conn)
case 0: /* success */
rendcirc->base_.timestamp_dirty = time(NULL);
introcirc->base_.timestamp_dirty = time(NULL);
+
+ pathbias_count_use_attempt(introcirc);
+ pathbias_count_use_attempt(rendcirc);
+
assert_circuit_ok(TO_CIRCUIT(rendcirc));
assert_circuit_ok(TO_CIRCUIT(introcirc));
return 0;
diff --git a/src/or/circuituse.h b/src/or/circuituse.h
index e8760c22d3..d4d68aad92 100644
--- a/src/or/circuituse.h
+++ b/src/or/circuituse.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/command.c b/src/or/command.c
index 39eccdf82d..09313b48a2 100644
--- a/src/or/command.c
+++ b/src/or/command.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -133,11 +133,13 @@ command_process_cell(channel_t *chan, cell_t *cell)
switch (cell->command) {
case CELL_CREATE:
case CELL_CREATE_FAST:
+ case CELL_CREATE2:
++stats_n_create_cells_processed;
PROCESS_CELL(create, cell, chan);
break;
case CELL_CREATED:
case CELL_CREATED_FAST:
+ case CELL_CREATED2:
++stats_n_created_cells_processed;
PROCESS_CELL(created, cell, chan);
break;
@@ -187,6 +189,7 @@ command_process_create_cell(cell_t *cell, channel_t *chan)
or_circuit_t *circ;
const or_options_t *options = get_options();
int id_is_high;
+ create_cell_t *create_cell;
tor_assert(cell);
tor_assert(chan);
@@ -218,6 +221,14 @@ command_process_create_cell(cell_t *cell, channel_t *chan)
return;
}
+ if (cell->circ_id == 0) {
+ log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
+ "Received a create cell (type %d) from %s with zero circID; "
+ " ignoring.", (int)cell->command,
+ channel_get_actual_remote_descr(chan));
+ return;
+ }
+
/* If the high bit of the circuit ID is not as expected, close the
* circ. */
id_is_high = cell->circ_id & (1<<15);
@@ -252,12 +263,18 @@ command_process_create_cell(cell_t *cell, channel_t *chan)
circ = or_circuit_new(cell->circ_id, chan);
circ->base_.purpose = CIRCUIT_PURPOSE_OR;
circuit_set_state(TO_CIRCUIT(circ), CIRCUIT_STATE_ONIONSKIN_PENDING);
- if (cell->command == CELL_CREATE) {
- char *onionskin = tor_malloc(ONIONSKIN_CHALLENGE_LEN);
- memcpy(onionskin, cell->payload, ONIONSKIN_CHALLENGE_LEN);
+ create_cell = tor_malloc_zero(sizeof(create_cell_t));
+ if (create_cell_parse(create_cell, cell) < 0) {
+ tor_free(create_cell);
+ log_fn(LOG_PROTOCOL_WARN, LD_OR,
+ "Bogus/unrecognized create cell; closing.");
+ circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_TORPROTOCOL);
+ return;
+ }
+ if (create_cell->handshake_type != ONION_HANDSHAKE_TYPE_FAST) {
/* hand it off to the cpuworkers, and then return. */
- if (assign_onionskin_to_cpuworker(NULL, circ, onionskin) < 0) {
+ if (assign_onionskin_to_cpuworker(NULL, circ, create_cell) < 0) {
log_debug(LD_GENERAL,"Failed to hand off onionskin. Closing.");
circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_RESOURCELIMIT);
return;
@@ -266,26 +283,40 @@ command_process_create_cell(cell_t *cell, channel_t *chan)
} else {
/* This is a CREATE_FAST cell; we can handle it immediately without using
* a CPU worker. */
- char keys[CPATH_KEY_MATERIAL_LEN];
- char reply[DIGEST_LEN*2];
-
- tor_assert(cell->command == CELL_CREATE_FAST);
+ uint8_t keys[CPATH_KEY_MATERIAL_LEN];
+ uint8_t rend_circ_nonce[DIGEST_LEN];
+ int len;
+ created_cell_t created_cell;
/* Make sure we never try to use the OR connection on which we
* received this cell to satisfy an EXTEND request, */
channel_mark_client(chan);
- if (fast_server_handshake(cell->payload, (uint8_t*)reply,
- (uint8_t*)keys, sizeof(keys))<0) {
+ memset(&created_cell, 0, sizeof(created_cell));
+ len = onion_skin_server_handshake(ONION_HANDSHAKE_TYPE_FAST,
+ create_cell->onionskin,
+ create_cell->handshake_len,
+ NULL,
+ created_cell.reply,
+ keys, CPATH_KEY_MATERIAL_LEN,
+ rend_circ_nonce);
+ tor_free(create_cell);
+ if (len < 0) {
log_warn(LD_OR,"Failed to generate key material. Closing.");
circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_INTERNAL);
+ tor_free(create_cell);
return;
}
- if (onionskin_answer(circ, CELL_CREATED_FAST, reply, keys)<0) {
+ created_cell.cell_type = CELL_CREATED_FAST;
+ created_cell.handshake_len = len;
+
+ if (onionskin_answer(circ, &created_cell,
+ (const char *)keys, rend_circ_nonce)<0) {
log_warn(LD_OR,"Failed to reply to CREATE_FAST cell. Closing.");
circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_INTERNAL);
return;
}
+ memwipe(keys, 0, sizeof(keys));
}
}
@@ -301,6 +332,7 @@ static void
command_process_created_cell(cell_t *cell, channel_t *chan)
{
circuit_t *circ;
+ extended_cell_t extended_cell;
circ = circuit_get_by_circid_channel(cell->circ_id, chan);
@@ -318,12 +350,18 @@ command_process_created_cell(cell_t *cell, channel_t *chan)
return;
}
+ if (created_cell_parse(&extended_cell.created_cell, cell) < 0) {
+ log_fn(LOG_PROTOCOL_WARN, LD_OR, "Unparseable created cell.");
+ circuit_mark_for_close(circ, END_CIRC_REASON_TORPROTOCOL);
+ return;
+ }
+
if (CIRCUIT_IS_ORIGIN(circ)) { /* we're the OP. Handshake this. */
origin_circuit_t *origin_circ = TO_ORIGIN_CIRCUIT(circ);
int err_reason = 0;
log_debug(LD_OR,"at OP. Finishing handshake.");
- if ((err_reason = circuit_finish_handshake(origin_circ, cell->command,
- cell->payload)) < 0) {
+ if ((err_reason = circuit_finish_handshake(origin_circ,
+ &extended_cell.created_cell)) < 0) {
log_warn(LD_OR,"circuit_finish_handshake failed.");
circuit_mark_for_close(circ, -err_reason);
return;
@@ -336,11 +374,24 @@ command_process_created_cell(cell_t *cell, channel_t *chan)
return;
}
} else { /* pack it into an extended relay cell, and send it. */
+ uint8_t command=0;
+ uint16_t len=0;
+ uint8_t payload[RELAY_PAYLOAD_SIZE];
log_debug(LD_OR,
"Converting created cell to extended relay cell, sending.");
- relay_send_command_from_edge(0, circ, RELAY_COMMAND_EXTENDED,
- (char*)cell->payload, ONIONSKIN_REPLY_LEN,
- NULL);
+ memset(payload, 0, sizeof(payload));
+ if (extended_cell.created_cell.cell_type == CELL_CREATED2)
+ extended_cell.cell_type = RELAY_COMMAND_EXTENDED2;
+ else
+ extended_cell.cell_type = RELAY_COMMAND_EXTENDED;
+ if (extended_cell_format(&command, &len, payload, &extended_cell) < 0) {
+ log_fn(LOG_PROTOCOL_WARN, LD_OR, "Can't format extended cell.");
+ circuit_mark_for_close(circ, END_CIRC_REASON_TORPROTOCOL);
+ return;
+ }
+
+ relay_send_command_from_edge(0, circ, command,
+ (const char*)payload, len, NULL);
}
}
diff --git a/src/or/command.h b/src/or/command.h
index 375d704561..913f46a5cd 100644
--- a/src/or/command.h
+++ b/src/or/command.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/config.c b/src/or/config.c
index 2947d1cf17..31695baa73 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -242,6 +242,7 @@ static config_var_t option_vars_[] = {
V(FetchHidServDescriptors, BOOL, "1"),
V(FetchUselessDescriptors, BOOL, "0"),
V(FetchV2Networkstatus, BOOL, "0"),
+ V(GeoIPExcludeUnknown, AUTOBOOL, "auto"),
#ifdef _WIN32
V(GeoIPFile, FILENAME, "<default>"),
V(GeoIPv6File, FILENAME, "<default>"),
@@ -296,7 +297,8 @@ static config_var_t option_vars_[] = {
V(MaxAdvertisedBandwidth, MEMUNIT, "1 GB"),
V(MaxCircuitDirtiness, INTERVAL, "10 minutes"),
V(MaxClientCircuitsPending, UINT, "32"),
- V(MaxOnionsPending, UINT, "100"),
+ OBSOLETE("MaxOnionsPending"),
+ V(MaxOnionQueueDelay, MSEC_INTERVAL, "1750 msec"),
OBSOLETE("MonthlyAccountingStart"),
V(MyFamily, STRING, NULL),
V(NewCircuitPeriod, INTERVAL, "30 seconds"),
@@ -320,11 +322,17 @@ static config_var_t option_vars_[] = {
V(PathBiasWarnRate, DOUBLE, "-1"),
V(PathBiasExtremeRate, DOUBLE, "-1"),
V(PathBiasScaleThreshold, INT, "-1"),
- V(PathBiasScaleFactor, INT, "-1"),
- V(PathBiasMultFactor, INT, "-1"),
+ OBSOLETE("PathBiasScaleFactor"),
+ OBSOLETE("PathBiasMultFactor"),
V(PathBiasDropGuards, AUTOBOOL, "0"),
- V(PathBiasUseCloseCounts, AUTOBOOL, "1"),
+ OBSOLETE("PathBiasUseCloseCounts"),
+ V(PathBiasUseThreshold, INT, "-1"),
+ V(PathBiasNoticeUseRate, DOUBLE, "-1"),
+ V(PathBiasExtremeUseRate, DOUBLE, "-1"),
+ V(PathBiasScaleUseThreshold, INT, "-1"),
+
+ V(PathsNeededToBuildCircuits, DOUBLE, "-1"),
OBSOLETE("PathlenCoinWeight"),
V(PerConnBWBurst, MEMUNIT, "0"),
V(PerConnBWRate, MEMUNIT, "0"),
@@ -390,6 +398,7 @@ static config_var_t option_vars_[] = {
V(UseEntryGuards, BOOL, "1"),
V(UseEntryGuardsAsDirGuards, BOOL, "1"),
V(UseMicrodescriptors, AUTOBOOL, "auto"),
+ V(UseNTorHandshake, AUTOBOOL, "auto"),
V(User, STRING, NULL),
V(UserspaceIOCPBuffers, BOOL, "0"),
VAR("V1AuthoritativeDirectory",BOOL, V1AuthoritativeDir, "0"),
@@ -1084,7 +1093,7 @@ options_act_reversible(const or_options_t *old_options, char **msg)
mark_logs_temp(); /* Close current logs once new logs are open. */
logs_marked = 1;
- if (options_init_logs(options, 0)<0) { /* Configure the log(s) */
+ if (options_init_logs(options, 0)<0) { /* Configure the tor_log(s) */
*msg = tor_strdup("Failed to init Log options. See logs for details.");
goto rollback;
}
@@ -1260,7 +1269,7 @@ options_act(const or_options_t *old_options)
return -1;
#ifdef NON_ANONYMOUS_MODE_ENABLED
- log(LOG_WARN, LD_GENERAL, "This copy of Tor was compiled to run in a "
+ log_warn(LD_GENERAL, "This copy of Tor was compiled to run in a "
"non-anonymous mode. It will provide NO ANONYMITY.");
#endif
@@ -1566,6 +1575,18 @@ options_act(const or_options_t *old_options)
config_maybe_load_geoip_files_(options, old_options);
+ if (geoip_is_loaded(AF_INET) && options->GeoIPExcludeUnknown) {
+ /* ExcludeUnknown is true or "auto" */
+ const int is_auto = options->GeoIPExcludeUnknown == -1;
+ int changed;
+
+ changed = routerset_add_unknown_ccs(&options->ExcludeNodes, is_auto);
+ changed += routerset_add_unknown_ccs(&options->ExcludeExitNodes, is_auto);
+
+ if (changed)
+ routerset_add_unknown_ccs(&options->ExcludeExitNodesUnion_, is_auto);
+ }
+
if (options->CellStatistics || options->DirReqStatistics ||
options->EntryStatistics || options->ExitPortStatistics ||
options->ConnDirectionStatistics ||
@@ -1762,7 +1783,7 @@ config_get_commandlines(int argc, char **argv, config_line_t **result)
(*new)->value = want_arg ? tor_strdup(argv[i+1]) : tor_strdup("");
(*new)->command = command;
(*new)->next = NULL;
- log(LOG_DEBUG, LD_CONFIG, "command line: parsed keyword '%s', value '%s'",
+ log_debug(LD_CONFIG, "command line: parsed keyword '%s', value '%s'",
(*new)->key, (*new)->value);
new = &((*new)->next);
@@ -1845,7 +1866,7 @@ print_usage(void)
printf(
"Copyright (c) 2001-2004, Roger Dingledine\n"
"Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson\n"
-"Copyright (c) 2007-2012, The Tor Project, Inc.\n\n"
+"Copyright (c) 2007-2013, The Tor Project, Inc.\n\n"
"tor -f <torrc> [args]\n"
"See man page for options, or https://www.torproject.org/ for "
"documentation.\n");
@@ -2210,7 +2231,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
int n_ports=0;
#define REJECT(arg) \
STMT_BEGIN *msg = tor_strdup(arg); return -1; STMT_END
-#define COMPLAIN(arg) STMT_BEGIN log(LOG_WARN, LD_CONFIG, arg); STMT_END
+#define COMPLAIN(arg) STMT_BEGIN log_warn(LD_CONFIG, arg); STMT_END
tor_assert(msg);
*msg = NULL;
@@ -2219,7 +2240,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
(!strcmpstart(uname, "Windows 95") ||
!strcmpstart(uname, "Windows 98") ||
!strcmpstart(uname, "Windows Me"))) {
- log(LOG_WARN, LD_CONFIG, "Tor is running as a server, but you are "
+ log_warn(LD_CONFIG, "Tor is running as a server, but you are "
"running %s; this probably won't work. See "
"https://wiki.torproject.org/TheOnionRouter/TorFAQ#ServerOS "
"for details.", uname);
@@ -2248,7 +2269,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
}
if (server_mode(options) && !options->ContactInfo)
- log(LOG_NOTICE, LD_CONFIG, "Your ContactInfo config option is not set. "
+ log_notice(LD_CONFIG, "Your ContactInfo config option is not set. "
"Please consider setting it, so we can contact you if your server is "
"misconfigured or something else goes wrong.");
@@ -2260,7 +2281,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
config_line_append(&options->Logs, "Log", "warn stdout");
}
- if (options_init_logs(options, 1)<0) /* Validate the log(s) */
+ if (options_init_logs(options, 1)<0) /* Validate the tor_log(s) */
REJECT("Failed to validate Log options. See logs for details.");
if (authdir_mode(options)) {
@@ -2278,7 +2299,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
/* XXXX require that the only port not be DirPort? */
/* XXXX require that at least one port be listened-upon. */
if (n_ports == 0 && !options->RendConfigLines)
- log(LOG_WARN, LD_CONFIG,
+ log_warn(LD_CONFIG,
"SocksPort, TransPort, NATDPort, DNSPort, and ORPort are all "
"undefined, and there aren't any hidden services configured. "
"Tor will still run, but probably won't do anything.");
@@ -2385,6 +2406,18 @@ options_validate(or_options_t *old_options, or_options_t *options,
return -1;
}
+ if (options->PathsNeededToBuildCircuits >= 0.0) {
+ if (options->PathsNeededToBuildCircuits < 0.25) {
+ log_warn(LD_CONFIG, "PathsNeededToBuildCircuits is too low. Increasing "
+ "to 0.25");
+ options->PathsNeededToBuildCircuits = 0.25;
+ } else if (options->PathsNeededToBuildCircuits < 0.95) {
+ log_warn(LD_CONFIG, "PathsNeededToBuildCircuits is too high. Decreasing "
+ "to 0.95");
+ options->PathsNeededToBuildCircuits = 0.95;
+ }
+ }
+
if (options->MaxClientCircuitsPending <= 0 ||
options->MaxClientCircuitsPending > MAX_MAX_CLIENT_CIRCUITS_PENDING) {
tor_asprintf(msg,
@@ -2426,7 +2459,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
});
new_line->value = smartlist_join_strings(instead,",",0,NULL);
/* These have been deprecated since 0.1.1.5-alpha-cvs */
- log(LOG_NOTICE, LD_CONFIG,
+ log_notice(LD_CONFIG,
"Converting FascistFirewall and FirewallPorts "
"config options to new format: \"ReachableAddresses %s\"",
new_line->value);
@@ -2441,7 +2474,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
new_line->key = tor_strdup("ReachableDirAddresses");
new_line->value = tor_strdup("*:80");
options->ReachableDirAddresses = new_line;
- log(LOG_NOTICE, LD_CONFIG, "Converting FascistFirewall config option "
+ log_notice(LD_CONFIG, "Converting FascistFirewall config option "
"to new format: \"ReachableDirAddresses *:80\"");
}
if (!options->ReachableORAddresses) {
@@ -2449,7 +2482,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
new_line->key = tor_strdup("ReachableORAddresses");
new_line->value = tor_strdup("*:443");
options->ReachableORAddresses = new_line;
- log(LOG_NOTICE, LD_CONFIG, "Converting FascistFirewall config option "
+ log_notice(LD_CONFIG, "Converting FascistFirewall config option "
"to new format: \"ReachableORAddresses *:443\"");
}
}
@@ -2629,6 +2662,37 @@ options_validate(or_options_t *old_options, or_options_t *options,
RECOMMENDED_MIN_CIRCUIT_BUILD_TIMEOUT );
}
+ if (options->PathBiasNoticeRate > 1.0) {
+ tor_asprintf(msg,
+ "PathBiasNoticeRate is too high. "
+ "It must be between 0 and 1.0");
+ return -1;
+ }
+ if (options->PathBiasWarnRate > 1.0) {
+ tor_asprintf(msg,
+ "PathBiasWarnRate is too high. "
+ "It must be between 0 and 1.0");
+ return -1;
+ }
+ if (options->PathBiasExtremeRate > 1.0) {
+ tor_asprintf(msg,
+ "PathBiasExtremeRate is too high. "
+ "It must be between 0 and 1.0");
+ return -1;
+ }
+ if (options->PathBiasNoticeUseRate > 1.0) {
+ tor_asprintf(msg,
+ "PathBiasNoticeUseRate is too high. "
+ "It must be between 0 and 1.0");
+ return -1;
+ }
+ if (options->PathBiasExtremeUseRate > 1.0) {
+ tor_asprintf(msg,
+ "PathBiasExtremeUseRate is too high. "
+ "It must be between 0 and 1.0");
+ return -1;
+ }
+
if (options->MaxCircuitDirtiness < MIN_MAX_CIRCUIT_DIRTINESS) {
log_warn(LD_CONFIG, "MaxCircuitDirtiness option is too short; "
"raising to %d seconds.", MIN_MAX_CIRCUIT_DIRTINESS);
@@ -3403,7 +3467,7 @@ find_torrc_filename(int argc, char **argv,
for (i = 1; i < argc; ++i) {
if (i < argc-1 && !strcmp(argv[i],fname_opt)) {
if (fname) {
- log(LOG_WARN, LD_CONFIG, "Duplicate %s options on command line.",
+ log_warn(LD_CONFIG, "Duplicate %s options on command line.",
fname_opt);
tor_free(fname);
}
@@ -3466,7 +3530,7 @@ load_torrc_from_disk(int argc, char **argv, int defaults_file)
fname = find_torrc_filename(argc, argv, defaults_file,
&using_default_torrc, &ignore_missing_torrc);
tor_assert(fname);
- log(LOG_DEBUG, LD_CONFIG, "Opening config file \"%s\"", fname);
+ log_debug(LD_CONFIG, "Opening config file \"%s\"", fname);
tor_free(*fname_var);
*fname_var = fname;
@@ -3476,18 +3540,18 @@ load_torrc_from_disk(int argc, char **argv, int defaults_file)
!(cf = read_file_to_str(fname,0,NULL))) {
if (using_default_torrc == 1 || ignore_missing_torrc) {
if (!defaults_file)
- log(LOG_NOTICE, LD_CONFIG, "Configuration file \"%s\" not present, "
+ log_notice(LD_CONFIG, "Configuration file \"%s\" not present, "
"using reasonable defaults.", fname);
tor_free(fname); /* sets fname to NULL */
*fname_var = NULL;
cf = tor_strdup("");
} else {
- log(LOG_WARN, LD_CONFIG,
+ log_warn(LD_CONFIG,
"Unable to open configuration file \"%s\".", fname);
goto err;
}
} else {
- log(LOG_NOTICE, LD_CONFIG, "Read configuration file \"%s\".", fname);
+ log_notice(LD_CONFIG, "Read configuration file \"%s\".", fname);
}
return cf;
@@ -3579,7 +3643,7 @@ options_init_from_torrc(int argc, char **argv)
tor_free(cf);
tor_free(cf_defaults);
if (errmsg) {
- log(LOG_WARN,LD_CONFIG,"%s", errmsg);
+ log_warn(LD_CONFIG,"%s", errmsg);
tor_free(errmsg);
}
return retval < 0 ? -1 : 0;
@@ -4633,12 +4697,15 @@ port_cfg_free(port_cfg_t *port)
tor_free(port);
}
-/** Warn for every port in <b>ports</b> that is on a publicly routable
- * address. */
+/** Warn for every port in <b>ports</b> of type <b>listener_type</b> that is
+ * on a publicly routable address. */
static void
-warn_nonlocal_client_ports(const smartlist_t *ports, const char *portname)
+warn_nonlocal_client_ports(const smartlist_t *ports, const char *portname,
+ int listener_type)
{
SMARTLIST_FOREACH_BEGIN(ports, const port_cfg_t *, port) {
+ if (port->type != listener_type)
+ continue;
if (port->is_unix_addr) {
/* Unix sockets aren't accessible over a network. */
} else if (!tor_addr_is_internal(&port->addr, 1)) {
@@ -4835,7 +4902,7 @@ parse_port_config(smartlist_t *out,
if (is_control)
warn_nonlocal_controller_ports(out, forbid_nonlocal);
else
- warn_nonlocal_client_ports(out, portname);
+ warn_nonlocal_client_ports(out, portname, listener_type);
}
return 0;
} /* end if (listenaddrs) */
@@ -5101,7 +5168,7 @@ parse_port_config(smartlist_t *out,
if (is_control)
warn_nonlocal_controller_ports(out, forbid_nonlocal);
else
- warn_nonlocal_client_ports(out, portname);
+ warn_nonlocal_client_ports(out, portname, listener_type);
}
if (got_zero_port && got_nonzero_port) {
@@ -5360,7 +5427,7 @@ check_server_ports(const smartlist_t *ports,
}
if (n_low_port && options->AccountingMax) {
- log(LOG_WARN, LD_CONFIG,
+ log_warn(LD_CONFIG,
"You have set AccountingMax to use hibernation. You have also "
"chosen a low DirPort or OrPort. This combination can make Tor stop "
"working when it tries to re-attach the port after a period of "
diff --git a/src/or/config.h b/src/or/config.h
index 336685d075..8e34655805 100644
--- a/src/or/config.h
+++ b/src/or/config.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/confparse.c b/src/or/confparse.c
index 67cf43fe8c..717d4ac2aa 100644
--- a/src/or/confparse.c
+++ b/src/or/confparse.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "or.h"
diff --git a/src/or/confparse.h b/src/or/confparse.h
index 20616be925..1b987f3bf9 100644
--- a/src/or/confparse.h
+++ b/src/or/confparse.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_CONFPARSE_H
diff --git a/src/or/connection.c b/src/or/connection.c
index 5da4d39ba5..7b0f081fde 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -731,7 +731,7 @@ connection_mark_for_close_internal_(connection_t *conn,
tor_assert(file);
if (conn->marked_for_close) {
- log(LOG_WARN,LD_BUG,"Duplicate call to connection_mark_for_close at %s:%d"
+ log_warn(LD_BUG,"Duplicate call to connection_mark_for_close at %s:%d"
" (first at %s:%d)", file, line, conn->marked_for_close_file,
conn->marked_for_close);
tor_fragile_assert();
@@ -1058,6 +1058,7 @@ connection_listener_new(const struct sockaddr *listensockaddr,
if (bind(s, listensockaddr, (socklen_t)sizeof(struct sockaddr_un)) == -1) {
log_warn(LD_NET,"Bind to %s failed: %s.", address,
tor_socket_strerror(tor_socket_errno(s)));
+ tor_close_socket(s);
goto err;
}
#ifdef HAVE_PWD_H
@@ -1066,9 +1067,11 @@ connection_listener_new(const struct sockaddr *listensockaddr,
if (pw == NULL) {
log_warn(LD_NET,"Unable to chown() %s socket: user %s not found.",
address, options->User);
+ tor_close_socket(s);
} else if (chown(address, pw->pw_uid, pw->pw_gid) < 0) {
log_warn(LD_NET,"Unable to chown() %s socket: %s.",
address, strerror(errno));
+ tor_close_socket(s);
goto err;
}
}
@@ -1441,11 +1444,7 @@ connection_connect(connection_t *conn, const char *address,
/* We should never even try to connect anyplace if DisableNetwork is set.
* Warn if we do, and refuse to make the connection. */
static ratelim_t disablenet_violated = RATELIM_INIT(30*60);
-#ifdef _WIN32
- *socket_error = WSAENETUNREACH;
-#else
- *socket_error = ENETUNREACH;
-#endif
+ *socket_error = SOCK_ERRNO(ENETUNREACH);
log_fn_ratelim(&disablenet_violated, LOG_WARN, LD_BUG,
"Tried to open a socket with DisableNetwork set.");
tor_fragile_assert();
@@ -1708,6 +1707,7 @@ connection_read_https_proxy_response(connection_t *conn)
tor_free(headers);
return -1;
}
+ tor_free(headers);
if (!reason) reason = tor_strdup("[no reason given]");
if (status_code == 200) {
@@ -2531,7 +2531,7 @@ connection_bucket_refill_helper(int *bucket, int rate, int burst,
*bucket = burst;
}
}
- log(LOG_DEBUG, LD_NET,"%s now %d.", name, *bucket);
+ log_debug(LD_NET,"%s now %d.", name, *bucket);
}
}
@@ -3277,6 +3277,7 @@ connection_handle_write_impl(connection_t *conn, int force)
ssize_t max_to_write;
time_t now = approx_time();
size_t n_read = 0, n_written = 0;
+ int dont_stop_writing = 0;
tor_assert(!connection_is_listener(conn));
@@ -3333,6 +3334,7 @@ connection_handle_write_impl(connection_t *conn, int force)
if (connection_speaks_cells(conn) &&
conn->state > OR_CONN_STATE_PROXY_HANDSHAKING) {
or_connection_t *or_conn = TO_OR_CONN(conn);
+ size_t initial_size;
if (conn->state == OR_CONN_STATE_TLS_HANDSHAKING ||
conn->state == OR_CONN_STATE_TLS_CLIENT_RENEGOTIATING) {
connection_stop_writing(conn);
@@ -3356,6 +3358,7 @@ connection_handle_write_impl(connection_t *conn, int force)
}
/* else open, or closing */
+ initial_size = buf_datalen(conn->outbuf);
result = flush_buf_tls(or_conn->tls, conn->outbuf,
max_to_write, &conn->outbuf_flushlen);
@@ -3386,7 +3389,8 @@ connection_handle_write_impl(connection_t *conn, int force)
case TOR_TLS_WANTWRITE:
log_debug(LD_NET,"wanted write.");
/* we're already writing */
- return 0;
+ dont_stop_writing = 1;
+ break;
case TOR_TLS_WANTREAD:
/* Make sure to avoid a loop if the receive buckets are empty. */
log_debug(LD_NET,"wanted read.");
@@ -3408,6 +3412,12 @@ connection_handle_write_impl(connection_t *conn, int force)
tor_tls_get_n_raw_bytes(or_conn->tls, &n_read, &n_written);
log_debug(LD_GENERAL, "After TLS write of %d: %ld read, %ld written",
result, (long)n_read, (long)n_written);
+ /* So we notice bytes were written even on error */
+ /* XXXX024 This cast is safe since we can never write INT_MAX bytes in a
+ * single set of TLS operations. But it looks kinda ugly. If we refactor
+ * the *_buf_tls functions, we should make them return ssize_t or size_t
+ * or something. */
+ result = (int)(initial_size-buf_datalen(conn->outbuf));
} else {
CONN_LOG_PROTECT(conn,
result = flush_buf(conn->s, conn->outbuf,
@@ -3454,7 +3464,8 @@ connection_handle_write_impl(connection_t *conn, int force)
}
}
- if (!connection_wants_to_flush(conn)) { /* it's done flushing */
+ if (!connection_wants_to_flush(conn) &&
+ !dont_stop_writing) { /* it's done flushing */
if (connection_finished_flushing(conn) < 0) {
/* already marked */
return -1;
@@ -3898,7 +3909,7 @@ client_check_address_changed(tor_socket_t sock)
} else {
/* The interface changed. We're a client, so we need to regenerate our
* keys. First, reset the state. */
- log(LOG_NOTICE, LD_NET, "Our IP address has changed. Rotating keys...");
+ log_notice(LD_NET, "Our IP address has changed. Rotating keys...");
tor_addr_copy(*last_interface_ip_ptr, &iface_addr);
SMARTLIST_FOREACH(outgoing_addrs, tor_addr_t*, a_ptr, tor_free(a_ptr));
smartlist_clear(outgoing_addrs);
@@ -3982,8 +3993,9 @@ connection_flushed_some(connection_t *conn)
return r;
}
-/** We just finished flushing bytes from conn-\>outbuf, and there
- * are no more bytes remaining.
+/** We just finished flushing bytes to the appropriately low network layer,
+ * and there are no more bytes remaining in conn-\>outbuf, conn-\>bev, or
+ * conn-\>tls to be flushed.
*
* This function just passes conn to the connection-specific
* connection_*_finished_flushing() function.
@@ -4110,14 +4122,14 @@ connection_dump_buffer_mem_stats(int severity)
total_alloc += alloc_by_type[i];
}
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
"In buffers for %d connections: "U64_FORMAT" used/"U64_FORMAT" allocated",
smartlist_len(conns),
U64_PRINTF_ARG(total_used), U64_PRINTF_ARG(total_alloc));
for (i=CONN_TYPE_MIN_; i <= CONN_TYPE_MAX_; ++i) {
if (!n_conns_by_type[i])
continue;
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
" For %d %s connections: "U64_FORMAT" used/"U64_FORMAT" allocated",
n_conns_by_type[i], conn_type_to_string(i),
U64_PRINTF_ARG(used_by_type[i]), U64_PRINTF_ARG(alloc_by_type[i]));
diff --git a/src/or/connection.h b/src/or/connection.h
index b0c2a42838..c78fe6e652 100644
--- a/src/or/connection.h
+++ b/src/or/connection.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c
index defe94408b..b4fa3e6fe2 100644
--- a/src/or/connection_edge.c
+++ b/src/or/connection_edge.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -37,6 +37,7 @@
#include "router.h"
#include "routerlist.h"
#include "routerset.h"
+#include "circuitbuild.h"
#ifdef HAVE_LINUX_TYPES_H
#include <linux/types.h>
@@ -641,6 +642,10 @@ connection_ap_expire_beginning(void)
" '%s.onion'.",
seconds_idle,
safe_str_client(entry_conn->socks_request->address));
+ /* Roll back path bias use state so that we probe the circuit
+ * if nothing else succeeds on it */
+ pathbias_mark_use_rollback(TO_ORIGIN_CIRCUIT(circ));
+
connection_edge_end(conn, END_STREAM_REASON_TIMEOUT);
connection_mark_unattached_ap(entry_conn, END_STREAM_REASON_TIMEOUT);
}
@@ -805,6 +810,10 @@ connection_ap_detach_retriable(entry_connection_t *conn,
control_event_stream_status(conn, STREAM_EVENT_FAILED_RETRIABLE, reason);
ENTRY_TO_CONN(conn)->timestamp_lastread = time(NULL);
+ /* Roll back path bias use state so that we probe the circuit
+ * if nothing else succeeds on it */
+ pathbias_mark_use_rollback(circ);
+
if (conn->pending_optimistic_data) {
generic_buffer_set_to_copy(&conn->sending_optimistic_data,
conn->pending_optimistic_data);
@@ -829,9 +838,10 @@ static int
consider_plaintext_ports(entry_connection_t *conn, uint16_t port)
{
const or_options_t *options = get_options();
- int reject = smartlist_string_num_isin(options->RejectPlaintextPorts, port);
+ int reject = smartlist_contains_int_as_string(
+ options->RejectPlaintextPorts, port);
- if (smartlist_string_num_isin(options->WarnPlaintextPorts, port)) {
+ if (smartlist_contains_int_as_string(options->WarnPlaintextPorts, port)) {
log_warn(LD_APP, "Application request to port %d: this port is "
"commonly used for unencrypted protocols. Please make sure "
"you don't send anything you would mind the rest of the "
@@ -1661,7 +1671,7 @@ connection_ap_process_natd(entry_connection_t *conn)
/** Iterate over the two bytes of stream_id until we get one that is not
* already in use; return it. Return 0 if can't get a unique stream_id.
*/
-static streamid_t
+streamid_t
get_unique_stream_id_by_circ(origin_circuit_t *circ)
{
edge_connection_t *tmpconn;
@@ -2204,8 +2214,10 @@ connection_ap_handshake_socks_reply(entry_connection_t *conn, char *reply,
U64_PRINTF_ARG(ENTRY_TO_CONN(conn)->global_identifier),
endreason);
} else {
- TO_ORIGIN_CIRCUIT(conn->edge_.on_circuit)->path_state
- = PATH_STATE_USE_SUCCEEDED;
+ // XXX: Hrmm. It looks like optimistic data can't go through this
+ // codepath, but someone should probably test it and make sure.
+ // We don't want to mark optimistically opened streams as successful.
+ pathbias_mark_use_success(TO_ORIGIN_CIRCUIT(conn->edge_.on_circuit));
}
}
@@ -2427,6 +2439,7 @@ connection_exit_begin_conn(cell_t *cell, circuit_t *circ)
tor_free(address);
relay_send_end_cell_from_edge(rh.stream_id, circ,
END_STREAM_REASON_EXITPOLICY, NULL);
+ return 0;
}
}
@@ -2478,7 +2491,7 @@ connection_exit_begin_conn(cell_t *cell, circuit_t *circ)
connection_exit_connect(n_stream);
/* For path bias: This circuit was used successfully */
- origin_circ->path_state = PATH_STATE_USE_SUCCEEDED;
+ pathbias_mark_use_success(origin_circ);
tor_free(address);
return 0;
@@ -2811,6 +2824,9 @@ connection_ap_can_use_exit(const entry_connection_t *conn, const node_t *exit)
/** If address is of the form "y.onion" with a well-formed handle y:
* Put a NUL after y, lower-case it, and return ONION_HOSTNAME.
*
+ * If address is of the form "x.y.onion" with a well-formed handle x:
+ * Drop "x.", put a NUL after y, lower-case it, and return ONION_HOSTNAME.
+ *
* If address is of the form "y.onion" with a badly-formed handle y:
* Return BAD_HOSTNAME and log a message.
*
@@ -2824,6 +2840,7 @@ hostname_type_t
parse_extended_hostname(char *address)
{
char *s;
+ char *q;
char query[REND_SERVICE_ID_LEN_BASE32+1];
s = strrchr(address,'.');
@@ -2838,9 +2855,18 @@ parse_extended_hostname(char *address)
/* so it is .onion */
*s = 0; /* NUL-terminate it */
- if (strlcpy(query, address, REND_SERVICE_ID_LEN_BASE32+1) >=
+ /* locate a 'sub-domain' component, in order to remove it */
+ q = strrchr(address, '.');
+ if (q == address) {
+ goto failed; /* reject sub-domain, as DNS does */
+ }
+ q = (NULL == q) ? address : q + 1;
+ if (strlcpy(query, q, REND_SERVICE_ID_LEN_BASE32+1) >=
REND_SERVICE_ID_LEN_BASE32+1)
goto failed;
+ if (q != address) {
+ memmove(address, q, strlen(q) + 1 /* also get \0 */);
+ }
if (rend_valid_service_id(query)) {
return ONION_HOSTNAME; /* success */
}
diff --git a/src/or/connection_edge.h b/src/or/connection_edge.h
index 9f38951f40..ea284cbcfd 100644
--- a/src/or/connection_edge.h
+++ b/src/or/connection_edge.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -90,6 +90,7 @@ int connection_edge_update_circuit_isolation(const entry_connection_t *conn,
origin_circuit_t *circ,
int dry_run);
void circuit_clear_isolation(origin_circuit_t *circ);
+streamid_t get_unique_stream_id_by_circ(origin_circuit_t *circ);
/** @name Begin-cell flags
*
diff --git a/src/or/connection_or.c b/src/or/connection_or.c
index c2e4375db2..5ec32d6324 100644
--- a/src/or/connection_or.c
+++ b/src/or/connection_or.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -295,13 +295,13 @@ connection_or_report_broken_states(int severity, int domain)
smartlist_sort(items, broken_state_count_compare);
- log(severity, domain, "%d connections have failed%s", total,
+ tor_log(severity, domain, "%d connections have failed%s", total,
smartlist_len(items) > MAX_REASONS_TO_REPORT ? ". Top reasons:" : ":");
SMARTLIST_FOREACH_BEGIN(items, const broken_state_count_t *, c) {
if (c_sl_idx > MAX_REASONS_TO_REPORT)
break;
- log(severity, domain,
+ tor_log(severity, domain,
" %d connections died in state %s", (int)c->count, c->state);
} SMARTLIST_FOREACH_END(c);
diff --git a/src/or/connection_or.h b/src/or/connection_or.h
index 727de211b0..21178774a3 100644
--- a/src/or/connection_or.h
+++ b/src/or/connection_or.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/control.c b/src/or/control.c
index 65689c46dd..03e5d79c8e 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -3143,6 +3143,8 @@ handle_control_authchallenge(control_connection_t *conn, uint32_t len,
"SERVERNONCE=%s\r\n",
server_hash_encoded,
server_nonce_encoded);
+
+ tor_free(client_nonce);
return 0;
}
@@ -4663,7 +4665,7 @@ control_event_bootstrap(bootstrap_status_t status, int progress)
if (status > bootstrap_percent ||
(progress && progress > bootstrap_percent)) {
bootstrap_status_to_string(status, &tag, &summary);
- log(status ? LOG_NOTICE : LOG_INFO, LD_CONTROL,
+ tor_log(status ? LOG_NOTICE : LOG_INFO, LD_CONTROL,
"Bootstrapped %d%%: %s.", progress ? progress : status, summary);
tor_snprintf(buf, sizeof(buf),
"BOOTSTRAP PROGRESS=%d TAG=%s SUMMARY=\"%s\"",
diff --git a/src/or/control.h b/src/or/control.h
index eea3af724c..51ae230b09 100644
--- a/src/or/control.h
+++ b/src/or/control.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c
index 2164e52a41..b5740f091d 100644
--- a/src/or/cpuworker.c
+++ b/src/or/cpuworker.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -32,9 +32,6 @@
/** The tag specifies which circuit this onionskin was from. */
#define TAG_LEN 10
-/** How many bytes are sent from the cpuworker back to tor? */
-#define LEN_ONION_RESPONSE \
- (1+TAG_LEN+ONIONSKIN_REPLY_LEN+CPATH_KEY_MATERIAL_LEN)
/** How many cpuworkers we have running right now. */
static int num_cpuworkers=0;
@@ -70,7 +67,7 @@ connection_cpu_finished_flushing(connection_t *conn)
/** Pack global_id and circ_id; set *tag to the result. (See note on
* cpuworker_main for wire format.) */
static void
-tag_pack(char *tag, uint64_t chan_id, circid_t circ_id)
+tag_pack(uint8_t *tag, uint64_t chan_id, circid_t circ_id)
{
/*XXXX RETHINK THIS WHOLE MESS !!!! !NM NM NM NM*/
/*XXXX DOUBLEPLUSTHIS!!!! AS AS AS AS*/
@@ -81,12 +78,69 @@ tag_pack(char *tag, uint64_t chan_id, circid_t circ_id)
/** Unpack <b>tag</b> into addr, port, and circ_id.
*/
static void
-tag_unpack(const char *tag, uint64_t *chan_id, circid_t *circ_id)
+tag_unpack(const uint8_t *tag, uint64_t *chan_id, circid_t *circ_id)
{
*chan_id = get_uint64(tag);
*circ_id = get_uint16(tag+8);
}
+/** Magic numbers to make sure our cpuworker_requests don't grow any
+ * mis-framing bugs. */
+#define CPUWORKER_REQUEST_MAGIC 0xda4afeed
+#define CPUWORKER_REPLY_MAGIC 0x5eedf00d
+
+/** A request sent to a cpuworker. */
+typedef struct cpuworker_request_t {
+ /** Magic number; must be CPUWORKER_REQUEST_MAGIC. */
+ uint32_t magic;
+ /** Opaque tag to identify the job */
+ uint8_t tag[TAG_LEN];
+ /** Task code. Must be one of CPUWORKER_TASK_* */
+ uint8_t task;
+
+ /** Flag: Are we timing this request? */
+ unsigned timed : 1;
+ /** If we're timing this request, when was it sent to the cpuworker? */
+ struct timeval started_at;
+
+ /** A create cell for the cpuworker to process. */
+ create_cell_t create_cell;
+
+ /* Turn the above into a tagged union if needed. */
+} cpuworker_request_t;
+
+/** A reply sent by a cpuworker. */
+typedef struct cpuworker_reply_t {
+ /** Magic number; must be CPUWORKER_REPLY_MAGIC. */
+ uint32_t magic;
+ /** Opaque tag to identify the job; matches the request's tag.*/
+ uint8_t tag[TAG_LEN];
+ /** True iff we got a successful request. */
+ uint8_t success;
+
+ /** Are we timing this request? */
+ unsigned int timed : 1;
+ /** What handshake type was the request? (Used for timing) */
+ uint16_t handshake_type;
+ /** When did we send the request to the cpuworker? */
+ struct timeval started_at;
+ /** Once the cpuworker received the request, how many microseconds did it
+ * take? (This shouldn't overflow; 4 billion micoseconds is over an hour,
+ * and we'll never have an onion handshake that takes so long.) */
+ uint32_t n_usec;
+
+ /** Output of processing a create cell
+ *
+ * @{
+ */
+ /** The created cell to send back. */
+ created_cell_t created_cell;
+ /** The keys to use on this circuit. */
+ uint8_t keys[CPATH_KEY_MATERIAL_LEN];
+ /** Input to use for authenticating introduce1 cells. */
+ uint8_t rend_auth_material[DIGEST_LEN];
+} cpuworker_reply_t;
+
/** Called when the onion key has changed and we need to spawn new
* cpuworkers. Close all currently idle cpuworkers, and mark the last
* rotation time as now.
@@ -125,6 +179,110 @@ connection_cpu_reached_eof(connection_t *conn)
return 0;
}
+/** Indexed by handshake type: how many onionskins have we processed and
+ * counted of that type? */
+static uint64_t onionskins_n_processed[MAX_ONION_HANDSHAKE_TYPE+1];
+/** Indexed by handshake type, corresponding to the onionskins counted in
+ * onionskins_n_processed: how many microseconds have we spent in cpuworkers
+ * processing that kind of onionskin? */
+static uint64_t onionskins_usec_internal[MAX_ONION_HANDSHAKE_TYPE+1];
+/** Indexed by handshake type, corresponding to onionskins counted in
+ * onionskins_n_processed: how many microseconds have we spent waiting for
+ * cpuworkers to give us answers for that kind of onionskin?
+ */
+static uint64_t onionskins_usec_roundtrip[MAX_ONION_HANDSHAKE_TYPE+1];
+
+/** If any onionskin takes longer than this, we clip them to this
+ * time. (microseconds) */
+#define MAX_BELIEVABLE_ONIONSKIN_DELAY (2*1000*1000)
+
+/** Return true iff we'd like to measure a handshake of type
+ * <b>onionskin_type</b>. */
+static int
+should_time_request(uint16_t onionskin_type)
+{
+ /* If we've never heard of this type, we shouldn't even be here. */
+ if (onionskin_type > MAX_ONION_HANDSHAKE_TYPE)
+ return 0;
+ /* Measure the first N handshakes of each type, to ensure we have a
+ * sample */
+ if (onionskins_n_processed[onionskin_type] < 4096)
+ return 1;
+ /** Otherwise, measure with P=1/128. We avoid doing this for every
+ * handshake, since the measurement itself can take a little time. */
+ return tor_weak_random() < (TOR_RAND_MAX/128);
+}
+
+/** Return an estimate of how many microseconds we will need for a single
+ * cpuworker to to process <b>n_requests</b> onionskins of type
+ * <b>onionskin_type</b>. */
+uint64_t
+estimated_usec_for_onionskins(uint32_t n_requests, uint16_t onionskin_type)
+{
+ if (onionskin_type > MAX_ONION_HANDSHAKE_TYPE) /* should be impossible */
+ return 1000 * n_requests;
+ if (PREDICT_UNLIKELY(onionskins_n_processed[onionskin_type] < 100)) {
+ /* Until we have 100 data points, just asssume everything takes 1 msec. */
+ return 1000 * n_requests;
+ } else {
+ /* This can't overflow: we'll never have more than 500000 onionskins
+ * measured in onionskin_usec_internal, and they won't take anything near
+ * 1 sec each, and we won't have anything like 1 million queued
+ * onionskins. But that's 5e5 * 1e6 * 1e6, which is still less than
+ * UINT64_MAX. */
+ return (onionskins_usec_internal[onionskin_type] * n_requests) /
+ onionskins_n_processed[onionskin_type];
+ }
+}
+
+/** Compute the absolute and relative overhead of using the cpuworker
+ * framework for onionskins of type <b>onionskin_type</b>.*/
+static int
+get_overhead_for_onionskins(uint32_t *usec_out, double *frac_out,
+ uint16_t onionskin_type)
+{
+ uint64_t overhead;
+
+ *usec_out = 0;
+ *frac_out = 0.0;
+
+ if (onionskin_type > MAX_ONION_HANDSHAKE_TYPE) /* should be impossible */
+ return -1;
+ if (onionskins_n_processed[onionskin_type] == 0 ||
+ onionskins_usec_internal[onionskin_type] == 0 ||
+ onionskins_usec_roundtrip[onionskin_type] == 0)
+ return -1;
+
+ overhead = onionskins_usec_roundtrip[onionskin_type] -
+ onionskins_usec_internal[onionskin_type];
+
+ *usec_out = (uint32_t)(overhead / onionskins_n_processed[onionskin_type]);
+ *frac_out = U64_TO_DBL(overhead) / onionskins_usec_internal[onionskin_type];
+
+ return 0;
+}
+
+/** If we've measured overhead for onionskins of type <b>onionskin_type</b>,
+ * log it. */
+void
+cpuworker_log_onionskin_overhead(int severity, int onionskin_type,
+ const char *onionskin_type_name)
+{
+ uint32_t overhead;
+ double relative_overhead;
+ int r;
+
+ r = get_overhead_for_onionskins(&overhead, &relative_overhead,
+ onionskin_type);
+ if (!overhead || r<0)
+ return;
+
+ log_fn(severity, LD_OR,
+ "%s onionskins have averaged %u usec overhead (%.2f%%) in "
+ "cpuworker code ",
+ onionskin_type_name, (unsigned)overhead, relative_overhead*100);
+}
+
/** Called when we get data from a cpuworker. If the answer is not complete,
* wait for a complete answer. If the answer is complete,
* process it as appropriate.
@@ -132,8 +290,6 @@ connection_cpu_reached_eof(connection_t *conn)
int
connection_cpu_process_inbuf(connection_t *conn)
{
- char success;
- char buf[LEN_ONION_RESPONSE];
uint64_t chan_id;
circid_t circ_id;
channel_t *p_chan = NULL;
@@ -146,15 +302,40 @@ connection_cpu_process_inbuf(connection_t *conn)
return 0;
if (conn->state == CPUWORKER_STATE_BUSY_ONION) {
- if (connection_get_inbuf_len(conn) < LEN_ONION_RESPONSE)
+ cpuworker_reply_t rpl;
+ if (connection_get_inbuf_len(conn) < sizeof(cpuworker_reply_t))
return 0; /* not yet */
- tor_assert(connection_get_inbuf_len(conn) == LEN_ONION_RESPONSE);
-
- connection_fetch_from_buf(&success,1,conn);
- connection_fetch_from_buf(buf,LEN_ONION_RESPONSE-1,conn);
-
+ tor_assert(connection_get_inbuf_len(conn) == sizeof(cpuworker_reply_t));
+
+ connection_fetch_from_buf((void*)&rpl,sizeof(cpuworker_reply_t),conn);
+
+ tor_assert(rpl.magic == CPUWORKER_REPLY_MAGIC);
+
+ if (rpl.timed && rpl.success &&
+ rpl.handshake_type <= MAX_ONION_HANDSHAKE_TYPE) {
+ /* Time how long this request took. The handshake_type check should be
+ needless, but let's leave it in to be safe. */
+ struct timeval tv_end, tv_diff;
+ int64_t usec_roundtrip;
+ tor_gettimeofday(&tv_end);
+ timersub(&tv_end, &rpl.started_at, &tv_diff);
+ usec_roundtrip = ((int64_t)tv_diff.tv_sec)*1000000 + tv_diff.tv_usec;
+ if (usec_roundtrip >= 0 &&
+ usec_roundtrip < MAX_BELIEVABLE_ONIONSKIN_DELAY) {
+ ++onionskins_n_processed[rpl.handshake_type];
+ onionskins_usec_internal[rpl.handshake_type] += rpl.n_usec;
+ onionskins_usec_roundtrip[rpl.handshake_type] += usec_roundtrip;
+ if (onionskins_n_processed[rpl.handshake_type] >= 500000) {
+ /* Scale down every 500000 handshakes. On a busy server, that's
+ * less impressive than it sounds. */
+ onionskins_n_processed[rpl.handshake_type] /= 2;
+ onionskins_usec_internal[rpl.handshake_type] /= 2;
+ onionskins_usec_roundtrip[rpl.handshake_type] /= 2;
+ }
+ }
+ }
/* parse out the circ it was talking about */
- tag_unpack(buf, &chan_id, &circ_id);
+ tag_unpack(rpl.tag, &chan_id, &circ_id);
circ = NULL;
log_debug(LD_OR,
"Unpacking cpuworker reply, chan_id is " U64_FORMAT
@@ -165,7 +346,7 @@ connection_cpu_process_inbuf(connection_t *conn)
if (p_chan)
circ = circuit_get_by_circid_channel(circ_id, p_chan);
- if (success == 0) {
+ if (rpl.success == 0) {
log_debug(LD_OR,
"decoding onionskin failed. "
"(Old key or bad software.) Closing.");
@@ -183,8 +364,10 @@ connection_cpu_process_inbuf(connection_t *conn)
goto done_processing;
}
tor_assert(! CIRCUIT_IS_ORIGIN(circ));
- if (onionskin_answer(TO_OR_CIRCUIT(circ), CELL_CREATED, buf+TAG_LEN,
- buf+TAG_LEN+ONIONSKIN_REPLY_LEN) < 0) {
+ if (onionskin_answer(TO_OR_CIRCUIT(circ),
+ &rpl.created_cell,
+ (const char*)rpl.keys,
+ rpl.rend_auth_material) < 0) {
log_warn(LD_OR,"onionskin_answer failed. Closing.");
circuit_mark_for_close(circ, END_CIRC_REASON_INTERNAL);
goto done_processing;
@@ -211,32 +394,21 @@ connection_cpu_process_inbuf(connection_t *conn)
* Read and writes from fdarray[1]. Reads requests, writes answers.
*
* Request format:
- * Task type [1 byte, always CPUWORKER_TASK_ONION]
- * Opaque tag TAG_LEN
- * Onionskin challenge ONIONSKIN_CHALLENGE_LEN
+ * cpuworker_request_t.
* Response format:
- * Success/failure [1 byte, boolean.]
- * Opaque tag TAG_LEN
- * Onionskin challenge ONIONSKIN_REPLY_LEN
- * Negotiated keys KEY_LEN*2+DIGEST_LEN*2
- *
- * (Note: this _should_ be by addr/port, since we're concerned with specific
- * connections, not with routers (where we'd use identity).)
+ * cpuworker_reply_t
*/
static void
cpuworker_main(void *data)
{
- char question[ONIONSKIN_CHALLENGE_LEN];
- uint8_t question_type;
+ /* For talking to the parent thread/process */
tor_socket_t *fdarray = data;
tor_socket_t fd;
/* variables for onion processing */
- char keys[CPATH_KEY_MATERIAL_LEN];
- char reply_to_proxy[ONIONSKIN_REPLY_LEN];
- char buf[LEN_ONION_RESPONSE];
- char tag[TAG_LEN];
- crypto_pk_t *onion_key = NULL, *last_onion_key = NULL;
+ server_onion_keys_t onion_keys;
+ cpuworker_request_t req;
+ cpuworker_reply_t rpl;
fd = fdarray[1]; /* this side is ours */
#ifndef TOR_IS_MULTITHREADED
@@ -247,68 +419,85 @@ cpuworker_main(void *data)
#endif
tor_free(data);
- dup_onion_keys(&onion_key, &last_onion_key);
+ setup_server_onion_keys(&onion_keys);
for (;;) {
- ssize_t r;
-
- if ((r = recv(fd, (void *)&question_type, 1, 0)) != 1) {
-// log_fn(LOG_ERR,"read type failed. Exiting.");
- if (r == 0) {
- log_info(LD_OR,
- "CPU worker exiting because Tor process closed connection "
- "(either rotated keys or died).");
- } else {
- log_info(LD_OR,
- "CPU worker exiting because of error on connection to Tor "
- "process.");
- log_info(LD_OR,"(Error on "TOR_SOCKET_T_FORMAT" was %s)",
- fd, tor_socket_strerror(tor_socket_errno(fd)));
- }
+ if (read_all(fd, (void *)&req, sizeof(req), 1) != sizeof(req)) {
+ log_info(LD_OR, "read request failed. Exiting.");
goto end;
}
- tor_assert(question_type == CPUWORKER_TASK_ONION);
-
- if (read_all(fd, tag, TAG_LEN, 1) != TAG_LEN) {
- log_err(LD_BUG,"read tag failed. Exiting.");
- goto end;
- }
-
- if (read_all(fd, question, ONIONSKIN_CHALLENGE_LEN, 1) !=
- ONIONSKIN_CHALLENGE_LEN) {
- log_err(LD_BUG,"read question failed. Exiting.");
- goto end;
- }
-
- if (question_type == CPUWORKER_TASK_ONION) {
- if (onion_skin_server_handshake(question, onion_key, last_onion_key,
- reply_to_proxy, keys, CPATH_KEY_MATERIAL_LEN) < 0) {
+ tor_assert(req.magic == CPUWORKER_REQUEST_MAGIC);
+
+ memset(&rpl, 0, sizeof(rpl));
+
+ if (req.task == CPUWORKER_TASK_ONION) {
+ const create_cell_t *cc = &req.create_cell;
+ created_cell_t *cell_out = &rpl.created_cell;
+ struct timeval tv_start, tv_end;
+ int n;
+ rpl.timed = req.timed;
+ rpl.started_at = req.started_at;
+ rpl.handshake_type = cc->handshake_type;
+ if (req.timed)
+ tor_gettimeofday(&tv_start);
+ n = onion_skin_server_handshake(cc->handshake_type,
+ cc->onionskin, cc->handshake_len,
+ &onion_keys,
+ cell_out->reply,
+ rpl.keys, CPATH_KEY_MATERIAL_LEN,
+ rpl.rend_auth_material);
+ if (n < 0) {
/* failure */
log_debug(LD_OR,"onion_skin_server_handshake failed.");
- *buf = 0; /* indicate failure in first byte */
- memcpy(buf+1,tag,TAG_LEN);
- /* send all zeros as answer */
- memset(buf+1+TAG_LEN, 0, LEN_ONION_RESPONSE-(1+TAG_LEN));
+ memset(&rpl, 0, sizeof(rpl));
+ memcpy(rpl.tag, req.tag, TAG_LEN);
+ rpl.success = 0;
} else {
/* success */
log_debug(LD_OR,"onion_skin_server_handshake succeeded.");
- buf[0] = 1; /* 1 means success */
- memcpy(buf+1,tag,TAG_LEN);
- memcpy(buf+1+TAG_LEN,reply_to_proxy,ONIONSKIN_REPLY_LEN);
- memcpy(buf+1+TAG_LEN+ONIONSKIN_REPLY_LEN,keys,CPATH_KEY_MATERIAL_LEN);
+ memcpy(rpl.tag, req.tag, TAG_LEN);
+ cell_out->handshake_len = n;
+ switch (cc->cell_type) {
+ case CELL_CREATE:
+ cell_out->cell_type = CELL_CREATED; break;
+ case CELL_CREATE2:
+ cell_out->cell_type = CELL_CREATED2; break;
+ case CELL_CREATE_FAST:
+ cell_out->cell_type = CELL_CREATED_FAST; break;
+ default:
+ tor_assert(0);
+ goto end;
+ }
+ rpl.success = 1;
}
- if (write_all(fd, buf, LEN_ONION_RESPONSE, 1) != LEN_ONION_RESPONSE) {
+ rpl.magic = CPUWORKER_REPLY_MAGIC;
+ if (req.timed) {
+ struct timeval tv_diff;
+ int64_t usec;
+ tor_gettimeofday(&tv_end);
+ timersub(&tv_end, &tv_start, &tv_diff);
+ usec = ((int64_t)tv_diff.tv_sec)*1000000 + tv_diff.tv_usec;
+ if (usec < 0 || usec > MAX_BELIEVABLE_ONIONSKIN_DELAY)
+ rpl.n_usec = MAX_BELIEVABLE_ONIONSKIN_DELAY;
+ else
+ rpl.n_usec = (uint32_t) usec;
+ }
+ if (write_all(fd, (void*)&rpl, sizeof(rpl), 1) != sizeof(rpl)) {
log_err(LD_BUG,"writing response buf failed. Exiting.");
goto end;
}
log_debug(LD_OR,"finished writing response.");
+ } else if (req.task == CPUWORKER_TASK_SHUTDOWN) {
+ log_info(LD_OR,"Clean shutdown: exiting");
+ goto end;
}
+ memwipe(&req, 0, sizeof(req));
+ memwipe(&rpl, 0, sizeof(req));
}
end:
- if (onion_key)
- crypto_pk_free(onion_key);
- if (last_onion_key)
- crypto_pk_free(last_onion_key);
+ memwipe(&req, 0, sizeof(req));
+ memwipe(&rpl, 0, sizeof(req));
+ release_server_onion_keys(&onion_keys);
tor_close_socket(fd);
crypto_thread_cleanup();
spawn_exit();
@@ -391,7 +580,7 @@ static void
process_pending_task(connection_t *cpuworker)
{
or_circuit_t *circ;
- char *onionskin = NULL;
+ create_cell_t *onionskin = NULL;
tor_assert(cpuworker);
@@ -444,12 +633,13 @@ cull_wedged_cpuworkers(void)
*/
int
assign_onionskin_to_cpuworker(connection_t *cpuworker,
- or_circuit_t *circ, char *onionskin)
+ or_circuit_t *circ,
+ create_cell_t *onionskin)
{
- char qbuf[1];
- char tag[TAG_LEN];
+ cpuworker_request_t req;
time_t now = approx_time();
static time_t last_culled_cpuworkers = 0;
+ int should_time;
/* Checking for wedged cpuworkers requires a linear search over all
* connections, so let's do it only once a minute.
@@ -483,21 +673,31 @@ assign_onionskin_to_cpuworker(connection_t *cpuworker,
tor_free(onionskin);
return -1;
}
- tag_pack(tag, circ->p_chan->global_identifier,
+
+ should_time = should_time_request(onionskin->handshake_type);
+ memset(&req, 0, sizeof(req));
+ req.magic = CPUWORKER_REQUEST_MAGIC;
+ tag_pack(req.tag, circ->p_chan->global_identifier,
circ->p_circ_id);
+ req.timed = should_time;
cpuworker->state = CPUWORKER_STATE_BUSY_ONION;
/* touch the lastwritten timestamp, since that's how we check to
* see how long it's been since we asked the question, and sometimes
* we check before the first call to connection_handle_write(). */
- cpuworker->timestamp_lastwritten = time(NULL);
+ cpuworker->timestamp_lastwritten = now;
num_cpuworkers_busy++;
- qbuf[0] = CPUWORKER_TASK_ONION;
- connection_write_to_buf(qbuf, 1, cpuworker);
- connection_write_to_buf(tag, sizeof(tag), cpuworker);
- connection_write_to_buf(onionskin, ONIONSKIN_CHALLENGE_LEN, cpuworker);
+ req.task = CPUWORKER_TASK_ONION;
+ memcpy(&req.create_cell, onionskin, sizeof(create_cell_t));
+
tor_free(onionskin);
+
+ if (should_time)
+ tor_gettimeofday(&req.started_at);
+
+ connection_write_to_buf((void*)&req, sizeof(req), cpuworker);
+ memwipe(&req, 0, sizeof(req));
}
return 0;
}
diff --git a/src/or/cpuworker.h b/src/or/cpuworker.h
index 73c7eefd4c..317cef43ba 100644
--- a/src/or/cpuworker.h
+++ b/src/or/cpuworker.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -17,9 +17,15 @@ void cpuworkers_rotate(void);
int connection_cpu_finished_flushing(connection_t *conn);
int connection_cpu_reached_eof(connection_t *conn);
int connection_cpu_process_inbuf(connection_t *conn);
+struct create_cell_t;
int assign_onionskin_to_cpuworker(connection_t *cpuworker,
or_circuit_t *circ,
- char *onionskin);
+ struct create_cell_t *onionskin);
+
+uint64_t estimated_usec_for_onionskins(uint32_t n_requests,
+ uint16_t onionskin_type);
+void cpuworker_log_onionskin_overhead(int severity, int onionskin_type,
+ const char *onionskin_type_name);
#endif
diff --git a/src/or/directory.c b/src/or/directory.c
index 042b2dcf11..c101418446 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "or.h"
@@ -1860,7 +1860,7 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
const char *flavname = conn->requested_resource;
if (status_code != 200) {
int severity = (status_code == 304) ? LOG_INFO : LOG_WARN;
- log(severity, LD_DIR,
+ tor_log(severity, LD_DIR,
"Received http status code %d (%s) from server "
"'%s:%d' while fetching consensus directory.",
status_code, escaped(reason), conn->base_.address,
@@ -2800,8 +2800,6 @@ directory_handle_command_get(dir_connection_t *conn, const char *headers,
/* v2 or v3 network status fetch. */
smartlist_t *dir_fps = smartlist_new();
int is_v3 = !strcmpstart(url, "/tor/status-vote");
- geoip_client_action_t act =
- is_v3 ? GEOIP_CLIENT_NETWORKSTATUS : GEOIP_CLIENT_NETWORKSTATUS_V2;
const char *request_type = NULL;
const char *key = url + strlen("/tor/status/");
long lifetime = NETWORKSTATUS_CACHE_LIFETIME;
@@ -2851,7 +2849,7 @@ directory_handle_command_get(dir_connection_t *conn, const char *headers,
write_http_status_line(conn, 404, "Consensus not signed by sufficient "
"number of requested authorities");
smartlist_free(dir_fps);
- geoip_note_ns_response(act, GEOIP_REJECT_NOT_ENOUGH_SIGS);
+ geoip_note_ns_response(GEOIP_REJECT_NOT_ENOUGH_SIGS);
tor_free(flavor);
goto done;
}
@@ -2870,7 +2868,8 @@ directory_handle_command_get(dir_connection_t *conn, const char *headers,
if (!smartlist_len(dir_fps)) { /* we failed to create/cache cp */
write_http_status_line(conn, 503, "Network status object unavailable");
smartlist_free(dir_fps);
- geoip_note_ns_response(act, GEOIP_REJECT_UNAVAILABLE);
+ if (is_v3)
+ geoip_note_ns_response(GEOIP_REJECT_UNAVAILABLE);
goto done;
}
@@ -2878,13 +2877,15 @@ directory_handle_command_get(dir_connection_t *conn, const char *headers,
write_http_status_line(conn, 404, "Not found");
SMARTLIST_FOREACH(dir_fps, char *, cp, tor_free(cp));
smartlist_free(dir_fps);
- geoip_note_ns_response(act, GEOIP_REJECT_NOT_FOUND);
+ if (is_v3)
+ geoip_note_ns_response(GEOIP_REJECT_NOT_FOUND);
goto done;
} else if (!smartlist_len(dir_fps)) {
write_http_status_line(conn, 304, "Not modified");
SMARTLIST_FOREACH(dir_fps, char *, cp, tor_free(cp));
smartlist_free(dir_fps);
- geoip_note_ns_response(act, GEOIP_REJECT_NOT_MODIFIED);
+ if (is_v3)
+ geoip_note_ns_response(GEOIP_REJECT_NOT_MODIFIED);
goto done;
}
@@ -2896,24 +2897,24 @@ directory_handle_command_get(dir_connection_t *conn, const char *headers,
write_http_status_line(conn, 503, "Directory busy, try again later");
SMARTLIST_FOREACH(dir_fps, char *, fp, tor_free(fp));
smartlist_free(dir_fps);
- geoip_note_ns_response(act, GEOIP_REJECT_BUSY);
+ if (is_v3)
+ geoip_note_ns_response(GEOIP_REJECT_BUSY);
goto done;
}
- {
+ if (is_v3) {
struct in_addr in;
tor_addr_t addr;
if (tor_inet_aton((TO_CONN(conn))->address, &in)) {
tor_addr_from_ipv4h(&addr, ntohl(in.s_addr));
- geoip_note_client_seen(act, &addr, time(NULL));
- geoip_note_ns_response(act, GEOIP_SUCCESS);
+ geoip_note_client_seen(GEOIP_CLIENT_NETWORKSTATUS, &addr, time(NULL));
+ geoip_note_ns_response(GEOIP_SUCCESS);
/* Note that a request for a network status has started, so that we
* can measure the download time later on. */
if (conn->dirreq_id)
- geoip_start_dirreq(conn->dirreq_id, dlen, act,
- DIRREQ_TUNNELED);
+ geoip_start_dirreq(conn->dirreq_id, dlen, DIRREQ_TUNNELED);
else
- geoip_start_dirreq(TO_CONN(conn)->global_identifier, dlen, act,
+ geoip_start_dirreq(TO_CONN(conn)->global_identifier, dlen,
DIRREQ_DIRECT);
}
}
diff --git a/src/or/directory.h b/src/or/directory.h
index 9ff78d12c4..41f18a1725 100644
--- a/src/or/directory.h
+++ b/src/or/directory.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/dirserv.c b/src/or/dirserv.c
index d080fe7b1e..6209842881 100644
--- a/src/or/dirserv.c
+++ b/src/or/dirserv.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define DIRSERV_PRIVATE
@@ -74,7 +74,8 @@ static const struct consensus_method_range_t {
} microdesc_consensus_methods[] = {
{MIN_METHOD_FOR_MICRODESC, MIN_METHOD_FOR_A_LINES - 1},
{MIN_METHOD_FOR_A_LINES, MIN_METHOD_FOR_P6_LINES - 1},
- {MIN_METHOD_FOR_P6_LINES, MAX_SUPPORTED_CONSENSUS_METHOD},
+ {MIN_METHOD_FOR_P6_LINES, MIN_METHOD_FOR_NTOR_KEY - 1},
+ {MIN_METHOD_FOR_NTOR_KEY, MAX_SUPPORTED_CONSENSUS_METHOD},
{-1, -1}
};
@@ -1883,6 +1884,22 @@ dirserv_thinks_router_is_hs_dir(const routerinfo_t *router,
node->is_running);
}
+/** Don't consider routers with less bandwidth than this when computing
+ * thresholds. */
+#define ABSOLUTE_MIN_BW_VALUE_TO_CONSIDER 4096
+
+/** Helper for dirserv_compute_performance_thresholds(): Decide whether to
+ * include a router in our calculations, and return true iff we should. */
+static int
+router_counts_toward_thresholds(const node_t *node, time_t now,
+ const digestmap_t *omit_as_sybil)
+{
+ return node->ri && router_is_active(node->ri, node, now) &&
+ !digestmap_get(omit_as_sybil, node->ri->cache_info.identity_digest) &&
+ (router_get_advertised_bandwidth(node->ri) >=
+ ABSOLUTE_MIN_BW_VALUE_TO_CONSIDER);
+}
+
/** Look through the routerlist, the Mean Time Between Failure history, and
* the Weighted Fractional Uptime history, and use them to set thresholds for
* the Stable, Fast, and Guard flags. Update the fields stable_uptime,
@@ -1892,7 +1909,8 @@ dirserv_thinks_router_is_hs_dir(const routerinfo_t *router,
*
* Also, set the is_exit flag of each router appropriately. */
static void
-dirserv_compute_performance_thresholds(routerlist_t *rl)
+dirserv_compute_performance_thresholds(routerlist_t *rl,
+ digestmap_t *omit_as_sybil)
{
int n_active, n_active_nonexit, n_familiar;
uint32_t *uptimes, *bandwidths, *bandwidths_excluding_exits;
@@ -1933,8 +1951,8 @@ dirserv_compute_performance_thresholds(routerlist_t *rl)
/* Now, fill in the arrays. */
SMARTLIST_FOREACH_BEGIN(nodelist_get_list(), node_t *, node) {
- routerinfo_t *ri = node->ri;
- if (ri && router_is_active(ri, node, now)) {
+ if (router_counts_toward_thresholds(node, now, omit_as_sybil)) {
+ routerinfo_t *ri = node->ri;
const char *id = ri->cache_info.identity_digest;
uint32_t bw;
node->is_exit = (!router_exit_policy_rejects_all(ri) &&
@@ -1974,9 +1992,12 @@ dirserv_compute_performance_thresholds(routerlist_t *rl)
{
/* We can vote on a parameter for the minimum and maximum. */
+#define ABSOLUTE_MIN_VALUE_FOR_FAST_FLAG 4096
int32_t min_fast, max_fast;
min_fast = networkstatus_get_param(NULL, "FastFlagMinThreshold",
- 0, 0, INT32_MAX);
+ ABSOLUTE_MIN_VALUE_FOR_FAST_FLAG,
+ ABSOLUTE_MIN_VALUE_FOR_FAST_FLAG,
+ INT32_MAX);
max_fast = networkstatus_get_param(NULL, "FastFlagMaxThreshold",
INT32_MAX, min_fast, INT32_MAX);
if (fast_bandwidth < (uint32_t)min_fast)
@@ -1995,8 +2016,8 @@ dirserv_compute_performance_thresholds(routerlist_t *rl)
n_familiar = 0;
SMARTLIST_FOREACH_BEGIN(nodelist_get_list(), node_t *, node) {
- routerinfo_t *ri = node->ri;
- if (ri && router_is_active(ri, node, now)) {
+ if (router_counts_toward_thresholds(node, now, omit_as_sybil)) {
+ routerinfo_t *ri = node->ri;
const char *id = ri->cache_info.identity_digest;
long tk = rep_hist_get_weighted_time_known(id, now);
if (tk < guard_tk)
@@ -2016,7 +2037,7 @@ dirserv_compute_performance_thresholds(routerlist_t *rl)
median_uint32(bandwidths_excluding_exits, n_active_nonexit);
}
- log(LOG_INFO, LD_DIRSERV,
+ log_info(LD_DIRSERV,
"Cutoffs: For Stable, %lu sec uptime, %lu sec MTBF. "
"For Fast: %lu bytes/sec. "
"For Guard: WFU %.03f%%, time-known %lu sec, "
@@ -2038,6 +2059,30 @@ dirserv_compute_performance_thresholds(routerlist_t *rl)
tor_free(wfus);
}
+/** Give a statement of our current performance thresholds for inclusion
+ * in a vote document. */
+char *
+dirserv_get_flag_thresholds_line(void)
+{
+ char *result=NULL;
+ tor_asprintf(&result,
+ "stable-uptime=%lu stable-mtbf=%lu "
+ "fast-speed=%lu "
+ "guard-wfu=%.03f%% guard-tk=%lu "
+ "guard-bw-inc-exits=%lu guard-bw-exc-exits=%lu "
+ "enough-mtbf=%d",
+ (unsigned long)stable_uptime,
+ (unsigned long)stable_mtbf,
+ (unsigned long)fast_bandwidth,
+ guard_wfu*100,
+ (unsigned long)guard_tk,
+ (unsigned long)guard_bandwidth_including_exits,
+ (unsigned long)guard_bandwidth_excluding_exits,
+ enough_mtbf_info ? 1 : 0);
+
+ return result;
+}
+
/** Given a platform string as in a routerinfo_t (possibly null), return a
* newly allocated version string for a networkstatus document, or NULL if the
* platform doesn't give a Tor version. */
@@ -2180,7 +2225,7 @@ routerstatus_format_entry(char *buf, size_t buf_len,
"(wanted descriptor %s).",
id, dd);
return -1;
- };
+ }
/* This assert can fire for the control port, because
* it can request NS documents before all descriptors
@@ -2204,7 +2249,7 @@ routerstatus_format_entry(char *buf, size_t buf_len,
tor_assert(tor_memeq(desc->cache_info.signed_descriptor_digest,
rs->descriptor_digest,
DIGEST_LEN));
- };
+ }
}
if (format == NS_CONTROL_PORT && rs->has_bandwidth) {
@@ -2750,13 +2795,18 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key,
dirserv_set_router_is_running(ri, now);
});
- dirserv_compute_performance_thresholds(rl);
-
routers = smartlist_new();
smartlist_add_all(routers, rl->routers);
routers_sort_by_identity(routers);
omit_as_sybil = get_possible_sybil_list(routers);
+ DIGESTMAP_FOREACH(omit_as_sybil, sybil_id, void *, ignore) {
+ (void) ignore;
+ rep_hist_make_router_pessimal(sybil_id, now);
+ } DIGESTMAP_FOREACH_END;
+
+ dirserv_compute_performance_thresholds(rl, omit_as_sybil);
+
routerstatuses = smartlist_new();
microdescriptors = smartlist_new();
@@ -3007,14 +3057,13 @@ generate_v2_networkstatus_opinion(void)
dirserv_set_router_is_running(ri, now);
});
- dirserv_compute_performance_thresholds(rl);
-
routers = smartlist_new();
smartlist_add_all(routers, rl->routers);
routers_sort_by_identity(routers);
-
omit_as_sybil = get_possible_sybil_list(routers);
+ dirserv_compute_performance_thresholds(rl, omit_as_sybil);
+
SMARTLIST_FOREACH_BEGIN(routers, routerinfo_t *, ri) {
if (ri->cache_info.published_on >= cutoff) {
routerstatus_t rs;
diff --git a/src/or/dirserv.h b/src/or/dirserv.h
index 0140cfb4d8..add09f44a3 100644
--- a/src/or/dirserv.h
+++ b/src/or/dirserv.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -70,6 +70,7 @@ int list_server_status_v1(smartlist_t *routers, char **router_status_out,
int for_controller);
int dirserv_dump_directory_to_string(char **dir_out,
crypto_pk_t *private_key);
+char *dirserv_get_flag_thresholds_line(void);
int directory_fetches_from_authorities(const or_options_t *options);
int directory_fetches_dir_info_early(const or_options_t *options);
diff --git a/src/or/dirvote.c b/src/or/dirvote.c
index 1b9af0f731..469c86c7c5 100644
--- a/src/or/dirvote.c
+++ b/src/or/dirvote.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define DIRVOTE_PRIVATE
@@ -134,6 +134,8 @@ format_networkstatus_vote(crypto_pk_t *private_signing_key,
char fu[ISO_TIME_LEN+1];
char vu[ISO_TIME_LEN+1];
char *flags = smartlist_join_strings(v3_ns->known_flags, " ", 0, NULL);
+ /* XXXX Abstraction violation: should be pulling a field out of v3_ns.*/
+ char *flag_thresholds = dirserv_get_flag_thresholds_line();
char *params;
authority_cert_t *cert = v3_ns->cert;
char *methods =
@@ -160,6 +162,7 @@ format_networkstatus_vote(crypto_pk_t *private_signing_key,
"voting-delay %d %d\n"
"%s" /* versions */
"known-flags %s\n"
+ "flag-thresholds %s\n"
"params %s\n"
"dir-source %s %s %s %s %d %d\n"
"contact %s\n",
@@ -169,6 +172,7 @@ format_networkstatus_vote(crypto_pk_t *private_signing_key,
v3_ns->vote_seconds, v3_ns->dist_seconds,
version_lines,
flags,
+ flag_thresholds,
params,
voter->nickname, fingerprint, voter->address,
fmt_addr32(addr), voter->dir_port, voter->or_port,
@@ -181,6 +185,7 @@ format_networkstatus_vote(crypto_pk_t *private_signing_key,
tor_free(params);
tor_free(flags);
+ tor_free(flag_thresholds);
tor_free(methods);
outp = status + strlen(status);
endp = status + len;
@@ -2139,7 +2144,7 @@ networkstatus_compute_consensus(smartlist_t *votes,
digest, digest_len,
legacy_signing_key)) {
log_warn(LD_BUG, "Couldn't sign consensus networkstatus.");
- return NULL; /* This leaks, but it should never happen. */
+ goto done;
}
smartlist_add(chunks, tor_strdup(sigbuf));
}
@@ -2147,13 +2152,6 @@ networkstatus_compute_consensus(smartlist_t *votes,
result = smartlist_join_strings(chunks, "", 0, NULL);
- tor_free(client_versions);
- tor_free(server_versions);
- SMARTLIST_FOREACH(flags, char *, cp, tor_free(cp));
- smartlist_free(flags);
- SMARTLIST_FOREACH(chunks, char *, cp, tor_free(cp));
- smartlist_free(chunks);
-
{
networkstatus_t *c;
if (!(c = networkstatus_parse_vote_from_string(result, NULL,
@@ -2161,7 +2159,7 @@ networkstatus_compute_consensus(smartlist_t *votes,
log_err(LD_BUG, "Generated a networkstatus consensus we couldn't "
"parse.");
tor_free(result);
- return NULL;
+ goto done;
}
// Verify balancing parameters
if (consensus_method >= MIN_METHOD_FOR_BW_WEIGHTS && added_weights) {
@@ -2170,6 +2168,15 @@ networkstatus_compute_consensus(smartlist_t *votes,
networkstatus_vote_free(c);
}
+ done:
+
+ tor_free(client_versions);
+ tor_free(server_versions);
+ SMARTLIST_FOREACH(flags, char *, cp, tor_free(cp));
+ smartlist_free(flags);
+ SMARTLIST_FOREACH(chunks, char *, cp, tor_free(cp));
+ smartlist_free(chunks);
+
return result;
}
@@ -2223,7 +2230,7 @@ networkstatus_add_detached_signatures(networkstatus_t *target,
{
digests_t *digests = strmap_get(sigs->digests, flavor);
int n_matches = 0;
- digest_algorithm_t alg;
+ int alg;
if (!digests) {
*msg_out = "No digests for given consensus flavor";
return -1;
@@ -2288,7 +2295,7 @@ networkstatus_add_detached_signatures(networkstatus_t *target,
if (sig->good_signature || !old_sig || old_sig->bad_signature) {
log_info(LD_DIR, "Adding signature from %s with %s", voter_identity,
algorithm);
- log(severity, LD_DIR, "Added a signature for %s from %s.",
+ tor_log(severity, LD_DIR, "Added a signature for %s from %s.",
target_voter->nickname, source);
++r;
if (old_sig) {
@@ -3110,7 +3117,7 @@ dirvote_compute_consensuses(void)
}
tor_assert(pending_vote_list);
SMARTLIST_FOREACH(pending_vote_list, pending_vote_t *, v, {
- if (smartlist_string_isin(v->vote->known_flags, "Running"))
+ if (smartlist_contains_string(v->vote->known_flags, "Running"))
n_vote_running++;
});
if (!n_vote_running) {
@@ -3471,7 +3478,7 @@ dirvote_free_all(void)
const char *
dirvote_get_pending_consensus(consensus_flavor_t flav)
{
- tor_assert(((int)flav) >= 0 && flav < N_CONSENSUS_FLAVORS);
+ tor_assert(((int)flav) >= 0 && (int)flav < N_CONSENSUS_FLAVORS);
return pending_consensuses[flav].body;
}
@@ -3554,6 +3561,15 @@ dirvote_create_microdescriptor(const routerinfo_t *ri, int consensus_method)
smartlist_add_asprintf(chunks, "onion-key\n%s", key);
+ if (consensus_method >= MIN_METHOD_FOR_NTOR_KEY &&
+ ri->onion_curve25519_pkey) {
+ char kbuf[128];
+ base64_encode(kbuf, sizeof(kbuf),
+ (const char*)ri->onion_curve25519_pkey->public_key,
+ CURVE25519_PUBKEY_LEN);
+ smartlist_add_asprintf(chunks, "ntor-onion-key %s", kbuf);
+ }
+
if (consensus_method >= MIN_METHOD_FOR_A_LINES &&
!tor_addr_is_null(&ri->ipv6_addr) && ri->ipv6_orport)
smartlist_add_asprintf(chunks, "a %s\n",
diff --git a/src/or/dirvote.h b/src/or/dirvote.h
index d14a375161..f134454321 100644
--- a/src/or/dirvote.h
+++ b/src/or/dirvote.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -20,7 +20,7 @@
#define MIN_VOTE_INTERVAL 300
/** The highest consensus method that we currently support. */
-#define MAX_SUPPORTED_CONSENSUS_METHOD 15
+#define MAX_SUPPORTED_CONSENSUS_METHOD 16
/** Lowest consensus method that contains a 'directory-footer' marker */
#define MIN_METHOD_FOR_FOOTER 9
@@ -48,6 +48,10 @@
/** Lowest consensus method where microdescs may include a "p6" line. */
#define MIN_METHOD_FOR_P6_LINES 15
+/** Lowest consensus method where microdescs may include an onion-key-ntor
+ * line */
+#define MIN_METHOD_FOR_NTOR_KEY 16
+
void dirvote_free_all(void);
/* vote manipulation */
diff --git a/src/or/dns.c b/src/or/dns.c
index c81948a601..edcf92e5b3 100644
--- a/src/or/dns.c
+++ b/src/or/dns.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -262,7 +262,7 @@ evdns_log_cb(int warn, const char *msg)
int severity = warn ? LOG_WARN : LOG_INFO;
if (!strcmpstart(msg, "Resolve requested for") &&
get_options()->SafeLogging) {
- log(LOG_INFO, LD_EXIT, "eventdns: Resolve requested.");
+ log_info(LD_EXIT, "eventdns: Resolve requested.");
return;
} else if (!strcmpstart(msg, "Search: ")) {
return;
@@ -291,7 +291,7 @@ evdns_log_cb(int warn, const char *msg)
control_event_server_status(LOG_WARN, "NAMESERVER_ALL_DOWN");
all_down = 1;
}
- log(severity, LD_EXIT, "eventdns: %s", msg);
+ tor_log(severity, LD_EXIT, "eventdns: %s", msg);
}
/** Helper: passed to eventdns.c as a callback so it can generate random
@@ -835,7 +835,7 @@ dns_resolve_impl(edge_connection_t *exitconn, int is_resolve,
return -1;
if (address_is_invalid_destination(exitconn->base_.address, 0)) {
- log(LOG_PROTOCOL_WARN, LD_EXIT,
+ tor_log(LOG_PROTOCOL_WARN, LD_EXIT,
"Rejecting invalid destination address %s",
escaped_safe_str(exitconn->base_.address));
return -1;
@@ -1218,7 +1218,7 @@ is_test_address(const char *address)
{
const or_options_t *options = get_options();
return options->ServerDNSTestAddresses &&
- smartlist_string_isin_case(options->ServerDNSTestAddresses, address);
+ smartlist_contains_string_case(options->ServerDNSTestAddresses, address);
}
/** Called on the OR side when the eventdns library tells us the outcome of a
@@ -1843,8 +1843,8 @@ wildcard_increment_answer(const char *id)
if (*ip > 5 && n_wildcard_requests > 10) {
if (!dns_wildcard_list) dns_wildcard_list = smartlist_new();
- if (!smartlist_string_isin(dns_wildcard_list, id)) {
- log(dns_wildcard_notice_given ? LOG_INFO : LOG_NOTICE, LD_EXIT,
+ if (!smartlist_contains_string(dns_wildcard_list, id)) {
+ tor_log(dns_wildcard_notice_given ? LOG_INFO : LOG_NOTICE, LD_EXIT,
"Your DNS provider has given \"%s\" as an answer for %d different "
"invalid addresses. Apparently they are hijacking DNS failures. "
"I'll try to correct for this by treating future occurrences of "
@@ -1866,7 +1866,8 @@ add_wildcarded_test_address(const char *address)
if (!dns_wildcarded_test_address_list)
dns_wildcarded_test_address_list = smartlist_new();
- if (smartlist_string_isin_case(dns_wildcarded_test_address_list, address))
+ if (smartlist_contains_string_case(dns_wildcarded_test_address_list,
+ address))
return;
n_test_addrs = get_options()->ServerDNSTestAddresses ?
@@ -1875,7 +1876,7 @@ add_wildcarded_test_address(const char *address)
smartlist_add(dns_wildcarded_test_address_list, tor_strdup(address));
n = smartlist_len(dns_wildcarded_test_address_list);
if (n > n_test_addrs/2) {
- log(dns_wildcarded_test_address_notice_given ? LOG_INFO : LOG_NOTICE,
+ tor_log(dns_wildcarded_test_address_notice_given ? LOG_INFO : LOG_NOTICE,
LD_EXIT, "Your DNS provider tried to redirect \"%s\" to a junk "
"address. It has done this with %d test addresses so far. I'm "
"going to stop being an exit node for now, since our DNS seems so "
@@ -1919,7 +1920,7 @@ evdns_wildcard_check_callback(int result, char type, int count, int ttl,
}
}
- log(dns_wildcard_one_notice_given ? LOG_INFO : LOG_NOTICE, LD_EXIT,
+ tor_log(dns_wildcard_one_notice_given ? LOG_INFO : LOG_NOTICE, LD_EXIT,
"Your DNS provider gave an answer for \"%s\", which "
"is not supposed to exist. Apparently they are hijacking "
"DNS failures. Trying to correct for this. We've noticed %d "
@@ -2104,7 +2105,7 @@ dns_reset_correctness_checks(void)
static int
answer_is_wildcarded(const char *ip)
{
- return dns_wildcard_list && smartlist_string_isin(dns_wildcard_list, ip);
+ return dns_wildcard_list && smartlist_contains_string(dns_wildcard_list, ip);
}
/** Exit with an assertion if <b>resolve</b> is corrupt. */
@@ -2150,8 +2151,8 @@ dump_dns_mem_usage(int severity)
/* Print out the count and estimated size of our &cache_root. It undercounts
hostnames in cached reverse resolves.
*/
- log(severity, LD_MM, "Our DNS cache has %d entries.", hash_count);
- log(severity, LD_MM, "Our DNS cache size is approximately %u bytes.",
+ tor_log(severity, LD_MM, "Our DNS cache has %d entries.", hash_count);
+ tor_log(severity, LD_MM, "Our DNS cache size is approximately %u bytes.",
(unsigned)hash_mem);
}
diff --git a/src/or/dns.h b/src/or/dns.h
index d2f6614e64..022cd4ac63 100644
--- a/src/or/dns.h
+++ b/src/or/dns.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/dnsserv.c b/src/or/dnsserv.c
index a211899073..7032b58145 100644
--- a/src/or/dnsserv.c
+++ b/src/or/dnsserv.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2012, The Tor Project, Inc. */
+/* Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/dnsserv.h b/src/or/dnsserv.h
index 39bd1d33b2..6bdb98de70 100644
--- a/src/or/dnsserv.h
+++ b/src/or/dnsserv.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/entrynodes.c b/src/or/entrynodes.c
index 84c1af4a1a..4ca56cbacf 100644
--- a/src/or/entrynodes.c
+++ b/src/or/entrynodes.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -762,7 +762,7 @@ entry_guards_set_from_config(const or_options_t *options)
smartlist_add(entry_fps, (void*)node->identity));
SMARTLIST_FOREACH(entry_guards, entry_guard_t *, e, {
- if (smartlist_digest_isin(entry_fps, e->identity))
+ if (smartlist_contains_digest(entry_fps, e->identity))
smartlist_add(old_entry_guards_on_list, e);
else
smartlist_add(old_entry_guards_not_on_list, e);
@@ -901,7 +901,7 @@ choose_random_entry_impl(cpath_build_state_t *state, int for_directory,
}
if (node == chosen_exit)
continue; /* don't pick the same node for entry and exit */
- if (consider_exit_family && smartlist_isin(exit_family, node))
+ if (consider_exit_family && smartlist_contains(exit_family, node))
continue; /* avoid relays that are family members of our exit */
#if 0 /* since EntryNodes is always strict now, this clause is moot */
if (options->EntryNodes &&
@@ -1098,6 +1098,40 @@ entry_guards_parse_state(or_state_t *state, int set, char **msg)
continue;
}
digestmap_set(added_by, d, tor_strdup(line->value+HEX_DIGEST_LEN+1));
+ } else if (!strcasecmp(line->key, "EntryGuardPathUseBias")) {
+ const or_options_t *options = get_options();
+ double use_cnt, success_cnt;
+
+ if (!node) {
+ *msg = tor_strdup("Unable to parse entry nodes: "
+ "EntryGuardPathUseBias without EntryGuard");
+ break;
+ }
+
+ if (tor_sscanf(line->value, "%lf %lf",
+ &use_cnt, &success_cnt) != 2) {
+ log_info(LD_GENERAL, "Malformed path use bias line for node %s",
+ node->nickname);
+ continue;
+ }
+
+ node->use_attempts = use_cnt;
+ node->use_successes = success_cnt;
+
+ log_info(LD_GENERAL, "Read %f/%f path use bias for node %s",
+ node->use_successes, node->use_attempts, node->nickname);
+
+ /* Note: We rely on the < comparison here to allow us to set a 0
+ * rate and disable the feature entirely. If refactoring, don't
+ * change to <= */
+ if (pathbias_get_use_success_count(node)/node->use_attempts
+ < pathbias_get_extreme_use_rate(options) &&
+ pathbias_get_dropguards(options)) {
+ node->path_bias_disabled = 1;
+ log_info(LD_GENERAL,
+ "Path use bias is too high (%f/%f); disabling node %s",
+ node->circ_successes, node->circ_attempts, node->nickname);
+ }
} else if (!strcasecmp(line->key, "EntryGuardPathBias")) {
const or_options_t *options = get_options();
double hop_cnt, success_cnt, timeouts, collapsed, successful_closed,
@@ -1144,7 +1178,7 @@ entry_guards_parse_state(or_state_t *state, int set, char **msg)
/* Note: We rely on the < comparison here to allow us to set a 0
* rate and disable the feature entirely. If refactoring, don't
* change to <= */
- if (pathbias_get_success_count(node)/node->circ_attempts
+ if (pathbias_get_close_success_count(node)/node->circ_attempts
< pathbias_get_extreme_rate(options) &&
pathbias_get_dropguards(options)) {
node->path_bias_disabled = 1;
@@ -1282,10 +1316,20 @@ entry_guards_update_state(or_state_t *state)
* unusable_circuits */
tor_asprintf(&line->value, "%f %f %f %f %f %f",
e->circ_attempts, e->circ_successes,
- pathbias_get_closed_count(e), e->collapsed_circuits,
+ pathbias_get_close_success_count(e),
+ e->collapsed_circuits,
e->unusable_circuits, e->timeouts);
next = &(line->next);
}
+ if (e->use_attempts > 0) {
+ *next = line = tor_malloc_zero(sizeof(config_line_t));
+ line->key = tor_strdup("EntryGuardPathUseBias");
+
+ tor_asprintf(&line->value, "%f %f",
+ e->use_attempts,
+ pathbias_get_use_success_count(e));
+ next = &(line->next);
+ }
} SMARTLIST_FOREACH_END(e);
if (!get_options()->AvoidDiskWrites)
@@ -1501,9 +1545,17 @@ learned_router_identity(const tor_addr_t *addr, uint16_t port,
bridge_info_t *bridge =
get_configured_bridge_by_addr_port_digest(addr, port, digest);
if (bridge && tor_digest_is_zero(bridge->identity)) {
+ 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);
- log_notice(LD_DIR, "Learned fingerprint %s for bridge %s",
- hex_str(digest, DIGEST_LEN), fmt_addrport(addr, port));
+ log_notice(LD_DIR, "Learned fingerprint %s for bridge %s%s.",
+ hex_str(digest, DIGEST_LEN), fmt_addrport(addr, port),
+ transport_info ? transport_info : "");
+ tor_free(transport_info);
}
}
@@ -1611,7 +1663,7 @@ routerset_contains_bridge(const routerset_t *routerset,
return 0;
extinfo = extend_info_new(
- NULL, bridge->identity, NULL, &bridge->addr, bridge->port);
+ NULL, bridge->identity, NULL, NULL, &bridge->addr, bridge->port);
result = routerset_contains_extendinfo(routerset, extinfo);
extend_info_free(extinfo);
return result;
@@ -1629,7 +1681,9 @@ find_bridge_by_digest(const char *digest)
return NULL;
}
-/* DOCDOC find_transport_name_by_bridge_addrport */
+/** Given the <b>addr</b> and <b>port</b> of a bridge, if that bridge
+ * supports a pluggable transport, return its name. Otherwise, return
+ * NULL. */
const char *
find_transport_name_by_bridge_addrport(const tor_addr_t *addr, uint16_t port)
{
diff --git a/src/or/entrynodes.h b/src/or/entrynodes.h
index 2a9a99cfbc..b673d02681 100644
--- a/src/or/entrynodes.h
+++ b/src/or/entrynodes.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -39,6 +39,10 @@ typedef struct entry_guard_t {
* bias for this node already? */
unsigned int path_bias_disabled : 1; /**< Have we disabled this node because
* of path bias issues? */
+ unsigned int path_bias_use_noticed : 1; /**< Did we alert the user about path
+ * use bias for this node already? */
+ unsigned int path_bias_use_extreme : 1; /**< Did we alert the user about path
+ * use bias for this node already? */
unsigned int is_dir_cache : 1; /**< Is this node a directory cache? */
time_t bad_since; /**< 0 if this guard is currently usable, or the time at
* which it was observed to become (according to the
@@ -61,6 +65,9 @@ typedef struct entry_guard_t {
* attempted, but none succeeded. */
double timeouts; /**< Number of 'right-censored' circuit timeouts for this
* guard. */
+ double use_attempts; /**< Number of circuits we tried to use with streams */
+ double use_successes; /**< Number of successfully used circuits using
+ * this guard as first hop. */
} entry_guard_t;
entry_guard_t *entry_guard_get_by_id_digest(const char *digest);
@@ -113,8 +120,8 @@ int find_transport_by_bridge_addrport(const tor_addr_t *addr, uint16_t port,
int validate_pluggable_transports_config(void);
-double pathbias_get_closed_count(entry_guard_t *gaurd);
-double pathbias_get_success_count(entry_guard_t *guard);
+double pathbias_get_close_success_count(entry_guard_t *guard);
+double pathbias_get_use_success_count(entry_guard_t *guard);
#endif
diff --git a/src/or/eventdns_tor.h b/src/or/eventdns_tor.h
index 0775643b5c..69662281bc 100644
--- a/src/or/eventdns_tor.h
+++ b/src/or/eventdns_tor.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2012, The Tor Project, Inc. */
+/* Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_EVENTDNS_TOR_H
diff --git a/src/or/geoip.c b/src/or/geoip.c
index 72a1983cb4..e2e98e8ec4 100644
--- a/src/or/geoip.c
+++ b/src/or/geoip.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2012, The Tor Project, Inc. */
+/* Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -38,7 +38,6 @@ typedef struct geoip_ipv6_entry_t {
/** A per-country record for GeoIP request history. */
typedef struct geoip_country_t {
char countrycode[3];
- uint32_t n_v2_ns_requests;
uint32_t n_v3_ns_requests;
} geoip_country_t;
@@ -515,67 +514,6 @@ client_history_clear(void)
}
}
-/** How often do we update our estimate which share of v2 and v3 directory
- * requests is sent to us? We could as well trigger updates of shares from
- * network status updates, but that means adding a lot of calls into code
- * that is independent from geoip stats (and keeping them up-to-date). We
- * are perfectly fine with an approximation of 15-minute granularity. */
-#define REQUEST_SHARE_INTERVAL (15 * 60)
-
-/** When did we last determine which share of v2 and v3 directory requests
- * is sent to us? */
-static time_t last_time_determined_shares = 0;
-
-/** Sum of products of v2 shares times the number of seconds for which we
- * consider these shares as valid. */
-static double v2_share_times_seconds;
-
-/** Sum of products of v3 shares times the number of seconds for which we
- * consider these shares as valid. */
-static double v3_share_times_seconds;
-
-/** Number of seconds we are determining v2 and v3 shares. */
-static int share_seconds;
-
-/** Try to determine which fraction of v2 and v3 directory requests aimed at
- * caches will be sent to us at time <b>now</b> and store that value in
- * order to take a mean value later on. */
-static void
-geoip_determine_shares(time_t now)
-{
- double v2_share = 0.0, v3_share = 0.0;
- if (router_get_my_share_of_directory_requests(&v2_share, &v3_share) < 0)
- return;
- if (last_time_determined_shares) {
- v2_share_times_seconds += v2_share *
- ((double) (now - last_time_determined_shares));
- v3_share_times_seconds += v3_share *
- ((double) (now - last_time_determined_shares));
- share_seconds += (int)(now - last_time_determined_shares);
- }
- last_time_determined_shares = now;
-}
-
-/** Calculate which fraction of v2 and v3 directory requests aimed at caches
- * have been sent to us since the last call of this function up to time
- * <b>now</b>. Set *<b>v2_share_out</b> and *<b>v3_share_out</b> to the
- * fractions of v2 and v3 protocol shares we expect to have seen. Reset
- * counters afterwards. Return 0 on success, -1 on failure (e.g. when zero
- * seconds have passed since the last call).*/
-static int
-geoip_get_mean_shares(time_t now, double *v2_share_out,
- double *v3_share_out)
-{
- geoip_determine_shares(now);
- if (!share_seconds)
- return -1;
- *v2_share_out = v2_share_times_seconds / ((double) share_seconds);
- *v3_share_out = v3_share_times_seconds / ((double) share_seconds);
- v2_share_times_seconds = v3_share_times_seconds = 0.0;
- share_seconds = 0;
- return 0;
-}
-
/** Note that we've seen a client connect from the IP <b>addr</b>
* at time <b>now</b>. Ignored by all but bridges and directories if
* configured accordingly. */
@@ -610,22 +548,14 @@ geoip_note_client_seen(geoip_client_action_t action,
else
ent->last_seen_in_minutes = 0;
- if (action == GEOIP_CLIENT_NETWORKSTATUS ||
- action == GEOIP_CLIENT_NETWORKSTATUS_V2) {
+ if (action == GEOIP_CLIENT_NETWORKSTATUS) {
int country_idx = geoip_get_country_by_addr(addr);
if (country_idx < 0)
country_idx = 0; /** unresolved requests are stored at index 0. */
if (country_idx >= 0 && country_idx < smartlist_len(geoip_countries)) {
geoip_country_t *country = smartlist_get(geoip_countries, country_idx);
- if (action == GEOIP_CLIENT_NETWORKSTATUS)
- ++country->n_v3_ns_requests;
- else
- ++country->n_v2_ns_requests;
+ ++country->n_v3_ns_requests;
}
-
- /* Periodically determine share of requests that we should see */
- if (last_time_determined_shares + REQUEST_SHARE_INTERVAL < now)
- geoip_determine_shares(now);
}
}
@@ -652,36 +582,24 @@ geoip_remove_old_clients(time_t cutoff)
&cutoff);
}
-/** How many responses are we giving to clients requesting v2 network
- * statuses? */
-static uint32_t ns_v2_responses[GEOIP_NS_RESPONSE_NUM];
-
/** How many responses are we giving to clients requesting v3 network
* statuses? */
static uint32_t ns_v3_responses[GEOIP_NS_RESPONSE_NUM];
-/** Note that we've rejected a client's request for a v2 or v3 network
- * status, encoded in <b>action</b> for reason <b>reason</b> at time
- * <b>now</b>. */
+/** Note that we've rejected a client's request for a v3 network status
+ * for reason <b>reason</b> at time <b>now</b>. */
void
-geoip_note_ns_response(geoip_client_action_t action,
- geoip_ns_response_t response)
+geoip_note_ns_response(geoip_ns_response_t response)
{
static int arrays_initialized = 0;
if (!get_options()->DirReqStatistics)
return;
if (!arrays_initialized) {
- memset(ns_v2_responses, 0, sizeof(ns_v2_responses));
memset(ns_v3_responses, 0, sizeof(ns_v3_responses));
arrays_initialized = 1;
}
- tor_assert(action == GEOIP_CLIENT_NETWORKSTATUS ||
- action == GEOIP_CLIENT_NETWORKSTATUS_V2);
tor_assert(response < GEOIP_NS_RESPONSE_NUM);
- if (action == GEOIP_CLIENT_NETWORKSTATUS)
- ns_v3_responses[response]++;
- else
- ns_v2_responses[response]++;
+ ns_v3_responses[response]++;
}
/** Do not mention any country from which fewer than this number of IPs have
@@ -736,7 +654,6 @@ typedef struct dirreq_map_entry_t {
unsigned int state:3; /**< State of this directory request. */
unsigned int type:1; /**< Is this a direct or a tunneled request? */
unsigned int completed:1; /**< Is this request complete? */
- unsigned int action:2; /**< Is this a v2 or v3 request? */
/** When did we receive the request and started sending the response? */
struct timeval request_time;
size_t response_size; /**< What is the size of the response in bytes? */
@@ -805,12 +722,11 @@ dirreq_map_get_(dirreq_type_t type, uint64_t dirreq_id)
}
/** Note that an either direct or tunneled (see <b>type</b>) directory
- * request for a network status with unique ID <b>dirreq_id</b> of size
- * <b>response_size</b> and action <b>action</b> (either v2 or v3) has
- * started. */
+ * request for a v3 network status with unique ID <b>dirreq_id</b> of size
+ * <b>response_size</b> has started. */
void
geoip_start_dirreq(uint64_t dirreq_id, size_t response_size,
- geoip_client_action_t action, dirreq_type_t type)
+ dirreq_type_t type)
{
dirreq_map_entry_t *ent;
if (!get_options()->DirReqStatistics)
@@ -819,7 +735,6 @@ geoip_start_dirreq(uint64_t dirreq_id, size_t response_size,
ent->dirreq_id = dirreq_id;
tor_gettimeofday(&ent->request_time);
ent->response_size = response_size;
- ent->action = action;
ent->type = type;
dirreq_map_put_(ent, type, dirreq_id);
}
@@ -860,8 +775,7 @@ geoip_change_dirreq_state(uint64_t dirreq_id, dirreq_type_t type,
* times by deciles and quartiles. Return NULL if we have not observed
* requests for long enough. */
static char *
-geoip_get_dirreq_history(geoip_client_action_t action,
- dirreq_type_t type)
+geoip_get_dirreq_history(dirreq_type_t type)
{
char *result = NULL;
smartlist_t *dirreq_completed = NULL;
@@ -871,13 +785,10 @@ geoip_get_dirreq_history(geoip_client_action_t action,
struct timeval now;
tor_gettimeofday(&now);
- if (action != GEOIP_CLIENT_NETWORKSTATUS &&
- action != GEOIP_CLIENT_NETWORKSTATUS_V2)
- return NULL;
dirreq_completed = smartlist_new();
for (ptr = HT_START(dirreqmap, &dirreq_map); ptr; ptr = next) {
ent = *ptr;
- if (ent->action != action || ent->type != type) {
+ if (ent->type != type) {
next = HT_NEXT(dirreqmap, &dirreq_map, ptr);
continue;
} else {
@@ -1063,18 +974,15 @@ geoip_get_client_history(geoip_client_action_t action,
}
/** Return a newly allocated string holding the per-country request history
- * for <b>action</b> in a format suitable for an extra-info document, or NULL
- * on failure. */
+ * for v3 network statuses in a format suitable for an extra-info document,
+ * or NULL on failure. */
char *
-geoip_get_request_history(geoip_client_action_t action)
+geoip_get_request_history(void)
{
smartlist_t *entries, *strings;
char *result;
unsigned granularity = IP_GRANULARITY;
- if (action != GEOIP_CLIENT_NETWORKSTATUS &&
- action != GEOIP_CLIENT_NETWORKSTATUS_V2)
- return NULL;
if (!geoip_countries)
return NULL;
@@ -1082,8 +990,7 @@ geoip_get_request_history(geoip_client_action_t action)
SMARTLIST_FOREACH_BEGIN(geoip_countries, geoip_country_t *, c) {
uint32_t tot = 0;
c_hist_t *ent;
- tot = (action == GEOIP_CLIENT_NETWORKSTATUS) ?
- c->n_v3_ns_requests : c->n_v2_ns_requests;
+ tot = c->n_v3_ns_requests;
if (!tot)
continue;
ent = tor_malloc_zero(sizeof(c_hist_t));
@@ -1121,14 +1028,13 @@ void
geoip_reset_dirreq_stats(time_t now)
{
SMARTLIST_FOREACH(geoip_countries, geoip_country_t *, c, {
- c->n_v2_ns_requests = c->n_v3_ns_requests = 0;
+ c->n_v3_ns_requests = 0;
});
{
clientmap_entry_t **ent, **next, *this;
for (ent = HT_START(clientmap, &client_history); ent != NULL;
ent = next) {
- if ((*ent)->action == GEOIP_CLIENT_NETWORKSTATUS ||
- (*ent)->action == GEOIP_CLIENT_NETWORKSTATUS_V2) {
+ if ((*ent)->action == GEOIP_CLIENT_NETWORKSTATUS) {
this = *ent;
next = HT_NEXT_RMV(clientmap, &client_history, ent);
tor_free(this);
@@ -1137,10 +1043,6 @@ geoip_reset_dirreq_stats(time_t now)
}
}
}
- v2_share_times_seconds = v3_share_times_seconds = 0.0;
- last_time_determined_shares = 0;
- share_seconds = 0;
- memset(ns_v2_responses, 0, sizeof(ns_v2_responses));
memset(ns_v3_responses, 0, sizeof(ns_v3_responses));
{
dirreq_map_entry_t **ent, **next, *this;
@@ -1168,12 +1070,9 @@ char *
geoip_format_dirreq_stats(time_t now)
{
char t[ISO_TIME_LEN+1];
- double v2_share = 0.0, v3_share = 0.0;
int i;
- char *v3_ips_string, *v2_ips_string, *v3_reqs_string, *v2_reqs_string,
- *v2_share_string = NULL, *v3_share_string = NULL,
- *v3_direct_dl_string, *v2_direct_dl_string,
- *v3_tunneled_dl_string, *v2_tunneled_dl_string;
+ char *v3_ips_string, *v3_reqs_string, *v3_direct_dl_string,
+ *v3_tunneled_dl_string;
char *result;
if (!start_of_dirreq_stats_interval)
@@ -1182,90 +1081,45 @@ geoip_format_dirreq_stats(time_t now)
tor_assert(now >= start_of_dirreq_stats_interval);
format_iso_time(t, now);
- geoip_get_client_history(GEOIP_CLIENT_NETWORKSTATUS_V2, &v2_ips_string,
- NULL);
geoip_get_client_history(GEOIP_CLIENT_NETWORKSTATUS, &v3_ips_string, NULL);
- v2_reqs_string = geoip_get_request_history(
- GEOIP_CLIENT_NETWORKSTATUS_V2);
- v3_reqs_string = geoip_get_request_history(GEOIP_CLIENT_NETWORKSTATUS);
+ v3_reqs_string = geoip_get_request_history();
#define RESPONSE_GRANULARITY 8
for (i = 0; i < GEOIP_NS_RESPONSE_NUM; i++) {
- ns_v2_responses[i] = round_uint32_to_next_multiple_of(
- ns_v2_responses[i], RESPONSE_GRANULARITY);
ns_v3_responses[i] = round_uint32_to_next_multiple_of(
ns_v3_responses[i], RESPONSE_GRANULARITY);
}
#undef RESPONSE_GRANULARITY
- if (!geoip_get_mean_shares(now, &v2_share, &v3_share)) {
- tor_asprintf(&v2_share_string, "dirreq-v2-share %0.2f%%\n",
- v2_share*100);
- tor_asprintf(&v3_share_string, "dirreq-v3-share %0.2f%%\n",
- v3_share*100);
- }
-
- v2_direct_dl_string = geoip_get_dirreq_history(
- GEOIP_CLIENT_NETWORKSTATUS_V2, DIRREQ_DIRECT);
- v3_direct_dl_string = geoip_get_dirreq_history(
- GEOIP_CLIENT_NETWORKSTATUS, DIRREQ_DIRECT);
-
- v2_tunneled_dl_string = geoip_get_dirreq_history(
- GEOIP_CLIENT_NETWORKSTATUS_V2, DIRREQ_TUNNELED);
- v3_tunneled_dl_string = geoip_get_dirreq_history(
- GEOIP_CLIENT_NETWORKSTATUS, DIRREQ_TUNNELED);
+ v3_direct_dl_string = geoip_get_dirreq_history(DIRREQ_DIRECT);
+ v3_tunneled_dl_string = geoip_get_dirreq_history(DIRREQ_TUNNELED);
/* Put everything together into a single string. */
tor_asprintf(&result, "dirreq-stats-end %s (%d s)\n"
"dirreq-v3-ips %s\n"
- "dirreq-v2-ips %s\n"
"dirreq-v3-reqs %s\n"
- "dirreq-v2-reqs %s\n"
"dirreq-v3-resp ok=%u,not-enough-sigs=%u,unavailable=%u,"
"not-found=%u,not-modified=%u,busy=%u\n"
- "dirreq-v2-resp ok=%u,unavailable=%u,"
- "not-found=%u,not-modified=%u,busy=%u\n"
- "%s"
- "%s"
"dirreq-v3-direct-dl %s\n"
- "dirreq-v2-direct-dl %s\n"
- "dirreq-v3-tunneled-dl %s\n"
- "dirreq-v2-tunneled-dl %s\n",
+ "dirreq-v3-tunneled-dl %s\n",
t,
(unsigned) (now - start_of_dirreq_stats_interval),
v3_ips_string ? v3_ips_string : "",
- v2_ips_string ? v2_ips_string : "",
v3_reqs_string ? v3_reqs_string : "",
- v2_reqs_string ? v2_reqs_string : "",
ns_v3_responses[GEOIP_SUCCESS],
ns_v3_responses[GEOIP_REJECT_NOT_ENOUGH_SIGS],
ns_v3_responses[GEOIP_REJECT_UNAVAILABLE],
ns_v3_responses[GEOIP_REJECT_NOT_FOUND],
ns_v3_responses[GEOIP_REJECT_NOT_MODIFIED],
ns_v3_responses[GEOIP_REJECT_BUSY],
- ns_v2_responses[GEOIP_SUCCESS],
- ns_v2_responses[GEOIP_REJECT_UNAVAILABLE],
- ns_v2_responses[GEOIP_REJECT_NOT_FOUND],
- ns_v2_responses[GEOIP_REJECT_NOT_MODIFIED],
- ns_v2_responses[GEOIP_REJECT_BUSY],
- v2_share_string ? v2_share_string : "",
- v3_share_string ? v3_share_string : "",
v3_direct_dl_string ? v3_direct_dl_string : "",
- v2_direct_dl_string ? v2_direct_dl_string : "",
- v3_tunneled_dl_string ? v3_tunneled_dl_string : "",
- v2_tunneled_dl_string ? v2_tunneled_dl_string : "");
+ v3_tunneled_dl_string ? v3_tunneled_dl_string : "");
/* Free partial strings. */
tor_free(v3_ips_string);
- tor_free(v2_ips_string);
tor_free(v3_reqs_string);
- tor_free(v2_reqs_string);
- tor_free(v2_share_string);
- tor_free(v3_share_string);
tor_free(v3_direct_dl_string);
- tor_free(v2_direct_dl_string);
tor_free(v3_tunneled_dl_string);
- tor_free(v2_tunneled_dl_string);
return result;
}
@@ -1496,8 +1350,11 @@ load_bridge_stats(time_t now)
fname = get_datadir_fname2("stats", "bridge-stats");
contents = read_file_to_str(fname, RFTS_IGNORE_MISSING, NULL);
- if (contents && validate_bridge_stats(contents, now))
+ if (contents && validate_bridge_stats(contents, now)) {
bridge_stats_extrainfo = contents;
+ } else {
+ tor_free(contents);
+ }
tor_free(fname);
}
diff --git a/src/or/geoip.h b/src/or/geoip.h
index 2272486477..ebefee5f4e 100644
--- a/src/or/geoip.h
+++ b/src/or/geoip.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -30,18 +30,17 @@ void geoip_note_client_seen(geoip_client_action_t action,
const tor_addr_t *addr, time_t now);
void geoip_remove_old_clients(time_t cutoff);
-void geoip_note_ns_response(geoip_client_action_t action,
- geoip_ns_response_t response);
+void geoip_note_ns_response(geoip_ns_response_t response);
int geoip_get_client_history(geoip_client_action_t action,
char **country_str, char **ipver_str);
-char *geoip_get_request_history(geoip_client_action_t action);
+char *geoip_get_request_history(void);
int getinfo_helper_geoip(control_connection_t *control_conn,
const char *question, char **answer,
const char **errmsg);
void geoip_free_all(void);
void geoip_start_dirreq(uint64_t dirreq_id, size_t response_size,
- geoip_client_action_t action, dirreq_type_t type);
+ dirreq_type_t type);
void geoip_change_dirreq_state(uint64_t dirreq_id, dirreq_type_t type,
dirreq_state_t new_state);
diff --git a/src/or/hibernate.c b/src/or/hibernate.c
index 72089962ae..36af4d8f83 100644
--- a/src/or/hibernate.c
+++ b/src/or/hibernate.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/hibernate.h b/src/or/hibernate.h
index 5f99cde015..d2d6989e10 100644
--- a/src/or/hibernate.h
+++ b/src/or/hibernate.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/include.am b/src/or/include.am
index 405cbd071f..241015488a 100644
--- a/src/or/include.am
+++ b/src/or/include.am
@@ -15,6 +15,12 @@ else
evdns_source=src/ext/eventdns.c
endif
+if CURVE25519_ENABLED
+onion_ntor_source=src/or/onion_ntor.c
+else
+onion_ntor_source=
+endif
+
src_or_libtor_a_SOURCES = \
src/or/addressmap.c \
src/or/buffers.c \
@@ -47,6 +53,8 @@ src_or_libtor_a_SOURCES = \
src/or/networkstatus.c \
src/or/nodelist.c \
src/or/onion.c \
+ src/or/onion_fast.c \
+ src/or/onion_tap.c \
src/or/transports.c \
src/or/policies.c \
src/or/reasons.c \
@@ -65,6 +73,7 @@ src_or_libtor_a_SOURCES = \
src/or/status.c \
$(evdns_source) \
$(tor_platform_source) \
+ $(onion_ntor_source) \
src/or/config_codedigest.c
#libtor_a_LIBADD = ../common/libor.a ../common/libor-crypto.a \
@@ -86,10 +95,11 @@ AM_CPPFLAGS += -DSHARE_DATADIR="\"$(datadir)\"" \
src_or_tor_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ @TOR_LDFLAGS_libevent@
-src_or_tor_LDADD = src/or/libtor.a src/common/libor.a src/common/libor-crypto.a \
+src_or_tor_LDADD = src/or/libtor.a src/common/libor.a \
+ src/common/libor-crypto.a $(LIBDONNA) \
src/common/libor-event.a \
@TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ \
- @TOR_LIB_WS32@ @TOR_LIB_GDI@
+ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
ORHEADERS = \
src/or/addressmap.h \
@@ -125,6 +135,9 @@ ORHEADERS = \
src/or/nodelist.h \
src/or/ntmain.h \
src/or/onion.h \
+ src/or/onion_fast.h \
+ src/or/onion_ntor.h \
+ src/or/onion_tap.h \
src/or/or.h \
src/or/transports.h \
src/or/policies.h \
diff --git a/src/or/main.c b/src/or/main.c
index abb1e34fcd..79b0f25778 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -422,7 +422,7 @@ connection_unlink(connection_t *conn)
void
add_connection_to_closeable_list(connection_t *conn)
{
- tor_assert(!smartlist_isin(closeable_connection_lst, conn));
+ tor_assert(!smartlist_contains(closeable_connection_lst, conn));
tor_assert(conn->marked_for_close);
assert_connection_ok(conn, time(NULL));
smartlist_add(closeable_connection_lst, conn);
@@ -432,14 +432,14 @@ add_connection_to_closeable_list(connection_t *conn)
int
connection_is_on_closeable_list(connection_t *conn)
{
- return smartlist_isin(closeable_connection_lst, conn);
+ return smartlist_contains(closeable_connection_lst, conn);
}
/** Return true iff conn is in the current poll array. */
int
connection_in_array(connection_t *conn)
{
- return smartlist_isin(connection_array, conn);
+ return smartlist_contains(connection_array, conn);
}
/** Set <b>*array</b> to an array of all connections, and <b>*n</b>
@@ -666,7 +666,7 @@ connection_start_reading_from_linked_conn(connection_t *conn)
tor_event_base_loopexit(tor_libevent_get_base(), &tv);
}
} else {
- tor_assert(smartlist_isin(active_linked_connection_lst, conn));
+ tor_assert(smartlist_contains(active_linked_connection_lst, conn));
}
}
@@ -686,7 +686,7 @@ connection_stop_reading_from_linked_conn(connection_t *conn)
* so let's leave it alone for now. */
smartlist_remove(active_linked_connection_lst, conn);
} else {
- tor_assert(!smartlist_isin(active_linked_connection_lst, conn));
+ tor_assert(!smartlist_contains(active_linked_connection_lst, conn));
}
}
@@ -973,7 +973,7 @@ directory_info_has_arrived(time_t now, int from_cache)
if (!router_have_minimum_dir_info()) {
int quiet = from_cache ||
directory_too_idle_to_fetch_descriptors(options, now);
- log(quiet ? LOG_INFO : LOG_NOTICE, LD_DIR,
+ tor_log(quiet ? LOG_INFO : LOG_NOTICE, LD_DIR,
"I learned some more directory information, but not enough to "
"build a circuit: %s", get_dir_info_status_string());
update_all_descriptor_downloads(now);
@@ -1201,7 +1201,7 @@ run_scheduled_events(time_t now)
* eventually. */
if (signewnym_is_pending &&
time_of_last_signewnym + MAX_SIGNEWNYM_RATE <= now) {
- log(LOG_INFO, LD_CONTROL, "Honoring delayed NEWNYM request");
+ log_info(LD_CONTROL, "Honoring delayed NEWNYM request");
signewnym_impl(now);
}
@@ -2083,7 +2083,7 @@ process_signal(uintptr_t sig)
time_t now = time(NULL);
if (time_of_last_signewnym + MAX_SIGNEWNYM_RATE > now) {
signewnym_is_pending = 1;
- log(LOG_NOTICE, LD_CONTROL,
+ log_notice(LD_CONTROL,
"Rate limiting NEWNYM request: delaying by %d second(s)",
(int)(MAX_SIGNEWNYM_RATE+time_of_last_signewnym-now));
} else {
@@ -2115,7 +2115,7 @@ static void
dumpmemusage(int severity)
{
connection_dump_buffer_mem_stats(severity);
- log(severity, LD_GENERAL, "In rephist: "U64_FORMAT" used by %d Tors.",
+ tor_log(severity, LD_GENERAL, "In rephist: "U64_FORMAT" used by %d Tors.",
U64_PRINTF_ARG(rephist_total_alloc), rephist_total_num);
dump_routerlist_mem_usage(severity);
dump_cell_pool_usage(severity);
@@ -2133,27 +2133,27 @@ dumpstats(int severity)
time_t elapsed;
size_t rbuf_cap, wbuf_cap, rbuf_len, wbuf_len;
- log(severity, LD_GENERAL, "Dumping stats:");
+ tor_log(severity, LD_GENERAL, "Dumping stats:");
SMARTLIST_FOREACH_BEGIN(connection_array, connection_t *, conn) {
int i = conn_sl_idx;
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
"Conn %d (socket %d) type %d (%s), state %d (%s), created %d secs ago",
i, (int)conn->s, conn->type, conn_type_to_string(conn->type),
conn->state, conn_state_to_string(conn->type, conn->state),
(int)(now - conn->timestamp_created));
if (!connection_is_listener(conn)) {
- log(severity,LD_GENERAL,
+ tor_log(severity,LD_GENERAL,
"Conn %d is to %s:%d.", i,
safe_str_client(conn->address),
conn->port);
- log(severity,LD_GENERAL,
+ tor_log(severity,LD_GENERAL,
"Conn %d: %d bytes waiting on inbuf (len %d, last read %d secs ago)",
i,
(int)connection_get_inbuf_len(conn),
(int)buf_allocation(conn->inbuf),
(int)(now - conn->timestamp_lastread));
- log(severity,LD_GENERAL,
+ tor_log(severity,LD_GENERAL,
"Conn %d: %d bytes waiting on outbuf "
"(len %d, last written %d secs ago)",i,
(int)connection_get_outbuf_len(conn),
@@ -2164,7 +2164,7 @@ dumpstats(int severity)
if (or_conn->tls) {
tor_tls_get_buffer_sizes(or_conn->tls, &rbuf_cap, &rbuf_len,
&wbuf_cap, &wbuf_len);
- log(severity, LD_GENERAL,
+ tor_log(severity, LD_GENERAL,
"Conn %d: %d/%d bytes used on OpenSSL read buffer; "
"%d/%d bytes used on write buffer.",
i, (int)rbuf_len, (int)rbuf_cap, (int)wbuf_len, (int)wbuf_cap);
@@ -2178,7 +2178,7 @@ dumpstats(int severity)
channel_dumpstats(severity);
channel_listener_dumpstats(severity);
- log(severity, LD_NET,
+ tor_log(severity, LD_NET,
"Cells processed: "U64_FORMAT" padding\n"
" "U64_FORMAT" create\n"
" "U64_FORMAT" created\n"
@@ -2194,33 +2194,36 @@ dumpstats(int severity)
U64_PRINTF_ARG(stats_n_relay_cells_delivered),
U64_PRINTF_ARG(stats_n_destroy_cells_processed));
if (stats_n_data_cells_packaged)
- log(severity,LD_NET,"Average packaged cell fullness: %2.3f%%",
+ tor_log(severity,LD_NET,"Average packaged cell fullness: %2.3f%%",
100*(U64_TO_DBL(stats_n_data_bytes_packaged) /
U64_TO_DBL(stats_n_data_cells_packaged*RELAY_PAYLOAD_SIZE)) );
if (stats_n_data_cells_received)
- log(severity,LD_NET,"Average delivered cell fullness: %2.3f%%",
+ tor_log(severity,LD_NET,"Average delivered cell fullness: %2.3f%%",
100*(U64_TO_DBL(stats_n_data_bytes_received) /
U64_TO_DBL(stats_n_data_cells_received*RELAY_PAYLOAD_SIZE)) );
+ cpuworker_log_onionskin_overhead(severity, ONION_HANDSHAKE_TYPE_TAP, "TAP");
+ cpuworker_log_onionskin_overhead(severity, ONION_HANDSHAKE_TYPE_NTOR,"ntor");
+
if (now - time_of_process_start >= 0)
elapsed = now - time_of_process_start;
else
elapsed = 0;
if (elapsed) {
- log(severity, LD_NET,
+ tor_log(severity, LD_NET,
"Average bandwidth: "U64_FORMAT"/%d = %d bytes/sec reading",
U64_PRINTF_ARG(stats_n_bytes_read),
(int)elapsed,
(int) (stats_n_bytes_read/elapsed));
- log(severity, LD_NET,
+ tor_log(severity, LD_NET,
"Average bandwidth: "U64_FORMAT"/%d = %d bytes/sec writing",
U64_PRINTF_ARG(stats_n_bytes_written),
(int)elapsed,
(int) (stats_n_bytes_written/elapsed));
}
- log(severity, LD_NET, "--------------- Dumping memory information:");
+ tor_log(severity, LD_NET, "--------------- Dumping memory information:");
dumpmemusage(severity);
rep_hist_dump_stats(now,severity);
@@ -2361,7 +2364,7 @@ tor_init(int argc, char *argv[])
}
#ifdef NON_ANONYMOUS_MODE_ENABLED
- log(LOG_WARN, LD_GENERAL, "This copy of Tor was compiled to run in a "
+ log_warn(LD_GENERAL, "This copy of Tor was compiled to run in a "
"non-anonymous mode. It will provide NO ANONYMITY.");
#endif
diff --git a/src/or/main.h b/src/or/main.h
index da2bcfd493..338449b6a6 100644
--- a/src/or/main.h
+++ b/src/or/main.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/microdesc.c b/src/or/microdesc.c
index 788a7b1e16..e99b3ebe78 100644
--- a/src/or/microdesc.c
+++ b/src/or/microdesc.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009-2012, The Tor Project, Inc. */
+/* Copyright (c) 2009-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "or.h"
@@ -575,6 +575,7 @@ microdesc_free(microdesc_t *md)
if (md->onion_pkey)
crypto_pk_free(md->onion_pkey);
+ tor_free(md->onion_curve25519_pkey);
if (md->body && md->saved_location != SAVED_IN_CACHE)
tor_free(md->body);
diff --git a/src/or/microdesc.h b/src/or/microdesc.h
index 4b18caaae0..4e58aa33f0 100644
--- a/src/or/microdesc.h
+++ b/src/or/microdesc.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index 9d402403c0..71ac054f88 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -561,7 +561,7 @@ networkstatus_check_consensus_signature(networkstatus_t *consensus,
if (warn >= 0) {
SMARTLIST_FOREACH(unrecognized, networkstatus_voter_info_t *, voter,
{
- log(severity, LD_DIR, "Consensus includes unrecognized authority "
+ tor_log(severity, LD_DIR, "Consensus includes unrecognized authority "
"'%s' at %s:%d (contact %s; identity %s)",
voter->nickname, voter->address, (int)voter->dir_port,
voter->contact?voter->contact:"n/a",
@@ -569,7 +569,7 @@ networkstatus_check_consensus_signature(networkstatus_t *consensus,
});
SMARTLIST_FOREACH(need_certs_from, networkstatus_voter_info_t *, voter,
{
- log(severity, LD_DIR, "Looks like we need to download a new "
+ tor_log(severity, LD_DIR, "Looks like we need to download a new "
"certificate from authority '%s' at %s:%d (contact %s; "
"identity %s)",
voter->nickname, voter->address, (int)voter->dir_port,
@@ -578,7 +578,7 @@ networkstatus_check_consensus_signature(networkstatus_t *consensus,
});
SMARTLIST_FOREACH(missing_authorities, dir_server_t *, ds,
{
- log(severity, LD_DIR, "Consensus does not include configured "
+ tor_log(severity, LD_DIR, "Consensus does not include configured "
"authority '%s' at %s:%d (identity %s)",
ds->nickname, ds->address, (int)ds->dir_port,
hex_str(ds->v3_identity_digest, DIGEST_LEN));
@@ -614,7 +614,7 @@ networkstatus_check_consensus_signature(networkstatus_t *consensus,
"because we were missing the keys.", n_missing_key);
}
joined = smartlist_join_strings(sl, " ", 0, NULL);
- log(severity, LD_DIR, "%s", joined);
+ tor_log(severity, LD_DIR, "%s", joined);
tor_free(joined);
SMARTLIST_FOREACH(sl, char *, c, tor_free(c));
smartlist_free(sl);
@@ -774,7 +774,7 @@ router_set_networkstatus_v2(const char *s, time_t arrived_at,
}
if (requested_fingerprints) {
- if (smartlist_string_isin(requested_fingerprints, fp)) {
+ if (smartlist_contains_string(requested_fingerprints, fp)) {
smartlist_string_remove(requested_fingerprints, fp);
} else {
if (source != NS_FROM_DIR_ALL) {
@@ -2239,6 +2239,21 @@ networkstatus_get_param(const networkstatus_t *ns, const char *param_name,
default_val, min_val, max_val);
}
+/**
+ * Retrieve the consensus parameter that governs the
+ * fixed-point precision of our network balancing 'bandwidth-weights'
+ * (which are themselves integer consensus values). We divide them
+ * by this value and ensure they never exceed this value.
+ */
+int
+networkstatus_get_weight_scale_param(networkstatus_t *ns)
+{
+ return networkstatus_get_param(ns, "bwweightscale",
+ BW_WEIGHT_SCALE,
+ BW_MIN_WEIGHT_SCALE,
+ BW_MAX_WEIGHT_SCALE);
+}
+
/** Return the value of a integer bw weight parameter from the networkstatus
* <b>ns</b> whose name is <b>weight_name</b>. If <b>ns</b> is NULL, try
* loading the latest consensus ourselves. Return <b>default_val</b> if no
@@ -2255,7 +2270,7 @@ networkstatus_get_bw_weight(networkstatus_t *ns, const char *weight_name,
if (!ns || !ns->weight_params)
return default_val;
- max = circuit_build_times_get_bw_scale(ns);
+ max = networkstatus_get_weight_scale_param(ns);
param = get_net_param_from_list(ns->weight_params, weight_name,
default_val, -1,
BW_MAX_WEIGHT_SCALE);
diff --git a/src/or/networkstatus.h b/src/or/networkstatus.h
index fe16f33918..b437c5ec2f 100644
--- a/src/or/networkstatus.h
+++ b/src/or/networkstatus.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -112,6 +112,7 @@ int networkstatus_parse_flavor_name(const char *flavname);
void document_signature_free(document_signature_t *sig);
document_signature_t *document_signature_dup(const document_signature_t *sig);
void networkstatus_free_all(void);
+int networkstatus_get_weight_scale_param(networkstatus_t *ns);
#endif
diff --git a/src/or/nodelist.c b/src/or/nodelist.c
index 4f1e95064d..ee1bc392e3 100644
--- a/src/or/nodelist.c
+++ b/src/or/nodelist.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "or.h"
@@ -916,6 +916,18 @@ node_get_pref_ipv6_orport(const node_t *node, tor_addr_port_t *ap_out)
}
}
+/** Return true iff <b>node</b> has a curve25519 onion key. */
+int
+node_has_curve25519_onion_key(const node_t *node)
+{
+ if (node->ri)
+ return node->ri->onion_curve25519_pkey != NULL;
+ else if (node->md)
+ return node->md->onion_curve25519_pkey != NULL;
+ else
+ return 0;
+}
+
/** Refresh the country code of <b>ri</b>. This function MUST be called on
* each router when the GeoIP database is reloaded, and on all new routers. */
void
@@ -1201,7 +1213,7 @@ static int have_min_dir_info = 0;
static int need_to_update_have_min_dir_info = 1;
/** String describing what we're missing before we have enough directory
* info. */
-static char dir_info_status[128] = "";
+static char dir_info_status[256] = "";
/** Return true iff we have enough networkstatus and router information to
* start building circuits. Right now, this means "more than half the
@@ -1241,10 +1253,12 @@ get_dir_info_status_string(void)
* descriptors for. Store the former in *<b>num_usable</b> and the latter in
* *<b>num_present</b>. If <b>in_set</b> is non-NULL, only consider those
* routers in <b>in_set</b>. If <b>exit_only</b> is true, only consider nodes
- * with the Exit flag.
+ * with the Exit flag. If *descs_out is present, add a node_t for each
+ * usable descriptor to it.
*/
static void
count_usable_descriptors(int *num_present, int *num_usable,
+ smartlist_t *descs_out,
const networkstatus_t *consensus,
const or_options_t *options, time_t now,
routerset_t *in_set, int exit_only)
@@ -1254,6 +1268,10 @@ count_usable_descriptors(int *num_present, int *num_usable,
SMARTLIST_FOREACH_BEGIN(consensus->routerstatus_list, routerstatus_t *, rs)
{
+ const node_t *node = node_get_by_id(rs->identity_digest);
+ if (!node)
+ continue; /* This would be a bug: every entry in the consensus is
+ * supposed to have a node. */
if (exit_only && ! rs->is_exit)
continue;
if (in_set && ! routerset_contains_routerstatus(in_set, rs, -1))
@@ -1270,6 +1288,8 @@ count_usable_descriptors(int *num_present, int *num_usable,
/* we have the descriptor listed in the consensus. */
++*num_present;
}
+ if (descs_out)
+ smartlist_add(descs_out, (node_t*)node);
}
}
SMARTLIST_FOREACH_END(rs);
@@ -1279,6 +1299,72 @@ count_usable_descriptors(int *num_present, int *num_usable,
md ? "microdesc" : "desc", exit_only ? " exits" : "s");
}
+/** Return an extimate of which fraction of usable paths through the Tor
+ * network we have available for use. */
+static double
+compute_frac_paths_available(const networkstatus_t *consensus,
+ const or_options_t *options, time_t now,
+ int *num_present_out, int *num_usable_out,
+ char **status_out)
+{
+ smartlist_t *guards = smartlist_new();
+ smartlist_t *mid = smartlist_new();
+ smartlist_t *exits = smartlist_new();
+ smartlist_t *myexits= smartlist_new();
+ double f_guard, f_mid, f_exit, f_myexit;
+ int np, nu; /* Ignored */
+ const int authdir = authdir_mode_v2(options) || authdir_mode_v3(options);
+
+ count_usable_descriptors(num_present_out, num_usable_out,
+ mid, consensus, options, now, NULL, 0);
+ if (options->EntryNodes) {
+ count_usable_descriptors(&np, &nu, guards, consensus, options, now,
+ options->EntryNodes, 0);
+ } else {
+ SMARTLIST_FOREACH(mid, const node_t *, node, {
+ if (authdir) {
+ if (node->rs && node->rs->is_possible_guard)
+ smartlist_add(guards, (node_t*)node);
+ } else {
+ if (node->is_possible_guard)
+ smartlist_add(guards, (node_t*)node);
+ }
+ });
+ }
+
+ count_usable_descriptors(&np, &nu, exits, consensus, options, now,
+ NULL, 1);
+ count_usable_descriptors(&np, &nu, myexits, consensus, options, now,
+ options->ExitNodes, 1);
+
+ f_guard = frac_nodes_with_descriptors(guards, WEIGHT_FOR_GUARD);
+ f_mid = frac_nodes_with_descriptors(mid, WEIGHT_FOR_MID);
+ f_exit = frac_nodes_with_descriptors(exits, WEIGHT_FOR_EXIT);
+ f_myexit= frac_nodes_with_descriptors(myexits,WEIGHT_FOR_EXIT);
+
+ smartlist_free(guards);
+ smartlist_free(mid);
+ smartlist_free(exits);
+ smartlist_free(myexits);
+
+ /* This is a tricky point here: we don't want to make it easy for a
+ * directory to trickle exits to us until it learns which exits we have
+ * configured, so require that we have a threshold both of total exits
+ * and usable exits. */
+ if (f_myexit < f_exit)
+ f_exit = f_myexit;
+
+ tor_asprintf(status_out,
+ "%d%% of guards bw, "
+ "%d%% of midpoint bw, and "
+ "%d%% of exit bw",
+ (int)(f_guard*100),
+ (int)(f_mid*100),
+ (int)(f_exit*100));
+
+ return f_guard * f_mid * f_exit;
+}
+
/** We just fetched a new set of descriptors. Compute how far through
* the "loading descriptors" bootstrapping phase we are, so we can inform
* the controller of our progress. */
@@ -1294,7 +1380,7 @@ count_loading_descriptors_progress(void)
if (!consensus)
return 0; /* can't count descriptors if we have no list of them */
- count_usable_descriptors(&num_present, &num_usable,
+ count_usable_descriptors(&num_present, &num_usable, NULL,
consensus, get_options(), now, NULL, 0);
if (num_usable == 0)
@@ -1307,14 +1393,28 @@ count_loading_descriptors_progress(void)
BOOTSTRAP_STATUS_LOADING_DESCRIPTORS));
}
+/** Return the fraction of paths needed before we're willing to build
+ * circuits, as configured in <b>options</b>, or in the consensus <b>ns</b>. */
+static double
+get_frac_paths_needed_for_circs(const or_options_t *options,
+ const networkstatus_t *ns)
+{
+#define DFLT_PCT_USABLE_NEEDED 60
+ if (options->PathsNeededToBuildCircuits >= 1.0) {
+ return options->PathsNeededToBuildCircuits;
+ } else {
+ return networkstatus_get_param(ns, "min_paths_for_circs_pct",
+ DFLT_PCT_USABLE_NEEDED,
+ 25, 95)/100.0;
+ }
+}
+
/** Change the value of have_min_dir_info, setting it true iff we have enough
* network and router information to build circuits. Clear the value of
* need_to_update_have_min_dir_info. */
static void
update_router_have_minimum_dir_info(void)
{
- int num_present = 0, num_usable=0;
- int num_exit_present = 0, num_exit_usable = 0;
time_t now = time(NULL);
int res;
const or_options_t *options = get_options();
@@ -1343,66 +1443,40 @@ update_router_have_minimum_dir_info(void)
using_md = consensus->flavor == FLAV_MICRODESC;
- count_usable_descriptors(&num_present, &num_usable, consensus, options, now,
- NULL, 0);
- count_usable_descriptors(&num_exit_present, &num_exit_usable,
- consensus, options, now, options->ExitNodes, 1);
-
-/* What fraction of desired server descriptors do we need before we will
- * build circuits? */
-#define FRAC_USABLE_NEEDED .75
-/* What fraction of desired _exit_ server descriptors do we need before we
- * will build circuits? */
-#define FRAC_EXIT_USABLE_NEEDED .5
-
- if (num_present < num_usable * FRAC_USABLE_NEEDED) {
- tor_snprintf(dir_info_status, sizeof(dir_info_status),
- "We have only %d/%d usable %sdescriptors.",
- num_present, num_usable, using_md ? "micro" : "");
- res = 0;
- control_event_bootstrap(BOOTSTRAP_STATUS_REQUESTING_DESCRIPTORS, 0);
- goto done;
- } else if (num_present < 2) {
- tor_snprintf(dir_info_status, sizeof(dir_info_status),
- "Only %d %sdescriptor%s here and believed reachable!",
- num_present, using_md ? "micro" : "", num_present ? "" : "s");
- res = 0;
- goto done;
- } else if (num_exit_present < num_exit_usable * FRAC_EXIT_USABLE_NEEDED) {
- tor_snprintf(dir_info_status, sizeof(dir_info_status),
- "We have only %d/%d usable exit node descriptors.",
- num_exit_present, num_exit_usable);
- res = 0;
- control_event_bootstrap(BOOTSTRAP_STATUS_REQUESTING_DESCRIPTORS, 0);
- goto done;
- }
-
- /* Check for entry nodes. */
- if (options->EntryNodes) {
- count_usable_descriptors(&num_present, &num_usable, consensus, options,
- now, options->EntryNodes, 0);
+ {
+ char *status = NULL;
+ int num_present=0, num_usable=0;
+ double paths = compute_frac_paths_available(consensus, options, now,
+ &num_present, &num_usable,
+ &status);
- if (!num_usable || !num_present) {
+ if (paths < get_frac_paths_needed_for_circs(options,consensus)) {
tor_snprintf(dir_info_status, sizeof(dir_info_status),
- "We have only %d/%d usable entry node %sdescriptors.",
- num_present, num_usable, using_md?"micro":"");
+ "We need more %sdescriptors: we have %d/%d, and "
+ "can only build %d%% of likely paths. (We have %s.)",
+ using_md?"micro":"", num_present, num_usable,
+ (int)(paths*100), status);
+ /* log_notice(LD_NET, "%s", dir_info_status); */
+ tor_free(status);
res = 0;
+ control_event_bootstrap(BOOTSTRAP_STATUS_REQUESTING_DESCRIPTORS, 0);
goto done;
}
- }
- res = 1;
+ tor_free(status);
+ res = 1;
+ }
done:
if (res && !have_min_dir_info) {
- log(LOG_NOTICE, LD_DIR,
+ log_notice(LD_DIR,
"We now have enough directory information to build circuits.");
control_event_client_status(LOG_NOTICE, "ENOUGH_DIR_INFO");
control_event_bootstrap(BOOTSTRAP_STATUS_CONN_OR, 0);
}
if (!res && have_min_dir_info) {
int quiet = directory_too_idle_to_fetch_descriptors(options, now);
- log(quiet ? LOG_INFO : LOG_NOTICE, LD_DIR,
+ tor_log(quiet ? LOG_INFO : LOG_NOTICE, LD_DIR,
"Our directory information is no longer up-to-date "
"enough to build circuits: %s", dir_info_status);
diff --git a/src/or/nodelist.h b/src/or/nodelist.h
index 13a3847414..65cf0d0284 100644
--- a/src/or/nodelist.h
+++ b/src/or/nodelist.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -54,6 +54,7 @@ int node_ipv6_preferred(const node_t *node);
int node_get_prim_orport(const node_t *node, tor_addr_port_t *ap_out);
void node_get_pref_orport(const node_t *node, tor_addr_port_t *ap_out);
void node_get_pref_ipv6_orport(const node_t *node, tor_addr_port_t *ap_out);
+int node_has_curve25519_onion_key(const node_t *node);
smartlist_t *nodelist_get_list(void);
diff --git a/src/or/ntmain.c b/src/or/ntmain.c
index d001f7be13..8b67b86822 100644
--- a/src/or/ntmain.c
+++ b/src/or/ntmain.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define MAIN_PRIVATE
diff --git a/src/or/ntmain.h b/src/or/ntmain.h
index 95a835a42e..d3027936cd 100644
--- a/src/or/ntmain.h
+++ b/src/or/ntmain.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/onion.c b/src/or/onion.c
index cce4bdf73c..d4a65022fc 100644
--- a/src/or/onion.c
+++ b/src/or/onion.c
@@ -1,47 +1,99 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
* \file onion.c
- * \brief Functions to queue create cells, and handle onionskin
- * parsing and creation.
+ * \brief Functions to queue create cells, wrap the various onionskin types,
+ * and parse and create the CREATE cell and its allies.
**/
#include "or.h"
#include "circuitlist.h"
#include "config.h"
+#include "cpuworker.h"
#include "onion.h"
+#include "onion_fast.h"
+#include "onion_ntor.h"
+#include "onion_tap.h"
+#include "relay.h"
#include "rephist.h"
+#include "router.h"
+#include "tor_queue.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 {
+ TOR_TAILQ_ENTRY(onion_queue_t) next;
or_circuit_t *circ;
- char *onionskin;
+ create_cell_t *onionskin;
time_t when_added;
- struct onion_queue_t *next;
} onion_queue_t;
/** 5 seconds on the onion queue til we just send back a destroy */
#define ONIONQUEUE_WAIT_CUTOFF 5
-/** First and last elements in the linked list of circuits waiting for CPU
- * workers, or NULL if the list is empty.
- * @{ */
-static onion_queue_t *ol_list=NULL;
-static onion_queue_t *ol_tail=NULL;
-/**@}*/
-/** Length of ol_list */
-static int ol_length=0;
+/** Queue of circuits waiting for CPU workers, or NULL if the list is empty.*/
+TOR_TAILQ_HEAD(onion_queue_head_t, onion_queue_t) ol_list =
+ TOR_TAILQ_HEAD_INITIALIZER(ol_list);
+
+/** Number of entries of each type currently in ol_list. */
+static int ol_entries[MAX_ONION_HANDSHAKE_TYPE+1];
+
+static void onion_queue_entry_remove(onion_queue_t *victim);
+
+/* XXXX024 Check lengths vs MAX_ONIONSKIN_{CHALLENGE,REPLY}_LEN.
+ *
+ * (By which I think I meant, "make sure that no
+ * X_ONIONSKIN_CHALLENGE/REPLY_LEN is greater than
+ * MAX_ONIONSKIN_CHALLENGE/REPLY_LEN." Also, make sure that we can pass
+ * over-large values via EXTEND2/EXTENDED2, for future-compatibility.*/
+
+/** Return true iff we have room to queue another oninoskin of type
+ * <b>type</b>. */
+static int
+have_room_for_onionskin(uint16_t type)
+{
+ const or_options_t *options = get_options();
+ int num_cpus;
+ uint64_t tap_usec, ntor_usec;
+ /* If we've got fewer than 50 entries, we always have room for one more. */
+ if (ol_entries[ONION_HANDSHAKE_TYPE_TAP] +
+ ol_entries[ONION_HANDSHAKE_TYPE_NTOR] < 50)
+ return 1;
+ num_cpus = get_num_cpus(options);
+ /* Compute how many microseconds we'd expect to need to clear all
+ * onionskins in the current queue. */
+ tap_usec = estimated_usec_for_onionskins(
+ ol_entries[ONION_HANDSHAKE_TYPE_TAP],
+ ONION_HANDSHAKE_TYPE_TAP) / num_cpus;
+ ntor_usec = estimated_usec_for_onionskins(
+ ol_entries[ONION_HANDSHAKE_TYPE_NTOR],
+ ONION_HANDSHAKE_TYPE_NTOR) / num_cpus;
+ /* See whether that exceeds MaxOnionQueueDelay. If so, we can't queue
+ * this. */
+ if ((tap_usec + ntor_usec) / 1000 > (uint64_t)options->MaxOnionQueueDelay)
+ return 0;
+#ifdef CURVE25519_ENABLED
+ /* If we support the ntor handshake, then don't let TAP handshakes use
+ * more than 2/3 of the space on the queue. */
+ if (type == ONION_HANDSHAKE_TYPE_TAP &&
+ tap_usec / 1000 > (uint64_t)options->MaxOnionQueueDelay * 2 / 3)
+ return 0;
+#else
+ (void) type;
+#endif
+
+ return 1;
+}
/** Add <b>circ</b> to the end of ol_list and return 0, except
* if ol_list is too long, in which case do nothing and return -1.
*/
int
-onion_pending_add(or_circuit_t *circ, char *onionskin)
+onion_pending_add(or_circuit_t *circ, create_cell_t *onionskin)
{
onion_queue_t *tmp;
time_t now = time(NULL);
@@ -51,19 +103,7 @@ onion_pending_add(or_circuit_t *circ, char *onionskin)
tmp->onionskin = onionskin;
tmp->when_added = now;
- if (!ol_tail) {
- tor_assert(!ol_list);
- tor_assert(!ol_length);
- ol_list = tmp;
- ol_tail = tmp;
- ol_length++;
- return 0;
- }
-
- tor_assert(ol_list);
- tor_assert(!ol_tail->next);
-
- if (ol_length >= get_options()->MaxOnionsPending) {
+ if (!have_room_for_onionskin(onionskin->handshake_type)) {
#define WARN_TOO_MANY_CIRC_CREATIONS_INTERVAL (60)
static ratelim_t last_warned =
RATELIM_INIT(WARN_TOO_MANY_CIRC_CREATIONS_INTERVAL);
@@ -80,13 +120,19 @@ onion_pending_add(or_circuit_t *circ, char *onionskin)
return -1;
}
- ol_length++;
- ol_tail->next = tmp;
- ol_tail = tmp;
- while ((int)(now - ol_list->when_added) >= ONIONQUEUE_WAIT_CUTOFF) {
- /* cull elderly requests. */
- circ = ol_list->circ;
- onion_pending_remove(ol_list->circ);
+ ++ol_entries[onionskin->handshake_type];
+ circ->onionqueue_entry = tmp;
+ TOR_TAILQ_INSERT_TAIL(&ol_list, tmp, next);
+
+ /* cull elderly requests. */
+ while (1) {
+ onion_queue_t *head = TOR_TAILQ_FIRST(&ol_list);
+ if (now - head->when_added < (time_t)ONIONQUEUE_WAIT_CUTOFF)
+ break;
+
+ circ = head->circ;
+ circ->onionqueue_entry = NULL;
+ onion_queue_entry_remove(head);
log_info(LD_CIRC,
"Circuit create request is too old; canceling due to overload.");
circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_RESOURCELIMIT);
@@ -98,20 +144,24 @@ onion_pending_add(or_circuit_t *circ, char *onionskin)
* NULL if the list is empty.
*/
or_circuit_t *
-onion_next_task(char **onionskin_out)
+onion_next_task(create_cell_t **onionskin_out)
{
or_circuit_t *circ;
+ onion_queue_t *head = TOR_TAILQ_FIRST(&ol_list);
- if (!ol_list)
+ if (!head)
return NULL; /* no onions pending, we're done */
- tor_assert(ol_list->circ);
- tor_assert(ol_list->circ->p_chan); /* make sure it's still valid */
- tor_assert(ol_length > 0);
- circ = ol_list->circ;
- *onionskin_out = ol_list->onionskin;
- ol_list->onionskin = NULL; /* prevent free. */
- onion_pending_remove(ol_list->circ);
+ tor_assert(head->circ);
+ tor_assert(head->circ->p_chan); /* make sure it's still valid */
+ circ = head->circ;
+ if (head->onionskin &&
+ head->onionskin->handshake_type <= MAX_ONION_HANDSHAKE_TYPE)
+ --ol_entries[head->onionskin->handshake_type];
+ *onionskin_out = head->onionskin;
+ head->onionskin = NULL; /* prevent free. */
+ circ->onionqueue_entry = NULL;
+ onion_queue_entry_remove(head);
return circ;
}
@@ -121,328 +171,869 @@ onion_next_task(char **onionskin_out)
void
onion_pending_remove(or_circuit_t *circ)
{
- onion_queue_t *tmpo, *victim;
-
- if (!ol_list)
- return; /* nothing here. */
-
- /* first check to see if it's the first entry */
- tmpo = ol_list;
- if (tmpo->circ == circ) {
- /* it's the first one. remove it from the list. */
- ol_list = tmpo->next;
- if (!ol_list)
- ol_tail = NULL;
- ol_length--;
- victim = tmpo;
- } else { /* we need to hunt through the rest of the list */
- for ( ;tmpo->next && tmpo->next->circ != circ; tmpo=tmpo->next) ;
- if (!tmpo->next) {
- log_debug(LD_GENERAL,
- "circ (p_circ_id %d) not in list, probably at cpuworker.",
- circ->p_circ_id);
- return;
- }
- /* now we know tmpo->next->circ == circ */
- victim = tmpo->next;
- tmpo->next = victim->next;
- if (ol_tail == victim)
- ol_tail = tmpo;
- ol_length--;
- }
+ onion_queue_t *victim;
- /* now victim points to the element that needs to be removed */
+ if (!circ)
+ return;
+
+ victim = circ->onionqueue_entry;
+ if (victim)
+ onion_queue_entry_remove(victim);
+}
+
+/** Remove a queue entry <b>victim</b> from the queue, unlinking it from
+ * its circuit and freeing it and any structures it owns.*/
+static void
+onion_queue_entry_remove(onion_queue_t *victim)
+{
+ TOR_TAILQ_REMOVE(&ol_list, victim, next);
+
+ if (victim->circ)
+ victim->circ->onionqueue_entry = NULL;
+
+ if (victim->onionskin &&
+ victim->onionskin->handshake_type <= MAX_ONION_HANDSHAKE_TYPE)
+ --ol_entries[victim->onionskin->handshake_type];
tor_free(victim->onionskin);
tor_free(victim);
}
-/*----------------------------------------------------------------------*/
+/** Remove all circuits from the pending list. Called from tor_free_all. */
+void
+clear_pending_onions(void)
+{
+ onion_queue_t *victim;
+ while ((victim = TOR_TAILQ_FIRST(&ol_list))) {
+ onion_queue_entry_remove(victim);
+ }
+ memset(ol_entries, 0, sizeof(ol_entries));
+}
-/** Given a router's 128 byte public key,
- * stores the following in onion_skin_out:
- * - [42 bytes] OAEP padding
- * - [16 bytes] Symmetric key for encrypting blob past RSA
- * - [70 bytes] g^x part 1 (inside the RSA)
- * - [58 bytes] g^x part 2 (symmetrically encrypted)
- *
- * Stores the DH private key into handshake_state_out for later completion
- * of the handshake.
- *
- * The meeting point/cookies and auth are zeroed out for now.
+/* ============================================================ */
+
+/** Fill in a server_onion_keys_t object at <b>keys</b> with all of the keys
+ * and other info we might need to do onion handshakes. (We make a copy of
+ * our keys for each cpuworker to avoid race conditions with the main thread,
+ * and to avoid locking) */
+void
+setup_server_onion_keys(server_onion_keys_t *keys)
+{
+ memset(keys, 0, sizeof(server_onion_keys_t));
+ memcpy(keys->my_identity, router_get_my_id_digest(), DIGEST_LEN);
+ dup_onion_keys(&keys->onion_key, &keys->last_onion_key);
+#ifdef CURVE25519_ENABLED
+ keys->curve25519_key_map = construct_ntor_key_map();
+ keys->junk_keypair = tor_malloc_zero(sizeof(curve25519_keypair_t));
+ curve25519_keypair_generate(keys->junk_keypair, 0);
+#endif
+}
+
+/** Release all storage held in <b>keys</b>, but do not free <b>keys</b>
+ * itself (as it's likely to be stack-allocated.) */
+void
+release_server_onion_keys(server_onion_keys_t *keys)
+{
+ if (! keys)
+ return;
+
+ crypto_pk_free(keys->onion_key);
+ crypto_pk_free(keys->last_onion_key);
+#ifdef CURVE25519_ENABLED
+ ntor_key_map_free(keys->curve25519_key_map);
+ tor_free(keys->junk_keypair);
+#endif
+ memset(keys, 0, sizeof(server_onion_keys_t));
+}
+
+/** Release whatever storage is held in <b>state</b>, depending on its
+ * type, and clear its pointer. */
+void
+onion_handshake_state_release(onion_handshake_state_t *state)
+{
+ switch (state->tag) {
+ case ONION_HANDSHAKE_TYPE_TAP:
+ crypto_dh_free(state->u.tap);
+ state->u.tap = NULL;
+ break;
+ case ONION_HANDSHAKE_TYPE_FAST:
+ fast_handshake_state_free(state->u.fast);
+ state->u.fast = NULL;
+ break;
+#ifdef CURVE25519_ENABLED
+ case ONION_HANDSHAKE_TYPE_NTOR:
+ ntor_handshake_state_free(state->u.ntor);
+ state->u.ntor = NULL;
+ break;
+#endif
+ default:
+ log_warn(LD_BUG, "called with unknown handshake state type %d",
+ (int)state->tag);
+ tor_fragile_assert();
+ }
+}
+
+/** Perform the first step of a circuit-creation handshake of type <b>type</b>
+ * (one of ONION_HANDSHAKE_TYPE_*): generate the initial "onion skin" in
+ * <b>onion_skin_out</b>, and store any state information in <b>state_out</b>.
+ * Return -1 on failure, and the length of the onionskin on acceptance.
*/
int
-onion_skin_create(crypto_pk_t *dest_router_key,
- crypto_dh_t **handshake_state_out,
- char *onion_skin_out) /* ONIONSKIN_CHALLENGE_LEN bytes */
+onion_skin_create(int type,
+ const extend_info_t *node,
+ onion_handshake_state_t *state_out,
+ uint8_t *onion_skin_out)
{
- char challenge[DH_KEY_LEN];
- crypto_dh_t *dh = NULL;
- int dhbytes, pkbytes;
-
- tor_assert(dest_router_key);
- tor_assert(handshake_state_out);
- tor_assert(onion_skin_out);
- *handshake_state_out = NULL;
- memset(onion_skin_out, 0, ONIONSKIN_CHALLENGE_LEN);
+ int r = -1;
- if (!(dh = crypto_dh_new(DH_TYPE_CIRCUIT)))
- goto err;
+ switch (type) {
+ case ONION_HANDSHAKE_TYPE_TAP:
+ if (!node->onion_key)
+ return -1;
- dhbytes = crypto_dh_get_bytes(dh);
- pkbytes = (int) crypto_pk_keysize(dest_router_key);
- tor_assert(dhbytes == 128);
- tor_assert(pkbytes == 128);
+ if (onion_skin_TAP_create(node->onion_key,
+ &state_out->u.tap,
+ (char*)onion_skin_out) < 0)
+ return -1;
- if (crypto_dh_get_public(dh, challenge, dhbytes))
- goto err;
+ r = TAP_ONIONSKIN_CHALLENGE_LEN;
+ break;
+ case ONION_HANDSHAKE_TYPE_FAST:
+ if (fast_onionskin_create(&state_out->u.fast, onion_skin_out) < 0)
+ return -1;
- note_crypto_pk_op(ENC_ONIONSKIN);
+ r = CREATE_FAST_LEN;
+ break;
+ case ONION_HANDSHAKE_TYPE_NTOR:
+#ifdef CURVE25519_ENABLED
+ if (tor_mem_is_zero((const char*)node->curve25519_onion_key.public_key,
+ CURVE25519_PUBKEY_LEN))
+ return -1;
+ if (onion_skin_ntor_create((const uint8_t*)node->identity_digest,
+ &node->curve25519_onion_key,
+ &state_out->u.ntor,
+ onion_skin_out) < 0)
+ return -1;
- /* set meeting point, meeting cookie, etc here. Leave zero for now. */
- if (crypto_pk_public_hybrid_encrypt(dest_router_key, onion_skin_out,
- ONIONSKIN_CHALLENGE_LEN,
- challenge, DH_KEY_LEN,
- PK_PKCS1_OAEP_PADDING, 1)<0)
- goto err;
+ r = NTOR_ONIONSKIN_LEN;
+#else
+ return -1;
+#endif
+ break;
+ default:
+ log_warn(LD_BUG, "called with unknown handshake state type %d", type);
+ tor_fragile_assert();
+ r = -1;
+ }
- memwipe(challenge, 0, sizeof(challenge));
- *handshake_state_out = dh;
+ if (r > 0)
+ state_out->tag = (uint16_t) type;
- return 0;
- err:
- memwipe(challenge, 0, sizeof(challenge));
- if (dh) crypto_dh_free(dh);
- return -1;
+ return r;
}
-/** Given an encrypted DH public key as generated by onion_skin_create,
- * and the private key for this onion router, generate the reply (128-byte
- * DH plus the first 20 bytes of shared key material), and store the
- * next key_out_len bytes of key material in key_out.
+/** Perform the second (server-side) step of a circuit-creation handshake of
+ * type <b>type</b>, responding to the client request in <b>onion_skin</b>
+ * using the keys in <b>keys</b>. On success, write our response into
+ * <b>reply_out</b>, generate <b>keys_out_len</b> bytes worth of key material
+ * in <b>keys_out_len</b>, a hidden service nonce to <b>rend_nonce_out</b>,
+ * and return the length of the reply. On failure, return -1.
*/
int
-onion_skin_server_handshake(const char *onion_skin, /*ONIONSKIN_CHALLENGE_LEN*/
- crypto_pk_t *private_key,
- crypto_pk_t *prev_private_key,
- char *handshake_reply_out, /*ONIONSKIN_REPLY_LEN*/
- char *key_out,
- size_t key_out_len)
+onion_skin_server_handshake(int type,
+ const uint8_t *onion_skin, size_t onionskin_len,
+ const server_onion_keys_t *keys,
+ uint8_t *reply_out,
+ uint8_t *keys_out, size_t keys_out_len,
+ uint8_t *rend_nonce_out)
{
- char challenge[ONIONSKIN_CHALLENGE_LEN];
- crypto_dh_t *dh = NULL;
- ssize_t len;
- char *key_material=NULL;
- size_t key_material_len=0;
- int i;
- crypto_pk_t *k;
-
- len = -1;
- for (i=0;i<2;++i) {
- k = i==0?private_key:prev_private_key;
- if (!k)
- break;
- note_crypto_pk_op(DEC_ONIONSKIN);
- len = crypto_pk_private_hybrid_decrypt(k, challenge,
- ONIONSKIN_CHALLENGE_LEN,
- onion_skin, ONIONSKIN_CHALLENGE_LEN,
- PK_PKCS1_OAEP_PADDING,0);
- if (len>0)
- break;
+ int r = -1;
+
+ switch (type) {
+ case ONION_HANDSHAKE_TYPE_TAP:
+ if (onionskin_len != TAP_ONIONSKIN_CHALLENGE_LEN)
+ return -1;
+ if (onion_skin_TAP_server_handshake((const char*)onion_skin,
+ keys->onion_key, keys->last_onion_key,
+ (char*)reply_out,
+ (char*)keys_out, keys_out_len)<0)
+ return -1;
+ r = TAP_ONIONSKIN_REPLY_LEN;
+ memcpy(rend_nonce_out, reply_out+DH_KEY_LEN, DIGEST_LEN);
+ break;
+ case ONION_HANDSHAKE_TYPE_FAST:
+ if (onionskin_len != CREATE_FAST_LEN)
+ return -1;
+ if (fast_server_handshake(onion_skin, reply_out, keys_out, keys_out_len)<0)
+ return -1;
+ r = CREATED_FAST_LEN;
+ memcpy(rend_nonce_out, reply_out+DIGEST_LEN, DIGEST_LEN);
+ break;
+ case ONION_HANDSHAKE_TYPE_NTOR:
+#ifdef CURVE25519_ENABLED
+ if (onionskin_len < NTOR_ONIONSKIN_LEN)
+ return -1;
+ {
+ size_t keys_tmp_len = keys_out_len + DIGEST_LEN;
+ uint8_t *keys_tmp = tor_malloc(keys_out_len + DIGEST_LEN);
+
+ if (onion_skin_ntor_server_handshake(
+ onion_skin, keys->curve25519_key_map,
+ keys->junk_keypair,
+ keys->my_identity,
+ reply_out, keys_tmp, keys_tmp_len)<0) {
+ tor_free(keys_tmp);
+ return -1;
+ }
+ memcpy(keys_out, keys_tmp, keys_out_len);
+ memcpy(rend_nonce_out, keys_tmp+keys_out_len, DIGEST_LEN);
+ memwipe(keys_tmp, 0, keys_tmp_len);
+ tor_free(keys_tmp);
+ r = NTOR_REPLY_LEN;
+ }
+#else
+ return -1;
+#endif
+ break;
+ default:
+ log_warn(LD_BUG, "called with unknown handshake state type %d", type);
+ tor_fragile_assert();
+ return -1;
}
- if (len<0) {
- log_info(LD_PROTOCOL,
- "Couldn't decrypt onionskin: client may be using old onion key");
- goto err;
- } else if (len != DH_KEY_LEN) {
- log_warn(LD_PROTOCOL, "Unexpected onionskin length after decryption: %ld",
- (long)len);
- goto err;
+
+ return r;
+}
+
+/** Perform the final (client-side) step of a circuit-creation handshake of
+ * type <b>type</b>, using our state in <b>handshake_state</b> and the
+ * server's response in <b>reply</b>. On success, generate <b>keys_out_len</b>
+ * bytes worth of key material in <b>keys_out_len</b>, set
+ * <b>rend_authenticator_out</b> to the "KH" field that can be used to
+ * establish introduction points at this hop, and return 0. On failure,
+ * return -1. */
+int
+onion_skin_client_handshake(int type,
+ const onion_handshake_state_t *handshake_state,
+ const uint8_t *reply, size_t reply_len,
+ uint8_t *keys_out, size_t keys_out_len,
+ uint8_t *rend_authenticator_out)
+{
+ if (handshake_state->tag != type)
+ return -1;
+
+ switch (type) {
+ case ONION_HANDSHAKE_TYPE_TAP:
+ if (reply_len != TAP_ONIONSKIN_REPLY_LEN)
+ return -1;
+ if (onion_skin_TAP_client_handshake(handshake_state->u.tap,
+ (const char*)reply,
+ (char *)keys_out, keys_out_len) < 0)
+ return -1;
+
+ memcpy(rend_authenticator_out, reply+DH_KEY_LEN, DIGEST_LEN);
+
+ return 0;
+ case ONION_HANDSHAKE_TYPE_FAST:
+ if (reply_len != CREATED_FAST_LEN)
+ return -1;
+ if (fast_client_handshake(handshake_state->u.fast, reply,
+ keys_out, keys_out_len) < 0)
+ return -1;
+
+ memcpy(rend_authenticator_out, reply+DIGEST_LEN, DIGEST_LEN);
+ return 0;
+#ifdef CURVE25519_ENABLED
+ case ONION_HANDSHAKE_TYPE_NTOR:
+ if (reply_len < NTOR_REPLY_LEN)
+ return -1;
+ {
+ size_t keys_tmp_len = keys_out_len + DIGEST_LEN;
+ uint8_t *keys_tmp = tor_malloc(keys_tmp_len);
+ if (onion_skin_ntor_client_handshake(handshake_state->u.ntor,
+ reply,
+ keys_tmp, keys_tmp_len) < 0) {
+ tor_free(keys_tmp);
+ return -1;
+ }
+ memcpy(keys_out, keys_tmp, keys_out_len);
+ memcpy(rend_authenticator_out, keys_tmp + keys_out_len, DIGEST_LEN);
+ memwipe(keys_tmp, 0, keys_tmp_len);
+ tor_free(keys_tmp);
+ }
+ return 0;
+#endif
+ default:
+ log_warn(LD_BUG, "called with unknown handshake state type %d", type);
+ tor_fragile_assert();
+ return -1;
}
+}
- dh = crypto_dh_new(DH_TYPE_CIRCUIT);
- if (!dh) {
- log_warn(LD_BUG, "Couldn't allocate DH key");
- goto err;
+/** Helper: return 0 if <b>cell</b> appears valid, -1 otherwise. If
+ * <b>unknown_ok</b> is true, allow cells with handshake types we don't
+ * recognize. */
+static int
+check_create_cell(const create_cell_t *cell, int unknown_ok)
+{
+ switch (cell->cell_type) {
+ case CELL_CREATE:
+ if (cell->handshake_type != ONION_HANDSHAKE_TYPE_TAP &&
+ cell->handshake_type != ONION_HANDSHAKE_TYPE_NTOR)
+ return -1;
+ break;
+ case CELL_CREATE_FAST:
+ if (cell->handshake_type != ONION_HANDSHAKE_TYPE_FAST)
+ return -1;
+ break;
+ case CELL_CREATE2:
+ break;
+ default:
+ return -1;
}
- if (crypto_dh_get_public(dh, handshake_reply_out, DH_KEY_LEN)) {
- log_info(LD_GENERAL, "crypto_dh_get_public failed.");
- goto err;
+
+ switch (cell->handshake_type) {
+ case ONION_HANDSHAKE_TYPE_TAP:
+ if (cell->handshake_len != TAP_ONIONSKIN_CHALLENGE_LEN)
+ return -1;
+ break;
+ case ONION_HANDSHAKE_TYPE_FAST:
+ if (cell->handshake_len != CREATE_FAST_LEN)
+ return -1;
+ break;
+#ifdef CURVE25519_ENABLED
+ case ONION_HANDSHAKE_TYPE_NTOR:
+ if (cell->handshake_len != NTOR_ONIONSKIN_LEN)
+ return -1;
+ break;
+#endif
+ default:
+ if (! unknown_ok)
+ return -1;
}
- key_material_len = DIGEST_LEN+key_out_len;
- key_material = tor_malloc(key_material_len);
- len = crypto_dh_compute_secret(LOG_PROTOCOL_WARN, dh, challenge,
- DH_KEY_LEN, key_material,
- key_material_len);
- if (len < 0) {
- log_info(LD_GENERAL, "crypto_dh_compute_secret failed.");
- goto err;
+ return 0;
+}
+
+/** Helper: parse the CREATE2 payload at <b>p</b>, which could be up to
+ * <b>p_len</b> bytes long, and use it to fill the fields of
+ * <b>cell_out</b>. Return 0 on success and -1 on failure.
+ *
+ * Note that part of the body of an EXTEND2 cell is a CREATE2 payload, so
+ * this function is also used for parsing those.
+ */
+static int
+parse_create2_payload(create_cell_t *cell_out, const uint8_t *p, size_t p_len)
+{
+ if (p_len < 4)
+ return -1;
+ cell_out->cell_type = CELL_CREATE2;
+ cell_out->handshake_type = ntohs(get_uint16(p));
+ cell_out->handshake_len = ntohs(get_uint16(p+2));
+ if (cell_out->handshake_len > CELL_PAYLOAD_SIZE - 4 ||
+ cell_out->handshake_len > p_len - 4)
+ return -1;
+ if (cell_out->handshake_type == ONION_HANDSHAKE_TYPE_FAST)
+ return -1;
+ memcpy(cell_out->onionskin, p+4, cell_out->handshake_len);
+ return 0;
+}
+
+/** Magic string which, in a CREATE or EXTEND cell, indicates that a seeming
+ * TAP payload is really an ntor payload. We'd do away with this if every
+ * relay supported EXTEND2, but we want to be able to extend from A to B with
+ * ntor even when A doesn't understand EXTEND2 and so can't generate a
+ * CREATE2 cell.
+ **/
+#define NTOR_CREATE_MAGIC "ntorNTORntorNTOR"
+
+/** Parse a CREATE, CREATE_FAST, or CREATE2 cell from <b>cell_in</b> into
+ * <b>cell_out</b>. Return 0 on success, -1 on failure. (We reject some
+ * syntactically valid CREATE2 cells that we can't generate or react to.) */
+int
+create_cell_parse(create_cell_t *cell_out, const cell_t *cell_in)
+{
+ memset(cell_out, 0, sizeof(*cell_out));
+
+ switch (cell_in->command) {
+ case CELL_CREATE:
+ cell_out->cell_type = CELL_CREATE;
+ if (tor_memeq(cell_in->payload, NTOR_CREATE_MAGIC, 16)) {
+ cell_out->handshake_type = ONION_HANDSHAKE_TYPE_NTOR;
+ cell_out->handshake_len = NTOR_ONIONSKIN_LEN;
+ memcpy(cell_out->onionskin, cell_in->payload+16, NTOR_ONIONSKIN_LEN);
+ } else {
+ cell_out->handshake_type = ONION_HANDSHAKE_TYPE_TAP;
+ cell_out->handshake_len = TAP_ONIONSKIN_CHALLENGE_LEN;
+ memcpy(cell_out->onionskin, cell_in->payload,
+ TAP_ONIONSKIN_CHALLENGE_LEN);
+ }
+ break;
+ case CELL_CREATE_FAST:
+ cell_out->cell_type = CELL_CREATE_FAST;
+ cell_out->handshake_type = ONION_HANDSHAKE_TYPE_FAST;
+ cell_out->handshake_len = CREATE_FAST_LEN;
+ memcpy(cell_out->onionskin, cell_in->payload, CREATE_FAST_LEN);
+ break;
+ case CELL_CREATE2:
+ if (parse_create2_payload(cell_out, cell_in->payload,
+ CELL_PAYLOAD_SIZE) < 0)
+ return -1;
+ break;
+ default:
+ return -1;
}
- /* send back H(K|0) as proof that we learned K. */
- memcpy(handshake_reply_out+DH_KEY_LEN, key_material, DIGEST_LEN);
+ return check_create_cell(cell_out, 0);
+}
- /* use the rest of the key material for our shared keys, digests, etc */
- memcpy(key_out, key_material+DIGEST_LEN, key_out_len);
+/** Helper: return 0 if <b>cell</b> appears valid, -1 otherwise. */
+static int
+check_created_cell(const created_cell_t *cell)
+{
+ switch (cell->cell_type) {
+ case CELL_CREATED:
+ if (cell->handshake_len != TAP_ONIONSKIN_REPLY_LEN &&
+ cell->handshake_len != NTOR_REPLY_LEN)
+ return -1;
+ break;
+ case CELL_CREATED_FAST:
+ if (cell->handshake_len != CREATED_FAST_LEN)
+ return -1;
+ break;
+ case CELL_CREATED2:
+ if (cell->handshake_len > RELAY_PAYLOAD_SIZE-2)
+ return -1;
+ break;
+ }
- memwipe(challenge, 0, sizeof(challenge));
- memwipe(key_material, 0, key_material_len);
- tor_free(key_material);
- crypto_dh_free(dh);
return 0;
- err:
- memwipe(challenge, 0, sizeof(challenge));
- if (key_material) {
- memwipe(key_material, 0, key_material_len);
- tor_free(key_material);
+}
+
+/** Parse a CREATED, CREATED_FAST, or CREATED2 cell from <b>cell_in</b> into
+ * <b>cell_out</b>. Return 0 on success, -1 on failure. */
+int
+created_cell_parse(created_cell_t *cell_out, const cell_t *cell_in)
+{
+ memset(cell_out, 0, sizeof(*cell_out));
+
+ switch (cell_in->command) {
+ case CELL_CREATED:
+ cell_out->cell_type = CELL_CREATED;
+ cell_out->handshake_len = TAP_ONIONSKIN_REPLY_LEN;
+ memcpy(cell_out->reply, cell_in->payload, TAP_ONIONSKIN_REPLY_LEN);
+ break;
+ case CELL_CREATED_FAST:
+ cell_out->cell_type = CELL_CREATED_FAST;
+ cell_out->handshake_len = CREATED_FAST_LEN;
+ memcpy(cell_out->reply, cell_in->payload, CREATED_FAST_LEN);
+ break;
+ case CELL_CREATED2:
+ {
+ const uint8_t *p = cell_in->payload;
+ cell_out->cell_type = CELL_CREATED2;
+ cell_out->handshake_len = ntohs(get_uint16(p));
+ if (cell_out->handshake_len > CELL_PAYLOAD_SIZE - 2)
+ return -1;
+ memcpy(cell_out->reply, p+2, cell_out->handshake_len);
+ break;
+ }
}
- if (dh) crypto_dh_free(dh);
- return -1;
+ return check_created_cell(cell_out);
}
-/** Finish the client side of the DH handshake.
- * Given the 128 byte DH reply + 20 byte hash as generated by
- * onion_skin_server_handshake and the handshake state generated by
- * onion_skin_create, verify H(K) with the first 20 bytes of shared
- * key material, then generate key_out_len more bytes of shared key
- * material and store them in key_out.
- *
- * After the invocation, call crypto_dh_free on handshake_state.
+/** Helper: return 0 if <b>cell</b> appears valid, -1 otherwise. */
+static int
+check_extend_cell(const extend_cell_t *cell)
+{
+ if (tor_digest_is_zero((const char*)cell->node_id))
+ return -1;
+ /* We don't currently allow EXTEND2 cells without an IPv4 address */
+ if (tor_addr_family(&cell->orport_ipv4.addr) == AF_UNSPEC)
+ return -1;
+ if (cell->create_cell.cell_type == CELL_CREATE) {
+ if (cell->cell_type != RELAY_COMMAND_EXTEND)
+ return -1;
+ } else if (cell->create_cell.cell_type == CELL_CREATE2) {
+ if (cell->cell_type != RELAY_COMMAND_EXTEND2 &&
+ cell->cell_type != RELAY_COMMAND_EXTEND)
+ return -1;
+ } else {
+ /* In particular, no CREATE_FAST cells are allowed */
+ return -1;
+ }
+ if (cell->create_cell.handshake_type == ONION_HANDSHAKE_TYPE_FAST)
+ return -1;
+
+ 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
+/** @} */
+
+/** 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
+ * 0 on success, -1 on failure. */
int
-onion_skin_client_handshake(crypto_dh_t *handshake_state,
- const char *handshake_reply, /* ONIONSKIN_REPLY_LEN bytes */
- char *key_out,
- size_t key_out_len)
+extend_cell_parse(extend_cell_t *cell_out, const uint8_t command,
+ const uint8_t *payload, size_t payload_length)
{
- ssize_t len;
- char *key_material=NULL;
- size_t key_material_len;
- tor_assert(crypto_dh_get_bytes(handshake_state) == DH_KEY_LEN);
-
- key_material_len = DIGEST_LEN + key_out_len;
- key_material = tor_malloc(key_material_len);
- len = crypto_dh_compute_secret(LOG_PROTOCOL_WARN, handshake_state,
- handshake_reply, DH_KEY_LEN, key_material,
- key_material_len);
- if (len < 0)
- goto err;
-
- if (tor_memneq(key_material, handshake_reply+DH_KEY_LEN, DIGEST_LEN)) {
- /* H(K) does *not* match. Something fishy. */
- log_warn(LD_PROTOCOL,"Digest DOES NOT MATCH on onion handshake. "
- "Bug or attack.");
- goto err;
+ const uint8_t *eop;
+
+ memset(cell_out, 0, sizeof(*cell_out));
+ 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)
+ 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;
+ }
+ case RELAY_COMMAND_EXTEND2:
+ {
+ uint8_t n_specs = *payload, 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);
+
+ cell_out->cell_type = RELAY_COMMAND_EXTEND2;
+ ++payload;
+ /* Parse the specifiers. We'll only take the first IPv4 and first IPv6
+ * addres, 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;
+ }
+ default:
+ return -1;
}
- /* use the rest of the key material for our shared keys, digests, etc */
- memcpy(key_out, key_material+DIGEST_LEN, key_out_len);
+ return check_extend_cell(cell_out);
+}
- memwipe(key_material, 0, key_material_len);
- tor_free(key_material);
- return 0;
- err:
- memwipe(key_material, 0, key_material_len);
- tor_free(key_material);
- return -1;
+/** Helper: return 0 if <b>cell</b> appears valid, -1 otherwise. */
+static int
+check_extended_cell(const extended_cell_t *cell)
+{
+ if (cell->created_cell.cell_type == CELL_CREATED) {
+ if (cell->cell_type != RELAY_COMMAND_EXTENDED)
+ return -1;
+ } else if (cell->created_cell.cell_type == CELL_CREATED2) {
+ if (cell->cell_type != RELAY_COMMAND_EXTENDED2)
+ return -1;
+ } else {
+ return -1;
+ }
+
+ return check_created_cell(&cell->created_cell);
}
-/** Implement the server side of the CREATE_FAST abbreviated handshake. The
- * client has provided DIGEST_LEN key bytes in <b>key_in</b> ("x"). We
- * generate a reply of DIGEST_LEN*2 bytes in <b>key_out</b>, consisting of a
- * new random "y", followed by H(x|y) to check for correctness. We set
- * <b>key_out_len</b> bytes of key material in <b>key_out</b>.
- * Return 0 on success, &lt;0 on failure.
- **/
+/** Parse an EXTENDED or EXTENDED2 cell (according to <b>command</b>) from the
+ * <b>payload_length</b> bytes of <b>payload</b> into <b>cell_out</b>. Return
+ * 0 on success, -1 on failure. */
int
-fast_server_handshake(const uint8_t *key_in, /* DIGEST_LEN bytes */
- uint8_t *handshake_reply_out, /* DIGEST_LEN*2 bytes */
- uint8_t *key_out,
- size_t key_out_len)
+extended_cell_parse(extended_cell_t *cell_out,
+ const uint8_t command, const uint8_t *payload,
+ size_t payload_len)
{
- char tmp[DIGEST_LEN+DIGEST_LEN];
- char *out = NULL;
- size_t out_len;
- int r = -1;
+ memset(cell_out, 0, sizeof(*cell_out));
+ if (payload_len > RELAY_PAYLOAD_SIZE)
+ return -1;
+
+ switch (command) {
+ case RELAY_COMMAND_EXTENDED:
+ if (payload_len != TAP_ONIONSKIN_REPLY_LEN)
+ return -1;
+ cell_out->cell_type = RELAY_COMMAND_EXTENDED;
+ cell_out->created_cell.cell_type = CELL_CREATED;
+ cell_out->created_cell.handshake_len = TAP_ONIONSKIN_REPLY_LEN;
+ memcpy(cell_out->created_cell.reply, payload, TAP_ONIONSKIN_REPLY_LEN);
+ break;
+ case RELAY_COMMAND_EXTENDED2:
+ {
+ cell_out->cell_type = RELAY_COMMAND_EXTENDED2;
+ cell_out->created_cell.cell_type = CELL_CREATED2;
+ cell_out->created_cell.handshake_len = ntohs(get_uint16(payload));
+ if (cell_out->created_cell.handshake_len > RELAY_PAYLOAD_SIZE - 2 ||
+ cell_out->created_cell.handshake_len > payload_len - 2)
+ return -1;
+ memcpy(cell_out->created_cell.reply, payload+2,
+ cell_out->created_cell.handshake_len);
+ }
+ break;
+ default:
+ return -1;
+ }
- if (crypto_rand((char*)handshake_reply_out, DIGEST_LEN)<0)
+ return check_extended_cell(cell_out);
+}
+
+/** Fill <b>cell_out</b> with a correctly formatted version of the
+ * CREATE{,_FAST,2} cell in <b>cell_in</b>. Return 0 on success, -1 on
+ * failure. This is a cell we didn't originate if <b>relayed</b> is true. */
+static int
+create_cell_format_impl(cell_t *cell_out, const create_cell_t *cell_in,
+ int relayed)
+{
+ uint8_t *p;
+ size_t space;
+ if (check_create_cell(cell_in, relayed) < 0)
return -1;
- memcpy(tmp, key_in, DIGEST_LEN);
- memcpy(tmp+DIGEST_LEN, handshake_reply_out, DIGEST_LEN);
- out_len = key_out_len+DIGEST_LEN;
- out = tor_malloc(out_len);
- if (crypto_expand_key_material(tmp, sizeof(tmp), out, out_len)) {
- goto done;
+ memset(cell_out->payload, 0, sizeof(cell_out->payload));
+ cell_out->command = cell_in->cell_type;
+
+ p = cell_out->payload;
+ space = sizeof(cell_out->payload);
+
+ switch (cell_in->cell_type) {
+ case CELL_CREATE:
+ if (cell_in->handshake_type == ONION_HANDSHAKE_TYPE_NTOR) {
+ memcpy(p, NTOR_CREATE_MAGIC, 16);
+ p += 16;
+ space -= 16;
+ }
+ /* Fall through */
+ case CELL_CREATE_FAST:
+ tor_assert(cell_in->handshake_len <= space);
+ memcpy(p, cell_in->onionskin, cell_in->handshake_len);
+ break;
+ case CELL_CREATE2:
+ tor_assert(cell_in->handshake_len <= sizeof(cell_out->payload)-4);
+ set_uint16(cell_out->payload, htons(cell_in->handshake_type));
+ set_uint16(cell_out->payload+2, htons(cell_in->handshake_len));
+ memcpy(cell_out->payload + 4, cell_in->onionskin, cell_in->handshake_len);
+ break;
+ default:
+ return -1;
}
- memcpy(handshake_reply_out+DIGEST_LEN, out, DIGEST_LEN);
- memcpy(key_out, out+DIGEST_LEN, key_out_len);
- r = 0;
- done:
- memwipe(tmp, 0, sizeof(tmp));
- memwipe(out, 0, out_len);
- tor_free(out);
- return r;
+
+ return 0;
}
-/** Implement the second half of the client side of the CREATE_FAST handshake.
- * We sent the server <b>handshake_state</b> ("x") already, and the server
- * told us <b>handshake_reply_out</b> (y|H(x|y)). Make sure that the hash is
- * correct, and generate key material in <b>key_out</b>. Return 0 on success,
- * true on failure.
- *
- * NOTE: The "CREATE_FAST" handshake path is distinguishable from regular
- * "onionskin" handshakes, and is not secure if an adversary can see or modify
- * the messages. Therefore, it should only be used by clients, and only as
- * the first hop of a circuit (since the first hop is already authenticated
- * and protected by TLS).
- */
int
-fast_client_handshake(const uint8_t *handshake_state,/*DIGEST_LEN bytes*/
- const uint8_t *handshake_reply_out,/*DIGEST_LEN*2 bytes*/
- uint8_t *key_out,
- size_t key_out_len)
+create_cell_format(cell_t *cell_out, const create_cell_t *cell_in)
{
- char tmp[DIGEST_LEN+DIGEST_LEN];
- char *out;
- size_t out_len;
- int r = -1;
+ return create_cell_format_impl(cell_out, cell_in, 0);
+}
+
+int
+create_cell_format_relayed(cell_t *cell_out, const create_cell_t *cell_in)
+{
+ return create_cell_format_impl(cell_out, cell_in, 1);
+}
- memcpy(tmp, handshake_state, DIGEST_LEN);
- memcpy(tmp+DIGEST_LEN, handshake_reply_out, DIGEST_LEN);
- out_len = key_out_len+DIGEST_LEN;
- out = tor_malloc(out_len);
- if (crypto_expand_key_material(tmp, sizeof(tmp), out, out_len)) {
- goto done;
+/** Fill <b>cell_out</b> with a correctly formatted version of the
+ * CREATED{,_FAST,2} cell in <b>cell_in</b>. Return 0 on success, -1 on
+ * failure. */
+int
+created_cell_format(cell_t *cell_out, const created_cell_t *cell_in)
+{
+ if (check_created_cell(cell_in) < 0)
+ return -1;
+
+ memset(cell_out->payload, 0, sizeof(cell_out->payload));
+ cell_out->command = cell_in->cell_type;
+
+ switch (cell_in->cell_type) {
+ case CELL_CREATED:
+ case CELL_CREATED_FAST:
+ tor_assert(cell_in->handshake_len <= sizeof(cell_out->payload));
+ memcpy(cell_out->payload, cell_in->reply, cell_in->handshake_len);
+ break;
+ case CELL_CREATED2:
+ tor_assert(cell_in->handshake_len <= sizeof(cell_out->payload)-2);
+ set_uint16(cell_out->payload, htons(cell_in->handshake_len));
+ memcpy(cell_out->payload + 2, cell_in->reply, cell_in->handshake_len);
+ break;
+ default:
+ return -1;
}
- if (tor_memneq(out, handshake_reply_out+DIGEST_LEN, DIGEST_LEN)) {
- /* H(K) does *not* match. Something fishy. */
- log_warn(LD_PROTOCOL,"Digest DOES NOT MATCH on fast handshake. "
- "Bug or attack.");
- goto done;
+ return 0;
+}
+
+/** 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
+ * RELAY_PAYLOAD_SIZE bytes available. Return 0 on success, -1 on failure. */
+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;
+ if (check_extend_cell(cell_in) < 0)
+ return -1;
+
+ p = payload_out;
+ eop = payload_out + RELAY_PAYLOAD_SIZE;
+
+ memset(p, 0, RELAY_PAYLOAD_SIZE);
+
+ switch (cell_in->cell_type) {
+ case RELAY_COMMAND_EXTEND:
+ {
+ *command_out = RELAY_COMMAND_EXTEND;
+ *len_out = 6 + TAP_ONIONSKIN_CHALLENGE_LEN + DIGEST_LEN;
+ set_uint32(p, tor_addr_to_ipv4n(&cell_in->orport_ipv4.addr));
+ set_uint16(p+4, ntohs(cell_in->orport_ipv4.port));
+ if (cell_in->create_cell.handshake_type == ONION_HANDSHAKE_TYPE_NTOR) {
+ memcpy(p+6, NTOR_CREATE_MAGIC, 16);
+ memcpy(p+22, cell_in->create_cell.onionskin, NTOR_ONIONSKIN_LEN);
+ } else {
+ memcpy(p+6, cell_in->create_cell.onionskin,
+ TAP_ONIONSKIN_CHALLENGE_LEN);
+ }
+ memcpy(p+6+TAP_ONIONSKIN_CHALLENGE_LEN, cell_in->node_id, DIGEST_LEN);
+ }
+ break;
+ case RELAY_COMMAND_EXTEND2:
+ {
+ uint8_t n = 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,
+ cell_in->create_cell.handshake_len);
+
+ p += cell_in->create_cell.handshake_len;
+ *len_out = p - payload_out;
+ }
+ break;
+ default:
+ return -1;
}
- memcpy(key_out, out+DIGEST_LEN, key_out_len);
- r = 0;
- done:
- memwipe(tmp, 0, sizeof(tmp));
- memwipe(out, 0, out_len);
- tor_free(out);
- return r;
+
+ return 0;
}
-/** Remove all circuits from the pending list. Called from tor_free_all. */
-void
-clear_pending_onions(void)
+/** Format the EXTENDED{,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
+ * RELAY_PAYLOAD_SIZE bytes available. Return 0 on success, -1 on failure. */
+int
+extended_cell_format(uint8_t *command_out, uint16_t *len_out,
+ uint8_t *payload_out, const extended_cell_t *cell_in)
{
- while (ol_list) {
- onion_queue_t *victim = ol_list;
- ol_list = victim->next;
- tor_free(victim->onionskin);
- tor_free(victim);
+ uint8_t *p;
+ if (check_extended_cell(cell_in) < 0)
+ return -1;
+
+ p = payload_out;
+ memset(p, 0, RELAY_PAYLOAD_SIZE);
+
+ switch (cell_in->cell_type) {
+ case RELAY_COMMAND_EXTENDED:
+ {
+ *command_out = RELAY_COMMAND_EXTENDED;
+ *len_out = TAP_ONIONSKIN_REPLY_LEN;
+ memcpy(payload_out, cell_in->created_cell.reply,
+ TAP_ONIONSKIN_REPLY_LEN);
+ }
+ break;
+ case RELAY_COMMAND_EXTENDED2:
+ {
+ *command_out = RELAY_COMMAND_EXTENDED2;
+ *len_out = 2 + cell_in->created_cell.handshake_len;
+ set_uint16(payload_out, htons(cell_in->created_cell.handshake_len));
+ if (2+cell_in->created_cell.handshake_len > RELAY_PAYLOAD_SIZE)
+ return -1;
+ memcpy(payload_out+2, cell_in->created_cell.reply,
+ cell_in->created_cell.handshake_len);
+ }
+ break;
+ default:
+ return -1;
}
- ol_list = ol_tail = NULL;
- ol_length = 0;
+
+ return 0;
}
diff --git a/src/or/onion.h b/src/or/onion.h
index e7626f9709..db4c999c9e 100644
--- a/src/or/onion.h
+++ b/src/or/onion.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -12,37 +12,107 @@
#ifndef TOR_ONION_H
#define TOR_ONION_H
-int onion_pending_add(or_circuit_t *circ, char *onionskin);
-or_circuit_t *onion_next_task(char **onionskin_out);
+struct create_cell_t;
+int onion_pending_add(or_circuit_t *circ, struct create_cell_t *onionskin);
+or_circuit_t *onion_next_task(struct create_cell_t **onionskin_out);
void onion_pending_remove(or_circuit_t *circ);
+void clear_pending_onions(void);
+
+typedef struct server_onion_keys_t {
+ uint8_t my_identity[DIGEST_LEN];
+ crypto_pk_t *onion_key;
+ crypto_pk_t *last_onion_key;
+#ifdef CURVE25519_ENABLED
+ di_digest256_map_t *curve25519_key_map;
+ curve25519_keypair_t *junk_keypair;
+#endif
+} server_onion_keys_t;
-int onion_skin_create(crypto_pk_t *router_key,
- crypto_dh_t **handshake_state_out,
- char *onion_skin_out);
+#define MAX_ONIONSKIN_CHALLENGE_LEN 255
+#define MAX_ONIONSKIN_REPLY_LEN 255
-int onion_skin_server_handshake(const char *onion_skin,
- crypto_pk_t *private_key,
- crypto_pk_t *prev_private_key,
- char *handshake_reply_out,
- char *key_out,
- size_t key_out_len);
+void setup_server_onion_keys(server_onion_keys_t *keys);
+void release_server_onion_keys(server_onion_keys_t *keys);
-int onion_skin_client_handshake(crypto_dh_t *handshake_state,
- const char *handshake_reply,
- char *key_out,
- size_t key_out_len);
+void onion_handshake_state_release(onion_handshake_state_t *state);
-int fast_server_handshake(const uint8_t *key_in,
- uint8_t *handshake_reply_out,
- uint8_t *key_out,
- size_t key_out_len);
+int onion_skin_create(int type,
+ const extend_info_t *node,
+ onion_handshake_state_t *state_out,
+ uint8_t *onion_skin_out);
+int onion_skin_server_handshake(int type,
+ const uint8_t *onion_skin, size_t onionskin_len,
+ const server_onion_keys_t *keys,
+ uint8_t *reply_out,
+ uint8_t *keys_out, size_t key_out_len,
+ uint8_t *rend_nonce_out);
+int onion_skin_client_handshake(int type,
+ const onion_handshake_state_t *handshake_state,
+ const uint8_t *reply, size_t reply_len,
+ uint8_t *keys_out, size_t key_out_len,
+ uint8_t *rend_authenticator_out);
-int fast_client_handshake(const uint8_t *handshake_state,
- const uint8_t *handshake_reply_out,
- uint8_t *key_out,
- size_t key_out_len);
+/** A parsed CREATE, CREATE_FAST, or CREATE2 cell. */
+typedef struct create_cell_t {
+ /** The cell command. One of CREATE{,_FAST,2} */
+ uint8_t cell_type;
+ /** One of the ONION_HANDSHAKE_TYPE_* values */
+ uint16_t handshake_type;
+ /** The number of bytes used in <b>onionskin</b>. */
+ uint16_t handshake_len;
+ /** The client-side message for the circuit creation handshake. */
+ uint8_t onionskin[CELL_PAYLOAD_SIZE - 4];
+} create_cell_t;
-void clear_pending_onions(void);
+/** A parsed CREATED, CREATED_FAST, or CREATED2 cell. */
+typedef struct created_cell_t {
+ /** The cell command. One of CREATED{,_FAST,2} */
+ uint8_t cell_type;
+ /** The number of bytes used in <b>reply</b>. */
+ uint16_t handshake_len;
+ /** The server-side message for the circuit creation handshake. */
+ uint8_t reply[CELL_PAYLOAD_SIZE - 2];
+} created_cell_t;
+
+/** A parsed RELAY_EXTEND or RELAY_EXTEND2 cell */
+typedef struct extend_cell_t {
+ /** One of RELAY_EXTEND or RELAY_EXTEND2 */
+ uint8_t cell_type;
+ /** An IPv4 address and port for the node we're connecting to. */
+ tor_addr_port_t orport_ipv4;
+ /** An IPv6 address and port for the node we're connecting to. Not currently
+ * used. */
+ tor_addr_port_t orport_ipv6;
+ /** Identity fingerprint of the node we're conecting to.*/
+ uint8_t node_id[DIGEST_LEN];
+ /** 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. */
+ create_cell_t create_cell;
+} extend_cell_t;
+
+/** A parsed RELAY_EXTEND or RELAY_EXTEND2 cell */
+typedef struct extended_cell_t {
+ /** One of RELAY_EXTENDED or RELAY_EXTENDED2. */
+ uint8_t cell_type;
+ /** The "created cell" embedded in this extended cell. */
+ created_cell_t created_cell;
+} extended_cell_t;
+
+int create_cell_parse(create_cell_t *cell_out, const cell_t *cell_in);
+int created_cell_parse(created_cell_t *cell_out, const cell_t *cell_in);
+int extend_cell_parse(extend_cell_t *cell_out, const uint8_t command,
+ const uint8_t *payload_in, size_t payload_len);
+int extended_cell_parse(extended_cell_t *cell_out, const uint8_t command,
+ const uint8_t *payload_in, size_t payload_len);
+
+int create_cell_format(cell_t *cell_out, const create_cell_t *cell_in);
+int create_cell_format_relayed(cell_t *cell_out, const create_cell_t *cell_in);
+int created_cell_format(cell_t *cell_out, const created_cell_t *cell_in);
+int extend_cell_format(uint8_t *command_out, uint16_t *len_out,
+ uint8_t *payload_out, const extend_cell_t *cell_in);
+int extended_cell_format(uint8_t *command_out, uint16_t *len_out,
+ uint8_t *payload_out, const extended_cell_t *cell_in);
#endif
diff --git a/src/or/onion_fast.c b/src/or/onion_fast.c
new file mode 100644
index 0000000000..aa034a8bd6
--- /dev/null
+++ b/src/or/onion_fast.c
@@ -0,0 +1,123 @@
+/* Copyright (c) 2001 Matej Pfajfar.
+ * Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file onion_fast.c
+ * \brief Functions implement the CREATE_FAST circuit handshake.
+ **/
+
+#include "or.h"
+#include "onion_fast.h"
+
+/** Release all state held in <b>victim</b>. */
+void
+fast_handshake_state_free(fast_handshake_state_t *victim)
+{
+ if (! victim)
+ return;
+ memwipe(victim, 0, sizeof(fast_handshake_state_t));
+ tor_free(victim);
+}
+
+/** Create the state needed to perform a CREATE_FAST hasnshake. Return 0
+ * on success, -1 on failure. */
+int
+fast_onionskin_create(fast_handshake_state_t **handshake_state_out,
+ uint8_t *handshake_out)
+{
+ fast_handshake_state_t *s;
+ *handshake_state_out = s = tor_malloc(sizeof(fast_handshake_state_t));
+ if (crypto_rand((char*)s->state, sizeof(s->state)) < 0) {
+ tor_free(s);
+ return -1;
+ }
+ memcpy(handshake_out, s->state, DIGEST_LEN);
+ return 0;
+}
+
+/** Implement the server side of the CREATE_FAST abbreviated handshake. The
+ * client has provided DIGEST_LEN key bytes in <b>key_in</b> ("x"). We
+ * generate a reply of DIGEST_LEN*2 bytes in <b>key_out</b>, consisting of a
+ * new random "y", followed by H(x|y) to check for correctness. We set
+ * <b>key_out_len</b> bytes of key material in <b>key_out</b>.
+ * Return 0 on success, &lt;0 on failure.
+ **/
+int
+fast_server_handshake(const uint8_t *key_in, /* DIGEST_LEN bytes */
+ uint8_t *handshake_reply_out, /* DIGEST_LEN*2 bytes */
+ uint8_t *key_out,
+ size_t key_out_len)
+{
+ uint8_t tmp[DIGEST_LEN+DIGEST_LEN];
+ uint8_t *out = NULL;
+ size_t out_len;
+ int r = -1;
+
+ if (crypto_rand((char*)handshake_reply_out, DIGEST_LEN)<0)
+ return -1;
+
+ memcpy(tmp, key_in, DIGEST_LEN);
+ memcpy(tmp+DIGEST_LEN, handshake_reply_out, DIGEST_LEN);
+ out_len = key_out_len+DIGEST_LEN;
+ out = tor_malloc(out_len);
+ if (crypto_expand_key_material_TAP(tmp, sizeof(tmp), out, out_len)) {
+ goto done;
+ }
+ memcpy(handshake_reply_out+DIGEST_LEN, out, DIGEST_LEN);
+ memcpy(key_out, out+DIGEST_LEN, key_out_len);
+ r = 0;
+ done:
+ memwipe(tmp, 0, sizeof(tmp));
+ memwipe(out, 0, out_len);
+ tor_free(out);
+ return r;
+}
+
+/** Implement the second half of the client side of the CREATE_FAST handshake.
+ * We sent the server <b>handshake_state</b> ("x") already, and the server
+ * told us <b>handshake_reply_out</b> (y|H(x|y)). Make sure that the hash is
+ * correct, and generate key material in <b>key_out</b>. Return 0 on success,
+ * true on failure.
+ *
+ * NOTE: The "CREATE_FAST" handshake path is distinguishable from regular
+ * "onionskin" handshakes, and is not secure if an adversary can see or modify
+ * the messages. Therefore, it should only be used by clients, and only as
+ * the first hop of a circuit (since the first hop is already authenticated
+ * and protected by TLS).
+ */
+int
+fast_client_handshake(const fast_handshake_state_t *handshake_state,
+ const uint8_t *handshake_reply_out,/*DIGEST_LEN*2 bytes*/
+ uint8_t *key_out,
+ size_t key_out_len)
+{
+ uint8_t tmp[DIGEST_LEN+DIGEST_LEN];
+ uint8_t *out;
+ size_t out_len;
+ int r = -1;
+
+ memcpy(tmp, handshake_state->state, DIGEST_LEN);
+ memcpy(tmp+DIGEST_LEN, handshake_reply_out, DIGEST_LEN);
+ out_len = key_out_len+DIGEST_LEN;
+ out = tor_malloc(out_len);
+ if (crypto_expand_key_material_TAP(tmp, sizeof(tmp), out, out_len)) {
+ goto done;
+ }
+ if (tor_memneq(out, handshake_reply_out+DIGEST_LEN, DIGEST_LEN)) {
+ /* H(K) does *not* match. Something fishy. */
+ log_warn(LD_PROTOCOL,"Digest DOES NOT MATCH on fast handshake. "
+ "Bug or attack.");
+ goto done;
+ }
+ memcpy(key_out, out+DIGEST_LEN, key_out_len);
+ r = 0;
+ done:
+ memwipe(tmp, 0, sizeof(tmp));
+ memwipe(out, 0, out_len);
+ tor_free(out);
+ return r;
+}
+
diff --git a/src/or/onion_fast.h b/src/or/onion_fast.h
new file mode 100644
index 0000000000..0c2a475376
--- /dev/null
+++ b/src/or/onion_fast.h
@@ -0,0 +1,38 @@
+/* Copyright (c) 2001 Matej Pfajfar.
+ * Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file onion_fast.h
+ * \brief Header file for onion_fast.c.
+ **/
+
+#ifndef TOR_ONION_FAST_H
+#define TOR_ONION_FAST_H
+
+#define CREATE_FAST_LEN DIGEST_LEN
+#define CREATED_FAST_LEN DIGEST_LEN*2
+
+typedef struct fast_handshake_state_t {
+ uint8_t state[DIGEST_LEN];
+} fast_handshake_state_t;
+
+void fast_handshake_state_free(fast_handshake_state_t *victim);
+
+int fast_onionskin_create(fast_handshake_state_t **handshake_state_out,
+ uint8_t *handshake_out);
+
+int fast_server_handshake(const uint8_t *message_in,
+ uint8_t *handshake_reply_out,
+ uint8_t *key_out,
+ size_t key_out_len);
+
+int fast_client_handshake(const fast_handshake_state_t *handshake_state,
+ const uint8_t *handshake_reply_out,
+ uint8_t *key_out,
+ size_t key_out_len);
+
+#endif
+
diff --git a/src/or/onion_ntor.c b/src/or/onion_ntor.c
new file mode 100644
index 0000000000..9cf7d5dd6e
--- /dev/null
+++ b/src/or/onion_ntor.c
@@ -0,0 +1,295 @@
+/* Copyright (c) 2012-2013, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include "orconfig.h"
+
+#include "crypto.h"
+#define ONION_NTOR_PRIVATE
+#include "onion_ntor.h"
+#include "torlog.h"
+#include "util.h"
+
+/** Free storage held in an ntor handshake state. */
+void
+ntor_handshake_state_free(ntor_handshake_state_t *state)
+{
+ if (!state)
+ return;
+ memwipe(state, 0, sizeof(*state));
+ tor_free(state);
+}
+
+/** Convenience function to represent HMAC_SHA256 as our instantiation of
+ * ntor's "tweaked hash'. Hash the <b>inp_len</b> bytes at <b>inp</b> into
+ * a DIGEST256_LEN-byte digest at <b>out</b>, with the hash changing
+ * depending on the value of <b>tweak</b>. */
+static void
+h_tweak(uint8_t *out,
+ const uint8_t *inp, size_t inp_len,
+ const char *tweak)
+{
+ size_t tweak_len = strlen(tweak);
+ crypto_hmac_sha256((char*)out, tweak, tweak_len, (const char*)inp, inp_len);
+}
+
+/** Wrapper around a set of tweak-values for use with the ntor handshake. */
+typedef struct tweakset_t {
+ const char *t_mac;
+ const char *t_key;
+ const char *t_verify;
+ const char *m_expand;
+} tweakset_t;
+
+/** The tweaks to be used with our handshake. */
+const tweakset_t proto1_tweaks = {
+#define PROTOID "ntor-curve25519-sha256-1"
+#define PROTOID_LEN 24
+ PROTOID ":mac",
+ PROTOID ":key_extract",
+ PROTOID ":verify",
+ PROTOID ":key_expand"
+};
+
+/** Convenience macro: copy <b>len</b> bytes from <b>inp</b> to <b>ptr</b>,
+ * and advance <b>ptr</b> by the number of bytes copied. */
+#define APPEND(ptr, inp, len) \
+ STMT_BEGIN { \
+ memcpy(ptr, (inp), (len)); \
+ ptr += len; \
+ } STMT_END
+
+/**
+ * Compute the first client-side step of the ntor handshake for communicating
+ * with a server whose DIGEST_LEN-byte server identity is <b>router_id</b>,
+ * and whose onion key is <b>router_key</b>. Store the NTOR_ONIONSKIN_LEN-byte
+ * message in <b>onion_skin_out</b>, and store the handshake state in
+ * *<b>handshake_state_out</b>. Return 0 on success, -1 on failure.
+ */
+int
+onion_skin_ntor_create(const uint8_t *router_id,
+ const curve25519_public_key_t *router_key,
+ ntor_handshake_state_t **handshake_state_out,
+ uint8_t *onion_skin_out)
+{
+ ntor_handshake_state_t *state;
+ uint8_t *op;
+
+ state = tor_malloc_zero(sizeof(ntor_handshake_state_t));
+
+ memcpy(state->router_id, router_id, DIGEST_LEN);
+ memcpy(&state->pubkey_B, router_key, sizeof(curve25519_public_key_t));
+ if (curve25519_secret_key_generate(&state->seckey_x, 0) < 0) {
+ tor_free(state);
+ return -1;
+ }
+ curve25519_public_key_generate(&state->pubkey_X, &state->seckey_x);
+
+ op = onion_skin_out;
+ APPEND(op, router_id, DIGEST_LEN);
+ APPEND(op, router_key->public_key, CURVE25519_PUBKEY_LEN);
+ APPEND(op, state->pubkey_X.public_key, CURVE25519_PUBKEY_LEN);
+ tor_assert(op == onion_skin_out + NTOR_ONIONSKIN_LEN);
+
+ *handshake_state_out = state;
+
+ return 0;
+}
+
+#define SERVER_STR "Server"
+#define SERVER_STR_LEN 6
+
+#define SECRET_INPUT_LEN (CURVE25519_PUBKEY_LEN * 3 + \
+ CURVE25519_OUTPUT_LEN * 2 + \
+ DIGEST_LEN + PROTOID_LEN)
+#define AUTH_INPUT_LEN (DIGEST256_LEN + DIGEST_LEN + \
+ CURVE25519_PUBKEY_LEN*3 + \
+ PROTOID_LEN + SERVER_STR_LEN)
+
+/**
+ * Perform the server side of an ntor handshake. Given an
+ * NTOR_ONIONSKIN_LEN-byte message in <b>onion_skin</b>, our own identity
+ * fingerprint as <b>my_node_id</b>, and an associative array mapping public
+ * onion keys to curve25519_keypair_t in <b>private_keys</b>, attempt to
+ * perform the handshake. Use <b>junk_keys</b> if present if the handshake
+ * indicates an unrecognized public key. Write an NTOR_REPLY_LEN-byte
+ * message to send back to the client into <b>handshake_reply_out</b>, and
+ * generate <b>key_out_len</b> bytes of key material in <b>key_out</b>. Return
+ * 0 on success, -1 on failure.
+ */
+int
+onion_skin_ntor_server_handshake(const uint8_t *onion_skin,
+ const di_digest256_map_t *private_keys,
+ const curve25519_keypair_t *junk_keys,
+ const uint8_t *my_node_id,
+ uint8_t *handshake_reply_out,
+ uint8_t *key_out,
+ size_t key_out_len)
+{
+ const tweakset_t *T = &proto1_tweaks;
+ /* Sensitive stack-allocated material. Kept in an anonymous struct to make
+ * it easy to wipe. */
+ struct {
+ uint8_t secret_input[SECRET_INPUT_LEN];
+ uint8_t auth_input[AUTH_INPUT_LEN];
+ curve25519_public_key_t pubkey_X;
+ curve25519_secret_key_t seckey_y;
+ curve25519_public_key_t pubkey_Y;
+ uint8_t verify[DIGEST256_LEN];
+ } s;
+ uint8_t *si = s.secret_input, *ai = s.auth_input;
+ const curve25519_keypair_t *keypair_bB;
+ int bad;
+
+ /* Decode the onion skin */
+ /* XXXX Does this possible early-return business threaten our security? */
+ if (tor_memneq(onion_skin, my_node_id, DIGEST_LEN))
+ return -1;
+ /* Note that on key-not-found, we go through with this operation anyway,
+ * using "junk_keys". This will result in failed authentication, but won't
+ * leak whether we recognized the key. */
+ keypair_bB = dimap_search(private_keys, onion_skin + DIGEST_LEN,
+ (void*)junk_keys);
+ if (!keypair_bB)
+ return -1;
+
+ memcpy(s.pubkey_X.public_key, onion_skin+DIGEST_LEN+DIGEST256_LEN,
+ CURVE25519_PUBKEY_LEN);
+
+ /* Make y, Y */
+ curve25519_secret_key_generate(&s.seckey_y, 0);
+ curve25519_public_key_generate(&s.pubkey_Y, &s.seckey_y);
+
+ /* NOTE: If we ever use a group other than curve25519, or a different
+ * representation for its points, we may need to perform different or
+ * additional checks on X here and on Y in the client handshake, or lose our
+ * security properties. What checks we need would depend on the properties
+ * of the group and its representation.
+ *
+ * In short: if you use anything other than curve25519, this aspect of the
+ * code will need to be reconsidered carefully. */
+
+ /* build secret_input */
+ curve25519_handshake(si, &s.seckey_y, &s.pubkey_X);
+ bad = safe_mem_is_zero(si, CURVE25519_OUTPUT_LEN);
+ si += CURVE25519_OUTPUT_LEN;
+ curve25519_handshake(si, &keypair_bB->seckey, &s.pubkey_X);
+ bad |= safe_mem_is_zero(si, CURVE25519_OUTPUT_LEN);
+ si += CURVE25519_OUTPUT_LEN;
+
+ APPEND(si, my_node_id, DIGEST_LEN);
+ APPEND(si, keypair_bB->pubkey.public_key, CURVE25519_PUBKEY_LEN);
+ APPEND(si, s.pubkey_X.public_key, CURVE25519_PUBKEY_LEN);
+ APPEND(si, s.pubkey_Y.public_key, CURVE25519_PUBKEY_LEN);
+ APPEND(si, PROTOID, PROTOID_LEN);
+ tor_assert(si == s.secret_input + sizeof(s.secret_input));
+
+ /* Compute hashes of secret_input */
+ h_tweak(s.verify, s.secret_input, sizeof(s.secret_input), T->t_verify);
+
+ /* Compute auth_input */
+ APPEND(ai, s.verify, DIGEST256_LEN);
+ APPEND(ai, my_node_id, DIGEST_LEN);
+ APPEND(ai, keypair_bB->pubkey.public_key, CURVE25519_PUBKEY_LEN);
+ APPEND(ai, s.pubkey_Y.public_key, CURVE25519_PUBKEY_LEN);
+ APPEND(ai, s.pubkey_X.public_key, CURVE25519_PUBKEY_LEN);
+ APPEND(ai, PROTOID, PROTOID_LEN);
+ APPEND(ai, SERVER_STR, SERVER_STR_LEN);
+ tor_assert(ai == s.auth_input + sizeof(s.auth_input));
+
+ /* Build the reply */
+ memcpy(handshake_reply_out, s.pubkey_Y.public_key, CURVE25519_PUBKEY_LEN);
+ h_tweak(handshake_reply_out+CURVE25519_PUBKEY_LEN,
+ s.auth_input, sizeof(s.auth_input),
+ T->t_mac);
+
+ /* Generate the key material */
+ crypto_expand_key_material_rfc5869_sha256(
+ s.secret_input, sizeof(s.secret_input),
+ (const uint8_t*)T->t_key, strlen(T->t_key),
+ (const uint8_t*)T->m_expand, strlen(T->m_expand),
+ key_out, key_out_len);
+
+ /* Wipe all of our local state */
+ memwipe(&s, 0, sizeof(s));
+
+ return bad ? -1 : 0;
+}
+
+/**
+ * Perform the final client side of the ntor handshake, using the state in
+ * <b>handshake_state</b> and the server's NTOR_REPLY_LEN-byte reply in
+ * <b>handshake_reply</b>. Generate <b>key_out_len</b> bytes of key material
+ * in <b>key_out</b>. Return 0 on success, -1 on failure.
+ */
+int
+onion_skin_ntor_client_handshake(
+ const ntor_handshake_state_t *handshake_state,
+ const uint8_t *handshake_reply,
+ uint8_t *key_out,
+ size_t key_out_len)
+{
+ const tweakset_t *T = &proto1_tweaks;
+ /* Sensitive stack-allocated material. Kept in an anonymous struct to make
+ * it easy to wipe. */
+ struct {
+ curve25519_public_key_t pubkey_Y;
+ uint8_t secret_input[SECRET_INPUT_LEN];
+ uint8_t verify[DIGEST256_LEN];
+ uint8_t auth_input[AUTH_INPUT_LEN];
+ uint8_t auth[DIGEST256_LEN];
+ } s;
+ uint8_t *ai = s.auth_input, *si = s.secret_input;
+ const uint8_t *auth_candidate;
+ int bad;
+
+ /* Decode input */
+ memcpy(s.pubkey_Y.public_key, handshake_reply, CURVE25519_PUBKEY_LEN);
+ auth_candidate = handshake_reply + CURVE25519_PUBKEY_LEN;
+
+ /* See note in server_handshake above about checking points. The
+ * circumstances under which we'd need to check Y for membership are
+ * different than those under which we'd be checking X. */
+
+ /* Compute secret_input */
+ curve25519_handshake(si, &handshake_state->seckey_x, &s.pubkey_Y);
+ bad = safe_mem_is_zero(si, CURVE25519_OUTPUT_LEN);
+ si += CURVE25519_OUTPUT_LEN;
+ curve25519_handshake(si, &handshake_state->seckey_x,
+ &handshake_state->pubkey_B);
+ bad |= safe_mem_is_zero(si, CURVE25519_OUTPUT_LEN);
+ si += CURVE25519_OUTPUT_LEN;
+ APPEND(si, handshake_state->router_id, DIGEST_LEN);
+ APPEND(si, handshake_state->pubkey_B.public_key, CURVE25519_PUBKEY_LEN);
+ APPEND(si, handshake_state->pubkey_X.public_key, CURVE25519_PUBKEY_LEN);
+ APPEND(si, s.pubkey_Y.public_key, CURVE25519_PUBKEY_LEN);
+ APPEND(si, PROTOID, PROTOID_LEN);
+ tor_assert(si == s.secret_input + sizeof(s.secret_input));
+
+ /* Compute verify from secret_input */
+ h_tweak(s.verify, s.secret_input, sizeof(s.secret_input), T->t_verify);
+
+ /* Compute auth_input */
+ APPEND(ai, s.verify, DIGEST256_LEN);
+ APPEND(ai, handshake_state->router_id, DIGEST_LEN);
+ APPEND(ai, handshake_state->pubkey_B.public_key, CURVE25519_PUBKEY_LEN);
+ APPEND(ai, s.pubkey_Y.public_key, CURVE25519_PUBKEY_LEN);
+ APPEND(ai, handshake_state->pubkey_X.public_key, CURVE25519_PUBKEY_LEN);
+ APPEND(ai, PROTOID, PROTOID_LEN);
+ APPEND(ai, SERVER_STR, SERVER_STR_LEN);
+ tor_assert(ai == s.auth_input + sizeof(s.auth_input));
+
+ /* Compute auth */
+ h_tweak(s.auth, s.auth_input, sizeof(s.auth_input), T->t_mac);
+
+ bad |= tor_memneq(s.auth, auth_candidate, DIGEST256_LEN);
+
+ crypto_expand_key_material_rfc5869_sha256(
+ s.secret_input, sizeof(s.secret_input),
+ (const uint8_t*)T->t_key, strlen(T->t_key),
+ (const uint8_t*)T->m_expand, strlen(T->m_expand),
+ key_out, key_out_len);
+
+ memwipe(&s, 0, sizeof(s));
+ return bad ? -1 : 0;
+}
+
diff --git a/src/or/onion_ntor.h b/src/or/onion_ntor.h
new file mode 100644
index 0000000000..c942e6e0f0
--- /dev/null
+++ b/src/or/onion_ntor.h
@@ -0,0 +1,63 @@
+/* Copyright (c) 2012-2013, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#ifndef TOR_ONION_NTOR_H
+#define TOR_ONION_NTOR_H
+
+#include "torint.h"
+#include "crypto_curve25519.h"
+#include "di_ops.h"
+
+/** State to be maintained by a client between sending an ntor onionskin
+ * and receiving a reply. */
+typedef struct ntor_handshake_state_t ntor_handshake_state_t;
+
+/** Length of an ntor onionskin, as sent from the client to server. */
+#define NTOR_ONIONSKIN_LEN 84
+/** Length of an ntor reply, as sent from server to client. */
+#define NTOR_REPLY_LEN 64
+
+#ifdef CURVE25519_ENABLED
+void ntor_handshake_state_free(ntor_handshake_state_t *state);
+
+int onion_skin_ntor_create(const uint8_t *router_id,
+ const curve25519_public_key_t *router_key,
+ ntor_handshake_state_t **handshake_state_out,
+ uint8_t *onion_skin_out);
+
+int onion_skin_ntor_server_handshake(const uint8_t *onion_skin,
+ const di_digest256_map_t *private_keys,
+ const curve25519_keypair_t *junk_keypair,
+ const uint8_t *my_node_id,
+ uint8_t *handshake_reply_out,
+ uint8_t *key_out,
+ size_t key_out_len);
+
+int onion_skin_ntor_client_handshake(
+ const ntor_handshake_state_t *handshake_state,
+ const uint8_t *handshake_reply,
+ uint8_t *key_out,
+ size_t key_out_len);
+
+#ifdef ONION_NTOR_PRIVATE
+
+/** Storage held by a client while waiting for an ntor reply from a server. */
+struct ntor_handshake_state_t {
+ /** Identity digest of the router we're talking to. */
+ uint8_t router_id[DIGEST_LEN];
+ /** Onion key of the router we're talking to. */
+ curve25519_public_key_t pubkey_B;
+
+ /**
+ * Short-lived keypair for use with this handshake.
+ * @{ */
+ curve25519_secret_key_t seckey_x;
+ curve25519_public_key_t pubkey_X;
+ /** @} */
+};
+#endif
+
+#endif
+
+#endif
+
diff --git a/src/or/onion_tap.c b/src/or/onion_tap.c
new file mode 100644
index 0000000000..3782e75abf
--- /dev/null
+++ b/src/or/onion_tap.c
@@ -0,0 +1,218 @@
+/* Copyright (c) 2001 Matej Pfajfar.
+ * Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file onion_tap.c
+ * \brief Functions to implement the original Tor circuit extension handshake
+ * (a.k.a TAP).
+ *
+ * We didn't call it "TAP" ourselves -- Ian Goldberg named it in "On the
+ * Security of the Tor Authentication Protocol". (Spoiler: it's secure, but
+ * its security is kind of fragile and implementation dependent. Never modify
+ * this implementation without reading and understanding that paper at least.)
+ **/
+
+#include "or.h"
+#include "config.h"
+#include "onion_tap.h"
+#include "rephist.h"
+
+/*----------------------------------------------------------------------*/
+
+/** Given a router's 128 byte public key,
+ * stores the following in onion_skin_out:
+ * - [42 bytes] OAEP padding
+ * - [16 bytes] Symmetric key for encrypting blob past RSA
+ * - [70 bytes] g^x part 1 (inside the RSA)
+ * - [58 bytes] g^x part 2 (symmetrically encrypted)
+ *
+ * Stores the DH private key into handshake_state_out for later completion
+ * of the handshake.
+ *
+ * The meeting point/cookies and auth are zeroed out for now.
+ */
+int
+onion_skin_TAP_create(crypto_pk_t *dest_router_key,
+ crypto_dh_t **handshake_state_out,
+ char *onion_skin_out) /* TAP_ONIONSKIN_CHALLENGE_LEN bytes */
+{
+ char challenge[DH_KEY_LEN];
+ crypto_dh_t *dh = NULL;
+ int dhbytes, pkbytes;
+
+ tor_assert(dest_router_key);
+ tor_assert(handshake_state_out);
+ tor_assert(onion_skin_out);
+ *handshake_state_out = NULL;
+ memset(onion_skin_out, 0, TAP_ONIONSKIN_CHALLENGE_LEN);
+
+ if (!(dh = crypto_dh_new(DH_TYPE_CIRCUIT)))
+ goto err;
+
+ dhbytes = crypto_dh_get_bytes(dh);
+ pkbytes = (int) crypto_pk_keysize(dest_router_key);
+ tor_assert(dhbytes == 128);
+ tor_assert(pkbytes == 128);
+
+ if (crypto_dh_get_public(dh, challenge, dhbytes))
+ goto err;
+
+ note_crypto_pk_op(ENC_ONIONSKIN);
+
+ /* set meeting point, meeting cookie, etc here. Leave zero for now. */
+ if (crypto_pk_public_hybrid_encrypt(dest_router_key, onion_skin_out,
+ TAP_ONIONSKIN_CHALLENGE_LEN,
+ challenge, DH_KEY_LEN,
+ PK_PKCS1_OAEP_PADDING, 1)<0)
+ goto err;
+
+ memwipe(challenge, 0, sizeof(challenge));
+ *handshake_state_out = dh;
+
+ return 0;
+ err:
+ memwipe(challenge, 0, sizeof(challenge));
+ if (dh) crypto_dh_free(dh);
+ return -1;
+}
+
+/** Given an encrypted DH public key as generated by onion_skin_create,
+ * and the private key for this onion router, generate the reply (128-byte
+ * DH plus the first 20 bytes of shared key material), and store the
+ * next key_out_len bytes of key material in key_out.
+ */
+int
+onion_skin_TAP_server_handshake(
+ /*TAP_ONIONSKIN_CHALLENGE_LEN*/
+ const char *onion_skin,
+ crypto_pk_t *private_key,
+ crypto_pk_t *prev_private_key,
+ /*TAP_ONIONSKIN_REPLY_LEN*/
+ char *handshake_reply_out,
+ char *key_out,
+ size_t key_out_len)
+{
+ char challenge[TAP_ONIONSKIN_CHALLENGE_LEN];
+ crypto_dh_t *dh = NULL;
+ ssize_t len;
+ char *key_material=NULL;
+ size_t key_material_len=0;
+ int i;
+ crypto_pk_t *k;
+
+ len = -1;
+ for (i=0;i<2;++i) {
+ k = i==0?private_key:prev_private_key;
+ if (!k)
+ break;
+ note_crypto_pk_op(DEC_ONIONSKIN);
+ len = crypto_pk_private_hybrid_decrypt(k, challenge,
+ TAP_ONIONSKIN_CHALLENGE_LEN,
+ onion_skin,
+ TAP_ONIONSKIN_CHALLENGE_LEN,
+ PK_PKCS1_OAEP_PADDING,0);
+ if (len>0)
+ break;
+ }
+ if (len<0) {
+ log_info(LD_PROTOCOL,
+ "Couldn't decrypt onionskin: client may be using old onion key");
+ goto err;
+ } else if (len != DH_KEY_LEN) {
+ log_warn(LD_PROTOCOL, "Unexpected onionskin length after decryption: %ld",
+ (long)len);
+ goto err;
+ }
+
+ dh = crypto_dh_new(DH_TYPE_CIRCUIT);
+ if (!dh) {
+ log_warn(LD_BUG, "Couldn't allocate DH key");
+ goto err;
+ }
+ if (crypto_dh_get_public(dh, handshake_reply_out, DH_KEY_LEN)) {
+ log_info(LD_GENERAL, "crypto_dh_get_public failed.");
+ goto err;
+ }
+
+ key_material_len = DIGEST_LEN+key_out_len;
+ key_material = tor_malloc(key_material_len);
+ len = crypto_dh_compute_secret(LOG_PROTOCOL_WARN, dh, challenge,
+ DH_KEY_LEN, key_material,
+ key_material_len);
+ if (len < 0) {
+ log_info(LD_GENERAL, "crypto_dh_compute_secret failed.");
+ goto err;
+ }
+
+ /* send back H(K|0) as proof that we learned K. */
+ memcpy(handshake_reply_out+DH_KEY_LEN, key_material, DIGEST_LEN);
+
+ /* use the rest of the key material for our shared keys, digests, etc */
+ memcpy(key_out, key_material+DIGEST_LEN, key_out_len);
+
+ memwipe(challenge, 0, sizeof(challenge));
+ memwipe(key_material, 0, key_material_len);
+ tor_free(key_material);
+ crypto_dh_free(dh);
+ return 0;
+ err:
+ memwipe(challenge, 0, sizeof(challenge));
+ if (key_material) {
+ memwipe(key_material, 0, key_material_len);
+ tor_free(key_material);
+ }
+ if (dh) crypto_dh_free(dh);
+
+ return -1;
+}
+
+/** Finish the client side of the DH handshake.
+ * Given the 128 byte DH reply + 20 byte hash as generated by
+ * onion_skin_server_handshake and the handshake state generated by
+ * onion_skin_create, verify H(K) with the first 20 bytes of shared
+ * key material, then generate key_out_len more bytes of shared key
+ * material and store them in key_out.
+ *
+ * After the invocation, call crypto_dh_free on handshake_state.
+ */
+int
+onion_skin_TAP_client_handshake(crypto_dh_t *handshake_state,
+ const char *handshake_reply, /* TAP_ONIONSKIN_REPLY_LEN bytes */
+ char *key_out,
+ size_t key_out_len)
+{
+ ssize_t len;
+ char *key_material=NULL;
+ size_t key_material_len;
+ tor_assert(crypto_dh_get_bytes(handshake_state) == DH_KEY_LEN);
+
+ key_material_len = DIGEST_LEN + key_out_len;
+ key_material = tor_malloc(key_material_len);
+ len = crypto_dh_compute_secret(LOG_PROTOCOL_WARN, handshake_state,
+ handshake_reply, DH_KEY_LEN, key_material,
+ key_material_len);
+ if (len < 0)
+ goto err;
+
+ if (tor_memneq(key_material, handshake_reply+DH_KEY_LEN, DIGEST_LEN)) {
+ /* H(K) does *not* match. Something fishy. */
+ log_warn(LD_PROTOCOL,"Digest DOES NOT MATCH on onion handshake. "
+ "Bug or attack.");
+ goto err;
+ }
+
+ /* use the rest of the key material for our shared keys, digests, etc */
+ memcpy(key_out, key_material+DIGEST_LEN, key_out_len);
+
+ memwipe(key_material, 0, key_material_len);
+ tor_free(key_material);
+ return 0;
+ err:
+ memwipe(key_material, 0, key_material_len);
+ tor_free(key_material);
+ return -1;
+}
+
diff --git a/src/or/onion_tap.h b/src/or/onion_tap.h
new file mode 100644
index 0000000000..b978b66737
--- /dev/null
+++ b/src/or/onion_tap.h
@@ -0,0 +1,37 @@
+/* Copyright (c) 2001 Matej Pfajfar.
+ * Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file onion_tap.h
+ * \brief Header file for onion_tap.c.
+ **/
+
+#ifndef TOR_ONION_TAP_H
+#define TOR_ONION_TAP_H
+
+#define TAP_ONIONSKIN_CHALLENGE_LEN (PKCS1_OAEP_PADDING_OVERHEAD+\
+ CIPHER_KEY_LEN+\
+ DH_KEY_LEN)
+#define TAP_ONIONSKIN_REPLY_LEN (DH_KEY_LEN+DIGEST_LEN)
+
+int onion_skin_TAP_create(crypto_pk_t *router_key,
+ crypto_dh_t **handshake_state_out,
+ char *onion_skin_out);
+
+int onion_skin_TAP_server_handshake(const char *onion_skin,
+ crypto_pk_t *private_key,
+ crypto_pk_t *prev_private_key,
+ char *handshake_reply_out,
+ char *key_out,
+ size_t key_out_len);
+
+int onion_skin_TAP_client_handshake(crypto_dh_t *handshake_state,
+ const char *handshake_reply,
+ char *key_out,
+ size_t key_out_len);
+
+#endif
+
diff --git a/src/or/or.h b/src/or/or.h
index bc2cdae6fe..a0a921a9f4 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -81,7 +81,6 @@
#include <process.h>
#include <direct.h>
#include <windows.h>
-#define snprintf _snprintf
#endif
#ifdef USE_BUFFEREVENTS
@@ -99,6 +98,7 @@
#include "compat_libevent.h"
#include "ht.h"
#include "replaycache.h"
+#include "crypto_curve25519.h"
/* These signals are defined to help handle_control_signal work.
*/
@@ -279,6 +279,7 @@ typedef enum {
#define CPUWORKER_STATE_MAX_ 2
#define CPUWORKER_TASK_ONION CPUWORKER_STATE_BUSY_ONION
+#define CPUWORKER_TASK_SHUTDOWN 255
#define OR_CONN_STATE_MIN_ 1
/** State for a connection to an OR: waiting for connect() to finish. */
@@ -520,7 +521,9 @@ typedef enum {
#define CIRCUIT_PURPOSE_TESTING 18
/** A controller made this circuit and Tor should not use it. */
#define CIRCUIT_PURPOSE_CONTROLLER 19
-#define CIRCUIT_PURPOSE_MAX_ 19
+/** This circuit is used for path bias probing only */
+#define CIRCUIT_PURPOSE_PATH_BIAS_TESTING 20
+#define CIRCUIT_PURPOSE_MAX_ 20
/** A catch-all for unrecognized purposes. Currently we don't expect
* to make or see any circuits with this purpose. */
#define CIRCUIT_PURPOSE_UNKNOWN 255
@@ -560,6 +563,8 @@ typedef enum {
#define RELAY_COMMAND_RESOLVE 11
#define RELAY_COMMAND_RESOLVED 12
#define RELAY_COMMAND_BEGIN_DIR 13
+#define RELAY_COMMAND_EXTEND2 14
+#define RELAY_COMMAND_EXTENDED2 15
#define RELAY_COMMAND_ESTABLISH_INTRO 32
#define RELAY_COMMAND_ESTABLISH_RENDEZVOUS 33
@@ -826,6 +831,8 @@ typedef enum {
#define CELL_VERSIONS 7
#define CELL_NETINFO 8
#define CELL_RELAY_EARLY 9
+#define CELL_CREATE2 10
+#define CELL_CREATED2 11
#define CELL_VPADDING 128
#define CELL_CERTS 129
@@ -1398,6 +1405,7 @@ typedef struct or_connection_t {
or_handshake_state_t *handshake_state; /**< If we are setting this connection
* up, state information to do so. */
+
time_t timestamp_lastempty; /**< When was the outbuf last completely empty?*/
time_t timestamp_last_added_nonpadding; /** When did we last add a
* non-padding cell to the outbuf? */
@@ -1583,6 +1591,13 @@ typedef struct entry_connection_t {
} entry_connection_t;
+typedef enum {
+ DIR_SPOOL_NONE=0, DIR_SPOOL_SERVER_BY_DIGEST, DIR_SPOOL_SERVER_BY_FP,
+ DIR_SPOOL_EXTRA_BY_DIGEST, DIR_SPOOL_EXTRA_BY_FP,
+ DIR_SPOOL_CACHED_DIR, DIR_SPOOL_NETWORKSTATUS,
+ DIR_SPOOL_MICRODESC, /* NOTE: if we add another entry, add another bit. */
+} dir_spool_source_t;
+
/** Subtype of connection_t for an "directory connection" -- that is, an HTTP
* connection to retrieve or serve directory material. */
typedef struct dir_connection_t {
@@ -1601,12 +1616,8 @@ typedef struct dir_connection_t {
* "spooling" of directory material to the outbuf. Otherwise, we'd have
* to append everything to the outbuf in one enormous chunk. */
/** What exactly are we spooling right now? */
- enum {
- DIR_SPOOL_NONE=0, DIR_SPOOL_SERVER_BY_DIGEST, DIR_SPOOL_SERVER_BY_FP,
- DIR_SPOOL_EXTRA_BY_DIGEST, DIR_SPOOL_EXTRA_BY_FP,
- DIR_SPOOL_CACHED_DIR, DIR_SPOOL_NETWORKSTATUS,
- DIR_SPOOL_MICRODESC, /* NOTE: if we add another entry, add another bit. */
- } dir_spool_src : 3;
+ ENUM_BF(dir_spool_source_t) dir_spool_src : 3;
+
/** If we're fetching descriptors, what router purpose shall we assign
* to them? */
uint8_t router_purpose;
@@ -1782,7 +1793,8 @@ typedef enum {
/** A reference-counted address policy rule. */
typedef struct addr_policy_t {
int refcnt; /**< Reference count */
- addr_policy_action_t policy_type:2;/**< What to do when the policy matches.*/
+ /** What to do when the policy matches.*/
+ ENUM_BF(addr_policy_action_t) policy_type:2;
unsigned int is_private:1; /**< True iff this is the pseudo-address,
* "private". */
unsigned int is_canonical:1; /**< True iff this policy is the canonical
@@ -1850,7 +1862,7 @@ typedef struct download_status_t {
* again? */
uint8_t n_download_failures; /**< Number of failures trying to download the
* most recent descriptor. */
- download_schedule_t schedule : 8;
+ ENUM_BF(download_schedule_t) schedule : 8;
} download_status_t;
/** If n_download_failures is this high, the download can never happen. */
@@ -1929,6 +1941,8 @@ typedef struct {
crypto_pk_t *onion_pkey; /**< Public RSA key for onions. */
crypto_pk_t *identity_pkey; /**< Public RSA key for signing. */
+ /** Public curve25519 key for onions */
+ curve25519_public_key_t *onion_curve25519_pkey;
char *platform; /**< What software/operating system is this OR using? */
@@ -2052,6 +2066,9 @@ typedef struct routerstatus_t {
/** True iff this router is a version that allows DATA cells to arrive on
* a stream before it has sent a CONNECTED cell. */
unsigned int version_supports_optimistic_data:1;
+ /** True iff this router has a version that allows it to accept EXTEND2
+ * cells */
+ unsigned int version_supports_extend2_cells:1;
unsigned int has_bandwidth:1; /**< The vote/consensus had bw info */
unsigned int has_exitsummary:1; /**< The vote/consensus had exit summaries */
@@ -2114,7 +2131,7 @@ typedef struct microdesc_t {
*/
time_t last_listed;
/** Where is this microdescriptor currently stored? */
- saved_location_t saved_location : 3;
+ ENUM_BF(saved_location_t) saved_location : 3;
/** If true, do not attempt to cache this microdescriptor on disk. */
unsigned int no_save : 1;
/** If true, this microdesc has an entry in the microdesc_map */
@@ -2142,6 +2159,8 @@ typedef struct microdesc_t {
/** As routerinfo_t.onion_pkey */
crypto_pk_t *onion_pkey;
+ /** As routerinfo_t.onion_curve25519_pkey */
+ curve25519_public_key_t *onion_curve25519_pkey;
/** As routerinfo_t.ipv6_add */
tor_addr_t ipv6_addr;
/** As routerinfo_t.ipv6_orport */
@@ -2362,8 +2381,8 @@ typedef enum {
/** A common structure to hold a v3 network status vote, or a v3 network
* status consensus. */
typedef struct networkstatus_t {
- networkstatus_type_t type : 8; /**< Vote, consensus, or opinion? */
- consensus_flavor_t flavor : 8; /**< If a consensus, what kind? */
+ ENUM_BF(networkstatus_type_t) type : 8; /**< Vote, consensus, or opinion? */
+ ENUM_BF(consensus_flavor_t) flavor : 8; /**< If a consensus, what kind? */
time_t published; /**< Vote only: Time when vote was written. */
time_t valid_after; /**< Time after which this vote or consensus applies. */
time_t fresh_until; /**< Time before which this is the most recent vote or
@@ -2501,6 +2520,9 @@ typedef struct extend_info_t {
uint16_t port; /**< OR port. */
tor_addr_t addr; /**< IP address. */
crypto_pk_t *onion_key; /**< Current onionskin key. */
+#ifdef CURVE25519_ENABLED
+ curve25519_public_key_t curve25519_onion_key;
+#endif
} extend_info_t;
/** Certificate for v3 directory protocol: binds long-term authority identity
@@ -2557,6 +2579,21 @@ typedef enum {
#define CRYPT_PATH_MAGIC 0x70127012u
+struct fast_handshake_state_t;
+struct ntor_handshake_state_t;
+#define ONION_HANDSHAKE_TYPE_TAP 0x0000
+#define ONION_HANDSHAKE_TYPE_FAST 0x0001
+#define ONION_HANDSHAKE_TYPE_NTOR 0x0002
+#define MAX_ONION_HANDSHAKE_TYPE 0x0002
+typedef struct {
+ uint16_t tag;
+ union {
+ struct fast_handshake_state_t *fast;
+ crypto_dh_t *tap;
+ struct ntor_handshake_state_t *ntor;
+ } u;
+} onion_handshake_state_t;
+
/** Holds accounting information for a single step in the layered encryption
* performed by a circuit. Used only at the client edge of a circuit. */
typedef struct crypt_path_t {
@@ -2575,17 +2612,15 @@ typedef struct crypt_path_t {
/** Digest state for cells heading away from the OR at this step. */
crypto_digest_t *b_digest;
- /** Current state of Diffie-Hellman key negotiation with the OR at this
+ /** Current state of the handshake as performed with the OR at this
* step. */
- crypto_dh_t *dh_handshake_state;
- /** Current state of 'fast' (non-PK) key negotiation with the OR at this
- * step. Used to save CPU when TLS is already providing all the
- * authentication, secrecy, and integrity we need, and we're already
- * distinguishable from an OR.
- */
- uint8_t fast_handshake_state[DIGEST_LEN];
+ onion_handshake_state_t handshake_state;
+ /** Diffie-hellman handshake state for performing an introduction
+ * operations */
+ crypto_dh_t *rend_dh_handshake_state;
+
/** Negotiated key material shared with the OR at this step. */
- char handshake_digest[DIGEST_LEN];/* KH in tor-spec.txt */
+ char rend_circ_nonce[DIGEST_LEN];/* KH in tor-spec.txt */
/** Information to extend to the OR at this step. */
extend_info_t *extend_info;
@@ -2626,10 +2661,6 @@ typedef struct {
#define CPATH_KEY_MATERIAL_LEN (20*2+16*2)
#define DH_KEY_LEN DH_BYTES
-#define ONIONSKIN_CHALLENGE_LEN (PKCS1_OAEP_PADDING_OVERHEAD+\
- CIPHER_KEY_LEN+\
- DH_KEY_LEN)
-#define ONIONSKIN_REPLY_LEN (DH_KEY_LEN+DIGEST_LEN)
/** Information used to build a circuit. */
typedef struct {
@@ -2661,6 +2692,8 @@ typedef struct {
#define ORIGIN_CIRCUIT_MAGIC 0x35315243u
#define OR_CIRCUIT_MAGIC 0x98ABC04Fu
+struct create_cell_t;
+
/**
* A circuit is a path over the onion routing
* network. Applications can connect to one end of the circuit, and can
@@ -2735,10 +2768,8 @@ typedef struct circuit_t {
* more. */
int deliver_window;
- /** For storage while n_chan is pending
- * (state CIRCUIT_STATE_CHAN_WAIT). When defined, it is always
- * length ONIONSKIN_CHALLENGE_LEN. */
- char *n_chan_onionskin;
+ /** For storage while n_chan is pending (state CIRCUIT_STATE_CHAN_WAIT). */
+ struct create_cell_t *n_chan_create_cell;
/** When did circuit construction actually begin (ie send the
* CREATE cell or begin cannibalization).
@@ -2796,8 +2827,18 @@ typedef struct circuit_t {
/**
* Describes the circuit building process in simplified terms based
- * on the path bias accounting state for a circuit. Created to prevent
- * overcounting due to unknown cases of circuit reuse. See Bug #6475.
+ * on the path bias accounting state for a circuit.
+ *
+ * NOTE: These state values are enumerated in the order for which we
+ * expect circuits to transition through them. If you add states,
+ * you need to preserve this overall ordering. The various pathbias
+ * state transition and accounting functions (pathbias_mark_* and
+ * pathbias_count_*) contain ordinal comparisons to enforce proper
+ * state transitions for corrections.
+ *
+ * This state machine and the associated logic was created to prevent
+ * miscounting due to unknown cases of circuit reuse. See also tickets
+ * #6475 and #7802.
*/
typedef enum {
/** This circuit is "new". It has not yet completed a first hop
@@ -2808,7 +2849,7 @@ typedef enum {
PATH_STATE_BUILD_ATTEMPTED = 1,
/** This circuit has been completely built */
PATH_STATE_BUILD_SUCCEEDED = 2,
- /** Did any SOCKS streams or hidserv introductions actually succeed on
+ /** Did we try to attach any SOCKS streams or hidserv introductions to
* this circuit?
*
* Note: If we ever implement end-to-end stream timing through test
@@ -2816,13 +2857,28 @@ typedef enum {
* (or any other automatic streams) because the adversary could
* just tag at a later point.
*/
- PATH_STATE_USE_SUCCEEDED = 3,
+ PATH_STATE_USE_ATTEMPTED = 3,
+ /** Did any SOCKS streams or hidserv introductions actually succeed on
+ * this circuit?
+ *
+ * If any streams detatch/fail from this circuit, the code transitions
+ * the circuit back to PATH_STATE_USE_ATTEMPTED to ensure we probe. See
+ * pathbias_mark_use_rollback() for that.
+ */
+ PATH_STATE_USE_SUCCEEDED = 4,
/**
* This is a special state to indicate that we got a corrupted
* relay cell on a circuit and we don't intend to probe it.
*/
- PATH_STATE_USE_FAILED = 4,
+ PATH_STATE_USE_FAILED = 5,
+
+ /**
+ * This is a special state to indicate that we already counted
+ * the circuit. Used to guard against potential state machine
+ * violations.
+ */
+ PATH_STATE_ALREADY_COUNTED = 6,
} path_state_t;
/** An origin_circuit_t holds data necessary to build and use a circuit.
@@ -2858,9 +2914,32 @@ typedef struct origin_circuit_t {
* cannibalized circuits. */
unsigned int has_opened : 1;
- /** Kludge to help us prevent the warn in bug #6475 and eventually
- * debug why we are not seeing first hops in some cases. */
- path_state_t path_state : 3;
+ /**
+ * Path bias state machine. Used to ensure integrity of our
+ * circuit building and usage accounting. See path_state_t
+ * for more details.
+ */
+ ENUM_BF(path_state_t) path_state : 3;
+
+ /**
+ * Tristate variable to guard against pathbias miscounting
+ * due to circuit purpose transitions changing the decision
+ * of pathbias_should_count(). This variable is informational
+ * only. The current results of pathbias_should_count() are
+ * the official decision for pathbias accounting.
+ */
+ uint8_t pathbias_shouldcount;
+#define PATHBIAS_SHOULDCOUNT_UNDECIDED 0
+#define PATHBIAS_SHOULDCOUNT_IGNORED 1
+#define PATHBIAS_SHOULDCOUNT_COUNTED 2
+
+ /** For path probing. Store the temporary probe stream ID
+ * for response comparison */
+ streamid_t pathbias_probe_id;
+
+ /** For path probing. Store the temporary probe address nonce
+ * (in host byte order) for response comparison. */
+ uint32_t pathbias_probe_nonce;
/** Set iff this is a hidden-service circuit which has timed out
* according to our current circuit-build timeout, but which has
@@ -2959,9 +3038,10 @@ typedef struct origin_circuit_t {
* ISO_STREAM. */
uint64_t associated_isolated_stream_global_id;
/**@}*/
-
} origin_circuit_t;
+struct onion_queue_t;
+
/** An or_circuit_t holds information needed to implement a circuit at an
* OR. */
typedef struct or_circuit_t {
@@ -2975,6 +3055,9 @@ typedef struct or_circuit_t {
* cells to p_chan. NULL if we have no cells pending, or if we're not
* linked to an OR connection. */
struct circuit_t *prev_active_on_p_chan;
+ /** Pointer to an entry on the onion queue, if this circuit is waiting for a
+ * chance to give an onionskin to a cpuworker. Used only in onion.c */
+ struct onion_queue_t *onionqueue_entry;
/** The circuit_id used in the previous (backward) hop of this circuit. */
circid_t p_circ_id;
@@ -3026,7 +3109,8 @@ typedef struct or_circuit_t {
char rend_token[REND_TOKEN_LEN];
/* ???? move to a subtype or adjunct structure? Wastes 20 bytes -NM */
- char handshake_digest[DIGEST_LEN]; /**< Stores KH for the handshake. */
+ /** Stores KH for the handshake. */
+ char rend_circ_nonce[DIGEST_LEN];/* KH in tor-spec.txt */
/** How many more relay_early cells can we send on this circuit, according
* to the specification? */
@@ -3457,9 +3541,7 @@ typedef struct {
* and try a new circuit if the stream has been
* waiting for this many seconds. If zero, use
* our default internal timeout schedule. */
- int MaxOnionsPending; /**< How many circuit CREATE requests do we allow
- * to wait simultaneously before we start dropping
- * them? */
+ int MaxOnionQueueDelay; /**<DOCDOC*/
int NewCircuitPeriod; /**< How long do we use a circuit before building
* a new one? */
int MaxCircuitDirtiness; /**< Never use circs that were first used more than
@@ -3801,6 +3883,11 @@ typedef struct {
char *GeoIPFile;
char *GeoIPv6File;
+ /** Autobool: if auto, then any attempt to Exclude{Exit,}Nodes a particular
+ * country code will exclude all nodes in ?? and A1. If true, all nodes in
+ * ?? and A1 are excluded. Has no effect if we don't know any GeoIP data. */
+ int GeoIPExcludeUnknown;
+
/** If true, SIGHUP should reload the torrc. Sometimes controllers want
* to make this false. */
int ReloadTorrcOnSIGHUP;
@@ -3868,15 +3955,27 @@ typedef struct {
double PathBiasExtremeRate;
int PathBiasDropGuards;
int PathBiasScaleThreshold;
- int PathBiasScaleFactor;
- int PathBiasMultFactor;
- int PathBiasUseCloseCounts;
+ /** @} */
+
+ /**
+ * Parameters for path-bias use detection
+ * @{
+ */
+ int PathBiasUseThreshold;
+ double PathBiasNoticeUseRate;
+ double PathBiasExtremeUseRate;
+ int PathBiasScaleUseThreshold;
/** @} */
int IPv6Exit; /**< Do we support exiting to IPv6 addresses? */
char *TLSECGroup; /**< One of "P256", "P224", or nil for auto */
+ /** Autobool: should we use the ntor handshake if we can? */
+ int UseNTorHandshake;
+
+ /** Fraction: */
+ double PathsNeededToBuildCircuits;
} or_options_t;
/** Persistent state for an onion router, as saved to disk. */
diff --git a/src/or/policies.c b/src/or/policies.c
index 27cdd84aff..9696b8123b 100644
--- a/src/or/policies.c
+++ b/src/or/policies.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -374,7 +374,7 @@ addr_is_in_cc_list(uint32_t addr, const smartlist_t *cc_list)
tor_addr_from_ipv4h(&tar, addr);
country = geoip_get_country_by_addr(&tar);
name = geoip_get_country_name(country);
- return smartlist_string_isin_case(cc_list, name);
+ return smartlist_contains_string_case(cc_list, name);
}
/** Return 1 if <b>addr</b>:<b>port</b> is permitted to publish to our
@@ -881,7 +881,7 @@ exit_policy_remove_redundancies(smartlist_t *dest)
char p1[POLICY_BUF_LEN], p2[POLICY_BUF_LEN];
policy_write_item(p1, sizeof(p1), tmp, 0);
policy_write_item(p2, sizeof(p2), ap, 0);
- log(LOG_DEBUG, LD_CONFIG, "Removing exit policy %s (%d). It is made "
+ log_debug(LD_CONFIG, "Removing exit policy %s (%d). It is made "
"redundant by %s (%d).", p1, j, p2, i);
smartlist_del_keeporder(dest, j--);
addr_policy_free(tmp);
@@ -910,7 +910,7 @@ exit_policy_remove_redundancies(smartlist_t *dest)
char p1[POLICY_BUF_LEN], p2[POLICY_BUF_LEN];
policy_write_item(p1, sizeof(p1), ap, 0);
policy_write_item(p2, sizeof(p2), tmp, 0);
- log(LOG_DEBUG, LD_CONFIG, "Removing exit policy %s. It is already "
+ log_debug(LD_CONFIG, "Removing exit policy %s. It is already "
"covered by %s.", p1, p2);
smartlist_del_keeporder(dest, i--);
addr_policy_free(ap);
diff --git a/src/or/policies.h b/src/or/policies.h
index d9983e8008..da375c4425 100644
--- a/src/or/policies.h
+++ b/src/or/policies.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/reasons.c b/src/or/reasons.c
index 874a86774b..637f8cdc7d 100644
--- a/src/or/reasons.c
+++ b/src/or/reasons.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -105,7 +105,12 @@ stream_end_reason_to_socks5_response(int reason)
case END_STREAM_REASON_DESTROY:
return SOCKS5_GENERAL_ERROR;
case END_STREAM_REASON_DONE:
- return SOCKS5_SUCCEEDED;
+ /* Note that 'DONE' usually indicates a successful close from the other
+ * side of the stream... but if we receive it before a connected cell --
+ * that is, before we have sent a SOCKS reply -- that means that the
+ * other side of the circuit closed the connection before telling us it
+ * was complete. */
+ return SOCKS5_CONNECTION_REFUSED;
case END_STREAM_REASON_TIMEOUT:
return SOCKS5_TTL_EXPIRED;
case END_STREAM_REASON_NOROUTE:
diff --git a/src/or/reasons.h b/src/or/reasons.h
index 0dbf5aa693..fe7e67722a 100644
--- a/src/or/reasons.h
+++ b/src/or/reasons.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/relay.c b/src/or/relay.c
index 696a411972..5d06fd93fd 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -27,6 +27,7 @@
#include "mempool.h"
#include "networkstatus.h"
#include "nodelist.h"
+#include "onion.h"
#include "policies.h"
#include "reasons.h"
#include "relay.h"
@@ -185,7 +186,17 @@ circuit_receive_relay_cell(cell_t *cell, circuit_t *circ,
}
if (recognized) {
- edge_connection_t *conn = relay_lookup_conn(circ, cell, cell_direction,
+ edge_connection_t *conn = NULL;
+
+ if (circ->purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) {
+ pathbias_check_probe_response(circ, cell);
+
+ /* We need to drop this cell no matter what to avoid code that expects
+ * a certain purpose (such as the hidserv code). */
+ return 0;
+ }
+
+ conn = relay_lookup_conn(circ, cell, cell_direction,
layer_hint);
if (cell_direction == CELL_DIRECTION_OUT) {
++stats_n_relay_cells_delivered;
@@ -221,7 +232,15 @@ circuit_receive_relay_cell(cell_t *cell, circuit_t *circ,
} else {
log_fn(LOG_PROTOCOL_WARN, LD_OR,
"Dropping unrecognized inbound cell on origin circuit.");
- return 0;
+ /* If we see unrecognized cells on path bias testing circs,
+ * it's bad mojo. Those circuits need to die.
+ * XXX: Shouldn't they always die? */
+ if (circ->purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) {
+ TO_ORIGIN_CIRCUIT(circ)->path_state = PATH_STATE_USE_FAILED;
+ return -END_CIRC_REASON_TORPROTOCOL;
+ } else {
+ return 0;
+ }
}
if (!chan) {
@@ -571,6 +590,7 @@ relay_send_command_from_edge(streamid_t stream_id, circuit_t *circ,
origin_circuit_t *origin_circ = TO_ORIGIN_CIRCUIT(circ);
if (origin_circ->remaining_relay_early_cells > 0 &&
(relay_command == RELAY_COMMAND_EXTEND ||
+ relay_command == RELAY_COMMAND_EXTEND2 ||
cpath_layer != origin_circ->cpath)) {
/* If we've got any relay_early cells left and (we're sending
* an extend cell or we're not talking to the first hop), use
@@ -584,7 +604,8 @@ relay_send_command_from_edge(streamid_t stream_id, circuit_t *circ,
* task 878. */
origin_circ->relay_early_commands[
origin_circ->relay_early_cells_sent++] = relay_command;
- } else if (relay_command == RELAY_COMMAND_EXTEND) {
+ } else if (relay_command == RELAY_COMMAND_EXTEND ||
+ relay_command == RELAY_COMMAND_EXTEND2) {
/* If no RELAY_EARLY cells can be sent over this circuit, log which
* commands have been sent as RELAY_EARLY cells before; helps debug
* task 878. */
@@ -689,7 +710,7 @@ connection_ap_process_end_not_open(
struct in_addr in;
node_t *exitrouter;
int reason = *(cell->payload+RELAY_HEADER_SIZE);
- int control_reason = reason | END_STREAM_REASON_FLAG_REMOTE;
+ int control_reason;
edge_connection_t *edge_conn = ENTRY_TO_EDGE_CONN(conn);
(void) layer_hint; /* unused */
@@ -709,11 +730,17 @@ connection_ap_process_end_not_open(
* We rely on recognized+digest being strong enough to make
* tags unlikely to allow us to get tagged, yet 'recognized'
* reason codes here. */
- circ->path_state = PATH_STATE_USE_SUCCEEDED;
+ pathbias_mark_use_success(circ);
}
}
- if (rh->length > 0 && edge_reason_is_retriable(reason) &&
+ if (rh->length == 0) {
+ reason = END_STREAM_REASON_MISC;
+ }
+
+ control_reason = reason | END_STREAM_REASON_FLAG_REMOTE;
+
+ if (edge_reason_is_retriable(reason) &&
/* avoid retry if rend */
!connection_edge_is_rendezvous_stream(edge_conn)) {
const char *chosen_exit_digest =
@@ -1155,6 +1182,23 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
return - END_CIRC_REASON_TORPROTOCOL;
}
+ if (rh.stream_id == 0) {
+ switch (rh.command) {
+ case RELAY_COMMAND_BEGIN:
+ case RELAY_COMMAND_CONNECTED:
+ case RELAY_COMMAND_DATA:
+ case RELAY_COMMAND_END:
+ case RELAY_COMMAND_RESOLVE:
+ case RELAY_COMMAND_RESOLVED:
+ case RELAY_COMMAND_BEGIN_DIR:
+ log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL, "Relay command %d with zero "
+ "stream_id. Dropping.", (int)rh.command);
+ return 0;
+ default:
+ ;
+ }
+ }
+
/* either conn is NULL, in which case we've got a control cell, or else
* conn points to the recognized stream. */
@@ -1282,7 +1326,8 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
connection_mark_and_flush(TO_CONN(conn));
}
return 0;
- case RELAY_COMMAND_EXTEND: {
+ case RELAY_COMMAND_EXTEND:
+ case RELAY_COMMAND_EXTEND2: {
static uint64_t total_n_extend=0, total_nonearly=0;
total_n_extend++;
if (rh.stream_id) {
@@ -1317,17 +1362,27 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
return circuit_extend(cell, circ);
}
case RELAY_COMMAND_EXTENDED:
+ case RELAY_COMMAND_EXTENDED2:
if (!layer_hint) {
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"'extended' unsupported at non-origin. Dropping.");
return 0;
}
log_debug(domain,"Got an extended cell! Yay.");
- if ((reason = circuit_finish_handshake(TO_ORIGIN_CIRCUIT(circ),
- CELL_CREATED,
- cell->payload+RELAY_HEADER_SIZE)) < 0) {
- log_warn(domain,"circuit_finish_handshake failed.");
- return reason;
+ {
+ extended_cell_t extended_cell;
+ if (extended_cell_parse(&extended_cell, rh.command,
+ (const uint8_t*)cell->payload+RELAY_HEADER_SIZE,
+ rh.length)<0) {
+ log_warn(LD_PROTOCOL,
+ "Can't parse EXTENDED cell; killing circuit.");
+ return -END_CIRC_REASON_TORPROTOCOL;
+ }
+ if ((reason = circuit_finish_handshake(TO_ORIGIN_CIRCUIT(circ),
+ &extended_cell.created_cell)) < 0) {
+ log_warn(domain,"circuit_finish_handshake failed.");
+ return reason;
+ }
}
if ((reason=circuit_send_next_onion_skin(TO_ORIGIN_CIRCUIT(circ)))<0) {
log_info(domain,"circuit_send_next_onion_skin() failed.");
@@ -1394,7 +1449,8 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
/*XXXX024: Downgrade this back to LOG_PROTOCOL_WARN after a while*/
log_fn(LOG_WARN, LD_PROTOCOL,
"Bug/attack: unexpected sendme cell from client. "
- "Closing circ.");
+ "Closing circ (window %d).",
+ circ->package_window);
return -END_CIRC_REASON_TORPROTOCOL;
}
circ->package_window += CIRCWINDOW_INCREMENT;
@@ -1974,8 +2030,9 @@ dump_cell_pool_usage(int severity)
n_cells += TO_OR_CIRCUIT(c)->p_chan_cells.n;
++n_circs;
}
- log(severity, LD_MM, "%d cells allocated on %d circuits. %d cells leaked.",
- n_cells, n_circs, total_cells_allocated - n_cells);
+ tor_log(severity, LD_MM,
+ "%d cells allocated on %d circuits. %d cells leaked.",
+ n_cells, n_circs, total_cells_allocated - n_cells);
mp_pool_log_status(cell_pool, severity);
}
diff --git a/src/or/relay.h b/src/or/relay.h
index 57400fdbd5..d8da9ea1bd 100644
--- a/src/or/relay.h
+++ b/src/or/relay.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/rendclient.c b/src/or/rendclient.c
index 88241a4b2c..61e3b917e3 100644
--- a/src/or/rendclient.c
+++ b/src/or/rendclient.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -66,6 +66,14 @@ rend_client_send_establish_rendezvous(origin_circuit_t *circ)
circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_INTERNAL);
return -1;
}
+
+ /* Set timestamp_dirty, because circuit_expire_building expects it,
+ * and the rend cookie also means we've used the circ. */
+ circ->base_.timestamp_dirty = time(NULL);
+
+ /* We've attempted to use this circuit. Probe it if we fail */
+ pathbias_count_use_attempt(circ);
+
if (relay_send_command_from_edge(0, TO_CIRCUIT(circ),
RELAY_COMMAND_ESTABLISH_RENDEZVOUS,
circ->rend_data->rend_cookie,
@@ -100,6 +108,7 @@ rend_client_reextend_intro_circuit(origin_circuit_t *circ)
circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_INTERNAL);
return -1;
}
+ // XXX: should we not re-extend if hs_circ_has_timed_out?
if (circ->remaining_relay_early_cells) {
log_info(LD_REND,
"Re-extending circ %d, this time to %s.",
@@ -206,12 +215,12 @@ rend_client_send_introduction(origin_circuit_t *introcirc,
cpath = rendcirc->build_state->pending_final_cpath =
tor_malloc_zero(sizeof(crypt_path_t));
cpath->magic = CRYPT_PATH_MAGIC;
- if (!(cpath->dh_handshake_state = crypto_dh_new(DH_TYPE_REND))) {
+ if (!(cpath->rend_dh_handshake_state = crypto_dh_new(DH_TYPE_REND))) {
log_warn(LD_BUG, "Internal error: couldn't allocate DH.");
status = -2;
goto perm_err;
}
- if (crypto_dh_generate_public(cpath->dh_handshake_state)<0) {
+ if (crypto_dh_generate_public(cpath->rend_dh_handshake_state)<0) {
log_warn(LD_BUG, "Internal error: couldn't generate g^x.");
status = -2;
goto perm_err;
@@ -261,7 +270,7 @@ rend_client_send_introduction(origin_circuit_t *introcirc,
dh_offset = MAX_NICKNAME_LEN+1+REND_COOKIE_LEN;
}
- if (crypto_dh_get_public(cpath->dh_handshake_state, tmp+dh_offset,
+ if (crypto_dh_get_public(cpath->rend_dh_handshake_state, tmp+dh_offset,
DH_KEY_LEN)<0) {
log_warn(LD_BUG, "Internal error: couldn't extract g^x.");
status = -2;
@@ -310,6 +319,8 @@ rend_client_send_introduction(origin_circuit_t *introcirc,
* state. */
introcirc->base_.timestamp_dirty = time(NULL);
+ pathbias_count_use_attempt(introcirc);
+
goto cleanup;
perm_err:
@@ -338,6 +349,32 @@ rend_client_rendcirc_has_opened(origin_circuit_t *circ)
}
}
+/**
+ * Called to close other intro circuits we launched in parallel
+ * due to timeout.
+ */
+static void
+rend_client_close_other_intros(const char *onion_address)
+{
+ circuit_t *c;
+ /* abort parallel intro circs, if any */
+ for (c = circuit_get_global_list_(); c; c = c->next) {
+ if ((c->purpose == CIRCUIT_PURPOSE_C_INTRODUCING ||
+ c->purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT) &&
+ !c->marked_for_close && CIRCUIT_IS_ORIGIN(c)) {
+ origin_circuit_t *oc = TO_ORIGIN_CIRCUIT(c);
+ if (oc->rend_data &&
+ !rend_cmp_service_ids(onion_address,
+ oc->rend_data->onion_address)) {
+ log_info(LD_REND|LD_CIRC, "Closing introduction circuit %d that we "
+ "built in parallel (Purpose %d).", oc->global_identifier,
+ c->purpose);
+ circuit_mark_for_close(c, END_CIRC_REASON_TIMEOUT);
+ }
+ }
+ }
+}
+
/** Called when get an ACK or a NAK for a REND_INTRODUCE1 cell.
*/
int
@@ -363,7 +400,7 @@ rend_client_introduction_acked(origin_circuit_t *circ,
/* For path bias: This circuit was used successfully. Valid
* nacks and acks count. */
- circ->path_state = PATH_STATE_USE_SUCCEEDED;
+ pathbias_mark_use_success(circ);
if (request_len == 0) {
/* It's an ACK; the introduction point relayed our introduction request. */
@@ -389,6 +426,9 @@ rend_client_introduction_acked(origin_circuit_t *circ,
circuit_change_purpose(TO_CIRCUIT(circ),
CIRCUIT_PURPOSE_C_INTRODUCE_ACKED);
circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_FINISHED);
+
+ /* close any other intros launched in parallel */
+ rend_client_close_other_intros(circ->rend_data->onion_address);
} else {
/* It's a NAK; the introduction point didn't relay our request. */
circuit_change_purpose(TO_CIRCUIT(circ), CIRCUIT_PURPOSE_C_INTRODUCING);
@@ -867,7 +907,7 @@ rend_client_rendezvous_acked(origin_circuit_t *circ, const uint8_t *request,
* Waiting any longer opens us up to attacks from Bob. He could induce
* Alice to attempt to connect to his hidden service and never reply
* to her rend requests */
- circ->path_state = PATH_STATE_USE_SUCCEEDED;
+ pathbias_mark_use_success(circ);
/* XXXX This is a pretty brute-force approach. It'd be better to
* attach only the connections that are waiting on this circuit, rather
@@ -907,9 +947,9 @@ rend_client_receive_rendezvous(origin_circuit_t *circ, const uint8_t *request,
tor_assert(circ->build_state);
tor_assert(circ->build_state->pending_final_cpath);
hop = circ->build_state->pending_final_cpath;
- tor_assert(hop->dh_handshake_state);
+ tor_assert(hop->rend_dh_handshake_state);
if (crypto_dh_compute_secret(LOG_PROTOCOL_WARN,
- hop->dh_handshake_state, (char*)request,
+ hop->rend_dh_handshake_state, (char*)request,
DH_KEY_LEN,
keys, DIGEST_LEN+CPATH_KEY_MATERIAL_LEN)<0) {
log_warn(LD_GENERAL, "Couldn't complete DH handshake.");
@@ -925,8 +965,8 @@ rend_client_receive_rendezvous(origin_circuit_t *circ, const uint8_t *request,
goto err;
}
- crypto_dh_free(hop->dh_handshake_state);
- hop->dh_handshake_state = NULL;
+ crypto_dh_free(hop->rend_dh_handshake_state);
+ hop->rend_dh_handshake_state = NULL;
/* All is well. Extend the circuit. */
circuit_change_purpose(TO_CIRCUIT(circ), CIRCUIT_PURPOSE_C_REND_JOINED);
diff --git a/src/or/rendclient.h b/src/or/rendclient.h
index b71fe48be3..1f731d0ae5 100644
--- a/src/or/rendclient.h
+++ b/src/or/rendclient.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c
index 9e306bdf73..79c1a724e4 100644
--- a/src/or/rendcommon.c
+++ b/src/or/rendcommon.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -954,7 +954,7 @@ rend_cache_lookup_entry(const char *query, int version, rend_cache_entry_t **e)
return 1;
}
-/** <b>query</b> is a base-32'ed service id. If it's malformed, return -1.
+/** <b>query</b> is a base32'ed service id. If it's malformed, return -1.
* Else look it up.
* - If it is found, point *desc to it, and write its length into
* *desc_len, and return 1.
diff --git a/src/or/rendcommon.h b/src/or/rendcommon.h
index fe574b152f..189891b747 100644
--- a/src/or/rendcommon.h
+++ b/src/or/rendcommon.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/rendmid.c b/src/or/rendmid.c
index dc2dc1d9e7..1046ce3814 100644
--- a/src/or/rendmid.c
+++ b/src/or/rendmid.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -56,8 +56,8 @@ rend_mid_establish_intro(or_circuit_t *circ, const uint8_t *request,
goto err;
}
- /* Next 20 bytes: Hash of handshake_digest | "INTRODUCE" */
- memcpy(buf, circ->handshake_digest, DIGEST_LEN);
+ /* Next 20 bytes: Hash of rend_circ_nonce | "INTRODUCE" */
+ memcpy(buf, circ->rend_circ_nonce, DIGEST_LEN);
memcpy(buf+DIGEST_LEN, "INTRODUCE", 9);
if (crypto_digest(expected_digest, buf, DIGEST_LEN+9) < 0) {
log_warn(LD_BUG, "Internal error computing digest.");
diff --git a/src/or/rendmid.h b/src/or/rendmid.h
index 74ba16b316..310276ac96 100644
--- a/src/or/rendmid.h
+++ b/src/or/rendmid.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index e70f969e8f..f85ac2c03b 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -931,7 +931,7 @@ rend_service_requires_uptime(rend_service_t *service)
for (i=0; i < smartlist_len(service->ports); ++i) {
p = smartlist_get(service->ports, i);
- if (smartlist_string_num_isin(get_options()->LongLivedPorts,
+ if (smartlist_contains_int_as_string(get_options()->LongLivedPorts,
p->virtual_port))
return 1;
}
@@ -1378,14 +1378,11 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request,
cpath->magic = CRYPT_PATH_MAGIC;
launched->build_state->expiry_time = now + MAX_REND_TIMEOUT;
- cpath->dh_handshake_state = dh;
+ cpath->rend_dh_handshake_state = dh;
dh = NULL;
if (circuit_init_cpath_crypto(cpath,keys+DIGEST_LEN,1)<0)
goto err;
- memcpy(cpath->handshake_digest, keys, DIGEST_LEN);
-
- /* For path bias: This intro circuit was used successfully */
- circuit->path_state = PATH_STATE_USE_SUCCEEDED;
+ memcpy(cpath->rend_circ_nonce, keys, DIGEST_LEN);
goto done;
@@ -2486,7 +2483,7 @@ rend_service_intro_has_opened(origin_circuit_t *circuit)
len = r;
set_uint16(buf, htons((uint16_t)len));
len += 2;
- memcpy(auth, circuit->cpath->prev->handshake_digest, DIGEST_LEN);
+ memcpy(auth, circuit->cpath->prev->rend_circ_nonce, DIGEST_LEN);
memcpy(auth+DIGEST_LEN, "INTRODUCE", 9);
if (crypto_digest(buf+len, auth, DIGEST_LEN+9))
goto err;
@@ -2511,6 +2508,9 @@ rend_service_intro_has_opened(origin_circuit_t *circuit)
goto err;
}
+ /* We've attempted to use this circuit */
+ pathbias_count_use_attempt(circuit);
+
goto done;
err:
@@ -2558,6 +2558,10 @@ rend_service_intro_established(origin_circuit_t *circuit,
"Received INTRO_ESTABLISHED cell on circuit %d for service %s",
circuit->base_.n_circ_id, serviceid);
+ /* Getting a valid INTRODUCE_ESTABLISHED means we've successfully
+ * used the circ */
+ pathbias_mark_use_success(circuit);
+
return 0;
err:
circuit_mark_for_close(TO_CIRCUIT(circuit), END_CIRC_REASON_TORPROTOCOL);
@@ -2589,6 +2593,9 @@ rend_service_rendezvous_has_opened(origin_circuit_t *circuit)
if (!circuit->base_.timestamp_dirty)
circuit->base_.timestamp_dirty = time(NULL);
+ /* This may be redundant */
+ pathbias_count_use_attempt(circuit);
+
hop = circuit->build_state->service_pending_final_cpath_ref->cpath;
base16_encode(hexcookie,9,circuit->rend_data->rend_cookie,4);
@@ -2632,13 +2639,13 @@ rend_service_rendezvous_has_opened(origin_circuit_t *circuit)
/* All we need to do is send a RELAY_RENDEZVOUS1 cell... */
memcpy(buf, circuit->rend_data->rend_cookie, REND_COOKIE_LEN);
- if (crypto_dh_get_public(hop->dh_handshake_state,
+ if (crypto_dh_get_public(hop->rend_dh_handshake_state,
buf+REND_COOKIE_LEN, DH_KEY_LEN)<0) {
log_warn(LD_GENERAL,"Couldn't get DH public key.");
reason = END_CIRC_REASON_INTERNAL;
goto err;
}
- memcpy(buf+REND_COOKIE_LEN+DH_KEY_LEN, hop->handshake_digest,
+ memcpy(buf+REND_COOKIE_LEN+DH_KEY_LEN, hop->rend_circ_nonce,
DIGEST_LEN);
/* Send the cell */
@@ -2651,8 +2658,8 @@ rend_service_rendezvous_has_opened(origin_circuit_t *circuit)
goto err;
}
- crypto_dh_free(hop->dh_handshake_state);
- hop->dh_handshake_state = NULL;
+ crypto_dh_free(hop->rend_dh_handshake_state);
+ hop->rend_dh_handshake_state = NULL;
/* Append the cpath entry. */
hop->state = CPATH_STATE_OPEN;
@@ -2774,7 +2781,7 @@ directory_post_to_hs_dir(rend_service_descriptor_t *renddesc,
char *hs_dir_ip;
const node_t *node;
hs_dir = smartlist_get(responsible_dirs, j);
- if (smartlist_digest_isin(renddesc->successful_uploads,
+ if (smartlist_contains_digest(renddesc->successful_uploads,
hs_dir->identity_digest))
/* Don't upload descriptor if we succeeded in doing so last time. */
continue;
@@ -2809,7 +2816,8 @@ directory_post_to_hs_dir(rend_service_descriptor_t *renddesc,
hs_dir->or_port);
tor_free(hs_dir_ip);
/* Remember successful upload to this router for next time. */
- if (!smartlist_digest_isin(successful_uploads, hs_dir->identity_digest))
+ if (!smartlist_contains_digest(successful_uploads,
+ hs_dir->identity_digest))
smartlist_add(successful_uploads, hs_dir->identity_digest);
}
smartlist_clear(responsible_dirs);
@@ -2827,7 +2835,7 @@ directory_post_to_hs_dir(rend_service_descriptor_t *renddesc,
if (!renddesc->successful_uploads)
renddesc->successful_uploads = smartlist_new();
SMARTLIST_FOREACH(successful_uploads, const char *, c, {
- if (!smartlist_digest_isin(renddesc->successful_uploads, c)) {
+ if (!smartlist_contains_digest(renddesc->successful_uploads, c)) {
char *hsdir_id = tor_memdup(c, DIGEST_LEN);
smartlist_add(renddesc->successful_uploads, hsdir_id);
}
@@ -3060,7 +3068,8 @@ rend_services_introduce(void)
if (intro->time_expiring + INTRO_POINT_EXPIRATION_GRACE_PERIOD > now) {
/* This intro point has completely expired. Remove it, and
* mark the circuit for close if it's still alive. */
- if (intro_circ != NULL) {
+ if (intro_circ != NULL &&
+ intro_circ->base_.purpose != CIRCUIT_PURPOSE_PATH_BIAS_TESTING) {
circuit_mark_for_close(TO_CIRCUIT(intro_circ),
END_CIRC_REASON_FINISHED);
}
@@ -3295,7 +3304,7 @@ rend_service_dump_stats(int severity)
for (i=0; i < smartlist_len(rend_service_list); ++i) {
service = smartlist_get(rend_service_list, i);
- log(severity, LD_GENERAL, "Service configured in \"%s\":",
+ tor_log(severity, LD_GENERAL, "Service configured in \"%s\":",
service->directory);
for (j=0; j < smartlist_len(service->intro_nodes); ++j) {
intro = smartlist_get(service->intro_nodes, j);
@@ -3303,11 +3312,11 @@ rend_service_dump_stats(int severity)
circ = find_intro_circuit(intro, service->pk_digest);
if (!circ) {
- log(severity, LD_GENERAL, " Intro point %d at %s: no circuit",
+ tor_log(severity, LD_GENERAL, " Intro point %d at %s: no circuit",
j, safe_name);
continue;
}
- log(severity, LD_GENERAL, " Intro point %d at %s: circuit is %s",
+ tor_log(severity, LD_GENERAL, " Intro point %d at %s: circuit is %s",
j, safe_name, circuit_state_to_string(circ->base_.state));
}
}
diff --git a/src/or/rendservice.h b/src/or/rendservice.h
index 1671602348..ff31ba6edb 100644
--- a/src/or/rendservice.h
+++ b/src/or/rendservice.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/rephist.c b/src/or/rephist.c
index e61e599d7e..34caa4b518 100644
--- a/src/or/rephist.c
+++ b/src/or/rephist.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -422,6 +422,21 @@ rep_hist_note_router_unreachable(const char *id, time_t when)
}
}
+/** Mark a router with ID <b>id</b> as non-Running, and retroactively declare
+ * that it has never been running: give it no stability and no WFU. */
+void
+rep_hist_make_router_pessimal(const char *id, time_t when)
+{
+ or_history_t *hist = get_or_history(id);
+ tor_assert(hist);
+
+ rep_hist_note_router_unreachable(id, when);
+ mark_or_down(hist, when, 1);
+
+ hist->weighted_run_length = 0;
+ hist->weighted_uptime = 0;
+}
+
/** Helper: Discount all old MTBF data, if it is time to do so. Return
* the time at which we should next discount MTBF data. */
time_t
@@ -648,7 +663,7 @@ rep_hist_dump_stats(time_t now, int severity)
rep_history_clean(now - get_options()->RephistTrackTime);
- log(severity, LD_HIST, "--------------- Dumping history information:");
+ tor_log(severity, LD_HIST, "--------------- Dumping history information:");
for (orhist_it = digestmap_iter_init(history_map);
!digestmap_iter_done(orhist_it);
@@ -673,7 +688,7 @@ rep_hist_dump_stats(time_t now, int severity)
} else {
uptime=1.0;
}
- log(severity, LD_HIST,
+ tor_log(severity, LD_HIST,
"OR %s [%s]: %ld/%ld good connections; uptime %ld/%ld sec (%.2f%%); "
"wmtbf %lu:%02lu:%02lu",
name1, hexdigest1,
@@ -707,7 +722,7 @@ rep_hist_dump_stats(time_t now, int severity)
else
len += ret;
}
- log(severity, LD_HIST, "%s", buffer);
+ tor_log(severity, LD_HIST, "%s", buffer);
}
}
}
@@ -2042,7 +2057,7 @@ note_crypto_pk_op(pk_op_t operation)
void
dump_pk_ops(int severity)
{
- log(severity, LD_HIST,
+ tor_log(severity, LD_HIST,
"PK operations: %lu directory objects signed, "
"%lu directory objects verified, "
"%lu routerdescs signed, "
diff --git a/src/or/rephist.h b/src/or/rephist.h
index 28dec8f902..811cd8d450 100644
--- a/src/or/rephist.h
+++ b/src/or/rephist.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -24,6 +24,8 @@ void rep_hist_dump_stats(time_t now, int severity);
void rep_hist_note_bytes_read(size_t num_bytes, time_t when);
void rep_hist_note_bytes_written(size_t num_bytes, time_t when);
+void rep_hist_make_router_pessimal(const char *id, time_t when);
+
void rep_hist_note_dir_bytes_read(size_t num_bytes, time_t when);
void rep_hist_note_dir_bytes_written(size_t num_bytes, time_t when);
diff --git a/src/or/replaycache.c b/src/or/replaycache.c
index 868b21c9b0..59b98489b7 100644
--- a/src/or/replaycache.c
+++ b/src/or/replaycache.c
@@ -1,4 +1,4 @@
- /* Copyright (c) 2012, The Tor Project, Inc. */
+ /* Copyright (c) 2012-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/*
diff --git a/src/or/replaycache.h b/src/or/replaycache.h
index 757102b960..de20cab627 100644
--- a/src/or/replaycache.h
+++ b/src/or/replaycache.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012, The Tor Project, Inc. */
+/* Copyright (c) 2012-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/router.c b/src/or/router.c
index 1a4cee943d..3fd8b3c070 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define ROUTER_PRIVATE
@@ -13,6 +13,7 @@
#include "config.h"
#include "connection.h"
#include "control.h"
+#include "crypto_curve25519.h"
#include "directory.h"
#include "dirserv.h"
#include "dns.h"
@@ -54,6 +55,13 @@ static crypto_pk_t *onionkey=NULL;
/** Previous private onionskin decryption key: used to decode CREATE cells
* generated by clients that have an older version of our descriptor. */
static crypto_pk_t *lastonionkey=NULL;
+#ifdef CURVE25519_ENABLED
+/** Current private ntor secret key: used to perform the ntor handshake. */
+static curve25519_keypair_t curve25519_onion_key;
+/** Previous private ntor secret key: used to perform the ntor handshake
+ * with clients that have an older version of our descriptor. */
+static curve25519_keypair_t last_curve25519_onion_key;
+#endif
/** Private server "identity key": used to sign directory info and TLS
* certificates. Never changes. */
static crypto_pk_t *server_identitykey=NULL;
@@ -126,6 +134,55 @@ dup_onion_keys(crypto_pk_t **key, crypto_pk_t **last)
tor_mutex_release(key_lock);
}
+#ifdef CURVE25519_ENABLED
+/** Return the current secret onion key for the ntor handshake. Must only
+ * be called from the main thread. */
+static const curve25519_keypair_t *
+get_current_curve25519_keypair(void)
+{
+ return &curve25519_onion_key;
+}
+/** Return a map from KEYID (the key itself) to keypairs for use in the ntor
+ * handshake. Must only be called from the main thread. */
+di_digest256_map_t *
+construct_ntor_key_map(void)
+{
+ di_digest256_map_t *m = NULL;
+
+ dimap_add_entry(&m,
+ curve25519_onion_key.pubkey.public_key,
+ tor_memdup(&curve25519_onion_key,
+ sizeof(curve25519_keypair_t)));
+ if (!tor_mem_is_zero((const char*)
+ last_curve25519_onion_key.pubkey.public_key,
+ CURVE25519_PUBKEY_LEN)) {
+ dimap_add_entry(&m,
+ last_curve25519_onion_key.pubkey.public_key,
+ tor_memdup(&last_curve25519_onion_key,
+ sizeof(curve25519_keypair_t)));
+ }
+
+ return m;
+}
+/** Helper used to deallocate a di_digest256_map_t returned by
+ * construct_ntor_key_map. */
+static void
+ntor_key_map_free_helper(void *arg)
+{
+ curve25519_keypair_t *k = arg;
+ memwipe(k, 0, sizeof(*k));
+ tor_free(k);
+}
+/** Release all storage from a keymap returned by construct_ntor_key_map. */
+void
+ntor_key_map_free(di_digest256_map_t *map)
+{
+ if (!map)
+ return;
+ dimap_free(map, ntor_key_map_free_helper);
+}
+#endif
+
/** Return the time when the onion key was last set. This is either the time
* when the process launched, or the time of the most recent key rotation since
* the process launched.
@@ -253,11 +310,18 @@ void
rotate_onion_key(void)
{
char *fname, *fname_prev;
- crypto_pk_t *prkey;
+ crypto_pk_t *prkey = NULL;
or_state_t *state = get_or_state();
+#ifdef CURVE25519_ENABLED
+ curve25519_keypair_t new_curve25519_keypair;
+#endif
time_t now;
fname = get_datadir_fname2("keys", "secret_onion_key");
fname_prev = get_datadir_fname2("keys", "secret_onion_key.old");
+ if (file_status(fname) == FN_FILE) {
+ if (replace_file(fname, fname_prev))
+ goto error;
+ }
if (!(prkey = crypto_pk_new())) {
log_err(LD_GENERAL,"Error constructing rotated onion key");
goto error;
@@ -266,19 +330,38 @@ rotate_onion_key(void)
log_err(LD_BUG,"Error generating onion key");
goto error;
}
+ if (crypto_pk_write_private_key_to_filename(prkey, fname)) {
+ log_err(LD_FS,"Couldn't write generated onion key to \"%s\".", fname);
+ goto error;
+ }
+#ifdef CURVE25519_ENABLED
+ tor_free(fname);
+ tor_free(fname_prev);
+ fname = get_datadir_fname2("keys", "secret_onion_key_ntor");
+ fname_prev = get_datadir_fname2("keys", "secret_onion_key_ntor.old");
+ if (curve25519_keypair_generate(&new_curve25519_keypair, 1) < 0)
+ goto error;
if (file_status(fname) == FN_FILE) {
if (replace_file(fname, fname_prev))
goto error;
}
- if (crypto_pk_write_private_key_to_filename(prkey, fname)) {
- log_err(LD_FS,"Couldn't write generated onion key to \"%s\".", fname);
+ if (curve25519_keypair_write_to_file(&new_curve25519_keypair, fname,
+ "onion") < 0) {
+ log_err(LD_FS,"Couldn't write curve25519 onion key to \"%s\".",fname);
goto error;
}
+#endif
log_info(LD_GENERAL, "Rotating onion key");
tor_mutex_acquire(key_lock);
crypto_pk_free(lastonionkey);
lastonionkey = onionkey;
onionkey = prkey;
+#ifdef CURVE25519_ENABLED
+ memcpy(&last_curve25519_onion_key, &curve25519_onion_key,
+ sizeof(curve25519_keypair_t));
+ memcpy(&curve25519_onion_key, &new_curve25519_keypair,
+ sizeof(curve25519_keypair_t));
+#endif
now = time(NULL);
state->LastRotatedOnionKey = onionkey_set_at = now;
tor_mutex_release(key_lock);
@@ -290,6 +373,9 @@ rotate_onion_key(void)
if (prkey)
crypto_pk_free(prkey);
done:
+#ifdef CURVE25519_ENABLED
+ memwipe(&new_curve25519_keypair, 0, sizeof(new_curve25519_keypair));
+#endif
tor_free(fname);
tor_free(fname_prev);
}
@@ -305,14 +391,14 @@ init_key_from_file(const char *fname, int generate, int severity)
crypto_pk_t *prkey = NULL;
if (!(prkey = crypto_pk_new())) {
- log(severity, LD_GENERAL,"Error constructing key");
+ tor_log(severity, LD_GENERAL,"Error constructing key");
goto error;
}
switch (file_status(fname)) {
case FN_DIR:
case FN_ERROR:
- log(severity, LD_FS,"Can't read key from \"%s\"", fname);
+ tor_log(severity, LD_FS,"Can't read key from \"%s\"", fname);
goto error;
case FN_NOENT:
if (generate) {
@@ -320,8 +406,8 @@ init_key_from_file(const char *fname, int generate, int severity)
if (try_locking(get_options(), 0)<0) {
/* Make sure that --list-fingerprint only creates new keys
* if there is no possibility for a deadlock. */
- log(severity, LD_FS, "Another Tor process has locked \"%s\". Not "
- "writing any new keys.", fname);
+ tor_log(severity, LD_FS, "Another Tor process has locked \"%s\". "
+ "Not writing any new keys.", fname);
/*XXXX The 'other process' might make a key in a second or two;
* maybe we should wait for it. */
goto error;
@@ -330,16 +416,16 @@ init_key_from_file(const char *fname, int generate, int severity)
log_info(LD_GENERAL, "No key found in \"%s\"; generating fresh key.",
fname);
if (crypto_pk_generate_key(prkey)) {
- log(severity, LD_GENERAL,"Error generating onion key");
+ tor_log(severity, LD_GENERAL,"Error generating onion key");
goto error;
}
if (crypto_pk_check_key(prkey) <= 0) {
- log(severity, LD_GENERAL,"Generated key seems invalid");
+ tor_log(severity, LD_GENERAL,"Generated key seems invalid");
goto error;
}
log_info(LD_GENERAL, "Generated key seems valid");
if (crypto_pk_write_private_key_to_filename(prkey, fname)) {
- log(severity, LD_FS,
+ tor_log(severity, LD_FS,
"Couldn't write generated key to \"%s\".", fname);
goto error;
}
@@ -349,7 +435,7 @@ init_key_from_file(const char *fname, int generate, int severity)
return prkey;
case FN_FILE:
if (crypto_pk_read_private_key_from_filename(prkey, fname)) {
- log(severity, LD_GENERAL,"Error loading private key.");
+ tor_log(severity, LD_GENERAL,"Error loading private key.");
goto error;
}
return prkey;
@@ -363,6 +449,77 @@ init_key_from_file(const char *fname, int generate, int severity)
return NULL;
}
+#ifdef CURVE25519_ENABLED
+/** Load a curve25519 keypair from the file <b>fname</b>, writing it into
+ * <b>keys_out</b>. If the file isn't found and <b>generate</b> is true,
+ * create a new keypair and write it into the file. If there are errors, log
+ * them at level <b>severity</b>. Generate files using <b>tag</b> in their
+ * ASCII wrapper. */
+static int
+init_curve25519_keypair_from_file(curve25519_keypair_t *keys_out,
+ const char *fname,
+ int generate,
+ int severity,
+ const char *tag)
+{
+ switch (file_status(fname)) {
+ case FN_DIR:
+ case FN_ERROR:
+ tor_log(severity, LD_FS,"Can't read key from \"%s\"", fname);
+ goto error;
+ case FN_NOENT:
+ if (generate) {
+ if (!have_lockfile()) {
+ if (try_locking(get_options(), 0)<0) {
+ /* Make sure that --list-fingerprint only creates new keys
+ * if there is no possibility for a deadlock. */
+ tor_log(severity, LD_FS, "Another Tor process has locked \"%s\". "
+ "Not writing any new keys.", fname);
+ /*XXXX The 'other process' might make a key in a second or two;
+ * maybe we should wait for it. */
+ goto error;
+ }
+ }
+ log_info(LD_GENERAL, "No key found in \"%s\"; generating fresh key.",
+ fname);
+ if (curve25519_keypair_generate(keys_out, 1) < 0)
+ goto error;
+ if (curve25519_keypair_write_to_file(keys_out, fname, tag)<0) {
+ tor_log(severity, LD_FS,
+ "Couldn't write generated key to \"%s\".", fname);
+ memset(keys_out, 0, sizeof(*keys_out));
+ goto error;
+ }
+ } else {
+ log_info(LD_GENERAL, "No key found in \"%s\"", fname);
+ }
+ return 0;
+ case FN_FILE:
+ {
+ char *tag_in=NULL;
+ if (curve25519_keypair_read_from_file(keys_out, &tag_in, fname) < 0) {
+ tor_log(severity, LD_GENERAL,"Error loading private key.");
+ tor_free(tag_in);
+ goto error;
+ }
+ if (!tag_in || strcmp(tag_in, tag)) {
+ tor_log(severity, LD_GENERAL,"Unexpected tag %s on private key.",
+ escaped(tag_in));
+ tor_free(tag_in);
+ goto error;
+ }
+ tor_free(tag_in);
+ return 0;
+ }
+ default:
+ tor_assert(0);
+ }
+
+ error:
+ return -1;
+}
+#endif
+
/** Try to load the vote-signing private key and certificate for being a v3
* directory authority, and make sure they match. If <b>legacy</b>, load a
* legacy key/cert set for emergency key migration; otherwise load the regular
@@ -474,14 +631,14 @@ v3_authority_check_key_expiry(void)
return;
if (time_left <= 0) {
- log(badness, LD_DIR, "Your v3 authority certificate has expired."
- " Generate a new one NOW.");
+ tor_log(badness, LD_DIR, "Your v3 authority certificate has expired."
+ " Generate a new one NOW.");
} else if (time_left <= 24*60*60) {
- log(badness, LD_DIR, "Your v3 authority certificate expires in %d hours;"
- " Generate a new one NOW.", time_left/(60*60));
+ tor_log(badness, LD_DIR, "Your v3 authority certificate expires in %d "
+ "hours; Generate a new one NOW.", time_left/(60*60));
} else {
- log(badness, LD_DIR, "Your v3 authority certificate expires in %d days;"
- " Generate a new one soon.", time_left/(24*60*60));
+ tor_log(badness, LD_DIR, "Your v3 authority certificate expires in %d "
+ "days; Generate a new one soon.", time_left/(24*60*60));
}
last_warned = now;
}
@@ -641,12 +798,35 @@ init_keys(void)
keydir = get_datadir_fname2("keys", "secret_onion_key.old");
if (!lastonionkey && file_status(keydir) == FN_FILE) {
- prkey = init_key_from_file(keydir, 1, LOG_ERR);
+ prkey = init_key_from_file(keydir, 1, LOG_ERR); /* XXXX Why 1? */
if (prkey)
lastonionkey = prkey;
}
tor_free(keydir);
+#ifdef CURVE25519_ENABLED
+ {
+ /* 2b. Load curve25519 onion keys. */
+ int r;
+ keydir = get_datadir_fname2("keys", "secret_onion_key_ntor");
+ r = init_curve25519_keypair_from_file(&curve25519_onion_key,
+ keydir, 1, LOG_ERR, "onion");
+ tor_free(keydir);
+ if (r<0)
+ return -1;
+
+ keydir = get_datadir_fname2("keys", "secret_onion_key_ntor.old");
+ if (tor_mem_is_zero((const char *)
+ last_curve25519_onion_key.pubkey.public_key,
+ CURVE25519_PUBKEY_LEN) &&
+ file_status(keydir) == FN_FILE) {
+ init_curve25519_keypair_from_file(&last_curve25519_onion_key,
+ keydir, 0, LOG_ERR, "onion");
+ }
+ tor_free(keydir);
+ }
+#endif
+
/* 3. Initialize link key and TLS context. */
if (router_initialize_tls_context() < 0) {
log_err(LD_GENERAL,"Error initializing TLS context");
@@ -722,7 +902,7 @@ init_keys(void)
tor_free(cp);
tor_free(keydir);
- log(LOG_NOTICE, LD_GENERAL,
+ log_notice(LD_GENERAL,
"Your Tor server's identity key fingerprint is '%s %s'",
options->Nickname, fingerprint);
if (!authdir_mode(options))
@@ -882,10 +1062,10 @@ decide_to_advertise_dirport(const or_options_t *options, uint16_t dir_port)
if (advertising != new_choice) {
if (new_choice == 1) {
- log(LOG_NOTICE, LD_DIR, "Advertising DirPort as %d", dir_port);
+ log_notice(LD_DIR, "Advertising DirPort as %d", dir_port);
} else {
tor_assert(reason);
- log(LOG_NOTICE, LD_DIR, "Not advertising DirPort (Reason: %s)", reason);
+ log_notice(LD_DIR, "Not advertising DirPort (Reason: %s)", reason);
}
advertising = new_choice;
}
@@ -905,7 +1085,8 @@ extend_info_from_router(const routerinfo_t *r)
router_get_prim_orport(r, &ap);
return extend_info_new(r->nickname, r->cache_info.identity_digest,
- r->onion_pkey, &ap.addr, ap.port);
+ r->onion_pkey, r->onion_curve25519_pkey,
+ &ap.addr, ap.port);
}
/** Some time has passed, or we just got new directory information.
@@ -1429,6 +1610,13 @@ router_digest_is_me(const char *digest)
tor_memeq(server_identitykey_digest, digest, DIGEST_LEN));
}
+/** Return my identity digest. */
+const uint8_t *
+router_get_my_id_digest(void)
+{
+ return (const uint8_t *)server_identitykey_digest;
+}
+
/** Return true iff I'm a server and <b>digest</b> is equal to
* my identity digest. */
int
@@ -1575,6 +1763,11 @@ router_rebuild_descriptor(int force)
ri->cache_info.published_on = time(NULL);
ri->onion_pkey = crypto_pk_dup_key(get_onion_key()); /* must invoke from
* main thread */
+#ifdef CURVE25519_ENABLED
+ ri->onion_curve25519_pkey =
+ tor_memdup(&get_current_curve25519_keypair()->pubkey,
+ sizeof(curve25519_public_key_t));
+#endif
/* For now, at most one IPv6 or-address is being advertised. */
{
@@ -1662,7 +1855,7 @@ router_rebuild_descriptor(int force)
member = node_get_by_nickname(name, 1);
if (!member) {
int is_legal = is_legal_nickname_or_hexdigest(name);
- if (!smartlist_string_isin(warned_nonexistent_family, name) &&
+ if (!smartlist_contains_string(warned_nonexistent_family, name) &&
!is_legal_hexdigest(name)) {
if (is_legal)
log_warn(LD_CONFIG,
@@ -1688,7 +1881,7 @@ router_rebuild_descriptor(int force)
base16_encode(fp+1,HEX_DIGEST_LEN+1,
member->identity, DIGEST_LEN);
smartlist_add(ri->declared_family, fp);
- if (smartlist_string_isin(warned_nonexistent_family, name))
+ if (smartlist_contains_string(warned_nonexistent_family, name))
smartlist_string_remove(warned_nonexistent_family, name);
}
skip:
@@ -2155,6 +2348,22 @@ router_dump_router_to_string(char *s, size_t maxlen, routerinfo_t *router,
written += result;
}
+#ifdef CURVE25519_ENABLED
+ if (router->onion_curve25519_pkey) {
+ char kbuf[128];
+ base64_encode(kbuf, sizeof(kbuf),
+ (const char *)router->onion_curve25519_pkey->public_key,
+ CURVE25519_PUBKEY_LEN);
+ result = tor_snprintf(s+written,maxlen-written, "ntor-onion-key %s",
+ kbuf);
+ if (result<0) {
+ log_warn(LD_BUG,"descriptor snprintf ran out of room!");
+ return -1;
+ }
+ written += result;
+ }
+#endif
+
/* Write the exit policy to the end of 's'. */
if (!router->exit_policy || !smartlist_len(router->exit_policy)) {
strlcat(s+written, "reject *:*\n", maxlen-written);
@@ -2187,6 +2396,7 @@ router_dump_router_to_string(char *s, size_t maxlen, routerinfo_t *router,
"ipv6-policy %s\n", p6);
if (result<0) {
log_warn(LD_BUG,"Descriptor printf of policy ran out of room");
+ tor_free(p6);
return -1;
}
written += result;
@@ -2803,6 +3013,11 @@ router_free_all(void)
crypto_pk_free(legacy_signing_key);
authority_cert_free(legacy_key_certificate);
+#ifdef CURVE25519_ENABLED
+ memwipe(&curve25519_onion_key, 0, sizeof(curve25519_onion_key));
+ memwipe(&last_curve25519_onion_key, 0, sizeof(last_curve25519_onion_key));
+#endif
+
if (warned_nonexistent_family) {
SMARTLIST_FOREACH(warned_nonexistent_family, char *, cp, tor_free(cp));
smartlist_free(warned_nonexistent_family);
diff --git a/src/or/router.h b/src/or/router.h
index b641c1cc6a..fd2076af01 100644
--- a/src/or/router.h
+++ b/src/or/router.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -30,6 +30,11 @@ crypto_pk_t *init_key_from_file(const char *fname, int generate,
int severity);
void v3_authority_check_key_expiry(void);
+#ifdef CURVE25519_ENABLED
+di_digest256_map_t *construct_ntor_key_map(void);
+void ntor_key_map_free(di_digest256_map_t *map);
+#endif
+
int router_initialize_tls_context(void);
int init_keys(void);
@@ -79,6 +84,7 @@ extrainfo_t *router_get_my_extrainfo(void);
const char *router_get_my_descriptor(void);
const char *router_get_descriptor_gen_reason(void);
int router_digest_is_me(const char *digest);
+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);
int router_fingerprint_is_me(const char *fp);
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index 898b9b5b98..8f19947600 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -42,6 +42,9 @@
/****************************************************************************/
/* static function prototypes */
+static int compute_weighted_bandwidths(const smartlist_t *sl,
+ bandwidth_weight_rule_t rule,
+ u64_dbl_t **bandwidths_out);
static const routerstatus_t *router_pick_directory_server_impl(
dirinfo_type_t auth, int flags);
static const routerstatus_t *router_pick_trusteddirserver_impl(
@@ -541,7 +544,7 @@ authority_certs_fetch_missing(networkstatus_t *status, time_t now)
int found = 0;
if (!(ds->type & V3_DIRINFO))
continue;
- if (smartlist_digest_isin(missing_digests, ds->v3_identity_digest))
+ if (smartlist_contains_digest(missing_digests, ds->v3_identity_digest))
continue;
cl = get_cert_list(ds->v3_identity_digest);
SMARTLIST_FOREACH(cl->certs, authority_cert_t *, cert, {
@@ -1681,9 +1684,35 @@ kb_to_bytes(uint32_t bw)
* guards proportionally less.
*/
static const node_t *
-smartlist_choose_node_by_bandwidth_weights(smartlist_t *sl,
+smartlist_choose_node_by_bandwidth_weights(const smartlist_t *sl,
bandwidth_weight_rule_t rule)
{
+ u64_dbl_t *bandwidths=NULL;
+
+ if (compute_weighted_bandwidths(sl, rule, &bandwidths) < 0)
+ return NULL;
+
+ scale_array_elements_to_u64(bandwidths, smartlist_len(sl),
+ &sl_last_total_weighted_bw);
+
+ {
+ int idx = choose_array_element_by_weight(bandwidths,
+ smartlist_len(sl));
+ tor_free(bandwidths);
+ return idx < 0 ? NULL : smartlist_get(sl, idx);
+ }
+}
+
+/** Given a list of routers and a weighting rule as in
+ * smartlist_choose_node_by_bandwidth_weights, compute weighted bandwidth
+ * values for each node and store them in a freshly allocated
+ * *<b>bandwidths_out</b> of the same length as <b>sl</b>, and holding results
+ * as doubles. Return 0 on success, -1 on failure. */
+static int
+compute_weighted_bandwidths(const smartlist_t *sl,
+ bandwidth_weight_rule_t rule,
+ u64_dbl_t **bandwidths_out)
+{
int64_t weight_scale;
double Wg = -1, Wm = -1, We = -1, Wd = -1;
double Wgb = -1, Wmb = -1, Web = -1, Wdb = -1;
@@ -1702,10 +1731,10 @@ smartlist_choose_node_by_bandwidth_weights(smartlist_t *sl,
"Empty routerlist passed in to consensus weight node "
"selection for rule %s",
bandwidth_weight_rule_to_string(rule));
- return NULL;
+ return -1;
}
- weight_scale = circuit_build_times_get_bw_scale(NULL);
+ weight_scale = networkstatus_get_weight_scale_param(NULL);
if (rule == WEIGHT_FOR_GUARD) {
Wg = networkstatus_get_bw_weight(NULL, "Wgg", -1);
@@ -1756,7 +1785,7 @@ smartlist_choose_node_by_bandwidth_weights(smartlist_t *sl,
log_debug(LD_CIRC,
"Got negative bandwidth weights. Defaulting to old selection"
" algorithm.");
- return NULL; // Use old algorithm.
+ return -1; // Use old algorithm.
}
Wg /= weight_scale;
@@ -1786,7 +1815,7 @@ smartlist_choose_node_by_bandwidth_weights(smartlist_t *sl,
log_warn(LD_BUG,
"Consensus is not listing bandwidths. Defaulting back to "
"old router selection algorithm.");
- return NULL;
+ return -1;
}
this_bw = kb_to_bytes(node->rs->bandwidth);
} else if (node->ri) {
@@ -1819,20 +1848,53 @@ smartlist_choose_node_by_bandwidth_weights(smartlist_t *sl,
sl_last_weighted_bw_of_me = (uint64_t) bandwidths[node_sl_idx].dbl;
} SMARTLIST_FOREACH_END(node);
- log_debug(LD_CIRC, "Choosing node for rule %s based on weights "
+ log_debug(LD_CIRC, "Generated weighted bandwidths for rule %s based "
+ "on weights "
"Wg=%f Wm=%f We=%f Wd=%f with total bw "U64_FORMAT,
bandwidth_weight_rule_to_string(rule),
Wg, Wm, We, Wd, U64_PRINTF_ARG(weighted_bw));
- scale_array_elements_to_u64(bandwidths, smartlist_len(sl),
- &sl_last_total_weighted_bw);
+ *bandwidths_out = bandwidths;
- {
- int idx = choose_array_element_by_weight(bandwidths,
- smartlist_len(sl));
- tor_free(bandwidths);
- return idx < 0 ? NULL : smartlist_get(sl, idx);
+ return 0;
+}
+
+/** For all nodes in <b>sl</b>, return the fraction of those nodes, weighted
+ * by their weighted bandwidths with rule <b>rule</b>, for which we have
+ * descriptors. */
+double
+frac_nodes_with_descriptors(const smartlist_t *sl,
+ bandwidth_weight_rule_t rule)
+{
+ u64_dbl_t *bandwidths = NULL;
+ double total, present;
+
+ if (smartlist_len(sl) == 0)
+ return 0.0;
+
+ if (compute_weighted_bandwidths(sl, rule, &bandwidths) < 0) {
+ int n_with_descs = 0;
+ SMARTLIST_FOREACH(sl, const node_t *, node, {
+ if (node_has_descriptor(node))
+ n_with_descs++;
+ });
+ return ((double)n_with_descs) / (double)smartlist_len(sl);
}
+
+ total = present = 0.0;
+ SMARTLIST_FOREACH_BEGIN(sl, const node_t *, node) {
+ const double bw = bandwidths[node_sl_idx].dbl;
+ total += bw;
+ if (node_has_descriptor(node))
+ present += bw;
+ } SMARTLIST_FOREACH_END(node);
+
+ tor_free(bandwidths);
+
+ if (total < 1.0)
+ return 0;
+
+ return present / total;
}
/** Helper function:
@@ -1849,7 +1911,7 @@ smartlist_choose_node_by_bandwidth_weights(smartlist_t *sl,
* guards proportionally less.
*/
static const node_t *
-smartlist_choose_node_by_bandwidth(smartlist_t *sl,
+smartlist_choose_node_by_bandwidth(const smartlist_t *sl,
bandwidth_weight_rule_t rule)
{
unsigned int i;
@@ -2055,7 +2117,7 @@ smartlist_choose_node_by_bandwidth(smartlist_t *sl,
/** Choose a random element of status list <b>sl</b>, weighted by
* the advertised bandwidth of each node */
const node_t *
-node_sl_choose_by_bandwidth(smartlist_t *sl,
+node_sl_choose_by_bandwidth(const smartlist_t *sl,
bandwidth_weight_rule_t rule)
{ /*XXXX MOVE */
const node_t *ret;
@@ -2482,6 +2544,7 @@ routerinfo_free(routerinfo_t *router)
tor_free(router->contact_info);
if (router->onion_pkey)
crypto_pk_free(router->onion_pkey);
+ tor_free(router->onion_curve25519_pkey);
if (router->identity_pkey)
crypto_pk_free(router->identity_pkey);
if (router->declared_family) {
@@ -2584,7 +2647,7 @@ dump_routerlist_mem_usage(int severity)
SMARTLIST_FOREACH(routerlist->old_routers, signed_descriptor_t *, sd,
olddescs += sd->signed_descriptor_len);
- log(severity, LD_DIR,
+ tor_log(severity, LD_DIR,
"In %d live descriptors: "U64_FORMAT" bytes. "
"In %d old descriptors: "U64_FORMAT" bytes.",
smartlist_len(routerlist->routers), U64_PRINTF_ARG(livedescs),
@@ -3326,7 +3389,7 @@ routerlist_remove_old_cached_routers_with_id(time_t now,
signed_descriptor_t *r_next;
lifespans[i-lo].idx = i;
if (r->last_listed_as_valid_until >= now ||
- (retain && digestset_isin(retain, r->signed_descriptor_digest))) {
+ (retain && digestset_contains(retain, r->signed_descriptor_digest))) {
must_keep[i-lo] = 1;
}
if (i < hi) {
@@ -3460,7 +3523,7 @@ routerlist_remove_old_routers(void)
router = smartlist_get(routerlist->routers, i);
if (router->cache_info.published_on <= cutoff &&
router->cache_info.last_listed_as_valid_until < now &&
- !digestset_isin(retain,
+ !digestset_contains(retain,
router->cache_info.signed_descriptor_digest)) {
/* Too old: remove it. (If we're a cache, just move it into
* old_routers.) */
@@ -3481,7 +3544,7 @@ routerlist_remove_old_routers(void)
sd = smartlist_get(routerlist->old_routers, i);
if (sd->published_on <= cutoff &&
sd->last_listed_as_valid_until < now &&
- !digestset_isin(retain, sd->signed_descriptor_digest)) {
+ !digestset_contains(retain, sd->signed_descriptor_digest)) {
/* Too old. Remove it. */
routerlist_remove_old(routerlist, sd, i--);
}
@@ -3660,7 +3723,7 @@ router_load_routers_from_string(const char *s, const char *eos,
ri->cache_info.signed_descriptor_digest :
ri->cache_info.identity_digest,
DIGEST_LEN);
- if (smartlist_string_isin(requested_fingerprints, fp)) {
+ if (smartlist_contains_string(requested_fingerprints, fp)) {
smartlist_string_remove(requested_fingerprints, fp);
} else {
char *requested =
diff --git a/src/or/routerlist.h b/src/or/routerlist.h
index 81ba1ac54f..1849fff31c 100644
--- a/src/or/routerlist.h
+++ b/src/or/routerlist.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -47,8 +47,10 @@ const routerinfo_t *routerlist_find_my_routerinfo(void);
uint32_t router_get_advertised_bandwidth(const routerinfo_t *router);
uint32_t router_get_advertised_bandwidth_capped(const routerinfo_t *router);
-const node_t *node_sl_choose_by_bandwidth(smartlist_t *sl,
+const node_t *node_sl_choose_by_bandwidth(const smartlist_t *sl,
bandwidth_weight_rule_t rule);
+double frac_nodes_with_descriptors(const smartlist_t *sl,
+ bandwidth_weight_rule_t rule);
const node_t *router_choose_random_node(smartlist_t *excludedsmartlist,
struct routerset_t *excludedset,
diff --git a/src/or/routerparse.c b/src/or/routerparse.c
index 1aee4e5332..2a3de12c35 100644
--- a/src/or/routerparse.c
+++ b/src/or/routerparse.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -43,6 +43,7 @@ typedef enum {
K_SIGNED_DIRECTORY,
K_SIGNING_KEY,
K_ONION_KEY,
+ K_ONION_KEY_NTOR,
K_ROUTER_SIGNATURE,
K_PUBLISHED,
K_RUNNING_ROUTERS,
@@ -276,6 +277,7 @@ static token_rule_t routerdesc_token_table[] = {
T01("ipv6-policy", K_IPV6_POLICY, CONCAT_ARGS, NO_OBJ),
T1( "signing-key", K_SIGNING_KEY, NO_ARGS, NEED_KEY_1024 ),
T1( "onion-key", K_ONION_KEY, NO_ARGS, NEED_KEY_1024 ),
+ T01("ntor-onion-key", K_ONION_KEY_NTOR, GE(1), NO_OBJ ),
T1_END( "router-signature", K_ROUTER_SIGNATURE, NO_ARGS, NEED_OBJ ),
T1( "published", K_PUBLISHED, CONCAT_ARGS, NO_OBJ ),
T01("uptime", K_UPTIME, GE(1), NO_OBJ ),
@@ -508,6 +510,7 @@ static token_rule_t networkstatus_detached_signature_token_table[] = {
/** List of tokens recognized in microdescriptors */
static token_rule_t microdesc_token_table[] = {
T1_START("onion-key", K_ONION_KEY, NO_ARGS, NEED_KEY_1024),
+ T01("ntor-onion-key", K_ONION_KEY_NTOR, GE(1), NO_OBJ ),
T0N("a", K_A, GE(1), NO_OBJ ),
T01("family", K_FAMILY, ARGS, NO_OBJ ),
T01("p", K_P, CONCAT_ARGS, NO_OBJ ),
@@ -1026,7 +1029,7 @@ dump_distinct_digest_count(int severity)
#ifdef COUNT_DISTINCT_DIGESTS
if (!verified_digests)
verified_digests = digestmap_new();
- log(severity, LD_GENERAL, "%d *distinct* router digests verified",
+ tor_log(severity, LD_GENERAL, "%d *distinct* router digests verified",
digestmap_size(verified_digests));
#else
(void)severity; /* suppress "unused parameter" warning */
@@ -1284,6 +1287,17 @@ router_parse_entry_from_string(const char *s, const char *end,
router->onion_pkey = tok->key;
tok->key = NULL; /* Prevent free */
+ if ((tok = find_opt_by_keyword(tokens, K_ONION_KEY_NTOR))) {
+ curve25519_public_key_t k;
+ tor_assert(tok->n_args >= 1);
+ if (curve25519_public_from_base64(&k, tok->args[0]) < 0) {
+ log_warn(LD_DIR, "Bogus ntor-onion-key in routerinfo");
+ goto err;
+ }
+ router->onion_curve25519_pkey =
+ tor_memdup(&k, sizeof(curve25519_public_key_t));
+ }
+
tok = find_by_keyword(tokens, K_SIGNING_KEY);
router->identity_pkey = tok->key;
tok->key = NULL; /* Prevent free */
@@ -1938,6 +1952,8 @@ routerstatus_parse_entry_from_string(memarea_t *area,
tor_version_supports_microdescriptors(tok->args[0]);
rs->version_supports_optimistic_data =
tor_version_as_new_as(tok->args[0], "0.2.3.1-alpha");
+ rs->version_supports_extend2_cells =
+ tor_version_as_new_as(tok->args[0], "0.2.4.7-alpha");
}
if (vote_rs) {
vote_rs->version = tor_strdup(tok->args[0]);
@@ -2239,7 +2255,7 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
const char *casename = NULL;
int valid = 1;
- weight_scale = circuit_build_times_get_bw_scale(ns);
+ weight_scale = networkstatus_get_weight_scale_param(ns);
Wgg = networkstatus_get_bw_weight(ns, "Wgg", -1);
Wgm = networkstatus_get_bw_weight(ns, "Wgm", -1);
Wgd = networkstatus_get_bw_weight(ns, "Wgd", -1);
@@ -3828,7 +3844,7 @@ get_next_token(memarea_t *area,
if ((size_t)(eol-next) != 9+obname_len+5 ||
strcmp_len(next+9, tok->object_type, obname_len) ||
strcmp_len(eol-5, "-----", 5)) {
- snprintf(ebuf, sizeof(ebuf), "Malformed object: mismatched end tag %s",
+ tor_snprintf(ebuf, sizeof(ebuf), "Malformed object: mismatched end tag %s",
tok->object_type);
ebuf[sizeof(ebuf)-1] = '\0';
RET_ERR(ebuf);
@@ -4243,6 +4259,17 @@ microdescs_parse_from_string(const char *s, const char *eos,
md->onion_pkey = tok->key;
tok->key = NULL;
+ if ((tok = find_opt_by_keyword(tokens, K_ONION_KEY_NTOR))) {
+ curve25519_public_key_t k;
+ tor_assert(tok->n_args >= 1);
+ if (curve25519_public_from_base64(&k, tok->args[0]) < 0) {
+ log_warn(LD_DIR, "Bogus ntor-onion-key in microdesc");
+ goto next;
+ }
+ md->onion_curve25519_pkey =
+ tor_memdup(&k, sizeof(curve25519_public_key_t));
+ }
+
{
smartlist_t *a_lines = find_all_by_keyword(tokens, K_A);
if (a_lines) {
diff --git a/src/or/routerparse.h b/src/or/routerparse.h
index 256fcca579..4cc9bfd3ae 100644
--- a/src/or/routerparse.h
+++ b/src/or/routerparse.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/routerset.c b/src/or/routerset.c
index a495863d8e..e45516bb6c 100644
--- a/src/or/routerset.c
+++ b/src/or/routerset.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "or.h"
@@ -95,7 +95,7 @@ routerset_refresh_countries(routerset_t *target)
tor_assert(cc < target->n_countries);
bitarray_set(target->countries, cc);
} else {
- log(LOG_WARN, LD_CONFIG, "Country code '%s' is not recognized.",
+ log_warn(LD_CONFIG, "Country code '%s' is not recognized.",
country);
}
} SMARTLIST_FOREACH_END(country);
@@ -226,6 +226,45 @@ routerset_contains(const routerset_t *set, const tor_addr_t *addr,
return 0;
}
+/** If *<b>setp</b> includes at least one country code, or if
+ * <b>only_some_cc_set</b> is 0, add the ?? and A1 country codes to
+ * *<b>setp</b>, creating it as needed. Return true iff *<b>setp</b> changed.
+ */
+int
+routerset_add_unknown_ccs(routerset_t **setp, int only_if_some_cc_set)
+{
+ routerset_t *set;
+ int add_unknown, add_a1;
+ if (only_if_some_cc_set) {
+ if (!*setp || smartlist_len((*setp)->country_names) == 0)
+ return 0;
+ }
+ if (!*setp)
+ *setp = routerset_new();
+
+ set = *setp;
+
+ add_unknown = ! smartlist_contains_string_case(set->country_names, "??") &&
+ geoip_get_country("??") >= 0;
+ add_a1 = ! smartlist_contains_string_case(set->country_names, "a1") &&
+ geoip_get_country("A1") >= 0;
+
+ if (add_unknown) {
+ smartlist_add(set->country_names, tor_strdup("??"));
+ smartlist_add(set->list, tor_strdup("{??}"));
+ }
+ if (add_a1) {
+ smartlist_add(set->country_names, tor_strdup("a1"));
+ smartlist_add(set->country_names, tor_strdup("{a1}"));
+ }
+
+ if (add_unknown || add_a1) {
+ routerset_refresh_countries(set);
+ return 1;
+ }
+ return 0;
+}
+
/** Return true iff we can tell that <b>ei</b> is a member of <b>set</b>. */
int
routerset_contains_extendinfo(const routerset_t *set, const extend_info_t *ei)
diff --git a/src/or/routerset.h b/src/or/routerset.h
index ad0832e4df..bfa0c59ac1 100644
--- a/src/or/routerset.h
+++ b/src/or/routerset.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -31,6 +31,7 @@ int routerset_contains_node(const routerset_t *set, const node_t *node);
void routerset_get_all_nodes(smartlist_t *out, const routerset_t *routerset,
const routerset_t *excludeset,
int running_only);
+int routerset_add_unknown_ccs(routerset_t **setp, int only_if_some_cc_set);
#if 0
void routersets_get_node_disjunction(smartlist_t *target,
const smartlist_t *source,
diff --git a/src/or/statefile.c b/src/or/statefile.c
index 1429efda12..bcb7b07417 100644
--- a/src/or/statefile.c
+++ b/src/or/statefile.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "or.h"
@@ -52,6 +52,7 @@ static config_var_t state_vars_[] = {
VAR("EntryGuardUnlistedSince", LINELIST_S, EntryGuards, NULL),
VAR("EntryGuardAddedBy", LINELIST_S, EntryGuards, NULL),
VAR("EntryGuardPathBias", LINELIST_S, EntryGuards, NULL),
+ VAR("EntryGuardPathUseBias", LINELIST_S, EntryGuards, NULL),
V(EntryGuards, LINELIST_V, NULL),
VAR("TransportProxy", LINELIST_S, TransportProxies, NULL),
diff --git a/src/or/statefile.h b/src/or/statefile.h
index 4770d500d1..dcdee6c604 100644
--- a/src/or/statefile.h
+++ b/src/or/statefile.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_STATEFILE_H
diff --git a/src/or/status.c b/src/or/status.c
index 1a4e568854..126167dcb9 100644
--- a/src/or/status.c
+++ b/src/or/status.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2012, The Tor Project, Inc. */
+/* Copyright (c) 2010-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -108,7 +108,7 @@ log_heartbeat(time_t now)
uptime, count_circuits(),bw_sent,bw_rcvd);
if (stats_n_data_cells_packaged)
- log(LOG_NOTICE, LD_HEARTBEAT, "Average packaged cell fullness: %2.3f%%",
+ log_notice(LD_HEARTBEAT, "Average packaged cell fullness: %2.3f%%",
100*(U64_TO_DBL(stats_n_data_bytes_packaged) /
U64_TO_DBL(stats_n_data_cells_packaged*RELAY_PAYLOAD_SIZE)) );
diff --git a/src/or/status.h b/src/or/status.h
index de49d751c3..7c3b969c86 100644
--- a/src/or/status.h
+++ b/src/or/status.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2012, The Tor Project, Inc. */
+/* Copyright (c) 2010-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_STATUS_H
diff --git a/src/or/tor_main.c b/src/or/tor_main.c
index 2f4922317d..806b5ebb38 100644
--- a/src/or/tor_main.c
+++ b/src/or/tor_main.c
@@ -1,6 +1,6 @@
/* Copyright 2001-2004 Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/** String describing which Tor subversion repository version the source was
diff --git a/src/or/transports.c b/src/or/transports.c
index 0319071097..647b293168 100644
--- a/src/or/transports.c
+++ b/src/or/transports.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2012, The Tor Project, Inc. */
+/* Copyright (c) 2011-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -428,7 +428,7 @@ static void
add_transport_to_proxy(const char *transport, managed_proxy_t *mp)
{
tor_assert(mp->transports_to_launch);
- if (!smartlist_string_isin(mp->transports_to_launch, transport))
+ if (!smartlist_contains_string(mp->transports_to_launch, transport))
smartlist_add(mp->transports_to_launch, tor_strdup(transport));
}
@@ -453,7 +453,7 @@ proxy_needs_restart(const managed_proxy_t *mp)
goto needs_restart;
SMARTLIST_FOREACH_BEGIN(mp->transports, const transport_t *, t) {
- if (!smartlist_string_isin(mp->transports_to_launch, t->name))
+ if (!smartlist_contains_string(mp->transports_to_launch, t->name))
goto needs_restart;
} SMARTLIST_FOREACH_END(t);
diff --git a/src/or/transports.h b/src/or/transports.h
index 86a2530fcb..6ee82f4556 100644
--- a/src/or/transports.h
+++ b/src/or/transports.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/Makefile.nmake b/src/test/Makefile.nmake
index aec477cf99..562c8df8b5 100644
--- a/src/test/Makefile.nmake
+++ b/src/test/Makefile.nmake
@@ -1,20 +1,32 @@
-all: test.exe
+all: test.exe test-child.exe bench.exe
-CFLAGS = /I ..\win32 /I ..\..\..\build-alpha\include /I ..\common /I ..\or
+CFLAGS = /I ..\win32 /I ..\..\..\build-alpha\include /I ..\common /I ..\or \
+ /I ..\ext
LIBS = ..\..\..\build-alpha\lib\libevent.lib \
..\..\..\build-alpha\lib\libcrypto.lib \
..\..\..\build-alpha\lib\libssl.lib \
..\..\..\build-alpha\lib\libz.lib \
..\or\libtor.lib \
- ws2_32.lib advapi32.lib shell32.lib
+ ws2_32.lib advapi32.lib shell32.lib \
+ crypt32.lib gdi32.lib user32.lib
TEST_OBJECTS = test.obj test_addr.obj test_containers.obj \
test_crypto.obj test_data.obj test_dir.obj test_microdesc.obj \
- test_pt.obj test_util.obj test_config.obj tinytest.obj
+ test_pt.obj test_util.obj test_config.obj test_cell_formats.obj \
+ test_replay.obj test_introduce.obj tinytest.obj
+
+tinytest.obj: ..\ext\tinytest.c
+ $(CC) $(CFLAGS) /D snprintf=_snprintf /c ..\ext\tinytest.c
test.exe: $(TEST_OBJECTS)
- $(CC) $(CFLAGS) $(LIBS) ..\common\*.lib $(TEST_OBJECTS)
+ $(CC) $(CFLAGS) $(LIBS) ..\common\*.lib $(TEST_OBJECTS) /Fe$@
+
+bench.exe: bench.obj
+ $(CC) $(CFLAGS) bench.obj $(LIBS) ..\common\*.lib /Fe$@
+
+test-child.exe: test-child.obj
+ $(CC) $(CFLAGS) test-child.obj /Fe$@
clean:
- del $(TEST_OBJECTS) *.lib test.exe
+ del *.obj *.lib test.exe bench.exe test-child.exe
diff --git a/src/test/bench.c b/src/test/bench.c
index da1ae9bc5d..d57aeb81aa 100644
--- a/src/test/bench.c
+++ b/src/test/bench.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/* Ordinarily defined in tor_main.c; this bit is just here to provide one
@@ -15,17 +15,23 @@ const char tor_git_revision[] = "";
#include "orconfig.h"
#define RELAY_PRIVATE
+#define CONFIG_PRIVATE
#include "or.h"
+#include "onion_tap.h"
#include "relay.h"
#include <openssl/opensslv.h>
#include <openssl/evp.h>
-#if OPENSSL_VERSION_NUMBER >= OPENSSL_V_SERIES(1,0,0)
#ifndef OPENSSL_NO_EC
#include <openssl/ec.h>
#include <openssl/ecdh.h>
#include <openssl/obj_mac.h>
#endif
+
+#include "config.h"
+#ifdef CURVE25519_ENABLED
+#include "crypto_curve25519.h"
+#include "onion_ntor.h"
#endif
#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_PROCESS_CPUTIME_ID)
@@ -106,6 +112,125 @@ bench_aes(void)
}
static void
+bench_onion_TAP(void)
+{
+ const int iters = 1<<9;
+ int i;
+ crypto_pk_t *key, *key2;
+ uint64_t start, end;
+ char os[TAP_ONIONSKIN_CHALLENGE_LEN];
+ char or[TAP_ONIONSKIN_REPLY_LEN];
+ crypto_dh_t *dh_out;
+
+ key = crypto_pk_new();
+ key2 = crypto_pk_new();
+ crypto_pk_generate_key_with_bits(key, 1024);
+ crypto_pk_generate_key_with_bits(key2, 1024);
+
+ reset_perftime();
+ start = perftime();
+ for (i = 0; i < iters; ++i) {
+ onion_skin_TAP_create(key, &dh_out, os);
+ crypto_dh_free(dh_out);
+ }
+ end = perftime();
+ printf("Client-side, part 1: %f usec.\n", NANOCOUNT(start, end, iters)/1e3);
+
+ onion_skin_TAP_create(key, &dh_out, os);
+ start = perftime();
+ for (i = 0; i < iters; ++i) {
+ char key_out[CPATH_KEY_MATERIAL_LEN];
+ onion_skin_TAP_server_handshake(os, key, NULL, or,
+ key_out, sizeof(key_out));
+ }
+ end = perftime();
+ printf("Server-side, key guessed right: %f usec\n",
+ NANOCOUNT(start, end, iters)/1e3);
+
+ start = perftime();
+ for (i = 0; i < iters; ++i) {
+ char key_out[CPATH_KEY_MATERIAL_LEN];
+ onion_skin_TAP_server_handshake(os, key2, key, or,
+ key_out, sizeof(key_out));
+ }
+ end = perftime();
+ printf("Server-side, key guessed wrong: %f usec.\n",
+ NANOCOUNT(start, end, iters)/1e3);
+
+ start = perftime();
+ for (i = 0; i < iters; ++i) {
+ crypto_dh_t *dh;
+ char key_out[CPATH_KEY_MATERIAL_LEN];
+ int s;
+ dh = crypto_dh_dup(dh_out);
+ s = onion_skin_TAP_client_handshake(dh, or, key_out, sizeof(key_out));
+ tor_assert(s == 0);
+ }
+ end = perftime();
+ printf("Client-side, part 2: %f usec.\n",
+ NANOCOUNT(start, end, iters)/1e3);
+
+ crypto_pk_free(key);
+}
+
+#ifdef CURVE25519_ENABLED
+static void
+bench_onion_ntor(void)
+{
+ const int iters = 1<<10;
+ int i;
+ curve25519_keypair_t keypair1, keypair2;
+ uint64_t start, end;
+ uint8_t os[NTOR_ONIONSKIN_LEN];
+ uint8_t or[NTOR_REPLY_LEN];
+ ntor_handshake_state_t *state = NULL;
+ uint8_t nodeid[DIGEST_LEN];
+ di_digest256_map_t *keymap = NULL;
+
+ curve25519_secret_key_generate(&keypair1.seckey, 0);
+ curve25519_public_key_generate(&keypair1.pubkey, &keypair1.seckey);
+ curve25519_secret_key_generate(&keypair2.seckey, 0);
+ curve25519_public_key_generate(&keypair2.pubkey, &keypair2.seckey);
+ dimap_add_entry(&keymap, keypair1.pubkey.public_key, &keypair1);
+ dimap_add_entry(&keymap, keypair2.pubkey.public_key, &keypair2);
+
+ reset_perftime();
+ start = perftime();
+ for (i = 0; i < iters; ++i) {
+ onion_skin_ntor_create(nodeid, &keypair1.pubkey, &state, os);
+ ntor_handshake_state_free(state);
+ }
+ end = perftime();
+ printf("Client-side, part 1: %f usec.\n", NANOCOUNT(start, end, iters)/1e3);
+
+ onion_skin_ntor_create(nodeid, &keypair1.pubkey, &state, os);
+ start = perftime();
+ for (i = 0; i < iters; ++i) {
+ uint8_t key_out[CPATH_KEY_MATERIAL_LEN];
+ onion_skin_ntor_server_handshake(os, keymap, NULL, nodeid, or,
+ key_out, sizeof(key_out));
+ }
+ end = perftime();
+ printf("Server-side: %f usec\n",
+ NANOCOUNT(start, end, iters)/1e3);
+
+ start = perftime();
+ for (i = 0; i < iters; ++i) {
+ uint8_t key_out[CPATH_KEY_MATERIAL_LEN];
+ int s;
+ s = onion_skin_ntor_client_handshake(state, or, key_out, sizeof(key_out));
+ tor_assert(s == 0);
+ }
+ end = perftime();
+ printf("Client-side, part 2: %f usec.\n",
+ NANOCOUNT(start, end, iters)/1e3);
+
+ ntor_handshake_state_free(state);
+ dimap_free(keymap, NULL);
+}
+#endif
+
+static void
bench_cell_aes(void)
{
uint64_t start, end;
@@ -184,18 +309,18 @@ bench_dmap(void)
NANOCOUNT(pt3, pt4, iters*elts));
for (i = 0; i < iters; ++i) {
- SMARTLIST_FOREACH(sl, const char *, cp, n += digestset_isin(ds, cp));
- SMARTLIST_FOREACH(sl2, const char *, cp, n += digestset_isin(ds, cp));
+ SMARTLIST_FOREACH(sl, const char *, cp, n += digestset_contains(ds, cp));
+ SMARTLIST_FOREACH(sl2, const char *, cp, n += digestset_contains(ds, cp));
}
end = perftime();
- printf("digestset_isin: %.2f ns per element.\n",
+ printf("digestset_contains: %.2f ns per element.\n",
NANOCOUNT(pt4, end, iters*elts*2));
/* We need to use this, or else the whole loop gets optimized out. */
printf("Hits == %d\n", n);
for (i = 0; i < fpostests; ++i) {
crypto_rand(d, 20);
- if (digestset_isin(ds, d)) ++fp;
+ if (digestset_contains(ds, d)) ++fp;
}
printf("False positive rate on digestset: %.2f%%\n",
(fp/(double)fpostests)*100);
@@ -355,6 +480,10 @@ typedef struct benchmark_t {
static struct benchmark_t benchmarks[] = {
ENT(dmap),
ENT(aes),
+ ENT(onion_TAP),
+#ifdef CURVE25519_ENABLED
+ ENT(onion_ntor),
+#endif
ENT(cell_aes),
ENT(cell_ops),
ENT(dh),
@@ -385,6 +514,8 @@ main(int argc, const char **argv)
int i;
int list=0, n_enabled=0;
benchmark_t *b;
+ char *errmsg;
+ or_options_t *options;
tor_threads_init();
@@ -405,6 +536,16 @@ main(int argc, const char **argv)
reset_perftime();
crypto_seed_rng(1);
+ options = options_new();
+ init_logging();
+ options->command = CMD_RUN_UNITTESTS;
+ options->DataDirectory = tor_strdup("");
+ options_init(options);
+ if (set_options(options, &errmsg) < 0) {
+ printf("Failed to set initial options: %s\n", errmsg);
+ tor_free(errmsg);
+ return 1;
+ }
for (b = benchmarks; b->name; ++b) {
if (b->enabled || n_enabled == 0) {
diff --git a/src/test/include.am b/src/test/include.am
index 075df36460..112d1a79d8 100644
--- a/src/test/include.am
+++ b/src/test/include.am
@@ -36,18 +36,33 @@ src_test_bench_CPPFLAGS= $(src_test_AM_CPPFLAGS)
src_test_test_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ \
@TOR_LDFLAGS_libevent@
-src_test_test_LDADD = src/or/libtor.a src/common/libor.a src/common/libor-crypto.a \
+src_test_test_LDADD = src/or/libtor.a src/common/libor.a \
+ src/common/libor-crypto.a $(LIBDONNA) \
src/common/libor-event.a \
@TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \
- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@
+ @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
src_test_bench_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ \
@TOR_LDFLAGS_libevent@
-src_test_bench_LDADD = src/or/libtor.a src/common/libor.a src/common/libor-crypto.a \
+src_test_bench_LDADD = src/or/libtor.a src/common/libor.a \
+ src/common/libor-crypto.a $(LIBDONNA) \
src/common/libor-event.a \
@TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \
- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@
+ @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
noinst_HEADERS+= \
src/test/test.h
+if CURVE25519_ENABLED
+noinst_PROGRAMS+= src/test/test-ntor-cl
+src_test_test_ntor_cl_SOURCES = src/test/test_ntor_cl.c
+src_test_test_ntor_cl_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@
+src_test_test_ntor_cl_LDADD = src/or/libtor.a src/common/libor.a \
+ src/common/libor-crypto.a $(LIBDONNA) \
+ @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ \
+ @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
+src_test_test_ntor_cl_AM_CPPFLAGS = \
+ -I"$(top_srcdir)/src/or"
+
+endif
+
diff --git a/src/test/ntor_ref.py b/src/test/ntor_ref.py
new file mode 100644
index 0000000000..ade468da7d
--- /dev/null
+++ b/src/test/ntor_ref.py
@@ -0,0 +1,387 @@
+# Copyright 2012-2013, The Tor Project, Inc
+# See LICENSE for licensing information
+
+"""
+ntor_ref.py
+
+
+This module is a reference implementation for the "ntor" protocol
+s proposed by Goldberg, Stebila, and Ustaoglu and as instantiated in
+Tor Proposal 216.
+
+It's meant to be used to validate Tor's ntor implementation. It
+requirs the curve25519 python module from the curve25519-donna
+package.
+
+ *** DO NOT USE THIS IN PRODUCTION. ***
+
+commands:
+
+ gen_kdf_vectors: Print out some test vectors for the RFC5869 KDF.
+ timing: Print a little timing information about this implementation's
+ handshake.
+ self-test: Try handshaking with ourself; make sure we can.
+ test-tor: Handshake with tor's ntor implementation via the program
+ src/test/test-ntor-cl; make sure we can.
+
+"""
+
+import binascii
+import curve25519
+import hashlib
+import hmac
+import subprocess
+
+# **********************************************************************
+# Helpers and constants
+
+def HMAC(key,msg):
+ "Return the HMAC-SHA256 of 'msg' using the key 'key'."
+ H = hmac.new(key, "", hashlib.sha256)
+ H.update(msg)
+ return H.digest()
+
+def H(msg,tweak):
+ """Return the hash of 'msg' using tweak 'tweak'. (In this version of ntor,
+ the tweaked hash is just HMAC with the tweak as the key.)"""
+ return HMAC(key=tweak,
+ msg=msg)
+
+def keyid(k):
+ """Return the 32-byte key ID of a public key 'k'. (Since we're
+ using curve25519, we let k be its own keyid.)
+ """
+ return k.serialize()
+
+NODE_ID_LENGTH = 20
+KEYID_LENGTH = 32
+G_LENGTH = 32
+H_LENGTH = 32
+
+PROTOID = b"ntor-curve25519-sha256-1"
+M_EXPAND = PROTOID + ":key_expand"
+T_MAC = PROTOID + ":mac"
+T_KEY = PROTOID + ":key_extract"
+T_VERIFY = PROTOID + ":verify"
+
+def H_mac(msg): return H(msg, tweak=T_MAC)
+def H_verify(msg): return H(msg, tweak=T_VERIFY)
+
+class PrivateKey(curve25519.keys.Private):
+ """As curve25519.keys.Private, but doesn't regenerate its public key
+ every time you ask for it.
+ """
+ def __init__(self):
+ curve25519.keys.Private.__init__(self)
+ self._memo_public = None
+
+ def get_public(self):
+ if self._memo_public is None:
+ self._memo_public = curve25519.keys.Private.get_public(self)
+
+ return self._memo_public
+
+# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+def kdf_rfc5869(key, salt, info, n):
+
+ prk = HMAC(key=salt, msg=key)
+
+ out = b""
+ last = b""
+ i = 1
+ while len(out) < n:
+ m = last + info + chr(i)
+ last = h = HMAC(key=prk, msg=m)
+ out += h
+ i = i + 1
+ return out[:n]
+
+def kdf_ntor(key, n):
+ return kdf_rfc5869(key, T_KEY, M_EXPAND, n)
+
+# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+def client_part1(node_id, pubkey_B):
+ """Initial handshake, client side.
+
+ From the specification:
+
+ <<To send a create cell, the client generates a keypair x,X =
+ KEYGEN(), and sends a CREATE cell with contents:
+
+ NODEID: ID -- ID_LENGTH bytes
+ KEYID: KEYID(B) -- H_LENGTH bytes
+ CLIENT_PK: X -- G_LENGTH bytes
+ >>
+
+ Takes node_id -- a digest of the server's identity key,
+ pubkey_B -- a public key for the server.
+ Returns a tuple of (client secret key x, client->server message)"""
+
+ assert len(node_id) == NODE_ID_LENGTH
+
+ key_id = keyid(pubkey_B)
+ seckey_x = PrivateKey()
+ pubkey_X = seckey_x.get_public().serialize()
+
+ message = node_id + key_id + pubkey_X
+
+ assert len(message) == NODE_ID_LENGTH + H_LENGTH + H_LENGTH
+ return seckey_x , message
+
+def hash_nil(x):
+ """Identity function: if we don't pass a hash function that does nothing,
+ the curve25519 python lib will try to sha256 it for us."""
+ return x
+
+def bad_result(r):
+ """Helper: given a result of multiplying a public key by a private key,
+ return True iff one of the inputs was broken"""
+ assert len(r) == 32
+ return r == '\x00'*32
+
+def server(seckey_b, my_node_id, message, keyBytes=72):
+ """Handshake step 2, server side.
+
+ From the spec:
+
+ <<
+ The server generates a keypair of y,Y = KEYGEN(), and computes
+
+ secret_input = EXP(X,y) | EXP(X,b) | ID | B | X | Y | PROTOID
+ KEY_SEED = H(secret_input, t_key)
+ verify = H(secret_input, t_verify)
+ auth_input = verify | ID | B | Y | X | PROTOID | "Server"
+
+ The server sends a CREATED cell containing:
+
+ SERVER_PK: Y -- G_LENGTH bytes
+ AUTH: H(auth_input, t_mac) -- H_LENGTH byets
+ >>
+
+ Takes seckey_b -- the server's secret key
+ my_node_id -- the servers's public key digest,
+ message -- a message from a client
+ keybytes -- amount of key material to generate
+
+ Returns a tuple of (key material, sever->client reply), or None on
+ error.
+ """
+
+ assert len(message) == NODE_ID_LENGTH + H_LENGTH + H_LENGTH
+
+ if my_node_id != message[:NODE_ID_LENGTH]:
+ return None
+
+ badness = (keyid(seckey_b.get_public()) !=
+ message[NODE_ID_LENGTH:NODE_ID_LENGTH+H_LENGTH])
+
+ pubkey_X = curve25519.keys.Public(message[NODE_ID_LENGTH+H_LENGTH:])
+ seckey_y = PrivateKey()
+ pubkey_Y = seckey_y.get_public()
+ pubkey_B = seckey_b.get_public()
+ xy = seckey_y.get_shared_key(pubkey_X, hash_nil)
+ xb = seckey_b.get_shared_key(pubkey_X, hash_nil)
+
+ # secret_input = EXP(X,y) | EXP(X,b) | ID | B | X | Y | PROTOID
+ secret_input = (xy + xb + my_node_id +
+ pubkey_B.serialize() +
+ pubkey_X.serialize() +
+ pubkey_Y.serialize() +
+ PROTOID)
+
+ verify = H_verify(secret_input)
+
+ # auth_input = verify | ID | B | Y | X | PROTOID | "Server"
+ auth_input = (verify +
+ my_node_id +
+ pubkey_B.serialize() +
+ pubkey_Y.serialize() +
+ pubkey_X.serialize() +
+ PROTOID +
+ "Server")
+
+ msg = pubkey_Y.serialize() + H_mac(auth_input)
+
+ badness += bad_result(xb)
+ badness += bad_result(xy)
+
+ if badness:
+ return None
+
+ keys = kdf_ntor(secret_input, keyBytes)
+
+ return keys, msg
+
+def client_part2(seckey_x, msg, node_id, pubkey_B, keyBytes=72):
+ """Handshake step 3: client side again.
+
+ From the spec:
+
+ <<
+ The client then checks Y is in G^* [see NOTE below], and computes
+
+ secret_input = EXP(Y,x) | EXP(B,x) | ID | B | X | Y | PROTOID
+ KEY_SEED = H(secret_input, t_key)
+ verify = H(secret_input, t_verify)
+ auth_input = verify | ID | B | Y | X | PROTOID | "Server"
+
+ The client verifies that AUTH == H(auth_input, t_mac).
+ >>
+
+ Takes seckey_x -- the secret key we generated in step 1.
+ msg -- the message from the server.
+ node_id -- the node_id we used in step 1.
+ server_key -- the same public key we used in step 1.
+ keyBytes -- the number of bytes we want to generate
+ Returns key material, or None on error
+
+ """
+ assert len(msg) == G_LENGTH + H_LENGTH
+
+ pubkey_Y = curve25519.keys.Public(msg[:G_LENGTH])
+ their_auth = msg[G_LENGTH:]
+
+ pubkey_X = seckey_x.get_public()
+
+ yx = seckey_x.get_shared_key(pubkey_Y, hash_nil)
+ bx = seckey_x.get_shared_key(pubkey_B, hash_nil)
+
+
+ # secret_input = EXP(Y,x) | EXP(B,x) | ID | B | X | Y | PROTOID
+ secret_input = (yx + bx + node_id +
+ pubkey_B.serialize() +
+ pubkey_X.serialize() +
+ pubkey_Y.serialize() + PROTOID)
+
+ verify = H_verify(secret_input)
+
+ # auth_input = verify | ID | B | Y | X | PROTOID | "Server"
+ auth_input = (verify + node_id +
+ pubkey_B.serialize() +
+ pubkey_Y.serialize() +
+ pubkey_X.serialize() + PROTOID +
+ "Server")
+
+ my_auth = H_mac(auth_input)
+
+ badness = my_auth != their_auth
+ badness = bad_result(yx) + bad_result(bx)
+
+ if badness:
+ return None
+
+ return kdf_ntor(secret_input, keyBytes)
+
+# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+def demo(node_id="iToldYouAboutStairs.", server_key=PrivateKey()):
+ """
+ Try to handshake with ourself.
+ """
+ x, create = client_part1(node_id, server_key.get_public())
+ skeys, created = server(server_key, node_id, create)
+ ckeys = client_part2(x, created, node_id, server_key.get_public())
+ assert len(skeys) == 72
+ assert len(ckeys) == 72
+ assert skeys == ckeys
+
+# ======================================================================
+def timing():
+ """
+ Use Python's timeit module to see how fast this nonsense is
+ """
+ import timeit
+ t = timeit.Timer(stmt="ntor_ref.demo(N,SK)",
+ setup="import ntor_ref,curve25519;N='ABCD'*5;SK=ntor_ref.PrivateKey()")
+ print t.timeit(number=1000)
+
+# ======================================================================
+
+def kdf_vectors():
+ """
+ Generate some vectors to check our KDF.
+ """
+ import binascii
+ def kdf_vec(inp):
+ k = kdf(inp, T_KEY, M_EXPAND, 100)
+ print repr(inp), "\n\""+ binascii.b2a_hex(k)+ "\""
+ kdf_vec("")
+ kdf_vec("Tor")
+ kdf_vec("AN ALARMING ITEM TO FIND ON YOUR CREDIT-RATING STATEMENT")
+
+# ======================================================================
+
+
+def test_tor():
+ """
+ Call the test-ntor-cl command-line program to make sure we can
+ interoperate with Tor's ntor program
+ """
+ enhex=binascii.b2a_hex
+ dehex=lambda s: binascii.a2b_hex(s.strip())
+
+ PROG = "./src/test/test-ntor-cl"
+ def tor_client1(node_id, pubkey_B):
+ " returns (msg, state) "
+ p = subprocess.Popen([PROG, "client1", enhex(node_id),
+ enhex(pubkey_B.serialize())],
+ stdout=subprocess.PIPE)
+ return map(dehex, p.stdout.readlines())
+ def tor_server1(seckey_b, node_id, msg, n):
+ " returns (msg, keys) "
+ p = subprocess.Popen([PROG, "server1", enhex(seckey_b.serialize()),
+ enhex(node_id), enhex(msg), str(n)],
+ stdout=subprocess.PIPE)
+ return map(dehex, p.stdout.readlines())
+ def tor_client2(state, msg, n):
+ " returns (keys,) "
+ p = subprocess.Popen([PROG, "client2", enhex(state),
+ enhex(msg), str(n)],
+ stdout=subprocess.PIPE)
+ return map(dehex, p.stdout.readlines())
+
+
+ node_id = "thisisatornodeid$#%^"
+ seckey_b = PrivateKey()
+ pubkey_B = seckey_b.get_public()
+
+ # Do a pure-Tor handshake
+ c2s_msg, c_state = tor_client1(node_id, pubkey_B)
+ s2c_msg, s_keys = tor_server1(seckey_b, node_id, c2s_msg, 90)
+ c_keys, = tor_client2(c_state, s2c_msg, 90)
+ assert c_keys == s_keys
+ assert len(c_keys) == 90
+
+ # Try a mixed handshake with Tor as the client
+ c2s_msg, c_state = tor_client1(node_id, pubkey_B)
+ s_keys, s2c_msg = server(seckey_b, node_id, c2s_msg, 90)
+ c_keys, = tor_client2(c_state, s2c_msg, 90)
+ assert c_keys == s_keys
+ assert len(c_keys) == 90
+
+ # Now do a mixed handshake with Tor as the server
+ c_x, c2s_msg = client_part1(node_id, pubkey_B)
+ s2c_msg, s_keys = tor_server1(seckey_b, node_id, c2s_msg, 90)
+ c_keys = client_part2(c_x, s2c_msg, node_id, pubkey_B, 90)
+ assert c_keys == s_keys
+ assert len(c_keys) == 90
+
+ print "We just interoperated."
+
+# ======================================================================
+
+if __name__ == '__main__':
+ import sys
+ if sys.argv[1] == 'gen_kdf_vectors':
+ kdf_vectors()
+ elif sys.argv[1] == 'timing':
+ timing()
+ elif sys.argv[1] == 'self-test':
+ demo()
+ elif sys.argv[1] == 'test-tor':
+ test_tor()
+
+ else:
+ print __doc__
diff --git a/src/test/test-child.c b/src/test/test-child.c
index c5725f1c5a..ef10fbb922 100644
--- a/src/test/test-child.c
+++ b/src/test/test-child.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2012, The Tor Project, Inc. */
+/* Copyright (c) 2011-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include <stdio.h>
diff --git a/src/test/test.c b/src/test/test.c
index c96aeb7053..b838172d5a 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/* Ordinarily defined in tor_main.c; this bit is just here to provide one
@@ -53,10 +53,14 @@ double fabs(double x);
#include "torgzip.h"
#include "mempool.h"
#include "memarea.h"
-#include "onion.h"
+#include "onion_tap.h"
#include "policies.h"
#include "rephist.h"
#include "routerparse.h"
+#ifdef CURVE25519_ENABLED
+#include "crypto_curve25519.h"
+#include "onion_ntor.h"
+#endif
#ifdef USE_DMALLOC
#include <dmalloc.h>
@@ -815,11 +819,11 @@ test_onion_handshake(void)
{
/* client-side */
crypto_dh_t *c_dh = NULL;
- char c_buf[ONIONSKIN_CHALLENGE_LEN];
+ char c_buf[TAP_ONIONSKIN_CHALLENGE_LEN];
char c_keys[40];
/* server-side */
- char s_buf[ONIONSKIN_REPLY_LEN];
+ char s_buf[TAP_ONIONSKIN_REPLY_LEN];
char s_keys[40];
/* shared */
@@ -828,18 +832,18 @@ test_onion_handshake(void)
pk = pk_generate(0);
/* client handshake 1. */
- memset(c_buf, 0, ONIONSKIN_CHALLENGE_LEN);
- test_assert(! onion_skin_create(pk, &c_dh, c_buf));
+ memset(c_buf, 0, TAP_ONIONSKIN_CHALLENGE_LEN);
+ test_assert(! onion_skin_TAP_create(pk, &c_dh, c_buf));
/* server handshake */
- memset(s_buf, 0, ONIONSKIN_REPLY_LEN);
+ memset(s_buf, 0, TAP_ONIONSKIN_REPLY_LEN);
memset(s_keys, 0, 40);
- test_assert(! onion_skin_server_handshake(c_buf, pk, NULL,
+ test_assert(! onion_skin_TAP_server_handshake(c_buf, pk, NULL,
s_buf, s_keys, 40));
/* client handshake 2 */
memset(c_keys, 0, 40);
- test_assert(! onion_skin_client_handshake(c_dh, s_buf, c_keys, 40));
+ test_assert(! onion_skin_TAP_client_handshake(c_dh, s_buf, c_keys, 40));
if (memcmp(c_keys, s_keys, 40)) {
puts("Aiiiie");
@@ -856,6 +860,60 @@ test_onion_handshake(void)
crypto_pk_free(pk);
}
+#ifdef CURVE25519_ENABLED
+static void
+test_ntor_handshake(void *arg)
+{
+ /* client-side */
+ ntor_handshake_state_t *c_state = NULL;
+ uint8_t c_buf[NTOR_ONIONSKIN_LEN];
+ uint8_t c_keys[400];
+
+ /* server-side */
+ di_digest256_map_t *s_keymap=NULL;
+ curve25519_keypair_t s_keypair;
+ uint8_t s_buf[NTOR_REPLY_LEN];
+ uint8_t s_keys[400];
+
+ /* shared */
+ const curve25519_public_key_t *server_pubkey;
+ uint8_t node_id[20] = "abcdefghijklmnopqrst";
+
+ (void) arg;
+
+ /* Make the server some keys */
+ curve25519_secret_key_generate(&s_keypair.seckey, 0);
+ curve25519_public_key_generate(&s_keypair.pubkey, &s_keypair.seckey);
+ dimap_add_entry(&s_keymap, s_keypair.pubkey.public_key, &s_keypair);
+ server_pubkey = &s_keypair.pubkey;
+
+ /* client handshake 1. */
+ memset(c_buf, 0, NTOR_ONIONSKIN_LEN);
+ tt_int_op(0, ==, onion_skin_ntor_create(node_id, server_pubkey,
+ &c_state, c_buf));
+
+ /* server handshake */
+ memset(s_buf, 0, NTOR_REPLY_LEN);
+ memset(s_keys, 0, 40);
+ tt_int_op(0, ==, onion_skin_ntor_server_handshake(c_buf, s_keymap, NULL,
+ node_id,
+ s_buf, s_keys, 400));
+
+ /* client handshake 2 */
+ memset(c_keys, 0, 40);
+ tt_int_op(0, ==, onion_skin_ntor_client_handshake(c_state, s_buf,
+ c_keys, 400));
+
+ test_memeq(c_keys, s_keys, 400);
+ memset(s_buf, 0, 40);
+ test_memneq(c_keys, s_buf, 40);
+
+ done:
+ ntor_handshake_state_free(c_state);
+ dimap_free(s_keymap, NULL);
+}
+#endif
+
static void
test_circuit_timeout(void)
{
@@ -1354,11 +1412,20 @@ test_rend_fns(void)
char address2[] = "aaaaaaaaaaaaaaaa.onion";
char address3[] = "fooaddress.exit";
char address4[] = "www.torproject.org";
+ char address5[] = "foo.abcdefghijklmnop.onion";
+ char address6[] = "foo.bar.abcdefghijklmnop.onion";
+ char address7[] = ".abcdefghijklmnop.onion";
test_assert(BAD_HOSTNAME == parse_extended_hostname(address1));
test_assert(ONION_HOSTNAME == parse_extended_hostname(address2));
+ test_streq(address2, "aaaaaaaaaaaaaaaa");
test_assert(EXIT_HOSTNAME == parse_extended_hostname(address3));
test_assert(NORMAL_HOSTNAME == parse_extended_hostname(address4));
+ test_assert(ONION_HOSTNAME == parse_extended_hostname(address5));
+ test_streq(address5, "abcdefghijklmnop");
+ test_assert(ONION_HOSTNAME == parse_extended_hostname(address6));
+ test_streq(address6, "abcdefghijklmnop");
+ test_assert(BAD_HOSTNAME == parse_extended_hostname(address7));
pk1 = pk_generate(0);
pk2 = pk_generate(1);
@@ -1462,59 +1529,35 @@ test_geoip(void)
*dirreq_stats_1 =
"dirreq-stats-end 2010-08-12 13:27:30 (86400 s)\n"
"dirreq-v3-ips ab=8\n"
- "dirreq-v2-ips \n"
"dirreq-v3-reqs ab=8\n"
- "dirreq-v2-reqs \n"
"dirreq-v3-resp ok=0,not-enough-sigs=0,unavailable=0,not-found=0,"
"not-modified=0,busy=0\n"
- "dirreq-v2-resp ok=0,unavailable=0,not-found=0,not-modified=0,"
- "busy=0\n"
"dirreq-v3-direct-dl complete=0,timeout=0,running=0\n"
- "dirreq-v2-direct-dl complete=0,timeout=0,running=0\n"
- "dirreq-v3-tunneled-dl complete=0,timeout=0,running=0\n"
- "dirreq-v2-tunneled-dl complete=0,timeout=0,running=0\n",
+ "dirreq-v3-tunneled-dl complete=0,timeout=0,running=0\n",
*dirreq_stats_2 =
"dirreq-stats-end 2010-08-12 13:27:30 (86400 s)\n"
"dirreq-v3-ips \n"
- "dirreq-v2-ips \n"
"dirreq-v3-reqs \n"
- "dirreq-v2-reqs \n"
"dirreq-v3-resp ok=0,not-enough-sigs=0,unavailable=0,not-found=0,"
"not-modified=0,busy=0\n"
- "dirreq-v2-resp ok=0,unavailable=0,not-found=0,not-modified=0,"
- "busy=0\n"
"dirreq-v3-direct-dl complete=0,timeout=0,running=0\n"
- "dirreq-v2-direct-dl complete=0,timeout=0,running=0\n"
- "dirreq-v3-tunneled-dl complete=0,timeout=0,running=0\n"
- "dirreq-v2-tunneled-dl complete=0,timeout=0,running=0\n",
+ "dirreq-v3-tunneled-dl complete=0,timeout=0,running=0\n",
*dirreq_stats_3 =
"dirreq-stats-end 2010-08-12 13:27:30 (86400 s)\n"
"dirreq-v3-ips \n"
- "dirreq-v2-ips \n"
"dirreq-v3-reqs \n"
- "dirreq-v2-reqs \n"
"dirreq-v3-resp ok=8,not-enough-sigs=0,unavailable=0,not-found=0,"
"not-modified=0,busy=0\n"
- "dirreq-v2-resp ok=0,unavailable=0,not-found=0,not-modified=0,"
- "busy=0\n"
"dirreq-v3-direct-dl complete=0,timeout=0,running=0\n"
- "dirreq-v2-direct-dl complete=0,timeout=0,running=0\n"
- "dirreq-v3-tunneled-dl complete=0,timeout=0,running=0\n"
- "dirreq-v2-tunneled-dl complete=0,timeout=0,running=0\n",
+ "dirreq-v3-tunneled-dl complete=0,timeout=0,running=0\n",
*dirreq_stats_4 =
"dirreq-stats-end 2010-08-12 13:27:30 (86400 s)\n"
"dirreq-v3-ips \n"
- "dirreq-v2-ips \n"
"dirreq-v3-reqs \n"
- "dirreq-v2-reqs \n"
"dirreq-v3-resp ok=8,not-enough-sigs=0,unavailable=0,not-found=0,"
"not-modified=0,busy=0\n"
- "dirreq-v2-resp ok=0,unavailable=0,not-found=0,not-modified=0,"
- "busy=0\n"
"dirreq-v3-direct-dl complete=0,timeout=0,running=0\n"
- "dirreq-v2-direct-dl complete=0,timeout=0,running=0\n"
- "dirreq-v3-tunneled-dl complete=0,timeout=0,running=4\n"
- "dirreq-v2-tunneled-dl complete=0,timeout=0,running=0\n",
+ "dirreq-v3-tunneled-dl complete=0,timeout=0,running=4\n",
*entry_stats_1 =
"entry-stats-end 2010-08-12 13:27:30 (86400 s)\n"
"entry-ips ab=8\n",
@@ -1687,14 +1730,13 @@ test_geoip(void)
/* Note a successful network status response and make sure that it
* appears in the history string. */
- geoip_note_ns_response(GEOIP_CLIENT_NETWORKSTATUS, GEOIP_SUCCESS);
+ geoip_note_ns_response(GEOIP_SUCCESS);
s = geoip_format_dirreq_stats(now + 86400);
test_streq(dirreq_stats_3, s);
tor_free(s);
/* Start a tunneled directory request. */
- geoip_start_dirreq((uint64_t) 1, 1024, GEOIP_CLIENT_NETWORKSTATUS,
- DIRREQ_TUNNELED);
+ geoip_start_dirreq((uint64_t) 1, 1024, DIRREQ_TUNNELED);
s = geoip_format_dirreq_stats(now + 86400);
test_streq(dirreq_stats_4, s);
@@ -1947,6 +1989,9 @@ static struct testcase_t test_array[] = {
ENT(buffers),
{ "buffer_copy", test_buffer_copy, 0, NULL, NULL },
ENT(onion_handshake),
+#ifdef CURVE25519_ENABLED
+ { "ntor_handshake", test_ntor_handshake, 0, NULL, NULL },
+#endif
ENT(circuit_timeout),
ENT(policies),
ENT(rend_fns),
diff --git a/src/test/test.h b/src/test/test.h
index 08fad6b313..a89b558e5a 100644
--- a/src/test/test.h
+++ b/src/test/test.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2003, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_TEST_H
diff --git a/src/test/test_addr.c b/src/test/test_addr.c
index eea0fcde89..890dfe4366 100644
--- a/src/test/test_addr.c
+++ b/src/test/test_addr.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define ADDRESSMAP_PRIVATE
diff --git a/src/test/test_cell_formats.c b/src/test/test_cell_formats.c
index 4222c79d92..55d8d0f00f 100644
--- a/src/test/test_cell_formats.c
+++ b/src/test/test_cell_formats.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -9,6 +9,10 @@
#define RELAY_PRIVATE
#include "or.h"
#include "connection_edge.h"
+#include "onion.h"
+#include "onion_tap.h"
+#include "onion_fast.h"
+#include "onion_ntor.h"
#include "relay.h"
#include "test.h"
@@ -374,6 +378,500 @@ test_cfmt_connected_cells(void *arg)
tor_free(mem_op_hex_tmp);
}
+static void
+test_cfmt_create_cells(void *arg)
+{
+ uint8_t b[MAX_ONIONSKIN_CHALLENGE_LEN];
+ create_cell_t cc;
+ cell_t cell;
+ cell_t cell2;
+
+ (void)arg;
+
+ /* === Let's try parsing some good cells! */
+
+ /* A valid create cell. */
+ memset(&cell, 0, sizeof(cell));
+ memset(b, 0, sizeof(b));
+ crypto_rand((char*)b, TAP_ONIONSKIN_CHALLENGE_LEN);
+ cell.command = CELL_CREATE;
+ memcpy(cell.payload, b, TAP_ONIONSKIN_CHALLENGE_LEN);
+ tt_int_op(0, ==, create_cell_parse(&cc, &cell));
+ tt_int_op(CELL_CREATE, ==, cc.cell_type);
+ tt_int_op(ONION_HANDSHAKE_TYPE_TAP, ==, cc.handshake_type);
+ tt_int_op(TAP_ONIONSKIN_CHALLENGE_LEN, ==, cc.handshake_len);
+ test_memeq(cc.onionskin, b, TAP_ONIONSKIN_CHALLENGE_LEN + 10);
+ tt_int_op(0, ==, create_cell_format(&cell2, &cc));
+ tt_int_op(cell.command, ==, cell2.command);
+ test_memeq(cell.payload, cell2.payload, CELL_PAYLOAD_SIZE);
+
+ /* A valid create_fast cell. */
+ memset(&cell, 0, sizeof(cell));
+ memset(b, 0, sizeof(b));
+ crypto_rand((char*)b, CREATE_FAST_LEN);
+ cell.command = CELL_CREATE_FAST;
+ memcpy(cell.payload, b, CREATE_FAST_LEN);
+ tt_int_op(0, ==, create_cell_parse(&cc, &cell));
+ tt_int_op(CELL_CREATE_FAST, ==, cc.cell_type);
+ tt_int_op(ONION_HANDSHAKE_TYPE_FAST, ==, cc.handshake_type);
+ tt_int_op(CREATE_FAST_LEN, ==, cc.handshake_len);
+ test_memeq(cc.onionskin, b, CREATE_FAST_LEN + 10);
+ tt_int_op(0, ==, create_cell_format(&cell2, &cc));
+ tt_int_op(cell.command, ==, cell2.command);
+ test_memeq(cell.payload, cell2.payload, CELL_PAYLOAD_SIZE);
+
+ /* A valid create2 cell with a TAP payload */
+ memset(&cell, 0, sizeof(cell));
+ memset(b, 0, sizeof(b));
+ crypto_rand((char*)b, TAP_ONIONSKIN_CHALLENGE_LEN);
+ cell.command = CELL_CREATE2;
+ memcpy(cell.payload, "\x00\x00\x00\xBA", 4); /* TAP, 186 bytes long */
+ memcpy(cell.payload+4, b, TAP_ONIONSKIN_CHALLENGE_LEN);
+ tt_int_op(0, ==, create_cell_parse(&cc, &cell));
+ tt_int_op(CELL_CREATE2, ==, cc.cell_type);
+ tt_int_op(ONION_HANDSHAKE_TYPE_TAP, ==, cc.handshake_type);
+ tt_int_op(TAP_ONIONSKIN_CHALLENGE_LEN, ==, cc.handshake_len);
+ test_memeq(cc.onionskin, b, TAP_ONIONSKIN_CHALLENGE_LEN + 10);
+ tt_int_op(0, ==, create_cell_format(&cell2, &cc));
+ tt_int_op(cell.command, ==, cell2.command);
+ test_memeq(cell.payload, cell2.payload, CELL_PAYLOAD_SIZE);
+
+ /* A valid create2 cell with an ntor payload */
+ memset(&cell, 0, sizeof(cell));
+ memset(b, 0, sizeof(b));
+ crypto_rand((char*)b, NTOR_ONIONSKIN_LEN);
+ cell.command = CELL_CREATE2;
+ memcpy(cell.payload, "\x00\x02\x00\x54", 4); /* ntor, 84 bytes long */
+ memcpy(cell.payload+4, b, NTOR_ONIONSKIN_LEN);
+#ifdef CURVE25519_ENABLED
+ tt_int_op(0, ==, create_cell_parse(&cc, &cell));
+ tt_int_op(CELL_CREATE2, ==, cc.cell_type);
+ tt_int_op(ONION_HANDSHAKE_TYPE_NTOR, ==, cc.handshake_type);
+ tt_int_op(NTOR_ONIONSKIN_LEN, ==, cc.handshake_len);
+ test_memeq(cc.onionskin, b, NTOR_ONIONSKIN_LEN + 10);
+ tt_int_op(0, ==, create_cell_format(&cell2, &cc));
+ tt_int_op(cell.command, ==, cell2.command);
+ test_memeq(cell.payload, cell2.payload, CELL_PAYLOAD_SIZE);
+#else
+ tt_int_op(-1, ==, create_cell_parse(&cc, &cell));
+#endif
+
+ /* A valid create cell with an ntor payload, in legacy format. */
+ memset(&cell, 0, sizeof(cell));
+ memset(b, 0, sizeof(b));
+ crypto_rand((char*)b, NTOR_ONIONSKIN_LEN);
+ cell.command = CELL_CREATE;
+ memcpy(cell.payload, "ntorNTORntorNTOR", 16);
+ memcpy(cell.payload+16, b, NTOR_ONIONSKIN_LEN);
+#ifdef CURVE25519_ENABLED
+ tt_int_op(0, ==, create_cell_parse(&cc, &cell));
+ tt_int_op(CELL_CREATE, ==, cc.cell_type);
+ tt_int_op(ONION_HANDSHAKE_TYPE_NTOR, ==, cc.handshake_type);
+ tt_int_op(NTOR_ONIONSKIN_LEN, ==, cc.handshake_len);
+ test_memeq(cc.onionskin, b, NTOR_ONIONSKIN_LEN + 10);
+ tt_int_op(0, ==, create_cell_format(&cell2, &cc));
+ tt_int_op(cell.command, ==, cell2.command);
+ test_memeq(cell.payload, cell2.payload, CELL_PAYLOAD_SIZE);
+#else
+ tt_int_op(-1, ==, create_cell_parse(&cc, &cell));
+#endif
+
+ /* == Okay, now let's try to parse some impossible stuff. */
+
+ /* It has to be some kind of a create cell! */
+ cell.command = CELL_CREATED;
+ tt_int_op(-1, ==, create_cell_parse(&cc, &cell));
+
+ /* You can't acutally make an unparseable CREATE or CREATE_FAST cell. */
+
+ /* Try some CREATE2 cells. First with a bad type. */
+ cell.command = CELL_CREATE2;
+ memcpy(cell.payload, "\x00\x50\x00\x99", 4); /* Type 0x50???? */
+ tt_int_op(-1, ==, create_cell_parse(&cc, &cell));
+ /* Now a good type with an incorrect length. */
+ memcpy(cell.payload, "\x00\x00\x00\xBC", 4); /* TAP, 187 bytes.*/
+ tt_int_op(-1, ==, create_cell_parse(&cc, &cell));
+ /* Now a good type with a ridiculous length. */
+ memcpy(cell.payload, "\x00\x00\x02\x00", 4); /* TAP, 512 bytes.*/
+ tt_int_op(-1, ==, create_cell_parse(&cc, &cell));
+
+ /* == Time to try formatting bad cells. The important thing is that
+ we reject big lengths, so just check that for now. */
+ cc.handshake_len = 512;
+ tt_int_op(-1, ==, create_cell_format(&cell2, &cc));
+
+ /* == Try formatting a create2 cell we don't understand. XXXX */
+
+ done:
+ ;
+}
+
+static void
+test_cfmt_created_cells(void *arg)
+{
+ uint8_t b[512];
+ created_cell_t cc;
+ cell_t cell;
+ cell_t cell2;
+
+ (void)arg;
+
+ /* A good CREATED cell */
+ memset(&cell, 0, sizeof(cell));
+ memset(b, 0, sizeof(b));
+ crypto_rand((char*)b, TAP_ONIONSKIN_REPLY_LEN);
+ cell.command = CELL_CREATED;
+ memcpy(cell.payload, b, TAP_ONIONSKIN_REPLY_LEN);
+ tt_int_op(0, ==, created_cell_parse(&cc, &cell));
+ tt_int_op(CELL_CREATED, ==, cc.cell_type);
+ tt_int_op(TAP_ONIONSKIN_REPLY_LEN, ==, cc.handshake_len);
+ test_memeq(cc.reply, b, TAP_ONIONSKIN_REPLY_LEN + 10);
+ tt_int_op(0, ==, created_cell_format(&cell2, &cc));
+ tt_int_op(cell.command, ==, cell2.command);
+ test_memeq(cell.payload, cell2.payload, CELL_PAYLOAD_SIZE);
+
+ /* A good CREATED_FAST cell */
+ memset(&cell, 0, sizeof(cell));
+ memset(b, 0, sizeof(b));
+ crypto_rand((char*)b, CREATED_FAST_LEN);
+ cell.command = CELL_CREATED_FAST;
+ memcpy(cell.payload, b, CREATED_FAST_LEN);
+ tt_int_op(0, ==, created_cell_parse(&cc, &cell));
+ tt_int_op(CELL_CREATED_FAST, ==, cc.cell_type);
+ tt_int_op(CREATED_FAST_LEN, ==, cc.handshake_len);
+ test_memeq(cc.reply, b, CREATED_FAST_LEN + 10);
+ tt_int_op(0, ==, created_cell_format(&cell2, &cc));
+ tt_int_op(cell.command, ==, cell2.command);
+ test_memeq(cell.payload, cell2.payload, CELL_PAYLOAD_SIZE);
+
+ /* A good CREATED2 cell with short reply */
+ memset(&cell, 0, sizeof(cell));
+ memset(b, 0, sizeof(b));
+ crypto_rand((char*)b, 64);
+ cell.command = CELL_CREATED2;
+ memcpy(cell.payload, "\x00\x40", 2);
+ memcpy(cell.payload+2, b, 64);
+ tt_int_op(0, ==, created_cell_parse(&cc, &cell));
+ tt_int_op(CELL_CREATED2, ==, cc.cell_type);
+ tt_int_op(64, ==, cc.handshake_len);
+ test_memeq(cc.reply, b, 80);
+ tt_int_op(0, ==, created_cell_format(&cell2, &cc));
+ tt_int_op(cell.command, ==, cell2.command);
+ test_memeq(cell.payload, cell2.payload, CELL_PAYLOAD_SIZE);
+
+ /* A good CREATED2 cell with maximal reply */
+ memset(&cell, 0, sizeof(cell));
+ memset(b, 0, sizeof(b));
+ crypto_rand((char*)b, 496);
+ cell.command = CELL_CREATED2;
+ memcpy(cell.payload, "\x01\xF0", 2);
+ memcpy(cell.payload+2, b, 496);
+ tt_int_op(0, ==, created_cell_parse(&cc, &cell));
+ tt_int_op(CELL_CREATED2, ==, cc.cell_type);
+ tt_int_op(496, ==, cc.handshake_len);
+ test_memeq(cc.reply, b, 496);
+ tt_int_op(0, ==, created_cell_format(&cell2, &cc));
+ tt_int_op(cell.command, ==, cell2.command);
+ test_memeq(cell.payload, cell2.payload, CELL_PAYLOAD_SIZE);
+
+ /* Bogus CREATED2 cell: too long! */
+ memset(&cell, 0, sizeof(cell));
+ memset(b, 0, sizeof(b));
+ crypto_rand((char*)b, 496);
+ cell.command = CELL_CREATED2;
+ memcpy(cell.payload, "\x01\xF1", 2);
+ tt_int_op(-1, ==, created_cell_parse(&cc, &cell));
+
+ /* Unformattable CREATED2 cell: too long! */
+ cc.handshake_len = 497;
+ tt_int_op(-1, ==, created_cell_format(&cell2, &cc));
+
+ done:
+ ;
+}
+
+static void
+test_cfmt_extend_cells(void *arg)
+{
+ cell_t cell;
+ uint8_t b[512];
+ extend_cell_t ec;
+ create_cell_t *cc = &ec.create_cell;
+ uint8_t p[RELAY_PAYLOAD_SIZE];
+ uint8_t p2[RELAY_PAYLOAD_SIZE];
+ uint8_t p2_cmd;
+ uint16_t p2_len;
+ char *mem_op_hex_tmp = NULL;
+
+ (void) arg;
+
+ /* Let's start with a simple EXTEND cell. */
+ memset(p, 0, sizeof(p));
+ memset(b, 0, sizeof(b));
+ crypto_rand((char*)b, TAP_ONIONSKIN_CHALLENGE_LEN);
+ memcpy(p, "\x12\xf4\x00\x01\x01\x02", 6); /* 18 244 0 1 : 258 */
+ memcpy(p+6,b,TAP_ONIONSKIN_CHALLENGE_LEN);
+ memcpy(p+6+TAP_ONIONSKIN_CHALLENGE_LEN, "electroencephalogram", 20);
+ tt_int_op(0, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND,
+ p, 26+TAP_ONIONSKIN_CHALLENGE_LEN));
+ tt_int_op(RELAY_COMMAND_EXTEND, ==, ec.cell_type);
+ tt_str_op("18.244.0.1", ==, fmt_addr(&ec.orport_ipv4.addr));
+ tt_int_op(258, ==, ec.orport_ipv4.port);
+ tt_int_op(AF_UNSPEC, ==, tor_addr_family(&ec.orport_ipv6.addr));
+ test_memeq(ec.node_id, "electroencephalogram", 20);
+ tt_int_op(cc->cell_type, ==, CELL_CREATE);
+ tt_int_op(cc->handshake_type, ==, ONION_HANDSHAKE_TYPE_TAP);
+ tt_int_op(cc->handshake_len, ==, TAP_ONIONSKIN_CHALLENGE_LEN);
+ test_memeq(cc->onionskin, b, TAP_ONIONSKIN_CHALLENGE_LEN+20);
+ tt_int_op(0, ==, extend_cell_format(&p2_cmd, &p2_len, p2, &ec));
+ tt_int_op(p2_cmd, ==, RELAY_COMMAND_EXTEND);
+ tt_int_op(p2_len, ==, 26+TAP_ONIONSKIN_CHALLENGE_LEN);
+ test_memeq(p2, p, RELAY_PAYLOAD_SIZE);
+
+ /* Let's do an ntor stuffed in a legacy EXTEND cell */
+ memset(p, 0, sizeof(p));
+ memset(b, 0, sizeof(b));
+ crypto_rand((char*)b, NTOR_ONIONSKIN_LEN);
+ memcpy(p, "\x12\xf4\x00\x01\x01\x02", 6); /* 18 244 0 1 : 258 */
+ memcpy(p+6,"ntorNTORntorNTOR", 16);
+ memcpy(p+22, b, NTOR_ONIONSKIN_LEN);
+ memcpy(p+6+TAP_ONIONSKIN_CHALLENGE_LEN, "electroencephalogram", 20);
+ tt_int_op(0, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND,
+ p, 26+TAP_ONIONSKIN_CHALLENGE_LEN));
+ tt_int_op(RELAY_COMMAND_EXTEND, ==, ec.cell_type);
+ tt_str_op("18.244.0.1", ==, fmt_addr(&ec.orport_ipv4.addr));
+ tt_int_op(258, ==, ec.orport_ipv4.port);
+ tt_int_op(AF_UNSPEC, ==, tor_addr_family(&ec.orport_ipv6.addr));
+ test_memeq(ec.node_id, "electroencephalogram", 20);
+ tt_int_op(cc->cell_type, ==, CELL_CREATE2);
+ tt_int_op(cc->handshake_type, ==, ONION_HANDSHAKE_TYPE_NTOR);
+ tt_int_op(cc->handshake_len, ==, NTOR_ONIONSKIN_LEN);
+ test_memeq(cc->onionskin, b, NTOR_ONIONSKIN_LEN+20);
+ tt_int_op(0, ==, extend_cell_format(&p2_cmd, &p2_len, p2, &ec));
+ tt_int_op(p2_cmd, ==, RELAY_COMMAND_EXTEND);
+ tt_int_op(p2_len, ==, 26+TAP_ONIONSKIN_CHALLENGE_LEN);
+ test_memeq(p2, p, RELAY_PAYLOAD_SIZE);
+ tt_int_op(0, ==, create_cell_format_relayed(&cell, cc));
+
+ /* Now let's do a minimal ntor EXTEND2 cell. */
+ memset(&ec, 0xff, sizeof(ec));
+ memset(p, 0, sizeof(p));
+ memset(b, 0, sizeof(b));
+ crypto_rand((char*)b, NTOR_ONIONSKIN_LEN);
+ /* 2 items; one 18.244.0.1:61681 */
+ memcpy(p, "\x02\x00\x06\x12\xf4\x00\x01\xf0\xf1", 9);
+ /* The other is a digest. */
+ memcpy(p+9, "\x02\x14" "anarchoindividualist", 22);
+ /* Prep for the handshake: type and length */
+ memcpy(p+31, "\x00\x02\x00\x54", 4);
+ memcpy(p+35, b, NTOR_ONIONSKIN_LEN);
+ tt_int_op(0, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ p, 35+NTOR_ONIONSKIN_LEN));
+ tt_int_op(RELAY_COMMAND_EXTEND2, ==, ec.cell_type);
+ tt_str_op("18.244.0.1", ==, fmt_addr(&ec.orport_ipv4.addr));
+ tt_int_op(61681, ==, ec.orport_ipv4.port);
+ tt_int_op(AF_UNSPEC, ==, tor_addr_family(&ec.orport_ipv6.addr));
+ test_memeq(ec.node_id, "anarchoindividualist", 20);
+ tt_int_op(cc->cell_type, ==, CELL_CREATE2);
+ tt_int_op(cc->handshake_type, ==, ONION_HANDSHAKE_TYPE_NTOR);
+ tt_int_op(cc->handshake_len, ==, NTOR_ONIONSKIN_LEN);
+ test_memeq(cc->onionskin, b, NTOR_ONIONSKIN_LEN+20);
+ tt_int_op(0, ==, extend_cell_format(&p2_cmd, &p2_len, p2, &ec));
+ tt_int_op(p2_cmd, ==, RELAY_COMMAND_EXTEND2);
+ tt_int_op(p2_len, ==, 35+NTOR_ONIONSKIN_LEN);
+ test_memeq(p2, p, RELAY_PAYLOAD_SIZE);
+
+ /* Now let's do a fanciful EXTEND2 cell. */
+ memset(&ec, 0xff, sizeof(ec));
+ memset(p, 0, sizeof(p));
+ memset(b, 0, sizeof(b));
+ crypto_rand((char*)b, 99);
+ /* 4 items; one 18 244 0 1 61681 */
+ memcpy(p, "\x04\x00\x06\x12\xf4\x00\x01\xf0\xf1", 9);
+ /* One is a digest. */
+ memcpy(p+9, "\x02\x14" "anthropomorphization", 22);
+ /* One is an ipv6 address */
+ memcpy(p+31, "\x01\x12\x20\x02\x00\x00\x00\x00\x00\x00"
+ "\x00\x00\x00\x00\x00\xf0\xc5\x1e\x11\x12", 20);
+ /* One is the Konami code. */
+ memcpy(p+51, "\xf0\x20upupdowndownleftrightleftrightba", 34);
+ /* Prep for the handshake: weird type and length */
+ memcpy(p+85, "\x01\x05\x00\x63", 4);
+ memcpy(p+89, b, 99);
+ tt_int_op(0, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2, p, 89+99));
+ tt_int_op(RELAY_COMMAND_EXTEND2, ==, ec.cell_type);
+ tt_str_op("18.244.0.1", ==, fmt_addr(&ec.orport_ipv4.addr));
+ tt_int_op(61681, ==, ec.orport_ipv4.port);
+ tt_str_op("2002::f0:c51e", ==, fmt_addr(&ec.orport_ipv6.addr));
+ tt_int_op(4370, ==, ec.orport_ipv6.port);
+ test_memeq(ec.node_id, "anthropomorphization", 20);
+ tt_int_op(cc->cell_type, ==, CELL_CREATE2);
+ tt_int_op(cc->handshake_type, ==, 0x105);
+ tt_int_op(cc->handshake_len, ==, 99);
+ test_memeq(cc->onionskin, b, 99+20);
+ tt_int_op(0, ==, extend_cell_format(&p2_cmd, &p2_len, p2, &ec));
+ tt_int_op(p2_cmd, ==, RELAY_COMMAND_EXTEND2);
+ /* We'll generate it minus the IPv6 address and minus the konami code */
+ tt_int_op(p2_len, ==, 89+99-34-20);
+ test_memeq_hex(p2,
+ /* Two items: one that same darn IP address. */
+ "02000612F40001F0F1"
+ /* The next is a digest : anthropomorphization */
+ "0214616e7468726f706f6d6f727068697a6174696f6e"
+ /* Now the handshake prologue */
+ "01050063");
+ test_memeq(p2+1+8+22+4, b, 99+20);
+ tt_int_op(0, ==, create_cell_format_relayed(&cell, cc));
+
+ /* == Now try parsing some junk */
+
+ /* Try a too-long handshake */
+ memset(p, 0, sizeof(p));
+ memcpy(p, "\x02\x00\x06\x12\xf4\x00\x01\xf0\xf1", 9);
+ memcpy(p+9, "\x02\x14" "anarchoindividualist", 22);
+ memcpy(p+31, "\xff\xff\x01\xd0", 4);
+ tt_int_op(-1, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ p, sizeof(p)));
+
+ /* Try two identities. */
+ memset(p, 0, sizeof(p));
+ memcpy(p, "\x03\x00\x06\x12\xf4\x00\x01\xf0\xf1", 9);
+ memcpy(p+9, "\x02\x14" "anarchoindividualist", 22);
+ memcpy(p+31, "\x02\x14" "autodepolymerization", 22);
+ memcpy(p+53, "\xff\xff\x00\x10", 4);
+ tt_int_op(-1, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ p, sizeof(p)));
+
+ /* No identities. */
+ memset(p, 0, sizeof(p));
+ memcpy(p, "\x01\x00\x06\x12\xf4\x00\x01\xf0\xf1", 9);
+ memcpy(p+53, "\xff\xff\x00\x10", 4);
+ tt_int_op(-1, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ p, sizeof(p)));
+
+ /* Try a bad IPv4 address (too long, too short)*/
+ memset(p, 0, sizeof(p));
+ memcpy(p, "\x02\x00\x07\x12\xf4\x00\x01\xf0\xf1\xff", 10);
+ memcpy(p+10, "\x02\x14" "anarchoindividualist", 22);
+ memcpy(p+32, "\xff\xff\x00\x10", 4);
+ tt_int_op(-1, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ p, sizeof(p)));
+ memset(p, 0, sizeof(p));
+ memcpy(p, "\x02\x00\x05\x12\xf4\x00\x01\xf0", 8);
+ memcpy(p+8, "\x02\x14" "anarchoindividualist", 22);
+ memcpy(p+30, "\xff\xff\x00\x10", 4);
+ tt_int_op(-1, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ p, sizeof(p)));
+
+ /* IPv6 address (too long, too short, no IPv4)*/
+ memset(p, 0, sizeof(p));
+ memcpy(p, "\x03\x00\x06\x12\xf4\x00\x01\xf0\xf1", 9);
+ memcpy(p+9, "\x02\x14" "anarchoindividualist", 22);
+ memcpy(p+31, "\x01\x13" "xxxxxxxxxxxxxxxxYYZ", 19);
+ memcpy(p+50, "\xff\xff\x00\x20", 4);
+ tt_int_op(-1, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ p, sizeof(p)));
+ memset(p, 0, sizeof(p));
+ memcpy(p, "\x03\x00\x06\x12\xf4\x00\x01\xf0\xf1", 9);
+ memcpy(p+9, "\x02\x14" "anarchoindividualist", 22);
+ memcpy(p+31, "\x01\x11" "xxxxxxxxxxxxxxxxY", 17);
+ memcpy(p+48, "\xff\xff\x00\x20", 4);
+ tt_int_op(-1, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ p, sizeof(p)));
+ memset(p, 0, sizeof(p));
+ memcpy(p, "\x02", 1);
+ memcpy(p+1, "\x02\x14" "anarchoindividualist", 22);
+ memcpy(p+23, "\x01\x12" "xxxxxxxxxxxxxxxxYY", 18);
+ memcpy(p+41, "\xff\xff\x00\x20", 4);
+ tt_int_op(-1, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ p, sizeof(p)));
+
+ /* Running out of space in specifiers */
+ memset(p,0,sizeof(p));
+ memcpy(p, "\x05\x0a\xff", 3);
+ memcpy(p+3+255, "\x0a\xff", 2);
+ tt_int_op(-1, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ p, sizeof(p)));
+
+ /* Fuzz, because why not. */
+ memset(&ec, 0xff, sizeof(ec));
+ {
+ int i;
+ memset(p, 0, sizeof(p));
+ for (i = 0; i < 10000; ++i) {
+ int n = crypto_rand_int(sizeof(p));
+ crypto_rand((char *)p, n);
+ extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2, p, n);
+ }
+ }
+
+ done:
+ tor_free(mem_op_hex_tmp);
+}
+
+static void
+test_cfmt_extended_cells(void *arg)
+{
+ uint8_t b[512];
+ extended_cell_t ec;
+ created_cell_t *cc = &ec.created_cell;
+ uint8_t p[RELAY_PAYLOAD_SIZE];
+ uint8_t p2[RELAY_PAYLOAD_SIZE];
+ uint8_t p2_cmd;
+ uint16_t p2_len;
+ char *mem_op_hex_tmp = NULL;
+
+ (void) arg;
+
+ /* Try a regular EXTENDED cell. */
+ memset(&ec, 0xff, sizeof(ec));
+ memset(p, 0, sizeof(p));
+ memset(b, 0, sizeof(b));
+ crypto_rand((char*)b, TAP_ONIONSKIN_REPLY_LEN);
+ memcpy(p,b,TAP_ONIONSKIN_REPLY_LEN);
+ tt_int_op(0, ==, extended_cell_parse(&ec, RELAY_COMMAND_EXTENDED, p,
+ TAP_ONIONSKIN_REPLY_LEN));
+ tt_int_op(RELAY_COMMAND_EXTENDED, ==, ec.cell_type);
+ tt_int_op(cc->cell_type, ==, CELL_CREATED);
+ tt_int_op(cc->handshake_len, ==, TAP_ONIONSKIN_REPLY_LEN);
+ test_memeq(cc->reply, b, TAP_ONIONSKIN_REPLY_LEN);
+ tt_int_op(0, ==, extended_cell_format(&p2_cmd, &p2_len, p2, &ec));
+ tt_int_op(RELAY_COMMAND_EXTENDED, ==, p2_cmd);
+ tt_int_op(TAP_ONIONSKIN_REPLY_LEN, ==, p2_len);
+ test_memeq(p2, p, sizeof(p2));
+
+ /* Try an EXTENDED2 cell */
+ memset(&ec, 0xff, sizeof(ec));
+ memset(p, 0, sizeof(p));
+ memset(b, 0, sizeof(b));
+ crypto_rand((char*)b, 42);
+ memcpy(p,"\x00\x2a",2);
+ memcpy(p+2,b,42);
+ tt_int_op(0, ==, extended_cell_parse(&ec, RELAY_COMMAND_EXTENDED2, p, 2+42));
+ tt_int_op(RELAY_COMMAND_EXTENDED2, ==, ec.cell_type);
+ tt_int_op(cc->cell_type, ==, CELL_CREATED2);
+ tt_int_op(cc->handshake_len, ==, 42);
+ test_memeq(cc->reply, b, 42+10);
+ tt_int_op(0, ==, extended_cell_format(&p2_cmd, &p2_len, p2, &ec));
+ tt_int_op(RELAY_COMMAND_EXTENDED2, ==, p2_cmd);
+ tt_int_op(2+42, ==, p2_len);
+ test_memeq(p2, p, sizeof(p2));
+
+ /* Try an almost-too-long EXTENDED2 cell */
+ memcpy(p, "\x01\xf0", 2);
+ tt_int_op(0, ==,
+ extended_cell_parse(&ec, RELAY_COMMAND_EXTENDED2, p, sizeof(p)));
+
+ /* Now try a too-long extended2 cell. That's the only misparse I can think
+ * of. */
+ memcpy(p, "\x01\xf1", 2);
+ tt_int_op(-1, ==,
+ extended_cell_parse(&ec, RELAY_COMMAND_EXTENDED2, p, sizeof(p)));
+
+ done:
+ tor_free(mem_op_hex_tmp);
+}
+
#define TEST(name, flags) \
{ #name, test_cfmt_ ## name, flags, 0, NULL }
@@ -381,6 +879,10 @@ struct testcase_t cell_format_tests[] = {
TEST(relay_header, 0),
TEST(begin_cells, 0),
TEST(connected_cells, 0),
+ TEST(create_cells, 0),
+ TEST(created_cells, 0),
+ TEST(extend_cells, 0),
+ TEST(extended_cells, 0),
END_OF_TESTCASES
};
diff --git a/src/test/test_config.c b/src/test/test_config.c
index 9f6b260fea..e20fe73295 100644
--- a/src/test/test_config.c
+++ b/src/test/test_config.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_containers.c b/src/test/test_containers.c
index 580c5779f0..ca901624c2 100644
--- a/src/test/test_containers.c
+++ b/src/test/test_containers.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -66,8 +66,8 @@ test_container_smartlist_basic(void)
test_eq(4, smartlist_len(sl));
/* test isin. */
- test_assert(smartlist_isin(sl, (void*)3));
- test_assert(!smartlist_isin(sl, (void*)99));
+ test_assert(smartlist_contains(sl, (void*)3));
+ test_assert(!smartlist_contains(sl, (void*)99));
done:
smartlist_free(sl);
@@ -195,13 +195,13 @@ test_container_smartlist_strings(void)
tor_free(cp_alloc);
smartlist_shuffle(sl);
test_eq(7, smartlist_len(sl));
- test_assert(smartlist_string_isin(sl, "and"));
- test_assert(smartlist_string_isin(sl, "router"));
- test_assert(smartlist_string_isin(sl, "by"));
- test_assert(smartlist_string_isin(sl, "nickm"));
- test_assert(smartlist_string_isin(sl, "onion"));
- test_assert(smartlist_string_isin(sl, "arma"));
- test_assert(smartlist_string_isin(sl, "the"));
+ test_assert(smartlist_contains_string(sl, "and"));
+ test_assert(smartlist_contains_string(sl, "router"));
+ test_assert(smartlist_contains_string(sl, "by"));
+ test_assert(smartlist_contains_string(sl, "nickm"));
+ test_assert(smartlist_contains_string(sl, "onion"));
+ test_assert(smartlist_contains_string(sl, "arma"));
+ test_assert(smartlist_contains_string(sl, "the"));
/* Test bsearch. */
smartlist_sort(sl, compare_strs_);
@@ -278,13 +278,13 @@ test_container_smartlist_strings(void)
test_streq(cp_alloc, "50,a,canal,man,noon,panama,plan,radar");
tor_free(cp_alloc);
- /* Test string_isin and isin_case and num_isin */
- test_assert(smartlist_string_isin(sl, "noon"));
- test_assert(!smartlist_string_isin(sl, "noonoon"));
- test_assert(smartlist_string_isin_case(sl, "nOOn"));
- test_assert(!smartlist_string_isin_case(sl, "nooNooN"));
- test_assert(smartlist_string_num_isin(sl, 50));
- test_assert(!smartlist_string_num_isin(sl, 60));
+ /* Test contains_string, contains_string_case and contains_int_as_string */
+ test_assert(smartlist_contains_string(sl, "noon"));
+ test_assert(!smartlist_contains_string(sl, "noonoon"));
+ test_assert(smartlist_contains_string_case(sl, "nOOn"));
+ test_assert(!smartlist_contains_string_case(sl, "nooNooN"));
+ test_assert(smartlist_contains_int_as_string(sl, 50));
+ test_assert(!smartlist_contains_int_as_string(sl, 60));
/* Test smartlist_choose */
{
@@ -292,12 +292,12 @@ test_container_smartlist_strings(void)
int allsame = 1;
int allin = 1;
void *first = smartlist_choose(sl);
- test_assert(smartlist_isin(sl, first));
+ test_assert(smartlist_contains(sl, first));
for (i = 0; i < 100; ++i) {
void *second = smartlist_choose(sl);
if (second != first)
allsame = 0;
- if (!smartlist_isin(sl, second))
+ if (!smartlist_contains(sl, second))
allin = 0;
}
test_assert(!allsame);
@@ -365,15 +365,15 @@ test_container_smartlist_overlap(void)
smartlist_add_all(sl, odds);
smartlist_intersect(sl, primes);
test_eq(smartlist_len(sl), 3);
- test_assert(smartlist_isin(sl, (void*)3));
- test_assert(smartlist_isin(sl, (void*)5));
- test_assert(smartlist_isin(sl, (void*)7));
+ test_assert(smartlist_contains(sl, (void*)3));
+ test_assert(smartlist_contains(sl, (void*)5));
+ test_assert(smartlist_contains(sl, (void*)7));
/* subtract */
smartlist_add_all(sl, primes);
smartlist_subtract(sl, odds);
test_eq(smartlist_len(sl), 1);
- test_assert(smartlist_isin(sl, (void*)2));
+ test_assert(smartlist_contains(sl, (void*)2));
done:
smartlist_free(odds);
@@ -389,14 +389,14 @@ test_container_smartlist_digests(void)
{
smartlist_t *sl = smartlist_new();
- /* digest_isin. */
+ /* contains_digest */
smartlist_add(sl, tor_memdup("AAAAAAAAAAAAAAAAAAAA", DIGEST_LEN));
smartlist_add(sl, tor_memdup("\00090AAB2AAAAaasdAAAAA", DIGEST_LEN));
smartlist_add(sl, tor_memdup("\00090AAB2AAAAaasdAAAAA", DIGEST_LEN));
- test_eq(0, smartlist_digest_isin(NULL, "AAAAAAAAAAAAAAAAAAAA"));
- test_assert(smartlist_digest_isin(sl, "AAAAAAAAAAAAAAAAAAAA"));
- test_assert(smartlist_digest_isin(sl, "\00090AAB2AAAAaasdAAAAA"));
- test_eq(0, smartlist_digest_isin(sl, "\00090AAB2AAABaasdAAAAA"));
+ test_eq(0, smartlist_contains_digest(NULL, "AAAAAAAAAAAAAAAAAAAA"));
+ test_assert(smartlist_contains_digest(sl, "AAAAAAAAAAAAAAAAAAAA"));
+ test_assert(smartlist_contains_digest(sl, "\00090AAB2AAAAaasdAAAAA"));
+ test_eq(0, smartlist_contains_digest(sl, "\00090AAB2AAABaasdAAAAA"));
/* sort digests */
smartlist_sort_digests(sl);
@@ -445,11 +445,11 @@ test_container_smartlist_join(void)
} SMARTLIST_FOREACH_JOIN_END(cp1, cp2);
SMARTLIST_FOREACH(sl3, const char *, cp,
- test_assert(smartlist_isin(sl2, cp) &&
- !smartlist_string_isin(sl, cp)));
+ test_assert(smartlist_contains(sl2, cp) &&
+ !smartlist_contains_string(sl, cp)));
SMARTLIST_FOREACH(sl4, const char *, cp,
- test_assert(smartlist_isin(sl, cp) &&
- smartlist_string_isin(sl2, cp)));
+ test_assert(smartlist_contains(sl, cp) &&
+ smartlist_contains_string(sl2, cp)));
joined = smartlist_join_strings(sl3, ",", 0, NULL);
test_streq(joined, "Anemias,Anemias,Crossbowmen,Work");
tor_free(joined);
@@ -528,18 +528,18 @@ test_container_digestset(void)
}
set = digestset_new(1000);
SMARTLIST_FOREACH(included, const char *, cp,
- if (digestset_isin(set, cp))
+ if (digestset_contains(set, cp))
ok = 0);
test_assert(ok);
SMARTLIST_FOREACH(included, const char *, cp,
digestset_add(set, cp));
SMARTLIST_FOREACH(included, const char *, cp,
- if (!digestset_isin(set, cp))
+ if (!digestset_contains(set, cp))
ok = 0);
test_assert(ok);
for (i = 0; i < 1000; ++i) {
crypto_rand(d, DIGEST_LEN);
- if (digestset_isin(set, d))
+ if (digestset_contains(set, d))
++false_positives;
}
test_assert(false_positives < 50); /* Should be far lower. */
@@ -782,6 +782,50 @@ test_container_order_functions(void)
;
}
+static void
+test_di_map(void *arg)
+{
+ di_digest256_map_t *map = NULL;
+ const uint8_t key1[] = "In view of the fact that it was ";
+ const uint8_t key2[] = "superficially convincing, being ";
+ const uint8_t key3[] = "properly enciphered in a one-tim";
+ const uint8_t key4[] = "e cipher scheduled for use today";
+ char *v1 = tor_strdup(", it came close to causing a disaster...");
+ char *v2 = tor_strdup("I regret to have to advise you that the mission");
+ char *v3 = tor_strdup("was actually initiated...");
+ /* -- John Brunner, _The Shockwave Rider_ */
+
+ (void)arg;
+
+ /* Try searching on an empty map. */
+ tt_ptr_op(NULL, ==, dimap_search(map, key1, NULL));
+ tt_ptr_op(NULL, ==, dimap_search(map, key2, NULL));
+ tt_ptr_op(v3, ==, dimap_search(map, key2, v3));
+ dimap_free(map, NULL);
+ map = NULL;
+
+ /* Add a single entry. */
+ dimap_add_entry(&map, key1, v1);
+ tt_ptr_op(NULL, ==, dimap_search(map, key2, NULL));
+ tt_ptr_op(v3, ==, dimap_search(map, key2, v3));
+ tt_ptr_op(v1, ==, dimap_search(map, key1, NULL));
+
+ /* Now try it with three entries in the map. */
+ dimap_add_entry(&map, key2, v2);
+ dimap_add_entry(&map, key3, v3);
+ tt_ptr_op(v1, ==, dimap_search(map, key1, NULL));
+ tt_ptr_op(v2, ==, dimap_search(map, key2, NULL));
+ tt_ptr_op(v3, ==, dimap_search(map, key3, NULL));
+ tt_ptr_op(NULL, ==, dimap_search(map, key4, NULL));
+ tt_ptr_op(v1, ==, dimap_search(map, key4, v1));
+
+ done:
+ tor_free(v1);
+ tor_free(v2);
+ tor_free(v3);
+ dimap_free(map, NULL);
+}
+
#define CONTAINER_LEGACY(name) \
{ #name, legacy_test_helper, 0, &legacy_setup, test_container_ ## name }
@@ -796,6 +840,7 @@ struct testcase_t container_tests[] = {
CONTAINER_LEGACY(strmap),
CONTAINER_LEGACY(pqueue),
CONTAINER_LEGACY(order_functions),
+ { "di_map", test_di_map, 0, NULL, NULL },
END_OF_TESTCASES
};
diff --git a/src/test/test_crypto.c b/src/test/test_crypto.c
index ed1da39670..a1b5c52179 100644
--- a/src/test/test_crypto.c
+++ b/src/test/test_crypto.c
@@ -1,13 +1,18 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
#define CRYPTO_PRIVATE
+#define CRYPTO_CURVE25519_PRIVATE
#include "or.h"
#include "test.h"
#include "aes.h"
+#include "util.h"
+#ifdef CURVE25519_ENABLED
+#include "crypto_curve25519.h"
+#endif
/** Run unit tests for Diffie-Hellman functionality. */
static void
@@ -832,6 +837,278 @@ test_crypto_base32_decode(void)
;
}
+static void
+test_crypto_kdf_TAP(void *arg)
+{
+ uint8_t key_material[100];
+ int r;
+ char *mem_op_hex_tmp = NULL;
+
+ (void)arg;
+#define EXPAND(s) \
+ r = crypto_expand_key_material_TAP( \
+ (const uint8_t*)(s), strlen(s), \
+ key_material, 100)
+
+ /* Test vectors generated with a little python script; feel free to write
+ * your own. */
+ memset(key_material, 0, sizeof(key_material));
+ EXPAND("");
+ tt_int_op(r, ==, 0);
+ test_memeq_hex(key_material,
+ "5ba93c9db0cff93f52b521d7420e43f6eda2784fbf8b4530d8"
+ "d246dd74ac53a13471bba17941dff7c4ea21bb365bbeeaf5f2"
+ "c654883e56d11e43c44e9842926af7ca0a8cca12604f945414"
+ "f07b01e13da42c6cf1de3abfdea9b95f34687cbbe92b9a7383");
+
+ EXPAND("Tor");
+ tt_int_op(r, ==, 0);
+ test_memeq_hex(key_material,
+ "776c6214fc647aaa5f683c737ee66ec44f03d0372e1cce6922"
+ "7950f236ddf1e329a7ce7c227903303f525a8c6662426e8034"
+ "870642a6dabbd41b5d97ec9bf2312ea729992f48f8ea2d0ba8"
+ "3f45dfda1a80bdc8b80de01b23e3e0ffae099b3e4ccf28dc28");
+
+ EXPAND("AN ALARMING ITEM TO FIND ON A MONTHLY AUTO-DEBIT NOTICE");
+ tt_int_op(r, ==, 0);
+ test_memeq_hex(key_material,
+ "a340b5d126086c3ab29c2af4179196dbf95e1c72431419d331"
+ "4844bf8f6afb6098db952b95581fb6c33625709d6f4400b8e7"
+ "ace18a70579fad83c0982ef73f89395bcc39493ad53a685854"
+ "daf2ba9b78733b805d9a6824c907ee1dba5ac27a1e466d4d10");
+
+ done:
+ tor_free(mem_op_hex_tmp);
+
+#undef EXPAND
+}
+
+static void
+test_crypto_hkdf_sha256(void *arg)
+{
+ uint8_t key_material[100];
+ const uint8_t salt[] = "ntor-curve25519-sha256-1:key_extract";
+ const size_t salt_len = strlen((char*)salt);
+ const uint8_t m_expand[] = "ntor-curve25519-sha256-1:key_expand";
+ const size_t m_expand_len = strlen((char*)m_expand);
+ int r;
+ char *mem_op_hex_tmp = NULL;
+
+ (void)arg;
+
+#define EXPAND(s) \
+ r = crypto_expand_key_material_rfc5869_sha256( \
+ (const uint8_t*)(s), strlen(s), \
+ salt, salt_len, \
+ m_expand, m_expand_len, \
+ key_material, 100)
+
+ /* Test vectors generated with ntor_ref.py */
+ memset(key_material, 0, sizeof(key_material));
+ EXPAND("");
+ tt_int_op(r, ==, 0);
+ test_memeq_hex(key_material,
+ "d3490ed48b12a48f9547861583573fe3f19aafe3f81dc7fc75"
+ "eeed96d741b3290f941576c1f9f0b2d463d1ec7ab2c6bf71cd"
+ "d7f826c6298c00dbfe6711635d7005f0269493edf6046cc7e7"
+ "dcf6abe0d20c77cf363e8ffe358927817a3d3e73712cee28d8");
+
+ EXPAND("Tor");
+ tt_int_op(r, ==, 0);
+ test_memeq_hex(key_material,
+ "5521492a85139a8d9107a2d5c0d9c91610d0f95989975ebee6"
+ "c02a4f8d622a6cfdf9b7c7edd3832e2760ded1eac309b76f8d"
+ "66c4a3c4d6225429b3a016e3c3d45911152fc87bc2de9630c3"
+ "961be9fdb9f93197ea8e5977180801926d3321fa21513e59ac");
+
+ EXPAND("AN ALARMING ITEM TO FIND ON YOUR CREDIT-RATING STATEMENT");
+ tt_int_op(r, ==, 0);
+ test_memeq_hex(key_material,
+ "a2aa9b50da7e481d30463adb8f233ff06e9571a0ca6ab6df0f"
+ "b206fa34e5bc78d063fc291501beec53b36e5a0e434561200c"
+ "5f8bd13e0f88b3459600b4dc21d69363e2895321c06184879d"
+ "94b18f078411be70b767c7fc40679a9440a0c95ea83a23efbf");
+
+ done:
+ tor_free(mem_op_hex_tmp);
+#undef EXPAND
+}
+
+#ifdef CURVE25519_ENABLED
+static void
+test_crypto_curve25519_impl(void *arg)
+{
+ /* adapted from curve25519_donna, which adapted it from test-curve25519
+ version 20050915, by D. J. Bernstein, Public domain. */
+
+ const int randomize_high_bit = (arg != NULL);
+
+ unsigned char e1k[32];
+ unsigned char e2k[32];
+ unsigned char e1e2k[32];
+ unsigned char e2e1k[32];
+ unsigned char e1[32] = {3};
+ unsigned char e2[32] = {5};
+ unsigned char k[32] = {9};
+ int loop, i;
+ const int loop_max=10000;
+ char *mem_op_hex_tmp = NULL;
+
+ for (loop = 0; loop < loop_max; ++loop) {
+ curve25519_impl(e1k,e1,k);
+ curve25519_impl(e2e1k,e2,e1k);
+ curve25519_impl(e2k,e2,k);
+ if (randomize_high_bit) {
+ /* We require that the high bit of the public key be ignored. So if
+ * we're doing this variant test, we randomize the high bit of e2k, and
+ * make sure that the handshake still works out the same as it would
+ * otherwise. */
+ uint8_t byte;
+ crypto_rand((char*)&byte, 1);
+ e2k[31] |= (byte & 0x80);
+ }
+ curve25519_impl(e1e2k,e1,e2k);
+ test_memeq(e1e2k, e2e1k, 32);
+ if (loop == loop_max-1) {
+ break;
+ }
+ for (i = 0;i < 32;++i) e1[i] ^= e2k[i];
+ for (i = 0;i < 32;++i) e2[i] ^= e1k[i];
+ for (i = 0;i < 32;++i) k[i] ^= e1e2k[i];
+ }
+
+ test_memeq_hex(e1,
+ "4faf81190869fd742a33691b0e0824d5"
+ "7e0329f4dd2819f5f32d130f1296b500");
+ test_memeq_hex(e2k,
+ "05aec13f92286f3a781ccae98995a3b9"
+ "e0544770bc7de853b38f9100489e3e79");
+ test_memeq_hex(e1e2k,
+ "cd6e8269104eb5aaee886bd2071fba88"
+ "bd13861475516bc2cd2b6e005e805064");
+
+ done:
+ tor_free(mem_op_hex_tmp);
+}
+
+static void
+test_crypto_curve25519_wrappers(void *arg)
+{
+ curve25519_public_key_t pubkey1, pubkey2;
+ curve25519_secret_key_t seckey1, seckey2;
+
+ uint8_t output1[CURVE25519_OUTPUT_LEN];
+ uint8_t output2[CURVE25519_OUTPUT_LEN];
+ (void)arg;
+
+ /* Test a simple handshake, serializing and deserializing some stuff. */
+ curve25519_secret_key_generate(&seckey1, 0);
+ curve25519_secret_key_generate(&seckey2, 1);
+ curve25519_public_key_generate(&pubkey1, &seckey1);
+ curve25519_public_key_generate(&pubkey2, &seckey2);
+ test_assert(curve25519_public_key_is_ok(&pubkey1));
+ test_assert(curve25519_public_key_is_ok(&pubkey2));
+ curve25519_handshake(output1, &seckey1, &pubkey2);
+ curve25519_handshake(output2, &seckey2, &pubkey1);
+ test_memeq(output1, output2, sizeof(output1));
+
+ done:
+ ;
+}
+
+static void
+test_crypto_curve25519_encode(void *arg)
+{
+ curve25519_secret_key_t seckey;
+ curve25519_public_key_t key1, key2, key3;
+ char buf[64];
+
+ (void)arg;
+
+ curve25519_secret_key_generate(&seckey, 0);
+ curve25519_public_key_generate(&key1, &seckey);
+ tt_int_op(0, ==, curve25519_public_to_base64(buf, &key1));
+ tt_int_op(CURVE25519_BASE64_PADDED_LEN, ==, strlen(buf));
+
+ tt_int_op(0, ==, curve25519_public_from_base64(&key2, buf));
+ test_memeq(key1.public_key, key2.public_key, CURVE25519_PUBKEY_LEN);
+
+ buf[CURVE25519_BASE64_PADDED_LEN - 1] = '\0';
+ tt_int_op(CURVE25519_BASE64_PADDED_LEN-1, ==, strlen(buf));
+ tt_int_op(0, ==, curve25519_public_from_base64(&key3, buf));
+ test_memeq(key1.public_key, key3.public_key, CURVE25519_PUBKEY_LEN);
+
+ /* Now try bogus parses. */
+ strlcpy(buf, "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$=", sizeof(buf));
+ tt_int_op(-1, ==, curve25519_public_from_base64(&key3, buf));
+
+ strlcpy(buf, "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", sizeof(buf));
+ tt_int_op(-1, ==, curve25519_public_from_base64(&key3, buf));
+
+ strlcpy(buf, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", sizeof(buf));
+ tt_int_op(-1, ==, curve25519_public_from_base64(&key3, buf));
+
+ done:
+ ;
+}
+
+static void
+test_crypto_curve25519_persist(void *arg)
+{
+ curve25519_keypair_t keypair, keypair2;
+ char *fname = tor_strdup(get_fname("curve25519_keypair"));
+ char *tag = NULL;
+ char *content = NULL;
+ const char *cp;
+ struct stat st;
+ size_t taglen;
+
+ (void)arg;
+
+ tt_int_op(0,==,curve25519_keypair_generate(&keypair, 0));
+
+ tt_int_op(0,==,curve25519_keypair_write_to_file(&keypair, fname, "testing"));
+ tt_int_op(0,==,curve25519_keypair_read_from_file(&keypair2, &tag, fname));
+ tt_str_op(tag,==,"testing");
+
+ test_memeq(keypair.pubkey.public_key,
+ keypair2.pubkey.public_key,
+ CURVE25519_PUBKEY_LEN);
+ test_memeq(keypair.seckey.secret_key,
+ keypair2.seckey.secret_key,
+ CURVE25519_SECKEY_LEN);
+
+ content = read_file_to_str(fname, RFTS_BIN, &st);
+ tt_assert(content);
+ taglen = strlen("== c25519v1: testing ==");
+ tt_int_op(st.st_size, ==, 32+CURVE25519_PUBKEY_LEN+CURVE25519_SECKEY_LEN);
+ tt_assert(fast_memeq(content, "== c25519v1: testing ==", taglen));
+ tt_assert(tor_mem_is_zero(content+taglen, 32-taglen));
+ cp = content + 32;
+ test_memeq(keypair.seckey.secret_key,
+ cp,
+ CURVE25519_SECKEY_LEN);
+ cp += CURVE25519_SECKEY_LEN;
+ test_memeq(keypair.pubkey.public_key,
+ cp,
+ CURVE25519_SECKEY_LEN);
+
+ tor_free(fname);
+ fname = tor_strdup(get_fname("bogus_keypair"));
+
+ tt_int_op(-1, ==, curve25519_keypair_read_from_file(&keypair2, &tag, fname));
+
+ content[69] ^= 0xff;
+ tt_int_op(0, ==, write_bytes_to_file(fname, content, st.st_size, 1));
+ tt_int_op(-1, ==, curve25519_keypair_read_from_file(&keypair2, &tag, fname));
+
+ done:
+ tor_free(fname);
+ tor_free(content);
+}
+
+#endif
+
static void *
pass_data_setup_fn(const struct testcase_t *testcase)
{
@@ -863,6 +1140,15 @@ struct testcase_t crypto_tests[] = {
{ "aes_iv_AES", test_crypto_aes_iv, TT_FORK, &pass_data, (void*)"aes" },
{ "aes_iv_EVP", test_crypto_aes_iv, TT_FORK, &pass_data, (void*)"evp" },
CRYPTO_LEGACY(base32_decode),
+ { "kdf_TAP", test_crypto_kdf_TAP, 0, NULL, NULL },
+ { "hkdf_sha256", test_crypto_hkdf_sha256, 0, NULL, NULL },
+#ifdef CURVE25519_ENABLED
+ { "curve25519_impl", test_crypto_curve25519_impl, 0, NULL, NULL },
+ { "curve25519_impl_hibit", test_crypto_curve25519_impl, 0, NULL, (void*)"y"},
+ { "curve25519_wrappers", test_crypto_curve25519_wrappers, 0, NULL, NULL },
+ { "curve25519_encode", test_crypto_curve25519_encode, 0, NULL, NULL },
+ { "curve25519_persist", test_crypto_curve25519_persist, 0, NULL, NULL },
+#endif
END_OF_TESTCASES
};
diff --git a/src/test/test_data.c b/src/test/test_data.c
index de2f9f58eb..5f0f7cba01 100644
--- a/src/test/test_data.c
+++ b/src/test/test_data.c
@@ -1,6 +1,6 @@
/* Copyright 2001-2004 Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/** First of 3 example authority certificates for unit testing. */
diff --git a/src/test/test_dir.c b/src/test/test_dir.c
index ff41bf2f3f..f1c745ef78 100644
--- a/src/test/test_dir.c
+++ b/src/test/test_dir.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_introduce.c b/src/test/test_introduce.c
index 992d9cd507..69c1152229 100644
--- a/src/test/test_introduce.c
+++ b/src/test/test_introduce.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012, The Tor Project, Inc. */
+/* Copyright (c) 2012-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_microdesc.c b/src/test/test_microdesc.c
index 89c578f4a7..4bc9fa7263 100644
--- a/src/test/test_microdesc.c
+++ b/src/test/test_microdesc.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2012, The Tor Project, Inc. */
+/* Copyright (c) 2010-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_ntor_cl.c b/src/test/test_ntor_cl.c
new file mode 100644
index 0000000000..d16b088a5f
--- /dev/null
+++ b/src/test/test_ntor_cl.c
@@ -0,0 +1,166 @@
+/* Copyright (c) 2012-2013, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include "orconfig.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ONION_NTOR_PRIVATE
+#include "or.h"
+#include "util.h"
+#include "compat.h"
+#include "crypto.h"
+#include "crypto_curve25519.h"
+#include "onion_ntor.h"
+
+#ifndef CURVE25519_ENABLED
+#error "This isn't going to work without curve25519."
+#endif
+
+#define N_ARGS(n) STMT_BEGIN { \
+ if (argc < (n)) { \
+ fprintf(stderr, "%s needs %d arguments.\n",argv[1],n); \
+ return 1; \
+ } \
+ } STMT_END
+#define BASE16(idx, var, n) STMT_BEGIN { \
+ const char *s = argv[(idx)]; \
+ if (base16_decode((char*)var, n, s, strlen(s)) < 0 ) { \
+ fprintf(stderr, "couldn't decode argument %d (%s)\n",idx,s); \
+ return 1; \
+ } \
+ } STMT_END
+#define INT(idx, var) STMT_BEGIN { \
+ var = atoi(argv[(idx)]); \
+ if (var <= 0) { \
+ fprintf(stderr, "bad integer argument %d (%s)\n",idx,argv[(idx)]); \
+ } \
+ } STMT_END
+
+static int
+client1(int argc, char **argv)
+{
+ /* client1 nodeID B -> msg state */
+ curve25519_public_key_t B;
+ uint8_t node_id[DIGEST_LEN];
+ ntor_handshake_state_t *state;
+ uint8_t msg[NTOR_ONIONSKIN_LEN];
+
+ char buf[1024];
+
+ memset(&state, 0, sizeof(state));
+
+ N_ARGS(4);
+ BASE16(2, node_id, DIGEST_LEN);
+ BASE16(3, B.public_key, CURVE25519_PUBKEY_LEN);
+
+ if (onion_skin_ntor_create(node_id, &B, &state, msg)<0) {
+ fprintf(stderr, "handshake failed");
+ return 2;
+ }
+
+ base16_encode(buf, sizeof(buf), (const char*)msg, sizeof(msg));
+ printf("%s\n", buf);
+ base16_encode(buf, sizeof(buf), (void*)state, sizeof(*state));
+ printf("%s\n", buf);
+ ntor_handshake_state_free(state);
+ return 0;
+}
+
+static int
+server1(int argc, char **argv)
+{
+ uint8_t msg_in[NTOR_ONIONSKIN_LEN];
+ curve25519_keypair_t kp;
+ di_digest256_map_t *keymap=NULL;
+ uint8_t node_id[DIGEST_LEN];
+ int keybytes;
+
+ uint8_t msg_out[NTOR_REPLY_LEN];
+ uint8_t *keys;
+ char *hexkeys;
+
+ char buf[256];
+
+ /* server1: b nodeID msg N -> msg keys */
+ N_ARGS(6);
+ BASE16(2, kp.seckey.secret_key, CURVE25519_SECKEY_LEN);
+ BASE16(3, node_id, DIGEST_LEN);
+ BASE16(4, msg_in, NTOR_ONIONSKIN_LEN);
+ INT(5, keybytes);
+
+ curve25519_public_key_generate(&kp.pubkey, &kp.seckey);
+ dimap_add_entry(&keymap, kp.pubkey.public_key, &kp);
+
+ keys = tor_malloc(keybytes);
+ hexkeys = tor_malloc(keybytes*2+1);
+ if (onion_skin_ntor_server_handshake(
+ msg_in, keymap, NULL, node_id, msg_out, keys,
+ (size_t)keybytes)<0) {
+ fprintf(stderr, "handshake failed");
+ return 2;
+ }
+
+ base16_encode(buf, sizeof(buf), (const char*)msg_out, sizeof(msg_out));
+ printf("%s\n", buf);
+ base16_encode(hexkeys, keybytes*2+1, (const char*)keys, keybytes);
+ printf("%s\n", hexkeys);
+
+ tor_free(keys);
+ tor_free(hexkeys);
+ return 0;
+}
+
+static int
+client2(int argc, char **argv)
+{
+ struct ntor_handshake_state_t state;
+ uint8_t msg[NTOR_REPLY_LEN];
+ int keybytes;
+ uint8_t *keys;
+ char *hexkeys;
+
+ N_ARGS(5);
+ BASE16(2, (&state), sizeof(state));
+ BASE16(3, msg, sizeof(msg));
+ INT(4, keybytes);
+
+ keys = tor_malloc(keybytes);
+ hexkeys = tor_malloc(keybytes*2+1);
+ if (onion_skin_ntor_client_handshake(&state, msg, keys, keybytes)<0) {
+ fprintf(stderr, "handshake failed");
+ return 2;
+ }
+
+ base16_encode(hexkeys, keybytes*2+1, (const char*)keys, keybytes);
+ printf("%s\n", hexkeys);
+
+ tor_free(keys);
+ tor_free(hexkeys);
+
+ return 0;
+}
+
+int
+main(int argc, char **argv)
+{
+ /*
+ client1: nodeID B -> msg state
+ server1: b nodeID msg N -> msg keys
+ client2: state msg N -> keys
+ */
+ if (argc < 2) {
+ fprintf(stderr, "I need arguments. Read source for more info.\n");
+ return 1;
+ } else if (!strcmp(argv[1], "client1")) {
+ return client1(argc, argv);
+ } else if (!strcmp(argv[1], "server1")) {
+ return server1(argc, argv);
+ } else if (!strcmp(argv[1], "client2")) {
+ return client2(argc, argv);
+ } else {
+ fprintf(stderr, "What's a %s?\n", argv[1]);
+ return 1;
+ }
+}
+
diff --git a/src/test/test_pt.c b/src/test/test_pt.c
index d3dadb9bfa..80707f4379 100644
--- a/src/test/test_pt.c
+++ b/src/test/test_pt.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_replay.c b/src/test/test_replay.c
index b08818f06b..be48df177e 100644
--- a/src/test/test_replay.c
+++ b/src/test/test_replay.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012, The Tor Project, Inc. */
+/* Copyright (c) 2012-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define REPLAYCACHE_PRIVATE
diff --git a/src/test/test_util.c b/src/test/test_util.c
index 3ed2cbb54d..bed33fac25 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2012, The Tor Project, Inc. */
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -17,6 +17,7 @@
#ifdef _WIN32
#include <tchar.h>
#endif
+#include <math.h>
/* XXXX this is a minimal wrapper to make the unit tests compile with the
* changed tor_timegm interface. */
@@ -2215,13 +2216,13 @@ test_util_listdir(void *ptr)
dir_contents = tor_listdir(dirname);
test_assert(dir_contents);
/* make sure that each filename is listed. */
- test_assert(smartlist_string_isin_case(dir_contents, "hopscotch"));
- test_assert(smartlist_string_isin_case(dir_contents, "mumblety-peg"));
- test_assert(smartlist_string_isin_case(dir_contents, ".hidden-file"));
- test_assert(smartlist_string_isin_case(dir_contents, "some-directory"));
+ test_assert(smartlist_contains_string_case(dir_contents, "hopscotch"));
+ test_assert(smartlist_contains_string_case(dir_contents, "mumblety-peg"));
+ test_assert(smartlist_contains_string_case(dir_contents, ".hidden-file"));
+ test_assert(smartlist_contains_string_case(dir_contents, "some-directory"));
- test_assert(!smartlist_string_isin(dir_contents, "."));
- test_assert(!smartlist_string_isin(dir_contents, ".."));
+ test_assert(!smartlist_contains_string(dir_contents, "."));
+ test_assert(!smartlist_contains_string(dir_contents, ".."));
done:
tor_free(fname1);
@@ -2843,6 +2844,16 @@ test_util_di_ops(void)
test_eq(neq1, !eq1);
}
+ tt_int_op(1, ==, safe_mem_is_zero("", 0));
+ tt_int_op(1, ==, safe_mem_is_zero("", 1));
+ tt_int_op(0, ==, safe_mem_is_zero("a", 1));
+ tt_int_op(0, ==, safe_mem_is_zero("a", 2));
+ tt_int_op(0, ==, safe_mem_is_zero("\0a", 2));
+ tt_int_op(1, ==, safe_mem_is_zero("\0\0a", 2));
+ tt_int_op(1, ==, safe_mem_is_zero("\0\0\0\0\0\0\0\0", 8));
+ tt_int_op(1, ==, safe_mem_is_zero("\0\0\0\0\0\0\0\0a", 8));
+ tt_int_op(0, ==, safe_mem_is_zero("\0\0\0\0\0\0\0\0a", 9));
+
done:
;
}
@@ -3230,6 +3241,20 @@ test_util_set_env_var_in_sl(void *ptr)
smartlist_free(expected_resulting_env_vars);
}
+static void
+test_util_mathlog(void *arg)
+{
+ double d;
+ (void) arg;
+
+ d = tor_mathlog(2.718281828);
+ tt_double_op(fabs(d - 1.0), <, .000001);
+ d = tor_mathlog(10);
+ tt_double_op(fabs(d - 2.30258509), <, .000001);
+ done:
+ ;
+}
+
#define UTIL_LEGACY(name) \
{ #name, legacy_test_helper, 0, &legacy_setup, test_util_ ## name }
@@ -3286,6 +3311,7 @@ struct testcase_t util_tests[] = {
UTIL_TEST(read_file_eof_tiny_limit, 0),
UTIL_TEST(read_file_eof_two_loops, 0),
UTIL_TEST(read_file_eof_zero_bytes, 0),
+ UTIL_TEST(mathlog, 0),
END_OF_TESTCASES
};
diff --git a/src/tools/Makefile.nmake b/src/tools/Makefile.nmake
index a30a28b2e1..fda1990e0b 100644
--- a/src/tools/Makefile.nmake
+++ b/src/tools/Makefile.nmake
@@ -6,8 +6,8 @@ LIBS = ..\..\..\build-alpha\lib\libevent.lib \
..\..\..\build-alpha\lib\libcrypto.lib \
..\..\..\build-alpha\lib\libssl.lib \
..\..\..\build-alpha\lib\libz.lib \
- ws2_32.lib advapi32.lib shell32.lib
-
+ ws2_32.lib advapi32.lib shell32.lib \
+ crypt32.lib gdi32.lib user32.lib
tor-gencert.exe: tor-gencert.obj
$(CC) $(CFLAGS) $(LIBS) ..\common\*.lib tor-gencert.obj
diff --git a/src/tools/include.am b/src/tools/include.am
index 7337eff163..54b150a80c 100644
--- a/src/tools/include.am
+++ b/src/tools/include.am
@@ -8,14 +8,16 @@ src_tools_tor_resolve_LDADD = src/common/libor.a @TOR_LIB_MATH@ @TOR_LIB_WS32@
src_tools_tor_gencert_SOURCES = src/tools/tor-gencert.c
src_tools_tor_gencert_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@
src_tools_tor_gencert_LDADD = src/common/libor.a src/common/libor-crypto.a \
+ $(LIBDONNA) \
@TOR_LIB_MATH@ @TOR_ZLIB_LIBS@ @TOR_OPENSSL_LIBS@ \
- @TOR_LIB_WS32@ @TOR_LIB_GDI@
+ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
src_tools_tor_checkkey_SOURCES = src/tools/tor-checkkey.c
src_tools_tor_checkkey_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@
src_tools_tor_checkkey_LDADD = src/common/libor.a src/common/libor-crypto.a \
+ $(LIBDONNA) \
@TOR_LIB_MATH@ @TOR_ZLIB_LIBS@ @TOR_OPENSSL_LIBS@ \
- @TOR_LIB_WS32@ @TOR_LIB_GDI@
+ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
include src/tools/tor-fw-helper/include.am
diff --git a/src/tools/tor-checkkey.c b/src/tools/tor-checkkey.c
index 05fc8d86c8..a3860ca4b7 100644
--- a/src/tools/tor-checkkey.c
+++ b/src/tools/tor-checkkey.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008-2012, The Tor Project, Inc. */
+/* Copyright (c) 2008-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CRYPTO_PRIVATE
diff --git a/src/tools/tor-fw-helper/tor-fw-helper-natpmp.c b/src/tools/tor-fw-helper/tor-fw-helper-natpmp.c
index ee6d5f3434..e288a1ecf3 100644
--- a/src/tools/tor-fw-helper/tor-fw-helper-natpmp.c
+++ b/src/tools/tor-fw-helper/tor-fw-helper-natpmp.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2010, Jacob Appelbaum, Steven J. Murdoch.
- * Copyright (c) 2010-2012, The Tor Project, Inc. */
+ * Copyright (c) 2010-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/tools/tor-fw-helper/tor-fw-helper-natpmp.h b/src/tools/tor-fw-helper/tor-fw-helper-natpmp.h
index 037d409ac7..2d924ce750 100644
--- a/src/tools/tor-fw-helper/tor-fw-helper-natpmp.h
+++ b/src/tools/tor-fw-helper/tor-fw-helper-natpmp.h
@@ -1,5 +1,5 @@
/* Copyright (c) 2010, Jacob Appelbaum, Steven J. Murdoch.
- * Copyright (c) 2010-2012, The Tor Project, Inc. */
+ * Copyright (c) 2010-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/tools/tor-fw-helper/tor-fw-helper-upnp.c b/src/tools/tor-fw-helper/tor-fw-helper-upnp.c
index e5c33db0b4..692186d372 100644
--- a/src/tools/tor-fw-helper/tor-fw-helper-upnp.c
+++ b/src/tools/tor-fw-helper/tor-fw-helper-upnp.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2010, Jacob Appelbaum, Steven J. Murdoch.
- * Copyright (c) 2010-2012, The Tor Project, Inc. */
+ * Copyright (c) 2010-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/tools/tor-fw-helper/tor-fw-helper-upnp.h b/src/tools/tor-fw-helper/tor-fw-helper-upnp.h
index add350d2f6..b6c7ed8643 100644
--- a/src/tools/tor-fw-helper/tor-fw-helper-upnp.h
+++ b/src/tools/tor-fw-helper/tor-fw-helper-upnp.h
@@ -1,5 +1,5 @@
/* Copyright (c) 2010, Jacob Appelbaum, Steven J. Murdoch.
- * Copyright (c) 2010-2012, The Tor Project, Inc. */
+ * Copyright (c) 2010-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/tools/tor-fw-helper/tor-fw-helper.c b/src/tools/tor-fw-helper/tor-fw-helper.c
index 4efe515cc4..d92445e08f 100644
--- a/src/tools/tor-fw-helper/tor-fw-helper.c
+++ b/src/tools/tor-fw-helper/tor-fw-helper.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2010, Jacob Appelbaum, Steven J. Murdoch.
- * Copyright (c) 2010-2012, The Tor Project, Inc. */
+ * Copyright (c) 2010-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/tools/tor-fw-helper/tor-fw-helper.h b/src/tools/tor-fw-helper/tor-fw-helper.h
index 1f6c1ff26b..0b0d179935 100644
--- a/src/tools/tor-fw-helper/tor-fw-helper.h
+++ b/src/tools/tor-fw-helper/tor-fw-helper.h
@@ -1,5 +1,5 @@
/* Copyright (c) 2010, Jacob Appelbaum, Steven J. Murdoch.
- * Copyright (c) 2010-2012, The Tor Project, Inc. */
+ * Copyright (c) 2010-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/tools/tor-gencert.c b/src/tools/tor-gencert.c
index 91b1e3c234..3809b22d43 100644
--- a/src/tools/tor-gencert.c
+++ b/src/tools/tor-gencert.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2012, The Tor Project, Inc. */
+/* Copyright (c) 2007-2013, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -82,10 +82,11 @@ crypto_log_errors(int severity, const char *doing)
if (!lib) lib = "(null)";
if (!func) func = "(null)";
if (doing) {
- log(severity, LD_CRYPTO, "crypto error while %s: %s (in %s:%s)",
- doing, msg, lib, func);
+ tor_log(severity, LD_CRYPTO, "crypto error while %s: %s (in %s:%s)",
+ doing, msg, lib, func);
} else {
- log(severity, LD_CRYPTO, "crypto error: %s (in %s:%s)", msg, lib, func);
+ tor_log(severity, LD_CRYPTO, "crypto error: %s (in %s:%s)",
+ msg, lib, func);
}
}
}
diff --git a/src/tools/tor-resolve.c b/src/tools/tor-resolve.c
index cae5fbbbb4..2e4b97eefd 100644
--- a/src/tools/tor-resolve.c
+++ b/src/tools/tor-resolve.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson
- * Copyright (c) 2007-2012, The Tor Project, Inc.
+ * Copyright (c) 2007-2013, The Tor Project, Inc.
*/
/* See LICENSE for licensing information */
diff --git a/src/win32/orconfig.h b/src/win32/orconfig.h
index 24e1261847..4312d9fbe5 100644
--- a/src/win32/orconfig.h
+++ b/src/win32/orconfig.h
@@ -151,6 +151,9 @@
/* Define to 1 iff NULL is represented by a 0 in memory. */
#define NULL_REP_IS_ZERO_BYTES 1
+/* Define to 1 iff memset(0) sets doubles to 0.0 */
+#define DOUBLE_0_REP_IS_ZERO_BYTES 1
+
/* Name of package */
#define PACKAGE "tor"
@@ -238,7 +241,7 @@
#define USING_TWOS_COMPLEMENT
/* Version number of package */
-#define VERSION "0.2.4.7-alpha-dev"
+#define VERSION "0.2.4.10-alpha-dev"
@@ -248,3 +251,8 @@
#define FLEXIBLE_ARRAY_MEMBER 0
#define HAVE_EVENT2_EVENT_H
#define SHARE_DATADIR ""
+#define HAVE_EVENT2_DNS_H
+#define HAVE_EVENT_BASE_LOOPEXIT
+#define CURVE25519_ENABLED
+#define USE_CURVE25519_DONNA
+