From 9e97e80d92494362f2cb86b36208c2d97d5e54da Mon Sep 17 00:00:00 2001 From: govin08 Date: Tue, 16 Apr 2024 08:58:24 +0900 Subject: [PATCH] In make_match5, simplify the way to calculate cosine similarity. It should be equivalent to the former. --- .../0415_matching.ipynb | 1278 +++-------------- .../table_definition_v0.8.5.xlsx | Bin 74718 -> 74770 bytes .../preprocess_daily.cpython-38.pyc | Bin 26441 -> 26452 bytes Scripts/preprocess_daily.py | 15 +- 4 files changed, 236 insertions(+), 1057 deletions(-) diff --git a/Analysis/0411_unp-left_p-right-uturn/0415_matching.ipynb b/Analysis/0411_unp-left_p-right-uturn/0415_matching.ipynb index 083bef383..fbb8e15b6 100644 --- a/Analysis/0411_unp-left_p-right-uturn/0415_matching.ipynb +++ b/Analysis/0411_unp-left_p-right-uturn/0415_matching.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -17,7 +17,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -46,7 +46,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -285,7 +285,7 @@ "[108 rows x 12 columns]" ] }, - "execution_count": 3, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -296,14 +296,7 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 22, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -328,1073 +321,289 @@ " \n", " \n", " inter_no\n", - " node_id\n", + " phase_no\n", + " ring_type\n", " move_no\n", - " inc_angle\n", - " out_angle\n", " inc_dire\n", " out_dire\n", + " inc_angle\n", + " out_angle\n", " inc_edge_id\n", " out_edge_id\n", + " node_id\n", + " turn_type\n", " \n", " \n", " \n", " \n", - " 0\n", - " 175\n", - " i0\n", - " 8\n", - " 179\n", - " 000\n", - " 남\n", - " 북\n", - " -571542797_02\n", - " 571500487_01\n", - " \n", - " \n", - " 1\n", - " 175\n", - " i0\n", - " 4\n", - " 001\n", - " 180\n", - " 북\n", - " 남\n", - " -571500487_01\n", - " 571542797_02\n", - " \n", - " \n", - " 2\n", - " 175\n", - " i0\n", - " 7\n", - " 001\n", - " 090\n", - " 북\n", - " 동\n", - " -571500487_01\n", - " 571545870_01\n", - " \n", - " \n", - " 3\n", - " 175\n", - " i0\n", - " 3\n", - " 179\n", - " 270\n", - " 남\n", - " 서\n", - " -571542797_02\n", - " 571510153_01\n", - " \n", - " \n", - " 4\n", - " 175\n", - " i0\n", + " 80\n", + " 202\n", + " 1\n", + " A\n", " 6\n", - " 090\n", - " 270\n", " 동\n", " 서\n", - " 571545870_02\n", - " 571510153_01\n", - " \n", - " \n", - " 5\n", - " 175\n", - " i0\n", - " 1\n", " 090\n", - " 180\n", - " 동\n", - " 남\n", - " 571545870_02\n", - " 571542797_02\n", - " \n", - " \n", - " 6\n", - " 175\n", - " i0\n", - " 5\n", " 270\n", - " 000\n", - " 서\n", - " 북\n", - " 571510153_02\n", - " 571500487_01\n", + " 571510152_02\n", + " -571510152_01\n", + " i9\n", + " straight\n", " \n", " \n", - " 7\n", - " 175\n", - " i0\n", + " 81\n", + " 202\n", + " 1\n", + " B\n", " 2\n", - " 270\n", - " 090\n", " 서\n", " 동\n", - " 571510153_02\n", - " 571545870_01\n", + " 270\n", + " 090\n", + " 571510152_01\n", + " 571510152_01.65\n", + " i9\n", + " straight\n", " \n", " \n", "\n", "" ], "text/plain": [ - " inter_no node_id move_no inc_angle out_angle inc_dire out_dire \\\n", - "0 175 i0 8 179 000 남 북 \n", - "1 175 i0 4 001 180 북 남 \n", - "2 175 i0 7 001 090 북 동 \n", - "3 175 i0 3 179 270 남 서 \n", - "4 175 i0 6 090 270 동 서 \n", - "5 175 i0 1 090 180 동 남 \n", - "6 175 i0 5 270 000 서 북 \n", - "7 175 i0 2 270 090 서 동 \n", + " inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n", + "80 202 1 A 6 동 서 090 \n", + "81 202 1 B 2 서 동 270 \n", "\n", - " inc_edge_id out_edge_id \n", - "0 -571542797_02 571500487_01 \n", - "1 -571500487_01 571542797_02 \n", - "2 -571500487_01 571545870_01 \n", - "3 -571542797_02 571510153_01 \n", - "4 571545870_02 571510153_01 \n", - "5 571545870_02 571542797_02 \n", - "6 571510153_02 571500487_01 \n", - "7 571510153_02 571545870_01 " + " out_angle inc_edge_id out_edge_id node_id turn_type \n", + "80 270 571510152_02 -571510152_01 i9 straight \n", + "81 090 571510152_01 571510152_01.65 i9 straight " ] }, + "execution_count": 10, "metadata": {}, - "output_type": "display_data" - }, + "output_type": "execute_result" + } + ], + "source": [ + "self.match6[self.match6.node_id==parent_id].dropna(subset=['inc_edge_id', 'out_edge_id'])" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "self.match7 = self.match6.copy()\n", + "self.match7 = self.match7[['inter_no', 'node_id', 'move_no', 'inc_angle', 'out_angle', 'inc_dire', 'out_dire', 'inc_edge_id', 'out_edge_id']]\n", + "# parent_id = self.parent_ids[1]\n", + "\n", + "for parent_id in self.parent_ids:\n", + " m7 = self.match7[self.match7.node_id==parent_id].dropna(subset=['inc_edge_id', 'out_edge_id'])\n", + " m6 = self.match6[self.match6.node_id==parent_id].dropna(subset=['inc_edge_id', 'out_edge_id'])\n", + " inc_angles = [int(angle) for angle in np.unique(m7.inc_angle.values)]\n", + " out_angles = [int(angle) for angle in np.unique(m7.out_angle.values)]\n", + " # print(parent_id)\n", + " # display(m6)\n", + " # display(m7)\n", + " # print(inc_angles)\n", + " # print(out_angles)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# (1) 가능한 (진입방향, 진출방향) 목록 \n", + "flows = self.nema.dropna().apply(lambda row: (row['inc_dire'], row['out_dire']), axis=1).tolist()\n", + "# (2) 각 교차로별 방향 목록 : pdires (possible directions)\n", + "pdires = {}\n", + "for node_id in self.parent_ids:\n", + " dires = self.match7[self.match7.node_id == node_id][['inc_dire','out_dire']].values.flatten()\n", + " dires = {dire for dire in dires if type(dire)==str}\n", + " pdires[node_id] = dires\n", + "# (3) 각 (교차로, 진입방향) 별 진입id 목록 : inc2id (incoming direction to incoming edge_id)\n", + "inc2id = {}\n", + "for node_id in self.parent_ids:\n", + " for inc_dire in pdires[node_id]:\n", + " df = self.match7[(self.match7.node_id==node_id) & (self.match7.inc_dire==inc_dire)]\n", + " inc2id[(node_id, inc_dire)] = df.inc_edge_id.iloc[0]\n", + "# (4) 각 (교차로, 진출방향) 별 진출id 목록 : out2id (outgoing direction to outgoing edge_id)\n", + "out2id = {}\n", + "for node_id in self.parent_ids:\n", + " for out_dire in pdires[node_id]:\n", + " df = self.match7[(self.match7.node_id==node_id) & (self.match7.out_dire==out_dire)]\n", + " out2id[(node_id, out_dire)] = df.out_edge_id.iloc[0]\n", + "# (5) 각 교차로별 가능한 (진입방향, 진출방향) 목록 : pflow (possible flows)\n", + "pflow = {}\n", + "for node_id in self.parent_ids:\n", + " pflow[node_id] = [flow for flow in flows if set(flow).issubset(pdires[node_id])]" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[1, 90, 179, 270]\n", - "[0, 90, 180, 270]\n" + "i0\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", - " \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", - "
inter_nonode_idmove_noinc_angleout_angleinc_direout_direinc_edge_idout_edge_id
16176i18180356-571542810_01-571542797_02.99
17176i14359180571542797_02.99571542810_01
18176i18180356-571542810_01-571542797_02.99
19176i13180270-571542810_01571543469_01
20176i15270356571543469_02-571542797_02.99
\n", - "
" - ], "text/plain": [ - " inter_no node_id move_no inc_angle out_angle inc_dire out_dire \\\n", - "16 176 i1 8 180 356 남 북 \n", - "17 176 i1 4 359 180 북 남 \n", - "18 176 i1 8 180 356 남 북 \n", - "19 176 i1 3 180 270 남 서 \n", - "20 176 i1 5 270 356 서 북 \n", - "\n", - " inc_edge_id out_edge_id \n", - "16 -571542810_01 -571542797_02.99 \n", - "17 571542797_02.99 571542810_01 \n", - "18 -571542810_01 -571542797_02.99 \n", - "19 -571542810_01 571543469_01 \n", - "20 571543469_02 -571542797_02.99 " + "{1: '571545870_02',\n", + " 2: '571510153_02',\n", + " 3: '-571542797_02',\n", + " 4: '-571500487_01',\n", + " 5: '571510153_02',\n", + " 6: '571545870_02',\n", + " 7: '-571500487_01',\n", + " 8: '-571542797_02',\n", + " 9: '-571500487_01',\n", + " 10: '571510153_02',\n", + " 11: '571545870_02',\n", + " 12: '-571500487_01',\n", + " 13: '571510153_02',\n", + " 14: '-571500487_01',\n", + " 15: '-571500487_01',\n", + " 16: '571545870_02'}" ] }, "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[180, 270, 359]\n", - "[180, 270, 356]\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", - " \n", - "
inter_nonode_idmove_noinc_angleout_angleinc_direout_direinc_edge_idout_edge_id
22177i28179000-571542809_01571542811_01
23177i24000180571542811_02571542809_01
\n", - "
" - ], - "text/plain": [ - " inter_no node_id move_no inc_angle out_angle inc_dire out_dire \\\n", - "22 177 i2 8 179 000 남 북 \n", - "23 177 i2 4 000 180 북 남 \n", - "\n", - " inc_edge_id out_edge_id \n", - "22 -571542809_01 571542811_01 \n", - "23 571542811_02 571542809_01 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 179]\n", - "[0, 180]\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", - " \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", - "
inter_nonode_idmove_noinc_angleout_angleinc_direout_direinc_edge_idout_edge_id
38178i38180000571540304_02571556450_01
39178i34000180571556450_02571540304_01
40178i37000090571556450_02571500475_01
41178i33180270571540304_02571540303_01
42178i35270000571540303_02.21571556450_01
43178i32270090571540303_02.21571500475_01
44178i36090270-571500475_01571540303_01
45178i31090180-571500475_01571540304_01
\n", - "
" - ], - "text/plain": [ - " inter_no node_id move_no inc_angle out_angle inc_dire out_dire \\\n", - "38 178 i3 8 180 000 남 북 \n", - "39 178 i3 4 000 180 북 남 \n", - "40 178 i3 7 000 090 북 동 \n", - "41 178 i3 3 180 270 남 서 \n", - "42 178 i3 5 270 000 서 북 \n", - "43 178 i3 2 270 090 서 동 \n", - "44 178 i3 6 090 270 동 서 \n", - "45 178 i3 1 090 180 동 남 \n", - "\n", - " inc_edge_id out_edge_id \n", - "38 571540304_02 571556450_01 \n", - "39 571556450_02 571540304_01 \n", - "40 571556450_02 571500475_01 \n", - "41 571540304_02 571540303_01 \n", - "42 571540303_02.21 571556450_01 \n", - "43 571540303_02.21 571500475_01 \n", - "44 -571500475_01 571540303_01 \n", - "45 -571500475_01 571540304_01 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 90, 180, 270]\n", - "[0, 90, 180, 270]\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", - " \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", - "
inter_nonode_idmove_noinc_angleout_angleinc_direout_direinc_edge_idout_edge_id
92210i66090270-571542115_01571500535_01
94210i65270000571500535_02.18571511538_01
95210i62270090571500535_02.18571542115_01
96210i67000090571511538_02.121571542115_01
97210i64000180571511538_02.121571500585_01
98210i68180000571500585_02571511538_01
99210i63180270571500585_02571500535_01
\n", - "
" - ], - "text/plain": [ - " inter_no node_id move_no inc_angle out_angle inc_dire out_dire \\\n", - "92 210 i6 6 090 270 동 서 \n", - "94 210 i6 5 270 000 서 북 \n", - "95 210 i6 2 270 090 서 동 \n", - "96 210 i6 7 000 090 북 동 \n", - "97 210 i6 4 000 180 북 남 \n", - "98 210 i6 8 180 000 남 북 \n", - "99 210 i6 3 180 270 남 서 \n", - "\n", - " inc_edge_id out_edge_id \n", - "92 -571542115_01 571500535_01 \n", - "94 571500535_02.18 571511538_01 \n", - "95 571500535_02.18 571542115_01 \n", - "96 571511538_02.121 571542115_01 \n", - "97 571511538_02.121 571500585_01 \n", - "98 571500585_02 571511538_01 \n", - "99 571500585_02 571500535_01 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 90, 180, 270]\n", - "[0, 90, 180, 270]\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", - " \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", - "
inter_nonode_idmove_noinc_angleout_angleinc_direout_direinc_edge_idout_edge_id
84206i78180000-571511538_02571542073_02
85206i74000180571542073_01571511538_02
88206i78180000-571511538_02571542073_02
89206i74000180571542073_01571511538_02
\n", - "
" - ], - "text/plain": [ - " inter_no node_id move_no inc_angle out_angle inc_dire out_dire \\\n", - "84 206 i7 8 180 000 남 북 \n", - "85 206 i7 4 000 180 북 남 \n", - "88 206 i7 8 180 000 남 북 \n", - "89 206 i7 4 000 180 북 남 \n", - "\n", - " inc_edge_id out_edge_id \n", - "84 -571511538_02 571542073_02 \n", - "85 571542073_01 571511538_02 \n", - "88 -571511538_02 571542073_02 \n", - "89 571542073_01 571511538_02 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 180]\n", - "[0, 180]\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", - " \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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
inter_nonode_idmove_noinc_angleout_angleinc_direout_direinc_edge_idout_edge_id
70201i88180000-571500569_01571500583_02
71201i83180270-571500569_01571500618_01
72201i85270000571500618_02571500583_02
73201i82270090571500618_02571500617_01
74201i86090270571500617_02571500618_01
75201i82270090571500618_02571500617_01
76201i86090270571500617_02571500618_01
77201i81090180571500617_02571500569_01
78201i87000090571500583_01571500617_01
79201i84000180571500583_01571500569_01
\n", - "
" - ], - "text/plain": [ - " inter_no node_id move_no inc_angle out_angle inc_dire out_dire \\\n", - "70 201 i8 8 180 000 남 북 \n", - "71 201 i8 3 180 270 남 서 \n", - "72 201 i8 5 270 000 서 북 \n", - "73 201 i8 2 270 090 서 동 \n", - "74 201 i8 6 090 270 동 서 \n", - "75 201 i8 2 270 090 서 동 \n", - "76 201 i8 6 090 270 동 서 \n", - "77 201 i8 1 090 180 동 남 \n", - "78 201 i8 7 000 090 북 동 \n", - "79 201 i8 4 000 180 북 남 \n", - "\n", - " inc_edge_id out_edge_id \n", - "70 -571500569_01 571500583_02 \n", - "71 -571500569_01 571500618_01 \n", - "72 571500618_02 571500583_02 \n", - "73 571500618_02 571500617_01 \n", - "74 571500617_02 571500618_01 \n", - "75 571500618_02 571500617_01 \n", - "76 571500617_02 571500618_01 \n", - "77 571500617_02 571500569_01 \n", - "78 571500583_01 571500617_01 \n", - "79 571500583_01 571500569_01 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 90, 180, 270]\n", - "[0, 90, 180, 270]\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", - " \n", - "
inter_nonode_idmove_noinc_angleout_angleinc_direout_direinc_edge_idout_edge_id
80202i96090270571510152_02-571510152_01
81202i92270090571510152_01571510152_01.65
\n", - "
" - ], "text/plain": [ - " inter_no node_id move_no inc_angle out_angle inc_dire out_dire \\\n", - "80 202 i9 6 090 270 동 서 \n", - "81 202 i9 2 270 090 서 동 \n", - "\n", - " inc_edge_id out_edge_id \n", - "80 571510152_02 -571510152_01 \n", - "81 571510152_01 571510152_01.65 " + "{1: '571542797_02',\n", + " 2: '571545870_01',\n", + " 3: '571510153_01',\n", + " 4: '571542797_02',\n", + " 5: '571500487_01',\n", + " 6: '571510153_01',\n", + " 7: '571545870_01',\n", + " 8: '571500487_01',\n", + " 9: '571545870_01',\n", + " 10: '571500487_01',\n", + " 11: '571510153_01',\n", + " 12: '571545870_01',\n", + " 13: '571500487_01',\n", + " 14: '571510153_01',\n", + " 15: '571500487_01',\n", + " 16: '571500487_01'}" ] }, "metadata": {}, "output_type": "display_data" - }, + } + ], + "source": [ + "p2am = dict() # parent id to a list of aligned movement numbers\n", + "for parent_id in self.parent_ids:\n", + " pnema = self.nema[self.nema.inc_dire.isin(pdires[parent_id]) & self.nema.out_dire.isin(pdires[parent_id])]\n", + " p2am[parent_id] = list(pnema.move_no)\n", + "\n", + "dire2vec = dict() # direction to unit vector\n", + "theta = np.pi/2\n", + "for dire in self.dires:\n", + " dire2vec[dire] = np.array([np.cos(theta), np.sin(theta)])\n", + " theta -= np.pi/4\n", + "\n", + "plain_move_nos = list(range(1,17)) # plain movement numbers\n", + "\n", + "p2pm2inc_edge_id = dict() # parent id to pm2inc_edge_id\n", + "p2pm2out_edge_id = dict() # parent id to pm2out_edge_id\n", + "for parent_id in self.parent_ids:\n", + " pm2inc_edge_id = dict() # plain movement to incoming edge id\n", + " pm2out_edge_id = dict() # plain movement to outgoing edge id\n", + " for pm in plain_move_nos:\n", + " row = self.nema[self.nema.move_no==pm].iloc[0]\n", + " inc_dire = row.inc_dire\n", + " out_dire = row.out_dire\n", + " inc_vec_true = dire2vec[inc_dire]\n", + " out_vec_true = dire2vec[out_dire]\n", + "\n", + " node = self.net.getNode(parent_id)\n", + " # 교차로의 모든 (from / to) edges\n", + " inc_edges = [edge for edge in node.getIncoming() if edge.getFunction() == ''] # incoming edges\n", + " out_edges = [edge for edge in node.getOutgoing() if edge.getFunction() == ''] # outgoing edges\n", + " # 교차로의 모든 (from / to) unit vector\n", + " inc_vecs = []\n", + " for inc_edge in inc_edges:\n", + " start = inc_edge.getShape()[-1]\n", + " end = inc_edge.getShape()[-2]\n", + " inc_vec = np.array(end) - np.array(start)\n", + " inc_vec = inc_vec / (inc_vec ** 2).sum() ** 0.5\n", + " inc_vecs.append(inc_vec)\n", + " out_vecs = []\n", + " for out_edge in out_edges:\n", + " start = out_edge.getShape()[0]\n", + " end = out_edge.getShape()[1]\n", + " out_vec = np.array(end) - np.array(start)\n", + " out_vec = out_vec / (out_vec ** 2).sum() ** 0.5\n", + " out_vecs.append(out_vec)\n", + " # 매칭 엣지 반환\n", + " inc_index = np.array([np.dot(inc_vec, inc_vec_true) for inc_vec in inc_vecs]).argmax()\n", + " out_index = np.array([np.dot(out_vec, out_vec_true) for out_vec in out_vecs]).argmax()\n", + " inc_edge_id = inc_edges[inc_index].getID()\n", + " out_edge_id = out_edges[out_index].getID()\n", + " pm2inc_edge_id[pm] = inc_edge_id\n", + " pm2out_edge_id[pm] = out_edge_id\n", + " p2pm2inc_edge_id[parent_id] = pm2inc_edge_id\n", + " p2pm2out_edge_id[parent_id] = pm2out_edge_id\n", + "\n", + "parent_id = self.parent_ids[0]\n", + "print(parent_id)\n", + "display(p2pm2inc_edge_id[parent_id])\n", + "display(p2pm2out_edge_id[parent_id])" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "plain_move_nos = list(range(1,17)) # plain movement numbers\n", + "p2pm2inc_edge_id = dict() # parent id to pm2inc_edge_id\n", + "p2pm2out_edge_id = dict() # parent id to pm2out_edge_id\n", + "for parent_id in self.parent_ids:\n", + " pm2inc_angle = dict()\n", + " for pm in plain_move_nos:\n", + " row = self.nema[self.nema.move_no==pm].iloc[0]\n", + " # inc_dire = row.\n", + "# plain movement number(1-16) to (inc_angle, out_angle)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[90, 270]\n", - "[90, 270]\n" + "[('동', '남'), ('서', '동'), ('남', '서'), ('북', '남'), ('서', '북'), ('동', '서'), ('북', '동'), ('남', '북'), ('북동', '남동'), ('남서', '북동'), ('남동', '남서'), ('북서', '남동'), ('남서', '북서'), ('북동', '남서'), ('북서', '북동'), ('남동', '북서')]\n", + "{'i0': {'북', '남', '동', '서'}, 'i1': {'북', '남', '서'}, 'i2': {'북', '남'}, 'i3': {'북', '남', '동', '서'}, 'i6': {'북', '남', '동', '서'}, 'i7': {'북', '남'}, 'i8': {'북', '남', '서', '동'}, 'i9': {'동', '서'}}\n", + "{('i0', '북'): '-571500487_01', ('i0', '남'): '-571542797_02', ('i0', '동'): '571545870_02', ('i0', '서'): '571510153_02', ('i1', '북'): '571542797_02.99', ('i1', '남'): '-571542810_01', ('i1', '서'): '571543469_02', ('i2', '북'): '571542811_02', ('i2', '남'): '-571542809_01', ('i3', '북'): '571556450_02', ('i3', '남'): '571540304_02', ('i3', '동'): '-571500475_01', ('i3', '서'): '571540303_02.21', ('i6', '북'): '571511538_02.121', ('i6', '남'): '571500585_02', ('i6', '동'): '-571542115_01', ('i6', '서'): '571500535_02.18', ('i7', '북'): '571542073_01', ('i7', '남'): '-571511538_02', ('i8', '북'): '571500583_01', ('i8', '남'): '-571500569_01', ('i8', '서'): '571500618_02', ('i8', '동'): '571500617_02', ('i9', '동'): '571510152_02', ('i9', '서'): '571510152_01'}\n", + "{('i0', '북'): '571500487_01', ('i0', '남'): '571542797_02', ('i0', '동'): '571545870_01', ('i0', '서'): '571510153_01', ('i1', '북'): '-571542797_02.99', ('i1', '남'): '571542810_01', ('i1', '서'): '571543469_01', ('i2', '북'): '571542811_01', ('i2', '남'): '571542809_01', ('i3', '북'): '571556450_01', ('i3', '남'): '571540304_01', ('i3', '동'): '571500475_01', ('i3', '서'): '571540303_01', ('i6', '북'): '571511538_01', ('i6', '남'): '571500585_01', ('i6', '동'): '571542115_01', ('i6', '서'): '571500535_01', ('i7', '북'): '571542073_02', ('i7', '남'): '571511538_02', ('i8', '북'): '571500583_02', ('i8', '남'): '571500569_01', ('i8', '서'): '571500618_01', ('i8', '동'): '571500617_01', ('i9', '동'): '571510152_01.65', ('i9', '서'): '-571510152_01'}\n", + "{'i0': [('동', '남'), ('서', '동'), ('남', '서'), ('북', '남'), ('서', '북'), ('동', '서'), ('북', '동'), ('남', '북')], 'i1': [('남', '서'), ('북', '남'), ('서', '북'), ('남', '북')], 'i2': [('북', '남'), ('남', '북')], 'i3': [('동', '남'), ('서', '동'), ('남', '서'), ('북', '남'), ('서', '북'), ('동', '서'), ('북', '동'), ('남', '북')], 'i6': [('동', '남'), ('서', '동'), ('남', '서'), ('북', '남'), ('서', '북'), ('동', '서'), ('북', '동'), ('남', '북')], 'i7': [('북', '남'), ('남', '북')], 'i8': [('동', '남'), ('서', '동'), ('남', '서'), ('북', '남'), ('서', '북'), ('동', '서'), ('북', '동'), ('남', '북')], 'i9': [('서', '동'), ('동', '서')]}\n" ] } ], "source": [ - "self.match7 = self.match6.copy()\n", - "self.match7 = self.match7[['inter_no', 'node_id', 'move_no', 'inc_angle', 'out_angle', 'inc_dire', 'out_dire', 'inc_edge_id', 'out_edge_id']]\n", - "# parent_id = self.parent_ids[1]\n", - "\n", - "for parent_id in self.parent_ids:\n", - " m7 = self.match7[self.match7.node_id==parent_id].dropna(subset=['inc_edge_id', 'out_edge_id'])\n", - " display(m7)\n", - " inc_angles = [int(angle) for angle in np.unique(m7.inc_angle.values)]\n", - " out_angles = [int(angle) for angle in np.unique(m7.out_angle.values)]\n", - " print(inc_angles)\n", - " print(out_angles)" + "print(flows)\n", + "print(pdires)\n", + "print(inc2id)\n", + "print(out2id)\n", + "print(pflow)" ] }, { @@ -1404,33 +613,6 @@ "outputs": [], "source": [ "\n", - "# parent_ids = sorted(self.inter_node[self.inter_node.inter_type=='parent'].node_id.unique())\n", - "# child_ids = sorted(self.inter_node[self.inter_node.inter_type=='child'].node_id.unique())\n", - "\n", - "# (1) 가능한 (진입방향, 진출방향) 목록 \n", - "flows = self.nema.dropna().apply(lambda row: (row['inc_dire'], row['out_dire']), axis=1).tolist()\n", - "# (2) 각 교차로별 방향 목록 : pdires (possible directions)\n", - "pdires = {}\n", - "for node_id in self.parent_ids:\n", - " dires = self.match7[self.match7.node_id == node_id][['inc_dire','out_dire']].values.flatten()\n", - " dires = {dire for dire in dires if type(dire)==str}\n", - " pdires[node_id] = dires\n", - "# (3) 각 (교차로, 진입방향) 별 진입id 목록 : inc2id (incoming direction to incoming edge_id)\n", - "inc2id = {}\n", - "for node_id in self.parent_ids:\n", - " for inc_dire in pdires[node_id]:\n", - " df = self.match7[(self.match7.node_id==node_id) & (self.match7.inc_dire==inc_dire)]\n", - " inc2id[(node_id, inc_dire)] = df.inc_edge_id.iloc[0]\n", - "# (4) 각 (교차로, 진출방향) 별 진출id 목록 : out2id (outgoing direction to outgoing edge_id)\n", - "out2id = {}\n", - "for node_id in self.parent_ids:\n", - " for out_dire in pdires[node_id]:\n", - " df = self.match7[(self.match7.node_id==node_id) & (self.match7.out_dire==out_dire)]\n", - " out2id[(node_id, out_dire)] = df.out_edge_id.iloc[0]\n", - "# (5) 각 교차로별 가능한 (진입방향, 진출방향) 목록 : pflow (possible flows)\n", - "pflow = {}\n", - "for node_id in self.parent_ids:\n", - " pflow[node_id] = [flow for flow in flows if set(flow).issubset(pdires[node_id])]\n", "# (6) 가능한 이동류에 대하여 진입id, 진출id 배정 : matching\n", "dires_right = ['북', '북서', '서', '남서', '남', '남동', '동', '북동'] # ex (북, 서), (서, 남) 등은 우회전 flow\n", "self.matching = []\n", diff --git a/Documents/1127_table_definition/table_definition_v0.8.5.xlsx b/Documents/1127_table_definition/table_definition_v0.8.5.xlsx index 1001ed33e0682f110e3a0ac8ac4e53d76e0b0d27..81d07f1a4a2212e8319e805de3cdf4f53bc46e16 100644 GIT binary patch delta 28958 zcmZs?b9`mZvoAcclZiDGXUDe9iEZ0q0SAg2QIqJ2NL_&~mYVP!Km(qj1jPaLW}Zm)b@0eO2rXhpfXP@@Hzd>nkd4ANt_3hgM_GC4a^MwCgwBD56lPzo}8 zRhxmv)HqGJ%5)EOX?;~&+;)nJuBJ?+G_(YUY6aeJglso**vZCpGy+&Q<1iBpWFJJw zxdX~twiRt#w0h48plGx|<76qvq0ul-;0%J0#Srn5LQ=^ThUTj`TxIxjxywXLjAh(8 zs85Xq?-q*L#}xw~o?_vEAV`D&SW$x51%%DLcab~%#0X-0`?K`>yU)!Ikh4kiMfcG( z@XzNz-lMaMUWl)t%7YaSTLFQ&%k(j+0l_KO6X%-N1Bz=O{Hl@P-NU0M`RABdEQ0Xv zv=_V~`{*aaV6|?INFhKrlMqJVyQ;vrZCzrIl$g8o?8~ZneQV5tuE8ePY0zrSU51h- zhf!vOO6fVX+_Waz>H?hL&i0<16>PF*lc;i8RoHs@PgX!ehE=pP% z#Mt2o{EQHzp};k7r=cFryiV!#5rmO%H8e7_(QH5vfzv1k8aP>LpJLHypW=4orC#6SMU z7*Us8wl-S$%$8!01cKfm1NRFQ4mmwx?w#S=H+DXd1YL71AOo$NwN++{w(L4RTJSa5 zC7*D&t>TFJuL=w$*rnKF1ccv>zY^N3L{Ln_;4X_lp0oCkzyW||HPAmt``+Hs_Xh!E ztF*rY#FSOm4itwwcrZ%28GdEelw4f7%yH-o7#nvdmW?eXUMdew%WU^#aHrknt&tmp ziH}xLtgC580tad(St%2gSI{U!h^Z7!=KD?B5G(SP98RUwaYVbe2qp`sR|)mC@DlV@ zsIp4o60De#)`i5&6wLGfS`-7CR{Dl|W?6K&=24Hv-!5^o6?Mwy zUH^f4*i7;ujsO>E%;|IC7djozT>h2*!Nawfie|E)`;PT>(1?g zgbfbeCZI>T&Pnh1J8n|>AZ2NILvQ+CfyQc^q+%`7JN1jXluLqm=O3X~y7Vd8QRd7* zu3Oetwj+@J8iLZ0qz*M|5r7I`xzK^>R>ZE(+wQm{uJnglv5wAin;jccW0w+DoAf2- z{e!^iBEU>G8n_$6B6Ku+X&Dc&l=V9KaxN`fa z@J`JIUI%V1!K%u#(Ke#k<~*xStJ^e!;bric?pj_I+lAfYsy+#qt$qk)*3aQJpZR`- zEDpBFCe0rkwrJdyJoIl5a7a>Yq>)CSo=w|2)$-OMb+JH_9^8PucrHoacb3uYUA!6sj$Grw3rK zmCPYCRcIGPTX;6_#+TM2TQ+-EBoF~Mhcprz7tOk^59)OH_AEqN_;)TlPDW_0!0r;0 zKB~I`Dl#iMcP;W4C6X1men9`RI%ztPErX2JzgA!l16Sa8Zt0Y@j`dg1p822eb_1da ztmNeQGcYs1?rwUhsQ>VX!Qi6t{vQ0#cp0)pNLB{@kU>za4Eh0kX8(Rxoe7k_2$Poj zoqN*@`4_#EkL08F^ov(R54GL)mhaoQZ=aw4UMjWMfe!oZ@gGUiZ@%Wg?wSfZh|MIL zNjj{wPvWauqPN1++*7lnsL|cPo#&HnhASH}5^&AGb3= z>h8ZEz#6if1*A_d&d5g4`LAy(d(@kU{8MhgV7_?Oo z2?-X%)Fl%e$&CIad=8|BR!6BPI`E4f34Ex}gjd4rO#!|x>_4l`(B(`=Y@!el=3!SP zRQ%#oDVfC9?X#0foM2+}(VLt}Vz#LE5gX+pgcD2-tb}%#D~!w#yBadn@;DQ1Z8iE1 zw8THZ{nCpaLWJJ&?^NKFqumg-J+1L%+HcM~^rESNSjBZ1NQSad?9a4asUO}Ck8Hn7!KwU`!1!T7A1zUfys z!($k6=VbO=Q!FgU|Nk+>9CENp_;V=ll2yplaQgcjU+0DqGuJ3#BE1p%h#MlCu-i?| z`ex(v(1nnI*o>?(Z}-)6#_{x#b1~?CbEt`t(F-y1f9J41;3qj03Z=)C)@1 z=-`}YDj|e^1*^dG7>(laoXoVsTd<*G2T`?Lr@mxSf)PRuoO z`hNQ*ayn}MgOr4xQ!B+J(*zEW_FFms^P~oSqmkLrY=GeONn3--LAT|Do&5`s=<(1l zxxmPM_c{| zB#{tp4YrV`g6WVTPwOcu(eQb7B6JL>-{L61wb5{Zu8;sE`D3>mo@D3!m*(^jrL&%J ze-dg**BF$T9{Oi_g^Z;?$7gYcpn}UOdu_lf2QbM7D5kyN!3#Uph3BF+u?)fYaLr@D`Rb zj9Bst3_CN?i4~lzKKM7<6~p6JEgSfSI1xMd&|ed!m_B(8;g!1-NI+x=len01bA)0` z(j=em?+yfo=}d{5+7{*6Y069wCWJMu^jtST!#jSiT77dfD(AyfbvaCya32hH21&?n zi@%t9{;}bZLRCL6In}^1?ihP17}3TJFpoI*!>G=;*ik?luY;qP=IvyPnR|C2lK4$w z!ptQ|HlMJpee`T85)R~e8gwT;;4dooBvM{AJG4+{^^H3XhO@ygzeLZH8qv2o*av-xT58(xW8CMv`$tCz0@ zk{qff5gsRoa11=8yZWGdoT(C z>`P-SdmA*b(SZ&gAT6{+h=cXUy@b+5tjPdgvpg5+CVWS6*Y1s#VqMw5O7yyPg#wl$ zow7wg$*|(uRI~70bj%HU%LzGaI1lL{j_&LE#NwrJDicHhBlt}UqsN5tS9N6Y%pi;g zl8q~M$R8+j-6}AWFmc>E!Mw*RxD;k9I7ZT&zZJ_=1%Zf4l7+s?5opjF_I(Hq&G1Xj zxhaCF?tf@0%+9I~vP}OAvnY04oi1iZufBfPAe!0#^_r0&4&!bp9D_N`qAAz>R{@0Z z@?uOE(V@$Oos@zi-IR z=tPau9`&|py?D$ks@)*Z7RS&XSqS{5{{S`j|E#mHv290t}TRO#cEvIjMS{RIfla3TT1zDI?e9h|oUEiovkYROXO#-^+Sx|U1G#E&^#d}PIW8oyFQ9Q6yL zz;Y4f)#6GLTZw2fUO*m^$4FXWHpj0i2Fs=?FHg*1Q_5&zE*u8i_yf0gzimKfBBwg6 zSQn*NKA@eK1J^lRS@}62>J&!L($(8~imNxC_*aB3`8T8$DA%P(&=@il z;ewOltFS!e#2q$PA7fyhM`fQyHUJmc80hN5#^{StH2aqQIyBqX>g%c8X0dT`sbCh8Sw!=SoYu3gThGr>5GIyj=@)G zlvy51g+i*SM!PImI*X*E3~|EJWsU2)V+lcL58_IUoGfUdXCO&q(bh zmv9eTUqH*kt$VTi(7t39r#sy{g#42q)Tu+@;4QB(vKH{BL4&0cXD&i#)=c@lGK6W! zUX#+-3;=Yp^v!1GaRpWCC@BB*$lC<{7qL>uZDk)cUR1Mcgl3Zv@)8vB6ylj%r!jT~ z4(&a^kQUf=^914C^Dp2(+Mf<#O`jW=UPhdfSgW+Y2+n4z|08B2KCW!Ww8o?n7qq(K z60V4rSKklKUhIJ%rvJ!ThRNDZGI$O_w1QdH_KU8JlFbufCh~#V_5D9Fs_O^S;lM_W z!t~~8Q0{ABE>}>v4lk8KQEd1sa5gSh!9uo32Zm#|$q3-9{L6^UYzTsFa*a`G-GA#Y z;F4TQp}52QnU-MgO1rmjv%|N)!!^xFRbfMv)B48}0`_VtX00ctI+zO@5iEFAlY=Ct z4)iLOg3{~1acD1|W<%{?L@m32f5U8cMc& zw_^NM8RX%~AN$_Eb2>0Y(rk}|&!+VF&(F$G1iRE29jXyX_Jd9Z9wh!!-IN4*oH&vRIVyuzutz2>Hn5aqll9qHU%p=@H@B1m$siVc z`x*>}UQzEZjbc4ixdA>;|E0pYeJ%I3`#85wYG;<ULUj4Z{r%s$#=Ud?^5}&ZlSoJ z5=VwUuBvzwP+_vkny`uw2aN=;wEALlmqKIb@0E#7Y3S`)eR{gkfqwhbd@ANhM}kfQ zPCS8WQj&bknDoY|%3;HUxFlu@SQ(1wA>zC+w&puXW+{Xsnv~gNBST_V7L65uX(iMFxj1@)z=tD~NLnic!qOkgh@6b})gEgrb^Q~1m8Lw8+2Ko0g{9YacavZ&z25wO7 zi8@i5fPoZYH>GBH?}H73gaEd^C^$_jmwrbIQZ6y1*WJr5zOuObpfbOK8eFmNL=q}o zwR7o;u?{i~Ngqo~wS!Y#WkjzAQ82$Hc>s5|CZOSd2o@Z(>h1D~1!JiW2~j(y3l%sz zw7`?EwT#o+fl=1^gRm?DqZc2v@Mmks3!t8v#!RjnGp9CAhvTx+?wKeH9K9G7EL*^4 zI^C`s4?E%6nQ#0pci%-Caas@}*E}b?tY!NjYS&TMFFAyc;F|;iUwikf_|0bIQ~#?> zEA)0p6G_K4I!4rK>nFi+2%V{I+oNkRSLtEm7U+SvjoZ|~Tk&9^q3QNP^hy@urS=2FmNJ*5H@>#7m>;0MpXI`X)h}L`bf1 zCz6(!ESF7}a$HFuc2QgwKe#822}*Jed>4b$&foFbLqy$P2;&n*^GQoBz-?Be=YUEu zEv~*li*>8#5^HZgZe*R2UncE$_~UwW&eu~nzR#_a&XVIdt*BKl<ZFzATTKwOInUtz-(7lo$SpB<>z18xz1C= zVrzV+%l0WHwnRoJ#p|`n#uWvdgJJ_n55r}@4l3dlw%>H_2aKobVzdcv2l=!{nJ&+2 zSG9|L*d>w18SnP#Zrn1)?|__)_Z@bgB@$W1H2d+dwA2BgmR2X|li9CwOhmL>7i!Gk zZ@(s&?pX;Ws@hlLxU^ItU7ZpS&c@bgkY@F^s=qW$&~A~os2}@F3TO)sSBXt>N8k9vXMJu2@p_6MDTKwn_qsucv)h8 zHS^mnG(M3b%m65iB1vLNeOZL+$e2H0Ktc=%-YEB;yU2u6#U^`oi7GS$U$qLz;ALHX zsvE0b2RI9vUnTNb)gMQ9GCmB?epw)Zv7?9@n_h?@AYP(X;Ge5gNg?7y?m++%dr-W9 z1WHXk>YrRA9aaZ=@`S$EPssyUAG%LMG2Bj|jl(6T_DnB+fzq{$P>>H}QOMBXJj3wP2E0)nF3C)q}shX>NV7)FCpwoFof* z3GvP8+5`?Ip;^U%=pJGNP}K!n6jyT2xZUd< zG&kI0SbBfmH?XEF?q;Iv@FrpyL%X?o{`{`hH488Py_9x=wlyjxbVHkD@QjgA#v%1X z%Z#Ds7yaN@R;9fklI)Zc@1R935lZ2CtGir?(RSrK3s!Ji-9!pY*%1A6mNxhcu*+2_ zk|H4O!%KXN5=GN)WeqG^IkYEph1TBEy}^3`ZyClwhQUPsS}m{xQx{M)i^a9lIRKk? zX8V=R!S+0~+d|P67WqL`tHXh-q|gwF753XqmlpZKfe_F&gwr8Kmv=sl#Vb1hO}Vw7 z(Bh~bmd^Y{w>#Z;0T>pTvN8V~=thOUs=J~TXtF`ujUe9oNFG-*g2Bq7KqPBP)#Wx` zeJ?hIdNH!Q9)y7@mA)fiVf+O&+g$tq;DBeuVbPVBny{~u#D#GA=V)NuKKvFg5)F6L z&^#S-+)%mZ0tGMkPUi-#a{yQE8ER~a zMA>*;M#@S|m-`TfxN9TlHU%5aZum8uu`=8#Le`y|IToPWJIHk+!u`kZ$sjO83v%h| zO+;0Drwjj$p@^#M!CY6KpKjhmL9n?qXtuUFY#|y|d30Izu!n6CaPl{P;fC02Y?X*W z`sN*I{$=aEJn5e_i?rEz(i>0ad(|CbU(1f@%Ut1Z{+sYxo!gLwxS3ee9qZ(K0$g8u zJ&Sa@MV~GT*l4C?(&Nn?3Gt_A?mK3HgbfO1AZe6pbMvIPUM>u3yP}>4D-13Wv+0Pi zC_?fP>{{won7iVNaA)?}vK3;^Fu-v}0^R%%Ua__-Jh5YMP-Fj<<)H2VG4jJ$gcysW z4mUy6Gy|`62QJ0g?x0%-X_v>AM5JyQuFvO63*X<@n4y)P&qpVvuLD)N=u z;J!9)~tBN87&TC2^+y1H+l92V54sod5qgKo&2| zQSQ-gAQ;lKQ6yQN@jNO?g+0(eo#M{ix+Fzbf&r++n>m-cGeLln0s@l*rwK_Ck5rV} zB-i2P!EC=?64r4ASVkxsEdky=)sxuroh1{{{h}LV*G9afe&L_^TC1Am?iE36oAU)> z>%2he4QIAG8}cEV&9U{apgK656hLq|Icn6Y3mAc&tSqP_=*Cn#)+qoyear96ko^8#% zH_}qDW*^0V$r?Y|?>{kzi{ijFff}$R%J3dZF0=|$>FGXiN$|BK?ks-F+HGRR0$!e; zjQIsO*%ATj)#4RbUt#0F?6EkQ^5xuACEUdylA{?!M;S~Z@T<8$8{>fZZqZVL=FeAK zDh<8?*Eyv}aS(QM_44t`%tEW3e)+#3KLZ?7sAPC#Z-#0jLY@3`CiE(ujfU6$rS=%3QMMZy%JtGOeFV-Esejvz|j7|7?DlfeZvmu|C%Zd^9lYhuWkC@ zUaQg30{^5j&inE25ob_mU|Wyd6FMS?0OH$qCan$9&t8;(SkO zye&0%t)Tzm1pXK6^Y6~te`R)L5NKQSi-4L~ z(k-f_0=M`x81XeG#n1qZmIDLndDD>#=6}r-2+Z2Q0^_ZE&=_lHN^)SLCTdR6cKeXg zd>qFxWm)u}E|dBIMbx*3+!7fH@*;30nF>@2mxj95zQXgcwkxis#Xj&?4C_^rp_Y_* zlRkM1r`@fd`+~dV=k~z_l&^d0V=C`cIP-&G zb_%2ITqH4JK&2AHe|Oelnuw*BzbXE~#?eO%Z&e2@haHCy!^&Sfg%;xPUp%93|6!eX z=(0u(AD(8{XiVM_)KIe`RCL6fV-eq$?}{x2mcv*vWIQu&?zpPK@ia9p!0=`x(c9-p z@wFpF{V2uxV-4GWp|`#i%=kDI3U5WiTCH$z&8@X;+KQw%(#KZQ&7E zXMq_j?w(rXH7B@yLHx!X5}WP_ess-t|LoTRVBGJ%Wk~fMy#Bbp${3|)SBsi+!h1~F zez)ZWG+fTVpP3yvH1boy1+psD-`_ir_cQ^0Or9wc#=mOIv9BkAg0v^MbtlN#xvLf& zbi98~gunju=mQ=_;G9Ec70ZkZ9+W3mQw*5CHc8<`Z3ABQqy)EP$-aR|Z($^_4xR36 zYI#4bceg^}#}M;Hhb@Lc>?rX>C1oFE5!m3;3Y za73>e8Aj-pmLTuw>yYO|zEImy(q9B&QsT>#Xf1Z0-Y^=GdtmM4qPeKhuzh3Z#hMm4 z8`q_lz8tAa$dT)kGx3k6@pf99PZf1{(L#_t4yKeB+a0x;8K!T=TqGWe?l4!5JtPvok<_x3eityJiaSN+p?rIvfu!gp7D7Yu1-<<`bq+Crp> zeA|VA4#*p*gkR;K4&W1Z-S|*AqLP$U-l=7Y7B%@eX=!tkyCQsYO_zk&s>Xd22-H^# zx^GG|3gNeNhgF;GBh_An8(o1!n_Ln7YLp{UP}~G=qlJuV*~jf!&@V=L^BY+tb^csq zde~DLiK+e>e3@B3`-d#>_x4#36xcvOQFBy0#!dL0RlQ zSMfb!n$btLI4`0Co?QiL);22D&AVP%AFd<<%3WosG=j-!^gaPgsII_o3l3MR4uA1_ zIPn8PNdybRe|qRoIug@CZj?8%63anh2il_}FinMy`UViR)DkUoAv#5Ouf?+SGzn7k zG(vz=U~w#NioiU=_FK=A!&VhqUK_xHigdHlp^RlE)88IF-GhQ#n1J~bDRV#3%szyqT_A#&$^c0$d#Gy7h zj%|!w-UcVD0@W!64e_Y2dTffyF2)`igj_S3I|*+Kp+UB_sX@wpSLfVBbAb=l`sfgw zA=bSC2KtXa{cZ46cbUq+F=yPNIp}G;Cks`gDpwik;FX=LcoP)W2x3etw9!Nvj&a%~a|24ev%QmzLE{m^Yi zK(RBiW?^pSJjo zCPjGqp_dPtu*k_%svd>|EbT5J$3nBFCr5FolV#M4m=86iMIbi` z0V)l_!DGh?8^bI?poii!qx{fIvMh9j#bYM4{unE+?IBKG1Jy5#6c~nwa#R3z8||Sd z_t2Yr(x(JNSU@t%TM0DH(;C3FF!iV%2mI1H*nma}9$+4n4z%U(-PQ;89Kh6hV2ql!_zwl==tD z0>czJ9)mcT?I{!d&2>#tqygTkA_=4d{+yZV;@UDxf0Iyc9A?O*G9`b{mBEKAVxyI4 ze9z=mik8kyzY{bB9{)E;KyaDW7YMyK1u;u$*gSZuFlq^)bf7HkAzQJpUg)rGu%2S> zkmgsaS~7i|RsY2W6kjHJvN4JeyF4}SqHyxm4^%MJMg3LbGt<>Mxw59y6Qv|>FFlrt z-`qQ!rjr^j4#7y{BGi8>cNmH0E=4kwO&*cj)PNo4Okac;@~WqL~9!_%kG)+9vUvCQW0vbRcle`L-m1S#xST8 z4k-Ju^<7_QTc%z^^#amZh&a)8)MVmrWtE2>8c(gM(z2pHPJcNh&kbzV`v?DF3RnaI zcGJ;(rGT};dY<_22qS8&=;xu3VT%j(1EgRiGoD^h`7PA?2LI6at!1jbg23<@1ClT6 z#%%CQ8HL6RDV=Bu0n15BUghBpC4#1=|;?6MfoUg=77G0f{9I8mbBtx>aT!;y3 z*%vijDj_x1vVCd%xSfKa|Ayu7>9I85*W27_6qJEa}nR!;;vYkPe-XpkJhzOSy z&h9$&5H}Bo0m4XX$&8@X#3S>JTm>P6Y^~bv7-7PVqOd_09#wj5RhNG+B{9#4HyDz8btmFUK-Ryy?Xf+0(YBbw9Gp;M5hcfIao=8BAI zq$o1hOudH2V>H4+@#dq&k{_?wjW^P=m0x&Eh+F6`9!u~Wtb$2s%;J&Bmp-TmhC_&y zLWjwr8a@3G0hWq$!6wloQzoJ3p~wbGra~_zLgXPPb$`!mUp0D-Ibl46yeI?s3)_Yn zM}I_gqB-8}fd^d-zMqf+BGq09e}_Ws^TX#@GJ;NwMZ<@6qb#CBqfVT{5yAw*IJ^la zpTH5$VPbGY3Ksr+6j57{Zo!}Cp2JK+_f9+a?+%vS1BP~wOJKqT9`enL$W(?NNFXD_ z>4xGi4TbNJM6vc25z>Q^5Sh=+9}py}$&f&YiK83{`%@#s2oj-CyP?6%M-vfBeHot= z8d+9YFg0{A5h4ygDF!7jF_n(Up3Rpp0gSWT%{3N2t+Dh)UL$dy;p=Gy6NmEbVPjQ(IXxZFHVj zH-Cm4Q3v?s(*ih$9$>jGA~if~hbr`l`zs+5>W*d8M|7cT#{`q)XvA(3bFY@AoTm(D{$@TJ(Q+&w=R+2r z-4rKeL;IScqDpV!e82B;^e-%#j9rsa^(}NmoPrs(g*bH2VN>T`gT)3k-je;2iVUVe zns!BDlF)z&El?QZS1V#ItjP%nvTbti0b{$l#5(sQ@{~QTS z`r{^Q;(&h z6>kaCfn1!*huhshxQ(%E-9&L?%|vnS{IRV~+Srql@m@J#0&J~f*dKl<8KHN2 zi~dNTqbxh#T&OPKMd=ut!zkkb{$9TvDu)eUVIRJ`aVXSM@F6x$a*V@sR~ z(U{nXmQfxX>s9>w4RoRLkHtMy%5yLkJ0v(YtFaRgcCbt`oem`S`0a>EY$J$|*ahOP1C_P2ZoboMWDj-tjMpy~g0x{*-LU_PBl>(3RRr ze`)P`7sr)IGLn7kfmvdS;>q-JU&*Ro58@YD6fuhEm9J1n2MCmI)>Eve5r%aP_PIjI z(+sa>^1D{;@h~F9I#jASFzyVM0>x$VXFxs|q=+kg_%Ie)6azU<1Hs8@*3h5ZA-kT> z^L6~sKO=kR+n*leQ9f^Zm+W~b6f_xK+0dvw$be#Kl@F(GPJ%fdo8CUF!br7l4Fd8E zh;Ic5O*fbYMatc5IQj<6{exyOjtM4`@}eaFv`jvhAC8|(XhT2>c~Ai5SkSHP$T6^+ zt&0{QY3X81)ITU37#4DVU9O91$ zFkx7?U%qdi`d{Mj#jnGw4kgGPfmgs*ja5_TW7N(BtetKR{usXn#|+@8-AD%=Ku3wp zsDJxY+j9Z*As%MKR_RmOLm$=QMz16HE~t!#5UQn;fcgkX2dI8uJn$J+zOD3o#%TI& z-u2CdF5(&~gi2eeJ?Wc1N;PzX-4K_}KEq5!DoY#WukfhUAu7K~1`sL%zo-KcWqirC z5->7OZidOa#uZoDr#k%+Gfx}cS^vNHbaAc!SJb7aTT(>YhHatl%m zof)&(iem`&`%S)g4IEE26W96*#R2#9%k52?iH@$LPPp(A(Jn4O5fL&$&~M~bfhZsW z5kXkkV5~S1O01|!c@j2}ec>9GXM{^R3bKRhsG2g0yIFjfMFLNGVxh2tu)=(yTtYk` zC_R!Hd(o(HEVlSN@@g?sW}sFu$!?B#U^xnNgdj>>syLAuh6u`>d8>>hxb&%$?DXR4 zD=v`PrO|cKw*H|5;$uFnpe@afLiFUR5p+ zMXLStpgWH-=0)aGIf}JdN;&GOXi_PvSbjEIwdLpbA0Tct6x(kJD9692t4lJwSMiR0 z>M!R`(`1^zPh*}M>J}IgS039>y=;rqqTVEJB?r^kKI|g=oh^@25c;|+cXPEnBAzVW znpijbfn+=wi;Q^z)iX1_2h**svibJsXrm!Y=PdRO^hT^ZM+ikKcs zMU4EY6`*vPbg(T3x3!m9dS0%kq?Nd^XP(2@{)LA8}|PlTIz) z%w0d*Ox6PW^u9g7OLToaO{~;xujKRqeLkO_xBuRsJ-f0!PF2``zWq6G`CF4y{+^-Q z;{|k8q|v3b(eZwLZn^IHX!v-G>4~Y&Q2ner%IW#@0BrfJ>hXEMdtAYDefMy=|9hFz zH#wkpygBu;IaQ%^TZQ@Qrn|k}<$b^ZvCgIom>q%kV3JrSF&D2V97`slk#HedO(-ND z^CO8Nc@>T)i~k{UCl!xL<-R~Crj@X&+Xx8wsgdBRmH-`YDHtD2f*WroF&}Rv7SAKW z8UI844k#WkOX5y67DqBe;$DZ+0=VxnlZNDK1yF5}A)~DXk|0R1lB~uTl8!}_c*Z-C zaKs+Ok>rTq3C9ylWJ}x`klIKm*8*0-EWSPaUB|S#@hjg$SOvp0wukwVNeIOwe7!_q zE>TZBmQC_g0+Ga>WQ;7HJMKU{-ZZ{5lcZvu5Qsy2^FeV<8)dZvb<>gIV>r}0V@r4e zUsh2xQi%@vBwavnw`C1(0_oBW3+AE`r0$;M3L413fpzbv3<5qe+H->a6B z$k+6IETM0L=ctt0Ho{E>Z#9M)B+<4zU%$PcQgZn1YQaH|o^OlJ#`JqgjJ)l11iJ4s z3J^Tb3=qrXrb0g<-3ve6TW-zN&RVc;?DQU4osi&<#xDN7^11-LZ}@Mb{UJpGmxv@CLHRa#2vsaF4mYXX5WPy8CcZe6?@ z)Kxxwx{4C&De{bQN%>OS0CikC?$iQ^pGseZ8vhU?|3es}4y>t&thbj; zogJpoXR{_Vw&k|jQio{knu*#JDT=~WV;7fmScGc2&eB3&1lerSnwS4uM>Ll%f)K$< zy(XK#klr_anLqzz6{|`ayDQ*xCNyN{&MS=`qTT5s`g|0qQJ7vyB#$cm%aJ%+PO%-d zAp547vP`ux$sgh;KHsBX2{5}@=Yu&@{k0%nod#Vbskhg@P6g{XQB?2jQWFfp1bP1p z7#T!C7QM#(98GHnOnuBY{{(GJ4ynC=CsLLa0Wr(g={YnG0Gg}YUb6iTaL=l-OsrNc z)8;6PEB#_6cvjHVPN@Ork!xZqnMHXbo$c6IiTs;Fx{*GTA9L#=2lz#gWfv^d7Lc?e z;3p-n-FPN^O!qs3m=m?CbVg(XTj1_2(QOl=C@gtEXw7Ln3q8^;HaBsJS0n667p02- zbml;Xh8!4lK;XY9<0N@;1YQ)C{8$Rgxk>@7#o_z1-dYHi{ll+*<((7f+4X~bJ9Xk# z^nxJ5WV`Ry{`0}W2^^ubMGByb-48qxa&$vpt+0Gulxk3s8VKT}i}Bi9fX4ThjV+2> z;fuu`D(YvFla1+LPMtq8ysfcWWZEM%ep%-6^NP==9cg5lU6R7N?$tg=uTP!2?*uY# z*!(EAEhdp4$VZ51rnVrPqh4K;&VS>*9rVSq9f9R=SX^TV&fj{ZhnOZDv-0narVPeW zkRuOi=*5y#!lQ`z>F1O4J4Y$6f|tK*^70^5_m!}w)`!F$Ui_XpUHsj-3vSN#oW~bg zO?25rI_U2t>Ya?GMl8;`2`$c<>{9);l0Z}1j>&nj2S@rZ90o? z1??OD8v?fiaLsDviZFK?dAoF`I@S2eXgX_nxIJ}s=5T-AQ<)iaTQCQSk1Q`dBi^;TIKEJ*+J}sD|WLZeoJl>&*u8X(BW*F8xOv*~#JvTQ^C7 z8c$@Z9+}Q?Tlk=q@--s_lE~f)&1VpmcX8G{4JSb&d>zOi{%slswR-q(r!j3i#gQp9 zLi~qYLh@Kf^RNL@8hWV`aNn8Czczw20=+{nsL<>jN`dcsl%%4r0y~I(ZapY~^Bd=H z=*c+K#U*gTT#`aJHevN(h+X9H!Uv{6mSppUmrmy3e(5(lF{92nvXFp^?Y2 zp@{R|0(!=dAjSJt?6l3U;jPgK-FlDLH$=h5hG*j9o*8k~U5uJ;!5}Ww#~;VQbQZyj zNy<7Mg`>2-BYeszy3xkI_!$-~TTD6L6+Ng6u<;|DK^XiW;bBTI@z(|EG{+h~g$49P z4pR`?hv`(0#?>5r(+BAlI}vRvZh>qa2go|$W#RJ_b@@t1W%-E&>`ZIl?%G6Gu9<)4 zSne$G{;qF>wC~?4xU&bz6@%CVYE8sAp@|Atw*`lev%r-a{Ri&c9?h|8wktL436w`P zl)yb?4Y`z2brX(#s%0FidXnr{kfXKWtJXk^LBB8S3W3b;8AV>&(8I7*hw4Ky&hR+l zYIWi}#HMdqmeWXCmX0eBl!t4f(@uW*ysBMX#BL#+q%Q17c&o$bLOBQN31T zV*ZV|ID(5&@$U+PF#W-k;AaU-+!8}<#U$iORX$PGr&TJ{xi&( zC>==S+}kE+r(7=h{zd)PtZCzS6$5oa((NKLgQkBzj zZsk)H;gY}1QrT0GimPuHbdZ%QFV&fMXRJ$(J~>)T9BG)GWb!%M2~v)Q_QZND6_biA zR03*KkaFGWOXQU%OTK^&!-`_mT#F<`_8x$$GuBZMqR^sgS}T>RcTC$C%TmeYJuk90 zV)>gtu&AFmP0Codwd+Rm0`+Me&(23W7?!g8ej9cABI4Sy^!=t{;wv7e)um}t) z`NYAd{|(Xq8`+^)Ww=dOj@f!Wvil}cWMDa!4+u56rD<|OS*4r`+fZ+^+wS;ClaMZo z@OBbwnqb%HsoA*a`D5l(CFhKgB2ggUYrE#lNLuk#H)*|I3=a{``>v+ObaYA& zG_hjxvnmo|Q^ciS#g-wyry`9Iu8`%(>`E7Py26^IKXU$K`o4(Ls!Yu9RNM$+WXc{z zZIUW}M#@ATyC@P2tS*?ZCM3}#=4WB-X7#;*FNqt1M?LH?3MSjD=X~xz?yu)yzgtO| zCnKN_74Yg};KlntsifFo&0$R4esR4INzQtUkX zBlSZLR1pqkL71}RS)L)o`qmzCkHDk2S<%n+CU*};({nm4Rd9gje+yZdtN;FX(Wwc2 z{RI#4SKwA{)lW`u%s&a5sb4Uc$ zN@qKM?~jV9<44cAevniRSx#qtnj*NOAKKOO7ITy3U*z?;0fs~k!u??Ob2}z;RH=di zG{3hw%6)-mXv6FDiEU+S!ACYP!4+J`X?pJ{4K-gy0SFvJ#-`M`5D;AD|7t-PO1?0l z&6A@}bvYa6329bJ8HGe#8LZe(7boXxI!?5O6C5*96t;={vZi3nAoLuN7re);hN4L zaSj)Q-D4DfKI3FcVzY9_I+)4h8IG;6wo_EI0 zq~JMLn!nLx0eo~ZL%BA)DOgneb#3tD=o#LoK!d4WQcZh_yugOj;FE&B#2JL*hC~;n z+z7U>uzR30gqjqNqgHB`bYN4*{dR%zcxL`QM~E&bj;LxXGub+tW}k4zoc=YXGWouI zy8vRC*>^ge#8?=yIT|9+uabL?tH1R3q6Op^!MiDv1@I03PyV#5?J71TVJA`h@c40F zXuXZEUqbzH%2Kk!<-P*(LO(rYb+D#R%(ZNAednA>x@JarT>gCLTxWeBY9jp<{*`kP zV3Ho0y`O&S^w%8W;S*2u z?GuX3@XdSOdw)_g%O);zte}$(gy5w`v~(z!E0S%a>sVh3amvroOn;~dV12X z)c8BfLNWN`st`4GiOO&?4coSy@^YiLb9*&RhGk3WiCgVH7ypk?hl}7Z&+d%TH<%1- zHMZGhAVie6`J}k(vr*6z>v?jg?GHFPjhX)&m($*<%cBd)8|Y08DdthC0^|e!?TMm`R7c+@k@vU|hxr?dCJp@+Lt2PD>6^CH3aB`7wsI()*M@4&)nN zh)b7BO6K&YoIYKF61qQJ<%;$3hJhBh;Yfh~7enf1*T~Jts~cWxt-H4`DZF-#l4@tf zY~t44FPj&YoAbd}nk}(i(L{OBXJ0y@8$kou{3W)9*XoOUyhSP$dtYNph#0?yq`2T^ zencIv-)9%qmMwbf+S2agvVdPz;yWOEmP(^^Msa&OWNe&iSct9JsrTLbaaKv$o76y2 z8IrX9QFE&@!fGWutpCJ1)OJ~0={N%D%>LSH3B+r_*mB;tJRZEWpdFrXSf~X7snwRn zY{hTkLrd?FJ}FSi0Td17T3^@5%QgOz<{cv9`wKl|t#Vl$C$lkZUbQ=ifgdPQw~w{2 zfitRQLDgHM7ed0UQ>z(^Ut{iG>QPJogDZDBTpUj)?1I>!IR%~{ zJ~P0%#t^l%cniwHv{W-GAHLqCWvTvp#f^W<@tO(JX3``pXmrMe3fdV#XVsPQaZ_Cj zo_O}74K<-el->dIJtYI;d>scvYgWRpjs6w0(t&!0+kgQ&B)o1&9^=cRqe(9cOSuLJ zG^Sz|GCT$@5PN+O&2XE3B(2Yq0(kviWGu|^$e0G(%mRE zo!T@q|1*LzlgU2YQ+g*XD>?tw3FC)kW_AfAs+A%+!{?oU3=w+O{z0WRQkWW0!F!Hy znz)bws;8g7c(hN6;e4m*!TwO&`aS&w7#QV#}XN@_5)G!^o9 zEoe_`oLfKIfKiL`(+KBm2VJ(a1>ZN;?Xd+=UM=u*c=S?)O*oWt6Yg}rr;b!~V2-<6 z&T-nLlPABPtxlaPuiWnfSgUU@(nqWT=SSr)Qp`#35c~pF@jFU;S+a!9?<(Zw0vO^= z;gDVPygHxQb2LD$d_>heRR*G#7aos+`WgfN!AyIN1}QAZ=0K{zl9EM*bZJ75xe7^; z8nryCIt*L*ruCs8+N_t(>(04X>p`Q>z=mmB6AGTv8f@slF^!MSSs6ZJV%AgGC@2)g ziHAWeXK0ja6Po^2T3P^;-Mq3^^)x~6J_HNKq>QcAew}Q)um9?+N&S&=KWiN9=~s2{ zOoM~6kG9)(zqu}76t}Q0rkxGaAE;-)-;7R^IO^Cb)JwtS@i}wgB)&9*QPHBMhBn|X zbzb_ISuiflhX{N|zRI#vgFEP`oh^LhvaYa#1ie`kbbvhY*i~pn=vz}V!WWN&io;J` z6`PD%zjESY9@b|Qo*hJ1r3rJDQtz~dj~`-uM@B4Jn}tFhetWW7HkW|N_o@Q($-U@> zEfek&^HPZ-U}U5|u;e1>mI*f-E8nXTvV4DJ`t;5}CwS%xesmmP&g3G2wT|DpViz}U z&2TiQM=L4xe~u=n{qagd*l9@>>yv zBNr06arHljrQDc^6VN50k0Q0HF!HTFCOcsd_RcBI@b9mo2FQwqse@xjA7jarnYh|W z|Ew=BE|ksDQ90cH!*3EpDYp^Z)dc)+()f`{Xv$rupf3;%8UkFJBGu@J<=)u8C49GaQ3Tv@`h$m<-rnOX(~wRK#;pKZ8WEd^zAgJ;A9DoXbXmn2CKdT%4iJ+orWW2ad6R^Dk>!r zx;=#E^Gh={xoW4nkd`;6bhgzv7+8Z4`=s!&y_E(}>uQKqetj|Vu@+)RWO(nMv^aid zjUKu;@8^AN0pD9Bd$u%c(`jgHS8i7MSoLsf6LQ=tf<*3R_M%KRi-zrWxi{(5gmREo zxax)3tGSE$1%RF)Rq)JUav=5Jz=(ua0jI-gUbX?#bwWv|6;- zk6wQQihxlj1Pfo#7Fa7=hNZ#K8id7GrE`>3S1Tmezm~*wb4Bb4@%&1?x#gMv*gWL+ zj&Dhk4>L0A3_0AgfuD%m_;;rLi6!oC2HW*>v|54?WMmz00ur{PwCcM;U#6TA5c&Ry zybt446k{)An9H^ytQ*Nj>8(3vCJU2HTL%hQrmjq`^19ftWsqy$?Hb7qulER9yW40= zDF(bFvD%OYe|(ca%r`+s-N@T21V=d?ujw01d&+5?-}aPAU+|QMM;kFO0zBy4DT3_8 z-9Hm36Pk%#(2P1LTXJb3(0*)YA;v9MO&yGC`1v~;iJw5MWiVQ8an2)ue2i;q3n)eY zzz%h9>=|fG>8JbAj~BZc3wY&_yU4dRl(t$pWMtnfnh9q<2s8TbZY~zG#aMg9u$dLX zmab)D7Q#X6woXj5IhVs#62|4W!%PX|qD~FzPFlx;kEy#!RQp)NdBHvd8Fnqu+?Li9E`wh`205UZm3&O6c zobB?qOT_<_z&hH%BUp*}3`Wyj2$u92w+iP;N|v%v2Hsjnv|LWQ0XWwg(nv$fC?{P3 zoNEucSx8jLl+0>8KVkq`>pqzp?O~>u1mrb#)u>}{5D5}VjZjn8bzuGjdOfvYm@Aqx7dEmkvx(9@$K0ck3sGquK272TPdC58d;Rjz+km9a*`y; z_LIM-yHCCZvjyr2Ia{FFp7YFQj;efE;)gNrY41Pl2-JL6Nb72OSfVh64DqfDmCSzb z+Jbxi|Eu7+Vliqpnt^4-!4p+Y5pl%Cpu8X71{F2FTo<0$WAm*X9Qv`8u^g&1nJpBS}`h8)L^UYF&y z-kxjPrc}Uv{U+e&nxe6&P0)^L=z^FB)h^DGwD@PzVFCZ+zV=ZJ4LVS|-AOGNPbcr4 zm97*Yby^{jHCbXU4qw%Ys@N6u>qZ1j9hT=BLVXG`9 z;2JDWy4+tWLzpF(IA7=>V_S7>4EZl$s|&IO4}t7*l{q6vHre@R7(7ZN-uN4LhAr8ENI9 z@yG1h*!%9%VZ9}UR1_6czylctx^cb}O|!TBLyx)6TOFxL1d{wQf*MGjI|xVbj??~~ zG!I%336Y3>a*ZzQ)!aDVBwQ5ZOvp-D!Voh&mURXhLXm#eSBWKs7x+uW>Kn>H5H-}_ zW&}%+c5-|w4DBOS7+BqTrv&zsirfi{8}m&*tRD`R-uO&W)Z~(~6K#(jpK86k z9wu)btL8yq35XGosrmLk{htLDqR#d}?e?lKle!s(zSCLP2eRO(f@}aSTvWe3nTb?E zR(c+&qA!|}5`REhC;@N%gS79!-&1|m%Yx4rVSCK1x)yjI5xq1E*+w4pbRHoySLeMJ zhn<;O7_#LFOS-3gdR{X#ZKnv9&@5At>nC&ue@thSJo?KMh>WG(K5G0 zM$b$6h3F{-;29V? z%|fn$s_N)oDB%6=^>F`mrY868za|KF%3z0n7NnPyQDT0p^kxJK)UZ~=>j zMzAcf&BDs>6%x;G?iy=r$kWodQ_99EOn*7LN&tt6l&Ig#FBp2KI;1?l0utu^(wbn* zJ1ZnzbUK(26sZ^f<_LVOMFNIW2gzzvVQXVuPrJFRap@zrCr~12h`7&k%M{&QjPvhW+)aK=(?u5mG`9- zNM;(iwf;?uJa<7Y%)EQDIAuB#i13`SyI(GsP$$p+u%h&$o><Zc8FT%vX~ z2&^px*P1vQ1~m*8vIkoU1YB#Y-ygZb570pFs6LUtkx?||hL-aRO4Y~^HdzlMcM*6v zHQs<*BKRL+k^rz64QkdH2q0T-wqOA`2nbOxo&bnPxt$( zBt}5Z!n@I9_ANBh9YO>amR!Odol3KcAu`TVEb{^3Px5 zhZ%69a=nERQ=QzsS2ZGuYc!y)wr1cFCI0LSM>pEWFO{e^rFR^x@W9Yr2Lpj)@oj63$ zW3)MeF?#kCGHBvF_hsDPz4FlUWO#br9$j43aRI?g zt!uT!oxjhK@O3B*aPBN~&K~vPI-%xvu$G-BOGiq2wzfcCBcRv&tM7_EZ(+R5NF((v z;P0#fPfM3jsG(NE+G6%vsJmzch$}&O(4W3QW{@g@nM-^LB{dK4iD2{m`TJy2pC^t3 zm)-3vZ^W+}W8yELPxc2B;Am!)ipx|q)zz!!Q+WyH zd#%?uTn-P0vrrx!V0)4tkoIx@KzVZoagrR-n6#{^n}d2u8YEFCLaP-eSJRg)hl1le z(Ea)I1+3`$!Y`p4U@2Tq9$h1_;E36*@$c+i(SpbibtiOhKu1;ETV>c`AJ>*WyH05N zR2!31v*1y_Q-t86DkD8yVvz+668qDz9${YL-<^D~GotZzhaH9A?Rt_TZh2n2R^!1K ze?)Uc83a)V^@sd{jY5zsGZ$hm;L56N+5VrKEooC!xT+uqjoaN+BdGjfqoDr4})c;#@*d%6B~y=AvNU}qIKSW z0|gII3dCrJ!IOd2v}hI;=1xakFC6XSC-TChlOdXTzvxzJ7F2UUd2Rd}1I;B+Ms8B> zM`6+@?fQJIM&CSwa1MHX~QA-3TSpYB_%!35Nr0q8gg_%vKLM3UqF-OY#L zlVQ+$9zXME)SL_q4rB4008A|iu9+>@1Cl5$FCUW+OQu)|G}}uu#?nz%tBB57cBk&9 zUnZ5jTQ~!}uy-1igbz3jMb&f+a}Rz!FeAT<9GNPo5;zmoq^w)g zI11z|s5>Kn>Va8j0?U8o7eE}51bre_)F%cJat+j@hU2xKkWE4$5f12O!n%Hv=&h!@ znwZZAtY#={zRbbJ!z#$s;!jcA-V+GlO#>(rz++PdYGahn0YePEeYC}_neYpCh0H5T z#F!SNV`GcoicU7*M`2s9X~n{{i~MIX3HnCB*-I%F0up5uC*#7!E?z)^dX(>oY(GJq zL>Ix$d3PBk3EOU*TT(RcW(as4Ut!V8CP%PrqO>3Ix>i&?E0hZvOua~(r~YQzKXssu zKj%T@$&=YqnraiMD;>B`o16Upawu0qBI39U4OV@eYnqG*4yl?MopD5a7C5n zb4N0Y-Dk2CyHoMostTUfv9mQarPl{-@}99C4T$456_OF8j6#xoL?g(vHnu4c!Ady& z8I`dNhT!wFyKY`sk)y8Yi}Q2CQn%iP5^w90R6NV)`4tzvKAa;;^D919fG2)ijKk$# z`7=f9=+qXO1huhFJ*&8RN=@&ntT#t09AbpLZg zhtI!=>qU@LuS!YVleq2>i~n<+h@Tub(TFod zwu9MD9_%=>im5)29L5coNY(JDJv;S+o*rfnbKewL?}a;#SL^fZfxNOHMk)8*M6tUo z^n1{o-}_G5K71pjFh6+69g>*;>hbmB9@Isy0UJT>jCa zp84At2N(A6>SxC}VpuT~pTzLk}LZX?E{WRQzaE3OJxI;dmK^=A+ahr84z)QPOm$IzAO@0M;) zWl)x9#-SF}WhkT4hD`4l63Q`bCu4V*>6)og4H>r4cII~??xP`Wi2B~wS6g6SP?D4t zJ93U(<|aJ11I&?c_TtraYsxFI(cd92CGX;M74ui+|S=#$pcV@4N5 z1yM-+R!8&t&DuyX-@GpFg6>VJD`K{D7x^6(_!Un3cx~tXKgNaZMvWiWm_k4Zx+MMb zr3XPl21lACCB~>00|_*D*Y$JMc&z~&G96isF1u;T5uwpIDq(C0kceLgSA?V1#{wfu z_YBT|?klrBeO_j3=vZAO4p;r27_L?Terql%;h3NAIX@VNH7rWp|CTyUf%IC;%)+uy zo650Z#^gsX1n0H7!(CMt|cH;7k9ZXbbkT_&PtS=HldKWo5^Lsc<9+WUFt7zaZ=o zJRsK=xN52NkPC3Lw_4zGCQnLlHU7H({f(zAp#z-kVLF@D`ejrog}f!kjI*ePFas2m zp==_U<>-B|DHTi{uzALYLrHn_LSQv4KX_g=7L%W;>YV;v zvGcQTrpsC|R1N1{)V03eLA z7KmeEj4x0~!muUG9V96eTHo2V4SFnXZ#9iWN)oJW%v*#YhKjTaarommrP)_CoFRT} zkT{3h=gyt*y5JkV3l_Y$3I}Py%BT5`X7lwOTgNaR0CDG~g$9LZUj_DqWXJX0)i_8Sz$%r#aYV z{(Gf^Z#bq(2Lb82! z{caH5{U_mE5{=$G8@Q}0{x1HDBKi> z4UGwN9M->^2A=USH8*eumEf5AW@KQyDL|!y30lhdk24Q9jOiM7-|47?lOaG4 zEf&=-5nw$v$ZB&X*4G(p`uQHhwGcLa*(Z=^6}~~{!Zht=^Hwgv@ddbrcyH9jQ+#rJ zkWRR~RwVV-6=%D0(*>HSL>%duY`?tFx6psMXKG-&vg5T8RbmH zCB)|2ntZq7V_)@_-lSU~4<9&xG zX5MZW<;i*!Fw3gDb4}^ymNLxcPQsp?lrrtT1gNKh=TO+UK8Z{rkJ5&xD;uR(s#PB< z5=uAM$)1F&g4+EIm@$r%+)Wr6r=J9-?+-|QZ>l0{e(tgm9qOVLk65ck9CODa96A_U zXnBjY391|O3aa6_S0uIgg)0S?wko2}w+XV9$ zZe@S0G{-?uzpQ6_@|Cchb$etXdKMHDu4QFdGj>J#g|)035@6 zqOZgg6v$KrrlKMDg8Ewk9Pb2*RPdkhl&7T+Bfyy&SYwsji$3z-VerH;u)jertKPmv zxk#{oP@3tkX+?9phJRJ3m;}M*ThdVLP?b&M{$iKJh)k3{(nj}m^zEJ&??wplg{T+7 z#9+ZJ&+`%uE`WF8Qb5CSVi{j}Ypq0}OIn0R3j?jgsG{0v#A8}mP>Mw)AIK>rhDhVM zGF6zUupNgWq$BN%(J5V_?(cSnw*v)u4tt^wPZ5Njcw9LFh{KlC#)Wm?0wafdBiO0+ znuF;pdYQ@l0SnLx;l%XuZ*!M0DZQd@>1z;w8p;#0E1~74cQ)mT;n&*bxqDlV(P?c+ z6+xa+g$V{vNI>$xgRm3`Wp}5eyt!8`kZk~9+JRhZ`ximXg0qIT!Q3+~+_Y;;?N zVJkAFWhO{0nYF3$c@KOc{oLD3m&b`Vb35L92-b*xe4?_d8|B>Yew{*F<83UFy-yQn zX@6%lezY-tc#^#O;l&Uq7ibnSzNru&yEW@#0piBoRz9T*yp4{9lj>$llZI`KC zHq1OdpbeSx#&w2a4xKAD;Y>EE;uq)2Ny}Ul3{&|qZgF^W6Y`)p|zu>M2sm83kSZvBldb<@w)N}MjF_Tpqy-y z|5i%DBudTGdS@D#Sxu;#6p~#vFon>R-=XrTZcgPr?W&Hew#<7TpAViEGtCaK_9Vi) z=*0KLB45{zakBi_i{YuECGpT8XOmYra=E$mE@mkKKfF~lC{#hvO~Vt!|<;9$E7+lM)V$* zOjiUBYaBleTONHj@!1wCBn?YAGX{OzM~~JHi+OHasJhm}cLx&`a17%al~Up78vo-d z#F7~x;9PX(;5oE;zBCS%WdKRK-+i*&jTd-RlD|`D9Fg?-R)o<3+9oWoBdm466@<=O zNa6LBg|mhp>QlkW>}}v6E6NG|ERN*Oj*)rZAA&lbCt|YKG?|hba_OZKR%!g(=}A$Jf!OM@YdqCxtYI zEXRlS>i^LMNv-%7y8E}zg~akGfjYWaXz1;l2qIp>EO}U zwEu`v;l|mfUiW5}WuBb5t6jy1$ALayb?ph$eJ2s4a1=Zr6WJL{zWq`FzkK%Ya;|jdBjN6z95ojVBevAC(cg_meNo<*r zY_W0)1kK{rQ`&Sa+!?JkHN#v*+e4LQL@!dq*R3~;mm=|WZ(7sH^)ojMi`Yu#HR@Y@ zne&K!gbVlv9R++`^B4i@IM~MxB^{%*^(a;*Nq8uQ@f|^~#h2YFh1hJ|>X~}%z5wXX z@d9gWrchP^*5E(rOeXP{p;5AbF3^auq)bU{L3(ZEX9Tt5=(vQQ!ro-2j%IhQFtX-x zxIX-Sy3hGo>*~={PznWnXef&e!c)!9P#r-X$8xCFb-Dc!q&Vtkt~@f+WFm!-mnrvl zKl{rN-F|hc$uCV7D^Gklc7`QL-d@-`7=-5JsHy%ug5A0bJS_3jwY%a)B{|6#ANNL~ z0IfuI@)_t1t~p0$vAKOyo;O?VZfObyqS%HInO;;5}Gom_MAg zEgQ%+?jNQ|2;G7gz>1_+n!<~zj11j=azl8mbeWLcHcU(*xyoqBD8rK|Ydfhu)BfdRX5Nh3YJ52gsq9$)Uxc4JkNG43E zyGU{OaOl3-<|%?Z=GBRULlFIR=j%OsNf0{A{r4Mqo72kuH)%!*YTwVsEE2XQa567o z0X)}7HdktjKURX9we$ zhe5ydQE(O>+(J^Pc1$ow+eR5t`?S@TGy^d3sC z_}<~yyTxBPJV62Mx|MBSd%C?}NKN&E_Y(Qy6nmBK#oZ)j!Q{6cWjcWvICP~VJki$T zS82=N%Fc2Tt5}_uiui1{jtM+RQwz|2@B31_oO`yUo(p4l{;Iyz`*_(^gcb2_$U=;> z(WbNX>YKXQd*TvJmaM6-x2FjGE&k-~JLzbVWSz0I)vq(u!CB-&@;7}@M%o%j5iyY! z$R=y}+!Z}0wCQmM3`FwtS#s~9nHk&guM;QyE-#vaMZ`%KGs%B3@>Zq*TRD^PPF+kY zBgRX&8$y{3z6$gL?Asq*2+_QM`se5*ErT5Jxg`M?kP7vmpYWwI5CT*HqG=#P03*Tw z_vbDMoR1@w|30zENxedtX&Zz9OoIP9TSELVRJYIv3NMX@2!KlPUt{F|je1i2H!W)- z05hbf^}lq@2MqwHZ4m*e@c;L@&VMsun?^zmAi@9dehdTz#(&>_Q1fZJ!~hXU>F6Yu zXuPymVgMavL|l?n9A4VnKQvS7M>uAh5XpzI?leadfCS(qt%(F63@N>o#Il5$hC~XW zgGxjOq}8DU@X}OC0qjuKpZ|v|{D-SV`5&$Z1%QzD{ttW<_1_?hG$pbRZWs-aR)Yqh zNX!4=0MlucWB@h5Y8ojyfcM`P_7%&0gBlG_Us8fQC delta 28862 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�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 diff --git a/Scripts/__pycache__/preprocess_daily.cpython-38.pyc b/Scripts/__pycache__/preprocess_daily.cpython-38.pyc index 3430d562d646b4c74069dcf0e1c3d6eed01b0793..176ac9501cf1fa72b20d7301c47a2d32643ad3c9 100644 GIT binary patch delta 3684 zcmZ{n4RBP|6~}WoyPHjxgn;A=2qc7{n~;!1pb02nN%#zlV)$AD%ggQ~JiB?j-nUB) z3Sq3Y%3!rzv~;GmrBxs*RQd!f3OduNEz^RnqXT`VEh;KhJ5$E7A37a+{^te4FxDA< z-h1x3=bm>y?%kX^Bi=b9@>b;M=Vj4<;^L7!pI59?h2E0txu%xrvka@NVQOPzG-Iaf z68gq;G*u^!o=xexOgbaYE_<%`yjMijxZK)cB+w(1nN-wFMpS3+c`@H^%v&YIZ2QsR zF3*_7WZ&_c$+#}Z($GaYMjfi5;Ayc~y;V?L)Iow(^w07W{8^r?VOcV2e^Ky&$X`zq z#|Hxzi5@Eaowur$M6wNNCxnDtivMLxoF%(}b?UyNTSSN2QM4d9hXj{@18J*$wkRx$ zBmQ_sYSFpu%Yet-#yf6-ACJ*L%S(VCvQ23vEyD-5%yZp;aM1dRk`qPCVYm*60HuJT z9xpBTuf}kV`g!Rju~hxB^t7<-17-7te+J|;)n}t0Z@vq|ZGgLvMj^i}gWyqMCn1uP z(9+$>WP%1s69f4OpP#nRj5#g>Ch6cK)Dz`p^u^DWpA+91^zVD)mIoHmGD4%SjGI8q zqsDK#zWm+s`kbve=5FBTZy=fDF;k9DlTz!Gv!K&Y2>DzGzYW17YI;ST$k_3UI!_^| zr4Qo4Puw@*8)B_0t7@c5SyHurHb>+hDBKP-0c(I~fMd>6%S2IXQ6p~2m5}aN zm#QlL9I~()K5^>E9Z>Vd4M~-;78((?t-I3RJTZ_hUb6dd&CebihIkne1cm`42q6UQ zU`;henhvFXKNdVvJ_%+$ntKClpGH&wNeE1bAaHIK#S}?i1a2GUh zI7_7`&kX(&LhhJX?BkRB#2WU4UAO~Ab9$4Tb?QDj7m9ZR>?Hh?^9TdN@pSivL%H%T znmOKBGS%ng#FB|juW3mR(P`)&R=euk#c})X`Wd2bFC=FP6sqrInA;e^d*a`W>il@jNPc7qfw{)73Q-E;ZU{w z7?T@Zp5}J*&(zi#Gy8{<|1GE)0K(^Z4a?Nz2bk9Y7a{bd3@1C5w47|qFy-$d?*%Sl zF}qhw$vWsF;04@1IXtoLpWksj~S<-f3x{k*6S&74>HF6MmXSQ=5F{t3aq0WQ!JcHteJ{;t15 zFz5xBpWn)KTY6f4Wh~*+uDbtcu@g#O}thnGm!eQBoWK4dEg>M4=0G9<{a91&Xp5XYU zZfd={JPnCBtQy-6i=FC1TX{)71w|GRBK{aR2?xzlquS>PN3Cc-Bu?7d^V@wvJ~ROB zTy@Wqwvp}-b55O*JJrCFHGVge^v0E|>WXpMYVx8D#PJrB&1} ztxFg7{{ZSg1%3kT1AYwr2zVO!At97=L;DUna=k*_0=@$E_ki~a;mZNyMgdoK?PMe1R`Wa{!Oi>CRFL@<*L}MK|s-e+Mn>@u(MC z#_lf3RVP+d1~-tz{XN1Or2XF&3&j#>4=WW?yLaeklbgsPFS6jHhk*CbG$mh&Hcmi4$m*ajHZ}!;VZbN=d6NeL1j4-$ImCsK zjRcV2P@$XJp||L!V&UD_b0zCwjO`%lk-Utd)cRs!^V5FJKDqvs2tEMgoR@3A%lB{S zsNsvP4NDCKdO!^`l1qrj`eF%P=8$1yGOS-wW3{{d&qK3XNll3Z%HO@XemMku^K(#kKV=rGG4VZqR^P3T#t-^`fm3FwnEqIog<%@V022XTeu+kom;W|+1;XRN ztH5i(3E(8~I&c&?2D}W+fF=qXXLjgdAan*QF(^is9#!8&Jp6Gj{k&gE^GejT6^ Q&63%`9M~zt2*wuv4{8L6&;S4c delta 3741 zcmZ`+4RBOf70%u4E=iVz@Dq}dq)7-6HX+*(K=XrB2;rv!Nx(qL8nV3XK9;SU_m;c6 zK+u{_X~#lA>fG8=w9HtwHWje&v_rA9&>yEil+lVhyn(4A{-o$=?GzoY#q*sPSf(m7 zd^z{rbI(2ZJLlZ{_WU{V#yOFEAC*k&Cs zT_(J3&@WUUPupMpIf%Oe&N`C(UResoR{{Ig(Xy#xA8)tax=?mfhbHWNsq>a$ zGi{`j66c}QGBIyq^;y8%fO7;p^9Hq4c+1>CIJs>^$ldBpy@Q9)Qi`fP(;> z(e`RGI;icSy712_Z$(`G0*A@hNDk(bm(ZZOO;6e$=Z`D0*%mSRHF&rs1~ojV&Bv9@ zZStb^+MFS=f#c)Q?!ac_;DUNjc3|})00)n_!~I{mrwJdJF3*h~!B%OT&M~opQ*PW$pwZ4YG(-Ll6YpZ^_?<6z zscTJhi}pj$3}u$u+yZB;?s=o`vej7Q)+15({T#11iwcmG1-+F;iSXds=G8qx1F(=b})7%BiZmr7lTT`6mo+Io1N_GWel-u(fSCQ$!EJEDiwOwmX(IH2Fu2>j0xrx)L!v zJ8UNH>}1T4zkogg_%kN62epK}jN#7#oB?h;1mZN~Zz25v&p>29NX|u$Pe*|leb5xyZYp=F3<}J%fBBK5U#lHa+ zfS0YZg*{$zMJ3uxmi$lRu>WWtY#q0d4ge?>S@J``6M)|X{-EA!_ZMfbruk5!Sg2)x zt$a%=LMWO}f8drX=1b@<7-mTN7(?t#uYfcY#C?V*ghBnCObsP;CmSuWMoQ#+>MKhY z3?sc6?t_Jz5smAiq@K{EmWr8%a}9EZxs#?$NzTMUtYWITu&>h4&W@X5nMEg+4`LQK zvQrfsAh|K|EbP2eH?%=rz5}(e)WVLVV!yiDQBgbzHj@d0-Z1wk(->5hOBact+O+hD zc*QDMw$$U}P4i)0p!!#KOmakwIdg(urisxa^~TB$ufs3Bk`=0P)$IH&*tDL2`#@i1 zO}Y;;<;0T7^gvQ~I;d`S4Yfz->J`J^g89>c?*X0yd>8N?z_$TU68Oj6(&d?8#!8ip zxG=B5+(|u2oufH~qeW2WBJ@lH`m1CyH1E!$$)IzkeA>CZ3Q127Um_77vb`xY9!sX= zh-&McHq6`dj(B}!0URLNb`Db+GonmC-;z#6{StQEx80Do0?Oc@I+&XD8H_nemmzU$ zPJ~xn82Bc0~vPA=sT?EfY8S-#zX5?`ocF2ZfJAX zuMnNE$SWcDkGg1WsWR4gPrZ$XI}7mL))X^hsleSys`bO_{QA#y@{64!S9b2rdFQs0 z@Xy~05t4$QsGjOEgX1)*FEi)@=)Fy*G0S(d`q5yAu~8LE0;v3`=r%+SB|^xuQW$j&qSEa#$vY1&lO-Rn`r+(J=sisDl%?12F_aCx*SUA_KYS|baK1^=>HIjMdTcjQa z@4>mlFr>`6aiQ5c5nWH<%R%}vI|nN`dB~e{M1FZZcN!6WheTI712DK3O=5&-!f>yular%$AbSKrK)ydBQi50W0tOUKlq{;A>w zm2k0jw*M!>_hq=|tlap{KelOA9ba?&o1>BD=|znh!CZn+cqkm#<#=)%V-~KdTCLmr zES%J;do(2utBC`j4XlF#)bWoM`2ai7qEUyHsfdbS9DZ8*)x*8h#dGTLKvg}r`2_A0 zBR%MBmz0@0YsOM8vlpzt4^)W>Nas#ZI<>i>nSL6rRI?(Fc-j0hbvp92_Y`7SqzrwZ zwhiKTzz)C+08c+plIy>+nVUCs rAlLLGE