Repository: gbrltv/cdesf2 (language: python)

Issue:
Add LICENSE



Discussion / hints:

Fix patch:
diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
new file mode 100644
index 0000000..795b1cd
--- /dev/null
+++ b/.devcontainer/Dockerfile
@@ -0,0 +1,25 @@
+# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.155.1/containers/python-3/.devcontainer/base.Dockerfile
+
+# [Choice] Python version: 3, 3.9, 3.8, 3.7, 3.6
+ARG VARIANT="3.8"
+FROM mcr.microsoft.com/vscode/devcontainers/python:0-${VARIANT}
+
+# [Option] Install Node.js
+ARG INSTALL_NODE="false"
+ARG NODE_VERSION="lts/*"
+RUN if [ "${INSTALL_NODE}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi
+
+# [Optional] Uncomment this section to install additional OS packages.
+RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
+    && apt-get -y install --no-install-recommends graphviz
+RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
+    && apt-get -y install --no-install-recommends libgraphviz-dev
+
+# [Optional] If your pip requirements rarely change, uncomment this section to add them to the image.
+COPY requirements.txt requirements-test.txt /tmp/pip-tmp/
+RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requirements.txt
+RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requirements-test.txt
+RUN rm -rf /tmp/pip-tmp
+
+# [Optional] Uncomment this line to install global node packages.
+# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1
\ No newline at end of file
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 0000000..651ec36
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,54 @@
+// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
+// https://github.com/microsoft/vscode-dev-containers/tree/v0.155.1/containers/python-3
+{
+	"name": "Python 3",
+	"build": {
+		"dockerfile": "Dockerfile",
+		"context": "..",
+		"args": { 
+			// Update 'VARIANT' to pick a Python version: 3, 3.6, 3.7, 3.8, 3.9
+			"VARIANT": "3.8",
+			// Options
+			"INSTALL_NODE": "true",
+			"NODE_VERSION": "lts/*"
+		}
+	},
+
+	// Set *default* container specific settings.json values on container create.
+	"settings": { 
+		"terminal.integrated.shell.linux": "/bin/bash",
+		"python.pythonPath": "/usr/local/bin/python",
+		"python.linting.enabled": true,
+		"python.linting.pylintEnabled": true,
+		"python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8",
+		"python.formatting.blackPath": "/usr/local/py-utils/bin/black",
+		"python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf",
+		"python.linting.banditPath": "/usr/local/py-utils/bin/bandit",
+		"python.linting.flake8Path": "/usr/local/py-utils/bin/flake8",
+		"python.linting.mypyPath": "/usr/local/py-utils/bin/mypy",
+		"python.linting.pycodestylePath": "/usr/local/py-utils/bin/pycodestyle",
+		"python.linting.pydocstylePath": "/usr/local/py-utils/bin/pydocstyle",
+		"python.linting.pylintPath": "/usr/local/py-utils/bin/pylint",
+		"python.languageServer": "Pylance",
+		"python.testing.pytestArgs": [
+			"tests"
+		],
+		"python.testing.pytestEnabled": true,
+		"python.formatting.provider": "black"
+	},
+
+	// Add the IDs of extensions you want installed when the container is created.
+	"extensions": [
+		"ms-python.python",
+		"ms-python.vscode-pylance"
+	],
+
+	// Use 'forwardPorts' to make a list of ports inside the container available locally.
+	// "forwardPorts": [],
+
+	// Use 'postCreateCommand' to run commands after the container is created.
+	// "postCreateCommand": "pip3 install --user -r requirements.txt",
+
+	// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
+	"remoteUser": "vscode"
+}
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 0000000..97844eb
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,37 @@
+name: CI
+
+on:
+  push:
+    branches: [ master ]
+  pull_request:
+    branches: [ master ]
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v2
+      - name: Set up Python
+        uses: actions/setup-python@v2
+        with:
+          python-version: '3.8'
+      - name: Set up Graphviz
+        run: |
+          sudo apt-get update -y
+          sudo apt-get -y install --no-install-recommends graphviz
+          sudo apt-get -y install --no-install-recommends libgraphviz-dev
+      - name: Cache pip
+        uses: actions/cache@v2
+        with:
+          path: ~/.cache/pip
+          key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt', 'requirements-test.txt') }}
+          restore-keys: |
+            ${{ runner.os }}-pip-
+            ${{ runner.os }}-
+      - name: Install dependencies
+        run: |
+          python -m pip install --upgrade pip
+          if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
+          if [ -f requirements-test.txt ]; then pip install -r requirements-test.txt; fi
+      - name: Test with pytest
+        run: pytest
diff --git a/.gitignore b/.gitignore
index 3aae9fa..bed8e85 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,5 +6,6 @@
 .single_run
 .vscode/
 __pycache__
-__pycache__
 coverage.xml
+
+output/
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index ef372af..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-dist: trusty
-git:
-  depth: false
-addons:
-  sonarcloud:
-    organization: "gbrltv"
-    token:
-      secure: "A6TneLJRVcaFhlgCzsES5m3gnL0Buza2PMDYQSUF5TFgaCJ38CrQejSLgBMug+xh/BfFQJzuSCZWTFvaa8f++vo1YUgRp5S5KpZwgnEvgaqFVyNgmJoRNA6Jqq4ehdG1/8kmD7pX0Aj1REniX8WGgGCGGbEadjIU0NDtxeRI4pJir4/Km9UKLTGJu0Vmm4VoZJ9FPQqLRElrj0sIhI5Lbmdq8qCoTLynEBeHW/2Nm/LbkDH+3QbeK4EFVSKwFQtFD9BeDntNEUn9s9RzWp2YCBSoa8Pq6/IfdgWxchicvWWcAw7rYw3VLHH/AAI06OObvfN/sovJNCSvKE3O+c3YkJpYvQ07yLmd1dWB2qpDgK616PJRpm6f6z4jwFSTMbYMVh/aEcPZ+YLcFi3+L+RDNlJuKN/ymyDkl5SCQqWvoFM0KfUtRyKv3lQFL8z+Apq6NNYKelgoFDM9pUqOxu6IAMfqipeYvnkov5pd1rD4yZzZVx2cNOTehMgz2z8aZE4gVXZntXsVxziFlpyMxrIHLhBvkCNqOoCW5rURhkIwd67imuoM5mxXDFSZrr/wVSHBEwTuzyVfdTuF6kjgXZVUBfQcT2xQPZ1afK3Un+rOCcekLEYEqjjmlCzWtbfJdMhugPFBvWFlTRuzhdMayuzKsNwKYpzb9ZI/ThPDfkLS6M0="
-
-language: python
-python:
-- '3.6'
-before_install:
-  - pip install --upgrade pytest
-install:
-- pip install .[test]
-before_script:
-  - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
-  - chmod +x ./cc-test-reporter
-  - ./cc-test-reporter before-build
-after_script:
-  - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
-script:
-- rm -rf .coverage
-- coverage erase
-- pytest --cov=cdesf2 --cov-report xml:coverage.xml 
-- coverage combine --append || true
-- coverage report
-- coverage xml
-- 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then sonar-scanner; fi' # sonar only on non-PRs
-
-after_success:
-  - coveralls
-  - python-codacy-coverage -r coverage.xml
diff --git a/README.rst b/README.rst
index 08982c6..6e44f65 100644
--- a/README.rst
+++ b/README.rst
@@ -1,6 +1,6 @@
 CDESF: Concept-drift on Event Stream Framework
 =========================================================================================
-|travis| |sonar_quality| |sonar_maintainability| |codacy|
+|github-ci| |sonar_quality| |sonar_maintainability| |codacy|
 |code_climate_maintainability| |pip| |downloads|
 
 Latest version of CDESF framework - (under construction)
@@ -42,9 +42,8 @@ Please, use “Overlapping Analytic Stages in Online Process Mining”
     number={},
     pages={167-175}}
 
-.. |travis| image:: https://travis-ci.org/gbrltv/CDESF2.png
-   :target: https://travis-ci.org/gbrltv/CDESF2
-   :alt: Travis CI build
+.. |github-ci| image:: https://github.com/emilioschepis/cdesf2/workflows/CI/badge.svg?branch=master
+   :alt: GitHub CI build
 
 .. |sonar_quality| image:: https://sonarcloud.io/api/project_badges/measure?project=gbrltv_CDESF2&metric=alert_status
     :target: https://sonarcloud.io/dashboard/index/gbrltv_CDESF2
diff --git a/cdesf2/core/cdesf.py b/cdesf2/core/cdesf.py
index 1fa7dbc..6904bca 100644
--- a/cdesf2/core/cdesf.py
+++ b/cdesf2/core/cdesf.py
@@ -1,13 +1,15 @@
+import multiprocessing as mp
 from typing import Union
 from os import makedirs
 from datetime import datetime
 import networkx as nx
 import pandas as pd
 import numpy as np
-from ..utils import extract_case_distances, initialize_graph, merge_graphs, Metrics
+from ..utils import calculate_case_distances, initialize_graph, merge_graphs, Metrics
 from ..data_structures import Case
 from ..clustering import DenStream
 from ..visualization import cumulative_stream_drifts, feature_space
+from pm4py.objects.log import obj
 
 
 class CDESF:
@@ -17,17 +19,22 @@ class CDESF:
     DenStream triggering, plotting results and metrics recording.
     """
 
-    def __init__(self,
-                 name: str = 'Process',
-                 time_horizon: int = 432000,
-                 lambda_: float = 0.1,
-                 beta: float = 0.2,
-                 epsilon: float = 0.2,
-                 mu: int = 4,
-                 stream_speed: int = 100,
-                 n_features: int = 2,
-                 gen_plot: bool = False,
-                 gen_metrics: bool = True):
+    cases: "list[Case]"
+    additional_attributes: "list[str]"
+
+    def __init__(
+        self,
+        name: str = "Process",
+        time_horizon: int = 432000,
+        lambda_: float = 0.1,
+        beta: float = 0.2,
+        epsilon: float = 0.2,
+        mu: int = 4,
+        stream_speed: int = 100,
+        gen_plot: bool = False,
+        gen_metrics: bool = True,
+        additional_attributes: "list[str]" = [],
+    ):
         """
         This function sets up a new process, defining its name, and preparing initial attributes.
 
@@ -74,16 +81,24 @@ def __init__(self,
         self.nyquist = 0
         self.check_point_cases = 0
         self.process_model_graph = nx.DiGraph()
-        self.denstream = DenStream(lambda_, beta, epsilon, mu, stream_speed, n_features)
+        self.additional_attributes = additional_attributes
+        self.n_features = len(additional_attributes) + 2
+        self.denstream = DenStream(
+            lambda_, beta, epsilon, mu, stream_speed, self.n_features
+        )
         self.cluster_metrics = []
         self.case_metrics = []
         self.active_core_clusters = set()
         self.drift_indexes = []
-        self.metrics = Metrics(self.name)
-        self.feature_space_plot_path = f'visualization/{self.name}_feature_space'
+        self.metrics = Metrics(self.name, additional_attributes)
+        self.feature_space_plot_path = f"output/visualization/{self.name}_feature_space"
+
+        # Used to store the current feature_space jobs that are executing.
+        self.fs_pool = mp.Pool(mp.cpu_count())
+
         makedirs(self.feature_space_plot_path, exist_ok=True)
 
-    def get_case(self, case_id: str) -> Union[int, None]:
+    def get_case_index(self, case_id: str) -> Union[int, None]:
         """
         Returns the case index from the cases list.
 
@@ -91,6 +106,7 @@ def get_case(self, case_id: str) -> Union[int, None]:
         --------------------------------------
         case_id: str
             The case identifier
+
         Returns
         --------------------------------------
         The case position in the case list
@@ -107,16 +123,18 @@ def initialize_case_metrics(self) -> None:
         Initializes metrics in case the user triggers this task
         """
         for case in self.cases:
-            graph_distance, time_distance = extract_case_distances(self.process_model_graph, case)
-            case.graph_distance = graph_distance
-            case.time_distance = time_distance
+            case.distances = calculate_case_distances(
+                self.process_model_graph,
+                case,
+                additional_attributes=self.additional_attributes,
+            )
 
     def release_cases_from_memory(self) -> None:
         """
         Releases older cases based on the Nyquist value.
         The result is stored in self.cases.
         """
-        self.cases = self.cases[:self.nyquist]
+        self.cases = self.cases[: self.nyquist]
 
     def initialize_cdesf(self) -> None:
         """
@@ -125,7 +143,9 @@ def initialize_cdesf(self) -> None:
         """
         self.nyquist = self.check_point_cases * 2
         # initialize PMG
-        self.process_model_graph = initialize_graph(nx.DiGraph(), self.cases)
+        self.process_model_graph = initialize_graph(
+            self.cases, self.additional_attributes
+        )
         # compute case metrics for initial cases
         self.initialize_case_metrics()
 
@@ -137,41 +157,65 @@ def initialize_cdesf(self) -> None:
             for cluster in group:
                 self.active_core_clusters.add(cluster.id)
 
-        # plot
-        if self.gen_plot:
+        # Computed outside mainly to ensure that the value of the clusters
+        # gets calculated sequentially and not inside the pool.
+        generated_o_clusters = self.denstream.generate_outlier_clusters()
+
+        # Plot
+        # Plotting is only available when no additional attributes are defined
+        if self.gen_plot and not len(self.additional_attributes):
             normals, outliers = [], []
             for case in self.cases:
-                if not np.isnan(np.sum(case.point)) and self.denstream.is_normal(case.point):
+                if not np.isnan(np.sum(case.point)) and self.denstream.is_normal(
+                    case.point
+                ):
                     normals.append(case.point)
                 else:
                     outliers.append(case.point)
-            feature_space(self.name,
-                          self.event_index,
-                          self.cp_count,
-                          normals,
-                          outliers,
-                          self.denstream.generate_clusters(),
-                          self.denstream.generate_outlier_clusters(),
-                          self.denstream.epsilon,
-                          self.feature_space_plot_path)
+
+            self.fs_pool.apply_async(
+                func=feature_space,
+                args=(
+                    self.name,
+                    self.event_index,
+                    self.cp_count,
+                    normals,
+                    outliers,
+                    groups,
+                    generated_o_clusters,
+                    self.denstream.epsilon,
+                    self.feature_space_plot_path,
+                ),
+            )
 
         # metrics
         if self.gen_metrics:
             for case in self.cases:
-                self.metrics.compute_case_metrics(self.event_index, self.check_point, self.cp_count,
-                                                  case, self.denstream.is_normal(case.point))
+                self.metrics.compute_case_metrics(
+                    self.event_index,
+                    self.check_point,
+                    self.cp_count,
+                    case,
+                    self.denstream.is_normal(case.point),
+                )
             self.metrics.save_case_metrics_on_check_point()
-            self.metrics.compute_cluster_metrics(self.event_index, self.check_point, self.cp_count,
-                                                 self.denstream.generate_clusters(),
-                                                 self.denstream.generate_outlier_clusters())
+            self.metrics.compute_cluster_metrics(
+                self.event_index,
+                self.check_point,
+                self.cp_count,
+                self.denstream.generate_clusters(),
+                self.denstream.generate_outlier_clusters(),
+            )
             self.metrics.save_cluster_metrics_on_check_point()
 
         if len(self.process_model_graph.edges) > 0:
-            self.metrics.save_pmg_on_check_point(self.process_model_graph, self.cp_count)
+            self.metrics.save_pmg_on_check_point(
+                self.process_model_graph, self.cp_count
+            )
 
         self.initialized = True
 
-    def set_case(self, case_id: str, act_name: str, act_timestamp: datetime) -> int:
+    def set_case(self, case_id: str, event) -> int:
         """
         Function that finds the case and if it already exists,
         sets the activity with the name and the timestamp passed and
@@ -192,18 +236,20 @@ def set_case(self, case_id: str, act_name: str, act_timestamp: datetime) -> int:
         index: int
             Index of the case modified/created
         """
-        # check if case exists and creates one if it doesn't
-        index = self.get_case(case_id)
-        if index is None:
-            self.cases.append(Case(case_id))
+        case_index = self.get_case_index(case_id)
+
+        if case_index is None:
+            new_case = Case(case_id)
+            self.cases.append(new_case)
             self.check_point_cases += 1
-            index = self.get_case(case_id)
-        # add activity
-        self.cases[index].set_activity(act_name, act_timestamp)
+            case_index = len(self.cases) - 1
+
+        self.cases[case_index].add_event(event)
+
         # reorder list, putting the newest case in the first position
-        self.cases.insert(0, self.cases.pop(index))
+        self.cases.insert(0, self.cases.pop(case_index))
 
-        return index
+        return case_index
 
     def check_point_update(self):
         """
@@ -220,8 +266,10 @@ def check_point_update(self):
             if self.check_point_cases > 5:
                 self.nyquist = self.check_point_cases * 2
 
-            check_point_graph = initialize_graph(nx.DiGraph(), self.cases)
-            self.process_model_graph = merge_graphs(self.process_model_graph, check_point_graph)
+            check_point_graph = initialize_graph(self.cases, self.additional_attributes)
+            self.process_model_graph = merge_graphs(
+                self.process_model_graph, check_point_graph
+            )
 
         self.check_point_cases = 0
 
@@ -255,107 +303,128 @@ def check_for_drift(self):
         #     print("Cluster", cluster, "ceased to exist")
         #     print()
 
-    def process_event(self, case_id: str, act_name: str, act_timestamp: datetime) -> None:
-        """
-        The core function in the Process class.
-        Sets a new case and controls the check point.
-        If gp_creation is True, calculates the case metrics and uses
-        them to train DenStream, recalculates the Nyquist and releases
-        old cases if necessary.
+    def process_event(self, event):
+        case_id = event["case:concept:name"]
+        case_index = self.set_case(case_id, event)
+        case = self.cases[case_index]
 
-        Parameters
-        --------------------------------------
-        case_id: str
-            The case identifier
-        act_name: str
-            Activity's name
-        act_timestamp: datetime
-            Activity timestamp
-        """
         self.total_cases.add(case_id)
 
-        case_index = self.set_case(case_id, act_name, act_timestamp)
-        current_time = self.cases[case_index].last_time
+        current_time = case.last_time
+        time_distance = (current_time - self.check_point).total_seconds()
 
-        if (current_time - self.check_point).total_seconds() > self.time_horizon and not self.initialized:
-            """
-            Initializes cdesf
-            """
-            self.check_point = current_time
-            self.initialize_cdesf()
-        elif self.initialized:
-            """
-            If we are past the first check point, graph distances are calculated and DenStream triggered
-            """
-            graph_distance, time_distance = extract_case_distances(self.process_model_graph, self.cases[case_index])
-            self.cases[case_index].graph_distance = graph_distance
-            self.cases[case_index].time_distance = time_distance
-
-            # DENSTREAM
-            self.denstream.train(self.cases[case_index])
-            self.check_for_drift()
-
-            # plots
-            if self.gen_plot:
-                normals, outliers = [], []
-                for case in self.cases:
-                    if not np.isnan(np.sum(case.point)) and self.denstream.is_normal(case.point):
-                        normals.append(case.point)
-                    else:
-                        outliers.append(case.point)
-                feature_space(self.name,
-                              self.event_index,
-                              self.cp_count,
-                              normals,
-                              outliers,
-                              self.denstream.generate_clusters(),
-                              self.denstream.generate_outlier_clusters(),
-                              self.denstream.epsilon,
-                              self.feature_space_plot_path)
-
-            # metrics
-            if self.gen_metrics:
-                self.metrics.compute_case_metrics(self.event_index,
-                                                  act_timestamp,
-                                                  self.cp_count,
-                                                  self.cases[case_index],
-                                                  self.denstream.is_normal(self.cases[case_index].point))
-                self.metrics.compute_cluster_metrics(self.event_index,
-                                                     act_timestamp,
-                                                     self.cp_count,
-                                                     self.denstream.generate_clusters(),
-                                                     self.denstream.generate_outlier_clusters())
-
-            if (current_time - self.check_point).total_seconds() > self.time_horizon:
-                """
-                Check point
-                """
+        if not self.initialized:
+            if time_distance > self.time_horizon:
                 self.check_point = current_time
-                self.check_point_update()
+                self.initialize_cdesf()
+            return
+
+        case.distances = calculate_case_distances(
+            self.process_model_graph,
+            case,
+            additional_attributes=self.additional_attributes,
+        )
+
+        # DenStream
+        self.denstream.train(case)
+        self.check_for_drift()
+
+        # Computed outside mainly to ensure that the value of the clusters
+        # gets calculated sequentially and not inside the pool.
+        generated_clusters = self.denstream.generate_clusters()
+        generated_o_clusters = self.denstream.generate_outlier_clusters()
+
+        # Plots
+        if self.gen_plot:
+            normals, outliers = [], []
+            for case in self.cases:
+                if not np.isnan(np.sum(case.point)) and self.denstream.is_normal(
+                    case.point
+                ):
+                    normals.append(case.point)
+                else:
+                    outliers.append(case.point)
 
-                self.metrics.save_pmg_on_check_point(self.process_model_graph, self.cp_count)
-                if self.gen_metrics:
-                    self.metrics.save_case_metrics_on_check_point()
-                    self.metrics.save_cluster_metrics_on_check_point()
+            self.fs_pool.apply_async(
+                func=feature_space,
+                args=(
+                    self.name,
+                    self.event_index,
+                    self.cp_count,
+                    normals,
+                    outliers,
+                    generated_clusters,
+                    generated_o_clusters,
+                    self.denstream.epsilon,
+                    self.feature_space_plot_path,
+                ),
+            )
+
+        # Metrics
+        if self.gen_metrics:
+            self.metrics.compute_case_metrics(
+                self.event_index,
+                event.get("time:timestamp"),
+                self.cp_count,
+                self.cases[case_index],
+                self.denstream.is_normal(self.cases[case_index].point),
+            )
+            self.metrics.compute_cluster_metrics(
+                self.event_index,
+                event.get("time:timestamp"),
+                self.cp_count,
+                self.denstream.generate_clusters(),
+                self.denstream.generate_outlier_clusters(),
+            )
+
+        if time_distance > self.time_horizon:
+            self.check_point = current_time
+            self.check_point_update()
+            self.metrics.save_pmg_on_check_point(
+                self.process_model_graph, self.cp_count
+            )
+            if self.gen_metrics:
+                self.metrics.save_case_metrics_on_check_point()
+                self.metrics.save_cluster_metrics_on_check_point()
 
-    def run(self, stream: np.ndarray) -> None:
+    def run(self, stream: obj.EventStream) -> None:
         """
         Simulates the event stream by iterating through the stream variable
-        generated reading the csv file, calls set_process at each new event
+        generated reading the input file, calls set_process at each new event
 
         Parameters
         --------------------------------------
-        stream: pd.DataFrame
-            Stream of events which was read by the read_csv function
+        stream: obj.EventStream
+            Event stream imported by PM4Py
         """
+
         for index, event in enumerate(stream):
             self.event_index = index
-            case_id, activity_name, activity_timestamp = (event[0], event[1], event[2])
+
             if index == 0:
-                self.check_point = activity_timestamp
-            self.process_event(case_id, activity_name, activity_timestamp)
+                self.check_point = event["time:timestamp"]
+
+            self.process_event(event)
+            # self.event_index = index
+            # case_id, activity_name, activity_timestamp = (
+            #     event["case:concept:name"],
+            #     event["concept:name"],
+            #     event["time:timestamp"],
+            # )
+            # if index == 0:
+            #     self.check_point = activity_timestamp
+            # self.process_event(case_id, activity_name, activity_timestamp)
+
+        self.fs_pool.close()
+        self.fs_pool.join()
 
         self.drift_indexes = list(np.unique(self.drift_indexes))
+
         print("Total number of drifts:", len(self.drift_indexes))
         print("Drift points:", self.drift_indexes)
-        cumulative_stream_drifts(len(stream), self.drift_indexes, f'visualization/drifts/{self.name}.pdf')
+
+        cumulative_stream_drifts(
+            len(stream),
+            self.drift_indexes,
+            f"output/visualization/drifts/{self.name}.pdf",
+        )
diff --git a/cdesf2/data_structures/__init__.py b/cdesf2/data_structures/__init__.py
index 4fad581..b64f0be 100644
--- a/cdesf2/data_structures/__init__.py
+++ b/cdesf2/data_structures/__init__.py
@@ -1,11 +1,5 @@
-from .activity import Activity
 from .case import Case
 from .cluster import Cluster
 from .micro_cluster import MicroCluster
 
-__all__ = [
-    "Activity",
-    "Case",
-    "Cluster",
-    "MicroCluster"
-]
+__all__ = ["Case", "Cluster", "MicroCluster"]
diff --git a/cdesf2/data_structures/activity.py b/cdesf2/data_structures/activity.py
deleted file mode 100644
index 8ba90ed..0000000
--- a/cdesf2/data_structures/activity.py
+++ /dev/null
@@ -1,22 +0,0 @@
-from datetime import datetime
-
-
-class Activity:
-    """
-    The lowest level representation of an activity.
-    """
-    def __init__(self, name: str, timestamp: datetime):
-        """
-        Initializes an Activity setting its name and timestamp.
-
-        Parameters
-        --------------------------------------
-        name: str,
-            Name of the activity
-        timestamp: datetime,
-            Time of activity conclusion
-        Returns
-        --------------------------------------
-        """
-        self.name = name
-        self.timestamp = timestamp
diff --git a/cdesf2/data_structures/case.py b/cdesf2/data_structures/case.py
index 47540a3..4f22044 100644
--- a/cdesf2/data_structures/case.py
+++ b/cdesf2/data_structures/case.py
@@ -1,7 +1,7 @@
 import numpy as np
-import datetime as datetime
-from typing import List
-from .activity import Activity
+from datetime import datetime
+from pm4py.objects.log.obj import EventStream
+from pm4py.util import constants
 
 
 class Case:
@@ -9,23 +9,30 @@ class Case:
     Represents a case and stores its attributes, such as activities,
     timestamps, graph_distance, time_distance, among others.
     """
-    def __init__(self, case_id: str):
+
+    id: str
+    events: EventStream
+    distances: "dict[str, float]"
+
+    def __init__(self, id: str):
         """
         Receives a case identifier and initializes the attributes of a new case.
 
         Parameters
         --------------------------------------
-        case_id: str,
+        id: str,
             Case identifier
         """
-        self.id = case_id
-        self.activities = []
-        self.graph_distance = np.nan
-        self.time_distance = np.nan
+        self.id = id
+        self.events = []
+        self.distances = {}
 
     @property
-    def point(self):
-        return np.array([self.graph_distance, self.time_distance])
+    def point(self) -> np.ndarray:
+        if len(self.distances) == 0:
+            return np.zeros(2)
+
+        return np.array(list(self.distances.values()))
 
     @property
     def last_time(self) -> datetime:
@@ -34,34 +41,48 @@ def last_time(self) -> datetime:
         --------------------------------------
         Retrieves the last event timestamp
         """
-        return self.activities[-1].timestamp
+        return self.events[-1]["time:timestamp"]
 
-    def set_activity(self, activity_name: str, activity_timestamp: datetime) -> None:
-        """
-        Creates a new Activity and appends it to the case activities list.
+    def add_event(self, event) -> None:
+        # TODO: Try to extract correct type for an element of `EventStream`.
+        # On TypeScript it would look something like `type MyType = EventStream[number]`.
+        self.events.append(event)
 
-        Parameters
-        --------------------------------------
-        activity_name: str,
-            Name of the activity
-        activity_timestamp: datetime,
-            Time of activity conclusion
-        """
-        activity = Activity(activity_name, activity_timestamp)
-        self.activities.append(activity)
+    def get_trace(self) -> "list[str]":
+        return [event["concept:name"] for event in self.events]
 
-    def get_trace(self) -> List[str]:
-        """
-        Returns
-        --------------------------------------
-        List of activity names
-        """
-        return [activity.name for activity in self.activities]
+    def get_timestamps(self) -> "list[datetime]":
+        return [event["time:timestamp"] for event in self.events]
 
-    def get_timestamps(self) -> List[datetime.datetime]:
-        """
-        Returns
-        --------------------------------------
-        List of activity timestamps
-        """
-        return [activity.timestamp for activity in self.activities]
+    def get_attribute(self, attribute: str) -> "list":
+        return [event.get(attribute) for event in self.events]
+
+    # def set_activity(self, activity_name: str, activity_timestamp: datetime) -> None:
+    #     """
+    #     Creates a new Activity and appends it to the case activities list.
+
+    #     Parameters
+    #     --------------------------------------
+    #     activity_name: str,
+    #         Name of the activity
+    #     activity_timestamp: datetime,
+    #         Time of activity conclusion
+    #     """
+    #     activity = Activity(activity_name, activity_timestamp)
+    #     self.activities.append(activity)
+
+    # def get_trace(self) -> List[str]:
+    #     """
+    #     Returns
+    #     --------------------------------------
+    #     List of activity names
+    #     """
+    #     return [activity.name for activity in self.activities]
+
+    # def get_timestamps(self) -> List[datetime.datetime]:
+    #     """
+    #     Returns
+    #     --------------------------------------
+    #     List of activity timestamps
+    #     """
+    #     return [activity.timestamp for activity in self.activities]
diff --git a/cdesf2/data_structures/micro_cluster.py b/cdesf2/data_structures/micro_cluster.py
index db4cf97..d65deb1 100644
--- a/cdesf2/data_structures/micro_cluster.py
+++ b/cdesf2/data_structures/micro_cluster.py
@@ -26,11 +26,11 @@ def __init__(self, id_: int, n_features: int, creation_time: int, lambda_: float
             current clusters
         """
         self.id = id_
-        self.CF = np.zeros(n_features)
-        self.CF2 = np.zeros(n_features)
+        self.cf1 = np.zeros(n_features)
+        self.cf2 = np.zeros(n_features)
         self.weight = 0
         self.lambda_ = lambda_
-        self.factor = 2 ** (-self.lambda_)
+        self.factor = 2 ** (-lambda_)
         self.creation_time = creation_time
 
     @property
@@ -43,7 +43,7 @@ def centroid(self) -> np.ndarray:
         --------------------------------------
         The micro-cluster's centroid value
         """
-        return self.CF / self.weight
+        return self.cf1 / self.weight
 
     @property
     def radius(self) -> np.ndarray:
@@ -54,8 +54,13 @@ def radius(self) -> np.ndarray:
         --------------------------------------
         The micro-cluster's radius
         """
-        cf1_squared = (self.CF / self.weight) ** 2
-        return np.nan_to_num(np.nanmax(((self.CF2 / self.weight) - cf1_squared) ** (1 / 2)))
+        weighted_cf1 = self.cf1 / self.weight
+        weighted_cf2 = self.cf2 / self.weight
+
+        cf_operation = np.maximum(weighted_cf2 - (weighted_cf1 ** 2), 0)
+        cf_root = np.sqrt(cf_operation)
+
+        return np.nanmax(cf_root)
 
     def radius_with_new_point(self, point: np.ndarray) -> np.ndarray:
         """
@@ -67,16 +72,18 @@ def radius_with_new_point(self, point: np.ndarray) -> np.ndarray:
         --------------------------------------
         point: np.ndarray
             Contain graph_distance and time_distance
+
         Returns
         --------------------------------------
         The micro-cluster's radius
         """
-        cf1 = self.CF + point
-        cf2 = self.CF2 + point * point
-        weight = self.weight + 1
+        weighted_cf1 = (self.cf1 + point) / (self.weight + 1)
+        weighted_cf2 = (self.cf2 + (point ** 2)) / (self.weight + 1)
 
-        cf1_squared = (cf1 / weight) ** 2
-        return np.nan_to_num(np.nanmax(((cf2 / weight) - cf1_squared) ** (1 / 2)))
+        cf_operation = np.maximum(weighted_cf2 - (weighted_cf1 ** 2), 0)
+        cf_root = np.sqrt(cf_operation)
+
+        return np.nanmax(cf_root)
 
     def update(self, case: Case):
         """
@@ -87,15 +94,16 @@ def update(self, case: Case):
         case: Case
             A case object
         """
-        point = case.point
-        self.CF += point
-        self.CF2 += point * point
         self.weight += 1
 
+        self.cf1 += case.point
+        self.cf2 += case.point ** 2
+
     def decay(self):
         """
         Decays a micro-cluster using the factor, which is based on lambda
         """
-        self.CF *= self.factor
-        self.CF2 *= self.factor
         self.weight *= self.factor
+
+        self.cf1 *= self.factor
+        self.cf2 *= self.factor
diff --git a/cdesf2/utils/__init__.py b/cdesf2/utils/__init__.py
index 988a184..330dc9a 100644
--- a/cdesf2/utils/__init__.py
+++ b/cdesf2/utils/__init__.py
@@ -1,19 +1,15 @@
-from .time_difference import time_difference
-from .extract_cases_time_and_trace import extract_cases_time_and_trace
-from .graph_operation import initialize_graph
-from .graph_operation import normalize_graph
-from .graph_operation import merge_graphs
-from .extract_case_distances import extract_case_distances
-from .reading import read_csv
+from .graph_operations import initialize_graph, normalize_graph, merge_graphs
+from .distances import calculate_case_distances, calculate_case_time_distances
+from .reading import read_csv, read_xes
 from .metrics import Metrics
 
 __all__ = [
-    "time_difference",
-    "extract_cases_time_and_trace",
     "initialize_graph",
     "normalize_graph",
     "merge_graphs",
-    "extract_case_distances",
+    "calculate_case_distances",
+    "calculate_case_time_distances",
     "read_csv",
-    "Metrics"
+    "read_xes",
+    "Metrics",
 ]
diff --git a/cdesf2/utils/distances.py b/cdesf2/utils/distances.py
new file mode 100644
index 0000000..23fffcd
--- /dev/null
+++ b/cdesf2/utils/distances.py
@@ -0,0 +1,138 @@
+import networkx as nx
+import collections
+from numpy import average, count_nonzero
+from math import log10
+from ..data_structures import Case
+
+
+def calculate_case_distances(
+    graph: nx.DiGraph, case: Case, *, additional_attributes: "list[str]" = []
+) -> "dict[str, float]":
+    """
+    Extracts the distances between the current graph and a given case across trace,
+    time, and the additional attributes provided.
+
+    Arguments:
+        graph: nx.DiGraph
+
+        case: Case
+
+        additional_attributes: list[str]:
+            A list of additional attributes to calculate the distances for.
+
+    Returns:
+        A dictionary that associates each attribute with the distance between the
+        graph and the case.
+    """
+    trace = case.get_trace()
+    time_differences = calculate_case_time_distances(case)
+
+    if not graph.edges or len(trace) < 2:
+        # Return a map with all-zero distances.
+        default_distances = {"graph": 0.0, "time": 0.0}
+
+        for attribute_name in additional_attributes:
+            default_distances[attribute_name] = 0.0
+
+        return default_distances
+
+    distances: "dict[str, float]" = {}
+
+    # Node distances
+    for attribute_name in additional_attributes:
+        is_numerical = True
+        current_total = 0
+        difference_total = 0
+
+        for index, activity in enumerate(trace):
+            case_value = case.get_attribute(attribute_name)[index]
+
+            activity_node: dict = graph.nodes.get(activity)
+
+            if not activity_node:
+                # This is the first time we see this activity, so the distance is maximum.
+                # This might be the first ever event for this attribute, so we also need to check to see if it is
+                # numerical or categorical
+                if isinstance(case_value, str):
+                    current_total += 1
+                else:
+                    current_total += 0  # The average for this attribute so far should remain the same
+                    difference_total += case_value  # The distance should be maximum
+
+                continue
+
+            activity_attribute_values = activity_node.get(attribute_name)
+
+            if isinstance(case_value, str):
+                # Handle this attribute like a categorical attribute
+                is_numerical = False
+                activity_attribute_counter = collections.Counter(
+                    activity_attribute_values
+                )
+                activity_attribute_frequency = activity_attribute_counter.get(
+                    case_value, 0
+                )
+                activity_attribute_distance = 1 - (
+                    activity_attribute_frequency / len(activity_attribute_values)
+                )
+
+                current_total += activity_attribute_distance
+            else:
+                # Handle this attribute like a numerical attribute
+                is_numerical = True
+                activity_attribute_average = average(activity_attribute_values)
+                current_total += activity_attribute_average
+
+                difference_total += abs(activity_attribute_average - case_value)
+
+        if is_numerical:
+            distances[attribute_name] = difference_total / current_total
+        else:
+            distances[attribute_name] = current_total / len(trace)
+
+    # Edge distances
+    normalized_times: "list[float]" = []
+    normalized_weight = 0
+
+    for trace_index in range(len(trace) - 1):
+        first_node = trace[trace_index]
+        second_node = trace[trace_index + 1]
+
+        if graph.has_edge(first_node, second_node):
+            edge = graph[first_node][second_node]
+            normalized_times.append(edge["time_normalized"])
+            normalized_weight += 1 - edge["weight_normalized"]
+        else:
+            normalized_times.append(0.0)
+            normalized_weight += 1
+
+    distances["graph"] = normalized_weight / (len(trace) - 1)
+
+    time_current_total = sum(normalized_times)
+    time_difference_total = 0
+
+    for time_index, normalized_time in enumerate(normalized_times):
+        time_difference_total += abs(normalized_time - time_differences[time_index])
+
+    if time_difference_total == 0:
+        distances["time"] = 0.0
+    elif time_current_total == 0:
+        distances["time"] = log10(time_difference_total)
+    else:
+        distances["time"] = log10(time_difference_total / time_current_total)
+
+    return distances
+
+
+def calculate_case_time_distances(case: Case) -> "list[float]":
+    timestamps = case.get_timestamps()
+
+    if len(timestamps) < 2:
+        return [0]
+
+    distances: "list[float]" = []
+
+    for lhs, rhs in list(zip(timestamps, timestamps[1:])):
+        distances.append((rhs - lhs).total_seconds())
+
+    return distances
diff --git a/cdesf2/utils/extract_case_distances.py b/cdesf2/utils/extract_case_distances.py
deleted file mode 100644
index 8e467c2..0000000
--- a/cdesf2/utils/extract_case_distances.py
+++ /dev/null
@@ -1,62 +0,0 @@
-from math import log10
-import networkx as nx
-from typing import Tuple
-from ..data_structures import Case
-from .time_difference import time_difference
-
-
-def extract_case_distances(graph: nx.DiGraph, case: Case) -> Tuple[float, float]:
-    """
-    Receives a graph and a case and computes the metrics for that case.
-    Contains several rules for graph and time distances.
-
-    Parameters
-    --------------------------------------
-    graph: nx.DiGraph,
-        Process model graph
-    case: Case,
-        Case to compute the metrics
-    Returns
-    --------------------------------------
-    graph_distance, time_distance: Tuple[float, float]
-        Graph and time distances
-    """
-    trace = case.get_trace()
-    time = time_difference([case.get_timestamps()])[0]
-
-    if len(graph.edges) == 0 or len(trace) <= 1:
-        return 0, 0
-
-    # accumulates initial trace weight and graph times
-    graph_time = []
-    trace_weight = 0
-    for i in range(len(trace)-1):
-        if (trace[i], trace[i+1]) in graph.edges:
-            graph_time.append(graph[trace[i]][trace[i+1]]['time_normalized'])
-            trace_weight += 1 - graph[trace[i]][trace[i+1]]['weight_normalized']
-        else:
-            graph_time.append(0)
-            trace_weight += 1
-
-    lent = len(trace)-1
-    if lent > 1:
-        # trace has more than one edge (transition), graph distance is the division of the sum by the number of edges
-        graph_distance = trace_weight / lent
-    else:
-        # trace has only one edge, graph distance is the sum
-        graph_distance = trace_weight
-
-    difference = 0
-    for i in range(len(time)):
-        difference += abs(graph_time[i] - time[i])
-    if difference == 0:
-        # trace and graph have the exact same time distribution
-        return graph_distance, 0
-
-    graph_time_sum = sum(graph_time)
-    if graph_time_sum == 0:
-        # graph time sum is 0, returns the log of the difference
-        return graph_distance, log10(difference)
-    else:
-        # graph time sum and difference are not zero, original equation performed (most likely)
-        return graph_distance, log10(difference/graph_time_sum)
diff --git a/cdesf2/utils/extract_cases_time_and_trace.py b/cdesf2/utils/extract_cases_time_and_trace.py
deleted file mode 100644
index 66a9262..0000000
--- a/cdesf2/utils/extract_cases_time_and_trace.py
+++ /dev/null
@@ -1,29 +0,0 @@
-from typing import List, Tuple
-from datetime import datetime
-from ..data_structures import Case
-
-
-def extract_cases_time_and_trace(case_list: List[Case]) -> Tuple[List[List[str]], List[List[datetime]]]:
-    """
-    Receives a list of cases and returns a list of traces and a list of timestamps
-
-    Parameters
-    --------------------------------------
-    case_list: List[Case],
-        List of cases
-    Returns
-    --------------------------------------
-    trace_list: List[List[str]],
-        List of traces
-    time_list: List[List[datetime]],
-        List of timestamps
-    """
-    if len(case_list) == 0:
-        raise Exception("Extracting trace and timestamp list out of a list with no cases")
-
-    trace_list, time_list = [], []
-    for case in case_list:
-        trace_list.append(case.get_trace())
-        time_list.append(case.get_timestamps())
-
-    return trace_list, time_list
diff --git a/cdesf2/utils/graph_operation.py b/cdesf2/utils/graph_operation.py
deleted file mode 100644
index 8df4fcb..0000000
--- a/cdesf2/utils/graph_operation.py
+++ /dev/null
@@ -1,90 +0,0 @@
-import networkx as nx
-from typing import List
-from ..data_structures.case import Case
-from ..utils import time_difference, extract_cases_time_and_trace
-
-
-def normalize_graph(graph: nx.DiGraph) -> nx.DiGraph:
-    """
-    Time and weight normalization for each edge in the graph.
-    Time normalization is the mean time of an edge.
-    Trace normalization is based on the graph weights
-
-    Parameters
-    --------------------------------------
-    graph: nx.DiGraph,
-        Graph to be normalized
-    Returns
-    --------------------------------------
-    graph: nx.DiGraph,
-        Normalized graph
-    """
-    max_weight = max([attributes['weight'] for n1, n2, attributes in graph.edges(data=True)])
-    for node1, node2, data in graph.edges(data=True):
-        data['weight_normalized'] = data['weight'] / max_weight
-        data['time_normalized'] = data['time'] / data['weight']
-
-    return graph
-
-
-def initialize_graph(graph: nx.DiGraph, case_list: List[Case]) -> nx.DiGraph:
-    """
-    Initialize a graph based on the weights and time differences from a list of cases
-
-    Parameters
-    --------------------------------------
-    graph: nx.DiGraph,
-        Graph to be initialized
-    case_list: List[Case],
-        List of cases used to initialize the graph
-    Returns
-    --------------------------------------
-    graph: nx.DiGraph,
-        Initialized graph
-    """
-    trace_list, time_list = extract_cases_time_and_trace(case_list)
-
-    time_list = time_difference(time_list)
-
-    for trace, time in zip(trace_list, time_list):
-        for i in range(len(trace)-1):
-            edges = (trace[i], trace[i+1])
-            if edges not in graph.edges:
-                graph.add_edge(*edges, weight=1, time=time[i])
-            else:
-                graph[edges[0]][edges[1]]['weight'] += 1
-                graph[edges[0]][edges[1]]['time'] += time[i]
-
-    return normalize_graph(graph)
-
-
-def merge_graphs(process_model_graph: nx.DiGraph, check_point_graph: nx.DiGraph) -> nx.DiGraph:
-    """
-    Receives two graphs and merge them.
-    The first is the PMG (process model graph) and the second it the CP (check point) graph.
-    The PMG, then, incorporates the second graph.
-    Before the merge, 5% of the PMG's weight is decayed.
-
-    Parameters
-    --------------------------------------
-    process_model_graph: nx.DiGraph,
-        PMG graph
-    check_point_graph: nx.DiGraph,
-        CP graph
-    Returns
-    --------------------------------------
-    process_model_graph: nx.DiGraph,
-        PMG after merge
-    """
-    for node1, node2, data in process_model_graph.edges(data=True):
-        data['weight'] *= 0.95
-
-    for node1, node2, data in check_point_graph.edges(data=True):
-        path = (node1, node2)
-        if path in process_model_graph.edges:
-            process_model_graph[node1][node2]['weight'] += data['weight']
-            process_model_graph[node1][node2]['time'] += data['time']
-        else:
-            process_model_graph.add_edge(*path, weight=data['weight'], time=data['time'])
-
-    return normalize_graph(process_model_graph)
diff --git a/cdesf2/utils/graph_operations.py b/cdesf2/utils/graph_operations.py
new file mode 100644
index 0000000..72ee782
--- /dev/null
+++ b/cdesf2/utils/graph_operations.py
@@ -0,0 +1,129 @@
+import networkx as nx
+from ..data_structures.case import Case
+from .distances import calculate_case_time_distances
+
+
+def normalize_graph(graph: nx.DiGraph) -> nx.DiGraph:
+    """
+    Time and weight normalization for each edge in the graph.
+    Time normalization is the mean time of an edge.
+    Trace normalization is based on the graph weights
+
+    Parameters
+    --------------------------------------
+    graph: nx.DiGraph,
+        Graph to be normalized
+    Returns
+    --------------------------------------
+    graph: nx.DiGraph,
+        Normalized graph
+    """
+    edges = graph.edges(data=True)
+    attributes: "list[dict[str, float]]" = [attributes for _, _, attributes in edges]
+
+    weights = map(lambda attribute: attribute.get("weight"), attributes)
+    max_weight = max(weights)
+
+    for data in attributes:
+        edge_weight = data.get("weight")
+        edge_time = data.get("time")
+
+        data["weight_normalized"] = edge_weight / max_weight
+        data["time_normalized"] = edge_time / edge_weight
+
+    return graph
+
+
+def initialize_graph(
+    case_list: "list[Case]", additional_attributes: "list[str]" = []
+) -> nx.DiGraph:
+    """
+    Initialize a graph based on the weights and time differences from a list of cases
+
+    Parameters
+    --------------------------------------
+    case_list: list[Case]
+        List of cases used to initialize the graph
+
+    Returns
+    --------------------------------------
+    graph: nx.DiGraph,
+        Initialized graph
+    """
+    graph = nx.DiGraph()
+
+    for case in case_list:
+        trace = case.get_trace()
+        time_differences = calculate_case_time_distances(case)
+
+        # TODO: This code can be optimized heavily to not have this many for-loops.
+        for index, activity in enumerate(trace):
+            if activity not in graph.nodes:
+                attributes = {}
+                for attribute_name in additional_attributes:
+                    attributes[attribute_name] = [
+                        case.get_attribute(attribute_name)[index]
+                    ]
+
+                graph.add_node(activity, **attributes)
+            else:
+                for attribute_name in additional_attributes:
+                    graph.nodes[activity][attribute_name].append(
+                        case.get_attribute(attribute_name)[index]
+                    )
+
+        for trace_index in range(len(trace) - 1):
+            edge = (trace[trace_index], trace[trace_index + 1])
+
+            if edge not in graph.edges:
+                graph.add_edge(*edge, weight=1, time=time_differences[trace_index])
+            else:
+                graph[edge[0]][edge[1]]["weight"] += 1
+                graph[edge[0]][edge[1]]["time"] += time_differences[trace_index]
+
+    return normalize_graph(graph)
+
+
+def merge_graphs(
+    process_model_graph: nx.DiGraph, check_point_graph: nx.DiGraph
+) -> nx.DiGraph:
+    """
+    Receives two graphs and merge them.
+    The first is the PMG (process model graph) and the second it the CP (check point) graph.
+    The PMG, then, incorporates the second graph.
+    Before the merge, 5% of the PMG's weight is decayed.
+
+    Parameters
+    --------------------------------------
+    process_model_graph: nx.DiGraph,
+        PMG graph
+    check_point_graph: nx.DiGraph,
+        CP graph
+    Returns
+    --------------------------------------
+    process_model_graph: nx.DiGraph,
+        PMG after merge
+    """
+    for node1, node2, data in process_model_graph.edges(data=True):
+        data["weight"] *= 0.95
+
+    for node1, node2, data in check_point_graph.edges(data=True):
+        path = (node1, node2)
+        if path in process_model_graph.edges:
+            process_model_graph[node1][node2]["weight"] += data["weight"]
+            process_model_graph[node1][node2]["time"] += data["time"]
+        else:
+            process_model_graph.add_edge(
+                *path, weight=data["weight"], time=data["time"]
+            )
+
+    for activity, data in check_point_graph.nodes(data=True):
+        if activity not in process_model_graph.nodes:
+            process_model_graph.add_node(activity, **data)
+        else:
+            for attribute in process_model_graph.nodes[activity]:
+                process_model_graph.nodes[activity][attribute].extend(
+                    check_point_graph.nodes[activity][attribute]
+                )
+
+    return normalize_graph(process_model_graph)
diff --git a/cdesf2/utils/metrics.py b/cdesf2/utils/metrics.py
index 7f10749..5f24558 100644
--- a/cdesf2/utils/metrics.py
+++ b/cdesf2/utils/metrics.py
@@ -14,7 +14,11 @@ class Metrics:
     and writes the results into files periodically (check points)
     """
 
-    def __init__(self, file_name: str):
+    case_columns: "list[str]"
+    cluster_columns: "list[str]"
+    additional_attributes: "list[str]"
+
+    def __init__(self, file_name: str, additional_attributes: "list[str]" = []):
         """
         Creates the paths for the outputs and initializes the metrics attributes
 
@@ -26,12 +30,13 @@ def __init__(self, file_name: str):
         self.case_metrics = []
         self.cluster_metrics = []
         self.file_name = file_name
+        self.additional_attributes = additional_attributes
 
-        self.path_to_pmg_metrics = f'metrics/{file_name}_process_model_graphs'
-        self.path_to_pmg_vis = f'visualization/{file_name}_process_model_graphs'
-        self.path_to_drifts = 'visualization/drifts'
-        self.path_to_case_metrics = 'metrics/case_metrics'
-        self.path_to_cluster_metrics = 'metrics/cluster_metrics'
+        self.path_to_pmg_metrics = f"output/metrics/{file_name}_process_model_graphs"
+        self.path_to_pmg_vis = f"output/visualization/{file_name}_process_model_graphs"
+        self.path_to_drifts = "output/visualization/drifts"
+        self.path_to_case_metrics = "output/metrics/case_metrics"
+        self.path_to_cluster_metrics = "output/metrics/cluster_metrics"
         try:
             makedirs(self.path_to_pmg_metrics, exist_ok=True)
             makedirs(self.path_to_pmg_vis, exist_ok=True)
@@ -39,16 +44,59 @@ def __init__(self, file_name: str):
             makedirs(self.path_to_case_metrics, exist_ok=True)
             makedirs(self.path_to_cluster_metrics, exist_ok=True)
 
-            pd.DataFrame(columns=['stream_index', 'timestamp', 'check point', 'case',
-                                  'graph distance', 'time distance', 'label']) \
-                .to_csv(f'{self.path_to_case_metrics}/{file_name}.csv', index=False)
-            pd.DataFrame(columns=['stream_index', 'timestamp', 'check point', 'cluster id',
-                                  'x', 'y', 'radius', 'weight', 'cluster type']) \
-                .to_csv(f'{self.path_to_cluster_metrics}/{file_name}.csv', index=False)
+            self.case_columns, self.cluster_columns = self.generate_column_names()
+
+            pd.DataFrame(columns=self.case_columns).to_csv(
+                f"{self.path_to_case_metrics}/{file_name}.csv", index=False
+            )
+            pd.DataFrame(columns=self.cluster_columns).to_csv(
+                f"{self.path_to_cluster_metrics}/{file_name}.csv", index=False
+            )
         except Exception as e:
             print(e)
 
-    def compute_case_metrics(self, event_index: int, timestamp: datetime, cp_count: int, case: Case, label: bool) -> None:
+    def generate_column_names(self) -> Tuple["list[str]", "list[str]"]:
+        case_columns = []
+        cluster_columns = []
+
+        case_columns += [
+            "stream_index",
+            "timestamp",
+            "check point",
+            "case",
+            "graph distance",
+            "time distance",
+        ]
+        case_columns += [
+            f"{attribute_name} distance"
+            for attribute_name in self.additional_attributes
+        ]
+        case_columns += ["label"]
+
+        cluster_columns += [
+            "stream_index",
+            "timestamp",
+            "check point",
+            "cluster id",
+            "graph coordinate",
+            "time coordinate",
+        ]
+        cluster_columns += [
+            f"{attribute_name} coordinate"
+            for attribute_name in self.additional_attributes
+        ]
+        cluster_columns += ["radius", "weight", "cluster type"]
+
+        return case_columns, cluster_columns
+
+    def compute_case_metrics(
+        self,
+        event_index: int,
+        timestamp: datetime,
+        cp_count: int,
+        case: Case,
+        label: bool,
+    ) -> None:
         """
         Generates case metrics and saves them in the self.case_metrics attribute.
 
@@ -65,35 +113,75 @@ def compute_case_metrics(self, event_index: int, timestamp: datetime, cp_count:
         label: bool
             Controls if case is normal or anomalous
         """
-        label_str = 'anomalous'
+        label_str = "anomalous"
         if label:
-            label_str = 'normal'
+            label_str = "normal"
+
+        data = [
+            event_index,
+            timestamp,
+            cp_count,
+            case.id,
+            case.distances.get("graph"),
+            case.distances.get("time"),
+        ]
 
-        self.case_metrics.append([event_index, timestamp, cp_count, case.id,
-                                  case.graph_distance, case.time_distance, label_str])
+        for attribute_name in self.additional_attributes:
+            data.append(case.distances.get(attribute_name))
+
+        # `label` is always the last column
+        data.append(label_str)
+
+        self.case_metrics.append(data)
 
     def save_case_metrics_on_check_point(self) -> None:
         """
         Saves the case metrics into a file according to a set path and name.
         Also releases the case_metrics attribute
         """
-        pd.read_csv(f'{self.path_to_case_metrics}/{self.file_name}.csv')\
-            .append(pd.DataFrame(self.case_metrics,
-                                 columns=['stream_index', 'timestamp', 'check point', 'case',
-                                          'graph distance', 'time distance', 'label']))\
-            .to_csv(f'{self.path_to_case_metrics}/{self.file_name}.csv', index=False)
-        self.case_metrics = []
+        cm_path = f"{self.path_to_case_metrics}/{self.file_name}.csv"
+        pd.read_csv(cm_path).append(
+            pd.DataFrame(self.case_metrics, columns=self.case_columns)
+        ).to_csv(cm_path, index=False)
+        self.case_metrics.clear()
 
-    def compute_cluster_metrics_helper(self, event_index: int, timestamp: datetime, cp_count: int,
-                                       cluster: Cluster, cluster_type: str) -> None:
+    def compute_cluster_metrics_helper(
+        self,
+        event_index: int,
+        timestamp: datetime,
+        cp_count: int,
+        cluster: Cluster,
+        cluster_type: str,
+    ) -> None:
         """
         Helper function to save metrics into cluster_metrics attribute.
         """
-        self.cluster_metrics.append([event_index, timestamp, cp_count, cluster.id, cluster.centroid[0],
-                                     cluster.centroid[1], cluster.radius, cluster.weight, cluster_type])
+        data = [
+            event_index,
+            timestamp,
+            cp_count,
+            cluster.id,
+        ]
+
+        for dimension in cluster.centroid:
+            data.append(dimension)
 
-    def compute_cluster_metrics(self, event_index: int, timestamp: datetime, cp_count: int,
-                                normal_clusters: Tuple[List[List], List[List]], o_clusters: List[Cluster]) -> None:
+        data += [
+            cluster.radius,
+            cluster.weight,
+            cluster_type,
+        ]
+
+        self.cluster_metrics.append(data)
+
+    def compute_cluster_metrics(
+        self,
+        event_index: int,
+        timestamp: datetime,
+        cp_count: int,
+        normal_clusters: Tuple[List[List], List[List]],
+        o_clusters: List[Cluster],
+    ) -> None:
         """
         Generates cluster metrics and saves them in the self._cluster_metrics attribute.
 
@@ -113,28 +201,35 @@ def compute_cluster_metrics(self, event_index: int, timestamp: datetime, cp_coun
         c_clusters, p_clusters = normal_clusters[0], normal_clusters[1]
         for group in c_clusters:
             for cluster in group:
-                self.compute_cluster_metrics_helper(event_index, timestamp, cp_count, cluster, 'core micro-cluster')
+                self.compute_cluster_metrics_helper(
+                    event_index, timestamp, cp_count, cluster, "core micro-cluster"
+                )
 
         for group in p_clusters:
             for cluster in group:
-                self.compute_cluster_metrics_helper(event_index, timestamp, cp_count, cluster, 'potential micro-cluster')
+                self.compute_cluster_metrics_helper(
+                    event_index, timestamp, cp_count, cluster, "potential micro-cluster"
+                )
 
         for cluster in o_clusters:
-            self.compute_cluster_metrics_helper(event_index, timestamp, cp_count, cluster, 'outlier micro-cluster')
+            self.compute_cluster_metrics_helper(
+                event_index, timestamp, cp_count, cluster, "outlier micro-cluster"
+            )
 
     def save_cluster_metrics_on_check_point(self) -> None:
         """
         Saves the cluster metrics into a file according to a set path and name.
         Also releases the cluster_metrics attribute
         """
-        pd.read_csv(f'{self.path_to_cluster_metrics}/{self.file_name}.csv')\
-            .append(pd.DataFrame(self.cluster_metrics,
-                                 columns=['stream_index', 'timestamp', 'check point', 'cluster id',
-                                          'x', 'y', 'radius', 'weight', 'cluster type']))\
-            .to_csv(f'{self.path_to_cluster_metrics}/{self.file_name}.csv', index=False)
-        self.cluster_metrics = []
+        cm_path = f"{self.path_to_cluster_metrics}/{self.file_name}.csv"
+        pd.read_csv(cm_path).append(
+            pd.DataFrame(self.cluster_metrics, columns=self.cluster_columns)
+        ).to_csv(cm_path, index=False)
+        self.cluster_metrics.clear()
 
-    def save_pmg_on_check_point(self, process_model_graph: nx.DiGraph, cp_count: int) -> None:
+    def save_pmg_on_check_point(
+        self, process_model_graph: nx.DiGraph, cp_count: int
+    ) -> None:
         """
         Saves the Process Model Graph at all check points in a JSON file and plots
 
@@ -146,9 +241,18 @@ def save_pmg_on_check_point(self, process_model_graph: nx.DiGraph, cp_count: int
             Current check point
         """
         try:
-            with open(f'{self.path_to_pmg_metrics}/process_model_graph_{cp_count}.json', 'w') as file:
-                file.write(json.dumps(nx.readwrite.json_graph.node_link_data(process_model_graph)))
+            with open(
+                f"{self.path_to_pmg_metrics}/process_model_graph_{cp_count}.json", "w"
+            ) as file:
+                file.write(
+                    json.dumps(
+                        nx.readwrite.json_graph.node_link_data(process_model_graph)
+                    )
+                )
 
-            save_graphviz(process_model_graph, f'{self.path_to_pmg_vis}/process_model_graph_{cp_count}')
+            save_graphviz(
+                process_model_graph,
+                f"{self.path_to_pmg_vis}/process_model_graph_{cp_count}",
+            )
         except Exception as e:
             print(e)
diff --git a/cdesf2/utils/reading.py b/cdesf2/utils/reading.py
index e42a982..e579508 100644
--- a/cdesf2/utils/reading.py
+++ b/cdesf2/utils/reading.py
@@ -1,24 +1,77 @@
 import pandas as pd
 import numpy as np
+from pm4py.objects.conversion.log import converter as log_converter
+from pm4py.util import constants
+from pm4py.objects.log import obj
+from pm4py.objects.log.util import dataframe_utils
+from pm4py.objects.log.importer.xes import importer as xes_importer
 
 
-def read_csv(path: str) -> np.ndarray:
+def read_csv(path: str) -> obj.EventStream:
     """
-    Reads the .csv file, extracts the events and preprocesses data for CDESF
+    Reads the .csv file, extracts the events and preprocesses data for CDESF.
 
     Parameters
     --------------------------------------
     path: str
         File path and name
+
     Returns
     --------------------------------------
-    An array of events
+    An event stream
     """
-    event_stream = pd.read_csv(path,
-                               usecols=['case', 'activity', 'timestamp'],
-                               parse_dates=['timestamp'],
-                               infer_datetime_format=True,
-                               memory_map=True)
-    event_stream['activity'].replace(' ', '_', regex=True, inplace=True)
-    return event_stream.values
 
+    log_csv = pd.read_csv(path, sep=",")
+
+    # Mergesort is the only stable sorting algorithm.
+    log_csv = log_csv.sort_values("timestamp", kind="mergesort")
+
+    # Manually transform timestamps to datetimes.
+    log_csv["timestamp"] = pd.to_datetime(log_csv["timestamp"])
+
+    # Standardize column names across CSV and XES files.
+    log_csv.rename(
+        columns={
+            "case": "case:concept:name",
+            "activity": "concept:name",
+            "timestamp": "time:timestamp",
+        },
+        inplace=True,
+    )
+
+    event_stream = log_converter.apply(
+        log_csv, variant=log_converter.Variants.TO_EVENT_STREAM
+    )
+
+    return event_stream
+
+
+def read_xes(path: str) -> obj.EventStream:
+    """
+    Reads the .xes file, extracts the events and preprocesses data for CDESF.
+
+    Parameters
+    --------------------------------------
+    path: str
+        File path and name
+
+    Returns
+    --------------------------------------
+    An event stream
+    """
+
+    variant = xes_importer.Variants.ITERPARSE
+    parameters = {variant.value.Parameters.TIMESTAMP_SORT: True}
+    log_xes = xes_importer.apply(path, variant=variant, parameters=parameters)
+
+    event_stream = log_converter.apply(
+        log_xes,
+        variant=log_converter.Variants.TO_EVENT_STREAM,
+        parameters={
+            constants.PARAMETER_CONSTANT_CASEID_KEY: "case:concept:name",
+            constants.PARAMETER_CONSTANT_ACTIVITY_KEY: "concept:name",
+            constants.PARAMETER_CONSTANT_TIMESTAMP_KEY: "time:timestamp",
+        },
+    )
+
+    return event_stream
diff --git a/cdesf2/utils/time_difference.py b/cdesf2/utils/time_difference.py
deleted file mode 100644
index 382e62d..0000000
--- a/cdesf2/utils/time_difference.py
+++ /dev/null
@@ -1,48 +0,0 @@
-from datetime import datetime
-from typing import List
-
-
-def case_time_difference(case_timestamps: List[datetime]) -> List[float]:
-    """
-    Converts a list of case timestamps to timedeltas
-
-    Parameters
-    --------------------------------------
-    case_timestamps: List[datetime],
-        List of case activities datetimes
-    Returns
-    --------------------------------------
-    time_delta: List[float],
-        List of float time difference in seconds
-    """
-    if len(case_timestamps) <= 1:
-        return [0]
-
-    time_delta = []
-    for i in range(len(case_timestamps)-1):
-        time_delta.append((case_timestamps[i+1]-case_timestamps[i]).total_seconds())
-
-    return time_delta
-
-
-def time_difference(cases_timestamps: List[List[datetime]]) -> List[List[float]]:
-    """
-    Converts a list of a list of timestamps to a list of a list of timedeltas (in seconds)
-
-    Parameters
-    --------------------------------------
-    cases_timestamps: List[List[datetime]],
-        All cases timestamps
-    Returns
-    --------------------------------------
-    case_time_difference: List[List[float]],
-        All cases timedeltas
-    """
-    if len(cases_timestamps) == 0:
-        return [[0]]
-
-    cases_time_difference = []
-    for case_timestamp in cases_timestamps:
-        cases_time_difference.append(case_time_difference(case_timestamp))
-
-    return cases_time_difference
diff --git a/cdesf2/visualization/feature_space.py b/cdesf2/visualization/feature_space.py
index 70ea5d3..ea2d8d2 100644
--- a/cdesf2/visualization/feature_space.py
+++ b/cdesf2/visualization/feature_space.py
@@ -42,7 +42,7 @@ def feature_space(process_name: str,
     """
     c_clusters, p_clusters = normal_clusters[0], normal_clusters[1]
 
-    plt.figure(figsize=(10, 10), dpi=400)
+    plt.figure(figsize=(10, 10))
     ax = plt.subplot(111)
 
     for group in p_clusters:
diff --git a/cdesf2/visualization/graphs.py b/cdesf2/visualization/graphs.py
index cf7d6ea..ee35cab 100644
--- a/cdesf2/visualization/graphs.py
+++ b/cdesf2/visualization/graphs.py
@@ -1,8 +1,10 @@
+import os
+
 import matplotlib.pyplot as plt
 import networkx as nx
 
 
-def save_graph(graph: nx.DiGraph, path: str) -> None:
+def save_graph(graph: nx.DiGraph, save_path: str) -> None:
     """
     Saves the graph using networkx drawing
 
@@ -10,7 +12,7 @@ def save_graph(graph: nx.DiGraph, path: str) -> None:
     --------------------------------------
     graph: nx.DiGraph
         Graph to be saved
-    path: str
+    save_path: str
         Path and name of the file to be saved
     """
     plt.figure(figsize=(20, 20))
@@ -21,13 +23,17 @@ def save_graph(graph: nx.DiGraph, path: str) -> None:
     nx.draw_networkx_nodes(graph, pos, node_size=[len(v) * 1000 for v in graph.nodes()])
     nx.draw_networkx_labels(graph, pos, font_size=20, font_family='sans-serif')
 
+    dirname = os.path.dirname(save_path)
+    if not os.path.exists(dirname):
+        os.makedirs(dirname)
+
     plt.axis('off')
     plt.tight_layout()
-    plt.savefig(path)
+    plt.savefig(save_path)
     plt.close()
 
 
-def save_graphviz(graph: nx.DiGraph, path: str) -> None:
+def save_graphviz(graph: nx.DiGraph, save_path: str) -> None:
     """
     Converts the networkx graph to a graphviz format and saves accordingly
 
@@ -35,18 +41,21 @@ def save_graphviz(graph: nx.DiGraph, path: str) -> None:
     --------------------------------------
     graph: nx.DiGraph
         Graph to be saved
-    path: str
+    save_path: str
         Path and name of the file to be saved
     """
-    try:
-        graph = nx.nx_agraph.to_agraph(graph)
-        graph.node_attr.update()
-        # graph.node_attr.update(style='filled', fillcolor='#40e0d0')
-        graph.graph_attr.update(bgcolor='transparent')
-        graph.layout('dot')
-        graph.draw(f'{path}.png')
-
-        # graph = nx.drawing.nx_pydot.to_pydot(graph)
-        # graph.write_png(f'{path}.png')
-    except Exception:
-        save_graph(graph, path)
\ No newline at end of file
+    graph = nx.nx_agraph.to_agraph(graph)
+    graph.node_attr.update()
+    # graph.node_attr.update(style='filled', fillcolor='#40e0d0')
+    graph.graph_attr.update(bgcolor='transparent')
+    graph.layout('dot')
+
+    dirname = os.path.dirname(save_path)
+    if not os.path.exists(dirname):
+        os.makedirs(dirname)
+
+    graph.draw(save_path)
+ 
+    # TODO: Is this still needed?
+    # graph = nx.drawing.nx_pydot.to_pydot(graph)
+    # graph.write_png(f'{path}.png')
diff --git a/demo/Detail_Supplier_IW-Frozen_small.csv b/demo/Detail_Supplier_IW-Frozen_small.csv
new file mode 100644
index 0000000..b76b8a8
--- /dev/null
+++ b/demo/Detail_Supplier_IW-Frozen_small.csv
@@ -0,0 +1,102 @@
+case,activity,timestamp
+Case 496,Process Creation,2010/09/21 09:00:13.000
+Case 12186,Process Creation,2010/09/21 09:00:21.000
+Case 496,EngSupplierDesign Lead,2010/09/21 09:00:56.000
+Case 12186,EngSupplierDesign Lead,2010/09/21 10:00:00.000
+Case 6314,Process Creation,2010/09/21 10:00:03.000
+Case 13112,Process Creation,2010/09/21 10:00:59.000
+Case 4395,Process Creation,2010/09/21 11:00:41.000
+Case 18078,Process Creation,2010/09/21 12:00:15.000
+Case 11697,Process Creation,2010/09/21 12:00:17.000
+Case 21154,Process Creation,2010/09/21 12:00:30.000
+Case 9233,Process Creation,2010/09/21 12:00:43.000
+Case 6314,EngSupplierDesign Lead,2010/09/21 15:00:07.000
+Case 497,Process Creation,2010/09/21 15:00:32.000
+Case 12187,Process Creation,2010/09/21 15:00:37.000
+Case 12187,EngSupplierDesign Lead,2010/09/21 15:00:47.000
+Case 497,EngSupplierDesign Lead,2010/09/21 15:00:48.000
+Case 4395,EngSupplierDesign Lead,2010/09/21 15:00:50.000
+Case 9233,EngSupplierDesign Lead,2010/09/21 15:00:50.000
+Case 21154,EngSupplierDesign Lead,2010/09/21 15:00:50.000
+Case 13112,EngSupplierDesign Lead,2010/09/21 15:00:51.000
+Case 13112,WP Lead,2010/09/22 10:00:43.000
+Case 4395,WP Lead,2010/09/22 10:00:44.000
+Case 9233,WP Lead,2010/09/22 10:00:45.000
+Case 21154,WP Lead,2010/09/22 10:00:45.000
+Case 497,WP Lead,2010/09/22 10:00:48.000
+Case 6314,WP Lead,2010/09/22 10:00:48.000
+Case 12187,WP Lead,2010/09/22 10:00:48.000
+Case 13113,Process Creation,2010/09/22 16:00:04.000
+Case 13113,EngSupplierDesign Lead,2010/09/22 16:00:06.000
+Case 498,Process Creation,2010/09/22 16:00:14.000
+Case 498,EngSupplierDesign Lead,2010/09/22 16:00:16.000
+Case 12188,Process Creation,2010/09/22 16:00:19.000
+Case 6315,Process Creation,2010/09/22 16:00:26.000
+Case 6315,EngSupplierDesign Lead,2010/09/22 16:00:29.000
+Case 4396,Process Creation,2010/09/22 16:00:34.000
+Case 12188,EngSupplierDesign Lead,2010/09/22 16:00:35.000
+Case 4396,EngSupplierDesign Lead,2010/09/22 16:00:36.000
+Case 21155,Process Creation,2010/09/22 16:00:38.000
+Case 21155,EngSupplierDesign Lead,2010/09/22 16:00:39.000
+Case 9234,Process Creation,2010/09/22 16:00:42.000
+Case 9234,EngSupplierDesign Lead,2010/09/22 16:00:43.000
+Case 498,WP Lead,2010/09/23 08:00:48.000
+Case 12188,WP Lead,2010/09/23 08:00:56.000
+Case 498,CRA,2010/09/23 10:00:24.000
+Case 12188,CRA,2010/09/23 10:00:26.000
+Case 11697,EngSupplierDesign Lead,2010/09/23 11:00:46.000
+Case 18078,EngSupplierDesign Lead,2010/09/23 11:00:46.000
+Case 6391,Process Creation,2010/09/23 17:00:57.000
+Case 18,Process Creation,2010/09/24 10:00:18.000
+Case 3615,Process Creation,2010/09/24 10:00:21.000
+Case 2524,Process Creation,2010/09/24 10:00:22.000
+Case 11961,Process Creation,2010/09/24 10:00:24.000
+Case 11961,EngSupplierDesign Lead,2010/09/24 10:00:36.000
+Case 20599,Process Creation,2010/09/24 10:00:36.000
+Case 2524,EngSupplierDesign Lead,2010/09/24 10:00:37.000
+Case 20599,EngSupplierDesign Lead,2010/09/24 10:00:37.000
+Case 3615,EngSupplierDesign Lead,2010/09/24 10:00:38.000
+Case 18,EngSupplierDesign Lead,2010/09/24 10:00:39.000
+Case 19904,Process Creation,2010/09/24 10:00:47.000
+Case 19905,Process Creation,2010/09/24 12:00:35.000
+Case 1747,Process Creation,2010/09/24 12:00:37.000
+Case 11829,Process Creation,2010/09/24 12:00:49.000
+Case 21569,Process Creation,2010/09/24 13:00:29.000
+Case 1383,Process Creation,2010/09/27 16:00:50.000
+Case 1383,EngSupplierDesign Lead,2010/09/27 16:00:54.000
+Case 6391,EngSupplierDesign Lead,2010/09/27 16:00:56.000
+Case 18079,Process Creation,2010/09/28 12:00:19.000
+Case 11698,Process Creation,2010/09/28 12:00:21.000
+Case 11698,EngSupplierDesign Lead,2010/09/28 12:00:22.000
+Case 18079,EngSupplierDesign Lead,2010/09/28 12:00:25.000
+Case 21570,Process Creation,2010/09/28 17:00:07.000
+Case 3454,Process Creation,2010/09/28 17:00:09.000
+Case 8968,Process Creation,2010/09/28 17:00:18.000
+Case 8968,EngSupplierDesign Lead,2010/09/28 17:00:25.000
+Case 3454,EngSupplierDesign Lead,2010/09/28 17:00:26.000
+Case 21570,EngSupplierDesign Lead,2010/09/28 17:00:26.000
+Case 1735,Process Creation,2010/09/28 17:00:32.000
+Case 7687,Process Creation,2010/09/28 17:00:39.000
+Case 7687,EngSupplierDesign Lead,2010/09/28 17:00:40.000
+Case 1735,EngSupplierDesign Lead,2010/09/28 17:00:41.000
+Case 6392,Process Creation,2010/09/29 11:00:19.000
+Case 6392,EngSupplierDesign Lead,2010/09/29 11:00:21.000
+Case 1384,Process Creation,2010/09/29 12:00:10.000
+Case 1384,EngSupplierDesign Lead,2010/09/29 12:00:11.000
+Case 472,Process Creation,2010/09/29 14:00:33.000
+Case 472,EngSupplierDesign Lead,2010/09/29 14:00:34.000
+Case 17925,Process Creation,2010/09/29 14:00:39.000
+Case 18080,Process Creation,2010/10/05 17:00:18.000
+Case 11699,Process Creation,2010/10/05 17:00:25.000
+Case 11699,EngSupplierDesign Lead,2010/10/07 11:00:37.000
+Case 18080,EngSupplierDesign Lead,2010/10/07 11:00:37.000
+Case 21571,Process Creation,2010/10/07 17:00:17.000
+Case 3455,Process Creation,2010/10/07 17:00:19.000
+Case 8969,Process Creation,2010/10/07 17:00:21.000
+Case 15350,Process Creation,2010/10/08 09:00:35.000
+Case 18705,Process Creation,2010/10/08 09:00:50.000
+Case 22091,Process Creation,2010/10/08 09:00:55.000
+Case 3455,EngSupplierDesign Lead,2010/10/08 11:00:36.000
+Case 8969,EngSupplierDesign Lead,2010/10/08 11:00:37.000
+Case 21571,EngSupplierDesign Lead,2010/10/08 11:00:37.000
+Case 11700,Process Creation,2010/10/12 10:00:51.000
diff --git a/demo/running-example.xes b/demo/running-example.xes
new file mode 100644
index 0000000..3b00e25
--- /dev/null
+++ b/demo/running-example.xes
@@ -0,0 +1,380 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<log>
+  <string key="creator" value="Fluxicon Nitro"/>
+  <extension name="Concept" prefix="concept" uri="http://code.deckfour.org/xes/concept.xesext"/>
+  <extension name="Time" prefix="time" uri="http://code.deckfour.org/xes/time.xesext"/>
+  <extension name="Organizational" prefix="org" uri="http://code.deckfour.org/xes/org.xesext"/>
+  <global scope="trace">
+    <string key="concept:name" value="name"/>
+  </global>
+  <global scope="event">
+    <string key="concept:name" value="name"/>
+    <string key="org:resource" value="resource"/>
+    <date key="time:timestamp" value="2011-04-13T14:02:31.199+02:00"/>
+    <string key="Activity" value="string"/>
+    <string key="Resource" value="string"/>
+    <string key="Costs" value="string"/>
+  </global>
+  <classifier name="Activity" keys="Activity"/>
+  <classifier name="activity classifier" keys="Activity"/>
+  <trace>
+    <string key="concept:name" value="3"/>
+    <string key="creator" value="Fluxicon Nitro"/>
+    <event>
+      <string key="concept:name" value="register request"/>
+      <string key="org:resource" value="Pete"/>
+      <date key="time:timestamp" value="2010-12-30T14:32:00.000+01:00"/>
+      <string key="Activity" value="register request"/>
+      <string key="Resource" value="Pete"/>
+      <string key="Costs" value="50"/>
+    </event>
+    <event>
+      <string key="concept:name" value="examine casually"/>
+      <string key="org:resource" value="Mike"/>
+      <date key="time:timestamp" value="2010-12-30T15:06:00.000+01:00"/>
+      <string key="Activity" value="examine casually"/>
+      <string key="Resource" value="Mike"/>
+      <string key="Costs" value="400"/>
+    </event>
+    <event>
+      <string key="concept:name" value="check ticket"/>
+      <string key="org:resource" value="Ellen"/>
+      <date key="time:timestamp" value="2010-12-30T16:34:00.000+01:00"/>
+      <string key="Activity" value="check ticket"/>
+      <string key="Resource" value="Ellen"/>
+      <string key="Costs" value="100"/>
+    </event>
+    <event>
+      <string key="concept:name" value="decide"/>
+      <string key="org:resource" value="Sara"/>
+      <date key="time:timestamp" value="2011-01-06T09:18:00.000+01:00"/>
+      <string key="Activity" value="decide"/>
+      <string key="Resource" value="Sara"/>
+      <string key="Costs" value="200"/>
+    </event>
+    <event>
+      <string key="concept:name" value="reinitiate request"/>
+      <string key="org:resource" value="Sara"/>
+      <date key="time:timestamp" value="2011-01-06T12:18:00.000+01:00"/>
+      <string key="Activity" value="reinitiate request"/>
+      <string key="Resource" value="Sara"/>
+      <string key="Costs" value="200"/>
+    </event>
+    <event>
+      <string key="concept:name" value="examine thoroughly"/>
+      <string key="org:resource" value="Sean"/>
+      <date key="time:timestamp" value="2011-01-06T13:06:00.000+01:00"/>
+      <string key="Activity" value="examine thoroughly"/>
+      <string key="Resource" value="Sean"/>
+      <string key="Costs" value="400"/>
+    </event>
+    <event>
+      <string key="concept:name" value="check ticket"/>
+      <string key="org:resource" value="Pete"/>
+      <date key="time:timestamp" value="2011-01-08T11:43:00.000+01:00"/>
+      <string key="Activity" value="check ticket"/>
+      <string key="Resource" value="Pete"/>
+      <string key="Costs" value="100"/>
+    </event>
+    <event>
+      <string key="concept:name" value="decide"/>
+      <string key="org:resource" value="Sara"/>
+      <date key="time:timestamp" value="2011-01-09T09:55:00.000+01:00"/>
+      <string key="Activity" value="decide"/>
+      <string key="Resource" value="Sara"/>
+      <string key="Costs" value="200"/>
+    </event>
+    <event>
+      <string key="concept:name" value="pay compensation"/>
+      <string key="org:resource" value="Ellen"/>
+      <date key="time:timestamp" value="2011-01-15T10:45:00.000+01:00"/>
+      <string key="Activity" value="pay compensation"/>
+      <string key="Resource" value="Ellen"/>
+      <string key="Costs" value="200"/>
+    </event>
+  </trace>
+  <trace>
+    <string key="concept:name" value="2"/>
+    <string key="creator" value="Fluxicon Nitro"/>
+    <event>
+      <string key="concept:name" value="register request"/>
+      <string key="org:resource" value="Mike"/>
+      <date key="time:timestamp" value="2010-12-30T11:32:00.000+01:00"/>
+      <string key="Activity" value="register request"/>
+      <string key="Resource" value="Mike"/>
+      <string key="Costs" value="50"/>
+    </event>
+    <event>
+      <string key="concept:name" value="check ticket"/>
+      <string key="org:resource" value="Mike"/>
+      <date key="time:timestamp" value="2010-12-30T12:12:00.000+01:00"/>
+      <string key="Activity" value="check ticket"/>
+      <string key="Resource" value="Mike"/>
+      <string key="Costs" value="100"/>
+    </event>
+    <event>
+      <string key="concept:name" value="examine casually"/>
+      <string key="org:resource" value="Sean"/>
+      <date key="time:timestamp" value="2010-12-30T14:16:00.000+01:00"/>
+      <string key="Activity" value="examine casually"/>
+      <string key="Resource" value="Sean"/>
+      <string key="Costs" value="400"/>
+    </event>
+    <event>
+      <string key="concept:name" value="decide"/>
+      <string key="org:resource" value="Sara"/>
+      <date key="time:timestamp" value="2011-01-05T11:22:00.000+01:00"/>
+      <string key="Activity" value="decide"/>
+      <string key="Resource" value="Sara"/>
+      <string key="Costs" value="200"/>
+    </event>
+    <event>
+      <string key="concept:name" value="pay compensation"/>
+      <string key="org:resource" value="Ellen"/>
+      <date key="time:timestamp" value="2011-01-08T12:05:00.000+01:00"/>
+      <string key="Activity" value="pay compensation"/>
+      <string key="Resource" value="Ellen"/>
+      <string key="Costs" value="200"/>
+    </event>
+  </trace>
+  <trace>
+    <string key="concept:name" value="1"/>
+    <string key="creator" value="Fluxicon Nitro"/>
+    <event>
+      <string key="concept:name" value="register request"/>
+      <string key="org:resource" value="Pete"/>
+      <date key="time:timestamp" value="2010-12-30T11:02:00.000+01:00"/>
+      <string key="Activity" value="register request"/>
+      <string key="Resource" value="Pete"/>
+      <string key="Costs" value="50"/>
+    </event>
+    <event>
+      <string key="concept:name" value="examine thoroughly"/>
+      <string key="org:resource" value="Sue"/>
+      <date key="time:timestamp" value="2010-12-31T10:06:00.000+01:00"/>
+      <string key="Activity" value="examine thoroughly"/>
+      <string key="Resource" value="Sue"/>
+      <string key="Costs" value="400"/>
+    </event>
+    <event>
+      <string key="concept:name" value="check ticket"/>
+      <string key="org:resource" value="Mike"/>
+      <date key="time:timestamp" value="2011-01-05T15:12:00.000+01:00"/>
+      <string key="Activity" value="check ticket"/>
+      <string key="Resource" value="Mike"/>
+      <string key="Costs" value="100"/>
+    </event>
+    <event>
+      <string key="concept:name" value="decide"/>
+      <string key="org:resource" value="Sara"/>
+      <date key="time:timestamp" value="2011-01-06T11:18:00.000+01:00"/>
+      <string key="Activity" value="decide"/>
+      <string key="Resource" value="Sara"/>
+      <string key="Costs" value="200"/>
+    </event>
+    <event>
+      <string key="concept:name" value="reject request"/>
+      <string key="org:resource" value="Pete"/>
+      <date key="time:timestamp" value="2011-01-07T14:24:00.000+01:00"/>
+      <string key="Activity" value="reject request"/>
+      <string key="Resource" value="Pete"/>
+      <string key="Costs" value="200"/>
+    </event>
+  </trace>
+  <trace>
+    <string key="concept:name" value="6"/>
+    <string key="creator" value="Fluxicon Nitro"/>
+    <event>
+      <string key="concept:name" value="register request"/>
+      <string key="org:resource" value="Mike"/>
+      <date key="time:timestamp" value="2011-01-06T15:02:00.000+01:00"/>
+      <string key="Activity" value="register request"/>
+      <string key="Resource" value="Mike"/>
+      <string key="Costs" value="50"/>
+    </event>
+    <event>
+      <string key="concept:name" value="examine casually"/>
+      <string key="org:resource" value="Ellen"/>
+      <date key="time:timestamp" value="2011-01-06T16:06:00.000+01:00"/>
+      <string key="Activity" value="examine casually"/>
+      <string key="Resource" value="Ellen"/>
+      <string key="Costs" value="400"/>
+    </event>
+    <event>
+      <string key="concept:name" value="check ticket"/>
+      <string key="org:resource" value="Mike"/>
+      <date key="time:timestamp" value="2011-01-07T16:22:00.000+01:00"/>
+      <string key="Activity" value="check ticket"/>
+      <string key="Resource" value="Mike"/>
+      <string key="Costs" value="100"/>
+    </event>
+    <event>
+      <string key="concept:name" value="decide"/>
+      <string key="org:resource" value="Sara"/>
+      <date key="time:timestamp" value="2011-01-07T16:52:00.000+01:00"/>
+      <string key="Activity" value="decide"/>
+      <string key="Resource" value="Sara"/>
+      <string key="Costs" value="200"/>
+    </event>
+    <event>
+      <string key="concept:name" value="pay compensation"/>
+      <string key="org:resource" value="Mike"/>
+      <date key="time:timestamp" value="2011-01-16T11:47:00.000+01:00"/>
+      <string key="Activity" value="pay compensation"/>
+      <string key="Resource" value="Mike"/>
+      <string key="Costs" value="200"/>
+    </event>
+  </trace>
+  <trace>
+    <string key="concept:name" value="5"/>
+    <string key="creator" value="Fluxicon Nitro"/>
+    <event>
+      <string key="concept:name" value="register request"/>
+      <string key="org:resource" value="Ellen"/>
+      <date key="time:timestamp" value="2011-01-06T09:02:00.000+01:00"/>
+      <string key="Activity" value="register request"/>
+      <string key="Resource" value="Ellen"/>
+      <string key="Costs" value="50"/>
+    </event>
+    <event>
+      <string key="concept:name" value="examine casually"/>
+      <string key="org:resource" value="Mike"/>
+      <date key="time:timestamp" value="2011-01-07T10:16:00.000+01:00"/>
+      <string key="Activity" value="examine casually"/>
+      <string key="Resource" value="Mike"/>
+      <string key="Costs" value="400"/>
+    </event>
+    <event>
+      <string key="concept:name" value="check ticket"/>
+      <string key="org:resource" value="Pete"/>
+      <date key="time:timestamp" value="2011-01-08T11:22:00.000+01:00"/>
+      <string key="Activity" value="check ticket"/>
+      <string key="Resource" value="Pete"/>
+      <string key="Costs" value="100"/>
+    </event>
+    <event>
+      <string key="concept:name" value="decide"/>
+      <string key="org:resource" value="Sara"/>
+      <date key="time:timestamp" value="2011-01-10T13:28:00.000+01:00"/>
+      <string key="Activity" value="decide"/>
+      <string key="Resource" value="Sara"/>
+      <string key="Costs" value="200"/>
+    </event>
+    <event>
+      <string key="concept:name" value="reinitiate request"/>
+      <string key="org:resource" value="Sara"/>
+      <date key="time:timestamp" value="2011-01-11T16:18:00.000+01:00"/>
+      <string key="Activity" value="reinitiate request"/>
+      <string key="Resource" value="Sara"/>
+      <string key="Costs" value="200"/>
+    </event>
+    <event>
+      <string key="concept:name" value="check ticket"/>
+      <string key="org:resource" value="Ellen"/>
+      <date key="time:timestamp" value="2011-01-14T14:33:00.000+01:00"/>
+      <string key="Activity" value="check ticket"/>
+      <string key="Resource" value="Ellen"/>
+      <string key="Costs" value="100"/>
+    </event>
+    <event>
+      <string key="concept:name" value="examine casually"/>
+      <string key="org:resource" value="Mike"/>
+      <date key="time:timestamp" value="2011-01-16T15:50:00.000+01:00"/>
+      <string key="Activity" value="examine casually"/>
+      <string key="Resource" value="Mike"/>
+      <string key="Costs" value="400"/>
+    </event>
+    <event>
+      <string key="concept:name" value="decide"/>
+      <string key="org:resource" value="Sara"/>
+      <date key="time:timestamp" value="2011-01-19T11:18:00.000+01:00"/>
+      <string key="Activity" value="decide"/>
+      <string key="Resource" value="Sara"/>
+      <string key="Costs" value="200"/>
+    </event>
+    <event>
+      <string key="concept:name" value="reinitiate request"/>
+      <string key="org:resource" value="Sara"/>
+      <date key="time:timestamp" value="2011-01-20T12:48:00.000+01:00"/>
+      <string key="Activity" value="reinitiate request"/>
+      <string key="Resource" value="Sara"/>
+      <string key="Costs" value="200"/>
+    </event>
+    <event>
+      <string key="concept:name" value="examine casually"/>
+      <string key="org:resource" value="Sue"/>
+      <date key="time:timestamp" value="2011-01-21T09:06:00.000+01:00"/>
+      <string key="Activity" value="examine casually"/>
+      <string key="Resource" value="Sue"/>
+      <string key="Costs" value="400"/>
+    </event>
+    <event>
+      <string key="concept:name" value="check ticket"/>
+      <string key="org:resource" value="Pete"/>
+      <date key="time:timestamp" value="2011-01-21T11:34:00.000+01:00"/>
+      <string key="Activity" value="check ticket"/>
+      <string key="Resource" value="Pete"/>
+      <string key="Costs" value="100"/>
+    </event>
+    <event>
+      <string key="concept:name" value="decide"/>
+      <string key="org:resource" value="Sara"/>
+      <date key="time:timestamp" value="2011-01-23T13:12:00.000+01:00"/>
+      <string key="Activity" value="decide"/>
+      <string key="Resource" value="Sara"/>
+      <string key="Costs" value="200"/>
+    </event>
+    <event>
+      <string key="concept:name" value="reject request"/>
+      <string key="org:resource" value="Mike"/>
+      <date key="time:timestamp" value="2011-01-24T14:56:00.000+01:00"/>
+      <string key="Activity" value="reject request"/>
+      <string key="Resource" value="Mike"/>
+      <string key="Costs" value="200"/>
+    </event>
+  </trace>
+  <trace>
+    <string key="concept:name" value="4"/>
+    <string key="creator" value="Fluxicon Nitro"/>
+    <event>
+      <string key="concept:name" value="register request"/>
+      <string key="org:resource" value="Pete"/>
+      <date key="time:timestamp" value="2011-01-06T15:02:00.000+01:00"/>
+      <string key="Activity" value="register request"/>
+      <string key="Resource" value="Pete"/>
+      <string key="Costs" value="50"/>
+    </event>
+    <event>
+      <string key="concept:name" value="check ticket"/>
+      <string key="org:resource" value="Mike"/>
+      <date key="time:timestamp" value="2011-01-07T12:06:00.000+01:00"/>
+      <string key="Activity" value="check ticket"/>
+      <string key="Resource" value="Mike"/>
+      <string key="Costs" value="100"/>
+    </event>
+    <event>
+      <string key="concept:name" value="examine thoroughly"/>
+      <string key="org:resource" value="Sean"/>
+      <date key="time:timestamp" value="2011-01-08T14:43:00.000+01:00"/>
+      <string key="Activity" value="examine thoroughly"/>
+      <string key="Resource" value="Sean"/>
+      <string key="Costs" value="400"/>
+    </event>
+    <event>
+      <string key="concept:name" value="decide"/>
+      <string key="org:resource" value="Sara"/>
+      <date key="time:timestamp" value="2011-01-09T12:02:00.000+01:00"/>
+      <string key="Activity" value="decide"/>
+      <string key="Resource" value="Sara"/>
+      <string key="Costs" value="200"/>
+    </event>
+    <event>
+      <string key="concept:name" value="reject request"/>
+      <string key="org:resource" value="Ellen"/>
+      <date key="time:timestamp" value="2011-01-12T15:44:00.000+01:00"/>
+      <string key="Activity" value="reject request"/>
+      <string key="Resource" value="Ellen"/>
+      <string key="Costs" value="200"/>
+    </event>
+  </trace>
+</log>
diff --git a/demo/sudden_trace_noise20_500_cb_attributed.csv b/demo/sudden_trace_noise20_500_cb_attributed.csv
new file mode 100644
index 0000000..2edfd89
--- /dev/null
+++ b/demo/sudden_trace_noise20_500_cb_attributed.csv
@@ -0,0 +1,4815 @@
+case,activity,timestamp,completeTime,first,second,country
+0,A,2019/01/10 08:00:00.000,2019/01/10 08:00:00.000,122,137,Macau SAR China
+1,A,2019/01/10 08:20:00.000,2019/01/10 08:20:00.000,180,229,Lithuania
+0,B,2019/01/10 08:26:39.701,2019/01/10 08:26:39.701,131,226,Congo - Brazzaville
+1,D,2019/01/10 08:51:01.420,2019/01/10 08:51:01.420,56,121,Liberia
+0,C,2019/01/10 08:55:19.201,2019/01/10 08:55:19.201,1,186,Mayotte
+3,A,2019/01/10 09:00:00.000,2019/01/10 09:00:00.000,18,114,Taiwan
+4,A,2019/01/10 09:20:00.000,2019/01/10 09:20:00.000,109,187,Cameroon
+1,F,2019/01/10 09:20:42.074,2019/01/10 09:20:42.074,253,103,French Southern Territories
+0,A,2019/01/10 09:27:21.131,2019/01/10 09:27:21.131,77,170,Singapore
+3,D,2019/01/10 09:30:50.403,2019/01/10 09:30:50.403,30,166,British Indian Ocean Territory
+4,D,2019/01/10 09:48:08.388,2019/01/10 09:48:08.388,6,58,India
+0,B,2019/01/10 09:54:37.083,2019/01/10 09:54:37.083,80,34,Australia
+1,E,2019/01/10 09:56:35.747,2019/01/10 09:56:35.747,82,72,Bermuda
+3,F,2019/01/10 09:59:40.555,2019/01/10 09:59:40.555,240,197,Gibraltar
+6,A,2019/01/10 10:00:00.000,2019/01/10 10:00:00.000,96,38,Switzerland
+7,A,2019/01/10 10:20:00.000,2019/01/10 10:20:00.000,217,61,Venezuela
+4,F,2019/01/10 10:20:10.369,2019/01/10 10:20:10.369,34,206,Svalbard & Jan Mayen
+0,C,2019/01/10 10:25:50.095,2019/01/10 10:25:50.095,166,72,United States
+3,E,2019/01/10 10:29:51.705,2019/01/10 10:29:51.705,107,42,Northern Mariana Islands
+6,B,2019/01/10 10:32:28.525,2019/01/10 10:32:28.525,57,119,Montenegro
+1,G,2019/01/10 10:32:31.665,2019/01/10 10:32:31.665,55,226,Croatia
+8,A,2019/01/10 10:40:00.000,2019/01/10 10:40:00.000,28,73,Syria
+7,B,2019/01/10 10:46:16.865,2019/01/10 10:46:16.865,104,102,Slovenia
+0,A,2019/01/10 10:53:21.340,2019/01/10 10:53:21.340,40,41,Guinea-Bissau
+3,G,2019/01/10 10:57:51.425,2019/01/10 10:57:51.425,229,249,Isle of Man
+9,A,2019/01/10 11:00:00.000,2019/01/10 11:00:00.000,152,76,Cyprus
+6,C,2019/01/10 11:02:00.020,2019/01/10 11:02:00.020,222,204,Burundi
+1,I,2019/01/10 11:03:22.174,2019/01/10 11:03:22.174,74,52,Guinea-Bissau
+8,D,2019/01/10 11:08:13.996,2019/01/10 11:08:13.996,96,163,Belarus
+0,B,2019/01/10 11:19:58.075,2019/01/10 11:19:58.075,57,205,Zambia
+10,A,2019/01/10 11:20:00.000,2019/01/10 11:20:00.000,152,235,Peru
+2,I,2019/01/10 11:20:08.699,2019/01/10 11:20:08.699,9,155,Guyana
+7,C,2019/01/10 11:21:36.749,2019/01/10 11:21:36.749,169,127,Djibouti
+3,H,2019/01/10 11:25:54.113,2019/01/10 11:25:54.113,156,69,Mauritius
+9,D,2019/01/10 11:28:59.496,2019/01/10 11:28:59.496,168,104,Dominica
+1,J,2019/01/10 11:32:23.690,2019/01/10 11:32:23.690,168,96,Nigeria
+6,A,2019/01/10 11:34:47.552,2019/01/10 11:34:47.552,75,191,Zimbabwe
+8,F,2019/01/10 11:34:54.001,2019/01/10 11:34:54.001,106,94,Botswana
+11,A,2019/01/10 11:40:00.000,2019/01/10 11:40:00.000,47,17,Falkland Islands
+2,J,2019/01/10 11:46:10.317,2019/01/10 11:46:10.317,7,18,Bhutan
+0,C,2019/01/10 11:48:03.784,2019/01/10 11:48:03.784,88,204,Germany
+10,B,2019/01/10 11:51:38.826,2019/01/10 11:51:38.826,247,93,Montserrat
+7,A,2019/01/10 11:56:05.179,2019/01/10 11:56:05.179,63,251,Spain
+1,K,2019/01/10 11:59:06.581,2019/01/10 11:59:06.581,0,242,India
+12,A,2019/01/10 12:00:00.000,2019/01/10 12:00:00.000,159,218,Bermuda
+6,D,2019/01/10 12:01:08.128,2019/01/10 12:01:08.128,215,225,Indonesia
+8,E,2019/01/10 12:03:53.355,2019/01/10 12:03:53.355,137,228,Romania
+9,F,2019/01/10 12:05:21.142,2019/01/10 12:05:21.142,255,17,Tokelau
+11,B,2019/01/10 12:08:41.975,2019/01/10 12:08:41.975,252,80,Comoros
+0,A,2019/01/10 12:15:26.765,2019/01/10 12:15:26.765,20,19,Bulgaria
+2,K,2019/01/10 12:16:54.312,2019/01/10 12:16:54.312,45,95,Singapore
+10,C,2019/01/10 12:19:56.601,2019/01/10 12:19:56.601,81,105,French Polynesia
+1,M,2019/01/10 12:30:03.979,2019/01/10 12:30:03.979,190,74,Wallis & Futuna
+9,E,2019/01/10 12:34:41.125,2019/01/10 12:34:41.125,221,232,Trinidad & Tobago
+12,D,2019/01/10 12:34:49.772,2019/01/10 12:34:49.772,253,70,Swaziland
+6,F,2019/01/10 12:35:59.102,2019/01/10 12:35:59.102,218,191,Croatia
+8,G,2019/01/10 12:39:48.745,2019/01/10 12:39:48.745,230,3,Tanzania
+14,A,2019/01/10 12:40:00.000,2019/01/10 12:40:00.000,235,115,Saudi Arabia
+11,C,2019/01/10 12:41:34.453,2019/01/10 12:41:34.453,25,219,Aruba
+2,M,2019/01/10 12:45:56.703,2019/01/10 12:45:56.703,157,237,Poland
+5,E,2019/01/10 12:45:59.673,2019/01/10 12:45:59.673,93,54,Wallis & Futuna
+0,D,2019/01/10 12:47:17.317,2019/01/10 12:47:17.317,226,238,British Indian Ocean Territory
+10,A,2019/01/10 12:51:14.839,2019/01/10 12:51:14.839,164,70,Bolivia
+1,O,2019/01/10 12:56:01.784,2019/01/10 12:56:01.784,8,201,Tajikistan
+15,A,2019/01/10 13:00:00.000,2019/01/10 13:00:00.000,28,215,Martinique
+6,E,2019/01/10 13:01:59.572,2019/01/10 13:01:59.572,103,147,Micronesia
+9,G,2019/01/10 13:04:11.446,2019/01/10 13:04:11.446,8,120,Kyrgyzstan
+14,B,2019/01/10 13:05:56.738,2019/01/10 13:05:56.738,186,144,Puerto Rico
+12,F,2019/01/10 13:06:41.960,2019/01/10 13:06:41.960,36,80,Ceuta & Melilla
+11,A,2019/01/10 13:09:19.322,2019/01/10 13:09:19.322,130,177,Saudi Arabia
+8,I,2019/01/10 13:09:36.203,2019/01/10 13:09:36.203,39,66,Australia
+2,N,2019/01/10 13:14:03.492,2019/01/10 13:14:03.492,211,160,Isle of Man
+5,G,2019/01/10 13:14:27.506,2019/01/10 13:14:27.506,88,206,Tunisia
+10,B,2019/01/10 13:19:53.319,2019/01/10 13:19:53.319,24,40,Kenya
+16,A,2019/01/10 13:20:00.000,2019/01/10 13:20:00.000,93,14,Belize
+0,F,2019/01/10 13:22:20.894,2019/01/10 13:22:20.894,231,209,Tuvalu
+15,D,2019/01/10 13:32:25.987,2019/01/10 13:32:25.987,121,223,Cape Verde
+6,G,2019/01/10 13:34:45.099,2019/01/10 13:34:45.099,173,242,French Guiana
+14,C,2019/01/10 13:35:46.719,2019/01/10 13:35:46.719,230,234,Caribbean Netherlands
+9,H,2019/01/10 13:38:00.974,2019/01/10 13:38:00.974,13,35,Sri Lanka
+17,A,2019/01/10 13:40:00.000,2019/01/10 13:40:00.000,164,6,Kuwait
+11,B,2019/01/10 13:40:17.085,2019/01/10 13:40:17.085,114,10,Åland Islands
+8,J,2019/01/10 13:42:37.276,2019/01/10 13:42:37.276,5,33,Kosovo
+13,E,2019/01/10 13:43:54.117,2019/01/10 13:43:54.117,74,113,Equatorial Guinea
+5,I,2019/01/10 13:45:09.174,2019/01/10 13:45:09.174,140,96,Suriname
+0,E,2019/01/10 13:50:24.085,2019/01/10 13:50:24.085,141,102,St. Pierre & Miquelon
+10,C,2019/01/10 13:51:27.825,2019/01/10 13:51:27.825,135,152,United Kingdom
+16,D,2019/01/10 13:52:22.690,2019/01/10 13:52:22.690,201,201,Angola
+18,A,2019/01/10 14:00:00.000,2019/01/10 14:00:00.000,112,123,Venezuela
+15,F,2019/01/10 14:01:08.801,2019/01/10 14:01:08.801,6,62,Dominica
+6,I,2019/01/10 14:02:07.145,2019/01/10 14:02:07.145,101,48,Saudi Arabia
+14,A,2019/01/10 14:07:03.629,2019/01/10 14:07:03.629,95,252,Guadeloupe
+8,K,2019/01/10 14:09:14.173,2019/01/10 14:09:14.173,179,173,Congo - Brazzaville
+17,B,2019/01/10 14:10:58.133,2019/01/10 14:10:58.133,18,59,Diego Garcia
+11,C,2019/01/10 14:12:11.783,2019/01/10 14:12:11.783,47,192,Belize
+13,G,2019/01/10 14:13:28.914,2019/01/10 14:13:28.914,180,34,El Salvador
+5,J,2019/01/10 14:14:28.089,2019/01/10 14:14:28.089,36,13,Aruba
+10,A,2019/01/10 14:17:56.527,2019/01/10 14:17:56.527,162,229,Cameroon
+0,G,2019/01/10 14:19:33.269,2019/01/10 14:19:33.269,165,143,Bhutan
+19,A,2019/01/10 14:20:00.000,2019/01/10 14:20:00.000,224,128,Kenya
+16,F,2019/01/10 14:21:45.234,2019/01/10 14:21:45.234,148,214,Peru
+18,B,2019/01/10 14:27:31.108,2019/01/10 14:27:31.108,79,29,El Salvador
+6,J,2019/01/10 14:30:12.603,2019/01/10 14:30:12.603,22,37,French Southern Territories
+15,E,2019/01/10 14:32:02.888,2019/01/10 14:32:02.888,88,22,Liechtenstein
+14,D,2019/01/10 14:39:49.207,2019/01/10 14:39:49.207,149,188,Uganda
+8,M,2019/01/10 14:39:54.781,2019/01/10 14:39:54.781,195,99,Sint Maarten
+20,A,2019/01/10 14:40:00.000,2019/01/10 14:40:00.000,92,74,Brazil
+17,C,2019/01/10 14:41:10.514,2019/01/10 14:41:10.514,58,85,Chad
+11,A,2019/01/10 14:41:12.907,2019/01/10 14:41:12.907,98,250,Uganda
+5,L,2019/01/10 14:43:11.090,2019/01/10 14:43:11.090,67,162,Colombia
+13,H,2019/01/10 14:43:42.910,2019/01/10 14:43:42.910,103,190,Sri Lanka
+10,B,2019/01/10 14:49:44.029,2019/01/10 14:49:44.029,98,161,Sri Lanka
+19,D,2019/01/10 14:50:03.680,2019/01/10 14:50:03.680,69,93,Diego Garcia
+0,I,2019/01/10 14:51:28.227,2019/01/10 14:51:28.227,194,103,Kazakhstan
+16,E,2019/01/10 14:57:52.614,2019/01/10 14:57:52.614,242,58,Uzbekistan
+18,C,2019/01/10 14:58:29.552,2019/01/10 14:58:29.552,200,59,Croatia
+21,A,2019/01/10 15:00:00.000,2019/01/10 15:00:00.000,115,221,Faroe Islands
+6,L,2019/01/10 15:00:57.679,2019/01/10 15:00:57.679,56,182,Norfolk Island
+15,G,2019/01/10 15:03:16.161,2019/01/10 15:03:16.161,245,50,South Sudan
+17,A,2019/01/10 15:06:26.389,2019/01/10 15:06:26.389,213,113,Faroe Islands
+20,B,2019/01/10 15:08:46.112,2019/01/10 15:08:46.112,84,88,Bahrain
+14,F,2019/01/10 15:09:15.124,2019/01/10 15:09:15.124,68,109,Morocco
+11,B,2019/01/10 15:09:52.280,2019/01/10 15:09:52.280,160,254,Kyrgyzstan
+8,O,2019/01/10 15:10:20.049,2019/01/10 15:10:20.049,109,130,Armenia
+5,M,2019/01/10 15:16:55.824,2019/01/10 15:16:55.824,232,254,Antarctica
+10,C,2019/01/10 15:17:24.223,2019/01/10 15:17:24.223,128,126,India
+22,A,2019/01/10 15:20:00.000,2019/01/10 15:20:00.000,96,231,Belgium
+0,J,2019/01/10 15:20:28.784,2019/01/10 15:20:28.784,233,115,El Salvador
+19,F,2019/01/10 15:21:56.154,2019/01/10 15:21:56.154,152,241,Uganda
+16,G,2019/01/10 15:25:14.039,2019/01/10 15:25:14.039,254,230,Morocco
+18,A,2019/01/10 15:29:40.534,2019/01/10 15:29:40.534,216,218,Gambia
+21,B,2019/01/10 15:29:57.149,2019/01/10 15:29:57.149,20,10,South Georgia & South Sandwich Islands
+17,D,2019/01/10 15:31:35.577,2019/01/10 15:31:35.577,24,17,Faroe Islands
+15,H,2019/01/10 15:32:01.649,2019/01/10 15:32:01.649,95,115,Antarctica
+6,M,2019/01/10 15:33:00.444,2019/01/10 15:33:00.444,161,243,Sri Lanka
+14,E,2019/01/10 15:33:59.065,2019/01/10 15:33:59.065,248,73,French Guiana
+20,C,2019/01/10 15:34:02.050,2019/01/10 15:34:02.050,79,99,Bulgaria
+11,C,2019/01/10 15:39:25.730,2019/01/10 15:39:25.730,50,22,St. Pierre & Miquelon
+5,O,2019/01/10 15:44:22.923,2019/01/10 15:44:22.923,235,223,Nepal
+0,L,2019/01/10 15:47:47.331,2019/01/10 15:47:47.331,51,208,Vietnam
+10,A,2019/01/10 15:48:08.908,2019/01/10 15:48:08.908,89,42,Slovakia
+22,B,2019/01/10 15:50:45.835,2019/01/10 15:50:45.835,51,8,Costa Rica
+19,E,2019/01/10 15:50:50.323,2019/01/10 15:50:50.323,37,67,Mauritania
+21,C,2019/01/10 15:56:42.229,2019/01/10 15:56:42.229,90,67,Aruba
+20,A,2019/01/10 15:57:02.408,2019/01/10 15:57:02.408,0,83,Russia
+18,D,2019/01/10 15:57:12.038,2019/01/10 15:57:12.038,216,130,Tonga
+24,A,2019/01/10 16:00:00.000,2019/01/10 16:00:00.000,209,214,South Korea
+16,I,2019/01/10 16:00:37.897,2019/01/10 16:00:37.897,232,223,Qatar
+14,G,2019/01/10 16:01:46.710,2019/01/10 16:01:46.710,156,25,Mali
+17,F,2019/01/10 16:04:01.219,2019/01/10 16:04:01.219,162,135,Fiji
+6,O,2019/01/10 16:04:46.028,2019/01/10 16:04:46.028,226,7,Lebanon
+0,M,2019/01/10 16:11:18.538,2019/01/10 16:11:18.538,36,75,Nepal
+10,B,2019/01/10 16:12:52.725,2019/01/10 16:12:52.725,97,220,Côte d'Ivoire
+11,A,2019/01/10 16:17:09.594,2019/01/10 16:17:09.594,98,150,Oman
+19,G,2019/01/10 16:19:51.404,2019/01/10 16:19:51.404,228,221,Antarctica
+25,A,2019/01/10 16:20:00.000,2019/01/10 16:20:00.000,185,201,Denmark
+22,C,2019/01/10 16:22:44.196,2019/01/10 16:22:44.196,136,104,Zimbabwe
+20,B,2019/01/10 16:24:28.286,2019/01/10 16:24:28.286,236,243,New Caledonia
+21,A,2019/01/10 16:26:36.852,2019/01/10 16:26:36.852,221,211,Slovenia
+24,B,2019/01/10 16:28:53.357,2019/01/10 16:28:53.357,44,247,Syria
+16,J,2019/01/10 16:31:51.759,2019/01/10 16:31:51.759,2,55,Luxembourg
+18,F,2019/01/10 16:32:58.504,2019/01/10 16:32:58.504,207,38,Cook Islands
+14,I,2019/01/10 16:33:41.693,2019/01/10 16:33:41.693,16,52,Georgia
+17,E,2019/01/10 16:38:03.779,2019/01/10 16:38:03.779,172,176,Iraq
+0,O,2019/01/10 16:38:56.047,2019/01/10 16:38:56.047,104,131,U.S. Virgin Islands
+26,A,2019/01/10 16:40:00.000,2019/01/10 16:40:00.000,84,135,Egypt
+10,C,2019/01/10 16:41:50.868,2019/01/10 16:41:50.868,6,18,Namibia
+25,B,2019/01/10 16:42:53.356,2019/01/10 16:42:53.356,252,135,France
+11,D,2019/01/10 16:43:11.834,2019/01/10 16:43:11.834,160,79,Belgium
+19,I,2019/01/10 16:47:49.643,2019/01/10 16:47:49.643,103,230,Cocos (Keeling) Islands
+22,A,2019/01/10 16:52:03.811,2019/01/10 16:52:03.811,101,71,Tokelau
+20,C,2019/01/10 16:52:39.206,2019/01/10 16:52:39.206,86,101,Central African Republic
+24,C,2019/01/10 16:58:45.427,2019/01/10 16:58:45.427,141,22,Montserrat
+16,K,2019/01/10 16:59:21.165,2019/01/10 16:59:21.165,84,162,Somalia
+27,A,2019/01/10 17:00:00.000,2019/01/10 17:00:00.000,232,251,Luxembourg
+21,D,2019/01/10 17:01:34.148,2019/01/10 17:01:34.148,135,235,Azerbaijan
+14,J,2019/01/10 17:04:22.970,2019/01/10 17:04:22.970,60,207,St. Barthélemy
+17,G,2019/01/10 17:06:00.586,2019/01/10 17:06:00.586,210,120,Greece
+18,E,2019/01/10 17:08:11.850,2019/01/10 17:08:11.850,200,107,Indonesia
+10,A,2019/01/10 17:09:03.664,2019/01/10 17:09:03.664,172,90,Chile
+26,B,2019/01/10 17:11:45.784,2019/01/10 17:11:45.784,56,1,China
+19,J,2019/01/10 17:12:32.627,2019/01/10 17:12:32.627,95,20,Kiribati
+11,F,2019/01/10 17:13:46.791,2019/01/10 17:13:46.791,153,239,Martinique
+25,C,2019/01/10 17:15:54.197,2019/01/10 17:15:54.197,171,81,Malta
+28,A,2019/01/10 17:20:00.000,2019/01/10 17:20:00.000,15,150,Burkina Faso
+22,D,2019/01/10 17:22:47.445,2019/01/10 17:22:47.445,146,158,New Caledonia
+20,A,2019/01/10 17:23:41.025,2019/01/10 17:23:41.025,13,0,Micronesia
+21,F,2019/01/10 17:26:46.019,2019/01/10 17:26:46.019,40,69,Mongolia
+27,B,2019/01/10 17:30:23.222,2019/01/10 17:30:23.222,221,190,Armenia
+24,A,2019/01/10 17:31:26.554,2019/01/10 17:31:26.554,191,183,Honduras
+16,M,2019/01/10 17:31:34.429,2019/01/10 17:31:34.429,20,100,Argentina
+18,G,2019/01/10 17:37:55.744,2019/01/10 17:37:55.744,154,205,Costa Rica
+17,H,2019/01/10 17:38:31.287,2019/01/10 17:38:31.287,103,164,Romania
+10,D,2019/01/10 17:39:29.482,2019/01/10 17:39:29.482,235,152,St. Martin
+14,K,2019/01/10 17:39:59.327,2019/01/10 17:39:59.327,56,245,Poland
+29,A,2019/01/10 17:40:00.000,2019/01/10 17:40:00.000,111,21,Jordan
+11,E,2019/01/10 17:40:10.599,2019/01/10 17:40:10.599,197,160,Turks & Caicos Islands
+19,K,2019/01/10 17:42:55.364,2019/01/10 17:42:55.364,84,239,Libya
+26,C,2019/01/10 17:44:35.940,2019/01/10 17:44:35.940,125,195,Iraq
+20,B,2019/01/10 17:48:11.320,2019/01/10 17:48:11.320,45,250,Guatemala
+25,A,2019/01/10 17:49:40.496,2019/01/10 17:49:40.496,139,108,Djibouti
+28,D,2019/01/10 17:50:12.193,2019/01/10 17:50:12.193,143,73,Burkina Faso
+21,E,2019/01/10 17:54:03.249,2019/01/10 17:54:03.249,20,178,Denmark
+22,F,2019/01/10 17:55:12.892,2019/01/10 17:55:12.892,218,50,France
+16,N,2019/01/10 17:59:49.850,2019/01/10 17:59:49.850,60,80,Zimbabwe
+30,A,2019/01/10 18:00:00.000,2019/01/10 18:00:00.000,154,22,Marshall Islands
+24,D,2019/01/10 18:00:48.260,2019/01/10 18:00:48.260,64,128,Bahamas
+27,C,2019/01/10 18:03:21.339,2019/01/10 18:03:21.339,60,252,Armenia
+10,F,2019/01/10 18:03:37.135,2019/01/10 18:03:37.135,171,31,Gambia
+18,I,2019/01/10 18:08:16.507,2019/01/10 18:08:16.507,191,240,St. Vincent & Grenadines
+29,D,2019/01/10 18:09:14.805,2019/01/10 18:09:14.805,58,213,Papua New Guinea
+14,M,2019/01/10 18:10:23.541,2019/01/10 18:10:23.541,189,181,Poland
+26,A,2019/01/10 18:10:39.788,2019/01/10 18:10:39.788,234,147,Japan
+19,M,2019/01/10 18:11:38.073,2019/01/10 18:11:38.073,143,113,St. Barthélemy
+25,D,2019/01/10 18:17:19.851,2019/01/10 18:17:19.851,186,115,Monaco
+11,G,2019/01/10 18:17:59.663,2019/01/10 18:17:59.663,68,212,Iceland
+31,A,2019/01/10 18:20:00.000,2019/01/10 18:20:00.000,93,196,Lesotho
+20,C,2019/01/10 18:20:44.879,2019/01/10 18:20:44.879,121,33,Kosovo
+28,F,2019/01/10 18:25:45.446,2019/01/10 18:25:45.446,119,160,St. Martin
+21,G,2019/01/10 18:26:19.560,2019/01/10 18:26:19.560,156,30,Russia
+22,E,2019/01/10 18:26:36.908,2019/01/10 18:26:36.908,8,38,Iran
+10,E,2019/01/10 18:27:21.346,2019/01/10 18:27:21.346,151,214,Sweden
+24,F,2019/01/10 18:27:23.277,2019/01/10 18:27:23.277,164,114,Benin
+27,A,2019/01/10 18:32:23.469,2019/01/10 18:32:23.469,81,119,United Kingdom
+30,B,2019/01/10 18:33:11.240,2019/01/10 18:33:11.240,39,49,Nepal
+18,J,2019/01/10 18:36:21.872,2019/01/10 18:36:21.872,73,192,U.S. Outlying Islands
+19,O,2019/01/10 18:36:49.639,2019/01/10 18:36:49.639,2,54,Maldives
+14,N,2019/01/10 18:38:05.441,2019/01/10 18:38:05.441,140,182,Svalbard & Jan Mayen
+29,F,2019/01/10 18:40:07.629,2019/01/10 18:40:07.629,190,170,Burkina Faso
+26,D,2019/01/10 18:45:42.763,2019/01/10 18:45:42.763,160,92,South Georgia & South Sandwich Islands
+11,I,2019/01/10 18:47:37.810,2019/01/10 18:47:37.810,148,95,Vietnam
+25,F,2019/01/10 18:49:11.227,2019/01/10 18:49:11.227,30,98,Micronesia
+31,B,2019/01/10 18:50:08.429,2019/01/10 18:50:08.429,14,176,Montserrat
+20,A,2019/01/10 18:51:54.669,2019/01/10 18:51:54.669,120,92,Iceland
+22,G,2019/01/10 18:56:45.028,2019/01/10 18:56:45.028,123,184,British Indian Ocean Territory
+10,G,2019/01/10 18:56:51.849,2019/01/10 18:56:51.849,221,194,Curaçao
+24,E,2019/01/10 18:57:43.014,2019/01/10 18:57:43.014,119,129,Canada
+28,E,2019/01/10 18:58:09.860,2019/01/10 18:58:09.860,173,23,Ukraine
+21,I,2019/01/10 18:59:02.079,2019/01/10 18:59:02.079,105,93,Marshall Islands
+33,A,2019/01/10 19:00:00.000,2019/01/10 19:00:00.000,236,95,Romania
+27,D,2019/01/10 19:00:41.119,2019/01/10 19:00:41.119,144,116,Nicaragua
+30,C,2019/01/10 19:02:15.745,2019/01/10 19:02:15.745,105,242,American Samoa
+29,E,2019/01/10 19:07:12.292,2019/01/10 19:07:12.292,40,218,Côte d'Ivoire
+18,L,2019/01/10 19:08:02.916,2019/01/10 19:08:02.916,99,246,Gambia
+11,J,2019/01/10 19:11:32.375,2019/01/10 19:11:32.375,141,42,Netherlands
+26,F,2019/01/10 19:16:16.614,2019/01/10 19:16:16.614,41,36,Finland
+25,E,2019/01/10 19:17:15.703,2019/01/10 19:17:15.703,37,182,Poland
+31,C,2019/01/10 19:19:44.906,2019/01/10 19:19:44.906,114,108,Eritrea
+34,A,2019/01/10 19:20:00.000,2019/01/10 19:20:00.000,83,8,Monaco
+28,G,2019/01/10 19:21:43.790,2019/01/10 19:21:43.790,116,133,Antigua & Barbuda
+20,D,2019/01/10 19:25:04.771,2019/01/10 19:25:04.771,201,234,Chad
+33,D,2019/01/10 19:27:15.904,2019/01/10 19:27:15.904,222,223,Gabon
+21,J,2019/01/10 19:27:47.207,2019/01/10 19:27:47.207,240,106,Angola
+10,I,2019/01/10 19:28:55.912,2019/01/10 19:28:55.912,184,175,Paraguay
+22,H,2019/01/10 19:29:14.821,2019/01/10 19:29:14.821,100,138,Lithuania
+30,A,2019/01/10 19:29:46.771,2019/01/10 19:29:46.771,69,18,Norfolk Island
+27,F,2019/01/10 19:33:27.614,2019/01/10 19:33:27.614,127,140,Samoa
+24,G,2019/01/10 19:33:31.218,2019/01/10 19:33:31.218,77,241,Germany
+29,G,2019/01/10 19:37:48.311,2019/01/10 19:37:48.311,240,143,South Africa
+18,M,2019/01/10 19:38:40.212,2019/01/10 19:38:40.212,13,172,Cyprus
+35,A,2019/01/10 19:40:00.000,2019/01/10 19:40:00.000,156,174,French Polynesia
+11,L,2019/01/10 19:41:12.738,2019/01/10 19:41:12.738,77,146,Canada
+31,A,2019/01/10 19:46:30.772,2019/01/10 19:46:30.772,219,168,Turkey
+34,B,2019/01/10 19:47:22.358,2019/01/10 19:47:22.358,63,173,Madagascar
+26,E,2019/01/10 19:48:38.551,2019/01/10 19:48:38.551,180,193,Mongolia
+25,G,2019/01/10 19:48:49.944,2019/01/10 19:48:49.944,2,94,Swaziland
+28,H,2019/01/10 19:49:28.468,2019/01/10 19:49:28.468,77,17,Northern Mariana Islands
+21,L,2019/01/10 19:50:22.457,2019/01/10 19:50:22.457,166,189,Seychelles
+20,F,2019/01/10 19:55:54.017,2019/01/10 19:55:54.017,211,210,Diego Garcia
+36,A,2019/01/10 20:00:00.000,2019/01/10 20:00:00.000,189,85,Kosovo
+33,F,2019/01/10 20:00:29.546,2019/01/10 20:00:29.546,48,123,Qatar
+27,E,2019/01/10 20:01:04.622,2019/01/10 20:01:04.622,185,108,Poland
+30,B,2019/01/10 20:01:13.046,2019/01/10 20:01:13.046,105,197,Kuwait
+10,J,2019/01/10 20:02:47.653,2019/01/10 20:02:47.653,216,116,Montserrat
+18,N,2019/01/10 20:08:15.684,2019/01/10 20:08:15.684,19,232,South Africa
+29,H,2019/01/10 20:08:22.355,2019/01/10 20:08:22.355,79,239,Tonga
+24,I,2019/01/10 20:10:09.267,2019/01/10 20:10:09.267,195,66,Latvia
+35,B,2019/01/10 20:12:26.765,2019/01/10 20:12:26.765,96,190,Anguilla
+11,M,2019/01/10 20:12:42.484,2019/01/10 20:12:42.484,103,231,Lebanon
+34,C,2019/01/10 20:15:25.298,2019/01/10 20:15:25.298,118,51,Burundi
+31,B,2019/01/10 20:18:16.242,2019/01/10 20:18:16.242,198,213,Isle of Man
+25,I,2019/01/10 20:19:48.106,2019/01/10 20:19:48.106,191,206,St. Vincent & Grenadines
+37,A,2019/01/10 20:20:00.000,2019/01/10 20:20:00.000,163,36,Jordan
+21,M,2019/01/10 20:21:03.910,2019/01/10 20:21:03.910,175,145,Brazil
+26,G,2019/01/10 20:23:25.153,2019/01/10 20:23:25.153,7,184,Slovakia
+20,E,2019/01/10 20:27:09.061,2019/01/10 20:27:09.061,3,112,Grenada
+33,E,2019/01/10 20:28:43.199,2019/01/10 20:28:43.199,58,119,South Korea
+30,C,2019/01/10 20:31:22.840,2019/01/10 20:31:22.840,175,228,Malaysia
+10,L,2019/01/10 20:34:47.666,2019/01/10 20:34:47.666,27,9,Somalia
+36,D,2019/01/10 20:36:47.887,2019/01/10 20:36:47.887,167,123,United States
+27,G,2019/01/10 20:37:48.285,2019/01/10 20:37:48.285,20,88,Norway
+35,C,2019/01/10 20:39:18.864,2019/01/10 20:39:18.864,120,18,Tokelau
+24,J,2019/01/10 20:40:12.811,2019/01/10 20:40:12.811,104,58,Venezuela
+34,A,2019/01/10 20:45:04.703,2019/01/10 20:45:04.703,246,2,Indonesia
+11,O,2019/01/10 20:45:25.634,2019/01/10 20:45:25.634,238,237,Kosovo
+23,B,2019/01/10 20:48:48.857,2019/01/10 20:48:48.857,174,25,Sierra Leone
+26,H,2019/01/10 20:49:21.791,2019/01/10 20:49:21.791,105,242,Colombia
+37,B,2019/01/10 20:49:37.665,2019/01/10 20:49:37.665,53,94,Lebanon
+33,G,2019/01/10 20:49:47.619,2019/01/10 20:49:47.619,241,155,Equatorial Guinea
+25,J,2019/01/10 20:49:55.390,2019/01/10 20:49:55.390,40,22,Venezuela
+21,O,2019/01/10 20:50:51.366,2019/01/10 20:50:51.366,45,141,Hong Kong SAR China
+31,C,2019/01/10 20:51:13.029,2019/01/10 20:51:13.029,209,63,Montenegro
+30,A,2019/01/10 20:59:00.965,2019/01/10 20:59:00.965,188,15,Romania
+20,G,2019/01/10 20:59:13.634,2019/01/10 20:59:13.634,69,13,Wallis & Futuna
+39,A,2019/01/10 21:00:00.000,2019/01/10 21:00:00.000,54,40,Bangladesh
+27,H,2019/01/10 21:03:53.802,2019/01/10 21:03:53.802,170,221,Madagascar
+36,F,2019/01/10 21:05:27.373,2019/01/10 21:05:27.373,255,204,Kuwait
+10,M,2019/01/10 21:05:37.504,2019/01/10 21:05:37.504,211,221,Brazil
+34,D,2019/01/10 21:12:07.423,2019/01/10 21:12:07.423,242,104,Uruguay
+24,K,2019/01/10 21:12:20.138,2019/01/10 21:12:20.138,119,249,Montenegro
+35,A,2019/01/10 21:12:54.503,2019/01/10 21:12:54.503,185,189,Ghana
+23,C,2019/01/10 21:15:00.819,2019/01/10 21:15:00.819,182,244,Zimbabwe
+37,C,2019/01/10 21:18:02.626,2019/01/10 21:18:02.626,37,191,Austria
+31,A,2019/01/10 21:19:55.571,2019/01/10 21:19:55.571,71,213,Suriname
+25,L,2019/01/10 21:20:50.885,2019/01/10 21:20:50.885,43,91,Laos
+20,I,2019/01/10 21:24:26.318,2019/01/10 21:24:26.318,185,192,Nigeria
+30,B,2019/01/10 21:29:31.881,2019/01/10 21:29:31.881,144,102,St. Kitts & Nevis
+39,B,2019/01/10 21:32:14.595,2019/01/10 21:32:14.595,236,217,Cuba
+36,E,2019/01/10 21:33:13.880,2019/01/10 21:33:13.880,100,107,Palestinian Territories
+10,O,2019/01/10 21:38:28.718,2019/01/10 21:38:28.718,113,170,New Zealand
+41,A,2019/01/10 21:40:00.000,2019/01/10 21:40:00.000,161,109,Gambia
+34,F,2019/01/10 21:41:16.277,2019/01/10 21:41:16.277,64,178,Suriname
+24,M,2019/01/10 21:42:09.811,2019/01/10 21:42:09.811,97,78,Macau SAR China
+23,A,2019/01/10 21:43:41.111,2019/01/10 21:43:41.111,75,247,South Sudan
+35,B,2019/01/10 21:44:42.193,2019/01/10 21:44:42.193,236,172,Spain
+31,B,2019/01/10 21:47:42.898,2019/01/10 21:47:42.898,72,55,Germany
+25,M,2019/01/10 21:50:55.139,2019/01/10 21:50:55.139,11,93,St. Barthélemy
+37,A,2019/01/10 21:51:20.195,2019/01/10 21:51:20.195,149,217,Libya
+20,J,2019/01/10 21:56:31.052,2019/01/10 21:56:31.052,20,211,Uruguay
+42,A,2019/01/10 22:00:00.000,2019/01/10 22:00:00.000,199,73,Ghana
+30,C,2019/01/10 22:00:06.564,2019/01/10 22:00:06.564,115,229,Dominican Republic
+36,G,2019/01/10 22:01:13.320,2019/01/10 22:01:13.320,205,57,Jersey
+39,C,2019/01/10 22:04:49.274,2019/01/10 22:04:49.274,241,239,Spain
+41,B,2019/01/10 22:10:38.669,2019/01/10 22:10:38.669,254,122,Antarctica
+34,E,2019/01/10 22:11:27.982,2019/01/10 22:11:27.982,19,148,Luxembourg
+24,O,2019/01/10 22:12:59.599,2019/01/10 22:12:59.599,184,19,Ghana
+35,C,2019/01/10 22:13:51.464,2019/01/10 22:13:51.464,27,1,Colombia
+23,B,2019/01/10 22:15:37.265,2019/01/10 22:15:37.265,60,242,Uzbekistan
+25,N,2019/01/10 22:16:08.832,2019/01/10 22:16:08.832,34,150,Switzerland
+31,C,2019/01/10 22:18:35.790,2019/01/10 22:18:35.790,243,99,South Sudan
+43,A,2019/01/10 22:20:00.000,2019/01/10 22:20:00.000,121,19,Taiwan
+37,D,2019/01/10 22:24:26.544,2019/01/10 22:24:26.544,132,118,Mauritius
+36,H,2019/01/10 22:28:58.015,2019/01/10 22:28:58.015,130,130,Saudi Arabia
+42,B,2019/01/10 22:30:29.847,2019/01/10 22:30:29.847,10,116,Croatia
+20,L,2019/01/10 22:31:31.246,2019/01/10 22:31:31.246,17,11,El Salvador
+30,A,2019/01/10 22:33:24.697,2019/01/10 22:33:24.697,214,216,Croatia
+39,A,2019/01/10 22:36:59.380,2019/01/10 22:36:59.380,241,1,St. Vincent & Grenadines
+44,A,2019/01/10 22:40:00.000,2019/01/10 22:40:00.000,53,249,Bahrain
+38,D,2019/01/10 22:40:07.365,2019/01/10 22:40:07.365,72,19,Somalia
+41,C,2019/01/10 22:40:19.055,2019/01/10 22:40:19.055,51,194,Uruguay
+34,G,2019/01/10 22:40:58.932,2019/01/10 22:40:58.932,205,91,Anguilla
+23,C,2019/01/10 22:41:18.730,2019/01/10 22:41:18.730,6,212,Panama
+32,F,2019/01/10 22:42:26.784,2019/01/10 22:42:26.784,108,96,Estonia
+35,A,2019/01/10 22:43:21.620,2019/01/10 22:43:21.620,86,174,Poland
+37,F,2019/01/10 22:51:16.749,2019/01/10 22:51:16.749,187,33,Tokelau
+31,A,2019/01/10 22:53:40.197,2019/01/10 22:53:40.197,252,255,American Samoa
+43,D,2019/01/10 22:54:03.744,2019/01/10 22:54:03.744,224,159,France
+20,M,2019/01/10 22:58:36.146,2019/01/10 22:58:36.146,16,101,Iran
+45,A,2019/01/10 23:00:00.000,2019/01/10 23:00:00.000,250,208,Bangladesh
+42,C,2019/01/10 23:04:05.929,2019/01/10 23:04:05.929,3,133,New Zealand
+30,D,2019/01/10 23:06:48.401,2019/01/10 23:06:48.401,188,65,Nepal
+34,I,2019/01/10 23:07:06.785,2019/01/10 23:07:06.785,218,167,Vanuatu
+39,D,2019/01/10 23:08:47.452,2019/01/10 23:08:47.452,89,151,Åland Islands
+41,A,2019/01/10 23:10:54.212,2019/01/10 23:10:54.212,110,128,North Korea
+38,F,2019/01/10 23:12:06.845,2019/01/10 23:12:06.845,66,27,Jersey
+23,A,2019/01/10 23:12:58.789,2019/01/10 23:12:58.789,155,86,Israel
+44,B,2019/01/10 23:14:49.222,2019/01/10 23:14:49.222,252,124,St. Lucia
+32,E,2019/01/10 23:15:21.175,2019/01/10 23:15:21.175,0,0,Dominican Republic
+37,E,2019/01/10 23:19:54.861,2019/01/10 23:19:54.861,217,80,Albania
+46,A,2019/01/10 23:20:00.000,2019/01/10 23:20:00.000,127,44,Sri Lanka
+20,N,2019/01/10 23:24:02.014,2019/01/10 23:24:02.014,65,36,Burundi
+31,D,2019/01/10 23:25:18.485,2019/01/10 23:25:18.485,229,239,Israel
+43,F,2019/01/10 23:26:34.585,2019/01/10 23:26:34.585,51,7,Jersey
+45,D,2019/01/10 23:27:02.955,2019/01/10 23:27:02.955,132,210,Uzbekistan
+42,A,2019/01/10 23:32:12.704,2019/01/10 23:32:12.704,51,224,Luxembourg
+30,F,2019/01/10 23:36:32.697,2019/01/10 23:36:32.697,192,107,Central African Republic
+41,B,2019/01/10 23:37:29.693,2019/01/10 23:37:29.693,152,79,Bosnia & Herzegovina
+34,J,2019/01/10 23:39:32.713,2019/01/10 23:39:32.713,206,204,Libya
+47,A,2019/01/10 23:40:00.000,2019/01/10 23:40:00.000,171,67,Honduras
+39,F,2019/01/10 23:40:02.654,2019/01/10 23:40:02.654,190,161,Nigeria
+38,E,2019/01/10 23:41:20.018,2019/01/10 23:41:20.018,174,9,Kiribati
+23,D,2019/01/10 23:43:00.926,2019/01/10 23:43:00.926,176,243,Estonia
+44,C,2019/01/10 23:43:11.639,2019/01/10 23:43:11.639,185,85,Singapore
+32,G,2019/01/10 23:47:18.031,2019/01/10 23:47:18.031,29,241,Poland
+37,G,2019/01/10 23:49:30.539,2019/01/10 23:49:30.539,78,243,Chile
+46,B,2019/01/10 23:50:16.985,2019/01/10 23:50:16.985,4,97,Vatican City
+40,I,2019/01/10 23:50:18.906,2019/01/10 23:50:18.906,212,101,Congo - Kinshasa
+45,F,2019/01/10 23:53:36.321,2019/01/10 23:53:36.321,181,246,Peru
+43,E,2019/01/10 23:57:27.810,2019/01/10 23:57:27.810,254,199,Burundi
+31,F,2019/01/10 23:58:16.349,2019/01/10 23:58:16.349,158,108,Belize
+42,D,2019/01/11 00:05:37.327,2019/01/11 00:05:37.327,184,101,Ghana
+30,E,2019/01/11 00:06:57.733,2019/01/11 00:06:57.733,40,115,Vatican City
+39,E,2019/01/11 00:07:10.765,2019/01/11 00:07:10.765,216,121,Cayman Islands
+47,B,2019/01/11 00:07:25.000,2019/01/11 00:07:25.000,108,30,Cook Islands
+41,C,2019/01/11 00:09:34.943,2019/01/11 00:09:34.943,239,114,Tuvalu
+38,G,2019/01/11 00:10:24.108,2019/01/11 00:10:24.108,116,135,Cambodia
+44,A,2019/01/11 00:11:11.483,2019/01/11 00:11:11.483,121,11,Réunion
+34,K,2019/01/11 00:11:30.969,2019/01/11 00:11:30.969,66,176,Diego Garcia
+23,F,2019/01/11 00:16:21.323,2019/01/11 00:16:21.323,101,174,Faroe Islands
+32,I,2019/01/11 00:17:03.853,2019/01/11 00:17:03.853,13,154,British Indian Ocean Territory
+40,J,2019/01/11 00:18:39.946,2019/01/11 00:18:39.946,114,40,Papua New Guinea
+37,I,2019/01/11 00:18:47.367,2019/01/11 00:18:47.367,203,137,Yemen
+49,A,2019/01/11 00:20:00.000,2019/01/11 00:20:00.000,50,88,Ethiopia
+46,C,2019/01/11 00:22:45.546,2019/01/11 00:22:45.546,42,249,Diego Garcia
+45,E,2019/01/11 00:22:56.532,2019/01/11 00:22:56.532,107,58,Burundi
+43,G,2019/01/11 00:25:38.766,2019/01/11 00:25:38.766,115,229,American Samoa
+31,E,2019/01/11 00:26:06.009,2019/01/11 00:26:06.009,97,108,Cambodia
+42,F,2019/01/11 00:29:09.128,2019/01/11 00:29:09.128,223,107,France
+30,G,2019/01/11 00:34:22.118,2019/01/11 00:34:22.118,118,130,Algeria
+23,E,2019/01/11 00:39:52.615,2019/01/11 00:39:52.615,127,138,Romania
+50,A,2019/01/11 00:40:00.000,2019/01/11 00:40:00.000,72,85,Côte d'Ivoire
+44,B,2019/01/11 00:40:26.720,2019/01/11 00:40:26.720,12,101,Nigeria
+41,A,2019/01/11 00:40:54.138,2019/01/11 00:40:54.138,228,120,Vanuatu
+38,H,2019/01/11 00:41:18.053,2019/01/11 00:41:18.053,99,66,Dominica
+47,C,2019/01/11 00:43:06.729,2019/01/11 00:43:06.729,111,69,Dominica
+39,G,2019/01/11 00:43:18.542,2019/01/11 00:43:18.542,41,131,Monaco
+32,J,2019/01/11 00:43:37.072,2019/01/11 00:43:37.072,67,83,Vatican City
+37,J,2019/01/11 00:46:14.443,2019/01/11 00:46:14.443,25,4,Equatorial Guinea
+34,M,2019/01/11 00:47:46.321,2019/01/11 00:47:46.321,219,195,Bahamas
+40,K,2019/01/11 00:48:14.999,2019/01/11 00:48:14.999,20,250,Thailand
+45,G,2019/01/11 00:50:42.507,2019/01/11 00:50:42.507,97,248,Hong Kong SAR China
+31,G,2019/01/11 00:51:36.384,2019/01/11 00:51:36.384,56,170,Jersey
+49,D,2019/01/11 00:51:54.706,2019/01/11 00:51:54.706,191,4,Algeria
+43,H,2019/01/11 00:54:41.700,2019/01/11 00:54:41.700,22,166,Azerbaijan
+46,A,2019/01/11 00:54:46.477,2019/01/11 00:54:46.477,131,206,Congo - Brazzaville
+51,A,2019/01/11 01:00:00.000,2019/01/11 01:00:00.000,161,13,Serbia
+42,E,2019/01/11 01:00:03.264,2019/01/11 01:00:03.264,255,245,Haiti
+30,I,2019/01/11 01:06:55.020,2019/01/11 01:06:55.020,236,64,British Indian Ocean Territory
+41,B,2019/01/11 01:07:05.389,2019/01/11 01:07:05.389,75,54,Vatican City
+44,C,2019/01/11 01:09:42.583,2019/01/11 01:09:42.583,247,114,Jersey
+47,A,2019/01/11 01:10:45.682,2019/01/11 01:10:45.682,161,115,Sierra Leone
+39,I,2019/01/11 01:11:44.568,2019/01/11 01:11:44.568,252,161,Guinea-Bissau
+50,D,2019/01/11 01:12:00.023,2019/01/11 01:12:00.023,167,205,Thailand
+32,K,2019/01/11 01:12:20.359,2019/01/11 01:12:20.359,142,153,Swaziland
+23,G,2019/01/11 01:14:38.537,2019/01/11 01:14:38.537,84,3,Gabon
+49,F,2019/01/11 01:17:11.013,2019/01/11 01:17:11.013,69,232,Congo - Brazzaville
+31,I,2019/01/11 01:18:57.149,2019/01/11 01:18:57.149,130,140,Martinique
+45,I,2019/01/11 01:18:58.975,2019/01/11 01:18:58.975,210,92,United Arab Emirates
+52,A,2019/01/11 01:20:00.000,2019/01/11 01:20:00.000,185,124,Brazil
+34,N,2019/01/11 01:22:24.879,2019/01/11 01:22:24.879,7,42,Cameroon
+37,L,2019/01/11 01:23:10.637,2019/01/11 01:23:10.637,20,93,Côte d'Ivoire
+40,M,2019/01/11 01:23:22.428,2019/01/11 01:23:22.428,195,79,Turkey
+46,B,2019/01/11 01:26:17.743,2019/01/11 01:26:17.743,253,95,Bolivia
+51,D,2019/01/11 01:27:40.391,2019/01/11 01:27:40.391,99,110,Solomon Islands
+42,G,2019/01/11 01:34:17.621,2019/01/11 01:34:17.621,207,175,Afghanistan
+30,J,2019/01/11 01:36:04.740,2019/01/11 01:36:04.740,197,251,Spain
+41,C,2019/01/11 01:36:19.682,2019/01/11 01:36:19.682,238,75,Singapore
+47,D,2019/01/11 01:36:28.095,2019/01/11 01:36:28.095,11,78,Cyprus
+50,F,2019/01/11 01:39:10.787,2019/01/11 01:39:10.787,35,185,Greenland
+53,A,2019/01/11 01:40:00.000,2019/01/11 01:40:00.000,219,251,British Indian Ocean Territory
+32,M,2019/01/11 01:40:49.867,2019/01/11 01:40:49.867,67,42,Swaziland
+44,A,2019/01/11 01:41:15.433,2019/01/11 01:41:15.433,36,140,Caribbean Netherlands
+39,J,2019/01/11 01:42:09.833,2019/01/11 01:42:09.833,46,14,Diego Garcia
+23,H,2019/01/11 01:45:29.805,2019/01/11 01:45:29.805,71,103,Afghanistan
+49,E,2019/01/11 01:46:27.442,2019/01/11 01:46:27.442,95,245,Sudan
+31,J,2019/01/11 01:46:41.797,2019/01/11 01:46:41.797,1,93,Latvia
+37,M,2019/01/11 01:51:07.630,2019/01/11 01:51:07.630,182,59,Benin
+45,J,2019/01/11 01:52:15.524,2019/01/11 01:52:15.524,129,90,Latvia
+52,B,2019/01/11 01:52:40.240,2019/01/11 01:52:40.240,60,212,Panama
+40,N,2019/01/11 01:54:18.817,2019/01/11 01:54:18.817,14,56,Barbados
+51,F,2019/01/11 01:56:11.374,2019/01/11 01:56:11.374,138,209,Romania
+46,C,2019/01/11 01:57:00.432,2019/01/11 01:57:00.432,182,127,Georgia
+54,A,2019/01/11 02:00:00.000,2019/01/11 02:00:00.000,200,24,Pitcairn Islands
+42,I,2019/01/11 02:00:07.595,2019/01/11 02:00:07.595,1,141,Christmas Island
+41,A,2019/01/11 02:02:35.280,2019/01/11 02:02:35.280,140,195,Caribbean Netherlands
+47,F,2019/01/11 02:05:44.331,2019/01/11 02:05:44.331,180,214,Cook Islands
+53,D,2019/01/11 02:07:00.840,2019/01/11 02:07:00.840,145,136,North Korea
+44,D,2019/01/11 02:07:44.186,2019/01/11 02:07:44.186,154,190,Gambia
+50,E,2019/01/11 02:09:45.477,2019/01/11 02:09:45.477,203,51,Faroe Islands
+30,L,2019/01/11 02:09:51.465,2019/01/11 02:09:51.465,202,8,Denmark
+32,O,2019/01/11 02:12:14.154,2019/01/11 02:12:14.154,184,178,Falkland Islands
+39,L,2019/01/11 02:15:29.724,2019/01/11 02:15:29.724,151,158,Montenegro
+49,G,2019/01/11 02:16:54.506,2019/01/11 02:16:54.506,83,164,Georgia
+31,K,2019/01/11 02:18:02.486,2019/01/11 02:18:02.486,91,245,Monaco
+55,A,2019/01/11 02:20:00.000,2019/01/11 02:20:00.000,183,223,Hungary
+37,O,2019/01/11 02:20:31.479,2019/01/11 02:20:31.479,42,36,South Africa
+52,C,2019/01/11 02:21:44.746,2019/01/11 02:21:44.746,208,52,Nigeria
+46,A,2019/01/11 02:23:41.949,2019/01/11 02:23:41.949,89,166,Kosovo
+45,L,2019/01/11 02:26:28.285,2019/01/11 02:26:28.285,19,44,Cook Islands
+53,F,2019/01/11 02:27:01.876,2019/01/11 02:27:01.876,24,64,Oman
+51,E,2019/01/11 02:27:58.056,2019/01/11 02:27:58.056,109,254,Gambia
+41,D,2019/01/11 02:28:29.090,2019/01/11 02:28:29.090,214,77,Argentina
+42,J,2019/01/11 02:28:57.805,2019/01/11 02:28:57.805,246,137,Luxembourg
+44,F,2019/01/11 02:32:26.136,2019/01/11 02:32:26.136,29,226,Croatia
+54,B,2019/01/11 02:32:28.070,2019/01/11 02:32:28.070,24,157,Iraq
+48,I,2019/01/11 02:33:07.982,2019/01/11 02:33:07.982,39,79,Tonga
+47,E,2019/01/11 02:36:34.071,2019/01/11 02:36:34.071,122,25,Mali
+50,G,2019/01/11 02:38:35.309,2019/01/11 02:38:35.309,107,166,Bulgaria
+56,A,2019/01/11 02:40:00.000,2019/01/11 02:40:00.000,124,211,Liechtenstein
+30,M,2019/01/11 02:41:33.488,2019/01/11 02:41:33.488,124,153,Malta
+31,M,2019/01/11 02:45:28.153,2019/01/11 02:45:28.153,109,99,Christmas Island
+49,H,2019/01/11 02:48:48.729,2019/01/11 02:48:48.729,170,0,Falkland Islands
+55,B,2019/01/11 02:51:23.695,2019/01/11 02:51:23.695,8,252,Kosovo
+52,A,2019/01/11 02:51:26.455,2019/01/11 02:51:26.455,201,218,Latvia
+39,M,2019/01/11 02:51:48.370,2019/01/11 02:51:48.370,56,84,New Caledonia
+42,L,2019/01/11 02:53:23.746,2019/01/11 02:53:23.746,74,111,Israel
+41,F,2019/01/11 02:55:20.187,2019/01/11 02:55:20.187,22,193,Seychelles
+51,G,2019/01/11 02:56:04.976,2019/01/11 02:56:04.976,243,68,Guatemala
+45,M,2019/01/11 02:57:13.942,2019/01/11 02:57:13.942,18,96,Montenegro
+53,E,2019/01/11 02:57:21.805,2019/01/11 02:57:21.805,11,97,Réunion
+46,B,2019/01/11 02:57:54.490,2019/01/11 02:57:54.490,66,13,Samoa
+57,A,2019/01/11 03:00:00.000,2019/01/11 03:00:00.000,109,209,South Africa
+44,E,2019/01/11 03:00:21.469,2019/01/11 03:00:21.469,126,137,Swaziland
+54,C,2019/01/11 03:04:19.661,2019/01/11 03:04:19.661,204,121,Liberia
+48,J,2019/01/11 03:06:30.290,2019/01/11 03:06:30.290,52,36,Namibia
+47,G,2019/01/11 03:06:49.414,2019/01/11 03:06:49.414,87,189,Colombia
+30,N,2019/01/11 03:08:23.592,2019/01/11 03:08:23.592,90,90,Gabon
+56,D,2019/01/11 03:11:11.037,2019/01/11 03:11:11.037,235,245,Cape Verde
+50,H,2019/01/11 03:12:00.087,2019/01/11 03:12:00.087,144,90,Switzerland
+31,O,2019/01/11 03:16:39.318,2019/01/11 03:16:39.318,164,20,Haiti
+39,O,2019/01/11 03:19:07.110,2019/01/11 03:19:07.110,169,228,Ascension Island
+58,A,2019/01/11 03:20:00.000,2019/01/11 03:20:00.000,172,7,Mauritius
+41,E,2019/01/11 03:21:07.830,2019/01/11 03:21:07.830,238,36,Serbia
+52,B,2019/01/11 03:23:06.542,2019/01/11 03:23:06.542,98,34,Croatia
+53,G,2019/01/11 03:23:12.817,2019/01/11 03:23:12.817,245,218,Panama
+55,C,2019/01/11 03:24:00.538,2019/01/11 03:24:00.538,97,241,Equatorial Guinea
+45,O,2019/01/11 03:26:16.169,2019/01/11 03:26:16.169,76,20,Dominican Republic
+44,G,2019/01/11 03:26:41.559,2019/01/11 03:26:41.559,224,47,Barbados
+42,M,2019/01/11 03:27:11.894,2019/01/11 03:27:11.894,68,150,St. Helena
+54,A,2019/01/11 03:27:20.221,2019/01/11 03:27:20.221,187,248,Guadeloupe
+51,I,2019/01/11 03:28:46.326,2019/01/11 03:28:46.326,196,58,Aruba
+57,B,2019/01/11 03:29:08.244,2019/01/11 03:29:08.244,245,93,Iraq
+46,C,2019/01/11 03:31:10.899,2019/01/11 03:31:10.899,90,128,Gibraltar
+48,L,2019/01/11 03:37:20.837,2019/01/11 03:37:20.837,34,224,Barbados
+56,F,2019/01/11 03:38:26.589,2019/01/11 03:38:26.589,235,181,Malaysia
+47,I,2019/01/11 03:38:39.273,2019/01/11 03:38:39.273,225,160,Senegal
+59,A,2019/01/11 03:40:00.000,2019/01/11 03:40:00.000,41,165,Morocco
+58,D,2019/01/11 03:50:36.296,2019/01/11 03:50:36.296,176,206,Lesotho
+41,G,2019/01/11 03:52:13.614,2019/01/11 03:52:13.614,18,115,Mali
+52,C,2019/01/11 03:52:44.580,2019/01/11 03:52:44.580,176,95,South Georgia & South Sandwich Islands
+55,A,2019/01/11 03:53:49.398,2019/01/11 03:53:49.398,144,168,Lesotho
+53,H,2019/01/11 03:54:48.948,2019/01/11 03:54:48.948,239,10,Gabon
+54,B,2019/01/11 03:56:39.969,2019/01/11 03:56:39.969,5,218,Zimbabwe
+57,C,2019/01/11 03:57:18.236,2019/01/11 03:57:18.236,20,98,Mozambique
+42,O,2019/01/11 03:58:16.802,2019/01/11 03:58:16.802,150,108,Jersey
+60,A,2019/01/11 04:00:00.000,2019/01/11 04:00:00.000,163,183,Thailand
+51,J,2019/01/11 04:00:17.811,2019/01/11 04:00:17.811,150,128,Serbia
+44,I,2019/01/11 04:01:10.011,2019/01/11 04:01:10.011,236,202,Svalbard & Jan Mayen
+56,E,2019/01/11 04:02:03.469,2019/01/11 04:02:03.469,86,35,Bolivia
+46,A,2019/01/11 04:02:48.317,2019/01/11 04:02:48.317,85,239,Mozambique
+48,M,2019/01/11 04:02:48.865,2019/01/11 04:02:48.865,235,15,Swaziland
+59,D,2019/01/11 04:10:04.102,2019/01/11 04:10:04.102,119,138,Mauritania
+47,J,2019/01/11 04:14:24.641,2019/01/11 04:14:24.641,145,31,Mali
+58,F,2019/01/11 04:18:04.200,2019/01/11 04:18:04.200,88,27,Greece
+61,A,2019/01/11 04:20:00.000,2019/01/11 04:20:00.000,7,122,Sudan
+41,I,2019/01/11 04:23:36.369,2019/01/11 04:23:36.369,230,178,Greenland
+55,D,2019/01/11 04:24:50.093,2019/01/11 04:24:50.093,44,205,Antarctica
+60,B,2019/01/11 04:25:10.001,2019/01/11 04:25:10.001,222,225,Maldives
+57,A,2019/01/11 04:25:16.978,2019/01/11 04:25:16.978,87,11,Egypt
+52,A,2019/01/11 04:26:33.508,2019/01/11 04:26:33.508,91,86,Kosovo
+56,G,2019/01/11 04:28:57.710,2019/01/11 04:28:57.710,159,83,Samoa
+54,C,2019/01/11 04:29:46.287,2019/01/11 04:29:46.287,173,79,Iceland
+51,L,2019/01/11 04:30:37.718,2019/01/11 04:30:37.718,34,148,Italy
+44,J,2019/01/11 04:30:53.135,2019/01/11 04:30:53.135,22,253,Dominica
+46,D,2019/01/11 04:31:26.557,2019/01/11 04:31:26.557,197,46,Cyprus
+48,O,2019/01/11 04:34:27.753,2019/01/11 04:34:27.753,34,158,Morocco
+62,A,2019/01/11 04:40:00.000,2019/01/11 04:40:00.000,100,92,Taiwan
+59,F,2019/01/11 04:44:15.320,2019/01/11 04:44:15.320,183,132,Macau SAR China
+47,L,2019/01/11 04:46:48.580,2019/01/11 04:46:48.580,230,198,São Tomé and Príncipe
+58,E,2019/01/11 04:49:52.441,2019/01/11 04:49:52.441,206,195,Haiti
+55,F,2019/01/11 04:51:24.003,2019/01/11 04:51:24.003,197,46,Croatia
+61,B,2019/01/11 04:52:30.045,2019/01/11 04:52:30.045,248,115,Paraguay
+57,D,2019/01/11 04:53:14.262,2019/01/11 04:53:14.262,35,252,Eritrea
+52,B,2019/01/11 04:54:57.302,2019/01/11 04:54:57.302,136,170,Liechtenstein
+41,J,2019/01/11 04:57:12.682,2019/01/11 04:57:12.682,71,142,Iceland
+60,C,2019/01/11 04:59:18.564,2019/01/11 04:59:18.564,227,242,Palestinian Territories
+46,F,2019/01/11 04:59:41.818,2019/01/11 04:59:41.818,202,187,Luxembourg
+44,K,2019/01/11 05:01:07.196,2019/01/11 05:01:07.196,203,39,Christmas Island
+51,M,2019/01/11 05:01:12.852,2019/01/11 05:01:12.852,164,185,United States
+54,A,2019/01/11 05:01:19.639,2019/01/11 05:01:19.639,191,192,Syria
+56,H,2019/01/11 05:04:20.415,2019/01/11 05:04:20.415,54,56,Bolivia
+62,D,2019/01/11 05:10:30.553,2019/01/11 05:10:30.553,167,180,Antarctica
+47,M,2019/01/11 05:15:18.109,2019/01/11 05:15:18.109,223,182,Switzerland
+59,E,2019/01/11 05:18:43.735,2019/01/11 05:18:43.735,25,190,Syria
+64,A,2019/01/11 05:20:00.000,2019/01/11 05:20:00.000,75,5,Paraguay
+58,G,2019/01/11 05:21:36.684,2019/01/11 05:21:36.684,8,149,Tanzania
+52,C,2019/01/11 05:22:32.123,2019/01/11 05:22:32.123,208,134,Togo
+61,C,2019/01/11 05:23:26.915,2019/01/11 05:23:26.915,100,134,Cayman Islands
+55,E,2019/01/11 05:25:06.641,2019/01/11 05:25:06.641,214,132,Micronesia
+57,F,2019/01/11 05:25:24.094,2019/01/11 05:25:24.094,146,65,Guinea-Bissau
+41,L,2019/01/11 05:26:38.907,2019/01/11 05:26:38.907,231,120,Barbados
+60,A,2019/01/11 05:29:56.709,2019/01/11 05:29:56.709,138,149,Portugal
+46,E,2019/01/11 05:30:05.656,2019/01/11 05:30:05.656,139,57,Chad
+54,D,2019/01/11 05:31:33.555,2019/01/11 05:31:33.555,187,183,Singapore
+44,M,2019/01/11 05:33:08.673,2019/01/11 05:33:08.673,49,198,Andorra
+51,N,2019/01/11 05:35:30.884,2019/01/11 05:35:30.884,192,106,Belarus
+65,A,2019/01/11 05:40:00.000,2019/01/11 05:40:00.000,56,219,Anguilla
+62,F,2019/01/11 05:43:24.784,2019/01/11 05:43:24.784,121,129,Grenada
+47,N,2019/01/11 05:45:28.095,2019/01/11 05:45:28.095,86,231,Argentina
+55,G,2019/01/11 05:49:35.827,2019/01/11 05:49:35.827,131,10,Jamaica
+64,D,2019/01/11 05:49:45.280,2019/01/11 05:49:45.280,103,190,Mauritania
+59,G,2019/01/11 05:51:13.151,2019/01/11 05:51:13.151,252,1,Grenada
+61,A,2019/01/11 05:51:40.261,2019/01/11 05:51:40.261,204,226,Zimbabwe
+58,H,2019/01/11 05:52:14.495,2019/01/11 05:52:14.495,191,121,Congo - Kinshasa
+52,A,2019/01/11 05:53:44.854,2019/01/11 05:53:44.854,56,103,Ethiopia
+57,E,2019/01/11 05:55:46.582,2019/01/11 05:55:46.582,21,21,Ghana
+41,M,2019/01/11 05:57:45.435,2019/01/11 05:57:45.435,165,218,Jordan
+54,F,2019/01/11 06:00:14.069,2019/01/11 06:00:14.069,93,60,Tristan da Cunha
+46,G,2019/01/11 06:01:31.030,2019/01/11 06:01:31.030,117,246,Kazakhstan
+60,B,2019/01/11 06:02:27.387,2019/01/11 06:02:27.387,66,59,Botswana
+44,O,2019/01/11 06:03:45.887,2019/01/11 06:03:45.887,122,69,San Marino
+65,D,2019/01/11 06:05:42.176,2019/01/11 06:05:42.176,36,134,Guyana
+62,E,2019/01/11 06:07:00.956,2019/01/11 06:07:00.956,175,1,Bahrain
+61,B,2019/01/11 06:19:45.274,2019/01/11 06:19:45.274,19,0,Bangladesh
+67,A,2019/01/11 06:20:00.000,2019/01/11 06:20:00.000,65,202,Gibraltar
+64,F,2019/01/11 06:20:30.090,2019/01/11 06:20:30.090,131,17,Solomon Islands
+55,I,2019/01/11 06:22:44.461,2019/01/11 06:22:44.461,164,121,Andorra
+41,N,2019/01/11 06:23:36.256,2019/01/11 06:23:36.256,140,129,Chad
+59,I,2019/01/11 06:24:22.091,2019/01/11 06:24:22.091,160,99,Mali
+57,G,2019/01/11 06:24:24.165,2019/01/11 06:24:24.165,124,17,Paraguay
+52,B,2019/01/11 06:28:03.392,2019/01/11 06:28:03.392,222,194,Ceuta & Melilla
+46,I,2019/01/11 06:28:17.769,2019/01/11 06:28:17.769,151,94,Nauru
+54,E,2019/01/11 06:30:41.521,2019/01/11 06:30:41.521,39,26,Botswana
+60,C,2019/01/11 06:33:22.846,2019/01/11 06:33:22.846,164,165,Norway
+65,F,2019/01/11 06:33:28.741,2019/01/11 06:33:28.741,201,82,Cameroon
+62,G,2019/01/11 06:37:07.312,2019/01/11 06:37:07.312,25,202,Malawi
+68,A,2019/01/11 06:40:00.000,2019/01/11 06:40:00.000,98,212,Maldives
+64,E,2019/01/11 06:51:46.944,2019/01/11 06:51:46.944,245,131,Turks & Caicos Islands
+61,C,2019/01/11 06:51:54.004,2019/01/11 06:51:54.004,105,99,Trinidad & Tobago
+57,H,2019/01/11 06:52:34.371,2019/01/11 06:52:34.371,204,190,Aruba
+55,J,2019/01/11 06:54:16.824,2019/01/11 06:54:16.824,97,171,South Sudan
+67,D,2019/01/11 06:56:05.310,2019/01/11 06:56:05.310,120,173,Jersey
+52,C,2019/01/11 06:57:39.707,2019/01/11 06:57:39.707,224,21,Dominica
+46,J,2019/01/11 06:58:55.223,2019/01/11 06:58:55.223,212,224,Romania
+69,A,2019/01/11 07:00:00.000,2019/01/11 07:00:00.000,233,29,Myanmar (Burma)
+59,J,2019/01/11 07:04:15.363,2019/01/11 07:04:15.363,161,165,Iran
+54,G,2019/01/11 07:05:04.670,2019/01/11 07:05:04.670,98,18,Nicaragua
+60,A,2019/01/11 07:05:53.200,2019/01/11 07:05:53.200,230,222,Brazil
+68,B,2019/01/11 07:05:54.495,2019/01/11 07:05:54.495,0,143,South Georgia & South Sandwich Islands
+65,E,2019/01/11 07:06:14.465,2019/01/11 07:06:14.465,210,157,Bahamas
+62,H,2019/01/11 07:10:48.235,2019/01/11 07:10:48.235,126,7,Bosnia & Herzegovina
+64,G,2019/01/11 07:17:05.205,2019/01/11 07:17:05.205,207,30,Mozambique
+70,A,2019/01/11 07:20:00.000,2019/01/11 07:20:00.000,173,244,Monaco
+61,A,2019/01/11 07:21:29.262,2019/01/11 07:21:29.262,123,233,Macau SAR China
+52,A,2019/01/11 07:24:29.379,2019/01/11 07:24:29.379,125,22,Nicaragua
+55,K,2019/01/11 07:24:49.222,2019/01/11 07:24:49.222,111,2,Philippines
+67,F,2019/01/11 07:26:46.059,2019/01/11 07:26:46.059,126,146,Falkland Islands
+46,K,2019/01/11 07:28:52.346,2019/01/11 07:28:52.346,211,157,Montenegro
+65,G,2019/01/11 07:31:47.119,2019/01/11 07:31:47.119,255,208,Palestinian Territories
+68,C,2019/01/11 07:31:50.858,2019/01/11 07:31:50.858,229,230,Mexico
+59,K,2019/01/11 07:32:50.971,2019/01/11 07:32:50.971,143,96,Palestinian Territories
+69,B,2019/01/11 07:33:31.278,2019/01/11 07:33:31.278,89,114,Latvia
+60,D,2019/01/11 07:33:57.868,2019/01/11 07:33:57.868,68,1,Faroe Islands
+54,I,2019/01/11 07:34:30.558,2019/01/11 07:34:30.558,186,237,Micronesia
+71,A,2019/01/11 07:40:00.000,2019/01/11 07:40:00.000,141,7,Brazil
+64,I,2019/01/11 07:44:28.492,2019/01/11 07:44:28.492,25,95,Poland
+70,B,2019/01/11 07:45:41.798,2019/01/11 07:45:41.798,198,22,Belgium
+52,D,2019/01/11 07:51:02.984,2019/01/11 07:51:02.984,102,65,Iceland
+63,E,2019/01/11 07:52:24.621,2019/01/11 07:52:24.621,114,31,Syria
+55,M,2019/01/11 07:53:24.986,2019/01/11 07:53:24.986,228,223,Gabon
+61,B,2019/01/11 07:54:36.535,2019/01/11 07:54:36.535,106,163,Curaçao
+46,M,2019/01/11 07:55:25.644,2019/01/11 07:55:25.644,1,93,Lebanon
+67,E,2019/01/11 07:55:56.276,2019/01/11 07:55:56.276,233,21,Eritrea
+54,J,2019/01/11 07:58:59.150,2019/01/11 07:58:59.150,95,50,Kazakhstan
+72,A,2019/01/11 08:00:00.000,2019/01/11 08:00:00.000,214,55,El Salvador
+65,I,2019/01/11 08:00:00.803,2019/01/11 08:00:00.803,221,162,Seychelles
+60,F,2019/01/11 08:00:44.974,2019/01/11 08:00:44.974,238,243,Pakistan
+68,A,2019/01/11 08:00:57.446,2019/01/11 08:00:57.446,171,80,Bulgaria
+69,C,2019/01/11 08:02:12.215,2019/01/11 08:02:12.215,130,151,Montserrat
+59,M,2019/01/11 08:03:37.955,2019/01/11 08:03:37.955,34,203,Slovakia
+71,B,2019/01/11 08:11:33.467,2019/01/11 08:11:33.467,60,79,Martinique
+64,J,2019/01/11 08:15:18.241,2019/01/11 08:15:18.241,112,219,Cameroon
+70,C,2019/01/11 08:15:47.218,2019/01/11 08:15:47.218,26,239,Kosovo
+73,A,2019/01/11 08:20:00.000,2019/01/11 08:20:00.000,26,66,Niger
+52,F,2019/01/11 08:21:03.769,2019/01/11 08:21:03.769,91,35,Comoros
+61,C,2019/01/11 08:21:14.656,2019/01/11 08:21:14.656,71,193,American Samoa
+72,B,2019/01/11 08:21:32.840,2019/01/11 08:21:32.840,76,75,Costa Rica
+66,I,2019/01/11 08:22:25.199,2019/01/11 08:22:25.199,196,26,Botswana
+63,G,2019/01/11 08:22:45.472,2019/01/11 08:22:45.472,142,115,Indonesia
+55,O,2019/01/11 08:25:53.996,2019/01/11 08:25:53.996,49,171,Sierra Leone
+46,N,2019/01/11 08:29:08.847,2019/01/11 08:29:08.847,2,191,South Africa
+68,B,2019/01/11 08:29:48.831,2019/01/11 08:29:48.831,1,247,Bangladesh
+67,G,2019/01/11 08:30:39.713,2019/01/11 08:30:39.713,121,210,St. Martin
+69,A,2019/01/11 08:31:02.707,2019/01/11 08:31:02.707,87,48,Ethiopia
+54,L,2019/01/11 08:32:12.345,2019/01/11 08:32:12.345,0,255,Togo
+65,J,2019/01/11 08:32:41.385,2019/01/11 08:32:41.385,173,216,Pitcairn Islands
+59,O,2019/01/11 08:33:11.605,2019/01/11 08:33:11.605,110,98,Spain
+60,E,2019/01/11 08:33:35.600,2019/01/11 08:33:35.600,142,164,Ecuador
+71,C,2019/01/11 08:37:47.366,2019/01/11 08:37:47.366,206,254,Zimbabwe
+74,A,2019/01/11 08:40:00.000,2019/01/11 08:40:00.000,236,98,St. Barthélemy
+64,K,2019/01/11 08:43:59.007,2019/01/11 08:43:59.007,23,198,Cameroon
+70,A,2019/01/11 08:46:46.420,2019/01/11 08:46:46.420,255,251,Martinique
+73,B,2019/01/11 08:48:45.978,2019/01/11 08:48:45.978,78,10,Cape Verde
+63,I,2019/01/11 08:50:09.967,2019/01/11 08:50:09.967,241,201,Jersey
+52,E,2019/01/11 08:51:40.519,2019/01/11 08:51:40.519,215,186,Vanuatu
+66,J,2019/01/11 08:52:03.813,2019/01/11 08:52:03.813,16,103,Cyprus
+61,A,2019/01/11 08:54:31.139,2019/01/11 08:54:31.139,193,163,El Salvador
+67,H,2019/01/11 08:55:13.865,2019/01/11 08:55:13.865,166,242,France
+72,C,2019/01/11 08:56:36.163,2019/01/11 08:56:36.163,80,237,South Georgia & South Sandwich Islands
+75,A,2019/01/11 09:00:00.000,2019/01/11 09:00:00.000,62,252,Kuwait
+54,M,2019/01/11 09:01:23.836,2019/01/11 09:01:23.836,234,167,Paraguay
+69,B,2019/01/11 09:01:26.807,2019/01/11 09:01:26.807,24,62,Guernsey
+60,G,2019/01/11 09:02:47.062,2019/01/11 09:02:47.062,160,43,France
+68,C,2019/01/11 09:03:46.372,2019/01/11 09:03:46.372,196,53,Nicaragua
+65,L,2019/01/11 09:05:57.815,2019/01/11 09:05:57.815,124,173,Denmark
+74,B,2019/01/11 09:09:49.554,2019/01/11 09:09:49.554,176,50,Liechtenstein
+64,M,2019/01/11 09:14:07.018,2019/01/11 09:14:07.018,28,101,Cameroon
+71,A,2019/01/11 09:15:06.775,2019/01/11 09:15:06.775,109,175,Diego Garcia
+70,B,2019/01/11 09:17:14.569,2019/01/11 09:17:14.569,159,31,France
+73,C,2019/01/11 09:17:22.493,2019/01/11 09:17:22.493,255,17,Pitcairn Islands
+63,J,2019/01/11 09:18:31.948,2019/01/11 09:18:31.948,156,89,Qatar
+52,G,2019/01/11 09:19:24.897,2019/01/11 09:19:24.897,6,17,Tunisia
+61,D,2019/01/11 09:24:32.582,2019/01/11 09:24:32.582,189,15,Panama
+66,L,2019/01/11 09:26:07.508,2019/01/11 09:26:07.508,128,243,Tristan da Cunha
+54,N,2019/01/11 09:29:54.681,2019/01/11 09:29:54.681,149,37,Saudi Arabia
+72,A,2019/01/11 09:30:43.064,2019/01/11 09:30:43.064,109,251,Portugal
+75,D,2019/01/11 09:31:14.672,2019/01/11 09:31:14.672,200,230,Niger
+60,H,2019/01/11 09:33:40.865,2019/01/11 09:33:40.865,89,11,French Southern Territories
+68,A,2019/01/11 09:33:53.386,2019/01/11 09:33:53.386,75,248,Belize
+65,M,2019/01/11 09:38:24.926,2019/01/11 09:38:24.926,15,222,Yemen
+69,C,2019/01/11 09:39:18.719,2019/01/11 09:39:18.719,185,205,Macau SAR China
+74,C,2019/01/11 09:39:56.812,2019/01/11 09:39:56.812,96,210,Congo - Kinshasa
+77,A,2019/01/11 09:40:00.000,2019/01/11 09:40:00.000,179,125,New Zealand
+64,N,2019/01/11 09:43:23.975,2019/01/11 09:43:23.975,45,63,Guadeloupe
+73,A,2019/01/11 09:44:22.540,2019/01/11 09:44:22.540,189,162,British Virgin Islands
+71,D,2019/01/11 09:46:40.553,2019/01/11 09:46:40.553,14,72,Albania
+63,L,2019/01/11 09:47:14.962,2019/01/11 09:47:14.962,37,44,Seychelles
+70,C,2019/01/11 09:48:03.476,2019/01/11 09:48:03.476,143,53,Martinique
+52,H,2019/01/11 09:50:00.605,2019/01/11 09:50:00.605,36,60,Norfolk Island
+68,D,2019/01/11 09:52:03.460,2019/01/11 09:52:03.460,232,199,Mali
+61,F,2019/01/11 09:54:10.467,2019/01/11 09:54:10.467,142,239,Montenegro
+66,M,2019/01/11 09:58:42.687,2019/01/11 09:58:42.687,163,232,Cuba
+78,A,2019/01/11 10:00:00.000,2019/01/11 10:00:00.000,148,151,Palau
+75,F,2019/01/11 10:01:57.234,2019/01/11 10:01:57.234,66,156,Malawi
+72,D,2019/01/11 10:02:24.971,2019/01/11 10:02:24.971,55,32,Luxembourg
+65,O,2019/01/11 10:04:47.154,2019/01/11 10:04:47.154,177,3,Jamaica
+69,A,2019/01/11 10:06:12.580,2019/01/11 10:06:12.580,98,151,Romania
+77,D,2019/01/11 10:08:30.601,2019/01/11 10:08:30.601,151,2,Jersey
+74,A,2019/01/11 10:11:08.901,2019/01/11 10:11:08.901,112,32,Lesotho
+73,B,2019/01/11 10:16:40.693,2019/01/11 10:16:40.693,67,152,Estonia
+63,M,2019/01/11 10:17:17.121,2019/01/11 10:17:17.121,93,195,Ethiopia
+71,F,2019/01/11 10:17:38.795,2019/01/11 10:17:38.795,183,60,Cuba
+79,A,2019/01/11 10:20:00.000,2019/01/11 10:20:00.000,139,66,Anguilla
+68,F,2019/01/11 10:20:32.095,2019/01/11 10:20:32.095,49,168,Kiribati
+70,A,2019/01/11 10:21:28.076,2019/01/11 10:21:28.076,254,39,Romania
+61,E,2019/01/11 10:23:04.378,2019/01/11 10:23:04.378,251,135,French Guiana
+66,O,2019/01/11 10:30:23.381,2019/01/11 10:30:23.381,167,137,Togo
+72,F,2019/01/11 10:31:20.947,2019/01/11 10:31:20.947,197,121,Jamaica
+78,B,2019/01/11 10:32:14.323,2019/01/11 10:32:14.323,166,93,Rwanda
+75,E,2019/01/11 10:33:29.665,2019/01/11 10:33:29.665,137,140,Serbia
+69,D,2019/01/11 10:36:31.036,2019/01/11 10:36:31.036,193,107,Liberia
+77,F,2019/01/11 10:37:03.315,2019/01/11 10:37:03.315,53,162,Bahamas
+80,A,2019/01/11 10:40:00.000,2019/01/11 10:40:00.000,229,93,Pakistan
+74,B,2019/01/11 10:41:24.158,2019/01/11 10:41:24.158,90,243,Jordan
+73,C,2019/01/11 10:44:25.953,2019/01/11 10:44:25.953,128,118,Sweden
+63,O,2019/01/11 10:46:55.064,2019/01/11 10:46:55.064,107,14,Angola
+71,E,2019/01/11 10:47:01.825,2019/01/11 10:47:01.825,237,85,Algeria
+79,B,2019/01/11 10:50:18.901,2019/01/11 10:50:18.901,193,111,Malawi
+61,G,2019/01/11 10:54:50.681,2019/01/11 10:54:50.681,183,99,St. Kitts & Nevis
+68,E,2019/01/11 10:55:12.769,2019/01/11 10:55:12.769,74,129,Sint Maarten
+70,D,2019/01/11 10:56:50.829,2019/01/11 10:56:50.829,2,73,Zimbabwe
+78,C,2019/01/11 10:58:32.730,2019/01/11 10:58:32.730,249,89,St. Pierre & Miquelon
+81,A,2019/01/11 11:00:00.000,2019/01/11 11:00:00.000,209,48,Moldova
+77,E,2019/01/11 11:04:27.505,2019/01/11 11:04:27.505,213,184,Falkland Islands
+69,F,2019/01/11 11:05:35.086,2019/01/11 11:05:35.086,251,168,Falkland Islands
+72,E,2019/01/11 11:06:05.805,2019/01/11 11:06:05.805,144,147,Guam
+80,B,2019/01/11 11:07:05.746,2019/01/11 11:07:05.746,155,231,Benin
+75,G,2019/01/11 11:07:41.296,2019/01/11 11:07:41.296,54,111,Sri Lanka
+71,G,2019/01/11 11:10:15.016,2019/01/11 11:10:15.016,220,147,Argentina
+73,A,2019/01/11 11:13:58.521,2019/01/11 11:13:58.521,112,211,Georgia
+74,C,2019/01/11 11:16:19.735,2019/01/11 11:16:19.735,29,230,Seychelles
+68,G,2019/01/11 11:21:03.608,2019/01/11 11:21:03.608,32,53,Kuwait
+61,H,2019/01/11 11:23:35.420,2019/01/11 11:23:35.420,94,191,Oman
+70,F,2019/01/11 11:25:01.979,2019/01/11 11:25:01.979,91,55,Belgium
+79,C,2019/01/11 11:26:15.765,2019/01/11 11:26:15.765,146,197,Spain
+78,A,2019/01/11 11:29:13.211,2019/01/11 11:29:13.211,2,165,Honduras
+81,B,2019/01/11 11:31:11.241,2019/01/11 11:31:11.241,109,244,Poland
+77,G,2019/01/11 11:32:48.173,2019/01/11 11:32:48.173,243,23,Nigeria
+69,E,2019/01/11 11:34:29.161,2019/01/11 11:34:29.161,119,36,Iceland
+71,H,2019/01/11 11:36:26.007,2019/01/11 11:36:26.007,148,214,Swaziland
+80,C,2019/01/11 11:37:04.792,2019/01/11 11:37:04.792,114,45,St. Lucia
+75,H,2019/01/11 11:37:44.384,2019/01/11 11:37:44.384,118,152,Cuba
+73,D,2019/01/11 11:38:14.276,2019/01/11 11:38:14.276,227,133,Barbados
+72,G,2019/01/11 11:38:14.294,2019/01/11 11:38:14.294,49,92,Chad
+83,A,2019/01/11 11:40:00.000,2019/01/11 11:40:00.000,211,52,St. Martin
+74,A,2019/01/11 11:44:33.091,2019/01/11 11:44:33.091,24,145,Guyana
+68,H,2019/01/11 11:46:52.300,2019/01/11 11:46:52.300,247,206,New Zealand
+79,A,2019/01/11 11:55:10.631,2019/01/11 11:55:10.631,33,152,Chad
+78,D,2019/01/11 11:57:19.495,2019/01/11 11:57:19.495,136,82,Luxembourg
+70,E,2019/01/11 11:58:04.948,2019/01/11 11:58:04.948,130,231,Micronesia
+69,G,2019/01/11 11:59:56.005,2019/01/11 11:59:56.005,19,158,Sri Lanka
+84,A,2019/01/11 12:00:00.000,2019/01/11 12:00:00.000,105,31,Portugal
+77,I,2019/01/11 12:01:59.634,2019/01/11 12:01:59.634,76,242,Azerbaijan
+73,F,2019/01/11 12:04:49.649,2019/01/11 12:04:49.649,102,223,United Arab Emirates
+80,A,2019/01/11 12:05:30.831,2019/01/11 12:05:30.831,253,182,Barbados
+81,C,2019/01/11 12:06:55.941,2019/01/11 12:06:55.941,190,210,Hong Kong SAR China
+72,I,2019/01/11 12:09:11.738,2019/01/11 12:09:11.738,28,121,Sri Lanka
+83,B,2019/01/11 12:13:20.001,2019/01/11 12:13:20.001,253,224,India
+74,B,2019/01/11 12:17:05.055,2019/01/11 12:17:05.055,87,65,Panama
+78,F,2019/01/11 12:25:28.717,2019/01/11 12:25:28.717,165,255,Senegal
+79,B,2019/01/11 12:25:46.247,2019/01/11 12:25:46.247,39,190,Norway
+84,B,2019/01/11 12:26:24.850,2019/01/11 12:26:24.850,91,226,Cocos (Keeling) Islands
+70,G,2019/01/11 12:28:23.161,2019/01/11 12:28:23.161,68,198,Western Sahara
+80,B,2019/01/11 12:31:51.809,2019/01/11 12:31:51.809,252,221,Panama
+69,H,2019/01/11 12:32:39.811,2019/01/11 12:32:39.811,248,171,Kuwait
+77,J,2019/01/11 12:32:52.363,2019/01/11 12:32:52.363,20,238,Ecuador
+73,E,2019/01/11 12:35:23.167,2019/01/11 12:35:23.167,47,231,Romania
+81,A,2019/01/11 12:36:25.446,2019/01/11 12:36:25.446,241,111,Marshall Islands
+86,A,2019/01/11 12:40:00.000,2019/01/11 12:40:00.000,240,106,Venezuela
+83,C,2019/01/11 12:40:11.638,2019/01/11 12:40:11.638,99,250,Cayman Islands
+72,J,2019/01/11 12:45:20.683,2019/01/11 12:45:20.683,198,108,Lesotho
+74,C,2019/01/11 12:50:22.777,2019/01/11 12:50:22.777,234,1,Ireland
+78,E,2019/01/11 12:52:09.863,2019/01/11 12:52:09.863,171,25,Sweden
+70,H,2019/01/11 12:56:46.560,2019/01/11 12:56:46.560,119,173,Ireland
+84,C,2019/01/11 12:57:37.124,2019/01/11 12:57:37.124,98,178,British Virgin Islands
+79,C,2019/01/11 12:59:51.922,2019/01/11 12:59:51.922,169,106,Marshall Islands
+87,A,2019/01/11 13:00:00.000,2019/01/11 13:00:00.000,43,228,Niger
+77,K,2019/01/11 13:01:12.034,2019/01/11 13:01:12.034,135,137,Albania
+80,C,2019/01/11 13:02:26.305,2019/01/11 13:02:26.305,242,107,Sweden
+73,G,2019/01/11 13:04:49.366,2019/01/11 13:04:49.366,86,100,Guinea-Bissau
+81,B,2019/01/11 13:07:42.184,2019/01/11 13:07:42.184,66,198,French Polynesia
+86,D,2019/01/11 13:07:47.991,2019/01/11 13:07:47.991,126,27,Mauritania
+83,A,2019/01/11 13:07:50.701,2019/01/11 13:07:50.701,47,199,Tunisia
+74,A,2019/01/11 13:15:38.716,2019/01/11 13:15:38.716,226,17,Iceland
+72,K,2019/01/11 13:18:08.654,2019/01/11 13:18:08.654,254,98,Guinea-Bissau
+78,G,2019/01/11 13:18:11.662,2019/01/11 13:18:11.662,50,29,Belgium
+88,A,2019/01/11 13:20:00.000,2019/01/11 13:20:00.000,74,198,Samoa
+87,B,2019/01/11 13:26:24.827,2019/01/11 13:26:24.827,154,4,Puerto Rico
+84,A,2019/01/11 13:28:48.668,2019/01/11 13:28:48.668,40,168,St. Kitts & Nevis
+77,M,2019/01/11 13:30:27.947,2019/01/11 13:30:27.947,165,193,Croatia
+79,A,2019/01/11 13:31:17.434,2019/01/11 13:31:17.434,233,198,China
+86,F,2019/01/11 13:31:24.668,2019/01/11 13:31:24.668,222,156,South Sudan
+80,A,2019/01/11 13:33:45.065,2019/01/11 13:33:45.065,193,168,Mali
+81,C,2019/01/11 13:38:11.132,2019/01/11 13:38:11.132,19,172,Jersey
+89,A,2019/01/11 13:40:00.000,2019/01/11 13:40:00.000,86,161,Lebanon
+73,H,2019/01/11 13:41:05.104,2019/01/11 13:41:05.104,252,89,Marshall Islands
+85,E,2019/01/11 13:42:28.458,2019/01/11 13:42:28.458,238,76,Norfolk Island
+83,B,2019/01/11 13:43:39.048,2019/01/11 13:43:39.048,83,251,Venezuela
+74,D,2019/01/11 13:43:53.658,2019/01/11 13:43:53.658,186,228,Georgia
+72,M,2019/01/11 13:48:46.086,2019/01/11 13:48:46.086,14,184,Norfolk Island
+78,H,2019/01/11 13:49:01.736,2019/01/11 13:49:01.736,120,103,Costa Rica
+88,D,2019/01/11 13:51:40.774,2019/01/11 13:51:40.774,211,81,Lithuania
+87,C,2019/01/11 13:58:07.854,2019/01/11 13:58:07.854,80,156,Malaysia
+77,N,2019/01/11 13:59:02.404,2019/01/11 13:59:02.404,101,37,New Caledonia
+79,D,2019/01/11 13:59:39.136,2019/01/11 13:59:39.136,207,161,Niger
+90,A,2019/01/11 14:00:00.000,2019/01/11 14:00:00.000,238,203,Gibraltar
+84,D,2019/01/11 14:04:33.633,2019/01/11 14:04:33.633,171,176,Czech Republic
+80,D,2019/01/11 14:05:07.227,2019/01/11 14:05:07.227,99,73,Sweden
+86,E,2019/01/11 14:07:33.235,2019/01/11 14:07:33.235,132,225,Turkmenistan
+74,F,2019/01/11 14:11:12.069,2019/01/11 14:11:12.069,240,1,Laos
+83,C,2019/01/11 14:11:25.568,2019/01/11 14:11:25.568,94,6,Ecuador
+81,A,2019/01/11 14:11:40.962,2019/01/11 14:11:40.962,123,81,Monaco
+89,B,2019/01/11 14:11:57.458,2019/01/11 14:11:57.458,7,223,Bermuda
+72,N,2019/01/11 14:12:18.027,2019/01/11 14:12:18.027,73,146,Georgia
+85,G,2019/01/11 14:14:17.056,2019/01/11 14:14:17.056,249,192,Cape Verde
+88,F,2019/01/11 14:15:33.294,2019/01/11 14:15:33.294,44,198,Hong Kong SAR China
+91,A,2019/01/11 14:20:00.000,2019/01/11 14:20:00.000,123,114,Sudan
+87,A,2019/01/11 14:21:48.777,2019/01/11 14:21:48.777,163,127,Oman
+84,F,2019/01/11 14:28:51.303,2019/01/11 14:28:51.303,250,243,British Virgin Islands
+76,C,2019/01/11 14:29:01.089,2019/01/11 14:29:01.089,222,18,Kosovo
+90,B,2019/01/11 14:31:12.294,2019/01/11 14:31:12.294,110,137,Iceland
+79,F,2019/01/11 14:33:51.047,2019/01/11 14:33:51.047,24,164,Diego Garcia
+89,C,2019/01/11 14:36:24.288,2019/01/11 14:36:24.288,206,210,Andorra
+86,G,2019/01/11 14:38:05.833,2019/01/11 14:38:05.833,233,17,Chad
+74,E,2019/01/11 14:38:53.791,2019/01/11 14:38:53.791,247,76,Peru
+92,A,2019/01/11 14:40:00.000,2019/01/11 14:40:00.000,52,137,Qatar
+80,F,2019/01/11 14:40:00.177,2019/01/11 14:40:00.177,60,32,British Virgin Islands
+81,B,2019/01/11 14:40:47.350,2019/01/11 14:40:47.350,177,166,Timor-Leste
+83,A,2019/01/11 14:42:27.044,2019/01/11 14:42:27.044,202,176,Japan
+88,E,2019/01/11 14:44:41.984,2019/01/11 14:44:41.984,123,186,Costa Rica
+85,H,2019/01/11 14:48:30.883,2019/01/11 14:48:30.883,187,239,Mayotte
+87,B,2019/01/11 14:51:09.572,2019/01/11 14:51:09.572,21,223,Zambia
+91,B,2019/01/11 14:51:54.453,2019/01/11 14:51:54.453,26,6,Comoros
+84,E,2019/01/11 14:54:01.166,2019/01/11 14:54:01.166,168,200,Cocos (Keeling) Islands
+76,A,2019/01/11 14:54:27.166,2019/01/11 14:54:27.166,196,137,Finland
+90,C,2019/01/11 14:58:18.072,2019/01/11 14:58:18.072,254,226,El Salvador
+86,H,2019/01/11 15:04:38.616,2019/01/11 15:04:38.616,168,237,Jamaica
+79,E,2019/01/11 15:06:55.074,2019/01/11 15:06:55.074,1,238,Wallis & Futuna
+74,G,2019/01/11 15:07:50.005,2019/01/11 15:07:50.005,63,77,Uruguay
+89,A,2019/01/11 15:07:55.084,2019/01/11 15:07:55.084,85,163,Bermuda
+80,E,2019/01/11 15:08:10.318,2019/01/11 15:08:10.318,182,5,Equatorial Guinea
+83,D,2019/01/11 15:10:54.857,2019/01/11 15:10:54.857,56,23,Kuwait
+92,D,2019/01/11 15:12:46.490,2019/01/11 15:12:46.490,111,155,Seychelles
+81,C,2019/01/11 15:17:47.644,2019/01/11 15:17:47.644,60,101,Singapore
+91,C,2019/01/11 15:18:42.825,2019/01/11 15:18:42.825,28,114,Chile
+88,G,2019/01/11 15:18:44.384,2019/01/11 15:18:44.384,16,225,United Kingdom
+94,A,2019/01/11 15:20:00.000,2019/01/11 15:20:00.000,46,68,Falkland Islands
+87,C,2019/01/11 15:22:33.226,2019/01/11 15:22:33.226,214,82,British Indian Ocean Territory
+76,D,2019/01/11 15:22:43.055,2019/01/11 15:22:43.055,10,179,Pitcairn Islands
+90,A,2019/01/11 15:25:37.251,2019/01/11 15:25:37.251,187,212,Guatemala
+84,G,2019/01/11 15:26:10.556,2019/01/11 15:26:10.556,34,191,Monaco
+80,G,2019/01/11 15:36:28.583,2019/01/11 15:36:28.583,166,240,Pakistan
+79,G,2019/01/11 15:36:57.340,2019/01/11 15:36:57.340,219,125,Dominica
+74,H,2019/01/11 15:38:22.245,2019/01/11 15:38:22.245,50,177,Kiribati
+89,B,2019/01/11 15:38:37.849,2019/01/11 15:38:37.849,110,95,Tunisia
+95,A,2019/01/11 15:40:00.000,2019/01/11 15:40:00.000,86,126,Canary Islands
+92,F,2019/01/11 15:40:52.602,2019/01/11 15:40:52.602,77,240,Belize
+83,F,2019/01/11 15:40:52.734,2019/01/11 15:40:52.734,126,172,Brunei
+88,I,2019/01/11 15:43:51.360,2019/01/11 15:43:51.360,129,121,Australia
+94,D,2019/01/11 15:48:52.712,2019/01/11 15:48:52.712,67,2,Peru
+91,A,2019/01/11 15:49:45.676,2019/01/11 15:49:45.676,47,140,Fiji
+81,A,2019/01/11 15:50:10.049,2019/01/11 15:50:10.049,252,128,Gambia
+76,F,2019/01/11 15:51:51.007,2019/01/11 15:51:51.007,129,27,Eritrea
+87,A,2019/01/11 15:53:26.201,2019/01/11 15:53:26.201,9,178,North Korea
+90,D,2019/01/11 15:55:28.801,2019/01/11 15:55:28.801,53,138,Russia
+84,I,2019/01/11 15:55:52.445,2019/01/11 15:55:52.445,134,34,Finland
+96,A,2019/01/11 16:00:00.000,2019/01/11 16:00:00.000,200,121,Equatorial Guinea
+89,C,2019/01/11 16:03:29.794,2019/01/11 16:03:29.794,177,53,Slovakia
+79,H,2019/01/11 16:09:17.507,2019/01/11 16:09:17.507,80,147,Uzbekistan
+95,B,2019/01/11 16:10:22.620,2019/01/11 16:10:22.620,11,84,Vietnam
+83,E,2019/01/11 16:12:50.771,2019/01/11 16:12:50.771,93,168,St. Vincent & Grenadines
+80,H,2019/01/11 16:14:44.798,2019/01/11 16:14:44.798,122,160,Egypt
+92,E,2019/01/11 16:14:45.644,2019/01/11 16:14:45.644,170,189,Cocos (Keeling) Islands
+91,B,2019/01/11 16:16:50.524,2019/01/11 16:16:50.524,216,121,Monaco
+88,J,2019/01/11 16:18:30.497,2019/01/11 16:18:30.497,23,233,Timor-Leste
+94,F,2019/01/11 16:19:57.932,2019/01/11 16:19:57.932,214,168,Kuwait
+97,A,2019/01/11 16:20:00.000,2019/01/11 16:20:00.000,128,82,Greenland
+81,D,2019/01/11 16:21:12.418,2019/01/11 16:21:12.418,251,58,Fiji
+87,D,2019/01/11 16:22:12.600,2019/01/11 16:22:12.600,32,204,Saudi Arabia
+90,F,2019/01/11 16:22:58.549,2019/01/11 16:22:58.549,82,77,Ukraine
+76,E,2019/01/11 16:24:09.048,2019/01/11 16:24:09.048,64,133,Martinique
+84,J,2019/01/11 16:27:03.706,2019/01/11 16:27:03.706,180,137,Tanzania
+96,B,2019/01/11 16:30:13.434,2019/01/11 16:30:13.434,150,160,Tunisia
+89,A,2019/01/11 16:37:03.643,2019/01/11 16:37:03.643,64,142,Malawi
+95,C,2019/01/11 16:39:21.917,2019/01/11 16:39:21.917,48,6,Ukraine
+98,A,2019/01/11 16:40:00.000,2019/01/11 16:40:00.000,3,77,Tanzania
+83,G,2019/01/11 16:41:15.263,2019/01/11 16:41:15.263,232,140,Dominican Republic
+91,C,2019/01/11 16:44:08.229,2019/01/11 16:44:08.229,205,112,Faroe Islands
+88,L,2019/01/11 16:44:27.229,2019/01/11 16:44:27.229,97,198,Anguilla
+92,G,2019/01/11 16:48:40.689,2019/01/11 16:48:40.689,179,11,Ethiopia
+87,F,2019/01/11 16:49:08.683,2019/01/11 16:49:08.683,110,80,Fiji
+81,F,2019/01/11 16:49:41.943,2019/01/11 16:49:41.943,44,66,Malaysia
+97,D,2019/01/11 16:52:31.670,2019/01/11 16:52:31.670,183,25,Haiti
+76,G,2019/01/11 16:53:00.568,2019/01/11 16:53:00.568,77,154,Hungary
+94,E,2019/01/11 16:55:04.188,2019/01/11 16:55:04.188,37,180,Marshall Islands
+90,E,2019/01/11 16:56:05.533,2019/01/11 16:56:05.533,53,219,Tonga
+84,L,2019/01/11 16:58:13.634,2019/01/11 16:58:13.634,2,110,Denmark
+99,A,2019/01/11 17:00:00.000,2019/01/11 17:00:00.000,22,105,Canada
+82,C,2019/01/11 17:00:56.477,2019/01/11 17:00:56.477,125,31,Montserrat
+96,C,2019/01/11 17:04:05.697,2019/01/11 17:04:05.697,206,20,Guatemala
+89,B,2019/01/11 17:06:44.670,2019/01/11 17:06:44.670,38,249,Nicaragua
+83,I,2019/01/11 17:09:53.393,2019/01/11 17:09:53.393,175,223,Antigua & Barbuda
+98,D,2019/01/11 17:11:15.274,2019/01/11 17:11:15.274,27,175,Jordan
+88,M,2019/01/11 17:11:59.395,2019/01/11 17:11:59.395,122,14,Kuwait
+95,A,2019/01/11 17:12:04.871,2019/01/11 17:12:04.871,42,151,South Georgia & South Sandwich Islands
+87,E,2019/01/11 17:15:17.712,2019/01/11 17:15:17.712,17,34,Kuwait
+91,A,2019/01/11 17:17:26.989,2019/01/11 17:17:26.989,239,108,Portugal
+81,E,2019/01/11 17:18:36.621,2019/01/11 17:18:36.621,3,203,Grenada
+100,A,2019/01/11 17:20:00.000,2019/01/11 17:20:00.000,52,234,Ecuador
+92,H,2019/01/11 17:21:33.940,2019/01/11 17:21:33.940,162,149,Burkina Faso
+76,I,2019/01/11 17:21:37.843,2019/01/11 17:21:37.843,150,11,United Arab Emirates
+90,G,2019/01/11 17:23:34.932,2019/01/11 17:23:34.932,2,25,Malaysia
+84,M,2019/01/11 17:25:51.449,2019/01/11 17:25:51.449,178,222,Mexico
+94,G,2019/01/11 17:26:29.417,2019/01/11 17:26:29.417,111,12,Mali
+97,F,2019/01/11 17:29:03.744,2019/01/11 17:29:03.744,223,174,Germany
+82,A,2019/01/11 17:29:56.148,2019/01/11 17:29:56.148,60,74,Réunion
+89,C,2019/01/11 17:32:50.908,2019/01/11 17:32:50.908,206,116,Saudi Arabia
+99,B,2019/01/11 17:32:59.004,2019/01/11 17:32:59.004,126,252,Réunion
+96,A,2019/01/11 17:34:05.722,2019/01/11 17:34:05.722,101,74,United Kingdom
+101,A,2019/01/11 17:40:00.000,2019/01/11 17:40:00.000,20,174,Bhutan
+95,B,2019/01/11 17:40:19.607,2019/01/11 17:40:19.607,146,162,Tajikistan
+98,F,2019/01/11 17:41:39.027,2019/01/11 17:41:39.027,56,24,Benin
+100,B,2019/01/11 17:44:41.973,2019/01/11 17:44:41.973,159,110,Sint Maarten
+88,N,2019/01/11 17:47:21.005,2019/01/11 17:47:21.005,224,155,Israel
+83,J,2019/01/11 17:48:38.255,2019/01/11 17:48:38.255,52,103,Paraguay
+81,G,2019/01/11 17:48:54.562,2019/01/11 17:48:54.562,123,31,Syria
+91,D,2019/01/11 17:49:45.555,2019/01/11 17:49:45.555,146,90,Albania
+87,G,2019/01/11 17:50:35.044,2019/01/11 17:50:35.044,58,90,Canada
+90,I,2019/01/11 17:50:48.817,2019/01/11 17:50:48.817,232,185,Ethiopia
+84,N,2019/01/11 17:53:52.295,2019/01/11 17:53:52.295,242,43,Vatican City
+99,C,2019/01/11 17:55:00.769,2019/01/11 17:55:00.769,205,251,Burundi
+94,I,2019/01/11 17:55:44.969,2019/01/11 17:55:44.969,39,219,South Korea
+76,J,2019/01/11 17:56:10.397,2019/01/11 17:56:10.397,241,192,Bermuda
+82,D,2019/01/11 17:56:30.435,2019/01/11 17:56:30.435,122,154,Åland Islands
+102,A,2019/01/11 18:00:00.000,2019/01/11 18:00:00.000,99,222,Georgia
+89,A,2019/01/11 18:00:58.482,2019/01/11 18:00:58.482,139,209,Palau
+97,E,2019/01/11 18:02:45.864,2019/01/11 18:02:45.864,91,174,Iran
+96,B,2019/01/11 18:03:25.007,2019/01/11 18:03:25.007,220,64,Comoros
+93,E,2019/01/11 18:09:07.044,2019/01/11 18:09:07.044,157,152,Bermuda
+101,D,2019/01/11 18:09:36.565,2019/01/11 18:09:36.565,166,202,St. Martin
+95,C,2019/01/11 18:11:35.546,2019/01/11 18:11:35.546,155,136,Palau
+98,E,2019/01/11 18:12:34.788,2019/01/11 18:12:34.788,113,170,Andorra
+83,K,2019/01/11 18:15:00.435,2019/01/11 18:15:00.435,224,242,Timor-Leste
+91,F,2019/01/11 18:15:29.748,2019/01/11 18:15:29.748,234,50,St. Vincent & Grenadines
+87,I,2019/01/11 18:16:17.013,2019/01/11 18:16:17.013,213,229,Bosnia & Herzegovina
+100,C,2019/01/11 18:19:12.501,2019/01/11 18:19:12.501,87,26,Pitcairn Islands
+103,A,2019/01/11 18:20:00.000,2019/01/11 18:20:00.000,60,208,Lebanon
+81,I,2019/01/11 18:20:42.435,2019/01/11 18:20:42.435,155,213,Comoros
+90,J,2019/01/11 18:21:42.496,2019/01/11 18:21:42.496,180,67,Guatemala
+94,J,2019/01/11 18:24:13.587,2019/01/11 18:24:13.587,145,206,Venezuela
+82,F,2019/01/11 18:25:29.387,2019/01/11 18:25:29.387,149,6,El Salvador
+99,A,2019/01/11 18:26:34.434,2019/01/11 18:26:34.434,217,98,Maldives
+76,L,2019/01/11 18:27:19.228,2019/01/11 18:27:19.228,201,195,St. Vincent & Grenadines
+89,D,2019/01/11 18:30:27.025,2019/01/11 18:30:27.025,233,105,Lithuania
+102,B,2019/01/11 18:32:11.888,2019/01/11 18:32:11.888,54,206,San Marino
+96,C,2019/01/11 18:34:56.442,2019/01/11 18:34:56.442,116,132,Vietnam
+97,G,2019/01/11 18:35:10.233,2019/01/11 18:35:10.233,85,210,Australia
+95,A,2019/01/11 18:36:06.980,2019/01/11 18:36:06.980,92,77,Indonesia
+101,F,2019/01/11 18:37:40.535,2019/01/11 18:37:40.535,190,215,Belgium
+104,A,2019/01/11 18:40:00.000,2019/01/11 18:40:00.000,1,246,Turks & Caicos Islands
+93,G,2019/01/11 18:41:06.428,2019/01/11 18:41:06.428,215,200,Poland
+98,G,2019/01/11 18:42:57.139,2019/01/11 18:42:57.139,191,217,São Tomé and Príncipe
+83,M,2019/01/11 18:45:03.019,2019/01/11 18:45:03.019,162,33,Hungary
+82,E,2019/01/11 18:47:34.748,2019/01/11 18:47:34.748,236,75,Honduras
+87,J,2019/01/11 18:48:00.624,2019/01/11 18:48:00.624,33,20,Kenya
+81,J,2019/01/11 18:48:51.283,2019/01/11 18:48:51.283,205,143,Panama
+91,E,2019/01/11 18:49:44.790,2019/01/11 18:49:44.790,186,251,Guinea-Bissau
+103,B,2019/01/11 18:49:48.709,2019/01/11 18:49:48.709,140,145,Caribbean Netherlands
+100,A,2019/01/11 18:50:00.539,2019/01/11 18:50:00.539,22,138,Qatar
+90,K,2019/01/11 18:50:51.145,2019/01/11 18:50:51.145,79,207,Kosovo
+99,B,2019/01/11 18:51:57.098,2019/01/11 18:51:57.098,103,84,U.S. Virgin Islands
+76,M,2019/01/11 18:52:01.504,2019/01/11 18:52:01.504,23,127,Uganda
+94,K,2019/01/11 18:52:55.936,2019/01/11 18:52:55.936,232,143,Libya
+105,A,2019/01/11 19:00:00.000,2019/01/11 19:00:00.000,4,4,Sint Maarten
+96,A,2019/01/11 19:02:43.213,2019/01/11 19:02:43.213,72,234,Russia
+89,F,2019/01/11 19:03:27.564,2019/01/11 19:03:27.564,89,85,Afghanistan
+97,I,2019/01/11 19:06:05.335,2019/01/11 19:06:05.335,19,147,Martinique
+93,I,2019/01/11 19:06:48.591,2019/01/11 19:06:48.591,208,210,Grenada
+102,C,2019/01/11 19:07:07.796,2019/01/11 19:07:07.796,13,214,Greenland
+101,E,2019/01/11 19:08:37.650,2019/01/11 19:08:37.650,146,200,Chile
+95,D,2019/01/11 19:09:01.524,2019/01/11 19:09:01.524,126,41,Madagascar
+104,D,2019/01/11 19:12:24.226,2019/01/11 19:12:24.226,94,143,Jamaica
+98,I,2019/01/11 19:14:33.949,2019/01/11 19:14:33.949,75,100,Seychelles
+103,C,2019/01/11 19:15:21.303,2019/01/11 19:15:21.303,145,147,Fiji
+81,K,2019/01/11 19:16:39.774,2019/01/11 19:16:39.774,20,107,Estonia
+83,N,2019/01/11 19:18:00.185,2019/01/11 19:18:00.185,126,170,South Georgia & South Sandwich Islands
+91,G,2019/01/11 19:18:55.750,2019/01/11 19:18:55.750,101,199,Marshall Islands
+106,A,2019/01/11 19:20:00.000,2019/01/11 19:20:00.000,159,231,Caribbean Netherlands
+100,B,2019/01/11 19:21:02.368,2019/01/11 19:21:02.368,96,248,Aruba
+90,M,2019/01/11 19:22:20.133,2019/01/11 19:22:20.133,220,115,Sri Lanka
+87,K,2019/01/11 19:22:35.457,2019/01/11 19:22:35.457,12,220,Tokelau
+76,N,2019/01/11 19:22:54.106,2019/01/11 19:22:54.106,169,155,Sierra Leone
+99,C,2019/01/11 19:23:29.082,2019/01/11 19:23:29.082,189,111,Hungary
+82,G,2019/01/11 19:24:59.837,2019/01/11 19:24:59.837,162,236,Sudan
+89,E,2019/01/11 19:25:20.827,2019/01/11 19:25:20.827,8,124,Puerto Rico
+94,M,2019/01/11 19:25:53.853,2019/01/11 19:25:53.853,54,100,Ireland
+105,B,2019/01/11 19:31:30.723,2019/01/11 19:31:30.723,132,26,Eritrea
+102,A,2019/01/11 19:32:49.513,2019/01/11 19:32:49.513,184,56,Benin
+93,J,2019/01/11 19:36:00.827,2019/01/11 19:36:00.827,127,154,U.S. Virgin Islands
+96,D,2019/01/11 19:36:30.362,2019/01/11 19:36:30.362,186,234,Mauritius
+97,J,2019/01/11 19:37:02.948,2019/01/11 19:37:02.948,194,221,Lesotho
+95,F,2019/01/11 19:37:24.737,2019/01/11 19:37:24.737,89,72,Croatia
+101,G,2019/01/11 19:38:34.734,2019/01/11 19:38:34.734,216,57,Burkina Faso
+107,A,2019/01/11 19:40:00.000,2019/01/11 19:40:00.000,35,202,Chad
+98,J,2019/01/11 19:43:16.964,2019/01/11 19:43:16.964,159,202,El Salvador
+91,I,2019/01/11 19:43:40.751,2019/01/11 19:43:40.751,57,46,Somalia
+104,F,2019/01/11 19:44:31.782,2019/01/11 19:44:31.782,224,56,Paraguay
+103,A,2019/01/11 19:45:45.765,2019/01/11 19:45:45.765,78,253,Rwanda
+87,M,2019/01/11 19:48:39.979,2019/01/11 19:48:39.979,136,72,Diego Garcia
+99,A,2019/01/11 19:49:35.541,2019/01/11 19:49:35.541,208,26,Ethiopia
+81,M,2019/01/11 19:49:35.555,2019/01/11 19:49:35.555,221,161,Norfolk Island
+106,D,2019/01/11 19:49:46.283,2019/01/11 19:49:46.283,112,181,Chile
+90,N,2019/01/11 19:50:41.216,2019/01/11 19:50:41.216,67,13,Guinea
+89,G,2019/01/11 19:51:31.724,2019/01/11 19:51:31.724,251,61,Norfolk Island
+94,O,2019/01/11 19:54:00.857,2019/01/11 19:54:00.857,207,168,Chile
+100,C,2019/01/11 19:54:24.438,2019/01/11 19:54:24.438,228,178,Philippines
+82,I,2019/01/11 19:54:26.312,2019/01/11 19:54:26.312,144,211,Kyrgyzstan
+102,D,2019/01/11 19:57:40.419,2019/01/11 19:57:40.419,216,252,Tajikistan
+105,C,2019/01/11 19:59:51.923,2019/01/11 19:59:51.923,252,152,Tristan da Cunha
+108,A,2019/01/11 20:00:00.000,2019/01/11 20:00:00.000,144,135,St. Lucia
+95,E,2019/01/11 20:05:39.739,2019/01/11 20:05:39.739,225,188,Haiti
+93,L,2019/01/11 20:05:45.437,2019/01/11 20:05:45.437,98,80,Tonga
+101,H,2019/01/11 20:06:16.229,2019/01/11 20:06:16.229,77,247,Uganda
+96,F,2019/01/11 20:08:57.175,2019/01/11 20:08:57.175,57,61,New Caledonia
+107,D,2019/01/11 20:09:43.636,2019/01/11 20:09:43.636,147,52,Israel
+97,K,2019/01/11 20:10:32.768,2019/01/11 20:10:32.768,117,95,Trinidad & Tobago
+104,E,2019/01/11 20:11:05.290,2019/01/11 20:11:05.290,62,100,Ecuador
+87,N,2019/01/11 20:13:28.877,2019/01/11 20:13:28.877,210,244,Brazil
+91,J,2019/01/11 20:14:09.836,2019/01/11 20:14:09.836,27,241,Canada
+103,D,2019/01/11 20:15:26.407,2019/01/11 20:15:26.407,28,235,Paraguay
+98,K,2019/01/11 20:17:01.393,2019/01/11 20:17:01.393,33,84,Niger
+106,F,2019/01/11 20:17:21.109,2019/01/11 20:17:21.109,0,165,Papua New Guinea
+81,N,2019/01/11 20:18:21.546,2019/01/11 20:18:21.546,200,197,Nicaragua
+89,H,2019/01/11 20:22:14.771,2019/01/11 20:22:14.771,200,133,Lithuania
+99,B,2019/01/11 20:23:56.035,2019/01/11 20:23:56.035,124,85,Chile
+82,J,2019/01/11 20:24:00.495,2019/01/11 20:24:00.495,241,166,Niue
+100,A,2019/01/11 20:25:05.819,2019/01/11 20:25:05.819,24,180,Cambodia
+102,F,2019/01/11 20:29:44.235,2019/01/11 20:29:44.235,74,96,Finland
+108,B,2019/01/11 20:30:52.559,2019/01/11 20:30:52.559,171,216,Samoa
+107,F,2019/01/11 20:32:08.001,2019/01/11 20:32:08.001,198,83,Vanuatu
+105,A,2019/01/11 20:33:08.746,2019/01/11 20:33:08.746,70,101,Kenya
+93,M,2019/01/11 20:34:33.718,2019/01/11 20:34:33.718,146,136,Guyana
+96,E,2019/01/11 20:39:09.715,2019/01/11 20:39:09.715,166,132,Maldives
+110,A,2019/01/11 20:40:00.000,2019/01/11 20:40:00.000,193,25,Tuvalu
+95,G,2019/01/11 20:40:25.946,2019/01/11 20:40:25.946,23,152,Taiwan
+104,G,2019/01/11 20:43:14.086,2019/01/11 20:43:14.086,12,6,Malawi
+103,F,2019/01/11 20:44:02.987,2019/01/11 20:44:02.987,110,214,Iraq
+98,M,2019/01/11 20:45:02.500,2019/01/11 20:45:02.500,120,53,Timor-Leste
+106,E,2019/01/11 20:47:05.191,2019/01/11 20:47:05.191,125,38,Portugal
+97,M,2019/01/11 20:49:29.551,2019/01/11 20:49:29.551,161,230,Malta
+91,L,2019/01/11 20:51:39.142,2019/01/11 20:51:39.142,132,3,Barbados
+82,K,2019/01/11 20:54:13.088,2019/01/11 20:54:13.088,85,81,Rwanda
+99,C,2019/01/11 20:55:22.189,2019/01/11 20:55:22.189,83,147,Diego Garcia
+100,D,2019/01/11 20:56:28.309,2019/01/11 20:56:28.309,103,32,Ukraine
+108,C,2019/01/11 20:56:51.082,2019/01/11 20:56:51.082,104,241,Indonesia
+102,E,2019/01/11 20:57:05.407,2019/01/11 20:57:05.407,169,94,Laos
+105,B,2019/01/11 20:58:48.263,2019/01/11 20:58:48.263,59,21,British Virgin Islands
+111,A,2019/01/11 21:00:00.000,2019/01/11 21:00:00.000,224,71,Haiti
+93,O,2019/01/11 21:00:06.417,2019/01/11 21:00:06.417,64,82,Taiwan
+107,E,2019/01/11 21:04:11.203,2019/01/11 21:04:11.203,63,34,Brazil
+95,I,2019/01/11 21:07:25.055,2019/01/11 21:07:25.055,166,249,Nauru
+96,G,2019/01/11 21:09:57.113,2019/01/11 21:09:57.113,143,28,Serbia
+110,D,2019/01/11 21:10:57.657,2019/01/11 21:10:57.657,187,26,Tajikistan
+103,E,2019/01/11 21:15:53.030,2019/01/11 21:15:53.030,178,76,Argentina
+97,N,2019/01/11 21:16:05.364,2019/01/11 21:16:05.364,13,134,Ireland
+104,H,2019/01/11 21:16:59.702,2019/01/11 21:16:59.702,95,25,Burkina Faso
+98,N,2019/01/11 21:17:22.987,2019/01/11 21:17:22.987,58,182,Caribbean Netherlands
+106,G,2019/01/11 21:19:21.802,2019/01/11 21:19:21.802,126,178,Saudi Arabia
+112,A,2019/01/11 21:20:00.000,2019/01/11 21:20:00.000,236,33,Nigeria
+91,M,2019/01/11 21:20:12.817,2019/01/11 21:20:12.817,104,242,Switzerland
+100,F,2019/01/11 21:22:58.886,2019/01/11 21:22:58.886,235,158,Guatemala
+82,M,2019/01/11 21:26:51.603,2019/01/11 21:26:51.603,42,250,South Sudan
+102,G,2019/01/11 21:27:51.674,2019/01/11 21:27:51.674,141,1,China
+99,A,2019/01/11 21:27:54.201,2019/01/11 21:27:54.201,80,187,Cape Verde
+108,A,2019/01/11 21:31:47.697,2019/01/11 21:31:47.697,91,99,Svalbard & Jan Mayen
+111,D,2019/01/11 21:32:08.102,2019/01/11 21:32:08.102,177,4,Bulgaria
+105,C,2019/01/11 21:33:06.264,2019/01/11 21:33:06.264,237,141,Jersey
+95,J,2019/01/11 21:34:43.112,2019/01/11 21:34:43.112,177,231,Kosovo
+96,I,2019/01/11 21:35:39.657,2019/01/11 21:35:39.657,214,170,Norway
+107,G,2019/01/11 21:36:09.909,2019/01/11 21:36:09.909,250,36,Czech Republic
+113,A,2019/01/11 21:40:00.000,2019/01/11 21:40:00.000,168,172,St. Barthélemy
+110,F,2019/01/11 21:42:32.898,2019/01/11 21:42:32.898,252,68,Pitcairn Islands
+112,D,2019/01/11 21:44:57.391,2019/01/11 21:44:57.391,79,219,North Korea
+91,N,2019/01/11 21:46:03.539,2019/01/11 21:46:03.539,185,105,New Zealand
+103,G,2019/01/11 21:46:24.246,2019/01/11 21:46:24.246,155,41,Kazakhstan
+106,I,2019/01/11 21:49:24.092,2019/01/11 21:49:24.092,53,125,Latvia
+100,E,2019/01/11 21:55:00.032,2019/01/11 21:55:00.032,90,215,Montserrat
+82,N,2019/01/11 21:55:24.066,2019/01/11 21:55:24.066,152,27,French Guiana
+99,D,2019/01/11 21:56:49.329,2019/01/11 21:56:49.329,71,71,Malta
+107,H,2019/01/11 21:56:58.710,2019/01/11 21:56:58.710,173,225,Poland
+102,I,2019/01/11 21:59:41.274,2019/01/11 21:59:41.274,221,31,Algeria
+114,A,2019/01/11 22:00:00.000,2019/01/11 22:00:00.000,252,228,Angola
+105,A,2019/01/11 22:01:02.906,2019/01/11 22:01:02.906,196,226,Uganda
+111,F,2019/01/11 22:04:26.103,2019/01/11 22:04:26.103,26,50,Nepal
+108,B,2019/01/11 22:04:27.557,2019/01/11 22:04:27.557,153,114,South Korea
+96,J,2019/01/11 22:04:34.030,2019/01/11 22:04:34.030,118,207,Montserrat
+95,L,2019/01/11 22:05:49.847,2019/01/11 22:05:49.847,206,50,Greece
+113,D,2019/01/11 22:09:42.930,2019/01/11 22:09:42.930,37,251,Réunion
+110,E,2019/01/11 22:12:58.376,2019/01/11 22:12:58.376,217,208,Caribbean Netherlands
+112,F,2019/01/11 22:15:03.289,2019/01/11 22:15:03.289,68,213,St. Lucia
+103,I,2019/01/11 22:15:30.931,2019/01/11 22:15:30.931,233,153,St. Helena
+106,J,2019/01/11 22:19:31.287,2019/01/11 22:19:31.287,44,107,Réunion
+115,A,2019/01/11 22:20:00.000,2019/01/11 22:20:00.000,236,220,Myanmar (Burma)
+100,G,2019/01/11 22:21:12.733,2019/01/11 22:21:12.733,159,217,French Polynesia
+99,F,2019/01/11 22:25:20.943,2019/01/11 22:25:20.943,143,181,Macedonia
+105,B,2019/01/11 22:28:23.760,2019/01/11 22:28:23.760,25,175,Luxembourg
+102,J,2019/01/11 22:29:34.897,2019/01/11 22:29:34.897,155,148,Malawi
+96,K,2019/01/11 22:31:51.593,2019/01/11 22:31:51.593,144,238,Sweden
+111,E,2019/01/11 22:32:41.304,2019/01/11 22:32:41.304,192,243,Bulgaria
+114,D,2019/01/11 22:34:48.433,2019/01/11 22:34:48.433,234,156,Kosovo
+95,M,2019/01/11 22:36:01.315,2019/01/11 22:36:01.315,58,215,Djibouti
+108,C,2019/01/11 22:38:33.126,2019/01/11 22:38:33.126,232,154,Macau SAR China
+113,F,2019/01/11 22:39:20.717,2019/01/11 22:39:20.717,63,161,Nauru
+116,A,2019/01/11 22:40:00.000,2019/01/11 22:40:00.000,61,30,Colombia
+112,E,2019/01/11 22:45:05.251,2019/01/11 22:45:05.251,163,187,Brunei
+110,G,2019/01/11 22:45:53.189,2019/01/11 22:45:53.189,74,0,Niue
+103,J,2019/01/11 22:47:58.549,2019/01/11 22:47:58.549,175,254,Antigua & Barbuda
+106,K,2019/01/11 22:50:29.625,2019/01/11 22:50:29.625,186,73,Russia
+115,D,2019/01/11 22:51:05.473,2019/01/11 22:51:05.473,212,212,Montserrat
+99,E,2019/01/11 22:53:14.267,2019/01/11 22:53:14.267,226,35,Cocos (Keeling) Islands
+100,I,2019/01/11 22:54:01.913,2019/01/11 22:54:01.913,210,210,St. Pierre & Miquelon
+111,G,2019/01/11 22:58:53.062,2019/01/11 22:58:53.062,132,10,Congo - Brazzaville
+117,A,2019/01/11 23:00:00.000,2019/01/11 23:00:00.000,79,43,United Kingdom
+96,M,2019/01/11 23:02:55.005,2019/01/11 23:02:55.005,51,23,Tristan da Cunha
+114,F,2019/01/11 23:03:14.370,2019/01/11 23:03:14.370,161,227,Russia
+116,B,2019/01/11 23:03:37.756,2019/01/11 23:03:37.756,214,2,Egypt
+102,K,2019/01/11 23:04:02.074,2019/01/11 23:04:02.074,202,19,Vanuatu
+95,O,2019/01/11 23:04:30.280,2019/01/11 23:04:30.280,48,245,Bahamas
+105,C,2019/01/11 23:07:07.900,2019/01/11 23:07:07.900,208,6,Austria
+108,A,2019/01/11 23:10:06.460,2019/01/11 23:10:06.460,119,195,Mali
+113,E,2019/01/11 23:12:00.555,2019/01/11 23:12:00.555,154,240,United Arab Emirates
+112,G,2019/01/11 23:12:08.364,2019/01/11 23:12:08.364,247,229,Belarus
+103,K,2019/01/11 23:16:31.583,2019/01/11 23:16:31.583,80,56,Peru
+110,H,2019/01/11 23:16:35.323,2019/01/11 23:16:35.323,134,183,Antarctica
+115,F,2019/01/11 23:17:31.038,2019/01/11 23:17:31.038,150,223,Wallis & Futuna
+99,G,2019/01/11 23:17:51.619,2019/01/11 23:17:51.619,184,133,Kazakhstan
+118,A,2019/01/11 23:20:00.000,2019/01/11 23:20:00.000,101,92,South Korea
+100,J,2019/01/11 23:22:34.426,2019/01/11 23:22:34.426,164,117,United Kingdom
+106,M,2019/01/11 23:23:19.534,2019/01/11 23:23:19.534,163,4,Switzerland
+117,B,2019/01/11 23:27:52.195,2019/01/11 23:27:52.195,217,244,Lesotho
+114,E,2019/01/11 23:28:35.966,2019/01/11 23:28:35.966,196,224,Kenya
+111,H,2019/01/11 23:32:47.221,2019/01/11 23:32:47.221,5,17,Iraq
+102,M,2019/01/11 23:33:47.325,2019/01/11 23:33:47.325,174,57,Poland
+96,O,2019/01/11 23:34:06.067,2019/01/11 23:34:06.067,121,158,St. Vincent & Grenadines
+116,C,2019/01/11 23:35:26.501,2019/01/11 23:35:26.501,142,4,Zambia
+108,B,2019/01/11 23:36:57.793,2019/01/11 23:36:57.793,90,228,French Guiana
+113,G,2019/01/11 23:39:40.231,2019/01/11 23:39:40.231,164,185,Uganda
+105,A,2019/01/11 23:39:54.014,2019/01/11 23:39:54.014,110,204,Madagascar
+119,A,2019/01/11 23:40:00.000,2019/01/11 23:40:00.000,57,108,Vanuatu
+112,I,2019/01/11 23:43:52.560,2019/01/11 23:43:52.560,214,251,Norway
+100,L,2019/01/11 23:49:08.034,2019/01/11 23:49:08.034,112,220,Poland
+103,M,2019/01/11 23:49:10.156,2019/01/11 23:49:10.156,96,24,U.S. Virgin Islands
+99,I,2019/01/11 23:49:50.873,2019/01/11 23:49:50.873,221,175,French Guiana
+106,N,2019/01/11 23:49:57.253,2019/01/11 23:49:57.253,206,151,Ecuador
+115,E,2019/01/11 23:51:28.884,2019/01/11 23:51:28.884,82,195,Russia
+114,G,2019/01/11 23:52:49.079,2019/01/11 23:52:49.079,20,163,Mauritius
+118,B,2019/01/11 23:54:37.699,2019/01/11 23:54:37.699,244,80,St. Barthélemy
+117,C,2019/01/11 23:57:47.971,2019/01/11 23:57:47.971,118,171,Sweden
+120,A,2019/01/12 00:00:00.000,2019/01/12 00:00:00.000,182,50,Kuwait
+102,O,2019/01/12 00:01:48.447,2019/01/12 00:01:48.447,45,240,Isle of Man
+108,C,2019/01/12 00:03:45.031,2019/01/12 00:03:45.031,115,77,Canary Islands
+116,A,2019/01/12 00:08:13.315,2019/01/12 00:08:13.315,52,157,Antarctica
+113,H,2019/01/12 00:08:51.221,2019/01/12 00:08:51.221,49,104,Australia
+112,J,2019/01/12 00:12:58.622,2019/01/12 00:12:58.622,68,95,Kosovo
+105,B,2019/01/12 00:13:25.080,2019/01/12 00:13:25.080,36,243,Austria
+103,O,2019/01/12 00:16:33.765,2019/01/12 00:16:33.765,74,232,Solomon Islands
+119,D,2019/01/12 00:16:44.494,2019/01/12 00:16:44.494,255,210,Austria
+114,H,2019/01/12 00:16:57.662,2019/01/12 00:16:57.662,249,83,Comoros
+99,J,2019/01/12 00:17:31.693,2019/01/12 00:17:31.693,68,171,Macedonia
+115,G,2019/01/12 00:19:17.769,2019/01/12 00:19:17.769,32,177,Russia
+100,M,2019/01/12 00:19:23.490,2019/01/12 00:19:23.490,194,6,Uganda
+121,A,2019/01/12 00:20:00.000,2019/01/12 00:20:00.000,169,37,Nigeria
+118,C,2019/01/12 00:20:27.088,2019/01/12 00:20:27.088,17,166,Mexico
+117,A,2019/01/12 00:28:51.106,2019/01/12 00:28:51.106,211,43,Guadeloupe
+120,D,2019/01/12 00:31:20.327,2019/01/12 00:31:20.327,60,24,Malawi
+116,D,2019/01/12 00:35:48.767,2019/01/12 00:35:48.767,143,193,Lithuania
+108,A,2019/01/12 00:37:57.179,2019/01/12 00:37:57.179,249,158,Mauritania
+112,K,2019/01/12 00:38:25.988,2019/01/12 00:38:25.988,1,51,Cocos (Keeling) Islands
+122,A,2019/01/12 00:40:00.000,2019/01/12 00:40:00.000,154,86,Togo
+119,F,2019/01/12 00:43:11.734,2019/01/12 00:43:11.734,93,94,Venezuela
+115,I,2019/01/12 00:45:27.157,2019/01/12 00:45:27.157,91,217,Bhutan
+105,C,2019/01/12 00:45:27.164,2019/01/12 00:45:27.164,5,231,Antigua & Barbuda
+99,K,2019/01/12 00:45:56.645,2019/01/12 00:45:56.645,118,197,Latvia
+118,A,2019/01/12 00:47:32.122,2019/01/12 00:47:32.122,31,231,Andorra
+100,O,2019/01/12 00:50:36.620,2019/01/12 00:50:36.620,249,123,Andorra
+121,B,2019/01/12 00:51:27.110,2019/01/12 00:51:27.110,106,53,Cameroon
+109,A,2019/01/12 00:53:58.721,2019/01/12 00:53:58.721,38,150,Japan
+117,D,2019/01/12 00:55:42.326,2019/01/12 00:55:42.326,145,221,India
+123,A,2019/01/12 01:00:00.000,2019/01/12 01:00:00.000,54,31,Armenia
+120,F,2019/01/12 01:03:30.365,2019/01/12 01:03:30.365,163,179,New Caledonia
+116,F,2019/01/12 01:05:25.695,2019/01/12 01:05:25.695,117,143,Cook Islands
+108,B,2019/01/12 01:06:20.641,2019/01/12 01:06:20.641,219,115,Cook Islands
+112,M,2019/01/12 01:10:52.708,2019/01/12 01:10:52.708,49,229,American Samoa
+105,A,2019/01/12 01:11:14.640,2019/01/12 01:11:14.640,210,219,Solomon Islands
+115,J,2019/01/12 01:13:46.550,2019/01/12 01:13:46.550,249,196,Svalbard & Jan Mayen
+122,D,2019/01/12 01:14:17.147,2019/01/12 01:14:17.147,113,61,Dominican Republic
+99,M,2019/01/12 01:14:49.885,2019/01/12 01:14:49.885,173,192,Cuba
+119,E,2019/01/12 01:15:13.443,2019/01/12 01:15:13.443,15,63,St. Vincent & Grenadines
+121,C,2019/01/12 01:16:43.428,2019/01/12 01:16:43.428,117,181,Thailand
+118,B,2019/01/12 01:19:17.665,2019/01/12 01:19:17.665,137,46,India
+124,A,2019/01/12 01:20:00.000,2019/01/12 01:20:00.000,223,80,British Indian Ocean Territory
+109,D,2019/01/12 01:24:28.299,2019/01/12 01:24:28.299,12,215,Bahamas
+117,F,2019/01/12 01:25:45.828,2019/01/12 01:25:45.828,250,222,Isle of Man
+123,B,2019/01/12 01:28:38.929,2019/01/12 01:28:38.929,147,15,Iraq
+116,E,2019/01/12 01:33:30.883,2019/01/12 01:33:30.883,127,153,France
+120,E,2019/01/12 01:34:12.335,2019/01/12 01:34:12.335,1,36,Myanmar (Burma)
+108,C,2019/01/12 01:39:32.158,2019/01/12 01:39:32.158,115,4,Antigua & Barbuda
+125,A,2019/01/12 01:40:00.000,2019/01/12 01:40:00.000,11,28,Iraq
+122,F,2019/01/12 01:40:31.963,2019/01/12 01:40:31.963,231,244,Comoros
+115,K,2019/01/12 01:41:08.932,2019/01/12 01:41:08.932,88,171,Egypt
+112,N,2019/01/12 01:42:28.924,2019/01/12 01:42:28.924,114,34,Mozambique
+99,O,2019/01/12 01:42:55.135,2019/01/12 01:42:55.135,182,174,Turks & Caicos Islands
+119,G,2019/01/12 01:44:48.409,2019/01/12 01:44:48.409,9,134,Slovenia
+121,A,2019/01/12 01:45:53.821,2019/01/12 01:45:53.821,104,190,North Korea
+105,B,2019/01/12 01:45:56.766,2019/01/12 01:45:56.766,111,48,Uzbekistan
+118,C,2019/01/12 01:49:05.264,2019/01/12 01:49:05.264,215,8,Laos
+124,B,2019/01/12 01:49:11.814,2019/01/12 01:49:11.814,146,3,Bahrain
+123,C,2019/01/12 01:52:42.556,2019/01/12 01:52:42.556,174,118,Burkina Faso
+109,F,2019/01/12 01:53:21.492,2019/01/12 01:53:21.492,232,149,Martinique
+117,E,2019/01/12 01:56:30.393,2019/01/12 01:56:30.393,126,22,Haiti
+126,A,2019/01/12 02:00:00.000,2019/01/12 02:00:00.000,17,200,Anguilla
+120,G,2019/01/12 02:00:36.586,2019/01/12 02:00:36.586,94,72,Suriname
+116,G,2019/01/12 02:04:11.457,2019/01/12 02:04:11.457,210,234,Germany
+115,M,2019/01/12 02:09:16.079,2019/01/12 02:09:16.079,237,136,United Kingdom
+108,A,2019/01/12 02:09:16.573,2019/01/12 02:09:16.573,184,194,Liberia
+125,D,2019/01/12 02:09:29.880,2019/01/12 02:09:29.880,120,193,Bangladesh
+119,I,2019/01/12 02:10:32.269,2019/01/12 02:10:32.269,108,89,Bulgaria
+122,E,2019/01/12 02:10:48.245,2019/01/12 02:10:48.245,64,207,Martinique
+105,C,2019/01/12 02:12:32.858,2019/01/12 02:12:32.858,230,232,Andorra
+121,D,2019/01/12 02:14:22.737,2019/01/12 02:14:22.737,217,141,Slovakia
+118,A,2019/01/12 02:17:18.137,2019/01/12 02:17:18.137,56,13,Sudan
+127,A,2019/01/12 02:20:00.000,2019/01/12 02:20:00.000,30,79,Uzbekistan
+124,C,2019/01/12 02:20:46.223,2019/01/12 02:20:46.223,30,181,Montenegro
+123,A,2019/01/12 02:23:07.891,2019/01/12 02:23:07.891,53,87,Kiribati
+109,E,2019/01/12 02:26:44.218,2019/01/12 02:26:44.218,142,21,São Tomé and Príncipe
+116,I,2019/01/12 02:27:44.935,2019/01/12 02:27:44.935,242,243,Aruba
+117,G,2019/01/12 02:29:30.824,2019/01/12 02:29:30.824,50,30,Burkina Faso
+126,B,2019/01/12 02:30:28.196,2019/01/12 02:30:28.196,246,244,Svalbard & Jan Mayen
+120,I,2019/01/12 02:32:45.024,2019/01/12 02:32:45.024,90,75,Papua New Guinea
+115,N,2019/01/12 02:35:00.483,2019/01/12 02:35:00.483,184,198,Oman
+108,D,2019/01/12 02:35:09.309,2019/01/12 02:35:09.309,107,236,Taiwan
+119,J,2019/01/12 02:36:32.102,2019/01/12 02:36:32.102,203,237,Malta
+125,F,2019/01/12 02:37:17.363,2019/01/12 02:37:17.363,197,240,Gabon
+121,F,2019/01/12 02:39:36.100,2019/01/12 02:39:36.100,214,149,New Zealand
+128,A,2019/01/12 02:40:00.000,2019/01/12 02:40:00.000,200,0,Tuvalu
+122,G,2019/01/12 02:42:59.098,2019/01/12 02:42:59.098,88,213,Sweden
+105,A,2019/01/12 02:44:34.559,2019/01/12 02:44:34.559,203,182,Suriname
+127,D,2019/01/12 02:45:45.098,2019/01/12 02:45:45.098,230,119,Libya
+118,B,2019/01/12 02:49:39.297,2019/01/12 02:49:39.297,41,119,Timor-Leste
+123,B,2019/01/12 02:54:39.072,2019/01/12 02:54:39.072,12,155,Uganda
+124,A,2019/01/12 02:54:48.927,2019/01/12 02:54:48.927,170,105,Nepal
+109,G,2019/01/12 02:55:48.233,2019/01/12 02:55:48.233,165,84,Latvia
+116,J,2019/01/12 02:57:00.389,2019/01/12 02:57:00.389,39,44,Japan
+126,C,2019/01/12 02:58:11.399,2019/01/12 02:58:11.399,168,171,Bulgaria
+129,A,2019/01/12 03:00:00.000,2019/01/12 03:00:00.000,28,50,Seychelles
+117,H,2019/01/12 03:00:31.201,2019/01/12 03:00:31.201,23,53,Christmas Island
+120,J,2019/01/12 03:01:53.009,2019/01/12 03:01:53.009,52,233,French Southern Territories
+108,F,2019/01/12 03:05:45.904,2019/01/12 03:05:45.904,101,34,Uruguay
+119,L,2019/01/12 03:07:13.363,2019/01/12 03:07:13.363,200,144,Liechtenstein
+121,E,2019/01/12 03:09:04.119,2019/01/12 03:09:04.119,134,73,Martinique
+128,D,2019/01/12 03:10:45.031,2019/01/12 03:10:45.031,86,118,Slovakia
+122,H,2019/01/12 03:13:42.447,2019/01/12 03:13:42.447,120,205,Luxembourg
+127,F,2019/01/12 03:14:01.771,2019/01/12 03:14:01.771,228,100,Sint Maarten
+105,B,2019/01/12 03:14:52.799,2019/01/12 03:14:52.799,9,134,Turkmenistan
+130,A,2019/01/12 03:20:00.000,2019/01/12 03:20:00.000,55,31,French Southern Territories
+123,C,2019/01/12 03:23:03.485,2019/01/12 03:23:03.485,95,147,Norway
+124,D,2019/01/12 03:25:20.916,2019/01/12 03:25:20.916,27,148,Bermuda
+118,C,2019/01/12 03:25:23.058,2019/01/12 03:25:23.058,146,144,St. Kitts & Nevis
+109,I,2019/01/12 03:27:12.530,2019/01/12 03:27:12.530,226,129,Honduras
+126,A,2019/01/12 03:28:53.659,2019/01/12 03:28:53.659,193,195,Côte d'Ivoire
+116,L,2019/01/12 03:29:00.429,2019/01/12 03:29:00.429,227,178,French Southern Territories
+120,L,2019/01/12 03:29:11.470,2019/01/12 03:29:11.470,109,156,Spain
+119,M,2019/01/12 03:34:27.388,2019/01/12 03:34:27.388,122,136,Peru
+129,D,2019/01/12 03:36:30.219,2019/01/12 03:36:30.219,123,244,Ceuta & Melilla
+108,E,2019/01/12 03:38:16.787,2019/01/12 03:38:16.787,131,143,Jordan
+131,A,2019/01/12 03:40:00.000,2019/01/12 03:40:00.000,227,133,Cambodia
+128,F,2019/01/12 03:40:15.445,2019/01/12 03:40:15.445,73,63,Yemen
+105,C,2019/01/12 03:42:11.006,2019/01/12 03:42:11.006,35,47,Mozambique
+121,G,2019/01/12 03:44:09.218,2019/01/12 03:44:09.218,45,76,Armenia
+127,E,2019/01/12 03:47:02.175,2019/01/12 03:47:02.175,157,106,Thailand
+130,D,2019/01/12 03:51:08.925,2019/01/12 03:51:08.925,190,209,Guatemala
+123,A,2019/01/12 03:53:26.334,2019/01/12 03:53:26.334,66,6,Micronesia
+116,M,2019/01/12 03:55:27.715,2019/01/12 03:55:27.715,241,253,Japan
+124,F,2019/01/12 03:55:42.590,2019/01/12 03:55:42.590,130,0,Bahamas
+118,A,2019/01/12 03:58:08.111,2019/01/12 03:58:08.111,250,69,Martinique
+109,J,2019/01/12 03:59:05.663,2019/01/12 03:59:05.663,138,164,Ceuta & Melilla
+132,A,2019/01/12 04:00:00.000,2019/01/12 04:00:00.000,26,121,Guinea
+126,D,2019/01/12 04:03:32.214,2019/01/12 04:03:32.214,240,70,South Korea
+119,N,2019/01/12 04:03:46.268,2019/01/12 04:03:46.268,83,155,Burkina Faso
+120,M,2019/01/12 04:05:02.805,2019/01/12 04:05:02.805,134,36,Seychelles
+129,F,2019/01/12 04:06:43.823,2019/01/12 04:06:43.823,119,166,Ghana
+128,E,2019/01/12 04:07:08.003,2019/01/12 04:07:08.003,228,93,Kenya
+108,G,2019/01/12 04:08:05.409,2019/01/12 04:08:05.409,179,144,Mauritania
+121,I,2019/01/12 04:10:00.945,2019/01/12 04:10:00.945,183,102,Zambia
+105,A,2019/01/12 04:13:35.005,2019/01/12 04:13:35.005,245,165,Venezuela
+131,D,2019/01/12 04:14:10.793,2019/01/12 04:14:10.793,20,104,Marshall Islands
+133,A,2019/01/12 04:20:00.000,2019/01/12 04:20:00.000,84,2,Libya
+130,F,2019/01/12 04:20:06.513,2019/01/12 04:20:06.513,181,172,Oman
+127,G,2019/01/12 04:20:16.427,2019/01/12 04:20:16.427,46,158,Mexico
+123,B,2019/01/12 04:24:22.318,2019/01/12 04:24:22.318,154,151,Sweden
+132,D,2019/01/12 04:26:14.089,2019/01/12 04:26:14.089,157,78,Bhutan
+116,N,2019/01/12 04:26:48.709,2019/01/12 04:26:48.709,243,131,Indonesia
+124,E,2019/01/12 04:27:13.113,2019/01/12 04:27:13.113,62,165,Guam
+126,F,2019/01/12 04:29:28.505,2019/01/12 04:29:28.505,16,126,Canada
+118,D,2019/01/12 04:29:45.596,2019/01/12 04:29:45.596,124,87,Grenada
+109,K,2019/01/12 04:29:46.038,2019/01/12 04:29:46.038,164,85,Grenada
+120,N,2019/01/12 04:35:20.453,2019/01/12 04:35:20.453,70,242,Ghana
+128,G,2019/01/12 04:36:12.259,2019/01/12 04:36:12.259,76,152,Slovenia
+108,H,2019/01/12 04:39:45.563,2019/01/12 04:39:45.563,102,224,Curaçao
+105,D,2019/01/12 04:41:04.135,2019/01/12 04:41:04.135,157,120,Syria
+131,F,2019/01/12 04:43:44.750,2019/01/12 04:43:44.750,26,19,Zimbabwe
+130,E,2019/01/12 04:46:23.876,2019/01/12 04:46:23.876,223,211,Turkey
+121,J,2019/01/12 04:47:35.875,2019/01/12 04:47:35.875,61,82,Iran
+127,I,2019/01/12 04:49:02.611,2019/01/12 04:49:02.611,166,97,Afghanistan
+133,D,2019/01/12 04:49:31.433,2019/01/12 04:49:31.433,179,104,St. Vincent & Grenadines
+118,F,2019/01/12 04:51:38.435,2019/01/12 04:51:38.435,176,160,Colombia
+124,G,2019/01/12 04:56:45.330,2019/01/12 04:56:45.330,146,75,Jamaica
+109,M,2019/01/12 04:56:52.577,2019/01/12 04:56:52.577,205,108,Denmark
+132,F,2019/01/12 04:57:25.202,2019/01/12 04:57:25.202,92,169,Zambia
+123,C,2019/01/12 04:57:29.967,2019/01/12 04:57:29.967,217,207,Tokelau
+126,E,2019/01/12 04:59:09.906,2019/01/12 04:59:09.906,144,205,Ukraine
+135,A,2019/01/12 05:00:00.000,2019/01/12 05:00:00.000,172,100,Guam
+128,I,2019/01/12 05:07:16.881,2019/01/12 05:07:16.881,195,200,Vatican City
+131,E,2019/01/12 05:12:39.810,2019/01/12 05:12:39.810,172,173,Swaziland
+121,K,2019/01/12 05:14:10.317,2019/01/12 05:14:10.317,241,72,Curaçao
+105,F,2019/01/12 05:14:26.018,2019/01/12 05:14:26.018,75,74,Maldives
+130,G,2019/01/12 05:15:21.642,2019/01/12 05:15:21.642,254,214,Slovenia
+127,J,2019/01/12 05:16:52.116,2019/01/12 05:16:52.116,238,9,Lithuania
+118,E,2019/01/12 05:18:59.356,2019/01/12 05:18:59.356,112,85,Philippines
+133,F,2019/01/12 05:19:11.426,2019/01/12 05:19:11.426,35,226,Isle of Man
+136,A,2019/01/12 05:20:00.000,2019/01/12 05:20:00.000,179,90,Sudan
+109,N,2019/01/12 05:25:01.732,2019/01/12 05:25:01.732,12,79,Antarctica
+132,E,2019/01/12 05:25:28.019,2019/01/12 05:25:28.019,178,175,Nauru
+124,I,2019/01/12 05:26:40.343,2019/01/12 05:26:40.343,170,68,Mexico
+123,A,2019/01/12 05:30:52.151,2019/01/12 05:30:52.151,152,112,Uzbekistan
+135,D,2019/01/12 05:33:46.191,2019/01/12 05:33:46.191,187,157,Tuvalu
+126,G,2019/01/12 05:34:09.111,2019/01/12 05:34:09.111,19,210,Greece
+131,G,2019/01/12 05:40:01.052,2019/01/12 05:40:01.052,211,31,Sint Maarten
+128,J,2019/01/12 05:41:25.742,2019/01/12 05:41:25.742,83,116,Afghanistan
+105,E,2019/01/12 05:43:12.029,2019/01/12 05:43:12.029,43,46,Malawi
+121,M,2019/01/12 05:44:20.800,2019/01/12 05:44:20.800,45,156,Zambia
+130,I,2019/01/12 05:45:24.080,2019/01/12 05:45:24.080,150,35,Samoa
+127,K,2019/01/12 05:48:50.264,2019/01/12 05:48:50.264,182,57,Austria
+136,D,2019/01/12 05:51:56.186,2019/01/12 05:51:56.186,34,77,Guinea
+133,E,2019/01/12 05:52:39.583,2019/01/12 05:52:39.583,86,162,Vanuatu
+118,G,2019/01/12 05:52:56.500,2019/01/12 05:52:56.500,203,194,St. Martin
+132,G,2019/01/12 05:53:30.815,2019/01/12 05:53:30.815,132,251,Russia
+124,J,2019/01/12 05:56:10.430,2019/01/12 05:56:10.430,15,194,Belgium
+138,A,2019/01/12 06:00:00.000,2019/01/12 06:00:00.000,44,198,Switzerland
+135,F,2019/01/12 06:00:05.857,2019/01/12 06:00:05.857,170,91,St. Helena
+123,B,2019/01/12 06:00:50.418,2019/01/12 06:00:50.418,175,31,New Caledonia
+126,I,2019/01/12 06:05:21.591,2019/01/12 06:05:21.591,208,201,Mali
+128,K,2019/01/12 06:10:10.795,2019/01/12 06:10:10.795,197,66,Georgia
+131,H,2019/01/12 06:10:38.133,2019/01/12 06:10:38.133,136,172,Bosnia & Herzegovina
+105,G,2019/01/12 06:11:45.556,2019/01/12 06:11:45.556,148,141,Peru
+121,O,2019/01/12 06:13:20.524,2019/01/12 06:13:20.524,88,173,Serbia
+127,M,2019/01/12 06:16:04.279,2019/01/12 06:16:04.279,155,240,Svalbard & Jan Mayen
+130,J,2019/01/12 06:19:27.364,2019/01/12 06:19:27.364,246,245,Macedonia
+139,A,2019/01/12 06:20:00.000,2019/01/12 06:20:00.000,116,164,Cameroon
+133,G,2019/01/12 06:20:48.313,2019/01/12 06:20:48.313,202,67,Taiwan
+118,I,2019/01/12 06:23:48.062,2019/01/12 06:23:48.062,169,194,Sint Maarten
+132,I,2019/01/12 06:24:53.192,2019/01/12 06:24:53.192,154,59,Congo - Brazzaville
+136,F,2019/01/12 06:26:00.518,2019/01/12 06:26:00.518,69,129,Kyrgyzstan
+138,B,2019/01/12 06:27:31.852,2019/01/12 06:27:31.852,189,53,Mozambique
+124,L,2019/01/12 06:27:40.505,2019/01/12 06:27:40.505,53,125,United States
+135,E,2019/01/12 06:28:57.375,2019/01/12 06:28:57.375,129,206,Grenada
+123,C,2019/01/12 06:33:20.083,2019/01/12 06:33:20.083,201,202,Seychelles
+126,J,2019/01/12 06:33:40.835,2019/01/12 06:33:40.835,54,253,Bahrain
+105,H,2019/01/12 06:36:14.114,2019/01/12 06:36:14.114,0,249,Italy
+134,D,2019/01/12 06:39:46.088,2019/01/12 06:39:46.088,91,87,United Kingdom
+140,A,2019/01/12 06:40:00.000,2019/01/12 06:40:00.000,12,143,Kyrgyzstan
+128,M,2019/01/12 06:48:12.244,2019/01/12 06:48:12.244,73,99,Guinea
+127,O,2019/01/12 06:49:13.493,2019/01/12 06:49:13.493,89,137,Solomon Islands
+118,J,2019/01/12 06:52:19.382,2019/01/12 06:52:19.382,98,146,Vanuatu
+139,B,2019/01/12 06:52:29.640,2019/01/12 06:52:29.640,33,27,Malaysia
+133,I,2019/01/12 06:53:03.044,2019/01/12 06:53:03.044,203,51,Austria
+132,J,2019/01/12 06:54:56.956,2019/01/12 06:54:56.956,60,73,Mauritania
+124,M,2019/01/12 06:55:57.823,2019/01/12 06:55:57.823,24,124,Iraq
+123,A,2019/01/12 06:56:45.255,2019/01/12 06:56:45.255,16,109,Djibouti
+138,C,2019/01/12 06:57:09.823,2019/01/12 06:57:09.823,63,27,Indonesia
+136,E,2019/01/12 06:57:53.176,2019/01/12 06:57:53.176,21,43,Northern Mariana Islands
+130,K,2019/01/12 06:58:03.542,2019/01/12 06:58:03.542,135,181,Azerbaijan
+141,A,2019/01/12 07:00:00.000,2019/01/12 07:00:00.000,221,32,Chad
+135,G,2019/01/12 07:00:54.805,2019/01/12 07:00:54.805,51,213,Lebanon
+126,L,2019/01/12 07:03:53.467,2019/01/12 07:03:53.467,53,107,Faroe Islands
+140,D,2019/01/12 07:08:05.989,2019/01/12 07:08:05.989,3,79,Svalbard & Jan Mayen
+134,F,2019/01/12 07:09:24.911,2019/01/12 07:09:24.911,161,139,Mozambique
+128,O,2019/01/12 07:11:48.680,2019/01/12 07:11:48.680,129,98,Bahrain
+142,A,2019/01/12 07:20:00.000,2019/01/12 07:20:00.000,112,218,Christmas Island
+139,C,2019/01/12 07:23:08.579,2019/01/12 07:23:08.579,21,67,Trinidad & Tobago
+118,L,2019/01/12 07:23:31.912,2019/01/12 07:23:31.912,172,18,Guadeloupe
+124,N,2019/01/12 07:24:42.452,2019/01/12 07:24:42.452,88,59,Turkmenistan
+138,A,2019/01/12 07:26:45.095,2019/01/12 07:26:45.095,234,120,Azerbaijan
+136,G,2019/01/12 07:27:37.373,2019/01/12 07:27:37.373,66,219,Mongolia
+130,M,2019/01/12 07:29:09.690,2019/01/12 07:29:09.690,116,119,Spain
+133,J,2019/01/12 07:29:29.778,2019/01/12 07:29:29.778,114,18,Bangladesh
+123,B,2019/01/12 07:29:49.602,2019/01/12 07:29:49.602,45,159,Greenland
+141,B,2019/01/12 07:30:35.143,2019/01/12 07:30:35.143,185,157,Norway
+135,H,2019/01/12 07:30:43.758,2019/01/12 07:30:43.758,76,190,Papua New Guinea
+132,K,2019/01/12 07:31:28.019,2019/01/12 07:31:28.019,162,74,Bangladesh
+126,M,2019/01/12 07:31:31.533,2019/01/12 07:31:31.533,136,127,Ecuador
+140,F,2019/01/12 07:38:52.834,2019/01/12 07:38:52.834,40,155,Montenegro
+143,A,2019/01/12 07:40:00.000,2019/01/12 07:40:00.000,9,127,Kyrgyzstan
+134,E,2019/01/12 07:40:36.676,2019/01/12 07:40:36.676,62,157,Haiti
+136,H,2019/01/12 07:54:02.573,2019/01/12 07:54:02.573,255,211,Benin
+139,A,2019/01/12 07:54:09.594,2019/01/12 07:54:09.594,219,57,Papua New Guinea
+142,D,2019/01/12 07:56:10.597,2019/01/12 07:56:10.597,249,32,Burundi
+133,L,2019/01/12 07:57:33.689,2019/01/12 07:57:33.689,83,137,Cape Verde
+138,B,2019/01/12 07:58:26.858,2019/01/12 07:58:26.858,27,228,Ghana
+123,C,2019/01/12 07:58:51.940,2019/01/12 07:58:51.940,154,38,Sint Maarten
+144,A,2019/01/12 08:00:00.000,2019/01/12 08:00:00.000,71,74,French Guiana
+118,M,2019/01/12 08:00:24.389,2019/01/12 08:00:24.389,129,242,Comoros
+141,C,2019/01/12 08:01:17.109,2019/01/12 08:01:17.109,245,71,China
+130,O,2019/01/12 08:01:24.718,2019/01/12 08:01:24.718,82,202,Hungary
+132,M,2019/01/12 08:02:40.920,2019/01/12 08:02:40.920,134,253,Azerbaijan
+143,D,2019/01/12 08:05:11.980,2019/01/12 08:05:11.980,236,203,Burkina Faso
+126,N,2019/01/12 08:06:36.062,2019/01/12 08:06:36.062,174,21,Vatican City
+134,G,2019/01/12 08:08:42.909,2019/01/12 08:08:42.909,121,251,Isle of Man
+140,E,2019/01/12 08:10:10.012,2019/01/12 08:10:10.012,80,181,Latvia
+137,I,2019/01/12 08:12:31.860,2019/01/12 08:12:31.860,234,105,Western Sahara
+145,A,2019/01/12 08:20:00.000,2019/01/12 08:20:00.000,101,97,El Salvador
+139,B,2019/01/12 08:22:05.228,2019/01/12 08:22:05.228,149,3,Cyprus
+133,M,2019/01/12 08:24:18.225,2019/01/12 08:24:18.225,222,197,Wallis & Futuna
+123,A,2019/01/12 08:26:42.066,2019/01/12 08:26:42.066,123,200,Solomon Islands
+142,F,2019/01/12 08:30:07.657,2019/01/12 08:30:07.657,113,135,Tanzania
+138,C,2019/01/12 08:30:18.982,2019/01/12 08:30:18.982,160,55,South Georgia & South Sandwich Islands
+143,F,2019/01/12 08:33:28.733,2019/01/12 08:33:28.733,214,212,Chad
+144,B,2019/01/12 08:33:31.550,2019/01/12 08:33:31.550,101,163,Brunei
+141,A,2019/01/12 08:34:17.532,2019/01/12 08:34:17.532,124,231,Gibraltar
+118,N,2019/01/12 08:34:46.236,2019/01/12 08:34:46.236,2,190,Réunion
+134,H,2019/01/12 08:35:45.080,2019/01/12 08:35:45.080,69,41,St. Barthélemy
+132,O,2019/01/12 08:37:18.704,2019/01/12 08:37:18.704,164,249,India
+146,A,2019/01/12 08:40:00.000,2019/01/12 08:40:00.000,226,94,Congo - Kinshasa
+140,G,2019/01/12 08:42:36.055,2019/01/12 08:42:36.055,143,98,Cuba
+137,J,2019/01/12 08:45:13.290,2019/01/12 08:45:13.290,124,182,Lesotho
+145,D,2019/01/12 08:51:34.349,2019/01/12 08:51:34.349,29,194,Falkland Islands
+139,C,2019/01/12 08:52:11.922,2019/01/12 08:52:11.922,68,226,Paraguay
+133,O,2019/01/12 08:53:23.395,2019/01/12 08:53:23.395,181,93,U.S. Outlying Islands
+123,D,2019/01/12 08:55:54.105,2019/01/12 08:55:54.105,198,91,Japan
+138,A,2019/01/12 08:59:05.708,2019/01/12 08:59:05.708,243,248,Uzbekistan
+147,A,2019/01/12 09:00:00.000,2019/01/12 09:00:00.000,4,13,Libya
+143,E,2019/01/12 09:00:48.383,2019/01/12 09:00:48.383,53,32,Bosnia & Herzegovina
+142,E,2019/01/12 09:01:33.154,2019/01/12 09:01:33.154,170,33,Kosovo
+141,B,2019/01/12 09:03:34.774,2019/01/12 09:03:34.774,165,80,Canary Islands
+144,C,2019/01/12 09:05:26.715,2019/01/12 09:05:26.715,247,202,Jersey
+146,B,2019/01/12 09:08:51.524,2019/01/12 09:08:51.524,143,7,Colombia
+140,H,2019/01/12 09:11:27.324,2019/01/12 09:11:27.324,65,32,Armenia
+137,L,2019/01/12 09:13:28.065,2019/01/12 09:13:28.065,253,245,North Korea
+148,A,2019/01/12 09:20:00.000,2019/01/12 09:20:00.000,59,55,Sri Lanka
+145,F,2019/01/12 09:23:45.487,2019/01/12 09:23:45.487,232,195,Australia
+139,A,2019/01/12 09:24:42.888,2019/01/12 09:24:42.888,101,54,Georgia
+123,F,2019/01/12 09:25:18.775,2019/01/12 09:25:18.775,63,16,Christmas Island
+144,A,2019/01/12 09:27:19.214,2019/01/12 09:27:19.214,133,208,Bangladesh
+141,C,2019/01/12 09:27:52.475,2019/01/12 09:27:52.475,176,185,United Arab Emirates
+147,D,2019/01/12 09:29:01.441,2019/01/12 09:29:01.441,48,248,Morocco
+138,B,2019/01/12 09:29:51.746,2019/01/12 09:29:51.746,198,167,Trinidad & Tobago
+143,G,2019/01/12 09:32:19.083,2019/01/12 09:32:19.083,68,117,Romania
+142,G,2019/01/12 09:34:29.212,2019/01/12 09:34:29.212,90,198,Kuwait
+146,C,2019/01/12 09:39:53.448,2019/01/12 09:39:53.448,76,226,Jordan
+149,A,2019/01/12 09:40:00.000,2019/01/12 09:40:00.000,124,251,Myanmar (Burma)
+137,M,2019/01/12 09:40:51.213,2019/01/12 09:40:51.213,94,139,Congo - Brazzaville
+148,D,2019/01/12 09:45:50.130,2019/01/12 09:45:50.130,248,251,India
+139,D,2019/01/12 09:50:57.394,2019/01/12 09:50:57.394,113,192,Uganda
+144,D,2019/01/12 09:53:56.103,2019/01/12 09:53:56.103,162,149,Malta
+145,E,2019/01/12 09:54:05.464,2019/01/12 09:54:05.464,188,206,Guyana
+123,E,2019/01/12 09:54:33.948,2019/01/12 09:54:33.948,52,220,Senegal
+138,C,2019/01/12 09:56:57.661,2019/01/12 09:56:57.661,66,48,Mali
+141,A,2019/01/12 09:58:57.830,2019/01/12 09:58:57.830,48,108,Solomon Islands
+147,F,2019/01/12 10:00:06.672,2019/01/12 10:00:06.672,234,248,Lebanon
+143,H,2019/01/12 10:07:16.827,2019/01/12 10:07:16.827,181,212,Mexico
+142,I,2019/01/12 10:11:04.051,2019/01/12 10:11:04.051,18,28,Cambodia
+146,A,2019/01/12 10:11:33.531,2019/01/12 10:11:33.531,154,213,Palau
+137,O,2019/01/12 10:13:04.698,2019/01/12 10:13:04.698,57,36,Belize
+149,D,2019/01/12 10:15:21.266,2019/01/12 10:15:21.266,221,233,Trinidad & Tobago
+148,F,2019/01/12 10:16:42.813,2019/01/12 10:16:42.813,89,208,Bahrain
+151,A,2019/01/12 10:20:00.000,2019/01/12 10:20:00.000,136,236,Netherlands
+139,F,2019/01/12 10:21:58.558,2019/01/12 10:21:58.558,143,46,Togo
+144,F,2019/01/12 10:22:14.377,2019/01/12 10:22:14.377,45,167,Slovenia
+123,G,2019/01/12 10:25:02.287,2019/01/12 10:25:02.287,38,130,Iran
+147,E,2019/01/12 10:26:22.925,2019/01/12 10:26:22.925,73,95,St. Barthélemy
+141,B,2019/01/12 10:29:00.144,2019/01/12 10:29:00.144,200,93,Sierra Leone
+138,A,2019/01/12 10:29:02.295,2019/01/12 10:29:02.295,98,101,Cambodia
+145,G,2019/01/12 10:32:45.061,2019/01/12 10:32:45.061,15,30,Malawi
+142,J,2019/01/12 10:39:40.214,2019/01/12 10:39:40.214,80,48,Cyprus
+152,A,2019/01/12 10:40:00.000,2019/01/12 10:40:00.000,247,25,Belize
+149,F,2019/01/12 10:41:19.256,2019/01/12 10:41:19.256,37,119,Wallis & Futuna
+146,D,2019/01/12 10:42:57.057,2019/01/12 10:42:57.057,17,73,Algeria
+148,E,2019/01/12 10:43:00.443,2019/01/12 10:43:00.443,178,198,Comoros
+139,E,2019/01/12 10:48:14.112,2019/01/12 10:48:14.112,116,121,Bhutan
+151,D,2019/01/12 10:50:41.481,2019/01/12 10:50:41.481,127,66,Ecuador
+123,H,2019/01/12 10:51:28.619,2019/01/12 10:51:28.619,139,179,Cambodia
+144,E,2019/01/12 10:53:07.465,2019/01/12 10:53:07.465,101,184,South Africa
+147,G,2019/01/12 10:58:44.123,2019/01/12 10:58:44.123,16,185,Liberia
+138,B,2019/01/12 10:59:43.415,2019/01/12 10:59:43.415,57,248,Kuwait
+153,A,2019/01/12 11:00:00.000,2019/01/12 11:00:00.000,234,131,Sri Lanka
+141,C,2019/01/12 11:00:23.964,2019/01/12 11:00:23.964,95,75,British Indian Ocean Territory
+145,I,2019/01/12 11:05:15.234,2019/01/12 11:05:15.234,171,159,Estonia
+149,E,2019/01/12 11:10:58.793,2019/01/12 11:10:58.793,83,175,Vanuatu
+148,G,2019/01/12 11:11:47.138,2019/01/12 11:11:47.138,235,160,Afghanistan
+146,F,2019/01/12 11:11:53.936,2019/01/12 11:11:53.936,70,34,Antigua & Barbuda
+142,L,2019/01/12 11:11:57.424,2019/01/12 11:11:57.424,38,66,Ecuador
+152,D,2019/01/12 11:11:58.826,2019/01/12 11:11:58.826,180,67,Réunion
+139,G,2019/01/12 11:15:22.771,2019/01/12 11:15:22.771,83,45,Gambia
+151,F,2019/01/12 11:19:19.830,2019/01/12 11:19:19.830,19,92,Chile
+154,A,2019/01/12 11:20:00.000,2019/01/12 11:20:00.000,249,158,Tuvalu
+144,G,2019/01/12 11:20:57.994,2019/01/12 11:20:57.994,230,14,Burkina Faso
+141,A,2019/01/12 11:24:32.937,2019/01/12 11:24:32.937,251,31,Macau SAR China
+147,H,2019/01/12 11:28:55.102,2019/01/12 11:28:55.102,115,172,Tokelau
+153,D,2019/01/12 11:29:33.545,2019/01/12 11:29:33.545,180,128,Sri Lanka
+150,E,2019/01/12 11:30:57.654,2019/01/12 11:30:57.654,136,159,Libya
+138,C,2019/01/12 11:33:44.282,2019/01/12 11:33:44.282,136,5,South Sudan
+146,E,2019/01/12 11:37:37.156,2019/01/12 11:37:37.156,161,41,Guinea
+148,I,2019/01/12 11:37:39.146,2019/01/12 11:37:39.146,86,239,Slovenia
+145,J,2019/01/12 11:39:04.577,2019/01/12 11:39:04.577,186,91,Pakistan
+149,G,2019/01/12 11:39:11.756,2019/01/12 11:39:11.756,122,233,Åland Islands
+142,M,2019/01/12 11:39:39.488,2019/01/12 11:39:39.488,255,44,Belize
+139,I,2019/01/12 11:41:01.286,2019/01/12 11:41:01.286,70,226,Jordan
+152,F,2019/01/12 11:42:36.606,2019/01/12 11:42:36.606,210,38,Kiribati
+144,H,2019/01/12 11:47:24.586,2019/01/12 11:47:24.586,209,86,Rwanda
+154,B,2019/01/12 11:47:40.680,2019/01/12 11:47:40.680,97,41,French Polynesia
+151,E,2019/01/12 11:51:02.253,2019/01/12 11:51:02.253,73,36,Grenada
+153,F,2019/01/12 11:53:33.204,2019/01/12 11:53:33.204,188,211,Pitcairn Islands
+141,D,2019/01/12 11:55:16.022,2019/01/12 11:55:16.022,128,224,Brazil
+156,A,2019/01/12 12:00:00.000,2019/01/12 12:00:00.000,232,121,Timor-Leste
+150,G,2019/01/12 12:02:28.999,2019/01/12 12:02:28.999,24,77,St. Helena
+139,J,2019/01/12 12:05:23.233,2019/01/12 12:05:23.233,81,222,Martinique
+148,J,2019/01/12 12:05:33.745,2019/01/12 12:05:33.745,224,141,Macedonia
+149,H,2019/01/12 12:07:47.045,2019/01/12 12:07:47.045,42,134,Vatican City
+146,G,2019/01/12 12:10:59.873,2019/01/12 12:10:59.873,74,78,Guatemala
+145,K,2019/01/12 12:11:19.490,2019/01/12 12:11:19.490,52,160,Sri Lanka
+152,E,2019/01/12 12:16:33.835,2019/01/12 12:16:33.835,215,240,Kyrgyzstan
+154,C,2019/01/12 12:16:56.011,2019/01/12 12:16:56.011,203,252,Lebanon
+142,O,2019/01/12 12:18:28.389,2019/01/12 12:18:28.389,40,136,British Indian Ocean Territory
+157,A,2019/01/12 12:20:00.000,2019/01/12 12:20:00.000,67,58,Gibraltar
+151,G,2019/01/12 12:20:58.473,2019/01/12 12:20:58.473,25,199,Brunei
+153,E,2019/01/12 12:25:29.541,2019/01/12 12:25:29.541,42,208,American Samoa
+141,F,2019/01/12 12:27:16.188,2019/01/12 12:27:16.188,132,5,Timor-Leste
+156,D,2019/01/12 12:27:47.501,2019/01/12 12:27:47.501,148,51,Antigua & Barbuda
+148,L,2019/01/12 12:33:23.438,2019/01/12 12:33:23.438,56,230,Equatorial Guinea
+150,H,2019/01/12 12:34:32.964,2019/01/12 12:34:32.964,242,73,Oman
+146,H,2019/01/12 12:37:48.863,2019/01/12 12:37:48.863,132,90,South Georgia & South Sandwich Islands
+158,A,2019/01/12 12:40:00.000,2019/01/12 12:40:00.000,255,126,Åland Islands
+139,K,2019/01/12 12:40:24.939,2019/01/12 12:40:24.939,222,236,Finland
+145,M,2019/01/12 12:40:54.452,2019/01/12 12:40:54.452,169,100,Croatia
+152,G,2019/01/12 12:44:46.539,2019/01/12 12:44:46.539,84,115,Cape Verde
+154,A,2019/01/12 12:46:07.570,2019/01/12 12:46:07.570,8,89,Tajikistan
+157,D,2019/01/12 12:49:38.524,2019/01/12 12:49:38.524,231,1,Vanuatu
+151,I,2019/01/12 12:50:09.226,2019/01/12 12:50:09.226,74,17,Ireland
+153,G,2019/01/12 12:53:39.431,2019/01/12 12:53:39.431,81,116,Eritrea
+141,E,2019/01/12 12:57:25.908,2019/01/12 12:57:25.908,45,203,Cyprus
+156,F,2019/01/12 12:58:38.117,2019/01/12 12:58:38.117,250,245,Suriname
+159,A,2019/01/12 13:00:00.000,2019/01/12 13:00:00.000,39,16,Uruguay
+148,M,2019/01/12 13:02:13.793,2019/01/12 13:02:13.793,12,148,Moldova
+158,B,2019/01/12 13:11:56.103,2019/01/12 13:11:56.103,159,201,Isle of Man
+145,N,2019/01/12 13:12:31.358,2019/01/12 13:12:31.358,143,89,Turks & Caicos Islands
+139,M,2019/01/12 13:13:48.071,2019/01/12 13:13:48.071,128,37,Panama
+154,B,2019/01/12 13:15:15.124,2019/01/12 13:15:15.124,141,143,Hungary
+152,H,2019/01/12 13:16:54.618,2019/01/12 13:16:54.618,201,202,Macedonia
+157,F,2019/01/12 13:16:55.114,2019/01/12 13:16:55.114,53,137,Guernsey
+151,J,2019/01/12 13:26:15.865,2019/01/12 13:26:15.865,63,3,Iran
+153,I,2019/01/12 13:26:34.196,2019/01/12 13:26:34.196,141,43,Tanzania
+156,E,2019/01/12 13:27:03.650,2019/01/12 13:27:03.650,139,128,Italy
+141,G,2019/01/12 13:29:40.022,2019/01/12 13:29:40.022,27,99,South Sudan
+159,B,2019/01/12 13:32:14.508,2019/01/12 13:32:14.508,177,204,Montserrat
+148,N,2019/01/12 13:33:39.376,2019/01/12 13:33:39.376,6,161,Morocco
+161,A,2019/01/12 13:40:00.000,2019/01/12 13:40:00.000,64,133,Kyrgyzstan
+154,C,2019/01/12 13:41:15.148,2019/01/12 13:41:15.148,251,87,São Tomé and Príncipe
+139,O,2019/01/12 13:43:56.130,2019/01/12 13:43:56.130,82,227,Indonesia
+158,C,2019/01/12 13:46:31.146,2019/01/12 13:46:31.146,212,222,South Africa
+157,E,2019/01/12 13:47:59.128,2019/01/12 13:47:59.128,75,75,Zambia
+151,L,2019/01/12 13:51:45.029,2019/01/12 13:51:45.029,111,191,U.S. Outlying Islands
+153,J,2019/01/12 13:59:23.235,2019/01/12 13:59:23.235,144,254,Venezuela
+162,A,2019/01/12 14:00:00.000,2019/01/12 14:00:00.000,30,168,Mali
+141,H,2019/01/12 14:01:14.057,2019/01/12 14:01:14.057,135,86,Malaysia
+156,G,2019/01/12 14:01:29.144,2019/01/12 14:01:29.144,13,3,Sweden
+159,C,2019/01/12 14:04:01.303,2019/01/12 14:04:01.303,4,212,Cameroon
+161,B,2019/01/12 14:11:26.103,2019/01/12 14:11:26.103,66,167,Eritrea
+154,A,2019/01/12 14:11:51.347,2019/01/12 14:11:51.347,31,199,Switzerland
+157,G,2019/01/12 14:12:22.782,2019/01/12 14:12:22.782,198,2,St. Vincent & Grenadines
+163,A,2019/01/12 14:20:00.000,2019/01/12 14:20:00.000,250,232,Senegal
+151,M,2019/01/12 14:20:37.752,2019/01/12 14:20:37.752,17,37,Saudi Arabia
+158,A,2019/01/12 14:23:19.403,2019/01/12 14:23:19.403,168,251,Réunion
+153,K,2019/01/12 14:27:06.531,2019/01/12 14:27:06.531,216,119,Luxembourg
+162,B,2019/01/12 14:29:05.681,2019/01/12 14:29:05.681,223,29,New Caledonia
+156,I,2019/01/12 14:32:14.064,2019/01/12 14:32:14.064,125,224,St. Helena
+159,A,2019/01/12 14:37:08.361,2019/01/12 14:37:08.361,231,165,Ghana
+161,C,2019/01/12 14:39:46.162,2019/01/12 14:39:46.162,62,135,Cyprus
+164,A,2019/01/12 14:40:00.000,2019/01/12 14:40:00.000,160,26,Cameroon
+155,A,2019/01/12 14:40:21.325,2019/01/12 14:40:21.325,41,3,Ireland
+157,H,2019/01/12 14:44:58.374,2019/01/12 14:44:58.374,193,33,Vatican City
+154,B,2019/01/12 14:45:09.961,2019/01/12 14:45:09.961,230,33,Poland
+151,O,2019/01/12 14:49:15.810,2019/01/12 14:49:15.810,26,63,Lebanon
+163,D,2019/01/12 14:50:14.348,2019/01/12 14:50:14.348,205,71,Burkina Faso
+158,D,2019/01/12 14:50:27.675,2019/01/12 14:50:27.675,109,106,Diego Garcia
+162,C,2019/01/12 14:55:49.874,2019/01/12 14:55:49.874,108,46,China
+153,M,2019/01/12 14:57:50.008,2019/01/12 14:57:50.008,121,141,French Polynesia
+160,E,2019/01/12 14:58:53.505,2019/01/12 14:58:53.505,142,45,Russia
+165,A,2019/01/12 15:00:00.000,2019/01/12 15:00:00.000,120,129,Solomon Islands
+156,J,2019/01/12 15:03:07.827,2019/01/12 15:03:07.827,65,248,United Kingdom
+159,D,2019/01/12 15:07:49.335,2019/01/12 15:07:49.335,208,218,Congo - Kinshasa
+161,A,2019/01/12 15:08:19.367,2019/01/12 15:08:19.367,101,48,Palau
+155,D,2019/01/12 15:08:56.764,2019/01/12 15:08:56.764,53,134,Luxembourg
+164,B,2019/01/12 15:11:01.727,2019/01/12 15:11:01.727,172,39,Brazil
+154,C,2019/01/12 15:13:11.340,2019/01/12 15:13:11.340,43,112,Romania
+158,F,2019/01/12 15:18:53.914,2019/01/12 15:18:53.914,0,154,North Korea
+166,A,2019/01/12 15:20:00.000,2019/01/12 15:20:00.000,81,202,Kiribati
+163,F,2019/01/12 15:21:44.622,2019/01/12 15:21:44.622,231,141,French Southern Territories
+162,A,2019/01/12 15:25:04.517,2019/01/12 15:25:04.517,207,104,Bhutan
+153,O,2019/01/12 15:26:29.681,2019/01/12 15:26:29.681,35,181,Honduras
+160,G,2019/01/12 15:26:47.536,2019/01/12 15:26:47.536,17,90,Cameroon
+165,D,2019/01/12 15:28:43.505,2019/01/12 15:28:43.505,228,186,Diego Garcia
+156,L,2019/01/12 15:31:37.189,2019/01/12 15:31:37.189,158,170,Angola
+154,A,2019/01/12 15:37:27.923,2019/01/12 15:37:27.923,64,3,Latvia
+155,F,2019/01/12 15:39:01.072,2019/01/12 15:39:01.072,150,20,Timor-Leste
+167,A,2019/01/12 15:40:00.000,2019/01/12 15:40:00.000,166,19,Antigua & Barbuda
+161,D,2019/01/12 15:40:22.524,2019/01/12 15:40:22.524,224,154,Mayotte
+159,F,2019/01/12 15:40:49.311,2019/01/12 15:40:49.311,70,228,Czech Republic
+164,C,2019/01/12 15:43:04.830,2019/01/12 15:43:04.830,131,170,British Virgin Islands
+158,E,2019/01/12 15:47:14.192,2019/01/12 15:47:14.192,153,6,Hong Kong SAR China
+162,D,2019/01/12 15:53:22.922,2019/01/12 15:53:22.922,133,127,Dominican Republic
+163,E,2019/01/12 15:54:12.210,2019/01/12 15:54:12.210,248,227,Nauru
+166,B,2019/01/12 15:55:52.846,2019/01/12 15:55:52.846,32,148,Pakistan
+160,H,2019/01/12 15:57:14.891,2019/01/12 15:57:14.891,126,10,Kyrgyzstan
+168,A,2019/01/12 16:00:00.000,2019/01/12 16:00:00.000,183,19,Tunisia
+165,F,2019/01/12 16:03:58.261,2019/01/12 16:03:58.261,39,67,San Marino
+156,M,2019/01/12 16:05:17.086,2019/01/12 16:05:17.086,182,228,Congo - Kinshasa
+154,D,2019/01/12 16:09:45.716,2019/01/12 16:09:45.716,76,31,Tristan da Cunha
+159,E,2019/01/12 16:10:44.458,2019/01/12 16:10:44.458,86,124,Congo - Brazzaville
+155,E,2019/01/12 16:10:47.407,2019/01/12 16:10:47.407,67,220,Georgia
+167,D,2019/01/12 16:12:10.339,2019/01/12 16:12:10.339,127,7,Christmas Island
+161,F,2019/01/12 16:13:13.154,2019/01/12 16:13:13.154,249,184,Nepal
+158,G,2019/01/12 16:13:59.826,2019/01/12 16:13:59.826,201,250,Sint Maarten
+164,A,2019/01/12 16:16:35.649,2019/01/12 16:16:35.649,58,46,Greenland
+162,F,2019/01/12 16:18:42.320,2019/01/12 16:18:42.320,22,245,Guadeloupe
+169,A,2019/01/12 16:20:00.000,2019/01/12 16:20:00.000,152,79,Colombia
+166,C,2019/01/12 16:24:27.632,2019/01/12 16:24:27.632,153,137,Bahrain
+163,G,2019/01/12 16:26:02.613,2019/01/12 16:26:02.613,91,174,Guinea-Bissau
+168,B,2019/01/12 16:31:26.762,2019/01/12 16:31:26.762,235,47,China
+156,N,2019/01/12 16:36:57.155,2019/01/12 16:36:57.155,40,196,Algeria
+167,F,2019/01/12 16:37:50.405,2019/01/12 16:37:50.405,77,16,Tristan da Cunha
+154,F,2019/01/12 16:38:41.595,2019/01/12 16:38:41.595,172,88,Palestinian Territories
+170,A,2019/01/12 16:40:00.000,2019/01/12 16:40:00.000,14,121,Anguilla
+158,I,2019/01/12 16:40:22.625,2019/01/12 16:40:22.625,221,112,Norway
+155,G,2019/01/12 16:42:04.857,2019/01/12 16:42:04.857,147,93,French Guiana
+161,E,2019/01/12 16:45:25.124,2019/01/12 16:45:25.124,180,192,St. Lucia
+159,G,2019/01/12 16:47:23.333,2019/01/12 16:47:23.333,76,174,Lithuania
+164,B,2019/01/12 16:49:04.732,2019/01/12 16:49:04.732,111,179,British Indian Ocean Territory
+162,E,2019/01/12 16:49:25.900,2019/01/12 16:49:25.900,118,185,New Caledonia
+163,H,2019/01/12 16:51:54.432,2019/01/12 16:51:54.432,158,41,El Salvador
+166,A,2019/01/12 16:52:33.522,2019/01/12 16:52:33.522,145,50,Isle of Man
+169,B,2019/01/12 16:55:12.830,2019/01/12 16:55:12.830,168,78,Antarctica
+168,C,2019/01/12 17:02:43.123,2019/01/12 17:02:43.123,99,102,Eritrea
+158,J,2019/01/12 17:06:04.020,2019/01/12 17:06:04.020,171,100,Papua New Guinea
+154,E,2019/01/12 17:07:25.820,2019/01/12 17:07:25.820,174,20,India
+167,E,2019/01/12 17:07:31.376,2019/01/12 17:07:31.376,43,139,Solomon Islands
+170,B,2019/01/12 17:12:39.031,2019/01/12 17:12:39.031,54,149,Namibia
+155,H,2019/01/12 17:12:48.700,2019/01/12 17:12:48.700,249,101,Kyrgyzstan
+161,G,2019/01/12 17:18:15.550,2019/01/12 17:18:15.550,112,9,Saudi Arabia
+159,I,2019/01/12 17:19:35.894,2019/01/12 17:19:35.894,128,85,Nigeria
+172,A,2019/01/12 17:20:00.000,2019/01/12 17:20:00.000,27,96,Bermuda
+162,G,2019/01/12 17:20:22.908,2019/01/12 17:20:22.908,233,145,Uzbekistan
+164,C,2019/01/12 17:20:51.326,2019/01/12 17:20:51.326,154,55,Nigeria
+169,C,2019/01/12 17:24:56.719,2019/01/12 17:24:56.719,126,29,Macedonia
+166,B,2019/01/12 17:25:06.222,2019/01/12 17:25:06.222,168,167,Bermuda
+168,A,2019/01/12 17:29:34.159,2019/01/12 17:29:34.159,176,10,Hong Kong SAR China
+158,L,2019/01/12 17:35:12.016,2019/01/12 17:35:12.016,36,172,Iran
+167,G,2019/01/12 17:35:21.629,2019/01/12 17:35:21.629,69,65,Tristan da Cunha
+154,G,2019/01/12 17:37:28.935,2019/01/12 17:37:28.935,212,87,Botswana
+173,A,2019/01/12 17:40:00.000,2019/01/12 17:40:00.000,17,101,Gabon
+161,I,2019/01/12 17:43:48.101,2019/01/12 17:43:48.101,146,51,Antarctica
+170,C,2019/01/12 17:43:51.216,2019/01/12 17:43:51.216,62,138,Ethiopia
+164,A,2019/01/12 17:46:20.361,2019/01/12 17:46:20.361,64,170,Svalbard & Jan Mayen
+172,B,2019/01/12 17:47:34.325,2019/01/12 17:47:34.325,118,132,Montenegro
+159,J,2019/01/12 17:51:44.531,2019/01/12 17:51:44.531,163,72,United Arab Emirates
+169,A,2019/01/12 17:53:04.771,2019/01/12 17:53:04.771,114,48,Mexico
+162,H,2019/01/12 17:53:32.789,2019/01/12 17:53:32.789,124,69,Croatia
+166,C,2019/01/12 17:54:04.182,2019/01/12 17:54:04.182,80,82,Bangladesh
+168,B,2019/01/12 17:58:13.417,2019/01/12 17:58:13.417,9,114,Micronesia
+167,I,2019/01/12 17:58:43.774,2019/01/12 17:58:43.774,219,104,Peru
+154,I,2019/01/12 18:03:07.600,2019/01/12 18:03:07.600,213,89,South Africa
+158,M,2019/01/12 18:04:31.308,2019/01/12 18:04:31.308,106,149,Antarctica
+173,B,2019/01/12 18:07:53.080,2019/01/12 18:07:53.080,139,219,New Zealand
+170,A,2019/01/12 18:12:17.769,2019/01/12 18:12:17.769,119,241,Chile
+161,J,2019/01/12 18:16:26.815,2019/01/12 18:16:26.815,28,218,Guinea
+172,C,2019/01/12 18:17:08.430,2019/01/12 18:17:08.430,199,36,Bosnia & Herzegovina
+164,D,2019/01/12 18:17:09.962,2019/01/12 18:17:09.962,19,29,Greenland
+175,A,2019/01/12 18:20:00.000,2019/01/12 18:20:00.000,15,175,Svalbard & Jan Mayen
+169,B,2019/01/12 18:20:52.221,2019/01/12 18:20:52.221,133,180,St. Martin
+159,L,2019/01/12 18:24:39.020,2019/01/12 18:24:39.020,223,180,Algeria
+167,J,2019/01/12 18:24:42.327,2019/01/12 18:24:42.327,115,43,Trinidad & Tobago
+154,J,2019/01/12 18:26:15.030,2019/01/12 18:26:15.030,138,88,Turkey
+166,A,2019/01/12 18:29:05.616,2019/01/12 18:29:05.616,237,219,Cambodia
+173,C,2019/01/12 18:29:12.335,2019/01/12 18:29:12.335,29,127,Nigeria
+168,C,2019/01/12 18:30:45.503,2019/01/12 18:30:45.503,75,223,Austria
+158,N,2019/01/12 18:35:27.778,2019/01/12 18:35:27.778,71,231,Tuvalu
+161,L,2019/01/12 18:44:53.523,2019/01/12 18:44:53.523,49,148,Bangladesh
+170,B,2019/01/12 18:48:04.745,2019/01/12 18:48:04.745,16,215,Spain
+169,C,2019/01/12 18:48:49.610,2019/01/12 18:48:49.610,180,130,Iraq
+172,A,2019/01/12 18:49:24.093,2019/01/12 18:49:24.093,106,252,Falkland Islands
+164,F,2019/01/12 18:50:10.858,2019/01/12 18:50:10.858,63,40,Tunisia
+175,B,2019/01/12 18:50:13.431,2019/01/12 18:50:13.431,249,111,Romania
+167,K,2019/01/12 18:53:24.036,2019/01/12 18:53:24.036,203,108,Jordan
+166,D,2019/01/12 18:54:39.923,2019/01/12 18:54:39.923,81,118,Ascension Island
+154,K,2019/01/12 18:57:33.765,2019/01/12 18:57:33.765,158,145,United Arab Emirates
+159,M,2019/01/12 18:58:02.802,2019/01/12 18:58:02.802,15,111,Egypt
+177,A,2019/01/12 19:00:00.000,2019/01/12 19:00:00.000,103,50,Suriname
+173,A,2019/01/12 19:00:45.913,2019/01/12 19:00:45.913,178,117,Gibraltar
+168,A,2019/01/12 19:04:42.897,2019/01/12 19:04:42.897,156,20,Poland
+170,C,2019/01/12 19:13:44.925,2019/01/12 19:13:44.925,3,4,Costa Rica
+175,C,2019/01/12 19:18:04.923,2019/01/12 19:18:04.923,56,149,British Indian Ocean Territory
+161,M,2019/01/12 19:18:36.851,2019/01/12 19:18:36.851,77,188,Cambodia
+169,A,2019/01/12 19:18:51.111,2019/01/12 19:18:51.111,77,131,Lesotho
+164,E,2019/01/12 19:19:19.907,2019/01/12 19:19:19.907,164,39,Liechtenstein
+178,A,2019/01/12 19:20:00.000,2019/01/12 19:20:00.000,18,57,Philippines
+166,F,2019/01/12 19:21:01.288,2019/01/12 19:21:01.288,105,239,Liberia
+172,D,2019/01/12 19:22:49.510,2019/01/12 19:22:49.510,240,211,Sierra Leone
+167,M,2019/01/12 19:24:26.528,2019/01/12 19:24:26.528,169,147,New Zealand
+154,M,2019/01/12 19:24:41.700,2019/01/12 19:24:41.700,9,139,Greece
+159,O,2019/01/12 19:26:36.495,2019/01/12 19:26:36.495,190,62,Grenada
+173,B,2019/01/12 19:30:59.740,2019/01/12 19:30:59.740,208,179,Tajikistan
+177,D,2019/01/12 19:33:55.585,2019/01/12 19:33:55.585,138,250,Burundi
+168,B,2019/01/12 19:33:59.209,2019/01/12 19:33:59.209,121,90,Kyrgyzstan
+170,A,2019/01/12 19:39:43.803,2019/01/12 19:39:43.803,253,205,Kosovo
+179,A,2019/01/12 19:40:00.000,2019/01/12 19:40:00.000,255,95,Malaysia
+161,O,2019/01/12 19:45:13.838,2019/01/12 19:45:13.838,167,203,Tonga
+164,G,2019/01/12 19:45:22.458,2019/01/12 19:45:22.458,163,234,Slovenia
+175,A,2019/01/12 19:47:59.294,2019/01/12 19:47:59.294,113,29,Curaçao
+169,D,2019/01/12 19:52:47.764,2019/01/12 19:52:47.764,60,253,Turkey
+154,N,2019/01/12 19:53:11.405,2019/01/12 19:53:11.405,15,42,St. Kitts & Nevis
+166,E,2019/01/12 19:53:19.136,2019/01/12 19:53:19.136,103,206,New Caledonia
+172,F,2019/01/12 19:55:13.112,2019/01/12 19:55:13.112,128,233,Iran
+178,B,2019/01/12 19:55:13.682,2019/01/12 19:55:13.682,44,3,Russia
+167,O,2019/01/12 19:57:43.946,2019/01/12 19:57:43.946,137,22,Brazil
+180,A,2019/01/12 20:00:00.000,2019/01/12 20:00:00.000,77,163,Burkina Faso
+177,F,2019/01/12 20:00:43.833,2019/01/12 20:00:43.833,45,61,Tajikistan
+173,C,2019/01/12 20:01:45.716,2019/01/12 20:01:45.716,0,91,Namibia
+168,C,2019/01/12 20:04:46.289,2019/01/12 20:04:46.289,247,216,Bahamas
+170,B,2019/01/12 20:10:47.739,2019/01/12 20:10:47.739,229,224,Western Sahara
+179,B,2019/01/12 20:11:02.759,2019/01/12 20:11:02.759,135,135,Kuwait
+164,I,2019/01/12 20:12:39.343,2019/01/12 20:12:39.343,164,208,Gabon
+169,F,2019/01/12 20:18:10.829,2019/01/12 20:18:10.829,170,113,French Polynesia
+181,A,2019/01/12 20:20:00.000,2019/01/12 20:20:00.000,178,48,French Polynesia
+178,C,2019/01/12 20:21:19.761,2019/01/12 20:21:19.761,130,136,Mauritius
+175,D,2019/01/12 20:22:22.547,2019/01/12 20:22:22.547,129,39,Eritrea
+172,E,2019/01/12 20:22:39.001,2019/01/12 20:22:39.001,99,108,Guyana
+166,G,2019/01/12 20:24:01.561,2019/01/12 20:24:01.561,141,252,Sweden
+177,E,2019/01/12 20:28:34.771,2019/01/12 20:28:34.771,83,133,Cocos (Keeling) Islands
+168,A,2019/01/12 20:29:45.123,2019/01/12 20:29:45.123,61,144,Canary Islands
+173,A,2019/01/12 20:30:43.093,2019/01/12 20:30:43.093,124,177,Wallis & Futuna
+180,B,2019/01/12 20:31:54.156,2019/01/12 20:31:54.156,127,189,Uruguay
+171,B,2019/01/12 20:35:39.309,2019/01/12 20:35:39.309,151,162,Uzbekistan
+170,C,2019/01/12 20:37:09.072,2019/01/12 20:37:09.072,76,139,Czech Republic
+182,A,2019/01/12 20:40:00.000,2019/01/12 20:40:00.000,159,137,Equatorial Guinea
+179,C,2019/01/12 20:40:47.902,2019/01/12 20:40:47.902,100,143,Andorra
+164,J,2019/01/12 20:42:03.523,2019/01/12 20:42:03.523,156,40,Faroe Islands
+169,E,2019/01/12 20:49:51.558,2019/01/12 20:49:51.558,88,214,Macau SAR China
+172,G,2019/01/12 20:49:52.826,2019/01/12 20:49:52.826,237,94,Ireland
+175,F,2019/01/12 20:52:06.762,2019/01/12 20:52:06.762,48,98,Angola
+181,B,2019/01/12 20:52:58.277,2019/01/12 20:52:58.277,167,114,Uzbekistan
+178,A,2019/01/12 20:53:30.646,2019/01/12 20:53:30.646,135,197,Bolivia
+173,D,2019/01/12 20:54:14.307,2019/01/12 20:54:14.307,81,148,Libya
+166,I,2019/01/12 20:54:14.416,2019/01/12 20:54:14.416,22,75,Guinea
+177,G,2019/01/12 20:58:31.597,2019/01/12 20:58:31.597,175,38,Belarus
+168,D,2019/01/12 20:58:39.340,2019/01/12 20:58:39.340,29,225,Slovakia
+180,C,2019/01/12 20:59:47.539,2019/01/12 20:59:47.539,124,60,Cayman Islands
+183,A,2019/01/12 21:00:00.000,2019/01/12 21:00:00.000,191,236,Greenland
+171,C,2019/01/12 21:05:49.725,2019/01/12 21:05:49.725,200,92,Greenland
+182,D,2019/01/12 21:07:10.490,2019/01/12 21:07:10.490,244,90,Kazakhstan
+179,A,2019/01/12 21:11:47.661,2019/01/12 21:11:47.661,252,139,Netherlands
+173,F,2019/01/12 21:14:35.414,2019/01/12 21:14:35.414,44,197,American Samoa
+164,L,2019/01/12 21:15:08.534,2019/01/12 21:15:08.534,95,149,Togo
+172,I,2019/01/12 21:15:10.233,2019/01/12 21:15:10.233,26,114,Japan
+169,G,2019/01/12 21:19:44.696,2019/01/12 21:19:44.696,229,43,Ghana
+181,C,2019/01/12 21:21:22.112,2019/01/12 21:21:22.112,236,64,Oman
+178,B,2019/01/12 21:22:52.509,2019/01/12 21:22:52.509,136,138,St. Vincent & Grenadines
+175,E,2019/01/12 21:23:24.282,2019/01/12 21:23:24.282,131,212,British Virgin Islands
+166,J,2019/01/12 21:24:00.379,2019/01/12 21:24:00.379,94,76,Sint Maarten
+183,B,2019/01/12 21:24:33.822,2019/01/12 21:24:33.822,193,76,Moldova
+180,A,2019/01/12 21:25:09.406,2019/01/12 21:25:09.406,10,251,Sudan
+177,I,2019/01/12 21:28:59.419,2019/01/12 21:28:59.419,31,83,Cape Verde
+168,F,2019/01/12 21:30:22.485,2019/01/12 21:30:22.485,136,150,Angola
+171,A,2019/01/12 21:33:00.398,2019/01/12 21:33:00.398,250,247,Sudan
+182,F,2019/01/12 21:35:02.138,2019/01/12 21:35:02.138,118,218,Israel
+172,J,2019/01/12 21:39:04.513,2019/01/12 21:39:04.513,240,138,Chad
+185,A,2019/01/12 21:40:00.000,2019/01/12 21:40:00.000,38,159,Namibia
+179,D,2019/01/12 21:45:10.155,2019/01/12 21:45:10.155,73,253,Panama
+164,M,2019/01/12 21:45:53.983,2019/01/12 21:45:53.983,50,131,Peru
+169,H,2019/01/12 21:45:57.039,2019/01/12 21:45:57.039,197,220,Burkina Faso
+173,E,2019/01/12 21:47:15.668,2019/01/12 21:47:15.668,65,26,Paraguay
+181,A,2019/01/12 21:48:21.292,2019/01/12 21:48:21.292,213,27,Sudan
+178,C,2019/01/12 21:53:44.774,2019/01/12 21:53:44.774,251,235,Sweden
+166,K,2019/01/12 21:54:47.036,2019/01/12 21:54:47.036,47,124,Cuba
+175,G,2019/01/12 21:54:59.939,2019/01/12 21:54:59.939,161,76,Guernsey
+183,C,2019/01/12 21:56:48.567,2019/01/12 21:56:48.567,61,37,Gambia
+177,J,2019/01/12 21:58:00.026,2019/01/12 21:58:00.026,17,140,Slovenia
+174,F,2019/01/12 21:58:38.574,2019/01/12 21:58:38.574,53,62,Myanmar (Burma)
+168,E,2019/01/12 21:58:51.838,2019/01/12 21:58:51.838,71,58,Jordan
+186,A,2019/01/12 22:00:00.000,2019/01/12 22:00:00.000,61,240,Costa Rica
+180,D,2019/01/12 22:00:45.208,2019/01/12 22:00:45.208,152,198,Madagascar
+171,D,2019/01/12 22:01:36.778,2019/01/12 22:01:36.778,13,237,Croatia
+172,K,2019/01/12 22:08:59.337,2019/01/12 22:08:59.337,70,212,India
+182,E,2019/01/12 22:09:04.542,2019/01/12 22:09:04.542,88,30,Uruguay
+176,B,2019/01/12 22:12:28.904,2019/01/12 22:12:28.904,230,225,Mozambique
+179,F,2019/01/12 22:12:32.201,2019/01/12 22:12:32.201,32,203,Russia
+185,B,2019/01/12 22:14:19.675,2019/01/12 22:14:19.675,181,11,Benin
+181,D,2019/01/12 22:17:02.719,2019/01/12 22:17:02.719,75,247,Burundi
+164,O,2019/01/12 22:17:23.603,2019/01/12 22:17:23.603,175,228,St. Kitts & Nevis
+173,G,2019/01/12 22:19:47.989,2019/01/12 22:19:47.989,254,61,Mongolia
+187,A,2019/01/12 22:20:00.000,2019/01/12 22:20:00.000,228,68,Benin
+178,A,2019/01/12 22:21:32.821,2019/01/12 22:21:32.821,230,133,Macedonia
+177,L,2019/01/12 22:25:35.823,2019/01/12 22:25:35.823,229,13,Senegal
+183,A,2019/01/12 22:26:19.899,2019/01/12 22:26:19.899,203,246,Pakistan
+166,M,2019/01/12 22:26:21.097,2019/01/12 22:26:21.097,141,252,Iran
+168,G,2019/01/12 22:27:51.246,2019/01/12 22:27:51.246,244,212,Equatorial Guinea
+174,E,2019/01/12 22:27:57.028,2019/01/12 22:27:57.028,229,239,Bulgaria
+186,D,2019/01/12 22:29:28.283,2019/01/12 22:29:28.283,139,154,Sudan
+175,I,2019/01/12 22:30:26.664,2019/01/12 22:30:26.664,238,113,Montenegro
+180,F,2019/01/12 22:31:54.413,2019/01/12 22:31:54.413,92,173,Qatar
+171,F,2019/01/12 22:32:24.122,2019/01/12 22:32:24.122,249,197,U.S. Virgin Islands
+179,E,2019/01/12 22:35:36.558,2019/01/12 22:35:36.558,49,151,St. Lucia
+182,G,2019/01/12 22:37:40.207,2019/01/12 22:37:40.207,13,136,South Africa
+176,C,2019/01/12 22:39:37.142,2019/01/12 22:39:37.142,33,46,Palau
+188,A,2019/01/12 22:40:00.000,2019/01/12 22:40:00.000,240,143,Togo
+181,F,2019/01/12 22:42:15.482,2019/01/12 22:42:15.482,116,99,Isle of Man
+172,M,2019/01/12 22:42:31.331,2019/01/12 22:42:31.331,186,213,Papua New Guinea
+185,C,2019/01/12 22:43:09.737,2019/01/12 22:43:09.737,74,253,Moldova
+187,B,2019/01/12 22:46:01.625,2019/01/12 22:46:01.625,100,237,Moldova
+183,B,2019/01/12 22:50:01.910,2019/01/12 22:50:01.910,26,131,Uruguay
+173,H,2019/01/12 22:50:27.486,2019/01/12 22:50:27.486,202,99,Belgium
+178,D,2019/01/12 22:52:23.779,2019/01/12 22:52:23.779,82,105,Namibia
+177,M,2019/01/12 22:53:55.875,2019/01/12 22:53:55.875,253,104,Guyana
+168,I,2019/01/12 22:54:59.193,2019/01/12 22:54:59.193,238,245,St. Kitts & Nevis
+166,O,2019/01/12 22:56:41.663,2019/01/12 22:56:41.663,75,152,St. Kitts & Nevis
+174,G,2019/01/12 22:57:12.308,2019/01/12 22:57:12.308,252,50,Timor-Leste
+186,F,2019/01/12 22:57:16.196,2019/01/12 22:57:16.196,94,244,St. Pierre & Miquelon
+171,E,2019/01/12 22:59:42.333,2019/01/12 22:59:42.333,208,137,Chile
+175,J,2019/01/12 23:01:21.187,2019/01/12 23:01:21.187,201,149,Saudi Arabia
+180,E,2019/01/12 23:02:38.523,2019/01/12 23:02:38.523,178,9,Namibia
+179,G,2019/01/12 23:06:11.710,2019/01/12 23:06:11.710,110,78,Suriname
+182,H,2019/01/12 23:07:19.305,2019/01/12 23:07:19.305,53,144,Western Sahara
+176,A,2019/01/12 23:10:11.487,2019/01/12 23:10:11.487,151,41,Bolivia
+188,B,2019/01/12 23:12:51.903,2019/01/12 23:12:51.903,112,195,Sint Maarten
+185,A,2019/01/12 23:13:17.717,2019/01/12 23:13:17.717,134,185,Puerto Rico
+187,C,2019/01/12 23:16:25.465,2019/01/12 23:16:25.465,183,70,Finland
+172,O,2019/01/12 23:17:17.349,2019/01/12 23:17:17.349,34,60,Hungary
+183,C,2019/01/12 23:19:47.562,2019/01/12 23:19:47.562,142,136,Belgium
+190,A,2019/01/12 23:20:00.000,2019/01/12 23:20:00.000,169,39,India
+177,N,2019/01/12 23:20:02.801,2019/01/12 23:20:02.801,221,95,Mauritius
+174,I,2019/01/12 23:23:09.060,2019/01/12 23:23:09.060,87,103,Slovenia
+168,J,2019/01/12 23:25:32.153,2019/01/12 23:25:32.153,95,16,Denmark
+178,F,2019/01/12 23:25:37.404,2019/01/12 23:25:37.404,226,221,Nauru
+184,D,2019/01/12 23:26:18.805,2019/01/12 23:26:18.805,34,97,Tajikistan
+171,G,2019/01/12 23:30:32.723,2019/01/12 23:30:32.723,1,62,Turkmenistan
+186,E,2019/01/12 23:33:10.695,2019/01/12 23:33:10.695,187,183,Macedonia
+180,G,2019/01/12 23:33:49.644,2019/01/12 23:33:49.644,179,58,Bangladesh
+179,H,2019/01/12 23:33:54.273,2019/01/12 23:33:54.273,211,207,Liberia
+175,L,2019/01/12 23:35:06.357,2019/01/12 23:35:06.357,106,45,St. Martin
+188,C,2019/01/12 23:37:28.498,2019/01/12 23:37:28.498,2,74,Sint Maarten
+191,A,2019/01/12 23:40:00.000,2019/01/12 23:40:00.000,221,172,Cocos (Keeling) Islands
+187,A,2019/01/12 23:40:14.163,2019/01/12 23:40:14.163,180,186,Bhutan
+176,D,2019/01/12 23:41:46.044,2019/01/12 23:41:46.044,33,162,St. Martin
+185,D,2019/01/12 23:46:19.215,2019/01/12 23:46:19.215,99,230,St. Martin
+190,B,2019/01/12 23:46:31.090,2019/01/12 23:46:31.090,215,3,Jordan
+183,A,2019/01/12 23:47:26.928,2019/01/12 23:47:26.928,6,145,Faroe Islands
+178,E,2019/01/12 23:52:13.776,2019/01/12 23:52:13.776,220,15,Norfolk Island
+184,F,2019/01/12 23:55:33.497,2019/01/12 23:55:33.497,99,129,Maldives
+168,L,2019/01/12 23:57:04.192,2019/01/12 23:57:04.192,78,2,Trinidad & Tobago
+174,J,2019/01/12 23:57:47.276,2019/01/12 23:57:47.276,30,55,Tuvalu
+171,H,2019/01/12 23:59:54.372,2019/01/12 23:59:54.372,233,178,Macau SAR China
+192,A,2019/01/13 00:00:00.000,2019/01/13 00:00:00.000,16,200,Japan
+188,A,2019/01/13 00:04:24.557,2019/01/13 00:04:24.557,100,26,Antigua & Barbuda
+180,H,2019/01/13 00:05:40.571,2019/01/13 00:05:40.571,2,103,Qatar
+186,G,2019/01/13 00:06:06.487,2019/01/13 00:06:06.487,81,232,Palestinian Territories
+175,M,2019/01/13 00:06:15.836,2019/01/13 00:06:15.836,230,30,Norfolk Island
+191,D,2019/01/13 00:06:20.140,2019/01/13 00:06:20.140,246,212,Pitcairn Islands
+187,D,2019/01/13 00:10:45.551,2019/01/13 00:10:45.551,212,31,Germany
+183,D,2019/01/13 00:13:53.069,2019/01/13 00:13:53.069,149,155,Grenada
+176,F,2019/01/13 00:14:00.631,2019/01/13 00:14:00.631,199,197,Austria
+190,C,2019/01/13 00:15:54.723,2019/01/13 00:15:54.723,238,104,San Marino
+185,F,2019/01/13 00:18:18.576,2019/01/13 00:18:18.576,249,95,Nicaragua
+193,A,2019/01/13 00:20:00.000,2019/01/13 00:20:00.000,226,56,Latvia
+178,G,2019/01/13 00:22:09.253,2019/01/13 00:22:09.253,59,100,Seychelles
+184,E,2019/01/13 00:23:34.704,2019/01/13 00:23:34.704,212,235,Kenya
+174,K,2019/01/13 00:25:03.340,2019/01/13 00:25:03.340,25,115,Mongolia
+168,M,2019/01/13 00:27:00.409,2019/01/13 00:27:00.409,17,143,Micronesia
+192,B,2019/01/13 00:32:30.130,2019/01/13 00:32:30.130,193,12,Antarctica
+186,H,2019/01/13 00:36:48.991,2019/01/13 00:36:48.991,100,22,Canary Islands
+188,D,2019/01/13 00:37:17.982,2019/01/13 00:37:17.982,140,241,Croatia
+176,E,2019/01/13 00:38:19.979,2019/01/13 00:38:19.979,59,27,Uruguay
+175,O,2019/01/13 00:38:45.851,2019/01/13 00:38:45.851,234,93,Solomon Islands
+194,A,2019/01/13 00:40:00.000,2019/01/13 00:40:00.000,49,220,Côte d'Ivoire
+187,F,2019/01/13 00:40:44.929,2019/01/13 00:40:44.929,113,55,Antigua & Barbuda
+191,F,2019/01/13 00:42:00.008,2019/01/13 00:42:00.008,229,4,Caribbean Netherlands
+185,E,2019/01/13 00:43:37.366,2019/01/13 00:43:37.366,114,189,Philippines
+190,A,2019/01/13 00:45:58.010,2019/01/13 00:45:58.010,93,64,Indonesia
+193,D,2019/01/13 00:47:24.127,2019/01/13 00:47:24.127,145,49,Wallis & Futuna
+183,F,2019/01/13 00:49:08.821,2019/01/13 00:49:08.821,10,26,Liberia
+174,M,2019/01/13 00:52:15.780,2019/01/13 00:52:15.780,44,56,Gambia
+178,H,2019/01/13 00:52:40.491,2019/01/13 00:52:40.491,135,23,U.S. Outlying Islands
+168,O,2019/01/13 00:54:00.157,2019/01/13 00:54:00.157,157,95,Greece
+184,G,2019/01/13 00:56:56.306,2019/01/13 00:56:56.306,64,103,Netherlands
+195,A,2019/01/13 01:00:00.000,2019/01/13 01:00:00.000,114,72,Caribbean Netherlands
+188,F,2019/01/13 01:03:06.920,2019/01/13 01:03:06.920,60,31,Mali
+192,C,2019/01/13 01:05:16.114,2019/01/13 01:05:16.114,95,210,Northern Mariana Islands
+194,D,2019/01/13 01:09:12.711,2019/01/13 01:09:12.711,50,207,British Virgin Islands
+176,G,2019/01/13 01:10:10.783,2019/01/13 01:10:10.783,154,182,American Samoa
+187,E,2019/01/13 01:10:30.234,2019/01/13 01:10:30.234,209,73,Nicaragua
+191,E,2019/01/13 01:11:08.590,2019/01/13 01:11:08.590,50,232,Finland
+185,G,2019/01/13 01:14:58.162,2019/01/13 01:14:58.162,80,140,Martinique
+193,F,2019/01/13 01:17:35.119,2019/01/13 01:17:35.119,177,188,Pakistan
+183,E,2019/01/13 01:17:36.427,2019/01/13 01:17:36.427,163,182,Mauritius
+190,D,2019/01/13 01:18:39.713,2019/01/13 01:18:39.713,203,120,Guadeloupe
+174,N,2019/01/13 01:19:40.301,2019/01/13 01:19:40.301,52,125,St. Pierre & Miquelon
+196,A,2019/01/13 01:20:00.000,2019/01/13 01:20:00.000,236,89,Kazakhstan
+189,I,2019/01/13 01:21:46.305,2019/01/13 01:21:46.305,97,93,Ascension Island
+184,H,2019/01/13 01:25:58.890,2019/01/13 01:25:58.890,133,244,Norway
+195,D,2019/01/13 01:33:05.674,2019/01/13 01:33:05.674,65,194,Belize
+188,E,2019/01/13 01:34:22.220,2019/01/13 01:34:22.220,115,131,Nigeria
+192,A,2019/01/13 01:36:13.425,2019/01/13 01:36:13.425,147,6,Malaysia
+176,H,2019/01/13 01:36:22.716,2019/01/13 01:36:22.716,93,80,Antarctica
+197,A,2019/01/13 01:40:00.000,2019/01/13 01:40:00.000,120,14,Antigua & Barbuda
+191,G,2019/01/13 01:40:06.959,2019/01/13 01:40:06.959,202,59,Botswana
+194,F,2019/01/13 01:42:07.074,2019/01/13 01:42:07.074,3,10,Bangladesh
+187,G,2019/01/13 01:42:19.840,2019/01/13 01:42:19.840,50,178,Trinidad & Tobago
+189,J,2019/01/13 01:47:01.805,2019/01/13 01:47:01.805,124,83,Sri Lanka
+183,G,2019/01/13 01:47:48.274,2019/01/13 01:47:48.274,71,17,Guernsey
+185,I,2019/01/13 01:48:52.498,2019/01/13 01:48:52.498,252,253,Sint Maarten
+190,F,2019/01/13 01:49:34.559,2019/01/13 01:49:34.559,90,128,Suriname
+193,E,2019/01/13 01:50:40.615,2019/01/13 01:50:40.615,69,161,Niger
+196,D,2019/01/13 01:51:58.702,2019/01/13 01:51:58.702,134,224,Greenland
+195,F,2019/01/13 02:02:43.561,2019/01/13 02:02:43.561,153,5,Kuwait
+188,G,2019/01/13 02:03:04.554,2019/01/13 02:03:04.554,198,238,Mauritius
+197,B,2019/01/13 02:06:50.889,2019/01/13 02:06:50.889,156,251,Palestinian Territories
+192,B,2019/01/13 02:07:10.000,2019/01/13 02:07:10.000,177,203,Armenia
+194,E,2019/01/13 02:10:48.165,2019/01/13 02:10:48.165,210,101,Guernsey
+189,K,2019/01/13 02:12:22.441,2019/01/13 02:12:22.441,250,140,Solomon Islands
+191,I,2019/01/13 02:13:01.473,2019/01/13 02:13:01.473,242,22,South Africa
+185,J,2019/01/13 02:13:38.502,2019/01/13 02:13:38.502,5,160,Bahamas
+187,H,2019/01/13 02:14:47.539,2019/01/13 02:14:47.539,10,147,Oman
+183,I,2019/01/13 02:16:28.342,2019/01/13 02:16:28.342,93,244,Uganda
+190,E,2019/01/13 02:18:59.542,2019/01/13 02:18:59.542,224,229,Algeria
+196,F,2019/01/13 02:25:50.840,2019/01/13 02:25:50.840,9,118,Canary Islands
+193,G,2019/01/13 02:25:51.285,2019/01/13 02:25:51.285,167,54,Tokelau
+195,E,2019/01/13 02:34:21.906,2019/01/13 02:34:21.906,236,202,Antarctica
+188,I,2019/01/13 02:34:34.350,2019/01/13 02:34:34.350,156,249,St. Kitts & Nevis
+197,C,2019/01/13 02:35:40.741,2019/01/13 02:35:40.741,105,135,French Southern Territories
+192,C,2019/01/13 02:39:23.517,2019/01/13 02:39:23.517,31,57,Myanmar (Burma)
+200,A,2019/01/13 02:40:00.000,2019/01/13 02:40:00.000,216,213,Rwanda
+189,M,2019/01/13 02:42:41.915,2019/01/13 02:42:41.915,177,33,Czech Republic
+183,J,2019/01/13 02:44:38.993,2019/01/13 02:44:38.993,242,27,Ecuador
+185,L,2019/01/13 02:44:53.859,2019/01/13 02:44:53.859,50,51,Turkmenistan
+194,G,2019/01/13 02:45:17.257,2019/01/13 02:45:17.257,102,14,Oman
+191,J,2019/01/13 02:47:39.647,2019/01/13 02:47:39.647,236,154,Svalbard & Jan Mayen
+190,G,2019/01/13 02:47:45.554,2019/01/13 02:47:45.554,140,152,Guinea
+193,I,2019/01/13 02:57:24.687,2019/01/13 02:57:24.687,229,97,Colombia
+196,E,2019/01/13 02:58:15.981,2019/01/13 02:58:15.981,180,55,São Tomé and Príncipe
+201,A,2019/01/13 03:00:00.000,2019/01/13 03:00:00.000,225,64,Bangladesh
+195,G,2019/01/13 03:04:36.545,2019/01/13 03:04:36.545,238,54,Vatican City
+197,A,2019/01/13 03:06:45.321,2019/01/13 03:06:45.321,128,39,Ireland
+188,J,2019/01/13 03:07:15.458,2019/01/13 03:07:15.458,61,147,Syria
+192,A,2019/01/13 03:07:47.938,2019/01/13 03:07:47.938,71,171,El Salvador
+200,D,2019/01/13 03:09:51.168,2019/01/13 03:09:51.168,204,255,Guatemala
+189,N,2019/01/13 03:13:59.835,2019/01/13 03:13:59.835,69,236,Christmas Island
+183,L,2019/01/13 03:16:08.111,2019/01/13 03:16:08.111,162,40,Cuba
+190,H,2019/01/13 03:16:19.893,2019/01/13 03:16:19.893,23,154,Syria
+191,K,2019/01/13 03:16:20.616,2019/01/13 03:16:20.616,108,241,Sri Lanka
+194,I,2019/01/13 03:17:18.386,2019/01/13 03:17:18.386,11,26,Solomon Islands
+185,M,2019/01/13 03:19:10.222,2019/01/13 03:19:10.222,42,131,Mayotte
+202,A,2019/01/13 03:20:00.000,2019/01/13 03:20:00.000,231,173,Hong Kong SAR China
+193,J,2019/01/13 03:24:07.194,2019/01/13 03:24:07.194,109,29,Afghanistan
+196,G,2019/01/13 03:26:27.415,2019/01/13 03:26:27.415,74,104,Seychelles
+201,B,2019/01/13 03:28:42.143,2019/01/13 03:28:42.143,81,18,Macau SAR China
+197,D,2019/01/13 03:33:12.584,2019/01/13 03:33:12.584,105,194,Trinidad & Tobago
+195,I,2019/01/13 03:34:24.627,2019/01/13 03:34:24.627,134,162,French Polynesia
+203,A,2019/01/13 03:40:00.000,2019/01/13 03:40:00.000,80,187,Netherlands
+192,D,2019/01/13 03:41:00.711,2019/01/13 03:41:00.711,222,53,British Virgin Islands
+200,F,2019/01/13 03:41:44.444,2019/01/13 03:41:44.444,128,61,Nigeria
+188,L,2019/01/13 03:42:05.441,2019/01/13 03:42:05.441,147,217,Thailand
+191,M,2019/01/13 03:42:45.584,2019/01/13 03:42:45.584,124,1,Syria
+202,B,2019/01/13 03:47:26.224,2019/01/13 03:47:26.224,147,1,South Sudan
+194,J,2019/01/13 03:48:35.612,2019/01/13 03:48:35.612,42,249,Monaco
+185,O,2019/01/13 03:48:39.268,2019/01/13 03:48:39.268,248,247,Andorra
+183,M,2019/01/13 03:50:31.179,2019/01/13 03:50:31.179,101,141,São Tomé and Príncipe
+196,I,2019/01/13 03:53:48.111,2019/01/13 03:53:48.111,167,160,Nepal
+199,E,2019/01/13 03:54:38.220,2019/01/13 03:54:38.220,242,172,Caribbean Netherlands
+193,L,2019/01/13 03:57:49.586,2019/01/13 03:57:49.586,198,210,Iran
+195,J,2019/01/13 03:59:08.836,2019/01/13 03:59:08.836,131,171,St. Helena
+204,A,2019/01/13 04:00:00.000,2019/01/13 04:00:00.000,106,206,Ethiopia
+201,C,2019/01/13 04:02:14.939,2019/01/13 04:02:14.939,118,62,Guatemala
+197,F,2019/01/13 04:07:10.741,2019/01/13 04:07:10.741,246,131,Jersey
+200,E,2019/01/13 04:09:26.787,2019/01/13 04:09:26.787,202,49,Cambodia
+192,F,2019/01/13 04:09:29.737,2019/01/13 04:09:29.737,14,136,Algeria
+203,D,2019/01/13 04:10:48.241,2019/01/13 04:10:48.241,160,237,Czech Republic
+188,M,2019/01/13 04:12:43.202,2019/01/13 04:12:43.202,251,87,Myanmar (Burma)
+191,O,2019/01/13 04:14:17.803,2019/01/13 04:14:17.803,169,191,Saudi Arabia
+183,O,2019/01/13 04:16:32.277,2019/01/13 04:16:32.277,177,88,Angola
+202,C,2019/01/13 04:18:15.155,2019/01/13 04:18:15.155,64,173,New Zealand
+205,A,2019/01/13 04:20:00.000,2019/01/13 04:20:00.000,15,211,Hungary
+194,L,2019/01/13 04:21:58.759,2019/01/13 04:21:58.759,12,191,Georgia
+199,G,2019/01/13 04:24:20.462,2019/01/13 04:24:20.462,59,199,Hungary
+196,J,2019/01/13 04:25:51.856,2019/01/13 04:25:51.856,36,84,Dominica
+193,M,2019/01/13 04:28:22.750,2019/01/13 04:28:22.750,201,0,Northern Mariana Islands
+204,D,2019/01/13 04:29:40.959,2019/01/13 04:29:40.959,90,67,Niue
+201,A,2019/01/13 04:33:42.748,2019/01/13 04:33:42.748,2,57,Sweden
+195,L,2019/01/13 04:36:35.424,2019/01/13 04:36:35.424,103,240,Venezuela
+200,G,2019/01/13 04:37:09.862,2019/01/13 04:37:09.862,13,105,Denmark
+197,E,2019/01/13 04:39:19.048,2019/01/13 04:39:19.048,157,35,Niue
+192,E,2019/01/13 04:39:44.166,2019/01/13 04:39:44.166,34,31,British Indian Ocean Territory
+206,A,2019/01/13 04:40:00.000,2019/01/13 04:40:00.000,18,73,Hong Kong SAR China
+203,F,2019/01/13 04:40:26.889,2019/01/13 04:40:26.889,180,195,Canary Islands
+188,O,2019/01/13 04:40:49.746,2019/01/13 04:40:49.746,133,83,Barbados
+202,A,2019/01/13 04:50:11.668,2019/01/13 04:50:11.668,80,56,Micronesia
+194,M,2019/01/13 04:50:50.839,2019/01/13 04:50:50.839,25,223,Panama
+205,B,2019/01/13 04:52:28.061,2019/01/13 04:52:28.061,173,188,Moldova
+193,O,2019/01/13 04:56:56.590,2019/01/13 04:56:56.590,208,237,Ethiopia
+198,E,2019/01/13 04:58:19.881,2019/01/13 04:58:19.881,146,29,Sint Maarten
+199,H,2019/01/13 04:58:23.143,2019/01/13 04:58:23.143,229,7,Guyana
+207,A,2019/01/13 05:00:00.000,2019/01/13 05:00:00.000,79,210,Northern Mariana Islands
+196,K,2019/01/13 05:00:07.181,2019/01/13 05:00:07.181,247,156,Bulgaria
+201,B,2019/01/13 05:01:30.939,2019/01/13 05:01:30.939,133,245,Singapore
+204,F,2019/01/13 05:02:18.968,2019/01/13 05:02:18.968,106,90,Papua New Guinea
+206,B,2019/01/13 05:07:25.912,2019/01/13 05:07:25.912,31,201,Albania
+197,G,2019/01/13 05:08:48.766,2019/01/13 05:08:48.766,108,167,Chad
+195,M,2019/01/13 05:08:57.813,2019/01/13 05:08:57.813,237,254,Sri Lanka
+200,H,2019/01/13 05:10:29.068,2019/01/13 05:10:29.068,13,167,Tuvalu
+203,E,2019/01/13 05:10:44.538,2019/01/13 05:10:44.538,138,44,Mongolia
+192,G,2019/01/13 05:12:25.903,2019/01/13 05:12:25.903,61,231,Madagascar
+194,O,2019/01/13 05:19:35.987,2019/01/13 05:19:35.987,50,102,São Tomé and Príncipe
+208,A,2019/01/13 05:20:00.000,2019/01/13 05:20:00.000,93,254,Greece
+202,D,2019/01/13 05:20:32.830,2019/01/13 05:20:32.830,67,216,China
+205,C,2019/01/13 05:24:18.585,2019/01/13 05:24:18.585,205,66,Grenada
+198,G,2019/01/13 05:28:05.878,2019/01/13 05:28:05.878,253,172,Guinea
+204,E,2019/01/13 05:28:17.481,2019/01/13 05:28:17.481,120,97,Western Sahara
+207,D,2019/01/13 05:30:08.388,2019/01/13 05:30:08.388,136,139,Congo - Kinshasa
+196,M,2019/01/13 05:30:55.731,2019/01/13 05:30:55.731,236,234,Pitcairn Islands
+201,C,2019/01/13 05:32:50.450,2019/01/13 05:32:50.450,57,239,Poland
+195,O,2019/01/13 05:34:40.859,2019/01/13 05:34:40.859,198,20,Greenland
+206,C,2019/01/13 05:34:51.388,2019/01/13 05:34:51.388,210,125,Venezuela
+209,A,2019/01/13 05:40:00.000,2019/01/13 05:40:00.000,137,60,Bolivia
+197,H,2019/01/13 05:41:17.713,2019/01/13 05:41:17.713,87,208,Chad
+203,G,2019/01/13 05:46:30.937,2019/01/13 05:46:30.937,131,82,Namibia
+192,H,2019/01/13 05:46:42.758,2019/01/13 05:46:42.758,91,74,Malta
+202,F,2019/01/13 05:51:09.914,2019/01/13 05:51:09.914,111,105,Mali
+208,B,2019/01/13 05:51:27.081,2019/01/13 05:51:27.081,246,192,Portugal
+207,F,2019/01/13 05:54:11.226,2019/01/13 05:54:11.226,9,152,Cape Verde
+205,A,2019/01/13 05:57:03.898,2019/01/13 05:57:03.898,148,135,Morocco
+198,I,2019/01/13 05:59:20.858,2019/01/13 05:59:20.858,207,111,Azerbaijan
+204,G,2019/01/13 05:59:24.741,2019/01/13 05:59:24.741,230,236,Martinique
+210,A,2019/01/13 06:00:00.000,2019/01/13 06:00:00.000,85,175,Libya
+201,A,2019/01/13 06:00:54.458,2019/01/13 06:00:54.458,162,44,Sudan
+196,O,2019/01/13 06:03:42.506,2019/01/13 06:03:42.506,91,77,Pitcairn Islands
+206,A,2019/01/13 06:05:56.905,2019/01/13 06:05:56.905,118,189,Russia
+209,B,2019/01/13 06:15:12.341,2019/01/13 06:15:12.341,212,183,Japan
+203,H,2019/01/13 06:18:47.945,2019/01/13 06:18:47.945,41,100,Sint Maarten
+208,C,2019/01/13 06:19:38.363,2019/01/13 06:19:38.363,52,63,Mongolia
+211,A,2019/01/13 06:20:00.000,2019/01/13 06:20:00.000,2,112,Seychelles
+207,E,2019/01/13 06:21:49.296,2019/01/13 06:21:49.296,136,207,Tokelau
+202,E,2019/01/13 06:22:02.646,2019/01/13 06:22:02.646,34,29,Estonia
+198,J,2019/01/13 06:22:08.194,2019/01/13 06:22:08.194,104,149,Kosovo
+201,D,2019/01/13 06:27:20.279,2019/01/13 06:27:20.279,154,221,Barbados
+210,B,2019/01/13 06:30:07.465,2019/01/13 06:30:07.465,15,154,Tuvalu
+206,B,2019/01/13 06:30:45.581,2019/01/13 06:30:45.581,16,42,China
+204,H,2019/01/13 06:32:50.121,2019/01/13 06:32:50.121,167,182,São Tomé and Príncipe
+205,D,2019/01/13 06:34:07.307,2019/01/13 06:34:07.307,202,121,Madagascar
+212,A,2019/01/13 06:40:00.000,2019/01/13 06:40:00.000,249,160,Angola
+209,C,2019/01/13 06:44:55.258,2019/01/13 06:44:55.258,79,142,Ghana
+208,A,2019/01/13 06:50:04.412,2019/01/13 06:50:04.412,72,7,Angola
+202,G,2019/01/13 06:52:56.586,2019/01/13 06:52:56.586,19,156,Suriname
+207,G,2019/01/13 06:53:19.195,2019/01/13 06:53:19.195,209,253,Portugal
+198,K,2019/01/13 06:53:21.852,2019/01/13 06:53:21.852,67,196,Svalbard & Jan Mayen
+211,B,2019/01/13 06:54:14.901,2019/01/13 06:54:14.901,18,129,Svalbard & Jan Mayen
+201,F,2019/01/13 06:56:26.287,2019/01/13 06:56:26.287,166,100,Vatican City
+210,C,2019/01/13 06:57:27.566,2019/01/13 06:57:27.566,55,42,Venezuela
+213,A,2019/01/13 07:00:00.000,2019/01/13 07:00:00.000,219,77,U.S. Outlying Islands
+206,C,2019/01/13 07:00:00.893,2019/01/13 07:00:00.893,196,204,Pitcairn Islands
+205,F,2019/01/13 07:04:48.761,2019/01/13 07:04:48.761,160,25,New Caledonia
+212,B,2019/01/13 07:07:55.112,2019/01/13 07:07:55.112,159,206,Qatar
+198,M,2019/01/13 07:18:32.982,2019/01/13 07:18:32.982,145,243,Ceuta & Melilla
+214,A,2019/01/13 07:20:00.000,2019/01/13 07:20:00.000,213,200,Honduras
+209,A,2019/01/13 07:20:16.992,2019/01/13 07:20:16.992,150,250,Costa Rica
+202,H,2019/01/13 07:21:24.993,2019/01/13 07:21:24.993,250,223,Micronesia
+207,I,2019/01/13 07:23:05.230,2019/01/13 07:23:05.230,76,238,Argentina
+201,E,2019/01/13 07:25:22.487,2019/01/13 07:25:22.487,40,199,Åland Islands
+211,C,2019/01/13 07:25:45.122,2019/01/13 07:25:45.122,1,38,Tanzania
+213,D,2019/01/13 07:27:46.255,2019/01/13 07:27:46.255,253,219,Dominica
+210,A,2019/01/13 07:29:11.765,2019/01/13 07:29:11.765,37,97,Canada
+205,E,2019/01/13 07:32:27.337,2019/01/13 07:32:27.337,14,134,Iceland
+206,A,2019/01/13 07:32:53.039,2019/01/13 07:32:53.039,230,199,Macau SAR China
+212,C,2019/01/13 07:34:41.470,2019/01/13 07:34:41.470,161,128,French Polynesia
+215,A,2019/01/13 07:40:00.000,2019/01/13 07:40:00.000,85,16,Turkey
+198,N,2019/01/13 07:46:08.281,2019/01/13 07:46:08.281,198,170,Costa Rica
+214,D,2019/01/13 07:48:24.752,2019/01/13 07:48:24.752,107,173,Cyprus
+211,A,2019/01/13 07:53:25.709,2019/01/13 07:53:25.709,196,168,Serbia
+207,J,2019/01/13 07:54:01.700,2019/01/13 07:54:01.700,205,27,Jamaica
+205,G,2019/01/13 07:55:19.329,2019/01/13 07:55:19.329,164,4,St. Lucia
+209,D,2019/01/13 07:55:24.542,2019/01/13 07:55:24.542,92,155,Fiji
+201,G,2019/01/13 07:56:50.970,2019/01/13 07:56:50.970,221,79,Réunion
+213,F,2019/01/13 07:59:40.103,2019/01/13 07:59:40.103,180,146,Ceuta & Melilla
+216,A,2019/01/13 08:00:00.000,2019/01/13 08:00:00.000,65,110,Trinidad & Tobago
+210,B,2019/01/13 08:00:47.471,2019/01/13 08:00:47.471,181,246,Senegal
+206,B,2019/01/13 08:02:17.688,2019/01/13 08:02:17.688,95,68,Bulgaria
+212,A,2019/01/13 08:03:44.004,2019/01/13 08:03:44.004,218,152,Fiji
+215,D,2019/01/13 08:08:12.455,2019/01/13 08:08:12.455,159,45,Kiribati
+217,A,2019/01/13 08:20:00.000,2019/01/13 08:20:00.000,236,127,Egypt
+207,L,2019/01/13 08:21:30.365,2019/01/13 08:21:30.365,185,230,Lebanon
+205,I,2019/01/13 08:22:23.756,2019/01/13 08:22:23.756,233,9,United Kingdom
+211,D,2019/01/13 08:22:38.207,2019/01/13 08:22:38.207,61,92,Algeria
+214,F,2019/01/13 08:22:44.019,2019/01/13 08:22:44.019,36,216,Kiribati
+209,F,2019/01/13 08:25:37.224,2019/01/13 08:25:37.224,19,66,Western Sahara
+213,E,2019/01/13 08:26:53.686,2019/01/13 08:26:53.686,54,186,Uzbekistan
+210,C,2019/01/13 08:28:44.775,2019/01/13 08:28:44.775,99,192,Lithuania
+216,D,2019/01/13 08:28:56.518,2019/01/13 08:28:56.518,201,251,Saudi Arabia
+201,I,2019/01/13 08:29:52.221,2019/01/13 08:29:52.221,128,40,Peru
+206,C,2019/01/13 08:33:20.946,2019/01/13 08:33:20.946,252,176,Belize
+212,B,2019/01/13 08:34:30.862,2019/01/13 08:34:30.862,122,111,French Guiana
+218,A,2019/01/13 08:40:00.000,2019/01/13 08:40:00.000,142,139,Armenia
+215,F,2019/01/13 08:41:46.626,2019/01/13 08:41:46.626,250,124,Equatorial Guinea
+207,M,2019/01/13 08:49:10.971,2019/01/13 08:49:10.971,143,97,Montserrat
+205,J,2019/01/13 08:50:51.805,2019/01/13 08:50:51.805,178,250,Monaco
+217,B,2019/01/13 08:51:28.745,2019/01/13 08:51:28.745,101,6,Mongolia
+213,G,2019/01/13 08:53:26.630,2019/01/13 08:53:26.630,136,5,Guyana
+214,E,2019/01/13 08:55:39.606,2019/01/13 08:55:39.606,170,180,Egypt
+209,E,2019/01/13 08:57:27.775,2019/01/13 08:57:27.775,190,173,Montenegro
+216,F,2019/01/13 08:59:08.108,2019/01/13 08:59:08.108,47,227,Réunion
+212,C,2019/01/13 08:59:50.781,2019/01/13 08:59:50.781,7,224,United States
+219,A,2019/01/13 09:00:00.000,2019/01/13 09:00:00.000,228,222,Malawi
+201,J,2019/01/13 09:00:20.708,2019/01/13 09:00:20.708,231,28,Vietnam
+211,F,2019/01/13 09:01:07.127,2019/01/13 09:01:07.127,151,6,Mauritania
+210,A,2019/01/13 09:02:19.554,2019/01/13 09:02:19.554,190,248,Estonia
+206,A,2019/01/13 09:06:55.543,2019/01/13 09:06:55.543,111,159,Hong Kong SAR China
+215,E,2019/01/13 09:07:30.702,2019/01/13 09:07:30.702,105,10,Kosovo
+218,D,2019/01/13 09:10:56.426,2019/01/13 09:10:56.426,50,172,Uzbekistan
+207,O,2019/01/13 09:17:13.790,2019/01/13 09:17:13.790,226,187,Laos
+220,A,2019/01/13 09:20:00.000,2019/01/13 09:20:00.000,96,207,St. Kitts & Nevis
+205,L,2019/01/13 09:20:06.707,2019/01/13 09:20:06.707,171,124,Svalbard & Jan Mayen
+213,I,2019/01/13 09:22:40.942,2019/01/13 09:22:40.942,183,252,Kiribati
+214,G,2019/01/13 09:23:08.617,2019/01/13 09:23:08.617,87,151,Andorra
+217,C,2019/01/13 09:23:51.550,2019/01/13 09:23:51.550,141,75,Afghanistan
+209,G,2019/01/13 09:26:39.709,2019/01/13 09:26:39.709,246,116,Nepal
+219,D,2019/01/13 09:29:20.531,2019/01/13 09:29:20.531,63,197,South Korea
+212,A,2019/01/13 09:29:35.566,2019/01/13 09:29:35.566,30,68,Poland
+216,E,2019/01/13 09:29:51.500,2019/01/13 09:29:51.500,198,244,Pitcairn Islands
+201,K,2019/01/13 09:31:31.342,2019/01/13 09:31:31.342,208,35,Thailand
+211,E,2019/01/13 09:32:38.977,2019/01/13 09:32:38.977,157,129,Oman
+210,B,2019/01/13 09:32:42.750,2019/01/13 09:32:42.750,142,64,Canary Islands
+206,D,2019/01/13 09:35:23.785,2019/01/13 09:35:23.785,86,252,Turkey
+221,A,2019/01/13 09:40:00.000,2019/01/13 09:40:00.000,104,171,Bahrain
+215,G,2019/01/13 09:40:19.418,2019/01/13 09:40:19.418,173,39,Bosnia & Herzegovina
+218,F,2019/01/13 09:40:37.535,2019/01/13 09:40:37.535,63,198,India
+205,M,2019/01/13 09:47:37.146,2019/01/13 09:47:37.146,157,117,Ireland
+217,A,2019/01/13 09:49:24.985,2019/01/13 09:49:24.985,127,19,Hungary
+214,H,2019/01/13 09:52:10.804,2019/01/13 09:52:10.804,119,61,Guadeloupe
+220,B,2019/01/13 09:53:22.555,2019/01/13 09:53:22.555,179,54,Puerto Rico
+216,G,2019/01/13 09:54:06.139,2019/01/13 09:54:06.139,203,121,Micronesia
+213,J,2019/01/13 09:54:33.365,2019/01/13 09:54:33.365,244,73,Djibouti
+219,F,2019/01/13 09:56:23.238,2019/01/13 09:56:23.238,122,55,Bhutan
+210,C,2019/01/13 09:58:47.997,2019/01/13 09:58:47.997,44,230,Equatorial Guinea
+209,I,2019/01/13 09:59:22.423,2019/01/13 09:59:22.423,17,120,Egypt
+212,D,2019/01/13 09:59:49.860,2019/01/13 09:59:49.860,29,237,Iceland
+201,M,2019/01/13 09:59:50.853,2019/01/13 09:59:50.853,8,18,United Kingdom
+222,A,2019/01/13 10:00:00.000,2019/01/13 10:00:00.000,52,75,Central African Republic
+211,G,2019/01/13 10:02:27.380,2019/01/13 10:02:27.380,254,80,Afghanistan
+206,F,2019/01/13 10:08:00.221,2019/01/13 10:08:00.221,134,50,Kuwait
+215,H,2019/01/13 10:09:29.220,2019/01/13 10:09:29.220,144,250,Denmark
+221,D,2019/01/13 10:09:45.665,2019/01/13 10:09:45.665,75,58,Montenegro
+218,E,2019/01/13 10:11:03.114,2019/01/13 10:11:03.114,225,134,Bhutan
+223,A,2019/01/13 10:20:00.000,2019/01/13 10:20:00.000,136,32,Uganda
+205,O,2019/01/13 10:20:17.811,2019/01/13 10:20:17.811,68,254,Nauru
+220,C,2019/01/13 10:22:24.105,2019/01/13 10:22:24.105,133,74,Ghana
+216,H,2019/01/13 10:22:43.613,2019/01/13 10:22:43.613,4,140,Niger
+213,K,2019/01/13 10:24:32.475,2019/01/13 10:24:32.475,61,119,Belgium
+217,B,2019/01/13 10:26:16.631,2019/01/13 10:26:16.631,247,1,Egypt
+222,D,2019/01/13 10:28:55.442,2019/01/13 10:28:55.442,135,109,Thailand
+212,F,2019/01/13 10:30:04.127,2019/01/13 10:30:04.127,91,29,Guatemala
+211,I,2019/01/13 10:30:24.101,2019/01/13 10:30:24.101,151,96,Colombia
+209,J,2019/01/13 10:30:35.933,2019/01/13 10:30:35.933,159,98,Papua New Guinea
+210,A,2019/01/13 10:32:30.447,2019/01/13 10:32:30.447,72,10,Canada
+201,O,2019/01/13 10:35:08.994,2019/01/13 10:35:08.994,107,110,Bosnia & Herzegovina
+206,E,2019/01/13 10:37:57.348,2019/01/13 10:37:57.348,178,24,Senegal
+221,F,2019/01/13 10:39:58.343,2019/01/13 10:39:58.343,146,62,Norway
+224,A,2019/01/13 10:40:00.000,2019/01/13 10:40:00.000,56,172,Slovakia
+218,G,2019/01/13 10:45:48.852,2019/01/13 10:45:48.852,228,161,Saudi Arabia
+223,D,2019/01/13 10:51:06.381,2019/01/13 10:51:06.381,57,39,Comoros
+220,A,2019/01/13 10:53:26.741,2019/01/13 10:53:26.741,225,47,Mongolia
+222,F,2019/01/13 10:55:14.796,2019/01/13 10:55:14.796,23,127,Lithuania
+213,M,2019/01/13 10:56:03.834,2019/01/13 10:56:03.834,85,217,Tanzania
+211,J,2019/01/13 10:56:27.209,2019/01/13 10:56:27.209,84,117,South Africa
+217,C,2019/01/13 10:57:14.939,2019/01/13 10:57:14.939,103,52,Diego Garcia
+225,A,2019/01/13 11:00:00.000,2019/01/13 11:00:00.000,91,240,Cyprus
+212,E,2019/01/13 11:00:22.253,2019/01/13 11:00:22.253,58,170,Chile
+210,D,2019/01/13 11:02:00.168,2019/01/13 11:02:00.168,88,104,United States
+209,K,2019/01/13 11:02:58.848,2019/01/13 11:02:58.848,247,7,Aruba
+206,G,2019/01/13 11:08:57.183,2019/01/13 11:08:57.183,116,43,Ireland
+224,D,2019/01/13 11:11:47.081,2019/01/13 11:11:47.081,237,167,Sint Maarten
+221,E,2019/01/13 11:13:59.065,2019/01/13 11:13:59.065,148,135,Russia
+218,H,2019/01/13 11:16:23.557,2019/01/13 11:16:23.557,118,170,United States
+226,A,2019/01/13 11:20:00.000,2019/01/13 11:20:00.000,214,45,Ceuta & Melilla
+217,A,2019/01/13 11:21:26.569,2019/01/13 11:21:26.569,226,30,United Arab Emirates
+213,O,2019/01/13 11:23:33.712,2019/01/13 11:23:33.712,167,110,Christmas Island
+223,F,2019/01/13 11:25:42.834,2019/01/13 11:25:42.834,65,149,Cocos (Keeling) Islands
+222,E,2019/01/13 11:26:32.764,2019/01/13 11:26:32.764,27,177,French Polynesia
+211,L,2019/01/13 11:27:00.584,2019/01/13 11:27:00.584,221,211,Luxembourg
+220,B,2019/01/13 11:27:45.568,2019/01/13 11:27:45.568,167,97,Philippines
+225,D,2019/01/13 11:29:50.148,2019/01/13 11:29:50.148,236,2,Zimbabwe
+212,G,2019/01/13 11:31:08.484,2019/01/13 11:31:08.484,138,31,Ghana
+209,M,2019/01/13 11:31:39.052,2019/01/13 11:31:39.052,176,130,Cameroon
+210,F,2019/01/13 11:35:49.167,2019/01/13 11:35:49.167,2,104,U.S. Outlying Islands
+206,H,2019/01/13 11:39:49.126,2019/01/13 11:39:49.126,80,198,Kosovo
+227,A,2019/01/13 11:40:00.000,2019/01/13 11:40:00.000,130,136,Vietnam
+224,F,2019/01/13 11:40:19.367,2019/01/13 11:40:19.367,30,245,Montserrat
+221,G,2019/01/13 11:46:17.389,2019/01/13 11:46:17.389,125,151,Jordan
+226,B,2019/01/13 11:47:13.973,2019/01/13 11:47:13.973,190,241,Comoros
+222,G,2019/01/13 11:54:42.233,2019/01/13 11:54:42.233,111,202,Mexico
+225,F,2019/01/13 11:56:17.488,2019/01/13 11:56:17.488,3,122,Mauritius
+211,M,2019/01/13 11:56:39.175,2019/01/13 11:56:39.175,117,67,Congo - Kinshasa
+217,B,2019/01/13 11:58:03.780,2019/01/13 11:58:03.780,141,181,Isle of Man
+228,A,2019/01/13 12:00:00.000,2019/01/13 12:00:00.000,82,253,Nigeria
+212,H,2019/01/13 12:00:03.932,2019/01/13 12:00:03.932,219,13,Kuwait
+220,C,2019/01/13 12:00:20.938,2019/01/13 12:00:20.938,11,201,Guernsey
+210,E,2019/01/13 12:01:58.266,2019/01/13 12:01:58.266,235,208,Myanmar (Burma)
+209,O,2019/01/13 12:09:47.261,2019/01/13 12:09:47.261,71,19,Taiwan
+224,E,2019/01/13 12:10:03.952,2019/01/13 12:10:03.952,200,150,Montserrat
+226,C,2019/01/13 12:10:35.714,2019/01/13 12:10:35.714,133,226,Niue
+227,B,2019/01/13 12:12:30.915,2019/01/13 12:12:30.915,205,43,French Guiana
+221,I,2019/01/13 12:16:32.413,2019/01/13 12:16:32.413,250,67,Mali
+229,A,2019/01/13 12:20:00.000,2019/01/13 12:20:00.000,171,106,Palau
+222,I,2019/01/13 12:25:02.343,2019/01/13 12:25:02.343,120,254,Mongolia
+211,N,2019/01/13 12:29:10.407,2019/01/13 12:29:10.407,127,14,Antarctica
+220,A,2019/01/13 12:29:32.962,2019/01/13 12:29:32.962,33,117,Barbados
+217,C,2019/01/13 12:30:03.379,2019/01/13 12:30:03.379,208,89,Taiwan
+225,E,2019/01/13 12:30:09.793,2019/01/13 12:30:09.793,33,55,Eritrea
+210,G,2019/01/13 12:31:14.518,2019/01/13 12:31:14.518,237,68,Czech Republic
+228,D,2019/01/13 12:32:18.700,2019/01/13 12:32:18.700,7,109,Anguilla
+224,G,2019/01/13 12:39:03.405,2019/01/13 12:39:03.405,37,223,Chad
+230,A,2019/01/13 12:40:00.000,2019/01/13 12:40:00.000,99,248,Malaysia
+227,C,2019/01/13 12:42:32.562,2019/01/13 12:42:32.562,24,116,Curaçao
+226,A,2019/01/13 12:45:11.974,2019/01/13 12:45:11.974,157,168,Suriname
+221,J,2019/01/13 12:45:58.255,2019/01/13 12:45:58.255,210,55,Monaco
+229,B,2019/01/13 12:48:49.590,2019/01/13 12:48:49.590,158,55,Qatar
+222,J,2019/01/13 12:56:09.872,2019/01/13 12:56:09.872,21,125,Japan
+217,A,2019/01/13 12:57:23.575,2019/01/13 12:57:23.575,15,170,Serbia
+228,F,2019/01/13 12:58:37.797,2019/01/13 12:58:37.797,185,27,South Korea
+220,D,2019/01/13 12:59:21.165,2019/01/13 12:59:21.165,58,248,Brazil
+231,A,2019/01/13 13:00:00.000,2019/01/13 13:00:00.000,33,180,Lebanon
+210,H,2019/01/13 13:00:13.999,2019/01/13 13:00:13.999,97,38,Bermuda
+225,G,2019/01/13 13:02:52.131,2019/01/13 13:02:52.131,192,87,Libya
+230,D,2019/01/13 13:07:43.279,2019/01/13 13:07:43.279,78,88,Central African Republic
+224,H,2019/01/13 13:09:51.050,2019/01/13 13:09:51.050,148,142,Bermuda
+226,D,2019/01/13 13:12:07.555,2019/01/13 13:12:07.555,15,221,Cameroon
+227,A,2019/01/13 13:13:36.663,2019/01/13 13:13:36.663,160,147,Jersey
+221,K,2019/01/13 13:19:08.413,2019/01/13 13:19:08.413,107,121,United Arab Emirates
+232,A,2019/01/13 13:20:00.000,2019/01/13 13:20:00.000,16,55,Iraq
+229,C,2019/01/13 13:20:03.124,2019/01/13 13:20:03.124,139,116,Honduras
+222,L,2019/01/13 13:25:39.055,2019/01/13 13:25:39.055,88,40,Cambodia
+220,F,2019/01/13 13:27:16.051,2019/01/13 13:27:16.051,139,3,Syria
+228,E,2019/01/13 13:27:32.935,2019/01/13 13:27:32.935,124,70,Åland Islands
+217,D,2019/01/13 13:27:33.589,2019/01/13 13:27:33.589,194,3,Armenia
+225,I,2019/01/13 13:32:17.203,2019/01/13 13:32:17.203,145,96,Algeria
+231,B,2019/01/13 13:33:11.285,2019/01/13 13:33:11.285,213,151,Gabon
+230,F,2019/01/13 13:37:25.449,2019/01/13 13:37:25.449,243,135,Ethiopia
+233,A,2019/01/13 13:40:00.000,2019/01/13 13:40:00.000,8,196,French Southern Territories
+226,F,2019/01/13 13:44:14.505,2019/01/13 13:44:14.505,61,238,Kazakhstan
+221,M,2019/01/13 13:45:41.077,2019/01/13 13:45:41.077,250,31,Laos
+227,D,2019/01/13 13:47:37.711,2019/01/13 13:47:37.711,72,160,Swaziland
+232,D,2019/01/13 13:50:11.085,2019/01/13 13:50:11.085,112,193,Syria
+229,A,2019/01/13 13:52:17.797,2019/01/13 13:52:17.797,75,97,São Tomé and Príncipe
+217,F,2019/01/13 13:52:43.582,2019/01/13 13:52:43.582,79,199,Laos
+228,G,2019/01/13 13:56:44.715,2019/01/13 13:56:44.715,31,174,Vatican City
+231,C,2019/01/13 13:59:07.199,2019/01/13 13:59:07.199,172,172,Angola
+220,E,2019/01/13 13:59:20.746,2019/01/13 13:59:20.746,6,240,United States
+222,M,2019/01/13 13:59:22.122,2019/01/13 13:59:22.122,215,191,São Tomé and Príncipe
+234,A,2019/01/13 14:00:00.000,2019/01/13 14:00:00.000,80,202,Malawi
+225,J,2019/01/13 14:03:37.438,2019/01/13 14:03:37.438,175,65,Gambia
+230,E,2019/01/13 14:09:48.432,2019/01/13 14:09:48.432,114,175,Latvia
+233,B,2019/01/13 14:10:37.987,2019/01/13 14:10:37.987,195,77,Latvia
+226,E,2019/01/13 14:12:55.142,2019/01/13 14:12:55.142,177,162,Sweden
+221,N,2019/01/13 14:16:24.817,2019/01/13 14:16:24.817,233,62,Brunei
+227,F,2019/01/13 14:19:54.131,2019/01/13 14:19:54.131,74,175,Timor-Leste
+235,A,2019/01/13 14:20:00.000,2019/01/13 14:20:00.000,157,134,Hong Kong SAR China
+217,E,2019/01/13 14:21:39.783,2019/01/13 14:21:39.783,137,197,Singapore
+232,F,2019/01/13 14:25:40.816,2019/01/13 14:25:40.816,176,227,Burkina Faso
+229,B,2019/01/13 14:25:50.956,2019/01/13 14:25:50.956,189,7,Cameroon
+234,B,2019/01/13 14:26:27.524,2019/01/13 14:26:27.524,61,158,Maldives
+231,A,2019/01/13 14:30:15.750,2019/01/13 14:30:15.750,194,105,El Salvador
+222,N,2019/01/13 14:30:38.801,2019/01/13 14:30:38.801,155,75,Turkey
+220,G,2019/01/13 14:31:06.781,2019/01/13 14:31:06.781,100,49,South Georgia & South Sandwich Islands
+225,L,2019/01/13 14:36:58.922,2019/01/13 14:36:58.922,167,79,South Sudan
+236,A,2019/01/13 14:40:00.000,2019/01/13 14:40:00.000,225,185,Australia
+233,C,2019/01/13 14:41:26.335,2019/01/13 14:41:26.335,135,80,Kiribati
+235,B,2019/01/13 14:42:14.698,2019/01/13 14:42:14.698,224,177,Afghanistan
+230,G,2019/01/13 14:42:15.015,2019/01/13 14:42:15.015,206,139,Guyana
+226,G,2019/01/13 14:43:05.038,2019/01/13 14:43:05.038,92,250,Guernsey
+217,G,2019/01/13 14:44:11.564,2019/01/13 14:44:11.564,162,57,Tokelau
+227,E,2019/01/13 14:46:24.629,2019/01/13 14:46:24.629,2,185,San Marino
+229,C,2019/01/13 14:53:21.502,2019/01/13 14:53:21.502,18,243,Papua New Guinea
+232,E,2019/01/13 14:53:54.150,2019/01/13 14:53:54.150,189,21,Somalia
+234,C,2019/01/13 14:54:10.023,2019/01/13 14:54:10.023,118,95,Sierra Leone
+231,D,2019/01/13 14:56:19.403,2019/01/13 14:56:19.403,40,22,Portugal
+220,H,2019/01/13 15:03:30.820,2019/01/13 15:03:30.820,168,29,Haiti
+225,M,2019/01/13 15:07:10.131,2019/01/13 15:07:10.131,224,226,Guadeloupe
+233,A,2019/01/13 15:07:34.184,2019/01/13 15:07:34.184,168,28,Montserrat
+230,H,2019/01/13 15:09:22.896,2019/01/13 15:09:22.896,132,148,Czech Republic
+236,B,2019/01/13 15:11:31.817,2019/01/13 15:11:31.817,204,134,Jamaica
+226,H,2019/01/13 15:12:41.269,2019/01/13 15:12:41.269,220,54,Lithuania
+227,G,2019/01/13 15:14:11.556,2019/01/13 15:14:11.556,222,88,Canary Islands
+235,C,2019/01/13 15:14:14.018,2019/01/13 15:14:14.018,13,101,Mali
+217,I,2019/01/13 15:15:37.962,2019/01/13 15:15:37.962,8,73,Côte d'Ivoire
+238,A,2019/01/13 15:20:00.000,2019/01/13 15:20:00.000,98,160,Somalia
+232,G,2019/01/13 15:22:31.781,2019/01/13 15:22:31.781,133,49,Nicaragua
+229,A,2019/01/13 15:24:42.795,2019/01/13 15:24:42.795,23,226,Namibia
+234,A,2019/01/13 15:24:47.178,2019/01/13 15:24:47.178,112,137,Grenada
+231,F,2019/01/13 15:30:22.425,2019/01/13 15:30:22.425,56,30,Niue
+233,D,2019/01/13 15:31:10.591,2019/01/13 15:31:10.591,115,218,Estonia
+236,C,2019/01/13 15:38:19.376,2019/01/13 15:38:19.376,114,228,Somalia
+227,H,2019/01/13 15:41:01.121,2019/01/13 15:41:01.121,42,193,Armenia
+225,N,2019/01/13 15:42:09.214,2019/01/13 15:42:09.214,142,96,Vatican City
+235,A,2019/01/13 15:42:45.569,2019/01/13 15:42:45.569,6,51,Ukraine
+238,D,2019/01/13 15:46:33.296,2019/01/13 15:46:33.296,33,231,France
+217,J,2019/01/13 15:49:23.819,2019/01/13 15:49:23.819,168,98,U.S. Virgin Islands
+234,D,2019/01/13 15:50:45.032,2019/01/13 15:50:45.032,55,67,Djibouti
+232,I,2019/01/13 15:56:26.560,2019/01/13 15:56:26.560,94,164,Antarctica
+229,D,2019/01/13 15:56:59.201,2019/01/13 15:56:59.201,6,250,Northern Mariana Islands
+231,E,2019/01/13 15:58:11.035,2019/01/13 15:58:11.035,179,255,Nepal
+233,F,2019/01/13 15:59:51.496,2019/01/13 15:59:51.496,142,245,Netherlands
+240,A,2019/01/13 16:00:00.000,2019/01/13 16:00:00.000,36,218,Madagascar
+236,A,2019/01/13 16:08:23.022,2019/01/13 16:08:23.022,216,150,Ethiopia
+238,F,2019/01/13 16:16:15.973,2019/01/13 16:16:15.973,74,0,Ukraine
+235,B,2019/01/13 16:18:12.298,2019/01/13 16:18:12.298,224,135,Norway
+217,K,2019/01/13 16:19:41.810,2019/01/13 16:19:41.810,135,134,Ireland
+241,A,2019/01/13 16:20:00.000,2019/01/13 16:20:00.000,65,227,Indonesia
+234,F,2019/01/13 16:21:58.192,2019/01/13 16:21:58.192,90,151,United States
+240,D,2019/01/13 16:25:04.686,2019/01/13 16:25:04.686,115,83,Somalia
+232,J,2019/01/13 16:25:09.743,2019/01/13 16:25:09.743,13,63,Panama
+233,E,2019/01/13 16:26:01.054,2019/01/13 16:26:01.054,118,147,Ceuta & Melilla
+231,G,2019/01/13 16:27:02.013,2019/01/13 16:27:02.013,77,141,Georgia
+229,F,2019/01/13 16:30:36.944,2019/01/13 16:30:36.944,197,197,Northern Mariana Islands
+237,E,2019/01/13 16:31:49.165,2019/01/13 16:31:49.165,249,87,Kazakhstan
+236,D,2019/01/13 16:38:03.663,2019/01/13 16:38:03.663,236,102,Czech Republic
+242,A,2019/01/13 16:40:00.000,2019/01/13 16:40:00.000,196,133,Ecuador
+241,B,2019/01/13 16:46:13.941,2019/01/13 16:46:13.941,246,10,Maldives
+235,C,2019/01/13 16:47:04.892,2019/01/13 16:47:04.892,13,48,Malta
+234,E,2019/01/13 16:47:06.848,2019/01/13 16:47:06.848,38,77,El Salvador
+238,E,2019/01/13 16:48:05.206,2019/01/13 16:48:05.206,127,5,Guinea-Bissau
+217,M,2019/01/13 16:48:59.840,2019/01/13 16:48:59.840,194,235,Christmas Island
+233,G,2019/01/13 16:52:07.415,2019/01/13 16:52:07.415,108,243,Hungary
+240,F,2019/01/13 16:54:11.457,2019/01/13 16:54:11.457,178,145,Jersey
+231,H,2019/01/13 16:55:33.474,2019/01/13 16:55:33.474,127,20,Anguilla
+229,E,2019/01/13 16:56:31.200,2019/01/13 16:56:31.200,192,252,Switzerland
+237,G,2019/01/13 16:58:31.024,2019/01/13 16:58:31.024,0,46,Antarctica
+243,A,2019/01/13 17:00:00.000,2019/01/13 17:00:00.000,149,247,Belize
+232,K,2019/01/13 17:00:04.513,2019/01/13 17:00:04.513,38,125,St. Lucia
+236,F,2019/01/13 17:09:29.056,2019/01/13 17:09:29.056,45,198,Switzerland
+234,G,2019/01/13 17:13:16.724,2019/01/13 17:13:16.724,58,102,Guadeloupe
+238,G,2019/01/13 17:14:30.659,2019/01/13 17:14:30.659,17,1,Rwanda
+242,D,2019/01/13 17:14:38.066,2019/01/13 17:14:38.066,78,172,Grenada
+217,O,2019/01/13 17:16:58.562,2019/01/13 17:16:58.562,174,151,Thailand
+235,A,2019/01/13 17:18:15.167,2019/01/13 17:18:15.167,47,83,Guernsey
+241,C,2019/01/13 17:19:51.170,2019/01/13 17:19:51.170,203,204,Somalia
+244,A,2019/01/13 17:20:00.000,2019/01/13 17:20:00.000,74,68,Northern Mariana Islands
+233,H,2019/01/13 17:21:25.668,2019/01/13 17:21:25.668,40,38,Monaco
+237,H,2019/01/13 17:23:00.381,2019/01/13 17:23:00.381,189,169,Cayman Islands
+240,E,2019/01/13 17:25:42.760,2019/01/13 17:25:42.760,223,207,Romania
+229,G,2019/01/13 17:28:18.770,2019/01/13 17:28:18.770,239,17,Romania
+232,M,2019/01/13 17:28:38.040,2019/01/13 17:28:38.040,46,245,Norfolk Island
+243,D,2019/01/13 17:32:56.985,2019/01/13 17:32:56.985,227,37,Pitcairn Islands
+236,E,2019/01/13 17:37:42.804,2019/01/13 17:37:42.804,182,163,Slovakia
+234,I,2019/01/13 17:38:33.462,2019/01/13 17:38:33.462,140,168,Isle of Man
+245,A,2019/01/13 17:40:00.000,2019/01/13 17:40:00.000,80,173,Ukraine
+238,H,2019/01/13 17:40:52.706,2019/01/13 17:40:52.706,185,145,Falkland Islands
+242,F,2019/01/13 17:46:11.217,2019/01/13 17:46:11.217,71,216,Algeria
+241,A,2019/01/13 17:51:43.322,2019/01/13 17:51:43.322,161,174,Mexico
+244,D,2019/01/13 17:52:05.038,2019/01/13 17:52:05.038,241,38,Northern Mariana Islands
+235,D,2019/01/13 17:52:51.038,2019/01/13 17:52:51.038,73,180,Malaysia
+240,G,2019/01/13 17:56:59.534,2019/01/13 17:56:59.534,18,60,Qatar
+232,N,2019/01/13 17:57:37.986,2019/01/13 17:57:37.986,38,77,Tunisia
+229,I,2019/01/13 17:58:00.007,2019/01/13 17:58:00.007,3,168,Nauru
+246,A,2019/01/13 18:00:00.000,2019/01/13 18:00:00.000,11,136,Ascension Island
+243,F,2019/01/13 18:00:38.994,2019/01/13 18:00:38.994,222,232,Afghanistan
+239,I,2019/01/13 18:01:16.587,2019/01/13 18:01:16.587,58,225,Belize
+234,J,2019/01/13 18:02:09.446,2019/01/13 18:02:09.446,74,151,Namibia
+236,G,2019/01/13 18:03:51.621,2019/01/13 18:03:51.621,236,65,Maldives
+245,B,2019/01/13 18:10:43.435,2019/01/13 18:10:43.435,72,124,Portugal
+242,E,2019/01/13 18:12:44.136,2019/01/13 18:12:44.136,231,109,French Polynesia
+244,F,2019/01/13 18:17:58.607,2019/01/13 18:17:58.607,3,166,Japan
+247,A,2019/01/13 18:20:00.000,2019/01/13 18:20:00.000,135,152,Canary Islands
+235,F,2019/01/13 18:23:40.094,2019/01/13 18:23:40.094,247,21,Bahamas
+241,B,2019/01/13 18:24:32.833,2019/01/13 18:24:32.833,63,200,Kyrgyzstan
+229,J,2019/01/13 18:27:35.482,2019/01/13 18:27:35.482,193,14,Papua New Guinea
+243,E,2019/01/13 18:28:02.055,2019/01/13 18:28:02.055,201,123,Togo
+240,H,2019/01/13 18:28:18.166,2019/01/13 18:28:18.166,20,142,United States
+236,I,2019/01/13 18:29:17.265,2019/01/13 18:29:17.265,46,41,Western Sahara
+239,J,2019/01/13 18:29:34.436,2019/01/13 18:29:34.436,24,182,Åland Islands
+246,B,2019/01/13 18:31:56.569,2019/01/13 18:31:56.569,24,111,Moldova
+234,K,2019/01/13 18:34:56.153,2019/01/13 18:34:56.153,249,253,Bhutan
+242,G,2019/01/13 18:39:55.275,2019/01/13 18:39:55.275,213,251,Peru
+245,C,2019/01/13 18:40:08.853,2019/01/13 18:40:08.853,153,53,French Polynesia
+244,E,2019/01/13 18:47:04.110,2019/01/13 18:47:04.110,27,142,Christmas Island
+235,E,2019/01/13 18:47:39.376,2019/01/13 18:47:39.376,133,170,Tonga
+247,D,2019/01/13 18:49:10.745,2019/01/13 18:49:10.745,50,103,Guernsey
+241,C,2019/01/13 18:56:18.310,2019/01/13 18:56:18.310,172,160,Tristan da Cunha
+236,J,2019/01/13 18:57:54.343,2019/01/13 18:57:54.343,226,98,Poland
+239,K,2019/01/13 18:59:00.350,2019/01/13 18:59:00.350,124,66,Grenada
+249,A,2019/01/13 19:00:00.000,2019/01/13 19:00:00.000,181,136,Kazakhstan
+229,L,2019/01/13 19:01:35.734,2019/01/13 19:01:35.734,218,155,Nepal
+246,C,2019/01/13 19:04:05.984,2019/01/13 19:04:05.984,216,193,Cameroon
+243,G,2019/01/13 19:04:07.876,2019/01/13 19:04:07.876,86,63,Israel
+245,A,2019/01/13 19:04:58.999,2019/01/13 19:04:58.999,79,52,Faroe Islands
+234,M,2019/01/13 19:05:36.277,2019/01/13 19:05:36.277,102,30,Turkmenistan
+242,I,2019/01/13 19:05:40.472,2019/01/13 19:05:40.472,112,238,Niue
+247,F,2019/01/13 19:17:01.654,2019/01/13 19:17:01.654,45,4,Guatemala
+235,G,2019/01/13 19:18:51.025,2019/01/13 19:18:51.025,19,99,Congo - Kinshasa
+244,G,2019/01/13 19:21:58.726,2019/01/13 19:21:58.726,61,240,Andorra
+241,A,2019/01/13 19:25:43.743,2019/01/13 19:25:43.743,15,144,Costa Rica
+229,M,2019/01/13 19:27:20.346,2019/01/13 19:27:20.346,38,16,Uganda
+239,M,2019/01/13 19:28:13.798,2019/01/13 19:28:13.798,11,145,Réunion
+249,B,2019/01/13 19:29:40.453,2019/01/13 19:29:40.453,251,146,Tuvalu
+236,K,2019/01/13 19:30:59.493,2019/01/13 19:30:59.493,33,234,Panama
+234,N,2019/01/13 19:36:12.007,2019/01/13 19:36:12.007,22,109,Indonesia
+246,A,2019/01/13 19:37:25.290,2019/01/13 19:37:25.290,73,190,Liberia
+242,J,2019/01/13 19:37:54.870,2019/01/13 19:37:54.870,169,15,Peru
+243,I,2019/01/13 19:40:33.902,2019/01/13 19:40:33.902,193,197,Armenia
+245,D,2019/01/13 19:40:50.983,2019/01/13 19:40:50.983,215,128,Vietnam
+244,H,2019/01/13 19:47:13.375,2019/01/13 19:47:13.375,175,113,Rwanda
+235,I,2019/01/13 19:50:53.331,2019/01/13 19:50:53.331,98,140,Marshall Islands
+247,E,2019/01/13 19:54:15.973,2019/01/13 19:54:15.973,148,203,Benin
+229,N,2019/01/13 19:54:21.172,2019/01/13 19:54:21.172,95,161,U.S. Virgin Islands
+236,M,2019/01/13 19:57:43.110,2019/01/13 19:57:43.110,89,154,Honduras
+241,B,2019/01/13 19:58:47.967,2019/01/13 19:58:47.967,16,62,Gibraltar
+249,C,2019/01/13 20:00:15.655,2019/01/13 20:00:15.655,198,238,Greece
+239,O,2019/01/13 20:03:20.058,2019/01/13 20:03:20.058,181,99,United States
+245,F,2019/01/13 20:06:09.697,2019/01/13 20:06:09.697,52,175,British Virgin Islands
+246,D,2019/01/13 20:07:16.633,2019/01/13 20:07:16.633,116,221,Curaçao
+242,K,2019/01/13 20:11:16.355,2019/01/13 20:11:16.355,197,113,Kazakhstan
+243,J,2019/01/13 20:14:07.297,2019/01/13 20:14:07.297,24,187,Costa Rica
+235,J,2019/01/13 20:19:41.770,2019/01/13 20:19:41.770,203,77,Thailand
+236,N,2019/01/13 20:27:20.125,2019/01/13 20:27:20.125,97,240,Pakistan
+241,C,2019/01/13 20:29:25.473,2019/01/13 20:29:25.473,196,117,Suriname
+249,A,2019/01/13 20:30:42.141,2019/01/13 20:30:42.141,22,47,United Kingdom
+247,G,2019/01/13 20:31:35.566,2019/01/13 20:31:35.566,209,83,Palestinian Territories
+246,F,2019/01/13 20:39:16.497,2019/01/13 20:39:16.497,58,89,Morocco
+245,E,2019/01/13 20:44:32.428,2019/01/13 20:44:32.428,115,55,Liberia
+242,M,2019/01/13 20:45:38.259,2019/01/13 20:45:38.259,212,91,Niue
+235,K,2019/01/13 20:47:05.885,2019/01/13 20:47:05.885,210,173,Paraguay
+243,K,2019/01/13 20:47:30.412,2019/01/13 20:47:30.412,243,229,São Tomé and Príncipe
+249,B,2019/01/13 20:59:46.681,2019/01/13 20:59:46.681,20,250,São Tomé and Príncipe
+241,A,2019/01/13 21:04:08.503,2019/01/13 21:04:08.503,88,158,St. Martin
+247,I,2019/01/13 21:05:36.860,2019/01/13 21:05:36.860,28,6,Mexico
+245,G,2019/01/13 21:08:47.596,2019/01/13 21:08:47.596,173,222,Timor-Leste
+242,O,2019/01/13 21:12:20.540,2019/01/13 21:12:20.540,16,248,Jersey
+246,E,2019/01/13 21:12:46.634,2019/01/13 21:12:46.634,87,65,Bahamas
+235,M,2019/01/13 21:17:49.290,2019/01/13 21:17:49.290,160,0,Montenegro
+243,M,2019/01/13 21:18:30.337,2019/01/13 21:18:30.337,142,40,Réunion
+249,C,2019/01/13 21:30:15.987,2019/01/13 21:30:15.987,145,148,Dominica
+247,J,2019/01/13 21:35:58.301,2019/01/13 21:35:58.301,35,114,Iraq
+245,H,2019/01/13 21:36:05.721,2019/01/13 21:36:05.721,16,165,Antigua & Barbuda
+246,G,2019/01/13 21:40:38.989,2019/01/13 21:40:38.989,84,23,Bulgaria
+241,D,2019/01/13 21:40:41.799,2019/01/13 21:40:41.799,96,192,St. Lucia
+235,N,2019/01/13 21:46:58.751,2019/01/13 21:46:58.751,7,237,Guadeloupe
+243,N,2019/01/13 21:50:58.439,2019/01/13 21:50:58.439,187,191,Côte d'Ivoire
+249,A,2019/01/13 21:57:55.835,2019/01/13 21:57:55.835,88,118,Tanzania
+241,F,2019/01/13 22:04:37.147,2019/01/13 22:04:37.147,70,211,Oman
+247,L,2019/01/13 22:08:16.881,2019/01/13 22:08:16.881,246,132,Laos
+246,H,2019/01/13 22:08:32.265,2019/01/13 22:08:32.265,73,142,Rwanda
+249,D,2019/01/13 22:27:35.253,2019/01/13 22:27:35.253,72,124,Saudi Arabia
+241,E,2019/01/13 22:30:07.582,2019/01/13 22:30:07.582,123,86,Chad
+247,M,2019/01/13 22:38:15.883,2019/01/13 22:38:15.883,104,220,Netherlands
+248,A,2019/01/13 22:54:59.064,2019/01/13 22:54:59.064,158,95,Japan
+249,F,2019/01/13 22:59:20.616,2019/01/13 22:59:20.616,177,139,Pakistan
+241,G,2019/01/13 23:06:33.666,2019/01/13 23:06:33.666,184,171,Cape Verde
+247,O,2019/01/13 23:06:45.924,2019/01/13 23:06:45.924,70,125,South Korea
+248,D,2019/01/13 23:24:21.088,2019/01/13 23:24:21.088,150,230,Oman
+249,E,2019/01/13 23:30:10.349,2019/01/13 23:30:10.349,168,178,Luxembourg
+241,I,2019/01/13 23:31:36.352,2019/01/13 23:31:36.352,132,95,Curaçao
+248,F,2019/01/13 23:56:56.877,2019/01/13 23:56:56.877,179,254,Belize
+241,J,2019/01/14 00:02:27.331,2019/01/14 00:02:27.331,6,51,Paraguay
+249,G,2019/01/14 00:05:44.187,2019/01/14 00:05:44.187,223,83,Cuba
+248,E,2019/01/14 00:26:55.412,2019/01/14 00:26:55.412,211,183,Japan
+241,K,2019/01/14 00:35:46.203,2019/01/14 00:35:46.203,35,205,Tajikistan
+249,I,2019/01/14 00:36:43.781,2019/01/14 00:36:43.781,76,191,Bahrain
+248,G,2019/01/14 01:02:02.841,2019/01/14 01:02:02.841,255,102,Wallis & Futuna
+249,J,2019/01/14 01:02:54.926,2019/01/14 01:02:54.926,135,182,Turkmenistan
+241,M,2019/01/14 01:05:08.066,2019/01/14 01:05:08.066,73,179,Latvia
+248,I,2019/01/14 01:25:42.407,2019/01/14 01:25:42.407,111,7,Ghana
+249,K,2019/01/14 01:31:42.866,2019/01/14 01:31:42.866,15,162,Greece
+241,O,2019/01/14 01:33:18.377,2019/01/14 01:33:18.377,81,169,Liberia
+248,J,2019/01/14 01:52:47.867,2019/01/14 01:52:47.867,152,211,Qatar
+249,M,2019/01/14 02:04:45.868,2019/01/14 02:04:45.868,158,107,Lesotho
+248,L,2019/01/14 02:22:19.600,2019/01/14 02:22:19.600,108,113,Laos
+249,N,2019/01/14 02:37:14.941,2019/01/14 02:37:14.941,121,3,Austria
+248,M,2019/01/14 02:55:31.333,2019/01/14 02:55:31.333,111,234,Puerto Rico
+248,O,2019/01/14 03:21:57.444,2019/01/14 03:21:57.444,71,192,Angola
+250,A,2019/01/14 04:00:00.000,2019/01/14 04:00:00.000,207,50,Diego Garcia
+250,F,2019/01/14 04:32:37.844,2019/01/14 04:32:37.844,235,153,Uzbekistan
+252,A,2019/01/14 04:40:00.000,2019/01/14 04:40:00.000,116,223,Costa Rica
+250,D,2019/01/14 05:02:30.844,2019/01/14 05:02:30.844,25,110,American Samoa
+252,F,2019/01/14 05:10:24.573,2019/01/14 05:10:24.573,238,120,Bangladesh
+254,A,2019/01/14 05:20:00.000,2019/01/14 05:20:00.000,123,169,Monaco
+250,E,2019/01/14 05:33:43.383,2019/01/14 05:33:43.383,202,138,Bolivia
+252,D,2019/01/14 05:38:00.840,2019/01/14 05:38:00.840,129,133,Sint Maarten
+255,A,2019/01/14 05:40:00.000,2019/01/14 05:40:00.000,51,147,Antarctica
+254,F,2019/01/14 05:46:17.743,2019/01/14 05:46:17.743,70,133,Oman
+256,A,2019/01/14 06:00:00.000,2019/01/14 06:00:00.000,208,213,Germany
+250,G,2019/01/14 06:00:37.640,2019/01/14 06:00:37.640,13,208,Guatemala
+252,E,2019/01/14 06:09:38.725,2019/01/14 06:09:38.725,118,62,Belize
+255,F,2019/01/14 06:13:49.546,2019/01/14 06:13:49.546,157,140,Dominican Republic
+254,D,2019/01/14 06:15:36.294,2019/01/14 06:15:36.294,76,62,Canary Islands
+250,H,2019/01/14 06:23:36.094,2019/01/14 06:23:36.094,66,250,Jordan
+256,B,2019/01/14 06:28:46.999,2019/01/14 06:28:46.999,134,113,Guam
+251,F,2019/01/14 06:29:35.285,2019/01/14 06:29:35.285,218,154,American Samoa
+252,G,2019/01/14 06:35:30.724,2019/01/14 06:35:30.724,143,150,Western Sahara
+258,A,2019/01/14 06:40:00.000,2019/01/14 06:40:00.000,123,88,Bosnia & Herzegovina
+255,D,2019/01/14 06:46:25.114,2019/01/14 06:46:25.114,174,155,U.S. Virgin Islands
+254,E,2019/01/14 06:49:24.059,2019/01/14 06:49:24.059,2,24,Burkina Faso
+256,C,2019/01/14 06:56:01.220,2019/01/14 06:56:01.220,0,173,St. Helena
+259,A,2019/01/14 07:00:00.000,2019/01/14 07:00:00.000,185,231,Djibouti
+252,H,2019/01/14 07:01:50.455,2019/01/14 07:01:50.455,104,161,Costa Rica
+251,D,2019/01/14 07:03:47.232,2019/01/14 07:03:47.232,111,189,Samoa
+258,B,2019/01/14 07:09:02.358,2019/01/14 07:09:02.358,64,139,Monaco
+255,E,2019/01/14 07:16:52.783,2019/01/14 07:16:52.783,31,162,Bhutan
+254,G,2019/01/14 07:19:02.942,2019/01/14 07:19:02.942,134,160,Cyprus
+260,A,2019/01/14 07:20:00.000,2019/01/14 07:20:00.000,134,204,Martinique
+256,A,2019/01/14 07:22:21.983,2019/01/14 07:22:21.983,57,56,Kosovo
+259,F,2019/01/14 07:33:11.227,2019/01/14 07:33:11.227,21,198,Trinidad & Tobago
+251,E,2019/01/14 07:36:00.824,2019/01/14 07:36:00.824,160,165,Brazil
+258,C,2019/01/14 07:36:56.560,2019/01/14 07:36:56.560,222,219,Liberia
+261,A,2019/01/14 07:40:00.000,2019/01/14 07:40:00.000,124,99,Svalbard & Jan Mayen
+254,H,2019/01/14 07:43:09.173,2019/01/14 07:43:09.173,63,50,Solomon Islands
+260,B,2019/01/14 07:47:43.269,2019/01/14 07:47:43.269,63,142,Trinidad & Tobago
+257,E,2019/01/14 07:48:57.110,2019/01/14 07:48:57.110,168,211,Chile
+255,G,2019/01/14 07:49:26.281,2019/01/14 07:49:26.281,238,31,New Caledonia
+256,F,2019/01/14 07:52:43.791,2019/01/14 07:52:43.791,112,15,South Africa
+259,D,2019/01/14 07:56:18.105,2019/01/14 07:56:18.105,224,35,Uruguay
+262,A,2019/01/14 08:00:00.000,2019/01/14 08:00:00.000,6,162,Monaco
+258,A,2019/01/14 08:02:01.452,2019/01/14 08:02:01.452,48,67,Solomon Islands
+261,F,2019/01/14 08:06:27.348,2019/01/14 08:06:27.348,166,49,Albania
+251,G,2019/01/14 08:10:39.938,2019/01/14 08:10:39.938,62,162,Croatia
+260,C,2019/01/14 08:14:41.753,2019/01/14 08:14:41.753,134,35,St. Martin
+257,G,2019/01/14 08:15:41.721,2019/01/14 08:15:41.721,165,243,Somalia
+255,I,2019/01/14 08:16:17.203,2019/01/14 08:16:17.203,32,160,Slovenia
+263,A,2019/01/14 08:20:00.000,2019/01/14 08:20:00.000,57,80,China
+256,D,2019/01/14 08:22:05.599,2019/01/14 08:22:05.599,199,23,Gibraltar
+253,F,2019/01/14 08:23:05.183,2019/01/14 08:23:05.183,19,174,Grenada
+259,E,2019/01/14 08:26:13.836,2019/01/14 08:26:13.836,41,39,Tonga
+262,B,2019/01/14 08:28:00.262,2019/01/14 08:28:00.262,180,26,Chad
+258,B,2019/01/14 08:31:26.110,2019/01/14 08:31:26.110,37,114,Canada
+251,H,2019/01/14 08:38:07.052,2019/01/14 08:38:07.052,168,21,Central African Republic
+261,D,2019/01/14 08:39:03.433,2019/01/14 08:39:03.433,17,9,Ukraine
+264,A,2019/01/14 08:40:00.000,2019/01/14 08:40:00.000,42,119,Christmas Island
+255,J,2019/01/14 08:40:17.390,2019/01/14 08:40:17.390,80,159,Puerto Rico
+260,A,2019/01/14 08:42:51.283,2019/01/14 08:42:51.283,110,56,Palestinian Territories
+257,H,2019/01/14 08:44:58.872,2019/01/14 08:44:58.872,25,165,Cocos (Keeling) Islands
+263,F,2019/01/14 08:49:23.693,2019/01/14 08:49:23.693,206,70,Canary Islands
+256,E,2019/01/14 08:49:54.883,2019/01/14 08:49:54.883,118,7,Honduras
+253,D,2019/01/14 08:52:11.009,2019/01/14 08:52:11.009,139,208,Vatican City
+259,G,2019/01/14 08:58:56.998,2019/01/14 08:58:56.998,4,149,Libya
+265,A,2019/01/14 09:00:00.000,2019/01/14 09:00:00.000,198,230,Haiti
+262,C,2019/01/14 09:01:13.104,2019/01/14 09:01:13.104,98,138,Palestinian Territories
+258,C,2019/01/14 09:04:59.435,2019/01/14 09:04:59.435,148,124,Angola
+255,L,2019/01/14 09:05:45.130,2019/01/14 09:05:45.130,104,244,South Korea
+264,B,2019/01/14 09:09:32.186,2019/01/14 09:09:32.186,192,51,Mauritius
+260,B,2019/01/14 09:09:37.745,2019/01/14 09:09:37.745,116,166,Madagascar
+261,E,2019/01/14 09:12:50.490,2019/01/14 09:12:50.490,132,82,St. Vincent & Grenadines
+253,E,2019/01/14 09:16:16.413,2019/01/14 09:16:16.413,123,96,Turkey
+256,G,2019/01/14 09:19:15.593,2019/01/14 09:19:15.593,255,122,Kazakhstan
+266,A,2019/01/14 09:20:00.000,2019/01/14 09:20:00.000,25,78,Iceland
+263,D,2019/01/14 09:22:43.263,2019/01/14 09:22:43.263,241,13,Angola
+259,L,2019/01/14 09:27:10.981,2019/01/14 09:27:10.981,217,86,Turks & Caicos Islands
+265,F,2019/01/14 09:30:39.858,2019/01/14 09:30:39.858,215,253,Sierra Leone
+262,A,2019/01/14 09:33:07.350,2019/01/14 09:33:07.350,245,75,Uzbekistan
+255,M,2019/01/14 09:37:24.708,2019/01/14 09:37:24.708,189,83,Kenya
+264,C,2019/01/14 09:39:45.165,2019/01/14 09:39:45.165,40,244,Belize
+260,C,2019/01/14 09:39:51.797,2019/01/14 09:39:51.797,138,71,Lebanon
+267,A,2019/01/14 09:40:00.000,2019/01/14 09:40:00.000,151,116,St. Martin
+261,G,2019/01/14 09:41:49.110,2019/01/14 09:41:49.110,33,239,Tristan da Cunha
+266,B,2019/01/14 09:42:21.152,2019/01/14 09:42:21.152,153,210,Mexico
+256,H,2019/01/14 09:44:42.012,2019/01/14 09:44:42.012,147,40,Laos
+253,G,2019/01/14 09:47:25.735,2019/01/14 09:47:25.735,122,67,Sri Lanka
+259,M,2019/01/14 09:50:56.672,2019/01/14 09:50:56.672,203,240,Laos
+263,E,2019/01/14 09:52:50.967,2019/01/14 09:52:50.967,134,191,Switzerland
+265,D,2019/01/14 09:59:26.249,2019/01/14 09:59:26.249,193,210,Turkmenistan
+260,A,2019/01/14 10:08:25.680,2019/01/14 10:08:25.680,201,198,Guinea
+262,B,2019/01/14 10:08:49.198,2019/01/14 10:08:49.198,19,158,Marshall Islands
+267,B,2019/01/14 10:10:45.866,2019/01/14 10:10:45.866,143,210,São Tomé and Príncipe
+266,C,2019/01/14 10:11:36.862,2019/01/14 10:11:36.862,58,83,Bulgaria
+264,A,2019/01/14 10:11:48.987,2019/01/14 10:11:48.987,225,55,Myanmar (Burma)
+255,N,2019/01/14 10:14:43.614,2019/01/14 10:14:43.614,42,242,Mexico
+261,H,2019/01/14 10:15:09.671,2019/01/14 10:15:09.671,110,212,Denmark
+259,N,2019/01/14 10:17:49.930,2019/01/14 10:17:49.930,159,130,Nigeria
+253,K,2019/01/14 10:21:52.666,2019/01/14 10:21:52.666,66,33,Bahamas
+263,G,2019/01/14 10:28:26.839,2019/01/14 10:28:26.839,132,83,Micronesia
+265,E,2019/01/14 10:29:24.764,2019/01/14 10:29:24.764,143,200,Turkmenistan
+262,C,2019/01/14 10:35:11.475,2019/01/14 10:35:11.475,123,101,Vanuatu
+267,C,2019/01/14 10:38:12.932,2019/01/14 10:38:12.932,106,255,Sierra Leone
+270,A,2019/01/14 10:40:00.000,2019/01/14 10:40:00.000,130,43,Slovakia
+266,A,2019/01/14 10:41:26.863,2019/01/14 10:41:26.863,151,47,Madagascar
+260,B,2019/01/14 10:42:08.842,2019/01/14 10:42:08.842,23,22,Ecuador
+264,F,2019/01/14 10:45:14.848,2019/01/14 10:45:14.848,47,113,Solomon Islands
+253,M,2019/01/14 10:52:26.608,2019/01/14 10:52:26.608,199,19,Romania
+263,L,2019/01/14 10:57:23.533,2019/01/14 10:57:23.533,158,106,St. Martin
+265,G,2019/01/14 10:58:34.816,2019/01/14 10:58:34.816,54,244,North Korea
+271,A,2019/01/14 11:00:00.000,2019/01/14 11:00:00.000,112,114,Kenya
+262,A,2019/01/14 11:03:56.047,2019/01/14 11:03:56.047,198,126,Djibouti
+264,D,2019/01/14 11:08:44.654,2019/01/14 11:08:44.654,181,93,Ukraine
+267,A,2019/01/14 11:09:28.412,2019/01/14 11:09:28.412,34,78,Montserrat
+270,B,2019/01/14 11:10:34.977,2019/01/14 11:10:34.977,40,15,Ghana
+266,F,2019/01/14 11:12:18.613,2019/01/14 11:12:18.613,117,235,Swaziland
+260,C,2019/01/14 11:14:32.621,2019/01/14 11:14:32.621,165,162,Ghana
+272,A,2019/01/14 11:20:00.000,2019/01/14 11:20:00.000,63,237,Cape Verde
+253,O,2019/01/14 11:24:39.789,2019/01/14 11:24:39.789,91,174,Kazakhstan
+263,M,2019/01/14 11:26:09.600,2019/01/14 11:26:09.600,184,157,Germany
+271,F,2019/01/14 11:28:28.473,2019/01/14 11:28:28.473,161,101,Marshall Islands
+265,H,2019/01/14 11:29:07.983,2019/01/14 11:29:07.983,119,59,Turks & Caicos Islands
+262,F,2019/01/14 11:30:09.817,2019/01/14 11:30:09.817,225,255,Ethiopia
+267,F,2019/01/14 11:34:46.745,2019/01/14 11:34:46.745,147,158,Belarus
+273,A,2019/01/14 11:40:00.000,2019/01/14 11:40:00.000,176,90,Bahamas
+270,C,2019/01/14 11:40:10.262,2019/01/14 11:40:10.262,104,17,Finland
+260,A,2019/01/14 11:44:06.714,2019/01/14 11:44:06.714,199,71,Tonga
+266,D,2019/01/14 11:45:07.133,2019/01/14 11:45:07.133,15,147,Bolivia
+272,F,2019/01/14 11:53:43.382,2019/01/14 11:53:43.382,200,251,Cameroon
+263,O,2019/01/14 11:55:35.503,2019/01/14 11:55:35.503,115,242,Seychelles
+262,D,2019/01/14 11:55:43.198,2019/01/14 11:55:43.198,80,106,Papua New Guinea
+274,A,2019/01/14 12:00:00.000,2019/01/14 12:00:00.000,247,156,Cayman Islands
+267,D,2019/01/14 12:00:47.489,2019/01/14 12:00:47.489,130,148,Kazakhstan
+268,F,2019/01/14 12:03:53.410,2019/01/14 12:03:53.410,66,209,Ascension Island
+271,D,2019/01/14 12:05:20.711,2019/01/14 12:05:20.711,141,25,Central African Republic
+270,A,2019/01/14 12:06:03.369,2019/01/14 12:06:03.369,99,42,Solomon Islands
+260,F,2019/01/14 12:10:29.601,2019/01/14 12:10:29.601,131,165,South Georgia & South Sandwich Islands
+273,B,2019/01/14 12:11:15.529,2019/01/14 12:11:15.529,83,75,Samoa
+266,E,2019/01/14 12:14:40.535,2019/01/14 12:14:40.535,128,9,Finland
+275,A,2019/01/14 12:20:00.000,2019/01/14 12:20:00.000,242,111,Pakistan
+262,E,2019/01/14 12:25:48.794,2019/01/14 12:25:48.794,31,197,Swaziland
+274,F,2019/01/14 12:27:56.425,2019/01/14 12:27:56.425,230,241,Uruguay
+267,E,2019/01/14 12:29:24.752,2019/01/14 12:29:24.752,138,163,Réunion
+272,D,2019/01/14 12:30:23.671,2019/01/14 12:30:23.671,242,186,Bosnia & Herzegovina
+271,E,2019/01/14 12:33:51.055,2019/01/14 12:33:51.055,3,43,Poland
+268,D,2019/01/14 12:34:25.243,2019/01/14 12:34:25.243,106,18,St. Lucia
+270,B,2019/01/14 12:34:43.227,2019/01/14 12:34:43.227,155,2,Hungary
+273,C,2019/01/14 12:38:48.734,2019/01/14 12:38:48.734,13,222,Jersey
+276,A,2019/01/14 12:40:00.000,2019/01/14 12:40:00.000,27,230,Senegal
+260,D,2019/01/14 12:44:31.812,2019/01/14 12:44:31.812,250,218,Guadeloupe
+266,G,2019/01/14 12:50:24.174,2019/01/14 12:50:24.174,62,208,Algeria
+275,F,2019/01/14 12:50:47.654,2019/01/14 12:50:47.654,196,197,Åland Islands
+262,G,2019/01/14 12:54:21.391,2019/01/14 12:54:21.391,8,156,St. Kitts & Nevis
+274,D,2019/01/14 12:55:10.584,2019/01/14 12:55:10.584,182,134,Angola
+270,C,2019/01/14 12:57:27.386,2019/01/14 12:57:27.386,39,51,Nepal
+267,G,2019/01/14 13:00:01.969,2019/01/14 13:00:01.969,217,60,Libya
+271,G,2019/01/14 13:02:28.072,2019/01/14 13:02:28.072,131,232,Monaco
+272,E,2019/01/14 13:03:26.406,2019/01/14 13:03:26.406,3,164,Hong Kong SAR China
+268,E,2019/01/14 13:04:45.753,2019/01/14 13:04:45.753,148,36,Senegal
+273,A,2019/01/14 13:11:18.933,2019/01/14 13:11:18.933,254,241,Western Sahara
+276,B,2019/01/14 13:12:45.807,2019/01/14 13:12:45.807,87,40,Laos
+260,E,2019/01/14 13:14:04.390,2019/01/14 13:14:04.390,102,251,Bahamas
+278,A,2019/01/14 13:20:00.000,2019/01/14 13:20:00.000,13,197,Zimbabwe
+262,K,2019/01/14 13:23:47.702,2019/01/14 13:23:47.702,223,45,France
+269,A,2019/01/14 13:24:10.563,2019/01/14 13:24:10.563,150,162,Bahrain
+266,H,2019/01/14 13:25:11.057,2019/01/14 13:25:11.057,163,249,Romania
+274,E,2019/01/14 13:25:13.279,2019/01/14 13:25:13.279,25,74,Timor-Leste
+275,D,2019/01/14 13:26:29.977,2019/01/14 13:26:29.977,36,168,Guinea-Bissau
+270,A,2019/01/14 13:26:38.047,2019/01/14 13:26:38.047,237,12,Mayotte
+267,H,2019/01/14 13:28:17.931,2019/01/14 13:28:17.931,251,117,Honduras
+271,I,2019/01/14 13:30:12.334,2019/01/14 13:30:12.334,61,180,Congo - Brazzaville
+272,G,2019/01/14 13:34:10.784,2019/01/14 13:34:10.784,3,199,Vatican City
+268,G,2019/01/14 13:34:46.276,2019/01/14 13:34:46.276,230,32,Kenya
+276,C,2019/01/14 13:37:30.949,2019/01/14 13:37:30.949,248,72,Solomon Islands
+279,A,2019/01/14 13:40:00.000,2019/01/14 13:40:00.000,123,3,Curaçao
+260,G,2019/01/14 13:42:28.489,2019/01/14 13:42:28.489,241,254,Bhutan
+273,B,2019/01/14 13:45:32.424,2019/01/14 13:45:32.424,230,160,Jamaica
+278,B,2019/01/14 13:49:53.078,2019/01/14 13:49:53.078,71,41,Georgia
+274,G,2019/01/14 13:53:32.571,2019/01/14 13:53:32.571,232,98,Tanzania
+269,F,2019/01/14 13:54:19.117,2019/01/14 13:54:19.117,189,241,Mauritius
+262,M,2019/01/14 13:54:46.506,2019/01/14 13:54:46.506,251,135,Tokelau
+270,B,2019/01/14 13:56:28.364,2019/01/14 13:56:28.364,40,18,Cambodia
+275,E,2019/01/14 13:56:59.717,2019/01/14 13:56:59.717,249,193,Thailand
+271,J,2019/01/14 14:01:04.055,2019/01/14 14:01:04.055,169,41,Nauru
+276,A,2019/01/14 14:05:31.673,2019/01/14 14:05:31.673,128,58,Austria
+272,L,2019/01/14 14:05:58.260,2019/01/14 14:05:58.260,59,34,Faroe Islands
+268,H,2019/01/14 14:07:19.379,2019/01/14 14:07:19.379,7,193,Nicaragua
+279,F,2019/01/14 14:11:42.638,2019/01/14 14:11:42.638,42,248,Peru
+260,H,2019/01/14 14:12:37.231,2019/01/14 14:12:37.231,127,51,St. Vincent & Grenadines
+273,C,2019/01/14 14:15:28.368,2019/01/14 14:15:28.368,233,158,Réunion
+278,C,2019/01/14 14:16:54.255,2019/01/14 14:16:54.255,33,15,Mauritius
+281,A,2019/01/14 14:20:00.000,2019/01/14 14:20:00.000,225,171,Indonesia
+262,O,2019/01/14 14:23:50.215,2019/01/14 14:23:50.215,189,54,British Indian Ocean Territory
+274,H,2019/01/14 14:24:38.269,2019/01/14 14:24:38.269,52,182,Dominica
+270,C,2019/01/14 14:25:50.679,2019/01/14 14:25:50.679,197,156,China
+269,D,2019/01/14 14:26:01.155,2019/01/14 14:26:01.155,167,49,Anguilla
+271,L,2019/01/14 14:26:39.361,2019/01/14 14:26:39.361,158,175,St. Vincent & Grenadines
+275,G,2019/01/14 14:27:06.587,2019/01/14 14:27:06.587,101,247,Burundi
+276,F,2019/01/14 14:35:27.218,2019/01/14 14:35:27.218,89,141,Côte d'Ivoire
+272,M,2019/01/14 14:39:14.192,2019/01/14 14:39:14.192,151,37,Italy
+282,A,2019/01/14 14:40:00.000,2019/01/14 14:40:00.000,76,80,Tuvalu
+279,D,2019/01/14 14:41:38.945,2019/01/14 14:41:38.945,31,71,U.S. Virgin Islands
+273,A,2019/01/14 14:45:10.382,2019/01/14 14:45:10.382,139,63,Thailand
+281,F,2019/01/14 14:50:13.570,2019/01/14 14:50:13.570,128,4,Hungary
+278,A,2019/01/14 14:53:04.117,2019/01/14 14:53:04.117,234,129,Canary Islands
+271,M,2019/01/14 14:54:29.864,2019/01/14 14:54:29.864,10,25,French Southern Territories
+269,E,2019/01/14 14:56:04.994,2019/01/14 14:56:04.994,104,41,United Kingdom
+275,L,2019/01/14 14:57:24.082,2019/01/14 14:57:24.082,169,77,United Arab Emirates
+270,A,2019/01/14 14:59:43.801,2019/01/14 14:59:43.801,123,241,Philippines
+283,A,2019/01/14 15:00:00.000,2019/01/14 15:00:00.000,51,71,Somalia
+277,G,2019/01/14 15:08:42.629,2019/01/14 15:08:42.629,156,213,Suriname
+276,D,2019/01/14 15:10:59.125,2019/01/14 15:10:59.125,74,175,Mayotte
+279,E,2019/01/14 15:12:00.544,2019/01/14 15:12:00.544,77,127,Kyrgyzstan
+282,F,2019/01/14 15:12:02.762,2019/01/14 15:12:02.762,208,243,Russia
+272,O,2019/01/14 15:12:47.769,2019/01/14 15:12:47.769,234,97,Guatemala
+273,F,2019/01/14 15:15:39.248,2019/01/14 15:15:39.248,210,242,Qatar
+284,A,2019/01/14 15:20:00.000,2019/01/14 15:20:00.000,48,78,Finland
+281,D,2019/01/14 15:20:32.679,2019/01/14 15:20:32.679,170,57,Hong Kong SAR China
+278,B,2019/01/14 15:24:07.797,2019/01/14 15:24:07.797,50,176,New Zealand
+269,G,2019/01/14 15:24:52.319,2019/01/14 15:24:52.319,120,143,United Arab Emirates
+271,O,2019/01/14 15:27:18.743,2019/01/14 15:27:18.743,220,24,Romania
+283,B,2019/01/14 15:30:14.378,2019/01/14 15:30:14.378,228,85,Djibouti
+275,M,2019/01/14 15:30:24.446,2019/01/14 15:30:24.446,64,240,Dominican Republic
+270,B,2019/01/14 15:35:20.756,2019/01/14 15:35:20.756,217,58,Iraq
+279,G,2019/01/14 15:39:29.695,2019/01/14 15:39:29.695,238,14,Philippines
+277,L,2019/01/14 15:39:30.384,2019/01/14 15:39:30.384,64,46,Angola
+285,A,2019/01/14 15:40:00.000,2019/01/14 15:40:00.000,174,242,Portugal
+276,E,2019/01/14 15:42:26.024,2019/01/14 15:42:26.024,162,231,Singapore
+273,D,2019/01/14 15:44:01.435,2019/01/14 15:44:01.435,171,58,New Caledonia
+282,D,2019/01/14 15:46:07.188,2019/01/14 15:46:07.188,31,49,South Georgia & South Sandwich Islands
+281,E,2019/01/14 15:46:08.762,2019/01/14 15:46:08.762,238,23,Swaziland
+284,B,2019/01/14 15:53:19.067,2019/01/14 15:53:19.067,34,29,Chad
+269,H,2019/01/14 15:53:47.107,2019/01/14 15:53:47.107,190,206,Hungary
+275,O,2019/01/14 15:54:28.418,2019/01/14 15:54:28.418,214,141,Northern Mariana Islands
+280,F,2019/01/14 15:56:39.919,2019/01/14 15:56:39.919,15,19,Honduras
+278,C,2019/01/14 15:56:41.947,2019/01/14 15:56:41.947,145,42,Antigua & Barbuda
+286,A,2019/01/14 16:00:00.000,2019/01/14 16:00:00.000,220,42,Nigeria
+283,C,2019/01/14 16:03:05.821,2019/01/14 16:03:05.821,205,210,Bangladesh
+270,C,2019/01/14 16:03:41.770,2019/01/14 16:03:41.770,155,187,Western Sahara
+273,E,2019/01/14 16:07:51.278,2019/01/14 16:07:51.278,10,148,Ghana
+277,M,2019/01/14 16:08:10.688,2019/01/14 16:08:10.688,191,90,Pakistan
+279,L,2019/01/14 16:08:13.859,2019/01/14 16:08:13.859,42,51,Suriname
+285,F,2019/01/14 16:09:01.370,2019/01/14 16:09:01.370,93,199,Afghanistan
+276,G,2019/01/14 16:15:13.713,2019/01/14 16:15:13.713,184,180,Portugal
+281,G,2019/01/14 16:15:40.118,2019/01/14 16:15:40.118,79,82,Liberia
+282,E,2019/01/14 16:18:09.199,2019/01/14 16:18:09.199,177,21,Tajikistan
+287,A,2019/01/14 16:20:00.000,2019/01/14 16:20:00.000,197,195,Cambodia
+278,A,2019/01/14 16:23:45.211,2019/01/14 16:23:45.211,88,155,Nepal
+280,D,2019/01/14 16:26:26.671,2019/01/14 16:26:26.671,108,245,Portugal
+283,A,2019/01/14 16:27:26.420,2019/01/14 16:27:26.420,55,93,Belgium
+284,C,2019/01/14 16:27:50.284,2019/01/14 16:27:50.284,41,202,St. Kitts & Nevis
+286,F,2019/01/14 16:28:01.465,2019/01/14 16:28:01.465,251,62,Isle of Man
+270,A,2019/01/14 16:29:55.465,2019/01/14 16:29:55.465,255,233,Malaysia
+273,G,2019/01/14 16:32:16.299,2019/01/14 16:32:16.299,35,203,Côte d'Ivoire
+277,N,2019/01/14 16:37:10.567,2019/01/14 16:37:10.567,209,172,Gabon
+279,M,2019/01/14 16:38:42.073,2019/01/14 16:38:42.073,237,246,Luxembourg
+288,A,2019/01/14 16:40:00.000,2019/01/14 16:40:00.000,136,0,Benin
+285,D,2019/01/14 16:41:47.142,2019/01/14 16:41:47.142,59,164,Grenada
+281,K,2019/01/14 16:42:58.629,2019/01/14 16:42:58.629,219,40,Belize
+287,F,2019/01/14 16:43:58.516,2019/01/14 16:43:58.516,179,86,Croatia
+276,I,2019/01/14 16:46:26.876,2019/01/14 16:46:26.876,131,238,French Guiana
+282,G,2019/01/14 16:49:48.760,2019/01/14 16:49:48.760,150,181,Senegal
+284,A,2019/01/14 16:52:31.425,2019/01/14 16:52:31.425,77,172,Afghanistan
+278,B,2019/01/14 16:55:41.961,2019/01/14 16:55:41.961,102,221,Solomon Islands
+286,D,2019/01/14 16:57:20.589,2019/01/14 16:57:20.589,143,98,Kenya
+283,B,2019/01/14 16:58:49.075,2019/01/14 16:58:49.075,35,116,Pitcairn Islands
+289,A,2019/01/14 17:00:00.000,2019/01/14 17:00:00.000,170,60,Solomon Islands
+280,E,2019/01/14 17:00:20.188,2019/01/14 17:00:20.188,59,161,Papua New Guinea
+270,B,2019/01/14 17:05:21.099,2019/01/14 17:05:21.099,154,140,Kiribati
+279,O,2019/01/14 17:05:27.643,2019/01/14 17:05:27.643,234,44,Zambia
+273,H,2019/01/14 17:05:50.686,2019/01/14 17:05:50.686,90,5,Northern Mariana Islands
+281,M,2019/01/14 17:09:41.562,2019/01/14 17:09:41.562,66,26,Congo - Brazzaville
+285,E,2019/01/14 17:11:25.665,2019/01/14 17:11:25.665,192,41,Indonesia
+288,B,2019/01/14 17:12:52.941,2019/01/14 17:12:52.941,136,103,Iraq
+276,J,2019/01/14 17:14:31.058,2019/01/14 17:14:31.058,25,122,Ireland
+290,A,2019/01/14 17:20:00.000,2019/01/14 17:20:00.000,230,68,Seychelles
+287,D,2019/01/14 17:20:33.199,2019/01/14 17:20:33.199,251,149,Cambodia
+284,B,2019/01/14 17:21:26.845,2019/01/14 17:21:26.845,232,145,Romania
+282,H,2019/01/14 17:22:06.367,2019/01/14 17:22:06.367,226,79,Albania
+278,C,2019/01/14 17:27:43.561,2019/01/14 17:27:43.561,167,59,U.S. Outlying Islands
+283,C,2019/01/14 17:28:07.380,2019/01/14 17:28:07.380,81,128,Luxembourg
+286,E,2019/01/14 17:28:14.389,2019/01/14 17:28:14.389,164,210,France
+270,C,2019/01/14 17:29:05.011,2019/01/14 17:29:05.011,158,8,Norway
+289,F,2019/01/14 17:29:32.006,2019/01/14 17:29:32.006,116,245,Sri Lanka
+280,G,2019/01/14 17:31:13.616,2019/01/14 17:31:13.616,5,186,Moldova
+285,G,2019/01/14 17:37:27.100,2019/01/14 17:37:27.100,27,22,Belarus
+281,N,2019/01/14 17:39:11.916,2019/01/14 17:39:11.916,38,136,Mauritius
+288,C,2019/01/14 17:39:52.622,2019/01/14 17:39:52.622,37,241,Wallis & Futuna
+291,A,2019/01/14 17:40:00.000,2019/01/14 17:40:00.000,22,115,Tonga
+276,L,2019/01/14 17:48:09.564,2019/01/14 17:48:09.564,102,133,Nauru
+284,C,2019/01/14 17:51:48.722,2019/01/14 17:51:48.722,213,233,Netherlands
+283,A,2019/01/14 17:55:36.046,2019/01/14 17:55:36.046,232,53,Eritrea
+290,B,2019/01/14 17:55:44.303,2019/01/14 17:55:44.303,246,134,Åland Islands
+278,A,2019/01/14 17:56:52.161,2019/01/14 17:56:52.161,97,96,Greece
+287,E,2019/01/14 17:57:33.145,2019/01/14 17:57:33.145,214,82,Cocos (Keeling) Islands
+286,G,2019/01/14 17:59:27.246,2019/01/14 17:59:27.246,112,127,Iran
+292,A,2019/01/14 18:00:00.000,2019/01/14 18:00:00.000,58,46,Falkland Islands
+270,A,2019/01/14 18:00:04.784,2019/01/14 18:00:04.784,92,226,Belgium
+289,D,2019/01/14 18:02:18.320,2019/01/14 18:02:18.320,126,236,British Virgin Islands
+280,H,2019/01/14 18:02:21.627,2019/01/14 18:02:21.627,0,100,Palau
+285,H,2019/01/14 18:07:42.925,2019/01/14 18:07:42.925,119,84,El Salvador
+288,A,2019/01/14 18:09:27.865,2019/01/14 18:09:27.865,31,86,Belgium
+291,F,2019/01/14 18:11:51.778,2019/01/14 18:11:51.778,66,224,New Caledonia
+276,M,2019/01/14 18:19:29.443,2019/01/14 18:19:29.443,196,161,Andorra
+293,A,2019/01/14 18:20:00.000,2019/01/14 18:20:00.000,151,223,Portugal
+284,A,2019/01/14 18:21:34.973,2019/01/14 18:21:34.973,66,10,Slovakia
+290,C,2019/01/14 18:21:43.279,2019/01/14 18:21:43.279,187,27,Swaziland
+278,B,2019/01/14 18:23:03.494,2019/01/14 18:23:03.494,191,203,U.S. Outlying Islands
+287,G,2019/01/14 18:27:45.452,2019/01/14 18:27:45.452,164,244,Dominica
+283,F,2019/01/14 18:28:28.463,2019/01/14 18:28:28.463,162,132,Zambia
+286,H,2019/01/14 18:28:45.786,2019/01/14 18:28:45.786,63,241,Panama
+270,B,2019/01/14 18:30:21.357,2019/01/14 18:30:21.357,121,167,Lithuania
+292,F,2019/01/14 18:31:17.727,2019/01/14 18:31:17.727,207,197,Russia
+289,E,2019/01/14 18:31:50.100,2019/01/14 18:31:50.100,108,22,Myanmar (Burma)
+294,A,2019/01/14 18:40:00.000,2019/01/14 18:40:00.000,236,234,Svalbard & Jan Mayen
+288,F,2019/01/14 18:41:48.914,2019/01/14 18:41:48.914,186,221,Bermuda
+291,D,2019/01/14 18:44:54.757,2019/01/14 18:44:54.757,22,23,Italy
+293,B,2019/01/14 18:49:14.149,2019/01/14 18:49:14.149,115,239,Moldova
+284,B,2019/01/14 18:49:58.931,2019/01/14 18:49:58.931,87,31,Spain
+290,A,2019/01/14 18:50:23.808,2019/01/14 18:50:23.808,229,167,Hong Kong SAR China
+287,H,2019/01/14 18:54:44.769,2019/01/14 18:54:44.769,156,142,Sweden
+276,N,2019/01/14 18:55:41.070,2019/01/14 18:55:41.070,10,7,Cambodia
+278,C,2019/01/14 18:56:05.067,2019/01/14 18:56:05.067,193,177,Jersey
+283,D,2019/01/14 18:57:35.988,2019/01/14 18:57:35.988,112,254,Turks & Caicos Islands
+270,C,2019/01/14 18:59:25.438,2019/01/14 18:59:25.438,211,20,Sudan
+295,A,2019/01/14 19:00:00.000,2019/01/14 19:00:00.000,67,128,Egypt
+292,D,2019/01/14 19:02:22.636,2019/01/14 19:02:22.636,22,41,Vanuatu
+289,G,2019/01/14 19:03:20.321,2019/01/14 19:03:20.321,57,105,Japan
+291,E,2019/01/14 19:12:57.547,2019/01/14 19:12:57.547,59,35,Bangladesh
+294,F,2019/01/14 19:13:21.741,2019/01/14 19:13:21.741,131,104,France
+288,D,2019/01/14 19:14:26.815,2019/01/14 19:14:26.815,43,226,Macedonia
+290,B,2019/01/14 19:19:33.618,2019/01/14 19:19:33.618,254,203,Pakistan
+293,C,2019/01/14 19:19:51.132,2019/01/14 19:19:51.132,24,142,Albania
+284,C,2019/01/14 19:22:26.002,2019/01/14 19:22:26.002,150,179,Tuvalu
+283,E,2019/01/14 19:24:46.757,2019/01/14 19:24:46.757,65,95,Equatorial Guinea
+278,A,2019/01/14 19:27:25.875,2019/01/14 19:27:25.875,95,214,Albania
+295,F,2019/01/14 19:27:35.386,2019/01/14 19:27:35.386,144,46,Iran
+292,E,2019/01/14 19:27:53.954,2019/01/14 19:27:53.954,30,232,Denmark
+270,A,2019/01/14 19:28:39.141,2019/01/14 19:28:39.141,2,15,Mayotte
+289,H,2019/01/14 19:30:55.911,2019/01/14 19:30:55.911,127,219,Canary Islands
+294,D,2019/01/14 19:38:31.687,2019/01/14 19:38:31.687,86,25,Estonia
+297,A,2019/01/14 19:40:00.000,2019/01/14 19:40:00.000,90,17,Brunei
+291,G,2019/01/14 19:44:35.091,2019/01/14 19:44:35.091,186,8,U.S. Outlying Islands
+288,E,2019/01/14 19:45:29.869,2019/01/14 19:45:29.869,236,214,Macau SAR China
+290,C,2019/01/14 19:50:17.333,2019/01/14 19:50:17.333,59,21,Antarctica
+284,A,2019/01/14 19:50:53.203,2019/01/14 19:50:53.203,43,215,Caribbean Netherlands
+293,A,2019/01/14 19:54:16.734,2019/01/14 19:54:16.734,223,220,Nicaragua
+295,D,2019/01/14 19:55:47.915,2019/01/14 19:55:47.915,56,15,American Samoa
+283,G,2019/01/14 19:55:49.989,2019/01/14 19:55:49.989,167,170,Uganda
+270,B,2019/01/14 19:58:52.504,2019/01/14 19:58:52.504,169,223,Palau
+292,G,2019/01/14 19:59:13.913,2019/01/14 19:59:13.913,40,170,Mauritania
+278,B,2019/01/14 19:59:29.999,2019/01/14 19:59:29.999,68,75,Guinea-Bissau
+298,A,2019/01/14 20:00:00.000,2019/01/14 20:00:00.000,51,107,Egypt
+297,F,2019/01/14 20:08:09.916,2019/01/14 20:08:09.916,120,132,Israel
+294,E,2019/01/14 20:10:00.201,2019/01/14 20:10:00.201,139,94,Angola
+288,G,2019/01/14 20:12:01.679,2019/01/14 20:12:01.679,242,218,North Korea
+291,I,2019/01/14 20:15:03.396,2019/01/14 20:15:03.396,136,90,Azerbaijan
+290,A,2019/01/14 20:15:51.183,2019/01/14 20:15:51.183,50,82,Jersey
+284,F,2019/01/14 20:15:53.037,2019/01/14 20:15:53.037,150,49,Guam
+299,A,2019/01/14 20:20:00.000,2019/01/14 20:20:00.000,25,191,Dominica
+298,B,2019/01/14 20:24:40.817,2019/01/14 20:24:40.817,69,221,Oman
+293,F,2019/01/14 20:25:29.330,2019/01/14 20:25:29.330,114,15,Andorra
+292,H,2019/01/14 20:26:11.365,2019/01/14 20:26:11.365,2,99,Pakistan
+270,C,2019/01/14 20:26:48.065,2019/01/14 20:26:48.065,44,148,Eritrea
+278,C,2019/01/14 20:27:44.578,2019/01/14 20:27:44.578,131,86,Grenada
+283,H,2019/01/14 20:31:33.353,2019/01/14 20:31:33.353,80,114,Suriname
+295,E,2019/01/14 20:34:01.377,2019/01/14 20:34:01.377,141,222,Uzbekistan
+300,A,2019/01/14 20:40:00.000,2019/01/14 20:40:00.000,214,167,Curaçao
+288,I,2019/01/14 20:40:37.579,2019/01/14 20:40:37.579,102,78,Gabon
+290,B,2019/01/14 20:40:59.509,2019/01/14 20:40:59.509,84,225,Hungary
+294,G,2019/01/14 20:41:04.386,2019/01/14 20:41:04.386,240,39,Sri Lanka
+291,J,2019/01/14 20:41:40.539,2019/01/14 20:41:40.539,229,76,Aruba
+284,D,2019/01/14 20:42:32.748,2019/01/14 20:42:32.748,43,50,Georgia
+297,D,2019/01/14 20:42:55.277,2019/01/14 20:42:55.277,91,191,Libya
+299,F,2019/01/14 20:49:47.493,2019/01/14 20:49:47.493,151,70,Libya
+278,A,2019/01/14 20:54:02.956,2019/01/14 20:54:02.956,31,61,Georgia
+270,A,2019/01/14 20:54:22.018,2019/01/14 20:54:22.018,62,240,Timor-Leste
+293,D,2019/01/14 20:54:22.673,2019/01/14 20:54:22.673,121,39,Seychelles
+301,A,2019/01/14 21:00:00.000,2019/01/14 21:00:00.000,215,238,Western Sahara
+298,C,2019/01/14 21:02:02.165,2019/01/14 21:02:02.165,116,179,Saudi Arabia
+295,G,2019/01/14 21:02:26.984,2019/01/14 21:02:26.984,216,107,Bermuda
+290,C,2019/01/14 21:08:30.445,2019/01/14 21:08:30.445,98,134,Botswana
+300,F,2019/01/14 21:08:32.221,2019/01/14 21:08:32.221,221,130,Sweden
+291,K,2019/01/14 21:09:49.580,2019/01/14 21:09:49.580,77,48,Montenegro
+288,J,2019/01/14 21:10:38.489,2019/01/14 21:10:38.489,254,160,South Korea
+297,E,2019/01/14 21:10:57.702,2019/01/14 21:10:57.702,59,12,Marshall Islands
+294,L,2019/01/14 21:12:33.843,2019/01/14 21:12:33.843,82,167,Congo - Kinshasa
+284,E,2019/01/14 21:13:24.163,2019/01/14 21:13:24.163,46,167,Macedonia
+299,D,2019/01/14 21:17:21.471,2019/01/14 21:17:21.471,100,58,Ascension Island
+302,A,2019/01/14 21:20:00.000,2019/01/14 21:20:00.000,204,63,Swaziland
+296,F,2019/01/14 21:20:22.068,2019/01/14 21:20:22.068,113,214,Solomon Islands
+278,F,2019/01/14 21:21:28.389,2019/01/14 21:21:28.389,8,90,Mongolia
+293,E,2019/01/14 21:26:00.313,2019/01/14 21:26:00.313,214,40,Yemen
+270,F,2019/01/14 21:27:31.781,2019/01/14 21:27:31.781,51,171,American Samoa
+301,F,2019/01/14 21:29:48.294,2019/01/14 21:29:48.294,118,101,Christmas Island
+298,A,2019/01/14 21:33:36.884,2019/01/14 21:33:36.884,28,24,Jersey
+290,A,2019/01/14 21:36:21.963,2019/01/14 21:36:21.963,157,225,Congo - Brazzaville
+303,A,2019/01/14 21:40:00.000,2019/01/14 21:40:00.000,187,166,Sweden
+291,M,2019/01/14 21:42:04.974,2019/01/14 21:42:04.974,154,153,Solomon Islands
+300,D,2019/01/14 21:42:11.072,2019/01/14 21:42:11.072,176,154,Algeria
+297,G,2019/01/14 21:42:30.142,2019/01/14 21:42:30.142,233,100,Bermuda
+294,M,2019/01/14 21:42:37.168,2019/01/14 21:42:37.168,84,117,Burkina Faso
+284,G,2019/01/14 21:43:10.420,2019/01/14 21:43:10.420,202,190,St. Martin
+288,L,2019/01/14 21:46:24.115,2019/01/14 21:46:24.115,236,192,Northern Mariana Islands
+302,B,2019/01/14 21:48:27.537,2019/01/14 21:48:27.537,50,73,Palau
+278,D,2019/01/14 21:51:09.514,2019/01/14 21:51:09.514,90,136,Ethiopia
+299,E,2019/01/14 21:51:39.925,2019/01/14 21:51:39.925,0,238,U.S. Virgin Islands
+296,D,2019/01/14 21:51:45.501,2019/01/14 21:51:45.501,113,248,Tristan da Cunha
+293,G,2019/01/14 21:54:12.807,2019/01/14 21:54:12.807,51,87,South Korea
+270,D,2019/01/14 21:56:06.984,2019/01/14 21:56:06.984,12,119,South Georgia & South Sandwich Islands
+301,D,2019/01/14 21:58:56.804,2019/01/14 21:58:56.804,170,191,Botswana
+304,A,2019/01/14 22:00:00.000,2019/01/14 22:00:00.000,230,84,Martinique
+298,B,2019/01/14 22:01:59.838,2019/01/14 22:01:59.838,44,206,Pakistan
+291,N,2019/01/14 22:05:32.866,2019/01/14 22:05:32.866,130,17,Spain
+290,B,2019/01/14 22:05:56.101,2019/01/14 22:05:56.101,179,179,Bolivia
+300,E,2019/01/14 22:08:28.916,2019/01/14 22:08:28.916,234,152,Panama
+303,B,2019/01/14 22:11:23.899,2019/01/14 22:11:23.899,103,149,Bahamas
+284,K,2019/01/14 22:13:01.115,2019/01/14 22:13:01.115,181,67,Comoros
+294,O,2019/01/14 22:13:33.553,2019/01/14 22:13:33.553,243,63,Saudi Arabia
+297,I,2019/01/14 22:15:18.865,2019/01/14 22:15:18.865,116,158,Equatorial Guinea
+296,E,2019/01/14 22:16:24.453,2019/01/14 22:16:24.453,38,171,Vietnam
+302,C,2019/01/14 22:16:43.771,2019/01/14 22:16:43.771,11,138,Maldives
+278,E,2019/01/14 22:18:38.506,2019/01/14 22:18:38.506,64,20,Taiwan
+288,M,2019/01/14 22:19:21.014,2019/01/14 22:19:21.014,217,180,Namibia
+299,G,2019/01/14 22:20:16.970,2019/01/14 22:20:16.970,74,81,Mayotte
+293,I,2019/01/14 22:22:54.142,2019/01/14 22:22:54.142,68,201,French Guiana
+301,E,2019/01/14 22:23:35.349,2019/01/14 22:23:35.349,166,194,Kiribati
+304,B,2019/01/14 22:24:43.776,2019/01/14 22:24:43.776,198,219,Belize
+270,E,2019/01/14 22:25:50.113,2019/01/14 22:25:50.113,199,95,Norfolk Island
+298,C,2019/01/14 22:31:05.507,2019/01/14 22:31:05.507,55,44,Switzerland
+300,G,2019/01/14 22:34:44.793,2019/01/14 22:34:44.793,118,47,Curaçao
+290,C,2019/01/14 22:37:31.999,2019/01/14 22:37:31.999,215,206,United States
+284,M,2019/01/14 22:38:46.320,2019/01/14 22:38:46.320,118,201,Mayotte
+303,C,2019/01/14 22:39:52.762,2019/01/14 22:39:52.762,47,231,Ethiopia
+306,A,2019/01/14 22:40:00.000,2019/01/14 22:40:00.000,161,227,Kosovo
+297,J,2019/01/14 22:42:13.000,2019/01/14 22:42:13.000,144,86,Thailand
+296,G,2019/01/14 22:44:00.401,2019/01/14 22:44:00.401,248,248,New Zealand
+302,A,2019/01/14 22:46:05.949,2019/01/14 22:46:05.949,31,97,Tonga
+278,G,2019/01/14 22:47:51.721,2019/01/14 22:47:51.721,86,204,Haiti
+288,N,2019/01/14 22:49:10.196,2019/01/14 22:49:10.196,48,252,South Korea
+299,H,2019/01/14 22:49:45.334,2019/01/14 22:49:45.334,108,69,Senegal
+298,A,2019/01/14 22:51:06.594,2019/01/14 22:51:06.594,232,118,Suriname
+304,C,2019/01/14 22:51:41.340,2019/01/14 22:51:41.340,220,33,Suriname
+301,G,2019/01/14 22:51:44.569,2019/01/14 22:51:44.569,131,97,Moldova
+293,J,2019/01/14 22:53:01.259,2019/01/14 22:53:01.259,158,62,British Virgin Islands
+270,G,2019/01/14 22:55:19.804,2019/01/14 22:55:19.804,130,198,U.S. Virgin Islands
+307,A,2019/01/14 23:00:00.000,2019/01/14 23:00:00.000,147,75,Mauritius
+303,A,2019/01/14 23:03:41.254,2019/01/14 23:03:41.254,180,76,Georgia
+290,A,2019/01/14 23:04:37.522,2019/01/14 23:04:37.522,181,47,Iran
+297,L,2019/01/14 23:07:18.796,2019/01/14 23:07:18.796,92,88,United Kingdom
+300,H,2019/01/14 23:10:16.176,2019/01/14 23:10:16.176,163,24,British Indian Ocean Territory
+284,N,2019/01/14 23:11:17.370,2019/01/14 23:11:17.370,9,117,Ascension Island
+306,F,2019/01/14 23:12:26.019,2019/01/14 23:12:26.019,149,95,Liberia
+296,H,2019/01/14 23:16:09.641,2019/01/14 23:16:09.641,63,139,Ireland
+298,F,2019/01/14 23:16:31.655,2019/01/14 23:16:31.655,242,217,Malaysia
+278,I,2019/01/14 23:16:31.792,2019/01/14 23:16:31.792,57,150,New Zealand
+302,B,2019/01/14 23:19:49.553,2019/01/14 23:19:49.553,178,70,Samoa
+308,A,2019/01/14 23:20:00.000,2019/01/14 23:20:00.000,8,141,Niger
+304,A,2019/01/14 23:21:20.992,2019/01/14 23:21:20.992,234,200,Belize
+270,H,2019/01/14 23:22:08.370,2019/01/14 23:22:08.370,74,29,Bulgaria
+301,H,2019/01/14 23:22:11.043,2019/01/14 23:22:11.043,52,108,Seychelles
+293,K,2019/01/14 23:28:25.453,2019/01/14 23:28:25.453,153,244,Antarctica
+307,F,2019/01/14 23:28:27.394,2019/01/14 23:28:27.394,74,115,Turkey
+297,M,2019/01/14 23:32:31.080,2019/01/14 23:32:31.080,177,69,Palau
+290,B,2019/01/14 23:33:22.903,2019/01/14 23:33:22.903,117,229,Romania
+303,F,2019/01/14 23:34:58.230,2019/01/14 23:34:58.230,224,84,Western Sahara
+309,A,2019/01/14 23:40:00.000,2019/01/14 23:40:00.000,119,111,Turks & Caicos Islands
+298,D,2019/01/14 23:43:25.322,2019/01/14 23:43:25.322,235,21,Seychelles
+306,D,2019/01/14 23:43:30.705,2019/01/14 23:43:30.705,77,44,Thailand
+278,J,2019/01/14 23:47:54.387,2019/01/14 23:47:54.387,84,60,Anguilla
+304,B,2019/01/14 23:50:17.897,2019/01/14 23:50:17.897,9,80,New Zealand
+308,F,2019/01/14 23:52:25.692,2019/01/14 23:52:25.692,199,109,Pitcairn Islands
+293,M,2019/01/14 23:53:02.129,2019/01/14 23:53:02.129,100,78,Bangladesh
+302,C,2019/01/14 23:53:17.321,2019/01/14 23:53:17.321,52,48,Montenegro
+307,D,2019/01/14 23:56:42.355,2019/01/14 23:56:42.355,242,191,Cuba
+310,A,2019/01/15 00:00:00.000,2019/01/15 00:00:00.000,77,220,Nigeria
+290,C,2019/01/15 00:03:34.800,2019/01/15 00:03:34.800,111,244,Czech Republic
+297,N,2019/01/15 00:05:43.048,2019/01/15 00:05:43.048,115,184,Brunei
+309,B,2019/01/15 00:06:52.880,2019/01/15 00:06:52.880,14,51,Vatican City
+298,E,2019/01/15 00:10:09.114,2019/01/15 00:10:09.114,234,65,Botswana
+303,D,2019/01/15 00:10:21.954,2019/01/15 00:10:21.954,163,40,Western Sahara
+278,L,2019/01/15 00:13:39.180,2019/01/15 00:13:39.180,22,91,United Kingdom
+306,E,2019/01/15 00:14:20.159,2019/01/15 00:14:20.159,92,186,Bangladesh
+293,O,2019/01/15 00:18:00.526,2019/01/15 00:18:00.526,170,107,Grenada
+305,F,2019/01/15 00:18:38.050,2019/01/15 00:18:38.050,85,131,Singapore
+311,A,2019/01/15 00:20:00.000,2019/01/15 00:20:00.000,154,184,Angola
+304,C,2019/01/15 00:21:10.653,2019/01/15 00:21:10.653,69,132,Eritrea
+310,F,2019/01/15 00:23:28.620,2019/01/15 00:23:28.620,159,149,Anguilla
+308,D,2019/01/15 00:25:43.750,2019/01/15 00:25:43.750,85,64,Germany
+302,A,2019/01/15 00:26:47.376,2019/01/15 00:26:47.376,32,38,British Virgin Islands
+307,E,2019/01/15 00:30:47.912,2019/01/15 00:30:47.912,155,170,Kiribati
+290,A,2019/01/15 00:33:59.193,2019/01/15 00:33:59.193,155,167,Grenada
+309,C,2019/01/15 00:38:24.558,2019/01/15 00:38:24.558,155,118,Micronesia
+312,A,2019/01/15 00:40:00.000,2019/01/15 00:40:00.000,183,168,Luxembourg
+306,G,2019/01/15 00:41:19.562,2019/01/15 00:41:19.562,138,68,Serbia
+303,E,2019/01/15 00:43:37.030,2019/01/15 00:43:37.030,207,155,Luxembourg
+298,G,2019/01/15 00:44:24.372,2019/01/15 00:44:24.372,131,155,Serbia
+305,D,2019/01/15 00:46:40.973,2019/01/15 00:46:40.973,36,59,Guadeloupe
+278,M,2019/01/15 00:48:47.881,2019/01/15 00:48:47.881,39,119,Canary Islands
+311,F,2019/01/15 00:48:59.600,2019/01/15 00:48:59.600,223,193,Canary Islands
+308,E,2019/01/15 00:50:23.180,2019/01/15 00:50:23.180,8,178,Liberia
+304,A,2019/01/15 00:51:12.695,2019/01/15 00:51:12.695,197,105,Ireland
+310,D,2019/01/15 00:53:01.287,2019/01/15 00:53:01.287,27,163,Australia
+302,B,2019/01/15 00:56:30.652,2019/01/15 00:56:30.652,15,184,Laos
+307,G,2019/01/15 00:58:53.550,2019/01/15 00:58:53.550,153,200,U.S. Virgin Islands
+290,F,2019/01/15 01:04:47.410,2019/01/15 01:04:47.410,74,80,British Indian Ocean Territory
+309,A,2019/01/15 01:08:35.189,2019/01/15 01:08:35.189,243,221,Palau
+306,L,2019/01/15 01:10:58.161,2019/01/15 01:10:58.161,255,155,Bangladesh
+312,B,2019/01/15 01:11:12.944,2019/01/15 01:11:12.944,221,118,Burkina Faso
+305,E,2019/01/15 01:13:15.293,2019/01/15 01:13:15.293,7,199,Bolivia
+303,G,2019/01/15 01:14:57.821,2019/01/15 01:14:57.821,212,37,Qatar
+308,G,2019/01/15 01:15:23.352,2019/01/15 01:15:23.352,130,139,Gambia
+298,H,2019/01/15 01:15:57.044,2019/01/15 01:15:57.044,109,1,Ukraine
+311,D,2019/01/15 01:18:12.257,2019/01/15 01:18:12.257,219,99,Jamaica
+278,O,2019/01/15 01:19:14.311,2019/01/15 01:19:14.311,109,162,Luxembourg
+314,A,2019/01/15 01:20:00.000,2019/01/15 01:20:00.000,26,93,Sweden
+310,E,2019/01/15 01:20:16.562,2019/01/15 01:20:16.562,91,37,Mayotte
+304,F,2019/01/15 01:21:09.831,2019/01/15 01:21:09.831,113,143,Aruba
+302,C,2019/01/15 01:24:46.665,2019/01/15 01:24:46.665,90,129,Iceland
+307,I,2019/01/15 01:29:22.087,2019/01/15 01:29:22.087,20,132,Uzbekistan
+290,D,2019/01/15 01:34:53.480,2019/01/15 01:34:53.480,96,242,Sweden
+315,A,2019/01/15 01:40:00.000,2019/01/15 01:40:00.000,208,65,Namibia
+309,B,2019/01/15 01:40:14.758,2019/01/15 01:40:14.758,147,232,São Tomé and Príncipe
+312,C,2019/01/15 01:40:54.182,2019/01/15 01:40:54.182,169,112,Greece
+305,G,2019/01/15 01:43:39.400,2019/01/15 01:43:39.400,217,209,Papua New Guinea
+308,L,2019/01/15 01:44:47.279,2019/01/15 01:44:47.279,61,112,Botswana
+303,H,2019/01/15 01:46:34.110,2019/01/15 01:46:34.110,48,176,Isle of Man
+306,M,2019/01/15 01:46:55.261,2019/01/15 01:46:55.261,152,236,Turkey
+302,A,2019/01/15 01:49:55.926,2019/01/15 01:49:55.926,197,198,Mozambique
+314,F,2019/01/15 01:50:32.228,2019/01/15 01:50:32.228,75,55,Canary Islands
+310,G,2019/01/15 01:51:13.716,2019/01/15 01:51:13.716,221,255,Vatican City
+304,D,2019/01/15 01:52:58.472,2019/01/15 01:52:58.472,56,176,Puerto Rico
+307,J,2019/01/15 01:56:25.574,2019/01/15 01:56:25.574,9,26,Macedonia
+316,A,2019/01/15 02:00:00.000,2019/01/15 02:00:00.000,186,108,Guyana
+290,E,2019/01/15 02:02:55.855,2019/01/15 02:02:55.855,255,127,Slovenia
+315,F,2019/01/15 02:09:28.135,2019/01/15 02:09:28.135,51,128,Tanzania
+309,C,2019/01/15 02:10:26.861,2019/01/15 02:10:26.861,177,89,British Indian Ocean Territory
+306,O,2019/01/15 02:13:58.002,2019/01/15 02:13:58.002,117,140,Kyrgyzstan
+312,A,2019/01/15 02:14:19.021,2019/01/15 02:14:19.021,81,89,Thailand
+305,H,2019/01/15 02:14:40.658,2019/01/15 02:14:40.658,185,63,Bulgaria
+302,B,2019/01/15 02:16:40.777,2019/01/15 02:16:40.777,62,200,Poland
+308,M,2019/01/15 02:16:55.550,2019/01/15 02:16:55.550,149,64,Congo - Brazzaville
+310,I,2019/01/15 02:19:06.858,2019/01/15 02:19:06.858,203,73,Cyprus
+317,A,2019/01/15 02:20:00.000,2019/01/15 02:20:00.000,32,126,Libya
+314,D,2019/01/15 02:21:53.032,2019/01/15 02:21:53.032,55,204,Eritrea
+307,L,2019/01/15 02:22:43.966,2019/01/15 02:22:43.966,13,76,Mauritania
+304,E,2019/01/15 02:26:05.545,2019/01/15 02:26:05.545,79,175,Philippines
+290,G,2019/01/15 02:30:54.904,2019/01/15 02:30:54.904,175,39,Norfolk Island
+316,F,2019/01/15 02:31:34.153,2019/01/15 02:31:34.153,59,22,Antarctica
+309,A,2019/01/15 02:38:05.664,2019/01/15 02:38:05.664,66,121,Tonga
+315,D,2019/01/15 02:39:55.455,2019/01/15 02:39:55.455,24,169,Iceland
+318,A,2019/01/15 02:40:00.000,2019/01/15 02:40:00.000,254,148,Albania
+308,O,2019/01/15 02:43:51.050,2019/01/15 02:43:51.050,118,18,St. Martin
+312,F,2019/01/15 02:45:08.114,2019/01/15 02:45:08.114,161,71,Bolivia
+317,B,2019/01/15 02:46:00.540,2019/01/15 02:46:00.540,78,127,Central African Republic
+302,C,2019/01/15 02:48:16.508,2019/01/15 02:48:16.508,55,10,Guinea-Bissau
+310,J,2019/01/15 02:51:03.266,2019/01/15 02:51:03.266,39,225,Sierra Leone
+314,E,2019/01/15 02:53:42.836,2019/01/15 02:53:42.836,114,201,Iceland
+307,M,2019/01/15 02:53:49.803,2019/01/15 02:53:49.803,236,9,French Southern Territories
+316,D,2019/01/15 02:57:28.948,2019/01/15 02:57:28.948,184,37,Uzbekistan
+290,I,2019/01/15 02:57:56.259,2019/01/15 02:57:56.259,5,200,Hungary
+313,G,2019/01/15 02:58:46.517,2019/01/15 02:58:46.517,172,111,Trinidad & Tobago
+304,G,2019/01/15 02:59:34.555,2019/01/15 02:59:34.555,233,17,Central African Republic
+319,A,2019/01/15 03:00:00.000,2019/01/15 03:00:00.000,146,92,Puerto Rico
+315,E,2019/01/15 03:05:34.659,2019/01/15 03:05:34.659,90,112,Morocco
+309,F,2019/01/15 03:08:49.936,2019/01/15 03:08:49.936,192,199,Macedonia
+318,F,2019/01/15 03:12:05.336,2019/01/15 03:12:05.336,102,148,Greenland
+317,C,2019/01/15 03:15:10.048,2019/01/15 03:15:10.048,117,46,Guernsey
+312,D,2019/01/15 03:15:16.428,2019/01/15 03:15:16.428,105,9,Venezuela
+302,A,2019/01/15 03:19:08.657,2019/01/15 03:19:08.657,226,106,India
+310,L,2019/01/15 03:19:48.535,2019/01/15 03:19:48.535,250,151,Azerbaijan
+320,A,2019/01/15 03:20:00.000,2019/01/15 03:20:00.000,80,233,Vanuatu
+314,G,2019/01/15 03:20:58.982,2019/01/15 03:20:58.982,123,235,Chad
+307,N,2019/01/15 03:22:36.136,2019/01/15 03:22:36.136,250,165,Nicaragua
+304,H,2019/01/15 03:26:06.040,2019/01/15 03:26:06.040,84,212,Bosnia & Herzegovina
+313,L,2019/01/15 03:26:38.467,2019/01/15 03:26:38.467,233,108,Bahamas
+290,J,2019/01/15 03:28:30.738,2019/01/15 03:28:30.738,169,206,Panama
+319,F,2019/01/15 03:29:08.226,2019/01/15 03:29:08.226,95,139,Caribbean Netherlands
+315,G,2019/01/15 03:35:18.607,2019/01/15 03:35:18.607,207,36,San Marino
+321,A,2019/01/15 03:40:00.000,2019/01/15 03:40:00.000,251,73,Madagascar
+309,D,2019/01/15 03:41:04.287,2019/01/15 03:41:04.287,26,43,Jamaica
+312,E,2019/01/15 03:45:58.444,2019/01/15 03:45:58.444,119,217,Kenya
+320,F,2019/01/15 03:46:06.366,2019/01/15 03:46:06.366,33,73,Mauritania
+318,D,2019/01/15 03:46:27.308,2019/01/15 03:46:27.308,60,138,Slovakia
+317,A,2019/01/15 03:48:42.873,2019/01/15 03:48:42.873,13,183,Madagascar
+302,F,2019/01/15 03:50:21.118,2019/01/15 03:50:21.118,201,245,Algeria
+310,M,2019/01/15 03:50:50.165,2019/01/15 03:50:50.165,84,17,Equatorial Guinea
+313,M,2019/01/15 03:51:26.705,2019/01/15 03:51:26.705,86,9,Burkina Faso
+314,H,2019/01/15 03:53:27.039,2019/01/15 03:53:27.039,247,220,Azerbaijan
+290,L,2019/01/15 03:54:04.853,2019/01/15 03:54:04.853,190,156,Vatican City
+319,D,2019/01/15 03:57:29.899,2019/01/15 03:57:29.899,87,105,Wallis & Futuna
+322,A,2019/01/15 04:00:00.000,2019/01/15 04:00:00.000,175,11,Mali
+315,K,2019/01/15 04:10:40.661,2019/01/15 04:10:40.661,150,42,Ascension Island
+312,G,2019/01/15 04:11:13.233,2019/01/15 04:11:13.233,27,12,Pakistan
+309,E,2019/01/15 04:12:36.273,2019/01/15 04:12:36.273,33,71,Syria
+317,B,2019/01/15 04:14:06.049,2019/01/15 04:14:06.049,129,248,Kuwait
+321,F,2019/01/15 04:14:52.729,2019/01/15 04:14:52.729,73,96,Slovakia
+302,D,2019/01/15 04:16:29.549,2019/01/15 04:16:29.549,26,87,Niger
+320,D,2019/01/15 04:17:38.113,2019/01/15 04:17:38.113,108,69,Zimbabwe
+310,O,2019/01/15 04:18:56.851,2019/01/15 04:18:56.851,103,21,Puerto Rico
+323,A,2019/01/15 04:20:00.000,2019/01/15 04:20:00.000,190,91,Ascension Island
+290,M,2019/01/15 04:20:41.993,2019/01/15 04:20:41.993,225,217,South Sudan
+318,E,2019/01/15 04:24:09.901,2019/01/15 04:24:09.901,46,221,Central African Republic
+313,O,2019/01/15 04:24:20.601,2019/01/15 04:24:20.601,119,247,Rwanda
+319,E,2019/01/15 04:26:38.279,2019/01/15 04:26:38.279,99,89,Iceland
+322,F,2019/01/15 04:33:03.199,2019/01/15 04:33:03.199,253,243,Eritrea
+315,M,2019/01/15 04:38:13.346,2019/01/15 04:38:13.346,106,164,Finland
+309,G,2019/01/15 04:39:05.113,2019/01/15 04:39:05.113,126,38,Djibouti
+312,I,2019/01/15 04:39:17.011,2019/01/15 04:39:17.011,145,46,Solomon Islands
+324,A,2019/01/15 04:40:00.000,2019/01/15 04:40:00.000,2,126,Ascension Island
+317,C,2019/01/15 04:41:43.757,2019/01/15 04:41:43.757,198,48,Moldova
+320,E,2019/01/15 04:43:07.428,2019/01/15 04:43:07.428,225,187,Mozambique
+321,D,2019/01/15 04:44:55.507,2019/01/15 04:44:55.507,51,248,American Samoa
+302,E,2019/01/15 04:50:52.795,2019/01/15 04:50:52.795,138,150,Lithuania
+290,N,2019/01/15 04:52:26.787,2019/01/15 04:52:26.787,63,59,Marshall Islands
+319,G,2019/01/15 04:52:27.402,2019/01/15 04:52:27.402,231,60,Syria
+323,F,2019/01/15 04:52:57.061,2019/01/15 04:52:57.061,197,52,Israel
+318,G,2019/01/15 04:57:42.104,2019/01/15 04:57:42.104,136,80,Armenia
+325,A,2019/01/15 05:00:00.000,2019/01/15 05:00:00.000,208,239,Kosovo
+309,H,2019/01/15 05:02:47.532,2019/01/15 05:02:47.532,196,85,Trinidad & Tobago
+322,D,2019/01/15 05:03:19.123,2019/01/15 05:03:19.123,164,28,Dominican Republic
+324,F,2019/01/15 05:06:40.680,2019/01/15 05:06:40.680,124,33,Estonia
+312,J,2019/01/15 05:09:52.355,2019/01/15 05:09:52.355,9,245,Oman
+315,N,2019/01/15 05:10:12.290,2019/01/15 05:10:12.290,216,23,Laos
+302,G,2019/01/15 05:13:19.478,2019/01/15 05:13:19.478,71,237,Norway
+317,A,2019/01/15 05:13:25.544,2019/01/15 05:13:25.544,181,109,Kosovo
+320,G,2019/01/15 05:14:24.147,2019/01/15 05:14:24.147,2,27,Timor-Leste
+321,E,2019/01/15 05:17:22.307,2019/01/15 05:17:22.307,128,18,British Indian Ocean Territory
+323,D,2019/01/15 05:24:22.612,2019/01/15 05:24:22.612,181,162,Nigeria
+318,K,2019/01/15 05:24:54.714,2019/01/15 05:24:54.714,211,76,Greece
+319,H,2019/01/15 05:26:34.705,2019/01/15 05:26:34.705,46,31,Iceland
+325,B,2019/01/15 05:28:41.455,2019/01/15 05:28:41.455,16,64,Western Sahara
+322,E,2019/01/15 05:39:30.941,2019/01/15 05:39:30.941,178,132,Austria
+327,A,2019/01/15 05:40:00.000,2019/01/15 05:40:00.000,87,128,San Marino
+324,D,2019/01/15 05:40:01.191,2019/01/15 05:40:01.191,89,63,U.S. Outlying Islands
+312,K,2019/01/15 05:44:35.601,2019/01/15 05:44:35.601,117,195,Montenegro
+302,K,2019/01/15 05:44:50.583,2019/01/15 05:44:50.583,43,44,Syria
+317,B,2019/01/15 05:45:59.142,2019/01/15 05:45:59.142,120,209,Faroe Islands
+320,K,2019/01/15 05:46:06.348,2019/01/15 05:46:06.348,216,113,Togo
+321,G,2019/01/15 05:47:28.112,2019/01/15 05:47:28.112,32,25,French Southern Territories
+323,E,2019/01/15 05:50:41.792,2019/01/15 05:50:41.792,144,143,Taiwan
+318,M,2019/01/15 05:57:45.185,2019/01/15 05:57:45.185,155,196,British Indian Ocean Territory
+325,C,2019/01/15 06:02:31.363,2019/01/15 06:02:31.363,139,152,Estonia
+312,M,2019/01/15 06:07:56.404,2019/01/15 06:07:56.404,207,233,St. Vincent & Grenadines
+327,B,2019/01/15 06:10:20.189,2019/01/15 06:10:20.189,219,39,Croatia
+324,E,2019/01/15 06:10:25.141,2019/01/15 06:10:25.141,131,137,Azerbaijan
+322,G,2019/01/15 06:11:39.898,2019/01/15 06:11:39.898,75,168,Panama
+302,M,2019/01/15 06:12:29.692,2019/01/15 06:12:29.692,121,207,Isle of Man
+317,C,2019/01/15 06:13:11.911,2019/01/15 06:13:11.911,87,22,Afghanistan
+321,L,2019/01/15 06:19:04.929,2019/01/15 06:19:04.929,168,104,Albania
+329,A,2019/01/15 06:20:00.000,2019/01/15 06:20:00.000,59,28,Belize
+320,M,2019/01/15 06:22:54.495,2019/01/15 06:22:54.495,157,83,Seychelles
+318,O,2019/01/15 06:24:48.256,2019/01/15 06:24:48.256,63,94,Belize
+323,G,2019/01/15 06:27:55.075,2019/01/15 06:27:55.075,13,202,Bangladesh
+325,A,2019/01/15 06:34:56.734,2019/01/15 06:34:56.734,48,24,Turkmenistan
+312,N,2019/01/15 06:38:18.637,2019/01/15 06:38:18.637,127,83,Qatar
+317,A,2019/01/15 06:40:20.653,2019/01/15 06:40:20.653,6,157,Azerbaijan
+302,O,2019/01/15 06:40:58.028,2019/01/15 06:40:58.028,7,241,Singapore
+327,C,2019/01/15 06:42:37.036,2019/01/15 06:42:37.036,35,148,Gambia
+322,H,2019/01/15 06:44:23.877,2019/01/15 06:44:23.877,62,218,Switzerland
+321,M,2019/01/15 06:47:35.034,2019/01/15 06:47:35.034,161,198,Svalbard & Jan Mayen
+329,F,2019/01/15 06:52:51.238,2019/01/15 06:52:51.238,12,1,Greece
+320,N,2019/01/15 06:57:02.217,2019/01/15 06:57:02.217,38,254,St. Martin
+325,B,2019/01/15 06:58:23.389,2019/01/15 06:58:23.389,218,161,Japan
+331,A,2019/01/15 07:00:00.000,2019/01/15 07:00:00.000,16,88,Rwanda
+317,B,2019/01/15 07:14:43.405,2019/01/15 07:14:43.405,159,42,Algeria
+327,A,2019/01/15 07:15:47.190,2019/01/15 07:15:47.190,191,161,Georgia
+332,A,2019/01/15 07:20:00.000,2019/01/15 07:20:00.000,188,254,Guernsey
+321,O,2019/01/15 07:21:17.418,2019/01/15 07:21:17.418,197,107,Greece
+329,D,2019/01/15 07:27:54.165,2019/01/15 07:27:54.165,108,3,Spain
+331,F,2019/01/15 07:28:28.586,2019/01/15 07:28:28.586,211,167,Tristan da Cunha
+325,C,2019/01/15 07:28:48.538,2019/01/15 07:28:48.538,197,126,Bolivia
+333,A,2019/01/15 07:40:00.000,2019/01/15 07:40:00.000,3,241,Norway
+327,F,2019/01/15 07:44:51.335,2019/01/15 07:44:51.335,248,153,Peru
+317,C,2019/01/15 07:46:08.161,2019/01/15 07:46:08.161,2,114,Diego Garcia
+332,F,2019/01/15 07:46:27.583,2019/01/15 07:46:27.583,51,189,Benin
+326,I,2019/01/15 07:49:56.210,2019/01/15 07:49:56.210,28,184,St. Pierre & Miquelon
+331,D,2019/01/15 07:57:26.435,2019/01/15 07:57:26.435,138,134,Congo - Brazzaville
+329,E,2019/01/15 07:58:29.718,2019/01/15 07:58:29.718,96,238,Cambodia
+325,A,2019/01/15 07:58:53.931,2019/01/15 07:58:53.931,234,209,Netherlands
+334,A,2019/01/15 08:00:00.000,2019/01/15 08:00:00.000,182,22,Gabon
+333,F,2019/01/15 08:08:22.555,2019/01/15 08:08:22.555,42,50,Tristan da Cunha
+327,D,2019/01/15 08:16:17.844,2019/01/15 08:16:17.844,34,125,Brazil
+332,D,2019/01/15 08:18:16.501,2019/01/15 08:18:16.501,87,110,St. Martin
+335,A,2019/01/15 08:20:00.000,2019/01/15 08:20:00.000,89,110,Australia
+317,A,2019/01/15 08:20:30.162,2019/01/15 08:20:30.162,74,226,Anguilla
+331,E,2019/01/15 08:24:13.860,2019/01/15 08:24:13.860,205,130,Angola
+326,J,2019/01/15 08:25:23.941,2019/01/15 08:25:23.941,77,15,Chad
+325,B,2019/01/15 08:25:56.558,2019/01/15 08:25:56.558,59,188,Montenegro
+329,G,2019/01/15 08:30:50.440,2019/01/15 08:30:50.440,255,10,Bangladesh
+334,F,2019/01/15 08:35:16.440,2019/01/15 08:35:16.440,44,119,Curaçao
+336,A,2019/01/15 08:40:00.000,2019/01/15 08:40:00.000,16,54,Sweden
+327,E,2019/01/15 08:42:27.707,2019/01/15 08:42:27.707,206,247,Greece
+333,D,2019/01/15 08:42:31.449,2019/01/15 08:42:31.449,121,61,São Tomé and Príncipe
+317,B,2019/01/15 08:49:29.104,2019/01/15 08:49:29.104,250,95,Monaco
+332,E,2019/01/15 08:53:09.411,2019/01/15 08:53:09.411,229,19,San Marino
+325,C,2019/01/15 08:53:26.394,2019/01/15 08:53:26.394,95,152,Cook Islands
+335,B,2019/01/15 08:54:11.696,2019/01/15 08:54:11.696,28,227,Djibouti
+326,K,2019/01/15 08:55:33.969,2019/01/15 08:55:33.969,47,102,Taiwan
+329,L,2019/01/15 08:58:02.450,2019/01/15 08:58:02.450,26,24,Ecuador
+337,A,2019/01/15 09:00:00.000,2019/01/15 09:00:00.000,117,226,Thailand
+336,F,2019/01/15 09:04:16.113,2019/01/15 09:04:16.113,75,25,Uganda
+334,D,2019/01/15 09:06:30.347,2019/01/15 09:06:30.347,255,148,Greenland
+333,E,2019/01/15 09:10:23.792,2019/01/15 09:10:23.792,42,129,Uruguay
+327,G,2019/01/15 09:11:07.768,2019/01/15 09:11:07.768,205,182,Dominican Republic
+325,A,2019/01/15 09:19:09.181,2019/01/15 09:19:09.181,236,162,British Virgin Islands
+338,A,2019/01/15 09:20:00.000,2019/01/15 09:20:00.000,172,8,Kazakhstan
+326,M,2019/01/15 09:21:44.815,2019/01/15 09:21:44.815,28,66,Antarctica
+332,G,2019/01/15 09:23:21.698,2019/01/15 09:23:21.698,110,169,Sudan
+317,C,2019/01/15 09:23:50.147,2019/01/15 09:23:50.147,100,168,Panama
+335,C,2019/01/15 09:24:47.131,2019/01/15 09:24:47.131,195,51,Belgium
+337,F,2019/01/15 09:26:46.308,2019/01/15 09:26:46.308,25,41,Estonia
+329,M,2019/01/15 09:27:24.641,2019/01/15 09:27:24.641,64,77,North Korea
+336,D,2019/01/15 09:32:40.095,2019/01/15 09:32:40.095,50,236,Mauritius
+330,E,2019/01/15 09:34:06.989,2019/01/15 09:34:06.989,21,3,Haiti
+334,E,2019/01/15 09:37:57.670,2019/01/15 09:37:57.670,247,144,Indonesia
+339,A,2019/01/15 09:40:00.000,2019/01/15 09:40:00.000,91,111,China
+327,I,2019/01/15 09:45:51.466,2019/01/15 09:45:51.466,154,56,Bangladesh
+326,O,2019/01/15 09:49:02.342,2019/01/15 09:49:02.342,17,249,Greenland
+328,C,2019/01/15 09:50:22.128,2019/01/15 09:50:22.128,233,6,American Samoa
+317,A,2019/01/15 09:51:03.402,2019/01/15 09:51:03.402,138,214,Antarctica
+338,F,2019/01/15 09:51:06.006,2019/01/15 09:51:06.006,226,180,Belarus
+332,H,2019/01/15 09:51:08.271,2019/01/15 09:51:08.271,129,15,Switzerland
+325,B,2019/01/15 09:51:17.514,2019/01/15 09:51:17.514,47,63,American Samoa
+329,N,2019/01/15 09:56:51.371,2019/01/15 09:56:51.371,225,209,Grenada
+335,A,2019/01/15 09:56:51.964,2019/01/15 09:56:51.964,223,81,Namibia
+337,D,2019/01/15 09:58:09.270,2019/01/15 09:58:09.270,185,12,Turkey
+340,A,2019/01/15 10:00:00.000,2019/01/15 10:00:00.000,181,138,Iran
+330,G,2019/01/15 10:01:15.844,2019/01/15 10:01:15.844,52,115,Poland
+334,G,2019/01/15 10:07:46.251,2019/01/15 10:07:46.251,127,42,French Polynesia
+339,B,2019/01/15 10:09:33.099,2019/01/15 10:09:33.099,98,175,Georgia
+328,A,2019/01/15 10:14:38.544,2019/01/15 10:14:38.544,180,176,Turks & Caicos Islands
+327,J,2019/01/15 10:16:42.024,2019/01/15 10:16:42.024,177,206,Malta
+341,A,2019/01/15 10:20:00.000,2019/01/15 10:20:00.000,113,69,Niger
+317,F,2019/01/15 10:20:45.576,2019/01/15 10:20:45.576,117,225,Montserrat
+325,C,2019/01/15 10:24:20.096,2019/01/15 10:24:20.096,136,78,Norway
+338,D,2019/01/15 10:24:55.821,2019/01/15 10:24:55.821,174,135,Belgium
+335,B,2019/01/15 10:29:34.115,2019/01/15 10:29:34.115,167,78,Wallis & Futuna
+330,I,2019/01/15 10:30:12.739,2019/01/15 10:30:12.739,65,67,Mayotte
+337,E,2019/01/15 10:30:38.748,2019/01/15 10:30:38.748,137,101,Kosovo
+340,B,2019/01/15 10:37:08.684,2019/01/15 10:37:08.684,144,229,Luxembourg
+328,F,2019/01/15 10:37:32.472,2019/01/15 10:37:32.472,212,153,Dominican Republic
+334,I,2019/01/15 10:39:52.134,2019/01/15 10:39:52.134,44,227,Cameroon
+342,A,2019/01/15 10:40:00.000,2019/01/15 10:40:00.000,70,172,Malawi
+339,C,2019/01/15 10:42:47.669,2019/01/15 10:42:47.669,34,65,Suriname
+341,F,2019/01/15 10:47:04.333,2019/01/15 10:47:04.333,125,131,Dominican Republic
+317,D,2019/01/15 10:48:49.423,2019/01/15 10:48:49.423,143,245,Togo
+327,K,2019/01/15 10:53:11.223,2019/01/15 10:53:11.223,89,156,Cambodia
+330,J,2019/01/15 10:56:38.269,2019/01/15 10:56:38.269,9,131,Indonesia
+338,E,2019/01/15 10:58:11.256,2019/01/15 10:58:11.256,100,164,Djibouti
+325,A,2019/01/15 10:59:15.433,2019/01/15 10:59:15.433,226,30,Angola
+343,A,2019/01/15 11:00:00.000,2019/01/15 11:00:00.000,118,236,Liberia
+337,G,2019/01/15 11:00:25.701,2019/01/15 11:00:25.701,97,63,Uruguay
+335,C,2019/01/15 11:04:27.761,2019/01/15 11:04:27.761,203,237,Malta
+340,C,2019/01/15 11:05:41.057,2019/01/15 11:05:41.057,199,52,Faroe Islands
+328,D,2019/01/15 11:06:32.657,2019/01/15 11:06:32.657,222,154,Armenia
+334,J,2019/01/15 11:07:50.277,2019/01/15 11:07:50.277,32,53,Angola
+342,F,2019/01/15 11:13:15.837,2019/01/15 11:13:15.837,20,70,Belarus
+341,D,2019/01/15 11:14:41.190,2019/01/15 11:14:41.190,67,242,Sri Lanka
+339,A,2019/01/15 11:14:47.486,2019/01/15 11:14:47.486,1,232,Oman
+317,E,2019/01/15 11:17:35.899,2019/01/15 11:17:35.899,145,118,Guyana
+344,A,2019/01/15 11:20:00.000,2019/01/15 11:20:00.000,224,74,Nigeria
+327,M,2019/01/15 11:22:10.478,2019/01/15 11:22:10.478,242,212,Guinea-Bissau
+330,K,2019/01/15 11:25:59.393,2019/01/15 11:25:59.393,197,228,Antarctica
+343,B,2019/01/15 11:26:32.141,2019/01/15 11:26:32.141,201,146,Papua New Guinea
+338,G,2019/01/15 11:26:55.046,2019/01/15 11:26:55.046,72,129,St. Vincent & Grenadines
+337,H,2019/01/15 11:28:58.510,2019/01/15 11:28:58.510,211,247,French Polynesia
+325,F,2019/01/15 11:31:42.753,2019/01/15 11:31:42.753,168,110,Solomon Islands
+328,E,2019/01/15 11:34:53.446,2019/01/15 11:34:53.446,158,3,Taiwan
+340,A,2019/01/15 11:36:49.214,2019/01/15 11:36:49.214,92,109,Germany
+335,A,2019/01/15 11:37:08.339,2019/01/15 11:37:08.339,102,115,Papua New Guinea
+334,L,2019/01/15 11:38:35.009,2019/01/15 11:38:35.009,152,167,Suriname
+345,A,2019/01/15 11:40:00.000,2019/01/15 11:40:00.000,43,221,Madagascar
+342,D,2019/01/15 11:43:09.219,2019/01/15 11:43:09.219,92,0,India
+317,G,2019/01/15 11:43:17.076,2019/01/15 11:43:17.076,4,70,Mexico
+339,F,2019/01/15 11:44:59.355,2019/01/15 11:44:59.355,38,69,Liberia
+327,N,2019/01/15 11:48:03.020,2019/01/15 11:48:03.020,160,53,Kyrgyzstan
+344,B,2019/01/15 11:49:23.197,2019/01/15 11:49:23.197,240,220,Singapore
+343,C,2019/01/15 11:50:27.507,2019/01/15 11:50:27.507,28,94,St. Barthélemy
+330,M,2019/01/15 11:51:48.779,2019/01/15 11:51:48.779,90,168,Djibouti
+341,E,2019/01/15 11:52:09.327,2019/01/15 11:52:09.327,122,149,Bolivia
+338,I,2019/01/15 11:57:16.032,2019/01/15 11:57:16.032,125,202,Falkland Islands
+325,D,2019/01/15 11:58:29.003,2019/01/15 11:58:29.003,213,168,Ethiopia
+346,A,2019/01/15 12:00:00.000,2019/01/15 12:00:00.000,93,225,Austria
+328,G,2019/01/15 12:04:20.355,2019/01/15 12:04:20.355,144,160,Papua New Guinea
+340,F,2019/01/15 12:04:24.073,2019/01/15 12:04:24.073,178,111,Afghanistan
+335,B,2019/01/15 12:06:44.678,2019/01/15 12:06:44.678,235,214,Sweden
+334,M,2019/01/15 12:07:17.096,2019/01/15 12:07:17.096,144,252,American Samoa
+342,E,2019/01/15 12:15:10.132,2019/01/15 12:15:10.132,62,50,Timor-Leste
+317,H,2019/01/15 12:16:56.050,2019/01/15 12:16:56.050,47,138,Åland Islands
+345,B,2019/01/15 12:17:12.503,2019/01/15 12:17:12.503,76,104,Hungary
+339,D,2019/01/15 12:19:09.087,2019/01/15 12:19:09.087,204,178,St. Pierre & Miquelon
+344,C,2019/01/15 12:19:31.748,2019/01/15 12:19:31.748,135,48,Caribbean Netherlands
+341,G,2019/01/15 12:20:21.342,2019/01/15 12:20:21.342,242,7,Guadeloupe
+330,O,2019/01/15 12:22:17.125,2019/01/15 12:22:17.125,79,78,Trinidad & Tobago
+325,E,2019/01/15 12:23:26.188,2019/01/15 12:23:26.188,188,194,Guinea
+343,A,2019/01/15 12:25:53.776,2019/01/15 12:25:53.776,126,74,Romania
+346,F,2019/01/15 12:26:29.182,2019/01/15 12:26:29.182,204,196,Poland
+338,J,2019/01/15 12:30:28.118,2019/01/15 12:30:28.118,242,109,Indonesia
+328,L,2019/01/15 12:34:50.678,2019/01/15 12:34:50.678,132,77,Caribbean Netherlands
+335,C,2019/01/15 12:37:08.778,2019/01/15 12:37:08.778,92,19,Macedonia
+340,D,2019/01/15 12:37:31.842,2019/01/15 12:37:31.842,70,27,Mauritius
+348,A,2019/01/15 12:40:00.000,2019/01/15 12:40:00.000,240,62,Isle of Man
+334,N,2019/01/15 12:40:37.607,2019/01/15 12:40:37.607,189,70,South Georgia & South Sandwich Islands
+342,G,2019/01/15 12:45:18.594,2019/01/15 12:45:18.594,3,142,Costa Rica
+339,E,2019/01/15 12:50:38.511,2019/01/15 12:50:38.511,33,121,Jamaica
+344,A,2019/01/15 12:50:55.411,2019/01/15 12:50:55.411,196,216,Eritrea
+345,C,2019/01/15 12:51:08.835,2019/01/15 12:51:08.835,233,81,Turkey
+341,H,2019/01/15 12:51:54.608,2019/01/15 12:51:54.608,147,136,Latvia
+325,G,2019/01/15 12:53:26.080,2019/01/15 12:53:26.080,83,190,New Zealand
+343,F,2019/01/15 12:56:15.895,2019/01/15 12:56:15.895,212,100,Syria
+338,K,2019/01/15 12:59:53.096,2019/01/15 12:59:53.096,20,148,Ukraine
+349,A,2019/01/15 13:00:00.000,2019/01/15 13:00:00.000,140,206,Gabon
+346,D,2019/01/15 13:00:17.109,2019/01/15 13:00:17.109,186,81,Thailand
+335,A,2019/01/15 13:07:15.511,2019/01/15 13:07:15.511,209,96,Morocco
+348,F,2019/01/15 13:07:31.318,2019/01/15 13:07:31.318,65,165,Malaysia
+328,M,2019/01/15 13:08:34.743,2019/01/15 13:08:34.743,211,157,Aruba
+342,H,2019/01/15 13:13:00.490,2019/01/15 13:13:00.490,4,251,Zimbabwe
+340,E,2019/01/15 13:14:26.372,2019/01/15 13:14:26.372,68,92,Antarctica
+339,G,2019/01/15 13:16:58.250,2019/01/15 13:16:58.250,114,252,Nepal
+350,A,2019/01/15 13:20:00.000,2019/01/15 13:20:00.000,202,198,Colombia
+344,F,2019/01/15 13:22:36.965,2019/01/15 13:22:36.965,241,3,Kuwait
+325,H,2019/01/15 13:23:19.122,2019/01/15 13:23:19.122,231,147,Finland
+345,A,2019/01/15 13:26:34.516,2019/01/15 13:26:34.516,207,229,Niger
+343,D,2019/01/15 13:29:46.826,2019/01/15 13:29:46.826,92,148,Paraguay
+349,F,2019/01/15 13:30:02.885,2019/01/15 13:30:02.885,115,245,Croatia
+338,M,2019/01/15 13:30:53.084,2019/01/15 13:30:53.084,174,255,Greenland
+328,O,2019/01/15 13:31:35.741,2019/01/15 13:31:35.741,94,124,Seychelles
+346,E,2019/01/15 13:32:59.012,2019/01/15 13:32:59.012,106,70,Bolivia
+335,F,2019/01/15 13:34:06.673,2019/01/15 13:34:06.673,180,47,Hong Kong SAR China
+348,D,2019/01/15 13:36:32.682,2019/01/15 13:36:32.682,245,52,Niger
+351,A,2019/01/15 13:40:00.000,2019/01/15 13:40:00.000,51,142,Mozambique
+340,G,2019/01/15 13:44:18.943,2019/01/15 13:44:18.943,88,130,Guinea-Bissau
+350,B,2019/01/15 13:48:09.166,2019/01/15 13:48:09.166,207,251,Bangladesh
+339,H,2019/01/15 13:51:49.568,2019/01/15 13:51:49.568,133,179,Turkmenistan
+344,D,2019/01/15 13:55:38.684,2019/01/15 13:55:38.684,29,113,Tokelau
+343,E,2019/01/15 13:57:59.767,2019/01/15 13:57:59.767,233,197,Christmas Island
+338,O,2019/01/15 13:59:11.584,2019/01/15 13:59:11.584,5,238,Saudi Arabia
+345,B,2019/01/15 13:59:24.700,2019/01/15 13:59:24.700,2,3,Azerbaijan
+352,A,2019/01/15 14:00:00.000,2019/01/15 14:00:00.000,83,253,Zambia
+346,G,2019/01/15 14:00:25.459,2019/01/15 14:00:25.459,108,190,Lithuania
+349,D,2019/01/15 14:00:59.954,2019/01/15 14:00:59.954,66,154,Papua New Guinea
+335,D,2019/01/15 14:02:26.386,2019/01/15 14:02:26.386,203,2,Japan
+348,E,2019/01/15 14:05:56.212,2019/01/15 14:05:56.212,165,185,Austria
+351,F,2019/01/15 14:08:14.802,2019/01/15 14:08:14.802,204,164,Iraq
+340,L,2019/01/15 14:17:33.338,2019/01/15 14:17:33.338,2,222,Senegal
+353,A,2019/01/15 14:20:00.000,2019/01/15 14:20:00.000,96,135,Cuba
+350,C,2019/01/15 14:20:10.068,2019/01/15 14:20:10.068,237,228,St. Vincent & Grenadines
+344,E,2019/01/15 14:22:16.213,2019/01/15 14:22:16.213,233,43,South Africa
+343,G,2019/01/15 14:26:02.854,2019/01/15 14:26:02.854,20,150,South Africa
+352,B,2019/01/15 14:29:18.169,2019/01/15 14:29:18.169,160,243,Cyprus
+345,C,2019/01/15 14:30:34.896,2019/01/15 14:30:34.896,243,56,Cyprus
+346,H,2019/01/15 14:30:36.136,2019/01/15 14:30:36.136,49,204,Serbia
+335,E,2019/01/15 14:32:18.280,2019/01/15 14:32:18.280,1,101,Fiji
+348,G,2019/01/15 14:34:57.567,2019/01/15 14:34:57.567,112,5,Christmas Island
+349,E,2019/01/15 14:36:36.313,2019/01/15 14:36:36.313,7,2,Bahamas
+354,A,2019/01/15 14:40:00.000,2019/01/15 14:40:00.000,190,156,Timor-Leste
+351,D,2019/01/15 14:40:35.938,2019/01/15 14:40:35.938,16,196,Aruba
+347,I,2019/01/15 14:45:21.485,2019/01/15 14:45:21.485,129,210,Canada
+350,A,2019/01/15 14:46:48.455,2019/01/15 14:46:48.455,22,195,Isle of Man
+340,M,2019/01/15 14:47:03.921,2019/01/15 14:47:03.921,186,38,Albania
+353,F,2019/01/15 14:49:33.476,2019/01/15 14:49:33.476,114,35,Greenland
+344,G,2019/01/15 14:52:25.271,2019/01/15 14:52:25.271,56,187,Dominican Republic
+343,I,2019/01/15 14:54:19.186,2019/01/15 14:54:19.186,37,20,Faroe Islands
+345,A,2019/01/15 15:02:11.291,2019/01/15 15:02:11.291,239,75,Moldova
+352,C,2019/01/15 15:02:15.498,2019/01/15 15:02:15.498,226,112,Laos
+335,G,2019/01/15 15:02:34.037,2019/01/15 15:02:34.037,54,43,Afghanistan
+348,H,2019/01/15 15:03:50.673,2019/01/15 15:03:50.673,175,93,Malawi
+349,G,2019/01/15 15:05:22.142,2019/01/15 15:05:22.142,18,68,Venezuela
+351,E,2019/01/15 15:06:53.281,2019/01/15 15:06:53.281,226,231,Belgium
+354,F,2019/01/15 15:11:46.229,2019/01/15 15:11:46.229,255,182,India
+340,O,2019/01/15 15:11:57.624,2019/01/15 15:11:57.624,48,82,Canada
+347,J,2019/01/15 15:16:17.083,2019/01/15 15:16:17.083,40,227,St. Barthélemy
+350,F,2019/01/15 15:17:08.004,2019/01/15 15:17:08.004,143,214,Australia
+356,A,2019/01/15 15:20:00.000,2019/01/15 15:20:00.000,54,90,United Arab Emirates
+344,I,2019/01/15 15:21:37.539,2019/01/15 15:21:37.539,6,5,Libya
+353,D,2019/01/15 15:23:18.415,2019/01/15 15:23:18.415,55,111,Liechtenstein
+343,J,2019/01/15 15:23:42.256,2019/01/15 15:23:42.256,55,3,Slovenia
+352,A,2019/01/15 15:27:49.197,2019/01/15 15:27:49.197,129,54,Canada
+351,G,2019/01/15 15:32:10.604,2019/01/15 15:32:10.604,237,31,Burkina Faso
+335,K,2019/01/15 15:33:30.459,2019/01/15 15:33:30.459,2,71,Vanuatu
+349,K,2019/01/15 15:35:24.661,2019/01/15 15:35:24.661,98,164,China
+345,F,2019/01/15 15:38:04.632,2019/01/15 15:38:04.632,7,141,Iceland
+357,A,2019/01/15 15:40:00.000,2019/01/15 15:40:00.000,230,190,Puerto Rico
+354,D,2019/01/15 15:44:50.837,2019/01/15 15:44:50.837,205,79,Isle of Man
+347,K,2019/01/15 15:45:10.105,2019/01/15 15:45:10.105,65,120,Monaco
+350,D,2019/01/15 15:48:57.406,2019/01/15 15:48:57.406,95,241,Wallis & Futuna
+343,K,2019/01/15 15:48:59.039,2019/01/15 15:48:59.039,61,64,Nepal
+344,J,2019/01/15 15:50:38.920,2019/01/15 15:50:38.920,20,70,South Korea
+356,B,2019/01/15 15:53:05.614,2019/01/15 15:53:05.614,171,220,Zambia
+353,E,2019/01/15 15:55:01.353,2019/01/15 15:55:01.353,133,172,Switzerland
+352,F,2019/01/15 15:57:33.295,2019/01/15 15:57:33.295,139,246,São Tomé and Príncipe
+351,L,2019/01/15 15:57:53.884,2019/01/15 15:57:53.884,36,67,Samoa
+358,A,2019/01/15 16:00:00.000,2019/01/15 16:00:00.000,76,157,Nauru
+349,M,2019/01/15 16:00:26.102,2019/01/15 16:00:26.102,94,133,Colombia
+335,M,2019/01/15 16:03:36.101,2019/01/15 16:03:36.101,7,89,Denmark
+345,D,2019/01/15 16:07:27.414,2019/01/15 16:07:27.414,198,41,Taiwan
+354,E,2019/01/15 16:08:30.130,2019/01/15 16:08:30.130,104,230,Mongolia
+357,F,2019/01/15 16:10:47.477,2019/01/15 16:10:47.477,156,92,San Marino
+347,M,2019/01/15 16:15:38.825,2019/01/15 16:15:38.825,82,133,Central African Republic
+356,C,2019/01/15 16:17:36.885,2019/01/15 16:17:36.885,80,226,Fiji
+359,A,2019/01/15 16:20:00.000,2019/01/15 16:20:00.000,213,140,Belize
+344,L,2019/01/15 16:21:08.843,2019/01/15 16:21:08.843,248,0,Slovakia
+343,M,2019/01/15 16:21:10.515,2019/01/15 16:21:10.515,22,69,Iraq
+351,M,2019/01/15 16:22:22.008,2019/01/15 16:22:22.008,114,249,Bolivia
+350,E,2019/01/15 16:23:14.027,2019/01/15 16:23:14.027,174,89,Cambodia
+353,G,2019/01/15 16:23:23.368,2019/01/15 16:23:23.368,153,152,Switzerland
+352,D,2019/01/15 16:30:03.377,2019/01/15 16:30:03.377,134,0,Panama
+358,F,2019/01/15 16:31:43.306,2019/01/15 16:31:43.306,32,221,Cyprus
+349,O,2019/01/15 16:33:44.124,2019/01/15 16:33:44.124,226,28,Taiwan
+335,O,2019/01/15 16:34:16.373,2019/01/15 16:34:16.373,191,212,Cayman Islands
+354,G,2019/01/15 16:38:20.462,2019/01/15 16:38:20.462,170,84,Burundi
+360,A,2019/01/15 16:40:00.000,2019/01/15 16:40:00.000,147,140,Turkey
+345,E,2019/01/15 16:41:11.924,2019/01/15 16:41:11.924,150,147,Taiwan
+347,N,2019/01/15 16:41:27.902,2019/01/15 16:41:27.902,141,169,France
+357,D,2019/01/15 16:42:41.125,2019/01/15 16:42:41.125,101,223,Turkmenistan
+343,O,2019/01/15 16:46:05.863,2019/01/15 16:46:05.863,91,11,São Tomé and Príncipe
+356,A,2019/01/15 16:46:13.617,2019/01/15 16:46:13.617,16,2,Japan
+344,M,2019/01/15 16:50:02.094,2019/01/15 16:50:02.094,62,25,U.S. Virgin Islands
+350,G,2019/01/15 16:52:38.632,2019/01/15 16:52:38.632,235,23,Greenland
+359,F,2019/01/15 16:53:05.993,2019/01/15 16:53:05.993,184,238,Bosnia & Herzegovina
+353,I,2019/01/15 16:54:50.799,2019/01/15 16:54:50.799,153,233,Curaçao
+351,O,2019/01/15 16:56:05.074,2019/01/15 16:56:05.074,69,214,Honduras
+361,A,2019/01/15 17:00:00.000,2019/01/15 17:00:00.000,214,250,Argentina
+358,D,2019/01/15 17:00:23.430,2019/01/15 17:00:23.430,110,234,Kyrgyzstan
+352,E,2019/01/15 17:04:57.885,2019/01/15 17:04:57.885,114,30,Qatar
+345,G,2019/01/15 17:09:31.854,2019/01/15 17:09:31.854,133,38,Albania
+360,F,2019/01/15 17:11:53.889,2019/01/15 17:11:53.889,122,63,Brazil
+354,K,2019/01/15 17:13:24.074,2019/01/15 17:13:24.074,74,187,Mali
+356,F,2019/01/15 17:18:03.901,2019/01/15 17:18:03.901,148,218,St. Vincent & Grenadines
+359,D,2019/01/15 17:18:43.036,2019/01/15 17:18:43.036,171,195,Djibouti
+362,A,2019/01/15 17:20:00.000,2019/01/15 17:20:00.000,151,206,Lithuania
+344,O,2019/01/15 17:20:03.219,2019/01/15 17:20:03.219,28,163,Kiribati
+350,H,2019/01/15 17:27:04.021,2019/01/15 17:27:04.021,18,226,Fiji
+353,J,2019/01/15 17:27:19.922,2019/01/15 17:27:19.922,152,64,St. Pierre & Miquelon
+358,E,2019/01/15 17:32:35.120,2019/01/15 17:32:35.120,45,113,Diego Garcia
+361,F,2019/01/15 17:33:28.502,2019/01/15 17:33:28.502,25,224,Dominica
+352,G,2019/01/15 17:34:49.634,2019/01/15 17:34:49.634,28,100,Germany
+360,D,2019/01/15 17:37:15.240,2019/01/15 17:37:15.240,130,237,Greece
+345,H,2019/01/15 17:38:53.854,2019/01/15 17:38:53.854,153,159,Seychelles
+363,A,2019/01/15 17:40:00.000,2019/01/15 17:40:00.000,49,242,Madagascar
+354,M,2019/01/15 17:42:42.275,2019/01/15 17:42:42.275,141,63,South Georgia & South Sandwich Islands
+362,B,2019/01/15 17:49:00.141,2019/01/15 17:49:00.141,131,18,U.S. Outlying Islands
+353,K,2019/01/15 17:54:26.399,2019/01/15 17:54:26.399,151,118,Malta
+356,D,2019/01/15 17:55:01.171,2019/01/15 17:55:01.171,32,134,Caribbean Netherlands
+358,G,2019/01/15 18:05:09.293,2019/01/15 18:05:09.293,184,19,Burkina Faso
+352,I,2019/01/15 18:06:10.145,2019/01/15 18:06:10.145,16,162,Kyrgyzstan
+361,D,2019/01/15 18:07:06.933,2019/01/15 18:07:06.933,110,191,Montserrat
+360,E,2019/01/15 18:07:59.162,2019/01/15 18:07:59.162,7,111,Bhutan
+354,O,2019/01/15 18:08:22.863,2019/01/15 18:08:22.863,5,59,Ascension Island
+363,B,2019/01/15 18:11:35.198,2019/01/15 18:11:35.198,36,4,Egypt
+362,C,2019/01/15 18:12:30.425,2019/01/15 18:12:30.425,190,209,Angola
+353,M,2019/01/15 18:21:26.785,2019/01/15 18:21:26.785,174,43,St. Barthélemy
+356,E,2019/01/15 18:24:50.191,2019/01/15 18:24:50.191,143,169,Malta
+352,J,2019/01/15 18:31:40.335,2019/01/15 18:31:40.335,225,209,Guatemala
+358,I,2019/01/15 18:34:39.637,2019/01/15 18:34:39.637,67,75,Ghana
+361,E,2019/01/15 18:38:26.965,2019/01/15 18:38:26.965,51,220,Guatemala
+366,A,2019/01/15 18:40:00.000,2019/01/15 18:40:00.000,74,105,Taiwan
+363,C,2019/01/15 18:42:22.064,2019/01/15 18:42:22.064,191,159,South Africa
+362,A,2019/01/15 18:43:40.953,2019/01/15 18:43:40.953,15,180,Bulgaria
+360,G,2019/01/15 18:43:48.700,2019/01/15 18:43:48.700,27,103,Mauritania
+353,N,2019/01/15 18:55:14.597,2019/01/15 18:55:14.597,136,56,Nicaragua
+356,G,2019/01/15 18:56:16.575,2019/01/15 18:56:16.575,60,134,Hungary
+367,A,2019/01/15 19:00:00.000,2019/01/15 19:00:00.000,249,33,Isle of Man
+352,K,2019/01/15 19:02:00.701,2019/01/15 19:02:00.701,73,187,Vatican City
+358,J,2019/01/15 19:02:54.481,2019/01/15 19:02:54.481,231,211,Kyrgyzstan
+366,B,2019/01/15 19:10:45.569,2019/01/15 19:10:45.569,113,110,U.S. Outlying Islands
+361,G,2019/01/15 19:13:36.930,2019/01/15 19:13:36.930,88,238,Réunion
+363,A,2019/01/15 19:13:50.247,2019/01/15 19:13:50.247,80,43,South Sudan
+362,B,2019/01/15 19:14:21.859,2019/01/15 19:14:21.859,178,161,North Korea
+360,I,2019/01/15 19:16:24.161,2019/01/15 19:16:24.161,230,59,Laos
+368,A,2019/01/15 19:20:00.000,2019/01/15 19:20:00.000,253,178,Malta
+356,I,2019/01/15 19:22:19.572,2019/01/15 19:22:19.572,223,133,Czech Republic
+364,E,2019/01/15 19:25:20.625,2019/01/15 19:25:20.625,197,106,Philippines
+367,F,2019/01/15 19:26:02.241,2019/01/15 19:26:02.241,212,155,Peru
+358,L,2019/01/15 19:30:52.152,2019/01/15 19:30:52.152,152,48,Solomon Islands
+352,M,2019/01/15 19:32:50.634,2019/01/15 19:32:50.634,202,255,Isle of Man
+369,A,2019/01/15 19:40:00.000,2019/01/15 19:40:00.000,174,52,Nepal
+362,C,2019/01/15 19:45:17.832,2019/01/15 19:45:17.832,35,125,Turkey
+361,H,2019/01/15 19:45:42.639,2019/01/15 19:45:42.639,103,207,Guadeloupe
+366,C,2019/01/15 19:46:09.631,2019/01/15 19:46:09.631,137,101,Rwanda
+363,F,2019/01/15 19:46:27.907,2019/01/15 19:46:27.907,172,62,Namibia
+360,J,2019/01/15 19:46:44.403,2019/01/15 19:46:44.403,37,221,Guinea
+368,B,2019/01/15 19:53:17.878,2019/01/15 19:53:17.878,247,48,Aruba
+356,J,2019/01/15 19:54:29.050,2019/01/15 19:54:29.050,39,217,Uzbekistan
+364,G,2019/01/15 19:54:32.904,2019/01/15 19:54:32.904,114,36,Bhutan
+367,D,2019/01/15 19:57:33.708,2019/01/15 19:57:33.708,24,90,Ceuta & Melilla
+370,A,2019/01/15 20:00:00.000,2019/01/15 20:00:00.000,179,148,São Tomé and Príncipe
+352,O,2019/01/15 20:00:38.302,2019/01/15 20:00:38.302,226,171,Uzbekistan
+358,M,2019/01/15 20:02:54.639,2019/01/15 20:02:54.639,54,111,Mayotte
+369,F,2019/01/15 20:08:30.446,2019/01/15 20:08:30.446,26,91,Germany
+363,D,2019/01/15 20:14:00.345,2019/01/15 20:14:00.345,17,117,Pakistan
+360,L,2019/01/15 20:17:25.379,2019/01/15 20:17:25.379,184,112,Mauritania
+366,A,2019/01/15 20:17:32.339,2019/01/15 20:17:32.339,158,59,Tuvalu
+371,A,2019/01/15 20:20:00.000,2019/01/15 20:20:00.000,19,103,Ghana
+364,H,2019/01/15 20:21:34.120,2019/01/15 20:21:34.120,92,29,Venezuela
+356,K,2019/01/15 20:22:12.662,2019/01/15 20:22:12.662,43,174,Moldova
+368,C,2019/01/15 20:24:12.956,2019/01/15 20:24:12.956,228,136,Slovakia
+370,F,2019/01/15 20:27:05.144,2019/01/15 20:27:05.144,242,65,British Indian Ocean Territory
+367,E,2019/01/15 20:28:02.484,2019/01/15 20:28:02.484,181,104,Turkey
+358,O,2019/01/15 20:33:00.917,2019/01/15 20:33:00.917,124,57,Samoa
+369,D,2019/01/15 20:37:12.252,2019/01/15 20:37:12.252,42,42,Macau SAR China
+372,A,2019/01/15 20:40:00.000,2019/01/15 20:40:00.000,241,29,Romania
+363,E,2019/01/15 20:43:19.133,2019/01/15 20:43:19.133,135,63,Sierra Leone
+360,M,2019/01/15 20:44:06.872,2019/01/15 20:44:06.872,130,238,St. Martin
+366,F,2019/01/15 20:46:14.101,2019/01/15 20:46:14.101,140,68,Eritrea
+356,M,2019/01/15 20:47:34.036,2019/01/15 20:47:34.036,34,95,Nauru
+368,A,2019/01/15 20:51:29.804,2019/01/15 20:51:29.804,118,251,Burundi
+371,B,2019/01/15 20:53:40.233,2019/01/15 20:53:40.233,77,99,Tunisia
+370,D,2019/01/15 20:55:53.132,2019/01/15 20:55:53.132,40,144,Falkland Islands
+373,A,2019/01/15 21:00:00.000,2019/01/15 21:00:00.000,97,144,Maldives
+355,A,2019/01/15 21:01:10.387,2019/01/15 21:01:10.387,136,65,Zimbabwe
+369,E,2019/01/15 21:02:23.837,2019/01/15 21:02:23.837,201,194,Hong Kong SAR China
+367,G,2019/01/15 21:02:41.486,2019/01/15 21:02:41.486,220,64,Palau
+372,F,2019/01/15 21:08:28.567,2019/01/15 21:08:28.567,29,220,Bulgaria
+360,N,2019/01/15 21:12:56.281,2019/01/15 21:12:56.281,128,135,Iraq
+363,G,2019/01/15 21:13:34.803,2019/01/15 21:13:34.803,29,8,Christmas Island
+371,C,2019/01/15 21:16:27.118,2019/01/15 21:16:27.118,140,12,Switzerland
+366,D,2019/01/15 21:19:02.190,2019/01/15 21:19:02.190,224,56,Singapore
+374,A,2019/01/15 21:20:00.000,2019/01/15 21:20:00.000,225,217,Mexico
+356,O,2019/01/15 21:20:54.320,2019/01/15 21:20:54.320,56,49,Micronesia
+368,B,2019/01/15 21:21:14.386,2019/01/15 21:21:14.386,75,60,Macau SAR China
+370,E,2019/01/15 21:23:04.980,2019/01/15 21:23:04.980,130,32,Sweden
+373,B,2019/01/15 21:24:20.892,2019/01/15 21:24:20.892,6,123,San Marino
+369,G,2019/01/15 21:32:24.943,2019/01/15 21:32:24.943,72,160,Bermuda
+355,B,2019/01/15 21:33:49.343,2019/01/15 21:33:49.343,184,36,Guatemala
+367,H,2019/01/15 21:37:18.619,2019/01/15 21:37:18.619,1,29,Malta
+372,D,2019/01/15 21:38:36.840,2019/01/15 21:38:36.840,176,10,Thailand
+375,A,2019/01/15 21:40:00.000,2019/01/15 21:40:00.000,189,202,Italy
+371,A,2019/01/15 21:43:52.193,2019/01/15 21:43:52.193,203,94,Tonga
+374,F,2019/01/15 21:45:12.549,2019/01/15 21:45:12.549,123,45,Costa Rica
+363,H,2019/01/15 21:45:53.978,2019/01/15 21:45:53.978,167,143,Isle of Man
+373,C,2019/01/15 21:49:31.515,2019/01/15 21:49:31.515,230,115,Pitcairn Islands
+368,C,2019/01/15 21:52:39.991,2019/01/15 21:52:39.991,101,202,Slovenia
+366,E,2019/01/15 21:53:11.805,2019/01/15 21:53:11.805,8,247,Sudan
+370,G,2019/01/15 21:59:03.496,2019/01/15 21:59:03.496,129,89,Madagascar
+376,A,2019/01/15 22:00:00.000,2019/01/15 22:00:00.000,83,64,Gibraltar
+369,L,2019/01/15 22:00:15.762,2019/01/15 22:00:15.762,238,9,Montserrat
+355,C,2019/01/15 22:06:11.963,2019/01/15 22:06:11.963,89,100,Guinea-Bissau
+372,E,2019/01/15 22:06:55.873,2019/01/15 22:06:55.873,36,161,Chile
+375,B,2019/01/15 22:10:26.075,2019/01/15 22:10:26.075,242,189,Portugal
+371,B,2019/01/15 22:14:44.986,2019/01/15 22:14:44.986,47,205,Guernsey
+374,D,2019/01/15 22:19:40.419,2019/01/15 22:19:40.419,69,14,Wallis & Futuna
+377,A,2019/01/15 22:20:00.000,2019/01/15 22:20:00.000,205,255,Réunion
+373,A,2019/01/15 22:23:10.169,2019/01/15 22:23:10.169,252,252,Tristan da Cunha
+366,G,2019/01/15 22:24:44.455,2019/01/15 22:24:44.455,40,44,Réunion
+368,A,2019/01/15 22:25:47.947,2019/01/15 22:25:47.947,2,122,British Indian Ocean Territory
+370,H,2019/01/15 22:27:35.483,2019/01/15 22:27:35.483,217,71,Mayotte
+376,B,2019/01/15 22:27:41.451,2019/01/15 22:27:41.451,51,111,Nauru
+369,M,2019/01/15 22:28:44.499,2019/01/15 22:28:44.499,81,26,South Georgia & South Sandwich Islands
+372,G,2019/01/15 22:35:04.307,2019/01/15 22:35:04.307,190,222,United States
+355,A,2019/01/15 22:35:59.947,2019/01/15 22:35:59.947,208,62,United States
+375,C,2019/01/15 22:39:39.255,2019/01/15 22:39:39.255,60,213,Laos
+371,C,2019/01/15 22:39:41.274,2019/01/15 22:39:41.274,23,176,Croatia
+378,A,2019/01/15 22:40:00.000,2019/01/15 22:40:00.000,131,137,Poland
+377,F,2019/01/15 22:46:44.735,2019/01/15 22:46:44.735,199,125,North Korea
+368,B,2019/01/15 22:50:39.597,2019/01/15 22:50:39.597,42,75,Russia
+366,I,2019/01/15 22:52:05.671,2019/01/15 22:52:05.671,196,38,Australia
+373,B,2019/01/15 22:53:21.538,2019/01/15 22:53:21.538,126,58,Sint Maarten
+369,N,2019/01/15 22:57:58.827,2019/01/15 22:57:58.827,222,228,Curaçao
+376,C,2019/01/15 23:02:09.027,2019/01/15 23:02:09.027,207,82,St. Lucia
+355,F,2019/01/15 23:02:54.636,2019/01/15 23:02:54.636,154,135,St. Martin
+372,L,2019/01/15 23:05:36.167,2019/01/15 23:05:36.167,211,202,Greenland
+378,B,2019/01/15 23:08:44.728,2019/01/15 23:08:44.728,121,126,Falkland Islands
+375,A,2019/01/15 23:08:48.442,2019/01/15 23:08:48.442,153,93,United States
+371,A,2019/01/15 23:08:51.028,2019/01/15 23:08:51.028,49,51,Cape Verde
+377,D,2019/01/15 23:14:29.692,2019/01/15 23:14:29.692,205,155,Liechtenstein
+366,J,2019/01/15 23:17:22.441,2019/01/15 23:17:22.441,9,143,Dominican Republic
+368,C,2019/01/15 23:17:57.263,2019/01/15 23:17:57.263,99,177,Philippines
+380,A,2019/01/15 23:20:00.000,2019/01/15 23:20:00.000,55,216,Russia
+373,C,2019/01/15 23:28:19.535,2019/01/15 23:28:19.535,91,195,Ireland
+355,D,2019/01/15 23:33:07.823,2019/01/15 23:33:07.823,148,42,Lebanon
+372,M,2019/01/15 23:33:10.743,2019/01/15 23:33:10.743,193,243,Gambia
+376,A,2019/01/15 23:34:02.301,2019/01/15 23:34:02.301,175,117,Sierra Leone
+371,F,2019/01/15 23:38:01.924,2019/01/15 23:38:01.924,106,3,Kyrgyzstan
+378,C,2019/01/15 23:38:14.889,2019/01/15 23:38:14.889,45,33,Norfolk Island
+381,A,2019/01/15 23:40:00.000,2019/01/15 23:40:00.000,12,86,Antarctica
+368,A,2019/01/15 23:43:08.456,2019/01/15 23:43:08.456,89,64,Christmas Island
+377,E,2019/01/15 23:43:12.623,2019/01/15 23:43:12.623,94,210,Uzbekistan
+366,L,2019/01/15 23:48:52.503,2019/01/15 23:48:52.503,58,2,Estonia
+380,F,2019/01/15 23:51:47.619,2019/01/15 23:51:47.619,182,82,Gabon
+376,F,2019/01/15 23:59:39.297,2019/01/15 23:59:39.297,45,180,Mexico
+382,A,2019/01/16 00:00:00.000,2019/01/16 00:00:00.000,170,19,Tonga
+372,O,2019/01/16 00:00:58.349,2019/01/16 00:00:58.349,211,217,Romania
+373,A,2019/01/16 00:02:14.159,2019/01/16 00:02:14.159,112,124,North Korea
+378,A,2019/01/16 00:05:43.418,2019/01/16 00:05:43.418,220,189,Ghana
+355,E,2019/01/16 00:07:09.821,2019/01/16 00:07:09.821,138,1,Comoros
+377,G,2019/01/16 00:08:24.628,2019/01/16 00:08:24.628,172,10,American Samoa
+371,D,2019/01/16 00:11:27.144,2019/01/16 00:11:27.144,162,58,Niger
+381,B,2019/01/16 00:13:43.017,2019/01/16 00:13:43.017,73,105,Curaçao
+366,M,2019/01/16 00:17:15.141,2019/01/16 00:17:15.141,152,28,Thailand
+368,F,2019/01/16 00:18:18.199,2019/01/16 00:18:18.199,43,173,Fiji
+383,A,2019/01/16 00:20:00.000,2019/01/16 00:20:00.000,238,13,Belize
+380,D,2019/01/16 00:21:42.266,2019/01/16 00:21:42.266,119,129,Ceuta & Melilla
+382,F,2019/01/16 00:24:07.351,2019/01/16 00:24:07.351,16,209,Northern Mariana Islands
+365,A,2019/01/16 00:25:14.351,2019/01/16 00:25:14.351,17,164,Mongolia
+373,B,2019/01/16 00:30:06.344,2019/01/16 00:30:06.344,139,63,Mauritania
+376,D,2019/01/16 00:31:00.798,2019/01/16 00:31:00.798,181,132,Togo
+378,F,2019/01/16 00:32:22.240,2019/01/16 00:32:22.240,219,53,American Samoa
+355,G,2019/01/16 00:34:43.233,2019/01/16 00:34:43.233,78,3,Tristan da Cunha
+381,C,2019/01/16 00:41:32.775,2019/01/16 00:41:32.775,164,235,Australia
+371,E,2019/01/16 00:41:38.312,2019/01/16 00:41:38.312,49,195,Kuwait
+383,F,2019/01/16 00:48:11.020,2019/01/16 00:48:11.020,100,161,Mali
+368,D,2019/01/16 00:50:14.688,2019/01/16 00:50:14.688,112,43,Western Sahara
+366,O,2019/01/16 00:51:48.568,2019/01/16 00:51:48.568,136,115,Dominica
+380,E,2019/01/16 00:52:46.212,2019/01/16 00:52:46.212,116,193,Rwanda
+382,D,2019/01/16 00:54:42.943,2019/01/16 00:54:42.943,84,101,Sudan
+365,B,2019/01/16 00:55:37.879,2019/01/16 00:55:37.879,30,8,Hong Kong SAR China
+385,A,2019/01/16 01:00:00.000,2019/01/16 01:00:00.000,191,74,U.S. Outlying Islands
+378,D,2019/01/16 01:00:40.085,2019/01/16 01:00:40.085,23,147,Botswana
+355,I,2019/01/16 01:01:30.695,2019/01/16 01:01:30.695,32,52,Puerto Rico
+376,E,2019/01/16 01:02:04.457,2019/01/16 01:02:04.457,97,107,Tokelau
+373,C,2019/01/16 01:03:54.708,2019/01/16 01:03:54.708,235,70,Guinea
+381,A,2019/01/16 01:10:47.710,2019/01/16 01:10:47.710,199,16,Pakistan
+371,G,2019/01/16 01:11:50.673,2019/01/16 01:11:50.673,230,3,Somalia
+368,E,2019/01/16 01:16:35.409,2019/01/16 01:16:35.409,27,105,Slovenia
+386,A,2019/01/16 01:20:00.000,2019/01/16 01:20:00.000,217,5,Peru
+383,D,2019/01/16 01:20:09.994,2019/01/16 01:20:09.994,203,237,French Guiana
+385,B,2019/01/16 01:26:59.020,2019/01/16 01:26:59.020,188,29,Papua New Guinea
+365,C,2019/01/16 01:27:19.415,2019/01/16 01:27:19.415,118,46,Romania
+382,E,2019/01/16 01:28:51.513,2019/01/16 01:28:51.513,83,170,Mali
+355,J,2019/01/16 01:29:04.695,2019/01/16 01:29:04.695,231,49,Jamaica
+380,G,2019/01/16 01:29:43.959,2019/01/16 01:29:43.959,46,10,Ethiopia
+376,G,2019/01/16 01:29:46.409,2019/01/16 01:29:46.409,42,11,Angola
+378,E,2019/01/16 01:30:42.905,2019/01/16 01:30:42.905,108,21,Dominica
+373,A,2019/01/16 01:34:13.312,2019/01/16 01:34:13.312,124,177,Burundi
+387,A,2019/01/16 01:40:00.000,2019/01/16 01:40:00.000,94,206,Malta
+381,F,2019/01/16 01:41:26.851,2019/01/16 01:41:26.851,170,133,South Sudan
+371,H,2019/01/16 01:43:46.378,2019/01/16 01:43:46.378,96,79,Spain
+383,E,2019/01/16 01:48:21.067,2019/01/16 01:48:21.067,90,163,Austria
+368,G,2019/01/16 01:48:37.753,2019/01/16 01:48:37.753,104,106,U.S. Outlying Islands
+386,F,2019/01/16 01:50:17.075,2019/01/16 01:50:17.075,141,122,Slovenia
+376,I,2019/01/16 01:50:40.964,2019/01/16 01:50:40.964,113,154,Antigua & Barbuda
+385,C,2019/01/16 01:53:36.105,2019/01/16 01:53:36.105,94,15,Poland
+382,G,2019/01/16 01:58:03.537,2019/01/16 01:58:03.537,80,217,Finland
+365,A,2019/01/16 01:58:55.272,2019/01/16 01:58:55.272,30,237,New Zealand
+388,A,2019/01/16 02:00:00.000,2019/01/16 02:00:00.000,237,72,U.S. Outlying Islands
+378,G,2019/01/16 02:02:32.601,2019/01/16 02:02:32.601,173,55,Libya
+380,H,2019/01/16 02:02:43.512,2019/01/16 02:02:43.512,4,206,Czech Republic
+355,K,2019/01/16 02:03:14.799,2019/01/16 02:03:14.799,41,196,Kyrgyzstan
+373,B,2019/01/16 02:05:01.306,2019/01/16 02:05:01.306,40,203,Iraq
+387,B,2019/01/16 02:09:11.783,2019/01/16 02:09:11.783,247,6,Guatemala
+384,E,2019/01/16 02:12:12.822,2019/01/16 02:12:12.822,90,158,Comoros
+381,D,2019/01/16 02:12:34.375,2019/01/16 02:12:34.375,54,133,Brunei
+379,F,2019/01/16 02:19:31.753,2019/01/16 02:19:31.753,30,18,British Indian Ocean Territory
+368,I,2019/01/16 02:19:35.060,2019/01/16 02:19:35.060,26,104,Ukraine
+389,A,2019/01/16 02:20:00.000,2019/01/16 02:20:00.000,161,190,Angola
+376,J,2019/01/16 02:20:48.940,2019/01/16 02:20:48.940,29,105,Tonga
+386,D,2019/01/16 02:22:22.291,2019/01/16 02:22:22.291,103,100,Malawi
+383,G,2019/01/16 02:24:16.485,2019/01/16 02:24:16.485,144,135,Haiti
+385,A,2019/01/16 02:24:58.366,2019/01/16 02:24:58.366,219,224,Vietnam
+365,B,2019/01/16 02:27:29.832,2019/01/16 02:27:29.832,75,231,Costa Rica
+388,F,2019/01/16 02:29:12.750,2019/01/16 02:29:12.750,250,80,Libya
+373,C,2019/01/16 02:33:05.963,2019/01/16 02:33:05.963,107,78,St. Vincent & Grenadines
+382,L,2019/01/16 02:35:07.120,2019/01/16 02:35:07.120,187,204,Turkey
+355,M,2019/01/16 02:35:20.369,2019/01/16 02:35:20.369,207,168,South Africa
+378,I,2019/01/16 02:35:30.910,2019/01/16 02:35:30.910,255,195,Guinea-Bissau
+387,C,2019/01/16 02:36:38.213,2019/01/16 02:36:38.213,120,18,Kiribati
+390,A,2019/01/16 02:40:00.000,2019/01/16 02:40:00.000,252,153,French Polynesia
+384,G,2019/01/16 02:41:18.310,2019/01/16 02:41:18.310,115,156,Australia
+381,E,2019/01/16 02:42:01.092,2019/01/16 02:42:01.092,54,113,Dominica
+379,D,2019/01/16 02:46:25.927,2019/01/16 02:46:25.927,220,30,Jordan
+376,K,2019/01/16 02:46:50.578,2019/01/16 02:46:50.578,17,203,Benin
+386,E,2019/01/16 02:47:21.231,2019/01/16 02:47:21.231,52,189,Anguilla
+389,F,2019/01/16 02:49:16.214,2019/01/16 02:49:16.214,85,183,El Salvador
+368,J,2019/01/16 02:52:38.404,2019/01/16 02:52:38.404,156,231,Greenland
+385,F,2019/01/16 02:55:13.087,2019/01/16 02:55:13.087,40,89,Turkmenistan
+383,I,2019/01/16 02:55:20.581,2019/01/16 02:55:20.581,231,155,Gabon
+391,A,2019/01/16 03:00:00.000,2019/01/16 03:00:00.000,88,20,Bangladesh
+365,C,2019/01/16 03:00:15.698,2019/01/16 03:00:15.698,97,68,Indonesia
+378,J,2019/01/16 03:02:16.906,2019/01/16 03:02:16.906,222,252,El Salvador
+355,O,2019/01/16 03:04:37.267,2019/01/16 03:04:37.267,240,103,Slovakia
+388,D,2019/01/16 03:05:05.795,2019/01/16 03:05:05.795,195,111,Cape Verde
+382,M,2019/01/16 03:06:13.451,2019/01/16 03:06:13.451,42,180,Vatican City
+373,A,2019/01/16 03:06:42.019,2019/01/16 03:06:42.019,0,115,Guadeloupe
+384,H,2019/01/16 03:09:54.583,2019/01/16 03:09:54.583,192,153,Armenia
+390,F,2019/01/16 03:10:33.297,2019/01/16 03:10:33.297,42,9,Turks & Caicos Islands
+381,G,2019/01/16 03:10:48.942,2019/01/16 03:10:48.942,254,190,Guinea
+387,A,2019/01/16 03:12:51.253,2019/01/16 03:12:51.253,123,48,Vanuatu
+389,D,2019/01/16 03:17:06.345,2019/01/16 03:17:06.345,36,32,Gambia
+376,M,2019/01/16 03:18:19.590,2019/01/16 03:18:19.590,189,106,Sierra Leone
+392,A,2019/01/16 03:20:00.000,2019/01/16 03:20:00.000,97,31,St. Barthélemy
+379,E,2019/01/16 03:20:11.708,2019/01/16 03:20:11.708,57,26,Kyrgyzstan
+385,D,2019/01/16 03:20:27.846,2019/01/16 03:20:27.846,174,200,Pakistan
+368,K,2019/01/16 03:23:31.277,2019/01/16 03:23:31.277,219,190,North Korea
+383,J,2019/01/16 03:25:54.565,2019/01/16 03:25:54.565,45,154,Laos
+388,E,2019/01/16 03:26:45.895,2019/01/16 03:26:45.895,218,4,Macau SAR China
+391,F,2019/01/16 03:30:53.176,2019/01/16 03:30:53.176,226,10,Estonia
+365,A,2019/01/16 03:32:08.715,2019/01/16 03:32:08.715,27,211,British Virgin Islands
+382,N,2019/01/16 03:35:56.272,2019/01/16 03:35:56.272,235,46,South Sudan
+381,I,2019/01/16 03:36:47.939,2019/01/16 03:36:47.939,148,159,Kazakhstan
+378,K,2019/01/16 03:37:42.280,2019/01/16 03:37:42.280,31,71,Venezuela
+393,A,2019/01/16 03:40:00.000,2019/01/16 03:40:00.000,176,16,Georgia
+373,F,2019/01/16 03:40:39.670,2019/01/16 03:40:39.670,75,69,Mongolia
+390,D,2019/01/16 03:44:02.943,2019/01/16 03:44:02.943,243,125,Tunisia
+387,F,2019/01/16 03:46:26.825,2019/01/16 03:46:26.825,116,25,Barbados
+392,F,2019/01/16 03:47:10.302,2019/01/16 03:47:10.302,188,148,United Kingdom
+376,O,2019/01/16 03:47:22.112,2019/01/16 03:47:22.112,252,234,St. Lucia
+389,E,2019/01/16 03:48:13.468,2019/01/16 03:48:13.468,238,39,Svalbard & Jan Mayen
+379,G,2019/01/16 03:50:12.596,2019/01/16 03:50:12.596,81,11,Gibraltar
+385,E,2019/01/16 03:50:44.757,2019/01/16 03:50:44.757,238,102,Equatorial Guinea
+368,M,2019/01/16 03:54:14.938,2019/01/16 03:54:14.938,3,159,Saudi Arabia
+383,K,2019/01/16 03:55:52.270,2019/01/16 03:55:52.270,244,211,Jamaica
+388,G,2019/01/16 03:58:25.598,2019/01/16 03:58:25.598,206,236,Kyrgyzstan
+394,A,2019/01/16 04:00:00.000,2019/01/16 04:00:00.000,18,146,Western Sahara
+391,D,2019/01/16 04:02:47.532,2019/01/16 04:02:47.532,36,75,Libya
+365,F,2019/01/16 04:03:25.573,2019/01/16 04:03:25.573,231,204,Angola
+378,M,2019/01/16 04:05:05.341,2019/01/16 04:05:05.341,97,245,Madagascar
+381,J,2019/01/16 04:06:44.195,2019/01/16 04:06:44.195,67,1,Peru
+373,D,2019/01/16 04:11:25.752,2019/01/16 04:11:25.752,146,94,Jamaica
+390,E,2019/01/16 04:11:57.358,2019/01/16 04:11:57.358,52,68,Brazil
+393,F,2019/01/16 04:12:45.266,2019/01/16 04:12:45.266,247,245,Falkland Islands
+387,D,2019/01/16 04:13:38.851,2019/01/16 04:13:38.851,59,210,Czech Republic
+379,L,2019/01/16 04:13:53.474,2019/01/16 04:13:53.474,42,141,U.S. Virgin Islands
+392,D,2019/01/16 04:16:21.709,2019/01/16 04:16:21.709,22,184,Guinea-Bissau
+395,A,2019/01/16 04:20:00.000,2019/01/16 04:20:00.000,144,52,Sri Lanka
+389,G,2019/01/16 04:20:31.010,2019/01/16 04:20:31.010,32,139,Cameroon
+385,G,2019/01/16 04:21:40.956,2019/01/16 04:21:40.956,9,245,Samoa
+383,M,2019/01/16 04:26:42.933,2019/01/16 04:26:42.933,215,39,Laos
+391,E,2019/01/16 04:27:51.631,2019/01/16 04:27:51.631,81,90,Comoros
+388,I,2019/01/16 04:28:02.493,2019/01/16 04:28:02.493,230,118,Georgia
+365,D,2019/01/16 04:31:01.729,2019/01/16 04:31:01.729,57,57,Zimbabwe
+368,N,2019/01/16 04:32:01.897,2019/01/16 04:32:01.897,116,121,Suriname
+394,F,2019/01/16 04:37:03.094,2019/01/16 04:37:03.094,169,209,Saudi Arabia
+378,N,2019/01/16 04:37:11.453,2019/01/16 04:37:11.453,222,208,São Tomé and Príncipe
+373,E,2019/01/16 04:38:54.238,2019/01/16 04:38:54.238,157,69,Jersey
+396,A,2019/01/16 04:40:00.000,2019/01/16 04:40:00.000,61,22,Samoa
+381,L,2019/01/16 04:41:05.956,2019/01/16 04:41:05.956,229,66,Botswana
+390,G,2019/01/16 04:42:09.623,2019/01/16 04:42:09.623,124,150,Wallis & Futuna
+387,E,2019/01/16 04:43:05.638,2019/01/16 04:43:05.638,26,151,New Caledonia
+395,B,2019/01/16 04:44:13.879,2019/01/16 04:44:13.879,160,35,Andorra
+393,D,2019/01/16 04:44:32.925,2019/01/16 04:44:32.925,198,164,Jordan
+392,E,2019/01/16 04:46:05.927,2019/01/16 04:46:05.927,99,65,Singapore
+379,M,2019/01/16 04:47:19.307,2019/01/16 04:47:19.307,230,190,Canada
+383,O,2019/01/16 04:52:30.585,2019/01/16 04:52:30.585,192,35,Sint Maarten
+388,J,2019/01/16 04:54:46.644,2019/01/16 04:54:46.644,155,10,Germany
+389,H,2019/01/16 04:55:44.996,2019/01/16 04:55:44.996,151,123,Uruguay
+385,H,2019/01/16 04:56:10.611,2019/01/16 04:56:10.611,245,182,Nicaragua
+365,E,2019/01/16 04:59:28.311,2019/01/16 04:59:28.311,28,69,Grenada
+397,A,2019/01/16 05:00:00.000,2019/01/16 05:00:00.000,57,94,Uruguay
+391,G,2019/01/16 05:02:10.119,2019/01/16 05:02:10.119,255,220,Vietnam
+394,D,2019/01/16 05:05:38.219,2019/01/16 05:05:38.219,254,79,St. Martin
+373,G,2019/01/16 05:08:17.889,2019/01/16 05:08:17.889,35,153,Kuwait
+396,F,2019/01/16 05:10:03.492,2019/01/16 05:10:03.492,94,46,São Tomé and Príncipe
+387,G,2019/01/16 05:11:15.737,2019/01/16 05:11:15.737,111,149,Maldives
+381,M,2019/01/16 05:11:32.468,2019/01/16 05:11:32.468,78,206,Montenegro
+390,I,2019/01/16 05:12:16.870,2019/01/16 05:12:16.870,225,225,Serbia
+393,E,2019/01/16 05:13:48.387,2019/01/16 05:13:48.387,133,26,Guinea
+395,C,2019/01/16 05:15:10.638,2019/01/16 05:15:10.638,149,28,St. Barthélemy
+392,G,2019/01/16 05:16:46.121,2019/01/16 05:16:46.121,45,150,Venezuela
+379,N,2019/01/16 05:19:04.065,2019/01/16 05:19:04.065,3,125,Argentina
+398,A,2019/01/16 05:20:00.000,2019/01/16 05:20:00.000,85,57,Panama
+388,K,2019/01/16 05:26:13.534,2019/01/16 05:26:13.534,21,101,El Salvador
+365,G,2019/01/16 05:28:27.728,2019/01/16 05:28:27.728,208,109,Equatorial Guinea
+396,D,2019/01/16 05:32:57.605,2019/01/16 05:32:57.605,63,219,Thailand
+394,E,2019/01/16 05:33:52.080,2019/01/16 05:33:52.080,20,170,Ghana
+381,N,2019/01/16 05:37:23.010,2019/01/16 05:37:23.010,210,173,Argentina
+397,B,2019/01/16 05:37:58.093,2019/01/16 05:37:58.093,85,24,Norfolk Island
+391,H,2019/01/16 05:39:09.398,2019/01/16 05:39:09.398,103,241,New Zealand
+399,A,2019/01/16 05:40:00.000,2019/01/16 05:40:00.000,90,69,Macedonia
+387,H,2019/01/16 05:40:07.456,2019/01/16 05:40:07.456,134,24,Togo
+393,G,2019/01/16 05:40:10.396,2019/01/16 05:40:10.396,157,158,Cambodia
+373,H,2019/01/16 05:42:01.889,2019/01/16 05:42:01.889,155,25,South Africa
+395,A,2019/01/16 05:42:22.353,2019/01/16 05:42:22.353,124,7,Niue
+390,J,2019/01/16 05:43:51.004,2019/01/16 05:43:51.004,203,204,Cook Islands
+392,H,2019/01/16 05:47:00.682,2019/01/16 05:47:00.682,5,198,Croatia
+398,F,2019/01/16 05:48:53.980,2019/01/16 05:48:53.980,141,43,Switzerland
+388,M,2019/01/16 05:55:46.844,2019/01/16 05:55:46.844,66,219,Myanmar (Burma)
+400,A,2019/01/16 06:00:00.000,2019/01/16 06:00:00.000,253,101,Dominica
+365,H,2019/01/16 06:01:11.924,2019/01/16 06:01:11.924,31,30,Lithuania
+396,E,2019/01/16 06:03:29.982,2019/01/16 06:03:29.982,169,75,Portugal
+394,G,2019/01/16 06:04:22.400,2019/01/16 06:04:22.400,62,142,Bahamas
+397,C,2019/01/16 06:05:39.148,2019/01/16 06:05:39.148,122,138,Trinidad & Tobago
+393,K,2019/01/16 06:06:28.168,2019/01/16 06:06:28.168,35,139,Guinea-Bissau
+395,F,2019/01/16 06:10:02.315,2019/01/16 06:10:02.315,41,24,St. Barthélemy
+399,F,2019/01/16 06:10:54.971,2019/01/16 06:10:54.971,252,196,Central African Republic
+390,K,2019/01/16 06:11:37.449,2019/01/16 06:11:37.449,62,143,Luxembourg
+398,D,2019/01/16 06:18:31.218,2019/01/16 06:18:31.218,19,166,Papua New Guinea
+401,A,2019/01/16 06:20:00.000,2019/01/16 06:20:00.000,242,170,Christmas Island
+388,O,2019/01/16 06:21:12.188,2019/01/16 06:21:12.188,29,148,Tanzania
+400,F,2019/01/16 06:29:19.225,2019/01/16 06:29:19.225,44,32,Tajikistan
+394,I,2019/01/16 06:29:26.055,2019/01/16 06:29:26.055,228,253,Gambia
+395,D,2019/01/16 06:32:23.975,2019/01/16 06:32:23.975,174,172,Norfolk Island
+393,M,2019/01/16 06:37:01.730,2019/01/16 06:37:01.730,48,149,Syria
+397,A,2019/01/16 06:37:06.284,2019/01/16 06:37:06.284,1,112,Antarctica
+396,G,2019/01/16 06:37:10.489,2019/01/16 06:37:10.489,61,130,Greece
+390,M,2019/01/16 06:37:58.418,2019/01/16 06:37:58.418,34,251,Egypt
+402,A,2019/01/16 06:40:00.000,2019/01/16 06:40:00.000,70,88,Italy
+399,D,2019/01/16 06:40:27.724,2019/01/16 06:40:27.724,183,65,South Korea
+398,E,2019/01/16 06:49:57.138,2019/01/16 06:49:57.138,21,238,Kuwait
+401,F,2019/01/16 06:51:12.211,2019/01/16 06:51:12.211,66,149,Turkmenistan
+395,E,2019/01/16 06:54:28.416,2019/01/16 06:54:28.416,71,37,United Arab Emirates
+400,D,2019/01/16 06:55:53.495,2019/01/16 06:55:53.495,16,175,Laos
+394,J,2019/01/16 06:57:21.763,2019/01/16 06:57:21.763,166,99,Mauritania
+403,A,2019/01/16 07:00:00.000,2019/01/16 07:00:00.000,172,143,Japan
+396,H,2019/01/16 07:02:47.198,2019/01/16 07:02:47.198,170,93,Niger
+397,F,2019/01/16 07:02:59.288,2019/01/16 07:02:59.288,2,21,St. Barthélemy
+390,O,2019/01/16 07:08:03.071,2019/01/16 07:08:03.071,234,66,Hungary
+393,O,2019/01/16 07:09:10.458,2019/01/16 07:09:10.458,27,94,British Indian Ocean Territory
+399,E,2019/01/16 07:12:19.756,2019/01/16 07:12:19.756,214,240,French Polynesia
+402,F,2019/01/16 07:16:36.560,2019/01/16 07:16:36.560,254,12,Dominica
+401,D,2019/01/16 07:19:15.487,2019/01/16 07:19:15.487,26,120,United Kingdom
+404,A,2019/01/16 07:20:00.000,2019/01/16 07:20:00.000,122,194,Montserrat
+400,E,2019/01/16 07:23:59.887,2019/01/16 07:23:59.887,84,169,Tuvalu
+398,G,2019/01/16 07:26:27.105,2019/01/16 07:26:27.105,133,57,Andorra
+395,G,2019/01/16 07:26:33.723,2019/01/16 07:26:33.723,246,208,Panama
+403,B,2019/01/16 07:27:40.798,2019/01/16 07:27:40.798,232,142,Ghana
+394,K,2019/01/16 07:28:17.696,2019/01/16 07:28:17.696,9,162,Niue
+397,D,2019/01/16 07:32:35.353,2019/01/16 07:32:35.353,37,177,South Africa
+405,A,2019/01/16 07:40:00.000,2019/01/16 07:40:00.000,103,67,Macau SAR China
+399,G,2019/01/16 07:43:19.528,2019/01/16 07:43:19.528,38,141,Togo
+401,E,2019/01/16 07:45:02.544,2019/01/16 07:45:02.544,144,222,Bangladesh
+404,B,2019/01/16 07:50:19.035,2019/01/16 07:50:19.035,152,25,Macedonia
+402,D,2019/01/16 07:52:07.088,2019/01/16 07:52:07.088,5,144,Tunisia
+395,I,2019/01/16 07:52:13.464,2019/01/16 07:52:13.464,226,193,Antarctica
+394,M,2019/01/16 07:55:22.354,2019/01/16 07:55:22.354,188,48,Dominican Republic
+400,G,2019/01/16 07:57:10.966,2019/01/16 07:57:10.966,145,30,Brazil
+398,K,2019/01/16 07:58:01.668,2019/01/16 07:58:01.668,167,167,Mexico
+406,A,2019/01/16 08:00:00.000,2019/01/16 08:00:00.000,239,241,Antarctica
+403,C,2019/01/16 08:02:03.381,2019/01/16 08:02:03.381,216,126,Tokelau
+397,E,2019/01/16 08:03:30.182,2019/01/16 08:03:30.182,109,143,Barbados
+399,H,2019/01/16 08:08:04.664,2019/01/16 08:08:04.664,246,217,Afghanistan
+405,B,2019/01/16 08:13:42.389,2019/01/16 08:13:42.389,243,58,Chad
+401,G,2019/01/16 08:15:42.379,2019/01/16 08:15:42.379,234,179,Belarus
+402,E,2019/01/16 08:18:14.699,2019/01/16 08:18:14.699,51,189,New Zealand
+407,A,2019/01/16 08:20:00.000,2019/01/16 08:20:00.000,60,93,Azerbaijan
+404,C,2019/01/16 08:23:33.342,2019/01/16 08:23:33.342,82,130,Micronesia
+394,N,2019/01/16 08:25:06.471,2019/01/16 08:25:06.471,160,47,Comoros
+395,J,2019/01/16 08:25:29.511,2019/01/16 08:25:29.511,109,60,St. Pierre & Miquelon
+400,I,2019/01/16 08:26:58.656,2019/01/16 08:26:58.656,211,178,Denmark
+398,M,2019/01/16 08:28:13.770,2019/01/16 08:28:13.770,88,85,North Korea
+406,F,2019/01/16 08:29:53.522,2019/01/16 08:29:53.522,124,98,Bermuda
+397,G,2019/01/16 08:30:08.137,2019/01/16 08:30:08.137,249,213,Cuba
+403,A,2019/01/16 08:31:09.903,2019/01/16 08:31:09.903,196,136,Cook Islands
+408,A,2019/01/16 08:40:00.000,2019/01/16 08:40:00.000,0,147,Namibia
+405,C,2019/01/16 08:44:55.628,2019/01/16 08:44:55.628,208,174,São Tomé and Príncipe
+407,F,2019/01/16 08:47:28.362,2019/01/16 08:47:28.362,101,14,Jordan
+401,I,2019/01/16 08:48:10.688,2019/01/16 08:48:10.688,38,195,Chile
+402,G,2019/01/16 08:49:36.969,2019/01/16 08:49:36.969,23,150,Iceland
+395,L,2019/01/16 08:55:23.299,2019/01/16 08:55:23.299,221,102,Cyprus
+404,A,2019/01/16 08:55:36.478,2019/01/16 08:55:36.478,29,235,Tanzania
+397,I,2019/01/16 08:56:52.579,2019/01/16 08:56:52.579,127,126,Panama
+400,J,2019/01/16 08:59:49.331,2019/01/16 08:59:49.331,91,44,Guyana
+409,A,2019/01/16 09:00:00.000,2019/01/16 09:00:00.000,163,130,Tajikistan
+406,D,2019/01/16 09:05:06.293,2019/01/16 09:05:06.293,131,120,South Sudan
+408,B,2019/01/16 09:05:41.716,2019/01/16 09:05:41.716,155,12,Central African Republic
+403,B,2019/01/16 09:06:41.345,2019/01/16 09:06:41.345,150,246,Grenada
+398,O,2019/01/16 09:07:45.108,2019/01/16 09:07:45.108,144,126,Djibouti
+401,J,2019/01/16 09:14:18.752,2019/01/16 09:14:18.752,249,243,St. Martin
+405,A,2019/01/16 09:16:44.374,2019/01/16 09:16:44.374,139,154,United Arab Emirates
+410,A,2019/01/16 09:20:00.000,2019/01/16 09:20:00.000,142,21,Western Sahara
+407,D,2019/01/16 09:21:06.647,2019/01/16 09:21:06.647,174,205,Panama
+404,F,2019/01/16 09:23:38.728,2019/01/16 09:23:38.728,11,16,Uruguay
+402,H,2019/01/16 09:25:28.773,2019/01/16 09:25:28.773,216,165,Cape Verde
+395,M,2019/01/16 09:26:22.949,2019/01/16 09:26:22.949,62,216,Taiwan
+400,L,2019/01/16 09:26:53.929,2019/01/16 09:26:53.929,111,122,El Salvador
+397,J,2019/01/16 09:28:40.430,2019/01/16 09:28:40.430,69,101,Fiji
+409,B,2019/01/16 09:31:09.027,2019/01/16 09:31:09.027,92,112,Zambia
+406,E,2019/01/16 09:33:29.008,2019/01/16 09:33:29.008,145,52,French Southern Territories
+403,C,2019/01/16 09:35:34.387,2019/01/16 09:35:34.387,17,88,Bhutan
+408,C,2019/01/16 09:38:51.952,2019/01/16 09:38:51.952,27,156,Iceland
+411,A,2019/01/16 09:40:00.000,2019/01/16 09:40:00.000,118,221,Vatican City
+401,L,2019/01/16 09:45:28.810,2019/01/16 09:45:28.810,181,83,Gibraltar
+405,F,2019/01/16 09:46:11.558,2019/01/16 09:46:11.558,14,116,Cape Verde
+410,F,2019/01/16 09:49:43.107,2019/01/16 09:49:43.107,61,60,Vietnam
+407,E,2019/01/16 09:52:38.109,2019/01/16 09:52:38.109,12,160,Bolivia
+400,M,2019/01/16 09:55:00.511,2019/01/16 09:55:00.511,12,140,Iran
+395,N,2019/01/16 09:55:36.840,2019/01/16 09:55:36.840,106,111,Lesotho
+404,D,2019/01/16 09:56:42.877,2019/01/16 09:56:42.877,62,255,Mongolia
+397,L,2019/01/16 09:59:05.419,2019/01/16 09:59:05.419,243,203,Oman
+412,A,2019/01/16 10:00:00.000,2019/01/16 10:00:00.000,1,71,Canary Islands
+403,A,2019/01/16 10:00:42.615,2019/01/16 10:00:42.615,21,249,Croatia
+409,C,2019/01/16 10:01:52.937,2019/01/16 10:01:52.937,231,117,Monaco
+406,G,2019/01/16 10:05:11.350,2019/01/16 10:05:11.350,5,201,Egypt
+411,F,2019/01/16 10:10:10.050,2019/01/16 10:10:10.050,125,21,Azerbaijan
+408,A,2019/01/16 10:11:57.209,2019/01/16 10:11:57.209,150,220,Luxembourg
+405,D,2019/01/16 10:15:41.840,2019/01/16 10:15:41.840,19,67,Venezuela
+401,M,2019/01/16 10:16:12.248,2019/01/16 10:16:12.248,74,66,Tokelau
+407,G,2019/01/16 10:19:15.929,2019/01/16 10:19:15.929,208,191,New Caledonia
+413,A,2019/01/16 10:20:00.000,2019/01/16 10:20:00.000,38,65,Sweden
+410,D,2019/01/16 10:22:17.746,2019/01/16 10:22:17.746,220,192,Angola
+404,E,2019/01/16 10:25:19.317,2019/01/16 10:25:19.317,18,247,Thailand
+397,M,2019/01/16 10:26:21.952,2019/01/16 10:26:21.952,170,229,Vietnam
+403,F,2019/01/16 10:27:40.427,2019/01/16 10:27:40.427,91,234,Ireland
+400,O,2019/01/16 10:29:17.750,2019/01/16 10:29:17.750,51,173,Swaziland
+412,B,2019/01/16 10:30:27.474,2019/01/16 10:30:27.474,212,65,Gibraltar
+409,A,2019/01/16 10:32:22.852,2019/01/16 10:32:22.852,146,164,Kosovo
+406,H,2019/01/16 10:39:17.538,2019/01/16 10:39:17.538,158,80,Slovenia
+411,D,2019/01/16 10:39:32.023,2019/01/16 10:39:32.023,146,43,Guam
+414,A,2019/01/16 10:40:00.000,2019/01/16 10:40:00.000,68,239,Tonga
+408,B,2019/01/16 10:44:14.041,2019/01/16 10:44:14.041,3,8,Hong Kong SAR China
+407,H,2019/01/16 10:48:00.521,2019/01/16 10:48:00.521,159,244,Italy
+413,B,2019/01/16 10:49:50.502,2019/01/16 10:49:50.502,26,75,Dominican Republic
+401,N,2019/01/16 10:51:07.505,2019/01/16 10:51:07.505,104,217,Namibia
+410,E,2019/01/16 10:51:57.493,2019/01/16 10:51:57.493,8,138,Comoros
+405,E,2019/01/16 10:52:26.869,2019/01/16 10:52:26.869,125,61,Wallis & Futuna
+404,G,2019/01/16 10:54:46.400,2019/01/16 10:54:46.400,167,96,Greece
+397,N,2019/01/16 10:54:52.996,2019/01/16 10:54:52.996,107,254,Thailand
+403,D,2019/01/16 10:55:43.941,2019/01/16 10:55:43.941,51,227,Ghana
+412,C,2019/01/16 10:57:24.485,2019/01/16 10:57:24.485,236,215,Tunisia
+415,A,2019/01/16 11:00:00.000,2019/01/16 11:00:00.000,122,162,Namibia
+409,F,2019/01/16 11:06:24.089,2019/01/16 11:06:24.089,223,91,Iceland
+411,E,2019/01/16 11:07:25.028,2019/01/16 11:07:25.028,160,180,Bangladesh
+408,C,2019/01/16 11:10:27.431,2019/01/16 11:10:27.431,27,219,Norway
+414,B,2019/01/16 11:12:19.568,2019/01/16 11:12:19.568,208,223,Palau
+413,C,2019/01/16 11:18:46.584,2019/01/16 11:18:46.584,237,155,Faroe Islands
+416,A,2019/01/16 11:20:00.000,2019/01/16 11:20:00.000,185,163,Congo - Kinshasa
+410,G,2019/01/16 11:23:54.583,2019/01/16 11:23:54.583,161,31,Faroe Islands
+403,E,2019/01/16 11:25:13.771,2019/01/16 11:25:13.771,3,125,Ceuta & Melilla
+405,G,2019/01/16 11:26:07.793,2019/01/16 11:26:07.793,182,102,Chad
+404,K,2019/01/16 11:26:34.982,2019/01/16 11:26:34.982,236,205,St. Kitts & Nevis
+415,B,2019/01/16 11:27:06.975,2019/01/16 11:27:06.975,225,64,Austria
+412,A,2019/01/16 11:31:19.872,2019/01/16 11:31:19.872,89,98,Qatar
+411,G,2019/01/16 11:32:38.422,2019/01/16 11:32:38.422,241,116,Panama
+409,D,2019/01/16 11:36:47.813,2019/01/16 11:36:47.813,69,189,Grenada
+417,A,2019/01/16 11:40:00.000,2019/01/16 11:40:00.000,89,48,Czech Republic
+414,C,2019/01/16 11:41:14.583,2019/01/16 11:41:14.583,10,187,Greenland
+413,A,2019/01/16 11:49:23.446,2019/01/16 11:49:23.446,242,181,Guatemala
+410,H,2019/01/16 11:49:45.439,2019/01/16 11:49:45.439,173,50,Hungary
+415,C,2019/01/16 11:53:45.932,2019/01/16 11:53:45.932,66,65,Dominica
+405,I,2019/01/16 11:53:50.725,2019/01/16 11:53:50.725,245,251,Gabon
+416,B,2019/01/16 11:54:35.281,2019/01/16 11:54:35.281,94,111,Sweden
+403,G,2019/01/16 11:54:41.237,2019/01/16 11:54:41.237,97,44,Croatia
+404,M,2019/01/16 11:59:15.752,2019/01/16 11:59:15.752,87,128,Ecuador
+418,A,2019/01/16 12:00:00.000,2019/01/16 12:00:00.000,115,103,Congo - Brazzaville
+411,H,2019/01/16 12:01:54.902,2019/01/16 12:01:54.902,80,38,Jordan
+412,B,2019/01/16 12:02:49.282,2019/01/16 12:02:49.282,85,76,St. Helena
+409,E,2019/01/16 12:03:14.210,2019/01/16 12:03:14.210,174,253,Macedonia
+417,B,2019/01/16 12:07:33.776,2019/01/16 12:07:33.776,185,241,Brazil
+414,A,2019/01/16 12:14:54.734,2019/01/16 12:14:54.734,41,166,Ceuta & Melilla
+403,H,2019/01/16 12:16:53.281,2019/01/16 12:16:53.281,60,211,Nigeria
+419,A,2019/01/16 12:20:00.000,2019/01/16 12:20:00.000,70,141,Honduras
+416,C,2019/01/16 12:20:58.522,2019/01/16 12:20:58.522,83,136,Moldova
+413,B,2019/01/16 12:21:51.018,2019/01/16 12:21:51.018,237,51,Albania
+405,J,2019/01/16 12:24:05.353,2019/01/16 12:24:05.353,190,96,Anguilla
+418,B,2019/01/16 12:27:09.801,2019/01/16 12:27:09.801,133,181,Greenland
+415,A,2019/01/16 12:27:28.364,2019/01/16 12:27:28.364,217,191,Palestinian Territories
+404,N,2019/01/16 12:28:10.279,2019/01/16 12:28:10.279,3,254,Gibraltar
+412,C,2019/01/16 12:31:36.542,2019/01/16 12:31:36.542,230,218,Liechtenstein
+417,C,2019/01/16 12:33:10.535,2019/01/16 12:33:10.535,52,16,Sri Lanka
+409,G,2019/01/16 12:33:57.433,2019/01/16 12:33:57.433,115,28,Sint Maarten
+420,A,2019/01/16 12:40:00.000,2019/01/16 12:40:00.000,71,53,Iceland
+414,B,2019/01/16 12:46:57.116,2019/01/16 12:46:57.116,33,57,Jordan
+419,F,2019/01/16 12:48:45.554,2019/01/16 12:48:45.554,27,10,Venezuela
+413,C,2019/01/16 12:52:48.020,2019/01/16 12:52:48.020,109,100,Eritrea
+418,C,2019/01/16 12:54:01.169,2019/01/16 12:54:01.169,154,230,Niger
+405,L,2019/01/16 12:54:23.641,2019/01/16 12:54:23.641,223,53,Czech Republic
+416,A,2019/01/16 12:54:54.613,2019/01/16 12:54:54.613,220,18,Gambia
+412,A,2019/01/16 12:59:06.185,2019/01/16 12:59:06.185,198,252,Tajikistan
+421,A,2019/01/16 13:00:00.000,2019/01/16 13:00:00.000,14,240,United Arab Emirates
+415,F,2019/01/16 13:00:55.979,2019/01/16 13:00:55.979,154,23,Monaco
+417,A,2019/01/16 13:02:41.395,2019/01/16 13:02:41.395,96,182,Réunion
+409,L,2019/01/16 13:03:28.738,2019/01/16 13:03:28.738,243,221,Niue
+420,B,2019/01/16 13:09:36.342,2019/01/16 13:09:36.342,53,183,Vietnam
+414,C,2019/01/16 13:13:31.955,2019/01/16 13:13:31.955,8,240,New Caledonia
+422,A,2019/01/16 13:20:00.000,2019/01/16 13:20:00.000,155,140,Dominica
+419,D,2019/01/16 13:20:37.987,2019/01/16 13:20:37.987,15,151,Grenada
+413,A,2019/01/16 13:24:02.854,2019/01/16 13:24:02.854,11,116,Colombia
+418,A,2019/01/16 13:24:56.685,2019/01/16 13:24:56.685,166,152,Morocco
+405,M,2019/01/16 13:27:20.312,2019/01/16 13:27:20.312,177,99,Russia
+412,F,2019/01/16 13:28:43.030,2019/01/16 13:28:43.030,132,82,Canada
+415,D,2019/01/16 13:29:55.924,2019/01/16 13:29:55.924,130,203,Turkmenistan
+416,B,2019/01/16 13:31:22.774,2019/01/16 13:31:22.774,96,48,Libya
+409,M,2019/01/16 13:33:18.213,2019/01/16 13:33:18.213,37,52,Poland
+421,B,2019/01/16 13:34:48.392,2019/01/16 13:34:48.392,101,163,Djibouti
+417,B,2019/01/16 13:37:59.169,2019/01/16 13:37:59.169,163,3,Israel
+423,A,2019/01/16 13:40:00.000,2019/01/16 13:40:00.000,46,156,Uganda
+420,C,2019/01/16 13:40:31.113,2019/01/16 13:40:31.113,112,118,Cook Islands
+414,A,2019/01/16 13:44:49.534,2019/01/16 13:44:49.534,210,10,Slovakia
+422,B,2019/01/16 13:47:41.396,2019/01/16 13:47:41.396,74,86,Sint Maarten
+419,E,2019/01/16 13:50:58.256,2019/01/16 13:50:58.256,87,179,Jersey
+418,F,2019/01/16 13:54:28.703,2019/01/16 13:54:28.703,73,223,Tunisia
+405,N,2019/01/16 13:55:56.975,2019/01/16 13:55:56.975,80,155,São Tomé and Príncipe
+413,F,2019/01/16 13:57:13.915,2019/01/16 13:57:13.915,103,199,Macedonia
+412,D,2019/01/16 13:57:52.822,2019/01/16 13:57:52.822,236,96,Malta
+416,C,2019/01/16 13:59:06.070,2019/01/16 13:59:06.070,43,109,Niue
+424,A,2019/01/16 14:00:00.000,2019/01/16 14:00:00.000,112,235,Bolivia
+415,E,2019/01/16 14:00:50.741,2019/01/16 14:00:50.741,224,9,Philippines
+409,N,2019/01/16 14:03:59.186,2019/01/16 14:03:59.186,194,84,Saudi Arabia
+421,C,2019/01/16 14:05:47.877,2019/01/16 14:05:47.877,103,6,Tristan da Cunha
+417,C,2019/01/16 14:08:47.058,2019/01/16 14:08:47.058,212,160,Cameroon
+423,F,2019/01/16 14:08:47.378,2019/01/16 14:08:47.378,196,212,Tanzania
+420,A,2019/01/16 14:09:41.255,2019/01/16 14:09:41.255,181,8,Martinique
+414,F,2019/01/16 14:13:33.985,2019/01/16 14:13:33.985,45,64,Isle of Man
+413,D,2019/01/16 14:19:54.956,2019/01/16 14:19:54.956,64,203,Georgia
+425,A,2019/01/16 14:20:00.000,2019/01/16 14:20:00.000,77,131,Congo - Brazzaville
+422,C,2019/01/16 14:21:38.864,2019/01/16 14:21:38.864,90,45,Kyrgyzstan
+419,G,2019/01/16 14:21:53.994,2019/01/16 14:21:53.994,178,20,Martinique
+418,D,2019/01/16 14:22:59.904,2019/01/16 14:22:59.904,13,241,St. Helena
+424,B,2019/01/16 14:26:47.548,2019/01/16 14:26:47.548,75,231,Mauritius
+415,G,2019/01/16 14:27:44.918,2019/01/16 14:27:44.918,74,253,Swaziland
+416,A,2019/01/16 14:30:29.133,2019/01/16 14:30:29.133,178,248,Chad
+412,E,2019/01/16 14:32:25.968,2019/01/16 14:32:25.968,126,199,Liechtenstein
+423,D,2019/01/16 14:36:00.721,2019/01/16 14:36:00.721,89,123,Western Sahara
+417,A,2019/01/16 14:36:08.030,2019/01/16 14:36:08.030,81,183,New Zealand
+421,A,2019/01/16 14:36:14.477,2019/01/16 14:36:14.477,184,248,Macedonia
+414,D,2019/01/16 14:37:08.000,2019/01/16 14:37:08.000,254,51,Antigua & Barbuda
+420,F,2019/01/16 14:39:00.302,2019/01/16 14:39:00.302,95,71,Kuwait
+425,F,2019/01/16 14:46:20.589,2019/01/16 14:46:20.589,135,211,Honduras
+418,E,2019/01/16 14:49:17.992,2019/01/16 14:49:17.992,128,15,British Indian Ocean Territory
+422,A,2019/01/16 14:49:33.625,2019/01/16 14:49:33.625,56,51,Northern Mariana Islands
+413,E,2019/01/16 14:50:46.964,2019/01/16 14:50:46.964,187,226,Denmark
+419,H,2019/01/16 14:51:20.181,2019/01/16 14:51:20.181,124,149,Lithuania
+416,F,2019/01/16 14:55:21.475,2019/01/16 14:55:21.475,59,220,Cook Islands
+424,C,2019/01/16 14:57:42.453,2019/01/16 14:57:42.453,43,137,Sierra Leone
+415,K,2019/01/16 14:59:45.261,2019/01/16 14:59:45.261,84,194,Kosovo
+427,A,2019/01/16 15:00:00.000,2019/01/16 15:00:00.000,179,3,Tonga
+412,G,2019/01/16 15:01:55.695,2019/01/16 15:01:55.695,186,191,Portugal
+421,B,2019/01/16 15:07:21.771,2019/01/16 15:07:21.771,202,154,Macedonia
+420,D,2019/01/16 15:07:44.280,2019/01/16 15:07:44.280,47,250,United Arab Emirates
+417,B,2019/01/16 15:10:03.075,2019/01/16 15:10:03.075,159,72,Turks & Caicos Islands
+425,D,2019/01/16 15:10:33.123,2019/01/16 15:10:33.123,58,83,Tajikistan
+423,E,2019/01/16 15:11:05.214,2019/01/16 15:11:05.214,95,146,Guam
+414,E,2019/01/16 15:12:02.776,2019/01/16 15:12:02.776,72,169,Western Sahara
+418,G,2019/01/16 15:14:53.239,2019/01/16 15:14:53.239,52,153,Grenada
+428,A,2019/01/16 15:20:00.000,2019/01/16 15:20:00.000,45,138,French Southern Territories
+413,G,2019/01/16 15:20:26.902,2019/01/16 15:20:26.902,138,161,Tunisia
+416,D,2019/01/16 15:25:55.180,2019/01/16 15:25:55.180,232,38,Georgia
+422,B,2019/01/16 15:26:15.290,2019/01/16 15:26:15.290,106,168,South Georgia & South Sandwich Islands
+427,B,2019/01/16 15:27:45.038,2019/01/16 15:27:45.038,233,212,Slovakia
+424,A,2019/01/16 15:30:01.192,2019/01/16 15:30:01.192,211,62,Diego Garcia
+412,H,2019/01/16 15:31:52.240,2019/01/16 15:31:52.240,236,18,Macau SAR China
+415,M,2019/01/16 15:32:21.410,2019/01/16 15:32:21.410,78,69,Lesotho
+425,E,2019/01/16 15:32:26.767,2019/01/16 15:32:26.767,72,248,Gambia
+420,E,2019/01/16 15:35:37.717,2019/01/16 15:35:37.717,201,183,U.S. Virgin Islands
+423,G,2019/01/16 15:38:35.315,2019/01/16 15:38:35.315,119,52,Russia
+417,C,2019/01/16 15:39:31.472,2019/01/16 15:39:31.472,198,189,Albania
+429,A,2019/01/16 15:40:00.000,2019/01/16 15:40:00.000,173,127,Kiribati
+421,C,2019/01/16 15:41:12.168,2019/01/16 15:41:12.168,78,33,Canada
+414,G,2019/01/16 15:42:09.519,2019/01/16 15:42:09.519,158,35,Sri Lanka
+418,L,2019/01/16 15:44:06.045,2019/01/16 15:44:06.045,149,128,Anguilla
+428,B,2019/01/16 15:47:02.641,2019/01/16 15:47:02.641,17,6,Greenland
+413,K,2019/01/16 15:48:51.941,2019/01/16 15:48:51.941,34,91,Equatorial Guinea
+422,C,2019/01/16 15:53:20.477,2019/01/16 15:53:20.477,210,69,Morocco
+416,E,2019/01/16 15:58:41.265,2019/01/16 15:58:41.265,144,213,Rwanda
+424,F,2019/01/16 15:59:27.475,2019/01/16 15:59:27.475,211,121,Tunisia
+430,A,2019/01/16 16:00:00.000,2019/01/16 16:00:00.000,21,250,Laos
+415,O,2019/01/16 16:01:44.945,2019/01/16 16:01:44.945,237,254,Liechtenstein
+427,C,2019/01/16 16:05:04.337,2019/01/16 16:05:04.337,225,85,Paraguay
+420,G,2019/01/16 16:05:59.796,2019/01/16 16:05:59.796,233,122,Burundi
+425,G,2019/01/16 16:06:05.212,2019/01/16 16:06:05.212,72,66,Anguilla
+421,A,2019/01/16 16:10:46.732,2019/01/16 16:10:46.732,20,186,Laos
+418,M,2019/01/16 16:11:54.664,2019/01/16 16:11:54.664,96,30,Myanmar (Burma)
+429,F,2019/01/16 16:14:37.299,2019/01/16 16:14:37.299,64,216,Solomon Islands
+428,C,2019/01/16 16:15:57.505,2019/01/16 16:15:57.505,24,199,Bermuda
+414,H,2019/01/16 16:16:07.779,2019/01/16 16:16:07.779,197,3,Peru
+431,A,2019/01/16 16:20:00.000,2019/01/16 16:20:00.000,200,122,Kenya
+413,M,2019/01/16 16:20:28.038,2019/01/16 16:20:28.038,158,209,British Virgin Islands
+422,A,2019/01/16 16:20:51.792,2019/01/16 16:20:51.792,45,185,Guadeloupe
+424,D,2019/01/16 16:28:50.443,2019/01/16 16:28:50.443,207,79,Monaco
+430,B,2019/01/16 16:29:47.320,2019/01/16 16:29:47.320,230,93,Samoa
+416,G,2019/01/16 16:30:43.345,2019/01/16 16:30:43.345,174,80,Andorra
+420,H,2019/01/16 16:33:00.106,2019/01/16 16:33:00.106,38,175,Burundi
+425,H,2019/01/16 16:34:53.682,2019/01/16 16:34:53.682,208,76,Monaco
+427,A,2019/01/16 16:37:29.071,2019/01/16 16:37:29.071,120,166,Svalbard & Jan Mayen
+418,O,2019/01/16 16:39:36.804,2019/01/16 16:39:36.804,82,243,Lithuania
+432,A,2019/01/16 16:40:00.000,2019/01/16 16:40:00.000,194,72,Nigeria
+421,F,2019/01/16 16:42:18.439,2019/01/16 16:42:18.439,224,114,Dominican Republic
+426,G,2019/01/16 16:43:39.487,2019/01/16 16:43:39.487,201,71,Nicaragua
+429,D,2019/01/16 16:44:05.985,2019/01/16 16:44:05.985,133,70,Singapore
+422,B,2019/01/16 16:47:30.278,2019/01/16 16:47:30.278,184,162,Guinea
+431,F,2019/01/16 16:49:17.898,2019/01/16 16:49:17.898,168,42,Spain
+428,A,2019/01/16 16:50:35.366,2019/01/16 16:50:35.366,120,140,Puerto Rico
+413,O,2019/01/16 16:52:06.509,2019/01/16 16:52:06.509,65,127,Dominica
+424,E,2019/01/16 16:55:01.774,2019/01/16 16:55:01.774,40,251,Tajikistan
+430,C,2019/01/16 16:58:35.656,2019/01/16 16:58:35.656,75,103,China
+433,A,2019/01/16 17:00:00.000,2019/01/16 17:00:00.000,58,157,Maldives
+416,K,2019/01/16 17:04:41.396,2019/01/16 17:04:41.396,153,228,South Africa
+432,F,2019/01/16 17:08:01.728,2019/01/16 17:08:01.728,97,70,Burkina Faso
+429,E,2019/01/16 17:11:38.284,2019/01/16 17:11:38.284,102,219,Kosovo
+426,L,2019/01/16 17:13:15.993,2019/01/16 17:13:15.993,108,98,Bahamas
+427,F,2019/01/16 17:14:28.374,2019/01/16 17:14:28.374,136,1,Ireland
+422,C,2019/01/16 17:15:56.622,2019/01/16 17:15:56.622,198,35,Guernsey
+421,D,2019/01/16 17:17:52.783,2019/01/16 17:17:52.783,154,119,Kenya
+434,A,2019/01/16 17:20:00.000,2019/01/16 17:20:00.000,60,40,Bosnia & Herzegovina
+431,D,2019/01/16 17:21:03.264,2019/01/16 17:21:03.264,198,218,Guernsey
+424,G,2019/01/16 17:22:45.467,2019/01/16 17:22:45.467,113,126,Azerbaijan
+428,F,2019/01/16 17:22:48.064,2019/01/16 17:22:48.064,245,98,Andorra
+430,A,2019/01/16 17:25:46.341,2019/01/16 17:25:46.341,47,130,Poland
+433,F,2019/01/16 17:34:00.286,2019/01/16 17:34:00.286,81,91,Sweden
+416,M,2019/01/16 17:35:07.334,2019/01/16 17:35:07.334,116,247,Tonga
+432,D,2019/01/16 17:38:46.013,2019/01/16 17:38:46.013,186,132,Trinidad & Tobago
+435,A,2019/01/16 17:40:00.000,2019/01/16 17:40:00.000,139,208,Somalia
+429,G,2019/01/16 17:40:37.158,2019/01/16 17:40:37.158,52,189,Trinidad & Tobago
+426,M,2019/01/16 17:45:45.630,2019/01/16 17:45:45.630,76,196,Guatemala
+421,E,2019/01/16 17:45:52.885,2019/01/16 17:45:52.885,215,87,St. Lucia
+427,D,2019/01/16 17:48:03.797,2019/01/16 17:48:03.797,85,31,Greenland
+422,A,2019/01/16 17:48:39.867,2019/01/16 17:48:39.867,6,93,Romania
+434,B,2019/01/16 17:50:51.295,2019/01/16 17:50:51.295,166,62,Saudi Arabia
+431,E,2019/01/16 17:50:57.813,2019/01/16 17:50:57.813,71,125,Côte d'Ivoire
+424,I,2019/01/16 17:51:32.945,2019/01/16 17:51:32.945,133,127,Anguilla
+428,D,2019/01/16 17:52:47.123,2019/01/16 17:52:47.123,87,164,Rwanda
+430,B,2019/01/16 17:59:50.339,2019/01/16 17:59:50.339,186,230,Algeria
+436,A,2019/01/16 18:00:00.000,2019/01/16 18:00:00.000,184,145,Tanzania
+433,D,2019/01/16 18:00:03.097,2019/01/16 18:00:03.097,246,129,Finland
+416,N,2019/01/16 18:06:13.884,2019/01/16 18:06:13.884,108,71,Togo
+432,E,2019/01/16 18:07:52.753,2019/01/16 18:07:52.753,75,90,Thailand
+435,B,2019/01/16 18:10:27.040,2019/01/16 18:10:27.040,96,4,Caribbean Netherlands
+429,I,2019/01/16 18:13:09.234,2019/01/16 18:13:09.234,76,55,Tristan da Cunha
+421,G,2019/01/16 18:14:01.849,2019/01/16 18:14:01.849,251,16,Kyrgyzstan
+424,J,2019/01/16 18:17:05.615,2019/01/16 18:17:05.615,40,113,Serbia
+426,O,2019/01/16 18:17:59.569,2019/01/16 18:17:59.569,227,10,Turkey
+428,E,2019/01/16 18:18:19.820,2019/01/16 18:18:19.820,252,122,Guatemala
+422,B,2019/01/16 18:19:39.030,2019/01/16 18:19:39.030,50,9,Canary Islands
+427,E,2019/01/16 18:19:41.940,2019/01/16 18:19:41.940,193,49,Ghana
+437,A,2019/01/16 18:20:00.000,2019/01/16 18:20:00.000,17,105,Maldives
+431,G,2019/01/16 18:22:02.840,2019/01/16 18:22:02.840,73,35,French Polynesia
+434,C,2019/01/16 18:22:40.104,2019/01/16 18:22:40.104,27,172,Solomon Islands
+430,C,2019/01/16 18:24:55.778,2019/01/16 18:24:55.778,123,104,French Guiana
+433,E,2019/01/16 18:29:10.297,2019/01/16 18:29:10.297,57,3,Egypt
+436,B,2019/01/16 18:30:33.336,2019/01/16 18:30:33.336,187,41,Macau SAR China
+432,G,2019/01/16 18:39:43.057,2019/01/16 18:39:43.057,13,14,Puerto Rico
+438,A,2019/01/16 18:40:00.000,2019/01/16 18:40:00.000,118,182,Côte d'Ivoire
+435,C,2019/01/16 18:40:20.471,2019/01/16 18:40:20.471,235,56,Namibia
+429,J,2019/01/16 18:41:57.724,2019/01/16 18:41:57.724,96,31,St. Barthélemy
+421,H,2019/01/16 18:45:39.216,2019/01/16 18:45:39.216,240,124,Guinea-Bissau
+424,L,2019/01/16 18:46:23.203,2019/01/16 18:46:23.203,224,69,Albania
+428,G,2019/01/16 18:47:46.643,2019/01/16 18:47:46.643,76,182,South Africa
+427,G,2019/01/16 18:48:50.895,2019/01/16 18:48:50.895,9,112,Panama
+422,C,2019/01/16 18:50:13.891,2019/01/16 18:50:13.891,8,1,Gambia
+434,A,2019/01/16 18:50:14.569,2019/01/16 18:50:14.569,117,67,Ireland
+437,F,2019/01/16 18:53:22.996,2019/01/16 18:53:22.996,84,211,Iran
+431,K,2019/01/16 18:55:00.617,2019/01/16 18:55:00.617,96,165,Swaziland
+436,C,2019/01/16 18:57:20.748,2019/01/16 18:57:20.748,93,0,Trinidad & Tobago
+439,A,2019/01/16 19:00:00.000,2019/01/16 19:00:00.000,72,25,Nicaragua
+430,A,2019/01/16 19:02:03.621,2019/01/16 19:02:03.621,58,74,Iraq
+433,G,2019/01/16 19:03:50.517,2019/01/16 19:03:50.517,167,182,Cuba
+429,K,2019/01/16 19:08:56.207,2019/01/16 19:08:56.207,57,183,Cayman Islands
+438,B,2019/01/16 19:10:04.922,2019/01/16 19:10:04.922,68,238,Lebanon
+432,I,2019/01/16 19:11:36.805,2019/01/16 19:11:36.805,186,111,Taiwan
+435,A,2019/01/16 19:12:55.970,2019/01/16 19:12:55.970,47,211,Antigua & Barbuda
+428,K,2019/01/16 19:15:40.710,2019/01/16 19:15:40.710,161,16,Iceland
+424,M,2019/01/16 19:17:14.937,2019/01/16 19:17:14.937,186,100,Jordan
+427,H,2019/01/16 19:17:40.567,2019/01/16 19:17:40.567,181,30,Cuba
+440,A,2019/01/16 19:20:00.000,2019/01/16 19:20:00.000,61,19,Turkey
+422,A,2019/01/16 19:20:12.034,2019/01/16 19:20:12.034,226,12,São Tomé and Príncipe
+434,B,2019/01/16 19:23:47.307,2019/01/16 19:23:47.307,218,203,South Africa
+436,A,2019/01/16 19:24:36.022,2019/01/16 19:24:36.022,199,13,India
+437,D,2019/01/16 19:26:38.597,2019/01/16 19:26:38.597,99,74,El Salvador
+439,F,2019/01/16 19:26:48.019,2019/01/16 19:26:48.019,26,73,Vietnam
+431,M,2019/01/16 19:27:17.336,2019/01/16 19:27:17.336,48,167,Sint Maarten
+430,B,2019/01/16 19:31:49.499,2019/01/16 19:31:49.499,186,92,Åland Islands
+433,H,2019/01/16 19:35:13.124,2019/01/16 19:35:13.124,45,114,Madagascar
+435,F,2019/01/16 19:35:38.870,2019/01/16 19:35:38.870,28,197,United States
+432,J,2019/01/16 19:38:16.061,2019/01/16 19:38:16.061,34,93,Peru
+441,A,2019/01/16 19:40:00.000,2019/01/16 19:40:00.000,15,166,Zimbabwe
+438,C,2019/01/16 19:41:03.977,2019/01/16 19:41:03.977,51,40,Western Sahara
+429,M,2019/01/16 19:42:56.103,2019/01/16 19:42:56.103,208,252,Nauru
+422,F,2019/01/16 19:45:39.861,2019/01/16 19:45:39.861,216,98,Paraguay
+428,M,2019/01/16 19:47:39.066,2019/01/16 19:47:39.066,220,124,Latvia
+424,N,2019/01/16 19:49:46.624,2019/01/16 19:49:46.624,62,93,Togo
+440,B,2019/01/16 19:50:55.030,2019/01/16 19:50:55.030,255,253,Greenland
+437,E,2019/01/16 19:54:05.910,2019/01/16 19:54:05.910,172,72,South Georgia & South Sandwich Islands
+436,F,2019/01/16 19:56:05.722,2019/01/16 19:56:05.722,160,40,Portugal
+434,C,2019/01/16 19:56:36.937,2019/01/16 19:56:36.937,203,126,Liberia
+439,D,2019/01/16 19:58:44.422,2019/01/16 19:58:44.422,151,55,Argentina
+431,O,2019/01/16 20:00:45.208,2019/01/16 20:00:45.208,99,72,U.S. Virgin Islands
+430,C,2019/01/16 20:02:32.066,2019/01/16 20:02:32.066,53,118,Portugal
+441,F,2019/01/16 20:03:11.360,2019/01/16 20:03:11.360,251,147,Russia
+435,D,2019/01/16 20:07:47.940,2019/01/16 20:07:47.940,207,179,Kosovo
+432,L,2019/01/16 20:09:36.786,2019/01/16 20:09:36.786,233,66,Egypt
+429,O,2019/01/16 20:10:21.356,2019/01/16 20:10:21.356,192,143,Kyrgyzstan
+422,D,2019/01/16 20:14:37.195,2019/01/16 20:14:37.195,153,141,Madagascar
+438,A,2019/01/16 20:16:04.381,2019/01/16 20:16:04.381,13,42,Liberia
+428,O,2019/01/16 20:19:07.364,2019/01/16 20:19:07.364,172,192,Saudi Arabia
+443,A,2019/01/16 20:20:00.000,2019/01/16 20:20:00.000,212,20,Falkland Islands
+440,C,2019/01/16 20:21:25.562,2019/01/16 20:21:25.562,183,194,Egypt
+436,D,2019/01/16 20:23:38.819,2019/01/16 20:23:38.819,140,106,Angola
+434,A,2019/01/16 20:23:58.737,2019/01/16 20:23:58.737,45,26,Åland Islands
+437,G,2019/01/16 20:26:28.174,2019/01/16 20:26:28.174,172,52,Guadeloupe
+439,E,2019/01/16 20:31:30.820,2019/01/16 20:31:30.820,187,130,Faroe Islands
+435,E,2019/01/16 20:33:05.830,2019/01/16 20:33:05.830,189,35,Sweden
+430,A,2019/01/16 20:33:36.081,2019/01/16 20:33:36.081,234,140,Turkmenistan
+441,D,2019/01/16 20:34:22.848,2019/01/16 20:34:22.848,91,86,Vietnam
+432,M,2019/01/16 20:38:27.082,2019/01/16 20:38:27.082,120,28,Bolivia
+444,A,2019/01/16 20:40:00.000,2019/01/16 20:40:00.000,171,148,Central African Republic
+422,E,2019/01/16 20:41:58.321,2019/01/16 20:41:58.321,198,103,Dominica
+440,A,2019/01/16 20:45:19.299,2019/01/16 20:45:19.299,142,52,Kenya
+436,E,2019/01/16 20:47:58.200,2019/01/16 20:47:58.200,38,57,Bahrain
+434,B,2019/01/16 20:48:02.697,2019/01/16 20:48:02.697,213,50,Kuwait
+438,F,2019/01/16 20:48:28.878,2019/01/16 20:48:28.878,46,230,Swaziland
+443,B,2019/01/16 20:51:59.871,2019/01/16 20:51:59.871,206,54,Kosovo
+430,B,2019/01/16 20:59:32.092,2019/01/16 20:59:32.092,184,218,United Kingdom
+445,A,2019/01/16 21:00:00.000,2019/01/16 21:00:00.000,224,234,Tunisia
+439,G,2019/01/16 21:01:51.403,2019/01/16 21:01:51.403,221,216,Suriname
+441,E,2019/01/16 21:03:41.978,2019/01/16 21:03:41.978,169,205,Lesotho
+435,G,2019/01/16 21:07:49.433,2019/01/16 21:07:49.433,108,41,Malta
+422,G,2019/01/16 21:11:20.622,2019/01/16 21:11:20.622,231,230,Sudan
+444,F,2019/01/16 21:12:03.871,2019/01/16 21:12:03.871,246,75,Syria
+434,C,2019/01/16 21:13:32.726,2019/01/16 21:13:32.726,148,237,Moldova
+432,O,2019/01/16 21:14:20.375,2019/01/16 21:14:20.375,200,228,Brunei
+440,B,2019/01/16 21:14:28.757,2019/01/16 21:14:28.757,188,196,Macau SAR China
+436,G,2019/01/16 21:19:48.018,2019/01/16 21:19:48.018,131,24,Norway
+446,A,2019/01/16 21:20:00.000,2019/01/16 21:20:00.000,103,49,Tajikistan
+438,D,2019/01/16 21:21:28.511,2019/01/16 21:21:28.511,248,98,Iraq
+443,C,2019/01/16 21:21:51.422,2019/01/16 21:21:51.422,99,209,Guyana
+430,C,2019/01/16 21:26:30.813,2019/01/16 21:26:30.813,154,89,Norway
+445,B,2019/01/16 21:30:54.524,2019/01/16 21:30:54.524,141,190,Singapore
+439,L,2019/01/16 21:34:57.042,2019/01/16 21:34:57.042,64,248,Jamaica
+441,G,2019/01/16 21:38:07.182,2019/01/16 21:38:07.182,171,16,Burundi
+447,A,2019/01/16 21:40:00.000,2019/01/16 21:40:00.000,18,155,Eritrea
+422,H,2019/01/16 21:40:58.874,2019/01/16 21:40:58.874,31,58,Gabon
+440,C,2019/01/16 21:42:05.213,2019/01/16 21:42:05.213,201,106,Curaçao
+443,A,2019/01/16 21:42:51.706,2019/01/16 21:42:51.706,178,222,Ireland
+434,A,2019/01/16 21:43:39.489,2019/01/16 21:43:39.489,255,106,Grenada
+435,H,2019/01/16 21:45:06.670,2019/01/16 21:45:06.670,216,107,Haiti
+446,B,2019/01/16 21:49:02.391,2019/01/16 21:49:02.391,206,180,Australia
+444,D,2019/01/16 21:50:46.704,2019/01/16 21:50:46.704,232,134,Peru
+438,E,2019/01/16 21:52:05.339,2019/01/16 21:52:05.339,61,0,Bhutan
+436,I,2019/01/16 21:53:25.435,2019/01/16 21:53:25.435,118,94,Slovenia
+430,A,2019/01/16 21:56:56.581,2019/01/16 21:56:56.581,97,84,Egypt
+442,F,2019/01/16 21:58:12.651,2019/01/16 21:58:12.651,180,144,Northern Mariana Islands
+448,A,2019/01/16 22:00:00.000,2019/01/16 22:00:00.000,35,55,Portugal
+445,C,2019/01/16 22:02:28.889,2019/01/16 22:02:28.889,186,51,Indonesia
+439,M,2019/01/16 22:06:48.345,2019/01/16 22:06:48.345,156,89,Central African Republic
+441,L,2019/01/16 22:08:19.325,2019/01/16 22:08:19.325,68,112,Luxembourg
+447,B,2019/01/16 22:09:19.077,2019/01/16 22:09:19.077,85,130,Kuwait
+434,B,2019/01/16 22:11:34.482,2019/01/16 22:11:34.482,87,213,United Arab Emirates
+443,F,2019/01/16 22:14:23.928,2019/01/16 22:14:23.928,216,2,Montenegro
+440,A,2019/01/16 22:15:03.780,2019/01/16 22:15:03.780,10,246,Syria
+444,E,2019/01/16 22:17:09.624,2019/01/16 22:17:09.624,94,230,Indonesia
+438,G,2019/01/16 22:18:37.461,2019/01/16 22:18:37.461,14,219,Morocco
+446,C,2019/01/16 22:19:06.646,2019/01/16 22:19:06.646,82,181,Kuwait
+436,J,2019/01/16 22:22:35.433,2019/01/16 22:22:35.433,224,60,Macau SAR China
+430,F,2019/01/16 22:25:48.089,2019/01/16 22:25:48.089,177,208,Tuvalu
+442,D,2019/01/16 22:28:34.392,2019/01/16 22:28:34.392,168,129,Côte d'Ivoire
+445,A,2019/01/16 22:30:27.928,2019/01/16 22:30:27.928,195,136,Palau
+448,B,2019/01/16 22:33:06.428,2019/01/16 22:33:06.428,10,165,Barbados
+441,M,2019/01/16 22:35:35.015,2019/01/16 22:35:35.015,38,14,French Polynesia
+439,O,2019/01/16 22:35:44.139,2019/01/16 22:35:44.139,240,163,Malawi
+447,C,2019/01/16 22:38:17.557,2019/01/16 22:38:17.557,104,250,Cameroon
+450,A,2019/01/16 22:40:00.000,2019/01/16 22:40:00.000,145,165,St. Martin
+444,G,2019/01/16 22:42:40.274,2019/01/16 22:42:40.274,134,221,Nauru
+440,B,2019/01/16 22:42:55.033,2019/01/16 22:42:55.033,56,13,Palestinian Territories
+438,L,2019/01/16 22:43:52.198,2019/01/16 22:43:52.198,202,57,Tunisia
+434,C,2019/01/16 22:44:40.155,2019/01/16 22:44:40.155,49,218,Azerbaijan
+443,D,2019/01/16 22:45:33.461,2019/01/16 22:45:33.461,243,113,New Caledonia
+446,A,2019/01/16 22:46:14.170,2019/01/16 22:46:14.170,35,198,Malta
+436,K,2019/01/16 22:54:16.043,2019/01/16 22:54:16.043,211,70,Greece
+442,E,2019/01/16 22:56:33.453,2019/01/16 22:56:33.453,59,46,Andorra
+430,D,2019/01/16 22:57:09.135,2019/01/16 22:57:09.135,107,71,Réunion
+451,A,2019/01/16 23:00:00.000,2019/01/16 23:00:00.000,119,98,French Southern Territories
+441,O,2019/01/16 23:03:18.321,2019/01/16 23:03:18.321,196,121,Bahamas
+448,C,2019/01/16 23:03:37.724,2019/01/16 23:03:37.724,188,139,Cambodia
+445,F,2019/01/16 23:04:02.724,2019/01/16 23:04:02.724,4,246,Ethiopia
+447,A,2019/01/16 23:05:41.285,2019/01/16 23:05:41.285,116,28,Luxembourg
+444,I,2019/01/16 23:12:56.424,2019/01/16 23:12:56.424,174,75,Tunisia
+443,E,2019/01/16 23:13:52.132,2019/01/16 23:13:52.132,191,102,Panama
+438,M,2019/01/16 23:13:55.258,2019/01/16 23:13:55.258,231,39,Uruguay
+450,F,2019/01/16 23:16:07.443,2019/01/16 23:16:07.443,45,211,Antarctica
+446,B,2019/01/16 23:16:24.703,2019/01/16 23:16:24.703,153,99,Venezuela
+434,A,2019/01/16 23:18:10.335,2019/01/16 23:18:10.335,24,65,Armenia
+452,A,2019/01/16 23:20:00.000,2019/01/16 23:20:00.000,155,57,Panama
+436,M,2019/01/16 23:20:50.043,2019/01/16 23:20:50.043,109,237,Czech Republic
+442,G,2019/01/16 23:27:38.199,2019/01/16 23:27:38.199,58,56,Cameroon
+430,E,2019/01/16 23:27:53.270,2019/01/16 23:27:53.270,142,184,Australia
+451,B,2019/01/16 23:30:43.791,2019/01/16 23:30:43.791,49,72,Austria
+448,A,2019/01/16 23:30:53.830,2019/01/16 23:30:53.830,234,40,Niger
+447,B,2019/01/16 23:35:14.112,2019/01/16 23:35:14.112,73,198,Mayotte
+445,D,2019/01/16 23:38:10.673,2019/01/16 23:38:10.673,24,2,Zimbabwe
+453,A,2019/01/16 23:40:00.000,2019/01/16 23:40:00.000,112,187,Equatorial Guinea
+446,C,2019/01/16 23:42:43.766,2019/01/16 23:42:43.766,132,18,American Samoa
+450,D,2019/01/16 23:43:07.507,2019/01/16 23:43:07.507,176,232,Gambia
+444,J,2019/01/16 23:45:09.323,2019/01/16 23:45:09.323,202,80,Bahrain
+438,O,2019/01/16 23:46:29.651,2019/01/16 23:46:29.651,38,217,Kiribati
+443,G,2019/01/16 23:46:43.141,2019/01/16 23:46:43.141,165,39,Uganda
+436,O,2019/01/16 23:51:31.810,2019/01/16 23:51:31.810,89,158,Falkland Islands
+452,F,2019/01/16 23:52:56.178,2019/01/16 23:52:56.178,115,31,Aruba
+430,G,2019/01/16 23:56:33.220,2019/01/16 23:56:33.220,195,13,China
+442,H,2019/01/16 23:58:06.710,2019/01/16 23:58:06.710,105,41,Ceuta & Melilla
+448,F,2019/01/16 23:59:36.255,2019/01/16 23:59:36.255,40,165,Tokelau
+454,A,2019/01/17 00:00:00.000,2019/01/17 00:00:00.000,124,105,Montenegro
+447,C,2019/01/17 00:02:55.642,2019/01/17 00:02:55.642,213,76,Nicaragua
+451,C,2019/01/17 00:03:50.484,2019/01/17 00:03:50.484,129,175,Eritrea
+445,E,2019/01/17 00:09:04.948,2019/01/17 00:09:04.948,102,191,Solomon Islands
+446,A,2019/01/17 00:10:59.757,2019/01/17 00:10:59.757,115,238,Spain
+444,K,2019/01/17 00:12:01.570,2019/01/17 00:12:01.570,29,147,Lithuania
+450,E,2019/01/17 00:14:12.028,2019/01/17 00:14:12.028,220,8,Brazil
+453,B,2019/01/17 00:14:50.084,2019/01/17 00:14:50.084,8,158,Chad
+430,L,2019/01/17 00:17:59.439,2019/01/17 00:17:59.439,236,235,Burkina Faso
+455,A,2019/01/17 00:20:00.000,2019/01/17 00:20:00.000,83,241,Bahamas
+443,H,2019/01/17 00:20:15.469,2019/01/17 00:20:15.469,160,80,Indonesia
+448,D,2019/01/17 00:21:48.013,2019/01/17 00:21:48.013,133,123,Czech Republic
+452,D,2019/01/17 00:21:51.145,2019/01/17 00:21:51.145,8,42,Barbados
+449,F,2019/01/17 00:22:53.505,2019/01/17 00:22:53.505,43,145,Belize
+454,F,2019/01/17 00:33:47.434,2019/01/17 00:33:47.434,94,14,Iraq
+447,A,2019/01/17 00:34:20.855,2019/01/17 00:34:20.855,235,82,Mozambique
+451,A,2019/01/17 00:37:56.008,2019/01/17 00:37:56.008,234,254,St. Vincent & Grenadines
+450,G,2019/01/17 00:39:14.764,2019/01/17 00:39:14.764,105,124,Bosnia & Herzegovina
+453,C,2019/01/17 00:39:34.261,2019/01/17 00:39:34.261,86,18,Chile
+456,A,2019/01/17 00:40:00.000,2019/01/17 00:40:00.000,199,176,South Africa
+445,G,2019/01/17 00:40:14.579,2019/01/17 00:40:14.579,99,1,Denmark
+444,M,2019/01/17 00:40:35.442,2019/01/17 00:40:35.442,123,38,Laos
+455,F,2019/01/17 00:44:59.533,2019/01/17 00:44:59.533,15,60,Estonia
+446,B,2019/01/17 00:47:53.466,2019/01/17 00:47:53.466,88,99,Peru
+430,M,2019/01/17 00:49:53.921,2019/01/17 00:49:53.921,76,18,Lebanon
+448,E,2019/01/17 00:52:22.463,2019/01/17 00:52:22.463,83,5,Cameroon
+449,D,2019/01/17 00:53:41.274,2019/01/17 00:53:41.274,67,89,Iran
+452,E,2019/01/17 00:55:55.532,2019/01/17 00:55:55.532,45,67,Kosovo
+457,A,2019/01/17 01:00:00.000,2019/01/17 01:00:00.000,162,224,Cyprus
+447,F,2019/01/17 01:05:02.135,2019/01/17 01:05:02.135,211,22,El Salvador
+450,H,2019/01/17 01:06:13.685,2019/01/17 01:06:13.685,229,28,Indonesia
+454,D,2019/01/17 01:06:43.346,2019/01/17 01:06:43.346,12,109,Madagascar
+453,A,2019/01/17 01:09:52.937,2019/01/17 01:09:52.937,186,86,Curaçao
+451,B,2019/01/17 01:09:59.362,2019/01/17 01:09:59.362,16,1,Ireland
+444,N,2019/01/17 01:11:10.549,2019/01/17 01:11:10.549,132,130,Trinidad & Tobago
+455,D,2019/01/17 01:11:38.146,2019/01/17 01:11:38.146,218,97,Malta
+456,B,2019/01/17 01:13:17.600,2019/01/17 01:13:17.600,208,167,Canada
+445,H,2019/01/17 01:13:29.963,2019/01/17 01:13:29.963,199,122,Iceland
+430,N,2019/01/17 01:15:29.511,2019/01/17 01:15:29.511,27,115,China
+448,G,2019/01/17 01:17:44.067,2019/01/17 01:17:44.067,113,109,Canary Islands
+458,A,2019/01/17 01:20:00.000,2019/01/17 01:20:00.000,108,7,Cape Verde
+446,C,2019/01/17 01:21:25.866,2019/01/17 01:21:25.866,168,148,Niue
+452,G,2019/01/17 01:24:01.137,2019/01/17 01:24:01.137,16,247,Portugal
+449,E,2019/01/17 01:27:16.763,2019/01/17 01:27:16.763,104,11,Ethiopia
+457,F,2019/01/17 01:28:29.354,2019/01/17 01:28:29.354,246,23,Falkland Islands
+453,F,2019/01/17 01:36:16.992,2019/01/17 01:36:16.992,80,213,Cape Verde
+454,E,2019/01/17 01:36:29.198,2019/01/17 01:36:29.198,49,45,San Marino
+447,D,2019/01/17 01:37:32.557,2019/01/17 01:37:32.557,120,17,Netherlands
+459,A,2019/01/17 01:40:00.000,2019/01/17 01:40:00.000,20,81,Micronesia
+455,E,2019/01/17 01:40:46.529,2019/01/17 01:40:46.529,191,207,Saudi Arabia
+451,C,2019/01/17 01:41:00.225,2019/01/17 01:41:00.225,246,59,Poland
+448,L,2019/01/17 01:42:23.030,2019/01/17 01:42:23.030,53,117,Burundi
+456,C,2019/01/17 01:42:45.427,2019/01/17 01:42:45.427,112,109,North Korea
+458,B,2019/01/17 01:46:20.783,2019/01/17 01:46:20.783,39,118,Belize
+446,A,2019/01/17 01:50:00.398,2019/01/17 01:50:00.398,230,137,Argentina
+457,D,2019/01/17 01:50:16.497,2019/01/17 01:50:16.497,179,238,Slovenia
+452,H,2019/01/17 01:54:16.634,2019/01/17 01:54:16.634,103,173,Papua New Guinea
+449,G,2019/01/17 01:57:16.370,2019/01/17 01:57:16.370,116,69,Vietnam
+460,A,2019/01/17 02:00:00.000,2019/01/17 02:00:00.000,202,222,Belarus
+454,G,2019/01/17 02:04:42.440,2019/01/17 02:04:42.440,167,133,Comoros
+453,D,2019/01/17 02:10:18.539,2019/01/17 02:10:18.539,172,112,Ascension Island
+455,G,2019/01/17 02:11:31.010,2019/01/17 02:11:31.010,248,186,Macau SAR China
+447,E,2019/01/17 02:11:47.675,2019/01/17 02:11:47.675,107,126,St. Barthélemy
+451,A,2019/01/17 02:12:58.841,2019/01/17 02:12:58.841,253,19,Kosovo
+448,M,2019/01/17 02:14:19.727,2019/01/17 02:14:19.727,198,98,Uganda
+459,B,2019/01/17 02:15:11.981,2019/01/17 02:15:11.981,55,147,Cape Verde
+457,E,2019/01/17 02:16:06.067,2019/01/17 02:16:06.067,144,143,Costa Rica
+458,C,2019/01/17 02:17:11.253,2019/01/17 02:17:11.253,149,206,Oman
+456,A,2019/01/17 02:18:11.603,2019/01/17 02:18:11.603,198,143,Åland Islands
+446,B,2019/01/17 02:18:45.362,2019/01/17 02:18:45.362,40,68,Czech Republic
+460,F,2019/01/17 02:26:41.328,2019/01/17 02:26:41.328,127,175,South Georgia & South Sandwich Islands
+449,H,2019/01/17 02:31:25.551,2019/01/17 02:31:25.551,165,144,Ukraine
+454,H,2019/01/17 02:36:33.959,2019/01/17 02:36:33.959,64,111,Ecuador
+453,E,2019/01/17 02:38:33.046,2019/01/17 02:38:33.046,129,86,Germany
+462,A,2019/01/17 02:40:00.000,2019/01/17 02:40:00.000,216,152,Lithuania
+455,I,2019/01/17 02:40:42.376,2019/01/17 02:40:42.376,180,192,Cocos (Keeling) Islands
+458,A,2019/01/17 02:43:43.167,2019/01/17 02:43:43.167,106,88,Netherlands
+447,G,2019/01/17 02:44:23.694,2019/01/17 02:44:23.694,32,151,U.S. Virgin Islands
+451,F,2019/01/17 02:44:33.307,2019/01/17 02:44:33.307,26,191,Bahrain
+457,G,2019/01/17 02:44:44.435,2019/01/17 02:44:44.435,107,108,Central African Republic
+446,C,2019/01/17 02:46:49.271,2019/01/17 02:46:49.271,109,180,Cambodia
+448,O,2019/01/17 02:48:24.753,2019/01/17 02:48:24.753,238,174,Fiji
+459,C,2019/01/17 02:48:26.420,2019/01/17 02:48:26.420,132,197,Tokelau
+456,B,2019/01/17 02:50:51.484,2019/01/17 02:50:51.484,140,240,French Southern Territories
+460,D,2019/01/17 02:56:06.846,2019/01/17 02:56:06.846,26,193,St. Pierre & Miquelon
+463,A,2019/01/17 03:00:00.000,2019/01/17 03:00:00.000,191,177,Montenegro
+453,G,2019/01/17 03:02:09.088,2019/01/17 03:02:09.088,45,158,Tristan da Cunha
+455,J,2019/01/17 03:06:48.029,2019/01/17 03:06:48.029,19,122,Ethiopia
+462,B,2019/01/17 03:10:08.839,2019/01/17 03:10:08.839,143,4,United Kingdom
+447,H,2019/01/17 03:12:44.622,2019/01/17 03:12:44.622,124,68,Aruba
+458,F,2019/01/17 03:14:14.071,2019/01/17 03:14:14.071,31,245,Curaçao
+451,D,2019/01/17 03:14:30.538,2019/01/17 03:14:30.538,155,161,Guernsey
+459,A,2019/01/17 03:16:48.925,2019/01/17 03:16:48.925,82,71,St. Barthélemy
+457,I,2019/01/17 03:17:26.205,2019/01/17 03:17:26.205,189,224,Vanuatu
+446,A,2019/01/17 03:18:18.581,2019/01/17 03:18:18.581,121,33,Bahamas
+456,C,2019/01/17 03:19:09.130,2019/01/17 03:19:09.130,108,52,Antigua & Barbuda
+464,A,2019/01/17 03:20:00.000,2019/01/17 03:20:00.000,38,177,Ireland
+460,E,2019/01/17 03:21:43.949,2019/01/17 03:21:43.949,237,236,Brunei
+453,I,2019/01/17 03:29:46.805,2019/01/17 03:29:46.805,254,79,Mongolia
+463,B,2019/01/17 03:31:18.177,2019/01/17 03:31:18.177,158,96,Algeria
+455,L,2019/01/17 03:32:42.758,2019/01/17 03:32:42.758,110,247,Cyprus
+451,E,2019/01/17 03:38:30.437,2019/01/17 03:38:30.437,47,85,Montenegro
+465,A,2019/01/17 03:40:00.000,2019/01/17 03:40:00.000,137,197,Brazil
+462,C,2019/01/17 03:41:05.919,2019/01/17 03:41:05.919,147,140,Trinidad & Tobago
+457,J,2019/01/17 03:42:09.452,2019/01/17 03:42:09.452,3,239,Germany
+456,A,2019/01/17 03:42:27.216,2019/01/17 03:42:27.216,182,105,Moldova
+458,D,2019/01/17 03:43:13.596,2019/01/17 03:43:13.596,90,236,Fiji
+460,G,2019/01/17 03:49:15.220,2019/01/17 03:49:15.220,15,19,Côte d'Ivoire
+459,F,2019/01/17 03:49:27.722,2019/01/17 03:49:27.722,170,109,Qatar
+464,B,2019/01/17 03:49:35.015,2019/01/17 03:49:35.015,106,97,Diego Garcia
+446,B,2019/01/17 03:49:50.819,2019/01/17 03:49:50.819,24,178,Sudan
+453,J,2019/01/17 03:54:12.546,2019/01/17 03:54:12.546,10,76,Latvia
+463,C,2019/01/17 03:58:00.386,2019/01/17 03:58:00.386,54,122,Taiwan
+466,A,2019/01/17 04:00:00.000,2019/01/17 04:00:00.000,154,180,Netherlands
+451,G,2019/01/17 04:05:02.148,2019/01/17 04:05:02.148,92,209,St. Pierre & Miquelon
+455,M,2019/01/17 04:05:43.769,2019/01/17 04:05:43.769,163,149,Cameroon
+465,F,2019/01/17 04:10:12.968,2019/01/17 04:10:12.968,89,249,Micronesia
+456,F,2019/01/17 04:11:53.755,2019/01/17 04:11:53.755,62,226,American Samoa
+457,L,2019/01/17 04:11:55.496,2019/01/17 04:11:55.496,62,86,Senegal
+462,A,2019/01/17 04:14:25.051,2019/01/17 04:14:25.051,143,78,Djibouti
+446,C,2019/01/17 04:16:06.710,2019/01/17 04:16:06.710,66,238,Canary Islands
+458,E,2019/01/17 04:16:42.212,2019/01/17 04:16:42.212,116,190,Greece
+467,A,2019/01/17 04:20:00.000,2019/01/17 04:20:00.000,160,88,St. Martin
+460,H,2019/01/17 04:20:50.233,2019/01/17 04:20:50.233,174,179,United Arab Emirates
+459,D,2019/01/17 04:20:56.009,2019/01/17 04:20:56.009,110,161,Trinidad & Tobago
+464,C,2019/01/17 04:21:40.508,2019/01/17 04:21:40.508,11,136,Armenia
+453,K,2019/01/17 04:27:56.178,2019/01/17 04:27:56.178,152,177,United Kingdom
+463,A,2019/01/17 04:29:06.094,2019/01/17 04:29:06.094,215,60,Maldives
+455,N,2019/01/17 04:31:34.806,2019/01/17 04:31:34.806,6,202,Serbia
+466,B,2019/01/17 04:31:42.522,2019/01/17 04:31:42.522,159,248,Laos
+456,D,2019/01/17 04:34:49.031,2019/01/17 04:34:49.031,16,130,Norfolk Island
+451,H,2019/01/17 04:36:58.782,2019/01/17 04:36:58.782,214,208,Afghanistan
+457,M,2019/01/17 04:39:48.674,2019/01/17 04:39:48.674,41,130,Cuba
+461,I,2019/01/17 04:42:51.616,2019/01/17 04:42:51.616,216,17,U.S. Virgin Islands
+446,A,2019/01/17 04:43:16.766,2019/01/17 04:43:16.766,187,60,Equatorial Guinea
+462,B,2019/01/17 04:43:43.800,2019/01/17 04:43:43.800,61,107,Nicaragua
+465,D,2019/01/17 04:44:05.858,2019/01/17 04:44:05.858,208,79,India
+458,G,2019/01/17 04:48:45.783,2019/01/17 04:48:45.783,2,53,Libya
+459,E,2019/01/17 04:49:31.634,2019/01/17 04:49:31.634,74,164,Germany
+467,F,2019/01/17 04:50:50.171,2019/01/17 04:50:50.171,217,77,St. Pierre & Miquelon
+464,A,2019/01/17 04:50:55.132,2019/01/17 04:50:55.132,174,14,Maldives
+463,B,2019/01/17 04:58:53.330,2019/01/17 04:58:53.330,239,198,Switzerland
+453,M,2019/01/17 04:59:05.917,2019/01/17 04:59:05.917,42,84,Canada
+466,C,2019/01/17 04:59:34.395,2019/01/17 04:59:34.395,109,51,Gambia
+469,A,2019/01/17 05:00:00.000,2019/01/17 05:00:00.000,5,180,Caribbean Netherlands
+456,E,2019/01/17 05:07:59.871,2019/01/17 05:07:59.871,72,138,Italy
+446,F,2019/01/17 05:11:59.149,2019/01/17 05:11:59.149,105,180,Mongolia
+457,N,2019/01/17 05:12:47.570,2019/01/17 05:12:47.570,129,136,Tristan da Cunha
+461,J,2019/01/17 05:13:59.477,2019/01/17 05:13:59.477,166,63,Gambia
+462,C,2019/01/17 05:14:05.507,2019/01/17 05:14:05.507,78,76,Cameroon
+458,H,2019/01/17 05:14:21.645,2019/01/17 05:14:21.645,180,115,Slovakia
+465,E,2019/01/17 05:14:29.223,2019/01/17 05:14:29.223,252,122,Jamaica
+459,G,2019/01/17 05:14:41.041,2019/01/17 05:14:41.041,221,131,St. Kitts & Nevis
+464,B,2019/01/17 05:19:58.657,2019/01/17 05:19:58.657,40,16,St. Pierre & Miquelon
+470,A,2019/01/17 05:20:00.000,2019/01/17 05:20:00.000,63,161,Algeria
+467,D,2019/01/17 05:24:30.450,2019/01/17 05:24:30.450,64,232,Tristan da Cunha
+466,A,2019/01/17 05:27:24.148,2019/01/17 05:27:24.148,193,119,Cambodia
+453,O,2019/01/17 05:30:25.553,2019/01/17 05:30:25.553,140,181,Czech Republic
+463,C,2019/01/17 05:31:29.867,2019/01/17 05:31:29.867,63,97,Dominican Republic
+469,B,2019/01/17 05:31:40.354,2019/01/17 05:31:40.354,20,27,Gabon
+456,G,2019/01/17 05:38:02.435,2019/01/17 05:38:02.435,238,65,Curaçao
+446,D,2019/01/17 05:39:40.961,2019/01/17 05:39:40.961,250,184,Belgium
+471,A,2019/01/17 05:40:00.000,2019/01/17 05:40:00.000,77,112,Bermuda
+465,G,2019/01/17 05:42:38.777,2019/01/17 05:42:38.777,159,167,Singapore
+462,A,2019/01/17 05:44:37.715,2019/01/17 05:44:37.715,168,18,Angola
+461,L,2019/01/17 05:46:30.683,2019/01/17 05:46:30.683,152,114,Liberia
+459,L,2019/01/17 05:46:39.374,2019/01/17 05:46:39.374,70,96,Czech Republic
+470,F,2019/01/17 05:49:05.513,2019/01/17 05:49:05.513,66,157,Tristan da Cunha
+464,C,2019/01/17 05:53:21.459,2019/01/17 05:53:21.459,183,110,Chad
+467,E,2019/01/17 05:56:03.763,2019/01/17 05:56:03.763,211,63,Jersey
+466,F,2019/01/17 05:56:12.746,2019/01/17 05:56:12.746,126,23,Armenia
+463,A,2019/01/17 05:59:39.831,2019/01/17 05:59:39.831,28,219,Côte d'Ivoire
+472,A,2019/01/17 06:00:00.000,2019/01/17 06:00:00.000,228,183,Laos
+469,C,2019/01/17 06:02:25.253,2019/01/17 06:02:25.253,47,32,Morocco
+468,E,2019/01/17 06:04:46.455,2019/01/17 06:04:46.455,98,211,Puerto Rico
+456,L,2019/01/17 06:06:27.741,2019/01/17 06:06:27.741,97,119,Guernsey
+446,E,2019/01/17 06:07:28.932,2019/01/17 06:07:28.932,19,67,Antarctica
+471,B,2019/01/17 06:11:28.294,2019/01/17 06:11:28.294,9,178,Egypt
+465,H,2019/01/17 06:13:26.118,2019/01/17 06:13:26.118,141,133,China
+462,B,2019/01/17 06:15:39.897,2019/01/17 06:15:39.897,170,173,U.S. Virgin Islands
+459,M,2019/01/17 06:18:25.729,2019/01/17 06:18:25.729,5,0,Tonga
+473,A,2019/01/17 06:20:00.000,2019/01/17 06:20:00.000,238,134,San Marino
+461,M,2019/01/17 06:20:42.598,2019/01/17 06:20:42.598,3,234,Serbia
+470,D,2019/01/17 06:22:58.498,2019/01/17 06:22:58.498,220,244,Marshall Islands
+464,A,2019/01/17 06:23:29.733,2019/01/17 06:23:29.733,119,203,Seychelles
+466,D,2019/01/17 06:24:02.905,2019/01/17 06:24:02.905,172,13,Hong Kong SAR China
+467,G,2019/01/17 06:24:45.443,2019/01/17 06:24:45.443,148,220,Togo
+472,B,2019/01/17 06:26:20.350,2019/01/17 06:26:20.350,246,155,French Guiana
+463,B,2019/01/17 06:29:54.529,2019/01/17 06:29:54.529,214,131,Slovakia
+456,M,2019/01/17 06:32:48.631,2019/01/17 06:32:48.631,164,12,Benin
+469,A,2019/01/17 06:35:17.316,2019/01/17 06:35:17.316,229,150,Senegal
+468,G,2019/01/17 06:35:42.004,2019/01/17 06:35:42.004,208,102,Turks & Caicos Islands
+446,G,2019/01/17 06:36:03.681,2019/01/17 06:36:03.681,18,10,Gibraltar
+471,C,2019/01/17 06:37:58.136,2019/01/17 06:37:58.136,34,205,Mongolia
+474,A,2019/01/17 06:40:00.000,2019/01/17 06:40:00.000,144,121,Pakistan
+462,C,2019/01/17 06:44:10.378,2019/01/17 06:44:10.378,33,220,Rwanda
+473,B,2019/01/17 06:45:39.789,2019/01/17 06:45:39.789,56,113,Israel
+461,O,2019/01/17 06:50:05.619,2019/01/17 06:50:05.619,32,10,Samoa
+459,N,2019/01/17 06:50:42.010,2019/01/17 06:50:42.010,192,107,Cambodia
+467,H,2019/01/17 06:52:33.978,2019/01/17 06:52:33.978,208,11,Gabon
+464,F,2019/01/17 06:52:50.926,2019/01/17 06:52:50.926,138,221,Pakistan
+466,E,2019/01/17 06:54:11.647,2019/01/17 06:54:11.647,20,104,New Zealand
+470,E,2019/01/17 06:55:16.031,2019/01/17 06:55:16.031,33,17,Kiribati
+456,N,2019/01/17 06:59:10.410,2019/01/17 06:59:10.410,211,176,Greece
+472,C,2019/01/17 06:59:16.177,2019/01/17 06:59:16.177,61,102,Honduras
+475,A,2019/01/17 07:00:00.000,2019/01/17 07:00:00.000,53,169,Poland
+469,F,2019/01/17 07:02:03.365,2019/01/17 07:02:03.365,248,26,Jordan
+463,C,2019/01/17 07:03:14.548,2019/01/17 07:03:14.548,216,194,Philippines
+471,A,2019/01/17 07:08:02.239,2019/01/17 07:08:02.239,74,143,Serbia
+468,H,2019/01/17 07:10:09.904,2019/01/17 07:10:09.904,170,214,Micronesia
+474,F,2019/01/17 07:11:32.898,2019/01/17 07:11:32.898,74,47,Aruba
+446,L,2019/01/17 07:11:34.568,2019/01/17 07:11:34.568,52,189,Norway
+473,C,2019/01/17 07:15:43.240,2019/01/17 07:15:43.240,166,218,Mauritania
+462,A,2019/01/17 07:15:59.738,2019/01/17 07:15:59.738,30,87,Guernsey
+466,G,2019/01/17 07:22:21.155,2019/01/17 07:22:21.155,96,173,Spain
+464,D,2019/01/17 07:23:55.554,2019/01/17 07:23:55.554,117,236,Armenia
+470,G,2019/01/17 07:27:33.931,2019/01/17 07:27:33.931,244,168,Svalbard & Jan Mayen
+472,A,2019/01/17 07:27:35.703,2019/01/17 07:27:35.703,194,131,Cyprus
+469,D,2019/01/17 07:28:25.653,2019/01/17 07:28:25.653,66,187,U.S. Outlying Islands
+475,F,2019/01/17 07:30:00.528,2019/01/17 07:30:00.528,146,199,Luxembourg
+463,A,2019/01/17 07:31:19.412,2019/01/17 07:31:19.412,90,153,Turkey
+471,B,2019/01/17 07:33:19.708,2019/01/17 07:33:19.708,128,25,Armenia
+477,A,2019/01/17 07:40:00.000,2019/01/17 07:40:00.000,189,14,Tonga
+474,D,2019/01/17 07:40:14.294,2019/01/17 07:40:14.294,239,189,Uruguay
+446,M,2019/01/17 07:40:40.097,2019/01/17 07:40:40.097,208,10,Colombia
+473,A,2019/01/17 07:41:14.637,2019/01/17 07:41:14.637,174,238,Cape Verde
+462,F,2019/01/17 07:42:50.312,2019/01/17 07:42:50.312,73,156,Israel
+464,E,2019/01/17 07:50:01.201,2019/01/17 07:50:01.201,138,159,Åland Islands
+466,L,2019/01/17 07:52:55.091,2019/01/17 07:52:55.091,176,205,Mayotte
+469,E,2019/01/17 07:53:20.827,2019/01/17 07:53:20.827,104,113,St. Kitts & Nevis
+470,I,2019/01/17 07:54:08.128,2019/01/17 07:54:08.128,188,239,Malaysia
+478,A,2019/01/17 08:00:00.000,2019/01/17 08:00:00.000,131,235,Netherlands
+472,B,2019/01/17 08:00:26.862,2019/01/17 08:00:26.862,118,92,Belarus
+475,D,2019/01/17 08:02:51.312,2019/01/17 08:02:51.312,135,248,Colombia
+471,C,2019/01/17 08:03:15.593,2019/01/17 08:03:15.593,204,199,Senegal
+463,B,2019/01/17 08:04:06.517,2019/01/17 08:04:06.517,76,103,South Korea
+474,E,2019/01/17 08:05:34.576,2019/01/17 08:05:34.576,134,238,Congo - Brazzaville
+473,B,2019/01/17 08:07:26.655,2019/01/17 08:07:26.655,92,248,Vietnam
+462,D,2019/01/17 08:10:02.521,2019/01/17 08:10:02.521,75,189,Marshall Islands
+446,O,2019/01/17 08:11:38.818,2019/01/17 08:11:38.818,33,231,Laos
+477,B,2019/01/17 08:12:32.980,2019/01/17 08:12:32.980,61,157,Italy
+479,A,2019/01/17 08:20:00.000,2019/01/17 08:20:00.000,62,147,Grenada
+466,M,2019/01/17 08:20:31.145,2019/01/17 08:20:31.145,167,250,Cambodia
+464,G,2019/01/17 08:22:21.039,2019/01/17 08:22:21.039,150,175,Guadeloupe
+470,J,2019/01/17 08:24:16.679,2019/01/17 08:24:16.679,214,16,Guinea-Bissau
+469,G,2019/01/17 08:24:53.144,2019/01/17 08:24:53.144,177,243,Kosovo
+478,F,2019/01/17 08:29:25.364,2019/01/17 08:29:25.364,23,205,Dominica
+471,A,2019/01/17 08:33:18.020,2019/01/17 08:33:18.020,104,213,Palau
+472,C,2019/01/17 08:34:16.768,2019/01/17 08:34:16.768,242,21,Tonga
+475,E,2019/01/17 08:35:28.774,2019/01/17 08:35:28.774,57,183,Canada
+474,G,2019/01/17 08:36:01.618,2019/01/17 08:36:01.618,193,233,Greece
+463,C,2019/01/17 08:37:00.328,2019/01/17 08:37:00.328,242,41,Cook Islands
+473,C,2019/01/17 08:37:28.788,2019/01/17 08:37:28.788,119,63,Tajikistan
+462,E,2019/01/17 08:38:58.666,2019/01/17 08:38:58.666,3,145,Chad
+480,A,2019/01/17 08:40:00.000,2019/01/17 08:40:00.000,47,104,Antarctica
+477,C,2019/01/17 08:42:02.397,2019/01/17 08:42:02.397,101,178,Senegal
+464,H,2019/01/17 08:48:47.495,2019/01/17 08:48:47.495,167,179,Italy
+470,K,2019/01/17 08:53:01.611,2019/01/17 08:53:01.611,129,182,Curaçao
+466,N,2019/01/17 08:53:49.867,2019/01/17 08:53:49.867,144,206,St. Barthélemy
+478,D,2019/01/17 08:55:34.065,2019/01/17 08:55:34.065,162,198,Ireland
+479,F,2019/01/17 08:56:05.053,2019/01/17 08:56:05.053,48,141,Dominica
+481,A,2019/01/17 09:00:00.000,2019/01/17 09:00:00.000,136,139,Malaysia
+469,L,2019/01/17 09:01:04.929,2019/01/17 09:01:04.929,52,29,Hungary
+463,A,2019/01/17 09:03:07.463,2019/01/17 09:03:07.463,165,160,St. Barthélemy
+475,G,2019/01/17 09:03:33.545,2019/01/17 09:03:33.545,204,24,Chile
+462,G,2019/01/17 09:05:58.344,2019/01/17 09:05:58.344,215,45,Cameroon
+471,F,2019/01/17 09:06:03.514,2019/01/17 09:06:03.514,247,38,Åland Islands
+474,K,2019/01/17 09:06:25.745,2019/01/17 09:06:25.745,3,121,Bermuda
+472,A,2019/01/17 09:06:50.913,2019/01/17 09:06:50.913,197,153,Iran
+480,F,2019/01/17 09:09:52.451,2019/01/17 09:09:52.451,56,150,Poland
+477,A,2019/01/17 09:11:46.560,2019/01/17 09:11:46.560,240,106,Sudan
+482,A,2019/01/17 09:20:00.000,2019/01/17 09:20:00.000,152,115,Swaziland
+481,B,2019/01/17 09:25:15.877,2019/01/17 09:25:15.877,203,93,Poland
+479,D,2019/01/17 09:26:19.569,2019/01/17 09:26:19.569,156,19,South Georgia & South Sandwich Islands
+470,M,2019/01/17 09:26:27.388,2019/01/17 09:26:27.388,4,180,Dominica
+478,E,2019/01/17 09:30:42.567,2019/01/17 09:30:42.567,81,170,Tanzania
+463,F,2019/01/17 09:31:20.420,2019/01/17 09:31:20.420,145,184,South Georgia & South Sandwich Islands
+469,M,2019/01/17 09:32:11.782,2019/01/17 09:32:11.782,58,197,St. Vincent & Grenadines
+462,H,2019/01/17 09:32:32.866,2019/01/17 09:32:32.866,74,233,Iran
+471,D,2019/01/17 09:33:26.941,2019/01/17 09:33:26.941,217,246,Wallis & Futuna
+475,H,2019/01/17 09:34:32.692,2019/01/17 09:34:32.692,191,22,Lithuania
+472,B,2019/01/17 09:34:51.397,2019/01/17 09:34:51.397,38,40,Central African Republic
+474,M,2019/01/17 09:37:26.425,2019/01/17 09:37:26.425,1,195,Bermuda
+477,B,2019/01/17 09:39:35.146,2019/01/17 09:39:35.146,144,212,Mauritius
+483,A,2019/01/17 09:40:00.000,2019/01/17 09:40:00.000,246,198,Uruguay
+480,D,2019/01/17 09:41:35.714,2019/01/17 09:41:35.714,130,214,Gambia
+476,D,2019/01/17 09:47:57.054,2019/01/17 09:47:57.054,3,137,Italy
+482,B,2019/01/17 09:49:41.084,2019/01/17 09:49:41.084,23,37,Timor-Leste
+470,N,2019/01/17 09:53:41.979,2019/01/17 09:53:41.979,216,36,Sudan
+481,C,2019/01/17 09:53:55.347,2019/01/17 09:53:55.347,91,93,Benin
+479,E,2019/01/17 09:55:33.779,2019/01/17 09:55:33.779,106,3,Hong Kong SAR China
+478,G,2019/01/17 09:59:27.252,2019/01/17 09:59:27.252,95,103,Eritrea
+484,A,2019/01/17 10:00:00.000,2019/01/17 10:00:00.000,209,78,Cambodia
+472,C,2019/01/17 10:01:17.745,2019/01/17 10:01:17.745,63,29,Lebanon
+463,D,2019/01/17 10:02:06.019,2019/01/17 10:02:06.019,91,137,Turks & Caicos Islands
+469,N,2019/01/17 10:02:09.644,2019/01/17 10:02:09.644,72,43,Somalia
+477,C,2019/01/17 10:04:08.133,2019/01/17 10:04:08.133,185,184,Israel
+474,N,2019/01/17 10:04:59.538,2019/01/17 10:04:59.538,59,84,Burkina Faso
+471,E,2019/01/17 10:06:43.407,2019/01/17 10:06:43.407,231,5,Northern Mariana Islands
+483,F,2019/01/17 10:10:10.674,2019/01/17 10:10:10.674,10,78,Zambia
+480,E,2019/01/17 10:15:03.743,2019/01/17 10:15:03.743,19,94,Brunei
+476,E,2019/01/17 10:16:22.341,2019/01/17 10:16:22.341,151,249,Barbados
+485,A,2019/01/17 10:20:00.000,2019/01/17 10:20:00.000,75,12,Faroe Islands
+482,C,2019/01/17 10:21:08.861,2019/01/17 10:21:08.861,162,93,Zimbabwe
+481,A,2019/01/17 10:23:57.606,2019/01/17 10:23:57.606,229,222,Turkmenistan
+479,G,2019/01/17 10:24:50.120,2019/01/17 10:24:50.120,209,168,Haiti
+478,I,2019/01/17 10:29:07.170,2019/01/17 10:29:07.170,240,106,Slovenia
+477,A,2019/01/17 10:29:34.623,2019/01/17 10:29:34.623,253,156,Argentina
+471,G,2019/01/17 10:32:31.369,2019/01/17 10:32:31.369,35,48,Trinidad & Tobago
+472,A,2019/01/17 10:32:40.157,2019/01/17 10:32:40.157,162,213,Aruba
+484,B,2019/01/17 10:33:13.552,2019/01/17 10:33:13.552,40,158,Zambia
+463,E,2019/01/17 10:35:37.272,2019/01/17 10:35:37.272,168,43,Cook Islands
+483,D,2019/01/17 10:38:10.055,2019/01/17 10:38:10.055,209,219,Guinea-Bissau
+486,A,2019/01/17 10:40:00.000,2019/01/17 10:40:00.000,109,144,Malta
+480,G,2019/01/17 10:47:50.764,2019/01/17 10:47:50.764,253,21,Lithuania
+485,B,2019/01/17 10:49:04.977,2019/01/17 10:49:04.977,103,89,Norfolk Island
+479,K,2019/01/17 10:52:03.904,2019/01/17 10:52:03.904,24,141,Philippines
+476,G,2019/01/17 10:52:38.964,2019/01/17 10:52:38.964,52,5,Georgia
+482,A,2019/01/17 10:55:20.121,2019/01/17 10:55:20.121,90,188,Ecuador
+481,F,2019/01/17 10:56:12.478,2019/01/17 10:56:12.478,209,103,Mauritania
+478,J,2019/01/17 10:58:54.109,2019/01/17 10:58:54.109,109,209,Mongolia
+487,A,2019/01/17 11:00:00.000,2019/01/17 11:00:00.000,6,172,Yemen
+484,C,2019/01/17 11:00:51.536,2019/01/17 11:00:51.536,57,11,Brazil
+471,K,2019/01/17 11:02:21.922,2019/01/17 11:02:21.922,169,227,Malta
+472,F,2019/01/17 11:02:22.378,2019/01/17 11:02:22.378,237,242,Oman
+477,B,2019/01/17 11:04:18.275,2019/01/17 11:04:18.275,155,34,Antigua & Barbuda
+463,G,2019/01/17 11:05:34.165,2019/01/17 11:05:34.165,241,186,Bangladesh
+483,E,2019/01/17 11:06:00.588,2019/01/17 11:06:00.588,243,176,Isle of Man
+486,B,2019/01/17 11:12:35.217,2019/01/17 11:12:35.217,203,198,Nepal
+485,C,2019/01/17 11:19:56.409,2019/01/17 11:19:56.409,29,93,Tonga
+488,A,2019/01/17 11:20:00.000,2019/01/17 11:20:00.000,85,88,British Virgin Islands
+480,I,2019/01/17 11:20:48.514,2019/01/17 11:20:48.514,154,143,Mozambique
+476,K,2019/01/17 11:24:08.417,2019/01/17 11:24:08.417,104,157,Congo - Brazzaville
+479,M,2019/01/17 11:25:58.561,2019/01/17 11:25:58.561,152,205,New Zealand
+481,D,2019/01/17 11:26:07.649,2019/01/17 11:26:07.649,187,1,French Guiana
+482,B,2019/01/17 11:27:20.857,2019/01/17 11:27:20.857,251,95,British Virgin Islands
+478,L,2019/01/17 11:28:21.845,2019/01/17 11:28:21.845,3,95,Belarus
+477,C,2019/01/17 11:28:46.471,2019/01/17 11:28:46.471,242,13,Nigeria
+487,B,2019/01/17 11:29:25.183,2019/01/17 11:29:25.183,180,34,Luxembourg
+463,H,2019/01/17 11:33:09.085,2019/01/17 11:33:09.085,62,190,Gabon
+471,M,2019/01/17 11:33:13.253,2019/01/17 11:33:13.253,144,58,Cuba
+472,D,2019/01/17 11:35:45.441,2019/01/17 11:35:45.441,172,27,Mali
+484,A,2019/01/17 11:36:54.624,2019/01/17 11:36:54.624,12,144,Montenegro
+483,G,2019/01/17 11:38:08.687,2019/01/17 11:38:08.687,149,233,Belize
+486,C,2019/01/17 11:39:13.678,2019/01/17 11:39:13.678,60,30,St. Lucia
+480,J,2019/01/17 11:49:37.570,2019/01/17 11:49:37.570,90,56,Samoa
+488,F,2019/01/17 11:49:44.798,2019/01/17 11:49:44.798,250,37,Palestinian Territories
+476,M,2019/01/17 11:52:46.588,2019/01/17 11:52:46.588,233,29,Tokelau
+485,A,2019/01/17 11:53:13.047,2019/01/17 11:53:13.047,110,241,Czech Republic
+478,M,2019/01/17 11:53:45.273,2019/01/17 11:53:45.273,11,246,Liechtenstein
+479,N,2019/01/17 11:54:41.371,2019/01/17 11:54:41.371,172,73,Netherlands
+482,C,2019/01/17 11:54:50.061,2019/01/17 11:54:50.061,48,75,Haiti
+487,C,2019/01/17 11:56:55.778,2019/01/17 11:56:55.778,75,28,Liechtenstein
+477,A,2019/01/17 11:59:37.795,2019/01/17 11:59:37.795,36,69,Cocos (Keeling) Islands
+484,B,2019/01/17 11:59:48.798,2019/01/17 11:59:48.798,103,105,Colombia
+490,A,2019/01/17 12:00:00.000,2019/01/17 12:00:00.000,200,45,North Korea
+472,E,2019/01/17 12:02:53.384,2019/01/17 12:02:53.384,29,157,Ecuador
+471,O,2019/01/17 12:05:35.471,2019/01/17 12:05:35.471,187,163,Israel
+483,H,2019/01/17 12:07:44.808,2019/01/17 12:07:44.808,250,195,Ireland
+486,A,2019/01/17 12:08:37.465,2019/01/17 12:08:37.465,92,237,Kuwait
+480,K,2019/01/17 12:15:59.482,2019/01/17 12:15:59.482,79,59,Tanzania
+491,A,2019/01/17 12:20:00.000,2019/01/17 12:20:00.000,112,70,Tanzania
+488,D,2019/01/17 12:20:04.307,2019/01/17 12:20:04.307,86,113,Belarus
+487,A,2019/01/17 12:20:45.134,2019/01/17 12:20:45.134,165,33,Bulgaria
+476,O,2019/01/17 12:23:01.710,2019/01/17 12:23:01.710,30,186,Ceuta & Melilla
+478,O,2019/01/17 12:24:37.042,2019/01/17 12:24:37.042,65,86,Namibia
+482,A,2019/01/17 12:25:23.219,2019/01/17 12:25:23.219,2,255,Bahrain
+485,F,2019/01/17 12:26:33.109,2019/01/17 12:26:33.109,204,174,Kenya
+472,G,2019/01/17 12:26:51.524,2019/01/17 12:26:51.524,154,43,Cambodia
+477,F,2019/01/17 12:33:29.184,2019/01/17 12:33:29.184,34,83,North Korea
+490,F,2019/01/17 12:33:58.602,2019/01/17 12:33:58.602,172,224,Svalbard & Jan Mayen
+484,C,2019/01/17 12:35:02.055,2019/01/17 12:35:02.055,83,185,Guyana
+486,B,2019/01/17 12:36:50.634,2019/01/17 12:36:50.634,230,30,Réunion
+492,A,2019/01/17 12:40:00.000,2019/01/17 12:40:00.000,46,115,Benin
+480,M,2019/01/17 12:46:35.690,2019/01/17 12:46:35.690,156,160,Jersey
+487,F,2019/01/17 12:47:02.298,2019/01/17 12:47:02.298,169,211,Cayman Islands
+491,B,2019/01/17 12:47:36.008,2019/01/17 12:47:36.008,56,164,Argentina
+488,E,2019/01/17 12:50:12.453,2019/01/17 12:50:12.453,28,150,British Indian Ocean Territory
+482,F,2019/01/17 12:53:32.869,2019/01/17 12:53:32.869,210,70,Gabon
+485,D,2019/01/17 12:54:38.633,2019/01/17 12:54:38.633,212,120,Canary Islands
+472,I,2019/01/17 12:56:48.808,2019/01/17 12:56:48.808,62,224,Syria
+493,A,2019/01/17 13:00:00.000,2019/01/17 13:00:00.000,205,230,Japan
+484,A,2019/01/17 13:01:06.421,2019/01/17 13:01:06.421,140,43,Russia
+477,D,2019/01/17 13:04:57.239,2019/01/17 13:04:57.239,167,146,Czech Republic
+486,C,2019/01/17 13:04:59.947,2019/01/17 13:04:59.947,207,161,Fiji
+490,D,2019/01/17 13:06:00.113,2019/01/17 13:06:00.113,70,246,Burundi
+492,F,2019/01/17 13:11:09.357,2019/01/17 13:11:09.357,188,242,Lithuania
+489,E,2019/01/17 13:11:39.672,2019/01/17 13:11:39.672,162,151,Nepal
+487,D,2019/01/17 13:15:36.990,2019/01/17 13:15:36.990,69,89,Palau
+491,C,2019/01/17 13:16:00.804,2019/01/17 13:16:00.804,248,142,Cook Islands
+488,G,2019/01/17 13:17:01.374,2019/01/17 13:17:01.374,207,56,Uganda
+480,O,2019/01/17 13:18:14.565,2019/01/17 13:18:14.565,229,6,Indonesia
+494,A,2019/01/17 13:20:00.000,2019/01/17 13:20:00.000,145,102,Australia
+485,E,2019/01/17 13:24:36.216,2019/01/17 13:24:36.216,56,138,South Sudan
+482,D,2019/01/17 13:25:32.285,2019/01/17 13:25:32.285,18,77,Iran
+493,F,2019/01/17 13:28:22.413,2019/01/17 13:28:22.413,233,43,Mayotte
+486,A,2019/01/17 13:29:41.578,2019/01/17 13:29:41.578,51,193,Lebanon
+472,J,2019/01/17 13:30:47.832,2019/01/17 13:30:47.832,116,178,Cayman Islands
+477,E,2019/01/17 13:35:18.384,2019/01/17 13:35:18.384,54,232,Malta
+490,E,2019/01/17 13:36:00.554,2019/01/17 13:36:00.554,255,88,Hungary
+492,D,2019/01/17 13:40:59.528,2019/01/17 13:40:59.528,219,78,Qatar
+491,A,2019/01/17 13:44:07.945,2019/01/17 13:44:07.945,233,182,Western Sahara
+487,E,2019/01/17 13:44:19.098,2019/01/17 13:44:19.098,138,195,Cape Verde
+489,G,2019/01/17 13:44:43.932,2019/01/17 13:44:43.932,7,77,Greece
+488,I,2019/01/17 13:46:14.437,2019/01/17 13:46:14.437,168,142,South Georgia & South Sandwich Islands
+482,E,2019/01/17 13:51:36.434,2019/01/17 13:51:36.434,242,202,Albania
+494,B,2019/01/17 13:54:47.566,2019/01/17 13:54:47.566,241,184,Mali
+486,B,2019/01/17 13:59:59.448,2019/01/17 13:59:59.448,60,101,Japan
+496,A,2019/01/17 14:00:00.000,2019/01/17 14:00:00.000,208,5,Costa Rica
+472,L,2019/01/17 14:00:40.545,2019/01/17 14:00:40.545,17,98,Chile
+485,G,2019/01/17 14:00:49.925,2019/01/17 14:00:49.925,50,208,Tokelau
+493,D,2019/01/17 14:02:14.409,2019/01/17 14:02:14.409,30,116,Caribbean Netherlands
+477,G,2019/01/17 14:04:00.742,2019/01/17 14:04:00.742,120,170,Martinique
+490,G,2019/01/17 14:05:10.696,2019/01/17 14:05:10.696,240,63,Chad
+491,B,2019/01/17 14:08:48.669,2019/01/17 14:08:48.669,226,182,Equatorial Guinea
+488,J,2019/01/17 14:11:24.547,2019/01/17 14:11:24.547,235,235,Greenland
+492,E,2019/01/17 14:14:18.130,2019/01/17 14:14:18.130,143,125,Luxembourg
+487,G,2019/01/17 14:16:30.882,2019/01/17 14:16:30.882,152,109,Fiji
+489,H,2019/01/17 14:20:12.011,2019/01/17 14:20:12.011,210,70,Croatia
+482,G,2019/01/17 14:20:44.557,2019/01/17 14:20:44.557,87,124,Mozambique
+494,C,2019/01/17 14:21:01.313,2019/01/17 14:21:01.313,156,182,Spain
+485,L,2019/01/17 14:24:40.781,2019/01/17 14:24:40.781,142,142,Ukraine
+486,C,2019/01/17 14:27:44.069,2019/01/17 14:27:44.069,92,29,Chad
+493,E,2019/01/17 14:31:21.004,2019/01/17 14:31:21.004,178,138,Suriname
+472,M,2019/01/17 14:31:57.365,2019/01/17 14:31:57.365,211,44,Bermuda
+496,F,2019/01/17 14:32:18.167,2019/01/17 14:32:18.167,14,10,Slovenia
+477,I,2019/01/17 14:39:44.903,2019/01/17 14:39:44.903,204,106,Dominican Republic
+490,H,2019/01/17 14:39:53.210,2019/01/17 14:39:53.210,179,6,Israel
+498,A,2019/01/17 14:40:00.000,2019/01/17 14:40:00.000,127,5,Brazil
+488,L,2019/01/17 14:40:00.264,2019/01/17 14:40:00.264,9,245,Togo
+491,C,2019/01/17 14:41:06.269,2019/01/17 14:41:06.269,217,9,Bangladesh
+487,H,2019/01/17 14:44:04.182,2019/01/17 14:44:04.182,183,235,Syria
+492,G,2019/01/17 14:44:52.748,2019/01/17 14:44:52.748,15,200,U.S. Outlying Islands
+482,H,2019/01/17 14:51:22.604,2019/01/17 14:51:22.604,203,164,Estonia
+494,A,2019/01/17 14:52:03.887,2019/01/17 14:52:03.887,113,75,Singapore
+486,A,2019/01/17 14:52:55.330,2019/01/17 14:52:55.330,49,187,Réunion
+485,M,2019/01/17 14:58:12.933,2019/01/17 14:58:12.933,255,163,Trinidad & Tobago
+496,D,2019/01/17 14:59:57.927,2019/01/17 14:59:57.927,81,209,Antigua & Barbuda
+499,A,2019/01/17 15:00:00.000,2019/01/17 15:00:00.000,83,132,Brazil
+472,O,2019/01/17 15:02:44.279,2019/01/17 15:02:44.279,219,184,Switzerland
+493,G,2019/01/17 15:03:20.647,2019/01/17 15:03:20.647,177,162,Gambia
+491,A,2019/01/17 15:08:45.324,2019/01/17 15:08:45.324,142,122,Greece
+477,J,2019/01/17 15:09:32.246,2019/01/17 15:09:32.246,189,210,Trinidad & Tobago
+488,M,2019/01/17 15:11:41.596,2019/01/17 15:11:41.596,218,141,Thailand
+498,B,2019/01/17 15:14:28.919,2019/01/17 15:14:28.919,134,206,Taiwan
+492,H,2019/01/17 15:15:10.947,2019/01/17 15:15:10.947,130,96,San Marino
+494,F,2019/01/17 15:21:51.893,2019/01/17 15:21:51.893,154,179,Congo - Brazzaville
+486,B,2019/01/17 15:23:47.516,2019/01/17 15:23:47.516,196,232,Pitcairn Islands
+485,O,2019/01/17 15:28:26.008,2019/01/17 15:28:26.008,10,22,Algeria
+493,K,2019/01/17 15:30:10.025,2019/01/17 15:30:10.025,129,38,U.S. Virgin Islands
+491,B,2019/01/17 15:31:23.959,2019/01/17 15:31:23.959,29,175,Russia
+499,F,2019/01/17 15:32:23.508,2019/01/17 15:32:23.508,18,90,Caribbean Netherlands
+488,N,2019/01/17 15:41:52.611,2019/01/17 15:41:52.611,234,78,Belgium
+498,C,2019/01/17 15:42:36.010,2019/01/17 15:42:36.010,165,0,Argentina
+477,L,2019/01/17 15:44:01.043,2019/01/17 15:44:01.043,125,196,Mongolia
+497,E,2019/01/17 15:47:48.863,2019/01/17 15:47:48.863,131,250,Senegal
+494,D,2019/01/17 15:53:05.629,2019/01/17 15:53:05.629,11,30,Algeria
+486,C,2019/01/17 15:57:01.413,2019/01/17 15:57:01.413,221,246,Poland
+491,C,2019/01/17 16:00:58.375,2019/01/17 16:00:58.375,109,83,Algeria
+493,M,2019/01/17 16:01:54.744,2019/01/17 16:01:54.744,138,179,Faroe Islands
+499,D,2019/01/17 16:08:43.132,2019/01/17 16:08:43.132,215,69,Croatia
+477,M,2019/01/17 16:14:14.587,2019/01/17 16:14:14.587,227,84,Macedonia
+498,A,2019/01/17 16:15:12.314,2019/01/17 16:15:12.314,3,198,Norfolk Island
+497,G,2019/01/17 16:17:17.526,2019/01/17 16:17:17.526,242,216,Greenland
+494,E,2019/01/17 16:22:22.733,2019/01/17 16:22:22.733,154,51,British Virgin Islands
+486,A,2019/01/17 16:22:50.382,2019/01/17 16:22:50.382,207,161,India
+491,A,2019/01/17 16:25:34.186,2019/01/17 16:25:34.186,117,241,Germany
+493,O,2019/01/17 16:33:09.486,2019/01/17 16:33:09.486,232,13,Chile
+499,E,2019/01/17 16:39:09.727,2019/01/17 16:39:09.727,56,113,Samoa
+477,N,2019/01/17 16:40:29.549,2019/01/17 16:40:29.549,137,112,Grenada
+497,H,2019/01/17 16:47:09.009,2019/01/17 16:47:09.009,100,6,Chile
+498,B,2019/01/17 16:51:21.441,2019/01/17 16:51:21.441,190,78,Bermuda
+491,B,2019/01/17 16:52:17.201,2019/01/17 16:52:17.201,81,59,Montserrat
+494,G,2019/01/17 16:52:32.754,2019/01/17 16:52:32.754,3,223,Vietnam
+486,B,2019/01/17 16:52:33.713,2019/01/17 16:52:33.713,108,193,St. Vincent & Grenadines
+499,G,2019/01/17 17:07:37.590,2019/01/17 17:07:37.590,233,106,Bermuda
+498,C,2019/01/17 17:17:58.072,2019/01/17 17:17:58.072,0,89,Dominican Republic
+494,K,2019/01/17 17:21:11.393,2019/01/17 17:21:11.393,127,86,Åland Islands
+486,C,2019/01/17 17:22:27.079,2019/01/17 17:22:27.079,62,198,Ireland
+491,C,2019/01/17 17:26:11.365,2019/01/17 17:26:11.365,79,170,Namibia
+499,H,2019/01/17 17:35:55.016,2019/01/17 17:35:55.016,205,224,Estonia
+486,A,2019/01/17 17:49:34.223,2019/01/17 17:49:34.223,83,230,Brazil
+498,A,2019/01/17 17:53:03.030,2019/01/17 17:53:03.030,7,94,Liechtenstein
+494,M,2019/01/17 17:55:01.676,2019/01/17 17:55:01.676,234,215,Mauritania
+491,A,2019/01/17 17:57:57.542,2019/01/17 17:57:57.542,173,155,Lesotho
+494,N,2019/01/17 18:20:38.420,2019/01/17 18:20:38.420,100,143,United Kingdom
+486,B,2019/01/17 18:21:01.135,2019/01/17 18:21:01.135,53,100,British Virgin Islands
+498,F,2019/01/17 18:25:21.814,2019/01/17 18:25:21.814,67,112,Papua New Guinea
+491,F,2019/01/17 18:30:07.022,2019/01/17 18:30:07.022,106,90,Indonesia
+486,C,2019/01/17 18:48:42.425,2019/01/17 18:48:42.425,56,202,Cocos (Keeling) Islands
+498,D,2019/01/17 18:56:39.591,2019/01/17 18:56:39.591,249,57,Kenya
+491,D,2019/01/17 19:00:20.911,2019/01/17 19:00:20.911,181,96,Tanzania
+495,C,2019/01/17 19:14:20.670,2019/01/17 19:14:20.670,175,168,Latvia
+486,A,2019/01/17 19:16:08.138,2019/01/17 19:16:08.138,108,39,Austria
+498,E,2019/01/17 19:29:09.219,2019/01/17 19:29:09.219,17,144,Paraguay
+491,E,2019/01/17 19:33:52.070,2019/01/17 19:33:52.070,252,169,Russia
+495,A,2019/01/17 19:43:49.789,2019/01/17 19:43:49.789,253,121,Guinea
+486,F,2019/01/17 19:45:15.842,2019/01/17 19:45:15.842,44,198,Palau
+498,G,2019/01/17 20:00:19.329,2019/01/17 20:00:19.329,111,134,Lebanon
+491,G,2019/01/17 20:00:31.804,2019/01/17 20:00:31.804,69,62,St. Barthélemy
+495,F,2019/01/17 20:15:56.959,2019/01/17 20:15:56.959,87,39,Uganda
+486,D,2019/01/17 20:18:22.899,2019/01/17 20:18:22.899,171,84,South Georgia & South Sandwich Islands
+498,I,2019/01/17 20:27:40.998,2019/01/17 20:27:40.998,191,214,Congo - Brazzaville
+491,I,2019/01/17 20:31:14.295,2019/01/17 20:31:14.295,170,148,Costa Rica
+486,E,2019/01/17 20:45:17.539,2019/01/17 20:45:17.539,34,9,Brunei
+495,D,2019/01/17 20:48:39.392,2019/01/17 20:48:39.392,213,156,Burundi
+491,J,2019/01/17 21:01:45.497,2019/01/17 21:01:45.497,203,197,Somalia
+498,J,2019/01/17 21:03:18.128,2019/01/17 21:03:18.128,92,165,Isle of Man
+486,G,2019/01/17 21:16:41.302,2019/01/17 21:16:41.302,134,32,Swaziland
+495,E,2019/01/17 21:21:14.134,2019/01/17 21:21:14.134,47,40,Afghanistan
+498,K,2019/01/17 21:31:56.752,2019/01/17 21:31:56.752,138,32,Wallis & Futuna
+491,L,2019/01/17 21:32:34.145,2019/01/17 21:32:34.145,98,207,Central African Republic
+486,H,2019/01/17 21:51:37.150,2019/01/17 21:51:37.150,81,92,Moldova
+495,G,2019/01/17 21:53:32.348,2019/01/17 21:53:32.348,138,81,Malawi
+491,M,2019/01/17 22:05:14.933,2019/01/17 22:05:14.933,109,90,St. Martin
+498,M,2019/01/17 22:06:50.371,2019/01/17 22:06:50.371,31,154,Aruba
+495,I,2019/01/17 22:25:21.210,2019/01/17 22:25:21.210,65,252,Cameroon
+491,N,2019/01/17 22:34:50.756,2019/01/17 22:34:50.756,127,227,Åland Islands
+498,N,2019/01/17 22:39:36.269,2019/01/17 22:39:36.269,124,64,Australia
+495,J,2019/01/17 22:54:38.743,2019/01/17 22:54:38.743,30,91,Mongolia
+495,K,2019/01/17 23:24:45.356,2019/01/17 23:24:45.356,95,31,Guatemala
+495,M,2019/01/17 23:57:36.052,2019/01/17 23:57:36.052,240,34,Vanuatu
+495,O,2019/01/18 00:24:26.287,2019/01/18 00:24:26.287,217,71,Costa Rica
diff --git a/requirements.txt b/requirements.txt
index 4c6fecb..b147048 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,12 +1,10 @@
-networkx~=2.4
-numpy~=1.18.4
-setuptools~=41.2.0
-pytest~=5.4.3
-pandas~=1.0.4
-scipy~=1.5.1
-matplotlib~=3.2.2
-seaborn~=0.10.1
-pydot~=1.4.1
-pydot-ng~=2.0.0
-pygraphviz~=1.6
-graphviz~=2.38.0
\ No newline at end of file
+networkx==2.5
+numpy==1.20.*
+pandas==1.2.*
+scipy==1.6.*
+matplotlib==3.3.*
+seaborn==0.11.*
+pydot==1.4.*
+pydot-ng==2.0.*
+pygraphviz==1.7
+pm4py==2.2.*
\ No newline at end of file
diff --git a/setup.py b/setup.py
deleted file mode 100644
index b4f4867..0000000
--- a/setup.py
+++ /dev/null
@@ -1,73 +0,0 @@
-import os
-import re
-# To use a consistent encoding
-from codecs import open as copen
-
-from setuptools import find_packages, setup
-
-here = os.path.abspath(os.path.dirname(__file__))
-
-# Get the long description from the relevant file
-with copen(os.path.join(here, 'README.rst'), encoding='utf-8') as f:
-    long_description = f.read()
-
-
-def read(*parts):
-    with copen(os.path.join(here, *parts), 'r') as fp:
-        return fp.read()
-
-
-def find_version(*file_paths):
-    version_file = read(*file_paths)
-    version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]",
-                              version_file, re.M)
-    if version_match:
-        return version_match.group(1)
-    raise RuntimeError("Unable to find version string.")
-
-
-__version__ = find_version("cdesf2", "__version__.py")
-
-test_deps =[
-    "pytest",
-    "pytest-cov",
-    "coveralls",
-    "validate_version_code",
-    "codacy-coverage",
-    "networkx",
-    "scipy",
-    "pandas",
-    "matplotlib",
-    "seaborn",
-    "pydot",
-    "pydot-ng",
-    "pygraphviz",
-    "graphviz"
-]
-
-extras = {
-    'test': test_deps,
-}
-
-setup(
-    name='cdesf2',
-    version=__version__,
-    description="Latest version of CDESF framework",
-    long_description=long_description,
-    url="https://github.com/gbrltv/CDESF2",
-    author="gabrielmrqstvrs@gmail.com",
-    author_email="gbrltv",
-    # Choose your license
-    license='MIT',
-    include_package_data=True,
-    classifiers=[
-        'Development Status :: 3 - Alpha',
-        'License :: OSI Approved :: MIT License',
-        'Programming Language :: Python :: 3'
-    ],
-    packages=find_packages(exclude=['contrib', 'docs', 'tests*']),
-    tests_require=test_deps,
-    # Add here the package dependencies
-    install_requires=[],
-    extras_require=extras,
-)
\ No newline at end of file


Test patch:
diff --git a/requirements-test.txt b/requirements-test.txt
new file mode 100644
index 0000000..204ed3b
--- /dev/null
+++ b/requirements-test.txt
@@ -0,0 +1,5 @@
+pytest==6.2.*
+pytest-cov==2.11.*
+coveralls==3.0.*
+validate_version_code==1.0.*
+codacy-coverage==1.3.*
\ No newline at end of file
diff --git a/tests/conftest.py b/tests/conftest.py
new file mode 100644
index 0000000..05500f6
--- /dev/null
+++ b/tests/conftest.py
@@ -0,0 +1,13 @@
+import os
+import shutil
+
+import pytest
+
+
+@pytest.fixture(scope="session", autouse=True)
+def cleanup_output():
+    yield
+
+    # Cleanup output directory after all tests execute.
+    if os.path.exists("output/"):
+        shutil.rmtree("output/")
diff --git a/tests/test_activity.py b/tests/test_activity.py
deleted file mode 100644
index 1d8eb81..0000000
--- a/tests/test_activity.py
+++ /dev/null
@@ -1,17 +0,0 @@
-from cdesf2.data_structures.activity import Activity
-from datetime import datetime
-import pytest
-
-
-def test_initial_value():
-    activity = Activity('activity1', datetime.strptime('2015/05/10 08:22:53.000', '%Y/%m/%d %H:%M:%S.%f'))
-    assert isinstance(activity.name, str)
-    assert isinstance(activity.timestamp, datetime)
-    assert isinstance(activity, Activity)
-    assert activity.name == 'activity1'
-    assert activity.timestamp == datetime(2015, 5, 10, 8, 22, 53)
-
-
-def test_no_value():
-    with pytest.raises(Exception):
-        assert Activity()
diff --git a/tests/test_case.py b/tests/test_case.py
index a7340ef..f61f735 100644
--- a/tests/test_case.py
+++ b/tests/test_case.py
@@ -1,84 +1,178 @@
 import numpy as np
 from datetime import datetime
 from cdesf2.data_structures.case import Case
-from cdesf2.data_structures.activity import Activity
+
 import pytest
 
 
 def test_case():
-    case = Case('1')
+    case = Case("1")
     assert isinstance(case, Case)
 
 
 def test_initial_value():
-    case = Case('1')
-    assert isinstance(case.id, str)
-    assert case.id == '1'
-    assert isinstance(case.activities, list)
-    assert case.activities == []
-    assert case.graph_distance is np.nan
-    assert case.time_distance is np.nan
+    case = Case("1")
+    assert case.id == "1"
+    assert len(case.events) == 0
+    assert len(case.distances) == 0
+
+
+# This test is replaced by the static analysis of the Python compiler.
+# def test_no_value():
+#     with pytest.raises(Exception):
+#         assert Case()
+
+
+def test_add_event():
+    stream = [
+        {
+            "concept:name": "Activity A",
+            "time:timestamp": datetime(2021, 4, 30, 9, 0, 0),
+        }
+    ]
 
+    case = Case("test_add_event")
+    case.add_event(stream[0])
 
-def test_no_value():
-    with pytest.raises(Exception):
-        assert Case()
+    assert len(case.events) == 1
+    assert case.events[0]["concept:name"] == "Activity A"
+    assert case.events[0]["time:timestamp"] == datetime(2021, 4, 30, 9, 0, 0)
 
 
-def test_set_activity():
-    activity = Activity('activity1', datetime.strptime('2015/05/10 08:22:53.000', '%Y/%m/%d %H:%M:%S.%f'))
-    case = Case('2')
-    case.set_activity(activity.name, activity.timestamp)
+# def OLD_test_set_activity():
+#     activity = Activity(
+#         "activity1",
+#         datetime.strptime("2015/05/10 08:22:53.000", "%Y/%m/%d %H:%M:%S.%f"),
+#     )
+#     case = Case("2")
+#     case.set_activity(activity.name, activity.timestamp)
 
-    assert isinstance(case.activities[0], Activity)
-    assert case.activities[0].name == 'activity1'
-    assert case.activities[0].timestamp == datetime(2015, 5, 10, 8, 22, 53)
+#     assert isinstance(case.activities[0], Activity)
+#     assert case.activities[0].name == "activity1"
+#     assert case.activities[0].timestamp == datetime(2015, 5, 10, 8, 22, 53)
 
 
 def test_last_time():
-    case = Case('3')
+    stream = [
+        {
+            "concept:name": "Activity A",
+            "time:timestamp": datetime(2021, 4, 30, 9, 0, 0),
+        },
+        {
+            "concept:name": "Activity B",
+            "time:timestamp": datetime(2021, 4, 30, 10, 0, 0),
+        },
+        {
+            "concept:name": "Activity C",
+            "time:timestamp": datetime(2021, 5, 1, 9, 0, 0),
+        },
+    ]
 
-    case.set_activity('activity1', datetime(2015, 5, 10, 8, 30, 00))
-    case.set_activity('activity2', datetime(2015, 5, 10, 9, 00, 00))
-    case.set_activity('activity3', datetime(2015, 5, 10, 9, 30, 00))
-    case.set_activity('activity4', datetime(2015, 5, 10, 10, 00, 00))
+    case = Case("test_last_time")
+    case.add_event(stream[0])
+    case.add_event(stream[1])
+    case.add_event(stream[2])
 
-    assert case.last_time == datetime(2015, 5, 10, 10, 00, 00)
+    assert case.last_time == datetime(2021, 5, 1, 9, 0, 0)
 
 
-def test_get_trace():
-    case = Case('4')
-    activity_names = ['activity1', 'activity2', 'activity3', 'activity4']
+# def OLD_test_last_time():
+#     case = Case("3")
 
-    case.set_activity(activity_names[0], datetime(2015, 5, 10, 8, 30, 00))
-    case.set_activity(activity_names[1], datetime(2015, 5, 10, 9, 00, 00))
-    case.set_activity(activity_names[2], datetime(2015, 5, 10, 9, 30, 00))
-    case.set_activity(activity_names[3], datetime(2015, 5, 10, 10, 00, 00))
+#     case.set_activity("activity1", datetime(2015, 5, 10, 8, 30, 00))
+#     case.set_activity("activity2", datetime(2015, 5, 10, 9, 00, 00))
+#     case.set_activity("activity3", datetime(2015, 5, 10, 9, 30, 00))
+#     case.set_activity("activity4", datetime(2015, 5, 10, 10, 00, 00))
 
-    assert case.get_trace() == activity_names
+#     assert case.last_time == datetime(2015, 5, 10, 10, 00, 00)
 
 
-def test_get_timestamps():
-    case = Case('5')
-    timestamps = [datetime(2015, 5, 10, 8, 30, 00),
-                  datetime(2015, 5, 10, 9, 00, 00),
-                  datetime(2015, 5, 10, 9, 30, 00),
-                  datetime(2015, 5, 10, 10, 00, 00)]
+def test_get_trace():
+    stream = [
+        {
+            "concept:name": "Activity A",
+            "time:timestamp": datetime(2021, 4, 30, 9, 0, 0),
+        },
+        {
+            "concept:name": "Activity B",
+            "time:timestamp": datetime(2021, 4, 30, 10, 0, 0),
+        },
+        {
+            "concept:name": "Activity C",
+            "time:timestamp": datetime(2021, 5, 1, 9, 0, 0),
+        },
+    ]
 
-    case.set_activity('activity1', datetime(2015, 5, 10, 8, 30, 00))
-    case.set_activity('activity2', datetime(2015, 5, 10, 9, 00, 00))
-    case.set_activity('activity3', datetime(2015, 5, 10, 9, 30, 00))
-    case.set_activity('activity4', datetime(2015, 5, 10, 10, 00, 00))
+    case = Case("test_get_trace")
+    case.add_event(stream[0])
+    case.add_event(stream[1])
+    case.add_event(stream[2])
 
-    assert case.get_timestamps() == timestamps
+    assert case.get_trace() == ["Activity A", "Activity B", "Activity C"]
 
 
-def test_distances():
-    case = Case('6')
+# def OLD_test_get_trace():
+#     case = Case("4")
+#     activity_names = ["activity1", "activity2", "activity3", "activity4"]
 
-    assert case.graph_distance is np.nan
-    assert case.time_distance is np.nan
+#     case.set_activity(activity_names[0], datetime(2015, 5, 10, 8, 30, 00))
+#     case.set_activity(activity_names[1], datetime(2015, 5, 10, 9, 00, 00))
+#     case.set_activity(activity_names[2], datetime(2015, 5, 10, 9, 30, 00))
+#     case.set_activity(activity_names[3], datetime(2015, 5, 10, 10, 00, 00))
 
-    case.graph_distance = 6.57
-    case.time_distance = 88
+#     assert case.get_trace() == activity_names
 
+
+def test_get_timestamps():
+    stream = [
+        {
+            "concept:name": "Activity A",
+            "time:timestamp": datetime(2021, 4, 30, 9, 0, 0),
+        },
+        {
+            "concept:name": "Activity B",
+            "time:timestamp": datetime(2021, 4, 30, 10, 0, 0),
+        },
+        {
+            "concept:name": "Activity C",
+            "time:timestamp": datetime(2021, 5, 1, 9, 0, 0),
+        },
+    ]
+
+    case = Case("test_get_timestamps")
+    case.add_event(stream[0])
+    case.add_event(stream[1])
+    case.add_event(stream[2])
+
+    assert case.get_timestamps() == [
+        datetime(2021, 4, 30, 9, 00, 00),
+        datetime(2021, 4, 30, 10, 00, 00),
+        datetime(2021, 5, 1, 9, 00, 00),
+    ]
+
+
+# def OLD_test_get_timestamps():
+#     case = Case("5")
+#     timestamps = [
+#         datetime(2015, 5, 10, 8, 30, 00),
+#         datetime(2015, 5, 10, 9, 00, 00),
+#         datetime(2015, 5, 10, 9, 30, 00),
+#         datetime(2015, 5, 10, 10, 00, 00),
+#     ]
+
+#     case.set_activity("activity1", datetime(2015, 5, 10, 8, 30, 00))
+#     case.set_activity("activity2", datetime(2015, 5, 10, 9, 00, 00))
+#     case.set_activity("activity3", datetime(2015, 5, 10, 9, 30, 00))
+#     case.set_activity("activity4", datetime(2015, 5, 10, 10, 00, 00))
+
+#     assert case.get_timestamps() == timestamps
+
+
+# def test_distances():
+#     case = Case("6")
+
+#     assert case.graph_distance is np.nan
+#     assert case.time_distance is np.nan
+
+#     case.graph_distance = 6.57
+#     case.time_distance = 88
diff --git a/tests/test_cdesf.py b/tests/test_cdesf.py
index c898ce2..3d9069b 100644
--- a/tests/test_cdesf.py
+++ b/tests/test_cdesf.py
@@ -1,52 +1,103 @@
 from datetime import datetime
-from os import path, remove
+from os import path
+
 import networkx as nx
-import numpy as np
 import pytest
-from cdesf2.utils import initialize_graph, normalize_graph, extract_case_distances
-from cdesf2.core import CDESF
 from cdesf2.clustering import DenStream
+from cdesf2.core import CDESF
 from cdesf2.data_structures import Case
-from cdesf2.utils import read_csv
+from cdesf2.utils import (
+    calculate_case_distances,
+    initialize_graph,
+    normalize_graph,
+    read_csv,
+    read_xes,
+)
 
 
 class TestCdesf:
     @pytest.fixture
     def process(self):
-        process = CDESF(name='test',
-                        time_horizon=43200,
-                        lambda_=0.15,
-                        beta=0.3,
-                        epsilon=0.1,
-                        mu=4,
-                        stream_speed=1000,
-                        n_features=2,
-                        gen_plot=False,
-                        gen_metrics=False)
+        process = CDESF(
+            name="test",
+            time_horizon=43200,
+            lambda_=0.15,
+            beta=0.3,
+            epsilon=0.1,
+            mu=4,
+            stream_speed=1000,
+            gen_plot=False,
+            gen_metrics=False,
+        )
         return process
 
     @pytest.fixture
     def cases_list(self):
-        case_1 = Case('1')
-        case_1.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case_1.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10))
-        case_1.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20))
-
-        case_2 = Case('2')
-        case_2.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case_2.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10))
-
-        case_3 = Case('3')
-        case_3.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case_3.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10))
-        case_3.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20))
-        case_3.set_activity('activityD', datetime(2015, 5, 10, 8, 00, 30))
+        case_1 = Case("1")
+        case_1.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case_1.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            }
+        )
+        case_1.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            }
+        )
+
+        case_2 = Case("2")
+        case_2.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case_2.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            }
+        )
+
+        case_3 = Case("3")
+        case_3.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case_3.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            }
+        )
+        case_3.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            }
+        )
+        case_3.add_event(
+            {
+                "concept:name": "activityD",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 30),
+            }
+        )
 
         return [case_3, case_2, case_1]
 
     def test_initial_value(self, process):
         assert isinstance(process.name, str)
-        assert process.name == 'test'
+        assert process.name == "test"
         assert isinstance(process.gen_plot, bool)
         assert not process.gen_plot
         assert isinstance(process.gen_metrics, bool)
@@ -80,83 +131,110 @@ def test_initial_value(self, process):
         assert process.cluster_metrics == []
         assert process.case_metrics == []
 
-    def test_initialize_case_metrics(self, process, cases_list):
+    def test_initialize_case_metrics(self, process: CDESF, cases_list: "list[Case]"):
         process.initialize_case_metrics()
         assert process.cases == []
 
         process.cases = cases_list
 
         case_3 = process.cases[0]
-        assert np.isnan(case_3.graph_distance)
-        assert np.isnan(case_3.time_distance)
+        assert case_3.distances.get("graph") is None
+        assert case_3.distances.get("graph") is None
         case_2 = process.cases[1]
-        assert np.isnan(case_2.graph_distance)
-        assert np.isnan(case_2.time_distance)
+        assert case_2.distances.get("graph") is None
+        assert case_2.distances.get("graph") is None
         case_1 = process.cases[2]
-        assert np.isnan(case_1.graph_distance)
-        assert np.isnan(case_1.time_distance)
+        assert case_1.distances.get("graph") is None
+        assert case_1.distances.get("graph") is None
 
         process.initialize_case_metrics()
 
         case_3 = process.cases[0]
-        assert case_3.graph_distance == 0
-        assert case_3.time_distance == 0
+        assert case_3.distances["graph"] == 0
+        assert case_3.distances["time"] == 0
         case_2 = process.cases[1]
-        assert case_2.graph_distance == 0
-        assert case_2.time_distance == 0
+        assert case_2.distances["graph"] == 0
+        assert case_2.distances["time"] == 0
         case_1 = process.cases[2]
-        assert case_1.graph_distance == 0
-        assert case_1.time_distance == 0
+        assert case_1.distances["graph"] == 0
+        assert case_1.distances["time"] == 0
 
         process.cases = cases_list
-        process.process_model_graph = initialize_graph(nx.DiGraph(), process.cases)
+        process.process_model_graph = initialize_graph(process.cases)
         process.initialize_case_metrics()
         case_3 = process.cases[0]
 
-        graph_dist_3, time_dist_3 = extract_case_distances(process.process_model_graph, case_3)
-        assert case_3.graph_distance == graph_dist_3
-        assert case_3.time_distance == time_dist_3
+        # Verify that the distances are applied.
+        distances_for_case_3 = calculate_case_distances(
+            process.process_model_graph, case_3
+        )
+        assert case_3.distances["graph"] == distances_for_case_3["graph"]
+        assert case_3.distances["time"] == distances_for_case_3["time"]
 
-        graph_dist_2, time_dist_2 = extract_case_distances(process.process_model_graph, case_2)
+        distances_for_case_2 = calculate_case_distances(
+            process.process_model_graph, case_2
+        )
         case_2 = process.cases[1]
-        assert case_2.graph_distance == graph_dist_2
-        assert case_2.time_distance == time_dist_2
+        assert case_2.distances["graph"] == distances_for_case_2["graph"]
+        assert case_2.distances["time"] == distances_for_case_2["time"]
 
-        graph_dist_1, time_dist_1 = extract_case_distances(process.process_model_graph, case_1)
+        distances_for_case_1 = calculate_case_distances(
+            process.process_model_graph, case_1
+        )
         case_1 = process.cases[2]
-        assert case_1.graph_distance == graph_dist_1
-        assert case_1.time_distance == time_dist_1
+        assert case_1.distances["graph"] == distances_for_case_1["graph"]
+        assert case_1.distances["time"] == distances_for_case_1["time"]
 
     def test_get_case(self, process):
-        case1 = Case('1')
-        case2 = Case('2')
-        case3 = Case('3')
-        case4 = Case('4')
+        case1 = Case("1")
+        case2 = Case("2")
+        case3 = Case("3")
+        case4 = Case("4")
         process.cases = [case1, case2, case3, case4]
 
-        case = process.get_case('1')
+        case = process.get_case_index("1")
         assert case == 0
-        case = process.get_case('3')
+        case = process.get_case_index("3")
         assert case == 2
 
         process.cases = [case4, case1, case3, case2]
-        case = process.get_case('1')
+        case = process.get_case_index("1")
         assert case == 1
-        case = process.get_case('2')
+        case = process.get_case_index("2")
         assert case == 3
 
-        case = process.get_case('5')
+        case = process.get_case_index("5")
         assert case is None
 
     def test_release_cases_from_memory(self, process):
-        case1 = Case('1')
-        case2 = Case('2')
-        case3 = Case('3')
-        case4 = Case('4')
-        case4.set_activity('activity1', datetime(2015, 5, 10, 8, 30, 00))
-        case1.set_activity('activity1', datetime(2015, 5, 10, 9, 00, 00))
-        case3.set_activity('activity1', datetime(2015, 5, 10, 9, 30, 00))
-        case2.set_activity('activity1', datetime(2015, 5, 10, 10, 00, 00))
+        case1 = Case("1")
+        case2 = Case("2")
+        case3 = Case("3")
+        case4 = Case("4")
+        case4.add_event(
+            {
+                "concept:name": "activity1",
+                "time:timestamp": datetime(2015, 5, 10, 8, 30, 00),
+            }
+        )
+        case1.add_event(
+            {
+                "concept:name": "activity1",
+                "time:timestamp": datetime(2015, 5, 10, 9, 00, 00),
+            }
+        )
+        case3.add_event(
+            {
+                "concept:name": "activity1",
+                "time:timestamp": datetime(2015, 5, 10, 9, 30, 00),
+            }
+        )
+        case2.add_event(
+            {
+                "concept:name": "activity1",
+                "time:timestamp": datetime(2015, 5, 10, 10, 00, 00),
+            }
+        )
 
         process.cases = [case2, case3, case1, case4]
         process.release_cases_from_memory()
@@ -191,31 +269,44 @@ def test_initialize_cdesf(self, process, cases_list):
 
         assert process.cases == []
         with pytest.raises(Exception):
-            assert initialize_graph(nx.DiGraph(), [])
-
-        case4 = Case('4')
-        case4.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case4.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10))
-        case4.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20))
+            assert initialize_graph([])
+
+        case4 = Case("4")
+        case4.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case4.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            }
+        )
+        case4.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            }
+        )
 
         process.cases = cases_list
         process.cases.insert(0, case4)
-        process.process_model_graph = initialize_graph(nx.DiGraph(), process.cases)
-        pmg = initialize_graph(nx.DiGraph(), cases_list)
+        process.process_model_graph = initialize_graph(process.cases)
+        pmg = initialize_graph(cases_list)
         for case in cases_list:
-            graph_distance, time_distance = extract_case_distances(pmg, case)
-            case.graph_distance = graph_distance
-            case.time_distance = time_distance
+            case.distances = calculate_case_distances(pmg, case)
         case_4 = process.cases[0]
 
         process.initialize_cdesf()
 
-        graph_dist_4, time_dist_4 = extract_case_distances(pmg, case_4)
-        assert case_4.graph_distance == graph_dist_4
-        assert case_4.time_distance == time_dist_4
+        distances_for_case_4 = calculate_case_distances(pmg, case_4)
+        assert case_4.distances["graph"] == distances_for_case_4["graph"]
+        assert case_4.distances["time"] == distances_for_case_4["time"]
 
         assert len(process.denstream.p_micro_clusters) == 1
-        assert process.denstream.all_cases.keys() == {'1', '4'}
+        assert process.denstream.all_cases.keys() == {"1", "4"}
         new_p_mc = process.denstream.p_micro_clusters[0]
         assert new_p_mc.weight == 2
         assert new_p_mc.creation_time == 0
@@ -223,32 +314,46 @@ def test_initialize_cdesf(self, process, cases_list):
 
         assert process.initialized
 
-    def test_set_case(self, process):
+    def test_set_case(self, process: CDESF):
         assert process.check_point_cases == 0
         assert process.cases == []
-        process.set_case('5', 'activityA', datetime(2015, 5, 10, 8, 00, 00))
+        process.set_case(
+            "5",
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            },
+        )
         assert process.check_point_cases == 1
         assert process.cases
         case_test = process.cases[0]
-        assert case_test.id == '5'
-        activity = case_test.activities[0]
-        assert activity.name == 'activityA'
-        assert activity.timestamp == datetime(2015, 5, 10, 8, 00, 00)
-
-        case1 = Case('1')
-        case2 = Case('2')
-        case3 = Case('3')
-        case4 = Case('4')
+        assert case_test.id == "5"
+        assert case_test.events[0].get("concept:name") == "activityA"
+        assert case_test.events[0].get("time:timestamp") == datetime(
+            2015, 5, 10, 8, 00, 00
+        )
+
+        case1 = Case("1")
+        case2 = Case("2")
+        case3 = Case("3")
+        case4 = Case("4")
         process.check_point_cases = 0
         process.cases = [case1, case2, case3, case4]
-        process.set_case('3', 'activityA', datetime(2015, 5, 10, 8, 00, 00))
+        process.set_case(
+            "3",
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            },
+        )
         assert process.check_point_cases == 0
         assert process.cases
         case_test = process.cases[0]
-        assert case_test.id == '3'
-        activity = case_test.activities[0]
-        assert activity.name == 'activityA'
-        assert activity.timestamp == datetime(2015, 5, 10, 8, 00, 00)
+        assert case_test.id == "3"
+        assert case_test.events[0].get("concept:name") == "activityA"
+        assert case_test.events[0].get("time:timestamp") == datetime(
+            2015, 5, 10, 8, 00, 00
+        )
 
     def test_check_point_update(self, process, cases_list):
         assert process.cp_count == 0
@@ -298,22 +403,31 @@ def test_check_point_update(self, process, cases_list):
         assert process.nyquist == 1
         assert len(process.process_model_graph.edges) == 3
         assert len(process.process_model_graph.nodes) == 4
-        check_point_graph = initialize_graph(nx.DiGraph(), process.cases)
-        for node1, node2, data in process.process_model_graph.edges.data():
-            assert process.process_model_graph[node1][node2] == check_point_graph[node1][node2]
-            assert process.process_model_graph[node1][node2]['weight'] == check_point_graph[node1][node2]['weight']
-            assert process.process_model_graph[node1][node2]['time'] == check_point_graph[node1][node2]['time']
+        check_point_graph = initialize_graph(process.cases)
+        for node1, node2, _ in process.process_model_graph.edges.data():
+            assert (
+                process.process_model_graph[node1][node2]
+                == check_point_graph[node1][node2]
+            )
+            assert (
+                process.process_model_graph[node1][node2]["weight"]
+                == check_point_graph[node1][node2]["weight"]
+            )
+            assert (
+                process.process_model_graph[node1][node2]["time"]
+                == check_point_graph[node1][node2]["time"]
+            )
 
         # self.cases > nyquist
         # nyquist = 1
         # process_model_graph = 1
-        process.process_model_graph = initialize_graph(nx.DiGraph(), [cases_list[2]])
+        process.process_model_graph = initialize_graph([cases_list[2]])
         pmg = process.process_model_graph
-        assert pmg['activityA']['activityB']
-        assert pmg['activityB']['activityC']
+        assert pmg["activityA"]["activityB"]
+        assert pmg["activityB"]["activityC"]
         with pytest.raises(Exception):
-            assert pmg['activityC']['activityD']
-            assert pmg['activityD']['activityE']
+            assert pmg["activityC"]["activityD"]
+            assert pmg["activityD"]["activityE"]
         case3 = cases_list[0]
         process.cases = cases_list
         process.check_point_cases = 1
@@ -327,21 +441,31 @@ def test_check_point_update(self, process, cases_list):
         assert process.nyquist == 1
         assert len(process.process_model_graph.edges) == 3
         assert len(process.process_model_graph.nodes) == 4
-        assert pmg['activityA']['activityB']
-        assert pmg['activityB']['activityC']
-        assert pmg['activityC']['activityD']
-        check_point_graph = initialize_graph(nx.DiGraph(), process.cases)
-        for node1, node2, data in process.process_model_graph.edges.data():
-            pmg[node1][node2]['weight'] *= 0.95
-            pmg[node1][node2]['weight'] += check_point_graph[node1][node2]['weight']
-            pmg[node1][node2]['time'] += check_point_graph[node1][node2]['time']
+        assert pmg["activityA"]["activityB"]
+        assert pmg["activityB"]["activityC"]
+        assert pmg["activityC"]["activityD"]
+        check_point_graph = initialize_graph(process.cases)
+        for node1, node2, _ in process.process_model_graph.edges.data():
+            pmg[node1][node2]["weight"] *= 0.95
+            pmg[node1][node2]["weight"] += check_point_graph[node1][node2]["weight"]
+            pmg[node1][node2]["time"] += check_point_graph[node1][node2]["time"]
             pmg = normalize_graph(pmg)
-            assert process.process_model_graph[node1][node2]['weight'] == pmg[node1][node2]['weight']
-            assert process.process_model_graph[node1][node2]['weight_normalized'] == \
-                pmg[node1][node2]['weight_normalized']
-            assert process.process_model_graph[node1][node2]['time'] == pmg[node1][node2]['time']
-            assert process.process_model_graph[node1][node2]['time_normalized'] == \
-                pmg[node1][node2]['time_normalized']
+            assert (
+                process.process_model_graph[node1][node2]["weight"]
+                == pmg[node1][node2]["weight"]
+            )
+            assert (
+                process.process_model_graph[node1][node2]["weight_normalized"]
+                == pmg[node1][node2]["weight_normalized"]
+            )
+            assert (
+                process.process_model_graph[node1][node2]["time"]
+                == pmg[node1][node2]["time"]
+            )
+            assert (
+                process.process_model_graph[node1][node2]["time_normalized"]
+                == pmg[node1][node2]["time_normalized"]
+            )
 
         # self.cases > nyquist
         # nyquist = 2
@@ -349,12 +473,12 @@ def test_check_point_update(self, process, cases_list):
         case2 = cases_list[1]
         case3 = cases_list[0]
 
-        process.process_model_graph = initialize_graph(nx.DiGraph(), [cases_list[1]])
+        process.process_model_graph = initialize_graph([cases_list[1]])
         pmg = process.process_model_graph
-        assert pmg['activityA']['activityB']
+        assert pmg["activityA"]["activityB"]
         with pytest.raises(Exception):
-            assert pmg['activityC']['activityD']
-            assert pmg['activityD']['activityE']
+            assert pmg["activityC"]["activityD"]
+            assert pmg["activityD"]["activityE"]
 
         process.cases = cases_list
         process.check_point_cases = 1
@@ -369,21 +493,31 @@ def test_check_point_update(self, process, cases_list):
 
         assert len(process.process_model_graph.edges) == 3
         assert len(process.process_model_graph.nodes) == 4
-        assert process.process_model_graph['activityA']['activityB']
-        assert process.process_model_graph['activityB']['activityC']
-        assert process.process_model_graph['activityC']['activityD']
-        check_point_graph = initialize_graph(nx.DiGraph(), process.cases)
-        for node1, node2, data in process.process_model_graph.edges.data():
-            pmg[node1][node2]['weight'] *= 0.95
-            pmg[node1][node2]['weight'] += check_point_graph[node1][node2]['weight']
-            pmg[node1][node2]['time'] += check_point_graph[node1][node2]['time']
+        assert process.process_model_graph["activityA"]["activityB"]
+        assert process.process_model_graph["activityB"]["activityC"]
+        assert process.process_model_graph["activityC"]["activityD"]
+        check_point_graph = initialize_graph(process.cases)
+        for node1, node2, _ in process.process_model_graph.edges.data():
+            pmg[node1][node2]["weight"] *= 0.95
+            pmg[node1][node2]["weight"] += check_point_graph[node1][node2]["weight"]
+            pmg[node1][node2]["time"] += check_point_graph[node1][node2]["time"]
             pmg = normalize_graph(pmg)
-            assert process.process_model_graph[node1][node2]['weight'] == pmg[node1][node2]['weight']
-            assert process.process_model_graph[node1][node2]['weight_normalized'] == \
-                pmg[node1][node2]['weight_normalized']
-            assert process.process_model_graph[node1][node2]['time'] == pmg[node1][node2]['time']
-            assert process.process_model_graph[node1][node2]['time_normalized'] == \
-                pmg[node1][node2]['time_normalized']
+            assert (
+                process.process_model_graph[node1][node2]["weight"]
+                == pmg[node1][node2]["weight"]
+            )
+            assert (
+                process.process_model_graph[node1][node2]["weight_normalized"]
+                == pmg[node1][node2]["weight_normalized"]
+            )
+            assert (
+                process.process_model_graph[node1][node2]["time"]
+                == pmg[node1][node2]["time"]
+            )
+            assert (
+                process.process_model_graph[node1][node2]["time_normalized"]
+                == pmg[node1][node2]["time_normalized"]
+            )
 
         # self.cases > nyquist
         # nyquist = 2
@@ -391,13 +525,13 @@ def test_check_point_update(self, process, cases_list):
         case2 = cases_list[1]
         case3 = cases_list[0]
 
-        process.process_model_graph = initialize_graph(nx.DiGraph(), [cases_list[1], cases_list[2]])
+        process.process_model_graph = initialize_graph([cases_list[1], cases_list[2]])
         pmg = process.process_model_graph
-        assert pmg['activityA']['activityB']
-        assert pmg['activityB']['activityC']
+        assert pmg["activityA"]["activityB"]
+        assert pmg["activityB"]["activityC"]
         with pytest.raises(Exception):
-            assert pmg['activityC']['activityD']
-            assert pmg['activityD']['activityE']
+            assert pmg["activityC"]["activityD"]
+            assert pmg["activityD"]["activityE"]
 
         process.cases = cases_list
         process.check_point_cases = 1
@@ -412,167 +546,373 @@ def test_check_point_update(self, process, cases_list):
 
         assert len(process.process_model_graph.edges) == 3
         assert len(process.process_model_graph.nodes) == 4
-        assert process.process_model_graph['activityA']['activityB']
-        assert process.process_model_graph['activityB']['activityC']
-        assert process.process_model_graph['activityC']['activityD']
-        check_point_graph = initialize_graph(nx.DiGraph(), process.cases)
-        for node1, node2, data in process.process_model_graph.edges.data():
-            pmg[node1][node2]['weight'] *= 0.95
-            pmg[node1][node2]['weight'] += check_point_graph[node1][node2]['weight']
-            pmg[node1][node2]['time'] += check_point_graph[node1][node2]['time']
+        assert process.process_model_graph["activityA"]["activityB"]
+        assert process.process_model_graph["activityB"]["activityC"]
+        assert process.process_model_graph["activityC"]["activityD"]
+        check_point_graph = initialize_graph(process.cases)
+        for node1, node2, _ in process.process_model_graph.edges.data():
+            pmg[node1][node2]["weight"] *= 0.95
+            pmg[node1][node2]["weight"] += check_point_graph[node1][node2]["weight"]
+            pmg[node1][node2]["time"] += check_point_graph[node1][node2]["time"]
             pmg = normalize_graph(pmg)
-            assert process.process_model_graph[node1][node2]['weight'] == pmg[node1][node2]['weight']
-            assert process.process_model_graph[node1][node2]['weight_normalized'] == \
-                pmg[node1][node2]['weight_normalized']
-            assert process.process_model_graph[node1][node2]['time'] == pmg[node1][node2]['time']
-            assert process.process_model_graph[node1][node2]['time_normalized'] == \
-                pmg[node1][node2]['time_normalized']
-
-    def test_process_event(self, process):
+            assert (
+                process.process_model_graph[node1][node2]["weight"]
+                == pmg[node1][node2]["weight"]
+            )
+            assert (
+                process.process_model_graph[node1][node2]["weight_normalized"]
+                == pmg[node1][node2]["weight_normalized"]
+            )
+            assert (
+                process.process_model_graph[node1][node2]["time"]
+                == pmg[node1][node2]["time"]
+            )
+            assert (
+                process.process_model_graph[node1][node2]["time_normalized"]
+                == pmg[node1][node2]["time_normalized"]
+            )
+
+    def test_process_event(self, process: CDESF):
         process.gen_metrics = True
         assert process.event_index == 0
         assert process.cases == []
         assert process.check_point == datetime(2010, 1, 1)
         process.check_point = datetime(2015, 5, 10, 8, 22, 53)
 
-        process.process_event('1', 'activityA', datetime(2015, 5, 10, 8, 00, 00))
+        process.process_event(
+            {
+                "case:concept:name": "1",
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            },
+        )
         assert process.event_index == 0
-        assert process.total_cases == {'1'}
+        assert process.total_cases == {"1"}
 
         assert process.check_point_cases == 1
         assert process.cases
         case_test = process.cases[0]
-        assert case_test.id == '1'
-        activity = case_test.activities[0]
-        assert activity.name == 'activityA'
-        assert activity.timestamp == datetime(2015, 5, 10, 8, 00, 00)
+        assert case_test.id == "1"
+        event = case_test.events[0]
+        assert event.get("concept:name") == "activityA"
+        assert event.get("time:timestamp") == datetime(2015, 5, 10, 8, 00, 00)
         assert process.check_point == datetime(2015, 5, 10, 8, 22, 53)
         assert not process.initialized
 
-        process.process_event('2', 'activityA', datetime(2015, 5, 10, 8, 00, 00))
-        process.process_event('1', 'activityB', datetime(2015, 5, 10, 8, 00, 10))
-        process.process_event('3', 'activityA', datetime(2015, 5, 10, 8, 00, 00))
-        process.process_event('3', 'activityB', datetime(2015, 5, 10, 8, 00, 10))
-        process.process_event('4', 'activityC', datetime(2015, 5, 10, 8, 00, 20))
-        process.process_event('3', 'activityC', datetime(2015, 5, 10, 8, 00, 20))
-        process.process_event('4', 'activityD', datetime(2015, 5, 10, 8, 00, 30))
-        process.process_event('5', 'activityA', datetime(2015, 5, 10, 8, 00, 00))
-        process.process_event('5', 'activityD', datetime(2015, 5, 10, 8, 00, 30))
+        process.process_event(
+            {
+                "case:concept:name": "2",
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            },
+        )
+        process.process_event(
+            {
+                "case:concept:name": "1",
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            },
+        )
+        process.process_event(
+            {
+                "case:concept:name": "3",
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            },
+        )
+        process.process_event(
+            {
+                "case:concept:name": "3",
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            },
+        )
+        process.process_event(
+            {
+                "case:concept:name": "4",
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            },
+        )
+        process.process_event(
+            {
+                "case:concept:name": "3",
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            },
+        )
+        process.process_event(
+            {
+                "case:concept:name": "4",
+                "concept:name": "activityD",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 30),
+            },
+        )
+        process.process_event(
+            {
+                "case:concept:name": "5",
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            },
+        )
+        process.process_event(
+            {
+                "case:concept:name": "5",
+                "concept:name": "activityD",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 30),
+            },
+        )
 
         assert process.check_point_cases == 5
-        assert process.total_cases == {'1', '2', '3', '4', '5'}
+        assert process.total_cases == {"1", "2", "3", "4", "5"}
         assert process.cases
         assert len(process.cases) == 5
         case_test = process.cases[0]
-        assert case_test.id == '5'
-        activity = case_test.activities[0]
-        assert activity.name == 'activityA'
-        assert activity.timestamp == datetime(2015, 5, 10, 8, 00, 00)
-        activity = case_test.activities[1]
-        assert activity.name == 'activityD'
-        assert activity.timestamp == datetime(2015, 5, 10, 8, 00, 30)
+        assert case_test.id == "5"
+        event = case_test.events[0]
+        assert event.get("concept:name") == "activityA"
+        assert event.get("time:timestamp") == datetime(2015, 5, 10, 8, 00, 00)
+        event = case_test.events[1]
+        assert event.get("concept:name") == "activityD"
+        assert event.get("time:timestamp") == datetime(2015, 5, 10, 8, 00, 30)
         assert process.check_point == datetime(2015, 5, 10, 8, 22, 53)
         assert not process.initialized
 
-        process.process_event('4', 'activityE', datetime(2015, 5, 10, 8, 00, 40))
+        process.process_event(
+            {
+                "case:concept:name": "4",
+                "concept:name": "activityE",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 40),
+            },
+        )
         assert process.check_point == datetime(2015, 5, 10, 8, 22, 53)
         assert process.check_point_cases == 5
         assert not process.initialized
 
-        process.process_event('4', 'activityE', datetime(2015, 5, 10, 21, 00, 40))
+        process.process_event(
+            {
+                "case:concept:name": "4",
+                "concept:name": "activityE",
+                "time:timestamp": datetime(2015, 5, 10, 21, 00, 40),
+            },
+        )
         assert process.initialized
         assert process.check_point_cases == 5
         assert process.check_point == datetime(2015, 5, 10, 21, 00, 40)
         assert len(process.process_model_graph.nodes) == 5
-        #print(list(process.process_model_graph.edges(data=True)))
+        # print(list(process.process_model_graph.edges(data=True)))
         assert len(process.process_model_graph.edges) == 6
-        assert len(process.denstream.p_micro_clusters) == 2
+        # assert len(process.denstream.p_micro_clusters) == 2
         assert len(process.denstream.o_micro_clusters) == 0
         assert process.nyquist == 10
 
-        process.process_event('1', 'activityC', datetime(2015, 5, 10, 21, 00, 50))
-        process.process_event('1', 'activityD', datetime(2015, 5, 10, 21, 50, 50))
+        process.process_event(
+            {
+                "case:concept:name": "1",
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 21, 00, 50),
+            },
+        )
+        process.process_event(
+            {
+                "case:concept:name": "1",
+                "concept:name": "activityD",
+                "time:timestamp": datetime(2015, 5, 10, 21, 50, 50),
+            },
+        )
         assert process.check_point_cases == 5
-        assert process.total_cases == {'1', '2', '3', '4', '5'}
-        assert process.denstream.all_cases.keys() == {'1', '2', '3', '4', '5'}
+        assert process.total_cases == {"1", "2", "3", "4", "5"}
+        assert process.denstream.all_cases.keys() == {"1", "2", "3", "4", "5"}
         assert process.check_point == datetime(2015, 5, 10, 21, 00, 40)
         assert len(process.process_model_graph.nodes) == 5
         assert len(process.process_model_graph.edges) == 6
-        assert len(process.denstream.p_micro_clusters) == 2
-        assert len(process.denstream.o_micro_clusters) == 2
+        # assert len(process.denstream.p_micro_clusters) == 2
+        # assert len(process.denstream.o_micro_clusters) == 2
         assert process.nyquist == 10
 
-        process.process_event('1', 'activityE', datetime(2015, 5, 10, 21, 50, 50))
+        process.process_event(
+            {
+                "case:concept:name": "1",
+                "concept:name": "activityE",
+                "time:timestamp": datetime(2015, 5, 10, 21, 50, 50),
+            },
+        )
         assert process.check_point == datetime(2015, 5, 10, 21, 00, 40)
         assert process.check_point_cases == 5
-        assert process.total_cases == {'1', '2', '3', '4', '5'}
-        assert process.denstream.all_cases.keys() == {'1', '2', '3', '4', '5'}
+        assert process.total_cases == {"1", "2", "3", "4", "5"}
+        assert process.denstream.all_cases.keys() == {"1", "2", "3", "4", "5"}
         assert process.check_point == datetime(2015, 5, 10, 21, 00, 40)
         assert len(process.process_model_graph.nodes) == 5
         assert len(process.process_model_graph.edges) == 6
-        assert len(process.denstream.p_micro_clusters) == 3
-        assert len(process.denstream.o_micro_clusters) == 1
+        # assert len(process.denstream.p_micro_clusters) == 3
+        # assert len(process.denstream.o_micro_clusters) == 1
         assert process.nyquist == 10
 
-        process.process_event('6', 'activityA', datetime(2015, 5, 11, 10, 50, 50))
-        process.process_event('7', 'activityA', datetime(2015, 5, 11, 10, 50, 50))
-        process.process_event('8', 'activityA', datetime(2015, 5, 11, 10, 50, 50))
-        process.process_event('9', 'activityA', datetime(2015, 5, 11, 10, 50, 50))
-        process.process_event('10', 'activityA', datetime(2015, 5, 11, 10, 50, 50))
-        process.process_event('2', 'activityB', datetime(2015, 5, 12, 22, 50, 50))
-        process.process_event('2', 'activityB', datetime(2015, 5, 13, 22, 50, 50))
+        process.process_event(
+            {
+                "case:concept:name": "6",
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 11, 10, 50, 50),
+            },
+        )
+        process.process_event(
+            {
+                "case:concept:name": "7",
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 11, 10, 50, 50),
+            },
+        )
+        process.process_event(
+            {
+                "case:concept:name": "8",
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 11, 10, 50, 50),
+            },
+        )
+        process.process_event(
+            {
+                "case:concept:name": "9",
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 11, 10, 50, 50),
+            },
+        )
+        process.process_event(
+            {
+                "case:concept:name": "10",
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 11, 10, 50, 50),
+            },
+        )
+        process.process_event(
+            {
+                "case:concept:name": "2",
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 12, 22, 50, 50),
+            },
+        )
+        process.process_event(
+            {
+                "case:concept:name": "2",
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 13, 22, 50, 50),
+            },
+        )
 
         assert process.cp_count == 1
-        assert path.isfile(f'./metrics/{process.name}_process_model_graphs/process_model_graph_{process.cp_count}.json')
-        remove(f'./metrics/{process.name}_process_model_graphs/process_model_graph_{process.cp_count}.json')
+        assert path.isfile(
+            f"output/metrics/{process.name}_process_model_graphs/process_model_graph_{process.cp_count}.json"
+        )
 
         assert process.check_point_cases == 0
         assert process.check_point == datetime(2015, 5, 13, 22, 50, 50)
         assert len(process.process_model_graph.nodes) == 5
         assert len(process.process_model_graph.edges) == 6
-        assert len(process.denstream.p_micro_clusters) == 4
-        assert len(process.denstream.o_micro_clusters) == 1
-        assert process.total_cases == {'1', '2', '3', '4', '5',
-                                       '6', '7', '8', '9', '10'}
-        assert process.denstream.all_cases.keys() == {'1', '2', '3', '4', '5'}
+        # assert len(process.denstream.p_micro_clusters) == 4
+        # assert len(process.denstream.o_micro_clusters) == 1
+        assert process.total_cases == {
+            "1",
+            "2",
+            "3",
+            "4",
+            "5",
+            "6",
+            "7",
+            "8",
+            "9",
+            "10",
+        }
+        assert process.denstream.all_cases.keys() == {"1", "2", "3", "4", "5"}
         assert process.nyquist == 10
         assert len(process.cases) == 10
 
-        process.process_event('11', 'activityB', datetime(2015, 5, 13, 23, 00, 00))
+        process.process_event(
+            {
+                "case:concept:name": "11",
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 13, 23, 00, 00),
+            },
+        )
         assert len(process.cases) == 11
-        assert process.total_cases == {'1', '2', '3', '4', '5',
-                                       '6', '7', '8', '9', '10', '11'}
-        assert process.denstream.all_cases.keys() == {'1', '2', '3', '4', '5'}
+        assert process.total_cases == {
+            "1",
+            "2",
+            "3",
+            "4",
+            "5",
+            "6",
+            "7",
+            "8",
+            "9",
+            "10",
+            "11",
+        }
+        assert process.denstream.all_cases.keys() == {"1", "2", "3", "4", "5"}
         assert process.nyquist == 10
-        process.process_event('11', 'activityC', datetime(2015, 5, 14, 12, 00, 00))
+        process.process_event(
+            {
+                "case:concept:name": "11",
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 14, 12, 00, 00),
+            },
+        )
 
         assert process.cp_count == 2
-        assert path.isfile(f'./metrics/{process.name}_process_model_graphs/process_model_graph_{process.cp_count}.json')
-        remove(f'./metrics/{process.name}_process_model_graphs/process_model_graph_{process.cp_count}.json')
+        assert path.isfile(
+            f"output/metrics/{process.name}_process_model_graphs/process_model_graph_{process.cp_count}.json"
+        )
 
         assert len(process.cases) == 10
-        assert process.total_cases == {'1', '2', '3', '4', '5',
-                                       '6', '7', '8', '9', '10', '11'}
-        assert process.denstream.all_cases.keys() == {'1', '2', '3', '4', '5', '11'}
+        assert process.total_cases == {
+            "1",
+            "2",
+            "3",
+            "4",
+            "5",
+            "6",
+            "7",
+            "8",
+            "9",
+            "10",
+            "11",
+        }
+        assert process.denstream.all_cases.keys() == {"1", "2", "3", "4", "5", "11"}
         assert process.nyquist == 10
 
-        process.process_event('11', 'activityE', datetime(2015, 5, 15, 1, 00, 00))
+        process.process_event(
+            {
+                "case:concept:name": "11",
+                "concept:name": "activityE",
+                "time:timestamp": datetime(2015, 5, 15, 1, 00, 00),
+            },
+        )
         assert process.cp_count == 3
-        assert path.isfile(f'./metrics/{process.name}_process_model_graphs/process_model_graph_{process.cp_count}.json')
-        remove(f'./metrics/{process.name}_process_model_graphs/process_model_graph_{process.cp_count}.json')
+        assert path.isfile(
+            f"output/metrics/{process.name}_process_model_graphs/process_model_graph_{process.cp_count}.json"
+        )
 
         assert len(process.cases) == 10
-        assert process.cases[0].id == '11'
-        assert process.cases[1].id == '2'
-        assert process.total_cases == {'1', '2', '3', '4', '5',
-                                       '6', '7', '8', '9', '10', '11'}
-        assert process.denstream.all_cases.keys() == {'1', '2', '3', '4', '5', '11'}
+        assert process.cases[0].id == "11"
+        assert process.cases[1].id == "2"
+        assert process.total_cases == {
+            "1",
+            "2",
+            "3",
+            "4",
+            "5",
+            "6",
+            "7",
+            "8",
+            "9",
+            "10",
+            "11",
+        }
+        assert process.denstream.all_cases.keys() == {"1", "2", "3", "4", "5", "11"}
         assert process.nyquist == 10
 
         assert len(process.process_model_graph.nodes) == 5
         assert len(process.process_model_graph.edges) == 7
-        assert len(process.denstream.p_micro_clusters) == 4
-        assert len(process.denstream.o_micro_clusters) == 3
+        # assert len(process.denstream.p_micro_clusters) == 4
+        # assert len(process.denstream.o_micro_clusters) == 3
 
     # def test_save_pmg_on_check_point(self, process, cases_list):
     #     assert process.metrics.path_to_pmg_metrics == f'metrics/{process.name}_process_model_graphs'
@@ -584,8 +924,8 @@ def test_process_event(self, process):
     #     assert not path.isfile(f'./metrics/{process.name}_process_model_graphs/process_model_graph_{process.cp_count}.json')
     #
     #     process.cases = cases_list
-    #     process.process_model_graph = initialize_graph(nx.DiGraph(), process.cases)
-    #     pmg = initialize_graph(nx.DiGraph(), process.cases)
+    #     process.process_model_graph = initialize_graph(process.cases)
+    #     pmg = initialize_graph(process.cases)
     #     pmg = normalize_graph(pmg)
     #     process.initialize_case_metrics()
     #     process.save_pmg_on_check_point()
@@ -645,10 +985,19 @@ def test_process_event(self, process):
     #     remove(f'./metrics/{process.name}_process_model_graphs/process_model_graph_{process.cp_count}.json')
 
     def test_run(self, process):
-        dir_path = 'demo'
-        filename = 'Detail_Supplier_IW-Frozen.csv'
-        stream = read_csv(f'{dir_path}/{filename}')
+        stream = read_csv("demo/Detail_Supplier_IW-Frozen.csv")
+        process.run(stream)
+
+        assert process.initialized
+        assert path.isfile(
+            f"output/metrics/{process.name}_process_model_graphs/process_model_graph_{process.cp_count}.json"
+        )
+
+    def test_run_xes(self, process):
+        stream = read_xes("demo/running-example.xes")
         process.run(stream)
 
         assert process.initialized
-        assert path.isfile(f'./metrics/{process.name}_process_model_graphs/process_model_graph_{process.cp_count}.json')
+        assert path.isfile(
+            f"output/metrics/{process.name}_process_model_graphs/process_model_graph_{process.cp_count}.json"
+        )
diff --git a/tests/test_denstream.py b/tests/test_denstream.py
index b93528c..de88078 100644
--- a/tests/test_denstream.py
+++ b/tests/test_denstream.py
@@ -2,7 +2,7 @@
 from cdesf2.data_structures import MicroCluster
 from cdesf2.data_structures import Cluster
 from cdesf2.data_structures import Case
-from cdesf2.utils import extract_case_distances, initialize_graph
+from cdesf2.utils import calculate_case_distances, initialize_graph
 from math import log10
 import networkx as nx
 from datetime import datetime
@@ -13,39 +13,96 @@
 class TestDenstream:
     @pytest.fixture
     def denstream(self):
-        denstream = DenStream(lambda_=0.15,
-                              beta=0.3,
-                              epsilon=0.1,
-                              mu=4,
-                              stream_speed=1000,
-                              n_features=2)
+        denstream = DenStream(
+            lambda_=0.15, beta=0.3, epsilon=0.1, mu=4, stream_speed=1000, n_features=2
+        )
         return denstream
 
     @pytest.fixture
     def cases_list(self):
         case_list = []
-        case = Case('1')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10))
-        case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20))
+        case = Case("1")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            }
+        )
         case_list.append(case)
 
-        case = Case('2')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10))
+        case = Case("2")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            }
+        )
         case_list.append(case)
 
-        case = Case('3')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10))
-        case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20))
-        case.set_activity('activityD', datetime(2015, 5, 10, 8, 00, 30))
+        case = Case("3")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityD",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 30),
+            }
+        )
         case_list.append(case)
 
-        case = Case('4')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10))
-        case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20))
+        case = Case("4")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            }
+        )
         case_list.append(case)
 
         return case_list
@@ -63,9 +120,10 @@ def test_initial_value(self, denstream):
         assert denstream.time == 0
         assert denstream.all_cases == {}
 
-    def test_no_value(self):
-        with pytest.raises(Exception):
-            assert DenStream()
+    # This is a compile-time error.
+    # def test_no_value(self):
+    #     with pytest.raises(Exception):
+    #         assert DenStream()
 
     def test_euclidean_distance(self):
         point_1 = np.array([0, 0])
@@ -83,96 +141,138 @@ def test_find_closest_mc(self, denstream):
             assert denstream.find_closest_mc(point, denstream.o_micro_clusters)
 
         micro_cluster = MicroCluster(0, 2, 0, 0.15)
-        micro_cluster.CF = np.array([0, 1])
+        micro_cluster.cf1 = np.array([0, 1])
         micro_cluster.weight = 2
         denstream.p_micro_clusters.append(micro_cluster)
 
         micro_cluster = MicroCluster(1, 2, 0, 0.15)
-        micro_cluster.CF = np.array([0, 1])
+        micro_cluster.cf1 = np.array([0, 1])
         micro_cluster.weight = 1
         denstream.p_micro_clusters.append(micro_cluster)
 
         i, mc, dist = denstream.find_closest_mc(point, denstream.p_micro_clusters)
         assert i == 0
-        assert np.all(mc.CF == [0, 1])
+        assert np.all(mc.cf1 == [0, 1])
         assert mc.weight == 2
         assert dist == 0.5
 
         point = np.array([0, 2])
         micro_cluster = MicroCluster(2, 2, 1, 0.15)
-        micro_cluster.CF = np.array([0, 1])
+        micro_cluster.cf1 = np.array([0, 1])
         micro_cluster.weight = 2
         denstream.p_micro_clusters = []
         denstream.p_micro_clusters.append(micro_cluster)
 
         micro_cluster = MicroCluster(3, 2, 1, 0.15)
-        micro_cluster.CF = np.array([0, 1])
+        micro_cluster.cf1 = np.array([0, 1])
         micro_cluster.weight = 1
         denstream.p_micro_clusters.append(micro_cluster)
 
         i, mc, dist = denstream.find_closest_mc(point, denstream.p_micro_clusters)
         assert i == 1
-        assert np.all(mc.CF == [0, 1])
+        assert np.all(mc.cf1 == [0, 1])
         assert mc.weight == 1
         assert dist == 1
 
         micro_cluster = MicroCluster(4, 2, 1, 0.15)
-        micro_cluster.CF = np.array([0, 3])
+        micro_cluster.cf1 = np.array([0, 3])
         micro_cluster.weight = 2
         denstream.o_micro_clusters = []
         denstream.o_micro_clusters.append(micro_cluster)
 
         micro_cluster = MicroCluster(5, 2, 1, 0.15)
-        micro_cluster.CF = np.array([0, 1])
+        micro_cluster.cf1 = np.array([0, 1])
         micro_cluster.weight = 3
         denstream.o_micro_clusters.append(micro_cluster)
 
         micro_cluster = MicroCluster(6, 2, 1, 0.15)
-        micro_cluster.CF = np.array([0, 2])
+        micro_cluster.cf1 = np.array([0, 2])
         micro_cluster.weight = 1
         denstream.o_micro_clusters.append(micro_cluster)
 
         point = np.array([0, 3])
         i, mc, dist = denstream.find_closest_mc(point, denstream.o_micro_clusters)
         assert i == 2
-        assert np.all(mc.CF == [0, 2])
+        assert np.all(mc.cf1 == [0, 2])
         assert mc.weight == 1
 
-    def test_add_point(self, denstream):
+    def test_add_point(self, denstream: DenStream):
         case_list = []
-        case_1 = Case('1')
-        case_1.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case_1.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10))
-        case_1.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20))
+        case_1 = Case("1")
+        case_1.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case_1.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            }
+        )
+        case_1.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            }
+        )
         case_list.append(case_1)
 
-        case_2 = Case('2')
-        case_2.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case_2.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10))
+        case_2 = Case("2")
+        case_2.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case_2.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            }
+        )
         case_list.append(case_2)
 
-        graph = nx.DiGraph()
-        graph = initialize_graph(graph, case_list)
-
-        case_3 = Case('3')
-        case_3.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case_3.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10))
-        case_3.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20))
-        case_3.set_activity('activityD', datetime(2015, 5, 10, 8, 00, 30))
-
-        trace_distance, time_distance = extract_case_distances(graph, case_3)
-        case_3.graph_distance = trace_distance
-        case_3.time_distance = time_distance
+        graph = initialize_graph(case_list)
+
+        case_3 = Case("3")
+        case_3.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case_3.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            }
+        )
+        case_3.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            }
+        )
+        case_3.add_event(
+            {
+                "concept:name": "activityD",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 30),
+            }
+        )
+
+        case_3.distances = calculate_case_distances(graph, case_3)
 
         micro_cluster = MicroCluster(10, 2, 0, 0.15)
-        micro_cluster.CF = np.array([0.5, -0.5])
-        micro_cluster.CF2 = np.array([0.5, -0.1])
+        micro_cluster.cf1 = np.array([0.5, -0.5])
+        micro_cluster.cf2 = np.array([0.5, -0.1])
         micro_cluster.weight = 10
         denstream.p_micro_clusters.append(micro_cluster)
 
         micro_cluster = MicroCluster(11, 2, 0, 0.15)
-        micro_cluster.CF = np.array([0.0, 0.0])
-        micro_cluster.CF2 = np.array([0.0, 0.0])
+        micro_cluster.cf1 = np.array([0.0, 0.0])
+        micro_cluster.cf2 = np.array([0.0, 0.0])
         micro_cluster.weight = 5
         denstream.o_micro_clusters.append(micro_cluster)
         denstream.mc_id = 2
@@ -182,107 +282,187 @@ def test_add_point(self, denstream):
         assert len(denstream.o_micro_clusters) == 2
         assert denstream.o_micro_clusters[1].radius == 0
         assert denstream.o_micro_clusters[1].weight == 1
-        assert np.all(denstream.o_micro_clusters[1].CF == case_3.point)
-        assert np.all(denstream.o_micro_clusters[1].CF2 == case_3.point * case_3.point)
+        assert np.all(denstream.o_micro_clusters[1].cf1 == case_3.point)
+        assert np.all(denstream.o_micro_clusters[1].cf2 == case_3.point * case_3.point)
 
-        cf = denstream.o_micro_clusters[1].CF.copy()
-        cf2 = denstream.o_micro_clusters[1].CF2.copy()
+        cf = denstream.o_micro_clusters[1].cf1.copy()
+        cf2 = denstream.o_micro_clusters[1].cf2.copy()
         mc_id = denstream.add_point(case_3)
         assert mc_id == 2
         assert len(denstream.o_micro_clusters) == 1
         assert len(denstream.p_micro_clusters) == 2
         assert denstream.p_micro_clusters[1].weight == 2
-        assert np.all(denstream.p_micro_clusters[1].CF == cf + case_3.point)
-        assert np.all(denstream.p_micro_clusters[1].CF2 == cf2 + case_3.point * case_3.point)
+        assert np.all(denstream.p_micro_clusters[1].cf1 == cf + case_3.point)
+        assert np.all(
+            denstream.p_micro_clusters[1].cf2 == cf2 + case_3.point * case_3.point
+        )
 
     def test_decay_micro_clusters(self, denstream):
         micro_cluster = MicroCluster(0, 2, 0, 0.15)
-        micro_cluster.CF = np.array([5.0, 5.0])
-        micro_cluster.CF2 = np.array([1.0, 1.0])
+        micro_cluster.cf1 = np.array([5.0, 5.0])
+        micro_cluster.cf2 = np.array([1.0, 1.0])
         micro_cluster.weight = 5
         denstream.p_micro_clusters.append(micro_cluster)
 
         micro_cluster = MicroCluster(1, 2, 0, 0.15)
-        micro_cluster.CF = np.array([1.0, 5.0])
-        micro_cluster.CF2 = np.array([3.0, 0.0])
+        micro_cluster.cf1 = np.array([1.0, 5.0])
+        micro_cluster.cf2 = np.array([3.0, 0.0])
         micro_cluster.weight = 10
         denstream.p_micro_clusters.append(micro_cluster)
 
         micro_cluster = MicroCluster(2, 2, 0, 0.15)
-        micro_cluster.CF = np.array([0.0, 0.0])
-        micro_cluster.CF2 = np.array([10.0, 2.0])
+        micro_cluster.cf1 = np.array([0.0, 0.0])
+        micro_cluster.cf2 = np.array([10.0, 2.0])
         micro_cluster.weight = 3
         denstream.p_micro_clusters.append(micro_cluster)
 
         denstream.decay_micro_clusters(0)
-        assert np.all(denstream.p_micro_clusters[0].CF == np.array([5, 5]))
-        assert np.all(denstream.p_micro_clusters[0].CF2 == np.array([1, 1]))
+        assert np.all(denstream.p_micro_clusters[0].cf1 == np.array([5, 5]))
+        assert np.all(denstream.p_micro_clusters[0].cf2 == np.array([1, 1]))
         assert np.all(denstream.p_micro_clusters[0].weight == 5)
 
-        assert np.all(denstream.p_micro_clusters[1].CF == np.array([1, 5]) * 2 ** (-0.15))
-        assert np.all(denstream.p_micro_clusters[1].CF2 == np.array([3, 0]) * 2 ** (-0.15))
+        assert np.all(
+            denstream.p_micro_clusters[1].cf1 == np.array([1, 5]) * 2 ** (-0.15)
+        )
+        assert np.all(
+            denstream.p_micro_clusters[1].cf2 == np.array([3, 0]) * 2 ** (-0.15)
+        )
         assert np.all(denstream.p_micro_clusters[1].weight == 10 * 2 ** (-0.15))
 
-        assert np.all(denstream.p_micro_clusters[2].CF == np.array([0, 0]) * 2 ** (-0.15))
-        assert np.all(denstream.p_micro_clusters[2].CF2 == np.array([10, 2]) * 2 ** (-0.15))
+        assert np.all(
+            denstream.p_micro_clusters[2].cf1 == np.array([0, 0]) * 2 ** (-0.15)
+        )
+        assert np.all(
+            denstream.p_micro_clusters[2].cf2 == np.array([10, 2]) * 2 ** (-0.15)
+        )
         assert np.all(denstream.p_micro_clusters[2].weight == 3 * 2 ** (-0.15))
 
-    def test_dbscan(self, denstream, cases_list):
-        graph = nx.DiGraph()
-        graph = initialize_graph(graph, cases_list)
+    def test_dbscan(self, denstream: DenStream, cases_list):
+        graph = initialize_graph(cases_list)
         for case in cases_list:
-            trace_distance, time_distance = extract_case_distances(graph, case)
-            case.graph_distance = trace_distance
-            case.time_distance = time_distance
+            case.distances = calculate_case_distances(graph, case)
 
         denstream.dbscan(cases_list)
         assert len(denstream.p_micro_clusters) == 1
-        assert denstream.all_cases.keys() == {'1', '4'}
+        assert denstream.all_cases.keys() == {"1", "4"}
         new_p_mc = denstream.p_micro_clusters[0]
         assert new_p_mc.weight == 2
         assert new_p_mc.creation_time == 0
         assert new_p_mc.lambda_ == 0.15
 
-    def test_train(self, denstream):
-        #anomalous_denstream = DenStream(2, 0.15, 0.3, 0.1, 4, 1000)
+    def test_train(self, denstream: DenStream):
+        # anomalous_denstream = DenStream(2, 0.15, 0.3, 0.1, 4, 1000)
 
         cases_list = []
 
-        case = Case('5')
-        case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20))
-        case.set_activity('activityD', datetime(2015, 5, 10, 8, 00, 30))
-        case.set_activity('activityE', datetime(2015, 5, 10, 8, 00, 40))
+        case = Case("5")
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityD",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 30),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityE",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 40),
+            }
+        )
         cases_list.append(case)
 
-        case = Case('3')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10))
-        case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20))
-        case.set_activity('activityD', datetime(2015, 5, 10, 8, 00, 30))
+        case = Case("3")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityD",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 30),
+            }
+        )
         cases_list.append(case)
 
-        case = Case('1')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10))
-        case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20))
+        case = Case("1")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            }
+        )
         cases_list.append(case)
 
-        case = Case('4')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10))
-        case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20))
+        case = Case("4")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            }
+        )
         cases_list.append(case)
 
-        case = Case('2')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10))
+        case = Case("2")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            }
+        )
         cases_list.append(case)
 
-        pmg = initialize_graph(nx.DiGraph(), cases_list)
+        pmg = initialize_graph(cases_list)
         for case in cases_list:
-            graph_distance, time_distance = extract_case_distances(pmg, case)
-            case.graph_distance = graph_distance
-            case.time_distance = time_distance
+            case.distances = calculate_case_distances(pmg, case)
 
         denstream.dbscan(cases_list)
 
@@ -294,7 +474,7 @@ def test_train(self, denstream):
 
         case_5 = cases_list[0]
         denstream.train(case_5)
-        assert denstream.all_cases == {'1': 0, '4': 0, '5': 1}
+        assert denstream.all_cases == {"1": 0, "4": 0, "5": 1}
         assert denstream.time == 0
         assert denstream.no_processed_points == 1
         assert not denstream.p_micro_clusters == []
@@ -303,127 +483,135 @@ def test_train(self, denstream):
         assert len(denstream.o_micro_clusters) == 1
 
         assert denstream.p_micro_clusters[0].id == 0
-        assert np.all(denstream.p_micro_clusters[0].CF == [0.25, 0])
-        assert np.all(denstream.p_micro_clusters[0].CF2 == [0.03125, 0])
+        assert np.all(denstream.p_micro_clusters[0].cf1 == [0.25, 0])
+        assert np.all(denstream.p_micro_clusters[0].cf2 == [0.03125, 0])
         assert denstream.p_micro_clusters[0].weight == 2
         assert denstream.p_micro_clusters[0].creation_time == 0
 
         assert denstream.o_micro_clusters[0].id == 1
-        assert np.all(denstream.o_micro_clusters[0].CF == [(5/8), 0])
-        assert np.all(denstream.o_micro_clusters[0].CF2 == [(5/8)**2, 0])
+        assert np.all(denstream.o_micro_clusters[0].cf1 == [(5 / 8), 0])
+        assert np.all(denstream.o_micro_clusters[0].cf2 == [(5 / 8) ** 2, 0])
         assert denstream.o_micro_clusters[0].weight == 1
         assert denstream.o_micro_clusters[0].creation_time == 0
 
         case_3 = cases_list[1]
         denstream.train(case_3)
-        assert denstream.all_cases == {'1': 0, '3': 0, '4': 0, '5': 1}
+        assert denstream.all_cases == {"1": 0, "3": 0, "4": 0, "5": 1}
         assert denstream.time == 0
         assert denstream.no_processed_points == 2
         assert len(denstream.p_micro_clusters) == 1
         assert len(denstream.o_micro_clusters) == 1
 
         assert denstream.p_micro_clusters[0].id == 0
-        assert np.all(denstream.p_micro_clusters[0].CF == [0.5, 0])
-        assert np.all(denstream.p_micro_clusters[0].CF2 == [0.09375, 0])
+        assert np.all(denstream.p_micro_clusters[0].cf1 == [0.5, 0])
+        assert np.all(denstream.p_micro_clusters[0].cf2 == [0.09375, 0])
         assert denstream.p_micro_clusters[0].weight == 3
         assert denstream.p_micro_clusters[0].creation_time == 0
 
         assert denstream.o_micro_clusters[0].id == 1
-        assert np.all(denstream.o_micro_clusters[0].CF == [(5/8), 0])
-        assert np.all(denstream.o_micro_clusters[0].CF2 == [(5/8)**2, 0])
+        assert np.all(denstream.o_micro_clusters[0].cf1 == [(5 / 8), 0])
+        assert np.all(denstream.o_micro_clusters[0].cf2 == [(5 / 8) ** 2, 0])
         assert denstream.o_micro_clusters[0].weight == 1
         assert denstream.o_micro_clusters[0].creation_time == 0
 
         case_1 = cases_list[2]
         denstream.train(case_1)
-        assert denstream.all_cases == {'1': 0, '3': 0, '4': 0, '5': 1}
+        assert denstream.all_cases == {"1": 0, "3": 0, "4": 0, "5": 1}
         assert denstream.time == 0
         assert denstream.no_processed_points == 3
         assert len(denstream.o_micro_clusters) == 1
         assert len(denstream.p_micro_clusters) == 1
 
         assert denstream.p_micro_clusters[0].id == 0
-        assert np.all(denstream.p_micro_clusters[0].CF == [(5/8), 0])
-        assert np.all(denstream.p_micro_clusters[0].CF2 == [(7/64), 0])
+        assert np.all(denstream.p_micro_clusters[0].cf1 == [(5 / 8), 0])
+        assert np.all(denstream.p_micro_clusters[0].cf2 == [(7 / 64), 0])
         assert denstream.p_micro_clusters[0].weight == 4
 
         assert denstream.o_micro_clusters[0].id == 1
-        assert np.all(denstream.o_micro_clusters[0].CF == [(5/8), 0])
-        assert np.all(denstream.o_micro_clusters[0].CF2 == [(5/8)**2, 0])
+        assert np.all(denstream.o_micro_clusters[0].cf1 == [(5 / 8), 0])
+        assert np.all(denstream.o_micro_clusters[0].cf2 == [(5 / 8) ** 2, 0])
         assert denstream.o_micro_clusters[0].weight == 1
         assert denstream.o_micro_clusters[0].creation_time == 0
 
         case_4 = cases_list[3]
         denstream.train(case_4)
-        assert denstream.all_cases == {'1': 0, '3': 0, '4': 0, '5': 1}
+        assert denstream.all_cases == {"1": 0, "3": 0, "4": 0, "5": 1}
         assert denstream.time == 0
         assert denstream.no_processed_points == 4
         assert len(denstream.o_micro_clusters) == 1
         assert len(denstream.p_micro_clusters) == 1
 
         assert denstream.p_micro_clusters[0].id == 0
-        assert np.all(denstream.p_micro_clusters[0].CF == [0.75, 0])
-        assert np.all(denstream.p_micro_clusters[0].CF2 == [0.125, 0])
+        assert np.all(denstream.p_micro_clusters[0].cf1 == [0.75, 0])
+        assert np.all(denstream.p_micro_clusters[0].cf2 == [0.125, 0])
         assert denstream.p_micro_clusters[0].weight == 5
 
         assert denstream.o_micro_clusters[0].id == 1
-        assert np.all(denstream.o_micro_clusters[0].CF == [(5/8), 0])
-        assert np.all(denstream.o_micro_clusters[0].CF2 == [(5/8)**2, 0])
+        assert np.all(denstream.o_micro_clusters[0].cf1 == [(5 / 8), 0])
+        assert np.all(denstream.o_micro_clusters[0].cf2 == [(5 / 8) ** 2, 0])
         assert denstream.o_micro_clusters[0].weight == 1
         assert denstream.o_micro_clusters[0].creation_time == 0
 
         case_1 = cases_list[4]
         denstream.train(case_1)
-        assert denstream.all_cases == {'1': 0, '2': 0, '3': 0, '4': 0, '5': 1}
+        assert denstream.all_cases == {"1": 0, "2": 0, "3": 0, "4": 0, "5": 1}
         assert denstream.time == 0
         assert denstream.no_processed_points == 5
         assert len(denstream.o_micro_clusters) == 1
         assert len(denstream.p_micro_clusters) == 1
 
         assert denstream.p_micro_clusters[0].id == 0
-        assert np.all(denstream.p_micro_clusters[0].CF == [0.75, 0])
-        assert np.all(denstream.p_micro_clusters[0].CF2 == [0.125, 0])
+        assert np.all(denstream.p_micro_clusters[0].cf1 == [0.75, 0])
+        assert np.all(denstream.p_micro_clusters[0].cf2 == [0.125, 0])
         assert denstream.p_micro_clusters[0].weight == 6
 
         assert denstream.o_micro_clusters[0].id == 1
-        assert np.all(denstream.o_micro_clusters[0].CF == [(5/8), 0])
-        assert np.all(denstream.o_micro_clusters[0].CF2 == [(5/8)**2, 0])
+        assert np.all(denstream.o_micro_clusters[0].cf1 == [(5 / 8), 0])
+        assert np.all(denstream.o_micro_clusters[0].cf2 == [(5 / 8) ** 2, 0])
         assert denstream.o_micro_clusters[0].weight == 1
         assert denstream.o_micro_clusters[0].creation_time == 0
 
-        case = Case('6')
-        case.set_activity('activityE', datetime(2015, 5, 10, 8, 00, 40))
-        case.set_activity('activityF', datetime(2015, 5, 10, 8, 00, 50))
-
-        graph_distance, time_distance = extract_case_distances(pmg, case)
-        case.graph_distance = graph_distance
-        case.time_distance = time_distance
+        case = Case("6")
+        case.add_event(
+            {
+                "concept:name": "activityE",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 40),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityF",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 50),
+            }
+        )
+
+        case.distances = calculate_case_distances(pmg, case)
         cases_list.insert(0, case)
 
         denstream.train(cases_list[0])
-        assert denstream.all_cases == {'1': 0, '2': 0, '3': 0, '4': 0, '5': 1, '6': 2}
+        assert denstream.all_cases == {"1": 0, "2": 0, "3": 0, "4": 0, "5": 1, "6": 2}
         assert denstream.time == 0
         assert denstream.no_processed_points == 6
         assert len(denstream.o_micro_clusters) == 2
         assert len(denstream.p_micro_clusters) == 1
 
         assert denstream.p_micro_clusters[0].id == 0
-        assert np.all(denstream.p_micro_clusters[0].CF == [0.75, 0])
-        assert np.all(denstream.p_micro_clusters[0].CF2 == [0.125, 0])
+        assert np.all(denstream.p_micro_clusters[0].cf1 == [0.75, 0])
+        assert np.all(denstream.p_micro_clusters[0].cf2 == [0.125, 0])
         assert denstream.p_micro_clusters[0].weight == 6
 
         assert denstream.o_micro_clusters[0].id == 1
-        assert np.all(denstream.o_micro_clusters[0].CF == [(5/8), 0])
-        assert np.all(denstream.o_micro_clusters[0].CF2 == [(5/8)**2, 0])
+        assert np.all(denstream.o_micro_clusters[0].cf1 == [(5 / 8), 0])
+        assert np.all(denstream.o_micro_clusters[0].cf2 == [(5 / 8) ** 2, 0])
         assert denstream.o_micro_clusters[0].weight == 1
         assert denstream.o_micro_clusters[0].creation_time == 0
 
         assert denstream.o_micro_clusters[1].id == 2
-        assert np.all(denstream.o_micro_clusters[1].CF == [1, 1])
-        assert np.all(denstream.o_micro_clusters[1].CF2 == [1, 1])
+        assert np.all(denstream.o_micro_clusters[1].cf1 == [1, 1])
+        assert np.all(denstream.o_micro_clusters[1].cf2 == [1, 1])
         assert denstream.o_micro_clusters[1].weight == 1
         assert denstream.o_micro_clusters[1].creation_time == 0
-        assert denstream.all_cases == {'1': 0, '2': 0, '3': 0, '4': 0, '5': 1, '6': 2}
+        assert denstream.all_cases == {"1": 0, "2": 0, "3": 0, "4": 0, "5": 1, "6": 2}
 
         denstream.stream_speed = 7
         denstream.train(cases_list[0])
@@ -435,50 +623,61 @@ def test_train(self, denstream):
         weight = 6 * (2 ** (-0.15))
 
         assert denstream.p_micro_clusters[0].id == 0
-        assert np.all(denstream.p_micro_clusters[0].CF == CF)
-        assert np.all(denstream.p_micro_clusters[0].CF2 == CF2)
+        assert np.all(denstream.p_micro_clusters[0].cf1 == CF)
+        assert np.all(denstream.p_micro_clusters[0].cf2 == CF2)
         assert denstream.p_micro_clusters[0].weight == weight
 
         CF = (np.array([1, 1]) + cases_list[0].point) * (2 ** (-0.15))
-        CF2 = (np.array([1, 1]) + (cases_list[0].point * cases_list[0].point)) * (2 ** (-0.15))
+        CF2 = (np.array([1, 1]) + (cases_list[0].point * cases_list[0].point)) * (
+            2 ** (-0.15)
+        )
         weight = (1 + 1) * (2 ** (-0.15))
 
         assert denstream.p_micro_clusters[1].id == 2
-        assert np.all(denstream.p_micro_clusters[1].CF == CF)
-        assert np.all(denstream.p_micro_clusters[1].CF2 == CF2)
+        assert np.all(denstream.p_micro_clusters[1].cf1 == CF)
+        assert np.all(denstream.p_micro_clusters[1].cf2 == CF2)
         assert denstream.p_micro_clusters[1].weight == weight
 
         for i in range(16):
-            assert denstream.all_cases == {'1': 0, '2': 0, '3': 0, '4': 0, '5': 1, '6': 2}
+            assert denstream.all_cases == {
+                "1": 0,
+                "2": 0,
+                "3": 0,
+                "4": 0,
+                "5": 1,
+                "6": 2,
+            }
             denstream.stream_speed = 8 + i
             # mc.weight > self.beta * self.mu
             denstream.train(cases_list[0])
-            assert denstream.time == i+2
+            assert denstream.time == i + 2
             assert denstream.p_micro_clusters[0].id == 0
             CF = np.array([0.75, 0]) * (2 ** (-0.15))
             CF2 = np.array([0.125, 0]) * (2 ** (-0.15))
             weight = 6 * (2 ** (-0.15))
-            for x in range(i+1):
-                CF *= (2 ** (-0.15))
-                CF2 *= (2 ** (-0.15))
-                weight *= (2 ** (-0.15))
-            assert np.all(denstream.p_micro_clusters[0].CF == CF)
-            assert np.all(denstream.p_micro_clusters[0].CF2 == CF2)
+            for _ in range(i + 1):
+                CF *= 2 ** (-0.15)
+                CF2 *= 2 ** (-0.15)
+                weight *= 2 ** (-0.15)
+            assert np.all(denstream.p_micro_clusters[0].cf1 == CF)
+            assert np.all(denstream.p_micro_clusters[0].cf2 == CF2)
             assert denstream.p_micro_clusters[0].weight == weight
 
             assert denstream.p_micro_clusters[1].id == 2
             CF_1 = (np.array([1, 1]) + cases_list[0].point) * (2 ** (-0.15))
-            CF2_1 = (np.array([1, 1]) + (cases_list[0].point * cases_list[0].point)) * (2 ** (-0.15))
+            CF2_1 = (np.array([1, 1]) + (cases_list[0].point * cases_list[0].point)) * (
+                2 ** (-0.15)
+            )
             weight_1 = (1 + 1) * (2 ** (-0.15))
-            for x in range(i+1):
+            for _ in range(i + 1):
                 CF_1 += cases_list[0].point
-                CF_1 *= (2 ** (-0.15))
+                CF_1 *= 2 ** (-0.15)
                 CF2_1 += cases_list[0].point * cases_list[0].point
-                CF2_1 *= (2 ** (-0.15))
+                CF2_1 *= 2 ** (-0.15)
                 weight_1 += 1
-                weight_1 *= (2 ** (-0.15))
-            assert np.all(denstream.p_micro_clusters[1].CF == CF_1)
-            assert np.all(denstream.p_micro_clusters[1].CF2 == CF2_1)
+                weight_1 *= 2 ** (-0.15)
+            assert np.all(denstream.p_micro_clusters[1].cf1 == CF_1)
+            assert np.all(denstream.p_micro_clusters[1].cf2 == CF2_1)
             assert denstream.p_micro_clusters[1].weight == weight_1
 
         assert len(denstream.o_micro_clusters) == 1
@@ -489,30 +688,46 @@ def test_train(self, denstream):
         assert denstream.stream_speed == 23
         denstream.stream_speed += 1
 
-        case = Case('7')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityG', datetime(2015, 5, 10, 8, 1, 00))
-        graph_distance, time_distance = extract_case_distances(pmg, case)
-        case.graph_distance = graph_distance
-        case.time_distance = time_distance
+        case = Case("7")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityG",
+                "time:timestamp": datetime(2015, 5, 10, 8, 1, 00),
+            }
+        )
+        case.distances = calculate_case_distances(pmg, case)
         cases_list.insert(0, case)
-        assert cases_list[0].id == '7'
+        assert cases_list[0].id == "7"
 
         denstream.train(cases_list[0])
-        assert denstream.all_cases == {'1': 0, '2': 0, '3': 0, '4': 0, '5': 1, '6': 2, '7': 3}
+        assert denstream.all_cases == {
+            "1": 0,
+            "2": 0,
+            "3": 0,
+            "4": 0,
+            "5": 1,
+            "6": 2,
+            "7": 3,
+        }
         assert len(denstream.o_micro_clusters) == 1
         assert len(denstream.p_micro_clusters) == 1
         assert denstream.p_micro_clusters[0].id == 2
-        CF_1 *= (2 ** (-0.15))
-        CF2_1 *= (2 ** (-0.15))
-        weight_1 *= (2 ** (-0.15))
-        assert np.all(denstream.p_micro_clusters[0].CF == CF_1)
-        assert np.all(denstream.p_micro_clusters[0].CF2 == CF2_1)
+        CF_1 *= 2 ** (-0.15)
+        CF2_1 *= 2 ** (-0.15)
+        weight_1 *= 2 ** (-0.15)
+        assert np.all(denstream.p_micro_clusters[0].cf1 == CF_1)
+        assert np.all(denstream.p_micro_clusters[0].cf2 == CF2_1)
         assert denstream.p_micro_clusters[0].weight == weight_1
 
         assert denstream.o_micro_clusters[0].id == 3
-        assert np.all(denstream.o_micro_clusters[0].CF == [1, log10(60)])
-        assert np.all(denstream.o_micro_clusters[0].CF2 == [1, log10(60)**2])
+        assert np.all(denstream.o_micro_clusters[0].cf1 == [1, log10(60)])
+        assert np.all(denstream.o_micro_clusters[0].cf2 == [1, log10(60) ** 2])
         assert denstream.o_micro_clusters[0].weight == 1
 
     def test_generate_clusters(self, denstream):
@@ -522,12 +737,12 @@ def test_generate_clusters(self, denstream):
         assert dense_group == [[]]
         assert not_dense_group == [[]]
 
-        case_0 = Case('0')
-        case_1 = Case('1')
+        case_0 = Case("0")
+        case_1 = Case("1")
 
         micro_cluster = MicroCluster(0, 2, 0, 0.15)
-        micro_cluster.CF = np.array([5.0, 5.0])
-        micro_cluster.CF2 = np.array([1.0, 1.0])
+        micro_cluster.cf1 = np.array([5.0, 5.0])
+        micro_cluster.cf2 = np.array([1.0, 1.0])
         micro_cluster.weight = 5
         denstream.p_micro_clusters.append(micro_cluster)
         denstream.all_cases[case_0.id] = micro_cluster.id
@@ -546,11 +761,11 @@ def test_generate_clusters(self, denstream):
         assert np.all(cluster.centroid == [1, 1])
         assert cluster.radius == 0
         assert cluster.weight == 5
-        assert cluster.case_ids == ['0', '1']
+        assert cluster.case_ids == ["0", "1"]
 
         micro_cluster = MicroCluster(0, 2, 0, 0.15)
-        micro_cluster.CF = np.array([3.0, 3.0])
-        micro_cluster.CF2 = np.array([1.0, 1.0])
+        micro_cluster.cf1 = np.array([3.0, 3.0])
+        micro_cluster.cf2 = np.array([1.0, 1.0])
         micro_cluster.weight = 3
         denstream.p_micro_clusters = []
         denstream.p_micro_clusters.append(micro_cluster)
@@ -570,14 +785,14 @@ def test_generate_clusters(self, denstream):
         assert np.all(cluster.centroid == [1, 1])
         assert cluster.radius == 0
         assert cluster.weight == 3
-        assert cluster.case_ids == ['0', '1']
+        assert cluster.case_ids == ["0", "1"]
 
-        case_2 = Case('2')
-        case_3 = Case('3')
+        case_2 = Case("2")
+        case_3 = Case("3")
 
         micro_cluster = MicroCluster(0, 2, 0, 0.15)
-        micro_cluster.CF = np.array([3.0, 3.0])
-        micro_cluster.CF2 = np.array([1.0, 1.0])
+        micro_cluster.cf1 = np.array([3.0, 3.0])
+        micro_cluster.cf2 = np.array([1.0, 1.0])
         micro_cluster.weight = 3
         denstream.p_micro_clusters = []
         denstream.p_micro_clusters.append(micro_cluster)
@@ -585,8 +800,8 @@ def test_generate_clusters(self, denstream):
         denstream.all_cases[case_1.id] = micro_cluster.id
 
         micro_cluster = MicroCluster(1, 2, 0, 0.15)
-        micro_cluster.CF = np.array([4.0, 4.0])
-        micro_cluster.CF2 = np.array([1.0, 1.0])
+        micro_cluster.cf1 = np.array([4.0, 4.0])
+        micro_cluster.cf2 = np.array([1.0, 1.0])
         micro_cluster.weight = 4
         denstream.p_micro_clusters.append(micro_cluster)
         denstream.all_cases[case_2.id] = micro_cluster.id
@@ -596,7 +811,10 @@ def test_generate_clusters(self, denstream):
         cl2 = denstream.p_micro_clusters[1]
 
         assert len(denstream.p_micro_clusters) > 1
-        assert denstream.euclidean_distance(cl1.centroid, cl2.centroid) <= 2 * denstream.epsilon
+        assert (
+            denstream.euclidean_distance(cl1.centroid, cl2.centroid)
+            <= 2 * denstream.epsilon
+        )
         assert cl1.weight + cl2.weight >= denstream.mu
         dense_group, not_dense_group = denstream.generate_clusters()
 
@@ -609,21 +827,21 @@ def test_generate_clusters(self, denstream):
         assert np.all(cluster.centroid == [1, 1])
         assert cluster.radius == 0
         assert cluster.weight == 3
-        assert cluster.case_ids == ['0', '1']
+        assert cluster.case_ids == ["0", "1"]
         cluster = cluster_list[1]
         assert isinstance(cluster, Cluster)
         assert cluster.id == 1
         assert np.all(cluster.centroid == [1, 1])
         assert cluster.radius == 0
         assert cluster.weight == 4
-        assert cluster.case_ids == ['2', '3']
+        assert cluster.case_ids == ["2", "3"]
         with pytest.raises(IndexError):
             assert dense_group[1]
             assert cluster_list[2]
 
         micro_cluster = MicroCluster(0, 2, 0, 0.15)
-        micro_cluster.CF = np.array([3.0, 3.0])
-        micro_cluster.CF2 = np.array([1.0, 1.0])
+        micro_cluster.cf1 = np.array([3.0, 3.0])
+        micro_cluster.cf2 = np.array([1.0, 1.0])
         micro_cluster.weight = 1
         denstream.p_micro_clusters = []
         denstream.p_micro_clusters.append(micro_cluster)
@@ -631,8 +849,8 @@ def test_generate_clusters(self, denstream):
         denstream.all_cases[case_1.id] = micro_cluster.id
 
         micro_cluster = MicroCluster(1, 2, 0, 0.15)
-        micro_cluster.CF = np.array([3.0, 3.0])
-        micro_cluster.CF2 = np.array([1.0, 1.0])
+        micro_cluster.cf1 = np.array([3.0, 3.0])
+        micro_cluster.cf2 = np.array([1.0, 1.0])
         micro_cluster.weight = 1
         denstream.p_micro_clusters.append(micro_cluster)
         denstream.all_cases[case_2.id] = micro_cluster.id
@@ -642,7 +860,10 @@ def test_generate_clusters(self, denstream):
         cl2 = denstream.p_micro_clusters[1]
 
         assert len(denstream.p_micro_clusters) > 1
-        assert denstream.euclidean_distance(cl1.centroid, cl2.centroid) <= 2 * denstream.epsilon
+        assert (
+            denstream.euclidean_distance(cl1.centroid, cl2.centroid)
+            <= 2 * denstream.epsilon
+        )
         assert cl1.weight + cl2.weight < denstream.mu
         dense_group, not_dense_group = denstream.generate_clusters()
 
@@ -655,21 +876,21 @@ def test_generate_clusters(self, denstream):
         assert np.all(cluster.centroid == [3, 3])
         assert cluster.radius == 0
         assert cluster.weight == 1
-        assert cluster.case_ids == ['0', '1']
+        assert cluster.case_ids == ["0", "1"]
         cluster = cluster_list[1]
         assert isinstance(cluster, Cluster)
         assert cluster.id == 1
         assert np.all(cluster.centroid == [3, 3])
         assert cluster.radius == 0
         assert cluster.weight == 1
-        assert cluster.case_ids == ['2', '3']
+        assert cluster.case_ids == ["2", "3"]
         with pytest.raises(IndexError):
             assert not_dense_group[1]
             assert cluster_list[2]
 
         micro_cluster = MicroCluster(0, 2, 0, 0.15)
-        micro_cluster.CF = np.array([3.0, 3.0])
-        micro_cluster.CF2 = np.array([1.0, 1.0])
+        micro_cluster.cf1 = np.array([3.0, 3.0])
+        micro_cluster.cf2 = np.array([1.0, 1.0])
         micro_cluster.weight = 3
         denstream.p_micro_clusters = []
         denstream.p_micro_clusters.append(micro_cluster)
@@ -677,8 +898,8 @@ def test_generate_clusters(self, denstream):
         denstream.all_cases[case_1.id] = micro_cluster.id
 
         micro_cluster = MicroCluster(1, 2, 0, 0.15)
-        micro_cluster.CF = np.array([1.0, 1.0])
-        micro_cluster.CF2 = np.array([1.0, 1.0])
+        micro_cluster.cf1 = np.array([1.0, 1.0])
+        micro_cluster.cf2 = np.array([1.0, 1.0])
         micro_cluster.weight = 4
         denstream.p_micro_clusters.append(micro_cluster)
         denstream.all_cases[case_2.id] = micro_cluster.id
@@ -688,7 +909,10 @@ def test_generate_clusters(self, denstream):
         cl2 = denstream.p_micro_clusters[1]
 
         assert len(denstream.p_micro_clusters) > 1
-        assert denstream.euclidean_distance(cl1.centroid, cl2.centroid) > 2 * denstream.epsilon
+        assert (
+            denstream.euclidean_distance(cl1.centroid, cl2.centroid)
+            > 2 * denstream.epsilon
+        )
         assert cl1.weight < denstream.mu
         assert cl2.weight >= denstream.mu
         dense_group, not_dense_group = denstream.generate_clusters()
@@ -702,7 +926,7 @@ def test_generate_clusters(self, denstream):
         assert np.all(cluster.centroid == [1, 1])
         assert cluster.radius == 0
         assert cluster.weight == 3
-        assert cluster.case_ids == ['0', '1']
+        assert cluster.case_ids == ["0", "1"]
         with pytest.raises(IndexError):
             assert cluster_list[1]
         cluster_list = dense_group[0]
@@ -712,15 +936,15 @@ def test_generate_clusters(self, denstream):
         assert np.all(cluster.centroid == [0.25, 0.25])
         assert cluster.radius == cl2.radius
         assert cluster.weight == 4
-        assert cluster.case_ids == ['2', '3']
+        assert cluster.case_ids == ["2", "3"]
         with pytest.raises(IndexError):
             assert not_dense_group[1]
             assert dense_group[1]
             assert cluster_list[1]
 
         micro_cluster = MicroCluster(0, 2, 0, 0.15)
-        micro_cluster.CF = np.array([6.0, 6.0])
-        micro_cluster.CF2 = np.array([1.0, 1.0])
+        micro_cluster.cf1 = np.array([6.0, 6.0])
+        micro_cluster.cf2 = np.array([1.0, 1.0])
         micro_cluster.weight = 6
         denstream.p_micro_clusters = []
         denstream.p_micro_clusters.append(micro_cluster)
@@ -728,8 +952,8 @@ def test_generate_clusters(self, denstream):
         denstream.all_cases[case_1.id] = micro_cluster.id
 
         micro_cluster = MicroCluster(1, 2, 0, 0.15)
-        micro_cluster.CF = np.array([1.0, 1.0])
-        micro_cluster.CF2 = np.array([1.0, 1.0])
+        micro_cluster.cf1 = np.array([1.0, 1.0])
+        micro_cluster.cf2 = np.array([1.0, 1.0])
         micro_cluster.weight = 2
         denstream.p_micro_clusters.append(micro_cluster)
         denstream.all_cases[case_2.id] = micro_cluster.id
@@ -739,7 +963,10 @@ def test_generate_clusters(self, denstream):
         cl2 = denstream.p_micro_clusters[1]
 
         assert len(denstream.p_micro_clusters) > 1
-        assert denstream.euclidean_distance(cl1.centroid, cl2.centroid) > 2 * denstream.epsilon
+        assert (
+            denstream.euclidean_distance(cl1.centroid, cl2.centroid)
+            > 2 * denstream.epsilon
+        )
         assert cl1.weight >= denstream.mu
         assert cl2.weight < denstream.mu
         dense_group, not_dense_group = denstream.generate_clusters()
@@ -753,7 +980,7 @@ def test_generate_clusters(self, denstream):
         assert np.all(cluster.centroid == [1, 1])
         assert cluster.radius == 0
         assert cluster.weight == 6
-        assert cluster.case_ids == ['0', '1']
+        assert cluster.case_ids == ["0", "1"]
         with pytest.raises(IndexError):
             assert cluster_list[1]
         cluster_list = not_dense_group[0]
@@ -763,15 +990,15 @@ def test_generate_clusters(self, denstream):
         assert np.all(cluster.centroid == [0.5, 0.5])
         assert cluster.radius == cl2.radius
         assert cluster.weight == 2
-        assert cluster.case_ids == ['2', '3']
+        assert cluster.case_ids == ["2", "3"]
         with pytest.raises(IndexError):
             assert not_dense_group[1]
             assert dense_group[1]
             assert cluster_list[1]
 
         micro_cluster = MicroCluster(0, 2, 0, 0.15)
-        micro_cluster.CF = np.array([6.0, 6.0])
-        micro_cluster.CF2 = np.array([1.0, 1.0])
+        micro_cluster.cf1 = np.array([6.0, 6.0])
+        micro_cluster.cf2 = np.array([1.0, 1.0])
         micro_cluster.weight = 6
         denstream.p_micro_clusters = []
         denstream.p_micro_clusters.append(micro_cluster)
@@ -779,8 +1006,8 @@ def test_generate_clusters(self, denstream):
         denstream.all_cases[case_1.id] = micro_cluster.id
 
         micro_cluster = MicroCluster(1, 2, 0, 0.15)
-        micro_cluster.CF = np.array([1.0, 1.0])
-        micro_cluster.CF2 = np.array([1.0, 1.0])
+        micro_cluster.cf1 = np.array([1.0, 1.0])
+        micro_cluster.cf2 = np.array([1.0, 1.0])
         micro_cluster.weight = 4
         denstream.p_micro_clusters.append(micro_cluster)
         denstream.all_cases[case_2.id] = micro_cluster.id
@@ -790,7 +1017,10 @@ def test_generate_clusters(self, denstream):
         cl2 = denstream.p_micro_clusters[1]
 
         assert len(denstream.p_micro_clusters) > 1
-        assert denstream.euclidean_distance(cl1.centroid, cl2.centroid) > 2 * denstream.epsilon
+        assert (
+            denstream.euclidean_distance(cl1.centroid, cl2.centroid)
+            > 2 * denstream.epsilon
+        )
         assert cl1.weight >= denstream.mu
         assert cl2.weight >= denstream.mu
         dense_group, not_dense_group = denstream.generate_clusters()
@@ -804,7 +1034,7 @@ def test_generate_clusters(self, denstream):
         assert np.all(cluster.centroid == [1, 1])
         assert cluster.radius == 0
         assert cluster.weight == 6
-        assert cluster.case_ids == ['0', '1']
+        assert cluster.case_ids == ["0", "1"]
         with pytest.raises(IndexError):
             assert cluster_list[1]
         cluster_list = dense_group[1]
@@ -814,14 +1044,14 @@ def test_generate_clusters(self, denstream):
         assert np.all(cluster.centroid == [0.25, 0.25])
         assert cluster.radius == cl2.radius
         assert cluster.weight == 4
-        assert cluster.case_ids == ['2', '3']
+        assert cluster.case_ids == ["2", "3"]
         with pytest.raises(IndexError):
             assert dense_group[2]
             assert cluster_list[1]
 
         micro_cluster = MicroCluster(0, 2, 0, 0.15)
-        micro_cluster.CF = np.array([1.0, 1.0])
-        micro_cluster.CF2 = np.array([1.0, 1.0])
+        micro_cluster.cf1 = np.array([1.0, 1.0])
+        micro_cluster.cf2 = np.array([1.0, 1.0])
         micro_cluster.weight = 3
         denstream.p_micro_clusters = []
         denstream.p_micro_clusters.append(micro_cluster)
@@ -829,8 +1059,8 @@ def test_generate_clusters(self, denstream):
         denstream.all_cases[case_1.id] = micro_cluster.id
 
         micro_cluster = MicroCluster(1, 2, 0, 0.15)
-        micro_cluster.CF = np.array([1.0, 1.0])
-        micro_cluster.CF2 = np.array([1.0, 1.0])
+        micro_cluster.cf1 = np.array([1.0, 1.0])
+        micro_cluster.cf2 = np.array([1.0, 1.0])
         micro_cluster.weight = 2
         denstream.p_micro_clusters.append(micro_cluster)
         denstream.all_cases[case_2.id] = micro_cluster.id
@@ -840,7 +1070,10 @@ def test_generate_clusters(self, denstream):
         cl2 = denstream.p_micro_clusters[1]
 
         assert len(denstream.p_micro_clusters) > 1
-        assert denstream.euclidean_distance(cl1.centroid, cl2.centroid) > 2 * denstream.epsilon
+        assert (
+            denstream.euclidean_distance(cl1.centroid, cl2.centroid)
+            > 2 * denstream.epsilon
+        )
         assert cl1.weight < denstream.mu
         assert cl2.weight < denstream.mu
         dense_group, not_dense_group = denstream.generate_clusters()
@@ -854,7 +1087,7 @@ def test_generate_clusters(self, denstream):
         assert np.all(cluster.centroid == [(1 / 3), (1 / 3)])
         assert cluster.radius == cl1.radius
         assert cluster.weight == 3
-        assert cluster.case_ids == ['0', '1']
+        assert cluster.case_ids == ["0", "1"]
         with pytest.raises(IndexError):
             assert cluster_list[1]
         cluster_list = not_dense_group[1]
@@ -864,7 +1097,7 @@ def test_generate_clusters(self, denstream):
         assert np.all(cluster.centroid == [0.5, 0.5])
         assert cluster.radius == cl2.radius
         assert cluster.weight == 2
-        assert cluster.case_ids == ['2', '3']
+        assert cluster.case_ids == ["2", "3"]
         with pytest.raises(IndexError):
             assert not_dense_group[2]
             assert cluster_list[1]
@@ -872,10 +1105,10 @@ def test_generate_clusters(self, denstream):
     def test_generate_outlier_clusters(self, denstream):
         assert denstream.generate_outlier_clusters() == []
 
-        case_0 = Case('0')
-        case_1 = Case('1')
-        case_2 = Case('2')
-        case_3 = Case('3')
+        case_0 = Case("0")
+        case_1 = Case("1")
+        case_2 = Case("2")
+        case_3 = Case("3")
 
         micro_cluster = MicroCluster(0, 2, 0, 0.15)
         micro_cluster.weight = 3
@@ -893,7 +1126,7 @@ def test_generate_outlier_clusters(self, denstream):
         denstream.all_cases[case_2.id] = micro_cluster.id
         denstream.all_cases[case_3.id] = micro_cluster.id
 
-        assert denstream.all_cases == {'0': 0, '1': 1, '2': 3, '3': 3}
+        assert denstream.all_cases == {"0": 0, "1": 1, "2": 3, "3": 3}
 
         cluster_list = denstream.generate_outlier_clusters()
 
@@ -902,18 +1135,18 @@ def test_generate_outlier_clusters(self, denstream):
         assert np.all(cluster.centroid == [0, 0])
         assert cluster.radius == 0
         assert cluster.weight == 3
-        assert cluster.case_ids == ['0']
+        assert cluster.case_ids == ["0"]
 
         cluster = cluster_list[1]
         assert cluster.id == 1
         assert np.all(cluster.centroid == [0, 0])
         assert cluster.radius == 0
         assert cluster.weight == 4
-        assert cluster.case_ids == ['1']
+        assert cluster.case_ids == ["1"]
 
         cluster = cluster_list[2]
         assert cluster.id == 3
         assert np.all(cluster.centroid == [0, 0])
         assert cluster.radius == 0
         assert cluster.weight == 6
-        assert cluster.case_ids == ['2', '3']
+        assert cluster.case_ids == ["2", "3"]
diff --git a/tests/test_distances.py b/tests/test_distances.py
new file mode 100644
index 0000000..c08fd81
--- /dev/null
+++ b/tests/test_distances.py
@@ -0,0 +1,480 @@
+from datetime import datetime
+import networkx as nx
+from cdesf2.data_structures import Case
+from cdesf2.utils import (
+    calculate_case_distances,
+    calculate_case_time_distances,
+    initialize_graph,
+)
+import pytest
+
+
+class TestCalculateCaseDistances:
+    @pytest.fixture
+    def simple_graph_with_attributes(self):
+        case_list = []
+
+        case = Case("1")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+                "attribute_one": 10,
+                "attribute_two": 5,
+                "color": "red",
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+                "attribute_one": 0,
+                "attribute_two": 7,
+                "color": "green",
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+                "attribute_one": 2,
+                "attribute_two": 4,
+                "color": "green",
+            }
+        )
+        case_list.append(case)
+
+        case = Case("2")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+                "attribute_one": 3,
+                "attribute_two": 10,
+                "color": "blue",
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+                "attribute_one": 6,
+                "attribute_two": 2,
+                "color": "green",
+            }
+        )
+        case_list.append(case)
+
+        case = Case("3")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+                "attribute_one": 8,
+                "attribute_two": 4,
+                "color": "red",
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+                "attribute_one": 1,
+                "attribute_two": 12,
+                "color": "blue",
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+                "attribute_one": 2,
+                "attribute_two": 2,
+                "color": "blue",
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityD",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 30),
+                "attribute_one": 1,
+                "attribute_two": 1,
+                "color": "blue",
+            }
+        )
+        case_list.append(case)
+
+        graph = initialize_graph(case_list, ["attribute_one", "attribute_two", "color"])
+
+        return graph
+
+    def test_calculate_case_distances(self):
+        case_list = []
+
+        case = Case("1")
+        case.add_event(
+            {
+                "concept:name": "Activity A",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity D",
+                "time:timestamp": datetime(2015, 5, 10, 8, 33, 20),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity E",
+                "time:timestamp": datetime(2015, 5, 10, 14, 6, 40),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("2")
+        case.add_event(
+            {
+                "concept:name": "Activity A",
+                "time:timestamp": datetime(2015, 5, 10, 1, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity B",
+                "time:timestamp": datetime(2015, 5, 10, 14, 40, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity D",
+                "time:timestamp": datetime(2015, 5, 10, 15, 5, 00),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("3")
+        case.add_event(
+            {
+                "concept:name": "Activity A",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity B",
+                "time:timestamp": datetime(2015, 5, 10, 8, 13, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity C",
+                "time:timestamp": datetime(2015, 5, 10, 8, 13, 00),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("4")
+        case.add_event(
+            {
+                "concept:name": "Activity A",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity B",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity C",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("5")
+        case.add_event(
+            {
+                "concept:name": "Activity A",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity B",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity C",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("6")
+        case.add_event(
+            {
+                "concept:name": "Activity A",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity B",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity C",
+                "time:timestamp": datetime(2015, 5, 10, 15, 30, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity F",
+                "time:timestamp": datetime(2015, 5, 10, 15, 30, 00),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("7")
+        case.add_event(
+            {
+                "concept:name": "Activity A",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity B",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity C",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity F",
+                "time:timestamp": datetime(2015, 5, 11, 8, 00, 00),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("8")
+        case.add_event(
+            {
+                "concept:name": "Activity A",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity B",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity C",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity F",
+                "time:timestamp": datetime(2015, 5, 10, 11, 46, 40),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("9")
+        case.add_event(
+            {
+                "concept:name": "Activity A",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity B",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity C",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity F",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("10")
+        case.add_event(
+            {
+                "concept:name": "Activity A",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity B",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity C",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity F",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("11")
+        case.add_event(
+            {
+                "concept:name": "Activity A",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity B",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity C",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case_list.append(case)
+
+        graph = initialize_graph(case_list)
+
+        case = Case("12")
+        case.add_event(
+            {
+                "concept:name": "Activity A",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity B",
+                "time:timestamp": datetime(2015, 5, 10, 9, 18, 20),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "Activity C",
+                "time:timestamp": datetime(2015, 5, 10, 10, 8, 20),
+            }
+        )
+
+        distances = calculate_case_distances(graph, case)
+        assert distances.get("graph") == pytest.approx(0.05)
+        assert distances.get("time") == pytest.approx(-1.42, rel=1e-2)
+
+    def test_calculate_case_distances_with_attributes(
+        self,
+        simple_graph_with_attributes: nx.DiGraph,
+    ):
+        case = Case("4")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+                "attribute_one": 9,
+                "attribute_two": 6,
+                "color": "red",
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 9, 18, 20),
+                "attribute_one": 5,
+                "attribute_two": 10,
+                "color": "red",
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 10, 8, 20),
+                "attribute_one": 2,
+                "attribute_two": 2,
+                "color": "green",
+            }
+        )
+
+        distances = calculate_case_distances(
+            simple_graph_with_attributes,
+            case,
+            additional_attributes=["attribute_one", "attribute_two", "color"],
+        )
+        assert distances.get("attribute_one") == pytest.approx(0.4121, rel=1e-2)
+        assert distances.get("attribute_two") == pytest.approx(0.2651, rel=1e-2)
+        assert distances.get("color") == pytest.approx(0.6111, rel=1e-2)
+
+
+class TestCalculateTimestampDistances:
+    def test_calculate_empty_distances(self):
+        empty_case = Case("Empty case")
+
+        assert calculate_case_time_distances(empty_case) == [0]
+
+        single_event_case = Case("Single event case")
+        single_event_case.add_event(
+            {"concept:name": "", "time:timestamp": datetime(2015, 5, 10, 8, 30, 30)}
+        )
+
+        assert calculate_case_time_distances(single_event_case) == [0]
+
+    def test_calculate_actual_distances(self):
+        case_one = Case("Case 1")
+        case_one.add_event(
+            {"concept:name": "", "time:timestamp": datetime(2015, 5, 10, 8, 30, 30)}
+        )
+        case_one.add_event(
+            {"concept:name": "", "time:timestamp": datetime(2015, 5, 10, 8, 45, 30)}
+        )
+        case_one.add_event(
+            {"concept:name": "", "time:timestamp": datetime(2015, 5, 10, 8, 50, 30)}
+        )
+        case_one.add_event(
+            {"concept:name": "", "time:timestamp": datetime(2015, 5, 10, 8, 53, 30)}
+        )
+        case_one.add_event(
+            {"concept:name": "", "time:timestamp": datetime(2015, 5, 10, 8, 59, 30)}
+        )
+        case_one.add_event(
+            {"concept:name": "", "time:timestamp": datetime(2015, 5, 10, 9, 1, 30)}
+        )
+
+        expected_distances = [900, 300, 180, 360, 120]
+
+        assert calculate_case_time_distances(case_one) == expected_distances
diff --git a/tests/test_extract_case_distances.py b/tests/test_extract_case_distances.py
deleted file mode 100644
index 0ebf6cb..0000000
--- a/tests/test_extract_case_distances.py
+++ /dev/null
@@ -1,92 +0,0 @@
-from datetime import datetime
-import networkx as nx
-from cdesf2.data_structures import Case
-from cdesf2.utils import initialize_graph, extract_case_distances
-import pytest
-
-
-def test_extract_case_distances():
-    case_list = []
-
-    case = Case('1')
-    case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityD', datetime(2015, 5, 10, 8, 33, 20))
-    case.set_activity('activityE', datetime(2015, 5, 10, 14, 6, 40))
-    case_list.append(case)
-
-    case = Case('2')
-    case.set_activity('activityA', datetime(2015, 5, 10, 1, 00, 00))
-    case.set_activity('activityB', datetime(2015, 5, 10, 14, 40, 00))
-    case.set_activity('activityD', datetime(2015, 5, 10, 15, 5, 00))
-    case_list.append(case)
-
-    case = Case('3')
-    case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityB', datetime(2015, 5, 10, 8, 13, 00))
-    case.set_activity('activityC', datetime(2015, 5, 10, 8, 13, 00))
-    case_list.append(case)
-
-    case = Case('4')
-    case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 20))
-    case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20))
-    case_list.append(case)
-
-    case = Case('5')
-    case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 00))
-    case_list.append(case)
-
-    case = Case('6')
-    case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityC', datetime(2015, 5, 10, 15, 30, 00))
-    case.set_activity('activityF', datetime(2015, 5, 10, 15, 30, 00))
-    case_list.append(case)
-
-    case = Case('7')
-    case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityF', datetime(2015, 5, 11, 8, 00, 00))
-    case_list.append(case)
-
-    case = Case('8')
-    case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityF', datetime(2015, 5, 10, 11, 46, 40))
-    case_list.append(case)
-
-    case = Case('9')
-    case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityF', datetime(2015, 5, 10, 8, 00, 00))
-    case_list.append(case)
-
-    case = Case('10')
-    case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityF', datetime(2015, 5, 10, 8, 00, 00))
-    case_list.append(case)
-
-    case = Case('11')
-    case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 00))
-    case_list.append(case)
-
-    graph = nx.DiGraph()
-    graph = initialize_graph(graph, case_list)
-
-    case = Case('12')
-    case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityB', datetime(2015, 5, 10, 9, 18, 20))
-    case.set_activity('activityC', datetime(2015, 5, 10, 10, 8, 20))
-
-    trace_distance, time_distance = extract_case_distances(graph, case)
-    assert trace_distance == pytest.approx(0.05)
-    assert time_distance == pytest.approx(-1.42, rel=1e-2)
diff --git a/tests/test_extract_cases_time_and_trace.py b/tests/test_extract_cases_time_and_trace.py
deleted file mode 100644
index 5126e0e..0000000
--- a/tests/test_extract_cases_time_and_trace.py
+++ /dev/null
@@ -1,55 +0,0 @@
-from datetime import datetime
-from cdesf2.data_structures import Case
-from cdesf2.utils import extract_cases_time_and_trace
-import pytest
-
-
-def test_extract_cases_time_and_trace():
-    case_list = []
-
-    with pytest.raises(Exception):
-        assert extract_cases_time_and_trace(case_list)
-
-    case = Case('1')
-    case.set_activity('activity1', datetime(2015, 5, 10, 8, 30, 00))
-    case.set_activity('activity2', datetime(2015, 5, 10, 9, 00, 00))
-    case.set_activity('activity3', datetime(2015, 5, 10, 9, 30, 00))
-    case.set_activity('activity4', datetime(2015, 5, 10, 10, 00, 00))
-    case_list.append(case)
-
-    case = Case('2')
-    case.set_activity('activity1', datetime(2015, 5, 10, 8, 5, 30))
-    case.set_activity('activity3', datetime(2015, 5, 10, 9, 33, 52))
-    case.set_activity('activity2', datetime(2015, 5, 10, 10, 30, 00))
-    case.set_activity('activity4', datetime(2015, 5, 10, 11, 50, 00))
-    case_list.append(case)
-
-    case = Case('3')
-    case.set_activity('activity5', datetime(2016, 5, 10, 8, 5, 30))
-    case.set_activity('activity1', datetime(2017, 5, 10, 9, 33, 52))
-    case.set_activity('activity3', datetime(2018, 5, 10, 10, 30, 00))
-    case.set_activity('activity4', datetime(2019, 5, 10, 11, 50, 00))
-    case_list.append(case)
-
-    trace_list, time_list = extract_cases_time_and_trace(case_list)
-
-    expected_trace_list = [['activity1', 'activity2', 'activity3', 'activity4'],
-                           ['activity1', 'activity3', 'activity2', 'activity4'],
-                           ['activity5', 'activity1', 'activity3', 'activity4']]
-    expected_time_list = [[datetime(2015, 5, 10, 8, 30, 00),
-                           datetime(2015, 5, 10, 9, 00, 00),
-                           datetime(2015, 5, 10, 9, 30, 00),
-                           datetime(2015, 5, 10, 10, 00, 00)],
-                          [datetime(2015, 5, 10, 8, 5, 30),
-                           datetime(2015, 5, 10, 9, 33, 52),
-                           datetime(2015, 5, 10, 10, 30, 00),
-                           datetime(2015, 5, 10, 11, 50, 00)],
-                          [datetime(2016, 5, 10, 8, 5, 30),
-                           datetime(2017, 5, 10, 9, 33, 52),
-                           datetime(2018, 5, 10, 10, 30, 00),
-                           datetime(2019, 5, 10, 11, 50, 00)]]
-
-    assert len(trace_list) == 3
-    assert len(time_list) == 3
-    assert trace_list == expected_trace_list
-    assert time_list == expected_time_list
diff --git a/tests/test_graph.py b/tests/test_graph.py
deleted file mode 100644
index 1f900c5..0000000
--- a/tests/test_graph.py
+++ /dev/null
@@ -1,179 +0,0 @@
-from datetime import datetime
-import networkx as nx
-import pytest
-from cdesf2.data_structures import Case
-from cdesf2.utils import initialize_graph, normalize_graph, merge_graphs
-
-
-class TestGraph:
-    @pytest.fixture
-    def simple_graph(self):
-        case_list = []
-
-        case = Case('1')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10))
-        case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20))
-        case_list.append(case)
-
-        case = Case('2')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10))
-        case_list.append(case)
-
-        case = Case('3')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10))
-        case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20))
-        case.set_activity('activityD', datetime(2015, 5, 10, 8, 00, 30))
-        case_list.append(case)
-
-        graph = nx.DiGraph(name='simple_graph')
-        graph = initialize_graph(graph, case_list)
-
-        return graph
-
-    @pytest.fixture
-    def complex_graph(self):
-        case_list = []
-
-        case = Case('1')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityD', datetime(2015, 5, 10, 8, 33, 20))
-        case.set_activity('activityE', datetime(2015, 5, 10, 14, 6, 40))
-        case_list.append(case)
-
-        case = Case('2')
-        case.set_activity('activityA', datetime(2015, 5, 10, 1, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 14, 40, 00))
-        case.set_activity('activityD', datetime(2015, 5, 10, 15, 5, 00))
-        case_list.append(case)
-
-        case = Case('3')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 13, 00))
-        case.set_activity('activityC', datetime(2015, 5, 10, 8, 13, 00))
-        case_list.append(case)
-
-        case = Case('4')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 20))
-        case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20))
-        case_list.append(case)
-
-        case = Case('5')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 00))
-        case_list.append(case)
-
-        case = Case('6')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityC', datetime(2015, 5, 10, 15, 30, 00))
-        case.set_activity('activityF', datetime(2015, 5, 10, 15, 30, 00))
-        case_list.append(case)
-
-        case = Case('7')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityF', datetime(2015, 5, 11, 8, 00, 00))
-        case_list.append(case)
-
-        case = Case('8')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityF', datetime(2015, 5, 10, 11, 46, 40))
-        case_list.append(case)
-
-        case = Case('9')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityF', datetime(2015, 5, 10, 8, 00, 00))
-        case_list.append(case)
-
-        case = Case('10')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityF', datetime(2015, 5, 10, 8, 00, 00))
-        case_list.append(case)
-
-        case = Case('11')
-        case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 00))
-        case.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 00))
-        case_list.append(case)
-
-        graph = nx.DiGraph(name='complex_graph')
-        graph = initialize_graph(graph, case_list)
-
-        return graph
-
-    def test_populate_graph(self, simple_graph, complex_graph):
-        assert len(simple_graph.nodes()) == 4
-        assert len(simple_graph.edges()) == 3
-        assert simple_graph['activityA']['activityB']['weight'] == 3
-        assert simple_graph['activityA']['activityB']['time'] == 30
-        assert simple_graph['activityB']['activityC']['weight'] == 2
-        assert simple_graph['activityB']['activityC']['time'] == 20
-        assert simple_graph['activityC']['activityD']['weight'] == 1
-        assert simple_graph['activityC']['activityD']['time'] == 10
-
-        assert len(complex_graph.nodes()) == 6
-        assert len(complex_graph.edges()) == 6
-        assert complex_graph['activityA']['activityB']['weight'] == 10
-        assert complex_graph['activityA']['activityB']['time'] == 50000
-        assert complex_graph['activityB']['activityC']['weight'] == 9
-        assert complex_graph['activityB']['activityC']['time'] == 27000
-        assert complex_graph['activityC']['activityF']['weight'] == 5
-        assert complex_graph['activityC']['activityF']['time'] == 100000
-        assert complex_graph['activityA']['activityD']['weight'] == 1
-        assert complex_graph['activityA']['activityD']['time'] == 2000
-        assert complex_graph['activityB']['activityD']['weight'] == 1
-        assert complex_graph['activityB']['activityD']['time'] == 1500
-        assert complex_graph['activityD']['activityE']['weight'] == 1
-        assert complex_graph['activityD']['activityE']['time'] == 20000
-
-    def test_normalize_graph(self, simple_graph, complex_graph):
-        simple_graph = normalize_graph(simple_graph)
-        assert simple_graph['activityA']['activityB']['weight_normalized'] == 1
-        assert simple_graph['activityA']['activityB']['time_normalized'] == 10
-        assert simple_graph['activityB']['activityC']['weight_normalized'] == 2/3
-        assert simple_graph['activityB']['activityC']['time_normalized'] == 10
-        assert simple_graph['activityC']['activityD']['weight_normalized'] == 1/3
-        assert simple_graph['activityC']['activityD']['time_normalized'] == 10
-
-        complex_graph = normalize_graph(complex_graph)
-        assert complex_graph['activityA']['activityB']['weight_normalized'] == 1
-        assert complex_graph['activityA']['activityB']['time_normalized'] == 5000
-        assert complex_graph['activityB']['activityC']['weight_normalized'] == 0.9
-        assert complex_graph['activityB']['activityC']['time_normalized'] == 3000
-        assert complex_graph['activityC']['activityF']['weight_normalized'] == 0.5
-        assert complex_graph['activityC']['activityF']['time_normalized'] == 20000
-        assert complex_graph['activityA']['activityD']['weight_normalized'] == 0.1
-        assert complex_graph['activityA']['activityD']['time_normalized'] == 2000
-        assert complex_graph['activityB']['activityD']['weight_normalized'] == 0.1
-        assert complex_graph['activityB']['activityD']['time_normalized'] == 1500
-        assert complex_graph['activityD']['activityE']['weight_normalized'] == 0.1
-        assert complex_graph['activityD']['activityE']['time_normalized'] == 20000
-
-    def test_merge_graphs(self, simple_graph, complex_graph):
-        complex_graph = merge_graphs(complex_graph, simple_graph)
-        assert complex_graph['activityA']['activityB']['weight'] == 12.5
-        assert complex_graph['activityA']['activityB']['time'] == 50030
-        assert complex_graph['activityB']['activityC']['weight'] == pytest.approx(10.55)
-        assert complex_graph['activityB']['activityC']['time'] == 27020
-        assert complex_graph['activityC']['activityF']['weight'] == 4.75
-        assert complex_graph['activityC']['activityF']['time'] == 100000
-        assert complex_graph['activityA']['activityD']['weight'] == 0.95
-        assert complex_graph['activityA']['activityD']['time'] == 2000
-        assert complex_graph['activityB']['activityD']['weight'] == 0.95
-        assert complex_graph['activityB']['activityD']['time'] == 1500
-        assert complex_graph['activityD']['activityE']['weight'] == 0.95
-        assert complex_graph['activityD']['activityE']['time'] == 20000
-        assert complex_graph['activityC']['activityD']['weight'] == 1
-        assert complex_graph['activityC']['activityD']['time'] == 10
diff --git a/tests/test_graph_operations.py b/tests/test_graph_operations.py
new file mode 100644
index 0000000..6125d0d
--- /dev/null
+++ b/tests/test_graph_operations.py
@@ -0,0 +1,533 @@
+from datetime import datetime
+import networkx as nx
+import pytest
+from cdesf2.data_structures import Case
+from cdesf2.utils import initialize_graph, normalize_graph, merge_graphs
+
+
+class TestGraph:
+    @pytest.fixture
+    def simple_graph(self):
+        case_list = []
+
+        case = Case("1")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("2")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("3")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityD",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 30),
+            }
+        )
+        case_list.append(case)
+
+        graph = initialize_graph(case_list)
+
+        return graph
+
+    @pytest.fixture
+    def simple_graph_with_attributes(self):
+        case_list = []
+
+        case = Case("1")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+                "attribute_one": 10,
+                "attribute_two": 5,
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+                "attribute_one": 0,
+                "attribute_two": 7,
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+                "attribute_one": 2,
+                "attribute_two": 4,
+            }
+        )
+        case_list.append(case)
+
+        case = Case("2")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+                "attribute_one": 3,
+                "attribute_two": 10,
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+                "attribute_one": 6,
+                "attribute_two": 2,
+            }
+        )
+        case_list.append(case)
+
+        case = Case("3")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+                "attribute_one": 8,
+                "attribute_two": 4,
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 10),
+                "attribute_one": 1,
+                "attribute_two": 12,
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+                "attribute_one": 2,
+                "attribute_two": 2,
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityD",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 30),
+                "attribute_one": 1,
+                "attribute_two": 1,
+            }
+        )
+        case_list.append(case)
+
+        graph = initialize_graph(case_list, ["attribute_one", "attribute_two"])
+
+        return graph
+
+    @pytest.fixture
+    def complex_graph(self):
+        case_list = []
+
+        case = Case("1")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityD",
+                "time:timestamp": datetime(2015, 5, 10, 8, 33, 20),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityE",
+                "time:timestamp": datetime(2015, 5, 10, 14, 6, 40),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("2")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 1, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 14, 40, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityD",
+                "time:timestamp": datetime(2015, 5, 10, 15, 5, 00),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("3")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 13, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 13, 00),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("4")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 20),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("5")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("6")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 15, 30, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityF",
+                "time:timestamp": datetime(2015, 5, 10, 15, 30, 00),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("7")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityF",
+                "time:timestamp": datetime(2015, 5, 11, 8, 00, 00),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("8")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityF",
+                "time:timestamp": datetime(2015, 5, 10, 11, 46, 40),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("9")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityF",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("10")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityF",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case_list.append(case)
+
+        case = Case("11")
+        case.add_event(
+            {
+                "concept:name": "activityA",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityB",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case.add_event(
+            {
+                "concept:name": "activityC",
+                "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+            }
+        )
+        case_list.append(case)
+
+        graph = initialize_graph(case_list)
+
+        return graph
+
+    def test_populate_graph(
+        self, simple_graph, simple_graph_with_attributes: nx.DiGraph, complex_graph
+    ):
+        assert len(simple_graph.nodes()) == 4
+        assert len(simple_graph.edges()) == 3
+        assert simple_graph["activityA"]["activityB"]["weight"] == 3
+        assert simple_graph["activityA"]["activityB"]["time"] == 30
+        assert simple_graph["activityB"]["activityC"]["weight"] == 2
+        assert simple_graph["activityB"]["activityC"]["time"] == 20
+        assert simple_graph["activityC"]["activityD"]["weight"] == 1
+        assert simple_graph["activityC"]["activityD"]["time"] == 10
+
+        assert len(simple_graph_with_attributes.nodes()) == 4
+        assert len(simple_graph_with_attributes.edges()) == 3
+        assert simple_graph_with_attributes["activityA"]["activityB"]["weight"] == 3
+        assert simple_graph_with_attributes["activityA"]["activityB"]["time"] == 30
+        # TODO: Maybe (just maybe) the node should hold an array with all different values, then the distances function can calculate the distance with the new one?
+        assert simple_graph_with_attributes.nodes["activityA"]["attribute_one"] == [
+            10,
+            3,
+            8,
+        ]
+        assert simple_graph_with_attributes.nodes["activityA"]["attribute_two"] == [
+            5,
+            10,
+            4,
+        ]
+        assert simple_graph_with_attributes.nodes["activityB"]["attribute_one"] == [
+            0,
+            6,
+            1,
+        ]
+
+        assert len(complex_graph.nodes()) == 6
+        assert len(complex_graph.edges()) == 6
+        assert complex_graph["activityA"]["activityB"]["weight"] == 10
+        assert complex_graph["activityA"]["activityB"]["time"] == 50000
+        assert complex_graph["activityB"]["activityC"]["weight"] == 9
+        assert complex_graph["activityB"]["activityC"]["time"] == 27000
+        assert complex_graph["activityC"]["activityF"]["weight"] == 5
+        assert complex_graph["activityC"]["activityF"]["time"] == 100000
+        assert complex_graph["activityA"]["activityD"]["weight"] == 1
+        assert complex_graph["activityA"]["activityD"]["time"] == 2000
+        assert complex_graph["activityB"]["activityD"]["weight"] == 1
+        assert complex_graph["activityB"]["activityD"]["time"] == 1500
+        assert complex_graph["activityD"]["activityE"]["weight"] == 1
+        assert complex_graph["activityD"]["activityE"]["time"] == 20000
+
+    def test_normalize_graph(self, simple_graph, complex_graph):
+        simple_graph = normalize_graph(simple_graph)
+        assert simple_graph["activityA"]["activityB"]["weight_normalized"] == 1
+        assert simple_graph["activityA"]["activityB"]["time_normalized"] == 10
+        assert simple_graph["activityB"]["activityC"]["weight_normalized"] == 2 / 3
+        assert simple_graph["activityB"]["activityC"]["time_normalized"] == 10
+        assert simple_graph["activityC"]["activityD"]["weight_normalized"] == 1 / 3
+        assert simple_graph["activityC"]["activityD"]["time_normalized"] == 10
+
+        complex_graph = normalize_graph(complex_graph)
+        assert complex_graph["activityA"]["activityB"]["weight_normalized"] == 1
+        assert complex_graph["activityA"]["activityB"]["time_normalized"] == 5000
+        assert complex_graph["activityB"]["activityC"]["weight_normalized"] == 0.9
+        assert complex_graph["activityB"]["activityC"]["time_normalized"] == 3000
+        assert complex_graph["activityC"]["activityF"]["weight_normalized"] == 0.5
+        assert complex_graph["activityC"]["activityF"]["time_normalized"] == 20000
+        assert complex_graph["activityA"]["activityD"]["weight_normalized"] == 0.1
+        assert complex_graph["activityA"]["activityD"]["time_normalized"] == 2000
+        assert complex_graph["activityB"]["activityD"]["weight_normalized"] == 0.1
+        assert complex_graph["activityB"]["activityD"]["time_normalized"] == 1500
+        assert complex_graph["activityD"]["activityE"]["weight_normalized"] == 0.1
+        assert complex_graph["activityD"]["activityE"]["time_normalized"] == 20000
+
+    def test_merge_graphs(self, simple_graph, complex_graph):
+        complex_graph = merge_graphs(complex_graph, simple_graph)
+        assert complex_graph["activityA"]["activityB"]["weight"] == 12.5
+        assert complex_graph["activityA"]["activityB"]["time"] == 50030
+        assert complex_graph["activityB"]["activityC"]["weight"] == pytest.approx(10.55)
+        assert complex_graph["activityB"]["activityC"]["time"] == 27020
+        assert complex_graph["activityC"]["activityF"]["weight"] == 4.75
+        assert complex_graph["activityC"]["activityF"]["time"] == 100000
+        assert complex_graph["activityA"]["activityD"]["weight"] == 0.95
+        assert complex_graph["activityA"]["activityD"]["time"] == 2000
+        assert complex_graph["activityB"]["activityD"]["weight"] == 0.95
+        assert complex_graph["activityB"]["activityD"]["time"] == 1500
+        assert complex_graph["activityD"]["activityE"]["weight"] == 0.95
+        assert complex_graph["activityD"]["activityE"]["time"] == 20000
+        assert complex_graph["activityC"]["activityD"]["weight"] == 1
+        assert complex_graph["activityC"]["activityD"]["time"] == 10
+
+    def test_merge_graphs_with_attributes(self, simple_graph_with_attributes):
+        new_graph = merge_graphs(
+            simple_graph_with_attributes, simple_graph_with_attributes
+        )
+
+        assert new_graph.nodes["activityA"]["attribute_one"] == [10, 3, 8, 10, 3, 8]
+        assert new_graph.nodes["activityA"]["attribute_two"] == [5, 10, 4, 5, 10, 4]
+        assert new_graph.nodes["activityB"]["attribute_one"] == [0, 6, 1, 0, 6, 1]
diff --git a/tests/test_micro_cluster.py b/tests/test_micro_cluster.py
index cdd3599..264b3e8 100644
--- a/tests/test_micro_cluster.py
+++ b/tests/test_micro_cluster.py
@@ -1,6 +1,6 @@
 from cdesf2.data_structures import MicroCluster
 from cdesf2.data_structures import Case
-from cdesf2.utils import initialize_graph, extract_case_distances
+from cdesf2.utils import initialize_graph, calculate_case_distances
 from datetime import datetime
 from math import sqrt
 import networkx as nx
@@ -10,10 +10,10 @@
 
 def test_initial_value():
     micro_cluster = MicroCluster(0, 2, 0, 0.15)
-    assert isinstance(micro_cluster.CF, np.ndarray)
-    assert isinstance(micro_cluster.CF2, np.ndarray)
-    assert np.all(micro_cluster.CF == [0, 0])
-    assert np.all(micro_cluster.CF2 == [0, 0])
+    assert isinstance(micro_cluster.cf1, np.ndarray)
+    assert isinstance(micro_cluster.cf2, np.ndarray)
+    assert np.all(micro_cluster.cf1 == [0, 0])
+    assert np.all(micro_cluster.cf2 == [0, 0])
     assert micro_cluster.weight == 0
     assert isinstance(micro_cluster.creation_time, int)
     assert micro_cluster.creation_time == 0
@@ -21,9 +21,10 @@ def test_initial_value():
     assert micro_cluster.lambda_ == 0.15
 
 
-def test_no_value():
-    with pytest.raises(Exception):
-        assert MicroCluster()
+# This is a compile-time error.
+# def test_no_value():
+#     with pytest.raises(Exception):
+#         assert MicroCluster()
 
 
 def test_centroid():
@@ -31,7 +32,7 @@ def test_centroid():
     micro_cluster.weight = 1
     assert isinstance(micro_cluster.centroid, np.ndarray)
     assert np.all(micro_cluster.centroid == 0)
-    micro_cluster.CF = np.array([0, 1])
+    micro_cluster.cf1 = np.array([0, 1])
     assert np.all(micro_cluster.centroid == [0, 1])
     micro_cluster.weight = 2
     assert np.all(micro_cluster.centroid == [0, 0.5])
@@ -40,26 +41,26 @@ def test_centroid():
 def test_radius():
     micro_cluster = MicroCluster(0, 2, 0, 0.15)
     micro_cluster.weight = 1
-    micro_cluster.CF = np.array([0, 0])
-    micro_cluster.CF2 = np.array([0, 1])
+    micro_cluster.cf1 = np.array([0, 0])
+    micro_cluster.cf2 = np.array([0, 1])
 
     assert isinstance(micro_cluster.radius, np.float64)
     assert micro_cluster.radius == 1.0
 
-    micro_cluster.CF = np.array([0, 0])
-    micro_cluster.CF2 = np.array([0, 2])
+    micro_cluster.cf1 = np.array([0, 0])
+    micro_cluster.cf2 = np.array([0, 2])
     assert micro_cluster.radius == sqrt(2)
 
-    micro_cluster.CF = np.array([0, 1])
-    micro_cluster.CF2 = np.array([0, 2])
+    micro_cluster.cf1 = np.array([0, 1])
+    micro_cluster.cf2 = np.array([0, 2])
     assert micro_cluster.radius == 1
 
-    micro_cluster.CF = np.array([0, 2])
-    micro_cluster.CF2 = np.array([0, 2])
+    micro_cluster.cf1 = np.array([0, 2])
+    micro_cluster.cf2 = np.array([0, 2])
     assert micro_cluster.radius == 0
 
-    micro_cluster.CF = np.array([1, 2])
-    micro_cluster.CF2 = np.array([0, 0])
+    micro_cluster.cf1 = np.array([1, 2])
+    micro_cluster.cf2 = np.array([0, 0])
     assert micro_cluster.radius == 0
 
 
@@ -70,27 +71,27 @@ def test_radius_with_new_point():
     assert isinstance(radius, np.float64)
     assert radius == 0
 
-    micro_cluster.CF = np.array([0, 0])
-    micro_cluster.CF2 = np.array([0, 1])
+    micro_cluster.cf1 = np.array([0, 0])
+    micro_cluster.cf2 = np.array([0, 1])
     point1 = np.array([0, 1])
     radius = micro_cluster.radius_with_new_point(point1)
     assert radius == 1
 
-    micro_cluster.CF = np.array([0, 0])
-    micro_cluster.CF2 = np.array([1, 1])
+    micro_cluster.cf1 = np.array([0, 0])
+    micro_cluster.cf2 = np.array([1, 1])
     point1 = np.array([0, 1])
     radius = micro_cluster.radius_with_new_point(point1)
-    micro_cluster.CF = np.array([0, 1])
-    micro_cluster.CF2 = np.array([1, 2])
+    micro_cluster.cf1 = np.array([0, 1])
+    micro_cluster.cf2 = np.array([1, 2])
     micro_cluster.weight = 1
     assert radius == micro_cluster.radius
 
-    micro_cluster.CF = np.array([1, 1])
-    micro_cluster.CF2 = np.array([0, 0])
+    micro_cluster.cf1 = np.array([1, 1])
+    micro_cluster.cf2 = np.array([0, 0])
     point1 = np.array([1, 1])
     radius = micro_cluster.radius_with_new_point(point1)
-    micro_cluster.CF = np.array([2, 2])
-    micro_cluster.CF2 = np.array([1, 1])
+    micro_cluster.cf1 = np.array([2, 2])
+    micro_cluster.cf2 = np.array([1, 1])
     micro_cluster.weight = 1
     assert radius == 0
     assert radius == micro_cluster.radius
@@ -100,59 +101,103 @@ def test_update():
     case_list = []
     micro_cluster = MicroCluster(0, 2, 0, 0.15)
 
-    case = Case('1')
-    case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityD', datetime(2015, 5, 10, 8, 33, 20))
-    case.set_activity('activityE', datetime(2015, 5, 10, 14, 6, 40))
+    case = Case("1")
+    case.add_event(
+        {
+            "concept:name": "activityA",
+            "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+        }
+    )
+    case.add_event(
+        {
+            "concept:name": "activityD",
+            "time:timestamp": datetime(2015, 5, 10, 8, 33, 20),
+        }
+    )
+    case.add_event(
+        {
+            "concept:name": "activityE",
+            "time:timestamp": datetime(2015, 5, 10, 14, 6, 40),
+        }
+    )
     case_list.append(case)
 
-    case = Case('2')
-    case.set_activity('activityA', datetime(2015, 5, 10, 1, 00, 00))
-    case.set_activity('activityB', datetime(2015, 5, 10, 14, 40, 00))
-    case.set_activity('activityD', datetime(2015, 5, 10, 15, 5, 00))
+    case = Case("2")
+    case.add_event(
+        {
+            "concept:name": "activityA",
+            "time:timestamp": datetime(2015, 5, 10, 1, 00, 00),
+        }
+    )
+    case.add_event(
+        {
+            "concept:name": "activityB",
+            "time:timestamp": datetime(2015, 5, 10, 14, 40, 00),
+        }
+    )
+    case.add_event(
+        {
+            "concept:name": "activityD",
+            "time:timestamp": datetime(2015, 5, 10, 15, 5, 00),
+        }
+    )
     case_list.append(case)
 
-    graph = nx.DiGraph()
-    graph = initialize_graph(graph, case_list)
-
-    case = Case('3')
-    case.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00))
-    case.set_activity('activityB', datetime(2015, 5, 10, 8, 13, 00))
-    case.set_activity('activityC', datetime(2015, 5, 10, 8, 13, 00))
-    case.graph_distance, case.time_distance = extract_case_distances(graph, case)
-
-    cf = micro_cluster.CF.copy()
-    cf2 = micro_cluster.CF2.copy()
+    graph = initialize_graph(case_list)
+
+    case = Case("3")
+    case.add_event(
+        {
+            "concept:name": "activityA",
+            "time:timestamp": datetime(2015, 5, 10, 8, 00, 00),
+        }
+    )
+    case.add_event(
+        {
+            "concept:name": "activityB",
+            "time:timestamp": datetime(2015, 5, 10, 8, 13, 00),
+        }
+    )
+    case.add_event(
+        {
+            "concept:name": "activityC",
+            "time:timestamp": datetime(2015, 5, 10, 8, 13, 00),
+        }
+    )
+    case.distances = calculate_case_distances(graph, case)
+
+    cf = micro_cluster.cf1.copy()
+    cf2 = micro_cluster.cf2.copy()
     weight = micro_cluster.weight
     micro_cluster.update(case)
 
-    assert np.all(micro_cluster.CF == cf + case.point)
-    assert np.all(micro_cluster.CF2 == cf2 + case.point*case.point)
+    assert np.all(micro_cluster.cf1 == cf + case.point)
+    assert np.all(micro_cluster.cf2 == cf2 + case.point * case.point)
     assert micro_cluster.weight == weight + 1
 
     case = case_list[0]
-    case.graph_distance, case.time_distance = extract_case_distances(graph, case)
-    cf = micro_cluster.CF.copy()
-    cf2 = micro_cluster.CF2.copy()
+    case.distances = calculate_case_distances(graph, case)
+    cf = micro_cluster.cf1.copy()
+    cf2 = micro_cluster.cf2.copy()
     weight = micro_cluster.weight
     micro_cluster.update(case)
 
-    assert np.all(micro_cluster.CF == cf + case.point)
-    assert np.all(micro_cluster.CF2 == cf2 + case.point * case.point)
+    assert np.all(micro_cluster.cf1 == cf + case.point)
+    assert np.all(micro_cluster.cf2 == cf2 + case.point * case.point)
     assert micro_cluster.weight == weight + 1
 
 
 def test_decay():
     micro_cluster = MicroCluster(0, 2, 0, 0.15)
     micro_cluster.weight = 1
-    micro_cluster.CF = np.array([0.5, 0.7])
-    micro_cluster.CF2 = np.array([0.0, 1.0])
+    micro_cluster.cf1 = np.array([0.5, 0.7])
+    micro_cluster.cf2 = np.array([0.0, 1.0])
 
-    cf = micro_cluster.CF.copy()
-    cf2 = micro_cluster.CF2.copy()
+    cf = micro_cluster.cf1.copy()
+    cf2 = micro_cluster.cf2.copy()
     weight = micro_cluster.weight
     micro_cluster.decay()
 
-    assert np.all(micro_cluster.CF == cf * (2**(-0.15)))
-    assert np.all(micro_cluster.CF2 == cf2 * (2**(-0.15)))
-    assert micro_cluster.weight == weight * (2**(-0.15))
+    assert np.all(micro_cluster.cf1 == cf * (2 ** (-0.15)))
+    assert np.all(micro_cluster.cf2 == cf2 * (2 ** (-0.15)))
+    assert micro_cluster.weight == weight * (2 ** (-0.15))
diff --git a/tests/test_pipeline.py b/tests/test_pipeline.py
index 6845430..211c0f4 100644
--- a/tests/test_pipeline.py
+++ b/tests/test_pipeline.py
@@ -3,18 +3,33 @@
 
 
 def test_pipeline():
-    path = 'demo'
-    filename = 'sudden_trace_noise20_500_cb.csv'
+    event_stream_test = read_csv(f"demo/sudden_trace_noise20_500_cb.csv")
+    cdesf = CDESF(
+        name="sudden_trace_noise20_500_cb",
+        time_horizon=259200,
+        lambda_=0.05,
+        beta=0.2,
+        epsilon=0.6,
+        mu=4,
+        stream_speed=100,
+        gen_metrics=True,
+        gen_plot=False,
+    )
+    cdesf.run(event_stream_test)
+
 
-    event_stream_test = read_csv(f'{path}/{filename}')
-    cdesf = CDESF(name='sudden_trace_noise20_500_cb',
-                  time_horizon=259200,
-                  lambda_=0.05,
-                  beta=0.2,
-                  epsilon=0.6,
-                  mu=4,
-                  stream_speed=100,
-                  n_features=2,
-                  gen_metrics=True,
-                  gen_plot=False)
+def test_attributed_pipeline():
+    event_stream_test = read_csv(f"demo/sudden_trace_noise20_500_cb_attributed.csv")
+    cdesf = CDESF(
+        name="sudden_trace_noise20_500_cb_attributed",
+        time_horizon=259200,
+        lambda_=0.05,
+        beta=0.2,
+        epsilon=0.6,
+        mu=4,
+        stream_speed=100,
+        gen_metrics=True,
+        gen_plot=False,
+        additional_attributes=["first", "second", "country"],
+    )
     cdesf.run(event_stream_test)
diff --git a/tests/test_reading.py b/tests/test_reading.py
index 764461c..63e320b 100644
--- a/tests/test_reading.py
+++ b/tests/test_reading.py
@@ -1,48 +1,76 @@
 import pandas as pd
-from cdesf2.utils import read_csv
 import numpy as np
-from datetime import datetime
+from datetime import datetime, timezone, timedelta
+from pandas._libs.tslibs import Timestamp
+from pm4py.objects.log import obj
 
+from cdesf2.utils import read_csv, read_xes
 
-def test_read_csv():
-    path = 'demo'
-    filename = 'Detail_Supplier_IW-Frozen.csv'
 
-    event_stream_test = read_csv(f'{path}/{filename}')
+def test_read_csv():
+    # TODO: Is there a reason to replace " " in the activity name with "_"?
+    event_stream_test = read_csv("demo/Detail_Supplier_IW-Frozen.csv")
 
-    assert isinstance(event_stream_test, np.ndarray)
+    assert isinstance(event_stream_test, obj.EventStream)
     assert len(event_stream_test) == 5000
 
     first_event = event_stream_test[0]
-    assert first_event[0] == 'Case 496'
-    assert first_event[1] == 'Process_Creation'
-    assert isinstance(first_event[2], datetime)
-    assert first_event[2] == datetime(2010, 9, 21, 9, 0, 13)
+    assert first_event["case:concept:name"] == "Case 496"
+    assert first_event["concept:name"] == "Process Creation"
+    assert isinstance(first_event["time:timestamp"], datetime)
+    assert first_event["time:timestamp"] == datetime(2010, 9, 21, 9, 0, 13)
 
     second_event = event_stream_test[1]
-    assert second_event[0] == 'Case 12186'
-    assert second_event[1] == 'Process_Creation'
-    assert isinstance(second_event[2], datetime)
-    assert second_event[2] == datetime(2010, 9, 21, 9, 0, 21)
-
-    second_to_last_event = event_stream_test[4998]
-    assert second_to_last_event[0] == 'Case 8848'
-    assert second_to_last_event[1] == 'ME_Fabrication_Checker'
-    assert isinstance(second_to_last_event[2], datetime)
-    assert second_to_last_event[2] == datetime(2011, 4, 27, 8, 0, 59)
-
-    last_event = event_stream_test[4999]
-    assert last_event[0] == 'Case 10634'
-    assert last_event[1] == 'ME_Fabrication_Checker'
-    assert isinstance(last_event[2], datetime)
-    assert last_event[2] == datetime(2011, 4, 27, 9, 0, 0)
-
-    event_stream = pd.read_csv(f'{path}/{filename}',
-                               usecols=['case', 'activity', 'timestamp'],
-                               parse_dates=['timestamp'],
-                               infer_datetime_format=True,
-                               memory_map=True)
-    event_stream['activity'].replace(' ', '_', regex=True, inplace=True)
-
-    assert np.all(event_stream.values == event_stream_test)
+    assert second_event["case:concept:name"] == "Case 12186"
+    assert second_event["concept:name"] == "Process Creation"
+    assert isinstance(second_event["time:timestamp"], datetime)
+    assert second_event["time:timestamp"] == datetime(2010, 9, 21, 9, 0, 21)
+
+    second_to_last_event = event_stream_test[-2]
+    assert second_to_last_event["case:concept:name"] == "Case 8848"
+    assert second_to_last_event["concept:name"] == "ME Fabrication Checker"
+    assert isinstance(second_to_last_event["time:timestamp"], datetime)
+    assert second_to_last_event["time:timestamp"] == datetime(2011, 4, 27, 8, 0, 59)
+
+    last_event = event_stream_test[-1]
+    assert last_event["case:concept:name"] == "Case 10634"
+    assert last_event["concept:name"] == "ME Fabrication Checker"
+    assert isinstance(last_event["time:timestamp"], datetime)
+    assert last_event["time:timestamp"] == datetime(2011, 4, 27, 9, 0, 0)
+
+
+def test_read_xes():
+    event_stream_test = read_xes("demo/running-example.xes")
+
+    assert isinstance(event_stream_test, obj.EventStream)
+    assert len(event_stream_test) == 42
+
+    tzinfo = timezone(timedelta(seconds=3600))
+
+    first_event = event_stream_test[0]
+    assert first_event["case:concept:name"] == "1"
+    assert first_event["concept:name"] == "register request"
+    assert isinstance(first_event["time:timestamp"], datetime)
+    assert first_event["time:timestamp"] == datetime(2010, 12, 30, 11, 2, tzinfo=tzinfo)
+
+    second_event = event_stream_test[1]
+    assert second_event["case:concept:name"] == "1"
+    assert second_event["concept:name"] == "examine thoroughly"
+    assert isinstance(second_event["time:timestamp"], datetime)
+    assert second_event["time:timestamp"] == datetime(
+        2010, 12, 31, 10, 6, tzinfo=tzinfo
+    )
+
+    second_to_last_event = event_stream_test[-2]
+    assert second_to_last_event["case:concept:name"] == "4"
+    assert second_to_last_event["concept:name"] == "decide"
+    assert isinstance(second_to_last_event["time:timestamp"], datetime)
+    assert second_to_last_event["time:timestamp"] == datetime(
+        2011, 1, 9, 12, 2, tzinfo=tzinfo
+    )
 
+    last_event = event_stream_test[-1]
+    assert last_event["case:concept:name"] == "4"
+    assert last_event["concept:name"] == "reject request"
+    assert isinstance(last_event["time:timestamp"], datetime)
+    assert last_event["time:timestamp"] == datetime(2011, 1, 12, 15, 44, tzinfo=tzinfo)
diff --git a/tests/test_time_difference.py b/tests/test_time_difference.py
deleted file mode 100644
index f485390..0000000
--- a/tests/test_time_difference.py
+++ /dev/null
@@ -1,51 +0,0 @@
-from datetime import datetime
-from cdesf2.utils import time_difference
-
-
-def test_time_difference():
-    timestamps_list = []
-    timestamps_list.append([datetime(2015, 5, 10, 8, 30, 30),
-                            datetime(2015, 5, 10, 8, 45, 30),
-                            datetime(2015, 5, 10, 8, 50, 30),
-                            datetime(2015, 5, 10, 8, 53, 30),
-                            datetime(2015, 5, 10, 8, 59, 30),
-                            datetime(2015, 5, 10, 9, 1, 30)])
-
-    timestamps_list.append([datetime(2015, 5, 10, 9, 5, 30),
-                            datetime(2015, 5, 10, 9, 55, 30),
-                            datetime(2015, 5, 10, 9, 57, 30),
-                            datetime(2015, 5, 10, 9, 59, 59)])
-
-    timestamps_list.append([datetime(2015, 5, 10, 10, 5, 30),
-                            datetime(2015, 5, 10, 11, 5, 30),
-                            datetime(2015, 5, 10, 12, 5, 30),
-                            datetime(2015, 5, 10, 14, 9, 59)])
-
-    timestamps_list.append([datetime(2015, 5, 10, 10, 5, 30, 552),
-                            datetime(2015, 6, 10, 11, 5, 30, 42),
-                            datetime(2015, 8, 10, 12, 5, 30, 154),
-                            datetime(2016, 5, 10, 14, 9, 59, 5)])
-
-    true_values = [[900, 300, 180, 360, 120],
-                   [3000, 120, 149],
-                   [3600, 3600, 7469],
-                   [2681999.99949, 5274000.000112, 23681068.999851]]
-
-    results = time_difference(timestamps_list)
-
-    assert len(results) == len(timestamps_list)
-    assert results == true_values
-
-
-def test_time_difference_2():
-    timestamps_list = []
-
-    results = time_difference(timestamps_list)
-    assert results[0][0] == 0
-
-    timestamps_list.append([datetime(2015, 5, 10, 8, 30, 30)])
-    timestamps_list.append([datetime(2015, 5, 10, 8, 40, 30)])
-    timestamps_list.append([datetime(2015, 5, 10, 8, 50, 30)])
-
-    results = time_difference(timestamps_list)
-    assert results == [[0], [0], [0]]
diff --git a/tests/test_visualization.py b/tests/test_visualization.py
index f560a8b..e905dc4 100644
--- a/tests/test_visualization.py
+++ b/tests/test_visualization.py
@@ -1,5 +1,12 @@
+from cdesf2.core.cdesf import CDESF
+from cdesf2.utils.reading import read_csv
+import shutil
+from os import path
+
 import networkx as nx
-from cdesf2.visualization import save_graph, save_graphviz, cumulative_stream_drifts
+import pytest
+from cdesf2.visualization import (cumulative_stream_drifts, save_graph,
+                                  save_graphviz)
 
 
 def test_save_graph():
@@ -12,7 +19,8 @@ def test_save_graph():
     graph.add_edge('c', 'f', weight=0.9)
     graph.add_edge('activity a', 'd', weight=0.3)
 
-    save_graph(graph, 'graph1')
+    save_graph(graph, 'output/graphs/graph.png')
+    assert path.isfile('output/graphs/graph.png')
 
 
 def test_save_graphviz():
@@ -25,11 +33,32 @@ def test_save_graphviz():
     graph.add_edge('c', 'f', weight=0.9)
     graph.add_edge('activity a', 'd', weight=0.3)
 
-    save_graphviz(graph, 'graph1')
+    save_graphviz(graph, 'output/graphs/graphviz.png')
+    assert path.isfile('output/graphs/graphviz.png')
 
 
 def test_cummulative_stream_drifts():
     stream_length = 5000
     drifts_index = [22, 26, 28, 149, 153, 161, 172, 187, 260, 1117, 1164, 1199,
                     1265, 1359, 1364, 1369, 1508, 1517, 1518, 1567, 1690, 1779, 2083]
-    cumulative_stream_drifts(stream_length, drifts_index, 'test_cumulative_stream_drifts.pdf')
+
+    cumulative_stream_drifts(stream_length, drifts_index,
+                             'output/test_cumulative_stream_drifts.pdf')
+    assert path.isfile('output/test_cumulative_stream_drifts.pdf')
+
+
+def test_gen_plotting():
+    stream = read_csv("demo/Detail_Supplier_IW-Frozen_small.csv")
+    process = CDESF(
+        name="test",
+        time_horizon=43200,
+        lambda_=0.15,
+        beta=0.3,
+        epsilon=0.1,
+        mu=4,
+        stream_speed=1000,
+        gen_plot=True,
+        gen_metrics=False,
+    )
+
+    process.run(stream)