aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/address.c19
-rw-r--r--src/common/address.h5
-rw-r--r--src/common/aes.c19
-rw-r--r--src/common/compat.h7
-rw-r--r--src/common/compat_libevent.c28
-rw-r--r--src/common/container.c1
-rw-r--r--src/common/crypto.c1
-rw-r--r--src/common/memarea.c5
-rw-r--r--src/common/tortls.c251
-rw-r--r--src/common/tortls.h10
-rw-r--r--src/common/util.c200
-rw-r--r--src/common/util.h26
-rw-r--r--src/config/geoip13310
-rw-r--r--src/or/Makefile.am3
-rw-r--r--src/or/buffers.c10
-rw-r--r--src/or/circuitbuild.c503
-rw-r--r--src/or/circuitbuild.h13
-rw-r--r--src/or/circuitlist.c20
-rw-r--r--src/or/circuituse.c98
-rw-r--r--src/or/circuituse.h3
-rw-r--r--src/or/command.c12
-rw-r--r--src/or/config.c78
-rw-r--r--src/or/connection.c4
-rw-r--r--src/or/connection.h10
-rw-r--r--src/or/connection_edge.c56
-rw-r--r--src/or/connection_edge.h3
-rw-r--r--src/or/connection_or.c72
-rw-r--r--src/or/control.c84
-rw-r--r--src/or/control.h2
-rw-r--r--src/or/directory.c49
-rw-r--r--src/or/directory.h4
-rw-r--r--src/or/dirserv.c278
-rw-r--r--src/or/dirserv.h18
-rw-r--r--src/or/dirvote.c13
-rw-r--r--src/or/dirvote.h1
-rw-r--r--src/or/dns.c2
-rw-r--r--src/or/hibernate.c4
-rw-r--r--src/or/main.c82
-rw-r--r--src/or/microdesc.c75
-rw-r--r--src/or/microdesc.h2
-rw-r--r--src/or/networkstatus.c250
-rw-r--r--src/or/networkstatus.h24
-rw-r--r--src/or/nodelist.c733
-rw-r--r--src/or/nodelist.h60
-rw-r--r--src/or/ntmain.c1
-rw-r--r--src/or/or.h155
-rw-r--r--src/or/policies.c220
-rw-r--r--src/or/policies.h18
-rw-r--r--src/or/relay.c47
-rw-r--r--src/or/rendclient.c14
-rw-r--r--src/or/rendservice.c43
-rw-r--r--src/or/rephist.c46
-rw-r--r--src/or/router.c212
-rw-r--r--src/or/router.h14
-rw-r--r--src/or/routerlist.c1034
-rw-r--r--src/or/routerlist.h88
-rw-r--r--src/or/routerparse.c7
-rw-r--r--src/test/Makefile.am3
-rw-r--r--src/test/test-child.c18
-rw-r--r--src/test/test.c49
-rw-r--r--src/test/test_dir.c12
-rw-r--r--src/test/test_microdesc.c233
-rw-r--r--src/test/test_util.c180
63 files changed, 11302 insertions, 7540 deletions
diff --git a/src/common/address.c b/src/common/address.c
index c35f04c18..a3f12ac07 100644
--- a/src/common/address.c
+++ b/src/common/address.c
@@ -53,9 +53,7 @@
* socklen object in *<b>sa_out</b> of object size <b>len</b>. If not enough
* room is free, or on error, return -1. Else return the length of the
* sockaddr. */
-/* XXXX021 This returns socklen_t. socklen_t is sometimes unsigned. This
- * function claims to return -1 sometimes. Problematic! */
-socklen_t
+int
tor_addr_to_sockaddr(const tor_addr_t *a,
uint16_t port,
struct sockaddr *sa_out,
@@ -311,7 +309,7 @@ tor_addr_is_internal(const tor_addr_t *addr, int for_listening)
* brackets.
*/
const char *
-tor_addr_to_str(char *dest, const tor_addr_t *addr, int len, int decorate)
+tor_addr_to_str(char *dest, const tor_addr_t *addr, size_t len, int decorate)
{
const char *ptr;
tor_assert(addr && dest);
@@ -927,6 +925,19 @@ fmt_addr(const tor_addr_t *addr)
return buf;
}
+/** Like fmt_addr(), but takes <b>addr</b> as a host-order IPv4
+ * addresses. Also not thread-safe, also clobbers its return buffer on
+ * repeated calls. */
+const char *
+fmt_addr32(uint32_t addr)
+{
+ static char buf[INET_NTOA_BUF_LEN];
+ struct in_addr in;
+ in.s_addr = htonl(addr);
+ tor_inet_ntoa(&in, buf, sizeof(buf));
+ return buf;
+}
+
/** Convert the string in <b>src</b> to a tor_addr_t <b>addr</b>. The string
* may be an IPv4 address, an IPv6 address, or an IPv6 address surrounded by
* square brackets.
diff --git a/src/common/address.h b/src/common/address.h
index 6116bb4b1..e004ffb13 100644
--- a/src/common/address.h
+++ b/src/common/address.h
@@ -39,7 +39,7 @@ static INLINE sa_family_t tor_addr_family(const tor_addr_t *a);
static INLINE const struct in_addr *tor_addr_to_in(const tor_addr_t *a);
static INLINE int tor_addr_eq_ipv4h(const tor_addr_t *a, uint32_t u);
-socklen_t tor_addr_to_sockaddr(const tor_addr_t *a, uint16_t port,
+int tor_addr_to_sockaddr(const tor_addr_t *a, uint16_t port,
struct sockaddr *sa_out, socklen_t len);
int tor_addr_from_sockaddr(tor_addr_t *a, const struct sockaddr *sa,
uint16_t *port_out);
@@ -108,6 +108,7 @@ tor_addr_eq_ipv4h(const tor_addr_t *a, uint32_t u)
int tor_addr_lookup(const char *name, uint16_t family, tor_addr_t *addr_out);
char *tor_dup_addr(const tor_addr_t *addr) ATTR_MALLOC;
const char *fmt_addr(const tor_addr_t *addr);
+const char * fmt_addr32(uint32_t addr);
int get_interface_address6(int severity, sa_family_t family, tor_addr_t *addr);
/** Flag to specify how to do a comparison between addresses. In an "exact"
@@ -144,7 +145,7 @@ int tor_addr_port_parse(const char *s, tor_addr_t *addr_out,
int tor_addr_parse_mask_ports(const char *s,
tor_addr_t *addr_out, maskbits_t *mask_out,
uint16_t *port_min_out, uint16_t *port_max_out);
-const char * tor_addr_to_str(char *dest, const tor_addr_t *addr, int len,
+const char * tor_addr_to_str(char *dest, const tor_addr_t *addr, size_t len,
int decorate);
int tor_addr_from_str(tor_addr_t *addr, const char *src);
void tor_addr_copy(tor_addr_t *dest, const tor_addr_t *src);
diff --git a/src/common/aes.c b/src/common/aes.c
index a17328317..4998c386a 100644
--- a/src/common/aes.c
+++ b/src/common/aes.c
@@ -288,11 +288,20 @@ void
aes_crypt(aes_cnt_cipher_t *cipher, const char *input, size_t len,
char *output)
{
-
- /* XXXX This function is up to 5% of our runtime in some profiles;
- * we should look into unrolling some of the loops; taking advantage
- * of alignment, using a bigger buffer, and so on. Not till after 0.1.2.x,
- * though. */
+ /* This function alone is up to 5% of our runtime in some profiles; anything
+ * we could do to make it faster would be great.
+ *
+ * Experimenting suggests that unrolling the inner loop into a switch
+ * statement doesn't help. What does seem to help is making the input and
+ * output buffers word aligned, and never crypting anything besides an
+ * integer number of words at a time -- it shaves maybe 4-5% of the per-byte
+ * encryption time measured by bench_aes. We can't do that with the current
+ * Tor protocol, though: Tor really likes to crypt things in 509-byte
+ * chunks.
+ *
+ * If we were really ambitous, we'd force len to be a multiple of the block
+ * size, and shave maybe another 4-5% off.
+ */
int c = cipher->pos;
if (PREDICT_UNLIKELY(!len)) return;
diff --git a/src/common/compat.h b/src/common/compat.h
index 5b6cfc40b..2471e6b83 100644
--- a/src/common/compat.h
+++ b/src/common/compat.h
@@ -332,6 +332,13 @@ struct tm *tor_localtime_r(const time_t *timep, struct tm *result);
struct tm *tor_gmtime_r(const time_t *timep, struct tm *result);
#endif
+/** Return true iff the tvp is related to uvp according to the relational
+ * operator cmp. Recognized values for cmp are ==, <=, <, >=, and >. */
+#define tor_timercmp(tvp, uvp, cmp) \
+ (((tvp)->tv_sec == (uvp)->tv_sec) ? \
+ ((tvp)->tv_usec cmp (uvp)->tv_usec) : \
+ ((tvp)->tv_sec cmp (uvp)->tv_sec))
+
/* ===== File compatibility */
int replace_file(const char *from, const char *to);
int touch_file(const char *fname);
diff --git a/src/common/compat_libevent.c b/src/common/compat_libevent.c
index d94f615f7..d3b9eb3af 100644
--- a/src/common/compat_libevent.c
+++ b/src/common/compat_libevent.c
@@ -187,6 +187,8 @@ tor_libevent_initialize(tor_libevent_cfg *torcfg)
#endif
the_event_base = event_base_new_with_config(cfg);
+
+ event_config_free(cfg);
}
#else
the_event_base = event_init();
@@ -340,17 +342,21 @@ tor_check_libevent_version(const char *m, int server,
version = tor_get_libevent_version(&v);
- /* XXX Would it be worthwhile disabling the methods that we know
- * are buggy, rather than just warning about them and then proceeding
- * to use them? If so, we should probably not wrap this whole thing
- * in HAVE_EVENT_GET_VERSION and HAVE_EVENT_GET_METHOD. -RD */
- /* XXXX The problem is that it's not trivial to get libevent to change it's
- * method once it's initialized, and it's not trivial to tell what method it
- * will use without initializing it. I guess we could preemptively disable
- * buggy libevent modes based on the version _before_ initializing it,
- * though, but then there's no good way (afaict) to warn "I would have used
- * kqueue, but instead I'm using select." -NM */
- /* XXXX022 revist the above; it is fixable now. */
+ /* It would be better to disable known-buggy methods than to simply
+ warn about them. However, it's not trivial to get libevent to change its
+ method once it's initialized, and it's not trivial to tell what method it
+ will use without initializing it.
+
+ If we saw that the version was definitely bad, we could disable all the
+ methods that were bad for that version. But the issue with that is that
+ if you've found a libevent before 1.1, you are not at all guaranteed to
+ have _any_ good method to use.
+
+ As of Libevent 2, we can do better, and have more control over what
+ methods get used. But the problem here is that there are no versions of
+ Libevent 2 that have buggy event cores, so there's no point in writing
+ disable code yet.
+ */
if (!strcmp(m, "kqueue")) {
if (version < V_OLD(1,1,'b'))
buggy = 1;
diff --git a/src/common/container.c b/src/common/container.c
index 72f347034..0a95f33aa 100644
--- a/src/common/container.c
+++ b/src/common/container.c
@@ -268,7 +268,6 @@ smartlist_subtract(smartlist_t *sl1, const smartlist_t *sl2)
/** Remove the <b>idx</b>th element of sl; if idx is not the last
* element, swap the last element of sl into the <b>idx</b>th space.
- * Return the old value of the <b>idx</b>th element.
*/
void
smartlist_del(smartlist_t *sl, int idx)
diff --git a/src/common/crypto.c b/src/common/crypto.c
index bfb81d3cc..b49547fa4 100644
--- a/src/common/crypto.c
+++ b/src/common/crypto.c
@@ -405,6 +405,7 @@ crypto_free_pk_env(crypto_pk_env_t *env)
if (--env->refs > 0)
return;
+ tor_assert(env->refs == 0);
if (env->key)
RSA_free(env->key);
diff --git a/src/common/memarea.c b/src/common/memarea.c
index 77579e63b..b5ac7ad97 100644
--- a/src/common/memarea.c
+++ b/src/common/memarea.c
@@ -53,7 +53,7 @@ realign_pointer(void *ptr)
{
uintptr_t x = (uintptr_t)ptr;
x = (x+MEMAREA_ALIGN_MASK) & ~MEMAREA_ALIGN_MASK;
- tor_assert(((void*)x) >= ptr); // XXXX021 remove this once bug 930 is solved
+ tor_assert(((void*)x) >= ptr);
return (void*)x;
}
@@ -230,9 +230,10 @@ memarea_alloc(memarea_t *area, size_t sz)
}
result = chunk->next_mem;
chunk->next_mem = chunk->next_mem + sz;
- // XXXX021 remove these once bug 930 is solved.
+
tor_assert(chunk->next_mem >= chunk->u.mem);
tor_assert(chunk->next_mem <= chunk->u.mem+chunk->mem_size);
+
chunk->next_mem = realign_pointer(chunk->next_mem);
return result;
}
diff --git a/src/common/tortls.c b/src/common/tortls.c
index ce5411a55..ba450e4b1 100644
--- a/src/common/tortls.c
+++ b/src/common/tortls.c
@@ -93,7 +93,9 @@ static int use_unsafe_renegotiation_op = 0;
* SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION? */
static int use_unsafe_renegotiation_flag = 0;
-/** Structure holding the TLS state for a single connection. */
+/** Holds a SSL_CTX object and related state used to configure TLS
+ * connections.
+ */
typedef struct tor_tls_context_t {
int refcnt;
SSL_CTX *ctx;
@@ -123,8 +125,10 @@ struct tor_tls_t {
* of the connection protocol (client sends
* different cipher list, server sends only
* one certificate). */
- /** True iff we should call negotiated_callback when we're done reading. */
+ /** True iff we should call negotiated_callback when we're done reading. */
unsigned int got_renegotiate:1;
+ /** Incremented every time we start the server side of a handshake. */
+ uint8_t server_handshake_count;
size_t wantwrite_n; /**< 0 normally, >0 if we returned wantwrite last
* time. */
/** Last values retrieved from BIO_number_read()/write(); see
@@ -196,9 +200,17 @@ static X509* tor_tls_create_certificate(crypto_pk_env_t *rsa,
const char *cname_sign,
unsigned int lifetime);
-/** Global tls context. We keep it here because nobody else needs to
- * touch it. */
-static tor_tls_context_t *global_tls_context = NULL;
+static int tor_tls_context_init_one(tor_tls_context_t **ppcontext,
+ crypto_pk_env_t *identity,
+ unsigned int key_lifetime);
+static tor_tls_context_t *tor_tls_context_new(crypto_pk_env_t *identity,
+ unsigned int key_lifetime);
+
+/** Global TLS contexts. We keep them here because nobody else needs
+ * to touch them. */
+static tor_tls_context_t *server_tls_context = NULL;
+static tor_tls_context_t *client_tls_context = NULL;
+
/** True iff tor_tls_init() has been called. */
static int tls_library_is_initialized = 0;
@@ -222,36 +234,46 @@ ssl_state_to_string(int ssl_state)
return buf;
}
+void
+tor_tls_log_one_error(tor_tls_t *tls, unsigned long err,
+ int severity, int domain, const char *doing)
+{
+ const char *state = NULL, *addr;
+ const char *msg, *lib, *func;
+ int st;
+
+ st = (tls && tls->ssl) ? tls->ssl->state : -1;
+ state = (st>=0)?ssl_state_to_string(st):"---";
+
+ addr = tls ? tls->address : NULL;
+
+ msg = (const char*)ERR_reason_error_string(err);
+ lib = (const char*)ERR_lib_error_string(err);
+ func = (const char*)ERR_func_error_string(err);
+ if (!msg) msg = "(null)";
+ if (!lib) lib = "(null)";
+ if (!func) func = "(null)";
+ if (doing) {
+ 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)",
+ addr?" with ":"", addr?addr:"",
+ msg, lib, func, state);
+ }
+}
+
/** Log all pending tls errors at level <b>severity</b>. Use
* <b>doing</b> to describe our current activities.
*/
static void
tls_log_errors(tor_tls_t *tls, int severity, int domain, const char *doing)
{
- const char *state = NULL;
- int st;
unsigned long err;
- const char *msg, *lib, *func, *addr;
- addr = tls ? tls->address : NULL;
- st = (tls && tls->ssl) ? tls->ssl->state : -1;
+
while ((err = ERR_get_error()) != 0) {
- msg = (const char*)ERR_reason_error_string(err);
- lib = (const char*)ERR_lib_error_string(err);
- func = (const char*)ERR_func_error_string(err);
- if (!state)
- state = (st>=0)?ssl_state_to_string(st):"---";
- if (!msg) msg = "(null)";
- if (!lib) lib = "(null)";
- if (!func) func = "(null)";
- if (doing) {
- 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)",
- addr?" with ":"", addr?addr:"",
- msg, lib, func, state);
- }
+ tor_tls_log_one_error(tls, err, severity, domain, doing);
}
}
@@ -379,7 +401,7 @@ tor_tls_init(void)
version = SSLeay();
- /* OpenSSL 0.9.8l introduced SSL3_FLAGS_ALLOW_UNSAGE_LEGACY_RENEGOTIATION
+ /* OpenSSL 0.9.8l introduced SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
* here, but without thinking too hard about it: it turns out that the
* flag in question needed to be set at the last minute, and that it
* conflicted with an existing flag number that had already been added
@@ -434,9 +456,15 @@ tor_tls_init(void)
void
tor_tls_free_all(void)
{
- if (global_tls_context) {
- tor_tls_context_decref(global_tls_context);
- global_tls_context = NULL;
+ if (server_tls_context) {
+ tor_tls_context_t *ctx = server_tls_context;
+ server_tls_context = NULL;
+ tor_tls_context_decref(ctx);
+ }
+ if (client_tls_context) {
+ tor_tls_context_t *ctx = client_tls_context;
+ client_tls_context = NULL;
+ tor_tls_context_decref(ctx);
}
if (!HT_EMPTY(&tlsmap_root)) {
log_warn(LD_MM, "Still have entries in the tlsmap at shutdown.");
@@ -562,9 +590,9 @@ tor_tls_create_certificate(crypto_pk_env_t *rsa,
(TLS1_TXT_DHE_RSA_WITH_AES_256_SHA ":" \
TLS1_TXT_DHE_RSA_WITH_AES_128_SHA ":" \
SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA)
-/* Note: for setting up your own private testing network with link crypto
- * disabled, set the cipher lists to your cipher list to
- * SSL3_TXT_RSA_NULL_SHA. If you do this, you won't be able to communicate
+/* Note: to set up your own private testing network with link crypto
+ * disabled, set your Tors' cipher list to
+ * (SSL3_TXT_RSA_NULL_SHA). If you do this, you won't be able to communicate
* with any of the "real" Tors, though. */
#ifdef V2_HANDSHAKE_CLIENT
@@ -623,15 +651,97 @@ tor_tls_context_incref(tor_tls_context_t *ctx)
++ctx->refcnt;
}
-/** Create a new TLS context for use with Tor TLS handshakes.
- * <b>identity</b> should be set to the identity key used to sign the
- * certificate, and <b>nickname</b> set to the nickname to use.
+/** Create new global client and server TLS contexts.
+ *
+ * If <b>server_identity</b> is NULL, this will not generate a server
+ * TLS context. If <b>is_public_server</b> is non-zero, this will use
+ * the same TLS context for incoming and outgoing connections, and
+ * ignore <b>client_identity</b>. */
+int
+tor_tls_context_init(int is_public_server,
+ crypto_pk_env_t *client_identity,
+ crypto_pk_env_t *server_identity,
+ unsigned int key_lifetime)
+{
+ int rv1 = 0;
+ int rv2 = 0;
+
+ if (is_public_server) {
+ tor_tls_context_t *new_ctx;
+ tor_tls_context_t *old_ctx;
+
+ tor_assert(server_identity != NULL);
+
+ rv1 = tor_tls_context_init_one(&server_tls_context,
+ server_identity,
+ key_lifetime);
+
+ if (rv1 >= 0) {
+ new_ctx = server_tls_context;
+ tor_tls_context_incref(new_ctx);
+ old_ctx = client_tls_context;
+ client_tls_context = new_ctx;
+
+ if (old_ctx != NULL) {
+ tor_tls_context_decref(old_ctx);
+ }
+ }
+ } else {
+ if (server_identity != NULL) {
+ rv1 = tor_tls_context_init_one(&server_tls_context,
+ server_identity,
+ key_lifetime);
+ } else {
+ tor_tls_context_t *old_ctx = server_tls_context;
+ server_tls_context = NULL;
+
+ if (old_ctx != NULL) {
+ tor_tls_context_decref(old_ctx);
+ }
+ }
+
+ rv2 = tor_tls_context_init_one(&client_tls_context,
+ client_identity,
+ key_lifetime);
+ }
+
+ return MIN(rv1, rv2);
+}
+
+/** Create a new global TLS context.
*
* You can call this function multiple times. Each time you call it,
* it generates new certificates; all new connections will use
* the new SSL context.
*/
-int
+static int
+tor_tls_context_init_one(tor_tls_context_t **ppcontext,
+ crypto_pk_env_t *identity,
+ unsigned int key_lifetime)
+{
+ tor_tls_context_t *new_ctx = tor_tls_context_new(identity,
+ key_lifetime);
+ tor_tls_context_t *old_ctx = *ppcontext;
+
+ if (new_ctx != NULL) {
+ *ppcontext = new_ctx;
+
+ /* Free the old context if one existed. */
+ if (old_ctx != NULL) {
+ /* This is safe even if there are open connections: we reference-
+ * count tor_tls_context_t objects. */
+ tor_tls_context_decref(old_ctx);
+ }
+ }
+
+ return ((new_ctx != NULL) ? 0 : -1);
+}
+
+/** Create a new TLS context for use with Tor TLS handshakes.
+ * <b>identity</b> should be set to the identity key used to sign the
+ * certificate.
+ */
+static tor_tls_context_t *
tor_tls_context_new(crypto_pk_env_t *identity, unsigned int key_lifetime)
{
crypto_pk_env_t *rsa = NULL;
@@ -726,18 +836,12 @@ tor_tls_context_new(crypto_pk_env_t *identity, unsigned int key_lifetime)
always_accept_verify_cb);
/* let us realloc bufs that we're writing from */
SSL_CTX_set_mode(result->ctx, SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER);
- /* Free the old context if one exists. */
- if (global_tls_context) {
- /* This is safe even if there are open connections: OpenSSL does
- * reference counting with SSL and SSL_CTX objects. */
- tor_tls_context_decref(global_tls_context);
- }
- global_tls_context = result;
+
if (rsa)
crypto_free_pk_env(rsa);
tor_free(nickname);
tor_free(nn2);
- return 0;
+ return result;
error:
tls_log_errors(NULL, LOG_WARN, LD_NET, "creating TLS context");
@@ -753,7 +857,7 @@ tor_tls_context_new(crypto_pk_env_t *identity, unsigned int key_lifetime)
X509_free(cert);
if (idcert)
X509_free(idcert);
- return -1;
+ return NULL;
}
#ifdef V2_HANDSHAKE_SERVER
@@ -829,6 +933,8 @@ tor_tls_server_info_callback(const SSL *ssl, int type, int val)
/* Check whether we're watching for renegotiates. If so, this is one! */
if (tls->negotiated_callback)
tls->got_renegotiate = 1;
+ if (tls->server_handshake_count < 127) /*avoid any overflow possibility*/
+ ++tls->server_handshake_count;
} else {
log_warn(LD_BUG, "Couldn't look up the tls for an SSL*. How odd!");
}
@@ -847,6 +953,10 @@ tor_tls_server_info_callback(const SSL *ssl, int type, int val)
if (tls) {
tls->wasV2Handshake = 1;
+#ifdef USE_BUFFEREVENTS
+ if (use_unsafe_renegotiation_flag)
+ tls->ssl->s3->flags |= SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION;
+#endif
} else {
log_warn(LD_BUG, "Couldn't look up the tls for an SSL*. How odd!");
}
@@ -932,10 +1042,12 @@ tor_tls_new(int sock, int isServer)
{
BIO *bio = NULL;
tor_tls_t *result = tor_malloc_zero(sizeof(tor_tls_t));
+ tor_tls_context_t *context = isServer ? server_tls_context :
+ client_tls_context;
- tor_assert(global_tls_context); /* make sure somebody made it first */
- if (!(result->ssl = SSL_new(global_tls_context->ctx))) {
- tls_log_errors(NULL, LOG_WARN, LD_NET, "generating TLS context");
+ tor_assert(context); /* make sure somebody made it first */
+ if (!(result->ssl = SSL_new(context->ctx))) {
+ tls_log_errors(NULL, LOG_WARN, LD_NET, "creating SSL object");
tor_free(result);
return NULL;
}
@@ -974,8 +1086,8 @@ tor_tls_new(int sock, int isServer)
}
HT_INSERT(tlsmap, &tlsmap_root, result);
SSL_set_bio(result->ssl, bio, bio);
- tor_tls_context_incref(global_tls_context);
- result->context = global_tls_context;
+ tor_tls_context_incref(context);
+ result->context = context;
result->state = TOR_TLS_ST_HANDSHAKE;
result->isServer = isServer;
result->wantwrite_n = 0;
@@ -992,7 +1104,7 @@ tor_tls_new(int sock, int isServer)
#endif
/* Not expected to get called. */
- tls_log_errors(NULL, LOG_WARN, LD_NET, "generating TLS context");
+ tls_log_errors(NULL, LOG_WARN, LD_NET, "creating tor_tls_t object");
return result;
}
@@ -1055,6 +1167,19 @@ tor_tls_block_renegotiation(tor_tls_t *tls)
tls->ssl->s3->flags &= ~SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION;
}
+void
+tor_tls_assert_renegotiation_unblocked(tor_tls_t *tls)
+{
+ if (use_unsafe_renegotiation_flag) {
+ tor_assert(0 != (tls->ssl->s3->flags &
+ SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION));
+ }
+ if (use_unsafe_renegotiation_op) {
+ long options = SSL_get_options(tls->ssl);
+ tor_assert(0 != (options & SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION));
+ }
+}
+
/** Return whether this tls initiated the connect (client) or
* received it (server). */
int
@@ -1646,6 +1771,22 @@ tor_tls_used_v1_handshake(tor_tls_t *tls)
return 1;
}
+/** Return the number of server handshakes that we've noticed doing on
+ * <b>tls</b>. */
+int
+tor_tls_get_num_server_handshakes(tor_tls_t *tls)
+{
+ return tls->server_handshake_count;
+}
+
+/** Return true iff the server TLS connection <b>tls</b> got the renegotiation
+ * request it was waiting for. */
+int
+tor_tls_server_got_renegotiate(tor_tls_t *tls)
+{
+ return tls->got_renegotiate;
+}
+
/** Examine the amount of memory used and available for buffers in <b>tls</b>.
* Set *<b>rbuf_capacity</b> to the amount of storage allocated for the read
* buffer and *<b>rbuf_bytes</b> to the amount actually used.
@@ -1720,6 +1861,10 @@ tor_tls_init_bufferevent(tor_tls_t *tls, struct bufferevent *bufev_in,
state,
BEV_OPT_DEFER_CALLBACKS);
#endif
+ /* Unblock _after_ creating the bufferevent, since accept/connect tend to
+ * clear flags. */
+ tor_tls_unblock_renegotiation(tls);
+
return out;
}
#endif
diff --git a/src/common/tortls.h b/src/common/tortls.h
index f8603b529..50d14da52 100644
--- a/src/common/tortls.h
+++ b/src/common/tortls.h
@@ -50,7 +50,10 @@ typedef struct tor_tls_t tor_tls_t;
const char *tor_tls_err_to_string(int err);
void tor_tls_free_all(void);
-int tor_tls_context_new(crypto_pk_env_t *rsa, unsigned int key_lifetime);
+int tor_tls_context_init(int is_public_server,
+ crypto_pk_env_t *client_identity,
+ crypto_pk_env_t *server_identity,
+ unsigned int key_lifetime);
tor_tls_t *tor_tls_new(int sock, int is_server);
void tor_tls_set_logged_address(tor_tls_t *tls, const char *address);
void tor_tls_set_renegotiate_callback(tor_tls_t *tls,
@@ -68,6 +71,7 @@ int tor_tls_finish_handshake(tor_tls_t *tls);
int tor_tls_renegotiate(tor_tls_t *tls);
void tor_tls_unblock_renegotiation(tor_tls_t *tls);
void tor_tls_block_renegotiation(tor_tls_t *tls);
+void tor_tls_assert_renegotiation_unblocked(tor_tls_t *tls);
int tor_tls_shutdown(tor_tls_t *tls);
int tor_tls_get_pending_bytes(tor_tls_t *tls);
size_t tor_tls_get_forced_write_size(tor_tls_t *tls);
@@ -80,12 +84,16 @@ void tor_tls_get_buffer_sizes(tor_tls_t *tls,
size_t *wbuf_capacity, size_t *wbuf_bytes);
int tor_tls_used_v1_handshake(tor_tls_t *tls);
+int tor_tls_get_num_server_handshakes(tor_tls_t *tls);
+int tor_tls_server_got_renegotiate(tor_tls_t *tls);
/* Log and abort if there are unhandled TLS errors in OpenSSL's error stack.
*/
#define check_no_tls_errors() _check_no_tls_errors(__FILE__,__LINE__)
void _check_no_tls_errors(const char *fname, int line);
+void tor_tls_log_one_error(tor_tls_t *tls, unsigned long err,
+ int severity, int domain, const char *doing);
#ifdef USE_BUFFEREVENTS
int tor_tls_start_renegotiating(tor_tls_t *tls);
diff --git a/src/common/util.c b/src/common/util.c
index b5a3ade2b..16e737023 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -934,7 +934,7 @@ esc_for_log(const char *s)
char *result, *outp;
size_t len = 3;
if (!s) {
- return tor_strdup("");
+ return tor_strdup("(null)");
}
for (cp = s; *cp; ++cp) {
@@ -1503,83 +1503,6 @@ update_approx_time(time_t now)
#endif
/* =====
- * Fuzzy time
- * XXXX022 Use this consistently or rip most of it out.
- * ===== */
-
-/* In a perfect world, everybody would run NTP, and NTP would be perfect, so
- * if we wanted to know "Is the current time before time X?" we could just say
- * "time(NULL) < X".
- *
- * But unfortunately, many users are running Tor in an imperfect world, on
- * even more imperfect computers. Hence, we need to track time oddly. We
- * model the user's computer as being "skewed" from accurate time by
- * -<b>ftime_skew</b> seconds, such that our best guess of the current time is
- * time(NULL)+ftime_skew. We also assume that our measurements of time may
- * have up to <b>ftime_slop</b> seconds of inaccuracy; IOW, our window of
- * estimate for the current time is now + ftime_skew +/- ftime_slop.
- */
-/** Our current estimate of our skew, such that we think the current time is
- * closest to time(NULL)+ftime_skew. */
-static int ftime_skew = 0;
-/** Tolerance during time comparisons, in seconds. */
-static int ftime_slop = 60;
-/** Set the largest amount of sloppiness we'll allow in fuzzy time
- * comparisons. */
-void
-ftime_set_maximum_sloppiness(int seconds)
-{
- tor_assert(seconds >= 0);
- ftime_slop = seconds;
-}
-/** Set the amount by which we believe our system clock to differ from
- * real time. */
-void
-ftime_set_estimated_skew(int seconds)
-{
- ftime_skew = seconds;
-}
-#if 0
-void
-ftime_get_window(time_t now, ftime_t *ft_out)
-{
- ft_out->earliest = now + ftime_skew - ftime_slop;
- ft_out->latest = now + ftime_skew + ftime_slop;
-}
-#endif
-/** Return true iff we think that <b>now</b> might be after <b>when</b>. */
-int
-ftime_maybe_after(time_t now, time_t when)
-{
- /* It may be after when iff the latest possible current time is after when */
- return (now + ftime_skew + ftime_slop) >= when;
-}
-/** Return true iff we think that <b>now</b> might be before <b>when</b>. */
-int
-ftime_maybe_before(time_t now, time_t when)
-{
- /* It may be before when iff the earliest possible current time is before */
- return (now + ftime_skew - ftime_slop) < when;
-}
-/** Return true if we think that <b>now</b> is definitely after <b>when</b>. */
-int
-ftime_definitely_after(time_t now, time_t when)
-{
- /* It is definitely after when if the earliest time it could be is still
- * after when. */
- return (now + ftime_skew - ftime_slop) >= when;
-}
-/** Return true if we think that <b>now</b> is definitely before <b>when</b>.
- */
-int
-ftime_definitely_before(time_t now, time_t when)
-{
- /* It is definitely before when if the latest time it could be is still
- * before when. */
- return (now + ftime_skew + ftime_slop) < when;
-}
-
-/* =====
* Rate limiting
* ===== */
@@ -2498,18 +2421,21 @@ digit_to_num(char d)
* success, store the result in <b>out</b>, advance bufp to the next
* character, and return 0. On failure, return -1. */
static int
-scan_unsigned(const char **bufp, unsigned *out, int width)
+scan_unsigned(const char **bufp, unsigned *out, int width, int base)
{
unsigned result = 0;
int scanned_so_far = 0;
+ const int hex = base==16;
+ tor_assert(base == 10 || base == 16);
if (!bufp || !*bufp || !out)
return -1;
if (width<0)
width=MAX_SCANF_WIDTH;
- while (**bufp && TOR_ISDIGIT(**bufp) && scanned_so_far < width) {
- int digit = digit_to_num(*(*bufp)++);
- unsigned new_result = result * 10 + digit;
+ while (**bufp && (hex?TOR_ISXDIGIT(**bufp):TOR_ISDIGIT(**bufp))
+ && scanned_so_far < width) {
+ int digit = hex?hex_decode_digit(*(*bufp)++):digit_to_num(*(*bufp)++);
+ unsigned new_result = result * base + digit;
if (new_result > UINT32_MAX || new_result < result)
return -1; /* over/underflow. */
result = new_result;
@@ -2571,11 +2497,12 @@ tor_vsscanf(const char *buf, const char *pattern, va_list ap)
if (!width) /* No zero-width things. */
return -1;
}
- if (*pattern == 'u') {
+ if (*pattern == 'u' || *pattern == 'x') {
unsigned *u = va_arg(ap, unsigned *);
+ const int base = (*pattern == 'u') ? 10 : 16;
if (!*buf)
return n_matched;
- if (scan_unsigned(&buf, u, width)<0)
+ if (scan_unsigned(&buf, u, width, base)<0)
return n_matched;
++pattern;
++n_matched;
@@ -2612,9 +2539,9 @@ tor_vsscanf(const char *buf, const char *pattern, va_list ap)
/** Minimal sscanf replacement: parse <b>buf</b> according to <b>pattern</b>
* and store the results in the corresponding argument fields. Differs from
- * sscanf in that it: Only handles %u and %Ns. Does not handle arbitrarily
- * long widths. %u does not consume any space. Is locale-independent.
- * Returns -1 on malformed patterns.
+ * sscanf in that it: Only handles %u and %x and %Ns. Does not handle
+ * arbitrarily long widths. %u and %x do not consume any space. Is
+ * locale-independent. Returns -1 on malformed patterns.
*
* (As with other locale-independent functions, we need this to parse data that
* is in ASCII without worrying that the C library's locale-handling will make
@@ -2879,17 +2806,34 @@ load_windows_system_library(const TCHAR *library_name)
}
#endif
-/** Format child_state and saved_errno as a hex string placed in hex_errno.
- * Called between fork and _exit, so must be signal-handler safe */
+/** Format <b>child_state</b> and <b>saved_errno</b> as a hex string placed in
+ * <b>hex_errno</b>. Called between fork and _exit, so must be signal-handler
+ * safe.
+ *
+ * <b>hex_errno</b> must have at least HEX_ERRNO_SIZE bytes available.
+ *
+ * The format of <b>hex_errno</b> is: "CHILD_STATE/ERRNO\n", left-padded
+ * with spaces. Note that there is no trailing \0. CHILD_STATE indicates where
+ * in the processs of starting the child process did the failure occur (see
+ * CHILD_STATE_* macros for definition), and SAVED_ERRNO is the value of
+ * errno when the failure occurred.
+ */
+
void
format_helper_exit_status(unsigned char child_state, int saved_errno,
char *hex_errno)
{
- /* Convert errno to be unsigned for hex conversion */
unsigned int unsigned_errno;
char *cur;
+ size_t i;
+
+ /* Fill hex_errno with spaces, and a trailing newline (memset may
+ not be signal handler safe, so we can't use it) */
+ for (i = 0; i < (HEX_ERRNO_SIZE - 1); i++)
+ hex_errno[i] = ' ';
+ hex_errno[HEX_ERRNO_SIZE - 1] = '\n';
- /* If errno is negative, negate it */
+ /* Convert errno to be unsigned for hex conversion */
if (saved_errno < 0) {
unsigned_errno = (unsigned int) -saved_errno;
} else {
@@ -2899,17 +2843,26 @@ format_helper_exit_status(unsigned char child_state, int saved_errno,
/* Convert errno to hex (start before \n) */
cur = hex_errno + HEX_ERRNO_SIZE - 2;
+ /* Check for overflow on first iteration of the loop */
+ if (cur < hex_errno)
+ return;
+
do {
*cur-- = "0123456789ABCDEF"[unsigned_errno % 16];
unsigned_errno /= 16;
} while (unsigned_errno != 0 && cur >= hex_errno);
- /* Add on the minus side if errno was negative */
- if (saved_errno < 0)
+ /* Prepend the minus sign if errno was negative */
+ if (saved_errno < 0 && cur >= hex_errno)
*cur-- = '-';
/* Leave a gap */
- *cur-- = '/';
+ if (cur >= hex_errno)
+ *cur-- = '/';
+
+ /* Check for overflow on first iteration of the loop */
+ if (cur < hex_errno)
+ return;
/* Convert child_state to hex */
do {
@@ -2934,13 +2887,20 @@ format_helper_exit_status(unsigned char child_state, int saved_errno,
#define SPAWN_ERROR_MESSAGE "ERR: Failed to spawn background process - code "
-/** Start a program in the background. If <b>filename</b> contains a '/', then
- * it will be treated as an absolute or relative path. Otherwise the system
- * path will be searched for <b>filename</b>. Returns pid on success, otherwise
- * returns -1.
- * Some parts of this code are based on the POSIX subprocess module from Python
+/** Start a program in the background. If <b>filename</b> contains a '/',
+ * then it will be treated as an absolute or relative path. Otherwise the
+ * system path will be searched for <b>filename</b>. The strings in
+ * <b>argv</b> will be passed as the command line arguments of the child
+ * program (following convention, argv[0] should normally be the filename of
+ * the executable). The last element of argv must be NULL. If the child
+ * program is launched, the PID will be returned and <b>stdout_read</b> and
+ * <b>stdout_err</b> will be set to file descriptors from which the stdout
+ * and stderr, respectively, output of the child program can be read, and the
+ * stdin of the child process shall be set to /dev/null. Otherwise returns
+ * -1. Some parts of this code are based on the POSIX subprocess module from
+ * Python.
*/
-static int
+int
tor_spawn_background(const char *const filename, int *stdout_read,
int *stderr_read, const char **argv)
{
@@ -2970,16 +2930,12 @@ tor_spawn_background(const char *const filename, int *stdout_read,
and we are not allowed to use unsafe functions between fork and exec */
error_message_length = strlen(error_message);
- /* Fill hex_errno with spaces, and a trailing newline */
- memset(hex_errno, ' ', sizeof(hex_errno) - 1);
- hex_errno[sizeof(hex_errno) - 1] = '\n';
-
child_state = CHILD_STATE_PIPE;
/* Set up pipe for redirecting stdout and stderr of child */
retval = pipe(stdout_pipe);
if (-1 == retval) {
- log_err(LD_GENERAL,
+ log_warn(LD_GENERAL,
"Failed to set up pipe for stdout communication with child process: %s",
strerror(errno));
return -1;
@@ -2987,7 +2943,7 @@ tor_spawn_background(const char *const filename, int *stdout_read,
retval = pipe(stderr_pipe);
if (-1 == retval) {
- log_err(LD_GENERAL,
+ log_warn(LD_GENERAL,
"Failed to set up pipe for stderr communication with child process: %s",
strerror(errno));
return -1;
@@ -3039,7 +2995,8 @@ tor_spawn_background(const char *const filename, int *stdout_read,
child_state = CHILD_STATE_CLOSEFD;
/* Close all other fds, including the read end of the pipe */
- /* TODO: use closefrom if available */
+ /* XXX: use closefrom if available, or better still set FD_CLOEXEC
+ on all of Tor's open files */
for (fd = STDERR_FILENO + 1; fd < max_fd; fd++)
close(fd);
@@ -3055,7 +3012,7 @@ tor_spawn_background(const char *const filename, int *stdout_read,
child_state = CHILD_STATE_FAILEXEC;
error:
- /* TODO: are we leaking fds from the pipe? */
+ /* XXX: are we leaking fds from the pipe? */
format_helper_exit_status(child_state, errno, hex_errno);
@@ -3071,7 +3028,7 @@ tor_spawn_background(const char *const filename, int *stdout_read,
/* In parent */
if (-1 == pid) {
- log_err(LD_GENERAL, "Failed to fork child process: %s", strerror(errno));
+ log_warn(LD_GENERAL, "Failed to fork child process: %s", strerror(errno));
close(stdout_pipe[0]);
close(stdout_pipe[1]);
close(stderr_pipe[0]);
@@ -3084,7 +3041,7 @@ tor_spawn_background(const char *const filename, int *stdout_read,
retval = close(stdout_pipe[1]);
if (-1 == retval) {
- log_err(LD_GENERAL,
+ log_warn(LD_GENERAL,
"Failed to close write end of stdout pipe in parent process: %s",
strerror(errno));
/* Do not return -1, because the child is running, so the parent
@@ -3095,7 +3052,7 @@ tor_spawn_background(const char *const filename, int *stdout_read,
retval = close(stderr_pipe[1]);
if (-1 == retval) {
- log_err(LD_GENERAL,
+ log_warn(LD_GENERAL,
"Failed to close write end of stderr pipe in parent process: %s",
strerror(errno));
/* Do not return -1, because the child is running, so the parent
@@ -3148,26 +3105,27 @@ log_from_pipe(FILE *stream, int severity, const char *executable,
} else {
/* No newline; check whether we overflowed the buffer */
if (!feof(stream))
- log_err(LD_GENERAL,
+ log_warn(LD_GENERAL,
"Line from port forwarding helper was truncated: %s", buf);
/* TODO: What to do with this error? */
}
/* Check if buf starts with SPAWN_ERROR_MESSAGE */
- if (strstr(buf, SPAWN_ERROR_MESSAGE) == buf) {
+ if (strcmpstart(buf, SPAWN_ERROR_MESSAGE) == 0) {
/* Parse error message */
int retval, child_state, saved_errno;
- retval = sscanf(buf, SPAWN_ERROR_MESSAGE "%d/%d",
- &child_state, &saved_errno);
+ retval = tor_sscanf(buf, SPAWN_ERROR_MESSAGE "%x/%x",
+ &child_state, &saved_errno);
if (retval == 2) {
- log_err(LD_GENERAL,
+ log_warn(LD_GENERAL,
"Failed to start child process \"%s\" in state %d: %s",
executable, child_state, strerror(saved_errno));
if (child_status)
*child_status = 1;
} else {
- /* Failed to parse message from child process, log it as error */
- log_err(LD_GENERAL,
+ /* Failed to parse message from child process, log it as a
+ warning */
+ log_warn(LD_GENERAL,
"Unexpected message from port forwarding helper \"%s\": %s",
executable, buf);
}
@@ -3233,7 +3191,7 @@ tor_check_port_forwarding(const char *filename, int dir_port, int or_port,
child_pid = tor_spawn_background(filename, &fd_out, &fd_err, argv);
if (child_pid < 0) {
- log_err(LD_GENERAL, "Failed to start port forwarding helper %s",
+ log_warn(LD_GENERAL, "Failed to start port forwarding helper %s",
filename);
child_pid = -1;
return;
@@ -3254,7 +3212,7 @@ tor_check_port_forwarding(const char *filename, int dir_port, int or_port,
/* Read from stdout/stderr and log result */
retval = 0;
stdout_status = log_from_pipe(stdout_read, LOG_INFO, filename, &retval);
- stderr_status = log_from_pipe(stderr_read, LOG_ERR, filename, &retval);
+ stderr_status = log_from_pipe(stderr_read, LOG_WARN, filename, &retval);
if (retval) {
/* There was a problem in the child process */
time_to_run_helper = now + TIME_TO_EXEC_FWHELPER_FAIL;
@@ -3276,7 +3234,7 @@ tor_check_port_forwarding(const char *filename, int dir_port, int or_port,
if (1 == retval) {
log_info(LD_GENERAL, "Port forwarding helper terminated");
} else {
- log_err(LD_GENERAL, "Failed to read from port forwarding helper");
+ log_warn(LD_GENERAL, "Failed to read from port forwarding helper");
}
/* TODO: The child might not actually be finished (maybe it failed or
diff --git a/src/common/util.h b/src/common/util.h
index 86555eeb1..633c613d4 100644
--- a/src/common/util.h
+++ b/src/common/util.h
@@ -248,14 +248,22 @@ void update_approx_time(time_t now);
#endif
/* Fuzzy time. */
-void ftime_set_maximum_sloppiness(int seconds);
-void ftime_set_estimated_skew(int seconds);
-/* typedef struct ftime_t { time_t earliest; time_t latest; } ftime_t; */
-/* void ftime_get_window(time_t now, ftime_t *ft_out); */
-int ftime_maybe_after(time_t now, time_t when);
-int ftime_maybe_before(time_t now, time_t when);
-int ftime_definitely_after(time_t now, time_t when);
-int ftime_definitely_before(time_t now, time_t when);
+
+/** Return true iff <a>a</b> is definitely after <b>b</b>, even if there
+ * could be up to <b>allow_seconds</b> of skew in one of them. */
+static INLINE int
+time_definitely_after(time_t a, time_t b, int allow_skew)
+{
+ return a-allow_skew > b;
+}
+
+/** Return true iff <a>a</b> is definitely before <b>b</b>, even if there
+ * could be up to <b>allow_seconds</b> of skew in one of them. */
+static INLINE int
+time_definitely_before(time_t a, time_t b, int allow_skew)
+{
+ return a+allow_skew < b;
+}
/* Rate-limiter */
@@ -350,6 +358,8 @@ HANDLE load_windows_system_library(const TCHAR *library_name);
#ifdef UTIL_PRIVATE
/* Prototypes for private functions only used by util.c (and unit tests) */
+int tor_spawn_background(const char *const filename, int *stdout_read,
+ int *stderr_read, const char **argv);
void format_helper_exit_status(unsigned char child_state,
int saved_errno, char *hex_errno);
diff --git a/src/config/geoip b/src/config/geoip
index 082e163d9..acddeb4ab 100644
--- a/src/config/geoip
+++ b/src/config/geoip
@@ -1,4 +1,4 @@
-# Last updated based on September 1 2010 Maxmind GeoLite Country
+# Last updated based on November 1 2010 Maxmind GeoLite Country
# wget http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
# cut -d, -f3-5 < GeoIPCountryWhois.csv|sed 's/"//g' > geoip
16777216,17301503,AU
@@ -35,13 +35,22 @@
28573696,28966911,CN
28966912,29032447,IN
29097984,29884415,CN
+29884416,29885439,AU
29949952,30015487,KR
30015488,30408703,CN
30408704,33554431,KR
33554432,34603007,FR
+34603008,35127295,EU
+35127296,35651583,GB
35651584,36700159,IT
36700160,36962303,AE
36962304,37224447,IL
+37224448,37289983,UA
+37289984,37298175,RU
+37298176,37355519,UA
+37355520,37421055,RU
+37421056,37486591,UA
+37486592,37748735,RU
37748736,38273023,SE
38273024,38797311,KZ
38797312,39059455,PT
@@ -52,6 +61,10 @@
40370176,40894463,DK
40894464,41418751,IT
41418752,41943039,GB
+42991616,43253759,IR
+43253760,43515903,NO
+44040192,45088767,DE
+45088768,46137343,IR
50331648,68257567,US
68257568,68257599,CA
68257600,68259583,US
@@ -256,9 +269,7 @@
209831680,209831711,DE
209831712,209845143,US
209845144,209845151,DE
-209845152,209854735,US
-209854736,209854743,SE
-209854744,209867103,US
+209845152,209867103,US
209867104,209867111,CA
209867112,209868799,US
209868800,209869055,IR
@@ -268,7 +279,9 @@
209988528,209988535,VI
209988536,210022479,US
210022480,210022487,PR
-210022488,210784255,US
+210022488,210439559,US
+210439560,210439567,PR
+210439568,210784255,US
210784256,210784383,BO
210784384,210784767,US
210784768,210786303,BO
@@ -286,9 +299,7 @@
211363752,211363759,PR
211363760,211368655,US
211368656,211368663,PR
-211368664,211403527,US
-211403528,211403535,MS
-211403536,211410031,US
+211368664,211410031,US
211410032,211410039,PR
211410040,211410119,US
211410120,211410135,PR
@@ -546,8 +557,8 @@
214858656,214858671,NL
214858672,216417663,US
216417664,216417727,PR
-216417728,216627279,US
-216627280,216627295,PR
+216417728,216627287,US
+216627288,216627295,PR
216627296,216637639,US
216637640,216637647,PR
216637648,216820479,US
@@ -566,20 +577,72 @@
217046776,217046783,PR
217046784,234881023,US
234882304,234882559,AP
+234883072,234884095,JP
+234885120,234889215,VN
+234889216,234913791,KR
+234913792,234946559,HK
+234946560,234950655,JP
+234950656,234951679,AU
+234951680,234952703,HK
+234952704,234954751,JP
+234954752,234971135,NZ
+234971136,234979327,IN
+234979328,235012095,MY
235012096,235077631,AU
235143168,235405311,KR
235405312,235929599,JP
+235929600,236978175,CN
236978176,241172479,KR
241172480,241434623,IN
241434624,241500159,SG
241500160,241565695,JP
-241631232,242221055,CN
+241565696,241598463,IN
+241599488,241600511,JP
+241600512,241602559,AU
+241602560,241604607,MY
+241604608,241605631,ID
+241605632,241606655,CN
+241606656,241614847,IN
+241614848,241623039,JP
+241623040,241627135,IN
+241627136,241631231,HK
+241631232,243269631,CN
243269632,243269887,AP
-243335168,243400703,KR
+243270656,243271679,NZ
+243271680,243272703,TH
+243272704,243273727,NP
+243273728,243277823,JP
+243277824,243286015,AU
+243286016,243302399,JP
+243302400,243400703,KR
243400704,243531775,CN
+243531776,243662847,JP
+243662848,243793919,CN
+243793920,243859455,HK
+243859456,243924991,AU
+243924992,243990527,KR
+243990528,244318207,IN
+244318208,245366783,CN
245366784,247463935,VN
+247463936,247472127,PH
+247472128,247479295,JP
+247479296,247480319,CN
+247480320,247482367,MY
+247482368,247483391,PG
+247484416,247488511,KR
+247488512,247496703,JP
+247496704,247504895,PK
+247504896,247513087,AU
+247513088,247529471,MY
247529472,247595007,JP
247595008,247726079,IN
+247726080,247857151,CN
+247857152,247988223,HK
+247988224,248250367,AU
+248250368,248381439,CN
+248381440,248446975,KR
+248446976,248512511,TH
+248512512,249561087,CN
249561088,251658239,VN
251658240,289011535,US
289011536,289011543,IT
@@ -611,8 +674,7 @@
405979136,405995519,PR
406003712,406011903,US
406011904,406028287,BS
-406044672,406052863,US
-406061056,406126591,US
+406028288,406126591,US
406142976,406147071,US
406147072,406151167,CA
406159360,406175743,US
@@ -729,7 +791,9 @@
418693120,418709503,CA
418709504,418766847,US
418766848,418770943,CA
-418775040,419430399,US
+418770944,418775039,US
+418775040,418807807,CA
+418807808,419430399,US
419430400,436207615,GB
436207616,452984831,US
452984832,452985855,JP
@@ -820,7 +884,6 @@
460155904,460156927,AU
460156928,460158975,KH
460158976,460159999,JP
-460160000,460161023,ID
460161024,460193791,MO
460193792,460210175,JP
460210176,460214271,HK
@@ -834,7 +897,6 @@
460263424,460267519,NP
460267520,460275711,ID
460275712,460277759,AU
-460277760,460278783,PG
460278784,460279807,JP
460279808,460283903,AU
460283904,460292095,KR
@@ -870,14 +932,67 @@
460596224,460597247,AU
460597248,460598271,JP
460598272,460599295,CN
-460599296,460600319,IN
+460599296,460601343,IN
460601344,460602367,AF
460602368,460603391,KH
460603392,460718079,KR
460718080,460722175,JP
460722176,460726271,VN
460726272,460734463,IN
-460734464,460849151,KR
+460734464,460865535,KR
+460865536,460931071,JP
+460931072,460933119,AU
+460935168,460937215,ID
+460937216,460938239,AU
+460939264,460940287,NZ
+460941312,460942335,AU
+460943360,460945407,AU
+460947456,460980223,JP
+460980224,460981247,NC
+460982272,460983295,JP
+460983296,460984319,HK
+460984320,460988415,PG
+460988416,460994559,JP
+460994560,460995583,MY
+460995584,460996607,SG
+460996608,461008895,JP
+461008896,461012991,AU
+461012992,461045759,KR
+461045760,461047807,ID
+461047808,461049855,JP
+461049856,461050879,TH
+461050880,461051903,NZ
+461051904,461053951,AU
+461053952,461062143,AP
+461062144,461078527,IN
+461078528,461094911,FJ
+461094912,461099007,AP
+461099008,461100031,JP
+461100032,461101055,MN
+461101056,461102079,IN
+461102080,461103103,ID
+461103104,461111295,PH
+461111296,461127679,IN
+461127680,461131775,PH
+461131776,461135871,ID
+461135872,461139967,AU
+461144064,461209599,KR
+461209600,461225983,SG
+461225984,461227007,WF
+461227008,461228031,SG
+461228032,461229055,IN
+461229056,461230079,JP
+461230080,461234175,AU
+461234176,461242367,MY
+461242368,461258751,KR
+461258752,461279231,JP
+461279232,461281279,AU
+461281280,461282303,PH
+461282304,461283327,MY
+461283328,461287423,JP
+461287424,461307903,HK
+461307904,461357055,JP
+461357056,461373439,AU
461373440,461504511,CN
461504512,461570047,TH
461570048,461572095,ID
@@ -931,7 +1046,12 @@
539625392,539625407,GB
539625408,539626495,US
539626496,539626543,GB
-539626544,539627391,US
+539626544,539627127,US
+539627128,539627135,SE
+539627136,539627231,US
+539627232,539627247,JP
+539627248,539627263,AN
+539627264,539627391,US
539627392,539627399,JP
539627400,539627407,IE
539627408,539627423,JP
@@ -1101,6 +1221,11 @@
692756480,692760575,RW
692760576,692768767,ZA
692768768,692772863,MG
+692772864,692776959,ZA
+692776960,692781055,AO
+692781056,692785151,BW
+692785152,692789247,NG
+692789248,692793343,KE
692830208,692834303,NG
692834304,692838399,TZ
692838400,692842495,ZA
@@ -1115,6 +1240,7 @@
692860928,692862975,ZA
692862976,692869119,NG
692869120,692871167,TZ
+692871168,692873215,ZA
692875264,692877311,ZA
692877312,692879359,GA
692879360,692881407,ZA
@@ -1126,7 +1252,7 @@
692891648,692893695,ZA
692893696,692895743,KE
692895744,692897791,NG
-692897792,692903935,ZA
+692897792,692905983,ZA
692969472,692971519,TZ
692973568,692975615,MZ
692975616,692977663,EG
@@ -1166,6 +1292,12 @@
693016576,693017599,GA
693017600,693018623,NG
693018624,693019647,UG
+693019648,693020671,ZA
+693020672,693021695,TZ
+693021696,693022719,NG
+693022720,693023743,KE
+693023744,693026815,ZA
+693026816,693027839,MU
693101568,693102591,KE
693102592,693103615,CD
693103616,693104639,GN
@@ -1175,6 +1307,8 @@
693107712,693239807,KE
693239808,693370879,SN
693370880,693403647,ZA
+693403648,693411839,KE
+693411840,693420031,NG
693501952,693510143,LR
693510144,693518335,SC
693518336,693534719,ZA
@@ -1186,7 +1320,9 @@
693575680,693583871,KE
693583872,693592063,NG
693592064,693600255,MU
-693624832,693633023,ZA
+693600256,693608447,MA
+693608448,693616639,BW
+693616640,693633023,ZA
693633024,693698559,EG
693698560,693829631,KE
693829632,693895167,EG
@@ -1545,6 +1681,7 @@
702525440,702526463,DZ
702526464,702527487,TZ
702527488,702528511,CF
+702528512,702529535,CG
702529536,702530559,NG
702530560,702531583,EG
702531584,702532607,SD
@@ -1571,10 +1708,130 @@
771751936,771817471,RU
771817472,771948543,TR
771948544,772014079,RU
-772014080,772079615,DE
-773062656,773066751,TR
+772014080,772145151,DE
+772145152,772210687,ES
+772210688,772276223,IE
+772276224,772341759,RU
+772341760,772407295,NO
+772407296,772472831,BG
+772472832,772538367,MT
+772538368,772603903,GR
+772603904,772669439,CZ
+772669440,772734975,CH
+772734976,772800511,NO
+772800512,772802559,GB
+772802560,772804607,RU
+772804608,772806655,BZ
+772806656,772808703,RU
+772808704,772810751,GB
+772810752,772812799,FR
+772812800,772814847,NO
+772814848,772816895,ES
+772816896,772818943,RU
+772818944,772820991,DE
+772820992,772823039,GB
+772823040,772825087,IT
+772825088,772827135,RU
+772827136,772829183,RS
+772829184,772831231,EE
+772831232,772833279,CZ
+772833280,772835327,RU
+772835328,772837375,CY
+772837376,772839423,KZ
+772839424,772841471,CH
+772841472,772843519,GB
+772843520,772845567,IT
+772845568,772847615,RU
+772847616,772849663,GB
+772849664,772851711,BG
+772851712,772853759,CH
+772853760,772855807,GB
+772855808,772857855,DE
+772857856,772859903,RU
+772859904,772861951,SE
+772861952,772863999,UA
+772864000,772870143,NL
+772870144,772872191,NO
+772872192,772874239,NL
+772874240,772876287,IE
+772876288,772880383,RU
+772880384,772882431,GB
+772882432,772884479,FR
+772884480,772884543,GB
+772884544,772884735,LB
+772884736,772884799,GB
+772884800,772885503,LB
+772885504,772885567,GB
+772885568,772885759,LB
+772885760,772885823,GB
+772885824,772886527,LB
+772886528,772888575,FR
+772888576,772890623,GB
+772890624,772892671,RU
+772892672,772894719,DE
+772894720,772896767,PL
+772896768,772898815,RS
+772898816,772900863,TR
+772900864,772902911,ES
+772902912,772904959,RS
+772904960,772907007,IT
+772907008,772909055,GB
+772909056,772911103,LU
+772911104,772913151,GB
+772913152,772915199,SE
+772915200,772917247,FI
+772917248,772919295,RU
+772919296,772923391,GB
+772923392,772925439,AT
+772925440,772927487,GB
+772927488,772929535,UA
+772929536,772931583,RU
+772931584,772933631,UA
+772933632,772935679,GB
+772935680,772937727,PS
+772937728,772939775,IT
+772939776,772941823,BE
+772941824,772943871,ES
+772943872,772945919,GB
+772945920,772947967,DE
+772947968,772950015,AZ
+772950016,772952063,ES
+772952064,772954111,GB
+772954112,772958207,FR
+772958208,772960255,PL
+772960256,772962303,GB
+772962304,772966399,FR
+773001216,773003263,NO
+773062656,773062911,TR
+773062912,773063167,US
+773063168,773063424,TR
+773063425,773063436,US
+773063437,773063935,TR
+773063936,773065215,US
+773065216,773066751,TR
773066752,773070847,AT
773070848,773074943,DE
+773074944,773079039,PL
+773079040,773083135,RU
+773083136,773087231,IT
+773087232,773091327,LB
+773091328,773095423,GB
+773095424,773099519,RO
+773099520,773103615,TR
+773103616,773107711,FR
+773107712,773111807,RU
+773111808,773115903,TJ
+773115904,773119999,PS
+773120000,773124095,GB
+773124096,773128191,CH
+773128192,773132287,DE
+773132288,773134335,IT
+773134336,773134847,CH
+773134848,773135359,IT
+773135360,773135871,CH
+773135872,773136383,IT
+773136384,773140479,DK
+773140480,773144575,CY
773324800,773586943,ES
773586944,773588991,IT
773588992,773591039,PL
@@ -1624,7 +1881,12 @@
773675008,773677055,GB
773677056,773679103,DE
773679104,773679135,IT
-773679136,773681151,A2
+773679136,773679327,A2
+773679328,773679359,IT
+773679360,773679423,GB
+773679424,773679615,A2
+773679616,773680191,IT
+773680192,773681151,A2
773681152,773683199,RU
773683200,773685247,FR
773685248,773687295,UA
@@ -1641,9 +1903,8 @@
773709824,773711871,CZ
773711872,773713919,RU
773713920,773715967,NL
-773715968,773716223,EE
-773716224,773716479,SE
-773716480,773716991,EE
+773715968,773716479,EE
+773716480,773716991,SE
773716992,773718015,US
773718016,773720063,DE
773720064,773722111,GB
@@ -1660,6 +1921,51 @@
773746688,773748735,DE
773748736,773750783,DK
773750784,773752831,FI
+773752832,773754879,GB
+773754880,773756927,CZ
+773756928,773758975,RU
+773758976,773761023,UA
+773761024,773763071,IT
+773763072,773765119,TR
+773765120,773767167,NL
+773767168,773769215,GB
+773769216,773771263,SE
+773771264,773773311,DK
+773773312,773775359,IT
+773775360,773777407,IQ
+773777408,773779455,CZ
+773779456,773781503,ME
+773781504,773783551,IT
+773783552,773785599,RU
+773785600,773787647,NL
+773787648,773789695,DK
+773789696,773791743,RU
+773791744,773793791,PL
+773793792,773795839,FR
+773795840,773797887,NL
+773797888,773799935,ES
+773799936,773801983,CY
+773801984,773804031,IQ
+773804032,773806079,GB
+773806080,773808127,BE
+773808128,773810175,IL
+773810176,773812223,IT
+773812224,773814271,TR
+773814272,773816319,DE
+773816320,773818367,IT
+773818368,773820415,HR
+773820416,773822463,TR
+773822464,773824511,RU
+773824512,773826559,FR
+773826560,773828607,NL
+773828608,773830655,HU
+773830656,773832703,NO
+773832704,773834751,FR
+773834752,773836799,GB
+773836800,773838847,FR
+773838848,773840895,DE
+773840896,773847039,GB
+773847040,773849087,IT
773849088,773857279,IR
773857280,773865471,DK
773865472,773873663,RU
@@ -1669,6 +1975,39 @@
773898240,773906431,PS
773906432,773922815,GB
773922816,773931007,UA
+773931008,773939199,FR
+773939200,773947391,CZ
+773947392,773955583,GB
+773955584,773963775,FR
+773963776,773971967,ME
+773971968,773980159,UA
+773980160,773988351,GB
+773988352,774003199,ES
+774003200,774003263,TR
+774003264,774003711,ES
+774003712,774004223,BE
+774004224,774004479,ES
+774004480,774004511,BE
+774004512,774004735,ES
+774004736,774012927,IR
+774012928,774021119,RU
+774021120,774029311,IR
+774029312,774037503,RO
+774037504,774045695,SK
+774045696,774053887,FR
+774053888,774062079,DE
+774062080,774070271,YE
+774070272,774078463,ES
+774078464,774086655,BA
+774086656,774094847,BG
+774094848,774103039,HU
+774103040,774111231,UA
+774111232,774119423,RU
+774119424,774127615,CZ
+774127616,774135807,LT
+774135808,774143999,IR
+774144000,774152191,KZ
+774152192,774160383,BA
774373376,774389759,RS
774389760,774406143,BG
774406144,774422527,IT
@@ -1687,7 +2026,18 @@
774619136,774651903,RU
774651904,774668287,SA
774668288,774684671,NL
-774897664,774963199,RU
+774684672,774701055,IT
+774701056,774717439,RU
+774717440,774733823,PL
+774733824,774750207,TR
+774750208,774782975,RU
+774782976,774799359,UA
+774799360,774815743,RU
+774815744,774832127,SE
+774832128,774848511,RU
+774848512,774864895,BG
+774864896,774881279,CZ
+774881280,774963199,RU
774963200,774995967,GE
774995968,775028735,RO
775028736,775061503,PT
@@ -1699,6 +2049,19 @@
775225344,775258111,SY
775258112,775290879,BY
775290880,775323647,MT
+775323648,775356415,SI
+775356416,775389183,MD
+775389184,775421951,BG
+775421952,775487487,BY
+775487488,775520255,AT
+775520256,775553023,SY
+775553024,775585791,EU
+775585792,775618559,SY
+775618560,775651327,SE
+775651328,775684095,DE
+775684096,775716863,PS
+775716864,775749631,GB
+775749632,775847935,RU
775946240,776077311,GB
776077312,776208383,NO
776208384,776339455,GB
@@ -1706,7 +2069,7 @@
776470528,776601599,RU
776601600,776732671,AT
776732672,776863743,PL
-776994816,778043391,DE
+776863744,778043391,DE
778043392,778108927,RU
778108928,778174463,RO
778174464,778239999,UA
@@ -1731,15 +2094,66 @@
779747328,779878399,SI
779878400,780009471,AT
780009472,780140543,CH
+780140544,780206079,DE
+780206080,780271615,NL
+780271616,780337151,AM
+780337152,780402687,EE
+780402688,780468223,FI
+780468224,780533759,UA
+781189120,781320191,NL
+781320192,781451263,RU
+781582336,781590527,UA
+781713408,781844479,SA
+781844480,781975551,TR
+782237696,782254079,RU
788529152,805306367,CA
805306368,822083583,US
+822083584,822083839,AP
+822083840,822084095,AU
+822084608,822085631,ID
+822085632,822087679,AU
+822091776,822099967,BD
+822099968,822116351,TH
+822149120,822214655,KR
+822214656,822345727,AU
+822345728,822607871,CN
+822607872,822870015,KR
+822870016,823132159,IN
+823132160,824180735,KR
+824180736,825229311,IN
+825229312,825360383,TH
+825360384,825361407,AP
+825361408,825363455,ID
+825363456,825364479,MY
+825376768,825393151,IN
+825425920,825491455,AU
+825491456,825753599,CN
+825753600,826277887,KR
+829423616,830210047,CN
+830210048,830341119,MY
+830341120,830406655,NP
+830406656,830474239,AU
+830474240,830475263,SG
+830537728,830603263,JP
+830603264,830734335,HK
+830734336,830996479,JP
+830996480,831258623,IN
+831258624,831389695,CN
+837812224,838074367,JP
+838336512,838467583,IN
+838467584,838729727,JP
+838729728,838795263,KR
+838795264,838860799,AP
838860800,838926335,US
838991872,838999039,US
838999040,838999295,CA
838999296,839010559,US
839010560,839010815,CA
-839010816,839188479,US
-839385088,839909375,US
+839010816,839022079,US
+839022080,839023103,CA
+839023104,843055103,US
+843055104,844103679,CA
+847249408,855638015,US
855638016,872415231,GB
872415232,889192447,US
889192448,905969663,DE
@@ -2155,7 +2569,8 @@
1026408448,1026416639,JP
1026416640,1026420735,ID
1026420736,1026422783,JP
-1026422784,1026424831,AP
+1026422784,1026423295,AU
+1026423296,1026424831,AP
1026424832,1026490367,JP
1026490368,1026523135,TH
1026523136,1026539519,CN
@@ -2249,8 +2664,8 @@
1040469056,1040469071,FR
1040469072,1040469087,EU
1040469088,1040469183,FR
-1040469184,1040469215,EU
-1040469216,1040469279,FR
+1040469184,1040469247,EU
+1040469248,1040469279,FR
1040469280,1040469311,EU
1040469312,1040469343,FR
1040469344,1040469375,EU
@@ -2291,16 +2706,18 @@
1040982016,1040982279,A2
1040982280,1040982287,NG
1040982288,1040982583,A2
-1040982584,1040982607,DK
+1040982584,1040982591,DK
+1040982592,1040982599,A2
+1040982600,1040982607,DK
1040982608,1040982631,A2
1040982632,1040982639,DE
-1040982640,1040983807,A2
+1040982640,1040982943,A2
+1040982944,1040982951,DK
+1040982952,1040983807,A2
1040983808,1040983815,NG
1040983816,1040984143,A2
1040984144,1040984151,NG
-1040984152,1040984175,A2
-1040984176,1040984183,NG
-1040984184,1040990207,A2
+1040984152,1040990207,A2
1040990208,1040994303,CY
1040994304,1040994815,RU
1040994816,1040998399,CY
@@ -2345,13 +2762,9 @@
1041696872,1041696879,GB
1041696880,1041697699,FR
1041697700,1041697703,GB
-1041697704,1041697919,FR
-1041697920,1041697983,GB
-1041697984,1041698047,FR
+1041697704,1041698047,FR
1041698048,1041698077,GB
-1041698078,1041698135,FR
-1041698136,1041698143,GB
-1041698144,1041698207,FR
+1041698078,1041698207,FR
1041698208,1041698223,GB
1041698224,1041698247,FR
1041698248,1041698255,GB
@@ -2385,23 +2798,23 @@
1041701312,1041701551,GB
1041701552,1041701567,FR
1041701568,1041701631,GB
-1041701632,1041702303,FR
-1041702304,1041702311,GB
+1041701632,1041701647,FR
+1041701648,1041701663,GB
+1041701664,1041702167,FR
+1041702168,1041702175,GB
+1041702176,1041702306,FR
+1041702307,1041702311,GB
1041702312,1041702327,FR
1041702328,1041702335,GB
1041702336,1041702351,FR
1041702352,1041702399,GB
-1041702400,1041702855,FR
-1041702856,1041702863,GB
-1041702864,1041703575,FR
+1041702400,1041703575,FR
1041703576,1041703583,GB
1041703584,1041704119,FR
1041704120,1041704127,GB
1041704128,1041704159,FR
1041704160,1041704175,GB
-1041704176,1041704319,FR
-1041704320,1041704383,GB
-1041704384,1041704407,FR
+1041704176,1041704407,FR
1041704408,1041704431,GB
1041704432,1041704439,FR
1041704440,1041704455,GB
@@ -2491,7 +2904,9 @@
1041707632,1041707639,GB
1041707640,1041707679,FR
1041707680,1041707687,GB
-1041707688,1041707895,FR
+1041707688,1041707807,FR
+1041707808,1041707815,GB
+1041707816,1041707895,FR
1041707896,1041707903,GB
1041707904,1041707999,FR
1041708000,1041708007,GB
@@ -2575,8 +2990,8 @@
1041711584,1041711599,GB
1041711600,1041711943,FR
1041711944,1041711951,GB
-1041711952,1041712399,FR
-1041712400,1041712415,GB
+1041711952,1041712407,FR
+1041712408,1041712415,GB
1041712416,1041712423,FR
1041712424,1041712431,GB
1041712432,1041713095,FR
@@ -2593,9 +3008,7 @@
1041714072,1041714079,GB
1041714080,1041714095,FR
1041714096,1041714103,GB
-1041714104,1041714111,FR
-1041714112,1041714175,GB
-1041714176,1041714523,FR
+1041714104,1041714523,FR
1041714524,1041714527,GB
1041714528,1041714775,FR
1041714776,1041714783,GB
@@ -2638,10 +3051,10 @@
1041715952,1041715999,FR
1041716000,1041716015,GB
1041716016,1041716047,FR
-1041716048,1041716063,GB
-1041716064,1041716111,FR
-1041716112,1041716223,GB
-1041716224,1041716311,FR
+1041716048,1041716095,GB
+1041716096,1041716111,FR
+1041716112,1041716239,GB
+1041716240,1041716311,FR
1041716312,1041716319,GB
1041716320,1041716439,FR
1041716440,1041716447,GB
@@ -2663,7 +3076,9 @@
1041717168,1041717183,GB
1041717184,1041717199,FR
1041717200,1041717247,GB
-1041717248,1041717687,FR
+1041717248,1041717503,FR
+1041717504,1041717511,IT
+1041717512,1041717687,FR
1041717688,1041717695,GB
1041717696,1041718112,FR
1041718113,1041718119,GB
@@ -2707,7 +3122,9 @@
1041719229,1041719231,GB
1041719232,1041719247,FR
1041719248,1041719263,GB
-1041719264,1041719683,FR
+1041719264,1041719383,FR
+1041719384,1041719391,GB
+1041719392,1041719683,FR
1041719684,1041719687,GB
1041719688,1041719703,FR
1041719704,1041719711,GB
@@ -2752,10 +3169,10 @@
1041722504,1041722535,FR
1041722536,1041722551,GB
1041722552,1041722567,FR
-1041722568,1041722575,GB
-1041722576,1041722583,FR
-1041722584,1041722623,GB
-1041722624,1041722983,FR
+1041722568,1041722623,GB
+1041722624,1041722703,FR
+1041722704,1041722711,GB
+1041722712,1041722983,FR
1041722984,1041723007,GB
1041723008,1041723047,FR
1041723048,1041723135,GB
@@ -2771,28 +3188,32 @@
1041724456,1041724463,GB
1041724464,1041724471,FR
1041724472,1041724479,GB
-1041724480,1041724671,FR
+1041724480,1041724535,FR
+1041724536,1041724543,GB
+1041724544,1041724671,FR
1041724672,1041724927,GB
1041724928,1041725119,FR
1041725120,1041725167,GB
1041725168,1041725175,FR
-1041725176,1041725231,GB
+1041725176,1041725183,GB
+1041725184,1041725191,FR
+1041725192,1041725231,GB
1041725232,1041725255,FR
-1041725256,1041725271,GB
-1041725272,1041725375,FR
+1041725256,1041725279,GB
+1041725280,1041725375,FR
1041725376,1041725407,GB
1041725408,1041725749,FR
1041725750,1041725751,GB
-1041725752,1041725815,FR
-1041725816,1041725823,GB
-1041725824,1041726063,FR
+1041725752,1041725863,FR
+1041725864,1041725871,GB
+1041725872,1041726063,FR
1041726064,1041726079,GB
1041726080,1041726127,FR
1041726128,1041726151,GB
1041726152,1041726159,FR
1041726160,1041726167,GB
-1041726168,1041726511,FR
-1041726512,1041726543,GB
+1041726168,1041726503,FR
+1041726504,1041726543,GB
1041726544,1041726639,FR
1041726640,1041726655,GB
1041726656,1041726671,FR
@@ -2858,8 +3279,10 @@
1041729568,1041729615,FR
1041729616,1041729623,GB
1041729624,1041729663,FR
-1041729664,1041729791,GB
-1041729792,1041730239,FR
+1041729664,1041729935,GB
+1041729936,1041729951,FR
+1041729952,1041730047,GB
+1041730048,1041730239,FR
1041730240,1041730247,GB
1041730248,1041730639,FR
1041730640,1041730655,GB
@@ -2877,9 +3300,7 @@
1041732256,1041732295,GB
1041732296,1041732303,FR
1041732304,1041732311,GB
-1041732312,1041732447,FR
-1041732448,1041732455,GB
-1041732456,1041732463,FR
+1041732312,1041732463,FR
1041732464,1041732479,GB
1041732480,1041732863,FR
1041732864,1041732871,GB
@@ -2889,8 +3310,8 @@
1041732960,1041732967,GB
1041732968,1041732991,FR
1041732992,1041733103,GB
-1041733104,1041733503,FR
-1041733504,1041733535,GB
+1041733104,1041733519,FR
+1041733520,1041733535,GB
1041733536,1041733567,FR
1041733568,1041733631,GB
1041733632,1041734927,FR
@@ -2945,8 +3366,8 @@
1041737400,1041737423,GB
1041737424,1041737455,FR
1041737456,1041737463,GB
-1041737464,1041737479,FR
-1041737480,1041737503,GB
+1041737464,1041737487,FR
+1041737488,1041737503,GB
1041737504,1041737583,FR
1041737584,1041737599,GB
1041737600,1041737607,FR
@@ -3040,7 +3461,7 @@
1041741608,1041741615,GB
1041741616,1041741631,FR
1041741632,1041741647,GB
-1041741648,1041741663,FR
+1041741648,1041741663,DE
1041741664,1041741679,GB
1041741680,1041741687,FR
1041741688,1041741823,GB
@@ -3096,7 +3517,9 @@
1041744360,1041744367,GB
1041744368,1041744399,FR
1041744400,1041744407,GB
-1041744408,1041744479,FR
+1041744408,1041744415,FR
+1041744416,1041744447,GB
+1041744448,1041744479,FR
1041744480,1041744543,GB
1041744544,1041744599,FR
1041744600,1041744607,GB
@@ -3188,7 +3611,9 @@
1041750776,1041750783,GB
1041750784,1041751695,FR
1041751696,1041751719,GB
-1041751720,1041753319,FR
+1041751720,1041751775,FR
+1041751776,1041751807,GB
+1041751808,1041753319,FR
1041753320,1041753327,GB
1041753328,1041753407,FR
1041753408,1041753503,GB
@@ -3242,7 +3667,9 @@
1041757504,1041757519,GB
1041757520,1041757583,FR
1041757584,1041757591,GB
-1041757592,1041757631,FR
+1041757592,1041757607,FR
+1041757608,1041757615,GB
+1041757616,1041757631,FR
1041757632,1041757647,GB
1041757648,1041757663,FR
1041757664,1041757671,GB
@@ -3297,9 +3724,12 @@
1042288416,1042292735,CH
1042292736,1042293247,NL
1042293248,1042293503,GB
-1042293504,1042293535,NL
+1042293504,1042293535,IT
1042293536,1042293631,IR
-1042293632,1042296063,GE
+1042293632,1042293759,GE
+1042293760,1042293985,IT
+1042293986,1042294783,NL
+1042294784,1042296063,GE
1042296064,1042296191,CY
1042296192,1042296575,GE
1042296576,1042296831,BY
@@ -3398,11 +3828,15 @@
1042892960,1042892967,DE
1042892968,1042892975,PL
1042892976,1042892983,CH
-1042892984,1042893055,NL
+1042892984,1042892991,NL
+1042892992,1042893007,FR
+1042893008,1042893055,NL
1042893056,1042893087,GB
1042893088,1042893135,NL
1042893136,1042893143,DE
-1042893144,1042893183,NL
+1042893144,1042893151,NL
+1042893152,1042893167,PL
+1042893168,1042893183,NL
1042893184,1042893311,GB
1042893312,1042894079,NL
1042894080,1042894143,DE
@@ -3430,7 +3864,11 @@
1043202048,1043333119,AT
1043333120,1043341311,CH
1043341312,1043349503,IT
-1043349504,1043357695,DE
+1043349504,1043350851,DE
+1043350852,1043350855,CH
+1043350856,1043356023,DE
+1043356024,1043356031,CH
+1043356032,1043357695,DE
1043357696,1043365887,CH
1043365888,1043398655,PT
1043398656,1043464191,GB
@@ -3879,9 +4317,7 @@
1044020168,1044020187,BE
1044020188,1044020199,NL
1044020200,1044020203,BE
-1044020204,1044020207,NL
-1044020208,1044020211,BE
-1044020212,1044020219,NL
+1044020204,1044020219,NL
1044020220,1044020255,BE
1044020256,1044020263,NL
1044020264,1044020303,BE
@@ -4053,7 +4489,9 @@
1044588800,1044590463,DE
1044590464,1044590591,GB
1044590592,1044590671,DE
-1044590672,1044590847,GB
+1044590672,1044590719,GB
+1044590720,1044590783,DE
+1044590784,1044590847,GB
1044590848,1044591615,DE
1044591616,1044591871,GB
1044591872,1044592127,DE
@@ -4109,9 +4547,15 @@
1044668416,1044676607,BA
1044676608,1044684799,RU
1044684800,1044692991,HU
-1044692992,1044697087,AT
+1044692992,1044695935,AT
+1044695936,1044696062,DE
+1044696063,1044697087,AT
1044697088,1044697343,DE
-1044697344,1044701183,AT
+1044697344,1044697855,AT
+1044697856,1044698110,DE
+1044698111,1044698111,AT
+1044698112,1044698367,DE
+1044698368,1044701183,AT
1044701184,1044709375,EG
1044709376,1044717567,RU
1044717568,1044742143,GB
@@ -4129,9 +4573,7 @@
1044774912,1044800383,NO
1044800384,1044800511,IT
1044800512,1044840447,NO
-1044840448,1044842751,FI
-1044842752,1044842815,AX
-1044842816,1044905983,FI
+1044840448,1044905983,FI
1044905984,1044908031,GB
1044908032,1044909055,US
1044909056,1044910847,GB
@@ -4201,12 +4643,14 @@
1044931904,1044931911,GB
1044931912,1044931915,BE
1044931916,1044931919,GB
-1044931920,1044931935,BE
+1044931920,1044931923,BE
+1044931924,1044931927,GB
+1044931928,1044931935,BE
1044931936,1044931951,GB
1044931952,1044931975,BE
1044931976,1044931983,GB
-1044931984,1044932063,BE
-1044932064,1044932087,GB
+1044931984,1044932047,BE
+1044932048,1044932087,GB
1044932088,1044932383,BE
1044932384,1044932391,GB
1044932392,1044932399,BE
@@ -4237,7 +4681,9 @@
1044933024,1044933039,GB
1044933040,1044933055,BE
1044933056,1044933071,GB
-1044933072,1044933215,BE
+1044933072,1044933103,BE
+1044933104,1044933107,GB
+1044933108,1044933215,BE
1044933216,1044933227,GB
1044933228,1044933303,BE
1044933304,1044933311,GB
@@ -4267,13 +4713,15 @@
1044933844,1044933847,GB
1044933848,1044933863,BE
1044933864,1044933871,GB
-1044933872,1044934103,BE
-1044934104,1044934111,GB
-1044934112,1044934191,BE
+1044933872,1044933919,BE
+1044933920,1044933935,GB
+1044933936,1044934191,BE
1044934192,1044934199,GB
1044934200,1044934239,BE
1044934240,1044934247,GB
-1044934248,1044934359,BE
+1044934248,1044934287,BE
+1044934288,1044934295,GB
+1044934296,1044934359,BE
1044934360,1044934503,GB
1044934504,1044934575,BE
1044934576,1044934583,GB
@@ -4333,7 +4781,9 @@
1044936440,1044936447,GB
1044936448,1044936455,BE
1044936456,1044936463,GB
-1044936464,1044936495,BE
+1044936464,1044936479,BE
+1044936480,1044936487,GB
+1044936488,1044936495,BE
1044936496,1044936503,GB
1044936504,1044936711,BE
1044936712,1044936719,GB
@@ -4408,18 +4858,14 @@
1045013472,1045018207,GB
1045018208,1045018231,FI
1045018232,1045018367,GB
-1045018368,1045018423,ES
-1045018424,1045018431,GB
-1045018432,1045018559,ES
+1045018368,1045018559,ES
1045018560,1045018623,GB
1045018624,1045018751,ES
1045018752,1045020159,GB
1045020160,1045020255,ES
1045020256,1045020287,GB
-1045020288,1045020519,ES
-1045020520,1045020527,GB
-1045020528,1045020543,ES
-1045020544,1045020671,GB
+1045020288,1045020655,ES
+1045020656,1045020671,GB
1045020672,1045037055,NO
1045037056,1045119231,GR
1045119232,1045119743,AL
@@ -4430,7 +4876,9 @@
1045154560,1045154591,NL
1045154592,1045154623,DE
1045154624,1045154655,GB
-1045154656,1045154751,DE
+1045154656,1045154687,DE
+1045154688,1045154719,NL
+1045154720,1045154751,DE
1045154752,1045154783,SE
1045154784,1045155071,DE
1045155072,1045155327,CH
@@ -4588,9 +5036,7 @@
1045746096,1045746163,SE
1045746164,1045746175,GB
1045746176,1045746431,SE
-1045746432,1045746447,GB
-1045746448,1045746463,SE
-1045746464,1045746495,GB
+1045746432,1045746495,GB
1045746496,1045746527,SE
1045746528,1045746543,GB
1045746544,1045746559,SE
@@ -4651,16 +5097,21 @@
1046229120,1046282239,NO
1046282240,1046283007,DE
1046283008,1046283263,BZ
-1046283264,1046283327,LU
-1046283328,1046284287,DE
-1046284288,1046285311,BZ
+1046283264,1046284287,DE
+1046284288,1046285055,BZ
+1046285056,1046285119,HR
+1046285120,1046285183,MT
+1046285184,1046285247,BZ
+1046285248,1046285311,BA
1046285312,1046286663,DE
1046286664,1046286671,BZ
1046286672,1046286927,DE
1046286928,1046286935,ES
1046286936,1046288383,DE
1046288384,1046288663,CZ
-1046288664,1046288895,DE
+1046288664,1046288767,DE
+1046288768,1046288775,AG
+1046288776,1046288895,DE
1046288896,1046290431,AG
1046290432,1046298623,PL
1046298624,1046299903,AT
@@ -4689,8 +5140,7 @@
1046316032,1046316543,FR
1046316544,1046317055,DK
1046317056,1046317567,ES
-1046317568,1046317823,GB
-1046317824,1046318335,NL
+1046317568,1046318335,NL
1046318336,1046318591,GB
1046318592,1046320127,NL
1046320128,1046320639,GB
@@ -4722,9 +5172,7 @@
1046339840,1046340095,FR
1046340096,1046340607,EU
1046340608,1046341119,NL
-1046341120,1046341631,EU
-1046341632,1046341887,FR
-1046341888,1046342143,EU
+1046341120,1046342143,EU
1046342144,1046342719,NL
1046342720,1046343423,EU
1046343424,1046343935,NL
@@ -4986,11 +5434,9 @@
1046528600,1046528603,DE
1046528604,1046528607,GB
1046528608,1046528639,DE
-1046528640,1046528671,GB
-1046528672,1046528767,DE
-1046528768,1046529279,GB
-1046529280,1046529535,DE
-1046529536,1046530047,GB
+1046528640,1046528703,GB
+1046528704,1046528767,DE
+1046528768,1046530047,GB
1046530048,1046530687,DE
1046530688,1046530815,GB
1046530816,1046530879,DE
@@ -5015,8 +5461,8 @@
1046535312,1046535359,GB
1046535360,1046535423,DE
1046535424,1046535487,GB
-1046535488,1046535615,DE
-1046535616,1046535619,GB
+1046535488,1046535551,DE
+1046535552,1046535619,GB
1046535620,1046535623,DE
1046535624,1046535631,GB
1046535632,1046535935,DE
@@ -5075,8 +5521,8 @@
1046543104,1046543263,GB
1046543264,1046543295,DE
1046543296,1046543327,GB
-1046543328,1046543351,DE
-1046543352,1046543359,GB
+1046543328,1046543343,DE
+1046543344,1046543359,GB
1046543360,1046543615,DE
1046543616,1046544127,GB
1046544128,1046544383,DE
@@ -5180,8 +5626,8 @@
1046896384,1046897663,GB
1046897664,1046898431,BE
1046898432,1046898687,EU
-1046898688,1046898943,BE
-1046898944,1046899167,EU
+1046898688,1046898975,BE
+1046898976,1046899167,EU
1046899168,1046904831,BE
1046904832,1046937599,RU
1046937600,1047003135,GR
@@ -5223,7 +5669,9 @@
1047340800,1047341055,NO
1047341056,1047343871,SE
1047343872,1047344127,NO
-1047344128,1047347199,SE
+1047344128,1047346431,SE
+1047346432,1047346687,FI
+1047346688,1047347199,SE
1047347200,1047363583,DE
1047363584,1047371775,CZ
1047371776,1047379967,RU
@@ -5248,8 +5696,8 @@
1047563304,1047563311,CH
1047563312,1047563319,DE
1047563320,1047563323,CH
-1047563324,1047563347,DE
-1047563348,1047563355,CH
+1047563324,1047563351,DE
+1047563352,1047563355,CH
1047563356,1047563363,DE
1047563364,1047563367,ES
1047563368,1047563403,DE
@@ -5265,9 +5713,9 @@
1047563452,1047563455,NL
1047563456,1047563467,DE
1047563468,1047563471,CH
-1047563472,1047563727,DE
-1047563728,1047563731,AU
-1047563732,1047566363,DE
+1047563472,1047565131,DE
+1047565132,1047565135,GB
+1047565136,1047566363,DE
1047566364,1047566367,CH
1047566368,1047566403,DE
1047566404,1047566415,CH
@@ -5281,7 +5729,9 @@
1047566492,1047566499,CH
1047566500,1047566507,DE
1047566508,1047566511,CH
-1047566512,1047566535,DE
+1047566512,1047566519,DE
+1047566520,1047566527,CH
+1047566528,1047566535,DE
1047566536,1047566539,CH
1047566540,1047566559,DE
1047566560,1047566563,CH
@@ -5323,9 +5773,7 @@
1047567316,1047567319,AT
1047567320,1047567359,DE
1047567360,1047567375,ES
-1047567376,1047567435,DE
-1047567436,1047567439,CH
-1047567440,1047567447,DE
+1047567376,1047567447,DE
1047567448,1047567451,CH
1047567452,1047567455,AT
1047567456,1047567459,CH
@@ -5353,7 +5801,9 @@
1047567756,1047567759,CH
1047567760,1047567799,DE
1047567800,1047567803,CH
-1047567804,1047567847,DE
+1047567804,1047567823,DE
+1047567824,1047567839,CH
+1047567840,1047567847,DE
1047567848,1047567851,CH
1047567852,1047567855,BE
1047567856,1047567871,DE
@@ -5364,8 +5814,8 @@
1047567936,1047567939,CH
1047567940,1047568047,DE
1047568048,1047568059,CH
-1047568060,1047568083,DE
-1047568084,1047568095,CH
+1047568060,1047568087,DE
+1047568088,1047568095,CH
1047568096,1047568159,DE
1047568160,1047568163,CH
1047568164,1047568187,DE
@@ -5392,7 +5842,8 @@
1047728128,1047732223,SE
1047732224,1047740415,EU
1047740416,1047740431,US
-1047740432,1047740543,EU
+1047740432,1047740447,DE
+1047740448,1047740543,EU
1047740544,1047740671,DE
1047740672,1047740927,A2
1047740928,1047781663,EU
@@ -5403,7 +5854,12 @@
1047782720,1047782751,SE
1047782752,1047782783,NO
1047782784,1047782815,FI
-1047782816,1047789567,EU
+1047782816,1047789375,EU
+1047789376,1047789383,GB
+1047789384,1047789407,EU
+1047789408,1047789423,DE
+1047789424,1047789535,EU
+1047789536,1047789567,DE
1047789568,1047806031,AT
1047806032,1047806047,IT
1047806048,1047822335,AT
@@ -5471,8 +5927,8 @@
1048604966,1048604967,UA
1048604968,1048604971,LT
1048604972,1048604975,UA
-1048604976,1048605063,LT
-1048605064,1048607231,UA
+1048604976,1048605079,LT
+1048605080,1048607231,UA
1048607232,1048607247,EE
1048607248,1048607487,UA
1048607488,1048607519,EE
@@ -5635,7 +6091,9 @@
1048856920,1048856927,DE
1048856928,1048856999,NL
1048857000,1048857007,DE
-1048857008,1048857767,NL
+1048857008,1048857207,NL
+1048857208,1048857215,DE
+1048857216,1048857767,NL
1048857768,1048857775,DE
1048857776,1048858111,NL
1048858112,1048858623,DE
@@ -6226,7 +6684,9 @@
1049020480,1049020543,GE
1049020544,1049026559,DE
1049026560,1049026815,EU
-1049026816,1049032143,DE
+1049026816,1049031871,DE
+1049031872,1049031903,EU
+1049031904,1049032143,DE
1049032144,1049032167,EU
1049032168,1049032171,DE
1049032172,1049032175,EU
@@ -6406,9 +6866,7 @@
1049778336,1049778351,AE
1049778352,1049778535,DE
1049778536,1049778543,AT
-1049778544,1049779063,DE
-1049779064,1049779071,PL
-1049779072,1049779135,DE
+1049778544,1049779135,DE
1049779136,1049779167,AE
1049779168,1049782303,DE
1049782304,1049782335,AE
@@ -6428,7 +6886,9 @@
1049787136,1049787391,PL
1049787392,1049790207,DE
1049790208,1049790463,LU
-1049790464,1049817151,DE
+1049790464,1049794559,DE
+1049794560,1049795583,CH
+1049795584,1049817151,DE
1049817152,1049817159,PL
1049817160,1049817287,DE
1049817288,1049817295,AE
@@ -6661,13 +7121,11 @@
1051578352,1051578363,GB
1051578364,1051578367,DE
1051578368,1051580415,SZ
-1051580416,1051584511,GB
-1051584512,1051585663,MG
-1051585664,1051585919,GB
-1051585920,1051586047,MG
-1051586048,1051586175,GB
-1051586176,1051586303,MG
-1051586304,1051590655,GB
+1051580416,1051584767,GB
+1051584768,1051585535,MG
+1051585536,1051585599,GB
+1051585600,1051585663,MG
+1051585664,1051590655,GB
1051590656,1051702527,ES
1051702528,1051702783,US
1051702784,1051721727,ES
@@ -6768,7 +7226,9 @@
1052003840,1052003967,EU
1052003968,1052003999,DE
1052004000,1052004671,EU
-1052004672,1052004759,DE
+1052004672,1052004687,DE
+1052004688,1052004703,EU
+1052004704,1052004759,DE
1052004760,1052004767,EU
1052004768,1052004783,DE
1052004784,1052004815,EU
@@ -7809,11 +8269,11 @@
1052507776,1052507903,EU
1052507904,1052596447,GB
1052596448,1052596463,IT
-1052596464,1052602495,GB
-1052602496,1052602623,ES
-1052602624,1052621951,GB
+1052596464,1052621951,GB
1052621952,1052622015,IE
-1052622016,1052634943,GB
+1052622016,1052631935,GB
+1052631936,1052631999,FR
+1052632000,1052634943,GB
1052634944,1052634951,IE
1052634952,1052644095,GB
1052644096,1052644351,SE
@@ -8093,8 +8553,8 @@
1053352192,1053353023,EU
1053353024,1053353031,IE
1053353032,1053353103,EU
-1053353104,1053353111,IE
-1053353112,1053353135,EU
+1053353104,1053353119,IE
+1053353120,1053353135,EU
1053353136,1053353215,IE
1053353216,1053353223,GB
1053353224,1053353255,IE
@@ -8428,33 +8888,33 @@
1055200424,1055201023,EU
1055201024,1055201279,US
1055201280,1055203327,EU
-1055203328,1055203359,CZ
-1055203360,1055203839,EU
+1055203328,1055203343,CZ
+1055203344,1055203839,EU
1055203840,1055204095,CZ
1055204096,1055204863,EU
-1055204864,1055205375,CZ
-1055205376,1055205631,EU
+1055204864,1055205119,CZ
+1055205120,1055205631,EU
1055205632,1055205887,CZ
1055205888,1055206655,EU
-1055206656,1055207423,CZ
+1055206656,1055206911,CZ
+1055206912,1055207167,EU
+1055207168,1055207423,CZ
1055207424,1055207679,EU
-1055207680,1055209471,CZ
-1055209472,1055209727,EU
+1055207680,1055209215,CZ
+1055209216,1055209727,EU
1055209728,1055210239,CZ
-1055210240,1055210495,EU
-1055210496,1055210751,SK
-1055210752,1055211263,EU
+1055210240,1055211263,EU
1055211264,1055211519,CZ
1055211520,1055212043,EU
-1055212044,1055212179,PT
+1055212044,1055212131,PT
+1055212132,1055212175,EU
+1055212176,1055212179,PT
1055212180,1055212183,EU
1055212184,1055212247,PT
1055212248,1055212351,EU
1055212352,1055212415,PT
-1055212416,1055212543,EU
-1055212544,1055212799,PT
-1055212800,1055213055,EU
-1055213056,1055213307,PT
+1055212416,1055213263,EU
+1055213264,1055213307,PT
1055213308,1055213311,EU
1055213312,1055213319,PT
1055213320,1055213327,EU
@@ -8463,8 +8923,8 @@
1055213368,1055213455,PT
1055213456,1055213471,EU
1055213472,1055213567,PT
-1055213568,1055213823,EU
-1055213824,1055214239,PT
+1055213568,1055214079,EU
+1055214080,1055214239,PT
1055214240,1055214271,EU
1055214272,1055214847,PT
1055214848,1055215359,EU
@@ -8486,15 +8946,15 @@
1055218448,1055218463,EU
1055218464,1055218471,PT
1055218472,1055218479,EU
-1055218480,1055219711,PT
-1055219712,1055220223,EU
+1055218480,1055218687,PT
+1055218688,1055220223,EU
1055220224,1055220287,NL
1055220288,1055220351,EU
1055220352,1055220399,NL
1055220400,1055221503,EU
1055221504,1055221631,BE
-1055221632,1055223039,EU
-1055223040,1055223807,NL
+1055221632,1055223551,EU
+1055223552,1055223807,NL
1055223808,1055223903,EU
1055223904,1055223999,LU
1055224000,1055224063,EU
@@ -8651,9 +9111,7 @@
1056964608,1061227007,US
1061227008,1061227263,HT
1061227264,1061227774,BO
-1061227775,1061478143,US
-1061478144,1061478399,BO
-1061478400,1061518015,US
+1061227775,1061518015,US
1061518016,1061518047,A2
1061518048,1061558271,US
1061558272,1061559295,PK
@@ -8661,13 +9119,7 @@
1061588736,1061588991,GU
1061588992,1061633567,US
1061633568,1061633575,CA
-1061633576,1061749152,US
-1061749153,1061749182,PR
-1061749183,1061749183,US
-1061749184,1061749191,PR
-1061749192,1061749199,US
-1061749200,1061749231,PR
-1061749232,1061762047,US
+1061633576,1061762047,US
1061762048,1061762303,FR
1061762304,1061776479,US
1061776480,1061776639,CA
@@ -8825,7 +9277,9 @@
1064973056,1064973183,AU
1064973184,1065049471,US
1065049472,1065049535,CA
-1065049536,1065519359,US
+1065049536,1065517087,US
+1065517088,1065517119,A2
+1065517120,1065519359,US
1065519360,1065519487,CA
1065519488,1065520895,US
1065520896,1065520911,CA
@@ -8833,11 +9287,9 @@
1065583424,1065583439,HK
1065583440,1065611263,US
1065611264,1065615359,PR
-1065615360,1065806947,US
-1065806948,1065806957,TH
-1065806958,1065811967,US
+1065615360,1065811967,US
1065811968,1065820159,CA
-1065820160,1065873407,US
+1065824256,1065873407,US
1065873408,1065877503,PR
1065877504,1065906175,US
1065906176,1065908223,KY
@@ -9055,14 +9507,12 @@
1071362112,1071362207,US
1071362208,1071362239,HK
1071362240,1071472639,US
-1071472640,1071480831,CA
+1071472640,1071476735,CA
+1071476736,1071477247,US
+1071477248,1071480831,CA
1071480832,1071985631,US
1071985632,1071985663,ML
-1071985664,1072440639,US
-1072440640,1072440671,CA
-1072440672,1072445631,US
-1072445632,1072445663,AU
-1072445664,1072512951,US
+1071985664,1072512951,US
1072512952,1072512959,CA
1072512960,1072619023,US
1072619024,1072619039,CA
@@ -9107,7 +9557,7 @@
1072785472,1072790015,US
1072790016,1072790031,JP
1072790032,1072922623,US
-1072922624,1072922879,PH
+1072922624,1072922879,CA
1072922880,1072923135,US
1072923136,1072923391,CA
1072923392,1072923903,US
@@ -9130,34 +9580,33 @@
1072928128,1072928255,US
1072928256,1072928263,CA
1072928264,1072928287,US
-1072928288,1072928319,CA
-1072928320,1072928447,US
+1072928288,1072928383,CA
+1072928384,1072928447,US
1072928448,1072929535,CA
1072929536,1072929791,US
1072929792,1072930047,CA
1072930048,1072930303,US
1072930304,1072931071,CA
-1072931072,1072931327,US
-1072931328,1072931583,CA
+1072931072,1072931199,US
+1072931200,1072931583,CA
1072931584,1072931839,SY
1072931840,1072932607,CA
1072932608,1072932863,NG
1072932864,1072934399,CA
-1072934400,1072934783,US
+1072934400,1072934655,US
+1072934656,1072934783,CA
1072934784,1072934847,AU
1072934848,1072934879,CA
1072934880,1072934911,TW
1072934912,1072934943,CA
1072934944,1072934975,PH
-1072934976,1072935135,US
+1072934976,1072935039,CA
+1072935040,1072935135,US
1072935136,1072935159,CA
1072935160,1072935167,US
1072935168,1072935679,CA
1072935680,1072935807,PH
-1072935808,1072935871,CA
-1072935872,1072935935,US
-1072935936,1072936191,CA
-1072936192,1072936447,US
+1072935808,1072936447,CA
1072936448,1072936703,PH
1072936704,1072937215,US
1072937216,1072937471,IR
@@ -9165,7 +9614,9 @@
1072937728,1072938239,CA
1072938240,1072938495,VG
1072938496,1072938751,CA
-1072938752,1072940031,US
+1072938752,1072939007,US
+1072939008,1072939519,CA
+1072939520,1072940031,US
1072940032,1072955391,CA
1072955392,1073022975,US
1073022976,1073025791,HN
@@ -9196,9 +9647,7 @@
1073045504,1073047551,CO
1073047552,1073049599,PR
1073049600,1073053695,BS
-1073053696,1073090269,US
-1073090270,1073090300,PE
-1073090301,1073091397,US
+1073053696,1073091397,US
1073091398,1073091407,CH
1073091408,1073092335,US
1073092336,1073092351,CA
@@ -9267,8 +9716,8 @@
1073394192,1073394207,MX
1073394208,1073394239,CA
1073394240,1073394247,MX
-1073394248,1073394255,US
-1073394256,1073394271,MX
+1073394248,1073394263,US
+1073394264,1073394271,MX
1073394272,1073394279,US
1073394280,1073394287,MX
1073394288,1073394295,US
@@ -9469,17 +9918,11 @@
1075479568,1075479583,US
1075479584,1075479607,CA
1075479608,1075479615,US
-1075479616,1075480463,CA
-1075480464,1075480479,US
-1075480480,1075480975,CA
-1075480976,1075480991,US
-1075480992,1075484047,CA
+1075479616,1075484047,CA
1075484048,1075484063,US
1075484064,1075484263,CA
1075484264,1075484271,US
-1075484272,1075484287,CA
-1075484288,1075484415,US
-1075484416,1075494911,CA
+1075484272,1075494911,CA
1075494912,1075513151,US
1075513152,1075513183,KW
1075513184,1075532663,US
@@ -9489,7 +9932,9 @@
1075558912,1075576831,US
1075576832,1075576871,NO
1075576872,1075576879,GB
-1075576880,1075576967,NO
+1075576880,1075576951,NO
+1075576952,1075576959,GB
+1075576960,1075576967,NO
1075576968,1075576975,GB
1075576976,1075576991,NO
1075576992,1075577023,GB
@@ -9539,7 +9984,9 @@
1075582504,1075582511,NL
1075582512,1075582615,NO
1075582616,1075582623,NL
-1075582624,1075583119,NO
+1075582624,1075582975,NO
+1075582976,1075583007,NL
+1075583008,1075583119,NO
1075583120,1075583123,NL
1075583124,1075583127,NO
1075583128,1075583135,NL
@@ -9664,7 +10111,9 @@
1075988320,1075988479,CA
1075988480,1075988735,US
1075988736,1075988991,CA
-1075988992,1075989247,US
+1075988992,1075989119,US
+1075989120,1075989215,CA
+1075989216,1075989247,US
1075989248,1075989311,FI
1075989312,1075989359,CA
1075989360,1075989375,US
@@ -9778,10 +10227,10 @@
1076007264,1076007679,CA
1076007680,1076007935,US
1076007936,1076007967,CA
-1076007968,1076008191,US
-1076008192,1076008383,CA
-1076008384,1076008447,US
-1076008448,1076009631,CA
+1076007968,1076007983,US
+1076007984,1076008063,CA
+1076008064,1076008191,US
+1076008192,1076009631,CA
1076009632,1076009639,US
1076009640,1076009643,CA
1076009644,1076009663,US
@@ -9792,7 +10241,9 @@
1076009920,1076010687,CA
1076010688,1076010695,US
1076010696,1076011007,CA
-1076011008,1076026023,US
+1076011008,1076024307,US
+1076024308,1076024315,CA
+1076024316,1076026023,US
1076026024,1076026031,CA
1076026032,1076026367,US
1076026368,1076026495,CA
@@ -9806,8 +10257,8 @@
1076027296,1076027391,CA
1076027392,1076027399,US
1076027400,1076027407,CA
-1076027408,1076027455,US
-1076027456,1076027711,CA
+1076027408,1076027423,US
+1076027424,1076027711,CA
1076027712,1076027727,US
1076027728,1076027775,CA
1076027776,1076027791,US
@@ -9906,22 +10357,23 @@
1076049920,1076050175,IL
1076050176,1076166655,US
1076183040,1076183071,IN
-1076183072,1076183103,US
-1076183104,1076183135,CA
-1076183136,1076183263,US
-1076183264,1076183295,CA
+1076183072,1076183231,US
+1076183232,1076183295,CA
1076183296,1076183807,US
1076183808,1076184063,CA
-1076184064,1076184127,US
+1076184064,1076184095,VE
+1076184096,1076184127,US
1076184128,1076184159,VE
-1076184160,1076184191,US
+1076184160,1076184191,PK
1076184192,1076184223,IN
1076184224,1076184255,US
1076184256,1076184287,BE
1076184288,1076184319,CA
1076184320,1076184575,US
-1076184576,1076184703,SG
-1076184704,1076184895,US
+1076184576,1076184639,CA
+1076184640,1076184703,SG
+1076184704,1076184831,CA
+1076184832,1076184895,US
1076184896,1076184927,FR
1076184928,1076184959,US
1076184960,1076184991,VE
@@ -9935,7 +10387,9 @@
1076185504,1076185535,DO
1076185536,1076185599,US
1076185600,1076185855,MY
-1076185856,1076185983,US
+1076185856,1076185919,US
+1076185920,1076185951,CA
+1076185952,1076185983,US
1076185984,1076186015,PK
1076186016,1076186047,US
1076186048,1076186079,IN
@@ -9945,17 +10399,20 @@
1076186368,1076186623,CA
1076186624,1076186751,US
1076186752,1076186783,CA
-1076186784,1076187391,US
+1076186784,1076186815,TW
+1076186816,1076187391,US
1076187392,1076187647,CA
1076187648,1076187679,BE
-1076187680,1076187775,US
+1076187680,1076187743,US
+1076187744,1076187775,CA
1076187776,1076187807,AU
1076187808,1076187903,US
1076187904,1076188159,CA
1076188160,1076188287,US
1076188288,1076188415,BE
-1076188416,1076188671,MY
-1076188672,1076189183,US
+1076188416,1076188799,US
+1076188800,1076188927,CA
+1076188928,1076189183,US
1076189184,1076189215,VE
1076189216,1076189279,CA
1076189280,1076189311,US
@@ -9969,24 +10426,35 @@
1076190144,1076190175,BE
1076190176,1076190207,IN
1076190208,1076190463,CA
-1076190464,1076190815,US
+1076190464,1076190655,US
+1076190656,1076190719,CA
+1076190720,1076190783,US
+1076190784,1076190815,CA
1076190816,1076190847,IN
-1076190848,1076192255,US
+1076190848,1076190913,US
+1076190914,1076190945,IN
+1076190946,1076191359,US
+1076191360,1076191487,CA
+1076191488,1076192063,US
+1076192064,1076192191,CA
+1076192192,1076192255,US
1076192256,1076192383,BE
-1076192384,1076192767,US
+1076192384,1076192639,US
+1076192640,1076192767,CA
1076192768,1076192831,IN
-1076192832,1076193023,US
-1076193024,1076193055,GB
+1076192832,1076192895,KR
+1076192896,1076193055,US
1076193056,1076193087,AU
1076193088,1076193151,US
1076193152,1076193183,TR
1076193184,1076193247,US
1076193248,1076193279,CA
-1076193280,1076194367,US
+1076193280,1076193535,PK
+1076193536,1076194367,US
1076194368,1076194399,IN
1076194400,1076194431,IL
-1076194432,1076194495,US
-1076194496,1076194527,BE
+1076194432,1076194463,IN
+1076194464,1076194527,BE
1076194528,1076194559,US
1076194560,1076194815,CA
1076194816,1076195071,US
@@ -9996,28 +10464,33 @@
1076195584,1076195871,US
1076195872,1076195903,BE
1076195904,1076195935,CA
-1076195936,1076196095,US
-1076196096,1076196383,CA
-1076196384,1076196479,US
+1076195936,1076195999,US
+1076196000,1076196031,CN
+1076196032,1076196063,CA
+1076196064,1076196095,US
+1076196096,1076196415,CA
+1076196416,1076196479,US
1076196480,1076196511,FR
-1076196512,1076196543,AT
-1076196544,1076196641,US
+1076196512,1076196575,AT
+1076196576,1076196607,CA
+1076196608,1076196641,US
1076196642,1076196671,BE
1076196672,1076196703,US
1076196704,1076196735,FR
-1076196736,1076197119,US
+1076196736,1076196863,US
+1076196864,1076196991,IN
+1076196992,1076197119,US
1076197120,1076197375,CA
1076197376,1076197631,US
1076197632,1076197663,BE
-1076197664,1076198655,US
+1076197664,1076198399,US
+1076198400,1076198655,CA
1076198656,1076198911,AE
1076198912,1076218015,US
1076218016,1076218023,GB
1076218024,1076219407,US
1076219408,1076219415,GB
-1076219416,1076281631,US
-1076281632,1076281663,AT
-1076281664,1076281695,US
+1076219416,1076281695,US
1076281696,1076281727,TH
1076281728,1076282111,US
1076282112,1076282143,AU
@@ -10741,7 +11214,9 @@
1077452800,1077460991,JP
1077460992,1077469183,US
1077469184,1077477375,CA
-1077477376,1077506047,US
+1077477376,1077489855,US
+1077489856,1077489919,GB
+1077489920,1077506047,US
1077506048,1077510143,LS
1077510144,1077561327,US
1077561328,1077561343,AR
@@ -10749,9 +11224,7 @@
1077565504,1077565567,AR
1077565568,1077567487,US
1077567488,1077571583,A2
-1077571584,1077571839,US
-1077571840,1077571967,CA
-1077571968,1077626239,US
+1077571584,1077626239,US
1077626240,1077626271,WS
1077626272,1077627167,US
1077627168,1077627199,EC
@@ -10840,9 +11313,188 @@
1077869760,1077869823,GR
1077869824,1077870335,US
1077870336,1077870591,CN
-1077870592,1077963775,US
-1077963776,1077964031,CA
-1077964032,1077977087,US
+1077870592,1077936137,US
+1077936138,1077936141,CN
+1077936142,1077936169,US
+1077936170,1077936173,CA
+1077936174,1077936177,GB
+1077936178,1077936189,US
+1077936190,1077936193,CA
+1077936194,1077936201,US
+1077936202,1077936205,GB
+1077936206,1077936209,US
+1077936210,1077936213,GR
+1077936214,1077936225,US
+1077936226,1077936229,IN
+1077936230,1077936233,US
+1077936234,1077936237,ES
+1077936238,1077936257,US
+1077936258,1077936261,AU
+1077936262,1077936265,IN
+1077936266,1077936273,US
+1077936274,1077936277,BR
+1077936278,1077936295,US
+1077936296,1077936296,CA
+1077936297,1077936297,US
+1077936298,1077936301,NG
+1077936302,1077936305,US
+1077936306,1077936309,ZA
+1077936310,1077936313,US
+1077936314,1077936317,BR
+1077936318,1077936321,US
+1077936322,1077936325,GB
+1077936326,1077936329,MX
+1077936330,1077936345,US
+1077936346,1077936349,PE
+1077936350,1077936351,IN
+1077936352,1077936365,US
+1077936366,1077936369,NO
+1077936370,1077936373,GB
+1077936374,1077936377,US
+1077936378,1077936381,IE
+1077936382,1077936401,US
+1077936402,1077936409,GB
+1077936410,1077936413,CO
+1077936414,1077936421,US
+1077936422,1077936422,CA
+1077936423,1077936426,US
+1077936427,1077936429,TH
+1077936430,1077936437,US
+1077936438,1077936441,NO
+1077936442,1077936445,TH
+1077936446,1077936449,TW
+1077936450,1077936453,US
+1077936454,1077936457,PT
+1077936458,1077936461,US
+1077936462,1077936463,GB
+1077936464,1077936465,US
+1077936466,1077936469,IN
+1077936470,1077936473,US
+1077936474,1077936474,CA
+1077936475,1077936475,US
+1077936476,1077936477,GB
+1077936478,1077936485,US
+1077936486,1077936489,TR
+1077936490,1077936493,FR
+1077936494,1077936497,CN
+1077936498,1077936501,US
+1077936502,1077936505,AR
+1077936506,1077936513,US
+1077936514,1077936517,BR
+1077936518,1077936521,US
+1077936522,1077936525,IN
+1077936526,1077936529,US
+1077936530,1077936533,PH
+1077936534,1077936545,US
+1077936546,1077936549,MY
+1077936550,1077936573,US
+1077936574,1077936577,AR
+1077936578,1077936585,US
+1077936586,1077936589,GB
+1077936590,1077936593,PH
+1077936594,1077936597,GR
+1077936598,1077936601,CA
+1077936602,1077936605,TH
+1077936606,1077936609,JO
+1077936610,1077936621,US
+1077936622,1077936622,AU
+1077936623,1077936626,US
+1077936627,1077936630,CH
+1077936631,1077936634,PE
+1077936635,1077936638,CA
+1077936639,1077936645,US
+1077936646,1077936649,HK
+1077936650,1077936653,CA
+1077936654,1077936667,US
+1077936668,1077936671,CA
+1077936672,1077936679,US
+1077936680,1077936683,TH
+1077936684,1077936684,RO
+1077936685,1077936691,US
+1077936692,1077936695,IT
+1077936696,1077936699,US
+1077936700,1077936703,TH
+1077936704,1077936742,US
+1077936743,1077936743,BE
+1077936744,1077936747,IN
+1077936748,1077936759,US
+1077936760,1077936763,AU
+1077936764,1077936767,US
+1077936768,1077936777,AU
+1077936778,1077936789,US
+1077936790,1077936793,NG
+1077936794,1077936797,AU
+1077936798,1077936801,SI
+1077936802,1077936805,AU
+1077936806,1077936814,US
+1077936815,1077936818,BR
+1077936819,1077936822,RS
+1077936823,1077936826,LV
+1077936827,1077936834,US
+1077936835,1077936838,CL
+1077936839,1077936842,TH
+1077936843,1077936846,US
+1077936847,1077936850,PK
+1077936851,1077936854,GB
+1077936855,1077936859,IN
+1077936860,1077936879,US
+1077936880,1077936883,IT
+1077936884,1077936887,CO
+1077936888,1077938949,US
+1077938950,1077938969,CA
+1077938970,1077939209,US
+1077939210,1077939210,BE
+1077939211,1077939461,US
+1077939462,1077939465,CA
+1077939466,1077939725,US
+1077939726,1077939727,DE
+1077939728,1077939735,US
+1077939736,1077939739,IN
+1077939740,1077939743,MY
+1077939744,1077939747,CA
+1077939748,1077939751,US
+1077939752,1077939755,BZ
+1077939756,1077939776,US
+1077939777,1077939780,CA
+1077939781,1077939784,GB
+1077939785,1077939973,US
+1077939974,1077939977,CL
+1077939978,1077939981,US
+1077939982,1077939985,MU
+1077939986,1077939993,US
+1077939994,1077939997,CN
+1077939998,1077940001,GB
+1077940002,1077940005,EG
+1077940006,1077940009,US
+1077940010,1077940013,IN
+1077940014,1077940060,US
+1077940061,1077940068,GB
+1077940069,1077940072,US
+1077940073,1077940076,TH
+1077940077,1077940089,US
+1077940090,1077940097,GB
+1077940098,1077940099,DE
+1077940100,1077940101,US
+1077940102,1077940105,IN
+1077940106,1077940109,TR
+1077940110,1077940113,CA
+1077940114,1077940125,US
+1077940126,1077940129,LV
+1077940130,1077940133,US
+1077940134,1077940137,GB
+1077940138,1077940146,US
+1077940147,1077940150,EG
+1077940151,1077940174,US
+1077940175,1077940178,GB
+1077940179,1077940182,US
+1077940183,1077940190,CA
+1077940191,1077940196,US
+1077940197,1077940200,MX
+1077940201,1077940205,GB
+1077940206,1077940209,IT
+1077940210,1077940213,US
+1077940214,1077940217,MX
+1077940218,1077977087,US
1077977088,1077985279,CA
1077985280,1077993471,US
1077993472,1078001663,CA
@@ -10853,17 +11505,23 @@
1078124544,1078128639,CA
1078128640,1078247423,US
1078247424,1078251519,CA
-1078251520,1078280191,US
+1078251520,1078252559,US
+1078252560,1078252591,MX
+1078252592,1078252639,US
+1078252640,1078252655,MX
+1078252656,1078253823,US
+1078253824,1078253887,MX
+1078253888,1078254847,US
+1078254848,1078255359,MX
+1078255360,1078280191,US
1078280192,1078280575,CA
1078280576,1078280591,US
1078280592,1078280639,CA
-1078280640,1078280655,CR
+1078280640,1078280655,US
1078280656,1078280671,CA
1078280672,1078280695,US
-1078280696,1078280943,CA
-1078280944,1078281071,US
-1078281072,1078281079,CA
-1078281080,1078281087,US
+1078280696,1078280895,CA
+1078280896,1078281087,US
1078281088,1078281279,CA
1078281280,1078281295,US
1078281296,1078281663,CA
@@ -10888,16 +11546,13 @@
1078283264,1078283264,US
1078283265,1078283375,CA
1078283376,1078283391,MX
-1078283392,1078283407,CA
-1078283408,1078283423,US
+1078283392,1078283423,US
1078283424,1078283487,CA
-1078283488,1078283495,US
-1078283496,1078283551,CA
+1078283488,1078283503,US
+1078283504,1078283551,CA
1078283552,1078283583,US
1078283584,1078283647,CA
-1078283648,1078283663,US
-1078283664,1078283671,CA
-1078283672,1078283679,US
+1078283648,1078283679,US
1078283680,1078283687,CA
1078283688,1078283695,US
1078283696,1078283751,CA
@@ -10905,21 +11560,19 @@
1078283776,1078284031,CA
1078284032,1078284159,BS
1078284160,1078284255,CA
-1078284256,1078284287,US
-1078284288,1078284319,CA
-1078284320,1078284351,US
+1078284256,1078284351,US
1078284352,1078284367,CA
1078284368,1078284383,BV
1078284384,1078284399,US
1078284400,1078284687,CA
1078284688,1078284695,US
1078284696,1078284703,MX
-1078284704,1078284991,CA
+1078284704,1078284719,CA
+1078284720,1078284735,US
+1078284736,1078284991,CA
1078284992,1078285007,US
1078285008,1078285015,CA
-1078285016,1078285023,US
-1078285024,1078285031,CA
-1078285032,1078285039,US
+1078285016,1078285039,US
1078285040,1078285191,CA
1078285192,1078285215,US
1078285216,1078285231,CA
@@ -10933,12 +11586,16 @@
1078285304,1078285567,US
1078285568,1078285639,CA
1078285640,1078285647,US
-1078285648,1078285695,CA
+1078285648,1078285655,CA
+1078285656,1078285663,US
+1078285664,1078285695,CA
1078285696,1078285703,MX
1078285704,1078285711,US
1078285712,1078285919,CA
1078285920,1078285943,US
-1078285944,1078286047,CA
+1078285944,1078285951,CA
+1078285952,1078286015,US
+1078286016,1078286047,CA
1078286048,1078286079,US
1078286080,1078286111,CA
1078286112,1078286115,US
@@ -10970,13 +11627,15 @@
1078287184,1078287199,US
1078287200,1078287231,CA
1078287232,1078287247,US
-1078287248,1078287295,CA
-1078287296,1078287311,US
+1078287248,1078287279,CA
+1078287280,1078287311,US
1078287312,1078287327,CA
1078287328,1078287343,US
1078287344,1078287759,CA
1078287760,1078287767,US
-1078287768,1078287839,CA
+1078287768,1078287775,CA
+1078287776,1078287807,US
+1078287808,1078287839,CA
1078287840,1078287863,US
1078287864,1078288383,CA
1078288384,1078309695,US
@@ -11075,7 +11734,9 @@
1078456320,1078460415,CA
1078460416,1078517759,US
1078517760,1078525951,CA
-1078525952,1078600639,US
+1078525952,1078581311,US
+1078581312,1078581327,CR
+1078581328,1078600639,US
1078600640,1078600647,GB
1078600648,1078615679,US
1078615680,1078615711,GB
@@ -11235,7 +11896,13 @@
1078814136,1078814143,HK
1078814144,1078814399,US
1078814400,1078814415,CA
-1078814416,1078956799,US
+1078814416,1078895103,US
+1078895104,1078895359,CN
+1078895360,1078895967,US
+1078895968,1078895983,CN
+1078895984,1078945023,US
+1078945024,1078945279,GB
+1078945280,1078956799,US
1078956800,1078957055,GB
1078957056,1079320575,US
1079320576,1079320671,CA
@@ -11291,21 +11958,20 @@
1079354704,1079354711,CA
1079354712,1079355359,US
1079355360,1079355367,CA
-1079355368,1079355903,US
-1079355904,1079355939,CA
-1079355940,1079355951,AU
-1079355952,1079356415,CA
-1079356416,1079356663,US
+1079355368,1079355967,US
+1079355968,1079355991,CA
+1079355992,1079356663,US
1079356664,1079356671,CA
1079356672,1079377919,US
1079377920,1079378943,CA
1079378944,1079379711,US
1079379712,1079380927,CA
-1079380928,1079381183,US
-1079381184,1079381503,CA
-1079381504,1079381599,US
+1079380928,1079380991,US
+1079380992,1079381567,CA
+1079381568,1079381599,US
1079381600,1079381631,WS
-1079381632,1079382015,US
+1079381632,1079381759,CA
+1079381760,1079382015,US
1079382016,1079382527,CA
1079382528,1079383039,US
1079383040,1079383295,VG
@@ -11318,21 +11984,23 @@
1079385472,1079385599,US
1079385600,1079385855,CA
1079385856,1079386111,SZ
-1079386112,1079386623,US
+1079386112,1079386623,CA
1079386624,1079386879,SG
1079386880,1079387135,EG
1079387136,1079387903,US
1079387904,1079388159,PH
1079388160,1079389439,CA
-1079389440,1079389951,US
+1079389440,1079389567,US
+1079389568,1079389695,CA
+1079389696,1079389951,US
1079389952,1079390719,CA
1079390720,1079391487,US
1079391488,1079391615,CA
1079391616,1079391679,US
1079391680,1079391743,CA
1079391744,1079392255,HT
-1079392256,1079393279,CA
-1079393280,1079394047,US
+1079392256,1079393791,CA
+1079393792,1079394047,US
1079394048,1079394063,CA
1079394064,1079394071,SG
1079394072,1079394079,CA
@@ -11348,31 +12016,27 @@
1079396096,1079396351,CA
1079396352,1079397375,MP
1079397376,1079397631,MH
-1079397632,1079398399,US
-1079398400,1079399583,CA
+1079397632,1079399583,CA
1079399584,1079399599,US
-1079399600,1079399935,CA
-1079399936,1079400447,US
+1079399600,1079400447,CA
1079400448,1079400511,FR
1079400512,1079400575,CA
1079400576,1079400639,US
-1079400640,1079400703,CA
-1079400704,1079400831,US
+1079400640,1079400767,CA
+1079400768,1079400831,US
1079400832,1079401215,CA
1079401216,1079401471,US
-1079401472,1079401983,CA
-1079401984,1079402495,US
-1079402496,1079403007,CA
-1079403008,1079403519,US
-1079403520,1079403775,CA
+1079401472,1079403775,CA
1079403776,1079403807,US
-1079403808,1079403839,CA
-1079403840,1079403935,US
+1079403808,1079403903,CA
+1079403904,1079403935,US
1079403936,1079403999,CA
-1079404000,1079404799,US
+1079404000,1079404031,US
+1079404032,1079404543,CA
+1079404544,1079404799,US
1079404800,1079405023,CA
-1079405024,1079405247,US
-1079405248,1079405407,CA
+1079405024,1079405119,US
+1079405120,1079405407,CA
1079405408,1079405439,BD
1079405440,1079405567,US
1079405568,1079407103,CA
@@ -11391,43 +12055,31 @@
1079410944,1079411199,CA
1079411200,1079411455,US
1079411456,1079411711,PK
-1079411712,1079412735,CA
-1079412736,1079413247,US
-1079413248,1079413311,CA
+1079411712,1079413311,CA
1079413312,1079413343,US
-1079413344,1079414271,CA
-1079414272,1079415039,US
+1079413344,1079414783,CA
+1079414784,1079415039,US
1079415040,1079415295,HN
-1079415296,1079415551,CA
-1079415552,1079416319,US
-1079416320,1079419135,CA
-1079419136,1079419903,US
-1079419904,1079420159,CA
-1079420160,1079420671,US
-1079420672,1079421951,CA
+1079415296,1079415807,CA
+1079415808,1079416319,US
+1079416320,1079421951,CA
1079421952,1079422207,US
-1079422208,1079422463,CA
-1079422464,1079423487,MZ
-1079423488,1079423999,CA
-1079424000,1079424767,MZ
-1079424768,1079425279,US
+1079422208,1079425023,CA
+1079425024,1079425279,US
1079425280,1079425535,CA
1079425536,1079425551,US
1079425552,1079427071,CA
1079427072,1079427327,US
1079427328,1079427583,CA
1079427584,1079428095,PW
-1079428096,1079429375,CA
-1079429376,1079429887,US
-1079429888,1079431679,CA
+1079428096,1079431679,CA
1079431680,1079432191,ZM
1079432192,1079432703,CA
1079432704,1079432959,US
1079432960,1079433215,CA
1079433216,1079435263,CR
1079435264,1079435775,CO
-1079435776,1079436799,HT
-1079436800,1079437311,CA
+1079435776,1079437311,CA
1079437312,1079439359,US
1079439360,1079442431,CA
1079442432,1079442687,US
@@ -11447,13 +12099,12 @@
1079576496,1079578623,PR
1079578624,1079585391,US
1079585392,1079585407,IN
-1079585408,1079664639,US
+1079585408,1079648255,US
+1079656448,1079664639,US
1079664640,1079668735,CA
1079668736,1079827871,US
1079827872,1079827887,RU
-1079827888,1079856639,US
-1079856640,1079856895,IN
-1079856896,1079857887,US
+1079827888,1079857887,US
1079857888,1079857903,NZ
1079857904,1079861247,US
1079861248,1079865343,CA
@@ -11467,10 +12118,12 @@
1079946432,1079946463,CA
1079946464,1079953567,US
1079953568,1079953599,GB
-1079953600,1079994367,US
+1079953600,1079962879,US
+1079962880,1079963135,GB
+1079963136,1079994367,US
1079994368,1079996415,CA
1079996416,1080021999,US
-1080022000,1080022007,CA
+1080022000,1080022007,GT
1080022008,1080033279,US
1080033280,1080295423,CA
1080295424,1080722827,US
@@ -11600,7 +12253,6 @@
1080750612,1080820871,US
1080820872,1080820879,PR
1080820880,1080954879,US
-1080955904,1080957183,US
1080957952,1080958207,A2
1080958208,1080958463,BH
1080958464,1080958719,A2
@@ -11642,9 +12294,7 @@
1081369120,1081369151,CO
1081369152,1081369599,US
1081369600,1081370111,CO
-1081370112,1081377055,US
-1081377056,1081377071,VE
-1081377072,1081377079,US
+1081370112,1081377079,US
1081377080,1081377087,VE
1081377088,1081377119,US
1081377120,1081377135,VE
@@ -11659,20 +12309,16 @@
1081377824,1081377887,US
1081377888,1081377919,VE
1081377920,1081377935,US
-1081377936,1081377999,VE
-1081378000,1081378015,US
+1081377936,1081377983,VE
+1081377984,1081378015,US
1081378016,1081378047,VE
-1081378048,1081378303,US
-1081378304,1081378319,VE
-1081378320,1081378375,US
+1081378048,1081378375,US
1081378376,1081378399,VE
1081378400,1081378495,US
1081378496,1081378575,VE
1081378576,1081378607,US
1081378608,1081378655,VE
-1081378656,1081378751,US
-1081378752,1081378815,VE
-1081378816,1081379327,US
+1081378656,1081379327,US
1081379328,1081379839,VE
1081379840,1081385215,US
1081385216,1081385535,PA
@@ -11681,9 +12327,7 @@
1081385992,1081385999,US
1081386000,1081386015,PA
1081386016,1081386047,VE
-1081386048,1081386623,US
-1081386624,1081386687,PA
-1081386688,1081387519,US
+1081386048,1081387519,US
1081387520,1081388031,PA
1081388032,1081388127,US
1081388128,1081388143,PA
@@ -11694,9 +12338,7 @@
1081393408,1081393751,CL
1081393752,1081393759,US
1081393760,1081393783,CL
-1081393784,1081393799,US
-1081393800,1081393807,CL
-1081393808,1081393831,US
+1081393784,1081393831,US
1081393832,1081393839,CL
1081393840,1081393887,US
1081393888,1081393903,CL
@@ -11706,13 +12348,23 @@
1081397760,1081398783,CL
1081398784,1081399295,US
1081399296,1081401343,CL
-1081401344,1081401391,AR
+1081401344,1081401375,AR
+1081401376,1081401383,US
+1081401384,1081401391,AR
1081401392,1081401415,US
-1081401416,1081401535,AR
-1081401536,1081401567,US
-1081401568,1081401735,AR
-1081401736,1081401743,US
-1081401744,1081402367,AR
+1081401416,1081401471,AR
+1081401472,1081401567,US
+1081401568,1081401599,AR
+1081401600,1081401615,US
+1081401616,1081401735,AR
+1081401736,1081401751,US
+1081401752,1081401775,AR
+1081401776,1081401791,US
+1081401792,1081401807,AR
+1081401808,1081401815,US
+1081401816,1081401823,AR
+1081401824,1081401855,US
+1081401856,1081402367,AR
1081402368,1081402895,US
1081402896,1081403007,AR
1081403008,1081403055,US
@@ -11731,8 +12383,8 @@
1081403904,1081403967,AR
1081403968,1081404031,US
1081404032,1081404095,AR
-1081404096,1081404991,US
-1081404992,1081405119,AR
+1081404096,1081405055,US
+1081405056,1081405119,AR
1081405120,1081409791,US
1081409792,1081410047,PR
1081410048,1081410559,US
@@ -11749,43 +12401,31 @@
1081413584,1081413631,PR
1081413632,1081416191,US
1081416192,1081416447,PR
-1081416448,1081419199,US
-1081419200,1081419231,PR
-1081419232,1081419263,US
-1081419264,1081419391,PR
+1081416448,1081419327,US
+1081419328,1081419391,PR
1081419392,1081419423,US
1081419424,1081419431,PR
1081419432,1081419447,US
1081419448,1081419455,PR
-1081419456,1081419487,US
-1081419488,1081419519,PR
-1081419520,1081419775,US
+1081419456,1081419775,US
1081419776,1081420287,PR
1081420288,1081420319,US
1081420320,1081420351,PR
-1081420352,1081420479,US
-1081420480,1081420543,PR
-1081420544,1081421183,US
-1081421184,1081421215,PR
-1081421216,1081442367,US
+1081420352,1081442367,US
1081442368,1081442399,CL
-1081442400,1081442463,US
-1081442464,1081442495,CL
-1081442496,1081442911,US
+1081442400,1081442911,US
1081442912,1081442927,CL
1081442928,1081442959,US
1081442960,1081442967,CL
1081442968,1081443327,US
-1081443328,1081444863,CL
-1081444864,1081445303,US
-1081445304,1081445311,CL
-1081445312,1081445375,US
-1081445376,1081450495,CL
-1081450496,1081460735,US
+1081443328,1081444351,CL
+1081444352,1081445375,US
+1081445376,1081446399,CL
+1081446400,1081460735,US
1081460736,1081462783,PA
1081462784,1081462815,CO
-1081462816,1081462911,BR
-1081462912,1081462919,US
+1081462816,1081462847,BR
+1081462848,1081462919,US
1081462920,1081462927,BR
1081462928,1081463231,US
1081463232,1081463247,BR
@@ -11902,13 +12542,33 @@
1081589112,1081589759,US
1081589760,1081593855,BB
1081593856,1081597951,CA
-1081597952,1081608703,US
-1081608704,1081608959,CA
-1081608960,1081609823,US
+1081597952,1081609823,US
1081609824,1081609831,LK
1081609832,1081609887,US
1081609888,1081609919,IN
-1081609920,1081616831,US
+1081609920,1081611415,US
+1081611416,1081611423,IN
+1081611424,1081611511,US
+1081611512,1081611519,IN
+1081611520,1081611815,US
+1081611816,1081611823,IN
+1081611824,1081611831,US
+1081611832,1081611839,IN
+1081611840,1081611847,US
+1081611848,1081611855,IN
+1081611856,1081611903,US
+1081611904,1081611911,IN
+1081611912,1081611919,US
+1081611920,1081611927,IN
+1081611928,1081611935,LK
+1081611936,1081611943,IN
+1081611944,1081612015,US
+1081612016,1081612023,IN
+1081612024,1081612159,US
+1081612160,1081612191,IN
+1081612192,1081612663,US
+1081612664,1081612671,IN
+1081612672,1081616831,US
1081616832,1081616839,GB
1081616840,1081618951,US
1081618952,1081618959,GB
@@ -11916,9 +12576,7 @@
1081803288,1081803295,PR
1081803296,1081803895,US
1081803896,1081803903,PR
-1081803904,1081832663,US
-1081832664,1081832671,PR
-1081832672,1081862639,US
+1081803904,1081862639,US
1081862640,1081862647,PR
1081862648,1081872663,US
1081872664,1081872671,FI
@@ -11946,9 +12604,7 @@
1082093680,1082093695,AU
1082093696,1082097055,US
1082097056,1082097071,CA
-1082097072,1082097143,US
-1082097144,1082097151,AU
-1082097152,1082138623,US
+1082097072,1082138623,US
1082138624,1082140671,A2
1082140672,1082314751,US
1082314752,1082315263,CA
@@ -11966,9 +12622,7 @@
1082348400,1082348407,BE
1082348408,1082348415,US
1082348416,1082348423,GB
-1082348424,1082348439,US
-1082348440,1082348447,SE
-1082348448,1082348471,US
+1082348424,1082348471,US
1082348472,1082348479,GB
1082348480,1082348735,US
1082348736,1082348799,NL
@@ -11988,9 +12642,7 @@
1082349776,1082349783,IT
1082349784,1082349815,US
1082349816,1082349823,RU
-1082349824,1082350623,US
-1082350624,1082350639,IT
-1082350640,1082350655,US
+1082349824,1082350655,US
1082350656,1082350671,IT
1082350672,1082350911,US
1082350912,1082350943,RU
@@ -12016,15 +12668,17 @@
1083396096,1083400191,BM
1083400192,1083417727,US
1083417728,1083417791,CA
-1083417792,1083421695,US
-1083421696,1083421759,AU
-1083421760,1083424511,US
-1083424512,1083424767,AU
-1083424768,1083437055,US
+1083417792,1083437055,US
1083437056,1083441151,CA
1083441152,1083486911,US
1083486912,1083486943,IS
-1083486944,1083621375,US
+1083486944,1083618602,US
+1083618603,1083618611,DE
+1083618612,1083618714,US
+1083618715,1083618725,BR
+1083618726,1083619954,US
+1083619955,1083619986,CY
+1083619987,1083621375,US
1083621376,1083637759,BS
1083637760,1083686911,US
1083686912,1083703295,CA
@@ -12160,8 +12814,8 @@
1086022208,1086022303,US
1086022304,1086022367,CA
1086022368,1086022591,US
-1086022592,1086022655,CA
-1086022656,1086023175,US
+1086022592,1086022623,CA
+1086022624,1086023175,US
1086023176,1086023183,GB
1086023184,1086023215,US
1086023216,1086023223,CA
@@ -12175,15 +12829,15 @@
1086027392,1086027407,IT
1086027408,1086027423,US
1086027424,1086027455,VN
-1086027456,1086028663,US
+1086027456,1086028031,US
+1086028032,1086028287,PA
+1086028288,1086028663,US
1086028664,1086028671,BR
1086028672,1086028751,US
1086028752,1086028759,BR
1086028760,1086029567,US
1086029568,1086029599,BO
-1086029600,1086029703,US
-1086029704,1086029719,GB
-1086029720,1086029727,US
+1086029600,1086029727,US
1086029728,1086029743,CA
1086029744,1086309887,US
1086309888,1086310143,AU
@@ -12307,9 +12961,7 @@
1088020360,1088020367,PR
1088020368,1088030663,US
1088030664,1088030671,PR
-1088030672,1088031839,US
-1088031840,1088031847,PR
-1088031848,1088031943,US
+1088030672,1088031943,US
1088031944,1088031951,PR
1088031952,1088091583,US
1088091584,1088091591,PR
@@ -12393,17 +13045,13 @@
1089154969,1089154977,IN
1089154978,1089155011,US
1089155012,1089155031,TR
-1089155032,1089156607,US
-1089156608,1089156863,CA
-1089156864,1089167359,US
+1089155032,1089167359,US
1089167360,1089171455,CA
1089171456,1089171967,A2
1089171968,1089172735,US
1089172736,1089172839,A2
1089172840,1089172863,US
-1089172864,1089172879,A2
-1089172880,1089172887,US
-1089172888,1089172895,A2
+1089172864,1089172895,A2
1089172896,1089172927,US
1089172928,1089172983,A2
1089172984,1089172991,US
@@ -12422,9 +13070,7 @@
1089192592,1089192599,IT
1089192600,1089196623,CA
1089196624,1089196639,US
-1089196640,1089197311,CA
-1089197312,1089197567,AU
-1089197568,1089200127,CA
+1089196640,1089200127,CA
1089200128,1089200751,US
1089200752,1089200783,CA
1089200784,1089203439,US
@@ -12556,11 +13202,13 @@
1090391303,1090391359,CA
1090391360,1090391360,US
1090391361,1090396159,CA
-1090396160,1090424095,US
-1090424096,1090424111,FI
-1090424112,1090424287,US
-1090424288,1090424303,FI
-1090424304,1090424831,US
+1090396160,1090423759,US
+1090423760,1090423783,FI
+1090423784,1090424095,US
+1090424096,1090424127,FI
+1090424128,1090424287,US
+1090424288,1090424319,FI
+1090424320,1090424831,US
1090424832,1090428927,CA
1090428928,1090445311,US
1090445312,1090447359,CA
@@ -12568,13 +13216,9 @@
1090447488,1090448127,CA
1090448128,1090448255,US
1090448256,1090453503,CA
-1090453504,1090495487,US
-1090495488,1090495743,NO
-1090495744,1090497903,US
+1090453504,1090497903,US
1090497904,1090497919,AU
-1090497920,1090499583,US
-1090499584,1090499839,NO
-1090499840,1091444735,US
+1090497920,1091444735,US
1091444736,1091445247,A2
1091445248,1091683357,US
1091683358,1091683367,GB
@@ -12659,9 +13303,7 @@
1091797264,1091797279,IT
1091797280,1091797855,US
1091797856,1091797871,IT
-1091797872,1091797999,US
-1091798000,1091798015,DE
-1091798016,1091798639,US
+1091797872,1091798639,US
1091798640,1091798647,CN
1091798648,1091798783,US
1091798784,1091799039,CN
@@ -12681,17 +13323,15 @@
1091804264,1091804271,BM
1091804272,1091806719,US
1091806720,1091806847,IT
-1091806848,1091807087,US
-1091807088,1091807095,MY
-1091807096,1091807231,US
+1091806848,1091807231,US
1091807232,1091807487,CA
1091807488,1091807999,US
1091808000,1091808511,CA
1091808512,1091809375,US
1091809376,1091809391,GB
1091809392,1091809407,US
-1091809408,1091809439,JP
-1091809440,1091811839,US
+1091809408,1091809471,JP
+1091809472,1091811839,US
1091811840,1091812095,IT
1091812096,1091812351,US
1091812352,1091812607,CN
@@ -12769,7 +13409,9 @@
1093091328,1093107711,US
1093107712,1093107823,CA
1093107824,1093107839,US
-1093107840,1093109367,CA
+1093107840,1093108223,CA
+1093108224,1093108479,US
+1093108480,1093109367,CA
1093109368,1093109375,US
1093109376,1093109879,CA
1093109880,1093109887,US
@@ -12783,7 +13425,9 @@
1093110832,1093110911,US
1093110912,1093110927,CA
1093110928,1093110935,US
-1093110936,1093111711,CA
+1093110936,1093111039,CA
+1093111040,1093111295,US
+1093111296,1093111711,CA
1093111712,1093111727,US
1093111728,1093111743,CA
1093111744,1093111759,US
@@ -12798,7 +13442,13 @@
1093112416,1093112431,CA
1093112432,1093112479,US
1093112480,1093112527,CA
-1093112528,1093114623,US
+1093112528,1093112855,US
+1093112856,1093112863,CA
+1093112864,1093112895,US
+1093112896,1093112911,CA
+1093112912,1093113087,US
+1093113088,1093113119,CA
+1093113120,1093114623,US
1093114624,1093114679,CA
1093114680,1093114703,US
1093114704,1093114711,CA
@@ -12876,8 +13526,8 @@
1093122784,1093122791,CA
1093122792,1093122799,US
1093122800,1093122807,CA
-1093122808,1093122815,US
-1093122816,1093123839,CA
+1093122808,1093123071,US
+1093123072,1093123839,CA
1093123840,1093123903,US
1093123904,1093123935,AN
1093123936,1093123943,US
@@ -13001,7 +13651,13 @@
1093740096,1093740159,JP
1093740160,1093740167,US
1093740168,1093740191,CN
-1093740192,1093740335,US
+1093740192,1093740223,US
+1093740224,1093740239,CN
+1093740240,1093740247,US
+1093740248,1093740255,HK
+1093740256,1093740271,US
+1093740272,1093740279,CN
+1093740280,1093740335,US
1093740336,1093740351,SG
1093740352,1093740415,JP
1093740416,1093741599,US
@@ -13019,9 +13675,9 @@
1093746880,1093746943,DE
1093746944,1093748799,US
1093748800,1093748863,CN
-1093748864,1094319583,US
-1094319584,1094319599,CA
-1094319600,1094549687,US
+1093748864,1093753111,US
+1093753112,1093753119,CN
+1093753120,1094549687,US
1094549688,1094549695,CA
1094549696,1094549783,US
1094549784,1094549791,AU
@@ -13522,7 +14178,9 @@
1096548352,1096810495,CA
1096810496,1096884223,US
1096884224,1096888319,CA
-1096888320,1096925183,US
+1096888320,1096890879,US
+1096890880,1096891135,GB
+1096891136,1096925183,US
1096925184,1096941567,CA
1096941568,1096942679,US
1096942680,1096942687,IE
@@ -13548,9 +14206,7 @@
1096960768,1096960895,GB
1096960896,1096961023,US
1096961024,1096961151,GB
-1096961152,1096964119,US
-1096964120,1096964127,GB
-1096964128,1096964263,US
+1096961152,1096964263,US
1096964264,1096964271,IN
1096964272,1096968127,US
1096968128,1096968159,CA
@@ -13589,24 +14245,12 @@
1097729152,1097729167,US
1097729168,1097730847,CA
1097730848,1097730855,US
-1097730856,1097730919,CA
-1097730920,1097730927,US
-1097730928,1097731447,CA
+1097730856,1097731447,CA
1097731448,1097731455,GB
1097731456,1097736191,CA
1097736192,1097768959,US
1097768960,1097777151,CA
-1097777152,1097798495,US
-1097798496,1097798527,CA
-1097798528,1097799167,US
-1097799168,1097799199,CA
-1097799200,1097799231,US
-1097799232,1097799423,CA
-1097799424,1097799679,US
-1097799680,1097799711,CA
-1097799712,1097799775,US
-1097799776,1097799871,CA
-1097799872,1097800959,US
+1097777152,1097800959,US
1097800960,1097800991,CY
1097800992,1097801183,US
1097801184,1097801215,DE
@@ -13782,12 +14426,17 @@
1101983232,1101983743,AN
1101983744,1102004223,US
1102004224,1102004479,IN
-1102004480,1102005503,US
+1102004480,1102004735,US
+1102004736,1102004991,IN
+1102004992,1102005247,US
+1102005248,1102005503,CA
1102005504,1102005759,PK
1102005760,1102005823,BE
1102005824,1102006271,US
1102006272,1102006527,CA
-1102006528,1102007599,US
+1102006528,1102007295,US
+1102007296,1102007551,PK
+1102007552,1102007599,US
1102007600,1102007615,AR
1102007616,1102007679,US
1102007680,1102007695,IN
@@ -13799,7 +14448,10 @@
1102008096,1102008103,CA
1102008104,1102008159,US
1102008160,1102008167,GB
-1102008168,1102008639,US
+1102008168,1102008223,US
+1102008224,1102008231,CA
+1102008232,1102008607,US
+1102008608,1102008639,CA
1102008640,1102008671,BE
1102008672,1102008735,US
1102008736,1102008767,BE
@@ -13809,8 +14461,7 @@
1102010624,1102010879,PK
1102010880,1102011647,US
1102011648,1102011663,VE
-1102011664,1102011679,GB
-1102011680,1102011743,US
+1102011664,1102011743,US
1102011744,1102011759,TR
1102011760,1102011855,US
1102011856,1102011871,CR
@@ -13822,13 +14473,19 @@
1102012976,1102012991,RU
1102012992,1102013167,US
1102013168,1102013183,VE
-1102013184,1102016255,US
+1102013184,1102014271,US
+1102014272,1102014335,IN
+1102014336,1102014399,CA
+1102014400,1102016255,US
1102016256,1102016287,AR
-1102016288,1102019583,US
+1102016288,1102016351,US
+1102016352,1102016383,MY
+1102016384,1102019583,US
1102019584,1102019711,IN
1102019712,1102389247,US
1102389248,1102393343,CA
-1102393344,1102446591,US
+1102393344,1102397439,US
+1102413824,1102446591,US
1102446592,1102448383,HN
1102448384,1102449151,US
1102449152,1102449407,SV
@@ -14018,16 +14675,14 @@
1107247104,1107275775,US
1107275776,1107279871,CA
1107279872,1107288063,US
-1107288064,1107296255,CA
+1107288064,1107292159,CA
1107296256,1107701759,US
1107701760,1107705855,CA
1107705856,1107800063,US
1107800064,1107800319,CA
1107800320,1107801367,US
1107801368,1107801375,CA
-1107801376,1107805695,US
-1107805696,1107805951,TR
-1107805952,1107808842,US
+1107801376,1107808842,US
1107808843,1107808846,PE
1107808847,1107808877,US
1107808878,1107808881,PE
@@ -14198,8 +14853,7 @@
1109705824,1109705839,CD
1109705840,1109705855,US
1109705856,1109705983,CD
-1109705984,1109706239,HT
-1109706240,1109707007,US
+1109705984,1109707007,US
1109707008,1109707263,JM
1109707264,1109707519,US
1109707520,1109707775,MW
@@ -14226,8 +14880,8 @@
1109902512,1109902527,CY
1109902528,1109918463,US
1109918464,1109918719,GB
-1109918720,1109919487,US
-1109919488,1109919999,GB
+1109918720,1109919743,US
+1109919744,1109919999,GB
1109920000,1109923135,US
1109923136,1109923151,BG
1109923152,1109923183,US
@@ -14324,7 +14978,9 @@
1110458848,1110458879,US
1110458880,1110458927,CA
1110458928,1110458943,US
-1110458944,1110459071,CA
+1110458944,1110459007,CA
+1110459008,1110459023,US
+1110459024,1110459071,CA
1110459072,1110459087,US
1110459088,1110459151,CA
1110459152,1110459167,US
@@ -14410,16 +15066,16 @@
1110870816,1110870847,HK
1110870848,1110870919,US
1110870920,1110870927,JP
-1110870928,1110921215,US
+1110870928,1110887423,US
+1110887424,1110887679,IE
+1110887680,1110921215,US
1110925312,1110929407,US
1110929408,1110933503,BM
1110933504,1111195647,US
1111195648,1111212031,CA
1111212032,1111228415,US
1111228416,1111244799,AR
-1111244800,1111472127,US
-1111472128,1111472383,AU
-1111472384,1111888905,US
+1111244800,1111888905,US
1111888906,1111888915,IN
1111888916,1111900223,US
1111900224,1111900287,NL
@@ -14501,9 +15157,7 @@
1114054656,1114062847,CA
1114062848,1114095615,US
1114095616,1114103807,CA
-1114103808,1114163967,US
-1114163968,1114164479,VI
-1114164480,1114170095,US
+1114103808,1114170095,US
1114170096,1114170111,CA
1114170112,1114505215,US
1114505216,1114507263,CA
@@ -14514,7 +15168,7 @@
1114511360,1114511871,US
1114511872,1114513407,CA
1114513408,1114515455,SA
-1114515456,1114517503,GU
+1114515456,1114517503,US
1114517504,1114520063,CA
1114520064,1114520319,PH
1114520320,1114520575,US
@@ -14527,9 +15181,7 @@
1114533376,1114533887,ZA
1114533888,1114537983,AO
1114537984,1114550271,CA
-1114550272,1114623999,US
-1114624000,1114625023,NZ
-1114625024,1114627071,US
+1114550272,1114627071,US
1114627072,1114628095,NZ
1114628096,1114653951,US
1114653952,1114653983,MO
@@ -14570,9 +15222,7 @@
1114881344,1114881407,CY
1114881408,1114881471,US
1114881472,1114881535,CY
-1114881536,1114881743,US
-1114881744,1114881759,CA
-1114881760,1114930175,US
+1114881536,1114930175,US
1114930176,1114930303,GB
1114930304,1114966815,US
1114966816,1114966831,GB
@@ -14655,9 +15305,7 @@
1115698432,1115698687,DO
1115698688,1115698783,US
1115698784,1115698791,CO
-1115698792,1115698943,US
-1115698944,1115698951,CA
-1115698952,1115698983,US
+1115698792,1115698983,US
1115698984,1115698991,CO
1115698992,1115699903,US
1115699904,1115699911,CA
@@ -14667,9 +15315,7 @@
1115700224,1115700479,DO
1115700480,1115700735,US
1115700736,1115700743,CA
-1115700744,1115700791,US
-1115700792,1115700799,CA
-1115700800,1115705343,US
+1115700744,1115705343,US
1115705344,1115709439,CA
1115709440,1115783167,US
1115783168,1115784599,CA
@@ -14939,8 +15585,8 @@
1117417280,1117417343,US
1117417344,1117418655,CA
1117418656,1117418671,US
-1117418672,1117419007,CA
-1117419008,1117419519,US
+1117418672,1117419263,CA
+1117419264,1117419519,US
1117419520,1117419775,CA
1117419776,1117420543,US
1117420544,1117421055,CA
@@ -15028,12 +15674,15 @@
1118031760,1118031799,US
1118031800,1118031871,CA
1118031872,1118126079,US
-1118126080,1118126591,CA
-1118126592,1118126847,US
+1118126080,1118126719,CA
+1118126720,1118126847,US
1118126848,1118127231,CA
1118127232,1118127359,US
1118127360,1118127615,CA
-1118127616,1118128383,US
+1118127616,1118128191,US
+1118128192,1118128255,MY
+1118128256,1118128319,CA
+1118128320,1118128383,MY
1118128384,1118128639,CA
1118128640,1118129151,US
1118129152,1118129663,CA
@@ -15059,12 +15708,17 @@
1118134912,1118134975,CA
1118134976,1118135007,US
1118135008,1118135039,IN
-1118135040,1118135647,US
+1118135040,1118135567,US
+1118135568,1118135583,CA
+1118135584,1118135615,US
+1118135616,1118135631,TZ
+1118135632,1118135647,US
1118135648,1118135663,CA
-1118135664,1118135791,US
-1118135792,1118135807,ID
+1118135664,1118135807,US
1118135808,1118136191,CA
-1118136192,1118136831,US
+1118136192,1118136319,US
+1118136320,1118136351,CA
+1118136352,1118136831,US
1118136832,1118136863,IN
1118136864,1118136895,BE
1118136896,1118136927,US
@@ -15077,15 +15731,24 @@
1118137280,1118137311,FR
1118137312,1118138559,US
1118138560,1118138591,AU
-1118138592,1118139903,US
+1118138592,1118138623,FR
+1118138624,1118138879,US
+1118138880,1118139135,CA
+1118139136,1118139903,US
1118139904,1118140415,CA
-1118140416,1118140735,US
+1118140416,1118140703,US
+1118140704,1118140735,IN
1118140736,1118140767,AU
-1118140768,1118141183,US
+1118140768,1118140831,US
+1118140832,1118140895,VE
+1118140896,1118141183,US
1118141184,1118141439,CA
1118141440,1118141695,US
1118141696,1118141951,CA
-1118141952,1118151215,US
+1118141952,1118141967,CN
+1118141968,1118142063,US
+1118142064,1118142079,IN
+1118142080,1118151215,US
1118151216,1118151231,TT
1118151232,1118151391,US
1118151392,1118151407,PR
@@ -15138,7 +15801,9 @@
1118155184,1118155199,CA
1118155200,1118155215,US
1118155216,1118155231,PA
-1118155232,1118156319,US
+1118155232,1118155999,US
+1118156000,1118156015,GT
+1118156016,1118156319,US
1118156320,1118156335,PE
1118156336,1118156399,US
1118156400,1118156415,VE
@@ -15183,7 +15848,8 @@
1118476896,1118477535,CA
1118477536,1118477543,US
1118477544,1118478335,CA
-1118478336,1118789783,US
+1118478336,1118502911,US
+1118568448,1118789783,US
1118789784,1118789791,BB
1118789792,1118790351,US
1118790352,1118790367,GB
@@ -15191,12 +15857,10 @@
1118791552,1118791567,LU
1118791568,1118791599,US
1118791600,1118791615,ES
-1118791616,1118792703,US
-1118792704,1118792831,JM
-1118792832,1118792895,US
-1118792896,1118793151,JM
-1118793152,1118793279,US
-1118793280,1118793727,JM
+1118791616,1118792815,US
+1118792816,1118792831,DO
+1118792832,1118793471,US
+1118793472,1118793727,CO
1118793728,1118793823,US
1118793824,1118793839,CA
1118793840,1118793935,US
@@ -15409,8 +16073,7 @@
1118974128,1118974135,US
1118974136,1118974207,EC
1118974208,1118974215,US
-1118974216,1118975231,A2
-1118975232,1118975487,NI
+1118974216,1118975487,A2
1118975488,1118975743,KE
1118975744,1118975999,A2
1118976000,1118976255,GB
@@ -15604,8 +16267,7 @@
1118992736,1118992743,SA
1118992744,1118992767,A2
1118992768,1118992839,US
-1118992840,1118993919,A2
-1118993920,1118994431,GY
+1118992840,1118994431,A2
1118994432,1119023735,US
1119023736,1119023743,UY
1119023744,1119109119,US
@@ -15631,9 +16293,7 @@
1119167896,1119167903,CA
1119167904,1119168023,US
1119168024,1119168031,CA
-1119168032,1119168055,US
-1119168056,1119168063,MX
-1119168064,1119168183,US
+1119168032,1119168183,US
1119168184,1119168191,CA
1119168192,1119168687,US
1119168688,1119168695,CA
@@ -15729,16 +16389,13 @@
1119469568,1119477759,CA
1119477760,1119486623,US
1119486624,1119486631,AU
-1119486632,1119490015,US
-1119490016,1119490047,IE
-1119490048,1119490495,US
+1119486632,1119490495,US
1119490496,1119490527,GI
1119490528,1119502335,US
1119502336,1119510527,CA
1119510528,1119558143,US
1119558144,1119558655,PR
1119558656,1119567871,US
-1119567872,1119571967,CA
1119571968,1119580159,US
1119580160,1119584255,CA
1119584256,1119999935,US
@@ -15797,18 +16454,17 @@
1120299264,1120299519,US
1120299520,1120300799,PK
1120300800,1120301055,US
-1120301056,1120306175,CA
-1120306176,1120306943,PH
+1120301056,1120306687,CA
+1120306688,1120306943,PH
1120306944,1120307199,US
1120307200,1120307967,EC
1120307968,1120308223,PH
-1120308224,1120309247,HT
-1120309248,1120310015,CA
+1120308224,1120310015,CA
1120310016,1120310783,PH
1120310784,1120311807,CA
1120311808,1120312063,US
1120312064,1120312447,PH
-1120312448,1120312575,US
+1120312448,1120312575,CA
1120312576,1120312831,PH
1120312832,1120313343,CA
1120313344,1120313599,US
@@ -15818,7 +16474,9 @@
1120321536,1120346111,US
1120346112,1120350207,CA
1120350208,1120370687,US
-1120370688,1120371511,CA
+1120370688,1120371487,CA
+1120371488,1120371503,US
+1120371504,1120371511,CA
1120371512,1120371519,US
1120371520,1120371647,CA
1120371648,1120371651,US
@@ -15828,7 +16486,9 @@
1120372080,1120372223,US
1120372224,1120372479,CA
1120372480,1120372735,US
-1120372736,1120374047,CA
+1120372736,1120373423,CA
+1120373424,1120373503,US
+1120373504,1120374047,CA
1120374048,1120374063,US
1120374064,1120374271,CA
1120374272,1120374303,US
@@ -15837,10 +16497,8 @@
1120374416,1120374479,CA
1120374480,1120374487,US
1120374488,1120374511,CA
-1120374512,1120374527,US
-1120374528,1120375231,CA
-1120375232,1120375239,US
-1120375240,1120375243,CA
+1120374512,1120374783,US
+1120374784,1120375243,CA
1120375244,1120375263,US
1120375264,1120376063,CA
1120376064,1120376079,US
@@ -15876,7 +16534,9 @@
1120378920,1120378927,US
1120378928,1120379039,CA
1120379040,1120379071,PA
-1120379072,1120380027,CA
+1120379072,1120379167,CA
+1120379168,1120379183,US
+1120379184,1120380027,CA
1120380028,1120380031,US
1120380032,1120380095,CA
1120380096,1120380127,US
@@ -15900,8 +16560,8 @@
1120381120,1120382231,CA
1120382232,1120382239,US
1120382240,1120382271,CA
-1120382272,1120382335,US
-1120382336,1120382431,CA
+1120382272,1120382367,US
+1120382368,1120382431,CA
1120382432,1120382463,US
1120382464,1120382975,CA
1120382976,1120383263,US
@@ -15923,7 +16583,9 @@
1120385144,1120385151,US
1120385152,1120385183,GB
1120385184,1120385535,CA
-1120385536,1120485759,US
+1120385536,1120386559,US
+1120386560,1120386815,CA
+1120386816,1120485759,US
1120485760,1120485887,CA
1120485888,1120486079,US
1120486080,1120486143,IN
@@ -15938,9 +16600,7 @@
1120487392,1120487423,BE
1120487424,1120487679,CA
1120487680,1120487935,US
-1120487936,1120488191,CA
-1120488192,1120488447,US
-1120488448,1120488703,CA
+1120487936,1120488703,CA
1120488704,1120488767,US
1120488768,1120488799,VE
1120488800,1120488831,IL
@@ -15952,8 +16612,7 @@
1120489344,1120489471,US
1120489472,1120489727,CA
1120489728,1120489983,US
-1120489984,1120490111,SG
-1120490112,1120490751,CA
+1120489984,1120490751,CA
1120490752,1120490783,GB
1120490784,1120491007,US
1120491008,1120491775,CA
@@ -15970,7 +16629,9 @@
1120493824,1120494079,CA
1120494080,1120494335,US
1120494336,1120494591,CA
-1120494592,1120495359,US
+1120494592,1120494975,US
+1120494976,1120495039,CA
+1120495040,1120495359,US
1120495360,1120495615,CA
1120495616,1120495743,US
1120495744,1120495871,SG
@@ -15980,20 +16641,21 @@
1120496288,1120496385,US
1120496386,1120496638,CA
1120496639,1120496639,US
-1120496640,1120497023,CA
-1120497024,1120497151,IN
+1120496640,1120497151,CA
1120497152,1120497183,BE
1120497184,1120497215,US
1120497216,1120497247,BE
-1120497248,1120497375,US
+1120497248,1120497311,US
+1120497312,1120497343,IN
+1120497344,1120497375,US
1120497376,1120497663,CA
1120497664,1120497791,US
1120497792,1120497919,AU
1120497920,1120497983,US
1120497984,1120498013,BE
1120498014,1120498143,US
-1120498144,1120498175,CA
-1120498176,1120498943,US
+1120498144,1120498303,CA
+1120498304,1120498943,US
1120498944,1120499199,CA
1120499200,1120499487,US
1120499488,1120499519,CA
@@ -16015,9 +16677,7 @@
1120568640,1120568671,CA
1120568672,1120575167,US
1120575168,1120575199,CA
-1120575200,1120616807,US
-1120616808,1120616815,CA
-1120616816,1120641023,US
+1120575200,1120641023,US
1120641024,1120657407,CA
1120657408,1120735487,US
1120735488,1120735743,BB
@@ -16115,15 +16775,14 @@
1121247504,1121247511,AW
1121247512,1121247519,VG
1121247520,1121247527,BZ
-1121247528,1121247535,GI
+1121247528,1121247535,CA
1121247536,1121247543,BZ
1121247544,1121247551,CA
1121247552,1121247559,VG
1121247560,1121247567,CA
1121247568,1121247583,PA
1121247584,1121247591,CY
-1121247592,1121247615,CA
-1121247616,1121247631,BZ
+1121247592,1121247631,CA
1121247632,1121247639,AW
1121247640,1121247647,VG
1121247648,1121247663,US
@@ -16153,7 +16812,7 @@
1121248320,1121248335,CA
1121248336,1121248343,VG
1121248344,1121248351,BZ
-1121248352,1121248367,CY
+1121248352,1121248367,MT
1121248368,1121248383,CA
1121248384,1121248399,VG
1121248400,1121248407,CA
@@ -16162,8 +16821,7 @@
1121248448,1121248495,BZ
1121248496,1121248783,CA
1121248784,1121248799,VG
-1121248800,1121248831,GI
-1121248832,1121248863,CA
+1121248800,1121248863,CA
1121248864,1121248879,VG
1121248880,1121248911,CA
1121248912,1121248919,BZ
@@ -16171,8 +16829,7 @@
1121248960,1121248983,CA
1121248984,1121248991,AW
1121248992,1121249023,VG
-1121249024,1121249279,CA
-1121249280,1121249375,SE
+1121249024,1121249375,CA
1121249376,1121249383,VG
1121249384,1121249407,CA
1121249408,1121249439,AG
@@ -16200,7 +16857,9 @@
1121250208,1121250239,CA
1121250240,1121250303,GB
1121250304,1121250815,BZ
-1121250816,1121250879,AG
+1121250816,1121250831,AG
+1121250832,1121250839,BZ
+1121250840,1121250879,AG
1121250880,1121250911,CA
1121250912,1121250927,VG
1121250928,1121250935,CA
@@ -16211,16 +16870,14 @@
1121251048,1121251055,AW
1121251056,1121251071,CA
1121251072,1121251079,GB
-1121251080,1121251087,CA
-1121251088,1121251103,CY
-1121251104,1121251135,CA
+1121251080,1121251087,CY
+1121251088,1121251135,CA
1121251136,1121251167,AG
1121251168,1121251199,VG
1121251200,1121251263,AW
1121251264,1121251271,CA
1121251272,1121251279,KN
-1121251280,1121251287,CA
-1121251288,1121251295,MU
+1121251280,1121251295,CA
1121251296,1121251311,IM
1121251312,1121251583,CA
1121251584,1121251591,BZ
@@ -16239,7 +16896,8 @@
1121251840,1121251847,BZ
1121251848,1121251871,CA
1121251872,1121251887,VG
-1121251888,1121251903,CA
+1121251888,1121251895,CY
+1121251896,1121251903,CA
1121251904,1121251935,AG
1121251936,1121251943,CY
1121251944,1121251951,PA
@@ -16577,23 +17235,25 @@
1121717432,1121717439,JP
1121717440,1121717759,US
1121717760,1121718015,IT
-1121718016,1121878015,US
+1121718016,1121721711,US
+1121721712,1121721727,CN
+1121721728,1121878015,US
1121878016,1121910783,CA
1121910784,1122074623,US
1122074624,1122087935,CA
1122087936,1122088191,US
1122088192,1122091007,CA
-1122091008,1122092799,US
+1122091008,1122092623,US
+1122092624,1122092631,CA
+1122092632,1122092695,US
+1122092696,1122092703,CA
+1122092704,1122092799,US
1122092800,1122093055,CA
1122093056,1122093807,US
1122093808,1122093815,HK
1122093816,1122103471,US
1122103472,1122103479,BE
-1122103480,1122108671,US
-1122108672,1122108735,GR
-1122108736,1122125978,US
-1122125979,1122125988,PH
-1122125989,1122125996,US
+1122103480,1122125996,US
1122125997,1122126004,GB
1122126005,1122126239,US
1122126240,1122126249,GB
@@ -16608,16 +17268,14 @@
1122197608,1122197623,US
1122197624,1122197631,FR
1122197632,1122197695,US
-1122197696,1122197759,GB
+1122197696,1122197727,GB
+1122197728,1122197735,US
+1122197736,1122197759,GB
1122197760,1122197767,US
1122197768,1122197775,FR
1122197776,1122197823,US
1122197824,1122197831,GB
-1122197832,1122197839,US
-1122197840,1122197855,GB
-1122197856,1122197887,US
-1122197888,1122198015,GB
-1122198016,1122203135,US
+1122197832,1122203135,US
1122203136,1122203391,GB
1122203392,1122320959,US
1122320960,1122320995,PT
@@ -16640,13 +17298,9 @@
1122480168,1122480207,US
1122480208,1122480223,GB
1122480224,1122480231,PL
-1122480232,1122480343,US
-1122480344,1122480351,PR
-1122480352,1122480415,US
+1122480232,1122480415,US
1122480416,1122480423,CL
-1122480424,1122480447,US
-1122480448,1122480455,PR
-1122480456,1122480479,US
+1122480424,1122480479,US
1122480480,1122480487,CA
1122480488,1122493055,US
1122493056,1122493183,ES
@@ -16657,24 +17311,22 @@
1122496000,1122497407,US
1122497408,1122497471,SV
1122497472,1122497535,US
-1122497536,1122498303,PR
-1122498304,1122498559,US
+1122497536,1122498047,PR
+1122498048,1122498559,US
1122498560,1122498815,PR
-1122498816,1122499327,US
-1122499328,1122500095,PR
-1122500096,1122525855,US
+1122498816,1122499583,US
+1122499584,1122500095,PR
+1122500096,1122506751,US
+1122506752,1122507007,IN
+1122507008,1122525855,US
1122525856,1122525865,RU
1122525866,1122526096,US
1122526097,1122526111,RU
1122526112,1122526454,US
1122526455,1122526462,RU
-1122526463,1122526517,US
-1122526518,1122526541,HK
-1122526542,1122526876,US
+1122526463,1122526876,US
1122526877,1122526888,RU
-1122526889,1122526925,US
-1122526926,1122526939,RU
-1122526940,1122528183,US
+1122526889,1122528183,US
1122528184,1122528254,RU
1122528255,1122528603,US
1122528604,1122528613,ES
@@ -16711,15 +17363,11 @@
1123582272,1123582399,US
1123582400,1123582431,DE
1123582432,1123582463,CA
-1123582464,1123583327,US
-1123583328,1123583359,CA
-1123583360,1123583455,US
+1123582464,1123583455,US
1123583456,1123583519,CY
1123583520,1123584351,US
1123584352,1123584383,DE
-1123584384,1123584703,US
-1123584704,1123584735,CA
-1123584736,1123588063,US
+1123584384,1123588063,US
1123588064,1123588095,CY
1123588096,1123590143,US
1123590144,1123598335,VI
@@ -16736,15 +17384,7 @@
1123801088,1123801343,RU
1123801344,1123848191,US
1123848192,1123852287,CA
-1123852288,1123862080,US
-1123862081,1123862270,RU
-1123862271,1123862454,US
-1123862455,1123862520,RU
-1123862521,1123862592,US
-1123862593,1123862782,RU
-1123862783,1123862880,US
-1123862881,1123862888,RU
-1123862889,1123870063,US
+1123852288,1123870063,US
1123870064,1123870071,GB
1123870072,1123870295,US
1123870296,1123870303,HK
@@ -16807,9 +17447,7 @@
1125091744,1125091759,US
1125091760,1125091775,UY
1125091776,1125091839,CA
-1125091840,1125093375,US
-1125093376,1125093407,TH
-1125093408,1125093471,US
+1125091840,1125093471,US
1125093472,1125093503,IL
1125093504,1125093567,SK
1125093568,1125093631,AU
@@ -16817,8 +17455,7 @@
1125094464,1125094527,BR
1125094528,1125094655,US
1125094656,1125094671,GB
-1125094672,1125094687,SK
-1125094688,1125094783,US
+1125094672,1125094783,US
1125094784,1125094799,GB
1125094800,1125094847,CA
1125094848,1125094911,BR
@@ -16931,16 +17568,39 @@
1125474304,1125478399,CA
1125478400,1125479199,US
1125479200,1125479231,BR
-1125479232,1125498879,US
+1125479232,1125493127,US
+1125493128,1125493135,CA
+1125493136,1125498879,US
1125498880,1125508095,CA
1125508096,1125508351,PA
1125508352,1125514495,CA
1125514496,1125514751,US
1125514752,1125515263,CA
1125515264,1125531647,US
-1125531648,1125543935,CA
+1125531648,1125539903,CA
+1125539904,1125539935,US
+1125539936,1125540151,CA
+1125540152,1125540159,GB
+1125540160,1125540207,CA
+1125540208,1125540223,US
+1125540224,1125540479,CA
+1125540480,1125540495,US
+1125540496,1125540511,CA
+1125540512,1125540527,US
+1125540528,1125540543,IE
+1125540544,1125540575,CA
+1125540576,1125540591,US
+1125540592,1125540703,CA
+1125540704,1125540711,US
+1125540712,1125540927,CA
+1125540928,1125540959,US
+1125540960,1125543935,CA
1125543936,1125545983,US
-1125548032,1125552127,CA
+1125548032,1125548291,CA
+1125548292,1125548351,US
+1125548352,1125550079,CA
+1125550080,1125550335,US
+1125550336,1125552127,CA
1125552128,1125572607,US
1125572608,1125576703,CA
1125576704,1125613567,US
@@ -16967,15 +17627,12 @@
1126682720,1126682727,PR
1126682728,1126682823,US
1126682824,1126682831,PR
-1126682832,1126907535,US
-1126907536,1126907543,ES
-1126907544,1126924287,US
+1126682832,1126924287,US
1126924288,1126928383,CA
1126928384,1126948863,US
1126948864,1126949375,CA
1126949376,1126949503,GB
-1126949504,1126949551,CA
-1126949552,1126949559,GB
+1126949504,1126949559,CA
1126949560,1126949567,BZ
1126949568,1126949583,CA
1126949584,1126949591,LB
@@ -16984,35 +17641,21 @@
1126949616,1126949631,LB
1126949632,1126949695,CA
1126949696,1126949759,PK
-1126949760,1126949823,CA
-1126949824,1126949855,US
-1126949856,1126950191,CA
+1126949760,1126950191,CA
1126950192,1126950199,ES
1126950200,1126950207,HR
-1126950208,1126950303,CA
-1126950304,1126950335,US
-1126950336,1126950367,CA
-1126950368,1126950399,US
-1126950400,1126950415,CA
+1126950208,1126950415,CA
1126950416,1126950423,PK
1126950424,1126950431,RU
1126950432,1126950463,CA
1126950464,1126950495,IT
-1126950496,1126950527,US
-1126950528,1126950559,CA
-1126950560,1126950591,US
-1126950592,1126950599,CA
+1126950496,1126950599,CA
1126950600,1126950607,CN
1126950608,1126950623,CA
1126950624,1126950655,FR
1126950656,1126950783,CA
1126950784,1126950847,MY
-1126950848,1126950911,US
-1126950912,1126951039,CA
-1126951040,1126951071,US
-1126951072,1126951103,CA
-1126951104,1126951135,US
-1126951136,1126951775,CA
+1126950848,1126951775,CA
1126951776,1126951783,PH
1126951784,1126951967,CA
1126951968,1126951975,KP
@@ -17026,29 +17669,13 @@
1126952264,1126952271,PH
1126952272,1126952447,CA
1126952448,1126952511,AE
-1126952512,1126952543,US
-1126952544,1126952559,CA
+1126952512,1126952559,CA
1126952560,1126952567,TH
-1126952568,1126952703,CA
-1126952704,1126952767,CY
-1126952768,1126952895,CA
+1126952568,1126952895,CA
1126952896,1126952959,CY
1126952960,1127677951,US
1127677952,1127694335,CA
-1127694336,1127874559,US
-1127875328,1127875839,US
-1127875840,1127876095,CA
-1127876608,1127876863,US
-1127877120,1127877375,US
-1127877376,1127877631,CA
-1127878144,1127878399,US
-1127878400,1127878911,CA
-1127878912,1127879167,US
-1127879680,1127879935,CA
-1127879936,1127880191,US
-1127880448,1127880703,US
-1127880704,1127882751,CA
-1127882752,1127923711,US
+1127694336,1127923711,US
1127923712,1127931903,CA
1127931904,1127976191,US
1127976192,1127976223,IL
@@ -17836,13 +18463,9 @@
1136721920,1136787455,CA
1136787456,1137090815,US
1137090816,1137091327,NZ
-1137091328,1137134083,US
-1137134084,1137134099,CA
-1137134100,1137134283,US
-1137134284,1137134331,CA
-1137134332,1137189135,US
+1137091328,1137189135,US
1137189136,1137189151,IE
-1137189152,1137189183,GB
+1137189152,1137189183,US
1137189184,1137189247,IE
1137189248,1137189255,GB
1137189256,1137189263,US
@@ -17855,9 +18478,7 @@
1137278976,1137283071,CA
1137283072,1137287167,US
1137287168,1137295359,CA
-1137295360,1137337599,US
-1137337600,1137337855,CA
-1137337856,1137369087,US
+1137295360,1137369087,US
1137369088,1137369519,CA
1137369520,1137369535,US
1137369536,1137370111,CA
@@ -17867,7 +18488,9 @@
1137376352,1137376367,CA
1137376368,1137376383,US
1137376384,1137376463,CA
-1137376464,1137377311,US
+1137376464,1137376479,US
+1137376480,1137376511,CA
+1137376512,1137377311,US
1137377312,1137377327,DE
1137377328,1137377471,US
1137377472,1137377479,IN
@@ -18153,7 +18776,9 @@
1137927680,1137927807,CR
1137927808,1137927935,CA
1137927936,1137928063,VG
-1137928064,1137930143,CA
+1137928064,1137928255,CA
+1137928256,1137928319,BZ
+1137928320,1137930143,CA
1137930144,1137930159,MT
1137930160,1137934335,CA
1137934336,1137946145,US
@@ -18183,8 +18808,7 @@
1138164008,1138164015,FR
1138164016,1138164127,CA
1138164128,1138164151,FR
-1138164152,1138164159,GB
-1138164160,1138164175,CA
+1138164152,1138164175,CA
1138164176,1138164183,SK
1138164184,1138164191,PH
1138164192,1138164199,PK
@@ -18195,8 +18819,7 @@
1138164256,1138164263,LB
1138164264,1138164271,FR
1138164272,1138164279,PH
-1138164280,1138164311,CA
-1138164312,1138164327,GB
+1138164280,1138164327,CA
1138164328,1138164335,PA
1138164336,1138164367,CA
1138164368,1138164375,PH
@@ -18213,14 +18836,11 @@
1138164832,1138164839,PH
1138164840,1138164863,CA
1138164864,1138165247,US
-1138165248,1138165255,GB
-1138165256,1138165311,CA
+1138165248,1138165311,CA
1138165312,1138165319,US
1138165320,1138165431,CA
1138165432,1138165439,LB
-1138165440,1138165463,CA
-1138165464,1138165471,GB
-1138165472,1138165487,CA
+1138165440,1138165487,CA
1138165488,1138165503,SK
1138165504,1138165807,CA
1138165808,1138165815,FR
@@ -18286,7 +18906,8 @@
1138212864,1138216959,CA
1138216960,1138271087,US
1138271088,1138271103,TN
-1138271104,1138417663,US
+1138271104,1138401279,US
+1138409472,1138417663,US
1138417664,1138417695,CA
1138417696,1138417727,DE
1138417728,1138450959,US
@@ -18316,8 +18937,7 @@
1138452016,1138452047,US
1138452048,1138452055,AU
1138452056,1138452063,GB
-1138452064,1138452255,US
-1138452256,1138452263,GB
+1138452064,1138452263,US
1138452264,1138452271,IN
1138452272,1138452287,US
1138452288,1138452295,GR
@@ -18337,7 +18957,9 @@
1138454016,1138454271,RU
1138454272,1138454591,US
1138454592,1138454599,CA
-1138454600,1138499583,US
+1138454600,1138480127,US
+1138480128,1138482687,AU
+1138482688,1138499583,US
1138499584,1138503679,CA
1138503680,1138508031,US
1138508032,1138508095,GB
@@ -18366,35 +18988,23 @@
1138512672,1138512895,US
1138512896,1138512927,ID
1138512928,1138548735,US
-1138548736,1138549260,CA
-1138549261,1138549347,HK
-1138549348,1138549503,CA
-1138549504,1138549631,PL
-1138549632,1138550015,CA
-1138550016,1138552575,US
-1138552576,1138556927,CA
+1138548736,1138556927,CA
1138556928,1138593791,US
1138593792,1138597887,CA
1138597888,1138600447,US
1138600448,1138600703,BE
1138600704,1138615299,US
1138615300,1138615323,IT
-1138615324,1138655241,US
-1138655242,1138655316,CA
-1138655317,1138655328,US
-1138655329,1138655336,CA
-1138655337,1138655374,US
+1138615324,1138655245,US
+1138655246,1138655316,CA
+1138655317,1138655374,US
1138655375,1138655382,CA
-1138655383,1138655422,US
-1138655423,1138655430,RU
-1138655431,1138655446,US
+1138655383,1138655446,US
1138655447,1138655454,CA
1138655455,1138655458,US
1138655459,1138655486,CA
1138655487,1138655503,US
-1138655504,1138655513,MX
-1138655514,1138655519,US
-1138655520,1138655521,MX
+1138655504,1138655521,MX
1138655522,1138655609,US
1138655610,1138655617,MX
1138655618,1138655695,US
@@ -18403,84 +19013,39 @@
1138655716,1138655723,GB
1138655724,1138655841,US
1138655842,1138655849,CN
-1138655850,1138655857,US
-1138655858,1138655865,CN
-1138655866,1138655899,US
+1138655850,1138655899,US
1138655900,1138655911,MX
-1138655912,1138656021,US
-1138656022,1138656029,TW
-1138656030,1138656077,US
+1138655912,1138656077,US
1138656078,1138656093,MX
-1138656094,1138656097,US
-1138656098,1138656113,GB
-1138656114,1138656121,US
-1138656122,1138656129,GB
-1138656130,1138656141,US
+1138656094,1138656141,US
1138656142,1138656173,GB
1138656174,1138656190,US
1138656191,1138656198,CH
1138656199,1138656206,GB
1138656207,1138656222,US
1138656223,1138656230,EG
-1138656231,1138656301,US
-1138656302,1138656309,MO
-1138656310,1138656330,US
-1138656331,1138656338,TR
-1138656339,1138656398,US
-1138656399,1138656406,MO
-1138656407,1138656407,GB
-1138656408,1138656413,US
-1138656414,1138656415,GB
-1138656416,1138656521,US
-1138656522,1138656529,EG
-1138656530,1138656661,US
+1138656231,1138656661,US
1138656662,1138656669,MA
1138656670,1138656745,US
1138656746,1138656753,AE
-1138656754,1138656777,US
-1138656778,1138656793,UY
-1138656794,1138656933,US
-1138656934,1138656941,UY
-1138656942,1138656973,US
-1138656974,1138656981,UY
-1138656982,1138656997,US
-1138656998,1138657005,UY
-1138657006,1138657041,US
-1138657042,1138657056,SA
-1138657057,1138657123,US
+1138656754,1138657123,US
1138657124,1138657131,EG
-1138657132,1138657159,US
-1138657160,1138657173,MO
+1138657132,1138657173,US
1138657174,1138657181,EG
-1138657182,1138657193,US
-1138657194,1138657195,AE
-1138657196,1138657197,US
-1138657198,1138657199,EG
-1138657200,1138657201,AE
-1138657202,1138657205,EG
+1138657182,1138657197,US
+1138657198,1138657205,EG
1138657206,1138657206,US
1138657207,1138657214,EG
1138657215,1138657222,IN
1138657223,1138657235,US
1138657236,1138657244,MA
-1138657245,1138657346,US
-1138657347,1138657354,MO
-1138657355,1138657504,US
+1138657245,1138657504,US
1138657505,1138657520,EG
1138657521,1138657569,US
1138657570,1138657577,UY
-1138657578,1138657597,US
-1138657598,1138657605,UY
-1138657606,1138657671,US
-1138657672,1138657679,UY
-1138657680,1138657681,US
-1138657682,1138657691,UY
-1138657692,1138657707,US
-1138657708,1138657732,UY
-1138657733,1138657748,US
+1138657578,1138657748,US
1138657749,1138657780,GB
-1138657781,1138657790,UY
-1138657791,1138658057,US
+1138657781,1138658057,US
1138658058,1138658123,GB
1138658124,1138658175,US
1138658176,1138658302,GB
@@ -18489,35 +19054,30 @@
1138658497,1138658497,US
1138658498,1138658525,PK
1138658526,1138659081,US
-1138659082,1138659211,ES
-1138659212,1138659369,US
+1138659082,1138659207,ES
+1138659208,1138659369,US
1138659370,1138659401,GB
1138659402,1138659465,US
1138659466,1138659497,GB
1138659498,1138659593,US
1138659594,1138659609,LK
1138659610,1138659642,GB
-1138659643,1138659650,US
-1138659651,1138659660,UY
-1138659661,1138659673,US
+1138659643,1138659673,US
1138659674,1138659681,MA
1138659682,1138659705,US
1138659706,1138659713,CA
-1138659714,1138659721,UY
-1138659722,1138659723,US
+1138659714,1138659723,US
1138659724,1138659731,ID
1138659732,1138659789,US
1138659790,1138659797,ID
-1138659798,1138659805,UY
+1138659798,1138659805,US
1138659806,1138659813,ID
-1138659814,1138659823,UY
+1138659814,1138659823,US
1138659824,1138659831,ID
1138659832,1138659849,US
1138659850,1138659857,MA
1138659858,1138659889,GB
-1138659890,1138659903,US
-1138659904,1138659911,CA
-1138659912,1138659922,US
+1138659890,1138659922,US
1138659923,1138659930,LK
1138659931,1138659983,US
1138659984,1138659999,EG
@@ -18543,9 +19103,7 @@
1138660362,1138660483,EG
1138660484,1138660499,US
1138660500,1138660507,AE
-1138660508,1138660563,US
-1138660564,1138660571,GB
-1138660572,1138660617,US
+1138660508,1138660617,US
1138660618,1138660625,AE
1138660626,1138660633,EG
1138660634,1138660665,US
@@ -18553,13 +19111,11 @@
1138660674,1138660694,US
1138660695,1138660726,GB
1138660727,1138660734,EG
-1138660735,1138660778,US
-1138660779,1138660786,MY
-1138660787,1138660805,US
+1138660735,1138660805,US
1138660806,1138660821,EG
1138660822,1138660873,US
1138660874,1138660881,EG
-1138660882,1138660889,MA
+1138660882,1138660889,US
1138660890,1138660897,EG
1138660898,1138660921,US
1138660922,1138660929,EG
@@ -18576,14 +19132,9 @@
1138661056,1138661063,EG
1138661064,1138661169,US
1138661170,1138661177,LK
-1138661178,1138661185,US
-1138661186,1138661193,UY
-1138661194,1138661201,US
+1138661178,1138661201,US
1138661202,1138661209,MA
-1138661210,1138661217,UY
-1138661218,1138661249,US
-1138661250,1138661257,UY
-1138661258,1138661265,US
+1138661210,1138661265,US
1138661266,1138661281,EG
1138661282,1138661299,US
1138661300,1138661307,GB
@@ -18611,9 +19162,7 @@
1138661914,1138661954,EG
1138661955,1138661985,US
1138661986,1138661993,EG
-1138661994,1138662017,US
-1138662018,1138662025,EG
-1138662026,1138662057,US
+1138661994,1138662057,US
1138662058,1138662107,EG
1138662108,1138662169,US
1138662170,1138662233,EG
@@ -18655,20 +19204,18 @@
1138774016,1138778111,CA
1138778112,1138780159,US
1138780160,1138780191,CA
-1138780192,1138786303,US
+1138780192,1138780271,US
+1138780272,1138780287,CA
+1138780288,1138786303,US
1138786304,1138819071,PR
1138819072,1138851839,CA
1138851840,1138851847,US
1138851848,1138851855,IN
-1138851856,1138865562,US
-1138865563,1138865566,IN
-1138865567,1138865578,US
+1138851856,1138865578,US
1138865579,1138865586,IN
1138865587,1138874252,US
1138874253,1138874264,UY
-1138874265,1138879999,US
-1138880000,1138880511,CA
-1138880512,1138882331,US
+1138874265,1138882331,US
1138882332,1138882339,GB
1138882340,1138882445,US
1138882446,1138882453,GB
@@ -18676,16 +19223,13 @@
1138917376,1138937855,CA
1138937856,1138941951,US
1138941952,1138950143,CA
-1138950144,1139120127,US
-1139120128,1139124223,NZ
-1139124224,1139146751,US
+1138950144,1139146751,US
1139146752,1139154943,GT
1139154944,1139167231,JM
1139167232,1139179519,US
1139179520,1139195903,CA
-1139195904,1139204095,US
-1139212288,1139261439,US
-1139261440,1139269631,CA
+1139195904,1139265535,US
+1139265536,1139269631,CA
1139269632,1142187775,US
1142187776,1142187783,PR
1142187784,1142191847,US
@@ -18704,20 +19248,39 @@
1145188352,1145192447,CA
1145192448,1145249791,US
1145249792,1145257983,CA
-1145257984,1145262079,US
+1145257984,1145259007,US
+1145259008,1145259071,IN
+1145259072,1145259263,US
+1145259264,1145259327,IN
+1145259328,1145260031,US
+1145260032,1145260095,IN
+1145260096,1145261055,US
+1145261056,1145261119,IN
+1145261120,1145261311,US
+1145261312,1145261375,IN
+1145261376,1145262079,US
1145262080,1145266175,CA
1145266176,1145307135,US
1145307136,1145311231,CA
-1145311232,1145376767,US
+1145311232,1145315559,US
+1145315560,1145315567,GB
+1145315568,1145333863,US
+1145333864,1145333871,EG
+1145333872,1145335175,US
+1145335176,1145335183,CN
+1145335184,1145376767,US
1145376768,1145380863,CA
1145380864,1145405439,US
1145405440,1145413631,CA
1145413632,1145421823,US
1145421824,1145430015,CA
-1145430016,1145434111,US
-1145438208,1145475071,US
+1145430016,1145475071,US
1145475072,1145479167,CA
-1145479168,1145491455,US
+1145479168,1145483583,US
+1145483584,1145483591,VG
+1145483592,1145484031,US
+1145484032,1145484063,VG
+1145484064,1145503743,US
1145503744,1145520127,CA
1145520128,1145552895,US
1145552896,1145556991,CA
@@ -18746,9 +19309,7 @@
1151889792,1151889823,MA
1151889824,1151889839,CA
1151889840,1151889847,PH
-1151889848,1151889919,CA
-1151889920,1151889943,GB
-1151889944,1151890007,CA
+1151889848,1151890007,CA
1151890008,1151890015,GB
1151890016,1151890079,CA
1151890080,1151890087,GB
@@ -18758,35 +19319,23 @@
1151890216,1151890223,GB
1151890224,1151892735,CA
1151892736,1151892991,MA
-1151892992,1151897599,CA
-1151897600,1151943679,US
-1151943680,1151943807,GB
-1151943808,1151943871,NL
-1151943872,1151943935,CA
-1151943936,1151943999,DE
+1151892992,1151894783,CA
+1151894784,1151895039,US
+1151895040,1151895295,CA
+1151895296,1151895807,US
+1151895808,1151895919,CA
+1151895920,1151895935,US
+1151895936,1151896079,CA
+1151896080,1151896087,US
+1151896088,1151896127,CA
+1151896128,1151896191,US
+1151896192,1151896319,CA
+1151896320,1151943999,US
1151944000,1151944063,HK
-1151944064,1151944079,CH
-1151944080,1151944095,NO
-1151944096,1151944111,KR
-1151944112,1151944127,US
-1151944128,1151944159,AU
-1151944160,1151944175,FR
-1151944176,1151944575,US
-1151944576,1151944703,ES
-1151944704,1151945727,US
-1151945728,1151945759,RU
+1151944064,1151945759,US
1151945760,1151945791,IE
-1151945792,1151945823,IT
-1151945824,1151945855,AT
-1151945856,1151945887,SE
-1151945888,1151945919,US
-1151945920,1151945935,JP
-1151945936,1151946239,US
-1151946240,1151946751,GB
-1151946752,1151954943,US
-1151959040,1152057343,US
-1152057344,1152061439,CA
-1152061440,1152073727,US
+1151945792,1151954943,US
+1151959040,1152073727,US
1152073728,1152077823,CA
1152077824,1152581631,US
1152581632,1152614399,CA
@@ -18796,14 +19345,22 @@
1154488320,1154488575,A2
1154488576,1156071423,US
1156071424,1156079615,CA
-1156079616,1156259839,US
+1156079616,1156129479,US
+1156129480,1156129487,SG
+1156129488,1156129495,JP
+1156129496,1156129503,US
+1156129504,1156129791,CA
+1156129792,1156129983,US
+1156129984,1156129999,CY
+1156130000,1156130015,US
+1156130016,1156130303,CA
+1156130304,1156131327,US
+1156131328,1156131583,CA
+1156131584,1156259839,US
1156259840,1156265983,CA
-1156265984,1156276223,US
-1156284416,1156296703,US
+1156265984,1156296703,US
1156296704,1156300799,CA
-1156300800,1156335367,US
-1156335368,1156335375,PR
-1156335376,1157670431,US
+1156300800,1157670431,US
1157670432,1157670463,CA
1157670464,1157713663,US
1157713664,1157713791,CA
@@ -19416,7 +19973,13 @@
1159213056,1159217151,CA
1159217152,1159249919,US
1159249920,1159254015,PR
-1159254016,1159266935,US
+1159254016,1159262471,US
+1159262472,1159262475,TZ
+1159262476,1159262479,SA
+1159262480,1159262727,US
+1159262728,1159262731,DE
+1159262732,1159262735,RU
+1159262736,1159266935,US
1159266936,1159266943,PR
1159266944,1159269119,US
1159269120,1159269375,CA
@@ -19440,9 +20003,7 @@
1159293488,1159293503,BR
1159293504,1159300607,US
1159300608,1159300863,SE
-1159300864,1159304223,US
-1159304224,1159304255,CA
-1159304256,1159313919,US
+1159300864,1159313919,US
1159313920,1159313927,MX
1159313928,1159314079,US
1159314080,1159314087,TR
@@ -19464,9 +20025,7 @@
1159480440,1159480447,CA
1159480448,1159481167,US
1159481168,1159481183,VG
-1159481184,1159481855,US
-1159481856,1159481887,EG
-1159481888,1159482423,US
+1159481184,1159482423,US
1159482424,1159482431,AN
1159482432,1159512063,US
1159512064,1159512159,CA
@@ -19478,14 +20037,14 @@
1159513024,1159513343,CA
1159513344,1159513375,US
1159513376,1159513439,CA
-1159513440,1159513471,US
-1159513472,1159513519,CA
+1159513440,1159513487,US
+1159513488,1159513519,CA
1159513520,1159513535,US
1159513536,1159513567,CA
1159513568,1159513599,US
1159513600,1159514879,CA
-1159514880,1159515391,US
-1159515392,1159515647,CA
+1159514880,1159515135,US
+1159515136,1159515647,CA
1159515648,1159515711,US
1159515712,1159515887,CA
1159515888,1159515895,US
@@ -19497,32 +20056,34 @@
1159517120,1159517151,CA
1159517152,1159517183,US
1159517184,1159517327,CA
-1159517328,1159517343,US
-1159517344,1159517359,CA
-1159517360,1159517439,US
-1159517440,1159517599,CA
+1159517328,1159517567,US
+1159517568,1159517599,CA
1159517600,1159517631,US
-1159517632,1159517679,CA
-1159517680,1159517695,US
+1159517632,1159517663,CA
+1159517664,1159517695,US
1159517696,1159517975,CA
1159517976,1159517991,US
-1159517992,1159518007,CA
-1159518008,1159518015,US
+1159517992,1159517999,CA
+1159518000,1159518015,US
1159518016,1159518175,CA
1159518176,1159518199,US
1159518200,1159518207,CA
1159518208,1159519743,US
1159519744,1159520767,CA
1159520768,1159520799,US
-1159520800,1159521023,CA
-1159521024,1159521087,US
+1159520800,1159520959,CA
+1159520960,1159520975,US
+1159520976,1159521007,CA
+1159521008,1159521087,US
1159521088,1159521199,CA
1159521200,1159521215,US
1159521216,1159521823,CA
1159521824,1159521855,US
1159521856,1159522031,CA
1159522032,1159522047,US
-1159522048,1159522095,CA
+1159522048,1159522063,CA
+1159522064,1159522071,US
+1159522072,1159522095,CA
1159522096,1159522111,US
1159522112,1159522143,CA
1159522144,1159522167,US
@@ -19535,9 +20096,7 @@
1159522304,1159523327,CA
1159523328,1159523583,US
1159523584,1159524351,CA
-1159524352,1159525071,US
-1159525072,1159525087,CA
-1159525088,1159525375,US
+1159524352,1159525375,US
1159525376,1159526399,CA
1159526400,1159527935,US
1159527936,1159528191,CA
@@ -19558,17 +20117,13 @@
1159657072,1159657087,NZ
1159657088,1159659063,US
1159659064,1159659079,IN
-1159659080,1159667967,US
-1159667968,1159668991,AU
-1159668992,1159669247,US
-1159669248,1159669759,AU
-1159669760,1159700479,US
+1159659080,1159700479,US
1159700480,1159725055,CA
1159725056,1159988735,US
1159988736,1159988991,MX
-1159988992,1159990783,US
-1159990784,1159991039,MX
-1159991040,1159995935,US
+1159988992,1159995647,US
+1159995648,1159995655,AU
+1159995656,1159995935,US
1159995936,1159995951,CA
1159995952,1159996063,US
1159996064,1159996079,GB
@@ -19643,50 +20198,9 @@
1160017160,1160019967,CA
1160019968,1160364031,US
1160364032,1160368127,CA
-1160368128,1160392751,US
-1160392752,1160392799,CA
-1160392800,1160392815,US
-1160392816,1160392939,CA
-1160392940,1160392959,US
-1160392960,1160393031,CA
-1160393032,1160393039,US
-1160393040,1160393055,CA
-1160393056,1160393087,US
-1160393088,1160393151,CA
-1160393152,1160393215,US
-1160393216,1160393279,CA
-1160393280,1160393295,HK
-1160393296,1160393311,CA
-1160393312,1160393327,US
-1160393328,1160393343,CA
-1160393344,1160393359,US
-1160393360,1160393535,CA
-1160393536,1160393599,US
-1160393600,1160393791,CA
-1160393792,1160393799,HK
-1160393800,1160393807,US
-1160393808,1160393871,CA
-1160393872,1160393879,GB
-1160393880,1160393951,CA
-1160393952,1160393959,HK
-1160393960,1160393983,CA
-1160393984,1160394239,US
-1160394240,1160394295,CA
-1160394296,1160394303,US
-1160394304,1160394495,CA
-1160394496,1160394751,US
-1160394752,1160395007,CA
-1160395008,1160395263,US
-1160395264,1160395391,CA
-1160395392,1160395775,US
-1160395776,1160396031,CA
-1160396032,1160396287,US
-1160396288,1160396543,CA
-1160396544,1160397007,US
+1160368128,1160397007,US
1160397008,1160397023,GB
-1160397024,1160405503,US
-1160405504,1160405615,DO
-1160405616,1160405631,US
+1160397024,1160405631,US
1160405632,1160406015,DO
1160406016,1160406271,US
1160406272,1160406303,VE
@@ -19835,8 +20349,8 @@
1160689304,1160689311,CA
1160689312,1160689319,IN
1160689320,1160689367,CA
-1160689368,1160689383,US
-1160689384,1160689419,CA
+1160689368,1160689375,US
+1160689376,1160689419,CA
1160689420,1160689447,US
1160689448,1160689531,CA
1160689532,1160689571,US
@@ -19916,15 +20430,7 @@
1160925184,1160941535,US
1160941536,1160941567,CA
1160941568,1160945663,US
-1160947712,1160948991,US
-1160948992,1160949023,CA
-1160949024,1160949087,US
-1160949120,1160949151,US
-1160949168,1160949183,JP
-1160949200,1160949215,US
-1160949248,1160949535,US
-1160949632,1160949759,CY
-1160949760,1160973439,US
+1160953856,1160973439,US
1160973440,1160973503,MX
1160973504,1160973567,US
1160973568,1160973599,CA
@@ -19946,7 +20452,9 @@
1161293824,1161297919,CA
1161297920,1161298303,US
1161298304,1161298311,IL
-1161298312,1161304591,US
+1161298312,1161300511,US
+1161300512,1161300519,CA
+1161300520,1161304591,US
1161304592,1161304599,AU
1161304600,1161311743,US
1161311744,1161311759,KN
@@ -19994,7 +20502,9 @@
1161428224,1161428991,KN
1161428992,1161453567,US
1161453568,1161457663,CA
-1161457664,1161576447,US
+1161457664,1161501443,US
+1161501444,1161501470,TR
+1161501471,1161576447,US
1161576448,1161580543,CA
1161580544,1161586687,US
1161586688,1161586943,PA
@@ -20003,16 +20513,16 @@
1161625600,1161627695,US
1161627696,1161627703,AR
1161627704,1161627727,US
-1161627728,1161627735,AR
-1161627736,1161627759,US
+1161627728,1161627743,AR
+1161627744,1161627759,US
1161627760,1161627775,GB
-1161627776,1161627839,US
-1161627840,1161627863,AR
+1161627776,1161627807,US
+1161627808,1161627863,AR
1161627864,1161628479,US
1161628480,1161628487,GB
1161628488,1161628607,US
1161628608,1161628639,AR
-1161628640,1161628647,CH
+1161628640,1161628647,IN
1161628648,1161628655,CA
1161628656,1161628663,US
1161628664,1161628671,AR
@@ -20025,9 +20535,7 @@
1161629520,1161629527,GB
1161629528,1161629535,MY
1161629536,1161629551,GB
-1161629552,1161629567,US
-1161629568,1161629575,AU
-1161629576,1161629695,US
+1161629552,1161629695,US
1161629696,1161629951,PL
1161629952,1161630335,US
1161630336,1161630343,PL
@@ -20060,7 +20568,9 @@
1161631040,1161631047,GB
1161631048,1161631079,US
1161631080,1161631087,AR
-1161631088,1161631159,US
+1161631088,1161631127,US
+1161631128,1161631135,BG
+1161631136,1161631159,US
1161631160,1161631167,CA
1161631168,1161631183,US
1161631184,1161631199,GB
@@ -20076,8 +20586,10 @@
1161631520,1161631535,US
1161631536,1161631543,AR
1161631544,1161631551,BR
-1161631552,1161631631,US
-1161631632,1161631639,CH
+1161631552,1161631591,US
+1161631592,1161631599,BR
+1161631600,1161631631,US
+1161631632,1161631639,BR
1161631640,1161631647,US
1161631648,1161631655,AU
1161631656,1161631663,AR
@@ -20094,12 +20606,14 @@
1161632664,1161632719,US
1161632720,1161632735,GB
1161632736,1161633023,US
-1161633024,1161633055,IL
+1161633024,1161633055,CA
1161633056,1161633215,US
1161633216,1161633231,EE
1161633232,1161634063,US
1161634064,1161634071,RO
-1161634072,1161634199,US
+1161634072,1161634127,US
+1161634128,1161634135,AR
+1161634136,1161634199,US
1161634200,1161634207,NZ
1161634208,1161634239,AR
1161634240,1161634247,GB
@@ -20115,7 +20629,8 @@
1161634976,1161635007,PL
1161635008,1161635855,US
1161635856,1161635871,BE
-1161635872,1161636095,US
+1161635872,1161636063,US
+1161636064,1161636095,IL
1161636096,1161636127,GB
1161636128,1161636159,US
1161636160,1161636223,IL
@@ -20170,9 +20685,7 @@
1161639832,1161639839,AR
1161639840,1161639887,US
1161639888,1161639895,AT
-1161639896,1161639935,US
-1161639936,1161639943,CH
-1161639944,1161639951,US
+1161639896,1161639951,US
1161639952,1161639959,IL
1161639960,1161639967,GB
1161639968,1161639999,US
@@ -20201,9 +20714,7 @@
1161644704,1161644743,GB
1161644744,1161644751,AR
1161644752,1161644767,PL
-1161644768,1161645839,US
-1161645840,1161645855,PL
-1161645856,1161645887,US
+1161644768,1161645887,US
1161645888,1161645903,GB
1161645904,1161645911,US
1161645912,1161645919,GB
@@ -20234,12 +20745,17 @@
1161650848,1161650863,AR
1161650864,1161650927,US
1161650928,1161650935,HR
-1161650936,1161651103,US
+1161650936,1161651055,US
+1161651056,1161651071,PL
+1161651072,1161651103,US
1161651104,1161651135,GB
1161651136,1161651487,US
1161651488,1161651503,GB
-1161651504,1161651935,US
-1161651936,1161651967,AR
+1161651504,1161651535,US
+1161651536,1161651543,PL
+1161651544,1161651551,US
+1161651552,1161651559,CA
+1161651560,1161651967,US
1161651968,1161651975,CH
1161651976,1161652007,US
1161652008,1161652015,GB
@@ -20247,7 +20763,9 @@
1161652096,1161652103,CY
1161652104,1161652127,US
1161652128,1161652135,AR
-1161652136,1161653791,US
+1161652136,1161653023,US
+1161653024,1161653055,AR
+1161653056,1161653791,US
1161653792,1161653799,SI
1161653800,1161653831,US
1161653832,1161653839,HR
@@ -20283,8 +20801,7 @@
1161836032,1161836063,CA
1161836064,1161836159,US
1161836160,1161836191,BR
-1161836192,1161836223,MX
-1161836224,1161836255,US
+1161836192,1161836255,US
1161836256,1161836287,UA
1161836288,1161836319,RS
1161836320,1161836383,US
@@ -20294,9 +20811,7 @@
1161836480,1161836511,UA
1161836512,1161837567,US
1161837568,1161837823,JP
-1161837824,1161838351,US
-1161838352,1161838367,GB
-1161838368,1161838548,US
+1161837824,1161838548,US
1161838549,1161838560,RU
1161838561,1161841101,US
1161841102,1161841112,DE
@@ -20359,8 +20874,8 @@
1162059776,1162067967,CA
1162067968,1162215423,US
1162215424,1162280959,CA
-1162280960,1162296007,US
-1162296008,1162296023,CA
+1162280960,1162296015,US
+1162296016,1162296023,CA
1162296024,1162296407,US
1162296408,1162296415,CA
1162296416,1162297343,US
@@ -20422,7 +20937,7 @@
1162811648,1162812159,US
1162812160,1162812415,DO
1162812416,1162813439,BS
-1162813440,1162821631,CO
+1162813440,1162821631,US
1162821632,1162823679,PR
1162823680,1162825727,GT
1162825728,1162827775,US
@@ -20433,12 +20948,10 @@
1162836736,1162836991,US
1162836992,1162838015,BS
1162838016,1162870783,US
-1162870784,1162887167,BB
-1162903552,1162923391,US
-1162923392,1162923519,BE
-1162923520,1162924031,US
-1162924032,1162924287,AU
-1162924288,1162925983,US
+1162870784,1162871295,BB
+1162871296,1162874367,LC
+1162874368,1162887167,BB
+1162903552,1162925983,US
1162925984,1162926015,AU
1162926016,1162926071,US
1162926072,1162926079,AU
@@ -20579,23 +21092,19 @@
1163527776,1163527791,US
1163527792,1163528191,CA
1163528192,1163528703,US
-1163528704,1163528959,CA
-1163528960,1163530239,US
-1163530240,1163530527,CA
-1163530528,1163530543,US
-1163530544,1163530639,CA
+1163528704,1163529215,CA
+1163529216,1163530239,US
+1163530240,1163530399,CA
+1163530400,1163530431,US
+1163530432,1163530639,CA
1163530640,1163530655,US
-1163530656,1163530663,CA
-1163530664,1163530671,US
-1163530672,1163530783,CA
-1163530784,1163530815,US
-1163530816,1163530839,CA
+1163530656,1163530839,CA
1163530840,1163530847,RS
1163530848,1163530887,CA
1163530888,1163530895,US
1163530896,1163530903,CA
-1163530904,1163530943,US
-1163530944,1163530959,CA
+1163530904,1163530935,US
+1163530936,1163530959,CA
1163530960,1163530967,US
1163530968,1163533023,CA
1163533024,1163533055,US
@@ -20737,8 +21246,8 @@
1163551664,1163551679,US
1163551680,1163551727,CA
1163551728,1163551743,US
-1163551744,1163552255,CA
-1163552256,1163552519,US
+1163551744,1163552511,CA
+1163552512,1163552519,US
1163552520,1163552527,CA
1163552528,1163552535,US
1163552536,1163552575,CA
@@ -20760,7 +21269,9 @@
1163554656,1163554703,CA
1163554704,1163554751,US
1163554752,1163554815,CA
-1163554816,1163556095,US
+1163554816,1163555071,US
+1163555072,1163555327,CA
+1163555328,1163556095,US
1163556096,1163556607,CA
1163556608,1163557727,US
1163557728,1163557759,CA
@@ -20771,9 +21282,7 @@
1163560448,1163560959,US
1163560960,1163561727,CA
1163561728,1163561983,FI
-1163561984,1163561999,CA
-1163562000,1163562007,US
-1163562008,1163562063,CA
+1163561984,1163562063,CA
1163562064,1163562079,US
1163562080,1163562119,CA
1163562120,1163562127,SG
@@ -20789,9 +21298,7 @@
1163568128,1163570431,US
1163570432,1163570495,CA
1163570496,1163571199,US
-1163571200,1163571711,CA
-1163571712,1163571967,US
-1163571968,1163571983,CA
+1163571200,1163571983,CA
1163571984,1163571999,US
1163572000,1163572031,CA
1163572032,1163572063,BE
@@ -20799,11 +21306,9 @@
1163572080,1163572087,US
1163572088,1163572175,CA
1163572176,1163572183,US
-1163572184,1163572223,CA
-1163572224,1163572479,US
-1163572480,1163572671,CA
-1163572672,1163572679,US
-1163572680,1163573071,CA
+1163572184,1163572687,CA
+1163572688,1163572703,US
+1163572704,1163573071,CA
1163573072,1163573087,US
1163573088,1163573199,CA
1163573200,1163573215,US
@@ -20812,8 +21317,8 @@
1163573440,1163573503,EG
1163573504,1163575295,US
1163575296,1163576703,CA
-1163576704,1163576831,US
-1163576832,1163576959,CA
+1163576704,1163576799,US
+1163576800,1163576959,CA
1163576960,1163576991,US
1163576992,1163577087,CA
1163577088,1163577151,US
@@ -20891,13 +21396,15 @@
1163876472,1163876479,PA
1163876480,1163878399,US
1163878400,1163878407,CN
-1163878408,1167320679,US
-1167320680,1167320687,IN
-1167320688,1167321959,US
+1163878408,1167321959,US
1167321960,1167321967,GB
1167321968,1167322695,US
1167322696,1167322703,IN
-1167322704,1167325935,US
+1167322704,1167323799,US
+1167323800,1167323807,IN
+1167323808,1167323823,US
+1167323824,1167323831,IN
+1167323832,1167325935,US
1167325936,1167325951,CA
1167325952,1167326207,US
1167326208,1167326271,IN
@@ -20908,37 +21415,47 @@
1167326400,1167326431,IN
1167326432,1167326439,US
1167326440,1167326447,IN
-1167326448,1167326463,US
-1167326464,1167326719,IN
-1167326720,1167693199,US
+1167326448,1167326983,US
+1167326984,1167326991,IN
+1167326992,1167327111,US
+1167327112,1167327119,IN
+1167327120,1167327207,US
+1167327208,1167327215,IN
+1167327216,1167693199,US
1167693200,1167693215,UA
1167693216,1167851519,US
1167851520,1168113663,CA
-1168113664,1168211967,US
+1168113664,1168138239,US
+1168138240,1168146431,JM
+1168146432,1168211967,US
1168211968,1168220159,CA
-1168228352,1168393215,US
-1168393216,1168394151,CA
-1168394152,1168394175,US
-1168394176,1168394271,CA
-1168394272,1168394287,US
-1168394288,1168394367,CA
-1168394368,1168394399,US
-1168394400,1168394407,CA
-1168394408,1168394415,US
-1168394416,1168394423,CA
+1168220160,1168318719,US
+1168318720,1168318975,CA
+1168318976,1168321535,US
+1168321536,1168321791,CA
+1168321792,1168393215,US
+1168393216,1168394271,CA
+1168394272,1168394279,US
+1168394280,1168394375,CA
+1168394376,1168394383,US
+1168394384,1168394423,CA
1168394424,1168394463,US
1168394464,1168394471,CA
1168394472,1168394479,US
1168394480,1168394495,CA
1168394496,1168394511,US
1168394512,1168394527,CA
-1168394528,1168420863,US
+1168394528,1168394559,US
+1168394560,1168394687,CA
+1168394688,1168420863,US
1168420864,1168424959,CA
1168424960,1168474111,US
1168474112,1168506879,CA
1168508928,1168510975,US
1168510976,1168515071,CA
-1168515072,1168670719,US
+1168515072,1168535551,US
+1168535552,1168539647,CA
+1168539648,1168670719,US
1168670720,1168687103,CA
1168687104,1168859135,US
1168859136,1168863231,CA
@@ -20964,13 +21481,11 @@
1168952888,1168952895,CA
1168952896,1168952959,US
1168952960,1168953343,CA
-1168953344,1168954015,US
-1168954016,1168954047,EG
-1168954048,1168954075,US
+1168953344,1168954075,US
1168954076,1168954079,CA
-1168954080,1168955647,US
-1168955648,1168956415,CA
-1168956416,1168957439,US
+1168954080,1168955903,US
+1168955904,1168956159,CA
+1168956160,1168957439,US
1168957440,1168958047,CA
1168958048,1168958055,DE
1168958056,1168958063,CA
@@ -20988,17 +21503,15 @@
1168958464,1168958479,CA
1168958480,1168958495,US
1168958496,1168958527,FR
-1168958528,1168958655,US
-1168958656,1168958687,EG
-1168958688,1168958719,US
-1168958720,1168958975,CA
-1168958976,1168960543,US
+1168958528,1168960543,US
1168960544,1168960591,CA
1168960592,1168960607,US
1168960608,1168960623,CA
1168960624,1168960639,US
1168960640,1168960767,CA
-1168960768,1168960863,US
+1168960768,1168960799,US
+1168960800,1168960831,CA
+1168960832,1168960863,US
1168960864,1168960887,CA
1168960888,1168960895,US
1168960896,1168961887,CA
@@ -21014,7 +21527,36 @@
1168973824,1168982015,CA
1168982016,1169051903,US
1169051904,1169051911,SG
-1169051912,1169182975,US
+1169051912,1169057039,US
+1169057040,1169057055,BR
+1169057056,1169057071,US
+1169057072,1169057079,AR
+1169057080,1169057087,US
+1169057088,1169057119,BR
+1169057120,1169057127,US
+1169057128,1169057135,BR
+1169057136,1169057143,US
+1169057144,1169057151,BR
+1169057152,1169057215,US
+1169057216,1169057223,BR
+1169057224,1169057231,US
+1169057232,1169057247,BR
+1169057248,1169057263,US
+1169057264,1169057279,BR
+1169057280,1169092639,US
+1169092640,1169092671,GB
+1169092672,1169093503,US
+1169093504,1169093567,DE
+1169093568,1169094713,US
+1169094714,1169094726,CA
+1169094727,1169094755,US
+1169094756,1169094763,AU
+1169094764,1169094771,IN
+1169094772,1169094925,US
+1169094926,1169094933,IN
+1169094934,1169095017,US
+1169095018,1169095027,IN
+1169095028,1169182975,US
1169182976,1169183487,CA
1169183488,1169184767,US
1169184768,1169185023,CA
@@ -21023,7 +21565,18 @@
1169186048,1169186303,SG
1169186304,1169203199,US
1169203200,1169211391,CA
-1169211392,1170472959,US
+1169211392,1170448383,US
+1170456576,1170456959,US
+1170456960,1170456975,CR
+1170456976,1170456991,US
+1170456992,1170457007,PR
+1170457008,1170458063,US
+1170458064,1170458079,DE
+1170458080,1170461183,US
+1170461184,1170461439,CO
+1170461440,1170461695,US
+1170461696,1170462719,IL
+1170462720,1170472959,US
1170472960,1170481151,CA
1170481152,1170489343,US
1170489344,1170497535,CA
@@ -21081,16 +21634,18 @@
1176620784,1176620967,CA
1176620968,1176620975,US
1176620976,1176620991,CA
-1176620992,1176621055,US
-1176621056,1176622079,CA
-1176622080,1176623103,US
-1176623104,1176623359,CA
+1176620992,1176620999,US
+1176621000,1176621023,CA
+1176621024,1176621055,US
+1176621056,1176623359,CA
1176623360,1176623487,US
-1176623488,1176623583,CA
-1176623584,1176623599,US
-1176623600,1176623615,CA
+1176623488,1176623567,CA
+1176623568,1176623583,US
+1176623584,1176623615,CA
1176623616,1176623871,US
-1176623872,1176629303,CA
+1176623872,1176629287,CA
+1176629288,1176629295,US
+1176629296,1176629303,CA
1176629304,1176629311,US
1176629312,1176629343,CA
1176629344,1176629375,US
@@ -21101,12 +21656,11 @@
1176629472,1176629503,US
1176629504,1176629519,CA
1176629520,1176629535,NZ
-1176629536,1176629695,CA
-1176629696,1176629727,US
+1176629536,1176629631,CA
+1176629632,1176629727,US
1176629728,1176631295,CA
-1176631296,1176631807,US
-1176631808,1176632063,CR
-1176632064,1176662015,US
+1176631296,1176631551,NL
+1176631552,1176662015,US
1176662016,1176666111,CA
1176666112,1176682527,US
1176682528,1176682535,JM
@@ -21130,11 +21684,15 @@
1176731648,1176735743,PR
1176735744,1176739839,A2
1176739840,1176743935,CA
-1176748032,1176752127,US
+1176743936,1176752127,US
1176752128,1176756223,CA
1176756224,1176764415,US
1176764416,1176768511,PM
-1176768512,1176776703,US
+1176768512,1176770751,US
+1176770752,1176770783,AE
+1176770784,1176771895,US
+1176771896,1176771903,AE
+1176771904,1176776703,US
1176776704,1176780799,CA
1176780800,1176895487,US
1176895488,1176896519,CA
@@ -21160,11 +21718,11 @@
1177053696,1177053951,GB
1177053952,1177059327,US
1177059328,1177061375,CA
-1177061376,1177063423,US
-1177063424,1177067519,CA
-1177067520,1177071615,US
-1177071616,1177074687,CA
-1177074688,1177164255,US
+1177061376,1177062399,US
+1177062400,1177074943,CA
+1177074944,1177075199,US
+1177075200,1177075455,CA
+1177075456,1177164255,US
1177164256,1177164263,CA
1177164264,1177164415,US
1177164416,1177164479,CA
@@ -21174,11 +21732,7 @@
1177164928,1177164943,CA
1177164944,1177165311,US
1177165312,1177165823,CA
-1177165824,1177168127,US
-1177168128,1177168143,FR
-1177168144,1177169687,US
-1177169688,1177169695,GB
-1177169696,1177175199,US
+1177165824,1177175199,US
1177175200,1177175231,CZ
1177175232,1177182527,US
1177182528,1177182591,CA
@@ -21581,29 +22135,55 @@
1208333568,1208333823,GB
1208333824,1208337919,US
1208337920,1208338175,A2
-1208338176,1208518143,US
+1208338176,1208516607,US
+1208516608,1208516623,MX
+1208516624,1208516639,US
+1208516640,1208516671,CN
+1208516672,1208516735,TR
+1208516736,1208516799,ID
+1208516800,1208516855,US
+1208516856,1208516859,CN
+1208516860,1208517001,US
+1208517002,1208517002,CN
+1208517003,1208517009,US
+1208517010,1208517011,CN
+1208517012,1208517017,US
+1208517018,1208517018,GB
+1208517019,1208517019,US
+1208517020,1208517020,FR
+1208517021,1208518143,US
1208518144,1208518207,MY
-1208518208,1208519551,US
+1208518208,1208518263,US
+1208518264,1208518264,GB
+1208518265,1208518271,US
+1208518272,1208518287,GB
+1208518288,1208518291,US
+1208518292,1208518295,CN
+1208518296,1208519167,US
+1208519168,1208519423,CN
+1208519424,1208519551,US
1208519552,1208519679,TR
-1208519680,1208519935,CA
-1208519936,1208521983,US
-1208521984,1208522239,CA
-1208522240,1208523775,US
+1208519680,1208523775,US
1208523776,1208523903,GB
1208523904,1208523991,US
1208523992,1208523995,TR
-1208523996,1208524159,US
-1208524160,1208524287,TR
-1208524288,1208524563,US
-1208524564,1208524567,IT
-1208524568,1208525823,US
+1208523996,1208524063,US
+1208524064,1208524079,CN
+1208524080,1208524159,US
+1208524160,1208524223,ID
+1208524224,1208524287,US
+1208524288,1208524351,PK
+1208524352,1208524415,CN
+1208524416,1208525823,US
1208525824,1208526079,CA
1208526080,1208527615,US
1208527616,1208527871,CA
1208527872,1208528127,VN
1208528128,1208528895,US
1208528896,1208529151,CA
-1208529152,1208531967,US
+1208529152,1208529919,US
+1208529920,1208530175,CN
+1208530176,1208531967,US
1208531968,1208532223,CA
1208532224,1208586364,US
1208586365,1208586372,MA
@@ -21659,8 +22239,7 @@
1208587419,1208587426,TR
1208587427,1208587427,US
1208587428,1208587443,GB
-1208587444,1208587457,TW
-1208587458,1208587479,US
+1208587444,1208587479,US
1208587480,1208587487,LK
1208587488,1208587488,US
1208587489,1208587504,GB
@@ -21679,9 +22258,7 @@
1208587738,1208587759,CN
1208587760,1208587873,US
1208587874,1208587881,PK
-1208587882,1208587909,US
-1208587910,1208587943,UY
-1208587944,1208587944,US
+1208587882,1208587944,US
1208587945,1208587976,GB
1208587977,1208588071,US
1208588072,1208588079,RU
@@ -21693,11 +22270,7 @@
1208588212,1208588219,CA
1208588220,1208588427,US
1208588428,1208588435,MO
-1208588436,1208588437,US
-1208588438,1208588445,PK
-1208588446,1208588451,US
-1208588452,1208588455,EG
-1208588456,1208588463,US
+1208588436,1208588463,US
1208588464,1208588476,AU
1208588477,1208588591,US
1208588592,1208588599,IN
@@ -21705,19 +22278,13 @@
1208588729,1208588760,GB
1208588761,1208588771,US
1208588772,1208588779,GB
-1208588780,1208588819,US
-1208588820,1208588839,PK
-1208588840,1208588941,US
-1208588942,1208588949,MO
-1208588950,1208588953,US
+1208588780,1208588953,US
1208588954,1208588961,TR
1208588962,1208588972,US
1208588973,1208588985,GB
1208588986,1208588989,US
1208588990,1208589000,GB
-1208589001,1208589011,US
-1208589012,1208589021,MO
-1208589022,1208589065,US
+1208589001,1208589065,US
1208589066,1208589073,CA
1208589074,1208589082,GB
1208589083,1208589156,US
@@ -21740,16 +22307,12 @@
1208589971,1208590002,GB
1208590003,1208590004,US
1208590005,1208590014,GB
-1208590015,1208590045,US
-1208590046,1208590053,SA
-1208590054,1208590061,US
+1208590015,1208590061,US
1208590062,1208590071,CN
1208590072,1208590091,US
1208590092,1208590108,GB
1208590109,1208590115,US
-1208590116,1208590119,EG
-1208590120,1208590120,US
-1208590121,1208590123,EG
+1208590116,1208590123,EG
1208590124,1208590140,US
1208590141,1208590154,CA
1208590155,1208590157,US
@@ -21763,33 +22326,22 @@
1208590266,1208590335,US
1208590336,1208598527,CA
1208598528,1208647679,US
-1208647680,1208656159,CA
-1208656160,1208656191,US
-1208656192,1208656223,CA
-1208656224,1208656255,US
-1208656256,1208656319,CA
+1208647680,1208656319,CA
1208656320,1208656351,US
-1208656352,1208656383,CA
-1208656384,1208656511,ID
+1208656352,1208656511,CA
1208656512,1208656543,US
1208656544,1208656575,CA
1208656576,1208656583,DO
1208656584,1208656591,PA
-1208656592,1208656599,RS
-1208656600,1208656607,UA
-1208656608,1208656639,US
+1208656592,1208656639,CA
1208656640,1208656703,MY
-1208656704,1208656711,UA
-1208656712,1208656735,CA
-1208656736,1208656767,US
+1208656704,1208656767,CA
1208656768,1208656895,MY
1208656896,1208656903,CA
1208656904,1208656911,LB
1208656912,1208657087,CA
1208657088,1208657103,MA
-1208657104,1208657111,CA
-1208657112,1208657119,MA
-1208657120,1208657139,CA
+1208657104,1208657139,CA
1208657140,1208657143,SE
1208657144,1208657415,CA
1208657416,1208657423,CH
@@ -21804,24 +22356,18 @@
1208657720,1208657727,CH
1208657728,1208657775,CA
1208657776,1208657783,PA
-1208657784,1208657823,CA
-1208657824,1208657831,DO
-1208657832,1208657855,CA
+1208657784,1208657855,CA
1208657856,1208657871,PA
1208657872,1208657919,CA
1208657920,1208657975,MA
1208657976,1208657983,CA
1208657984,1208657991,CN
1208657992,1208658015,MA
-1208658016,1208658023,CA
-1208658024,1208658031,DO
+1208658016,1208658031,CA
1208658032,1208658039,MA
-1208658040,1208658047,CA
-1208658048,1208658079,US
-1208658080,1208658103,CA
+1208658040,1208658103,CA
1208658104,1208658111,FR
-1208658112,1208658119,DO
-1208658120,1208658127,CA
+1208658112,1208658127,CA
1208658128,1208658143,MA
1208658144,1208658159,CA
1208658160,1208658167,MA
@@ -21829,29 +22375,23 @@
1208658176,1208658199,MA
1208658200,1208658223,CA
1208658224,1208658239,MA
-1208658240,1208658247,CY
-1208658248,1208658263,CA
+1208658240,1208658263,CA
1208658264,1208658271,KE
1208658272,1208658279,IL
1208658280,1208658303,CA
1208658304,1208658335,US
1208658336,1208658343,KE
-1208658344,1208658351,CA
-1208658352,1208658367,US
-1208658368,1208658431,CA
-1208658432,1208658767,US
+1208658344,1208658431,CA
+1208658432,1208658687,US
+1208658688,1208658767,CA
1208658768,1208658775,MA
-1208658776,1208658783,UA
-1208658784,1208658799,CA
+1208658776,1208658799,CA
1208658800,1208658807,KE
-1208658808,1208658815,RS
-1208658816,1208658847,CA
+1208658808,1208658847,CA
1208658848,1208658855,MA
1208658856,1208658879,CA
1208658880,1208658887,DO
-1208658888,1208658895,GB
-1208658896,1208659103,CA
-1208659104,1208659135,US
+1208658888,1208659135,CA
1208659136,1208659151,CN
1208659152,1208659167,CA
1208659168,1208659199,AE
@@ -21870,9 +22410,7 @@
1208659744,1208659775,ID
1208659776,1208659791,CA
1208659792,1208659799,US
-1208659800,1208659815,CA
-1208659816,1208659823,UA
-1208659824,1208659831,CA
+1208659800,1208659831,CA
1208659832,1208659839,ID
1208659840,1208659903,PK
1208659904,1208721407,US
@@ -21900,15 +22438,17 @@
1208832776,1208832783,CA
1208832784,1208833023,US
1208833024,1208833031,PR
-1208833032,1208852479,US
+1208833032,1208833439,US
+1208833440,1208833471,GB
+1208833472,1208852479,US
1208852480,1208860671,CA
1208860672,1208918015,US
1208918016,1208920007,CA
1208920008,1208920015,US
1208920016,1208922111,CA
1208922112,1208954879,US
-1208954880,1208958463,CA
-1208958464,1208975359,US
+1208954880,1208958975,CA
+1208958976,1208975359,US
1208975360,1208980191,CA
1208980192,1208980223,US
1208980224,1208980503,CA
@@ -21920,15 +22460,9 @@
1208995456,1208995471,CA
1208995472,1209004863,US
1209004864,1209004927,GB
-1209004928,1209189308,US
-1209189309,1209189310,ES
-1209189311,1209189342,US
-1209189343,1209189374,ES
-1209189375,1209189379,US
+1209004928,1209189379,US
1209189380,1209189395,MX
-1209189396,1209189631,US
-1209189632,1209189887,MX
-1209189888,1209190147,US
+1209189396,1209190147,US
1209190148,1209190163,MX
1209190164,1209190167,US
1209190168,1209190195,GR
@@ -21936,63 +22470,144 @@
1209190852,1209190883,CA
1209190884,1209190911,US
1209190912,1209191167,MX
-1209191168,1209270759,US
-1209270760,1209270767,CA
-1209270768,1209270859,US
+1209191168,1209270543,US
+1209270544,1209270547,CN
+1209270548,1209270579,US
+1209270580,1209270583,ID
+1209270584,1209270759,US
+1209270760,1209270763,CA
+1209270764,1209270859,US
1209270860,1209270863,CA
-1209270864,1209270919,US
-1209270920,1209270923,CA
-1209270924,1209271067,US
+1209270864,1209271067,US
1209271068,1209271071,VN
-1209271072,1209271095,US
-1209271096,1209271099,CA
-1209271100,1209271111,US
+1209271072,1209271111,US
1209271112,1209271115,CA
-1209271116,1209271463,US
+1209271116,1209271207,US
+1209271208,1209271211,FR
+1209271212,1209271435,US
+1209271436,1209271439,CN
+1209271440,1209271463,US
1209271464,1209271467,IN
-1209271468,1209271495,US
-1209271496,1209271499,CA
-1209271500,1209271503,US
-1209271504,1209271507,TR
-1209271508,1209271527,US
+1209271468,1209271491,US
+1209271492,1209271499,CA
+1209271500,1209271503,MX
+1209271504,1209271527,US
1209271528,1209271531,CA
-1209271532,1209271691,US
+1209271532,1209271579,US
+1209271580,1209271583,BD
+1209271584,1209271691,US
1209271692,1209271695,CA
-1209271696,1209271827,US
-1209271828,1209271831,CA
-1209271832,1209271871,US
+1209271696,1209271791,US
+1209271792,1209271795,GB
+1209271796,1209271871,US
1209271872,1209271875,TR
1209271876,1209271967,US
1209271968,1209271971,VN
-1209271972,1209272003,US
-1209272004,1209272007,GB
-1209272008,1209272035,US
-1209272036,1209272039,IT
-1209272040,1209274623,US
-1209274624,1209274751,CA
+1209271972,1209271975,TR
+1209271976,1209271995,US
+1209271996,1209271999,FR
+1209272000,1209272015,US
+1209272016,1209272019,GB
+1209272020,1209272031,US
+1209272032,1209272035,GB
+1209272036,1209272511,US
+1209272512,1209272575,CN
+1209272576,1209272895,US
+1209272896,1209272959,CN
+1209272960,1209273215,US
+1209273216,1209273279,CN
+1209273280,1209273647,US
+1209273648,1209273655,CN
+1209273656,1209273663,US
+1209273664,1209273671,BD
+1209273672,1209273991,US
+1209273992,1209273999,FR
+1209274000,1209274175,US
+1209274176,1209274239,FR
+1209274240,1209274303,US
+1209274304,1209274367,CN
+1209274368,1209274607,US
+1209274608,1209274623,FR
+1209274624,1209274751,CN
1209274752,1209274815,US
1209274816,1209274879,CA
-1209274880,1209275910,US
+1209274880,1209275071,US
+1209275072,1209275135,GB
+1209275136,1209275863,US
+1209275864,1209275871,FR
+1209275872,1209275910,US
1209275911,1209275911,MY
-1209275912,1209276511,US
-1209276512,1209276543,VN
-1209276544,1209276799,US
+1209275912,1209275924,US
+1209275925,1209275925,CN
+1209275926,1209275928,US
+1209275929,1209275929,MY
+1209275930,1209275931,US
+1209275932,1209275932,CN
+1209275933,1209276351,US
+1209276352,1209276415,CN
+1209276416,1209276799,US
1209276800,1209276807,BD
-1209276808,1209277183,US
-1209277184,1209277215,BD
-1209277216,1209277575,US
+1209276808,1209276815,FR
+1209276816,1209277087,US
+1209277088,1209277095,FR
+1209277096,1209277135,US
+1209277136,1209277143,FR
+1209277144,1209277155,US
+1209277156,1209277156,SE
+1209277157,1209277177,US
+1209277178,1209277178,FR
+1209277179,1209277575,US
1209277576,1209277583,BD
-1209277584,1209279167,US
+1209277584,1209278207,US
+1209278208,1209278463,IE
+1209278464,1209278911,US
+1209278912,1209278919,TR
+1209278920,1209279167,US
1209279168,1209279231,VN
-1209279232,1209280191,US
+1209279232,1209279615,US
+1209279616,1209279743,GB
+1209279744,1209279871,US
+1209279872,1209279935,MY
+1209279936,1209280191,US
1209280192,1209280255,VN
-1209280256,1209280975,US
-1209280976,1209280983,IT
-1209280984,1209281247,US
+1209280256,1209280575,US
+1209280576,1209280607,FR
+1209280608,1209280619,US
+1209280620,1209280623,GB
+1209280624,1209280959,US
+1209280960,1209280975,GB
+1209280976,1209281247,US
1209281248,1209281279,CA
-1209281280,1209283967,US
+1209281280,1209281983,US
+1209281984,1209282047,TR
+1209282048,1209282583,US
+1209282584,1209282591,GB
+1209282592,1209283479,US
+1209283480,1209283487,GB
+1209283488,1209283535,US
+1209283536,1209283543,GB
+1209283544,1209283587,US
+1209283588,1209283591,CN
+1209283592,1209283695,US
+1209283696,1209283703,GB
+1209283704,1209283751,US
+1209283752,1209283759,BD
+1209283760,1209283871,US
+1209283872,1209283875,TR
+1209283876,1209283967,US
1209283968,1209284095,GB
-1209284096,1209347839,US
+1209284096,1209284223,US
+1209284224,1209284351,IE
+1209284352,1209284759,US
+1209284760,1209284767,FR
+1209284768,1209284799,US
+1209284800,1209284815,TR
+1209284816,1209284831,CN
+1209284832,1209284855,US
+1209284856,1209284863,TR
+1209284864,1209285063,US
+1209285064,1209285071,TR
+1209285072,1209347839,US
1209347840,1209348095,GB
1209348096,1209357215,US
1209357216,1209357231,SI
@@ -22710,8 +23325,8 @@
1210418208,1210427039,US
1210427040,1210427071,JP
1210427072,1210449919,US
-1210449920,1210468743,CA
-1210468744,1210468767,US
+1210449920,1210468751,CA
+1210468752,1210468767,US
1210468768,1210580991,CA
1210580992,1210861207,US
1210861208,1210861215,GB
@@ -22742,8 +23357,7 @@
1211036032,1211036095,EC
1211036096,1211036703,US
1211036704,1211036719,BO
-1211036720,1211036727,US
-1211036728,1211036735,JM
+1211036720,1211036735,US
1211036736,1211036751,GT
1211036752,1211036991,US
1211036992,1211037055,BR
@@ -22778,8 +23392,8 @@
1211304320,1211304351,NL
1211304352,1211304703,CA
1211304704,1211304767,GB
-1211304768,1211304799,US
-1211304800,1211304959,CA
+1211304768,1211304831,US
+1211304832,1211304959,CA
1211304960,1211305983,US
1211305984,1211306111,NL
1211306112,1211306751,US
@@ -22799,10 +23413,18 @@
1211308704,1211308719,VG
1211308720,1211308735,CA
1211308736,1211308751,BV
-1211308752,1211309055,CA
+1211308752,1211308767,CA
+1211308768,1211308783,US
+1211308784,1211309055,CA
1211309056,1211309311,US
1211309312,1211310079,CA
-1211310080,1211314383,US
+1211310080,1211313219,US
+1211313220,1211313231,IN
+1211313232,1211313431,US
+1211313432,1211313439,IN
+1211313440,1211313567,US
+1211313568,1211313579,IN
+1211313580,1211314383,US
1211314384,1211314399,CA
1211314400,1211314415,US
1211314416,1211314423,CA
@@ -22810,9 +23432,7 @@
1211314640,1211314671,CA
1211314672,1211314863,US
1211314864,1211314879,CA
-1211314880,1211315711,US
-1211315712,1211316223,CA
-1211316224,1211316479,US
+1211314880,1211316479,US
1211316480,1211316991,CA
1211316992,1211317503,US
1211317504,1211317759,CA
@@ -22833,9 +23453,9 @@
1211367504,1211367519,CH
1211367520,1211367615,US
1211367616,1211367679,GB
-1211367680,1211367935,GI
+1211367680,1211367935,US
1211367936,1211368191,CA
-1211368192,1211368447,CY
+1211368192,1211368447,EE
1211368448,1211384279,US
1211384280,1211384287,GB
1211384288,1211387983,US
@@ -22844,7 +23464,11 @@
1211388672,1211388687,IT
1211388688,1211391455,US
1211391456,1211391487,CN
-1211391488,1211391743,US
+1211391488,1211391711,US
+1211391712,1211391719,CN
+1211391720,1211391727,US
+1211391728,1211391735,CN
+1211391736,1211391743,US
1211391744,1211391999,IT
1211392000,1211392591,US
1211392592,1211392607,IT
@@ -22884,9 +23508,7 @@
1219256320,1219264511,CA
1219264512,1219272703,US
1219272704,1219276799,CA
-1219276800,1219290047,US
-1219290048,1219290063,CA
-1219290064,1219290623,US
+1219276800,1219290623,US
1219290624,1219290751,AU
1219290752,1219295295,US
1219295296,1219295359,GR
@@ -22924,12 +23546,9 @@
1224278600,1224278607,AU
1224278608,1224278815,US
1224278816,1224278823,CH
-1224278824,1224285695,US
-1224285696,1224286207,GB
-1224286208,1224286719,US
+1224278824,1224286719,US
1224286720,1224286975,CA
-1224286976,1224290303,US
-1224290304,1224290815,GB
+1224286976,1224290815,US
1224290816,1224291071,CA
1224291072,1224292095,US
1224292096,1224292351,CA
@@ -22941,9 +23560,7 @@
1224299520,1224299775,CA
1224299776,1224303359,US
1224303360,1224303367,CA
-1224303368,1224305151,US
-1224305152,1224305663,GB
-1224305664,1224311063,US
+1224303368,1224311063,US
1224311064,1224311071,MX
1224311072,1224311247,US
1224311248,1224311255,CA
@@ -22960,8 +23577,7 @@
1224317440,1224317695,CA
1224317696,1224318207,US
1224318208,1224318463,CA
-1224318464,1224320511,US
-1224320512,1224321023,GB
+1224318464,1224321023,US
1224321024,1224321535,CA
1224321536,1224322559,US
1224322560,1224323071,GB
@@ -22991,9 +23607,7 @@
1242300416,1242562559,CA
1242562560,1244659711,US
1244659712,1244790783,CA
-1244790784,1244821247,US
-1244821248,1244821375,CA
-1244821376,1244831743,US
+1244790784,1244831743,US
1244831744,1244839935,CA
1244839936,1244848127,US
1244848128,1244852223,CA
@@ -23005,12 +23619,8 @@
1246864900,1246864958,EG
1246864959,1246872069,US
1246872070,1246872081,GB
-1246872082,1246873461,US
-1246873462,1246873469,CA
-1246873470,1246873491,US
-1246873492,1246873501,GR
-1246873502,1246874112,US
-1246874113,1246874216,GB
+1246872082,1246874127,US
+1246874128,1246874216,GB
1246874217,1246874290,US
1246874291,1246874304,CA
1246874305,1246874368,US
@@ -23025,9 +23635,10 @@
1246902784,1246903039,NL
1246903040,1246937087,US
1246937088,1246945279,CA
-1246945280,1246949375,US
-1246953472,1247027199,US
-1247027200,1247035391,A2
+1246945280,1247027199,US
+1247027200,1247034559,A2
+1247034560,1247034575,US
+1247034576,1247035391,A2
1247035392,1247069303,US
1247069304,1247069311,VA
1247069312,1247070815,US
@@ -23060,7 +23671,25 @@
1249010688,1249011711,CA
1249011712,1249019903,US
1249019904,1249020927,CA
-1249020928,1249029119,US
+1249020928,1249027175,US
+1249027176,1249027183,IN
+1249027184,1249027391,US
+1249027392,1249027407,PH
+1249027408,1249027455,US
+1249027456,1249027471,CA
+1249027472,1249027503,US
+1249027504,1249027519,CA
+1249027520,1249027551,US
+1249027552,1249027559,CA
+1249027560,1249027647,US
+1249027648,1249027655,AU
+1249027656,1249027823,US
+1249027824,1249027839,CA
+1249027840,1249027887,US
+1249027888,1249027895,EG
+1249027896,1249027919,US
+1249027920,1249027935,AU
+1249027936,1249029119,US
1249029120,1249030143,CA
1249030144,1249036287,US
1249036288,1249037311,TC
@@ -23077,7 +23706,19 @@
1249099776,1249101823,CA
1249101824,1249102847,PR
1249102848,1249103871,CA
-1249103872,1249106943,US
+1249103872,1249103887,TW
+1249103888,1249103903,PH
+1249103904,1249103951,US
+1249103952,1249103967,TW
+1249103968,1249104095,US
+1249104096,1249104111,TW
+1249104112,1249105119,US
+1249105120,1249105127,AR
+1249105128,1249105135,US
+1249105136,1249105143,CH
+1249105144,1249105183,US
+1249105184,1249105191,ZA
+1249105192,1249106943,US
1249106944,1249107967,CA
1249107968,1249130495,US
1249130496,1249131519,JM
@@ -23090,7 +23731,11 @@
1249171456,1249173503,CA
1249173504,1249179831,US
1249179832,1249179839,CA
-1249179840,1249191935,US
+1249179840,1249179967,US
+1249179968,1249179983,SE
+1249179984,1249180031,US
+1249180032,1249180095,TW
+1249180096,1249191935,US
1249191936,1249193983,CA
1249193984,1249203199,US
1249203200,1249204223,GD
@@ -23098,7 +23743,9 @@
1249210368,1249212415,KY
1249212416,1249217535,US
1249217536,1249218559,CA
-1249218560,1249236991,US
+1249218560,1249221887,US
+1249221888,1249222655,RO
+1249222656,1249236991,US
1249236992,1249239039,KY
1249239040,1249245183,US
1249245184,1249247231,CA
@@ -23164,9 +23811,15 @@
1249796096,1249804287,CA
1249804288,1249838847,US
1249838848,1249838911,IN
-1249838912,1249839423,US
+1249838912,1249838975,US
+1249838976,1249839039,IN
+1249839040,1249839423,US
1249839424,1249839487,VE
-1249839488,1249845311,US
+1249839488,1249843231,US
+1249843232,1249843247,IN
+1249843248,1249843423,US
+1249843424,1249843439,IN
+1249843440,1249845311,US
1249845312,1249845327,IN
1249845328,1249845343,US
1249845344,1249845375,IN
@@ -23207,7 +23860,9 @@
1254490112,1254555647,CA
1254555648,1254604159,US
1254604160,1254604175,GB
-1254604176,1254621183,US
+1254604176,1254604191,US
+1254604192,1254604199,IE
+1254604200,1254621183,US
1254621184,1254629375,CA
1254629376,1254704383,US
1254704384,1254704639,PH
@@ -23745,8 +24400,8 @@
1255007488,1255007711,CA
1255007712,1255011343,US
1255011344,1255011359,CA
-1255011360,1255011367,US
-1255011368,1255011551,CA
+1255011360,1255011375,US
+1255011376,1255011551,CA
1255011552,1255011559,US
1255011560,1255011839,CA
1255011840,1255039631,US
@@ -23765,8 +24420,7 @@
1255058672,1255058687,GB
1255058688,1255059151,US
1255059152,1255059167,GB
-1255059168,1255059199,BS
-1255059200,1255059327,US
+1255059168,1255059327,US
1255059328,1255059343,NL
1255059344,1255059359,US
1255059360,1255059407,CA
@@ -23793,19 +24447,13 @@
1255062848,1255062863,CA
1255062864,1255063551,US
1255063552,1255071743,PR
-1255071744,1255193599,US
-1255193600,1255194623,GB
-1255194624,1255210495,US
+1255071744,1255210495,US
1255210496,1255211007,DE
1255211008,1255276543,US
1255276544,1255342079,CA
1255342080,1255369055,US
1255369056,1255369087,DE
-1255369088,1255372287,US
-1255372288,1255372543,CA
-1255372544,1255373823,US
-1255373824,1255374079,CA
-1255374080,1255489535,US
+1255369088,1255489535,US
1255489536,1255505919,PR
1255505920,1255514111,US
1255514112,1255522303,CA
@@ -23819,9 +24467,9 @@
1255753216,1255753471,GB
1255753472,1255768063,US
1255768064,1255768575,CA
-1255768576,1255771135,US
-1255771136,1255772159,CA
-1255772160,1255780351,US
+1255768576,1255770367,US
+1255770368,1255770623,CA
+1255770624,1255780351,US
1255780352,1255782399,CA
1255782400,1255796743,US
1255796744,1255796751,GB
@@ -23833,26 +24481,20 @@
1256057976,1256057983,BZ
1256057984,1256079359,US
1256079360,1256087551,KY
-1256087552,1256098303,US
-1256098304,1256098339,CA
-1256098340,1256098343,US
-1256098344,1256098815,CA
+1256087552,1256098559,US
+1256098560,1256098815,CA
1256098816,1263264273,US
1263264274,1263264289,PK
-1263264290,1263264305,CA
+1263264290,1263264305,US
1263264306,1263264354,PK
-1263264355,1263264386,US
-1263264387,1263264450,CA
-1263264451,1263264767,US
-1263264768,1263265023,CA
-1263265024,1263266559,US
-1263266560,1263266815,CA
-1263266816,1263267327,US
+1263264355,1263266623,US
+1263266624,1263266655,CA
+1263266656,1263267327,US
1263267328,1263267583,CA
1263267584,1263267647,US
1263267648,1263267679,CA
-1263267680,1263268095,US
-1263268096,1263268191,CA
+1263267680,1263267839,US
+1263267840,1263268191,CA
1263268192,1263268275,US
1263268276,1263268340,CA
1263268341,1263268343,US
@@ -23861,20 +24503,15 @@
1263268608,1263268672,CA
1263268673,1263268769,US
1263268770,1263268863,CA
-1263268864,1263269119,US
-1263269120,1263269631,CA
-1263269632,1263270143,US
-1263270144,1263270911,CA
-1263270912,1263271423,US
+1263268864,1263271423,US
1263271424,1263271679,CA
1263271680,1264717823,US
1264717824,1264718335,CA
1264718336,1264736255,US
1264736256,1264737279,DO
-1264737280,1264738303,US
-1264779264,1264980223,US
-1264980224,1264980479,HK
-1264980480,1264980735,US
+1264737280,1264762879,US
+1264762880,1264766975,CA
+1264766976,1264980735,US
1264980736,1264980743,CA
1264980744,1266107759,US
1266107760,1266107775,UM
@@ -23892,7 +24529,23 @@
1268252672,1268776959,CA
1268776960,1275600895,US
1275600896,1275604991,BM
-1275604992,1275621375,US
+1275604992,1275605263,US
+1275605264,1275605279,PL
+1275605280,1275605567,US
+1275605568,1275605583,PL
+1275605584,1275605823,US
+1275605824,1275605839,PL
+1275605840,1275606207,US
+1275606208,1275606223,PL
+1275606224,1275606367,US
+1275606368,1275606383,PL
+1275606384,1275606975,US
+1275606976,1275606991,PL
+1275606992,1275607071,US
+1275607072,1275607087,PL
+1275607088,1275607407,US
+1275607408,1275607423,PL
+1275607424,1275621375,US
1275621376,1275625471,CA
1275625472,1275658239,US
1275658240,1275658495,GB
@@ -24277,7 +24930,8 @@
1279955104,1279955119,CA
1279955120,1279955151,US
1279955152,1279955159,AU
-1279955160,1279956031,US
+1279955160,1279956023,US
+1279956024,1279956031,MX
1279956032,1279956047,CR
1279956048,1279956059,US
1279956060,1279956063,MX
@@ -24289,7 +24943,29 @@
1279956312,1279956351,CA
1279956352,1279956455,US
1279956456,1279956463,PA
-1279956464,1279959551,US
+1279956464,1279956998,US
+1279956999,1279957007,IN
+1279957008,1279957119,US
+1279957120,1279957128,IN
+1279957129,1279957135,US
+1279957136,1279957151,IN
+1279957152,1279957231,US
+1279957232,1279957243,IN
+1279957244,1279957375,US
+1279957376,1279957383,IN
+1279957384,1279957407,US
+1279957408,1279957427,IN
+1279957428,1279957431,US
+1279957432,1279957439,IN
+1279957440,1279957631,US
+1279957632,1279957651,IN
+1279957652,1279957655,US
+1279957656,1279957674,IN
+1279957675,1279958020,US
+1279958021,1279958030,IN
+1279958031,1279958399,US
+1279958400,1279958495,IN
+1279958496,1279959551,US
1279959552,1279959807,CA
1279959808,1279960063,US
1279960064,1279960127,CA
@@ -24356,7 +25032,19 @@
1279978272,1279978303,US
1279978304,1279978367,CA
1279978368,1279978495,VG
-1279978496,1279979559,US
+1279978496,1279978683,US
+1279978684,1279978692,IN
+1279978693,1279978693,US
+1279978694,1279978702,IN
+1279978703,1279978891,US
+1279978892,1279978899,IN
+1279978900,1279978927,US
+1279978928,1279978939,IN
+1279978940,1279979007,US
+1279979008,1279979263,IN
+1279979264,1279979327,US
+1279979328,1279979391,IN
+1279979392,1279979559,US
1279979560,1279979575,CA
1279979576,1279979583,US
1279979584,1279980063,CA
@@ -24365,7 +25053,17 @@
1279980080,1279980127,CA
1279980128,1279980135,US
1279980136,1279981567,CA
-1279981568,1279999999,US
+1279981568,1279981823,US
+1279981824,1279981855,VG
+1279981856,1279982778,US
+1279982779,1279982788,IN
+1279982789,1279983047,US
+1279983048,1279983072,IN
+1279983073,1279983079,US
+1279983080,1279983087,IN
+1279983088,1279983519,US
+1279983520,1279983532,IN
+1279983533,1279999999,US
1280000000,1280032767,CA
1280032768,1280040959,US
1280040960,1280043527,CA
@@ -24494,193 +25192,8 @@
1280049072,1280049095,CA
1280049096,1280049127,US
1280049128,1280049151,CA
-1280049152,1280073735,US
-1280073736,1280073743,DE
-1280073744,1280073759,US
-1280073760,1280073767,CA
-1280073768,1280073775,US
-1280073776,1280073791,CA
-1280073792,1280073799,CR
-1280073800,1280073807,US
-1280073808,1280073815,MY
-1280073816,1280073823,CA
-1280073824,1280073831,US
-1280073832,1280073847,CA
-1280073848,1280073855,LT
-1280073856,1280073863,UA
-1280073864,1280073879,US
-1280073880,1280073887,CA
-1280073888,1280073895,RU
-1280073896,1280073903,US
-1280073904,1280073911,CA
-1280073912,1280073919,NL
-1280073920,1280073935,CA
-1280073936,1280073943,US
-1280073944,1280073951,ZA
-1280073952,1280073959,CR
-1280073960,1280073967,FR
-1280073968,1280073975,US
-1280073976,1280073983,CA
-1280073984,1280073999,US
-1280074000,1280074007,BR
-1280074008,1280074023,US
-1280074024,1280074039,CA
-1280074040,1280074047,US
-1280074048,1280074055,HU
-1280074056,1280074071,US
-1280074072,1280074087,CA
-1280074088,1280074095,US
-1280074096,1280074103,IL
-1280074104,1280074127,US
-1280074128,1280074135,CA
-1280074136,1280074143,CN
-1280074144,1280074151,GB
-1280074152,1280074159,CA
-1280074160,1280074175,US
-1280074176,1280074183,CA
-1280074184,1280074199,US
-1280074200,1280074207,MY
-1280074208,1280074215,DE
-1280074216,1280074223,US
-1280074224,1280074231,CA
-1280074232,1280074239,SG
-1280074240,1280074247,GB
-1280074248,1280074255,US
-1280074256,1280074263,DE
-1280074264,1280074271,FR
-1280074272,1280074279,CA
-1280074280,1280074287,US
-1280074288,1280074295,CA
-1280074296,1280074303,US
-1280074304,1280074311,CA
-1280074312,1280074319,RU
-1280074320,1280074327,US
-1280074328,1280074359,CA
-1280074360,1280074375,US
-1280074376,1280074383,CA
-1280074384,1280074391,PA
-1280074392,1280074399,US
-1280074400,1280074415,CA
-1280074416,1280074423,JP
-1280074424,1280074431,CA
-1280074432,1280074439,US
-1280074440,1280074455,CA
-1280074456,1280074463,US
-1280074464,1280074479,CA
-1280074480,1280074487,AU
-1280074488,1280074495,PA
-1280074496,1280074511,US
-1280074512,1280074519,MY
-1280074520,1280074527,CA
-1280074528,1280074567,US
-1280074568,1280074575,CA
-1280074576,1280074583,NL
-1280074584,1280074599,US
-1280074600,1280074607,CA
-1280074608,1280074615,US
-1280074616,1280074623,CA
-1280074624,1280074631,VG
-1280074632,1280074639,CA
-1280074640,1280074655,US
-1280074656,1280074663,AU
-1280074664,1280074671,CA
-1280074672,1280074687,US
-1280074688,1280074695,FR
-1280074696,1280074703,CA
-1280074704,1280074711,MY
-1280074712,1280074719,CA
-1280074720,1280074735,US
-1280074736,1280074751,CA
-1280074752,1280074759,US
-1280074760,1280074767,RO
-1280074768,1280074775,CA
-1280074776,1280074783,AE
-1280074784,1280074791,AU
-1280074792,1280074799,US
-1280074800,1280074807,NL
-1280074808,1280074815,GB
-1280074816,1280074823,CA
-1280074824,1280074831,FR
-1280074832,1280074839,IL
-1280074840,1280074847,CO
-1280074848,1280074855,IT
-1280074856,1280074871,CA
-1280074872,1280074887,US
-1280074888,1280074895,CA
-1280074896,1280074911,US
-1280074912,1280074919,CA
-1280074920,1280074935,US
-1280074936,1280074943,GB
-1280074944,1280074959,CA
-1280074960,1280074967,US
-1280074968,1280074975,CA
-1280074976,1280074999,US
-1280075000,1280075007,GI
-1280075008,1280075015,US
-1280075016,1280075039,CA
-1280075040,1280075047,IE
-1280075048,1280075055,NL
-1280075056,1280075063,RU
-1280075064,1280075071,IT
-1280075072,1280075087,CA
-1280075088,1280075095,US
-1280075096,1280075103,CL
-1280075104,1280075119,US
-1280075120,1280075127,CA
-1280075128,1280075135,MY
-1280075136,1280075143,CA
-1280075144,1280075151,US
-1280075152,1280075159,MY
-1280075160,1280075167,US
-1280075168,1280075175,MY
-1280075176,1280075183,CA
-1280075184,1280075191,US
-1280075192,1280075231,CA
-1280075232,1280075239,NL
-1280075240,1280075271,US
-1280075272,1280075295,CA
-1280075296,1280075303,US
-1280075304,1280075327,CA
-1280075328,1280075343,US
-1280075344,1280075351,CA
-1280075352,1280075359,MY
-1280075360,1280075367,US
-1280075368,1280075375,CA
-1280075376,1280075383,US
-1280075384,1280075391,CA
-1280075392,1280075415,MY
-1280075416,1280075423,US
-1280075424,1280075439,CA
-1280075440,1280075471,US
-1280075472,1280075487,CA
-1280075488,1280075495,CR
-1280075496,1280075503,GB
-1280075504,1280075511,CA
-1280075512,1280075519,CN
-1280075520,1280075527,PH
-1280075528,1280075535,CA
-1280075536,1280075543,IT
-1280075544,1280075551,ZA
-1280075552,1280075559,TR
-1280075560,1280075567,AE
-1280075568,1280075575,US
-1280075576,1280075583,CA
-1280075584,1280075615,US
-1280075616,1280075623,GB
-1280075624,1280075655,CA
-1280075656,1280075679,US
-1280075680,1280075687,MY
-1280075688,1280075719,CA
-1280075720,1280075727,US
-1280075728,1280075759,CA
-1280075760,1280075767,US
-1280075768,1280075775,GB
-1280075776,1280075783,US
-1280075784,1280078711,CA
-1280078712,1280078719,US
-1280078720,1280078743,CA
-1280078744,1280078751,US
-1280078752,1280081919,CA
+1280049152,1280073727,US
+1280073728,1280081919,CA
1280081920,1280090111,US
1280090112,1280091135,AI
1280091136,1280092159,VG
@@ -24692,9 +25205,11 @@
1280097280,1280097791,LC
1280097792,1280098303,AG
1280098304,1280102399,PR
-1280102400,1280131071,US
+1280102400,1280122879,US
1280131072,1280139263,CA
-1280139264,1287877503,US
+1280139264,1287612122,US
+1287612123,1287612136,SE
+1287612137,1287877503,US
1287877504,1287877567,UM
1287877568,1290252799,US
1290252800,1290252863,GB
@@ -24768,8 +25283,7 @@
1296238592,1296239103,NL
1296239104,1296239231,FR
1296239232,1296239359,NL
-1296239360,1296239615,ES
-1296239616,1296240127,FR
+1296239360,1296240127,FR
1296240128,1296241151,BE
1296241152,1296241407,IT
1296241408,1296242175,NL
@@ -24778,7 +25292,8 @@
1296242432,1296242687,BE
1296242688,1296243199,FR
1296243200,1296243455,GB
-1296243456,1296244223,US
+1296243456,1296243711,FR
+1296243712,1296244223,US
1296244224,1296244479,NL
1296244480,1296244735,GB
1296244736,1296244991,IR
@@ -24796,7 +25311,7 @@
1296248256,1296248318,BE
1296248319,1296248319,FR
1296248320,1296248383,BE
-1296248384,1296248447,FR
+1296248384,1296248447,IT
1296248448,1296248575,US
1296248576,1296248703,IE
1296248704,1296249855,FR
@@ -24812,7 +25327,9 @@
1296250208,1296250239,ES
1296250240,1296250271,BE
1296250272,1296250303,DE
-1296250304,1296251135,FR
+1296250304,1296250335,FR
+1296250336,1296250367,ES
+1296250368,1296251135,FR
1296251136,1296251167,GB
1296251168,1296251199,HR
1296251200,1296251295,DE
@@ -24820,7 +25337,9 @@
1296251328,1296251359,IE
1296251360,1296251391,DE
1296251392,1296251775,NL
-1296251776,1296252127,FR
+1296251776,1296252095,FR
+1296252096,1296252111,US
+1296252112,1296252127,GB
1296252128,1296252143,ES
1296252144,1296252159,US
1296252160,1296252175,GB
@@ -24835,7 +25354,9 @@
1296252320,1296252367,FR
1296252368,1296252383,DE
1296252384,1296252415,IE
-1296252416,1296252703,FR
+1296252416,1296252687,FR
+1296252688,1296252695,NL
+1296252696,1296252703,IE
1296252704,1296252711,DE
1296252712,1296252719,FR
1296252720,1296252727,BE
@@ -24853,7 +25374,7 @@
1296252880,1296252887,DE
1296252888,1296252895,IE
1296252896,1296252911,BE
-1296252912,1296252919,FR
+1296252912,1296252919,GB
1296252920,1296252927,PL
1296252928,1296255743,DE
1296255744,1296255999,FR
@@ -24898,10 +25419,14 @@
1296265024,1296265087,FR
1296265088,1296265151,CA
1296265152,1296265215,FR
-1296265216,1296267263,US
+1296265216,1296265727,US
+1296265728,1296265983,FR
+1296265984,1296267263,US
1296267264,1296267519,FR
1296267520,1296267775,CA
-1296267776,1296268799,US
+1296267776,1296268031,US
+1296268032,1296268287,FR
+1296268288,1296268799,US
1296268800,1296269055,FR
1296269056,1296269311,US
1296269312,1296302079,TR
@@ -24918,10 +25443,11 @@
1296466384,1296466399,NO
1296466400,1296466415,AO
1296466416,1296466431,NG
-1296466432,1296466559,NO
+1296466432,1296466439,TZ
+1296466440,1296466559,NO
1296466560,1296466583,NG
-1296466584,1296466591,NO
-1296466592,1296466623,NG
+1296466584,1296466607,NO
+1296466608,1296466623,NG
1296466624,1296466639,NO
1296466640,1296466655,NG
1296466656,1296466671,BJ
@@ -24944,8 +25470,8 @@
1296473088,1296474623,LT
1296474624,1296476159,US
1296476160,1296480255,LT
-1296480256,1296481791,NO
-1296481792,1296498687,LT
+1296480256,1296482303,NO
+1296482304,1296498687,LT
1296498688,1296531455,BG
1296531456,1296564223,MT
1296564224,1296566271,GB
@@ -24963,6 +25489,7 @@
1296590848,1296592895,ES
1296592896,1296594943,NL
1296594944,1296596991,RU
+1296596992,1296599039,DE
1296599040,1296601087,RU
1296601088,1296603135,DE
1296603136,1296605183,NL
@@ -25136,12 +25663,7 @@
1296957440,1296973823,BG
1296973824,1296990207,CZ
1296990208,1297006591,BG
-1297006592,1297018623,BA
-1297018624,1297019135,MD
-1297019136,1297020927,BA
-1297020928,1297021183,RS
-1297021184,1297021439,MD
-1297021440,1297022207,BA
+1297006592,1297022207,BA
1297022208,1297022463,MD
1297022464,1297022975,BA
1297022976,1297039359,LT
@@ -25212,7 +25734,8 @@
1297867584,1297867647,SC
1297867648,1297867687,RU
1297867688,1297867695,CY
-1297867696,1297867871,RU
+1297867696,1297867855,RU
+1297867856,1297867871,MK
1297867872,1297867879,ES
1297867880,1297868799,RU
1297868800,1297870847,DE
@@ -25241,7 +25764,7 @@
1297993312,1297997823,CZ
1297997824,1298006015,IT
1298006016,1298014207,RU
-1298014208,1298014719,LB
+1298014208,1298014719,LT
1298014720,1298014975,RU
1298014976,1298015231,LT
1298015232,1298015487,RU
@@ -25343,7 +25866,9 @@
1299017728,1299021823,BE
1299021824,1299026111,CH
1299026112,1299026127,ES
-1299026128,1299032063,CH
+1299026128,1299026251,CH
+1299026252,1299026263,PT
+1299026264,1299032063,CH
1299032064,1299032319,NL
1299032320,1299038207,CH
1299038208,1299054591,FI
@@ -25363,6 +25888,7 @@
1299447808,1299709951,AT
1299709952,1299972095,UA
1299972096,1300234239,IL
+1300234240,1302331391,FR
1302331392,1303379967,NL
1303379968,1304428543,DE
1304428544,1305477119,FR
@@ -25373,7 +25899,10 @@
1306263552,1306271743,KE
1306271744,1306279935,RU
1306279936,1306286079,IT
-1306286080,1306288127,CH
+1306286080,1306287103,CH
+1306287104,1306287615,IT
+1306287616,1306287903,CH
+1306287904,1306288127,IT
1306288128,1306296319,AT
1306296320,1306311143,RU
1306311144,1306311151,CH
@@ -25455,6 +25984,7 @@
1307435008,1307443199,DE
1307443200,1307451391,IT
1307451392,1307459583,SE
+1307459584,1307467775,BG
1307467776,1307484159,RU
1307484160,1307488767,GB
1307488768,1307489023,IE
@@ -25466,7 +25996,9 @@
1307508736,1307516927,BA
1307516928,1307525119,CH
1307525120,1307533311,BA
-1307533312,1307541503,GB
+1307533312,1307535359,GB
+1307535360,1307535615,DE
+1307535616,1307541503,GB
1307541504,1307549695,IT
1307549696,1307557887,UA
1307557888,1307574271,RU
@@ -25570,14 +26102,18 @@
1307848704,1307852799,CH
1307852800,1307856895,RU
1307856896,1307860991,IT
-1307860992,1307861119,DE
+1307860992,1307861079,DE
+1307861080,1307861083,LU
+1307861084,1307861119,DE
1307861120,1307861123,LU
1307861124,1307861127,A2
1307861128,1307861151,DE
1307861152,1307861155,LU
1307861156,1307861919,DE
1307861920,1307861935,LU
-1307861936,1307864127,DE
+1307861936,1307861983,DE
+1307861984,1307861987,A2
+1307861988,1307864127,DE
1307864128,1307864135,LU
1307864136,1307864143,DE
1307864144,1307864147,A2
@@ -25615,7 +26151,9 @@
1307919700,1307919703,ZA
1307919704,1307920575,GB
1307920576,1307920583,AU
-1307920584,1307921471,GB
+1307920584,1307921431,GB
+1307921432,1307921439,BD
+1307921440,1307921471,GB
1307921472,1307921535,ES
1307921536,1307922431,GB
1307922432,1307926527,NL
@@ -25632,7 +26170,8 @@
1307971584,1307979775,GB
1307979776,1307981823,ZW
1307981824,1307982847,ZA
-1307982848,1307983871,GB
+1307982848,1307983359,ZW
+1307983360,1307983871,GB
1307983872,1307987967,LB
1307987968,1307992063,FR
1307992064,1307996159,RU
@@ -25890,6 +26429,7 @@
1310251008,1310255103,RU
1310255104,1310257151,CZ
1310257152,1310259199,FR
+1310259200,1310261247,GB
1310261248,1310277631,UA
1310277632,1310310399,RU
1310310400,1310326783,GB
@@ -26021,10 +26561,10 @@
1311367808,1311367839,US
1311367840,1311367871,DK
1311367872,1311367887,LR
-1311367888,1311367895,GB
+1311367888,1311367895,A2
1311367896,1311367935,DK
1311367936,1311367967,BJ
-1311367968,1311368191,GB
+1311367968,1311368191,A2
1311368192,1311368319,BD
1311368320,1311368447,CF
1311368448,1311368575,TZ
@@ -26276,7 +26816,9 @@
1317129472,1317129727,IT
1317129728,1317137663,GB
1317137664,1317137919,SE
-1317137920,1317142143,GB
+1317137920,1317140095,GB
+1317140096,1317140223,US
+1317140224,1317142143,GB
1317142144,1317142271,CA
1317142272,1317142527,GB
1317142528,1317175295,PT
@@ -26320,10 +26862,10 @@
1317649920,1317650023,IE
1317650024,1317650031,GB
1317650032,1317650047,IE
-1317650048,1317650087,GB
-1317650088,1317650127,IE
-1317650128,1317650175,GB
-1317650176,1317650431,IE
+1317650048,1317650095,GB
+1317650096,1317650135,IE
+1317650136,1317650143,GB
+1317650144,1317650431,IE
1317650432,1317666815,RU
1317666816,1317666823,IQ
1317666824,1317666831,CD
@@ -26331,27 +26873,21 @@
1317666840,1317666855,GH
1317666856,1317666863,A2
1317666864,1317666871,GH
-1317666872,1317666879,NG
+1317666872,1317666879,A2
1317666880,1317666887,LR
1317666888,1317666911,NG
-1317666912,1317666919,A2
-1317666920,1317666927,NG
-1317666928,1317666959,A2
+1317666912,1317666959,A2
1317666960,1317666967,NG
-1317666968,1317666983,A2
-1317666984,1317666991,CM
-1317666992,1317666999,A2
+1317666968,1317666999,A2
1317667000,1317667007,AO
1317667008,1317667015,GH
-1317667016,1317667023,A2
-1317667024,1317667031,LR
-1317667032,1317667039,NG
+1317667016,1317667039,A2
1317667040,1317667047,GH
-1317667048,1317667055,NG
+1317667048,1317667055,A2
1317667056,1317667063,LR
-1317667064,1317667087,AO
-1317667088,1317667095,A2
-1317667096,1317667103,GH
+1317667064,1317667071,A2
+1317667072,1317667079,AO
+1317667080,1317667103,A2
1317667104,1317667111,NG
1317667112,1317667119,GH
1317667120,1317667135,A2
@@ -26365,68 +26901,63 @@
1317667192,1317667231,NG
1317667232,1317667239,GH
1317667240,1317667247,NG
-1317667248,1317667255,A2
-1317667256,1317667263,NG
+1317667248,1317667263,A2
1317667264,1317667271,GB
1317667272,1317667295,NG
1317667296,1317667303,A2
1317667304,1317667335,NG
1317667336,1317667343,A2
1317667344,1317667351,NG
-1317667352,1317667367,AO
+1317667352,1317667359,AO
+1317667360,1317667367,A2
1317667368,1317667375,NG
-1317667376,1317667391,AO
-1317667392,1317667407,A2
+1317667376,1317667407,A2
1317667408,1317667423,NG
1317667424,1317667431,TD
1317667432,1317667439,GH
-1317667440,1317667447,A2
-1317667448,1317667471,NG
-1317667472,1317667479,A2
-1317667480,1317667487,NG
+1317667440,1317667455,A2
+1317667456,1317667463,NG
+1317667464,1317667487,A2
1317667488,1317667495,GH
1317667496,1317667503,NG
-1317667504,1317667527,A2
-1317667528,1317667535,AO
-1317667536,1317667543,A2
-1317667544,1317667551,AO
+1317667504,1317667551,A2
1317667552,1317667567,NG
-1317667568,1317667583,GH
-1317667584,1317667759,NG
+1317667568,1317667583,A2
+1317667584,1317667719,NG
+1317667720,1317667735,A2
+1317667736,1317667743,NG
+1317667744,1317667751,A2
+1317667752,1317667759,NG
1317667760,1317667767,FR
1317667768,1317667775,ZA
-1317667776,1317667783,CD
+1317667776,1317667783,A2
1317667784,1317667823,NG
1317667824,1317668095,A2
1317668096,1317668103,GH
1317668104,1317668111,ZM
-1317668112,1317668127,AO
-1317668128,1317668143,A2
+1317668112,1317668143,A2
1317668144,1317668151,AO
1317668152,1317668167,NG
1317668168,1317668183,A2
1317668184,1317668191,CI
-1317668192,1317668199,NG
+1317668192,1317668199,A2
1317668200,1317668207,BW
1317668208,1317668215,LR
1317668216,1317668223,CM
1317668224,1317668239,NG
1317668240,1317668247,A2
1317668248,1317668255,NG
-1317668256,1317668263,A2
-1317668264,1317668271,AO
+1317668256,1317668271,A2
1317668272,1317668279,SL
1317668280,1317668295,A2
1317668296,1317668303,CD
1317668304,1317668311,NG
1317668312,1317668319,IQ
-1317668320,1317668327,A2
-1317668328,1317668343,NG
+1317668320,1317668343,A2
1317668344,1317668351,AO
1317668352,1317668359,NG
1317668360,1317668367,SL
-1317668368,1317668383,NG
-1317668384,1317668391,A2
+1317668368,1317668391,A2
1317668392,1317668399,NG
1317668400,1317668407,A2
1317668408,1317668415,GH
@@ -26435,18 +26966,18 @@
1317668456,1317668463,NG
1317668464,1317668471,AO
1317668472,1317668479,NG
-1317668480,1317668487,GH
+1317668480,1317668487,A2
1317668488,1317668495,NG
1317668496,1317668503,GH
1317668504,1317668511,CD
1317668512,1317668519,IQ
1317668520,1317668527,MZ
-1317668528,1317668535,AO
+1317668528,1317668535,A2
1317668536,1317668543,BJ
-1317668544,1317668551,UG
+1317668544,1317668551,A2
1317668552,1317668559,AO
1317668560,1317668575,NG
-1317668576,1317668583,IQ
+1317668576,1317668583,A2
1317668584,1317668591,LR
1317668592,1317668599,NG
1317668600,1317668615,A2
@@ -26455,50 +26986,51 @@
1317668632,1317668639,A2
1317668640,1317668655,NG
1317668656,1317668671,A2
-1317668672,1317668735,NG
-1317668736,1317668743,A2
-1317668744,1317668751,AO
-1317668752,1317668759,A2
+1317668672,1317668703,NG
+1317668704,1317668727,A2
+1317668728,1317668735,NG
+1317668736,1317668759,A2
1317668760,1317668767,IQ
1317668768,1317668775,LR
1317668776,1317668791,NG
-1317668792,1317668799,A2
-1317668800,1317668807,AO
+1317668792,1317668807,A2
1317668808,1317668815,NG
-1317668816,1317668823,A2
-1317668824,1317668831,AO
-1317668832,1317668855,NG
+1317668816,1317668831,A2
+1317668832,1317668839,NG
+1317668840,1317668847,A2
+1317668848,1317668855,NG
1317668856,1317668863,A2
1317668864,1317668871,LR
-1317668872,1317668887,NG
-1317668888,1317668895,A2
-1317668896,1317668903,NG
-1317668904,1317668911,A2
+1317668872,1317668911,A2
1317668912,1317668927,NG
1317668928,1317668935,A2
-1317668936,1317668983,NG
-1317668984,1317668991,A2
-1317668992,1317668999,NG
+1317668936,1317668943,NG
+1317668944,1317668959,A2
+1317668960,1317668983,NG
+1317668984,1317668999,A2
1317669000,1317669007,CD
-1317669008,1317669031,NG
-1317669032,1317669055,A2
-1317669056,1317669103,NG
+1317669008,1317669023,NG
+1317669024,1317669055,A2
+1317669056,1317669079,NG
+1317669080,1317669087,A2
+1317669088,1317669103,NG
1317669104,1317669111,A2
1317669112,1317669119,NG
1317669120,1317669375,GE
1317669376,1317669631,CG
-1317669632,1317669887,A2
-1317669888,1317669895,AO
-1317669896,1317669911,NG
+1317669632,1317669903,A2
+1317669904,1317669911,NG
1317669912,1317669919,GH
-1317669920,1317669959,NG
+1317669920,1317669943,A2
+1317669944,1317669959,NG
1317669960,1317669983,A2
1317669984,1317669991,LR
1317669992,1317670015,NG
-1317670016,1317670031,A2
-1317670032,1317670103,NG
+1317670016,1317670063,A2
+1317670064,1317670103,NG
1317670104,1317670111,A2
-1317670112,1317670143,NG
+1317670112,1317670135,NG
+1317670136,1317670143,A2
1317670144,1317670175,SL
1317670176,1317670215,A2
1317670216,1317670223,NG
@@ -26507,39 +27039,34 @@
1317670240,1317670247,NG
1317670248,1317670255,A2
1317670256,1317670263,NG
-1317670264,1317670399,A2
-1317670400,1317670415,CD
+1317670264,1317670407,A2
+1317670408,1317670415,CD
1317670416,1317670423,A2
1317670424,1317670431,NG
1317670432,1317670447,A2
1317670448,1317670455,IQ
1317670456,1317670471,NG
1317670472,1317670479,CO
-1317670480,1317670495,A2
-1317670496,1317670503,NG
-1317670504,1317670511,A2
+1317670480,1317670511,A2
1317670512,1317670519,CI
1317670520,1317670543,NG
1317670544,1317670551,IQ
1317670552,1317670567,NG
1317670568,1317670575,A2
1317670576,1317670583,NG
-1317670584,1317670599,GH
-1317670600,1317670607,AO
+1317670584,1317670591,GH
+1317670592,1317670607,A2
1317670608,1317670639,NG
1317670640,1317670647,A2
1317670648,1317670655,NG
1317670656,1317670663,AO
-1317670664,1317670671,A2
-1317670672,1317670679,CM
+1317670664,1317670679,A2
1317670680,1317670703,NG
1317670704,1317670711,A2
1317670712,1317670719,GH
1317670720,1317670727,A2
1317670728,1317670735,GH
-1317670736,1317670743,AO
-1317670744,1317670751,NG
-1317670752,1317670759,A2
+1317670736,1317670759,A2
1317670760,1317670767,NG
1317670768,1317670775,GH
1317670776,1317670783,A2
@@ -26547,18 +27074,14 @@
1317670792,1317670807,NG
1317670808,1317670815,AO
1317670816,1317670823,NG
-1317670824,1317670831,CD
-1317670832,1317670839,NG
-1317670840,1317670847,A2
+1317670824,1317670847,A2
1317670848,1317670855,NG
1317670856,1317670863,CD
-1317670864,1317670871,A2
-1317670872,1317670887,NG
-1317670888,1317670895,AO
-1317670896,1317670896,A2
+1317670864,1317670879,A2
+1317670880,1317670887,NG
+1317670888,1317670896,A2
1317670897,1317670911,NG
-1317670912,1317671167,A2
-1317671168,1317671175,AO
+1317670912,1317671175,A2
1317671176,1317671191,NG
1317671192,1317671199,A2
1317671200,1317671207,CI
@@ -26569,7 +27092,9 @@
1317671256,1317671263,CI
1317671264,1317671271,NG
1317671272,1317671279,A2
-1317671280,1317671335,NG
+1317671280,1317671311,NG
+1317671312,1317671319,A2
+1317671320,1317671335,NG
1317671336,1317671343,BW
1317671344,1317671351,CD
1317671352,1317671359,A2
@@ -26579,113 +27104,103 @@
1317671384,1317671391,CI
1317671392,1317671399,NG
1317671400,1317671407,IQ
-1317671408,1317671423,NG
+1317671408,1317671415,A2
+1317671416,1317671423,NG
1317671424,1317671439,A2
1317671440,1317671487,NG
-1317671488,1317671511,AO
-1317671512,1317671519,A2
-1317671520,1317671527,AO
+1317671488,1317671503,AO
+1317671504,1317671527,A2
1317671528,1317671543,NG
1317671544,1317671551,GH
1317671552,1317671567,NG
1317671568,1317671583,A2
1317671584,1317671591,NG
-1317671592,1317671599,A2
-1317671600,1317671607,NG
+1317671592,1317671607,A2
1317671608,1317671615,GH
1317671616,1317671647,A2
1317671648,1317671679,NG
1317671680,1317671687,LR
-1317671688,1317671703,A2
-1317671704,1317671727,NG
-1317671728,1317671735,A2
-1317671736,1317671743,NG
-1317671744,1317671759,A2
+1317671688,1317671711,A2
+1317671712,1317671727,NG
+1317671728,1317671759,A2
1317671760,1317671767,IQ
-1317671768,1317671775,A2
-1317671776,1317671807,NG
+1317671768,1317671783,A2
+1317671784,1317671807,NG
1317671808,1317671823,CI
1317671824,1317671831,NG
-1317671832,1317671839,GH
-1317671840,1317671847,AO
-1317671848,1317671871,NG
-1317671872,1317671879,A2
-1317671880,1317671895,NG
+1317671832,1317671847,A2
+1317671848,1317671863,NG
+1317671864,1317671887,A2
+1317671888,1317671895,NG
1317671896,1317671903,CM
1317671904,1317671911,NG
1317671912,1317671919,AO
1317671920,1317671927,NG
1317671928,1317671935,A2
1317671936,1317672447,GA
-1317672448,1317672455,NG
-1317672456,1317672463,A2
+1317672448,1317672463,A2
1317672464,1317672471,NG
1317672472,1317672479,A2
1317672480,1317672487,ZM
-1317672488,1317672511,NG
-1317672512,1317672519,A2
-1317672520,1317672527,NG
-1317672528,1317672543,A2
+1317672488,1317672503,NG
+1317672504,1317672543,A2
1317672544,1317672551,CD
1317672552,1317672583,A2
1317672584,1317672591,CD
1317672592,1317672599,NG
-1317672600,1317672607,A2
-1317672608,1317672615,CM
-1317672616,1317672631,NG
-1317672632,1317672639,A2
-1317672640,1317672655,NG
+1317672600,1317672615,A2
+1317672616,1317672623,NG
+1317672624,1317672655,A2
1317672656,1317672663,CD
-1317672664,1317672695,NG
-1317672696,1317672703,A2
+1317672664,1317672679,NG
+1317672680,1317672703,A2
1317672704,1317672711,NG
-1317672712,1317672719,A2
-1317672720,1317672727,LR
+1317672712,1317672727,A2
1317672728,1317672735,NG
1317672736,1317672743,LR
1317672744,1317672759,A2
1317672760,1317672767,NG
1317672768,1317672775,A2
1317672776,1317672783,NG
-1317672784,1317672791,AO
-1317672792,1317672815,A2
+1317672784,1317672815,A2
1317672816,1317672823,BW
1317672824,1317672831,NG
1317672832,1317672839,A2
-1317672840,1317672855,NG
-1317672856,1317672863,A2
+1317672840,1317672847,NG
+1317672848,1317672863,A2
1317672864,1317672895,NG
1317672896,1317672903,A2
1317672904,1317672919,CI
1317672920,1317672927,GH
1317672928,1317672951,NG
-1317672952,1317672959,AO
+1317672952,1317672959,A2
1317672960,1317673239,NG
1317673240,1317673255,A2
-1317673256,1317673287,NG
-1317673288,1317673295,LR
-1317673296,1317673303,NG
-1317673304,1317673311,A2
+1317673256,1317673271,NG
+1317673272,1317673279,A2
+1317673280,1317673287,NG
+1317673288,1317673311,A2
1317673312,1317673319,NG
-1317673320,1317673327,LR
-1317673328,1317673335,NG
+1317673320,1317673335,A2
1317673336,1317673343,GH
-1317673344,1317673351,A2
-1317673352,1317673375,NG
+1317673344,1317673359,A2
+1317673360,1317673375,NG
1317673376,1317673383,AO
-1317673384,1317673415,NG
-1317673416,1317673423,A2
+1317673384,1317673391,NG
+1317673392,1317673399,A2
+1317673400,1317673407,NG
+1317673408,1317673423,A2
1317673424,1317673431,NG
-1317673432,1317673439,AO
-1317673440,1317673447,A2
+1317673432,1317673447,A2
1317673448,1317673463,AO
1317673464,1317673471,A2
1317673472,1317673479,NG
-1317673480,1317673487,A2
-1317673488,1317673495,HK
+1317673480,1317673495,A2
1317673496,1317673527,NG
1317673528,1317673535,A2
-1317673536,1317673575,NG
+1317673536,1317673551,NG
+1317673552,1317673559,A2
+1317673560,1317673575,NG
1317673576,1317673583,CD
1317673584,1317673591,A2
1317673592,1317673615,NG
@@ -26693,31 +27208,23 @@
1317673624,1317673631,NG
1317673632,1317673639,A2
1317673640,1317673647,AO
-1317673648,1317673655,A2
-1317673656,1317673671,NG
+1317673648,1317673671,A2
1317673672,1317673679,CM
1317673680,1317673687,IQ
-1317673688,1317673711,NG
+1317673688,1317673695,A2
+1317673696,1317673703,NG
+1317673704,1317673711,A2
1317673712,1317673719,CO
1317673720,1317673727,NG
-1317673728,1317673743,AO
+1317673728,1317673735,A2
+1317673736,1317673743,AO
1317673744,1317673751,IQ
-1317673752,1317673759,A2
-1317673760,1317673767,NG
-1317673768,1317673775,AO
-1317673776,1317673783,NG
-1317673784,1317673791,AO
-1317673792,1317673799,NG
-1317673800,1317673807,A2
-1317673808,1317673815,NG
+1317673752,1317673815,A2
1317673816,1317673823,LR
-1317673824,1317673831,NG
-1317673832,1317673839,AO
-1317673840,1317673847,NG
-1317673848,1317673855,A2
+1317673824,1317673855,A2
1317673856,1317673871,NG
-1317673872,1317673895,A2
-1317673896,1317673911,NG
+1317673872,1317673903,A2
+1317673904,1317673911,NG
1317673912,1317673919,AO
1317673920,1317673927,CI
1317673928,1317673943,NG
@@ -26728,7 +27235,7 @@
1317674240,1317674247,A2
1317674248,1317674255,NG
1317674256,1317674263,CM
-1317674264,1317674271,AO
+1317674264,1317674271,A2
1317674272,1317674279,NG
1317674280,1317674287,CD
1317674288,1317674295,GH
@@ -26736,29 +27243,23 @@
1317674304,1317674319,NG
1317674320,1317674351,A2
1317674352,1317674359,NG
-1317674360,1317674367,AO
-1317674368,1317674375,NG
-1317674376,1317674383,A2
+1317674360,1317674383,A2
1317674384,1317674399,NG
-1317674400,1317674407,A2
-1317674408,1317674415,NG
+1317674400,1317674415,A2
1317674416,1317674423,AO
1317674424,1317674431,NG
-1317674432,1317674440,AO
+1317674432,1317674439,A2
+1317674440,1317674440,AO
1317674441,1317674447,A2
1317674448,1317674455,AO
1317674456,1317674471,NG
-1317674472,1317674479,A2
-1317674480,1317674487,AO
+1317674472,1317674487,A2
1317674488,1317674495,NG
-1317674496,1317674503,A2
-1317674504,1317674511,AO
-1317674512,1317674519,NG
-1317674520,1317674527,A2
+1317674496,1317674527,A2
1317674528,1317674535,NG
1317674536,1317674543,IQ
-1317674544,1317674599,NG
-1317674600,1317674607,A2
+1317674544,1317674575,NG
+1317674576,1317674607,A2
1317674608,1317674615,NG
1317674616,1317674623,IQ
1317674624,1317674631,NG
@@ -26766,21 +27267,23 @@
1317674640,1317674647,NG
1317674648,1317674655,A2
1317674656,1317674671,NG
-1317674672,1317674679,A2
-1317674680,1317674687,AO
-1317674688,1317674735,NG
+1317674672,1317674687,A2
+1317674688,1317674703,NG
+1317674704,1317674711,A2
+1317674712,1317674735,NG
1317674736,1317674743,AO
1317674744,1317674751,IQ
1317674752,1317674791,NG
1317674792,1317674799,A2
1317674800,1317674807,NG
1317674808,1317674823,A2
-1317674824,1317674871,NG
-1317674872,1317674879,A2
+1317674824,1317674863,NG
+1317674864,1317674879,A2
1317674880,1317674887,NG
-1317674888,1317674911,AO
+1317674888,1317674895,AO
+1317674896,1317674911,A2
1317674912,1317674927,NG
-1317674928,1317674935,AO
+1317674928,1317674935,A2
1317674936,1317674943,NG
1317674944,1317674951,GA
1317674952,1317674959,NG
@@ -26789,32 +27292,32 @@
1317674976,1317674991,A2
1317674992,1317675007,NG
1317675008,1317675023,A2
-1317675024,1317675047,NG
+1317675024,1317675031,NG
+1317675032,1317675039,A2
+1317675040,1317675047,NG
1317675048,1317675055,A2
1317675056,1317675063,NG
1317675064,1317675071,AO
1317675072,1317675095,NG
1317675096,1317675119,A2
1317675120,1317675127,NG
-1317675128,1317675135,HK
-1317675136,1317675143,NG
-1317675144,1317675159,A2
-1317675160,1317675167,AO
-1317675168,1317675175,NG
-1317675176,1317675183,A2
+1317675128,1317675183,A2
1317675184,1317675199,CM
-1317675200,1317675231,NG
+1317675200,1317675223,NG
+1317675224,1317675231,A2
1317675232,1317675239,LR
-1317675240,1317675255,AO
-1317675256,1317675263,A2
-1317675264,1317675279,NG
+1317675240,1317675247,A2
+1317675248,1317675255,AO
+1317675256,1317675271,A2
+1317675272,1317675279,NG
1317675280,1317675287,CM
1317675288,1317675295,A2
1317675296,1317675319,NG
1317675320,1317675343,CM
-1317675344,1317675351,AO
+1317675344,1317675351,A2
1317675352,1317675359,IQ
-1317675360,1317675375,NG
+1317675360,1317675367,NG
+1317675368,1317675375,A2
1317675376,1317675383,CM
1317675384,1317675391,NG
1317675392,1317675407,A2
@@ -26823,19 +27326,18 @@
1317675424,1317675439,NG
1317675440,1317675447,A2
1317675448,1317675455,NG
-1317675456,1317675463,CD
+1317675456,1317675463,A2
1317675464,1317675471,CI
1317675472,1317675479,A2
-1317675480,1317675511,NG
-1317675512,1317675519,A2
-1317675520,1317675527,NG
-1317675528,1317675535,AO
+1317675480,1317675487,NG
+1317675488,1317675503,A2
+1317675504,1317675511,NG
+1317675512,1317675535,A2
1317675536,1317675543,NG
1317675544,1317675551,IQ
1317675552,1317675559,NG
1317675560,1317675567,NA
-1317675568,1317675575,AO
-1317675576,1317675583,A2
+1317675568,1317675583,A2
1317675584,1317675591,LR
1317675592,1317675607,NG
1317675608,1317675623,A2
@@ -26844,47 +27346,46 @@
1317675648,1317675655,LR
1317675656,1317675663,NG
1317675664,1317675671,A2
-1317675672,1317675687,NG
-1317675688,1317675695,CM
+1317675672,1317675679,NG
+1317675680,1317675695,A2
1317675696,1317675703,NG
1317675704,1317675711,A2
1317675712,1317675719,CM
1317675720,1317675735,NG
-1317675736,1317675743,CD
+1317675736,1317675743,A2
1317675744,1317675751,GH
1317675752,1317675759,NG
1317675760,1317675775,GH
1317675776,1317675783,NG
1317675784,1317675815,A2
1317675816,1317675831,NG
-1317675832,1317675855,A2
-1317675856,1317675863,CM
-1317675864,1317675903,A2
-1317675904,1317675911,GN
+1317675832,1317675911,A2
1317675912,1317675927,NG
-1317675928,1317675935,A2
-1317675936,1317675943,NG
-1317675944,1317675951,A2
-1317675952,1317675959,NG
-1317675960,1317676287,A2
+1317675928,1317675951,A2
+1317675952,1317675967,NG
+1317675968,1317676287,A2
1317676288,1317676543,LR
1317676544,1317676583,A2
1317676584,1317676591,NG
-1317676592,1317676663,A2
-1317676664,1317676671,NG
-1317676672,1317676807,A2
-1317676808,1317676815,NG
-1317676816,1317676823,A2
+1317676592,1317676655,A2
+1317676656,1317676671,NG
+1317676672,1317676823,A2
1317676824,1317676831,NG
-1317676832,1317676847,A2
-1317676848,1317676855,NG
-1317676856,1317676895,A2
-1317676896,1317676935,NG
-1317676936,1317676991,A2
+1317676832,1317676895,A2
+1317676896,1317676919,NG
+1317676920,1317676991,A2
1317676992,1317676999,LR
1317677000,1317677007,IQ
1317677008,1317677015,IT
-1317677016,1317677223,A2
+1317677016,1317677023,A2
+1317677024,1317677031,NG
+1317677032,1317677079,A2
+1317677080,1317677087,SD
+1317677088,1317677143,A2
+1317677144,1317677151,SD
+1317677152,1317677199,A2
+1317677200,1317677207,NG
+1317677208,1317677223,A2
1317677224,1317677231,NG
1317677232,1317677247,A2
1317677248,1317677255,NG
@@ -26899,9 +27400,7 @@
1317685504,1317685631,BE
1317685632,1317686271,DE
1317686272,1317686287,NL
-1317686288,1317686303,DE
-1317686304,1317686319,NL
-1317686320,1317686335,DE
+1317686288,1317686335,DE
1317686336,1317686399,NL
1317686400,1317695743,DE
1317695744,1317695999,CH
@@ -26940,8 +27439,8 @@
1317842944,1317843071,CY
1317843072,1317843135,HK
1317843136,1317843199,CY
-1317843200,1317843327,US
-1317843328,1317847039,NL
+1317843200,1317843391,US
+1317843392,1317847039,NL
1317847040,1317863423,RU
1317863424,1317879807,GB
1317879808,1317896191,SK
@@ -27002,11 +27501,15 @@
1318707200,1318707775,FR
1318707776,1318707783,GB
1318707784,1318708511,FR
-1318708512,1318708527,GB
-1318708528,1318708543,FR
-1318708544,1318708547,GB
-1318708548,1318708559,FR
-1318708560,1318708991,GB
+1318708512,1318708519,GB
+1318708520,1318708523,FR
+1318708524,1318708527,GB
+1318708528,1318708599,FR
+1318708600,1318708607,GB
+1318708608,1318708631,FR
+1318708632,1318708731,GB
+1318708732,1318708735,FR
+1318708736,1318708991,GB
1318708992,1318711647,FR
1318711648,1318711663,IT
1318711664,1318713855,FR
@@ -27135,7 +27638,6 @@
1331881984,1331883007,GB
1331883008,1331883263,SE
1331883264,1331886079,GB
-1331886080,1331888127,ES
1331888128,1331890175,SE
1331890176,1331892223,IT
1331892224,1331894271,RU
@@ -27160,6 +27662,7 @@
1331929088,1331931135,FR
1331931136,1331933183,SE
1331933184,1331935231,TR
+1331935232,1331937279,NL
1331937280,1331937535,GB
1331937536,1331937567,SM
1331937568,1331937583,US
@@ -27170,9 +27673,12 @@
1331938192,1331938207,AE
1331938208,1331938375,GB
1331938376,1331938383,AE
-1331938384,1331938823,GB
+1331938384,1331938399,IE
+1331938400,1331938823,GB
1331938824,1331938831,US
-1331938832,1331939327,GB
+1331938832,1331938839,NG
+1331938840,1331938847,IE
+1331938848,1331939327,GB
1331939328,1331941375,BE
1331941376,1331943423,ES
1331943424,1331945471,RU
@@ -27217,7 +27723,8 @@
1333428224,1333460991,RU
1333460992,1333493759,GB
1333493760,1333526527,TR
-1333526528,1333559295,BG
+1333526528,1333551103,BG
+1333551104,1333559295,PL
1333559296,1333592063,UA
1333592064,1333624831,IE
1333624832,1333657599,MK
@@ -27244,6 +27751,7 @@
1334165504,1334173695,PL
1334173696,1334181887,LT
1334181888,1334190079,RU
+1334190080,1334198271,BG
1334198272,1334206463,RU
1334206464,1334214655,FI
1334214656,1334222847,JO
@@ -27258,9 +27766,7 @@
1334288384,1334296575,PL
1334296576,1334304767,UA
1334304768,1334312959,RU
-1334312960,1334316031,SE
-1334316032,1334316543,NO
-1334316544,1334343047,SE
+1334312960,1334343047,SE
1334343048,1334343055,NO
1334343056,1334345727,SE
1334345728,1334378495,RU
@@ -27286,9 +27792,7 @@
1334584256,1334584287,AT
1334584288,1334584351,DE
1334584352,1334584383,LU
-1334584384,1334584903,DE
-1334584904,1334584911,AT
-1334584912,1334584999,DE
+1334584384,1334584999,DE
1334585000,1334585007,US
1334585008,1334585111,DE
1334585112,1334585119,AT
@@ -27382,6 +27886,7 @@
1334730744,1334734847,RU
1334734848,1334738943,LT
1334738944,1334743039,CH
+1334743040,1334747135,CZ
1334747136,1334751231,RU
1334751232,1334755327,BH
1334755328,1334759423,UA
@@ -27579,47 +28084,7 @@
1346392064,1346396159,UA
1346396160,1346400255,RU
1346400256,1346404351,IT
-1346404352,1346404859,AT
-1346404860,1346404863,NL
-1346404864,1346404927,AT
-1346404928,1346404943,NL
-1346404944,1346405087,AT
-1346405088,1346405103,NL
-1346405104,1346405135,AT
-1346405136,1346405199,NL
-1346405200,1346405255,AT
-1346405256,1346405263,NL
-1346405264,1346405319,AT
-1346405320,1346405351,NL
-1346405352,1346405663,AT
-1346405664,1346405887,NL
-1346405888,1346406159,AT
-1346406160,1346406231,NL
-1346406232,1346406255,AT
-1346406256,1346406258,NL
-1346406259,1346406259,AT
-1346406260,1346406263,NL
-1346406264,1346406271,AT
-1346406272,1346406295,NL
-1346406296,1346406351,AT
-1346406352,1346406359,NL
-1346406360,1346406495,AT
-1346406496,1346406503,NL
-1346406504,1346406543,AT
-1346406544,1346406575,NL
-1346406576,1346406655,AT
-1346406656,1346406671,NL
-1346406672,1346406919,AT
-1346406920,1346406927,NL
-1346406928,1346406951,AT
-1346406952,1346406975,NL
-1346406976,1346406991,AT
-1346406992,1346407039,NL
-1346407040,1346407167,AT
-1346407168,1346407183,NL
-1346407184,1346407207,AT
-1346407208,1346407295,NL
-1346407296,1346408447,AT
+1346404352,1346408447,AT
1346408448,1346412543,LU
1346412544,1346416639,RU
1346416640,1346420735,DE
@@ -27659,8 +28124,8 @@
1346501248,1346501343,GB
1346501344,1346501375,IM
1346501376,1346501743,GB
-1346501744,1346501751,IM
-1346501752,1346501795,GB
+1346501744,1346501759,IM
+1346501760,1346501795,GB
1346501796,1346501823,IM
1346501824,1346501848,GB
1346501849,1346501879,IM
@@ -27676,7 +28141,9 @@
1346519040,1346527231,RU
1346527232,1346531327,DE
1346531328,1346535423,ES
-1346535424,1346537983,BE
+1346535424,1346537335,BE
+1346537336,1346537343,GB
+1346537344,1346537983,BE
1346537984,1346537988,AT
1346537989,1346537991,BE
1346537992,1346537999,AT
@@ -27772,6 +28239,7 @@
1346846720,1346854911,DK
1346854912,1346859007,MT
1346859008,1346863103,IR
+1346863104,1346867199,DK
1346867200,1346871295,BA
1346871296,1346879487,RU
1346879488,1346883583,FI
@@ -27788,7 +28256,6 @@
1346928640,1346932735,DE
1346932736,1346936831,DK
1346936832,1346940927,IT
-1346940928,1346945023,DE
1346945024,1346949119,PL
1346949120,1346957311,RU
1346957312,1346961407,DE
@@ -27858,6 +28325,7 @@
1347162112,1347166207,IT
1347166208,1347174399,GR
1347174400,1347182591,IT
+1347182592,1347186687,RU
1347186688,1347190783,GB
1347190784,1347194879,RU
1347194880,1347198975,SE
@@ -27884,15 +28352,21 @@
1347226624,1347227135,EG
1347227136,1347227391,HK
1347227392,1347227647,EG
-1347227648,1347229311,DE
+1347227648,1347228055,DE
+1347228056,1347228063,GR
+1347228064,1347229311,DE
1347229312,1347229343,AT
-1347229344,1347231071,DE
+1347229344,1347229895,DE
+1347229896,1347229903,GR
+1347229904,1347231071,DE
1347231072,1347231087,AT
1347231088,1347231095,GR
1347231096,1347231743,DE
1347231744,1347235839,UA
1347235840,1347239935,GE
-1347239936,1347244031,DK
+1347239936,1347240943,DK
+1347240944,1347240959,GB
+1347240960,1347244031,DK
1347244032,1347247359,GB
1347247360,1347247871,RU
1347247872,1347248127,US
@@ -27994,9 +28468,7 @@
1347293928,1347293935,US
1347293936,1347293943,NG
1347293944,1347293951,A2
-1347293952,1347293959,NG
-1347293960,1347293967,GN
-1347293968,1347293975,NG
+1347293952,1347293975,NG
1347293976,1347293983,GN
1347293984,1347293991,US
1347293992,1347293999,NG
@@ -28098,13 +28570,16 @@
1347342336,1347346431,SE
1347346432,1347350527,BG
1347350528,1347354623,RU
+1347354624,1347358719,GR
1347358720,1347362815,CZ
1347362816,1347366911,NL
1347366912,1347371007,IT
1347371008,1347375103,RU
1347375104,1347379199,GB
1347379200,1347383295,NL
-1347383296,1347387391,EE
+1347383296,1347386751,EE
+1347386752,1347386815,MY
+1347386816,1347387391,EE
1347387392,1347391487,GB
1347391488,1347395583,LB
1347395584,1347399679,SE
@@ -28128,6 +28603,7 @@
1347424352,1347427135,DK
1347427136,1347427327,NO
1347427328,1347428351,DK
+1347428352,1347432447,BA
1347432448,1347436543,HR
1347436544,1347440639,SE
1347440640,1347444735,ES
@@ -28304,14 +28780,12 @@
1347855960,1347855967,DE
1347855968,1347855999,EU
1347856000,1347856063,DE
-1347856064,1347856079,EU
-1347856080,1347856239,DE
+1347856064,1347856095,EU
+1347856096,1347856239,DE
1347856240,1347856255,EU
1347856256,1347856383,DE
1347856384,1347856391,EU
-1347856392,1347856415,DE
-1347856416,1347856423,EU
-1347856424,1347856431,DE
+1347856392,1347856431,DE
1347856432,1347856447,EU
1347856448,1347856639,DE
1347856640,1347856895,AT
@@ -28320,8 +28794,8 @@
1347858504,1347858527,DE
1347858528,1347858559,EU
1347858560,1347858575,DE
-1347858576,1347858591,EU
-1347858592,1347858631,DE
+1347858576,1347858623,EU
+1347858624,1347858631,DE
1347858632,1347858639,EU
1347858640,1347859351,DE
1347859352,1347859359,EU
@@ -28380,11 +28854,9 @@
1347977600,1347977607,NG
1347977608,1347978007,A2
1347978008,1347978015,NG
-1347978016,1347978023,A2
-1347978024,1347978039,NG
-1347978040,1347978143,A2
-1347978144,1347978159,NG
-1347978160,1347978191,A2
+1347978016,1347978031,A2
+1347978032,1347978039,NG
+1347978040,1347978191,A2
1347978192,1347978199,NG
1347978200,1347978263,A2
1347978264,1347978271,NG
@@ -28399,9 +28871,11 @@
1347978408,1347978447,A2
1347978448,1347978463,NG
1347978464,1347978575,A2
-1347978576,1347978655,NG
-1347978656,1347978719,A2
-1347978720,1347978735,NG
+1347978576,1347978623,NG
+1347978624,1347978631,A2
+1347978632,1347978647,NG
+1347978648,1347978727,A2
+1347978728,1347978735,NG
1347978736,1347978775,A2
1347978776,1347978783,NG
1347978784,1347978847,A2
@@ -28426,16 +28900,14 @@
1347979584,1347979591,NG
1347979592,1347979743,A2
1347979744,1347979751,NG
-1347979752,1347980079,A2
-1347980080,1347980095,GH
-1347980096,1347980111,NG
+1347979752,1347980111,A2
1347980112,1347980127,GN
1347980128,1347980167,A2
1347980168,1347980175,NG
1347980176,1347980223,A2
1347980224,1347980271,NG
-1347980272,1347980287,DK
-1347980288,1347980415,A2
+1347980272,1347980279,DK
+1347980280,1347980415,A2
1347980416,1347980479,NG
1347980480,1347980543,A2
1347980544,1347980559,DK
@@ -28443,9 +28915,7 @@
1347981008,1347981015,NG
1347981016,1347981023,A2
1347981024,1347981031,NG
-1347981032,1347981183,A2
-1347981184,1347981191,NG
-1347981192,1347981239,A2
+1347981032,1347981239,A2
1347981240,1347981247,NG
1347981248,1347981255,A2
1347981256,1347981263,DK
@@ -28454,12 +28924,10 @@
1347981936,1347982031,A2
1347982032,1347982055,NG
1347982056,1347982223,A2
-1347982224,1347982239,NG
-1347982240,1347982279,A2
+1347982224,1347982231,NG
+1347982232,1347982279,A2
1347982280,1347982287,NG
-1347982288,1347982887,A2
-1347982888,1347982895,NG
-1347982896,1347982911,A2
+1347982288,1347982911,A2
1347982912,1347982919,NG
1347982920,1347982927,A2
1347982928,1347982943,NG
@@ -28475,9 +28943,7 @@
1347983304,1347983311,NG
1347983312,1347983423,A2
1347983424,1347983487,NG
-1347983488,1347983527,A2
-1347983528,1347983535,NG
-1347983536,1347983567,A2
+1347983488,1347983567,A2
1347983568,1347983575,NG
1347983576,1347983903,A2
1347983904,1347983911,NG
@@ -28495,9 +28961,7 @@
1347984720,1347984735,NG
1347984736,1347984879,A2
1347984880,1347984895,NG
-1347984896,1347984935,A2
-1347984936,1347984943,NG
-1347984944,1347984959,A2
+1347984896,1347984959,A2
1347984960,1347984991,NG
1347984992,1347985031,A2
1347985032,1347985039,NG
@@ -28530,9 +28994,7 @@
1348076032,1348076287,LV
1348076288,1348076543,RU
1348076544,1348083711,LV
-1348083712,1348086535,LU
-1348086536,1348086543,NL
-1348086544,1348091903,LU
+1348083712,1348091903,LU
1348091904,1348095999,RU
1348096000,1348100095,AL
1348100096,1348104191,DE
@@ -28760,7 +29222,9 @@
1352445688,1352445703,NL
1352445704,1352663039,DE
1352663040,1353187327,DK
-1353187328,1353253791,GB
+1353187328,1353253663,GB
+1353253664,1353253671,NL
+1353253672,1353253791,GB
1353253792,1353253823,FR
1353253824,1353255071,GB
1353255072,1353255087,CA
@@ -28782,7 +29246,9 @@
1353258504,1353258639,SE
1353258640,1353258783,GB
1353258784,1353258807,SE
-1353258808,1353265943,GB
+1353258808,1353265375,GB
+1353265376,1353265383,IE
+1353265384,1353265943,GB
1353265944,1353265951,IE
1353265952,1353266959,GB
1353266960,1353266975,IE
@@ -28794,8 +29260,8 @@
1353270528,1353270783,IE
1353270784,1353271295,GB
1353271296,1353271423,IE
-1353271424,1353271807,GB
-1353271808,1353271831,ES
+1353271424,1353271815,GB
+1353271816,1353271831,ES
1353271832,1353271839,GB
1353271840,1353271847,ES
1353271848,1353271895,GB
@@ -28808,21 +29274,13 @@
1353272056,1353272063,GB
1353272064,1353272245,ES
1353272246,1353272255,GB
-1353272256,1353272647,ES
-1353272648,1353272655,GB
-1353272656,1353272691,ES
+1353272256,1353272691,ES
1353272692,1353272695,GB
-1353272696,1353272727,ES
-1353272728,1353272735,GB
-1353272736,1353272783,ES
-1353272784,1353272799,GB
-1353272800,1353272807,ES
+1353272696,1353272807,ES
1353272808,1353272815,GB
1353272816,1353272847,ES
-1353272848,1353272879,GB
-1353272880,1353272951,ES
-1353272952,1353272959,GB
-1353272960,1353273047,ES
+1353272848,1353272863,GB
+1353272864,1353273047,ES
1353273048,1353273055,GB
1353273056,1353273343,ES
1353273344,1353273631,BE
@@ -28846,7 +29304,9 @@
1353274896,1353274911,GB
1353274912,1353274919,ES
1353274920,1353274927,GB
-1353274928,1353275023,ES
+1353274928,1353275007,ES
+1353275008,1353275015,GB
+1353275016,1353275023,ES
1353275024,1353275039,GB
1353275040,1353275087,ES
1353275088,1353275103,GB
@@ -28863,10 +29323,14 @@
1353279744,1353279751,GB
1353279752,1353279759,IT
1353279760,1353279763,GB
-1353279764,1353280119,IT
-1353280120,1353280135,GB
-1353280136,1353280543,IT
-1353280544,1353280575,GB
+1353279764,1353280079,IT
+1353280080,1353280087,GB
+1353280088,1353280119,IT
+1353280120,1353280127,GB
+1353280128,1353280143,IT
+1353280144,1353280151,GB
+1353280152,1353280559,IT
+1353280560,1353280575,GB
1353280576,1353281023,IT
1353281024,1353281535,BE
1353281536,1353282047,GB
@@ -28896,11 +29360,15 @@
1353288832,1353288839,GB
1353288840,1353288847,IE
1353288848,1353288855,GB
-1353288856,1353288887,IE
-1353288888,1353288895,GB
-1353288896,1353289247,IE
+1353288856,1353288879,IE
+1353288880,1353288895,GB
+1353288896,1353288959,IE
+1353288960,1353289087,GB
+1353289088,1353289247,IE
1353289248,1353289255,GB
-1353289256,1353289359,IE
+1353289256,1353289279,IE
+1353289280,1353289295,GB
+1353289296,1353289359,IE
1353289360,1353289367,GB
1353289368,1353289391,IE
1353289392,1353289407,GB
@@ -28923,16 +29391,18 @@
1353298704,1353298707,SE
1353298708,1353298719,GB
1353298720,1353298751,DE
-1353298752,1353298881,SE
+1353298752,1353298815,SE
+1353298816,1353298831,PT
+1353298832,1353298879,GB
+1353298880,1353298881,SE
1353298882,1353298887,GB
-1353298888,1353299711,SE
-1353299712,1353299839,GB
+1353298888,1353299647,SE
+1353299648,1353299839,GB
1353299840,1353299855,SE
1353299856,1353299863,GB
-1353299864,1353300063,SE
-1353300064,1353300071,GB
-1353300072,1353300079,SE
-1353300080,1353300103,GB
+1353299864,1353300079,SE
+1353300080,1353300095,PT
+1353300096,1353300103,GB
1353300104,1353300111,SE
1353300112,1353300175,GB
1353300176,1353300191,SE
@@ -28942,19 +29412,12 @@
1353300280,1353300735,SE
1353300736,1353301095,GB
1353301096,1353301103,US
-1353301104,1353305599,GB
-1353305600,1353305607,IE
-1353305608,1353306111,GB
+1353301104,1353306111,GB
1353306112,1353306623,ES
-1353306624,1353306624,BE
-1353306625,1353306687,GB
-1353306688,1353306695,BE
-1353306696,1353306703,GB
-1353306704,1353306735,BE
+1353306624,1353306687,GB
+1353306688,1353306735,BE
1353306736,1353306751,GB
-1353306752,1353306831,BE
-1353306832,1353306847,GB
-1353306848,1353307135,BE
+1353306752,1353307135,BE
1353307136,1353307143,IT
1353307144,1353308159,GB
1353308160,1353309183,FR
@@ -28964,7 +29427,9 @@
1353310608,1353310719,ES
1353310720,1353311175,IT
1353311176,1353311183,ES
-1353311184,1353311231,IT
+1353311184,1353311199,IT
+1353311200,1353311215,GB
+1353311216,1353311231,IT
1353311232,1353312255,GB
1353312256,1353312767,CH
1353312768,1353313111,IT
@@ -29098,9 +29563,7 @@
1354682772,1354682775,RS
1354682776,1354682895,DE
1354682896,1354682911,AE
-1354682912,1354682939,DE
-1354682940,1354682943,MC
-1354682944,1354683095,DE
+1354682912,1354683095,DE
1354683096,1354683103,IT
1354683104,1354683391,DE
1354683392,1354683903,PL
@@ -29186,7 +29649,7 @@
1357332480,1357333247,DE
1357333248,1357333503,GB
1357333504,1357333759,IR
-1357333760,1357333823,EU
+1357333760,1357333823,FR
1357333824,1357333855,GB
1357333856,1357334015,ES
1357334016,1357334271,TZ
@@ -29201,10 +29664,9 @@
1357336576,1357337599,NL
1357337600,1357337855,ES
1357337856,1357338111,SA
-1357338112,1357338623,EU
-1357338624,1357338879,FR
+1357338112,1357338879,FR
1357338880,1357339391,NO
-1357339392,1357339647,AT
+1357339392,1357339647,ES
1357339648,1357339903,DZ
1357339904,1357340159,GB
1357340160,1357340415,DE
@@ -29213,19 +29675,18 @@
1357342720,1357348863,EU
1357348864,1357349119,DE
1357349120,1357349375,LU
-1357349376,1357349887,EU
+1357349376,1357349887,GB
1357349888,1357350399,ES
1357350400,1357350911,QA
1357350912,1357351167,GB
1357351168,1357351423,PL
-1357351424,1357351935,EU
-1357351936,1357352959,GB
+1357351424,1357352959,GB
1357352960,1357355007,EU
1357355008,1357355263,NL
1357355264,1357355775,FR
1357355776,1357356031,GB
1357356032,1357356543,ES
-1357356544,1357357055,EU
+1357356544,1357357055,PT
1357357056,1357357567,ES
1357357568,1357358079,DE
1357358080,1357358335,ES
@@ -29261,7 +29722,8 @@
1357366880,1357366911,GB
1357366912,1357367039,EU
1357367040,1357367295,GB
-1357367296,1357367807,EU
+1357367296,1357367551,FR
+1357367552,1357367807,EU
1357367808,1357368063,GB
1357368064,1357368831,GN
1357368832,1357369343,ES
@@ -29272,7 +29734,7 @@
1357370368,1357370879,EU
1357370880,1357371391,LY
1357371392,1357371647,GB
-1357371648,1357371903,EU
+1357371648,1357371903,FR
1357371904,1357372159,RU
1357372160,1357372415,GB
1357372416,1357372927,EU
@@ -29361,10 +29823,13 @@
1357883552,1357883583,EU
1357883584,1357883727,FR
1357883728,1357883759,EU
-1357883760,1357883935,FR
+1357883760,1357883903,FR
+1357883904,1357883911,EU
+1357883912,1357883935,FR
1357883936,1357883999,EU
1357884000,1357884031,FR
-1357884032,1357884159,EU
+1357884032,1357884095,RU
+1357884096,1357884159,EU
1357884160,1357884423,FR
1357884424,1357884427,BE
1357884428,1357884439,EU
@@ -29571,19 +30036,22 @@
1358223728,1358223775,GB
1358223776,1358223843,DE
1358223844,1358223871,GB
-1358223872,1358223911,DE
+1358223872,1358223887,NL
+1358223888,1358223911,DE
1358223912,1358223927,NL
-1358223928,1358223967,DE
-1358223968,1358224055,NL
-1358224056,1358224511,DE
+1358223928,1358223975,DE
+1358223976,1358223991,NL
+1358223992,1358223999,DE
+1358224000,1358224079,NL
+1358224080,1358224511,DE
1358224512,1358224519,BE
1358224520,1358224611,DE
1358224612,1358224651,BE
1358224652,1358224655,DE
1358224656,1358224719,BE
1358224720,1358224927,DE
-1358224928,1358225119,IT
-1358225120,1358225407,DE
+1358224928,1358225127,IT
+1358225128,1358225407,DE
1358225408,1358229503,RU
1358229504,1358229631,DE
1358229632,1358229639,LU
@@ -29626,9 +30094,7 @@
1358295040,1358299135,RU
1358299136,1358303231,DZ
1358303232,1358307327,RU
-1358307328,1358313215,DE
-1358313216,1358313727,ES
-1358313728,1358315519,DE
+1358307328,1358315519,DE
1358315520,1358323711,RU
1358323712,1358327807,LU
1358327808,1358328671,DE
@@ -29759,7 +30225,7 @@
1358524416,1358528511,DE
1358528512,1358536703,RU
1358536704,1358540799,HU
-1358540800,1358544895,RU
+1358540800,1358548991,RU
1358548992,1358553087,JO
1358553088,1358557183,UA
1358557184,1358559503,IE
@@ -29775,7 +30241,7 @@
1358598144,1358602239,IL
1358602240,1358622719,RU
1358622720,1358626815,SK
-1358626816,1358630911,GB
+1358626816,1358630911,A2
1358630912,1358634495,US
1358634496,1358635007,GB
1358635008,1358639103,TR
@@ -29786,10 +30252,8 @@
1358655488,1358667775,RU
1358667776,1358668067,PT
1358668068,1358668071,GB
-1358668072,1358668231,PT
-1358668232,1358668239,GB
-1358668240,1358668263,PT
-1358668264,1358668279,GB
+1358668072,1358668271,PT
+1358668272,1358668279,ES
1358668280,1358668359,PT
1358668360,1358668367,GB
1358668368,1358668463,PT
@@ -29801,9 +30265,7 @@
1358668800,1358668807,GB
1358668808,1358668927,PT
1358668928,1358668959,ES
-1358668960,1358668983,PT
-1358668984,1358668991,GB
-1358668992,1358669351,PT
+1358668960,1358669351,PT
1358669352,1358669359,GB
1358669360,1358669431,PT
1358669432,1358669439,GB
@@ -29819,9 +30281,13 @@
1358670016,1358670023,GB
1358670024,1358670071,PT
1358670072,1358670079,GB
-1358670080,1358670175,PT
-1358670176,1358670335,GB
-1358670336,1358671415,PT
+1358670080,1358670183,PT
+1358670184,1358670191,GB
+1358670192,1358670199,PT
+1358670200,1358670207,GB
+1358670208,1358671383,PT
+1358671384,1358671391,GB
+1358671392,1358671415,PT
1358671416,1358671423,GB
1358671424,1358671431,PT
1358671432,1358671439,GB
@@ -29899,7 +30365,9 @@
1358740672,1358740687,GB
1358740688,1358740883,SE
1358740884,1358740887,NL
-1358740888,1358741055,SE
+1358740888,1358740927,SE
+1358740928,1358740943,DK
+1358740944,1358741055,SE
1358741056,1358741071,GB
1358741072,1358741503,SE
1358741504,1358745599,IT
@@ -30343,14 +30811,13 @@
1360322560,1360326655,FI
1360326656,1360330751,PT
1360330752,1360334847,UA
-1360334848,1360338943,AT
1360338944,1360343039,CY
1360343040,1360347135,SA
1360347136,1360351231,GB
1360351232,1360355327,AZ
1360355328,1360359423,EG
1360359424,1360363519,AT
-1360363520,1360367615,IT
+1360363520,1360365567,IT
1360367616,1360371711,IE
1360371712,1360375807,TR
1360375808,1360379903,NL
@@ -30400,6 +30867,7 @@
1360556032,1360564223,RU
1360564224,1360568319,AT
1360568320,1360572415,ES
+1360572416,1360576511,RU
1360576512,1360580607,GB
1360580608,1360584703,UA
1360584704,1360588799,IT
@@ -30411,14 +30879,16 @@
1360613376,1360617471,SE
1360617472,1360621567,IT
1360621568,1360625663,ES
-1360625664,1360627711,A2
-1360627712,1360627743,LB
-1360627744,1360627967,A2
+1360625664,1360627455,DE
+1360627456,1360627743,LB
+1360627744,1360627967,DE
1360627968,1360628095,IQ
1360628096,1360628223,LU
1360628224,1360628735,LB
1360628736,1360628991,IQ
-1360628992,1360629503,A2
+1360628992,1360629055,TR
+1360629056,1360629247,DE
+1360629248,1360629503,A2
1360629504,1360629759,IQ
1360629760,1360633855,SE
1360633856,1360637951,RU
@@ -30917,7 +31387,6 @@
1361038312,1361038319,NL
1361038320,1361038335,US
1361038336,1361039359,NL
-1361039360,1361043455,IT
1361043456,1361051647,NO
1361051648,1362100223,ES
1362100224,1362395135,FR
@@ -30989,9 +31458,7 @@
1364526592,1364528639,GB
1364528640,1364528895,UA
1364528896,1364530175,GB
-1364530176,1364539903,NL
-1364539904,1364540159,US
-1364540160,1364540671,NL
+1364530176,1364540671,NL
1364540672,1364540927,US
1364540928,1364577023,NL
1364577024,1364577279,GB
@@ -31096,8 +31563,8 @@
1364970496,1364971519,GB
1364971520,1364975615,CZ
1364975616,1364979711,BJ
-1364979712,1364983039,GB
-1364983040,1364983551,CH
+1364979712,1364982783,GB
+1364982784,1364983551,CH
1364983552,1364983807,GB
1364983808,1364991999,DE
1364992000,1364996095,IT
@@ -31230,7 +31697,9 @@
1365159936,1365164031,HU
1365164032,1365166255,GB
1365166256,1365166271,IE
-1365166272,1365172223,GB
+1365166272,1365166303,GB
+1365166304,1365166311,BD
+1365166312,1365172223,GB
1365172224,1365176319,LV
1365176320,1365180415,HU
1365180416,1365183231,DE
@@ -31243,50 +31712,195 @@
1365204992,1365209087,CZ
1365209088,1365213183,BE
1365213184,1365217279,RU
-1365217280,1365220391,GB
+1365217280,1365217567,GB
+1365217568,1365217575,PT
+1365217576,1365217791,GB
+1365217792,1365217807,BD
+1365217808,1365217815,US
+1365217816,1365217831,GB
+1365217832,1365217839,TR
+1365217840,1365217879,GB
+1365217880,1365217919,US
+1365217920,1365217975,GB
+1365217976,1365218031,US
+1365218032,1365218039,CA
+1365218040,1365218047,GB
+1365218048,1365218303,US
+1365218304,1365218311,CA
+1365218312,1365218319,AR
+1365218320,1365218327,ZA
+1365218328,1365218351,US
+1365218352,1365218367,CY
+1365218368,1365218375,RO
+1365218376,1365218383,UA
+1365218384,1365218407,EG
+1365218408,1365218415,IN
+1365218416,1365218431,GB
+1365218432,1365218439,EG
+1365218440,1365218447,ZA
+1365218448,1365218455,CA
+1365218456,1365218459,GB
+1365218460,1365218463,US
+1365218464,1365218471,EG
+1365218472,1365218479,GB
+1365218480,1365218511,GR
+1365218512,1365218519,AU
+1365218520,1365218527,US
+1365218528,1365218543,GR
+1365218544,1365218551,CY
+1365218552,1365218559,GR
+1365218560,1365218815,GB
+1365218816,1365218879,EG
+1365218880,1365218895,US
+1365218896,1365218903,GB
+1365218904,1365218911,MU
+1365218912,1365218927,US
+1365218928,1365218943,BR
+1365218944,1365218951,IN
+1365218952,1365218959,NL
+1365218960,1365218975,US
+1365218976,1365219007,CN
+1365219008,1365219023,US
+1365219024,1365219031,DK
+1365219032,1365219039,CY
+1365219040,1365219071,GB
+1365219072,1365219103,TR
+1365219104,1365219111,SA
+1365219112,1365219119,GB
+1365219120,1365219135,US
+1365219136,1365219143,SA
+1365219144,1365219159,US
+1365219160,1365219167,CA
+1365219168,1365219183,ES
+1365219184,1365219191,CA
+1365219192,1365219199,DE
+1365219200,1365219207,IN
+1365219208,1365219215,US
+1365219216,1365219231,GB
+1365219232,1365219247,CY
+1365219248,1365219279,GB
+1365219280,1365219287,BD
+1365219288,1365219295,US
+1365219296,1365219311,GB
+1365219312,1365219327,TR
+1365219328,1365219391,US
+1365219392,1365219399,DK
+1365219400,1365219407,AU
+1365219408,1365219415,GB
+1365219416,1365219423,TR
+1365219424,1365219431,US
+1365219432,1365219439,RU
+1365219440,1365219455,US
+1365219456,1365219463,NL
+1365219464,1365219471,AU
+1365219472,1365219479,IL
+1365219480,1365219511,GB
+1365219512,1365219519,BD
+1365219520,1365219583,US
+1365219584,1365219647,CN
+1365219648,1365219663,IN
+1365219664,1365219671,TR
+1365219672,1365219679,GB
+1365219680,1365219687,BD
+1365219688,1365219695,US
+1365219696,1365219703,DK
+1365219704,1365219711,UA
+1365219712,1365219743,TR
+1365219744,1365219751,US
+1365219752,1365219759,SG
+1365219760,1365219775,UA
+1365219776,1365219783,PY
+1365219784,1365219791,BA
+1365219792,1365219799,NO
+1365219800,1365219807,TR
+1365219808,1365219811,US
+1365219812,1365219815,AU
+1365219816,1365219903,US
+1365219904,1365219919,ES
+1365219920,1365219935,IN
+1365219936,1365219951,CA
+1365219952,1365219967,DK
+1365219968,1365219983,ES
+1365219984,1365219991,IT
+1365219992,1365220007,EE
+1365220008,1365220015,ES
+1365220016,1365220031,US
+1365220032,1365220127,CN
+1365220128,1365220143,TR
+1365220144,1365220151,IL
+1365220152,1365220159,AR
+1365220160,1365220223,US
+1365220224,1365220255,JO
+1365220256,1365220263,KW
+1365220264,1365220271,GB
+1365220272,1365220287,KW
+1365220288,1365220303,AR
+1365220304,1365220311,NL
+1365220312,1365220319,BR
+1365220320,1365220371,US
+1365220372,1365220375,GB
+1365220376,1365220387,US
+1365220388,1365220391,JO
1365220392,1365220399,ZA
-1365220400,1365220471,GB
+1365220400,1365220407,GB
+1365220408,1365220423,US
+1365220424,1365220431,GB
+1365220432,1365220435,JO
+1365220436,1365220439,US
+1365220440,1365220471,GB
1365220472,1365220479,US
1365220480,1365220487,AU
-1365220488,1365220495,GB
-1365220496,1365220503,US
-1365220504,1365220511,GB
-1365220512,1365220519,US
-1365220520,1365220527,GB
+1365220488,1365220523,US
+1365220524,1365220527,GB
1365220528,1365220535,IS
1365220536,1365220551,GB
1365220552,1365220567,IS
-1365220568,1365220575,GB
+1365220568,1365220575,IL
1365220576,1365220583,CH
1365220584,1365220599,TR
1365220600,1365220607,GR
1365220608,1365220615,TR
-1365220616,1365220623,GB
-1365220624,1365220631,US
-1365220632,1365220663,GB
+1365220616,1365220631,US
+1365220632,1365220639,GR
+1365220640,1365220663,GB
1365220664,1365220679,US
1365220680,1365220687,IT
-1365220688,1365220703,US
-1365220704,1365220719,GB
-1365220720,1365220727,US
-1365220728,1365220735,GB
-1365220736,1365220743,US
-1365220744,1365220767,GB
+1365220688,1365220727,US
+1365220728,1365220735,JO
+1365220736,1365220767,US
1365220768,1365220775,GR
-1365220776,1365220783,JO
+1365220776,1365220783,US
1365220784,1365220791,IN
1365220792,1365220799,KW
1365220800,1365220807,RU
-1365220808,1365220815,GB
+1365220808,1365220815,US
1365220816,1365220823,IN
1365220824,1365220831,GB
-1365220832,1365220839,IT
-1365220840,1365220847,GB
+1365220832,1365220847,IT
1365220848,1365220855,AU
-1365220856,1365220863,US
-1365220864,1365220895,GB
-1365220896,1365220903,GR
-1365220904,1365221375,GB
+1365220856,1365220903,US
+1365220904,1365220911,CA
+1365220912,1365220919,US
+1365220920,1365220927,KW
+1365220928,1365220935,IT
+1365220936,1365220939,AR
+1365220940,1365220943,US
+1365220944,1365220959,GB
+1365220960,1365220967,US
+1365220968,1365220975,GB
+1365220976,1365220979,US
+1365220980,1365220983,GB
+1365220984,1365220991,BR
+1365220992,1365220999,ZA
+1365221000,1365221023,US
+1365221024,1365221031,TR
+1365221032,1365221047,IL
+1365221048,1365221055,GB
+1365221056,1365221063,KW
+1365221064,1365221071,MY
+1365221072,1365221087,ES
+1365221088,1365221119,US
+1365221120,1365221375,GB
1365221376,1365225471,GE
1365225472,1365229567,UA
1365229568,1365233663,PL
@@ -31548,9 +32162,7 @@
1372702720,1372702735,DE
1372702736,1372702751,EU
1372702752,1372702991,DE
-1372702992,1372703231,EU
-1372703232,1372703263,DE
-1372703264,1372703271,EU
+1372702992,1372703271,EU
1372703272,1372703323,DE
1372703324,1372703327,EU
1372703328,1372703407,DE
@@ -31654,7 +32266,9 @@
1382154240,1382170623,FR
1382170624,1382171776,DE
1382171777,1382171791,CH
-1382171792,1382173663,DE
+1382171792,1382172215,DE
+1382172216,1382172223,CH
+1382172224,1382173663,DE
1382173664,1382173671,GB
1382173672,1382173675,DE
1382173676,1382173679,CH
@@ -31664,9 +32278,7 @@
1382177984,1382178303,LI
1382178304,1382179247,DE
1382179248,1382179279,GB
-1382179280,1382179839,DE
-1382179840,1382180863,CN
-1382180864,1382182327,DE
+1382179280,1382182327,DE
1382182328,1382182335,GB
1382182336,1382182547,DE
1382182548,1382182551,CH
@@ -31700,8 +32312,7 @@
1382212224,1382212239,FR
1382212240,1382212287,EU
1382212288,1382212351,NL
-1382212352,1382212479,FR
-1382212480,1382212607,EU
+1382212352,1382212607,EU
1382212608,1382212863,FR
1382212864,1382213183,NL
1382213184,1382213199,EU
@@ -31712,10 +32323,8 @@
1382214896,1382216831,NL
1382216832,1382216895,GB
1382216896,1382216959,NL
-1382216960,1382217215,FR
-1382217216,1382217727,NL
-1382217728,1382217983,GB
-1382217984,1382218399,NL
+1382216960,1382217215,GB
+1382217216,1382218399,NL
1382218400,1382218447,GB
1382218448,1382218455,NL
1382218456,1382218495,GB
@@ -31726,7 +32335,9 @@
1382218912,1382218959,NL
1382218960,1382218991,GB
1382218992,1382219775,NL
-1382219776,1382223551,SE
+1382219776,1382223327,SE
+1382223328,1382223359,FI
+1382223360,1382223551,SE
1382223552,1382223615,NO
1382223616,1382224287,SE
1382224288,1382224319,NO
@@ -31741,7 +32352,9 @@
1382229512,1382232575,SE
1382232576,1382232639,NO
1382232640,1382232703,DK
-1382232704,1382233407,SE
+1382232704,1382233279,SE
+1382233280,1382233343,NO
+1382233344,1382233407,SE
1382233408,1382233423,NO
1382233424,1382252543,SE
1382252544,1382268927,CZ
@@ -31790,8 +32403,8 @@
1383098368,1383099391,GB
1383099392,1383099903,DE
1383099904,1383100159,GB
-1383100160,1383100287,FR
-1383100288,1383100831,GB
+1383100160,1383100351,FR
+1383100352,1383100831,GB
1383100832,1383100847,IE
1383100848,1383100879,GB
1383100880,1383100895,IE
@@ -31824,7 +32437,24 @@
1383194624,1383202815,GB
1383202816,1383211007,RU
1383211008,1383219199,CY
-1383219200,1383227391,RS
+1383219200,1383220223,AL
+1383220224,1383222447,RS
+1383222448,1383222455,AL
+1383222456,1383223695,RS
+1383223696,1383223703,AL
+1383223704,1383225759,RS
+1383225760,1383225771,AL
+1383225772,1383225807,RS
+1383225808,1383225808,AL
+1383225809,1383225819,RS
+1383225820,1383225827,AL
+1383225828,1383226091,RS
+1383226092,1383226095,AL
+1383226096,1383226111,RS
+1383226112,1383226623,AL
+1383226624,1383226751,RS
+1383226752,1383226815,AL
+1383226816,1383227391,RS
1383227392,1383239295,RU
1383239296,1383239423,AR
1383239424,1383243775,RU
@@ -31927,9 +32557,7 @@
1383590656,1383590911,SK
1383590912,1383591167,CZ
1383591168,1383591935,SK
-1383591936,1383592887,CZ
-1383592888,1383592895,VC
-1383592896,1383596031,CZ
+1383591936,1383596031,CZ
1383596032,1384120319,FR
1384120320,1384153087,NG
1384153088,1384185855,FI
@@ -32027,27 +32655,76 @@
1384801088,1384802495,FR
1384802496,1384802559,IT
1384802560,1384808447,FR
-1384808448,1384808959,EU
-1384808960,1384808967,DE
-1384808968,1384808975,SE
+1384808448,1384808479,BE
+1384808480,1384808735,EU
+1384808736,1384808799,BE
+1384808800,1384808831,FR
+1384808832,1384808959,FI
+1384808960,1384808967,BE
+1384808968,1384808975,EU
1384808976,1384808991,DE
-1384808992,1384809007,FI
-1384809008,1384809015,PT
+1384808992,1384809015,BE
1384809016,1384809023,GB
-1384809024,1384809039,EU
-1384809040,1384809055,FR
-1384809056,1384809063,GE
-1384809064,1384809071,GB
-1384809072,1384809087,EU
-1384809088,1384809103,FR
-1384809104,1384811007,EU
+1384809024,1384809039,FR
+1384809040,1384809047,BE
+1384809048,1384809055,EU
+1384809056,1384809071,BE
+1384809072,1384809087,FR
+1384809088,1384809103,BE
+1384809104,1384809111,EU
+1384809112,1384809119,GE
+1384809120,1384809175,BE
+1384809176,1384809183,EU
+1384809184,1384809199,BE
+1384809200,1384809207,EU
+1384809208,1384809215,BE
+1384809216,1384809407,BR
+1384809408,1384809439,FR
+1384809440,1384809471,DE
+1384809472,1384809983,US
+1384809984,1384810239,PT
+1384810240,1384811007,US
1384811008,1384811519,GB
1384811520,1384811647,IR
-1384811648,1384812799,EU
-1384812800,1384813311,GB
-1384813312,1384818463,EU
-1384818464,1384818495,BE
-1384818496,1384824831,EU
+1384811648,1384811711,EU
+1384811712,1384811743,ES
+1384811744,1384811775,BE
+1384811776,1384812031,FR
+1384812032,1384812159,PR
+1384812160,1384812287,PT
+1384812288,1384812543,ES
+1384812544,1384813567,GB
+1384813568,1384814079,ES
+1384814080,1384814591,GB
+1384814592,1384815103,BE
+1384815104,1384815615,FR
+1384815616,1384816127,BE
+1384816128,1384816255,EU
+1384816256,1384816383,ES
+1384816384,1384816639,EU
+1384816640,1384817151,DK
+1384817152,1384817407,EU
+1384817408,1384817439,GB
+1384817440,1384817471,EU
+1384817472,1384817503,SE
+1384817504,1384817599,BE
+1384817600,1384817663,FR
+1384817664,1384817919,BE
+1384817920,1384818175,EU
+1384818176,1384818815,BE
+1384818816,1384818879,NL
+1384818880,1384819199,EU
+1384819200,1384819711,GB
+1384819712,1384820223,CH
+1384820224,1384820735,BE
+1384820736,1384821247,EU
+1384821248,1384821759,BE
+1384821760,1384822271,DK
+1384822272,1384822783,ES
+1384822784,1384823295,BE
+1384823296,1384823807,CH
+1384823808,1384824703,EU
+1384824704,1384824831,BE
1384824832,1384841215,GB
1384841216,1384857599,PL
1384857600,1384873983,NL
@@ -32084,7 +32761,8 @@
1385259008,1385267199,IT
1385267200,1385275391,SE
1385275392,1385283583,IT
-1385283584,1385287679,KW
+1385287680,1385289727,IS
+1385289728,1385291775,NO
1385291776,1385299967,TR
1385299968,1385308159,BG
1385308160,1385309439,BE
@@ -32138,8 +32816,8 @@
1385563936,1385564031,EU
1385564032,1385564095,IE
1385564096,1385564103,EU
-1385564104,1385564127,IE
-1385564128,1385564159,EU
+1385564104,1385564111,IE
+1385564112,1385564159,EU
1385564160,1385564231,HU
1385564232,1385564383,EU
1385564384,1385564671,HU
@@ -32207,8 +32885,8 @@
1386348544,1386414079,RU
1386414080,1386479615,GB
1386479616,1386545151,NO
-1386545152,1386582015,DE
-1386582016,1386594303,US
+1386545152,1386586111,DE
+1386586112,1386594303,US
1386594304,1386602495,DE
1386602496,1386610687,US
1386610688,1386676223,IL
@@ -32250,11 +32928,15 @@
1388388936,1388388991,NG
1388388992,1388389119,IT
1388389120,1388389135,NG
-1388389136,1388389439,IT
-1388389440,1388389471,NG
+1388389136,1388389447,IT
+1388389448,1388389471,NG
1388389472,1388389567,IT
1388389568,1388389631,NG
-1388389632,1388390143,IT
+1388389632,1388389903,IT
+1388389904,1388389911,NG
+1388389912,1388389919,IT
+1388389920,1388390015,NG
+1388390016,1388390143,IT
1388390144,1388394495,NG
1388394496,1388395519,IT
1388395520,1388396287,NG
@@ -32342,11 +33024,10 @@
1388642304,1388650495,FI
1388650496,1388658687,PL
1388658688,1388666879,GB
+1388666880,1388675071,FR
1388675072,1388675327,NL
1388675328,1388675583,EU
-1388675584,1388676095,DE
-1388676096,1388676607,EU
-1388676608,1388676863,DE
+1388675584,1388676863,DE
1388676864,1388677119,EU
1388677120,1388677375,GB
1388677376,1388677631,EU
@@ -32367,12 +33048,13 @@
1388691456,1388699647,NL
1388699648,1388707839,SE
1388707840,1388708863,RU
-1388708864,1388709119,LB
+1388708864,1388709119,LT
1388709120,1388712191,RU
1388712192,1388712703,LT
1388712704,1388713215,LB
-1388713216,1388713727,TJ
-1388713728,1388714239,LB
+1388713216,1388713727,RU
+1388713728,1388713983,LT
+1388713984,1388714239,LB
1388714240,1388714495,LT
1388714496,1388714751,RU
1388714752,1388715007,IQ
@@ -32412,11 +33094,13 @@
1388741760,1388741767,IE
1388741768,1388741787,GB
1388741788,1388741795,IE
-1388741796,1388741819,GB
+1388741796,1388741800,GB
+1388741801,1388741807,IE
+1388741808,1388741819,GB
1388741820,1388741859,IE
1388741860,1388741863,GB
-1388741864,1388742007,IE
-1388742008,1388742015,GB
+1388741864,1388742011,IE
+1388742012,1388742015,GB
1388742016,1388742019,IE
1388742020,1388742023,GB
1388742024,1388742024,IE
@@ -32428,8 +33112,8 @@
1388742740,1388743043,IE
1388743044,1388743055,GB
1388743056,1388743435,IE
-1388743436,1388743439,GB
-1388743440,1388744087,IE
+1388743436,1388743451,GB
+1388743452,1388744087,IE
1388744088,1388744095,GB
1388744096,1388744117,IE
1388744118,1388744127,GB
@@ -32451,22 +33135,20 @@
1388745916,1388745919,GB
1388745920,1388745927,IE
1388745928,1388745935,GB
-1388745936,1388745971,IE
-1388745972,1388745975,GB
-1388745976,1388746151,IE
-1388746152,1388746155,GB
-1388746156,1388746167,IE
-1388746168,1388746239,GB
+1388745936,1388746155,IE
+1388746156,1388746159,GB
+1388746160,1388746171,IE
+1388746172,1388746239,GB
1388746240,1388746659,IE
1388746660,1388746671,GB
1388746672,1388746703,IE
-1388746704,1388746707,GB
-1388746708,1388746859,IE
+1388746704,1388746711,GB
+1388746712,1388746859,IE
1388746860,1388746863,GB
1388746864,1388746895,IE
1388746896,1388746903,GB
-1388746904,1388746967,IE
-1388746968,1388746975,GB
+1388746904,1388746959,IE
+1388746960,1388746975,GB
1388746976,1388747083,IE
1388747084,1388747087,GB
1388747088,1388747551,IE
@@ -32497,12 +33179,14 @@
1388765184,1388773375,GB
1388773376,1388781567,NO
1388781568,1388789759,ES
-1388789760,1388789887,NL
-1388789888,1388789951,GB
-1388789952,1388797951,NL
+1388789760,1388797951,NL
1388797952,1388806143,RU
1388806144,1388814335,DE
-1388814336,1388821119,AX
+1388814336,1388815103,AX
+1388815104,1388815231,FI
+1388815232,1388818687,AX
+1388818688,1388818815,FI
+1388818816,1388821119,AX
1388821120,1388821150,SE
1388821151,1388821247,AX
1388821248,1388822527,SE
@@ -32610,8 +33294,9 @@
1389213208,1389213215,LY
1389213216,1389213311,A2
1389213312,1389213343,LY
-1389213344,1389215231,A2
-1389215232,1389217791,AF
+1389213344,1389214719,A2
+1389214720,1389215743,LY
+1389215744,1389217791,AF
1389217792,1389218303,A2
1389218304,1389219839,AF
1389219840,1389220095,A2
@@ -32672,9 +33357,7 @@
1389224512,1389224543,A2
1389224544,1389224559,IR
1389224560,1389224575,SA
-1389224576,1389224703,A2
-1389224704,1389224959,LY
-1389224960,1389225215,A2
+1389224576,1389225215,A2
1389225216,1389225471,SA
1389225472,1389225535,A2
1389225536,1389225599,IQ
@@ -32778,8 +33461,10 @@
1389269377,1389269759,A2
1389269760,1389269887,CD
1389269888,1389270015,A2
-1389270016,1389270271,CD
-1389270272,1389270815,A2
+1389270016,1389270079,CD
+1389270080,1389270095,A2
+1389270096,1389270111,CD
+1389270112,1389270815,A2
1389270816,1389270823,US
1389270824,1389271039,A2
1389271040,1389271295,CA
@@ -33083,7 +33768,9 @@
1401241600,1401242623,DK
1401242624,1401244159,DE
1401244160,1401246719,EU
-1401246720,1401264903,DE
+1401246720,1401257983,DE
+1401257984,1401264127,EU
+1401264128,1401264903,DE
1401264904,1401265151,EU
1401265152,1401265919,DE
1401265920,1401266175,EU
@@ -33136,6 +33823,7 @@
1401477120,1401479167,BE
1401479168,1401481215,PL
1401481216,1401485311,RU
+1401485312,1401487359,FI
1401487360,1401489407,GB
1401489408,1401491455,SE
1401491456,1401493503,NL
@@ -33179,17 +33867,19 @@
1401565184,1401567231,RU
1401567232,1401569279,GB
1401569280,1401585663,DE
-1401585664,1401595087,GB
-1401595088,1401595095,NG
-1401595096,1401599167,GB
-1401599168,1401599231,IE
+1401585664,1401599167,GB
+1401599168,1401599211,IE
+1401599212,1401599213,GB
+1401599214,1401599231,IE
1401599232,1401602047,GB
1401602048,1401618431,ES
1401618432,1401634815,AM
1401634816,1401651199,HR
1401651200,1401667583,RU
1401667584,1401683967,IT
-1401683968,1401684479,SE
+1401683968,1401684067,SE
+1401684068,1401684071,NO
+1401684072,1401684479,SE
1401684480,1401684511,DK
1401684512,1401684543,SE
1401684544,1401684607,DK
@@ -33254,7 +33944,8 @@
1401743344,1401743359,GB
1401743360,1401745439,SE
1401745440,1401745443,GB
-1401745444,1401745487,SE
+1401745444,1401745447,US
+1401745448,1401745487,SE
1401745488,1401745503,ES
1401745504,1401745919,SE
1401745920,1401745935,IT
@@ -33271,8 +33962,8 @@
1401746224,1401746239,SE
1401746240,1401746255,NL
1401746256,1401746271,ES
-1401746272,1401746275,GB
-1401746276,1401746431,SE
+1401746272,1401746279,GB
+1401746280,1401746431,SE
1401746432,1401746447,NL
1401746448,1401746467,SE
1401746468,1401746471,NL
@@ -33303,7 +33994,8 @@
1401747280,1401747295,ES
1401747296,1401747391,SE
1401747392,1401747407,DE
-1401747408,1401747487,SE
+1401747408,1401747423,GB
+1401747424,1401747487,SE
1401747488,1401747495,DK
1401747496,1401747499,SE
1401747500,1401747503,GB
@@ -33565,7 +34257,8 @@
1404026880,1404043263,ES
1404043264,1404076031,SE
1404076032,1404084223,DE
-1404084224,1404184063,SE
+1404084224,1404092415,NO
+1404092416,1404184063,SE
1404184064,1404184575,NO
1404184576,1404186623,SE
1404186624,1404187647,NO
@@ -33582,8 +34275,10 @@
1404197888,1404198911,LT
1404198912,1404200959,SE
1404200960,1404203007,NL
-1404203008,1404204031,HR
-1404204032,1404207103,SE
+1404203008,1404204800,HR
+1404204801,1404205055,SE
+1404205056,1404206079,HR
+1404206080,1404207103,SE
1404207104,1404210175,NO
1404210176,1404212223,LV
1404212224,1404215295,SE
@@ -33612,10 +34307,11 @@
1404411904,1404645375,SE
1404645376,1404645887,HR
1404645888,1404764159,SE
-1404764160,1404768255,NL
-1404768256,1404802047,SE
-1404802048,1404802815,EE
-1404802816,1404803071,SE
+1404764160,1404768511,NL
+1404768512,1404768767,SE
+1404768768,1404769279,NL
+1404769280,1404802047,SE
+1404802048,1404803071,EE
1404803072,1404803583,LV
1404803584,1404805119,SE
1404805120,1404813311,AT
@@ -33705,7 +34401,6 @@
1406763008,1406771199,BE
1406771200,1406779391,GB
1406779392,1406787583,RU
-1406787584,1406795775,AM
1406795776,1406803967,GB
1406803968,1406812159,DE
1406812160,1406820351,SE
@@ -33728,7 +34423,7 @@
1406951424,1406959615,PL
1406959616,1406964287,DE
1406964288,1406964319,CH
-1406964320,1406964327,BG
+1406964320,1406964327,DE
1406964328,1406964351,NL
1406964352,1406964735,DE
1406964736,1406964927,US
@@ -33776,7 +34471,9 @@
1407516672,1407516679,A2
1407516680,1407516687,NG
1407516688,1407516703,A2
-1407516704,1407516735,NG
+1407516704,1407516711,NG
+1407516712,1407516727,A2
+1407516728,1407516735,NG
1407516736,1407516743,UG
1407516744,1407516751,LR
1407516752,1407516759,SL
@@ -33784,15 +34481,16 @@
1407516768,1407516775,AO
1407516776,1407516783,A2
1407516784,1407516791,NG
-1407516792,1407516799,AO
-1407516800,1407516807,GH
+1407516792,1407516807,A2
1407516808,1407516815,NG
1407516816,1407516831,A2
1407516832,1407516839,NG
1407516840,1407516847,A2
1407516848,1407516855,NG
1407516856,1407516863,A2
-1407516864,1407516895,NG
+1407516864,1407516871,NG
+1407516872,1407516879,A2
+1407516880,1407516895,NG
1407516896,1407516911,A2
1407516912,1407516927,NG
1407516928,1407517183,ZW
@@ -33800,9 +34498,10 @@
1407517312,1407517383,A2
1407517384,1407517391,CD
1407517392,1407517415,A2
-1407517416,1407517439,NG
-1407517440,1407517823,A2
-1407517824,1407517887,NG
+1407517416,1407517423,NG
+1407517424,1407517431,A2
+1407517432,1407517439,NG
+1407517440,1407517887,A2
1407517888,1407517919,CD
1407517920,1407517951,A2
1407517952,1407518015,SL
@@ -33811,32 +34510,30 @@
1407518040,1407518047,CD
1407518048,1407518063,NG
1407518064,1407518079,A2
-1407518080,1407518111,FR
+1407518080,1407518111,LR
1407518112,1407518127,NG
1407518128,1407518135,KE
1407518136,1407518143,GH
-1407518144,1407518159,ZA
+1407518144,1407518151,A2
+1407518152,1407518159,ZA
1407518160,1407518167,NG
1407518168,1407518175,CD
-1407518176,1407518183,GH
-1407518184,1407518199,NG
+1407518176,1407518183,A2
+1407518184,1407518191,NG
+1407518192,1407518199,A2
1407518200,1407518207,AE
1407518208,1407518215,ZW
-1407518216,1407518223,ZA
-1407518224,1407518231,A2
-1407518232,1407518255,NG
-1407518256,1407518263,CD
+1407518216,1407518239,A2
+1407518240,1407518247,NG
+1407518248,1407518263,A2
1407518264,1407518269,GH
1407518270,1407518335,A2
1407518336,1407518343,CG
1407518344,1407518351,ZA
-1407518352,1407518359,GH
+1407518352,1407518359,A2
1407518360,1407518367,NG
1407518368,1407518375,ZA
-1407518376,1407518391,NG
-1407518392,1407518399,CD
-1407518400,1407518719,A2
-1407518720,1407518783,AO
+1407518376,1407518783,A2
1407518784,1407518815,CD
1407518816,1407518831,A2
1407518832,1407518847,NG
@@ -33846,8 +34543,7 @@
1407518976,1407518983,NG
1407518984,1407518991,A2
1407518992,1407518999,NG
-1407519000,1407519007,A2
-1407519008,1407519015,NG
+1407519000,1407519015,A2
1407519016,1407519023,AO
1407519024,1407519031,NG
1407519032,1407519039,AO
@@ -33855,7 +34551,7 @@
1407519048,1407519055,A2
1407519056,1407519063,NG
1407519064,1407519071,BJ
-1407519072,1407519079,CD
+1407519072,1407519079,A2
1407519080,1407519095,NG
1407519096,1407519103,CM
1407519104,1407519111,NG
@@ -33864,23 +34560,20 @@
1407519144,1407519151,AO
1407519152,1407519159,A2
1407519160,1407519167,AO
-1407519168,1407519175,NG
+1407519168,1407519175,A2
1407519176,1407519183,SL
1407519184,1407519191,NG
1407519192,1407519199,CD
-1407519200,1407519207,AO
+1407519200,1407519207,A2
1407519208,1407519215,TG
1407519216,1407519223,NG
1407519224,1407519231,A2
1407519232,1407519615,NG
-1407519616,1407519743,A2
-1407519744,1407519751,NG
-1407519752,1407519759,A2
-1407519760,1407519775,NG
-1407519776,1407519783,A2
+1407519616,1407519751,A2
+1407519752,1407519767,NG
+1407519768,1407519783,A2
1407519784,1407519791,NG
-1407519792,1407519799,IQ
-1407519800,1407519839,A2
+1407519792,1407519839,A2
1407519840,1407519855,NG
1407519856,1407519863,A2
1407519864,1407519871,NG
@@ -33889,14 +34582,12 @@
1407520280,1407520303,A2
1407520304,1407520327,NG
1407520328,1407520335,SL
-1407520336,1407520343,A2
-1407520344,1407520359,NG
+1407520336,1407520351,A2
+1407520352,1407520359,NG
1407520360,1407520367,CD
1407520368,1407520375,A2
1407520376,1407520397,NG
-1407520398,1407520399,A2
-1407520400,1407520423,NG
-1407520424,1407520439,A2
+1407520398,1407520439,A2
1407520440,1407520447,CD
1407520448,1407520463,NG
1407520464,1407520519,A2
@@ -33913,21 +34604,16 @@
1407520632,1407520639,A2
1407520640,1407520655,NG
1407520656,1407520663,GA
-1407520664,1407520671,A2
-1407520672,1407520679,CM
-1407520680,1407520687,A2
+1407520664,1407520687,A2
1407520688,1407520695,NG
1407520696,1407520711,A2
1407520712,1407520719,NG
-1407520720,1407520727,A2
-1407520728,1407520735,AO
-1407520736,1407520759,A2
+1407520720,1407520759,A2
1407520760,1407520767,CD
1407520768,1407520775,ZW
1407520776,1407520783,A2
1407520784,1407520791,SD
-1407520792,1407520839,A2
-1407520840,1407520847,NG
+1407520792,1407520847,A2
1407520848,1407520855,ZM
1407520856,1407520863,A2
1407520864,1407520871,NG
@@ -33936,25 +34622,23 @@
1407520904,1407520911,NG
1407520912,1407520919,ZW
1407520920,1407520927,IQ
-1407520928,1407520943,A2
-1407520944,1407520951,IQ
+1407520928,1407520951,A2
1407520952,1407520959,ZW
1407520960,1407520967,TZ
1407520968,1407520975,CD
1407520976,1407520983,A2
1407520984,1407520991,ZM
-1407520992,1407520999,AO
-1407521000,1407521023,A2
+1407520992,1407521023,A2
1407521024,1407521031,ZW
1407521032,1407521055,A2
1407521056,1407521063,KE
1407521064,1407521127,A2
1407521128,1407521135,NG
-1407521136,1407521415,A2
+1407521136,1407521215,A2
+1407521216,1407521223,NG
+1407521224,1407521415,A2
1407521416,1407521423,LR
-1407521424,1407522047,A2
-1407522048,1407522303,TZ
-1407522304,1407522319,A2
+1407521424,1407522319,A2
1407522320,1407522327,BF
1407522328,1407522335,NG
1407522336,1407522351,SO
@@ -33962,19 +34646,17 @@
1407522360,1407522367,NG
1407522368,1407522375,A2
1407522376,1407522383,LR
-1407522384,1407522399,A2
-1407522400,1407522407,NG
+1407522384,1407522407,A2
1407522408,1407522415,LR
-1407522416,1407522431,NG
+1407522416,1407522431,A2
1407522432,1407522439,IQ
1407522440,1407522440,NG
1407522441,1407522463,A2
1407522464,1407522479,NG
-1407522480,1407522487,CD
-1407522488,1407522495,A2
+1407522480,1407522495,A2
1407522496,1407522503,NG
-1407522504,1407522527,A2
-1407522528,1407522559,NG
+1407522504,1407522535,A2
+1407522536,1407522559,NG
1407522560,1407522567,A2
1407522568,1407522575,NG
1407522576,1407522583,A2
@@ -33993,20 +34675,21 @@
1407522712,1407522727,A2
1407522728,1407522735,CD
1407522736,1407522775,A2
-1407522776,1407522799,NG
+1407522776,1407522791,NG
+1407522792,1407522799,A2
1407522800,1407522807,ZM
-1407522808,1407522815,IQ
+1407522808,1407522815,A2
1407522816,1407523071,ZW
1407523072,1407523279,A2
1407523280,1407523287,MZ
1407523288,1407523295,NG
1407523296,1407523327,A2
-1407523328,1407523343,MW
+1407523328,1407523335,MW
+1407523336,1407523343,A2
1407523344,1407523351,NG
1407523352,1407523359,LU
1407523360,1407523367,ZW
-1407523368,1407523375,NG
-1407523376,1407523391,A2
+1407523368,1407523391,A2
1407523392,1407523455,ZW
1407523456,1407523519,MW
1407523520,1407523535,A2
@@ -34015,24 +34698,32 @@
1407523560,1407523567,KE
1407523568,1407523575,A2
1407523576,1407523583,MW
-1407523584,1407523839,SO
+1407523584,1407523839,A2
1407523840,1407524351,MW
1407524352,1407524607,GB
-1407524608,1407524615,A2
+1407524608,1407524615,ZW
1407524616,1407524623,CM
1407524624,1407524631,NG
-1407524632,1407524639,BF
-1407524640,1407524655,A2
+1407524632,1407524639,A2
+1407524640,1407524647,NG
+1407524648,1407524655,CD
1407524656,1407524663,NG
1407524664,1407524687,A2
1407524688,1407524703,MZ
-1407524704,1407525071,A2
+1407524704,1407524735,A2
+1407524736,1407524743,NG
+1407524744,1407524783,A2
+1407524784,1407524791,ZW
+1407524792,1407524967,A2
+1407524968,1407524975,NG
+1407524976,1407525071,A2
1407525072,1407525079,NG
-1407525080,1407526911,A2
-1407526912,1407527935,MZ
-1407527936,1407529023,A2
+1407525080,1407525247,A2
+1407525248,1407525255,CD
+1407525256,1407525263,NG
+1407525264,1407529023,A2
1407529024,1407529087,NG
-1407529088,1407529095,TZ
+1407529088,1407529095,A2
1407529096,1407529103,ZW
1407529104,1407529111,NG
1407529112,1407529127,A2
@@ -34041,25 +34732,20 @@
1407529144,1407529151,ZW
1407529152,1407529183,A2
1407529184,1407529191,NG
-1407529192,1407529199,MZ
-1407529200,1407529207,A2
+1407529192,1407529207,A2
1407529208,1407529215,NG
1407529216,1407531007,A2
-1407531008,1407531775,NG
-1407531776,1407532543,A2
+1407531008,1407531519,NG
+1407531520,1407532543,A2
1407532544,1407532551,UG
1407532552,1407532559,AO
1407532560,1407532583,A2
1407532584,1407532591,ZW
-1407532592,1407532607,A2
-1407532608,1407532615,ZW
+1407532592,1407532615,A2
1407532616,1407532623,KG
-1407532624,1407532631,A2
-1407532632,1407532639,MW
-1407532640,1407532647,TZ
-1407532648,1407532663,A2
+1407532624,1407532663,A2
1407532664,1407532671,TZ
-1407532672,1407532799,ZW
+1407532672,1407532799,A2
1407532800,1407532927,SO
1407532928,1407533055,A2
1407533056,1407533311,NG
@@ -34070,8 +34756,8 @@
1407533376,1407533407,CD
1407533408,1407533423,A2
1407533424,1407533567,GH
-1407533568,1407533591,NG
-1407533592,1407533607,A2
+1407533568,1407533583,NG
+1407533584,1407533607,A2
1407533608,1407533631,NG
1407533632,1407533663,IQ
1407533664,1407533679,A2
@@ -34083,7 +34769,9 @@
1407533736,1407533743,GN
1407533744,1407533751,NG
1407533752,1407533759,A2
-1407533760,1407533783,NG
+1407533760,1407533767,NG
+1407533768,1407533775,A2
+1407533776,1407533783,NG
1407533784,1407533815,A2
1407533816,1407533823,NG
1407533824,1407534079,A2
@@ -34101,8 +34789,8 @@
1407534560,1407534567,NG
1407534568,1407534575,A2
1407534576,1407534583,CD
-1407534584,1407534591,A2
-1407534592,1407534727,NG
+1407534584,1407534719,A2
+1407534720,1407534727,NG
1407534728,1407534735,A2
1407534736,1407534775,NG
1407534776,1407534783,ML
@@ -34110,7 +34798,11 @@
1407534792,1407534847,A2
1407534848,1407535103,CM
1407535104,1407535615,GA
-1407535616,1407536127,A2
+1407535616,1407535711,A2
+1407535712,1407535719,GB
+1407535720,1407535735,A2
+1407535736,1407535743,NG
+1407535744,1407536127,A2
1407536128,1407536639,GA
1407536640,1407536895,CD
1407536896,1407536903,A2
@@ -34125,54 +34817,50 @@
1407537040,1407537047,A2
1407537048,1407537055,NG
1407537056,1407537071,GH
-1407537072,1407537087,NG
+1407537072,1407537079,A2
+1407537080,1407537087,NG
1407537088,1407537095,GH
1407537096,1407537103,A2
1407537104,1407537111,NG
1407537112,1407537119,LR
1407537120,1407537135,A2
1407537136,1407537143,NG
-1407537144,1407537167,A2
-1407537168,1407537175,ZM
-1407537176,1407537191,NG
+1407537144,1407537183,A2
+1407537184,1407537191,NG
1407537192,1407537199,A2
1407537200,1407537207,NG
-1407537208,1407537215,A2
-1407537216,1407537255,NG
+1407537208,1407537231,A2
+1407537232,1407537255,NG
1407537256,1407537263,A2
1407537264,1407537279,NG
-1407537280,1407537287,LR
+1407537280,1407537287,A2
1407537288,1407537295,NG
-1407537296,1407537303,A2
-1407537304,1407537311,NG
-1407537312,1407537327,A2
-1407537328,1407537351,NG
-1407537352,1407537359,A2
-1407537360,1407537367,LR
-1407537368,1407537391,NG
-1407537392,1407537399,LR
-1407537400,1407537423,A2
-1407537424,1407537455,NG
+1407537296,1407537335,A2
+1407537336,1407537351,NG
+1407537352,1407537367,A2
+1407537368,1407537383,NG
+1407537384,1407537431,A2
+1407537432,1407537455,NG
1407537456,1407537479,A2
1407537480,1407537487,CM
1407537488,1407537495,GH
1407537496,1407537511,NG
1407537512,1407537519,LR
-1407537520,1407537527,A2
-1407537528,1407537535,NG
+1407537520,1407537535,A2
1407537536,1407537543,LR
1407537544,1407537559,A2
1407537560,1407537567,NG
1407537568,1407537575,A2
-1407537576,1407537639,NG
+1407537576,1407537599,NG
+1407537600,1407537623,A2
+1407537624,1407537639,NG
1407537640,1407537663,A2
1407537664,1407537671,AO
-1407537672,1407537679,NG
+1407537672,1407537679,A2
1407537680,1407537687,IQ
1407537688,1407537703,A2
1407537704,1407537735,NG
-1407537736,1407537743,A2
-1407537744,1407537751,IQ
+1407537736,1407537751,A2
1407537752,1407537847,NG
1407537848,1407537855,A2
1407537856,1407537863,NG
@@ -34181,17 +34869,15 @@
1407537880,1407537887,A2
1407537888,1407537895,NG
1407537896,1407537903,IQ
-1407537904,1407537911,A2
-1407537912,1407537927,NG
-1407537928,1407537935,A2
+1407537904,1407537935,A2
1407537936,1407537943,GH
-1407537944,1407537959,NG
+1407537944,1407537951,A2
+1407537952,1407537959,NG
1407537960,1407537967,A2
1407537968,1407537991,NG
1407537992,1407537999,IQ
1407538000,1407538023,NG
-1407538024,1407538039,A2
-1407538040,1407538047,IQ
+1407538024,1407538047,A2
1407538048,1407538055,NG
1407538056,1407538071,LU
1407538072,1407538079,NG
@@ -34199,26 +34885,21 @@
1407538088,1407538095,AO
1407538096,1407538111,A2
1407538112,1407538119,LR
-1407538120,1407538135,NG
-1407538136,1407538143,A2
+1407538120,1407538127,NG
+1407538128,1407538143,A2
1407538144,1407538151,GN
1407538152,1407538167,A2
1407538168,1407538175,IQ
-1407538176,1407538295,AT
+1407538176,1407538295,A2
1407538296,1407538303,AO
-1407538304,1407538431,AT
-1407538432,1407538439,A2
+1407538304,1407538439,A2
1407538440,1407538447,NG
1407538448,1407538463,A2
1407538464,1407538471,ZM
1407538472,1407538479,NG
-1407538480,1407538495,A2
-1407538496,1407538503,NG
-1407538504,1407538559,A2
-1407538560,1407538623,CD
-1407538624,1407538663,A2
-1407538664,1407538687,NG
-1407538688,1407538751,A2
+1407538480,1407538663,A2
+1407538664,1407538679,NG
+1407538680,1407538751,A2
1407538752,1407538783,NG
1407538784,1407538847,A2
1407538848,1407538863,NG
@@ -34230,19 +34911,14 @@
1407538920,1407538927,A2
1407538928,1407538935,NG
1407538936,1407538943,GH
-1407538944,1407538967,A2
-1407538968,1407538975,CM
+1407538944,1407538975,A2
1407538976,1407538983,NG
1407538984,1407538991,SL
1407538992,1407538999,A2
1407539000,1407539007,NG
1407539008,1407539055,A2
1407539056,1407539063,NG
-1407539064,1407539071,A2
-1407539072,1407539079,NG
-1407539080,1407539087,A2
-1407539088,1407539095,AO
-1407539096,1407539103,A2
+1407539064,1407539103,A2
1407539104,1407539111,NG
1407539112,1407539143,A2
1407539144,1407539151,NG
@@ -34251,16 +34927,17 @@
1407539176,1407539183,GH
1407539184,1407539199,NG
1407539200,1407539455,GE
-1407539456,1407539967,NG
-1407539968,1407541471,A2
+1407539456,1407540119,A2
+1407540120,1407540127,NG
+1407540128,1407541471,A2
1407541472,1407541495,NG
1407541496,1407541535,A2
1407541536,1407541543,CM
1407541544,1407541551,A2
1407541552,1407541559,NG
1407541560,1407541567,GH
-1407541568,1407541703,A2
-1407541704,1407541719,NG
+1407541568,1407541711,A2
+1407541712,1407541719,NG
1407541720,1407541727,A2
1407541728,1407541735,NG
1407541736,1407541751,A2
@@ -34284,12 +34961,11 @@
1407542680,1407542687,NG
1407542688,1407542695,CD
1407542696,1407542703,NG
-1407542704,1407542719,A2
-1407542720,1407542735,NG
+1407542704,1407542727,A2
+1407542728,1407542735,NG
1407542736,1407542767,A2
1407542768,1407542775,GA
-1407542776,1407542783,NG
-1407542784,1407542791,A2
+1407542776,1407542791,A2
1407542792,1407542799,NG
1407542800,1407542831,A2
1407542832,1407542863,NG
@@ -34298,13 +34974,13 @@
1407542912,1407543039,AT
1407543040,1407543167,A2
1407543168,1407543183,GH
-1407543184,1407543239,NG
+1407543184,1407543191,A2
+1407543192,1407543239,NG
1407543240,1407543255,A2
1407543256,1407543263,NG
1407543264,1407543279,A2
1407543280,1407543287,NG
-1407543288,1407545343,A2
-1407545344,1407546367,SL
+1407543288,1407546367,A2
1407546368,1407546495,AE
1407546496,1407546879,A2
1407546880,1407547135,ZW
@@ -34316,12 +34992,13 @@
1407547184,1407547199,NG
1407547200,1407547207,AO
1407547208,1407547215,TD
-1407547216,1407547223,SL
-1407547224,1407547231,A2
-1407547232,1407547255,SL
+1407547216,1407547239,A2
+1407547240,1407547255,SL
1407547256,1407547263,A2
1407547264,1407547271,SL
-1407547272,1407547295,NG
+1407547272,1407547279,NG
+1407547280,1407547287,A2
+1407547288,1407547295,NG
1407547296,1407547303,A2
1407547304,1407547311,SL
1407547312,1407547327,NG
@@ -34393,7 +35070,9 @@
1407705760,1407705791,FR
1407705792,1407706367,GB
1407706368,1407706423,FR
-1407706424,1407707703,GB
+1407706424,1407706431,GB
+1407706432,1407706447,FR
+1407706448,1407707703,GB
1407707704,1407707839,CH
1407707840,1407707903,GB
1407707904,1407707935,CH
@@ -34404,10 +35083,8 @@
1407710240,1407710975,GB
1407710976,1407711319,FR
1407711320,1407711327,GB
-1407711328,1407711623,FR
-1407711624,1407711631,GB
-1407711632,1407711727,FR
-1407711728,1407712207,GB
+1407711328,1407711743,FR
+1407711744,1407712207,GB
1407712208,1407712223,FR
1407712224,1407712767,GB
1407712768,1407712831,DE
@@ -34498,8 +35175,7 @@
1410010400,1410010431,LY
1410010432,1410010543,DE
1410010544,1410010575,LY
-1410010576,1410010591,DE
-1410010592,1410010599,LY
+1410010576,1410010599,DE
1410010600,1410010607,IR
1410010608,1410010623,LY
1410010624,1410010687,DE
@@ -34685,15 +35361,13 @@
1410206544,1410206551,ES
1410206552,1410212863,FR
1410212864,1410213119,GB
-1410213120,1410214495,FR
-1410214496,1410214503,PT
-1410214504,1410221663,FR
+1410213120,1410221663,FR
1410221664,1410221671,GB
-1410221672,1410250551,FR
+1410221672,1410234839,FR
+1410234840,1410234847,A2
+1410234848,1410250551,FR
1410250552,1410250559,GB
-1410250560,1410255895,FR
-1410255896,1410255911,CH
-1410255912,1410261007,FR
+1410250560,1410261007,FR
1410261008,1410261015,GB
1410261016,1410262799,FR
1410262800,1410262815,DE
@@ -34761,9 +35435,14 @@
1410573408,1410573439,RU
1410573440,1410573695,DE
1410573696,1410573711,RU
-1410573712,1410573815,DE
+1410573712,1410573759,DE
+1410573760,1410573775,BA
+1410573776,1410573807,DE
+1410573808,1410573815,IT
1410573816,1410573823,RU
-1410573824,1410574559,DE
+1410573824,1410574527,DE
+1410574528,1410574543,IT
+1410574544,1410574559,DE
1410574560,1410574575,RU
1410574576,1410574583,DE
1410574584,1410574591,RU
@@ -34823,16 +35502,18 @@
1410745248,1410745279,US
1410745280,1410745855,FR
1410745856,1410746111,CH
-1410746112,1410746623,AO
-1410746624,1410748415,A2
+1410746112,1410746879,AO
+1410746880,1410748415,A2
1410748416,1410752511,DE
-1410752512,1410752639,AQ
-1410752640,1410752763,DE
+1410752512,1410752703,AQ
+1410752704,1410752763,DE
1410752764,1410752785,AQ
1410752786,1410752799,DE
1410752800,1410752827,AQ
1410752828,1410753023,DE
-1410753024,1410753151,AQ
+1410753024,1410753031,AQ
+1410753032,1410753055,BS
+1410753056,1410753151,AQ
1410753152,1410753303,DE
1410753304,1410753327,AQ
1410753328,1410753335,DE
@@ -34840,7 +35521,8 @@
1410753344,1410753351,DE
1410753352,1410753367,AQ
1410753368,1410753391,DE
-1410753392,1410754831,AQ
+1410753392,1410753399,NL
+1410753400,1410754831,AQ
1410754832,1410754855,DE
1410754856,1410754859,AQ
1410754860,1410754867,DE
@@ -34854,9 +35536,12 @@
1410756736,1410756863,DE
1410756864,1410757119,AQ
1410757120,1410758655,DE
-1410758656,1410760191,AQ
+1410758656,1410759423,AQ
+1410759424,1410759679,GB
+1410759680,1410760191,AQ
1410760192,1410760455,DE
-1410760456,1410760479,AQ
+1410760456,1410760471,AQ
+1410760472,1410760479,SC
1410760480,1410760487,DE
1410760488,1410760503,AQ
1410760504,1410760683,DE
@@ -34973,25 +35658,23 @@
1411919872,1411923967,DE
1411923968,1411940351,BG
1411940352,1411973119,PL
-1411973120,1411999767,SI
+1411973120,1411999743,SI
+1411999744,1411999759,BA
+1411999760,1411999767,SI
1411999768,1411999783,BA
1411999784,1411999791,SI
1411999792,1411999799,BA
1411999800,1411999807,SI
-1411999808,1411999823,BA
-1411999824,1411999831,SI
-1411999832,1411999839,BA
+1411999808,1411999839,BA
1411999840,1411999871,SI
1411999872,1412000767,BA
1412000768,1412000783,SI
1412000784,1412000791,BA
1412000792,1412000863,SI
1412000864,1412000879,BA
-1412000880,1412000895,SI
-1412000896,1412000911,BA
-1412000912,1412000959,SI
-1412000960,1412001023,BA
-1412001024,1412001311,SI
+1412000880,1412000903,SI
+1412000904,1412000911,BA
+1412000912,1412001311,SI
1412001312,1412001319,DE
1412001320,1412001807,SI
1412001808,1412001855,RO
@@ -35011,31 +35694,34 @@
1412003056,1412003119,BA
1412003120,1412003135,SI
1412003136,1412003143,BA
-1412003144,1412003167,SI
-1412003168,1412003215,BA
+1412003144,1412003199,SI
+1412003200,1412003215,BA
1412003216,1412003223,SI
1412003224,1412003231,BA
1412003232,1412003247,SI
1412003248,1412003263,BA
1412003264,1412003271,SI
1412003272,1412003303,BA
-1412003304,1412003359,SI
+1412003304,1412003327,SI
+1412003328,1412003343,BA
+1412003344,1412003359,SI
1412003360,1412003375,BA
-1412003376,1412003383,SI
-1412003384,1412003391,BA
-1412003392,1412003399,HR
-1412003400,1412003407,BA
+1412003376,1412003391,SI
+1412003392,1412003407,BA
1412003408,1412003423,SI
1412003424,1412003527,BA
1412003528,1412003535,SI
1412003536,1412003551,BA
1412003552,1412003583,SI
-1412003584,1412003839,BA
+1412003584,1412003599,BA
+1412003600,1412003623,SI
+1412003624,1412003839,BA
1412003840,1412003855,SI
1412003856,1412003903,BG
1412003904,1412003935,SI
-1412003936,1412004607,BG
-1412004608,1412005887,SI
+1412003936,1412004351,BG
+1412004352,1412004863,BA
+1412004864,1412005887,SI
1412005888,1412038655,NL
1412038656,1412071423,RU
1412071424,1412104191,CZ
@@ -35065,8 +35751,7 @@
1412628480,1412641791,TR
1412641792,1412642815,DE
1412642816,1412644863,TR
-1412644864,1412653055,UA
-1412653056,1412661247,RU
+1412644864,1412661247,RU
1412661248,1412677631,GB
1412677632,1412685823,RU
1412685824,1412686239,IE
@@ -35155,7 +35840,9 @@
1422853920,1422854143,EU
1422854144,1422854151,FR
1422854152,1422856319,EU
-1422856320,1422856575,FR
+1422856320,1422856447,FR
+1422856448,1422856511,EU
+1422856512,1422856575,FR
1422856576,1422856703,EU
1422856704,1422857855,FR
1422857856,1422857919,EU
@@ -35212,8 +35899,8 @@
1424594104,1424594111,GB
1424594112,1424594175,FR
1424594176,1424594431,GB
-1424594432,1424594495,IE
-1424594496,1424595455,GB
+1424594432,1424594519,IE
+1424594520,1424595455,GB
1424595456,1424595527,IT
1424595528,1424595535,GB
1424595536,1424595551,IT
@@ -35231,7 +35918,9 @@
1424597264,1424597311,CZ
1424597312,1424597343,GB
1424597344,1424597351,CH
-1424597352,1424597503,GB
+1424597352,1424597375,GB
+1424597376,1424597391,CZ
+1424597392,1424597503,GB
1424597504,1424597759,FR
1424597760,1424598015,IT
1424598016,1424599039,GB
@@ -35273,8 +35962,8 @@
1424603392,1424603647,DE
1424603648,1424603903,GB
1424603904,1424604067,ES
-1424604068,1424604095,GB
-1424604096,1424604159,ES
+1424604068,1424604071,GB
+1424604072,1424604159,ES
1424604160,1424604543,NL
1424604544,1424604671,GB
1424604672,1424604799,NL
@@ -35284,7 +35973,9 @@
1424605136,1424605183,NL
1424605184,1424605439,GB
1424605440,1424605567,BG
-1424605568,1424605607,GB
+1424605568,1424605583,GB
+1424605584,1424605599,BE
+1424605600,1424605607,GB
1424605608,1424605623,BG
1424605624,1424605631,GB
1424605632,1424605695,BG
@@ -35310,32 +36001,27 @@
1424608084,1424608087,GB
1424608088,1424608127,FR
1424608128,1424608279,GB
-1424608280,1424608383,FR
+1424608280,1424608351,FR
+1424608352,1424608383,GB
1424608384,1424608399,ES
1424608400,1424608511,FR
-1424608512,1424608567,ES
-1424608568,1424608671,GB
-1424608672,1424608687,ES
+1424608512,1424608687,ES
1424608688,1424608695,GB
-1424608696,1424608743,ES
-1424608744,1424608751,GB
-1424608752,1424609023,ES
+1424608696,1424609023,ES
1424609024,1424609259,DE
1424609260,1424609271,GB
1424609272,1424609279,DE
1424609280,1424609395,CH
1424609396,1424609399,GB
-1424609400,1424609543,CH
-1424609544,1424609551,GB
-1424609552,1424609791,CH
+1424609400,1424609791,CH
1424609792,1424610303,GB
1424610304,1424610559,TZ
1424610560,1424610815,PL
1424610816,1424611071,FR
-1424611072,1424611087,BE
-1424611088,1424611103,GB
-1424611104,1424611143,BE
-1424611144,1424611151,GB
+1424611072,1424611095,BE
+1424611096,1424611103,GB
+1424611104,1424611135,BE
+1424611136,1424611151,GB
1424611152,1424611327,BE
1424611328,1424611583,PL
1424611584,1424612095,GB
@@ -35353,7 +36039,9 @@
1424614136,1424614143,IT
1424614144,1424614399,GB
1424614400,1424614415,FR
-1424614416,1424614655,IT
+1424614416,1424614559,IT
+1424614560,1424614591,GB
+1424614592,1424614655,IT
1424614656,1424614911,FR
1424614912,1424615167,RO
1424615168,1424615679,GB
@@ -35389,9 +36077,7 @@
1424618016,1424618239,IT
1424618240,1424618495,NL
1424618496,1424618751,GB
-1424618752,1424618983,FR
-1424618984,1424618991,GB
-1424618992,1424619007,FR
+1424618752,1424619007,FR
1424619008,1424619775,IT
1424619776,1424619807,BE
1424619808,1424619815,GB
@@ -35511,7 +36197,6 @@
1425426432,1425428479,KW
1425428480,1425430527,GB
1425430528,1425432575,SE
-1425432576,1425434623,IT
1425434624,1425436671,FR
1425436672,1425438719,GB
1425438720,1425439271,DE
@@ -35599,9 +36284,7 @@
1425966721,1425966728,BJ
1425966729,1425966735,A2
1425966736,1425966751,BJ
-1425966752,1425966784,A2
-1425966785,1425966808,BJ
-1425966809,1425966815,A2
+1425966752,1425966815,A2
1425966816,1425966847,BJ
1425966848,1425966852,A2
1425966853,1425966896,DE
@@ -35660,7 +36343,9 @@
1425970944,1425971007,IT
1425971008,1425971071,NL
1425971072,1425971199,A2
-1425971200,1425971455,NL
+1425971200,1425971231,NL
+1425971232,1425971263,DE
+1425971264,1425971455,NL
1425971456,1425971519,A2
1425971520,1425971583,IT
1425971584,1425971647,A2
@@ -35804,7 +36489,9 @@
1426685952,1426702335,TJ
1426702336,1426703103,LV
1426703104,1426703167,RU
-1426703168,1426718719,LV
+1426703168,1426703214,LV
+1426703215,1426703217,RU
+1426703218,1426718719,LV
1426718720,1426731007,SI
1426731008,1426735103,HR
1426735104,1426751487,BE
@@ -35879,9 +36566,7 @@
1427031680,1427031743,AT
1427031744,1427031807,DE
1427031808,1427032063,AT
-1427032064,1427032143,DE
-1427032144,1427032151,AT
-1427032152,1427032183,DE
+1427032064,1427032183,DE
1427032184,1427032191,PL
1427032192,1427032223,DE
1427032224,1427032231,GR
@@ -35923,17 +36608,14 @@
1427668992,1427701759,SE
1427701760,1427723391,DE
1427723392,1427723519,LI
-1427723520,1427728383,DE
-1427728384,1427728415,US
-1427728416,1427728479,DE
+1427723520,1427728479,DE
1427728480,1427728511,CY
1427728512,1427728543,BR
1427728544,1427728671,DE
1427728672,1427728703,TR
1427728704,1427728799,DE
1427728800,1427728831,RU
-1427728832,1427728863,DE
-1427728864,1427728895,CY
+1427728832,1427728895,CY
1427728896,1427728927,DE
1427728928,1427728959,IL
1427728960,1427728991,RU
@@ -35957,7 +36639,9 @@
1427743616,1427743647,DK
1427743648,1427743775,DE
1427743776,1427743807,ZA
-1427743808,1427744159,DE
+1427743808,1427743839,DE
+1427743840,1427743871,RU
+1427743872,1427744159,DE
1427744160,1427744191,RU
1427744192,1427744255,DE
1427744256,1427744287,US
@@ -35989,34 +36673,31 @@
1427745696,1427745727,US
1427745728,1427745791,DE
1427745792,1427745823,GB
-1427745824,1427745983,DE
-1427745984,1427746015,PL
-1427746016,1427746079,DE
+1427745824,1427745855,US
+1427745856,1427746079,DE
1427746080,1427746111,GB
1427746112,1427746239,DE
-1427746240,1427746271,TR
+1427746240,1427746271,NL
1427746272,1427746367,DE
1427746368,1427746399,SE
1427746400,1427747839,DE
1427747840,1427747871,FI
-1427747872,1427748543,DE
+1427747872,1427748063,DE
+1427748064,1427748095,NL
+1427748096,1427748543,DE
1427748544,1427748575,MX
-1427748576,1427748831,DE
-1427748832,1427748863,US
-1427748864,1427749503,DE
+1427748576,1427749503,DE
1427749504,1427749535,UA
1427749536,1427749567,DE
1427749568,1427749599,CY
1427749600,1427749631,DE
1427749632,1427749663,US
-1427749664,1427749695,DE
-1427749696,1427749727,PL
-1427749728,1427749919,DE
-1427749920,1427749983,RU
+1427749664,1427749951,DE
+1427749952,1427749983,RU
1427749984,1427750143,DE
1427750144,1427750175,TR
1427750176,1427750239,DE
-1427750240,1427750271,TR
+1427750240,1427750271,NL
1427750272,1427750303,DE
1427750304,1427750335,GB
1427750336,1427751167,DE
@@ -36027,7 +36708,8 @@
1427760192,1427760223,TR
1427760224,1427760255,US
1427760256,1427760319,BR
-1427760320,1427760383,DE
+1427760320,1427760351,DE
+1427760352,1427760383,RU
1427760384,1427760415,TR
1427760416,1427760799,DE
1427760800,1427760831,NL
@@ -36063,13 +36745,15 @@
1427980288,1427996671,FI
1427996672,1428013055,KZ
1428013056,1428029439,EE
+1428029440,1428045823,SE
1428045824,1428062207,MK
1428062208,1428078591,SE
1428078592,1428094975,RU
1428094976,1428096031,AT
1428096032,1428096039,CH
1428096040,1428103167,AT
-1428103168,1428119551,GB
+1428103168,1428111359,GB
+1428111360,1428119551,A2
1428119552,1428121599,LV
1428121600,1428123647,FR
1428123648,1428126975,RU
@@ -36085,33 +36769,26 @@
1428142080,1428143263,DE
1428143264,1428143279,CH
1428143280,1428144127,DE
-1428144128,1428147103,FR
-1428147104,1428147119,GB
-1428147120,1428147127,FR
-1428147128,1428147135,GB
-1428147136,1428147359,FR
-1428147360,1428147375,IT
-1428147376,1428147391,ES
-1428147392,1428147591,FR
-1428147592,1428147711,GB
+1428144128,1428147111,FR
+1428147112,1428147119,GB
+1428147120,1428147595,FR
+1428147596,1428147711,GB
1428147712,1428147855,FR
1428147856,1428147871,US
-1428147872,1428147903,GB
-1428147904,1428148031,FR
-1428148032,1428148063,GB
-1428148064,1428148143,FR
-1428148144,1428148151,DE
-1428148152,1428148159,NL
-1428148160,1428148175,FR
+1428147872,1428147895,FR
+1428147896,1428147903,GB
+1428147904,1428148039,FR
+1428148040,1428148047,GB
+1428148048,1428148175,FR
1428148176,1428148191,CH
1428148192,1428148223,GB
-1428148224,1428150495,FR
-1428150496,1428150511,GB
-1428150512,1428150735,FR
+1428148224,1428150735,FR
1428150736,1428150751,GB
1428150752,1428151007,FR
1428151008,1428151039,GB
-1428151040,1428152127,FR
+1428151040,1428151231,FR
+1428151232,1428151295,CH
+1428151296,1428152127,FR
1428152128,1428152319,GB
1428152320,1428160511,PL
1428160512,1429209087,IT
@@ -36192,11 +36869,17 @@
1432131584,1432133631,PH
1432133632,1432150015,GB
1432150016,1432158207,BA
-1432158208,1432159743,DE
+1432158208,1432159042,DE
+1432159043,1432159046,IR
+1432159047,1432159311,DE
+1432159312,1432159321,IR
+1432159322,1432159743,DE
1432159744,1432159871,PL
1432159872,1432160255,DE
1432160256,1432160511,CH
-1432160512,1432165247,DE
+1432160512,1432162907,DE
+1432162908,1432162914,IR
+1432162915,1432165247,DE
1432165248,1432165375,PL
1432165376,1432166399,DE
1432166400,1432174591,RU
@@ -36220,13 +36903,21 @@
1432322048,1432338431,RU
1432338432,1432346623,FR
1432346624,1433403391,TR
-1433403392,1433407487,ES
-1433407488,1433410559,NL
+1433403392,1433406239,ES
+1433406240,1433406271,US
+1433406272,1433406431,ES
+1433406432,1433406447,US
+1433406448,1433407487,ES
+1433407488,1433410047,NL
+1433410048,1433410559,US
1433410560,1433411071,ES
-1433411072,1433411375,TR
-1433411376,1433411391,US
-1433411392,1433411407,NL
-1433411408,1433411583,TR
+1433411072,1433411327,US
+1433411328,1433411343,ES
+1433411344,1433411375,TR
+1433411376,1433411407,US
+1433411408,1433411455,TR
+1433411456,1433411519,US
+1433411520,1433411583,ES
1433411584,1433419775,RU
1433419776,1433427967,LB
1433427968,1433436159,RU
@@ -36280,7 +36971,6 @@
1433739264,1433747455,GE
1433747456,1433755647,RU
1433755648,1433763839,EE
-1433763840,1433772031,CZ
1433772032,1433788415,SE
1433788416,1433796607,UZ
1433796608,1433804799,GB
@@ -36309,7 +36999,9 @@
1433860096,1433862143,DE
1433862144,1433862751,CH
1433862752,1433862783,MC
-1433862784,1433863423,CH
+1433862784,1433862975,CH
+1433862976,1433862991,GB
+1433862992,1433863423,CH
1433863424,1433863487,US
1433863488,1433864191,CH
1433864192,1433866239,HU
@@ -36368,10 +37060,10 @@
1434681856,1434682111,MY
1434682112,1434682303,DE
1434682304,1434682367,NL
-1434682368,1434683087,DE
-1434683088,1434683135,NL
-1434683136,1434683263,DE
-1434683264,1434683391,NL
+1434682368,1434683103,DE
+1434683104,1434683135,NL
+1434683136,1434683327,DE
+1434683328,1434683391,NL
1434683392,1434684415,DE
1434684416,1434684671,NL
1434684672,1434685439,DE
@@ -36450,7 +37142,7 @@
1436471808,1436473343,BE
1436473344,1436475391,RO
1436475392,1436477439,AT
-1436477440,1436481535,CH
+1436477440,1436479487,CH
1436481536,1436483583,NL
1436483584,1436485631,UA
1436485632,1436487471,DE
@@ -36534,7 +37226,15 @@
1438842880,1438859263,SE
1438859264,1438861823,DE
1438861824,1438862079,CH
-1438862080,1438873119,DE
+1438862080,1438869591,DE
+1438869592,1438869595,RU
+1438869596,1438869647,DE
+1438869648,1438869651,LV
+1438869652,1438869655,US
+1438869656,1438869663,UA
+1438869664,1438869671,DE
+1438869672,1438869679,CY
+1438869680,1438873119,DE
1438873120,1438873127,PA
1438873128,1438873671,DE
1438873672,1438873679,PA
@@ -36555,7 +37255,7 @@
1438875256,1438875257,CH
1438875258,1438875647,DE
1438875648,1438876159,RU
-1438876160,1438876415,LB
+1438876160,1438876415,LT
1438876416,1438876927,RU
1438876928,1438877183,IQ
1438877184,1438877439,LT
@@ -36573,8 +37273,7 @@
1438884352,1438884607,LB
1438884608,1438884863,IQ
1438884864,1438885887,RU
-1438885888,1438889983,LT
-1438889984,1438890239,LB
+1438885888,1438890239,LT
1438890240,1438890495,RU
1438890496,1438890751,IQ
1438890752,1438892031,RU
@@ -36733,15 +37432,17 @@
1441384592,1441384599,AU
1441384600,1441384607,FR
1441384608,1441384639,CN
-1441384640,1441385103,FR
-1441385104,1441385119,ES
-1441385120,1441386111,FR
+1441384640,1441386111,FR
1441386112,1441386239,IL
1441386240,1441388671,FR
1441388672,1441388799,CA
1441388800,1441389055,FR
1441389056,1441389119,IE
-1441389120,1441390591,FR
+1441389120,1441389223,FR
+1441389224,1441389231,LU
+1441389232,1441389567,FR
+1441389568,1441389599,LU
+1441389600,1441390591,FR
1441390592,1441398783,DK
1441398784,1441415167,RU
1441415168,1441423359,GB
@@ -36766,7 +37467,8 @@
1441543152,1441543167,LI
1441543168,1441543567,DE
1441543568,1441543583,CH
-1441543584,1441544063,DE
+1441543584,1441543599,HR
+1441543600,1441544063,DE
1441544064,1441544127,TR
1441544128,1441544143,DE
1441544144,1441544159,CH
@@ -36944,25 +37646,606 @@
1446862080,1446862591,HR
1446862592,1446871039,SI
1446871040,1446903807,CZ
-1446903808,1446904071,A2
-1446904072,1446904079,CY
+1446903808,1446904063,A2
+1446904064,1446904071,CY
+1446904072,1446904079,IQ
1446904080,1446904095,BH
-1446904096,1446904111,SA
-1446904112,1446904119,BH
-1446904120,1446904127,A2
+1446904096,1446904103,SD
+1446904104,1446904111,SA
+1446904112,1446904119,LY
+1446904120,1446904127,SD
1446904128,1446904135,SA
1446904136,1446904143,IQ
-1446904144,1446904151,SA
+1446904144,1446904151,ER
1446904152,1446904159,IR
1446904160,1446904167,ES
1446904168,1446904175,IQ
-1446904176,1446904831,A2
-1446904832,1446904835,LY
-1446904836,1446904931,A2
+1446904176,1446904183,A2
+1446904184,1446904191,IQ
+1446904192,1446904215,A2
+1446904216,1446904223,IQ
+1446904224,1446904231,LY
+1446904232,1446904247,A2
+1446904248,1446904255,AF
+1446904256,1446904263,CY
+1446904264,1446904279,A2
+1446904280,1446904287,IQ
+1446904288,1446904295,AF
+1446904296,1446904303,IQ
+1446904304,1446904311,A2
+1446904312,1446904319,AF
+1446904320,1446904335,AE
+1446904336,1446904351,A2
+1446904352,1446904367,AE
+1446904368,1446904527,A2
+1446904528,1446904543,ZM
+1446904544,1446904575,A2
+1446904576,1446904591,SD
+1446904592,1446904599,NG
+1446904600,1446904607,A2
+1446904608,1446904623,SD
+1446904624,1446904631,IQ
+1446904632,1446904751,A2
+1446904752,1446904759,NG
+1446904760,1446904799,A2
+1446904800,1446904807,SD
+1446904808,1446904815,A2
+1446904816,1446904823,ZM
+1446904824,1446904831,A2
+1446904832,1446904839,IQ
+1446904840,1446904843,A2
+1446904844,1446904847,CG
+1446904848,1446904851,A2
+1446904852,1446904859,IQ
+1446904860,1446904871,A2
+1446904872,1446904875,IQ
+1446904876,1446904879,ZM
+1446904880,1446904887,IQ
+1446904888,1446904895,A2
+1446904896,1446904907,IQ
+1446904908,1446904915,A2
+1446904916,1446904919,ZM
+1446904920,1446904927,IQ
+1446904928,1446904931,A2
1446904932,1446904935,ZM
-1446904936,1446908539,A2
+1446904936,1446904939,LY
+1446904940,1446904947,IQ
+1446904948,1446904951,A2
+1446904952,1446904955,AF
+1446904956,1446904959,A2
+1446904960,1446904963,IQ
+1446904964,1446904975,A2
+1446904976,1446904979,CG
+1446904980,1446904987,IQ
+1446904988,1446904991,A2
+1446904992,1446905007,IQ
+1446905008,1446905011,CG
+1446905012,1446905015,A2
+1446905016,1446905019,NG
+1446905020,1446905023,LY
+1446905024,1446905031,IQ
+1446905032,1446905035,A2
+1446905036,1446905039,IQ
+1446905040,1446905043,AF
+1446905044,1446905051,IQ
+1446905052,1446905055,LY
+1446905056,1446905063,IQ
+1446905064,1446905067,NG
+1446905068,1446905071,IQ
+1446905072,1446905083,A2
+1446905084,1446905095,AF
+1446905096,1446905103,BJ
+1446905104,1446905107,IQ
+1446905108,1446905111,A2
+1446905112,1446905115,BJ
+1446905116,1446905119,A2
+1446905120,1446905123,GN
+1446905124,1446905127,AF
+1446905128,1446905135,A2
+1446905136,1446905143,IQ
+1446905144,1446905147,A2
+1446905148,1446905151,LY
+1446905152,1446905155,AF
+1446905156,1446905167,IQ
+1446905168,1446905171,A2
+1446905172,1446905175,IQ
+1446905176,1446905179,AF
+1446905180,1446905191,LY
+1446905192,1446905195,A2
+1446905196,1446905199,AF
+1446905200,1446905203,NG
+1446905204,1446905207,AF
+1446905208,1446905211,ER
+1446905212,1446905215,IQ
+1446905216,1446905223,A2
+1446905224,1446905227,IQ
+1446905228,1446905235,NG
+1446905236,1446905251,A2
+1446905252,1446905255,IQ
+1446905256,1446905259,A2
+1446905260,1446905263,IQ
+1446905264,1446905267,LY
+1446905268,1446905271,NG
+1446905272,1446905275,IQ
+1446905276,1446905279,A2
+1446905280,1446905283,IQ
+1446905284,1446905287,A2
+1446905288,1446905295,IQ
+1446905296,1446905303,ZM
+1446905304,1446905307,CF
+1446905308,1446905315,A2
+1446905316,1446905319,NG
+1446905320,1446905323,A2
+1446905324,1446905327,IQ
+1446905328,1446905331,A2
+1446905332,1446905339,IQ
+1446905340,1446905343,A2
+1446905344,1446905351,LY
+1446905352,1446905367,A2
+1446905368,1446905375,LY
+1446905376,1446905383,A2
+1446905384,1446905391,SD
+1446905392,1446905583,A2
+1446905584,1446905591,AF
+1446905592,1446905599,A2
+1446905600,1446905603,ZM
+1446905604,1446905615,IQ
+1446905616,1446905619,A2
+1446905620,1446905623,ZM
+1446905624,1446905627,A2
+1446905628,1446905631,AF
+1446905632,1446905635,LY
+1446905636,1446905639,IQ
+1446905640,1446905643,A2
+1446905644,1446905655,IQ
+1446905656,1446905659,AF
+1446905660,1446905663,ER
+1446905664,1446905667,LY
+1446905668,1446905671,A2
+1446905672,1446905675,AF
+1446905676,1446905679,LY
+1446905680,1446905683,ZM
+1446905684,1446905691,A2
+1446905692,1446905695,ZM
+1446905696,1446905699,LY
+1446905700,1446905703,ZM
+1446905704,1446905719,A2
+1446905720,1446905723,AF
+1446905724,1446905727,A2
+1446905728,1446905731,IQ
+1446905732,1446905735,AF
+1446905736,1446905743,A2
+1446905744,1446905747,LY
+1446905748,1446905751,A2
+1446905752,1446905755,IQ
+1446905756,1446905759,A2
+1446905760,1446905763,ML
+1446905764,1446905767,LY
+1446905768,1446905779,A2
+1446905780,1446905783,LY
+1446905784,1446905787,A2
+1446905788,1446905791,LY
+1446905792,1446905795,TD
+1446905796,1446905803,A2
+1446905804,1446905807,IQ
+1446905808,1446905815,A2
+1446905816,1446905823,LY
+1446905824,1446905827,A2
+1446905828,1446905831,LY
+1446905832,1446905835,NG
+1446905836,1446905839,A2
+1446905840,1446905843,IQ
+1446905844,1446905847,A2
+1446905848,1446905851,IQ
+1446905852,1446905855,AF
+1446905856,1446905856,A2
+1446905857,1446905863,LY
+1446905864,1446905871,SD
+1446905872,1446905911,A2
+1446905912,1446905943,SD
+1446905944,1446906023,A2
+1446906024,1446906031,SD
+1446906032,1446906039,A2
+1446906040,1446906047,SD
+1446906048,1446906071,A2
+1446906072,1446906079,CY
+1446906080,1446906115,A2
+1446906116,1446906119,ZM
+1446906120,1446906123,SD
+1446906124,1446906131,IQ
+1446906132,1446906135,LY
+1446906136,1446906139,IQ
+1446906140,1446906143,A2
+1446906144,1446906151,ZM
+1446906152,1446906167,AF
+1446906168,1446906171,A2
+1446906172,1446906179,AF
+1446906180,1446906187,A2
+1446906188,1446906191,AF
+1446906192,1446906195,A2
+1446906196,1446906203,IQ
+1446906204,1446906211,A2
+1446906212,1446906215,AF
+1446906216,1446906219,A2
+1446906220,1446906223,BG
+1446906224,1446906231,IQ
+1446906232,1446906239,AF
+1446906240,1446906243,IQ
+1446906244,1446906247,A2
+1446906248,1446906259,IQ
+1446906260,1446906263,AF
+1446906264,1446906283,A2
+1446906284,1446906303,IQ
+1446906304,1446906307,ZM
+1446906308,1446906311,A2
+1446906312,1446906327,IQ
+1446906328,1446906331,A2
+1446906332,1446906335,IQ
+1446906336,1446906339,ZM
+1446906340,1446906343,A2
+1446906344,1446906347,NG
+1446906348,1446906351,ZM
+1446906352,1446906359,A2
+1446906360,1446906363,SD
+1446906364,1446906367,IQ
+1446906368,1446906391,A2
+1446906392,1446906399,CY
+1446906400,1446906567,A2
+1446906568,1446906591,KW
+1446906592,1446906599,IQ
+1446906600,1446906615,KW
+1446906616,1446906623,A2
+1446906624,1446906631,LY
+1446906632,1446906639,A2
+1446906640,1446906655,LY
+1446906656,1446906663,NG
+1446906664,1446906863,A2
+1446906864,1446906871,ZM
+1446906872,1446906879,A2
+1446906880,1446906883,IQ
+1446906884,1446906887,AF
+1446906888,1446906891,IQ
+1446906892,1446906895,A2
+1446906896,1446906899,IQ
+1446906900,1446906907,A2
+1446906908,1446906919,IQ
+1446906920,1446906923,A2
+1446906924,1446906927,IQ
+1446906928,1446906931,SA
+1446906932,1446906935,IQ
+1446906936,1446906943,LY
+1446906944,1446906947,IQ
+1446906948,1446906951,A2
+1446906952,1446906955,IQ
+1446906956,1446906963,A2
+1446906964,1446906967,AF
+1446906968,1446906971,A2
+1446906972,1446906983,IQ
+1446906984,1446906987,NG
+1446906988,1446906995,IQ
+1446906996,1446906999,AF
+1446907000,1446907007,A2
+1446907008,1446907011,AF
+1446907012,1446907015,IQ
+1446907016,1446907019,ZM
+1446907020,1446907023,AF
+1446907024,1446907027,IQ
+1446907028,1446907031,ZM
+1446907032,1446907039,A2
+1446907040,1446907043,ZM
+1446907044,1446907047,CG
+1446907048,1446907055,IQ
+1446907056,1446907067,A2
+1446907068,1446907071,AF
+1446907072,1446907075,A2
+1446907076,1446907079,IQ
+1446907080,1446907083,AF
+1446907084,1446907087,IQ
+1446907088,1446907091,LY
+1446907092,1446907095,IQ
+1446907096,1446907099,NG
+1446907100,1446907103,IQ
+1446907104,1446907123,A2
+1446907124,1446907131,IQ
+1446907132,1446907135,AF
+1446907136,1446907147,A2
+1446907148,1446907151,IQ
+1446907152,1446907155,A2
+1446907156,1446907159,LY
+1446907160,1446907163,AF
+1446907164,1446907167,IQ
+1446907168,1446907171,LY
+1446907172,1446907175,IQ
+1446907176,1446907187,LY
+1446907188,1446907191,CG
+1446907192,1446907199,IQ
+1446907200,1446907203,A2
+1446907204,1446907207,IQ
+1446907208,1446907211,A2
+1446907212,1446907215,IQ
+1446907216,1446907223,A2
+1446907224,1446907227,ZM
+1446907228,1446907231,A2
+1446907232,1446907243,IQ
+1446907244,1446907247,NG
+1446907248,1446907255,A2
+1446907256,1446907259,GA
+1446907260,1446907279,IQ
+1446907280,1446907283,GA
+1446907284,1446907287,A2
+1446907288,1446907291,AF
+1446907292,1446907303,A2
+1446907304,1446907307,IQ
+1446907308,1446907311,AF
+1446907312,1446907315,A2
+1446907316,1446907319,IQ
+1446907320,1446907323,AF
+1446907324,1446907327,A2
+1446907328,1446907331,IQ
+1446907332,1446907335,A2
+1446907336,1446907339,IQ
+1446907340,1446907347,LY
+1446907348,1446907355,ZM
+1446907356,1446907371,A2
+1446907372,1446907375,AF
+1446907376,1446907379,ZM
+1446907380,1446907383,IQ
+1446907384,1446907387,CI
+1446907388,1446907391,A2
+1446907392,1446907395,AF
+1446907396,1446907399,IQ
+1446907400,1446907403,A2
+1446907404,1446907407,IQ
+1446907408,1446907411,A2
+1446907412,1446907419,IQ
+1446907420,1446907423,A2
+1446907424,1446907427,ZM
+1446907428,1446907439,A2
+1446907440,1446907443,AF
+1446907444,1446907451,A2
+1446907452,1446907463,IQ
+1446907464,1446907475,A2
+1446907476,1446907479,LY
+1446907480,1446907483,A2
+1446907484,1446907487,IQ
+1446907488,1446907491,A2
+1446907492,1446907495,TD
+1446907496,1446907503,IQ
+1446907504,1446907507,LY
+1446907508,1446907511,IQ
+1446907512,1446907523,A2
+1446907524,1446907527,LY
+1446907528,1446907531,A2
+1446907532,1446907539,IQ
+1446907540,1446907543,LY
+1446907544,1446907547,IQ
+1446907548,1446907551,A2
+1446907552,1446907559,IQ
+1446907560,1446907571,A2
+1446907572,1446907575,AF
+1446907576,1446907579,A2
+1446907580,1446907583,GH
+1446907584,1446907615,A2
+1446907616,1446907619,TD
+1446907620,1446907631,A2
+1446907632,1446907635,LY
+1446907636,1446907647,IQ
+1446907648,1446907659,A2
+1446907660,1446907663,ZM
+1446907664,1446907667,NG
+1446907668,1446907671,A2
+1446907672,1446907675,IQ
+1446907676,1446907679,LY
+1446907680,1446907691,A2
+1446907692,1446907695,IQ
+1446907696,1446907699,LY
+1446907700,1446907703,IQ
+1446907704,1446907715,A2
+1446907716,1446907719,AF
+1446907720,1446907723,A2
+1446907724,1446907731,IQ
+1446907732,1446907735,LY
+1446907736,1446907739,A2
+1446907740,1446907743,IQ
+1446907744,1446907747,A2
+1446907748,1446907755,AF
+1446907756,1446907759,A2
+1446907760,1446907763,IQ
+1446907764,1446907767,A2
+1446907768,1446907771,IQ
+1446907772,1446907775,A2
+1446907776,1446907779,LY
+1446907780,1446907783,IQ
+1446907784,1446907787,A2
+1446907788,1446907791,IQ
+1446907792,1446907799,A2
+1446907800,1446907803,ZM
+1446907804,1446907807,IQ
+1446907808,1446907823,A2
+1446907824,1446907827,LY
+1446907828,1446907831,A2
+1446907832,1446907839,LY
+1446907840,1446907855,A2
+1446907856,1446907859,AF
+1446907860,1446907863,A2
+1446907864,1446907871,LY
+1446907872,1446907875,A2
+1446907876,1446907883,IQ
+1446907884,1446907887,A2
+1446907888,1446907891,SD
+1446907892,1446907895,AF
+1446907896,1446907899,IQ
+1446907900,1446907903,LY
+1446907904,1446907911,IQ
+1446907912,1446907919,A2
+1446907920,1446907927,LY
+1446907928,1446908103,A2
+1446908104,1446908111,NG
+1446908112,1446908143,A2
+1446908144,1446908151,AE
+1446908152,1446908159,SD
+1446908160,1446908163,AF
+1446908164,1446908167,A2
+1446908168,1446908175,IQ
+1446908176,1446908187,A2
+1446908188,1446908191,GH
+1446908192,1446908235,A2
+1446908236,1446908243,IQ
+1446908244,1446908247,A2
+1446908248,1446908251,AF
+1446908252,1446908255,A2
+1446908256,1446908259,SZ
+1446908260,1446908267,A2
+1446908268,1446908271,AF
+1446908272,1446908275,LY
+1446908276,1446908279,A2
+1446908280,1446908283,IQ
+1446908284,1446908287,AF
+1446908288,1446908299,A2
+1446908300,1446908303,IQ
+1446908304,1446908307,AF
+1446908308,1446908311,A2
+1446908312,1446908315,LY
+1446908316,1446908323,A2
+1446908324,1446908327,ZM
+1446908328,1446908331,A2
+1446908332,1446908335,NG
+1446908336,1446908359,A2
+1446908360,1446908363,LY
+1446908364,1446908367,A2
+1446908368,1446908371,IQ
+1446908372,1446908383,A2
+1446908384,1446908391,IQ
+1446908392,1446908419,A2
+1446908420,1446908423,IQ
+1446908424,1446908427,A2
+1446908428,1446908431,IQ
+1446908432,1446908435,A2
+1446908436,1446908443,AF
+1446908444,1446908447,A2
+1446908448,1446908451,ZM
+1446908452,1446908455,A2
+1446908456,1446908459,LB
+1446908460,1446908479,A2
+1446908480,1446908483,IQ
+1446908484,1446908487,A2
+1446908488,1446908491,IQ
+1446908492,1446908515,A2
+1446908516,1446908519,IQ
+1446908520,1446908531,A2
+1446908532,1446908535,IQ
+1446908536,1446908539,A2
1446908540,1446908543,ZM
-1446908544,1446920191,A2
+1446908544,1446908591,A2
+1446908592,1446908595,IQ
+1446908596,1446908599,A2
+1446908600,1446908603,ZM
+1446908604,1446908607,CG
+1446908608,1446908631,A2
+1446908632,1446908635,IQ
+1446908636,1446908651,A2
+1446908652,1446908663,IQ
+1446908664,1446908683,A2
+1446908684,1446908687,SD
+1446908688,1446908691,IQ
+1446908692,1446908707,A2
+1446908708,1446908711,IQ
+1446908712,1446908715,A2
+1446908716,1446908719,CM
+1446908720,1446908727,A2
+1446908728,1446908731,AF
+1446908732,1446908735,A2
+1446908736,1446908739,IQ
+1446908740,1446908743,A2
+1446908744,1446908747,GN
+1446908748,1446908751,A2
+1446908752,1446908759,IQ
+1446908760,1446908775,A2
+1446908776,1446908779,IQ
+1446908780,1446908787,A2
+1446908788,1446908791,NG
+1446908792,1446908811,A2
+1446908812,1446908815,IQ
+1446908816,1446908835,A2
+1446908836,1446908843,IQ
+1446908844,1446908855,A2
+1446908856,1446908859,ZM
+1446908860,1446908863,A2
+1446908864,1446908871,AF
+1446908872,1446908875,A2
+1446908876,1446908879,AF
+1446908880,1446908907,A2
+1446908908,1446908911,IQ
+1446908912,1446908919,A2
+1446908920,1446908923,IQ
+1446908924,1446908927,A2
+1446908928,1446908931,IQ
+1446908932,1446908935,ZM
+1446908936,1446908951,A2
+1446908952,1446908955,IQ
+1446908956,1446908959,LY
+1446908960,1446908971,A2
+1446908972,1446908975,AF
+1446908976,1446908979,GA
+1446908980,1446908983,AF
+1446908984,1446908987,LY
+1446908988,1446908999,A2
+1446909000,1446909003,IQ
+1446909004,1446909007,LY
+1446909008,1446909019,IQ
+1446909020,1446909083,A2
+1446909084,1446909087,CG
+1446909088,1446909091,IQ
+1446909092,1446909095,A2
+1446909096,1446909099,TD
+1446909100,1446909111,A2
+1446909112,1446909115,IQ
+1446909116,1446909163,A2
+1446909164,1446909167,IQ
+1446909168,1446909171,A2
+1446909172,1446909173,IQ
+1446909174,1446909195,A2
+1446909196,1446909199,IQ
+1446909200,1446909203,A2
+1446909204,1446909207,IQ
+1446909208,1446909211,LY
+1446909212,1446909215,A2
+1446909216,1446909219,LY
+1446909220,1446909223,IQ
+1446909224,1446909271,A2
+1446909272,1446909275,IQ
+1446909276,1446909295,A2
+1446909296,1446909299,IQ
+1446909300,1446909303,A2
+1446909304,1446909319,IQ
+1446909320,1446909327,A2
+1446909328,1446909331,IQ
+1446909332,1446909335,A2
+1446909336,1446909339,GH
+1446909340,1446909351,A2
+1446909352,1446909359,IQ
+1446909360,1446909363,A2
+1446909364,1446909367,IQ
+1446909368,1446909391,A2
+1446909392,1446909395,ZM
+1446909396,1446909401,NG
+1446909402,1446909423,A2
+1446909424,1446909435,AF
+1446909436,1446909443,A2
+1446909444,1446909447,NG
+1446909448,1446909471,A2
+1446909472,1446909475,IQ
+1446909476,1446909491,A2
+1446909492,1446909495,IQ
+1446909496,1446909499,A2
+1446909500,1446909507,IQ
+1446909508,1446909519,A2
+1446909520,1446909523,CG
+1446909524,1446909539,A2
+1446909540,1446909543,IQ
+1446909544,1446909555,A2
+1446909556,1446909559,IQ
+1446909560,1446920191,A2
1446920192,1446936575,RU
1446936576,1446952959,NO
1446952960,1446969343,QA
@@ -37114,9 +38397,9 @@
1467318272,1467334655,RU
1467334656,1467340959,GB
1467340960,1467340991,TR
-1467340992,1467344127,GB
-1467344128,1467344383,CA
-1467344384,1467347903,GB
+1467340992,1467344639,GB
+1467344640,1467344895,ZA
+1467344896,1467347903,GB
1467347904,1467347935,SE
1467347936,1467351039,GB
1467351040,1467367423,NO
@@ -37130,7 +38413,9 @@
1467367904,1467367935,DE
1467367936,1467368191,SI
1467368192,1467368319,DK
-1467368320,1467369519,DE
+1467368320,1467368447,DE
+1467368448,1467368703,DK
+1467368704,1467369519,DE
1467369520,1467369535,RU
1467369536,1467369599,DE
1467369600,1467369663,IT
@@ -37273,7 +38558,9 @@
1475175056,1475176447,NL
1475176448,1475178495,RO
1475178496,1475180543,RU
-1475180544,1475181455,DE
+1475180544,1475181343,DE
+1475181344,1475181375,LU
+1475181376,1475181455,DE
1475181456,1475181471,SC
1475181472,1475181519,DE
1475181520,1475181535,GB
@@ -37326,8 +38613,8 @@
1475223552,1475229695,NO
1475229696,1475229759,SE
1475229760,1475229951,NO
-1475229952,1475229991,SE
-1475229992,1475233791,NO
+1475229952,1475230071,SE
+1475230072,1475233791,NO
1475233792,1475234303,GB
1475234304,1475234559,IE
1475234560,1475235839,GB
@@ -37337,14 +38624,10 @@
1475241984,1475242239,MC
1475242240,1475243775,FR
1475243776,1475244031,MC
-1475244032,1475244287,DE
-1475244288,1475244311,CV
-1475244312,1475244319,DE
-1475244320,1475244543,CV
-1475244544,1475245055,DE
+1475244032,1475245055,DE
1475245056,1475245183,IE
1475245184,1475245311,SD
-1475245312,1475245567,CV
+1475245312,1475245567,DE
1475245568,1475246078,SA
1475246079,1475246079,DE
1475246080,1475248127,CH
@@ -37469,9 +38752,11 @@
1475639272,1475639295,JE
1475639296,1475639343,GB
1475639344,1475639351,JE
-1475639352,1475639367,GB
-1475639368,1475639383,JE
-1475639384,1475639595,GB
+1475639352,1475639375,GB
+1475639376,1475639383,JE
+1475639384,1475639527,GB
+1475639528,1475639543,JE
+1475639544,1475639595,GB
1475639596,1475639599,JE
1475639600,1475639727,GB
1475639728,1475639735,JE
@@ -37488,7 +38773,9 @@
1475706880,1475723263,RU
1475723264,1475725311,CY
1475725312,1475725951,RU
-1475725952,1475727103,GB
+1475725952,1475726591,GB
+1475726592,1475726719,RU
+1475726720,1475727103,GB
1475727104,1475727167,RU
1475727168,1475727343,GB
1475727344,1475727359,RU
@@ -37550,8 +38837,8 @@
1476075520,1476077911,NL
1476077912,1476077919,DE
1476077920,1476079551,NL
-1476079552,1476079567,DE
-1476079568,1476083711,NL
+1476079552,1476079571,DE
+1476079572,1476083711,NL
1476083712,1476116479,RU
1476116480,1476124671,SE
1476124672,1476132863,PL
@@ -37560,8 +38847,11 @@
1476135168,1476141055,FR
1476141056,1476149247,GB
1476149248,1476157439,NO
-1476157440,1476165375,BH
-1476165376,1476165631,JO
+1476157440,1476158975,BR
+1476158976,1476159487,BH
+1476159488,1476161535,GB
+1476161536,1476165119,BH
+1476165120,1476165631,JO
1476165632,1476173823,HR
1476173824,1476182015,BG
1476182016,1476190207,IE
@@ -37603,9 +38893,7 @@
1481679776,1481680639,SE
1481680640,1481680643,GB
1481680644,1481687039,SE
-1481687040,1481691071,DE
-1481691072,1481691135,ES
-1481691136,1481695231,DE
+1481687040,1481695231,DE
1481695232,1481703423,SK
1481703424,1481711615,SA
1481711616,1481719807,RU
@@ -37673,9 +38961,7 @@
1482060920,1482060927,SK
1482060928,1482063871,CZ
1482063872,1482072063,FI
-1482072064,1482076159,IT
-1482076160,1482076223,CH
-1482076224,1482076383,IT
+1482072064,1482076383,IT
1482076384,1482076415,MT
1482076416,1482080255,IT
1482080256,1482088447,RU
@@ -37747,9 +39033,7 @@
1486295040,1486297087,ES
1486297088,1486299135,IE
1486299136,1486301183,NL
-1486301184,1486301951,DK
-1486301952,1486302719,SE
-1486302720,1486302863,DK
+1486301184,1486302863,DK
1486302864,1486302879,SE
1486302880,1486303231,DK
1486303232,1486305023,IS
@@ -37768,7 +39052,7 @@
1486321856,1486321887,NL
1486321888,1486321919,US
1486321920,1486323199,EU
-1486323200,1486323215,GU
+1486323200,1486323215,US
1486323216,1486323231,NL
1486323232,1486323239,GB
1486323240,1486323447,EU
@@ -37830,8 +39114,8 @@
1489646848,1489647103,IT
1489647104,1489647359,A2
1489647360,1489648639,IT
-1489648640,1489649407,A2
-1489649408,1489650687,FR
+1489648640,1489649663,A2
+1489649664,1489650687,FR
1489650688,1489651199,A2
1489651200,1489653759,IT
1489653760,1489657855,A2
@@ -37858,7 +39142,8 @@
1490028544,1490029055,UA
1490029056,1490040839,NL
1490040840,1490041855,UA
-1490041856,1490049879,CZ
+1490041856,1490042879,NL
+1490042880,1490049879,CZ
1490049880,1490049887,AT
1490049888,1490049919,CZ
1490049920,1490049983,PL
@@ -38040,7 +39325,9 @@
1495070720,1495072767,RU
1495072768,1495105535,CZ
1495105536,1495138303,ES
-1495138304,1495139327,FR
+1495138304,1495139095,FR
+1495139096,1495139103,IT
+1495139104,1495139327,FR
1495139328,1495139583,EU
1495139584,1495139591,GB
1495139592,1495139711,EU
@@ -38272,7 +39559,9 @@
1500231680,1500233727,DE
1500233728,1500237823,RU
1500237824,1500241919,SE
-1500241920,1500242483,TR
+1500241920,1500241960,TR
+1500241961,1500241966,US
+1500241967,1500242483,TR
1500242484,1500242485,US
1500242486,1500242801,TR
1500242802,1500242814,US
@@ -38361,8 +39650,8 @@
1502975744,1502975775,IE
1502975776,1502975999,FR
1502976000,1502977055,US
-1502977056,1502977279,FR
-1502977280,1502979071,US
+1502977056,1502977151,FR
+1502977152,1502979071,US
1502979072,1502979103,FR
1502979104,1502979111,ES
1502979112,1502979119,FR
@@ -38375,9 +39664,7 @@
1502980096,1502980159,US
1502980160,1502980351,FR
1502980352,1502980871,US
-1502980872,1502980927,FR
-1502980928,1502980991,US
-1502980992,1502981119,FR
+1502980872,1502981119,FR
1502981120,1502981887,US
1502981888,1502982143,NL
1502982144,1502982911,DE
@@ -38425,8 +39712,8 @@
1503821824,1503854591,UA
1503854592,1503887359,RU
1503887360,1503895607,DE
-1503895608,1503895623,NL
-1503895624,1503895631,DE
+1503895608,1503895615,NL
+1503895616,1503895631,DE
1503895632,1503895639,AT
1503895640,1503895671,DE
1503895672,1503895679,PL
@@ -38453,19 +39740,16 @@
1503897312,1503897367,DE
1503897368,1503897375,BE
1503897376,1503897383,GR
-1503897384,1503897391,DE
-1503897392,1503897399,CH
-1503897400,1503897407,DE
+1503897384,1503897407,DE
1503897408,1503897415,IT
-1503897416,1503897423,CH
-1503897424,1503897431,DE
+1503897416,1503897431,DE
1503897432,1503897439,IT
1503897440,1503897463,DE
1503897464,1503897471,GR
1503897472,1503897479,AT
1503897480,1503897575,DE
-1503897576,1503897583,GB
-1503897584,1503898119,DE
+1503897576,1503897591,GB
+1503897592,1503898119,DE
1503898120,1503898135,TH
1503898136,1503898167,DE
1503898168,1503898175,RO
@@ -38474,7 +39758,20 @@
1503898192,1503898199,GR
1503898200,1503898207,US
1503898208,1503898215,BE
-1503898216,1503908351,DE
+1503898216,1503898223,DE
+1503898224,1503898231,CH
+1503898232,1503898239,GR
+1503898240,1503898303,IT
+1503898304,1503898311,BE
+1503898312,1503898327,DE
+1503898328,1503898335,AT
+1503898336,1503898343,CH
+1503898344,1503898351,DE
+1503898352,1503898359,CH
+1503898360,1503898415,DE
+1503898416,1503898423,BE
+1503898424,1503898431,CH
+1503898432,1503908351,DE
1503908352,1503909375,IT
1503909376,1503920127,DE
1503920128,1503985663,HR
@@ -38532,25 +39829,23 @@
1505273088,1505273095,NZ
1505273096,1505279999,NL
1505280000,1505280007,IR
-1505280008,1505284863,AE
+1505280008,1505284095,AE
+1505284096,1505284607,IR
+1505284608,1505284863,AE
1505284864,1505288191,IR
1505288192,1505296383,RU
1505296384,1505304575,UA
-1505304576,1505305198,FR
-1505305199,1505305199,DK
-1505305200,1505305200,BE
-1505305201,1505305201,NL
-1505305202,1505305202,GB
-1505305203,1505305203,CA
-1505305204,1505305204,FR
-1505305205,1505305205,CH
-1505305206,1505305206,DE
-1505305207,1505305207,AT
-1505305208,1505305208,IT
-1505305209,1505305209,ES
-1505305210,1505305210,SE
-1505305211,1505305211,NO
-1505305212,1505305878,FR
+1505304576,1505305351,FR
+1505305352,1505305359,GB
+1505305360,1505305367,BE
+1505305368,1505305375,ES
+1505305376,1505305383,NL
+1505305384,1505305391,DE
+1505305392,1505305399,IT
+1505305400,1505305407,PT
+1505305408,1505305415,US
+1505305416,1505305423,CH
+1505305424,1505305878,FR
1505305879,1505305879,US
1505305880,1505305880,ES
1505305881,1505305899,FR
@@ -38577,7 +39872,11 @@
1505321984,1505322287,AT
1505322288,1505322415,DE
1505322416,1505322879,AT
-1505322880,1505325055,DE
+1505322880,1505324335,DE
+1505324336,1505324351,AT
+1505324352,1505324791,DE
+1505324792,1505324799,AT
+1505324800,1505325055,DE
1505325056,1505329151,AT
1505329152,1505329215,GB
1505329216,1505329375,IE
@@ -38586,9 +39885,13 @@
1505332992,1505332999,GB
1505333000,1505333623,IE
1505333624,1505333631,GB
-1505333632,1505336063,IE
+1505333632,1505333887,IE
+1505333888,1505333951,GB
+1505333952,1505336063,IE
1505336064,1505336071,GB
-1505336072,1505336831,IE
+1505336072,1505336576,IE
+1505336577,1505336639,GB
+1505336640,1505336831,IE
1505336832,1505336863,GB
1505336864,1505336864,IE
1505336865,1505336879,GB
@@ -38639,9 +39942,13 @@
1505456640,1505456895,US
1505456896,1505456927,GB
1505456928,1505456935,US
-1505456936,1505458175,GB
+1505456936,1505456983,GB
+1505456984,1505456987,IL
+1505456988,1505458175,GB
1505458176,1505458431,US
-1505458432,1505460223,GB
+1505458432,1505458463,GB
+1505458464,1505458495,US
+1505458496,1505460223,GB
1505460224,1505476607,CZ
1505476608,1505484799,RU
1505484800,1505492991,PL
@@ -38727,11 +40034,14 @@
1506438864,1506438871,DE
1506438872,1506438879,FR
1506438880,1506438883,US
-1506438884,1506438911,DE
+1506438884,1506438895,DE
+1506438896,1506438911,CH
1506438912,1506439039,US
1506439040,1506439463,DE
1506439464,1506439471,GB
-1506439472,1506439935,DE
+1506439472,1506439571,DE
+1506439572,1506439575,US
+1506439576,1506439935,DE
1506439936,1506440191,US
1506440192,1506440447,DE
1506440448,1506440575,US
@@ -38800,9 +40110,7 @@
1506444288,1506445311,DE
1506445312,1506445337,FR
1506445338,1506445343,GB
-1506445344,1506445375,FR
-1506445376,1506445407,GB
-1506445408,1506445519,FR
+1506445344,1506445519,FR
1506445520,1506445527,GB
1506445528,1506445703,FR
1506445704,1506445711,NL
@@ -38813,11 +40121,13 @@
1506445776,1506445791,GB
1506445792,1506445807,FR
1506445808,1506445823,GB
-1506445824,1506446159,FR
-1506446160,1506446175,GB
-1506446176,1506446335,FR
+1506445824,1506446335,FR
1506446336,1506447359,NL
-1506447360,1506448383,IT
+1506447360,1506447423,IT
+1506447424,1506447455,GB
+1506447456,1506448255,IT
+1506448256,1506448287,GB
+1506448288,1506448383,IT
1506448384,1506448639,AT
1506448640,1506448647,GB
1506448648,1506448663,AT
@@ -38839,8 +40149,8 @@
1506450848,1506450863,CZ
1506450864,1506450879,GB
1506450880,1506450943,CZ
-1506450944,1506451007,DK
-1506451008,1506451199,GB
+1506450944,1506451023,DK
+1506451024,1506451199,GB
1506451200,1506451895,ES
1506451896,1506451903,GB
1506451904,1506452223,ES
@@ -38854,8 +40164,8 @@
1506453400,1506453415,SE
1506453416,1506453423,GB
1506453424,1506453439,SE
-1506453440,1506453455,GB
-1506453456,1506453471,SE
+1506453440,1506453447,GB
+1506453448,1506453471,SE
1506453472,1506453503,GB
1506453504,1506453759,DE
1506453760,1506454015,FR
@@ -38871,7 +40181,9 @@
1506456576,1506456831,IE
1506456832,1506456847,IT
1506456848,1506456863,GB
-1506456864,1506457087,IT
+1506456864,1506456959,IT
+1506456960,1506456991,GB
+1506456992,1506457087,IT
1506457088,1506458239,GB
1506458240,1506458623,CH
1506458624,1506459135,GB
@@ -38902,7 +40214,9 @@
1506462624,1506462719,FR
1506462720,1506463231,IT
1506463232,1506463487,SE
-1506463488,1506463999,DE
+1506463488,1506463527,DE
+1506463528,1506463535,GB
+1506463536,1506463999,DE
1506464000,1506464767,GB
1506464768,1506465279,NL
1506465280,1506465791,GB
@@ -38929,12 +40243,14 @@
1506472448,1506472703,GB
1506472704,1506473215,IT
1506473216,1506473471,GB
-1506473472,1506474271,IT
+1506473472,1506473759,IT
+1506473760,1506473791,GB
+1506473792,1506474271,IT
1506474272,1506474303,SE
1506474304,1506474495,IT
1506474496,1506474751,FR
-1506474752,1506474879,IT
-1506474880,1506475007,GB
+1506474752,1506474887,IT
+1506474888,1506475007,GB
1506475008,1506475519,IT
1506475520,1506475527,AT
1506475528,1506476031,GB
@@ -38976,7 +40292,6 @@
1506781888,1506781951,AU
1506781952,1506783231,GB
1506783232,1506785279,RU
-1506785280,1506787327,UA
1506787328,1506789375,ME
1506789376,1506791423,DE
1506791424,1506793471,GB
@@ -39076,12 +40391,12 @@
1508642816,1508646911,SE
1508646912,1508646927,DK
1508646928,1508646935,SE
-1508646936,1508647015,DK
-1508647016,1508648447,SE
+1508646936,1508647039,DK
+1508647040,1508648447,SE
1508648448,1508648703,DK
1508648704,1508650751,SE
-1508650752,1508650815,DK
-1508650816,1508650879,SE
+1508650752,1508650823,DK
+1508650824,1508650879,SE
1508650880,1508651263,DK
1508651264,1508652543,SE
1508652544,1508654079,DK
@@ -39224,10 +40539,13 @@
1515467264,1515467519,FR
1515467520,1515468031,US
1515468032,1515468287,ES
-1515468288,1515486975,FR
+1515468288,1515468415,NL
+1515468416,1515486975,FR
1515486976,1515487231,CD
-1515487232,1515487359,HK
-1515487360,1515487999,FR
+1515487232,1515487487,HK
+1515487488,1515487743,FR
+1515487744,1515487775,HK
+1515487776,1515487999,FR
1515488000,1515488255,HK
1515488256,1515519743,FR
1515519744,1515519999,ES
@@ -39238,12 +40556,10 @@
1518452736,1518460927,AT
1518460928,1518501887,SE
1518501888,1518503935,EE
-1518503936,1518504959,LT
-1518504960,1518505983,SE
-1518505984,1518508031,LT
-1518508032,1518510079,SE
-1518510080,1518514175,LV
-1518514176,1518665727,SE
+1518503936,1518508799,LT
+1518508800,1518510079,SE
+1518510080,1518516479,LV
+1518516480,1518665727,SE
1518665728,1518727167,RU
1518727168,1518731263,SE
1518731264,1518927871,DE
@@ -39414,7 +40730,13 @@
1520074752,1520099327,BG
1520099328,1520099583,A2
1520099584,1520107519,BG
-1520107520,1520140287,GB
+1520107520,1520138167,GB
+1520138168,1520138175,IE
+1520138176,1520138611,GB
+1520138612,1520138615,IE
+1520138616,1520139399,GB
+1520139400,1520139407,IE
+1520139408,1520140287,GB
1520140288,1520173055,RU
1520173056,1520205823,PL
1520205824,1520230399,RU
@@ -39565,10 +40887,13 @@
1534711808,1534712831,BE
1534712832,1534713855,FR
1534713856,1534713887,PL
-1534713888,1534713935,FR
+1534713888,1534713919,FR
+1534713920,1534713927,IT
+1534713928,1534713931,GB
+1534713932,1534713935,FI
1534713936,1534713943,CH
1534713944,1534713947,DE
-1534713948,1534713951,GB
+1534713948,1534713951,PL
1534713952,1534713955,DE
1534713956,1534713959,BE
1534713960,1534713963,CH
@@ -39603,8 +40928,9 @@
1534714352,1534714367,CH
1534714368,1534714383,GB
1534714384,1534714399,FR
-1534714400,1534714415,ES
-1534714416,1534714431,GB
+1534714400,1534714403,GB
+1534714404,1534714407,PL
+1534714408,1534714431,GB
1534714432,1534714463,FR
1534714464,1534714495,GB
1534714496,1534714511,FR
@@ -39629,17 +40955,18 @@
1534714864,1534714871,FR
1534714872,1534714875,DE
1534714876,1534714879,FR
-1534714880,1534714895,IT
+1534714880,1534714895,PL
1534714896,1534714911,FR
1534714912,1534714927,DE
-1534714928,1534715039,FR
+1534714928,1534714943,FR
+1534714944,1534714975,DE
+1534714976,1534715039,FR
1534715040,1534715055,GB
1534715056,1534715071,PL
1534715072,1534715135,FR
1534715136,1534715139,PL
1534715140,1534715143,GB
-1534715144,1534715151,NL
-1534715152,1534715167,FR
+1534715144,1534715167,FR
1534715168,1534715183,NL
1534715184,1534715199,FR
1534715200,1534715203,DE
@@ -39648,7 +40975,10 @@
1534715216,1534715263,FR
1534715264,1534715279,ES
1534715280,1534715295,FR
-1534715296,1534715311,ES
+1534715296,1534715299,ES
+1534715300,1534715303,FR
+1534715304,1534715307,ES
+1534715308,1534715311,DE
1534715312,1534715315,FR
1534715316,1534715319,ES
1534715320,1534715327,PL
@@ -39658,12 +40988,13 @@
1534715372,1534715375,GB
1534715376,1534715391,ES
1534715392,1534715407,PL
-1534715408,1534715423,ES
+1534715408,1534715423,DE
1534715424,1534715439,PL
1534715440,1534715447,ES
1534715448,1534715451,FR
1534715452,1534715487,PL
-1534715488,1534715503,ES
+1534715488,1534715495,IT
+1534715496,1534715503,CZ
1534715504,1534715519,CH
1534715520,1534715551,FR
1534715552,1534715583,ES
@@ -39672,14 +41003,18 @@
1534715616,1534715631,FR
1534715632,1534715647,ES
1534715648,1534715663,PL
-1534715664,1534715679,ES
-1534715680,1534715695,GB
-1534715696,1534715711,FR
+1534715664,1534715667,FR
+1534715668,1534715675,PL
+1534715676,1534715679,GB
+1534715680,1534715711,FR
1534715712,1534715727,PT
1534715728,1534715731,FR
1534715732,1534715735,GB
1534715736,1534715759,PL
-1534715760,1534715807,ES
+1534715760,1534715775,ES
+1534715776,1534715783,PL
+1534715784,1534715791,BE
+1534715792,1534715807,ES
1534715808,1534715871,FR
1534715872,1534715887,DE
1534715888,1534715919,FR
@@ -39709,9 +41044,7 @@
1534716432,1534716447,PL
1534716448,1534716479,FR
1534716480,1534716495,ES
-1534716496,1534716511,FR
-1534716512,1534716527,DE
-1534716528,1534716575,FR
+1534716496,1534716575,FR
1534716576,1534716607,PL
1534716608,1534716639,FR
1534716640,1534716647,BE
@@ -39725,15 +41058,20 @@
1534716752,1534716759,PL
1534716760,1534716763,FR
1534716764,1534716767,ES
-1534716768,1534716879,FR
+1534716768,1534716823,FR
+1534716824,1534716831,GB
+1534716832,1534716879,FR
1534716880,1534716895,BE
-1534716896,1534716927,FR
+1534716896,1534716903,ES
+1534716904,1534716911,DE
+1534716912,1534716927,FR
1534716928,1534716943,DE
1534716944,1534716991,FR
1534716992,1534717007,DE
1534717008,1534717023,FR
1534717024,1534717055,PL
-1534717056,1534717103,FR
+1534717056,1534717071,GB
+1534717072,1534717103,FR
1534717104,1534717119,PL
1534717120,1534717135,IT
1534717136,1534717139,CH
@@ -39741,16 +41079,15 @@
1534717144,1534717147,FR
1534717148,1534717151,IT
1534717152,1534717263,FR
-1534717264,1534717279,ES
-1534717280,1534717315,FR
+1534717264,1534717267,PL
+1534717268,1534717315,FR
1534717316,1534717319,IE
1534717320,1534717323,GB
1534717324,1534717343,FR
1534717344,1534717359,GB
1534717360,1534717375,PL
1534717376,1534717503,FR
-1534717504,1534717519,DE
-1534717520,1534717535,FR
+1534717504,1534717535,DE
1534717536,1534717551,PL
1534717552,1534717567,CZ
1534717568,1534717583,PL
@@ -39775,7 +41112,10 @@
1534717908,1534717911,GB
1534717912,1534717915,FR
1534717916,1534717919,DE
-1534717920,1534717935,ES
+1534717920,1534717923,PL
+1534717924,1534717927,ES
+1534717928,1534717931,DE
+1534717932,1534717935,FR
1534717936,1534717951,IT
1534717952,1534717967,BE
1534717968,1534717983,IT
@@ -39784,7 +41124,8 @@
1534718032,1534718063,FR
1534718064,1534718079,IT
1534718080,1534718087,ES
-1534718088,1534718095,CZ
+1534718088,1534718091,DE
+1534718092,1534718095,ES
1534718096,1534718111,PL
1534718112,1534718127,IT
1534718128,1534718143,ES
@@ -39816,13 +41157,16 @@
1534718832,1534718847,FR
1534718848,1534718911,BE
1534718912,1534718927,IT
-1534718928,1534718943,FR
-1534718944,1534718959,DE
+1534718928,1534718959,FR
1534718960,1534718975,ES
1534718976,1534719039,FR
1534719040,1534719167,BE
1534719168,1534719215,PL
-1534719216,1534719359,FR
+1534719216,1534719295,FR
+1534719296,1534719311,DE
+1534719312,1534719335,FR
+1534719336,1534719343,PL
+1534719344,1534719359,FR
1534719360,1534719375,PL
1534719376,1534719391,DE
1534719392,1534719395,CH
@@ -39832,7 +41176,7 @@
1534719424,1534719439,DE
1534719440,1534719455,PL
1534719456,1534719471,FR
-1534719472,1534719487,GB
+1534719472,1534719487,IE
1534719488,1534719631,FR
1534719632,1534719639,ES
1534719640,1534719643,GB
@@ -39845,14 +41189,18 @@
1534719704,1534719711,GB
1534719712,1534719759,FR
1534719760,1534719775,IT
-1534719776,1534719823,FR
+1534719776,1534719799,FR
+1534719800,1534719803,ES
+1534719804,1534719807,GB
+1534719808,1534719823,FR
1534719824,1534719839,CH
1534719840,1534719871,FR
1534719872,1534719887,PL
1534719888,1534719951,FR
1534719952,1534719967,DE
1534719968,1534719983,PL
-1534719984,1534720007,FR
+1534719984,1534720003,FR
+1534720004,1534720007,ES
1534720008,1534720015,PL
1534720016,1534720031,GB
1534720032,1534720047,DE
@@ -39866,7 +41214,8 @@
1534720224,1534720239,DE
1534720240,1534720255,BE
1534720256,1534720287,PL
-1534720288,1534720367,FR
+1534720288,1534720351,FR
+1534720352,1534720367,ES
1534720368,1534720383,IT
1534720384,1534720431,FR
1534720432,1534720435,DE
@@ -39884,12 +41233,14 @@
1534720512,1534720527,DE
1534720528,1534720535,FR
1534720536,1534720539,PL
-1534720540,1534720575,FR
-1534720576,1534720591,ES
+1534720540,1534720543,FI
+1534720544,1534720559,FR
+1534720560,1534720583,IT
+1534720584,1534720591,BE
1534720592,1534720607,FR
1534720608,1534720623,GB
-1534720624,1534720655,FR
-1534720656,1534720671,PL
+1534720624,1534720639,FR
+1534720640,1534720671,PL
1534720672,1534720739,FR
1534720740,1534720743,PL
1534720744,1534720747,NL
@@ -39935,7 +41286,9 @@
1534721232,1534721247,DE
1534721248,1534721263,FR
1534721264,1534721279,GB
-1534721280,1534721311,FR
+1534721280,1534721287,PL
+1534721288,1534721295,NL
+1534721296,1534721311,FR
1534721312,1534721319,PL
1534721320,1534721327,PT
1534721328,1534721343,NL
@@ -39953,8 +41306,8 @@
1534721532,1534721535,FR
1534721536,1534721583,GB
1534721584,1534721599,FR
-1534721600,1534721623,ES
-1534721624,1534721627,PL
+1534721600,1534721619,ES
+1534721620,1534721627,PL
1534721628,1534721631,NL
1534721632,1534721663,FR
1534721664,1534721679,ES
@@ -39964,9 +41317,7 @@
1534721744,1534721747,PL
1534721748,1534721751,IT
1534721752,1534721755,DE
-1534721756,1534721775,FR
-1534721776,1534721791,ES
-1534721792,1534721823,FR
+1534721756,1534721823,FR
1534721824,1534721827,PL
1534721828,1534721831,FR
1534721832,1534721835,PL
@@ -39984,12 +41335,15 @@
1534721968,1534721975,DE
1534721976,1534721979,ES
1534721980,1534721983,GB
-1534721984,1534721999,PL
-1534722000,1534722031,FR
-1534722032,1534722047,BE
+1534721984,1534722007,PL
+1534722008,1534722011,PT
+1534722012,1534722015,ES
+1534722016,1534722039,FR
+1534722040,1534722043,BE
+1534722044,1534722047,FR
1534722048,1534787583,RU
1534787584,1534791679,RO
-1534791680,1534795775,UA
+1534791680,1534795775,RU
1534795776,1534803967,NO
1534803968,1534808063,LV
1534808064,1534812159,RU
@@ -39997,7 +41351,7 @@
1534816256,1534820351,FR
1534820352,1534824447,FI
1534824448,1534828543,UA
-1534828544,1534832639,PL
+1534828544,1534836735,PL
1534836736,1534840831,SE
1534840832,1534844927,PL
1534844928,1534849023,IE
@@ -40059,7 +41413,7 @@
1536045056,1536045439,DE
1536045440,1536045567,A2
1536045568,1536046079,IQ
-1536046080,1536046591,A2
+1536046080,1536046591,DE
1536046592,1536046847,IQ
1536046848,1536046975,A2
1536046976,1536047039,SA
@@ -40077,9 +41431,10 @@
1536048672,1536048703,LU
1536048704,1536048719,IQ
1536048720,1536048735,NL
-1536048736,1536049151,A2
+1536048736,1536048895,DE
+1536048896,1536049151,A2
1536049152,1536051199,IT
-1536053248,1536057343,RU
+1536051200,1536057343,RU
1536057344,1536061439,IE
1536061440,1536065535,SE
1536065536,1536065791,GB
@@ -40154,16 +41509,13 @@
1536655360,1536659455,GE
1536659456,1536659759,DE
1536659760,1536659775,BI
-1536659776,1536659791,LB
+1536659776,1536659791,DE
1536659792,1536659823,SD
-1536659824,1536659967,DE
-1536659968,1536659975,EG
-1536659976,1536659991,DE
-1536659992,1536660003,EG
+1536659824,1536659991,DE
+1536659992,1536659999,EG
+1536660000,1536660003,DE
1536660004,1536660007,SO
-1536660008,1536660015,DE
-1536660016,1536660019,KW
-1536660020,1536660031,DE
+1536660008,1536660031,DE
1536660032,1536660039,DJ
1536660040,1536660735,DE
1536660736,1536660991,SA
@@ -40176,26 +41528,24 @@
1536662320,1536662335,LB
1536662336,1536662351,DE
1536662352,1536662359,TD
-1536662360,1536662367,IR
-1536662368,1536662399,IQ
-1536662400,1536662415,DE
+1536662360,1536662415,DE
1536662416,1536662431,GN
-1536662432,1536662527,IQ
-1536662528,1536662783,DE
+1536662432,1536662463,IQ
+1536662464,1536662783,DE
1536662784,1536663039,SA
1536663040,1536663295,DE
1536663296,1536663311,LB
1536663312,1536663319,DE
1536663320,1536663327,LB
-1536663328,1536663335,CV
-1536663336,1536663359,DE
-1536663360,1536663391,IQ
+1536663328,1536663343,DE
+1536663344,1536663391,IQ
1536663392,1536663423,DE
1536663424,1536663551,KW
1536663552,1536667647,SA
1536667648,1536675839,RU
1536675840,1536679935,GB
1536679936,1536684031,LB
+1536684032,1536688127,GB
1536688128,1537212415,FI
1537212416,1538260991,FR
1538260992,1538785279,BE
@@ -40214,8 +41564,8 @@
1538859008,1538875391,RU
1538875392,1538883583,RS
1538883584,1538891775,BE
-1538891776,1538898431,DE
-1538898432,1538899967,FR
+1538891776,1538898175,DE
+1538898176,1538899967,FR
1538899968,1538904031,SI
1538904032,1538904039,BH
1538904040,1538908159,SI
@@ -40276,10 +41626,7 @@
1539049312,1539049327,LY
1539049328,1539049335,IT
1539049336,1539049343,LY
-1539049344,1539050335,IT
-1539050336,1539050351,TR
-1539050352,1539050359,IT
-1539050360,1539050367,TR
+1539049344,1539050367,IT
1539050368,1539050375,FR
1539050376,1539050383,IT
1539050384,1539050399,FR
@@ -40340,6 +41687,7 @@
1539212544,1539213311,CZ
1539213312,1539215359,SE
1539215360,1539219455,DE
+1539219456,1539221503,GG
1539221504,1539222287,FR
1539222288,1539222303,HK
1539222304,1539222527,FR
@@ -40347,6 +41695,7 @@
1539222784,1539223551,FR
1539223552,1539225599,DE
1539225600,1539227647,HU
+1539227648,1539229695,FI
1539229696,1539231743,DE
1539231744,1539233791,BE
1539233792,1539235839,GR
@@ -40971,7 +42320,8 @@
1539744256,1539744511,RO
1539744512,1539744767,DE
1539744768,1539745023,SE
-1539745024,1539745535,GB
+1539745024,1539745279,GB
+1539745280,1539745535,GI
1539745536,1539745791,CH
1539745792,1539746303,DK
1539746304,1539746815,RU
@@ -41018,6 +42368,7 @@
1539757568,1539757823,SI
1539757824,1539758079,UA
1539758080,1539758335,HR
+1539758336,1539758591,EU
1539758592,1539758847,NL
1539758848,1539759103,BA
1539759104,1539759359,DK
@@ -41332,7 +42683,7 @@
1539878912,1539879935,EU
1539879936,1539880959,UA
1539880960,1539881983,PL
-1539881984,1539884031,UA
+1539881984,1539883007,UA
1539884032,1539885055,MT
1539885056,1539886079,UA
1539886080,1539887103,FR
@@ -41738,6 +43089,7 @@
1540303872,1540304895,UA
1540304896,1540305407,PL
1540305408,1540305919,GB
+1540305920,1540306431,PL
1540306432,1540306943,UA
1540306944,1540307455,GB
1540307456,1540307967,RU
@@ -42204,6 +43556,7 @@
1540464384,1540464895,DE
1540464896,1540465407,GB
1540465408,1540465663,ES
+1540465664,1540465919,NL
1540465920,1540466175,UA
1540466176,1540466431,DK
1540466432,1540466687,RU
@@ -42730,8 +44083,7 @@
1540716800,1540717055,UA
1540717056,1540717311,CZ
1540717312,1540717823,PL
-1540717824,1540718079,UA
-1540718080,1540718335,CR
+1540717824,1540718335,UA
1540718336,1540718591,DE
1540718592,1540718847,CH
1540718848,1540719103,IT
@@ -42821,7 +44173,6 @@
1540742912,1540743167,RU
1540743168,1540743423,NO
1540743424,1540743679,RU
-1540743680,1540743935,MD
1540743936,1540744191,CH
1540744192,1540744447,GR
1540744448,1540744703,UA
@@ -42984,6 +44335,7 @@
1540891136,1540891391,NL
1540891392,1540891647,DE
1540891648,1540891903,CH
+1540891904,1540892159,GB
1540892160,1540892415,IT
1540892416,1540892671,UA
1540892672,1540892927,GB
@@ -43010,6 +44362,7 @@
1540898304,1540898559,SE
1540898560,1540898815,ES
1540898816,1540899071,PL
+1540899072,1540899327,SE
1540899328,1540899583,RU
1540899584,1540899839,FR
1540899840,1540900351,RU
@@ -43208,9 +44561,37 @@
1540960256,1540960767,PL
1540960768,1540961279,RU
1540961280,1540961791,CZ
-1540961792,1540962303,HU
1540962304,1540962815,NL
-1540962816,1540963327,EU
+1540962816,1540963839,UA
+1540963840,1540964351,RU
+1540964352,1540964863,IR
+1540964864,1540965375,UA
+1540965888,1540966399,RU
+1540966400,1540966911,GB
+1540966912,1540967935,RU
+1540967936,1540968447,UA
+1540968448,1540969471,RO
+1540969472,1540969983,GB
+1540969984,1540970495,DE
+1540970496,1540971007,IE
+1540971008,1540971519,UA
+1540971520,1540972031,SI
+1540972032,1540972543,FR
+1540972544,1540973055,CZ
+1540973056,1540973567,PL
+1540973568,1540974079,UA
+1540974080,1540974591,RU
+1540974592,1540975103,PL
+1540975104,1540975615,UA
+1540975616,1540976639,RU
+1540976640,1540977151,UA
+1540977152,1540977663,PL
+1540977664,1540978175,FI
+1540978176,1540978687,AT
+1540978688,1540979199,RU
+1540979200,1540979711,SI
+1540979712,1540980223,RU
+1540980224,1540980735,SI
1540980736,1540980991,CH
1540980992,1540981247,RU
1540981248,1540981503,RO
@@ -43254,6 +44635,79 @@
1540991744,1540991999,PL
1540992000,1540992255,FR
1540992256,1540992511,AT
+1540992512,1540993279,DE
+1540993280,1540993535,LB
+1540993536,1540993791,SC
+1540993792,1540994047,UA
+1540994048,1540994303,RU
+1540994304,1540994559,SE
+1540994560,1540994815,PL
+1540994816,1540995071,UA
+1540995072,1540995327,RU
+1540995328,1540995583,IQ
+1540995584,1540995839,SE
+1540995840,1540996095,RO
+1540996096,1540996351,DE
+1540996352,1540996607,NL
+1540996608,1540996863,RU
+1540996864,1540997119,NL
+1540997120,1540997375,RU
+1540997376,1540997631,TR
+1540997632,1540998399,RU
+1540998400,1540998655,UA
+1540998656,1540998911,PL
+1540998912,1540999167,DE
+1540999168,1540999423,RU
+1540999424,1540999679,DK
+1540999680,1540999935,RU
+1540999936,1541000191,RO
+1541000192,1541000447,PL
+1541000448,1541000703,BG
+1541000704,1541000959,DE
+1541000960,1541001215,RU
+1541001216,1541001471,PL
+1541001472,1541001727,SE
+1541001728,1541001983,NL
+1541001984,1541002239,FI
+1541002240,1541002495,RU
+1541002496,1541002751,AT
+1541002752,1541003007,DE
+1541003008,1541003263,BG
+1541003264,1541003519,GB
+1541003520,1541004031,PL
+1541004032,1541004287,IL
+1541004288,1541004543,RU
+1541004544,1541004799,PL
+1541004800,1541005055,SI
+1541005056,1541005311,NL
+1541005312,1541005567,PL
+1541005568,1541006079,AT
+1541006080,1541006335,RU
+1541006336,1541006591,PL
+1541006592,1541006847,AT
+1541006848,1541007103,DE
+1541007104,1541007359,GB
+1541007360,1541007615,RO
+1541007616,1541007871,RU
+1541007872,1541008127,FR
+1541008128,1541008383,NL
+1541008640,1541008895,GB
+1541008896,1541009151,TR
+1541009152,1541009407,RU
+1541009408,1541009663,UA
+1541009664,1541009919,CH
+1541009920,1541010175,PL
+1541010176,1541010431,GR
+1541010432,1541010687,UA
+1541010688,1541010943,GB
+1541010944,1541011199,CY
+1541011200,1541011455,CH
+1541011456,1541011711,FI
+1541011712,1541012223,RU
+1541012224,1541012479,DE
+1541012480,1541012735,FI
+1541012736,1541013247,UA
+1541013248,1541013503,SI
1541013504,1541014527,RO
1541014528,1541015551,AM
1541015552,1541016575,RU
@@ -43310,6 +44764,171 @@
1541079040,1541080063,PL
1541080064,1541081087,RU
1541081088,1541082111,DE
+1541082112,1541083135,RU
+1541083136,1541084159,RO
+1541084160,1541086207,RU
+1541086208,1541088255,UA
+1541088256,1541089279,RU
+1541089280,1541090303,GB
+1541090304,1541091327,CZ
+1541091328,1541092351,RU
+1541092352,1541093375,UA
+1541093376,1541094399,RU
+1541094400,1541095423,UA
+1541095424,1541096447,RU
+1541096448,1541097471,AT
+1541097472,1541098495,RU
+1541098496,1541099519,NL
+1541099520,1541100543,UA
+1541100544,1541101567,HU
+1541101568,1541102591,RU
+1541102592,1541103615,RO
+1541103616,1541105663,RU
+1541105664,1541106687,PL
+1541106688,1541107711,NL
+1541107712,1541108735,PL
+1541108736,1541109759,ES
+1541109760,1541110783,PL
+1541110784,1541111807,RU
+1541111808,1541112831,PL
+1541112832,1541113855,SK
+1541113856,1541115903,RU
+1541115904,1541116927,UA
+1541116928,1541117951,RU
+1541117952,1541118975,DK
+1541118976,1541122047,RU
+1541123072,1541124095,FI
+1541124096,1541126143,RU
+1541126144,1541127167,PL
+1541127168,1541129215,RU
+1541129216,1541130239,UA
+1541130240,1541132287,RU
+1541132288,1541133311,PL
+1541133312,1541134335,RO
+1541134336,1541135359,SE
+1541135360,1541136383,UA
+1541136384,1541138431,RU
+1541138432,1541139455,UA
+1541139456,1541140479,HU
+1541140480,1541142527,CZ
+1541142528,1541143551,RU
+1541143552,1541144575,UA
+1541144576,1541144831,LV
+1541144832,1541145087,RU
+1541145088,1541145343,AT
+1541145344,1541145599,UA
+1541145600,1541145855,IT
+1541145856,1541146111,RU
+1541146112,1541146367,UA
+1541146368,1541146623,DK
+1541146624,1541146879,AT
+1541146880,1541147135,IL
+1541147136,1541147391,PL
+1541147392,1541147903,RU
+1541147904,1541148159,EU
+1541148160,1541148415,RO
+1541148416,1541148671,GB
+1541148672,1541148927,RU
+1541148928,1541149439,PL
+1541149440,1541149695,SE
+1541149696,1541149951,LT
+1541149952,1541150207,NL
+1541150208,1541150463,IL
+1541150464,1541150719,CH
+1541150720,1541151231,GB
+1541151232,1541151487,RO
+1541151488,1541151743,FR
+1541151744,1541151999,NL
+1541152000,1541152255,HU
+1541152256,1541152511,NL
+1541152512,1541152767,RU
+1541152768,1541153023,PL
+1541153024,1541153279,RU
+1541153280,1541153535,DE
+1541153536,1541153791,UA
+1541153792,1541154047,DE
+1541154048,1541154303,NL
+1541154304,1541154559,RU
+1541154560,1541154815,PL
+1541154816,1541155071,CH
+1541155072,1541155327,CY
+1541155328,1541155583,GB
+1541155584,1541155839,RU
+1541155840,1541156095,PL
+1541156096,1541156351,IE
+1541156352,1541156607,RU
+1541156608,1541156863,SE
+1541156864,1541157119,RO
+1541157120,1541157375,DE
+1541157376,1541157631,TR
+1541157632,1541157887,KZ
+1541157888,1541158143,GB
+1541158144,1541158399,NL
+1541158400,1541158655,PL
+1541158656,1541158911,SI
+1541158912,1541159167,DE
+1541159168,1541159423,RU
+1541159424,1541159679,SE
+1541159680,1541159935,LT
+1541159936,1541160447,UA
+1541160448,1541160703,RU
+1541160704,1541160959,MD
+1541160960,1541161215,CH
+1541161216,1541161471,TR
+1541161472,1541161727,ES
+1541161728,1541161983,DE
+1541161984,1541162239,BE
+1541162240,1541162495,RU
+1541162496,1541162751,GB
+1541162752,1541163007,DE
+1541163008,1541163263,RO
+1541163264,1541163519,PL
+1541163520,1541163775,DE
+1541163776,1541164031,RO
+1541164032,1541164287,RU
+1541164288,1541164543,HR
+1541164544,1541164799,SI
+1541164800,1541165055,IR
+1541165056,1541165311,UA
+1541165312,1541165567,RU
+1541165568,1541165823,NL
+1541165824,1541166079,GB
+1541166080,1541166335,RU
+1541166336,1541166591,FR
+1541166592,1541166847,RO
+1541166848,1541167103,RU
+1541167104,1541167359,NL
+1541167360,1541167615,AT
+1541167616,1541167871,RU
+1541167872,1541168127,UA
+1541210112,1541210623,RU
+1541210624,1541211135,CZ
+1541211136,1541211647,SK
+1541211648,1541212159,RU
+1541212160,1541212671,DE
+1541212672,1541213183,MT
+1541213184,1541213695,DE
+1541213696,1541214207,UA
+1541214208,1541215743,RU
+1541215744,1541216255,SA
+1541216256,1541216767,RU
+1541216768,1541217279,PL
+1541217280,1541218303,RU
+1541218304,1541218815,IT
+1541218816,1541219839,RU
+1541219840,1541220351,CZ
+1541220352,1541221375,RU
+1541221376,1541221887,PL
+1541221888,1541222399,CZ
+1541222400,1541222911,RU
+1541222912,1541223423,DK
+1541223424,1541223935,UA
+1541223936,1541224447,GB
+1541224448,1541224959,RU
+1541224960,1541225471,DE
+1541225472,1541225983,RU
+1541225984,1541226495,LV
+1541226496,1541227007,UA
1543503872,1545601023,GB
1545601024,1545863167,SE
1545863168,1545895935,RU
@@ -43373,6 +44992,7 @@
1546270720,1546272767,GB
1546272768,1546274815,NO
1546274816,1546276863,SE
+1546276864,1546278911,IT
1546278912,1546280959,RU
1546280960,1546283007,IT
1546283008,1546285055,CH
@@ -43471,6 +45091,7 @@
1546895360,1546911743,IE
1546911744,1546928127,SK
1546928128,1546944511,GB
+1546944512,1546960895,UA
1546960896,1546977279,HU
1546977280,1546993663,MK
1546993664,1547010047,RU
@@ -43518,7 +45139,8 @@
1547564288,1547564311,CH
1547564312,1547564315,BG
1547564316,1547564335,NL
-1547564336,1547564415,US
+1547564336,1547564351,US
+1547564352,1547564415,CY
1547564416,1547564439,NZ
1547564440,1547564543,NL
1547564544,1547564799,US
@@ -43679,8 +45301,8 @@
1559314432,1559322623,GE
1559322624,1559330815,RU
1559330816,1559339007,BA
-1559339008,1559339711,RU
-1559339712,1559339775,A1
+1559339008,1559339743,RU
+1559339744,1559339775,MK
1559339776,1559341695,RU
1559341696,1559341703,ES
1559341704,1559347199,RU
@@ -43759,8 +45381,8 @@
1566101504,1566105599,RU
1566105600,1566109695,DE
1566109696,1566111231,CH
-1566111232,1566111295,FR
-1566111296,1566113791,CH
+1566111232,1566111487,FR
+1566111488,1566113791,CH
1566113792,1566117887,DE
1566117888,1566121983,TR
1566121984,1566126079,NO
@@ -43777,6 +45399,7 @@
1566158848,1566162943,RU
1566162944,1566167039,PL
1566167040,1566171135,UA
+1566171136,1566175231,TR
1566175232,1566179327,IE
1566179328,1566183423,DK
1566183424,1566187519,ES
@@ -43788,7 +45411,9 @@
1566212096,1566216191,DE
1566216192,1566220287,SE
1566220288,1566224383,CZ
-1566224384,1566228479,DE
+1566224384,1566226343,DE
+1566226344,1566226351,NL
+1566226352,1566228479,DE
1566228480,1566232575,GB
1566232576,1566248959,RU
1566248960,1566257151,GB
@@ -43915,10 +45540,20 @@
1566468896,1566469391,BE
1566469392,1566469407,HU
1566469408,1566470143,BE
-1566470144,1566470320,IE
-1566470321,1566470399,GB
-1566470400,1566470719,IE
-1566470720,1566470911,GB
+1566470144,1566470159,IE
+1566470160,1566470171,GB
+1566470172,1566470239,IE
+1566470240,1566470343,GB
+1566470344,1566470351,IE
+1566470352,1566470367,GB
+1566470368,1566470719,IE
+1566470720,1566470727,GB
+1566470728,1566470739,IE
+1566470740,1566470743,GB
+1566470744,1566470747,IE
+1566470748,1566470751,GB
+1566470752,1566470847,IE
+1566470848,1566470911,GB
1566470912,1566472191,IE
1566472192,1566474239,GB
1566474240,1566476287,DE
@@ -44026,6 +45661,7 @@
1568505856,1568538623,NL
1568538624,1568555007,IR
1568555008,1568571391,UA
+1568571392,1568604159,LB
1568604160,1568636927,UA
1568636928,1568669439,DE
1568669440,1568669695,MD
@@ -44055,6 +45691,7 @@
1570596864,1570598911,UA
1570598912,1570600959,PL
1570600960,1570603007,RU
+1570603008,1570605055,CZ
1570605056,1570607103,NL
1570607104,1570609151,RU
1570609152,1570611199,PL
@@ -44162,7 +45799,9 @@
1570667524,1570667527,IT
1570667528,1570667531,NO
1570667532,1570667535,GB
-1570667536,1570667711,SE
+1570667536,1570667587,SE
+1570667588,1570667591,US
+1570667592,1570667711,SE
1570667712,1570667727,FR
1570667728,1570667743,NL
1570667744,1570667775,SE
@@ -44187,6 +45826,7 @@
1570717696,1570725887,HR
1570725888,1570734079,DE
1570734080,1570750463,PL
+1570750464,1570752511,AL
1570752512,1570754559,GB
1570754560,1570756607,ES
1570756608,1570764799,RU
@@ -44194,7 +45834,9 @@
1570766848,1571291135,DK
1571291136,1571422207,RO
1571422208,1571426303,RU
-1571426304,1571553279,CZ
+1571426304,1571446783,CZ
+1571446784,1571448831,KZ
+1571448832,1571553279,CZ
1571553280,1571684351,IL
1571684352,1571686399,ES
1571686400,1571688447,GB
@@ -44331,7 +45973,10 @@
1572504320,1572504575,DE
1572504576,1572504703,RO
1572504704,1572504831,TR
-1572504832,1572507647,IT
+1572504832,1572505087,SG
+1572505088,1572507199,IT
+1572507200,1572507207,GB
+1572507208,1572507647,IT
1572507648,1572511743,GB
1572511744,1572515839,DE
1572515840,1572517759,NL
@@ -44370,8 +46015,8 @@
1572569088,1572571135,NL
1572571136,1572573183,RO
1572573184,1572574975,GG
-1572574976,1572575103,GB
-1572575104,1572575231,GG
+1572574976,1572575167,GB
+1572575168,1572575231,GG
1572575232,1572577279,RU
1572577280,1572579327,AM
1572579328,1572581375,GB
@@ -44400,7 +46045,6 @@
1572620568,1572622335,CH
1572622336,1572624383,RU
1572624384,1572626431,NO
-1572626432,1572628479,RU
1572628480,1572630527,DE
1572630528,1572632575,IT
1572632576,1572634623,RU
@@ -44497,7 +46141,6 @@
1572814848,1572816895,KW
1572816896,1572818943,RU
1572818944,1572820991,FR
-1572820992,1572823039,GB
1572823040,1572825087,BY
1572825088,1572827135,RU
1572827136,1572829183,NO
@@ -44505,6 +46148,7 @@
1572831232,1572833279,BH
1572833280,1572835327,ES
1572835328,1572837375,IE
+1572837376,1572839423,DK
1572839424,1572841471,DE
1572841472,1572842239,EU
1572842240,1572842495,LV
@@ -44590,8 +46234,7 @@
1578591024,1578591039,PL
1578591040,1578591055,NL
1578591056,1578591087,FR
-1578591088,1578591103,ES
-1578591104,1578591119,GB
+1578591088,1578591119,GB
1578591120,1578591127,FR
1578591128,1578591135,DE
1578591136,1578591143,FR
@@ -44606,11 +46249,11 @@
1578591292,1578591295,ES
1578591296,1578591327,FR
1578591328,1578591343,PL
-1578591344,1578591359,ES
-1578591360,1578591375,PL
-1578591376,1578591391,FR
+1578591344,1578591391,FR
1578591392,1578591407,CH
-1578591408,1578591423,GB
+1578591408,1578591411,ES
+1578591412,1578591415,FR
+1578591416,1578591423,ES
1578591424,1578591431,PL
1578591432,1578591435,DE
1578591436,1578591439,ES
@@ -44622,7 +46265,9 @@
1578591552,1578591555,BE
1578591556,1578591559,IT
1578591560,1578591563,PL
-1578591564,1578591583,FR
+1578591564,1578591575,FR
+1578591576,1578591579,DE
+1578591580,1578591583,ES
1578591584,1578591599,IT
1578591600,1578591663,FR
1578591664,1578591695,PL
@@ -44639,12 +46284,12 @@
1578591892,1578591903,FR
1578591904,1578591919,PL
1578591920,1578591939,ES
-1578591940,1578591943,GB
-1578591944,1578591951,FR
+1578591940,1578591951,FR
1578591952,1578591967,PT
1578591968,1578591983,FR
1578591984,1578592031,PL
-1578592032,1578592047,IT
+1578592032,1578592039,PT
+1578592040,1578592047,ES
1578592048,1578592079,FR
1578592080,1578592095,PL
1578592096,1578592111,FR
@@ -44660,8 +46305,8 @@
1578592200,1578592207,CH
1578592208,1578592223,FR
1578592224,1578592255,ES
-1578592256,1578592271,FR
-1578592272,1578592279,NL
+1578592256,1578592275,FR
+1578592276,1578592279,FI
1578592280,1578592283,BE
1578592284,1578592287,NL
1578592288,1578592303,DE
@@ -44684,18 +46329,22 @@
1578592536,1578592543,NL
1578592544,1578592559,FR
1578592560,1578592575,NL
-1578592576,1578592687,FR
-1578592688,1578592719,ES
+1578592576,1578592591,GB
+1578592592,1578592687,FR
+1578592688,1578592695,DE
+1578592696,1578592719,ES
1578592720,1578592735,CH
1578592736,1578592751,FR
1578592752,1578592783,DE
-1578592784,1578592815,FR
+1578592784,1578592799,FR
+1578592800,1578592815,GB
1578592816,1578592823,PL
-1578592824,1578592827,FR
-1578592828,1578592831,IE
+1578592824,1578592831,FR
1578592832,1578592847,PL
-1578592848,1578592863,FR
-1578592864,1578592879,PL
+1578592848,1578592851,BE
+1578592852,1578592855,DE
+1578592856,1578592859,FR
+1578592860,1578592879,PL
1578592880,1578592883,FR
1578592884,1578592891,GB
1578592892,1578592895,FR
@@ -44703,7 +46352,10 @@
1578592960,1578593007,FR
1578593008,1578593279,DE
1578593280,1578593295,PL
-1578593296,1578593327,FR
+1578593296,1578593299,ES
+1578593300,1578593303,GB
+1578593304,1578593307,ES
+1578593308,1578593327,FR
1578593328,1578593343,IT
1578593344,1578593359,FR
1578593360,1578593407,GB
@@ -44760,9 +46412,16 @@
1578594240,1578594255,FR
1578594256,1578594271,GB
1578594272,1578594303,PL
-1578594304,1578594319,FR
+1578594304,1578594307,GB
+1578594308,1578594311,FI
+1578594312,1578594315,PL
+1578594316,1578594319,FR
1578594320,1578594335,PL
-1578594336,1578594375,FR
+1578594336,1578594355,GB
+1578594356,1578594359,FR
+1578594360,1578594363,PT
+1578594364,1578594367,IT
+1578594368,1578594375,FR
1578594376,1578594383,PT
1578594384,1578594399,FR
1578594400,1578594431,PL
@@ -44774,7 +46433,10 @@
1578594512,1578594515,DE
1578594516,1578594519,FR
1578594520,1578594523,PL
-1578594524,1578594559,FR
+1578594524,1578594543,FR
+1578594544,1578594551,ES
+1578594552,1578594555,PL
+1578594556,1578594559,LT
1578594560,1578594575,PL
1578594576,1578594607,ES
1578594608,1578594623,FR
@@ -44806,7 +46468,7 @@
1578595232,1578595263,BE
1578595264,1578595267,ES
1578595268,1578595271,FR
-1578595272,1578595275,PL
+1578595272,1578595275,DE
1578595276,1578595279,ES
1578595280,1578595287,FR
1578595288,1578595295,PL
@@ -44814,14 +46476,16 @@
1578595328,1578595343,IT
1578595344,1578595363,FR
1578595364,1578595367,DE
-1578595368,1578595379,FR
+1578595368,1578595371,FR
+1578595372,1578595375,BE
+1578595376,1578595379,FR
1578595380,1578595383,CH
1578595384,1578595387,ES
1578595388,1578595391,PL
1578595392,1578595423,CH
1578595424,1578595455,LT
-1578595456,1578595463,DE
-1578595464,1578595487,FR
+1578595456,1578595459,DE
+1578595460,1578595487,FR
1578595488,1578595503,DE
1578595504,1578595519,PL
1578595520,1578595607,FR
@@ -44830,7 +46494,12 @@
1578595616,1578595647,PL
1578595648,1578595679,FR
1578595680,1578595695,BE
-1578595696,1578595763,FR
+1578595696,1578595711,FR
+1578595712,1578595743,GB
+1578595744,1578595747,IT
+1578595748,1578595751,FR
+1578595752,1578595759,ES
+1578595760,1578595763,FR
1578595764,1578595775,ES
1578595776,1578595807,CH
1578595808,1578595983,FR
@@ -44840,7 +46509,9 @@
1578596096,1578596099,DE
1578596100,1578596103,GB
1578596104,1578596111,FR
-1578596112,1578596127,ES
+1578596112,1578596115,DE
+1578596116,1578596123,PT
+1578596124,1578596127,ES
1578596128,1578596143,PL
1578596144,1578596147,DE
1578596148,1578596151,FR
@@ -44868,14 +46539,18 @@
1578610688,1578610943,FR
1578610944,1578610975,ES
1578610976,1578611039,PL
-1578611040,1578611071,FR
+1578611040,1578611043,ES
+1578611044,1578611047,CZ
+1578611048,1578611051,ES
+1578611052,1578611055,PL
+1578611056,1578611071,FR
1578611072,1578611075,DE
1578611076,1578611079,FR
1578611080,1578611087,NL
1578611088,1578611119,DE
1578611120,1578611135,FR
1578611136,1578611151,CH
-1578611152,1578611167,FR
+1578611152,1578611167,DE
1578611168,1578611183,ES
1578611184,1578611199,FR
1578611200,1578611215,NL
@@ -44891,15 +46566,16 @@
1578611328,1578611343,BE
1578611344,1578611359,FR
1578611360,1578611375,CH
-1578611376,1578611391,FR
-1578611392,1578611407,DE
+1578611376,1578611399,FR
+1578611400,1578611403,BE
+1578611404,1578611407,ES
1578611408,1578611423,IT
1578611424,1578611439,FR
1578611440,1578611455,IT
1578611456,1578611711,FR
1578611712,1578611775,CH
-1578611776,1578611791,ES
-1578611792,1578611807,FR
+1578611776,1578611783,DE
+1578611784,1578611807,FR
1578611808,1578611839,CH
1578611840,1578611919,FR
1578611920,1578611935,BE
@@ -44913,8 +46589,7 @@
1578612240,1578612255,FR
1578612256,1578612259,PL
1578612260,1578612263,IT
-1578612264,1578612271,FR
-1578612272,1578612287,ES
+1578612264,1578612287,FR
1578612288,1578612303,BE
1578612304,1578612319,DE
1578612320,1578612383,FR
@@ -44978,7 +46653,9 @@
1579091840,1579091855,US
1579091856,1579091967,GB
1579091968,1579092223,DE
-1579092224,1579104511,GB
+1579092224,1579093759,GB
+1579093760,1579094015,NL
+1579094016,1579104511,GB
1579104512,1579104767,NL
1579104768,1579105023,GB
1579105024,1579105151,NL
@@ -45107,13 +46784,17 @@
1583800320,1583804415,ME
1583804416,1583808511,GB
1583808512,1583812607,MD
-1583812608,1583813679,NL
+1583812608,1583813663,NL
+1583813664,1583813671,US
+1583813672,1583813679,NL
1583813680,1583813683,GB
1583813684,1583813711,NL
1583813712,1583813727,US
1583813728,1583813735,NL
1583813736,1583813743,DE
-1583813744,1583816703,NL
+1583813744,1583813808,NL
+1583813809,1583813815,US
+1583813816,1583816703,NL
1583816704,1583820799,TR
1583820800,1583824895,LV
1583824896,1583828991,SI
@@ -45128,7 +46809,13 @@
1583848704,1583848735,NL
1583848736,1583848799,BE
1583848800,1583849471,NL
-1583849472,1583853567,DE
+1583849472,1583850751,DE
+1583850752,1583850943,AT
+1583850944,1583850951,DE
+1583850952,1583850959,AT
+1583850960,1583850999,DE
+1583851000,1583851007,AT
+1583851008,1583853567,DE
1583853568,1583857663,RU
1583857664,1583861759,SE
1583861760,1583865855,LU
@@ -45182,12 +46869,10 @@
1585265696,1585265727,IM
1585265728,1585265767,FR
1585265768,1585265775,IM
-1585265776,1585265943,FR
-1585265944,1585265951,IM
-1585265952,1585265967,FR
-1585265968,1585265983,IM
-1585265984,1585266047,FR
-1585266048,1585266687,IM
+1585265776,1585265919,FR
+1585265920,1585265935,IM
+1585265936,1585266111,FR
+1585266112,1585266687,IM
1585266688,1585270783,DE
1585270784,1585272831,IT
1585272832,1585274879,RU
@@ -45302,8 +46987,7 @@
1586012160,1586020351,DE
1586020352,1586028543,RU
1586028544,1586036735,GB
-1586036736,1586061311,RU
-1586061312,1586069503,HR
+1586036736,1586069503,RU
1586069504,1586077695,DE
1586077696,1586085887,GE
1586085888,1586110463,RU
@@ -45370,6 +47054,7 @@
1586438144,1586446335,RU
1586446336,1586448383,NO
1586448384,1586450431,ES
+1586450432,1586452479,FR
1586452480,1586454527,CH
1586454528,1586456575,IT
1586456576,1586458623,GB
@@ -45447,7 +47132,8 @@
1590056960,1590059007,ES
1590059008,1590060223,IT
1590060224,1590060255,CH
-1590060256,1590061055,IT
+1590060256,1590060799,IT
+1590060800,1590061055,US
1590061056,1590063103,RU
1590063104,1590065151,CZ
1590065152,1590067199,IE
@@ -45532,9 +47218,12 @@
1592061952,1592066047,RU
1592066048,1592067583,US
1592067584,1592067711,NO
-1592067712,1592069631,CY
+1592067712,1592069375,CY
+1592069376,1592069407,US
+1592069408,1592069631,CY
1592069632,1592069695,NL
-1592069696,1592069887,CY
+1592069696,1592069855,CY
+1592069856,1592069887,NL
1592069888,1592074239,RU
1592074240,1592078335,SK
1592078336,1592082431,NL
@@ -45636,7 +47325,9 @@
1593180160,1593196543,NO
1593196544,1593196783,SE
1593196784,1593196799,GB
-1593196800,1593203455,SE
+1593196800,1593202687,SE
+1593202688,1593202815,NO
+1593202816,1593203455,SE
1593203456,1593203487,NO
1593203488,1593204159,SE
1593204160,1593204223,DK
@@ -45646,9 +47337,7 @@
1593206084,1593206095,DK
1593206096,1593206103,FI
1593206104,1593206111,GB
-1593206112,1593206207,SE
-1593206208,1593206271,FI
-1593206272,1593209151,SE
+1593206112,1593209151,SE
1593209152,1593209155,GR
1593209156,1593209159,HU
1593209160,1593209163,FI
@@ -45705,9 +47394,7 @@
1593606144,1593638911,SY
1593638912,1593671679,RU
1593671680,1593704447,HR
-1593704448,1593704959,SE
-1593704960,1593705471,NO
-1593705472,1593737215,SE
+1593704448,1593737215,SE
1593737216,1593769983,PL
1593769984,1593802751,RU
1593802752,1593835519,SE
@@ -45751,8 +47438,11 @@
1599094784,1599111167,RU
1599111168,1599127551,IR
1599127552,1599143935,CZ
+1599143936,1599160319,UA
1599160320,1599176703,IR
-1599176704,1599193087,FR
+1599176704,1599188991,FR
+1599188992,1599189263,DE
+1599189264,1599193087,FR
1599193088,1599209471,RU
1599209472,1599242239,IR
1599242240,1599258623,CZ
@@ -45866,8 +47556,10 @@
1602314240,1602316287,CZ
1602316288,1602318335,GB
1602318336,1602320383,ES
-1602320384,1602324479,NL
-1602324480,1602326527,RU
+1602320384,1602322687,NL
+1602322688,1602322703,IE
+1602322704,1602324479,NL
+1602324480,1602328575,RU
1602328576,1602330623,ES
1602330624,1602336767,RU
1602336768,1602338815,GB
@@ -45903,7 +47595,11 @@
1602392064,1602394111,GB
1602394112,1602396159,FR
1602396160,1602398207,DE
-1602398208,1602400255,TR
+1602398208,1602398400,TR
+1602398401,1602398406,US
+1602398407,1602399231,TR
+1602399232,1602399487,US
+1602399488,1602400255,TR
1602400256,1602402303,RU
1602402304,1602404351,LU
1602404352,1602406399,GB
@@ -45937,7 +47633,9 @@
1602453504,1602455551,SK
1602455552,1602456015,FR
1602456016,1602456023,ES
-1602456024,1602457599,FR
+1602456024,1602456175,FR
+1602456176,1602456183,ES
+1602456184,1602457599,FR
1602457600,1602459647,RU
1602459648,1602461695,GB
1602461696,1602465791,ES
@@ -46014,7 +47712,9 @@
1603167168,1603167231,NL
1603167232,1603167743,BE
1603167744,1603167871,NO
-1603167872,1603169919,NL
+1603167872,1603169199,NL
+1603169200,1603169207,US
+1603169208,1603169919,NL
1603169920,1603169983,US
1603169984,1603170047,SE
1603170048,1603170303,NL
@@ -46036,14 +47736,16 @@
1603220504,1603223551,CH
1603223552,1603223615,FR
1603223616,1603223631,GB
-1603223632,1603223703,FR
-1603223704,1603223711,GB
+1603223632,1603223704,FR
+1603223705,1603223711,GB
1603223712,1603223936,FR
-1603223937,1603223999,GB
-1603224000,1603224319,FR
-1603224320,1603226623,GB
-1603226624,1603226879,FR
-1603226880,1603227647,GB
+1603223937,1603223951,GB
+1603223952,1603224319,FR
+1603224320,1603224575,GB
+1603224576,1603224735,FR
+1603224736,1603226623,GB
+1603226624,1603227391,FR
+1603227392,1603227647,GB
1603227648,1603231743,AT
1603231744,1603235839,IT
1603235840,1603239935,RU
@@ -46131,9 +47833,11 @@
1604893696,1604893951,DE
1604893952,1604894463,TR
1604894464,1604894719,DE
-1604894720,1604899007,CZ
-1604899008,1604899039,SK
-1604899040,1604902911,CZ
+1604894720,1604895487,CZ
+1604895488,1604895491,SK
+1604895492,1604900351,CZ
+1604900352,1604900383,SC
+1604900384,1604902911,CZ
1604902912,1604911103,BG
1604911104,1604919295,UA
1604919296,1604927487,NO
@@ -46160,18 +47864,20 @@
1605099520,1605107711,RU
1605107712,1605115903,GB
1605115904,1605124095,RU
-1605124096,1605124351,US
-1605124352,1605125263,GB
-1605125264,1605125279,US
-1605125280,1605125327,GB
-1605125328,1605125335,US
-1605125336,1605125375,GB
-1605125376,1605125439,US
-1605125440,1605125503,GB
-1605125504,1605125631,US
+1605124096,1605124607,US
+1605124608,1605124671,GB
+1605124672,1605124735,US
+1605124736,1605125263,GB
+1605125264,1605125287,US
+1605125288,1605125311,GB
+1605125312,1605125319,US
+1605125320,1605125327,GB
+1605125328,1605125343,US
+1605125344,1605125375,GB
+1605125376,1605125631,US
1605125632,1605126143,DE
-1605126144,1605127167,US
-1605127168,1605132287,GB
+1605126144,1605127679,US
+1605127680,1605132287,GB
1605132288,1605148671,RU
1605148672,1605156863,PT
1605156864,1605165055,JO
@@ -46221,19 +47927,17 @@
1606156288,1606418431,RU
1606418432,1607467007,SE
1607467008,1607532543,DE
-1607532544,1607570431,SE
-1607570432,1607571455,DK
+1607532544,1607569407,SE
+1607569408,1607571455,DK
1607571456,1607585791,SE
-1607585792,1607587839,DK
-1607587840,1607588863,SE
-1607588864,1607598079,DK
+1607585792,1607598079,DK
1607598080,1607610367,IT
1607610368,1607612415,IE
1607612416,1607614463,A2
1607614464,1607616511,GR
1607616512,1607630847,A2
-1607630848,1607632895,IE
-1607632896,1607663615,A2
+1607630848,1607633919,IE
+1607633920,1607663615,A2
1607663616,1607729151,NL
1607729152,1607761919,EG
1607761920,1607766015,SY
@@ -46258,7 +47962,9 @@
1607947264,1607948287,RU
1607948288,1607949311,GB
1607949312,1607950335,UA
+1607950336,1607952383,RU
1607952384,1607953407,UA
+1607954432,1607956479,UA
1607956480,1607957503,ES
1607957504,1607958527,UA
1607958528,1607959551,PS
@@ -46271,6 +47977,7 @@
1607967744,1607968767,UA
1607968768,1607969791,SE
1607969792,1607971839,RU
+1607972864,1607974911,NL
1607974912,1607975935,LV
1607976960,1607977983,KZ
1607977984,1607979007,NL
@@ -46311,7 +48018,7 @@
1613479936,1613488127,US
1613488128,1613492223,CA
1613496320,1613504511,US
-1613512704,1613529087,CA
+1613504512,1613529087,CA
1613529088,1613536191,US
1613536192,1613536223,TW
1613536224,1613536255,US
@@ -46365,11 +48072,11 @@
1613570048,1613574143,CA
1613574144,1613586431,US
1613586432,1613590527,CA
-1613590528,1613606911,US
+1613590528,1613602815,US
1613606912,1613615103,CA
1613615104,1613635583,US
-1613635584,1613639679,CA
-1613639680,1613676543,US
+1613635584,1613643775,CA
+1613643776,1613676543,US
1613676544,1613680639,CA
1613680640,1613737983,US
1613737984,1613742079,CA
@@ -47003,7 +48710,9 @@
1652681520,1653534719,US
1653534720,1653538815,CA
1653538816,1653555199,US
-1653555200,1653567487,CA
+1653555200,1653560319,CA
+1653560320,1653560327,US
+1653560328,1653567487,CA
1653567488,1653571583,US
1653571584,1653575679,CA
1653575680,1653592063,US
@@ -47015,9 +48724,9 @@
1654546432,1654550527,VG
1654550528,1654554623,US
1654554624,1654558719,CA
-1654558720,1654597631,US
-1654597632,1654597887,CA
-1654597888,1654648831,US
+1654558720,1654599455,US
+1654599456,1654599471,CA
+1654599472,1654648831,US
1654648832,1654652927,CA
1654652928,1665833175,US
1665833176,1665833183,A2
@@ -47134,15 +48843,20 @@
1673986048,1674051583,CA
1674051584,1674575871,US
1674575872,1677721599,CA
-1795162112,1795686399,US
-1811939328,1828716543,US
+1694498816,1694499071,AP
+1694499072,1694499327,AU
+1697775616,1697776639,AP
+1700790272,1702887679,AU
+1711210496,1711276031,AP
+1795162112,1828716543,US
1828716544,1830813695,FR
1830813696,1831337983,NL
1831337984,1831862271,DE
1831862272,1832124415,PT
1832124416,1832386559,IT
1832386560,1832517631,DK
-1832517632,1832648703,SE
+1832517632,1832615935,SE
+1832615936,1832648703,DK
1832648704,1832681471,HR
1832681472,1832714239,RU
1832714240,1832747007,HU
@@ -47210,9 +48924,11 @@
1833299968,1833302015,LU
1833302016,1833304063,AT
1833304064,1833308159,NL
-1833308160,1833308755,FR
-1833308756,1833308759,NL
-1833308760,1833310207,FR
+1833308160,1833308751,FR
+1833308752,1833308759,NL
+1833308760,1833308763,FR
+1833308764,1833308767,NL
+1833308768,1833310207,FR
1833310208,1833312255,RU
1833312256,1833314303,ES
1833314304,1833315903,IM
@@ -47401,7 +49117,7 @@
1834960896,1834964991,RU
1834964992,1834967039,PL
1834967040,1834971135,RU
-1834971136,1834973183,KZ
+1834971136,1834973183,UA
1834973184,1834975231,RU
1834975232,1834977279,IL
1834977280,1834983423,PL
@@ -47493,9 +49209,9 @@
1836048384,1836056575,RS
1836056576,1836580863,IT
1836580864,1836597247,RU
-1836597248,1836597759,LU
-1836597760,1836601599,DE
-1836601600,1836613631,LU
+1836597248,1836598015,LU
+1836598016,1836604159,DE
+1836604160,1836613631,LU
1836613632,1836630015,RU
1836630016,1836646399,BG
1836646400,1836679167,RS
@@ -47565,13 +49281,15 @@
1839801280,1839801311,VG
1839801312,1839801343,GB
1839801344,1839801471,CN
-1839801472,1839801599,GB
+1839801472,1839801551,GB
+1839801552,1839801567,US
+1839801568,1839801599,GB
1839801600,1839801855,US
1839801856,1839802111,GB
1839802112,1839802239,RO
1839802240,1839806463,GB
-1839806464,1839808511,US
-1839808512,1839816703,GB
+1839806464,1839809535,US
+1839809536,1839816703,GB
1839816704,1839824895,NO
1839824896,1839890431,RU
1839890432,1839923199,GB
@@ -47622,6 +49340,7 @@
1841651712,1841653759,PL
1841653760,1841655807,FR
1841655808,1841668095,RU
+1841668096,1841670143,RO
1841670144,1841672191,PL
1841672192,1841674239,FR
1841674240,1841676287,PL
@@ -47650,13 +49369,20 @@
1841827088,1841827231,GB
1841827232,1841827263,BR
1841827264,1841827279,BD
-1841827280,1841831935,GB
+1841827280,1841827463,GB
+1841827464,1841827471,BD
+1841827472,1841827479,ES
+1841827480,1841828879,GB
+1841828880,1841828895,MT
+1841828896,1841831935,GB
1841831936,1841840127,MT
1841840128,1841848319,PL
1841848320,1841856511,RU
1841856512,1841864703,UA
1841864704,1841872895,YE
-1841872896,1841881087,NL
+1841872896,1841879807,NL
+1841879808,1841880063,GB
+1841880064,1841881087,JP
1841881088,1841889279,UA
1841889280,1841897471,IR
1841897472,1841905663,RO
@@ -47770,7 +49496,9 @@
1843789824,1843806207,SK
1843806208,1843822591,IR
1843822592,1843838975,RU
-1843838976,1843855359,DE
+1843838976,1843849215,DE
+1843849216,1843850239,GB
+1843850240,1843855359,DE
1843855360,1843871743,PL
1843871744,1843888127,GB
1843888128,1843904511,CZ
@@ -47926,6 +49654,7 @@
1844256768,1844260863,BA
1844260864,1844264959,CH
1844264960,1844269055,NL
+1844269056,1844273151,UA
1844273152,1844277247,RU
1844277248,1844281343,AZ
1844281344,1844285439,DE
@@ -47939,7 +49668,7 @@
1844318208,1844322303,IT
1844322304,1844326399,CZ
1844326400,1844330495,DK
-1844330496,1844338687,GB
+1844330496,1844334591,GB
1844338688,1844342783,RU
1844342784,1844346879,IT
1844346880,1844347007,US
@@ -48083,7 +49812,7 @@
1851555840,1851588607,KR
1851588608,1851590655,JP
1851590656,1851591679,AU
-1851592704,1851593727,AU
+1851592704,1851594751,AU
1851594752,1851596799,KR
1851596800,1851604991,IN
1851604992,1851613183,PH
@@ -48522,7 +50251,7 @@
1916272640,1916534783,ID
1916534784,1917124607,CN
1917124608,1917169663,JP
-1917169664,1917177855,NC
+1917169664,1917181951,NC
1917181952,1917190143,IN
1917190144,1917321215,KR
1917321216,1917779967,AU
@@ -48582,11 +50311,14 @@
1921867776,1921871871,AU
1921875968,1921892351,CN
1921892352,1921896447,AU
+1921896448,1921898495,SG
+1921898496,1921900543,PH
1921900544,1921908735,KR
1921908736,1921943551,JP
1921943552,1921945599,IN
1921945600,1921949695,HK
1921949696,1921953791,AU
+1921953792,1921957887,JP
1921957888,1921974271,GU
1921974272,1922039807,IN
1922039808,1925447679,JP
@@ -48688,7 +50420,7 @@
1937637376,1937670143,HK
1937670144,1937672191,NZ
1937674240,1937678335,JP
-1937678336,1937682431,NC
+1937678336,1937686527,NC
1937686528,1937702911,KR
1937702912,1937768447,BD
1937768448,1938030591,AU
@@ -49442,7 +51174,7 @@
2022184960,2022187007,KH
2022187008,2022187071,US
2022187072,2022191103,HK
-2022191104,2022193151,NZ
+2022191104,2022195199,NZ
2022195200,2022211583,KR
2022211584,2022227967,CN
2022227968,2022244351,JP
@@ -49566,7 +51298,9 @@
2038423552,2038431743,HK
2038431744,2042626047,KR
2042626048,2043150335,CN
-2043150336,2043166719,AU
+2043150336,2043162623,AU
+2043162624,2043165695,IN
+2043165696,2043166719,BD
2043166720,2043183103,KR
2043183104,2043199487,JP
2043199488,2043201535,BD
@@ -49631,6 +51365,8 @@
2053519360,2053521407,BD
2053521408,2053529599,CN
2053529600,2053533695,AU
+2053533696,2053534719,VN
+2053534720,2053537791,IN
2053537792,2053636095,JP
2053636096,2054160383,AU
2054160384,2054422527,CN
@@ -49875,7 +51611,7 @@
2072510464,2072514559,HK
2072514560,2072516607,IN
2072516608,2072518655,BD
-2072518656,2072522751,AU
+2072518656,2072526847,AU
2072526848,2072528895,SG
2072528896,2072530943,PH
2072530944,2072535039,CN
@@ -50749,7 +52485,9 @@
2249457664,2249523199,US
2249523200,2249588735,CH
2249588736,2249654271,CA
-2249654272,2249781247,US
+2249654272,2249724671,US
+2249724672,2249724927,CA
+2249724928,2249781247,US
2249781248,2249781255,FR
2249781256,2249785343,US
2249785344,2249850879,SE
@@ -51320,7 +53058,10 @@
2329673728,2329739263,US
2329739264,2329804799,CH
2329804800,2329870335,DE
-2329870336,2330132479,CH
+2329870336,2329935871,CH
+2329935872,2330001407,DE
+2330001408,2330066943,CH
+2330066944,2330132479,US
2330132480,2330198015,SE
2330198016,2330263551,CH
2330263552,2330394623,US
@@ -51524,7 +53265,7 @@
2365390848,2365456383,AU
2365456384,2365521919,US
2365587456,2366308351,DE
-2366308352,2366373887,FR
+2366308352,2366373887,GB
2366373888,2367487999,DE
2367488000,2367553535,SI
2367553536,2370895871,DE
@@ -51618,15 +53359,17 @@
2382102528,2382168063,NL
2382168064,2382233599,BE
2382233600,2382299135,US
-2382364672,2385430319,CA
-2385430320,2385430335,US
-2385430336,2385430655,CA
+2382364672,2385430655,CA
2385430656,2385430687,US
-2385430688,2386067455,CA
+2385430688,2385903615,CA
+2385903616,2385969151,US
+2385969152,2386067455,CA
2386067456,2386083839,US
2386083840,2386624511,CA
2386624512,2386690047,US
-2386690048,2386989055,CA
+2386690048,2386988287,CA
+2386988288,2386988543,CH
+2386988544,2386989055,CA
2386989056,2386989311,GB
2386989312,2387410943,CA
2387410944,2387476479,US
@@ -52023,9 +53766,7 @@
2467233792,2468020223,US
2468020224,2468085759,GR
2468085760,2468151295,JP
-2468151296,2468174847,DK
-2468174848,2468175359,NO
-2468175360,2468189663,DK
+2468151296,2468189663,DK
2468189664,2468189695,GB
2468189696,2468216831,DK
2468216832,2468282367,EU
@@ -52485,7 +54226,9 @@
2601451520,2601517055,CA
2601517056,2602565631,US
2602565632,2602631167,NZ
-2602631168,2604007423,US
+2602631168,2603417599,US
+2603417600,2603483135,DE
+2603483136,2604007423,US
2604007424,2604072959,ES
2604072960,2604138495,NO
2604138496,2604204031,DE
@@ -52665,7 +54408,8 @@
2642280448,2642411519,US
2642411520,2642477055,AU
2642477056,2642542591,FI
-2642542592,2642935807,US
+2642542592,2642608127,US
+2642673664,2642935807,US
2642935808,2643001343,FR
2643001344,2643066879,US
2643066880,2643132415,IT
@@ -53974,41 +55718,33 @@
2899443712,2899574783,FR
2899574784,2899902463,GB
2902458368,2902462463,A1
-2902462464,2902507519,US
+2902462464,2902470936,US
+2902470937,2902470938,LK
+2902470939,2902507519,US
2902507520,2902515711,CA
2902515712,2904555519,US
2904555520,2904817663,CA
2904817664,2905376767,US
2905376768,2905377535,CA
-2905377536,2905377791,US
-2905377792,2905378047,CA
-2905378048,2905378303,US
+2905377536,2905378303,US
2905378304,2905378815,CA
2905378816,2905379071,US
2905379072,2905379583,CA
-2905379584,2905380863,US
-2905380864,2905381119,CA
-2905381120,2905381887,US
+2905379584,2905381887,US
2905381888,2905382016,CA
-2905382017,2905384191,US
-2905384192,2905385471,CA
-2905385472,2905386239,US
-2905386240,2905386495,CA
-2905386496,2905388031,US
+2905382017,2905384959,US
+2905384960,2905385471,CA
+2905385472,2905388031,US
2905388032,2905388287,CA
-2905388288,2905391871,US
-2905391872,2905392127,CA
-2905392128,2905392895,US
-2905392896,2905394943,CA
+2905388288,2905392895,US
+2905392896,2905393151,CA
+2905393152,2905394175,US
+2905394176,2905394943,CA
2905394944,2905395455,US
2905395456,2905396991,CA
-2905396992,2905397759,US
-2905397760,2905398271,CA
-2905398272,2905399039,US
+2905396992,2905399039,US
2905399040,2905399295,CA
-2905399296,2905404671,US
-2905404672,2905405183,CA
-2905405184,2905407743,US
+2905399296,2905407743,US
2905407744,2905407999,TW
2905408000,2905428967,US
2905428968,2905428975,AE
@@ -54024,7 +55760,9 @@
2905473024,2905481215,CA
2905481216,2913992703,US
2913992704,2914516991,CA
-2914516992,2915765279,US
+2914516992,2915250175,US
+2915250176,2915254271,CA
+2915254272,2915765279,US
2915765280,2915765287,IN
2915765288,2915765343,US
2915765344,2915765351,NZ
@@ -54308,13 +56046,7 @@
2915811136,2915811199,IN
2915811200,2915958783,US
2915958784,2916024319,CA
-2916024320,2916091903,US
-2916091904,2916092159,IN
-2916092160,2916092927,US
-2916092928,2916093183,IN
-2916093184,2916093695,US
-2916093696,2916093951,IN
-2916093952,2916110623,US
+2916024320,2916110623,US
2916110624,2916110639,CA
2916110640,2916163583,US
2916163584,2916171775,CA
@@ -54328,8 +56060,8 @@
2916352000,2916368383,US
2916368384,2916401151,CA
2916401152,2916417535,US
-2916417536,2916434495,CA
-2916434496,2916434559,US
+2916417536,2916434431,CA
+2916434432,2916434559,US
2916434560,2916434591,CA
2916434592,2916437503,US
2916437504,2916437567,CA
@@ -54337,7 +56069,9 @@
2916440064,2916440095,CA
2916440096,2916440143,US
2916440144,2916440159,CA
-2916440160,2916441343,US
+2916440160,2916441119,US
+2916441120,2916441151,CA
+2916441152,2916441343,US
2916441344,2916442111,CA
2916442112,2916442623,US
2916442624,2916442879,CA
@@ -54348,16 +56082,31 @@
2916443904,2916444159,CA
2916444160,2916444927,US
2916444928,2916445951,CA
-2916445952,2916447231,US
-2916447232,2916448031,CA
-2916448032,2916448063,US
-2916448064,2916448255,CA
-2916448256,2916449279,US
+2916445952,2916449279,US
2916449280,2916450303,CA
2916450304,2916515839,US
2916548608,2916581375,US
2916581376,2916614143,PR
-2916614144,2917195775,US
+2916614144,2917167679,US
+2917167680,2917167743,BR
+2917167744,2917167775,US
+2917167776,2917167807,IR
+2917167808,2917167967,US
+2917167968,2917167999,GB
+2917168000,2917168095,US
+2917168096,2917168127,NZ
+2917168128,2917168223,US
+2917168224,2917168255,BR
+2917168256,2917168287,US
+2917168288,2917168319,TR
+2917168320,2917168351,AR
+2917168352,2917168383,US
+2917168384,2917168415,BR
+2917168416,2917168607,US
+2917168608,2917168639,BR
+2917168640,2917169663,US
+2917169664,2917169695,DE
+2917169696,2917195775,US
2917195776,2917196031,CA
2917196032,2917199871,A2
2917199872,2917203967,CA
@@ -54385,39 +56134,39 @@
2917675264,2917675775,CA
2917675776,2917676031,US
2917676032,2917677055,CA
-2917677056,2917677567,US
-2917677568,2917678335,CA
-2917678336,2917680895,US
+2917677056,2917680895,US
2917680896,2917681407,CA
2917681408,2917681919,US
2917681920,2917682175,CA
-2917682176,2917685247,US
-2917685248,2917686015,CA
+2917682176,2917682431,US
+2917682432,2917683455,CA
+2917683456,2917685503,US
+2917685504,2917686015,CA
2917686016,2917690367,US
2917690368,2917690879,CA
2917690880,2917693183,US
2917693184,2917693951,CA
2917693952,2917695231,US
2917695232,2917695487,CA
-2917695488,2917701119,US
-2917701120,2917701375,CA
-2917701376,2917702399,US
-2917702400,2917707519,CA
-2917707520,2917711871,US
-2917711872,2917714431,CA
+2917695488,2917695743,US
+2917695744,2917696255,CA
+2917696256,2917702399,US
+2917702400,2917707007,CA
+2917707008,2917714175,US
+2917714176,2917714431,CA
2917714432,2917718527,US
2917718528,2917719039,CA
-2917719040,2917719295,US
-2917719296,2917719551,CA
-2917719552,2917722367,US
-2917722368,2917722879,CA
-2917722880,2917842175,US
+2917719040,2917722367,US
+2917722368,2917722623,CA
+2917722624,2917842175,US
2917842176,2917842431,CA
2917842432,2918055935,US
2918055936,2918121471,CA
2918121472,2918154239,US
2918154240,2918170623,CA
-2918170624,2918232063,US
+2918170624,2918199679,US
+2918199680,2918199743,CA
+2918199744,2918232063,US
2918232064,2918236159,CA
2918236160,2918260735,US
2918260736,2918264831,CA
@@ -54436,20 +56185,27 @@
2918404096,2918408191,PR
2918408192,2918432767,US
2918432768,2918436863,CA
-2918436864,2918580223,US
+2918436864,2918533119,US
+2918533120,2918533127,CN
+2918533128,2918533167,US
+2918533168,2918533183,CN
+2918533184,2918533247,US
+2918533248,2918533375,CA
+2918533376,2918534911,US
+2918534912,2918534943,KR
+2918534944,2918580223,US
2918580224,2918588415,CA
2918588416,2918596607,US
2918596608,2918604799,CA
2918604800,2918608895,US
-2918612992,2918653951,US
-2918653952,2918662143,CA
-2918662144,2918760447,US
+2918612992,2918760447,US
2918760448,2918776831,CA
-2918776832,2918842367,US
-2918842368,2918875135,CA
+2918776832,2918813695,US
+2918825984,2918838271,US
+2918838272,2918875135,CA
2918875136,2918973439,US
2918973440,2918989823,CA
-2919170048,2919174143,US
+2919006208,2919174143,US
2919174144,2919178239,CA
2919178240,2919186431,US
2919186432,2919190527,CA
@@ -54461,9 +56217,7 @@
2921496896,2921496903,IN
2921496904,2921496967,US
2921496968,2921496975,IN
-2921496976,2921497375,US
-2921497376,2921497407,IN
-2921497408,2921497415,US
+2921496976,2921497415,US
2921497416,2921497423,IN
2921497424,2921497471,US
2921497472,2921497599,IN
@@ -54471,20 +56225,9 @@
2921503608,2921503615,GB
2921503616,2921503695,US
2921503696,2921503703,GB
-2921503704,2921508095,US
-2921508096,2921508103,IN
-2921508104,2921508319,US
-2921508320,2921508351,IN
-2921508352,2921508639,US
-2921508640,2921508671,IN
-2921508672,2921508679,US
-2921508680,2921508719,IN
+2921503704,2921508719,US
2921508720,2921508727,SE
-2921508728,2921511351,US
-2921511352,2921511359,IN
-2921511360,2921511743,US
-2921511744,2921511759,BE
-2921511760,2921512703,US
+2921508728,2921512703,US
2921512704,2921512959,CA
2921512960,2921562111,US
2921562112,2921594879,CA
@@ -54782,7 +56525,8 @@
2928312320,2928316415,CA
2928316416,2928321311,US
2928321312,2928321327,GB
-2928321328,2928323135,US
+2928321328,2928321343,CN
+2928321344,2928323135,US
2928323136,2928323143,RU
2928323144,2928323967,US
2928323968,2928323983,RU
@@ -55420,6 +57164,7 @@
2948135936,2948136959,IN
2948136960,2948595711,CN
2948595712,2952790015,KR
+2969567232,2971664383,BR
2986344448,2987393023,DE
2987393024,2987397119,IM
2987397120,2987401215,LV
@@ -55431,9 +57176,11 @@
2987425792,2987429887,BG
2987429888,2987433215,RU
2987433216,2987433235,KZ
-2987433236,2987433247,RU
-2987433248,2987433279,KZ
-2987433280,2987433983,RU
+2987433236,2987433239,RU
+2987433240,2987433287,KZ
+2987433288,2987433295,RU
+2987433296,2987433327,KZ
+2987433328,2987433983,RU
2987433984,2987438079,FR
2987438080,2987442175,FI
2987442176,2987446271,IE
@@ -55468,6 +57215,7 @@
2987548672,2987552767,RU
2987552768,2987556863,GB
2987556864,2987560959,NL
+2987560960,2987565055,DE
2987565056,2987569151,AT
2987569152,2987573247,FR
2987573248,2987577343,TR
@@ -55483,8 +57231,8 @@
2987585848,2987585855,SE
2987585856,2987585863,RU
2987585864,2987585871,GB
-2987585872,2987585879,IT
-2987585880,2987585887,FR
+2987585872,2987585879,MX
+2987585880,2987585887,BR
2987585888,2987585895,PL
2987585896,2987589631,DE
2987589632,2987593727,FR
@@ -55568,7 +57316,8 @@
2987784192,2987786239,DK
2987786240,2987788287,FR
2987788288,2987788543,GB
-2987788544,2987790335,TR
+2987788544,2987788799,DE
+2987788800,2987790335,TR
2987790336,2987792383,GB
2987792384,2987794431,CH
2987794432,2987796479,IQ
@@ -55642,9 +57391,9 @@
2988441888,2988441895,FR
2988441896,2988441903,PL
2988441904,2988441911,IT
-2988441912,2988441983,FR
-2988441984,2988441999,NL
-2988442000,2988442003,FR
+2988441912,2988441991,FR
+2988441992,2988441995,ES
+2988441996,2988442003,FR
2988442004,2988442007,ES
2988442008,2988442047,FR
2988442048,2988442063,GB
@@ -55662,7 +57411,8 @@
2988442900,2988442903,FR
2988442904,2988442907,IT
2988442908,2988442911,FR
-2988442912,2988442919,NL
+2988442912,2988442915,NL
+2988442916,2988442919,IT
2988442920,2988442923,LT
2988442924,2988442927,GB
2988442928,2988442975,FR
@@ -55720,10 +57470,11 @@
2988445984,2988446207,DE
2988446208,2988446271,PL
2988446272,2988446275,IT
-2988446276,2988446279,GB
-2988446280,2988446287,FR
+2988446276,2988446287,FR
2988446288,2988446303,GB
-2988446304,2988446323,FR
+2988446304,2988446307,FR
+2988446308,2988446319,PL
+2988446320,2988446323,FR
2988446324,2988446327,LT
2988446328,2988446335,NL
2988446336,2988446399,PL
@@ -55791,9 +57542,11 @@
2988453888,2988457983,GB
2988457984,2988457987,FR
2988457988,2988457991,PL
-2988457992,2988458031,FR
+2988457992,2988457999,FR
+2988458000,2988458015,GB
+2988458016,2988458031,FR
2988458032,2988458047,IT
-2988458048,2988458055,FR
+2988458048,2988458055,PL
2988458056,2988458063,CH
2988458064,2988458067,ES
2988458068,2988458075,FR
@@ -55849,7 +57602,12 @@
2988459632,2988459639,FR
2988459640,2988459643,IT
2988459644,2988459647,CH
-2988459648,2988459711,FR
+2988459648,2988459679,GB
+2988459680,2988459683,ES
+2988459684,2988459687,DE
+2988459688,2988459691,IT
+2988459692,2988459695,PL
+2988459696,2988459711,FR
2988459712,2988459715,ES
2988459716,2988459723,FR
2988459724,2988459727,DE
@@ -55858,7 +57616,20 @@
2988459736,2988459743,PL
2988459744,2988459747,ES
2988459748,2988459751,PL
-2988459752,2988460031,FR
+2988459752,2988459759,FR
+2988459760,2988459767,GB
+2988459768,2988459771,NL
+2988459772,2988459775,GB
+2988459776,2988459839,FR
+2988459840,2988459855,GB
+2988459856,2988459863,FR
+2988459864,2988459867,ES
+2988459868,2988459871,GB
+2988459872,2988459887,FR
+2988459888,2988459895,PL
+2988459896,2988459967,FR
+2988459968,2988459999,ES
+2988460000,2988460031,FR
2988460032,2988460063,DE
2988460064,2988460095,FR
2988460096,2988460103,ES
@@ -55890,7 +57661,7 @@
2988460352,2988460375,GB
2988460376,2988460543,FR
2988460544,2988460547,GB
-2988460548,2988460551,FR
+2988460548,2988460551,DE
2988460552,2988460575,PL
2988460576,2988460591,PT
2988460592,2988460607,GB
@@ -55903,14 +57674,15 @@
2988460760,2988460763,PT
2988460764,2988460767,FR
2988460768,2988460799,PL
-2988460800,2988460863,CH
+2988460800,2988460863,DE
2988460864,2988460927,FR
2988460928,2988460931,DE
2988460932,2988460943,PL
2988460944,2988460959,DE
2988460960,2988460991,GB
-2988460992,2988461055,FR
-2988461056,2988461119,IE
+2988460992,2988461087,FR
+2988461088,2988461103,PL
+2988461104,2988461119,FR
2988461120,2988461151,NL
2988461152,2988461247,GB
2988461248,2988461255,FR
@@ -56000,10 +57772,11 @@
2988462588,2988462591,DE
2988462592,2988462599,FR
2988462600,2988462603,IT
-2988462604,2988462607,ES
+2988462604,2988462607,BE
2988462608,2988462735,FR
2988462736,2988462743,IT
-2988462744,2988462767,FR
+2988462744,2988462751,FR
+2988462752,2988462767,PL
2988462768,2988462775,GB
2988462776,2988462779,PL
2988462780,2988462783,FR
@@ -56013,7 +57786,8 @@
2988462824,2988462847,FR
2988462848,2988463103,BE
2988463104,2988463107,IT
-2988463108,2988463119,FR
+2988463108,2988463111,FR
+2988463112,2988463119,ES
2988463120,2988463127,GB
2988463128,2988463131,FR
2988463132,2988463135,PL
@@ -56077,11 +57851,13 @@
2988464352,2988464355,DE
2988464356,2988464359,FR
2988464360,2988464363,PL
-2988464364,2988464511,FR
+2988464364,2988464367,GB
+2988464368,2988464511,FR
2988464512,2988464519,PT
2988464520,2988464527,FR
2988464528,2988464543,DE
-2988464544,2988464575,IT
+2988464544,2988464551,FR
+2988464552,2988464575,ES
2988464576,2988464607,FR
2988464608,2988464611,DE
2988464612,2988464615,PL
@@ -56093,7 +57869,11 @@
2988464640,2988464783,FR
2988464784,2988464787,IT
2988464788,2988464791,ES
-2988464792,2988464831,FR
+2988464792,2988464799,FR
+2988464800,2988464815,DE
+2988464816,2988464819,FR
+2988464820,2988464823,NL
+2988464824,2988464831,PL
2988464832,2988464895,ES
2988464896,2988464927,NL
2988464928,2988464947,FR
@@ -56109,14 +57889,19 @@
2988465296,2988465299,IT
2988465300,2988465343,FR
2988465344,2988465363,DE
-2988465364,2988465371,PL
-2988465372,2988465375,FR
+2988465364,2988465367,PL
+2988465368,2988465375,FR
2988465376,2988465391,IT
-2988465392,2988465407,FR
+2988465392,2988465395,ES
+2988465396,2988465399,GB
+2988465400,2988465403,PT
+2988465404,2988465407,DE
2988465408,2988465423,CH
-2988465424,2988465439,FR
+2988465424,2988465439,PT
2988465440,2988465471,GB
-2988465472,2988465503,FR
+2988465472,2988465479,FR
+2988465480,2988465483,NL
+2988465484,2988465503,FR
2988465504,2988465507,DE
2988465508,2988465511,PL
2988465512,2988465515,PT
@@ -56127,8 +57912,7 @@
2988465532,2988465535,GB
2988465536,2988465539,FR
2988465540,2988465543,GB
-2988465544,2988465551,FR
-2988465552,2988465559,ES
+2988465544,2988465559,ES
2988465560,2988465567,GB
2988465568,2988465571,ES
2988465572,2988465575,GB
@@ -56244,7 +58028,8 @@
2988508220,2988508223,DE
2988508224,2988508287,FR
2988508288,2988508303,PL
-2988508304,2988508315,FR
+2988508304,2988508307,CZ
+2988508308,2988508315,FR
2988508316,2988508319,ES
2988508320,2988508343,FR
2988508344,2988508367,ES
@@ -56303,7 +58088,8 @@
2988509364,2988509367,IT
2988509368,2988509371,CH
2988509372,2988509375,PL
-2988509376,2988509407,FR
+2988509376,2988509403,FR
+2988509404,2988509407,GB
2988509408,2988509411,PL
2988509412,2988509415,DE
2988509416,2988509419,ES
@@ -56359,7 +58145,10 @@
2988510016,2988510023,ES
2988510024,2988510031,FR
2988510032,2988510079,PL
-2988510080,2988510111,NL
+2988510080,2988510095,ES
+2988510096,2988510099,FR
+2988510100,2988510103,GB
+2988510104,2988510111,BE
2988510112,2988510143,CZ
2988510144,2988510175,NL
2988510176,2988510207,ES
@@ -56373,7 +58162,7 @@
2988510288,2988510303,PL
2988510304,2988510307,ES
2988510308,2988510311,FR
-2988510312,2988510319,BE
+2988510312,2988510319,GB
2988510320,2988510323,FR
2988510324,2988510327,GB
2988510328,2988510399,FR
@@ -56400,14 +58189,14 @@
2988511084,2988511087,PL
2988511088,2988511103,FR
2988511104,2988511167,PL
-2988511168,2988511183,FR
-2988511184,2988511187,CZ
-2988511188,2988511191,GB
+2988511168,2988511175,IE
+2988511176,2988511183,FR
+2988511184,2988511191,GB
2988511192,2988511487,FR
2988511488,2988511551,PL
-2988511552,2988511559,FR
-2988511560,2988511567,GB
-2988511568,2988511575,FR
+2988511552,2988511555,FR
+2988511556,2988511559,CZ
+2988511560,2988511575,FR
2988511576,2988511583,GB
2988511584,2988511663,FR
2988511664,2988511671,DE
@@ -56421,11 +58210,30 @@
2988511700,2988511703,IT
2988511704,2988511711,PL
2988511712,2988511719,DE
-2988511720,2988511723,FR
-2988511724,2988511727,GB
-2988511728,2988511735,FR
+2988511720,2988511735,FR
2988511736,2988511739,DE
-2988511740,2988511999,FR
+2988511740,2988511743,FR
+2988511744,2988511747,PL
+2988511748,2988511751,GB
+2988511752,2988511759,CZ
+2988511760,2988511775,FR
+2988511776,2988511807,GB
+2988511808,2988511823,ES
+2988511824,2988511831,DE
+2988511832,2988511835,ES
+2988511836,2988511855,FR
+2988511856,2988511871,GB
+2988511872,2988511887,PL
+2988511888,2988511903,FR
+2988511904,2988511911,IT
+2988511912,2988511915,FR
+2988511916,2988511919,PL
+2988511920,2988511923,GB
+2988511924,2988511927,ES
+2988511928,2988511931,IT
+2988511932,2988511935,PL
+2988511936,2988511951,PT
+2988511952,2988511999,GB
2988512000,2988512031,PL
2988512032,2988512055,FR
2988512056,2988512059,PL
@@ -56494,9 +58302,7 @@
2988512896,2988512899,PL
2988512900,2988512907,GB
2988512908,2988512911,LT
-2988512912,2988512919,FR
-2988512920,2988512927,CH
-2988512928,2988512943,FR
+2988512912,2988512943,FR
2988512944,2988512951,GB
2988512952,2988512955,FR
2988512956,2988512959,LT
@@ -56515,8 +58321,8 @@
2988513196,2988513199,ES
2988513200,2988513207,PT
2988513208,2988513219,FR
-2988513220,2988513223,DE
-2988513224,2988513227,PT
+2988513220,2988513223,CZ
+2988513224,2988513227,NL
2988513228,2988513271,FR
2988513272,2988513275,DE
2988513276,2988513279,CH
@@ -56525,14 +58331,14 @@
2988513288,2988513307,FR
2988513308,2988513311,PL
2988513312,2988513327,PT
-2988513328,2988513331,ES
+2988513328,2988513331,PL
2988513332,2988513335,FR
2988513336,2988513343,GB
-2988513344,2988513351,ES
+2988513344,2988513351,FR
2988513352,2988513359,IT
2988513360,2988513375,GB
-2988513376,2988513391,IT
-2988513392,2988513407,GB
+2988513376,2988513383,FR
+2988513384,2988513407,GB
2988513408,2988513471,PL
2988513472,2988513503,FR
2988513504,2988513507,CH
@@ -56563,19 +58369,21 @@
2988513884,2988513895,FR
2988513896,2988513899,IT
2988513900,2988513903,PL
-2988513904,2988513951,FR
+2988513904,2988513919,IT
+2988513920,2988513951,FR
2988513952,2988513983,PT
2988513984,2988514015,GB
-2988514016,2988514019,FR
+2988514016,2988514019,PT
2988514020,2988514023,NL
-2988514024,2988514031,IE
-2988514032,2988514111,FR
+2988514024,2988514027,PT
+2988514028,2988514111,FR
2988514112,2988514115,DE
2988514116,2988514119,FR
2988514120,2988514127,PT
2988514128,2988514131,IE
-2988514132,2988514135,IT
-2988514136,2988514159,FR
+2988514132,2988514139,IT
+2988514140,2988514143,PL
+2988514144,2988514159,FR
2988514160,2988514163,IT
2988514164,2988514167,DE
2988514168,2988514171,FR
@@ -56603,7 +58411,7 @@
2988514432,2988514447,FR
2988514448,2988514463,ES
2988514464,2988514527,FR
-2988514528,2988514559,GB
+2988514528,2988514559,DE
2988514560,2988514623,FR
2988514624,2988514655,DE
2988514656,2988514671,FR
@@ -56617,7 +58425,9 @@
2988514744,2988514747,BE
2988514748,2988514751,IT
2988514752,2988514815,FI
-2988514816,2988514831,FR
+2988514816,2988514823,FR
+2988514824,2988514827,PL
+2988514828,2988514831,DE
2988514832,2988514839,PL
2988514840,2988514879,ES
2988514880,2988514943,PL
@@ -56634,7 +58444,9 @@
2988515328,2988517375,DE
2988517376,2988519423,FR
2988519424,2988521471,PL
-2988521472,2988539935,FR
+2988521472,2988535807,FR
+2988535808,2988537855,ES
+2988537856,2988539935,FR
2988539936,2988539967,GB
2988539968,2988539971,ES
2988539972,2988539975,IT
@@ -56726,13 +58538,15 @@
2988541244,2988541247,GB
2988541248,2988541279,FR
2988541280,2988541311,NL
-2988541312,2988541327,DE
+2988541312,2988541315,DE
+2988541316,2988541319,CH
+2988541320,2988541327,DE
2988541328,2988541335,PL
2988541336,2988541375,FR
2988541376,2988541391,BE
2988541392,2988541407,FR
2988541408,2988541423,BE
-2988541424,2988541439,PL
+2988541424,2988541439,DE
2988541440,2988541443,IT
2988541444,2988541463,FR
2988541464,2988541467,ES
@@ -56743,7 +58557,7 @@
2988541552,2988541583,FR
2988541584,2988541587,ES
2988541588,2988541591,FR
-2988541592,2988541599,PL
+2988541592,2988541599,GB
2988541600,2988541603,FR
2988541604,2988541607,NL
2988541608,2988541611,GB
@@ -56779,9 +58593,9 @@
2988541824,2988541855,LT
2988541856,2988541887,IE
2988541888,2988541895,DE
-2988541896,2988541899,FR
+2988541896,2988541899,PL
2988541900,2988541903,BE
-2988541904,2988541907,DE
+2988541904,2988541907,CZ
2988541908,2988541911,GB
2988541912,2988541935,PL
2988541936,2988541939,FR
@@ -56797,16 +58611,327 @@
2988542020,2988542023,FR
2988542024,2988542027,NL
2988542028,2988542031,PL
-2988542032,2988542055,FR
-2988542056,2988542063,BE
+2988542032,2988542047,FR
+2988542048,2988542055,PL
+2988542056,2988542063,FR
2988542064,2988542067,GB
-2988542068,2988572671,FR
+2988542068,2988542071,ES
+2988542072,2988542367,FR
+2988542368,2988542399,CZ
+2988542400,2988542407,FR
+2988542408,2988542415,PL
+2988542416,2988542431,FR
+2988542432,2988542439,PL
+2988542440,2988542443,ES
+2988542444,2988542447,FR
+2988542448,2988542455,PL
+2988542456,2988542459,FR
+2988542460,2988542463,ES
+2988542464,2988542495,NL
+2988542496,2988542527,FR
+2988542528,2988542535,DE
+2988542536,2988542539,NL
+2988542540,2988542543,LT
+2988542544,2988542551,DE
+2988542552,2988542559,ES
+2988542560,2988542591,FR
+2988542592,2988542595,PT
+2988542596,2988542599,FI
+2988542600,2988542603,GB
+2988542604,2988542611,FR
+2988542612,2988542623,DE
+2988542624,2988542655,FR
+2988542656,2988542719,BE
+2988542720,2988542783,CH
+2988542784,2988542847,CZ
+2988542848,2988542919,DE
+2988542920,2988542923,PL
+2988542924,2988542943,GB
+2988542944,2988542959,DE
+2988542960,2988542963,FR
+2988542964,2988542967,CH
+2988542968,2988542971,NL
+2988542972,2988542975,DE
+2988542976,2988543007,FR
+2988543008,2988543011,PL
+2988543012,2988543015,GB
+2988543016,2988543023,CH
+2988543024,2988543039,DE
+2988543040,2988543043,CZ
+2988543044,2988543047,ES
+2988543048,2988543051,IE
+2988543052,2988543067,FR
+2988543068,2988543071,GB
+2988543072,2988543231,FR
+2988543232,2988543235,IT
+2988543236,2988543243,FR
+2988543244,2988543247,IT
+2988543248,2988543251,FR
+2988543252,2988543255,ES
+2988543256,2988543263,PL
+2988543264,2988543279,ES
+2988543280,2988543295,DE
+2988543296,2988543299,ES
+2988543300,2988543303,FR
+2988543304,2988543307,ES
+2988543308,2988543311,PL
+2988543312,2988543315,DE
+2988543316,2988543319,IE
+2988543320,2988543323,FI
+2988543324,2988543327,PL
+2988543328,2988543383,FR
+2988543384,2988543399,DE
+2988543400,2988543403,GB
+2988543404,2988543407,NL
+2988543408,2988543423,GB
+2988543424,2988543431,DE
+2988543432,2988543439,GB
+2988543440,2988543447,FR
+2988543448,2988543451,BE
+2988543452,2988543455,PL
+2988543456,2988543463,FR
+2988543464,2988543471,GB
+2988543472,2988543487,FR
+2988543488,2988543503,BE
+2988543504,2988543527,FR
+2988543528,2988543535,GB
+2988543536,2988543551,PL
+2988543552,2988543555,GB
+2988543556,2988543559,NL
+2988543560,2988543563,PT
+2988543564,2988543567,FR
+2988543568,2988543579,PL
+2988543580,2988543583,FR
+2988543584,2988543615,DE
+2988543616,2988543743,ES
+2988543744,2988543935,FR
+2988543936,2988543939,FI
+2988543940,2988543947,IT
+2988543948,2988543959,BE
+2988543960,2988543967,PL
+2988543968,2988543999,FR
+2988544000,2988544127,CZ
+2988544128,2988544159,GB
+2988544160,2988544163,FR
+2988544164,2988544167,PL
+2988544168,2988544175,GB
+2988544176,2988544179,CH
+2988544180,2988544183,IT
+2988544184,2988544191,DE
+2988544192,2988544227,ES
+2988544228,2988544255,FR
+2988544256,2988544383,LT
+2988544384,2988544511,NL
+2988544512,2988544527,FR
+2988544528,2988544535,ES
+2988544536,2988544539,PL
+2988544540,2988544543,LT
+2988544544,2988544639,ES
+2988544640,2988544735,DE
+2988544736,2988544751,PL
+2988544752,2988544799,FR
+2988544800,2988544831,FI
+2988544832,2988544863,FR
+2988544864,2988544895,PL
+2988544896,2988544927,FR
+2988544928,2988544931,DE
+2988544932,2988544935,FR
+2988544936,2988544943,IT
+2988544944,2988544951,PL
+2988544952,2988544959,GB
+2988544960,2988544979,ES
+2988544980,2988544983,FR
+2988544984,2988544991,IE
+2988544992,2988544995,PL
+2988544996,2988544999,FR
+2988545000,2988545003,DE
+2988545004,2988545007,ES
+2988545008,2988545011,FR
+2988545012,2988545019,DE
+2988545020,2988545031,FR
+2988545032,2988545039,PL
+2988545040,2988545047,ES
+2988545048,2988545051,FR
+2988545052,2988545055,PL
+2988545056,2988545063,FR
+2988545064,2988545067,GB
+2988545068,2988545071,ES
+2988545072,2988545151,FR
+2988545152,2988545167,GB
+2988545168,2988545171,DE
+2988545172,2988545175,FR
+2988545176,2988545179,GB
+2988545180,2988545183,PL
+2988545184,2988545215,FR
+2988545216,2988545247,ES
+2988545248,2988545287,PL
+2988545288,2988545291,FR
+2988545292,2988545295,DE
+2988545296,2988545311,FR
+2988545312,2988545327,CH
+2988545328,2988545335,IT
+2988545336,2988545343,DE
+2988545344,2988545407,FR
+2988545408,2988545439,IE
+2988545440,2988545471,FR
+2988545472,2988545503,ES
+2988545504,2988545507,FR
+2988545508,2988545511,DE
+2988545512,2988545515,IT
+2988545516,2988545531,PL
+2988545532,2988545535,FR
+2988545536,2988545599,BE
+2988545600,2988545663,FR
+2988545664,2988545695,ES
+2988545696,2988545727,DE
+2988545728,2988545815,FR
+2988545816,2988545823,NL
+2988545824,2988545831,FR
+2988545832,2988545835,GB
+2988545836,2988545839,DE
+2988545840,2988545855,FR
+2988545856,2988545859,ES
+2988545860,2988545867,FR
+2988545868,2988545871,PL
+2988545872,2988545919,FR
+2988545920,2988545923,GB
+2988545924,2988545927,PL
+2988545928,2988545931,BE
+2988545932,2988545943,FR
+2988545944,2988545967,NL
+2988545968,2988545983,GB
+2988545984,2988546239,IE
+2988546240,2988546271,LT
+2988546272,2988546279,IT
+2988546280,2988546283,GB
+2988546284,2988546287,BE
+2988546288,2988546295,DE
+2988546296,2988546303,PL
+2988546304,2988546307,ES
+2988546308,2988546311,NL
+2988546312,2988546315,IT
+2988546316,2988546319,FR
+2988546320,2988546327,CH
+2988546328,2988546335,ES
+2988546336,2988546351,PT
+2988546352,2988546367,ES
+2988546368,2988546431,FR
+2988546432,2988546463,DE
+2988546464,2988546527,FR
+2988546528,2988546535,BE
+2988546536,2988546539,IE
+2988546540,2988546547,ES
+2988546548,2988546559,FR
+2988546560,2988546567,NL
+2988546568,2988546575,FR
+2988546576,2988546579,ES
+2988546580,2988546583,GB
+2988546584,2988546591,FR
+2988546592,2988546599,DE
+2988546600,2988546603,PT
+2988546604,2988546615,GB
+2988546616,2988546619,FI
+2988546620,2988546623,FR
+2988546624,2988546687,FI
+2988546688,2988546695,PL
+2988546696,2988546699,FR
+2988546700,2988546703,IT
+2988546704,2988546727,FR
+2988546728,2988546735,ES
+2988546736,2988546751,FR
+2988546752,2988546783,ES
+2988546784,2988546831,FR
+2988546832,2988546835,DE
+2988546836,2988546839,ES
+2988546840,2988546847,IE
+2988546848,2988546879,FR
+2988546880,2988546947,ES
+2988546948,2988546951,DE
+2988546952,2988546959,FR
+2988546960,2988546967,DE
+2988546968,2988546971,FR
+2988546972,2988546975,BE
+2988546976,2988546991,FI
+2988546992,2988546995,DE
+2988546996,2988546999,ES
+2988547000,2988547003,IT
+2988547004,2988547007,ES
+2988547008,2988547011,GB
+2988547012,2988547015,FR
+2988547016,2988547019,NL
+2988547020,2988547023,ES
+2988547024,2988547039,FR
+2988547040,2988547047,ES
+2988547048,2988547055,FR
+2988547056,2988547059,IT
+2988547060,2988547063,FR
+2988547064,2988547067,GB
+2988547068,2988547071,PL
+2988547072,2988547087,GB
+2988547088,2988547095,NL
+2988547096,2988547099,PL
+2988547100,2988547103,IE
+2988547104,2988547111,DE
+2988547112,2988547115,GB
+2988547116,2988547123,FR
+2988547124,2988547127,IT
+2988547128,2988547135,FR
+2988547136,2988547167,IT
+2988547168,2988547199,BE
+2988547200,2988547207,IE
+2988547208,2988547211,FR
+2988547212,2988547215,DE
+2988547216,2988547219,IT
+2988547220,2988547223,FR
+2988547224,2988547227,ES
+2988547228,2988547231,PT
+2988547232,2988547239,FR
+2988547240,2988547247,PL
+2988547248,2988547255,NL
+2988547256,2988547263,FR
+2988547264,2988547271,GB
+2988547272,2988547279,ES
+2988547280,2988547295,FR
+2988547296,2988547303,DE
+2988547304,2988547311,FR
+2988547312,2988547327,PL
+2988547328,2988547423,FR
+2988547424,2988547431,GB
+2988547432,2988547435,ES
+2988547436,2988547443,PL
+2988547444,2988547447,DE
+2988547448,2988547455,FR
+2988547456,2988547471,DE
+2988547472,2988547475,NL
+2988547476,2988547479,GB
+2988547480,2988547487,FR
+2988547488,2988547519,ES
+2988547520,2988547523,PL
+2988547524,2988547527,CZ
+2988547528,2988547531,IT
+2988547532,2988547535,ES
+2988547536,2988547539,FR
+2988547540,2988547543,DE
+2988547544,2988547547,IT
+2988547548,2988547551,PL
+2988547552,2988547567,FR
+2988547568,2988547583,DE
+2988547584,2988547599,ES
+2988547600,2988547615,FR
+2988547616,2988547647,PL
+2988547648,2988547655,FR
+2988547656,2988547663,PL
+2988547664,2988547679,IE
+2988547680,2988547711,CH
+2988547712,2988547727,PL
+2988547728,2988572671,FR
2988572672,2988703743,RU
2988703744,2988834815,PL
2988834816,2988965887,CH
2988965888,2989096959,SK
2989096960,2989228031,PL
2989228032,2989490175,RU
+2989490176,2989555711,HU
2989555712,2989621247,RU
2989621248,2989752319,BE
2989752320,2989817855,SY
@@ -56843,51 +58968,143 @@
2991182336,2991182591,GB
2991182592,2991185919,SE
2991185920,2991185951,GB
-2991185952,2991186175,SE
+2991185952,2991185967,NL
+2991185968,2991185983,DE
+2991185984,2991185999,DK
+2991186000,2991186015,FI
+2991186016,2991186175,SE
2991186176,2991186207,GB
-2991186208,2991186431,SE
+2991186208,2991186223,NL
+2991186224,2991186239,DE
+2991186240,2991186255,DK
+2991186256,2991186271,FI
+2991186272,2991186431,SE
2991186432,2991186463,GB
-2991186464,2991186687,SE
+2991186464,2991186479,NL
+2991186480,2991186495,DE
+2991186496,2991186511,DK
+2991186512,2991186527,FI
+2991186528,2991186687,SE
2991186688,2991186719,GB
-2991186720,2991186943,SE
+2991186720,2991186735,NL
+2991186736,2991186751,DE
+2991186752,2991186767,DK
+2991186768,2991186783,FI
+2991186784,2991186943,SE
2991186944,2991186975,GB
-2991186976,2991187199,SE
+2991186976,2991186991,NL
+2991186992,2991187007,DE
+2991187008,2991187023,DK
+2991187024,2991187039,FI
+2991187040,2991187199,SE
2991187200,2991187231,GB
-2991187232,2991187455,SE
+2991187232,2991187247,NL
+2991187248,2991187263,DE
+2991187264,2991187279,DK
+2991187280,2991187295,FI
+2991187296,2991187455,SE
2991187456,2991187487,GB
-2991187488,2991187711,SE
+2991187488,2991187503,NL
+2991187504,2991187519,DE
+2991187520,2991187535,DK
+2991187536,2991187551,FI
+2991187552,2991187711,SE
2991187712,2991187743,GB
-2991187744,2991187967,SE
+2991187744,2991187759,NL
+2991187760,2991187775,DE
+2991187776,2991187791,DK
+2991187792,2991187807,FI
+2991187808,2991187967,SE
2991187968,2991187999,GB
-2991188000,2991188223,SE
+2991188000,2991188015,NL
+2991188016,2991188031,DE
+2991188032,2991188047,DK
+2991188048,2991188063,FI
+2991188064,2991188223,SE
2991188224,2991188255,GB
-2991188256,2991188479,SE
+2991188256,2991188271,NL
+2991188272,2991188287,DE
+2991188288,2991188303,DK
+2991188304,2991188319,FI
+2991188320,2991188479,SE
2991188480,2991188511,GB
-2991188512,2991188735,SE
+2991188512,2991188527,NL
+2991188528,2991188543,DE
+2991188544,2991188559,DK
+2991188560,2991188575,FI
+2991188576,2991188735,SE
2991188736,2991188767,GB
-2991188768,2991188991,SE
+2991188768,2991188783,NL
+2991188784,2991188799,DE
+2991188800,2991188815,DK
+2991188816,2991188831,FI
+2991188832,2991188991,SE
2991188992,2991189023,GB
-2991189024,2991189247,SE
+2991189024,2991189039,NL
+2991189040,2991189055,DE
+2991189056,2991189071,DK
+2991189072,2991189087,FI
+2991189088,2991189247,SE
2991189248,2991189279,GB
-2991189280,2991189503,SE
+2991189280,2991189295,NL
+2991189296,2991189311,DE
+2991189312,2991189327,DK
+2991189328,2991189343,FI
+2991189344,2991189503,SE
2991189504,2991189535,GB
-2991189536,2991189759,SE
+2991189536,2991189551,NL
+2991189552,2991189567,DE
+2991189568,2991189583,DK
+2991189584,2991189599,FI
+2991189600,2991189759,SE
2991189760,2991189791,GB
-2991189792,2991190015,SE
+2991189792,2991189807,NL
+2991189808,2991189823,DE
+2991189824,2991189839,DK
+2991189840,2991189855,FI
+2991189856,2991190015,SE
2991190016,2991190047,GB
-2991190048,2991190271,SE
+2991190048,2991190063,NL
+2991190064,2991190079,DE
+2991190080,2991190095,DK
+2991190096,2991190111,FI
+2991190112,2991190271,SE
2991190272,2991190303,GB
-2991190304,2991190527,SE
+2991190304,2991190319,NL
+2991190320,2991190335,DE
+2991190336,2991190351,DK
+2991190352,2991190367,FI
+2991190368,2991190527,SE
2991190528,2991190559,GB
-2991190560,2991190783,SE
+2991190560,2991190575,NL
+2991190576,2991190591,DE
+2991190592,2991190607,DK
+2991190608,2991190623,FI
+2991190624,2991190783,SE
2991190784,2991190815,GB
-2991190816,2991191039,SE
+2991190816,2991190831,NL
+2991190832,2991190847,DE
+2991190848,2991190863,DK
+2991190864,2991190879,FI
+2991190880,2991191039,SE
2991191040,2991191071,GB
-2991191072,2991191295,SE
+2991191072,2991191087,NL
+2991191088,2991191103,DE
+2991191104,2991191119,DK
+2991191120,2991191135,FI
+2991191136,2991191295,SE
2991191296,2991191327,GB
-2991191328,2991191551,SE
+2991191328,2991191343,NL
+2991191344,2991191359,DE
+2991191360,2991191375,DK
+2991191376,2991191391,FI
+2991191392,2991191551,SE
2991191552,2991191583,GB
-2991191584,2991191807,SE
+2991191584,2991191599,NL
+2991191600,2991191615,DE
+2991191616,2991191631,DK
+2991191632,2991191647,FI
+2991191648,2991191807,SE
2991191808,2991192063,FI
2991192064,2991192319,DK
2991192320,2991194111,SE
@@ -56920,9 +59137,7 @@
2991980808,2991980815,NA
2991980816,2991981063,UA
2991981064,2991981071,DE
-2991981072,2991981311,UA
-2991981312,2991981315,RU
-2991981316,2991981375,UA
+2991981072,2991981375,UA
2991981376,2991981383,NA
2991981384,2991981415,UA
2991981416,2991981423,NA
@@ -56932,11 +59147,7 @@
2991981464,2991981471,NA
2991981472,2991981495,UA
2991981496,2991981503,NA
-2991981504,2991981583,UA
-2991981584,2991981591,NA
-2991981592,2991981631,UA
-2991981632,2991981639,NA
-2991981640,2991981647,UA
+2991981504,2991981647,UA
2991981648,2991981655,NA
2991981656,2991981687,UA
2991981688,2991981695,NA
@@ -56946,12 +59157,13 @@
2991981912,2991981919,RU
2991981920,2991981935,UA
2991981936,2991981943,RU
-2991981944,2991981951,US
-2991981952,2991982535,UA
+2991981944,2991982535,UA
2991982536,2991982543,GL
2991982544,2991982592,UA
2991982593,2991982846,JP
-2991982847,2992111615,UA
+2991982847,2991983359,UA
+2991983360,2991983615,JP
+2991983616,2992111615,UA
2992111616,2992373759,KZ
2992373760,2992635903,UA
2992635904,2993684479,GB
@@ -56977,9 +59189,7 @@
2996174848,2996305919,UA
2996305920,2996436991,QA
2996436992,2996469759,BY
-2996469760,2996479487,RU
-2996479488,2996479491,US
-2996479492,2996535295,RU
+2996469760,2996535295,RU
2996535296,2996568063,DK
2996568064,2996600831,ES
2996600832,2996633599,RO
@@ -56990,14 +59200,22 @@
2996764672,2996768767,NL
2996768768,2996772863,RU
2996772864,2996776959,UA
+2996776960,2996781055,RU
+2996781056,2996785151,RO
+2996785152,2996789247,RU
+2996789248,2996797439,UA
+2996797440,2996801535,PL
+2996801536,2996805631,RO
+2996805632,2996809727,PL
+2996809728,2996813823,UA
+2996813824,2996817919,PL
+2996817920,2996826111,UA
+2996826112,2996830207,RU
2996830208,2996862975,HR
2996862976,2996895743,AM
2996895744,2996928511,KW
2996928512,2996994047,RU
-2996994048,2996994303,DE
-2996994304,2996994815,BY
-2996994816,2996994847,DE
-2996994848,2996994879,SC
+2996994048,2996994879,DE
2996994880,2996994943,UA
2996994944,2996995071,US
2996995072,2996995327,BZ
@@ -57005,8 +59223,7 @@
2996995648,2996995711,BZ
2996995712,2996995775,BY
2996995776,2996995839,RU
-2996995840,2996996095,UA
-2996996096,2996996127,DE
+2996995840,2996996127,DE
2996996128,2996996159,CA
2996996160,2996996287,DE
2996996288,2996996351,RU
@@ -57018,30 +59235,35 @@
2996996768,2996996831,RU
2996996832,2996996863,DE
2996996864,2996997119,CN
-2996997120,2996997375,MK
-2996997376,2996997631,DE
-2996997632,2996998143,BY
+2996997120,2996998143,DE
2996998144,2996998271,UA
-2996998272,2996998527,DE
+2996998272,2996998463,DE
+2996998464,2996998527,CA
2996998528,2996998655,UA
2996998656,2996998719,DE
2996998720,2996998911,RU
-2996998912,2996999231,DE
-2996999232,2996999359,IN
-2996999360,2996999679,DE
+2996998912,2996999199,DE
+2996999200,2996999231,AU
+2996999232,2996999359,DE
+2996999360,2996999423,IL
+2996999424,2996999551,IN
+2996999552,2996999679,DE
2996999680,2996999935,GB
-2996999936,2997000063,DE
-2997000064,2997000447,CN
+2996999936,2997000447,DE
2997000448,2997000703,RU
-2997000704,2997000831,DE
+2997000704,2997000767,DE
+2997000768,2997000831,SC
2997000832,2997000959,CA
-2997000960,2997001727,DE
-2997001728,2997001983,UA
-2997001984,2997003071,DE
+2997000960,2997000991,DE
+2997000992,2997001119,RO
+2997001120,2997001471,DE
+2997001472,2997001727,BZ
+2997001728,2997003071,DE
2997003072,2997003135,RU
-2997003136,2997003199,US
+2997003136,2997003199,PK
2997003200,2997003263,RU
-2997003264,2997003295,DE
+2997003264,2997003287,DE
+2997003288,2997003295,NL
2997003296,2997003327,CA
2997003328,2997003391,RU
2997003392,2997003583,DE
@@ -57050,7 +59272,8 @@
2997004032,2997004287,BZ
2997004288,2997004543,US
2997004544,2997004607,DE
-2997004608,2997004799,RU
+2997004608,2997004671,RU
+2997004672,2997004799,DE
2997004800,2997005055,BZ
2997005056,2997005183,GB
2997005184,2997005375,DE
@@ -57060,21 +59283,41 @@
2997005824,2997006079,DE
2997006080,2997006335,GB
2997006336,2997006591,TR
-2997006592,2997006719,DE
+2997006592,2997006655,DE
+2997006656,2997006719,TR
2997006720,2997006847,RU
2997006848,2997008191,DE
-2997008192,2997008255,GR
+2997008192,2997008255,TR
2997008256,2997008383,LT
2997008384,2997008447,DE
2997008448,2997008511,RU
2997008512,2997008639,LT
-2997008640,2997008895,TR
-2997008896,2997008959,DE
+2997008640,2997008959,DE
2997008960,2997009023,RU
2997009024,2997010431,DE
2997010432,2997018623,US
2997018624,2997019135,GB
-2997019136,2997026815,DE
+2997019136,2997019391,TR
+2997019392,2997019647,GB
+2997019648,2997019679,DE
+2997019680,2997019711,AU
+2997019712,2997019903,US
+2997019904,2997020415,DE
+2997020416,2997020671,CA
+2997020672,2997021183,DE
+2997021184,2997021695,GB
+2997021696,2997021951,NL
+2997021952,2997022015,DE
+2997022016,2997022143,GB
+2997022144,2997022239,DE
+2997022240,2997022303,NL
+2997022304,2997022367,SG
+2997022368,2997022783,DE
+2997022784,2997022847,IN
+2997022848,2997022975,BZ
+2997022976,2997024255,DE
+2997024256,2997024511,TR
+2997024512,2997026815,DE
2997026816,2997059583,RU
2997059584,2997092351,BY
2997092352,2997125119,NO
@@ -57088,7 +59331,9 @@
2997387264,2997420031,BY
2997420032,2997452799,RU
2997452800,2997485567,BG
-2997485568,2997518335,FR
+2997485568,2997486847,FR
+2997486848,2997486911,BH
+2997486912,2997518335,FR
2997518336,2997528063,RU
2997528064,2997528319,UA
2997528320,2997583871,RU
@@ -57109,8 +59354,13 @@
2999451648,2999713791,DE
2999713792,2999975935,RU
2999975936,2999984127,FR
-2999984128,2999985663,BE
-2999985664,2999992319,NL
+2999984128,2999985695,BE
+2999985696,2999985711,GB
+2999985712,2999985727,BE
+2999985728,2999985743,CZ
+2999985744,2999985759,NL
+2999985760,2999986175,BE
+2999986176,2999992319,NL
2999992320,3000000511,RU
3000000512,3000008703,DE
3000008704,3000016895,RU
@@ -57156,10 +59406,42 @@
3000285184,3000287231,RO
3000287232,3000289279,UA
3000289280,3000291327,RO
+3000291328,3000293375,RU
+3000293376,3000295423,PL
+3000295424,3000297471,RU
+3000297472,3000301567,UA
+3000301568,3000303615,RO
+3000303616,3000305663,UA
+3000305664,3000313855,RU
+3000313856,3000315903,CZ
+3000315904,3000317951,LV
+3000317952,3000319999,PL
+3000320000,3000322047,FR
+3000322048,3000326143,RU
+3000326144,3000330239,PL
+3000330240,3000332287,UA
+3000332288,3000334335,RU
+3000334336,3000336383,PL
+3000336384,3000338431,AM
+3000338432,3000340479,PL
+3000340480,3000342527,RU
+3000342528,3000344575,CZ
+3000344576,3000346623,PL
+3000346624,3000348671,UA
+3000348672,3000350719,RO
+3000350720,3000352767,UA
+3000352768,3000358911,RU
+3000358912,3000360959,PL
+3000360960,3000363007,RU
+3000363008,3000365055,FI
+3000365056,3000369151,RU
3000369152,3000377343,PL
3000377344,3000385535,RU
3000385536,3000393727,PS
3000393728,3000401919,NL
+3000401920,3000410111,PL
+3000410112,3000426495,UA
+3000426496,3000434687,RU
3000434688,3000451071,IR
3000451072,3000467455,RU
3000467456,3000471551,GB
@@ -57186,6 +59468,7 @@
3000543232,3000545279,UA
3000545280,3000547327,RU
3000547328,3000549375,UA
+3000549376,3000551423,SE
3000551424,3000553471,RS
3000553472,3000555519,KG
3000555520,3000557567,RU
@@ -57235,7 +59518,6 @@
3000713216,3000717311,A2
3000717312,3000721407,UA
3000721408,3000729599,PL
-3000729600,3000733695,NL
3000733696,3000737791,RU
3000737792,3000741887,UA
3000741888,3000745983,RU
@@ -57260,20 +59542,27 @@
3001843712,3001845759,RU
3001845760,3001851903,GB
3001851904,3001855999,IT
-3001856000,3001858559,NL
-3001858560,3001859071,RO
-3001859072,3001859327,MD
-3001859328,3001860095,NL
+3001856000,3001859071,NL
+3001859072,3001860095,MD
3001860096,3001864191,EE
3001864192,3001868287,RU
-3001868288,3001872383,FR
+3001868288,3001869312,FR
+3001869313,3001869600,SA
+3001869601,3001869696,IR
+3001869697,3001869823,YE
+3001869824,3001869952,IR
+3001869953,3001872383,FR
3001872384,3001876479,RU
3001876480,3001880575,IT
3001880576,3001884671,RU
3001884672,3001884927,SE
3001884928,3001885055,NL
3001885056,3001885087,US
-3001885088,3001888767,NL
+3001885088,3001885439,NL
+3001885440,3001886463,BE
+3001886464,3001886511,NL
+3001886512,3001886527,US
+3001886528,3001888767,NL
3001888768,3001892863,BH
3001892864,3001896959,AZ
3001896960,3001901055,CH
@@ -57293,7 +59582,47 @@
3001962496,3001966591,GB
3001966592,3001970687,NL
3001970688,3001974783,RU
-3001974784,3001982975,GB
+3001974784,3001975567,GB
+3001975568,3001975591,US
+3001975592,3001975599,TW
+3001975600,3001975607,CN
+3001975608,3001975615,RU
+3001975616,3001975623,US
+3001975624,3001975631,RU
+3001975632,3001976575,GB
+3001976576,3001976607,TW
+3001976608,3001976623,GB
+3001976624,3001976639,CN
+3001976640,3001976655,RU
+3001976656,3001976679,GB
+3001976680,3001976687,US
+3001976688,3001976927,GB
+3001976928,3001976959,RU
+3001976960,3001977135,GB
+3001977136,3001977151,AE
+3001977152,3001977167,GB
+3001977168,3001977183,LK
+3001977184,3001977215,GB
+3001977216,3001977247,RU
+3001977248,3001977311,GB
+3001977312,3001977343,CN
+3001977344,3001977375,GB
+3001977376,3001977407,CA
+3001977408,3001977455,GB
+3001977456,3001977463,US
+3001977464,3001977487,GB
+3001977488,3001977503,LK
+3001977504,3001978367,GB
+3001978368,3001978495,US
+3001978496,3001978527,RU
+3001978528,3001978559,US
+3001978560,3001978623,GB
+3001978624,3001978687,CA
+3001978688,3001978751,US
+3001978752,3001978783,RU
+3001978784,3001978847,GB
+3001978848,3001978879,US
+3001978880,3001982975,GB
3001982976,3001987071,CH
3001987072,3001991167,JO
3001991168,3001995263,IR
@@ -57304,11 +59633,24 @@
3002015744,3002019839,IT
3002019840,3002020095,NL
3002020096,3002020159,SG
-3002020160,3002023935,NL
+3002020160,3002020223,NL
+3002020224,3002020287,IL
+3002020288,3002020303,US
+3002020304,3002020319,BZ
+3002020320,3002021695,NL
+3002021696,3002021759,SG
+3002021760,3002023935,NL
3002023936,3002028031,DE
3002028032,3002036223,GB
3002036224,3002040319,BG
3002040320,3002044415,PL
+3002044416,3002048511,IR
+3002048512,3002052607,GB
+3002052608,3002056703,IT
+3002056704,3002060799,FI
+3002060800,3002064895,ES
+3002064896,3002068991,BG
+3002068992,3002073087,ES
3002073088,3002597375,TR
3002597376,3002599423,RU
3002599424,3002601471,CZ
@@ -57326,11 +59668,18 @@
3002619952,3002619967,GB
3002619968,3002619983,IT
3002619984,3002619991,GB
-3002619992,3002620031,IT
+3002619992,3002620015,IT
+3002620016,3002620031,GB
3002620032,3002620039,DE
-3002620040,3002621951,IT
+3002620040,3002620047,IT
+3002620048,3002620095,GB
+3002620096,3002620103,IT
+3002620104,3002620111,GB
+3002620112,3002621951,IT
3002621952,3002623999,NO
-3002624000,3002628095,GB
+3002624000,3002626551,GB
+3002626552,3002626559,US
+3002626560,3002628095,GB
3002628096,3002630143,NO
3002630144,3002632191,GB
3002632192,3002634239,EE
@@ -57455,7 +59804,10 @@
3003060224,3003062271,DE
3003062272,3003064319,NL
3003064320,3003066367,RO
-3003066368,3003068415,PL
+3003066368,3003066887,PL
+3003066888,3003066895,MX
+3003066896,3003066911,UA
+3003066912,3003068415,PL
3003068416,3003070463,NL
3003070464,3003074559,GB
3003074560,3003076607,IT
@@ -57503,7 +59855,6 @@
3025989632,3025993727,KR
3025993728,3026059263,VN
3026059264,3026067455,PH
-3026067456,3026068479,BD
3026068480,3026069503,PH
3026069504,3026071551,JP
3026071552,3026073599,AP
@@ -57649,7 +60000,7 @@
3034251264,3034316799,HK
3034316800,3034447871,JP
3034447872,3034456063,AU
-3034464256,3034465279,NZ
+3034464256,3034466303,NZ
3034466304,3034472447,JP
3034472448,3034480639,IN
3034480640,3034482687,SG
@@ -57680,9 +60031,8 @@
3035316224,3035324415,CN
3035324416,3035326463,JP
3035326464,3035327487,AU
-3035328512,3035332607,BD
3035332608,3035333631,AU
-3035334656,3035335679,AU
+3035333632,3035334655,HK
3035335680,3035337727,JP
3035337728,3035338751,ID
3035338752,3035339007,SG
@@ -57934,7 +60284,9 @@
3093955576,3093955647,US
3093955648,3093955663,GB
3093955664,3093955679,CA
-3093955680,3093956895,US
+3093955680,3093956479,US
+3093956480,3093956495,IE
+3093956496,3093956895,US
3093956896,3093956943,CA
3093956944,3093957103,US
3093957104,3093957119,CA
@@ -57950,13 +60302,47 @@
3093958112,3093958119,CA
3093958120,3093958175,US
3093958176,3093958183,GB
-3093958184,3093958663,US
+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,3093960191,US
+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,3093986367,US
+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,3093962807,US
+3093962808,3093962815,AU
+3093962816,3093963359,US
+3093963360,3093963367,CA
+3093963368,3093963487,US
+3093963488,3093963495,IE
+3093963496,3093986367,US
3093986368,3093986431,DE
3093986432,3093986463,US
3093986464,3093986495,GB
@@ -57966,9 +60352,14 @@
3096444928,3096969215,CA
3096969216,3097493503,US
3097493504,3097755647,CA
-3097755648,3098017791,US
-3098083328,3098087423,US
-3098542080,3103784959,US
+3097755648,3098148863,US
+3098148864,3098165247,JM
+3098214400,3098263551,US
+3098263552,3098271743,CA
+3098271744,3098275839,US
+3098279936,3098443775,US
+3098476544,3098492927,CA
+3098492928,3103784959,US
3120562176,3120594943,CO
3120594944,3120599039,AR
3120599040,3120601087,EC
@@ -57988,7 +60379,7 @@
3120758784,3120824319,EC
3120824320,3120840703,CR
3120840704,3120857087,AR
-3120857088,3120889855,EC
+3120857088,3120922623,EC
3120955392,3121020927,DO
3121086464,3121151999,UY
3121152000,3121348607,CL
@@ -58034,6 +60425,11 @@
3131047936,3131310079,PE
3132096512,3132129279,CR
3132227584,3132293119,EC
+3132358656,3132424191,CO
+3132489728,3132555263,AR
+3132620800,3132751871,VE
+3132882944,3132915711,VE
+3132948480,3133014015,AR
3133145088,3145727999,BR
3145728000,3154116607,MX
3154116608,3154182143,EU
@@ -58176,12 +60572,15 @@
3158889984,3158890239,HK
3158890240,3158891263,DE
3158891264,3158891519,CA
-3158891520,3158891583,DE
+3158891520,3158891551,DE
+3158891552,3158891583,GB
3158891584,3158891647,RU
3158891648,3158891711,DE
3158891712,3158891775,RU
3158891776,3158892031,PL
-3158892032,3158892671,DE
+3158892032,3158892415,DE
+3158892416,3158892543,GB
+3158892544,3158892671,DE
3158892672,3158892799,RU
3158892800,3158893567,DE
3158893568,3158893823,GB
@@ -58192,12 +60591,9 @@
3158895424,3158895487,RU
3158895488,3158895551,MK
3158895552,3158895615,AE
-3158895616,3158895871,IN
-3158895872,3158896255,DE
+3158895616,3158896255,DE
3158896256,3158896383,IN
-3158896384,3158897151,DE
-3158897152,3158897407,BY
-3158897408,3158897503,DE
+3158896384,3158897503,DE
3158897504,3158897567,RU
3158897568,3158897631,DE
3158897632,3158897663,BZ
@@ -58205,8 +60601,7 @@
3158897728,3158897791,RU
3158897792,3158897855,DE
3158897856,3158897919,UA
-3158897920,3158898175,BY
-3158898176,3158898207,DE
+3158897920,3158898207,DE
3158898208,3158898271,CZ
3158898272,3158898335,RU
3158898336,3158898431,DE
@@ -58234,7 +60629,6 @@
3160150016,3160152063,LV
3160152064,3160154111,IT
3160154112,3160156159,DE
-3160156160,3160158207,AM
3160160256,3160162303,NL
3160162304,3160164351,FR
3160164352,3160166399,LV
@@ -58251,10 +60645,10 @@
3160186880,3160188927,EE
3160188928,3160190975,SE
3160190976,3160193023,RU
-3160193024,3160193279,IT
+3160193024,3160193279,A2
3160193280,3160193535,DE
-3160193536,3160193807,A2
-3160193808,3160193871,LY
+3160193536,3160193791,A2
+3160193792,3160193871,LY
3160193872,3160194047,A2
3160194048,3160194175,LY
3160194176,3160194543,A2
@@ -58354,7 +60748,6 @@
3160377344,3160379391,NL
3160379392,3160381439,TR
3160381440,3160383487,UA
-3160383488,3160385535,GB
3160385536,3160387583,NL
3160387584,3160389631,RS
3160389632,3160391679,RU
@@ -58411,10 +60804,14 @@
3162087424,3162095615,SK
3162095616,3162103807,GE
3162103808,3162104319,FR
-3162104320,3162111999,NL
+3162104320,3162108415,NL
+3162108416,3162108671,FR
+3162108672,3162108927,NL
+3162108928,3162109951,FR
+3162109952,3162111999,NL
3162112000,3162120191,PL
-3162120192,3162128895,GB
-3162128896,3162129407,NL
+3162120192,3162128383,GB
+3162128384,3162129407,NL
3162129408,3162129919,DE
3162129920,3162136575,NL
3162144768,3162152959,SE
@@ -58439,9 +60836,11 @@
3162300416,3162308607,RU
3162308608,3162316799,HR
3162316800,3162324991,PL
-3162324992,3162327039,GB
-3162327040,3162327296,CH
-3162327297,3162333183,GB
+3162324992,3162327039,IR
+3162327040,3162329087,CH
+3162329088,3162332671,GB
+3162332672,3162332927,NL
+3162332928,3162333183,DE
3162333184,3162341375,IT
3162341376,3162349567,PL
3162349568,3162357759,TR
@@ -58496,18 +60895,14 @@
3163162112,3163162143,TR
3163162144,3163162175,DE
3163162176,3163162207,US
-3163162208,3163162239,IT
+3163162208,3163162239,TR
3163162240,3163162271,CH
3163162272,3163162303,NL
-3163162304,3163162335,DE
-3163162336,3163162367,TR
-3163162368,3163162495,DE
-3163162496,3163162527,RU
-3163162528,3163163743,DE
-3163163744,3163163775,GB
-3163163776,3163163871,DE
+3163162304,3163162431,DE
+3163162432,3163162463,CY
+3163162464,3163163871,DE
3163163872,3163163903,RU
-3163163904,3163163935,DE
+3163163904,3163163935,GR
3163163936,3163163967,VG
3163163968,3163164543,DE
3163164544,3163164575,RU
@@ -58517,26 +60912,29 @@
3163165760,3163165791,PL
3163165792,3163166175,DE
3163166176,3163166207,US
-3163166208,3163166495,DE
+3163166208,3163166335,DE
+3163166336,3163166399,NL
+3163166400,3163166431,DE
+3163166432,3163166463,NL
+3163166464,3163166495,DE
3163166496,3163166527,RO
3163166528,3163166559,DE
3163166560,3163166591,HU
3163166592,3163167775,DE
3163167776,3163167807,GR
-3163167808,3163167839,TR
+3163167808,3163167839,NL
3163167840,3163167967,DE
3163167968,3163167999,TR
3163168000,3163168031,DE
-3163168032,3163168063,RU
-3163168064,3163168095,DE
+3163168032,3163168095,RU
3163168096,3163168127,TR
-3163168128,3163168159,IL
+3163168128,3163168159,SA
3163168160,3163168319,DE
3163168320,3163168351,DK
3163168352,3163168415,DE
3163168416,3163168447,CA
3163168448,3163168575,DE
-3163168576,3163168607,TR
+3163168576,3163168607,NL
3163168608,3163168671,DE
3163168672,3163168703,US
3163168704,3163169823,DE
@@ -58553,21 +60951,19 @@
3163170304,3163170335,IT
3163170336,3163170367,DE
3163170368,3163170399,IR
-3163170400,3163170431,CY
-3163170432,3163170495,DE
+3163170400,3163170495,DE
3163170496,3163170527,BR
3163170528,3163170591,DE
3163170592,3163170623,BR
-3163170624,3163172031,DE
-3163172032,3163172063,PL
-3163172064,3163172127,DE
-3163172128,3163172159,TR
+3163170624,3163171871,DE
+3163171872,3163171903,RO
+3163171904,3163172127,DE
+3163172128,3163172159,NL
3163172160,3163172191,RU
3163172192,3163172223,DE
-3163172224,3163172255,TR
+3163172224,3163172255,NL
3163172256,3163172287,PL
-3163172288,3163172319,TR
-3163172320,3163172351,NL
+3163172288,3163172351,NL
3163172352,3163172383,GB
3163172384,3163172607,DE
3163172608,3163172639,DK
@@ -58575,11 +60971,10 @@
3163172736,3163172767,GR
3163172768,3163174047,DE
3163174048,3163174079,DK
-3163174080,3163174335,DE
+3163174080,3163174303,DE
+3163174304,3163174335,IL
3163174336,3163174367,RU
-3163174368,3163174399,DE
-3163174400,3163174431,DK
-3163174432,3163174591,DE
+3163174368,3163174591,DE
3163174592,3163174623,SE
3163174624,3163174655,GB
3163174656,3163174687,DE
@@ -58587,16 +60982,16 @@
3163174720,3163174751,NL
3163174752,3163174783,US
3163174784,3163176127,DE
-3163176128,3163176159,TR
+3163176128,3163176159,NL
3163176160,3163176255,DE
3163176256,3163176287,UG
-3163176288,3163176479,DE
+3163176288,3163176319,DE
+3163176320,3163176351,US
+3163176352,3163176479,DE
3163176480,3163176543,GB
3163176544,3163176575,DE
3163176576,3163176607,GR
-3163176608,3163176671,DE
-3163176672,3163176703,PL
-3163176704,3163176767,DE
+3163176608,3163176767,DE
3163176768,3163176799,PL
3163176800,3163176895,DE
3163176896,3163176927,SE
@@ -58636,7 +61031,7 @@
3164946496,3164946499,IT
3164946500,3164946503,GB
3164946504,3164946507,BE
-3164946508,3164946511,FR
+3164946508,3164946511,CZ
3164946512,3164946527,ES
3164946528,3164946559,GB
3164946560,3164946783,FR
@@ -58646,10 +61041,22 @@
3164947044,3164947047,GB
3164947048,3164947063,FR
3164947064,3164947067,NL
-3164947068,3164947199,DE
+3164947068,3164947071,PL
+3164947072,3164947199,DE
3164947200,3164947455,FR
-3164947456,3164947711,DE
-3164947712,3164947743,FR
+3164947456,3164947519,PL
+3164947520,3164947551,ES
+3164947552,3164947583,DE
+3164947584,3164947599,FR
+3164947600,3164947615,GB
+3164947616,3164947627,FR
+3164947628,3164947635,ES
+3164947636,3164947639,DE
+3164947640,3164947643,IT
+3164947644,3164947647,FR
+3164947648,3164947651,BE
+3164947652,3164947655,PL
+3164947656,3164947743,FR
3164947744,3164947747,ES
3164947748,3164947751,BE
3164947752,3164947839,FR
@@ -58667,11 +61074,17 @@
3164949160,3164949163,PL
3164949164,3164949183,FR
3164949184,3164949215,DE
-3164949216,3164949231,NL
+3164949216,3164949219,PL
+3164949220,3164949223,FR
+3164949224,3164949231,PL
3164949232,3164949247,BE
3164949248,3164949279,FR
3164949280,3164949295,ES
-3164949296,3164949359,FR
+3164949296,3164949327,FR
+3164949328,3164949331,PL
+3164949332,3164949335,ES
+3164949336,3164949343,IE
+3164949344,3164949359,FR
3164949360,3164949363,BE
3164949364,3164949391,FR
3164949392,3164949395,ES
@@ -58680,7 +61093,7 @@
3164949472,3164949503,FR
3164949504,3164950015,BE
3164950016,3164950271,GB
-3164950272,3164950399,FR
+3164950272,3164950399,DE
3164950400,3164950407,ES
3164950408,3164950411,FR
3164950412,3164950415,CZ
@@ -58727,7 +61140,7 @@
3164951572,3164951575,CZ
3164951576,3164951583,NL
3164951584,3164951591,GB
-3164951592,3164951595,IE
+3164951592,3164951595,DE
3164951596,3164951615,FR
3164951616,3164951663,GB
3164951664,3164951671,PL
@@ -58820,21 +61233,21 @@
3164954512,3164954515,PL
3164954516,3164954519,IT
3164954520,3164954543,GB
-3164954544,3164954591,FR
+3164954544,3164954559,LT
+3164954560,3164954591,FR
3164954592,3164954623,PL
3164954624,3164956479,FR
3164956480,3164956543,GB
3164956544,3164958847,FR
3164958848,3164958911,IT
3164958912,3164958927,CH
-3164958928,3164958943,ES
-3164958944,3164958955,FR
+3164958928,3164958955,FR
3164958956,3164958959,GB
3164958960,3164959039,FR
3164959040,3164959135,DE
3164959136,3164959231,ES
3164959232,3164959247,FR
-3164959248,3164959255,BE
+3164959248,3164959255,ES
3164959256,3164959263,PL
3164959264,3164959295,GB
3164959296,3164959303,IT
@@ -58885,7 +61298,12 @@
3164961696,3164961727,GB
3164961728,3164961743,ES
3164961744,3164961759,PL
-3164961760,3164961855,FR
+3164961760,3164961763,ES
+3164961764,3164961767,IT
+3164961768,3164961775,BE
+3164961776,3164961783,FR
+3164961784,3164961791,ES
+3164961792,3164961855,FR
3164961856,3164961871,PL
3164961872,3164961887,IE
3164961888,3164961903,ES
@@ -58902,8 +61320,11 @@
3164962080,3164962095,ES
3164962096,3164962111,BE
3164962112,3164962143,GB
-3164962144,3164962175,FR
-3164962176,3164962239,NL
+3164962144,3164962203,FR
+3164962204,3164962207,PT
+3164962208,3164962211,GB
+3164962212,3164962215,PL
+3164962216,3164962239,FR
3164962240,3164962247,PL
3164962248,3164962251,FR
3164962252,3164962255,DE
@@ -58913,7 +61334,8 @@
3164962280,3164962283,DE
3164962284,3164962295,ES
3164962296,3164962303,PL
-3164962304,3164962335,NL
+3164962304,3164962319,NL
+3164962320,3164962335,FR
3164962336,3164962367,DE
3164962368,3164962431,PL
3164962432,3164962439,GB
@@ -58927,10 +61349,14 @@
3164962540,3164962543,CZ
3164962544,3164962623,FR
3164962624,3164962627,BE
-3164962628,3164962631,CH
+3164962628,3164962631,PL
3164962632,3164962655,FR
3164962656,3164962687,ES
-3164962688,3164962751,GB
+3164962688,3164962715,FR
+3164962716,3164962719,NL
+3164962720,3164962723,IT
+3164962724,3164962727,ES
+3164962728,3164962751,FR
3164962752,3164964863,ES
3164964864,3164966911,FI
3164966912,3164967039,FR
@@ -58979,7 +61405,8 @@
3164969144,3164969147,PT
3164969148,3164969183,GB
3164969184,3164969199,DE
-3164969200,3164969207,GB
+3164969200,3164969203,LT
+3164969204,3164969207,ES
3164969208,3164969211,IT
3164969212,3164969471,FR
3164969472,3164969727,PL
@@ -58991,7 +61418,13 @@
3164970212,3164970215,GB
3164970216,3164970219,PL
3164970220,3164970223,FR
-3164970224,3164970303,GB
+3164970224,3164970239,GB
+3164970240,3164970271,IE
+3164970272,3164970287,DE
+3164970288,3164970291,PL
+3164970292,3164970295,DE
+3164970296,3164970299,ES
+3164970300,3164970303,DE
3164970304,3164970335,ES
3164970336,3164970339,NL
3164970340,3164970343,BE
@@ -59091,16 +61524,32 @@
3164973884,3164973887,DE
3164973888,3164973919,ES
3164973920,3164973935,FR
-3164973936,3164973939,IT
+3164973936,3164973939,IE
3164973940,3164973943,FR
3164973944,3164973951,PL
-3164973952,3164974591,FR
-3164974592,3164975103,GB
+3164973952,3164974623,FR
+3164974624,3164974639,DE
+3164974640,3164974651,FR
+3164974652,3164974655,DE
+3164974656,3164974663,FR
+3164974664,3164974667,GB
+3164974668,3164974671,DE
+3164974672,3164974675,FR
+3164974676,3164974679,PT
+3164974680,3164974719,PL
+3164974720,3164974727,FR
+3164974728,3164974731,PL
+3164974732,3164974735,IT
+3164974736,3164974751,PL
+3164974752,3164974783,FR
+3164974784,3164974815,GB
+3164974816,3164974847,FR
+3164974848,3164975103,GB
3164975104,3164975167,CH
3164975168,3164975231,GB
3164975232,3164975299,IT
-3164975300,3164975307,ES
-3164975308,3164975311,GB
+3164975300,3164975303,ES
+3164975304,3164975311,IT
3164975312,3164975343,ES
3164975344,3164975351,GB
3164975352,3164975355,NL
@@ -59196,7 +61645,9 @@
3166306304,3166437375,RU
3166437376,3166568447,BE
3166699520,3166961663,DE
-3167223808,3167748095,NL
+3167223808,3167594831,NL
+3167594832,3167594839,A2
+3167594840,3167748095,NL
3167748096,3167940095,RO
3167940096,3167940351,CY
3167940352,3168092159,RO
@@ -59209,18 +61660,18 @@
3168116736,3168120831,RO
3168120832,3168124927,GB
3168124928,3168129023,RO
-3168129024,3168141311,GB
-3168141312,3168157695,RO
+3168129024,3168137215,GB
+3168137216,3168157695,RO
3168157696,3168178175,GB
3168178176,3168182271,RO
3168182272,3168194559,GB
-3168194560,3168198655,RO
-3168198656,3168202751,GB
-3168202752,3168207103,RO
+3168194560,3168207103,RO
3168207104,3168207359,CY
3168207360,3168214527,RO
3168214528,3168214783,CY
-3168214784,3168272383,RO
+3168214784,3168223743,RO
+3168223744,3168224255,MD
+3168224256,3168272383,RO
3168272384,3168534527,IT
3168534528,3168796671,GB
3168796672,3168829439,FR
@@ -59261,7 +61712,9 @@
3169281024,3169281279,US
3169281280,3169288191,KW
3169288192,3169320959,UA
-3169845248,3169965823,RO
+3169845248,3169958911,RO
+3169958912,3169959423,MD
+3169959424,3169965823,RO
3169965824,3169966079,GB
3169966080,3169976319,RO
3169976320,3170111487,RU
@@ -59499,6 +61952,7 @@
3194601472,3194602495,AN
3194602496,3194605567,AR
3194609664,3194613759,AR
+3194613760,3194617855,PE
3194617856,3194626047,NI
3194634240,3194638335,CR
3194642432,3194646527,AR
@@ -59531,25 +61985,27 @@
3194863616,3194871807,HN
3194880000,3194896383,DO
3194896384,3194904575,CO
-3194912768,3194920959,CL
+3194912768,3194929151,CL
3194929152,3194937343,EC
3194945536,3194953727,GT
3194961920,3194966015,EC
3194970112,3194974207,PA
3194974208,3194976255,AR
+3194976256,3194977279,VE
+3194977280,3194978303,AR
3194978304,3194994687,PA
3194994688,3195002879,AR
-3195011072,3195021311,AR
+3195011072,3195023359,AR
3195023360,3195024383,CL
3195024384,3195025407,UY
3195025408,3195035647,AR
-3195043840,3195052031,CO
+3195043840,3195060223,CO
3195060224,3195064319,UY
3195068416,3195072511,AN
3195076608,3195084799,CL
3195092992,3195097087,AR
3195101184,3195105279,CR
-3195109376,3195117567,AR
+3195109376,3195125759,AR
3195125760,3195133951,PE
3195142144,3195150335,VE
3195158528,3195183103,AR
@@ -59559,12 +62015,14 @@
3195207680,3195211775,GT
3195215872,3195224063,AR
3195224064,3195232255,PA
+3195256832,3195265023,AR
3195273216,3195535359,PE
3195535360,3195539455,SV
3195543552,3195547647,PE
-3195551744,3195555839,EC
+3195551744,3195559935,EC
3195559936,3195564031,AR
3195568128,3195572223,CO
+3195572224,3195576319,AR
3195576320,3195580415,CL
3195584512,3195592703,HT
3195592704,3195596799,PA
@@ -59630,7 +62088,7 @@
3198910464,3198926847,CL
3198943232,3199500799,AR
3199500800,3199501311,US
-3199501312,3199533055,AR
+3199501312,3199516671,AR
3199533056,3199549439,BO
3199565824,3199582207,NI
3199598592,3199631359,CO
@@ -59650,6 +62108,11 @@
3201302528,3201433599,CL
3201433600,3201499135,AR
3201499136,3201515519,CL
+3201531904,3201540095,AR
+3201540096,3201544191,CL
+3201556480,3201560575,BO
+3201562624,3201563647,CL
+3201563648,3201564671,PA
3201564672,3201630207,NI
3201630208,3201695743,TT
3201695744,3201761279,EC
@@ -61177,7 +63640,7 @@
3228106752,3228109311,US
3228109312,3228109567,NZ
3228109568,3228125951,US
-3228125952,3228126207,DE
+3228125952,3228126207,RU
3228126208,3228133375,US
3228133376,3228134655,CA
3228134656,3228150271,US
@@ -61390,9 +63853,9 @@
3229120768,3229151487,US
3229151488,3229151743,SE
3229151744,3229155327,US
-3229155328,3229177407,SE
-3229177408,3229177423,JP
-3229177424,3229219583,SE
+3229155328,3229171455,SE
+3229171456,3229171711,MT
+3229171712,3229219583,SE
3229219584,3229219839,EE
3229219840,3229220863,SE
3229220864,3229245439,GB
@@ -63572,6 +66035,7 @@
3239446016,3239446271,RU
3239446272,3239446527,FR
3239446528,3239451647,DE
+3239451648,3239451903,PL
3239451904,3239452159,DE
3239452160,3239452415,CY
3239452416,3239452671,HR
@@ -63615,6 +66079,7 @@
3239488256,3239488511,CH
3239488512,3239488767,KW
3239488768,3239489023,RO
+3239489024,3239489279,DE
3239489280,3239489535,PL
3239489536,3239501823,DE
3239501824,3239505919,BE
@@ -63764,6 +66229,7 @@
3239691776,3239692031,EU
3239692032,3239692287,AT
3239692288,3239697407,DE
+3239697408,3239697663,HR
3239697664,3239697919,RU
3239697920,3239698431,PL
3239698432,3239706367,DE
@@ -63820,9 +66286,9 @@
3239761408,3239761663,RU
3239761664,3239761919,PL
3239761920,3239762175,BG
+3239762176,3239762431,RU
3239762432,3239762687,DK
3239762688,3239762943,RO
-3239762944,3239763199,PL
3239763200,3239763455,SE
3239763456,3239763967,GB
3239763968,3239772159,DE
@@ -63849,7 +66315,7 @@
3239788544,3239789055,EU
3239789056,3239789567,RU
3239789568,3239790079,FR
-3239790080,3239791103,RO
+3239790080,3239790591,RO
3239791104,3239792127,CH
3239792128,3239792639,FR
3239792640,3239793151,UA
@@ -64133,7 +66599,7 @@
3240199168,3240199679,HU
3240199680,3240200191,NL
3240200192,3240200703,RO
-3240200704,3240201215,GB
+3240200704,3240201215,SE
3240201216,3240201727,RO
3240201728,3240202239,CH
3240202240,3240202751,RU
@@ -64565,11 +67031,13 @@
3240859648,3240861183,CH
3240861184,3240861695,AT
3240861696,3240866815,IT
+3240866816,3240867071,RU
3240867072,3240867327,PL
3240867328,3240867583,RU
3240867584,3240867839,CH
3240867840,3240873983,IT
3240873984,3240874495,RU
+3240874496,3240875007,UA
3240875008,3240875519,AT
3240875520,3240876031,FR
3240876032,3240876543,DK
@@ -64804,6 +67272,7 @@
3241865728,3241865983,CH
3241865984,3241866239,RO
3241866240,3241866751,DE
+3241866752,3241867007,UA
3241867008,3241867263,FR
3241867264,3241867519,UA
3241867520,3241867775,PL
@@ -65048,12 +67517,13 @@
3244823296,3244823551,FR
3244823552,3244823807,GE
3244823808,3244824063,RO
-3244824064,3244824319,MT
+3244824064,3244824319,UA
3244824320,3244824575,SI
3244824576,3244824831,RU
3244824832,3244825087,GB
3244825088,3244825343,DE
-3244825344,3244826111,RU
+3244825344,3244825599,UA
+3244825600,3244826111,RU
3244826112,3244826367,RO
3244826368,3244826623,CH
3244826624,3244826879,DE
@@ -65137,7 +67607,7 @@
3244847872,3244848127,IL
3244848128,3244848383,CH
3244848384,3244848639,IL
-3244848640,3244848895,HU
+3244848640,3244848895,DE
3244848896,3244849151,IL
3244849152,3244849407,AT
3244849408,3244849663,RO
@@ -65261,7 +67731,7 @@
3244883200,3244883455,UA
3244883456,3244883711,CZ
3244883712,3244883967,NL
-3244883968,3244884223,MD
+3244883968,3244884223,UA
3244884224,3244884479,FR
3244884480,3244884735,IR
3244884736,3244884991,NL
@@ -65480,6 +67950,7 @@
3244942848,3244943103,DE
3244943104,3244943359,GB
3244943360,3244943615,FR
+3244943616,3244943871,NL
3244943872,3244944127,TR
3244944128,3244944639,RU
3244944640,3244944895,GE
@@ -65746,7 +68217,6 @@
3245168896,3245169151,RU
3245169152,3245169407,IT
3245169408,3245169919,PL
-3245169920,3245170175,UA
3245170176,3245170431,GB
3245170432,3245170687,CH
3245170688,3245171711,DE
@@ -65810,7 +68280,6 @@
3245207552,3245208063,UA
3245208064,3245208575,DE
3245208576,3245209087,PL
-3245209088,3245209599,RU
3245209600,3245210111,UA
3245210112,3245210623,FR
3245210624,3245211135,HU
@@ -65994,7 +68463,7 @@
3245319680,3245319935,PL
3245319936,3245320191,DE
3245320192,3245320447,GB
-3245320704,3245320959,DE
+3245320448,3245320959,DE
3245320960,3245321215,IE
3245321216,3245321471,NL
3245321472,3245321727,UA
@@ -66063,7 +68532,9 @@
3245904200,3245904207,GB
3245904208,3245906367,IE
3245906368,3245906431,GB
-3245906432,3245910831,IE
+3245906432,3245909567,IE
+3245909568,3245909631,US
+3245909632,3245910831,IE
3245910832,3245910847,GB
3245910848,3245921279,IE
3245921280,3245921535,BE
@@ -66501,7 +68972,6 @@
3247347968,3247348223,HU
3247348224,3247348991,FI
3247348992,3247349247,DE
-3247349248,3247349759,FI
3247349760,3247353855,SE
3247353856,3247362047,FI
3247362048,3247362303,RO
@@ -66644,7 +69114,7 @@
3248488704,3248491519,NO
3248491520,3248492031,RU
3248492032,3248496895,NO
-3248496896,3248497151,IL
+3248496896,3248497151,US
3248497152,3248498431,NO
3248498432,3248498687,DE
3248498688,3248513279,NO
@@ -66851,7 +69321,7 @@
3249136128,3249137151,RU
3249137152,3249137663,FR
3249137664,3249138175,PL
-3249138176,3249138687,JM
+3249138176,3249138687,UA
3249139200,3249139711,RU
3249139712,3249140223,UA
3249140224,3249140735,IT
@@ -66900,7 +69370,8 @@
3249698560,3249698815,HU
3249698816,3249699839,GB
3249699840,3249700863,UA
-3249700864,3249701887,SE
+3249700864,3249701631,SE
+3249701632,3249701887,RU
3249701888,3249702143,PL
3249702144,3249702399,FI
3249702400,3249702655,FR
@@ -67096,7 +69567,6 @@
3250416128,3250417663,DE
3250417664,3250418175,IT
3250418176,3250418687,DE
-3250418688,3250419199,PL
3250419200,3250419711,NO
3250419712,3250420223,RU
3250420224,3250420735,IR
@@ -67115,7 +69585,7 @@
3250425856,3250426111,LT
3250426112,3250426367,NO
3250426368,3250426623,AT
-3250426624,3250426879,BE
+3250426624,3250426879,FR
3250426880,3250427135,JO
3250427136,3250427391,NL
3250427392,3250429951,DE
@@ -67260,7 +69730,6 @@
3251122176,3251122687,CH
3251122688,3251123199,PL
3251123200,3251123711,FR
-3251123712,3251124223,RO
3251124224,3251124735,NL
3251124736,3251125247,FR
3251125248,3251125759,BE
@@ -67590,6 +70059,7 @@
3251265536,3251267839,NL
3251267840,3251268351,GB
3251268352,3251268607,NL
+3251268608,3251268863,BG
3251268864,3251269119,NL
3251269120,3251269375,DK
3251269376,3251269631,FR
@@ -67656,6 +70126,7 @@
3251355648,3251356159,GB
3251356160,3251356671,AT
3251356672,3251357183,EE
+3251357184,3251357695,BG
3251357696,3251358207,ES
3251358208,3251358719,RU
3251358720,3251359231,RO
@@ -67804,9 +70275,8 @@
3252407584,3252407599,NG
3252407600,3252407615,BJ
3252407616,3252407711,NO
-3252407712,3252407743,NG
-3252407744,3252407751,NO
-3252407752,3252407759,AO
+3252407712,3252407727,NG
+3252407728,3252407759,NO
3252407760,3252407767,NE
3252407768,3252407775,CD
3252407776,3252407791,GH
@@ -67815,21 +70285,16 @@
3252408000,3252408159,NO
3252408160,3252408191,GQ
3252408192,3252408319,NO
-3252408320,3252408335,TR
-3252408336,3252408343,GN
-3252408344,3252408351,LT
-3252408352,3252408367,GN
+3252408320,3252408335,LT
+3252408336,3252408367,GN
3252408368,3252408375,NG
3252408376,3252408383,LT
3252408384,3252408391,BI
3252408392,3252408415,LT
3252408416,3252408479,NO
-3252408480,3252408495,FI
-3252408496,3252408511,LT
+3252408480,3252408511,LT
3252408512,3252408519,AF
-3252408520,3252408543,LT
-3252408544,3252408551,AF
-3252408552,3252408639,LT
+3252408520,3252408639,LT
3252408640,3252408671,CF
3252408672,3252408703,SO
3252408704,3252408735,NG
@@ -67853,7 +70318,11 @@
3252409184,3252409191,UG
3252409192,3252409199,ZW
3252409200,3252409207,TZ
-3252409208,3252409263,LT
+3252409208,3252409215,LT
+3252409216,3252409223,BW
+3252409224,3252409231,LT
+3252409232,3252409247,UG
+3252409248,3252409263,LT
3252409264,3252409343,SO
3252409344,3252409375,TD
3252409376,3252409407,LT
@@ -67866,13 +70335,12 @@
3252409600,3252409615,MA
3252409616,3252409631,LT
3252409632,3252409647,AO
-3252409648,3252409855,LT
-3252409856,3252410111,BW
-3252410112,3252410367,LT
-3252410368,3252410391,BW
+3252409648,3252410375,LT
+3252410376,3252410391,BW
3252410392,3252410431,LT
3252410432,3252410463,BI
-3252410464,3252410623,LT
+3252410464,3252410495,LT
+3252410496,3252410623,BI
3252410624,3252410751,ZW
3252410752,3252411135,LT
3252411136,3252411167,IQ
@@ -67898,16 +70366,21 @@
3252414512,3252414527,MR
3252414528,3252414591,LT
3252414592,3252414599,GH
-3252414600,3252414623,LT
+3252414600,3252414607,LT
+3252414608,3252414623,ER
3252414624,3252414639,TZ
3252414640,3252414647,GH
3252414648,3252414655,NE
3252414656,3252414719,ER
-3252414720,3252414975,LT
-3252414976,3252415007,IQ
+3252414720,3252414983,LT
+3252414984,3252415007,IQ
3252415008,3252415015,LT
-3252415016,3252415119,IQ
-3252415120,3252415551,LT
+3252415016,3252415127,IQ
+3252415128,3252415135,LT
+3252415136,3252415151,IQ
+3252415152,3252415199,LT
+3252415200,3252415231,IQ
+3252415232,3252415551,LT
3252415552,3252415567,NG
3252415568,3252415743,LT
3252415744,3252415775,GB
@@ -67919,9 +70392,9 @@
3252416960,3252417023,GN
3252417024,3252417279,LT
3252417280,3252417287,IQ
-3252417288,3252417359,AF
-3252417360,3252417535,LT
-3252417536,3252417855,NG
+3252417288,3252417375,AF
+3252417376,3252417791,LT
+3252417792,3252417855,NG
3252417856,3252417919,LT
3252417920,3252417935,MW
3252417936,3252417951,ZM
@@ -67942,10 +70415,9 @@
3252419168,3252419199,CD
3252419200,3252419215,LT
3252419216,3252419247,GN
-3252419248,3252419263,SN
+3252419248,3252419263,LT
3252419264,3252419279,TZ
-3252419280,3252419295,LT
-3252419296,3252419311,SN
+3252419280,3252419311,LT
3252419312,3252419327,ZM
3252419328,3252419343,GH
3252419344,3252419359,LT
@@ -67953,7 +70425,9 @@
3252419424,3252419839,LT
3252419840,3252419911,IQ
3252419912,3252419919,LT
-3252419920,3252419951,IQ
+3252419920,3252419927,IQ
+3252419928,3252419935,LT
+3252419936,3252419951,IQ
3252419952,3252419991,LT
3252419992,3252420007,IQ
3252420008,3252420031,LT
@@ -67976,12 +70450,10 @@
3252420336,3252420367,LT
3252420368,3252420415,IQ
3252420416,3252420431,GB
-3252420432,3252420447,IQ
-3252420448,3252420455,LT
-3252420456,3252420463,IQ
+3252420432,3252420463,IQ
3252420464,3252420471,AF
-3252420472,3252420575,LT
-3252420576,3252420591,IQ
+3252420472,3252420583,LT
+3252420584,3252420591,IQ
3252420592,3252421119,LT
3252421120,3252421631,NO
3252421632,3252424703,LT
@@ -67999,13 +70471,15 @@
3252425472,3252425543,AO
3252425544,3252425551,LT
3252425552,3252425575,AO
-3252425576,3252426239,LT
+3252425576,3252425727,LT
+3252425728,3252425983,A2
+3252425984,3252426239,LT
3252426240,3252426751,BW
3252426752,3252427263,MZ
3252427264,3252427519,NG
3252427520,3252427775,LT
3252427776,3252428287,MW
-3252428288,3252428351,NG
+3252428288,3252428351,LT
3252428352,3252428383,AO
3252428384,3252428415,LT
3252428416,3252428447,KE
@@ -68035,15 +70509,15 @@
3252434688,3252434703,GH
3252434704,3252434711,TZ
3252434712,3252434719,LT
-3252434720,3252434735,GH
-3252434736,3252435199,LT
+3252434720,3252434743,GH
+3252434744,3252435199,LT
3252435200,3252435247,TZ
3252435248,3252435295,LT
3252435296,3252435311,TZ
3252435312,3252435319,LT
3252435320,3252435327,MZ
3252435328,3252435343,CD
-3252435344,3252435359,LT
+3252435344,3252435359,BF
3252435360,3252435375,CD
3252435376,3252435415,GN
3252435416,3252435423,CD
@@ -68066,14 +70540,14 @@
3252436320,3252436335,LT
3252436336,3252436351,ZM
3252436352,3252436383,GN
-3252436384,3252436399,SN
+3252436384,3252436399,LR
3252436400,3252436447,LT
3252436448,3252436479,ER
3252436480,3252436991,LT
3252436992,3252437503,NG
3252437504,3252438015,LT
3252438016,3252438271,TR
-3252438272,3252438527,MD
+3252438272,3252438527,LT
3252438528,3252438783,CM
3252438784,3252439039,LT
3252439040,3252439055,BJ
@@ -68113,7 +70587,9 @@
3252450880,3252450911,NO
3252450912,3252451071,LT
3252451072,3252451327,CH
-3252451328,3252451839,LT
+3252451328,3252451583,LT
+3252451584,3252451599,GM
+3252451600,3252451839,LT
3252451840,3252451855,NO
3252451856,3252451967,LT
3252451968,3252451999,NO
@@ -68137,9 +70613,7 @@
3252452504,3252452511,SD
3252452512,3252452607,LT
3252452608,3252452735,TD
-3252452736,3252452863,LT
-3252452864,3252452879,TZ
-3252452880,3252453119,LT
+3252452736,3252453119,LT
3252453120,3252453151,NG
3252453152,3252453247,LT
3252453248,3252453271,NG
@@ -68185,7 +70659,11 @@
3252505344,3252505855,US
3252505856,3252507135,SE
3252507136,3252507647,EU
-3252507648,3252509951,GB
+3252507648,3252508415,GB
+3252508416,3252508671,BE
+3252508672,3252508927,GB
+3252508928,3252509183,BE
+3252509184,3252509951,GB
3252509952,3252510719,CH
3252510720,3252514815,FR
3252514816,3252515071,SI
@@ -68588,7 +71066,9 @@
3253985280,3253993471,GB
3253993472,3254067199,BE
3254067200,3254069247,CZ
-3254069248,3254124543,BE
+3254069248,3254077439,BE
+3254077440,3254083583,HU
+3254083584,3254124543,BE
3254124544,3254156799,CH
3254156800,3254157055,LI
3254157056,3254177279,CH
@@ -68764,7 +71244,7 @@
3254703616,3254704127,NL
3254704128,3254705663,UA
3254705664,3254706175,GR
-3254706176,3254706687,RU
+3254706176,3254707199,RU
3254707200,3254707711,TR
3254707712,3254708223,RO
3254708224,3254708735,UA
@@ -68794,6 +71274,7 @@
3254784000,3254784255,IT
3254784256,3254784511,CH
3254784512,3254785279,LT
+3254785280,3254785535,KZ
3254796288,3254797311,SE
3254797312,3254798335,RU
3254798336,3254799359,AT
@@ -69122,9 +71603,13 @@
3255243680,3255243711,LU
3255243712,3255245599,BE
3255245600,3255245631,LU
-3255245632,3255245687,BE
+3255245632,3255245655,BE
+3255245656,3255245663,LU
+3255245664,3255245687,BE
3255245688,3255245695,LU
-3255245696,3255247455,BE
+3255245696,3255246591,BE
+3255246592,3255246623,LU
+3255246624,3255247455,BE
3255247456,3255247487,LU
3255247488,3255247615,BE
3255247616,3255247631,LU
@@ -69198,9 +71683,7 @@
3255278048,3255278063,LU
3255278064,3255278607,BE
3255278608,3255278623,LU
-3255278624,3255278719,BE
-3255278720,3255278751,LU
-3255278752,3255279007,BE
+3255278624,3255279007,BE
3255279008,3255279039,LU
3255279040,3255279087,BE
3255279088,3255279103,LU
@@ -69212,7 +71695,9 @@
3255280048,3255280055,LU
3255280056,3255281407,BE
3255281408,3255281439,LU
-3255281440,3255283415,BE
+3255281440,3255281759,BE
+3255281760,3255281791,LU
+3255281792,3255283415,BE
3255283416,3255283423,LU
3255283424,3255283927,BE
3255283928,3255283931,LU
@@ -69308,7 +71793,7 @@
3255366144,3255367167,DK
3255367168,3255367679,RU
3255367680,3255368191,UA
-3255368192,3255368703,MD
+3255368192,3255368703,LV
3255368704,3255369215,CZ
3255369216,3255369727,GB
3255369728,3255370239,LU
@@ -69475,7 +71960,7 @@
3255566336,3255574527,SE
3255574528,3255578623,CZ
3255578624,3255582719,SE
-3255590912,3255599103,UA
+3255582720,3255599103,UA
3255599104,3255615487,CH
3255615488,3255623679,DE
3255623680,3255631871,BG
@@ -69557,6 +72042,7 @@
3256414720,3256415231,DE
3256415232,3256415743,PL
3256415744,3256416255,UA
+3256416256,3256416767,RS
3256416768,3256417279,GB
3256417280,3256417791,NO
3256417792,3256418303,GB
@@ -69653,8 +72139,8 @@
3256698624,3256698879,GB
3256698880,3256699135,DE
3256699136,3256699391,NL
-3256699392,3256699903,GB
-3256699904,3256701183,EU
+3256699392,3256700415,GB
+3256700416,3256701183,EU
3256701184,3256701439,BE
3256701440,3256701695,GB
3256701696,3256705279,EU
@@ -69741,7 +72227,9 @@
3257011200,3257011455,BG
3257011456,3257058815,GB
3257058816,3257059071,PL
-3257059072,3257144831,GB
+3257059072,3257139199,GB
+3257139200,3257139455,DK
+3257139456,3257144831,GB
3257144832,3257145087,FR
3257145088,3257180159,GB
3257180160,3257180415,TR
@@ -69906,6 +72394,7 @@
3257561088,3257561599,UA
3257561600,3257562111,DE
3257562112,3257563647,PL
+3257563648,3257564159,NL
3257564160,3257564671,GB
3257564672,3257565183,RO
3257565184,3257570303,CY
@@ -71008,6 +73497,7 @@
3258903040,3258903295,FR
3258903296,3258903551,GB
3258903552,3258903807,DE
+3258903808,3258904063,AT
3258904064,3258941439,GB
3258941440,3258943487,PL
3258943488,3258944511,BG
@@ -71029,9 +73519,7 @@
3259032440,3259032443,ES
3259032444,3259032551,DE
3259032552,3259032559,IT
-3259032560,3259032831,DE
-3259032832,3259032879,GB
-3259032880,3259034319,DE
+3259032560,3259034319,DE
3259034320,3259034327,GB
3259034328,3259035447,DE
3259035448,3259035455,IT
@@ -71327,6 +73815,7 @@
3260481536,3260547071,RU
3260547072,3260547327,DE
3260547328,3260547583,UA
+3260547584,3260547839,NL
3260547840,3260548095,PL
3260548096,3260548351,IE
3260548352,3260548607,DK
@@ -71375,6 +73864,7 @@
3260600320,3260601343,RU
3260601344,3260601855,CH
3260601856,3260602367,PL
+3260602368,3260602879,DK
3260602880,3260603903,UA
3260603904,3260604415,FR
3260604416,3260604927,PL
@@ -71587,47 +74077,41 @@
3262027776,3262029823,FI
3262029824,3262030847,US
3262030848,3262031871,FR
-3262031872,3262033919,FI
-3262033920,3262033935,AX
-3262033936,3262033951,FI
-3262033952,3262033983,AX
-3262033984,3262033991,FI
-3262033992,3262033999,AX
-3262034000,3262034015,FI
-3262034016,3262034039,AX
-3262034040,3262034111,FI
-3262034112,3262034127,AX
-3262034128,3262034143,FI
-3262034144,3262034295,AX
-3262034296,3262034303,FI
-3262034304,3262034447,AX
-3262034448,3262034451,FI
-3262034452,3262034463,AX
-3262034464,3262034495,FI
-3262034496,3262034511,AX
-3262034512,3262034519,FI
-3262034520,3262034655,AX
-3262034656,3262034687,FI
-3262034688,3262034735,AX
-3262034736,3262034767,FI
-3262034768,3262034879,AX
-3262034880,3262034943,FI
-3262034944,3262035967,AX
-3262035968,3262036111,FI
-3262036112,3262036119,AX
-3262036120,3262036127,FI
-3262036128,3262036159,AX
-3262036160,3262036223,FI
-3262036224,3262036335,AX
-3262036336,3262036351,FI
-3262036352,3262036439,AX
-3262036440,3262036447,FI
-3262036448,3262036623,AX
-3262036624,3262036643,FI
-3262036644,3262036671,AX
-3262036672,3262036687,FI
-3262036688,3262036703,AX
-3262036704,3262036719,FI
+3262031872,3262034047,FI
+3262034048,3262034119,AX
+3262034120,3262034123,FI
+3262034124,3262034127,AX
+3262034128,3262034431,FI
+3262034432,3262034447,AX
+3262034448,3262034455,FI
+3262034456,3262034463,AX
+3262034464,3262034527,FI
+3262034528,3262034559,AX
+3262034560,3262034687,FI
+3262034688,3262034719,AX
+3262034720,3262034783,FI
+3262034784,3262034791,AX
+3262034792,3262034839,FI
+3262034840,3262034847,AX
+3262034848,3262034943,FI
+3262034944,3262035455,AX
+3262035456,3262035487,FI
+3262035488,3262035551,AX
+3262035552,3262036143,FI
+3262036144,3262036151,AX
+3262036152,3262036287,FI
+3262036288,3262036303,AX
+3262036304,3262036311,FI
+3262036312,3262036335,AX
+3262036336,3262036367,FI
+3262036368,3262036383,AX
+3262036384,3262036415,FI
+3262036416,3262036431,AX
+3262036432,3262036463,FI
+3262036464,3262036479,AX
+3262036480,3262036607,FI
+3262036608,3262036615,AX
+3262036616,3262036719,FI
3262036720,3262038015,AX
3262038016,3262038271,FR
3262038272,3262038527,RU
@@ -71640,8 +74124,7 @@
3262040064,3262040319,PL
3262040320,3262040575,ES
3262040576,3262040831,RU
-3262040832,3262041087,GB
-3262041088,3262041343,HU
+3262040832,3262041343,GB
3262041344,3262041599,BG
3262041600,3262041855,DK
3262041856,3262042367,FR
@@ -71681,23 +74164,35 @@
3262096128,3262096383,AX
3262096384,3262099199,FI
3262099200,3262099455,NL
-3262099456,3262106111,FI
-3262106112,3262106623,AX
-3262106624,3262108671,FI
+3262099456,3262108671,FI
3262108672,3262108927,RU
3262108928,3262114047,FI
3262114048,3262114303,SE
3262114304,3262115071,FI
3262115072,3262115327,RU
3262115328,3262119935,FI
-3262119936,3262122367,AX
-3262122368,3262122383,FI
-3262122384,3262122399,AX
-3262122400,3262122431,FI
-3262122432,3262123519,AX
-3262123520,3262123527,FI
-3262123528,3262123775,AX
-3262123776,3262124031,FI
+3262119936,3262120447,AX
+3262120448,3262120703,FI
+3262120704,3262121599,AX
+3262121600,3262121663,FI
+3262121664,3262121727,AX
+3262121728,3262121983,FI
+3262121984,3262122007,AX
+3262122008,3262122015,FI
+3262122016,3262122039,AX
+3262122040,3262122143,FI
+3262122144,3262122159,AX
+3262122160,3262122239,FI
+3262122240,3262122367,AX
+3262122368,3262122431,FI
+3262122432,3262122455,AX
+3262122456,3262122463,FI
+3262122464,3262122591,AX
+3262122592,3262122631,FI
+3262122632,3262122639,AX
+3262122640,3262122751,FI
+3262122752,3262122815,AX
+3262122816,3262124031,FI
3262124032,3262128127,DE
3262128128,3262136319,GB
3262136320,3262137599,EU
@@ -71827,9 +74322,8 @@
3262447616,3262460415,PT
3262460416,3262460543,UA
3262460544,3262460671,RU
-3262460672,3262460799,AE
+3262460672,3262460927,AE
3262460928,3262461055,HU
-3262461056,3262461183,LV
3262461184,3262461311,SN
3262461312,3262461439,NO
3262461440,3262461567,DE
@@ -71860,7 +74354,9 @@
3262472336,3262472339,US
3262472340,3262472351,DE
3262472352,3262472355,NL
-3262472356,3262472359,ES
+3262472356,3262472356,ES
+3262472357,3262472358,CH
+3262472359,3262472359,ES
3262472360,3262472363,NL
3262472364,3262472367,GB
3262472368,3262472371,NL
@@ -72038,9 +74534,7 @@
3262473484,3262473484,VE
3262473485,3262473485,US
3262473486,3262473486,CA
-3262473487,3262473513,US
-3262473514,3262473514,PR
-3262473515,3262473516,US
+3262473487,3262473516,US
3262473517,3262473517,CN
3262473518,3262473526,US
3262473527,3262473527,CN
@@ -73133,8 +75627,7 @@
3262478510,3262478513,DE
3262478514,3262478514,SE
3262478515,3262478515,PT
-3262478516,3262478516,ES
-3262478517,3262478519,DE
+3262478516,3262478519,DE
3262478520,3262478520,CH
3262478521,3262478521,NL
3262478522,3262478522,QA
@@ -73406,8 +75899,7 @@
3262478913,3262478913,FR
3262478914,3262478914,DE
3262478915,3262478915,NL
-3262478916,3262478919,DE
-3262478920,3262478920,ZA
+3262478916,3262478920,DE
3262478921,3262478921,AT
3262478922,3262478924,DE
3262478925,3262478925,NL
@@ -73775,8 +76267,7 @@
3262479427,3262479427,IT
3262479428,3262479429,FR
3262479430,3262479430,GB
-3262479431,3262479432,DE
-3262479433,3262479433,ZA
+3262479431,3262479433,DE
3262479434,3262479434,IT
3262479435,3262479437,DE
3262479438,3262479438,IT
@@ -74669,8 +77160,8 @@
3263499008,3263499775,EU
3263499776,3263500031,FR
3263500032,3263500287,GB
-3263500288,3263500799,EU
-3263500800,3263501341,GB
+3263500288,3263501311,EU
+3263501312,3263501341,GB
3263501342,3263501343,EU
3263501344,3263501439,GB
3263501440,3263501503,US
@@ -74679,27 +77170,22 @@
3263501528,3263501535,GB
3263501536,3263501551,DE
3263501552,3263501823,GB
-3263501824,3263502079,EG
-3263502080,3263503103,EU
-3263503104,3263503167,DE
+3263501824,3263503135,EU
+3263503136,3263503167,DE
3263503168,3263503199,EU
3263503200,3263503267,DE
3263503268,3263503271,EU
3263503272,3263503279,DE
3263503280,3263503295,EU
3263503296,3263503359,DE
-3263503360,3263503871,EU
-3263503872,3263504127,GB
+3263503360,3263504127,EU
3263504128,3263504255,EG
3263504256,3263506687,EU
3263506688,3263506815,DE
3263506816,3263506943,US
3263506944,3263507199,EU
3263507200,3263507455,US
-3263507456,3263508223,EU
-3263508224,3263508479,GB
-3263508480,3263509503,EU
-3263509504,3263509759,SE
+3263507456,3263509759,EU
3263509760,3263509791,GB
3263509792,3263509807,IE
3263509808,3263509831,GB
@@ -74717,9 +77203,7 @@
3263512064,3263512311,GB
3263512312,3263513343,EU
3263513344,3263513599,US
-3263513600,3263513855,EU
-3263513856,3263514111,RU
-3263514112,3263516671,EU
+3263513600,3263516671,EU
3263516672,3263516927,US
3263516928,3263517183,GB
3263517184,3263517695,EU
@@ -74727,16 +77211,12 @@
3263517952,3263518463,GB
3263518464,3263518719,FR
3263518720,3263518751,IR
-3263518752,3263518975,EU
-3263518976,3263519231,GB
-3263519232,3263519743,EU
+3263518752,3263519743,EU
3263519744,3263519759,GB
3263519760,3263520255,EU
3263520256,3263520511,FR
3263520512,3263520767,US
-3263520768,3263521791,EU
-3263521792,3263522047,GB
-3263522048,3263523071,EU
+3263520768,3263523071,EU
3263523072,3263523583,DE
3263523584,3263525759,EU
3263525760,3263525887,DE
@@ -74745,18 +77225,14 @@
3263527680,3263527935,DE
3263527936,3263528191,EU
3263528192,3263528447,FR
-3263528448,3263528703,EU
-3263528704,3263528959,GB
-3263528960,3263530495,EU
+3263528448,3263530495,EU
3263530496,3263530751,GB
3263530752,3263531519,EU
3263531520,3263531535,DE
3263531536,3263531551,EU
3263531552,3263531775,DE
-3263531776,3263532543,EU
-3263532544,3263532799,GB
-3263532800,3263537663,EU
-3263537664,3263538431,TR
+3263531776,3263538175,EU
+3263538176,3263538431,TR
3263538432,3263540223,EU
3263540224,3263540479,TR
3263540480,3263540735,GB
@@ -74767,13 +77243,11 @@
3263557888,3263558655,EU
3263558656,3263558911,TR
3263558912,3263559679,GB
-3263559680,3263560191,TR
-3263560192,3263560447,EU
+3263559680,3263560447,EU
3263560448,3263560703,TR
-3263560704,3263560959,EU
-3263560960,3263561231,TR
-3263561232,3263561471,EU
-3263561472,3263561727,TR
+3263560704,3263561215,EU
+3263561216,3263561231,TR
+3263561232,3263561727,EU
3263561728,3263627263,NL
3263627264,3263657471,RU
3263657472,3263657727,KZ
@@ -74801,9 +77275,7 @@
3263774464,3263774719,BE
3263774720,3263792351,FI
3263792352,3263792367,SE
-3263792368,3263792383,FI
-3263792384,3263792639,AX
-3263792640,3263793151,FI
+3263792368,3263793151,FI
3263793152,3263793407,BE
3263793408,3263815123,FI
3263815124,3263815127,AX
@@ -74831,7 +77303,6 @@
3264015360,3264015615,DK
3264015616,3264015871,UA
3264015872,3264016127,PT
-3264016128,3264016383,DE
3264016384,3264016639,SE
3264016640,3264016895,PL
3264016896,3264017151,GB
@@ -75133,7 +77604,6 @@
3264665600,3264666111,RO
3264666112,3264666623,IL
3264666624,3264667135,UA
-3264667136,3264667647,SE
3264667648,3264668159,BE
3264668160,3264669183,DE
3264669184,3264669695,PL
@@ -75223,14 +77693,13 @@
3264845312,3264845951,DE
3264845952,3264846079,GB
3264846080,3264846207,UG
-3264846208,3264846335,PL
3264846336,3264846463,GB
3264846464,3264846591,NO
3264846592,3264846719,US
3264846720,3264846847,RU
3264846848,3264846911,DK
3264846912,3264846975,SK
-3264847040,3264847103,GB
+3264846976,3264847103,GB
3264847104,3264847135,FR
3264847136,3264847167,ES
3264847168,3264847199,IE
@@ -75239,7 +77708,6 @@
3264847360,3264847487,FR
3264847488,3264847615,RU
3264847616,3264847679,PL
-3264847680,3264847743,LV
3264847744,3264847807,BE
3264847808,3264847871,SE
3264847872,3264849919,DE
@@ -75292,8 +77760,8 @@
3264906912,3264906919,GR
3264906920,3264906983,CY
3264906984,3264906995,GR
-3264906996,3264907135,CY
-3264907136,3264907143,GR
+3264906996,3264907139,CY
+3264907140,3264907143,GR
3264907144,3264907151,CY
3264907152,3264907155,GR
3264907156,3264907639,CY
@@ -75322,8 +77790,8 @@
3264907964,3264907971,GR
3264907972,3264907987,CY
3264907988,3264907991,GR
-3264907992,3264908011,CY
-3264908012,3264908019,GR
+3264907992,3264908007,CY
+3264908008,3264908019,GR
3264908020,3264908023,CY
3264908024,3264908031,GR
3264908032,3264908063,CY
@@ -75535,7 +78003,6 @@
3265604096,3265604351,SA
3265604352,3265604607,FR
3265604608,3265604863,CH
-3265604864,3265605119,FR
3265605120,3265605375,UA
3265605376,3265605631,CZ
3265605632,3265605887,PL
@@ -75749,9 +78216,7 @@
3266804736,3266804991,NL
3266804992,3266805503,GB
3266805504,3266805759,NL
-3266805760,3266809343,AT
-3266809344,3266809599,LI
-3266809600,3266813951,AT
+3266805760,3266813951,AT
3266813952,3266822143,UA
3266822144,3266830335,FR
3266830336,3266835151,BE
@@ -76132,9 +78597,7 @@
3267666272,3267666431,GR
3267666432,3267666447,GB
3267666448,3267666463,EU
-3267666464,3267666479,GB
-3267666480,3267666495,EU
-3267666496,3267666543,GB
+3267666464,3267666543,GB
3267666544,3267666575,EU
3267666576,3267666951,GB
3267666952,3267666959,EU
@@ -76396,10 +78859,10 @@
3268238360,3268238367,DE
3268238368,3268238463,GB
3268238464,3268238471,DE
-3268238472,3268238535,GB
-3268238536,3268238559,EU
-3268238560,3268238591,GB
-3268238592,3268239103,EU
+3268238472,3268238759,GB
+3268238760,3268238767,EU
+3268238768,3268238815,GB
+3268238816,3268239103,EU
3268239104,3268239359,GB
3268239360,3268239583,EU
3268239584,3268240127,GB
@@ -76594,8 +79057,7 @@
3268345856,3268411391,GB
3268411392,3268424959,AT
3268424960,3268425727,CH
-3268425728,3268425983,LI
-3268425984,3268426495,AT
+3268425728,3268426495,AT
3268426496,3268428031,CH
3268428032,3268428287,AT
3268428288,3268428543,CH
@@ -76603,9 +79065,7 @@
3268429056,3268429311,CH
3268429312,3268429567,AT
3268429568,3268430079,CH
-3268430080,3268430847,AT
-3268430848,3268431103,LI
-3268431104,3268476927,AT
+3268430080,3268476927,AT
3268476928,3268542463,CH
3268542464,3268607999,PT
3268608000,3268673535,FI
@@ -77166,9 +79626,7 @@
3271280688,3271280703,SE
3271280704,3271280719,FI
3271280720,3271280735,SE
-3271280736,3271282687,FI
-3271282688,3271284735,AX
-3271284736,3271290623,FI
+3271280736,3271290623,FI
3271290624,3271290879,BE
3271290880,3271299071,FI
3271299072,3271299199,AX
@@ -77378,7 +79836,7 @@
3271803904,3271804927,UA
3271804928,3271805951,PL
3271805952,3271806975,UA
-3271806976,3271807999,GB
+3271806976,3271807999,EU
3271808000,3271810047,DE
3271810048,3271811071,PL
3271811072,3271812095,UA
@@ -77626,18 +80084,18 @@
3272178560,3272178623,UA
3272178624,3272212479,RU
3272212480,3272212991,GB
-3272212992,3272213375,EU
+3272212992,3272213375,ES
3272213376,3272213391,IT
3272213392,3272213399,GB
-3272213400,3272213407,EU
+3272213400,3272213407,ES
3272213408,3272213415,NL
-3272213416,3272213423,EU
+3272213416,3272213423,ES
3272213424,3272213431,NL
3272213432,3272213455,GB
-3272213456,3272213471,EU
+3272213456,3272213471,ES
3272213472,3272213487,CY
3272213488,3272213495,GB
-3272213496,3272213503,EU
+3272213496,3272213503,ES
3272213504,3272213567,IT
3272213568,3272213575,GB
3272213576,3272213583,IE
@@ -78057,9 +80515,7 @@
3272715016,3272715023,GB
3272715024,3272715135,SE
3272715136,3272715263,GB
-3272715264,3272733119,SE
-3272733120,3272733135,DE
-3272733136,3272733983,SE
+3272715264,3272733983,SE
3272733984,3272733991,RU
3272733992,3272736767,SE
3272736768,3272737791,IT
@@ -78397,7 +80853,7 @@
3273192448,3273192959,DK
3273192960,3273193471,FR
3273193472,3273193983,PL
-3273193984,3273194495,GB
+3273193984,3273194495,EU
3273194496,3273195007,UA
3273195008,3273195519,RU
3273195520,3273230983,FR
@@ -78444,8 +80900,8 @@
3273327280,3273327287,DE
3273327288,3273327359,EU
3273327360,3273327423,IE
-3273327424,3273327495,GB
-3273327496,3273327519,EU
+3273327424,3273327503,GB
+3273327504,3273327519,EU
3273327520,3273327551,IE
3273327552,3273328511,EU
3273328512,3273328639,DE
@@ -78486,8 +80942,8 @@
3273336000,3273336847,EU
3273336848,3273336863,DE
3273336864,3273336871,GB
-3273336872,3273336879,DE
-3273336880,3273336959,EU
+3273336872,3273336895,DE
+3273336896,3273336959,EU
3273336960,3273337087,DE
3273337088,3273337855,EU
3273337856,3273338111,DE
@@ -78561,8 +81017,8 @@
3273364992,3273365247,DE
3273365248,3273365503,EU
3273365504,3273365519,NL
-3273365520,3273365527,GB
-3273365528,3273365759,NL
+3273365520,3273365543,GB
+3273365544,3273365759,NL
3273365760,3273365767,GB
3273365768,3273365887,EU
3273365888,3273366015,FR
@@ -78648,7 +81104,7 @@
3273388928,3273389055,DE
3273389056,3273390079,EU
3273390080,3273390111,DE
-3273390112,3273390143,EU
+3273390112,3273390143,US
3273390144,3273390207,DE
3273390208,3273390335,EU
3273390336,3273390463,DE
@@ -78688,7 +81144,6 @@
3273438208,3273438719,IL
3273438720,3273439231,PL
3273439232,3273439743,RO
-3273439744,3273440255,UA
3273440256,3273440767,RO
3273440768,3273441279,AT
3273441280,3273441463,FR
@@ -78752,11 +81207,11 @@
3273803776,3273804287,CH
3273804288,3273804799,UA
3273804800,3273805311,RO
-3273805312,3273805823,GB
+3273805312,3273805823,GI
3273805824,3273806335,PL
3273806336,3273806847,DE
3273806848,3273807359,SE
-3273807360,3273807871,A2
+3273807360,3273807871,LU
3273807872,3273808383,CH
3273808384,3273808895,UA
3273808896,3273809407,GB
@@ -79156,9 +81611,7 @@
3274604544,3274612735,TR
3274612736,3274620927,RU
3274620928,3274629119,FR
-3274629120,3274629151,LU
-3274629152,3274629159,A2
-3274629160,3274637175,LU
+3274629120,3274637175,LU
3274637176,3274637183,A2
3274637184,3274637311,LU
3274637312,3274670079,CZ
@@ -79214,6 +81667,7 @@
3274698752,3274699007,GB
3274699008,3274699263,FR
3274699264,3274699519,RO
+3274699520,3274699775,SI
3274699776,3274700031,GB
3274700032,3274700287,CH
3274700288,3274700543,PL
@@ -79487,46 +81941,52 @@
3275424256,3275425791,EU
3275425792,3275426599,GB
3275426600,3275426607,EU
-3275426608,3275426655,GB
-3275426656,3275426815,EU
-3275426816,3275427199,GB
-3275427200,3275427327,EU
+3275426608,3275426687,GB
+3275426688,3275426815,EU
+3275426816,3275427215,GB
+3275427216,3275427231,EU
+3275427232,3275427263,GB
+3275427264,3275427327,EU
3275427328,3275427583,GB
3275427584,3275427839,EU
3275427840,3275428375,GB
-3275428376,3275429887,EU
+3275428376,3275428383,EU
+3275428384,3275428399,GB
+3275428400,3275429887,EU
3275429888,3275430143,GB
3275430144,3275430271,EU
3275430272,3275430399,GB
3275430400,3275430591,EU
3275430592,3275430623,GB
3275430624,3275431935,EU
-3275431936,3275432447,GB
-3275432448,3275433983,EU
+3275431936,3275432703,GB
+3275432704,3275433983,EU
3275433984,3275437567,GB
3275437568,3275438079,EU
-3275438080,3275438607,GB
-3275438608,3275440127,EU
+3275438080,3275438615,GB
+3275438616,3275440127,EU
3275440128,3275440639,GB
3275440640,3275442175,EU
3275442176,3275442719,GB
3275442720,3275444223,EU
3275444224,3275444735,GB
3275444736,3275446271,EU
-3275446272,3275446831,GB
-3275446832,3275446847,EU
-3275446848,3275446943,GB
-3275446944,3275448319,EU
+3275446272,3275446959,GB
+3275446960,3275448319,EU
3275448320,3275449519,GB
3275449520,3275449527,FR
3275449528,3275450879,GB
3275450880,3275451231,EU
3275451232,3275451263,GB
3275451264,3275452415,EU
-3275452416,3275454111,GB
-3275454112,3275454463,EU
-3275454464,3275456383,GB
-3275456384,3275456511,EU
+3275452416,3275454127,GB
+3275454128,3275454143,EU
+3275454144,3275454263,GB
+3275454264,3275454271,EU
+3275454272,3275454335,GB
+3275454336,3275454463,EU
+3275454464,3275456407,GB
+3275456408,3275456511,EU
3275456512,3275457023,GB
3275457024,3275457791,FK
3275457792,3275458559,GB
@@ -79535,8 +81995,8 @@
3275460608,3275460863,HK
3275460864,3275463471,GB
3275463472,3275463487,EU
-3275463488,3275463503,GB
-3275463504,3275463679,EU
+3275463488,3275463519,GB
+3275463520,3275463679,EU
3275463680,3275464031,GB
3275464032,3275464047,IE
3275464048,3275468655,GB
@@ -79641,9 +82101,7 @@
3275555744,3275555759,ES
3275555760,3275555767,EU
3275555768,3275555776,ES
-3275555777,3275556607,EU
-3275556608,3275556863,ES
-3275556864,3275560959,EU
+3275555777,3275560959,EU
3275560960,3275561215,ES
3275561216,3275561471,EU
3275561472,3275561727,ES
@@ -79654,15 +82112,17 @@
3275563520,3275563583,EU
3275563584,3275563647,CH
3275563648,3275563775,DE
-3275563776,3275564287,CH
-3275564288,3275564415,EU
+3275563776,3275564031,CH
+3275564032,3275564415,EU
3275564416,3275564495,CH
3275564496,3275564799,EU
3275564800,3275565055,CH
3275565056,3275565311,EU
3275565312,3275565567,CH
3275565568,3275565823,EU
-3275565824,3275567359,CH
+3275565824,3275566079,CH
+3275566080,3275566847,EU
+3275566848,3275567359,CH
3275567360,3275567615,EU
3275567616,3275568127,CH
3275568128,3275568383,EU
@@ -79688,13 +82148,17 @@
3275574160,3275574175,EU
3275574176,3275574191,PT
3275574192,3275574783,EU
-3275574784,3275575231,PT
+3275574784,3275575103,PT
+3275575104,3275575167,EU
+3275575168,3275575231,PT
3275575232,3275575423,EU
3275575424,3275575727,PT
-3275575728,3275575807,EU
-3275575808,3275575935,PT
+3275575728,3275575871,EU
+3275575872,3275575935,PT
3275575936,3275576063,EU
-3275576064,3275577407,PT
+3275576064,3275576319,PT
+3275576320,3275577343,EU
+3275577344,3275577407,PT
3275577408,3275577471,EU
3275577472,3275577495,PT
3275577496,3275577519,EU
@@ -79705,9 +82169,7 @@
3275577792,3275577807,PT
3275577808,3275577839,EU
3275577840,3275578623,PT
-3275578624,3275578879,EU
-3275578880,3275579007,PT
-3275579008,3275579135,EU
+3275578624,3275579135,EU
3275579136,3275579391,PT
3275579392,3275579519,FR
3275579520,3275579583,NL
@@ -79725,8 +82187,8 @@
3275581680,3275581695,NL
3275581696,3275582223,EU
3275582224,3275582247,NL
-3275582248,3275582255,EU
-3275582256,3275582287,NL
+3275582248,3275582279,EU
+3275582280,3275582287,NL
3275582288,3275582655,EU
3275582656,3275582719,NL
3275582720,3275582975,EU
@@ -79737,9 +82199,7 @@
3275584512,3275584527,NL
3275584528,3275585023,EU
3275585024,3275585279,NL
-3275585280,3275587071,EU
-3275587072,3275587136,NL
-3275587137,3275587583,EU
+3275585280,3275587583,EU
3275587584,3275587855,BE
3275587856,3275588095,EU
3275588096,3275588287,BE
@@ -79765,10 +82225,9 @@
3275591168,3275591423,EU
3275591424,3275591679,BE
3275591680,3275592063,RO
-3275592064,3275592191,EU
-3275592192,3275592959,RO
-3275592960,3275593215,MD
-3275593216,3275593343,EU
+3275592064,3275592447,EU
+3275592448,3275592959,RO
+3275592960,3275593343,EU
3275593344,3275593855,RO
3275593856,3275593983,EU
3275593984,3275595007,RO
@@ -79785,7 +82244,9 @@
3275603968,3275604735,IT
3275604736,3275604767,IL
3275604768,3275604991,EU
-3275604992,3275606271,IT
+3275604992,3275605759,IT
+3275605760,3275606015,EU
+3275606016,3275606271,IT
3275606272,3275606527,EU
3275606528,3275606783,IT
3275606784,3275608831,EU
@@ -79794,9 +82255,7 @@
3275610112,3275610623,IT
3275610624,3275612159,EU
3275612160,3275612287,LU
-3275612288,3275612415,EU
-3275612416,3275612671,LU
-3275612672,3275612927,BE
+3275612288,3275612927,EU
3275612928,3275613951,LU
3275613952,3275620351,EU
3275620352,3275622399,RU
@@ -79945,7 +82404,6 @@
3275914496,3275914751,BG
3275914752,3275915007,RU
3275915008,3275915263,PT
-3275915264,3275915775,FR
3275915776,3275916287,SE
3275916288,3275916799,US
3275916800,3275917311,NL
@@ -80072,8 +82530,8 @@
3276018208,3276018375,FR
3276018376,3276018383,GB
3276018384,3276018423,FR
-3276018424,3276018431,GB
-3276018432,3276018495,FR
+3276018424,3276018447,GB
+3276018448,3276018495,FR
3276018496,3276018527,GB
3276018528,3276018543,FR
3276018544,3276018623,GB
@@ -80109,13 +82567,17 @@
3276019920,3276019927,GB
3276019928,3276020103,FR
3276020104,3276020111,GB
-3276020112,3276020399,FR
+3276020112,3276020367,FR
+3276020368,3276020383,GB
+3276020384,3276020399,FR
3276020400,3276020423,GB
3276020424,3276020431,FR
3276020432,3276020439,GB
3276020440,3276020495,FR
-3276020496,3276020503,GB
-3276020504,3276020623,FR
+3276020496,3276020511,GB
+3276020512,3276020559,FR
+3276020560,3276020567,GB
+3276020568,3276020623,FR
3276020624,3276020631,GB
3276020632,3276020679,FR
3276020680,3276020687,GB
@@ -80127,9 +82589,13 @@
3276020944,3276020991,GB
3276020992,3276021103,FR
3276021104,3276021111,GB
-3276021112,3276021591,FR
+3276021112,3276021527,FR
+3276021528,3276021535,GB
+3276021536,3276021591,FR
3276021592,3276021599,GB
-3276021600,3276022039,FR
+3276021600,3276021855,FR
+3276021856,3276021871,GB
+3276021872,3276022039,FR
3276022040,3276022047,GB
3276022048,3276022087,FR
3276022088,3276022095,GB
@@ -80165,7 +82631,9 @@
3276023104,3276023279,GB
3276023280,3276023687,FR
3276023688,3276023695,GB
-3276023696,3276023759,FR
+3276023696,3276023727,FR
+3276023728,3276023743,GB
+3276023744,3276023759,FR
3276023760,3276023767,GB
3276023768,3276023871,FR
3276023872,3276023887,GB
@@ -80203,7 +82671,9 @@
3276026320,3276026351,GB
3276026352,3276026423,FR
3276026424,3276026431,GB
-3276026432,3276026527,FR
+3276026432,3276026439,FR
+3276026440,3276026447,GB
+3276026448,3276026527,FR
3276026528,3276026535,GB
3276026536,3276026543,FR
3276026544,3276026575,GB
@@ -80300,9 +82770,7 @@
3276031440,3276031519,FR
3276031520,3276031551,GB
3276031552,3276031559,FR
-3276031560,3276031575,GB
-3276031576,3276031583,FR
-3276031584,3276031591,GB
+3276031560,3276031591,GB
3276031592,3276031631,FR
3276031632,3276031679,GB
3276031680,3276031719,FR
@@ -80409,16 +82877,14 @@
3276040064,3276040095,GB
3276040096,3276040159,FR
3276040160,3276040175,GB
-3276040176,3276040207,FR
-3276040208,3276040215,GB
+3276040176,3276040191,FR
+3276040192,3276040215,GB
3276040216,3276040231,FR
3276040232,3276040239,GB
3276040240,3276040319,FR
3276040320,3276040327,GB
3276040328,3276040335,FR
-3276040336,3276040343,GB
-3276040344,3276040351,FR
-3276040352,3276040367,GB
+3276040336,3276040367,GB
3276040368,3276040439,FR
3276040440,3276040495,GB
3276040496,3276040543,FR
@@ -80513,7 +82979,9 @@
3276045288,3276045311,GB
3276045312,3276045351,FR
3276045352,3276045359,GB
-3276045360,3276045455,FR
+3276045360,3276045391,FR
+3276045392,3276045407,GB
+3276045408,3276045455,FR
3276045456,3276045463,GB
3276045464,3276045479,FR
3276045480,3276045487,GB
@@ -80526,8 +82994,8 @@
3276045648,3276045767,FR
3276045768,3276045783,GB
3276045784,3276045815,FR
-3276045816,3276045823,GB
-3276045824,3276045919,FR
+3276045816,3276045855,GB
+3276045856,3276045919,FR
3276045920,3276045951,GB
3276045952,3276046335,FR
3276046336,3276062719,RU
@@ -80600,7 +83068,7 @@
3276133376,3276134399,GB
3276134400,3276135423,RU
3276135424,3276136447,UA
-3276136448,3276138495,PL
+3276137472,3276138495,PL
3276138496,3276139519,NL
3276139520,3276140543,IL
3276140544,3276141567,DE
@@ -82750,7 +85218,7 @@
3276475984,3276476039,IT
3276476040,3276476047,EU
3276476048,3276476111,IT
-3276476112,3276476119,EU
+3276476112,3276476119,GB
3276476120,3276476159,IT
3276476160,3276476415,EU
3276476416,3276476671,CH
@@ -82829,7 +85297,9 @@
3276493216,3276493247,EU
3276493248,3276494383,GB
3276494384,3276494415,EU
-3276494416,3276495503,GB
+3276494416,3276494591,GB
+3276494592,3276494847,EU
+3276494848,3276495503,GB
3276495504,3276495519,EU
3276495520,3276495679,GB
3276495680,3276495775,EU
@@ -82863,8 +85333,8 @@
3276499760,3276499775,EU
3276499776,3276499791,DE
3276499792,3276499799,EU
-3276499800,3276499815,DE
-3276499816,3276499935,EU
+3276499800,3276499823,DE
+3276499824,3276499935,EU
3276499936,3276499999,DE
3276500000,3276500031,CH
3276500032,3276500095,DE
@@ -83050,9 +85520,7 @@
3276528800,3276528815,GB
3276528816,3276528831,EU
3276528832,3276528895,BE
-3276528896,3276528903,IE
-3276528904,3276528911,EU
-3276528912,3276528927,IE
+3276528896,3276528927,IE
3276528928,3276528935,EU
3276528936,3276528943,IE
3276528944,3276528959,EU
@@ -83135,8 +85603,8 @@
3276536688,3276536711,HU
3276536712,3276536735,EU
3276536736,3276536743,HU
-3276536744,3276536863,EU
-3276536864,3276536895,ES
+3276536744,3276536831,EU
+3276536832,3276536895,ES
3276536896,3276536967,EU
3276536968,3276536991,ES
3276536992,3276537151,EU
@@ -83186,7 +85654,7 @@
3276697088,3276697599,GB
3276697600,3276698111,UA
3276698112,3276699647,RU
-3276700160,3276700671,KZ
+3276700160,3276700671,UA
3276700672,3276701183,RO
3276701184,3276701695,RU
3276701696,3276709887,SE
@@ -83596,12 +86064,15 @@
3276861440,3276865535,DK
3276865536,3276866559,NL
3276866560,3276866815,IT
-3276866816,3276866863,DE
+3276866816,3276866831,DE
+3276866832,3276866839,GB
+3276866840,3276866863,DE
3276866864,3276866879,GB
3276866880,3276866959,DE
3276866960,3276866967,GB
-3276866968,3276866975,DE
-3276866976,3276867071,GB
+3276866968,3276866983,DE
+3276866984,3276867007,GB
+3276867008,3276867071,DE
3276867072,3276868606,IT
3276868607,3276868607,GB
3276868608,3276868863,NL
@@ -83615,12 +86086,10 @@
3276872480,3276872511,GB
3276872512,3276872703,DE
3276872704,3276873727,GB
-3276873728,3276874303,ES
-3276874304,3276874367,GB
+3276873728,3276874335,ES
+3276874336,3276874367,GB
3276874368,3276874751,ES
-3276874752,3276875007,NL
-3276875008,3276875263,GB
-3276875264,3276875775,NL
+3276874752,3276875775,NL
3276875776,3276876031,GB
3276876032,3276876287,DK
3276876288,3276876799,GB
@@ -83649,8 +86118,8 @@
3276883968,3276884487,PL
3276884488,3276886015,GB
3276886016,3276886271,RO
-3276886272,3276887807,GB
-3276887808,3276888063,DE
+3276886272,3276887295,GB
+3276887296,3276888063,DE
3276888064,3276888575,GB
3276888576,3276888831,AT
3276888832,3276889087,GB
@@ -83678,24 +86147,28 @@
3276897280,3276898303,GB
3276898304,3276898775,CH
3276898776,3276898783,GB
-3276898784,3276899135,CH
-3276899136,3276899167,GB
-3276899168,3276900039,CH
-3276900040,3276900095,GB
+3276898784,3276900039,CH
+3276900040,3276900047,GB
+3276900048,3276900079,CH
+3276900080,3276900095,GB
3276900096,3276900351,CH
3276900352,3276900607,GB
-3276900608,3276900671,CH
-3276900672,3276902143,GB
+3276900608,3276900799,CH
+3276900800,3276900863,GB
+3276900864,3276901119,CH
+3276901120,3276902143,GB
3276902144,3276902151,CH
3276902152,3276902159,GB
3276902160,3276902175,CH
-3276902176,3276902399,GB
+3276902176,3276902207,GB
+3276902208,3276902271,CH
+3276902272,3276902399,GB
3276902400,3276902575,SE
3276902576,3276902655,GB
3276902656,3276903422,SE
3276903423,3276903423,GB
-3276903424,3276903679,SE
-3276903680,3276905311,GB
+3276903424,3276903935,SE
+3276903936,3276905311,GB
3276905312,3276905319,ES
3276905320,3276905471,GB
3276905472,3276905727,SE
@@ -83705,13 +86178,17 @@
3276906496,3276906863,NL
3276906864,3276906879,GB
3276906880,3276907551,NL
-3276907552,3276910079,GB
+3276907552,3276907775,GB
+3276907776,3276908159,NL
+3276908160,3276910079,GB
3276910080,3276910591,NL
3276910592,3276910967,IT
3276910968,3276910975,GB
3276910976,3276912615,IT
3276912616,3276912623,GB
-3276912624,3276913919,IT
+3276912624,3276913183,IT
+3276913184,3276913215,GB
+3276913216,3276913919,IT
3276913920,3276913983,US
3276913984,3276914687,IT
3276914688,3276915455,ES
@@ -83724,15 +86201,17 @@
3276917280,3276917287,GB
3276917288,3276917311,ES
3276917312,3276917343,GB
-3276917344,3276917759,ES
-3276917760,3276918271,GB
-3276918272,3276918783,ES
+3276917344,3276917887,ES
+3276917888,3276918015,GB
+3276918016,3276918783,ES
3276918784,3276920551,DE
3276920552,3276920559,GB
3276920560,3276921183,DE
3276921184,3276921191,GB
3276921192,3276921239,DE
-3276921240,3276921343,GB
+3276921240,3276921247,GB
+3276921248,3276921279,DE
+3276921280,3276921343,GB
3276921344,3276921399,DE
3276921400,3276921403,DK
3276921404,3276921607,DE
@@ -83742,13 +86221,15 @@
3276923432,3276923455,GB
3276923456,3276923615,FR
3276923616,3276923647,GB
-3276923648,3276924039,FR
+3276923648,3276923743,FR
+3276923744,3276923751,GB
+3276923752,3276924039,FR
3276924040,3276924095,GB
-3276924096,3276924287,FR
-3276924288,3276924415,GB
+3276924096,3276924351,FR
+3276924352,3276924415,GB
3276924416,3276925951,FR
-3276925952,3276926463,GB
-3276926464,3276926735,FR
+3276925952,3276926207,GB
+3276926208,3276926735,FR
3276926736,3276931071,GB
3276931072,3276939263,KZ
3276939264,3276955647,DE
@@ -83960,18 +86441,13 @@
3277464832,3277467471,US
3277467472,3277467551,CA
3277467552,3277471743,US
-3277471744,3277472511,NL
-3277472512,3277472607,EU
+3277471744,3277472607,NL
3277472608,3277472623,IL
-3277472624,3277474815,EU
+3277472624,3277474815,NL
3277474816,3277475711,BE
-3277475712,3277475839,EU
-3277475840,3277476095,NL
-3277476096,3277476607,EU
+3277475712,3277476607,NL
3277476608,3277477631,BE
-3277477632,3277478143,EU
-3277478144,3277478399,NL
-3277478400,3277479935,EU
+3277477632,3277479935,NL
3277479936,3277480959,GB
3277480960,3277481471,DK
3277481472,3277481983,PL
@@ -84003,6 +86479,7 @@
3277687296,3277687807,UA
3277687808,3277688319,RO
3277688320,3277688831,PL
+3277688832,3277689343,RU
3277689344,3277689855,AT
3277689856,3277690879,RU
3277690880,3277691391,KZ
@@ -84026,7 +86503,7 @@
3277700608,3277701119,UA
3277701120,3277701631,DK
3277701632,3277702143,AT
-3277702144,3277702655,GB
+3277702144,3277702655,EU
3277702656,3277703167,RO
3277703168,3277703679,DE
3277703680,3277704191,PL
@@ -84135,6 +86612,7 @@
3277840384,3277840895,FR
3277840896,3277841407,GR
3277841408,3277841919,RO
+3277841920,3277842431,IT
3277842432,3277842943,UA
3277842944,3277843455,PL
3277843456,3277843967,PT
@@ -84173,18 +86651,14 @@
3278054912,3278055423,NL
3278055424,3278061567,GB
3278061568,3278065663,NL
-3278065664,3278067967,GB
-3278067968,3278068223,BE
-3278068224,3278103039,GB
+3278065664,3278103039,GB
3278103040,3278103295,FR
3278103296,3278110719,GB
3278110720,3278110751,SE
3278110752,3278110767,ES
3278110768,3278111239,SE
3278111240,3278111247,ES
-3278111248,3278114815,SE
-3278114816,3278115071,ES
-3278115072,3278115327,SE
+3278111248,3278115327,SE
3278115328,3278116607,ES
3278116608,3278116863,SE
3278116864,3278118303,ES
@@ -84230,6 +86704,7 @@
3278773248,3278773759,NO
3278773760,3278774271,GB
3278774272,3278774783,RU
+3278774784,3278775295,FR
3278775296,3278775807,GB
3278775808,3278776319,IR
3278776320,3278776831,IL
@@ -84246,7 +86721,7 @@
3278782464,3278782975,GB
3278782976,3278783231,DE
3278783232,3278784703,GB
-3278784704,3278784735,US
+3278784704,3278784735,NL
3278784736,3278786911,GB
3278786912,3278786943,LU
3278786944,3278787567,GB
@@ -84323,8 +86798,7 @@
3278938368,3278938375,FR
3278938376,3278938379,DE
3278938380,3278938383,FR
-3278938384,3278938387,ZA
-3278938388,3278938399,DE
+3278938384,3278938399,DE
3278938400,3278938403,AT
3278938404,3278938407,GB
3278938408,3278938411,CH
@@ -84595,7 +87069,9 @@
3278939780,3278939783,FR
3278939784,3278939787,BE
3278939788,3278939791,DE
-3278939792,3278939803,ES
+3278939792,3278939795,ES
+3278939796,3278939799,DE
+3278939800,3278939803,ES
3278939804,3278939807,GB
3278939808,3278939815,DE
3278939816,3278939819,NL
@@ -85170,7 +87646,8 @@
3278942838,3278942838,ES
3278942839,3278942839,FR
3278942840,3278942841,DE
-3278942842,3278942843,IT
+3278942842,3278942842,IT
+3278942843,3278942843,DE
3278942844,3278942844,ES
3278942845,3278942850,DE
3278942851,3278942851,HU
@@ -86073,8 +88550,7 @@
3278943999,3278944001,DE
3278944002,3278944002,GB
3278944003,3278944003,LU
-3278944004,3278944004,PT
-3278944005,3278944006,DE
+3278944004,3278944006,DE
3278944007,3278944007,NL
3278944008,3278944008,IT
3278944009,3278944009,CH
@@ -86301,9 +88777,7 @@
3278944366,3278944366,MX
3278944367,3278944367,US
3278944368,3278944368,CA
-3278944369,3278944373,US
-3278944374,3278944374,PR
-3278944375,3278944379,US
+3278944369,3278944379,US
3278944380,3278944380,DE
3278944381,3278944385,US
3278944386,3278944386,DE
@@ -86370,9 +88844,7 @@
3278944580,3278944580,AR
3278944581,3278944581,US
3278944582,3278944583,DE
-3278944584,3278944586,US
-3278944587,3278944587,PR
-3278944588,3278944588,US
+3278944584,3278944588,US
3278944589,3278944589,DE
3278944590,3278944599,US
3278944600,3278944600,SA
@@ -86581,7 +89053,7 @@
3278945797,3278945797,BE
3278945798,3278945798,NL
3278945799,3278945799,LU
-3278945800,3278945800,SE
+3278945800,3278945800,DE
3278945801,3278945801,NL
3278945802,3278945802,PT
3278945803,3278945803,GB
@@ -86640,8 +89112,8 @@
3278945875,3278945875,ES
3278945876,3278945876,NL
3278945877,3278945877,SE
-3278945878,3278945879,FR
-3278945880,3278945880,DE
+3278945878,3278945878,FR
+3278945879,3278945880,DE
3278945881,3278945881,BE
3278945882,3278945886,DE
3278945887,3278945888,IT
@@ -86986,7 +89458,7 @@
3279972352,3279974399,AT
3279974400,3279976447,PL
3279976448,3279986687,RU
-3279986688,3279987199,NL
+3279986688,3279987199,MT
3279987200,3279987711,RU
3279987712,3279988223,RO
3279988224,3279988735,AM
@@ -87029,8 +89501,7 @@
3280011784,3280011791,BE
3280011792,3280011903,EU
3280011904,3280011951,BE
-3280011952,3280014847,EU
-3280014848,3280015103,FR
+3280011952,3280015103,EU
3280015104,3280015359,GB
3280015360,3280015871,EU
3280015872,3280016383,GB
@@ -87066,9 +89537,7 @@
3280023040,3280023551,EU
3280023552,3280024575,IT
3280024576,3280024831,SE
-3280024832,3280027135,EU
-3280027136,3280027391,IE
-3280027392,3280027647,EU
+3280024832,3280027647,EU
3280027648,3280027903,CH
3280027904,3280028159,EU
3280028160,3280028415,IT
@@ -88811,7 +91280,6 @@
3281343232,3281343487,FI
3281343488,3281343743,GB
3281343744,3281343999,TR
-3281344000,3281344255,PL
3281344256,3281344511,RU
3281344512,3281344767,UA
3281344768,3281345023,RU
@@ -88972,6 +91440,14 @@
3282181120,3282181631,GB
3282181632,3282182143,DE
3282182144,3282190335,RU
+3282190336,3282190847,UA
+3282190848,3282191359,IL
+3282191360,3282191871,RU
+3282191872,3282192383,UA
+3282192384,3282192895,BG
+3282192896,3282193407,UA
+3282193408,3282193919,PL
+3282193920,3282194431,RU
3282194432,3282195455,UA
3282195456,3282196479,IE
3282196480,3282197503,UA
@@ -89095,9 +91571,7 @@
3283091456,3283156991,CH
3283156992,3283158215,DE
3283158216,3283158219,EE
-3283158220,3283160171,DE
-3283160172,3283160175,BE
-3283160176,3283173375,DE
+3283158220,3283173375,DE
3283173376,3283174399,PL
3283174400,3283176447,UA
3283176448,3283177471,GB
@@ -89185,7 +91659,9 @@
3283291488,3283291491,ES
3283291492,3283304919,DE
3283304920,3283304923,ES
-3283304924,3283305087,DE
+3283304924,3283304959,DE
+3283304960,3283305023,GB
+3283305024,3283305087,DE
3283305088,3283305127,FR
3283305128,3283305711,DE
3283305712,3283305715,ES
@@ -89685,26 +92161,25 @@
3283650960,3283650975,CH
3283650976,3283651071,GB
3283651072,3283651135,IT
-3283651136,3283651167,EU
+3283651136,3283651167,BE
3283651168,3283651183,ES
-3283651184,3283651199,EU
+3283651184,3283651199,BE
3283651200,3283651263,HU
3283651264,3283651327,ZA
-3283651328,3283651423,EU
+3283651328,3283651423,BE
3283651424,3283651439,DE
-3283651440,3283651463,EU
+3283651440,3283651463,BE
3283651464,3283651471,DE
-3283651472,3283651487,EU
+3283651472,3283651487,BE
3283651488,3283651519,FR
3283651520,3283651583,IL
3283651584,3283651591,GB
-3283651592,3283651599,EU
+3283651592,3283651599,BE
3283651600,3283651615,DE
-3283651616,3283651647,EU
+3283651616,3283651647,BE
3283651648,3283651663,SE
3283651664,3283651671,RO
-3283651672,3283651679,BE
-3283651680,3283651687,EU
+3283651672,3283651687,BE
3283651688,3283651695,IT
3283651696,3283651711,GB
3283651712,3283651727,CH
@@ -89715,21 +92190,20 @@
3283651840,3283651967,NL
3283651968,3283652031,DK
3283652032,3283652063,DE
-3283652064,3283652071,EU
+3283652064,3283652071,BE
3283652072,3283652079,GB
-3283652080,3283652095,EU
+3283652080,3283652095,BE
3283652096,3283652351,GB
3283652352,3283652479,IT
-3283652480,3283652519,EU
+3283652480,3283652519,BE
3283652520,3283652527,SE
-3283652528,3283652543,EU
+3283652528,3283652543,BE
3283652544,3283652575,FR
3283652576,3283652607,DE
3283652608,3283652863,NO
-3283652864,3283653055,BE
-3283653056,3283653247,EU
+3283652864,3283653247,BE
3283653248,3283653311,NO
-3283653312,3283653503,EU
+3283653312,3283653503,BE
3283653504,3283653631,GB
3283653632,3283653887,FR
3283653888,3283654015,SE
@@ -89737,7 +92211,7 @@
3283654144,3283654399,DE
3283654400,3283654655,CH
3283654656,3283654911,DK
-3283654912,3283655039,EU
+3283654912,3283655039,BE
3283655040,3283655167,DK
3283655168,3283655295,DE
3283655296,3283655423,BE
@@ -89745,16 +92219,16 @@
3283655680,3283655935,ES
3283655936,3283656191,ZA
3283656192,3283656223,GB
-3283656224,3283656255,EU
+3283656224,3283656255,BE
3283656256,3283656271,GB
-3283656272,3283656303,EU
+3283656272,3283656303,BE
3283656304,3283656311,GB
-3283656312,3283656447,EU
+3283656312,3283656447,BE
3283656448,3283656559,ES
3283656560,3283656575,FR
-3283656576,3283656591,EU
+3283656576,3283656591,BE
3283656592,3283656599,FR
-3283656600,3283656703,EU
+3283656600,3283656703,BE
3283656704,3283664895,HU
3283664896,3283673087,UA
3283673088,3283681279,GB
@@ -90184,20 +92658,17 @@
3285057536,3285065727,IT
3285065728,3285073919,RU
3285073920,3285074687,GB
-3285074688,3285075199,NL
-3285075200,3285076607,EU
+3285074688,3285076607,NL
3285076608,3285076767,BE
-3285076768,3285078111,EU
+3285076768,3285078111,NL
3285078112,3285078143,GB
-3285078144,3285078175,EU
+3285078144,3285078175,NL
3285078176,3285078191,GB
-3285078192,3285079423,EU
+3285078192,3285079423,NL
3285079424,3285079551,DE
-3285079552,3285079807,EU
-3285079808,3285079935,NL
-3285079936,3285079967,EU
+3285079552,3285079967,NL
3285079968,3285079999,DE
-3285080000,3285082111,EU
+3285080000,3285082111,NL
3285082112,3285084159,AT
3285084160,3285085183,LU
3285085184,3285086207,GB
@@ -90256,6 +92727,7 @@
3285333504,3285334015,GB
3285334016,3285334527,NL
3285334528,3285335039,DE
+3285335040,3285335551,PL
3285335552,3285336063,SE
3285336064,3285352447,IT
3285352448,3285368831,RU
@@ -90313,11 +92785,7 @@
3285453056,3285453119,EU
3285453120,3285453415,GB
3285453416,3285453423,EU
-3285453424,3285453439,GB
-3285453440,3285453567,EU
-3285453568,3285453623,GB
-3285453624,3285453631,EU
-3285453632,3285454047,GB
+3285453424,3285454047,GB
3285454048,3285454079,EU
3285454080,3285454175,GB
3285454176,3285454207,EU
@@ -90594,8 +93062,8 @@
3285479424,3285479807,CH
3285479808,3285480447,EU
3285480448,3285480575,CH
-3285480576,3285480735,EU
-3285480736,3285480767,CH
+3285480576,3285480719,EU
+3285480720,3285480767,CH
3285480768,3285480775,EU
3285480776,3285480895,CH
3285480896,3285480959,EU
@@ -90693,7 +93161,9 @@
3285496832,3285497855,DE
3285497856,3285497887,EU
3285497888,3285498031,DE
-3285498032,3285498095,EU
+3285498032,3285498047,EU
+3285498048,3285498079,DE
+3285498080,3285498095,EU
3285498096,3285498111,DE
3285498112,3285498367,IT
3285498368,3285498623,DE
@@ -90796,7 +93266,7 @@
3285516224,3285516287,GR
3285516288,3285516543,DK
3285516544,3285516671,NO
-3285516672,3285516687,EU
+3285516672,3285516687,BE
3285516688,3285516691,NL
3285516692,3285516695,IT
3285516696,3285516703,NL
@@ -90805,17 +93275,17 @@
3285516736,3285516799,DE
3285516800,3285516927,GB
3285516928,3285516991,PL
-3285516992,3285517023,EU
+3285516992,3285517023,BE
3285517024,3285517055,SE
3285517056,3285517215,GB
3285517216,3285517247,AT
3285517248,3285518335,GB
3285518336,3285518351,NL
3285518352,3285518367,ES
-3285518368,3285518463,EU
+3285518368,3285518463,BE
3285518464,3285518591,ES
3285518592,3285518847,CH
-3285518848,3285519103,EU
+3285518848,3285519103,BE
3285519104,3285519359,FR
3285519360,3285519615,DE
3285519616,3285520127,GB
@@ -90826,20 +93296,19 @@
3285520576,3285520639,DE
3285520640,3285520767,NL
3285520768,3285520895,GB
-3285520896,3285521167,EU
+3285520896,3285521167,BE
3285521168,3285521407,GB
-3285521408,3285521535,BE
-3285521536,3285521695,EU
+3285521408,3285521695,BE
3285521696,3285521791,GB
-3285521792,3285522175,EU
+3285521792,3285522175,BE
3285522176,3285523071,GB
-3285523072,3285523079,EU
+3285523072,3285523079,BE
3285523080,3285523087,ES
3285523088,3285523199,CH
3285523200,3285523231,ZA
-3285523232,3285523327,EU
+3285523232,3285523327,BE
3285523328,3285523335,FI
-3285523336,3285523359,EU
+3285523336,3285523359,BE
3285523360,3285523391,GB
3285523392,3285523711,FR
3285523712,3285523967,CH
@@ -90850,106 +93319,89 @@
3285524176,3285524191,CH
3285524192,3285524223,BE
3285524224,3285524351,GB
-3285524352,3285524479,EU
+3285524352,3285524479,BE
3285524480,3285524735,DK
3285524736,3285524863,GB
-3285524864,3285524879,EU
-3285524880,3285524895,BE
+3285524864,3285524895,BE
3285524896,3285524927,ES
3285524928,3285524991,GB
-3285524992,3285525247,EU
+3285524992,3285525247,BE
3285525248,3285525503,CH
-3285525504,3285525759,EU
-3285525760,3285526015,BE
+3285525504,3285526015,BE
3285526016,3285526023,IL
-3285526024,3285526035,EU
+3285526024,3285526035,BE
3285526036,3285526039,FR
-3285526040,3285526047,EU
+3285526040,3285526047,BE
3285526048,3285526079,CZ
-3285526080,3285526143,EU
+3285526080,3285526143,BE
3285526144,3285526175,HU
-3285526176,3285526271,EU
-3285526272,3285526335,BE
-3285526336,3285526383,EU
+3285526176,3285526383,BE
3285526384,3285526399,PT
3285526400,3285526527,CH
3285526528,3285526783,ES
3285526784,3285526815,CH
-3285526816,3285526823,EU
-3285526824,3285526847,BE
+3285526816,3285526847,BE
3285526848,3285526911,CH
3285526912,3285527295,GB
-3285527296,3285527423,EU
+3285527296,3285527423,BE
3285527424,3285527427,GB
-3285527428,3285527431,EU
+3285527428,3285527431,BE
3285527432,3285527439,FR
3285527440,3285527455,LU
3285527456,3285527487,IL
-3285527488,3285527495,EU
+3285527488,3285527495,BE
3285527496,3285527503,DE
3285527504,3285527519,JP
-3285527520,3285527551,EU
+3285527520,3285527551,BE
3285527552,3285527615,IL
3285527616,3285527679,GB
-3285527680,3285527807,EU
+3285527680,3285527807,BE
3285527808,3285527811,GB
3285527812,3285527815,PL
-3285527816,3285527855,EU
+3285527816,3285527855,BE
3285527856,3285527871,FR
-3285527872,3285527967,EU
+3285527872,3285527967,BE
3285527968,3285527999,DE
-3285528000,3285528319,EU
+3285528000,3285528319,BE
3285528320,3285528447,DE
3285528448,3285528575,FR
-3285528576,3285528703,BE
-3285528704,3285528735,EU
-3285528736,3285528799,BE
+3285528576,3285528799,BE
3285528800,3285528831,GB
-3285528832,3285528839,BE
-3285528840,3285528847,EU
+3285528832,3285528847,BE
3285528848,3285528863,ZA
-3285528864,3285528883,EU
+3285528864,3285528883,BE
3285528884,3285528887,FR
-3285528888,3285528895,EU
+3285528888,3285528895,BE
3285528896,3285528911,GB
-3285528912,3285528927,BE
-3285528928,3285528931,EU
+3285528912,3285528931,BE
3285528932,3285528935,FR
-3285528936,3285528943,EU
+3285528936,3285528943,BE
3285528944,3285529071,GB
-3285529072,3285529087,EU
-3285529088,3285529151,BE
+3285529072,3285529151,BE
3285529152,3285529183,DE
3285529184,3285529199,NL
3285529200,3285529215,IL
3285529216,3285529247,CH
3285529248,3285529263,GB
-3285529264,3285529279,EU
-3285529280,3285529311,BE
-3285529312,3285529343,EU
+3285529264,3285529343,BE
3285529344,3285529599,IT
3285529600,3285529631,NO
3285529632,3285529663,IE
3285529664,3285529679,LI
3285529680,3285529687,FI
3285529688,3285529695,IT
-3285529696,3285529711,BE
-3285529712,3285529727,EU
+3285529696,3285529727,BE
3285529728,3285529855,GB
3285529856,3285529951,LU
3285529952,3285529983,GR
3285529984,3285529999,CZ
-3285530000,3285530143,EU
+3285530000,3285530143,BE
3285530144,3285530175,GB
3285530176,3285530183,NL
-3285530184,3285530211,EU
-3285530212,3285530215,BE
+3285530184,3285530215,BE
3285530216,3285530223,GB
3285530224,3285530271,FR
-3285530272,3285530303,EU
-3285530304,3285530335,BE
-3285530336,3285530367,EU
-3285530368,3285530399,BE
+3285530272,3285530399,BE
3285530400,3285530431,NL
3285530432,3285530463,IT
3285530464,3285530495,DE
@@ -90958,24 +93410,23 @@
3285530576,3285530583,GB
3285530584,3285530591,BE
3285530592,3285530607,GB
-3285530608,3285530623,BE
-3285530624,3285530655,EU
+3285530608,3285530655,BE
3285530656,3285530687,ZA
3285530688,3285530719,GB
-3285530720,3285530723,EU
+3285530720,3285530723,BE
3285530724,3285530727,GB
3285530728,3285530735,DE
3285530736,3285530739,GB
-3285530740,3285530743,EU
+3285530740,3285530743,BE
3285530744,3285530751,GB
3285530752,3285530767,IT
3285530768,3285530783,DE
-3285530784,3285530815,EU
+3285530784,3285530815,BE
3285530816,3285530831,GB
-3285530832,3285530879,EU
+3285530832,3285530879,BE
3285530880,3285530911,CH
3285530912,3285530975,GB
-3285530976,3285530983,EU
+3285530976,3285530983,BE
3285530984,3285530991,IE
3285530992,3285531007,GB
3285531008,3285531023,FR
@@ -90983,60 +93434,57 @@
3285531040,3285531071,ES
3285531072,3285531103,NL
3285531104,3285531119,FR
-3285531120,3285531127,BE
-3285531128,3285531263,EU
+3285531120,3285531263,BE
3285531264,3285531311,GB
3285531312,3285531327,DK
-3285531328,3285531343,EU
+3285531328,3285531343,BE
3285531344,3285531351,GB
3285531352,3285531355,FR
3285531356,3285531359,ES
-3285531360,3285531367,EU
+3285531360,3285531367,BE
3285531368,3285531375,DE
-3285531376,3285531379,EU
-3285531380,3285531383,BE
+3285531376,3285531383,BE
3285531384,3285531391,DE
3285531392,3285531423,BE
3285531424,3285531455,DE
-3285531456,3285531495,EU
+3285531456,3285531495,BE
3285531496,3285531503,NL
3285531504,3285531519,FR
-3285531520,3285531535,EU
+3285531520,3285531535,BE
3285531536,3285531551,DE
3285531552,3285531567,IL
-3285531568,3285531615,EU
+3285531568,3285531615,BE
3285531616,3285531647,NL
3285531648,3285531903,BE
3285531904,3285532159,GB
3285532160,3285532223,BE
3285532224,3285532231,ES
-3285532232,3285532287,EU
-3285532288,3285532415,BE
+3285532232,3285532415,BE
3285532416,3285532687,IT
3285532688,3285532703,DE
-3285532704,3285532711,EU
+3285532704,3285532711,BE
3285532712,3285532719,RU
3285532720,3285532735,IT
3285532736,3285532799,CH
3285532800,3285532831,DE
3285532832,3285532847,FI
3285532848,3285532863,IT
-3285532864,3285532895,EU
+3285532864,3285532895,BE
3285532896,3285532959,IT
-3285532960,3285532975,BE
-3285532976,3285533047,EU
+3285532960,3285533039,BE
+3285533040,3285533047,NL
3285533048,3285533055,BE
3285533056,3285533059,NL
-3285533060,3285533087,EU
+3285533060,3285533087,BE
3285533088,3285533103,IT
3285533104,3285533119,LU
-3285533120,3285533127,EU
+3285533120,3285533127,BE
3285533128,3285533135,SE
3285533136,3285533151,GB
3285533152,3285533183,FR
3285533184,3285533311,IT
3285533312,3285533343,SE
-3285533344,3285533367,EU
+3285533344,3285533367,BE
3285533368,3285533375,CH
3285533376,3285533471,GB
3285533472,3285533503,BE
@@ -91049,17 +93497,15 @@
3285533952,3285534079,IL
3285534080,3285534095,IT
3285534096,3285534111,TR
-3285534112,3285534143,EU
+3285534112,3285534143,BE
3285534144,3285534207,IT
3285534208,3285534463,PT
3285534464,3285534479,NL
-3285534480,3285534495,BE
-3285534496,3285534527,EU
+3285534480,3285534527,BE
3285534528,3285534559,FR
3285534560,3285534591,IT
3285534592,3285534627,GB
-3285534628,3285534631,EU
-3285534632,3285534639,BE
+3285534628,3285534639,BE
3285534640,3285534655,GB
3285534656,3285534719,IT
3285534720,3285534751,GB
@@ -91070,61 +93516,60 @@
3285534816,3285534831,HU
3285534832,3285534927,IE
3285534928,3285534943,GB
-3285534944,3285534975,EU
+3285534944,3285534975,BE
3285534976,3285535103,IT
-3285535104,3285535119,BE
-3285535120,3285535123,EU
+3285535104,3285535123,BE
3285535124,3285535127,ES
-3285535128,3285535131,EU
+3285535128,3285535131,BE
3285535132,3285535135,NL
3285535136,3285535139,FR
-3285535140,3285535143,EU
+3285535140,3285535143,BE
3285535144,3285535147,GR
3285535148,3285535151,CZ
3285535152,3285535155,SE
-3285535156,3285535231,EU
+3285535156,3285535231,BE
3285535232,3285535743,NO
3285535744,3285535871,IT
3285535872,3285535903,FR
3285535904,3285535907,DK
3285535908,3285535911,NO
-3285535912,3285535919,EU
+3285535912,3285535919,BE
3285535920,3285535927,NL
-3285535928,3285535951,EU
+3285535928,3285535951,BE
3285535952,3285535967,GB
-3285535968,3285535999,EU
+3285535968,3285535999,BE
3285536000,3285536063,GB
-3285536064,3285536079,EU
+3285536064,3285536079,BE
3285536080,3285536095,IT
3285536096,3285536111,GB
-3285536112,3285536255,EU
+3285536112,3285536255,BE
3285536256,3285536511,GB
3285536512,3285536543,LU
3285536544,3285536575,DE
3285536576,3285536607,IL
-3285536608,3285536703,EU
+3285536608,3285536703,BE
3285536704,3285536735,GB
3285536736,3285536739,IT
3285536740,3285536743,GB
3285536744,3285536747,DE
3285536748,3285536751,AT
-3285536752,3285536755,EU
+3285536752,3285536755,BE
3285536756,3285536759,IL
-3285536760,3285536767,EU
+3285536760,3285536767,BE
3285536768,3285536959,DK
3285536960,3285536991,ES
3285536992,3285537023,GB
3285537024,3285537087,IL
3285537088,3285537127,GB
-3285537128,3285537135,EU
+3285537128,3285537135,BE
3285537136,3285537143,DK
3285537144,3285537151,GB
3285537152,3285537167,DK
3285537168,3285537175,CH
-3285537176,3285537183,EU
+3285537176,3285537183,BE
3285537184,3285537215,DE
3285537216,3285537231,GB
-3285537232,3285537535,EU
+3285537232,3285537535,BE
3285537536,3285537599,RU
3285537600,3285537615,FR
3285537616,3285537631,BE
@@ -91137,7 +93582,7 @@
3285538048,3285538175,NL
3285538176,3285538183,DE
3285538184,3285538187,LU
-3285538188,3285538207,EU
+3285538188,3285538207,BE
3285538208,3285538239,LU
3285538240,3285538271,NO
3285538272,3285538287,FI
@@ -91148,14 +93593,13 @@
3285538328,3285538335,BE
3285538336,3285538351,GB
3285538352,3285538367,LU
-3285538368,3285538375,EU
+3285538368,3285538375,BE
3285538376,3285538383,AT
-3285538384,3285538399,EU
+3285538384,3285538399,BE
3285538400,3285538431,DK
-3285538432,3285538559,EU
-3285538560,3285538623,BE
+3285538432,3285538623,BE
3285538624,3285538687,LU
-3285538688,3285538719,EU
+3285538688,3285538719,BE
3285538720,3285538751,DE
3285538752,3285538755,IT
3285538756,3285538759,FR
@@ -91164,10 +93608,10 @@
3285538768,3285538783,CZ
3285538784,3285538815,BE
3285538816,3285538847,CH
-3285538848,3285538879,EU
+3285538848,3285538879,BE
3285538880,3285539071,ES
3285539072,3285539327,NL
-3285539328,3285539583,EU
+3285539328,3285539583,BE
3285539584,3285539711,IE
3285539712,3285539839,GB
3285539840,3285539967,IT
@@ -91175,38 +93619,38 @@
3285540032,3285540095,ZA
3285540096,3285540103,GB
3285540104,3285540107,IT
-3285540108,3285540111,EU
+3285540108,3285540111,BE
3285540112,3285540127,IL
3285540128,3285540159,ZA
3285540160,3285540191,FI
3285540192,3285540207,CH
3285540208,3285540215,IE
-3285540216,3285540219,EU
+3285540216,3285540219,BE
3285540220,3285540223,ZA
3285540224,3285540351,CZ
3285540352,3285540415,PT
3285540416,3285540423,ZA
-3285540424,3285540447,EU
+3285540424,3285540447,BE
3285540448,3285540479,DE
3285540480,3285540607,NL
-3285540608,3285540671,EU
+3285540608,3285540671,BE
3285540672,3285540735,DE
-3285540736,3285540863,EU
+3285540736,3285540863,BE
3285540864,3285540871,FR
-3285540872,3285540879,EU
+3285540872,3285540879,BE
3285540880,3285541375,FR
3285541376,3285541391,GB
3285541392,3285541439,FR
3285541440,3285541519,GB
3285541520,3285541527,BG
-3285541528,3285541535,EU
+3285541528,3285541535,BE
3285541536,3285541551,FR
-3285541552,3285541567,EU
+3285541552,3285541567,BE
3285541568,3285541599,GB
-3285541600,3285541631,EU
+3285541600,3285541631,BE
3285541632,3285541663,ES
3285541664,3285541695,FR
-3285541696,3285541759,EU
+3285541696,3285541759,BE
3285541760,3285541887,FR
3285541888,3285541919,GB
3285541920,3285541951,FR
@@ -91220,32 +93664,32 @@
3285543424,3285543679,SE
3285543680,3285543743,AT
3285543744,3285543759,FR
-3285543760,3285543775,EU
+3285543760,3285543775,BE
3285543776,3285543791,IT
3285543792,3285543795,ES
-3285543796,3285543799,EU
+3285543796,3285543799,BE
3285543800,3285543807,FR
3285543808,3285543871,NL
3285543872,3285543935,FR
-3285543936,3285544191,EU
+3285543936,3285544191,BE
3285544192,3285544255,IL
3285544256,3285544319,DE
3285544320,3285544335,ES
3285544336,3285544351,NL
-3285544352,3285544383,EU
+3285544352,3285544383,BE
3285544384,3285544479,FR
3285544480,3285544511,ES
3285544512,3285544639,FR
3285544640,3285544703,BE
3285544704,3285544959,FR
3285544960,3285545215,GB
-3285545216,3285545343,EU
+3285545216,3285545343,BE
3285545344,3285545379,GB
-3285545380,3285545471,EU
+3285545380,3285545471,BE
3285545472,3285545727,SE
3285545728,3285545983,FI
3285545984,3285545999,IT
-3285546000,3285546007,EU
+3285546000,3285546007,BE
3285546008,3285546015,IT
3285546016,3285546063,ES
3285546064,3285546071,IT
@@ -91254,7 +93698,7 @@
3285546240,3285546367,ZA
3285546368,3285546495,FR
3285546496,3285546559,NL
-3285546560,3285546623,EU
+3285546560,3285546623,BE
3285546624,3285546671,FR
3285546672,3285546687,SE
3285546688,3285546751,GB
@@ -91269,15 +93713,15 @@
3285547264,3285547519,LU
3285547520,3285547775,NL
3285547776,3285547903,ES
-3285547904,3285548031,EU
+3285547904,3285548031,BE
3285548032,3285548287,FR
3285548288,3285548543,DE
3285548544,3285548607,FR
3285548608,3285548639,LI
-3285548640,3285548647,EU
+3285548640,3285548647,BE
3285548648,3285548655,LI
3285548656,3285548735,GB
-3285548736,3285548767,EU
+3285548736,3285548767,BE
3285548768,3285548799,LU
3285548800,3285548831,IT
3285548832,3285548839,GB
@@ -91287,46 +93731,43 @@
3285549024,3285549039,PT
3285549040,3285549055,FR
3285549056,3285549183,DE
-3285549184,3285549215,EU
+3285549184,3285549215,BE
3285549216,3285549247,CH
3285549248,3285549279,DE
3285549280,3285549311,GB
3285549312,3285549695,DE
-3285549696,3285549719,EU
+3285549696,3285549719,BE
3285549720,3285549727,GB
3285549728,3285549735,SE
-3285549736,3285549767,EU
+3285549736,3285549767,BE
3285549768,3285549775,FI
3285549776,3285549791,DE
3285549792,3285549823,LU
3285549824,3285549871,DE
3285549872,3285549887,DK
3285549888,3285549951,DE
-3285549952,3285550335,EU
+3285549952,3285550335,BE
3285550336,3285550463,GB
3285550464,3285550527,DE
3285550528,3285550591,IT
3285550592,3285550847,FR
3285550848,3285550943,IT
3285550944,3285550975,NL
-3285550976,3285551007,EU
+3285550976,3285551007,BE
3285551008,3285551039,CH
3285551040,3285551071,DE
-3285551072,3285551103,EU
+3285551072,3285551103,BE
3285551104,3285551359,DE
-3285551360,3285551375,BE
-3285551376,3285551391,EU
+3285551360,3285551391,BE
3285551392,3285551423,DE
3285551424,3285551487,DK
-3285551488,3285551519,BE
-3285551520,3285551551,EU
+3285551488,3285551551,BE
3285551552,3285551615,DE
3285551616,3285551647,GB
3285551648,3285551679,FR
3285551680,3285551807,GB
3285551808,3285551839,RU
-3285551840,3285551871,EU
-3285551872,3285552127,BE
+3285551840,3285552127,BE
3285552128,3285552191,DE
3285552192,3285552255,ZA
3285552256,3285552287,CZ
@@ -91335,61 +93776,60 @@
3285552384,3285552511,DE
3285552512,3285552639,GB
3285552640,3285552927,DE
-3285552928,3285552959,EU
+3285552928,3285552959,BE
3285552960,3285553023,FR
-3285553024,3285553039,EU
+3285553024,3285553039,BE
3285553040,3285553055,EG
-3285553056,3285553087,EU
+3285553056,3285553087,BE
3285553088,3285553151,IT
3285553152,3285553215,DE
-3285553216,3285553247,EU
+3285553216,3285553247,BE
3285553248,3285553263,PL
3285553264,3285553727,DE
3285553728,3285553759,CH
3285553760,3285553767,GB
3285553768,3285553775,ZA
3285553776,3285553791,FR
-3285553792,3285553855,EU
+3285553792,3285553855,BE
3285553856,3285553887,ZA
3285553888,3285553919,DE
3285553920,3285554047,CH
3285554048,3285554127,DE
-3285554128,3285554143,EU
+3285554128,3285554143,BE
3285554144,3285554175,GB
3285554176,3285554431,AT
-3285554432,3285554687,EU
+3285554432,3285554687,BE
3285554688,3285554703,DE
-3285554704,3285554719,EU
+3285554704,3285554719,BE
3285554720,3285554751,FR
-3285554752,3285554815,EU
+3285554752,3285554815,BE
3285554816,3285554943,CH
3285554944,3285555199,LU
3285555200,3285555231,AT
3285555232,3285555263,NL
3285555264,3285555327,FR
3285555328,3285555455,IL
-3285555456,3285555711,EU
+3285555456,3285555711,BE
3285555712,3285555967,LU
3285555968,3285556223,IT
-3285556224,3285556479,EU
+3285556224,3285556479,BE
3285556480,3285556735,DE
3285556736,3285556767,CH
-3285556768,3285556771,EU
-3285556772,3285556775,BE
+3285556768,3285556775,BE
3285556776,3285556779,NL
-3285556780,3285556799,EU
+3285556780,3285556799,BE
3285556800,3285556863,DE
-3285556864,3285556991,EU
+3285556864,3285556991,BE
3285556992,3285557055,GB
3285557056,3285557119,NL
3285557120,3285557247,DE
3285557248,3285557363,NL
-3285557364,3285557375,EU
+3285557364,3285557375,BE
3285557376,3285557519,NL
3285557520,3285557535,FI
3285557536,3285557575,NL
3285557576,3285557579,SE
-3285557580,3285557583,EU
+3285557580,3285557583,BE
3285557584,3285557599,NL
3285557600,3285557631,BE
3285557632,3285557791,NL
@@ -91400,19 +93840,18 @@
3285557920,3285557951,FR
3285557952,3285558015,DE
3285558016,3285558271,NL
-3285558272,3285558399,BE
-3285558400,3285558463,EU
+3285558272,3285558463,BE
3285558464,3285558591,NL
-3285558592,3285558655,EU
+3285558592,3285558655,BE
3285558656,3285558783,IT
3285558784,3285559039,GB
-3285559040,3285559167,EU
+3285559040,3285559167,BE
3285559168,3285559231,NL
-3285559232,3285559295,EU
+3285559232,3285559295,BE
3285559296,3285559807,SE
3285559808,3285559839,IE
3285559840,3285559871,CH
-3285559872,3285559887,EU
+3285559872,3285559887,BE
3285559888,3285559903,SE
3285559904,3285559919,NL
3285559920,3285559935,SE
@@ -91422,7 +93861,7 @@
3285560384,3285560447,SE
3285560448,3285560479,LI
3285560480,3285560511,CH
-3285560512,3285560575,EU
+3285560512,3285560575,BE
3285560576,3285560831,DE
3285560832,3285561215,SE
3285561216,3285561343,NO
@@ -91431,31 +93870,31 @@
3285561472,3285561599,DK
3285561600,3285561619,NO
3285561620,3285561623,DE
-3285561624,3285561647,EU
+3285561624,3285561647,BE
3285561648,3285561663,NO
-3285561664,3285561727,EU
+3285561664,3285561727,BE
3285561728,3285561791,NO
-3285561792,3285561919,EU
+3285561792,3285561919,BE
3285561920,3285561951,CH
3285561952,3285561967,NO
-3285561968,3285561983,EU
+3285561968,3285561983,BE
3285561984,3285562111,FI
3285562112,3285562367,NO
3285562368,3285562751,FI
3285562752,3285562783,NL
-3285562784,3285562815,EU
+3285562784,3285562815,BE
3285562816,3285562879,IT
3285562880,3285562911,FI
-3285562912,3285562943,EU
+3285562912,3285562943,BE
3285562944,3285562975,DE
3285562976,3285562991,FI
-3285562992,3285562999,EU
+3285562992,3285562999,BE
3285563000,3285563007,GB
3285563008,3285563135,SE
3285563136,3285563391,FI
-3285563392,3285563455,EU
+3285563392,3285563455,BE
3285563456,3285563471,NL
-3285563472,3285563487,EU
+3285563472,3285563487,BE
3285563488,3285563519,SE
3285563520,3285563647,PL
3285563648,3285563903,CH
@@ -91464,118 +93903,114 @@
3285564160,3285564415,GB
3285564416,3285564511,CH
3285564512,3285564543,NO
-3285564544,3285564671,EU
+3285564544,3285564671,BE
3285564672,3285564735,CH
3285564736,3285564751,FR
-3285564752,3285564767,EU
+3285564752,3285564767,BE
3285564768,3285564799,SE
-3285564800,3285564927,EU
+3285564800,3285564927,BE
3285564928,3285565183,FR
3285565184,3285565439,NL
3285565440,3285565951,GB
3285565952,3285566015,FR
3285566016,3285566031,IT
-3285566032,3285566047,EU
+3285566032,3285566047,BE
3285566048,3285566079,CH
3285566080,3285566143,FR
-3285566144,3285566207,EU
+3285566144,3285566207,BE
3285566208,3285566495,RU
3285566496,3285566511,SE
3285566512,3285566527,FI
3285566528,3285566559,CH
-3285566560,3285566575,EU
+3285566560,3285566575,BE
3285566576,3285566591,CH
3285566592,3285566655,NL
-3285566656,3285566847,EU
+3285566656,3285566847,BE
3285566848,3285566975,FR
3285566976,3285567231,GB
3285567232,3285567487,PT
3285567488,3285568511,NL
3285568512,3285568671,DE
3285568672,3285568703,CH
-3285568704,3285568751,EU
+3285568704,3285568751,BE
3285568752,3285569023,DE
-3285569024,3285569407,EU
+3285569024,3285569407,BE
3285569408,3285569535,GB
3285569536,3285569791,DE
3285569792,3285570047,FI
3285570048,3285570175,FR
-3285570176,3285570207,EU
+3285570176,3285570207,BE
3285570208,3285570223,PL
3285570224,3285570239,NL
-3285570240,3285570303,EU
-3285570304,3285570559,BE
+3285570240,3285570559,BE
3285570560,3285570815,SE
3285570816,3285571071,IT
3285571072,3285571327,DE
3285571328,3285571583,FI
3285571584,3285571711,FR
3285571712,3285571775,SE
-3285571776,3285571791,BE
-3285571792,3285571807,EU
+3285571776,3285571807,BE
3285571808,3285571839,DE
-3285571840,3285571903,EU
+3285571840,3285571903,BE
3285571904,3285571967,SE
-3285571968,3285572095,EU
+3285571968,3285572095,BE
3285572096,3285572223,DE
3285572224,3285572351,FI
3285572352,3285572367,IR
3285572368,3285572383,ES
-3285572384,3285572447,EU
+3285572384,3285572447,BE
3285572448,3285572479,CH
3285572480,3285572607,FR
3285572608,3285572863,DK
3285572864,3285573119,IT
3285573120,3285573375,SE
-3285573376,3285573535,EU
+3285573376,3285573535,BE
3285573536,3285573567,CH
3285573568,3285573631,FR
3285573632,3285573887,NL
3285573888,3285573951,IL
-3285573952,3285574143,EU
+3285573952,3285574143,BE
3285574144,3285574399,RU
3285574400,3285574655,IL
3285574656,3285574911,GB
3285574912,3285575167,EU
3285575168,3285575423,ES
3285575424,3285575679,IL
-3285575680,3285575935,EU
+3285575680,3285575935,BE
3285575936,3285575999,DK
-3285576000,3285576063,EU
+3285576000,3285576063,BE
3285576064,3285576127,FR
-3285576128,3285576159,EU
+3285576128,3285576159,BE
3285576160,3285576191,DK
-3285576192,3285576447,EU
+3285576192,3285576447,BE
3285576448,3285576703,CZ
3285576704,3285576959,HU
-3285576960,3285577215,EU
+3285576960,3285577215,BE
3285577216,3285577471,ZA
3285577472,3285577599,IT
-3285577600,3285577983,EU
+3285577600,3285577983,BE
3285577984,3285578111,IT
3285578112,3285578239,DE
-3285578240,3285578367,EU
+3285578240,3285578367,BE
3285578368,3285578431,FR
-3285578432,3285578495,EU
+3285578432,3285578495,BE
3285578496,3285578751,DE
-3285578752,3285579007,EU
+3285578752,3285579007,BE
3285579008,3285579519,ES
3285579520,3285579775,FR
3285579776,3285580031,US
3285580032,3285580287,HU
3285580288,3285580415,DE
-3285580416,3285580543,EU
+3285580416,3285580543,BE
3285580544,3285580547,NL
-3285580548,3285580651,EU
+3285580548,3285580651,BE
3285580652,3285580655,SE
-3285580656,3285580799,EU
+3285580656,3285580799,BE
3285580800,3285580831,SE
3285580832,3285580847,PL
-3285580848,3285580927,EU
+3285580848,3285580927,BE
3285580928,3285581055,ZA
-3285581056,3285581183,EU
-3285581184,3285581311,BE
-3285581312,3285581503,EU
+3285581056,3285581503,BE
3285581504,3285581567,AT
3285581568,3285581599,FR
3285581600,3285581615,GB
@@ -91752,11 +94187,11 @@
3285930496,3285930559,EU
3285930560,3285930575,ES
3285930576,3285930623,GB
-3285930624,3285930631,EU
+3285930624,3285930631,BE
3285930632,3285930639,GB
3285930640,3285930655,ES
3285930656,3285930671,NL
-3285930672,3285930679,EU
+3285930672,3285930679,BE
3285930680,3285930687,DE
3285930688,3285930751,EU
3285930752,3285931007,GB
@@ -91778,7 +94213,7 @@
3285938624,3285938631,EU
3285938632,3285938639,ES
3285938640,3285938655,GB
-3285938656,3285938687,EU
+3285938656,3285938687,DE
3285938688,3285938943,ES
3285938944,3285938951,EU
3285938952,3285938959,NL
@@ -91817,7 +94252,7 @@
3285947904,3285948159,NL
3285948160,3285948671,GB
3285948672,3285948927,SA
-3285948928,3285949183,GB
+3285948928,3285949183,NG
3285949184,3285949439,ES
3285949440,3285949695,DE
3285949696,3285949823,ES
@@ -92055,8 +94490,7 @@
3286671360,3286679551,AT
3286679552,3286681631,IT
3286681632,3286681647,DE
-3286681648,3286681655,GB
-3286681656,3286681659,BE
+3286681648,3286681659,IT
3286681660,3286681663,ES
3286681664,3286681695,FR
3286681696,3286681699,ES
@@ -92068,8 +94502,7 @@
3286681768,3286681775,DE
3286681776,3286681815,IT
3286681816,3286681823,FR
-3286681824,3286682431,IT
-3286682432,3286682463,FR
+3286681824,3286682463,IT
3286682464,3286682495,RO
3286682496,3286682623,IT
3286682624,3286682879,SM
@@ -92111,6 +94544,7 @@
3286892544,3286893055,LI
3286893056,3286893567,RU
3286893568,3286894591,UA
+3286894592,3286895103,PL
3286895104,3286895615,GB
3286895616,3286896127,DE
3286896128,3286896639,SE
@@ -92120,7 +94554,7 @@
3286898176,3286898687,HR
3286898688,3286899199,EU
3286899200,3286899711,IL
-3286899712,3286900223,HU
+3286899712,3286900223,DE
3286900224,3286900735,RO
3286900736,3286900991,BE
3286900992,3286901503,DE
@@ -92298,6 +94732,7 @@
3287218176,3287218431,DE
3287218432,3287218687,GB
3287218688,3287218943,RU
+3287218944,3287219199,FR
3287219200,3287219455,DE
3287219456,3287219711,CH
3287219712,3287220223,SE
@@ -92313,6 +94748,7 @@
3287425024,3287427759,SE
3287427760,3287427775,GB
3287427776,3287433215,SE
+3287433216,3287433727,PL
3287433728,3287434239,DE
3287434240,3287434751,PL
3287434752,3287435263,GB
@@ -92379,7 +94815,7 @@
3287464448,3287464703,PL
3287464704,3287464959,NL
3287464960,3287465215,SA
-3287465216,3287465471,NO
+3287465216,3287465471,SE
3287465472,3287465727,DE
3287465728,3287465983,FR
3287465984,3287467007,DK
@@ -92437,9 +94873,7 @@
3287555072,3287555583,GB
3287555584,3287556095,FR
3287556096,3287564287,TR
-3287564288,3287564623,FI
-3287564624,3287564655,AX
-3287564656,3287572479,FI
+3287564288,3287572479,FI
3287572480,3287578863,DE
3287578864,3287578879,LI
3287578880,3287580671,DE
@@ -92488,7 +94922,6 @@
3287664896,3287665151,GB
3287665152,3287665407,NO
3287665408,3287665919,PL
-3287665920,3287666175,AT
3287666176,3287666431,RU
3287666432,3287666687,DK
3287666688,3287666943,SI
@@ -92984,9 +95417,7 @@
3290447872,3290456063,AR
3290456064,3290460159,MZ
3290460160,3290464255,ML
-3290464256,3290468351,PR
-3290468352,3290468607,DO
-3290468608,3290471487,PR
+3290464256,3290471487,PR
3290471488,3290471551,DO
3290471552,3290472447,PR
3290472448,3290480639,ZA
@@ -92997,6 +95428,7 @@
3290488832,3290489343,NG
3290489344,3290489855,KE
3290489856,3290490367,EG
+3290490880,3290492927,ZA
3290497024,3290955775,ZA
3290955776,3290980351,CR
3290980352,3290984447,ZA
@@ -93011,6 +95443,14 @@
3291168768,3291176959,TZ
3291176960,3291185151,ZW
3291185152,3291201535,UG
+3291201536,3291201791,KE
+3291201792,3291202047,ZM
+3291202048,3291202303,GH
+3291202304,3291202559,ZA
+3291202560,3291202815,GH
+3291202816,3291203071,AO
+3291203072,3291203327,EG
+3291203328,3291203583,ZW
3291217920,3291230207,ZA
3291230208,3291234303,GH
3291234304,3291242495,ZA
@@ -93182,6 +95622,8 @@
3302753608,3302753615,GH
3302753616,3302760447,NG
3302760448,3302768639,ZA
+3302768640,3302776831,NG
+3302809600,3302817791,NG
3302817792,3302883327,EG
3302883328,3302948863,MA
3302948864,3302949119,MU
@@ -93200,8 +95642,13 @@
3302952960,3302953471,EG
3302953472,3302953727,NA
3302953728,3302953983,AO
+3302953984,3302954239,SD
+3302954240,3302954495,KE
+3302987264,3302987775,MU
3305111552,3307208703,TN
3315597312,3316121599,EG
+3316121600,3316645887,ZA
+3316645888,3317170175,KE
3317694464,3318218751,EG
3318218752,3318743039,DZ
3319791616,3320053759,MU
@@ -93627,32 +96074,7 @@
3330778880,3330779135,GB
3330779136,3330791423,US
3330791424,3330791679,CA
-3330791680,3330883583,US
-3330883584,3330884351,NL
-3330884352,3330884863,US
-3330884864,3330885119,GB
-3330885120,3330888063,US
-3330888064,3330888127,NL
-3330888128,3330888191,US
-3330888192,3330888703,AU
-3330888704,3330888959,US
-3330888960,3330889215,CH
-3330889216,3330889471,GB
-3330889472,3330890239,JP
-3330890240,3330890751,BE
-3330890752,3330891263,GB
-3330891264,3330892287,US
-3330892288,3330892543,FR
-3330892544,3330893567,US
-3330893568,3330893823,NL
-3330893824,3330894079,CA
-3330894080,3330894591,GB
-3330894592,3330894847,DE
-3330894848,3330897919,US
-3330897920,3330898175,CA
-3330898176,3330898431,DE
-3330898432,3330898943,FR
-3330898944,3331102463,US
+3330791680,3331102463,US
3331102464,3331102719,CA
3331102720,3331194879,US
3331194880,3331260415,AU
@@ -93934,7 +96356,9 @@
3339165696,3339167743,US
3339167744,3339168767,PR
3339168768,3339177983,US
-3339177984,3339179007,PR
+3339177984,3339178495,PR
+3339178496,3339178751,DO
+3339178752,3339179007,PR
3339179008,3339180031,US
3339180032,3339181055,CA
3339181056,3339184127,US
@@ -93953,8 +96377,10 @@
3339943936,3339952127,US
3339952128,3339956223,CA
3339956224,3339965439,US
-3339965440,3339969535,CA
-3339969536,3340058623,US
+3339965440,3339969311,CA
+3339969312,3339969327,AU
+3339969328,3339969375,CA
+3339969376,3340058623,US
3340075008,3340080127,US
3340080128,3340081151,CA
3340081152,3340084223,US
@@ -93973,17 +96399,19 @@
3340430080,3340451839,US
3340468224,3340481535,US
3340481536,3340482559,CA
-3340482560,3340488703,US
-3340500992,3340584703,US
+3340482560,3340490751,US
+3340490752,3340492799,CA
+3340492800,3340584703,US
3340584704,3340584959,KW
-3340584960,3340898047,US
+3340584960,3340648447,US
+3340664832,3340665855,CA
+3340665856,3340677119,US
+3340677120,3340679167,CA
+3340679168,3340898047,US
3340898048,3340898303,CA
3340898304,3340925071,US
3340925072,3340925079,CA
-3340925080,3340925199,US
-3340925200,3340925207,RU
-3340925208,3340925239,US
-3340925240,3340925247,MX
+3340925080,3340925247,US
3340925248,3340925255,AR
3340925256,3340925279,US
3340925280,3340925287,CA
@@ -94073,7 +96501,10 @@
3340926928,3340926935,ES
3340926936,3340926951,US
3340926952,3340926959,BR
-3340926960,3341444863,US
+3340926960,3341041663,US
+3341058048,3341082623,US
+3341082624,3341084671,CA
+3341084672,3341444863,US
3341444864,3341445631,DE
3341445632,3341479935,US
3341479936,3341480447,DE
@@ -94105,7 +96536,10 @@
3341645056,3341645567,CA
3341645568,3341646079,US
3341646080,3341646591,CA
-3341646592,3342139391,US
+3341646592,3341762559,US
+3341778944,3341807615,US
+3341807616,3341808639,CA
+3341808640,3342139391,US
3342139392,3342204927,CH
3342204928,3342598143,US
3342598144,3342603263,CA
@@ -94231,7 +96665,10 @@
3350470656,3350475775,US
3350475776,3350476799,CA
3350476800,3350478847,US
-3350528000,3350790143,US
+3350528000,3350593535,US
+3350593536,3350609919,CA
+3350614016,3350618111,US
+3350626304,3350790143,US
3350790144,3350825727,CA
3350825728,3350825983,GB
3350825984,3350855679,CA
@@ -94413,8 +96850,8 @@
3355052288,3355053311,CA
3355053312,3355053567,US
3355054080,3355260927,US
-3355260928,3355262975,CA
-3355262976,3355310591,US
+3355260928,3355262719,CA
+3355262720,3355310591,US
3355310592,3355311103,CA
3355312128,3355319295,US
3355319296,3355320319,CA
@@ -94820,6 +97257,7 @@
3356273408,3356273663,CL
3356273664,3356274431,SV
3356274432,3356278783,CO
+3356278784,3356279039,AR
3356279040,3356279295,VE
3356279296,3356279807,CL
3356279808,3356280831,EC
@@ -94859,8 +97297,10 @@
3356295168,3356297215,CL
3356297216,3356299263,BR
3356299264,3356305663,MX
-3356305664,3356306431,AR
-3356307456,3356328959,MX
+3356305664,3356307455,AR
+3356307456,3356316671,MX
+3356316672,3356317695,AR
+3356317696,3356328959,MX
3356329984,3356332031,GF
3356332032,3356334079,CU
3356334080,3356336127,BO
@@ -95207,7 +97647,8 @@
3359249760,3359249791,BR
3359249792,3359249887,AR
3359249888,3359250175,US
-3359250176,3359252039,AR
+3359250176,3359252031,AR
+3359252032,3359252039,US
3359252040,3359252047,IT
3359252048,3359252063,US
3359252064,3359252095,AR
@@ -95219,7 +97660,7 @@
3359257088,3359257103,BR
3359257104,3359257127,AR
3359257128,3359257135,BR
-3359257136,3359257151,AR
+3359257136,3359257151,US
3359257152,3359257183,BR
3359257184,3359257215,US
3359257216,3359257247,AR
@@ -95604,6 +98045,7 @@
3362529280,3362533375,PA
3362537472,3362545663,AR
3362545664,3362549759,PE
+3362549760,3362551807,AR
3362553856,3362557951,PY
3362562048,3362563071,BZ
3362563072,3362563199,PA
@@ -96465,7 +98907,6 @@
3392407552,3392409599,ID
3392409600,3392413695,JP
3392413696,3392413951,PK
-3392413952,3392414207,HK
3392414208,3392414463,PH
3392414464,3392414719,HK
3392414720,3392415231,AU
@@ -96631,6 +99072,19 @@
3392923136,3392923391,BN
3392923392,3392923647,AP
3392923648,3392924159,CN
+3392924160,3392924671,JP
+3392924672,3392924927,PH
+3392924928,3392925183,AU
+3392925184,3392925695,VN
+3392925696,3392926719,AU
+3392926720,3392927231,IN
+3392927232,3392927743,AU
+3392927744,3392927999,IN
+3392928000,3392928255,HK
+3392928256,3392928767,TW
+3392928768,3392929279,VN
+3392929280,3392929535,PK
+3392929536,3392929791,ID
3392929792,3392931839,MU
3392931840,3392933887,PH
3392933888,3392942079,JP
@@ -96654,6 +99108,27 @@
3392999424,3393003519,JP
3393003520,3393011711,PK
3393011712,3393019903,PH
+3393019904,3393020159,ID
+3393020160,3393020415,MN
+3393020416,3393021439,ID
+3393021440,3393021695,IN
+3393021696,3393021951,HK
+3393021952,3393022463,ID
+3393022464,3393022975,AP
+3393022976,3393023231,PH
+3393023232,3393023487,AU
+3393023488,3393023743,SG
+3393023744,3393023999,IN
+3393024000,3393024511,ID
+3393024512,3393025023,NZ
+3393025024,3393025279,AU
+3393025280,3393025535,IN
+3393025536,3393025791,PH
+3393025792,3393026047,AU
+3393026048,3393026559,HK
+3393026560,3393026815,AU
+3393026816,3393027071,PK
+3393027072,3393027583,ID
3393028096,3393060863,AU
3393060864,3393062911,FJ
3393062912,3393069055,ID
@@ -97025,6 +99500,8 @@
3394896896,3394897919,TH
3394897920,3394899967,JP
3394899968,3394904063,SG
+3394904064,3394904319,AU
+3394904320,3394904575,IN
3394904576,3394905087,AU
3394905088,3394905343,BN
3394905344,3394906111,AU
@@ -99015,7 +101492,6 @@
3412296192,3412296703,ID
3412296704,3412297727,NZ
3412297728,3412298751,MY
-3412298752,3412299263,SG
3412299264,3412299519,AU
3412299520,3412299775,HK
3412299776,3412302847,AU
@@ -99150,12 +101626,14 @@
3413593856,3413594111,KH
3413594112,3413595135,CN
3413595136,3413595391,NZ
-3413595392,3413595647,AP
+3413595392,3413595647,CN
3413595648,3413595903,AU
3413595904,3413596159,HK
3413596160,3413596671,AP
3413596672,3413597183,NP
3413597184,3413597695,AP
+3413597696,3413597951,TW
+3413597952,3413598207,AU
3413639168,3413704703,SG
3413704704,3413737471,MY
3413737472,3413753855,TH
@@ -100476,9 +102954,7 @@
3423161480,3423161487,HK
3423161488,3423161613,US
3423161614,3423161621,CA
-3423161622,3423177471,US
-3423177472,3423177727,CA
-3423177728,3423182847,US
+3423161622,3423182847,US
3423182848,3423183199,CA
3423183200,3423183231,BM
3423183232,3423183263,CA
@@ -100500,9 +102976,7 @@
3423208194,3423208383,AN
3423208384,3423221759,US
3423221760,3423222783,CA
-3423222784,3423234751,US
-3423234752,3423234783,CA
-3423234784,3423235543,US
+3423222784,3423235543,US
3423235544,3423235551,TR
3423235552,3423235559,US
3423235560,3423235563,TR
@@ -100523,7 +102997,6 @@
3423264864,3423265247,US
3423265248,3423265263,EC
3423265264,3423266815,US
-3423266872,3423266879,US
3423268864,3423269135,CA
3423269136,3423269151,US
3423269152,3423269887,CA
@@ -100788,54 +103261,12 @@
3423401192,3423402943,US
3423402944,3423402951,RU
3423402952,3423412223,US
-3423412240,3423412255,GR
-3423412256,3423412287,TK
-3423412288,3423412319,RU
-3423412320,3423412335,CA
-3423412416,3423412479,SA
-3423412480,3423412495,CA
-3423412496,3423412511,US
-3423412544,3423412623,FR
-3423412624,3423412639,NO
-3423412656,3423412671,RU
-3423412688,3423412703,CA
-3423412704,3423412719,RU
-3423412720,3423412727,US
-3423412736,3423412751,CA
-3423412752,3423412767,US
-3423412768,3423412783,FI
-3423412800,3423412815,US
-3423412816,3423412831,GR
-3423412848,3423412863,US
-3423412928,3423412991,NL
-3423413056,3423413071,US
-3423413072,3423413135,CA
-3423413152,3423413167,US
-3423413184,3423413247,RS
-3423413248,3423413279,US
-3423413280,3423413295,SE
-3423413312,3423413327,PT
-3423413328,3423413343,US
-3423413376,3423413759,US
-3423414016,3423414143,CA
-3423414144,3423414159,FR
-3423414192,3423414207,US
3423414272,3423416319,US
3423417344,3423417470,US
3423417471,3423417480,AU
-3423417481,3423417636,US
-3423417637,3423417646,CA
-3423417647,3423417715,US
-3423417716,3423417725,BR
-3423417726,3423417769,US
-3423417770,3423417777,CA
-3423417778,3423417954,US
-3423417955,3423417964,GB
-3423417965,3423417975,US
+3423417481,3423417975,US
3423417976,3423417995,RO
-3423417996,3423418172,US
-3423418173,3423418180,JP
-3423418181,3423462655,US
+3423417996,3423462655,US
3423462656,3423462671,CA
3423462672,3423473663,US
3423473664,3423474655,CA
@@ -100846,9 +103277,7 @@
3423480320,3423480447,NG
3423480448,3423480527,A2
3423480528,3423480543,US
-3423480544,3423480575,A2
-3423480576,3423480831,DM
-3423480832,3423480927,A2
+3423480544,3423480927,A2
3423480928,3423480935,US
3423480936,3423480943,AO
3423480944,3423481007,A2
@@ -100861,9 +103290,9 @@
3423481856,3423493631,US
3423493632,3423493887,RU
3423493888,3423493903,ID
-3423493904,3423493911,ES
-3423493912,3423493927,TT
-3423493928,3423493967,US
+3423493904,3423493911,US
+3423493912,3423493919,TT
+3423493920,3423493967,US
3423493968,3423493975,AT
3423493976,3423498079,US
3423498080,3423498087,CA
@@ -100910,11 +103339,7 @@
3423585536,3423585551,IR
3423585552,3423585631,CA
3423585632,3423585647,US
-3423585648,3423585807,CA
-3423585808,3423585823,US
-3423585824,3423585839,CA
-3423585840,3423585847,US
-3423585848,3423585879,CA
+3423585648,3423585879,CA
3423585880,3423585887,US
3423585888,3423585895,CA
3423585896,3423585903,NL
@@ -100924,7 +103349,7 @@
3423585928,3423585935,NZ
3423585936,3423585999,CA
3423586000,3423586007,US
-3423586008,3423586015,PA
+3423586008,3423586015,NZ
3423586016,3423586031,US
3423586032,3423586039,NZ
3423586040,3423586159,CA
@@ -100972,42 +103397,7 @@
3423858688,3423862783,CA
3423862784,3424334847,US
3424334848,3424335871,CA
-3424335872,3424335903,US
-3424335904,3424335911,CN
-3424335912,3424335943,US
-3424335944,3424335951,BY
-3424335952,3424335983,US
-3424335984,3424335991,GB
-3424335992,3424336015,US
-3424336016,3424336023,BY
-3424336024,3424336087,US
-3424336088,3424336111,CA
-3424336112,3424336367,US
-3424336368,3424336375,SE
-3424336376,3424336495,US
-3424336496,3424336511,CN
-3424336512,3424336647,US
-3424336648,3424336655,BY
-3424336656,3424336703,US
-3424336704,3424336711,SG
-3424336712,3424336743,US
-3424336744,3424336751,GB
-3424336752,3424336775,US
-3424336776,3424336783,BE
-3424336784,3424336847,US
-3424336848,3424336855,BR
-3424336856,3424336871,US
-3424336872,3424336879,IN
-3424336880,3424337151,US
-3424337152,3424337159,BY
-3424337160,3424337175,US
-3424337176,3424337183,SG
-3424337184,3424337191,US
-3424337192,3424337199,BY
-3424337200,3424337255,US
-3424337256,3424337263,IL
-3424337264,3424337271,MX
-3424337272,3424378879,US
+3424335872,3424378879,US
3424378880,3424379135,PR
3424379136,3424493823,US
3424493824,3424494079,CA
@@ -101660,15 +104050,21 @@
3434917376,3434917887,AG
3434917888,3435069439,US
3435069440,3435134975,CA
-3435134976,3436249087,US
-3436249088,3436282367,CA
+3435134976,3435507711,US
+3435507712,3435511807,CA
+3435511808,3436249087,US
+3436249088,3436255743,CA
+3436255744,3436256255,US
+3436256256,3436282367,CA
3436282368,3436282623,US
3436282624,3436289791,CA
3436289792,3436290047,US
3436290048,3436314623,CA
3436314624,3436476415,US
3436476416,3436478463,AW
-3436478464,3436697087,US
+3436478464,3436492799,US
+3436492800,3436493055,NL
+3436493056,3436697087,US
3436697088,3436697343,VE
3436697344,3437232383,US
3437232384,3437232639,CA
@@ -101692,16 +104088,26 @@
3437292800,3437293055,CA
3437293056,3437296639,US
3437296640,3437296895,CA
-3437296896,3437297663,US
-3437297664,3437310975,CA
+3437296896,3437297919,US
+3437297920,3437307391,CA
+3437307392,3437307903,US
+3437307904,3437310975,CA
3437310976,3437311487,US
3437311488,3437331711,CA
3437331712,3437331967,US
-3437331968,3437334015,CA
+3437331968,3437332479,CA
+3437332480,3437332735,US
+3437332736,3437334015,CA
3437334016,3437334271,US
-3437334272,3437341695,CA
+3437334272,3437336063,CA
+3437336064,3437336319,US
+3437336320,3437341695,CA
3437341696,3437341951,US
-3437341952,3437358847,CA
+3437341952,3437343231,CA
+3437343232,3437343487,US
+3437343488,3437350911,CA
+3437350912,3437351423,US
+3437351424,3437358847,CA
3437358848,3437359103,US
3437359104,3437428735,CA
3437428736,3437691391,US
@@ -101962,11 +104368,22 @@
3438034944,3438051327,BS
3438051328,3438084095,US
3438084096,3438116863,CA
-3438116864,3438215167,US
-3438215168,3438217983,CA
+3438116864,3438215423,US
+3438215424,3438215935,CA
+3438215936,3438216191,US
+3438216192,3438217983,CA
3438217984,3438218239,US
3438218240,3438218751,CA
-3438219264,3438280703,CA
+3438218752,3438219263,US
+3438219264,3438219519,CA
+3438219520,3438219775,US
+3438219776,3438246911,CA
+3438246912,3438247167,US
+3438247168,3438252543,CA
+3438252544,3438252799,US
+3438252800,3438261759,CA
+3438261760,3438262015,US
+3438262016,3438280703,CA
3438280704,3438542847,US
3438542848,3438544943,CA
3438544944,3438544959,TC
@@ -101991,9 +104408,7 @@
3438592264,3438600319,CA
3438600320,3438600351,US
3438600352,3438608383,CA
-3438608384,3438689535,US
-3438689536,3438689791,CA
-3438689792,3438813183,US
+3438608384,3438813183,US
3438813184,3438814207,GH
3438814208,3438895103,US
3438895104,3438896895,HN
@@ -102092,7 +104507,11 @@
3448399360,3448399871,CA
3448399872,3448411391,US
3448411392,3448411455,CA
-3448411456,3448461311,US
+3448411456,3448414271,US
+3448414272,3448414295,JP
+3448414296,3448414303,US
+3448414304,3448414335,JP
+3448414336,3448461311,US
3448461312,3448461391,GB
3448461392,3448461415,US
3448461416,3448461423,SG
@@ -102129,7 +104548,12 @@
3448545952,3448545967,SG
3448545968,3448545975,MY
3448545976,3448546007,AU
-3448546008,3448556671,US
+3448546008,3448546047,US
+3448546048,3448546079,MY
+3448546080,3448546119,SG
+3448546120,3448546175,US
+3448546176,3448546207,SG
+3448546208,3448556671,US
3448556672,3448556735,GB
3448556736,3448556799,US
3448556800,3448556815,GB
@@ -102139,7 +104563,9 @@
3448559104,3448559359,GB
3448559360,3448563015,US
3448563016,3448563031,GB
-3448563032,3449001245,US
+3448563032,3448569055,US
+3448569056,3448569087,MX
+3448569088,3449001245,US
3449001246,3449001246,MC
3449001247,3449159679,US
3449159680,3449160703,CA
@@ -102350,7 +104776,9 @@
3450936320,3450936351,HK
3450936352,3450974255,US
3450974256,3450974271,GB
-3450974272,3451170303,US
+3450974272,3450986495,US
+3450986496,3450986751,HK
+3450986752,3451170303,US
3451170304,3451170559,VE
3451170560,3451187967,US
3451187968,3451188223,AU
@@ -102360,7 +104788,9 @@
3451236352,3451236607,HU
3451236608,3451371519,US
3451371520,3451371775,GB
-3451371776,3451506687,US
+3451371776,3451482111,US
+3451482112,3451486207,CA
+3451486208,3451506687,US
3451506688,3451507199,BR
3451507200,3451715583,US
3451715584,3451737343,CA
@@ -102420,7 +104850,7 @@
3452436480,3452502015,CA
3452502016,3452678143,US
3452678144,3452682239,BE
-3452682240,3452706815,US
+3452682240,3452715007,US
3452715008,3452723199,CA
3452731392,3452764159,US
3452764160,3452764439,CA
@@ -102474,9 +104904,7 @@
3452936192,3452960767,CA
3452960768,3453026303,US
3453026304,3453028607,CA
-3453029376,3453032447,US
-3453032448,3453032703,CA
-3453032704,3453039167,US
+3453029376,3453039167,US
3453039168,3453039183,AU
3453039184,3453039199,US
3453039200,3453039215,CA
@@ -102718,8 +105146,8 @@
3453554880,3453555711,US
3453555712,3453555767,GB
3453555768,3453599999,US
-3453600000,3453600511,GB
-3453600512,3453607935,US
+3453600000,3453600767,GB
+3453600768,3453607935,US
3453607936,3453608959,KN
3453608960,3453609983,LC
3453609984,3453610495,AG
@@ -102942,7 +105370,9 @@
3455647488,3455647743,IT
3455647744,3455713279,US
3455713280,3455778815,CA
-3455778816,3456303103,US
+3455778816,3455871999,US
+3455872000,3455872255,ZM
+3455872256,3456303103,US
3456303104,3456311295,JP
3456311296,3456892927,US
3456892928,3456958463,CA
@@ -102998,7 +105428,11 @@
3458144000,3458144015,DE
3458144016,3458144031,US
3458144032,3458144047,DE
-3458144048,3458195455,US
+3458144048,3458144111,US
+3458144112,3458144119,CA
+3458144120,3458144415,US
+3458144416,3458144423,DE
+3458144424,3458195455,US
3458195456,3458196479,SG
3458196480,3458765631,US
3458765632,3458765695,CA
@@ -103199,30 +105633,31 @@
3460161536,3460163583,PR
3460163584,3460374527,US
3460374528,3460375551,MX
-3460375552,3460408359,US
-3460408360,3460408367,DE
-3460408368,3460409951,US
-3460409952,3460409967,DE
-3460409968,3460413535,US
-3460413536,3460413543,DE
-3460413544,3460453631,US
+3460375552,3460453631,US
3460453632,3460453887,BS
3460453888,3460507647,US
3460507648,3460507903,MX
-3460507904,3460854911,US
+3460507904,3460854439,US
+3460854440,3460854447,CA
+3460854448,3460854831,US
+3460854832,3460854847,VE
+3460854848,3460854911,US
3460854912,3460854943,GB
3460854944,3460855023,US
3460855024,3460855031,BR
3460855032,3460855247,US
3460855248,3460855255,AU
-3460855256,3460855271,US
+3460855256,3460855263,VE
+3460855264,3460855271,US
3460855272,3460855279,GB
3460855280,3460855287,CA
3460855288,3460855311,US
3460855312,3460855319,CA
3460855320,3460855463,US
3460855464,3460855471,SA
-3460855472,3460855535,US
+3460855472,3460855495,US
+3460855496,3460855503,CA
+3460855504,3460855535,US
3460855536,3460855543,MX
3460855544,3460855551,AU
3460855552,3460855631,US
@@ -103239,11 +105674,10 @@
3460855864,3460855871,US
3460855872,3460855879,GB
3460855880,3460855887,GU
-3460855888,3460855927,US
-3460855928,3460855935,GB
-3460855936,3460856007,US
+3460855888,3460856007,US
3460856008,3460856015,CA
-3460856016,3460856127,US
+3460856016,3460856119,US
+3460856120,3460856127,GB
3460856128,3460856135,JP
3460856136,3460856191,US
3460856192,3460856199,ZA
@@ -103732,35 +106166,13 @@
3462340608,3462340863,CA
3462340864,3462350847,US
3462350848,3462351103,CA
-3462351104,3462478559,US
-3462478560,3462478591,IL
-3462478592,3462478623,US
-3462478624,3462478655,IL
-3462478656,3462478943,US
-3462478944,3462478975,IL
-3462478976,3462571095,US
+3462351104,3462571095,US
3462571096,3462571103,CA
3462571104,3462571663,US
3462571664,3462571671,CA
3462571672,3462593791,US
3462593792,3462594559,GN
-3462594560,3462605823,US
-3462605824,3462606847,UY
-3462606848,3462606863,US
-3462606864,3462606927,UY
-3462606928,3462606943,US
-3462606944,3462606991,UY
-3462606992,3462607007,US
-3462607008,3462607087,UY
-3462607088,3462607135,US
-3462607136,3462607167,UY
-3462607168,3462607199,US
-3462607200,3462607231,UY
-3462607232,3462607263,US
-3462607264,3462608799,UY
-3462608800,3462608815,US
-3462608816,3462608895,UY
-3462608896,3462633727,US
+3462594560,3462633727,US
3462633728,3462633799,BV
3462633800,3462633823,US
3462633824,3462633855,SG
@@ -103842,9 +106254,7 @@
3464196160,3464196175,US
3464196176,3464196183,AU
3464196184,3464196191,IT
-3464196192,3464196287,US
-3464196288,3464196295,SG
-3464196296,3464208383,US
+3464196192,3464208383,US
3464208384,3464216575,CA
3464216576,3464309903,US
3464309904,3464309911,CA
@@ -103862,7 +106272,8 @@
3464342544,3464342559,SE
3464342560,3464342703,US
3464342704,3464342711,JP
-3464342712,3464342879,US
+3464342712,3464342871,US
+3464342872,3464342879,ZA
3464342880,3464342887,GB
3464342888,3464343111,US
3464343112,3464343119,CN
@@ -103944,7 +106355,9 @@
3465413120,3465413127,HK
3465413128,3465413375,US
3465413376,3465413383,HK
-3465413384,3465510911,US
+3465413384,3465462783,US
+3465462784,3465463039,GB
+3465463040,3465510911,US
3465510912,3465543679,JP
3465543680,3465982991,US
3465982992,3465983007,GB
@@ -104209,8 +106622,7 @@
3468082432,3468082687,NO
3468082688,3468083311,US
3468083312,3468083327,IN
-3468083328,3468083391,BR
-3468083392,3468083663,US
+3468083328,3468083663,US
3468083664,3468083679,ID
3468083680,3468083967,US
3468083968,3468084223,AU
@@ -104321,9 +106733,7 @@
3468128256,3468296191,US
3468296192,3468309503,CA
3468309504,3468309759,US
-3468309760,3468313471,CA
-3468313472,3468313599,US
-3468313600,3468319999,CA
+3468309760,3468319999,CA
3468320000,3468320255,US
3468320256,3468320351,CA
3468320352,3468320383,US
@@ -104365,7 +106775,9 @@
3468460032,3468468223,BM
3468468224,3468545791,US
3468545792,3468546047,SG
-3468546048,3468623871,US
+3468546048,3468619007,US
+3468619008,3468619263,CA
+3468619264,3468623871,US
3468623872,3468624527,CA
3468624528,3468624543,US
3468624544,3468624551,CA
@@ -104388,7 +106800,9 @@
3468628512,3468628607,US
3468628608,3468628927,CA
3468628928,3468628991,US
-3468628992,3468631583,CA
+3468628992,3468629311,CA
+3468629312,3468629319,US
+3468629320,3468631583,CA
3468631584,3468631615,US
3468631616,3468631679,CA
3468631680,3468631695,US
@@ -104426,22 +106840,18 @@
3469901824,3470131199,US
3470131200,3470137343,AG
3470137344,3470139391,VG
+3470139392,3470143487,US
3470147584,3470148095,US
3470148096,3470148351,CA
-3470148352,3470148607,US
-3470148608,3470148863,CR
+3470148352,3470148863,US
3470148864,3470149119,CA
3470149120,3470150655,US
3470150656,3470150911,CA
3470150912,3470151935,US
-3470151936,3470152703,CA
-3470152704,3470153215,US
-3470153216,3470153471,CA
-3470153472,3470154495,US
-3470154496,3470154751,CA
-3470154752,3470155007,US
-3470155008,3470155775,CA
-3470155776,3470184454,US
+3470151936,3470152447,CA
+3470152448,3470153983,US
+3470153984,3470154239,CA
+3470154240,3470184454,US
3470184455,3470184458,LK
3470184459,3470184460,RU
3470184461,3470184476,US
@@ -104914,6 +107324,7 @@
3470188511,3470188521,US
3470188522,3470188541,HK
3470188542,3470192639,US
+3470192640,3470196735,CA
3470196736,3470360631,US
3470360632,3470360639,CA
3470360640,3470360687,US
@@ -104922,30 +107333,25 @@
3470360800,3470360807,CA
3470360808,3470361039,US
3470361040,3470361055,CA
-3470361056,3470361615,US
-3470361616,3470361623,AF
-3470361624,3470361655,US
+3470361056,3470361655,US
3470361656,3470361671,CA
3470361672,3470361703,US
3470361704,3470361711,AF
3470361712,3470361935,US
3470361936,3470361951,CA
-3470361952,3470361959,CL
-3470361960,3470361983,US
+3470361952,3470361983,US
3470361984,3470361991,CA
3470361992,3470362111,US
3470362112,3470362119,CA
3470362120,3470362127,AU
3470362128,3470362159,US
3470362160,3470362167,AF
-3470362168,3470362175,US
-3470362176,3470362191,CA
-3470362192,3470362263,US
+3470362168,3470362263,US
3470362264,3470362271,NZ
3470362272,3470362319,US
3470362320,3470362335,AF
-3470362336,3470362447,US
-3470362448,3470362479,CA
+3470362336,3470362455,US
+3470362456,3470362479,CA
3470362480,3470362495,US
3470362496,3470362503,CA
3470362504,3470362559,US
@@ -104974,9 +107380,7 @@
3470364416,3470364479,CA
3470364480,3470364495,HN
3470364496,3470364503,CA
-3470364504,3470364527,US
-3470364528,3470364535,CA
-3470364536,3470458879,US
+3470364504,3470458879,US
3470458880,3470475263,KR
3470475264,3470558207,US
3470558208,3470559231,HK
@@ -105232,9 +107636,7 @@
3470794752,3470802943,PA
3470802944,3470873288,US
3470873289,3470873296,MX
-3470873297,3470873584,US
-3470873585,3470873592,NA
-3470873593,3470875817,US
+3470873297,3470875817,US
3470875818,3470875827,JP
3470875828,3470876402,US
3470876403,3470876410,IN
@@ -105270,57 +107672,11 @@
3473040896,3473041407,BM
3473041408,3473096192,US
3473096193,3473096447,PH
-3473096448,3473109007,US
-3473109008,3473109023,UY
-3473109024,3473109039,US
-3473109040,3473109071,UY
-3473109072,3473109087,US
-3473109088,3473109151,UY
-3473109152,3473109167,US
-3473109168,3473109183,UY
-3473109184,3473109215,US
-3473109216,3473109247,UY
-3473109248,3473109279,US
-3473109280,3473109311,UY
-3473109312,3473109407,US
-3473109408,3473109471,UY
-3473109472,3473109487,US
-3473109488,3473109495,UY
-3473109496,3473109535,US
-3473109536,3473109543,UY
-3473109544,3473109567,US
-3473109568,3473109695,UY
-3473109696,3473109791,US
-3473109792,3473110271,UY
-3473110272,3473110303,US
-3473110304,3473110383,UY
-3473110384,3473110399,US
-3473110400,3473110431,UY
-3473110432,3473110495,US
-3473110496,3473110783,UY
-3473110784,3473110791,US
-3473110792,3473110815,UY
-3473110816,3473110831,US
-3473110832,3473111007,UY
-3473111008,3473111167,US
-3473111168,3473112575,UY
-3473112576,3473112639,US
-3473112640,3473112703,UY
-3473112704,3473112831,US
-3473112832,3473112863,UY
-3473112864,3473112895,US
-3473112896,3473112959,UY
-3473112960,3473276927,US
+3473096448,3473276927,US
3473276928,3473342463,CA
3473342464,3473375495,US
3473375496,3473375503,NZ
-3473375504,3473375671,US
-3473375672,3473375679,GB
-3473375680,3473377279,US
-3473377280,3473377535,GB
-3473377536,3473378559,US
-3473378560,3473378575,DE
-3473378576,3473381311,US
+3473375504,3473381311,US
3473381312,3473381343,DE
3473381344,3473703551,US
3473703552,3473703679,CA
@@ -105401,7 +107757,9 @@
3475745536,3475752703,US
3475752704,3475752959,AN
3475752960,3475881983,US
-3475881984,3475884031,CA
+3475881984,3475883487,CA
+3475883488,3475883519,US
+3475883520,3475884031,CA
3475884032,3475884287,US
3475884288,3475884319,CA
3475884320,3475884327,US
@@ -105416,9 +107774,7 @@
3476076320,3476076351,JO
3476076352,3476111359,US
3476111360,3476111871,CA
-3476111872,3476221951,US
-3476221952,3476223999,UY
-3476224000,3476265855,US
+3476111872,3476265855,US
3476265856,3476265919,EG
3476265920,3476348927,US
3476348928,3476349183,CA
@@ -105448,9 +107804,7 @@
3476721320,3476721327,GB
3476721328,3476721679,US
3476721680,3476721687,IT
-3476721688,3476721703,US
-3476721704,3476721711,SI
-3476721712,3476721743,US
+3476721688,3476721743,US
3476721744,3476721759,CA
3476721760,3476721799,US
3476721800,3476721807,GB
@@ -105469,11 +107823,7 @@
3476722528,3476722543,AU
3476722544,3476722591,US
3476722592,3476722607,GB
-3476722608,3476722695,US
-3476722696,3476722703,CA
-3476722704,3476722727,US
-3476722728,3476722735,BR
-3476722736,3476722759,US
+3476722608,3476722759,US
3476722760,3476722767,IN
3476722768,3476722775,US
3476722776,3476722783,GB
@@ -105483,22 +107833,17 @@
3476725184,3476725215,ZA
3476725216,3476725247,US
3476725248,3476725255,CA
-3476725256,3476725263,NL
-3476725264,3476725287,US
-3476725288,3476725295,NL
+3476725256,3476725295,US
3476725296,3476725303,CA
-3476725304,3476725359,NL
+3476725304,3476725351,US
+3476725352,3476725359,NL
3476725360,3476725367,US
3476725368,3476725375,CA
-3476725376,3476725383,VE
-3476725384,3476725399,US
+3476725376,3476725399,US
3476725400,3476725415,CA
3476725416,3476725423,US
3476725424,3476725431,GB
-3476725432,3476725439,NL
-3476725440,3476725455,US
-3476725456,3476725463,NL
-3476725464,3476732373,US
+3476725432,3476732373,US
3476732374,3476732377,MX
3476732378,3476881407,US
3476881408,3476946943,CA
@@ -105526,9 +107871,7 @@
3478323392,3478323399,CA
3478323400,3478331519,US
3478331520,3478331647,GB
-3478331648,3478331839,US
-3478331840,3478331847,DK
-3478331848,3478332991,US
+3478331648,3478332991,US
3478332992,3478332999,CA
3478333000,3478347903,US
3478347904,3478348031,MX
@@ -105545,9 +107888,7 @@
3478364272,3478372351,US
3478372352,3478380543,MX
3478380544,3479207935,US
-3479207936,3479214079,CA
-3479214080,3479214335,US
-3479214336,3479240703,CA
+3479207936,3479240703,CA
3479240704,3479289919,US
3479289920,3479289951,BD
3479289952,3479290063,US
@@ -105732,9 +108073,7 @@
3480251072,3480256511,CA
3480256512,3480284159,US
3480284160,3480284671,CA
-3480284672,3480416063,US
-3480416064,3480416095,PA
-3480416096,3480444927,US
+3480284672,3480444927,US
3480444928,3480446335,CA
3480446336,3480446463,US
3480446464,3480446575,CA
@@ -105888,8 +108227,8 @@
3480612096,3480612351,LU
3480612352,3480613631,DE
3480613632,3480839423,US
-3480839424,3480840191,GB
-3480840192,3480907263,US
+3480839424,3480839935,GB
+3480839936,3480907263,US
3480907264,3480907775,FR
3480907776,3480968191,US
3480968192,3480968447,AU
@@ -105968,11 +108307,7 @@
3483877376,3483893759,CA
3483893760,3484013055,US
3484013056,3484013567,DE
-3484013568,3484319743,US
-3484320256,3484320815,US
-3484320816,3484320823,DE
-3484320832,3484321279,US
-3484321792,3484450815,US
+3484013568,3484450815,US
3484450816,3484451839,CA
3484451840,3484451871,US
3484451872,3484455263,CA
@@ -106156,7 +108491,7 @@
3486269440,3486285823,JM
3486285824,3486302207,PR
3486302208,3486310399,CA
-3486318592,3486501951,US
+3486310400,3486501951,US
3486501952,3486501967,DE
3486501968,3486580735,US
3486580736,3486580991,GB
@@ -106430,11 +108765,7 @@
3487858688,3487859199,KY
3487859200,3487861759,BM
3487861760,3487862015,KY
-3487862016,3487862271,BM
-3487862272,3487862783,KY
-3487862784,3487863039,BM
-3487863040,3487863807,KY
-3487863808,3487875071,BM
+3487862016,3487875071,BM
3487875072,3487891455,US
3487891456,3487907839,CA
3487907840,3487969791,US
@@ -106526,13 +108857,7 @@
3489969152,3489969663,PR
3489969664,3490041503,US
3490041504,3490041535,CA
-3490041536,3490072831,US
-3490072832,3490073279,CA
-3490073280,3490073311,US
-3490073312,3490073375,CA
-3490073376,3490073599,US
-3490073600,3490074622,CA
-3490074623,3490228735,US
+3490041536,3490228735,US
3490228736,3490229247,CO
3490229248,3490263039,US
3490263040,3490267135,CO
@@ -106658,25 +108983,12 @@
3493081600,3493082623,PY
3493082624,3493089023,US
3493089024,3493089279,A2
-3493089280,3493089311,BO
-3493089312,3493089343,US
-3493089344,3493090815,BO
-3493090816,3493091327,US
+3493089280,3493091327,US
3493091328,3493092351,BO
3493092352,3493092607,NA
-3493092608,3493135167,US
-3493135168,3493135199,CY
-3493135200,3493135871,US
-3493135872,3493136127,CA
-3493136128,3493138207,US
+3493092608,3493138207,US
3493138208,3493138239,DE
-3493138240,3493139711,US
-3493139712,3493139775,CA
-3493139776,3493139839,US
-3493139840,3493139935,CA
-3493139936,3493140127,US
-3493140128,3493140159,CA
-3493140160,3493141279,US
+3493138240,3493141279,US
3493141280,3493141311,CY
3493141312,3493244927,US
3493244928,3493249023,PR
@@ -106701,9 +109013,11 @@
3493902216,3493902223,CA
3493902224,3493903551,US
3493903552,3493903567,KW
-3493903568,3493907199,US
+3493903568,3493906431,US
+3493906944,3493907199,US
3493907200,3493907231,GB
-3493907232,3493914111,US
+3493907232,3493907263,US
+3493907328,3493914111,US
3493914112,3493914367,CA
3493914368,3493936127,US
3493936128,3493937151,CA
@@ -106718,47 +109032,14 @@
3493991424,3493998591,US
3493998592,3494000639,AI
3494000640,3494003711,US
-3494003712,3494003967,CA
-3494003968,3494003983,US
-3494003984,3494003991,SA
-3494003992,3494003999,US
-3494004000,3494004047,CA
-3494004048,3494004055,US
-3494004056,3494004095,CA
-3494004096,3494004111,US
-3494004112,3494004127,CA
-3494004128,3494004159,BR
-3494004160,3494004183,US
-3494004184,3494004290,CA
-3494004291,3494004312,US
-3494004313,3494004319,CA
-3494004320,3494004351,FR
-3494004352,3494004383,US
-3494004384,3494004735,CA
+3494003712,3494004735,CA
3494004736,3494009855,US
3494009856,3494010879,CA
3494010880,3494011231,US
3494011232,3494011247,HK
3494011248,3494014975,US
3494014976,3494017023,CA
-3494017024,3494035455,US
-3494035712,3494035791,US
-3494035792,3494035807,BY
-3494035808,3494035823,CY
-3494035824,3494035887,US
-3494035888,3494035904,RU
-3494035905,3494035967,ES
-3494035968,3494036031,US
-3494036032,3494036047,CA
-3494036048,3494036063,RU
-3494036064,3494036255,US
-3494036256,3494036287,CA
-3494036288,3494036319,US
-3494036320,3494036351,RU
-3494036352,3494036417,EE
-3494036418,3494036431,US
-3494036432,3494036439,RU
-3494036480,3494044671,US
+3494017024,3494044671,US
3494044672,3494045695,CA
3494045696,3494049791,US
3494049792,3494051839,CA
@@ -106787,16 +109068,7 @@
3494110092,3494110109,CA
3494110110,3494110145,US
3494110146,3494110161,CA
-3494110162,3494114303,US
-3494115328,3494115471,US
-3494115472,3494115487,AU
-3494115488,3494116407,US
-3494116408,3494116415,CA
-3494116416,3494116431,US
-3494116432,3494116439,GB
-3494116440,3494116511,US
-3494116512,3494116519,NL
-3494116520,3494121471,US
+3494110162,3494121471,US
3494121472,3494122495,CA
3494122496,3494135807,US
3494135808,3494136831,CA
@@ -106894,8 +109166,8 @@
3494299688,3494299695,SC
3494299696,3494299727,US
3494299728,3494299735,SC
-3494299736,3494300359,US
-3494300360,3494300383,TW
+3494299736,3494300367,US
+3494300368,3494300383,TW
3494300384,3494300927,US
3494300928,3494301055,TW
3494301056,3494301247,US
@@ -107040,96 +109312,8 @@
3494605824,3494606847,CA
3494606848,3494610943,US
3494610944,3494611967,CA
-3494611968,3494624263,US
-3494624264,3494624271,DE
-3494624272,3494624279,US
-3494624280,3494624287,GB
-3494624288,3494624295,ES
-3494624296,3494624319,US
-3494624320,3494624327,CR
-3494624328,3494624335,SA
-3494624336,3494624343,MY
-3494624344,3494624351,CA
-3494624352,3494624367,US
-3494624368,3494624375,CA
-3494624376,3494624383,LT
-3494624384,3494624391,UA
-3494624392,3494624399,GB
-3494624400,3494624407,US
-3494624408,3494624415,CA
-3494624416,3494624423,RU
-3494624424,3494624439,US
-3494624440,3494624447,NL
-3494624448,3494624455,CA
-3494624456,3494624463,ES
-3494624464,3494624471,US
-3494624472,3494624479,ZA
-3494624480,3494624527,US
-3494624528,3494624535,CA
-3494624536,3494624543,US
-3494624544,3494624551,CA
-3494624552,3494624591,US
-3494624592,3494624599,RU
-3494624600,3494624607,IL
-3494624608,3494624631,US
-3494624632,3494624639,ZA
-3494624640,3494624647,GB
-3494624648,3494624655,MK
-3494624656,3494624671,US
-3494624672,3494624679,BY
-3494624680,3494624687,US
-3494624688,3494624695,JP
-3494624696,3494624703,NL
-3494624704,3494624711,DE
-3494624712,3494624719,US
-3494624720,3494624727,ZA
-3494624728,3494624735,SG
-3494624736,3494624751,US
-3494624752,3494624759,DE
-3494624760,3494624767,RU
-3494624768,3494624775,US
-3494624776,3494624791,CA
-3494624792,3494624799,US
-3494624800,3494624807,RU
-3494624808,3494624815,CA
-3494624816,3494624823,US
-3494624824,3494624831,CA
-3494624832,3494624855,US
-3494624856,3494624863,CA
-3494624864,3494624871,US
-3494624872,3494624879,CA
-3494624880,3494624887,US
-3494624888,3494624903,CA
-3494624904,3494624911,JP
-3494624912,3494624919,DE
-3494624920,3494624935,US
-3494624936,3494624943,CA
-3494624944,3494624951,US
-3494624952,3494624959,CA
-3494624960,3494624975,AU
-3494624976,3494624983,RU
-3494624984,3494624991,CA
-3494624992,3494625047,US
-3494625048,3494625055,CA
-3494625056,3494625063,UA
-3494625064,3494625071,NL
-3494625072,3494625111,US
-3494625112,3494625119,VG
-3494625120,3494625127,IT
-3494625128,3494625143,US
-3494625144,3494625151,AU
-3494625152,3494625159,US
-3494625160,3494625167,UA
-3494625168,3494625183,US
-3494625184,3494625199,CA
-3494625200,3494625207,UA
-3494625208,3494625223,US
-3494625224,3494625231,CA
-3494625232,3494625247,US
-3494625248,3494625255,RO
-3494625256,3494625263,US
-3494625264,3494625271,AE
-3494625272,3494625279,AU
+3494611968,3494624255,US
+3494624256,3494625279,CA
3494625280,3494627327,US
3494627328,3494628351,BM
3494628352,3494651903,US
@@ -107167,7 +109351,8 @@
3494698792,3494698799,CA
3494698800,3494698843,US
3494698844,3494698847,EG
-3494698848,3494698887,US
+3494698848,3494698879,US
+3494698880,3494698887,IN
3494698888,3494698895,EG
3494698896,3494700031,US
3494700032,3494701055,CA
@@ -107179,33 +109364,44 @@
3494730752,3494731775,CA
3494731776,3494743039,US
3494743040,3494744063,CA
-3494744064,3494744703,US
+3494744064,3494744399,US
+3494744400,3494744407,AU
+3494744408,3494744703,US
3494744704,3494744711,DK
3494744712,3494745151,US
3494745152,3494745159,AU
3494745160,3494745303,US
3494745304,3494745311,AU
-3494745312,3494745919,US
+3494745312,3494745879,US
+3494745880,3494745887,GB
+3494745888,3494745919,US
3494745920,3494745927,CN
-3494745928,3494757375,US
+3494745928,3494745951,US
+3494745952,3494745959,GB
+3494745960,3494746019,US
+3494746020,3494746023,AU
+3494746024,3494757375,US
3494757376,3494758399,CA
3494758400,3494763007,US
3494763008,3494763015,ES
3494763016,3494763047,US
3494763048,3494763055,JP
-3494763056,3494763063,US
+3494763056,3494763063,AU
3494763064,3494763071,MX
3494763072,3494763119,US
3494763120,3494763127,DE
3494763128,3494763143,US
3494763144,3494763151,ES
-3494763152,3494763903,US
+3494763152,3494763199,US
+3494763200,3494763207,KY
+3494763208,3494763903,US
3494763904,3494763919,AU
3494763920,3494764295,US
3494764296,3494764303,CA
3494764304,3494764343,US
3494764344,3494764351,GB
-3494764352,3494764383,US
+3494764352,3494764375,US
+3494764376,3494764383,AU
3494764384,3494764391,GB
3494764392,3494764447,US
3494764448,3494764463,GB
@@ -107235,9 +109431,11 @@
3494866944,3494867967,CA
3494867968,3494893567,US
3494893568,3494894591,CA
-3494894592,3494917119,US
-3494917120,3494917631,CA
-3494917632,3494928383,US
+3494894592,3494906367,US
+3494906368,3494906431,IL
+3494906432,3494917119,US
+3494917120,3494918143,CA
+3494918144,3494928383,US
3494928384,3494930431,CA
3494930432,3494938623,US
3494938624,3494939647,CA
@@ -107261,7 +109459,9 @@
3495023616,3495024639,CA
3495024640,3495065599,US
3495065600,3495066623,CA
-3495066624,3495068223,US
+3495066624,3495068031,US
+3495068032,3495068047,PL
+3495068048,3495068223,US
3495068224,3495068239,PL
3495068240,3495068655,US
3495068656,3495068671,PL
@@ -107282,20 +109482,12 @@
3495136504,3495136847,US
3495136848,3495136855,PR
3495136856,3495153663,US
-3495153664,3495154303,CA
-3495154304,3495154431,US
-3495154432,3495154751,CA
-3495154752,3495154759,US
-3495154760,3495154823,CA
-3495154824,3495154831,US
-3495154832,3495154839,CA
-3495154840,3495154847,US
-3495154848,3495155711,CA
+3495153664,3495155711,CA
3495155712,3495157039,US
3495157040,3495157047,SE
3495157048,3495164239,US
3495164240,3495164247,CA
-3495164248,3495192575,US
+3495164248,3495190527,US
3495192576,3495193599,CA
3495193600,3495215103,US
3495215104,3495217151,VI
@@ -107306,9 +109498,7 @@
3495260160,3495261183,CA
3495261184,3495286783,US
3495286784,3495288831,CA
-3495288832,3495292927,US
-3495292928,3495292943,GB
-3495292944,3495331839,US
+3495288832,3495331839,US
3495331840,3495332863,A2
3495332864,3495333887,CA
3495333888,3495349247,US
@@ -107364,13 +109554,11 @@
3495526400,3495527423,CA
3495527424,3495542783,US
3495542784,3495544831,A2
-3495544832,3495549183,US
-3495549184,3495549302,CA
-3495549303,3495549334,US
-3495549335,3495549439,CA
-3495549440,3495549727,US
-3495549728,3495549760,CA
-3495549761,3495549809,US
+3495544832,3495549238,US
+3495549239,3495549302,CA
+3495549303,3495549366,US
+3495549367,3495549430,CA
+3495549431,3495549809,US
3495549810,3495549813,IN
3495549814,3495549917,US
3495549918,3495549923,CA
@@ -107396,9 +109584,7 @@
3495657552,3495657567,GB
3495657568,3495658015,US
3495658016,3495658023,IN
-3495658024,3495658039,US
-3495658040,3495658047,CO
-3495658048,3495658319,US
+3495658024,3495658319,US
3495658320,3495658327,IN
3495658328,3495673855,US
3495673856,3495674623,GP
@@ -107434,62 +109620,7 @@
3495866368,3495868415,VC
3495868416,3495871487,US
3495871488,3495872511,CA
-3495872512,3495882799,US
-3495882800,3495882807,AM
-3495882808,3495882815,US
-3495882816,3495882823,RU
-3495882824,3495882863,US
-3495882864,3495882871,AU
-3495882872,3495882895,US
-3495882896,3495882911,CN
-3495882912,3495882927,JP
-3495882928,3495882983,US
-3495882984,3495882991,AU
-3495882992,3495882999,CA
-3495883000,3495883215,US
-3495883216,3495883223,AU
-3495883224,3495883287,US
-3495883288,3495883295,GB
-3495883296,3495883311,US
-3495883312,3495883319,TR
-3495883320,3495883327,SA
-3495883328,3495883367,US
-3495883368,3495883375,AU
-3495883376,3495883391,US
-3495883392,3495883399,IN
-3495883400,3495883407,US
-3495883408,3495883415,EG
-3495883416,3495883439,US
-3495883440,3495883447,GB
-3495883448,3495883479,US
-3495883480,3495883487,BR
-3495883488,3495883503,CN
-3495883504,3495883615,US
-3495883616,3495883623,AU
-3495883624,3495883631,US
-3495883632,3495883647,GM
-3495883648,3495883759,US
-3495883760,3495883775,CN
-3495883776,3495884119,US
-3495884120,3495884127,CA
-3495884128,3495884239,US
-3495884240,3495884247,AU
-3495884248,3495884263,US
-3495884264,3495884271,IN
-3495884272,3495884287,CN
-3495884288,3495884447,US
-3495884448,3495884463,AU
-3495884464,3495884479,US
-3495884480,3495884487,BY
-3495884488,3495884519,US
-3495884520,3495884527,IN
-3495884528,3495884543,US
-3495884544,3495884551,RO
-3495884552,3495884679,US
-3495884680,3495884687,AU
-3495884688,3495884719,US
-3495884720,3495884735,CA
-3495884736,3495896063,US
+3495872512,3495896063,US
3495896064,3495897087,PR
3495897088,3495930879,US
3495930880,3495931903,CA
@@ -107732,47 +109863,13 @@
3497164288,3497164295,GB
3497164296,3497164799,US
3497164800,3497181183,CA
-3497181184,3497222407,US
-3497222408,3497222415,IN
-3497222416,3497222463,US
-3497222464,3497222479,IN
-3497222480,3497223791,US
-3497223792,3497223807,CH
-3497223808,3497223839,US
-3497223840,3497223871,CH
-3497223872,3497223879,US
-3497223880,3497223887,ID
-3497223888,3497224255,US
-3497224256,3497224319,IN
-3497224320,3497224831,US
-3497224832,3497224863,CH
-3497224864,3497225375,US
-3497225376,3497225383,CN
-3497225384,3497225471,US
-3497225472,3497225535,IN
-3497225536,3497226295,US
+3497181184,3497226295,US
3497226296,3497226303,SG
3497226304,3497226391,US
3497226392,3497226399,IR
-3497226400,3497226783,US
-3497226784,3497226815,CH
-3497226816,3497226831,US
-3497226832,3497226847,CH
-3497226848,3497226943,US
-3497226944,3497226959,CH
-3497226960,3497227023,US
-3497227024,3497227039,GB
-3497227040,3497227231,US
-3497227232,3497227247,CH
-3497227248,3497227255,CN
-3497227256,3497227263,CH
-3497227264,3497227391,US
-3497227392,3497227407,CN
-3497227408,3497227527,US
-3497227528,3497227535,CN
-3497227536,3497228079,US
-3497228080,3497228087,CN
-3497228088,3497233407,US
+3497226400,3497226687,US
+3497226688,3497226719,GB
+3497226720,3497233407,US
3497233408,3497233663,CN
3497233664,3497263815,US
3497263816,3497263823,GB
@@ -108107,16 +110204,18 @@
3507025408,3507025663,IQ
3507025664,3507101919,US
3507101920,3507101935,IL
-3507101936,3507134591,US
-3507134592,3507134607,GB
-3507134608,3507290111,US
+3507101936,3507290111,US
3507290112,3507355647,AR
-3507355648,3507540015,US
+3507355648,3507479079,US
+3507479080,3507479080,CA
+3507479081,3507479108,US
+3507479109,3507479109,CA
+3507479110,3507482153,US
+3507482154,3507482155,CA
+3507482156,3507540015,US
3507540016,3507540031,IN
3507540032,3507585023,US
-3507585024,3507586623,CA
-3507586624,3507586655,US
-3507586656,3507598911,CA
+3507585024,3507598911,CA
3507598912,3507598943,US
3507598944,3507601407,CA
3507601408,3507634335,US
@@ -108872,27 +110971,19 @@
3509775904,3509775919,AU
3509775920,3509775943,US
3509775944,3509775951,IT
-3509775952,3509775975,US
-3509775976,3509775983,GB
-3509775984,3509776023,US
+3509775952,3509776023,US
3509776024,3509776031,CA
3509776032,3509776047,US
3509776048,3509776055,SA
3509776056,3509776095,US
3509776096,3509776103,AU
3509776104,3509776111,US
-3509776112,3509776127,IT
-3509776128,3509776224,US
-3509776225,3509776256,CA
-3509776257,3509776288,TC
-3509776289,3509776352,US
-3509776353,3509776382,GB
-3509776383,3509777159,US
+3509776112,3509776119,IT
+3509776120,3509777159,US
3509777160,3509777167,CN
3509777168,3509777175,RU
-3509777176,3509777199,US
-3509777200,3509777207,GB
-3509777208,3509777215,CA
+3509777176,3509777207,US
+3509777208,3509777215,IN
3509777216,3509777223,TH
3509777224,3509777271,US
3509777272,3509777279,IT
@@ -108906,9 +110997,7 @@
3509778400,3509778431,NL
3509778432,3509778703,US
3509778704,3509778711,CA
-3509778712,3509778847,US
-3509778848,3509778855,CA
-3509778856,3509778903,US
+3509778712,3509778903,US
3509778904,3509778911,RU
3509778912,3509778919,US
3509778920,3509778927,GB
@@ -108926,55 +111015,31 @@
3509830408,3509830415,GB
3509830416,3509830943,US
3509830944,3509830951,BE
-3509830952,3509831039,US
-3509831040,3509831047,DE
-3509831048,3509831135,US
+3509830952,3509831135,US
3509831136,3509831143,IN
-3509831144,3509831287,US
-3509831288,3509831295,GB
-3509831296,3509831303,US
-3509831304,3509831311,CO
-3509831312,3509831319,CN
-3509831320,3509831535,US
+3509831144,3509831535,US
3509831536,3509831551,LB
3509831552,3509831615,US
3509831616,3509831647,IL
3509831648,3509831735,US
3509831736,3509831743,AT
-3509831744,3509831799,US
-3509831800,3509831807,DO
+3509831744,3509831807,US
3509831808,3509831815,IN
3509831816,3509831823,CA
3509831824,3509831831,US
3509831832,3509831839,GB
-3509831840,3509831959,US
-3509831960,3509831967,CA
-3509831968,3509832079,US
-3509832080,3509832087,CN
-3509832088,3509833103,US
+3509831840,3509833103,US
3509833104,3509833111,IN
3509833112,3509833535,US
3509833536,3509833543,CA
3509833544,3509833551,IN
3509833552,3509833567,US
3509833568,3509833599,PH
-3509833600,3509833623,US
-3509833624,3509833631,GR
-3509833632,3509833703,US
+3509833600,3509833703,US
3509833704,3509833711,ZA
-3509833712,3509834095,US
-3509834096,3509834103,IL
-3509834104,3509834111,US
+3509833712,3509834111,US
3509834112,3509834143,IL
-3509834144,3509834167,US
-3509834168,3509834175,BR
-3509834176,3509834287,US
-3509834288,3509834303,IN
-3509834304,3509834399,US
-3509834400,3509834407,BD
-3509834408,3509834431,US
-3509834432,3509834463,JP
-3509834464,3509834495,US
+3509834144,3509834495,US
3509834496,3509834503,NO
3509834504,3509834519,US
3509834520,3509834527,BD
@@ -108984,9 +111049,7 @@
3509834832,3509834847,CO
3509834848,3509835103,US
3509835104,3509835111,GB
-3509835112,3509836375,US
-3509836376,3509836383,GR
-3509836384,3509837167,US
+3509835112,3509837167,US
3509837168,3509837175,GB
3509837176,3509837623,US
3509837624,3509837639,GB
@@ -109449,7 +111512,11 @@
3510897443,3510897443,IE
3510897444,3510935551,US
3510935552,3510943743,CA
-3510943744,3511140351,US
+3510943744,3511129087,US
+3511129088,3511129183,CA
+3511129184,3511129199,US
+3511129200,3511131135,CA
+3511131136,3511132159,US
3511140352,3511156735,CA
3511156736,3511331199,US
3511331200,3511331231,CA
@@ -109475,9 +111542,7 @@
3512011904,3512012095,US
3512012096,3512012159,GB
3512012160,3512012175,MX
-3512012176,3512012191,US
-3512012192,3512012223,BR
-3512012224,3512012255,US
+3512012176,3512012255,US
3512012256,3512012287,GB
3512012288,3512013583,US
3512013584,3512013599,CA
@@ -110082,8 +112147,8 @@
3512695840,3512695871,GB
3512695872,3512696831,US
3512696832,3512699647,SE
-3512699648,3512701951,US
-3512701952,3512705023,SE
+3512699648,3512699903,US
+3512699904,3512705023,SE
3512705024,3512844287,US
3512844288,3512844543,CA
3512844544,3512844607,A1
@@ -110127,7 +112192,19 @@
3513368576,3513376767,CA
3513376768,3513475071,US
3513475072,3513483263,CA
-3513483264,3513670911,US
+3513483264,3513501183,US
+3513501184,3513501439,PH
+3513501440,3513501567,US
+3513501568,3513501631,AZ
+3513501632,3513502719,US
+3513502720,3513502975,A1
+3513502976,3513503743,US
+3513503744,3513503999,SC
+3513504000,3513506047,US
+3513506048,3513506303,A1
+3513506304,3513506559,US
+3513506560,3513506815,CA
+3513506816,3513670911,US
3513670912,3513671167,A2
3513671168,3513778175,US
3513778176,3513794559,CA
@@ -110146,66 +112223,16 @@
3514590720,3514591103,SV
3514591104,3514591487,US
3514591488,3514592255,NI
-3514592256,3514597375,SV
-3514597376,3514763423,US
-3514763424,3514763439,PA
-3514763440,3514763711,US
-3514763712,3514763727,VE
-3514763728,3514763775,US
-3514763776,3514763791,PA
-3514763792,3514764047,US
-3514764048,3514764063,PA
-3514764064,3514765823,US
-3514765824,3514765855,PA
-3514765856,3514765919,US
-3514765920,3514765951,VE
-3514765952,3514766111,US
-3514766112,3514766143,VE
-3514766144,3514766207,US
-3514766208,3514766271,PA
-3514766272,3514766303,US
-3514766304,3514766335,PA
-3514766336,3514766463,US
-3514766464,3514766495,PA
-3514766496,3514766879,US
-3514766880,3514766911,PA
-3514766912,3514767199,US
-3514767200,3514767231,VE
-3514767232,3514767455,US
-3514767456,3514767487,VE
-3514767488,3514768127,US
-3514768128,3514768191,VE
-3514768192,3514769023,US
-3514769024,3514769151,PA
-3514769152,3514769215,US
-3514769216,3514769279,PA
-3514769280,3514775295,US
-3514775296,3514775551,PA
-3514775552,3514776063,US
-3514776064,3514776319,VE
-3514776320,3514776343,US
-3514776344,3514776351,VE
-3514776352,3514776407,US
-3514776408,3514776415,VE
-3514776416,3514781695,US
-3514781696,3514782719,VE
-3514782720,3514787583,US
-3514787584,3514787839,PA
-3514787840,3514791679,US
-3514791680,3514793983,PA
-3514793984,3514826751,US
+3514592256,3514593279,SV
+3514593280,3514596863,US
+3514596864,3514597375,SV
+3514597376,3514826751,US
3514826752,3514843135,CA
3514843136,3515114247,US
3515114248,3515114255,AU
3515114256,3515149567,US
3515149568,3515149583,AU
-3515149584,3515154943,US
-3515154944,3515155199,CA
-3515155200,3515155455,US
-3515155456,3515155711,CA
-3515155712,3515166719,US
-3515166720,3515166975,CA
-3515166976,3515170991,US
+3515149584,3515170991,US
3515170992,3515170999,KR
3515171000,3515185151,US
3515185152,3515185407,CA
@@ -110215,9 +112242,7 @@
3515358976,3515359231,MX
3515359232,3515452639,US
3515452640,3515452655,KR
-3515452656,3515452775,US
-3515452776,3515452783,JP
-3515452784,3515453055,US
+3515452656,3515453055,US
3515453056,3515453071,JP
3515453072,3515453679,US
3515453680,3515453687,JP
@@ -110226,9 +112251,7 @@
3515454080,3515454095,US
3515454096,3515454111,JP
3515454112,3515454143,US
-3515454144,3515454159,JP
-3515454160,3515454167,US
-3515454168,3515454207,JP
+3515454144,3515454207,JP
3515454208,3515454399,US
3515454400,3515454463,JP
3515454464,3515455311,US
@@ -110336,9 +112359,7 @@
3517116416,3517120511,CA
3517120512,3517233151,US
3517233152,3517235199,GU
-3517235200,3517308927,US
-3517308928,3517313023,CA
-3517313024,3517382655,US
+3517235200,3517382655,US
3517382656,3517383679,CA
3517383680,3517383935,US
3517383936,3517384447,CA
@@ -110639,19 +112660,21 @@
3517598208,3517598463,IE
3517598464,3517598591,SE
3517598592,3517599231,US
-3517599232,3517600767,SE
+3517599232,3517599263,BG
+3517599264,3517600767,SE
3517600768,3517601279,US
3517601280,3517602047,SE
3517602048,3517602303,DE
3517602304,3517602559,US
3517602560,3517602623,SE
3517602624,3517602815,US
-3517602816,3517603071,SE
-3517603072,3517603615,US
+3517602816,3517603327,SE
+3517603328,3517603615,US
3517603616,3517603647,DE
-3517603648,3517603839,US
-3517603840,3517603903,SE
-3517603904,3517603967,MA
+3517603648,3517603711,US
+3517603712,3517603775,SE
+3517603776,3517603839,US
+3517603840,3517603967,SE
3517603968,3517604031,DE
3517604032,3517604095,SE
3517604096,3517604351,US
@@ -110673,8 +112696,8 @@
3517609856,3517610047,US
3517610048,3517610191,SE
3517610192,3517610199,US
-3517610200,3517610207,SE
-3517610208,3517610495,US
+3517610200,3517610239,SE
+3517610240,3517610495,US
3517610496,3517611263,IE
3517611264,3517611295,SE
3517611296,3517611303,US
@@ -110713,7 +112736,8 @@
3518076672,3518076927,PA
3518076928,3518077103,US
3518077104,3518077111,GB
-3518077112,3518374719,US
+3518077112,3518078975,US
+3518083072,3518374719,US
3518374720,3518374783,IN
3518374784,3518380223,US
3518380224,3518380287,DE
@@ -110734,95 +112758,51 @@
3518759408,3518759423,CY
3518759424,3518760511,US
3518760512,3518760575,AU
-3518760576,3518760703,HU
+3518760576,3518760647,HU
+3518760648,3518760655,US
+3518760656,3518760703,HU
3518760704,3518762495,US
3518762496,3518762751,GB
-3518762752,3518764031,US
-3518764032,3518764287,GB
-3518764288,3518764671,US
+3518762752,3518764671,US
3518764672,3518764703,NL
3518764704,3518765311,US
3518765312,3518765567,CA
3518765568,3518766879,US
3518766880,3518766911,TH
-3518766912,3518890831,US
-3518890832,3518890839,IT
-3518890840,3518891175,US
-3518891176,3518891183,GB
-3518891184,3518891767,US
-3518891768,3518891775,BG
-3518891776,3518892039,US
-3518892040,3518892047,GT
-3518892048,3518892223,US
+3518766912,3518892223,US
3518892224,3518892231,CL
3518892232,3518892415,US
3518892416,3518892423,GB
-3518892424,3518894095,US
-3518894096,3518894103,KW
-3518894104,3518894343,US
-3518894344,3518894351,MY
-3518894352,3518894439,US
+3518892424,3518894439,US
3518894440,3518894447,TR
-3518894448,3518895719,US
-3518895720,3518895727,PH
-3518895728,3518895775,US
+3518894448,3518895775,US
3518895776,3518895783,CA
3518895784,3518895791,TH
-3518895792,3518895799,US
-3518895800,3518895807,AR
-3518895808,3518896215,US
+3518895792,3518896215,US
3518896216,3518896223,CA
3518896224,3518896231,US
3518896232,3518896239,CN
-3518896240,3518896519,US
-3518896520,3518896527,AE
-3518896528,3518896543,US
-3518896544,3518896551,BD
-3518896552,3518896895,US
+3518896240,3518896895,US
3518896896,3518896903,GB
-3518896904,3518897071,US
-3518897072,3518897079,IT
-3518897080,3518897119,US
+3518896904,3518897119,US
3518897120,3518897127,IT
-3518897128,3518897423,US
-3518897424,3518897431,IN
-3518897432,3518897879,US
-3518897880,3518897887,AM
-3518897888,3518898015,US
-3518898016,3518898023,IN
-3518898024,3518898143,US
+3518897128,3518898143,US
3518898144,3518898151,BR
-3518898152,3518898167,US
-3518898168,3518898175,RO
-3518898176,3518903175,US
-3518903176,3518903183,BR
-3518903184,3518903191,US
+3518898152,3518903191,US
3518903192,3518903199,JP
-3518903200,3518903399,US
-3518903400,3518903407,PK
-3518903408,3518903871,US
+3518903200,3518903871,US
3518903872,3518903879,PK
3518903880,3518903927,US
3518903928,3518903935,RU
-3518903936,3518903959,US
-3518903960,3518903967,GB
-3518903968,3518903999,US
-3518904000,3518904007,ES
-3518904008,3518904015,US
+3518903936,3518904015,US
3518904016,3518904031,EG
3518904032,3518911743,US
3518911744,3518911999,GB
3518912000,3518912511,US
3518912512,3518912767,IN
-3518912768,3518919031,US
-3518919032,3518919039,GT
-3518919040,3518919095,US
-3518919096,3518919103,BD
-3518919104,3518921447,US
+3518912768,3518921447,US
3518921448,3518921455,CN
-3518921456,3518921479,US
-3518921480,3518921487,BD
-3518921488,3518929535,US
+3518921456,3518929535,US
3518929536,3518929599,CA
3518929600,3518995695,US
3518995696,3518995703,GB
@@ -110841,9 +112821,7 @@
3519352904,3519381503,US
3519381504,3519397887,CA
3519397888,3519406079,US
-3519406080,3519406111,IT
-3519406112,3519406127,US
-3519406128,3519406143,DE
+3519406080,3519406143,IT
3519406144,3519406207,US
3519406208,3519406215,SA
3519406216,3519406255,US
@@ -110906,9 +112884,7 @@
3519411392,3519411711,US
3519411712,3519411967,AR
3519411968,3519412223,DE
-3519412224,3519412463,US
-3519412464,3519412479,GB
-3519412480,3519412519,US
+3519412224,3519412519,US
3519412520,3519412527,RU
3519412528,3519412735,US
3519412736,3519412751,RU
@@ -110926,34 +112902,7 @@
3519422528,3519475711,US
3519475712,3519476223,BH
3519476224,3519477759,A2
-3519477760,3519566871,US
-3519566872,3519566879,IE
-3519566880,3519566943,US
-3519566944,3519566951,GB
-3519566952,3519567087,US
-3519567088,3519567096,IE
-3519567097,3519567679,US
-3519567680,3519567687,GB
-3519567688,3519567727,US
-3519567728,3519567735,LB
-3519567736,3519567759,US
-3519567760,3519567767,JP
-3519567768,3519567831,US
-3519567832,3519567863,LB
-3519567864,3519568911,US
-3519568912,3519568919,FR
-3519568920,3519568927,LB
-3519568928,3519568991,US
-3519568992,3519568999,GB
-3519569000,3519569071,US
-3519569072,3519569079,LB
-3519569080,3519569103,US
-3519569104,3519569111,GB
-3519569112,3519569127,US
-3519569128,3519569135,GB
-3519569136,3519569727,US
-3519569728,3519569735,JP
-3519569736,3519578367,US
+3519477760,3519578367,US
3519578368,3519578623,NA
3519578624,3519578879,US
3519578880,3519579135,CA
@@ -110987,8 +112936,7 @@
3519590912,3519590927,GB
3519590928,3519590943,EE
3519590944,3519590959,AG
-3519590960,3519591055,US
-3519591056,3519591071,MT
+3519590960,3519591071,US
3519591072,3519591087,IM
3519591088,3519591167,US
3519591168,3519591423,GB
@@ -111016,7 +112964,9 @@
3519715296,3519715327,GB
3519715328,3519716863,US
3519716864,3519716991,CA
-3519716992,3519741951,US
+3519716992,3519723519,US
+3519723520,3519724031,CA
+3519724032,3519741951,US
3519741952,3519758335,ZA
3519758336,3519791103,US
3519799296,3519799871,US
@@ -111186,7 +113136,9 @@
3520028688,3520028711,US
3520028712,3520029167,CA
3520029168,3520029175,IL
-3520029176,3520030799,CA
+3520029176,3520030719,CA
+3520030720,3520030727,US
+3520030728,3520030799,CA
3520030800,3520030807,US
3520030808,3520030951,CA
3520030952,3520030959,US
@@ -111373,15 +113325,13 @@
3520937984,3520954367,CA
3520954368,3520956155,US
3520956156,3520956159,CH
-3520956160,3520958783,US
-3520958784,3520958847,CA
-3520958848,3520966111,US
-3520966112,3520966119,CA
-3520966120,3520978943,US
+3520956160,3520978943,US
3520978944,3520979711,BZ
3520979712,3520999423,US
3520999424,3521003519,CA
-3521003520,3521007103,US
+3521003520,3521003583,US
+3521003584,3521003647,IL
+3521003648,3521007103,US
3521007104,3521007111,IN
3521007112,3521011743,US
3521011744,3521011751,PK
@@ -111394,9 +113344,7 @@
3521013560,3521013567,GB
3521013568,3521013951,US
3521013952,3521013959,AU
-3521013960,3521014103,US
-3521014104,3521014111,NL
-3521014112,3521014127,US
+3521013960,3521014127,US
3521014128,3521014135,GR
3521014136,3521014143,CA
3521014144,3521028095,US
@@ -111458,13 +113406,55 @@
3521835904,3521835967,CA
3521835968,3521836351,US
3521836352,3521836415,IL
-3521836416,3521836503,US
-3521836504,3521836511,IL
-3521836512,3521836687,US
-3521836688,3521836703,CA
-3521836704,3521904639,US
+3521836416,3521904639,US
3521904640,3521921023,JM
-3521921024,3521965055,US
+3521921024,3521933321,US
+3521933322,3521933329,PK
+3521933330,3521933345,MA
+3521933346,3521933413,US
+3521933414,3521933421,IN
+3521933422,3521933429,MA
+3521933430,3521933437,CA
+3521933438,3521933497,US
+3521933498,3521933505,EG
+3521933506,3521933537,GB
+3521933538,3521933577,US
+3521933578,3521933585,EG
+3521933586,3521933589,US
+3521933590,3521933597,IN
+3521933598,3521933605,US
+3521933606,3521933613,AE
+3521933614,3521933621,US
+3521933622,3521933629,IN
+3521933630,3521933645,US
+3521933646,3521933653,GB
+3521933654,3521933725,US
+3521933726,3521933733,GB
+3521933734,3521933741,US
+3521933742,3521933785,GB
+3521933786,3521933833,US
+3521933834,3521933841,EG
+3521933842,3521933929,US
+3521933930,3521933937,IN
+3521933938,3521933981,US
+3521933982,3521933989,IN
+3521933990,3521934089,US
+3521934090,3521934097,EG
+3521934098,3521934169,US
+3521934170,3521934177,EG
+3521934178,3521934421,US
+3521934422,3521934429,EG
+3521934430,3521934477,US
+3521934478,3521934485,ID
+3521934486,3521934509,US
+3521934510,3521934517,IN
+3521934518,3521934735,US
+3521934736,3521934743,EG
+3521934744,3521934768,US
+3521934769,3521934776,MA
+3521934777,3521935237,US
+3521935238,3521935245,EG
+3521935246,3521965055,US
3521965056,3521966079,DE
3521966080,3522029439,US
3522029440,3522029503,FI
@@ -111477,30 +113467,26 @@
3522034448,3522034463,GB
3522034464,3522101247,US
3522101248,3522109439,CA
-3522109440,3522117631,US
-3522117632,3522121983,A2
+3522109440,3522119935,US
+3522119936,3522120191,LY
+3522120192,3522120447,US
+3522120448,3522121215,LY
+3522121216,3522121471,US
+3522121472,3522121983,LY
3522121984,3522122239,AW
-3522122240,3522125823,A2
-3522125824,3522131455,US
-3522131456,3522131487,PE
-3522131488,3522131519,RS
-3522131520,3522131711,US
+3522122240,3522131711,US
3522131712,3522131743,GB
3522131744,3522131775,DE
3522131776,3522131807,BR
3522131808,3522132479,US
3522132480,3522132543,CO
-3522132544,3522132575,US
+3522132544,3522132575,TR
3522132576,3522132607,UA
3522132608,3522132639,CA
-3522132640,3522132671,PE
+3522132640,3522132671,BO
3522132672,3522132703,BR
3522132704,3522132735,LK
-3522132736,3522132767,US
-3522132768,3522132799,RO
-3522132800,3522133567,US
-3522133568,3522133568,PT
-3522133569,3522133599,US
+3522132736,3522133599,US
3522133600,3522133631,JP
3522133632,3522133639,US
3522133640,3522133647,DE
@@ -111517,15 +113503,7 @@
3522759592,3522759599,CA
3522759600,3522763263,US
3522763264,3522763519,CA
-3522763520,3522768895,US
-3522768896,3522769151,CA
-3522769152,3522769919,US
-3522769920,3522770175,CA
-3522770176,3522807807,US
-3522807808,3522807815,JP
-3522807816,3522820863,US
-3522820864,3522821119,CA
-3522821120,3522854911,US
+3522763520,3522854911,US
3522854912,3522859999,CA
3522860000,3522860031,IN
3522860032,3522871295,CA
@@ -111942,9 +113920,7 @@
3556769792,3556774399,DE
3556774400,3556786175,EU
3556786176,3556794367,RU
-3556794368,3556795647,ES
-3556795648,3556795679,IT
-3556795680,3556797767,ES
+3556794368,3556797767,ES
3556797768,3556797775,GB
3556797776,3556797839,ES
3556797840,3556797847,PT
@@ -112042,7 +114018,8 @@
3557138432,3557146623,RU
3557146624,3557154815,SK
3557154816,3557171199,RU
-3557171200,3557172991,IR
+3557171200,3557172479,IT
+3557172480,3557172991,IR
3557172992,3557173503,IQ
3557173504,3557173631,IR
3557173632,3557173695,IQ
@@ -112070,7 +114047,9 @@
3557244928,3557253119,IT
3557253120,3557261311,RU
3557261312,3557277695,DE
-3557277696,3557285887,PL
+3557277696,3557280334,NL
+3557280335,3557280336,IN
+3557280337,3557285887,NL
3557285888,3557294079,RU
3557294080,3557302271,DE
3557302272,3557310463,UA
@@ -112103,8 +114082,8 @@
3557340192,3557340927,BE
3557340928,3557341183,EU
3557341184,3557341439,BE
-3557341440,3557341487,EU
-3557341488,3557341527,BE
+3557341440,3557341471,EU
+3557341472,3557341527,BE
3557341528,3557341535,EU
3557341536,3557341551,BE
3557341552,3557341559,EU
@@ -112132,14 +114111,14 @@
3557360408,3557360415,GB
3557360416,3557360431,JE
3557360432,3557360471,GB
-3557360472,3557360479,JE
-3557360480,3557360495,GB
+3557360472,3557360487,JE
+3557360488,3557360495,GB
3557360496,3557360527,JE
3557360528,3557360535,GB
3557360536,3557360543,JE
3557360544,3557360559,GB
-3557360560,3557360567,JE
-3557360568,3557360623,GB
+3557360560,3557360575,JE
+3557360576,3557360623,GB
3557360624,3557360639,JE
3557360640,3557360680,GB
3557360681,3557360687,JE
@@ -112163,8 +114142,8 @@
3557361416,3557361423,JE
3557361424,3557361607,GB
3557361608,3557361615,JE
-3557361616,3557361919,GB
-3557361920,3557361983,JE
+3557361616,3557361663,GB
+3557361664,3557361983,JE
3557361984,3557362047,GB
3557362048,3557362431,JE
3557362432,3557362687,GB
@@ -112172,15 +114151,17 @@
3557363456,3557363471,GB
3557363472,3557363479,JE
3557363480,3557363655,GB
-3557363656,3557363783,JE
+3557363656,3557363663,JE
+3557363664,3557363671,GB
+3557363672,3557363783,JE
3557363784,3557363791,GB
3557363792,3557364223,JE
3557364224,3557364479,GB
3557364480,3557364495,JE
3557364496,3557364527,GB
3557364528,3557364559,JE
-3557364560,3557364587,GB
-3557364588,3557364607,JE
+3557364560,3557364575,GB
+3557364576,3557364607,JE
3557364608,3557364631,GB
3557364632,3557364639,JE
3557364640,3557364703,GB
@@ -112195,8 +114176,8 @@
3557364896,3557364927,JE
3557364928,3557364959,GB
3557364960,3557364991,JE
-3557364992,3557365055,GB
-3557365056,3557365103,JE
+3557364992,3557365087,GB
+3557365088,3557365103,JE
3557365104,3557365111,GB
3557365112,3557365119,JE
3557365120,3557365183,GB
@@ -112293,14 +114274,17 @@
3557834752,3557842943,IR
3557842944,3557851135,FI
3557851136,3557859327,HU
-3557859328,3557867519,SE
+3557859328,3557860831,SE
+3557860832,3557860847,FI
+3557860848,3557860863,NL
+3557860864,3557867519,SE
3557867520,3557875711,RU
3557875712,3557883903,DE
3557883904,3557892095,RU
3557892096,3557900287,IE
3557900288,3557916671,AT
3557916672,3557924863,NO
-3557924864,3557933055,AX
+3557924864,3557933055,FI
3557933056,3557941247,IT
3557941248,3557945183,DE
3557945184,3557945199,GB
@@ -112318,7 +114302,13 @@
3558006784,3558014975,GB
3558014976,3558023167,RU
3558023168,3558023199,GB
-3558023200,3558030655,DE
+3558023200,3558023343,DE
+3558023344,3558023359,GB
+3558023360,3558024383,DE
+3558024384,3558024415,GB
+3558024416,3558028063,DE
+3558028064,3558028071,CH
+3558028072,3558030655,DE
3558030656,3558030659,CH
3558030660,3558031359,DE
3558031360,3558039551,GB
@@ -112342,14 +114332,14 @@
3558154624,3558154751,CI
3558154752,3558154879,CM
3558154880,3558155007,SD
-3558155008,3558155135,GB
+3558155008,3558155135,A2
3558155136,3558155263,SD
3558155264,3558155391,ET
-3558155392,3558155519,GB
+3558155392,3558155519,A2
3558155520,3558156031,SD
-3558156032,3558156032,GB
+3558156032,3558156032,A2
3558156033,3558156287,KG
-3558156288,3558162431,GB
+3558156288,3558162431,A2
3558162432,3558170623,DE
3558170624,3558178815,GB
3558178816,3558187007,BG
@@ -112416,8 +114406,7 @@
3558288424,3558288447,GB
3558288448,3558288483,US
3558288484,3558288487,GB
-3558288488,3558288495,GU
-3558288496,3558288639,US
+3558288488,3558288639,US
3558288640,3558288671,BE
3558288672,3558288687,DE
3558288688,3558288703,BE
@@ -112439,9 +114428,7 @@
3558290576,3558290591,GB
3558290592,3558290599,BE
3558290600,3558290615,GB
-3558290616,3558290623,BE
-3558290624,3558290655,GB
-3558290656,3558290663,BE
+3558290616,3558290663,BE
3558290664,3558290671,GB
3558290672,3558290687,BE
3558290688,3558290871,ES
@@ -112468,11 +114455,9 @@
3558292288,3558292543,NL
3558292544,3558292607,GB
3558292608,3558292735,NL
-3558292736,3558292871,GB
-3558292872,3558292879,NL
-3558292880,3558292895,GB
-3558292896,3558293087,NL
-3558293088,3558293247,GB
+3558292736,3558292863,GB
+3558292864,3558293143,NL
+3558293144,3558293247,GB
3558293248,3558293503,NL
3558293504,3558301695,RU
3558301696,3558310319,DE
@@ -112530,7 +114515,8 @@
3558368448,3558368479,DE
3558368480,3558368495,ES
3558368496,3558368511,US
-3558368512,3558369503,AT
+3558368512,3558369487,AT
+3558369488,3558369503,CH
3558369504,3558369519,FR
3558369520,3558372351,AT
3558372352,3558372607,BG
@@ -112589,21 +114575,17 @@
3558719488,3558735871,IL
3558735872,3558736127,GB
3558736128,3558736639,GG
-3558736640,3558737023,GB
-3558737024,3558737151,GG
+3558736640,3558737055,GB
+3558737056,3558737151,GG
3558737152,3558737279,GB
3558737280,3558737919,GG
-3558737920,3558738431,GB
-3558738432,3558738687,GG
-3558738688,3558738751,GB
+3558737920,3558738751,GB
3558738752,3558738943,GG
3558738944,3558738991,GB
3558738992,3558739007,GG
3558739008,3558739039,GB
3558739040,3558739055,GG
-3558739056,3558739071,GB
-3558739072,3558739087,GG
-3558739088,3558739199,GB
+3558739056,3558739199,GB
3558739200,3558739231,GG
3558739232,3558739295,GB
3558739296,3558739711,GG
@@ -112807,7 +114789,8 @@
3559006208,3559014399,RU
3559014400,3559016191,DE
3559016192,3559016207,GB
-3559016208,3559022591,DE
+3559016208,3559016215,JP
+3559016216,3559022591,DE
3559022592,3559030783,RU
3559030784,3559038720,ES
3559038721,3559038975,US
@@ -112828,9 +114811,9 @@
3559088376,3559088379,GB
3559088380,3559089023,BE
3559089024,3559089027,GB
-3559089028,3559089055,BE
-3559089056,3559089063,DE
-3559089064,3559089407,BE
+3559089028,3559089343,BE
+3559089344,3559089375,GB
+3559089376,3559089407,BE
3559089408,3559089411,GB
3559089412,3559089423,BE
3559089424,3559089427,GB
@@ -112867,7 +114850,9 @@
3559090776,3559090779,GB
3559090780,3559090803,BE
3559090804,3559090807,GB
-3559090808,3559090863,BE
+3559090808,3559090831,BE
+3559090832,3559090839,GB
+3559090840,3559090863,BE
3559090864,3559090871,GB
3559090872,3559090895,BE
3559090896,3559090899,GB
@@ -112879,13 +114864,19 @@
3559091012,3559091015,GB
3559091016,3559091087,BE
3559091088,3559091091,GB
-3559091092,3559091203,BE
+3559091092,3559091159,BE
+3559091160,3559091167,GB
+3559091168,3559091203,BE
3559091204,3559091207,GB
3559091208,3559091211,BE
3559091212,3559091215,GB
-3559091216,3559091423,BE
+3559091216,3559091223,BE
+3559091224,3559091231,GB
+3559091232,3559091423,BE
3559091424,3559091427,GB
-3559091428,3559091507,BE
+3559091428,3559091439,BE
+3559091440,3559091447,ES
+3559091448,3559091507,BE
3559091508,3559091511,GB
3559091512,3559091535,BE
3559091536,3559091543,GB
@@ -112899,7 +114890,9 @@
3559092160,3559092160,GB
3559092161,3559092222,BE
3559092223,3559092223,GB
-3559092224,3559092735,BE
+3559092224,3559092295,BE
+3559092296,3559092303,GB
+3559092304,3559092735,BE
3559092736,3559092739,GB
3559092740,3559092799,BE
3559092800,3559092803,GB
@@ -112916,7 +114909,9 @@
3559093000,3559093007,BE
3559093008,3559093015,GB
3559093016,3559093023,FR
-3559093024,3559093063,BE
+3559093024,3559093047,BE
+3559093048,3559093055,GB
+3559093056,3559093063,BE
3559093064,3559093071,FR
3559093072,3559093075,BE
3559093076,3559093079,GB
@@ -112973,7 +114968,8 @@
3559094320,3559094335,GB
3559094336,3559094423,BE
3559094424,3559094447,GB
-3559094448,3559094527,BE
+3559094448,3559094455,ES
+3559094456,3559094527,BE
3559094528,3559095039,GB
3559095040,3559095055,BE
3559095056,3559095063,GB
@@ -113007,7 +115003,6 @@
3559096320,3559103231,RO
3559103232,3559103487,GB
3559103488,3559104511,RO
-3559104512,3559112703,UA
3559112704,3559120895,IT
3559120896,3559129087,GB
3559129088,3559137279,BG
@@ -113060,7 +115055,6 @@
3559186432,3559194623,RU
3559194624,3559202815,SE
3559202816,3559211007,DE
-3559211008,3559219199,GR
3559219200,3559227391,SE
3559227392,3559235583,DK
3559235584,3559243775,DE
@@ -113116,7 +115110,9 @@
3559491440,3559491455,ES
3559491456,3559491647,NL
3559491648,3559491711,ES
-3559491712,3559491839,NL
+3559491712,3559491727,NL
+3559491728,3559491735,ES
+3559491736,3559491839,NL
3559491840,3559491871,ES
3559491872,3559491903,GB
3559491904,3559491967,ES
@@ -113147,7 +115143,11 @@
3559586304,3559587839,DE
3559587840,3559596031,KW
3559596032,3559604223,BG
-3559604224,3559612415,DE
+3559604224,3559611135,DE
+3559611136,3559611391,GB
+3559611392,3559611731,DE
+3559611732,3559611735,NL
+3559611736,3559612415,DE
3559612416,3559620607,IT
3559620608,3559628799,CH
3559628800,3559636991,GB
@@ -113240,15 +115240,13 @@
3559902176,3559902187,EE
3559902188,3559902191,UA
3559902192,3559902207,EE
-3559902208,3559902623,UA
-3559902624,3559902631,EE
-3559902632,3559902975,UA
+3559902208,3559902975,UA
3559902976,3559903231,EE
3559903232,3559903743,UA
3559903744,3559904023,EE
3559904024,3559904255,UA
-3559904256,3559904319,EE
-3559904320,3559904607,UA
+3559904256,3559904383,EE
+3559904384,3559904607,UA
3559904608,3559904639,EE
3559904640,3559905019,UA
3559905020,3559905031,EE
@@ -113258,16 +115256,20 @@
3559905144,3559905151,UA
3559905152,3559905155,EE
3559905156,3559905159,UA
-3559905160,3559905247,EE
+3559905160,3559905225,EE
+3559905226,3559905231,UA
+3559905232,3559905247,EE
3559905248,3559905255,UA
3559905256,3559905297,EE
3559905298,3559905299,UA
-3559905300,3559905307,EE
-3559905308,3559905535,UA
+3559905300,3559905317,EE
+3559905318,3559905319,UA
+3559905320,3559905323,EE
+3559905324,3559905535,UA
3559905536,3559905623,EE
3559905624,3559905631,UA
-3559905632,3559905951,EE
-3559905952,3559905983,UA
+3559905632,3559905975,EE
+3559905976,3559905983,UA
3559905984,3559906257,EE
3559906258,3559906263,UA
3559906264,3559906783,EE
@@ -113331,7 +115333,7 @@
3560316928,3560325119,NL
3560325120,3560333311,DK
3560333312,3560341503,RO
-3560349696,3560357887,GB
+3560341504,3560357887,GB
3560357888,3560366079,GR
3560366080,3560366687,CH
3560366688,3560366695,IT
@@ -113899,8 +115901,7 @@
3560941964,3560941967,FR
3560941968,3560941971,DE
3560941972,3560941975,DK
-3560941976,3560941979,IT
-3560941980,3560941983,DE
+3560941976,3560941983,DE
3560941984,3560941987,NL
3560941988,3560941991,DE
3560941992,3560941995,GB
@@ -114165,7 +116166,7 @@
3560943160,3560943160,NO
3560943161,3560943161,BE
3560943162,3560943162,GR
-3560943163,3560943163,CH
+3560943163,3560943163,DE
3560943164,3560943164,PL
3560943165,3560943165,FR
3560943166,3560943166,GB
@@ -114451,8 +116452,7 @@
3560943520,3560943520,DK
3560943521,3560943521,DE
3560943522,3560943522,GB
-3560943523,3560943523,IT
-3560943524,3560943524,DE
+3560943523,3560943524,DE
3560943525,3560943525,NL
3560943526,3560943526,IT
3560943527,3560943527,DE
@@ -115322,9 +117322,7 @@
3560947044,3560947067,US
3560947068,3560947071,AR
3560947072,3560947075,BR
-3560947076,3560947087,US
-3560947088,3560947091,PR
-3560947092,3560947095,US
+3560947076,3560947095,US
3560947096,3560947099,MX
3560947100,3560947107,US
3560947108,3560947111,DE
@@ -115332,8 +117330,7 @@
3560947124,3560947127,CO
3560947128,3560947143,US
3560947144,3560947147,DE
-3560947148,3560947151,PR
-3560947152,3560947159,US
+3560947148,3560947159,US
3560947160,3560947163,PR
3560947164,3560947191,US
3560947192,3560947195,VE
@@ -115381,7 +117378,10 @@
3560947500,3560947686,JP
3560947687,3560947687,DE
3560947688,3560947711,JP
-3560947712,3560950863,SE
+3560947712,3560950839,SE
+3560950840,3560950843,CZ
+3560950844,3560950847,FI
+3560950848,3560950863,SE
3560950864,3560950867,DK
3560950868,3560950871,ES
3560950872,3560950956,SE
@@ -115390,7 +117390,9 @@
3560951028,3560951031,DK
3560951032,3560951039,SE
3560951040,3560951043,NO
-3560951044,3560951088,SE
+3560951044,3560951083,SE
+3560951084,3560951087,DK
+3560951088,3560951088,SE
3560951089,3560951090,PL
3560951091,3560951091,SE
3560951092,3560951095,IT
@@ -115398,11 +117400,15 @@
3560951104,3560951107,DE
3560951108,3560951111,DK
3560951112,3560951115,FR
-3560951116,3560951195,SE
+3560951116,3560951119,SE
+3560951120,3560951123,CZ
+3560951124,3560951195,SE
3560951196,3560951199,DK
-3560951200,3560951207,SE
+3560951200,3560951203,SE
+3560951204,3560951207,AE
3560951208,3560951211,DK
-3560951212,3560951307,SE
+3560951212,3560951215,IT
+3560951216,3560951307,SE
3560951308,3560951311,IT
3560951312,3560951376,SE
3560951377,3560951378,PL
@@ -115433,9 +117439,13 @@
3560951584,3560951587,FI
3560951588,3560951591,SE
3560951592,3560951595,NO
-3560951596,3560951679,SE
+3560951596,3560951599,CZ
+3560951600,3560951679,SE
3560951680,3560951683,DE
-3560951684,3560951807,SE
+3560951684,3560951759,SE
+3560951760,3560951763,DK
+3560951764,3560951767,HU
+3560951768,3560951807,SE
3560951808,3560951811,US
3560951812,3560951816,SE
3560951817,3560951818,ES
@@ -115447,12 +117457,16 @@
3560951916,3560951919,PL
3560951920,3560951935,SE
3560951936,3560951940,NL
-3560951941,3560952223,SE
+3560951941,3560951943,SE
+3560951944,3560951947,NO
+3560951948,3560952223,SE
3560952224,3560952227,CZ
3560952228,3560952231,SE
3560952232,3560952235,US
3560952236,3560952239,PT
-3560952240,3560953103,SE
+3560952240,3560952255,SE
+3560952256,3560952259,PL
+3560952260,3560953103,SE
3560953104,3560953119,JP
3560953120,3560954239,SE
3560954240,3560954367,AX
@@ -115541,7 +117555,9 @@
3561496960,3561497087,GB
3561497088,3561497119,NL
3561497120,3561497215,GB
-3561497216,3561497423,NL
+3561497216,3561497311,NL
+3561497312,3561497327,GB
+3561497328,3561497423,NL
3561497424,3561497471,GB
3561497472,3561497535,NL
3561497536,3561497599,GB
@@ -115622,8 +117638,8 @@
3561610240,3561610495,US
3561610496,3561610527,FR
3561610528,3561610719,GB
-3561610720,3561611295,FR
-3561611296,3561611559,GB
+3561610720,3561611311,FR
+3561611312,3561611559,GB
3561611560,3561611567,FR
3561611568,3561614175,GB
3561614176,3561614199,FR
@@ -115746,8 +117762,8 @@
3561929856,3561929879,GB
3561929880,3561929919,NL
3561929920,3561929967,GB
-3561929968,3561930335,NL
-3561930336,3561930495,GB
+3561929968,3561930239,NL
+3561930240,3561930495,GB
3561930496,3561930511,NL
3561930512,3561930519,BE
3561930520,3561930527,FR
@@ -115770,6 +117786,7 @@
3561963144,3561963151,AU
3561963152,3561963519,DE
3561963520,3561971711,BE
+3561971712,3561975807,CZ
3561975808,3561979903,UA
3561979904,3561988095,ES
3561988096,3562004479,DE
@@ -116337,36 +118354,23 @@
3563848576,3563848583,ES
3563848584,3563848655,NL
3563848656,3563848959,ES
-3563848960,3563848967,NL
-3563848968,3563848975,ES
-3563848976,3563848979,NL
+3563848960,3563848979,NL
3563848980,3563848983,ES
3563848984,3563848987,NL
3563848988,3563848999,ES
3563849000,3563849151,NL
3563849152,3563849183,ES
-3563849184,3563849197,NL
-3563849198,3563849215,ES
+3563849184,3563849191,NL
+3563849192,3563849215,ES
3563849216,3563849727,GB
-3563849728,3563849991,NL
-3563849992,3563849999,ES
+3563849728,3563849999,NL
3563850000,3563850007,FI
-3563850008,3563850015,NL
-3563850016,3563850047,ES
-3563850048,3563850239,NL
-3563850240,3563850751,GB
-3563850752,3563850767,NL
-3563850768,3563850783,ES
-3563850784,3563850815,NL
-3563850816,3563850831,ES
-3563850832,3563850847,NL
-3563850848,3563850879,ES
-3563850880,3563851007,NL
-3563851008,3563851199,ES
-3563851200,3563851839,NL
+3563850008,3563851023,NL
+3563851024,3563851135,ES
+3563851136,3563851839,NL
3563851840,3563851903,ES
-3563851904,3563851967,NL
-3563851968,3563852095,ES
+3563851904,3563852031,NL
+3563852032,3563852095,ES
3563852096,3563852191,NL
3563852192,3563852207,GB
3563852208,3563852216,NL
@@ -116423,8 +118427,8 @@
3564024144,3564024447,GB
3564024448,3564024463,IT
3564024464,3564024671,GB
-3564024672,3564024831,IT
-3564024832,3564027903,GB
+3564024672,3564024783,IT
+3564024784,3564027903,GB
3564027904,3564041215,DE
3564041216,3564041727,RU
3564041728,3564044287,DE
@@ -116466,7 +118470,9 @@
3564185344,3564191743,UA
3564191744,3564199935,BE
3564199936,3564208127,RU
-3564208128,3564216319,GB
+3564208128,3564212735,GB
+3564212736,3564213007,IE
+3564213008,3564216319,GB
3564216320,3564224511,PT
3564224512,3564232703,GB
3564232704,3564240895,RU
@@ -116707,7 +118713,9 @@
3564560392,3564560399,CA
3564560400,3564560415,US
3564560416,3564560511,GB
-3564560512,3564560607,US
+3564560512,3564560527,US
+3564560528,3564560543,GB
+3564560544,3564560607,US
3564560608,3564560927,GB
3564560928,3564560959,US
3564560960,3564561039,GB
@@ -116742,11 +118750,13 @@
3564566048,3564566079,US
3564566080,3564566143,GB
3564566144,3564566175,US
-3564566176,3564566271,GB
-3564566272,3564566527,US
+3564566176,3564566239,GB
+3564566240,3564566527,US
3564566528,3564567047,GB
3564567048,3564567055,US
-3564567056,3564567143,GB
+3564567056,3564567079,GB
+3564567080,3564567087,US
+3564567088,3564567143,GB
3564567144,3564567151,US
3564567152,3564567183,GB
3564567184,3564567199,US
@@ -116812,13 +118822,15 @@
3564699648,3564716031,GB
3564716032,3564724223,IT
3564724224,3564732415,NL
-3564732416,3564734287,DE
+3564732416,3564733183,DE
+3564733184,3564733439,GB
+3564733440,3564734287,DE
3564734288,3564734303,GB
3564734304,3564734399,DE
3564734400,3564734431,GB
3564734432,3564734815,DE
-3564734816,3564734819,GB
-3564734820,3564734847,DE
+3564734816,3564734823,GB
+3564734824,3564734847,DE
3564734848,3564734975,GB
3564734976,3564736511,DE
3564736512,3564736527,GB
@@ -116888,8 +118900,8 @@
3564881160,3564881199,GB
3564881200,3564881203,FR
3564881204,3564881231,GB
-3564881232,3564881263,NL
-3564881264,3564881343,GB
+3564881232,3564881247,NL
+3564881248,3564881343,GB
3564881344,3564881359,NL
3564881360,3564881375,GB
3564881376,3564881439,NL
@@ -116915,8 +118927,8 @@
3564882144,3564882239,NL
3564882240,3564882255,GB
3564882256,3564882271,NL
-3564882272,3564882399,GB
-3564882400,3564882943,NL
+3564882272,3564882431,GB
+3564882432,3564882943,NL
3564882944,3564883007,GB
3564883008,3564883039,NL
3564883040,3564883071,GB
@@ -116937,9 +118949,7 @@
3564884408,3564884415,NL
3564884416,3564884431,GB
3564884432,3564884439,NL
-3564884440,3564884455,GB
-3564884456,3564884463,NL
-3564884464,3564884487,GB
+3564884440,3564884487,GB
3564884488,3564884519,NL
3564884520,3564884527,FR
3564884528,3564884552,NL
@@ -116972,7 +118982,9 @@
3564885776,3564885791,GB
3564885792,3564885799,NL
3564885800,3564885839,GB
-3564885840,3564885887,NL
+3564885840,3564885855,NL
+3564885856,3564885871,GB
+3564885872,3564885887,NL
3564885888,3564885919,GB
3564885920,3564885935,NL
3564885936,3564885951,GB
@@ -117096,8 +119108,7 @@
3564904448,3564912639,DE
3564912640,3564920831,BG
3564920832,3564922879,ES
-3564922880,3564927999,US
-3564928000,3564929023,RU
+3564922880,3564929023,US
3564929024,3564937215,AT
3564937216,3564945407,RS
3564945408,3564947175,GB
@@ -117309,16 +119320,14 @@
3565036288,3565036543,GB
3565036544,3565037119,IE
3565037120,3565037135,GB
-3565037136,3565037199,IE
-3565037200,3565037215,GB
-3565037216,3565037279,IE
-3565037280,3565037567,GB
+3565037136,3565037311,IE
+3565037312,3565037567,GB
3565037568,3565037823,IE
3565037824,3565038591,GB
3565038592,3565038663,IE
3565038664,3565039615,GB
-3565039616,3565041663,IE
-3565041664,3565043711,GB
+3565039616,3565042175,IE
+3565042176,3565043711,GB
3565043712,3565047807,AT
3565047808,3565048063,LI
3565048064,3565051903,AT
@@ -117876,7 +119885,9 @@
3567388608,3567388671,GB
3567388672,3567388927,CZ
3567388928,3567389183,DE
-3567389184,3567389695,GB
+3567389184,3567389311,GB
+3567389312,3567389375,DE
+3567389376,3567389695,GB
3567389696,3567390975,DE
3567390976,3567391107,GB
3567391108,3567391111,DE
@@ -117885,8 +119896,8 @@
3567391152,3567391231,GB
3567391232,3567391615,DE
3567391616,3567391759,GB
-3567391760,3567391791,DE
-3567391792,3567391807,GB
+3567391760,3567391775,DE
+3567391776,3567391807,GB
3567391808,3567391839,DE
3567391840,3567392767,GB
3567392768,3567393023,DE
@@ -117914,18 +119925,12 @@
3567399048,3567399071,GB
3567399072,3567399103,DE
3567399104,3567399167,GB
-3567399168,3567399263,DE
-3567399264,3567399295,GB
-3567399296,3567399391,DE
+3567399168,3567399391,DE
3567399392,3567399423,GB
3567399424,3567399439,DE
3567399440,3567399487,GB
-3567399488,3567399679,DE
-3567399680,3567399687,GB
-3567399688,3567399695,DE
-3567399696,3567399743,GB
-3567399744,3567399871,DE
-3567399872,3567399935,GB
+3567399488,3567399807,DE
+3567399808,3567399935,GB
3567399936,3567400703,DE
3567400704,3567400735,GB
3567400736,3567400751,DE
@@ -118124,7 +120129,9 @@
3568595080,3568595087,A2
3568595088,3568599039,FR
3568599040,3568631807,PL
-3568631808,3568697343,SE
+3568631808,3568650695,SE
+3568650696,3568650699,US
+3568650700,3568697343,SE
3568697344,3568730111,PL
3568730112,3568746495,NL
3568746496,3568752895,FI
@@ -118168,9 +120175,7 @@
3569238400,3569238527,AT
3569238528,3569239071,BE
3569239072,3569239103,LU
-3569239104,3569239231,BE
-3569239232,3569239263,LU
-3569239264,3569239519,BE
+3569239104,3569239519,BE
3569239520,3569239551,LU
3569239552,3569239983,BE
3569239984,3569239999,BN
@@ -118203,9 +120208,7 @@
3569255072,3569255103,LU
3569255104,3569258975,BE
3569258976,3569259007,LU
-3569259008,3569271815,BE
-3569271816,3569271823,LU
-3569271824,3569271871,BE
+3569259008,3569271871,BE
3569271872,3569271903,NL
3569271904,3569271911,BE
3569271912,3569271919,DE
@@ -118572,7 +120575,9 @@
3570756192,3570756223,RU
3570756224,3570760543,FI
3570760544,3570760575,RU
-3570760576,3570794495,FI
+3570760576,3570783007,FI
+3570783008,3570783023,AX
+3570783024,3570794495,FI
3570794496,3570860031,SE
3570860032,3570892799,CH
3570892800,3570925567,SA
@@ -118610,8 +120615,8 @@
3571286016,3571318911,DE
3571318912,3571319167,GB
3571319168,3571319295,DE
-3571319296,3571319679,GB
-3571319680,3571319935,DE
+3571319296,3571319711,GB
+3571319712,3571319935,DE
3571319936,3571320063,GB
3571320064,3571320575,DE
3571320576,3571320855,GB
@@ -119197,9 +121202,7 @@
3574155728,3574155731,AT
3574155732,3574155739,DE
3574155740,3574155743,AT
-3574155744,3574155851,DE
-3574155852,3574155855,NO
-3574155856,3574155883,DE
+3574155744,3574155883,DE
3574155884,3574155887,NL
3574155888,3574159919,DE
3574159920,3574159927,NL
@@ -119282,8 +121285,8 @@
3574833408,3574833439,NL
3574833440,3574834431,GB
3574834432,3574834559,NL
-3574834560,3574834687,GB
-3574834688,3574835199,NL
+3574834560,3574834943,GB
+3574834944,3574835199,NL
3574835200,3574836351,GB
3574836352,3574838015,NL
3574838016,3574838271,GB
@@ -119334,161 +121337,156 @@
3575513088,3575545855,PT
3575545856,3575562239,FR
3575562240,3575578623,DE
-3575578624,3575578879,EU
+3575578624,3575578879,BE
3575578880,3575579135,AU
-3575579136,3575579647,EU
+3575579136,3575579647,BE
3575579648,3575579903,AU
-3575579904,3575581439,EU
+3575579904,3575581439,BE
3575581440,3575581567,GB
3575581568,3575581695,IT
-3575581696,3575582207,EU
+3575581696,3575582207,BE
3575582208,3575582463,CH
3575582464,3575582719,FR
-3575582720,3575583103,EU
+3575582720,3575583103,BE
3575583104,3575583111,HU
3575583112,3575583115,GB
3575583116,3575583119,FR
-3575583120,3575583231,EU
+3575583120,3575583231,BE
3575583232,3575583487,IT
-3575583488,3575585791,EU
+3575583488,3575585791,BE
3575585792,3575586047,EG
3575586048,3575586303,IT
3575586304,3575586815,BE
3575586816,3575587071,GB
-3575587072,3575587199,EU
-3575587200,3575587215,BE
-3575587216,3575587231,EU
+3575587072,3575587231,BE
3575587232,3575587247,NL
3575587248,3575587255,FR
-3575587256,3575587263,EU
+3575587256,3575587263,BE
3575587264,3575587271,CH
-3575587272,3575587287,EU
+3575587272,3575587287,BE
3575587288,3575587295,PL
-3575587296,3575587319,EU
+3575587296,3575587319,BE
3575587320,3575587323,PL
-3575587324,3575587839,EU
+3575587324,3575587839,BE
3575587840,3575588351,GB
-3575588352,3575588863,EU
+3575588352,3575588863,BE
3575588864,3575589887,A2
-3575589888,3575590399,EU
+3575589888,3575590399,BE
3575590400,3575590911,A2
-3575590912,3575592447,EU
-3575592448,3575592959,BE
-3575592960,3575595007,EU
+3575590912,3575595007,BE
3575595008,3575595519,GB
-3575595520,3575596287,EU
+3575595520,3575596287,BE
3575596288,3575596415,GB
-3575596416,3575596543,EU
+3575596416,3575596543,BE
3575596544,3575596799,FR
-3575596800,3575622607,EU
+3575596800,3575622607,BE
3575622608,3575622611,GB
-3575622612,3575622655,EU
+3575622612,3575622655,BE
3575622656,3575622815,GB
-3575622816,3575622847,EU
+3575622816,3575622847,BE
3575622848,3575622879,IT
3575622880,3575622911,FI
3575622912,3575623167,GB
-3575623168,3575624703,EU
+3575623168,3575624703,BE
3575624704,3575624831,FR
3575624832,3575624839,PT
3575624840,3575624863,GB
3575624864,3575624895,IL
3575624896,3575624911,GB
-3575624912,3575624959,EU
+3575624912,3575624959,BE
3575624960,3575624991,GB
3575624992,3575624999,IT
3575625000,3575625007,GB
3575625008,3575625023,NL
3575625024,3575625027,EG
-3575625028,3575625035,EU
+3575625028,3575625035,BE
3575625036,3575625039,GB
-3575625040,3575625047,EU
+3575625040,3575625047,BE
3575625048,3575625055,FI
-3575625056,3575625071,EU
+3575625056,3575625071,BE
3575625072,3575625087,PL
-3575625088,3575625095,BE
-3575625096,3575625103,EU
+3575625088,3575625103,BE
3575625104,3575625151,GB
-3575625152,3575625351,EU
+3575625152,3575625351,BE
3575625352,3575625359,GB
-3575625360,3575625375,EU
+3575625360,3575625375,BE
3575625376,3575625407,IT
-3575625408,3575625439,EU
+3575625408,3575625439,BE
3575625440,3575625455,ES
-3575625456,3575625471,EU
+3575625456,3575625471,BE
3575625472,3575625503,NO
-3575625504,3575625983,EU
+3575625504,3575625983,BE
3575625984,3575625991,SE
-3575625992,3575626047,EU
+3575625992,3575626047,BE
3575626048,3575626111,FR
-3575626112,3575626319,EU
+3575626112,3575626319,BE
3575626320,3575626335,GB
3575626336,3575626351,ES
3575626352,3575626367,DE
-3575626368,3575626503,EU
+3575626368,3575626503,BE
3575626504,3575626511,CH
-3575626512,3575626519,EU
+3575626512,3575626519,BE
3575626520,3575626527,FR
-3575626528,3575626567,EU
+3575626528,3575626567,BE
3575626568,3575626575,RO
-3575626576,3575626599,EU
+3575626576,3575626599,BE
3575626600,3575626607,IE
-3575626608,3575626631,EU
+3575626608,3575626631,BE
3575626632,3575626639,GB
3575626640,3575626647,DE
3575626648,3575626655,IT
-3575626656,3575627311,EU
+3575626656,3575627311,BE
3575627312,3575627327,ES
3575627328,3575627335,SE
-3575627336,3575627359,EU
+3575627336,3575627359,BE
3575627360,3575627367,ES
-3575627368,3575627423,EU
+3575627368,3575627423,BE
3575627424,3575627431,DE
-3575627432,3575627487,EU
+3575627432,3575627487,BE
3575627488,3575627503,GB
-3575627504,3575627711,EU
+3575627504,3575627711,BE
3575627712,3575627775,GB
3575627776,3575628543,NL
-3575628544,3575628631,EU
+3575628544,3575628631,BE
3575628632,3575628639,GB
-3575628640,3575628815,EU
+3575628640,3575628815,BE
3575628816,3575628823,ES
3575628824,3575628831,FR
-3575628832,3575629183,EU
+3575628832,3575629183,BE
3575629184,3575629247,NL
-3575629248,3575629279,EU
+3575629248,3575629279,BE
3575629280,3575629287,GB
-3575629288,3575629295,EU
+3575629288,3575629295,BE
3575629296,3575629303,NL
-3575629304,3575629823,EU
+3575629304,3575629823,BE
3575629824,3575629855,GR
3575629856,3575629871,DE
-3575629872,3575629935,EU
+3575629872,3575629935,BE
3575629936,3575629951,FR
-3575629952,3575630015,EU
+3575629952,3575630015,BE
3575630016,3575630023,GR
-3575630024,3575630063,EU
+3575630024,3575630063,BE
3575630064,3575630079,ZA
3575630080,3575630335,BE
3575630336,3575630463,IT
3575630464,3575630591,CH
3575630592,3575630847,IL
-3575630848,3575630975,EU
+3575630848,3575630975,BE
3575630976,3575630991,FR
-3575630992,3575631103,EU
+3575630992,3575631103,BE
3575631104,3575631111,AT
3575631112,3575631119,CH
3575631120,3575631127,DE
-3575631128,3575631135,EU
+3575631128,3575631135,BE
3575631136,3575631143,HU
-3575631144,3575631159,EU
+3575631144,3575631159,BE
3575631160,3575631167,GB
3575631168,3575631199,NL
3575631200,3575631207,IE
-3575631208,3575631223,EU
+3575631208,3575631223,BE
3575631224,3575631231,IL
3575631232,3575631295,CH
-3575631296,3575631615,EU
+3575631296,3575631615,BE
3575631616,3575631631,SE
3575631632,3575631639,BE
3575631640,3575631647,CH
@@ -119496,177 +121494,173 @@
3575631664,3575631679,DE
3575631680,3575631695,SE
3575631696,3575631711,IT
-3575631712,3575631759,EU
+3575631712,3575631759,BE
3575631760,3575631775,ZA
-3575631776,3575631791,EU
+3575631776,3575631791,BE
3575631792,3575631799,ES
3575631800,3575631807,CZ
-3575631808,3575631855,EU
+3575631808,3575631855,BE
3575631856,3575631863,ZA
-3575631864,3575631871,EU
-3575631872,3575632639,IL
+3575631864,3575631871,BE
+3575631872,3575632127,IL
+3575632128,3575632639,BE
3575632640,3575632655,NO
-3575632656,3575632703,EU
+3575632656,3575632703,BE
3575632704,3575632711,GB
-3575632712,3575632783,EU
+3575632712,3575632783,BE
3575632784,3575632791,GB
-3575632792,3575632831,EU
-3575632832,3575632847,BE
+3575632792,3575632847,BE
3575632848,3575632863,CH
-3575632864,3575632871,BE
-3575632872,3575632879,EU
+3575632864,3575632879,BE
3575632880,3575632895,DE
-3575632896,3575632967,EU
+3575632896,3575632967,BE
3575632968,3575632975,GB
-3575632976,3575632991,EU
+3575632976,3575632991,BE
3575632992,3575632999,IT
-3575633000,3575633039,EU
+3575633000,3575633039,BE
3575633040,3575633055,DE
3575633056,3575633063,SE
3575633064,3575633071,NL
-3575633072,3575633087,EU
+3575633072,3575633087,BE
3575633088,3575633119,GB
-3575633120,3575633135,EU
+3575633120,3575633135,BE
3575633136,3575633143,GB
-3575633144,3575633599,EU
+3575633144,3575633599,BE
3575633600,3575633663,NL
-3575633664,3575633727,EU
+3575633664,3575633727,BE
3575633728,3575633735,AT
3575633736,3575633743,IT
-3575633744,3575633783,EU
+3575633744,3575633783,BE
3575633784,3575633791,DE
-3575633792,3575633887,EU
+3575633792,3575633887,BE
3575633888,3575633895,SE
-3575633896,3575633919,EU
+3575633896,3575633919,BE
3575633920,3575633983,CH
3575633984,3575633991,DE
-3575633992,3575633999,EU
+3575633992,3575633999,BE
3575634000,3575634007,PT
3575634008,3575634015,DK
3575634016,3575634047,GB
-3575634048,3575634175,BE
-3575634176,3575634183,EU
+3575634048,3575634183,BE
3575634184,3575634191,AT
-3575634192,3575634255,EU
+3575634192,3575634255,BE
3575634256,3575634271,IT
-3575634272,3575634367,EU
+3575634272,3575634367,BE
3575634368,3575634399,NO
3575634400,3575634431,GB
-3575634432,3575634455,EU
+3575634432,3575634455,BE
3575634456,3575634463,DE
-3575634464,3575634495,EU
+3575634464,3575634495,BE
3575634496,3575634511,FI
3575634512,3575634519,CH
-3575634520,3575634591,EU
+3575634520,3575634591,BE
3575634592,3575634599,ES
-3575634600,3575634607,EU
+3575634600,3575634607,BE
3575634608,3575634615,GB
3575634616,3575634623,DE
-3575634624,3575634695,EU
+3575634624,3575634695,BE
3575634696,3575634703,FI
-3575634704,3575634711,EU
+3575634704,3575634711,BE
3575634712,3575634719,DE
-3575634720,3575634767,EU
+3575634720,3575634767,BE
3575634768,3575634775,NO
-3575634776,3575634783,EU
+3575634776,3575634783,BE
3575634784,3575634791,FR
3575634792,3575634799,ES
3575634800,3575634807,BE
3575634808,3575634815,SE
-3575634816,3575634879,EU
+3575634816,3575634879,BE
3575634880,3575634911,GB
3575634912,3575634919,SE
3575634920,3575634927,GB
3575634928,3575634935,IT
-3575634936,3575635015,EU
+3575634936,3575635015,BE
3575635016,3575635023,CH
3575635024,3575635039,ES
-3575635040,3575635055,EU
+3575635040,3575635055,BE
3575635056,3575635063,CH
-3575635064,3575635071,EU
+3575635064,3575635071,BE
3575635072,3575635087,SE
-3575635088,3575635103,EU
+3575635088,3575635103,BE
3575635104,3575635119,PT
3575635120,3575635135,PL
3575635136,3575635151,DE
3575635152,3575635159,PT
3575635160,3575635167,DE
3575635168,3575635175,GB
-3575635176,3575635199,EU
+3575635176,3575635199,BE
3575635200,3575635455,NO
3575635456,3575635463,RU
3575635464,3575635471,GB
-3575635472,3575635583,EU
+3575635472,3575635583,BE
3575635584,3575635615,EG
3575635616,3575635631,FI
-3575635632,3575635647,EU
+3575635632,3575635647,BE
3575635648,3575635679,GB
-3575635680,3575635695,EU
+3575635680,3575635695,BE
3575635696,3575635703,GB
-3575635704,3575635775,EU
+3575635704,3575635775,BE
3575635776,3575635839,CH
3575635840,3575635847,GB
3575635848,3575635855,FR
3575635856,3575635871,TR
-3575635872,3575635983,EU
+3575635872,3575635983,BE
3575635984,3575635999,DE
-3575636000,3575636143,EU
+3575636000,3575636143,BE
3575636144,3575636151,HU
-3575636152,3575636607,EU
+3575636152,3575636607,BE
3575636608,3575636735,FR
-3575636736,3575636807,EU
+3575636736,3575636807,BE
3575636808,3575636815,GB
-3575636816,3575636823,EU
+3575636816,3575636823,BE
3575636824,3575636831,RU
-3575636832,3575636855,EU
+3575636832,3575636855,BE
3575636856,3575636863,DE
-3575636864,3575636871,EU
+3575636864,3575636871,BE
3575636872,3575636879,CZ
-3575636880,3575636895,EU
+3575636880,3575636895,BE
3575636896,3575636903,PL
3575636904,3575636911,CZ
-3575636912,3575636927,EU
+3575636912,3575636927,BE
3575636928,3575636959,DE
-3575636960,3575636983,EU
+3575636960,3575636983,BE
3575636984,3575636991,FR
-3575636992,3575637039,EU
+3575636992,3575637039,BE
3575637040,3575637055,DE
-3575637056,3575637151,EU
+3575637056,3575637151,BE
3575637152,3575637183,GB
-3575637184,3575637367,EU
-3575637368,3575637375,BE
-3575637376,3575637407,EU
+3575637184,3575637407,BE
3575637408,3575637439,LU
3575637440,3575637471,GB
-3575637472,3575638103,EU
+3575637472,3575638103,BE
3575638104,3575638111,GB
-3575638112,3575638175,EU
+3575638112,3575638175,BE
3575638176,3575638239,GB
-3575638240,3575638263,EU
+3575638240,3575638263,BE
3575638264,3575638271,PL
-3575638272,3575638279,EU
+3575638272,3575638279,BE
3575638280,3575638287,RU
-3575638288,3575638303,EU
+3575638288,3575638303,BE
3575638304,3575638335,NO
-3575638336,3575638527,EU
+3575638336,3575638527,BE
3575638528,3575638543,DE
-3575638544,3575638559,EU
+3575638544,3575638559,BE
3575638560,3575638591,GB
-3575638592,3575638623,EU
+3575638592,3575638623,BE
3575638624,3575638639,PL
-3575638640,3575638719,EU
+3575638640,3575638719,BE
3575638720,3575638735,NL
3575638736,3575638751,GR
-3575638752,3575638767,EU
+3575638752,3575638767,BE
3575638768,3575638783,SE
-3575638784,3575638911,EU
+3575638784,3575638911,BE
3575638912,3575638943,FR
3575638944,3575638975,GB
-3575638976,3575639007,EU
+3575638976,3575639007,BE
3575639008,3575639011,GB
3575639012,3575639023,IE
3575639024,3575639039,PL
-3575639040,3575640063,EU
+3575639040,3575640063,BE
3575640064,3575644159,TR
3575644160,3575709695,DK
3575709696,3575730175,AT
@@ -120260,7 +122254,10 @@
3576239040,3576239071,GB
3576239072,3576239087,FR
3576239088,3576239103,GB
-3576239104,3576239663,FR
+3576239104,3576239615,FR
+3576239616,3576239623,GB
+3576239624,3576239631,IT
+3576239632,3576239663,FR
3576239664,3576239671,GB
3576239672,3576240039,FR
3576240040,3576240047,GB
@@ -120292,7 +122289,9 @@
3576242184,3576242199,GB
3576242200,3576242319,FR
3576242320,3576242327,GB
-3576242328,3576243967,FR
+3576242328,3576242335,FR
+3576242336,3576242343,GB
+3576242344,3576243967,FR
3576243968,3576243999,GB
3576244000,3576244031,FR
3576244032,3576244047,GB
@@ -120317,8 +122316,10 @@
3576249824,3576249831,FR
3576249832,3576249839,GB
3576249840,3576250623,FR
-3576250624,3576250879,GB
-3576250880,3576251407,FR
+3576250624,3576251007,GB
+3576251008,3576251039,FR
+3576251040,3576251135,GB
+3576251136,3576251407,FR
3576251408,3576251519,GB
3576251520,3576251583,FR
3576251584,3576251599,GB
@@ -120516,9 +122517,7 @@
3576261104,3576261111,GB
3576261112,3576261375,FR
3576261376,3576261631,GB
-3576261632,3576261823,FR
-3576261824,3576261887,GB
-3576261888,3576261927,FR
+3576261632,3576261927,FR
3576261928,3576261935,GB
3576261936,3576263439,FR
3576263440,3576263487,GB
@@ -120550,9 +122549,9 @@
3576264576,3576264623,GB
3576264624,3576264639,FR
3576264640,3576264687,GB
-3576264688,3576265279,FR
-3576265280,3576265287,GB
-3576265288,3576265303,FR
+3576264688,3576265287,FR
+3576265288,3576265295,GB
+3576265296,3576265303,FR
3576265304,3576265311,GB
3576265312,3576265327,FR
3576265328,3576265335,GB
@@ -120615,7 +122614,9 @@
3576954880,3576987647,NO
3576987648,3577001983,GB
3577001984,3577003583,NL
-3577003584,3577003771,GB
+3577003584,3577003743,GB
+3577003744,3577003767,NL
+3577003768,3577003771,GB
3577003772,3577003775,NL
3577003776,3577020415,GB
3577020416,3577085951,NL
@@ -120647,7 +122648,9 @@
3577559776,3577559783,FR
3577559784,3577562391,DE
3577562392,3577562399,GB
-3577562400,3577577231,DE
+3577562400,3577567711,DE
+3577567712,3577567719,IT
+3577567720,3577577231,DE
3577577232,3577577247,US
3577577248,3577592431,DE
3577592432,3577592447,FR
@@ -120901,7 +122904,9 @@
3578920960,3578986495,IT
3578986496,3578988095,DE
3578988096,3578988099,CH
-3578988100,3578996999,DE
+3578988100,3578992959,DE
+3578992960,3578992975,GB
+3578992976,3578996999,DE
3578997000,3578997007,CH
3578997008,3578997935,DE
3578997936,3578997943,FR
@@ -120931,7 +122936,9 @@
3579193728,3579193815,NL
3579193816,3579193823,ES
3579193824,3579193855,NL
-3579193856,3579194103,GB
+3579193856,3579194039,GB
+3579194040,3579194047,SE
+3579194048,3579194103,GB
3579194104,3579194111,US
3579194112,3579197055,GB
3579197056,3579197183,US
@@ -120943,7 +122950,11 @@
3579205632,3579205887,IE
3579205888,3579210079,GB
3579210080,3579210087,BE
-3579210088,3579221071,GB
+3579210088,3579213247,GB
+3579213248,3579213311,IT
+3579213312,3579221023,GB
+3579221024,3579221039,FR
+3579221040,3579221071,GB
3579221072,3579221087,DE
3579221088,3579221103,GB
3579221104,3579221119,IT
@@ -121267,7 +123278,7 @@
3580686336,3580688383,BG
3580688384,3580698623,RU
3580698624,3580702719,PL
-3580702720,3580710911,RU
+3580706816,3580710911,RU
3580710912,3580715007,UA
3580715008,3580719103,RU
3580719104,3580723199,NL
@@ -121349,9 +123360,11 @@
3582091264,3582099455,QA
3582099456,3582107647,GB
3582107648,3582115839,NL
-3582115840,3582120959,SE
+3582115840,3582117887,SE
+3582117888,3582119423,LT
+3582119424,3582120959,SE
3582120960,3582121983,EE
-3582121984,3582124031,SE
+3582121984,3582124031,LT
3582124032,3582125383,FI
3582125384,3582125391,AX
3582125392,3582132223,FI
@@ -121584,8 +123597,7 @@
3582571136,3582571199,FR
3582571200,3582571303,EU
3582571304,3582571307,CH
-3582571308,3582571311,FR
-3582571312,3582571375,EU
+3582571308,3582571375,EU
3582571376,3582571391,FR
3582571392,3582571407,EU
3582571408,3582571423,FR
@@ -121594,16 +123606,14 @@
3582571488,3582571647,EU
3582571648,3582571687,IE
3582571688,3582571691,EU
-3582571692,3582571707,IE
-3582571708,3582571727,EU
-3582571728,3582571743,IE
+3582571692,3582571719,IE
+3582571720,3582571735,EU
+3582571736,3582571743,IE
3582571744,3582571751,EU
3582571752,3582571839,IE
3582571840,3582571999,EU
3582572000,3582572015,IE
-3582572016,3582572023,EU
-3582572024,3582572031,IE
-3582572032,3582572415,EU
+3582572016,3582572415,EU
3582572416,3582572431,CH
3582572432,3582572447,EU
3582572448,3582572451,CH
@@ -121641,9 +123651,7 @@
3582573600,3582573615,CH
3582573616,3582573631,EU
3582573632,3582573695,CH
-3582573696,3582573727,EU
-3582573728,3582573759,CH
-3582573760,3582573823,EU
+3582573696,3582573823,EU
3582573824,3582573887,CH
3582573888,3582573895,EU
3582573896,3582573903,CH
@@ -121690,7 +123698,9 @@
3582746624,3582754815,RU
3582754816,3582763007,GR
3582763008,3582771199,FI
-3582771200,3582779391,CY
+3582771200,3582772479,CY
+3582772480,3582772735,GB
+3582772736,3582779391,CY
3582779392,3582787583,RU
3582787584,3582795775,PT
3582795776,3582803967,ES
@@ -121700,6 +123710,7 @@
3582828544,3582836735,KZ
3582836736,3582853119,RU
3582853120,3582861311,SE
+3582861312,3582869503,RU
3582869504,3582877695,NO
3582877696,3582885887,AT
3582885888,3582894079,TR
@@ -121723,7 +123734,8 @@
3583019376,3583023215,CH
3583023216,3583023223,DE
3583023224,3583025151,CH
-3583025152,3583028991,IT
+3583025152,3583025279,BR
+3583025280,3583028991,IT
3583028992,3583029119,DJ
3583029120,3583029247,US
3583029248,3583029375,SG
@@ -121745,7 +123757,9 @@
3583032160,3583032191,FR
3583032192,3583032319,IT
3583032320,3583032575,FR
-3583032576,3583033343,IT
+3583032576,3583032831,IT
+3583032832,3583033087,SG
+3583033088,3583033343,IT
3583033344,3583041535,FR
3583041536,3583049727,NL
3583049728,3583066111,RU
@@ -121902,17 +123916,13 @@
3583706104,3583706107,NA
3583706108,3583706151,UA
3583706152,3583706159,NA
-3583706160,3583706175,UA
-3583706176,3583706183,NA
-3583706184,3583706191,UA
+3583706160,3583706191,UA
3583706192,3583706199,NA
3583706200,3583706223,UA
3583706224,3583706231,NA
3583706232,3583706295,UA
3583706296,3583706319,NA
-3583706320,3583706375,UA
-3583706376,3583706383,NA
-3583706384,3583706463,UA
+3583706320,3583706463,UA
3583706464,3583706471,NA
3583706472,3583706495,UA
3583706496,3583706511,NA
@@ -121963,8 +123973,8 @@
3583707224,3583707519,UA
3583707520,3583707535,NA
3583707536,3583707663,UA
-3583707664,3583707679,NA
-3583707680,3583707751,UA
+3583707664,3583707671,NA
+3583707672,3583707751,UA
3583707752,3583707767,NA
3583707768,3583707775,UA
3583707776,3583707791,NA
@@ -121980,13 +123990,11 @@
3583708168,3583708175,NA
3583708176,3583708183,UA
3583708184,3583708191,RU
-3583708192,3583708223,UA
-3583708224,3583708239,NA
+3583708192,3583708231,UA
+3583708232,3583708239,NA
3583708240,3583708423,UA
3583708424,3583708431,NA
-3583708432,3583708455,UA
-3583708456,3583708463,NA
-3583708464,3583708479,UA
+3583708432,3583708479,UA
3583708480,3583708543,NA
3583708544,3583708575,UA
3583708576,3583708583,NA
@@ -121995,11 +124003,9 @@
3583708624,3583709447,UA
3583709448,3583709455,NA
3583709456,3583709463,DE
-3583709464,3583709479,UA
-3583709480,3583709487,NA
-3583709488,3583709503,UA
-3583709504,3583709511,NA
-3583709512,3583709527,UA
+3583709464,3583709503,UA
+3583709504,3583709519,RU
+3583709520,3583709527,UA
3583709528,3583709543,NA
3583709544,3583709551,UA
3583709552,3583709559,NA
@@ -122008,8 +124014,8 @@
3583709584,3583709599,UA
3583709600,3583709607,NA
3583709608,3583709615,RU
-3583709616,3583709623,UA
-3583709624,3583709639,NA
+3583709616,3583709631,UA
+3583709632,3583709639,NA
3583709640,3583709663,UA
3583709664,3583709671,NA
3583709672,3583709699,UA
@@ -122025,23 +124031,23 @@
3583709824,3583709831,NA
3583709832,3583709839,UA
3583709840,3583709863,NA
-3583709864,3583709871,UA
+3583709864,3583709871,RU
3583709872,3583709879,NA
3583709880,3583709887,UA
3583709888,3583709911,NA
3583709912,3583709927,UA
3583709928,3583709943,NA
3583709944,3583710055,UA
-3583710056,3583710063,NA
-3583710064,3583710079,DE
+3583710056,3583710072,NA
+3583710073,3583710079,UA
3583710080,3583710087,NA
3583710088,3583710103,UA
3583710104,3583710111,NA
3583710112,3583710119,UA
3583710120,3583710135,NA
3583710136,3583710211,UA
-3583710212,3583710223,NA
-3583710224,3583710239,UA
+3583710212,3583710215,NA
+3583710216,3583710239,UA
3583710240,3583710247,NA
3583710248,3583710319,UA
3583710320,3583710335,NA
@@ -122063,24 +124069,23 @@
3583710704,3583710711,NA
3583710712,3583710743,UA
3583710744,3583710751,BE
-3583710752,3583710759,US
-3583710760,3583710823,UA
+3583710752,3583710823,UA
3583710824,3583710831,NA
-3583710832,3583710847,UA
-3583710848,3583710855,IL
+3583710832,3583710855,UA
3583710856,3583710863,NA
3583710864,3583710871,UA
3583710872,3583710879,NA
3583710880,3583710887,UA
-3583710888,3583710911,NA
-3583710912,3583710935,UA
+3583710888,3583710903,NA
+3583710904,3583710935,UA
3583710936,3583710943,NA
3583710944,3583710959,UA
3583710960,3583710967,NA
3583710968,3583710991,UA
3583710992,3583710999,NA
3583711000,3583711007,UA
-3583711008,3583711023,NA
+3583711008,3583711015,RU
+3583711016,3583711023,NA
3583711024,3583711079,UA
3583711080,3583711087,GB
3583711088,3583711095,NA
@@ -122102,25 +124107,21 @@
3583711568,3583711591,NA
3583711592,3583711607,UA
3583711608,3583711615,NA
-3583711616,3583711695,UA
+3583711616,3583711631,UA
+3583711632,3583711639,RU
+3583711640,3583711695,UA
3583711696,3583711703,NA
3583711704,3583711711,UA
-3583711712,3583711727,NA
-3583711728,3583711759,UA
-3583711760,3583711767,NA
-3583711768,3583711783,UA
+3583711712,3583711719,NA
+3583711720,3583711783,UA
3583711784,3583711799,NA
-3583711800,3583711807,UA
-3583711808,3583711823,NA
-3583711824,3583711831,UA
-3583711832,3583711839,NA
-3583711840,3583711863,UA
-3583711864,3583711879,NA
+3583711800,3583711815,UA
+3583711816,3583711823,NA
+3583711824,3583711871,UA
+3583711872,3583711879,NA
3583711880,3583712015,UA
3583712016,3583712031,NA
-3583712032,3583712095,UA
-3583712096,3583712111,NA
-3583712112,3583712119,UA
+3583712032,3583712119,UA
3583712120,3583712127,NA
3583712128,3583712159,UA
3583712160,3583712199,NA
@@ -122130,16 +124131,11 @@
3583712312,3583712319,NA
3583712320,3583712415,UA
3583712416,3583712423,NA
-3583712424,3583712431,SG
-3583712432,3583712439,UA
+3583712424,3583712439,UA
3583712440,3583712479,NA
-3583712480,3583712591,UA
-3583712592,3583712599,NA
-3583712600,3583712623,UA
+3583712480,3583712623,UA
3583712624,3583712631,NA
-3583712632,3583712639,UA
-3583712640,3583712647,NA
-3583712648,3583712655,UA
+3583712632,3583712655,UA
3583712656,3583712663,NA
3583712664,3583712703,UA
3583712704,3583712719,NA
@@ -122152,30 +124148,28 @@
3583712776,3583712783,NA
3583712784,3583712839,UA
3583712840,3583712847,NA
-3583712848,3583712911,UA
-3583712912,3583712943,NA
-3583712944,3583712959,UA
-3583712960,3583712983,NA
-3583712984,3583713007,UA
+3583712848,3583712919,UA
+3583712920,3583712943,NA
+3583712944,3583713007,UA
3583713008,3583713015,RU
3583713016,3583713031,UA
3583713032,3583713039,NA
-3583713040,3583713071,UA
+3583713040,3583713063,UA
+3583713064,3583713071,KP
3583713072,3583713079,NA
3583713080,3583713103,UA
-3583713104,3583713111,NA
-3583713112,3583713127,UA
-3583713128,3583713135,IT
-3583713136,3583713143,UA
+3583713104,3583713111,AZ
+3583713112,3583713143,UA
3583713144,3583713151,NA
-3583713152,3583713159,UA
-3583713160,3583713167,NA
+3583713152,3583713167,UA
3583713168,3583713175,EG
3583713176,3583713183,UA
3583713184,3583713191,NA
3583713192,3583713223,UA
3583713224,3583713231,NA
-3583713232,3583713279,UA
+3583713232,3583713271,UA
+3583713272,3583713275,RU
+3583713276,3583713279,UA
3583713280,3583721471,CZ
3583721472,3583729663,DE
3583729664,3583737855,TR
@@ -122336,9 +124330,7 @@
3584295760,3584295767,PT
3584295768,3584295807,AT
3584295808,3584295815,PT
-3584295816,3584295935,AT
-3584295936,3584295943,AS
-3584295944,3584303103,AT
+3584295816,3584303103,AT
3584303104,3584311295,ES
3584311296,3584319487,DE
3584319488,3584327679,LT
@@ -122376,9 +124368,7 @@
3584508944,3584508951,KY
3584508952,3584509231,GB
3584509232,3584509239,AW
-3584509240,3584509359,GB
-3584509360,3584509367,KY
-3584509368,3584510999,GB
+3584509240,3584510999,GB
3584511000,3584511007,KY
3584511008,3584511023,GB
3584511024,3584511039,KY
@@ -122470,18 +124460,13 @@
3584958464,3584966655,DE
3584966656,3584974847,DK
3584974848,3584983039,FR
-3584983040,3584983807,US
-3584983808,3584984063,UA
-3584984064,3584984319,US
-3584984320,3584984575,UA
-3584984576,3584988607,US
-3584988608,3584988623,UA
-3584988624,3584988655,US
+3584983040,3584988655,US
3584988656,3584988671,UA
3584988672,3584990303,US
3584990304,3584990463,UA
3584990464,3584990495,NL
-3584990496,3584990527,UA
+3584990496,3584990511,US
+3584990512,3584990527,UA
3584990528,3584990591,US
3584990592,3584990719,GB
3584990720,3584991231,US
@@ -122498,7 +124483,9 @@
3585055072,3585055087,NG
3585055088,3585056767,GB
3585056768,3585064959,LB
-3585064960,3585081343,GB
+3585064960,3585071405,GB
+3585071406,3585071409,IN
+3585071410,3585081343,GB
3585081344,3585114111,IR
3585114112,3585122303,IS
3585122304,3585130495,ES
@@ -122509,8 +124496,8 @@
3585163264,3585171455,BE
3585171456,3585179647,RU
3585179648,3585189887,BE
-3585189888,3585190399,DZ
-3585190400,3585190527,BE
+3585189888,3585190143,DZ
+3585190144,3585190527,BE
3585190528,3585190655,DZ
3585190656,3585196031,BE
3585196032,3585204223,ES
@@ -122556,7 +124543,9 @@
3585515520,3585523711,RU
3585523712,3585531903,LV
3585531904,3585540095,AT
-3585540096,3585548287,DE
+3585540096,3585542335,DE
+3585542336,3585542351,TR
+3585542352,3585548287,DE
3585548288,3585556479,RU
3585556480,3585564671,DE
3585564672,3585572863,RU
@@ -122646,6 +124635,7 @@
3585716424,3585720319,AT
3585720320,3585728511,GB
3585728512,3585736703,SE
+3585736704,3585744895,HR
3585744896,3585750335,FR
3585750336,3585750351,GB
3585750352,3585750367,DE
@@ -122681,9 +124671,7 @@
3585835952,3585835959,SO
3585835960,3585835967,TD
3585835968,3585835983,ER
-3585835984,3585836007,NL
-3585836008,3585836023,IQ
-3585836024,3585836287,NL
+3585835984,3585836287,NL
3585836288,3585836543,CH
3585836544,3585837055,DZ
3585837056,3585837567,IQ
@@ -122744,7 +124732,9 @@
3585937408,3585940479,NL
3585940480,3585940735,BE
3585940736,3585941503,NL
-3585941504,3585949695,PL
+3585941504,3585943135,PL
+3585943136,3585943167,US
+3585943168,3585949695,PL
3585949696,3585957887,KW
3585957888,3585966079,SE
3585966080,3585974271,CH
@@ -122815,8 +124805,8 @@
3586270080,3586270207,NL
3586270208,3586271231,ES
3586271232,3586271487,NL
-3586271488,3586271831,ES
-3586271832,3586271839,IT
+3586271488,3586271823,ES
+3586271824,3586271839,IT
3586271840,3586271999,ES
3586272000,3586272255,IT
3586272256,3586272383,NL
@@ -122896,18 +124886,19 @@
3586678272,3586678335,FR
3586678336,3586678399,US
3586678400,3586678415,GB
-3586678416,3586678439,IE
+3586678416,3586678431,FR
+3586678432,3586678439,IE
3586678440,3586678447,FR
3586678448,3586678527,IE
-3586678528,3586678671,FR
+3586678528,3586678655,FR
+3586678656,3586678671,CY
3586678672,3586678679,GB
3586678680,3586678687,MU
3586678688,3586678783,GB
3586678784,3586679039,IT
-3586679040,3586679103,US
+3586679040,3586679103,FR
3586679104,3586679167,DE
-3586679168,3586679231,US
-3586679232,3586679327,FR
+3586679168,3586679327,FR
3586679328,3586679343,DK
3586679344,3586679359,FR
3586679360,3586679423,DE
@@ -122931,7 +124922,9 @@
3586680832,3586681087,FR
3586681088,3586681343,IT
3586681344,3586682111,FR
-3586682112,3586682367,US
+3586682112,3586682175,US
+3586682176,3586682239,FR
+3586682240,3586682367,US
3586682368,3586682399,AT
3586682400,3586682879,FR
3586682880,3586686975,US
@@ -123011,23 +125004,57 @@
3586916352,3586924031,IT
3586924032,3586924047,US
3586924048,3586924543,IT
-3586924544,3586924831,AX
-3586924832,3586924839,FI
-3586924840,3586924879,AX
-3586924880,3586924887,FI
-3586924888,3586924967,AX
-3586924968,3586924983,FI
-3586924984,3586925439,AX
-3586925440,3586925471,FI
-3586925472,3586925567,AX
+3586924544,3586924743,FI
+3586924744,3586924751,AX
+3586924752,3586924767,FI
+3586924768,3586924799,AX
+3586924800,3586924871,FI
+3586924872,3586924879,AX
+3586924880,3586924919,FI
+3586924920,3586924927,AX
+3586924928,3586924943,FI
+3586924944,3586924959,AX
+3586924960,3586924983,FI
+3586924984,3586925055,AX
+3586925056,3586925103,FI
+3586925104,3586925135,AX
+3586925136,3586925247,FI
+3586925248,3586925263,AX
+3586925264,3586925311,FI
+3586925312,3586925375,AX
+3586925376,3586925439,FI
+3586925440,3586925503,AX
+3586925504,3586925535,FI
+3586925536,3586925567,AX
3586925568,3586925695,FI
-3586925696,3586926591,AX
+3586925696,3586925759,AX
+3586925760,3586925791,FI
+3586925792,3586925823,AX
+3586925824,3586925831,FI
+3586925832,3586925855,AX
+3586925856,3586925887,FI
+3586925888,3586925919,AX
+3586925920,3586925983,FI
+3586925984,3586926003,AX
+3586926004,3586926015,FI
+3586926016,3586926047,AX
+3586926048,3586926079,FI
+3586926080,3586926591,AX
3586926592,3586926847,SE
-3586926848,3586928255,AX
-3586928256,3586928287,FI
-3586928288,3586928335,AX
-3586928336,3586928351,FI
-3586928352,3586932735,AX
+3586926848,3586927103,FI
+3586927104,3586927999,AX
+3586928000,3586928127,FI
+3586928128,3586928143,AX
+3586928144,3586928159,FI
+3586928160,3586928175,AX
+3586928176,3586928223,FI
+3586928224,3586928239,AX
+3586928240,3586928287,FI
+3586928288,3586928319,AX
+3586928320,3586928335,FI
+3586928336,3586928351,AX
+3586928352,3586928639,FI
+3586928640,3586932735,AX
3586932736,3586949119,LB
3586949120,3586965503,SE
3586965504,3586981887,NL
@@ -123064,11 +125091,9 @@
3587162112,3587178495,IR
3587178496,3587178795,AT
3587178796,3587178799,US
-3587178800,3587179279,AT
-3587179280,3587179287,AU
-3587179288,3587179439,AT
+3587178800,3587179439,AT
3587179440,3587179455,GB
-3587179456,3587179463,TR
+3587179456,3587179463,AT
3587179464,3587179471,CH
3587179472,3587186687,AT
3587186688,3587194495,DE
@@ -123086,16 +125111,16 @@
3587227648,3587227759,NL
3587227760,3587227775,GB
3587227776,3587227903,NL
-3587227904,3587227919,GB
-3587227920,3587227935,NL
-3587227936,3587227967,GB
+3587227904,3587227967,GB
3587227968,3587227983,DE
3587227984,3587228047,GB
3587228048,3587228087,NL
3587228088,3587228127,GB
3587228128,3587228271,NL
3587228272,3587228287,GB
-3587228288,3587228591,NL
+3587228288,3587228351,NL
+3587228352,3587228367,GB
+3587228368,3587228591,NL
3587228592,3587228607,GB
3587228608,3587228640,NL
3587228641,3587228647,GB
@@ -123103,7 +125128,8 @@
3587228928,3587229455,GB
3587229456,3587229823,NL
3587229824,3587229839,GB
-3587229840,3587229871,NL
+3587229840,3587229855,ES
+3587229856,3587229871,NL
3587229872,3587229887,GB
3587229888,3587229920,NL
3587229921,3587229935,GB
@@ -123137,7 +125163,9 @@
3587232536,3587232711,GB
3587232712,3587232719,NL
3587232720,3587232767,GB
-3587232768,3587233295,NL
+3587232768,3587233103,NL
+3587233104,3587233119,GB
+3587233120,3587233295,NL
3587233296,3587233319,GB
3587233320,3587233343,NL
3587233344,3587233359,GB
@@ -123185,25 +125213,21 @@
3587238472,3587238479,GB
3587238480,3587238535,NL
3587238536,3587238543,GB
-3587238544,3587238607,NL
+3587238544,3587238575,NL
+3587238576,3587238583,GB
+3587238584,3587238607,NL
3587238608,3587238911,GB
3587238912,3587239303,NL
3587239304,3587239311,GB
-3587239312,3587239679,NL
-3587239680,3587239687,GB
-3587239688,3587239767,NL
-3587239768,3587239775,GB
-3587239776,3587239791,NL
-3587239792,3587239807,GB
-3587239808,3587239871,NL
-3587239872,3587239935,GB
-3587239936,3587240015,NL
-3587240016,3587240023,GB
-3587240024,3587240087,NL
+3587239312,3587239903,NL
+3587239904,3587239935,GB
+3587239936,3587240087,NL
3587240088,3587240095,GB
3587240096,3587240103,NL
3587240104,3587240107,GB
-3587240108,3587240439,NL
+3587240108,3587240359,NL
+3587240360,3587240367,GB
+3587240368,3587240439,NL
3587240440,3587240447,GB
3587240448,3587240511,NL
3587240512,3587240575,GB
@@ -123353,10 +125377,9 @@
3587375104,3587383295,TR
3587383296,3587391487,CZ
3587391488,3587407871,KZ
-3587407872,3587408127,NL
-3587408128,3587415039,BE
-3587415040,3587422719,NL
-3587422720,3587424255,BE
+3587407872,3587408383,NL
+3587408384,3587408895,BE
+3587408896,3587424255,NL
3587424256,3587440639,DE
3587440640,3587457023,SE
3587457024,3587459263,GB
@@ -123376,19 +125399,11 @@
3587620864,3587637247,SE
3587637248,3587653631,FR
3587653632,3587670015,SK
-3587670016,3587673763,IT
-3587673764,3587673767,GB
-3587673768,3587673787,IT
-3587673788,3587673792,GB
-3587673793,3587679135,IT
+3587670016,3587679135,IT
3587679136,3587679143,ES
3587679144,3587683327,IT
3587683328,3587683359,FR
-3587683360,3587683415,IT
-3587683416,3587683416,GB
-3587683417,3587685831,IT
-3587685832,3587685839,GB
-3587685840,3587686031,IT
+3587683360,3587686031,IT
3587686032,3587686039,FR
3587686040,3587687591,IT
3587687592,3587687599,NL
@@ -123416,9 +125431,7 @@
3587850240,3587854335,NL
3587854336,3587866623,PL
3587866624,3587874815,FR
-3587874816,3587877383,DE
-3587877384,3587877391,US
-3587877392,3587877407,DE
+3587874816,3587877407,DE
3587877408,3587877439,NL
3587877440,3587878527,DE
3587878528,3587878559,AT
@@ -123447,6 +125460,7 @@
3588112384,3588128767,FR
3588128768,3588145151,HU
3588145152,3588153343,PL
+3588153344,3588161535,RU
3588161536,3588227071,FR
3588227072,3588292607,BE
3588292608,3588308991,AT
@@ -123542,7 +125556,8 @@
3589034368,3589034431,NL
3589034432,3589034495,FR
3589034496,3589037055,ES
-3589037056,3589037343,NL
+3589037056,3589037183,BE
+3589037184,3589037343,NL
3589037344,3589037375,SE
3589037376,3589037423,NL
3589037424,3589037439,ES
@@ -123609,7 +125624,8 @@
3589429248,3589429503,FR
3589429504,3589430271,GB
3589430272,3589430543,FR
-3589430544,3589431295,GB
+3589430544,3589430559,ES
+3589430560,3589431295,GB
3589431296,3589431343,FR
3589431344,3589432319,GB
3589432320,3589432575,CH
@@ -123651,8 +125667,8 @@
3589554176,3589570559,PS
3589570560,3589570655,NL
3589570656,3589578751,GB
-3589578752,3589579263,NL
-3589579264,3589579775,GB
+3589578752,3589579391,NL
+3589579392,3589579775,GB
3589579776,3589580799,NL
3589580800,3589580895,GB
3589580896,3589581055,NL
@@ -123663,9 +125679,7 @@
3589581440,3589581567,GB
3589581568,3589581791,NL
3589581792,3589581823,GB
-3589581824,3589582591,NL
-3589582592,3589582607,GB
-3589582608,3589582639,NL
+3589581824,3589582639,NL
3589582640,3589582655,GB
3589582656,3589583359,NL
3589583360,3589583647,GB
@@ -123691,7 +125705,7 @@
3589680768,3589685247,FR
3589685248,3589718015,GB
3589718016,3589719343,BE
-3589719344,3589719347,GB
+3589719344,3589719347,LU
3589719348,3589719847,BE
3589719848,3589719855,AT
3589719856,3589719967,BE
@@ -123708,16 +125722,14 @@
3589720312,3589720575,BE
3589720576,3589720583,ES
3589720584,3589720599,FR
-3589720600,3589720603,BE
-3589720604,3589720607,GB
-3589720608,3589720623,BE
+3589720600,3589720623,BE
3589720624,3589720631,GB
3589720632,3589720639,FR
3589720640,3589720655,BE
3589720656,3589720663,ES
3589720664,3589720687,BE
3589720688,3589720695,GB
-3589720696,3589720703,FR
+3589720696,3589720703,ES
3589720704,3589720727,BE
3589720728,3589720735,GB
3589720736,3589720743,BE
@@ -123745,9 +125757,7 @@
3589721048,3589721055,ES
3589721056,3589721063,BE
3589721064,3589721071,GB
-3589721072,3589721147,BE
-3589721148,3589721151,GB
-3589721152,3589721159,BE
+3589721072,3589721159,BE
3589721160,3589721167,GB
3589721168,3589721231,BE
3589721232,3589721247,GB
@@ -123767,9 +125777,7 @@
3589721952,3589721967,GB
3589721968,3589722023,BE
3589722024,3589722031,FR
-3589722032,3589722059,BE
-3589722060,3589722063,GB
-3589722064,3589722111,BE
+3589722032,3589722111,BE
3589722112,3589722143,GB
3589722144,3589722159,BE
3589722160,3589722167,FR
@@ -123781,19 +125789,16 @@
3589722264,3589722271,GB
3589722272,3589722279,BE
3589722280,3589722287,FR
-3589722288,3589722295,BE
-3589722296,3589722299,GB
-3589722300,3589722303,BE
+3589722288,3589722303,BE
3589722304,3589722311,FR
3589722312,3589722319,GB
3589722320,3589722335,FR
3589722336,3589722343,BE
3589722344,3589722359,FR
3589722360,3589722383,BE
-3589722384,3589722391,FR
-3589722392,3589722395,BE
-3589722396,3589722399,GB
-3589722400,3589722439,BE
+3589722384,3589722391,DE
+3589722392,3589722431,BE
+3589722432,3589722439,ES
3589722440,3589722447,GB
3589722448,3589722623,BE
3589722624,3589722631,GB
@@ -123805,16 +125810,12 @@
3589722792,3589722799,GB
3589722800,3589722835,BE
3589722836,3589722843,GB
-3589722844,3589722859,BE
-3589722860,3589722863,GB
-3589722864,3589722943,BE
+3589722844,3589722943,BE
3589722944,3589722951,GB
3589722952,3589722959,FR
-3589722960,3589722979,BE
-3589722980,3589722991,GB
-3589722992,3589722995,BE
-3589722996,3589722999,GB
-3589723000,3589723023,BE
+3589722960,3589722983,BE
+3589722984,3589722991,GB
+3589722992,3589723023,BE
3589723024,3589723031,FR
3589723032,3589723975,BE
3589723976,3589723983,FR
@@ -123864,27 +125865,16 @@
3589726488,3589726495,GB
3589726496,3589726535,BE
3589726536,3589726543,GB
-3589726544,3589729743,BE
+3589726544,3589727007,BE
+3589727008,3589727015,FR
+3589727016,3589729735,BE
+3589729736,3589729743,ES
3589729744,3589729751,GB
-3589729752,3589730071,BE
-3589730072,3589730075,GB
-3589730076,3589730087,BE
+3589729752,3589730087,BE
3589730088,3589730095,GB
3589730096,3589730111,BE
3589730112,3589730119,GB
-3589730120,3589730139,BE
-3589730140,3589730143,GB
-3589730144,3589731603,BE
-3589731604,3589731607,GB
-3589731608,3589731635,BE
-3589731636,3589731639,GB
-3589731640,3589731719,BE
-3589731720,3589731723,GB
-3589731724,3589731731,BE
-3589731732,3589731735,GB
-3589731736,3589731819,BE
-3589731820,3589731823,GB
-3589731824,3589733375,BE
+3589730120,3589733375,BE
3589733376,3589733439,LU
3589733440,3589734399,BE
3589734400,3589742591,EG
@@ -123988,16 +125978,13 @@
3590155816,3590155823,HR
3590155824,3590156031,SI
3590156032,3590156287,RS
-3590156288,3590156415,HR
-3590156416,3590156423,SI
-3590156424,3590156431,HR
+3590156288,3590156431,HR
3590156432,3590156447,SI
-3590156448,3590156679,HR
-3590156680,3590156687,SI
+3590156448,3590156671,HR
+3590156672,3590156687,SI
3590156688,3590156719,HR
3590156720,3590156727,SI
-3590156728,3590156959,HR
-3590156960,3590156991,AE
+3590156728,3590156991,HR
3590156992,3590157039,SI
3590157040,3590157311,HR
3590157312,3590157343,RS
@@ -124105,9 +126092,7 @@
3590254128,3590254135,RU
3590254136,3590254143,FR
3590254144,3590254271,US
-3590254272,3590254303,FR
-3590254304,3590254335,US
-3590254336,3590254463,FR
+3590254272,3590254463,FR
3590254464,3590254879,ES
3590254880,3590254911,FR
3590254912,3590254975,ES
@@ -124123,7 +126108,7 @@
3590256384,3590256639,IT
3590256640,3590256703,US
3590256704,3590256719,BE
-3590256720,3590256735,IE
+3590256720,3590256735,FR
3590256736,3590256767,BE
3590256768,3590257151,US
3590257152,3590258175,DE
@@ -124132,7 +126117,9 @@
3590258392,3590258431,FR
3590258432,3590258447,GB
3590258448,3590258463,FR
-3590258464,3590258687,US
+3590258464,3590258495,US
+3590258496,3590258559,FR
+3590258560,3590258687,US
3590258688,3590291455,IT
3590291456,3590299647,EG
3590299648,3590307839,FI
@@ -124145,26 +126132,21 @@
3590308048,3590308055,NG
3590308056,3590308063,A2
3590308064,3590308071,ZW
-3590308072,3590308079,A2
-3590308080,3590308087,MW
+3590308072,3590308087,A2
3590308088,3590308095,AO
-3590308096,3590308119,A2
-3590308120,3590308127,IQ
-3590308128,3590308175,A2
-3590308176,3590308183,NG
+3590308096,3590308183,A2
3590308184,3590308191,IQ
3590308192,3590308199,A2
-3590308200,3590308231,IQ
-3590308232,3590308247,A2
+3590308200,3590308223,IQ
+3590308224,3590308247,A2
3590308248,3590308263,IQ
3590308264,3590308271,A2
3590308272,3590308287,IQ
-3590308288,3590308295,A2
-3590308296,3590308303,IQ
+3590308288,3590308303,A2
3590308304,3590308311,SO
3590308312,3590308319,IQ
-3590308320,3590308327,A2
-3590308328,3590308343,IQ
+3590308320,3590308335,A2
+3590308336,3590308343,IQ
3590308344,3590308607,A2
3590308608,3590308735,NG
3590308736,3590308767,A2
@@ -124173,29 +126155,27 @@
3590308784,3590308799,ZW
3590308800,3590308807,A2
3590308808,3590308815,ZM
-3590308816,3590308831,KE
+3590308816,3590308823,KE
+3590308824,3590308831,A2
3590308832,3590308839,ZW
3590308840,3590308847,ET
3590308848,3590308855,A2
3590308856,3590308863,NG
-3590308864,3590308911,A2
-3590308912,3590308927,ZW
-3590308928,3590308951,A2
+3590308864,3590308951,A2
3590308952,3590308959,GH
-3590308960,3590308991,A2
-3590308992,3590308999,NG
+3590308960,3590308999,A2
3590309000,3590309007,UG
3590309008,3590309023,TZ
-3590309024,3590309055,ZW
+3590309024,3590309039,A2
+3590309040,3590309055,ZW
3590309056,3590309063,CD
-3590309064,3590309071,LU
+3590309064,3590309071,A2
3590309072,3590309079,MW
3590309080,3590309103,NG
3590309104,3590309111,ZW
3590309112,3590309119,A2
3590309120,3590309375,GB
-3590309376,3590309503,A2
-3590309504,3590309511,NG
+3590309376,3590309511,A2
3590309512,3590309519,AO
3590309520,3590309527,NG
3590309528,3590309535,CM
@@ -124206,43 +126186,39 @@
3590309584,3590309615,A2
3590309616,3590309623,UG
3590309624,3590309631,ZW
-3590309632,3590309647,IQ
-3590309648,3590309679,A2
-3590309680,3590309695,IQ
-3590309696,3590309711,A2
-3590309712,3590309719,IQ
-3590309720,3590309727,A2
-3590309728,3590309759,IQ
-3590309760,3590309775,A2
-3590309776,3590309783,IQ
-3590309784,3590309799,A2
+3590309632,3590309639,A2
+3590309640,3590309647,IQ
+3590309648,3590309687,A2
+3590309688,3590309695,IQ
+3590309696,3590309727,A2
+3590309728,3590309743,IQ
+3590309744,3590309751,A2
+3590309752,3590309759,IQ
+3590309760,3590309799,A2
3590309800,3590309807,IQ
-3590309808,3590309823,A2
-3590309824,3590309839,IQ
-3590309840,3590309863,A2
-3590309864,3590309871,IQ
-3590309872,3590309879,A2
+3590309808,3590309831,A2
+3590309832,3590309839,IQ
+3590309840,3590309879,A2
3590309880,3590309887,IQ
-3590309888,3590310143,A2
-3590310144,3590310159,MZ
+3590309888,3590310159,A2
3590310160,3590310167,IQ
3590310168,3590310175,A2
3590310176,3590310183,LR
3590310184,3590310191,IQ
-3590310192,3590310247,A2
-3590310248,3590310255,IQ
-3590310256,3590310279,A2
+3590310192,3590310279,A2
3590310280,3590310287,IQ
3590310288,3590310288,A2
3590310289,3590310303,IQ
3590310304,3590310327,A2
3590310328,3590310335,NG
-3590310336,3590310351,IQ
-3590310352,3590310367,A2
-3590310368,3590310399,IQ
-3590310400,3590310655,UA
+3590310336,3590310343,IQ
+3590310344,3590310391,A2
+3590310392,3590310399,IQ
+3590310400,3590310655,A2
3590310656,3590310911,GB
-3590310912,3590311423,A2
+3590310912,3590311247,A2
+3590311248,3590311255,NG
+3590311256,3590311423,A2
3590311424,3590311679,GB
3590311680,3590311935,YT
3590311936,3590312703,MW
@@ -124267,7 +126243,9 @@
3590314720,3590314727,TG
3590314728,3590314735,UG
3590314736,3590314743,NG
-3590314744,3590314823,A2
+3590314744,3590314767,A2
+3590314768,3590314775,US
+3590314776,3590314823,A2
3590314824,3590314831,ZW
3590314832,3590314887,A2
3590314888,3590314895,NG
@@ -124283,28 +126261,20 @@
3590316032,3590316039,TZ
3590316040,3590316047,A2
3590316048,3590316055,GH
-3590316056,3590316079,IQ
+3590316056,3590316071,IQ
+3590316072,3590316079,A2
3590316080,3590316087,LB
-3590316088,3590316095,A2
-3590316096,3590316127,IQ
+3590316088,3590316127,A2
3590316128,3590316151,NG
-3590316152,3590316159,A2
-3590316160,3590316175,LB
-3590316176,3590316199,A2
-3590316200,3590316215,IQ
-3590316216,3590316231,A2
+3590316152,3590316231,A2
3590316232,3590316239,LB
3590316240,3590316271,A2
3590316272,3590316279,IQ
-3590316280,3590316287,A2
-3590316288,3590316543,LB
-3590316544,3590316567,A2
+3590316280,3590316567,A2
3590316568,3590316575,IQ
3590316576,3590316591,A2
3590316592,3590316599,IQ
-3590316600,3590316647,A2
-3590316648,3590316655,LY
-3590316656,3590316663,IQ
+3590316600,3590316663,A2
3590316664,3590316671,LY
3590316672,3590316727,A2
3590316728,3590316735,LB
@@ -124313,18 +126283,18 @@
3590316832,3590317055,A2
3590317056,3590317311,NG
3590317312,3590317343,AO
-3590317344,3590317407,A2
-3590317408,3590317439,US
+3590317344,3590317439,A2
3590317440,3590317447,AM
3590317448,3590317455,LB
-3590317456,3590317471,IQ
+3590317456,3590317463,IQ
+3590317464,3590317471,A2
3590317472,3590317479,MW
-3590317480,3590317487,US
-3590317488,3590317495,A2
+3590317480,3590317495,A2
3590317496,3590317503,LB
-3590317504,3590317519,A2
-3590317520,3590317527,LY
-3590317528,3590317823,IQ
+3590317504,3590317527,A2
+3590317528,3590317543,IQ
+3590317544,3590317567,A2
+3590317568,3590317823,IQ
3590317824,3590317951,A2
3590317952,3590318047,UA
3590318048,3590319167,A2
@@ -124335,76 +126305,64 @@
3590319424,3590319455,AE
3590319456,3590319967,A2
3590319968,3590319999,AE
-3590320000,3590320191,A2
-3590320192,3590320199,LB
+3590320000,3590320199,A2
3590320200,3590320207,IQ
3590320208,3590320231,A2
3590320232,3590320239,IQ
-3590320240,3590320247,A2
-3590320248,3590320255,LB
-3590320256,3590320271,A2
-3590320272,3590320295,IQ
-3590320296,3590320303,A2
+3590320240,3590320303,A2
3590320304,3590320319,IQ
3590320320,3590320335,A2
3590320336,3590320343,UG
-3590320344,3590320367,IQ
-3590320368,3590320375,A2
+3590320344,3590320351,A2
+3590320352,3590320359,IQ
+3590320360,3590320375,A2
3590320376,3590320383,IQ
3590320384,3590321151,A2
3590321152,3590321663,IQ
3590321664,3590321679,A2
3590321680,3590321687,CM
-3590321688,3590321695,IQ
+3590321688,3590321695,A2
3590321696,3590321711,ZW
-3590321712,3590321727,IQ
-3590321728,3590321791,A2
-3590321792,3590321823,IQ
-3590321824,3590321855,A2
-3590321856,3590321887,IQ
-3590321888,3590321927,A2
-3590321928,3590321935,IQ
-3590321936,3590321943,LY
+3590321712,3590321943,A2
3590321944,3590321959,IQ
3590321960,3590321967,A2
3590321968,3590321983,TR
3590321984,3590322007,A2
3590322008,3590322015,IQ
-3590322016,3590322047,A2
-3590322048,3590322055,NG
-3590322056,3590322063,A2
-3590322064,3590322079,IQ
-3590322080,3590322111,A2
+3590322016,3590322063,A2
+3590322064,3590322071,IQ
+3590322072,3590322111,A2
3590322112,3590322119,BJ
-3590322120,3590322127,IQ
+3590322120,3590322127,A2
3590322128,3590322135,GH
3590322136,3590322151,A2
3590322152,3590322159,LY
-3590322160,3590322167,A2
-3590322168,3590322239,IQ
-3590322240,3590322255,A2
-3590322256,3590322271,RW
-3590322272,3590322335,A2
+3590322160,3590322175,A2
+3590322176,3590322239,IQ
+3590322240,3590322335,A2
3590322336,3590322351,MG
-3590322352,3590322375,A2
-3590322376,3590322383,LY
-3590322384,3590322399,IQ
+3590322352,3590322391,A2
+3590322392,3590322399,IQ
3590322400,3590322415,AO
-3590322416,3590322423,LR
-3590322424,3590322431,A2
+3590322416,3590322431,A2
3590322432,3590322559,LB
-3590322560,3590322575,A2
-3590322576,3590322687,LB
+3590322560,3590322607,A2
+3590322608,3590322687,LB
3590322688,3590323199,IQ
3590323200,3590323711,MW
3590323712,3590323903,A2
3590323904,3590323911,CD
-3590323912,3590324023,A2
+3590323912,3590323967,A2
+3590323968,3590323975,SD
+3590323976,3590323983,A2
+3590323984,3590323991,NG
+3590323992,3590324023,A2
3590324024,3590324031,ZW
3590324032,3590324095,NG
3590324096,3590324103,A2
3590324104,3590324111,ZW
-3590324112,3590324223,A2
+3590324112,3590324215,A2
+3590324216,3590324223,NG
3590324224,3623890943,US
3623890944,3623891199,ZA
3623891200,3623891455,US
@@ -124424,8 +126382,8 @@
3624272384,3624272415,US
3624272416,3624272639,CA
3624272640,3624272895,DZ
-3624272896,3624279039,CA
-3624279040,3624279087,BD
+3624272896,3624279071,CA
+3624279072,3624279087,BD
3624279088,3624281087,CA
3624281088,3624281343,HT
3624281344,3624283135,CA
@@ -124433,7 +126391,7 @@
3624284160,3624288255,CA
3624288256,3624290303,IN
3624290304,3624292351,CA
-3624292352,3624292607,GP
+3624292352,3624292607,MF
3624292608,3624294143,CA
3624294144,3624294399,US
3624294400,3624295935,CA
@@ -124450,11 +126408,7 @@
3624303760,3624304639,CA
3624304640,3624321023,US
3624321024,3624325119,CA
-3624325120,3624330511,US
-3624330512,3624330519,IN
-3624330520,3624333183,US
-3624333184,3624333215,IN
-3624333216,3624357887,US
+3624325120,3624357887,US
3624357888,3624358143,KN
3624358144,3624359679,US
3624359680,3624360703,AN
@@ -124523,15 +126477,11 @@
3624380968,3624380983,TW
3624380984,3624381471,US
3624381472,3624381487,AU
-3624381488,3624381535,US
-3624381536,3624381551,CA
-3624381552,3624381567,US
+3624381488,3624381567,US
3624381568,3624381583,MY
3624381584,3624381631,US
3624381632,3624381647,GB
-3624381648,3624381711,US
-3624381712,3624381727,OM
-3624381728,3624381807,US
+3624381648,3624381807,US
3624381808,3624381823,IN
3624381824,3624381855,US
3624381856,3624381887,AU
@@ -124542,9 +126492,7 @@
3624382048,3624383071,US
3624383072,3624383087,GB
3624383088,3624383103,PT
-3624383104,3624383183,US
-3624383184,3624383199,DE
-3624383200,3624384767,US
+3624383104,3624384767,US
3624384768,3624385023,CA
3624385024,3624386559,US
3624386560,3624394751,CA
@@ -124555,14 +126503,14 @@
3624443872,3624443879,US
3624443880,3624443903,CA
3624443904,3624443919,US
-3624443920,3624444343,CA
+3624443920,3624444303,CA
+3624444304,3624444319,US
+3624444320,3624444343,CA
3624444344,3624444351,US
3624444352,3624444359,CA
3624444360,3624444367,US
3624444368,3624452095,CA
-3624452096,3624474879,US
-3624474880,3624475391,CA
-3624475392,3624480767,US
+3624452096,3624480767,US
3624480768,3624484863,CA
3624484864,3624534015,US
3624534016,3624534271,PA
@@ -124586,7 +126534,9 @@
3624547216,3624547239,US
3624547240,3624547255,A2
3624547256,3624547263,AS
-3624547264,3624547591,US
+3624547264,3624547327,US
+3624547328,3624547583,A2
+3624547584,3624547591,US
3624547592,3624547647,A2
3624547648,3624547711,US
3624547712,3624547743,A2
@@ -124602,15 +126552,13 @@
3624548032,3624548039,A2
3624548040,3624548063,US
3624548064,3624548087,A2
-3624548088,3624548607,US
-3624548608,3624548671,A2
-3624548672,3624548687,US
+3624548088,3624548095,US
+3624548096,3624548679,A2
+3624548680,3624548687,US
3624548688,3624548703,A2
3624548704,3624548711,US
3624548712,3624548735,A2
-3624548736,3624548815,US
-3624548816,3624548823,A2
-3624548824,3624548935,US
+3624548736,3624548935,US
3624548936,3624548959,A2
3624548960,3624548975,US
3624548976,3624549023,A2
@@ -124621,27 +126569,12 @@
3624549088,3624549095,US
3624549096,3624549111,A2
3624549112,3624549375,US
-3624549376,3624549887,AS
-3624549888,3624550143,A2
+3624549376,3624550143,A2
3624550144,3624587263,US
3624587264,3624591359,JM
-3624591360,3624730623,US
+3624595456,3624730623,US
3624730624,3624796159,CA
-3624796160,3624798207,US
-3624798208,3624799231,CA
-3624799232,3624799743,US
-3624799744,3624799999,CA
-3624800000,3624800255,US
-3624800768,3624801023,CA
-3624801024,3624803071,US
-3624803072,3624803583,CA
-3624803840,3624804351,US
-3624804608,3624804863,CA
-3624804864,3624807679,US
-3624807936,3624808447,CA
-3624808448,3624811519,US
-3624811520,3624812287,CA
-3624812288,3624817679,US
+3624812544,3624817679,US
3624817680,3624817687,CA
3624817688,3624820735,US
3624820736,3624820799,CY
@@ -124709,7 +126642,9 @@
3624903424,3624903551,US
3624903552,3624903583,CA
3624903584,3624903679,US
-3624903680,3624904703,CA
+3624903680,3624903807,CA
+3624903808,3624903935,US
+3624903936,3624904703,CA
3624904704,3624904767,IN
3624904768,3624905087,US
3624905088,3624905151,CA
@@ -124842,9 +126777,7 @@
3624922112,3624922143,US
3624922144,3624922207,MY
3624922208,3624922239,FR
-3624922240,3624922271,US
-3624922272,3624922287,CR
-3624922288,3624922335,US
+3624922240,3624922335,US
3624922336,3624922367,FR
3624922368,3624922495,IN
3624922496,3624922623,BE
@@ -124879,18 +126812,13 @@
3624990464,3624991223,CA
3624991224,3624991231,US
3624991232,3624992767,CA
-3624992768,3625002351,US
-3625002352,3625002367,CA
-3625002368,3625019135,US
-3625019136,3625019391,ES
-3625019392,3625042327,US
+3624992768,3625042327,US
3625042328,3625042335,IT
3625042336,3625058303,US
3625058304,3625091071,CA
3625091072,3625116671,US
3625116672,3625116767,CA
-3625116768,3625116775,US
-3625116776,3625116927,CA
+3625116768,3625116927,US
3625116928,3625117183,SE
3625117184,3625117775,US
3625117776,3625117783,CA
@@ -124942,9 +126870,7 @@
3625293616,3625295871,CA
3625295872,3625320447,US
3625320448,3625320467,CA
-3625320468,3625321727,US
-3625321728,3625321983,PA
-3625321984,3625325055,US
+3625320468,3625325055,US
3625325056,3625325087,RU
3625325088,3625326632,US
3625326633,3625326642,GB
@@ -124954,8 +126880,7 @@
3625327815,3625327824,GB
3625327825,3625327907,US
3625327908,3625327917,ID
-3625327918,3625333375,US
-3625333376,3625333383,PA
+3625327918,3625333383,US
3625333384,3625333391,GB
3625333392,3625333455,US
3625333456,3625333463,GB
@@ -125001,9 +126926,7 @@
3625375136,3625375167,RU
3625375168,3625375247,US
3625375248,3625375255,CA
-3625375256,3625375271,US
-3625375272,3625375279,GB
-3625375280,3625375359,US
+3625375256,3625375359,US
3625375360,3625375367,SE
3625375368,3625375399,US
3625375400,3625375407,MT
@@ -125085,7 +127008,7 @@
3626228464,3626228479,AE
3626228480,3626270719,US
3626270720,3626287103,CA
-3626287104,3626332159,US
+3626287104,3626328063,US
3626332160,3626336255,CA
3626336256,3626381317,US
3626381318,3626381321,AU
@@ -125681,15 +127604,9 @@
3627507712,3627511807,CA
3627511808,3627519616,US
3627519617,3627519626,CA
-3627519627,3627522690,US
-3627522691,3627522700,GB
-3627522701,3627524751,US
-3627524752,3627524759,AE
-3627524760,3627524979,US
+3627519627,3627524979,US
3627524980,3627524987,IR
-3627524988,3627525200,US
-3627525201,3627525208,AU
-3627525209,3627532287,US
+3627524988,3627532287,US
3627532288,3627544575,CA
3627544576,3627659263,US
3627659264,3627663359,CA
@@ -125703,9 +127620,7 @@
3627667520,3627667583,CA
3627667584,3627669831,US
3627669832,3627669839,CA
-3627669840,3627670799,US
-3627670800,3627670811,CA
-3627670812,3627679743,US
+3627669840,3627679743,US
3627679744,3627712511,CA
3627712512,3627745343,US
3627745344,3627745375,BE
@@ -125752,9 +127667,7 @@
3628128704,3628128719,CA
3628128720,3628129087,US
3628129088,3628129103,CA
-3628129104,3628138751,US
-3628138752,3628139007,GB
-3628139008,3628139311,US
+3628129104,3628139311,US
3628139312,3628139327,SG
3628139328,3628139343,GB
3628139344,3628139487,US
@@ -125767,9 +127680,7 @@
3628139968,3628139999,AU
3628140000,3628140351,US
3628140352,3628140415,RU
-3628140416,3628143615,US
-3628143616,3628143871,GB
-3628143872,3628145919,US
+3628140416,3628145919,US
3628145920,3628146175,AU
3628146176,3628146527,US
3628146528,3628146559,GB
@@ -125953,8 +127864,8 @@
3629202012,3629202015,US
3629202016,3629202047,CA
3629202048,3629202175,US
-3629202176,3629202207,CA
-3629202208,3629202219,US
+3629202176,3629202203,CA
+3629202204,3629202219,US
3629202220,3629202239,CA
3629202240,3629202263,US
3629202264,3629202271,CA
@@ -125968,9 +127879,7 @@
3629202428,3629203199,CA
3629203200,3629318143,US
3629318144,3629326335,CA
-3629326336,3629331967,US
-3629331968,3629332479,CA
-3629332480,3629539327,US
+3629326336,3629539327,US
3629539328,3629547519,CA
3629547520,3629662207,US
3629662208,3629662463,GB
@@ -126478,9 +128387,7 @@
3630746880,3630747391,TZ
3630747392,3630780415,US
3630780416,3630784511,CA
-3630784512,3630784895,US
-3630784896,3630784911,IL
-3630784912,3630787568,US
+3630784512,3630787568,US
3630787569,3630787576,IE
3630787577,3630850047,US
3630850048,3630854143,CA
@@ -126502,9 +128409,9 @@
3631015254,3631015269,CA
3631015270,3631015295,US
3631015296,3631015311,CN
-3631015312,3631016243,US
-3631016244,3631016257,BD
-3631016258,3631016555,US
+3631015312,3631015887,US
+3631015888,3631015903,CN
+3631015904,3631016555,US
3631016556,3631016571,CN
3631016572,3631016581,US
3631016582,3631016613,BD
@@ -126529,19 +128436,8 @@
3631045632,3631045759,CA
3631045760,3631045983,US
3631045984,3631045991,CA
-3631045992,3631057577,US
-3631057578,3631057597,GB
-3631057598,3631058405,US
-3631058406,3631058415,CA
-3631058416,3631058511,US
-3631058512,3631058521,CA
-3631058522,3631058581,US
-3631058582,3631058591,CA
-3631058592,3631059229,US
-3631059230,3631059239,NO
-3631059240,3631112191,US
-3631112192,3631112703,VC
-3631112704,3631116543,BB
+3631045992,3631112191,US
+3631112192,3631116543,BB
3631116544,3631117567,GD
3631117568,3631117823,BB
3631117824,3631118079,GD
@@ -126610,7 +128506,6 @@
3631881792,3631939583,US
3631939584,3632005119,CA
3632005120,3632136191,US
-3632136192,3632144383,CA
3632144384,3632152575,US
3632152576,3632168959,CA
3632168960,3632197631,US
@@ -126625,21 +128520,15 @@
3632284880,3632284895,CA
3632284896,3632286479,US
3632286480,3632286495,CA
-3632286496,3632287239,US
-3632287240,3632287263,CA
-3632287264,3632289583,US
+3632286496,3632289583,US
3632289584,3632289599,PH
3632289600,3632291775,US
3632291776,3632291839,GB
3632291840,3632332799,US
3632332800,3632357375,CA
-3632357376,3632370559,US
-3632370560,3632370575,NG
-3632370576,3632373503,US
-3632373504,3632373759,NG
-3632373760,3632381951,US
+3632357376,3632381951,US
3632381952,3632390143,CA
-3632390144,3632414719,US
+3632390144,3632406527,US
3632414720,3632422911,CA
3632422912,3632451583,US
3632451584,3632455679,CA
@@ -126727,8 +128616,7 @@
3632483408,3632483415,CA
3632483416,3632483423,US
3632483424,3632483455,SK
-3632483456,3632483471,HK
-3632483472,3632483551,US
+3632483456,3632483551,US
3632483552,3632483583,GB
3632483584,3632483599,US
3632483600,3632483607,AU
@@ -126928,8 +128816,8 @@
3632491088,3632491151,US
3632491152,3632491167,IN
3632491168,3632491231,US
-3632491232,3632491239,CA
-3632491240,3632491263,US
+3632491232,3632491247,CA
+3632491248,3632491263,US
3632491264,3632491327,DM
3632491328,3632491343,FR
3632491344,3632491359,BR
@@ -127099,9 +128987,7 @@
3632902144,3632971775,US
3632971776,3632972031,CA
3632972032,3632972063,US
-3632972064,3632976287,CA
-3632976288,3632976303,US
-3632976304,3632988159,CA
+3632972064,3632988159,CA
3632988160,3633029119,US
3633029120,3633029631,PY
3633029632,3633030143,NI
@@ -127152,9 +129038,7 @@
3633032544,3633032567,NG
3633032568,3633032591,US
3633032592,3633032607,A2
-3633032608,3633032959,US
-3633032960,3633033215,A2
-3633033216,3633033247,US
+3633032608,3633033247,US
3633033248,3633033255,A2
3633033256,3633033263,US
3633033264,3633033271,A2
@@ -127173,8 +129057,8 @@
3633034048,3633034079,A2
3633034080,3633034519,US
3633034520,3633034527,NG
-3633034528,3633034559,US
-3633034560,3633034751,NG
+3633034528,3633034623,US
+3633034624,3633034751,NG
3633034752,3633035015,US
3633035016,3633035023,NL
3633035024,3633035071,US
@@ -127212,16 +129096,7 @@
3633336480,3633340415,KY
3633340416,3633344511,US
3633344512,3633348607,CA
-3633348608,3633373535,US
-3633373536,3633373567,BA
-3633373568,3633374799,US
-3633374800,3633374815,CA
-3633374816,3633376959,US
-3633376960,3633376991,CA
-3633376992,3633377087,US
-3633377088,3633377119,IN
-3633377120,3633379327,US
-3633381376,3633405951,US
+3633348608,3633405951,US
3633405952,3633410047,CA
3633410048,3633479679,US
3633479680,3633483775,CA
@@ -127229,42 +129104,38 @@
3633513985,3633514238,ES
3633514239,3633545215,US
3633545216,3633545727,GA
-3633545728,3633546239,A2
+3633545728,3633545983,A2
+3633545984,3633546239,US
3633546240,3633546751,GA
-3633546752,3633547263,A2
+3633546752,3633547007,A2
+3633547008,3633547263,US
3633547264,3633548287,GA
3633548288,3633548543,A2
3633548544,3633548799,GA
-3633548800,3633548927,A2
+3633548800,3633548863,A2
+3633548864,3633548927,US
3633548928,3633549055,GA
-3633549056,3633549567,A2
+3633549056,3633549375,A2
+3633549376,3633549391,US
+3633549392,3633549567,A2
3633549568,3633549823,GA
-3633549824,3633550079,A2
-3633550080,3633550335,US
-3633550336,3633550463,A2
-3633550464,3633550527,US
-3633550528,3633550847,A2
+3633549824,3633550335,US
+3633550336,3633550431,A2
+3633550432,3633550591,US
+3633550592,3633550695,A2
+3633550696,3633550847,US
3633550848,3633551359,GA
-3633551360,3633552383,A2
-3633552384,3633552639,US
+3633551360,3633552639,US
3633552640,3633552911,A2
3633552912,3633552927,GA
-3633552928,3633552951,US
-3633552952,3633552959,A2
-3633552960,3633552967,US
-3633552968,3633553031,A2
-3633553032,3633553039,US
-3633553040,3633553127,A2
-3633553128,3633553135,US
-3633553136,3633553151,A2
+3633552928,3633553119,US
+3633553120,3633553127,A2
+3633553128,3633553143,US
+3633553144,3633553151,A2
3633553152,3633553279,GW
-3633553280,3633553295,US
-3633553296,3633553351,A2
-3633553352,3633553367,US
-3633553368,3633553399,A2
-3633553400,3633812775,US
-3633812776,3633812783,CA
-3633812784,3633815551,US
+3633553280,3633553311,US
+3633553312,3633553343,A2
+3633553344,3633815551,US
3633815552,3633816079,CA
3633816080,3633816095,US
3633816096,3633816119,CA
@@ -127281,8 +129152,8 @@
3633816248,3633816255,IN
3633816256,3633816263,NG
3633816264,3633816279,CA
-3633816280,3633816303,US
-3633816304,3633816351,CA
+3633816280,3633816311,US
+3633816312,3633816351,CA
3633816352,3633816383,IN
3633816384,3633816391,NG
3633816392,3633816399,US
@@ -127302,9 +129173,9 @@
3633819424,3633819647,CA
3633819648,3633821279,US
3633821280,3633821311,BB
-3633821312,3633822207,US
-3633822208,3633822335,CY
-3633822336,3633881087,US
+3633821312,3633822303,US
+3633822304,3633822327,CA
+3633822328,3633881087,US
3633881088,3633885183,AN
3633885184,3633889279,US
3633889280,3633893375,CA
@@ -127318,18 +129189,16 @@
3634053120,3634061311,CL
3634061312,3634065311,US
3634065312,3634065343,SV
-3634065344,3634125831,US
+3634065344,3634094079,US
+3634094080,3634098175,SE
+3634098176,3634125831,US
3634125832,3634125839,CA
3634125840,3634125855,JP
-3634125856,3634125887,US
-3634125888,3634125903,GB
-3634125904,3634125951,US
+3634125856,3634125951,US
3634125952,3634125967,CA
3634125968,3634135423,US
3634135424,3634135487,CA
-3634135488,3634135935,US
-3634135936,3634136062,CA
-3634136063,3634136103,US
+3634135488,3634136103,US
3634136104,3634136111,CA
3634136112,3634138127,US
3634138128,3634138143,CA
@@ -127375,15 +129244,7 @@
3635314688,3635322879,CA
3635322880,3635425279,US
3635425280,3635429375,CA
-3635429376,3635458527,US
-3635458528,3635458543,CH
-3635458544,3635460031,US
-3635460032,3635460095,CH
-3635460096,3635460543,US
-3635460544,3635460575,CH
-3635460576,3635460799,US
-3635460800,3635460831,CH
-3635460832,3635464031,US
+3635429376,3635464031,US
3635464032,3635464063,GB
3635464064,3635464127,US
3635464128,3635464135,GB
@@ -127472,7 +129333,9 @@
3636151489,3636151535,US
3636151536,3636151759,CA
3636151760,3636151775,US
-3636151776,3636152575,CA
+3636151776,3636152303,CA
+3636152304,3636152319,US
+3636152320,3636152575,CA
3636152576,3636152591,US
3636152592,3636152639,CA
3636152640,3636152647,US
@@ -127498,9 +129361,7 @@
3636154912,3636154975,CA
3636154976,3636154979,US
3636154980,3636154990,CA
-3636154991,3636154991,US
-3636154992,3636155007,CA
-3636155008,3636155071,US
+3636154991,3636155071,US
3636155072,3636155391,CA
3636155392,3636155407,US
3636155408,3636155455,CA
@@ -127542,7 +129403,9 @@
3636159840,3636159871,CA
3636159872,3636159999,IN
3636160000,3636160255,US
-3636160256,3636160415,CA
+3636160256,3636160335,CA
+3636160336,3636160343,US
+3636160344,3636160415,CA
3636160416,3636160431,US
3636160432,3636160831,CA
3636160832,3636160895,US
@@ -127555,8 +129418,8 @@
3636161792,3636161871,CA
3636161872,3636161885,US
3636161886,3636161943,CA
-3636161944,3636161951,US
-3636161952,3636162559,CA
+3636161944,3636161983,US
+3636161984,3636162559,CA
3636162560,3636163583,US
3636163584,3636164095,CA
3636164096,3636164111,BV
@@ -127565,9 +129428,7 @@
3636164328,3636164335,CA
3636164336,3636164351,US
3636164352,3636164607,CA
-3636164608,3636165119,US
-3636165120,3636165375,CA
-3636165376,3636165471,US
+3636164608,3636165471,US
3636165472,3636165503,CA
3636165504,3636166143,US
3636166144,3636166655,CA
@@ -127614,41 +129475,20 @@
3636635392,3636635775,CR
3636635776,3636636415,US
3636636416,3636636543,CR
-3636636544,3636667647,US
-3636667904,3636668159,SC
-3636668416,3636668671,GI
-3636668672,3636668927,US
-3636668928,3636669183,BZ
-3636669184,3636669439,CY
-3636669696,3636669951,SC
-3636669952,3636670207,DE
-3636670304,3636670335,RU
-3636670464,3636670527,US
-3636670656,3636670719,RU
-3636670784,3636670799,RU
-3636670976,3636671007,VG
-3636671200,3636671231,IT
-3636671232,3636671487,SC
-3636671488,3636671743,GB
-3636674560,3636822015,US
+3636636544,3636822015,US
3636822016,3636854783,CA
3636854784,3636887551,US
3636887552,3636895743,CA
-3636895744,3636904351,US
-3636904352,3636904383,MY
-3636904384,3636904511,US
+3636895744,3636904511,US
3636904512,3636904543,CA
3636904544,3636904575,IN
3636904576,3636904607,US
3636904608,3636904639,IN
3636904640,3636904703,US
3636904704,3636904959,MY
-3636904960,3636905087,US
-3636905088,3636905215,MY
-3636905216,3636905471,US
+3636904960,3636905471,US
3636905472,3636905727,CA
-3636905728,3636905759,HK
-3636905760,3636905791,US
+3636905728,3636905791,US
3636905792,3636905823,IN
3636905824,3636905887,US
3636905888,3636905951,CA
@@ -127667,9 +129507,8 @@
3636906880,3636907007,IN
3636907008,3636907103,US
3636907104,3636907135,IN
-3636907136,3636907199,CA
-3636907200,3636907231,HK
-3636907232,3636907775,US
+3636907136,3636907167,CA
+3636907168,3636907775,US
3636907776,3636908031,CA
3636908032,3636908543,US
3636908544,3636908799,IN
@@ -127677,21 +129516,22 @@
3636909056,3636909567,CA
3636909568,3636909663,US
3636909664,3636909695,IT
-3636909696,3636909791,CA
+3636909696,3636909727,CA
+3636909728,3636909759,US
+3636909760,3636909791,CA
3636909792,3636909855,US
3636909856,3636909887,CN
3636909888,3636909951,IT
3636909952,3636910079,US
3636910080,3636910335,CA
-3636910336,3636910399,IN
-3636910400,3636910495,US
+3636910336,3636910495,US
3636910496,3636910527,BE
3636910528,3636910591,US
3636910592,3636910719,CA
3636910720,3636910847,US
3636910848,3636911103,AU
-3636911104,3636911295,US
-3636911296,3636911359,CA
+3636911104,3636911327,US
+3636911328,3636911359,CA
3636911360,3636911423,US
3636911424,3636911455,BE
3636911456,3636911615,US
@@ -127706,8 +129546,8 @@
3636914176,3636914431,US
3636914432,3636914687,CA
3636914688,3636914815,US
-3636914816,3636914943,CA
-3636914944,3636915103,US
+3636914816,3636914879,CA
+3636914880,3636915103,US
3636915104,3636915135,IN
3636915136,3636915199,US
3636915200,3636915327,IN
@@ -127722,15 +129562,13 @@
3636916992,3636917120,CA
3636917121,3636917255,US
3636917256,3636917263,IN
-3636917264,3636917271,CA
-3636917272,3636917295,US
+3636917264,3636917295,US
3636917296,3636917303,IN
3636917304,3636917447,US
3636917448,3636917455,HK
3636917456,3636917631,US
3636917632,3636919039,CA
-3636919040,3636919071,IN
-3636919072,3636919103,US
+3636919040,3636919103,US
3636919104,3636919135,CA
3636919136,3636919167,IN
3636919168,3636919199,CA
@@ -127745,8 +129583,7 @@
3637071936,3637071943,SK
3637071944,3637071951,IL
3637071952,3637071967,CY
-3637071968,3637071999,US
-3637072000,3637072015,CA
+3637071968,3637072015,US
3637072016,3637072031,CY
3637072032,3637072071,US
3637072072,3637072079,FI
@@ -127913,9 +129750,7 @@
3638370304,3638374751,CA
3638374752,3638374767,US
3638374768,3638386687,CA
-3638386688,3638494175,US
-3638494176,3638494183,CA
-3638494184,3638509295,US
+3638386688,3638509295,US
3638509296,3638509311,GB
3638509312,3638509567,US
3638509568,3638526911,CA
@@ -127950,11 +129785,7 @@
3639258679,3639263231,CA
3639263232,3639279615,US
3639279616,3639283711,CA
-3639283712,3639322511,US
-3639322512,3639322519,JP
-3639322520,3639322535,US
-3639322536,3639322543,JP
-3639322544,3639342703,US
+3639283712,3639342703,US
3639342704,3639342711,GB
3639342712,3639343135,US
3639343136,3639343167,GB
@@ -127996,7 +129827,7 @@
3639397024,3639397119,A2
3639397120,3639397375,IN
3639397376,3639397631,US
-3639397632,3639397887,NG
+3639397632,3639397887,A2
3639397888,3639398399,US
3639398400,3639398423,A2
3639398424,3639398431,LB
@@ -128046,7 +129877,6 @@
3639439640,3639440767,US
3639440768,3639440895,IN
3639440896,3639476223,US
-3639507456,3639507967,US
3639541760,3639558143,US
3639558144,3639566335,CA
3639566336,3639607295,US
@@ -128142,13 +129972,15 @@
3639680992,3639681023,CL
3639681024,3639730175,US
3639730176,3639734271,CA
-3639734272,3639886095,US
-3639886096,3639886103,CN
-3639886104,3639886591,US
+3639734272,3639886591,US
3639886592,3639886599,SG
-3639886600,3639888927,US
-3639888928,3639888959,NO
-3639888960,3639902207,US
+3639886600,3639892359,US
+3639892360,3639892367,ID
+3639892368,3639892375,US
+3639892376,3639892383,ID
+3639892384,3639892415,US
+3639892416,3639892431,MX
+3639892432,3639902207,US
3639902208,3639918591,PE
3639918592,3639934975,AR
3639934976,3640001751,US
@@ -128211,9 +130043,7 @@
3640318976,3640319103,GQ
3640319104,3640319231,US
3640319232,3640319487,NG
-3640319488,3640319743,US
-3640319744,3640319999,A2
-3640320000,3640344959,US
+3640319488,3640344959,US
3640344960,3640345007,MX
3640345008,3640345023,US
3640345024,3640345086,MX
@@ -128268,7 +130098,9 @@
3640560512,3640560527,US
3640560528,3640564455,CA
3640564456,3640564463,US
-3640564464,3640582143,CA
+3640564464,3640565631,CA
+3640565632,3640565647,US
+3640565648,3640582143,CA
3640582144,3640647679,US
3640647680,3640651775,JP
3640651776,3640655871,US
@@ -128288,9 +130120,7 @@
3641103720,3641103727,HU
3641103728,3641106951,DE
3641106952,3641106959,CH
-3641106960,3641114031,DE
-3641114032,3641114039,SK
-3641114040,3641134367,DE
+3641106960,3641134367,DE
3641134368,3641134375,BE
3641134376,3641140671,DE
3641140672,3641140679,US
@@ -128495,7 +130325,11 @@
3641670792,3641670911,GB
3641670912,3641671679,LS
3641671680,3641679871,RU
-3641679872,3641683967,EU
+3641679872,3641680127,DK
+3641680128,3641681151,GB
+3641681152,3641681407,SE
+3641681408,3641681663,FR
+3641681664,3641683967,EU
3641683968,3641688063,KZ
3641688064,3641692159,RU
3641692160,3641696255,IT
@@ -128532,9 +130366,7 @@
3641762012,3641762047,GR
3641762048,3641762571,CY
3641762572,3641762575,GR
-3641762576,3641762591,CY
-3641762592,3641762595,GR
-3641762596,3641762607,CY
+3641762576,3641762607,CY
3641762608,3641762611,GR
3641762612,3641762647,CY
3641762648,3641762655,GR
@@ -128625,7 +130457,9 @@
3641774080,3641778175,DE
3641778176,3641782271,PL
3641782272,3641784079,GB
-3641784080,3641786367,BG
+3641784080,3641784319,BG
+3641784320,3641784575,GB
+3641784576,3641786367,BG
3641786368,3641790463,SE
3641790464,3641794559,LT
3641794560,3641798655,RS
@@ -128733,6 +130567,7 @@
3642031744,3642031871,A2
3642031872,3642032127,GB
3642032128,3642036223,PS
+3642036224,3642040319,HU
3642040320,3642048511,BY
3642048512,3642053439,A2
3642053440,3642053631,TZ
@@ -128740,6 +130575,7 @@
3642056704,3642060799,RU
3642060800,3642064895,KE
3642064896,3642068991,SE
+3642068992,3642073087,AL
3642073088,3642077183,LV
3642077184,3642081271,BE
3642081272,3642081278,US
@@ -128809,9 +130645,7 @@
3642150912,3642163199,IT
3642163200,3642164046,NL
3642164047,3642164048,AF
-3642164049,3642164595,NL
-3642164596,3642164663,HK
-3642164664,3642167295,NL
+3642164049,3642167295,NL
3642167296,3642171391,RU
3642171392,3642175487,JO
3642175488,3642179583,DE
@@ -128949,8 +130783,8 @@
3642552832,3642552847,EE
3642552848,3642553095,UA
3642553096,3642553097,LV
-3642553098,3642553103,UA
-3642553104,3642553139,LV
+3642553098,3642553099,UA
+3642553100,3642553139,LV
3642553140,3642553143,UA
3642553144,3642553175,LV
3642553176,3642553183,UA
@@ -128972,21 +130806,25 @@
3642553520,3642553523,UA
3642553524,3642553535,RU
3642553536,3642553543,DE
-3642553544,3642553589,RU
+3642553544,3642553575,RU
+3642553576,3642553579,UA
+3642553580,3642553589,RU
3642553590,3642553591,UA
3642553592,3642553599,RU
3642553600,3642553855,UA
3642553856,3642553925,RU
3642553926,3642553935,UA
-3642553936,3642553951,RU
-3642553952,3642554111,UA
+3642553936,3642553959,RU
+3642553960,3642554111,UA
3642554112,3642554119,RU
3642554120,3642554123,UA
3642554124,3642554151,RU
3642554152,3642554177,UA
3642554178,3642554203,RU
3642554204,3642554205,UA
-3642554206,3642554223,RU
+3642554206,3642554207,RU
+3642554208,3642554211,UA
+3642554212,3642554223,RU
3642554224,3642554239,UA
3642554240,3642554271,RU
3642554272,3642554367,UA
@@ -129013,7 +130851,7 @@
3642554976,3642554977,CZ
3642554978,3642554979,FR
3642554980,3642554983,BE
-3642554984,3642554987,DE
+3642554984,3642554987,UA
3642554988,3642554989,FR
3642554990,3642554991,UA
3642554992,3642555015,DE
@@ -129035,13 +130873,15 @@
3642555184,3642555199,UA
3642555200,3642555223,LT
3642555224,3642555227,LV
-3642555228,3642555391,LT
+3642555228,3642555279,LT
+3642555280,3642555295,UA
+3642555296,3642555391,LT
3642555392,3642555499,PL
3642555500,3642555647,UA
3642555648,3642555683,SE
3642555684,3642555687,UA
3642555688,3642555695,SE
-3642555696,3642555703,LV
+3642555696,3642555703,UA
3642555704,3642555707,FI
3642555708,3642555711,SE
3642555712,3642555727,RU
@@ -129049,7 +130889,8 @@
3642555736,3642555743,GB
3642555744,3642555759,SE
3642555760,3642555771,GB
-3642555772,3642555783,SE
+3642555772,3642555775,SE
+3642555776,3642555783,UA
3642555784,3642555787,GB
3642555788,3642555789,UA
3642555790,3642555791,SE
@@ -129071,18 +130912,9 @@
3642601472,3642605567,RU
3642605568,3642609663,GB
3642609664,3642613759,DZ
-3642613760,3642614527,AX
-3642614528,3642614783,FI
-3642614784,3642615103,AX
-3642615104,3642615167,FI
-3642615168,3642615295,AX
-3642615296,3642615551,FI
-3642615552,3642615567,AX
-3642615568,3642615583,FI
+3642613760,3642615583,FI
3642615584,3642615615,AX
-3642615616,3642615679,FI
-3642615680,3642616383,AX
-3642616384,3642617855,FI
+3642615616,3642617855,FI
3642617856,3642621951,JO
3642621952,3642626047,IT
3642626048,3642630143,BE
@@ -129330,8 +131162,8 @@
3645149952,3645150559,DE
3645150560,3645150591,HK
3645150592,3645150615,DE
-3645150616,3645150623,US
-3645150624,3645150975,DE
+3645150616,3645150639,US
+3645150640,3645150975,DE
3645150976,3645151231,US
3645151232,3645151487,DE
3645151488,3645151615,MT
@@ -129452,7 +131284,6 @@
3645460480,3645464575,UA
3645464576,3645468671,SE
3645468672,3645472767,RU
-3645472768,3645476863,UA
3645476864,3645480959,DE
3645480960,3645485055,RO
3645489152,3645493247,RU
@@ -129649,8 +131480,7 @@
3645763715,3645763715,NL
3645763716,3645763716,DE
3645763717,3645763717,NL
-3645763718,3645763718,DE
-3645763719,3645763719,NL
+3645763718,3645763719,DE
3645763720,3645763720,IT
3645763721,3645763721,DE
3645763722,3645763722,GR
@@ -130434,12 +132264,14 @@
3645779968,3645784063,PS
3645784064,3645788159,NG
3645788160,3645792255,GB
+3645792256,3645796351,TR
3645796352,3645800447,CH
3645800448,3645804543,DE
3645804544,3645808639,GB
3645808640,3645812735,DE
3645812736,3645816831,RU
3645816832,3645825023,FI
+3645825024,3645829119,RU
3645829120,3645833215,NL
3645833216,3645841407,RU
3645841408,3645845503,BG
@@ -130492,7 +132324,9 @@
3647886188,3647886207,GB
3647886208,3647886271,DE
3647886272,3647886303,GB
-3647886304,3647890463,DE
+3647886304,3647889663,DE
+3647889664,3647889671,BE
+3647889672,3647890463,DE
3647890464,3647890471,FR
3647890472,3647912447,DE
3647912448,3647912511,BE
@@ -130500,9 +132334,7 @@
3647916800,3647917055,SE
3647917056,3647917599,DE
3647917600,3647917615,US
-3647917616,3647936823,DE
-3647936824,3647936827,GB
-3647936828,3647936871,DE
+3647917616,3647936871,DE
3647936872,3647936879,FR
3647936880,3647954231,DE
3647954232,3647954239,GB
@@ -130540,8 +132372,8 @@
3647965280,3647965295,ES
3647965296,3647965303,DE
3647965304,3647965311,ES
-3647965312,3647965327,DE
-3647965328,3647965343,ES
+3647965312,3647965319,DE
+3647965320,3647965343,ES
3647965344,3647965351,DE
3647965352,3647965359,ES
3647965360,3647965375,DE
@@ -130553,20 +132385,20 @@
3647966576,3647966583,DE
3647966584,3647967231,GB
3647967232,3647968255,BE
-3647968256,3647968703,FR
-3647968704,3647968767,GB
-3647968768,3647969279,FR
+3647968256,3647969279,FR
3647969280,3647969791,IT
3647969792,3647970303,BE
3647970304,3647971327,FR
3647971328,3647971671,GB
3647971672,3647971679,DE
-3647971680,3647972215,GB
-3647972216,3647972223,DE
-3647972224,3647972259,GB
+3647971680,3647972191,GB
+3647972192,3647972199,DE
+3647972200,3647972259,GB
3647972260,3647972263,DE
3647972264,3647972351,GB
-3647972352,3647973783,IT
+3647972352,3647973679,IT
+3647973680,3647973695,DE
+3647973696,3647973783,IT
3647973784,3647973791,DE
3647973792,3647973967,IT
3647973968,3647973975,DE
@@ -130576,9 +132408,7 @@
3647974400,3647976447,ES
3647976448,3647976559,BE
3647976560,3647976575,FR
-3647976576,3647976607,BE
-3647976608,3647976639,BR
-3647976640,3647976647,BE
+3647976576,3647976647,BE
3647976648,3647976663,DE
3647976664,3647976719,BE
3647976720,3647976727,DE
@@ -130590,14 +132420,20 @@
3647976792,3647976799,DE
3647976800,3647976927,BE
3647976928,3647976935,DE
-3647976936,3647977047,BE
-3647977048,3647977215,DE
+3647976936,3647977071,BE
+3647977072,3647977087,DE
+3647977088,3647977151,BE
+3647977152,3647977215,DE
3647977216,3647977471,BE
3647977472,3647977791,GB
3647977792,3647977855,IE
3647977856,3647978495,GB
-3647978496,3647979007,NL
-3647979008,3647979519,DE
+3647978496,3647978775,NL
+3647978776,3647978783,DE
+3647978784,3647978871,NL
+3647978872,3647978879,DE
+3647978880,3647978895,NL
+3647978896,3647979519,DE
3647979520,3647980543,FR
3647980544,3647981055,GB
3647981056,3647981567,IE
@@ -130715,7 +132551,9 @@
3648181024,3648181055,AT
3648181056,3648181215,DE
3648181216,3648181231,RU
-3648181232,3648181311,DE
+3648181232,3648181247,DE
+3648181248,3648181279,IT
+3648181280,3648181311,DE
3648181312,3648181343,AT
3648181344,3648181375,DE
3648181376,3648181407,RU
@@ -130745,8 +132583,10 @@
3648182816,3648182823,US
3648182824,3648182831,RU
3648182832,3648182847,DE
-3648182848,3648182911,IT
-3648182912,3648183871,DE
+3648182848,3648182879,AT
+3648182880,3648183551,DE
+3648183552,3648183679,BR
+3648183680,3648183871,DE
3648183872,3648183935,GB
3648183936,3648184319,DE
3648184320,3648192511,RU
@@ -130820,8 +132660,8 @@
3648417880,3648417919,GB
3648417920,3648418047,AT
3648418048,3648418079,GB
-3648418080,3648418095,ES
-3648418096,3648418111,GB
+3648418080,3648418103,ES
+3648418104,3648418111,GB
3648418112,3648418135,ES
3648418136,3648418143,GB
3648418144,3648418247,ES
@@ -130962,24 +132802,17 @@
3650244608,3650256895,GB
3650256896,3650265087,DE
3650265088,3650269183,CH
-3650269184,3650273279,GB
+3650269184,3650273071,GB
+3650273072,3650273279,IR
3650273280,3650277375,IT
3650277376,3650281471,IR
3650281472,3650285567,FR
3650285568,3650289663,UA
3650289664,3650297855,RU
3650297856,3650301951,LT
-3650301952,3650306623,DE
-3650306624,3650306639,GE
-3650306640,3650306775,DE
+3650301952,3650306775,DE
3650306776,3650306779,GE
-3650306780,3650306783,DE
-3650306784,3650306791,AT
-3650306792,3650306799,DE
-3650306800,3650306807,AT
-3650306808,3650306943,DE
-3650306944,3650306959,GB
-3650306960,3650307007,DE
+3650306780,3650307007,DE
3650307008,3650307010,GB
3650307011,3650310143,DE
3650310144,3650314239,GB
@@ -130996,7 +132829,9 @@
3650338816,3650342911,FR
3650342912,3650344463,CH
3650344464,3650344479,AT
-3650344480,3650344879,CH
+3650344480,3650344559,CH
+3650344560,3650344575,AT
+3650344576,3650344879,CH
3650344880,3650344911,PT
3650344912,3650345879,CH
3650345880,3650345887,IM
@@ -131128,7 +132963,9 @@
3650912640,3650912671,FR
3650912672,3650923103,GB
3650923104,3650923135,FR
-3650923136,3650945023,GB
+3650923136,3650926591,GB
+3650926592,3650929663,ES
+3650929664,3650945023,GB
3650945024,3651010559,DK
3651010560,3651076095,GB
3651076096,3651077375,DE
@@ -131167,8 +133004,9 @@
3651087872,3651088127,DE
3651088128,3651088383,IE
3651088384,3651088639,GR
-3651088640,3651088895,SG
-3651088896,3651098111,DE
+3651088640,3651090919,DE
+3651090920,3651090959,IE
+3651090960,3651098111,DE
3651098112,3651098367,IE
3651098368,3651098623,FR
3651098624,3651101439,DE
@@ -131199,7 +133037,8 @@
3651108864,3651141631,EE
3651141632,3651173375,DE
3651173376,3651173631,ES
-3651173632,3651199487,DE
+3651173632,3651199231,DE
+3651199232,3651199487,ES
3651199488,3651199743,GB
3651199744,3651200255,ES
3651200256,3651201023,PL
@@ -131325,6 +133164,7 @@
3651846144,3651850239,NO
3651850240,3651854335,RU
3651854336,3651858431,IT
+3651858432,3651862527,IR
3651862528,3651866623,RU
3651866624,3651870719,FR
3651870720,3651874815,IT
@@ -131344,7 +133184,11 @@
3651886380,3651886383,CD
3651886384,3651886391,BE
3651886392,3651886395,CD
-3651886396,3651886435,BE
+3651886396,3651886407,BE
+3651886408,3651886415,CD
+3651886416,3651886423,BE
+3651886424,3651886427,CD
+3651886428,3651886435,BE
3651886436,3651886451,CD
3651886452,3651886455,BE
3651886456,3651886459,CD
@@ -131354,7 +133198,9 @@
3651886480,3651886495,CD
3651886496,3651886511,BE
3651886512,3651886527,CD
-3651886528,3651887103,BE
+3651886528,3651886591,BE
+3651886592,3651886847,CD
+3651886848,3651887103,BE
3651887104,3651891199,GB
3651891200,3651895295,DE
3651895296,3651899391,GB
@@ -131449,7 +133295,7 @@
3651964928,3651969023,SK
3651969024,3651977215,DE
3651977216,3651985407,IT
-3651985408,3651993599,PL
+3651985408,3651997695,PL
3651997696,3652001791,RU
3652001792,3652005887,HU
3652005888,3652009983,GB
@@ -131457,9 +133303,7 @@
3652011520,3652011775,IT
3652011776,3652014079,RU
3652014080,3652018175,SA
-3652018176,3652018239,IE
-3652018240,3652018303,GB
-3652018304,3652018687,IE
+3652018176,3652018687,IE
3652018688,3652018943,GB
3652018944,3652019169,IE
3652019170,3652019199,GB
@@ -131475,15 +133319,15 @@
3652019480,3652019487,GB
3652019488,3652019527,IE
3652019528,3652019551,GB
-3652019552,3652019615,IE
-3652019616,3652019631,GB
+3652019552,3652019567,IE
+3652019568,3652019583,GB
+3652019584,3652019599,IE
+3652019600,3652019631,GB
3652019632,3652019663,IE
-3652019664,3652019679,GB
-3652019680,3652019687,IE
-3652019688,3652019695,GB
+3652019664,3652019695,GB
3652019696,3652019735,IE
-3652019736,3652019751,GB
-3652019752,3652019791,IE
+3652019736,3652019759,GB
+3652019760,3652019791,IE
3652019792,3652019807,GB
3652019808,3652019815,IE
3652019816,3652019887,GB
@@ -131501,7 +133345,8 @@
3652021064,3652021087,GB
3652021088,3652021151,IE
3652021152,3652021247,GB
-3652021248,3652021423,IE
+3652021248,3652021415,IE
+3652021416,3652021423,BE
3652021424,3652021759,GB
3652021760,3652021775,IE
3652021776,3652021791,GB
@@ -131614,78 +133459,56 @@
3653402624,3653403135,AT
3653403136,3653403647,CD
3653403648,3653403903,ZW
-3653403904,3653403911,UA
+3653403904,3653403911,A2
3653403912,3653403919,IQ
-3653403920,3653403931,UA
-3653403932,3653403935,A2
-3653403936,3653403943,IQ
+3653403920,3653403927,A2
+3653403928,3653403931,UA
+3653403932,3653403943,A2
3653403944,3653403951,LB
3653403952,3653403959,IQ
3653403960,3653403967,MW
-3653403968,3653403983,NG
+3653403968,3653403975,NG
+3653403976,3653403983,A2
3653403984,3653403999,UA
3653404000,3653404008,LB
-3653404009,3653404015,A2
-3653404016,3653404023,LB
-3653404024,3653404039,A2
-3653404040,3653404055,IQ
-3653404056,3653404063,A2
+3653404009,3653404039,A2
+3653404040,3653404047,IQ
+3653404048,3653404063,A2
3653404064,3653404071,LB
3653404072,3653404079,AO
3653404080,3653404087,UA
-3653404088,3653404095,LB
-3653404096,3653404103,IQ
-3653404104,3653404111,A2
-3653404112,3653404119,MD
-3653404120,3653404127,A2
+3653404088,3653404127,A2
3653404128,3653404135,RS
3653404136,3653404159,A2
3653404160,3653404415,AT
3653404416,3653404543,A2
3653404544,3653404559,NG
-3653404560,3653404567,IQ
-3653404568,3653404575,LY
-3653404576,3653404591,TR
-3653404592,3653404607,A2
-3653404608,3653404655,UA
+3653404560,3653404639,A2
+3653404640,3653404655,UA
3653404656,3653404671,A2
3653404672,3653404679,TR
3653404680,3653404707,A2
3653404708,3653404713,IQ
3653404714,3653404719,A2
3653404720,3653404735,LB
-3653404736,3653404751,A2
-3653404752,3653404759,AM
-3653404760,3653404815,A2
-3653404816,3653404831,LB
+3653404736,3653404823,A2
+3653404824,3653404831,LB
3653404832,3653404847,NG
3653404848,3653404855,A2
3653404856,3653404863,SL
-3653404864,3653404871,LY
-3653404872,3653404879,A2
-3653404880,3653404887,UA
-3653404888,3653404903,A2
+3653404864,3653404903,A2
3653404904,3653404911,IQ
3653404912,3653404919,LY
3653404920,3653404959,A2
3653404960,3653404975,UA
-3653404976,3653404983,A2
-3653404984,3653404991,AM
-3653404992,3653404999,IQ
-3653405000,3653405007,A2
-3653405008,3653405031,LB
-3653405032,3653405039,A2
+3653404976,3653405039,A2
3653405040,3653405047,LB
3653405048,3653405055,IQ
3653405056,3653405063,A2
-3653405064,3653405079,IQ
-3653405080,3653405087,A2
-3653405088,3653405095,LY
+3653405064,3653405071,IQ
+3653405072,3653405095,A2
3653405096,3653405103,NG
-3653405104,3653405119,A2
-3653405120,3653405135,ZW
-3653405136,3653405151,UA
-3653405152,3653405167,A2
+3653405104,3653405167,A2
3653405168,3653405183,UA
3653405184,3653405439,AT
3653405440,3653407015,A2
@@ -131693,16 +133516,14 @@
3653407024,3653407031,A2
3653407032,3653407039,ZW
3653407040,3653407071,NG
-3653407072,3653407087,A2
-3653407088,3653407095,NG
-3653407096,3653407103,A2
+3653407072,3653407103,A2
3653407104,3653407111,UG
3653407112,3653407119,ZM
3653407120,3653407127,ZW
3653407128,3653407167,A2
3653407168,3653407231,NG
-3653407232,3653407359,A2
-3653407360,3653407375,NG
+3653407232,3653407367,A2
+3653407368,3653407375,NG
3653407376,3653407391,A2
3653407392,3653407399,NG
3653407400,3653407423,A2
@@ -131723,17 +133544,13 @@
3653408048,3653408063,A2
3653408064,3653408071,ZM
3653408072,3653408079,NG
-3653408080,3653408087,MW
-3653408088,3653408143,A2
+3653408080,3653408143,A2
3653408144,3653408151,NG
-3653408152,3653408159,ZM
-3653408160,3653408167,A2
+3653408152,3653408167,A2
3653408168,3653408175,ZW
3653408176,3653408183,A2
3653408184,3653408191,MW
-3653408192,3653408215,A2
-3653408216,3653408223,MW
-3653408224,3653408231,A2
+3653408192,3653408231,A2
3653408232,3653408239,KE
3653408240,3653408247,ZM
3653408248,3653408767,A2
@@ -131742,13 +133559,11 @@
3653409040,3653409047,NG
3653409048,3653409087,A2
3653409088,3653409095,CD
-3653409096,3653409103,A2
-3653409104,3653409127,NG
+3653409096,3653409111,A2
+3653409112,3653409127,NG
3653409128,3653409143,CD
3653409144,3653409151,NG
-3653409152,3653409175,A2
-3653409176,3653409183,NG
-3653409184,3653409191,A2
+3653409152,3653409191,A2
3653409192,3653409199,NG
3653409200,3653409223,A2
3653409224,3653409231,NG
@@ -131763,8 +133578,7 @@
3653409640,3653409647,A2
3653409648,3653409663,NG
3653409664,3653409791,CM
-3653409792,3653409855,ZW
-3653409856,3653409919,A2
+3653409792,3653409919,A2
3653409920,3653410047,NG
3653410048,3653410063,YT
3653410064,3653410079,UG
@@ -131787,8 +133601,7 @@
3653410256,3653410263,A2
3653410264,3653410271,NG
3653410272,3653410279,SD
-3653410280,3653410287,LU
-3653410288,3653410295,A2
+3653410280,3653410295,A2
3653410296,3653410303,MW
3653410304,3653410815,GB
3653410816,3653414911,CZ
@@ -131813,7 +133626,9 @@
3653472560,3653472567,NL
3653472568,3653472575,AF
3653472576,3653472591,NL
-3653472592,3653472807,AF
+3653472592,3653472767,AF
+3653472768,3653472775,NL
+3653472776,3653472807,AF
3653472808,3653472815,NL
3653472816,3653472823,AF
3653472824,3653472831,NL
@@ -131840,8 +133655,8 @@
3653518368,3653518399,SK
3653518400,3653518479,AT
3653518480,3653518495,SK
-3653518496,3653519815,AT
-3653519816,3653519839,SK
+3653518496,3653519823,AT
+3653519824,3653519839,SK
3653519840,3653520223,AT
3653520224,3653520255,SK
3653520256,3653522975,AT
@@ -131861,6 +133676,7 @@
3653525216,3653525503,AT
3653525504,3653529599,RU
3653529600,3653533695,CZ
+3653533696,3653537791,IT
3653537792,3653541887,AT
3653541888,3653545983,UA
3653545984,3653550079,CH
@@ -131870,6 +133686,7 @@
3653559672,3653559679,US
3653559680,3653566463,GB
3653566464,3653570559,RU
+3653570560,3653574655,ES
3653574656,3653578751,CZ
3653578752,3653582847,SE
3653582848,3653586943,PL
@@ -132046,7 +133863,8 @@
3664004352,3664004607,MY
3664004608,3664004863,SG
3664004864,3664005119,KH
-3664005120,3664006143,ID
+3664005120,3664005887,ID
+3664005888,3664006143,MY
3664052224,3664084991,NZ
3664084992,3664117759,KR
3664117760,3664248831,HK
@@ -132299,8 +134117,22 @@
3743120384,3743121407,JP
3743121408,3743125503,MY
3743125504,3743129599,ID
+3743129600,3743130623,HK
+3743130624,3743131647,AP
+3743131648,3743133695,SG
+3743133696,3743134719,AU
+3743135744,3743136767,CN
+3743136768,3743137791,MY
+3743137792,3743154175,TH
3743154176,3743186943,MY
3743186944,3743219711,KR
+3743219712,3743252479,JP
+3743252480,3743260671,NC
+3743268864,3743277055,IN
+3743277056,3743281151,PK
+3743281152,3743282175,AU
+3743283200,3743284223,HK
+3743284224,3743285247,PK
3743285248,3743416319,IN
3743416320,3745513471,KR
3745513472,3749838847,CN
@@ -132312,7 +134144,7 @@
3749855232,3749969919,KR
3749969920,3750232063,JP
3750232064,3750756351,TW
-3751804928,3752067071,CN
+3750756352,3752067071,CN
3752067072,3752132607,ID
3752132608,3752133631,BD
3752133632,3752134655,ID
@@ -132325,6 +134157,7 @@
3752165376,3752198143,KR
3752198144,3752329215,CN
3752329216,3752853503,KR
+3752853504,3753902079,IN
3753902080,3754033151,CN
3754033152,3754164223,KR
3754164224,3754229759,IN
@@ -132345,6 +134178,7 @@
3755986944,3755988991,JP
3755988992,3755990015,HK
3755991040,3755999231,JP
+3755999232,3757047807,IN
3757047808,3757834239,CN
3757834240,3757867007,AU
3757899776,3757965311,KR
diff --git a/src/or/Makefile.am b/src/or/Makefile.am
index 9d8fb663c..ef9c9903b 100644
--- a/src/or/Makefile.am
+++ b/src/or/Makefile.am
@@ -21,7 +21,7 @@ libtor_a_SOURCES = buffers.c circuitbuild.c circuitlist.c \
cpuworker.c directory.c dirserv.c dirvote.c \
dns.c dnsserv.c geoip.c hibernate.c main.c $(tor_platform_source) \
microdesc.c \
- networkstatus.c onion.c policies.c \
+ networkstatus.c nodelist.c onion.c policies.c \
reasons.c relay.c rendcommon.c rendclient.c rendmid.c \
rendservice.c rephist.c router.c routerlist.c routerparse.c \
$(evdns_source) config_codedigest.c
@@ -56,6 +56,7 @@ noinst_HEADERS = buffers.h circuitbuild.h circuitlist.h circuituse.h \
command.h config.h connection_edge.h connection.h connection_or.h \
control.h cpuworker.h directory.h dirserv.h dirvote.h dns.h \
dnsserv.h geoip.h hibernate.h main.h microdesc.h networkstatus.h \
+ nodelist.h \
ntmain.h onion.h policies.h reasons.h relay.h rendclient.h \
rendcommon.h rendmid.h rendservice.h rephist.h router.h routerlist.h \
routerparse.h or.h eventdns.h eventdns_tor.h micro-revision.i
diff --git a/src/or/buffers.c b/src/or/buffers.c
index 11c656f23..08ed8910a 100644
--- a/src/or/buffers.c
+++ b/src/or/buffers.c
@@ -640,14 +640,10 @@ read_to_chunk_tls(buf_t *buf, chunk_t *chunk, tor_tls_t *tls,
* (because of EOF), set *<b>reached_eof</b> to 1 and return 0. Return -1 on
* error; else return the number of bytes read.
*/
-/* XXXX021 indicate "read blocked" somehow? */
int
read_to_buf(int s, size_t at_most, buf_t *buf, int *reached_eof,
int *socket_error)
{
- /* XXXX021 It's stupid to overload the return values for these functions:
- * "error status" and "number of bytes read" are not mutually exclusive.
- */
int r = 0;
size_t total_read = 0;
@@ -815,9 +811,6 @@ flush_chunk_tls(tor_tls_t *tls, buf_t *buf, chunk_t *chunk,
int
flush_buf(int s, buf_t *buf, size_t sz, size_t *buf_flushlen)
{
- /* XXXX021 It's stupid to overload the return values for these functions:
- * "error status" and "number of bytes flushed" are not mutually exclusive.
- */
int r;
size_t flushed = 0;
tor_assert(buf_flushlen);
@@ -1119,8 +1112,7 @@ fetch_var_cell_from_evbuffer(struct evbuffer *buf, var_cell_t **out,
int
move_buf_to_buf(buf_t *buf_out, buf_t *buf_in, size_t *buf_flushlen)
{
- /* XXXX we can do way better here, but this doesn't turn up in any
- * profiles. */
+ /* We can do way better here, but this doesn't turn up in any profiles. */
char b[4096];
size_t cp, len;
len = *buf_flushlen;
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index 473b28e87..20a7a0d07 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -23,6 +23,7 @@
#include "directory.h"
#include "main.h"
#include "networkstatus.h"
+#include "nodelist.h"
#include "onion.h"
#include "policies.h"
#include "relay.h"
@@ -54,8 +55,8 @@ extern circuit_t *global_circuitlist;
/** An entry_guard_t represents our information about a chosen long-term
* first hop, known as a "helper" node in the literature. We can't just
- * use a routerinfo_t, since we want to remember these even when we
- * don't have a directory. */
+ * use a node_t, since we want to remember these even when we
+ * don't have any directory info. */
typedef struct {
char nickname[MAX_NICKNAME_LEN+1];
char identity[DIGEST_LEN];
@@ -94,7 +95,7 @@ static int circuit_deliver_create_cell(circuit_t *circ,
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);
-static int count_acceptable_routers(smartlist_t *routers);
+static int count_acceptable_nodes(smartlist_t *routers);
static int onion_append_hop(crypt_path_t **head_ptr, extend_info_t *choice);
static void entry_guards_changed(void);
@@ -1401,10 +1402,9 @@ circuit_list_path_impl(origin_circuit_t *circ, int verbose, int verbose_names)
hop = circ->cpath;
do {
- routerinfo_t *ri;
- routerstatus_t *rs;
char *elt;
const char *id;
+ const node_t *node;
if (!hop)
break;
if (!verbose && hop->state != CPATH_STATE_OPEN)
@@ -1414,10 +1414,8 @@ circuit_list_path_impl(origin_circuit_t *circ, int verbose, int verbose_names)
id = hop->extend_info->identity_digest;
if (verbose_names) {
elt = tor_malloc(MAX_VERBOSE_NICKNAME_LEN+1);
- if ((ri = router_get_by_digest(id))) {
- router_get_verbose_nickname(elt, ri);
- } else if ((rs = router_get_consensus_status_by_id(id))) {
- routerstatus_get_verbose_nickname(elt, rs);
+ if ((node = node_get_by_id(id))) {
+ node_get_verbose_nickname(node, elt);
} else if (is_legal_nickname(hop->extend_info->nickname)) {
elt[0] = '$';
base16_encode(elt+1, HEX_DIGEST_LEN+1, id, DIGEST_LEN);
@@ -1429,9 +1427,9 @@ circuit_list_path_impl(origin_circuit_t *circ, int verbose, int verbose_names)
base16_encode(elt+1, HEX_DIGEST_LEN+1, id, DIGEST_LEN);
}
} else { /* ! verbose_names */
- if ((ri = router_get_by_digest(id)) &&
- ri->is_named) {
- elt = tor_strdup(hop->extend_info->nickname);
+ node = node_get_by_id(id);
+ if (node && node_is_named(node)) {
+ elt = tor_strdup(node_get_nickname(node));
} else {
elt = tor_malloc(HEX_DIGEST_LEN+2);
elt[0] = '$';
@@ -1500,31 +1498,28 @@ void
circuit_rep_hist_note_result(origin_circuit_t *circ)
{
crypt_path_t *hop;
- char *prev_digest = NULL;
- routerinfo_t *router;
+ const char *prev_digest = NULL;
hop = circ->cpath;
if (!hop) /* circuit hasn't started building yet. */
return;
if (server_mode(get_options())) {
- routerinfo_t *me = router_get_my_routerinfo();
+ const routerinfo_t *me = router_get_my_routerinfo();
if (!me)
return;
prev_digest = me->cache_info.identity_digest;
}
do {
- router = router_get_by_digest(hop->extend_info->identity_digest);
- if (router) {
+ const node_t *node = node_get_by_id(hop->extend_info->identity_digest);
+ if (node) { /* Why do we check this? We know the identity. -NM XXXX */
if (prev_digest) {
if (hop->state == CPATH_STATE_OPEN)
- rep_hist_note_extend_succeeded(prev_digest,
- router->cache_info.identity_digest);
+ rep_hist_note_extend_succeeded(prev_digest, node->identity);
else {
- rep_hist_note_extend_failed(prev_digest,
- router->cache_info.identity_digest);
+ rep_hist_note_extend_failed(prev_digest, node->identity);
break;
}
}
- prev_digest = router->cache_info.identity_digest;
+ prev_digest = node->identity;
} else {
prev_digest = NULL;
}
@@ -1794,7 +1789,7 @@ int
inform_testing_reachability(void)
{
char dirbuf[128];
- routerinfo_t *me = router_get_my_routerinfo();
+ const routerinfo_t *me = router_get_my_routerinfo();
if (!me)
return 0;
control_event_server_status(LOG_NOTICE,
@@ -1866,7 +1861,7 @@ int
circuit_send_next_onion_skin(origin_circuit_t *circ)
{
crypt_path_t *hop;
- routerinfo_t *router;
+ const node_t *node;
char payload[2+4+DIGEST_LEN+ONIONSKIN_CHALLENGE_LEN];
char *onionskin;
size_t payload_len;
@@ -1882,7 +1877,7 @@ circuit_send_next_onion_skin(origin_circuit_t *circ)
else
control_event_bootstrap(BOOTSTRAP_STATUS_CIRCUIT_CREATE, 0);
- router = router_get_by_digest(circ->_base.n_conn->identity_digest);
+ node = node_get_by_id(circ->_base.n_conn->identity_digest);
fast = should_use_create_fast_for_circuit(circ);
if (!fast) {
/* We are an OR and we know the right onion key: we should
@@ -1916,7 +1911,7 @@ circuit_send_next_onion_skin(origin_circuit_t *circ)
circuit_set_state(TO_CIRCUIT(circ), CIRCUIT_STATE_BUILDING);
log_info(LD_CIRC,"First hop: finished sending %s cell to '%s'",
fast ? "CREATE_FAST" : "CREATE",
- router ? router->nickname : "<unnamed>");
+ node ? node_get_nickname(node) : "<unnamed>");
} else {
tor_assert(circ->cpath->state == CPATH_STATE_OPEN);
tor_assert(circ->_base.state == CIRCUIT_STATE_BUILDING);
@@ -1929,7 +1924,7 @@ circuit_send_next_onion_skin(origin_circuit_t *circ)
struct timeval end;
long timediff;
tor_gettimeofday(&end);
- timediff = tv_mdiff(&circ->_base.highres_created, &end);
+ timediff = tv_mdiff(&circ->_base.timestamp_created, &end);
/*
* If the circuit build time is much greater than we would have cut
@@ -2390,12 +2385,12 @@ onionskin_answer(or_circuit_t *circ, uint8_t cell_type, const char *payload,
*/
static int
new_route_len(uint8_t purpose, extend_info_t *exit,
- smartlist_t *routers)
+ smartlist_t *nodes)
{
int num_acceptable_routers;
int routelen;
- tor_assert(routers);
+ tor_assert(nodes);
routelen = DEFAULT_ROUTE_LEN;
if (exit &&
@@ -2403,10 +2398,10 @@ new_route_len(uint8_t purpose, extend_info_t *exit,
purpose != CIRCUIT_PURPOSE_S_ESTABLISH_INTRO)
routelen++;
- num_acceptable_routers = count_acceptable_routers(routers);
+ num_acceptable_routers = count_acceptable_nodes(nodes);
log_debug(LD_CIRC,"Chosen route length %d (%d/%d routers suitable).",
- routelen, num_acceptable_routers, smartlist_len(routers));
+ routelen, num_acceptable_routers, smartlist_len(nodes));
if (num_acceptable_routers < 2) {
log_info(LD_CIRC,
@@ -2475,12 +2470,12 @@ circuit_all_predicted_ports_handled(time_t now, int *need_uptime,
return enough;
}
-/** Return 1 if <b>router</b> can handle one or more of the ports in
+/** Return 1 if <b>node</b> can handle one or more of the ports in
* <b>needed_ports</b>, else return 0.
*/
static int
-router_handles_some_port(routerinfo_t *router, smartlist_t *needed_ports)
-{
+node_handles_some_port(const node_t *node, smartlist_t *needed_ports)
+{ /* XXXX MOVE */
int i;
uint16_t port;
@@ -2490,7 +2485,10 @@ router_handles_some_port(routerinfo_t *router, smartlist_t *needed_ports)
needed_ports is explicitly a smartlist of uint16_t's */
port = *(uint16_t *)smartlist_get(needed_ports, i);
tor_assert(port);
- r = compare_addr_to_addr_policy(0, port, router->exit_policy);
+ if (node)
+ r = compare_addr_to_node_policy(0, port, node);
+ else
+ continue;
if (r != ADDR_POLICY_REJECTED && r != ADDR_POLICY_PROBABLY_REJECTED)
return 1;
}
@@ -2523,18 +2521,17 @@ ap_stream_wants_exit_attention(connection_t *conn)
*
* Return NULL if we can't find any suitable routers.
*/
-static routerinfo_t *
-choose_good_exit_server_general(routerlist_t *dir, int need_uptime,
- int need_capacity)
+static const node_t *
+choose_good_exit_server_general(int need_uptime, int need_capacity)
{
int *n_supported;
- int i;
int n_pending_connections = 0;
smartlist_t *connections;
int best_support = -1;
int n_best_support=0;
- routerinfo_t *router;
or_options_t *options = get_options();
+ const smartlist_t *the_nodes;
+ const node_t *node=NULL;
connections = get_connection_array();
@@ -2555,10 +2552,11 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime,
*
* -1 means "Don't use this router at all."
*/
- n_supported = tor_malloc(sizeof(int)*smartlist_len(dir->routers));
- for (i = 0; i < smartlist_len(dir->routers); ++i) {/* iterate over routers */
- router = smartlist_get(dir->routers, i);
- if (router_is_me(router)) {
+ the_nodes = nodelist_get_list();
+ n_supported = tor_malloc(sizeof(int)*smartlist_len(the_nodes));
+ SMARTLIST_FOREACH_BEGIN(the_nodes, const node_t *, node) {
+ const int i = node_sl_idx;
+ if (router_digest_is_me(node->identity)) {
n_supported[i] = -1;
// log_fn(LOG_DEBUG,"Skipping node %s -- it's me.", router->nickname);
/* XXX there's probably a reverse predecessor attack here, but
@@ -2566,13 +2564,15 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime,
*/
continue;
}
- if (!router->is_running || router->is_bad_exit) {
+ if (!node_has_descriptor(node))
+ continue;
+ if (!node->is_running || node->is_bad_exit) {
n_supported[i] = -1;
continue; /* skip routers that are known to be down or bad exits */
}
- if (router_is_unreliable(router, need_uptime, need_capacity, 0) &&
+ if (node_is_unreliable(node, need_uptime, need_capacity, 0) &&
(!options->ExitNodes ||
- !routerset_contains_router(options->ExitNodes, router))) {
+ !routerset_contains_node(options->ExitNodes, node))) {
/* FFFF Someday, differentiate between a routerset that names
* routers, and a routerset that names countries, and only do this
* check if they've asked for specific exit relays. Or if the country
@@ -2581,18 +2581,19 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime,
continue; /* skip routers that are not suitable, unless we have
* ExitNodes set, in which case we asked for it */
}
- if (!(router->is_valid || options->_AllowInvalid & ALLOW_INVALID_EXIT)) {
+ if (!(node->is_valid || options->_AllowInvalid & ALLOW_INVALID_EXIT)) {
/* if it's invalid and we don't want it */
n_supported[i] = -1;
// log_fn(LOG_DEBUG,"Skipping node %s (index %d) -- invalid router.",
// router->nickname, i);
continue; /* skip invalid routers */
}
- if (options->ExcludeSingleHopRelays && router->allow_single_hop_exits) {
+ if (options->ExcludeSingleHopRelays &&
+ node_allows_single_hop_exits(node)) {
n_supported[i] = -1;
continue;
}
- if (router_exit_policy_rejects_all(router)) {
+ if (node_exit_policy_rejects_all(node)) {
n_supported[i] = -1;
// log_fn(LOG_DEBUG,"Skipping node %s (index %d) -- it rejects all.",
// router->nickname, i);
@@ -2600,11 +2601,10 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime,
}
n_supported[i] = 0;
/* iterate over connections */
- SMARTLIST_FOREACH(connections, connection_t *, conn,
- {
+ SMARTLIST_FOREACH_BEGIN(connections, connection_t *, conn) {
if (!ap_stream_wants_exit_attention(conn))
continue; /* Skip everything but APs in CIRCUIT_WAIT */
- if (connection_ap_can_use_exit(TO_EDGE_CONN(conn), router, 1)) {
+ if (connection_ap_can_use_exit(TO_EDGE_CONN(conn), node, 1)) {
++n_supported[i];
// log_fn(LOG_DEBUG,"%s is supported. n_supported[%d] now %d.",
// router->nickname, i, n_supported[i]);
@@ -2612,7 +2612,7 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime,
// log_fn(LOG_DEBUG,"%s (index %d) would reject this stream.",
// router->nickname, i);
}
- }); /* End looping over connections. */
+ } SMARTLIST_FOREACH_END(conn);
if (n_pending_connections > 0 && n_supported[i] == 0) {
/* Leave best_support at -1 if that's where it is, so we can
* distinguish it later. */
@@ -2629,7 +2629,7 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime,
* count of equally good routers.*/
++n_best_support;
}
- }
+ } SMARTLIST_FOREACH_END(node);
log_info(LD_CIRC,
"Found %d servers that might support %d/%d pending connections.",
n_best_support, best_support >= 0 ? best_support : 0,
@@ -2640,18 +2640,19 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime,
if (best_support > 0) {
smartlist_t *supporting = smartlist_create(), *use = smartlist_create();
- for (i = 0; i < smartlist_len(dir->routers); i++)
- if (n_supported[i] == best_support)
- smartlist_add(supporting, smartlist_get(dir->routers, i));
+ SMARTLIST_FOREACH(the_nodes, const node_t *, node, {
+ if (n_supported[node_sl_idx] == best_support)
+ smartlist_add(supporting, (void*)node);
+ });
- routersets_get_disjunction(use, supporting, options->ExitNodes,
+ routersets_get_node_disjunction(use, supporting, options->ExitNodes,
options->_ExcludeExitNodesUnion, 1);
if (smartlist_len(use) == 0 && options->ExitNodes &&
!options->StrictNodes) { /* give up on exitnodes and try again */
- routersets_get_disjunction(use, supporting, NULL,
+ routersets_get_node_disjunction(use, supporting, NULL,
options->_ExcludeExitNodesUnion, 1);
}
- router = routerlist_sl_choose_by_bandwidth(use, WEIGHT_FOR_EXIT);
+ node = node_sl_choose_by_bandwidth(use, WEIGHT_FOR_EXIT);
smartlist_free(use);
smartlist_free(supporting);
} else {
@@ -2670,7 +2671,7 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime,
need_capacity?", fast":"",
need_uptime?", stable":"");
tor_free(n_supported);
- return choose_good_exit_server_general(dir, 0, 0);
+ return choose_good_exit_server_general(0, 0);
}
log_notice(LD_CIRC, "All routers are down or won't exit%s -- "
"choosing a doomed exit at random.",
@@ -2682,28 +2683,29 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime,
for (attempt = 0; attempt < 2; attempt++) {
/* try once to pick only from routers that satisfy a needed port,
* then if there are none, pick from any that support exiting. */
- for (i = 0; i < smartlist_len(dir->routers); i++) {
- router = smartlist_get(dir->routers, i);
- if (n_supported[i] != -1 &&
- (attempt || router_handles_some_port(router, needed_ports))) {
+ SMARTLIST_FOREACH_BEGIN(the_nodes, const node_t *, node) {
+ if (!node_has_descriptor(node))
+ continue;
+ if (n_supported[node_sl_idx] != -1 &&
+ (attempt || node_handles_some_port(node, needed_ports))) {
// log_fn(LOG_DEBUG,"Try %d: '%s' is a possibility.",
// try, router->nickname);
- smartlist_add(supporting, router);
+ smartlist_add(supporting, (void*)node);
}
- }
+ } SMARTLIST_FOREACH_END(node);
- routersets_get_disjunction(use, supporting, options->ExitNodes,
+ routersets_get_node_disjunction(use, supporting, options->ExitNodes,
options->_ExcludeExitNodesUnion, 1);
if (smartlist_len(use) == 0 && options->ExitNodes &&
!options->StrictNodes) { /* give up on exitnodes and try again */
- routersets_get_disjunction(use, supporting, NULL,
+ routersets_get_node_disjunction(use, supporting, NULL,
options->_ExcludeExitNodesUnion, 1);
}
/* FFF sometimes the above results in null, when the requested
* exit node is considered down by the consensus. we should pick
* it anyway, since the user asked for it. */
- router = routerlist_sl_choose_by_bandwidth(use, WEIGHT_FOR_EXIT);
- if (router)
+ node = node_sl_choose_by_bandwidth(use, WEIGHT_FOR_EXIT);
+ if (node)
break;
smartlist_clear(supporting);
smartlist_clear(use);
@@ -2715,9 +2717,9 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime,
}
tor_free(n_supported);
- if (router) {
- log_info(LD_CIRC, "Chose exit server '%s'", router->nickname);
- return router;
+ if (node) {
+ log_info(LD_CIRC, "Chose exit server '%s'", node_get_nickname(node));
+ return node;
}
if (options->ExitNodes && options->StrictNodes) {
log_warn(LD_CIRC,
@@ -2737,12 +2739,12 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime,
* For client-side rendezvous circuits, choose a random node, weighted
* toward the preferences in 'options'.
*/
-static routerinfo_t *
-choose_good_exit_server(uint8_t purpose, routerlist_t *dir,
+static const node_t *
+choose_good_exit_server(uint8_t purpose,
int need_uptime, int need_capacity, int is_internal)
{
or_options_t *options = get_options();
- router_crn_flags_t flags = 0;
+ router_crn_flags_t flags = CRN_NEED_DESC;
if (need_uptime)
flags |= CRN_NEED_UPTIME;
if (need_capacity)
@@ -2755,7 +2757,7 @@ choose_good_exit_server(uint8_t purpose, routerlist_t *dir,
if (is_internal) /* pick it like a middle hop */
return router_choose_random_node(NULL, options->ExcludeNodes, flags);
else
- return choose_good_exit_server_general(dir,need_uptime,need_capacity);
+ return choose_good_exit_server_general(need_uptime,need_capacity);
case CIRCUIT_PURPOSE_C_ESTABLISH_REND:
if (options->_AllowInvalid & ALLOW_INVALID_RENDEZVOUS)
flags |= CRN_ALLOW_INVALID;
@@ -2836,13 +2838,12 @@ static int
onion_pick_cpath_exit(origin_circuit_t *circ, extend_info_t *exit)
{
cpath_build_state_t *state = circ->build_state;
- routerlist_t *rl = router_get_routerlist();
if (state->onehop_tunnel) {
log_debug(LD_CIRC, "Launching a one-hop circuit for dir tunnel.");
state->desired_path_len = 1;
} else {
- int r = new_route_len(circ->_base.purpose, exit, rl->routers);
+ int r = new_route_len(circ->_base.purpose, exit, nodelist_get_list());
if (r < 1) /* must be at least 1 */
return -1;
state->desired_path_len = r;
@@ -2853,14 +2854,15 @@ onion_pick_cpath_exit(origin_circuit_t *circ, extend_info_t *exit)
log_info(LD_CIRC,"Using requested exit node '%s'", exit->nickname);
exit = extend_info_dup(exit);
} else { /* we have to decide one */
- routerinfo_t *router =
- choose_good_exit_server(circ->_base.purpose, rl, state->need_uptime,
+ const node_t *node =
+ choose_good_exit_server(circ->_base.purpose, state->need_uptime,
state->need_capacity, state->is_internal);
- if (!router) {
+ if (!node) {
log_warn(LD_CIRC,"failed to choose an exit server");
return -1;
}
- exit = extend_info_from_router(router);
+ exit = extend_info_from_node(node);
+ tor_assert(exit);
}
state->chosen_exit = exit;
return 0;
@@ -2911,35 +2913,30 @@ circuit_extend_to_new_exit(origin_circuit_t *circ, extend_info_t *exit)
* and available for building circuits through.
*/
static int
-count_acceptable_routers(smartlist_t *routers)
+count_acceptable_nodes(smartlist_t *nodes)
{
- int i, n;
int num=0;
- routerinfo_t *r;
- n = smartlist_len(routers);
- for (i=0;i<n;i++) {
- r = smartlist_get(routers, i);
-// log_debug(LD_CIRC,
+ SMARTLIST_FOREACH_BEGIN(nodes, const node_t *, node) {
+ // log_debug(LD_CIRC,
// "Contemplating whether router %d (%s) is a new option.",
// i, r->nickname);
- if (r->is_running == 0) {
+ if (! node->is_running)
// log_debug(LD_CIRC,"Nope, the directory says %d is not running.",i);
- goto next_i_loop;
- }
- if (r->is_valid == 0) {
+ continue;
+ if (! node->is_valid)
// log_debug(LD_CIRC,"Nope, the directory says %d is not valid.",i);
- goto next_i_loop;
+ continue;
+ if (! node_has_descriptor(node))
+ continue;
/* XXX This clause makes us count incorrectly: if AllowInvalidRouters
* allows this node in some places, then we're getting an inaccurate
* count. For now, be conservative and don't count it. But later we
* should try to be smarter. */
- }
- num++;
+ ++num;
+ } SMARTLIST_FOREACH_END(node);
+
// log_debug(LD_CIRC,"I like %d. num_acceptable_routers now %d.",i, num);
- next_i_loop:
- ; /* C requires an explicit statement after the label */
- }
return num;
}
@@ -2967,31 +2964,31 @@ onion_append_to_cpath(crypt_path_t **head_ptr, crypt_path_t *new_hop)
* circuit. In particular, make sure we don't pick the exit node or its
* family, and make sure we don't duplicate any previous nodes or their
* families. */
-static routerinfo_t *
+static const node_t *
choose_good_middle_server(uint8_t purpose,
cpath_build_state_t *state,
crypt_path_t *head,
int cur_len)
{
int i;
- routerinfo_t *r, *choice;
+ const node_t *r, *choice;
crypt_path_t *cpath;
smartlist_t *excluded;
or_options_t *options = get_options();
- router_crn_flags_t flags = 0;
+ router_crn_flags_t flags = CRN_NEED_DESC;
tor_assert(_CIRCUIT_PURPOSE_MIN <= purpose &&
purpose <= _CIRCUIT_PURPOSE_MAX);
log_debug(LD_CIRC, "Contemplating intermediate hop: random choice.");
excluded = smartlist_create();
- if ((r = build_state_get_exit_router(state))) {
- smartlist_add(excluded, r);
- routerlist_add_family(excluded, r);
+ if ((r = build_state_get_exit_node(state))) {
+ smartlist_add(excluded, (void*) r);
+ nodelist_add_node_family(excluded, r);
}
for (i = 0, cpath = head; i < cur_len; ++i, cpath=cpath->next) {
- if ((r = router_get_by_digest(cpath->extend_info->identity_digest))) {
- smartlist_add(excluded, r);
- routerlist_add_family(excluded, r);
+ if ((r = node_get_by_id(cpath->extend_info->identity_digest))) {
+ smartlist_add(excluded, (void*)r);
+ nodelist_add_node_family(excluded, r);
}
}
@@ -3014,44 +3011,45 @@ choose_good_middle_server(uint8_t purpose,
* If <b>state</b> is NULL, we're choosing a router to serve as an entry
* guard, not for any particular circuit.
*/
-static routerinfo_t *
+static const node_t *
choose_good_entry_server(uint8_t purpose, cpath_build_state_t *state)
{
- routerinfo_t *r, *choice;
+ const node_t *choice;
smartlist_t *excluded;
or_options_t *options = get_options();
- router_crn_flags_t flags = CRN_NEED_GUARD;
+ router_crn_flags_t flags = CRN_NEED_GUARD|CRN_NEED_DESC;
+ const node_t *node;
if (state && options->UseEntryGuards &&
(purpose != CIRCUIT_PURPOSE_TESTING || options->BridgeRelay)) {
+ /* This is request for an entry server to use for a regular circuit,
+ * and we use entry guard nodes. Just return one of the guard nodes. */
return choose_random_entry(state);
}
excluded = smartlist_create();
- if (state && (r = build_state_get_exit_router(state))) {
- smartlist_add(excluded, r);
- routerlist_add_family(excluded, r);
+ if (state && (node = build_state_get_exit_node(state))) {
+ /* Exclude the exit node from the state, if we have one. Also exclude its
+ * family. */
+ smartlist_add(excluded, (void*)node);
+ nodelist_add_node_family(excluded, node);
}
if (firewall_is_fascist_or()) {
- /*XXXX This could slow things down a lot; use a smarter implementation */
- /* exclude all ORs that listen on the wrong port, if anybody notices. */
- routerlist_t *rl = router_get_routerlist();
- int i;
-
- for (i=0; i < smartlist_len(rl->routers); i++) {
- r = smartlist_get(rl->routers, i);
- if (!fascist_firewall_allows_or(r))
- smartlist_add(excluded, r);
- }
+ /* Exclude all ORs that we can't reach through our firewall */
+ smartlist_t *nodes = nodelist_get_list();
+ SMARTLIST_FOREACH(nodes, const node_t *, node, {
+ if (!fascist_firewall_allows_node(node))
+ smartlist_add(excluded, (void*)node);
+ });
}
- /* and exclude current entry guards, if applicable */
+ /* and exclude current entry guards and their families, if applicable */
if (options->UseEntryGuards && entry_guards) {
SMARTLIST_FOREACH(entry_guards, entry_guard_t *, entry,
{
- if ((r = router_get_by_digest(entry->identity))) {
- smartlist_add(excluded, r);
- routerlist_add_family(excluded, r);
+ if ((node = node_get_by_id(entry->identity))) {
+ smartlist_add(excluded, (void*)node);
+ nodelist_add_node_family(excluded, node);
}
});
}
@@ -3107,14 +3105,18 @@ onion_extend_cpath(origin_circuit_t *circ)
if (cur_len == state->desired_path_len - 1) { /* Picking last node */
info = extend_info_dup(state->chosen_exit);
} else if (cur_len == 0) { /* picking first node */
- routerinfo_t *r = choose_good_entry_server(purpose, state);
- if (r)
- info = extend_info_from_router(r);
+ const node_t *r = choose_good_entry_server(purpose, state);
+ if (r) {
+ info = extend_info_from_node(r);
+ tor_assert(info);
+ }
} else {
- routerinfo_t *r =
+ const node_t *r =
choose_good_middle_server(purpose, state, circ->cpath, cur_len);
- if (r)
- info = extend_info_from_router(r);
+ if (r) {
+ info = extend_info_from_node(r);
+ tor_assert(info);
+ }
}
if (!info) {
@@ -3173,7 +3175,7 @@ extend_info_alloc(const char *nickname, const char *digest,
/** Allocate and return a new extend_info_t that can be used to build a
* circuit to or through the router <b>r</b>. */
extend_info_t *
-extend_info_from_router(routerinfo_t *r)
+extend_info_from_router(const routerinfo_t *r)
{
tor_addr_t addr;
tor_assert(r);
@@ -3182,6 +3184,29 @@ extend_info_from_router(routerinfo_t *r)
r->onion_pkey, &addr, r->or_port);
}
+/** Allocate and return a new extend_info that can be used to build a ircuit
+ * to or through the node <b>node</b>. May return NULL if there is not
+ * enough info about <b>node</b> to extend to it--for example, if there
+ * is no routerinfo_t or microdesc_t.
+ **/
+extend_info_t *
+extend_info_from_node(const node_t *node)
+{
+ if (node->ri) {
+ return extend_info_from_router(node->ri);
+ } else if (node->rs && node->md) {
+ tor_addr_t addr;
+ tor_addr_from_ipv4h(&addr, node->rs->addr);
+ return extend_info_alloc(node->rs->nickname,
+ node->identity,
+ node->md->onion_pkey,
+ &addr,
+ node->rs->or_port);
+ } else {
+ return NULL;
+ }
+}
+
/** Release storage held by an extend_info_t struct. */
void
extend_info_free(extend_info_t *info)
@@ -3212,12 +3237,12 @@ extend_info_dup(extend_info_t *info)
* If there is no chosen exit, or if we don't know the routerinfo_t for
* the chosen exit, return NULL.
*/
-routerinfo_t *
-build_state_get_exit_router(cpath_build_state_t *state)
+const node_t *
+build_state_get_exit_node(cpath_build_state_t *state)
{
if (!state || !state->chosen_exit)
return NULL;
- return router_get_by_digest(state->chosen_exit->identity_digest);
+ return node_get_by_id(state->chosen_exit->identity_digest);
}
/** Return the nickname for the chosen exit router in <b>state</b>. If
@@ -3239,9 +3264,8 @@ build_state_get_exit_nickname(cpath_build_state_t *state)
*
* If it's not usable, set *<b>reason</b> to a static string explaining why.
*/
-/*XXXX take a routerstatus, not a routerinfo. */
static int
-entry_guard_set_status(entry_guard_t *e, routerinfo_t *ri,
+entry_guard_set_status(entry_guard_t *e, const node_t *node,
time_t now, or_options_t *options, const char **reason)
{
char buf[HEX_DIGEST_LEN+1];
@@ -3250,16 +3274,17 @@ entry_guard_set_status(entry_guard_t *e, routerinfo_t *ri,
*reason = NULL;
/* Do we want to mark this guard as bad? */
- if (!ri)
+ if (!node)
*reason = "unlisted";
- else if (!ri->is_running)
+ else if (!node->is_running)
*reason = "down";
- else if (options->UseBridges && ri->purpose != ROUTER_PURPOSE_BRIDGE)
+ else if (options->UseBridges && (!node->ri ||
+ node->ri->purpose != ROUTER_PURPOSE_BRIDGE))
*reason = "not a bridge";
- else if (!options->UseBridges && !ri->is_possible_guard &&
- !routerset_contains_router(options->EntryNodes,ri))
+ else if (!options->UseBridges && !node->is_possible_guard &&
+ !routerset_contains_node(options->EntryNodes,node))
*reason = "not recommended as a guard";
- else if (routerset_contains_router(options->ExcludeNodes, ri))
+ else if (routerset_contains_node(options->ExcludeNodes, node))
*reason = "excluded";
if (*reason && ! e->bad_since) {
@@ -3303,7 +3328,7 @@ entry_is_time_to_retry(entry_guard_t *e, time_t now)
return now > (e->last_attempted + 36*60*60);
}
-/** Return the router corresponding to <b>e</b>, if <b>e</b> is
+/** Return the node corresponding to <b>e</b>, if <b>e</b> is
* working well enough that we are willing to use it as an entry
* right now. (Else return NULL.) In particular, it must be
* - Listed as either up or never yet contacted;
@@ -3317,11 +3342,11 @@ entry_is_time_to_retry(entry_guard_t *e, time_t now)
*
* If the answer is no, set *<b>msg</b> to an explanation of why.
*/
-static INLINE routerinfo_t *
+static INLINE const node_t *
entry_is_live(entry_guard_t *e, int need_uptime, int need_capacity,
int assume_reachable, const char **msg)
{
- routerinfo_t *r;
+ const node_t *node;
or_options_t *options = get_options();
tor_assert(msg);
@@ -3335,33 +3360,36 @@ entry_is_live(entry_guard_t *e, int need_uptime, int need_capacity,
*msg = "unreachable";
return NULL;
}
- r = router_get_by_digest(e->identity);
- if (!r) {
+ node = node_get_by_id(e->identity);
+ if (!node || !node_has_descriptor(node)) {
*msg = "no descriptor";
return NULL;
}
- if (get_options()->UseBridges && r->purpose != ROUTER_PURPOSE_BRIDGE) {
- *msg = "not a bridge";
- return NULL;
- }
- if (!get_options()->UseBridges && r->purpose != ROUTER_PURPOSE_GENERAL) {
- *msg = "not general-purpose";
- return NULL;
+ if (get_options()->UseBridges) {
+ if (node_get_purpose(node) != ROUTER_PURPOSE_BRIDGE) {
+ *msg = "not a bridge";
+ return NULL;
+ }
+ } else { /* !get_options()->UseBridges */
+ if (node_get_purpose(node) != ROUTER_PURPOSE_GENERAL) {
+ *msg = "not general-purpose";
+ return NULL;
+ }
}
if (options->EntryNodes &&
- routerset_contains_router(options->EntryNodes, r)) {
+ routerset_contains_node(options->EntryNodes, node)) {
/* they asked for it, they get it */
need_uptime = need_capacity = 0;
}
- if (router_is_unreliable(r, need_uptime, need_capacity, 0)) {
+ if (node_is_unreliable(node, need_uptime, need_capacity, 0)) {
*msg = "not fast/stable";
return NULL;
}
- if (!fascist_firewall_allows_or(r)) {
+ if (!fascist_firewall_allows_node(node)) {
*msg = "unreachable by config";
return NULL;
}
- return r;
+ return node;
}
/** Return the number of entry guards that we think are usable. */
@@ -3459,15 +3487,15 @@ control_event_guard_deferred(void)
* If <b>chosen</b> is defined, use that one, and if it's not
* already in our entry_guards list, put it at the *beginning*.
* Else, put the one we pick at the end of the list. */
-static routerinfo_t *
-add_an_entry_guard(routerinfo_t *chosen, int reset_status)
+static const node_t *
+add_an_entry_guard(const node_t *chosen, int reset_status)
{
- routerinfo_t *router;
+ const node_t *node;
entry_guard_t *entry;
if (chosen) {
- router = chosen;
- entry = is_an_entry_guard(router->cache_info.identity_digest);
+ node = chosen;
+ entry = is_an_entry_guard(node->identity);
if (entry) {
if (reset_status) {
entry->bad_since = 0;
@@ -3476,14 +3504,15 @@ add_an_entry_guard(routerinfo_t *chosen, int reset_status)
return NULL;
}
} else {
- router = choose_good_entry_server(CIRCUIT_PURPOSE_C_GENERAL, NULL);
- if (!router)
+ node = choose_good_entry_server(CIRCUIT_PURPOSE_C_GENERAL, NULL);
+ if (!node)
return NULL;
}
entry = tor_malloc_zero(sizeof(entry_guard_t));
- log_info(LD_CIRC, "Chose '%s' as new entry guard.", router->nickname);
- strlcpy(entry->nickname, router->nickname, sizeof(entry->nickname));
- memcpy(entry->identity, router->cache_info.identity_digest, DIGEST_LEN);
+ log_info(LD_CIRC, "Chose '%s' as new entry guard.",
+ node_get_nickname(node));
+ strlcpy(entry->nickname, node_get_nickname(node), sizeof(entry->nickname));
+ memcpy(entry->identity, node->identity, DIGEST_LEN);
/* Choose expiry time smudged over the past month. The goal here
* is to a) spread out when Tor clients rotate their guards, so they
* don't all select them on the same day, and b) avoid leaving a
@@ -3498,7 +3527,7 @@ add_an_entry_guard(routerinfo_t *chosen, int reset_status)
control_event_guard(entry->nickname, entry->identity, "NEW");
control_event_guard_deferred();
log_entry_guards(LOG_INFO);
- return router;
+ return node;
}
/** If the use of entry guards is configured, choose more entry guards
@@ -3652,7 +3681,7 @@ entry_guards_compute_status(or_options_t *options, time_t now)
reasons = digestmap_new();
SMARTLIST_FOREACH_BEGIN(entry_guards, entry_guard_t *, entry)
{
- routerinfo_t *r = router_get_by_digest(entry->identity);
+ const node_t *r = node_get_by_id(entry->identity);
const char *reason = NULL;
if (entry_guard_set_status(entry, r, now, options, &reason))
changed = 1;
@@ -3673,7 +3702,7 @@ entry_guards_compute_status(or_options_t *options, time_t now)
SMARTLIST_FOREACH_BEGIN(entry_guards, entry_guard_t *, entry) {
const char *reason = digestmap_get(reasons, entry->identity);
const char *live_msg = "";
- routerinfo_t *r = entry_is_live(entry, 0, 1, 0, &live_msg);
+ const node_t *r = entry_is_live(entry, 0, 1, 0, &live_msg);
log_info(LD_CIRC, "Summary: Entry '%s' is %s, %s%s%s, and %s%s.",
entry->nickname,
entry->unreachable_since ? "unreachable" : "reachable",
@@ -3790,7 +3819,7 @@ entry_guard_register_connect_status(const char *digest, int succeeded,
break;
if (e->made_contact) {
const char *msg;
- routerinfo_t *r = entry_is_live(e, 0, 1, 1, &msg);
+ const node_t *r = entry_is_live(e, 0, 1, 1, &msg);
if (r && e->unreachable_since) {
refuse_conn = 1;
e->can_retry = 1;
@@ -3831,7 +3860,7 @@ entry_nodes_should_be_added(void)
static void
entry_guards_prepend_from_config(or_options_t *options)
{
- smartlist_t *entry_routers, *entry_fps;
+ smartlist_t *entry_nodes, *entry_fps;
smartlist_t *old_entry_guards_on_list, *old_entry_guards_not_on_list;
tor_assert(entry_guards);
@@ -3851,22 +3880,22 @@ entry_guards_prepend_from_config(or_options_t *options)
tor_free(string);
}
- entry_routers = smartlist_create();
+ entry_nodes = smartlist_create();
entry_fps = smartlist_create();
old_entry_guards_on_list = smartlist_create();
old_entry_guards_not_on_list = smartlist_create();
/* Split entry guards into those on the list and those not. */
- /* XXXX022 Now that we allow countries and IP ranges in EntryNodes, this is
- * potentially an enormous list. For now, we disable such values for
- * EntryNodes in options_validate(); really, this wants a better solution.
- * Perhaps we should do this calculation once whenever the list of routers
- * changes or the entrynodes setting changes.
- */
- routerset_get_all_routers(entry_routers, options->EntryNodes, 0);
- SMARTLIST_FOREACH(entry_routers, routerinfo_t *, ri,
- smartlist_add(entry_fps,ri->cache_info.identity_digest));
+ /* Now that we allow countries and IP ranges in EntryNodes, this is
+ * potentially an enormous list. It's not so bad though because we
+ * only call this function when a) we're making a new circuit, and b)
+ * we've called directory_info_has_arrived() or changed our EntryNodes
+ * since the last time we made a circuit. */
+ routerset_get_all_nodes(entry_nodes, options->EntryNodes, 0);
+ SMARTLIST_FOREACH(entry_nodes, const node_t *,node,
+ smartlist_add(entry_fps, (void*)node->identity));
+
SMARTLIST_FOREACH(entry_guards, entry_guard_t *, e, {
if (smartlist_digest_isin(entry_fps, e->identity))
smartlist_add(old_entry_guards_on_list, e);
@@ -3875,9 +3904,9 @@ entry_guards_prepend_from_config(or_options_t *options)
});
/* Remove all currently configured entry guards from entry_routers. */
- SMARTLIST_FOREACH(entry_routers, routerinfo_t *, ri, {
- if (is_an_entry_guard(ri->cache_info.identity_digest)) {
- SMARTLIST_DEL_CURRENT(entry_routers, ri);
+ SMARTLIST_FOREACH(entry_nodes, const node_t *, node, {
+ if (is_an_entry_guard(node->identity)) {
+ SMARTLIST_DEL_CURRENT(entry_nodes, node);
}
});
@@ -3886,8 +3915,8 @@ entry_guards_prepend_from_config(or_options_t *options)
/* First, the previously configured guards that are in EntryNodes. */
smartlist_add_all(entry_guards, old_entry_guards_on_list);
/* Next, the rest of EntryNodes */
- SMARTLIST_FOREACH(entry_routers, routerinfo_t *, ri, {
- add_an_entry_guard(ri, 0);
+ SMARTLIST_FOREACH(entry_nodes, const node_t *, node, {
+ add_an_entry_guard(node, 0);
});
/* Finally, the remaining previously configured guards that are not in
* EntryNodes, unless we're strict in which case we drop them */
@@ -3898,7 +3927,7 @@ entry_guards_prepend_from_config(or_options_t *options)
smartlist_add_all(entry_guards, old_entry_guards_not_on_list);
}
- smartlist_free(entry_routers);
+ smartlist_free(entry_nodes);
smartlist_free(entry_fps);
smartlist_free(old_entry_guards_on_list);
smartlist_free(old_entry_guards_not_on_list);
@@ -3936,21 +3965,22 @@ entry_list_is_totally_static(or_options_t *options)
* make sure not to pick this circuit's exit or any node in the
* exit's family. If <b>state</b> is NULL, we're looking for a random
* guard (likely a bridge). */
-routerinfo_t *
+const node_t *
choose_random_entry(cpath_build_state_t *state)
{
or_options_t *options = get_options();
smartlist_t *live_entry_guards = smartlist_create();
smartlist_t *exit_family = smartlist_create();
- routerinfo_t *chosen_exit = state?build_state_get_exit_router(state) : NULL;
- routerinfo_t *r = NULL;
+ const node_t *chosen_exit =
+ state?build_state_get_exit_node(state) : NULL;
+ const node_t *node = NULL;
int need_uptime = state ? state->need_uptime : 0;
int need_capacity = state ? state->need_capacity : 0;
int preferred_min, consider_exit_family = 0;
if (chosen_exit) {
- smartlist_add(exit_family, chosen_exit);
- routerlist_add_family(exit_family, chosen_exit);
+ smartlist_add(exit_family, (void*) chosen_exit);
+ nodelist_add_node_family(exit_family, chosen_exit);
consider_exit_family = 1;
}
@@ -3966,16 +3996,15 @@ choose_random_entry(cpath_build_state_t *state)
retry:
smartlist_clear(live_entry_guards);
- SMARTLIST_FOREACH(entry_guards, entry_guard_t *, entry,
- {
+ SMARTLIST_FOREACH_BEGIN(entry_guards, entry_guard_t *, entry) {
const char *msg;
- r = entry_is_live(entry, need_uptime, need_capacity, 0, &msg);
- if (!r)
+ node = entry_is_live(entry, need_uptime, need_capacity, 0, &msg);
+ if (!node)
continue; /* down, no point */
- if (consider_exit_family && smartlist_isin(exit_family, r))
+ if (consider_exit_family && smartlist_isin(exit_family, node))
continue; /* avoid relays that are family members of our exit */
if (options->EntryNodes &&
- !routerset_contains_router(options->EntryNodes, r)) {
+ !routerset_contains_node(options->EntryNodes, node)) {
/* We've come to the end of our preferred entry nodes. */
if (smartlist_len(live_entry_guards))
goto choose_and_finish; /* only choose from the ones we like */
@@ -3988,7 +4017,7 @@ choose_random_entry(cpath_build_state_t *state)
"No relays from EntryNodes available. Using others.");
}
}
- smartlist_add(live_entry_guards, r);
+ smartlist_add(live_entry_guards, (void*)node);
if (!entry->made_contact) {
/* Always start with the first not-yet-contacted entry
* guard. Otherwise we might add several new ones, pick
@@ -3998,7 +4027,7 @@ choose_random_entry(cpath_build_state_t *state)
}
if (smartlist_len(live_entry_guards) >= options->NumEntryGuards)
break; /* we have enough */
- });
+ } SMARTLIST_FOREACH_END(entry);
if (entry_list_is_constrained(options)) {
/* If we prefer the entry nodes we've got, and we have at least
@@ -4018,8 +4047,8 @@ choose_random_entry(cpath_build_state_t *state)
/* XXX if guard doesn't imply fast and stable, then we need
* to tell add_an_entry_guard below what we want, or it might
* be a long time til we get it. -RD */
- r = add_an_entry_guard(NULL, 0);
- if (r) {
+ node = add_an_entry_guard(NULL, 0);
+ if (node) {
entry_guards_changed();
/* XXX we start over here in case the new node we added shares
* a family with our exit node. There's a chance that we'll just
@@ -4029,16 +4058,16 @@ choose_random_entry(cpath_build_state_t *state)
goto retry;
}
}
- if (!r && need_uptime) {
+ if (!node && need_uptime) {
need_uptime = 0; /* try without that requirement */
goto retry;
}
- if (!r && need_capacity) {
+ if (!node && need_capacity) {
/* still no? last attempt, try without requiring capacity */
need_capacity = 0;
goto retry;
}
- if (!r && entry_list_is_constrained(options) && consider_exit_family) {
+ if (!node && entry_list_is_constrained(options) && consider_exit_family) {
/* still no? if we're using bridges or have strictentrynodes
* set, and our chosen exit is in the same family as all our
* bridges/entry guards, then be flexible about families. */
@@ -4052,16 +4081,16 @@ choose_random_entry(cpath_build_state_t *state)
if (entry_list_is_constrained(options)) {
/* We need to weight by bandwidth, because our bridges or entryguards
* were not already selected proportional to their bandwidth. */
- r = routerlist_sl_choose_by_bandwidth(live_entry_guards, WEIGHT_FOR_GUARD);
+ node = node_sl_choose_by_bandwidth(live_entry_guards, WEIGHT_FOR_GUARD);
} else {
/* We choose uniformly at random here, because choose_good_entry_server()
* already weights its choices by bandwidth, so we don't want to
* *double*-weight our guard selection. */
- r = smartlist_choose(live_entry_guards);
+ node = smartlist_choose(live_entry_guards);
}
smartlist_free(live_entry_guards);
smartlist_free(exit_family);
- return r;
+ return node;
}
/** Parse <b>state</b> and learn about the entry guards it describes.
@@ -4308,7 +4337,7 @@ getinfo_helper_entry_guards(control_connection_t *conn,
char *c = tor_malloc(len);
const char *status = NULL;
time_t when = 0;
- routerinfo_t *ri;
+ const node_t *node;
if (!e->made_contact) {
status = "never-connected";
@@ -4319,9 +4348,9 @@ getinfo_helper_entry_guards(control_connection_t *conn,
status = "up";
}
- ri = router_get_by_digest(e->identity);
- if (ri) {
- router_get_verbose_nickname(nbuf, ri);
+ node = node_get_by_id(e->identity);
+ if (node) {
+ node_get_verbose_nickname(node, nbuf);
} else {
nbuf[0] = '$';
base16_encode(nbuf+1, sizeof(nbuf)-1, e->identity, DIGEST_LEN);
@@ -4398,7 +4427,7 @@ get_configured_bridge_by_addr_port_digest(tor_addr_t *addr, uint16_t port,
/** Wrapper around get_configured_bridge_by_addr_port_digest() to look
* it up via router descriptor <b>ri</b>. */
static bridge_info_t *
-get_configured_bridge_by_routerinfo(routerinfo_t *ri)
+get_configured_bridge_by_routerinfo(const routerinfo_t *ri)
{
tor_addr_t addr;
tor_addr_from_ipv4h(&addr, ri->addr);
@@ -4408,7 +4437,7 @@ get_configured_bridge_by_routerinfo(routerinfo_t *ri)
/** Return 1 if <b>ri</b> is one of our known bridges, else 0. */
int
-routerinfo_is_a_configured_bridge(routerinfo_t *ri)
+routerinfo_is_a_configured_bridge(const routerinfo_t *ri)
{
return get_configured_bridge_by_routerinfo(ri) ? 1 : 0;
}
@@ -4567,14 +4596,17 @@ learned_bridge_descriptor(routerinfo_t *ri, int from_cache)
int first = !any_bridge_descriptors_known();
bridge_info_t *bridge = get_configured_bridge_by_routerinfo(ri);
time_t now = time(NULL);
- ri->is_running = 1;
+ router_set_status(ri->cache_info.identity_digest, 1);
if (bridge) { /* if we actually want to use this one */
+ const node_t *node;
/* it's here; schedule its re-fetch for a long time from now. */
if (!from_cache)
download_status_reset(&bridge->fetch_status);
- add_an_entry_guard(ri, 1);
+ node = node_get_by_id(ri->cache_info.identity_digest);
+ tor_assert(node);
+ add_an_entry_guard(node, 1);
log_notice(LD_DIR, "new bridge descriptor '%s' (%s)", ri->nickname,
from_cache ? "cached" : "fresh");
/* set entry->made_contact so if it goes down we don't drop it from
@@ -4628,19 +4660,18 @@ any_pending_bridge_descriptor_fetches(void)
static int
entries_retry_helper(or_options_t *options, int act)
{
- routerinfo_t *ri;
+ const node_t *node;
int any_known = 0;
int any_running = 0;
- int purpose = options->UseBridges ?
- ROUTER_PURPOSE_BRIDGE : ROUTER_PURPOSE_GENERAL;
+ int need_bridges = options->UseBridges != 0;
if (!entry_guards)
entry_guards = smartlist_create();
- SMARTLIST_FOREACH(entry_guards, entry_guard_t *, e,
- {
- ri = router_get_by_digest(e->identity);
- if (ri && ri->purpose == purpose) {
+ SMARTLIST_FOREACH_BEGIN(entry_guards, entry_guard_t *, e) {
+ node = node_get_by_id(e->identity);
+ if (node && node_has_descriptor(node) &&
+ node_is_bridge(node) == need_bridges) {
any_known = 1;
- if (ri->is_running)
+ if (node->is_running)
any_running = 1; /* some entry is both known and running */
else if (act) {
/* Mark all current connections to this OR as unhealthy, since
@@ -4649,15 +4680,15 @@ entries_retry_helper(or_options_t *options, int act)
* the node down and undermine the retry attempt. We mark even
* the established conns, since if the network just came back
* we'll want to attach circuits to fresh conns. */
- connection_or_set_bad_connections(ri->cache_info.identity_digest, 1);
+ connection_or_set_bad_connections(node->identity, 1);
/* mark this entry node for retry */
- router_set_status(ri->cache_info.identity_digest, 1);
+ router_set_status(node->identity, 1);
e->can_retry = 1;
e->bad_since = 0;
}
}
- });
+ } SMARTLIST_FOREACH_END(e);
log_debug(LD_DIR, "%d: any_known %d, any_running %d",
act, any_known, any_running);
return any_known && !any_running;
diff --git a/src/or/circuitbuild.h b/src/or/circuitbuild.h
index 888bf9d25..7c125e96b 100644
--- a/src/or/circuitbuild.h
+++ b/src/or/circuitbuild.h
@@ -44,10 +44,11 @@ void onion_append_to_cpath(crypt_path_t **head_ptr, crypt_path_t *new_hop);
extend_info_t *extend_info_alloc(const char *nickname, const char *digest,
crypto_pk_env_t *onion_key,
const tor_addr_t *addr, uint16_t port);
-extend_info_t *extend_info_from_router(routerinfo_t *r);
+extend_info_t *extend_info_from_router(const routerinfo_t *r);
+extend_info_t *extend_info_from_node(const node_t *node);
extend_info_t *extend_info_dup(extend_info_t *info);
void extend_info_free(extend_info_t *info);
-routerinfo_t *build_state_get_exit_router(cpath_build_state_t *state);
+const node_t *build_state_get_exit_node(cpath_build_state_t *state);
const char *build_state_get_exit_nickname(cpath_build_state_t *state);
void entry_guards_compute_status(or_options_t *options, time_t now);
@@ -55,7 +56,7 @@ int entry_guard_register_connect_status(const char *digest, int succeeded,
int mark_relay_status, time_t now);
void entry_nodes_should_be_added(void);
int entry_list_is_constrained(or_options_t *options);
-routerinfo_t *choose_random_entry(cpath_build_state_t *state);
+const node_t *choose_random_entry(cpath_build_state_t *state);
int entry_guards_parse_state(or_state_t *state, int set, char **msg);
void entry_guards_update_state(or_state_t *state);
int getinfo_helper_entry_guards(control_connection_t *conn,
@@ -63,9 +64,9 @@ int getinfo_helper_entry_guards(control_connection_t *conn,
const char **errmsg);
void clear_bridge_list(void);
-int routerinfo_is_a_configured_bridge(routerinfo_t *ri);
-void
-learned_router_identity(tor_addr_t *addr, uint16_t port, const char *digest);
+int routerinfo_is_a_configured_bridge(const routerinfo_t *ri);
+void learned_router_identity(tor_addr_t *addr, uint16_t port,
+ const char *digest);
void bridge_add_from_config(const tor_addr_t *addr, uint16_t port,
char *digest);
void retry_bridge_descriptor_fetch_directly(const char *digest);
diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c
index fb4b69be0..205b0a89a 100644
--- a/src/or/circuitlist.c
+++ b/src/or/circuitlist.c
@@ -19,6 +19,7 @@
#include "connection_or.h"
#include "control.h"
#include "networkstatus.h"
+#include "nodelist.h"
#include "onion.h"
#include "relay.h"
#include "rendclient.h"
@@ -86,10 +87,7 @@ orconn_circid_circuit_map_t *_last_circid_orconn_ent = NULL;
/** Implementation helper for circuit_set_{p,n}_circid_orconn: A circuit ID
* and/or or_connection for circ has just changed from <b>old_conn, old_id</b>
* to <b>conn, id</b>. Adjust the conn,circid map as appropriate, removing
- * the old entry (if any) and adding a new one. If <b>active</b> is true,
- * remove the circuit from the list of active circuits on old_conn and add it
- * to the list of active circuits on conn.
- * XXX "active" isn't an arg anymore */
+ * the old entry (if any) and adding a new one. */
static void
circuit_set_circid_orconn_helper(circuit_t *circ, int direction,
circid_t id,
@@ -396,8 +394,7 @@ circuit_initial_package_window(void)
static void
init_circuit_base(circuit_t *circ)
{
- circ->timestamp_created = time(NULL);
- tor_gettimeofday(&circ->highres_created);
+ tor_gettimeofday(&circ->timestamp_created);
circ->package_window = circuit_initial_package_window();
circ->deliver_window = CIRCWINDOW_START;
@@ -609,7 +606,8 @@ circuit_dump_details(int severity, circuit_t *circ, int conn_array_index,
log(severity, LD_CIRC, "Conn %d has %s circuit: circID %d (other side %d), "
"state %d (%s), born %d:",
conn_array_index, type, this_circid, other_circid, circ->state,
- circuit_state_to_string(circ->state), (int)circ->timestamp_created);
+ circuit_state_to_string(circ->state),
+ (int)circ->timestamp_created.tv_sec);
if (CIRCUIT_IS_ORIGIN(circ)) { /* circ starts at this node */
circuit_log_path(severity, LD_CIRC, TO_ORIGIN_CIRCUIT(circ));
}
@@ -946,15 +944,15 @@ circuit_find_to_cannibalize(uint8_t purpose, extend_info_t *info,
if (info) {
/* need to make sure we don't duplicate hops */
crypt_path_t *hop = circ->cpath;
- routerinfo_t *ri1 = router_get_by_digest(info->identity_digest);
+ const node_t *ri1 = node_get_by_id(info->identity_digest);
do {
- routerinfo_t *ri2;
+ const node_t *ri2;
if (!memcmp(hop->extend_info->identity_digest,
info->identity_digest, DIGEST_LEN))
goto next;
if (ri1 &&
- (ri2 = router_get_by_digest(hop->extend_info->identity_digest))
- && routers_in_same_family(ri1, ri2))
+ (ri2 = node_get_by_id(hop->extend_info->identity_digest))
+ && nodes_in_same_family(ri1, ri2))
goto next;
hop=hop->next;
} while (hop!=circ->cpath);
diff --git a/src/or/circuituse.c b/src/or/circuituse.c
index 3af0fb642..542656350 100644
--- a/src/or/circuituse.c
+++ b/src/or/circuituse.c
@@ -17,6 +17,7 @@
#include "connection.h"
#include "connection_edge.h"
#include "control.h"
+#include "nodelist.h"
#include "policies.h"
#include "rendclient.h"
#include "rendcommon.h"
@@ -43,7 +44,7 @@ circuit_is_acceptable(circuit_t *circ, edge_connection_t *conn,
int need_uptime, int need_internal,
time_t now)
{
- routerinfo_t *exitrouter;
+ const node_t *exitnode;
cpath_build_state_t *build_state;
tor_assert(circ);
tor_assert(conn);
@@ -85,7 +86,7 @@ circuit_is_acceptable(circuit_t *circ, edge_connection_t *conn,
* of the one we meant to finish at.
*/
build_state = TO_ORIGIN_CIRCUIT(circ)->build_state;
- exitrouter = build_state_get_exit_router(build_state);
+ exitnode = build_state_get_exit_node(build_state);
if (need_uptime && !build_state->need_uptime)
return 0;
@@ -93,7 +94,7 @@ circuit_is_acceptable(circuit_t *circ, edge_connection_t *conn,
return 0;
if (purpose == CIRCUIT_PURPOSE_C_GENERAL) {
- if (!exitrouter && !build_state->onehop_tunnel) {
+ if (!exitnode && !build_state->onehop_tunnel) {
log_debug(LD_CIRC,"Not considering circuit with unknown router.");
return 0; /* this circuit is screwed and doesn't know it yet,
* or is a rendezvous circuit. */
@@ -127,7 +128,7 @@ circuit_is_acceptable(circuit_t *circ, edge_connection_t *conn,
return 0;
}
}
- if (exitrouter && !connection_ap_can_use_exit(conn, exitrouter, 0)) {
+ if (exitnode && !connection_ap_can_use_exit(conn, exitnode, 0)) {
/* can't exit from this router */
return 0;
}
@@ -162,7 +163,7 @@ circuit_is_better(circuit_t *a, circuit_t *b, uint8_t purpose)
return 1;
} else {
if (a->timestamp_dirty ||
- a->timestamp_created > b->timestamp_created)
+ tor_timercmp(&a->timestamp_created, &b->timestamp_created, >))
return 1;
if (CIRCUIT_IS_ORIGIN(b) &&
TO_ORIGIN_CIRCUIT(b)->build_state->is_internal)
@@ -222,8 +223,8 @@ circuit_get_best(edge_connection_t *conn, int must_be_open, uint8_t purpose,
* seen lately, a la Fallon Chen's GSoC work -RD */
#define REND_PARALLEL_INTRO_DELAY 15
if (purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT &&
- !must_be_open && circ->state != CIRCUIT_STATE_OPEN &&
- circ->timestamp_created + REND_PARALLEL_INTRO_DELAY < now) {
+ !must_be_open && circ->state != CIRCUIT_STATE_OPEN &&
+ circ->timestamp_created.tv_sec + REND_PARALLEL_INTRO_DELAY < now) {
intro_going_on_but_too_old = 1;
continue;
}
@@ -312,14 +313,14 @@ circuit_expire_building(time_t now)
else
cutoff = general_cutoff;
- if (victim->timestamp_created > cutoff)
+ if (victim->timestamp_created.tv_sec > cutoff)
continue; /* it's still young, leave it alone */
#if 0
/* some debug logs, to help track bugs */
if (victim->purpose == CIRCUIT_PURPOSE_C_INTRODUCING &&
- victim->timestamp_created <= introcirc_cutoff &&
- victim->timestamp_created > general_cutoff)
+ victim->timestamp_created.tv_sec <= introcirc_cutoff &&
+ victim->timestamp_created.tv_sec > general_cutoff)
log_info(LD_REND|LD_CIRC, "Timing out introduction circuit which we "
"would not have done if it had been a general circuit.");
@@ -407,15 +408,16 @@ circuit_expire_building(time_t now)
* it off at, we probably had a suspend event along this codepath,
* and we should discard the value.
*/
- if (now - victim->timestamp_created > 2*circ_times.close_ms/1000+1) {
+ if (now - victim->timestamp_created.tv_sec >
+ 2*circ_times.close_ms/1000+1) {
log_notice(LD_CIRC,
"Extremely large value for circuit build timeout: %lds. "
"Assuming clock jump. Purpose %d",
- (long)(now - victim->timestamp_created),
+ (long)(now - victim->timestamp_created.tv_sec),
victim->purpose);
} else if (circuit_build_times_count_close(&circ_times,
- first_hop_succeeded,
- victim->timestamp_created)) {
+ first_hop_succeeded,
+ victim->timestamp_created.tv_sec)) {
circuit_build_times_set_timeout(&circ_times);
}
}
@@ -473,7 +475,7 @@ circuit_stream_is_being_handled(edge_connection_t *conn,
uint16_t port, int min)
{
circuit_t *circ;
- routerinfo_t *exitrouter;
+ const node_t *exitnode;
int num=0;
time_t now = time(NULL);
int need_uptime = smartlist_string_num_isin(get_options()->LongLivedPorts,
@@ -489,14 +491,14 @@ circuit_stream_is_being_handled(edge_connection_t *conn,
if (build_state->is_internal || build_state->onehop_tunnel)
continue;
- exitrouter = build_state_get_exit_router(build_state);
- if (exitrouter && (!need_uptime || build_state->need_uptime)) {
+ exitnode = build_state_get_exit_node(build_state);
+ if (exitnode && (!need_uptime || build_state->need_uptime)) {
int ok;
if (conn) {
- ok = connection_ap_can_use_exit(conn, exitrouter, 0);
+ ok = connection_ap_can_use_exit(conn, exitnode, 0);
} else {
- addr_policy_result_t r = compare_addr_to_addr_policy(
- 0, port, exitrouter->exit_policy);
+ addr_policy_result_t r;
+ r = compare_addr_to_node_policy(0, port, exitnode);
ok = r != ADDR_POLICY_REJECTED && r != ADDR_POLICY_PROBABLY_REJECTED;
}
if (ok) {
@@ -563,7 +565,7 @@ circuit_predict_and_launch_new(void)
log_info(LD_CIRC,
"Have %d clean circs (%d internal), need another exit circ.",
num, num_internal);
- circuit_launch_by_router(CIRCUIT_PURPOSE_C_GENERAL, NULL, flags);
+ circuit_launch(CIRCUIT_PURPOSE_C_GENERAL, flags);
return;
}
@@ -575,7 +577,7 @@ circuit_predict_and_launch_new(void)
"Have %d clean circs (%d internal), need another internal "
"circ for my hidden service.",
num, num_internal);
- circuit_launch_by_router(CIRCUIT_PURPOSE_C_GENERAL, NULL, flags);
+ circuit_launch(CIRCUIT_PURPOSE_C_GENERAL, flags);
return;
}
@@ -593,7 +595,7 @@ circuit_predict_and_launch_new(void)
"Have %d clean circs (%d uptime-internal, %d internal), need"
" another hidden service circ.",
num, num_uptime_internal, num_internal);
- circuit_launch_by_router(CIRCUIT_PURPOSE_C_GENERAL, NULL, flags);
+ circuit_launch(CIRCUIT_PURPOSE_C_GENERAL, flags);
return;
}
@@ -606,7 +608,7 @@ circuit_predict_and_launch_new(void)
flags = CIRCLAUNCH_NEED_CAPACITY;
log_info(LD_CIRC,
"Have %d clean circs need another buildtime test circ.", num);
- circuit_launch_by_router(CIRCUIT_PURPOSE_C_GENERAL, NULL, flags);
+ circuit_launch(CIRCUIT_PURPOSE_C_GENERAL, flags);
return;
}
}
@@ -642,9 +644,9 @@ circuit_build_needed_circs(time_t now)
circ = circuit_get_youngest_clean_open(CIRCUIT_PURPOSE_C_GENERAL);
if (get_options()->RunTesting &&
circ &&
- circ->timestamp_created + TESTING_CIRCUIT_INTERVAL < now) {
+ circ->timestamp_created.tv_sec + TESTING_CIRCUIT_INTERVAL < now) {
log_fn(LOG_INFO,"Creating a new testing circuit.");
- circuit_launch_by_router(CIRCUIT_PURPOSE_C_GENERAL, NULL, 0);
+ circuit_launch(CIRCUIT_PURPOSE_C_GENERAL, 0);
}
#endif
}
@@ -753,7 +755,7 @@ circuit_expire_old_circuits_clientside(time_t now)
circ->purpose);
circuit_mark_for_close(circ, END_CIRC_REASON_FINISHED);
} else if (!circ->timestamp_dirty && circ->state == CIRCUIT_STATE_OPEN) {
- if (circ->timestamp_created < cutoff) {
+ if (circ->timestamp_created.tv_sec < cutoff) {
if (circ->purpose == CIRCUIT_PURPOSE_C_GENERAL ||
circ->purpose == CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT ||
circ->purpose == CIRCUIT_PURPOSE_S_ESTABLISH_INTRO ||
@@ -763,7 +765,7 @@ circuit_expire_old_circuits_clientside(time_t now)
circ->purpose == CIRCUIT_PURPOSE_S_CONNECT_REND) {
log_debug(LD_CIRC,
"Closing circuit that has been unused for %ld seconds.",
- (long)(now - circ->timestamp_created));
+ (long)(now - circ->timestamp_created.tv_sec));
circuit_mark_for_close(circ, END_CIRC_REASON_FINISHED);
} else if (!TO_ORIGIN_CIRCUIT(circ)->is_ancient) {
/* Server-side rend joined circuits can end up really old, because
@@ -777,7 +779,7 @@ circuit_expire_old_circuits_clientside(time_t now)
"Ancient non-dirty circuit %d is still around after "
"%ld seconds. Purpose: %d",
TO_ORIGIN_CIRCUIT(circ)->global_identifier,
- (long)(now - circ->timestamp_created),
+ (long)(now - circ->timestamp_created.tv_sec),
circ->purpose);
/* FFFF implement a new circuit_purpose_to_string() so we don't
* just print out a number for circ->purpose */
@@ -1076,17 +1078,9 @@ static int did_circs_fail_last_period = 0;
/** Launch a new circuit; see circuit_launch_by_extend_info() for
* details on arguments. */
origin_circuit_t *
-circuit_launch_by_router(uint8_t purpose,
- routerinfo_t *exit, int flags)
+circuit_launch(uint8_t purpose, int flags)
{
- origin_circuit_t *circ;
- extend_info_t *info = NULL;
- if (exit)
- info = extend_info_from_router(exit);
- circ = circuit_launch_by_extend_info(purpose, info, flags);
-
- extend_info_free(info);
- return circ;
+ return circuit_launch_by_extend_info(purpose, NULL, flags);
}
/** Launch a new circuit with purpose <b>purpose</b> and exit node
@@ -1123,7 +1117,7 @@ circuit_launch_by_extend_info(uint8_t purpose,
/* reset the birth date of this circ, else expire_building
* will see it and think it's been trying to build since it
* began. */
- circ->_base.timestamp_created = time(NULL);
+ tor_gettimeofday(&circ->_base.timestamp_created);
switch (purpose) {
case CIRCUIT_PURPOSE_C_ESTABLISH_REND:
case CIRCUIT_PURPOSE_S_ESTABLISH_INTRO:
@@ -1256,9 +1250,9 @@ circuit_get_open_circ_or_launch(edge_connection_t *conn,
uint32_t addr = 0;
if (tor_inet_aton(conn->socks_request->address, &in))
addr = ntohl(in.s_addr);
- if (router_exit_policy_all_routers_reject(addr,
- conn->socks_request->port,
- need_uptime)) {
+ if (router_exit_policy_all_nodes_reject(addr,
+ conn->socks_request->port,
+ need_uptime)) {
log_notice(LD_APP,
"No Tor server allows exit to %s:%d. Rejecting.",
safe_str_client(conn->socks_request->address),
@@ -1267,9 +1261,9 @@ circuit_get_open_circ_or_launch(edge_connection_t *conn,
}
} else {
/* XXXX022 Duplicates checks in connection_ap_handshake_attach_circuit */
- routerinfo_t *router = router_get_by_nickname(conn->chosen_exit_name, 1);
+ const node_t *node = node_get_by_nickname(conn->chosen_exit_name, 1);
int opt = conn->chosen_exit_optional;
- if (router && !connection_ap_can_use_exit(conn, router, 0)) {
+ if (node && !connection_ap_can_use_exit(conn, node, 0)) {
log_fn(opt ? LOG_INFO : LOG_WARN, LD_APP,
"Requested exit point '%s' would refuse request. %s.",
conn->chosen_exit_name, opt ? "Trying others" : "Closing");
@@ -1317,11 +1311,11 @@ circuit_get_open_circ_or_launch(edge_connection_t *conn,
*/
if (desired_circuit_purpose == CIRCUIT_PURPOSE_C_GENERAL) {
if (conn->chosen_exit_name) {
- routerinfo_t *r;
+ const node_t *r;
int opt = conn->chosen_exit_optional;
- r = router_get_by_nickname(conn->chosen_exit_name, 1);
- if (r) {
- extend_info = extend_info_from_router(r);
+ r = node_get_by_nickname(conn->chosen_exit_name, 1);
+ if (r && node_has_descriptor(r)) {
+ extend_info = extend_info_from_node(r);
} else {
log_debug(LD_DIR, "considering %d, %s",
want_onehop, conn->chosen_exit_name);
@@ -1571,9 +1565,9 @@ connection_ap_handshake_attach_circuit(edge_connection_t *conn)
origin_circuit_t *circ=NULL;
if (conn->chosen_exit_name) {
- routerinfo_t *router = router_get_by_nickname(conn->chosen_exit_name, 1);
+ const node_t *node = node_get_by_nickname(conn->chosen_exit_name, 1);
int opt = conn->chosen_exit_optional;
- if (!router && !want_onehop) {
+ if (!node && !want_onehop) {
/* We ran into this warning when trying to extend a circuit to a
* hidden service directory for which we didn't have a router
* descriptor. See flyspray task 767 for more details. We should
@@ -1589,7 +1583,7 @@ connection_ap_handshake_attach_circuit(edge_connection_t *conn)
}
return -1;
}
- if (router && !connection_ap_can_use_exit(conn, router, 0)) {
+ if (node && !connection_ap_can_use_exit(conn, node, 0)) {
log_fn(opt ? LOG_INFO : LOG_WARN, LD_APP,
"Requested exit point '%s' would refuse request. %s.",
conn->chosen_exit_name, opt ? "Trying others" : "Closing");
diff --git a/src/or/circuituse.h b/src/or/circuituse.h
index 269b6c5f8..4e4cd1a4d 100644
--- a/src/or/circuituse.h
+++ b/src/or/circuituse.h
@@ -41,8 +41,7 @@ void circuit_build_failed(origin_circuit_t *circ);
origin_circuit_t *circuit_launch_by_extend_info(uint8_t purpose,
extend_info_t *info,
int flags);
-origin_circuit_t *circuit_launch_by_router(uint8_t purpose,
- routerinfo_t *exit, int flags);
+origin_circuit_t *circuit_launch(uint8_t purpose, int flags);
void circuit_reset_failure_count(int timeout);
int connection_ap_handshake_attach_chosen_circuit(edge_connection_t *conn,
origin_circuit_t *circ,
diff --git a/src/or/command.c b/src/or/command.c
index ea0bbea1e..60c9184b5 100644
--- a/src/or/command.c
+++ b/src/or/command.c
@@ -25,6 +25,7 @@
#include "control.h"
#include "cpuworker.h"
#include "hibernate.h"
+#include "nodelist.h"
#include "onion.h"
#include "relay.h"
#include "router.h"
@@ -267,15 +268,18 @@ command_process_create_cell(cell_t *cell, or_connection_t *conn)
}
if (circuit_id_in_use_on_orconn(cell->circ_id, conn)) {
- routerinfo_t *router = router_get_by_digest(conn->identity_digest);
+ const node_t *node = node_get_by_id(conn->identity_digest);
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Received CREATE cell (circID %d) for known circ. "
"Dropping (age %d).",
cell->circ_id, (int)(time(NULL) - conn->_base.timestamp_created));
- if (router)
+ if (node) {
+ char *p = esc_for_log(node_get_platform(node));
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Details: nickname \"%s\", platform %s.",
- router->nickname, escaped(router->platform));
+ node_get_nickname(node), p);
+ tor_free(p);
+ }
return;
}
@@ -618,7 +622,7 @@ command_process_netinfo_cell(cell_t *cell, or_connection_t *conn)
/** Warn when we get a netinfo skew with at least this value. */
#define NETINFO_NOTICE_SKEW 3600
if (labs(apparent_skew) > NETINFO_NOTICE_SKEW &&
- router_get_by_digest(conn->identity_digest)) {
+ router_get_by_id_digest(conn->identity_digest)) {
char dbuf[64];
int severity;
/*XXXX be smarter about when everybody says we are skewed. */
diff --git a/src/or/config.c b/src/or/config.c
index 25f07edce..6a4e2c464 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -419,6 +419,7 @@ static config_var_t testing_tor_network_defaults[] = {
V(TestingV3AuthInitialDistDelay, INTERVAL, "20 seconds"),
V(TestingAuthDirTimeToLearnReachability, INTERVAL, "0 minutes"),
V(TestingEstimatedDescriptorPropagationTime, INTERVAL, "0 minutes"),
+ V(MinUptimeHidServDirectoryV2, INTERVAL, "0 minutes"),
{ NULL, CONFIG_TYPE_OBSOLETE, 0, NULL }
};
#undef VAR
@@ -695,6 +696,11 @@ or_options_free(or_options_t *options)
return;
routerset_free(options->_ExcludeExitNodesUnion);
+ if (options->NodeFamilySets) {
+ SMARTLIST_FOREACH(options->NodeFamilySets, routerset_t *,
+ rs, routerset_free(rs));
+ smartlist_free(options->NodeFamilySets);
+ }
config_free(&options_format, options);
}
@@ -2354,7 +2360,7 @@ resolve_my_address(int warn_severity, or_options_t *options,
int explicit_ip=1;
int explicit_hostname=1;
int from_interface=0;
- char tmpbuf[INET_NTOA_BUF_LEN];
+ char *addr_string = NULL;
const char *address = options->Address;
int notice_severity = warn_severity <= LOG_NOTICE ?
LOG_NOTICE : warn_severity;
@@ -2396,49 +2402,43 @@ resolve_my_address(int warn_severity, or_options_t *options,
return -1;
}
from_interface = 1;
- in.s_addr = htonl(interface_ip);
- tor_inet_ntoa(&in,tmpbuf,sizeof(tmpbuf));
+ addr = interface_ip;
log_fn(notice_severity, LD_CONFIG, "Learned IP address '%s' for "
- "local interface. Using that.", tmpbuf);
+ "local interface. Using that.", fmt_addr32(addr));
strlcpy(hostname, "<guessed from interfaces>", sizeof(hostname));
} else { /* resolved hostname into addr */
- in.s_addr = htonl(addr);
-
if (!explicit_hostname &&
- is_internal_IP(ntohl(in.s_addr), 0)) {
+ is_internal_IP(addr, 0)) {
uint32_t interface_ip;
- tor_inet_ntoa(&in,tmpbuf,sizeof(tmpbuf));
log_fn(notice_severity, LD_CONFIG, "Guessed local hostname '%s' "
- "resolves to a private IP address (%s). Trying something "
- "else.", hostname, tmpbuf);
+ "resolves to a private IP address (%s). Trying something "
+ "else.", hostname, fmt_addr32(addr));
if (get_interface_address(warn_severity, &interface_ip)) {
log_fn(warn_severity, LD_CONFIG,
"Could not get local interface IP address. Too bad.");
} else if (is_internal_IP(interface_ip, 0)) {
- struct in_addr in2;
- in2.s_addr = htonl(interface_ip);
- tor_inet_ntoa(&in2,tmpbuf,sizeof(tmpbuf));
log_fn(notice_severity, LD_CONFIG,
"Interface IP address '%s' is a private address too. "
- "Ignoring.", tmpbuf);
+ "Ignoring.", fmt_addr32(interface_ip));
} else {
from_interface = 1;
- in.s_addr = htonl(interface_ip);
- tor_inet_ntoa(&in,tmpbuf,sizeof(tmpbuf));
+ addr = interface_ip;
log_fn(notice_severity, LD_CONFIG,
"Learned IP address '%s' for local interface."
- " Using that.", tmpbuf);
+ " Using that.", fmt_addr32(addr));
strlcpy(hostname, "<guessed from interfaces>", sizeof(hostname));
}
}
}
+ } else {
+ addr = ntohl(in.s_addr); /* set addr so that addr_string is not
+ * illformed */
}
- tor_inet_ntoa(&in,tmpbuf,sizeof(tmpbuf));
- if (is_internal_IP(ntohl(in.s_addr), 0) &&
- options->_PublishServerDescriptor) {
+ addr_string = tor_dup_ip(addr);
+ if (is_internal_IP(addr, 0) && options->_PublishServerDescriptor) {
/* make sure we're ok with publishing an internal IP */
if (!options->DirServers && !options->AlternateDirAuthority) {
/* if they are using the default dirservers, disallow internal IPs
@@ -2446,7 +2446,8 @@ resolve_my_address(int warn_severity, or_options_t *options,
log_fn(warn_severity, LD_CONFIG,
"Address '%s' resolves to private IP address '%s'. "
"Tor servers that use the default DirServers must have public "
- "IP addresses.", hostname, tmpbuf);
+ "IP addresses.", hostname, addr_string);
+ tor_free(addr_string);
return -1;
}
if (!explicit_ip) {
@@ -2454,19 +2455,20 @@ resolve_my_address(int warn_severity, or_options_t *options,
* they're using an internal address. */
log_fn(warn_severity, LD_CONFIG, "Address '%s' resolves to private "
"IP address '%s'. Please set the Address config option to be "
- "the IP address you want to use.", hostname, tmpbuf);
+ "the IP address you want to use.", hostname, addr_string);
+ tor_free(addr_string);
return -1;
}
}
- log_debug(LD_CONFIG, "Resolved Address to '%s'.", tmpbuf);
- *addr_out = ntohl(in.s_addr);
+ log_debug(LD_CONFIG, "Resolved Address to '%s'.", fmt_addr32(addr));
+ *addr_out = addr;
if (last_resolved_addr && last_resolved_addr != *addr_out) {
/* Leave this as a notice, regardless of the requested severity,
* at least until dynamic IP address support becomes bulletproof. */
log_notice(LD_NET,
"Your IP address seems to have changed to %s. Updating.",
- tmpbuf);
+ addr_string);
ip_address_changed(0);
}
if (last_resolved_addr != *addr_out) {
@@ -2485,11 +2487,12 @@ resolve_my_address(int warn_severity, or_options_t *options,
}
control_event_server_status(LOG_NOTICE,
"EXTERNAL_ADDRESS ADDRESS=%s METHOD=%s %s%s",
- tmpbuf, method, h?"HOSTNAME=":"", h);
+ addr_string, method, h?"HOSTNAME=":"", h);
}
last_resolved_addr = *addr_out;
if (hostname_out)
*hostname_out = tor_strdup(hostname);
+ tor_free(addr_string);
return 0;
}
@@ -3102,17 +3105,24 @@ options_validate(or_options_t *old_options, or_options_t *options,
routerset_union(options->_ExcludeExitNodesUnion,options->ExcludeNodes);
}
+ if (options->NodeFamilies) {
+ options->NodeFamilySets = smartlist_create();
+ for (cl = options->NodeFamilies; cl; cl = cl->next) {
+ routerset_t *rs = routerset_new();
+ if (routerset_parse(rs, cl->value, cl->key) == 0) {
+ smartlist_add(options->NodeFamilySets, rs);
+ } else {
+ routerset_free(rs);
+ }
+ }
+ }
+
if (options->ExcludeNodes && options->StrictNodes) {
COMPLAIN("You have asked to exclude certain relays from all positions "
"in your circuits. Expect hidden services and other Tor "
"features to be broken in unpredictable ways.");
}
- if (options->EntryNodes && !routerset_is_list(options->EntryNodes)) {
- /* XXXX fix this; see entry_guards_prepend_from_config(). */
- REJECT("IPs or countries are not yet supported in EntryNodes.");
- }
-
if (options->AuthoritativeDir) {
if (!options->ContactInfo && !options->TestingTorNetwork)
REJECT("Authoritative directory servers must set ContactInfo");
@@ -3567,8 +3577,12 @@ options_validate(or_options_t *old_options, or_options_t *options,
if (check_nickname_list(options->MyFamily, "MyFamily", msg))
return -1;
for (cl = options->NodeFamilies; cl; cl = cl->next) {
- if (check_nickname_list(cl->value, "NodeFamily", msg))
+ routerset_t *rs = routerset_new();
+ if (routerset_parse(rs, cl->value, cl->key)) {
+ routerset_free(rs);
return -1;
+ }
+ routerset_free(rs);
}
if (validate_addr_policies(options, msg) < 0)
diff --git a/src/or/connection.c b/src/or/connection.c
index d1b079a97..52996e8ea 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -1281,7 +1281,7 @@ connection_connect(connection_t *conn, const char *address,
int s, inprogress = 0;
char addrbuf[256];
struct sockaddr *dest_addr = (struct sockaddr*) addrbuf;
- socklen_t dest_addr_len;
+ int dest_addr_len;
or_options_t *options = get_options();
int protocol_family;
@@ -1337,7 +1337,7 @@ connection_connect(connection_t *conn, const char *address,
log_debug(LD_NET, "Connecting to %s:%u.",
escaped_safe_str_client(address), port);
- if (connect(s, dest_addr, dest_addr_len) < 0) {
+ if (connect(s, dest_addr, (socklen_t)dest_addr_len) < 0) {
int e = tor_socket_errno(s);
if (!ERRNO_IS_CONN_EINPROGRESS(e)) {
/* yuck. kill it. */
diff --git a/src/or/connection.h b/src/or/connection.h
index 004ede5d0..dc8c5df81 100644
--- a/src/or/connection.h
+++ b/src/or/connection.h
@@ -34,15 +34,21 @@ void _connection_mark_for_close(connection_t *conn,int line, const char *file);
#define connection_mark_for_close(c) \
_connection_mark_for_close((c), __LINE__, _SHORT_FILE_)
-#define connection_mark_and_flush(c) \
+/**
+ * Mark 'c' for close, but try to hold it open until all the data is written.
+ */
+#define _connection_mark_and_flush(c,line,file) \
do { \
connection_t *tmp_conn_ = (c); \
- _connection_mark_for_close(tmp_conn_, __LINE__, _SHORT_FILE_); \
+ _connection_mark_for_close(tmp_conn_, (line), (file)); \
tmp_conn_->hold_open_until_flushed = 1; \
IF_HAS_BUFFEREVENT(tmp_conn_, \
connection_start_writing(tmp_conn_)); \
} while (0)
+#define connection_mark_and_flush(c) \
+ _connection_mark_and_flush((c), __LINE__, _SHORT_FILE_)
+
void connection_expire_held_open(void);
int connection_connect(connection_t *conn, const char *address,
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c
index 9627631ad..22711d6ae 100644
--- a/src/or/connection_edge.c
+++ b/src/or/connection_edge.c
@@ -23,6 +23,7 @@
#include "dirserv.h"
#include "hibernate.h"
#include "main.h"
+#include "nodelist.h"
#include "policies.h"
#include "reasons.h"
#include "relay.h"
@@ -90,9 +91,8 @@ _connection_mark_unattached_ap(edge_connection_t *conn, int endreason,
conn->socks_request->has_finished = 1;
}
- _connection_mark_for_close(TO_CONN(conn), line, file);
- conn->_base.hold_open_until_flushed = 1;
- IF_HAS_BUFFEREVENT(TO_CONN(conn), connection_start_writing(TO_CONN(conn)));
+ _connection_mark_and_flush(TO_CONN(conn), line, file);
+
conn->end_reason = endreason;
}
@@ -587,7 +587,7 @@ void
circuit_discard_optional_exit_enclaves(extend_info_t *info)
{
edge_connection_t *edge_conn;
- routerinfo_t *r1, *r2;
+ const node_t *r1, *r2;
smartlist_t *conns = get_connection_array();
SMARTLIST_FOREACH_BEGIN(conns, connection_t *, conn) {
@@ -599,8 +599,8 @@ circuit_discard_optional_exit_enclaves(extend_info_t *info)
if (!edge_conn->chosen_exit_optional &&
!edge_conn->chosen_exit_retries)
continue;
- r1 = router_get_by_nickname(edge_conn->chosen_exit_name, 0);
- r2 = router_get_by_nickname(info->nickname, 0);
+ r1 = node_get_by_nickname(edge_conn->chosen_exit_name, 0);
+ r2 = node_get_by_id(info->identity_digest);
if (!r1 || !r2 || r1 != r2)
continue;
tor_assert(edge_conn->socks_request);
@@ -1185,7 +1185,6 @@ static char *
addressmap_get_virtual_address(int type)
{
char buf[64];
- struct in_addr in;
tor_assert(addressmap);
if (type == RESOLVED_TYPE_HOSTNAME) {
@@ -1206,9 +1205,7 @@ addressmap_get_virtual_address(int type)
(next_virtual_addr & 0xff) == 0xff) {
++next_virtual_addr;
}
- in.s_addr = htonl(next_virtual_addr);
- tor_inet_ntoa(&in, buf, sizeof(buf));
- if (!strmap_get(addressmap, buf)) {
+ if (!strmap_get(addressmap, fmt_addr32(next_virtual_addr))) {
++next_virtual_addr;
break;
}
@@ -1575,12 +1572,12 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn,
return -1;
}
} else {
- routerinfo_t *r;
+ const node_t *r;
conn->chosen_exit_name = tor_strdup(socks->address);
- r = router_get_by_nickname(conn->chosen_exit_name, 1);
+ r = node_get_by_nickname(conn->chosen_exit_name, 1);
*socks->address = 0;
if (r) {
- strlcpy(socks->address, r->address, sizeof(socks->address));
+ node_get_address_string(r, socks->address, sizeof(socks->address));
} else {
log_warn(LD_APP,
"Unrecognized server in exit address '%s.exit'. Refusing.",
@@ -1631,16 +1628,16 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn,
if (!conn->use_begindir && !conn->chosen_exit_name && !circ) {
/* see if we can find a suitable enclave exit */
- routerinfo_t *r =
+ const node_t *r =
router_find_exact_exit_enclave(socks->address, socks->port);
if (r) {
log_info(LD_APP,
"Redirecting address %s to exit at enclave router %s",
- safe_str_client(socks->address), r->nickname);
+ safe_str_client(socks->address), node_get_nickname(r));
/* use the hex digest, not nickname, in case there are two
routers with this nickname */
conn->chosen_exit_name =
- tor_strdup(hex_str(r->cache_info.identity_digest, DIGEST_LEN));
+ tor_strdup(hex_str(r->identity, DIGEST_LEN));
conn->chosen_exit_optional = 1;
}
}
@@ -2298,13 +2295,11 @@ tell_controller_about_resolved_result(edge_connection_t *conn,
answer_type == RESOLVED_TYPE_HOSTNAME)) {
return; /* we already told the controller. */
} else if (answer_type == RESOLVED_TYPE_IPV4 && answer_len >= 4) {
- struct in_addr in;
- char buf[INET_NTOA_BUF_LEN];
- in.s_addr = get_uint32(answer);
- tor_inet_ntoa(&in, buf, sizeof(buf));
+ char *cp = tor_dup_ip(get_uint32(answer));
control_event_address_mapped(conn->socks_request->address,
- buf, expires, NULL);
- } else if (answer_type == RESOLVED_TYPE_HOSTNAME && answer_len <256) {
+ cp, expires, NULL);
+ tor_free(cp);
+ } else if (answer_type == RESOLVED_TYPE_HOSTNAME && answer_len < 256) {
char *cp = tor_strndup(answer, answer_len);
control_event_address_mapped(conn->socks_request->address,
cp, expires, NULL);
@@ -2896,7 +2891,7 @@ connection_edge_is_rendezvous_stream(edge_connection_t *conn)
* this relay, return 0.
*/
int
-connection_ap_can_use_exit(edge_connection_t *conn, routerinfo_t *exit,
+connection_ap_can_use_exit(edge_connection_t *conn, const node_t *exit,
int excluded_means_no)
{
or_options_t *options = get_options();
@@ -2910,10 +2905,10 @@ connection_ap_can_use_exit(edge_connection_t *conn, routerinfo_t *exit,
* make sure the exit node of the existing circuit matches exactly.
*/
if (conn->chosen_exit_name) {
- routerinfo_t *chosen_exit =
- router_get_by_nickname(conn->chosen_exit_name, 1);
- if (!chosen_exit || memcmp(chosen_exit->cache_info.identity_digest,
- exit->cache_info.identity_digest, DIGEST_LEN)) {
+ const node_t *chosen_exit =
+ node_get_by_nickname(conn->chosen_exit_name, 1);
+ if (!chosen_exit || memcmp(chosen_exit->identity,
+ exit->identity, DIGEST_LEN)) {
/* doesn't match */
// log_debug(LD_APP,"Requested node '%s', considering node '%s'. No.",
// conn->chosen_exit_name, exit->nickname);
@@ -2928,8 +2923,7 @@ connection_ap_can_use_exit(edge_connection_t *conn, routerinfo_t *exit,
addr_policy_result_t r;
if (tor_inet_aton(conn->socks_request->address, &in))
addr = ntohl(in.s_addr);
- r = compare_addr_to_addr_policy(addr, conn->socks_request->port,
- exit->exit_policy);
+ r = compare_addr_to_node_policy(addr, conn->socks_request->port, exit);
if (r == ADDR_POLICY_REJECTED)
return 0; /* We know the address, and the exit policy rejects it. */
if (r == ADDR_POLICY_PROBABLY_REJECTED && !conn->chosen_exit_name)
@@ -2938,12 +2932,12 @@ connection_ap_can_use_exit(edge_connection_t *conn, routerinfo_t *exit,
* this node, err on the side of caution. */
} else if (SOCKS_COMMAND_IS_RESOLVE(conn->socks_request->command)) {
/* Don't send DNS requests to non-exit servers by default. */
- if (!conn->chosen_exit_name && policy_is_reject_star(exit->exit_policy))
+ if (!conn->chosen_exit_name && node_exit_policy_rejects_all(exit))
return 0;
}
if (options->_ExcludeExitNodesUnion &&
(options->StrictNodes || excluded_means_no) &&
- routerset_contains_router(options->_ExcludeExitNodesUnion, exit)) {
+ routerset_contains_node(options->_ExcludeExitNodesUnion, exit)) {
/* If we are trying to avoid this node as exit, and we have StrictNodes
* set, then this is not a suitable exit. Refuse it.
*
diff --git a/src/or/connection_edge.h b/src/or/connection_edge.h
index 0f7bf0780..f54d7a44e 100644
--- a/src/or/connection_edge.h
+++ b/src/or/connection_edge.h
@@ -47,7 +47,8 @@ int connection_exit_begin_conn(cell_t *cell, circuit_t *circ);
int connection_exit_begin_resolve(cell_t *cell, or_circuit_t *circ);
void connection_exit_connect(edge_connection_t *conn);
int connection_edge_is_rendezvous_stream(edge_connection_t *conn);
-int connection_ap_can_use_exit(edge_connection_t *conn, routerinfo_t *exit,
+int connection_ap_can_use_exit(edge_connection_t *conn,
+ const node_t *exit,
int excluded_means_no);
void connection_ap_expire_beginning(void);
void connection_ap_attach_pending(void);
diff --git a/src/or/connection_or.c b/src/or/connection_or.c
index 069c3e133..467f7be90 100644
--- a/src/or/connection_or.c
+++ b/src/or/connection_or.c
@@ -22,6 +22,7 @@
#include "geoip.h"
#include "main.h"
#include "networkstatus.h"
+#include "nodelist.h"
#include "reasons.h"
#include "relay.h"
#include "rephist.h"
@@ -41,6 +42,8 @@ static int connection_or_check_valid_tls_handshake(or_connection_t *conn,
int started_here,
char *digest_rcvd_out);
+static void connection_or_tls_renegotiated_cb(tor_tls_t *tls, void *_conn);
+
#ifdef USE_BUFFEREVENTS
static void connection_or_handle_event_cb(struct bufferevent *bufev,
short event, void *arg);
@@ -237,6 +240,12 @@ connection_or_process_inbuf(or_connection_t *conn)
}
return ret;
+ case OR_CONN_STATE_TLS_SERVER_RENEGOTIATING:
+ if (tor_tls_server_got_renegotiate(conn->tls))
+ connection_or_tls_renegotiated_cb(conn->tls, conn);
+ if (conn->_base.marked_for_close)
+ return 0;
+ /* fall through. */
case OR_CONN_STATE_OPEN:
case OR_CONN_STATE_OR_HANDSHAKING:
return connection_or_process_cells_from_inbuf(conn);
@@ -351,7 +360,7 @@ connection_or_digest_is_known_relay(const char *id_digest)
{
if (router_get_consensus_status_by_id(id_digest))
return 1; /* It's in the consensus: "yes" */
- if (router_get_by_digest(id_digest))
+ if (router_get_by_id_digest(id_digest))
return 1; /* Not in the consensus, but we have a descriptor for
* it. Probably it was in a recent consensus. "Yes". */
return 0;
@@ -438,7 +447,7 @@ connection_or_init_conn_from_address(or_connection_t *conn,
const char *id_digest,
int started_here)
{
- routerinfo_t *r = router_get_by_digest(id_digest);
+ const node_t *r = node_get_by_id(id_digest);
connection_or_set_identity_digest(conn, id_digest);
connection_or_update_token_buckets_helper(conn, 1, get_options());
@@ -446,8 +455,10 @@ connection_or_init_conn_from_address(or_connection_t *conn,
tor_addr_copy(&conn->_base.addr, addr);
tor_addr_copy(&conn->real_addr, addr);
if (r) {
+ tor_addr_t node_addr;
+ node_get_addr(r, &node_addr);
/* XXXX proposal 118 will make this more complex. */
- if (tor_addr_eq_ipv4h(&conn->_base.addr, r->addr))
+ if (tor_addr_eq(&conn->_base.addr, &node_addr))
conn->is_canonical = 1;
if (!started_here) {
/* Override the addr/port, so our log messages will make sense.
@@ -460,12 +471,12 @@ connection_or_init_conn_from_address(or_connection_t *conn,
* right IP address and port 56244, that wouldn't be as helpful. now we
* log the "right" port too, so we know if it's moria1 or moria2.
*/
- tor_addr_from_ipv4h(&conn->_base.addr, r->addr);
- conn->_base.port = r->or_port;
+ tor_addr_copy(&conn->_base.addr, &node_addr);
+ conn->_base.port = node_get_orport(r);
}
- conn->nickname = tor_strdup(r->nickname);
+ conn->nickname = tor_strdup(node_get_nickname(r));
tor_free(conn->_base.address);
- conn->_base.address = tor_strdup(r->address);
+ conn->_base.address = tor_dup_addr(&node_addr);
} else {
const char *n;
/* If we're an authoritative directory server, we may know a
@@ -906,9 +917,12 @@ connection_tls_start_handshake(or_connection_t *conn, int receiving)
if (conn->bucket_cfg)
bufferevent_set_rate_limit(conn->_base.bufev, conn->bucket_cfg);
connection_enable_rate_limiting(TO_CONN(conn));
- bufferevent_setcb(b, connection_handle_read_cb,
+
+ connection_configure_bufferevent_callbacks(TO_CONN(conn));
+ bufferevent_setcb(b,
+ connection_handle_read_cb,
connection_handle_write_cb,
- connection_or_handle_event_cb,
+ connection_or_handle_event_cb,/* overriding this one*/
TO_CONN(conn));
}
#endif
@@ -1034,14 +1048,29 @@ connection_or_handle_event_cb(struct bufferevent *bufev, short event,
tor_tls_unblock_renegotiation(conn->tls);
return; /* ???? */
}
- } else {
- /* improved handshake, but not a client. */
+ } else if (tor_tls_get_num_server_handshakes(conn->tls) == 1) {
+ /* improved handshake, as a server. Only got one handshake, so
+ * wait for the next one. */
tor_tls_set_renegotiate_callback(conn->tls,
connection_or_tls_renegotiated_cb,
conn);
conn->_base.state = OR_CONN_STATE_TLS_SERVER_RENEGOTIATING;
/* return 0; */
return; /* ???? */
+ } else {
+ const int handshakes = tor_tls_get_num_server_handshakes(conn->tls);
+ tor_assert(handshakes >= 2);
+ if (handshakes == 2) {
+ /* improved handshake, as a server. Two handshakes happened already,
+ * so we treat renegotiation as done.
+ */
+ connection_or_tls_renegotiated_cb(conn->tls, conn);
+ } else {
+ log_warn(LD_OR, "More than two handshakes done on connection. "
+ "Closing.");
+ connection_mark_for_close(TO_CONN(conn));
+ }
+ return;
}
}
connection_watch_events(TO_CONN(conn), READ_EVENT|WRITE_EVENT);
@@ -1050,6 +1079,14 @@ connection_or_handle_event_cb(struct bufferevent *bufev, short event,
return;
}
+ if (event & BEV_EVENT_ERROR) {
+ unsigned long err;
+ while ((err = bufferevent_get_openssl_error(bufev))) {
+ tor_tls_log_one_error(conn->tls, err, LOG_WARN, LD_OR,
+ "handshaking (with bufferevent)");
+ }
+ }
+
connection_handle_event_cb(bufev, event, arg);
}
#endif
@@ -1105,6 +1142,9 @@ connection_or_check_valid_tls_handshake(or_connection_t *conn,
started_here ? conn->_base.address :
safe_str_client(conn->_base.address);
const char *conn_type = started_here ? "outgoing" : "incoming";
+ crypto_pk_env_t *our_identity =
+ started_here ? get_tlsclient_identity_key() :
+ get_server_identity_key();
int has_cert = 0, has_identity=0;
check_no_tls_errors();
@@ -1142,7 +1182,7 @@ connection_or_check_valid_tls_handshake(or_connection_t *conn,
if (identity_rcvd) {
has_identity = 1;
crypto_pk_get_digest(identity_rcvd, digest_rcvd_out);
- if (crypto_pk_cmp_keys(get_identity_key(), identity_rcvd)<0) {
+ if (crypto_pk_cmp_keys(our_identity, identity_rcvd)<0) {
conn->circ_id_type = CIRC_ID_TYPE_LOWER;
} else {
conn->circ_id_type = CIRC_ID_TYPE_HIGHER;
@@ -1222,7 +1262,9 @@ connection_tls_finish_handshake(or_connection_t *conn)
char digest_rcvd[DIGEST_LEN];
int started_here = connection_or_nonopen_was_started_here(conn);
- log_debug(LD_HANDSHAKE,"tls handshake with %s done. verifying.",
+ log_debug(LD_HANDSHAKE,"%s tls handshake on %p with %s done. verifying.",
+ started_here?"outgoing":"incoming",
+ conn,
safe_str_client(conn->_base.address));
directory_set_dirty();
@@ -1303,7 +1345,7 @@ connection_or_set_state_open(or_connection_t *conn)
router_set_status(conn->identity_digest, 1);
} else {
/* only report it to the geoip module if it's not a known router */
- if (!router_get_by_digest(conn->identity_digest)) {
+ if (!router_get_by_id_digest(conn->identity_digest)) {
if (tor_addr_family(&TO_CONN(conn)->addr) == AF_INET) {
/*XXXX IP6 support ipv6 geoip.*/
uint32_t a = tor_addr_to_ipv4h(&TO_CONN(conn)->addr);
@@ -1491,7 +1533,7 @@ connection_or_send_netinfo(or_connection_t *conn)
{
cell_t cell;
time_t now = time(NULL);
- routerinfo_t *me;
+ const routerinfo_t *me;
int len;
char *out;
diff --git a/src/or/control.c b/src/or/control.c
index 37ebfd88d..a2c9e467f 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -26,6 +26,7 @@
#include "hibernate.h"
#include "main.h"
#include "networkstatus.h"
+#include "nodelist.h"
#include "policies.h"
#include "reasons.h"
#include "router.h"
@@ -1344,7 +1345,7 @@ getinfo_helper_misc(control_connection_t *conn, const char *question,
} else if (!strcmp(question, "dir-usage")) {
*answer = directory_dump_request_log();
} else if (!strcmp(question, "fingerprint")) {
- routerinfo_t *me = router_get_my_routerinfo();
+ const routerinfo_t *me = router_get_my_routerinfo();
if (!me) {
*errmsg = "No routerdesc known; am I really a server?";
return -1;
@@ -1366,8 +1367,9 @@ getinfo_helper_misc(control_connection_t *conn, const char *question,
* NOTE: <b>ri_body</b> is as returned by signed_descriptor_get_body: it might
* not be NUL-terminated. */
static char *
-munge_extrainfo_into_routerinfo(const char *ri_body, signed_descriptor_t *ri,
- signed_descriptor_t *ei)
+munge_extrainfo_into_routerinfo(const char *ri_body,
+ const signed_descriptor_t *ri,
+ const signed_descriptor_t *ei)
{
char *out = NULL, *outp;
int i;
@@ -1412,16 +1414,17 @@ getinfo_helper_dir(control_connection_t *control_conn,
const char *question, char **answer,
const char **errmsg)
{
+ const routerinfo_t *ri;
(void) control_conn;
if (!strcmpstart(question, "desc/id/")) {
- routerinfo_t *ri = router_get_by_hexdigest(question+strlen("desc/id/"));
+ ri = router_get_by_hexdigest(question+strlen("desc/id/"));
if (ri) {
const char *body = signed_descriptor_get_body(&ri->cache_info);
if (body)
*answer = tor_strndup(body, ri->cache_info.signed_descriptor_len);
}
} else if (!strcmpstart(question, "desc/name/")) {
- routerinfo_t *ri = router_get_by_nickname(question+strlen("desc/name/"),1);
+ ri = router_get_by_nickname(question+strlen("desc/name/"),1);
if (ri) {
const char *body = signed_descriptor_get_body(&ri->cache_info);
if (body)
@@ -1431,7 +1434,7 @@ getinfo_helper_dir(control_connection_t *control_conn,
routerlist_t *routerlist = router_get_routerlist();
smartlist_t *sl = smartlist_create();
if (routerlist && routerlist->routers) {
- SMARTLIST_FOREACH(routerlist->routers, routerinfo_t *, ri,
+ SMARTLIST_FOREACH(routerlist->routers, const routerinfo_t *, ri,
{
const char *body = signed_descriptor_get_body(&ri->cache_info);
if (body)
@@ -1447,7 +1450,7 @@ getinfo_helper_dir(control_connection_t *control_conn,
routerlist_t *routerlist = router_get_routerlist();
smartlist_t *sl = smartlist_create();
if (routerlist && routerlist->routers) {
- SMARTLIST_FOREACH(routerlist->routers, routerinfo_t *, ri,
+ SMARTLIST_FOREACH(routerlist->routers, const routerinfo_t *, ri,
{
const char *body = signed_descriptor_get_body(&ri->cache_info);
signed_descriptor_t *ei = extrainfo_get_by_descriptor_digest(
@@ -1465,8 +1468,8 @@ getinfo_helper_dir(control_connection_t *control_conn,
SMARTLIST_FOREACH(sl, char *, c, tor_free(c));
smartlist_free(sl);
} else if (!strcmpstart(question, "desc-annotations/id/")) {
- routerinfo_t *ri = router_get_by_hexdigest(question+
- strlen("desc-annotations/id/"));
+ ri = router_get_by_hexdigest(question+
+ strlen("desc-annotations/id/"));
if (ri) {
const char *annotations =
signed_descriptor_get_annotations(&ri->cache_info);
@@ -2105,7 +2108,7 @@ static int
handle_control_extendcircuit(control_connection_t *conn, uint32_t len,
const char *body)
{
- smartlist_t *router_nicknames=NULL, *routers=NULL;
+ smartlist_t *router_nicknames=NULL, *nodes=NULL;
origin_circuit_t *circ = NULL;
int zero_circ;
uint8_t intended_purpose = CIRCUIT_PURPOSE_C_GENERAL;
@@ -2136,8 +2139,7 @@ handle_control_extendcircuit(control_connection_t *conn, uint32_t len,
if ((smartlist_len(args) == 1) ||
(smartlist_len(args) >= 2 && is_keyval_pair(smartlist_get(args, 1)))) {
// "EXTENDCIRCUIT 0" || EXTENDCIRCUIT 0 foo=bar"
- circ = circuit_launch_by_router(intended_purpose, NULL,
- CIRCLAUNCH_NEED_CAPACITY);
+ circ = circuit_launch(intended_purpose, CIRCLAUNCH_NEED_CAPACITY);
if (!circ) {
connection_write_str_to_buf("551 Couldn't start circuit\r\n", conn);
} else {
@@ -2165,17 +2167,21 @@ handle_control_extendcircuit(control_connection_t *conn, uint32_t len,
SMARTLIST_FOREACH(args, char *, cp, tor_free(cp));
smartlist_free(args);
- routers = smartlist_create();
+ nodes = smartlist_create();
SMARTLIST_FOREACH(router_nicknames, const char *, n,
{
- routerinfo_t *r = router_get_by_nickname(n, 1);
- if (!r) {
+ const node_t *node = node_get_by_nickname(n, 1);
+ if (!node) {
connection_printf_to_buf(conn, "552 No such router \"%s\"\r\n", n);
goto done;
}
- smartlist_add(routers, r);
+ if (!node_has_descriptor(node)) {
+ connection_printf_to_buf(conn, "552 descriptor for \"%s\"\r\n", n);
+ goto done;
+ }
+ smartlist_add(nodes, (void*)node);
});
- if (!smartlist_len(routers)) {
+ if (!smartlist_len(nodes)) {
connection_write_str_to_buf("512 No router names provided\r\n", conn);
goto done;
}
@@ -2186,9 +2192,10 @@ handle_control_extendcircuit(control_connection_t *conn, uint32_t len,
}
/* now circ refers to something that is ready to be extended */
- SMARTLIST_FOREACH(routers, routerinfo_t *, r,
+ SMARTLIST_FOREACH(nodes, const node_t *, node,
{
- extend_info_t *info = extend_info_from_router(r);
+ extend_info_t *info = extend_info_from_node(node);
+ tor_assert(info); /* True, since node_has_descriptor(node) == true */
circuit_append_new_exit(circ, info);
extend_info_free(info);
});
@@ -2222,7 +2229,7 @@ handle_control_extendcircuit(control_connection_t *conn, uint32_t len,
done:
SMARTLIST_FOREACH(router_nicknames, char *, n, tor_free(n));
smartlist_free(router_nicknames);
- smartlist_free(routers);
+ smartlist_free(nodes);
return 0;
}
@@ -2338,16 +2345,17 @@ handle_control_attachstream(control_connection_t *conn, uint32_t len,
}
/* Is this a single hop circuit? */
if (circ && (circuit_get_cpath_len(circ)<2 || hop==1)) {
- routerinfo_t *r = NULL;
- char* exit_digest;
+ const node_t *node = NULL;
+ char *exit_digest;
if (circ->build_state &&
circ->build_state->chosen_exit &&
!tor_digest_is_zero(circ->build_state->chosen_exit->identity_digest)) {
exit_digest = circ->build_state->chosen_exit->identity_digest;
- r = router_get_by_digest(exit_digest);
+ node = node_get_by_id(exit_digest);
}
/* Do both the client and relay allow one-hop exit circuits? */
- if (!r || !r->allow_single_hop_exits ||
+ if (!node ||
+ !node_allows_single_hop_exits(node) ||
!get_options()->AllowSingleHopCircuits) {
connection_write_str_to_buf(
"551 Can't attach stream to this one-hop circuit.\r\n", conn);
@@ -2798,8 +2806,8 @@ connection_control_process_inbuf(control_connection_t *conn)
body_len = 2+strlen(buf+6)+2; /* code, msg, nul. */
set_uint16(buf+0, htons(body_len));
connection_write_to_buf(buf, 4+body_len, TO_CONN(conn));
- connection_mark_for_close(TO_CONN(conn));
- conn->_base.hold_open_until_flushed = 1;
+
+ connection_mark_and_flush(TO_CONN(conn));
return 0;
}
@@ -2820,8 +2828,7 @@ connection_control_process_inbuf(control_connection_t *conn)
if (data_len + conn->incoming_cmd_cur_len > MAX_COMMAND_LINE_LENGTH) {
connection_write_str_to_buf("500 Line too long.\r\n", conn);
connection_stop_reading(TO_CONN(conn));
- connection_mark_for_close(TO_CONN(conn));
- conn->_base.hold_open_until_flushed = 1;
+ connection_mark_and_flush(TO_CONN(conn));
}
while (conn->incoming_cmd_len < data_len+conn->incoming_cmd_cur_len)
conn->incoming_cmd_len *= 2;
@@ -2880,8 +2887,7 @@ connection_control_process_inbuf(control_connection_t *conn)
/* Otherwise, Quit is always valid. */
if (!strcasecmp(conn->incoming_cmd, "QUIT")) {
connection_write_str_to_buf("250 closing connection\r\n", conn);
- connection_mark_for_close(TO_CONN(conn));
- conn->_base.hold_open_until_flushed = 1;
+ connection_mark_and_flush(TO_CONN(conn));
return 0;
}
@@ -3175,10 +3181,10 @@ control_event_stream_status(edge_connection_t *conn, stream_status_event_t tp,
static void
orconn_target_get_name(char *name, size_t len, or_connection_t *conn)
{
- routerinfo_t *ri = router_get_by_digest(conn->identity_digest);
- if (ri) {
+ const node_t *node = node_get_by_id(conn->identity_digest);
+ if (node) {
tor_assert(len > MAX_VERBOSE_NICKNAME_LEN);
- router_get_verbose_nickname(name, ri);
+ node_get_verbose_nickname(node, name);
} else if (! tor_digest_is_zero(conn->identity_digest)) {
name[0] = '$';
base16_encode(name+1, len-1, conn->identity_digest,
@@ -3495,7 +3501,7 @@ control_event_networkstatus_changed_helper(smartlist_t *statuses,
smartlist_add(strs, tor_strdup("650+"));
smartlist_add(strs, tor_strdup(event_string));
smartlist_add(strs, tor_strdup("\r\n"));
- SMARTLIST_FOREACH(statuses, routerstatus_t *, rs,
+ SMARTLIST_FOREACH(statuses, const routerstatus_t *, rs,
{
s = networkstatus_getinfo_helper_single(rs);
if (!s) continue;
@@ -3586,7 +3592,7 @@ control_event_buildtimeout_set(const circuit_build_times_t *cbt,
/** Called when a single local_routerstatus_t has changed: Sends an NS event
* to any controller that cares. */
int
-control_event_networkstatus_changed_single(routerstatus_t *rs)
+control_event_networkstatus_changed_single(const routerstatus_t *rs)
{
smartlist_t *statuses;
int r;
@@ -3595,7 +3601,7 @@ control_event_networkstatus_changed_single(routerstatus_t *rs)
return 0;
statuses = smartlist_create();
- smartlist_add(statuses, rs);
+ smartlist_add(statuses, (void*)rs);
r = control_event_networkstatus_changed(statuses);
smartlist_free(statuses);
return r;
@@ -3720,9 +3726,9 @@ control_event_guard(const char *nickname, const char *digest,
{
char buf[MAX_VERBOSE_NICKNAME_LEN+1];
- routerinfo_t *ri = router_get_by_digest(digest);
- if (ri) {
- router_get_verbose_nickname(buf, ri);
+ const node_t *node = node_get_by_id(digest);
+ if (node) {
+ node_get_verbose_nickname(node, buf);
} else {
tor_snprintf(buf, sizeof(buf), "$%s~%s", hbuf, nickname);
}
diff --git a/src/or/control.h b/src/or/control.h
index 27ef5c37f..275c6de8e 100644
--- a/src/or/control.h
+++ b/src/or/control.h
@@ -53,7 +53,7 @@ int control_event_my_descriptor_changed(void);
int control_event_networkstatus_changed(smartlist_t *statuses);
int control_event_newconsensus(const networkstatus_t *consensus);
-int control_event_networkstatus_changed_single(routerstatus_t *rs);
+int control_event_networkstatus_changed_single(const routerstatus_t *rs);
int control_event_general_status(int severity, const char *format, ...)
CHECK_PRINTF(2,3);
int control_event_client_status(int severity, const char *format, ...)
diff --git a/src/or/directory.c b/src/or/directory.c
index 657b210b5..a4d123d64 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -17,6 +17,7 @@
#include "main.h"
#include "microdesc.h"
#include "networkstatus.h"
+#include "nodelist.h"
#include "policies.h"
#include "rendclient.h"
#include "rendcommon.h"
@@ -219,17 +220,19 @@ dir_conn_purpose_to_string(int purpose)
int
router_supports_extrainfo(const char *identity_digest, int is_authority)
{
- routerinfo_t *ri = router_get_by_digest(identity_digest);
+ const node_t *node = node_get_by_id(identity_digest);
- if (ri) {
- if (ri->caches_extra_info)
+ if (node && node->ri) {
+ if (node->ri->caches_extra_info)
return 1;
- if (is_authority && ri->platform &&
- tor_version_as_new_as(ri->platform, "Tor 0.2.0.0-alpha-dev (r10070)"))
+ if (is_authority && node->ri->platform &&
+ tor_version_as_new_as(node->ri->platform,
+ "Tor 0.2.0.0-alpha-dev (r10070)"))
return 1;
}
if (is_authority) {
- routerstatus_t *rs = router_get_consensus_status_by_id(identity_digest);
+ const routerstatus_t *rs =
+ router_get_consensus_status_by_id(identity_digest);
if (rs && rs->version_supports_extrainfo_upload)
return 1;
}
@@ -328,7 +331,7 @@ void
directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose,
const char *resource, int pds_flags)
{
- routerstatus_t *rs = NULL;
+ const routerstatus_t *rs = NULL;
or_options_t *options = get_options();
int prefer_authority = directory_fetches_from_authorities(options);
int get_via_tor = purpose_needs_anonymity(dir_purpose, router_purpose);
@@ -400,10 +403,12 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose,
* possible directory question. This won't be true forever. -RD */
/* It certainly is not true with conditional consensus downloading,
* so, for now, never assume the server supports that. */
- routerinfo_t *ri = choose_random_entry(NULL);
- if (ri) {
+ const node_t *node = choose_random_entry(NULL);
+ if (node && node->ri) {
+ /* every bridge has a routerinfo. */
tor_addr_t addr;
- tor_addr_from_ipv4h(&addr, ri->addr);
+ routerinfo_t *ri = node->ri;
+ node_get_addr(node, &addr);
directory_initiate_command(ri->address, &addr,
ri->or_port, 0,
0, /* don't use conditional consensus url */
@@ -512,7 +517,7 @@ directory_get_from_all_authorities(uint8_t dir_purpose,
/** Same as directory_initiate_command_routerstatus(), but accepts
* rendezvous data to fetch a hidden service descriptor. */
void
-directory_initiate_command_routerstatus_rend(routerstatus_t *status,
+directory_initiate_command_routerstatus_rend(const routerstatus_t *status,
uint8_t dir_purpose,
uint8_t router_purpose,
int anonymized_connection,
@@ -522,18 +527,19 @@ directory_initiate_command_routerstatus_rend(routerstatus_t *status,
time_t if_modified_since,
const rend_data_t *rend_query)
{
- routerinfo_t *router;
+ const node_t *node;
char address_buf[INET_NTOA_BUF_LEN+1];
struct in_addr in;
const char *address;
tor_addr_t addr;
- router = router_get_by_digest(status->identity_digest);
- if (!router && anonymized_connection) {
+ node = node_get_by_id(status->identity_digest);
+ if (!node && anonymized_connection) {
log_info(LD_DIR, "Not sending anonymized request to directory '%s'; we "
"don't have its router descriptor.", status->nickname);
return;
- } else if (router) {
- address = router->address;
+ } else if (node) {
+ node_get_address_string(node, address_buf, sizeof(address_buf));
+ address = address_buf;
} else {
in.s_addr = htonl(status->addr);
tor_inet_ntoa(&in, address_buf, sizeof(address_buf));
@@ -566,7 +572,7 @@ directory_initiate_command_routerstatus_rend(routerstatus_t *status,
* want to fetch.
*/
void
-directory_initiate_command_routerstatus(routerstatus_t *status,
+directory_initiate_command_routerstatus(const routerstatus_t *status,
uint8_t dir_purpose,
uint8_t router_purpose,
int anonymized_connection,
@@ -590,7 +596,7 @@ directory_conn_is_self_reachability_test(dir_connection_t *conn)
{
if (conn->requested_resource &&
!strcmpstart(conn->requested_resource,"authority")) {
- routerinfo_t *me = router_get_my_routerinfo();
+ const routerinfo_t *me = router_get_my_routerinfo();
if (me &&
router_digest_is_me(conn->identity_digest) &&
tor_addr_eq_ipv4h(&conn->_base.addr, me->addr) && /*XXXX prop 118*/
@@ -1157,7 +1163,7 @@ directory_send_command(dir_connection_t *conn,
case DIR_PURPOSE_FETCH_MICRODESC:
tor_assert(resource);
httpcommand = "GET";
- tor_asprintf(&url, "/tor/micro/%s.z", resource);
+ tor_asprintf(&url, "/tor/micro/%s", resource);
break;
case DIR_PURPOSE_UPLOAD_DIR:
tor_assert(!resource);
@@ -1597,7 +1603,8 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
"'%s:%d'. I'll try again soon.",
status_code, escaped(reason), conn->_base.address,
conn->_base.port);
- if ((rs = router_get_consensus_status_by_id(conn->identity_digest)))
+ rs = router_get_mutable_consensus_status_by_id(conn->identity_digest);
+ if (rs)
rs->last_dir_503_at = now;
if ((ds = router_get_trusteddirserver_by_digest(conn->identity_digest)))
ds->fake_status.last_dir_503_at = now;
@@ -3692,7 +3699,7 @@ dir_microdesc_download_failed(smartlist_t *failed,
if (! consensus)
return;
SMARTLIST_FOREACH_BEGIN(failed, const char *, d) {
- rs = router_get_consensus_status_by_descriptor_digest(consensus, d);
+ rs = router_get_mutable_consensus_status_by_descriptor_digest(consensus,d);
if (!rs)
continue;
dls = &rs->dl_status;
diff --git a/src/or/directory.h b/src/or/directory.h
index 6fd2c0bef..5782df926 100644
--- a/src/or/directory.h
+++ b/src/or/directory.h
@@ -23,7 +23,7 @@ void directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose,
void directory_get_from_all_authorities(uint8_t dir_purpose,
uint8_t router_purpose,
const char *resource);
-void directory_initiate_command_routerstatus(routerstatus_t *status,
+void directory_initiate_command_routerstatus(const routerstatus_t *status,
uint8_t dir_purpose,
uint8_t router_purpose,
int anonymized_connection,
@@ -31,7 +31,7 @@ void directory_initiate_command_routerstatus(routerstatus_t *status,
const char *payload,
size_t payload_len,
time_t if_modified_since);
-void directory_initiate_command_routerstatus_rend(routerstatus_t *status,
+void directory_initiate_command_routerstatus_rend(const routerstatus_t *status,
uint8_t dir_purpose,
uint8_t router_purpose,
int anonymized_connection,
diff --git a/src/or/dirserv.c b/src/or/dirserv.c
index 75e3e8610..4f793dc74 100644
--- a/src/or/dirserv.c
+++ b/src/or/dirserv.c
@@ -16,6 +16,7 @@
#include "hibernate.h"
#include "microdesc.h"
#include "networkstatus.h"
+#include "nodelist.h"
#include "policies.h"
#include "rephist.h"
#include "router.h"
@@ -65,8 +66,6 @@ static char *format_versions_list(config_line_t *ln);
struct authdir_config_t;
static int add_fingerprint_to_dir(const char *nickname, const char *fp,
struct authdir_config_t *list);
-static uint32_t dirserv_router_get_status(const routerinfo_t *router,
- const char **msg);
static uint32_t
dirserv_get_status_impl(const char *fp, const char *nickname,
const char *address,
@@ -74,7 +73,8 @@ dirserv_get_status_impl(const char *fp, const char *nickname,
const char *platform, const char *contact,
const char **msg, int should_log);
static void clear_cached_dir(cached_dir_t *d);
-static signed_descriptor_t *get_signed_descriptor_by_fp(const char *fp,
+static const signed_descriptor_t *get_signed_descriptor_by_fp(
+ const char *fp,
int extrainfo,
time_t publish_cutoff);
static int dirserv_add_extrainfo(extrainfo_t *ei, const char **msg);
@@ -303,7 +303,7 @@ dirserv_load_fingerprint_file(void)
*
* If the status is 'FP_REJECT' and <b>msg</b> is provided, set
* *<b>msg</b> to an explanation of why. */
-static uint32_t
+uint32_t
dirserv_router_get_status(const routerinfo_t *router, const char **msg)
{
char d[DIGEST_LEN];
@@ -325,7 +325,7 @@ dirserv_router_get_status(const routerinfo_t *router, const char **msg)
/** Return true if there is no point in downloading the router described by
* <b>rs</b> because this directory would reject it. */
int
-dirserv_would_reject_router(routerstatus_t *rs)
+dirserv_would_reject_router(const routerstatus_t *rs)
{
uint32_t res;
@@ -360,7 +360,7 @@ dirserv_get_name_status(const char *id_digest, const char *nickname)
return 0;
}
-/** Helper: As dirserv_get_router_status, but takes the router fingerprint
+/** Helper: As dirserv_router_get_status, but takes the router fingerprint
* (hex, no spaces), nickname, address (used for logging only), IP address, OR
* port, platform (logging only) and contact info (logging only) as arguments.
*
@@ -375,7 +375,7 @@ dirserv_get_status_impl(const char *id_digest, const char *nickname,
const char **msg, int should_log)
{
int reject_unlisted = get_options()->AuthDirRejectUnlisted;
- uint32_t result = 0;
+ uint32_t result;
router_status_t *status_by_digest;
if (!fingerprint_list)
@@ -533,7 +533,7 @@ dirserv_router_has_valid_address(routerinfo_t *ri)
*/
int
authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg,
- int complain)
+ int complain, int *valid_out)
{
/* Okay. Now check whether the fingerprint is recognized. */
uint32_t status = dirserv_router_get_status(ri, msg);
@@ -574,15 +574,24 @@ authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg,
*msg = "Rejected: Address is not an IP, or IP is a private address.";
return -1;
}
- /* Okay, looks like we're willing to accept this one. */
- ri->is_named = (status & FP_NAMED) ? 1 : 0;
- ri->is_valid = (status & FP_INVALID) ? 0 : 1;
- ri->is_bad_directory = (status & FP_BADDIR) ? 1 : 0;
- ri->is_bad_exit = (status & FP_BADEXIT) ? 1 : 0;
+
+ *valid_out = ! (status & FP_INVALID);
return 0;
}
+/** Update the relevant flags of <b>node</b> based on our opinion as a
+ * directory authority in <b>authstatus</b>, as returned by
+ * dirserv_router_get_status or equivalent. */
+void
+dirserv_set_node_flags_from_authoritative_status(node_t *node,
+ uint32_t authstatus)
+{
+ node->is_valid = (authstatus & FP_INVALID) ? 0 : 1;
+ node->is_bad_directory = (authstatus & FP_BADDIR) ? 1 : 0;
+ node->is_bad_exit = (authstatus & FP_BADEXIT) ? 1 : 0;
+}
+
/** True iff <b>a</b> is more severe than <b>b</b>. */
static int
WRA_MORE_SEVERE(was_router_added_t a, was_router_added_t b)
@@ -707,7 +716,7 @@ dirserv_add_descriptor(routerinfo_t *ri, const char **msg, const char *source)
* from this server. (We do this here and not in router_add_to_routerlist
* because we want to be able to accept the newest router descriptor that
* another authority has, so we all converge on the same one.) */
- ri_old = router_get_by_digest(ri->cache_info.identity_digest);
+ ri_old = router_get_mutable_by_digest(ri->cache_info.identity_digest);
if (ri_old && ri_old->cache_info.published_on < ri->cache_info.published_on
&& router_differences_are_cosmetic(ri_old, ri)
&& !router_is_me(ri)) {
@@ -751,8 +760,7 @@ dirserv_add_descriptor(routerinfo_t *ri, const char **msg, const char *source)
routerlist_descriptors_added(changed, 0);
smartlist_free(changed);
if (!*msg) {
- *msg = ri->is_valid ? "Descriptor for valid server accepted" :
- "Descriptor for invalid server accepted";
+ *msg = "Descriptor accepted";
}
log_info(LD_DIRSERV,
"Added descriptor from '%s' (source: %s): %s.",
@@ -767,12 +775,12 @@ dirserv_add_descriptor(routerinfo_t *ri, const char **msg, const char *source)
static was_router_added_t
dirserv_add_extrainfo(extrainfo_t *ei, const char **msg)
{
- routerinfo_t *ri;
+ const routerinfo_t *ri;
int r;
tor_assert(msg);
*msg = NULL;
- ri = router_get_by_digest(ei->cache_info.identity_digest);
+ ri = router_get_by_id_digest(ei->cache_info.identity_digest);
if (!ri) {
*msg = "No corresponding router descriptor for extra-info descriptor";
extrainfo_free(ei);
@@ -807,50 +815,60 @@ dirserv_add_extrainfo(extrainfo_t *ei, const char **msg)
static void
directory_remove_invalid(void)
{
- int i;
int changed = 0;
routerlist_t *rl = router_get_routerlist();
+ smartlist_t *nodes = smartlist_create();
+ smartlist_add_all(nodes, nodelist_get_list());
- routerlist_assert_ok(rl);
-
- for (i = 0; i < smartlist_len(rl->routers); ++i) {
+ SMARTLIST_FOREACH_BEGIN(nodes, node_t *, node) {
const char *msg;
- routerinfo_t *ent = smartlist_get(rl->routers, i);
- uint32_t r = dirserv_router_get_status(ent, &msg);
+ routerinfo_t *ent = node->ri;
+ uint32_t r;
+ if (!ent)
+ continue;
+ r = dirserv_router_get_status(ent, &msg);
if (r & FP_REJECT) {
log_info(LD_DIRSERV, "Router '%s' is now rejected: %s",
ent->nickname, msg?msg:"");
routerlist_remove(rl, ent, 0, time(NULL));
- i--;
changed = 1;
continue;
}
- if (bool_neq((r & FP_NAMED), ent->is_named)) {
+#if 0
+ if (bool_neq((r & FP_NAMED), ent->auth_says_is_named)) {
log_info(LD_DIRSERV,
"Router '%s' is now %snamed.", ent->nickname,
(r&FP_NAMED)?"":"un");
ent->is_named = (r&FP_NAMED)?1:0;
changed = 1;
}
- if (bool_neq((r & FP_INVALID), !ent->is_valid)) {
+ if (bool_neq((r & FP_UNNAMED), ent->auth_says_is_unnamed)) {
+ log_info(LD_DIRSERV,
+ "Router '%s' is now %snamed. (FP_UNNAMED)", ent->nickname,
+ (r&FP_NAMED)?"":"un");
+ ent->is_named = (r&FP_NUNAMED)?0:1;
+ changed = 1;
+ }
+#endif
+ if (bool_neq((r & FP_INVALID), !node->is_valid)) {
log_info(LD_DIRSERV, "Router '%s' is now %svalid.", ent->nickname,
(r&FP_INVALID) ? "in" : "");
- ent->is_valid = (r&FP_INVALID)?0:1;
+ node->is_valid = (r&FP_INVALID)?0:1;
changed = 1;
}
- if (bool_neq((r & FP_BADDIR), ent->is_bad_directory)) {
+ if (bool_neq((r & FP_BADDIR), node->is_bad_directory)) {
log_info(LD_DIRSERV, "Router '%s' is now a %s directory", ent->nickname,
(r & FP_BADDIR) ? "bad" : "good");
- ent->is_bad_directory = (r&FP_BADDIR) ? 1: 0;
+ node->is_bad_directory = (r&FP_BADDIR) ? 1: 0;
changed = 1;
}
- if (bool_neq((r & FP_BADEXIT), ent->is_bad_exit)) {
+ if (bool_neq((r & FP_BADEXIT), node->is_bad_exit)) {
log_info(LD_DIRSERV, "Router '%s' is now a %s exit", ent->nickname,
(r & FP_BADEXIT) ? "bad" : "good");
- ent->is_bad_exit = (r&FP_BADEXIT) ? 1: 0;
+ node->is_bad_exit = (r&FP_BADEXIT) ? 1: 0;
changed = 1;
}
- }
+ } SMARTLIST_FOREACH_END(node);
if (changed)
directory_set_dirty();
@@ -893,10 +911,11 @@ directory_set_dirty(void)
* as running iff <b>is_live</b> is true.
*/
static char *
-list_single_server_status(routerinfo_t *desc, int is_live)
+list_single_server_status(const routerinfo_t *desc, int is_live)
{
char buf[MAX_NICKNAME_LEN+HEX_DIGEST_LEN+4]; /* !nickname=$hexdigest\0 */
char *cp;
+ const node_t *node;
tor_assert(desc);
@@ -904,7 +923,8 @@ list_single_server_status(routerinfo_t *desc, int is_live)
if (!is_live) {
*cp++ = '!';
}
- if (desc->is_valid) {
+ node = node_get_by_id(desc->cache_info.identity_digest);
+ if (node && node->is_valid) {
strlcpy(cp, desc->nickname, sizeof(buf)-(cp-buf));
cp += strlen(cp);
*cp++ = '=';
@@ -943,6 +963,8 @@ dirserv_set_router_is_running(routerinfo_t *router, time_t now)
unreachable.
*/
int answer;
+ node_t *node = node_get_mutable_by_id(router->cache_info.identity_digest);
+ tor_assert(node);
if (router_is_me(router)) {
/* We always know if we are down ourselves. */
@@ -967,7 +989,7 @@ dirserv_set_router_is_running(routerinfo_t *router, time_t now)
rep_hist_note_router_unreachable(router->cache_info.identity_digest, now);
}
- router->is_running = answer;
+ node->is_running = answer;
}
/** Based on the routerinfo_ts in <b>routers</b>, allocate the
@@ -995,6 +1017,8 @@ list_server_status_v1(smartlist_t *routers, char **router_status_out,
rs_entries = smartlist_create();
SMARTLIST_FOREACH_BEGIN(routers, routerinfo_t *, ri) {
+ const node_t *node = node_get_by_id(ri->cache_info.identity_digest);
+ tor_assert(node);
if (authdir) {
/* Update router status in routerinfo_t. */
dirserv_set_router_is_running(ri, now);
@@ -1002,12 +1026,13 @@ list_server_status_v1(smartlist_t *routers, char **router_status_out,
if (for_controller) {
char name_buf[MAX_VERBOSE_NICKNAME_LEN+2];
char *cp = name_buf;
- if (!ri->is_running)
+ if (!node->is_running)
*cp++ = '!';
router_get_verbose_nickname(cp, ri);
smartlist_add(rs_entries, tor_strdup(name_buf));
} else if (ri->cache_info.published_on >= cutoff) {
- smartlist_add(rs_entries, list_single_server_status(ri, ri->is_running));
+ smartlist_add(rs_entries, list_single_server_status(ri,
+ node->is_running));
}
} SMARTLIST_FOREACH_END(ri);
@@ -1045,12 +1070,12 @@ format_versions_list(config_line_t *ln)
* not hibernating, and not too old. Else return 0.
*/
static int
-router_is_active(routerinfo_t *ri, time_t now)
+router_is_active(const routerinfo_t *ri, const node_t *node, time_t now)
{
time_t cutoff = now - ROUTER_MAX_AGE_TO_PUBLISH;
if (ri->cache_info.published_on < cutoff)
return 0;
- if (!ri->is_running || !ri->is_valid || ri->is_hibernating)
+ if (!node->is_running || !node->is_valid || ri->is_hibernating)
return 0;
return 1;
}
@@ -1151,7 +1176,7 @@ dirserv_dump_directory_to_string(char **dir_out,
int
directory_fetches_from_authorities(or_options_t *options)
{
- routerinfo_t *me;
+ const routerinfo_t *me;
uint32_t addr;
int refuseunknown;
if (options->FetchDirInfoEarly)
@@ -1213,7 +1238,7 @@ directory_caches_dir_info(or_options_t *options)
return 0;
/* We need an up-to-date view of network info if we're going to try to
* block exit attempts from unknown relays. */
- return router_my_exit_policy_is_reject_star() &&
+ return ! router_my_exit_policy_is_reject_star() &&
should_refuse_unknown_exits(options);
}
@@ -1553,7 +1578,8 @@ dirserv_regenerate_directory(void)
{
char *new_directory=NULL;
- if (dirserv_dump_directory_to_string(&new_directory, get_identity_key())) {
+ if (dirserv_dump_directory_to_string(&new_directory,
+ get_server_identity_key())) {
log_warn(LD_BUG, "Error creating directory.");
tor_free(new_directory);
return NULL;
@@ -1583,7 +1609,7 @@ generate_runningrouters(void)
char digest[DIGEST_LEN];
char published[ISO_TIME_LEN+1];
size_t len;
- crypto_pk_env_t *private_key = get_identity_key();
+ crypto_pk_env_t *private_key = get_server_identity_key();
char *identity_pkey; /* Identity key, DER64-encoded. */
size_t identity_pkey_len;
@@ -1716,7 +1742,7 @@ static uint64_t total_exit_bandwidth = 0;
/** Helper: estimate the uptime of a router given its stated uptime and the
* amount of time since it last stated its stated uptime. */
static INLINE long
-real_uptime(routerinfo_t *router, time_t now)
+real_uptime(const routerinfo_t *router, time_t now)
{
if (now < router->cache_info.published_on)
return router->uptime;
@@ -1767,7 +1793,8 @@ dirserv_thinks_router_is_unreliable(time_t now,
* been set.
*/
static int
-dirserv_thinks_router_is_hs_dir(routerinfo_t *router, time_t now)
+dirserv_thinks_router_is_hs_dir(const routerinfo_t *router,
+ const node_t *node, time_t now)
{
long uptime = real_uptime(router, now);
@@ -1777,7 +1804,7 @@ dirserv_thinks_router_is_hs_dir(routerinfo_t *router, time_t now)
* version is too old. */
return (router->wants_to_be_hs_dir && router->dir_port &&
uptime > get_options()->MinUptimeHidServDirectoryV2 &&
- router->is_running);
+ node->is_running);
}
/** Look through the routerlist, the Mean Time Between Failure history, and
@@ -1825,19 +1852,22 @@ dirserv_compute_performance_thresholds(routerlist_t *rl)
/* Weighted fractional uptime for each active router. */
wfus = tor_malloc(sizeof(double)*smartlist_len(rl->routers));
+ nodelist_assert_ok();
+
/* Now, fill in the arrays. */
- SMARTLIST_FOREACH(rl->routers, routerinfo_t *, ri, {
- if (router_is_active(ri, now)) {
+ SMARTLIST_FOREACH_BEGIN(nodelist_get_list(), node_t *, node) {
+ routerinfo_t *ri = node->ri;
+ if (ri && router_is_active(ri, node, now)) {
const char *id = ri->cache_info.identity_digest;
uint32_t bw;
- ri->is_exit = (!router_exit_policy_rejects_all(ri) &&
- exit_policy_is_general_exit(ri->exit_policy));
+ node->is_exit = (!router_exit_policy_rejects_all(ri) &&
+ exit_policy_is_general_exit(ri->exit_policy));
uptimes[n_active] = (uint32_t)real_uptime(ri, now);
mtbfs[n_active] = rep_hist_get_stability(id, now);
tks [n_active] = rep_hist_get_weighted_time_known(id, now);
bandwidths[n_active] = bw = router_get_advertised_bandwidth(ri);
total_bandwidth += bw;
- if (ri->is_exit && !ri->is_bad_exit) {
+ if (node->is_exit && !node->is_bad_exit) {
total_exit_bandwidth += bw;
} else {
bandwidths_excluding_exits[n_active_nonexit] = bw;
@@ -1845,7 +1875,7 @@ dirserv_compute_performance_thresholds(routerlist_t *rl)
}
++n_active;
}
- });
+ } SMARTLIST_FOREACH_END(node);
/* Now, compute thresholds. */
if (n_active) {
@@ -1871,15 +1901,17 @@ dirserv_compute_performance_thresholds(routerlist_t *rl)
/* Now that we have a time-known that 7/8 routers are known longer than,
* fill wfus with the wfu of every such "familiar" router. */
n_familiar = 0;
- SMARTLIST_FOREACH(rl->routers, routerinfo_t *, ri, {
- if (router_is_active(ri, now)) {
+
+ SMARTLIST_FOREACH_BEGIN(nodelist_get_list(), node_t *, node) {
+ routerinfo_t *ri = node->ri;
+ if (ri && router_is_active(ri, node, now)) {
const char *id = ri->cache_info.identity_digest;
long tk = rep_hist_get_weighted_time_known(id, now);
if (tk < guard_tk)
continue;
wfus[n_familiar++] = rep_hist_get_weighted_fractional_uptime(id, now);
}
- });
+ } SMARTLIST_FOREACH_END(node);
if (n_familiar)
guard_wfu = median_double(wfus, n_familiar);
if (guard_wfu > WFU_TO_GUARANTEE_GUARD)
@@ -1950,24 +1982,20 @@ version_from_platform(const char *platform)
*/
int
routerstatus_format_entry(char *buf, size_t buf_len,
- routerstatus_t *rs, const char *version,
+ const routerstatus_t *rs, const char *version,
routerstatus_format_type_t format)
{
int r;
- struct in_addr in;
char *cp;
char *summary;
char published[ISO_TIME_LEN+1];
- char ipaddr[INET_NTOA_BUF_LEN];
char identity64[BASE64_DIGEST_LEN+1];
char digest64[BASE64_DIGEST_LEN+1];
format_iso_time(published, rs->published_on);
digest_to_base64(identity64, rs->identity_digest);
digest_to_base64(digest64, rs->descriptor_digest);
- in.s_addr = htonl(rs->addr);
- tor_inet_ntoa(&in, ipaddr, sizeof(ipaddr));
r = tor_snprintf(buf, buf_len,
"r %s %s %s%s%s %s %d %d\n",
@@ -1976,7 +2004,7 @@ routerstatus_format_entry(char *buf, size_t buf_len,
(format==NS_V3_CONSENSUS_MICRODESC)?"":digest64,
(format==NS_V3_CONSENSUS_MICRODESC)?"":" ",
published,
- ipaddr,
+ fmt_addr32(rs->addr),
(int)rs->or_port,
(int)rs->dir_port);
if (r<0) {
@@ -2004,7 +2032,7 @@ routerstatus_format_entry(char *buf, size_t buf_len,
rs->is_possible_guard?" Guard":"",
rs->is_hs_dir?" HSDir":"",
rs->is_named?" Named":"",
- rs->is_running?" Running":"",
+ rs->is_flagged_running?" Running":"",
rs->is_stable?" Stable":"",
rs->is_unnamed?" Unnamed":"",
rs->is_v2_dir?" V2Dir":"",
@@ -2026,7 +2054,7 @@ routerstatus_format_entry(char *buf, size_t buf_len,
}
if (format != NS_V2) {
- routerinfo_t* desc = router_get_by_digest(rs->identity_digest);
+ const routerinfo_t* desc = router_get_by_id_digest(rs->identity_digest);
uint32_t bw;
if (format != NS_CONTROL_PORT) {
@@ -2122,6 +2150,8 @@ _compare_routerinfo_by_ip_and_bw(const void **a, const void **b)
routerinfo_t *first = *(routerinfo_t **)a, *second = *(routerinfo_t **)b;
int first_is_auth, second_is_auth;
uint32_t bw_first, bw_second;
+ const node_t *node_first, *node_second;
+ int first_is_running, second_is_running;
/* we return -1 if first should appear before second... that is,
* if first is a better router. */
@@ -2144,9 +2174,14 @@ _compare_routerinfo_by_ip_and_bw(const void **a, const void **b)
else if (!first_is_auth && second_is_auth)
return 1;
- else if (first->is_running && !second->is_running)
+ node_first = node_get_by_id(first->cache_info.identity_digest);
+ node_second = node_get_by_id(second->cache_info.identity_digest);
+ first_is_running = node_first && node_first->is_running;
+ second_is_running = node_second && node_second->is_running;
+
+ if (first_is_running && !second_is_running)
return -1;
- else if (!first->is_running && second->is_running)
+ else if (!first_is_running && second_is_running)
return 1;
bw_first = router_get_advertised_bandwidth(first);
@@ -2215,7 +2250,9 @@ get_possible_sybil_list(const smartlist_t *routers)
*/
void
set_routerstatus_from_routerinfo(routerstatus_t *rs,
- routerinfo_t *ri, time_t now,
+ node_t *node,
+ routerinfo_t *ri,
+ time_t now,
int naming, int listbadexits,
int listbaddirs)
{
@@ -2227,48 +2264,46 @@ set_routerstatus_from_routerinfo(routerstatus_t *rs,
router_digest_is_trusted_dir(ri->cache_info.identity_digest);
/* Already set by compute_performance_thresholds. */
- rs->is_exit = ri->is_exit;
- rs->is_stable = ri->is_stable =
- router_is_active(ri, now) &&
+ rs->is_exit = node->is_exit;
+ rs->is_stable = node->is_stable =
+ router_is_active(ri, node, now) &&
!dirserv_thinks_router_is_unreliable(now, ri, 1, 0) &&
!unstable_version;
- rs->is_fast = ri->is_fast =
- router_is_active(ri, now) &&
+ rs->is_fast = node->is_fast =
+ router_is_active(ri, node, now) &&
!dirserv_thinks_router_is_unreliable(now, ri, 0, 1);
- rs->is_running = ri->is_running; /* computed above */
+ rs->is_flagged_running = node->is_running; /* computed above */
if (naming) {
uint32_t name_status = dirserv_get_name_status(
- ri->cache_info.identity_digest, ri->nickname);
+ node->identity, ri->nickname);
rs->is_named = (naming && (name_status & FP_NAMED)) ? 1 : 0;
rs->is_unnamed = (naming && (name_status & FP_UNNAMED)) ? 1 : 0;
}
- rs->is_valid = ri->is_valid;
+ rs->is_valid = node->is_valid;
- if (rs->is_fast &&
+ if (node->is_fast &&
(router_get_advertised_bandwidth(ri) >= BANDWIDTH_TO_GUARANTEE_GUARD ||
router_get_advertised_bandwidth(ri) >=
MIN(guard_bandwidth_including_exits,
guard_bandwidth_excluding_exits))) {
- long tk = rep_hist_get_weighted_time_known(
- ri->cache_info.identity_digest, now);
- double wfu = rep_hist_get_weighted_fractional_uptime(
- ri->cache_info.identity_digest, now);
+ long tk = rep_hist_get_weighted_time_known(node->identity, now);
+ double wfu = rep_hist_get_weighted_fractional_uptime(node->identity, now);
rs->is_possible_guard = (wfu >= guard_wfu && tk >= guard_tk) ? 1 : 0;
} else {
rs->is_possible_guard = 0;
}
- rs->is_bad_directory = listbaddirs && ri->is_bad_directory;
- rs->is_bad_exit = listbadexits && ri->is_bad_exit;
- ri->is_hs_dir = dirserv_thinks_router_is_hs_dir(ri, now);
- rs->is_hs_dir = ri->is_hs_dir;
+ rs->is_bad_directory = listbaddirs && node->is_bad_directory;
+ rs->is_bad_exit = listbadexits && node->is_bad_exit;
+ node->is_hs_dir = dirserv_thinks_router_is_hs_dir(ri, node, now);
+ rs->is_hs_dir = node->is_hs_dir;
rs->is_v2_dir = ri->dir_port != 0;
if (!strcasecmp(ri->nickname, UNNAMED_ROUTER_NICKNAME))
rs->is_named = rs->is_unnamed = 0;
rs->published_on = ri->cache_info.published_on;
- memcpy(rs->identity_digest, ri->cache_info.identity_digest, DIGEST_LEN);
+ memcpy(rs->identity_digest, node->identity, DIGEST_LEN);
memcpy(rs->descriptor_digest, ri->cache_info.signed_descriptor_digest,
DIGEST_LEN);
rs->addr = ri->addr;
@@ -2285,7 +2320,7 @@ static void
clear_status_flags_on_sybil(routerstatus_t *rs)
{
rs->is_authority = rs->is_exit = rs->is_stable = rs->is_fast =
- rs->is_running = rs->is_named = rs->is_valid = rs->is_v2_dir =
+ rs->is_flagged_running = rs->is_named = rs->is_valid = rs->is_v2_dir =
rs->is_hs_dir = rs->is_possible_guard = rs->is_bad_exit =
rs->is_bad_directory = 0;
/* FFFF we might want some mechanism to check later on if we
@@ -2293,18 +2328,6 @@ clear_status_flags_on_sybil(routerstatus_t *rs)
* forget to add it to this clause. */
}
-/** Clear all the status flags in routerinfo <b>router</b>. We put this
- * function here because it's eerily similar to
- * clear_status_flags_on_sybil() above. One day we should merge them. */
-void
-router_clear_status_flags(routerinfo_t *router)
-{
- router->is_valid = router->is_running = router->is_hs_dir =
- router->is_fast = router->is_stable =
- router->is_possible_guard = router->is_exit =
- router->is_bad_exit = router->is_bad_directory = 0;
-}
-
/**
* Helper function to parse out a line in the measured bandwidth file
* into a measured_bw_line_t output structure. Returns -1 on failure
@@ -2552,17 +2575,20 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_env_t *private_key,
routerstatus_t *rs;
vote_routerstatus_t *vrs;
microdesc_t *md;
+ node_t *node = node_get_mutable_by_id(ri->cache_info.identity_digest);
+ if (!node)
+ continue;
vrs = tor_malloc_zero(sizeof(vote_routerstatus_t));
rs = &vrs->status;
- set_routerstatus_from_routerinfo(rs, ri, now,
+ set_routerstatus_from_routerinfo(rs, node, ri, now,
naming, listbadexits, listbaddirs);
if (digestmap_get(omit_as_sybil, ri->cache_info.identity_digest))
clear_status_flags_on_sybil(rs);
if (!vote_on_reachability)
- rs->is_running = 0;
+ rs->is_flagged_running = 0;
vrs->version = version_from_platform(ri->platform);
md = dirvote_create_microdescriptor(ri);
@@ -2693,10 +2719,8 @@ generate_v2_networkstatus_opinion(void)
char *outp, *endp;
or_options_t *options = get_options();
char fingerprint[FINGERPRINT_LEN+1];
- char ipaddr[INET_NTOA_BUF_LEN];
char published[ISO_TIME_LEN+1];
char digest[DIGEST_LEN];
- struct in_addr in;
uint32_t addr;
crypto_pk_env_t *private_key;
routerlist_t *rl = router_get_routerlist();
@@ -2711,14 +2735,12 @@ generate_v2_networkstatus_opinion(void)
smartlist_t *routers = NULL;
digestmap_t *omit_as_sybil = NULL;
- private_key = get_identity_key();
+ private_key = get_server_identity_key();
if (resolve_my_address(LOG_WARN, options, &addr, &hostname)<0) {
log_warn(LD_NET, "Couldn't resolve my hostname");
goto done;
}
- in.s_addr = htonl(addr);
- tor_inet_ntoa(&in, ipaddr, sizeof(ipaddr));
format_iso_time(published, now);
@@ -2764,7 +2786,7 @@ generate_v2_networkstatus_opinion(void)
"dir-options%s%s%s%s\n"
"%s" /* client version line, server version line. */
"dir-signing-key\n%s",
- hostname, ipaddr, (int)options->DirPort,
+ hostname, fmt_addr32(addr), (int)options->DirPort,
fingerprint,
contact,
published,
@@ -2795,8 +2817,12 @@ generate_v2_networkstatus_opinion(void)
if (ri->cache_info.published_on >= cutoff) {
routerstatus_t rs;
char *version = version_from_platform(ri->platform);
-
- set_routerstatus_from_routerinfo(&rs, ri, now,
+ node_t *node = node_get_mutable_by_id(ri->cache_info.identity_digest);
+ if (!node) {
+ tor_free(version);
+ continue;
+ }
+ set_routerstatus_from_routerinfo(&rs, node, ri, now,
naming, listbadexits, listbaddirs);
if (digestmap_get(omit_as_sybil, ri->cache_info.identity_digest))
@@ -2879,7 +2905,7 @@ dirserv_get_networkstatus_v2_fingerprints(smartlist_t *result,
if (!strcmp(key,"authority")) {
if (authdir_mode_v2(get_options())) {
- routerinfo_t *me = router_get_my_routerinfo();
+ const routerinfo_t *me = router_get_my_routerinfo();
if (me)
smartlist_add(result,
tor_memdup(me->cache_info.identity_digest, DIGEST_LEN));
@@ -2965,7 +2991,7 @@ dirserv_get_routerdesc_fingerprints(smartlist_t *fps_out, const char *key,
smartlist_add(fps_out,
tor_memdup(r->cache_info.identity_digest, DIGEST_LEN)));
} else if (!strcmp(key, "authority")) {
- routerinfo_t *ri = router_get_my_routerinfo();
+ const routerinfo_t *ri = router_get_my_routerinfo();
if (ri)
smartlist_add(fps_out,
tor_memdup(ri->cache_info.identity_digest, DIGEST_LEN));
@@ -2985,8 +3011,8 @@ dirserv_get_routerdesc_fingerprints(smartlist_t *fps_out, const char *key,
if (for_unencrypted_conn) {
/* Remove anything that insists it not be sent unencrypted. */
- SMARTLIST_FOREACH(fps_out, char *, cp, {
- signed_descriptor_t *sd;
+ SMARTLIST_FOREACH_BEGIN(fps_out, char *, cp) {
+ const signed_descriptor_t *sd;
if (by_id)
sd = get_signed_descriptor_by_fp(cp,is_extrainfo,0);
else if (is_extrainfo)
@@ -2997,7 +3023,7 @@ dirserv_get_routerdesc_fingerprints(smartlist_t *fps_out, const char *key,
tor_free(cp);
SMARTLIST_DEL_CURRENT(fps_out, cp);
}
- });
+ } SMARTLIST_FOREACH_END(cp);
}
if (!smartlist_len(fps_out)) {
@@ -3036,9 +3062,9 @@ dirserv_get_routerdescs(smartlist_t *descs_out, const char *key,
SMARTLIST_FOREACH(rl->routers, routerinfo_t *, r,
smartlist_add(descs_out, &(r->cache_info)));
} else if (!strcmp(key, "/tor/server/authority")) {
- routerinfo_t *ri = router_get_my_routerinfo();
+ const routerinfo_t *ri = router_get_my_routerinfo();
if (ri)
- smartlist_add(descs_out, &(ri->cache_info));
+ smartlist_add(descs_out, (void*) &(ri->cache_info));
} else if (!strcmpstart(key, "/tor/server/d/")) {
smartlist_t *digests = smartlist_create();
key += strlen("/tor/server/d/");
@@ -3062,17 +3088,17 @@ dirserv_get_routerdescs(smartlist_t *descs_out, const char *key,
{
if (router_digest_is_me(d)) {
/* make sure desc_routerinfo exists */
- routerinfo_t *ri = router_get_my_routerinfo();
+ const routerinfo_t *ri = router_get_my_routerinfo();
if (ri)
- smartlist_add(descs_out, &(ri->cache_info));
+ smartlist_add(descs_out, (void*) &(ri->cache_info));
} else {
- routerinfo_t *ri = router_get_by_digest(d);
+ const routerinfo_t *ri = router_get_by_id_digest(d);
/* Don't actually serve a descriptor that everyone will think is
* expired. This is an (ugly) workaround to keep buggy 0.1.1.10
* Tors from downloading descriptors that they will throw away.
*/
if (ri && ri->cache_info.published_on > cutoff)
- smartlist_add(descs_out, &(ri->cache_info));
+ smartlist_add(descs_out, (void*) &(ri->cache_info));
}
});
SMARTLIST_FOREACH(digests, char *, d, tor_free(d));
@@ -3121,6 +3147,7 @@ dirserv_orconn_tls_done(const char *address,
}
}
});
+
/* FFFF Maybe we should reinstate the code that dumps routers with the same
* addr/port but with nonmatching keys, but instead of dumping, we should
* skip testing. */
@@ -3130,7 +3157,8 @@ dirserv_orconn_tls_done(const char *address,
* an upload or a download. Used to decide whether to relaunch reachability
* testing for the server. */
int
-dirserv_should_launch_reachability_test(routerinfo_t *ri, routerinfo_t *ri_old)
+dirserv_should_launch_reachability_test(const routerinfo_t *ri,
+ const routerinfo_t *ri_old)
{
if (!authdir_mode_handles_descs(get_options(), ri->purpose))
return 0;
@@ -3254,7 +3282,7 @@ dirserv_remove_old_statuses(smartlist_t *fps, time_t cutoff)
* its extra-info document if <b>extrainfo</b> is true. Return
* NULL if not found or if the descriptor is older than
* <b>publish_cutoff</b>. */
-static signed_descriptor_t *
+static const signed_descriptor_t *
get_signed_descriptor_by_fp(const char *fp, int extrainfo,
time_t publish_cutoff)
{
@@ -3264,7 +3292,7 @@ get_signed_descriptor_by_fp(const char *fp, int extrainfo,
else
return &(router_get_my_routerinfo()->cache_info);
} else {
- routerinfo_t *ri = router_get_by_digest(fp);
+ const routerinfo_t *ri = router_get_by_id_digest(fp);
if (ri &&
ri->cache_info.published_on > publish_cutoff) {
if (extrainfo)
@@ -3332,7 +3360,7 @@ dirserv_estimate_data_size(smartlist_t *fps, int is_serverdescs,
tor_assert(fps);
if (is_serverdescs) {
int n = smartlist_len(fps);
- routerinfo_t *me = router_get_my_routerinfo();
+ const routerinfo_t *me = router_get_my_routerinfo();
result = (me?me->cache_info.signed_descriptor_len:2048) * n;
if (compressed)
result /= 2; /* observed compressibility is between 35 and 55%. */
@@ -3399,7 +3427,7 @@ connection_dirserv_add_servers_to_outbuf(dir_connection_t *conn)
connection_get_outbuf_len(TO_CONN(conn)) < DIRSERV_BUFFER_MIN) {
const char *body;
char *fp = smartlist_pop_last(conn->fingerprint_stack);
- signed_descriptor_t *sd = NULL;
+ const signed_descriptor_t *sd = NULL;
if (by_fp) {
sd = get_signed_descriptor_by_fp(fp, extra, publish_cutoff);
} else {
@@ -3457,7 +3485,7 @@ connection_dirserv_add_microdescs_to_outbuf(dir_connection_t *conn)
{
microdesc_cache_t *cache = get_microdesc_cache();
while (smartlist_len(conn->fingerprint_stack) &&
- buf_datalen(conn->_base.outbuf) < DIRSERV_BUFFER_MIN) {
+ connection_get_outbuf_len(TO_CONN(conn)) < DIRSERV_BUFFER_MIN) {
char *fp256 = smartlist_pop_last(conn->fingerprint_stack);
microdesc_t *md = microdesc_cache_lookup_by_digest256(cache, fp256);
tor_free(fp256);
diff --git a/src/or/dirserv.h b/src/or/dirserv.h
index 94e4e811d..a77963243 100644
--- a/src/or/dirserv.h
+++ b/src/or/dirserv.h
@@ -40,8 +40,6 @@
MAX_V_LINE_LEN \
)
-#define UNNAMED_ROUTER_NICKNAME "Unnamed"
-
int connection_dirserv_flushed_some(dir_connection_t *conn);
int dirserv_add_own_fingerprint(const char *nickname, crypto_pk_env_t *pk);
@@ -99,13 +97,19 @@ void dirserv_orconn_tls_done(const char *address,
uint16_t or_port,
const char *digest_rcvd,
int as_advertised);
-int dirserv_should_launch_reachability_test(routerinfo_t *ri,
- routerinfo_t *ri_old);
+int dirserv_should_launch_reachability_test(const routerinfo_t *ri,
+ const routerinfo_t *ri_old);
void dirserv_single_reachability_test(time_t now, routerinfo_t *router);
void dirserv_test_reachability(time_t now);
int authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg,
- int complain);
-int dirserv_would_reject_router(routerstatus_t *rs);
+ int complain,
+ int *valid_out);
+uint32_t dirserv_router_get_status(const routerinfo_t *router,
+ const char **msg);
+void dirserv_set_node_flags_from_authoritative_status(node_t *node,
+ uint32_t authstatus);
+
+int dirserv_would_reject_router(const routerstatus_t *rs);
int dirserv_remove_old_statuses(smartlist_t *fps, time_t cutoff);
int dirserv_have_any_serverdesc(smartlist_t *fps, int spool_src);
int dirserv_have_any_microdesc(const smartlist_t *fps);
@@ -114,7 +118,7 @@ size_t dirserv_estimate_data_size(smartlist_t *fps, int is_serverdescs,
size_t dirserv_estimate_microdesc_size(const smartlist_t *fps, int compressed);
int routerstatus_format_entry(char *buf, size_t buf_len,
- routerstatus_t *rs, const char *platform,
+ const routerstatus_t *rs, const char *platform,
routerstatus_format_type_t format);
void dirserv_free_all(void);
void cached_dir_decref(cached_dir_t *d);
diff --git a/src/or/dirvote.c b/src/or/dirvote.c
index dd36a0f91..1cb35637d 100644
--- a/src/or/dirvote.c
+++ b/src/or/dirvote.c
@@ -83,9 +83,7 @@ format_networkstatus_vote(crypto_pk_env_t *private_signing_key,
const char *client_versions = NULL, *server_versions = NULL;
char *outp, *endp;
char fingerprint[FINGERPRINT_LEN+1];
- char ipaddr[INET_NTOA_BUF_LEN];
char digest[DIGEST_LEN];
- struct in_addr in;
uint32_t addr;
routerlist_t *rl = router_get_routerlist();
char *version_lines = NULL;
@@ -98,8 +96,6 @@ format_networkstatus_vote(crypto_pk_env_t *private_signing_key,
voter = smartlist_get(v3_ns->voters, 0);
addr = voter->addr;
- in.s_addr = htonl(addr);
- tor_inet_ntoa(&in, ipaddr, sizeof(ipaddr));
base16_encode(fingerprint, sizeof(fingerprint),
v3_ns->cert->cache_info.identity_digest, DIGEST_LEN);
@@ -186,7 +182,8 @@ format_networkstatus_vote(crypto_pk_env_t *private_signing_key,
flags,
params,
voter->nickname, fingerprint, voter->address,
- ipaddr, voter->dir_port, voter->or_port, voter->contact);
+ fmt_addr32(addr), voter->dir_port, voter->or_port,
+ voter->contact);
if (r < 0) {
log_err(LD_BUG, "Insufficient memory for network status line");
@@ -1529,8 +1526,6 @@ networkstatus_compute_consensus(smartlist_t *votes,
smartlist_sort(dir_sources, _compare_dir_src_ents_by_authority_id);
SMARTLIST_FOREACH_BEGIN(dir_sources, const dir_src_ent_t *, e) {
- struct in_addr in;
- char ip[INET_NTOA_BUF_LEN];
char fingerprint[HEX_DIGEST_LEN+1];
char votedigest[HEX_DIGEST_LEN+1];
networkstatus_t *v = e->v;
@@ -1540,8 +1535,6 @@ networkstatus_compute_consensus(smartlist_t *votes,
if (e->is_legacy)
tor_assert(consensus_method >= 2);
- in.s_addr = htonl(voter->addr);
- tor_inet_ntoa(&in, ip, sizeof(ip));
base16_encode(fingerprint, sizeof(fingerprint), e->digest, DIGEST_LEN);
base16_encode(votedigest, sizeof(votedigest), voter->vote_digest,
DIGEST_LEN);
@@ -1549,7 +1542,7 @@ networkstatus_compute_consensus(smartlist_t *votes,
tor_asprintf(&buf,
"dir-source %s%s %s %s %s %d %d\n",
voter->nickname, e->is_legacy ? "-legacy" : "",
- fingerprint, voter->address, ip,
+ fingerprint, voter->address, fmt_addr32(voter->addr),
voter->dir_port,
voter->or_port);
smartlist_add(chunks, buf);
diff --git a/src/or/dirvote.h b/src/or/dirvote.h
index e384dc53b..33213a88c 100644
--- a/src/or/dirvote.h
+++ b/src/or/dirvote.h
@@ -63,6 +63,7 @@ const char *dirvote_get_pending_detached_signatures(void);
#define DGV_INCLUDE_PREVIOUS 4
const cached_dir_t *dirvote_get_vote(const char *fp, int flags);
void set_routerstatus_from_routerinfo(routerstatus_t *rs,
+ node_t *node,
routerinfo_t *ri, time_t now,
int naming, int listbadexits,
int listbaddirs);
diff --git a/src/or/dns.c b/src/or/dns.c
index 4e319b7d8..83d47914e 100644
--- a/src/or/dns.c
+++ b/src/or/dns.c
@@ -668,7 +668,7 @@ dns_resolve_impl(edge_connection_t *exitconn, int is_resolve,
cached_resolve_t *resolve;
cached_resolve_t search;
pending_connection_t *pending_connection;
- routerinfo_t *me;
+ const routerinfo_t *me;
tor_addr_t addr;
time_t now = time(NULL);
uint8_t is_reverse = 0;
diff --git a/src/or/hibernate.c b/src/or/hibernate.c
index 3c6a3fa03..e9be5930d 100644
--- a/src/or/hibernate.c
+++ b/src/or/hibernate.c
@@ -522,7 +522,7 @@ accounting_set_wakeup_time(void)
uint64_t time_to_exhaust_bw;
int time_to_consider;
- if (! identity_key_is_set()) {
+ if (! server_identity_key_is_set()) {
if (init_keys() < 0) {
log_err(LD_BUG, "Error initializing keys");
tor_assert(0);
@@ -530,7 +530,7 @@ accounting_set_wakeup_time(void)
}
format_iso_time(buf, interval_start_time);
- crypto_pk_get_digest(get_identity_key(), digest);
+ crypto_pk_get_digest(get_server_identity_key(), digest);
d_env = crypto_new_digest_env();
crypto_digest_add_bytes(d_env, buf, ISO_TIME_LEN);
diff --git a/src/or/main.c b/src/or/main.c
index ddd5da364..1e01ad14d 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -33,6 +33,7 @@
#include "main.h"
#include "microdesc.h"
#include "networkstatus.h"
+#include "nodelist.h"
#include "ntmain.h"
#include "onion.h"
#include "policies.h"
@@ -160,7 +161,7 @@ int can_complete_circuit=0;
*
****************************************************************************/
-#ifdef USE_BUFFEREVENTS
+#if 0 && defined(USE_BUFFEREVENTS)
static void
free_old_inbuf(connection_t *conn)
{
@@ -210,7 +211,12 @@ connection_add_impl(connection_t *conn, int is_connecting)
tor_libevent_get_base(),
conn->s,
BEV_OPT_DEFER_CALLBACKS);
- /* XXXX CHECK FOR NULL RETURN! */
+ if (!conn->bufev) {
+ log_warn(LD_BUG, "Unable to create socket bufferevent");
+ smartlist_del(connection_array, conn->conn_array_index);
+ conn->conn_array_index = -1;
+ return -1;
+ }
if (is_connecting) {
/* Put the bufferevent into a "connecting" state so that we'll get
* a "connected" event callback on successful write. */
@@ -222,29 +228,28 @@ connection_add_impl(connection_t *conn, int is_connecting)
tor_assert(conn->s < 0);
if (!conn->bufev) {
struct bufferevent *pair[2] = { NULL, NULL };
- /* XXXX CHECK FOR ERROR RETURN! */
- bufferevent_pair_new(tor_libevent_get_base(),
- BEV_OPT_DEFER_CALLBACKS,
- pair);
+ if (bufferevent_pair_new(tor_libevent_get_base(),
+ BEV_OPT_DEFER_CALLBACKS,
+ pair) < 0) {
+ log_warn(LD_BUG, "Unable to create bufferevent pair");
+ smartlist_del(connection_array, conn->conn_array_index);
+ conn->conn_array_index = -1;
+ return -1;
+ }
tor_assert(pair[0]);
conn->bufev = pair[0];
conn->linked_conn->bufev = pair[1];
} /* else the other side already was added, and got a bufferevent_pair */
connection_configure_bufferevent_callbacks(conn);
+ } else {
+ tor_assert(!conn->linked);
}
- if (conn->bufev && conn->inbuf) {
- /* XXX Instead we should assert that there is no inbuf, once we
- * have linked connections using bufferevents. */
- free_old_inbuf(conn);
- }
+ if (conn->bufev)
+ tor_assert(conn->inbuf == NULL);
- if (conn->linked_conn && conn->linked_conn->bufev &&
- conn->linked_conn->inbuf) {
- /* XXX Instead we should assert that there is no inbuf, once we
- * have linked connections using bufferevents. */
- free_old_inbuf(conn->linked_conn);
- }
+ if (conn->linked_conn && conn->linked_conn->bufev)
+ tor_assert(conn->linked_conn->inbuf == NULL);
}
#else
(void) is_connecting;
@@ -722,14 +727,17 @@ conn_close_if_marked(int i)
/* assert_all_pending_dns_resolves_ok(); */
#ifdef USE_BUFFEREVENTS
- if (conn->bufev && conn->hold_open_until_flushed) {
- if (conn->linked) {
+ if (conn->bufev) {
+ if (conn->hold_open_until_flushed &&
+ evbuffer_get_length(bufferevent_get_output(conn->bufev))) {
+ /* don't close yet. */
+ return 0;
+ }
+ if (conn->linked_conn && ! conn->linked_conn->marked_for_close) {
/* We need to do this explicitly so that the linked connection
* notices that there was an EOF. */
bufferevent_flush(conn->bufev, EV_WRITE, BEV_FINISHED);
}
- if (evbuffer_get_length(bufferevent_get_output(conn->bufev)))
- return 0;
}
#endif
@@ -949,8 +957,7 @@ run_connection_housekeeping(int i, time_t now)
connection_or_connect_failed(TO_OR_CONN(conn),
END_OR_CONN_REASON_TIMEOUT,
"Tor gave up on the connection");
- connection_mark_for_close(conn);
- conn->hold_open_until_flushed = 1;
+ connection_mark_and_flush(conn);
} else if (!connection_state_is_open(conn)) {
if (past_keepalive) {
/* We never managed to actually get this connection open and happy. */
@@ -1030,6 +1037,7 @@ run_scheduled_events(time_t now)
static int should_init_bridge_stats = 1;
static time_t time_to_retry_dns_init = 0;
or_options_t *options = get_options();
+ int is_server = server_mode(options);
int i;
int have_dir_info;
@@ -1039,6 +1047,16 @@ run_scheduled_events(time_t now)
*/
consider_hibernation(now);
+#if 0
+ {
+ static time_t nl_check_time = 0;
+ if (nl_check_time <= now) {
+ nodelist_assert_ok();
+ nl_check_time = now + 30;
+ }
+ }
+#endif
+
/* 0b. If we've deferred a signewnym, make sure it gets handled
* eventually. */
if (signewnym_is_pending &&
@@ -1051,7 +1069,7 @@ run_scheduled_events(time_t now)
* shut down and restart all cpuworkers, and update the directory if
* necessary.
*/
- if (server_mode(options) &&
+ if (is_server &&
get_onion_key_set_at()+MIN_ONION_KEY_LIFETIME < now) {
log_info(LD_GENERAL,"Rotating onion key.");
rotate_onion_key();
@@ -1086,7 +1104,10 @@ run_scheduled_events(time_t now)
last_rotated_x509_certificate = now;
if (last_rotated_x509_certificate+MAX_SSL_KEY_LIFETIME < now) {
log_info(LD_GENERAL,"Rotating tls context.");
- if (tor_tls_context_new(get_identity_key(), MAX_SSL_KEY_LIFETIME) < 0) {
+ if (tor_tls_context_init(public_server_mode(options),
+ get_tlsclient_identity_key(),
+ is_server ? get_server_identity_key() : NULL,
+ MAX_SSL_KEY_LIFETIME) < 0) {
log_warn(LD_BUG, "Error reinitializing TLS context");
/* XXX is it a bug here, that we just keep going? -RD */
}
@@ -1263,7 +1284,7 @@ run_scheduled_events(time_t now)
/* If we haven't checked for 12 hours and our bandwidth estimate is
* low, do another bandwidth test. This is especially important for
* bridges, since they might go long periods without much use. */
- routerinfo_t *me = router_get_my_routerinfo();
+ const routerinfo_t *me = router_get_my_routerinfo();
if (time_to_recheck_bandwidth && me &&
me->bandwidthcapacity < me->bandwidthrate &&
me->bandwidthcapacity < 51200) {
@@ -1369,7 +1390,7 @@ run_scheduled_events(time_t now)
/** 9. and if we're a server, check whether our DNS is telling stories to
* us. */
- if (server_mode(options) && time_to_check_for_correct_dns < now) {
+ if (is_server && time_to_check_for_correct_dns < now) {
if (!time_to_check_for_correct_dns) {
time_to_check_for_correct_dns = now + 60 + crypto_rand_int(120);
} else {
@@ -1464,7 +1485,7 @@ second_elapsed_callback(periodic_timer_t *timer, void *arg)
(stats_n_seconds_working+seconds_elapsed) /
TIMEOUT_UNTIL_UNREACHABILITY_COMPLAINT) {
/* every 20 minutes, check and complain if necessary */
- routerinfo_t *me = router_get_my_routerinfo();
+ const routerinfo_t *me = router_get_my_routerinfo();
if (me && !check_whether_orport_reachable()) {
log_warn(LD_CONFIG,"Your server (%s:%d) has not managed to confirm that "
"its ORPort is reachable. Please check your firewalls, ports, "
@@ -1643,7 +1664,7 @@ do_main_loop(void)
/* load the private keys, if we're supposed to have them, and set up the
* TLS context. */
- if (! identity_key_is_set()) {
+ if (! client_identity_key_is_set()) {
if (init_keys() < 0) {
log_err(LD_BUG,"Error initializing keys; exiting");
return -1;
@@ -2205,6 +2226,7 @@ tor_free_all(int postfork)
connection_free_all();
buf_shrink_freelists(1);
memarea_clear_freelist();
+ nodelist_free_all();
microdesc_free_all();
if (!postfork) {
config_free_all();
@@ -2281,7 +2303,7 @@ do_list_fingerprint(void)
log_err(LD_BUG,"Error initializing keys; can't display fingerprint");
return -1;
}
- if (!(k = get_identity_key())) {
+ if (!(k = get_server_identity_key())) {
log_err(LD_GENERAL,"Error: missing identity key.");
return -1;
}
diff --git a/src/or/microdesc.c b/src/or/microdesc.c
index 2752d15c8..e014cd076 100644
--- a/src/or/microdesc.c
+++ b/src/or/microdesc.c
@@ -4,11 +4,13 @@
#include "or.h"
#include "config.h"
#include "directory.h"
+#include "dirserv.h"
#include "microdesc.h"
-#include "routerparse.h"
#include "networkstatus.h"
+#include "nodelist.h"
+#include "policies.h"
#include "routerlist.h"
-#include "dirserv.h"
+#include "routerparse.h"
/** A data structure to hold a bunch of cached microdescriptors. There are
* two active files in the cache: a "cache file" that we mmap, and a "journal
@@ -249,6 +251,12 @@ microdescs_add_list_to_cache(microdesc_cache_t *cache,
microdesc_cache_rebuild(cache);
}
+ {
+ networkstatus_t *ns = networkstatus_get_latest_consensus();
+ if (ns && ns->flavor == FLAV_MICRODESC)
+ SMARTLIST_FOREACH(added, microdesc_t *, md, nodelist_add_microdesc(md));
+ }
+
return added;
}
@@ -311,26 +319,32 @@ microdesc_cache_reload(microdesc_cache_t *cache)
return 0;
}
-/** DOCDOC */
+/** By default, we remove any microdescriptors that have gone at least this
+ * long without appearing in a current consensus. */
#define TOLERATE_MICRODESC_AGE (7*24*60*60)
-/** DOCDOC */
+/** Remove all microdescriptors from <b>cache</b> that haven't been listed for
+ * a long time. Does not rebuild the cache on disk. If <b>cutoff</b> is
+ * positive, specifically remove microdescriptors that have been unlisted
+ * since <b>cutoff</b>. If <b>force</b> is true, remove microdescriptors even
+ * if we have no current live microdescriptor consensus.
+ */
void
-microdesc_cache_clean(microdesc_cache_t *cache)
+microdesc_cache_clean(microdesc_cache_t *cache, time_t cutoff, int force)
{
- networkstatus_t *consensus;
- time_t cutoff;
microdesc_t **mdp, *victim;
int dropped=0, kept=0;
size_t bytes_dropped = 0;
time_t now = time(NULL);
- /* If we don't know a consensus, never believe last_listed values */
- consensus = networkstatus_get_reasonably_live_consensus(now, FLAV_MICRODESC);
- if (consensus == NULL)
- return;
+ /* If we don't know a live consensus, don't believe last_listed values: we
+ * might be starting up after being down for a while. */
+ if (! force &&
+ ! networkstatus_get_reasonably_live_consensus(now, FLAV_MICRODESC))
+ return;
- cutoff = now - TOLERATE_MICRODESC_AGE;
+ if (cutoff <= 0)
+ cutoff = now - TOLERATE_MICRODESC_AGE;
for (mdp = HT_START(microdesc_map, &cache->map); mdp != NULL; ) {
if ((*mdp)->last_listed < cutoff) {
@@ -368,8 +382,10 @@ microdesc_cache_rebuild(microdesc_cache_t *cache)
log_info(LD_DIR, "Rebuilding the microdescriptor cache...");
- microdesc_cache_clean(cache);
+ /* Remove dead descriptors */
+ microdesc_cache_clean(cache, 0/*cutoff*/, 0/*force*/);
+ /* Calculate starting disk usage */
orig_size = (int)(cache->cache_content ? cache->cache_content->size : 0);
orig_size += (int)cache->journal_len;
@@ -393,6 +409,7 @@ microdesc_cache_rebuild(microdesc_cache_t *cache)
/* log? return -1? die? coredump the universe? */
continue;
}
+ tor_assert(((size_t)size) == annotation_len + md->bodylen);
md->off = off + annotation_len;
off += size;
if (md->saved_location != SAVED_IN_CACHE) {
@@ -417,7 +434,21 @@ microdesc_cache_rebuild(microdesc_cache_t *cache)
SMARTLIST_FOREACH_BEGIN(wrote, microdesc_t *, md) {
tor_assert(md->saved_location == SAVED_IN_CACHE);
md->body = (char*)cache->cache_content->data + md->off;
- tor_assert(!memcmp(md->body, "onion-key", 9));
+ if (PREDICT_UNLIKELY(
+ md->bodylen < 9 || memcmp(md->body, "onion-key", 9) != 0)) {
+ /* XXXX023 once bug 2022 is solved, we can kill this block and turn it
+ * into just the tor_assert(!memcmp) */
+ off_t avail = cache->cache_content->size - md->off;
+ char *bad_str;
+ tor_assert(avail >= 0);
+ bad_str = tor_strndup(md->body, MIN(128, (size_t)avail));
+ log_err(LD_BUG, "After rebuilding microdesc cache, offsets seem wrong. "
+ " At offset %d, I expected to find a microdescriptor starting "
+ " with \"onion-key\". Instead I got %s.",
+ (int)md->off, escaped(bad_str));
+ tor_free(bad_str);
+ tor_assert(!memcmp(md->body, "onion-key", 9));
+ }
} SMARTLIST_FOREACH_END(md);
smartlist_free(wrote);
@@ -451,7 +482,7 @@ microdesc_free(microdesc_t *md)
SMARTLIST_FOREACH(md->family, char *, cp, tor_free(cp));
smartlist_free(md->family);
}
- tor_free(md->exitsummary);
+ short_policy_free(md->exit_policy);
tor_free(md);
}
@@ -521,7 +552,13 @@ microdesc_list_missing_digest256(networkstatus_t *ns, microdesc_cache_t *cache,
return result;
}
-/** DOCDOC */
+/** Launch download requests for mircodescriptors as appropriate.
+ *
+ * Specifically, we should launch download requests if we are configured to
+ * download mirodescriptors, and there are some microdescriptors listed the
+ * current microdesc consensus that we don't have, and either we never asked
+ * for them, or we failed to download them but we're willing to retry.
+ */
void
update_microdesc_downloads(time_t now)
{
@@ -560,7 +597,10 @@ update_microdesc_downloads(time_t now)
smartlist_free(missing);
}
-/** DOCDOC */
+/** For every microdescriptor listed in the current microdecriptor consensus,
+ * update its last_listed field to be at least as recent as the publication
+ * time of the current microdescriptor consensus.
+ */
void
update_microdescs_from_networkstatus(time_t now)
{
@@ -580,3 +620,4 @@ update_microdescs_from_networkstatus(time_t now)
md->last_listed = ns->valid_after;
} SMARTLIST_FOREACH_END(rs);
}
+
diff --git a/src/or/microdesc.h b/src/or/microdesc.h
index 1dfe3ae82..eda7008b9 100644
--- a/src/or/microdesc.h
+++ b/src/or/microdesc.h
@@ -22,7 +22,7 @@ smartlist_t *microdescs_add_list_to_cache(microdesc_cache_t *cache,
smartlist_t *descriptors, saved_location_t where,
int no_save);
-void microdesc_cache_clean(microdesc_cache_t *cache);
+void microdesc_cache_clean(microdesc_cache_t *cache, time_t cutoff, int force);
int microdesc_cache_rebuild(microdesc_cache_t *cache);
int microdesc_cache_reload(microdesc_cache_t *cache);
void microdesc_cache_clear(microdesc_cache_t *cache);
diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index cba02f370..11017836d 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -22,6 +22,7 @@
#include "main.h"
#include "microdesc.h"
#include "networkstatus.h"
+#include "nodelist.h"
#include "relay.h"
#include "router.h"
#include "routerlist.h"
@@ -106,9 +107,8 @@ void
networkstatus_reset_warnings(void)
{
if (current_consensus) {
- SMARTLIST_FOREACH(current_consensus->routerstatus_list,
- routerstatus_t *, rs,
- rs->name_lookup_warned = 0);
+ SMARTLIST_FOREACH(nodelist_get_list(), node_t *, node,
+ node->name_lookup_warned = 0);
}
have_warned_about_old_version = 0;
@@ -939,10 +939,9 @@ compare_digest_to_routerstatus_entry(const void *_key, const void **_member)
return memcmp(key, rs->identity_digest, DIGEST_LEN);
}
-/** Return the entry in <b>ns</b> for the identity digest <b>digest</b>, or
- * NULL if none was found. */
+/** As networkstatus_v2_find_entry, but do not return a const pointer */
routerstatus_t *
-networkstatus_v2_find_entry(networkstatus_v2_t *ns, const char *digest)
+networkstatus_v2_find_mutable_entry(networkstatus_v2_t *ns, const char *digest)
{
return smartlist_bsearch(ns->entries, digest,
compare_digest_to_routerstatus_entry);
@@ -950,14 +949,29 @@ networkstatus_v2_find_entry(networkstatus_v2_t *ns, const char *digest)
/** Return the entry in <b>ns</b> for the identity digest <b>digest</b>, or
* NULL if none was found. */
+const routerstatus_t *
+networkstatus_v2_find_entry(networkstatus_v2_t *ns, const char *digest)
+{
+ return networkstatus_v2_find_mutable_entry(ns, digest);
+}
+
+/** As networkstatus_find_entry, but do not return a const pointer */
routerstatus_t *
-networkstatus_vote_find_entry(networkstatus_t *ns, const char *digest)
+networkstatus_vote_find_mutable_entry(networkstatus_t *ns, const char *digest)
{
return smartlist_bsearch(ns->routerstatus_list, digest,
compare_digest_to_routerstatus_entry);
}
-/*XXXX make this static once functions are moved into this file. */
+/** Return the entry in <b>ns</b> for the identity digest <b>digest</b>, or
+ * NULL if none was found. */
+const routerstatus_t *
+networkstatus_vote_find_entry(networkstatus_t *ns, const char *digest)
+{
+ return networkstatus_vote_find_mutable_entry(ns, digest);
+}
+
+/*XXXX MOVE make this static once functions are moved into this file. */
/** Search the routerstatuses in <b>ns</b> for one whose identity digest is
* <b>digest</b>. Return value and set *<b>found_out</b> as for
* smartlist_bsearch_idx(). */
@@ -979,11 +993,11 @@ networkstatus_get_v2_list(void)
return networkstatus_v2_list;
}
-/** Return the consensus view of the status of the router whose current
- * <i>descriptor</i> digest in <b>consensus</b> is <b>digest</b>, or NULL if
- * no such router is known. */
+/* As router_get_consensus_status_by_descriptor_digest, but does not return
+ * a const pointer */
routerstatus_t *
-router_get_consensus_status_by_descriptor_digest(networkstatus_t *consensus,
+router_get_mutable_consensus_status_by_descriptor_digest(
+ networkstatus_t *consensus,
const char *digest)
{
if (!consensus)
@@ -1001,6 +1015,17 @@ router_get_consensus_status_by_descriptor_digest(networkstatus_t *consensus,
return digestmap_get(consensus->desc_digest_map, digest);
}
+/** Return the consensus view of the status of the router whose current
+ * <i>descriptor</i> digest in <b>consensus</b> is <b>digest</b>, or NULL if
+ * no such router is known. */
+const routerstatus_t *
+router_get_consensus_status_by_descriptor_digest(networkstatus_t *consensus,
+ const char *digest)
+{
+ return router_get_mutable_consensus_status_by_descriptor_digest(
+ consensus, digest);
+}
+
/** Given the digest of a router descriptor, return its current download
* status, or NULL if the digest is unrecognized. */
download_status_t *
@@ -1009,8 +1034,8 @@ router_get_dl_status_by_descriptor_digest(const char *d)
routerstatus_t *rs;
if (!current_ns_consensus)
return NULL;
- if ((rs = router_get_consensus_status_by_descriptor_digest(
- current_ns_consensus, d)))
+ if ((rs = router_get_mutable_consensus_status_by_descriptor_digest(
+ current_ns_consensus, d)))
return &rs->dl_status;
if (v2_download_status_map)
return digestmap_get(v2_download_status_map, d);
@@ -1018,10 +1043,9 @@ router_get_dl_status_by_descriptor_digest(const char *d)
return NULL;
}
-/** Return the consensus view of the status of the router whose identity
- * digest is <b>digest</b>, or NULL if we don't know about any such router. */
+/** As router_get_consensus_status_by_id, but do not return a const pointer */
routerstatus_t *
-router_get_consensus_status_by_id(const char *digest)
+router_get_mutable_consensus_status_by_id(const char *digest)
{
if (!current_consensus)
return NULL;
@@ -1029,100 +1053,27 @@ router_get_consensus_status_by_id(const char *digest)
compare_digest_to_routerstatus_entry);
}
+/** Return the consensus view of the status of the router whose identity
+ * digest is <b>digest</b>, or NULL if we don't know about any such router. */
+const routerstatus_t *
+router_get_consensus_status_by_id(const char *digest)
+{
+ return router_get_mutable_consensus_status_by_id(digest);
+}
+
/** Given a nickname (possibly verbose, possibly a hexadecimal digest), return
* the corresponding routerstatus_t, or NULL if none exists. Warn the
* user if <b>warn_if_unnamed</b> is set, and they have specified a router by
* nickname, but the Named flag isn't set for that router. */
-routerstatus_t *
+const routerstatus_t *
router_get_consensus_status_by_nickname(const char *nickname,
int warn_if_unnamed)
{
- char digest[DIGEST_LEN];
- routerstatus_t *best=NULL;
- smartlist_t *matches=NULL;
- const char *named_id=NULL;
-
- if (!current_consensus || !nickname)
- return NULL;
-
- /* Is this name really a hexadecimal identity digest? */
- if (nickname[0] == '$') {
- if (base16_decode(digest, DIGEST_LEN, nickname+1, strlen(nickname+1))<0)
- return NULL;
- return networkstatus_vote_find_entry(current_consensus, digest);
- } else if (strlen(nickname) == HEX_DIGEST_LEN &&
- (base16_decode(digest, DIGEST_LEN, nickname, strlen(nickname))==0)) {
- return networkstatus_vote_find_entry(current_consensus, digest);
- }
-
- /* Is there a server that is Named with this name? */
- if (named_server_map)
- named_id = strmap_get_lc(named_server_map, nickname);
- if (named_id)
- return networkstatus_vote_find_entry(current_consensus, named_id);
-
- /* Okay; is this name listed as Unnamed? */
- if (unnamed_server_map &&
- strmap_get_lc(unnamed_server_map, nickname)) {
- log_info(LD_GENERAL, "The name %s is listed as Unnamed; it is not the "
- "canonical name of any server we know.", escaped(nickname));
+ const node_t *node = node_get_by_nickname(nickname, warn_if_unnamed);
+ if (node)
+ return node->rs;
+ else
return NULL;
- }
-
- /* This name is not canonical for any server; go through the list and
- * see who it matches. */
- /*XXXX This is inefficient; optimize it if it matters. */
- matches = smartlist_create();
- SMARTLIST_FOREACH(current_consensus->routerstatus_list,
- routerstatus_t *, lrs,
- {
- if (!strcasecmp(lrs->nickname, nickname)) {
- if (lrs->is_named) {
- tor_fragile_assert() /* This should never happen. */
- smartlist_free(matches);
- return lrs;
- } else {
- if (lrs->is_unnamed) {
- tor_fragile_assert(); /* nor should this. */
- smartlist_clear(matches);
- best=NULL;
- break;
- }
- smartlist_add(matches, lrs);
- best = lrs;
- }
- }
- });
-
- if (smartlist_len(matches)>1 && warn_if_unnamed) {
- int any_unwarned=0;
- SMARTLIST_FOREACH(matches, routerstatus_t *, lrs,
- {
- if (! lrs->name_lookup_warned) {
- lrs->name_lookup_warned=1;
- any_unwarned=1;
- }
- });
- if (any_unwarned) {
- log_warn(LD_CONFIG,"There are multiple matches for the nickname \"%s\","
- " but none is listed as named by the directory authorities. "
- "Choosing one arbitrarily.", nickname);
- }
- } else if (warn_if_unnamed && best && !best->name_lookup_warned) {
- char fp[HEX_DIGEST_LEN+1];
- base16_encode(fp, sizeof(fp),
- best->identity_digest, DIGEST_LEN);
- log_warn(LD_CONFIG,
- "When looking up a status, you specified a server \"%s\" by name, "
- "but the directory authorities do not have any key registered for "
- "this nickname -- so it could be used by any server, "
- "not just the one you meant. "
- "To make sure you get the same server in the future, refer to "
- "it by key, as \"$%s\".", nickname, fp);
- best->name_lookup_warned = 1;
- }
- smartlist_free(matches);
- return best;
}
/** Return the identity digest that's mapped to officially by
@@ -1524,7 +1475,7 @@ routerstatus_has_changed(const routerstatus_t *a, const routerstatus_t *b)
a->is_exit != b->is_exit ||
a->is_stable != b->is_stable ||
a->is_fast != b->is_fast ||
- a->is_running != b->is_running ||
+ a->is_flagged_running != b->is_flagged_running ||
a->is_named != b->is_named ||
a->is_unnamed != b->is_unnamed ||
a->is_valid != b->is_valid ||
@@ -1565,13 +1516,14 @@ notify_control_networkstatus_changed(const networkstatus_t *old_c,
}
changed = smartlist_create();
- SMARTLIST_FOREACH_JOIN(old_c->routerstatus_list, routerstatus_t *, rs_old,
- new_c->routerstatus_list, routerstatus_t *, rs_new,
- memcmp(rs_old->identity_digest,
- rs_new->identity_digest, DIGEST_LEN),
- smartlist_add(changed, rs_new)) {
+ SMARTLIST_FOREACH_JOIN(
+ old_c->routerstatus_list, const routerstatus_t *, rs_old,
+ new_c->routerstatus_list, const routerstatus_t *, rs_new,
+ memcmp(rs_old->identity_digest,
+ rs_new->identity_digest, DIGEST_LEN),
+ smartlist_add(changed, (void*) rs_new)) {
if (routerstatus_has_changed(rs_old, rs_new))
- smartlist_add(changed, rs_new);
+ smartlist_add(changed, (void*)rs_new);
} SMARTLIST_FOREACH_JOIN_END(rs_old, rs_new);
control_event_networkstatus_changed(changed);
@@ -1595,7 +1547,6 @@ networkstatus_copy_old_consensus_info(networkstatus_t *new_c,
rs_new->identity_digest, DIGEST_LEN),
STMT_NIL) {
/* Okay, so we're looking at the same identity. */
- rs_new->name_lookup_warned = rs_old->name_lookup_warned;
rs_new->last_dir_503_at = rs_old->last_dir_503_at;
if (!memcmp(rs_old->descriptor_digest, rs_new->descriptor_digest,
@@ -1642,7 +1593,7 @@ networkstatus_set_current_consensus(const char *consensus,
const digests_t *current_digests = NULL;
consensus_waiting_for_certs_t *waiting = NULL;
time_t current_valid_after = 0;
- int free_consensus = 1;
+ int free_consensus = 1; /* Free 'c' at the end of the function */
if (flav < 0) {
/* XXXX we don't handle unrecognized flavors yet. */
@@ -1742,7 +1693,7 @@ networkstatus_set_current_consensus(const char *consensus,
networkstatus_vote_free(waiting->consensus);
tor_free(waiting->body);
waiting->consensus = c;
- c = NULL; /* Prevent free. */
+ free_consensus = 0;
waiting->body = tor_strdup(consensus);
waiting->set_at = now;
waiting->dl_failed = 0;
@@ -1788,6 +1739,10 @@ networkstatus_set_current_consensus(const char *consensus,
if (current_ns_consensus) {
networkstatus_copy_old_consensus_info(c, current_ns_consensus);
networkstatus_vote_free(current_ns_consensus);
+ /* Defensive programming : we should set current_consensus very soon,
+ * but we're about to call some stuff in the meantime, and leaving this
+ * dangling pointer around has proven to be trouble. */
+ current_ns_consensus = NULL;
}
current_ns_consensus = c;
free_consensus = 0; /* avoid free */
@@ -1795,6 +1750,8 @@ networkstatus_set_current_consensus(const char *consensus,
if (current_md_consensus) {
networkstatus_copy_old_consensus_info(c, current_md_consensus);
networkstatus_vote_free(current_md_consensus);
+ /* more defensive programming */
+ current_md_consensus = NULL;
}
current_md_consensus = c;
free_consensus = 0; /* avoid free */
@@ -1822,17 +1779,12 @@ networkstatus_set_current_consensus(const char *consensus,
download_status_failed(&consensus_dl_status[flav], 0);
}
- if (directory_caches_dir_info(options)) {
- dirserv_set_cached_consensus_networkstatus(consensus,
- flavor,
- &c->digests,
- c->valid_after);
- }
-
if (flav == USABLE_CONSENSUS_FLAVOR) {
/* XXXXNM Microdescs: needs a non-ns variant. */
update_consensus_networkstatus_fetch_time(now);
+ nodelist_set_consensus(current_consensus);
+
dirvote_recalculate_timing(options, now);
routerstatus_list_update_named_server_map();
cell_ewma_set_scale_factor(options, current_consensus);
@@ -1843,11 +1795,18 @@ networkstatus_set_current_consensus(const char *consensus,
circuit_build_times_new_consensus_params(&circ_times, current_consensus);
}
+ if (directory_caches_dir_info(options)) {
+ dirserv_set_cached_consensus_networkstatus(consensus,
+ flavor,
+ &c->digests,
+ c->valid_after);
+ }
+
if (!from_cache) {
write_str_to_file(consensus_fname, consensus, 0);
}
- if (ftime_definitely_before(now, c->valid_after)) {
+ if (time_definitely_before(now, c->valid_after, 60)) {
char tbuf[ISO_TIME_LEN+1];
char dbuf[64];
long delta = now - c->valid_after;
@@ -1975,7 +1934,7 @@ download_status_map_update_from_v2_networkstatus(void)
dl_status = digestmap_new();
SMARTLIST_FOREACH_BEGIN(networkstatus_v2_list, networkstatus_v2_t *, ns) {
- SMARTLIST_FOREACH_BEGIN(ns->entries, routerstatus_t *, rs) {
+ SMARTLIST_FOREACH_BEGIN(ns->entries, const routerstatus_t *, rs) {
const char *d = rs->descriptor_digest;
download_status_t *s;
if (digestmap_get(dl_status, d))
@@ -2003,7 +1962,8 @@ routerstatus_list_update_named_server_map(void)
named_server_map = strmap_new();
strmap_free(unnamed_server_map, NULL);
unnamed_server_map = strmap_new();
- SMARTLIST_FOREACH(current_consensus->routerstatus_list, routerstatus_t *, rs,
+ SMARTLIST_FOREACH(current_consensus->routerstatus_list,
+ const routerstatus_t *, rs,
{
if (rs->is_named) {
strmap_set_lc(named_server_map, rs->nickname,
@@ -2025,7 +1985,6 @@ routers_update_status_from_consensus_networkstatus(smartlist_t *routers,
trusted_dir_server_t *ds;
or_options_t *options = get_options();
int authdir = authdir_mode_v2(options) || authdir_mode_v3(options);
- int namingdir = authdir && options->NamingAuthoritativeDir;
networkstatus_t *ns = current_consensus;
if (!ns || !smartlist_len(ns->routerstatus_list))
return;
@@ -2039,25 +1998,19 @@ routers_update_status_from_consensus_networkstatus(smartlist_t *routers,
memcmp(rs->identity_digest,
router->cache_info.identity_digest, DIGEST_LEN),
{
+#if 0
/* We have no routerstatus for this router. Clear flags and skip it. */
- if (!namingdir)
- router->is_named = 0;
if (!authdir) {
if (router->purpose == ROUTER_PURPOSE_GENERAL)
router_clear_status_flags(router);
}
+#endif
}) {
/* We have a routerstatus for this router. */
const char *digest = router->cache_info.identity_digest;
ds = router_get_trusteddirserver_by_digest(digest);
- if (!namingdir) {
- if (rs->is_named && !strcasecmp(router->nickname, rs->nickname))
- router->is_named = 1;
- else
- router->is_named = 0;
- }
/* Is it the same descriptor, or only the same identity? */
if (!memcmp(router->cache_info.signed_descriptor_digest,
rs->descriptor_digest, DIGEST_LEN)) {
@@ -2065,28 +2018,17 @@ routers_update_status_from_consensus_networkstatus(smartlist_t *routers,
router->cache_info.last_listed_as_valid_until = ns->valid_until;
}
- if (!authdir) {
- /* If we're not an authdir, believe others. */
- router->is_valid = rs->is_valid;
- router->is_running = rs->is_running;
- router->is_fast = rs->is_fast;
- router->is_stable = rs->is_stable;
- router->is_possible_guard = rs->is_possible_guard;
- router->is_exit = rs->is_exit;
- router->is_bad_directory = rs->is_bad_directory;
- router->is_bad_exit = rs->is_bad_exit;
- router->is_hs_dir = rs->is_hs_dir;
- } else {
+ if (authdir) {
/* If we _are_ an authority, we should check whether this router
* is one that will cause us to need a reachability test. */
routerinfo_t *old_router =
- router_get_by_digest(router->cache_info.identity_digest);
+ router_get_mutable_by_digest(router->cache_info.identity_digest);
if (old_router != router) {
router->needs_retest_if_added =
dirserv_should_launch_reachability_test(router, old_router);
}
}
- if (router->is_running && ds) {
+ if (rs->is_flagged_running && ds) {
download_status_reset(&ds->v2_ns_dl_status);
}
if (reset_failures) {
@@ -2095,10 +2037,9 @@ routers_update_status_from_consensus_networkstatus(smartlist_t *routers,
} SMARTLIST_FOREACH_JOIN_END(rs, router);
/* Now update last_listed_as_valid_until from v2 networkstatuses. */
- /* XXXX If this is slow, we need to rethink the code. */
SMARTLIST_FOREACH(networkstatus_v2_list, networkstatus_v2_t *, ns, {
time_t live_until = ns->published_on + V2_NETWORKSTATUS_ROUTER_LIFETIME;
- SMARTLIST_FOREACH_JOIN(ns->entries, routerstatus_t *, rs,
+ SMARTLIST_FOREACH_JOIN(ns->entries, const routerstatus_t *, rs,
routers, routerinfo_t *, ri,
memcmp(rs->identity_digest,
ri->cache_info.identity_digest, DIGEST_LEN),
@@ -2131,7 +2072,7 @@ signed_descs_update_status_from_consensus_networkstatus(smartlist_t *descs)
}
SMARTLIST_FOREACH(descs, signed_descriptor_t *, d,
{
- routerstatus_t *rs = digestmap_get(ns->desc_digest_map,
+ const routerstatus_t *rs = digestmap_get(ns->desc_digest_map,
d->signed_descriptor_digest);
if (rs) {
if (ns->valid_until > d->last_listed_as_valid_until)
@@ -2144,7 +2085,7 @@ signed_descs_update_status_from_consensus_networkstatus(smartlist_t *descs)
* return the result in a newly allocated string. Used only by controller
* interface (for now.) */
char *
-networkstatus_getinfo_helper_single(routerstatus_t *rs)
+networkstatus_getinfo_helper_single(const routerstatus_t *rs)
{
char buf[RS_ENTRY_LEN+1];
routerstatus_format_entry(buf, sizeof(buf), rs, NULL, NS_CONTROL_PORT);
@@ -2177,6 +2118,9 @@ networkstatus_getinfo_by_purpose(const char *purpose_string, time_t now)
statuses = smartlist_create();
SMARTLIST_FOREACH(rl->routers, routerinfo_t *, ri, {
+ node_t *node = node_get_mutable_by_id(ri->cache_info.identity_digest);
+ if (!node)
+ continue;
if (ri->cache_info.published_on < cutoff)
continue;
if (ri->purpose != purpose)
@@ -2184,7 +2128,7 @@ networkstatus_getinfo_by_purpose(const char *purpose_string, time_t now)
if (bridge_auth && ri->purpose == ROUTER_PURPOSE_BRIDGE)
dirserv_set_router_is_running(ri, now);
/* then generate and write out status lines for each of them */
- set_routerstatus_from_routerinfo(&rs, ri, now, 0, 0, 0);
+ set_routerstatus_from_routerinfo(&rs, node, ri, now, 0, 0, 0);
smartlist_add(statuses, networkstatus_getinfo_helper_single(&rs));
});
@@ -2300,7 +2244,7 @@ getinfo_helper_networkstatus(control_connection_t *conn,
const char *question, char **answer,
const char **errmsg)
{
- routerstatus_t *status;
+ const routerstatus_t *status;
(void) conn;
if (!current_consensus) {
@@ -2311,7 +2255,7 @@ getinfo_helper_networkstatus(control_connection_t *conn,
if (!strcmp(question, "ns/all")) {
smartlist_t *statuses = smartlist_create();
SMARTLIST_FOREACH(current_consensus->routerstatus_list,
- routerstatus_t *, rs,
+ const routerstatus_t *, rs,
{
smartlist_add(statuses, networkstatus_getinfo_helper_single(rs));
});
diff --git a/src/or/networkstatus.h b/src/or/networkstatus.h
index adaddc498..aa5496e2b 100644
--- a/src/or/networkstatus.h
+++ b/src/or/networkstatus.h
@@ -38,20 +38,30 @@ int router_set_networkstatus_v2(const char *s, time_t arrived_at,
void networkstatus_v2_list_clean(time_t now);
int compare_digest_to_routerstatus_entry(const void *_key,
const void **_member);
-routerstatus_t *networkstatus_v2_find_entry(networkstatus_v2_t *ns,
+const routerstatus_t *networkstatus_v2_find_entry(networkstatus_v2_t *ns,
const char *digest);
-routerstatus_t *networkstatus_vote_find_entry(networkstatus_t *ns,
+const routerstatus_t *networkstatus_vote_find_entry(networkstatus_t *ns,
+ const char *digest);
+routerstatus_t *networkstatus_v2_find_mutable_entry(networkstatus_v2_t *ns,
+ const char *digest);
+routerstatus_t *networkstatus_vote_find_mutable_entry(networkstatus_t *ns,
const char *digest);
int networkstatus_vote_find_entry_idx(networkstatus_t *ns,
const char *digest, int *found_out);
const smartlist_t *networkstatus_get_v2_list(void);
download_status_t *router_get_dl_status_by_descriptor_digest(const char *d);
-routerstatus_t *router_get_consensus_status_by_id(const char *digest);
-routerstatus_t *router_get_consensus_status_by_descriptor_digest(
+const routerstatus_t *router_get_consensus_status_by_id(const char *digest);
+routerstatus_t *router_get_mutable_consensus_status_by_id(
+ const char *digest);
+const routerstatus_t *router_get_consensus_status_by_descriptor_digest(
+ networkstatus_t *consensus,
+ const char *digest);
+routerstatus_t *router_get_mutable_consensus_status_by_descriptor_digest(
networkstatus_t *consensus,
const char *digest);
-routerstatus_t *router_get_consensus_status_by_nickname(const char *nickname,
- int warn_if_unnamed);
+const routerstatus_t *router_get_consensus_status_by_nickname(
+ const char *nickname,
+ int warn_if_unnamed);
const char *networkstatus_get_router_digest_by_nickname(const char *nickname);
int networkstatus_nickname_is_unnamed(const char *nickname);
void networkstatus_consensus_download_failed(int status_code,
@@ -83,7 +93,7 @@ void routers_update_status_from_consensus_networkstatus(smartlist_t *routers,
void signed_descs_update_status_from_consensus_networkstatus(
smartlist_t *descs);
-char *networkstatus_getinfo_helper_single(routerstatus_t *rs);
+char *networkstatus_getinfo_helper_single(const routerstatus_t *rs);
char *networkstatus_getinfo_by_purpose(const char *purpose_string, time_t now);
void networkstatus_dump_bridge_status_to_file(time_t now);
int32_t get_net_param_from_list(smartlist_t *net_params, const char *name,
diff --git a/src/or/nodelist.c b/src/or/nodelist.c
new file mode 100644
index 000000000..951a7a8e8
--- /dev/null
+++ b/src/or/nodelist.c
@@ -0,0 +1,733 @@
+/* Copyright (c) 2001 Matej Pfajfar.
+ * Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2010, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include "or.h"
+#include "config.h"
+#include "dirserv.h"
+#include "microdesc.h"
+#include "networkstatus.h"
+#include "nodelist.h"
+#include "policies.h"
+#include "router.h"
+#include "routerlist.h"
+
+#include <string.h>
+
+static void nodelist_drop_node(node_t *node, int remove_from_ht);
+static void node_free(node_t *node);
+
+/** A nodelist_t holds a node_t object for every router we're "willing to use
+ * for something". Specifically, it should hold a node_t for every node that
+ * is currently in the routerlist, or currently in the consensus we're using.
+ */
+typedef struct nodelist_t {
+ /* A list of all the nodes. */
+ smartlist_t *nodes;
+ /* Hash table to map from node ID digest to node. */
+ HT_HEAD(nodelist_map, node_t) nodes_by_id;
+
+} nodelist_t;
+
+static INLINE unsigned int
+node_id_hash(const node_t *node)
+{
+#if SIZEOF_INT == 4
+ const uint32_t *p = (const uint32_t*)node->identity;
+ return p[0] ^ p[1] ^ p[2] ^ p[3] ^ p[4];
+#elif SIZEOF_INT == 8
+ const uint64_t *p = (const uint32_t*)node->identity;
+ const uint32_t *p32 = (const uint32_t*)node->identity;
+ return p[0] ^ p[1] ^ p32[4];
+#endif
+}
+
+static INLINE unsigned int
+node_id_eq(const node_t *node1, const node_t *node2)
+{
+ return 0 == memcmp(node1->identity, node2->identity, DIGEST_LEN);
+}
+
+HT_PROTOTYPE(nodelist_map, node_t, ht_ent, node_id_hash, node_id_eq);
+HT_GENERATE(nodelist_map, node_t, ht_ent, node_id_hash, node_id_eq,
+ 0.6, malloc, realloc, free);
+
+/** The global nodelist. */
+static nodelist_t *the_nodelist=NULL;
+
+/** Create an empty nodelist if we haven't done so already. */
+static void
+init_nodelist(void)
+{
+ if (PREDICT_UNLIKELY(the_nodelist == NULL)) {
+ the_nodelist = tor_malloc_zero(sizeof(nodelist_t));
+ HT_INIT(nodelist_map, &the_nodelist->nodes_by_id);
+ the_nodelist->nodes = smartlist_create();
+ }
+}
+
+/** As node_get_by_id, but returns a non-const pointer */
+node_t *
+node_get_mutable_by_id(const char *identity_digest)
+{
+ node_t search, *node;
+ if (PREDICT_UNLIKELY(the_nodelist == NULL))
+ return NULL;
+
+ memcpy(&search.identity, identity_digest, DIGEST_LEN);
+ node = HT_FIND(nodelist_map, &the_nodelist->nodes_by_id, &search);
+ return node;
+}
+
+/** Return the node_t whose identity is <b>identity_digest</b>, or NULL
+ * if no such node exists. */
+const node_t *
+node_get_by_id(const char *identity_digest)
+{
+ return node_get_mutable_by_id(identity_digest);
+}
+
+/** Internal: return the node_t whose identity_digest is
+ * <b>identity_digest</b>. If none exists, create a new one, add it to the
+ * nodelist, and return it.
+ *
+ * Requires that the nodelist be initialized.
+ */
+static node_t *
+node_get_or_create(const char *identity_digest)
+{
+ node_t *node;
+
+ if ((node = node_get_mutable_by_id(identity_digest)))
+ return node;
+
+ node = tor_malloc_zero(sizeof(node_t));
+ memcpy(node->identity, identity_digest, DIGEST_LEN);
+ HT_INSERT(nodelist_map, &the_nodelist->nodes_by_id, node);
+
+ smartlist_add(the_nodelist->nodes, node);
+ node->nodelist_idx = smartlist_len(the_nodelist->nodes) - 1;
+
+ node->country = -1;
+
+ return node;
+}
+
+/** Add <b>ri</b> to the nodelist. */
+node_t *
+nodelist_add_routerinfo(routerinfo_t *ri)
+{
+ node_t *node;
+ init_nodelist();
+ node = node_get_or_create(ri->cache_info.identity_digest);
+ node->ri = ri;
+
+ if (node->country == -1)
+ node_set_country(node);
+
+ if (authdir_mode(get_options())) {
+ const char *discard=NULL;
+ uint32_t status = dirserv_router_get_status(ri, &discard);
+ dirserv_set_node_flags_from_authoritative_status(node, status);
+ }
+
+ return node;
+}
+
+/** Set the appropriate node_t to use <b>md</b> as its microdescriptor.
+ *
+ * Called when a new microdesc has arrived and the usable consensus flavor
+ * is "microdesc".
+ **/
+node_t *
+nodelist_add_microdesc(microdesc_t *md)
+{
+ networkstatus_t *ns =
+ networkstatus_get_latest_consensus_by_flavor(FLAV_MICRODESC);
+ const routerstatus_t *rs;
+ node_t *node;
+ if (ns == NULL)
+ return NULL;
+ init_nodelist();
+
+ /* Microdescriptors don't carry an identity digest, so we need to figure
+ * it out by looking up the routerstatus. */
+ rs = router_get_consensus_status_by_descriptor_digest(ns, md->digest);
+ if (rs == NULL)
+ return NULL;
+ node = node_get_mutable_by_id(rs->identity_digest);
+ if (node)
+ node->md = md;
+ return node;
+}
+
+/** Tell the nodelist that the current usable consensus to <b>ns</b>.
+ * This makes the nodelist change all of the routerstatus entries for
+ * the nodes, drop nodes that no longer have enough info to get used,
+ * and grab microdescriptors into nodes as appropriate.
+ */
+void
+nodelist_set_consensus(networkstatus_t *ns)
+{
+ or_options_t *options = get_options();
+ int authdir = authdir_mode_v2(options) || authdir_mode_v3(options);
+ init_nodelist();
+
+ SMARTLIST_FOREACH(the_nodelist->nodes, node_t *, node,
+ node->rs = NULL);
+
+ SMARTLIST_FOREACH_BEGIN(ns->routerstatus_list, routerstatus_t *, rs) {
+ node_t *node = node_get_or_create(rs->identity_digest);
+ node->rs = rs;
+ if (ns->flavor == FLAV_MICRODESC) {
+ if (node->md == NULL ||
+ 0!=memcmp(node->md->digest,rs->descriptor_digest,DIGEST256_LEN)) {
+ node->md = microdesc_cache_lookup_by_digest256(NULL,
+ rs->descriptor_digest);
+ }
+ }
+
+ node_set_country(node);
+
+ /* If we're not an authdir, believe others. */
+ if (!authdir) {
+ node->is_valid = rs->is_valid;
+ node->is_running = rs->is_flagged_running;
+ node->is_fast = rs->is_fast;
+ node->is_stable = rs->is_stable;
+ node->is_possible_guard = rs->is_possible_guard;
+ node->is_exit = rs->is_exit;
+ node->is_bad_directory = rs->is_bad_directory;
+ node->is_bad_exit = rs->is_bad_exit;
+ node->is_hs_dir = rs->is_hs_dir;
+ }
+
+ } SMARTLIST_FOREACH_END(rs);
+
+ nodelist_purge();
+
+ if (! authdir) {
+ SMARTLIST_FOREACH_BEGIN(the_nodelist->nodes, node_t *, node) {
+ /* We have no routerstatus for this router. Clear flags so we can skip
+ * it, maybe.*/
+ if (!node->rs) {
+ tor_assert(node->ri); /* if it had only an md, or nothing, purge
+ * would have removed it. */
+ if (node->ri->purpose == ROUTER_PURPOSE_GENERAL) {
+ /* Clear all flags. */
+ node->is_valid = node->is_running = node->is_hs_dir =
+ node->is_fast = node->is_stable =
+ node->is_possible_guard = node->is_exit =
+ node->is_bad_exit = node->is_bad_directory = 0;
+ }
+ }
+ } SMARTLIST_FOREACH_END(node);
+ }
+}
+
+/** Helper: return true iff a node has a usable amount of information*/
+static INLINE int
+node_is_usable(const node_t *node)
+{
+ return (node->rs) || (node->ri);
+}
+
+/** Tell the nodelist that <b>md</b> is no longer a microdescriptor for the
+ * node with <b>identity_digest</b>. */
+void
+nodelist_remove_microdesc(const char *identity_digest, microdesc_t *md)
+{
+ node_t *node = node_get_mutable_by_id(identity_digest);
+ if (node && node->md == md)
+ node->md = NULL;
+}
+
+/** Tell the nodelist that <b>ri</b> is no longer in the routerlist. */
+void
+nodelist_remove_routerinfo(routerinfo_t *ri)
+{
+ node_t *node = node_get_mutable_by_id(ri->cache_info.identity_digest);
+ if (node && node->ri == ri) {
+ node->ri = NULL;
+ if (! node_is_usable(node)) {
+ nodelist_drop_node(node, 1);
+ node_free(node);
+ }
+ }
+}
+
+/** Remove <b>node</b> from the nodelist. (Asserts that it was there to begin
+ * with.) */
+static void
+nodelist_drop_node(node_t *node, int remove_from_ht)
+{
+ node_t *tmp;
+ int idx;
+ if (remove_from_ht) {
+ tmp = HT_REMOVE(nodelist_map, &the_nodelist->nodes_by_id, node);
+ tor_assert(tmp == node);
+ }
+
+ idx = node->nodelist_idx;
+ tor_assert(idx >= 0);
+
+ tor_assert(node == smartlist_get(the_nodelist->nodes, idx));
+ smartlist_del(the_nodelist->nodes, idx);
+ if (idx < smartlist_len(the_nodelist->nodes)) {
+ tmp = smartlist_get(the_nodelist->nodes, idx);
+ tmp->nodelist_idx = idx;
+ }
+ node->nodelist_idx = -1;
+}
+
+/** Release storage held by <b>node</b> */
+static void
+node_free(node_t *node)
+{
+ if (!node)
+ return;
+ tor_assert(node->nodelist_idx == -1);
+ tor_free(node);
+}
+
+/** Remove all entries from the nodelist that don't have enough info to be
+ * usable for anything. */
+void
+nodelist_purge(void)
+{
+ node_t **iter;
+ if (PREDICT_UNLIKELY(the_nodelist == NULL))
+ return;
+
+ /* Remove the non-usable nodes. */
+ for (iter = HT_START(nodelist_map, &the_nodelist->nodes_by_id); iter; ) {
+ node_t *node = *iter;
+
+ if (node_is_usable(node)) {
+ iter = HT_NEXT(nodelist_map, &the_nodelist->nodes_by_id, iter);
+ } else {
+ iter = HT_NEXT_RMV(nodelist_map, &the_nodelist->nodes_by_id, iter);
+ nodelist_drop_node(node, 0);
+ node_free(node);
+ }
+ }
+ nodelist_assert_ok();
+}
+
+/** Release all storage held by the nodelist. */
+void
+nodelist_free_all(void)
+{
+ if (PREDICT_UNLIKELY(the_nodelist == NULL))
+ return;
+
+ HT_CLEAR(nodelist_map, &the_nodelist->nodes_by_id);
+ SMARTLIST_FOREACH_BEGIN(the_nodelist->nodes, node_t *, node) {
+ node->nodelist_idx = -1;
+ node_free(node);
+ } SMARTLIST_FOREACH_END(node);
+
+ smartlist_free(the_nodelist->nodes);
+
+ tor_free(the_nodelist);
+}
+
+/** Check that the nodelist is internally consistent, and consistent with
+ * the directory info it's derived from.
+ */
+void
+nodelist_assert_ok(void)
+{
+ routerlist_t *rl = router_get_routerlist();
+ networkstatus_t *ns = networkstatus_get_latest_consensus();
+ digestmap_t *dm = digestmap_new();
+
+ if (!the_nodelist)
+ return;
+
+ /* every routerinfo in rl->routers should be in the nodelist. */
+ if (rl) {
+ SMARTLIST_FOREACH_BEGIN(rl->routers, routerinfo_t *, ri) {
+ const node_t *node = node_get_by_id(ri->cache_info.identity_digest);
+ tor_assert(node && node->ri == ri);
+ tor_assert(0 == memcmp(ri->cache_info.identity_digest,
+ node->identity, DIGEST_LEN));
+ tor_assert(! digestmap_get(dm, node->identity));
+ digestmap_set(dm, node->identity, (void*)node);
+ } SMARTLIST_FOREACH_END(ri);
+ }
+
+ /* every routerstatus in ns should be in the nodelist */
+ if (ns) {
+ SMARTLIST_FOREACH_BEGIN(ns->routerstatus_list, routerstatus_t *, rs) {
+ const node_t *node = node_get_by_id(rs->identity_digest);
+ tor_assert(node && node->rs == rs);
+ tor_assert(0 == memcmp(rs->identity_digest, node->identity, DIGEST_LEN));
+ digestmap_set(dm, node->identity, (void*)node);
+ if (ns->flavor == FLAV_MICRODESC) {
+ /* If it's a microdesc consensus, every entry that has a
+ * microdescriptor should be in the nodelist.
+ */
+ microdesc_t *md =
+ microdesc_cache_lookup_by_digest256(NULL, rs->descriptor_digest);
+ tor_assert(md == node->md);
+ }
+ } SMARTLIST_FOREACH_END(rs);
+ }
+
+ /* The nodelist should have no other entries, and its entries should be
+ * well-formed. */
+ SMARTLIST_FOREACH_BEGIN(the_nodelist->nodes, node_t *, node) {
+ tor_assert(digestmap_get(dm, node->identity) != NULL);
+ tor_assert(node_sl_idx == node->nodelist_idx);
+ } SMARTLIST_FOREACH_END(node);
+
+ tor_assert((long)smartlist_len(the_nodelist->nodes) ==
+ (long)HT_SIZE(&the_nodelist->nodes_by_id));
+
+ digestmap_free(dm, NULL);
+}
+
+/** Return a list of a node_t * for every node we know about. The caller
+ * MUST NOT modify the list. (You can set and clear flags in the nodes if
+ * you must, but you must not add or remove nodes.) */
+smartlist_t *
+nodelist_get_list(void)
+{
+ init_nodelist();
+ return the_nodelist->nodes;
+}
+
+/** Given a hex-encoded nickname of the format DIGEST, $DIGEST, $DIGEST=name,
+ * or $DIGEST~name, return the node with the matching identity digest and
+ * nickname (if any). Return NULL if no such node exists, or if <b>hex_id</b>
+ * is not well-formed. */
+const node_t *
+node_get_by_hex_id(const char *hex_id)
+{
+ char digest_buf[DIGEST_LEN];
+ char nn_buf[MAX_NICKNAME_LEN+1];
+ char nn_char='\0';
+
+ if (hex_digest_nickname_decode(hex_id, digest_buf, &nn_char, nn_buf)==0) {
+ const node_t *node = node_get_by_id(digest_buf);
+ if (!node)
+ return NULL;
+ if (nn_char) {
+ const char *real_name = node_get_nickname(node);
+ if (!real_name || strcasecmp(real_name, nn_buf))
+ return NULL;
+ if (nn_char == '=') {
+ const char *named_id =
+ networkstatus_get_router_digest_by_nickname(nn_buf);
+ if (!named_id || memcmp(named_id, digest_buf, DIGEST_LEN))
+ return NULL;
+ }
+ }
+ return node;
+ }
+
+ return NULL;
+}
+
+/** Given a nickname (possibly verbose, possibly a hexadecimal digest), return
+ * the corresponding node_t, or NULL if none exists. Warn the user if
+ * <b>warn_if_unnamed</b> is set, and they have specified a router by
+ * nickname, but the Named flag isn't set for that router. */
+const node_t *
+node_get_by_nickname(const char *nickname, int warn_if_unnamed)
+{
+ const node_t *node;
+ if (!the_nodelist)
+ return NULL;
+
+ /* Handle these cases: DIGEST, $DIGEST, $DIGEST=name, $DIGEST~name. */
+ if ((node = node_get_by_hex_id(nickname)) != NULL)
+ return node;
+
+ if (!strcasecmp(nickname, UNNAMED_ROUTER_NICKNAME))
+ return NULL;
+
+ /* Okay, so if we get here, the nickname is just a nickname. Is there
+ * a binding for it in the consensus? */
+ {
+ const char *named_id =
+ networkstatus_get_router_digest_by_nickname(nickname);
+ if (named_id)
+ return node_get_by_id(named_id);
+ }
+
+ /* Is it marked as owned-by-someone-else? */
+ if (networkstatus_nickname_is_unnamed(nickname)) {
+ log_info(LD_GENERAL, "The name %s is listed as Unnamed: there is some "
+ "router that holds it, but not one listed in the current "
+ "consensus.", escaped(nickname));
+ return NULL;
+ }
+
+ /* Okay, so the name is not canonical for anybody. */
+ {
+ smartlist_t *matches = smartlist_create();
+ const node_t *choice = NULL;
+
+ SMARTLIST_FOREACH_BEGIN(the_nodelist->nodes, node_t *, node) {
+ if (!strcasecmp(node_get_nickname(node), nickname))
+ smartlist_add(matches, node);
+ } SMARTLIST_FOREACH_END(node);
+
+ if (smartlist_len(matches)>1 && warn_if_unnamed) {
+ int any_unwarned = 0;
+ SMARTLIST_FOREACH_BEGIN(matches, node_t *, node) {
+ if (!node->name_lookup_warned) {
+ node->name_lookup_warned = 1;
+ any_unwarned = 1;
+ }
+ } SMARTLIST_FOREACH_END(node);
+
+ if (any_unwarned) {
+ log_warn(LD_CONFIG, "There are multiple matches for the name %s, "
+ "but none is listed as Named in the directory consensus. "
+ "Choosing one arbitrarily.", nickname);
+ }
+ } else if (smartlist_len(matches)>1 && warn_if_unnamed) {
+ char fp[HEX_DIGEST_LEN+1];
+ node_t *node = smartlist_get(matches, 0);
+ if (node->name_lookup_warned) {
+ base16_encode(fp, sizeof(fp), node->identity, DIGEST_LEN);
+ log_warn(LD_CONFIG,
+ "You specified a server \"%s\" by name, but the directory "
+ "authorities do not have any key registered for this "
+ "nickname -- so it could be used by any server, not just "
+ "the one you meant. "
+ "To make sure you get the same server in the future, refer "
+ "to it by key, as \"$%s\".", nickname, fp);
+ node->name_lookup_warned = 1;
+ }
+ }
+
+ if (smartlist_len(matches))
+ choice = smartlist_get(matches, 0);
+
+ smartlist_free(matches);
+ return choice;
+ }
+}
+
+/** Return the nickname of <b>node</b>, or NULL if we can't find one. */
+const char *
+node_get_nickname(const node_t *node)
+{
+ tor_assert(node);
+ if (node->rs)
+ return node->rs->nickname;
+ else if (node->ri)
+ return node->ri->nickname;
+ else
+ return NULL;
+}
+
+/** Return true iff the nickname of <b>node</b> is canonical, based on the
+ * latest consensus. */
+int
+node_is_named(const node_t *node)
+{
+ const char *named_id;
+ const char *nickname = node_get_nickname(node);
+ if (!nickname)
+ return 0;
+ named_id = networkstatus_get_router_digest_by_nickname(nickname);
+ if (!named_id)
+ return 0;
+ return !memcmp(named_id, node->identity, DIGEST_LEN);
+}
+
+/** Return true iff <b>node</b> appears to be a directory authority or
+ * directory cache */
+int
+node_is_dir(const node_t *node)
+{
+ if (node->rs)
+ return node->rs->dir_port != 0;
+ else if (node->ri)
+ return node->ri->dir_port != 0;
+ else
+ return 0;
+}
+
+/** Return true iff <b>node</b> has either kind of usable descriptor -- that
+ * is, a routerdecriptor or a microdescriptor. */
+int
+node_has_descriptor(const node_t *node)
+{
+ return (node->ri ||
+ (node->rs && node->md));
+}
+
+/** Return the router_purpose of <b>node</b>. */
+int
+node_get_purpose(const node_t *node)
+{
+ if (node->ri)
+ return node->ri->purpose;
+ else
+ return ROUTER_PURPOSE_GENERAL;
+}
+
+/** Compute the verbose ("extended") nickname of <b>node</b> and store it
+ * into the MAX_VERBOSE_NICKNAME_LEN+1 character buffer at
+ * <b>verbose_nickname_out</b> */
+void
+node_get_verbose_nickname(const node_t *node,
+ char *verbose_name_out)
+{
+ const char *nickname = node_get_nickname(node);
+ int is_named = node_is_named(node);
+ verbose_name_out[0] = '$';
+ base16_encode(verbose_name_out+1, HEX_DIGEST_LEN+1, node->identity,
+ DIGEST_LEN);
+ if (!nickname)
+ return;
+ verbose_name_out[1+HEX_DIGEST_LEN] = is_named ? '=' : '~';
+ strlcpy(verbose_name_out+1+HEX_DIGEST_LEN+1, nickname, MAX_NICKNAME_LEN+1);
+}
+
+/** Return true iff it seems that <b>node</b> allows circuits to exit
+ * through it directlry from the client. */
+int
+node_allows_single_hop_exits(const node_t *node)
+{
+ if (node && node->ri)
+ return node->ri->allow_single_hop_exits;
+ else
+ return 0;
+}
+
+/** Return true iff it seems that <b>node</b> has an exit policy that doesn't
+ * actually permit anything to exit, or we don't know its exit policy */
+int
+node_exit_policy_rejects_all(const node_t *node)
+{
+ if (node->rejects_all)
+ return 1;
+
+ if (node->ri)
+ return node->ri->policy_is_reject_star;
+ else if (node->md)
+ return node->md->exit_policy == NULL ||
+ short_policy_is_reject_star(node->md->exit_policy);
+ else
+ return 1;
+}
+
+/** Copy the address for <b>node</b> into *<b>addr_out</b>. */
+int
+node_get_addr(const node_t *node, tor_addr_t *addr_out)
+{
+ if (node->ri) {
+ tor_addr_from_ipv4h(addr_out, node->ri->addr);
+ return 0;
+ } else if (node->rs) {
+ tor_addr_from_ipv4h(addr_out, node->rs->addr);
+ return 0;
+ }
+ return -1;
+}
+
+/** Return the host-order IPv4 address for <b>node</b>, or 0 if it doesn't
+ * seem to have one. */
+uint32_t
+node_get_addr_ipv4h(const node_t *node)
+{
+ if (node->ri) {
+ return node->ri->addr;
+ } else if (node->rs) {
+ return node->rs->addr;
+ }
+ return 0;
+}
+
+/** Copy a string representation of the IP address for <b>node</b> into the
+ * <b>len</b>-byte buffer at <b>buf</b>.
+ */
+void
+node_get_address_string(const node_t *node, char *buf, size_t len)
+{
+ if (node->ri) {
+ strlcpy(buf, node->ri->address, len);
+ } else if (node->rs) {
+ tor_addr_t addr;
+ tor_addr_from_ipv4h(&addr, node->rs->addr);
+ tor_addr_to_str(buf, &addr, len, 0);
+ } else {
+ buf[0] = '\0';
+ }
+}
+
+/** Return <b>node</b>'s declared uptime, or -1 if it doesn't seem to have
+ * one. */
+long
+node_get_declared_uptime(const node_t *node)
+{
+ if (node->ri)
+ return node->ri->uptime;
+ else
+ return -1;
+}
+
+/** Return <b>node</b>'s declared or_port */
+uint16_t
+node_get_orport(const node_t *node)
+{
+ if (node->ri)
+ return node->ri->or_port;
+ else if (node->rs)
+ return node->rs->or_port;
+ else
+ return 0;
+}
+
+/** Return <b>node</b>'s platform string, or NULL if we don't know it. */
+const char *
+node_get_platform(const node_t *node)
+{
+ /* If we wanted, we could record the version in the routerstatus_t, since
+ * the consensus lists it. We don't, though, so this function just won't
+ * work with microdescriptors. */
+ if (node->ri)
+ return node->ri->platform;
+ else
+ return NULL;
+}
+
+/** Return <b>node</b>'s time of publication, or 0 if we don't have one. */
+time_t
+node_get_published_on(const node_t *node)
+{
+ if (node->ri)
+ return node->ri->cache_info.published_on;
+ else
+ return 0;
+}
+
+/** Return true iff <b>node</b> is one representing this router. */
+int
+node_is_me(const node_t *node)
+{
+ return router_digest_is_me(node->identity);
+}
+
+/** Return <b>node</b> declared family (as a list of names), or NULL if
+ * the node didn't declare a family. */
+const smartlist_t *
+node_get_declared_family(const node_t *node)
+{
+ if (node->ri && node->ri->declared_family)
+ return node->ri->declared_family;
+ else if (node->md && node->md->family)
+ return node->md->family;
+ else
+ return NULL;
+}
+
diff --git a/src/or/nodelist.h b/src/or/nodelist.h
new file mode 100644
index 000000000..d85d3eb41
--- /dev/null
+++ b/src/or/nodelist.h
@@ -0,0 +1,60 @@
+/* Copyright (c) 2001 Matej Pfajfar.
+ * Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2010, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file microdesc.h
+ * \brief Header file for microdesc.c.
+ **/
+
+#ifndef _TOR_NODELIST_H
+#define _TOR_NODELIST_H
+
+node_t *node_get_mutable_by_id(const char *identity_digest);
+const node_t *node_get_by_id(const char *identity_digest);
+const node_t *node_get_by_hex_id(const char *identity_digest);
+node_t *nodelist_add_routerinfo(routerinfo_t *ri);
+node_t *nodelist_add_microdesc(microdesc_t *md);
+void nodelist_set_consensus(networkstatus_t *ns);
+
+void nodelist_remove_microdesc(const char *identity_digest, microdesc_t *md);
+void nodelist_remove_routerinfo(routerinfo_t *ri);
+void nodelist_purge(void);
+
+void nodelist_free_all(void);
+void nodelist_assert_ok(void);
+
+const node_t *node_get_by_nickname(const char *nickname, int warn_if_unnamed);
+void node_get_verbose_nickname(const node_t *node,
+ char *verbose_name_out);
+int node_is_named(const node_t *node);
+int node_is_dir(const node_t *node);
+int node_has_descriptor(const node_t *node);
+int node_get_purpose(const node_t *node);
+#define node_is_bridge(node) \
+ (node_get_purpose((node)) == ROUTER_PURPOSE_BRIDGE)
+int node_is_me(const node_t *node);
+int node_exit_policy_rejects_all(const node_t *node);
+int node_get_addr(const node_t *node, tor_addr_t *addr_out);
+uint32_t node_get_addr_ipv4h(const node_t *node);
+int node_allows_single_hop_exits(const node_t *node);
+uint16_t node_get_orport(const node_t *node);
+const char *node_get_nickname(const node_t *node);
+const char *node_get_platform(const node_t *node);
+void node_get_address_string(const node_t *node, char *cp, size_t len);
+long node_get_declared_uptime(const node_t *node);
+time_t node_get_published_on(const node_t *node);
+const smartlist_t *node_get_declared_family(const node_t *node);
+
+smartlist_t *nodelist_get_list(void);
+
+/* XXXX These need to move out of routerlist.c */
+void nodelist_refresh_countries(void);
+void node_set_country(node_t *node);
+void nodelist_add_node_family(smartlist_t *nodes, const node_t *node);
+int nodes_in_same_family(const node_t *node1, const node_t *node2);
+
+#endif
+
diff --git a/src/or/ntmain.c b/src/or/ntmain.c
index 46e7afb78..c5c6a58bb 100644
--- a/src/or/ntmain.c
+++ b/src/or/ntmain.c
@@ -183,7 +183,6 @@ nt_service_loadlibrary(void)
*/
int
nt_service_is_stopping(void)
-/* XXXX this function would probably _love_ to be inline, in 0.2.0. */
{
/* If we haven't loaded the function pointers, we can't possibly be an NT
* service trying to shut down. */
diff --git a/src/or/or.h b/src/or/or.h
index 01365381f..5498d933c 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -809,6 +809,9 @@ typedef enum {
* Tor 0.1.2.x is obsolete, we can remove this. */
#define DEFAULT_CLIENT_NICKNAME "client"
+/** Name chosen by routers that don't configure nicknames */
+#define UNNAMED_ROUTER_NICKNAME "Unnamed"
+
/** Number of bytes in a SOCKS4 header. */
#define SOCKS4_NETWORK_LEN 8
@@ -1510,52 +1513,44 @@ typedef struct {
unsigned int allow_single_hop_exits:1; /**< Whether the router says
* it allows single hop exits. */
- /* local info */
- unsigned int is_running:1; /**< As far as we know, is this OR currently
- * running? */
- unsigned int is_valid:1; /**< Has a trusted dirserver validated this OR?
- * (For Authdir: Have we validated this OR?)
- */
- unsigned int is_named:1; /**< Do we believe the nickname that this OR gives
- * us? */
- unsigned int is_fast:1; /** Do we think this is a fast OR? */
- unsigned int is_stable:1; /** Do we think this is a stable OR? */
- unsigned int is_possible_guard:1; /**< Do we think this is an OK guard? */
- unsigned int is_exit:1; /**< Do we think this is an OK exit? */
- unsigned int is_bad_exit:1; /**< Do we think this exit is censored, borked,
- * or otherwise nasty? */
- unsigned int is_bad_directory:1; /**< Do we think this directory is junky,
- * underpowered, or otherwise useless? */
unsigned int wants_to_be_hs_dir:1; /**< True iff this router claims to be
* a hidden service directory. */
- unsigned int is_hs_dir:1; /**< True iff this router is a hidden service
- * directory according to the authorities. */
unsigned int policy_is_reject_star:1; /**< True iff the exit policy for this
* router rejects everything. */
/** True if, after we have added this router, we should re-launch
* tests for it. */
unsigned int needs_retest_if_added:1;
-/** Tor can use this router for general positions in circuits. */
+/** Tor can use this router for general positions in circuits; we got it
+ * from a directory server as usual, or we're an authority and a server
+ * uploaded it. */
#define ROUTER_PURPOSE_GENERAL 0
-/** Tor should avoid using this router for circuit-building. */
+/** Tor should avoid using this router for circuit-building: we got it
+ * from a crontroller. If the controller wants to use it, it'll have to
+ * ask for it by identity. */
#define ROUTER_PURPOSE_CONTROLLER 1
-/** Tor should use this router only for bridge positions in circuits. */
+/** Tor should use this router only for bridge positions in circuits: we got
+ * it via a directory request from the bridge itself, or a bridge
+ * authority. x*/
#define ROUTER_PURPOSE_BRIDGE 2
/** Tor should not use this router; it was marked in cached-descriptors with
* a purpose we didn't recognize. */
#define ROUTER_PURPOSE_UNKNOWN 255
- uint8_t purpose; /** What positions in a circuit is this router good for? */
+ /* In what way did we find out about this router? One of ROUTER_PURPOSE_*.
+ * Routers of different purposes are kept segregated and used for different
+ * things; see notes on ROUTER_PURPOSE_* macros above.
+ */
+ uint8_t purpose;
/* The below items are used only by authdirservers for
* reachability testing. */
+
/** When was the last time we could reach this OR? */
time_t last_reachable;
/** When did we start testing reachability for this OR? */
time_t testing_since;
- /** According to the geoip db what country is this router in? */
- country_t country;
+
} routerinfo_t;
/** Information needed to keep and cache a signed extra-info document. */
@@ -1591,7 +1586,11 @@ typedef struct routerstatus_t {
unsigned int is_exit:1; /**< True iff this router is a good exit. */
unsigned int is_stable:1; /**< True iff this router stays up a long time. */
unsigned int is_fast:1; /**< True iff this router has good bandwidth. */
- unsigned int is_running:1; /**< True iff this router is up. */
+ /** True iff this router is called 'running' in the consensus. We give it
+ * this funny name so that we don't accidentally use this bit as a view of
+ * whether we think the router is *currently* running. If that's what you
+ * want to know, look at is_running in node_t. */
+ unsigned int is_flagged_running:1;
unsigned int is_named:1; /**< True iff "nickname" belongs to this router. */
unsigned int is_unnamed:1; /**< True iff "nickname" belongs to another
* router. */
@@ -1643,15 +1642,31 @@ typedef struct routerstatus_t {
* from this authority.) Applies in v2 networkstatus document only.
*/
unsigned int need_to_mirror:1;
- unsigned int name_lookup_warned:1; /**< Have we warned the user for referring
- * to this (unnamed) router by nickname?
- */
time_t last_dir_503_at; /**< When did this router last tell us that it
* was too busy to serve directory info? */
download_status_t dl_status;
} routerstatus_t;
+/** A single entry in a parsed policy summary, describing a range of ports. */
+typedef struct short_policy_entry_t {
+ uint16_t min_port, max_port;
+} short_policy_entry_t;
+
+/** A short_poliy_t is the parsed version of a policy summary. */
+typedef struct short_policy_t {
+ /** True if the members of 'entries' are port ranges to accept; false if
+ * they are port ranges to reject */
+ unsigned int is_accept : 1;
+ /** The actual number of values in 'entries'. */
+ unsigned int n_entries : 31;
+ /** An array of (probably more than 1!) short_policy_entry_t values,
+ * each descriping a range of ports that this policy accepts or rejects
+ * (depending on the value of is_accept).
+ */
+ short_policy_entry_t entries[1];
+} short_policy_t;
+
/** A microdescriptor is the smallest amount of information needed to build a
* circuit through a router. They are generated by the directory authorities,
* using information from the uploaded routerinfo documents. They are not
@@ -1693,11 +1708,75 @@ typedef struct microdesc_t {
crypto_pk_env_t *onion_pkey;
/** As routerinfo_t.family */
smartlist_t *family;
- /** Encoded exit policy summary */
- char *exitsummary; /**< exit policy summary -
- * XXX this probably should not stay a string. */
+ /** Exit policy summary */
+ short_policy_t *exit_policy;
} microdesc_t;
+/** A node_t represents a Tor router.
+ *
+ * Specifically, a node_t is a Tor router as we are using it: a router that
+ * we are considering for circuits, connections, and so on. A node_t is a
+ * thin wrapper around the routerstatus, routerinfo, and microdesc for a
+ * single wrapper, and provides a consistent interface for all of them.
+ *
+ * Also, a node_t has mutable state. While a routerinfo, a routerstatus,
+ * and a microdesc have[*] only the information read from a router
+ * descriptor, a consensus entry, and a microdescriptor (respectively)...
+ * a node_t has flags based on *our own current opinion* of the node.
+ *
+ * [*] Actually, there is some leftover information in each that is mutable.
+ * We should try to excise that.
+ */
+typedef struct node_t {
+ /* Indexing information */
+
+ /** Used to look up the node_t by its identity digest. */
+ HT_ENTRY(node_t) ht_ent;
+ /** Position of the node within the list of nodes */
+ int nodelist_idx;
+
+ /** The identity digest of this node_t. No more than one node_t per
+ * identity may exist at a time. */
+ char identity[DIGEST_LEN];
+
+ microdesc_t *md;
+ routerinfo_t *ri;
+ routerstatus_t *rs;
+
+ /* local info: copied from routerstatus, then possibly frobbed based
+ * on experience. Authorities set this stuff directly. */
+
+ unsigned int is_running:1; /**< As far as we know, is this OR currently
+ * running? */
+ unsigned int is_valid:1; /**< Has a trusted dirserver validated this OR?
+ * (For Authdir: Have we validated this OR?)
+ */
+ unsigned int is_fast:1; /** Do we think this is a fast OR? */
+ unsigned int is_stable:1; /** Do we think this is a stable OR? */
+ unsigned int is_possible_guard:1; /**< Do we think this is an OK guard? */
+ unsigned int is_exit:1; /**< Do we think this is an OK exit? */
+ unsigned int is_bad_exit:1; /**< Do we think this exit is censored, borked,
+ * or otherwise nasty? */
+ unsigned int is_bad_directory:1; /**< Do we think this directory is junky,
+ * underpowered, or otherwise useless? */
+ unsigned int is_hs_dir:1; /**< True iff this router is a hidden service
+ * directory according to the authorities. */
+
+ /* Local info: warning state. */
+
+ unsigned int name_lookup_warned:1; /**< Have we warned the user for referring
+ * to this (unnamed) router by nickname?
+ */
+
+ /** Local info: we treat this node as if it rejects everything */
+ unsigned int rejects_all:1;
+
+ /* Local info: derived. */
+
+ /** According to the geoip db what country is this router in? */
+ country_t country;
+} node_t;
+
/** How many times will we try to download a router's descriptor before giving
* up? */
#define MAX_ROUTERDESC_DOWNLOAD_FAILURES 8
@@ -2181,10 +2260,12 @@ typedef struct circuit_t {
* length ONIONSKIN_CHALLENGE_LEN. */
char *n_conn_onionskin;
- time_t timestamp_created; /**< When was this circuit created? */
+ /** When was this circuit created? We keep this timestamp with a higher
+ * resolution than most so that the circuit-build-time tracking code can
+ * get millisecond resolution. */
+ struct timeval timestamp_created;
time_t timestamp_dirty; /**< When the circuit was first used, or 0 if the
* circuit is clean. */
- struct timeval highres_created; /**< When exactly was the circuit created? */
uint16_t marked_for_close; /**< Should we close this circuit at the end of
* the main loop? (If true, holds the line number
@@ -2668,7 +2749,8 @@ typedef struct {
char *MyFamily; /**< Declared family for this OR. */
config_line_t *NodeFamilies; /**< List of config lines for
- * node families */
+ * node families */
+ smartlist_t *NodeFamilySets; /**< List of parsed NodeFamilies values. */
config_line_t *AuthDirBadDir; /**< Address policy for descriptors to
* mark as bad dir mirrors. */
config_line_t *AuthDirBadExit; /**< Address policy for descriptors to
@@ -3386,7 +3468,7 @@ typedef enum {
ADDR_POLICY_PROBABLY_ACCEPTED=1,
/** Part of the address was unknown, but as far as we can tell, it was
* rejected. */
- ADDR_POLICY_PROBABLY_REJECTED=2
+ ADDR_POLICY_PROBABLY_REJECTED=2,
} addr_policy_result_t;
/********************************* rephist.c ***************************/
@@ -3536,7 +3618,8 @@ typedef enum {
CRN_NEED_GUARD = 1<<2,
CRN_ALLOW_INVALID = 1<<3,
/* XXXX not used, apparently. */
- CRN_WEIGHT_AS_EXIT = 1<<5
+ CRN_WEIGHT_AS_EXIT = 1<<5,
+ CRN_NEED_DESC = 1<<6
} router_crn_flags_t;
/** Return value for router_add_to_routerlist() and dirserv_add_descriptor() */
diff --git a/src/or/policies.c b/src/or/policies.c
index 4fd090415..8d8de1182 100644
--- a/src/or/policies.c
+++ b/src/or/policies.c
@@ -11,6 +11,7 @@
#include "or.h"
#include "config.h"
#include "dirserv.h"
+#include "nodelist.h"
#include "policies.h"
#include "routerparse.h"
#include "ht.h"
@@ -261,7 +262,7 @@ fascist_firewall_allows_address_or(const tor_addr_t *addr, uint16_t port)
/** Return true iff we think our firewall will let us make an OR connection to
* <b>ri</b>. */
int
-fascist_firewall_allows_or(routerinfo_t *ri)
+fascist_firewall_allows_or(const routerinfo_t *ri)
{
/* XXXX proposal 118 */
tor_addr_t addr;
@@ -269,6 +270,22 @@ fascist_firewall_allows_or(routerinfo_t *ri)
return fascist_firewall_allows_address_or(&addr, ri->or_port);
}
+/** Return true iff we think our firewall will let us make an OR connection to
+ * <b>node</b>. */
+int
+fascist_firewall_allows_node(const node_t *node)
+{
+ if (node->ri) {
+ return fascist_firewall_allows_or(node->ri);
+ } else if (node->rs) {
+ tor_addr_t addr;
+ tor_addr_from_ipv4h(&addr, node->rs->addr);
+ return fascist_firewall_allows_address_or(&addr, node->rs->or_port);
+ } else {
+ return 1;
+ }
+}
+
/** Return true iff we think our firewall will let us make a directory
* connection to addr:port. */
int
@@ -858,15 +875,11 @@ policies_parse_exit_policy(config_line_t *cfg, smartlist_t **dest,
return 0;
}
-/** Replace the exit policy of <b>r</b> with reject *:*. */
+/** Replace the exit policy of <b>node</b> with reject *:* */
void
-policies_set_router_exitpolicy_to_reject_all(routerinfo_t *r)
+policies_set_node_exitpolicy_to_reject_all(node_t *node)
{
- addr_policy_t *item;
- addr_policy_list_free(r->exit_policy);
- r->exit_policy = smartlist_create();
- item = router_parse_addr_policy_item_from_string("reject *:*", -1);
- smartlist_add(r->exit_policy, item);
+ node->rejects_all = 1;
}
/** Return 1 if there is at least one /8 subnet in <b>policy</b> that
@@ -1075,7 +1088,7 @@ policy_summary_split(smartlist_t *summary,
int start_at_index;
int i = 0;
- /* XXXX Do a binary search if run time matters */
+
while (AT(i)->prt_max < prt_min)
i++;
if (AT(i)->prt_min != prt_min) {
@@ -1288,6 +1301,195 @@ policy_summarize(smartlist_t *policy)
return result;
}
+/** Convert a summarized policy string into a short_policy_t. Return NULL
+ * if the string is not well-formed. */
+short_policy_t *
+parse_short_policy(const char *summary)
+{
+ const char *orig_summary = summary;
+ short_policy_t *result;
+ int is_accept;
+ int n_entries;
+ short_policy_entry_t entries[MAX_EXITPOLICY_SUMMARY_LEN]; /* overkill */
+ const char *next;
+
+ if (!strcmpstart(summary, "accept ")) {
+ is_accept = 1;
+ summary += strlen("accept ");
+ } else if (!strcmpstart(summary, "reject ")) {
+ is_accept = 0;
+ summary += strlen("reject ");
+ } else {
+ log_fn(LOG_PROTOCOL_WARN, LD_DIR, "Unrecognized policy summary keyword");
+ return NULL;
+ }
+
+ n_entries = 0;
+ for ( ; *summary; summary = next) {
+ const char *comma = strchr(summary, ',');
+ unsigned low, high;
+ char dummy;
+ char ent_buf[32];
+
+ next = comma ? comma+1 : strchr(summary, '\0');
+
+ if (n_entries == MAX_EXITPOLICY_SUMMARY_LEN) {
+ log_fn(LOG_PROTOCOL_WARN, LD_DIR, "Impossibly long policy summary %s",
+ escaped(orig_summary));
+ return NULL;
+ }
+
+ if (! TOR_ISDIGIT(*summary) || next-summary > (int)(sizeof(ent_buf)-1)) {
+ /* unrecognized entry format. skip it. */
+ continue;
+ }
+ if (next-summary < 2) {
+ /* empty; skip it. */
+ continue;
+ }
+
+ memcpy(ent_buf, summary, next-summary-1);
+ ent_buf[next-summary-1] = '\0';
+
+ if (tor_sscanf(ent_buf, "%u-%u%c", &low, &high, &dummy) == 2) {
+ if (low<1 || low>65535 || high<1 || high>65535) {
+ log_fn(LOG_PROTOCOL_WARN, LD_DIR,
+ "Found bad entry in policy summary %s", escaped(orig_summary));
+ return NULL;
+ }
+ } else if (tor_sscanf(ent_buf, "%u%c", &low, &dummy) == 1) {
+ if (low<1 || low>65535) {
+ log_fn(LOG_PROTOCOL_WARN, LD_DIR,
+ "Found bad entry in policy summary %s", escaped(orig_summary));
+ return NULL;
+ }
+ high = low;
+ } else {
+ log_fn(LOG_PROTOCOL_WARN, LD_DIR,"Found bad entry in policy summary %s",
+ escaped(orig_summary));
+ return NULL;
+ }
+
+ entries[n_entries].min_port = low;
+ entries[n_entries].max_port = high;
+ n_entries++;
+ }
+
+ if (n_entries == 0) {
+ log_fn(LOG_PROTOCOL_WARN, LD_DIR,
+ "Found no port-range entries in summary %s", escaped(orig_summary));
+ return NULL;
+ }
+
+ {
+ size_t size = sizeof(short_policy_t) +
+ sizeof(short_policy_entry_t)*(n_entries-1);
+ result = tor_malloc_zero(size);
+
+ tor_assert( (char*)&result->entries[n_entries-1] < ((char*)result)+size);
+ }
+
+ result->is_accept = is_accept;
+ result->n_entries = n_entries;
+ memcpy(result->entries, entries, sizeof(short_policy_entry_t)*n_entries);
+ return result;
+}
+
+/** Release all storage held in <b>policy</b>. */
+void
+short_policy_free(short_policy_t *policy)
+{
+ tor_free(policy);
+}
+
+/** See whether the <b>addr</b>:<b>port</b> address is likely to be accepted
+ * or rejected by the summarized policy <b>policy</b>. Return values are as
+ * for compare_tor_addr_to_addr_policy. Unlike the regular addr_policy
+ * functions, requires the <b>port</b> be specified. */
+addr_policy_result_t
+compare_tor_addr_to_short_policy(const tor_addr_t *addr, uint16_t port,
+ const short_policy_t *policy)
+{
+ int i;
+ int found_match = 0;
+ int accept;
+ (void)addr;
+
+ tor_assert(port != 0);
+
+ if (addr && (tor_addr_is_internal(addr, 0) ||
+ tor_addr_is_null(addr) ||
+ tor_addr_is_loopback(addr)))
+ return ADDR_POLICY_REJECTED;
+
+ for (i=0; i < policy->n_entries; ++i) {
+ const short_policy_entry_t *e = &policy->entries[i];
+ if (e->min_port <= port && port <= e->max_port) {
+ found_match = 1;
+ break;
+ }
+ }
+
+ if (found_match)
+ accept = policy->is_accept;
+ else
+ accept = ! policy->is_accept;
+
+ /* ???? are these right? */
+ if (accept)
+ return ADDR_POLICY_PROBABLY_ACCEPTED;
+ else
+ return ADDR_POLICY_REJECTED;
+}
+
+/** Return true iff <b>policy</b> seems reject all ports */
+int
+short_policy_is_reject_star(const short_policy_t *policy)
+{
+ /* This doesn't need to be as much on the lookout as policy_is_reject_star,
+ * since policy summaries are from the consensus or from consensus
+ * microdescs.
+ */
+ tor_assert(policy);
+ /* Check for an exact match of "reject 1-65535". */
+ return (policy->is_accept == 0 && policy->n_entries == 1 &&
+ policy->entries[0].min_port == 1 &&
+ policy->entries[0].max_port == 65535);
+}
+
+/** Decides whether addr:port is probably or definitely accepted or rejcted by
+ * <b>node</b>. See compare_tor_addr_to_addr_policy for details on addr/port
+ * interpretation. */
+addr_policy_result_t
+compare_addr_to_node_policy(uint32_t addr, uint16_t port, const node_t *node)
+{
+ tor_addr_t a;
+ tor_addr_from_ipv4h(&a, addr);
+ return compare_tor_addr_to_node_policy(&a, port, node);
+}
+
+/** Decides whether addr:port is probably or definitely accepted or rejcted by
+ * <b>node</b>. See compare_tor_addr_to_addr_policy for details on addr/port
+ * interpretation. */
+addr_policy_result_t
+compare_tor_addr_to_node_policy(const tor_addr_t *addr, uint16_t port,
+ const node_t *node)
+{
+ if (node->rejects_all)
+ return ADDR_POLICY_REJECTED;
+
+ if (node->ri)
+ return compare_tor_addr_to_addr_policy(addr, port, node->ri->exit_policy);
+ else if (node->md && node->md) {
+ if (node->md->exit_policy == NULL)
+ return ADDR_POLICY_REJECTED;
+ else
+ return compare_tor_addr_to_short_policy(addr, port,
+ node->md->exit_policy);
+ } else
+ return ADDR_POLICY_PROBABLY_REJECTED;
+}
+
/** Implementation for GETINFO control command: knows the answer for questions
* about "exit-policy/..." */
int
diff --git a/src/or/policies.h b/src/or/policies.h
index dd46f4de9..5c1113e75 100644
--- a/src/or/policies.h
+++ b/src/or/policies.h
@@ -19,7 +19,8 @@
int firewall_is_fascist_or(void);
int fascist_firewall_allows_address_or(const tor_addr_t *addr, uint16_t port);
-int fascist_firewall_allows_or(routerinfo_t *ri);
+int fascist_firewall_allows_or(const routerinfo_t *ri);
+int fascist_firewall_allows_node(const node_t *node);
int fascist_firewall_allows_address_dir(const tor_addr_t *addr, uint16_t port);
int dir_policy_permits_address(const tor_addr_t *addr);
int socks_policy_permits_address(const tor_addr_t *addr);
@@ -38,10 +39,16 @@ addr_policy_result_t compare_tor_addr_to_addr_policy(const tor_addr_t *addr,
uint16_t port, const smartlist_t *policy);
addr_policy_result_t compare_addr_to_addr_policy(uint32_t addr,
uint16_t port, const smartlist_t *policy);
+
+addr_policy_result_t compare_addr_to_node_policy(uint32_t addr,
+ uint16_t port, const node_t *node);
+addr_policy_result_t compare_tor_addr_to_node_policy(const tor_addr_t *addr,
+ uint16_t port, const node_t *node);
+
int policies_parse_exit_policy(config_line_t *cfg, smartlist_t **dest,
int rejectprivate, const char *local_address,
int add_default_policy);
-void policies_set_router_exitpolicy_to_reject_all(routerinfo_t *exitrouter);
+void policies_set_node_exitpolicy_to_reject_all(node_t *exitrouter);
int exit_policy_is_general_exit(smartlist_t *policy);
int policy_is_reject_star(const smartlist_t *policy);
int getinfo_helper_policies(control_connection_t *conn,
@@ -56,5 +63,12 @@ void policies_free_all(void);
char *policy_summarize(smartlist_t *policy);
+short_policy_t *parse_short_policy(const char *summary);
+void short_policy_free(short_policy_t *policy);
+int short_policy_is_reject_star(const short_policy_t *policy);
+addr_policy_result_t compare_tor_addr_to_short_policy(
+ const tor_addr_t *addr, uint16_t port,
+ const short_policy_t *policy);
+
#endif
diff --git a/src/or/relay.c b/src/or/relay.c
index f9a44cf16..1d7a5171b 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -24,6 +24,7 @@
#include "main.h"
#include "mempool.h"
#include "networkstatus.h"
+#include "nodelist.h"
#include "policies.h"
#include "reasons.h"
#include "relay.h"
@@ -592,17 +593,11 @@ 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 ||
- (cpath_layer != origin_circ->cpath &&
- !CIRCUIT_PURPOSE_IS_ESTABLISHED_REND(circ->purpose)))) {
- /* 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 and we're
- * not talking to a rendezvous circuit), use one of them.
- * Don't worry about the conn protocol version:
+ 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
+ * one of them. Don't worry about the conn protocol version:
* append_cell_to_circuit_queue will fix it up. */
- /* XXX For now, clients don't use RELAY_EARLY cells when sending
- * relay cells on rendezvous circuits. See bug 1038. Once no relays
- * (and thus no rendezvous points) are running 0.2.1.3-alpha through
- * 0.2.1.18, we can take out that exception. -RD */
cell.command = CELL_RELAY_EARLY;
--origin_circ->remaining_relay_early_cells;
log_debug(LD_OR, "Sending a RELAY_EARLY cell; %d remaining.",
@@ -712,7 +707,7 @@ connection_ap_process_end_not_open(
edge_connection_t *conn, crypt_path_t *layer_hint)
{
struct in_addr in;
- routerinfo_t *exitrouter;
+ node_t *exitrouter;
int reason = *(cell->payload+RELAY_HEADER_SIZE);
int control_reason = reason | END_STREAM_REASON_FLAG_REMOTE;
(void) layer_hint; /* unused */
@@ -720,11 +715,12 @@ connection_ap_process_end_not_open(
if (rh->length > 0 && edge_reason_is_retriable(reason) &&
!connection_edge_is_rendezvous_stream(conn) /* avoid retry if rend */
) {
+ const char *chosen_exit_digest =
+ circ->build_state->chosen_exit->identity_digest;
log_info(LD_APP,"Address '%s' refused due to '%s'. Considering retrying.",
safe_str(conn->socks_request->address),
stream_end_reason_to_string(reason));
- exitrouter =
- router_get_by_digest(circ->build_state->chosen_exit->identity_digest);
+ exitrouter = node_get_mutable_by_id(chosen_exit_digest);
switch (reason) {
case END_STREAM_REASON_EXITPOLICY:
if (rh->length >= 5) {
@@ -759,8 +755,8 @@ connection_ap_process_end_not_open(
log_info(LD_APP,
"Exitrouter '%s' seems to be more restrictive than its exit "
"policy. Not using this router as exit for now.",
- exitrouter->nickname);
- policies_set_router_exitpolicy_to_reject_all(exitrouter);
+ node_get_nickname(exitrouter));
+ policies_set_node_exitpolicy_to_reject_all(exitrouter);
}
/* rewrite it to an IP if we learned one. */
if (addressmap_rewrite(conn->socks_request->address,
@@ -823,7 +819,7 @@ connection_ap_process_end_not_open(
case END_STREAM_REASON_HIBERNATING:
case END_STREAM_REASON_RESOURCELIMIT:
if (exitrouter) {
- policies_set_router_exitpolicy_to_reject_all(exitrouter);
+ policies_set_node_exitpolicy_to_reject_all(exitrouter);
}
if (conn->chosen_exit_optional) {
/* stop wanting a specific exit */
@@ -906,12 +902,8 @@ connection_edge_process_relay_cell_not_open(
int ttl;
if (!addr || (get_options()->ClientDNSRejectInternalAddresses &&
is_internal_IP(addr, 0))) {
- char buf[INET_NTOA_BUF_LEN];
- struct in_addr a;
- a.s_addr = htonl(addr);
- tor_inet_ntoa(&a, buf, sizeof(buf));
- log_info(LD_APP,
- "...but it claims the IP address was %s. Closing.", buf);
+ log_info(LD_APP, "...but it claims the IP address was %s. Closing.",
+ fmt_addr32(addr));
connection_edge_end(conn, END_STREAM_REASON_TORPROTOCOL);
connection_mark_unattached_ap(conn, END_STREAM_REASON_TORPROTOCOL);
return 0;
@@ -988,11 +980,8 @@ connection_edge_process_relay_cell_not_open(
uint32_t addr = ntohl(get_uint32(cell->payload+RELAY_HEADER_SIZE+2));
if (get_options()->ClientDNSRejectInternalAddresses &&
is_internal_IP(addr, 0)) {
- char buf[INET_NTOA_BUF_LEN];
- struct in_addr a;
- a.s_addr = htonl(addr);
- tor_inet_ntoa(&a, buf, sizeof(buf));
- log_info(LD_APP,"Got a resolve with answer %s. Rejecting.", buf);
+ log_info(LD_APP,"Got a resolve with answer %s. Rejecting.",
+ fmt_addr32(addr));
connection_ap_handshake_socks_resolved(conn,
RESOLVED_TYPE_ERROR_TRANSIENT,
0, NULL, 0, TIME_MAX);
@@ -1510,7 +1499,7 @@ circuit_resume_edge_reading_helper(edge_connection_t *first_conn,
if (!layer_hint || conn->cpath_layer == layer_hint) {
connection_start_reading(TO_CONN(conn));
- if (buf_datalen(conn->_base.inbuf) > 0)
+ if (connection_get_inbuf_len(TO_CONN(conn)) > 0)
++n_streams;
}
}
@@ -1549,7 +1538,7 @@ circuit_resume_edge_reading_helper(edge_connection_t *first_conn,
}
/* If there's still data to read, we'll be coming back to this stream. */
- if (buf_datalen(conn->_base.inbuf))
+ if (connection_get_inbuf_len(TO_CONN(conn)))
++n_streams_left;
/* If the circuit won't accept any more data, return without looking
diff --git a/src/or/rendclient.c b/src/or/rendclient.c
index 68abb886a..5c5c48afb 100644
--- a/src/or/rendclient.c
+++ b/src/or/rendclient.c
@@ -16,6 +16,7 @@
#include "connection_edge.h"
#include "directory.h"
#include "main.h"
+#include "nodelist.h"
#include "relay.h"
#include "rendclient.h"
#include "rendcommon.h"
@@ -414,7 +415,7 @@ directory_get_from_hs_dir(const char *desc_id, const rend_data_t *rend_query)
SMARTLIST_FOREACH(responsible_dirs, routerstatus_t *, dir, {
if (lookup_last_hid_serv_request(dir, desc_id_base32, 0, 0) +
REND_HID_SERV_DIR_REQUERY_PERIOD >= now ||
- !router_get_by_digest(dir->identity_digest))
+ !router_get_by_id_digest(dir->identity_digest))
SMARTLIST_DEL_CURRENT(responsible_dirs, dir);
});
@@ -738,7 +739,6 @@ rend_client_get_random_intro(const rend_data_t *rend_query)
int i;
rend_cache_entry_t *entry;
rend_intro_point_t *intro;
- routerinfo_t *router;
if (rend_cache_lookup_entry(rend_query->onion_address, -1, &entry) < 1) {
log_warn(LD_REND,
@@ -755,8 +755,12 @@ rend_client_get_random_intro(const rend_data_t *rend_query)
intro = smartlist_get(entry->parsed->intro_nodes, i);
/* Do we need to look up the router or is the extend info complete? */
if (!intro->extend_info->onion_key) {
- router = router_get_by_nickname(intro->extend_info->nickname, 0);
- if (!router) {
+ const node_t *node;
+ if (tor_digest_is_zero(intro->extend_info->identity_digest))
+ node = node_get_by_hex_id(intro->extend_info->nickname);
+ else
+ node = node_get_by_id(intro->extend_info->identity_digest);
+ if (!node) {
log_info(LD_REND, "Unknown router with nickname '%s'; trying another.",
intro->extend_info->nickname);
rend_intro_point_free(intro);
@@ -764,7 +768,7 @@ rend_client_get_random_intro(const rend_data_t *rend_query)
goto again;
}
extend_info_free(intro->extend_info);
- intro->extend_info = extend_info_from_router(router);
+ intro->extend_info = extend_info_from_node(node);
}
return extend_info_dup(intro->extend_info);
}
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index b0d791529..0f63776ef 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -14,6 +14,7 @@
#include "config.h"
#include "directory.h"
#include "networkstatus.h"
+#include "nodelist.h"
#include "rendclient.h"
#include "rendcommon.h"
#include "rendservice.h"
@@ -1001,7 +1002,7 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request,
} else {
char *rp_nickname;
size_t nickname_field_len;
- routerinfo_t *router;
+ const node_t *node;
int version;
if (*buf == 1) {
rp_nickname = buf+1;
@@ -1028,8 +1029,8 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request,
len -= nickname_field_len;
len -= rp_nickname - buf; /* also remove header space used by version, if
* any */
- router = router_get_by_nickname(rp_nickname, 0);
- if (!router) {
+ node = node_get_by_nickname(rp_nickname, 0);
+ if (!node) {
log_info(LD_REND, "Couldn't find router %s named in introduce2 cell.",
escaped_safe_str_client(rp_nickname));
/* XXXX Add a no-such-router reason? */
@@ -1037,7 +1038,7 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request,
goto err;
}
- extend_info = extend_info_from_router(router);
+ extend_info = extend_info_from_node(node);
}
if (len != REND_COOKIE_LEN+DH_KEY_LEN) {
@@ -1577,7 +1578,7 @@ directory_post_to_hs_dir(rend_service_descriptor_t *renddesc,
hs_dir->identity_digest))
/* Don't upload descriptor if we succeeded in doing so last time. */
continue;
- if (!router_get_by_digest(hs_dir->identity_digest)) {
+ if (!router_get_by_id_digest(hs_dir->identity_digest)) {
log_info(LD_REND, "Not sending publish request for v2 descriptor to "
"hidden service directory '%s'; we don't have its "
"router descriptor. Queuing for later upload.",
@@ -1754,19 +1755,19 @@ void
rend_services_introduce(void)
{
int i,j,r;
- routerinfo_t *router;
+ const node_t *node;
rend_service_t *service;
rend_intro_point_t *intro;
int changed, prev_intro_nodes;
- smartlist_t *intro_routers;
+ smartlist_t *intro_nodes;
time_t now;
or_options_t *options = get_options();
- intro_routers = smartlist_create();
+ intro_nodes = smartlist_create();
now = time(NULL);
for (i=0; i < smartlist_len(rend_service_list); ++i) {
- smartlist_clear(intro_routers);
+ smartlist_clear(intro_nodes);
service = smartlist_get(rend_service_list, i);
tor_assert(service);
@@ -1786,8 +1787,8 @@ rend_services_introduce(void)
service. */
for (j=0; j < smartlist_len(service->intro_nodes); ++j) {
intro = smartlist_get(service->intro_nodes, j);
- router = router_get_by_digest(intro->extend_info->identity_digest);
- if (!router || !find_intro_circuit(intro, service->pk_digest)) {
+ node = node_get_by_id(intro->extend_info->identity_digest);
+ if (!node || !find_intro_circuit(intro, service->pk_digest)) {
log_info(LD_REND,"Giving up on %s as intro point for %s.",
intro->extend_info->nickname, service->service_id);
if (service->desc) {
@@ -1806,8 +1807,8 @@ rend_services_introduce(void)
smartlist_del(service->intro_nodes,j--);
changed = 1;
}
- if (router)
- smartlist_add(intro_routers, router);
+ if (node)
+ smartlist_add(intro_nodes, (void*)node);
}
/* We have enough intro points, and the intro points we thought we had were
@@ -1836,26 +1837,26 @@ rend_services_introduce(void)
#define NUM_INTRO_POINTS_INIT (NUM_INTRO_POINTS + 2)
for (j=prev_intro_nodes; j < (prev_intro_nodes == 0 ?
NUM_INTRO_POINTS_INIT : NUM_INTRO_POINTS); ++j) {
- router_crn_flags_t flags = CRN_NEED_UPTIME;
+ router_crn_flags_t flags = CRN_NEED_UPTIME|CRN_NEED_DESC;
if (get_options()->_AllowInvalid & ALLOW_INVALID_INTRODUCTION)
flags |= CRN_ALLOW_INVALID;
- router = router_choose_random_node(intro_routers,
- options->ExcludeNodes, flags);
- if (!router) {
+ node = router_choose_random_node(intro_nodes,
+ options->ExcludeNodes, flags);
+ if (!node) {
log_warn(LD_REND,
"Could only establish %d introduction points for %s.",
smartlist_len(service->intro_nodes), service->service_id);
break;
}
changed = 1;
- smartlist_add(intro_routers, router);
+ smartlist_add(intro_nodes, (void*)node);
intro = tor_malloc_zero(sizeof(rend_intro_point_t));
- intro->extend_info = extend_info_from_router(router);
+ intro->extend_info = extend_info_from_node(node);
intro->intro_key = crypto_new_pk_env();
tor_assert(!crypto_pk_generate_key(intro->intro_key));
smartlist_add(service->intro_nodes, intro);
log_info(LD_REND, "Picked router %s as an intro point for %s.",
- router->nickname, service->service_id);
+ node_get_nickname(node), service->service_id);
}
/* If there's no need to launch new circuits, stop here. */
@@ -1872,7 +1873,7 @@ rend_services_introduce(void)
}
}
}
- smartlist_free(intro_routers);
+ smartlist_free(intro_nodes);
}
/** Regenerate and upload rendezvous service descriptors for all
diff --git a/src/or/rephist.c b/src/or/rephist.c
index 056fc5cc1..a18b2cebc 100644
--- a/src/or/rephist.c
+++ b/src/or/rephist.c
@@ -14,6 +14,7 @@
#include "circuitlist.h"
#include "circuituse.h"
#include "config.h"
+#include "nodelist.h"
#include "rephist.h"
#include "router.h"
#include "routerlist.h"
@@ -579,7 +580,7 @@ rep_hist_dump_stats(time_t now, int severity)
size_t len;
int ret;
unsigned long upt, downt;
- routerinfo_t *r;
+ const node_t *node;
rep_history_clean(now - get_options()->RephistTrackTime);
@@ -593,8 +594,8 @@ rep_hist_dump_stats(time_t now, int severity)
digestmap_iter_get(orhist_it, &digest1, &or_history_p);
or_history = (or_history_t*) or_history_p;
- if ((r = router_get_by_digest(digest1)))
- name1 = r->nickname;
+ if ((node = node_get_by_id(digest1)) && node_get_nickname(node))
+ name1 = node_get_nickname(node);
else
name1 = "(unknown)";
base16_encode(hexdigest1, sizeof(hexdigest1), digest1, DIGEST_LEN);
@@ -624,8 +625,8 @@ rep_hist_dump_stats(time_t now, int severity)
lhist_it = digestmap_iter_next(or_history->link_history_map,
lhist_it)) {
digestmap_iter_get(lhist_it, &digest2, &link_history_p);
- if ((r = router_get_by_digest(digest2)))
- name2 = r->nickname;
+ if ((node = node_get_by_id(digest2)) && node_get_nickname(node))
+ name2 = node_get_nickname(node);
else
name2 = "(unknown)";
@@ -756,7 +757,7 @@ rep_hist_record_mtbf_data(time_t now, int missing_means_down)
base16_encode(dbuf, sizeof(dbuf), digest, DIGEST_LEN);
if (missing_means_down && hist->start_of_run &&
- !router_get_by_digest(digest)) {
+ !router_get_by_id_digest(digest)) {
/* We think this relay is running, but it's not listed in our
* routerlist. Somehow it fell out without telling us it went
* down. Complain and also correct it. */
@@ -871,28 +872,32 @@ rep_hist_get_router_stability_doc(time_t now)
}
DIGESTMAP_FOREACH(history_map, id, or_history_t *, hist) {
- routerinfo_t *ri;
+ const node_t *node;
char dbuf[BASE64_DIGEST_LEN+1];
char header_buf[512];
char *info;
digest_to_base64(dbuf, id);
- ri = router_get_by_digest(id);
- if (ri) {
- char *ip = tor_dup_ip(ri->addr);
+ node = node_get_by_id(id);
+ if (node) {
+ char ip[INET_NTOA_BUF_LEN+1];
char tbuf[ISO_TIME_LEN+1];
- format_iso_time(tbuf, ri->cache_info.published_on);
+ time_t published = node_get_published_on(node);
+ node_get_address_string(node,ip,sizeof(ip));
+ if (published > 0)
+ format_iso_time(tbuf, published);
+ else
+ strlcpy(tbuf, "???", sizeof(tbuf));
tor_snprintf(header_buf, sizeof(header_buf),
"router %s %s %s\n"
"published %s\n"
"relevant-flags %s%s%s\n"
"declared-uptime %ld\n",
- dbuf, ri->nickname, ip,
+ dbuf, node_get_nickname(node), ip,
tbuf,
- ri->is_running ? "Running " : "",
- ri->is_valid ? "Valid " : "",
- ri->is_hibernating ? "Hibernating " : "",
- ri->uptime);
- tor_free(ip);
+ node->is_running ? "Running " : "",
+ node->is_valid ? "Valid " : "",
+ node->ri && node->ri->is_hibernating ? "Hibernating " : "",
+ node_get_declared_uptime(node));
} else {
tor_snprintf(header_buf, sizeof(header_buf),
"router %s {no descriptor}\n", dbuf);
@@ -2184,7 +2189,6 @@ typedef struct circ_buffer_stats_t {
uint32_t processed_cells;
double mean_num_cells_in_queue;
double mean_time_cells_in_queue;
- uint32_t local_circ_id;
} circ_buffer_stats_t;
/** Holds stats. */
@@ -2207,9 +2211,9 @@ rep_hist_buffer_stats_add_circ(circuit_t *circ, time_t end_of_interval)
return;
if (!circuits_for_buffer_stats)
circuits_for_buffer_stats = smartlist_create();
- start_of_interval = circ->timestamp_created >
- start_of_buffer_stats_interval ?
- circ->timestamp_created :
+ start_of_interval = (circ->timestamp_created.tv_sec >
+ start_of_buffer_stats_interval) ?
+ circ->timestamp_created.tv_sec :
start_of_buffer_stats_interval;
interval_length = (int) (end_of_interval - start_of_interval);
stat = tor_malloc_zero(sizeof(circ_buffer_stats_t));
diff --git a/src/or/router.c b/src/or/router.c
index 8b3a1849a..a188d50f9 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -7,6 +7,7 @@
#define ROUTER_PRIVATE
#include "or.h"
+#include "circuitbuild.h"
#include "circuitlist.h"
#include "circuituse.h"
#include "config.h"
@@ -19,6 +20,7 @@
#include "hibernate.h"
#include "main.h"
#include "networkstatus.h"
+#include "nodelist.h"
#include "policies.h"
#include "relay.h"
#include "rephist.h"
@@ -49,11 +51,15 @@ static crypto_pk_env_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_env_t *lastonionkey=NULL;
-/** Private "identity key": used to sign directory info and TLS
+/** Private server "identity key": used to sign directory info and TLS
* certificates. Never changes. */
-static crypto_pk_env_t *identitykey=NULL;
-/** Digest of identitykey. */
-static char identitykey_digest[DIGEST_LEN];
+static crypto_pk_env_t *server_identitykey=NULL;
+/** Digest of server_identitykey. */
+static char server_identitykey_digest[DIGEST_LEN];
+/** Private client "identity key": used to sign bridges' and clients'
+ * outbound TLS certificates. Regenerated on startup and on IP address
+ * change. */
+static crypto_pk_env_t *client_identitykey=NULL;
/** Signing key used for v3 directory material; only set for authorities. */
static crypto_pk_env_t *authority_signing_key = NULL;
/** Key certificate to authenticate v3 directory material; only set for
@@ -123,31 +129,78 @@ get_onion_key_set_at(void)
return onionkey_set_at;
}
-/** Set the current identity key to k.
+/** Set the current server identity key to <b>k</b>.
*/
void
-set_identity_key(crypto_pk_env_t *k)
+set_server_identity_key(crypto_pk_env_t *k)
{
- crypto_free_pk_env(identitykey);
- identitykey = k;
- crypto_pk_get_digest(identitykey, identitykey_digest);
+ crypto_free_pk_env(server_identitykey);
+ server_identitykey = k;
+ crypto_pk_get_digest(server_identitykey, server_identitykey_digest);
}
-/** Returns the current identity key; requires that the identity key has been
- * set.
+/** Make sure that we have set up our identity keys to match or not match as
+ * appropriate, and die with an assertion if we have not. */
+static void
+assert_identity_keys_ok(void)
+{
+ tor_assert(client_identitykey);
+ if (public_server_mode(get_options())) {
+ /* assert that we have set the client and server keys to be equal */
+ tor_assert(server_identitykey);
+ tor_assert(0==crypto_pk_cmp_keys(client_identitykey, server_identitykey));
+ } else {
+ /* assert that we have set the client and server keys to be unequal */
+ if (server_identitykey)
+ tor_assert(0!=crypto_pk_cmp_keys(client_identitykey,
+ server_identitykey));
+ }
+}
+
+/** Returns the current server identity key; requires that the key has
+ * been set, and that we are running as a Tor server.
*/
crypto_pk_env_t *
-get_identity_key(void)
+get_server_identity_key(void)
{
- tor_assert(identitykey);
- return identitykey;
+ tor_assert(server_identitykey);
+ tor_assert(server_mode(get_options()));
+ assert_identity_keys_ok();
+ return server_identitykey;
}
-/** Return true iff the identity key has been set. */
+/** Return true iff the server identity key has been set. */
int
-identity_key_is_set(void)
+server_identity_key_is_set(void)
+{
+ return server_identitykey != NULL;
+}
+
+/** Set the current client identity key to <b>k</b>.
+ */
+void
+set_client_identity_key(crypto_pk_env_t *k)
{
- return identitykey != NULL;
+ crypto_free_pk_env(client_identitykey);
+ client_identitykey = k;
+}
+
+/** Returns the current client identity key for use on outgoing TLS
+ * connections; requires that the key has been set.
+ */
+crypto_pk_env_t *
+get_tlsclient_identity_key(void)
+{
+ tor_assert(client_identitykey);
+ assert_identity_keys_ok();
+ return client_identitykey;
+}
+
+/** Return true iff the client identity key has been set. */
+int
+client_identity_key_is_set(void)
+{
+ return client_identitykey != NULL;
}
/** Return the key certificate for this v3 (voting) authority, or NULL
@@ -470,9 +523,12 @@ init_keys(void)
crypto_free_pk_env(prkey);
return -1;
}
- set_identity_key(prkey);
- /* Create a TLS context; default the client nickname to "client". */
- if (tor_tls_context_new(get_identity_key(), MAX_SSL_KEY_LIFETIME) < 0) {
+ set_client_identity_key(prkey);
+ /* Create a TLS context. */
+ if (tor_tls_context_init(0,
+ get_tlsclient_identity_key(),
+ NULL,
+ MAX_SSL_KEY_LIFETIME) < 0) {
log_err(LD_GENERAL,"Error creating TLS context for Tor client.");
return -1;
}
@@ -507,13 +563,28 @@ init_keys(void)
}
}
- /* 1. Read identity key. Make it if none is found. */
+ /* 1b. Read identity key. Make it if none is found. */
keydir = get_datadir_fname2("keys", "secret_id_key");
log_info(LD_GENERAL,"Reading/making identity key \"%s\"...",keydir);
prkey = init_key_from_file(keydir, 1, LOG_ERR);
tor_free(keydir);
if (!prkey) return -1;
- set_identity_key(prkey);
+ set_server_identity_key(prkey);
+
+ /* 1c. If we are configured as a bridge, generate a client key;
+ * otherwise, set the server identity key as our client identity
+ * key. */
+ if (public_server_mode(options)) {
+ set_client_identity_key(crypto_pk_dup_key(prkey)); /* set above */
+ } else {
+ if (!(prkey = crypto_new_pk_env()))
+ return -1;
+ if (crypto_pk_generate_key(prkey)) {
+ crypto_free_pk_env(prkey);
+ return -1;
+ }
+ set_client_identity_key(prkey);
+ }
/* 2. Read onion key. Make it if none is found. */
keydir = get_datadir_fname2("keys", "secret_onion_key");
@@ -550,7 +621,10 @@ init_keys(void)
tor_free(keydir);
/* 3. Initialize link key and TLS context. */
- if (tor_tls_context_new(get_identity_key(), MAX_SSL_KEY_LIFETIME) < 0) {
+ if (tor_tls_context_init(public_server_mode(options),
+ get_tlsclient_identity_key(),
+ get_server_identity_key(),
+ MAX_SSL_KEY_LIFETIME) < 0) {
log_err(LD_GENERAL,"Error initializing TLS context");
return -1;
}
@@ -561,7 +635,8 @@ init_keys(void)
const char *m = NULL;
routerinfo_t *ri;
/* We need to add our own fingerprint so it gets recognized. */
- if (dirserv_add_own_fingerprint(options->Nickname, get_identity_key())) {
+ if (dirserv_add_own_fingerprint(options->Nickname,
+ get_server_identity_key())) {
log_err(LD_GENERAL,"Error adding own fingerprint to approved set");
return -1;
}
@@ -582,7 +657,8 @@ init_keys(void)
/* 5. Dump fingerprint to 'fingerprint' */
keydir = get_datadir_fname("fingerprint");
log_info(LD_GENERAL,"Dumping fingerprint to \"%s\"...",keydir);
- if (crypto_pk_get_fingerprint(get_identity_key(), fingerprint, 0)<0) {
+ if (crypto_pk_get_fingerprint(get_server_identity_key(),
+ fingerprint, 0) < 0) {
log_err(LD_GENERAL,"Error computing fingerprint");
tor_free(keydir);
return -1;
@@ -620,7 +696,7 @@ init_keys(void)
return -1;
}
/* 6b. [authdirserver only] add own key to approved directories. */
- crypto_pk_get_digest(get_identity_key(), digest);
+ crypto_pk_get_digest(get_server_identity_key(), digest);
type = ((options->V1AuthoritativeDir ? V1_AUTHORITY : NO_AUTHORITY) |
(options->V2AuthoritativeDir ? V2_AUTHORITY : NO_AUTHORITY) |
(options->V3AuthoritativeDir ? V3_AUTHORITY : NO_AUTHORITY) |
@@ -773,18 +849,21 @@ decide_to_advertise_dirport(or_options_t *options, uint16_t dir_port)
void
consider_testing_reachability(int test_or, int test_dir)
{
- routerinfo_t *me = router_get_my_routerinfo();
+ const routerinfo_t *me = router_get_my_routerinfo();
int orport_reachable = check_whether_orport_reachable();
tor_addr_t addr;
if (!me)
return;
if (test_or && (!orport_reachable || !circuit_enough_testing_circs())) {
+ extend_info_t *ei;
log_info(LD_CIRC, "Testing %s of my ORPort: %s:%d.",
!orport_reachable ? "reachability" : "bandwidth",
me->address, me->or_port);
- circuit_launch_by_router(CIRCUIT_PURPOSE_TESTING, me,
- CIRCLAUNCH_NEED_CAPACITY|CIRCLAUNCH_IS_INTERNAL);
+ ei = extend_info_from_router(me);
+ circuit_launch_by_extend_info(CIRCUIT_PURPOSE_TESTING, ei,
+ CIRCLAUNCH_NEED_CAPACITY|CIRCLAUNCH_IS_INTERNAL);
+ extend_info_free(ei);
}
tor_addr_from_ipv4h(&addr, me->addr);
@@ -808,7 +887,7 @@ void
router_orport_found_reachable(void)
{
if (!can_reach_or_port) {
- routerinfo_t *me = router_get_my_routerinfo();
+ const routerinfo_t *me = router_get_my_routerinfo();
log_notice(LD_OR,"Self-testing indicates your ORPort is reachable from "
"the outside. Excellent.%s",
get_options()->_PublishServerDescriptor != NO_AUTHORITY ?
@@ -831,7 +910,7 @@ void
router_dirport_found_reachable(void)
{
if (!can_reach_dir_port) {
- routerinfo_t *me = router_get_my_routerinfo();
+ const routerinfo_t *me = router_get_my_routerinfo();
log_notice(LD_DIRSERV,"Self-testing indicates your DirPort is reachable "
"from the outside. Excellent.");
can_reach_dir_port = 1;
@@ -976,6 +1055,15 @@ server_mode(or_options_t *options)
return (options->ORPort != 0 || options->ORListenAddress);
}
+/** Return true iff we are trying to be a non-bridge server.
+ */
+int
+public_server_mode(or_options_t *options)
+{
+ if (!server_mode(options)) return 0;
+ return (!options->BridgeRelay);
+}
+
/** Return true iff the combination of options in <b>options</b> and parameters
* in the consensus mean that we don't want to allow exits from circuits
* we got from addresses not known to be servers. */
@@ -1093,7 +1181,7 @@ static int desc_needs_upload = 0;
void
router_upload_dir_desc_to_dirservers(int force)
{
- routerinfo_t *ri;
+ const routerinfo_t *ri;
extrainfo_t *ei;
char *msg;
size_t desc_len, extra_len = 0, total_len;
@@ -1163,11 +1251,12 @@ router_my_exit_policy_is_reject_star(void)
}
/** Return true iff I'm a server and <b>digest</b> is equal to
- * my identity digest. */
+ * my server identity key digest. */
int
router_digest_is_me(const char *digest)
{
- return identitykey && !memcmp(identitykey_digest, digest, DIGEST_LEN);
+ return (server_identitykey &&
+ !memcmp(server_identitykey_digest, digest, DIGEST_LEN));
}
/** Return true iff I'm a server and <b>digest</b> is equal to
@@ -1186,7 +1275,7 @@ router_extrainfo_digest_is_me(const char *digest)
/** A wrapper around router_digest_is_me(). */
int
-router_is_me(routerinfo_t *router)
+router_is_me(const routerinfo_t *router)
{
return router_digest_is_me(router->cache_info.identity_digest);
}
@@ -1205,7 +1294,7 @@ router_fingerprint_is_me(const char *fp)
/** Return a routerinfo for this OR, rebuilding a fresh one if
* necessary. Return NULL on error, or if called on an OP. */
-routerinfo_t *
+const routerinfo_t *
router_get_my_routerinfo(void)
{
if (!server_mode(get_options()))
@@ -1257,8 +1346,6 @@ static int router_guess_address_from_dir_headers(uint32_t *guess);
int
router_pick_published_address(or_options_t *options, uint32_t *addr)
{
- char buf[INET_NTOA_BUF_LEN];
- struct in_addr a;
if (resolve_my_address(LOG_INFO, options, addr, NULL) < 0) {
log_info(LD_CONFIG, "Could not determine our address locally. "
"Checking if directory headers provide any hints.");
@@ -1268,9 +1355,7 @@ router_pick_published_address(or_options_t *options, uint32_t *addr)
return -1;
}
}
- a.s_addr = htonl(*addr);
- tor_inet_ntoa(&a, buf, sizeof(buf));
- log_info(LD_CONFIG,"Success: chose address '%s'.", buf);
+ log_info(LD_CONFIG,"Success: chose address '%s'.", fmt_addr32(*addr));
return 0;
}
@@ -1310,7 +1395,7 @@ 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 */
- ri->identity_pkey = crypto_pk_dup_key(get_identity_key());
+ ri->identity_pkey = crypto_pk_dup_key(get_server_identity_key());
if (crypto_pk_get_digest(ri->identity_pkey,
ri->cache_info.identity_digest)<0) {
routerinfo_free(ri);
@@ -1333,13 +1418,12 @@ router_rebuild_descriptor(int force)
ri->policy_is_reject_star =
policy_is_reject_star(ri->exit_policy);
- if (desc_routerinfo) { /* inherit values */
- ri->is_valid = desc_routerinfo->is_valid;
- ri->is_running = desc_routerinfo->is_running;
- ri->is_named = desc_routerinfo->is_named;
- }
+#if 0
+ /* XXXX NM NM I belive this is safe to remove */
if (authdir_mode(options))
ri->is_valid = ri->is_named = 1; /* believe in yourself */
+#endif
+
if (options->MyFamily) {
smartlist_t *family;
if (!warned_nonexistent_family)
@@ -1348,13 +1432,12 @@ router_rebuild_descriptor(int force)
ri->declared_family = smartlist_create();
smartlist_split_string(family, options->MyFamily, ",",
SPLIT_SKIP_SPACE|SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0);
- SMARTLIST_FOREACH(family, char *, name,
- {
- routerinfo_t *member;
+ SMARTLIST_FOREACH_BEGIN(family, char *, name) {
+ const node_t *member;
if (!strcasecmp(name, options->Nickname))
- member = ri;
+ goto skip; /* Don't list ourself, that's redundant */
else
- member = router_get_by_nickname(name, 1);
+ 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) &&
@@ -1374,19 +1457,21 @@ router_rebuild_descriptor(int force)
smartlist_add(ri->declared_family, name);
name = NULL;
}
- } else if (router_is_me(member)) {
+ } else if (router_digest_is_me(member->identity)) {
/* Don't list ourself in our own family; that's redundant */
+ /* XXX shouldn't be possible */
} else {
char *fp = tor_malloc(HEX_DIGEST_LEN+2);
fp[0] = '$';
base16_encode(fp+1,HEX_DIGEST_LEN+1,
- member->cache_info.identity_digest, DIGEST_LEN);
+ member->identity, DIGEST_LEN);
smartlist_add(ri->declared_family, fp);
if (smartlist_string_isin(warned_nonexistent_family, name))
smartlist_string_remove(warned_nonexistent_family, name);
}
+ skip:
tor_free(name);
- });
+ } SMARTLIST_FOREACH_END(name);
/* remove duplicates from the list */
smartlist_sort_strings(ri->declared_family);
@@ -1405,7 +1490,8 @@ router_rebuild_descriptor(int force)
ei_size = options->ExtraInfoStatistics ? MAX_EXTRAINFO_UPLOAD_SIZE : 8192;
ei->cache_info.signed_descriptor_body = tor_malloc(ei_size);
if (extrainfo_dump_to_string(ei->cache_info.signed_descriptor_body,
- ei_size, ei, get_identity_key()) < 0) {
+ ei_size, ei,
+ get_server_identity_key()) < 0) {
log_warn(LD_BUG, "Couldn't generate extra-info descriptor.");
routerinfo_free(ri);
extrainfo_free(ei);
@@ -1422,7 +1508,7 @@ router_rebuild_descriptor(int force)
DIGEST_LEN);
ri->cache_info.signed_descriptor_body = tor_malloc(8192);
if (router_dump_router_to_string(ri->cache_info.signed_descriptor_body, 8192,
- ri, get_identity_key())<0) {
+ ri, get_server_identity_key()) < 0) {
log_warn(LD_BUG, "Couldn't generate router descriptor.");
routerinfo_free(ri);
extrainfo_free(ei);
@@ -1444,8 +1530,6 @@ router_rebuild_descriptor(int force)
strlen(ri->cache_info.signed_descriptor_body),
ri->cache_info.signed_descriptor_digest);
- routerinfo_set_country(ri);
-
tor_assert(! routerinfo_incompatible_with_extrainfo(ri, ei, NULL, NULL));
routerinfo_free(desc_routerinfo);
@@ -2099,10 +2183,15 @@ is_legal_hexdigest(const char *s)
void
router_get_verbose_nickname(char *buf, const routerinfo_t *router)
{
+ const char *good_digest = networkstatus_get_router_digest_by_nickname(
+ router->nickname);
+ int is_named = good_digest && !memcmp(good_digest,
+ router->cache_info.identity_digest,
+ DIGEST_LEN);
buf[0] = '$';
base16_encode(buf+1, HEX_DIGEST_LEN+1, router->cache_info.identity_digest,
DIGEST_LEN);
- buf[1+HEX_DIGEST_LEN] = router->is_named ? '=' : '~';
+ buf[1+HEX_DIGEST_LEN] = is_named ? '=' : '~';
strlcpy(buf+1+HEX_DIGEST_LEN+1, router->nickname, MAX_NICKNAME_LEN+1);
}
@@ -2171,7 +2260,8 @@ router_free_all(void)
{
crypto_free_pk_env(onionkey);
crypto_free_pk_env(lastonionkey);
- crypto_free_pk_env(identitykey);
+ crypto_free_pk_env(server_identitykey);
+ crypto_free_pk_env(client_identitykey);
tor_mutex_free(key_lock);
routerinfo_free(desc_routerinfo);
extrainfo_free(desc_extrainfo);
diff --git a/src/or/router.h b/src/or/router.h
index c17fc78bd..41a9f7119 100644
--- a/src/or/router.h
+++ b/src/or/router.h
@@ -14,9 +14,12 @@
crypto_pk_env_t *get_onion_key(void);
time_t get_onion_key_set_at(void);
-void set_identity_key(crypto_pk_env_t *k);
-crypto_pk_env_t *get_identity_key(void);
-int identity_key_is_set(void);
+void set_server_identity_key(crypto_pk_env_t *k);
+crypto_pk_env_t *get_server_identity_key(void);
+int server_identity_key_is_set(void);
+void set_client_identity_key(crypto_pk_env_t *k);
+crypto_pk_env_t *get_tlsclient_identity_key(void);
+int client_identity_key_is_set(void);
authority_cert_t *get_my_v3_authority_cert(void);
crypto_pk_env_t *get_my_v3_authority_signing_key(void);
authority_cert_t *get_my_v3_legacy_cert(void);
@@ -48,6 +51,7 @@ int authdir_mode_tests_reachability(or_options_t *options);
int authdir_mode_bridge(or_options_t *options);
int server_mode(or_options_t *options);
+int public_server_mode(or_options_t *options);
int advertised_server_mode(void);
int proxy_mode(or_options_t *options);
void consider_publishable_server(int force);
@@ -62,12 +66,12 @@ void router_new_address_suggestion(const char *suggestion,
const dir_connection_t *d_conn);
int router_compare_to_my_exit_policy(edge_connection_t *conn);
int router_my_exit_policy_is_reject_star(void);
-routerinfo_t *router_get_my_routerinfo(void);
+const routerinfo_t *router_get_my_routerinfo(void);
extrainfo_t *router_get_my_extrainfo(void);
const char *router_get_my_descriptor(void);
int router_digest_is_me(const char *digest);
int router_extrainfo_digest_is_me(const char *digest);
-int router_is_me(routerinfo_t *router);
+int router_is_me(const routerinfo_t *router);
int router_fingerprint_is_me(const char *fp);
int router_pick_published_address(or_options_t *options, uint32_t *addr);
int router_rebuild_descriptor(int force);
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index 43be8346c..143591199 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -24,6 +24,7 @@
#include "main.h"
#include "microdesc.h"
#include "networkstatus.h"
+#include "nodelist.h"
#include "policies.h"
#include "reasons.h"
#include "rendcommon.h"
@@ -38,17 +39,21 @@
/****************************************************************************/
/* static function prototypes */
-static routerstatus_t *router_pick_directory_server_impl(
+static const routerstatus_t *router_pick_directory_server_impl(
authority_type_t auth, int flags);
-static routerstatus_t *router_pick_trusteddirserver_impl(
+static const routerstatus_t *router_pick_trusteddirserver_impl(
authority_type_t auth, int flags, int *n_busy_out);
static void mark_all_trusteddirservers_up(void);
-static int router_nickname_matches(routerinfo_t *router, const char *nickname);
+static int router_nickname_matches(const routerinfo_t *router,
+ const char *nickname);
+static int node_nickname_matches(const node_t *router,
+ const char *nickname);
static void trusted_dir_server_free(trusted_dir_server_t *ds);
static int signed_desc_digest_is_recognized(signed_descriptor_t *desc);
static void update_router_have_minimum_dir_info(void);
-static const char *signed_descriptor_get_body_impl(signed_descriptor_t *desc,
- int with_annotations);
+static const char *signed_descriptor_get_body_impl(
+ const signed_descriptor_t *desc,
+ int with_annotations);
static void list_pending_downloads(digestmap_t *result,
int purpose, const char *prefix);
@@ -310,6 +315,7 @@ trusted_dirs_remove_old_certs(void)
time_t now = time(NULL);
#define DEAD_CERT_LIFETIME (2*24*60*60)
#define OLD_CERT_LIFETIME (7*24*60*60)
+#define CERT_EXPIRY_SKEW (60*60)
if (!trusted_dir_certs)
return;
@@ -326,7 +332,7 @@ trusted_dirs_remove_old_certs(void)
time_t cert_published;
if (newest == cert)
continue;
- expired = ftime_definitely_after(now, cert->expires);
+ expired = time_definitely_after(now, cert->expires, CERT_EXPIRY_SKEW);
cert_published = cert->cache_info.published_on;
/* Store expired certs for 48 hours after a newer arrives;
*/
@@ -518,7 +524,7 @@ authority_certs_fetch_missing(networkstatus_t *status, time_t now)
continue;
cl = get_cert_list(ds->v3_identity_digest);
SMARTLIST_FOREACH(cl->certs, authority_cert_t *, cert, {
- if (!ftime_definitely_after(now, cert->expires)) {
+ if (! time_definitely_after(now, cert->expires, CERT_EXPIRY_SKEW)) {
/* It's not expired, and we weren't looking for something to
* verify a consensus with. Call it done. */
download_status_reset(&cl->dl_status);
@@ -598,7 +604,7 @@ router_should_rebuild_store(desc_store_t *store)
/** Return the desc_store_t in <b>rl</b> that should be used to store
* <b>sd</b>. */
static INLINE desc_store_t *
-desc_get_store(routerlist_t *rl, signed_descriptor_t *sd)
+desc_get_store(routerlist_t *rl, const signed_descriptor_t *sd)
{
if (sd->is_extrainfo)
return &rl->extrainfo_store;
@@ -924,10 +930,10 @@ router_get_trusted_dir_servers(void)
* Don't pick an authority if any non-authority is viable; try to avoid using
* servers that have returned 503 recently.
*/
-routerstatus_t *
+const routerstatus_t *
router_pick_directory_server(authority_type_t type, int flags)
{
- routerstatus_t *choice;
+ const routerstatus_t *choice;
if (get_options()->PreferTunneledDirConns)
flags |= _PDS_PREFER_TUNNELED_DIR_CONNS;
@@ -956,8 +962,8 @@ int
router_get_my_share_of_directory_requests(double *v2_share_out,
double *v3_share_out)
{
- routerinfo_t *me = router_get_my_routerinfo();
- routerstatus_t *rs;
+ const routerinfo_t *me = router_get_my_routerinfo();
+ const routerstatus_t *rs;
const int pds_flags = PDS_ALLOW_SELF|PDS_IGNORE_FASCISTFIREWALL;
*v2_share_out = *v3_share_out = 0.0;
if (!me)
@@ -1030,10 +1036,10 @@ trusteddirserver_get_by_v3_auth_digest(const char *digest)
/** Try to find a running trusted dirserver. Flags are as for
* router_pick_directory_server.
*/
-routerstatus_t *
+const routerstatus_t *
router_pick_trusteddirserver(authority_type_t type, int flags)
{
- routerstatus_t *choice;
+ const routerstatus_t *choice;
int busy = 0;
if (get_options()->PreferTunneledDirConns)
flags |= _PDS_PREFER_TUNNELED_DIR_CONNS;
@@ -1066,10 +1072,10 @@ router_pick_trusteddirserver(authority_type_t type, int flags)
* If the _PDS_PREFER_TUNNELED_DIR_CONNS flag is set, prefer directory servers
* that we can use with BEGINDIR.
*/
-static routerstatus_t *
+static const routerstatus_t *
router_pick_directory_server_impl(authority_type_t type, int flags)
{
- routerstatus_t *result;
+ const node_t *result;
smartlist_t *direct, *tunnel;
smartlist_t *trusted_direct, *trusted_tunnel;
smartlist_t *overloaded_direct, *overloaded_tunnel;
@@ -1090,49 +1096,54 @@ router_pick_directory_server_impl(authority_type_t type, int flags)
overloaded_tunnel = smartlist_create();
/* Find all the running dirservers we know about. */
- SMARTLIST_FOREACH_BEGIN(consensus->routerstatus_list, routerstatus_t *,
- status) {
+ SMARTLIST_FOREACH_BEGIN(nodelist_get_list(), const node_t *, node) {
int is_trusted;
- int is_overloaded = status->last_dir_503_at + DIR_503_TIMEOUT > now;
+ int is_overloaded;
tor_addr_t addr;
- if (!status->is_running || !status->dir_port || !status->is_valid)
+ const routerstatus_t *status = node->rs;
+ if (!status)
continue;
- if (status->is_bad_directory)
+
+ if (!node->is_running || !status->dir_port || !node->is_valid)
+ continue;
+ if (node->is_bad_directory)
continue;
- if (requireother && router_digest_is_me(status->identity_digest))
+ if (requireother && router_digest_is_me(node->identity))
continue;
if (type & V3_AUTHORITY) {
if (!(status->version_supports_v3_dir ||
- router_digest_is_trusted_dir_type(status->identity_digest,
+ router_digest_is_trusted_dir_type(node->identity,
V3_AUTHORITY)))
continue;
}
- is_trusted = router_digest_is_trusted_dir(status->identity_digest);
- if ((type & V2_AUTHORITY) && !(status->is_v2_dir || is_trusted))
+ is_trusted = router_digest_is_trusted_dir(node->identity);
+ if ((type & V2_AUTHORITY) && !(node->rs->is_v2_dir || is_trusted))
continue;
if ((type & EXTRAINFO_CACHE) &&
- !router_supports_extrainfo(status->identity_digest, 0))
+ !router_supports_extrainfo(node->identity, 0))
continue;
/* XXXX IP6 proposal 118 */
- tor_addr_from_ipv4h(&addr, status->addr);
+ tor_addr_from_ipv4h(&addr, node->rs->addr);
+
+ is_overloaded = status->last_dir_503_at + DIR_503_TIMEOUT > now;
if (prefer_tunnel &&
status->version_supports_begindir &&
(!fascistfirewall ||
fascist_firewall_allows_address_or(&addr, status->or_port)))
smartlist_add(is_trusted ? trusted_tunnel :
- is_overloaded ? overloaded_tunnel : tunnel, status);
+ is_overloaded ? overloaded_tunnel : tunnel, (void*)node);
else if (!fascistfirewall ||
fascist_firewall_allows_address_dir(&addr, status->dir_port))
smartlist_add(is_trusted ? trusted_direct :
- is_overloaded ? overloaded_direct : direct, status);
- } SMARTLIST_FOREACH_END(status);
+ is_overloaded ? overloaded_direct : direct, (void*)node);
+ } SMARTLIST_FOREACH_END(node);
if (smartlist_len(tunnel)) {
- result = routerstatus_sl_choose_by_bandwidth(tunnel, WEIGHT_FOR_DIR);
+ result = node_sl_choose_by_bandwidth(tunnel, WEIGHT_FOR_DIR);
} else if (smartlist_len(overloaded_tunnel)) {
- result = routerstatus_sl_choose_by_bandwidth(overloaded_tunnel,
+ result = node_sl_choose_by_bandwidth(overloaded_tunnel,
WEIGHT_FOR_DIR);
} else if (smartlist_len(trusted_tunnel)) {
/* FFFF We don't distinguish between trusteds and overloaded trusteds
@@ -1141,10 +1152,10 @@ router_pick_directory_server_impl(authority_type_t type, int flags)
* is a feature, but it could easily be a bug. -RD */
result = smartlist_choose(trusted_tunnel);
} else if (smartlist_len(direct)) {
- result = routerstatus_sl_choose_by_bandwidth(direct, WEIGHT_FOR_DIR);
+ result = node_sl_choose_by_bandwidth(direct, WEIGHT_FOR_DIR);
} else if (smartlist_len(overloaded_direct)) {
- result = routerstatus_sl_choose_by_bandwidth(overloaded_direct,
- WEIGHT_FOR_DIR);
+ result = node_sl_choose_by_bandwidth(overloaded_direct,
+ WEIGHT_FOR_DIR);
} else {
result = smartlist_choose(trusted_direct);
}
@@ -1154,20 +1165,20 @@ router_pick_directory_server_impl(authority_type_t type, int flags)
smartlist_free(trusted_tunnel);
smartlist_free(overloaded_direct);
smartlist_free(overloaded_tunnel);
- return result;
+ return result ? result->rs : NULL;
}
/** Choose randomly from among the trusted dirservers that are up. Flags
* are as for router_pick_directory_server_impl().
*/
-static routerstatus_t *
+static const routerstatus_t *
router_pick_trusteddirserver_impl(authority_type_t type, int flags,
int *n_busy_out)
{
smartlist_t *direct, *tunnel;
smartlist_t *overloaded_direct, *overloaded_tunnel;
- routerinfo_t *me = router_get_my_routerinfo();
- routerstatus_t *result;
+ const routerinfo_t *me = router_get_my_routerinfo();
+ const routerstatus_t *result;
time_t now = time(NULL);
const int requireother = ! (flags & PDS_ALLOW_SELF);
const int fascistfirewall = ! (flags & PDS_IGNORE_FASCISTFIREWALL);
@@ -1257,22 +1268,18 @@ router_pick_trusteddirserver_impl(authority_type_t type, int flags,
static void
mark_all_trusteddirservers_up(void)
{
- if (routerlist) {
- SMARTLIST_FOREACH(routerlist->routers, routerinfo_t *, router,
- if (router_digest_is_trusted_dir(router->cache_info.identity_digest) &&
- router->dir_port > 0) {
- router->is_running = 1;
- });
- }
+ SMARTLIST_FOREACH(nodelist_get_list(), node_t *, node, {
+ if (router_digest_is_trusted_dir(node->identity))
+ node->is_running = 1;
+ });
if (trusted_dir_servers) {
SMARTLIST_FOREACH(trusted_dir_servers, trusted_dir_server_t *, dir,
{
routerstatus_t *rs;
dir->is_running = 1;
download_status_reset(&dir->v2_ns_dl_status);
- rs = router_get_consensus_status_by_id(dir->digest);
- if (rs && !rs->is_running) {
- rs->is_running = 1;
+ rs = router_get_mutable_consensus_status_by_id(dir->digest);
+ if (rs) {
rs->last_dir_503_at = 0;
control_event_networkstatus_changed_single(rs);
}
@@ -1296,25 +1303,14 @@ router_reset_status_download_failures(void)
mark_all_trusteddirservers_up();
}
-/** Return true iff router1 and router2 have the same /16 network. */
+/** Return true iff router1 and router2 have similar enough network addresses
+ * that we should treat them as being in the same family */
static INLINE int
-routers_in_same_network_family(routerinfo_t *r1, routerinfo_t *r2)
-{
- return (r1->addr & 0xffff0000) == (r2->addr & 0xffff0000);
-}
-
-/** Look through the routerlist and identify routers that
- * advertise the same /16 network address as <b>router</b>.
- * Add each of them to <b>sl</b>.
- */
-static void
-routerlist_add_network_family(smartlist_t *sl, routerinfo_t *router)
+addrs_in_same_network_family(const tor_addr_t *a1,
+ const tor_addr_t *a2)
{
- SMARTLIST_FOREACH(routerlist->routers, routerinfo_t *, r,
- {
- if (router != r && routers_in_same_network_family(router, r))
- smartlist_add(sl, r);
- });
+ /* XXXX MOVE ? */
+ return 0 == tor_addr_compare_masked(a1, a2, 16, CMP_SEMANTIC);
}
/** Add all the family of <b>router</b> to the smartlist <b>sl</b>.
@@ -1322,122 +1318,132 @@ routerlist_add_network_family(smartlist_t *sl, routerinfo_t *router)
* or pick more than one relay from a family for our entry guard list.
*/
void
-routerlist_add_family(smartlist_t *sl, routerinfo_t *router)
+nodelist_add_node_family(smartlist_t *sl, const node_t *node)
{
- routerinfo_t *r;
- config_line_t *cl;
+ /* XXXX MOVE */
+ const smartlist_t *all_nodes = nodelist_get_list();
+ const smartlist_t *declared_family;
or_options_t *options = get_options();
- /* First, add any routers with similar network addresses. */
- if (options->EnforceDistinctSubnets)
- routerlist_add_network_family(sl, router);
+ tor_assert(node);
- if (router->declared_family) {
- /* Add every r such that router declares familyness with r, and r
+ declared_family = node_get_declared_family(node);
+
+ /* First, add any nodes with similar network addresses. */
+ if (options->EnforceDistinctSubnets) {
+ tor_addr_t node_addr;
+ node_get_addr(node, &node_addr);
+
+ SMARTLIST_FOREACH_BEGIN(all_nodes, const node_t *, node2) {
+ tor_addr_t a;
+ node_get_addr(node2, &a);
+ if (addrs_in_same_network_family(&a, &node_addr))
+ smartlist_add(sl, (void*)node2);
+ } SMARTLIST_FOREACH_END(node2);
+ }
+
+ /* Now, add all nodes in the declared_family of this node, if they
+ * also declare this node to be in their family. */
+ if (declared_family) {
+ /* Add every r such that router declares familyness with node, and node
* declares familyhood with router. */
- SMARTLIST_FOREACH(router->declared_family, const char *, n,
- {
- if (!(r = router_get_by_nickname(n, 0)))
- continue;
- if (!r->declared_family)
- continue;
- SMARTLIST_FOREACH(r->declared_family, const char *, n2,
- {
- if (router_nickname_matches(router, n2))
- smartlist_add(sl, r);
- });
- });
+ SMARTLIST_FOREACH_BEGIN(declared_family, const char *, name) {
+ const node_t *node2;
+ const smartlist_t *family2;
+ if (!(node2 = node_get_by_nickname(name, 0)))
+ continue;
+ if (!(family2 = node_get_declared_family(node2)))
+ continue;
+ SMARTLIST_FOREACH_BEGIN(family2, const char *, name2) {
+ if (node_nickname_matches(node, name2)) {
+ smartlist_add(sl, (void*)node2);
+ break;
+ }
+ } SMARTLIST_FOREACH_END(name2);
+ } SMARTLIST_FOREACH_END(name);
}
/* If the user declared any families locally, honor those too. */
- for (cl = options->NodeFamilies; cl; cl = cl->next) {
- if (router_nickname_is_in_list(router, cl->value)) {
- add_nickname_list_to_smartlist(sl, cl->value, 0);
- }
+ if (options->NodeFamilySets) {
+ SMARTLIST_FOREACH(options->NodeFamilySets, const routerset_t *, rs, {
+ if (routerset_contains_node(rs, node)) {
+ routerset_get_all_nodes(sl, rs, 0);
+ }
+ });
}
}
-/** Return true iff r is named by some nickname in <b>lst</b>. */
+/** Given a <b>router</b>, add every node_t in its family to <b>sl</b>.
+ *
+ * Note the type mismatch: This function takes a routerinfo, but adds nodes
+ * to the smartlist!
+ */
+static void
+routerlist_add_nodes_in_family(smartlist_t *sl, const routerinfo_t *router)
+{
+ /* XXXX MOVE ? */
+ node_t fake_node;
+ const node_t *node = node_get_by_id(router->cache_info.identity_digest);;
+ if (node == NULL) {
+ memset(&fake_node, 0, sizeof(fake_node));
+ fake_node.ri = (routerinfo_t *)router;
+ memcpy(fake_node.identity, router->cache_info.identity_digest, DIGEST_LEN);
+ node = &fake_node;
+ }
+ nodelist_add_node_family(sl, node);
+}
+
+/** Return true iff <b>node</b> is named by some nickname in <b>lst</b>. */
static INLINE int
-router_in_nickname_smartlist(smartlist_t *lst, routerinfo_t *r)
+node_in_nickname_smartlist(const smartlist_t *lst, const node_t *node)
{
+ /* XXXX MOVE */
if (!lst) return 0;
- SMARTLIST_FOREACH(lst, const char *, name,
- if (router_nickname_matches(r, name))
- return 1;);
+ SMARTLIST_FOREACH(lst, const char *, name, {
+ if (node_nickname_matches(node, name))
+ return 1;
+ });
return 0;
}
/** Return true iff r1 and r2 are in the same family, but not the same
* router. */
int
-routers_in_same_family(routerinfo_t *r1, routerinfo_t *r2)
+nodes_in_same_family(const node_t *node1, const node_t *node2)
{
+ /* XXXX MOVE */
or_options_t *options = get_options();
- config_line_t *cl;
-
- if (options->EnforceDistinctSubnets && routers_in_same_network_family(r1,r2))
- return 1;
- if (router_in_nickname_smartlist(r1->declared_family, r2) &&
- router_in_nickname_smartlist(r2->declared_family, r1))
- return 1;
-
- for (cl = options->NodeFamilies; cl; cl = cl->next) {
- if (router_nickname_is_in_list(r1, cl->value) &&
- router_nickname_is_in_list(r2, cl->value))
+ /* Are they in the same family because of their addresses? */
+ if (options->EnforceDistinctSubnets) {
+ tor_addr_t a1, a2;
+ node_get_addr(node1, &a1);
+ node_get_addr(node2, &a2);
+ if (addrs_in_same_network_family(&a1, &a2))
return 1;
}
- return 0;
-}
-/** Given a (possibly NULL) comma-and-whitespace separated list of nicknames,
- * see which nicknames in <b>list</b> name routers in our routerlist, and add
- * the routerinfos for those routers to <b>sl</b>. If <b>must_be_running</b>,
- * only include routers that we think are running.
- * Warn if any non-Named routers are specified by nickname.
- */
-void
-add_nickname_list_to_smartlist(smartlist_t *sl, const char *list,
- int must_be_running)
-{
- routerinfo_t *router;
- smartlist_t *nickname_list;
- int have_dir_info = router_have_minimum_dir_info();
-
- if (!list)
- return; /* nothing to do */
- tor_assert(sl);
-
- nickname_list = smartlist_create();
- if (!warned_nicknames)
- warned_nicknames = smartlist_create();
+ /* Are they in the same family because the agree they are? */
+ {
+ const smartlist_t *f1, *f2;
+ f1 = node_get_declared_family(node1);
+ f2 = node_get_declared_family(node2);
+ if (f1 && f2 &&
+ node_in_nickname_smartlist(f1, node2) &&
+ node_in_nickname_smartlist(f2, node1))
+ return 1;
+ }
- smartlist_split_string(nickname_list, list, ",",
- SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0);
+ /* Are they in the same option because the user says they are? */
+ if (options->NodeFamilySets) {
+ SMARTLIST_FOREACH(options->NodeFamilySets, const routerset_t *, rs, {
+ if (routerset_contains_node(rs, node1) &&
+ routerset_contains_node(rs, node2))
+ return 1;
+ });
+ }
- SMARTLIST_FOREACH(nickname_list, const char *, nick, {
- int warned;
- if (!is_legal_nickname_or_hexdigest(nick)) {
- log_warn(LD_CONFIG, "Nickname '%s' is misformed; skipping", nick);
- continue;
- }
- router = router_get_by_nickname(nick, 1);
- warned = smartlist_string_isin(warned_nicknames, nick);
- if (router) {
- if (!must_be_running || router->is_running) {
- smartlist_add(sl,router);
- }
- } else if (!router_get_consensus_status_by_nickname(nick,1)) {
- if (!warned) {
- log_fn(have_dir_info ? LOG_WARN : LOG_INFO, LD_CONFIG,
- "Nickname list includes '%s' which isn't a known router.",nick);
- smartlist_add(warned_nicknames, tor_strdup(nick));
- }
- }
- });
- SMARTLIST_FOREACH(nickname_list, char *, nick, tor_free(nick));
- smartlist_free(nickname_list);
+ return 0;
}
/** Return 1 iff any member of the (possibly NULL) comma-separated list
@@ -1445,7 +1451,7 @@ add_nickname_list_to_smartlist(smartlist_t *sl, const char *list,
* return 0.
*/
int
-router_nickname_is_in_list(routerinfo_t *router, const char *list)
+router_nickname_is_in_list(const routerinfo_t *router, const char *list)
{
smartlist_t *nickname_list;
int v = 0;
@@ -1464,34 +1470,32 @@ router_nickname_is_in_list(routerinfo_t *router, const char *list)
return v;
}
-/** Add every suitable router from our routerlist to <b>sl</b>, so that
+/** Add every suitable node from our nodelist to <b>sl</b>, so that
* we can pick a node for a circuit.
*/
static void
-router_add_running_routers_to_smartlist(smartlist_t *sl, int allow_invalid,
- int need_uptime, int need_capacity,
- int need_guard)
-{
- if (!routerlist)
- return;
+router_add_running_nodes_to_smartlist(smartlist_t *sl, int allow_invalid,
+ int need_uptime, int need_capacity,
+ int need_guard, int need_desc)
+{ /* XXXX MOVE */
+ SMARTLIST_FOREACH_BEGIN(nodelist_get_list(), const node_t *, node) {
+ if (!node->is_running ||
+ (!node->is_valid && !allow_invalid))
+ continue;
+ if (need_desc && !(node->ri || (node->rs && node->md)))
+ continue;
+ if (node->ri && node->ri->purpose != ROUTER_PURPOSE_GENERAL)
+ continue;
+ if (node_is_unreliable(node, need_uptime, need_capacity, need_guard))
+ continue;
- SMARTLIST_FOREACH(routerlist->routers, routerinfo_t *, router,
- {
- if (router->is_running &&
- router->purpose == ROUTER_PURPOSE_GENERAL &&
- (router->is_valid || allow_invalid) &&
- !router_is_unreliable(router, need_uptime,
- need_capacity, need_guard)) {
- /* If it's running, and it's suitable according to the
- * other flags we had in mind */
- smartlist_add(sl, router);
- }
- });
+ smartlist_add(sl, (void *)node);
+ } SMARTLIST_FOREACH_END(node);
}
/** Look through the routerlist until we find a router that has my key.
Return it. */
-routerinfo_t *
+const routerinfo_t *
routerlist_find_my_routerinfo(void)
{
if (!routerlist)
@@ -1509,9 +1513,9 @@ routerlist_find_my_routerinfo(void)
* that allows exit to this address:port, or return NULL if there
* isn't a good one.
*/
-routerinfo_t *
+const node_t *
router_find_exact_exit_enclave(const char *address, uint16_t port)
-{
+{/*XXXX MOVE*/
uint32_t addr;
struct in_addr in;
tor_addr_t a;
@@ -1522,13 +1526,12 @@ router_find_exact_exit_enclave(const char *address, uint16_t port)
tor_addr_from_ipv4h(&a, addr);
- SMARTLIST_FOREACH(routerlist->routers, routerinfo_t *, router,
- {
- if (router->addr == addr &&
- router->is_running &&
- compare_tor_addr_to_addr_policy(&a, port, router->exit_policy) ==
+ SMARTLIST_FOREACH(nodelist_get_list(), const node_t *, node, {
+ if (node_get_addr_ipv4h(node) == addr &&
+ node->is_running &&
+ compare_tor_addr_to_node_policy(&a, port, node) ==
ADDR_POLICY_ACCEPTED)
- return router;
+ return node;
});
return NULL;
}
@@ -1540,14 +1543,14 @@ router_find_exact_exit_enclave(const char *address, uint16_t port)
* If <b>need_guard</b>, we require that the router is a possible entry guard.
*/
int
-router_is_unreliable(routerinfo_t *router, int need_uptime,
- int need_capacity, int need_guard)
+node_is_unreliable(const node_t *node, int need_uptime,
+ int need_capacity, int need_guard)
{
- if (need_uptime && !router->is_stable)
+ if (need_uptime && !node->is_stable)
return 1;
- if (need_capacity && !router->is_fast)
+ if (need_capacity && !node->is_fast)
return 1;
- if (need_guard && !router->is_possible_guard)
+ if (need_guard && !node->is_possible_guard)
return 1;
return 0;
}
@@ -1555,7 +1558,7 @@ router_is_unreliable(routerinfo_t *router, int need_uptime,
/** Return the smaller of the router's configured BandwidthRate
* and its advertised capacity. */
uint32_t
-router_get_advertised_bandwidth(routerinfo_t *router)
+router_get_advertised_bandwidth(const routerinfo_t *router)
{
if (router->bandwidthcapacity < router->bandwidthrate)
return router->bandwidthcapacity;
@@ -1569,7 +1572,7 @@ router_get_advertised_bandwidth(routerinfo_t *router)
/** Return the smaller of the router's configured BandwidthRate
* and its advertised capacity, capped by max-believe-bw. */
uint32_t
-router_get_advertised_bandwidth_capped(routerinfo_t *router)
+router_get_advertised_bandwidth_capped(const routerinfo_t *router)
{
uint32_t result = router->bandwidthcapacity;
if (result > router->bandwidthrate)
@@ -1611,13 +1614,10 @@ kb_to_bytes(uint32_t bw)
}
/** Helper function:
- * choose a random element of smartlist <b>sl</b>, weighted by
+ * choose a random element of smartlist <b>sl</b> of nodes, weighted by
* the advertised bandwidth of each element using the consensus
* bandwidth weights.
*
- * If <b>statuses</b> is zero, then <b>sl</b> is a list of
- * routerinfo_t's. Otherwise it's a list of routerstatus_t's.
- *
* If <b>rule</b>==WEIGHT_FOR_EXIT. we're picking an exit node: consider all
* nodes' bandwidth equally regardless of their Exit status, since there may
* be some in the list because they exit to obscure ports. If
@@ -1627,10 +1627,9 @@ kb_to_bytes(uint32_t bw)
* guard node: consider all guard's bandwidth equally. Otherwise, weight
* guards proportionally less.
*/
-static void *
-smartlist_choose_by_bandwidth_weights(smartlist_t *sl,
- bandwidth_weight_rule_t rule,
- int statuses)
+static const node_t *
+smartlist_choose_node_by_bandwidth_weights(smartlist_t *sl,
+ bandwidth_weight_rule_t rule)
{
int64_t weight_scale;
int64_t rand_bw;
@@ -1725,15 +1724,14 @@ smartlist_choose_by_bandwidth_weights(smartlist_t *sl,
bandwidths = tor_malloc_zero(sizeof(double)*smartlist_len(sl));
// Cycle through smartlist and total the bandwidth.
- for (i = 0; i < (unsigned)smartlist_len(sl); ++i) {
+ SMARTLIST_FOREACH_BEGIN(sl, const node_t *, node) {
int is_exit = 0, is_guard = 0, is_dir = 0, this_bw = 0, is_me = 0;
double weight = 1;
- if (statuses) {
- routerstatus_t *status = smartlist_get(sl, i);
- is_exit = status->is_exit;
- is_guard = status->is_possible_guard;
- is_dir = (status->dir_port != 0);
- if (!status->has_bandwidth) {
+ is_exit = node->is_exit;
+ is_guard = node->is_possible_guard;
+ is_dir = node_is_dir(node);
+ if (node->rs) {
+ if (!node->rs->has_bandwidth) {
tor_free(bandwidths);
/* This should never happen, unless all the authorites downgrade
* to 0.2.0 or rogue routerstatuses get inserted into our consensus. */
@@ -1742,26 +1740,17 @@ smartlist_choose_by_bandwidth_weights(smartlist_t *sl,
"old router selection algorithm.");
return NULL;
}
- this_bw = kb_to_bytes(status->bandwidth);
- if (router_digest_is_me(status->identity_digest))
- is_me = 1;
+ this_bw = kb_to_bytes(node->rs->bandwidth);
+ } else if (node->ri) {
+ /* bridge or other descriptor not in our consensus */
+ this_bw = bridge_get_advertised_bandwidth_bounded(node->ri);
+ have_unknown = 1;
} else {
- routerstatus_t *rs;
- routerinfo_t *router = smartlist_get(sl, i);
- rs = router_get_consensus_status_by_id(
- router->cache_info.identity_digest);
- is_exit = router->is_exit;
- is_guard = router->is_possible_guard;
- is_dir = (router->dir_port != 0);
- if (rs && rs->has_bandwidth) {
- this_bw = kb_to_bytes(rs->bandwidth);
- } else { /* bridge or other descriptor not in our consensus */
- this_bw = bridge_get_advertised_bandwidth_bounded(router);
- have_unknown = 1;
- }
- if (router_digest_is_me(router->cache_info.identity_digest))
- is_me = 1;
+ /* We can't use this one. */
+ continue;
}
+ is_me = router_digest_is_me(node->identity);
+
if (is_guard && is_exit) {
weight = (is_dir ? Wdb*Wd : Wd);
} else if (is_guard) {
@@ -1772,11 +1761,11 @@ smartlist_choose_by_bandwidth_weights(smartlist_t *sl,
weight = (is_dir ? Wmb*Wm : Wm);
}
- bandwidths[i] = weight*this_bw;
+ bandwidths[node_sl_idx] = weight*this_bw;
weighted_bw += weight*this_bw;
if (is_me)
sl_last_weighted_bw_of_me = weight*this_bw;
- }
+ } SMARTLIST_FOREACH_END(node);
/* XXXX022 this is a kludge to expose these values. */
sl_last_total_weighted_bw = weighted_bw;
@@ -1824,12 +1813,9 @@ smartlist_choose_by_bandwidth_weights(smartlist_t *sl,
}
/** Helper function:
- * choose a random element of smartlist <b>sl</b>, weighted by
+ * choose a random node_t element of smartlist <b>sl</b>, weighted by
* the advertised bandwidth of each element.
*
- * If <b>statuses</b> is zero, then <b>sl</b> is a list of
- * routerinfo_t's. Otherwise it's a list of routerstatus_t's.
- *
* If <b>rule</b>==WEIGHT_FOR_EXIT. we're picking an exit node: consider all
* nodes' bandwidth equally regardless of their Exit status, since there may
* be some in the list because they exit to obscure ports. If
@@ -1839,13 +1825,11 @@ smartlist_choose_by_bandwidth_weights(smartlist_t *sl,
* guard node: consider all guard's bandwidth equally. Otherwise, weight
* guards proportionally less.
*/
-static void *
-smartlist_choose_by_bandwidth(smartlist_t *sl, bandwidth_weight_rule_t rule,
- int statuses)
+static const node_t *
+smartlist_choose_node_by_bandwidth(smartlist_t *sl,
+ bandwidth_weight_rule_t rule)
{
- unsigned int i;
- routerinfo_t *router;
- routerstatus_t *status=NULL;
+ unsigned i;
int32_t *bandwidths;
int is_exit;
int is_guard;
@@ -1886,49 +1870,34 @@ smartlist_choose_by_bandwidth(smartlist_t *sl, bandwidth_weight_rule_t rule,
guard_bits = bitarray_init_zero(smartlist_len(sl));
/* Iterate over all the routerinfo_t or routerstatus_t, and */
- for (i = 0; i < (unsigned)smartlist_len(sl); ++i) {
+ SMARTLIST_FOREACH_BEGIN(sl, const node_t *, node) {
/* first, learn what bandwidth we think i has */
int is_known = 1;
int32_t flags = 0;
uint32_t this_bw = 0;
- if (statuses) {
- status = smartlist_get(sl, i);
- if (router_digest_is_me(status->identity_digest))
- me_idx = i;
- router = router_get_by_digest(status->identity_digest);
- is_exit = status->is_exit;
- is_guard = status->is_possible_guard;
- if (status->has_bandwidth) {
- this_bw = kb_to_bytes(status->bandwidth);
+ i = node_sl_idx;
+
+ if (router_digest_is_me(node->identity))
+ me_idx = node_sl_idx;
+
+ is_exit = node->is_exit;
+ is_guard = node->is_possible_guard;
+ if (node->rs) {
+ if (node->rs->has_bandwidth) {
+ this_bw = kb_to_bytes(node->rs->bandwidth);
} else { /* guess */
/* XXX022 once consensuses always list bandwidths, we can take
* this guessing business out. -RD */
is_known = 0;
- flags = status->is_fast ? 1 : 0;
+ flags = node->rs->is_fast ? 1 : 0;
flags |= is_exit ? 2 : 0;
flags |= is_guard ? 4 : 0;
}
- } else {
- routerstatus_t *rs;
- router = smartlist_get(sl, i);
- rs = router_get_consensus_status_by_id(
- router->cache_info.identity_digest);
- if (router_digest_is_me(router->cache_info.identity_digest))
- me_idx = i;
- is_exit = router->is_exit;
- is_guard = router->is_possible_guard;
- if (rs && rs->has_bandwidth) {
- this_bw = kb_to_bytes(rs->bandwidth);
- } else if (rs) { /* guess; don't trust the descriptor */
- /* XXX022 once consensuses always list bandwidths, we can take
- * this guessing business out. -RD */
- is_known = 0;
- flags = router->is_fast ? 1 : 0;
- flags |= is_exit ? 2 : 0;
- flags |= is_guard ? 4 : 0;
- } else /* bridge or other descriptor not in our consensus */
- this_bw = bridge_get_advertised_bandwidth_bounded(router);
+ } else if (node->ri) {
+ /* Must be a bridge if we're willing to use it */
+ this_bw = bridge_get_advertised_bandwidth_bounded(node->ri);
}
+
if (is_exit)
bitarray_set(exit_bits, i);
if (is_guard)
@@ -1948,9 +1917,9 @@ smartlist_choose_by_bandwidth(smartlist_t *sl, bandwidth_weight_rule_t rule,
total_nonexit_bw += this_bw;
} else {
++n_unknown;
- bandwidths[i] = -flags;
+ bandwidths[node_sl_idx] = -flags;
}
- }
+ } SMARTLIST_FOREACH_END(node);
/* Now, fill in the unknown values. */
if (n_unknown) {
@@ -2092,40 +2061,23 @@ smartlist_choose_by_bandwidth(smartlist_t *sl, bandwidth_weight_rule_t rule,
return smartlist_get(sl, i);
}
-/** Choose a random element of router list <b>sl</b>, weighted by
- * the advertised bandwidth of each router.
- */
-routerinfo_t *
-routerlist_sl_choose_by_bandwidth(smartlist_t *sl,
- bandwidth_weight_rule_t rule)
-{
- routerinfo_t *ret;
- if ((ret = smartlist_choose_by_bandwidth_weights(sl, rule, 0))) {
- return ret;
- } else {
- return smartlist_choose_by_bandwidth(sl, rule, 0);
- }
-}
-
/** Choose a random element of status list <b>sl</b>, weighted by
- * the advertised bandwidth of each status.
- */
-routerstatus_t *
-routerstatus_sl_choose_by_bandwidth(smartlist_t *sl,
- bandwidth_weight_rule_t rule)
-{
- /* We are choosing neither exit nor guard here. Weight accordingly. */
- routerstatus_t *ret;
- if ((ret = smartlist_choose_by_bandwidth_weights(sl, rule, 1))) {
+ * the advertised bandwidth of each node */
+const node_t *
+node_sl_choose_by_bandwidth(smartlist_t *sl,
+ bandwidth_weight_rule_t rule)
+{ /*XXXX MOVE */
+ const node_t *ret;
+ if ((ret = smartlist_choose_node_by_bandwidth_weights(sl, rule))) {
return ret;
} else {
- return smartlist_choose_by_bandwidth(sl, rule, 1);
+ return smartlist_choose_node_by_bandwidth(sl, rule);
}
}
-/** Return a random running router from the routerlist. Never
- * pick a node whose routerinfo is in
- * <b>excludedsmartlist</b>, or whose routerinfo matches <b>excludedset</b>,
+/** Return a random running node from the nodelist. Never
+ * pick a node that is in
+ * <b>excludedsmartlist</b>, or which matches <b>excludedset</b>,
* even if they are the only nodes available.
* If <b>CRN_NEED_UPTIME</b> is set in flags and any router has more than
* a minimum uptime, return one of those.
@@ -2137,21 +2089,26 @@ routerstatus_sl_choose_by_bandwidth(smartlist_t *sl,
* If <b>CRN_WEIGHT_AS_EXIT</b> is set in flags, we weight bandwidths as if
* picking an exit node, otherwise we weight bandwidths for picking a relay
* node (that is, possibly discounting exit nodes).
+ * If <b>CRN_NEED_DESC</b> is set in flags, we only consider nodes that
+ * have a routerinfo or microdescriptor -- that is, enough info to be
+ * used to build a circuit.
*/
-routerinfo_t *
+const node_t *
router_choose_random_node(smartlist_t *excludedsmartlist,
routerset_t *excludedset,
router_crn_flags_t flags)
-{
+{ /* XXXX MOVE */
const int need_uptime = (flags & CRN_NEED_UPTIME) != 0;
const int need_capacity = (flags & CRN_NEED_CAPACITY) != 0;
const int need_guard = (flags & CRN_NEED_GUARD) != 0;
const int allow_invalid = (flags & CRN_ALLOW_INVALID) != 0;
const int weight_for_exit = (flags & CRN_WEIGHT_AS_EXIT) != 0;
+ const int need_desc = (flags & CRN_NEED_DESC) != 0;
smartlist_t *sl=smartlist_create(),
- *excludednodes=smartlist_create();
- routerinfo_t *choice = NULL, *r;
+ *excludednodes=smartlist_create();
+ const node_t *choice = NULL;
+ const routerinfo_t *r;
bandwidth_weight_rule_t rule;
tor_assert(!(weight_for_exit && need_guard));
@@ -2161,29 +2118,30 @@ router_choose_random_node(smartlist_t *excludedsmartlist,
/* Exclude relays that allow single hop exit circuits, if the user
* wants to (such relays might be risky) */
if (get_options()->ExcludeSingleHopRelays) {
- routerlist_t *rl = router_get_routerlist();
- SMARTLIST_FOREACH(rl->routers, routerinfo_t *, r,
- if (r->allow_single_hop_exits) {
- smartlist_add(excludednodes, r);
+ SMARTLIST_FOREACH(nodelist_get_list(), node_t *, node,
+ if (node_allows_single_hop_exits(node)) {
+ smartlist_add(excludednodes, node);
});
}
if ((r = routerlist_find_my_routerinfo())) {
- smartlist_add(excludednodes, r);
- routerlist_add_family(excludednodes, r);
+ const node_t *me = node_get_by_id(r->cache_info.identity_digest);
+ if (me)
+ smartlist_add(excludednodes, (void *)me);
+ routerlist_add_nodes_in_family(excludednodes, r);
}
- router_add_running_routers_to_smartlist(sl, allow_invalid,
- need_uptime, need_capacity,
- need_guard);
+ router_add_running_nodes_to_smartlist(sl, allow_invalid,
+ need_uptime, need_capacity,
+ need_guard, need_desc);
smartlist_subtract(sl,excludednodes);
if (excludedsmartlist)
smartlist_subtract(sl,excludedsmartlist);
if (excludedset)
- routerset_subtract_routers(sl,excludedset);
+ routerset_subtract_nodes(sl,excludedset);
// Always weight by bandwidth
- choice = routerlist_sl_choose_by_bandwidth(sl, rule);
+ choice = node_sl_choose_by_bandwidth(sl, rule);
smartlist_free(sl);
if (!choice && (need_uptime || need_capacity || need_guard)) {
@@ -2206,35 +2164,88 @@ router_choose_random_node(smartlist_t *excludedsmartlist,
return choice;
}
-/** Helper: Return true iff the <b>identity_digest</b> and <b>nickname</b>
- * combination of a router, encoded in hexadecimal, matches <b>hexdigest</b>
- * (which is optionally prefixed with a single dollar sign). Return false if
- * <b>hexdigest</b> is malformed, or it doesn't match. */
-static INLINE int
-hex_digest_matches(const char *hexdigest, const char *identity_digest,
- const char *nickname, int is_named)
+/** Helper: given an extended nickname in <b>hexdigest</b> try to decode it.
+ * Return 0 on success, -1 on failure. Store the result into the
+ * DIGEST_LEN-byte buffer at <b>digest_out</b>, the single character at
+ * <b>nickname_qualifier_char_out</b>, and the MAXNICKNAME_LEN+1-byte buffer
+ * at <b>nickname_out</b>.
+ *
+ * The recognized format is:
+ * HexName = Dollar? HexDigest NamePart?
+ * Dollar = '?'
+ * HexDigest = HexChar*20
+ * HexChar = 'a'..'f' | 'A'..'F' | '0'..'9'
+ * NamePart = QualChar Name
+ * QualChar = '=' | '~'
+ * Name = NameChar*(1..MAX_NICKNAME_LEN)
+ * NameChar = Any ASCII alphanumeric character
+ */
+int
+hex_digest_nickname_decode(const char *hexdigest,
+ char *digest_out,
+ char *nickname_qualifier_char_out,
+ char *nickname_out)
{
- char digest[DIGEST_LEN];
size_t len;
+
tor_assert(hexdigest);
if (hexdigest[0] == '$')
++hexdigest;
len = strlen(hexdigest);
- if (len < HEX_DIGEST_LEN)
+ if (len < HEX_DIGEST_LEN) {
+ return -1;
+ } else if (len > HEX_DIGEST_LEN && (hexdigest[HEX_DIGEST_LEN] == '=' ||
+ hexdigest[HEX_DIGEST_LEN] == '~') &&
+ len <= HEX_DIGEST_LEN+1+MAX_NICKNAME_LEN) {
+ *nickname_qualifier_char_out = hexdigest[HEX_DIGEST_LEN];
+ strlcpy(nickname_out, hexdigest+HEX_DIGEST_LEN+1 , MAX_NICKNAME_LEN+1);
+ } else if (len == HEX_DIGEST_LEN) {
+ ;
+ } else {
+ return -1;
+ }
+
+ if (base16_decode(digest_out, DIGEST_LEN, hexdigest, HEX_DIGEST_LEN)<0)
+ return -1;
+ return 0;
+}
+
+/** Helper: Return true iff the <b>identity_digest</b> and <b>nickname</b>
+ * combination of a router, encoded in hexadecimal, matches <b>hexdigest</b>
+ * (which is optionally prefixed with a single dollar sign). Return false if
+ * <b>hexdigest</b> is malformed, or it doesn't match. */
+static int
+hex_digest_nickname_matches(const char *hexdigest, const char *identity_digest,
+ const char *nickname, int is_named)
+{
+ char digest[DIGEST_LEN];
+ char nn_char='\0';
+ char nn_buf[MAX_NICKNAME_LEN+1];
+
+ if (hex_digest_nickname_decode(hexdigest, digest, &nn_char, nn_buf) == -1)
return 0;
- else if (len > HEX_DIGEST_LEN &&
- (hexdigest[HEX_DIGEST_LEN] == '=' ||
- hexdigest[HEX_DIGEST_LEN] == '~')) {
- if (strcasecmp(hexdigest+HEX_DIGEST_LEN+1, nickname))
+
+ if (nn_char == '=' || nn_char == '~') {
+ if (strcasecmp(nn_buf, nickname))
return 0;
- if (hexdigest[HEX_DIGEST_LEN] == '=' && !is_named)
+ if (nn_char == '=' && !is_named)
return 0;
}
- if (base16_decode(digest, DIGEST_LEN, hexdigest, HEX_DIGEST_LEN)<0)
- return 0;
- return (!memcmp(digest, identity_digest, DIGEST_LEN));
+ return !memcmp(digest, identity_digest, DIGEST_LEN);
+}
+
+/* Return true iff <b>router</b> is listed as named in the current
+ * consensus. */
+static int
+router_is_named(const routerinfo_t *router)
+{
+ const char *digest =
+ networkstatus_get_router_digest_by_nickname(router->nickname);
+
+ return (digest &&
+ !memcmp(digest, router->cache_info.identity_digest, DIGEST_LEN));
}
/** Return true iff the digest of <b>router</b>'s identity key,
@@ -2242,10 +2253,12 @@ hex_digest_matches(const char *hexdigest, const char *identity_digest,
* optionally prefixed with a single dollar sign). Return false if
* <b>hexdigest</b> is malformed, or it doesn't match. */
static INLINE int
-router_hex_digest_matches(routerinfo_t *router, const char *hexdigest)
+router_hex_digest_matches(const routerinfo_t *router, const char *hexdigest)
{
- return hex_digest_matches(hexdigest, router->cache_info.identity_digest,
- router->nickname, router->is_named);
+ return hex_digest_nickname_matches(hexdigest,
+ router->cache_info.identity_digest,
+ router->nickname,
+ router_is_named(router));
}
/** Return true if <b>router</b>'s nickname matches <b>nickname</b>
@@ -2253,20 +2266,43 @@ router_hex_digest_matches(routerinfo_t *router, const char *hexdigest)
* matches a hexadecimal value stored in <b>nickname</b>. Return
* false otherwise. */
static int
-router_nickname_matches(routerinfo_t *router, const char *nickname)
+router_nickname_matches(const routerinfo_t *router, const char *nickname)
{
if (nickname[0]!='$' && !strcasecmp(router->nickname, nickname))
return 1;
return router_hex_digest_matches(router, nickname);
}
+/** Return true if <b>node</b>'s nickname matches <b>nickname</b>
+ * (case-insensitive), or if <b>node's</b> identity key digest
+ * matches a hexadecimal value stored in <b>nickname</b>. Return
+ * false otherwise. */
+static int
+node_nickname_matches(const node_t *node, const char *nickname)
+{
+ const char *n = node_get_nickname(node);
+ if (n && nickname[0]!='$' && !strcasecmp(n, nickname))
+ return 1;
+ return hex_digest_nickname_matches(nickname,
+ node->identity,
+ n,
+ node_is_named(node));
+}
+
/** Return the router in our routerlist whose (case-insensitive)
* nickname or (case-sensitive) hexadecimal key digest is
* <b>nickname</b>. Return NULL if no such router is known.
*/
-routerinfo_t *
+const routerinfo_t *
router_get_by_nickname(const char *nickname, int warn_if_unnamed)
{
+#if 1
+ const node_t *node = node_get_by_nickname(nickname, warn_if_unnamed);
+ if (node)
+ return node->ri;
+ else
+ return NULL;
+#else
int maybedigest;
char digest[DIGEST_LEN];
routerinfo_t *best_match=NULL;
@@ -2280,9 +2316,6 @@ router_get_by_nickname(const char *nickname, int warn_if_unnamed)
return router_get_by_hexdigest(nickname);
if (!strcasecmp(nickname, UNNAMED_ROUTER_NICKNAME))
return NULL;
- if (server_mode(get_options()) &&
- !strcasecmp(nickname, get_options()->Nickname))
- return router_get_my_routerinfo();
maybedigest = (strlen(nickname) >= HEX_DIGEST_LEN) &&
(base16_decode(digest,DIGEST_LEN,nickname,HEX_DIGEST_LEN) == 0);
@@ -2315,15 +2348,14 @@ router_get_by_nickname(const char *nickname, int warn_if_unnamed)
if (warn_if_unnamed && n_matches > 1) {
smartlist_t *fps = smartlist_create();
int any_unwarned = 0;
- SMARTLIST_FOREACH(routerlist->routers, routerinfo_t *, router,
- {
+ SMARTLIST_FOREACH_BEGIN(routerlist->routers, routerinfo_t *, router) {
routerstatus_t *rs;
char *desc;
size_t dlen;
char fp[HEX_DIGEST_LEN+1];
if (strcasecmp(router->nickname, nickname))
continue;
- rs = router_get_consensus_status_by_id(
+ rs = router_get_mutable_consensus_status_by_id(
router->cache_info.identity_digest);
if (rs && !rs->name_lookup_warned) {
rs->name_lookup_warned = 1;
@@ -2336,7 +2368,7 @@ router_get_by_nickname(const char *nickname, int warn_if_unnamed)
tor_snprintf(desc, dlen, "\"$%s\" for the one at %s:%d",
fp, router->address, router->or_port);
smartlist_add(fps, desc);
- });
+ } SMARTLIST_FOREACH_END(router);
if (any_unwarned) {
char *alternatives = smartlist_join_strings(fps, "; ",0,NULL);
log_warn(LD_CONFIG,
@@ -2349,7 +2381,7 @@ router_get_by_nickname(const char *nickname, int warn_if_unnamed)
SMARTLIST_FOREACH(fps, char *, cp, tor_free(cp));
smartlist_free(fps);
} else if (warn_if_unnamed) {
- routerstatus_t *rs = router_get_consensus_status_by_id(
+ routerstatus_t *rs = router_get_mutable_consensus_status_by_id(
best_match->cache_info.identity_digest);
if (rs && !rs->name_lookup_warned) {
char fp[HEX_DIGEST_LEN+1];
@@ -2365,8 +2397,8 @@ router_get_by_nickname(const char *nickname, int warn_if_unnamed)
}
return best_match;
}
-
return NULL;
+#endif
}
/** Try to find a routerinfo for <b>digest</b>. If we don't have one,
@@ -2375,7 +2407,7 @@ router_get_by_nickname(const char *nickname, int warn_if_unnamed)
int
router_digest_version_as_new_as(const char *digest, const char *cutoff)
{
- routerinfo_t *router = router_get_by_digest(digest);
+ const routerinfo_t *router = router_get_by_id_digest(digest);
if (!router)
return 1;
return tor_version_as_new_as(router->platform, cutoff);
@@ -2429,44 +2461,20 @@ hexdigest_to_digest(const char *hexdigest, char *digest)
/** Return the router in our routerlist whose hexadecimal key digest
* is <b>hexdigest</b>. Return NULL if no such router is known. */
-routerinfo_t *
+const routerinfo_t *
router_get_by_hexdigest(const char *hexdigest)
{
- char digest[DIGEST_LEN];
- size_t len;
- routerinfo_t *ri;
-
- tor_assert(hexdigest);
- if (!routerlist)
+ if (is_legal_nickname(hexdigest))
return NULL;
- if (hexdigest[0]=='$')
- ++hexdigest;
- len = strlen(hexdigest);
- if (hexdigest_to_digest(hexdigest, digest) < 0)
- return NULL;
-
- ri = router_get_by_digest(digest);
- if (ri && len > HEX_DIGEST_LEN) {
- if (hexdigest[HEX_DIGEST_LEN] == '=') {
- if (strcasecmp(ri->nickname, hexdigest+HEX_DIGEST_LEN+1) ||
- !ri->is_named)
- return NULL;
- } else if (hexdigest[HEX_DIGEST_LEN] == '~') {
- if (strcasecmp(ri->nickname, hexdigest+HEX_DIGEST_LEN+1))
- return NULL;
- } else {
- return NULL;
- }
- }
-
- return ri;
+ /* It's not a legal nickname, so it must be a hexdigest or nothing. */
+ return router_get_by_nickname(hexdigest, 1);
}
-/** Return the router in our routerlist whose 20-byte key digest
- * is <b>digest</b>. Return NULL if no such router is known. */
+/** As router_get_by_id_digest,but return a pointer that you're allowed to
+ * modify */
routerinfo_t *
-router_get_by_digest(const char *digest)
+router_get_mutable_by_digest(const char *digest)
{
tor_assert(digest);
@@ -2477,6 +2485,14 @@ router_get_by_digest(const char *digest)
return rimap_get(routerlist->identity_map, digest);
}
+/** Return the router in our routerlist whose 20-byte key digest
+ * is <b>digest</b>. Return NULL if no such router is known. */
+const routerinfo_t *
+router_get_by_id_digest(const char *digest)
+{
+ return router_get_mutable_by_digest(digest);
+}
+
/** Return the router in our routerlist whose 20-byte descriptor
* is <b>digest</b>. Return NULL if no such router is known. */
signed_descriptor_t *
@@ -2527,7 +2543,7 @@ extrainfo_get_by_descriptor_digest(const char *digest)
* The caller must not free the string returned.
*/
static const char *
-signed_descriptor_get_body_impl(signed_descriptor_t *desc,
+signed_descriptor_get_body_impl(const signed_descriptor_t *desc,
int with_annotations)
{
const char *r = NULL;
@@ -2576,7 +2592,7 @@ signed_descriptor_get_body_impl(signed_descriptor_t *desc,
* The caller must not free the string returned.
*/
const char *
-signed_descriptor_get_body(signed_descriptor_t *desc)
+signed_descriptor_get_body(const signed_descriptor_t *desc)
{
return signed_descriptor_get_body_impl(desc, 0);
}
@@ -2584,7 +2600,7 @@ signed_descriptor_get_body(signed_descriptor_t *desc)
/** As signed_descriptor_get_body(), but points to the beginning of the
* annotations section rather than the beginning of the descriptor. */
const char *
-signed_descriptor_get_annotations(signed_descriptor_t *desc)
+signed_descriptor_get_annotations(const signed_descriptor_t *desc)
{
return signed_descriptor_get_body_impl(desc, 1);
}
@@ -2637,7 +2653,6 @@ routerinfo_free(routerinfo_t *router)
}
addr_policy_list_free(router->exit_policy);
- /* XXXX Remove if this turns out to affect performance. */
memset(router, 77, sizeof(routerinfo_t));
tor_free(router);
@@ -2652,7 +2667,6 @@ extrainfo_free(extrainfo_t *extrainfo)
tor_free(extrainfo->cache_info.signed_descriptor_body);
tor_free(extrainfo->pending_sig);
- /* XXXX remove this if it turns out to slow us down. */
memset(extrainfo, 88, sizeof(extrainfo_t)); /* debug bad memory usage */
tor_free(extrainfo);
}
@@ -2666,7 +2680,6 @@ signed_descriptor_free(signed_descriptor_t *sd)
tor_free(sd->signed_descriptor_body);
- /* XXXX remove this once more bugs go away. */
memset(sd, 99, sizeof(signed_descriptor_t)); /* Debug bad mem usage */
tor_free(sd);
}
@@ -2768,8 +2781,7 @@ routerlist_insert(routerlist_t *rl, routerinfo_t *ri)
{
routerinfo_t *ri_old;
{
- /* XXXX Remove if this slows us down. */
- routerinfo_t *ri_generated = router_get_my_routerinfo();
+ const routerinfo_t *ri_generated = router_get_my_routerinfo();
tor_assert(ri_generated != ri);
}
tor_assert(ri->cache_info.routerlist_index == -1);
@@ -2783,6 +2795,7 @@ routerlist_insert(routerlist_t *rl, routerinfo_t *ri)
&ri->cache_info);
smartlist_add(rl->routers, ri);
ri->cache_info.routerlist_index = smartlist_len(rl->routers) - 1;
+ nodelist_add_routerinfo(ri);
router_dir_info_changed();
#ifdef DEBUG_ROUTERLIST
routerlist_assert_ok(rl);
@@ -2803,7 +2816,6 @@ extrainfo_insert(routerlist_t *rl, extrainfo_t *ei)
extrainfo_t *ei_tmp;
{
- /* XXXX remove this code if it slows us down. */
extrainfo_t *ei_generated = router_get_my_extrainfo();
tor_assert(ei_generated != ei);
}
@@ -2849,8 +2861,7 @@ static void
routerlist_insert_old(routerlist_t *rl, routerinfo_t *ri)
{
{
- /* XXXX remove this code if it slows us down. */
- routerinfo_t *ri_generated = router_get_my_routerinfo();
+ const routerinfo_t *ri_generated = router_get_my_routerinfo();
tor_assert(ri_generated != ri);
}
tor_assert(ri->cache_info.routerlist_index == -1);
@@ -2890,6 +2901,8 @@ routerlist_remove(routerlist_t *rl, routerinfo_t *ri, int make_old, time_t now)
tor_assert(0 <= idx && idx < smartlist_len(rl->routers));
tor_assert(smartlist_get(rl->routers, idx) == ri);
+ nodelist_remove_routerinfo(ri);
+
/* make sure the rephist module knows that it's not running */
rep_hist_note_router_unreachable(ri->cache_info.identity_digest, now);
@@ -3000,8 +3013,7 @@ routerlist_replace(routerlist_t *rl, routerinfo_t *ri_old,
routerinfo_t *ri_tmp;
extrainfo_t *ei_tmp;
{
- /* XXXX Remove this if it turns out to slow us down. */
- routerinfo_t *ri_generated = router_get_my_routerinfo();
+ const routerinfo_t *ri_generated = router_get_my_routerinfo();
tor_assert(ri_generated != ri_new);
}
tor_assert(ri_old != ri_new);
@@ -3011,6 +3023,9 @@ routerlist_replace(routerlist_t *rl, routerinfo_t *ri_old,
tor_assert(0 <= idx && idx < smartlist_len(rl->routers));
tor_assert(smartlist_get(rl->routers, idx) == ri_old);
+ nodelist_remove_routerinfo(ri_old);
+ nodelist_add_routerinfo(ri_new);
+
router_dir_info_changed();
if (idx >= 0) {
smartlist_set(rl->routers, idx, ri_new);
@@ -3147,28 +3162,27 @@ routerlist_reset_warnings(void)
void
router_set_status(const char *digest, int up)
{
- routerinfo_t *router;
- routerstatus_t *status;
+ node_t *node;
tor_assert(digest);
SMARTLIST_FOREACH(trusted_dir_servers, trusted_dir_server_t *, d,
if (!memcmp(d->digest, digest, DIGEST_LEN))
d->is_running = up);
- router = router_get_by_digest(digest);
- if (router) {
- log_debug(LD_DIR,"Marking router '%s/%s' as %s.",
- router->nickname, router->address, up ? "up" : "down");
- if (!up && router_is_me(router) && !we_are_hibernating())
+ node = node_get_mutable_by_id(digest);
+ if (node) {
+#if 0
+ char buf[MAX_VERBOSE_NICKNAME_LEN+1];
+ node_get_verbose_nickname(node,buf);
+ log_debug(LD_DIR,"Marking router %s as %s.",
+ buf, up ? "up" : "down");
+#endif
+ if (!up && node_is_me(node) && !we_are_hibernating())
log_warn(LD_NET, "We just marked ourself as down. Are your external "
"addresses reachable?");
- router->is_running = up;
- }
- status = router_get_consensus_status_by_id(digest);
- if (status && status->is_running != up) {
- status->is_running = up;
- control_event_networkstatus_changed_single(status);
+ node->is_running = up;
}
+
router_dir_info_changed();
}
@@ -3211,7 +3225,7 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg,
id_digest = router->cache_info.identity_digest;
- old_router = router_get_by_digest(id_digest);
+ old_router = router_get_mutable_by_digest(id_digest);
/* Make sure that we haven't already got this exact descriptor. */
if (sdmap_get(routerlist->desc_digest_map,
@@ -3234,12 +3248,12 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg,
if (authdir) {
if (authdir_wants_to_reject_router(router, msg,
- !from_cache && !from_fetch)) {
+ !from_cache && !from_fetch,
+ &authdir_believes_valid)) {
tor_assert(*msg);
routerinfo_free(router);
return ROUTER_AUTHDIR_REJECTS;
}
- authdir_believes_valid = router->is_valid;
} else if (from_fetch) {
/* Only check the descriptor digest against the network statuses when
* we are receiving in response to a fetch. */
@@ -3266,14 +3280,15 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg,
SMARTLIST_FOREACH(networkstatus_v2_list, networkstatus_v2_t *, ns,
{
routerstatus_t *rs =
- networkstatus_v2_find_entry(ns, id_digest);
+ networkstatus_v2_find_mutable_entry(ns, id_digest);
if (rs && !memcmp(rs->descriptor_digest,
router->cache_info.signed_descriptor_digest,
DIGEST_LEN))
rs->need_to_mirror = 0;
});
if (consensus) {
- routerstatus_t *rs = networkstatus_vote_find_entry(consensus, id_digest);
+ routerstatus_t *rs = networkstatus_vote_find_mutable_entry(
+ consensus, id_digest);
if (rs && !memcmp(rs->descriptor_digest,
router->cache_info.signed_descriptor_digest,
DIGEST_LEN)) {
@@ -3873,7 +3888,7 @@ router_load_extrainfo_from_string(const char *s, const char *eos,
static int
signed_desc_digest_is_recognized(signed_descriptor_t *desc)
{
- routerstatus_t *rs;
+ const routerstatus_t *rs;
networkstatus_t *consensus = networkstatus_get_latest_consensus();
int caches = directory_caches_dir_info(get_options());
const smartlist_t *networkstatus_v2_list = networkstatus_get_v2_list();
@@ -3909,31 +3924,31 @@ routerlist_retry_directory_downloads(time_t now)
update_microdesc_downloads(now);
}
-/** Return 1 if all running sufficiently-stable routers will reject
+/** Return 1 if all running sufficiently-stable routers we can use will reject
* addr:port, return 0 if any might accept it. */
int
-router_exit_policy_all_routers_reject(uint32_t addr, uint16_t port,
- int need_uptime)
-{
+router_exit_policy_all_nodes_reject(uint32_t addr, uint16_t port,
+ int need_uptime)
+{ /* XXXX MOVE */
addr_policy_result_t r;
- if (!routerlist) return 1;
- SMARTLIST_FOREACH(routerlist->routers, routerinfo_t *, router,
- {
- if (router->is_running &&
- !router_is_unreliable(router, need_uptime, 0, 0)) {
- r = compare_addr_to_addr_policy(addr, port, router->exit_policy);
+ SMARTLIST_FOREACH_BEGIN(nodelist_get_list(), const node_t *, node) {
+ if (node->is_running &&
+ !node_is_unreliable(node, need_uptime, 0, 0)) {
+
+ r = compare_addr_to_node_policy(addr, port, node);
+
if (r != ADDR_POLICY_REJECTED && r != ADDR_POLICY_PROBABLY_REJECTED)
return 0; /* this one could be ok. good enough. */
}
- });
+ } SMARTLIST_FOREACH_END(node);
return 1; /* all will reject. */
}
/** Return true iff <b>router</b> does not permit exit streams.
*/
int
-router_exit_policy_rejects_all(routerinfo_t *router)
+router_exit_policy_rejects_all(const routerinfo_t *router)
{
return router->policy_is_reject_star;
}
@@ -4128,7 +4143,7 @@ list_pending_microdesc_downloads(digestmap_t *result)
* otherwise, download from an appropriate random directory server.
*/
static void
-initiate_descriptor_downloads(routerstatus_t *source,
+initiate_descriptor_downloads(const routerstatus_t *source,
int purpose,
smartlist_t *digests,
int lo, int hi, int pds_flags)
@@ -4192,7 +4207,7 @@ initiate_descriptor_downloads(routerstatus_t *source,
static INLINE int
client_would_use_router(routerstatus_t *rs, time_t now, or_options_t *options)
{
- if (!rs->is_running && !options->FetchUselessDescriptors) {
+ if (!rs->is_flagged_running && !options->FetchUselessDescriptors) {
/* If we had this router descriptor, we wouldn't even bother using it.
* But, if we want to have a complete list, fetch it anyway. */
return 0;
@@ -4240,7 +4255,7 @@ client_would_use_router(routerstatus_t *rs, time_t now, or_options_t *options)
void
launch_descriptor_downloads(int purpose,
smartlist_t *downloadable,
- routerstatus_t *source, time_t now)
+ const routerstatus_t *source, time_t now)
{
int should_delay = 0, n_downloadable;
or_options_t *options = get_options();
@@ -4517,15 +4532,14 @@ update_consensus_router_descriptor_downloads(time_t now, int is_vote,
map = digestmap_new();
list_pending_descriptor_downloads(map, 0);
- SMARTLIST_FOREACH(consensus->routerstatus_list, void *, rsp,
- {
+ SMARTLIST_FOREACH_BEGIN(consensus->routerstatus_list, void *, rsp) {
routerstatus_t *rs =
is_vote ? &(((vote_routerstatus_t *)rsp)->status) : rsp;
signed_descriptor_t *sd;
if ((sd = router_get_by_descriptor_digest(rs->descriptor_digest))) {
- routerinfo_t *ri;
+ const routerinfo_t *ri;
++n_have;
- if (!(ri = router_get_by_digest(rs->identity_digest)) ||
+ if (!(ri = router_get_by_id_digest(rs->identity_digest)) ||
memcmp(ri->cache_info.signed_descriptor_digest,
sd->signed_descriptor_digest, DIGEST_LEN)) {
/* We have a descriptor with this digest, but either there is no
@@ -4558,7 +4572,8 @@ update_consensus_router_descriptor_downloads(time_t now, int is_vote,
if (is_vote && source) {
char time_bufnew[ISO_TIME_LEN+1];
char time_bufold[ISO_TIME_LEN+1];
- routerinfo_t *oldrouter = router_get_by_digest(rs->identity_digest);
+ const routerinfo_t *oldrouter;
+ oldrouter = router_get_by_id_digest(rs->identity_digest);
format_iso_time(time_bufnew, rs->published_on);
if (oldrouter)
format_iso_time(time_bufold, oldrouter->cache_info.published_on);
@@ -4568,7 +4583,7 @@ update_consensus_router_descriptor_downloads(time_t now, int is_vote,
source->nickname, oldrouter ? "known" : "unknown");
}
smartlist_add(downloadable, rs->descriptor_digest);
- });
+ } SMARTLIST_FOREACH_END(rsp);
if (!authdir_mode_handles_descs(options, ROUTER_PURPOSE_GENERAL)
&& smartlist_len(no_longer_old)) {
@@ -4679,7 +4694,7 @@ update_extrainfo_downloads(time_t now)
sd = &((routerinfo_t*)smartlist_get(lst, i))->cache_info;
if (sd->is_extrainfo)
continue; /* This should never happen. */
- if (old_routers && !router_get_by_digest(sd->identity_digest))
+ if (old_routers && !router_get_by_id_digest(sd->identity_digest))
continue; /* Couldn't check the signature if we got it. */
if (sd->extrainfo_is_bogus)
continue;
@@ -4780,7 +4795,7 @@ count_usable_descriptors(int *num_present, int *num_usable,
SMARTLIST_FOREACH(consensus->routerstatus_list, routerstatus_t *, rs,
{
- if (in_set && ! routerset_contains_routerstatus(in_set, rs))
+ if (in_set && ! routerset_contains_routerstatus(in_set, rs, -1))
continue;
if (client_would_use_router(rs, now, options)) {
++*num_usable; /* the consensus says we want it. */
@@ -4943,7 +4958,7 @@ router_reset_descriptor_download_failures(void)
* would not cause a recent (post 0.1.1.6) dirserver to republish.
*/
int
-router_differences_are_cosmetic(routerinfo_t *r1, routerinfo_t *r2)
+router_differences_are_cosmetic(const routerinfo_t *r1, const routerinfo_t *r2)
{
time_t r1pub, r2pub;
long time_difference;
@@ -4951,7 +4966,7 @@ router_differences_are_cosmetic(routerinfo_t *r1, routerinfo_t *r2)
/* r1 should be the one that was published first. */
if (r1->cache_info.published_on > r2->cache_info.published_on) {
- routerinfo_t *ri_tmp = r2;
+ const routerinfo_t *ri_tmp = r2;
r2 = r1;
r1 = ri_tmp;
}
@@ -5024,7 +5039,8 @@ router_differences_are_cosmetic(routerinfo_t *r1, routerinfo_t *r2)
* incompatibility (if any).
**/
int
-routerinfo_incompatible_with_extrainfo(routerinfo_t *ri, extrainfo_t *ei,
+routerinfo_incompatible_with_extrainfo(const routerinfo_t *ri,
+ extrainfo_t *ei,
signed_descriptor_t *sd,
const char **msg)
{
@@ -5032,7 +5048,7 @@ routerinfo_incompatible_with_extrainfo(routerinfo_t *ri, extrainfo_t *ei,
tor_assert(ri);
tor_assert(ei);
if (!sd)
- sd = &ri->cache_info;
+ sd = (signed_descriptor_t*)&ri->cache_info;
if (ei->bad_sig) {
if (msg) *msg = "Extrainfo signature was bad, or signed with wrong key.";
@@ -5095,7 +5111,7 @@ routerinfo_incompatible_with_extrainfo(routerinfo_t *ri, extrainfo_t *ei,
/** Assert that the internal representation of <b>rl</b> is
* self-consistent. */
void
-routerlist_assert_ok(routerlist_t *rl)
+routerlist_assert_ok(const routerlist_t *rl)
{
routerinfo_t *r2;
signed_descriptor_t *sd2;
@@ -5185,7 +5201,7 @@ routerlist_assert_ok(routerlist_t *rl)
* If <b>router</b> is NULL, it just frees its internal memory and returns.
*/
const char *
-esc_router_info(routerinfo_t *router)
+esc_router_info(const routerinfo_t *router)
{
static char *info=NULL;
char *esc_contact, *esc_platform;
@@ -5287,38 +5303,6 @@ routerset_get_countryname(const char *c)
return country;
}
-#if 0
-/** Add the GeoIP database's integer index (+1) of a valid two-character
- * country code to the routerset's <b>countries</b> bitarray. Return the
- * integer index if the country code is valid, -1 otherwise.*/
-static int
-routerset_add_country(const char *c)
-{
- char country[3];
- country_t cc;
-
- /* XXXX: Country codes must be of the form \{[a-z\?]{2}\} but this accepts
- \{[.]{2}\}. Do we need to be strict? -RH */
- /* Nope; if the country code is bad, we'll get 0 when we look it up. */
-
- if (!geoip_is_loaded()) {
- log(LOG_WARN, LD_CONFIG, "GeoIP database not loaded: Cannot add country"
- "entry %s, ignoring.", c);
- return -1;
- }
-
- memcpy(country, c+1, 2);
- country[2] = '\0';
- tor_strlower(country);
-
- if ((cc=geoip_get_country(country))==-1) {
- log(LOG_WARN, LD_CONFIG, "Country code '%s' is not valid, ignoring.",
- country);
- }
- return cc;
-}
-#endif
-
/** Update the routerset's <b>countries</b> bitarray_t. Called whenever
* the GeoIP database is reloaded.
*/
@@ -5420,7 +5404,7 @@ refresh_all_country_info(void)
if (options->_ExcludeExitNodesUnion)
routerset_refresh_countries(options->_ExcludeExitNodesUnion);
- routerlist_refresh_countries();
+ nodelist_refresh_countries();
}
/** Add all members of the set <b>source</b> to <b>target</b>. */
@@ -5470,11 +5454,10 @@ routerset_is_empty(const routerset_t *set)
static int
routerset_contains(const routerset_t *set, const tor_addr_t *addr,
uint16_t orport,
- const char *nickname, const char *id_digest, int is_named,
+ const char *nickname, const char *id_digest,
country_t country)
{
if (!set || !set->list) return 0;
- (void) is_named; /* not supported */
if (nickname && strmap_get_lc(set->names, nickname))
return 4;
if (id_digest && digestmap_get(set->digests, id_digest))
@@ -5502,13 +5485,14 @@ routerset_contains_extendinfo(const routerset_t *set, const extend_info_t *ei)
ei->port,
ei->nickname,
ei->identity_digest,
- -1, /*is_named*/
-1 /*country*/);
}
-/** Return true iff <b>ri</b> is in <b>set</b>. */
+/** Return true iff <b>ri</b> is in <b>set</b>. If country is <b>-1</b>, we
+ * look up the country. */
int
-routerset_contains_router(const routerset_t *set, routerinfo_t *ri)
+routerset_contains_router(const routerset_t *set, const routerinfo_t *ri,
+ country_t country)
{
tor_addr_t addr;
tor_addr_from_ipv4h(&addr, ri->addr);
@@ -5517,13 +5501,15 @@ routerset_contains_router(const routerset_t *set, routerinfo_t *ri)
ri->or_port,
ri->nickname,
ri->cache_info.identity_digest,
- ri->is_named,
- ri->country);
+ country);
}
-/** Return true iff <b>rs</b> is in <b>set</b>. */
+/** Return true iff <b>rs</b> is in <b>set</b>. If country is <b>-1</b>, we
+ * look up the country. */
int
-routerset_contains_routerstatus(const routerset_t *set, routerstatus_t *rs)
+routerset_contains_routerstatus(const routerset_t *set,
+ const routerstatus_t *rs,
+ country_t country)
{
tor_addr_t addr;
tor_addr_from_ipv4h(&addr, rs->addr);
@@ -5532,46 +5518,55 @@ routerset_contains_routerstatus(const routerset_t *set, routerstatus_t *rs)
rs->or_port,
rs->nickname,
rs->identity_digest,
- rs->is_named,
- -1);
+ country);
}
-/** Add every known routerinfo_t that is a member of <b>routerset</b> to
+/** Return true iff <b>node</b> is in <b>set</b>. */
+int
+routerset_contains_node(const routerset_t *set, const node_t *node)
+{
+ if (node->rs)
+ return routerset_contains_routerstatus(set, node->rs, node->country);
+ else if (node->ri)
+ return routerset_contains_router(set, node->ri, node->country);
+ else
+ return 0;
+}
+
+/** Add every known node_t that is a member of <b>routerset</b> to
* <b>out</b>. If <b>running_only</b>, only add the running ones. */
void
-routerset_get_all_routers(smartlist_t *out, const routerset_t *routerset,
- int running_only)
-{
+routerset_get_all_nodes(smartlist_t *out, const routerset_t *routerset,
+ int running_only)
+{ /* XXXX MOVE */
tor_assert(out);
if (!routerset || !routerset->list)
return;
- if (!warned_nicknames)
- warned_nicknames = smartlist_create();
- if (routerset_is_list(routerset)) {
+ if (routerset_is_list(routerset)) {
/* No routers are specified by type; all are given by name or digest.
* we can do a lookup in O(len(list)). */
SMARTLIST_FOREACH(routerset->list, const char *, name, {
- routerinfo_t *router = router_get_by_nickname(name, 1);
- if (router) {
- if (!running_only || router->is_running)
- smartlist_add(out, router);
+ const node_t *node = node_get_by_nickname(name, 1);
+ if (node) {
+ if (!running_only || node->is_running)
+ smartlist_add(out, (void*)node);
}
});
} else {
/* We need to iterate over the routerlist to get all the ones of the
* right kind. */
- routerlist_t *rl = router_get_routerlist();
- SMARTLIST_FOREACH(rl->routers, routerinfo_t *, router, {
- if (running_only && !router->is_running)
+ smartlist_t *nodes = nodelist_get_list();
+ SMARTLIST_FOREACH(nodes, const node_t *, node, {
+ if (running_only && !node->is_running)
continue;
- if (routerset_contains_router(routerset, router))
- smartlist_add(out, router);
+ if (routerset_contains_node(routerset, node))
+ smartlist_add(out, (void*)node);
});
}
}
-/** Add to <b>target</b> every routerinfo_t from <b>source</b> except:
+/** Add to <b>target</b> every node_t from <b>source</b> except:
*
* 1) Don't add it if <b>include</b> is non-empty and the relay isn't in
* <b>include</b>; and
@@ -5580,39 +5575,39 @@ routerset_get_all_routers(smartlist_t *out, const routerset_t *routerset,
* 3) If <b>running_only</b>, don't add non-running routers.
*/
void
-routersets_get_disjunction(smartlist_t *target,
+routersets_get_node_disjunction(smartlist_t *target,
const smartlist_t *source,
const routerset_t *include,
const routerset_t *exclude, int running_only)
{
- SMARTLIST_FOREACH(source, routerinfo_t *, router, {
+ SMARTLIST_FOREACH(source, const node_t *, node, {
int include_result;
- if (running_only && !router->is_running)
+ if (running_only && !node->is_running)
continue;
if (!routerset_is_empty(include))
- include_result = routerset_contains_router(include, router);
+ include_result = routerset_contains_node(include, node);
else
include_result = 1;
if (include_result) {
- int exclude_result = routerset_contains_router(exclude, router);
+ int exclude_result = routerset_contains_node(exclude, node);
if (include_result >= exclude_result)
- smartlist_add(target, router);
+ smartlist_add(target, (void*)node);
}
});
}
-/** Remove every routerinfo_t from <b>lst</b> that is in <b>routerset</b>. */
+/** Remove every node_t from <b>lst</b> that is in <b>routerset</b>. */
void
-routerset_subtract_routers(smartlist_t *lst, const routerset_t *routerset)
-{
+routerset_subtract_nodes(smartlist_t *lst, const routerset_t *routerset)
+{ /*XXXX MOVE ? */
tor_assert(lst);
if (!routerset)
return;
- SMARTLIST_FOREACH(lst, routerinfo_t *, r, {
- if (routerset_contains_router(routerset, r)) {
+ SMARTLIST_FOREACH(lst, const node_t *, node, {
+ if (routerset_contains_node(routerset, node)) {
//log_debug(LD_DIR, "Subtracting %s",r->nickname);
- SMARTLIST_DEL_CURRENT(lst, r);
+ SMARTLIST_DEL_CURRENT(lst, node);
}
});
}
@@ -5673,18 +5668,23 @@ routerset_free(routerset_t *routerset)
/** 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
-routerinfo_set_country(routerinfo_t *ri)
+node_set_country(node_t *node)
{
- ri->country = geoip_get_country_by_ip(ri->addr);
+ if (node->rs)
+ node->country = geoip_get_country_by_ip(node->rs->addr);
+ else if (node->ri)
+ node->country = geoip_get_country_by_ip(node->ri->addr);
+ else
+ node->country = -1;
}
/** Set the country code of all routers in the routerlist. */
void
-routerlist_refresh_countries(void)
+nodelist_refresh_countries(void) /* MOVE */
{
- routerlist_t *rl = router_get_routerlist();
- SMARTLIST_FOREACH(rl->routers, routerinfo_t *, ri,
- routerinfo_set_country(ri));
+ smartlist_t *nodes = nodelist_get_list();
+ SMARTLIST_FOREACH(nodes, node_t *, node,
+ node_set_country(node));
}
/** Determine the routers that are responsible for <b>id</b> (binary) and
@@ -5733,9 +5733,9 @@ hid_serv_get_responsible_directories(smartlist_t *responsible_dirs,
int
hid_serv_acting_as_directory(void)
{
- routerinfo_t *me = router_get_my_routerinfo();
+ const routerinfo_t *me = router_get_my_routerinfo();
networkstatus_t *c;
- routerstatus_t *rs;
+ const routerstatus_t *rs;
if (!me)
return 0;
if (!get_options()->HidServDirectoryV2) {
@@ -5767,7 +5767,7 @@ hid_serv_acting_as_directory(void)
int
hid_serv_responsible_for_desc_id(const char *query)
{
- routerinfo_t *me;
+ const routerinfo_t *me;
routerstatus_t *last_rs;
const char *my_id, *last_id;
int result;
diff --git a/src/or/routerlist.h b/src/or/routerlist.h
index 804be2aba..b69ef70f6 100644
--- a/src/or/routerlist.h
+++ b/src/or/routerlist.h
@@ -27,37 +27,34 @@ int router_reload_router_list(void);
int authority_cert_dl_looks_uncertain(const char *id_digest);
smartlist_t *router_get_trusted_dir_servers(void);
-routerstatus_t *router_pick_directory_server(authority_type_t type, int flags);
+const routerstatus_t *router_pick_directory_server(authority_type_t type,
+ int flags);
trusted_dir_server_t *router_get_trusteddirserver_by_digest(const char *d);
trusted_dir_server_t *trusteddirserver_get_by_v3_auth_digest(const char *d);
-routerstatus_t *router_pick_trusteddirserver(authority_type_t type, int flags);
+const routerstatus_t *router_pick_trusteddirserver(authority_type_t type,
+ int flags);
int router_get_my_share_of_directory_requests(double *v2_share_out,
double *v3_share_out);
void router_reset_status_download_failures(void);
-void routerlist_add_family(smartlist_t *sl, routerinfo_t *router);
-int routers_in_same_family(routerinfo_t *r1, routerinfo_t *r2);
+void routerlist_add_family(smartlist_t *sl, const routerinfo_t *router);
int routers_have_same_or_addr(const routerinfo_t *r1, const routerinfo_t *r2);
-void add_nickname_list_to_smartlist(smartlist_t *sl, const char *list,
- int must_be_running);
-int router_nickname_is_in_list(routerinfo_t *router, const char *list);
-routerinfo_t *routerlist_find_my_routerinfo(void);
-routerinfo_t *router_find_exact_exit_enclave(const char *address,
+int router_nickname_is_in_list(const routerinfo_t *router, const char *list);
+const routerinfo_t *routerlist_find_my_routerinfo(void);
+const node_t *router_find_exact_exit_enclave(const char *address,
uint16_t port);
-int router_is_unreliable(routerinfo_t *router, int need_uptime,
+int node_is_unreliable(const node_t *router, int need_uptime,
int need_capacity, int need_guard);
-uint32_t router_get_advertised_bandwidth(routerinfo_t *router);
-uint32_t router_get_advertised_bandwidth_capped(routerinfo_t *router);
+uint32_t router_get_advertised_bandwidth(const routerinfo_t *router);
+uint32_t router_get_advertised_bandwidth_capped(const routerinfo_t *router);
-routerinfo_t *routerlist_sl_choose_by_bandwidth(smartlist_t *sl,
- bandwidth_weight_rule_t rule);
-routerstatus_t *routerstatus_sl_choose_by_bandwidth(smartlist_t *sl,
- bandwidth_weight_rule_t rule);
+const node_t *node_sl_choose_by_bandwidth(smartlist_t *sl,
+ bandwidth_weight_rule_t rule);
-routerinfo_t *router_choose_random_node(smartlist_t *excludedsmartlist,
+const node_t *router_choose_random_node(smartlist_t *excludedsmartlist,
struct routerset_t *excludedset,
router_crn_flags_t flags);
-routerinfo_t *router_get_by_nickname(const char *nickname,
+const routerinfo_t *router_get_by_nickname(const char *nickname,
int warn_if_unnamed);
int router_digest_version_as_new_as(const char *digest, const char *cutoff);
int router_digest_is_trusted_dir_type(const char *digest,
@@ -67,13 +64,14 @@ int router_digest_is_trusted_dir_type(const char *digest,
int router_addr_is_trusted_dir(uint32_t addr);
int hexdigest_to_digest(const char *hexdigest, char *digest);
-routerinfo_t *router_get_by_hexdigest(const char *hexdigest);
-routerinfo_t *router_get_by_digest(const char *digest);
+const routerinfo_t *router_get_by_hexdigest(const char *hexdigest);
+const routerinfo_t *router_get_by_id_digest(const char *digest);
+routerinfo_t *router_get_mutable_by_digest(const char *digest);
signed_descriptor_t *router_get_by_descriptor_digest(const char *digest);
signed_descriptor_t *router_get_by_extrainfo_digest(const char *digest);
signed_descriptor_t *extrainfo_get_by_descriptor_digest(const char *digest);
-const char *signed_descriptor_get_body(signed_descriptor_t *desc);
-const char *signed_descriptor_get_annotations(signed_descriptor_t *desc);
+const char *signed_descriptor_get_body(const signed_descriptor_t *desc);
+const char *signed_descriptor_get_annotations(const signed_descriptor_t *desc);
routerlist_t *router_get_routerlist(void);
void routerinfo_free(routerinfo_t *router);
void extrainfo_free(extrainfo_t *extrainfo);
@@ -132,9 +130,10 @@ void router_load_extrainfo_from_string(const char *s, const char *eos,
int descriptor_digests);
void routerlist_retry_directory_downloads(time_t now);
-int router_exit_policy_all_routers_reject(uint32_t addr, uint16_t port,
- int need_uptime);
-int router_exit_policy_rejects_all(routerinfo_t *router);
+int router_exit_policy_all_nodes_reject(uint32_t addr, uint16_t port,
+ int need_uptime);
+
+int router_exit_policy_rejects_all(const routerinfo_t *router);
trusted_dir_server_t *add_trusted_dir_server(const char *nickname,
const char *address,
uint16_t dir_port, uint16_t or_port,
@@ -152,39 +151,43 @@ void router_dir_info_changed(void);
const char *get_dir_info_status_string(void);
int count_loading_descriptors_progress(void);
void router_reset_descriptor_download_failures(void);
-int router_differences_are_cosmetic(routerinfo_t *r1, routerinfo_t *r2);
-int routerinfo_incompatible_with_extrainfo(routerinfo_t *ri, extrainfo_t *ei,
+int router_differences_are_cosmetic(const routerinfo_t *r1,
+ const routerinfo_t *r2);
+int routerinfo_incompatible_with_extrainfo(const routerinfo_t *ri,
+ extrainfo_t *ei,
signed_descriptor_t *sd,
const char **msg);
-void routerlist_assert_ok(routerlist_t *rl);
-const char *esc_router_info(routerinfo_t *router);
+void routerlist_assert_ok(const routerlist_t *rl);
+const char *esc_router_info(const routerinfo_t *router);
void routers_sort_by_identity(smartlist_t *routers);
routerset_t *routerset_new(void);
+void routerset_refresh_countries(routerset_t *rs);
int routerset_parse(routerset_t *target, const char *s,
const char *description);
void routerset_union(routerset_t *target, const routerset_t *source);
int routerset_is_list(const routerset_t *set);
int routerset_needs_geoip(const routerset_t *set);
-int routerset_contains_router(const routerset_t *set, routerinfo_t *ri);
+int routerset_contains_router(const routerset_t *set, const routerinfo_t *ri,
+ country_t country);
int routerset_contains_routerstatus(const routerset_t *set,
- routerstatus_t *rs);
+ const routerstatus_t *rs,
+ country_t country);
int routerset_contains_extendinfo(const routerset_t *set,
const extend_info_t *ei);
-void routerset_get_all_routers(smartlist_t *out, const routerset_t *routerset,
- int running_only);
-void routersets_get_disjunction(smartlist_t *target, const smartlist_t *source,
+int routerset_contains_node(const routerset_t *set, const node_t *node);
+void routerset_get_all_nodes(smartlist_t *out, const routerset_t *routerset,
+ int running_only);
+void routersets_get_node_disjunction(smartlist_t *target,
+ const smartlist_t *source,
const routerset_t *include,
const routerset_t *exclude, int running_only);
-void routerset_subtract_routers(smartlist_t *out,
- const routerset_t *routerset);
+void routerset_subtract_nodes(smartlist_t *out,
+ const routerset_t *routerset);
char *routerset_to_string(const routerset_t *routerset);
-void routerset_refresh_countries(routerset_t *target);
int routerset_equal(const routerset_t *old, const routerset_t *new);
void routerset_free(routerset_t *routerset);
-void routerinfo_set_country(routerinfo_t *ri);
-void routerlist_refresh_countries(void);
void refresh_all_country_info(void);
int hid_serv_get_responsible_directories(smartlist_t *responsible_dirs,
@@ -195,8 +198,13 @@ int hid_serv_responsible_for_desc_id(const char *id);
void list_pending_microdesc_downloads(digestmap_t *result);
void launch_descriptor_downloads(int purpose,
smartlist_t *downloadable,
- routerstatus_t *source,
+ const routerstatus_t *source,
time_t now);
+int hex_digest_nickname_decode(const char *hexdigest,
+ char *digest_out,
+ char *nickname_qualifier_out,
+ char *nickname_out);
+
#endif
diff --git a/src/or/routerparse.c b/src/or/routerparse.c
index f7e645e8f..2b82e9828 100644
--- a/src/or/routerparse.c
+++ b/src/or/routerparse.c
@@ -1344,7 +1344,6 @@ router_parse_entry_from_string(const char *s, const char *end,
tor_assert(tok->n_args >= 5);
router = tor_malloc_zero(sizeof(routerinfo_t));
- router->country = -1;
router->cache_info.routerlist_index = -1;
router->cache_info.annotations_len = s-start_of_annotations + prepend_len;
router->cache_info.signed_descriptor_len = end-s;
@@ -1543,8 +1542,6 @@ router_parse_entry_from_string(const char *s, const char *end,
"router descriptor") < 0)
goto err;
- routerinfo_set_country(router);
-
if (!router->or_port) {
log_warn(LD_DIR,"or_port unreadable or 0. Failing.");
goto err;
@@ -2030,7 +2027,7 @@ routerstatus_parse_entry_from_string(memarea_t *area,
else if (!strcmp(tok->args[i], "Fast"))
rs->is_fast = 1;
else if (!strcmp(tok->args[i], "Running"))
- rs->is_running = 1;
+ rs->is_flagged_running = 1;
else if (!strcmp(tok->args[i], "Named"))
rs->is_named = 1;
else if (!strcmp(tok->args[i], "Valid"))
@@ -4305,7 +4302,7 @@ microdescs_parse_from_string(const char *s, const char *eos,
}
if ((tok = find_opt_by_keyword(tokens, K_P))) {
- md->exitsummary = tor_strdup(tok->args[0]);
+ md->exit_policy = parse_short_policy(tok->args[0]);
}
crypto_digest256(md->digest, md->body, md->bodylen, DIGEST_SHA256);
diff --git a/src/test/Makefile.am b/src/test/Makefile.am
index cfe330c74..16ea66583 100644
--- a/src/test/Makefile.am
+++ b/src/test/Makefile.am
@@ -1,6 +1,6 @@
TESTS = test
-noinst_PROGRAMS = test
+noinst_PROGRAMS = test test-child
AM_CPPFLAGS = -DSHARE_DATADIR="\"$(datadir)\"" \
-DLOCALSTATEDIR="\"$(localstatedir)\"" \
@@ -19,6 +19,7 @@ test_SOURCES = \
test_dir.c \
test_containers.c \
test_util.c \
+ test_microdesc.c \
tinytest.c
if USE_BUFFEREVENTS
diff --git a/src/test/test-child.c b/src/test/test-child.c
new file mode 100644
index 000000000..ca52750c2
--- /dev/null
+++ b/src/test/test-child.c
@@ -0,0 +1,18 @@
+#include <stdio.h>
+
+/** Trivial test program which prints out its command line arguments so we can
+ * check if tor_spawn_background() works */
+int
+main(int argc, char **argv)
+{
+ int i;
+
+ fprintf(stdout, "OUT\n");
+ fprintf(stderr, "ERR\n");
+ for (i = 1; i < argc; i++)
+ fprintf(stdout, "%s\n", argv[i]);
+ fprintf(stdout, "DONE\n");
+
+ return 0;
+}
+
diff --git a/src/test/test.c b/src/test/test.c
index 8d8c46fca..3f014186a 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -113,30 +113,46 @@ get_fname(const char *name)
return buf;
}
-/** Remove all files stored under the temporary directory, and the directory
- * itself. Called by atexit(). */
+/* Remove a directory and all of its subdirectories */
static void
-remove_directory(void)
+rm_rf(const char *dir)
{
+ struct stat st;
smartlist_t *elements;
- if (getpid() != temp_dir_setup_in_pid) {
- /* Only clean out the tempdir when the main process is exiting. */
- return;
- }
- elements = tor_listdir(temp_dir);
+
+ elements = tor_listdir(dir);
if (elements) {
SMARTLIST_FOREACH(elements, const char *, cp,
{
- size_t len = strlen(cp)+strlen(temp_dir)+16;
- char *tmp = tor_malloc(len);
- tor_snprintf(tmp, len, "%s"PATH_SEPARATOR"%s", temp_dir, cp);
- unlink(tmp);
+ char *tmp = NULL;
+ tor_asprintf(&tmp, "%s"PATH_SEPARATOR"%s", dir, cp);
+ if (0 == stat(tmp,&st) && (st.st_mode & S_IFDIR)) {
+ rm_rf(tmp);
+ } else {
+ if (unlink(tmp)) {
+ fprintf(stderr, "Error removing %s: %s\n", tmp, strerror(errno));
+ }
+ }
tor_free(tmp);
});
SMARTLIST_FOREACH(elements, char *, cp, tor_free(cp));
smartlist_free(elements);
}
- rmdir(temp_dir);
+ if (rmdir(dir))
+ fprintf(stderr, "Error removing directory %s: %s\n", dir, strerror(errno));
+}
+
+/** Remove all files stored under the temporary directory, and the directory
+ * itself. Called by atexit(). */
+static void
+remove_directory(void)
+{
+ if (getpid() != temp_dir_setup_in_pid) {
+ /* Only clean out the tempdir when the main process is exiting. */
+ return;
+ }
+
+ rm_rf(temp_dir);
}
/** Define this if unit tests spend too much time generating public keys*/
@@ -560,6 +576,7 @@ test_policy_summary_helper(const char *policy_str,
smartlist_t *policy = smartlist_create();
char *summary = NULL;
int r;
+ short_policy_t *short_policy = NULL;
line.key = (char*)"foo";
line.value = (char *)policy_str;
@@ -572,10 +589,14 @@ test_policy_summary_helper(const char *policy_str,
test_assert(summary != NULL);
test_streq(summary, expected_summary);
+ short_policy = parse_short_policy(summary);
+ tt_assert(short_policy);
+
done:
tor_free(summary);
if (policy)
addr_policy_list_free(policy);
+ short_policy_free(short_policy);
}
/** Run unit tests for generating summary lines of exit policies */
@@ -1180,6 +1201,7 @@ extern struct testcase_t crypto_tests[];
extern struct testcase_t container_tests[];
extern struct testcase_t util_tests[];
extern struct testcase_t dir_tests[];
+extern struct testcase_t microdesc_tests[];
static struct testgroup_t testgroups[] = {
{ "", test_array },
@@ -1188,6 +1210,7 @@ static struct testgroup_t testgroups[] = {
{ "container/", container_tests },
{ "util/", util_tests },
{ "dir/", dir_tests },
+ { "dir/md/", microdesc_tests },
END_OF_GROUPS
};
diff --git a/src/test/test_dir.c b/src/test/test_dir.c
index 80d2379de..3c660a757 100644
--- a/src/test/test_dir.c
+++ b/src/test/test_dir.c
@@ -801,7 +801,7 @@ test_dir_v3_networkstatus(void)
rs->or_port = 443;
rs->dir_port = 8000;
/* all flags but running cleared */
- rs->is_running = 1;
+ rs->is_flagged_running = 1;
smartlist_add(vote->routerstatus_list, vrs);
test_assert(router_add_to_routerlist(generate_ri_from_rs(vrs), &msg,0,0)>=0);
@@ -816,7 +816,7 @@ test_dir_v3_networkstatus(void)
rs->addr = 0x99009901;
rs->or_port = 443;
rs->dir_port = 0;
- rs->is_exit = rs->is_stable = rs->is_fast = rs->is_running =
+ rs->is_exit = rs->is_stable = rs->is_fast = rs->is_flagged_running =
rs->is_valid = rs->is_v2_dir = rs->is_possible_guard = 1;
smartlist_add(vote->routerstatus_list, vrs);
test_assert(router_add_to_routerlist(generate_ri_from_rs(vrs), &msg,0,0)>=0);
@@ -833,7 +833,8 @@ test_dir_v3_networkstatus(void)
rs->or_port = 400;
rs->dir_port = 9999;
rs->is_authority = rs->is_exit = rs->is_stable = rs->is_fast =
- rs->is_running = rs->is_valid = rs->is_v2_dir = rs->is_possible_guard = 1;
+ rs->is_flagged_running = rs->is_valid = rs->is_v2_dir =
+ rs->is_possible_guard = 1;
smartlist_add(vote->routerstatus_list, vrs);
test_assert(router_add_to_routerlist(generate_ri_from_rs(vrs), &msg,0,0)>=0);
@@ -1073,7 +1074,8 @@ test_dir_v3_networkstatus(void)
test_assert(!rs->is_fast);
test_assert(!rs->is_possible_guard);
test_assert(!rs->is_stable);
- test_assert(rs->is_running); /* If it wasn't running it wouldn't be here */
+ /* (If it wasn't running it wouldn't be here) */
+ test_assert(rs->is_flagged_running);
test_assert(!rs->is_v2_dir);
test_assert(!rs->is_valid);
test_assert(!rs->is_named);
@@ -1095,7 +1097,7 @@ test_dir_v3_networkstatus(void)
test_assert(rs->is_fast);
test_assert(rs->is_possible_guard);
test_assert(rs->is_stable);
- test_assert(rs->is_running);
+ test_assert(rs->is_flagged_running);
test_assert(rs->is_v2_dir);
test_assert(rs->is_valid);
test_assert(!rs->is_named);
diff --git a/src/test/test_microdesc.c b/src/test/test_microdesc.c
new file mode 100644
index 000000000..57e894e2e
--- /dev/null
+++ b/src/test/test_microdesc.c
@@ -0,0 +1,233 @@
+/* Copyright (c) 2010, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include "orconfig.h"
+#include "or.h"
+
+#include "config.h"
+#include "microdesc.h"
+
+#include "test.h"
+
+#ifdef MS_WINDOWS
+/* For mkdir() */
+#include <direct.h>
+#else
+#include <dirent.h>
+#endif
+
+static const char test_md1[] =
+ "onion-key\n"
+ "-----BEGIN RSA PUBLIC KEY-----\n"
+ "MIGJAoGBAMjlHH/daN43cSVRaHBwgUfnszzAhg98EvivJ9Qxfv51mvQUxPjQ07es\n"
+ "gV/3n8fyh3Kqr/ehi9jxkdgSRfSnmF7giaHL1SLZ29kA7KtST+pBvmTpDtHa3ykX\n"
+ "Xorc7hJvIyTZoc1HU+5XSynj3gsBE5IGK1ZRzrNS688LnuZMVp1tAgMBAAE=\n"
+ "-----END RSA PUBLIC KEY-----\n";
+
+static const char test_md2[] =
+ "onion-key\n"
+ "-----BEGIN RSA PUBLIC KEY-----\n"
+ "MIGJAoGBAMIixIowh2DyPmDNMDwBX2DHcYcqdcH1zdIQJZkyV6c6rQHnvbcaDoSg\n"
+ "jgFSLJKpnGmh71FVRqep+yVB0zI1JY43kuEnXry2HbZCD9UDo3d3n7t015X5S7ON\n"
+ "bSSYtQGPwOr6Epf96IF6DoQxy4iDnPUAlejuhAG51s1y6/rZQ3zxAgMBAAE=\n"
+ "-----END RSA PUBLIC KEY-----\n";
+
+static const char test_md3[] =
+ "@last-listed 2009-06-22\n"
+ "onion-key\n"
+ "-----BEGIN RSA PUBLIC KEY-----\n"
+ "MIGJAoGBAMH3340d4ENNGrqx7UxT+lB7x6DNUKOdPEOn4teceE11xlMyZ9TPv41c\n"
+ "qj2fRZzfxlc88G/tmiaHshmdtEpklZ740OFqaaJVj4LjPMKFNE+J7Xc1142BE9Ci\n"
+ "KgsbjGYe2RY261aADRWLetJ8T9QDMm+JngL4288hc8pq1uB/3TAbAgMBAAE=\n"
+ "-----END RSA PUBLIC KEY-----\n"
+ "p accept 1-700,800-1000\n"
+ "family nodeX nodeY nodeZ\n";
+
+static void
+test_md_cache(void *data)
+{
+ or_options_t *options = NULL;
+ microdesc_cache_t *mc = NULL ;
+ smartlist_t *added = NULL, *wanted = NULL;
+ microdesc_t *md1, *md2, *md3;
+ char d1[DIGEST256_LEN], d2[DIGEST256_LEN], d3[DIGEST256_LEN];
+ const char *test_md3_noannotation = strchr(test_md3, '\n')+1;
+ time_t time1, time2, time3;
+ char *fn = NULL, *s = NULL;
+ (void)data;
+
+ options = get_options();
+ tt_assert(options);
+
+ time1 = time(NULL);
+ time2 = time(NULL) - 2*24*60*60;
+ time3 = time(NULL) - 15*24*60*60;
+
+ /* Possibly, turn this into a test setup/cleanup pair */
+ tor_free(options->DataDirectory);
+ options->DataDirectory = tor_strdup(get_fname("md_datadir_test"));
+#ifdef MS_WINDOWS
+ tt_int_op(0, ==, mkdir(options->DataDirectory));
+#else
+ tt_int_op(0, ==, mkdir(options->DataDirectory, 0700));
+#endif
+
+ tt_assert(!strcmpstart(test_md3_noannotation, "onion-key"));
+
+ crypto_digest256(d1, test_md1, strlen(test_md1), DIGEST_SHA256);
+ crypto_digest256(d2, test_md2, strlen(test_md1), DIGEST_SHA256);
+ crypto_digest256(d3, test_md3_noannotation, strlen(test_md3_noannotation),
+ DIGEST_SHA256);
+
+ mc = get_microdesc_cache();
+
+ added = microdescs_add_to_cache(mc, test_md1, NULL, SAVED_NOWHERE, 0,
+ time1, NULL);
+ tt_int_op(1, ==, smartlist_len(added));
+ md1 = smartlist_get(added, 0);
+ smartlist_free(added);
+ added = NULL;
+
+ wanted = smartlist_create();
+ added = microdescs_add_to_cache(mc, test_md2, NULL, SAVED_NOWHERE, 0,
+ time2, wanted);
+ /* Should fail, since we didn't list test_md2's digest in wanted */
+ tt_int_op(0, ==, smartlist_len(added));
+ smartlist_free(added);
+ added = NULL;
+
+ smartlist_add(wanted, tor_memdup(d2, DIGEST256_LEN));
+ smartlist_add(wanted, tor_memdup(d3, DIGEST256_LEN));
+ added = microdescs_add_to_cache(mc, test_md2, NULL, SAVED_NOWHERE, 0,
+ time2, wanted);
+ /* Now it can work. md2 should have been added */
+ tt_int_op(1, ==, smartlist_len(added));
+ md2 = smartlist_get(added, 0);
+ /* And it should have gotten removed from 'wanted' */
+ tt_int_op(smartlist_len(wanted), ==, 1);
+ test_mem_op(smartlist_get(wanted, 0), ==, d3, DIGEST256_LEN);
+ smartlist_free(added);
+ added = NULL;
+
+ added = microdescs_add_to_cache(mc, test_md3, NULL,
+ SAVED_NOWHERE, 0, -1, NULL);
+ /* Must fail, since SAVED_NOWHERE precludes annotations */
+ tt_int_op(0, ==, smartlist_len(added));
+ smartlist_free(added);
+ added = NULL;
+
+ added = microdescs_add_to_cache(mc, test_md3_noannotation, NULL,
+ SAVED_NOWHERE, 0, time3, NULL);
+ /* Now it can work */
+ tt_int_op(1, ==, smartlist_len(added));
+ md3 = smartlist_get(added, 0);
+ smartlist_free(added);
+ added = NULL;
+
+ /* Okay. We added 1...3. Let's poke them to see how they look, and make
+ * sure they're really in the journal. */
+ tt_ptr_op(md1, ==, microdesc_cache_lookup_by_digest256(mc, d1));
+ tt_ptr_op(md2, ==, microdesc_cache_lookup_by_digest256(mc, d2));
+ tt_ptr_op(md3, ==, microdesc_cache_lookup_by_digest256(mc, d3));
+
+ tt_int_op(md1->last_listed, ==, time1);
+ tt_int_op(md2->last_listed, ==, time2);
+ tt_int_op(md3->last_listed, ==, time3);
+
+ tt_int_op(md1->saved_location, ==, SAVED_IN_JOURNAL);
+ tt_int_op(md2->saved_location, ==, SAVED_IN_JOURNAL);
+ tt_int_op(md3->saved_location, ==, SAVED_IN_JOURNAL);
+
+ tt_int_op(md1->bodylen, ==, strlen(test_md1));
+ tt_int_op(md2->bodylen, ==, strlen(test_md2));
+ tt_int_op(md3->bodylen, ==, strlen(test_md3_noannotation));
+ test_mem_op(md1->body, ==, test_md1, strlen(test_md1));
+ test_mem_op(md2->body, ==, test_md2, strlen(test_md2));
+ test_mem_op(md3->body, ==, test_md3_noannotation,
+ strlen(test_md3_noannotation));
+
+ tor_asprintf(&fn, "%s"PATH_SEPARATOR"cached-microdescs.new",
+ options->DataDirectory);
+ s = read_file_to_str(fn, RFTS_BIN, NULL);
+ tt_assert(s);
+ test_mem_op(md1->body, ==, s + md1->off, md1->bodylen);
+ test_mem_op(md2->body, ==, s + md2->off, md2->bodylen);
+ test_mem_op(md3->body, ==, s + md3->off, md3->bodylen);
+
+ tt_ptr_op(md1->family, ==, NULL);
+ tt_ptr_op(md3->family, !=, NULL);
+ tt_int_op(smartlist_len(md3->family), ==, 3);
+ tt_str_op(smartlist_get(md3->family, 0), ==, "nodeX");
+
+ /* Now rebuild the cache! */
+ tt_int_op(microdesc_cache_rebuild(mc), ==, 0);
+
+ tt_int_op(md1->saved_location, ==, SAVED_IN_CACHE);
+ tt_int_op(md2->saved_location, ==, SAVED_IN_CACHE);
+ tt_int_op(md3->saved_location, ==, SAVED_IN_CACHE);
+
+ /* The journal should be empty now */
+ tor_free(s);
+ s = read_file_to_str(fn, RFTS_BIN, NULL);
+ tt_str_op(s, ==, "");
+ tor_free(s);
+ tor_free(fn);
+
+ /* read the cache. */
+ tor_asprintf(&fn, "%s"PATH_SEPARATOR"cached-microdescs",
+ options->DataDirectory);
+ s = read_file_to_str(fn, RFTS_BIN, NULL);
+ test_mem_op(md1->body, ==, s + md1->off, strlen(test_md1));
+ test_mem_op(md2->body, ==, s + md2->off, strlen(test_md2));
+ test_mem_op(md3->body, ==, s + md3->off, strlen(test_md3_noannotation));
+
+ /* Okay, now we are going to forget about the cache entirely, and reload it
+ * from the disk. */
+ microdesc_free_all();
+ mc = get_microdesc_cache();
+ md1 = microdesc_cache_lookup_by_digest256(mc, d1);
+ md2 = microdesc_cache_lookup_by_digest256(mc, d2);
+ md3 = microdesc_cache_lookup_by_digest256(mc, d3);
+ test_assert(md1);
+ test_assert(md2);
+ test_assert(md3);
+ test_mem_op(md1->body, ==, s + md1->off, strlen(test_md1));
+ test_mem_op(md2->body, ==, s + md2->off, strlen(test_md2));
+ test_mem_op(md3->body, ==, s + md3->off, strlen(test_md3_noannotation));
+
+ tt_int_op(md1->last_listed, ==, time1);
+ tt_int_op(md2->last_listed, ==, time2);
+ tt_int_op(md3->last_listed, ==, time3);
+
+ /* Okay, now we are going to clear out everything older than a week old.
+ * In practice, that means md3 */
+ microdesc_cache_clean(mc, time(NULL)-7*24*60*60, 1/*force*/);
+ tt_ptr_op(md1, ==, microdesc_cache_lookup_by_digest256(mc, d1));
+ tt_ptr_op(md2, ==, microdesc_cache_lookup_by_digest256(mc, d2));
+ tt_ptr_op(NULL, ==, microdesc_cache_lookup_by_digest256(mc, d3));
+ md3 = NULL; /* it's history now! */
+
+ /* rebuild again, make sure it stays gone. */
+ microdesc_cache_rebuild(mc);
+ tt_ptr_op(md1, ==, microdesc_cache_lookup_by_digest256(mc, d1));
+ tt_ptr_op(md2, ==, microdesc_cache_lookup_by_digest256(mc, d2));
+ tt_ptr_op(NULL, ==, microdesc_cache_lookup_by_digest256(mc, d3));
+
+ done:
+ if (options)
+ tor_free(options->DataDirectory);
+ microdesc_free_all();
+
+ smartlist_free(added);
+ if (wanted)
+ SMARTLIST_FOREACH(wanted, char *, cp, tor_free(cp));
+ smartlist_free(wanted);
+ tor_free(s);
+ tor_free(fn);
+}
+
+struct testcase_t microdesc_tests[] = {
+ { "cache", test_md_cache, TT_FORK, NULL, NULL },
+ END_OF_TESTCASES
+};
+
diff --git a/src/test/test_util.c b/src/test/test_util.c
index 68a0ca298..c4428f5ea 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -833,6 +833,18 @@ test_util_sscanf(void)
test_eq(u2, 3u);
test_eq(u3, 99u);
+ /* %x should work. */
+ r = tor_sscanf("1234 02aBcdEf", "%x %x", &u1, &u2);
+ test_eq(r, 2);
+ test_eq(u1, 0x1234);
+ test_eq(u2, 0x2ABCDEF);
+ /* Width works on %x */
+ r = tor_sscanf("f00dcafe444", "%4x%4x%u", &u1, &u2, &u3);
+ test_eq(r, 3);
+ test_eq(u1, 0xf00d);
+ test_eq(u2, 0xcafe);
+ test_eq(u3, 444);
+
r = tor_sscanf("99% fresh", "%3u%% fresh", &u1); /* percents are scannable.*/
test_eq(r, 1);
test_eq(u1, 99);
@@ -1212,14 +1224,13 @@ test_util_load_win_lib(void *ptr)
static void
clear_hex_errno(char *hex_errno)
{
- memset(hex_errno, ' ', HEX_ERRNO_SIZE - 2);
- hex_errno[HEX_ERRNO_SIZE - 1] = '\n';
- hex_errno[HEX_ERRNO_SIZE] = '\0';
+ memset(hex_errno, '\0', HEX_ERRNO_SIZE + 1);
}
static void
test_util_exit_status(void *ptr)
{
+ /* Leave an extra byte for a \0 so we can do string comparison */
char hex_errno[HEX_ERRNO_SIZE + 1];
(void)ptr;
@@ -1248,6 +1259,164 @@ test_util_exit_status(void *ptr)
;
}
+#ifndef MS_WINDOWS
+/** Check that fgets waits until a full line, and not return a partial line, on
+ * a EAGAIN with a non-blocking pipe */
+static void
+test_util_fgets_eagain(void *ptr)
+{
+ int test_pipe[2] = {-1, -1};
+ int retval;
+ ssize_t retlen;
+ char *retptr;
+ FILE *test_stream = NULL;
+ char buf[10];
+
+ (void)ptr;
+
+ /* Set up a pipe to test on */
+ retval = pipe(test_pipe);
+ tt_int_op(retval, >=, 0);
+
+ /* Set up the read-end to be non-blocking */
+ retval = fcntl(test_pipe[0], F_SETFL, O_NONBLOCK);
+ tt_int_op(retval, >=, 0);
+
+ /* Open it as a stdio stream */
+ test_stream = fdopen(test_pipe[0], "r");
+ tt_ptr_op(test_stream, !=, NULL);
+
+ /* Send in a partial line */
+ retlen = write(test_pipe[1], "A", 1);
+ tt_int_op(retlen, ==, 1);
+ retptr = fgets(buf, sizeof(buf), test_stream);
+ tt_want(retptr == NULL);
+ tt_int_op(errno, ==, EAGAIN);
+
+ /* Send in the rest */
+ retlen = write(test_pipe[1], "B\n", 2);
+ tt_int_op(retlen, ==, 2);
+ retptr = fgets(buf, sizeof(buf), test_stream);
+ tt_ptr_op(retptr, ==, buf);
+ tt_str_op(buf, ==, "AB\n");
+
+ /* Send in a full line */
+ retlen = write(test_pipe[1], "CD\n", 3);
+ tt_int_op(retlen, ==, 3);
+ retptr = fgets(buf, sizeof(buf), test_stream);
+ tt_ptr_op(retptr, ==, buf);
+ tt_str_op(buf, ==, "CD\n");
+
+ /* Send in a partial line */
+ retlen = write(test_pipe[1], "E", 1);
+ tt_int_op(retlen, ==, 1);
+ retptr = fgets(buf, sizeof(buf), test_stream);
+ tt_ptr_op(retptr, ==, NULL);
+ tt_int_op(errno, ==, EAGAIN);
+
+ /* Send in the rest */
+ retlen = write(test_pipe[1], "F\n", 2);
+ tt_int_op(retlen, ==, 2);
+ retptr = fgets(buf, sizeof(buf), test_stream);
+ tt_ptr_op(retptr, ==, buf);
+ tt_str_op(buf, ==, "EF\n");
+
+ /* Send in a full line and close */
+ retlen = write(test_pipe[1], "GH", 2);
+ tt_int_op(retlen, ==, 2);
+ retval = close(test_pipe[1]);
+ test_pipe[1] = -1;
+ tt_int_op(retval, ==, 0);
+ retptr = fgets(buf, sizeof(buf), test_stream);
+ tt_ptr_op(retptr, ==, buf);
+ tt_str_op(buf, ==, "GH");
+
+ /* Check for EOF */
+ retptr = fgets(buf, sizeof(buf), test_stream);
+ tt_ptr_op(retptr, ==, NULL);
+ tt_int_op(feof(test_stream), >, 0);
+
+ done:
+ if (test_stream != NULL)
+ fclose(test_stream);
+ if (test_pipe[0] != -1)
+ close(test_pipe[0]);
+ if (test_pipe[1] != -1)
+ close(test_pipe[1]);
+}
+#endif
+
+#ifndef MS_WINDOWS
+/** Helper function for testing tor_spawn_background */
+static void
+run_util_spawn_background(const char *argv[], const char *expected_out,
+ const char *expected_err, int expected_exit)
+{
+ int stdout_pipe=-1, stderr_pipe=-1;
+ int retval, stat_loc;
+ pid_t pid;
+ ssize_t pos;
+ char stdout_buf[100], stderr_buf[100];
+
+ /* Start the program */
+ retval = tor_spawn_background(argv[0], &stdout_pipe, &stderr_pipe, argv);
+ tt_int_op(retval, >, 0);
+ tt_int_op(stdout_pipe, >, 0);
+ tt_int_op(stderr_pipe, >, 0);
+ pid = retval;
+
+ /* Check stdout */
+ pos = read(stdout_pipe, stdout_buf, sizeof(stdout_buf) - 1);
+ stdout_buf[pos] = '\0';
+ tt_int_op(pos, ==, strlen(expected_out));
+ tt_str_op(stdout_buf, ==, expected_out);
+
+ /* Check it terminated correctly */
+ retval = waitpid(pid, &stat_loc, 0);
+ tt_int_op(retval, ==, pid);
+ tt_assert(WIFEXITED(stat_loc));
+ tt_int_op(WEXITSTATUS(stat_loc), ==, expected_exit);
+ tt_assert(!WIFSIGNALED(stat_loc));
+ tt_assert(!WIFSTOPPED(stat_loc));
+
+ /* Check stderr */
+ pos = read(stderr_pipe, stderr_buf, sizeof(stderr_buf) - 1);
+ stderr_buf[pos] = '\0';
+ tt_int_op(pos, ==, strlen(expected_err));
+ tt_str_op(stderr_buf, ==, expected_err);
+
+ done:
+ ;
+}
+
+/** Check that we can launch a process and read the output */
+static void
+test_util_spawn_background_ok(void *ptr)
+{
+ const char *argv[] = {BUILDDIR "/src/test/test-child", "--test", NULL};
+ const char *expected_out = "OUT\n--test\nDONE\n";
+ const char *expected_err = "ERR\n";
+
+ (void)ptr;
+
+ run_util_spawn_background(argv, expected_out, expected_err, 0);
+}
+
+/** Check that failing to find the executable works as expected */
+static void
+test_util_spawn_background_fail(void *ptr)
+{
+ const char *argv[] = {BUILDDIR "/src/test/no-such-file", "--test", NULL};
+ const char *expected_out = "ERR: Failed to spawn background process "
+ "- code 9/2\n";
+ const char *expected_err = "";
+
+ (void)ptr;
+
+ run_util_spawn_background(argv, expected_out, expected_err, 255);
+}
+#endif
+
#define UTIL_LEGACY(name) \
{ #name, legacy_test_helper, 0, &legacy_setup, test_util_ ## name }
@@ -1275,6 +1444,11 @@ struct testcase_t util_tests[] = {
UTIL_TEST(load_win_lib, 0),
#endif
UTIL_TEST(exit_status, 0),
+#ifndef MS_WINDOWS
+ UTIL_TEST(fgets_eagain, TT_SKIP),
+ UTIL_TEST(spawn_background_ok, 0),
+ UTIL_TEST(spawn_background_fail, 0),
+#endif
END_OF_TESTCASES
};