diff --git a/.gitignore b/.gitignore index 3187bf20..4b980d44 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ _doc/examples/data/*.optimized.onnx _doc/examples/*.html _doc/_static/require.js _doc/_static/viz.js +_doc/practice/algo-compose/paris_54000.* diff --git a/_doc/practice/algo-compose/paris_parcours.ipynb b/_doc/practice/algo-compose/paris_parcours.ipynb index bad47cd1..0eea176d 100644 --- a/_doc/practice/algo-compose/paris_parcours.ipynb +++ b/_doc/practice/algo-compose/paris_parcours.ipynb @@ -13,15 +13,7 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Populating the interactive namespace from numpy and matplotlib\n" - ] - } - ], + "outputs": [], "source": [ "%matplotlib inline" ] @@ -44,7 +36,18 @@ "source": [ "## Les données\n", "\n", - "On récupère les données sur Internet." + "On récupère les données sur Internet. Le paramètre `keep=200` garde seulement les 100 premières rues de Paris. Il faut remplacer cette valuer par `keep=-1` pour les garder toutes. Dans ce cas, l'exécution de ce notebook est longue. Les algorithmes ne sont pas nécessairement implémentés de façon très efficace." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "\n", + "sys.path.append(\"/home/xadupre/github/teachpyx\")" ] }, { @@ -56,30 +59,35 @@ "name": "stdout", "output_type": "stream", "text": [ - " downloading of http://www.xavierdupre.fr/enseignement/complements/paris_54000.zip to paris_54000.zip\n", - " unzipped paris_54000.txt to .\\paris_54000.txt\n" + "already downloaded './paris_54000.zip'\n" ] }, { "data": { "text/plain": [ - "['.\\\\paris_54000.txt']" + "(200, 146)" ] }, - "execution_count": 4, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "url = \"https://github.com/sdpython/teachpyx/_data/paris_54000.zip\"" + "from teachpyx.practice.rues_paris import get_data\n", + "\n", + "url = \"https://github.com/sdpython/teachpyx/raw/main/_data/paris_54000.zip\"\n", + "edges, vertices = get_data(\n", + " url, \".\", verbose=True, keep=200\n", + ") # keep=-1 pour toutes les rues\n", + "len(edges), len(vertices)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "On extrait du fichier l'ensemble des carrefours (vertices) et des rues ou segment de rues (edges)." + "Les noeuds sont simplement décrits par les coordonnées du carrefour." ] }, { @@ -88,42 +96,32 @@ "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "#E= 17958 #V= 11348 > 11347\n" - ] + "data": { + "text/plain": [ + "[(48.873361200000005, 2.3236609), (48.8730454, 2.3235788)]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "name = data[0]\n", - "with open(name, \"r\") as f:\n", - " lines = f.readlines()\n", - "\n", - "vertices = []\n", - "edges = []\n", - "for i, line in enumerate(lines):\n", - " spl = line.strip(\"\\n\\r\").split(\" \")\n", - " if len(spl) == 2:\n", - " vertices.append((float(spl[0]), float(spl[1])))\n", - " elif len(spl) == 5 and i > 0:\n", - " v1, v2 = int(spl[0]), int(spl[1])\n", - " ways = int(spl[2]) # dans les deux sens ou pas\n", - " p1 = vertices[v1]\n", - " p2 = vertices[v2]\n", - " edges.append((v1, v2, ways, p1, p2))\n", - " elif i > 0:\n", - " raise ValueError(f\"Unable to interpret line {i}: {line!r}\")\n", - "\n", - "m = max(max(_[0] for _ in edges), max(_[1] for _ in edges))\n", - "print(f\"#E={len(edges)} #V={len(vertices)}>{m}\")" + "vertices[:2]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "On trace sur un graphique un échantillon des carrefours. On suppose la ville de Paris suffisamment petite et loin des pôles pour considérer les coordonnées comme cartésiennes (et non comme longitude/latitude)." + "Les arcs sont des tuples comprenant :\n", + "\n", + "* l'indice du premier carrefour\n", + "* l'indice du second carrefour\n", + "* si la rue est à double sens ou non\n", + "* les coordonnées du premier carrefour\n", + "* les coordonnées du second carrefour\n", + "* la distance entre les deux extrémités (la longueur de la rue)" ] }, { @@ -134,38 +132,35 @@ { "data": { "text/plain": [ - "[]" + "[(0,\n", + " 1,\n", + " 1,\n", + " (48.873361200000005, 2.3236609),\n", + " (48.8730454, 2.3235788),\n", + " 0.03562501840766763),\n", + " (2,\n", + " 0,\n", + " 1,\n", + " (48.8741849, 2.3239352),\n", + " (48.873361200000005, 2.3236609),\n", + " 0.0937624742737696)]" ] }, - "execution_count": 6, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" } ], "source": [ - "import matplotlib.pyplot as plt\n", - "import random\n", - "\n", - "sample = [vertices[random.randint(0, len(vertices) - 1)] for i in range(0, 1000)]\n", - "plt.plot([_[0] for _ in sample], [_[1] for _ in sample], \".\")\n", - "plt.title(\"Carrefours de Paris\");" + "edges[:2]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Puis on dessine également un échantillon des rues." + "Les carrefours sont les extrémités des rues ou noeuds (vertices) du graphe. Les rues sont les arcs (edges).\n", + "On trace sur un graphique un échantillon des carrefours. On suppose la ville de Paris suffisamment petite et loin des pôles pour considérer les coordonnées comme cartésiennes (et non comme longitude/latitude)." ] }, { @@ -175,9 +170,9 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "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zYW3tzdycnLg5eWldHFIYaXnUAFAoJ8b51ARWQk/f8vH94aISBnGfv6aneWPqLpLmtYHG0+kY/f5W4hsW59D/YiIiIioDAZURBUYHRbIQIqIiIiIymVSlj8iIiIiIiLSYUBFRERERERkJgZUREREREREZmJARUREREREZCYGVERERERERGZiQEVERERERGQmBlRERERERERmYkBFRERERERkJi7sW4oQAgCQm5urcEmIiGoWzeeu5nOYdNg2EREpw9i2iQFVKffu3QMANGnSROGSEBHVTPfu3YO3t7fSxbArbJuIiJRVWdukEvw5UKukpAQ3b96Ep6cnVCqV0sWpktzcXDRp0gTXr1+Hl5eX0sWxqZpcd4D1Z/0ds/5CCNy7dw8NGzaEkxNHo5dWXdomR/23aSmsP+vP+jte/Y1tm9hDVYqTkxMaN26sdDEsysvLy6H+4VpSTa47wPqz/o5Xf/ZMGVbd2iZH/LdpSaw/68/6O1b9jWmb+DMgERERERGRmRhQERERERERmYkBVTWlVqvx8ccfQ61WK10Um6vJdQdYf9a/Ztef7FdN/7fJ+rP+rH/1rT+TUhAREREREZmJPVRERERERERmYkBFRERERERkJgZUREREREREZmJARUREREREZCYGVHZq0aJFaNasGWrXro2uXbvi2LFjFR6/ceNGBAcHo3bt2mjfvj3i4+P1nhdC4KOPPkKDBg3g5uaGfv364b///a/eMVlZWXjllVfg5eUFHx8fREdH4/79+xavmzFsXf+rV68iOjoazZs3h5ubG1q2bImPP/4YBQUFVqlfRZT422vk5+cjJCQEKpUKycnJlqqSSZSq/w8//ICuXbvCzc0Nvr6+GD58uCWrZTQl6v/zzz9j2LBhqFevHry8vNCzZ0/s27fP4nUjx8Z2qea2SwDbJrZNbJsqJMjurFu3Tri6uoqvv/5anD9/XkycOFH4+PiIW7duGTz+8OHDwtnZWcybN09cuHBBzJw5U9SqVUucO3dOe8znn38uvL29xdatW8WZM2fE0KFDRfPmzcXDhw+1xwwcOFB06NBB/PTTT+LgwYMiKChIjBkzxur1fZwS9d+xY4f405/+JHbt2iXS0tLEtm3bhL+/v5g6dapN6qyh1N9e48033xSDBg0SAMTp06etVc1yKVX/7777Tvj6+oolS5aI1NRUcf78ebF+/Xqr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", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -185,10 +180,18 @@ } ], "source": [ - "sample = [edges[random.randint(0, len(edges) - 1)] for i in range(0, 1000)]\n", + "import matplotlib.pyplot as plt\n", + "import random\n", + "\n", + "fig, ax = plt.subplots(1, 2, figsize=(10, 4))\n", + "sample = [vertices[random.randint(0, len(vertices) - 1)] for i in range(0, 500)]\n", + "ax[0].plot([_[0] for _ in sample], [_[1] for _ in sample], \".\")\n", + "ax[0].set_title(\"Carrefours de Paris\")\n", + "\n", + "sample = [edges[random.randint(0, len(edges) - 1)] for i in range(0, 500)]\n", "for edge in sample:\n", - " plt.plot([_[0] for _ in edge[-2:]], [_[1] for _ in edge[-2:]], \"b-\")\n", - "plt.title(\"Rue de Paris\");" + " ax[1].plot([edge[3][0], edge[4][0]], [edge[3][1], edge[4][1]], \"b-\")\n", + "ax[1].set_title(\"Rue de Paris\");" ] }, { @@ -206,16 +209,16 @@ { "data": { "text/plain": [ - "0" + "(200, 0)" ] }, - "execution_count": 8, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "len(list(e for e in edges if e[0] == e[1]))" + "len(edges), len(list(e for e in edges if e[0] == e[1]))" ] }, { @@ -242,9 +245,9 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -258,7 +261,7 @@ "g = nx.Graph()\n", "for i, j in [(1, 2), (1, 3), (1, 4), (2, 3), (3, 4), (4, 5), (5, 2), (2, 4)]:\n", " g.add_edge(i, j)\n", - "f, ax = plt.subplots(figsize=(6, 3))\n", + "f, ax = plt.subplots(figsize=(6, 2))\n", "nx.draw(g, ax=ax)" ] }, @@ -277,10 +280,10 @@ { "data": { "text/plain": [ - "[[(2, 1337), (3, 7103), (4, 2657), (5, 209), (6, 35), (7, 6), (8, 1)]]" + "[[(1, 29), (2, 23), (3, 54), (4, 37), (5, 3)]]" ] }, - "execution_count": 10, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -316,20 +319,7 @@ "source": [ "### Etape 1 : la matrice Bellman\n", "\n", - "Je ne détaillerai pas trop, la page Wikipedia est assez claire. Dans un premier temps on calcule la longueur de chaque arc (de façon cartésienne). Une autre distance ([Haversine](http://en.wikipedia.org/wiki/Haversine_formula)) ne changerait pas le raisonnement." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "def distance(p1, p2):\n", - " return ((p1[0] - p2[0]) ** 2 + (p1[1] - p2[1]) ** 2) ** 0.5\n", - "\n", - "\n", - "edges = [edge + (distance(edge[-2], edge[-1]),) for edge in edges]" + "Je ne détaillerai pas trop, la page Wikipedia est assez claire. La longueur de chaque rue est incluses dans la description de chaque arc. Elle peut être la distance cartésienne ou la une distance de [Haversine](http://en.wikipedia.org/wiki/Haversine_formula) qui calcule la distance à la surface d'une sphère à partir des coordonnées géographiques. Paris est petit est une approximation cartésienne ne change pas grand chose." ] }, { @@ -341,20 +331,20 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "2015-04-12 01:16:40.590690 iteration 0 modif 72870 # 35916 / 128777104 = 0.03%\n", - "2015-04-12 01:16:41.340550 iteration 1 modif 120368 # 104842 / 128777104 = 0.08%\n", - "2015-04-12 01:16:42.887810 iteration 2 modif 180646 # 213826 / 128777104 = 0.17%\n", - "2015-04-12 01:16:45.510596 iteration 3 modif 255702 # 368960 / 128777104 = 0.29%\n", - "2015-04-12 01:16:49.759326 iteration 4 modif 347092 # 576106 / 128777104 = 0.45%\n", - "2015-04-12 01:16:55.781000 iteration 5 modif 455899 # 839276 / 128777104 = 0.65%\n", - "2015-04-12 01:17:04.276258 iteration 6 modif 584263 # 1162870 / 128777104 = 0.90%\n" + "2023-08-19 09:10:56.535221 iteration 0 modif 778 # 1138/21316=5.34%\n", + "2023-08-19 09:10:56.538415 iteration 1 modif 1228 # 2258/21316=10.59%\n", + "2023-08-19 09:10:56.545218 iteration 2 modif 1717 # 3748/21316=17.58%\n", + "2023-08-19 09:10:56.557001 iteration 3 modif 2118 # 5500/21316=25.80%\n", + "2023-08-19 09:10:56.574194 iteration 4 modif 2442 # 7470/21316=35.04%\n", + "2023-08-19 09:10:56.602050 iteration 5 modif 2726 # 9624/21316=45.15%\n", + "2023-08-19 09:10:56.642132 iteration 6 modif 2900 # 11810/21316=55.40%\n" ] } ], @@ -378,17 +368,17 @@ "it = 0\n", "while modif > 0:\n", " modif = 0\n", - " initc = (\n", - " init.copy()\n", - " ) # to avoid RuntimeError: dictionary changed size during iteration\n", " s = 0\n", - " for i, d in initc.items():\n", + " # on itère sur les clés connues au début de l'itération\n", + " # il faut éviter d'itérer sur un ensemble et de le modifier en même temps\n", + " keys = list(init)\n", + " for i in keys:\n", + " d = init[i]\n", " fromi2 = edges_from[i[1]]\n", " s += d\n", " for e in fromi2:\n", - " if (\n", - " i[0] == e[1]\n", - " ): # on fait attention à ne pas ajouter de boucle sur le même noeud\n", + " if i[0] == e[1]:\n", + " # on fait attention à ne pas ajouter de boucle sur le même noeud\n", " continue\n", " new_e = i[0], e[1]\n", " new_d = d + e[-1]\n", @@ -396,8 +386,8 @@ " init[new_e] = new_d\n", " modif += 1\n", " print(\n", - " f\"{datetime.datetime.now()} iteration {it} modif {modif} # {len(initc)}/{total_possible_edges}=\"\n", - " f\"{len(initc)*100 / total_possible_edges:0.00f}%\"\n", + " f\"{datetime.datetime.now()} iteration {it} modif {modif} # {len(init)}/{total_possible_edges}=\"\n", + " f\"{len(init)*100 / total_possible_edges:1.2f}%\"\n", " )\n", " it += 1\n", " if it > 6:\n", @@ -408,21 +398,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "On s'aperçoit vite que cela va être très très long. On décide alors de ne considérer que les paires de noeuds pour lesquelles la distance à vol d'oiseau est inférieure au plus grand segment de rue ou inférieure à cette distance multipliée par un coefficient." + "Avec 200 rues, c'est rapide mais cela peut être très long avec toutes les rues. On décide alors de ne considérer que les paires de noeuds pour lesquelles la distance à vol d'oiseau est inférieure au plus grand segment de rue ou inférieure à cette distance multipliée par un coefficient." ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "0.017418989861067814" + "0.3258634178614415" ] }, - "execution_count": 13, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -436,73 +426,66 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "On calcule les arcs admissibles (en espérant que les noeuds de degré impairs seront bien dedans). Cette étape prend quelques minutes :" + "On calcule les arcs admissibles (en espérant que les noeuds de degré impairs seront bien dedans). Cette étape peut être longue. C'est pour cela qu'on utilise le module [tqdm](https://github.com/tqdm/tqdm) pour afficher une barre de défilement." ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 146/146 [00:00<00:00, 2118.45it/s]" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ - "original 35916 / 128777104 = 0.000278900510140374\n", - "addition 2875586 / 128777104 = 0.022329947721141486\n" + "original 200/21316 = 0.009382623381497467\n", + "addition 5290/21316 = 0.248170388440608\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" ] } ], "source": [ - "possibles = {(e[0], e[1]): e[-1] for e in edges}\n", - "possibles.update({(e[1], e[0]): e[-1] for e in edges})\n", - "initial = possibles.copy()\n", - "for i1, v1 in enumerate(vertices):\n", - " for i2 in range(i1 + 1, len(vertices)):\n", - " v2 = vertices[i2]\n", - " d = distance(v1, v2)\n", - " if d < max_segment / 2: # on ajuste le seuil\n", - " possibles[i1, i2] = d\n", - " possibles[i2, i1] = d\n", + "from teachpyx.practice.rues_paris import distance_haversine as distance\n", + "from tqdm import tqdm\n", + "\n", "\n", + "def build_possibles(vertices, edges, seuil):\n", + " possibles = {(e[0], e[1]): e[-1] for e in edges}\n", + " possibles.update({(e[1], e[0]): e[-1] for e in edges})\n", + " for i1, v1 in tqdm(list(enumerate(vertices))):\n", + " for i2 in range(i1 + 1, len(vertices)):\n", + " v2 = vertices[i2]\n", + " d = distance(v1[0], v1[1], v2[0], v2[1])\n", + " if d < seuil: # on ajuste le seuil\n", + " possibles[i1, i2] = d\n", + " possibles[i2, i1] = d\n", + " return possibles\n", + "\n", + "\n", + "possibles = build_possibles(vertices, edges, max_segment)\n", "print(\n", - " f\"original {len(initial)}/{total_possible_edges} = \"\n", - " f\"{len(initial)/total_possible_edges}\"\n", + " f\"original {len(edges)}/{total_possible_edges} = \"\n", + " f\"{len(edges)/total_possible_edges}\"\n", ")\n", "print(\n", - " f\"addition {len(possibles)-len(initial)}/{total_possible_edges} = \"\n", - " f\"{(len(possibles)-len(initial))/total_possible_edges}\"\n", + " f\"addition {len(possibles)-len(edges)}/{total_possible_edges} = \"\n", + " f\"{(len(possibles)-len(edges))/total_possible_edges}\"\n", ")" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "On vérifie que les noeuds de degré impairs font tous partie de l'ensemble des noeuds recevant de nouveaux arcs. La matrice de Bellman envisagera au pire 2.2% de toutes les distances possibles." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "si vous voyez cette ligne, c'est que tout est bon\n" - ] - } - ], - "source": [ - "allv = {p[0]: True for p in possibles if p not in initial} # possibles est symétrique\n", - "for v, p in nb_edge.items():\n", - " if p % 2 == 1 and v not in allv:\n", - " raise Exception(\"problème pour le noeud: {0}\".format(v))\n", - "print(\"si vous voyez cette ligne, c'est que tout est bon\")" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -512,75 +495,75 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "2015-04-12 01:18:45.389333 iteration 0 modif 72870 # 35916 / 128777104 = 0.03%\n", - "2015-04-12 01:18:46.179293 iteration 1 modif 119604 # 104842 / 128777104 = 0.08%\n", - "2015-04-12 01:18:47.853483 iteration 2 modif 178033 # 213086 / 128777104 = 0.17%\n", - "2015-04-12 01:18:50.790772 iteration 3 modif 248648 # 365751 / 128777104 = 0.28%\n", - "2015-04-12 01:18:55.302585 iteration 4 modif 330443 # 566457 / 128777104 = 0.44%\n", - "2015-04-12 01:19:02.002318 iteration 5 modif 419549 # 815211 / 128777104 = 0.63%\n", - "2015-04-12 01:19:11.623367 iteration 6 modif 508807 # 1109019 / 128777104 = 0.86%\n", - "2015-04-12 01:19:23.579840 iteration 7 modif 585973 # 1438040 / 128777104 = 1.12%\n", - "2015-04-12 01:19:38.370350 iteration 8 modif 639491 # 1785232 / 128777104 = 1.39%\n", - "2015-04-12 01:19:56.035255 iteration 9 modif 656961 # 2127675 / 128777104 = 1.65%\n", - "2015-04-12 01:20:16.436453 iteration 10 modif 638987 # 2441604 / 128777104 = 1.90%\n", - "2015-04-12 01:20:39.075644 iteration 11 modif 591284 # 2711201 / 128777104 = 2.11%\n", - "2015-04-12 01:21:04.245760 iteration 12 modif 519515 # 2928527 / 128777104 = 2.27%\n", - "2015-04-12 01:21:33.496050 iteration 13 modif 434787 # 3091667 / 128777104 = 2.40%\n", - "2015-04-12 01:22:02.419568 iteration 14 modif 346204 # 3205671 / 128777104 = 2.49%\n", - "2015-04-12 01:22:29.389913 iteration 15 modif 263229 # 3279078 / 128777104 = 2.55%\n", - "2015-04-12 01:22:55.394012 iteration 16 modif 191482 # 3323381 / 128777104 = 2.58%\n", - "2015-04-12 01:23:22.033884 iteration 17 modif 133738 # 3348569 / 128777104 = 2.60%\n", - "2015-04-12 01:23:49.684842 iteration 18 modif 90442 # 3362160 / 128777104 = 2.61%\n", - "2015-04-12 01:24:17.267404 iteration 19 modif 59686 # 3369505 / 128777104 = 2.62%\n", - "2015-04-12 01:24:46.839139 iteration 20 modif 38936 # 3373640 / 128777104 = 2.62%\n" + "2023-08-19 09:10:56.912505 iteration 0 modif 778 # 400/21316=1.88%\n", + "2023-08-19 09:10:56.928070 iteration 1 modif 1213 # 1138/21316=5.34%\n", + "2023-08-19 09:10:56.938916 iteration 2 modif 1627 # 2244/21316=10.53%\n", + "2023-08-19 09:10:56.957763 iteration 3 modif 1676 # 3644/21316=17.10%\n", + "2023-08-19 09:10:56.976823 iteration 4 modif 1341 # 4989/21316=23.40%\n", + "2023-08-19 09:10:57.020697 iteration 5 modif 833 # 5977/21316=28.04%\n", + "2023-08-19 09:10:57.042415 iteration 6 modif 427 # 6489/21316=30.44%\n", + "2023-08-19 09:10:57.062800 iteration 7 modif 187 # 6716/21316=31.51%\n", + "2023-08-19 09:10:57.088837 iteration 8 modif 74 # 6815/21316=31.97%\n", + "2023-08-19 09:10:57.112715 iteration 9 modif 36 # 6856/21316=32.16%\n", + "2023-08-19 09:10:57.138552 iteration 10 modif 9 # 6874/21316=32.25%\n", + "2023-08-19 09:10:57.168428 iteration 11 modif 1 # 6874/21316=32.25%\n", + "2023-08-19 09:10:57.197202 iteration 12 modif 0 # 6874/21316=32.25%\n" ] } ], "source": [ "import datetime\n", - "init = { (e[0],e[1]) : e[-1] for e in edges }\n", - "init.update ( { (e[1],e[0]) : e[-1] for e in edges } )\n", "\n", - "edges_from = { }\n", - "for e in edges :\n", - " if e[0] not in edges_from : \n", + "init = {(e[0], e[1]): e[-1] for e in edges}\n", + "init.update({(e[1], e[0]): e[-1] for e in edges})\n", + "\n", + "edges_from = {}\n", + "for e in edges:\n", + " if e[0] not in edges_from:\n", " edges_from[e[0]] = []\n", - " if e[1] not in edges_from : \n", + " if e[1] not in edges_from:\n", " edges_from[e[1]] = []\n", " edges_from[e[0]].append(e)\n", - " edges_from[e[1]].append( (e[1], e[0], e[2], e[4], e[3], e[5] ) )\n", - " \n", + " edges_from[e[1]].append((e[1], e[0], e[2], e[4], e[3], e[5]))\n", + "\n", "modif = 1\n", - "total_possible_edges = len(edges_from)**2\n", + "total_possible_edges = len(edges_from) ** 2\n", "it = 0\n", - "while modif > 0 :\n", + "while modif > 0:\n", " modif = 0\n", - " initc = init.copy() # to avoid RuntimeError: dictionary changed size during iteration\n", + " initc = (\n", + " init.copy()\n", + " ) # to avoid RuntimeError: dictionary changed size during iteration\n", " s = 0\n", - " for i,d in initc.items() :\n", - " if i not in possibles : \n", + " for i, d in initc.items():\n", + " if i not in possibles:\n", " continue # we skip undesired edges ------------------- addition\n", " fromi2 = edges_from[i[1]]\n", " s += d\n", - " for e in fromi2 :\n", - " if i[0] == e[1] : # on fait attention à ne pas ajouter de boucle sur le même noeud\n", + " for e in fromi2:\n", + " if (\n", + " i[0] == e[1]\n", + " ): # on fait attention à ne pas ajouter de boucle sur le même noeud\n", " continue\n", " new_e = i[0], e[1]\n", " new_d = d + e[-1]\n", - " if new_e not in init or init[new_e] > new_d :\n", - " init[new_e] = new_d \n", + " if new_e not in init or init[new_e] > new_d:\n", + " init[new_e] = new_d\n", " modif += 1\n", - " print(f\"{datetime.datetime.now()} iteration {it} modif {modif} # {len(initc)}/{total_possible_edges}=\" \n", - " f{len(initc)*100 / total_possible_edges:0.00f}%\")\n", + " print(\n", + " f\"{datetime.datetime.now()} iteration {it} modif {modif} \"\n", + " f\"# {len(initc)}/{total_possible_edges}=\"\n", + " f\"{len(initc)*100 / total_possible_edges:1.2f}%\"\n", + " )\n", " it += 1\n", - " if it > 20 : \n", + " if it > 20:\n", " break" ] }, @@ -588,12 +571,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "L'algorithme consiste à regarder les chemins $a \\rightarrow b \\rightarrow c$ et à comparer s'il est plus rapide que $a \\rightarrow c$. 2.6% > 2.2% parce que le filtre est appliqué seulement sur $a \\rightarrow b$. Finalement, on considère les arcs ajoutés puis on retire les arcs originaux." + "L'algorithme consiste à regarder les chemins $a \\rightarrow b \\rightarrow c$ et à comparer s'il est plus rapide que $a \\rightarrow c$. " ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -614,16 +597,16 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "nb degré impairs 22 nombre d'arcs ajoutés 3648\n", - "longueur ajoutée 3.5423464430662346\n", - "longueur initiale 17.418504406203844\n" + "nb degré impairs 2 nombre d'arcs ajoutés 42\n", + "longueur ajoutée 5.122002169199727\n", + "longueur initiale 15.661698849016764\n" ] } ], @@ -670,175 +653,128 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Le nombre de noeuds impairs obtenus à la fin doit être inférieur à 2 pour être sûr de trouver un chemin (mais on choisira 0 pour avoir un circuit eulérien). Mon premier essai n'a pas donné satisfaction (92 noeuds impairs restant) car j'avais choisi un seuil (max_segment / 4) trop petit lors de la sélection des arcs à ajouter. J'ai augmenté le seuil par la suite mais il reste encore 22 noeuds de degré impairs. On a le choix entre augmenter ce seuil mais l'algorithme est déjà long ou chercher dans une autre direction comme laisser l'algorithme de Bellman explorer les noeuds de degré impairs. Ca ne veut pas forcément dire qu'il manque des arcs mais que peut-être ils sont mal choisis. Si l'arc $i \\rightarrow j$ est choisi, l'arc $j \\rightarrow k$ ne le sera pas car $j$ aura un degré pair. Mais dans ce cas, si l'arc $j \\rightarrow k$ était le dernier arc disponible pour combler $k$, on est coincé. On peut augmenter le seuil encore mais cela risquee de prendre du temps et puis cela ne fonctionnerait pas toujours sur tous les jeux de données.\n", - "\n", - "On pourait alors écrire une sorte d'algorithme itératif qui exécute l'algorithme de Bellman, puis lance celui qui ajoute les arcs. Puis on revient au premier en ajoutant plus d'arcs autour des noeuds problèmatique lors de la seconde étape. L'ensemble est un peu long pour tenir dans un notebook mais le code est celui de la fonction [eulerien_extension](http://www.xavierdupre.fr/app/ensae_teaching_cs/helpsphinx/ensae_teaching_cs/special/rues_paris.html#special.rues_paris.eulerien_extension). Je conseille également la lecture de cet article : [Efficient Algorithms for Eulerian Extension](http://www.akt.tu-berlin.de/fileadmin/fg34/publications-akt/euler_short.pdf) (voir également [On Making Directed Graphs Eulerian](http://arxiv.org/abs/1101.4283)). L'exécution qui suit prend une vingtaine de minutes." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "data\n", - "start, nb edges 17958\n", - "possible_edges\n", - "original 17958 / 64382878.0 = 0.00027892508936925745\n", - "addition 1312214 / 64382878.0 = 0.020381412586122666\n", - "next\n", - "iteration 0 modif 72876 # 17958 / 64382878 = 0.03%\n", - "iteration 1 modif 119544 # 52421 / 64382878 = 0.08%\n", - "iteration 2 modif 177609 # 106511 / 64382878 = 0.17%\n", - "iteration 3 modif 247689 # 182680 / 64382878 = 0.28%\n", - "iteration 4 modif 327843 # 282626 / 64382878 = 0.44%\n", - "iteration 5 modif 413418 # 405980 / 64382878 = 0.63%\n", - "iteration 6 modif 496069 # 550546 / 64382878 = 0.86%\n", - "iteration 7 modif 561366 # 710517 / 64382878 = 1.10%\n", - "iteration 8 modif 598700 # 875788 / 64382878 = 1.36%\n", - "iteration 9 modif 600000 # 1034325 / 64382878 = 1.61%\n", - "iteration 10 modif 567801 # 1175548 / 64382878 = 1.83%\n", - "iteration 11 modif 510076 # 1292961 / 64382878 = 2.01%\n", - "iteration 12 modif 433796 # 1384196 / 64382878 = 2.15%\n", - "iteration 13 modif 349510 # 1449682 / 64382878 = 2.25%\n", - "iteration 14 modif 267371 # 1493038 / 64382878 = 2.32%\n", - "iteration 15 modif 194659 # 1519796 / 64382878 = 2.36%\n", - "iteration 16 modif 135778 # 1535222 / 64382878 = 2.38%\n", - "iteration 17 modif 90864 # 1543743 / 64382878 = 2.40%\n", - "iteration 18 modif 58784 # 1548367 / 64382878 = 2.40%\n", - "iteration 19 modif 37306 # 1550830 / 64382878 = 2.41%\n", - "iteration 20 modif 23232 # 1552160 / 64382878 = 2.41%\n", - "nb odd degrees 7318 nb added edges 0\n", - "nb odd degrees 28 nb added edges 3645\n", - "added length 312.732395725235\n", - "initial length 1511.8818424919855\n", - "degrees [444, 833, 1112, 1672, 2080, 2218, 2428, 2595, 2767, 2772]\n", - "------- nb odd vertices 28 iteration 0\n", - "iteration 0 modif 18055 # 1552928 / 64382878 = 2.41%\n", - "iteration 1 modif 11117 # 1555011 / 64382878 = 2.42%\n", - "iteration 2 modif 8346 # 1556008 / 64382878 = 2.42%\n", - "iteration 3 modif 6811 # 1557026 / 64382878 = 2.42%\n", - "iteration 4 modif 6056 # 1558080 / 64382878 = 2.42%\n", - "iteration 5 modif 5889 # 1559203 / 64382878 = 2.42%\n", - "iteration 6 modif 6182 # 1560422 / 64382878 = 2.42%\n", - "iteration 7 modif 6606 # 1561720 / 64382878 = 2.43%\n", - "iteration 8 modif 7245 # 1563108 / 64382878 = 2.43%\n", - "iteration 9 modif 8000 # 1564601 / 64382878 = 2.43%\n", - "iteration 10 modif 8813 # 1566180 / 64382878 = 2.43%\n", - "iteration 11 modif 9947 # 1567891 / 64382878 = 2.44%\n", - "iteration 12 modif 11220 # 1569765 / 64382878 = 2.44%\n", - "iteration 13 modif 12595 # 1571750 / 64382878 = 2.44%\n", - "iteration 14 modif 14231 # 1573865 / 64382878 = 2.44%\n", - "iteration 15 modif 15907 # 1576113 / 64382878 = 2.45%\n", - "iteration 16 modif 17720 # 1578466 / 64382878 = 2.45%\n", - "iteration 17 modif 19396 # 1580917 / 64382878 = 2.46%\n", - "iteration 18 modif 21385 # 1583422 / 64382878 = 2.46%\n", - "iteration 19 modif 23468 # 1586072 / 64382878 = 2.46%\n", - "iteration 20 modif 25721 # 1588844 / 64382878 = 2.47%\n", - "nb odd degrees 7318 nb added edges 0\n", - "nb odd degrees 0 nb added edges 3659\n", - "added length 341.68448700406753\n", - "initial length 1511.8818424919855\n", - "degrees []\n", - "end, nb added 3659\n" - ] - } - ], - "source": [ - "from ensae_teaching_cs.special.rues_paris import (\n", - " eulerien_extension,\n", - " distance_paris,\n", - " get_data,\n", - ")\n", + "Le nombre de noeuds impairs obtenus à la fin doit être inférieur à 2 pour être sûr de trouver un chemin (mais on choisira 0 pour avoir un circuit eulérien). Mon premier essai n'a pas donné satisfaction car j'avais choisi un seuil trop petit lors de la sélection des arcs à ajouter. J'ai augmenté le seuil par la suite. S'il reste encore des noeuds de degré impairs, on a le choix entre augmenter ce seuil - mais l'algorithme est déjà long - ou chercher dans une autre direction comme laisser l'algorithme de Bellman explorer les noeuds de degré impairs. Ca ne veut pas forcément dire qu'il manque des arcs mais que peut-être ils sont mal choisis. Si l'arc $i \\rightarrow j$ est choisi, l'arc $j \\rightarrow k$ ne le sera pas car $j$ aura un degré pair. Mais dans ce cas, si l'arc $j \\rightarrow k$ était le dernier arc disponible pour combler $k$, on est coincé. On peut augmenter le seuil encore mais cela risquee de prendre du temps et puis cela ne fonctionnerait pas toujours sur tous les jeux de données.\n", "\n", - "print(\"data\")\n", - "edges = get_data()\n", - "print(f\"start, nb edges {len(edges)}\")\n", - "added = eulerien_extension(edges, distance=distance_paris)\n", - "print(f\"end, nb added {len(added)}\")" + "On pourait alors écrire une sorte d'algorithme itératif qui exécute l'algorithme de Bellman, puis lance celui qui ajoute les arcs. Puis on revient au premier en ajoutant plus d'arcs autour des noeuds problèmatique lors de la seconde étape. L'ensemble est un peu long pour tenir dans un notebook mais le code est celui de la fonction [eulerien_extension](http://www.xavierdupre.fr/app/ensae_teaching_cs/helpsphinx/ensae_teaching_cs/special/rues_paris.html#special.rues_paris.eulerien_extension). Je conseille également la lecture de cet article : [Efficient Algorithms for Eulerian Extension](https://fpt.akt.tu-berlin.de/publications/Eulerian_Extension_and_Rural_Postman_SIDMA.pdf) (voir également [On Making Directed Graphs Eulerian](http://arxiv.org/abs/1101.4283)). L'exécution qui suit prend une vingtaine de minutes." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "On enregistre le résultat où on souhaite recommencer à partir de ce moment-là plus tard." + "### Chemin Eulérien\n", + "\n", + "A cet instant, on n'a pas vraiment besoin de connaître la longueur du chemin eulérien passant par tous les arcs. Il s'agit de la somme des arcs initiaux et ajoutés (soit environ 334 + 1511). On suppose qu'il n'y qu'une composante connexe. Construire le chemin eulérien fait apparaître quelques difficultés comme la suivante : on parcourt le graphe dans un sens mais on peut laisser de côté une partie du chemin et créer une seconde composante connexe." ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 16, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlwAAAHlCAYAAAAgMSKQAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA7EAAAOxAGVKw4bAABtIklEQVR4Xu3dBXhURxsF4EMSnOAUd3d3l+Du7q4tVqQU/lKspaWlFHenQHH34u7u7k5IgIT++YZZCGkSIit3d8/7PPskmbuhoSQ3Z2e++SbCv35ARERERBbjot8SERERkYUwcBERERFZGAMXERERkYUxcBERERFZGAMXERERkYUxcBERERFZGAMXERERkYUxcBERERFZGAMXERERkYUxcBERERFZGAMXERERkYUxcBERERFZGAMXERERkYUxcBERERFZGAMXERERkYUxcBERERFZmKED17///qvfIyIiIrJfhglcT548wdixY1GvXj2kSp0Gbm5ucHFxQbTo0VGwYEF06dIFmzZtwvv37/VnEBEREdmHCP/aeBrp/v37GDBgAObNn4/3vu+RNntupMyUAwmTp4KLqyu8Xr3EjYtncPXUUdy7eQ3p0qX3e35/tGzZEhEiRNB/ChEREZFx2TRw/fXXX+jUuTN83v+L8o3boUT1BogZN76++jn5Mi8eP4hNC6fj4Ja1KF++PKZNm4ZkyZLpZxAREREZk80C1/DhwzFw4EDkL1sZzb4dhphx4ukrX3Zi9zbMHN4PUdxcsGXLZmTKlElfISIiIjIemwQuqdXq0aMHarXviepte4RpafDZo/sY3bUp3nu9wv79+zjTRURERIYV5qJ5T09PDB48GBUrVkTcuHFVgfusWbP01U8OHDiAzp07I2/evIgYMaJ6Xu/evVGhcVvUaPf1Z2Fr65I5GNevI3pWLYRWBVJi6v966Sv/FTFyFCRPnxl3795FqlSpUKZMGRw9elRf/aRUqVLqvxnwUalSJf0MIiIiIssKc+B6+PAhhg4divPnzyNXrlxqLLCZqrVr16paK1dXV6RNm1bVYiVMkQZ1u3yrn/HJ2jkTcf7wPiRLlwkurm5BznzJTsUxX7fE0X82oVDFGvD19cWFCxdUuLp06ZJ+1ifJkyfH3LlzP3t8++1///tERERElhDmJcW3b9/i2bNn+Oqrr3D48GHkz58fM2fORPPmzfUzPnjw4AFixYqFyJEjo1q1ali9ejX6T16MjLkL6md88vjeHcRLlES937FkZuQvWwVtvh+tPvbvwKZVmDCwK7qMnIh8ZSph3Lcd8Pjqeb+v56mauZo3b55+5ocZLmk5ceLECT1CREREZF1hnuGKFCmSClsiuMwmz5GwJU6ePKneZshVQL0NyBS2vuTg1rWIFS+BClvCo2FrXL16BUWKFMGKFSvw7t07NW4iX5/Mgr169UqPEBEREVmP1Rqfent748aNG+r98PbPunH+NFJmyqY/+hDgEiVPhdevX6uHLC/6Jx9Hjx4dMWPGROLEifH999/Dx8dHXyUiIiKyLKsFLlnSUzNh4Qxb4tmjB4gV78PsmpAAlzprbty5c0d9bHor0qVLh++++w4LFy7EnDlzVNf6H3/8EU2bNtXPICIiIrIsqwWuU6dOqbfhj1vAu7dvEDHSh2VKkxQZsuDa9evqfS8vL/VWTJ06FYMGDULNmjXRpEkTLF++HO3atVNNV/fv36+fRURERGQ5VgtcUj/l4uKqPwqfSJGjqNDlX9QY7njj7f3h/ahR1dug9Or1od3Eli1b1FsiIiIiS7Ja4JLDqP/91zwHT8eK/5VaVvTP18fnY21YkiTBF9+bmqTK7kUiIiIiS7Na4EqRIkWwuxlDQ5YPr587+dmf9+DWNUSPHkMVx2fIkEGPBu7KlSvqbYIECdRbIiIiIkuyWuCSTvMitJGrZf4U+r1P8pepjBdPHuHQtnV6BLh86gjevPFWvb6ko714+fKl39jnS48S0qRoXmbDKlSooEeJiIiILCdcZymOGzdONT+VXYETJ05E7dq1P3ad7969u2rDcP36dbU7UEjQkQBUu1MfST6InzgZilSura4J6Rx/8+JZ9f7K6X/Ax1+d1tAFG5E83YdDqqXT/PC2dXDrynlUatoBbn4Ba/G4kap26/jx40ifPr163vbt29GoUSM0btxYdbmXYvply5Zhz5496NChAyZMmKCeR0RERGRJ4QpcqVOnVoFKmOqn5I+T969evaqWESX0yDmHJqbrIlPewvh2wkL1vpCzE3evWfLhA7/n/OsXrPybefBDHy/h+fI5Fv0+DEd3bMTrVy/9QpgvtmzejNKlS+tnANeuXVNH+Bw8eBD37t1TZyhmyZJF7VKUBxEREZE1hCtwhZacv5giZUoUq94ATXv/oEeD539J0X/gMpGlxe8alkPdWjXVmY1ERERERmO1Gi4hRerDhw3D5kUzce7wPj0acgHruSQrzho5AF6er9QSIREREZERWTVwCantKlasOCYM6IQ71y7p0aAFNqtlsmLqbzi8bT3ixI6NcuXKYe7cufoKERERkXFYPXC5urpi2bK/kTRRIozqUC/UM10yyyVNT+f/+j8snzwGw4YNw8WLF1GrVi00a9ZMHdnz/Plz/WwiIiIi27NqDZd/jx498gtJtbFr106Ua9ASNdp+DffYcfXV//K/nJgsTQbcv3kVo0ePVjNmJvPnz0enTp0QL148zJs3D4ULF9ZXiIiIiGzHZoFL+Pr64o8//kD/AQP83n+PAh5VkauEB1Jlyq5aRshuxrdvvHHr0jn80LK6/qwP5DDs7Nmz648+kd2R0gZCdiYOGTIE/fv3V7NqRERERLZi08BlIrsXZ8yYgUmTJuPKlctqzNXNzS8ouanAJeRoIB8fH/W+CO7Lluf98MMParmxaNGiqrZLWlQQERER2YIhApd/0i/r8OHDqr+XBKcYMWKomSx5BDyU+ktf+j///KNquqTj/JQpU1C3bl19hYiIiMh6DBe4vsTUNFWE5Et/+vSpahmxePFitGnTBr///rs6b5GIiIjIWuw6cImQfPnynJkzZ6Jbt25ImjSpKq43ne1IREREZGlWbwsRXmHJhxLSWrVqhSNHjsDd3V3tXpQdjnImIxEREZGl2V3gCijgjFdwMmTIoA6u/vrrr9GnTx9UqFABd+/e1VeJiIiILMPulhRNQlvLFdDmzZvRvHlzvHv3DtOnT0e1atX0FSIiIiLzsvsZLhGaWS4TOQro+PHjanmxevXq6Nq1K7y8vPRVIiIiIvOx2xkuEd5ZLiGfN2HCBPTq1Qtp06bFggULAm2oSkRERBRWDjHDJcIyyyXk8zp37qw608v7+fPnx7hx48Ic4IiIiIgCsuvAZc5QlC1bNhW62rdvr9pHyDKjdMAnIiIiCi+7XlIUAWe2zPHXWbNmDVq2bKmOE5o1axbKly+vrxARERGFnt0vKVoiL1apUkUdjp0jRw7VOqJ379548+aNvkpEREQUOnY/wyUsMcslpDHqb7/9hn79+qklRymoz5gxo75KREREFDIOUTRvqczo4uKCnj17Yv/+/Xj9+jXy5MmDqVOnWuy/R0RERI7JYXYp+hfWHYtByZ07Nw4fPowmTZqgXbt2qFevHp48eaKvEhEREQXPIZYUTfwHLUv9tZYuXapCV/To0TF37lyULFlSXyEiIiIKnEPOcAlzz3KZ1KlTR3WolyappUuXxnfffaeOByIiIiIKikPNcAlrzHIJX19fjBo1Ct9//z3y5cuH+fPnI02aNPoqERER0ScOO8MlLDXLJVxdXTFgwADs3r1bNUjNlSuXWmIkIiIiCsjhApe1J+wKFiyIo0ePombNmmjWrBmaNm2KFy9e6KtEREREDrikKALObFnrrzhv3jx06tQJ8ePHV0uMhQoV0leIiIjImTnkkqKtMqS0jTh27BgSJkyIYsWK4ccff1S1XkREROTcHHKGS9hqlkvIrsWhQ4di2LBhKnhJbVfy5Mn1VSIiInI2Dhu4hLV2LAbln3/+UbNer169wpQpU1C3bl19hYiIiJyJQ+9S9M+SOxaDUqJECXUIdrly5VR3+rZt28LT01NfJSIiImfh0DNcwtazXEL+uzNmzEC3bt2QLFkydQi2nMtIREREzsHhZ7j8hyxbzHIJ+e+2bt0aR44cQYwYMdTuxdGjR+P9+/f6GUREROTInGZJ0cRWoUtkzJgRe/fuxddff40+ffqgYsWKuHv3rr5KREREjsrhlxRNjLC06N+mTZvQvHlz+Pj4qOXGqlWr6itERETkaJxuhkvYcpbLxMPDQxXUy/JitWrVVH2Xl5eXvkpERESOxGlmuITRZrmEfB3jx49Hr169kD59elVQny1bNn2ViIiIHIFTznAJI8xyCfk6unTpgkOHDqmP8+XLh3HjxhkmEBIREVH4OVXgMnKIkVmtAwcOoH379mp5sXr16nj48KG+SkRERPbMqZYUTYy4tOjf6tWr0apVK7i5uWH27Nmq3ouIiIjsl9MuKZoYZWnRP9mxKAX12bNnR/ny5VULibdv3+qrREREZG+ccoZLGH2WS0hj1DFjxqB///4qfM2fP1/18iIiIiL74vQzXMKIs1zCxcVF7V7ct2+fOgBbjgOaNm0aC+qJiIjsjNMGLnsKLRK05Figxo0bqwOw69evj6dPn+qrREREZHROu6RoYg9Li/4tWbIE7dq1U2cyzp07FyVLltRXiIiIyKi4pOiPUZcW/atbt64qqE+TJg1Kly6NQYMG4d27d/oqERERGZHTz3AJe5vlEr6+vhg5ciQGDx6M/PnzY968eSqEERERkfFwhsuP/5BlD7NcwtXVFQMHDsSuXbtw//595MqVS4UuIiIiMh4GrkDYS+gScvj1sWPHUKNGDTRt2hTNmjXDixcv9FUiIiIyAi4p+mOPS4v+SRF9586dET9+fNWzS8IYERER2R5nuPyxx6VF/2SGS2a7vvrqKxQrVgzDhg1TtV5ERERkWwxcwbDH0CWF8zt37lTd6WUHY5kyZXDz5k19lYiIiGyBS4qBsPelRZMdO3aoWS/pUj9lyhTVUoKIiIisjzNcgbD3pUUTaYoqPbvKlSuHevXqqYapnp6e+ioRERFZC2e4ghAwaNnz/yb52qdPn47u3bsjWbJkWLBggTouiIiIiKyDM1xBCBiw7HmmS772Nm3aqPMYo0ePrnYv/vLLL3j//r1+BhEREVkSA1cwHCl0iYwZM2Lv3r3o0aMHevfujYoVK+Lu3bv6KhEREVkKlxRDwJGWF002bdqE5s2bw8fHBzNmzEDVqlX1FSIiIjI3znCFgCNmUg8PD1VQL8uL1apVQ7du3eDl5aWvEhERkTlxhiuEHHGWS8jfY/z48ejVqxfSp0+vCuqzZcumrxIREZE5cIYrhAIGLHuv5zKRv0eXLl1w8OBB9XG+fPnw559/OuSsHhERka0wcIWCo4YukT17dhw4cED16uratSuqV6+Ohw8f6qtEREQUHlxSDANHXV40Wb16NVq1agU3NzfMnj1b1XsRERFR2HGGKwwceaZLyI5FKaiXWa/y5cujT58+ePv2rb5KREREocUZrnBw9JkuaYw6ZswYdRC2hK/58+erXl5EREQUOpzhCgdHn+lycXFRuxf37dunDsCW44CmTZvmcMGSiIjI0hi4wsnRQ5eQoHX48GE0atQIbdu2Rf369fH06VN9lYiIiL6ES4pm4ujLiyZLlixROxnd3d0xd+5clChRQl8hIiKioHCGy0wCm+lyxNmuunXrqoL61KlTo3Tp0hg0aBDevXunrxIREVFgOMNlZoGFLEf8X+zr64uRI0di8ODByJ8/P+bNm4c0adLoq0REROQfZ7jMLLBw5YgzXa6urhg4cCB27dqF+/fvI1euXGoXIxEREf0XA5cFSOgKGLwcMXQJOfz62LFjqjN9kyZN0KxZM7x48UJfJSIiIsElRQtzliVGIUX0nTt3Rvz48dVsl4QxIiIiYuCyCmcKXZcvX1YzXYcOHcL//vc/9OvXTy0/EhGRMZ0/fx7btm1T7X8uXryEN2/fIFq0aMiSOTPy5s2rjndLmjSpfjaFFQOXlQS1pOiI//tl16KEreHDh6N48eJq5it58uT6KhER2Zr87lm5ciXGjPkNO3Zsh4vfC+PkaTMiUap0cIsYCW+8PHHn8nncuX5FvWiuXr0GevfuhSJFiug/gUKLgcvKnCl47dixA02bNoWnpyemTJmCOnXq6CtERGQr9+7dQ4cOHf0C1wpkzJUfpeu1QJ4S5REpShT9jE88Xz7HvvUrsG3JbNy6cgFdunRRO9RjxIihn0EhxcBlA84Uup48eYL27dtj6dKlqmGqnM0YPXp0fZWIiKxJNjmVr1ABb33eo9m3w5CvTCV9JXhytu6Wv2ZiyZ+jkCZ1amzevAlJkiTRVykkGLhsyFmCl/x95AzGHj16qKXFBQsWIHfu3PoqERFZw+nTp1G8RAnETpgM3/w2EzHjxtdXQu7O1Yv4tXszxHGPgd27dyFBggT6Cn0JA5cBOEvwOnfuHBo3boxTp05hxIgR+Oabb9QB2UREFD4SpoYMGYIjR46oJcMoUaIgY8aMaglQNjJ5e3v7vdDN43cfPhvk75wsBYqhz7h56v2dqxZj+tDe6v3ARIkWHWVKlcKqVSsxa9YstG7dWl/5nHwtX331lf7IuTFwGURQPwDCkf6J3rx5oxqm/vLLL2rni/ygJk6cWF8lIqKwWLduHcaOHauK2mWp7/Xr1+rs2507d2Lo0KF4+fIlfv11DGp26IW4CT+/5149cxybFk5H/e4DUalpezX28PYNXDp5RL3v34b5U3Dz4jm0GjgKU//XE7Nnz1Ynj0jgkv+OHPvmn9TuRo4cWX/k3Bi4DMZZZrs2btyI5s2bqx/UGTNmoGrVqvoKERGZg9RdSVuHR48e4cGDB6jcsgtqtvtGX/1k+o99sXPVX/h19T7ESZBIj/7XW29vdK+YB+my50XvP+bgz/6dcO/8SQwZMhht27ZV7YDy5Mmjn00BcT3HYCRYBRauJIgFNwtmb8qXL68OwS5YsCCqVauGbt26qSlvIiIyDynZSJYsmZrtQgQXlKvfSl/55N3bNzi0dS0y5SkUbNgSx3ZuwpvXnihcqab6uHKzjrh584a6lwv53SUzafJCmv6LgcugnCF4ybr+qlWr8Mcff6i2EXIIttR3ERFR2Ei4khktaUItu8I3bNiglvTyla2MGLFi62d9cmL3Nni9eukXomrpkaDtXb8ckaJERb7SH3Y2ps6SE6kzZcfevXvVx6VLl0asWLHUTvQaNWrg0qVLapw+YOAyOEcPXvJ36Nq1Kw4ePKj+nhK6xo8fH+jfmYiIgtezZ0/1YjZ9+vT49ttv8fPPP+P+/fvImCfwo9b2rl+GiJEiI3+ZynokcK+eP8PJvTuQq3g5RI4aTY8CGfIUxNVr19CqVSt1716+fDn69u2LLVu2qHqyW7du6WcSA5ed+FLwsvfwlT17dhW62rRpo3bVyKsjeZVGREQhJ7u/N2/erIrZy5Yti169eqlarlSZsulnfCIzW8d3b0WOoqURNYa7Hg3coS1r4OvzDoUrflhONEmZKTsePnigNkJJo+vq1avjhx9+UDNrjx8/xrBhw/QziYHLzgQVvIS9B6+oUaNi3Lhx6riJPXv2IEeOHOrGQUREISOtIMqUKaPCj+xclPuoiBL9v53hD21dB5+3b/1CVMiWE2PEioMcRUrrkQ9i6V5eT58+VW9NihYtqmp0eQ//hIHLTjly8JIieinCzJo1q2od0adPH7z1uykQEVHwpPXOtWvX1ItWaQthOoLn4a0b6q1/spwYzT0mchYvq0cC9/jebVw4fhD5y1ZRZy765/ebSL0NrKeiFOwHDGLOjIHLzoUkeNlj+JI+MjIlLfUHv//+OwoXLowLFy7oq0REzkV2/t25c0e1XpBVgIkTJ+L7779XZRiVKlVCzpw5Vdd3aXgqvbBkhqlevXrYvXu3+vyXzx6rtybPHt3H2cN7kbd0Jbi5RdSjgdu3YYX8svm4O9G/p/fvqd8xcePG1SOfXLlyhZ3o/WEfLgfzpXBlj//chw8fRqNGjXD79m21o1GKM+0xRBIRBST3ZKl1kjBlesi9zv/H8pCO7VKLZeLq6qqaRsuLU3nEiRMHadOmRdKkST+OSdipWLGiOj+xaZ+hKFe/hf5saWA6FQt/G4q+ExYic97CejRwgxpXgJfnK4xe8SG8+Tfnp0G4cngXrlz+fEfi2rVrVX9FOdJNdksSA5dDc6Tw9erVK3z99dfqTEZ51TZp0iR1gyEiMiK5v0pPKv+hKbAgJY+AJROyy9AUmkwP/0FKHhKmJHSZ1KpVS/33SpQooa5LQJs3b55aGUiePAW+SpcFXUZO1M8GhjSvghePH+HXNfv1SOBuXTrvF7jKo0rLLqjbua8e/UD+jt81LIcXD++pWTZpsiptIeR4oenTp6uvWTZDcZbrAwYuJxCS2SB7+TZYvHgx2rdvD3d3d3UzKV68uL5CRGQdXl5euHv3rgpLgYUo05inp6f+jA9ix479WWgKGKLkkShRIkSKFEl/RsgtWrRIvSA9efKkmjGLGTOmKlqXNhFyzmLPXr3wy6q9iB0/Ie5eu4wB9cugQpP2aNhjoP4TArd43EisnTMRP87fgKRpM+rRD84f2Y8RHeqpsxrPnDmDq1evqj5g8veoUqUKBg8ezLDlDwOXk3GEWa8bN26oHThSmyDnMkodg5ubm75KRBQ27969Uz2rgpqJMo0HLASXHdb+w1NgQUoe0aJ96l9lTc+ePUMSv6+pRM3GaPTN93o0fOR3xa89msP78T2cD+ZAbPqEgctJ2fuslxSQjhgxQp2OX6BAATXbFfDQVCIiIbVP0tcvuNkoech5g/7vexEjRvxYJxVYiDKNyWyS0QPHqFGj0L9/fwyc+jfS5cirR8Nu58q/MG1ob3VaCM/CDRkGLrLr8CVHSjRu3FhNocuuHXmfiJyD3Jdk9sZ/gDI9/AcpWf7z8fHRn/XhnpcwYcIgZ6JM4/HixQu03YE9kr9/kSJFce32HQyY8jfifBX8uYnBuXb2BEZ1aoi6dWpj9qxZepS+hIGLPmOP4ev58+fo3Lkz5s+fj2bNmqnmqfKKk4jsl9Q/+Q9Q8ghshkrqqfyT9gTBzUbJQ8KWM5YhSDlG0aLF8C6CK775bRYSpQj9qsCFYwcwtldbZM6YAVu2bFb1tBQyDFwUJHsLX3PnzkWnTp3UDh8JX1IwSkTGIjvyTAXn8ggsRMlDXkj5Jw08vxSkZPlP+lBR0KSw3cOjPG7duY26XfqhbL0WIZrFe/vGG8sn/4r1cyermbJVq1aqTQAUcgxcFCL2Er7khHxZVpTeXXKelxze6n/rNBFZhtRVSg2UKTAFVS8V8IzUyJEjfxag5BFYsOJMivlImx05YHrChAlImDwVStVuigLlqiBuwiSf3eul9u3e9cvYs24Zdq5YCK9XL1TdrJz+wY1KocfARaFm9PAlO43+97//Yfjw4aonzZw5c5A8eXJ9lYhCQ36Wnzx5EmSIMo0H1phTWhyYAlNgIUoesgQYknsKmd+BAwcwduxY1W5HZh5jxomLxKnSwS1iZLz1fo1bl8+rhqdRo0VD2zZt0K1bN6RPn15/NoUWAxeFi5HD144dO1T7CKkFmTp1KmrXrq2vEJEwNeYMajbK9H7AxpzSW8kUmIJa5gvYmJOMSzYdydmLsjJw6dIl9e8trS4yZ86MKVOmqPIMKdOg8GHgIrMxYviSV+bt2rXD33//rd7KERPRo0fXV4kck7e392fhyfQIGKxkack/6RIeVIgyjYe1MSfZJynLmDVrlvp+cZQdm7bCwEUWYaTwJf8d6cAsZ3rJ0uKCBQuQO3dufZXIfpgac/oPTfIIGKTkhYZ/MlthCkyBhSh5KwXnfDFCAW3btg1lypTB0aNHkStXLj1KYcHARRYX0voMS38rnjt3Th2CLcdcjBw5Up3NyFdsZASmxpz+Q1Ngy3wStvz/nEjhcsAAZXr4D1cyc8U6KQoLWV6UOrtBgwap2S4KOwYusipbh683b96o44B++eUXlC9fXk2VyxIJkSXI97G0N/AfmgILUtImQWavTOTnRHpF+Q9Q8gg4QxU/fny+aCCLq1atmqqF3bp1qx6hsGDgIpuxZfjasGEDWrRooWYWZsyYoQ5aJQoNOaTXFJgCC1GmhzzPP5kt8B+a5BEwSEnYkmNliIxAmknLIdiyVC390ChsGLjIEGwRvqRnUKtWrbB27Vq13fmnn34KddNEKU6W0/mvX7+uZijkZpQ1a1Z1riOXcOyTLKFIiwMJS4EFKdNYwMacUv/kPzgFDFHykDopqacisicXL15EhgwZsHLlSjXbRWHDwEWGY83wJX+GvHqTRn5yQ5GCeglMwZGjRP766y9MmjQZBw8e+OyMNpPYceKgut+NSY4cksO1Gb5sTxpzPnz4MNgQJQ95jn+yI88UmAILUaZxNuYk8SR5+PtUxb15Ub9nDHKfTJcuHSpVqqTulxQ2DFxkeNYIYDJLJQX10qle6rvkiKCA/1358yVode3WDY/8finnKFIKuYp7IFXm7Kpbs6tbRHh5vsTNC2dx+dQR7F37Nx7cuYnSpctg2rSpataLzE/+XUyNOQM+/AcpmbWS0GUitU+mxpyBBSnTGBtzkjlClDnYMojJi8dNmzap2S4KGwYusiuWDF8ycyUzXX/++aeaNp8+fboqShZSMNqiRUssXboE+ctWVmeQScgKznu/X+7Hdm3Bgl+HwPP5U4z3+3OlboxCztSY0/8jsBkq2Qzhn/y7BRei5CFnbrIxJ/lnlGD1JbYIXitWrEDNmjVVY9S0adPqUQoNBi6yW5YKX1Kn0Lp1a7WUNHv2bBQuXBgVKlTE4aNH0Pq7n1HAI3Q1DHI0xrzRg7Fr9WL88ccf6Nq1q77ivKT2zf8BxvIILEhJ4PIvZsyYXwxSMmsl5/MRhZS5g1ZYAlFovwZrh64XL14gXrx4+P3339VsF4UeAxc5hNAs+Zi+5aUflxzEeuTIEbXcJAXzGTNmRJcuXVC6dGk0b94cW7ZsUc1S7/iFgwRJU+DhrRt4/94XMw5cV39GcC4cO4AR7eup98duPIbVM8Zhw/wp6pVi9erV1fS8nPkoDQUlIJQtWxajR49GypQp1efYI6ln89+YM6h6qYCNOeX/fcAgFfBjKTjnDikKq/CGKlsu5wX1tVv7aypVqpTq6Sb3MAo9Bi5ySCENYBUrVkSRIkXUL3TZvr9kyRLs3LkTQ4cORf/+/dG4cWMsWrQILq5uSJkxq5qtun/zKmbsv6b/hMBJu4khzargwa1reOPthT/8Alf0mLHwe6/WuHP+FMaM+RXNmjVDvnz51FvZ8SavHCV4SQAzLWUahfx95Lw1/6HJf4gyjQXWmFOCkv/gFNgMVezYsVknRWYXlpBly2D1JbYOXiNGjMDw4cPVvYDHO4UeAxc5vNAsPUqwyJs3r5qBOXXqFFKkTIm0OQui47A/EDFSZMz5aRC2Lpn9xRmurUvnYNnEX1C4Ui1sWjgdf2w6jhixYuPpw3v4rqEHIrm6qMN9ZZZNQok4ceIE8uTJozrgy0yXNcjfWZYKggpRpvHAGnNKDZQpMAUWouQhf0c25iRLCe+sVUBGDlsmwf2dLf31y2qA3B+3b9+OkiVL6lEKKQYuciqhmUWZMGGCWl78ecUexEuURI2FJHC9ev4M/euWQq2OvfD88UOsnPr7x8Allvw5Cqtn/qnOdvztt9/UmEm2bNnw7Nkz3Lp1S4+EnczYSVAKajbK9H7Axpxx4sT5GJgCC1IyxsacFJC5w4+l2EOoCglbzHbJC1KpkWzTpo2a7aLQYeAipxbSADbz4A31NiSBa/ao71T91tD5G7B8ypj/BK7rF85gcJOKqqeNNF31T3p2HT58WAUlmUEKjMw0BSw4l0fAYCXBzb9o0aKpsBRUiJK3bMxJX2IvwSogRwla/tkidEkJhMzMy2wXhQ4DFzm9jh07YvLkySHazVi2XotgA9fNi2dV7VbP32cha8HiWDb51/8ELnmV2LZIWsSPF0/VPJlI53vp1SU7+H799VcVfAILUvI8//w35gz48B+upDEn66QoJOwtVDlimAopa4euuXPnqtAlG41kpptCjoGLnN758+c/hpp58+ap3YP+G2QGJKElqMA1okN9RIvhjh6/TFMfBxa4xP9aVMPVM8dVd3vZoSc3r4BByn9jTv+PgDNUslWbQYrCy1why5nDjy0F/Pez1L+D3KckaM2ZMwdNmzbVoxQSDFxEAVSoUAG7du1StU3T912Fi6srWuZPoa4FN8O1f+NKTBnSE8MWbf7YFDWowLV1yRzMHjVQBSXTj2CWLFlUS4j169dj48aNagu2qaCeyFwYrBxTYP+ulvo3ks09cr+S2S4KOW4fIgqgTp06qut8BBcXFbaE1HCZ6riCsmjscOQvWwWufiHp4Z2b6vH65Qt17fG922qHokkkfUj2jRs3VLiT4zKkLkLaI0j3c2lVwbBF5hbasCW/sIN6kLEE9m9irnAdkLTTkReFUh5BIcfARRSAhC3xr9/N5K23t3o/JJ4+uIt9G5ajT42i6FuzmHpsXjRDXRvSrDJ++6a1el94v/ZUgUqWB4sWLaoOhpVlTNluXbBgQVXgThRW8os2sMeXMFTZN2v9m8kqgBzyfuzYMT1CIcHARU5LbhgByQ5AOc5HuimLm5fOqrch0e3nKege4GE6Bqjd/35Do2++V+8LKa7PlDnzZ7VX0ntLarl69eqlR4g+F1iICuwREgHDlbV+WZP9k+PO5NSHDRs26BEKCdZwkdOqVauWOquvRIkSqvhcwo4UzV+4cEHtWuzUqRPqdx+I3CXLY8/av9XnyGHUV08fQ62OvaVrKOInToYilWura4EJqoarV7VCiB7JDd988w2iR4+OzZs3Y/HixWjXrh0mTZqkn0WOJKRByJIYqpyD/+81S/2b16hRQ7We2bFjhx6hL2HgIqclR/ZMmzYNJ0+eVEdVyMHIspzXs2dPda5hpUqVceHGHdTrPgA/dWr44ZNMM1L6xyZT3sL4dsJC9X5gpA/XCglcG499DFw3LpzB900qqqJTCXmyhJkpUyYV8CRwkTEZITCFFgOWc7JG4Bo/frxq3my6d9KXMXARBWH16tWoVq0avpu2DOly5NWj4Tf9x764eOAfXL9+jd3aDcrI4Yohir4k4PevJb5nrly5grRp02L58uVqtou+jIGLKAhSxJ4zZy54+gLfzVgBN7fwh6NLJw5jeLs6+OmnnxymVsseZ35shWGJrMEagUukT58eHh4earaLvoyBiygYhw4dQqFChVC5RWfU6dRHj4bN61cv8GOrGkiaIB727NltV20fGKo+YWgie2CN0NW1a1d1PNnly5fZfDkEGLiIvmD48OEYOHCg2mVYoXFbPRo6Xq9e4rdvWuLetYvYt3evqtkyIgarzzFckb2yRuBatWoVqlevrjYayWwXBY+Bi+gL5EekX79+ahmwZM1GaNjjO0SN4a6vfpkc4TPtf73w4vF9bFi/Xs2YWZO1QhTDCZGxWDp0vXr1CnHjxlVnv8psFwWPgYsoBOTHZMqUKfimZ09EixkbVVp2QeGKtRAlWnT9jP+6e+0yNi+ehe1L5yBHjpyYO3eO2ploLeYOWgxURPbFGrNcZcqUUa1tZLaLgsfARRQK165dQ/fu3f1uLqv9wlY0ZC1QHKmy5FBnJ7pFjITXL5+rpqZXTh/DxeOHEC9+fPTyC2m9e/e2+I5EcwUsBisix2Hp0DVq1Cj88MMPePLkCSJHjqxHKTAMXEShNH36dLRp0wbdunXDyZOncOToEbx4/lxfBVKlToP8+fKqlhL16tVDFH1uoqWEJGgxRBE5J0sHLjneJ3fu3NiyZYua7aKgMXARhVL+/PmRIEECtTtHyAGuz/0Cl4+PjzoDUabXrSGkM1oMW0TOzf+9wtz3A4kQclJH8+bN1WwXBY2BiygUpE2EBK4VK1ao3TnWwnBFRGFlycAlWrRogePHj/Mw6y/g4dVEoSDnHCZLlgyVK1fWI5YlN8qQhC25iTJsEZEtVKhQQQWuu3fv6hEKDAMXUQjJsuH8+fPRvn17izctZdAiInsh3eal8enGjRv1CAWGgYsohObOnYs3b96ognlLCi5omQIWgxYRGYXUtObNmxcbNmzQIxQYBi6iEJBSxwkTJqhDWqVA1FKCClsMWERkZLKsuGnTJrWJiALHwEUUArt378bp06fRsWNHPWJeQS0hMmgRkTmFpFQhLCRwPXr0CEeOHNEjFBADF1EITJw4EWnTpkXZsmX1iPlY6gZIRGQtcmSZu7s71q9fr0coIAYuoi+QV22LFy9Ws1suLub9keESIhE5AjlJQ16Qso4raAxcRF8wY8YM9bZly5bqrbkEF7aIiMzFWveUihUrYu/evWpHN/0XAxdRMKQAVHpvyRE98ePH16Phx3otIrIVS9Zx+fr6YuvWrXqE/GPgIgqGnA92+fJlsxbLBxW2iIjsWapUqZAhQwbWcQWBgYsoGFIsny1bNhQtWlSPhA/DFhHZgrXuMzLLJXVcPDXwvxi4iIJw584ddWaizG5JF+XwYtgiIkcndVzXr1/HhQsX9AiZMHARBWHq1KmIHDkymjZtqkfCjmGLiIzEUnVcJUuWRKRIkbhbMRAMXESB8PHxwZQpU9C4cWPEihVLj5oPwxYRWZs17jvRo0dH8eLFWccVCAYuokCsXbsWt27dslhneSIiRyV1XNu3b4e3t7ceIcHARRQIKZbPnz+/OpA1vAJO3XN2i4gcmdRxeXl5YdeuXXqEBAMXUQBXr15V0+Gc3SIiCj3Z2S2H/LOO63MMXEQBTJ48GTFjxkSDBg30SNhxdouInI3s6i5fvjzruAJg4CLy5+3bt5g2bRqaN2+uij/Dw1K7gIiIjE7quE6dOoXbt2/rEWLgIvJn2bJlePjwYbiXE9kGgoicmYeHh5rp2rhxox4hBi4if6RYvkSJEsiSJYseCT2GLSJydvHixVMbj1jH9QkDF5F29uxZtZWZxfJE5AwsXfYgy4oywyUHWhMDF9FHkyZNQoIECVC7dm09Enqc3SIiI7Pm/UgC19OnT3Ho0CE94twYuIj8vH79GrNmzULr1q3VcT7mwrBFREZmyVmuggULqpM6uKz4AQMXkZ+//voLz549Q/v27fVI6Fl6ep6IyJ64ubmhXLlyDFwaAxeRnwkTJqjp7zRp0uiR8OPsFhEZkbWXFfft26eWFp0dAxc5vSNHjuDAgQPhKpYPOLvFsEVE9CFwvX//Hlu2bNEjzouBi5yeFMsnTZoUVatW1SNERGQOKVKkQKZMmbis6IeBi5zaixcvMG/ePLRr107VG4QFZ7eIiIImh1lL4Pr333/1iHNi4CKnJmHL29sbbdu21SOhw0J5IqLgybLizZs3ce7cOT3inBi4yGnJqy0plq9WrZpaUiQiIvOT0zuk3Y6zH2bNwEVOa+/evTh58qRZO8tzOZGI6HPRokVTocvZ67gYuMhpybmJ0gZCDlk1B4YtIqLASR3Xjh074OXlpUecDwMXOaXHjx+rZqcdOnSAi0vYfgxYv0VEjsAa9zKp45J62Z07d+oR58PARU5p5syZqjdMq1at9AgRkfOw9ox8lixZVK2sM9dxMXCR05GgJb236tatqw6rJiIiy4oQIYKa5XLmOi4GLnI627Ztw8WLF9lZnojIiiRwnTlzRrWIcEYMXOR0pFhepreLFy+uR4iIyNLkIGupmd24caMecS4MXORU7t69i+XLl6vZLZniJiIi64gbNy4KFCjgtHVcDFzkVKZNm4aIESOiWbNmeiT8uJxIRPbOWruuZVlx8+bN8PHx0SPOg4GLnIavry8mT56MRo0aIXbs2HqUiIisRQLXs2fPcPDgQT3iPBi4yGmsW7dOFWt26tRJjxAROS9bzM7nz58fceLEccrdigxc5DSkWD5v3rzIly+fHiEiIhNrLCu6ubmp4nlnrONi4CKncO3aNaxdu9Ys5yaywzwRUdjJsqIsKT558kSPOAcGLnIKU6ZMgbu7Oxo2bKhHzIMF80Rkz2xxD5PAJQ2opXjemTBwkcN7+/at2p0oOxNjxIihR4mIyBaSJUuGrFmzOl0dFwMXObwVK1bg/v37ZllOJCKi8JNZLglc//77rx5xfAxc5PCkWL5YsWLIli2bHgk71m8RkSOzZj+u27dv4/Tp03rE8TFwkUM7f/48tm7dapHZLdZvEZEjsMW9TI5WixIlilMtKzJwkUObNGkS4sWLhzp16ugRIiKytahRo6JUqVIMXESOwMvLCzNnzkTr1q3VKykiIjIOWVb8559/8Pr1az3i2Bi4yGEtXrwYT58+Rfv27fUIEREZhQSuN2/eYMeOHXrEsTFwkcOaMGECPDw8kC5dOj1CRERGkSlTJiRPntxplhUZuMghHTt2DPv27TNrsTx3KBKRM7DWvS5ChAgf20M4AwYuckhSLJ8kSRJUq1ZNjxARkdFUrFgR586dw/Xr1/WI42LgIofz8uVLzJ07F23btkXEiBH1KBERBcVWbW7Kli0LV1dXp5jlYuAihzN//ny160UCl7kEnGJnDy4iovCLHTs2ChYsyMBFZG/kmAgplq9ataoqxiQiotCzZs2q1HFt2bIFPj4+esQxMXCRQ9m/fz+OHz9u0XMTObtFRI7IVvc2qeN6/vy5un87MgYucihybmKqVKnUKyYiIgo7a81y5c2bF3HjxsX69ev1iGNi4CKH8eTJEyxatAgdOnSAiwu/tYmIQssWs1xSNC89Ex29jou/lchhzJo1C76+vmjVqpUeMQ/23yIiZ2Wt+5+sShw6dAiPHj3SI46HgYscghTLy3Ji7dq1kTBhQj1KRET2QAKX3Mc3b96sRxwPAxc5hO3bt+PChQvo1KmTHrEMFswTkaMLeJ+zxiyXNKrOnj27Q9dxMXCRQ5DZLTmXq0SJEnrEPLicSETOyBahS2a5Nm7cqGa6HBEDF9m9+/fv4++//1atIORsLnNh2CIish4JXHfv3sXJkyf1iGNh4CK7N23aNLi5uaF58+Z6xDK4nEhEZDnFihVDtGjRHHa3IgMX2TXZlTh58mQ0bNgQceLE0aPmx7BFRM7G2suKUaJEQalSpRy2jouBi+yavBKSU+bNXSzP5UQiIuuTZcVdu3bB09NTjzgOBi6ya1Isnzt3buTPn1+PEBGRuVh7lksC19u3b9XOc0fDwEV268aNG1izZo3Fi+W5nEhEZB0ZMmRAypQpHbKOi4GL7NaUKVMQPXp0NG7cWI+YH8MWEdHnLDnLJS+e5TBrBi4ig3j37h2mTp2KZs2aIUaMGHqUiIjMzdovPGVZURpZX716VY84BgYusksrV67EvXv31EHV5sRieSKi/7Jm6CpTpow60NrRZrkYuMguSbF8kSJFkCNHDj1CRESOIFasWChcuDADF5GtXbx4UR1wKsXy5sRieSKikLH0aoDUcW3ZskWVjzgKBi6yO5MmTULcuHFRr149PUJERI5E6rhevnyJvXv36hH7x8BFdsXb2xszZsxAq1atVFdiIiKyDmvO+ufJkwfx48d3qGVFBi6yK0uWLMGTJ0/Qvn17PWIeXE4kIjIOFxcXeHh4MHAR2cqECRNQtmxZ1RyPiIisy/+LUWvUcR0+fBgPHjzQI/aNgYvsxokTJ7Bnzx6zF8sHxNktIiLbK1++vHq7adMm9dbeMXCR3ZBi+USJEqFGjRp6xDzYe4uIyHjkfp8zZ06HWVZk4CK78OrVK8yZMwdt27ZFxIgR9aj5cXaLiMg4ZLfixo0b8f79ez1ivxi4yC4sWLAAnp6eaNeunR4xD85uEREZlwSu+/fvq5ISe8fARYb377//qmL5ypUrI0WKFHo0/Bi2iIiMrWjRoogePTrWr1+vR+wXAxcZ3sGDB3H06FF06tRJj1gGlxOJiIwlcuTIKF26tEPUcTFwkeHJuYkpU6ZUU8tERORc5N6/e/duVctrzxi4yNCePn2KhQsXqkancnq8ubDRKRGRfZDAJWcqbtu2TY/YJwYuMrTZs2erH7TWrVvrESIicibp0qVDmjRp7L6Oi4GLDEuK5WU5sVatWqofi6VwdouIyLgiRIigZrnsvY6LgYsM659//sG5c+fMXizP3YlERPZFAtfly5fVw14xcJFhyeyWnJlYqlQpPUJERM5Idiq6ubnZ9SwXAxcZkhxWunTpUnVuokwnmwtnt4iI7E/MmDFVTy4GLiIzmz59utqV2KJFCz1iGazfIiKyD7KsuHXrVrx9+1aP2BcGLjIcOTNLDqpu0KAB4saNq0fNj2GLiCh0bLlKIIFLenHt2bNHj9gXBi4yHDmo9Nq1a2o50Zy4nEhEZD7WftGaK1cuJEiQwG6XFRm4yHCkWD5nzpwoWLCgHiEiImfn4uJi1+0hGLjIUG7evIlVq1aZvVg+IC4nEhHZHwlccrbu/fv39Yj9YOAiQ5k6dSqiRYuGJk2a6BEiIqIPypcvr95K6Ym9YeAiw5AjfKZMmYKmTZvC3d1djxIREX3w1VdfIXfu3Ha5rMjARYaxevVq3L171+zF8oIF80REjkGWFWWGS3a02xMGLjIMKZYvVKiQKpi3JNZvERHZr4oVK+Lhw4eqlsueMHCRIVy6dEm9YrHE7BYRETmOwoULI0aMGHa3rMjARYYwefJkxIkTB/Xr19cjRERE/xUpUiSUKVOGgYsotN68eaOO8mnZsiWiRo2qR4mIiAIndVzScf7Fixd6xPgYuMjm5JDqx48fo0OHDnrEvFgwT0TkWKSOy8fHR52taC8YuMjmpFi+dOnSyJgxox4hIiIKWpo0aZAuXTq7WlZk4CKbOnXqFHbu3Gm1YnnuUCQicgymY37+/fdfPWJsDFxkU5MmTULChAlRs2ZNPWJeXE4kInJMEriuXr2qdrnbAwYushlPT0/Mnj0bbdq0UbtOLI2zW0REjkNKUSJGjIj169frEWNj4CKbWbhwIV6+fIl27drpESIiopCRXlzFihWzmzouBi6ymQkTJqBSpUpIlSqVHjEvLicSETk2WVbctm2bai9kdAxcZBOHDh3C4cOH0alTJz1CREQUOhK4Xr9+jd27d+sR42LgIpuQVhDJkydXM1zWwPotIiLHI2fvJkqUyC7quBi4yOqePXuGBQsWoH379nB1ddWjREREoRMhQgSUL1/eLuq4GLjI6ubOnYu3b9+q3YlEREThIcuKJ06cwN27d/WIMTFwkVVJgzoplpe+W4kTJ9aj5seCeSIi5+Dh4aFmujZu3KhHjImBi6xq165dOHPmjNU6yxMRkWNLkCAB8uTJY/hlRQYusioplk+fPr1qWGctLJgnInJscpi1zHD5+vrqEeNh4CKrefjwIZYsWYIOHTrAxYXfekREZB5Sx/X48WMcOXJEjxgPf+uR1cyYMUOts7ds2VKPWAbrt4iInEuhQoXg7u5u6GVFBi6yivfv36uDquvXr4948eLpUSIiovCTMxXLli3LwEW0efNmXLlyxerF8qzfIiJyDlLHtXfvXjx//lyPGAsDF1mFFMtnz54dhQsX1iOWweVEIiLnJHVcUjS/ZcsWPWIsDFxkcbdv38bKlSvV7JbUcBEREZlbqlSpkCFDBsMuKzJwkcVNnToVUaJEQdOmTfWIZQSc3eJyIhGRc5FZLglc0mTbaBi4yKJ8fHwwZcoUNGnSBDFjxtSjlsewRUTkfKSO6/r16zh//rweMQ4GLrKoNWvWqCVFSxfLs3aLiMiy7OE+W7JkSUSKFMmQy4oMXGRRUixfoEAB5M6dW4+YH8MWEZF1GXUVIXr06ChevDgDFzkXaQMh3/RsBUFERNYidVzbt2+Ht7e3HjEGBi6ymMmTJyNWrFho0KCBHrE8hi0iIucmgcvLyws7d+7UI8bAwEUW8ebNG0yfPh0tWrRAtGjR9Kj5cTmRiIj8k56PiRMnNtyyIgMXWcSyZcvUYdVyUDUREdk3e3pxK/0eTe0hjISBiyxCiuVlt0jmzJn1iOVxOZGIiIQErlOnTqld8kbBwEVmd+bMGezYsQOdOnXSI5bB5UQiIuuzhxe3Hh4eaqbLSLNcDFxkdpMmTUKCBAlQq1YtPUJERGQ98eLFQ/78+Rm4yHG9fv0as2bNQps2bVTzOUsJOLvF5UQiIvJPlhU3bdqkDrQ2AgYuMqtFixbhxYsXaNeunR6xPIYtIiIKSALX06dPcejQIT1iWwxcZFYTJkxQ3+Rp0qTRI+bH2i0iIvqSggULql6QRllWZOAiszl8+DAOHjxo0WJ5hi0iIgoJNzc3lCtXDuvXr9cjthXhXz/6faJwad++PdatW4erV6+qb3RLYO0WEZH1+b/32tN9948//kCPHj3Qs2dPXLh4Ec+fPYerqyuSJ0+GPHnyoEiRIsiXL5/a0WhpnOEis3j+/Dnmz5+varcYtoiIyJauXbuGbt26oX//AZB5pakzZuH6oxd4GzUOPN2iY/eRE+jT91sUKFAAOXPmUkfR+fj46M+2DM5wkVmMHz8e3bt3x/Xr15E0aVI9al72+gqLiMje2cv99/3796qWuO+33yJi5CgoXqMRSlSvjwRJU/5nFsvH5x3OHtyDbUvn4NjOzciVKzdmzZqJbNmy6WeYFwMXhZt8C+XIkQMZMmTA0qVL9ah5cXaLiMh27CFwyRm+jRs3wd9/L0XpOk1Rv9sARI0eQ18N3pXTxzH9h154cOsaFixYgNq1a+sr5sMlRQq3PXv2qCMUOnbsqEfMi2GLiIiCI8uBDRo0xKrVq9Ht5ylo0W94iMOWSJM1J76fvRq5S1VE/fr1sXLlSn3FfDjDReHWrFkz7N27FxcuXICLi3kzfMCwJRi4iIisy5YzXC1btsTs2bP1R/8l5yXOnDkTAwcOROk6zXD55BE8uHUdrm5uSJo2Iyo374icRcvoZ3/QqkBK/d7n6nTqi2tnT+DswZ04feoUIkeOjN9++w379+9X/bw8PT2xbds2dVZwaDFwUbg8evQIyZIlw9ChQ9GnTx89aj6c3SIisi1b34f37duHK1eu6I8+kFotWVVJnTo1Fi5cqHYcJs+QFVdOH0POYmWRy+/x9o03dq1egpsXz6DrqEnIW7qi/uwPgStrwRIoWqWOHvkgZcasiJ0gIQY19ECubFlUiCtbtqwqmZHjgmRyYfv27ShRooT+jJBj4KJwGT16tPqGlFcY8ePH16Pmw8BFRGRbRrwP79q1S4We4cOH4+ChQ9hz4DC8vV4jbqKk+H7GCv0swMvzFb6pUgCZ8xVBj9FT9eiHwFW2fgs07f2DHvnc8d1bMebrlmppsXjx4ogdOzaWLFmilhvDGrhYw0VhJq8w5KDqevXqMWwRETkBo9yHpQ2R7DosU6YMVixfjnIN2yBSlKhwjx1XP+MDqeOK7Dcuj4Bkuumtt7eaCQsoR5HSSJY2I2bMmKnCljkwcFGYbd26FZcuXbJYsTwREVFA7969w19//YWiRYti9+7dcHWLiKKVa6NKi844te8fbP5rJh7euYk71y5h9qjv4P3aEx4NW+vP/mT36sXoUDITOhTPiAH1y2Lfhk8zYxLmStZqjJUrV+Dly5d6NHwYuCjMJk6ciKxZs6pvekvj7BYREQk5G/HJkydo0qSJOk4uVaZsiBrDHSVrNkLL/iOwYMxQ9K1ZDAP9QtTBLWvQd/wCpM2WW3/2B+ly5EWdzn3VMmPzfsPg4uqKSYO6Y+vSOfoZQKY8heDr64tjx47pkfBh4KIwuXPnDpYvX65mt6xxJAIREVlfwNIOI5DlxEiRIql6qsNHjiJ5xg+NSg9sXo2Zw/shf9nK6DJyIloPGo3Y8b/CH33aqf5a/g2c+jc8GrRCruLlULp2UwyZs0btaFw6/qePS4xJUqdHpMhRcOTIEfVxeDFwUZhMmzZNbZeVlhBERETW8OrVK6xYsQIVKlRAnDhx8OTxY8SKl0CFpDmjvkOOoqXR8cc/kK9MJRSvVg/9Ji6Cz7t3WDL+Z/0nBM7NLSLK1WuB1y9f4Pq5U2pM2krEjBMXj/3+G+bAwEWhJg3m5Nypxo0bI1asWHrUvIz4qoqIyJkY8T4sKyteXl5qOVHRKyx3r13Gq+dPkauEh/rYJHrM2EifMx8uHT+kR4IWJ2Fi9dbzxTP1VkgjB3P1l2TgolBbt24dbt26xWJ5IiIHFVjYMkIt7bx58+Du7o7q1aurjxMkSIBnD+7BVx88/a+vr3rrn1x7//6/4wE9vH1DvXWPE0+99Xn3Fi+ePDbbLnwGLgo1KZbPly8f8ubNq0csiwXzRES2ZYT78MOHD7F582bUqlULUaJEUWP58ubB9fMnkTRNerhFioT9m1apcZMn9+/iwrEDSKHrvMTLZ0/0e59Iv66NC6apsJUqU3Y1duvyebzzC13SVNUcGLgoVK5evapmuDp16qRHzI/LiUREtmPUe/CiRYvUrsGPy4l+ChQogBvnz+Ddmzeo0Kgtzh3ei1GdGqrWEKtnjMOPrWvi3du3qNqys/4MqGuDGlfE3xN/wfZl87Fiym/4rlF5PLp7C417Dla1W+Lsob2IGDGi2hX5448/YunSpWpcjhmSj+URGuw0T6EyYMAAjB8/XnWWjx49uh41r4A/7JzhIiKyHqPeg4sUKaJe9MsuedPu+AcPHiB58uSo1akvKjVtj00Lp6sQdf/Wdbj5haU0WXKiepseyJS3kHq+OL1/J9bNnYRbl87h1fNniBw1KtJkzY3KLTohc97C6jnS2HtgvdIoVawwFi5YoP57EpdMb4W8LwEwpBi4KMTe+r1KkG/sBg0aYOzYsXrU/Pz/sDNsERFZjz2+4G3atCnWb96GYX9tQZRo5pkIkBYT4/t3xs6dO1GsWDE9Gj5cUqQQk90h8mqiQ4cOeoSIiByFUZcSgyMzUWnSpMHTh/fw1x8j9Gj4SI3XvJ+/R/XqNcza2JuBi0JMiuXlEE/pLk9ERI4jsLBl9NmtCxcuqEOkhw4dqoLR1iWzPzueJyxkZ+LkQd39wpGcFTzx49KlOTBwUYicO3cO27Zts2ixPBERGYORw5bUTf3888/ImTMn7t+/jx07dmD79u1o3qIFpgz+GjtXLdbPDB3ZqTi2dztcOLofSxYvRqJEifQV82DgohCZNGmS6kVSu3ZtPUJERPZOZrbsaSnx9OnTqnj+22+/RefOnXH8+HE1yyXNSadNnYoWfqFr2g+9MGFAF7x4GvIO8VJIP6iRBy6fOIjVq1ejTJky+or5MHDRF0lX35kzZ6J169bqOB8iInJcRpzdevfuHYYNG6Z6Yr148QJ79uzBL7/8gmjRoulnyPE8bpjqF7rkrMULh3fj25rFMGvkAFw9c/xjY1T/PF8+V0uQI9rXxc9dmyB7pow4dfIkypUrp59hXtylSF80a9YstGzZEpcuXULatGn1qOX4f7XFXYpERJZhL3Vbx44dUy/4T5w4gT59+mDw4MEfG58GRTZ4SQujSZMm4969u+oQ6uTpMiJarDiqG/2jOzdx7+aHA61LlSqNLl06o06dOmat2QqIgYu+qFChQogdOzbWr1+vRyyLgYuIyPICBi6j3W+lFZE0Fx0xYgQyZ86M6dOnq1NOQkNmxvbu3YvDhw+r5UeZHZOZsCRJkqg/q3DhwlaZSBAMXBSso0ePqincZcuWoWbNmnrUshi4iIgsy+izW4cOHUKrVq3Uhq2BAweqptuRIkXSV+0Ta7goWFIsL68EqlatqkeIiMieGTlseXt7o1+/fihYsKA6VkeC15AhQ+w+bAkGLgrSy5cv1cns7dq1U1OwRERk34wctqQQPleuXBgzZoxaSty/f79q/eAoGLgoSBK2ZIdi27Zt9QgREdkro4at169fo2fPnuoIHakXllKW/v37qxkuR8LARYGS0r4JEyagWrVqSJYsmR4lIiJHYYSwJU1Lc+TIoX7fSDPT3bt3I0uWLPqqY2HgokDt27dPbcHt2LGjHrGNwF6RERFR6BjtXiolK126dEGpUqWQOHFitYOwV69ecHV11c9wPAxcFCg5NzF16tTw8PDQI0REZG8kaBltKXHTpk3Inj27aqg9duxYNcuVIUMGfdVxMXDRfzx58gSLFi1Chw4d1HEJ1maUAk4iInsW1KyWre6xz58/V5uwypcvr3pfnTx5Et26dbPJ7xlbYOCi/5BXHe/fv1edfYmIyHHYKmytXbsWWbNmVS/mpd3Q5s2bkSZNGn3VOTBw0WekWF6WE+vWrYsECRLoUdtiHRcRUcgZaRlRVkzkQOkqVaogW7ZsOHXqFNq3b2/RI3SMioGLPrNt2zZcvHjR5sXyRERkPrYIW8uXL1ezWitXrsSMGTOwbt06pEiRQl91Pgxc9BmZ3ZItucWLF9cjtsE6LiKi0DPCisDDhw/RsGFD1KpVCwUKFMDp06fRsmVLp5zV8o+Biz66d++eOjNRZreM9oPBZUUiouAFtYxorRewUpIiNVryol1qtObPn69mueR4OGLgIn+mTZumOvs2a9ZMjxARkT2wdc2WvGCvU6eOmtmS3loyq9WoUSOnn9Xyj4GLFF9fX0yePFn9gMjRCkbAZUUioi+zZdiSWa3Zs2erWS3pEr948WL1SJgwoX4GmTBwkbJ+/XrcuHGDxfJERHbElmHr1q1bqFq1qtqFWLlyZTWrJTvcKXAMXKRIsXyePHmQL18+PWI8rOMiIvrEVmFLZrWkBEV2IMpB0ytWrMDcuXMRP358/QwKDAMX4fr161izZg06derE9XYiIjtgq7B17do11Sm+bdu2qmbrzJkzqF69ur5KwWHgIkyZMgXu7u6q2JGIiIzNFmFLTh8ZP368OgPx/Pnzqgxl+vTphqn5tQcMXE7u3bt3mDp1qtqZGCNGDD1qHNaqRSAiMjIJWaZHQJa+T166dAllypRBly5d0LRpU9UtvkKFCvoqhRQDl5OTtff79+/bTbF8YDcbIiJHFtR9T4KWJcOW7F4fM2YMcuTIoTZVbdmyBRMmTEDMmDH1Myg0Ivwr1W/ktMqVK4c3b95g586desR4At5sOOtFRI4uJC8uLXkvPHfuHFq3bo19+/ahW7duGDZsmCFXQewJZ7ic2IULF9QrFqPPbjFgERF9YJrVstR90cfHB6NGjUKuXLnw6NEj/PPPP/j9998ZtsyAgcuJTZo0CfHixVM7TYiIyLZkVsv0CMiSIcvk5MmTKFy4MAYMGKBmtY4fP45ixYrpqxReDFxOysvLCzNnzkSrVq0QJUoUPWofQjLVTkRkL4IKWSaWDlqyeeqHH35A3rx58fr1a+zZswc///wzokaNqp9B5sDA5aSWLFmCJ0+eoH379nrE2Cx9wyEisoUvBS1L3/ukcWn+/PlV4Orbty+OHDmCggUL6qtkTiyad1JFihRRa/IbN27UI8YX8MbEEEZE9sqWM1pCNksNHToUI0eORLZs2TBjxgzkzp1bXyVL4AyXE5J1+b179/LcRCIiKwtu+dAaM1riwIED6ii3n376CYMHD1YfM2xZHgOXE5Ji+cSJE6NatWp6xD4EvBEFd+MiIjISIwQtqd2VZUMpjJf6rMOHD2PQoEGIFCmSfgZZEpcUHcyVK1ewcuVK9YN0/MQJvHrlCTc3V6RIngL58uVVRZFSKN+zZ0+1Zm9vgrthEREZSUheEFrr3rV7927VV0vOzh0yZAh69+7t97vBTV8la+AMl4PYtWsXKlWqjHTp0uHbfv2x7/hpxEuXHZmLeSBNvpJ48i4Cps6cjfr168PL21ut38urHXvDYEVERhfcbJYwzWhZ437m6emJHj16oHjx4ogbN64qku/Xrx/Dlg1whsvOyQ+T/PCMGzcOKTNmRbn6rVCgfDVEjhL4dt7r509hy+LZ2Lv2b6ROnRozZ85Q08v2JrCbGcMYEdlCSGayTKx5n9q2bRvatGmDe/fuqU7x3bt3h6urq75K1sbAZccePnyI8uUr4Oy5c6jTuS/KNWgFF5eQTVrevnIB04f2xrWzJ1U/LjmQ1N4EvMkxcBGRtX0pbNnivvTy5UtVqzVx4kSUKFEC06ZNU6sfZFsMXHbqxYsXfj9IJXH91m30+mMukqfPrK+EnK+PD2aN6I+dq/7CokWLUK9ePX3FPgR1o2PwIiJrCS5w2eJetGHDBtVf8fHjx2oXouxGD+kLcbIs/isY1KFDh1CjRg0kSZIE0aNHR+bMmVXPFFPd1ddff40zZ88idoJE+LlrU7Qtmh69qhXGhIFd1exVQM8fP8TU//VCt/K50b5YBgxuVhlHdmxAy4GjUMCjGlrpYkqxadMmdZyD/HdlzV+CmOmakTBYEZEtSMgyPQKS+5LpYU3Pnj1Ty4cVK1ZEhgwZcOrUKXTu3Jlhy0A4w2VAcp6VdP6VsCWvTiT0yFELsvRXvXp1NVapUiVkylsYCZIkR7J0mRDNPRYe3r6BHcvn443XawyZvQaJUqZRf57Xq5cY0rwKXjx9gvINWyFWvK+wf9MqXDi6Hx2GjkXOomUwqJEHcmbNrIora9asiXz58qFZs2Z4/vy5Org0cuTIqtgyfvz46s80koA3PQYxIrKE4GazhK3uPatXr0aHDh3w6tUr/PLLLyp4RYgQQV8lo2DgMqCBAwdixIgROH36tJrZMmnZsiVmz56N3Lnz4HWEiPh2wqL//FBdO3cS/2teFdXbdEetDr3U2No5E7H4jxHoO2EhMvuFNCH/7ENb1cCT+3cwetVenNyzHb/3aoNUqVKpnizy3zbtYjlx4oRqkiezaqNHj1ZjRsPQRUSW8KWQJWx1v5FlQ3mRPG/ePFSuXFn1WEyWLJm+SkbDuUYDMh0Y+tVXX6m3JokSJVLTw0eOHEaFRm0DfQUTP9GHHzZXt4jqrbhw9ADc48T/GLaEfG7+slXUUuP5w/uQs1hZJEyWEteuXUOtWrU+2zKcI0cOZMqUCQsXLtQjxhPwhheSmyQRUXCCu4/IPcf0sIWlS5ciS5YsWLNmDWbNmqVmuRi2jI2By4CkOV3ChAnVtLAcw3Pz5k1V1C47TuT4hTjxv1IByeTVs6d48eQRrp45jqk/9ELMuPFRvFp9fRXwefcWkaJE0R99Ekm3jpBWERLkCpSvrj4OrOtwtGjRcPfuXTx48ECPGB9DFxGFhdw7grp/2DJkCbkHS11t3bp11Zm4Z86cQfPmzbmEaAcYuAxIarekK/C5c+dUwEqZMiUaNWqkeqi4u8dE6my54eKvl8rXVQqgR8W8+KFlddy5ehH9Jy1GnK8S6atA4pRp1dLh43u39cgHF44dUG+fPrin3mYvVFK9DXigtUxbyw+1uH378z/DSAK7CTJ0EVFIGTloSRnI/Pnz1azW9u3b1YrD33//rY5pI/vAwGVA9+/fV0Xx8gM2ZcoU9UMls17SuG7//v1ImTGbfuYHvcfOQc/fZ6Ph14Pw7u0b/NytqV/AuquvAiVqNoKLiyv+7N8Zl04cxoNb17B6xji1S1G8feOt3qbMnF29lYNMBwwYgIsXL6ojgqQ7/bt379TXY/Tu9AxdRBRaRg5aQlYXZDNTkyZNUK5cOfUCuEGDBpzVsjMMXAYk7R9kJsnUJVh+0KZOnYoWLVrg9WtPRIr8+fJgpryFkL1wSVRo3FbNbr188ggrpv6mrwLJ02VChx/H4uGt6xjWtja+rV0SmxfPQuOeg9X1KNGiq7fSnT5y1KgoUKCA6t+SMWNGtVtSlhjl6xAxYsRQb42MoYuIQsLoQUte5MrudJnVkhfb8uJbZrYSJEign0H2hIHLgORcRFlKlKVF/6pVq6bePr53R70NzFfJUiJFhqy4cvq4Hvkgf5nKGLPuIAbPWoVBM1bgl5V7kSBJCnUtYYrU6q349/2/aNy4Me7cuYOdO3fiwoULWLdunerxIkdC2Eu34qBCF4MXEX3pXmDroCWkdld2HrZq1Urd+2VWSzY0kf1i4DIgWb7z9fXVH30i4+LZ4/vqbVBkiTCwZndubhGRKnMOpMmaC65ubjh9YKcaz1qguHorhffyubIbUnZIFi1aVAUs+VqkZqBgwYKqeN5eGOGmSUTGEVzQMs1o2fq+IbNakydPRtasWVVPRtl9KO2ApB8j2TcGLgOSnldHjhxRNVT+LViwQK3Zv3j8EO/9QpDni2f6yidXTh/D7cvnkSFXfj0SuHs3rmLb3/OQq3g5JEyeSo3JuYoib9686q2J9N6Sw0979frQ18ueBHbz5CwXkXOxhxktcfXqVVWjJU1MpXZW+iFWqVJFXyV7x8anBiSNRgsVKoSYMWOia9eu6pWNvMpZv369qq86dvwEhi3egoH1y6Fg+epIkjq9qr26dem8OhcxRszY+H7WKsSO/6mP14D6ZZC/XFXETZgEj+7cxNalcxAtujsGTvvb73kJ1XPm/TIEW/6ahZQpU6gf8mzZsmHr1q1YvHgx2rVrp5rq2avgXtUSkWOyh5Al3r9/jz///BP9+vVTp3lIza6Hh4e+So6CgcugZKfg4MGD1ZE+3t7eSJMmjSqab9q0KVKnTo163QaoNg9nD+3Fo7u38O6Nt1+YSozsRUqjeutuiBXv86LKid91w8Xjh/D8ySPEjB0XuUp4oFaHnnD3e1+88fZCz8r5kSJZUly+fBlv375Vs2nywy87JIcPH273Z3IxdBE5vuBClomRfuZlJUPusVK7K2cfjhw5Eu7u7voqORIGLjtUv0EDbN+1B0MXbPq4wzC81swaj6Xjf1I//HK8z969e/HXX3+p2S3Zkpw8eXLVbE+muWWWzZ63IzN4ETkue5nVktrY3377Dd99953aIDVt2jSUKlVKXyVHxMBlh65cuYJs2bOjcOW6aP7tj3o07KRZ6uCmldGjezf8/PPPevQDmeqWV14SvpYsWaJ6hEkjVgle8pB6L3sMXwxdRI7Fnn6mZcehzGrJSoachfjjjz8ienTzvHgm42LgslPjxo1Dt27d0GbQaBSv/ukYn9B68fQxRnaohxgRXXHs2NGP5zgGRl6RSasIOWZIzvF6+PChWuo0ha9cuXLZVfj60tIDwxeRfbCXsOXj46Ne1A4ZMkSVhkyfPl0dz0POgYHLTsk/m+xkkeJKaWBarkGrUIedB7euY2yvNnjz6hl279qF9OmDDyD+yY1jx44dKnxJMz45/kc+3xS+smfPbhfhi6GLyH7Z06yWbIaSnlrHjh1Dnz59VOiKEsgZt+S4GLjsmCz3SasGqQPIXqgEmvcfgQRJkuurQfP1C0vb/p6LxeNGIHHCRFi/fp3qKh9W0h9MdjPKsuOyZcvw9OlT9edJ8JLjJ6SfjNExeBHZF3sJW7IBSTYdydFsmTJlUrNacoIHOR8GLgcgneDbtm2He/fvIU/J8ihWrT7SZcuDGLHj6GfIjNQ73LlyEcd2bcE/y+bh0b076NixozrCx5w7YuTmsnnzZhW+li9fjufPn6tjKSR4SQCTG47RBRe+GLyIjCGwn1Oj/XzKWbQyq3X27Fn0798fAwcOROTIkfVVcjYMXA7i5cuXqhvxn3+O9/vhPqPG4iVMgujuMVXYenT3tuoiHyVqVDRp3BhdunRRxwdZ0ps3b7Bp0ya17LhixQr1NcpSoyl8hWYJ09q+NONlwgBGZH1GD1vSyueHH35QL2jlnjdjxgxV40rOjYHLwcg/56VLl9QrKzkWQkKOm5ub2lkoOwolZNliN4zcgDZs2KDC18qVK+Hp6aluQBK+pN1E2rRp9TONJ6ThSzCAEVlOUD+LRvq527dvn9qBKPdh6aXYt29fRIwYUV8lZ8bARVbn5eWllkElfEkH/devX6swaApf0gfMaEITuoLCMEYUPkae2ZL72KBBgzBmzBjky5dPzWrZQ/0qWQ8DF9mUzHStXbtWha81a9aomTBprCpLjhK+UqRIoZ9pLOEJYAxeRKFn5LD1zz//oE2bNrh58yaGDh2Kb775Rq0sEPnHwEWG8erVKzXjJeFLZsCkBqxw4cIfw1fSpEn1M43JHLNggWFAI2dn1LAl9ywphpe+iEWLFlXd4sOz45scGwMXGdKLFy+watUqtdtRDu2W3Y/FihVT4atu3bpInDixfqaxWSqEBcRQRo7KqGFry5YtaNu2LR48eIARI0aojUiurq76KtF/MXCR4T179kwV2kv42rhxo2q6WqJECRW+6tSpg4QJE+pnGp+1AlhADGRkj4wYtqTVjRTCT548WZ19KM2njbzph4yDgYvsijRVlf5eEr6k35c0f5WbnoSv2rVrI0GCBPqZjoOzZOSsAn7v2/p7VEod2rdvr14EyhE98r6Li4u+ShQ8Bi6yW3KckHS2l5ov6XQvRwmVKVNGha9atWohXrx4+pmOzZKBjCGMbMVIYUte6Ekh/KxZs1C+fHk1uyWtdohCg4GLHIIcpC1nOsrM1/bt29WrznLlyqnwVbNmTcSJ86nrvrMJbyBj6CJbMErgkqbNciqHtLP59ddfVed4ezqkn4yDgYsczr179z6GL9muLduz5VWphK8aNWogVqxY+pkU2jDG8EWWFtj3pC2+7x49eoRu3bph4cKFqFq1KiZOnGj4ndJkbAxc5NDu3LmDpUuXqvC1a9cuRIoUCRUrVlThq1q1aogZM6Z+JvkXmiDGEEbmENT3nLW/v+RX4uLFi9G1a1f4+vpi7NixaNy4MWe1KNwYuMhp3Lp1C0uWLFHha+/eveoQ2cqVK6vwJa9gY8SIoZ9JIrSzX/4xhFFoBPe9Zs3vpfv376Nz585qhlw24fz5559IlCiRvkoUPgxc5JSuX7/+MXwdOHAAUaNGRZUqVVT4khBmi/MmjSws4Yuhi0LCCDNb8mtw3rx56NGjh+qlJUFLmi0TmRMDFzm9q1evqiUECV9y6He0aNHUcqOEr0qVKqkwRoEL6ywYwxgJI4St27dvq6J4OeWiUaNGagkxfvz4+iqR+TBwEflz+fJlFbzkcezYMbXMWL16dRW+KlSogChRouhnUmAYwCikAvtesfaslhww3bNnT/WiSoriZVMNkaUwcBEF4cKFCx/D18mTJ+Hu7q5uyA0aNICHh4eqAaPAhSV4MXQ5l4DfI9b895eSAmlaKidXtGjRAmPGjHHq1jFkHQxcRCFw9uxZFbykyaq8L60lpL+XhK+yZcuq3Y/0ZV8KYgxdji2of39r/bvLyRSTJk1SR/PEjh1bNTCVsgEia2DgIgql06dPq+AlD5kFk1fGsqNJlh1Lly6NiBEj6mfSl9j6FzBZT3Bh2xr/3lIuIIdNS2Nkmd366aef2JOPrIqBiyiM5EdHlholeMns16VLl9RxQhK+ZOarZMmSqukqfRlnvhybLYO19NIaN24cBgwYgK+++kodNi2z0kTWxsBFZAbyYyRF9qbwJTsf5SDtOnXqqPBVvHhxtd2cgmbrGRCyjMD+Xa3173n+/Hm0bt0ae/bsUV3jhw8fzn57ZDMMXERmJj9S0l7CFL5u3LiBhAkTom7duip8FS1aVJ31SIH70myXCUOY8dkqbPn4+KhC+O+//x7JkiXD9OnT1YseIlti4CKyIPnxksaqEr6k15d0u0+SJMnH8FWoUCGGr2AwfNkfW89USo2lHDB96NAh1fLhhx9+UL31iGyNgYvISmSH1L59+9Ssl4QvOedRXn1LR2sJXwUKFOB5bQGENHD5x/BlO7YMW+/evcOoUaNUwEqbNq3qsSUvaIiMgoGLyAYkfO3evftj+JIz3FKmTPkxfOXNm5fhKxghCWIMXtZj61ktqZ+UWS3ZxCItH2QpkU2KyWgYuIhsTHZR7dy5U4UvOd/x4cOHSJ06tWozIY/cuXMzfAUipLNfDF6WY+ug9ebNGwwbNgwjRoxA5syZ1ayWvFghMiIGLiIDkWLfHTt2qPC1dOlSPH78GOnSpfsYvnLkyMHwFYiQhi8R1iDg/7/h7CHO1kFLHDx4UM1qyU7E7777Dv3792cDYjI0Bi4ig5KalG3btqmC+2XLluHp06fImDHjx/CVLVs2/Uzyz1LhK+Cf64yhywhBy8vLC0OGDMHo0aORK1cuNaslL0SIjI6Bi8gOvH37Flu2bFEzXxK+nj9/jixZsnwMX7KcQp8LafAKaVBw9sAV1P9Pa/5/kH5a0ldL+txJ6OrTpw+bC5PdYOAisjNSt7Jp0yYVvpYvX46XL18ie/bsH8NXhgwZ9DPJv/AGsMA+31lCl63/7p6enmrZ8Pfff0fBggVVXy2+yCB7w8BFZMe8vb2xYcMGFb5WrlyJV69eqWUWU/iS7fH0ufAELyPM8lhLcP+frPn3lbMP5QzE27dv48cff8TXX3/NUxvILjFwETkIqW1Zt26dCl+rVq3C69ev1Y4tCV7SbkJ2PtInYQlezhK4jBC2ZOa2X79+GD9+vOoSP23aNKRPH7J/MyIjYuAickCyBLN27VoVvtasWaPCmDRWNYWvFClS6GeSyZcCmCloBPY8RwlcRgmUGzduRLt27SC7dEeOHInOnTvzRAayewxcRA5OlhlXr16twpeEMKkBkw7c0mBVjhiSbvf0wZdCV1DsPXAZJWg9e/YMvXv3VrNZZcqUwdSpUzkzSw6DgYvIibx48UItN0r4Wr9+vdr9KIdpS/iqU6eOOueRPghL+LK34BXc39HafxeZie3QoYP6HpWWDzLDxZ5z5EgYuIiclLSWWLFihQpfsoQjTVelVsYUvhImTKifSSENX/YSuIwUtJ48eYIePXpg7ty5qFixIiZPnozkyZPrq0SOg4GLiFRTVWkxIeFr8+bN6qzHkiVLqvBVu3ZtJEiQQD+TjBRWwiKor98WX/vff/+t6rNkmfu3335D8+bNOatFDouBi4g+I4XK0lxVwtfWrVvVWOnSpVX4qlWrFuLFi6fGnM2XZrmMHraMFLTkvNCuXbuq77Hq1atjwoQJXM4mh8fARURBkl+MMgshvxilH5LMPpQrV06Fr5o1ayJOnDj6mY7rS0FLGDlsGWlGTn7dyFFV3bp1U+//8ccfaNiwIWe1yCkwcBFRiNy/f18dqC3h659//lFHqnh4eKjwVaNGDcSKFUs/07HY68yW0YLi3bt31fKhLF1LaxIJW6wTJGfCwEVEoSa/PJcsWaLC165duxApUiRUqFBBha9q1aohZsyY+pn2L7DgwhmtkJNfMXPmzFEd4iNGjKgamcqmDCJnw8BFROFy69YtNfMlS0V79+5F5MiRUalSJdVkVcJXjBgx9DPtk/8Aw9ms0JHvDWn1IP3fmjRpos5CdNYaQCIGLiIymxs3bqiZLwlfBw4cQJQoUVClShUVvuRt9OjR9TPJXIw2oyXk14o0LZUmphK4J06cqMI3kTNj4CIii7h27RoWL16swtfhw4cRLVo0VK1aVYWvypUrI2rUqPqZFB5BBS5bhS35d5fDprds2YLWrVvjl19+QezYsfVVIufFwEVEFnf58uWP4evYsWNqpkvaAUj4kmaXMhNGYRMwcNkqaEnvNmnv8O2336plwylTpqB8+fL6KhExcBGRVV24cOFj+Dp58iTc3d3VLkcJX/ILWmrAyL5cunQJbdq0UbtXO3bsiFGjRjnUxgkic2DgIiKbOXv27MfwdebMGdVaQvp7SfiSfl+y+5GMy9fXF2PHjsXAgQORKFEiVbclh04T0X8xcBGRIZw+fVq1mZDwdf78edVUVTrbS/iSX+LSUoCM49y5c6pGa9++faqR6fDhw7kpgigYDFxEZChyS5KlRlP4kuUqqQmSMx0lfJUqVUo1XSXbkEPOR48ejSFDhiBlypSYNm0aihUrpq8SUVAYuIjIsOT2JEX2pvB19epVdZC2NM6U8FWiRAm4urrqZ5OlSRBu1aoVjh49il69euF///sfd5sShRADFxHZBblVSXsJCV/yuH79ujoapm7duip8FS1alOHLQt6+fYuRI0fixx9/RPr06TFjxgwUKFBAXyWikGDgIiK7I7ctaaxqCl/S0Txx4sTqjD4JX4ULF4aLi4t+NoXHkSNH1KyW1Nj1798f3333HXeSEoUBAxcR2TXp/ySF2xK8ZMfjnTt3kCxZso/hq2DBgogQIYJ+NoXUmzdv8MMPP6gWD9myZVOzWrlz59ZXiSi0GLiIyGFI+Nq9e7cKX3LE0L1795AiRQoVvOSRL18+hq8Q2L9/v5rVkg0LgwYNQr9+/bhLlCicGLiIyCFJj6idO3d+DF8PHz5E6tSpP4Yvma1h+Pqcl5cXvv/+e/z666/IkycPpk+fjuzZs+urRBQeDFxE5PCklcGOHTtU+Fq6dCkeP36MtGnTquDVoEED5MiRw+nD165du1RfLTmAXHYfyi5Ett8gMh8GLiJyKu/evcP27dtVm4m///4bT58+RYYMGT6Gr6xZszpV+PL09FTF8OPGjUOhQoXUrFamTJn0VSIyFwYuInJaEr42b96sZr6WLVuG58+fI3PmzCp4SQCT9x3Z1q1b0bZtW1XrJp3ipWM8W2sQWQYDFxGRH9mVt2nTJhW+li9fjpcvX6rdeabwJbNgtiC3aGl7IT3Ibt++rWrT5GDonDlzqtm4sJw3+eLFC/Tt2xeTJk1CyZIl1RmI6dKl01eJyBIYuIiIAvD29saGDRtU+Fq5ciVevXqlAo4EL3lYI5xIuJoyZYpfGJrm9/4tNeYWMSJcXFzx9o23+lj6YVWtVg1du3RRwSkkS6Hr169H+/bt8eTJE/z000/o2LEje5YRWQEDFxFRMGTnnoQUqflatWoVXr9+rXbwmcKX7Hw0J1nmlOW9YcOGwdUvYBWqWAs5i5RGqsw5EDtBQhWq3nh74cb507h04jB2rf4Lt69cRLFixTFjxvQgw6DUqvXs2RMzZ86Eh4cHJk+ejFSpUumrRGRpDFxERCEkYWvt2rUqfK1Zs0aFsfz5838MX9LzKzxu3ryJ6tVr4MTJE6jSojMqNeuAaDFi6quBk1v4yb07MPen7/DiyUNMnjQJzZo101c/kFk6mcmSAvlffvkFbdq0YUsMIitj4CIiCgNZZpTQJeFLQpjUgMkuPwle0uVeut2HhrRjKF68BLx8fNFl5EQ1oxUa3q89Mffn77Fr9WJVmyXLhtL+onv37pg/fz4qV66sxkP7dRGReTBwERGFkxTYy3KjhC9ZfpTDnuUwbQlfcri2HDc0dOhQHDx4UO2ElJmwxo0bo3fv3ogaNaoKa/ny5cf9J0/Rb9ISxIqfAN83roC71y6jfveBqNS0vf4vfbJjxUKsnzsZj+7eRNyESeDRoBXK1muBuaMHY+viWapD/J9//qmCYZo0adTsmcxwbdu2TdV7EZF1sVKSiCic3N3dVYBasWIFHjx4gNmzZyN27NgqUCVNmhQFChRQRw7JUt7vv/+uDtcePHgwGjVqpD5fGo2eO38O3UdPQ7xESbB50Uw8uX9XXQts6W/b33Mxc9i3SJYuI5r2GYp02fNgnl/QWjdnIpr0GoIMuQrgx2HDkD59ehX+5Mgjae4quJRIZBsMXEREZhQrVixVQ7V69Wrcv38fVatWVXVWz549U8XwsrwnAUxmv6S26ujRo2q3YLXW3ZE8fWa8ePIIK6f9jsotOus/8XNvvb2xdPzPyFmsLLqMmICSNRqi3ZAxKFSxpt/njYWX50u0HfwLIkaKpIKd7EY8d+4cvvnmG/0nEJEtMHAREVlInDhxULBgQTWrdPbsWbUzUI7L6dq1q1p+FGpZMYY7KjXtoD5ePG4kEqdKh8J+ASowZw/vgeeLZyhTt7ke+UCWE994vcbxXVuRIGkKlKrVBLNmzUaUKFH0M4jIlhi4iIgsSM4nTJgwIfr06YN8+fJh2rRpmDBhgqrdkuXG7Tt2oFjV+ojkF4yunD6G3WuXonHPwfqz/+v6+dPqbeosnxfVp8qUDRFcXHDjwhn1cenaTfHkyWPVQZ+IbI+Bi4jIgpIkSaLqt2RZL3fu3EiZMiU6dOigZrZkl+N7X1/kLuGhlh1ll2FBj+pImy23/uz/ev7ogWp+6h47rh75wC1iJMSIFQfPHt5XHydKmQbJ0qRXh1ITke0xcBERWZDUcVWqVEkFKukcLwdmy6yXNDaV2i1ZbkyRMSt2rVqMW5fPo363/vozAydd5qUhamAkdL3TXehF8ozZcOjQIf0REdkSAxcRkQVJOwg5pkfaMcguxZo1a6qzC1u0aKGODooVN750L8XiP0ehcvOOiPNVIv2ZgYsUOQp8373TH33u3ds3iOh33SRh8lS4dv2G/oiIbImBi4jIgmRJT5YSZWnRv2rVqqljfKRlw7q5k+Hr+w4FylXFwzs31ePpgw9tIaRAXj728fkQsmLF/8rvc3zx8tkT9bGJz7u36rly/I+Jq1tE+Pr46I+IyJYYuIiILEhCla+vr/7oExmX5UQ5F/HJ/Tt4/eI5BjYoh741i6nHiPb11PNWzxinPr579ZL6OEWGLOrt1dPH1VuTq2dO4F+/8Ga6LrxevUD0GDH0R0RkSwxcREQWJAddHzlyBBcvXtQjHyxYsAAuLi6qlUO+spXR/ecpnz1a9B+hnlesWn31cfzEH47kyZK/KKLHjI2tS+eoj03k48hRoyFnsTJ6BLh54Qxy5MiuPyIiW3Id4ke/T0REZpYuXTrVCkIannp7e+PUqVOqy7zsUJTu9CdOnECu4uWQv2wVJE6V9uMjeqzY2LRwOgpXqoXifqErYqTI6s9zdXNDlGgxsHHBNNy+cgFer16q5+1dtww123+DbAWLq+fJUuLC34YiQby46lifHTt24PTp0yrkyX/zn3/+QYkSJdRzicjyeJYiEZGFHThwQIWsPXv2qNAlZxtK0Xzfvn1RuHAReLlERq8/5upnfyB1W7KU2KDHd6jYpJ0e/WTH8gVYP2+Kep4cB1SuXgt4NGytrwKHtq7DuG87qGVLecit3vRWyPuBLXUSkWUwcBER2ZCcuyjha9iizUiaJoMeDR+5rY/q1ABxIrn4hbzdepSIbIk1XERENiRnKqZJkxazRvRXTVDNYc/apTh3eB8GDAi+pxcRWQ8DFxGRDclZhzNmTMeFYwexdvYEPRp2D25dw/xf/4cmTZuqg7OJyBhYNE9EZGNy3I/UU038ZQRixI6LNFlz6Suh8+DWdYzu0gQJ4sTG0qVL1HmNRGQMrOEiIjIAuRX36tULY8aMQYnqDdDwm0GIFiOmvho8+dwDm1Zh7s+DkChBAmzZshnJkyfXV4nICBi4iIgMQm7HcuxPT7/gFSlqDFRo0g7FqtZVfbcCI13qzxzchY3zp+HEnm2oW68eJowfj/jx4+tnEJFRMHARERnMjRs38G2/fli6ZAlcXN2QNnsepMyUDQmSpPD72FUd4XP9/GlcOXUEj+7eRrZs2TF48PeoW7eu/hOIyGgYuIiIDOrevXuYO3cudu/Zg4MHD+HundtqViuGuzty5siJfPnyqpBVtGhR1VeLiIyLgYuIyI7ILZvhisj+sC0EEZEdYdgisk8MXEREREQWxsBFREREZGEMXEREREQWxsBFREREZGEMXEREREQWxsBFREREZGEMXEREREQWxsBFREREZGEMXEREREQWxsBFREREZGEMXEREREQWBfwfmH5zF5Hr3RwAAAAASUVORK5CYII=", + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": { + "image/png": { + "width": 400 + } + }, + "output_type": "execute_result" + } + ], "source": [ - "with open(\"added.txt\", \"w\") as f:\n", - " f.write(str(added))" + "from IPython.display import Image\n", + "\n", + "Image(\"euler.png\", width=400)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Chemin Eulérien\n", - "\n", - "A cet instant, on n'a pas vraiment besoin de connaître la longueur du chemin eulérien passant par tous les arcs. Il s'agit de la somme des arcs initiaux et ajoutés (soit environ 334 + 1511). On suppose qu'il n'y qu'une composante connexe. Construire le chemin eulérien fait apparaître quelques difficultés comme la suivante : on parcourt le graphe dans un sens mais on peut laisser de côté une partie du chemin et créer une seconde composante connexe." + "Quelques algorithmes sont disponibles sur cette page [Eulerian_path](http://en.wikipedia.org/wiki/Eulerian_path). L'algorithme de Hierholzer consiste à commencer un chemin eulérien qui peut revenir au premier avant d'avoir tout parcouru. Dans ce cas, on parcourt les noeuds du graphe pour trouver un noeud qui repart ailleurs et qui revient au même noeud. On insert cette boucle dans le chemin initial. Tout d'abord, on construit une structure qui pour chaque noeud associe les noeuds suivant. La fonction [euler_path](http://www.xavierdupre.fr/app/ensae_teaching_cs/helpsphinx/ensae_teaching_cs/special/rues_paris.html#special.rues_paris.eurler_path)" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 17, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "------- nb odd vertices 10 iteration 0\n", + "iteration 0 #modif 113 # 1327/10585 = 12.54%\n", + "iteration 1 #modif 90 # 1383/10585 = 13.07%\n", + "iteration 2 #modif 113 # 1423/10585 = 13.45%\n", + "iteration 3 #modif 133 # 1470/10585 = 13.89%\n", + "iteration 4 #modif 168 # 1523/10585 = 14.39%\n", + "iteration 5 #modif 187 # 1589/10585 = 15.01%\n", + "iteration 6 #modif 192 # 1655/10585 = 15.64%\n", + "iteration 7 #modif 219 # 1722/10585 = 16.27%\n", + "iteration 8 #modif 232 # 1796/10585 = 16.97%\n", + "iteration 9 #modif 227 # 1863/10585 = 17.61%\n", + "iteration 10 #modif 207 # 1919/10585 = 18.13%\n", + "iteration 11 #modif 164 # 1968/10585 = 18.59%\n", + "iteration 12 #modif 111 # 2003/10585 = 18.92%\n", + "iteration 13 #modif 77 # 2027/10585 = 19.15%\n", + "iteration 14 #modif 43 # 2038/10585 = 19.25%\n", + "iteration 15 #modif 13 # 2039/10585 = 19.27%\n", + "iteration 16 #modif 2 # 2040/10585 = 19.27%\n", + "iteration 17 #modif 0 # 2040/10585 = 19.27%\n" + ] + }, { "data": { - "image/png": "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", "text/plain": [ - "" + "[(22, 31, 0.0016168196457467584),\n", + " (48, 55, 0.002915457386378182),\n", + " (26, 45, 0.004107201738406607),\n", + " (109, 138, 0.005201454147672404),\n", + " (29, 73, 0.010775423696863674)]" ] }, - "execution_count": 23, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "from IPython.display import Image\n", + "from teachpyx.practice.rues_paris import euler_path, eulerien_extension\n", "\n", - "Image(\"euler.png\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Quelques algorithmes sont disponibles sur cette page [Eulerian_path](http://en.wikipedia.org/wiki/Eulerian_path). L'algorithme de Hierholzer consiste à commencer un chemin eulérien qui peut revenir au premier avant d'avoir tout parcouru. Dans ce cas, on parcourt les noeuds du graphe pour trouver un noeud qui repart ailleurs et qui revient au même noeud. On insert cette boucle dans le chemin initial. Tout d'abord, on construit une structure qui pour chaque noeud associe les noeuds suivant. La fonction [euler_path](http://www.xavierdupre.fr/app/ensae_teaching_cs/helpsphinx/ensae_teaching_cs/special/rues_paris.html#special.rues_paris.eurler_path)" + "added = eulerien_extension(edges, verbose=True)\n", + "added[:5]" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[(2121, ['street', 3, 2121, 0.049532522902426074]),\n", - " (10363, ['street', 2121, 10363, 0.1474817976215633]),\n", - " (3517, ['street', 3517, 10363, 0.10602477572757586]),\n", - " (2829, ['street', 2829, 3517, 0.03409802890007801]),\n", - " (3515, ['street', 3515, 2829, 0.060836636019222866])]" + "[(43, ['street', 43, 59, 0.016229655482986917]),\n", + " (74, ['street', 74, 43, 0.08264740074165475]),\n", + " (36, ['street', 36, 74, 0.026299568900906643]),\n", + " (74, ['jump', 36, 74, 0.026299568900906643]),\n", + " (53, ['street', 74, 53, 0.08193964999861593])]" ] }, - "execution_count": 24, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "path = euler_path(edges, added_edges)\n", + "path = euler_path(edges, added)\n", "path[:5]" ] }, @@ -889,15 +825,6 @@ "\n", "C'est une variante pour laquelle le coût d'un arc n'est pas le même selon qu'on le parcourt dans un sens ou dans l'autre (à contre sens). Ce problème est [NP complet](https://en.wikipedia.org/wiki/NP-completeness)." ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] } ], "metadata": { @@ -916,7 +843,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.2" + "version": "3.10.6" } }, "nbformat": 4, diff --git a/_unittests/ut_xrun_doc/test_documentation_examples.py b/_unittests/ut_xrun_doc/test_documentation_examples.py index 8856dbfc..c0e037d5 100644 --- a/_unittests/ut_xrun_doc/test_documentation_examples.py +++ b/_unittests/ut_xrun_doc/test_documentation_examples.py @@ -42,6 +42,8 @@ def run_test(self, fold: str, name: str, verbose=0) -> int: res = p.communicate() out, err = res st = err.decode("ascii", errors="ignore") + if "No such file or directory" in st: + raise FileNotFoundError(st) if len(st) > 0 and "Traceback" in st: if '"dot" not found in path.' in st: # dot not installed, this part @@ -49,17 +51,10 @@ def run_test(self, fold: str, name: str, verbose=0) -> int: if verbose: print(f"failed: {name!r} due to missing dot.") return -1 - if "No such file or directory: 'schema_pb2.py'" in str(st): - if verbose: - print( - f"failed: {name!r} due to missing protoc " - f"(or wrong version)." - ) - return -1 raise AssertionError( - "Example '{}' (cmd: {} - exec_prefix='{}') " - "failed due to\n{}" - "".format(name, cmds, sys.exec_prefix, st) + f"Example {name!r} (cmd: {cmds!r} - " + f"exec_prefix={sys.exec_prefix!r}) " + f"failed due to\n{st}" ) dt = time.perf_counter() - perf if verbose: @@ -75,9 +70,20 @@ def add_test_methods(cls): if name.startswith("plot_") and name.endswith(".py"): short_name = os.path.split(os.path.splitext(name)[0])[-1] - def _test_(self, name=name): - res = self.run_test(fold, name, verbose=VERBOSE) - self.assertIn(res, (-1, 1)) + if sys.platform == "win32" and ( + "protobuf" in name or "td_note_2021" in name + ): + + @unittest.skip("notebook with questions or issues with windows") + def _test_(self, name=name): + res = self.run_test(fold, name, verbose=VERBOSE) + self.assertIn(res, (-1, 1)) + + else: + + def _test_(self, name=name): + res = self.run_test(fold, name, verbose=VERBOSE) + self.assertIn(res, (-1, 1)) setattr(cls, f"test_{short_name}", _test_) diff --git a/_unittests/ut_xrun_doc/test_documentation_notebook.py b/_unittests/ut_xrun_doc/test_documentation_notebook.py index 73098198..a661c33f 100644 --- a/_unittests/ut_xrun_doc/test_documentation_notebook.py +++ b/_unittests/ut_xrun_doc/test_documentation_notebook.py @@ -3,7 +3,6 @@ import sys import importlib import subprocess -import tempfile import time from nbconvert import PythonExporter from teachpyx import __file__ as teachpyx_file @@ -48,31 +47,40 @@ def run_test(self, nb_name: str, verbose=0) -> int: content = self.post_process(exporter.from_filename(nb_name)[0]) bcontent = content.encode("utf-8") - with tempfile.NamedTemporaryFile(suffix=".py") as tmp: - self.assertEndsWith(tmp.name, ".py") - tmp.write(bcontent) - tmp.seek(0) + tmp = "temp_notebooks" + if not os.path.exists(tmp): + os.mkdir(tmp) + # with tempfile.NamedTemporaryFile(suffix=".py") as tmp: + name = os.path.splitext(os.path.split(nb_name)[-1])[0] + if os.path.exists(tmp): + tmp_name = os.path.join(tmp, name + ".py") + self.assertEndsWith(tmp_name, ".py") + with open(tmp_name, "wb") as f: + f.write(bcontent) - fold, name = os.path.split(tmp.name) + fold, name = os.path.split(tmp_name) try: mod = import_source(fold, os.path.splitext(name)[0]) assert mod is not None except (FileNotFoundError, RuntimeError): # try another way - cmds = [sys.executable, "-u", name] + cmds = [sys.executable, "-u", tmp_name] p = subprocess.Popen( cmds, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) res = p.communicate() out, err = res st = err.decode("ascii", errors="ignore") + if "No such file or directory" in st: + raise FileNotFoundError(st) if len(st) > 0 and "Traceback" in st: - raise AssertionError( + msg = ( f"Example {nb_name!r} (cmd: {cmds} - " f"exec_prefix={sys.exec_prefix!r}) " - f"failed due to\n{st}\n-----\n{content}" + f"failed due to\n{st}" ) + raise AssertionError(msg) dt = time.perf_counter() - perf if verbose: @@ -84,14 +92,23 @@ def add_test_methods_path(cls, fold): found = os.listdir(fold) last = os.path.split(fold)[-1] for name in found: - if "interro_rapide_" in name: - continue if name.endswith(".ipynb"): fullname = os.path.join(fold, name) + if "interro_rapide_" in name or ( + sys.platform == "win32" + and ("protobuf" in name or "td_note_2021" in name) + ): - def _test_(self, fullname=fullname): - res = self.run_test(fullname, verbose=VERBOSE) - self.assertIn(res, (-1, 1)) + @unittest.skip("notebook with questions or issues with windows") + def _test_(self, fullname=fullname): + res = self.run_test(fullname, verbose=VERBOSE) + self.assertIn(res, (-1, 1)) + + else: + + def _test_(self, fullname=fullname): + res = self.run_test(fullname, verbose=VERBOSE) + self.assertIn(res, (-1, 1)) lasts = last.replace("-", "_") names = os.path.splitext(name)[0].replace("-", "_") @@ -104,6 +121,7 @@ def add_test_methods(cls): os.path.join(this, "..", "..", "_doc", "practice", "exams"), os.path.join(this, "..", "..", "_doc", "practice", "py-base"), os.path.join(this, "..", "..", "_doc", "practice", "algo-base"), + os.path.join(this, "..", "..", "_doc", "practice", "algo-compose"), ] for fold in folds: cls.add_test_methods_path(os.path.normpath(fold)) diff --git a/appveyor.yml b/appveyor.yml index e8ed747f..bbbe8590 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,7 +15,7 @@ install: build: off test_script: - - "%PYTHON%\\python -m pytest _unittests" + - "%PYTHON%\\python -m pytest _unittests -v" after_test: - "%PYTHON%\\python -u setup.py bdist_wheel" diff --git a/requirements-dev.txt b/requirements-dev.txt index c06ffacd..435a2cd3 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -11,6 +11,7 @@ lifelines matplotlib mutagen # mp3 nbsphinx +networkx pandas pillow protobuf<4 diff --git a/teachpyx/practice/rues_paris.py b/teachpyx/practice/rues_paris.py index 720754d1..35d19b20 100644 --- a/teachpyx/practice/rues_paris.py +++ b/teachpyx/practice/rues_paris.py @@ -46,7 +46,9 @@ def get_data( :param dest: répertoire dans lequel télécharger les données :param timeout: timeout (seconds) when estabishing the connection :param verbose: affiche le progrès - :param keep: garde tout si la valeur est -1, sinon garde les 1000 premières rues + :param keep: garde tout si la valeur est -1, + sinon garde les 1000 premières rues, ces rues sont choisies + de façon à construire un ensemble connexe :return: liste d'arcs Un arc est défini par un 6-uple contenant les informations suivantes : @@ -88,22 +90,38 @@ def get_data( pairs[p] = True if keep is not None: - short_edges = edges[:keep] new_vertices = {} - edges = [] - for edge in short_edges: - p1, p2 = edge[-3:-1] - if p1 not in new_vertices: - new_vertices[p1] = len(new_vertices) - if p2 not in new_vertices: - new_vertices[p2] = len(new_vertices) - i1, i2 = new_vertices[p1], new_vertices[p2] - edges.append((i1, i2, edge[2], p1, p2, edge[-1])) + already_added = set() + new_edges = [] + for _ in range(0, int(keep**0.5) + 1): + for edge in edges: + if edge[:2] in already_added: + continue + p1, p2 = edge[-3:-1] + if ( + len(new_vertices) > 0 + and p1 not in new_vertices + and p2 not in new_vertices + ): + # On considère des rues connectées à des rues déjà sélectionnées. + continue + if p1 not in new_vertices: + new_vertices[p1] = len(new_vertices) + if p2 not in new_vertices: + new_vertices[p2] = len(new_vertices) + i1, i2 = new_vertices[p1], new_vertices[p2] + new_edges.append((i1, i2, edge[2], p1, p2, edge[-1])) + already_added.add(edge[:2]) + if len(new_edges) >= keep: + break + if len(new_edges) >= keep: + break items = [(v, i) for i, v in new_vertices.items()] items.sort() vertices = [_[1] for _ in items] + edges = new_edges - return edges + return edges, vertices def graph_degree( @@ -321,7 +339,7 @@ def eulerien_extension( totali = 0 while len(allow) > 0: if verbose: - print(f"------- nb odd vertices {len(allow)} iteration {totali}") + print(f"------- # odd vertices {len(allow)} iteration {totali}") allowset = set(allow) init = bellman( edges, @@ -384,9 +402,9 @@ def euler_path( edges_from = {} somme = 0 for e in edges: - k = e[:2] - v = e[-1] - alledges[k] = ["street"] + list(k + (v,)) + k = e[:2] # indices des noeuds + v = e[-1] # distance + alledges[k] = ["street", *k, v] a, b = k alledges[b, a] = alledges[a, b] if a not in edges_from: @@ -398,10 +416,10 @@ def euler_path( somme += v for e in added_edges: # il ne faut pas enlever les doublons - k = e[:2] - v = e[-1] + k = e[:2] # indices ds noeuds + v = e[-1] # distance a, b = k - alledges[k] = ["jump"] + list(k + (v,)) + alledges[k] = ["jump", *k, v] alledges[b, a] = alledges[a, b] if a not in edges_from: edges_from[a] = [] @@ -411,39 +429,43 @@ def euler_path( edges_from[b].append(alledges[a, b]) somme += v - degre = {} - for a, v in edges_from.items(): - t = len(v) - degre[t] = degre.get(t, 0) + 1 - - two = [a for a, v in edges_from.items() if len(v) == 2] + # les noeuds de degré impair odd = [a for a, v in edges_from.items() if len(v) % 2 == 1] if len(odd) > 0: - raise ValueError("some vertices have an odd degree") + raise ValueError("Some vertices have an odd degree.") + # les noeuds de degré 2, on les traverse qu'une fois + two = [a for a, v in edges_from.items() if len(v) == 2] begin = two[0] # checking for v, le in edges_from.items(): + # v est une extrémité for e in le: + # to est l'autre extrémité to = e[1] if v != e[1] else e[2] if to not in edges_from: - raise RuntimeError( - "unable to find vertex {0} for edge {0},{1}".format(to, v) - ) + raise RuntimeError(f"Unable to find vertex {to} for edge {to},{v}") if to == v: - raise RuntimeError(f"circular edge {to}") + raise RuntimeError(f"Circular edge {to}") - # loop + # On sait qu'il existe un chemin. La fonction explore les arcs + # jusqu'à revenir à son point de départ. Elle supprime les arcs + # utilisées de edges_from. path = _explore_path(edges_from, begin) - for p in path: - if len(p) == 0: - raise RuntimeError("this exception should not happen") + + # Il faut s'assurer que le chemin ne contient pas de boucles non visitées. while len(edges_from) > 0: + # Il reste des arcs non visités. On cherche le premier + # arc connecté au chemin existant. start = None for i, p in enumerate(path): if p[0] in edges_from: start = i, p break + if start is None: + raise RuntimeError( + f"start should not be None\npath={path}\nedges_from={edges_from}" + ) sub = _explore_path(edges_from, start[1][0]) i = start[0] path[i : i + 1] = path[i : i + 1] + sub