From d7aa7516d65538c791203593081fa77d543bb7aa Mon Sep 17 00:00:00 2001 From: Luca Lombardo Date: Thu, 9 Feb 2023 00:50:03 +0100 Subject: [PATCH] almost done --- .gitignore | 2 + main.ipynb | 16175 +----------------------------------------------- testing.ipynb | 208 - 3 files changed, 241 insertions(+), 16144 deletions(-) delete mode 100644 testing.ipynb diff --git a/.gitignore b/.gitignore index 8c523ca..1b639ad 100644 --- a/.gitignore +++ b/.gitignore @@ -143,8 +143,10 @@ data/ *.toc *.txt +# Working directories, not to be committed .vscode/ backup/ sources/ extra/ html_graphs/ +tex/ diff --git a/main.ipynb b/main.ipynb index f067967..9f9d293 100644 --- a/main.ipynb +++ b/main.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -10,18 +10,18 @@ "%autoreload 2\n", "\n", "import os\n", + "import time\n", "import wget\n", "import zipfile\n", "import numpy as np\n", "import pandas as pd\n", "import networkx as nx\n", + "import multiprocessing\n", + "import geopandas as gpd\n", "import plotly.graph_objects as go\n", - "from utils import *\n", "from collections import Counter\n", + "from src.utils import *\n", "from tqdm import tqdm\n", - "import time\n", - "import geopandas as gpd\n", - "import multiprocessing\n", "\n", "# ignore warnings\n", "import warnings\n", @@ -33,23 +33,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Introduction\n", - "\n", - "## Graph Theory and notations\n", - "\n", - "SCRIVERE\n", - "\n", "## Aim of the project\n", "\n", - "SCRIVERE\n", - "\n", - "" + "The role played by shortest paths is justified by one of the most well-known features of complex networks, the so-called **small-world phenomenon**. A small-world network is a graph where the average distance between nodes is logarithmic in the size of the network, whereas the clustering coefficient is larger (that is, neighborhoods tend to be denser) than in a random Erdős-Rényi graph with the same size and average distance. The fact that social networks (whether electronically mediated or not) exhibit the small-world property is known at least since Milgram's famous experiment and is arguably the most popular of all features of complex networks. For instance, the average distance of the Facebook graph was recently established to be just $4.74$.\n", + "\n", + "---\n", + "\n", + "We aim to study the small-world phenomenon in the context of social networks, and to do so we will consider a large number of centrality measures. We will use 3 real-world datasets, trying to understand how the small-world phenomenon manifests itself in each of them. We will also try to understand how the small-world phenomenon is affected by the choice of centrality measure." ] }, { @@ -61,11 +57,11 @@ "\n", "\n", "\n", - "Prior to the 1960s, graph theory primarily focused on the characteristics of individual graphs. In the 1960s, Paul Erdős and Alfred Rényi introduced a systematic approach to studying random graphs, which involves analyzing a collection, or ensemble, of many different graphs. Each graph in the ensemble is assigned a probability, and a property is said to hold with probability $P$ if the total probability of the graphs in the ensemble possessing that property is $P$, or if the fraction of graphs in the ensemble with the property is $P$. This method allows for the application of probability theory in conjunction with discrete math to study ensembles of graphs. A property is considered to hold for a class of graphs if the fraction of graphs in the ensemble without the property has zero measure, which is typically referred to as being true for \"almost every\" graph in the ensemble. \n", + "Prior to the 1960s, graph theory primarily focused on the characteristics of individual graphs. In the 1960s, Paul Erdős and Alfred Rényi introduced a systematic approach to studying random graphs, which involves analyzing a collection, or ensemble, of many different graphs. Each graph in the ensemble is assigned a probability, and a property is said to hold with probability $P$ if the total probability of the graphs in the ensemble possessing that property is $P$, or if the fraction of graphs in the ensemble with the property is $P$. This method allows for the application of probability theory in conjunction with discrete math to study ensembles of graphs. A property is considered to hold for a class of graphs if the fraction of graphs in the ensemble without the property has zero measure, which is typically referred to as being true for \"almost every\" graph in the ensemble. `[2]`\n", "\n", "## Definition of a random graph\n", "\n", - "Let $E_{n,N}$ denote the set of alla graphs having $n$ given labelled vertices $V_1,V_2, \\dots, V_n$ and $N$ edges. The graphs considered are supposed to be not oriented, without parallel edges and without slings. Thus a graph belonging to $E_{n,N}$ is obtained by choosing $N$ out of the $\\binom{n}{2}$ possible edges between the points $V_1,V_2, \\dots, V_n$, and therefore the number of elements of $E_{n,N}$ is given by the binomial coefficient $\\binom{\\binom{n}{2}}{N}$. \n", + "Let $E_{n,N}$ denote the set of alla graphs having $n$ given labelled vertices $V_1,V_2, \\dots, V_n$ and $N$ edges [1]. The graphs considered are supposed to be not oriented, without parallel edges and without slings. Thus a graph belonging to $E_{n,N}$ is obtained by choosing $N$ out of the $\\binom{n}{2}$ possible edges between the points $V_1,V_2, \\dots, V_n$, and therefore the number of elements of $E_{n,N}$ is given by the binomial coefficient $\\binom{\\binom{n}{2}}{N}$. \n", "\n", "A random graph $\\Gamma_{n,N}$ can be defined as a element of $E_{n,N}$ chosen at random, so that each of the elements of $E_{n,N}$ has the same probability of being chosen, namely $\\frac{1}{\\binom{\\binom{n}{2}}{N}}$.\n", "\n", @@ -74,21 +70,9 @@ "> NOTE: the two definitions are equivalent, but the second one is more convenient for the study of the properties of random graphs. According to this interpretation we may study the evolution of random graphs, i.e. the step-by-step unraveling of the structure of the graph when $N$ increases. This will be an essential point in our study of the properties of small-worldness.\n", "\n", "\n", - "**SOURCES:** \n", - "\n", - "- `[1]` On the evolution of random graphs, P. Erdős, A. Rényi, _Publ. Math. Inst. Hungar. Acad. Sci._, 5, 17-61 (1960).\n", - "\n", "## Erdős-Rényi graphs\n", "\n", - "\n", - "\n", - "There are two well-known ensembles of graphs that have been extensively studied: the ensemble of all graphs with $N$ nodes and $M$ edges, denoted $G_{N,M}$, and the ensemble of all graphs with $N$ nodes and a probability $p$ of any two nodes being connected, denoted $G_{N,p}$. These ensembles, initially studied by Erdős and Rényi, are similar when $M = \\binom{N}{2} p$, and are therefore referred to as ER graphs when $p$ is not too close to 0 or 1.\n", + "There are two well-known ensembles of graphs that have been extensively studied: the ensemble of all graphs with $N$ nodes and $M$ edges, denoted $G_{N,M}$, and the ensemble of all graphs with $N$ nodes and a probability $p$ of any two nodes being connected, denoted $G_{N,p}$. These ensembles, initially studied by Erdős and Rényi, are similar when $M = \\binom{N}{2} p$, and are therefore referred to as ER graphs when $p$ is not too close to $0$ or $1$. `[2]`\n", "\n", "An important feature of a graph is its average degree, or the average number of edges connected to each node. We will denote the degree of the $i$-th node by $k_i$ and the average degree by $\\langle r \\rangle$. Graphs with $N$ nodes and $\\langle k \\rangle = O(N^0)$ are called sparse graphs.\n", "\n", @@ -96,47 +80,15 @@ "\n", "Another property of interest is the average path length between any two nodes, which is typically of order $\\ln N$ in almost every graph of the ensemble (with $\\langle k \\rangle > 1$ and finite). This small, logarithmic distance is the source of the \"small-world\" phenomena that are characteristic of networks.\n", "\n", - "**SOURCE:**\n", - "- `[i]` Complex Networks: Structure, Robustness, and Function, R. Cohen, S. Havlin, D. ben-Avraham, H. E. Stanley, _Cambridge University Press, 2009_.\n", - "\n", - "\n", "## Scale-free networks\n", "\n", - "\n", - "\n", - "The Erdős-Rényi model has long been the primary focus of research in the field of random graphs. However, recent studies of real-world networks have shown that the ER model does not accurately capture many of their observed properties. One such property that can be easily measured is the degree distribution, or the fraction $P(k)$ of nodes with $k$ connections (degree $k$). A well-known result for ER networks is that the degree distribution follows a Poisson distribution, given by\n", + "The Erdős-Rényi model `[4]` has long been the primary focus of research in the field of random graphs. However, recent studies of real-world networks have shown that the ER model does not accurately capture many of their observed properties. One such property that can be easily measured is the degree distribution, or the fraction $P(k)$ of nodes with $k$ connections (degree $k$). A well-known result for ER networks is that the degree distribution follows a Poisson distribution, given by `[2]`\n", "\n", "\\begin{equation}\n", "P(k) = \\frac{e^{z} z^k}{k!}\n", "\\end{equation}\n", "\n", - "where $z = \\langle k \\rangle$ is the average degree. However, measurements of the degree distribution for real networks often show that the Poisson law does not hold, instead exhibiting a scale-free degree distribution of the form\n", + "where $z = \\langle k \\rangle$ is the average degree `[13]`. However, measurements of the degree distribution for real networks often show that the Poisson law does not hold, instead exhibiting a scale-free degree distribution of the form\n", "\n", "\\begin{equation}\n", "P(k) = ck^{-\\gamma} \\quad \\text{for} \\quad k = m, ... , K\n", @@ -144,7 +96,7 @@ "\n", "where $c \\sim (\\gamma -1)m^{\\gamma - 1}$ is a normalization factor, and $m$ and $K$ are the lower and upper cutoffs for the degree of a node, respectively. The divergence of moments higher than $\\lceil \\gamma -1 \\rceil$ (as $K \\to \\infty$ when $N \\to \\infty$) is responsible for many of the unusual properties attributed to scale-free networks.\n", "\n", - "It is important to note that all real-world networks are finite, so all of their moments are finite as well. The actual value of the cutoff $K$ plays a significant role, and can be approximated by noting that the total probability of nodes with $k > K$ is approximately $1/N$, or\n", + "It is important to note that all real-world networks are finite, so all of their moments are finite as well. The actual value of the cutoff $K$ plays a significant role, and can be approximated by noting that the total probability of nodes with $k > K$ is approximately $1/N$ `[14]`, or\n", "\n", "\\begin{equation}\n", "\\int_K^\\infty P(k) dk \\sim \\frac{1}{N}\n", @@ -158,52 +110,30 @@ "\n", "The degree distribution is not the only characteristic that can be used to describe a network. Other quantities, such as the degree-degree correlation (between connected nodes), spatial correlations, clustering coefficient, betweenness or centrality distribution, and self-similarity exponents, can also provide insight into the network's structure and behavior.\n", "\n", - "- `[i]` Complex Networks: Structure, Robustness, and Function, R. Cohen, S. Havlin, D. ben-Avraham, H. E. Stanley, _Cambridge University Press, 2009_.\n", - "\n", "# Diameter and fractal dimension\n", "\n", - "\n", - "\n", - "Regular lattices can be viewed as networks embedded in Euclidean space of a defined dimension $d$, meaning that $n(r)$, the number of nodes within a distance $r$ from an origin, grows as $n(r) \\sim r^d$ for large $r$. For fractal objects, the dimension $d$ in this relation may be a non-integer and is replaced by the fractal dimension $d_f$.\n", + "Regular lattices can be viewed as networks embedded in Euclidean space of a defined dimension $d$, meaning that $n(r)$, the number of nodes within a distance $r$ from an origin, grows as $n(r) \\sim r^d$ for large $r$. For fractal objects, the dimension $d$ in this relation may be a non-integer and is replaced by the fractal dimension $d_f$. `[2]`\n", "\n", "One example of a network where these power laws do not hold is the Cayley tree, also known as the Bethe lattice, which is a regular graph of fixed degree $z$ with no loops. An infinite Cayley tree cannot be embedded in a Euclidean space of finite dimensionality. The number of nodes at level $l$ grows as $n(l) \\sim (z - 1)^l$, which is faster than any power law, making Cayley trees infinite-dimensional systems.\n", "\n", - "![](https://i.imgur.com/VLxR3AL.png)\n", + "![Photo from [2]](https://i.imgur.com/VLxR3AL.png)\n", + "_Taken from [2]_\n", "\n", - "Many random network models have locally tree-like structure (since most loops occur only when $n(l) \\sim N$), and since the number of nodes grows as $n(l) \\sim \\langle k - 1 \\rangle^l$, they are also infinite dimensional. As a result, the diameter of such graphs (i.e., the shortest path between the most distant nodes) scales as $D \\sim \\ln N$. Many properties of ER networks, including the logarithmic diameter, are also present in Cayley trees. This small diameter is in contrast to that of finite-dimensional lattices, where $D \\sim N^{1/d_l}$.\n", + "Many random network models have locally tree-like structure (since most loops occur only when $n(l) \\sim N$), and since the number of nodes grows as $n(l) \\sim \\langle k - 1 \\rangle^l$, they are also infinite dimensional. As a result, the diameter of such graphs (i.e., the shortest path between the most distant nodes) scales as $D \\sim \\ln N$ `[13]`. Many properties of ER networks, including the logarithmic diameter, are also present in Cayley trees. This small diameter is in contrast to that of finite-dimensional lattices, where $D \\sim N^{1/d_l}$.\n", "\n", - "Like ER networks, percolation on infinite-dimensional lattices and the Cayley tree exhibits a critical threshold $p_c = 1/(z - 1)$. For $p > p_c$, a \"giant cluster\" of size $N$ exists, while for $p < p_c$, only small clusters are present. At criticality ($p = p_c$) in infinite-dimensional lattices (similar to ER networks), the giant component is of size $N^{2/3}$. This result follows from the fact that percolation on lattices in dimension $d \\geq d_c = 6$ is in the same universality class as infinite-dimensional percolation, where the fractal dimension of the giant cluster is $d_f = 4$, resulting in a size of the giant cluster that scales as $N^{d_f/d_c} = N^{2/3}$. The dimension $d_c$ is known as the \"upper critical dimension,\" and this concept exists not only in percolation phenomena, but also in other physical models such as the self-avoiding walk model for polymers and the Ising model for magnetism, in both of which $d_c = 4$.\n", - "\n", - "- `[i]` Complex Networks: Structure, Robustness, and Function, R. Cohen, S. Havlin, D. ben-Avraham, H. E. Stanley, _Cambridge University Press, 2009_.\n", + "Like ER networks, percolation on infinite-dimensional lattices and the Cayley tree exhibits a critical threshold $p_c = 1/(z - 1)$. For $p > p_c$, a \"giant cluster\" of size $N$ exists, while for $p < p_c$, only small clusters are present. At criticality ($p = p_c$) in infinite-dimensional lattices (similar to ER networks), the giant component is of size $N^{2/3}$. This result follows from the fact that percolation on lattices in dimension $d \\geq d_c = 6$ is in the same universality class as infinite-dimensional percolation, where the fractal dimension of the giant cluster is $d_f = 4$, resulting in a size of the giant cluster that scales as $N^{d_f/d_c} = N^{2/3}$. The dimension $d_c$ is known as the \"upper critical dimension,\" and this concept exists not only in percolation phenomena, but also in other physical models such as the self-avoiding walk model for polymers and the Ising model for magnetism, in both of which $d_c = 4$. `[2]`\n", "\n", "### Watts-Strogatz model\n", "\n", - "In 1998 Watts and Strogatz proposed a model that retains the high local clustering of lattices (i.e., the neighbors of a node have a higher probability of being neighbors than in random graphs) while reducing the diameter to $D \\sim \\ln N$. This so-called \"small-world network\" is achieved by replacing a fraction $\\varphi$ of the links in a regular lattice with random links to random, distant neighbors. The model then proceeds as follows: for each edge, the probability $p$ of rewiring it is considered. If the edge is rewired, it is replaced by a random edge with uniform probability. The resulting network is a small-world network with $N$ nodes, $k$ nearest neighbors, and average distance $\\log(N)/\\log(k)$. \n", - "\n", - "More details et al. can be found in the following paper:\n", - "\n", - "- `[i]` Collective dynamics of 'small-world' networks, D. J. Watts and S. H. Strogatz, _Nature_, 393, 440-442, 1998.\n", - "\n", + "In the year 1998, Watts and Strogatz presented a novel model for small-world networks in their seminal work `[3]`. This model preserves the high degree of local clustering, which is a characteristic of lattice structures where the neighbors of a node are more likely to be neighbors with each other than in random graphs. The model achieves a reduction in the diameter of the network to $D \\sim \\ln N$ by randomly rewiring a fraction $\\varphi$ of the links in a regular lattice to connect to distant nodes. The rewiring procedure is based on a probability $p$ assigned to each edge. If an edge is selected for rewiring, it is substituted with a new edge chosen at random with uniform probability. The resulting network is characterized by $N$ nodes, $k$ nearest neighbors, and an average distance of $\\log(N)/\\log(k)$.\n", "\n", + "More details on the Watts-Strogatz model can be found in `[3]`.\n", "\n", "## Random graphs as a model of real networks\n", "\n", - "\n", + "Many physical and man-made systems can be represented as networks, which consist of objects and the interactions between them. Some examples include computer networks, such as the Internet, and logical networks, including the links between web pages and email networks, where the presence of an individual's address in another person's address book is represented by a link. Additionally, social interactions in populations or work relationships and movements of a system in a configuration space can also be described using a network. These examples, along with many others, possess a graph structure that can be studied. Although many of these networks exhibit some ordered structure, such as cluster and group formation, geographical or geometrical considerations, or specific properties, most of them possess complex and random structures that deviate from regular lattices. As a result, it is often assumed, with caution, that they share properties with random graph models.\n", "\n", - "Many natural and man-made systems can be represented as networks, consisting of objects and interactions between them. Examples include computer networks, particularly the Internet, logical networks such as links between web pages and email networks, where a link represents the presence of an individual's address in another person's address book, and social interactions in populations or work relations. Networks can also describe possible actions or movements of a system in a configuration space (a phase space), with nearest configurations connected by a link. All of these examples and many others have a graph structure that can be studied. Many of these networks have some ordered structure, derived from geographical or geometrical considerations, cluster and group formation, or other specific properties, but most of them are far from regular lattices and are much more complex and random in structure. Therefore, it is often assumed (with caution) that they share many properties with the appropriate random graph model.\n", - "\n", - "In many ways, scale-free networks can be considered a generalization of ER networks. For large $\\gamma$ (typically $\\gamma > 4$), the properties of scale-free networks such as distances, optimal paths, and percolation are the same as in ER networks. In contrast, for $\\gamma < 4$, these properties are very different and can be considered anomalous. The anomalous behavior of scale-free networks is due to the strong heterogeneity in the degrees of the nodes, which breaks the node-to-node translational homogeneity (symmetry) present in\n", + "Scale-free networks can be considered as a generalization of Erdős-Rényi (ER) networks. When $\\gamma > 4$ for large $\\gamma$, the properties of scale-free networks, such as distances, optimal paths, and percolation, are similar to those in ER networks. Conversely, when $\\gamma < 4$, these properties exhibit anomalous behavior due to the strong heterogeneity in the degrees of nodes, which disrupts the node-to-node translational homogeneity (symmetry) present in classical homogeneous networks such as lattices, Cayley trees, and ER graphs. `[2]`\n", "\n", "---" ] @@ -213,17 +143,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now let's move to a more technical part of the notebook, where we will try to analyze those properties of the networks that we have just discussed on real-world networks. We will try to use as much as possible the `networkx` library, which is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks. However, there were some scenarios were it was necessary to manually implement some of the algorithms, so please refer to the `utils.py` file for more details.\n", + "In this section of the notebook, I will delve into the technical aspect of analyzing the properties of real-world networks that were discussed previously. I will make use of the networkx library, a Python-based tool for constructing, manipulating, and studying the structure, dynamics, and functions of complex networks. However, some algorithms required manual implementation and can be found in the utils.py file for further information.\n", "\n", - "All the computations have been run and tested on a Arch Linux machine with an AMD Ryzen 5 2600 (6 cores, 12 threads) and 16 GB of RAM. The code has been written in Python 3.10.9; to install the required packages, please run the following command:\n", + "The computations were executed on an Arch Linux machine with a AMD Ryzen 5 2600 processor (6 cores and 12 threads) and 16 GB of RAM. The code was written in Python 3.10.9, and the required packages can be installed by executing the following command in the terminal:\n", "\n", "```bash\n", "pip3 install -r requirements.txt\n", "```\n", "\n", - "I tried to make the code as wide-compatible as possible, but I have no way to test it on a Windows machine. So if you encounter any problems, please, install Linux _(joking, joking)_.\n", - "\n", - "# Discovering the datasets" + "I have made efforts to ensure that the code is widely compatible, but I was unable to test it on a Windows machine. In the event that any issues are encountered, please ~~install Linux~~ inform me so I can work towards resolving them." ] }, { @@ -231,6 +159,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "# Discovering the datasets\n", + "\n", "To perform our analysis, we will use the following datasets:\n", "\n", "- **Brightkite**\n", @@ -265,62 +195,13 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Created data folder\n", - "Created brightkite folder\n", - "Created gowalla folder\n", - "Created foursquare folder\n", - "Downloading https://snap.stanford.edu/data/loc-brightkite_edges.txt.gz...\n", - "Downloading https://snap.stanford.edu/data/loc-brightkite_totalCheckins.txt.gz...\n", - "Downloading https://snap.stanford.edu/data/loc-gowalla_edges.txt.gz...\n", - "Downloading https://snap.stanford.edu/data/loc-gowalla_totalCheckins.txt.gz...\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Downloading...\n", - "From: https://drive.google.com/uc?id=1PNk3zY8NjLcDiAbzjABzY5FiPAFHq6T8\n", - "To: /home/luke/github/small-worlds/data/foursquare/foursquare_full.zip\n", - "100%|██████████| 2.68G/2.68G [02:04<00:00, 21.5MB/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unzipping loc-brightkite_edges.txt.gz...\n", - "Unzipping loc-brightkite_totalCheckins.txt.gz...\n", - "Unzipping loc-gowalla_edges.txt.gz...\n", - "Unzipping loc-gowalla_totalCheckins.txt.gz...\n", - "Unzipping foursquare_full.zip...\n", - "Archive: data/foursquare/foursquare_full.zip\n", - " creating: data/foursquare/dataset_WWW2019/\n", - " inflating: data/foursquare/dataset_WWW2019/raw_Checkins_anonymized.txt \n", - " inflating: data/foursquare/dataset_WWW2019/.DS_Store \n", - " creating: data/foursquare/__MACOSX/\n", - " creating: data/foursquare/__MACOSX/dataset_WWW2019/\n", - " inflating: data/foursquare/__MACOSX/dataset_WWW2019/._.DS_Store \n", - " inflating: data/foursquare/dataset_WWW2019/raw_POIs.txt \n", - " inflating: data/foursquare/dataset_WWW2019/dataset_WWW_friendship_old.txt \n", - " inflating: data/foursquare/dataset_WWW2019/dataset_WWW_readme.txt \n", - " inflating: data/foursquare/__MACOSX/dataset_WWW2019/._dataset_WWW_readme.txt \n", - " inflating: data/foursquare/dataset_WWW2019/dataset_WWW_Checkins_anonymized.txt \n", - " inflating: data/foursquare/dataset_WWW2019/dataset_WWW_friendship_new.txt \n" - ] - } - ], + "outputs": [], "source": [ "# this is a long and boring function to automatically download, extract, rename and save the datasets in a clean way. If you want to have a deeper look at the code, you can find it in utils.py\n", "\n", - "download_datasets() # it takes about 3 minutes to download and extract the datasets with a fiber connection" + "download_datasets() # it takes about 3-4 minutes to download and extract the datasets with a fiber connection" ] }, { @@ -345,37 +226,9 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Number of unique users: 35538\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeoAAAGdCAYAAADdSjBDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABGt0lEQVR4nO3df3AUZZ4/8M8kJAOJJM4QNpPRZMLVreftxoWVRE2u1og/QEpwPbcMJFV3ULV6F9aIaKw7cD1B9iJxFbw9cTN1u5S4nvzwTvHuSncP3EU9DtSA8N2ge6WskKAQWSFmIEASk+f7R+8z093p7ume6Zl+uuf9quqaZKZn5ume7v7089vHGGMEAAAAQspzOgEAAACgD4EaAABAYAjUAAAAAkOgBgAAEBgCNQAAgMAQqAEAAASGQA0AACAwBGoAAACBTXI6AdkwPj5OJ06coKlTp5LP53M6OQAAAMQYo7Nnz1I4HKa8PP18c04E6hMnTlBlZaXTyQAAAJjg+PHjdPnll+u+nhOBeurUqUQk7YySkhKHUwMAAEAUi8WosrIyHqP05ESg5sXdJSUlCNQAACCUZFWyaEwGAAAgMARqAAAAgSFQAwAACAyBGgAAQGAI1AAAAAJDoAYAABAYAjUAAIDAEKgBAAAEhkANAAAgMARqAAAAgSFQAwAACCyjgfrtt9+mhQsXUjgcJp/PR6+++qri9aVLl5LP51Ms1113nWKd4eFhuu+++6isrIyKi4vp9ttvp08//TSTyQYAABBGRgP10NAQzZw5kzZu3Ki7zq233konT56ML6+//rri9RUrVtCOHTto27ZttGfPHjp37hwtWLCAxsbGMpl0ACHk5xP5fNIjAOSmjM6eNX/+fJo/f77hOn6/n0KhkOZrg4ODtGnTJnrhhRfo5ptvJiKif/3Xf6XKykp64403aN68ebanGUAk4+PKRwDIPY7XUb/55pv0ta99ja644gq655576NSpU/HXDhw4QKOjozR37tz4c+FwmGpqamjv3r26nzk8PEyxWEyxAAAAuJGjgXr+/Pn04osv0m9+8xtav349dXd304033kjDw8NERNTf30+FhYUUCAQU7ysvL6f+/n7dz123bh2VlpbGl8rKyoxuB0CmFBUpHwEg92S06DuZRYsWxf+uqamh2tpaikQi9Nprr9Gdd96p+z7GmOFE26tWraIHH3ww/n8sFkOwBlcaGnI6BQDgNMeLvuUqKiooEonQxx9/TEREoVCIRkZGaGBgQLHeqVOnqLy8XPdz/H4/lZSUKBYAAAA3EipQnz59mo4fP04VFRVERDR79mwqKCigXbt2xdc5efIkHT58mBoaGpxKJgAAQNZktOj73LlzdOTIkfj/R48epUOHDlEwGKRgMEhr1qyh733ve1RRUUHHjh2jhx9+mMrKyugv//IviYiotLSUvv/971N7eztNmzaNgsEgPfTQQ3TVVVfFW4EDAAB4WUYD9f79+2nOnDnx/3m98ZIlS6irq4t6enroF7/4BX355ZdUUVFBc+bMoe3bt9PUqVPj73n66adp0qRJ1NTURBcuXKCbbrqJNm/eTPnoWAoAADnAxxhjTici02KxGJWWltLg4CDqqwEAQAhmY5NQddQAAACghEANAAAgMARqAAAAgSFQAwAACAyBGgAAQGAI1AAAAAJDoAYAABAYAjUAAIDAEKgBAAAEhkANAAAgMARqAAAAgSFQAwAACAyBGgAAQGAI1AAAAAJDoAYAABAYAjUAAIDAEKgBAAAEhkANAAAgMARqAAAAgSFQAwAACAyBGgAAQGAI1AAAAAJDoAYAABAYAjUAAIDAEKgBAAAEhkANAAAgMARqAAAAgSFQAwAACAyBGgAAQGAI1AAAAAJDoAYAABAYAjUAAIDAEKgBAAAEhkANAAAgMARqAAAAgSFQAwAACAyBGgAAQGAI1AAAAAJDoAYAABAYAjUAAIDAEKgBAAAEhkANAAAgsIwG6rfffpsWLlxI4XCYfD4fvfrqq4rXGWO0Zs0aCofDNGXKFLrhhhvogw8+UKwzPDxM9913H5WVlVFxcTHdfvvt9Omnn2Yy2QAAAMLIaKAeGhqimTNn0saNGzVf//GPf0wbNmygjRs3Und3N4VCIbrlllvo7Nmz8XVWrFhBO3bsoG3bttGePXvo3LlztGDBAhobG8tk0gEAAITgY4yxrHyRz0c7duygO+64g4ik3HQ4HKYVK1bQ3//93xORlHsuLy+nJ554gv72b/+WBgcHafr06fTCCy/QokWLiIjoxIkTVFlZSa+//jrNmzfP1HfHYjEqLS2lwcFBKikpycj2AQAAWGE2NjlWR3306FHq7++nuXPnxp/z+/3U2NhIe/fuJSKiAwcO0OjoqGKdcDhMNTU18XW0DA8PUywWUywAAABu5Fig7u/vJyKi8vJyxfPl5eXx1/r7+6mwsJACgYDuOlrWrVtHpaWl8aWystLm1AMAAGSH462+fT6f4n/G2ITn1JKts2rVKhocHIwvx48ftyWtAAAA2eZYoA6FQkREE3LGp06diueyQ6EQjYyM0MDAgO46Wvx+P5WUlCgWAAAAN3IsUM+YMYNCoRDt2rUr/tzIyAi99dZb1NDQQEREs2fPpoKCAsU6J0+epMOHD8fXAQAA8LJJmfzwc+fO0ZEjR+L/Hz16lA4dOkTBYJCqqqpoxYoV9Pjjj9PXv/51+vrXv06PP/44FRUVUUtLCxERlZaW0ve//31qb2+nadOmUTAYpIceeoiuuuoquvnmmzOZdAAAACFkNFDv37+f5syZE///wQcfJCKiJUuW0ObNm+nv/u7v6MKFC/SDH/yABgYG6Nprr6WdO3fS1KlT4+95+umnadKkSdTU1EQXLlygm266iTZv3kz5+fmZTDoAAIAQstaP2knoRw0AAKIRvh81AAAAJIdADQAAIDAEagAAAIEhUAMAAJjU0kI0aZL0mC0I1AAAACa99BLR2Jj0mC0I1AAAACY1NRHl50uP2YLuWQAAAA5A9ywAAAAPQKAGAAAQGAI1AACAwBCoAQAABIZADQAAIDAEagAAAIEhUAMAWODEyFSQ2xCoAcC0aJSoulp6zFVOjEwFuQ2BGgBM6+wk6u2VHlNVWEjk80mPbuTEyFSQ2xCoAcC0lSuJIhHpMVWjo8pHt9myheirr6RHgGzAEKIAkFWFhVKQLiggGhlxOjUAzjEbmyZlMU0AAAjOABah6BsAAEBgCNQAAAACQ6AGAAAQGAI1gACCQanLUjDodEoAQDQI1ALy+RIL5IaBAeUjSCIR5fkQiWDAFVDKhUF4EKhdSH7xQg7MGwIB5WMuiUaJ8vKUAZkvfX3Kdfv6pAFXli0jmjbN2xdnMMeOQXhEh0DtQvKLF3Jg3nDmDBFj0qPXqXPJy5ZJ227VmTPSezHudm6zYxAe0SFQC4ixxKKlqirxdyCQG0U/4G7y4KzOJacL427nttZWomPHpEevwoAnLtTbq/y/ujpR9OPlgxXcy+7gLIdxt8HrkKP2gFwo+gFz1BNe8Jxsfn6iMZabdXUpS5wYc+e42ygFAysQqD2gtZWooYGorQ11dblOPuFFNJrIyY6PS499fdmfT9nO3gvLlkmfl+fyK1cuNIAC+7j8cHcfO+6kW1omto7FHLmgtmyZ9vPZOlai0cx1MTTb+Ex9vtXVSWkqLpYe6+oyk75kUAoGVmD2rCzj9cmRiNQAgki6iHR2SietvI5ZfpFjTFpv+XLz0wN6/5cFtWSBsaiI6LvflYJ0U1NmioyjUaJ7703k4jPFzPGtPt+09g/OE3CK2diEHHWWad1JaxWDaeW4OzvFncMXdW7uMDSUufmU5d2tMh2k+fcloz7famulx6Ii5f8AIkOOWgBaOWqeE+AYk4rp9u83/7nZ/GW1Sgog+7SCl89nLXCqS3LM4HNMZ1u6xzg/p2pribq77UmT6PLypP1m9bgA+yFHLTieA62rkxqBNTQoi715ToC3ciUyF6TlrWLl38NzupkaUxp1bmJQt4hmzL6LsV6piVNB2g78nNq/X9quTJYMZbsRnx5+bRAhi4aSOHOQo3aIOsecny8VR+ox2yhH/Wsa1dGJ/Mu7JZ1epLfv9UpNnByT3q4cNVGi61qmSoYmTZIa8SU71+2i9zuKlKPO9ZI45KgFx3OgtbXpDdjA69qIpNy03vekk9PlLWSLi1P/jHSIkAvJJeqR8fg43PyCqj6WCgqyn0ZOq184b9ltpkV3d7d03vDtymTJUFOTGIOzjI/bW9KSDpTEmYMctUvo5Vqs/Hpaddxm3u9E7la9vdnKhYB04dQbSUzv9xcpVy1PCw+MqTack39WUZHUGE+PXu8Np6BUSnzIUXsMY0TNzdKFp7nZeCxwPVp13GZGquK5dnnuPdP49vFtdjoXkkuMhvsUYerVSCQx3n0gIBWftrQk6jrlLbnN9BdX1x3r1SWfPy896k1D6+QgJlp1vcnmDAAXYTlgcHCQEREbHBx0OimOqq3VamrEWEEBY/n5jDU3W/u8ri7GIhHp0YyCgsT3gbi0m6QlllTfZ2YpKkq+jvx4i0Sk5/Ly9NdvbpYWn0/6fPXxqt62/Hzpb/4oX9Tfw8+p2lrpO1I5j/RYOb/4fohE7PluyA6zsQmBOsf4fMYXwdpa7ffJL0jqi2kwKF1MgsHE31rMXOzBWYGAuYBqJJ1ArfcZ8uOKpzEQSAQzowDPmDLAqoOZel2tgGsm7Tyw2xUsefDlNxtGrN40gxjMxibUUecooyJM3rjj7belYsOSEmvzXhcVEU2fLl1i+voSfVR5N56CAqKRkfS3AexltZuV3pUj1eJxeR2w2c+QN0TSGzK1uZlo2zYpvT6fMt21tYkqIa3jUm8kM95auaAgcUyPjkrVNBs32lNHHY0mtgltNLzJdGzKym2DgdWrVzMiUizl5eXx18fHx9nq1atZRUUFmzx5MmtsbGSHDx+29B3IUU+klyvgxdORiHbRn1aO2mxOSaS7fpHSIoJUc8BGRc5WF17a4/NJOUi99XiOmq8fDCpzn3o5Xa3jWb1UVenvF/nxoj5+7D6e+OfV1moXp3vt+PXa9pjlmqLv1atXs29+85vs5MmT8eXUqVPx1zs7O9nUqVPZyy+/zHp6etiiRYtYRUUFi8Vipr8DgdqYvKhPfsLw5+XF5bW10mvJitCNFhHq0eys07O7btIJdgVbuxajGwCOH6t66+blSa83NyeOafU6PBBqfb56v2ST/MajqEj/davHr9ljNduBM1fr2F0VqGfOnKn52vj4OAuFQqyzszP+3MWLF1lpaSmLRqOmvwOBOj3qC1wwmN5FmF8kqqq0czGppM/qRcXOC5E8x+ZWTgdm9aJucChvI5Es7Xl5ieCt/hy9wM/Xz8szt48yTX3O6eWom5uTtw2RM7OdjGU/cCJH7YJAXVRUxCoqKlh1dTVbtGgR+/3vf88YY+z3v/89IyL2/vvvK95z++23s7/+6782/R0I1OZpnTDZuDDLv8/qSev03Thy1PYvweDENPLjQh0w9XozaAVVreJv+WcbHXPZDNSMKauY9G4C5fsj2fEvLwnTyqWr183FwJltrgnUr7/+Ovv3f/939tvf/pbt2rWLNTY2svLycvbFF1+w//3f/2VExD777DPFe+655x42d+5c3c+8ePEiGxwcjC/Hjx9HoDbJqK7PqcXnM66n06rPDASc2Hvu5fRvrLdUVSVuhHj7Cb0gq1Udo85R889KJehmO1Azlvwm0ExvC46f2/n5CMCicE2gVjt37hwrLy9n69evjwfqEydOKNa5++672bx583Q/Q6uBGgK1OVq5FpEWxiY+lyy9RjldKxc6OXmxvbxxk1cugE7/znYu2bhpy3QQTzeHm+pxngny7nW5zrWBmjHGbr75Ztba2ppy0Tdy1Omz+2LJ6xa1GvSks/ABLMwEeC1aQb652bhO1Oz+cTOng6vVJVmLbqf2l13Srd5Rv19eCuXz2ZNGs7xyjtjBbKAWbgjR4eFh+t3vfkcVFRU0Y8YMCoVCtGvXrvjrIyMj9NZbb1FDQ4PuZ/j9fiopKVEs4KzubmlSD72+rqk6f37iZ5rpg8uHiZTPYMZt3aqc/pAPFymflIQPYVlVJQ1jafZ73YIxp1NgzcaNyqFD5bI59G2mpDt5hfr98mFVs/1b8/PES+dLxmXpxkFXe3s7e/PNN9knn3zC3nnnHbZgwQI2depUduzYMcaY1D2rtLSUvfLKK6ynp4c1Nzeje1aWOJ1LEn1Jts/cjhfvu2Hh9bhG3Qa1Skcy0RDQiWNAr2jcTONQkXLUXjp/zHBN0TfvF11QUMDC4TC788472QcffBB/nQ94EgqFmN/vZ9dffz3r6emx9B0I1Klz+gIs8pJLnN7XmfrNvNC1jjH9onGt5zN5DJupS9frlqn+rdzci8IsDCEqgyFEU4fiKX3eP3OURDoW+L4vLk7MamWGeqrKlhapGDidqTBFoDfFptbzmZz+kg+tGokQHTtm7b3Jji8vnm+Y5hLSJtKFWRTye36vkU/fqLWI6MIFa+ufPy8F92nTpCC2ZYs0hrabgzSRFISPHZs4xrjW85k8hrXq0rWm4FTLMxGJ1NOO5hLkqEGXqBfnbMjLIxofl/7mk4p4nZt+b37VammRGv/Jn5fnsoNBoo4O7UaMqeT6QEl9zGhFEzO5bDPHnhcnJkGOGiBFjBGNjSVyHbkQpN1Gnsvnv1MgkHiuoEB6PHOGaN067Zbf06dLLf/TzanV1UnfW1dnLe1uujFKR7IW60Y5bbmmJvvS5DbIUYMuq/V/XuH9M0KbHYGDMTEDkFa68vOlGzL+KF/XiLqO10ydrzrnb/a7nKaXbiLtfZrK9vAct5auLnumDBUVctSQNnmjG/A2EYOr3dRBpKlJCtLp5tR4/23+KM8xFxdLj3rBTnTbtum/xo+Z2lopx9zVldp36OW0GfN2kLYCgRpynrpjiFtYLXLNFj4AjBwfICZbCgoSxd/8UV7EzYNnXh7Rf/93et/V3a1fRaJVIlVb6/yxZqaBF5G5NB48OLHBmpnPb2mRfge7B0HyIgRqyGluCsxq8tHTzFx0M43vyzNnJr7W15eZ7wwGtUsDZs4k+ud/lnJ6//zP0nPbt0uPeXmJtI6OJtIbDJo7Hrq6Et8ZDJpLZ1GRWG0eOjul4ubOzomvJatDV9f380aX0WjifcuWSZ+/fLn2Z0Qi7i1lcAICNRhKtTjLDdwcpIkSRa2FhfoX3WySX+Ct7FvGzHXP0XLmjPZ37d8/sWsSDyjj44lgU1CQ+O6BAXM3O52die8cGFC+Fo1KQYiXIPDcs2jVSOkMSaouJeD7Quv4Gx1N/C0/PjJ14+ZVCNRgCHVE4uJFrj/5SXrjQBNZv2kJBOy50eGfUVmZ/mdZceGC9N0jI0TPPpvIZS9bJgUSo4C9cmUit6ku5uc5VZ9Pusn9wx+cL+nQotfvWi0SMf+ZesdfJGK9DQSvrgAJWn2DKV5sbOT9I98aoxa+cvL9VleXKIJXr6M+ZtQ57UAgUezMR9DSa/2birw8ZWvu/PxErpqnkZs2TVlkn2ofa74dJ04oc5O8X758m52SrNW6ld4e/AZRa9SzdOTKuYlW32CrbDcGguxLNjoXL8aV47l6xhLFyUVF2hdseZAkUgYsnsNL1sjKSqM/9ffJg7ZaR4fyfzOlE1oNpvh2yIO0PC0DA9INQ7ak0mf74kX919T73UyuHNKHQA2m2JnTcZrZC73ZlrFuYGY4UKOBP8w0ghoa0q6PZYyouVkaXKS52dz+Z2xi+wiruSx1vbdRw6/WVmUrcTPBR94gi0+byvehUdHt+LiUaxXxuKquJrr8cuN19G6W7BriM1dy01ag6BsscXsRuJWjPZOTF2RbsoEp9Iqw9da38n2MSUGMDy5i9zCQWsekVnrl66kn55Dj9dU+38RcuZx8wou2tkSOvbmZaO/exM1tVZV24ymensWLMzfWuHybkw2FazTwiB559QL/ja3q6lJ20XL7uWYFir4hI9zY35jInWnOJqMgnQr1cWLX4CLpTBbCG34FAkTr1+uXlvA0Jzte5A2y5Nv10kuJVtVdXfrBj+8f3m0sE+TbsH+/8X5LpTHi+Hjis/hv3Nxs/B7eVoEvKDpPDoHaIeqiMjdyS701ArTzg7qIMEsV78p15ox+P+JUi6O3bJEClM9H5PdLz/X2JlqRG+FF4VZYuVHh3fj0PoMzCphmvkf+G+t162xu1i6lcGsGIFsQqB3y0ktSMdFLLzmdktT19iZOrmT9rd14Anrl4qG+qMsHpkjWFSkSEX/7U2mcxXOPvCsV3zfywG2laxKRFKCqqqQW0+obgGSfdf585m7aeYO/ZDldIuUxL6/jt9pdSivod3W5fzpRpyBQO8SuokBRtLbqBzbGxGw4k4u0hmxU/89vvMz0zc52yZDW8aWuF9WaKUtNL/e4cqXU6CwYTK0oWG8gkZUrk9/0yW/aMzEn+JYtyW8Y+NjkeXlS/3JuZER6VJei5edr36RrHQ8o4k4DywGDg4OMiNjg4KDTSfG8ri7GIhF1QevEpaAg+TryhZM/19ys/G6j781lVvazep8mk58vvS8/PzNpV1P/pl1dyue6ulL7LDuPkaoq6fOqqqT/a2ul/2trtb9Xa98bHcc+n/S3z2c9bVrnp5yZYyQQSDxqyctL/7jKFWZjU05cwhCos4dfBPjFRL1oXUjNBGhOfRGUU1+05UthIWPBoLULuVcY7Rd+05TqvmluloJ0ti7E6mPDKOik+rnpHiPq9Mj/50HbKAiq32P0eani6SgoUG5vUdHE79S7ATba7lRvgozOby9CoJZBoM6erq5ELkuda25uNp/jTvVClInP9JpgMLEvgkHn0sFzXnl55t9j5bflx5o8EMnX5TcYzc3JA6LZ40brxjRZcNYK1vL/ec6Z3xSpnzeTFnUu2CgQa5VSWEm/+r1W5Np5ikAtg0CdXeoLDZF0p651QbQ7qJr5jqKi3MxZMyZtNy/tyMtzdj+ke1GWv1/rhoPfkMhf0zoe5MEv3WNR/Z5IRHpeLwfLyQOp3nerS6mKiqylRf5Z6vSo08xz1kVF1m6s0z1/kaPWhkCdJbl0p6h3Z23lBE/1RDX7+VZycV7R1aXMxTp9s5JKjlrOrkCtzqnqLWaK+dXHGN/HWsFbj16O2moglK+XrF7ZaLu1isPtDM65zGxsQqtvQdjVslMEWv2rrbb4tHMaPD5spTxdRiNOeVE0SnTvvYntvvRS51vhjo1Jv0sqo1nx6SSbm6VH9VjdRNJzfNhQ3uuAsYnr8f6/8nCjxpi5LpXyzxgb097H8i5hdXUTX+f9vflidKwaDXEr/4wzZ6SBXgYGpBbd6vfwrlha042eP++eMRM8K0s3Do5yQ47ai3em6m2xcldutP3ynI3Z71Dn6KuqlPXpXi9qk9dL+3zO56bTxYtj9XKnyUpTUsnJp9Nwzig98lbhRkW/eu/n9fDBoLTwHLA692zmHNOrT+f7Weu1bDYm9BoUfcuIEKiT8WJRktY22BGok62v1WBN/j+v27OrxbAbyLvMdHVpN7QSgdl0JVvPzvOJN4osKLD+3mTp0auTVi/qhpmMKfeBmZbZet+Vl5e8wZtegzyvnzeZhkAt4/ZA7aWTwWyQ1rtLN6rr5tR1arzxmHpd+cUpP1+8oGUn9bYny5E6xa502Xku2XEe6nVXlC/yHLXWYpRrleeo1UHdzHerl6oq/RshL16XnII6apeRH/4g1e9t3UpUWCjVpxUXS6Mgtbcnf6960vvz55Wjb/H6NvlEFGNjiXGZ7R4RSgR8vGf+qDeCltPsShdjUv01nyQinfNLPv1lOulJ5tSpxLC8WuNz69WN81m8OjqITp8mmjrV2nfn5SmPD8akdOjNNY1rlQOydOPgKDfkqNW8mqOW1wunsvh8E4v51DmNZK1U+fqpfL+bZXtwEtE0Nydyl9neB+kcX8l+N3UphPr4V+eotUY2s1IVImq1iRuZjU2Yj1pQhYVEo6PSXTwfZ9creA6goUHKNVtRVCTtl9HRxHPJjmB1jpjPiZzq/LkinzHyOZLVuaH8fKkFsXwOYTMiEakVflWV9fmKRSL/vTMxL7aRVEplzB5n8vNp716iP/xhYqmSXFGR9DqfbrKqSvq7t1f6rY8dM/4+9bZ0dTnfg8CtMB+1y42MSCeR14I0UWIe3y1btLuDGPH7lUGayHrxNJ8IZePGxJzBVorzUpmtKRtaWqTie63pG4kS3Xysdk3jXeXs7DJnh2jUuHuSWlOTcu7kbGLM+rFuFj+f9u6VfvvJk40n3/jud5WzovX1JYJ0KlUOWsca2AuBGhzF+9KaNTBg/TvUBYx8qj1+gVPnBtTrq4naB1teh6m+4KZTz87r9DPVl7auTr9PsVokIq0biejPKU2kHcS3bCFavDhxo+XEzF+pvGYWr9/v6DDOFW/dKuW+1Xp7U8sZZ7Kdg5faiaQlKwXxDnNjHXUuk4dJrf7STtUfi15XbVSXace+ylTdpJV0ydc1So9e63Gt9hFOzPyltfDZtbLxffn52q3BU/ncTNb7i37OpQutvsG15KfnV19JOSGtVrBqfB7dbOSURLzL5yNs8RIDI2Zyr3LRKFFbm34ONp19rm6RbvR58ty9XokIkX7rcT4PvPq5bAgEjF/fvz97x9TYmDQ6nR3VOLw0YNu29D9LTrTzy0loTAauYfbEzc+XLkRWGgypP1t9VgSD2sXubjp7km2jkerqREMydaOyaDTR/U2+z40atnF6Ddx4wy+7Gn2p0yLfF9n8Dc0cw3alx8x38YZlfH2z1Tpan11URDQ0ZD59Vr7DTeeZFWhMBp7Dc9ldXYlGYGo+XyLXpJdTUufWiov1vzMYlD4zlbpxNykslLazsFD7dXnOtK8vUffLG7Bx3/52om7YqA6Z02vgluw3VEvWsGz5cikty5dL//Njqbk5u/XUouUS5a3DrQRDrXOPtyS3WloDJmSlIN5hqKP2Lqv11epRm1JdslWvaSejfsRm9p18CEpe9yuv89UayjIYNK7TTncGLV4vz/sOmxn7W46nP5u/p3zc9Uy2G7B6TFv9DZxsL2IH+VSeTkEdNeQEvVxANKpsMcpzWuquXanKdvceO2zZIuVcGZNa/srr2c2MvjU4mPib57B5zre5Wfpf3c966lTjlsTpzKBFlJjR6sIFZZ20uoRAqx5cnv5s/p5aM32lykypBZG0j426bBUUpP4bqJlpTyICXppg1OdcGFm6cXAUctTeZia3wHNayXLU6pawei3O3S6VbUmWA9GaGEKd07O75bi8pbv8s0X/rbSOu1Ro7U/5vOPyfcDXVY9clupvoXcOuWUmOjflqAU9jO2FQO1tZia2l1+MeBFwUVGiGFJdZGrmc9xM7yJuZjYq9Tp8chN5cAgEtD9T3W3KzsDNP1t+s6U345XTw2Cqjys7h3fVOm4z0XXKzAQ5YAyBWgaBOneoL07qi7H6giKfwtBoPXXO3OkLfbrk8x5rXdST7TetnKt8ycvT7sus3m92zuKlVUeux+nZw4ymlUy1vp7LVvDUm1oTgdo8BGoZBGpgbOLFUZ0Tl1+0k+U45Rd6twdt9UWWN7Di26Q3TaL6Qq0ubjWzXzKx73ijt0Ag+femElwykeZ0A508R64XPFP5fKOSlK4uxgoLrX2+288VuyFQyyBQA2PGFy4+Z7URfpGprZWCEn+PvK6ruVn5mhuo94M8R22Ua1LnqOXrppsr5DI941cqwSvV3LjRd6Wbo9ZqvZ5OoDbK8Wu9X32DoMfpkgzRIFDLuCFQ404z8/Ryhnr1mGrqoMUvivIuRno5dLcyylFrrcuPYb1crdXjPNPdp7KVo043x5yMulFdujlqq++XV6UYwXVOyXOB+tlnn2XV1dXM7/ezq6++mr399tum3+uGQI07zczhF7F0iwLlOWp5Lk+v2NFLFyN5wDYqUub09q2Z41x+MffKHNqZDtRyRqUgfDHan1rrq4u4jd4D5nkqUG/bto0VFBSwn/3sZ+zDDz9k999/PysuLma9vb2m3u+GQI07zczQqrMrKlI2orKze4aZ+tFcwPeDzzex61Cy49zKTSsvog0ExA7o2QzUZnLU6jTw/agu8pZ/ZjCoP4CNlwJ1Nq/FngrU11xzDWttbVU8d+WVV7KVK1eaer8bAjXYT6tFM0ossifVUiIrF8p0i3izJdslA2Yal8lZ3X/q0iV1SZKbMx3ZLN30TKAeHh5m+fn57JVXXlE8v3z5cnb99ddrvufixYtscHAwvhw/fhyBOgdZLfKD5Iwu4uoBJDJ9wTbTfz5Xqev2reSo1eszNvFGw6h43e3VeCLmqIUfQvSLL76gsbExKi8vVzxfXl5O/f39mu9Zt24dlZaWxpfKykrb0pPtyeZBqaVFmmmpuFh/AgZOazjMvXszk65kcuG4kQ/JWFcnTdYxfbr0HJ8wQz6sq13fBxOph0ZlzHj97m5pne7uia9Fo9KQs2Nj0lSW1dVEDQ3SkKS1tdL35P0xkhQV6U8xSiQdFz6fNNmN0+cDn3AnGFQ+bzR9qlOEn+byxIkTdNlll9HevXupvr4+/nxHRwe98MIL9H//938T3jM8PEzDw8Px/2OxGFVWVtoyzaXd0++BNXz/E0kXg2PHtNeTT70oFwgQnTmTseRpkgcltx83RlMPFhdLwVM+dSKR9Dv19iYe9d5v9fuTsXvaRbdraZHGRm9qSj5nuXw/y3+3VKfF1PpcImfPBxGm0fTMNJdlZWWUn58/Ifd86tSpCblszu/3U0lJiWKxixOD+ENCU5N0gvE7dz16kxRka7pKvWkXm5q0X3NLjlteyKk2NCQ9PzSknATDKIdlR3oCAe3XhobszcG7HZ/AZOtWa8cZ//26uojWr088n25wc/o6yo8bveNHKJkvhU/fNddcw5YtW6Z47s///M/RmAx06bV85f08M10PJa+nU9f3adXhyRvkaPXrdnsDHbtYaRAln5bTzJXO63Xb8oZlZvqlW2l4Zpb8Pbw+PJd5pjEZY4nuWZs2bWIffvghW7FiBSsuLmbHjh0z9X4E6tyjvkirg1+mG7wYBVat/tjJ+mA70UBHPg66neT7xuoNiNF+sDqalprWuiLMsGQnK63PMx2ovXpDZIWnAjVj0oAnkUiEFRYWsquvvpq99dZbpt+LQJ171BeEYFD5erZzqFoXSHXLXPkUnOpA5ESOOlMXVHmwtXoDorcftLriWRmghTHt7bVjH4hWGmJ2m5Ltj1T3jbqFuV3pdSPPBep0IFDnHvmwlyJcJLWGwtQK3iJd1EXMUetRX8zturjbkaMWrbuSXrD1+aRhcK2MWmYnvWMBgRqBGjxKb7hPp6Qy4IVXhs/MBvVY0yJd3EW6+WLMuHogWSA2qp5Jl94NjUi/pd0QqGUQqHOXm09yXirg8zmdEnvxwKU177UWKzcs6UxfmUusBGv5fjS66Uin9CHZEKWpfJ5IN0d6EKhlsh2o3XKQ5AL5hSZZsZ4eJ3K2Vlssu4H6wi+f99qIlRm0RCtmFhmvKzYzwhs/Bvn+LSqaeE6kc7za/bu55TjwzMhkbtTZKQ0QoNeXN5v0+vPmCnkfyfFxqQ9pJGLtM3j/05de0l/H7v668v7eXuwDHIlIfWjN9K+2MnZBJvtse0VhoXRM/b//J4VV3v+dL0b4/r1wQTlSWTQqjW1AlHi0wu7fzXPHQZZuHByVyzlqt9xZZlJX18RcgxVmctR25X75sSNPr1fqqNPdR17rKuUUO45Vfk7w3ySXry/pQI7aQSKNFeu5O8sUtLYqh7SsqrL2/i1bpGEOkw27mIpolGjaNGmJRhOlMdOnJy6nmfheJ5jNtemRjyWeKq+XMJnZPj4GvtZY+Gbxc2L9euPrC0aGs0mWbhwchcZkIA8TPDfAux9ZmTvajtIS+WfozUIkQmmMaOzsKkXkzZGxRCtBkx/TdjUU8xLkqB3i9Tt2L9i+XapfGx2V/k82/rf8NzXT/oDPEFRXp/06/4wf/pDo7FmpTk9rBh9Qko8lzslzbGbGr5bn/Pbvtz+NThO5BO3MGemYhxRk6cbBUdnMUYt0R2t1BCCvU7dYVedg9bqHyH9TMznqZHWA/DOCQeWx4rVW3tmgLokwU5+P8yJ71MO6FhY6nSKxoHuWjN2B2uiCKlJDMlz4ldS/jXz/yBtvpTvcqDoQ6P0OIh0rbqAe1IQx/W5EIA75BDlWxwTI5O8qwvlnNjYJPx+1HczO+WmWE/OYFhZKRbUFBUQjI+beU1cnFe/V1mpPCJ/rqquV8yOrBQJSsbiZOaz1jgn1vNjeP9syR28fqxsqYR+Lx8pc2HKZvNby899oXvtM88x81F5ltTUkr08dHZX6lPp80qOR7m7p4EaQ1qaux8tTnQ287npgQNrf6npkM/Tq5Nwy/7RI5K315edPOq2XIXVWrmFmek5ku33PypXSOX32bPLvlG+rEy3YkaN2iNU7RXmOmgdts+8FfVZPOr39rfd7Tpsm5caDQaLTpxPPT5okNWjLz5cuYJCgl/vS+61SPQciEaK+PukGwKhkBbTZndvVyuFmuvTSbK46U6U2yFFnUbJWvnYYGZEOjpGRRM5PnQME65qblf/zGjGee6uqSoxuJh/ljEiZK9brI9zRkciJ87t2n08K0kRSMEJPASUzI8HZoa9P+QiZZ1SSpG6xrg6OmcjJitxKXiEL9eWOy3SrbzRkcTf172e2kYmZMai7uiaOaa1upZyLx4/RPtYbCc7u/WTm8zDJh720zhkz01t6tdEgWn3LZDpQo7uHu6m71JntYmdmaFH5RV5rCkYvXnzMSLaP1TcwqQxOk4yZ/S6f1zzXfqNM0DpnzExvaee5otV7wCkY8CSL0GjL3XjxVywmFa/FYtL/06cbN/gy00BGXqTW14ehFHkxf0OD9H9vr/Y+2bpV+b/ZwWms0KuuUK8D9ohGifbuJdq4UXnO6BU/q0OzXeRVHska5IoCjckg52kFiq4uorY2/QZfRl3f+GtcXp40c1cy3j8TlY135A241Nuud0NjpqucnYJB8130ckE6jbvSbRimd55aHcWPNyJMJy12QWMygDQsW5Zo8PXtb098nQdirWEo1c9demny71M3VPMqs413tLpcNTcngmW2GuCdOSNdyBGkxbRsmfVjoLfXfQ1ykaMGRwZwEUmy4mitrhvyXDMfGIWrrbU2jjS6B+mT/zZVVUSffUbk9ydm0FJ3e4PMkv8eRUXS71BUpBx/XW99LVauN3Z+liiQowYwST7hvVZ9GK9PlZMXd6vrTbu7peBupKoq8V0I0vrkOZ6+PqmUQz7N5Zkzyfc1WKfXjUpeZ2x12tFUBgzS++5cg0ANGeOW0beSXXD++7+V/7e0KBuhaBXT8lGP5Lq6EJzN4kXbzz6bfF30g7afmb7s8htcMzo67LmpikbNf6dXoOgbMsYto28lG1WMSNmYiG8XkXTh+fRT/e3EONTWRaOJhnzqRmdcIEA0dSpGFsuUVMfmzga9MfqtzIMgChR9g+OamqTg1dTkdEqM1dYqH7mOjsTf8uLtpiapSLaoSMo5q7eT5wZRJJuazs7EjY9eAI7FpNdQOpEZW7ZIx/NLL2mXiEUi0k2oE8e4XkNE+dDKZrml1A85ashpyXK8+fnKrlVmcm/FxfrF6N4/29IXjUrBeuVK5cxjerBPM4Mf+3l5iRIkLp0GqHl50nt8vuTdFuXHQmurFFDVfezlrKbF6VI/5KgB0tTSMvFC0teX/O774kXl/4WFudsIJhWtrVIre6v9Y8FekycrH+3CzwPGkudoOzulG+POTul/u8d/d0upHwI1gA69O/etW/W7ikQiE4P7T35ib7pyiXxCFHXVBGTW+vXS4/nzxtO8Wu3HzM8dn49o+3YpR7t9e+Kz5P3j5f3utW6c5VK5ETYzuqAIUPQNOU0r4PKiPrP9No2CtlMT0nuJ0e/g/auXs/SqhuTPWznO5e/r6lJWbXR1JXLQ/DP5yHA+X/Lf2o3HAoq+wTXy86UTUZRxd8fHUx+Tm0+PmZfngqnzBODzJZa6OiknxY+HYHDi75Cfr+zmBpmjdQ7w3ygSkUaKS2eKSF6czS1fPnHkOt6IM9lv7ZYRxlKFHDU4zsmR0eyeJENr7G/Qp97/waDxcJ2pjO0MqTEqKZLneu34TC1FRVJLbjOtud0axZCjBtcQadxdxhL1oqkMqmBl6FBQKixU/q81/jmCtLNqa82P166lq8t8l67z550L0rw0x+cTo+uWAJdGyHVjY9LJpu4Ckkn8JNTCJ2IYGpIem5ulItfm5uQXBTR4St1PfpIYvaqrK/E75PLQkU7q6pICVjCYqG7o7k6vVT5/r+jTvcrHTdi61fkxEVD0DTlJ60Jh9UxQ9+n0/pkEYK90A3amzjneiC3T34eib4AMMxp4AQCSY0zKrYtGr52EU0XhCNQAJH5RHIBXtbZqT2yTjFPVTHYPumIGAjUApVakJR+MA8XeAKkbGZFy1mYCNp8i1qneFU6MYoY6ashJ6hw0ZmACEE9d3cSeFNmIWHolbKijBsgS9ZCHRUUI0gAi0uruWFeXme+KRqWpbadNy8znpwOBGnKOekSk6dO1xytWjzsMAM7LxFgFkYg0nOmZM/oNyZwse0aghpyjHqiht1cavlBNPXMPADgvE43I+vr0XxOhDz8CNeSc1taJdVBaIyClMwITAKSPsYmB2e5GZG6Y9AWBGnLS+LjUypQPW6l1l455kQGc192N0ekcDdTV1dXk8/kUy0pV9qWvr48WLlxIxcXFVFZWRsuXL6eRkRGHUgxe0tkpdQvJzyf6/vedTg1waBsA2aI3x7ZoNwWO56jXrl1LJ0+ejC+PPPJI/LWxsTG67bbbaGhoiPbs2UPbtm2jl19+mdrb2x1MMXhFQ4P0ODaGemiRoG0AZIvWMKEimuR0AqZOnUqhUEjztZ07d9KHH35Ix48fp3A4TERE69evp6VLl1JHRwf6RENa9u6VHvPzUQ8tkpUrpSCN3wQyLRCQgnUgYDy9qtMcz1E/8cQTNG3aNJo1axZ1dHQoirX37dtHNTU18SBNRDRv3jwaHh6mAwcOOJFc8BDeWGzjRtRDiwRtAyBb+AxtIgdpIodz1Pfffz9dffXVFAgE6L333qNVq1bR0aNH6ec//zkREfX391N5ebniPYFAgAoLC6m/v1/3c4eHh2l4eDj+fywWy8wGgKutWyd1y1i3DkEBAMRle456zZo1ExqIqZf9f+yx/sADD1BjYyN961vforvvvpui0Sht2rSJTp8+Hf88n0bbecaY5vPcunXrqLS0NL5UVlbavZngAbzvpFEfSgAAp9meo25ra6PFixcbrlNdXa35/HXXXUdEREeOHKFp06ZRKBSid999V7HOwMAAjY6OTshpy61atYoefPDB+P+xWAzBGgAAXMn2QF1WVkZlZWUpvffgwYNERFRRUUFERPX19dTR0UEnT56MP7dz507y+/00e/Zs3c/x+/3k9/tTSgPkjuZmacq6sbHEoAcidckA74hGEw3kUM0CVjk2e9a+ffvonXfeoTlz5lBpaSl1d3fTAw88QLW1tfQf//EfRCR1z5o1axaVl5fTk08+SWfOnKGlS5fSHXfcQc8884zp78LsWWAkWzPlQO6qrpa6nEUiUkM5ACIXzJ7l9/tp+/btdMMNN9A3vvENevTRR+mee+6hrVu3xtfJz8+n1157jSZPnkx/8Rd/QU1NTXTHHXfQU0895VSyAQAsw3C0kA7MRw3wR+qctffPDABwkvA5agCRIUgDgCgcH5kMQBQIzgAgIuSoAQAABIZADQAAIDAEagAAAIEhUAMAAAgMgRoAAEBgCNQAAAACQ6AGAAAQGAI1AACAwBCoAQAABIZADQAAIDAEagAAAIEhUAMAAAgMgRoAAEBgCNQAWdbSQjRpkvQI2YF9Dm7mY8z7k/uZnZwbIBsmTSIaGyPKzyf66iunU5MbsM9BRGZjE3LUAFnW1CQFjKYmp1OSO7DPwc2QowYAAHAActQAYLvCQiKfT3oEgOxAoAYA00ZHlY8AkHkI1ABgWkGB8hEAMm+S0wkAAPcYGXE6Beb4fIm/vd8KB7wOOWoAAACBIVADAAAIDEXfACCsVIuwUdwNXoIcNQC4AoYBhVyFQA0ArvDSS9IwoC+95HRKALILgRoAhMVYYsEwoJCrMIQoAACAAzCEKAAAgAcgUAMAAAgMgRoAAEBgCNQAAAACQ6AGAAAQGAI1AJjm8yUWgFxUVycd/3V12ftOBGoAAACT9u9XPmYDAjUAAIBJtbXKx2zApBwAYJr3h0cCMNbdnf3vRI4aAABAYAjUAOA5kYjU4CcScTolAOlDoAYAz+nrUz4CuBkCNQB4TlWV8hHAzTIaqDs6OqihoYGKioro0ksv1Vynr6+PFi5cSMXFxVRWVkbLly+nkZERxTo9PT3U2NhIU6ZMocsuu4zWrl1LOTDpFwCkqLdXavjW2+t0SgDSl9FW3yMjI3TXXXdRfX09bdq0acLrY2NjdNttt9H06dNpz549dPr0aVqyZAkxxuiZZ54hImkasFtuuYXmzJlD3d3d9NFHH9HSpUupuLiY2tvbM5l8AAAAx2U0UD/22GNERLR582bN13fu3EkffvghHT9+nMLhMBERrV+/npYuXUodHR1UUlJCL774Il28eJE2b95Mfr+fampq6KOPPqINGzbQgw8+SD4MkQQAAB7maB31vn37qKamJh6kiYjmzZtHw8PDdODAgfg6jY2N5Pf7FeucOHGCjh07pvm5w8PDFIvFFAsAAIAbORqo+/v7qby8XPFcIBCgwsJC6u/v112H/8/XUVu3bh2VlpbGl8rKygykHgAAIPMsB+o1a9aQz+czXPZbGARVq+iaMaZ4Xr0Ob0imV+y9atUqGhwcjC/Hjx83nR4AAACRWK6jbmtro8WLFxuuU11dbeqzQqEQvfvuu4rnBgYGaHR0NJ5rDoVCE3LOp06dIiKakNPm/H6/oqgcAADArSwH6rKyMiorK7Ply+vr66mjo4NOnjxJFRUVRCQ1MPP7/TR79uz4Og8//DCNjIxQYWFhfJ1wOGz6hgAAAMCtMlpH3dfXR4cOHaK+vj4aGxujQ4cO0aFDh+jcuXNERDR37lz6xje+QX/1V39FBw8epF//+tf00EMP0T333EMlJSVERNTS0kJ+v5+WLl1Khw8fph07dtDjjz+OFt8AAJATfCyDI4csXbqUnn/++QnP7969m2644QYikoL5D37wA/rNb35DU6ZMoZaWFnrqqacURdc9PT1077330nvvvUeBQIBaW1vp0UcfNR2oY7EYlZaW0uDgYPwGAAAAwElmY1NGA7UoEKgBAEA0ZmMTxvoGAAAQGAI1AACAwBCoAQAABIZADQAAIDAEagAAAIEhUAMAAAgMgRoAAEBgCNQAAAACQ6AGAAAQGAI1AACAwBCoAQAABIZADQAAIDAEagAAAIEhUAMAAAgMgRoAAEBgCNQAAAACQ6AGAE+pqyPy+aRHAC9AoAYAT9m/X/kI4HYI1ADgKbW1ykcAt5vkdAIAAOzU3e10CgDshRw1AACAwBCoAQAABIZADQAAIDAEagAAAIEhUAMAAAgMgRoAAEBgCNQAAAACQ6AGAAAQGAI1AACAwBCoAQAABIZADQAAIDAEagAAAIEhUAMAAAgMgRoAAEBgCNQAAAACQ6AGAAAQGAI1AACAwBCoAQAABIZADQAAIDAEagAAAIEhUAMAAAgMgRoAAEBgGQ3UHR0d1NDQQEVFRXTppZdqruPz+SYs0WhUsU5PTw81NjbSlClT6LLLLqO1a9cSYyyTSQcAABDCpEx++MjICN11111UX19PmzZt0l3vueeeo1tvvTX+f2lpafzvWCxGt9xyC82ZM4e6u7vpo48+oqVLl1JxcTG1t7dnMvkAAACOy2igfuyxx4iIaPPmzYbrXXrppRQKhTRfe/HFF+nixYu0efNm8vv9VFNTQx999BFt2LCBHnzwQfL5fHYnGwAAQBhC1FG3tbVRWVkZ1dXVUTQapfHx8fhr+/bto8bGRvL7/fHn5s2bRydOnKBjx45pft7w8DDFYjHFAgAA4EaOB+of/ehH9G//9m/0xhtv0OLFi6m9vZ0ef/zx+Ov9/f1UXl6ueA//v7+/X/Mz161bR6WlpfGlsrIycxsAAACQQZYD9Zo1azQbgMmX/fv3m/68Rx55hOrr62nWrFnU3t5Oa9eupSeffFKxjrp4mzck0yv2XrVqFQ0ODsaX48ePW9xKAAAAMViuo25ra6PFixcbrlNdXZ1qeui6666jWCxGn3/+OZWXl1MoFJqQcz516hQR0YScNuf3+xVF5QAAAG5lOVCXlZVRWVlZJtJCREQHDx6kyZMnx7tz1dfX08MPP0wjIyNUWFhIREQ7d+6kcDic1g0BAACAG2S01XdfXx+dOXOG+vr6aGxsjA4dOkRERH/6p39Kl1xyCf3Xf/0X9ff3U319PU2ZMoV2795NP/zhD+lv/uZv4jnilpYWeuyxx2jp0qX08MMP08cff0yPP/44Pfroo2jxDQAAnudjGRw5ZOnSpfT8889PeH737t10ww030K9+9StatWoVHTlyhMbHx+lP/uRP6O6776Z7772XJk1K3EP09PTQvffeS++99x4FAgFqbW21FKhjsRiVlpbS4OAglZSU2LZ9AAAAqTIbmzIaqEWBQA0AAKIxG5sc754FAAAA+hCoAQAABIZADQAAIDAEagAAAIEhUAMAAAgMgRoAAEBgGR3wBACcJx9uwPudMQG8BzlqAAAAgSFQAwAACAxF3wAeh+JuAHdDjhoAAEBgCNQAAAACQ6AGAAAQGAI1AACAwBCoAQAABIZADQAAIDAEagAAAIEhUAMAAAgMgRoAAEBgCNQAAAACQ6AGAAAQGAI1AACAwBCoAQAABJYTs2exP04fFIvFHE4JAACAhMcklmSKu5wI1GfPniUiosrKSodTAgAAoHT27FkqLS3Vfd3HkoVyDxgfH6cTJ07Q1KlTyefzOZ2ctMRiMaqsrKTjx49TSUmJ08mxjRe3C9vkHl7cLi9uE5G3tosxRmfPnqVwOEx5efo10TmRo87Ly6PLL7/c6WTYqqSkxPUHqRYvbhe2yT28uF1e3CYi72yXUU6aQ2MyAAAAgSFQAwAACAyB2mX8fj+tXr2a/H6/00mxlRe3C9vkHl7cLi9uE5F3t8tITjQmAwAAcCvkqAEAAASGQA0AACAwBGoAAACBIVADAAAIDIFaUB0dHdTQ0EBFRUV06aWXaq7j8/kmLNFoVLFOT08PNTY20pQpU+iyyy6jtWvXJh1XNpPMbFdfXx8tXLiQiouLqaysjJYvX04jIyOKdUTbLrXq6uoJv83KlSsV65jZTtH89Kc/pRkzZtDkyZNp9uzZ9D//8z9OJ8m0NWvWTPhNQqFQ/HXGGK1Zs4bC4TBNmTKFbrjhBvrggw8cTLG2t99+mxYuXEjhcJh8Ph+9+uqritfNbMfw8DDdd999VFZWRsXFxXT77bfTp59+msWtUEq2TUuXLp3w21133XWKdUTbJjshUAtqZGSE7rrrLlq2bJnhes899xydPHkyvixZsiT+WiwWo1tuuYXC4TB1d3fTM888Q0899RRt2LAh08nXlWy7xsbG6LbbbqOhoSHas2cPbdu2jV5++WVqb2+PryPidmlZu3at4rd55JFH4q+Z2U7RbN++nVasWEE//OEP6eDBg/Sd73yH5s+fT319fU4nzbRvfvObit+kp6cn/tqPf/xj2rBhA23cuJG6u7spFArRLbfcEp8rQBRDQ0M0c+ZM2rhxo+brZrZjxYoVtGPHDtq2bRvt2bOHzp07RwsWLKCxsbFsbYZCsm0iIrr11lsVv93rr7+ueF20bbIVA6E999xzrLS0VPM1ImI7duzQfe9Pf/pTVlpayi5evBh/bt26dSwcDrPx8XGbU2qN3na9/vrrLC8vj3322Wfx57Zu3cr8fj8bHBxkjIm9XVwkEmFPP/207utmtlM011xzDWttbVU8d+WVV7KVK1c6lCJrVq9ezWbOnKn52vj4OAuFQqyzszP+3MWLF1lpaSmLRqNZSqF16muAme348ssvWUFBAdu2bVt8nc8++4zl5eWxX/3qV1lLux6t69qSJUvYd7/7Xd33iL5N6UKO2uXa2tqorKyM6urqKBqN0vj4ePy1ffv2UWNjo2JggHnz5tGJEyfo2LFjDqQ2uX379lFNTQ2Fw+H4c/PmzaPh4WE6cOBAfB03bNcTTzxB06ZNo1mzZlFHR4eiWNvMdopkZGSEDhw4QHPnzlU8P3fuXNq7d69DqbLu448/pnA4TDNmzKDFixfTJ598QkRER48epf7+fsX2+f1+amxsdNX2mdmOAwcO0OjoqGKdcDhMNTU1Qm/rm2++SV/72tfoiiuuoHvuuYdOnToVf82t22RWTkzK4VU/+tGP6KabbqIpU6bQr3/9a2pvb6cvvvgiXsTa399P1dXViveUl5fHX5sxY0a2k5xUf39/PI1cIBCgwsJC6u/vj68j+nbdf//9dPXVV1MgEKD33nuPVq1aRUePHqWf//znRGRuO0XyxRdf0NjY2IQ0l5eXC5leLddeey394he/oCuuuII+//xz+sd//EdqaGigDz74IL4NWtvX29vrRHJTYmY7+vv7qbCwkAKBwIR1RP0t58+fT3fddRdFIhE6evQo/cM//APdeOONdODAAfL7/a7cJiuQo84ircYs6mX//v2mP++RRx6h+vp6mjVrFrW3t9PatWvpySefVKyjntaT/bHBlZ3Tfdq9XVppY4wpns/GdqlZ2c4HHniAGhsb6Vvf+hbdfffdFI1GadOmTXT69GndbeDbIfJUrFr7XeT0ys2fP5++973v0VVXXUU333wzvfbaa0RE9Pzzz8fXcfP2yaWyHSJv66JFi+i2226jmpoaWrhwIf3yl7+kjz76KP4b6hF5m6xAjjqL2traaPHixYbrqHOKVlx33XUUi8Xo888/p/LycgqFQhPuJnlxkfqOOx12blcoFKJ3331X8dzAwACNjo7G05yt7VJLZzt5C9UjR47QtGnTTG2nSMrKyig/P19zv4uYXjOKi4vpqquuoo8//pjuuOMOIpJymxUVFfF13LZ9vBW70XaEQiEaGRmhgYEBRQ701KlT1NDQkN0Ep6iiooIikQh9/PHHROSNbTKCHHUWlZWV0ZVXXmm4TJ48OeXPP3jwIE2ePDne7am+vp7efvttRd3ozp07KRwOp3VDoGbndtXX19Phw4fp5MmTijT7/X6aPXt2VrdLLZ3tPHjwIBFR/OJpZjtFUlhYSLNnz6Zdu3Ypnt+1a5drL4TDw8P0u9/9jioqKmjGjBkUCoUU2zcyMkJvvfWWq7bPzHbMnj2bCgoKFOucPHmSDh8+7JptPX36NB0/fjx+Pnlhmww51owNDPX29rKDBw+yxx57jF1yySXs4MGD7ODBg+zs2bOMMcb+8z//k/3Lv/wL6+npYUeOHGE/+9nPWElJCVu+fHn8M7788ktWXl7OmpubWU9PD3vllVdYSUkJe+qpp5zarKTb9dVXX7Gamhp20003sffff5+98cYb7PLLL2dtbW3xzxBxu+T27t3LNmzYwA4ePMg++eQTtn37dhYOh9ntt98eX8fMdopm27ZtrKCggG3atIl9+OGHbMWKFay4uJgdO3bM6aSZ0t7ezt588032ySefsHfeeYctWLCATZ06NZ7+zs5OVlpayl555RXW09PDmpubWUVFBYvFYg6nXOns2bPx84aI4sdab28vY8zcdrS2trLLL7+cvfHGG+z9999nN954I5s5cyb76quvhNums2fPsvb2drZ371529OhRtnv3blZfX88uu+wyobfJTgjUglqyZAkjognL7t27GWOM/fKXv2SzZs1il1xyCSsqKmI1NTXsn/7pn9jo6Kjic37729+y73znO8zv97NQKMTWrFnjaBemZNvFmBTMb7vtNjZlyhQWDAZZW1uboisWY+Jtl9yBAwfYtddey0pLS9nkyZPZn/3Zn7HVq1ezoaEhxXpmtlM0zz77LItEIqywsJBdffXV7K233nI6SaYtWrSIVVRUsIKCAhYOh9mdd97JPvjgg/jr4+PjbPXq1SwUCjG/38+uv/561tPT42CKte3evVvzHFqyZAljzNx2XLhwgbW1tbFgMMimTJnCFixYwPr6+hzYGonRNp0/f57NnTuXTZ8+nRUUFLCqqiq2ZMmSCekVbZvshGkuAQAABIY6agAAAIEhUAMAAAgMgRoAAEBgCNQAAAACQ6AGAAAQGAI1AACAwBCoAQAABIZADQAAIDAEagAAAIEhUAMAAAgMgRoAAEBgCNQAAAAC+//I5b0716CumAAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# It takes about 2 minutes to run this block\n", "\n", @@ -407,27 +260,9 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Number of unique users in Europe: 8525\n" - ] - }, - { - "data": { - "image/png": "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/eIXvwjf+c534JlnnoGLL7548fN+eoa2a5So23McHh6GD37wgwAA0G63Yd++ffCHf/iH8OUvfxkAyn1+tRUf559/Ppx//vmZHGvDhg2wY8cOeO211xYfxF/91V/ByMgIfPjDH87kHFmQ5ppffPFFAICeilYXhoeH4cMf/jA8+eST8Nu//duLnz/55JNwww03lFiyfDh16hT87//9v+FXf/VXyy5KLlx66aWwevVqePLJJ+FDH/oQAERxPU8//TTcf//9JZcuH9566y04fPhwbd4/Ywx88YtfhMcffxz27NkDl156ac/3/fAM465Rom7PkWOMgVOnTlXj+RUS1loyBw8eNC+++KK57777zLnnnmtefPFF8+KLL5r5+XljjDHvv/++ufLKK81v/MZvmBdeeMH8j//xP8zFF19s7rrrrpJLnoy9e/ear33ta+bFF180r7zyinnkkUfM2rVrzWc+85myi5aY3bt3m1arZf74j//Y/N3f/Z25++67zfLly82BAwfKLlpqtm7davbs2WNeeeUV8+yzz5pPfepTZsWKFbW+tvn5+cX3DAAW6+PBgweNMcbMzMyYsbEx8+1vf9vMzc2Z6elps2bNGnP8+PGSS+6H6/rm5+fN1q1bzd69e83+/fvNU089ZTZs2GAuuuii2lzfnXfeacbGxsyePXvMa6+9tridPHlycZ+6P8O4a6z7c/zKV75innnmGbN//37zwx/+0Hz1q181zWbT/NVf/ZUxpvznNxDiY/PmzQYAlmxPPfXU4j4HDx40v/Vbv2U+8IEPmImJCXPXXXeZhYWF8gqdgueff9585CMfMWNjY2bZsmXm537u58z27dvNiRMnyi5aKr7+9a+bqakpMzw8bH75l3+5Z0pcnbn55pvNmjVrTKvVMmvXrjU33nijeemll8ouViqeeuop8Z3bvHmzMSaaqrl9+3azevVqMzIyYq699lozNzdXbqEDcF3fyZMnzcaNG80FF1xgWq2WmZycNJs3bzaHDh0qu9jeSNcGAOab3/zm4j51f4Zx11j35/jP/tk/W2wvL7jgAvMbv/Ebi8LDmPKfX8MYYwpxsSiKoiiKosCAZDhVFEVRFKU6qPhQFEVRFKVQVHwoiqIoilIoKj4URVEURSkUFR+KoiiKohSKig9FURRFUQpFxYeiKIqiKIWi4kNRFEVRlEJR8aEoiqIoSqGo+FAURVEUpVBUfCiKoiiKUigqPhRFURRFKZT/B/kiCBFClwELAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "gdf_brightkite = gdf_brightkite[gdf_brightkite['latitude'] < 60]\n", "gdf_brightkite = gdf_brightkite[gdf_brightkite['latitude'] > 35]\n", @@ -453,7 +288,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -490,27 +325,9 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Number of unique users: 12611\n" - ] - }, - { - "data": { - "image/png": "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DzweT+ix/LKsYSEiIso8w8PDKCkpibuMaRlsjx07huPHj+O+++5DSUkJOjo68OSTT6Kmpgb/8R//AUAZujx37lxUVFTgueeew8DAAFavXo3ly5cbHrocDAZx4cIFTJ48OWbTkVWGhoYwc+ZM9PX1Zf3IJm6LMG4LBbdDGLeFgtshLBu2hRACw8PD8Pl8yMmJ3yvFtA62Ho8He/fuxdatWzEyMgK/3481a9bghz/8YWgZt9uNN998E3/zN3+Db3zjGygsLER9fT2ef/55w5+Tk5ODGTNmmPEVUmbKlCmO3dkSxW0Rxm2h4HYI47ZQcDuEOX1bjFejIpkWrMybNw/Hjx8fd7mqqir813/9l1nFICIiogzHuYGIiIjI1hismMjj8WDz5s0RHYKzFbdFGLeFgtshjNtCwe0Qxm0RybQOtkRERESpwJoVIiIisjUGK0RERGRrDFaIiIjI1hisEBERka0xWEmRlpYWLF68GEVFRbjtttt0l9Gb9DEQCEQs093djdraWhQWFuL222/Htm3bDM2bYBdGtkNvby+WLVuG4uJilJeXY/369RgdHY1YJtO3g57q6uqo//+GDRsiljGybZxi586dmDVrFgoKCjB//ny89957VhfJVHqTwHq93tDrQghs2bIFPp8PhYWF+OY3v4mTJ09aWOLUOXLkCJYtWwafzweXy4Vf/OIXEa8b+e4jIyP427/9W5SXl6O4uBjf+c538Mknn6TxW0zceNth9erVUfuInFNPcsJ2SAaDlRQZHR3FY489hrVr18ZdbteuXbh48WLo1tDQEHptaGgI999/P3w+Hzo6OvDyyy/j+eefx4svvmh28VNmvO0wNjaGpUuX4vr163j//fexZ88e/Pu//zuam5tDyzhhO8Sybdu2iP//j370o9BrRraNU+zduxdPPPEENm3ahK6uLtxzzz146KGH0Nvba3XRTPXVr3414v/f3d0deu3HP/4xXnzxRezYsQMdHR3wer24//77MTw8bGGJU+P69eu46667sGPHDt3XjXz3J554Am+88Qb27NmD999/H5999hkefvhhjI2NpetrTNh42wEAHnzwwYh95K233op43QnbISmCUmrXrl2ipKRE9zUA4o033oj53p07d4qSkhLxxRdfhJ7bvn278Pl8IhgMprik5oq1Hd566y2Rk5Mjzp8/H3pu9+7dwuPxiMHBQSGEs7aDmt/vFz/5yU9ivm5k2zjFn//5n4vGxsaI577yla+IDRs2WFQi823evFncdddduq8Fg0Hh9XpFa2tr6LkvvvhClJSUiEAgkKYSpof2OGjku1+7dk3k5eWJPXv2hJY5f/68yMnJEb/61a/SVvZU0jsfNDQ0iEceeSTme5y4HYxizUqaNTU1oby8HAsWLEAgEEAwGAy9duzYMdTW1kYkAXrggQdw4cIFnDt3zoLSpt6xY8cwZ84c+Hy+0HMPPPAARkZG0NnZGVrGqdvh2WefxdSpUzF37ly0tLRENPEY2TZOMDo6is7OTixZsiTi+SVLluDo0aMWlSo9Tp06BZ/Ph1mzZmHVqlU4c+YMAODs2bPo7++P2CYejwe1tbWO3yZGvntnZydu3rwZsYzP58OcOXMct30OHz6M6dOnY/bs2VizZg0uXboUei2btoOWaXMDUbRnnnkG3/72t1FYWIj/+Z//QXNzMy5fvhxqCujv70d1dXXEeyoqKkKvzZo1K91FTrn+/v7Qd5JKS0uRn5+P/v7+0DJO3A7f//73MW/ePJSWluI3v/kNNm7ciLNnz+KVV14BYGzbOMHly5cxNjYW9V0rKioc9T21Fi5ciNdffx2zZ8/GH/7wB/z93/89Fi9ejJMnT4a+t9426enpsaK4aWPku/f39yM/Px+lpaVRyzhpn3nooYfw2GOPwe/34+zZs3j66afxrW99C52dnfB4PFmzHfSwZiUOvQ5x2tuJEycMr+9HP/oRFi1ahLlz56K5uRnbtm3Dc889F7GMy+WKeCz+2KlU+3w6pXo76H0XIUTE83bcDnoS2TZPPvkkamtr8bWvfQ3f+973EAgE8Oqrr+LKlSuh9RnZNk6h9z924veUHnroIfzVX/0V7rzzTvzlX/4l3nzzTQDAa6+9Flom27aJWjLf3WnbZ+XKlVi6dCnmzJmDZcuW4e2338bHH38c2ldicdp20MOalTiampqwatWquMtoawAScffdd2NoaAh/+MMfUFFRAa/XGxUdyypA7VVHOqVyO3i9Xvz617+OeO7q1au4efNm6DvadTvomci2kb38T58+jalTpxraNk5QXl4Ot9ut+z920vccT3FxMe68806cOnUKy5cvB6DUIFRWVoaWyYZtIkdExfvuXq8Xo6OjuHr1akStwqVLl7B48eL0FjiNKisr4ff7cerUKQDZux0A1qzEVV5ejq985StxbwUFBUmvv6urCwUFBaEhvosWLcKRI0ci+jEcOHAAPp9vQkHRRKVyOyxatAgfffQRLl68GHruwIED8Hg8mD9/fmgZO24HPRPZNl1dXQAQOkAb2TZOkJ+fj/nz5+PgwYMRzx88eNDxB1y1kZER/O53v0NlZSVmzZoFr9cbsU1GR0fx7rvvOn6bGPnu8+fPR15eXsQyFy9exEcffeTo7XPlyhX09fWFjhHZuh0AcDRQqvT09Iiuri6xdetWMWnSJNHV1SW6urrE8PCwEEKI//zP/xT//M//LLq7u8Xp06fFz372MzFlyhSxfv360DquXbsmKioqRF1dneju7hb79+8XU6ZMEc8//7xVXyth422HW7duiTlz5ohvf/vb4oMPPhCHDh0SM2bMEE1NTaF1OGE7aB09elS8+OKLoqurS5w5c0bs3btX+Hw+8Z3vfCe0jJFt4xR79uwReXl54tVXXxW//e1vxRNPPCGKi4vFuXPnrC6aaZqbm8Xhw4fFmTNnxPHjx8XDDz8sJk+eHPrOra2toqSkROzfv190d3eLuro6UVlZKYaGhiwu+cQNDw+HjgUAQr+Fnp4eIYSx797Y2ChmzJghDh06JD744APxrW99S9x1113i1q1bVn2thMXbDsPDw6K5uVkcPXpUnD17Vrzzzjti0aJF4vbbb3fcdkgGg5UUaWhoEACibu+8844QQoi3335bzJ07V0yaNEkUFRWJOXPmiJdeekncvHkzYj0ffvihuOeee4TH4xFer1ds2bIlo4brjrcdhFACmqVLl4rCwkJRVlYmmpqaIoYpC5H520Grs7NTLFy4UJSUlIiCggLx5S9/WWzevFlcv349Yjkj28Yp/vEf/1H4/X6Rn58v5s2bJ959912ri2SqlStXisrKSpGXlyd8Pp949NFHxcmTJ0OvB4NBsXnzZuH1eoXH4xH33nuv6O7utrDEqfPOO+/oHhcaGhqEEMa+++effy6amppEWVmZKCwsFA8//LDo7e214NskL952uHHjhliyZImYNm2ayMvLE1VVVaKhoSHqOzphOyTDJUSGpwUlIiIiR2OfFSIiIrI1BitERERkawxWiIiIyNYYrBAREZGtMVghIiIiW2OwQkRERLbGYIWIiIhsjcEKERER2RqDFSIiIrI1BitERERkawxWiIiIyNYYrBAREZGt/X9lETeeUsVwyAAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "df_gowalla = pd.read_csv(os.path.join('data', 'gowalla', 'gowalla_checkins_full.txt'),\n", " sep='\\t', \n", @@ -540,27 +357,9 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Number of unique users in the EU area: 3718\n" - ] - }, - { - "data": { - "image/png": "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hw7RRz7yEbr99ttpeHg46Kb55v3vf7/p/RocHAy6SUWZmJigD3zgA7Rt2zbt9V/4whfoiSeeoG3bttHAwAC1tLTQLbfcMrugZCVweo5ERLfddpvpfX3++efL2MLi7Nu3jx588EF6+eWXac+ePXTx4kVauXIlTUxMzN6m0t9HN8+RqLLfx8svv5z6+vrowIEDdODAAbrpppvorrvumg0wAn8PWcR9/etfZ01NTXmXP//88ywej7PXX3999rIdO3aw+vp6Njo6WsYW+iedTrN///d/D7oZvvmzP/sz1t3dbbrsve99L+vp6QmoRf7atGkT+8AHPhB0M0qGiNizzz47+//MzAxraWlhfX19s5edO3eONTU1sVwuF0ALi6c+R8YYW7NmDbvrrrsCaU8pnDx5khER27dvH2Msmu+j+hwZi977yBhjzc3N7Ktf/Woo3sPIZj6cvPTSS7Rs2TJqa2ubvezWW2+lqakpOnjwYIAtK87nP/95mj9/Pn3wgx+k3t7eiu1GOn/+PB08eJBWrlxpunzlypW0f//+gFrlvyNHjlBbWxstWbKEVq9eTa+99lrQTSqZo0eP0okTJ0zvaX19Pd1www2Rek+JiPbu3UuXXXYZLV26lO6//346efJk0E0q2OjoKBERpVIpIorm+6g+RyEq7+P09DTt3LmTJiYmaPny5aF4D0O3qm25nDhxghYuXGi6rLm5merq6ujEiRMBtao4Dz/8MF1zzTXU3NxMv/zlL+mxxx6jo0eP0le/+tWgm+bZH/7wB5qens57jxYuXFix74/qQx/6EH3zm9+kpUuX0u9//3v63Oc+RytWrKDDhw/T/Pnzg26e78T7pntPh4aGgmhSSdx+++30sY99jNLpNB09epQ+85nP0E033UQHDx6suJLdjDH61Kc+RX/+539Oy5YtI6LovY+650gUjfdxcHCQli9fTufOnaNLLrmEnn32WXrf+943G2AE+R5WVPCxefNm+uxnP2t7m4GBAcpkMq62F4vF8i5jjGkvD4qX5/wv//Ivs5ddddVV1NzcTPfee+9sNqQSqe9F2N6fYtx+++2zf1955ZW0fPlyete73kXf+MY36FOf+lSALSutKL+nRESrVq2a/XvZsmWUyWQonU7T97//fbrnnnsCbJl369ato1/96lf0s5/9LO+6qLyPVs8xCu/je97zHnr11VfprbfeomeeeYbWrFlD+/btm70+yPewooKPdevW0erVq21vs3jxYlfbamlpoV/84hemy86cOUMXLlzIiwaDVMxzFiOz//d//7figo8FCxZQIpHIy3KcPHkyVO+PnxoaGujKK6+kI0eOBN2UkhAzeU6cOEGtra2zl0f5PSUiam1tpXQ6XXHv6yc/+Un63ve+Ry+++CJdfvnls5dH6X20eo46lfg+1tXV0bvf/W4iIspkMjQwMEBPPvkkPfroo0QU7HtYUcHHggULaMGCBb5sa/ny5dTb20vHjx+fffF/9KMfUX19PV177bW+PIYfinnOhw4dIiIyfbgqRV1dHV177bW0Z88euvvuu2cv37NnD911110Btqx0pqam6De/+Q195CMfCbopJbFkyRJqaWmhPXv20NVXX01EfGzPvn376POf/3zArSudU6dO0cjISMV8Dxlj9MlPfpKeffZZ2rt3Ly1ZssR0fRTeR6fnqFNp76MOY4ympqbC8R6WZVhrAIaGhtihQ4fYZz/7WXbJJZewQ4cOsUOHDrHx8XHGGGMXL15ky5YtYzfffDN75ZVX2H/913+xyy+/nK1bty7glhdm//797IknnmCHDh1ir732Gtu1axdra2tjf/3Xfx100wq2c+dOVltby772ta+xX//612z9+vWsoaGBHTt2LOim+WLDhg1s79697LXXXmMvv/wy+6u/+ivW2NhY0c9vfHx89rtGRLOfyaGhIcYYY319faypqYl997vfZYODgyybzbLW1lY2NjYWcMvds3uO4+PjbMOGDWz//v3s6NGj7Cc/+Qlbvnw5+5M/+ZOKeY5r165lTU1NbO/evez48eOzp8nJydnbVPr76PQco/A+PvbYY+zFF19kR48eZb/61a/Ypz/9aRaPx9mPfvQjxljw72Fkg481a9YwIso7/eQnP5m9zdDQELvjjjvY3LlzWSqVYuvWrWPnzp0LrtFFOHjwIPvQhz7Empqa2Jw5c9h73vMetmnTJjYxMRF004rypS99iaXTaVZXV8euueYa01S4Srdq1SrW2trKamtrWVtbG7vnnnvY4cOHg25WUX7yk59ov3dr1qxhjPFpmps2bWItLS2svr6eXX/99WxwcDDYRntk9xwnJyfZypUr2aWXXspqa2tZe3s7W7NmDRseHg662a7pnhsRsa9//euzt6n099HpOUbhffzHf/zH2d/OSy+9lN18882zgQdjwb+HMcYYK0uKBQAAAIAiXOEUAAAAwgnBBwAAAJQVgg8AAAAoKwQfAAAAUFYIPgAAAKCsEHwAAABAWSH4AAAAgLJC8AEAAABlheADAAAAygrBBwAAAJQVgg8AAAAoq/8PbqGeg5r8pNAAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "gdf_gowalla = gdf_gowalla[gdf_gowalla['latitude'] < 60]\n", "gdf_gowalla = gdf_gowalla[gdf_gowalla['latitude'] > 35]\n", @@ -585,7 +384,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -607,7 +406,7 @@ "source": [ "## Foursquare\n", "\n", - "[Foursquare](https://foursquare.com/) is a location-based social networking website where users share their locations by checking-in. This dataset includes long-term (about 22 months from Apr. 2012 to Jan. 2014) global-scale check-in data collected from Foursquare, and also two snapshots of user social networks before and after the check-in data collection period (see more details in the reference paper). We will work with three different datasets:\n", + "[Foursquare](https://foursquare.com/) is a location-based social networking website where users share their locations by checking-in. This dataset includes long-term (about 22 months from Apr. 2012 to Jan. 2014) global-scale check-in data collected from Foursquare, and also two snapshots of user social networks before and after the check-in data collection period (see more details in the reference paper). We will work with three different datasets `[15]`:\n", "\n", "- `foursquare_checkins_full.txt`: a tsv file with 4 columns: `User ID`, `Venue ID`, `UTC time`, `Timezone offset in minutes` \n", "\n", @@ -617,33 +416,14 @@ "\n", "--- \n", "\n", - "This dataset is by far the biggest of the 3 that we got. The check-in dataset contains 22,809,624 checkins by 114,324 users on 3,820,891 venues. The social network data contains 607,333 friendships. As explained before, we are going to need sub-samples! In this case, we'll take only data from 2012 that have been generated in Italy. Due to the size of the full network, this time we won't plot it, otherwise our RAM might cry and our beloved kernel will be forced to kill our process." + "The check-in dataset in consideration, with a size that surpasses that of the other three datasets obtained, comprises of [22,809,624] check-ins made by [114,324] users at [3,820,891] venues. Additionally, the social network data consists of [607,333] friendships. As previously indicated, the need for sub-sampling arises due to the size of the full network. In this instance, we shall restrict our analysis to data generated in Italy in the year 2012. Given the substantial size of the full network, plotting it would likely result in an unfavorable outcome, as the available RAM may become exhausted and the kernel may be forced to terminate the process." ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Starting to plot\n", - "Number of unique users in Italy: 2555\n" - ] - }, - { - "data": { - "image/png": "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PgouYMi45pIOHw7+zuf1Na7V7FYXGAggUgA0ytiYDgKIS+UD9LXijOuVihb3SkVboDayWaLjx/VxtiwVXAQR9D2YkwIAdI9ajeiyy+rnmCoVHVpOFGSrMEnX0AUSgjkpAED6GRvTrj9Z20qpQKCIdAqlrDFUudZZgb4DIgUASDdjY0Q336xdfNWqFjGuzAv6Hrj7AAAAdBy4+wAAAPQ8ECkAAACpBSIFAAAgtUCkAAAApBaIFAAAgNQCkQIAAJBaIFIAAABSC0QKAABAaoFIAQAASC0QKQAAAKkFIgUAACC1QKQAAACklkQiVa1W6ZxzzqFly5bRsmXL6A1veAP967/+a2ifhx56iC644AJavnw5LV26lF7/+tfT3r17W9ppAAAAg0EikTrttNNoYmKCJicnaXJykt785jfThRdeSA8++CAREf3hD3+g8847j17xilfQ3XffTb/85S/pM5/5DC1atKgtnQcAANDfNF2qo1gs0he/+EX64Ac/SBdddBHl83n653/+54bbQ6kOAADof9peqmN2dpZuvfVWOnToEL3hDW+gubk5+tGPfkQvf/nL6fzzz6eTTz6ZXve619Htt98e2c6xY8doZmYmtAEAAABEDYjUnj176KSTTqKFCxfS2NgY7dy5k84880x66qmn6LnnnqOJiQl6xzveQT/5yU/oPe95D733ve+le+65x9ne9ddfT8uXL5/fVq9e3dQJAQAA6B8Su/uOHz9Oe/fupWeffZa+853v0De+8Q2655576AUveAGdeuqpVKlUaNu2bfP7X3DBBbRkyRLavn27tb1jx47RsWPH5p/PzMzQ6tWr4e4DAIA+xtfdtyBpw0NDQ/Syl72MiIjK5TLt3r2bvva1r9HXv/51WrBgAZ155pmh/V/5ylfSz3/+c2d7CxcupIULFybtBgAAgAGg6XVSSik6duwYDQ0N0dq1a+m3v/1t6P2HH36YSqVSsx8DAABgAElkSX3qU5+iv/mbv6HVq1fTwYMH6dZbb6W7776b7rjjDiIiuuaaa2jTpk20fv16etOb3kR33HEH/eAHP6C77767HX0HAADQ5yQSqT//+c90ySWX0JNPPknLly+nc845h+644w5629veRkRE73nPe6hWq9H1119PV1xxBZ1xxhn0ne98h84777y2dB4AAEB/0/Q6qVaDdVIAAND/tH2dFAAAANBuIFIAAABSC0QKAABAaoFIAQAASC0QKQAAAKkFIgUAACC1QKQASANr1xJlMkRDQ0S1Wrd7A0BqgEgBkAYmJ/XjiRNEExPd7QsAKQIiBUAaKJf1Yz5PND7e3b4AkCISZ0EHALSB3bu73QMAUgksKQAAAKkFIgUAACC1QKQAAACkFogUAACA1AKRAgAAkFogUgAAAFILRAoAAEBqgUgBAABILRApAAAAqQUiBQAAILVApAAAAKQWiBQAAIDUApECAACQWlKXBV0pRUREMzMzXe4JAACAdsFjPI/5LlInUgcPHiQiotWrV3e5JwAAANrNwYMHafny5c73MypOxjrM3NwcPfHEE7R06VLKZDLd7k7LmZmZodWrV9O+ffto2bJl3e5O28B59h+Dcq44z86glKKDBw/SqlWrKJt1zzylzpLKZrN02mmndbsbbWfZsmV9/QNgcJ79x6CcK86z/URZUAwCJwAAAKQWiBQAAIDUApHqMAsXLqRrr72WFi5c2O2utBWcZ/8xKOeK80wXqQucAAAAABhYUgAAAFILRAoAAEBqgUgBAABILRApAAAAqQUi1SGef/55+vSnP00veclLaPHixfTSl76UPve5z9Hc3Fy3u9YU9957L73rXe+iVatWUSaTodtvvz30vlKKPvvZz9KqVato8eLF9MY3vpEefPDB7nS2CaLO88SJE/SJT3yCXvWqV9GSJUto1apVdOmll9ITTzzRvQ43SNz/U/LhD3+YMpkMffWrX+1Y/1qFz3k+9NBDdMEFF9Dy5ctp6dKl9PrXv5727t3b+c42Sdy5Pvfcc3T55ZfTaaedRosXL6ZXvvKVVK1Wu9NZCxCpDvH5z3+earUa3XTTTfTQQw/RF77wBfriF79IX//617vdtaY4dOgQnXvuuXTTTTdZ3//CF75AX/7yl+mmm26i3bt30ymnnEJve9vb5nM09gpR53n48GG6//776TOf+Qzdf//99N3vfpcefvhhuuCCC7rQ0+aI+38yt99+O/33f/83rVq1qkM9ay1x5/mHP/yBzjvvPHrFK15Bd999N/3yl7+kz3zmM7Ro0aIO97R54s716quvpjvuuIO+/e1v00MPPURXX301ffSjH6Xvfe97He6pAwU6wjvf+U71gQ98IPTae9/7XnXxxRd3qUeth4jUzp0755/Pzc2pU045RU1MTMy/dvToUbV8+XJVq9W60MPWYJ6njfvuu08RkZqamupMp9qA6zwfe+wxdeqpp6pf//rXqlQqqa985Ssd71srsZ3npk2b+uq3ydjO9ayzzlKf+9znQq+95jWvUZ/+9Kc72DM3sKQ6xHnnnUf//u//Tg8//DAREf3yl7+kn//85/S3f/u3Xe5Z+3jkkUfoT3/6E7397W+ff23hwoW0YcMG2rVrVxd71n6mp6cpk8nQC17wgm53paXMzc3RJZdcQtdccw2dddZZ3e5OW5ibm6Mf/ehH9PKXv5zOP/98Ovnkk+l1r3tdpOuzlznvvPPo+9//Pj3++OOklKK77rqLHn74YTr//PO73TUigruvY3ziE5+gSqVCr3jFKyifz9OrX/1quuqqq6hSqXS7a23jT3/6ExERvehFLwq9/qIXvWj+vX7k6NGjND4+TqOjo32XoPTzn/88LViwgK644opud6VtPPXUU/Tcc8/RxMQEveMd76Cf/OQn9J73vIfe+9730j333NPt7rWcG2+8kc4880w67bTTaGhoiN7xjnfQLbfcQuedd163u0ZEKcyC3q/cdttt9O1vf5u2bdtGZ511Fj3wwAN01VVX0apVq+h973tft7vXVsySK0qpvizDQqSDKC666CKam5ujW265pdvdaSn/8z//Q1/72tfo/vvv79v/HxHNBzNdeOGFdPXVVxMR0V/91V/Rrl27qFar0YYNG7rZvZZz44030n/913/R97//fSqVSnTvvffSRz7yEXrxi19Mb33rW7vdPYhUp7jmmmtofHycLrroIiIietWrXkVTU1N0/fXX961InXLKKUSkLaoXv/jF868/9dRTddZVP3DixAnauHEjPfLII/TTn/6076yon/3sZ/TUU0/RyMjI/Guzs7P0sY99jL761a/So48+2r3OtZAXvvCFtGDBAjrzzDNDr7/yla+kn//8513qVXs4cuQIfepTn6KdO3fSO9/5TiIiOuecc+iBBx6gL33pS6kQKbj7OsThw4frCnvlcrmeD0GP4iUveQmdcsopdOedd86/dvz4cbrnnnto3bp1XexZ62GB+t3vfkf/9m//RitWrOh2l1rOJZdcQr/61a/ogQcemN9WrVpF11xzDf34xz/udvdaxtDQEK1du5Z++9vfhl5/+OGHqVQqdalX7eHEiRN04sSJVI9NsKQ6xLve9S7aunUrjYyM0FlnnUW/+MUv6Mtf/jJ94AMf6HbXmuK5556j3//+9/PPH3nkEXrggQeoWCzSyMgIXXXVVXTdddfR6aefTqeffjpdd911VCgUaHR0tIu9Tk7Uea5atYr+7u/+ju6//3764Q9/SLOzs/NzbsVikYaGhrrV7cTE/T9N8c3n83TKKafQGWec0emuNkXceV5zzTW0adMmWr9+Pb3pTW+iO+64g37wgx/Q3Xff3b1ON0jcuW7YsIGuueYaWrx4MZVKJbrnnnvoW9/6Fn35y1/uYq8F3Q4vHBRmZmbUlVdeqUZGRtSiRYvUS1/6UrVlyxZ17NixbnetKe666y5FRHXb+973PqWUDkO/9tpr1SmnnKIWLlyo1q9fr/bs2dPdTjdA1Hk+8sgj1veISN11113d7noi4v6fJr0agu5znt/85jfVy172MrVo0SJ17rnnqttvv717HW6CuHN98skn1fvf/361atUqtWjRInXGGWeoG264Qc3NzXW34/8HSnUAAABILZiTAgAAkFogUgAAAFILRAoAAEBqgUgBAABILRApAAAAqQUiBQAAILVApAAAAKQWiBQAAIDUApECAACQWiBSAAAAUgtECgAAQGqBSAEAAEgt/x/qY2bSZUAFiQAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "df_foursquare_POIS = pd.read_csv(os.path.join('data', 'foursquare', 'raw_POIs.txt'), \n", " sep='\\t',\n", @@ -686,7 +466,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -712,35 +492,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We are going to build the the networks for the three datasets as an undirected graph $M = (V, E)$, where $V$ is the set of nodes and $E$ is the set of edges. The nodes represent the users and the edges indicates that two individuals visited the same location at least once.\n", + "The construction of networks for the three datasets will be accomplished by representing them as an undirected graph $M = (V, E)$, with $V$ denoting the set of nodes and $E$ denoting the set of edges. The nodes will correspond to the users and the edges will indicate the presence of at least one instance where two individuals visited the same location.\n", "\n", - "The check-ins files of the three datasets are not in the form of a graph edge list, so we need to manipulate them. Let's have a look at the number of lines of each file." + "Since the check-ins files of the three datasets are not in the format of a graph edge list, it is necessary to manipulate them. Thus, we will examine the number of lines in each file." ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "gowalla\n", - "Number of lines: 83269\n", - "Number of unique elements: 3718\n", - "\n", - "brightkite\n", - "Number of lines: 391220\n", - "Number of unique elements: 8525\n", - "\n", - "foursquare\n", - "Number of lines: 125076\n", - "Number of unique elements: 2555\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "def count_lines_and_unique_elements(file):\n", " df = pd.read_csv(file, sep='\\t', header=None)\n", @@ -764,7 +525,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We would like to build a graph starting from an edge list. To do that, we are going to check, for each venue, all the users that visited it. Then, we will create an edge between each pair of users that visited the same venue (avoiding repetitions). This can be easily done in python, but it's going to be a bit slow (this is why we are considering sub-samples of the datasets). Let's see how to do it.\n", + "We want to construct a graph from an edge list. To accomplish this, we will examine the users that have visited each venue. Subsequently, we will establish an edge between every pair of users who have visited the same venue, while avoiding duplications. This process can be executed efficiently (algorithmically speaking) in Python, although it may entail a slow computational time due the nature of the language itself. To mitigate this issue, we are considering subsampling the data sets. The methodology for creating this graph is illustrated below in the Python code snippet.\n", "\n", "```python\n", "# let df be the dataframe [\"user_id\", \"venue_id\"] of the checkins\n", @@ -776,75 +537,16 @@ " G.add_edge(user1, user2)\n", "```\n", "\n", - "It the `utilis.py` module, we have a function that does exactly this called `create_graph_from_checkins`. It takes as input the name of the dataset and returns a networkx graph object. By default it will also write the edge list to a file in the respective dataset folder. The options are\n", + "The code makes use of a dataframe, `df`, which contains the `user_id` and `venue_id` information for each check-in. The code first groups the check-ins by the `venue_id` and applies a set function to the `user_id` values. Then, the code iterates through each set of users that visited the same venue and adds an edge between every pair of users.\n", "\n", - "- `brightkite`\n", - "- `gowalla`\n", - "- `foursquare`\n", - "\n", - "Let's see how it works:" + "I have included a function in the `utils.py` module that performs this process automatically. The function, named `create_graph_from_checkins`, takes as input the name of the data set and returns a graph object in the NetworkX library. By default, this function also writes the edge list to a file in the respective data set folder. The available options for the input data set are \"brightkite\", \"gowalla\", and \"foursquare\". An example of how to use this function is shown below." ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Creating the graph for the dataset brightkite...\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 84831/84831 [00:00<00:00, 310654.33it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Done! The graph has 292973 edges and 6493 nodes\n", - "\n", - "Creating the graph for the dataset gowalla...\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 31095/31095 [00:00<00:00, 325535.48it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Done! The graph has 62790 edges and 3073 nodes\n", - "\n", - "Creating the graph for the dataset foursquare...\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 40650/40650 [00:00<00:00, 145251.93it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Done! The graph has 246702 edges and 2324 nodes\n" - ] - } - ], + "outputs": [], "source": [ "G_brighkite_checkins = create_graph_from_checkins('brightkite')\n", "G_brighkite_checkins.name = 'Brightkite Checkins Graph'\n", @@ -863,34 +565,21 @@ "source": [ "### Friendship network\n", "\n", - "Now we want to create a graph where two users are connected if they are friends in the social network. We are intending the concept of friendship in a \"facebook way\", not a \"twitter way\". Less empirically, the graphs is not going to be directed and the edges are not going to be weighted. A user can't be friend with himself, and can't be friend with a user without the user being friend with him.\n", "\n", - "Since we filtered the checkins for foursquare and gowalla, we are considering only the users that are also present in the check-ins graph. We can build this graph with the function `create_friendships_graph` in the `utils.py` module. It takes as input the name of the dataset and returns a networkx graph object. By default it will also write the edge list to a file in the respective dataset folder. The options are\n", + "We want to construct a friendship graph that represents the relationships between users in a social network. The concept of friendship will be modeled in accordance with the paradigm of Facebook, as opposed to Twitter. Consequently, the graph will be undirected and edges will not be weighted. Moreover, it is imperative to note that a user cannot be friends with himself, nor can he be friends with another user if the latter is not friends with him.\n", "\n", - "- `brightkite`\n", - "- `gowalla`\n", - "- `foursquare`\n", + "The friendship graph will be generated using the function `create_friendships_graph` located in the `utils.py` module. The function takes as input the name of the dataset and returns a networkx graph object. By default, the edge list will also be written to a file within the respective dataset folder. The available options for the input dataset are _brightkite_, _gowalla_, and _foursquare_.\n", "\n", - "> **NOTE:** This functions is implemented without the necessity of the checkins graphs being loaded in memory, it uses the edge list file. This choice was made since someone may want to perform some analysis only on the friendship network and so there is no need to load the checkins graph and waste memory. Furthermore, networkx is tremendously slow when loading a graph from an edge list file.\n", + "> It is worth mentioning that this function has been implemented in a manner that does not require the checkins graph to be loaded in memory. Instead, it utilizes the edge list file. This was done with the consideration that some users may only perform analysis on the friendship network, and as such, there is no need to load the checkins graph and waste memory. Furthermore, networkx has been observed to be significantly slow when loading a graph from an edge list file.\n", "\n", - "Let's see how it works:" + "In conclusion, the implementation and usage of the create_friendships_graph function is demonstrated as follows:" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Computation done for Brightkite friendship graph\n", - "Computation done for Gowalla friendship graph\n", - "Computation done for Foursquare friendship graph\n" - ] - } - ], + "outputs": [], "source": [ "G_brighkite_friends = create_friendships_graph('brightkite')\n", "print(\"Computation done for Brightkite friendship graph\")\n", @@ -917,28 +606,9 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Brightkite Friendship Graph\n", - "Number of nodes: 5420\n", - "Number of edges: 14690\n", - "\n", - "Gowalla Friendship Graph\n", - "Number of nodes: 2294\n", - "Number of edges: 5548\n", - "\n", - "Foursquare Friendship Graph\n", - "Number of nodes: 1397\n", - "Number of edges: 5323\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "for G in [G_brighkite_friends, G_gowalla_friends, G_foursquare_friends]:\n", " print(G.name)\n", @@ -952,26 +622,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This networks are more abstract then the one observed before, there is no geographical information. We can try to plot them introducing a gravity (in the Newtonian sense) model and see how to the nodes interacts between them. Since the plot will be displayed on a web page as an html file, we need to sample them a lot. This won't give us a precise representation of the network, but it will give us a general idea of how the nodes are distributed. We are going to take a subsample of about 1000 nodes, considering only the largest connected component. \n", + "The networks under investigation are more abstract than previously observed networks as they lack geographical information. To gain insight into their structure, we can use a Newtonian gravity model to examine the interactions between the nodes. Given that the plot will be presented on a web page in the form of an html file, it is necessary to sample the network extensively. Although this process will not provide an exact representation of the network, it will provide a general understanding of the distribution of nodes. To achieve this, we will use a subsample of approximately 1000 nodes from the largest connected component. \n", "\n", - "We can do that with function `visualize_graphs` in the `utils.py` module. It takes as input a netowrkx graph object, a `k` percentage of nodes to remove and a `connected` boolean that indicates if we want to consider only the largest connected component. By default `k` is set to take a subsample of about 1000 nodes and `connected` is set to `True`. It returns a .html file that can be opened in a browser. All the files will be downloaded in the `html_graphs` folder." + "This task can be performed through the `visualize_graphs` function in the `utils.py` module. The function requires as inputs a networkx graph object, a `k` percentage of nodes to remove, and a `connected` boolean that specifies whether to only consider the largest connected component. By default, `k` is set to obtain a subsample of around 1000 nodes, and connected is set to `True`. The function outputs an html file that can be opened in a web browser. All files will be downloaded to the `html_graphs` folder." ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The graph has been saved in the folder html_graphs with the name brightkite_friendship_graph.html\n", - "The graph has been saved in the folder html_graphs with the name gowalla_friendship_graph.html\n", - "The graph has been saved in the folder html_graphs with the name foursquare_friendship_graph.html\n" - ] - } - ], + "outputs": [], "source": [ "friendships_graph = [G_brighkite_friends, G_gowalla_friends, G_foursquare_friends]\n", "\n", @@ -990,7 +650,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Then we can open the file in a browser and see the result. On a unix environment, if there is firefox installed, we can do that with the following command\n", + "On a unix environment, if firefox is installed, we visualize them by running the following command:\n", "\n", "```bash\n", "firefox html_graphs/*.html\n", @@ -1012,16 +672,14 @@ "source": [ "# Properties of the networks\n", "\n", - "To help us visualize the results of our analysis we can create a dataframe and fill it with all the information that we will retrive from our networks in this section.\n", + "In order to effectively visualize the outcomes of our analysis, we will construct a dataframe that encapsulates all the information retrieved from the networks under examination. It should be noted that the full networks, despite having undergone filtering, are still substantial in size, which results in prolonged execution times for the functions utilized. To mitigate this issue, we will take sub-samples. It is important to keep in mind that the accuracy of the results is proportional to the size of the sample utilized.\n", "\n", - "As we'll see in the cells below, the full networks are very big, even after the filtering that we did. This leads to long run times for the functions that we are going to use. To avoid this, we are going to use a sub-sample of the networks. Consider that depending on how much we want to sample, our results will be more or less accurate. \n", - "\n", - "What I suggest to do while reviewing this notebook is to use higher values for the sampling rate, so that you can see the results faster. This will give you a general idea of how the implemented functions work. Then, at the end of this section I have provided a link from my GitHub repository where you can download the results obtained with very low sampling rates. In this way you can test the functions with mock-networks and see if they work as expected, then we can proceed with the analysis using the more accurate results that required more time to compute." + "In light of these considerations, I recommend conducting an initial review of the notebook with higher values of the sampling rate to expedite the display of the results and gain an understanding of the functionality of the implemented functions. At the end of this section I provided a link to my GitHub repository, where the results obtained through lower sampling rates can be downloaded. This approach allows for a preliminary assessment of the functionality of the functions with mock-networks, before proceeding with the analysis using the more precise results that necessitate longer computation times." ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1033,149 +691,9 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
GraphNumber of NodesNumber of EdgesAverage DegreeAverage Clustering Coefficientlog NAverage Shortest Path Lengthbetweenness centralityomega-coefficient
0Brightkite Checkins Graph6493292973NaNNaN8.778480NaNNaNNaN
1Gowalla Checkins Graph307362790NaNNaN8.030410NaNNaNNaN
2Foursquare Checkins Graph2324246702NaNNaN7.751045NaNNaNNaN
3Brightkite Friendship Graph15001170NaNNaN7.313220NaNNaNNaN
4Gowalla Friendship Graph15002300NaNNaN7.313220NaNNaNNaN
5Foursquare Friendship Graph13975323NaNNaN7.242082NaNNaNNaN
\n", - "
" - ], - "text/plain": [ - " Graph Number of Nodes Number of Edges Average Degree \\\n", - "0 Brightkite Checkins Graph 6493 292973 NaN \n", - "1 Gowalla Checkins Graph 3073 62790 NaN \n", - "2 Foursquare Checkins Graph 2324 246702 NaN \n", - "3 Brightkite Friendship Graph 1500 1170 NaN \n", - "4 Gowalla Friendship Graph 1500 2300 NaN \n", - "5 Foursquare Friendship Graph 1397 5323 NaN \n", - "\n", - " Average Clustering Coefficient log N Average Shortest Path Length \\\n", - "0 NaN 8.778480 NaN \n", - "1 NaN 8.030410 NaN \n", - "2 NaN 7.751045 NaN \n", - "3 NaN 7.313220 NaN \n", - "4 NaN 7.313220 NaN \n", - "5 NaN 7.242082 NaN \n", - "\n", - " betweenness centrality omega-coefficient \n", - "0 NaN NaN \n", - "1 NaN NaN \n", - "2 NaN NaN \n", - "3 NaN NaN \n", - "4 NaN NaN \n", - "5 NaN NaN " - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "analysis_results = pd.DataFrame(columns=['Graph', 'Number of Nodes', 'Number of Edges', 'Average Degree', 'Average Clustering Coefficient', 'log N', 'Average Shortest Path Length', 'betweenness centrality', 'omega-coefficient'], index=None)\n", "\n", @@ -1197,93 +715,14 @@ "source": [ "## Average Degree\n", "\n", - "The degree of a node is the number of links connected to it. The average degree alone, is not very useful for our future analysis, so we won't spend much time about it. In the next section we will see that the degree distribution is a much more useful measure.\n", - "\n", - "The degree distribution, $P(k)$, is the fraction of sites having degree $k$. We know from the literature that many real networks do not exhibit a Poisson degree distribution, as predicted in the ER model. In fact, many of them exhibit a distribution with a long, power-law, tail, $P(k) \\sim k^{-\\gamma}$ with some $γ$, usually between $2$ and $3$.\n", - "\n", - "For know, we will just compute the average degree of our networks and add it to the dataframe." + "The concept of degree refers to the number of links that are connected to a particular node. While the average degree is a basic measure, it is not deemed to be of significant utility for our upcoming analysis, thus it will not be given extensive consideration. In contrast, the degree distribution, represented by $P(k)$, which represents the proportion of nodes that have a degree of $k$, is deemed to be a more meaningful metric. The literature on network analysis indicates that real-world networks often do not adhere to the Poisson degree distribution that is predicted by the ER model. Instead, many networks exhibit a degree distribution with a long-tailed, power-law distribution, such that $P(k) \\sim k^{-\\gamma}$, with a value of $\\gamma$ typically ranging from $2$ to $3$." ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
GraphAverage Degree
0Brightkite Checkins Graph90.242723
1Gowalla Checkins Graph40.865604
2Foursquare Checkins Graph212.30809
3Brightkite Friendship Graph1.56
4Gowalla Friendship Graph3.066667
5Foursquare Friendship Graph7.620616
\n", - "
" - ], - "text/plain": [ - " Graph Average Degree\n", - "0 Brightkite Checkins Graph 90.242723\n", - "1 Gowalla Checkins Graph 40.865604\n", - "2 Foursquare Checkins Graph 212.30809\n", - "3 Brightkite Friendship Graph 1.56\n", - "4 Gowalla Friendship Graph 3.066667\n", - "5 Foursquare Friendship Graph 7.620616" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "for G in graphs_all:\n", " avg_deg = np.mean([d for n, d in G.degree()])\n", @@ -1299,161 +738,36 @@ "source": [ "## Clustering coefficient\n", "\n", - "The clustering coefficient is usually related to a community represented by local structures. The usual definition of clustering is related to the number of triangles in the network. The clustering is high if two nodes sharing a neighbor have a high probability of being connected to each other. There are two common definitions of clustering. The first is global,\n", + "The Clustering Coefficient `[2]` refers to the concept of communities represented by local structures in a network. This notion is generally related to the number of triangles present in the network and considered high when two nodes sharing a common neighbor exhibit a high probability of being connected. There are two commonly accepted definitions of clustering: the global definition and the local definition.\n", + "\n", + "The global definition of clustering is expressed mathematically as follows:\n", "\n", "$$ C = \\frac{3 \\times \\text{the number of triangles in the network}}{\\text{the number of connected triples of vertices}}$$\n", "\n", - "where a “connected triple” means a single vertex with edges running to an unordered\n", - "pair of other vertices. \n", + "where a “connected triple” represents a vertex with edges connecting to an unordered pair of other vertices.\n", "\n", - "A second definition of clustering is based on the average of the clustering for single nodes. The clustering for a single node is the fraction of pairs of its linked neighbors out of the total number of pairs of its neighbors:\n", + "The local definition of clustering, on the other hand, is based on the average of the clustering coefficient of individual nodes. The clustering coefficient for a single node is defined as the fraction of pairs of its linked neighbors to the total number of pairs of its neighbors. This relationship can be mathematically represented as:\n", "\n", - "\\begin{equation}\n", - " C_i = \\frac{\\text{the number of triangles connected to vertex }i}{\\text{the number of triples centered on vertex } i}\n", - "\\end{equation}\n", + "$$ C_i = \\frac{\\text{the number of triangles connected to vertex }i}{\\text{the number of triples centered on vertex } i} $$\n", "\n", - "For vertices with degree $0$ or $1$, for which both numerator and denominator are zero, we use $C_i = 0$. Then the clustering coefficient for the whole network is the average\n", + "For vertices with degree $0$ or $1$, the numerator and denominator of the equation are both equal to zero, and in such cases, $C_i = 0$. The clustering coefficient for the whole network is then obtained as the average of $C_i$ as expressed in the equation below:\n", "\n", - "\\begin{equation}\n", - " C = \\frac{1}{n} \\sum_{i} C_i\n", - "\\end{equation}\n", + "$$ C = \\frac{1}{n} \\sum_{i} C_i $$\n", "\n", - "In both cases the clustering is in the range $0 \\leq C \\leq 1$. \n", + "It is important to note that the clustering coefficient is always in the range of $0 \\leq C \\leq 1$. In random graph models such as the ER model and the configuration model, the clustering coefficient is low and decreases to zero as the network size increases. This is also observed in many growing network models. However, many real-world networks exhibit a high clustering coefficient that remains constant even for large network sizes.\n", "\n", - "In random graph models such as the ER model and the configuration model, the clustering coefficient is low and decreases to $0$ as the system size increases. This is also the situation in many growing network models. However, in many real-world networks the clustering coefficient is rather high and remains constant for large network sizes. \n", - "\n", - "> This observation led to the introduction of the small-world model, which offers a combination of a regular lattice with high clustering and a random graph. \n", + "> This phenomenon led to the introduction of the small-world model `[3]`, which combines the properties of a regular lattice with high clustering and a random graph.\n", "\n", "---\n", "\n", - "The library `networkx` provides a function to compute the clustering coefficient of a graph. In particular, the function `average_clustering` computes the average clustering coefficient of a graph. \n", - "\n", - "" + "The library `networkx` provides a function to compute the clustering coefficient of a graph." ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Computing average clustering coefficient for the Brightkite Checkins Graph...\n", - "\tAverage clustering coefficient: 0.7139988006862793\n", - "\tCPU time: 14.0 seconds\n", - "\n", - "Computing average clustering coefficient for the Gowalla Checkins Graph...\n", - "\tAverage clustering coefficient: 0.5483724940778376\n", - "\tCPU time: 1.6 seconds\n", - "\n", - "Computing average clustering coefficient for the Foursquare Checkins Graph...\n", - "\tAverage clustering coefficient: 0.6527297407924693\n", - "\tCPU time: 18.1 seconds\n", - "\n", - "Computing average clustering coefficient for the Brightkite Friendship Graph...\n", - "\tAverage clustering coefficient: 0.07467551661322992\n", - "\tCPU time: 0.0 seconds\n", - "\n", - "Computing average clustering coefficient for the Gowalla Friendship Graph...\n", - "\tAverage clustering coefficient: 0.16751554817943182\n", - "\tCPU time: 0.0 seconds\n", - "\n", - "Computing average clustering coefficient for the Foursquare Friendship Graph...\n", - "\tAverage clustering coefficient: 0.18348521948916247\n", - "\tCPU time: 0.0 seconds\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
GraphAverage Clustering Coefficient
0Brightkite Checkins Graph0.713999
1Gowalla Checkins Graph0.548372
2Foursquare Checkins Graph0.65273
3Brightkite Friendship Graph0.074676
4Gowalla Friendship Graph0.167516
5Foursquare Friendship Graph0.183485
\n", - "
" - ], - "text/plain": [ - " Graph Average Clustering Coefficient\n", - "0 Brightkite Checkins Graph 0.713999\n", - "1 Gowalla Checkins Graph 0.548372\n", - "2 Foursquare Checkins Graph 0.65273\n", - "3 Brightkite Friendship Graph 0.074676\n", - "4 Gowalla Friendship Graph 0.167516\n", - "5 Foursquare Friendship Graph 0.183485" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "for graph in graphs_all:\n", " print(\"\\nComputing average clustering coefficient for the {}...\".format(graph.name))\n", @@ -1474,32 +788,19 @@ "source": [ "## Average Path Length\n", "\n", - "Since we are considering our networks as _not_ embedded in real space (even if we could theoretically), the geometrical distance between nodes is meaningless. The most important distance measure in such networks is the minimal number of hops (or chemical distance). That is, the distance between two nodes in the network is defined as the number of edges in the shortest path between them. \n", + "In the context of our network analysis, it is important to note that networks are not embedded in physical space and thus, the geometrical distance between nodes becomes irrelevant. Instead, the most pertinent measure of distance in such networks is the minimal number of hops, also known as the chemical distance. This distance between two nodes is defined as the number of edges in the shortest path connecting the nodes.\n", "\n", "--- \n", "\n", - "The `networkx` library provides a function to compute the average shortest path length of a graph. In particular, the function `average_shortest_path_length` computes the average shortest path length of a graph. Unfortunately, as always, there are some limitations. The function can only be applied to connected graphs and since we are taking sub-samples of our datasets, there is a probability that the sub-sample is not connected. Another problem is that this operation is very expensive! The shortest path length is defined as\n", + "The `networkx` library offers the `average_shortest_path_length` function to calculate the average shortest path length of a graph. However, there are certain limitations to this function. It is only applicable to connected graphs and there is a chance that the subsample of the dataset used may not be connected. Additionally, this operation can be computationally expensive. The average shortest path length is calculated using the formula:\n", "\n", "$$ a = \\sum_{s \\in V} \\sum_{t \\in V} \\frac{d(s,t)}{n(n-1)} $$\n", "\n", - "Where $V$ is the set of nodes in the graph, $n$ is the number of nodes in the graph, and $d(s,t)$ is the shortest path length between nodes $s$ and $t$. The default (that we are going to use) algorithm to compute the shortest path length is the Dijkstra algorithm. \n", - "\n", - "Since we are interested in the average shortest path length of all our connected components, for each node we need to run the Dijkstra algorithm on all the other nodes. Given the dimensions of our datasets and the slowness of networkx, computing the average shortest path length of the whole graph is not feasible.\n", - "\n", - "To overcome this problem, we can use the `average_shortest_path` function from the `utils` module to compute the average shortest path length on a random sub-sample of the graph. The functions takes as input:\n", - "\n", - "- `G: networkx graph object`: the graph on which we want to compute the average shortest path length\n", - "- `k: int (default=None)`: percentage of nodes to remove from the graph. If k is None, the average shortest path length of each connected component is computed using all the nodes of the connected component.\n", - "\n", - "And returns:\n", - "\n", - "- `float`: the average shortest path length of the graph\n", - "\n", - "The implementation is very straightforward. First we remove a random sub-sample of nodes from the graph. Then we create a list with all the connected components of the sub-sampled graph with at least 10 nodes and finally we compute the average shortest path length using the networkx function `average_shortest_path_length`. The choice of 10 nodes is arbitrary and based on empirical observations. We do that to avoid creating small communities with a very low average shortest path length that could bias our results.\n", - "\n", - "Depending on the machine and the time available, we can choose different values for `k`. Lower values will give us a more precise result, but will take longer to compute. On the other hand, higher values will give us a less precise result, but will be faster to compute. However, this time this is not a too much time consuming operation. So if we are willing to wait a bit, I suggest to use `k=None` and test it one the whole graph.\n", + "where $V$ represents the set of nodes in the graph, $n$ represents the number of nodes, and $d(s,t)$ is the shortest path length between nodes $s$ and $t$. The default algorithm used to calculate the shortest path length is the Dijkstra algorithm.\n", "\n", + "Given the size of the datasets, computing the average shortest path length for the entire graph is not feasible. To overcome this, we can use the `average_shortest_path` function from the utils module to compute the average shortest path length of a random subsample of the graph. This function requires the input of the networkx graph object and an optional parameter `k` which represents the percentage of nodes to remove from the graph. If `k` is set to None, the average shortest path length of each connected component is calculated using all the nodes of the component. The function returns the average shortest path length of the graph.\n", "\n", + "The implementation involves first removing a random subsample of nodes from the graph, creating a list of connected components with at least 10 nodes, and then using the `average_shortest_path_length` function to calculate the average shortest path length. The choice of 10 nodes is arbitrary and based on empirical observations, as small communities with low average shortest path lengths can skew results. The value of `k` can be adjusted based on the available computing resources and time, with lower values providing more precise results but taking longer to compute and vice versa. However, in this case, the computation time is not overly excessive, so if we are willing to wait a few minutes, we can use the default value of `k` which is `None`.\n", "\n", "\n", " 8\u001b[0m \u001b[39mfor\u001b[39;00m graph \u001b[39min\u001b[39;00m graphs_all:\n\u001b[1;32m 9\u001b[0m G \u001b[39m=\u001b[39m create_random_graphs(graph, model\u001b[39m=\u001b[39mmodel_name, save \u001b[39m=\u001b[39m \u001b[39mFalse\u001b[39;00m)\n\u001b[1;32m 10\u001b[0m \u001b[39mprint\u001b[39m(\u001b[39m\"\u001b[39m\u001b[39mRandom graph created for \u001b[39m\u001b[39m\"\u001b[39m, graph\u001b[39m.\u001b[39mname, \u001b[39m\"\u001b[39m\u001b[39m\\n\u001b[39;00m\u001b[39mStarting computation of betweenness centrality...\u001b[39m\u001b[39m\"\u001b[39m)\n", - "\u001b[0;31mNameError\u001b[0m: name 'graphs_all' is not defined" - ] - } - ], + "outputs": [], "source": [ "# As said before, for a quick testing I suggest to use k=0.6 and at least k=0.4 for accurate results\n", "\n", @@ -16896,20 +1252,9 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABcIAAAPdCAYAAACp3hugAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAACtf0lEQVR4nOzdd5wV1f0//vfSlo6A0qSLUgREQREsgCjNXiKxINixIfZYiNhCjEaNFbFhRfzEGkWaCDGyKihgQyxBQQVRFLDR5/dHftyv61L2wq6r4/P5eNzHI/fMmTPvmZ25SV4ez+QkSZIEAAAAAACkVKmSLgAAAAAAAIqTIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAfsVGjhwZOTk5+T7bbLNNdO3aNZ599tnNHvf222+PkSNHFl2hZGXZsmVxzTXXRIcOHaJq1aqRm5sbjRs3jhNOOCHeeOONYj32I488EjfddFOxjd+4ceMYMGBA5vvHH38cOTk5+e63qVOnxtChQ2PJkiXFVsem3HLLLdGsWbMoV65c5OTkbLCWjdXauHHjOOCAA4q30CLStWvX6Nq162btO3To0MjJySnagtYjJycnhg4dWuzHKS6/lfth3X+vfPzxxxvtN2bMmA3+PXJycuLMM88s+uJ+hQp7vfh93RcA/DYJwgHgN+C+++6LvLy8mDp1aowYMSJKly4dBx54YPzrX//arPEE4SXno48+ip133jn++te/Rrdu3WLUqFExfvz4uOKKK+KLL76I9u3bx9KlS4vt+MUdhP9c3bp1Iy8vL/bff/9M29SpU+OKK64osSB85syZMWjQoOjWrVtMmjQp8vLyokqVKuvtW9K1FpXbb789br/99s3a96STToq8vLwirohfuzFjxsQVV1xR0mUAABSZMiVdAACwaa1bt44OHTpkvvfq1SuqV68eo0aNigMPPLAEKyMba9asiUMPPTS++uqryMvLi9atW2e2denSJfr37x/PP/98lC1btgSr/H/WrFkTq1evjtzc3M0eIzc3N3bfffcirGrLvfPOOxERcfLJJ8duu+1WwtUUrx9++CEqVqwYrVq12uwx6tevH/Xr1y/CqkrOuuvBb1OSJLF8+fKoUKFCSZfym+UZAOD3zIxwAPgNKl++fJQrV65AYLpy5cq4+uqro0WLFpGbmxvbbLNNHH/88fHll19m+jRu3DjeeeedmDJlSma5lcaNG0eSJFG7du0444wzMn3XrFkT1atXj1KlSsUXX3yRab/hhhuiTJky+WbJTp8+PQ466KCoUaNGlC9fPnbeeed47LHHCtS+cOHCOPXUU6N+/fpRrly5aNKkSVxxxRWxevXqTJ91y2lcf/31ccMNN0STJk2icuXK0alTp3jllVfyjTdgwICoXLlyfPjhh9GnT5+oXLlyNGjQIM4777xYsWJF1tcnImLSpEnRtWvXqFmzZlSoUCEaNmwYhx9+ePzwww+ZPnfccUfstNNOUbly5ahSpUq0aNEiLrnkko392eKpp56Kt956Ky6++OJ8IfhP9e7dO19I8cEHH8TRRx8dtWrVitzc3GjZsmXcdttt+faZPHly5OTkxKhRo+LSSy+NevXqRdWqVWPfffeNOXPmZPp17do1nnvuufjkk0/yLbfz02v+t7/9La6++upo0qRJ5ObmxosvvhjLly+P8847L9q1axfVqlWLGjVqRKdOneLpp5/e6Pn+dNx1/wbC0KFD44ILLoiIiCZNmmRqmDx5cpx44olRo0aNfNd5nX322Sd23HHHTR7v3nvvjZ122inKly8fNWrUiEMPPTRmz56d7xoce+yxERHRsWPHyMnJybeUy09trNafGjt2bOyyyy5RoUKFaNGiRdx7770FxirMfb8ha9eujb/97W+Z+7ZWrVpx3HHHxaeffpqvX9euXaN169bx73//Ozp37hwVK1aME044IbPt50ujfPrpp3HEEUdElSpVYquttopjjjkmpk2bVmApm/UtjbJuGZBNnfuXX34Zp59+erRq1SoqV64ctWrVin322SdeeumlTZ73hhS27nW/DW+99Vb06NEjqlSpEt27d4+IiAkTJsTBBx8c9evXj/Lly0ezZs3i1FNPja+++irfsdad+4wZM+Kwww6LqlWrRrVq1eLYY48t8LuxTmHuh/W54ooromPHjlGjRo2oWrVq7LLLLnHPPfdEkiT5+hX22kdEvPLKK7HHHntE+fLlo169enHxxRfHqlWrNlnLgAEDMr8zP/2t+PnyIA8++GC0bNkyKlasGDvttNN6l+wqzG/YhqxbamP48OHRsmXLyM3Njfvvv7/Er1e2z2ReXl507tw5KlSoEI0bN4777rsvIiKee+652GWXXaJixYrRpk2bGDt2bKGuyzvvvBM9evSIihUrxjbbbBNnnHFGPPfccwV+nzb2mzB69Ojo0aNH1K1bNypUqBAtW7aMP/3pT/H999/nO9a65+idd96J7t27R6VKlWKbbbaJM888c72/1RGFuy8AoEQkAMCv1n333ZdERPLKK68kq1atSlauXJnMnz8/GTRoUFKqVKlk7Nixmb5r1qxJevXqlVSqVCm54oorkgkTJiR33313su222yatWrVKfvjhhyRJkuSNN95ImjZtmuy8885JXl5ekpeXl7zxxhtJkiTJH//4x2SHHXbIjPnKK68kEZFUqFAhefjhhzPtvXv3TnbbbbfM90mTJiXlypVL9tprr2T06NHJ2LFjkwEDBiQRkdx3332ZfgsWLEgaNGiQNGrUKLnzzjuTiRMnJldddVWSm5ubDBgwINNv7ty5SUQkjRs3Tnr16pU89dRTyVNPPZW0adMmqV69erJkyZJM3/79+yflypVLWrZsmVx//fXJxIkTkz//+c9JTk5OcsUVV2R9febOnZuUL18+2W+//ZKnnnoqmTx5cvLwww8n/fr1S7755pskSZJk1KhRSUQkZ511VjJ+/Phk4sSJyfDhw5NBgwZt9O95yimnJBGRzJ49e5N/+yRJknfeeSepVq1a0qZNm+SBBx5Ixo8fn5x33nlJqVKlkqFDh2b6vfjii5nrdcwxxyTPPfdcMmrUqKRhw4bJ9ttvn6xevToz3h577JHUqVMn87fPy8vLd8233XbbpFu3bsk///nPZPz48cncuXOTJUuWJAMGDEgefPDBZNKkScnYsWOT888/PylVqlRy//3356u5UaNGSf/+/Qv8LdfdB/Pnz0/OOuusJCKSJ554IlPD0qVLk1mzZiURkdx1110FrkNEJLfddttGr9df/vKXJCKSo446KnnuueeSBx54IGnatGlSrVq15P3338+Mddlll2VqysvLSz788MP1jrexWteda/369ZNWrVolDzzwQDJu3LjkD3/4QxIRyZQpUzLjFPa+35B1982ZZ56ZjB07Nhk+fHiyzTbbJA0aNEi+/PLLTL8uXbokNWrUSBo0aJDccsstyYsvvpipo0uXLkmXLl0yfb/77rukWbNmSY0aNZLbbrstGTduXHLOOeckTZo0KfDcXn755cnP/29DYc/9vffeS0477bTk0UcfTSZPnpw8++yzyYknnpiUKlUqefHFF/ONGRHJ5ZdfvtFrkU3d/fv3T8qWLZs0btw4GTZsWPLCCy8k48aNS5IkSe64445k2LBhyTPPPJNMmTIluf/++5Oddtopad68ebJy5coC596oUaPkggsuSMaNG5fccMMNSaVKlZKdd945X9/CXpMNGTBgQHLPPfckEyZMSCZMmJBcddVVSYUKFfL9jmVznHfeeSepWLFi0qpVq2TUqFHJ008/nfTs2TNp2LBhEhHJ3LlzN1jLhx9+mBxxxBFJROT7rVi+fHmSJEnm92a33XZLHnvssWTMmDFJ165dkzJlyiQfffRRvhoK8xu2Iet+k9q2bZs88sgjyaRJk5K33367xK9XNs9kzZo1k+bNmyf33HNPMm7cuOSAAw5IIiK54oorkjZt2iSjRo1KxowZk+y+++5Jbm5u8tlnn230mnz++edJzZo1k4YNGyYjR45MxowZk/Tr1y9p3LhxEhH5nquN/SZcddVVyY033pg899xzyeTJk5Phw4cnTZo0Sbp165bveOv+O7Zhw4bJNddck4wfPz4ZOnRoUqZMmeSAAw4o8PcqzH0BACVFEA4Av2LrgvCff3Jzc5Pbb789X9914ezjjz+er33atGlJROTrv+OOO+YLxda5++67k4hI5s2blyRJklx99dVJixYtkoMOOig5/vjjkyRJkpUrVyaVKlVKLrnkksx+LVq0SHbeeedk1apV+cY74IADkrp16yZr1qxJkiRJTj311KRy5crJJ598kq/f9ddfn0RE8s477yRJ8v/C0zZt2mRC3CRJktdeey2JiGTUqFGZtv79+ycRkTz22GP5xuzTp0/SvHnzrK/PP//5zyQikpkzZxa4PuuceeaZyVZbbbXB7RvSq1evJCIyYdKm9OzZM6lfv34meP3p8cuXL598/fXXSZL8vyC8T58++fo99thjmSBrnf333z9p1KhRgWOtu+bbbbddvnBvfVavXp2sWrUqOfHEE5Odd94537ZNBeFJkiTXXXfdBoO4Ll26JO3atcvXdtpppyVVq1ZNvv322w3W9M033yQVKlQocA3mzZuX5ObmJkcffXSmbd1zNW3atI2e56ZqbdSoUVK+fPl89/OPP/6Y1KhRIzn11FMzbYW979dn9uzZSUQkp59+er72V199NYmIfM9hly5dkohIXnjhhQLj/DwIv+2225KISJ5//vl8/U499dRCB+GFOfefW3fvdO/ePTn00EPzbStMEJ5N3et+G+69996Njrl27dpk1apVySeffJJERPL0009ntq0793POOSffPg8//HASEclDDz2Uadvca7I+a9asSVatWpVceeWVSc2aNZO1a9dmfZy+ffsmFSpUSBYuXJhpW716ddKiRYtNBuFJkiRnnHFGgb/7OhGR1K5dO1m2bFmmbeHChUmpUqWSYcOGZdoK+xu2IRGRVKtWbZP9fsnrtTnP5PTp0zNtixcvTkqXLp1UqFAhX+g9c+bMJCKSm2++eaPnesEFFyQ5OTkFfjd69uy53iB8Q78JP7XuGZgyZUoSEcmsWbMy29Y9R//4xz/y7XPNNdckEZH85z//ybQV9r4AgJJiaRQA+A144IEHYtq0aTFt2rR4/vnno3///nHGGWfErbfemunz7LPPxlZbbRUHHnhgrF69OvNp165d1KlTp8ByDuuz7777RkTExIkTI+J/ywfst99+se+++8aECRMiIiIvLy++//77TN8PP/ww3nvvvTjmmGMiIvIdu0+fPrFgwYLM8hzPPvtsdOvWLerVq5evX+/evSMiYsqUKfnq2X///aN06dKZ723bto2IiE8++SRfv5ycnAJrpbdt2zZfv8Jen3bt2kW5cuXilFNOifvvvz/++9//FrhOu+22WyxZsiSOOuqoePrppwssp1AUli9fHi+88EIceuihUbFixQLXdfny5QWWiTnooIMKXIOIgtdrYw466KD1rlH+f//3f7HHHntE5cqVo0yZMlG2bNm455578i07UhTOPvvsmDlzZrz88ssREbFs2bJ48MEHo3///lG5cuUN7peXlxc//vhjgWVOGjRoEPvss0+88MILRVrnOu3atYuGDRtmvpcvXz522GGHAvdeNvf9T7344osREQXOa7fddouWLVsWOK/q1avHPvvss8m6p0yZElWqVIlevXrlaz/qqKM2ue86hTn3iIjhw4fHLrvsEuXLl8/cOy+88MJm3TubU/fhhx9eoG3RokUxcODAaNCgQaamRo0aRUSst651v2/rHHnkkVGmTJnM32edwl6T9Zk0aVLsu+++Ua1atShdunSULVs2/vznP8fixYtj0aJFWR/nxRdfjO7du0ft2rUzbaVLl46+fftuspbC6NatW76XzNauXTtq1aqVqWFzfsPWZ5999onq1asXaC+p65XtM1m3bt1o37595nuNGjWiVq1a0a5du6hXr16mvWXLlhGx6d/rKVOmROvWrQus+7+hZ2BDvwn//e9/4+ijj446depkrl+XLl0ionDPwNFHHx0RUeAZ2NR9AQAlSRAOAL8BLVu2jA4dOkSHDh2iV69eceedd0aPHj3iwgsvzKzT/cUXX8SSJUsya4f/9LNw4cJChbWNGjWK7bbbLiZOnBg//PBD5OXlZYLwTz/9NObMmRMTJ06MChUqROfOnTPHjYg4//zzCxz39NNPj4jIHPuLL76If/3rXwX6rVv7+ec11qxZM9/3dS9t/PHHH/O1V6xYMcqXL1+g7/LlyzPfC3t91p1/rVq14owzzojtttsutttuu/jHP/6RGatfv35x7733xieffBKHH3541KpVKzp27Jj5hwUbsi6ImTt37kb7RUQsXrw4Vq9eHbfcckuBevv06bNF12tj6tatW6DtiSeeiCOPPDK23XbbeOihhyIvLy+mTZsWJ5xwQr5rXBQOPvjgaNy4cWYN4ZEjR8b333+fb+369Vm8ePEG669Xr15me1H7+TWP+N91/+k1z/a+/6lsz2t9/TY07k8Dv3XW17YhhTn3G264IU477bTo2LFjPP744/HKK6/EtGnTolevXlndl5tbd8WKFaNq1ar52tauXRs9evSIJ554Ii688MJ44YUX4rXXXsuEsuurq06dOvm+lylTJmrWrFng+hfmmqzPa6+9Fj169IiIiLvuuitefvnlmDZtWlx66aXrrakwx1m8eHGButd3LptrUzVszm/Y+qzvni7J65XtM1mjRo0C/cqVK1egvVy5chERm/xNzfYZWF+d3333Xey1117x6quvxtVXXx2TJ0+OadOmxRNPPBERBa/fuvv9p9Zdl6J6BgDgl1CmpAsAADZP27ZtY9y4cfH+++/HbrvtFltvvXXUrFlzgy/b+ukMrY3p3r17PP300zFlypRYu3ZtdO3aNapUqRL16tWLCRMmxMSJE2OvvfbKhKxbb711RERcfPHFcdhhh613zObNm2f6tm3bNq655pr19vvp7Liils312WuvvWKvvfaKNWvWxPTp0+OWW26JwYMHR+3ateOPf/xjREQcf/zxcfzxx8f3338f//73v+Pyyy+PAw44IN5///3MzNKf69mzZ4wYMSKeeuqp+NOf/rTReqtXrx6lS5eOfv36bTAEbtKkSWFOPSs/fyliRMRDDz0UTZo0idGjR+fb/vOXkRaFUqVKxRlnnBGXXHJJ/P3vf4/bb789unfvnrmHNmRd+LJgwYIC2z7//PPMfVoStuS+/+l51a9fP9+29Z3X+v5+Gxr3tddeK9C+cOHCQu1fWA899FB07do17rjjjnzt33777WaNl23d67seb7/9dsyaNStGjhwZ/fv3z7R/+OGHGzzuwoULY9ttt818X716dSxevHi9od/mePTRR6Ns2bLx7LPP5vuHek899dRmj1mzZs31Xpei/htvSFH9hq3vb1iS1yvbZ7Ko1axZM9/Lq9fJ5hmYNGlSfP755zF58uTMLPCIyPcC7J9a3/2+7nhF9QwAwC9BEA4Av1EzZ86MiIhtttkmIiIOOOCAePTRR2PNmjXRsWPHje67sdlZ++67b4wYMSJuuumm2H333TMBcffu3ePJJ5+MadOmxV/+8pdM/+bNm8f2228fs2bNyte+PgcccECMGTMmtttuu/X+q+7FKZvrs07p0qWjY8eO0aJFi3j44YfjjTfeyATh61SqVCl69+4dK1eujEMOOSTeeeedDQbhBx98cLRp0yaGDRsWBxxwQLRu3bpAn3HjxsVee+0VFStWjG7dusWMGTOibdu2mdmCW2pzZubl5OREuXLl8gUqCxcujKeffnqza4jY8Ez1k046KYYOHRrHHHNMzJkzJ6699tpNjtmpU6eoUKFCPPTQQ/GHP/wh0/7pp5/GpEmT4ogjjiiWWgtjS+77dUsaPPTQQ7Hrrrtm2qdNmxazZ8/OzIDNVpcuXeKxxx6L559/PrNES8T/AsailJOTk7mG67z55puRl5cXDRo0yHq8oqh73X3887ruvPPODe7z8MMP51ve4rHHHovVq1dH165dC33cTdVUpkyZfEtB/fjjj/Hggw9u9pjdunWLZ555Jr744ovMbOE1a9bE6NGjC7X/T+/9ChUqZH384voNiyjZ61Vcz2RhdenSJa6//vp499138y2P8ks8A4MGDcp8f+SRRyIiiuwZAIBfgiAcAH4D3n777Vi9enVE/O9fQ37iiSdiwoQJceihh2Zm1P3xj3+Mhx9+OPr06RNnn3127LbbblG2bNn49NNP48UXX4yDDz44Dj300IiIaNOmTTz66KMxevToaNq0aZQvXz7atGkTEf/7P/k5OTkxfvz4uOKKKzI17LvvvpnZk+vWB1/nzjvvjN69e0fPnj1jwIABse2228bXX38ds2fPjjfeeCP+7//+LyIirrzyypgwYUJ07tw5Bg0aFM2bN4/ly5fHxx9/HGPGjInhw4cXmGFXVAp7fYYPHx6TJk2K/fffPxo2bBjLly+Pe++9N995n3zyyVGhQoXYY489om7durFw4cIYNmxYVKtWLV8w8nOlS5eOJ598Mnr06BGdOnWK0047Lbp16xaVKlWKTz75JP75z3/Gv/71r/jmm28iIuIf//hH7LnnnrHXXnvFaaedFo0bN45vv/02Pvzww/jXv/4VkyZNyvo6tGnTJp544om44447on379lGqVKno0KHDRvc54IAD4oknnojTTz89jjjiiJg/f35cddVVUbdu3fjggw82q4Z159e/f/8oW7ZsNG/ePPMPXbbaaqs47rjj4o477ohGjRoVWP99fbbaaqsYMmRIXHLJJXHcccfFUUcdFYsXL44rrrgiypcvH5dffnnWdRam1sLYkvu+efPmccopp8Qtt9wSpUqVit69e8fHH38cQ4YMiQYNGsQ555yzWefVv3//uPHGG+PYY4+Nq6++Opo1axbPP/98jBs3LiL+NzO/KBxwwAFx1VVXxeWXXx5dunSJOXPmxJVXXhlNmjTJ/Kb90nW3aNEitttuu/jTn/4USZJEjRo14l//+tdGlzZ64oknokyZMrHffvvFO++8E0OGDImddtopjjzyyKzPYX3233//uOGGG+Loo4+OU045JRYvXhzXX399gaAyG5dddlk888wzsc8++8Sf//znqFixYtx2223x/fffF2r/dff+tddeG717947SpUtnHWgXx29YRMler+J6Jgtr8ODBce+990bv3r3jyiuvjNq1a8cjjzwS7733XkQU7hno3LlzVK9ePQYOHBiXX355lC1bNh5++OGYNWvWevuXK1cu/v73v8d3330Xu+66a0ydOjWuvvrq6N27d+y5555Fen4AUKxK+m2dAMCG3XfffUlE5PtUq1YtadeuXXLDDTcky5cvz9d/1apVyfXXX5/stNNOSfny5ZPKlSsnLVq0SE499dTkgw8+yPT7+OOPkx49eiRVqlRJIiJp1KhRvnF23nnnJCKSl19+OdP22WefJRGR1KxZM1m7dm2BWmfNmpUceeSRSa1atZKyZcsmderUSfbZZ59k+PDh+fp9+eWXyaBBg5ImTZokZcuWTWrUqJG0b98+ufTSS5PvvvsuSZIkmTt3bhIRyXXXXVfgOBGRXH755Znv/fv3TypVqlSg3+WXX578/H/qFOb65OXlJYceemjSqFGjJDc3N6lZs2bSpUuX5JlnnsmMc//99yfdunVLateunZQrVy6pV69ecuSRRyZvvvlmgTrWZ8mSJclVV12V7LLLLknlypWTsmXLJg0bNkyOPfbYfNd83bU44YQTkm233TYpW7Zsss022ySdO3dOrr766kyfF198MYmI5P/+7/8K7BsRyX333Zdp+/rrr5Mjjjgi2WqrrZKcnJzMNdrYNU+SJPnrX/+aNG7cOMnNzU1atmyZ3HXXXeu9xo0aNUr69++/0RqSJEkuvvjipF69ekmpUqWSiEhefPHFfNsnT56cRETy17/+dWOXsoC77747adu2bVKuXLmkWrVqycEHH5y88847+fqse66mTZtWqDE3VGujRo2S/fffv0D/Ll26JF26dMnXVpj7fkPWrFmTXHvttckOO+yQlC1bNtl6662TY489Npk/f36B4+64447rHWN9Nc2bNy857LDDksqVKydVqlRJDj/88GTMmDFJRCRPP/10pt+G/s6FOfcVK1Yk559/frLtttsm5cuXT3bZZZfkqaeeSvr371/gd+fnz/aGFLbuDf02JEmSvPvuu8l+++2XVKlSJalevXryhz/8IZk3b16BGtad++uvv54ceOCBmWMeddRRyRdffLFZ12RD7r333qR58+ZJbm5u0rRp02TYsGHJPffck0REMnfu3M06zssvv5zsvvvuSW5ublKnTp3kggsuSEaMGFFgzPVZsWJFctJJJyXbbLNN5rdi3T4RkZxxxhkF9vn5858khfsN25ANHSdJSvZ6bekzuaGaNna+P/X2228n++67b1K+fPmkRo0ayYknnpjcf//9SUQks2bN2uTxkyRJpk6dmnTq1CmpWLFiss022yQnnXRS8sYbbxT4vV73HL355ptJ165dkwoVKiQ1atRITjvttAK/XdncFwBQEnKSJEmKNWkHAIAsnXfeeXHHHXfE/PnzrUH7C/rLX/4Sl112WcybN6/Y/u2M4lBcdQ8dOjSuuOKK+PLLL0t0nXnYlFNOOSVGjRoVixcvLtJlaAYMGBD//Oc/47vvviuyMQGgpFgaBQCAX41XXnkl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ixNPPDHOOOOMfP8QYFPXragJwgEAAACA351nn302KleuHGvWrInly5dHRMQNN9yQ2V62bNm44oorMt+bNGkSU6dOjcceeyxfEF69evW49dZbo3Tp0tGiRYvYf//944UXXoiTTz453n///Xj++efjlVdeiY4dO0ZExD333BMtW7bM7D9x4sR48803Y+7cudGgQYOIiHjwwQdjxx13jGnTpsWuu+4aEf8Lsu+9996oUqVKtGrVKrp16xZz5syJMWPGRKlSpaJ58+Zx7bXXxuTJk9cbhH/55ZexZMmSaN68eb729u3bx5w5cyIi4sADD8y3NMw+++wT559/fr7+Pw3FGzduHOedd16MHj06XxC+fPnyuP/++6N+/foREXHLLbfE/vvvH3//+9+jTp06m7xuxUEQDgAAAAD87nTr1i3uuOOO+OGHH+Luu++O999/P84666x8fYYPHx533313fPLJJ/Hjjz/GypUro127dvn67LjjjlG6dOnM97p168Zbb70VERGzZ8+OMmXKRIcOHTLbW7RoEVtttVXm++zZs6NBgwaZEDwiolWrVrHVVlvF7NmzM0F448aNo0qVKpk+tWvXjtKlS0epUqXytf10tvn6/HzW95NPPhkrV66Miy66KH788cd8235a9zr//Oc/46abbooPP/wwvvvuu1i9enVUrVo1X5+GDRtmQvCIiE6dOsXatWtjzpw5mSB8Y9etOFgjHAAAAAD43alUqVI0a9Ys2rZtGzfffHOsWLEi3wzwxx57LM4555w44YQTYvz48TFz5sw4/vjjY+XKlfnG+elyKhH/C5rXrl0bEf9b9mRd24YkSbLe7T9vX99xNnbsn9tmm21iq622ivfeey9fe8OGDaNZs2b5QvZ1KlWqlO/7K6+8En/84x+jd+/e8eyzz8aMGTPi0ksvLXBNfm7deWzqfDZUe1EwIxwAAABgEzqMKDgrko2bfsr0ki4BsnL55ZdH796947TTTot69erFSy+9FJ07d873AsmPPvooqzFbtmwZq1evjunTp8duu+0WERFz5szJ9+LIVq1axbx582L+/PmZWeHvvvtuLF26NN8SKluqVKlSceSRR8ZDDz0UQ4YM2eA64Rvz8ssvR6NGjeLSSy/NtH3yyScF+s2bNy8+//zzqFevXkRE5OXlRalSpWKHHXbY/BPYQmaEAwAAAAC/e127do0dd9wx/vKXv0RERLNmzWL69Okxbty4eP/992PIkCExbdq0rMZs3rx59OrVK04++eR49dVX4/XXX4+TTjopKlSokOmz7777Rtu2beOYY46JN954I1577bU47rjjokuXLutdmmRL/OUvf4ltt902OnbsGPfee2+8+eab8dFHH8WTTz4ZeXl5+ZYqWZ9mzZrFvHnz4tFHH42PPvoobr755njyyScL9Ctfvnz0798/Zs2aFS+99FIMGjQojjzyyMyyKCXBjHAAAAAAoEj9Vv+NgHPPPTeOP/74uOiii2LgwIExc+bM6Nu3b+Tk5MRRRx0Vp59+ejz//PNZjXnffffFSSedFF26dInatWvH1VdfHUOGDMlsz8nJiaeeeirOOuus2HvvvaNUqVLRq1evuOWWW4r69KJmzZrx2muvxbXXXhvXXXddzJ07N0qVKhXbb7999O3bNwYPHrzR/Q8++OA455xz4swzz4wVK1bE/vvvH0OGDImhQ4fm69esWbM47LDDok+fPvH1119Hnz594vbbby/y88lGTrJuoRqysmzZsqhWrVosXbq0wGLwAAAAQLpYGiV7v9UglMJbvnx5zJ07N5o0aRLly5cv6XL4lRg6dGg89dRTMXPmzCIbc2P3WmFzWkujAAAAAACQaoJwAAAAAABSTRAOAAAAAECRGDp0aJEui1JUBOEAAAAAAKSaIBwAAAAA2Gxr164t6RJIuaK4x8oUQR0AAAAAwO9MuXLlolSpUvH555/HNttsE+XKlYucnJySLosUSZIkVq5cGV9++WWUKlUqypUrt9ljCcIBAAAAgKyVKlUqmjRpEgsWLIjPP/+8pMshxSpWrBgNGzaMUqU2f4ETQTgAAAAAsFnKlSsXDRs2jNWrV8eaNWtKuhxSqHTp0lGmTJkt/rcNBOEAAAAAwGbLycmJsmXLRtmyZUu6FNggL8sEAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqpV4EH777bdHkyZNonz58tG+fft46aWXNtp/ypQp0b59+yhfvnw0bdo0hg8fXqDP448/Hq1atYrc3Nxo1apVPPnkk/m2Dx06NHJycvJ96tSpU6TnBQAAAADAr0OJBuGjR4+OwYMHx6WXXhozZsyIvfbaK3r37h3z5s1bb/+5c+dGnz59Yq+99ooZM2bEJZdcEoMGDYrHH3880ycvLy/69u0b/fr1i1mzZkW/fv3iyCOPjFdffTXfWDvuuGMsWLAg83nrrbeK9VwBAAAAACgZOUmSJCV18I4dO8Yuu+wSd9xxR6atZcuWccghh8SwYcMK9L/ooovimWeeidmzZ2faBg4cGLNmzYq8vLyIiOjbt28sW7Ysnn/++UyfXr16RfXq1WPUqFER8b8Z4U899VTMnDlzs2tftmxZVKtWLZYuXRpVq1bd7HEAAACAX78OIzqUdAm/OdNPmV7SJQC/A4XNaUtsRvjKlSvj9ddfjx49euRr79GjR0ydOnW9++Tl5RXo37Nnz5g+fXqsWrVqo31+PuYHH3wQ9erViyZNmsQf//jH+O9//7vRelesWBHLli3L9wEAAAAA4NevxILwr776KtasWRO1a9fO1167du1YuHDhevdZuHDhevuvXr06vvrqq432+emYHTt2jAceeCDGjRsXd911VyxcuDA6d+4cixcv3mC9w4YNi2rVqmU+DRo0yOp8AQAAAAAoGSX+ssycnJx835MkKdC2qf4/b9/UmL17947DDz882rRpE/vuu28899xzERFx//33b/C4F198cSxdujTzmT9//ibODAAAAACAX4MyJXXgrbfeOkqXLl1g9veiRYsKzOhep06dOuvtX6ZMmahZs+ZG+2xozIiISpUqRZs2beKDDz7YYJ/c3NzIzc3d6DkBAAAAAPDrU2IzwsuVKxft27ePCRMm5GufMGFCdO7ceb37dOrUqUD/8ePHR4cOHaJs2bIb7bOhMSP+t/737Nmzo27duptzKgAAAAAA/IqV6NIo5557btx9991x7733xuzZs+Occ86JefPmxcCBAyPif8uRHHfccZn+AwcOjE8++STOPffcmD17dtx7771xzz33xPnnn5/pc/bZZ8f48ePj2muvjffeey+uvfbamDhxYgwePDjT5/zzz48pU6bE3Llz49VXX40jjjgili1bFv379//Fzh0AAAAAgF9GiS2NEhHRt2/fWLx4cVx55ZWxYMGCaN26dYwZMyYaNWoUERELFiyIefPmZfo3adIkxowZE+ecc07cdtttUa9evbj55pvj8MMPz/Tp3LlzPProo3HZZZfFkCFDYrvttovRo0dHx44dM30+/fTTOOqoo+Krr76KbbbZJnbfffd45ZVXMscFAAAAACA9cpJ1b5skK8uWLYtq1arF0qVLo2rVqiVdDgAAAFCMOozoUNIl/OZMP2V6SZcA/A4UNqct0aVRAAAAAACguAnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpVqakCwAAAAAA+KkOIzqUdAm/OdNPmV7SJfyqmREOAAAAAECqCcIBAAAAAEg1QTgAAAAAAKkmCAcAAAAAINUE4QAAAAAApJogHAAAAACAVBOEAwAAAACQaoJwAAAAAABSTRAOAAAAAECqCcIBAAAAAEg1QTgAAAAAAKkmCAcAAAAAINUE4QAAAAAApJogHAAAAACAVBOEAwAAAACQaoJwAAAAAABSTRAOAAAAAECqCcIBAAAAAEg1QTgAAAAAAKkmCAcAAAAAINUE4QAAAAAApJogHAAAAACAVBOEAwAAAACQaoJwAAAAAABSTRAOAAAAAECqCcIBAAAAAEg1QTgAAAAAAKkmCAcAAAAAINUE4QAAAAAApJogHAAAAACAVBOEAwAAAACQaoJwAAAAAABSTRAOAAAAAECqlXgQfvvtt0eTJk2ifPny0b59+3jppZc22n/KlCnRvn37KF++fDRt2jSGDx9eoM/jjz8erVq1itzc3GjVqlU8+eSTGxxv2LBhkZOTE4MHD97SUwEAAAAA4FeoRIPw0aNHx+DBg+PSSy+NGTNmxF577RW9e/eOefPmrbf/3Llzo0+fPrHXXnvFjBkz4pJLLolBgwbF448/numTl5cXffv2jX79+sWsWbOiX79+ceSRR8arr75aYLxp06bFiBEjom3btsV2jgAAAAAAlKwSDcJvuOGGOPHEE+Okk06Kli1bxk033RQNGjSIO+64Y739hw8fHg0bNoybbropWrZsGSeddFKccMIJcf3112f63HTTTbHffvvFxRdfHC1atIiLL744unfvHjfddFO+sb777rs45phj4q677orq1asX52kCAAAAAFCCSiwIX7lyZbz++uvRo0ePfO09evSIqVOnrnefvLy8Av179uwZ06dPj1WrVm20z8/HPOOMM2L//fePfffdt1D1rlixIpYtW5bvAwAAAADAr1+JBeFfffVVrFmzJmrXrp2vvXbt2rFw4cL17rNw4cL19l+9enV89dVXG+3z0zEfffTReOONN2LYsGGFrnfYsGFRrVq1zKdBgwaF3hcAAAAAgJJT4i/LzMnJyfc9SZICbZvq//P2jY05f/78OPvss+Ohhx6K8uXLF7rOiy++OJYuXZr5zJ8/v9D7AgAAAABQcsqU1IG33nrrKF26dIHZ34sWLSowo3udOnXqrLd/mTJlombNmhvts27M119/PRYtWhTt27fPbF+zZk38+9//jltvvTVWrFgRpUuXLnDs3NzcyM3Nzf5EAQAAAAAoUSU2I7xcuXLRvn37mDBhQr72CRMmROfOnde7T6dOnQr0Hz9+fHTo0CHKli270T7rxuzevXu89dZbMXPmzMynQ4cOccwxx8TMmTPXG4IDAAAAAPDbVWIzwiMizj333OjXr1906NAhOnXqFCNGjIh58+bFwIEDI+J/y5F89tln8cADD0RExMCBA+PWW2+Nc889N04++eTIy8uLe+65J0aNGpUZ8+yzz4699947rr322jj44IPj6aefjokTJ8Z//vOfiIioUqVKtG7dOl8dlSpVipo1axZoBwAAAADgt69Eg/C+ffvG4sWL48orr4wFCxZE69atY8yYMdGoUaOIiFiwYEHMmzcv079JkyYxZsyYOOecc+K2226LevXqxc033xyHH354pk/nzp3j0UcfjcsuuyyGDBkS2223XYwePTo6duz4i58fAAAAAAAlLydZ97ZJsrJs2bKoVq1aLF26NKpWrVrS5QAAAADFqMOIDiVdwm/O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3BOjRo3KjHn22WfH3nvvHddee20cfPDB8fTTT8fEiRPjP//5T6bPJZdcEr17944GDRrEt99+G48++mhMnjw5xo4du8XnBAAAAADAr0uhZ4R//vnncf7558eyZcsKbFu6dGlccMEF8cUXX2R18L59+8ZNN90UV155ZbRr1y7+/e9/x5gxY6JRo0YREbFgwYKYN29epn+TJk1izJgxMXny5GjXrl1cddVVcfPNN8fhhx+e6dO5c+d49NFH47777ou2bdvGyJEjY/To0dGxY8dMny+++CL69esXzZs3j+7du8err74aY8eOjf322y+r+gEAAAAA+PXLSda9bXIT1oXgI0aMWO/2gQMHRrVq1eLaa68t0gJ/rZYtWxbVqlWLpUuXenEmAAAApFyHER1KuoTfnOmnTC/pEvgN88xl7/f6zBU2py30jPCxY8fGcccdt8Htxx13XDz77LPZVQkAAAAAAMWs0EH43Llzo2HDhhvcXr9+/fj444+LoiYAAAAAACgyhQ7CK1SosNGg++OPP44KFSoURU0AAAAAAFBkCh2Ed+zYMR588MENbn/ggQdit912K5KiAAAAAACgqJQpbMfzzz8/9ttvv6hWrVpccMEFUbt27YiI+OKLL+Jvf/tbjBw5MsaPH19shQIAAAAAwOYodBDerVu3uO222+Lss8+OG2+8MapWrRo5OTmxdOnSKFu2bNxyyy2xzz77FGetAAAAAACQtUIH4RERp556ahxwwAHx2GOPxYcffhhJksQOO+wQRxxxRNSvX7+4agQAAAAAgM2WVRAeEbHtttvGOeecUxy1AAAAAABAkSv0yzIBAAAAAOC3SBAOAAAAAECqCcIBAAAAAEg1QTgAAAAAAKmWdRA+f/78+PTTTzPfX3vttRg8eHCMGDGiSAsDAAAAAICikHUQfvTRR8eLL74YERELFy6M/fbbL1577bW45JJL4sorryzyAgEAAAAAYEtkHYS//fbbsdtuu0VExGOPPRatW7eOqVOnxiOPPBIjR44s6voAAAAAAGCLZB2Er1q1KnJzcyMiYuLEiXHQQQdFRESLFi1iwYIFRVsdAAAAAABsoayD8B133DGGDx8eL730UkyYMCF69eoVERGff/551KxZs8gLBAAAAACALZF1EH7ttdfGnXfeGV27do2jjjoqdtppp4iIeOaZZzJLpgAAAAAAwK9FmWx3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KDJZB+GHH354rFixItq3bx9dunSJrl27xh577GFGOAAAAAAAv0pZvyzzm2++icmTJ8dBBx0UM2bMiD/84Q9Ro0aN2H333eNPf/pTcdQIAAAAAACbLesgvHTp0tGpU6f405/+FGPHjo2pU6fG0UcfHa+//npcd911xVEjAAAAAABstqyXRpk9e3ZMmTIlJk+eHFOmTIk1a9bEnnvuGX//+9+jS5cuxVEjAAAAAABstqyD8B133DG22WabGDx4cAwZMiR23HHH4qgLAAAAAACKRNZLowwaNCi23XbbGDp0aJxwwglx0UUXxfPPPx/fffddcdQHAAAAAABbJOsg/Kabboo33ngjvvjii7jssstizZo18ec//zm23nrr2H333YujRgAAAAAA2GxZB+HrrF27NlavXh0rV66MFStWxKpVq+Ljjz8uwtIAAAAAAGDLbdbSKDvttFPUqlUrTj311Pj888/jlFNOiVmzZsXChQuLo0YAAAAAANhsWb8s8/PPP4+TTz45unbtGq1bty6OmgAAAAAAoMhkHYQPGjQoOnfuHGXK5N919erVMXXq1Nh7772LrDgAAAAAANhSWS+N0q1bt/j6668LtC9dujS6detWJEUBAAAAAEBRyToIT5IkcnJyCrQvXrw4KlWqVCRFAQAAAABAUSn00iiHHXZYRETk5OTEgAEDIjc3N7NtzZo18eabb0bnzp2LvkIAAAAAANgChQ7Cq1WrFhH/mxFepUqVqFChQmZbuXLlYvfdd4+TTz656CsEAAAAAIAtUOgg/L777ouIiMaNG8f5559vGRQAAAAAAH4Tsl4j/PLLL4/c3NyYOHFi3HnnnfHtt99GRMTnn38e3333XZEXCAAAAAAAW6LQM8LX+eSTT6JXr14xb968WLFiRey3335RpUqV+Nvf/hbLly+P4cOHF0edAAAAAACwWbKeEX722WdHhw4d4ptvvsm3Tvihhx4aL7zwQpEWBwAAAAAAWyrrGeH/+c9/4uWXX45y5crla2/UqFF89tlnRVYYAAAAAAAUhaxnhK9duzbWrFlToP3TTz+NKlWqFElRAAAAAABQVLIOwvfbb7+46aabMt9zcnLiu+++i8svvzz69OlTlLUBAAAAAMAWy3pplBtvvDG6desWrVq1iuXLl8fRRx8dH3zwQWy99dYxatSo4qgRAAAAAAA2W9ZBeL169WLmzJnx6KOPxuuvvx5r166NE088MY455ph8L88EAAAAAIBfg6yD8IiIChUqxPHHHx/HH398UdcDAAAAAABFKusgfPHixVGzZs2IiJg/f37cdddd8eOPP8aBBx4Ye++9d5EXCAAAAAAAW6LQL8t86623onHjxlGrVq1o0aJFzJw5M3bddde48cYbY8SIEbHPPvvEU089VYylAgAAAABA9godhF944YXRpk2bmDJlSnTt2jUOOOCA6NOnTyxdujS++eabOPXUU+Ovf/1rcdYKAAAAAABZK/TSKNOmTYtJkyZF27Zto127djFixIg4/fTTo1Sp/2XpZ511Vuy+++7FVigAAAAAAGyOQs8I//rrr6NOnToREVG5cuWoVKlS1KhRI7O9evXq8e233xZ9hQAAAAAAsAUKHYRHROTk5Gz0OwAAAAAA/NoUemmUiIgBAwZEbm5uREQsX748Bg4cGJUqVYqIiBUrVhR9dQAAAAAAsIUKHYT3798/3/djjz22QJ/jjjtuyysCAAAAAIAiVOgg/L777ivOOgAAAAAAoFhktUY4AAAAAAD81gjCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKSaIBwAAAAAgFQThAMAAAAAkGqCcAAAAAAAUk0QDgAAAABAqgnCAQAAAABINUE4AAAAAACpJggHAAAAACDVBOEAAAAAAKRaiQfht99+ezRp0iTKly8f7du3j5deemmj/adMmRLt27eP8uXLR9OmTWP48OEF+jz++OPRqlWryM3NjVatWsWTTz6Zb/uwYcNi1113jSpVqkStWrXikEMOiTlz5hTpeQEAAAAA8OtQokH46NGjY/DgwXHppZfGjBkzYq+99orevXvHvHnz1tt/7ty50adPn9hrr71ixowZcckll8SgQYPi8ccfz/TJy8uLvn37Rr9+/WLWrFnRr1+/OPLII+PVV1/N9JkyZUqcccYZ8corr8SECRNi9erV0aNHj/j++++L/ZwBAAAAAPhl5SRJkpTUwTt27Bi77LJL3HHHHZm2li1bxiGHHBLDhg0r0P+iiy6KZ555JmbPnp1pGzhwYMyaNSvy8vIiIqJv376xbNmyeP755zN9evXqFdWrV49Ro0att44vv/wyatWqFVOmTIm99957vX1WrFgRK1asyHxftmxZNGjQIJYuXRpVq1bN7sQBAACA35QOIzqUdAm/OdNPmV7SJfAb5pnL3u/1mVu2bFlUq1Ztkzltic0IX7lyZbz++uvRo0ePfO09evSIqVOnrnefvLy8Av179uwZ06dPj1WrVm20z4bGjIhYunRpRETUqFFjg32GDRsW1apVy3waNGiw4ZMDAAAAAOBXo8SC8K+++irWrFkTtWvXztdeu3btWLhw4Xr3Wbhw4Xr7r169Or766quN9tnQmEmSxLnnnht77rlntG7deoP1XnzxxbF06dLMZ/78+Zs8RwAAAAAASl6Zki4gJycn3/ckSQq0bar/z9uzGfPMM8+MN998M/7zn/9stM7c3NzIzc3daB8AAAAAAH59SiwI33rrraN06dIFZmovWrSowIzuderUqbPe/mXKlImaNWtutM/6xjzrrLPimWeeiX//+99Rv379LTkdAAAAAAB+pUpsaZRy5cpF+/btY8KECfnaJ0yYEJ07d17vPp06dSrQf/z48dGhQ4coW7bsRvv8dMwkSeLMM8+MJ554IiZNmhRNmjQpilMCAAAAAOBXqESXRjn33HOjX79+0aFDh+jUqVOMGDEi5s2bFwMHDoyI/63L/dlnn8UDDzwQEREDBw6MW2+9Nc4999w4+eSTIy8vL+65554YNWpUZsyzzz479t5777j22mvj4IMPjqeffjomTpyYb+mTM844Ix555JF4+umno0qVKpkZ5NWqVYsKFSr8glcAAAAAAIDiVqJBeN++fWPx4sVx5ZVXxoIFC6J169YxZsyYaNSoUURELFiwIObNm5fp36RJkxgzZkycc845cdttt0W9evXi5ptvjsMPPzzTp3PnzvHoo4/GZZddFkOG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8fjjj+v8+fOKiYlx68fJsjr+Bg4cqJdeekmRkZEaO3asWz8Yl3ZfBAYGOvrkokWL6vLly05l0/fFKSkpevnll1WnTh0FBgbKz89PMTExGfb/Pffc47SeiIgIHThwwKndpt0um82mMmXK5Lt2lfaclpCQoFmzZkm61nYiIiKc9kFkZKTOnz+vn376KUfrSP8aPPvss1q8eLHq1aunESNGaMuWLY7nEhMTHT84aZe+j3PHhQsXNGLECEd79/Pz0/79+zO8zunrtmvXLi1YsMCpjURFRSk1NVVHjhxxuS5jTK7ap+R8ntm1a5fOnz/vOC7tf0eOHHGcdxMSErJtn9OnT9c777yjb7/9VrVr185RndIfxz169FBCQoKqVaumgQMHKiYmJtvlpd8Xy5YtU0JCgqKionTx4kWn51yNldzpY++++26nH0+MiIhQamqq03dr5nb8dCswlsx8LGk3fPhwp76pe/fujuey2y/utuOsjn13+qKs+jJX63Bn/OXOsZ1e+telZ8+eSkhI0DvvvKMLFy44jc/Lly+f4ftZ3R2XpN3+AgUKKDw8PN+PN++UsaRdZud8yb12dfDgQRUpUsTRrooXL67//e9/Tu05q/4mMTHRcezYVa9e3em7th999FFdvHhRlSpVUu/evbVs2bIMP4Sem/FX2uO3ePHiqlatWobjNyt16tRx7LcLFy5kqFP6/efuOCSn13Hpx/a3A8aS1z+WlKQiRYo47ce02+Sq707L3fNtVnnH2bNndeLECZd9vV3dunXVqlUr1a5dW48++qjmzp2b4YfQczPmcKcdpOdO/23nqn+bM2eOwsPDVbJkSfn5+Wnu3LkZXltXx9H58+d1/Phxx7SsxvbuunN+UQD5lq+vr0JCQhyPw8LCFBAQoLlz5+qll15yKped9I3XVZCc/ov8bTabUlNTs122l5eXWrdurdWrV2v48OFOg2p3pKamytPTU7t27crwA0V+fn4u57GH0vv373frZJN22+z7wr5tqampGj9+vB566KEM83l7e7v140I53Qeu9nXa1+S9997TwIEDtW7dOi1ZskSjR4/Whg0bdM8992RYVpUqVXT27FmdPHnS8YMtfn5+CgkJcfnjKT4+PhmOhx49eui3337TzJkzVb58eXl5eSkiIiJD0OdK+mVlta/zm5CQENlstgw/EFmpUiVJcjo2Mguo0k5v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xMREx13YktS8eXM1a9ZMDz/8sDZs2OC4Y23dunW52gfZOXLkiEaNGqW4uDj9+OOPiomJUXJysmMAnN7dd9+t6dOn6/XXX9eTTz6pr7/+WkePHtXu3bsdHxfLLlALCQnRhx9+qMTERG3btk1PPPGEy3c4P/30U82fP1/JyckaO3astm/frueeey5X25lfvPXWW7p69arCw8O1ZMkSJSYmKikpSQsXLtT+/fsd+7Z169aqU6eOnnjiCe3evVvbt29X9+7d1bx5c6ePSLVo0UILFy5U8+bNZbPZVKxYMdWoUUNLlixRixYtHOVCQkJ07NgxLV68WIcOHdKsWbNydOIvVqyYAgMD9e677+rgwYP66quvNHToULe2NyUlRY0aNdLSpUt14MABJSYmatasWTn6qF///v31+++/6/HHH9f27dt1+PBhxcTEqGfPnkpJSZG3t7dGjhypESNG6IMPPtChQ4e0detWzZs3L8OyBgwYoJdeeknt27fXt99+63Yd0hs8eLDWr1+vI0eOaPfu3frqq68ybVc2m03vvfeekpKSFBkZqRUrVujAgQPat2+f5syZo99++82tdmW/kyExMVHPPPOMy37h+PHjGjp0qJKSkrRo0SK98cYbGjRoUK63M7/p16+fjh8/rgEDBmj//v1avny5xo4dq6FDh8rD49pwrWXLlvrwww8VGxur77//Xk8++aRbbxS8+OKLWr58uQ4ePKgffvhBq1atcrzmXbt2lYeHh3r16qV9+/ZpzZo1TndXSlLjxo1VuHBhPf/88zp48KA+/vhjLViwwKlMSEiIPv/8cyUkJGjPnj3q2rWrW2+ejBw5UnFxcerfv78SEhJ04MABrVixwuUnFOwGDx6syMhItWrVSrNnz9aePXt0+PBhffLJJ2rcuLHLN1pcad26tSIiItS5c2etX79eR48e1ZYtWzR69GhHaDB27FgtWrRIY8eOVWJiov773/+6fPM5IiJCa9eu1YQJEzRjxgy31u/KjBkztHjxYu3fv1/Jycn69NNPVaZMGaePsac1adIk3XXXXWrcuLHmz5+vvXv36tChQ1q2bJni4uLcap/u9LHe3t568skntWfPHsebxl26dLmp4eqNxFgy87HkjZCbdpyeO31RVn1ZbuX02I6IiNCwYcM0bNgwDR06VN9++61+/PFHx7nb/iZLZnIyLpk9e7aWLVum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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "\n", @@ -16955,7 +1300,7 @@ "source": [ "## Clustering coefficient\n", "\n", - "The simplest way to treat clustering analytically in a small-world network is to use the link addition, rather than the rewiring model. In the limit of large network size, $N \\to \\infty$, and for a fixed fraction of shortcuts $\\phi$, it is clear that the probability of forming triangle vanishes as we approach $1/N$, so the contribution of the shortcuts to the clustering is negligible. Therefore, the clustering of a small-world network is determined by its underlying ordered lattice. For example, consider a ring where each node is connected to its $k$ closest neighbors from each side. A node's number of neighbors is therefore $2k$, and thus it has $2k(2k - 1)/2 = k(2k - 1)$ pairs of neighbors. Consider a node, $i$. All of the $k$ nearest nodes on $i$'s left are connected to each other, and the same is true for the nodes on $i$'s right. This amounts to $2k(k - 1)/2 = k(k - 1)$ pairs. Now consider a node located $d$ places to the left of $k$. It is also connected to its $k$ nearest neighbors from each side. Therefore, it will be connected to $k - d$ neighbors on $i$'s right side. The total number of connected neighbor pairs is\n", + "The simplest way `[5]` to treat clustering analytically in a small-world network is to use the link addition, rather than the rewiring model. In the limit of large network size, $N \\to \\infty$, and for a fixed fraction of shortcuts $\\phi$, it is clear that the probability of forming triangle vanishes as we approach $1/N$, so the contribution of the shortcuts to the clustering is negligible. Therefore, the clustering of a small-world network is determined by its underlying ordered lattice. For example, consider a ring where each node is connected to its $k$ closest neighbors from each side. A node's number of neighbors is therefore $2k$, and thus it has $2k(2k - 1)/2 = k(2k - 1)$ pairs of neighbors. Consider a node, $i$. All of the $k$ nearest nodes on $i$'s left are connected to each other, and the same is true for the nodes on $i$'s right. This amounts to $2k(k - 1)/2 = k(k - 1)$ pairs. Now consider a node located $d$ places to the left of $k$. It is also connected to its $k$ nearest neighbors from each side. Therefore, it will be connected to $k - d$ neighbors on $i$'s right side. The total number of connected neighbor pairs is\n", "\n", "\\begin{equation}\n", " k(k-1) + \\sum_{d=1}^k (k-d) = k(k-1) + \\frac{k(k-1)}{2} = \\frac{3}{2} k (k-1)\n", @@ -16967,7 +1312,7 @@ " C = \\frac{\\frac{3}{2}k(k-1)}{k(2k-1)} =\\frac{3 (k-1)}{2(2k-1)}\n", "\\end{equation}\n", "\n", - "For every $k > 1$, this results in a constant larger than $0$, indicating that the clustering of a small-world network does not vanish for large networks. For large values of $k$, the clustering coefficient approaches $3/4$, that is, the clustering is very high. Note that for a regular two-dimensional grid, the clustering by definition is zero, since no triangles exist. However, it is clear that the grid has a neighborhood structure.\n", + "For every $k > 1$, this results in a constant larger than $0$, indicating that the clustering of a small-world network does not vanish for large networks. For large values of $k$, the clustering coefficient approaches $3/4$, that is, the clustering is very high. Note that for a regular two-dimensional grid, the clustering by definition is zero, since no triangles exist. However, it is clear that the grid has a neighborhood structure. `[2]`\n", "\n", "\n", "--- \n", @@ -16977,7 +1322,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -16988,20 +1333,9 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABcIAAAPdCAYAAACp3hugAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC6X0lEQVR4nOzdebhd4/0/7tfOcDLIQGQQmRFDEFMaRA1BqKmilDatiJl8VImgah5jKlqtqWZFzakhDTGlSqho0CpKDKFJhBgiQUiyfn/45XwdJ4lzkhOH7b6va1/tftaz1nqvYa8tr7P2s0pFURQBAAAAAIAy1aC+CwAAAAAAgKVJEA4AAAAAQFkThAMAAAAAUNYE4QAAAAAAlDVBOAAAAAAAZU0QDgAAAABAWROEAwAAAABQ1gThAAAAAACUNUE4AAAAAABlTRAOQNn53e9+l1KplLXWWqu+S/lGmjdvXq677rpsvfXWadu2bRo3bpz27dtnxx13zF133ZV58+YlSV577bWUSqVcffXVS6WOyZMn56STTsrTTz+9VJZ/9dVXp1Qq5bXXXlsqy6+JZ599NnvvvXd69OiRpk2bpkWLFll//fVz9tln5913312q677pppuy5pprplmzZimVSpX7+cILL8wqq6ySioqKlEqlvP/++xkyZEi6d+9e63VsscUW2WKLLeq07i/7z3/+k5NOOmmpHMcHHnggffr0yTLLLJNSqZSRI0cusN+iztUhQ4akRYsWdV7b0nDSSSelVCot1rwPP/xwSqVSHn744bot6ku+jnNqafq2nA81vb4v6vO3xRZb+J6tY6VSKSeddFLl+6/rc/dlS3Kt+CaYX/8777xT36UA8A0jCAeg7Fx55ZVJkueeey5PPPFEPVfzzfLJJ59k++23z1577ZX27dvn4osvzoMPPphLLrkkK664Yn784x/nrrvu+lpqmTx5ck4++eSlFoTvsMMOGTduXDp27LhUlv9V/vjHP2aDDTbIk08+mSOPPDKjR4/OHXfckR//+Me55JJLsu+++y61db/99tvZc889s/LKK2f06NEZN25cVl111Tz99NM59NBD079//zz44IMZN25cWrZsmeOPPz533HFHrddz0UUX5aKLLloKW/D//Oc//8nJJ59c50F4URTZfffd07hx49x5550ZN25cNt988wX2Xdrn6tdlv/32y7hx4xZr3vXXXz/jxo3L+uuvX8dV8U22tD5/1IzPHQDUrUb1XQAA1KXx48fnmWeeyQ477JB77rknV1xxRTbccMOvtYaiKPLJJ5+kWbNmX+t6a2LYsGG59957c80112Tw4MFVpv3oRz/KkUcemY8//rieqqsbH3/8cZo2bZp27dqlXbt29VLDuHHjcvDBB2fAgAEZOXJkmjRpUjltwIABOeKIIzJ69Oiltv7//ve/+eyzz/Lzn/+8Srj73HPPJUn233//9O3bt7J95ZVXXqz19OrVa8kKrUeTJ0/Ou+++m1122SVbbbVVfZezVH300Udp3rx5OnfunM6dOy/WMlq1apWNNtqojiurH/OvEd/mO1755vvss89SKpXSqNHi/5O7nD53X1YX+wcAassd4QCUlSuuuCJJcuaZZ6Zfv37585//nI8++ijJ5//oat++ffbcc89q873//vtp1qxZhg0bVtk2Y8aMDB8+PD169EhFRUU6deqUww47LLNmzaoyb6lUyiGHHJJLLrkka6yxRpo0aZJrrrkmSXLyySdnww03TJs2bdKqVausv/76ueKKK1IURZVlzJ49O0cccURWWGGFNG/ePJtttlmeeuqpdO/ePUOGDKnSd+rUqTnwwAPTuXPnVFRUpEePHjn55JMzZ86cRe6bqVOn5vLLL8+2225bLQSfr2fPnundu/dCl7GwITQW9DPqW265JRtuuGFat26d5s2bZ6WVVso+++yT5POfe3/ve99Lkuy9994plUrVfhI+fvz4/PCHP0ybNm3StGnTrLfeern55purrGP+8Cf33Xdf9tlnn7Rr1y7NmzfP7NmzFzg0yvyf8j/55JPZdNNNK+s688wzK4eEme+5557LNttsk+bNm6ddu3b5v//7v9xzzz01+pn6GWeckVKplMsuu6xKCD5fRUVFfvjDH1a+nzdvXs4+++ysvvrqadKkSdq3b5/BgwfnzTffrDbv/fffn6222iqtWrVK8+bNs8kmm+SBBx6onD5kyJB8//vfT5LsscceKZVKlcNN/PznP0+SbLjhhimVSpXn1oKO67x583LhhRdm3XXXTbNmzbLssstmo402yp133lllf355GItPP/00p512WuW2tGvXLnvvvXfefvvtKv26d++eHXfcMaNHj87666+fZs2aZfXVV6/8RUfy+fH98Y9/nCTp379/5XnyVcM5/P3vf89WW22Vli1bpnnz5unXr1/uueeeyuknnXRSZSB89NFHp1QqLXRomJqcq0ny8ssvZ/vtt0+LFi3SpUuXHHHEEZk9e/Zi7ZuFufPOO7PxxhunefPmadmyZQYMGFDtDu/5n8V//vOf2W233bLccstV/qFjQZ/Tml57FjREw/xhQGqy7TW9FtZUTete1DXi5Zdfzt57752ePXumefPm6dSpU3baaaf861//qrKu+dv+pz/9KcOGDcsKK6yQZs2aZfPNN8+ECRMWWF9N9smC3HTTTdlmm23SsWPHNGvWLGussUZ+9atfVfveqc2+nzx5cnbfffe0bNkyrVu3zh577JGpU6d+ZS01/fzV5Hpa0+/TBSmKImeccUa6deuWpk2bpk+fPhkzZswCrz+1/d6+7rrrssYaa6R58+ZZZ511cvfdd1db/0svvZRBgwalffv2adKkSdZYY4384Q9/qNJn/jly3XXX5YgjjkinTp3SpEmTvPzyy3n77bczdOjQ9OrVKy1atEj79u2z5ZZb5pFHHvnKbf/y527+kDYLe33RV31XzHfPPfdk3XXXTZMmTdKjR4+ce+65X1nXfDU9NnWxf+Zv+9lnn53TTz89Xbt2rVzngrYrSd5666389Kc/TevWrdOhQ4fss88++eCDD2q8fQCUoQIAysRHH31UtG7duvje975XFEVRXH755UWS4uqrr67sc/jhhxfNmjUrPvjggyrzXnTRRUWS4tlnny2KoihmzZpVrLvuukXbtm2L8847r7j//vuL3/72t0Xr1q2LLbfcspg3b17lvEmKTp06Fb179y5uuOGG4sEHHyz+/e9/F0VRFEOGDCmuuOKKYsyYMcWYMWOKU089tWjWrFlx8sknV1n/T3/606JBgwbFr371q+K+++4rLrjggqJLly5F69ati7322quy35QpU4ouXboU3bp1Ky699NLi/vvvL0499dSiSZMmxZAhQxa5f2644YYiSXHxxRfXaH+++uqrRZLiqquuqmzba6+9im7dulXre+KJJxZf/M+Kxx57rCiVSsVPfvKTYtSoUcWDDz5YXHXVVcWee+5ZFEVRfPDBB8VVV11VJCmOO+64Yty4ccW4ceOKN954oyiKonjwwQeLioqKYtNNNy1uuummYvTo0cWQIUOq1TN/GZ06dSoOOOCA4q9//Wtx6623FnPmzKmc9uqrr1b233zzzYvll1++6NmzZ3HJJZcUY8aMKYYOHVokKa655prKfpMnTy6WX375omvXrsXVV19djBo1qthzzz2L7t27F0mKhx56aKH7bc6cOUXz5s2LDTfcsEb7uSiK4oADDiiSFIccckgxevTo4pJLLinatWtXdOnSpXj77bcr+1133XVFqVQqBg4cWNx+++3FXXfdVey4445Fw4YNi/vvv78oiqJ4+eWXiz/84Q9FkuKMM84oxo0bVzz33HPFc889Vxx33HGV+3DcuHHFyy+/vNDjuueeexalUqnYb7/9ir/85S/FX//61+L0008vfvvb31bZn5tvvnnl+7lz5xY/+MEPimWWWaY4+eSTizFjxhSXX3550alTp6JXr17FRx99VNm3W7duRefOnYtevXoV1157bXHvvfcWP/7xj4skxdixY4uiKIpp06YVZ5xxRpGk+MMf/lB5nkybNm2h+/Lhhx8uGjduXGywwQbFTTfdVIwcObLYZpttilKpVPz5z38uiqIo3njjjeL2228vkhS/+MUvinHjxhX//Oc/F7i8rzpX99prr6KioqJYY401inPPPbe4//77ixNOOKEolUpVPue12TcLcv311xdJim222aYYOXJkcdNNNxUbbLBBUVFRUTzyyCOV/eZ/Frt161YcffTRxZgxY4qRI0dWmfZFNb32PPTQQ9XO/Zpue1HU/Fr45XNqYWpa96KuEWPHji2OOOKI4tZbby3Gjh1b3HHHHcXAgQOLZs2aFS+88EK1be/SpUux8847F3fddVfxpz/9qVhllVWKVq1aFRMnTlysfbIgp556anH++ecX99xzT/Hwww8Xl1xySdGjR4+if//+VfrVdD0fffRRscYaaxStW7cuLrzwwuLee+8tDj300KJr167Vrqdf9lWfv5peT2vzfbogxxxzTJGkOOCAA4rRo0cXf/zjH4uuXbsWHTt2rHKu1PZ7u3v37kXfvn2Lm2++uRg1alSxxRZbFI0aNapyPJ977rmidevWxdprr11ce+21xX333VccccQRRYMGDYqTTjqpst/8c6RTp07FbrvtVtx5553F3XffXUyfPr144YUXioMPPrj485//XDz88MPF3XffXey7775FgwYNqn2XJClOPPHEasud3++TTz6pPA7zX3feeWfRqlWrYo011qicrybfFUVRFPfff3/RsGHD4vvf/35x++23F7fcckvxve99r/L8+Co1PTZ1sX/m/zdJly5diu9///vFbbfdVllv48aNi8cee6yy7/xr3WqrrVaccMIJxZgxY4rzzjuvaNKkSbH33nt/5XYBUL4E4QCUjWuvvbZIUlxyySVFURTFhx9+WLRo0aLYdNNNK/s8++yzRZLisssuqzJv3759iw022KDy/YgRI4oGDRoUTz75ZJV+t956a5GkGDVqVGVbkqJ169bFu+++u8j65s6dW3z22WfFKaecUiy//PKV/yh/7rnniiTF0UcfXaX/jTfeWCSpEuoceOCBRYsWLYrXX3+9St9zzz23SFI899xzC13/mWeeWSQpRo8evcg651uSIHx+Pe+///5Cl//kk08uNIhZffXVi/XWW6/47LPPqrTvuOOORceOHYu5c+cWRfH/Qq7BgwdXW8bCgvAkxRNPPFGlb69evYptt9228v2RRx5ZlEqlavtz2223/cogfOrUqUWS4ic/+clC+3zR888/XyQphg4dWqX9iSeeKJIUv/71r4ui+DzkadOmTbHTTjtV6Td37txinXXWKfr27VvZNj90uOWWW6r0nb9Pvnxef/m4/u1vfyuSFMcee+wia/9yaDn/nL3tttuq9Jt/rC+66KLKtm7duhVNmzatci5//PHHRZs2bYoDDzywsu2WW275yn3+RRtttFHRvn374sMPP6xsmzNnTrHWWmsVnTt3rvzczT+/zznnnK9c5qLO1b322qtIUtx8881V2rfffvtitdVWq3xfm33zZXPnzi1WXHHFYu21164894vi82tc+/bti379+lW2zf8snnDCCdWW8+XPaW2uPQsLwmuy7QvangVdC4uiZkF4bepe1DXiy+bMmVN8+umnRc+ePYvDDz+8sn3+tq+//vpVan3ttdeKxo0bF/vtt19l2+LukwWZN29e8dlnnxVjx44tkhTPPPNMrddz8cUXF0mKv/zlL1X67b///l8ZhBfFoj9/Nb2e1ub79MvefffdokmTJsUee+xRpX3cuHFFkirnSm2/tzt06FDMmDGjsm3q1KlFgwYNihEjRlS2bbvttkXnzp2r/fH8kEMOKZo2bVr5vT//HNlss80Wui3zzZkzp/jss8+Krbbaqthll12qTPuqIPzLZs2aVfTt27fo2LFj8dprr1W21fS7YsMNNyxWXHHF4uOPP65smzFjRtGmTZuvDMJrc2zqYv/Mv2YvrN6tt966sm3+te7ss8+usuyhQ4cWTZs2/co/vgBQvgyNAkDZuOKKK9KsWbP85Cc/SZK0aNEiP/7xj/PII4/kpZdeSpKsvfba2WCDDXLVVVdVzvf888/nH//4R+WwHUly9913Z6211sq6666bOXPmVL623XbbBQ6NseWWW2a55ZarVtODDz6YrbfeOq1bt07Dhg3TuHHjnHDCCZk+fXqmTZuWJBk7dmySZPfdd68y72677VZt7My77747/fv3z4orrlilru22267Ksurb/KEkdt9999x888353//+V+N5X3755bzwwgv52c9+liRVtnP77bfPlClT8uKLL1aZZ9ddd63x8ldYYYUq42MnSe/evfP6669Xvh87dmzWWmutamNg//SnP63xemrqoYceSpJqQ+D07ds3a6yxRuVPvh977LG8++672Wuvvarsk3nz5uUHP/hBnnzyyRoNM1ATf/3rX5Mk//d//1er+e6+++4su+yy2WmnnarUuO6662aFFVao9rlZd91107Vr18r3TZs2zaqrrlrlWNTGrFmz8sQTT2S33XZLixYtKtsbNmyYPffcM2+++Wa1c6culEql7LTTTlXavnxO1XbffNGLL76YyZMnZ88990yDBv/vP99btGiRXXfdNY8//njlEFDz1eQzUZtrz8LUZNuTml0La2px6l7Q/pgzZ07OOOOM9OrVKxUVFWnUqFEqKiry0ksv5fnnn6/Wf9CgQVWGn+jWrVv69etX+Rmer6b7ZEFeeeWVDBo0KCussELlfpo/zv+Xa6rJeh566KG0bNmyylBM87elLtTkelrb79MvevzxxzN79uxqx3qjjTaqNpxRbdfTv3//tGzZsvJ9hw4d0r59+8raP/nkkzzwwAPZZZdd0rx582rfRZ988kkef/zxKstc2Ofukksuyfrrr5+mTZumUaNGady4cR544IEFnmc1NXfu3Oyxxx55/vnnM2rUqHTr1i1Jzb8rZs2alSeffDI/+tGP0rRp08rltmzZstp5tSC1OTbz1cX+WVi9f/vb3zJ37twqfb983vfu3TuffPJJra85AJQPQTgAZeHll1/O3/72t+ywww4piiLvv/9+3n///ey2225JUmXc4X322Sfjxo3LCy+8kCS56qqr0qRJkyoh51tvvZVnn302jRs3rvJq2bJliqLIO++8U2X9HTt2rFbTP/7xj2yzzTZJkj/+8Y959NFH8+STT+bYY49NksqHUk6fPj3J5/8I/6JGjRpl+eWXr9L21ltv5a677qpW15prrpkk1er6ovmB46uvvrrQPnVls802y8iRIzNnzpwMHjw4nTt3zlprrZUbb7zxK+d96623kiTDhw+vtp1Dhw5NUn07F7T/F+bL+zRJmjRpUuUhodOnT692PJLqx2hB2rZtm+bNm9d4P88//gvahhVXXLFy+vz9sttuu1XbL2eddVaKosi7775bo3V+lbfffjsNGzbMCiusUKv53nrrrbz//vupqKioVuPUqVOrHbeaHIvaeO+991IUxUL3ZfL/9nddat68eZVgJvl8Oz755JPK97XdN1/0VefIvHnz8t5771Vpr8lnojbXnoWpybbX9FpYU4tT94L2x7Bhw3L88cdn4MCBueuuu/LEE0/kySefzDrrrLPAmhb0eVhhhRWqnVM12ScLMnPmzGy66aZ54oknctppp+Xhhx/Ok08+mdtvvz1J9f1Uk/Us7FpW28/2wtTkM1zb79MvWtixXlBbbdfzVbVPnz49c+bMyYUXXlhtmdtvv32Smn0XnXfeeTn44IOz4YYb5rbbbsvjjz+eJ598Mj/4wQ+W6OHUBx10UEaPHp1bb7016667bpX9kHz1d8V7772XefPmLfS8/iq1OTbz1cX+WVi9n376aWbOnFml/cvHeP4zO77tDwUHYPF5RDMAZeHKK69MURS59dZbc+utt1abfs011+S0005Lw4YN89Of/jTDhg3L1VdfndNPPz3XXXddBg4cWOWO7rZt26ZZs2ZVAvQvatu2bZX3X35IVZL8+c9/TuPGjXP33XdXCStGjhxZpd/8f6i99dZb6dSpU2X7nDlzqgUsbdu2Te/evXP66acvsK75Yd+C9O/fP40bN87IkSNz0EEHLbTfojRt2nSBD3xbUJCx8847Z+edd87s2bPz+OOPZ8SIERk0aFC6d++ejTfeeKHrmL9vjznmmPzoRz9aYJ/VVlutyvsF7f8lsfzyy1eGCV9UkwfMNWzYMFtttVX++te/5s0336x8KOOi1pUkU6ZMqdZ38uTJlftj/v9eeOGF2WijjRa4rJoE9TXRrl27zJ07N1OnTq3VHxnatm2b5ZdfPqNHj17g9C/efbk0LLfccmnQoEGmTJlSbdrkyZMra6wPS7JvvniOfNnkyZPToEGDar9IqclnojbXniVR02thTS1O3QvaH3/6058yePDgnHHGGVXa33nnnSy77LLV+i/o8z916tQa/9Hgqzz44IOZPHlyHn744cq7wJPPH+a8uJZffvn84x//qNZek2tZXant9+kXffFYf9nUqVOr3Hm8JOtZkOWWW67y1yQL+3VMjx49qrxf2Hm2xRZb5OKLL67S/uGHH9aqni866aSTcvnll+eqq66q/CPTfDX9rvjss89SKpUWel5/ldocm/nqYv8srN6KiooqvwQCgAURhAPwrTd37txcc801WXnllXP55ZdXm3733XfnN7/5Tf76179mxx13zHLLLZeBAwfm2muvzcYbb5ypU6dWGRYlSXbcccecccYZWX755av9Q7emSqVSGjVqlIYNG1a2ffzxx7nuuuuq9Ntss82SJDfddFPWX3/9yvZbb701c+bMqVbXqFGjsvLKKy9wKJZFWWGFFbLffvvl4osvzrXXXpvBgwdX6zNx4sTMmjUrvXv3XuAyunfvnmnTpuWtt96qDF0//fTT3HvvvQtdb5MmTbL55ptn2WWXzb333psJEyZk4403XuidWauttlp69uyZZ555plpA9XXZfPPNc+655+Y///lPleFR/vznP9do/mOOOSajRo3K/vvvn7/85S+pqKioMv2zzz7L6NGjs9NOO2XLLbdM8nkYMH9ImSR58skn8/zzz1feNbvJJptk2WWXzX/+858ccsghS7qJi7TddttlxIgRufjii3PKKafUeL4dd9wxf/7znzN37txsuOGGdVJLbe7gW2aZZbLhhhvm9ttvz7nnnptmzZolSebNm5c//elP6dy5c1ZdddWlWsPCLMm+WW211dKpU6fccMMNGT58eGWYNGvWrNx2223ZeOON07x581rXVJtrz5Ko6bWwpuqq7lKpVHls57vnnnvyv//9L6usskq1/jfeeGOGDRtWuf9ff/31PPbYYwu8li6O+cv9ck2XXnrpYi+zf//+ufnmm3PnnXdWGSbihhtuqNH8dXXuL+736YYbbpgmTZrkpptuqvKH0ccffzyvv/56lbC1Lr63v6h58+bp379/JkyYkN69e1e7jtfUgs6zZ599NuPGjUuXLl1qvbwrrrgiJ598ck455ZRqQ2olNf+uqKioSN++fXP77bfnnHPOqfwj1Ycffpi77rrrK+uozbFZlNrun4XVu+mmm1a5xgDAggjCAfjW++tf/5rJkyfnrLPOyhZbbFFt+lprrZXf//73ueKKK7Ljjjsm+Xx4lJtuuimHHHJIOnfunK233rrKPIcddlhuu+22bLbZZjn88MPTu3fvzJs3L5MmTcp9992XI4444ivDrB122CHnnXdeBg0alAMOOCDTp0/PueeeW+0ffGuuuWZ++tOf5je/+U0aNmyYLbfcMs8991x+85vfpHXr1lXGBD7llFMyZsyY9OvXL4ceemhWW221fPLJJ3nttdcyatSoXHLJJYu8A/m8887LK6+8kiFDhuTee+/NLrvskg4dOuSdd97JmDFjctVVV+XPf/7zQoPwPfbYIyeccEJ+8pOf5Mgjj8wnn3yS3/3ud9XG5TzhhBPy5ptvZquttkrnzp3z/vvv57e//W2V8W5XXnnlNGvWLNdff33WWGONtGjRIiuuuGJWXHHFXHrppdluu+2y7bbbZsiQIenUqVPefffdPP/88/nnP/+ZW265ZZH7fkkddthhufLKK7PddtvllFNOSYcOHXLDDTdUDqfzxWOyIBtvvHEuvvjiDB06NBtssEEOPvjgrLnmmvnss88yYcKEXHbZZVlrrbWy0047ZbXVVssBBxyQCy+8MA0aNMh2222X1157Lccff3y6dOmSww8/PMnn40FfeOGF2WuvvfLuu+9mt912S/v27fP222/nmWeeydtvv13tjrrFtemmm2bPPffMaaedlrfeeis77rhjmjRpkgkTJqR58+b5xS9+scD5fvKTn+T666/P9ttvn1/+8pfp27dvGjdunDfffDMPPfRQdt555+yyyy61qmWttdZKklx22WVp2bJlmjZtmh49eiz0LtwRI0ZkwIAB6d+/f4YPH56KiopcdNFF+fe//50bb7xxsX49sKhztaaWZN80aNAgZ599dn72s59lxx13zIEHHpjZs2fnnHPOyfvvv58zzzyz1tuU1O7asyRqei38uuvecccdc/XVV2f11VdP796989RTT+Wcc85Z6DV02rRp2WWXXbL//vvngw8+yIknnpimTZvmmGOOWazt+LJ+/fplueWWy0EHHZQTTzwxjRs3zvXXX59nnnlmsZc5ePDgnH/++Rk8eHBOP/309OzZM6NGjVrkHy+/qLafvwVZku/TNm3aZNiwYRkxYkSWW2657LLLLnnzzTdz8sknp2PHjlWOdV18b3/Zb3/723z/+9/PpptumoMPPjjdu3fPhx9+mJdffjl33XVXHnzwwa9cxo477phTTz01J554YjbffPO8+OKLOeWUU9KjR49a/8Fp3LhxOeigg7LJJptkwIAB1cYo32ijjWr1XXHqqafmBz/4QQYMGJAjjjgic+fOzVlnnZVlllnmK4faqs2xqcv907BhwwwYMCDDhg3LvHnzctZZZ2XGjBk5+eSTa7gXAfhOq7/ndAJA3Rg4cGBRUVFRTJs2baF9fvKTnxSNGjUqpk6dWhRFUcydO7fo0qVLkaQ49thjFzjPzJkzi+OOO65YbbXVioqKiqJ169bF2muvXRx++OGVyymKokhS/N///d8Cl3HllVcWq622WtGkSZNipZVWKkaMGFFcccUVRZLi1Vdfrez3ySefFMOGDSvat29fNG3atNhoo42KcePGFa1bty4OP/zwKst8++23i0MPPbTo0aNH0bhx46JNmzbFBhtsUBx77LHFzJkzv3J/zZkzp7jmmmuKLbfcsmjTpk3RqFGjol27dsV2221X3HDDDcXcuXOLoiiKV199tUhSXHXVVVXmHzVqVLHuuusWzZo1K1ZaaaXi97//fXHiiScWX/zPirvvvrvYbrvtik6dOhUVFRVF+/bti+2337545JFHqizrxhtvLFZfffWicePGRZLixBNPrJz2zDPPFLvvvnvRvn37onHjxsUKK6xQbLnllsUll1xS2eeqq64qkhRPPvlkte2cP+2L+3nzzTcv1lxzzWp999prr6Jbt25V2v79738XW2+9ddG0adOiTZs2xb777ltcc801RZLimWee+ardXBRFUTz99NPFXnvtVXTt2rWoqKgolllmmWK99dYrTjjhhCrn69y5c4uzzjqrWHXVVYvGjRsXbdu2LX7+858Xb7zxRrVljh07tthhhx2KNm3aFI0bNy46depU7LDDDsUtt9xS2eehhx4qklRpW9T+WtD2z507tzj//POLtdZaq/L833jjjYu77rqrss/mm29ebL755lXm++yzz4pzzz23WGeddYqmTZsWLVq0KFZfffXiwAMPLF566aXKft26dSt22GGHatu3oGVecMEFRY8ePYqGDRsu8Jz8skceeaTYcssti2WWWaZo1qxZsdFGG1Wpuyj+3/l9zjnnLHJZ8y3sXN1rr72KZZZZplr/L38miqLm+2ZhRo4cWWy44YZF06ZNi2WWWabYaqutikcffXSB63377bdrVFNNrz3zz6mHHnqosq02217Ta+GCjv+C1LTuRV0j3nvvvWLfffct2rdvXzRv3rz4/ve/XzzyyCPVapi/7dddd11x6KGHFu3atSuaNGlSbLrppsX48eOrLLM2+2RBHnvssWLjjTcumjdvXrRr167Yb7/9in/+85/VzvvarOfNN98sdt1116JFixZFy5Yti1133bV47LHHavRZKoqFf/5qcz2t6ffpgsybN6847bTTis6dOxcVFRVF7969i7vvvrtYZ511il122WWx1rOw7+1u3boVe+21V5W2V199tdhnn32KTp06FY0bNy7atWtX9OvXrzjttNMq+yzsmlsURTF79uxi+PDhRadOnYqmTZsW66+/fjFy5MgF7qcvfw9++XM3/3xe2OuLavJdURRFceeddxa9e/cuKioqiq5duxZnnnlmjc/Xmh6butg/86/ZZ511VnHyySdXrnO99dYr7r333irLXNh1cEH/XQDAd0upKIpiKWXsAMASeOyxx7LJJpvk+uuvz6BBg+q7HJIccMABufHGGzN9+vTF/pk8fNN9W689S6vuhx9+OP37988tt9xS+QBm6terr76a1VdfPSeeeGJ+/etf13c5fMHSOjavvfZaevTokXPOOSfDhw+vs+UC8N1iaBQA+AYYM2ZMxo0blw022CDNmjXLM888kzPPPDM9e/Zc6AMjWbpOOeWUrLjiillppZUyc+bM3H333bn88stz3HHHCcEpG9/Wa8+3tW5q75lnnsmNN96Yfv36pVWrVnnxxRdz9tlnp1WrVtl3333ru7zvNMcGgG8bQTgAfAO0atUq9913Xy644IJ8+OGHadu2beUDC+c/EIqvV+PGjXPOOefkzTffzJw5c9KzZ8+cd955+eUvf1nfpUGd+bZee76tdVN7yyyzTMaPH58rrrgi77//flq3bp0tttgip59+euVDm6kfjg0A3zaGRgEAAAAAoKzVzaPgAQAAAADgG0oQDgAAAABAWfvOjRE+b968TJ48OS1btkypVKrvcgAAAAAAWExFUeTDDz/MiiuumAYNFn7f93cuCJ88eXK6dOlS32UAAAAAAFBH3njjjXTu3Hmh079zQXjLli2TfL5jWrVqVc/VAAAAAACwuGbMmJEuXbpU5r4L850LwucPh9KqVStBOAAAAABAGfiqYbA9LBMAAAAAgLImCAcAAAAAoKwJwgEAAAAAKGvfuTHCAQAAAKC+zJ07N5999ll9lwHfGo0bN07Dhg2XeDmCcAAAAABYyoqiyNSpU/P+++/XdynwrbPssstmhRVW+MoHYi6KIBwAAAAAlrL5IXj79u3TvHnzJQr04LuiKIp89NFHmTZtWpKkY8eOi70sQTgAAAAALEVz586tDMGXX375+i4HvlWaNWuWJJk2bVrat2+/2MOkeFgmAAAAACxF88cEb968eT1XAt9O8z87SzK+viAcAAAAAL4GhkOBxVMXnx1BOAAAAAAAZU0QDgAAAABAWfOwTAAAAACoJ336fL3rGz/+611fXXvttdfSo0ePTJgwIeuuu+43ctlLs8a6MGTIkLz//vsZOXJkfZfytXJHOAAAAACwQNOmTcuBBx6Yrl27pkmTJllhhRWy7bbbZty4cZV9SqXSdypUffnll7P33nunc+fOadKkSXr06JGf/vSnGb+U/spw9dVXZ9lll62z5f32t7/N1VdfXWfL+7ZwRzgAAAAAsEC77rprPvvss1xzzTVZaaWV8tZbb+WBBx7Iu+++W9+lLbZPP/00FRUVizXv+PHjs9VWW2WttdbKpZdemtVXXz0ffvhh/vKXv+SII47I2LFj67jaujN37tyUSqW0bt26vkupF+4IBwAAAACqef/99/P3v/89Z511Vvr3759u3bqlb9++OeaYY7LDDjskSbp3754k2WWXXVIqlSrfT5w4MTvvvHM6dOiQFi1a5Hvf+17uv//+Ksvv3r17zjjjjOyzzz5p2bJlunbtmssuu6xKn3/84x9Zb7310rRp0/Tp0ycTJkyoMn3u3LnZd99906NHjzRr1iyrrbZafvvb31bpM2TIkAwcODAjRozIiiuumFVXXbVGy/6yoigyZMiQ9OzZM4888kh22GGHrLzyyll33XVz4okn5i9/+csC51vQHd0jR45MqVSqfP/MM8+kf//+admyZVq1apUNNtgg48ePz8MPP5y99947H3zwQUqlUkqlUk466aQknwf6Rx11VDp16pRlllkmG264YR5++OFq67377rvTq1evNGnSJK+//nrl/phviy22yKGHHpqjjjoqbdq0yQorrFC5jvleeOGFfP/730/Tpk3Tq1ev3H///d+6XwK4IxwAAAAAqKZFixZp0aJFRo4cmY022ihNmjSp1ufJJ59M+/btc9VVV+UHP/hBGjZsmCSZOXNmtt9++5x22mlp2rRprrnmmuy000558cUX07Vr18r5f/Ob3+TUU0/Nr3/969x66605+OCDs9lmm2X11VfPrFmzsuOOO2bLLbfMn/70p7z66qv55S9/WWX98+bNS+fOnXPzzTenbdu2eeyxx3LAAQekY8eO2X333Sv7PfDAA2nVqlXGjBmToihqtOwve/rpp/Pcc8/lhhtuSIMG1e8vXpLhS372s59lvfXWy8UXX5yGDRvm6aefTuPGjdOvX79ccMEFOeGEE/Liiy8m+fy4JMnee++d1157LX/+85+z4oor5o477sgPfvCD/Otf/0rPnj2TJB999FFGjBiRyy+/PMsvv3zat2+/wPVfc801GTZsWJ544omMGzcuQ4YMySabbJIBAwZk3rx5GThwYLp27ZonnngiH374YY444ojF3tb6IggHAAAAAKpp1KhRrr766uy///655JJLsv7662fzzTfPT37yk/Tu3TtJ0q5duySfh8ArrLBC5bzrrLNO1llnncr3p512Wu64447ceeedOeSQQyrbt99++wwdOjRJcvTRR+f888/Pww8/nNVXXz3XX3995s6dmyuvvDLNmzfPmmuumTfffDMHH3xw5fyNGzfOySefXPm+R48eeeyxx3LzzTdXCcKXWWaZXH755ZVDolx22WVfuewve+mll5Ikq6++eu135leYNGlSjjzyyMplzw+yk6R169YplUpV9u/EiRNz44035s0338yKK66YJBk+fHhGjx6dq666KmeccUaS5LPPPstFF11U5VgsSO/evXPiiSdWrvv3v/99HnjggQwYMCD33XdfJk6cmIcffriyhtNPPz0DBgyoux3wNTA0CgAAAACwQLvuumsmT56cO++8M9tuu20efvjhrL/++l/5sMVZs2blqKOOSq9evbLsssumRYsWeeGFFzJp0qQq/eYH6kkqw95p06YlSZ5//vmss846ad68eWWfjTfeuNq6LrnkkvTp0yft2rVLixYt8sc//rHaetZee+0q44LXdNlfVBRFZZ11bdiwYdlvv/2y9dZb58wzz8zEiRMX2f+f//xniqLIqquuWnnnfosWLTJ27Ngq81ZUVFTZxwvz5T4dO3asPA4vvvhiunTpUiWI79u3b2027xtBEA4AAAAALFTTpk0zYMCAnHDCCXnssccyZMiQyruHF+bII4/MbbfdltNPPz2PPPJInn766ay99tr59NNPq/Rr3LhxlfelUinz5s1L8v+C50W5+eabc/jhh2efffbJfffdl6effjp77713tfUss8wyVd7XZNlfNn9s8eeff75W8zVo0KDa+j777LMq70866aQ899xz2WGHHfLggw+mV69eueOOOxa6zHnz5qVhw4Z56qmn8vTTT1e+nn/++SpjpDdr1qxGwf1XHYelEf5/3QThAAAAAECN9erVK7Nmzap837hx48ydO7dKn0ceeSRDhgzJLrvskrXXXjsrrLBCXnvttVqv55lnnsnHH39c2fb4449XW0+/fv0ydOjQrLfeellllVW+8m7qmi77y9Zdd9306tUrv/nNbypD4i96//33Fzhfu3bt8uGHH1bZZ08//XS1fquuumoOP/zw3HffffnRj36Uq666Ksnnd3V/ef+ut956mTt3bqZNm5ZVVlmlyuuLd27XhdVXXz2TJk3KW2+9Vdn25JNP1uk6vg6CcAAAAACgmunTp1c+TPLZZ5/Nq6++mltuuSVnn312dt5558p+3bt3zwMPPJCpU6fmvffeS5Ksssoquf322/P000/nmWeeyaBBgxYYHi/KoEGD0qBBg+y77775z3/+k1GjRuXcc8+t0meVVVbJ+PHjc++99+a///1vjj/++BqFtDVZ9peVSqVcddVV+e9//5vNNtsso0aNyiuvvJJnn302p59+epV98kUbbrhhmjdvnl//+td5+eWXc8MNN1QZWubjjz/OIYcckocffjivv/56Hn300Tz55JNZY401kny+f2fOnJkHHngg77zzTj766KOsuuqq+dnPfpbBgwfn9ttvz6uvvponn3wyZ511VkaNGvWV218bAwYMyMorr5y99torzz77bB599NEce+yxlfvk28LDMgEAAACgnowfX98VLFyLFi2y4YYb5vzzz8/EiRPz2WefpUuXLtl///3z61//urLfb37zmwwbNix//OMf06lTp7z22ms5//zzs88++6Rfv35p27Ztjj766MyYMaPW67/rrrty0EEHZb311kuvXr1y1llnZdddd63sc9BBB+Xpp5/OHnvskVKplJ/+9KcZOnRo/vrXvy7xshekb9++GT9+fE4//fTsv//+eeedd9KxY8f069cvF1xwwQLnadOmTf70pz/lyCOPzGWXXZatt946J510Ug444IAkScOGDTN9+vQMHjw4b731Vtq2bZsf/ehHlQ8B7devXw466KDssccemT59ek488cScdNJJueqqq3LaaafliCOOyP/+978sv/zy2XjjjbP99tvXYi9/tYYNG2bkyJHZb7/98r3vfS8rrbRSzjnnnOy0005p2rRpna5raSoVizMgzrfYjBkz0rp163zwwQdp1apVfZcDAAAAQJn75JNP8uqrr6ZHjx7fquAQFubRRx/N97///bz88stZeeWVl/r6FvUZqmne645wAAAAAAAW6o477kiLFi3Ss2fPvPzyy/nlL3+ZTTbZ5GsJweuKIBwAAAAAgIX68MMPc9RRR+WNN95I27Zts/XWW+c3v/lNfZdVK4JwAAAAAAAWavDgwRk8eHB9l7FEGtR3AQAAAAAAsDQJwgEAAAAAKGv1HoRfdNFFlU/73GCDDfLII48ssv/111+fddZZJ82bN0/Hjh2z9957Z/r06V9TtQAAAAAAfNvUaxB+00035bDDDsuxxx6bCRMmZNNNN812222XSZMmLbD/3//+9wwePDj77rtvnnvuudxyyy158skns99++33NlQMAAAAA8G1Rr0H4eeedl3333Tf77bdf1lhjjVxwwQXp0qVLLr744gX2f/zxx9O9e/cceuih6dGjR77//e/nwAMPzPjx4xe6jtmzZ2fGjBlVXgAAAAAAfHfUWxD+6aef5qmnnso222xTpX2bbbbJY489tsB5+vXrlzfffDOjRo1KURR56623cuutt2aHHXZY6HpGjBiR1q1bV766dOlSp9sBAAAAAMA3W6P6WvE777yTuXPnpkOHDlXaO3TokKlTpy5wnn79+uX666/PHnvskU8++SRz5szJD3/4w1x44YULXc8xxxyTYcOGVb6fMWOGMBwAAACAb4Q+l/X5Wtc3/oCFj6xQ7rp3757DDjsshx12WJKkVCrljjvuyMCBA5fK+h5++OH0798/7733XpZddtl6X87SssUWW2TdddfNBRdcUN+lLFK9PyyzVCpVeV8URbW2+f7zn//k0EMPzQknnJCnnnoqo0ePzquvvpqDDjpooctv0qRJWrVqVeUFAAAAANTM1KlT88tf/jKrrLJKmjZtmg4dOuT73/9+Lrnkknz00Uf1Xd5imzJlSrbbbrv6LiMTJkzIj3/843To0CFNmzbNqquumv333z///e9/l8r6TjrppKy77rp1trzbb789p556ap0tb2mptzvC27Ztm4YNG1a7+3vatGnV7hKfb8SIEdlkk01y5JFHJkl69+6dZZZZJptuumlOO+20dOzYcanXDQAAAADfFa+88ko22WSTLLvssjnjjDOy9tprZ86cOfnvf/+bK6+8MiuuuGJ++MMf1lt9RVFk7ty5adSo9jHnCiussBQqqp277747u+66a7bddttcf/31WXnllTNt2rTccsstOf7443PTTTfVd4kL9dlnn6Vx48Zp06ZNfZdSI/V2R3hFRUU22GCDjBkzpkr7mDFj0q9fvwXO89FHH6VBg6olN2zYMMnnJz0AAAAAUHeGDh2aRo0aZfz48dl9992zxhprZO21186uu+6ae+65JzvttFNl3w8++CAHHHBA2rdvn1atWmXLLbfMM888Uzl9/p3I1113Xbp3757WrVvnJz/5ST788MPKPkVR5Oyzz85KK62UZs2aZZ111smtt95aOf3hhx9OqVTKvffemz59+qRJkyZ55JFHMnHixOy8887p0KFDWrRoke9973u5//77F7ltpVIpI0eOrKytVCpVe1199dU1qitJRo0alVVXXTXNmjVL//7989prry1y/R999FH23nvvbL/99rnzzjuz9dZbp0ePHtlwww1z7rnn5tJLL13gfAu6o/uCCy5I9+7dq+ynvn37Zplllsmyyy6bTTbZJK+//nquvvrqnHzyyXnmmWeqbWNNj9+VV16ZlVZaKU2aNElRFNliiy0qh5tJPh+C5owzzsg+++yTli1bpmvXrrnsssuq1PvYY49l3XXXTdOmTdOnT5+MHDkypVIpTz/99CL32ZKo16FRhg0blssvvzxXXnllnn/++Rx++OGZNGlS5VAnxxxzTAYPHlzZf6eddsrtt9+eiy++OK+88koeffTRHHrooenbt29WXHHF+toMAAAAACg706dPz3333Zf/+7//yzLLLLPAPvOHOC6KIjvssEOmTp2aUaNG5amnnsr666+frbbaKu+++25l/4kTJ2bkyJG5++67c/fdd2fs2LE588wzK6cfd9xxueqqq3LxxRfnueeey+GHH56f//znGTt2bJX1HnXUURkxYkSef/759O7dOzNnzsz222+f+++/PxMmTMi2226bnXbaKZMmTarRtg4fPjxTpkypfJ177rlp3rx5+vTpU6O63njjjfzoRz/K9ttvn6effjr77bdffvWrXy1ynffee2/eeeedHHXUUQucvrjjgc+ZMycDBw7M5ptvnmeffTbjxo3LAQcckFKplD322CNHHHFE1lxzzcpt3WOPPWp8/F5++eXcfPPNue222xYZWv/mN79Jnz59MmHChAwdOjQHH3xwXnjhhSTJhx9+mJ122ilrr712/vnPf+bUU0/N0UcfvVjbWhv1NjRKkuyxxx6ZPn16TjnllEyZMiVrrbVWRo0alW7duiX5fJyeL56sQ4YMyYcffpjf//73OeKII7Lssstmyy23zFlnnVVfmwAAAAAAZenll19OURRZbbXVqrS3bds2n3zySZLk//7v/3LWWWfloYceyr/+9a9MmzYtTZo0SZKce+65GTlyZG699dYccMABSZJ58+bl6quvTsuWLZMke+65Zx544IGcfvrpmTVrVs4777w8+OCD2XjjjZMkK620Uv7+97/n0ksvzeabb15ZwymnnJIBAwZUvl9++eWzzjrrVL4/7bTTcscdd+TOO+/MIYcc8pXb2qJFi7Ro0SJJ8vjjj+e4447LNddck7XWWqtGdV188cVZaaWVcv7556dUKmW11VbLv/71r0Xmli+99FKSZPXVV//K+mpjxowZ+eCDD7Ljjjtm5ZVXTpKsscYaVba1UaNGVYaGefDBB2t0/D799NNcd911adeu3SJr2H777TN06NAkydFHH53zzz8/Dz/8cFZfffVcf/31KZVK+eMf/5imTZumV69e+d///pf999+/TvfDl9VrEJ58/vOK+Tvly+bflv9Fv/jFL/KLX/xiKVcFAAAAACT/767v+f7xj39k3rx5+dnPfpbZs2cnSZ566qnMnDkzyy+/fJW+H3/8cSZOnFj5vnv37pUheJJ07Ngx06ZNS5L85z//ySeffFIl4E4+D1/XW2+9Km3z79Seb9asWTn55JNz9913Z/LkyZkzZ04+/vjjGt8RPt+kSZMycODADB8+PLvvvnuN63r++eez0UYbVdlX80PzhVlaQz23adMmQ4YMybbbbpsBAwZk6623zu67777I5yvW9Ph169btK0Pw5PNnO85XKpWywgorVB7nF198Mb17907Tpk0r+/Tt27fG27e46j0IBwAAAAC+eVZZZZWUSqXKIS3mW2mllZIkzZo1q2ybN29eOnbsmIcffrjacr44xEfjxo2rTCuVSpk3b17lMpLknnvuSadOnar0m3+X8nxfHqrlyCOPzL333ptzzz03q6yySpo1a5bddtstn376aQ229HOzZs3KD3/4w2y88cY55ZRTqmzbV9W1OKH2qquumiR54YUXvjI0/6IGDRpUW99nn31W5f1VV12VQw89NKNHj85NN92U4447LmPGjMlGG220wGXW9PgtbIicL1vUcS6KotofV76O5z8KwgEAAL6B+lzW56s7Uc34A8bXdwkAZWP55ZfPgAED8vvf/z6/+MUvFhmCrr/++pk6dWoaNWpU5aGNtdGrV680adIkkyZNqjIMSk088sgjGTJkSHbZZZckycyZM7/yYZVfVBRFfv7zn2fevHm57rrrqgS1NamrV69elQ/enO/xxx9f5Dq32WabtG3bNmeffXbuuOOOatPff//9BY4T3q5du0ydOrVKoLyg8brXW2+9rLfeejnmmGOy8cYb54YbbshGG22UioqKzJ07t0rfujh+NTV/eJTZs2dX/iFh/Pil//1drw/LBAAAAAC+uS666KLMmTMnffr0yU033ZTnn38+L774Yv70pz/lhRdeSMOGDZMkW2+9dTbeeOMMHDgw9957b1577bU89thjOe6442occrZs2TLDhw/P4YcfnmuuuSYTJ07MhAkT8oc//CHXXHPNIuddZZVVcvvtt+fpp5/OM888k0GDBlXegVwTJ510Uu6///5ceumlmTlzZqZOnZqpU6fm448/rlFdBx10UCZOnJhhw4blxRdfzA033LDAYZ+/aJlllsnll1+ee+65Jz/84Q9z//3357XXXsv48eNz1FFH5aCDDlrgfFtssUXefvvtnH322Zk4cWL+8Ic/5K9//Wvl9FdffTXHHHNMxo0bl9dffz333Xdf/vvf/1aOE969e/e8+uqrefrpp/POO+9k9uzZdXL8amr+sTnggAPy/PPPV97Jn1QfhqcuuSMcAAAAAOrJN/2XLCuvvHImTJiQM844I8ccc0zefPPNNGnSJL169crw4cMrn/1XKpUyatSoHHvssdlnn33y9ttvZ4UVVshmm22WDh061Hh9p556atq3b58RI0bklVdeybLLLpv1118/v/71rxc53/nnn5999tkn/fr1S9u2bXP00UdnxowZNV7v2LFjM3PmzPTr169K+1VXXZUhQ4Z8ZV1du3bNbbfdlsMPPzwXXXRR+vbtmzPOOCP7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8UTWXXfdOi8QAAAAAACWRI2D8AkTJiT5/I7wf/3rX6moqKicVlFRkXXWWSfDhw+v+woBAAAAAGAJ1DgIf+ihh5Ike++9d37729+mVatWS60oAAAAAACoKzUOwue76qqrlkYdAAAAAACwVNQ6CJ81a1bOPPPMPPDAA5k2bVrmzZtXZforr7xSZ8UBAAAAAMCSqnUQvt9++2Xs2LHZc88907Fjx5RKpaVRFwAAAAAA1IlaB+F//etfc88992STTTapkwIuuuiinHPOOZkyZUrWXHPNXHDBBdl0000X2Pfhhx9O//79q7U///zzWX311eukHgAAAAAAykuD2s6w3HLLpU2bNnWy8ptuuimHHXZYjj322EyYMCGbbrpptttuu0yaNGmR87344ouZMmVK5atnz551Ug8AAAAAAOWn1kH4qaeemhNOOCEfffTREq/8vPPOy7777pv99tsva6yxRi644IJ06dIlF1988SLna9++fVZYYYXKV8OGDRfad/bs2ZkxY0aVFwAAAAAA3x21HhrlN7/5TSZOnJgOHTqke/fuady4cZXp//znP2u0nE8//TRPPfVUfvWrX1Vp32abbfLYY48tct711lsvn3zySXr16pXjjjtugcOlzDdixIicfPLJNaoJAAAAAIDyU+sgfODAgXWy4nfeeSdz585Nhw4dqrR36NAhU6dOXeA8HTt2zGWXXZYNNtggs2fPznXXXZetttoqDz/8cDbbbLMFznPMMcdk2LBhle9nzJiRLl261Mk2AAAAAADwzVfrIPzEE0+s0wJKpVKV90VRVGubb7XVVstqq61W+X7jjTfOG2+8kXPPPXehQXiTJk3SpEmTuisYAAAAAIBvlVqPEZ4k77//fi6//PIcc8wxeffdd5N8PiTK//73vxovo23btmnYsGG1u7+nTZtW7S7xRdloo43y0ksv1bg/AAAAAADfLbUOwp999tmsuuqqOeuss3Luuefm/fffT5LccccdOeaYY2q8nIqKimywwQYZM2ZMlfYxY8akX79+NV7OhAkT0rFjxxr3BwAAAADgu6XWQ6MMGzYsQ4YMydlnn52WLVtWtm+33XYZNGhQrZe15557pk+fPtl4441z2WWXZdKkSTnooIOSfD6+9//+979ce+21SZILLrgg3bt3z5prrplPP/00f/rTn3Lbbbfltttuq+1mAAAAAADwHVHrIPzJJ5/MpZdeWq29U6dOC33I5cLssccemT59ek455ZRMmTIla621VkaNGpVu3bolSaZMmZJJkyZV9v/0008zfPjw/O9//0uzZs2y5ppr5p577sn2229f280AAAAAAOA7otZBeNOmTTNjxoxq7S+++GLatWtX6wKGDh2aoUOHLnDa1VdfXeX9UUcdlaOOOqrW6wAAAAAA4Lur1mOE77zzzjnllFPy2WefJUlKpVImTZqUX/3qV9l1113rvEAAAAAAAFgStQ7Czz333Lz99ttp3759Pv7442y++eZZZZVV0rJly5x++ulLo0YAAAAAAFhstR4apVWrVvn73/+eBx98MP/85z8zb968rL/++tl6662XRn0AAAAAALBEah2Ez7fllltmyy23rMtaAAAAAACgztUoCP/d736XAw44IE2bNs3vfve7RfY99NBD66QwAAAAAACoCzUKws8///z87Gc/S9OmTXP++ecvtF+pVBKEAwAAAADwjVKjIPzVV19d4P8HAAAAAIBvugb1XQAAAAAAACxNtQ7Cd9ttt5x55pnV2s8555z8+Mc/rpOiAAAAAACgrtQ6CB87dmx22GGHau0/+MEP8re//a1OigIAAAAAgLpS6yB85syZqaioqNbeuHHjzJgxo06KAgAAAACAulLrIHyttdbKTTfdVK39z3/+c3r16lUnRQEAAAAAQF1pVNsZjj/++Oy6666ZOHFittxyyyTJAw88kBtvvDG33HJLnRcIAAAAAABLotZB+A9/+MOMHDkyZ5xxRm699dY0a9YsvXv3zv3335/NN998adQIAAAAAACLrdZBeJLssMMOC3xgJgAAAAAAfNPUeoxwAAAAAAD4NqnRHeFt2rTJf//737Rt2zbLLbdcSqXSQvu+++67dVYcAAAAAAAsqRoF4eeff35atmyZJLnggguWZj0AAAAAAFCnahSEP/PMM9ltt93SpEmT9OjRI/369UujRos1vDgAAAAAAHytajRG+IUXXpiZM2cmSfr372/4EwAAAAAAvjVqdFt39+7d87vf/S7bbLNNiqLIuHHjstxyyy2w72abbVanBQIAAAAAwJKoURB+zjnn5KCDDsqIESNSKpWyyy67LLBfqVTK3Llz67RAAAAAAABYEjUKwgcOHJiBAwdm5syZadWqVV588cW0b99+adcGAAAAAABLrEZjhA8bNiyzZs1KixYt8tBDD6VHjx5p3br1Al8AAAAAAPBNUuuHZW655ZYelgkAAAAAwLeGh2UCAAAAAFDWPCwTAAAAAICy5mGZAAAAAACUtRoF4fN98WGZjRrValYAAAAAAKgXNXpY5hdtvvnmef3113Pcccflpz/9aaZNm5YkGT16dJ577rk6LxAAAAAAAJZErYPwsWPHZu21184TTzyR22+/PTNnzkySPPvssznxxBPrvEAAAAAAAFgStQ7Cf/WrX+W0007LmDFjUlFRUdnev3//jBs3rk6LAwAAAACAJVXrIPxf//pXdtlll2rt7dq1y/Tp0+ukKAAAAAAAqCu1DsKXXXbZTJkypVr7hAkT0qlTpzopCgAAAAAA6kqtg/BBgwbl6KOPztSpU1MqlTJv3rw8+uijGT58eAYPHrw0agQAAAAAgMVW6yD89NNPT9euXdOpU6fMnDkzvXr1ymabbZZ+/frluOOOWxo1AgAAAADAYmtU2xkaN26c66+/PqecckomTJiQefPmZb311kvPnj2XRn0AAAAAALBEah2Ez7fyyitnpZVWSpKUSqU6KwgAAAAAAOrSYgXh1157bc4555y89NJLSZJVV101Rx55ZPbcc886LQ4AAAAA+O7oc1mf+i7hW2n8AePru4RvvFoH4eedd16OP/74HHLIIdlkk01SFEUeffTRHHTQQXnnnXdy+OGHL406AQAAAABgsdQ6CL/wwgtz8cUXZ/DgwZVtO++8c9Zcc82cdNJJgnAAAAAAAL5RGtR2hilTpqRfv37V2vv165cpU6bUSVEAAAAAAFBXah2Er7LKKrn55purtd90003p2bNnnRQFAAAAAAB1pdZDo5x88snZY4898re//S2bbLJJSqVS/v73v+eBBx5YYEAOAAAAAAD1qdZ3hO+666554okn0rZt24wcOTK333572rZtm3/84x/ZZZddlkaNAAAAAACw2Gp9R3iSbLDBBvnTn/5U17UAAAAAAECdq/Ed4ZMnT87w4cMzY8aMatM++OCDHHnkkXnrrbfqtDgAAAAAAFhSNQ7CzzvvvMyYMSOtWrWqNq1169b58MMPc95559VpcQAAAAAAsKRqHISPHj06gwcPXuj0wYMH5+67766TogAAAAAAoK7UOAh/9dVX07Vr14VO79y5c1577bW6qAkAAAAAAOpMjYPwZs2aLTLofu2119KsWbO6qAkAAAAAAOpMjYPwDTfcMNddd91Cp1977bXp27dvnRQFAAAAAAB1pVFNOw4fPjwDBgxI69atc+SRR6ZDhw5Jkrfeeitnn312rr766tx3331LrVAAAAAAAFgcNQ7C+/fvnz/84Q/55S9/mfPPPz+tWrVKqVTKBx98kMaNG+fCCy/MlltuuTRrBQAAAACAWqtxEJ4kBx54YHbcccfcfPPNefnll1MURVZdddXstttu6dy589KqEQAAAAAAFlutgvAk6dSpUw4//PClUQsAAAAAANS5Gj8sEwAAAAAAvo0E4QAAAAAAlDVBOAAAAAAAZU0QDgAAAABAWROEAwAAAABQ1hrVdoblllsupVKpWnupVErTpk2zyiqrZMiQIdl7773rpEAAAAAAAFgStQ7CTzjhhJx++unZbrvt0rdv3xRFkSeffDKjR4/O//3f/+XVV1/NwQcfnDlz5mT//fdfGjUDAAAAAECN1ToI//vf/57TTjstBx10UJX2Sy+9NPfdd19uu+229O7dO7/73e8E4QAAAAAA1LtajxF+7733Zuutt67WvtVWW+Xee+9Nkmy//fZ55ZVXlrw6AAAAAABYQrUOwtu0aZO77rqrWvtdd92VNm3aJElmzZqVli1bLnl1AAAAAACwhGo9NMrxxx+fgw8+OA899FD69u2bUqmUf/zjHxk1alQuueSSJMmYMWOy+eab13mxAAAAAABQW7UOwvfff//06tUrv//973P77benKIqsvvrqGTt2bPr165ckOeKII+q8UAAAAAAAWBy1DsKTZJNNNskmm2xS17UAAAAAAECdW6wgfN68eXn55Zczbdq0zJs3r8q0zTbbrE4KAwAAAACAulDrIPzxxx/PoEGD8vrrr6coiirTSqVS5s6dW2fFAQAAAADAkqp1EH7QQQelT58+ueeee9KxY8eUSqWlURcAAAAAANSJWgfhL730Um699dasssoqS6MeAAAAAACoUw1qO8OGG26Yl19+eWnUAgAAAAAAda7Wd4T/4he/yBFHHJGpU6dm7bXXTuPGjatM7927d50VBwAAAAAAS6rWQfiuu+6aJNlnn30q20qlUoqi8LBMAAAAAAC+cWodhL/66qtLow4AAAAAAFgqah2Ed+vWbWnUAQAAAAAAS0WNgvA777wz2223XRo3bpw777xzkX1/+MMf1klhAAAAAABQF2oUhA8cODBT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vQAAAAAAUCu1viP8l7/8ZS677LL069evsm2rrbZK06ZNc8ABB+S5557LBRdcYPxwAAAAAAC+EWp9R/jEiRPTqlWrau2tWrXKK6+8kiTp2bNn3nnnnSWvDgAAAAAAllCtg/ANNtggRx55ZN5+++3KtrfffjtHHXVUvve97yVJXnrppXTu3LnuqgQAAAAAgMVU66FRrrjiiuy8887p3LlzunTpklKplEmTJmWllVbKX/7ylyTJzJkzc/zxx9d5sQAAAAAAUFu1DsJXW221PP/887n33nvz3//+N0VRZPXVV8+AAQPSoMHnN5gPHDiwrusEAAAAAIDFUusgPElKpVJ+8IMf5Ac/+EFd1wMAAAAAAHVqsYLwWbNmZezYsZk0aVI+/fTTKtMOPfTQOikMAAAAAADqQq2D8AkTJmT77bfPRx99lFmzZqVNmzZ555130rx587Rv314QDgAAAADAN0qD2s5w+OGHZ6eddsq7776bZs2a5fHHH8/rr7+eDTbYIOeee+7SqBEAAAAAABZbrYPwp59+OkcccUQaNmyYhg0bZvbs2enSpUvOPvvs/PrXv14aNQIAAAAAwGKrdRDeuHHjlEqlJEmHDh0yadKkJEnr1q0r/z8AAAAAAHxT1HqM8PXWWy/jx4/Pqquumv79++eEE07IO++8k+uuuy5rr7320qgRAAAAAAAWW63vCD/jjDPSsWPHJMmpp56a5ZdfPgcffHCmTZuWyy67rM4LBAAAAACAJVGrO8KLoki7du2y5pprJknatWuXUaNGLZXCAAAAAACgLtTqjvCiKNKzZ8+8+eabS6seAAAAAACoU7UKwhs0aJCePXtm+vTpS6seAAAAAACoU7UeI/zss8/OkUcemX//+99Lox4AAAAAAKhTtRojPEl+/vOf56OPPso666yTioqKNGvWrMr0d999t86KAwAAAACAJVXrIPyCCy5YCmUAAAAAAMDSUesgfK+99loadQAAAAAAwFJR6zHCk2TixIk57rjj8tOf/jTTpk1LkowePTrPPfdcnRYHAAAAAABLqtZB+NixY7P22mvniSeeyO23356ZM2cmSZ599tmceOKJdV4gAAAAAAAsiVoH4b/61a9y2mmnZcyYMamoqKhs79+/f8aNG1enxQEAAAAAwJKqdRD+r3/9K7vssku19nbt2mX69Ol1UhQAAAAAANSVWgfhyy67bKZMmVKtfcKECenUqVOdFAUAAAAAAHWl1kH4oEGDcvTRR2fq1KkplUqZN29eHn300QwfPjyDBw9eGjUCAAAAAMBiq3UQfvrpp6dr167p1KlTZs6cmV69emWzzTZLv379ctxxxy2NGgEAAAAAYLE1qu0MjRs3zvXXX59TTjklEyZMyLx587LeeuulZ8+eS6M+AAAAAABYIrUOwseOHZvNN988K6+8clZeeeWlURMAAAAAANSZWg+NMmDAgHTt2jW/+tWv8u9//3tp1AQAAAAAAHWm1kH45MmTc9RRR+WRRx5J796907t375x99tl58803l0Z9AAAAAACwRGodhLdt2zaHHHJIHn300UycODF77LFHrr322nTv3j1bbrnl0qgRAAAAAAAWW62D8C/q0aNHfvWrX+XMM8/M2muvnbFjx9ZVXQAAAAAAUCcWOwh/9NFHM3To0HTs2DGDBg3KmmuumbvvvrsuawMAAAAAgCXWqLYz/PrXv86NN96YyZMnZ+utt84FF1yQgQMHpvn/1959h1lR3f8D/ywoSxOQIqAgohRBRBEsgIoFQY2oiYWoUQlYCIhiD7GAJXYUNSpqRBMr9ooKGguKFUETaaIgaiD2gvELwp7fH/72hru7wNJcGF+v59nn2Tv3zMyZuXPOnPu+c+dWr74m6gcAAAAAAKtkhYPw559/Pk477bTo3bt31K9fP++5yZMnx7bbbru66gYAAAAAAKtshYPwCRMm5D3+5ptv4s4774y//vWv8fbbb8fixYtXW+UAAAAAAGBVrfQ9wv/xj3/E7373u2jcuHFce+21se+++8abb765OusGAAAAAACrbIWuCP/444/jtttui1GjRsX3338fhx56aPz444/xwAMPRNu2bddUHQEAAAAAYKWV+4rwfffdN9q2bRtTpkyJa6+9Nv7973/HtddeuybrBgAAAAAAq6zcV4SPHTs2TjzxxPjDH/4QLVu2XJN1AgAAAACA1abcV4SPHz8+vvvuu+jUqVPsuOOO8Ze//CU+++yzNVk3AAAAAABYZeUOwjt37hw333xzzJ07N44//vi45557YpNNNomioqIYN25cfPfdd2uyngAAAAAAsFLKHYQXq169evTt2zdeeuml+Oc//xmnnnpqXHLJJbHRRhvF/vvvvybqCAAAAAAAK22Fg/AltW7dOi677LL4+OOP4+67715ddQIAAAAAgNVmlYLwYpUrV44DDzwwHn300dWxOAAAAAAAWG1WSxAOAAAAAABrK0E4AAAAAACZJggHAAAAACDTBOEAAAAAAGSaIBwAAAAAgEwThAMAAAAAkGmCcAAAAAAAMk0QDgAAAABApgnCAQAAAADINEE4AAAAAACZJggHAAAAACDTBOEAAAAAAGSaIBwAAAAAgEwThAMAAAAAkGkVHoRff/310bx586hatWp07Ngxxo8fv9SyL730UnTt2jXq1asX1apViy233DKuuuqqn7G2AAAAAACsa9aryJWPHj06Bg8eHNdff3107do1brzxxthnn31iypQpsemmm5YqX6NGjTjhhBOiffv2UaNGjXjppZfi+OOPjxo1asRxxx1XAVsAAAAAAMDarkKvCL/yyiujX79+ccwxx0SbNm1ixIgR0bRp07jhhhvKLN+hQ4c47LDDYquttorNNtssfve730XPnj2XeRX5ggUL4ttvv837AwAAAADgl6PCgvCFCxfGxIkTo0ePHnnTe/ToERMmTCjXMiZNmhQTJkyIbt26LbXMxRdfHLVr1879NW3adJXqDQAAAADAuqXCgvDPP/88Fi9eHA0bNsyb3rBhw5g3b94y523SpEkUFhZGp06dYuDAgXHMMccsteyQIUPim2++yf199NFHq6X+AAAAAACsGyr0HuEREQUFBXmPU0qlppU0fvz4mD9/frz66qvxxz/+MVq0aBGHHXZYmWULCwujsLBwtdUXAAAAAIB1S4UF4fXr14/KlSuXuvr7008/LXWVeEnNmzePiIitt946/vOf/8SwYcOWGoQDAAAAAPDLVmG3RqlSpUp07Ngxxo0blzd93Lhx0aVLl3IvJ6UUCxYsWN3VAwAAAAAgIyr01iinnHJKHHnkkdGpU6fo3Llz3HTTTTFnzpzo379/RPx0f+9PPvkk/v73v0dExHXXXRebbrppbLnllhER8dJLL8UVV1wRgwYNqrBtAAAAAABg7VahQXjv3r3jiy++iPPPPz/mzp0b7dq1izFjxkSzZs0iImLu3LkxZ86cXPmioqIYMmRIzJo1K9Zbb73YYost4pJLLonjjz++ojYBAAAAAIC1XIX/WOaAAQNiwIABZT5322235T0eNGiQq78BAAAAAFghFXaPcAAAAAAA+DkIwgEAAAAAyDRBOAAAAAAAmSYIBwAAAAAg0wThAAAAAABkmiAcAAAAAIBME4QDAAAAAJBpgnAAAAAAADJNEA4AAAAAQKYJwgEAAAAAyDRBOAAAAAAAmSYIBwAAAAAg0wThAAAAAABkmiAcAAAAAIBME4QDAAAAAJBpgnAAAAAAADJNEA4AAAAAQKYJwgEAAAAAyDRBOAAAAAAAmSYIBwAAAAAg0wThAAAAAABkmiAcAAAAAIBME4QDAAAAAJBpgnAAAAAAADJNEA4AAAAAQKYJwgEAAAAAyDRBOAAAAAAAmSYIBwAAAAAg0wThAAAAAABkmiAcAAAAAIBME4QDAAAAAJBpgnAAAAAAADJNEA4AAAAAQKYJwgEAAAAAyDRBOAAAAAAAmSYIBwAAAAAg0wThAAAAAABkmiAcAAAAAIBME4QDAAAAAJBpgnAAAAAAADJNEA4AAAAAQKYJwgEAAAAAyDRBOAAAAAAAmSYIBwAAAAAg0wThAAAAAABkmiAcAAAAAIBME4QDAAAAAJBpgnAAAAAAADJNEA4AAAAAQKYJwgEAAAAAyDRBOAAAAAAAmSYIBwAAAAAg0wThAAAAAABkmiAcAAAAAIBME4QDAAAAAJBpgnAAAAAAADJNEA4AAAAAQKYJwgEAAAAAyDRBOAAAAAAAmSYIBwAAAAAg0wThAAAAAABkmiAcAAAAAIBME4QDAAAAAJBpgnAAAAAAADJNEA4AAAAAQKYJwgEAAAAAyDRBOAAAAAAAmSYIBwAAAAAg0wThAAAAAABkmiAcAAAAAIBME4QDAAAAAJBpgnAAAAAAADJNEA4AAAAAQKYJwgEAAAAAyDRBOAAAAAAAmSYIBwAAAAAg0wThAAAAAABkmiAcAAAAAIBME4QDAAAAAJBpgnAAAAAAADJNEA4AAAAAQKYJwgEAAAAAyDRBOAAAAAAAmSYIBwAAAAAg0wThAAAAAABkmiAcAAAAAIBME4QDAAAAAJBpgnAAAAAAADJNEA4AAAAAQKYJwgEAAAAAyDRBOAAAAAAAmSYIBwAAAAAg0wThAAAAAABkmiAcAAAAAIBME4QDAAAAAJBpgnAAAAAAADJNEA4AAAAAQKYJwgEAAAAAyLQKD8Kvv/76aN68eVStWjU6duwY48ePX2rZBx98MPbaa69o0KBB1KpVKzp37hxPP/30z1hbAAAAAADWNRUahI8ePToGDx4cZ511VkyaNCl22WWX2GeffWLOnDllln/xxRdjr732ijFjxsTEiRNj9913j169esWkSZN+5poDAAAAALCuqNAg/Morr4x+/frFMcccE23atIkRI0ZE06ZN44Ybbiiz/IgRI+KMM86I7bffPlq2bBkXXXRRtGzZMh577LGfueYAAAAAAKwrKiwIX7hwYUycODF69OiRN71Hjx4xYcKEci2jqKgovvvuu6hbt+5SyyxYsCC+/fbbvD8AAAAAAH45KiwI//zzz2Px4sXRsGHDvOkNGzaMefPmlWsZw4cPj++//z4OPfTQpZa5+OKLo3bt2rm/pk2brlK9AQAAAABYt1T4j2UWFBTkPU4plZpWlrvvvjuGDRsWo0ePjo022mip5YYMGRLffPNN7u+jjz5a5ToDAAAAALDuWK+iVly/fv2oXLlyqau/P/3001JXiZc0evTo6NevX9x3333RvXv3ZZYtLCyMwsLCVa4vAAAAAADrpgq7IrxKlSrRsWPHGDduXN70cePGRZcuXZY639133x19+vSJu+66K371q1+t6WoCAAAAALCOq7ArwiMiTjnllDjyyCOjU6dO0blz57jppptizpw50b9//4j46bYmn3zySfz973+PiJ9C8KOOOiquvvrq2GmnnXJXk1erVi1q165dYdsBAAAAAMDaq0KD8N69e8cXX3wR559/fsydOzfatWsXY8aMiWbNmkVExNy5c2POnDm58jfeeGMsWrQoBg4cGAMHDsxNP/roo+O22277uasPAAAAAMA6oEKD8IiIAQMGxIABA8p8rmS4/fzzz6/5CgEAAAAAkCkVdo9wAAAAAAD4OQjCAQAAAADINEE4AAAAAACZJggHAAAAACDTBOEAAAAAAGSaIBwAAAAAgEwThAMAAAAAkGmCcAAAAAAAMk0QDgAAAABApgnCAQAAAADINEE4AAAAAACZtl5FVwAAAAAAsqRTp4quwTrsuIquAFnlinAAAAAAADJNEA4AAAAAQKYJwgEAAAAAyDRBOAAAAAAAmSYIBwAAAAAg0wThAAAAAABkmiAcAAAAAIBME4QDAAAAAJBp61V0BQAAAIA1o1Oniq7BOuq4iq4AAKubK8IBAAAAAMg0QTgAAAAAAJkmCAcAAAAAINME4QAAAAAAZJogHAAAAACATBOEAwAAAACQaYJwAAAAAAAyTRAOAAAAAECmCcIBAAAAAMg0QTgAAAAAAJkmCAcAAAAAINME4QAAAAAAZJogHAAAAACATBOEAwAAAACQaYJwAAAAAAAyTRAOAAAAAECmCcIBAAAAAMg0QTgAAAAAAJkmCAcAAAAAINME4QAAAAAAZJogHAAAAACATBOEAwAAAACQaYJwAAAAAAAyTRAOAAAAAECmCcIBAAAAAMg0QTgAAAAAAJkmCAcAAAAAINME4QAAAAAAZJogHAAAAACATBOEAwAAAACQaYJwAAAAAAAyTRAOAAAAAECmCcIBAAAAAMg0QTgAAAAAAJkmCAcAAAAAINME4QAAAAAAZJogHAAAAACATBOEAwAAAACQaYJwAAAAAAAyTRAOAAAAAECmCcIBAAAAAMg0QTgAAAAAAJkmCAcAAAAAINME4QAAAAAAZJogHAAAAACATBOEAwAAAACQaYJwAAAAAAAyTRAOAAAAAECmCcIBAAAAAMg0QTgAAAAAAJkmCAcAAAAAINME4QAAAAAAZJogHAAAAACATBOEAwAAAACQaYJwAAAAAAAyTRAOAAAAAECmCcIBAAAAAMg0QTgAAAAAAJkmCAcAAAAAINME4QAAAAAAZJogHAAAAACATBOEAwAAAACQaYJwAAAAAAAyTRAOAAAAAECmCcIBAAAAAMg0QTgAAAAAAJkmCAcAAAAAINME4QAAAAAAZJogHAAAAACATBOEAwAAAACQaYJwAAAAAAAyTRAOAAAAAECmCcIBAAAAAMg0QTgAAAAAAJkmCAcAAAAAINME4QAAAAAAZJogHAAAAACATKvwIPz666+P5s2bR9WqVaNjx44xfvz4pZadO3duHH744dG6deuoVKlSDB48+OerKAAAAAAA66QKDcJHjx4dgwcPjrPOOismTZoUu+yyS+yzzz4xZ86cMssvWLAgGjRoEGeddVZss802P3NtAQAAAABYF1VoEH7llVdGv3794phjjok2bdrEiBEjomnTpnHDDTeUWX6zzTaLq6++Oo466qioXbv2z1xbAAAAAADWRRUWhC9cuDAmTpwYPXr0yJveo0ePmDBhwmpbz4IFC+Lbb7/N+wMAAAAA4JejwoLwzz//PBYvXhwNGzbMm96wYcOYN2/ealvPxRdfHLVr1879NW3adLUtGwAAAACAtV+F/1hmQUFB3uOUUqlpq2LIkCHxzTff5P4++uij1bZsAAAAAADWfutV1Irr168flStXLnX196efflrqKvFV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8ebqcdttt5W5H//6178udZ6fY9y3Jrzxxhtx3HHHrfJystaXr1fRFeCXYe+9945bb701In5qRGeffXbst99+MWfOnKXO8+OPP0a1atWiWrVqP1c1l6lKlSrRqFGjNbLsxx9/PA466KDo2bNn3HnnnbHFFlvEp59+Gvfdd1+cc845MXr06DWy3hW1JvdBseuvvz5OOOGEOPLII2P06NHRvHnzmDt3brzxxhtx8sknx8SJE8ucb/HixVFQUBCVKvl8rzw++OCD6Nq1a9SpUycuuuii2HrrrWPRokUxY8aMGDVqVGy88cax//77V3Q1V5vZs2fntveyyy6L9u3bx48//hhPP/10DBw4MKZNm1bRVcxZ023s9ddfj+7du8dWW20V1113XWy55ZYxf/78mDJlSowcOTLatWsX22yzTZnz/vjjj7H++uuv0fqtq5Y8zxVr0KDBGlvf2vxaLFy4MKpUqbJS8/Xs2TPefvvtuOCCC6Jr165Rq1atePXVV+OKK66IDh065F3BV5Hq1q27Rpf/5Zdfxs477xzffvttXHDBBdGxY8eoUqVKzJw5M+6666646667YuDAgWXOu7L7f11nrLl8559/fhx77LG5x5UrVy6z3I8//vizjPnWhNX1ep555pkxfPjwOPHEE+O8886LJk2axJw5c+Kll16KP/3pT/Hkk0+WOd/a3Df/3H5pY82I8o8FivvpdbGNVa5cebXU+5FHHolDDz00unfvHn/7299iiy22iC+++CLeeeedOPvss2OXXXYp84PAlFIsXrw41lvvlxllGW/+z6qMd2rVqhXTp0/Pm1bWB7/F27+mx31ryuo4NlalL19rj58Ea9jRRx+dDjjggLxpL774YoqI9Omnn6aUUpo1a1aKiDR69OjUrVu3VFhYmEaNGpVuvfXWVLt27bx5L7jggtSgQYNUs2bN1K9fv3TmmWembbbZptT6Lr/88tSoUaNUt27dNGDAgLRw4cKUUkrdunVLEZH3l1Iqta7PP/88bb/99qlXr17phx9+SM8991yKiPTVV1/l/l/yb+jQoSmllBYsWJBOP/30tPHGG6fq1aunHXbYIT333HNL3T/ff/99ql+/fjrwwAPLfP6rr75KKaXcOp955pnUsWPHVK1atdS5c+c0bdq0vPKPPvpo2m677VJhYWFq3rx5GjZsWPrxxx/zlnfsscemjTbaKBUWFqatttoqPfbYYyu8D5Ys/9RTT6Utt9wy1ahRI/Xs2TP9+9//zi3jueeeS9tvv32qXr16ql27durSpUuaPXt2mdv64YcfpvXXXz+dfPLJZT5fVFSU+7943Y899lhq06ZNqly5cvrggw/S66+/nrp3757q1auXatWqlXbdddc0ceLEvOVERLr++uvT3nvvnapWrZo222yzdO+99+aeLz4eH3jggbTbbrulatWqpfbt26cJEyaUWa91Uc+ePVOTJk3S/Pnzy3x+yX394Ycfpv333z/VqFEjbbDBBumQQw5J8+bNSyml9PXXX6dKlSqlN998MzffhhtumDp16pSb/6677kqNGjXKPT7jjDNSy5YtU7Vq1VLz5s3T2WefnWufKaU0dOjQMtt0sSeffDJ17do11a5dO9WtWzf96le/SjNnzlzm9u6zzz5pk002KXN7i4/nlH46Nm6++eZ04IEHpmrVqqUWLVqkRx55JK/8u+++m/bZZ59Uo0aNtNFGG6Xf/e536bPPPss9v3jx4nTJJZekLbbYIlWpUiU1bdo0XXjhhSml/x1bkyZNypU95phjUsuWLXPtIiLSQw89lFd+Wcfi7Nmz03777Zfq1KmTqlevntq2bZueeOKJMvdDUVFRatOmTerYsWNavHjxUsssue6S/fLnn3+efvvb36ZNNtkkVatWLbVr1y7dddddecvo1q1bGjhwYBo4cGDudTrrrLPyjqtmzZqlP//5z+n3v/99qlmzZmratGm68cYby6zT2q6s89ySnn/++bT99tunKlWqpEaNGqUzzzwzr19u1qxZuuqqq/Lm2WabbXLnlZR+Oi5uuOGGtP/++6fq1aunc889N3355Zfp8MMPT/Xr109Vq1ZNLVq0SKNGjcrN89prr6Vtt902FRYWpo4dO6YHH3ww7/gr6xz70EMPpSWHhzNnzkz7779/2mijjVKNGjVSp06d0rhx4/LmadasWbrgggvS0UcfnWrVqpWOOuqolFJKL7/8ctpll11S1apVU5MmTdKgQYOW2ueklNKll16aKlWqlN56661Szy1cuDA3b7du3dKgQYPS6aefnjbccMPUsGHDvH2V0k9907HHHpsaNGiQNthgg7T77runyZMn55V55JFHUseOHVNhYWGqV69e+vWvf523TUu+JqNGjUq1atVKY8eOzdXhpJNOyiu/rON5wYIFaeDAgalRo0apsLAwNWvWLF100UVL3RfHH398qlGjRvr444/LfL5kWypr/5e3rx05cmRq0qRJqlatWjr44IPz+sTljanWFsaayx5rplR2P1OsrP6l5JgvpeW36fL068vrl5bVr5XnnFhyH5fnOC/plVdeSRGRrr766jKfX7L9FS//lltuSc2bN08FBQWpqKhouWOV4m25++67U+fOnVNhYWFq27Zt3utY3rH/2uqXNtZc1ligeFx08sknp3r16qVdd901pZQ/5ksppY8//jgdeuihqU6dOqlu3bpp//33T7NmzSq1jmX1yf/5z3/Sfvvtl3uPc8cdd5Rq/0OHDk1NmzZNVapUSY0bN06DBg3KPbe8dlxyLFt8nD7++OOpffv2qbCwMO2www7pnXfeWeq+mj9/fqnzbknFx0fx8p966qnUsWPHtP7666d//OMf5R6fnH/++emwww5LNWrUSI0bN07XXHNNXpnyjP3XFsabq2e8WVZ9ii2tTy857lveebg8OcmiRYvSySefnOtnTj/99HTUUUflvcb33XdfateuXapatWqqW7du2nPPPXPbVp7+oORrvrwcpCwr0peXdfwsWrQo9e3bN2222WapatWqqVWrVmnEiBF5yyjelmHDhuXG7scdd1xasGBBrkx5xv/lJQhnjSvZYX/33Xfp+OOPTy1atMgFMcUn1M022yw98MAD6YMPPkiffPJJqU7qjjvuSFWrVk2jRo1K06dPT+edd16qVatWqYFMrVq1Uv/+/dPUqVPTY489lqpXr55uuummlFJKX3zxRWrSpEk6//zz09y5c9PcuXNTSvkd4kcffZTatGmTjjzyyNzJY8k3BAsWLEgjRoxItWrVyi3ju+++SymldPjhh6cuXbqkF198Mc2cOTNdfvnlqbCwMM2YMaPM/VN8olheyFq8/h133DE9//zz6d1330277LJL6tKlS67MU089lWrVqpVuu+229P7776exY8emzTbbLA0bNiyl9FPottNOO6WtttoqjR07Nr3//vvpscceS2PGjFnhfVBcfv3110/du3dPb7zxRpo4cWJq06ZNOvzww1NKKf3444+pdu3a6bTTTkszZ85MU6ZMSbfddlv68MMPy9zGK6+8MkVE7jVZluJ1d+nSJb388stp2rRpaf78+enZZ59Nt99+e5oyZUqaMmVK6tevX2rYsGH69ttvc/NGRKpXr166+eab0/Tp09PZZ5+dKleunKZMmZJS+t/xuOWWW6bHH388TZ8+PR188MGpWbNmeYOJddXnn3+eCgoK0sUXX7zcskVFRalDhw5p5513Tm+++WZ69dVX03bbbZe6deuWK7PddtulK664IqWU0uTJk9OGG26YqlSpkr755puUUkrHHXdc6t27d678BRdckF5++eU0a9as9Oijj6aGDRumSy+9NPf88t6c3H///emBBx5IM2bMSJMmTUq9evVKW2+99VKD3S+++CIVFBQsM3QqFhGpSZMm6a677krvvfdeOvHEE1PNmjXTF198kVJK6d///neqX79+GjJkSJo6dWp666230l577ZV233333DLOOOOMtOGGG6bbbrstzZw5M40fPz7dfPPNKaX8Nw8LFixIBx10UNp2223Tf/7zn7w6lAzCl3Us/upXv0p77bVXeuedd3Jt+oUXXihz+956663cG+/lWVq//PHHH6fLL788TZo0Kb3//vvpmmuuSZUrV06vvvpqbt5u3bqlmjVrppNOOilNmzYt3XHHHXn9cEo/Dczq1q2brrvuuvTee++liy++OFWqVClNnTp1uXVb2yzrjcnHH3+cqlevngYMGJCmTp2aHnrooVS/fv28gVt535hstNFG6ZZbbknvv/9+mj17dho4cGDadttt0xtvvJFmzZqVxo0blx599NGU0k9vMhs0aJB69+6d/vWvf6XHHnssbb755iv8xmTy5Mlp5MiR6Z133kkzZsxIZ511VqpatWpeP96sWbNUq1atdPnll6f33nsvvffee+mdd95JNWvWTFdddVWaMWNGevnll1OHDh1Snz59lrof27dvn3r06LH0Hf3/devWLdWqVSsNGzYszZgxI/3tb39LBQUFuZC6qKgode3aNfXq1Su98cYbacaMGenUU09N9erVy7Xlxx9/PFWuXDmde+65acqUKWny5Mnpz3/+c5mvyeWXX57q1q2bXnnllbw6lAzCl3U8X3755alp06bpxRdfTLNnz07jx48v9QFSscWLF6c6deqk448/frn7onjdJfd/SuXra2vUqJH22GOPNGnSpPTCCy+kFi1a5M7hKS1/TLW2MNZc9lgzpeUH4SX7l5JjvvK06eW1g/L0S8vq18pzTiwrCF/ecV5S8bm/PGO+4uX37NkzvfXWW+ntt99ORUVFyx2rFG9LkyZN0v3335+mTJmSjjnmmLTBBhukzz//PKVUvrH/2uqXNtYsaxlLKh4XnX766WnatGm5NrHkmO/7779PLVu2TH379k3vvPNOmjJlSjr88MNT69atc2FQefrkffbZJ7Vr1y5NmDAhvfnmm6lLly6pWrVqufZ/3333pVq1aqUxY8akDz/8ML322msrND5bWhDepk2bNHbs2PTOO++k/fbbL2222WZL/dC0+P3vkufVpSlefvv27dPYsWPTzJkz0+eff17u8ckGG2yQLr744jR9+vTcmLV4vFD8Gixr7L82Md5cPePN5QXhZfXpJcd9yzsPLy8nSemnC0Bq166dOwf069cvbbDBBrnX+N///ndab7310pVXXplmzZqV3nnnnXTdddflxgLl6Q/KCsKXlYOUtCJ9efHySx4/CxcuTOeee256/fXX0wcffJB7Xzh69OjcfEcffXSqWbNm7jh6/PHHU4MGDdKf/vSnXJnljf9XhCCcNe7oo49OlStXTjVq1Eg1atRIEZEaN26cd5Vu8Qm15CdDJTupHXfcMQ0cODCvTNeuXUsNZJo1a5YWLVqUm3bIIYfkDY7KOgkUr2v69Olp0003TYMGDcr7dGtpV0MvaebMmamgoCB98sknedP33HPPNGTIkDL3z6WXXpoiIn355ZdlPl9y/c8880xu2hNPPJEiIv3www8ppZR22WWXUmHf7bffnho3bpxSSunpp59OlSpVStOnTy9zHSuzDyIi7wqJ6667LjVs2DCl9NMbwYhIzz///DK3rVj//v1TrVq18qbdf//9uWOnRo0auasLitdd8gq/khYtWpQ22GCD3FXvKf3UQffv3z+v3I477pj+8Ic/pJT+dzz+9a9/zT3/7rvvpohYJ0O6kl599dUUEenBBx/Mm16vXr3cfj7jjDNSSimNHTs2Va5cOc2ZMydXrnhfvP766ymllE455ZS03377pZRSGjFiRDr44IPTdtttl7squVWrVumGG25Yan0uu+yy1LFjx9zj5b05KenTTz9NEZH++c9/lvn8a6+9Vub2liUi0tlnn517PH/+/FRQUJCefPLJlFJK55xzTqmg7qOPPkoRkaZPn56+/fbbVFhYmAu+Syo+tsaPH5+6d++eunbtmr7++utSdSgZhC/rWNx6661zH3Ytzz333JMiIu+K2//85z95bey6667LW3fJfrks++67bzr11FNzj7t165batGmT13+ceeaZqU2bNrnHzZo1S7/73e9yj4uKitJGG220zGNlbVXyPFejRo108MEHp5RS+tOf/pRat26dty+uu+66VLNmzdwb6vK+MRk8eHBemV69eqXf//73ZdbpxhtvTHXr1k3ff/99btoNN9ywwm9MytK2bdt07bXX5h43a9as1LeajjzyyHTcccflTRs/fnyqVKlS7pxVUrVq1dKJJ564zHWn9NPxtfPOO+dN23777dOZZ56ZUkrp2WefTbVq1Ur/93//l1dmiy22yF3V1rlz53TEEUcsdR3Fr8kf//jH1Lhx41JXtpUVhC/reB40aFDaY4898o6DpZk3b16KiHTllVfmTd9uu+1yx9dvf/vbvHUv7VtlSyqrr61cuXL66KOPctOefPLJVKlSpVxwW54x1drAWHPZY83i+lSpUiWvnyq+4rms/qVkXcrTppfXDsrTLy2rXyvPObGsIHx5x3lJe++9d2rfvn3etOHDh+ftu+Jz99ChQ9P666+f++bB0pQcqxRvyyWXXJIr8+OPP6YmTZrkAtvyjP3XVr+0sWbxMpY2FujWrVvadtttS82z5JjvlltuKTVeWLBgQapWrVp6+umnc+tYVt8zffr0FBF5FydMnTo1RUSuPxo+fHhq1arVUkPq5bXjpQXh99xzT26eL774IlWrVi0v6FrSJZdcUur97+uvv56374rfuxUv/+GHHy5zWUsqa3yy995755Xp3bt32meffXKPlzf2X5sYb66e8WZxjrDkfizOL5bWpy857ivPeXh5OUlKKTVu3LjMc0BxXzRx4sQUEUv9Nv3KjEWWl4OUtCJ9efHySx4/ZRkwYEA66KCD8ralrONoyeN3eeP/FeFmuvwsdt9995g8eXJMnjw5XnvttejRo0fss88+8eGHH+aV69Sp0zKXM3369Nhhhx3yppV8HBGx1VZb5d33sHHjxvHpp58ut54//PBD7LzzznHggQfGNddcEwUFBcudZ0lvvfVWpJSiVatWUbNmzdzfCy+8EO+//36Z86QV/CGQ9u3b5/5v3LhxRERu2yZOnBjnn39+3rqPPfbYmDt3bvz3v/+NyZMnR5MmTaJVq1ZLXf6K7oPq1avHFltskVen4vrUrVs3+vTpEz179oxevXrF1VdfHXPnzl3m8kqur2fPnjF58uR44okn4vvvv4/FixfnnqtSpUre/ijeF/37949WrVpF7dq1o3bt2jF//vxS9wjt3LlzqcdTp07Nm7asfZ0FJff166+/HpMnT46tttoqFixYEBERU6dOjaZNm0bTpk1z5dq2bRt16tTJ7a/ddtstxo8fH0VFRfHCCy/EbrvtFrvttlu88MILMW/evJgxY0Z069YtN//9998fO++8czRq1Chq1qwZ55xzzjLv4VrS+++/H4cffnhsvvnmUatWrWjevHlExFKXUdzGytuel3zda9SoERtssEFeG3vuuefy2tiWW26Zq9fUqVNjwYIFseeeey5zHYcddljMnz8/xo4dW64fIlvWsXjiiSfGhRdeGF27do2hQ4eW68fhltwX9erVy/XPderUiYULF+aVLdkvL168OP785z9H+/bto169elGzZs0YO3Zsqf2/00475a2nc+fO8d577+W14SW3q6CgIBo1arTOtrElz3OTJ0+Oa665JiJ+akOdO3fO2xddu3aN+fPnx8cff7xC6yj5WvzhD3+Ie+65J7bddts444wzYsKECbnnpk6dmvvByWIl+73y+P777+OMM87ItfuaNWvGtGnTSr3eJes2ceLEuO222/LaSs+ePaOoqChmzZpV5rpSSivVTiPyzz0TJ06M+fPn547P4r9Zs2blzsWTJ09ebjsdPnx43HjjjfHSSy/F1ltvvUJ1Knk89+nTJyZPnhytW7eOE088McaOHbvc5ZXcFw899FBMnjw5evbsGT/88EPec2WNn8rT12666aZ5P5jYuXPnKCoqyrtv5sqOqX5uxppLH2sWO/300/P6qaOOOir33PL2S3nb9LLaQXn6pWX1a2Wtozzjs/Ic5yWVfF369u0bkydPjhtvvDG+//77vPF7s2bNSt2HtbxjlSW3f7311otOnTplajz6SxlrFlvaWCCifG1s5syZscEGG+TaWN26deP//u//8tr2svqeqVOn5o6jYltuuWXevbYPOeSQ+OGHH2LzzTePY489Nh566KFSP5S+MuOzJY/lunXrRuvWrUsdy8vSvn373H77/vvvS9Wp5P4r7/hkRd/zlRz7r22MN1d9vBkRscEGG+TtxyW3qaw+fUnlPQ8vKyf55ptvYu7cuWWeA4pts802seeee8bWW28dhxxySNx8882lfix9ZcYi5WkTJZWnLy9WVl83cuTI6NSpUzRo0CBq1qwZN998c6nXtqzjaP78+fHRRx/lpi1r/L8ifpm/MMDPrkaNGtGiRYvc444dO0bt2rXj5ptvjgsvvDCv3PKUbIRlBcklb8hfUFAQRUVFy112YWFhdO/ePZ544ok4/fTT8wbN5VFUVBSVK1eOiRMnlvoBopo1a5Y5T3EoPW3atHKdNJbctuJ9UbxtRUVFcd5558VvfvObUvNVrVq1XD8etKL7oKx9veRrcuutt8aJJ54YTz31VIwePTrOPvvsGDduXOy0006lltWyZcv45ptvYt68ebkfYalZs2a0aNGizB9EqVatWqnjoU+fPvHZZ5/FiBEjolmzZlFYWBidO3cuFe6VpeSylrWv12UtWrSIgoKCUj8Qufnmm0dE5B0nSwumlpy+6667xnfffRdvvfVWjB8/Pi644IJo2rRpXHTRRbHtttvGRhttFG3atImIiFdffTV++9vfxnnnnRc9e/aM2rVrxz333BPDhw8vd/179eoVTZs2jZtvvjk23njjKCoqinbt2i31NW7ZsmUUFBTE1KlT48ADD1zu8pfVfxQVFUWvXr3i0ksvLTVf48aN44MPPijXNuy7775xxx13xKuvvhp77LHHCtWp5LF4zDHHRM+ePeOJJ56IsWPHxsUXXxzDhw+PQYMGlVpOy5YtI+Kn/qb4RwcrV66c65/Lamcl++Xhw4fHVVddFSNGjIitt946atSoEYMHDy5XG1vWdhVv27raxkqe54qV1YZKfjhTqVKlUueyH3/8scx1LKk45HviiSfimWeeiT333DMGDhwYV1xxRbk+ZC3Pek8//fR4+umn44orrogWLVpEtWrV4uCDDy71epesW1FRURx//PFx4oknllrvpptuWmZ9WrVqVe43zctrp40bN47nn3++1HzFYUB5zoe77LJLPPHEE3HvvffGH//4x1Wq03bbbRezZs2KJ598Mp555pncD4Tdf//9pZbToEGDqFOnTqk+uni/bbDBBvH111/nPVdy/69sX1t8TC55zK4r7dRYc+ljzWL169cvs5+KWP5+KW+bXtZ+KU+/tKx+rax1rMz4rKzjfEktW7aMl156Ke9HvurUqRN16tQpM1Aqa9+t6FilrPoVWxfHo7+0sWaxpY0Fip9blqKioujYsWPceeedpZ5bMpQrTxtb1gdsTZs2jenTp8e4cePimWeeiQEDBsTll18eL7zwQm7Zq6vfX1Ybi/jpg8fi94SFhYVL3XcRpfdfeccn5anXunKeizDeXB3jzeI6rUpbLc95eHk5yfJUrlw5xo0bFxMmTIixY8fGtddeG2eddVa89tpruQ/n1nRbXZG+vFjJ/XfvvffGySefHMOHD4/OnTvHBhtsEJdffnm89tprK1y31bW9rginQhQUFESlSpVKXdG0PK1bt47XX389b9qbb765wuuvUqVK3lWJxSpVqhS33357dOzYMfbYY4/497//vULL6NChQyxevDg+/fTTaNGiRd7f0n5du0ePHlG/fv247LLLyny+5JvdZdluu+1i+vTppdbdokWLqFSpUrRv3z4+/vjjmDFjxlKXsSL7oLw6dOgQQ4YMiQkTJkS7du3irrvuKrPcwQcfHOuvv36ZIWN5jR8/Pk488cTYd999Y6uttorCwsL4/PPPS5V79dVXSz0uvrI36+rVqxd77bVX/OUvf4nvv/9+mWXbtm0bc+bMyfskdsqUKfHNN9/k3nDUrl07tt122/jLX/4SBQUF0bZt29hll11i0qRJ8fjjj+ddofPyyy9Hs2bN4qyzzopOnTpFy5YtS12ttyxffPFFTJ06Nc4+++zYc889o02bNqU+GS+pbt260bNnz7juuuvK3N4VbWPvvvtubLbZZqXaWI0aNaJly5ZRrVq1ePbZZ5e5nD/84Q9xySWXxP777x8vvPBCude/NE2bNo3+/fvHgw8+GKeeemrcfPPNZZbr0KFDbLnllnHFFVes9AB//PjxccABB8Tvfve72GabbWLzzTeP9957r1S5stpYy5YtSw0Ys65t27YxYcKEvIHvhAkTYoMNNohNNtkkIn56g7vkt2W+/fbbZV7FsqQGDRpEnz594o477ogRI0bETTfdlFvv22+/nXeeLfmaNGjQIL777ru8djF58uS8MuPHj48+ffrEr3/969h6662jUaNGMXv27OXWq7itlHU+qlKlSpnzHH744fHMM8/EpEmTSj23aNGi5fZXS6573rx5sd5665Vad/369SPipytKltdOd9hhh3jqqafioosuissvv7xc616WWrVqRe/evePmm2+O0aNHxwMPPBBffvllqXKVKlWKQw89NO6444745JNPVmpd5e1r58yZk3eef+WVV6JSpUrL/ObYusJYc/VamTZdUnn6pYil92sra0WP8+JvbV1//fUrtb4VGassuf2LFi2KiRMnZmI8+ksba64O2223Xbz33nux0UYblWpj5fn2YEREmzZtYtGiRXl91vTp00uNdatVqxb7779/XHPNNfH888/HK6+8Ev/85z9Xqf5LHstfffVVzJgxY6nHco8ePaJu3bqr/J6vPOOTX8p7PuPNlT83rajVcR6uXbt2NG7cuMxzwJIKCgqia9eucd5558WkSZOiSpUq8dBDD61S/VekTaxIX74048ePjy5dusSAAQOiQ4cO0aJFizK/wVbWcVSzZs0VvmCgPATh/CwWLFgQ8+bNi3nz5sXUqVNj0KBBMX/+/OjVq9cKLWfQoEFxyy23xN/+9rd477334sILL4x33nlnhb9Wutlmm8WLL74Yn3zySamQtHLlynHnnXfGNttsE3vssUfMmzdvqcuYP39+PPvss/H555/Hf//732jVqlUcccQRcdRRR8WDDz4Ys2bNijfeeCMuvfTSGDNmTJnLqVGjRvz1r3+NJ554Ivbff/945plnYvbs2fHmm2/GGWecEf379y/3dp177rnx97//PYYNGxbvvvtuTJ06NXcVdkREt27dYtddd42DDjooxo0bl7s67amnnlqpfbA8s2bNiiFDhsQrr7wSH374YYwdOzZmzJiRG9SWtOmmm8bw4cPj6quvjqOPPjqee+65mD17drz11lu5r30tL0Rr0aJF3H777TF16tR47bXX4ogjjijzk8r77rsvRo0aFTNmzIihQ4fG66+/HieccMJKbee66Prrr49FixZFp06dYvTo0TF16tSYPn163HHHHTFt2rTcfu7evXu0b98+jjjiiHjrrbfi9ddfj6OOOiq6deuW97Wn3XbbLe64447o1q1bFBQUxIYbbhht27aN0aNHx2677ZYr16JFi5gzZ07cc8898f7778c111yzQifzDTfcMOrVqxc33XRTzJw5M/7xj3/EKaecUq7tXbx4ceywww7xwAMPxHvvvRdTp06Na665ZoW+vjdw4MD48ssv47DDDovXX389Pvjggxg7dmz07ds3Fi9eHFWrVo0zzzwzzjjjjPj73/8e77//frz66qtxyy23lFrWoEGD4sILL4z99tsvXnrppXLXoaTBgwfH008/HbNmzYq33nor/vGPfyy1jRUUFMStt94a06dPj65du8ajjz4a7733XkyZMiVGjhwZn332WbnaWPHVCVOnTo3jjz++zD7io48+ilNOOSWmT58ed999d1x77bVx0kknrfR2rqsGDBgQH330UQwaNCimTZsWjzzySAwdOjROOeWUqFTpp2HYHnvsEbfffnuMHz8+/vWvf8XRRx9drg8Mzj333HjkkUdi5syZ8e6778bjjz+ee+0PP/zwqFSpUvTr1y+mTJkSY8aMybuiMiJixx13jOrVq8ef/vSnmDlzZtx1111x22235ZVp0aJFPPjggzF58uR4++234/DDDy/XhyhnnnlmvPLKKzFw4MCYPHlyvPfee/Hoo4+W+U2FYoMHD46uXbvGnnvuGdddd128/fbb8cEHH8S9994bO+64Y5kfuJSle/fu0blz5zjwwAPj6aefjtmzZ8eECRPi7LPPzoUDQ4cOjbvvvjuGDh0aU6dOjX/+859lfiDduXPnePLJJ+P888+Pq666qlzrL8tVV10V99xzT0ybNi1mzJgR9913XzRq1Cjv6+pLuuiii2KTTTaJHXfcMUaNGhXvvPNOvP/++/HQQw/FK6+8Uq52Wp6+tmrVqnH00UfH22+/nfsg+dBDD12jgeqaYqy59LHm6rAybbqk8vRLy+rXVtaKHuedO3eOU089NU499dQ45ZRT4qWXXooPP/wwdz4v/pBlaVZkrHLdddfFQw89FNOmTYuBAwfGV199FX379l2l7V1b/NLGmqvqiCOOiPr168cBBxwQ48ePj1mzZsULL7wQJ510UrlvbdG6devYe++949hjj43XXnstJk6cGMccc0zee6HbbrstbrnllvjXv/4VH3zwQdx+++1RrVq1aNas2SrV//zzz49nn302/vWvf0WfPn2ifv36S/0mZs2aNXPvf3/1q1/F008/HR988EG88847uXNxec5z5RmfvPzyy3HZZZfFjBkz4rrrrov77rsvk+NR482VPzetqNV1Hj7ppJPikksuyZ0DBgwYkPeh1WuvvRYXXXRRvPnmmzFnzpx48MEH47PPPlvlc+KK5iDl7cuXpkWLFvHmm2/G008/HTNmzIhzzjkn3njjjVLlFi5cmDuOnnzyyRg6dGiccMIJyzzfrixBOD+Lp556Kho3bhyNGzeOHXfcMd54442477778gYt5XHEEUfEkCFD4rTTTst9zbhPnz5RtWrVFVrO+eefH7Nnz44tttiizPs/rbfeenH33XfHVlttFXvssUeZ9x3q0qVL9O/fP3r37h0NGjTInbRvvfXWOOqoo+LUU0+N1q1bx/777x+vvfZa3n3vSjrggANiwoQJsf7668fhhx8eW265ZRx22GHxzTff5H2dd3l69uwZjz/+eIwbNy6233772GmnneLKK6/MG9g88MADsf3228dhhx0Wbdu2jTPOOKPMK5bKsw+Wp3r16jFt2rQ46KCDolWrVnHcccfFCSecEMcff/xS5xk0aFCMHTs2Pvvsszj44IOjZcuWse+++8asWbPiqaeeWu59WkeNGhVfffVVdOjQIY488sg48cQTY6ONNipV7rzzzot77rkn2rdvH3/729/izjvvjLZt267wNq6rtthii5g0aVJ07949hgwZEttss0106tQprr322jjttNPiggsuiIifgtOHH344Ntxww9h1112je/fusfnmm8fo0aPzlrf77rvH4sWL89p0t27dYvHixXlX6RxwwAFx8sknxwknnBDbbrttTJgwIc4555xy17tSpUpxzz33xMSJE6Ndu3Zx8sknl+tKzebNm8dbb70Vu+++e5x66qnRrl272GuvveLZZ5+NG264odzr33jjjePll1+OxYsXR8+ePaNdu3Zx0kknRe3atXMn6XPOOSdOPfXUOPfcc6NNmzbRu3fvpbafwYMHx3nnnRf77rtvmfdBLY/FixfHwIEDo02bNrH33ntH69atl3kV20477RQTJ06M1q1bx8CBA6Nt27bRpUuXuPvuu+Oqq66KP/zhD8tc3znnnBPbbbdd9OzZM3bbbbdo1KhRmW90jjrqqPjhhx9ihx12iIEDB8agQYPiuOOOW6ltXJdtsskmMWbMmHj99ddjm222if79+0e/fv1yH1BGRAwZMiR23XXX2G+//WLfffeNAw88MO+egktTpUqVGDJkSLRv3z523XXXqFy5ctxzzz0R8dObzMceeyymTJkSHTp0iLPOOqvUlVd169aNO+64I8aMGRNbb7113H333TFs2LC8MldddVVsuOGG0aVLl+jVq1f07Nkztttuu+XWrX379vHCCy/Ee++9F7vsskt06NAhzjnnnNz9bctSWFgY48aNizPOOCNuvPHG2GmnnWL77bePa665Jk488cRo167dctcb8VO/NWbMmNh1112jb9++0apVq/jtb38bs2fPjoYNG0bET4HKfffdF48++mhsu+22scceeyz1K5pdu3aNJ554Is4555y8+72uiJo1a8all14anTp1iu233z5mz54dY8aMWergvl69erkw6PLLL48ddtghtt566xg2bFjuqvJlKW9f26JFi/jNb34T++67b/To0SPatWu30lfBVjRjzWWPNVfVyrTpksrTLy2rX1tZK3OcX3HFFXHXXXfFpEmTYr/99ouWLVvGIYccEkVFRfHKK69ErVq1ljrvioxVLrnkkrj00ktjm222ifHjx8cjjzyS++bKuu6XNtZcVdWrV48XX3wxNt100/jNb34Tbdq0ib59+8YPP/ywzOOtpFtvvTWaNm0a3bp1i9/85jdx3HHH5b0XqlOnTtx8883RtWvX3LejHnvssahXr94q1f+SSy6Jk046KTp27Bhz586NRx99dJlX5P7617+OCRMmRPXq1eOoo46K1q1bxx577BH/+Mc/4p577on99ttvmesr7/jk1FNPjYkTJ0aHDh3iggsuiOHDh0fPnj1XaVvXRsabK39uWhmr4zx86qmnxlFHHRV9+vTJ3TLk17/+de75WrVqxYsvvhj77rtvtGrVKs4+++wYPnx47LPPPqtU9xXNQcrbly9N//794ze/+U307t07dtxxx/jiiy9iwIABpcrtueee0bJly9h1113j0EMPjV69epU6TlaXgrSiv9QHa5m99torGjVqFLfffntFV4V1REFBQTz00EPlul80sOJ222232HbbbWPEiBEVXRWWMHv27GjevHlMmjQpd494frmGDRsWDz/8cKmvJ1Oasea6a209zvXHZMXzzz8fu+++e3z11VdL/ZZTRdlss81i8ODBMXjw4Iquyi+K/m3ttbbmIH369Imvv/46Hn744Z9lfX4sk3XKf//73xg5cmT07NkzKleuHHfffXc888wzMW7cuIquGgAA6zhjTQCA7BKEs04p/rrzhRdeGAsWLIjWrVvHAw88EN27d6/oqgEAsI4z1gQAyC63RgEAAAAAINP8WCYAAAAAAJkmCAcAAAAAINME4QAAAAAAZJogHAAAAACATBOEAwAAAACQaYJwAAAgz2677RaDBw+u6GoAAMBqIwgHAIC1zLx58+Kkk06KFi1aRNWqVaNhw4ax8847x8iRI+O///1vRVcPAADWOetVdAUAAID/+eCDD6Jr165Rp06duOiii2LrrbeORYsWxYwZM2LUqFGx8cYbx/77719qvh9//DHWX3/9CqgxAACs/VwRDgAAa5EBAwbEeuutF2+++WYceuih0aZNm9h6663joIMOiieeeCJ69eoVEREFBQUxcuTIOOCAA6JGjRpx4YUXxuLFi6Nfv37RvHnzqFatWrRu3TquvvrqvOX36dMnDjzwwDjvvPNio402ilq1asXxxx8fCxcuzCtXVFQUZ5xxRtStWzcaNWoUw4YN+7l2AQAArHauCAcAgLXEF198EWPHjo2LLrooatSoUWaZgoKC3P9Dhw6Niy++OK666qqoXLlyFBUVRZMmTeLee++N+vXrx4QJE+K4446Lxo0bx6GHHpqb79lnn42qVavGc889F7Nnz47f//73Ub9+/fjzn/+cK/O3v/0tTjnllHjttdfilVdeiT59+kTXrl1jr732WnM7AAAA1pCClFKq6EoAAAARr732Wuy0007x4IMPxq9//evc9Pr168f//d//RUTEwIED49JLL42CgoIYPHhwXHXVVctc5sCBA+M///lP3H///RHx0xXhjz32WHz00UdRvXr1iIgYOXJknH766fHNN99EpUqVYrfddovFixfH+PHjc8vZYYcdYo899ohLLrlkdW82AACscW6NAgAAa5klr/qOiHj99ddj8uTJsdVWW8WCBQty0zt16lRq3pEjR0anTp2iQYMGUbNmzbj55ptjzpw5eWW22WabXAgeEdG5c+eYP39+fPTRR7lp7du3z5uncePG8emnn67SdgEAQEURhAMAwFqiRYsWUVBQENOmTcubvvnmm0eLFi2iWrVqedNL3j7l3nvvjZNPPjn69u0bY8eOjcmTJ8fvf//7Uvf/XpolA/iSP7xZUFAQRUVFK7I5AACw1hCEAwDAWqJevXqx1157xV/+8pf4/vvvV3j+8ePHR5cuXWLAgAHRoUOHaNGiRbz//vulyr399tvxww8/5B6/+uqrUbNmzWjSpMkq1R8AANZWgnAAAFiLXH/99bFo0aLo1KlTjB49OqZOnRrTp0+PO+64I6ZNmxaVK1de6rwtWrSIN998M55++umYMWNGnHPOOfHGG2+UKrdw4cLo169fTJkyJZ588skYOnRonHDCCVGpkrcHAABk03oVXQEAAOB/tthii5g0aVJcdNFFMWTIkPj444+jsLAw2rZtG6eddloMGDBgqfP2798/Jk+eHL17946CgoI47LDDYsCAAfHkk0/mldtzzz2jZcuWseuuu8aCBQvit7/9bQwbNmwNbxkAAFScgpRSquhKAAAAP48+ffrE119/HQ8//HBFVwUAAH42vvsIAAAAAECmCcIBAAAAAMg0t0YBAAAAACDTXBEOAAAAAECmCcIBAAAAAMg0QTgAAAAAAJkmCAcAAAAAINME4QAAAAAAZJogHAAAAACATBOEAwAAAACQaYJwAAAAAAAy7f8BSug8B6QBV6IAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig, ax = plt.subplots(figsize=(15, 10))\n", "index = np.arange(len(generalized_cc))\n", @@ -17050,84 +1384,9 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Graphomega-coefficient
0Brightkite Checkins GraphNaN
1Gowalla Checkins GraphNaN
2Foursquare Checkins GraphNaN
3Brightkite Friendship GraphNaN
4Gowalla Friendship GraphNaN
5Foursquare Friendship GraphNaN
\n", - "
" - ], - "text/plain": [ - " Graph omega-coefficient\n", - "0 Brightkite Checkins Graph NaN\n", - "1 Gowalla Checkins Graph NaN\n", - "2 Foursquare Checkins Graph NaN\n", - "3 Brightkite Friendship Graph NaN\n", - "4 Gowalla Friendship Graph NaN\n", - "5 Foursquare Friendship Graph NaN" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "analysis_results[['Graph', 'omega-coefficient']]" ] @@ -17174,6 +1433,50 @@ "\n", "To summarize the work done: this study evidences why the characterization of the small-world propriety of a real-world network is still subject of debate. Even if we have used the most reliable techniques that the literature has to offer, we still have not been able to reach a definitive conclusion and specific observations on the single networks were necessary. For real networks, we still have not reached the completeness (in a metaphorical way, not topological) of the theoretical models firstly proposed in the 60s by Erdős and Rényi." ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# References\n", + "\n", + "> _In no particular order_\n", + "\n", + "`[1]` On the evolution of random graphs, P. Erdős, A. Rényi, _Publ. Math. Inst. Hungar. Acad. Sci._, 5, 17-61 (1960).\n", + "\n", + "`[2]` Complex Networks: Structure, Robustness, and Function, R. Cohen, S. Havlin, D. ben-Avraham, H. E. Stanley, _Cambridge University Press, 2009_.\n", + "\n", + "`[3]` Collective dynamics of 'small-world' networks, D. J. Watts and S. H. Strogatz, _Nature_, 393, 440-442, 1998.\n", + "\n", + "`[4]` On random graphs I, P. Erdős and A. Rényi, _Publ. Math. Inst. Hungar. Acad. Sci._, 5, 290-297, 1960.\n", + "\n", + "`[5]` Generalizations of the clustering coefficient to weighted complex networks, M. E. J. Newman, _Physical Review E_, 74, 036104, 2006.\n", + "\n", + "`[6]` The ubiquity of small-world networks. Telesford QK, Joyce KE, Hayasaka S, Burdette JH, Laurienti PJ. _Brain Connect_. 2011;1(5):367-75\n", + "\n", + "`[8]` Humphries and Gurney (2008). “Network ‘Small-World-Ness’: A Quantitative Method for Determining Canonical Network Equivalence”. PLoS One. 3 (4)\n", + "\n", + "`[9]` The brainstem reticular formation is a small-world, not scale-free, network M. D. Humphries, K. Gurney and T. J. Prescott, Proc. Roy. Soc. B 2006 273, 503-511,\n", + "\n", + "`[10]` Sporns, Olaf, and Jonathan D. Zwi. “The small world of the cerebral cortex.” Neuroinformatics 2.2 (2004): 145-162.\n", + "\n", + "`[11]` Maslov, Sergei, and Kim Sneppen. “Specificity and stability in topology of protein networks.” Science 296.5569 (2002): 910-913.\n", + "\n", + "`[13]` B. Bollob ́as, Random Graphs, 1985. London: Academic Press\n", + "\n", + "`[14]` R. Cohen, K. Erez, D. ben-Avraham, and S. Havlin, Resilience of the Internet to\n", + "random breakdown, Physical Review Letters 85 (2000), 4626–4628 \n", + "\n", + "`[15]` Dingqi Yang, Bingqing Qu, Jie Yang, Philippe Cudre-Mauroux, Revisiting User Mobility and Social Relationships in LBSNs: A Hypergraph Embedding Approach, In Proc. of The Web Conference (WWW'19). May. 2019, San Francisco, USA.\n", + "\n", + "`[16]` Ulrik Brandes, A Faster Algorithm for Betweenness Centrality, Journal of Mathematical Sociology, 25(2):163-177, 2001._\n", + "\n", + "`[17]` Error and attack tolerance of complex networks, R. Albert, Nature volume 406, pages378–382 (2000) \n", + "\n", + "\n", + "\n" + ] } ], "metadata": { diff --git a/testing.ipynb b/testing.ipynb deleted file mode 100644 index 888c4c0..0000000 --- a/testing.ipynb +++ /dev/null @@ -1,208 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "\n", - "import os\n", - "import wget\n", - "import zipfile\n", - "import numpy as np\n", - "import pandas as pd\n", - "import networkx as nx\n", - "import plotly.graph_objects as go\n", - "from utils import *\n", - "from collections import Counter\n", - "from tqdm import tqdm\n", - "import time\n", - "import geopandas as gpd\n", - "import gdown # for downloading files from google drive\n", - "import shutil\n", - "import warnings\n", - "import sys\n", - "from pyvis.network import Network\n", - "warnings.filterwarnings(\"ignore\")" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import multiprocessing\n", - "import random\n", - "import networkx as nx\n", - "import numpy as np\n", - "import math\n", - "\n", - "def parallel_omega(G, nrand=10, seed=None):\n", - "\n", - " random.seed(seed)\n", - " if not nx.is_connected(G):\n", - " G = G.subgraph(max(nx.connected_components(G), key=len))\n", - "\n", - " if len(G) == 1:\n", - " return 0\n", - "\n", - " niter_lattice_reference = nrand\n", - " niter_random_reference = nrand * 2\n", - " \n", - " def worker(queue):\n", - " while True:\n", - " task = queue.get()\n", - " if task is None:\n", - " break\n", - " random_graph = nx.random_reference(G)\n", - " lattice_graph = nx.lattice_reference(G)\n", - " random_shortest_path = nx.average_shortest_path_length(random_graph)\n", - " lattice_clustering = nx.average_clustering(lattice_graph)\n", - " queue.put((random_shortest_path, lattice_clustering))\n", - " \n", - " n_processes = multiprocessing.cpu_count()\n", - " manager = multiprocessing.Manager()\n", - " queue = manager.Queue()\n", - " processes = [multiprocessing.Process(target=worker, args=(queue,)) for _ in range(n_processes)]\n", - " for process in processes:\n", - " process.start()\n", - " \n", - " for _ in range(nrand):\n", - " queue.put(1)\n", - " \n", - " for _ in range(n_processes):\n", - " queue.put(None)\n", - " \n", - " for process in processes:\n", - " process.join()\n", - " \n", - " shortest_paths = []\n", - " clustering_coeffs = []\n", - " while not queue.empty():\n", - " random_shortest_path, lattice_clustering = queue.get()\n", - " shortest_paths.append(random_shortest_path)\n", - " clustering_coeffs.append(lattice_clustering)\n", - " \n", - " L = nx.average_shortest_path_length(G)\n", - " C = nx.average_clustering(G)\n", - "\n", - " # kill the process\n", - " for process in processes:\n", - " process.terminate()\n", - " process.join()\n", - "\n", - " omega = (np.mean(shortest_paths) / L) - (C / np.mean(clustering_coeffs))\n", - "\n", - "\n", - " return omega" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Graph with 200 nodes and 584 edges'" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "G = nx.erdos_renyi_graph(200, 0.03)\n", - "G = G.subgraph(max(nx.connected_components(G), key=len))\n", - "nx.info(G)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.6776975801779451" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "omega = parallel_omega(G, nrand=10, seed=42)\n", - "omega" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[4], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m standard_omega \u001b[39m=\u001b[39m nx\u001b[39m.\u001b[39;49momega(G, nrand\u001b[39m=\u001b[39;49m\u001b[39m10\u001b[39;49m, seed\u001b[39m=\u001b[39;49m\u001b[39m42\u001b[39;49m)\n\u001b[1;32m 2\u001b[0m standard_omega\n", - "File \u001b[0;32m/usr/lib/python3.10/site-packages/networkx/utils/decorators.py:845\u001b[0m, in \u001b[0;36margmap.__call__..func\u001b[0;34m(_argmap__wrapper, *args, **kwargs)\u001b[0m\n\u001b[1;32m 844\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mfunc\u001b[39m(\u001b[39m*\u001b[39margs, __wrapper\u001b[39m=\u001b[39m\u001b[39mNone\u001b[39;00m, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs):\n\u001b[0;32m--> 845\u001b[0m \u001b[39mreturn\u001b[39;00m argmap\u001b[39m.\u001b[39;49m_lazy_compile(__wrapper)(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n", - "File \u001b[0;32m compilation 14:6\u001b[0m, in \u001b[0;36margmap_omega_9\u001b[0;34m(G, niter, nrand, seed)\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39minspect\u001b[39;00m\n\u001b[1;32m 5\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mitertools\u001b[39;00m\n\u001b[0;32m----> 6\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mre\u001b[39;00m\n\u001b[1;32m 7\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mcollections\u001b[39;00m \u001b[39mimport\u001b[39;00m defaultdict\n\u001b[1;32m 8\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mcontextlib\u001b[39;00m \u001b[39mimport\u001b[39;00m contextmanager\n", - "File \u001b[0;32m/usr/lib/python3.10/site-packages/networkx/algorithms/smallworld.py:367\u001b[0m, in \u001b[0;36momega\u001b[0;34m(G, niter, nrand, seed)\u001b[0m\n\u001b[1;32m 363\u001b[0m niter_random_reference \u001b[39m=\u001b[39m niter \u001b[39m*\u001b[39m \u001b[39m2\u001b[39m\n\u001b[1;32m 365\u001b[0m \u001b[39mfor\u001b[39;00m _ \u001b[39min\u001b[39;00m \u001b[39mrange\u001b[39m(nrand):\n\u001b[1;32m 366\u001b[0m \u001b[39m# Generate random graph\u001b[39;00m\n\u001b[0;32m--> 367\u001b[0m Gr \u001b[39m=\u001b[39m random_reference(G, niter\u001b[39m=\u001b[39;49mniter_random_reference, seed\u001b[39m=\u001b[39;49mseed)\n\u001b[1;32m 368\u001b[0m randMetrics[\u001b[39m\"\u001b[39m\u001b[39mL\u001b[39m\u001b[39m\"\u001b[39m]\u001b[39m.\u001b[39mappend(nx\u001b[39m.\u001b[39maverage_shortest_path_length(Gr))\n\u001b[1;32m 370\u001b[0m \u001b[39m# Generate lattice graph\u001b[39;00m\n", - "File \u001b[0;32m/usr/lib/python3.10/site-packages/networkx/utils/decorators.py:845\u001b[0m, in \u001b[0;36margmap.__call__..func\u001b[0;34m(_argmap__wrapper, *args, **kwargs)\u001b[0m\n\u001b[1;32m 844\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mfunc\u001b[39m(\u001b[39m*\u001b[39margs, __wrapper\u001b[39m=\u001b[39m\u001b[39mNone\u001b[39;00m, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs):\n\u001b[0;32m--> 845\u001b[0m \u001b[39mreturn\u001b[39;00m argmap\u001b[39m.\u001b[39;49m_lazy_compile(__wrapper)(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n", - "File \u001b[0;32m compilation 24:6\u001b[0m, in \u001b[0;36margmap_random_reference_19\u001b[0;34m(G, niter, connectivity, seed)\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39minspect\u001b[39;00m\n\u001b[1;32m 5\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mitertools\u001b[39;00m\n\u001b[0;32m----> 6\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mre\u001b[39;00m\n\u001b[1;32m 7\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mcollections\u001b[39;00m \u001b[39mimport\u001b[39;00m defaultdict\n\u001b[1;32m 8\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mcontextlib\u001b[39;00m \u001b[39mimport\u001b[39;00m contextmanager\n", - "File \u001b[0;32m/usr/lib/python3.10/site-packages/networkx/algorithms/smallworld.py:100\u001b[0m, in \u001b[0;36mrandom_reference\u001b[0;34m(G, niter, connectivity, seed)\u001b[0m\n\u001b[1;32m 97\u001b[0m G\u001b[39m.\u001b[39mremove_edge(c, d)\n\u001b[1;32m 99\u001b[0m \u001b[39m# Check if the graph is still connected\u001b[39;00m\n\u001b[0;32m--> 100\u001b[0m \u001b[39mif\u001b[39;00m connectivity \u001b[39mand\u001b[39;00m local_conn(G, a, b) \u001b[39m==\u001b[39m \u001b[39m0\u001b[39m:\n\u001b[1;32m 101\u001b[0m \u001b[39m# Not connected, revert the swap\u001b[39;00m\n\u001b[1;32m 102\u001b[0m G\u001b[39m.\u001b[39mremove_edge(a, d)\n\u001b[1;32m 103\u001b[0m G\u001b[39m.\u001b[39mremove_edge(c, b)\n", - "File \u001b[0;32m/usr/lib/python3.10/site-packages/networkx/algorithms/connectivity/connectivity.py:649\u001b[0m, in \u001b[0;36mlocal_edge_connectivity\u001b[0;34m(G, s, t, flow_func, auxiliary, residual, cutoff)\u001b[0m\n\u001b[1;32m 646\u001b[0m \u001b[39melif\u001b[39;00m flow_func \u001b[39mis\u001b[39;00m boykov_kolmogorov:\n\u001b[1;32m 647\u001b[0m kwargs[\u001b[39m\"\u001b[39m\u001b[39mcutoff\u001b[39m\u001b[39m\"\u001b[39m] \u001b[39m=\u001b[39m cutoff\n\u001b[0;32m--> 649\u001b[0m \u001b[39mreturn\u001b[39;00m nx\u001b[39m.\u001b[39;49mmaximum_flow_value(H, s, t, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n", - "File \u001b[0;32m/usr/lib/python3.10/site-packages/networkx/algorithms/flow/maxflow.py:307\u001b[0m, in \u001b[0;36mmaximum_flow_value\u001b[0;34m(flowG, _s, _t, capacity, flow_func, **kwargs)\u001b[0m\n\u001b[1;32m 304\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m callable(flow_func):\n\u001b[1;32m 305\u001b[0m \u001b[39mraise\u001b[39;00m nx\u001b[39m.\u001b[39mNetworkXError(\u001b[39m\"\u001b[39m\u001b[39mflow_func has to be callable.\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m--> 307\u001b[0m R \u001b[39m=\u001b[39m flow_func(flowG, _s, _t, capacity\u001b[39m=\u001b[39;49mcapacity, value_only\u001b[39m=\u001b[39;49m\u001b[39mTrue\u001b[39;49;00m, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[1;32m 309\u001b[0m \u001b[39mreturn\u001b[39;00m R\u001b[39m.\u001b[39mgraph[\u001b[39m\"\u001b[39m\u001b[39mflow_value\u001b[39m\u001b[39m\"\u001b[39m]\n", - "File \u001b[0;32m/usr/lib/python3.10/site-packages/networkx/algorithms/flow/edmondskarp.py:237\u001b[0m, in \u001b[0;36medmonds_karp\u001b[0;34m(G, s, t, capacity, residual, value_only, cutoff)\u001b[0m\n\u001b[1;32m 120\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39medmonds_karp\u001b[39m(\n\u001b[1;32m 121\u001b[0m G, s, t, capacity\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mcapacity\u001b[39m\u001b[39m\"\u001b[39m, residual\u001b[39m=\u001b[39m\u001b[39mNone\u001b[39;00m, value_only\u001b[39m=\u001b[39m\u001b[39mFalse\u001b[39;00m, cutoff\u001b[39m=\u001b[39m\u001b[39mNone\u001b[39;00m\n\u001b[1;32m 122\u001b[0m ):\n\u001b[1;32m 123\u001b[0m \u001b[39m \u001b[39m\u001b[39m\"\"\"Find a maximum single-commodity flow using the Edmonds-Karp algorithm.\u001b[39;00m\n\u001b[1;32m 124\u001b[0m \n\u001b[1;32m 125\u001b[0m \u001b[39m This function returns the residual network resulting after computing\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 235\u001b[0m \n\u001b[1;32m 236\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 237\u001b[0m R \u001b[39m=\u001b[39m edmonds_karp_impl(G, s, t, capacity, residual, cutoff)\n\u001b[1;32m 238\u001b[0m R\u001b[39m.\u001b[39mgraph[\u001b[39m\"\u001b[39m\u001b[39malgorithm\u001b[39m\u001b[39m\"\u001b[39m] \u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39medmonds_karp\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 239\u001b[0m \u001b[39mreturn\u001b[39;00m R\n", - "File \u001b[0;32m/usr/lib/python3.10/site-packages/networkx/algorithms/flow/edmondskarp.py:104\u001b[0m, in \u001b[0;36medmonds_karp_impl\u001b[0;34m(G, s, t, capacity, residual, cutoff)\u001b[0m\n\u001b[1;32m 101\u001b[0m \u001b[39mraise\u001b[39;00m nx\u001b[39m.\u001b[39mNetworkXError(\u001b[39m\"\u001b[39m\u001b[39msource and sink are the same node\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m 103\u001b[0m \u001b[39mif\u001b[39;00m residual \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[0;32m--> 104\u001b[0m R \u001b[39m=\u001b[39m build_residual_network(G, capacity)\n\u001b[1;32m 105\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 106\u001b[0m R \u001b[39m=\u001b[39m residual\n", - "File \u001b[0;32m/usr/lib/python3.10/site-packages/networkx/algorithms/flow/utils.py:139\u001b[0m, in \u001b[0;36mbuild_residual_network\u001b[0;34m(G, capacity)\u001b[0m\n\u001b[1;32m 135\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m R\u001b[39m.\u001b[39mhas_edge(u, v):\n\u001b[1;32m 136\u001b[0m \u001b[39m# Both (u, v) and (v, u) must be present in the residual\u001b[39;00m\n\u001b[1;32m 137\u001b[0m \u001b[39m# network.\u001b[39;00m\n\u001b[1;32m 138\u001b[0m R\u001b[39m.\u001b[39madd_edge(u, v, capacity\u001b[39m=\u001b[39mr)\n\u001b[0;32m--> 139\u001b[0m R\u001b[39m.\u001b[39;49madd_edge(v, u, capacity\u001b[39m=\u001b[39;49m\u001b[39m0\u001b[39;49m)\n\u001b[1;32m 140\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 141\u001b[0m \u001b[39m# The edge (u, v) was added when (v, u) was visited.\u001b[39;00m\n\u001b[1;32m 142\u001b[0m R[u][v][\u001b[39m\"\u001b[39m\u001b[39mcapacity\u001b[39m\u001b[39m\"\u001b[39m] \u001b[39m=\u001b[39m r\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "standard_omega = nx.omega(G, nrand=10, seed=42)\n", - "standard_omega" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.9" - }, - "orig_nbformat": 4, - "vscode": { - "interpreter": { - "hash": "e7370f93d1d0cde622a1f8e1c04877d8463912d04d973331ad4851f04de6915a" - } - } - }, - "nbformat": 4, - "nbformat_minor": 2 -}