.gitignore CHANGED
@@ -21,5 +21,3 @@ var/
21
 
22
  # vscode
23
  .vscode
24
-
25
- secrets.toml
 
21
 
22
  # vscode
23
  .vscode
 
 
.streamlit/config.toml CHANGED
@@ -25,7 +25,7 @@ gatherUsageStats = false
25
  # - Open the browser
26
 
27
  # Default: whatever value is set in server.port.
28
- serverPort = 8501
29
 
30
  # .streamlit/config.toml
31
  [ui]
 
25
  # - Open the browser
26
 
27
  # Default: whatever value is set in server.port.
28
+ serverPort = 8502
29
 
30
  # .streamlit/config.toml
31
  [ui]
app.py CHANGED
@@ -1,27 +1,30 @@
1
  import os
2
  import time
3
- from src.markers import display_interventions, display_solved, show_requests, show_verified_requests
4
- from src.filters import show_requests_filters, show_interventions_filters
5
 
6
  import folium
 
7
  import streamlit as st
8
  from huggingface_hub import HfApi
9
  from streamlit_folium import st_folium
10
- from src.components import show_charts, show_dataframes_metrics, show_embed_code, show_donations
11
  from src.text_content import (
 
12
  CREDITS_TEXT,
 
 
 
 
 
13
  LOGO,
 
14
  SLOGAN,
15
  )
16
- from src.utils import init_map
17
- from src.map_utils import get_legend_macro
18
- from src.dataframes import load_data
19
- import gettext
20
-
21
- gettext.install("myapplication")
22
 
23
  TOKEN = os.environ.get("HF_TOKEN", None)
24
-
 
25
  api = HfApi(TOKEN)
26
 
27
 
@@ -41,136 +44,407 @@ if "auto_refresh" not in st.session_state:
41
 
42
  auto_refresh = st.sidebar.checkbox("Auto Refresh?", st.session_state.auto_refresh)
43
  if auto_refresh:
44
- number = st.sidebar.number_input("Refresh rate in seconds", value=st.session_state.sleep_time)
 
 
45
  st.session_state.sleep_time = number
46
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  # Logo and Title
48
  st.markdown(LOGO, unsafe_allow_html=True)
49
  # st.title("Nt3awnou نتعاونو")
50
  st.markdown(SLOGAN, unsafe_allow_html=True)
51
 
52
- # Localization
53
- lang_options = {
54
- "ar": "العربية",
55
- "fr": "Français",
56
- "en": "English",
57
- }
58
- # multiple option (NOT in sidebar)
59
- lang = st.selectbox("Choose language / اختر اللغة", list(lang_options.keys()), format_func=lambda x: lang_options[x])
60
-
61
- if lang == "en":
62
- _ = gettext.gettext
63
- else:
64
- localizator = gettext.translation("messages", localedir="locales", languages=[lang])
65
- localizator.install()
66
-
67
- # Initialize map
68
- m, emergency_fgs, intervention_fgs = init_map()
69
  fg = folium.FeatureGroup(name="Markers")
70
 
71
  # Selection of requests
72
- selected_options, options, show_unverified, show_interventions = show_requests_filters()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
 
74
- # Load data
75
- (
76
- df,
77
- filtered_df,
78
- interventions_df,
79
- verified_df,
80
- filtered_verified_df,
81
- solved_verified_requests,
82
- douar_df,
83
- len_requests,
84
- len_interventions,
85
- len_solved_verified_requests,
86
- ) = load_data(show_unverified, selected_options, options)
87
 
88
  # Selection of interventions
89
- selected_statuses = show_interventions_filters()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
 
91
- # Add interventions markers to map
92
  if show_interventions:
93
- display_solved(solved_verified_requests, selected_statuses, fg)
94
- display_interventions(interventions_df, selected_statuses, m, intervention_fgs)
95
-
96
- # Add requests markers to map
97
- if show_unverified:
98
- show_requests(filtered_df, fg)
99
-
100
- # Add verified requests markers to map
101
- show_verified_requests(filtered_verified_df, emergency_fgs)
102
-
103
- # Add legend
104
- legend_macro = get_legend_macro(show_unverified)
105
- # delete old legend
106
- for child in m.get_root()._children:
107
- pass # TODO: fix this
108
- # if child.startswith("macro_element"):
109
- # m.get_root()._children.remove(child)
110
- m.get_root().add_child(legend_macro)
111
- # add_village_names(douar_df, m)
112
  st_folium(m, use_container_width=True, returned_objects=[], feature_group_to_add=fg, key="map")
113
 
114
  # Embed code
115
- show_embed_code()
116
-
117
- # Show metrics
118
- show_dataframes_metrics(len_requests, len_interventions, len_solved_verified_requests, lang)
119
-
120
- # Show charts
121
- show_charts()
122
-
123
- # Verified Requests table
124
- # st.divider()
125
- # st.subheader(_("📝 **Table of verified requests**"))
126
- # drop_cols = [
127
- # "Phone Number",
128
- # "id",
129
- # "Status",
130
- # "Intervenant ",
131
- # "Intervention Date",
132
- # "Any remarks",
133
- # "VerificationStatus",
134
- # "Automatic Extracted Coordinates",
135
- # ]
136
- # display_dataframe(
137
- # verified_df, drop_cols, VERIFIED_REQUESTS_URL, search_id=True, for_help_requests=True, show_link=False
138
- # )
 
 
 
 
139
 
140
  # Requests table
141
- # st.divider()
142
- # st.subheader("📝 **Table of requests**")
143
- # drop_cols = [
144
- # "(عند الامكان) رقم هاتف شخص موجود في عين المكان",
145
- # "الرجاء الضغط على الرابط التالي لمعرفة موقعك إذا كان متاحا",
146
- # "GeoStamp",
147
- # "GeoCode",
148
- # "GeoAddress",
149
- # "Status",
150
- # "id",
151
- # ]
152
- # display_dataframe(filtered_df, drop_cols, REQUESTS_URL, search_id=True, for_help_requests=True)
153
-
154
- # # Interventions table
155
- # st.divider()
156
- # st.subheader("📝 **Table of interventions**")
157
- # display_dataframe(
158
- # interventions_df,
159
- # [], # We show NGOs contact information
160
- # INTERVENTIONS_URL,
161
- # search_id=False,
162
- # status=True,
163
- # for_help_requests=False,
164
- # )
165
 
166
  # Submit an id for review
167
- # st.divider()
168
- # id_review_submission(api)
169
 
170
 
171
  # Donations can be made to the gouvernmental fund under the name
172
  st.divider()
173
- show_donations(lang)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
 
175
  # Credits
176
  st.markdown(
@@ -180,15 +454,3 @@ st.markdown(
180
  if auto_refresh:
181
  time.sleep(number)
182
  st.experimental_rerun()
183
-
184
- if lang == "ar":
185
- st.markdown(
186
- """
187
- <style>
188
- body {
189
- text-align: right;
190
- }
191
- </style>
192
- """,
193
- unsafe_allow_html=True,
194
- )
 
1
  import os
2
  import time
3
+ from datetime import datetime
 
4
 
5
  import folium
6
+ import pandas as pd
7
  import streamlit as st
8
  from huggingface_hub import HfApi
9
  from streamlit_folium import st_folium
10
+
11
  from src.text_content import (
12
+ COLOR_MAPPING,
13
  CREDITS_TEXT,
14
+ HEADERS_MAPPING,
15
+ ICON_MAPPING,
16
+ INTRO_TEXT_AR,
17
+ INTRO_TEXT_EN,
18
+ INTRO_TEXT_FR,
19
  LOGO,
20
+ REVIEW_TEXT,
21
  SLOGAN,
22
  )
23
+ from src.utils import add_latlng_col, init_map, parse_gg_sheet, is_request_in_list, marker_request
 
 
 
 
 
24
 
25
  TOKEN = os.environ.get("HF_TOKEN", None)
26
+ REQUESTS_URL = "https://docs.google.com/spreadsheets/d/1gYoBBiBo1L18IVakHkf3t1fOGvHWb23loadyFZUeHJs/edit#gid=966953708"
27
+ INTERVENTIONS_URL = "https://docs.google.com/spreadsheets/d/1eXOTqunOWWP8FRdENPs4cU9ulISm4XZWYJJNR1-SrwY/edit#gid=2089222765"
28
  api = HfApi(TOKEN)
29
 
30
 
 
44
 
45
  auto_refresh = st.sidebar.checkbox("Auto Refresh?", st.session_state.auto_refresh)
46
  if auto_refresh:
47
+ number = st.sidebar.number_input(
48
+ "Refresh rate in seconds", value=st.session_state.sleep_time
49
+ )
50
  st.session_state.sleep_time = number
51
 
52
+
53
+ # Streamlit functions
54
+ def display_interventions(interventions_df):
55
+ """Display NGO interventions on the map"""
56
+ for index, row in interventions_df.iterrows():
57
+ village_status = row[interventions_df.columns[7]]
58
+ if (
59
+ row[interventions_df.columns[5]]
60
+ == "Intervention prévue dans le futur / Planned future intervention"
61
+ ):
62
+ # future intervention
63
+ color_mk = "pink"
64
+ status = "Planned ⌛"
65
+ elif (
66
+ row[interventions_df.columns[5]]
67
+ != "Intervention prévue dans le futur / Planned future intervention"
68
+ and village_status
69
+ != "Critique, Besoin d'aide en urgence / Critical, in urgent need of help"
70
+ ):
71
+ # past intervention and village not in a critical condition
72
+ color_mk = "green"
73
+ status = "Done ✅"
74
+
75
+ else:
76
+ color_mk = "darkgreen"
77
+ status = "Partial ⚠️"
78
+
79
+ intervention_type = row[interventions_df.columns[6]].split("/")[0].strip()
80
+ org = row[interventions_df.columns[1]]
81
+ city = row[interventions_df.columns[9]]
82
+ date = row[interventions_df.columns[4]]
83
+ population = row[interventions_df.columns[11]]
84
+ intervention_info = f"<b>Intervention Status:</b> {status}<br><b>Village Status:</b> {village_status.split('/')[0]}<br><b>Org:</b> {org}<br><b>Intervention:</b> {intervention_type}<br><b>Population:</b> {population}<br><b>📅 Date:</b> {date}"
85
+ if row["latlng"] is None:
86
+ continue
87
+
88
+ fg.add_child(folium.Marker(
89
+ location=row["latlng"],
90
+ tooltip=city,
91
+ popup=folium.Popup(intervention_info, max_width=300),
92
+ icon=folium.Icon(color=color_mk),
93
+ ))
94
+
95
+
96
+ def show_requests(filtered_df):
97
+ """Display victim requests on the map"""
98
+ for index, row in filtered_df.iterrows():
99
+ request_type = row["ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"]
100
+ displayed_request = marker_request(request_type)
101
+ long_lat = row[
102
+ "هل يمكنك تقديم الإحداثيات الدقيقة للموقع؟ (ادا كنت لا توجد بعين المكان) متلاً \n31.01837503440344, -6.781405948842175"
103
+ ]
104
+ maps_url = f"https://maps.google.com/?q={long_lat}"
105
+ # we display all requests in popup text and use the first one for the icon/color
106
+ display_text = f'<b>Request Type:</b> {request_type}<br><b>Id:</b> {row["id"]}<br><a href="{maps_url}" target="_blank" rel="noopener noreferrer"><b>Google Maps</b></a>'
107
+ icon_name = ICON_MAPPING.get(displayed_request, "info-sign")
108
+ if row["latlng"] is None:
109
+ continue
110
+
111
+ fg.add_child(folium.Marker(
112
+ location=row["latlng"],
113
+ tooltip=row[" لأي جماعة / قيادة / دوار تنتمون ؟"]
114
+ if not pd.isna(row[" لأي جماعة / قيادة / دوار تنتمون ؟"])
115
+ else None,
116
+ popup=folium.Popup(display_text, max_width=300),
117
+ icon=folium.Icon(
118
+ color=COLOR_MAPPING.get(displayed_request, "blue"), icon=icon_name
119
+ ),
120
+ ))
121
+
122
+
123
+ def display_google_sheet_tables(data_url):
124
+ """Display the google sheet tables for requests and interventions"""
125
+ st.markdown(
126
+ f"""<iframe src="{data_url}" width="100%" height="600px"></iframe>""",
127
+ unsafe_allow_html=True,
128
+ )
129
+
130
+
131
+ def display_dataframe(df, drop_cols, data_url, search_id=True, status=False, for_help_requests=False):
132
+ """Display the dataframe in a table"""
133
+ col_1, col_2 = st.columns([1, 1])
134
+
135
+ with col_1:
136
+ query = st.text_input(
137
+ "🔍 Search for information / بحث عن المعلومات",
138
+ key=f"search_requests_{int(search_id)}",
139
+ )
140
+ with col_2:
141
+ if search_id:
142
+ id_number = st.number_input(
143
+ "🔍 Search for an id / بحث عن رقم",
144
+ min_value=0,
145
+ max_value=len(filtered_df),
146
+ value=0,
147
+ step=1,
148
+ )
149
+ if status:
150
+ selected_status = st.selectbox(
151
+ "🗓️ Status / حالة",
152
+ ["all / الكل", "Done / تم", "Planned / مخطط لها"],
153
+ key="status",
154
+ )
155
+
156
+ if query:
157
+ # Filtering the dataframe based on the query
158
+ mask = df.apply(lambda row: row.astype(str).str.contains(query).any(), axis=1)
159
+ display_df = df[mask]
160
+ else:
161
+ display_df = df
162
+
163
+ display_df = display_df.drop(drop_cols, axis=1)
164
+
165
+ if search_id and id_number:
166
+ display_df = display_df[display_df["id"] == id_number]
167
+
168
+ if status:
169
+ target = "Pouvez-vous nous préciser si vous êtes déjà intervenus ou si vous prévoyez de le faire | Tell us if you already made the intervention, or if you're planning to do it"
170
+ if selected_status == "Done / تم":
171
+ display_df = display_df[
172
+ display_df[target] == "Intervention déjà passée / Past intevention"
173
+ ]
174
+
175
+ elif selected_status == "Planned / مخطط لها":
176
+ display_df = display_df[
177
+ display_df[target] != "Intervention déjà passée / Past intevention"
178
+ ]
179
+
180
+ st.dataframe(display_df, height=500)
181
+ st.markdown(
182
+ f"To view the full Google Sheet for advanced filtering go to: {data_url} **لعرض الورقة كاملة، اذهب إلى**"
183
+ )
184
+ # if we want to check hidden contact information
185
+ if for_help_requests:
186
+ st.markdown(
187
+ "We are hiding contact information to protect the privacy of the victims. If you are an NGO and want to contact the victims, please contact us at nt3awnoumorocco@gmail.com",
188
+ )
189
+ st.markdown(
190
+ """
191
+ <div style="text-align: left;">
192
+ <a href="mailto:nt3awnoumorocco@gmail.com">nt3awnoumorocco@gmail.com</a> نحن نخفي معلومات الاتصال لحماية خصوصية الضحايا. إذا كنت جمعية وتريد الاتصال بالضحايا، يرجى الاتصال بنا على
193
+ </div>
194
+ """,
195
+ unsafe_allow_html=True,
196
+ )
197
+
198
+
199
+ def id_review_submission():
200
+ """Id review submission form"""
201
+ # collapse the text
202
+ with st.expander("🔍 Review of requests | مراجعة طلب مساعدة"):
203
+ st.markdown(REVIEW_TEXT)
204
+
205
+ id_to_review = st.number_input(
206
+ "Enter id / أدخل الرقم", min_value=0, max_value=len(df), value=0, step=1
207
+ )
208
+ reason_for_review = st.text_area("Explain why / أدخل سبب المراجعة")
209
+ if st.button("Submit / أرسل"):
210
+ if reason_for_review == "":
211
+ st.error("Please enter a reason / الرجاء إدخال سبب")
212
+ else:
213
+ filename = f"review_id_{id_to_review}_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.txt"
214
+ with open(filename, "w") as f:
215
+ f.write(f"id: {id_to_review}, explanation: {reason_for_review}\n")
216
+ api.upload_file(
217
+ path_or_fileobj=filename,
218
+ path_in_repo=filename,
219
+ repo_id="nt3awnou/review_requests",
220
+ repo_type="dataset",
221
+ )
222
+ st.success(
223
+ "Submitted at https://huggingface.co/datasets/nt3awnou/review_requests/ تم الإرسال"
224
+ )
225
+
226
+
227
  # Logo and Title
228
  st.markdown(LOGO, unsafe_allow_html=True)
229
  # st.title("Nt3awnou نتعاونو")
230
  st.markdown(SLOGAN, unsafe_allow_html=True)
231
 
232
+ # Load data and initialize map with plugins
233
+ df = parse_gg_sheet(REQUESTS_URL)
234
+ df = add_latlng_col(df, process_column=15)
235
+ interventions_df = parse_gg_sheet(INTERVENTIONS_URL)
236
+ interventions_df = add_latlng_col(interventions_df, process_column=12)
237
+ m = init_map()
 
 
 
 
 
 
 
 
 
 
 
238
  fg = folium.FeatureGroup(name="Markers")
239
 
240
  # Selection of requests
241
+ options = [
242
+ "إغاثة",
243
+ "مساعدة طبية",
244
+ "مأوى",
245
+ "طعام وماء",
246
+ "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)",
247
+ ]
248
+ selected_options = []
249
+
250
+
251
+ st.markdown(
252
+ "👉 **Choose request type | Choissisez le type de demande | اختر نوع الطلب**"
253
+ )
254
+ col1, col2, col3, col4, col5 = st.columns([2, 3, 2, 3, 4])
255
+ cols = [col1, col2, col3, col4, col5]
256
+
257
+ for i, option in enumerate(options):
258
+ checked = cols[i].checkbox(HEADERS_MAPPING[option], value=True)
259
+ if checked:
260
+ selected_options.append(option)
261
+
262
+ df["id"] = df.index
263
+ # keep rows with at least one request in selected_options
264
+ filtered_df = df[df["ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"].apply(
265
+ lambda x: is_request_in_list(x, selected_options)
266
+ )]
267
 
 
 
 
 
 
 
 
 
 
 
 
 
 
268
 
269
  # Selection of interventions
270
+ show_interventions = st.checkbox(
271
+ "Display Interventions | Afficher les interventions | عرض عمليات المساعدة",
272
+ value=True,
273
+ )
274
+
275
+ # Categories of villages
276
+ st.markdown(
277
+ "👉 **State of villages visited by NGOs| Etat de villages visités par les ONGs | وضعية القرى التي زارتها الجمعيات**",
278
+ unsafe_allow_html=True,
279
+ )
280
+
281
+
282
+ # use checkboxes
283
+ col_1, col_2, col_3 = st.columns([1, 1, 1])
284
+
285
+ critical_villages = col_1.checkbox(
286
+ "🚨 Critical, in urgent need of help / وضع حرج، في حاجة عاجلة للمساعدة",
287
+ value=True,
288
+ )
289
+ partially_satisfied_villages = col_2.checkbox(
290
+ "⚠️ Partially served / مساعدة جزئية، بحاجة للمزيد من التدخلات",
291
+ value=True,
292
+ )
293
+ fully_satisfied_villages = col_3.checkbox(
294
+ "✅ Fully served / تمت المساعدة بشكل كامل",
295
+ value=True,
296
+ )
297
+
298
+ selected_village_types = []
299
+
300
+ if critical_villages:
301
+ selected_village_types.append(
302
+ "🚨 Critical, in urgent need of help / وضع حرج، في حاجة عاجلة للمساعدة"
303
+ )
304
+
305
+ if partially_satisfied_villages:
306
+ selected_village_types.append(
307
+ "⚠️ Partially served / مساعدة جزئية، بحاجة للمزيد من التدخلات"
308
+ )
309
+
310
+ if fully_satisfied_villages:
311
+ selected_village_types.append("✅ Fully served / تمت المساعدة بشكل كامل")
312
+
313
+ status_mapping = {
314
+ "🚨 Critical, in urgent need of help / وضع حرج، في حاجة عاجلة للمساعدة": "Critique, Besoin d'aide en urgence / Critical, in urgent need of help",
315
+ "⚠️ Partially served / مساعدة جزئية، بحاجة للمزيد من التدخلات": "Partiellement satisfait / Partially Served",
316
+ "✅ Fully served / تمت المساعدة بشكل كامل": "Entièrement satisfait / Fully served",
317
+ }
318
+ selected_statuses = [status_mapping[status] for status in selected_village_types]
319
 
 
320
  if show_interventions:
321
+ interventions_df = interventions_df.loc[
322
+ interventions_df[
323
+ "Etat de la région actuel | Current situation of the area "
324
+ ].isin(selected_statuses)
325
+ ]
326
+ display_interventions(interventions_df)
327
+
328
+ # Show requests
329
+ show_requests(filtered_df)
330
+
 
 
 
 
 
 
 
 
 
331
  st_folium(m, use_container_width=True, returned_objects=[], feature_group_to_add=fg, key="map")
332
 
333
  # Embed code
334
+ with st.expander("📝 Embed code | Code à intégrer | كود للتضمين"):
335
+ st.code(
336
+ """
337
+ <iframe id="nt3awnou-map"
338
+ src="https://nt3awnou-embed-rescue-map.hf.space/?embed=true" width="1200" height="720"
339
+ frameborder="0"
340
+ width="850"
341
+ height="450"
342
+ title="Nt3awno Rescue Map">
343
+ </iframe>
344
+ <script src="https://cdn.jsdelivr.net/npm/iframe-resizer@4.3.4/js/iframeResizer.min.js"></script>
345
+ <script>
346
+ iFrameResize({}, "#nt3awnou-map");
347
+ </script>
348
+ """,
349
+ language="html",
350
+ )
351
+
352
+
353
+ tab_ar, tab_en, tab_fr = st.tabs(["العربية", "English", "Français"])
354
+
355
+
356
+ with tab_en:
357
+ st.markdown(INTRO_TEXT_EN, unsafe_allow_html=True)
358
+ with tab_ar:
359
+ st.markdown(INTRO_TEXT_AR, unsafe_allow_html=True)
360
+ with tab_fr:
361
+ st.markdown(INTRO_TEXT_FR, unsafe_allow_html=True)
362
 
363
  # Requests table
364
+ st.divider()
365
+ st.subheader("📝 **Table of requests / جدول الطلبات**")
366
+ drop_cols = [
367
+ "(عند الامكان) رقم هاتف شخص موجود في عين المكان",
368
+ "الرجاء الضغط على الرابط التالي لمعرفة موقعك إذا كان متاحا",
369
+ "GeoStamp",
370
+ "GeoCode",
371
+ "GeoAddress",
372
+ "Status",
373
+ "id",
374
+ ]
375
+ display_dataframe(filtered_df, drop_cols, REQUESTS_URL, search_id=True, for_help_requests=True)
376
+
377
+ # Interventions table
378
+ st.divider()
379
+ st.subheader("📝 **Table of interventions / جدول التدخلات**")
380
+ display_dataframe(
381
+ interventions_df,
382
+ [], # We show NGOs contact information
383
+ INTERVENTIONS_URL,
384
+ search_id=False,
385
+ status=True,
386
+ for_help_requests=False,
387
+ )
388
 
389
  # Submit an id for review
390
+ st.divider()
391
+ id_review_submission()
392
 
393
 
394
  # Donations can be made to the gouvernmental fund under the name
395
  st.divider()
396
+ st.subheader("📝 **Donations / التبرعات / Dons**")
397
+ tab_ar, tab_en, tab_fr = st.tabs(["العربية", "English", "Français"])
398
+ with tab_en:
399
+ st.markdown(
400
+ """
401
+ <div style="text-align: center;">
402
+ <h4>The official bank account dedicated to tackle the consequences of the earthquake is:</h4>
403
+ <b>Account number:</b>
404
+ <h2>126</h2>
405
+ <b>RIB:</b> 001-810-0078000201106203-18
406
+ <br>
407
+ <b>For the money transfers coming from outside Morocco</b>
408
+ <br>
409
+ <b>IBAN:</b> MA64001810007800020110620318
410
+ <br>
411
+ """,
412
+ unsafe_allow_html=True,
413
+ )
414
+ with tab_ar:
415
+ st.markdown(
416
+ """
417
+ <div style="text-align: center;">
418
+ <h4>الحساب البنكي الرسمي المخصص لمواجهة عواقب الزلزال</h4>
419
+ <b>رقم الحساب</b>
420
+ <h2>126</h2>
421
+ <b>RIB:</b> 001-810-0078000201106203-18
422
+ <br>
423
+ <b>للتحويلات القادمة من خارج المغرب</b>
424
+ <br>
425
+ <b>IBAN:</b> MA64001810007800020110620318
426
+ <br>
427
+ </div>
428
+ """,
429
+ unsafe_allow_html=True,
430
+ )
431
+ with tab_fr:
432
+ st.markdown(
433
+ """
434
+ <div style="text-align: center;">
435
+ <h4>Le compte bancaire officiel dédié à la lutte contre les conséquences du séisme est le suivant:</h4>
436
+ <b>Numéro de compte:</b>
437
+ <h2>126</h2>
438
+ <b>RIB:</b> 001-810-0078000201106203-18
439
+ <br>
440
+ <b>Pour les transferts d'argent en provenance de l'étranger</b>
441
+ <br>
442
+ <b>IBAN:</b> MA64001810007800020110620318
443
+ <br>
444
+ """,
445
+ unsafe_allow_html=True,
446
+ )
447
+
448
 
449
  # Credits
450
  st.markdown(
 
454
  if auto_refresh:
455
  time.sleep(number)
456
  st.experimental_rerun()
 
 
 
 
 
 
 
 
 
 
 
 
data/Besoin important en électricité.csv DELETED
@@ -1,1390 +0,0 @@
1
- ,Name,Coordinates,Longitude,Latitude
2
- 0,TOUGUE EL KHEIR,"-8.255905133,31.16346786,0",-8.255905133,31.16346786
3
- 1,IGHRMANE,"-8.435080813,31.15671296,0",-8.435080813,31.15671296
4
- 2,AMAGDOULE,"-8.184268261,30.99088146,0",-8.184268261,30.99088146
5
- 3,DOU GOUJ,"-8.196455588,30.98722757,0",-8.196455588,30.98722757
6
- 4,IMLIL,"-7.921740545,31.13727905,0",-7.921740545,31.13727905
7
- 5,AIT OGHAYNE,"-7.576223523,31.38778664,0",-7.576223523,31.38778664
8
- 6,TASSA,"-8.751217379,30.94754419,0",-8.751217379,30.94754419
9
- 7,TANAWTE,"-8.906358152,30.96582792,0",-8.906358152,30.96582792
10
- 8,WANZIDE,"-8.793312362,31.03653584,0",-8.793312362,31.03653584
11
- 9,TAGHRATE,"-8.569657372,30.99689613,0",-8.569657372,30.99689613
12
- 10,TAMAGOUNSI,"-8.470841453,31.05008373,0",-8.470841453,31.05008373
13
- 11,ADASSIL,"-8.495085665,31.11166768,0",-8.495085665,31.11166768
14
- 12,SLAMT,"-8.252172077,31.17738092,0",-8.252172077,31.17738092
15
- 13,TIGOURRAMINE,"-8.129594032,31.07342339,0",-8.129594032,31.07342339
16
- 14,TAZGZAOUTE,"-8.375323506,30.98376055,0",-8.375323506,30.98376055
17
- 15,TAWRIRTE,"-8.362413167,30.99378338,0",-8.362413167,30.99378338
18
- 16,AMASSINE,"-7.722989857,31.39389329,0",-7.722989857,31.39389329
19
- 17,ISSOU QAN,"-8.622166881,30.97584479,0",-8.622166881,30.97584479
20
- 18,IMINIGHZAR,"-8.420192467,31.12606843,0",-8.420192467,31.12606843
21
- 19,IWNARNE (SOUK),"-8.48862263,31.11307663,0",-8.48862263,31.11307663
22
- 20,TAGOUMATE,"-8.526412951,31.01178906,0",-8.526412951,31.01178906
23
- 21,TIZINE SAGDALE,"-7.664356971,31.37012305,0",-7.664356971,31.37012305
24
- 22,TAOURIRTE,"-7.667103935,31.36568841,0",-7.667103935,31.36568841
25
- 23,AIT SOUKA,"-7.909901495,31.1409879,0",-7.909901495,31.1409879
26
- 24,MEZZIKENE,"-7.925906953,31.13703904,0",-7.925906953,31.13703904
27
- 25,AGUERSIOUAL,"-7.924804504,31.16046652,0",-7.924804504,31.16046652
28
- 26,IMSKAR,"-7.938962116,31.20489761,0",-7.938962116,31.20489761
29
- 27,OUAOUSSAFL,"-7.946694593,31.17825491,0",-7.946694593,31.17825491
30
- 28,TINITINE,"-7.947450547,31.18972961,0",-7.947450547,31.18972961
31
- 29,AGUINANE,"-7.977445748,31.13762602,0",-7.977445748,31.13762602
32
- 30,OUDKINTE,"-7.825762253,31.3364155,0",-7.825762253,31.3364155
33
- 31,IGOUDMANE,"-7.56380545,31.38382321,0",-7.56380545,31.38382321
34
- 32,AWOULA,"-8.78905947,31.03744237,0",-8.78905947,31.03744237
35
- 33,ARGUE,"-8.406493268,30.99004383,0",-8.406493268,30.99004383
36
- 34,WAWDID,"-8.39690382,30.98577107,0",-8.39690382,30.98577107
37
- 35,ARAMD,"-7.916838203,31.12623339,0",-7.916838203,31.12623339
38
- 36,MESREF EL BORJ,"-7.797492255,31.37361429,0",-7.797492255,31.37361429
39
- 37,TISSAKHTE,"-8.897832707,31.08975931,0",-8.897832707,31.08975931
40
- 38,TAFRAOUTE,"-7.321471795,31.36691498,0",-7.321471795,31.36691498
41
- 39,AFANSOU,"-8.730790682,30.93376534,0",-8.730790682,30.93376534
42
- 40,IGHIL NOUAFFANE,"-7.70469748,31.39443969,0",-7.70469748,31.39443969
43
- 41,TINAGRAT,"-8.683391262,30.94318734,0",-8.683391262,30.94318734
44
- 42,TIGHZA,"-7.701553804,31.39854002,0",-7.701553804,31.39854002
45
- 43,ALOUSS,"-7.866442548,31.32389831,0",-7.866442548,31.32389831
46
- 44,AMASLANE,"-8.067533606,31.0646947,0",-8.067533606,31.0646947
47
- 45,AIT BOUJANOWI,"-7.796391695,31.37216577,0",-7.796391695,31.37216577
48
- 46,IGRI OU FELLA,"-7.813008904,31.34357838,0",-7.813008904,31.34357838
49
- 47,TIZI WADO,"-8.023400925,31.2417962,0",-8.023400925,31.2417962
50
- 48,IGHRAME,"-8.529616906,31.01510206,0",-8.529616906,31.01510206
51
- 49,TABYA,"-8.978759699,31.02496869,0",-8.978759699,31.02496869
52
- 50,TASSOUAKTE,"-8.24420994,30.95635278,0",-8.24420994,30.95635278
53
- 51,TAGADDOTE,"-8.806111636,31.08063665,0",-8.806111636,31.08063665
54
- 52,TAGADIRTE,"-8.81077752,31.07242193,0",-8.81077752,31.07242193
55
- 53,IMELALEN,"-8.939218394,30.94616266,0",-8.939218394,30.94616266
56
- 54,TIJDINE,"-8.878980277,31.03968941,0",-8.878980277,31.03968941
57
- 55,TOUG EL KHEIR,"-7.715514115,31.30855798,0",-7.715514115,31.30855798
58
- 56,MAJOU,"-8.08388093,30.94383411,0",-8.08388093,30.94383411
59
- 57,TINFITE,"-8.091366913,30.95623069,0",-8.091366913,30.95623069
60
- 58,TOUG EL KHIR,"-8.139299889,31.06321117,0",-8.139299889,31.06321117
61
- 59,AIT ALI,"-8.50057833,31.0693806,0",-8.50057833,31.0693806
62
- 60,AMOUTOU,"-7.657691221,31.36382514,0",-7.657691221,31.36382514
63
- 61,IZNAGUEN,"-7.67714153,31.37929169,0",-7.67714153,31.37929169
64
- 62,AIT KATTOF,"-8.530783687,31.00508888,0",-8.530783687,31.00508888
65
- 63,TARGUA,"-8.499325152,31.07282962,0",-8.499325152,31.07282962
66
- 64,TADDART,"-8.913765124,30.99298386,0",-8.913765124,30.99298386
67
- 65,DR ASNI (QDIM),"-7.978191324,31.22880218,0",-7.978191324,31.22880218
68
- 66,TAMGOUNSI,"-7.986894007,31.23903469,0",-7.986894007,31.23903469
69
- 67,TAGADIRTE NAIT ALI,"-7.95653987,31.19648339,0",-7.95653987,31.19648339
70
- 68,TIGAMMA NIGRANE,"-8.256376354,30.94171727,0",-8.256376354,30.94171727
71
- 69,OUAN CHKRIR,"-8.714342264,31.02986998,0",-8.714342264,31.02986998
72
- 70,,"-8.761011479,31.04186461,0",-8.761011479,31.04186461
73
- 71,TALBORJTE,"-8.765730562,31.08177837,0",-8.765730562,31.08177837
74
- 72,,"-7.809987067,31.19459338,0",-7.809987067,31.19459338
75
- 73,IMI OU GHLAD,"-7.955988692,31.19223786,0",-7.955988692,31.19223786
76
- 74,TABRADJOTE,"-8.707056639,31.10564021,0",-8.707056639,31.10564021
77
- 75,AIT AMAR,"-7.824404703,31.26181513,0",-7.824404703,31.26181513
78
- 76,TIKHFIST,"-7.800453274,31.2558691,0",-7.800453274,31.2558691
79
- 77,AIT BAHAMMOU,"-8.717520696,30.94145209,0",-8.717520696,30.94145209
80
- 78,VILLAGE DE MINE TIWBA,"-8.719418848,30.91357251,0",-8.719418848,30.91357251
81
- 79,AIN AMRANE,"-7.68131772,31.2205741,0",-7.68131772,31.2205741
82
- 80,AGADIR NIJANATEN,"-8.489665519,30.89512945,0",-8.489665519,30.89512945
83
- 81,IGHIR,"-8.078673662,30.97766979,0",-8.078673662,30.97766979
84
- 82,TAJGALTE,"-8.097185022,31.01378482,0",-8.097185022,31.01378482
85
- 83,TIKENTAFINE,"-8.037813654,30.99883154,0",-8.037813654,30.99883154
86
- 84,ALLOUSSE,"-8.525231264,31.01015155,0",-8.525231264,31.01015155
87
- 85,OUSSARTK,"-7.888659813,31.19590092,0",-7.888659813,31.19590092
88
- 86,TISSILI,"-7.908590146,31.22311679,0",-7.908590146,31.22311679
89
- 87,MAGHDIR,"-8.742511216,31.06830184,0",-8.742511216,31.06830184
90
- 88,IZIDE,"-8.971735193,30.94323187,0",-8.971735193,30.94323187
91
- 89,IBALOULENE,"-8.90367629,30.93811305,0",-8.90367629,30.93811305
92
- 90,AFELLA IZDATEN,"-8.888442672,30.9978175,0",-8.888442672,30.9978175
93
- 91,TAGENZA IGOUNTAR,"-8.807022044,31.0338402,0",-8.807022044,31.0338402
94
- 92,TANAMARTE,"-8.826939422,31.03136705,0",-8.826939422,31.03136705
95
- 93,TAOURIRTE,"-6.574053556,31.28226736,0",-6.574053556,31.28226736
96
- 94,TAMESSOULTE,"-8.488252609,31.02006195,0",-8.488252609,31.02006195
97
- 95,ARG,"-8.583847816,31.01179676,0",-8.583847816,31.01179676
98
- 96,ASSOUL,"-8.270563474,31.09124227,0",-8.270563474,31.09124227
99
- 97,IMZAINE,"-8.260691371,31.1316045,0",-8.260691371,31.1316045
100
- 98,AZENDOU,"-8.934217628,31.06170544,0",-8.934217628,31.06170544
101
- 99,MAJDID,"-8.491661558,31.11891134,0",-8.491661558,31.11891134
102
- 100,AIT IRGHIT,"-8.19238706,31.17476694,0",-8.19238706,31.17476694
103
- 101,ASSIF ZAGZAWNE,"-8.051928309,31.12024311,0",-8.051928309,31.12024311
104
- 102,TAGHBARTE,"-8.1186277,30.96766146,0",-8.1186277,30.96766146
105
- 103,TIGDIDE NIZDARENE,"-8.065643552,30.92865332,0",-8.065643552,30.92865332
106
- 104,TAGHZIRTE,"-8.046469356,30.92799191,0",-8.046469356,30.92799191
107
- 105,IJOKAKE,"-8.151115813,30.99130542,0",-8.151115813,30.99130542
108
- 106,TAMGGOUCHTE,"-7.141522835,31.15044949,0",-7.141522835,31.15044949
109
- 107,AMZZI,"-8.20384213,31.19582085,0",-8.20384213,31.19582085
110
- 108,TIKSITE,"-8.489155698,31.05817965,0",-8.489155698,31.05817965
111
- 109,AKMFARGA,"-8.921630344,30.99767676,0",-8.921630344,30.99767676
112
- 110,AGHBALOU,"-8.242517414,30.94022172,0",-8.242517414,30.94022172
113
- 111,CHIKER,"-7.720390422,31.22549755,0",-7.720390422,31.22549755
114
- 112,INA FGANE,"-8.151372916,30.9822627,0",-8.151372916,30.9822627
115
- 113,TASGA NWARG,"-8.161421348,30.97883229,0",-8.161421348,30.97883229
116
- 114,IMI NOUGARZI,"-8.163958152,31.00005896,0",-8.163958152,31.00005896
117
- 115,TARWATE,"-8.187861922,30.98759707,0",-8.187861922,30.98759707
118
- 116,TIZIRTE,"-8.187818552,31.13201448,0",-8.187818552,31.13201448
119
- 117,ASSAMRANE,"-7.591277471,31.38555915,0",-7.591277471,31.38555915
120
- 118,OURAKEN,"-7.920639689,31.27056233,0",-7.920639689,31.27056233
121
- 119,OUTGHAL,"-7.930793659,31.30550092,0",-7.930793659,31.30550092
122
- 120,TAFILALTE,"-7.713545096,31.38607287,0",-7.713545096,31.38607287
123
- 121,TIFNI,"-8.353597408,30.94153044,0",-8.353597408,30.94153044
124
- 122,IJJIKEN,"-7.905476447,31.32052027,0",-7.905476447,31.32052027
125
- 123,OUKHRIBENE,"-7.887577351,31.33126967,0",-7.887577351,31.33126967
126
- 124,TAMAHANTE,"-7.879657495,31.33328055,0",-7.879657495,31.33328055
127
- 125,AMAGDOUL,"-7.717890232,31.34680011,0",-7.717890232,31.34680011
128
- 126,TAWNGHASTE,"-8.534981297,31.06333369,0",-8.534981297,31.06333369
129
- 127,EL HADDAD,"-7.782551126,31.37667699,0",-7.782551126,31.37667699
130
- 128,AMKCHOUD,"-6.591443137,31.21359242,0",-6.591443137,31.21359242
131
- 129,TAGRAGRA,"-6.713868019,31.27692212,0",-6.713868019,31.27692212
132
- 130,TIGHIRTE TOUDOUTE,"-6.591865773,31.26670986,0",-6.591865773,31.26670986
133
- 131,TIGHFART,"-7.653835545,31.25367277,0",-7.653835545,31.25367277
134
- 132,TAKHAFSATE,"-8.063128004,31.15851028,0",-8.063128004,31.15851028
135
- 133,IGHIL,"-8.25496601,30.94903779,0",-8.25496601,30.94903779
136
- 134,AGADIR,"-8.423931441,31.11772917,0",-8.423931441,31.11772917
137
- 135,TALAT NYAKOUB,"-8.18609615,30.98264123,0",-8.18609615,30.98264123
138
- 136,AGARD NOU WARTANE,"-7.769123661,31.1898963,0",-7.769123661,31.1898963
139
- 137,TIZI OUSSAME,"-7.9738955,31.11902021,0",-7.9738955,31.11902021
140
- 138,TAHLIWINE,"-7.981495079,31.13976822,0",-7.981495079,31.13976822
141
- 139,AGADIR NIMARGHSEN,"-8.34119211,30.99428923,0",-8.34119211,30.99428923
142
- 140,AGOURGUINE,"-8.210481794,30.95938619,0",-8.210481794,30.95938619
143
- 141,BIOUGRA,"-8.85454592,31.04562362,0",-8.85454592,31.04562362
144
- 142,AIT OUAKRIM,"-8.846545392,31.0543903,0",-8.846545392,31.0543903
145
- 143,EL KATTAJARTE,"-8.858167918,31.07063878,0",-8.858167918,31.07063878
146
- 144,TAMAZGOURTE,"-8.685685303,31.04383076,0",-8.685685303,31.04383076
147
- 145,AIT BOUJMAA,"-8.222531324,30.94950981,0",-8.222531324,30.94950981
148
- 146,AIT MARGANE,"-7.664406404,31.27732256,0",-7.664406404,31.27732256
149
- 147,TIZI YANE,"-7.986185147,31.13787727,0",-7.986185147,31.13787727
150
- 148,DAR EL AASKAR,"-8.131289948,30.97208424,0",-8.131289948,30.97208424
151
- 149,AIT ALI OUBDIR,"-7.572436703,31.37038386,0",-7.572436703,31.37038386
152
- 150,AIT WAYIRRI,"-7.586704325,31.36921719,0",-7.586704325,31.36921719
153
- 151,IGHRISSE,"-7.134396853,31.29971148,0",-7.134396853,31.29971148
154
- 152,AT AGRALIOUNE,"-6.558645635,31.23697078,0",-6.558645635,31.23697078
155
- 153,TIZI OUSSOUL,"-8.271719531,31.08633853,0",-8.271719531,31.08633853
156
- 154,INFAGUE,"-8.258189743,31.14683124,0",-8.258189743,31.14683124
157
- 155,AYNAGHDE,"-8.264684467,31.13651009,0",-8.264684467,31.13651009
158
- 156,TIMICHI,"-7.768290383,31.19409736,0",-7.768290383,31.19409736
159
- 157,IMIN TADERTE,"-7.666196613,31.25052962,0",-7.666196613,31.25052962
160
- 158,TIL IWA,"-8.498261502,31.15189144,0",-8.498261502,31.15189144
161
- 159,AMASGUINE,"-8.093673278,31.13138194,0",-8.093673278,31.13138194
162
- 160,AGADIR NAIT SLIMANE,"-7.790425723,31.37275221,0",-7.790425723,31.37275221
163
- 161,AGHALLA,"-8.379023522,31.00149934,0",-8.379023522,31.00149934
164
- 162,WIZAMMARNE,"-8.424340636,30.89790753,0",-8.424340636,30.89790753
165
- 163,DOU ANAMAR,"-8.25663632,31.14251934,0",-8.25663632,31.14251934
166
- 164,ADOUZE,"-8.265609154,31.12606139,0",-8.265609154,31.12606139
167
- 165,TINZARTE,"-8.008483393,31.19039234,0",-8.008483393,31.19039234
168
- 166,IMITAZAKHTE,"-6.679107629,31.28762664,0",-6.679107629,31.28762664
169
- 167,ANZELFI,"-8.54142639,31.0428742,0",-8.54142639,31.0428742
170
- 168,IMIRGHENE,"-7.274854704,31.24935118,0",-7.274854704,31.24935118
171
- 169,IMAGDAL,"-8.119632896,31.12302789,0",-8.119632896,31.12302789
172
- 170,TAWITE,"-8.075970003,31.09290085,0",-8.075970003,31.09290085
173
- 171,AMLOUGUI,"-7.649426842,31.23570758,0",-7.649426842,31.23570758
174
- 172,TASAMOUTE,"-8.109871191,31.02576739,0",-8.109871191,31.02576739
175
- 173,AMSSED,"-8.311672788,30.93709876,0",-8.311672788,30.93709876
176
- 174,ANFGAYNE,"-7.694702248,31.231803,0",-7.694702248,31.231803
177
- 175,TAGADIRTE,"-8.701881729,31.10208624,0",-8.701881729,31.10208624
178
- 176,ZINIT LALLA AAZIZA,"-8.700591256,31.0812321,0",-8.700591256,31.0812321
179
- 177,TAMTDJIT,"-8.655328517,31.05886225,0",-8.655328517,31.05886225
180
- 178,AIT IHLA,"-8.361156722,31.11029123,0",-8.361156722,31.11029123
181
- 179,TLATE,"-8.35817683,31.10664588,0",-8.35817683,31.10664588
182
- 180,WINIMADSEN,"-7.48798433,31.30994744,0",-7.48798433,31.30994744
183
- 181,ASSOULE,"-8.285985146,30.92565576,0",-8.285985146,30.92565576
184
- 182,WASSANTOTE,"-8.18424076,31.09273558,0",-8.18424076,31.09273558
185
- 183,AIT AYOUBE,"-8.022010242,30.99507123,0",-8.022010242,30.99507123
186
- 184,TAGNITE,"-8.675968143,31.04095368,0",-8.675968143,31.04095368
187
- 185,TADDARTE,"-7.979404181,31.14226911,0",-7.979404181,31.14226911
188
- 186,,"-8.167152366,30.99464682,0",-8.167152366,30.99464682
189
- 187,ADRAG,"-8.253195535,30.97733592,0",-8.253195535,30.97733592
190
- 188,ANABDOUR,"-8.244241981,30.97126033,0",-8.244241981,30.97126033
191
- 189,MZOUZITE,"-8.243059132,30.96860948,0",-8.243059132,30.96860948
192
- 190,AIT BARRIHI,"-8.195323317,30.99222315,0",-8.195323317,30.99222315
193
- 191,ALANOU MAZGHNI,"-8.123760765,31.02343567,0",-8.123760765,31.02343567
194
- 192,IGRAMNE-IMI NOUAKA,"-6.121369893,31.45712817,0",-6.121369893,31.45712817
195
- 193,IGRI FOUDENE,"-7.718579809,31.29225575,0",-7.718579809,31.29225575
196
- 194,AKRDA,"-8.040496688,30.99251415,0",-8.040496688,30.99251415
197
- 195,AIT MOUSSA,"-8.046781385,30.98907614,0",-8.046781385,30.98907614
198
- 196,TIGHARGHISTE,"-8.061533719,30.99127805,0",-8.061533719,30.99127805
199
- 197,ASSAKA,"-7.673208952,31.36643128,0",-7.673208952,31.36643128
200
- 198,TIZANGHIRINE,"-9.003674741,30.99520662,0",-9.003674741,30.99520662
201
- 199,ANARNI,"-8.316482209,31.11751002,0",-8.316482209,31.11751002
202
- 200,AZGOUR,"-8.312961466,31.13806145,0",-8.312961466,31.13806145
203
- 201,TAGOUDJA,"-7.510471158,31.37311654,0",-7.510471158,31.37311654
204
- 202,AIT TAGGOUME,"-7.523740779,31.36439845,0",-7.523740779,31.36439845
205
- 203,ADOUZ,"-8.435303451,30.91718644,0",-8.435303451,30.91718644
206
- 204,ASSOUL,"-8.350141876,30.90541249,0",-8.350141876,30.90541249
207
- 205,TADRART,"-7.734595102,31.207539,0",-7.734595102,31.207539
208
- 206,AGARD,"-7.648576947,31.27464029,0",-7.648576947,31.27464029
209
- 207,ASSAKA CHORFA,"-9.002771254,30.89973399,0",-9.002771254,30.89973399
210
- 208,ISLI,"-9.017260332,30.94970088,0",-9.017260332,30.94970088
211
- 209,TINDRI,"-8.60659665,31.00737725,0",-8.60659665,31.00737725
212
- 210,IGARNTIQURI,"-8.556631674,31.03931448,0",-8.556631674,31.03931448
213
- 211,IGRI NAIT HAMOU,"-7.714289853,31.28922589,0",-7.714289853,31.28922589
214
- 212,IMI NOUAGUE,"-6.507219911,31.31164693,0",-6.507219911,31.31164693
215
- 213,IMAOUNINE,"-7.241029231,31.28750314,0",-7.241029231,31.28750314
216
- 214,IHANDAGHENE,"-7.268670136,31.27913073,0",-7.268670136,31.27913073
217
- 215,TARGA,"-8.062095344,31.08941826,0",-8.062095344,31.08941826
218
- 216,TIGMATINE,"-8.871173133,31.09140265,0",-8.871173133,31.09140265
219
- 217,TAJOUGJITE,"-7.142724853,31.22045065,0",-7.142724853,31.22045065
220
- 218,IDAISSA,"-7.976416621,31.13454988,0",-7.976416621,31.13454988
221
- 219,IMIN IGHZARN AISSA,"-8.578943436,31.01448801,0",-8.578943436,31.01448801
222
- 220,TIMCHOUJTE,"-7.244350955,31.31050637,0",-7.244350955,31.31050637
223
- 221,TISSAYNE,"-8.934728699,31.06655367,0",-8.934728699,31.06655367
224
- 222,TAFRAOUTE,"-7.353618262,31.33674876,0",-7.353618262,31.33674876
225
- 223,AIT AOUASSI,"-7.349719343,31.33044408,0",-7.349719343,31.33044408
226
- 224,AGHBARANE,"-8.221073745,30.93873929,0",-8.221073745,30.93873929
227
- 225,AIT HSSAYNE,"-8.204087436,31.1389183,0",-8.204087436,31.1389183
228
- 226,TAGADIRTE NSIDI BEL QAS,"-7.767797703,31.25054841,0",-7.767797703,31.25054841
229
- 227,TISSILI NIGUADJI,"-7.693606161,31.40108034,0",-7.693606161,31.40108034
230
- 228,IZRAFEN,"-7.48918297,31.37080542,0",-7.48918297,31.37080542
231
- 229,ALLA NOUMARZI,"-8.157178044,30.97631353,0",-8.157178044,30.97631353
232
- 230,ASSAKA,"-7.134585047,31.21211585,0",-7.134585047,31.21211585
233
- 231,ANMITER,"-7.139775998,31.29199649,0",-7.139775998,31.29199649
234
- 232,TIMICHA,"-6.561634821,31.28603622,0",-6.561634821,31.28603622
235
- 233,EL HRTE,"-6.575098237,31.26301918,0",-6.575098237,31.26301918
236
- 234,ABGALZI,"-7.145792711,31.28018313,0",-7.145792711,31.28018313
237
- 235,IRGHEF,"-7.707368088,31.28349504,0",-7.707368088,31.28349504
238
- 236,AGNI,"-8.205291681,30.95571866,0",-8.205291681,30.95571866
239
- 237,TOUZZONTANE,"-8.212883175,30.95485707,0",-8.212883175,30.95485707
240
- 238,TIZI OU CHEG,"-7.676960537,31.28703604,0",-7.676960537,31.28703604
241
- 239,TOUROURTE,"-8.056901283,31.16782859,0",-8.056901283,31.16782859
242
- 240,AGUERZGA,"-6.119495917,31.49592185,0",-6.119495917,31.49592185
243
- 241,AOUSSIR,"-8.881594834,31.07956008,0",-8.881594834,31.07956008
244
- 242,ANSSA,"-8.492597726,30.98931298,0",-8.492597726,30.98931298
245
- 243,AWRIR,"-7.622404978,31.35916276,0",-7.622404978,31.35916276
246
- 244,WIGRANE,"-7.660595608,31.25863387,0",-7.660595608,31.25863387
247
- 245,ANRAZE,"-8.065444555,31.17173905,0",-8.065444555,31.17173905
248
- 246,AMESLOH,"-8.476795995,30.99161301,0",-8.476795995,30.99161301
249
- 247,TADDARATE,"-8.47021036,31.00998295,0",-8.47021036,31.00998295
250
- 248,TIGNARINE,"-8.480516854,31.10976709,0",-8.480516854,31.10976709
251
- 249,TIDRITE,"-5.842127606,31.64396077,0",-5.842127606,31.64396077
252
- 250,TARBAT,"-6.462074345,31.36227777,0",-6.462074345,31.36227777
253
- 251,TILFITINE,"-8.277117657,31.11776133,0",-8.277117657,31.11776133
254
- 252,TALAT NWARGUE,"-8.263895065,31.10196698,0",-8.263895065,31.10196698
255
- 253,TAGADIRTE EL BOOR,"-8.102563032,31.1560508,0",-8.102563032,31.1560508
256
- 254,TIZGUI,"-8.482122674,31.08812898,0",-8.482122674,31.08812898
257
- 255,IFAZDADNE,"-8.305709411,30.90635243,0",-8.305709411,30.90635243
258
- 256,AZAGHAR NADWAQ,"-8.065171121,31.12666314,0",-8.065171121,31.12666314
259
- 257,ILKRI,"-7.680245366,31.2246257,0",-7.680245366,31.2246257
260
- 258,IMASKARE,"-8.887233104,31.04004434,0",-8.887233104,31.04004434
261
- 259,BOUYZGARNE,"-7.71194699,31.24320063,0",-7.71194699,31.24320063
262
- 260,AGHELLA,"-8.863216279,31.08876411,0",-8.863216279,31.08876411
263
- 261,TALATANE,"-7.780461806,31.24592653,0",-7.780461806,31.24592653
264
- 262,IGRI LAKHMASS,"-7.775336615,31.27872173,0",-7.775336615,31.27872173
265
- 263,IZAHANE,"-7.657292989,31.27715731,0",-7.657292989,31.27715731
266
- 264,TIZGUI,"-8.177063418,31.18367261,0",-8.177063418,31.18367261
267
- 265,IGG,"-8.424342966,30.91197724,0",-8.424342966,30.91197724
268
- 266,IDGHAGHE,"-7.526584836,30.7003679,0",-7.526584836,30.7003679
269
- 267,KSAR AIT OUNIR,"-5.811146752,31.70253532,0",-5.811146752,31.70253532
270
- 268,AMASSINE,"-6.509539818,31.41636243,0",-6.509539818,31.41636243
271
- 269,TAOUJGALTE,"-6.34405063,31.39520221,0",-6.34405063,31.39520221
272
- 270,TARGA NAADA,"-6.503814061,31.26888738,0",-6.503814061,31.26888738
273
- 271,AGOUNSANE,"-7.800232094,31.34798036,0",-7.800232094,31.34798036
274
- 272,TINZARE,"-6.624488168,31.31027386,0",-6.624488168,31.31027386
275
- 273,AGRALIOUNE,"-6.555343101,31.22680537,0",-6.555343101,31.22680537
276
- 274,TAKOUCHT,"-7.819242968,31.28802923,0",-7.819242968,31.28802923
277
- 275,ANRAR,"-7.7767339,31.35555849,0",-7.7767339,31.35555849
278
- 276,TIMICHA,"-7.63908262,31.11996205,0",-7.63908262,31.11996205
279
- 277,AZALAGUE,"-7.641372612,31.12128054,0",-7.641372612,31.12128054
280
- 278,AIT IAZZA,"-5.777975403,31.78833057,0",-5.777975403,31.78833057
281
- 279,TIGHANIMINE,"-6.132570734,31.52703232,0",-6.132570734,31.52703232
282
- 280,TOURCHT,"-7.634188719,31.24043522,0",-7.634188719,31.24043522
283
- 281,TAROZOTE,"-7.502136185,31.36823721,0",-7.502136185,31.36823721
284
- 282,IHIYALEN,"-7.517931412,31.38141983,0",-7.517931412,31.38141983
285
- 283,AMSKARE-FOUKANI,"-6.266939777,31.50218915,0",-6.266939777,31.50218915
286
- 284,AIT BARKA,"-7.659018163,31.23353635,0",-7.659018163,31.23353635
287
- 285,IHOUDIGUENE,"-5.782133016,31.79529304,0",-5.782133016,31.79529304
288
- 286,IKIS,"-8.394850979,30.92661821,0",-8.394850979,30.92661821
289
- 287,OUDDIF,"-8.304477477,30.9976719,0",-8.304477477,30.9976719
290
- 288,ARG,"-8.269316678,30.90817692,0",-8.269316678,30.90817692
291
- 289,IGROUKA,"-7.641844734,31.37701613,0",-7.641844734,31.37701613
292
- 290,ASGUINE,"-7.761773298,31.3366744,0",-7.761773298,31.3366744
293
- 291,ANINS,"-7.692906923,31.31879063,0",-7.692906923,31.31879063
294
- 292,IMINTGHLI,"-8.801087341,31.09106256,0",-8.801087341,31.09106256
295
- 293,IKISS,"-7.507785488,31.32512731,0",-7.507785488,31.32512731
296
- 294,CHAABAT ELMA,"-7.787736965,31.3720564,0",-7.787736965,31.3720564
297
- 295,TILIOUINE,"-6.562538396,31.29226808,0",-6.562538396,31.29226808
298
- 296,AZADALE,"-6.601113902,31.31452611,0",-6.601113902,31.31452611
299
- 297,BOUDJAME,"-5.783355194,31.77381534,0",-5.783355194,31.77381534
300
- 298,TAMSSLITE,"-6.460035903,31.43563737,0",-6.460035903,31.43563737
301
- 299,INKZDAME,"-8.004535496,31.00475544,0",-8.004535496,31.00475544
302
- 300,ATKI,"-8.032025678,30.9931675,0",-8.032025678,30.9931675
303
- 301,OURMARE,"-8.252416876,31.08642563,0",-8.252416876,31.08642563
304
- 302,TAMZARITE,"-6.547114664,31.41003957,0",-6.547114664,31.41003957
305
- 303,LAMKIK,"-6.443690553,31.37387911,0",-6.443690553,31.37387911
306
- 304,ASSAKA,"-6.432129548,31.39334157,0",-6.432129548,31.39334157
307
- 305,TIZGUI,"-6.476920363,31.40622175,0",-6.476920363,31.40622175
308
- 306,ASSAKA,"-6.483024781,31.41801641,0",-6.483024781,31.41801641
309
- 307,TADAFALTE,"-8.321145313,30.97903581,0",-8.321145313,30.97903581
310
- 308,TAGADIRTE,"-8.310292123,30.98004249,0",-8.310292123,30.98004249
311
- 309,TAMZANDIRT,"-7.751230364,31.33215256,0",-7.751230364,31.33215256
312
- 310,ANMID,"-7.607920302,30.85848983,0",-7.607920302,30.85848983
313
- 311,AZAL,"-8.264922194,30.94655686,0",-8.264922194,30.94655686
314
- 312,IMALLAHNE,"-7.672856622,31.3860914,0",-7.672856622,31.3860914
315
- 313,AMJGAGE,"-6.209971614,31.45239865,0",-6.209971614,31.45239865
316
- 314,TAGDOURT,"-7.620397609,30.84283446,0",-7.620397609,30.84283446
317
- 315,TALJORFTE,"-7.728949362,31.30692128,0",-7.728949362,31.30692128
318
- 316,AIT IGHMOURE,"-7.538210307,30.70168846,0",-7.538210307,30.70168846
319
- 317,AGRD NOUZROU,"-6.558541747,31.28850738,0",-6.558541747,31.28850738
320
- 318,AMOUGAR,"-5.846609784,31.62470485,0",-5.846609784,31.62470485
321
- 319,AIT QUALLA,"-7.656339369,30.90544675,0",-7.656339369,30.90544675
322
- 320,AL MDOUNE,"-6.20235902,31.42763569,0",-6.20235902,31.42763569
323
- 321,ZRIJT,"-8.441443251,30.91375831,0",-8.441443251,30.91375831
324
- 322,TANAMMARE,"-8.398497315,30.9107806,0",-8.398497315,30.9107806
325
- 323,AIT HSSAINE,"-8.151179364,31.20399903,0",-8.151179364,31.20399903
326
- 324,TICHKI,"-7.629171133,31.34976701,0",-7.629171133,31.34976701
327
- 325,TEZ GUI,"-8.039204879,31.07330568,0",-8.039204879,31.07330568
328
- 326,AIT YAAZZA,"-5.887769437,31.68758446,0",-5.887769437,31.68758446
329
- 327,TICHKI,"-6.305032532,31.50476453,0",-6.305032532,31.50476453
330
- 328,AIT MOUSSA OU DAOUD,"-6.296860707,31.41044965,0",-6.296860707,31.41044965
331
- 329,AIT TOUKHSSINE,"-5.792466322,31.77932095,0",-5.792466322,31.77932095
332
- 330,,"-5.822449187,31.69079439,0",-5.822449187,31.69079439
333
- 331,AMSSKAR,"-6.38208111,31.44339569,0",-6.38208111,31.44339569
334
- 332,TITADRI,"-7.330541129,31.37025263,0",-7.330541129,31.37025263
335
- 333,IGUINE,"-7.649034385,31.37278854,0",-7.649034385,31.37278854
336
- 334,ZAOUIT,"-8.195121207,31.19290153,0",-8.195121207,31.19290153
337
- 335,TIMSLAH,"-8.341765942,31.00029908,0",-8.341765942,31.00029908
338
- 336,TABOUYDANTE,"-5.876448445,31.68864413,0",-5.876448445,31.68864413
339
- 337,KSSAR AIT BOU YAKNIFENE,"-5.880910957,31.68190672,0",-5.880910957,31.68190672
340
- 338,CENTRE MSEMRIR,"-5.819558695,31.69511553,0",-5.819558695,31.69511553
341
- 339,ZAOUITE,"-7.522361715,31.35499748,0",-7.522361715,31.35499748
342
- 340,TIZI TIGARTE,"-8.303259489,30.99599767,0",-8.303259489,30.99599767
343
- 341,AIT ALIOU YAKKOU,"-5.763268987,31.83493978,0",-5.763268987,31.83493978
344
- 342,TANAGHRAMT,"-7.879417183,30.90181545,0",-7.879417183,30.90181545
345
- 343,TIMYALINE,"-7.880210879,30.90518988,0",-7.880210879,30.90518988
346
- 344,ANZI,"-8.197385544,30.83917524,0",-8.197385544,30.83917524
347
- 345,TIFSSTE,"-7.132420159,31.11779137,0",-7.132420159,31.11779137
348
- 346,TAOURIRTE NAIT SALAH,"-8.290143915,30.97411976,0",-8.290143915,30.97411976
349
- 347,TASSILA,"-8.266727192,30.97711903,0",-8.266727192,30.97711903
350
- 348,AIT MOUSSA OU ICHOU,"-5.747017292,31.83553539,0",-5.747017292,31.83553539
351
- 349,ABRACHE,"-6.681216456,31.25899907,0",-6.681216456,31.25899907
352
- 350,AIT SAID OU DAOUD,"-5.888790157,31.57765321,0",-5.888790157,31.57765321
353
- 351,AGARZAGA,"-6.882608642,31.21876174,0",-6.882608642,31.21876174
354
- 352,ASSAISS,"-7.609851014,30.57216873,0",-7.609851014,30.57216873
355
- 353,TINIDER,"-7.666679065,30.61749972,0",-7.666679065,30.61749972
356
- 354,IMOUZZAR,"-7.384296298,31.32519478,0",-7.384296298,31.32519478
357
- 355,GHASSAT,"-8.335186603,30.99921225,0",-8.335186603,30.99921225
358
- 356,IMOULDIGHENE,"-7.959453166,30.95113726,0",-7.959453166,30.95113726
359
- 357,,"-7.527966123,30.61390767,0",-7.527966123,30.61390767
360
- 358,AIT TOUMERT,"-6.243369405,31.41574114,0",-6.243369405,31.41574114
361
- 359,IGUENTOURNE,"-8.938717662,30.6912082,0",-8.938717662,30.6912082
362
- 360,AMAGDOUL,"-8.925222424,30.66929851,0",-8.925222424,30.66929851
363
- 361,TIMSSALE,"-6.694552474,31.23457144,0",-6.694552474,31.23457144
364
- 362,TAGADIRTE AIT WAHI,"-7.947583505,30.9210867,0",-7.947583505,30.9210867
365
- 363,TAGHIYA,"-6.808894536,31.26166383,0",-6.808894536,31.26166383
366
- 364,TIGLIANE,"-8.89478025,30.72539073,0",-8.89478025,30.72539073
367
- 365,TAGADIRET,"-8.886693656,30.72955695,0",-8.886693656,30.72955695
368
- 366,TAGNIT,"-8.199316694,30.87943334,0",-8.199316694,30.87943334
369
- 367,ASGAWR,"-7.756406851,30.71787208,0",-7.756406851,30.71787208
370
- 368,AIT TABOU LMANTE,"-5.864282929,31.68225821,0",-5.864282929,31.68225821
371
- 369,AIT TAFKIRTE,"-5.799661316,31.74693731,0",-5.799661316,31.74693731
372
- 370,TAWRIRT,"-8.203877152,30.88183484,0",-8.203877152,30.88183484
373
- 371,TILIOUINE,"-6.987594943,31.25630831,0",-6.987594943,31.25630831
374
- 372,AGDIME,"-6.853643978,31.30609377,0",-6.853643978,31.30609377
375
- 373,EL HOUANTE,"-6.85985786,31.2648211,0",-6.85985786,31.2648211
376
- 374,ZAOUTE,"-7.945659986,30.97287352,0",-7.945659986,30.97287352
377
- 375,TAMMASTE,"-7.662227195,31.05596146,0",-7.662227195,31.05596146
378
- 376,AIT BEN HAMMOU,"-5.89440563,31.57443673,0",-5.89440563,31.57443673
379
- 377,AWFOUR,"-8.848306639,30.75556169,0",-8.848306639,30.75556169
380
- 378,WALLOUSS,"-7.764813203,30.75665998,0",-7.764813203,30.75665998
381
- 379,,"-5.800934219,31.74152475,0",-5.800934219,31.74152475
382
- 380,TASSALLATE,"-7.627445074,31.3775513,0",-7.627445074,31.3775513
383
- 381,IKAMACHENE,"-8.881199254,30.72921941,0",-8.881199254,30.72921941
384
- 382,AGHALLA,"-7.8837366,30.89122112,0",-7.8837366,30.89122112
385
- 383,TANAJMCHT,"-8.151772777,30.85684235,0",-8.151772777,30.85684235
386
- 384,AIT DAOUD,"-6.26684104,31.40875615,0",-6.26684104,31.40875615
387
- 385,AMSKARE-ELTHTANI,"-6.230746416,31.4875726,0",-6.230746416,31.4875726
388
- 386,TAGHZOUTE,"-5.809855758,31.72648804,0",-5.809855758,31.72648804
389
- 387,ZAOUIAT SIDI IDDAR,"-7.69174931,31.06980356,0",-7.69174931,31.06980356
390
- 388,TAMGUIMGANTE,"-7.381864596,31.34207263,0",-7.381864596,31.34207263
391
- 389,IMIDER,"-6.686775913,31.21099313,0",-6.686775913,31.21099313
392
- 390,EL KERRAKER,"-8.454871666,30.68850249,0",-8.454871666,30.68850249
393
- 391,TAMDDAKHTE,"-7.144840326,31.08841797,0",-7.144840326,31.08841797
394
- 392,ASKAWN,"-7.78182368,30.74016769,0",-7.78182368,30.74016769
395
- 393,IMAGHOUDENEJ,"-7.682126165,31.06082178,0",-7.682126165,31.06082178
396
- 394,BAAKADE,"-7.685716157,31.05355428,0",-7.685716157,31.05355428
397
- 395,ANSSGHA,"-7.199113119,31.13741376,0",-7.199113119,31.13741376
398
- 396,SDIW,"-8.235739081,30.81751283,0",-8.235739081,30.81751283
399
- 397,AOUZLIDA,"-8.908769399,30.71410763,0",-8.908769399,30.71410763
400
- 398,TANOUZAKTE,"-8.819116057,30.9100969,0",-8.819116057,30.9100969
401
- 399,TANDILTE,"-8.007614533,30.85936924,0",-8.007614533,30.85936924
402
- 400,TIZGUI NIBARAGHNE,"-7.945922161,30.90710765,0",-7.945922161,30.90710765
403
- 401,ANMITERE,"-7.904631515,30.99124262,0",-7.904631515,30.99124262
404
- 402,AIT SAWAL,"-8.197984999,30.88738233,0",-8.197984999,30.88738233
405
- 403,BOUGADIR,"-8.630610581,30.70615098,0",-8.630610581,30.70615098
406
- 404,MEZDOURT,"-7.800690578,30.71758595,0",-7.800690578,30.71758595
407
- 405,TIFKILTE,"-7.921046416,30.88452468,0",-7.921046416,30.88452468
408
- 406,TAZIRTE,"-8.775818842,30.87767967,0",-8.775818842,30.87767967
409
- 407,TESSFFEDRARTE,"-7.645428403,30.57160162,0",-7.645428403,30.57160162
410
- 408,AIT AICHT,"-7.621116272,30.55955648,0",-7.621116272,30.55955648
411
- 409,TISSLITE,"-7.597444479,30.55429253,0",-7.597444479,30.55429253
412
- 410,FERME AIT YOUB EL AOUMARI HAJ Med,"-8.415410138,30.68949467,0",-8.415410138,30.68949467
413
- 411,IDGOU WANOUDINE,"-7.830881041,31.02212679,0",-7.830881041,31.02212679
414
- 412,AIT ABDESSLAM,"-5.808145999,31.75516944,0",-5.808145999,31.75516944
415
- 413,,"-5.802036392,31.73764392,0",-5.802036392,31.73764392
416
- 414,TIZGUINE,"-5.869412138,31.59690225,0",-5.869412138,31.59690225
417
- 415,TALMODAT,"-8.569451299,30.86561961,0",-8.569451299,30.86561961
418
- 416,AKHFERGA,"-8.832855006,30.87295993,0",-8.832855006,30.87295993
419
- 417,AIT IBOURK,"-8.327818985,30.85038146,0",-8.327818985,30.85038146
420
- 418,TAKALIT,"-8.329152945,30.84511839,0",-8.329152945,30.84511839
421
- 419,TIZIRTNOUDBDI,"-8.472046968,30.84961712,0",-8.472046968,30.84961712
422
- 420,AGUERD OURIGH,"-8.582792805,30.79763493,0",-8.582792805,30.79763493
423
- 421,TIGHINMIMT,"-8.584455427,30.79324401,0",-8.584455427,30.79324401
424
- 422,TIZA-YRHE,"-8.595599282,30.79109193,0",-8.595599282,30.79109193
425
- 423,AL KHOUMS,"-8.579016064,30.82294241,0",-8.579016064,30.82294241
426
- 424,RKAT,"-7.816862779,30.7878928,0",-7.816862779,30.7878928
427
- 425,AIT OUZAGHAR,"-7.791460939,30.81381739,0",-7.791460939,30.81381739
428
- 426,ANNOUMSSE,"-8.788839295,30.87556701,0",-8.788839295,30.87556701
429
- 427,IGHAZRA,"-8.643017916,30.74872935,0",-8.643017916,30.74872935
430
- 428,TIRAZAT,"-8.595247967,30.75262692,0",-8.595247967,30.75262692
431
- 429,IMINTFARKI,"-8.618869079,30.75029522,0",-8.618869079,30.75029522
432
- 430,AIT BELOUAH,"-8.752385605,30.65092821,0",-8.752385605,30.65092821
433
- 431,ARG,"-8.955168704,30.80643911,0",-8.955168704,30.80643911
434
- 432,TAOURIRTE IMOUCHA,"-8.867737505,30.86905652,0",-8.867737505,30.86905652
435
- 433,ASSAKA,"-8.91282953,30.8971422,0",-8.91282953,30.8971422
436
- 434,AGLAGAL,"-7.76476813,30.69129018,0",-7.76476813,30.69129018
437
- 435,AGUERD NOUDRAR,"-7.757166229,30.69023965,0",-7.757166229,30.69023965
438
- 436,TAKOUCHT,"-8.603375344,30.77826858,0",-8.603375344,30.77826858
439
- 437,TATRARAT,"-6.435979226,31.37640463,0",-6.435979226,31.37640463
440
- 438,IKOUCHOUDEN,"-7.810788121,30.77672478,0",-7.810788121,30.77672478
441
- 439,ILEMERZEN,"-7.823503006,30.80488341,0",-7.823503006,30.80488341
442
- 440,OUZLINE,"-7.28147163,31.30065138,0",-7.28147163,31.30065138
443
- 441,IGHILAN ADBDI,"-8.484478269,30.83504176,0",-8.484478269,30.83504176
444
- 442,IMI NOULAOUNE,"-6.506134637,31.37691833,0",-6.506134637,31.37691833
445
- 443,FARNAT TAOUINAKHT,"-8.485791943,30.77488045,0",-8.485791943,30.77488045
446
- 444,TINISKTE,"-8.144569317,31.113591,0",-8.144569317,31.113591
447
- 445,ADOUZ,"-8.183960487,30.86197654,0",-8.183960487,30.86197654
448
- 446,AIT YAHIA,"-8.257623929,30.84433189,0",-8.257623929,30.84433189
449
- 447,TALBOURINE,"-8.421629944,30.80069862,0",-8.421629944,30.80069862
450
- 448,AZAENE,"-8.610499678,30.70795003,0",-8.610499678,30.70795003
451
- 449,TAZELFTE,"-7.147408952,31.09841069,0",-7.147408952,31.09841069
452
- 450,AGUERD,"-8.762439227,30.77371202,0",-8.762439227,30.77371202
453
- 451,TAGANTOURTE,"-8.759656094,30.79795227,0",-8.759656094,30.79795227
454
- 452,IMOULASS,"-8.754958456,30.74281282,0",-8.754958456,30.74281282
455
- 453,TIRAKHT,"-8.755493446,30.73671007,0",-8.755493446,30.73671007
456
- 454,ASDERM,"-8.38636388,30.76145258,0",-8.38636388,30.76145258
457
- 455,OUZIGHIMT,"-8.588565128,30.77712713,0",-8.588565128,30.77712713
458
- 456,IFASFASS,"-8.63714647,30.74690271,0",-8.63714647,30.74690271
459
- 457,IGHEBLI,"-7.932619008,30.90228266,0",-7.932619008,30.90228266
460
- 458,TAGOUNSSIM,"-8.549138911,30.70883558,0",-8.549138911,30.70883558
461
- 459,IMOUREKHSANE,"-7.865672085,30.9169487,0",-7.865672085,30.9169487
462
- 460,AMGUERNIS,"-8.553794608,30.86876174,0",-8.553794608,30.86876174
463
- 461,TITBIRINE,"-8.554268198,30.86437507,0",-8.554268198,30.86437507
464
- 462,AGARDE,"-8.182037107,31.1332386,0",-8.182037107,31.1332386
465
- 463,AIT AMLOUCHE,"-5.811800541,31.74495977,0",-5.811800541,31.74495977
466
- 464,AIT OUAATIK,"-5.800731952,31.75635665,0",-5.800731952,31.75635665
467
- 465,IFRANE,"-8.820574903,30.75352712,0",-8.820574903,30.75352712
468
- 466,,"-8.766850821,30.72686082,0",-8.766850821,30.72686082
469
- 467,AGUERD OUSGUINE,"-8.767145739,30.73643085,0",-8.767145739,30.73643085
470
- 468,TAMSOULT,"-7.942552746,30.96699576,0",-7.942552746,30.96699576
471
- 469,TASSOUANTE,"-7.937216627,30.97408784,0",-7.937216627,30.97408784
472
- 470,ALMDAD,"-8.310710124,30.76448039,0",-8.310710124,30.76448039
473
- 471,TAMIJARCHT,"-8.302608514,30.7914501,0",-8.302608514,30.7914501
474
- 472,AMGHAZ,"-8.317951789,30.77429776,0",-8.317951789,30.77429776
475
- 473,AIT OUMGHAR,"-8.884564933,30.73201756,0",-8.884564933,30.73201756
476
- 474,TANZINRIT,"-8.513195119,30.75180242,0",-8.513195119,30.75180242
477
- 475,,"-8.541490603,30.7364508,0",-8.541490603,30.7364508
478
- 476,IGOURZANE,"-7.818114538,30.81078939,0",-7.818114538,30.81078939
479
- 477,TIRKNIT,"-8.45009892,30.82258425,0",-8.45009892,30.82258425
480
- 478,BUREAU DES EAUX ET FORETS,"-8.4455527,30.68231957,0",-8.4455527,30.68231957
481
- 479,FERMAT EL FASSI PRES DU DOUAR OULAD AMRANE,"-8.452421991,30.66732962,0",-8.452421991,30.66732962
482
- 480,TALMOUDAAT,"-7.806956411,30.89324192,0",-7.806956411,30.89324192
483
- 481,TIZGUI,"-7.806830274,30.90103568,0",-7.806830274,30.90103568
484
- 482,ZAOUIAT BOU INCHIBIKENE,"-8.54941558,30.70032408,0",-8.54941558,30.70032408
485
- 483,INDARMASS,"-8.54220451,30.7221921,0",-8.54220451,30.7221921
486
- 484,TIKFELT,"-8.722743606,30.76342809,0",-8.722743606,30.76342809
487
- 485,IDWAMGHAR,"-7.820295831,30.80721099,0",-7.820295831,30.80721099
488
- 486,TARGA,"-7.932835889,30.97202419,0",-7.932835889,30.97202419
489
- 487,AZAR,"-8.965981567,30.8325616,0",-8.965981567,30.8325616
490
- 488,AMSKRAR,"-8.344054924,30.82712525,0",-8.344054924,30.82712525
491
- 489,,"-8.648334951,30.68129831,0",-8.648334951,30.68129831
492
- 490,WAWARG,"-7.923174319,30.98241656,0",-7.923174319,30.98241656
493
- 491,TISSWAIK,"-7.730897189,30.8234764,0",-7.730897189,30.8234764
494
- 492,AGDZ,"-7.815615943,30.74139918,0",-7.815615943,30.74139918
495
- 493,AIT TOUGDA,"-7.790395185,30.80279245,0",-7.790395185,30.80279245
496
- 494,AIT TIYOUGA,"-8.393363749,30.84861434,0",-8.393363749,30.84861434
497
- 495,TADMANTE,"-7.784747386,30.76229142,0",-7.784747386,30.76229142
498
- 496,TALMERSELTE,"-7.813176069,31.00818682,0",-7.813176069,31.00818682
499
- 497,IZAROUALENE,"-8.871658014,30.73576255,0",-8.871658014,30.73576255
500
- 498,ITORRA,"-8.956211539,30.7455058,0",-8.956211539,30.7455058
501
- 499,TANOUTE,"-8.834599707,30.90320047,0",-8.834599707,30.90320047
502
- 500,AIT DDYA,"-7.574460469,30.57790584,0",-7.574460469,30.57790584
503
- 501,TIMITARE,"-7.850853086,30.78919204,0",-7.850853086,30.78919204
504
- 502,AIT HAMMOU,"-5.903878302,31.56838855,0",-5.903878302,31.56838855
505
- 503,TILLOUTE,"-5.85176342,31.6234145,0",-5.85176342,31.6234145
506
- 504,TAMANNOUT NOUFELLA,"-7.603880345,30.60415703,0",-7.603880345,30.60415703
507
- 505,AIT AMRANE,"-7.578220237,30.59381345,0",-7.578220237,30.59381345
508
- 506,AGOULZI,"-7.572403098,30.58983434,0",-7.572403098,30.58983434
509
- 507,AGUERD NOUZAGHAR,"-7.820739744,30.82955591,0",-7.820739744,30.82955591
510
- 508,AMAZZER,"-7.81893493,30.84133263,0",-7.81893493,30.84133263
511
- 509,AIT MERHOUCH,"-8.438238369,30.80710931,0",-8.438238369,30.80710931
512
- 510,TAGUENZA,"-8.807073414,30.87551007,0",-8.807073414,30.87551007
513
- 511,IGHIL,"-8.81733012,30.7610419,0",-8.81733012,30.7610419
514
- 512,AIT IFRANE,"-8.884265911,30.73589552,0",-8.884265911,30.73589552
515
- 513,IKISS,"-7.889390228,30.95270649,0",-7.889390228,30.95270649
516
- 514,AGADIR,"-7.8368164,31.01085191,0",-7.8368164,31.01085191
517
- 515,ILEMSSANE,"-7.836797742,30.81324563,0",-7.836797742,30.81324563
518
- 516,ID WASKIOUIDE,"-7.785849147,30.75382085,0",-7.785849147,30.75382085
519
- 517,TAWARDA,"-8.118515403,30.86703651,0",-8.118515403,30.86703651
520
- 518,TAKHAZNIT,"-8.620628211,30.77263308,0",-8.620628211,30.77263308
521
- 519,TAGOUNITE AFEKHAR,"-7.836808851,30.98972237,0",-7.836808851,30.98972237
522
- 520,AIT BEN YOUSSEF,"-8.605889427,30.66959105,0",-8.605889427,30.66959105
523
- 521,AKOUCHTIM,"-7.735235669,30.81551173,0",-7.735235669,30.81551173
524
- 522,IKACHANEN,"-8.8459234,30.93416814,0",-8.8459234,30.93416814
525
- 523,TIKCHIDERNE,"-7.766870029,31.03412592,0",-7.766870029,31.03412592
526
- 524,TALOUSTE,"-7.494700542,30.63500691,0",-7.494700542,30.63500691
527
- 525,WAWDIRNAT,"-8.431702241,30.80227715,0",-8.431702241,30.80227715
528
- 526,AMMADDANS,"-8.239451146,30.81262803,0",-8.239451146,30.81262803
529
- 527,TAMSOULTE,"-7.766640775,31.03257926,0",-7.766640775,31.03257926
530
- 528,AIT SADDEN,"-7.641380906,30.60288001,0",-7.641380906,30.60288001
531
- 529,TALAIOUNINE,"-8.754866761,30.66771507,0",-8.754866761,30.66771507
532
- 530,AIT MAADE,"-7.92230646,30.87650864,0",-7.92230646,30.87650864
533
- 531,TINSAMLAL,"-8.219098098,30.88172457,0",-8.219098098,30.88172457
534
- 532,AGNI,"-8.973937105,30.77574828,0",-8.973937105,30.77574828
535
- 533,TAMJJIRCHT,"-7.78243101,30.80973959,0",-7.78243101,30.80973959
536
- 534,ARMD,"-8.44233477,30.81919047,0",-8.44233477,30.81919047
537
- 535,AFELLA NOUZEGROUZE,"-8.027801881,30.86409957,0",-8.027801881,30.86409957
538
- 536,ARGHANE,"-8.204435538,30.88465368,0",-8.204435538,30.88465368
539
- 537,TAFILALT,"-8.976056085,30.79583021,0",-8.976056085,30.79583021
540
- 538,ADGHIGH,"-7.788831091,30.71192424,0",-7.788831091,30.71192424
541
- 539,OULAD AMER BEN ALI,"-8.513929646,30.62833394,0",-8.513929646,30.62833394
542
- 540,SIDI JAAFAR,"-6.523482797,31.26094675,0",-6.523482797,31.26094675
543
- 541,MGOUNTE,"-8.878252894,30.85004941,0",-8.878252894,30.85004941
544
- 542,AIT DAOUD,"-8.606458577,30.67650199,0",-8.606458577,30.67650199
545
- 543,BOUZOUGGAR,"-8.521814335,30.75193169,0",-8.521814335,30.75193169
546
- 544,AGOUJGALE,"-8.837669225,30.95456154,0",-8.837669225,30.95456154
547
- 545,TISSALE,"-8.626809086,30.85858292,0",-8.626809086,30.85858292
548
- 546,AMANE N-OULILI,"-8.336798501,30.76581498,0",-8.336798501,30.76581498
549
- 547,ANROZ,"-7.770804497,30.79985099,0",-7.770804497,30.79985099
550
- 548,TALMESTE,"-7.766250524,31.02173797,0",-7.766250524,31.02173797
551
- 549,OULAD AMRANE,"-8.426711211,30.67771642,0",-8.426711211,30.67771642
552
- 550,AFENSSOU,"-8.783648105,30.7070996,0",-8.783648105,30.7070996
553
- 551,MAGAT,"-8.416312875,30.85561983,0",-8.416312875,30.85561983
554
- 552,IFGHI,"-8.420335107,30.83778853,0",-8.420335107,30.83778853
555
- 553,AGUELMOUSSE,"-7.407680932,31.26484514,0",-7.407680932,31.26484514
556
- 554,AMAGHLOU,"-8.658584896,30.83817677,0",-8.658584896,30.83817677
557
- 555,TAMSOULT,"-8.608230566,30.8483082,0",-8.608230566,30.8483082
558
- 556,IHERFACH,"-8.62871585,30.82780329,0",-8.62871585,30.82780329
559
- 557,AZROU,"-7.763354336,31.01832251,0",-7.763354336,31.01832251
560
- 558,TIWRAR,"-7.759653433,31.03369852,0",-7.759653433,31.03369852
561
- 559,TEZZIR,"-7.755934806,31.02288592,0",-7.755934806,31.02288592
562
- 560,TAOURIRTE NOUMZIL,"-7.751523945,31.01559477,0",-7.751523945,31.01559477
563
- 561,,"-8.447254032,30.67739793,0",-8.447254032,30.67739793
564
- 562,OULAD FARESS,"-8.455642046,30.70263469,0",-8.455642046,30.70263469
565
- 563,ASSAKA,"-7.562672188,30.60210807,0",-7.562672188,30.60210807
566
- 564,TAGMOUTE,"-8.660391396,30.83004675,0",-8.660391396,30.83004675
567
- 565,ANNEZIGH,"-8.695404924,30.82720328,0",-8.695404924,30.82720328
568
- 566,TIMLILT,"-8.114425009,30.86001307,0",-8.114425009,30.86001307
569
- 567,AMSOUZARTE,"-7.83329748,31.01584663,0",-7.83329748,31.01584663
570
- 568,BOUSNOUSS,"-8.287052391,30.84385828,0",-8.287052391,30.84385828
571
- 569,BARKOUSSE,"-8.818105714,30.95152313,0",-8.818105714,30.95152313
572
- 570,AIT SAID,"-8.76977872,30.65467345,0",-8.76977872,30.65467345
573
- 571,TIGANZIOUINE,"-8.67032237,30.76594085,0",-8.67032237,30.76594085
574
- 572,AZGOUR,"-7.65942489,30.5451051,0",-7.65942489,30.5451051
575
- 573,AIT TACHRIFT,"-8.109758686,30.8643923,0",-8.109758686,30.8643923
576
- 574,AGADIRANE,"-8.066177132,30.89795236,0",-8.066177132,30.89795236
577
- 575,TAMADGHOUST,"-8.1561478,30.90891373,0",-8.1561478,30.90891373
578
- 576,IZAMRANE,"-8.133006882,30.86020781,0",-8.133006882,30.86020781
579
- 577,TIZQUI,"-8.140647061,30.88007341,0",-8.140647061,30.88007341
580
- 578,TASQUINT,"-8.682200392,30.7522616,0",-8.682200392,30.7522616
581
- 579,ABOUZIANE,"-8.508182197,30.78750081,0",-8.508182197,30.78750081
582
- 580,TIMGDAL,"-7.802959254,30.86064181,0",-7.802959254,30.86064181
583
- 581,ISWAL,"-7.753452728,31.0200754,0",-7.753452728,31.0200754
584
- 582,SINS,"-8.53704677,30.69877031,0",-8.53704677,30.69877031
585
- 583,AMECHTAKATE,"-8.753106931,30.77948216,0",-8.753106931,30.77948216
586
- 584,IFRI,"-7.793674698,30.75010439,0",-7.793674698,30.75010439
587
- 585,TIZLIYI,"-7.784529801,30.75683148,0",-7.784529801,30.75683148
588
- 586,TANFACHET,"-8.825767728,30.72640329,0",-8.825767728,30.72640329
589
- 587,AIT OUABDI,"-8.343358005,30.81060241,0",-8.343358005,30.81060241
590
- 588,AGUERSAFN,"-8.424566874,30.8032225,0",-8.424566874,30.8032225
591
- 589,AZROU TAOUINAKHT,"-8.485829954,30.78574688,0",-8.485829954,30.78574688
592
- 590,BOUTIZI,"-7.780092278,30.79674692,0",-7.780092278,30.79674692
593
- 591,IGOUMRANE,"-7.776318736,30.82277249,0",-7.776318736,30.82277249
594
- 592,ID LAHCEN OUALI,"-7.76714927,30.81895777,0",-7.76714927,30.81895777
595
- 593,,"-8.482902784,30.78232238,0",-8.482902784,30.78232238
596
- 594,TANMAGUELTE,"-7.975941326,30.86228443,0",-7.975941326,30.86228443
597
- 595,TIZZIRT,"-8.820204161,30.73000633,0",-8.820204161,30.73000633
598
- 596,,"-8.430659189,30.75048344,0",-8.430659189,30.75048344
599
- 597,ID MARMOUCH,"-7.817390616,30.77992918,0",-7.817390616,30.77992918
600
- 598,ICHABBANE,"-8.675853893,30.61821068,0",-8.675853893,30.61821068
601
- 599,IKHFUSS,"-8.394759971,30.84062527,0",-8.394759971,30.84062527
602
- 600,ALAGOU,"-8.399095217,30.83773104,0",-8.399095217,30.83773104
603
- 601,AIT YOUSSEF,"-8.444322551,30.76733788,0",-8.444322551,30.76733788
604
- 602,EL HANOUANE,"-8.801155132,30.65572313,0",-8.801155132,30.65572313
605
- 603,BOUYAKHFAOUN,"-8.515377795,30.75483048,0",-8.515377795,30.75483048
606
- 604,TIZKI,"-8.512932605,30.81795217,0",-8.512932605,30.81795217
607
- 605,ARG,"-7.718020039,30.57937891,0",-7.718020039,30.57937891
608
- 606,TIMZAKINE,"-7.838338816,31.03416072,0",-7.838338816,31.03416072
609
- 607,MISSOUR,"-7.84584607,31.05524786,0",-7.84584607,31.05524786
610
- 608,ASGUINE,"-8.921085631,30.88739261,0",-8.921085631,30.88739261
611
- 609,ISMIR,"-8.894599667,30.89827143,0",-8.894599667,30.89827143
612
- 610,TIOUNA,"-8.902342589,30.86009281,0",-8.902342589,30.86009281
613
- 611,TAKERKOUTE,"-8.916081213,30.85630779,0",-8.916081213,30.85630779
614
- 612,ARAZ,"-8.548686658,30.68005203,0",-8.548686658,30.68005203
615
- 613,TAGADIRT ACHBAROU,"-8.470716771,30.75026538,0",-8.470716771,30.75026538
616
- 614,AWSAGHMELT,"-8.665689532,30.85249729,0",-8.665689532,30.85249729
617
- 615,AIT AMER,"-8.666783032,30.83250784,0",-8.666783032,30.83250784
618
- 616,IDAGHASSANE,"-8.337387621,30.83577383,0",-8.337387621,30.83577383
619
- 617,IMIL LAKHNEG,"-8.526485897,30.66297172,0",-8.526485897,30.66297172
620
- 618,TAKOUCHT,"-8.095662048,30.85586059,0",-8.095662048,30.85586059
621
- 619,IRHIL,"-8.626349962,30.84606731,0",-8.626349962,30.84606731
622
- 620,IGUIANE,"-8.624447525,30.77545333,0",-8.624447525,30.77545333
623
- 621,AMANDAR,"-8.582156228,30.84614716,0",-8.582156228,30.84614716
624
- 622,AFZA,"-8.515184117,30.78607592,0",-8.515184117,30.78607592
625
- 623,TAGMOUTE,"-7.68849627,30.56813232,0",-7.68849627,30.56813232
626
- 624,TAKHFAKHT,"-8.279814304,30.8397742,0",-8.279814304,30.8397742
627
- 625,AIT MANCEUR,"-8.790533595,30.76472826,0",-8.790533595,30.76472826
628
- 626,ISSOULANE,"-8.803244945,30.74870429,0",-8.803244945,30.74870429
629
- 627,TADERT,"-8.878196512,30.70795722,0",-8.878196512,30.70795722
630
- 628,TAMSOULT,"-8.9227615,30.70459061,0",-8.9227615,30.70459061
631
- 629,AIT CHERIF,"-8.680323848,30.61295786,0",-8.680323848,30.61295786
632
- 630,TAMSOULT,"-8.766473029,30.75084415,0",-8.766473029,30.75084415
633
- 631,TIWTAGHRANE,"-7.908860179,30.96459632,0",-7.908860179,30.96459632
634
- 632,ASKAWN CENTRE,"-7.773965955,30.74185522,0",-7.773965955,30.74185522
635
- 633,TASLOUMTE,"-7.770214719,31.02791912,0",-7.770214719,31.02791912
636
- 634,ANDOSS,"-7.809892708,31.01732452,0",-7.809892708,31.01732452
637
- 635,ZAOUIAT LOUSSTA,"-8.436648261,30.74601327,0",-8.436648261,30.74601327
638
- 636,TITTALLE,"-7.718676793,30.78184553,0",-7.718676793,30.78184553
639
- 637,ID MENDIL,"-7.835546219,30.77276575,0",-7.835546219,30.77276575
640
- 638,SIDI MOUSSA,"-8.65574084,30.61707787,0",-8.65574084,30.61707787
641
- 639,AIT ADDI,"-8.37236571,30.76573876,0",-8.37236571,30.76573876
642
- 640,MANSOUR,"-7.781064836,30.85566439,0",-7.781064836,30.85566439
643
- 641,TIZQUI,"-8.78292385,30.68613287,0",-8.78292385,30.68613287
644
- 642,ANNELIF,"-8.678193037,30.84303127,0",-8.678193037,30.84303127
645
- 643,FIYIL,"-8.668380267,30.83936448,0",-8.668380267,30.83936448
646
- 644,AGHOFZLI,"-7.892100132,30.86888353,0",-7.892100132,30.86888353
647
- 645,TAWZENTE,"-7.812573623,30.75487709,0",-7.812573623,30.75487709
648
- 646,TARGANT,"-8.672761023,30.75228323,0",-8.672761023,30.75228323
649
- 647,IMLIL,"-8.689314024,30.81868353,0",-8.689314024,30.81868353
650
- 648,FALGHOUSS,"-8.665655533,30.80949405,0",-8.665655533,30.80949405
651
- 649,TAGOUNITE,"-7.828314515,31.02596595,0",-7.828314515,31.02596595
652
- 650,TAZOULT,"-7.772050068,30.78209908,0",-7.772050068,30.78209908
653
- 651,AIN AGOURAM,"-8.462579137,30.75630687,0",-8.462579137,30.75630687
654
- 652,TAWRIRT ACHBAROU,"-8.476577726,30.75586097,0",-8.476577726,30.75586097
655
- 653,IMITJAR,"-8.34454647,30.82074625,0",-8.34454647,30.82074625
656
- 654,TALA,"-7.919673976,30.89077558,0",-7.919673976,30.89077558
657
- 655,TAKATERTE,"-7.865196546,30.95303022,0",-7.865196546,30.95303022
658
- 656,AIT MAALA,"-8.421766105,30.75711824,0",-8.421766105,30.75711824
659
- 657,AMZAOUROU,"-8.678226188,30.77276148,0",-8.678226188,30.77276148
660
- 658,AIT SIDI BELLA,"-8.620717372,30.6147536,0",-8.620717372,30.6147536
661
- 659,AIT SOUMMANE,"-8.568939315,30.62039051,0",-8.568939315,30.62039051
662
- 660,OULAD SALEM,"-8.574138985,30.62325676,0",-8.574138985,30.62325676
663
- 661,AIT IGRANE,"-7.858382313,31.02145462,0",-7.858382313,31.02145462
664
- 662,TIMINOUNE,"-8.786778727,30.67291139,0",-8.786778727,30.67291139
665
- 663,TAFRAOUTENE,"-8.884398819,30.70206918,0",-8.884398819,30.70206918
666
- 664,MSSOUNA,"-8.366592985,30.80482173,0",-8.366592985,30.80482173
667
- 665,TOUKHRIBINE,"-8.374561665,30.77183516,0",-8.374561665,30.77183516
668
- 666,TAWRIRT,"-8.907718431,30.644456,0",-8.907718431,30.644456
669
- 667,AWARGOUT,"-7.733616933,30.58736359,0",-7.733616933,30.58736359
670
- 668,TINIGHASS,"-8.792157955,30.77291732,0",-8.792157955,30.77291732
671
- 669,KALTATE,"-8.794538764,30.7762237,0",-8.794538764,30.7762237
672
- 670,AIT ZAOUIT,"-8.881481003,30.66597763,0",-8.881481003,30.66597763
673
- 671,AGUERD,"-8.680682688,30.73180289,0",-8.680682688,30.73180289
674
- 672,AARABEN,"-7.757149102,30.82967621,0",-7.757149102,30.82967621
675
- 673,TAZODA,"-8.099013234,30.87663571,0",-8.099013234,30.87663571
676
- 674,ACHDIRT,"-8.095382556,30.88038706,0",-8.095382556,30.88038706
677
- 675,TASSWALT,"-7.824038402,30.96955266,0",-7.824038402,30.96955266
678
- 676,TAGOUDACHTE,"-8.296131457,30.81807404,0",-8.296131457,30.81807404
679
- 677,IFARGANNE,"-7.879158665,30.86093442,0",-7.879158665,30.86093442
680
- 678,IGHIL IAZZA,"-8.555008769,30.67704621,0",-8.555008769,30.67704621
681
- 679,IDA OUGATLLA,"-8.625588382,30.63609549,0",-8.625588382,30.63609549
682
- 680,BOURRAMDANE,"-7.887095487,30.87579489,0",-7.887095487,30.87579489
683
- 681,TIRST,"-8.28116577,30.84346661,0",-8.28116577,30.84346661
684
- 682,AIT HAMMOU,"-8.371497576,30.76823111,0",-8.371497576,30.76823111
685
- 683,AIT HADDOU,"-8.305876286,30.82247561,0",-8.305876286,30.82247561
686
- 684,TIOULI,"-8.302425784,30.81981693,0",-8.302425784,30.81981693
687
- 685,IBARZIZANE,"-8.04651615,30.86025566,0",-8.04651615,30.86025566
688
- 686,OUILZANE,"-8.28268338,30.77858023,0",-8.28268338,30.77858023
689
- 687,WAOUNZOURTE,"-7.829574456,31.00013943,0",-7.829574456,31.00013943
690
- 688,AIT ZEMMOURI,"-8.622517504,30.68355053,0",-8.622517504,30.68355053
691
- 689,TAZIAT,"-8.57827625,30.66433331,0",-8.57827625,30.66433331
692
- 690,OULAD ZEKRI,"-8.451611752,30.69857029,0",-8.451611752,30.69857029
693
- 691,AIT YASSINE,"-8.141771287,30.902215,0",-8.141771287,30.902215
694
- 692,IKRAMNIWN,"-8.121296086,30.86979666,0",-8.121296086,30.86979666
695
- 693,AFOUYIGH,"-8.149957937,30.87408138,0",-8.149957937,30.87408138
696
- 694,OUAGHARDA,"-8.70600322,30.83091852,0",-8.70600322,30.83091852
697
- 695,TAMAKADOUTE,"-8.681484332,30.80657601,0",-8.681484332,30.80657601
698
- 696,ALAGJANE,"-8.676580157,30.80331784,0",-8.676580157,30.80331784
699
- 697,TACHKNINE,"-8.672817065,30.77050005,0",-8.672817065,30.77050005
700
- 698,TAYZELTE,"-7.950665948,30.94900505,0",-7.950665948,30.94900505
701
- 699,SOUK LARBAA ASSAISS,"-7.609553631,30.57619509,0",-7.609553631,30.57619509
702
- 700,LMOUDAA,"-7.760619303,31.01607691,0",-7.760619303,31.01607691
703
- 701,TIOUGHZA,"-7.758523561,30.67107544,0",-7.758523561,30.67107544
704
- 702,,"-8.741943847,30.6230532,0",-8.741943847,30.6230532
705
- 703,IMANARANE,"-8.659952537,30.82485445,0",-8.659952537,30.82485445
706
- 704,TANZAD,"-8.419633185,30.83400016,0",-8.419633185,30.83400016
707
- 705,ANAMER,"-8.102381148,30.85718057,0",-8.102381148,30.85718057
708
- 706,TAMSOULT IGHANJAWN,"-8.12703651,30.85878245,0",-8.12703651,30.85878245
709
- 707,AIT HSAYN,"-8.113776027,30.86449161,0",-8.113776027,30.86449161
710
- 708,TALMAKANTE,"-8.933805569,30.85050119,0",-8.933805569,30.85050119
711
- 709,TILMASLANE,"-8.139416153,30.86230833,0",-8.139416153,30.86230833
712
- 710,TARGA OU FELLA,"-8.634547523,30.93168171,0",-8.634547523,30.93168171
713
- 711,TIFRITE,"-8.969451742,31.00932107,0",-8.969451742,31.00932107
714
- 712,,"-8.416444776,30.84957394,0",-8.416444776,30.84957394
715
- 713,ASSARAR,"-7.770901101,31.00749756,0",-7.770901101,31.00749756
716
- 714,IGHALMISS,"-8.829926796,30.94519718,0",-8.829926796,30.94519718
717
- 715,TAGADIRTE,"-8.419561799,31.13148395,0",-8.419561799,31.13148395
718
- 716,TIZGHOUINE,"-7.852474901,30.93661435,0",-7.852474901,30.93661435
719
- 717,IMI NMOUMENE,"-7.853583926,30.94773809,0",-7.853583926,30.94773809
720
- 718,TOUGALKHIR,"-8.554100938,30.83842235,0",-8.554100938,30.83842235
721
- 719,ASSAISS ADBDI,"-8.481828081,30.83761659,0",-8.481828081,30.83761659
722
- 720,IGOUZOULNE,"-8.143579382,30.86376509,0",-8.143579382,30.86376509
723
- 721,AIT NACER,"-8.656399447,30.75956176,0",-8.656399447,30.75956176
724
- 722,AMGDOUL,"-8.280794134,30.85863548,0",-8.280794134,30.85863548
725
- 723,TIZIRT HAGUIRA,"-8.306771462,30.81751204,0",-8.306771462,30.81751204
726
- 724,AIT WALLALE,"-7.873926364,30.83714508,0",-7.873926364,30.83714508
727
- 725,AGARDE NOUGADIR,"-7.896592942,30.84467775,0",-7.896592942,30.84467775
728
- 726,IMZILNE,"-7.879156848,30.8578324,0",-7.879156848,30.8578324
729
- 727,ANMID,"-7.807872151,30.9512982,0",-7.807872151,30.9512982
730
- 728,TIZI OUNRARE,"-8.10559323,30.85797449,0",-8.10559323,30.85797449
731
- 729,TAZOUDOUTE,"-8.661550742,30.81156206,0",-8.661550742,30.81156206
732
- 730,ZAOUIAT IMI MADGHAR,"-8.770221337,30.62296989,0",-8.770221337,30.62296989
733
- 731,MARKAZ TAFINGOULT,"-8.383612557,30.76319796,0",-8.383612557,30.76319796
734
- 732,IMGHIR,"-8.701598468,30.82937031,0",-8.701598468,30.82937031
735
- 733,AGUERD,"-8.426100227,30.8043926,0",-8.426100227,30.8043926
736
- 734,ADAD,"-7.764506056,31.03065496,0",-7.764506056,31.03065496
737
- 735,AMATITRE,"-8.618177346,30.80840455,0",-8.618177346,30.80840455
738
- 736,TASDOUTE,"-8.60699504,30.84209064,0",-8.60699504,30.84209064
739
- 737,KORMATE,"-8.853300921,30.86083426,0",-8.853300921,30.86083426
740
- 738,AMDROUSS,"-8.850931966,30.86306335,0",-8.850931966,30.86306335
741
- 739,AIT MZIL,"-7.7193207,30.63162798,0",-7.7193207,30.63162798
742
- 740,TASQUINTE,"-8.844482254,30.74786,0",-8.844482254,30.74786
743
- 741,IKHOUDAMNE,"-8.695035134,30.78825907,0",-8.695035134,30.78825907
744
- 742,MELLIZ,"-8.780013217,30.75435329,0",-8.780013217,30.75435329
745
- 743,TISSOHITE,"-8.984206179,31.0117157,0",-8.984206179,31.0117157
746
- 744,AGNI,"-8.928461469,30.9905847,0",-8.928461469,30.9905847
747
- 745,ANAMRA,"-8.929983645,30.99920795,0",-8.929983645,30.99920795
748
- 746,TADDARINE,"-7.897203761,30.86029264,0",-7.897203761,30.86029264
749
- 747,IGUIDI,"-7.901965217,30.83679358,0",-7.901965217,30.83679358
750
- 748,ARGUE,"-8.446003727,31.11383186,0",-8.446003727,31.11383186
751
- 749,TALMODAATE,"-8.686291987,30.99608889,0",-8.686291987,30.99608889
752
- 750,ZAOUIAT SIDI ALI OU FAR,"-7.805399316,31.27233976,0",-7.805399316,31.27233976
753
- 751,TINZAROUINE,"-8.277289854,31.07998221,0",-8.277289854,31.07998221
754
- 752,AIT DAOUD,"-8.377107784,31.10567172,0",-8.377107784,31.10567172
755
- 753,TICHAKJI,"-8.620661487,30.85536455,0",-8.620661487,30.85536455
756
- 754,TAZAGUATA,"-8.288437698,31.06067135,0",-8.288437698,31.06067135
757
- 755,ISGANE,"-8.011622823,31.25946714,0",-8.011622823,31.25946714
758
- 756,EL MAKHZENE,"-8.100998648,30.96333928,0",-8.100998648,30.96333928
759
- 757,TAMALOUTE,"-8.273912635,31.07857906,0",-8.273912635,31.07857906
760
- 758,IGHAZ,"-8.496555631,31.13572248,0",-8.496555631,31.13572248
761
- 759,TIDARGUINE,"-8.488820617,31.12684783,0",-8.488820617,31.12684783
762
- 760,TAZELLOUMT,"-8.599616573,30.80801347,0",-8.599616573,30.80801347
763
- 761,TAZLIDA,"-8.554778663,30.81809384,0",-8.554778663,30.81809384
764
- 762,LAMDINATE,"-8.370053336,31.10758472,0",-8.370053336,31.10758472
765
- 763,ANAMROU,"-8.348844087,31.09716621,0",-8.348844087,31.09716621
766
- 764,BOUY SSOUFA,"-8.93053512,31.03158033,0",-8.93053512,31.03158033
767
- 765,WAWOURST,"-8.970785881,31.03656446,0",-8.970785881,31.03656446
768
- 766,TAMJLOUJTE,"-8.800104991,30.87275975,0",-8.800104991,30.87275975
769
- 767,AMESKERDAD,"-8.815944122,31.0619515,0",-8.815944122,31.0619515
770
- 768,ZAOUIAT ASSATIF,"-8.65277217,31.00216805,0",-8.65277217,31.00216805
771
- 769,TADDARTE,"-8.677518502,31.11511545,0",-8.677518502,31.11511545
772
- 770,MIAL,"-7.760509629,30.77810512,0",-7.760509629,30.77810512
773
- 771,ASAYSSE,"-8.493440138,31.14993005,0",-8.493440138,31.14993005
774
- 772,TALAT NYASSINE,"-8.171714515,30.98098712,0",-8.171714515,30.98098712
775
- 773,TIMSALE,"-8.273288069,30.93001636,0",-8.273288069,30.93001636
776
- 774,AMALOU,"-7.716771226,30.67367429,0",-7.716771226,30.67367429
777
- 775,,"-8.541077105,30.71560193,0",-8.541077105,30.71560193
778
- 776,TIFERKI,"-8.612519038,30.7517269,0",-8.612519038,30.7517269
779
- 777,ZAOUIAT IHCHACH,"-8.525314557,30.68335589,0",-8.525314557,30.68335589
780
- 778,ASSAGHMOU,"-6.554517641,31.32738576,0",-6.554517641,31.32738576
781
- 779,OUKHRIBNE,"-8.258969788,31.00815331,0",-8.258969788,31.00815331
782
- 780,IGNANE,"-7.80811385,31.24283792,0",-7.80811385,31.24283792
783
- 781,OURZDDINE,"-8.273201503,30.99556156,0",-8.273201503,30.99556156
784
- 782,TIGARTE,"-8.320412858,30.99328775,0",-8.320412858,30.99328775
785
- 783,TIMIZAR,"-8.259279529,30.99419337,0",-8.259279529,30.99419337
786
- 784,ARKTE,"-8.133489792,31.02687825,0",-8.133489792,31.02687825
787
- 785,TIZGUINE,"-8.949837525,30.88842182,0",-8.949837525,30.88842182
788
- 786,TYLNIF,"-7.414893163,31.37296089,0",-7.414893163,31.37296089
789
- 787,ADOUZE,"-8.637555948,31.11373766,0",-8.637555948,31.11373766
790
- 788,TAWLOUST,"-8.819198953,30.74919171,0",-8.819198953,30.74919171
791
- 789,TAJACHT,"-8.774230777,30.72850374,0",-8.774230777,30.72850374
792
- 790,TAKATERTE,"-7.844741914,31.02083782,0",-7.844741914,31.02083782
793
- 791,TIKHTE,"-8.431537401,31.14360073,0",-8.431537401,31.14360073
794
- 792,TIGHOULA,"-8.427949635,31.13879617,0",-8.427949635,31.13879617
795
- 793,IMHIL,"-7.864641545,31.02173327,0",-7.864641545,31.02173327
796
- 794,ANKOUTOUFE,"-8.809328293,30.91474832,0",-8.809328293,30.91474832
797
- 795,IZAGAGHANE,"-7.75960686,31.19223723,0",-7.75960686,31.19223723
798
- 796,ANAMMAR,"-7.303789269,31.36330597,0",-7.303789269,31.36330597
799
- 797,TIRKHTE,"-8.35746037,30.98977207,0",-8.35746037,30.98977207
800
- 798,SRANINE,"-8.536308581,30.63315591,0",-8.536308581,30.63315591
801
- 799,WANDGHICH,"-8.953462921,31.02599734,0",-8.953462921,31.02599734
802
- 800,AGROUTANE,"-8.86417695,31.09525689,0",-8.86417695,31.09525689
803
- 801,IKKISS,"-8.71028431,30.8973328,0",-8.71028431,30.8973328
804
- 802,AGADIR OU MLIL,"-8.151401359,31.00063347,0",-8.151401359,31.00063347
805
- 803,TOUKHRIBINE,"-8.167756571,30.9707511,0",-8.167756571,30.9707511
806
- 804,GOUGTEN,"-8.248029848,30.94512466,0",-8.248029848,30.94512466
807
- 805,YOUSSRANE,"-8.884531698,30.69497624,0",-8.884531698,30.69497624
808
- 806,MEGDEL,"-8.759819518,30.78440965,0",-8.759819518,30.78440965
809
- 807,AL KHOMS,"-8.754458156,30.75938586,0",-8.754458156,30.75938586
810
- 808,TAMATERT,"-7.709870278,31.20008437,0",-7.709870278,31.20008437
811
- 809,OURTI OUMGHAR,"-8.790983736,30.7711374,0",-8.790983736,30.7711374
812
- 810,TANAZZATE,"-8.290354708,30.89885586,0",-8.290354708,30.89885586
813
- 811,AIT MAKRAZE,"-8.280156551,30.91613547,0",-8.280156551,30.91613547
814
- 812,AIT WAGARYANE,"-8.648206071,31.11369262,0",-8.648206071,31.11369262
815
- 813,ZAOUIAT AMERNE,"-8.736339639,31.07405942,0",-8.736339639,31.07405942
816
- 814,TANSMAGHTE,"-8.69003216,31.01436756,0",-8.69003216,31.01436756
817
- 815,TASSALLI,"-8.699419464,30.98061639,0",-8.699419464,30.98061639
818
- 816,AFRA,"-7.419398588,31.34015623,0",-7.419398588,31.34015623
819
- 817,TAMASSITE,"-7.975660506,31.24008525,0",-7.975660506,31.24008525
820
- 818,AMCHOUDE,"-8.911464013,30.89006253,0",-8.911464013,30.89006253
821
- 819,TATOULA,"-7.298149064,31.358533,0",-7.298149064,31.358533
822
- 820,IAABASSENE,"-7.780559024,31.18278206,0",-7.780559024,31.18278206
823
- 821,GWAMANE,"-7.831026862,31.25628017,0",-7.831026862,31.25628017
824
- 822,TAMDGHOUSTE,"-8.955508146,30.94177924,0",-8.955508146,30.94177924
825
- 823,AMSKRAJANE,"-8.302834653,30.98124669,0",-8.302834653,30.98124669
826
- 824,ZAOUIT SIDI LAHCEN,"-8.6773466,30.93647782,0",-8.6773466,30.93647782
827
- 825,IZAMRANE,"-7.686748493,31.3882663,0",-7.686748493,31.3882663
828
- 826,AREG,"-8.874270209,31.04914822,0",-8.874270209,31.04914822
829
- 827,TAWRIRTE,"-8.190862909,31.06739224,0",-8.190862909,31.06739224
830
- 828,AIT HARBE,"-7.986265145,31.1446148,0",-7.986265145,31.1446148
831
- 829,AGNI,"-8.07070321,31.16970488,0",-8.07070321,31.16970488
832
- 830,ZAOUIAT TAMAROUTE,"-8.886735068,31.03479086,0",-8.886735068,31.03479086
833
- 831,ARBAN TAMTARGUA,"-8.194105037,30.87995967,0",-8.194105037,30.87995967
834
- 832,ASSGHMAR AIT OUGROURE,"-6.813248106,31.23215164,0",-6.813248106,31.23215164
835
- 833,TIGROOUTE,"-7.884910108,30.89736519,0",-7.884910108,30.89736519
836
- 834,AIT ZOUIL,"-6.429111551,31.38072652,0",-6.429111551,31.38072652
837
- 835,IMIN-TISLIT,"-8.075694949,30.88709176,0",-8.075694949,30.88709176
838
- 836,AIT ALI OU AISSA,"-6.591261421,31.22107668,0",-6.591261421,31.22107668
839
- 837,DERB WIRGANE,"-8.080224319,31.17469106,0",-8.080224319,31.17469106
840
- 838,TIZI MLIL,"-8.180858442,31.10129147,0",-8.180858442,31.10129147
841
- 839,TIGARSALTE,"-8.212775992,31.0979576,0",-8.212775992,31.0979576
842
- 840,WAWGMOUTE,"-7.984176193,31.1457902,0",-7.984176193,31.1457902
843
- 841,AIT HDINE,"-7.867851489,30.83702575,0",-7.867851489,30.83702575
844
- 842,TAGADIRTE,"-8.950700562,30.91411879,0",-8.950700562,30.91411879
845
- 843,TAZA TOURTE,"-8.13447132,31.20521796,0",-8.13447132,31.20521796
846
- 844,TINZZIMINE,"-8.467324628,31.0530976,0",-8.467324628,31.0530976
847
- 845,LMATMOUR,"-8.390498857,30.75326095,0",-8.390498857,30.75326095
848
- 846,ZAOUIAT LALLA RKIA,"-8.513915518,30.78140989,0",-8.513915518,30.78140989
849
- 847,ZAOUIAT SIDI IGUERBZIZ,"-8.475913343,30.77035253,0",-8.475913343,30.77035253
850
- 848,IGHEL MELLEN,"-8.652247446,30.93585199,0",-8.652247446,30.93585199
851
- 849,TAJAGALTE,"-8.85538881,31.06077075,0",-8.85538881,31.06077075
852
- 850,ISFIL,"-7.688631339,31.39775559,0",-7.688631339,31.39775559
853
- 851,AMASLANE,"-8.963107998,30.91039837,0",-8.963107998,30.91039837
854
- 852,TADARNOUTE,"-8.790964456,30.76257859,0",-8.790964456,30.76257859
855
- 853,TAGOUYAMTE,"-7.576074986,30.60987289,0",-7.576074986,30.60987289
856
- 854,TIGUIRTE,"-6.944282307,31.28503098,0",-6.944282307,31.28503098
857
- 855,BOUMARDOULE,"-5.858187178,31.61243525,0",-5.858187178,31.61243525
858
- 856,TABOUTABT,"-8.379109978,30.75999037,0",-8.379109978,30.75999037
859
- 857,ANAMMER,"-8.195128846,31.06945857,0",-8.195128846,31.06945857
860
- 858,AGUENZANE,"-8.888088818,30.69277203,0",-8.888088818,30.69277203
861
- 859,LAARAB,"-7.986319002,31.25439836,0",-7.986319002,31.25439836
862
- 860,TARGA,"-8.132978378,31.03451084,0",-8.132978378,31.03451084
863
- 861,TINOUALINE,"-8.681152772,31.08717565,0",-8.681152772,31.08717565
864
- 862,AZARZOU,"-8.475234392,31.00612302,0",-8.475234392,31.00612302
865
- 863,AGOUMMADANE,"-8.880184418,30.67293264,0",-8.880184418,30.67293264
866
- 864,AGARZRA,"-8.476857931,31.05668181,0",-8.476857931,31.05668181
867
- 865,SIDI ALI OUBRAHIM,"-8.24483031,30.80132808,0",-8.24483031,30.80132808
868
- 866,TALAT N-DARAMMANE,"-8.117978414,30.8582559,0",-8.117978414,30.8582559
869
- 867,TAMAROUT,"-8.219481271,30.89562217,0",-8.219481271,30.89562217
870
- 868,TOUKARINE,"-7.708805774,30.63100918,0",-7.708805774,30.63100918
871
- 869,ZAOUIAT SIDI MOUSSA,"-8.145254122,30.87754303,0",-8.145254122,30.87754303
872
- 870,IGARWATE,"-8.525550188,31.07463073,0",-8.525550188,31.07463073
873
- 871,OUZALA,"-8.576441639,30.62705583,0",-8.576441639,30.62705583
874
- 872,FOUMAZIR,"-8.815609366,31.07662729,0",-8.815609366,31.07662729
875
- 873,TOGL KHIR,"-8.789411741,31.05472785,0",-8.789411741,31.05472785
876
- 874,AMDRASS,"-6.485717415,31.44878533,0",-6.485717415,31.44878533
877
- 875,AGLI,"-8.190465955,30.84926417,0",-8.190465955,30.84926417
878
- 876,ZAOUIAT SITTI FADMA,"-7.693840988,31.21947232,0",-7.693840988,31.21947232
879
- 877,AIT SLIMANE,"-7.50548827,31.3807069,0",-7.50548827,31.3807069
880
- 878,AIT ACHA,"-7.584006568,31.37454198,0",-7.584006568,31.37454198
881
- 879,IGHREM,"-8.101674906,30.88205935,0",-8.101674906,30.88205935
882
- 880,MENZANIT,"-8.618412974,30.84627884,0",-8.618412974,30.84627884
883
- 881,ADEQUI,"-8.616249969,30.82670154,0",-8.616249969,30.82670154
884
- 882,ZAOUIAT EL MADAADANE,"-8.621882743,30.77091309,0",-8.621882743,30.77091309
885
- 883,TISSALDAY,"-7.851362322,31.06084514,0",-7.851362322,31.06084514
886
- 884,AIT SOUAL,"-6.454567075,31.36680908,0",-6.454567075,31.36680908
887
- 885,TIGUEMI IGRANE,"-7.762212184,31.02267351,0",-7.762212184,31.02267351
888
- 886,ANSSA,"-7.485359387,31.27525189,0",-7.485359387,31.27525189
889
- 887,TANAMARTE,"-8.494792221,31.03047121,0",-8.494792221,31.03047121
890
- 888,TALATTANE,"-7.718772196,30.81963384,0",-7.718772196,30.81963384
891
- 889,TAOURMATE,"-8.903859912,30.72127631,0",-8.903859912,30.72127631
892
- 890,,"-7.519539921,31.2935098,0",-7.519539921,31.2935098
893
- 891,HLAWTE,"-7.603923948,31.35347425,0",-7.603923948,31.35347425
894
- 892,TINGLIANE,"-8.351696805,30.82561319,0",-8.351696805,30.82561319
895
- 893,TIZGUI OU FELLA,"-8.958751704,30.97486651,0",-8.958751704,30.97486651
896
- 894,AIT JEDDI,"-8.536661824,30.6703099,0",-8.536661824,30.6703099
897
- 895,AMSSOULE,"-6.686187887,31.2450304,0",-6.686187887,31.2450304
898
- 896,IMERGUENEG,"-8.26587853,30.81601745,0",-8.26587853,30.81601745
899
- 897,TIGUICHT,"-8.135905166,30.8785214,0",-8.135905166,30.8785214
900
- 898,TALAT NBITALJANE,"-8.666198726,30.79566199,0",-8.666198726,30.79566199
901
- 899,TAHANDOURT,"-8.524166275,30.74387147,0",-8.524166275,30.74387147
902
- 900,TILEKANT,"-8.512711186,30.75985941,0",-8.512711186,30.75985941
903
- 901,,"-7.781446674,31.00363835,0",-7.781446674,31.00363835
904
- 902,TALAT NAAMRANE,"-7.768774735,31.03089624,0",-7.768774735,31.03089624
905
- 903,FERMAT CHRAIRE DE TAOUFIKIMED,"-8.46020514,30.66274081,0",-8.46020514,30.66274081
906
- 904,TAMALLA,"-8.63724801,30.65614635,0",-8.63724801,30.65614635
907
- 905,TALADDAMTE,"-8.554330347,31.0541071,0",-8.554330347,31.0541071
908
- 906,KSAR AIT ISFOULE,"-5.850854651,31.67284892,0",-5.850854651,31.67284892
909
- 907,TAMASKA,"-8.878090139,30.66814077,0",-8.878090139,30.66814077
910
- 908,TAGHZIRTE,"-7.555827769,31.2555692,0",-7.555827769,31.2555692
911
- 909,MENDOU,"-7.806619395,30.7868168,0",-7.806619395,30.7868168
912
- 910,TIZARATINE,"-8.596855958,30.80177322,0",-8.596855958,30.80177322
913
- 911,AGHFERGA,"-8.572274303,30.86117126,0",-8.572274303,30.86117126
914
- 912,TIZNIRINE,"-8.58579006,30.75093771,0",-8.58579006,30.75093771
915
- 913,EL MAKHZEN,"-8.555496871,30.71991553,0",-8.555496871,30.71991553
916
- 914,IMZILNE,"-6.579369782,31.27812549,0",-6.579369782,31.27812549
917
- 915,TAMSSOULTE,"-6.672768549,31.26438508,0",-6.672768549,31.26438508
918
- 916,TILMI,"-5.77179039,31.81856482,0",-5.77179039,31.81856482
919
- 917,MATOUS,"-7.599848724,31.36684253,0",-7.599848724,31.36684253
920
- 918,ASNI CENTRE,"-7.980755801,31.25007002,0",-7.980755801,31.25007002
921
- 919,IDSIAR,"-8.089226552,31.02322412,0",-8.089226552,31.02322412
922
- 920,ASSELIOUME,"-7.67577861,31.38398932,0",-7.67577861,31.38398932
923
- 921,TAGNIT,"-8.94369314,30.68290876,0",-8.94369314,30.68290876
924
- 922,IGOURDANE,"-7.801084561,30.87970597,0",-7.801084561,30.87970597
925
- 923,TICHKI,"-7.791062174,30.87080582,0",-7.791062174,30.87080582
926
- 924,AMARCHIH,"-8.651823257,30.80840589,0",-8.651823257,30.80840589
927
- 925,TISSOUGANE,"-8.673052116,30.77466949,0",-8.673052116,30.77466949
928
- 926,ZAOUIAT TAFILALT,"-8.674181438,30.74797879,0",-8.674181438,30.74797879
929
- 927,,"-7.140587326,31.09715261,0",-7.140587326,31.09715261
930
- 928,IHNACHE,"-7.586250868,31.38250184,0",-7.586250868,31.38250184
931
- 929,ANABDOUR,"-8.912298888,30.69404523,0",-8.912298888,30.69404523
932
- 930,IRKOUNT,"-8.362578059,30.82823295,0",-8.362578059,30.82823295
933
- 931,ZWALIL,"-8.418494985,31.12394625,0",-8.418494985,31.12394625
934
- 932,IZARRANE,"-8.279254207,30.97932378,0",-8.279254207,30.97932378
935
- 933,OUTAKHERRI,"-8.155777662,31.01394514,0",-8.155777662,31.01394514
936
- 934,TAGADIRTE,"-7.823274222,30.82045176,0",-7.823274222,30.82045176
937
- 935,AIT MELLOUL,"-7.793886445,30.79541048,0",-7.793886445,30.79541048
938
- 936,TASQUA IGRANE,"-8.810319553,30.75324889,0",-8.810319553,30.75324889
939
- 937,TIGHZANILA,"-7.124141772,31.30770252,0",-7.124141772,31.30770252
940
- 938,TIMMOUNTOUTE,"-7.255598675,31.20737343,0",-7.255598675,31.20737343
941
- 939,AGUERR ZRANE,"-7.840354035,31.02236922,0",-7.840354035,31.02236922
942
- 940,ALMKAL,"-7.82166775,30.99072047,0",-7.82166775,30.99072047
943
- 941,AIT ATTOU OU MOUSSA,"-5.742045883,31.86359902,0",-5.742045883,31.86359902
944
- 942,AIT BOULEMANE,"-5.814804192,31.74970059,0",-5.814804192,31.74970059
945
- 943,IHOUKARNE,"-7.646094698,30.53179514,0",-7.646094698,30.53179514
946
- 944,IFRKHANE,"-6.591948022,31.25473752,0",-6.591948022,31.25473752
947
- 945,TAMANNOUT NIZDDAR,"-7.618267876,30.59075751,0",-7.618267876,30.59075751
948
- 946,TIZGUI NOUHAKKI,"-7.779149851,30.8132668,0",-7.779149851,30.8132668
949
- 947,ISSOUMARE,"-6.127917228,31.4596125,0",-6.127917228,31.4596125
950
- 948,ASSISF OU GADIR,"-8.857832353,30.75314274,0",-8.857832353,30.75314274
951
- 949,AGOUNSA,"-8.855047137,30.76411796,0",-8.855047137,30.76411796
952
- 950,AMSSAKROU,"-7.900695779,31.17074254,0",-7.900695779,31.17074254
953
- 951,AGHRI,"-8.43099275,30.84948974,0",-8.43099275,30.84948974
954
- 952,ARG,"-7.697229034,30.63413331,0",-7.697229034,30.63413331
955
- 953,,"-7.729688968,31.37858506,0",-7.729688968,31.37858506
956
- 954,ACHAHHOUDE,"-7.133585846,31.14976153,0",-7.133585846,31.14976153
957
- 955,TOUAZA,"-6.275683798,31.40965128,0",-6.275683798,31.40965128
958
- 956,ASSENDOU,"-6.521875046,31.39521531,0",-6.521875046,31.39521531
959
- 957,TAZOULTE,"-7.505035591,30.63401289,0",-7.505035591,30.63401289
960
- 958,TLATE NASSE,"-8.127224921,31.09029758,0",-8.127224921,31.09029758
961
- 959,IGHREM,"-8.09890851,31.01712851,0",-8.09890851,31.01712851
962
- 960,IFASFASS,"-8.45566095,30.76200132,0",-8.45566095,30.76200132
963
- 961,OUAGJDITE,"-7.846447107,31.32695421,0",-7.846447107,31.32695421
964
- 962,AGOUNI,"-8.574529235,30.63227347,0",-8.574529235,30.63227347
965
- 963,AMZILE-FOUKANI,"-6.224681235,31.42209392,0",-6.224681235,31.42209392
966
- 964,ATOUGHA,"-7.655217859,30.63190551,0",-7.655217859,30.63190551
967
- 965,TAM GUISTE,"-7.867464688,31.15505329,0",-7.867464688,31.15505329
968
- 966,IGHIL,"-7.844734288,30.77309417,0",-7.844734288,30.77309417
969
- 967,,"-8.731264355,30.66396782,0",-8.731264355,30.66396782
970
- 968,AMZAOUROU,"-8.794264451,30.66998642,0",-8.794264451,30.66998642
971
- 969,AIT LAHSENE,"-8.339404804,30.84505899,0",-8.339404804,30.84505899
972
- 970,TAMSOULT,"-8.479873388,30.84219388,0",-8.479873388,30.84219388
973
- 971,BOU GHAZIR,"-8.349229862,30.90822156,0",-8.349229862,30.90822156
974
- 972,IMERGUENE,"-8.604504225,30.83554561,0",-8.604504225,30.83554561
975
- 973,KSAR AKDIM,"-5.815093264,31.70079925,0",-5.815093264,31.70079925
976
- 974,KSAR OUATAB,"-5.816328146,31.70429989,0",-5.816328146,31.70429989
977
- 975,OUITKRAZENE,"-8.801134639,30.72488992,0",-8.801134639,30.72488992
978
- 976,TALATANE,"-8.897867157,30.89660018,0",-8.897867157,30.89660018
979
- 977,AIT YAHIA,"-8.816243575,30.95322736,0",-8.816243575,30.95322736
980
- 978,ID AMER OU ALI,"-7.658957988,30.70175556,0",-7.658957988,30.70175556
981
- 979,TAMALOUTE,"-7.738509801,30.72474797,0",-7.738509801,30.72474797
982
- 980,TIGHARMTE,"-7.652342099,31.09313716,0",-7.652342099,31.09313716
983
- 981,TINGHARDA,"-7.887954027,30.86373864,0",-7.887954027,30.86373864
984
- 982,TAGADIRTE,"-7.85885622,31.34072948,0",-7.85885622,31.34072948
985
- 983,AKHFEROU OU FELLA,"-8.766684021,30.73077974,0",-8.766684021,30.73077974
986
- 984,TAMAROUTE,"-8.246204386,30.93108922,0",-8.246204386,30.93108922
987
- 985,IGHIL NOUKALEF,"-7.702217757,31.39123958,0",-7.702217757,31.39123958
988
- 986,TAGHWACHT,"-8.579850773,30.76786903,0",-8.579850773,30.76786903
989
- 987,OUANSKRA,"-7.85917232,31.15363432,0",-7.85917232,31.15363432
990
- 988,AMGHRAOUNE,"-8.159159338,31.01256041,0",-8.159159338,31.01256041
991
- 989,TADDARTE,"-7.653831081,31.37792202,0",-7.653831081,31.37792202
992
- 990,AFZA,"-7.751084002,31.02159135,0",-7.751084002,31.02159135
993
- 991,MZGAMMATE,"-7.815647148,30.98365327,0",-7.815647148,30.98365327
994
- 992,TIMSSALE AIT YAHIA OUALI,"-7.142541081,31.27349516,0",-7.142541081,31.27349516
995
- 993,AMARZWAST,"-7.860685777,31.26159963,0",-7.860685777,31.26159963
996
- 994,TISSEKHT NAIT WADIF,"-7.813674872,30.73947231,0",-7.813674872,30.73947231
997
- 995,TAWRIRT,"-8.680623929,30.84863857,0",-8.680623929,30.84863857
998
- 996,AMZAOUROU,"-7.884992338,30.88216855,0",-7.884992338,30.88216855
999
- 997,ASSARAGUE,"-7.825421848,30.96380752,0",-7.825421848,30.96380752
1000
- 998,ASSIF ZIMER,"-7.738246008,30.69607153,0",-7.738246008,30.69607153
1001
- 999,TAGHOUGALTE,"-7.987482473,30.88666597,0",-7.987482473,30.88666597
1002
- 1000,TAMMAJOUTE,"-7.97507081,30.89908704,0",-7.97507081,30.89908704
1003
- 1001,OUKHRIBENE,"-8.953104694,30.88688285,0",-8.953104694,30.88688285
1004
- 1002,TAMSALLOUMT,"-8.155746099,30.88350905,0",-8.155746099,30.88350905
1005
- 1003,AFFALLA NOUFRA,"-8.065345024,30.89351571,0",-8.065345024,30.89351571
1006
- 1004,BOUGHIOUL,"-8.641682786,30.62484232,0",-8.641682786,30.62484232
1007
- 1005,ZAOUIAT SIDI ABDELLAH OU MOUSSA,"-8.445809017,30.7019543,0",-8.445809017,30.7019543
1008
- 1006,LAMKAYAT,"-8.393299154,30.89916656,0",-8.393299154,30.89916656
1009
- 1007,TANFGUIKHTE,"-8.383759959,30.99359686,0",-8.383759959,30.99359686
1010
- 1008,TAWYALT,"-8.427497165,30.8058547,0",-8.427497165,30.8058547
1011
- 1009,AIT TATLALENE,"-7.211779114,31.30413322,0",-7.211779114,31.30413322
1012
- 1010,,"-7.866496824,31.16181017,0",-7.866496824,31.16181017
1013
- 1011,RBAT,"-6.199965128,31.42120928,0",-6.199965128,31.42120928
1014
- 1012,IZLANE,"-8.878162032,30.66621764,0",-8.878162032,30.66621764
1015
- 1013,ANDIL,"-8.665063451,30.82140643,0",-8.665063451,30.82140643
1016
- 1014,IMI NEMSSOUNTE,"-7.874846698,30.83488991,0",-7.874846698,30.83488991
1017
- 1015,AZQUER,"-8.711494788,30.75545747,0",-8.711494788,30.75545747
1018
- 1016,,"-8.831807748,30.72353503,0",-8.831807748,30.72353503
1019
- 1017,ANFID,"-7.633762054,31.1173614,0",-7.633762054,31.1173614
1020
- 1018,ZAOUIAT SIDI BOUZAID,"-8.562048309,30.6989748,0",-8.562048309,30.6989748
1021
- 1019,KSAR AIT OURIR,"-5.811407484,31.69977526,0",-5.811407484,31.69977526
1022
- 1020,AGADIR LAKHMASS,"-7.777354396,31.29856999,0",-7.777354396,31.29856999
1023
- 1021,TILEMSINE,"-7.594675333,30.85293396,0",-7.594675333,30.85293396
1024
- 1022,TADDARTE,"-7.711929724,31.38988281,0",-7.711929724,31.38988281
1025
- 1023,TINEGHLAT,"-8.523047647,30.7905266,0",-8.523047647,30.7905266
1026
- 1024,ZARWOUNE,"-7.534424102,31.26051975,0",-7.534424102,31.26051975
1027
- 1025,IMIOURMARE,"-8.264395089,31.0950131,0",-8.264395089,31.0950131
1028
- 1026,TIZOUAL,"-7.794281223,31.01106882,0",-7.794281223,31.01106882
1029
- 1027,OUGOUGNE,"-7.881414223,30.89421759,0",-7.881414223,30.89421759
1030
- 1028,AIT OUNABGUI,"-5.889226585,31.69326181,0",-5.889226585,31.69326181
1031
- 1029,IZHAGUENE,"-5.770655733,31.81149212,0",-5.770655733,31.81149212
1032
- 1030,AGHLLA,"-8.349724102,30.84322944,0",-8.349724102,30.84322944
1033
- 1031,AIT YOUBE,"-6.271504631,31.40313875,0",-6.271504631,31.40313875
1034
- 1032,AITBENAAMER,"-7.385890851,31.37057892,0",-7.385890851,31.37057892
1035
- 1033,AIT OUZKRI,"-8.247228578,31.18470182,0",-8.247228578,31.18470182
1036
- 1034,TIZGUE,"-8.253905647,31.173974,0",-8.253905647,31.173974
1037
- 1035,TIN GHORINE,"-7.880658403,31.15735466,0",-7.880658403,31.15735466
1038
- 1036,TAMMASTE,"-7.352098981,31.33357149,0",-7.352098981,31.33357149
1039
- 1037,TANAZRAR,"-8.68532412,30.82046062,0",-8.68532412,30.82046062
1040
- 1038,AL JAMAANE,"-7.788052951,31.28932274,0",-7.788052951,31.28932274
1041
- 1039,ARGUE,"-7.868657422,30.99295521,0",-7.868657422,30.99295521
1042
- 1040,AIT MAALA TAMTMAZER,"-8.29230166,30.84913489,0",-8.29230166,30.84913489
1043
- 1041,TOULGUINE,"-8.330514439,31.16115856,0",-8.330514439,31.16115856
1044
- 1042,WAKHAFAMANE,"-8.157667909,31.11273462,0",-8.157667909,31.11273462
1045
- 1043,AIT CHARRAH,"-8.183103879,31.12976865,0",-8.183103879,31.12976865
1046
- 1044,IGUER NKOURISSE,"-8.136027925,31.05107317,0",-8.136027925,31.05107317
1047
- 1045,TAMZMAMANE,"-8.377048856,30.9906389,0",-8.377048856,30.9906389
1048
- 1046,IGOUNANE,"-8.768267258,30.80777828,0",-8.768267258,30.80777828
1049
- 1047,IGUARDANE,"-8.252813214,31.15693113,0",-8.252813214,31.15693113
1050
- 1048,TALMITARTE,"-7.836545699,30.95607216,0",-7.836545699,30.95607216
1051
- 1049,IMASKER,"-8.622014672,30.84381085,0",-8.622014672,30.84381085
1052
- 1050,IMZINE,"-8.625459558,30.77250419,0",-8.625459558,30.77250419
1053
- 1051,ADDAYA,"-8.644771106,30.7431898,0",-8.644771106,30.7431898
1054
- 1052,IGLI IZDAR,"-7.900900771,30.85490486,0",-7.900900771,30.85490486
1055
- 1053,TIRIRTE,"-7.925277403,30.96524702,0",-7.925277403,30.96524702
1056
- 1054,TADOUST,"-8.528820264,30.66891724,0",-8.528820264,30.66891724
1057
- 1055,ASLOUNE,"-8.350078543,30.99265653,0",-8.350078543,30.99265653
1058
- 1056,TAGHADIRT,"-7.847805401,31.15559583,0",-7.847805401,31.15559583
1059
- 1057,TAMENSSASSARE,"-7.507448916,30.66067019,0",-7.507448916,30.66067019
1060
- 1058,LARBAA,"-7.759785236,31.02436211,0",-7.759785236,31.02436211
1061
- 1059,TALAYNTE,"-8.130392657,31.05350916,0",-8.130392657,31.05350916
1062
- 1060,WANAFSIOUINE,"-7.833024656,31.04908479,0",-7.833024656,31.04908479
1063
- 1061,TACHAKCHTE,"-8.358491236,31.0141512,0",-8.358491236,31.0141512
1064
- 1062,AMSIWI,"-8.483874121,30.89398748,0",-8.483874121,30.89398748
1065
- 1063,TIZGUI,"-7.579100938,30.62727265,0",-7.579100938,30.62727265
1066
- 1064,IMSLANE,"-8.02976889,30.96863201,0",-8.02976889,30.96863201
1067
- 1065,,"-8.052055038,30.93506628,0",-8.052055038,30.93506628
1068
- 1066,SAMGHORTE,"-8.221033074,31.09821673,0",-8.221033074,31.09821673
1069
- 1067,TIZGUI OU BLAIDE,"-8.305054114,31.1662448,0",-8.305054114,31.1662448
1070
- 1068,IDA OU BLAL,"-8.548226621,30.7568287,0",-8.548226621,30.7568287
1071
- 1069,ANMITER,"-7.785836845,31.19820911,0",-7.785836845,31.19820911
1072
- 1070,TIMGUIST,"-7.777624451,31.19634098,0",-7.777624451,31.19634098
1073
- 1071,MCHADIL,"-8.279865442,30.92566626,0",-8.279865442,30.92566626
1074
- 1072,ATNIRITE,"-8.318230215,31.10595865,0",-8.318230215,31.10595865
1075
- 1073,OURIZE,"-7.403671897,31.37366939,0",-7.403671897,31.37366939
1076
- 1074,TAJELTE OUFELLA,"-8.842420955,30.85780877,0",-8.842420955,30.85780877
1077
- 1075,TAGMOUTE,"-8.27878908,30.93485502,0",-8.27878908,30.93485502
1078
- 1076,WARTI,"-8.207318309,31.06286332,0",-8.207318309,31.06286332
1079
- 1077,TAFZA,"-7.778858284,31.35797931,0",-7.778858284,31.35797931
1080
- 1078,TISGOUANE,"-7.849614993,31.01944075,0",-7.849614993,31.01944075
1081
- 1079,ZAOUIAT IGUERD IGHIL,"-8.368220727,30.76133157,0",-8.368220727,30.76133157
1082
- 1080,IFRI,"-8.281515119,30.81944241,0",-8.281515119,30.81944241
1083
- 1081,TABIA,"-8.97005424,30.89318087,0",-8.97005424,30.89318087
1084
- 1082,ZT TASSAFT,"-8.219969197,30.95556705,0",-8.219969197,30.95556705
1085
- 1083,EL HNAINE,"-8.148859761,31.01612257,0",-8.148859761,31.01612257
1086
- 1084,WAFADNA,"-7.516367178,31.37662177,0",-7.516367178,31.37662177
1087
- 1085,IGOURDANE,"-7.761718841,31.02940168,0",-7.761718841,31.02940168
1088
- 1086,TOUGHOUTE,"-7.642019791,31.08421485,0",-7.642019791,31.08421485
1089
- 1087,TAKOUCHTAMTE,"-7.645199151,30.58458833,0",-7.645199151,30.58458833
1090
- 1088,AIT WALMANE,"-7.55297816,30.5850168,0",-7.55297816,30.5850168
1091
- 1089,ANFAG,"-8.182256363,31.19929698,0",-8.182256363,31.19929698
1092
- 1090,TAJGALTE,"-8.381544656,30.7890684,0",-8.381544656,30.7890684
1093
- 1091,AMASSINE,"-7.788771105,31.31035099,0",-7.788771105,31.31035099
1094
- 1092,TASDMERTE,"-8.713552212,30.74097964,0",-8.713552212,30.74097964
1095
- 1093,TOUGOUKHT,"-8.509409379,30.7818957,0",-8.509409379,30.7818957
1096
- 1094,TAAYATE,"-7.306867834,31.35289511,0",-7.306867834,31.35289511
1097
- 1095,AMASSINE,"-7.583427866,30.80910337,0",-7.583427866,30.80910337
1098
- 1096,AGRILAOUN,"-7.595054199,30.85643598,0",-7.595054199,30.85643598
1099
- 1097,IZOUKANNANE,"-7.863444528,30.83675491,0",-7.863444528,30.83675491
1100
- 1098,TIMITARE,"-7.895987828,30.83303057,0",-7.895987828,30.83303057
1101
- 1099,TARKOUT,"-8.623065499,30.85651811,0",-8.623065499,30.85651811
1102
- 1100,TAGADIRT NTAFINGOULT,"-8.387274004,30.76496523,0",-8.387274004,30.76496523
1103
- 1101,IGHIRA,"-8.289034161,30.85252278,0",-8.289034161,30.85252278
1104
- 1102,TIZINTZOUGUARTE,"-7.677747475,31.39773439,0",-7.677747475,31.39773439
1105
- 1103,AZEMOUR,"-8.0889346,31.10585421,0",-8.0889346,31.10585421
1106
- 1104,MARIGUA,"-8.034298096,31.18603267,0",-8.034298096,31.18603267
1107
- 1105,TASSA OUIRGANE,"-8.028928418,31.16490604,0",-8.028928418,31.16490604
1108
- 1106,TIZI ZOUGGARTE,"-7.98486225,31.13325836,0",-7.98486225,31.13325836
1109
- 1107,ISKALEN,"-8.274215239,30.93349365,0",-8.274215239,30.93349365
1110
- 1108,TIZOUDA,"-6.566513487,31.28777261,0",-6.566513487,31.28777261
1111
- 1109,,"-7.268103547,31.28935547,0",-7.268103547,31.28935547
1112
- 1110,ARGUE,"-7.31897905,31.25768101,0",-7.31897905,31.25768101
1113
- 1111,AGADIR INMZAL,"-8.01226333,30.99830307,0",-8.01226333,30.99830307
1114
- 1112,,"-7.128783104,31.16287699,0",-7.128783104,31.16287699
1115
- 1113,TIOURASSINE,"-7.151024878,31.276392,0",-7.151024878,31.276392
1116
- 1114,ASQAOUR,"-7.666538215,31.23207043,0",-7.666538215,31.23207043
1117
- 1115,TIMSALE,"-8.72311326,31.11377428,0",-8.72311326,31.11377428
1118
- 1116,OUSSIKIS,"-8.722636639,31.00100768,0",-8.722636639,31.00100768
1119
- 1117,IMLIL,"-8.44059058,30.8956513,0",-8.44059058,30.8956513
1120
- 1118,TARZIRINE,"-6.446998908,31.39339822,0",-6.446998908,31.39339822
1121
- 1119,ADARDORE,"-8.278826713,31.07331629,0",-8.278826713,31.07331629
1122
- 1120,IGHRAME,"-8.049421766,31.07403881,0",-8.049421766,31.07403881
1123
- 1121,AIT HIMMI,"-7.769384787,30.76931125,0",-7.769384787,30.76931125
1124
- 1122,TAOUSS,"-8.270408058,30.94106967,0",-8.270408058,30.94106967
1125
- 1123,TIJGHICHTE,"-8.090516303,30.97012018,0",-8.090516303,30.97012018
1126
- 1124,TAGHZOUTE,"-8.86167312,30.92147071,0",-8.86167312,30.92147071
1127
- 1125,TIZZA,"-8.778384523,30.91685174,0",-8.778384523,30.91685174
1128
- 1126,AMASSA,"-8.827305619,30.86723276,0",-8.827305619,30.86723276
1129
- 1127,KAIKTE,"-8.854311896,30.86235732,0",-8.854311896,30.86235732
1130
- 1128,CASLAB,"-8.554969238,30.6821786,0",-8.554969238,30.6821786
1131
- 1129,AGADAL,"-8.505855459,30.64672204,0",-8.505855459,30.64672204
1132
- 1130,TIZI OU HAMMOU,"-8.672132358,30.65647704,0",-8.672132358,30.65647704
1133
- 1131,AZROU,"-7.948510748,30.95529105,0",-7.948510748,30.95529105
1134
- 1132,TIZA GHARINE,"-8.227230432,30.9784861,0",-8.227230432,30.9784861
1135
- 1133,OUKONE,"-8.321640621,30.92250039,0",-8.321640621,30.92250039
1136
- 1134,AGHBALOU,"-7.736195822,31.31128286,0",-7.736195822,31.31128286
1137
- 1135,TIMSKRINE NOUGHBALOU,"-7.744861464,31.29959822,0",-7.744861464,31.29959822
1138
- 1136,IGHRAME,"-8.140787629,31.10647004,0",-8.140787629,31.10647004
1139
- 1137,TAHT DOUM,"-7.786930155,31.36979025,0",-7.786930155,31.36979025
1140
- 1138,TAOURIRTE,"-7.768692283,31.3622727,0",-7.768692283,31.3622727
1141
- 1139,TIZOUNTE,"-8.733934173,30.61596999,0",-8.733934173,30.61596999
1142
- 1140,AIT MOUSSA,"-8.684398529,30.6151917,0",-8.684398529,30.6151917
1143
- 1141,AMASSINE,"-6.352287312,31.46784763,0",-6.352287312,31.46784763
1144
- 1142,ASNI,"-7.722904353,31.30025445,0",-7.722904353,31.30025445
1145
- 1143,AIT ZEITOUNE,"-8.090523673,31.01967796,0",-8.090523673,31.01967796
1146
- 1144,AIT TIGGA,"-7.50916525,30.70265639,0",-7.50916525,30.70265639
1147
- 1145,TARZOUTE,"-6.182124767,31.58319127,0",-6.182124767,31.58319127
1148
- 1146,AMNDAL,"-8.455834326,30.92044875,0",-8.455834326,30.92044875
1149
- 1147,IMIMGOUNTE,"-8.878117358,30.86477123,0",-8.878117358,30.86477123
1150
- 1148,IGUIDARE,"-8.93418851,30.88343752,0",-8.93418851,30.88343752
1151
- 1149,TAMSKSITE,"-7.784895996,30.76632806,0",-7.784895996,30.76632806
1152
- 1150,ZAOUIAT BOUSKOUR,"-5.874946395,31.58722353,0",-5.874946395,31.58722353
1153
- 1151,CHRAIRE,"-8.473098203,30.67956532,0",-8.473098203,30.67956532
1154
- 1152,TAMSOULT SOUAL,"-8.384537946,30.84188812,0",-8.384537946,30.84188812
1155
- 1153,DOU ISKLE,"-8.281119969,30.78456043,0",-8.281119969,30.78456043
1156
- 1154,TIFERT,"-8.348545465,30.77150791,0",-8.348545465,30.77150791
1157
- 1155,IFOURIRNE,"-8.239360155,30.96880451,0",-8.239360155,30.96880451
1158
- 1156,AIT ALI OU AISSA,"-5.805654987,31.74442094,0",-5.805654987,31.74442094
1159
- 1157,ZAOUIAT TABGOURT,"-8.504916237,30.76003295,0",-8.504916237,30.76003295
1160
- 1158,TOUDMA,"-8.511039179,30.79006977,0",-8.511039179,30.79006977
1161
- 1159,AIT ALI OU MOUSSA,"-6.713909371,31.28931362,0",-6.713909371,31.28931362
1162
- 1160,DOU TOURIRTE,"-8.2099922,30.96515158,0",-8.2099922,30.96515158
1163
- 1161,AIT HAMMOU OU SAID,"-5.886799673,31.58053002,0",-5.886799673,31.58053002
1164
- 1162,TALTA,"-8.59210513,30.81453443,0",-8.59210513,30.81453443
1165
- 1163,TAMOUMANT,"-8.432311395,30.76544848,0",-8.432311395,30.76544848
1166
- 1164,ARTATAYNE,"-8.260379808,30.93435354,0",-8.260379808,30.93435354
1167
- 1165,IMIN-TALA,"-8.267106325,31.12908466,0",-8.267106325,31.12908466
1168
- 1166,TIZI NAIT IAZZA,"-7.759485597,31.0201294,0",-7.759485597,31.0201294
1169
- 1167,MEGDOUT,"-8.615360527,30.83983913,0",-8.615360527,30.83983913
1170
- 1168,IGU-N-CHEIKH,"-8.970366751,30.71664921,0",-8.970366751,30.71664921
1171
- 1169,MEZWADDE,"-7.680960146,30.58284438,0",-7.680960146,30.58284438
1172
- 1170,AMZZARKO,"-7.844190994,30.94630487,0",-7.844190994,30.94630487
1173
- 1171,AIT ZAKRI,"-8.147941401,30.89227205,0",-8.147941401,30.89227205
1174
- 1172,TARGA N-TAHMIT,"-8.121739332,30.86129159,0",-8.121739332,30.86129159
1175
- 1173,TIFLTE AIT ITFAOU,"-6.569327984,31.22192304,0",-6.569327984,31.22192304
1176
- 1174,SOUGUANE,"-7.674757924,31.35292724,0",-7.674757924,31.35292724
1177
- 1175,TALMSAWT,"-8.983864001,30.83212691,0",-8.983864001,30.83212691
1178
- 1176,AIT OTHMANE,"-8.394214123,31.15230581,0",-8.394214123,31.15230581
1179
- 1177,DOU OUZROU,"-8.384798614,31.16122428,0",-8.384798614,31.16122428
1180
- 1178,AMZILE-EL THTANI,"-6.216339059,31.41118898,0",-6.216339059,31.41118898
1181
- 1179,,"-8.440953168,30.7417746,0",-8.440953168,30.7417746
1182
- 1180,SGOUR,"-7.725390911,31.34344593,0",-7.725390911,31.34344593
1183
- 1181,INADENE,"-8.142890016,31.03496329,0",-8.142890016,31.03496329
1184
- 1182,ASSAKA,"-7.757436309,30.82348482,0",-7.757436309,30.82348482
1185
- 1183,TOUZOUMTANE,"-8.554749801,30.72392121,0",-8.554749801,30.72392121
1186
- 1184,TIZGUINE,"-6.122658746,31.44590271,0",-6.122658746,31.44590271
1187
- 1185,IMOUZROU AGOUMADANE,"-8.660537921,30.70827751,0",-8.660537921,30.70827751
1188
- 1186,TASSAWANTE,"-8.190784156,30.98427393,0",-8.190784156,30.98427393
1189
- 1187,TAGADIRTE NOUMIOSSE,"-8.206342921,30.96425316,0",-8.206342921,30.96425316
1190
- 1188,TAWRIRT,"-8.478844194,30.89339406,0",-8.478844194,30.89339406
1191
- 1189,BOULAHBAK ALMODAA,"-8.284362292,30.97790124,0",-8.284362292,30.97790124
1192
- 1190,KMA,"-8.572750589,30.78808645,0",-8.572750589,30.78808645
1193
- 1191,AIT BOUBKER,"-8.156259267,31.20036942,0",-8.156259267,31.20036942
1194
- 1192,OUALGGO,"-8.913054003,31.05772976,0",-8.913054003,31.05772976
1195
- 1193,TAMSSOULTE,"-8.909818734,30.90664695,0",-8.909818734,30.90664695
1196
- 1194,TIWARDIWINE,"-7.749685121,31.19756148,0",-7.749685121,31.19756148
1197
- 1195,TAKIOUTE,"-7.759387461,31.25608754,0",-7.759387461,31.25608754
1198
- 1196,TARGAN-OUFRA,"-8.073309302,30.89513461,0",-8.073309302,30.89513461
1199
- 1197,,"-7.655022221,31.05874848,0",-7.655022221,31.05874848
1200
- 1198,AMANZAL,"-7.722004072,31.16501314,0",-7.722004072,31.16501314
1201
- 1199,TASGUINTE,"-8.852447506,30.87473043,0",-8.852447506,30.87473043
1202
- 1200,TAMZRITE(IGAARNANE),"-6.932188378,31.32049578,0",-6.932188378,31.32049578
1203
- 1201,MATATE,"-7.941973385,31.1571317,0",-7.941973385,31.1571317
1204
- 1202,IKISS,"-7.888535763,31.16571636,0",-7.888535763,31.16571636
1205
- 1203,,"-7.62864398,31.117373,0",-7.62864398,31.117373
1206
- 1204,ALMS,"-8.847901233,31.06072957,0",-8.847901233,31.06072957
1207
- 1205,TANSGHARTE,"-7.975198036,31.22398614,0",-7.975198036,31.22398614
1208
- 1206,AGADIR ISMIR,"-7.885976308,31.24368611,0",-7.885976308,31.24368611
1209
- 1207,TAWRIRTE,"-7.677449997,31.04819033,0",-7.677449997,31.04819033
1210
- 1208,TAOURIRT,"-8.668507596,30.80170554,0",-8.668507596,30.80170554
1211
- 1209,TAGHIGHOUCHT,"-7.839242749,30.82135697,0",-7.839242749,30.82135697
1212
- 1210,BOUSGUINE,"-8.880485407,30.68613694,0",-8.880485407,30.68613694
1213
- 1211,TALATAN,"-8.945127385,30.6957643,0",-8.945127385,30.6957643
1214
- 1212,AIT ABDI,"-5.80835748,31.73194902,0",-5.80835748,31.73194902
1215
- 1213,AIT TAMGOUNTE,"-5.808371243,31.75063616,0",-5.808371243,31.75063616
1216
- 1214,TALATE NOUGNARE,"-7.840406197,30.77715819,0",-7.840406197,30.77715819
1217
- 1215,TIMZRITE,"-7.691569684,31.06189362,0",-7.691569684,31.06189362
1218
- 1216,TIFIXTE,"-8.372543688,30.76258703,0",-8.372543688,30.76258703
1219
- 1217,AIT WAHOU,"-7.769915684,30.81291618,0",-7.769915684,30.81291618
1220
- 1218,AIT KHLIFA,"-6.239173771,31.41869442,0",-6.239173771,31.41869442
1221
- 1219,TIGHARMITE,"-5.81043302,31.69695899,0",-5.81043302,31.69695899
1222
- 1220,AIT HAMD,"-8.244660365,31.1717558,0",-8.244660365,31.1717558
1223
- 1221,,"-5.827455725,31.6857457,0",-5.827455725,31.6857457
1224
- 1222,IGRANE TAOUINAKHT,"-8.490359557,30.78197858,0",-8.490359557,30.78197858
1225
- 1223,AWFOUR,"-8.590554562,30.97436252,0",-8.590554562,30.97436252
1226
- 1224,ASSAKA,"-8.019946561,30.8574795,0",-8.019946561,30.8574795
1227
- 1225,ASSALDA,"-7.96566162,31.25750632,0",-7.96566162,31.25750632
1228
- 1226,ANARGHI,"-8.409552743,30.91825352,0",-8.409552743,30.91825352
1229
- 1227,TADDARTE,"-7.394210121,31.35851969,0",-7.394210121,31.35851969
1230
- 1228,AMTSITANE,"-7.374244559,31.32579136,0",-7.374244559,31.32579136
1231
- 1229,TADDART,"-8.581872069,30.86294844,0",-8.581872069,30.86294844
1232
- 1230,ARGHANE,"-8.233639046,30.97889547,0",-8.233639046,30.97889547
1233
- 1231,TINMAL,"-8.224761565,30.9828638,0",-8.224761565,30.9828638
1234
- 1232,IGHOUNANE,"-7.144038714,31.28626564,0",-7.144038714,31.28626564
1235
- 1233,HLOUTE,"-7.893104962,30.85458789,0",-7.893104962,30.85458789
1236
- 1234,AMASSKRA,"-7.427239593,31.36345706,0",-7.427239593,31.36345706
1237
- 1235,WANITARNE,"-7.830358257,30.77787467,0",-7.830358257,30.77787467
1238
- 1236,AKOUCHTIM,"-7.63398087,31.10523316,0",-7.63398087,31.10523316
1239
- 1237,AGDIM,"-8.097196299,30.86031737,0",-8.097196299,30.86031737
1240
- 1238,AIT ATTOU OU YAKKOU,"-5.766323932,31.83002296,0",-5.766323932,31.83002296
1241
- 1239,AIT FARS,"-7.129636042,31.13476059,0",-7.129636042,31.13476059
1242
- 1240,TAKOURDMI,"-8.180289964,30.89070325,0",-8.180289964,30.89070325
1243
- 1241,AMAZER,"-7.789014314,31.26708014,0",-7.789014314,31.26708014
1244
- 1242,AIT CHAOUIT,"-7.78334498,31.37174569,0",-7.78334498,31.37174569
1245
- 1243,EL HAJEB,"-7.801005955,31.37213789,0",-7.801005955,31.37213789
1246
- 1244,TAMARRISTE,"-8.850167421,30.75888182,0",-8.850167421,30.75888182
1247
- 1245,YABOURA,"-7.758709685,31.30015096,0",-7.758709685,31.30015096
1248
- 1246,TIMLILTE,"-8.207328561,30.97436753,0",-8.207328561,30.97436753
1249
- 1247,ASSAKA,"-8.776877967,30.72197209,0",-8.776877967,30.72197209
1250
- 1248,AGADIR LJAMA,"-8.426123711,30.79949494,0",-8.426123711,30.79949494
1251
- 1249,TAWART,"-8.668687592,30.83516217,0",-8.668687592,30.83516217
1252
- 1250,OUSRAINE,"-7.76935945,31.00978226,0",-7.76935945,31.00978226
1253
- 1251,TIHLATE,"-8.910630813,30.68631916,0",-8.910630813,30.68631916
1254
- 1252,AIT BOUKHZIR,"-8.327804337,30.85346616,0",-8.327804337,30.85346616
1255
- 1253,AIT AMAROU BRAHIM,"-5.877661961,31.58341416,0",-5.877661961,31.58341416
1256
- 1254,AGHBALOU,"-7.709711291,30.8276792,0",-7.709711291,30.8276792
1257
- 1255,WAWZRAKT,"-8.571089722,30.85692721,0",-8.571089722,30.85692721
1258
- 1256,ILOUKOUSSEN,"-7.847847114,30.82578191,0",-7.847847114,30.82578191
1259
- 1257,AIT CHERIF,"-8.756217748,30.66308701,0",-8.756217748,30.66308701
1260
- 1258,AZGARANE,"-8.880704155,30.70018251,0",-8.880704155,30.70018251
1261
- 1259,TOUKOUNTE,"-7.762131366,31.02676934,0",-7.762131366,31.02676934
1262
- 1260,ABANE,"-7.763510404,30.78739706,0",-7.763510404,30.78739706
1263
- 1261,TIMALIZEN,"-7.749794147,31.35110332,0",-7.749794147,31.35110332
1264
- 1262,TAMKZDART,"-6.420828035,31.43241781,0",-6.420828035,31.43241781
1265
- 1263,TIGHLI,"-6.465245175,31.46423623,0",-6.465245175,31.46423623
1266
- 1264,TOUYALINE,"-8.49260213,30.89962716,0",-8.49260213,30.89962716
1267
- 1265,TAOURIRTE,"-7.836814113,30.80149583,0",-7.836814113,30.80149583
1268
- 1266,TARGANIZRANE,"-8.364279586,30.84087135,0",-8.364279586,30.84087135
1269
- 1267,TANSSIFTE,"-6.587786239,31.24278325,0",-6.587786239,31.24278325
1270
- 1268,ICHAHRINE,"-7.852841061,30.8395675,0",-7.852841061,30.8395675
1271
- 1269,ALOUSSE,"-8.33303087,30.99048964,0",-8.33303087,30.99048964
1272
- 1270,WANLAKHTE,"-8.99768451,31.01303846,0",-8.99768451,31.01303846
1273
- 1271,TAZAITE,"-8.845478496,30.75261187,0",-8.845478496,30.75261187
1274
- 1272,IARME-AKDIME,"-6.11833479,31.45110777,0",-6.11833479,31.45110777
1275
- 1273,ANNAMAR,"-7.667543866,31.27473869,0",-7.667543866,31.27473869
1276
- 1274,TASGUINTE,"-7.969154802,30.90944826,0",-7.969154802,30.90944826
1277
- 1275,IDAGH,"-7.317362809,31.36008041,0",-7.317362809,31.36008041
1278
- 1276,AIT MAAROUF,"-7.573579734,30.58373669,0",-7.573579734,30.58373669
1279
- 1277,AIT ZMLAL,"-8.706871813,30.95287075,0",-8.706871813,30.95287075
1280
- 1278,TAWRIRTE,"-8.507359206,31.11334486,0",-8.507359206,31.11334486
1281
- 1279,TAGADIRT NID AMMOU,"-7.888437538,30.96251975,0",-7.888437538,30.96251975
1282
- 1280,ANGOUKHTE,"-8.533503572,30.99674362,0",-8.533503572,30.99674362
1283
- 1281,TAMANGROUTE,"-6.694180579,31.24112915,0",-6.694180579,31.24112915
1284
- 1282,IOUACODEN,"-7.537383597,31.36217518,0",-7.537383597,31.36217518
1285
- 1283,ISSOUKTAY,"-7.743639515,31.31833703,0",-7.743639515,31.31833703
1286
- 1284,TANBDANT,"-8.449489577,30.81415813,0",-8.449489577,30.81415813
1287
- 1285,AZROU MELLENE,"-8.583254097,30.9829239,0",-8.583254097,30.9829239
1288
- 1286,TIQUI,"-7.940799129,30.95012338,0",-7.940799129,30.95012338
1289
- 1287,IMINTALAT,"-8.139429279,31.20141668,0",-8.139429279,31.20141668
1290
- 1288,TAKOULTIMT,"-8.340586013,30.78458892,0",-8.340586013,30.78458892
1291
- 1289,TAGHZOUTE,"-8.207607178,31.10293891,0",-8.207607178,31.10293891
1292
- 1290,IMLIL,"-7.821125723,30.99780155,0",-7.821125723,30.99780155
1293
- 1291,AGUERS AFENE,"-8.702112247,30.9575207,0",-8.702112247,30.9575207
1294
- 1292,MTILI,"-8.746621817,30.93833734,0",-8.746621817,30.93833734
1295
- 1293,OUZAGA,"-8.720092691,30.92029184,0",-8.720092691,30.92029184
1296
- 1294,RARKTOU,"-8.659869793,30.93108458,0",-8.659869793,30.93108458
1297
- 1295,AZERBZANE,"-7.799051184,30.76500186,0",-7.799051184,30.76500186
1298
- 1296,TOURBIHINE,"-8.993894031,30.83088204,0",-8.993894031,30.83088204
1299
- 1297,TAGHRA,"-6.533855177,31.40376072,0",-6.533855177,31.40376072
1300
- 1298,IHARRAY,"-7.557370045,31.37330376,0",-7.557370045,31.37330376
1301
- 1299,AGHBALOU AIT LQAQ,"-7.810742407,31.24143288,0",-7.810742407,31.24143288
1302
- 1300,TAMMAST,"-8.792798077,30.76606268,0",-8.792798077,30.76606268
1303
- 1301,ASSAKA,"-8.76607308,30.76725223,0",-8.76607308,30.76725223
1304
- 1302,IGHARMANE,"-7.729985536,31.30314035,0",-7.729985536,31.30314035
1305
- 1303,TIZGUI OU ZADAR,"-8.990740765,30.9642687,0",-8.990740765,30.9642687
1306
- 1304,OULAD MELLOUK,"-8.528658117,30.63958592,0",-8.528658117,30.63958592
1307
- 1305,AFRA,"-8.761804008,30.73010398,0",-8.761804008,30.73010398
1308
- 1306,MOURGH,"-8.928806186,30.6558274,0",-8.928806186,30.6558274
1309
- 1307,BOUSKANE,"-8.792477613,30.74035777,0",-8.792477613,30.74035777
1310
- 1308,IGLI OUFELLA(souk),"-7.899685626,30.85706716,0",-7.899685626,30.85706716
1311
- 1309,ASSIF LAHLOU,"-8.677606617,30.92529322,0",-8.677606617,30.92529322
1312
- 1310,MINE ZGOUNDIR,"-7.755240903,30.75952497,0",-7.755240903,30.75952497
1313
- 1311,TAGADIRTE NAIT ZNIRT,"-7.783523639,31.36503153,0",-7.783523639,31.36503153
1314
- 1312,AGADIRNE,"-8.166505546,30.9681913,0",-8.166505546,30.9681913
1315
- 1313,AIT YOUB,"-8.274628352,30.80338258,0",-8.274628352,30.80338258
1316
- 1314,TAFANTANE,"-7.85348655,31.34534785,0",-7.85348655,31.34534785
1317
- 1315,IMIDALE,"-8.132545735,31.10809915,0",-8.132545735,31.10809915
1318
- 1316,TAMSOULT,"-8.37074986,31.00313632,0",-8.37074986,31.00313632
1319
- 1317,TAGADIRT,"-8.68048652,30.77086926,0",-8.68048652,30.77086926
1320
- 1318,IGUIDI,"-8.101972502,31.02325618,0",-8.101972502,31.02325618
1321
- 1319,FATERAWAT,"-7.574152617,30.58718831,0",-7.574152617,30.58718831
1322
- 1320,OURIGHE,"-8.156413549,31.1056829,0",-8.156413549,31.1056829
1323
- 1321,TIZ GHOURINE,"-7.696836561,31.07143593,0",-7.696836561,31.07143593
1324
- 1322,IMZILEN,"-7.645751216,30.6071984,0",-7.645751216,30.6071984
1325
- 1323,TALLOUZT,"-8.788312791,30.76677482,0",-8.788312791,30.76677482
1326
- 1324,TACHAKOUCHTE,"-7.760110164,30.63649912,0",-7.760110164,30.63649912
1327
- 1325,TIGGRTE,"-7.128734274,31.1388537,0",-7.128734274,31.1388537
1328
- 1326,AGADIR HAJ HAMMOU,"-8.535736461,30.63769777,0",-8.535736461,30.63769777
1329
- 1327,,"-7.887465972,30.87028648,0",-7.887465972,30.87028648
1330
- 1328,TAGNIT,"-7.654822842,31.27497547,0",-7.654822842,31.27497547
1331
- 1329,IZAGGUENE,"-7.916750384,30.97766233,0",-7.916750384,30.97766233
1332
- 1330,AIT EL KADI,"-8.198364614,30.88479428,0",-8.198364614,30.88479428
1333
- 1331,AIT TADRART,"-8.242892808,30.84519318,0",-8.242892808,30.84519318
1334
- 1332,AZMOU,"-8.486762354,31.13220827,0",-8.486762354,31.13220827
1335
- 1333,AGUERD OU MZLOU,"-8.976756097,30.99075111,0",-8.976756097,30.99075111
1336
- 1334,IKAKREN,"-8.975409217,30.83199098,0",-8.975409217,30.83199098
1337
- 1335,AIT LHAROUACH,"-9.001158406,30.95116432,0",-9.001158406,30.95116432
1338
- 1336,TINOUMARTINE,"-8.895115452,30.96286952,0",-8.895115452,30.96286952
1339
- 1337,TIMESKERTE,"-8.775657219,31.06094823,0",-8.775657219,31.06094823
1340
- 1338,TIGOUMANE SKARATE,"-8.80297169,31.08490154,0",-8.80297169,31.08490154
1341
- 1339,IMIGHZER,"-8.703155314,30.62228187,0",-8.703155314,30.62228187
1342
- 1340,ZAOUIAT TAKRART,"-9.013343266,30.98179804,0",-9.013343266,30.98179804
1343
- 1341,TAADADATE TAKDIMTE,"-5.832104527,31.68103102,0",-5.832104527,31.68103102
1344
- 1342,AIT HMID,"-8.612713692,30.68280181,0",-8.612713692,30.68280181
1345
- 1343,TIGHARMINE,"-7.60042568,31.36080717,0",-7.60042568,31.36080717
1346
- 1344,ISLANE,"-8.855657962,30.76642752,0",-8.855657962,30.76642752
1347
- 1345,AITIFERD,"-7.742386301,30.82171242,0",-7.742386301,30.82171242
1348
- 1346,IMOUZEZ,"-8.427052779,30.79605365,0",-8.427052779,30.79605365
1349
- 1347,ASSAISS,"-8.334410604,30.85409967,0",-8.334410604,30.85409967
1350
- 1348,BENTAFFOU,"-8.74444328,30.60552442,0",-8.74444328,30.60552442
1351
- 1349,TOURAB,"-8.566708091,31.04105367,0",-8.566708091,31.04105367
1352
- 1350,ARG,"-7.920435643,31.18676712,0",-7.920435643,31.18676712
1353
- 1351,WIYGUITE,"-8.217118556,30.94741728,0",-8.217118556,30.94741728
1354
- 1352,IFGHANE,"-7.921887937,31.23991509,0",-7.921887937,31.23991509
1355
- 1353,ANAMMAR,"-8.417641715,31.129538,0",-8.417641715,31.129538
1356
- 1354,AMOUTOU,"-7.652805401,31.35679943,0",-7.652805401,31.35679943
1357
- 1355,AMARZGANE,"-8.278817786,30.97377741,0",-8.278817786,30.97377741
1358
- 1356,AKHOUTRIR,"-8.783897658,30.69567462,0",-8.783897658,30.69567462
1359
- 1357,TAZALTE,"-8.245333426,30.97631238,0",-8.245333426,30.97631238
1360
- 1358,TIKIWTE,"-8.175063949,30.99996735,0",-8.175063949,30.99996735
1361
- 1359,,"-8.410303531,30.85816857,0",-8.410303531,30.85816857
1362
- 1360,TASSILI,"-8.690317118,30.82411293,0",-8.690317118,30.82411293
1363
- 1361,AIT OUBLAL,"-8.420373544,30.82273538,0",-8.420373544,30.82273538
1364
- 1362,IZNOUNA,"-8.466505147,31.0488362,0",-8.466505147,31.0488362
1365
- 1363,WIDRARANE,"-8.386534006,30.89543756,0",-8.386534006,30.89543756
1366
- 1364,AIT MOUSSI,"-7.773707163,31.25447367,0",-7.773707163,31.25447367
1367
- 1365,TADMENKALT,"-7.712944132,31.2737114,0",-7.712944132,31.2737114
1368
- 1366,AMASSINE,"-8.762204403,31.06992032,0",-8.762204403,31.06992032
1369
- 1367,CENTRE OUKAIMDEN,"-7.857505737,31.20842298,0",-7.857505737,31.20842298
1370
- 1368,FIGRI,"-8.682495596,30.81711914,0",-8.682495596,30.81711914
1371
- 1369,IGHIL,"-8.290349188,30.98677929,0",-8.290349188,30.98677929
1372
- 1370,OURTANE,"-8.906837581,30.9056637,0",-8.906837581,30.9056637
1373
- 1371,AWRA,"-7.68241959,31.05149585,0",-7.68241959,31.05149585
1374
- 1372,ANROUYE,"-7.946610622,30.91369434,0",-7.946610622,30.91369434
1375
- 1373,AIT CHOU,"-7.76867439,31.26465544,0",-7.76867439,31.26465544
1376
- 1374,AKHBACHEN,"-7.761295415,31.24920488,0",-7.761295415,31.24920488
1377
- 1375,ALGJI,"-7.784416467,31.36855876,0",-7.784416467,31.36855876
1378
- 1376,LAKHMISS,"-7.770976744,31.38661745,0",-7.770976744,31.38661745
1379
- 1377,AKHLIJ,"-7.774981442,31.37270305,0",-7.774981442,31.37270305
1380
- 1378,OUCHFILANE,"-8.109471344,31.20456661,0",-8.109471344,31.20456661
1381
- 1379,AWRIR,"-7.755690071,31.26360918,0",-7.755690071,31.26360918
1382
- 1380,ZAOUIA AIT MECHKOUR,"-7.715145342,31.29957275,0",-7.715145342,31.29957275
1383
- 1381,ADARDORE,"-8.738182485,31.05655476,0",-8.738182485,31.05655476
1384
- 1382,AGADIR NAIT BOULMANE,"-7.691144323,31.21866644,0",-7.691144323,31.21866644
1385
- 1383,KATTO,"-8.274515871,31.08431501,0",-8.274515871,31.08431501
1386
- 1384,IMI ISLI,"-8.262478891,31.14818448,0",-8.262478891,31.14818448
1387
- 1385,AZARFSANE,"-7.993244912,31.16665457,0",-7.993244912,31.16665457
1388
- 1386,IBAACHENE,"-7.718844855,31.20794009,0",-7.718844855,31.20794009
1389
- 1387,ANFLI,"-7.740261343,31.20070176,0",-7.740261343,31.20070176
1390
- 1388,TAMSSOULTE,"-7.703611486,31.38737985,0",-7.703611486,31.38737985
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
data/Besoin moins important en électricité.csv DELETED
The diff for this file is too large to render. See raw diff
 
data/regions.json DELETED
The diff for this file is too large to render. See raw diff
 
locales/ar/LC_MESSAGES/messages.mo DELETED
Binary file (4.76 kB)
 
locales/ar/LC_MESSAGES/messages.po DELETED
@@ -1,1443 +0,0 @@
1
- # SOME DESCRIPTIVE TITLE.
2
- # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
- # This file is distributed under the same license as the PACKAGE package.
4
- # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
- #
6
- #: src/utils.py:69 src/utils.py:70 src/markers.py:226 src/components.py:19
7
- msgid ""
8
- msgstr ""
9
- "Project-Id-Version: \n"
10
- "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2023-09-26 20:34+0200\n"
12
- "PO-Revision-Date: 2023-09-18 21:00+0200\n"
13
- "Last-Translator: \n"
14
- "Language-Team: \n"
15
- "Language: ar\n"
16
- "MIME-Version: 1.0\n"
17
- "Content-Type: text/plain; charset=UTF-8\n"
18
- "Content-Transfer-Encoding: 8bit\n"
19
- "X-Generator: Poedit 3.3.2\n"
20
-
21
- #: app.py:21
22
- msgid "myapplication"
23
- msgstr ""
24
-
25
- #: app.py:23
26
- msgid "HF_TOKEN"
27
- msgstr ""
28
-
29
- #: app.py:30
30
- msgid "wide"
31
- msgstr ""
32
-
33
- #: app.py:31 src/filters.py:40 src/filters.py:62
34
- msgid "collapsed"
35
- msgstr ""
36
-
37
- #: app.py:32
38
- msgid "🤝"
39
- msgstr ""
40
-
41
- #: app.py:33
42
- msgid "Nt3awnou نتعاونو"
43
- msgstr ""
44
-
45
- #: app.py:37
46
- msgid "sleep_time"
47
- msgstr ""
48
-
49
- #: app.py:39
50
- msgid "auto_refresh"
51
- msgstr ""
52
-
53
- #: app.py:42
54
- msgid "Auto Refresh?"
55
- msgstr ""
56
-
57
- #: app.py:44
58
- msgid "Refresh rate in seconds"
59
- msgstr ""
60
-
61
- #: app.py:54 app.py:184 src/components.py:78 src/components.py:162
62
- msgid "ar"
63
- msgstr ""
64
-
65
- #: app.py:54
66
- msgid "العربية"
67
- msgstr ""
68
-
69
- #: app.py:55 src/components.py:101 src/components.py:179
70
- msgid "fr"
71
- msgstr ""
72
-
73
- #: app.py:55
74
- msgid "Français"
75
- msgstr ""
76
-
77
- #: app.py:56 app.py:61 src/components.py:55 src/components.py:146
78
- msgid "en"
79
- msgstr ""
80
-
81
- #: app.py:56
82
- msgid "English"
83
- msgstr ""
84
-
85
- #: app.py:59
86
- msgid "Choose language / اختر اللغة"
87
- msgstr ""
88
-
89
- #: app.py:64
90
- msgid "messages"
91
- msgstr ""
92
-
93
- #: app.py:64
94
- msgid "locales"
95
- msgstr ""
96
-
97
- #: app.py:69
98
- msgid "Markers"
99
- msgstr ""
100
-
101
- #: app.py:112
102
- msgid "map"
103
- msgstr ""
104
-
105
- #: app.py:186
106
- msgid ""
107
- "\n"
108
- " <style>\n"
109
- " body {\n"
110
- " text-align: right;\n"
111
- " }\n"
112
- " </style>\n"
113
- " "
114
- msgstr ""
115
-
116
- #: src/text_content.py:2
117
- msgid ""
118
- "\n"
119
- " <div style=\"text-align: left;\">\n"
120
- " Nt3awnou نتعاونو is a non-profit organization and a collaborative "
121
- "platform dedicated to aiding individuals impacted by the recent earthquake "
122
- "in Morocco. Our core mission is to streamline and coordinate timely "
123
- "assistance for everyone affected. How do we achieve this? We assist those in "
124
- "need by allowing them to communicate their location and the specific aid "
125
- "they require, either by completing a form or sending a voice message via "
126
- "WhatsApp to the number <b>0602838166</b>. Once we receive and process this "
127
- "information, it can be viewed in our dashboard, which allows NGOs to "
128
- "organize and precisely target their interventions, ensuring swift assistance "
129
- "reaches those in need. Any organization that has taken initiative in a "
130
- "particular area can notify us by completing a dedicated form. This data is "
131
- "also incorporated into the dashboard so that other NGOs can help affected "
132
- "areas that still haven't received help.\n"
133
- " <br>⚠️ Warning : There are still rocks falling down the mountains, making "
134
- "the roads to the affected areas very dangerous. We advise volunteers to "
135
- "donate directly to specialized NGOs.<br>\n"
136
- " <br> \n"
137
- " <b>✉️ You can contact us via email at </b><a href=\"mailto:"
138
- "nt3awnoumorocco@gmail.com\">nt3awnoumorocco@gmail.com</a> or via Instagram "
139
- "<a href=\"https://www.instagram.com/nt3awnou_morocco/\">@nt3awnou_morocco</"
140
- "a> <br>\n"
141
- " <b>📝 Help us report more people in need by filling this form </b><a "
142
- "href=\"https://forms.gle/nZNCUVog9ka2Vdqu6\">https://forms.gle/"
143
- "nZNCUVog9ka2Vdqu6</a> <br>\n"
144
- " <b>📝 NGOs can report their interventions by filling this form </b><a "
145
- "href=\"https://forms.gle/PsNSuHHjTTgwQMmVA\">https://forms.gle/"
146
- "PsNSuHHjTTgwQMmVA</a> <br>\n"
147
- " <b>❗️ Our team is working day and night to verify the data. Please reach "
148
- "out to us if you can help us verify the data. </b>\n"
149
- " </div>\n"
150
- " <br> \n"
151
- " "
152
- msgstr ""
153
-
154
- #: src/text_content.py:15
155
- msgid ""
156
- "\n"
157
- " <div style=\"text-align: right;-webkit-rtl-ordering: logical;\">\n"
158
- "\n"
159
- " نتعاونو هي منصة تعاونية غير ربحية لمساعدة الأفراد المتضررين من الزلزال "
160
- "الأخير في المغرب. مهمتنا هي تسهيل تقديم المساعدة في الوقت المناسب و بفاعلية "
161
- "و تنظيم لجميع المتضررين. كيفاش؟ كنعاونو الناس لي محتاجين للمساعدة إعلمونا "
162
- "بمكانهم و نوع المساعدة لي محتاجين ليها سواء عن طريق ملأ الاستمارة أو عن طريق "
163
- "إرسال تسجيل صوتي عبر واتساب إلى رقم مخصص<b>0602838166</b>. بعد معالجة هاد "
164
- "المعلومات، كنجمعوهم فخريطة كتمكن الجمعيات من تنظيم و استهداف تدخلاتهم بدقة "
165
- "باش توصل المساعدة للناس لي ��حتاجين في وقت أسرع. و كل جمعية قامت باللازم في "
166
- "منطقة معينة تقدر تعلمنا عن طريق ملأ استمارة مخصصة لهاد الأمر. هاد المعلومات "
167
- "كذلك كتضاف للخريطة باش باقي الجمعيات يتاجهو لمناطق أخرى مازال ماوصلاتهم "
168
- "مساعدة.\n"
169
- " <br> تحذير : نظرا لخطورة الطرقان بسبب الحجر اللي كيطيح من الجبال، ننصح "
170
- "المتطوعين اللي بغاو يساعدو المناطق المتضررة يتبرعو عن طريق الجمعيات "
171
- "المختصة⚠️ \n"
172
- " <br> \n"
173
- " <br> \n"
174
- " nt3awnoumorocco@gmail.com <b>المتطوعين ليبغاو يعاونوا يقدرو يتصلوا معنا "
175
- "عبر البريد ✉️ </b>\n"
176
- " <br>\n"
177
- " <b> <a href=\"https://www.instagram.com/nt3awnou_morocco/"
178
- "\">@nt3awnou_morocco</a> أو عبر الانستغرام </b> \n"
179
- " https://forms.gle/nZNCUVog9ka2Vdqu6 <b>: ساعدونا نبلغو الناس ليمحتاجين "
180
- "فهاد الاستمارة 📝 </b><br>\n"
181
- " https://forms.gle/PsNSuHHjTTgwQMmVA <b>: الجمعيات لي عندهم تدخلات يقدرو "
182
- "يبلغونا عبر هاد الاستمار ة📝</b><br>\n"
183
- " <b> فريقنا يعمل ليلا نهارا للتحقق من البيانات. يرجى التواصل معنا إذا كنت "
184
- "تستطيع مساعدتنا في التحقق من البيانات❗️</b>\n"
185
- " </div>\n"
186
- " <br> \n"
187
- " "
188
- msgstr ""
189
-
190
- #: src/text_content.py:32
191
- msgid ""
192
- "\n"
193
- " <div style=\"text-align: left;\">\n"
194
- " Nt3awnou نتعاونو est une plateforme collaborative à but non-lucratif "
195
- "dédiée à l'aide aux personnes touchées par le récent tremblement de terre au "
196
- "Maroc. Notre mission principale est de rationaliser et de coordonner une "
197
- "assistance rapide pour toutes les personnes touchées. Comment y parvenons-"
198
- "nous ? Nous aidons les personnes dans le besoin en leur permettant de "
199
- "communiquer leur localisation et l'aide spécifique dont elles ont besoin, "
200
- "soit en remplissant un formulaire, soit en envoyant un message vocal via "
201
- "WhatsApp à un numéro <b>0602838166</b>. Une fois reçues et traitées, ces "
202
- "informations peuvent être consultées dans notre tableau de bord, qui permet "
203
- "aux associations d'organiser et de cibler précisément leurs interventions, "
204
- "afin que l'aide parvienne rapidement à ceux qui en ont besoin. Toute "
205
- "organisation ayant pris une initiative dans une zone particulière peut nous "
206
- "en informer en remplissant un formulaire prévu à cet effet. Ces données sont "
207
- "également intégrées au tableau de bord afin que d'autres associations "
208
- "puissent aider les zones touchées qui n'ont pas encore reçu d'aide.\n"
209
- " <br> ⚠️ Avertissement : Il y a encore des chutes de pierres dans les "
210
- "montagnes, ce qui rend les routes vers les zones touchées très dangereuses. "
211
- "Nous conseillons aux volontaires de faire des dons directement aux "
212
- "associations spécialisées.\n"
213
- " <br> \n"
214
- " <br> \n"
215
- " <b>✉️ Vous pouvez nous contacter par courrier électronique à l'adresse "
216
- "suivante </b><a href=\"mailto:nt3awnoumorocco@gmail."
217
- "com\">nt3awnoumorocco@gmail.com</a> ou via Instagram <a href=\"https://www."
218
- "instagram.com/nt3awnou_morocco/\">@nt3awnou_morocco</a> <br>\n"
219
- " <b>📝 Aidez-nous à signaler plus de personnes dans le besoin en "
220
- "remplissant ce formulaire : </b><a href=\"https://forms.gle/"
221
- "nZNCUVog9ka2Vdqu6\">https://forms.gle/nZNCUVog9ka2Vdqu6</a> <br>\n"
222
- " <b>📝 Les associations peuvent signaler leurs interventions en "
223
- "remplissant ce formulaire : </b><a href=\"https://forms.gle/"
224
- "PsNSuHHjTTgwQMmVA\">https://forms.gle/PsNSuHHjTTgwQMmVA</a> <br> \n"
225
- " <b>❗️Notre équipe travaille jour et nuit pour vérifier les données. "
226
- "Veuillez nous contacter si vous pouvez nous aider à vérifier les données. </"
227
- "b>\n"
228
- " </div>\n"
229
- " <br> \n"
230
- " "
231
- msgstr ""
232
-
233
- #: src/text_content.py:46
234
- msgid ""
235
- "\n"
236
- " <div style=\"text-align: center;\">\n"
237
- " <h4>وَمَنْ أَحْيَاهَا فَكَأَنَّمَا أَحْيَا النَّاسَ جَمِيعاً</h4>\n"
238
- " </div>\n"
239
- " "
240
- msgstr ""
241
-
242
- #: src/text_content.py:53
243
- msgid ""
244
- "\n"
245
- " <hr>\n"
246
- " <div style=\"text-align: center;\">\n"
247
- " <p>By <b>Moroccans</b> for <b>Moroccans</b> 🤝</p>\n"
248
- " <p>Reach out to us at <a href=\"mailto:nt3awnoumorocco@gmail."
249
- "com\">nt3awnoumorocco@gmail.com</a></p>\n"
250
- " "
251
- msgstr ""
252
-
253
- #: src/text_content.py:60
254
- msgid ""
255
- "\n"
256
- " <style>\n"
257
- " .block-container {\n"
258
- " padding-top: 1rem;\n"
259
- " padding-bottom: 0rem;\n"
260
- " }\n"
261
- " '''\n"
262
- " [data-testid=\"metric-container\"] {\n"
263
- " width: fit-content;\n"
264
- " margin: auto;\n"
265
- " }\n"
266
- "\n"
267
- " [data-testid=\"metric-container\"] > div {\n"
268
- " width: fit-content;\n"
269
- " margin: auto;\n"
270
- " }\n"
271
- "\n"
272
- " [data-testid=\"metric-container\"] label {\n"
273
- " width: fit-content;\n"
274
- " margin: auto;\n"
275
- " }\n"
276
- " '''\n"
277
- " </style>\n"
278
- " <div class=\"block-container\">\n"
279
- " <div style=\"text-align: center; margin-bottom: 0.5rem; width: fit-"
280
- "content; margin: auto;\">\n"
281
- " <img src=\"https://i.imgur.com/ngJZ4Gh.png\" alt=\"Nt3awnou "
282
- "logo\" width=\"fit-content\" height=\"150\" style=\"margin-top: 1rem; margin-"
283
- "bottom: 1rem;\">\n"
284
- " </div>\n"
285
- " <div style=\"text-align: center\">\n"
286
- " <a href=\"https://www.instagram.com/nt3awnou_morocco/\" "
287
- "style=\"margin-right: 0.5rem; text-decoration: none;\">\n"
288
- " <img src=\"https://upload.wikimedia.org/wikipedia/commons/"
289
- "thumb/a/a5/Instagram_icon.png/2048px-Instagram_icon.png\" alt=\"Instagram "
290
- "logo\" width=\"30\" height=\"30\">\n"
291
- " </a>\n"
292
- " <a href=\"https://www.facebook.com/nt3awnou.morocco\" "
293
- "style=\"margin-right: 0.5rem; text-decoration: none;\">\n"
294
- " <img src=\"https://i0.wp.com/www.lestudioled.com/wp-content/"
295
- "uploads/2016/05/facebook-logo-png-transparent-background.png\" "
296
- "alt=\"Instagram logo\" width=\"30\" height=\"30\">\n"
297
- " </a>\n"
298
- " <a href=\"https://www.linkedin.com/in/nt3awnou-"
299
- "morocco-01062a290\" style=\"margin-right: 0.5rem; text-decoration: none;\">\n"
300
- " <img src=\"https://upload.wikimedia.org/wikipedia/commons/"
301
- "thumb/c/ca/LinkedIn_logo_initials.png/600px-LinkedIn_logo_initials.png?"
302
- "20140125013055\" alt=\"LinkedIn logo\" width=\"30\" height=\"30\">\n"
303
- " </a>\n"
304
- " <a href=\"https://linktr.ee/nt3awnou\">\n"
305
- " <img src=\"https://seeklogo.com/images/L/linktree-"
306
- "logo-6FC3ADB679-seeklogo.com.png\" alt=\"Linktree logo\" width=\"30\" "
307
- "height=\"30\">\n"
308
- " </a>\n"
309
- " </div>\n"
310
- " </div>\n"
311
- "\n"
312
- " # "
313
- msgstr ""
314
-
315
- #: src/text_content.py:105
316
- msgid ""
317
- "**If a request should be reviewed or dropped submit its id here/ إذا كان يجب "
318
- "مراجعة أو حذف طلب، أدخل رقمه هنا:**"
319
- msgstr ""
320
- "**Si une demande doit être réexaminée ou supprimée, veuillez indiquer son "
321
- "numéro d’identification ici.**"
322
-
323
- #: src/utils.py:9
324
- msgid "black"
325
- msgstr ""
326
-
327
- #: src/utils.py:13
328
- msgid "Parsing Google Sheet:"
329
- msgstr ""
330
-
331
- #: src/utils.py:14
332
- msgid "edit#gid="
333
- msgstr ""
334
-
335
- #: src/utils.py:14
336
- msgid "export?format=csv&gid="
337
- msgstr ""
338
-
339
- #: src/utils.py:15
340
- msgid "warn"
341
- msgstr ""
342
-
343
- #: src/utils.py:28 src/utils.py:29 src/utils.py:57 src/utils.py:58
344
- #: src/utils.py:67 src/markers.py:27 src/components.py:130
345
- #: src/components.py:137
346
- msgid ","
347
- msgstr ""
348
-
349
- #: src/utils.py:42
350
- msgid "Add a latlng column to the dataframe"
351
- msgstr ""
352
-
353
- #: src/utils.py:44 src/utils.py:46 src/markers.py:112 src/markers.py:118
354
- #: src/markers.py:129 src/markers.py:164 src/markers.py:178 src/markers.py:224
355
- #: src/markers.py:240
356
- msgid "latlng"
357
- msgstr ""
358
-
359
- #: src/utils.py:48
360
- msgid ""
361
- "process_column should be a string or an integer, got {type(process_column)}"
362
- msgstr ""
363
-
364
- #: src/utils.py:59 src/utils.py:62 src/utils.py:63 src/utils.py:64
365
- msgid "."
366
- msgstr ""
367
-
368
- #: src/utils.py:69 src/utils.py:70
369
- msgid "[^\\d\\.\\-]"
370
- msgstr ""
371
-
372
- #: src/utils.py:74
373
- #, python-brace-format
374
- msgid "Error parsing latlng: {latlng} Reason: {e}"
375
- msgstr ""
376
-
377
- #: src/utils.py:80
378
- msgid "star"
379
- msgstr ""
380
-
381
- #: src/utils.py:81 src/utils.py:82
382
- msgid "#b3334f"
383
- msgstr ""
384
-
385
- #: src/utils.py:83
386
- msgid "white"
387
- msgstr ""
388
-
389
- #: src/utils.py:88
390
- msgid "Epicenter مركز الزلزال"
391
- msgstr ""
392
-
393
- #: src/utils.py:94
394
- msgid ""
395
- "Danger distances - earthquake magnitude 7 | مسافات الخطر - قوة الزلازل 7"
396
- msgstr ""
397
-
398
- #: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
399
- #: src/utils.py:106
400
- msgid "radius"
401
- msgstr ""
402
-
403
- #: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
404
- #: src/utils.py:109 src/utils.py:110
405
- msgid "fill_opacity"
406
- msgstr ""
407
-
408
- #: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
409
- #: src/utils.py:108
410
- msgid "weight"
411
- msgstr ""
412
-
413
- #: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
414
- #: src/utils.py:111
415
- msgid "fill_color"
416
- msgstr ""
417
-
418
- #: src/utils.py:97
419
- msgid "yellow"
420
- msgstr ""
421
-
422
- #: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
423
- msgid "tooltip"
424
- msgstr ""
425
-
426
- #: src/utils.py:97
427
- msgid "50 to 100 km - Moderate risk area | منطقة خطر معتدلة"
428
- msgstr ""
429
-
430
- #: src/utils.py:98 src/markers.py:8 src/markers.py:219
431
- msgid "orange"
432
- msgstr ""
433
-
434
- #: src/utils.py:98
435
- msgid "30 to 50 km - High risk zone | منطقة عالية المخاطر"
436
- msgstr ""
437
-
438
- #: src/utils.py:99
439
- msgid "#FF0000"
440
- msgstr ""
441
-
442
- #: src/utils.py:99
443
- msgid "10 to 30 km - Very high risk zone | منطقة شديدة الخطورة"
444
- msgstr ""
445
-
446
- #: src/utils.py:100
447
- msgid "#8B0000"
448
- msgstr ""
449
-
450
- #: src/utils.py:100
451
- msgid "0 to 10km - direct impact zone | منطقة التأثير المباشر"
452
- msgstr ""
453
-
454
- #: src/utils.py:117
455
- msgid "🔵 All the Villages / جميع القرى"
456
- msgstr ""
457
-
458
- #: src/utils.py:120
459
- msgid "lat"
460
- msgstr ""
461
-
462
- #: src/utils.py:121
463
- msgid "lng"
464
- msgstr ""
465
-
466
- #: src/utils.py:123
467
- msgid "name"
468
- msgstr ""
469
-
470
- #: src/utils.py:124
471
- #, python-brace-format
472
- msgid "https://maps.google.com/?q={lat_lng}"
473
- msgstr ""
474
-
475
- #: src/utils.py:125
476
- #, python-brace-format
477
- msgid ""
478
- "<br><b>⛰️ Douar:</b> {dour_name}<br><a href=\"{maps_url}\" target=\"_blank\" "
479
- "rel=\"noopener noreferrer\"><b>🧭 Google Maps</b></a>"
480
- msgstr ""
481
-
482
- #: src/utils.py:132
483
- msgid "#0046C8"
484
- msgstr ""
485
-
486
- #: src/utils.py:140 src/utils.py:144 src/markers.py:55 src/markers.py:140
487
- msgid "Done ✅"
488
- msgstr "تم ✅"
489
-
490
- #: src/utils.py:141
491
- msgid "Planned ⏳"
492
- msgstr "مخطط ⏳"
493
-
494
- #: src/utils.py:142 src/utils.py:146 src/markers.py:59
495
- msgid "Partial 📝"
496
- msgstr "جزئي 📝"
497
-
498
- #: src/utils.py:145 src/markers.py:51 src/markers.py:137
499
- msgid "Planned ⌛"
500
- msgstr "مخطط ⌛"
501
-
502
- #: src/utils.py:154
503
- msgid "High Emergency 🔴"
504
- msgstr "حالة طوارئ عالية 🔴"
505
-
506
- #: src/utils.py:155
507
- msgid "Medium Emergency 🟠"
508
- msgstr "حالة طوارئ متوسطة 🟠"
509
-
510
- #: src/utils.py:156
511
- msgid "Low Emergency 🟡"
512
- msgstr "حالة طوارئ منخفضة 🟡"
513
-
514
- #: src/utils.py:158 src/markers.py:220
515
- msgid "High"
516
- msgstr ""
517
-
518
- #: src/utils.py:159 src/markers.py:219
519
- msgid "Medium"
520
- msgstr ""
521
-
522
- #: src/utils.py:160 src/markers.py:218 src/markers.py:251
523
- msgid "Low"
524
- msgstr ""
525
-
526
- #: src/utils.py:179 src/utils.py:186
527
- msgid "topright"
528
- msgstr ""
529
-
530
- #: src/utils.py:180
531
- msgid "Search | البحث"
532
- msgstr ""
533
-
534
- #: src/utils.py:187
535
- msgid "Expand me | تكبير الخريطة"
536
- msgstr ""
537
-
538
- #: src/utils.py:188
539
- msgid "Exit me | تصغير الخريطة"
540
- msgstr ""
541
-
542
- #: src/utils.py:194
543
- #, python-brace-format
544
- msgid "https://marocmap.ikiker.com/maroc/{z}/{x}/{y}.png"
545
- msgstr ""
546
-
547
- #: src/utils.py:197 src/utils.py:198
548
- msgid "Maroc Map"
549
- msgstr ""
550
-
551
- #: src/utils.py:214
552
- msgid "topleft"
553
- msgstr ""
554
-
555
- #: src/utils.py:217
556
- msgid "title"
557
- msgstr ""
558
-
559
- #: src/utils.py:217
560
- msgid "My location | موقعي"
561
- msgstr ""
562
-
563
- #: src/utils.py:217
564
- msgid "popup"
565
- msgstr ""
566
-
567
- #: src/map_utils.py:5
568
- msgid ""
569
- "\n"
570
- " <li><span style='background:#CE3C28;opacity:0.7;'></span>Rescue</li>\n"
571
- " <li><span style='background:#ED922E;opacity:0.7;'></span>Medical "
572
- "Assistance</li>\n"
573
- " <li><span style='background:#FFCA92;opacity:0.7;'></span>Shelter</li>\n"
574
- " <li><span style='background:#37A8DA;opacity:0.7;'></span>Food & Water</"
575
- "li>\n"
576
- " <li><span style='background:#575757;opacity:0.7;'></span>Dangers</li>\n"
577
- " <li><span style='background:#6EAA25;opacity:0.7;'></span>Done</li>\n"
578
- " <li><span style='background:#023020;opacity:0.7;'></span>Partial</li>\n"
579
- " <li><span style='background:#FF91E8;opacity:0.7;'></span>Planned</li>\n"
580
- " "
581
- msgstr ""
582
- "\n"
583
- " <li><span style='background:#CE3C28;opacity:0.7;'></span>الإنقاذ</li>\n"
584
- " <li><span style='background:#ED922E;opacity:0.7;'></span>المساعدة "
585
- "الطبية</li>\n"
586
- " <li><span style='background:#FFCA92;opacity:0.7;'></span>المأوى</li>\n"
587
- " <li><span style='background:#37A8DA;opacity:0.7;'></span>الطعام "
588
- "والماء</li>\n"
589
- " <li><span style='background:#575757;opacity:0.7;'></span>المخاطر</li>\n"
590
- " <li><span style='background:#6EAA25;opacity:0.7;'></span>تم</li>\n"
591
- " <li><span style='background:#023020;opacity:0.7;'></span>جزئي</li>\n"
592
- " <li><span style='background:#FF91E8;opacity:0.7;'></span>مخطط</li>\n"
593
- " "
594
-
595
- #: src/map_utils.py:15
596
- msgid ""
597
- "\n"
598
- " <li><span style='background:#CE3C28;opacity:0.7;'></span>High "
599
- "Emergency</li>\n"
600
- " <li><span style='background:#ED922E;opacity:0.7;'></span>Medium "
601
- "Emergency</li>\n"
602
- " <li><span style='background:#FFCA92;opacity:0.7;'></span>Low "
603
- "Emergency</li>\n"
604
- " <li><span style='background:#6EAA25;opacity:0.7;'></span>Done</li>\n"
605
- " <li><span style='background:#023020;opacity:0.7;'></span>Partial</li>\n"
606
- " <li><span style='background:#FF91E8;opacity:0.7;'></span>Planned</li>\n"
607
- " "
608
- msgstr ""
609
- "\n"
610
- " <li><span style='background:#CE3C28;opacity:0.7;'></span>حالة طوارئ "
611
- "عالية</li>\n"
612
- " <li><span style='background:#ED922E;opacity:0.7;'></span>حالة طوارئ "
613
- "متوسطة</li>\n"
614
- " <li><span style='background:#FFCA92;opacity:0.7;'></span>حالة طوارئ "
615
- "منخفضة</li>\n"
616
- " <li><span style='background:#6EAA25;opacity:0.7;'></span>تم</li>\n"
617
- " <li><span style='background:#023020;opacity:0.7;'></span>جزئي</li>\n"
618
- " <li><span style='background:#FF91E8;opacity:0.7;'></span>مخطط</li>\n"
619
- " "
620
-
621
- #: src/map_utils.py:24
622
- msgid ""
623
- "\n"
624
- " {% macro html(this, kwargs) %}\n"
625
- "\n"
626
- " <!doctype html>\n"
627
- " <html lang=\"en\">\n"
628
- " <head>\n"
629
- " <meta charset=\"utf-8\">\n"
630
- " <meta name=\"viewport\" content=\"width=device-width, initial-"
631
- "scale=1\">\n"
632
- " <title>jQuery UI Draggable - Default functionality</title>\n"
633
- " <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.12.1/themes/base/"
634
- "jquery-ui.css\">\n"
635
- "\n"
636
- " <script src=\"https://code.jquery.com/jquery-1.12.4.js\"></script>\n"
637
- " <script src=\"https://code.jquery.com/ui/1.12.1/jquery-ui.js\"></"
638
- "script>\n"
639
- " \n"
640
- " <script>\n"
641
- " $( function() {\n"
642
- " $( \"#maplegend\" ).draggable({\n"
643
- " start: function (event, ui) {\n"
644
- " $(this).css({\n"
645
- " right: \"auto\",\n"
646
- " top: \"auto\",\n"
647
- " bottom: \"auto\"\n"
648
- " });\n"
649
- " }\n"
650
- " });\n"
651
- " });\n"
652
- "\n"
653
- " </script>\n"
654
- " </head>\n"
655
- " <body>\n"
656
- "\n"
657
- " \n"
658
- " <div id='maplegend' class='maplegend' \n"
659
- " style='position: absolute; z-index:9999; border:2px solid grey; "
660
- "background-color:rgba(255, 255, 255, 0.8);\n"
661
- " border-radius:6px; padding: 10px; font-size:14px; right: 20px; bottom: "
662
- "20px;'>\n"
663
- " \n"
664
- " <div class='legend-title'>Legend / مفتاح الخريطة</div>\n"
665
- " <div class='legend-scale'>\n"
666
- " <ul class='legend-labels'>\n"
667
- "\n"
668
- " "
669
- msgstr ""
670
-
671
- #: src/map_utils.py:65
672
- msgid ""
673
- "\n"
674
- " </ul>\n"
675
- " </div>\n"
676
- " </div>\n"
677
- " \n"
678
- " </body>\n"
679
- " </html>\n"
680
- "\n"
681
- " <style type='text/css'>\n"
682
- " .maplegend .legend-title {\n"
683
- " text-align: left;\n"
684
- " margin-bottom: 5px;\n"
685
- " font-weight: bold;\n"
686
- " font-size: 90%;\n"
687
- " color: #333;\n"
688
- " }\n"
689
- " .maplegend .legend-scale ul {\n"
690
- " margin: 0;\n"
691
- " margin-bottom: 5px;\n"
692
- " padding: 0;\n"
693
- " float: left;\n"
694
- " list-style: none;\n"
695
- " }\n"
696
- " .maplegend .legend-scale ul li {\n"
697
- " font-size: 80%;\n"
698
- " list-style: none;\n"
699
- " margin-left: 0;\n"
700
- " line-height: 18px;\n"
701
- " margin-bottom: 2px;\n"
702
- " color: #111;\n"
703
- " }\n"
704
- " .maplegend ul.legend-labels li span {\n"
705
- " display: block;\n"
706
- " float: left;\n"
707
- " height: 16px;\n"
708
- " width: 30px;\n"
709
- " margin-right: 5px;\n"
710
- " margin-left: 0;\n"
711
- " border: 1px solid #999;\n"
712
- " }\n"
713
- " .maplegend .legend-source {\n"
714
- " font-size: 80%;\n"
715
- " color: #777;\n"
716
- " clear: both;\n"
717
- " }\n"
718
- " .maplegend a {\n"
719
- " color: #777;\n"
720
- " }\n"
721
- "\n"
722
- " .leaflet-control-geocoder-form input {\n"
723
- " color: black;\n"
724
- " }\n"
725
- " \n"
726
- " </style>\n"
727
- " {% endmacro %}"
728
- msgstr ""
729
-
730
- #: src/map_utils.py:125
731
- msgid "get_legend_macro"
732
- msgstr ""
733
-
734
- #: src/markers.py:7 src/markers.py:15 src/filters.py:6 src/filters.py:14
735
- msgid "إغاثة"
736
- msgstr ""
737
-
738
- #: src/markers.py:7 src/markers.py:138 src/markers.py:141 src/markers.py:220
739
- msgid "red"
740
- msgstr ""
741
-
742
- #: src/markers.py:8 src/markers.py:16 src/filters.py:7 src/filters.py:15
743
- msgid "مساعدة طبية"
744
- msgstr ""
745
-
746
- #: src/markers.py:9 src/markers.py:17 src/filters.py:8 src/filters.py:16
747
- msgid "مأوى"
748
- msgstr ""
749
-
750
- #: src/markers.py:9 src/markers.py:208 src/markers.py:218 src/markers.py:265
751
- msgid "beige"
752
- msgstr ""
753
-
754
- #: src/markers.py:10 src/markers.py:18 src/filters.py:9 src/filters.py:17
755
- msgid "طعام وماء"
756
- msgstr ""
757
-
758
- #: src/markers.py:10
759
- msgid "blue"
760
- msgstr ""
761
-
762
- #: src/markers.py:11 src/markers.py:19 src/filters.py:10 src/filters.py:18
763
- msgid "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)"
764
- msgstr ""
765
-
766
- #: src/markers.py:11
767
- msgid "gray"
768
- msgstr ""
769
-
770
- #: src/markers.py:15
771
- msgid "bell"
772
- msgstr ""
773
-
774
- #: src/markers.py:16 src/markers.py:138 src/markers.py:141
775
- msgid "heart"
776
- msgstr ""
777
-
778
- #: src/markers.py:17
779
- msgid "home"
780
- msgstr ""
781
-
782
- #: src/markers.py:18
783
- msgid "cutlery"
784
- msgstr ""
785
-
786
- #: src/markers.py:19
787
- msgid "Warning"
788
- msgstr ""
789
-
790
- #: src/markers.py:21
791
- msgid "A"
792
- msgstr ""
793
-
794
- #: src/markers.py:35
795
- msgid "Display NGO interventions on the map"
796
- msgstr ""
797
-
798
- #: src/markers.py:38 src/markers.py:80
799
- msgid "K"
800
- msgstr ""
801
-
802
- #: src/markers.py:40 src/markers.py:77
803
- msgid "H"
804
- msgstr ""
805
-
806
- #: src/markers.py:40
807
- msgid "Intervention prévue dans le futur / Planned future intervention"
808
- msgstr ""
809
-
810
- #: src/markers.py:44 src/filters.py:52
811
- msgid "Partiellement satisfait / Partially Served"
812
- msgstr ""
813
-
814
- #: src/markers.py:50 src/markers.py:138
815
- msgid "pink"
816
- msgstr ""
817
-
818
- #: src/markers.py:52 src/filters.py:51
819
- msgid "Critique, Besoin d'aide en urgence / Critical, in urgent need of help"
820
- msgstr ""
821
-
822
- #: src/markers.py:54 src/markers.py:141
823
- msgid "green"
824
- msgstr ""
825
-
826
- #: src/markers.py:58
827
- msgid "darkgreen"
828
- msgstr ""
829
-
830
- #: src/markers.py:71
831
- msgid "B"
832
- msgstr ""
833
-
834
- #: src/markers.py:72
835
- msgid "C"
836
- msgstr ""
837
-
838
- #: src/markers.py:73
839
- msgid "D"
840
- msgstr ""
841
-
842
- #: src/markers.py:74
843
- msgid "E"
844
- msgstr ""
845
-
846
- #: src/markers.py:75
847
- msgid "F"
848
- msgstr ""
849
-
850
- #: src/markers.py:76
851
- msgid "G"
852
- msgstr ""
853
-
854
- #: src/markers.py:78
855
- msgid "I"
856
- msgstr ""
857
-
858
- #: src/markers.py:79
859
- msgid "J"
860
- msgstr ""
861
-
862
- #: src/markers.py:81
863
- msgid "L"
864
- msgstr ""
865
-
866
- #: src/markers.py:82
867
- msgid "M"
868
- msgstr ""
869
-
870
- #: src/markers.py:83
871
- msgid "N"
872
- msgstr ""
873
-
874
- #: src/markers.py:84
875
- msgid "O"
876
- msgstr ""
877
-
878
- #: src/markers.py:85
879
- msgid "P"
880
- msgstr ""
881
-
882
- #: src/markers.py:86
883
- msgid "Q"
884
- msgstr ""
885
-
886
- #: src/markers.py:87
887
- msgid "R"
888
- msgstr ""
889
-
890
- #: src/markers.py:88
891
- msgid "S"
892
- msgstr ""
893
-
894
- #: src/markers.py:89
895
- msgid "T"
896
- msgstr ""
897
-
898
- #: src/markers.py:90
899
- msgid "U"
900
- msgstr ""
901
-
902
- #: src/markers.py:92
903
- msgid ", "
904
- msgstr ""
905
-
906
- #: src/markers.py:93
907
- #, python-brace-format
908
- msgid ""
909
- "\n"
910
- " <b>Org:</b> {org}<br>\n"
911
- " <b>Association ID:</b> {association_id}<br>\n"
912
- " <b>Speciality:</b> {speciality}<br>\n"
913
- " <b>Phone 1:</b> {phone_1}<br>\n"
914
- " <b>Phone 2:</b> {phone_2}<br>\n"
915
- " <b>Email:</b> {email}<br>\n"
916
- " <b>Intervention Date:</b> {intervention_date}<br>\n"
917
- " <b>Intervention Status:</b> {intervention_status}<br>\n"
918
- " <b>Help Type:</b> {help_type}<br>\n"
919
- " <b>Current Situation:</b> {current_situation}<br>\n"
920
- " <b>Future Help Type:</b> {future_help_type}<br>\n"
921
- " <b>Douar Name:</b> {full_douar_name}<br>\n"
922
- " <b>Accessibility to Douar:</b> {accessibility_to_douar}<br>\n"
923
- " <b>Type of Accessibility:</b> {type_of_accessibility}<br>\n"
924
- " <b>Population:</b> {population}<br>\n"
925
- " <b>Intervention Additional Info:</b> {intervention_additional_info}"
926
- "<br>\n"
927
- " <b>Any Additional Info:</b> {any_additional_info}<br>\n"
928
- " "
929
- msgstr ""
930
-
931
- #: src/markers.py:133
932
- msgid "Planned"
933
- msgstr "مخطط لها"
934
-
935
- #: src/markers.py:138 src/markers.py:141 src/markers.py:208 src/markers.py:265
936
- msgid "glyphicon"
937
- msgstr ""
938
-
939
- #: src/markers.py:151
940
- #, python-brace-format
941
- msgid ""
942
- "\n"
943
- " <b>Intervention Date:</b> {intervention_date}<br>\n"
944
- " <b>Org:</b> {org}<br>\n"
945
- " <b>Intervention:</b> {intervention_type}<br>\n"
946
- " <b>Invervention Status:</b> {status}<br>\n"
947
- " <b>Details:</b> {details}<br>\n"
948
- " <b>Location:</b> {location}<br>\n"
949
- " <b>Remarks:</b> {remarks}<br>\n"
950
- " <b>Contact:</b> {contact}<br>\n"
951
- " "
952
- msgstr ""
953
-
954
- #: src/markers.py:174
955
- msgid "Display victim requests on the map"
956
- msgstr ""
957
-
958
- #: src/markers.py:176 src/dataframes.py:35
959
- msgid "ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"
960
- msgstr ""
961
-
962
- #: src/markers.py:179
963
- #, python-brace-format
964
- msgid "https://maps.google.com/?q={long_lat}"
965
- msgstr ""
966
-
967
- #: src/markers.py:186
968
- msgid ""
969
- "\n"
970
- " <b>Request Type:</b> {request_type}<br>\n"
971
- " <b>Id:</b> {row[\"id\"]}<br>\n"
972
- " <b>Source:</b> {source}<br>\n"
973
- " <b>Person in place:</b> {person_in_place}<br>\n"
974
- " <b>Douar:</b> {douar}<br>\n"
975
- " <b>Douar Info:</b> {douar_info}<br>\n"
976
- " <a href=\"{maps_url}\" target=\"_blank\" rel=\"noopener "
977
- "noreferrer\"><b>Google Maps</b></a>\n"
978
- " "
979
- msgstr ""
980
-
981
- #: src/markers.py:196 src/markers.py:250
982
- msgid "list"
983
- msgstr ""
984
-
985
- #: src/markers.py:203 src/markers.py:204
986
- msgid " لأي جماعة / قيادة / دوار تنتمون ؟"
987
- msgstr ""
988
-
989
- #: src/markers.py:214
990
- msgid "Display verified victim requests on the map"
991
- msgstr ""
992
-
993
- #: src/markers.py:228 src/markers.py:229 src/dataframes.py:38
994
- msgid "Help Details"
995
- msgstr ""
996
-
997
- #: src/markers.py:231
998
- #, python-brace-format
999
- msgid "<b>Request Type:</b> {request_type}<br>"
1000
- msgstr ""
1001
-
1002
- #: src/markers.py:232 src/markers.py:254
1003
- msgid "Location Details"
1004
- msgstr ""
1005
-
1006
- #: src/markers.py:233
1007
- #, python-brace-format
1008
- msgid "<b>Location:</b> {val}<br>"
1009
- msgstr ""
1010
-
1011
- #: src/markers.py:234 src/markers.py:251
1012
- msgid "Emergency Degree"
1013
- msgstr ""
1014
-
1015
- #: src/markers.py:235
1016
- #, python-brace-format
1017
- msgid "<b>Emergency Degree:</b> {val}<br>"
1018
- msgstr ""
1019
-
1020
- #: src/markers.py:236
1021
- msgid "Verification Date"
1022
- msgstr ""
1023
-
1024
- #: src/markers.py:237
1025
- #, python-brace-format
1026
- msgid "<b>Verification Date:</b> {val}<br>"
1027
- msgstr ""
1028
-
1029
- #: src/markers.py:238 src/markers.py:247 src/dataframes.py:31
1030
- #: src/dataframes.py:32 src/dataframes.py:87
1031
- msgid "id"
1032
- msgstr ""
1033
-
1034
- #: src/markers.py:239
1035
- #, python-brace-format
1036
- msgid "<b>Id:</b> {val}<br>"
1037
- msgstr ""
1038
-
1039
- #: src/markers.py:241
1040
- #, python-brace-format
1041
- msgid "https://maps.google.com/?q={val}"
1042
- msgstr ""
1043
-
1044
- #: src/markers.py:243
1045
- #, python-brace-format
1046
- msgid ""
1047
- "<a href=\"{maps_url}\" target=\"_blank\" rel=\"noopener "
1048
- "noreferrer\"><b>Google Maps</b></a><br>"
1049
- msgstr ""
1050
-
1051
- #: src/markers.py:248
1052
- msgid ""
1053
- "<a href='https://docs.google.com/forms/d/"
1054
- "e/1FAIpQLSdyAcOAULumk4A1DsfrwUsGdZ-9G5xOUuD3vHdQOp3nGNAZXw/viewform?"
1055
- "usp=pp_url&entry.1499427789={id_in_sheet}&entry.1666684596={datetime.now()."
1056
- "strftime('%Y-%m-%d')}' target='_blank' rel='noopener noreferrer'><b>Mark as "
1057
- "solved</b></a><br>"
1058
- msgstr ""
1059
-
1060
- #: src/components.py:11
1061
- msgid "Id review submission form"
1062
- msgstr ""
1063
-
1064
- #: src/components.py:13
1065
- msgid "🔍 Review of requests | مراجعة طلب مساعدة"
1066
- msgstr ""
1067
-
1068
- #: src/components.py:16
1069
- msgid "Enter id / أدخل الرقم"
1070
- msgstr ""
1071
-
1072
- #: src/components.py:17
1073
- msgid "Explain why / أدخل سبب المراجعة"
1074
- msgstr ""
1075
-
1076
- #: src/components.py:18
1077
- msgid "Submit / أرسل"
1078
- msgstr ""
1079
-
1080
- #: src/components.py:20
1081
- msgid "Please enter a reason / الرجاء إدخال سبب"
1082
- msgstr ""
1083
-
1084
- #: src/components.py:22
1085
- msgid ""
1086
- "review_id_{id_to_review}_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.txt"
1087
- msgstr ""
1088
-
1089
- #: src/components.py:23
1090
- msgid "w"
1091
- msgstr ""
1092
-
1093
- #: src/components.py:24
1094
- #, python-brace-format
1095
- msgid "id: {id_to_review}, explanation: {reason_for_review}\n"
1096
- msgstr ""
1097
-
1098
- #: src/components.py:28
1099
- msgid "nt3awnou/review_requests"
1100
- msgstr ""
1101
-
1102
- #: src/components.py:29
1103
- msgid "dataset"
1104
- msgstr ""
1105
-
1106
- #: src/components.py:31
1107
- msgid ""
1108
- "Submitted at https://huggingface.co/datasets/nt3awnou/review_requests/ تم "
1109
- "الإرسال"
1110
- msgstr ""
1111
-
1112
- #: src/components.py:35
1113
- msgid "💻 For Developers only, embed code for the map"
1114
- msgstr "💻 للمطورين فقط، الكود لتضمين الخريطة"
1115
-
1116
- #: src/components.py:37
1117
- msgid ""
1118
- "\n"
1119
- " <iframe id=\"nt3awnou-map\"\n"
1120
- " src=\"https://nt3awnou-embed-rescue-map.hf.space/?embed=true\" "
1121
- "width=\"1200\" height=\"720\"\n"
1122
- " frameborder=\"0\"\n"
1123
- " width=\"850\"\n"
1124
- " height=\"450\"\n"
1125
- " title=\"Nt3awno Rescue Map\">\n"
1126
- " </iframe>\n"
1127
- " <script src=\"https://cdn.jsdelivr.net/npm/iframe-resizer@4.3.4/js/"
1128
- "iframeResizer.min.js\"></script>\n"
1129
- " <script>\n"
1130
- " iFrameResize({}, \"#nt3awnou-map\");\n"
1131
- " </script>\n"
1132
- " "
1133
- msgstr ""
1134
-
1135
- #: src/components.py:50
1136
- msgid "html"
1137
- msgstr ""
1138
-
1139
- #: src/components.py:64
1140
- msgid "# Number of help requests"
1141
- msgstr ""
1142
-
1143
- #: src/components.py:69
1144
- msgid "# Number of interventions"
1145
- msgstr ""
1146
-
1147
- #: src/components.py:75
1148
- msgid "# Number of solved requests"
1149
- msgstr ""
1150
-
1151
- #: src/components.py:87
1152
- msgid "# عدد طلبات المساعدة"
1153
- msgstr ""
1154
-
1155
- #: src/components.py:92
1156
- msgid "# عدد التدخلات"
1157
- msgstr ""
1158
-
1159
- #: src/components.py:98
1160
- msgid "# عدد الطلبات المستجاب لها"
1161
- msgstr ""
1162
-
1163
- #: src/components.py:110
1164
- msgid "# Nombre de demandes d'aide"
1165
- msgstr ""
1166
-
1167
- #: src/components.py:115
1168
- msgid "# Nombre d'interventions"
1169
- msgstr ""
1170
-
1171
- #: src/components.py:121
1172
- msgid "# Nombre de demandes résolues"
1173
- msgstr ""
1174
-
1175
- #: src/components.py:125
1176
- msgid "📊 **Charts**"
1177
- msgstr "**الرسوم البيانية** 📊"
1178
-
1179
- #: src/components.py:130 src/components.py:131
1180
- msgid "supplies_category"
1181
- msgstr ""
1182
-
1183
- #: src/components.py:130 src/components.py:137
1184
- msgid "[] '"
1185
- msgstr ""
1186
-
1187
- #: src/components.py:130 src/components.py:137
1188
- msgid "category"
1189
- msgstr ""
1190
-
1191
- # ARABIC TRANSLATION
1192
- #: src/components.py:131
1193
- msgid "Supplies Categories"
1194
- msgstr "أصناف المساعدات"
1195
-
1196
- #: src/components.py:137 src/components.py:138
1197
- msgid "need_category"
1198
- msgstr ""
1199
-
1200
- #: src/components.py:138
1201
- msgid "Needs Categories"
1202
- msgstr "أصناف الاحتياجات"
1203
-
1204
- #: src/components.py:145
1205
- msgid "📝 **Donations**"
1206
- msgstr "**التبرعات** 📝"
1207
-
1208
- #: src/components.py:148
1209
- msgid ""
1210
- "\n"
1211
- " <div style=\"text-align: center;\">\n"
1212
- " <h4>The official bank account dedicated to tackle the "
1213
- "consequences of the earthquake is:</h4>\n"
1214
- " <b>Account number:</b>\n"
1215
- " <h2>126</h2>\n"
1216
- " <b>RIB:</b> 001-810-0078000201106203-18\n"
1217
- " <br>\n"
1218
- " <b>For the money transfers coming from outside Morocco</b>\n"
1219
- " <br>\n"
1220
- " <b>IBAN:</b> MA64001810007800020110620318\n"
1221
- " <br>\n"
1222
- " "
1223
- msgstr ""
1224
-
1225
- #: src/components.py:164
1226
- msgid ""
1227
- "\n"
1228
- " <div style=\"text-align: center;\">\n"
1229
- " <h4>الحساب البنكي الرسمي المخصص لمواجهة عواقب الزلزال</h4>\n"
1230
- " <b>رقم الحساب</b>\n"
1231
- " <h2>126</h2>\n"
1232
- " <b>RIB:</b> 001-810-0078000201106203-18\n"
1233
- " <br>\n"
1234
- " <b>للتحويلات القادمة من خارج المغرب</b>\n"
1235
- " <br>\n"
1236
- " <b>IBAN:</b> MA64001810007800020110620318\n"
1237
- " <br>\n"
1238
- " </div>\n"
1239
- " "
1240
- msgstr ""
1241
-
1242
- #: src/components.py:181
1243
- msgid ""
1244
- "\n"
1245
- " <div style=\"text-align: center;\">\n"
1246
- " <h4>Le compte bancaire officiel dédié à la lutte contre les "
1247
- "conséquences du séisme est le suivant:</h4>\n"
1248
- " <b>Numéro de compte:</b>\n"
1249
- " <h2>126</h2>\n"
1250
- " <b>RIB:</b> 001-810-0078000201106203-18\n"
1251
- " <br>\n"
1252
- " <b>Pour les transferts d'argent en provenance de l'étranger</b>\n"
1253
- " <br>\n"
1254
- " <b>IBAN:</b> MA64001810007800020110620318\n"
1255
- " <br>\n"
1256
- " "
1257
- msgstr ""
1258
-
1259
- #: src/filters.py:6
1260
- msgid "Rescue"
1261
- msgstr "اغاثة"
1262
-
1263
- #: src/filters.py:7
1264
- msgid "Medical Assistance"
1265
- msgstr "المساعدة الطبية"
1266
-
1267
- #: src/filters.py:8
1268
- msgid "Shelter"
1269
- msgstr "مأوى"
1270
-
1271
- #: src/filters.py:9
1272
- msgid "Food & Water"
1273
- msgstr "طعام وماء"
1274
-
1275
- #: src/filters.py:10
1276
- msgid "Danger"
1277
- msgstr "مخاطر"
1278
-
1279
- #: src/filters.py:25
1280
- msgid "Display unverified requests"
1281
- msgstr "عرض الطلبات غير المتحققة"
1282
-
1283
- #: src/filters.py:30
1284
- msgid "Display Interventions"
1285
- msgstr "عرض التدخلات"
1286
-
1287
- #: src/filters.py:34
1288
- msgid "👉 **Choose request type**"
1289
- msgstr "**اختر نوع الطلب**"
1290
-
1291
- #: src/filters.py:36
1292
- msgid "Choose request type"
1293
- msgstr ""
1294
-
1295
- #: src/filters.py:47
1296
- msgid "👉 **State of villages visited by NGOs**"
1297
- msgstr "**حالة القرى التي زارتها المنظمات غير الحكومية**"
1298
-
1299
- #: src/filters.py:51
1300
- msgid "🚨 Critical"
1301
- msgstr "🚨 حرجة"
1302
-
1303
- #: src/filters.py:52
1304
- msgid "⚠️ Partially served"
1305
- msgstr "⚠️ تمت خدمتها جزئيا"
1306
-
1307
- #: src/filters.py:53
1308
- msgid "Entièrement satisfait / Fully served"
1309
- msgstr "✅ تمت خدمتها بالكامل"
1310
-
1311
- #: src/filters.py:53
1312
- msgid "✅ Fully served"
1313
- msgstr "✅ تمت خدمتها بالكامل"
1314
-
1315
- #: src/filters.py:58
1316
- msgid "Choose status"
1317
- msgstr ""
1318
-
1319
- #: src/dataframes.py:6
1320
- msgid "VERIFIED_REQUESTS_URL"
1321
- msgstr ""
1322
-
1323
- #: src/dataframes.py:7
1324
- msgid "REQUESTS_URL"
1325
- msgstr ""
1326
-
1327
- #: src/dataframes.py:8
1328
- msgid "INTERVENTIONS_URL"
1329
- msgstr ""
1330
-
1331
- #: src/dataframes.py:9
1332
- msgid "INTERVENTIONS_PROCESSED_URL"
1333
- msgstr ""
1334
-
1335
- #: src/dataframes.py:10
1336
- msgid "VERIFIED_REQUESTS_PROCESSED_URL"
1337
- msgstr ""
1338
-
1339
- #: src/dataframes.py:11
1340
- msgid "data/regions.json"
1341
- msgstr ""
1342
-
1343
- #: src/dataframes.py:18 src/dataframes.py:20
1344
- msgid "Automatic Extracted Coordinates"
1345
- msgstr ""
1346
-
1347
- #: src/dataframes.py:24 src/dataframes.py:25
1348
- msgid "Status"
1349
- msgstr ""
1350
-
1351
- #: src/dataframes.py:56
1352
- msgid "Display the dataframe in a table"
1353
- msgstr ""
1354
-
1355
- #: src/dataframes.py:63
1356
- msgid "🔍 Search for information / بحث عن المعلومات"
1357
- msgstr ""
1358
-
1359
- #: src/dataframes.py:63
1360
- #, python-brace-format
1361
- msgid "query_{df_hash}"
1362
- msgstr ""
1363
-
1364
- #: src/dataframes.py:67
1365
- msgid "🔍 Search for an id / بحث عن رقم"
1366
- msgstr ""
1367
-
1368
- #: src/dataframes.py:72
1369
- #, python-brace-format
1370
- msgid "id_{df_hash}"
1371
- msgstr ""
1372
-
1373
- #: src/dataframes.py:76
1374
- msgid "🗓️ Status / حالة"
1375
- msgstr ""
1376
-
1377
- #: src/dataframes.py:76
1378
- msgid "all / الكل"
1379
- msgstr ""
1380
-
1381
- #: src/dataframes.py:76 src/dataframes.py:93
1382
- msgid "Done / تم"
1383
- msgstr ""
1384
-
1385
- #: src/dataframes.py:76 src/dataframes.py:96
1386
- msgid "Planned / مخطط لها"
1387
- msgstr ""
1388
-
1389
- #: src/dataframes.py:76
1390
- #, python-brace-format
1391
- msgid "status_{df_hash}"
1392
- msgstr ""
1393
-
1394
- #: src/dataframes.py:92
1395
- msgid "Intervention status"
1396
- msgstr ""
1397
-
1398
- #: src/dataframes.py:94 src/dataframes.py:97
1399
- msgid "Intervention déjà passée / Past intevention"
1400
- msgstr ""
1401
-
1402
- #: src/dataframes.py:103
1403
- #, python-brace-format
1404
- msgid ""
1405
- "To view the full Google Sheet for advanced filtering go to: {data_url} "
1406
- "**لعرض الورقة كاملة، اذهب إلى**"
1407
- msgstr ""
1408
-
1409
- #: src/dataframes.py:108
1410
- msgid ""
1411
- "We are hiding contact information to protect the privacy of the victims. If "
1412
- "you are an NGO and want to contact the victims, please contact us at "
1413
- "nt3awnoumorocco@gmail.com"
1414
- msgstr ""
1415
-
1416
- #: src/dataframes.py:111
1417
- msgid ""
1418
- "\n"
1419
- " <div style=\"text-align: left;\">\n"
1420
- " <a href=\"mailto:nt3awnoumorocco@gmail."
1421
- "com\">nt3awnoumorocco@gmail.com</a> نحن نخفي معلومات الاتصال لحماية خصوصية "
1422
- "الضحايا. إذا كنت جمعية وتريد الاتصال بالضحايا، يرجى الاتصال بنا على\n"
1423
- " </div>\n"
1424
- " "
1425
- msgstr ""
1426
-
1427
- #~ msgid "📝 **Table of verified requests**"
1428
- #~ msgstr "📝 **جدول الطلبات المؤكدة**"
1429
-
1430
- #~ msgid "🔍 Search for information"
1431
- #~ msgstr "بحث عن المعلومات"
1432
-
1433
- #~ msgid "🔍 Search for an id"
1434
- #~ msgstr "بحث عن رقم"
1435
-
1436
- #~ msgid "🗓️ Status"
1437
- #~ msgstr "حالة"
1438
-
1439
- #~ msgid "all"
1440
- #~ msgstr "الكل"
1441
-
1442
- #~ msgid "Done"
1443
- #~ msgstr "تمت"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
locales/fr/LC_MESSAGES/messages.mo DELETED
Binary file (3.21 kB)
 
locales/fr/LC_MESSAGES/messages.po DELETED
@@ -1,1416 +0,0 @@
1
- # SOME DESCRIPTIVE TITLE.
2
- # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
- # This file is distributed under the same license as the PACKAGE package.
4
- # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
- #
6
- #: src/utils.py:69 src/utils.py:70 src/markers.py:226 src/components.py:19
7
- msgid ""
8
- msgstr ""
9
- "Project-Id-Version: \n"
10
- "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2023-09-26 20:34+0200\n"
12
- "PO-Revision-Date: 2023-09-18 21:00+0200\n"
13
- "Last-Translator: \n"
14
- "Language-Team: \n"
15
- "Language: fr\n"
16
- "MIME-Version: 1.0\n"
17
- "Content-Type: text/plain; charset=UTF-8\n"
18
- "Content-Transfer-Encoding: 8bit\n"
19
- "X-Generator: Poedit 3.3.2\n"
20
-
21
- #: app.py:21
22
- msgid "myapplication"
23
- msgstr ""
24
-
25
- #: app.py:23
26
- msgid "HF_TOKEN"
27
- msgstr ""
28
-
29
- #: app.py:30
30
- msgid "wide"
31
- msgstr ""
32
-
33
- #: app.py:31 src/filters.py:40 src/filters.py:62
34
- msgid "collapsed"
35
- msgstr ""
36
-
37
- #: app.py:32
38
- msgid "🤝"
39
- msgstr ""
40
-
41
- #: app.py:33
42
- msgid "Nt3awnou نتعاونو"
43
- msgstr ""
44
-
45
- #: app.py:37
46
- msgid "sleep_time"
47
- msgstr ""
48
-
49
- #: app.py:39
50
- msgid "auto_refresh"
51
- msgstr ""
52
-
53
- #: app.py:42
54
- msgid "Auto Refresh?"
55
- msgstr ""
56
-
57
- #: app.py:44
58
- msgid "Refresh rate in seconds"
59
- msgstr ""
60
-
61
- #: app.py:54 app.py:184 src/components.py:78 src/components.py:162
62
- msgid "ar"
63
- msgstr ""
64
-
65
- #: app.py:54
66
- msgid "العربية"
67
- msgstr ""
68
-
69
- #: app.py:55 src/components.py:101 src/components.py:179
70
- msgid "fr"
71
- msgstr ""
72
-
73
- #: app.py:55
74
- msgid "Français"
75
- msgstr ""
76
-
77
- #: app.py:56 app.py:61 src/components.py:55 src/components.py:146
78
- msgid "en"
79
- msgstr ""
80
-
81
- #: app.py:56
82
- msgid "English"
83
- msgstr ""
84
-
85
- #: app.py:59
86
- msgid "Choose language / اختر اللغة"
87
- msgstr ""
88
-
89
- #: app.py:64
90
- msgid "messages"
91
- msgstr ""
92
-
93
- #: app.py:64
94
- msgid "locales"
95
- msgstr ""
96
-
97
- #: app.py:69
98
- msgid "Markers"
99
- msgstr ""
100
-
101
- #: app.py:112
102
- msgid "map"
103
- msgstr ""
104
-
105
- #: app.py:186
106
- msgid ""
107
- "\n"
108
- " <style>\n"
109
- " body {\n"
110
- " text-align: right;\n"
111
- " }\n"
112
- " </style>\n"
113
- " "
114
- msgstr ""
115
-
116
- #: src/text_content.py:2
117
- msgid ""
118
- "\n"
119
- " <div style=\"text-align: left;\">\n"
120
- " Nt3awnou نتعاونو is a non-profit organization and a collaborative "
121
- "platform dedicated to aiding individuals impacted by the recent earthquake "
122
- "in Morocco. Our core mission is to streamline and coordinate timely "
123
- "assistance for everyone affected. How do we achieve this? We assist those in "
124
- "need by allowing them to communicate their location and the specific aid "
125
- "they require, either by completing a form or sending a voice message via "
126
- "WhatsApp to the number <b>0602838166</b>. Once we receive and process this "
127
- "information, it can be viewed in our dashboard, which allows NGOs to "
128
- "organize and precisely target their interventions, ensuring swift assistance "
129
- "reaches those in need. Any organization that has taken initiative in a "
130
- "particular area can notify us by completing a dedicated form. This data is "
131
- "also incorporated into the dashboard so that other NGOs can help affected "
132
- "areas that still haven't received help.\n"
133
- " <br>⚠️ Warning : There are still rocks falling down the mountains, making "
134
- "the roads to the affected areas very dangerous. We advise volunteers to "
135
- "donate directly to specialized NGOs.<br>\n"
136
- " <br> \n"
137
- " <b>✉️ You can contact us via email at </b><a href=\"mailto:"
138
- "nt3awnoumorocco@gmail.com\">nt3awnoumorocco@gmail.com</a> or via Instagram "
139
- "<a href=\"https://www.instagram.com/nt3awnou_morocco/\">@nt3awnou_morocco</"
140
- "a> <br>\n"
141
- " <b>📝 Help us report more people in need by filling this form </b><a "
142
- "href=\"https://forms.gle/nZNCUVog9ka2Vdqu6\">https://forms.gle/"
143
- "nZNCUVog9ka2Vdqu6</a> <br>\n"
144
- " <b>📝 NGOs can report their interventions by filling this form </b><a "
145
- "href=\"https://forms.gle/PsNSuHHjTTgwQMmVA\">https://forms.gle/"
146
- "PsNSuHHjTTgwQMmVA</a> <br>\n"
147
- " <b>❗️ Our team is working day and night to verify the data. Please reach "
148
- "out to us if you can help us verify the data. </b>\n"
149
- " </div>\n"
150
- " <br> \n"
151
- " "
152
- msgstr ""
153
-
154
- #: src/text_content.py:15
155
- msgid ""
156
- "\n"
157
- " <div style=\"text-align: right;-webkit-rtl-ordering: logical;\">\n"
158
- "\n"
159
- " نتعاونو هي منصة تعاونية غير ربحية لمساعدة الأفراد المتضررين من الزلزال "
160
- "الأخير في المغرب. مهمتنا هي تسهيل تقديم المساعدة في الوقت المناسب و بفاعلية "
161
- "و تنظيم لجميع المتضررين. كيفاش؟ كنعاونو الناس لي محتاجين للمساعدة إعلمونا "
162
- "بمكانهم و نوع المساعدة لي محتاجين ليها سواء عن طريق ملأ الاستمارة أو عن طريق "
163
- "إرسال تسجيل صوتي عبر واتساب إلى رقم مخصص<b>0602838166</b>. بعد معالجة هاد "
164
- "المعلومات، كنجمعوهم فخريطة كتمكن الجمعيات من تنظيم و استهداف تدخلاتهم بدقة "
165
- "باش توصل المساعدة للناس لي ��حتاجين في وقت أسرع. و كل جمعية قامت باللازم في "
166
- "منطقة معينة تقدر تعلمنا عن طريق ملأ استمارة مخصصة لهاد الأمر. هاد المعلومات "
167
- "كذلك كتضاف للخريطة باش باقي الجمعيات يتاجهو لمناطق أخرى مازال ماوصلاتهم "
168
- "مساعدة.\n"
169
- " <br> تحذير : نظرا لخطورة الطرقان بسبب الحجر اللي كيطيح من الجبال، ننصح "
170
- "المتطوعين اللي بغاو يساعدو المناطق المتضررة يتبرعو عن طريق الجمعيات "
171
- "المختصة⚠️ \n"
172
- " <br> \n"
173
- " <br> \n"
174
- " nt3awnoumorocco@gmail.com <b>المتطوعين ليبغاو يعاونوا يقدرو يتصلوا معنا "
175
- "عبر البريد ✉️ </b>\n"
176
- " <br>\n"
177
- " <b> <a href=\"https://www.instagram.com/nt3awnou_morocco/"
178
- "\">@nt3awnou_morocco</a> أو عبر الانستغرام </b> \n"
179
- " https://forms.gle/nZNCUVog9ka2Vdqu6 <b>: ساعدونا نبلغو الناس ليمحتاجين "
180
- "فهاد الاستمارة 📝 </b><br>\n"
181
- " https://forms.gle/PsNSuHHjTTgwQMmVA <b>: الجمعيات لي عندهم تدخلات يقدرو "
182
- "يبلغونا عبر هاد الاستمار ة📝</b><br>\n"
183
- " <b> فريقنا يعمل ليلا نهارا للتحقق من البيانات. يرجى التواصل معنا إذا كنت "
184
- "تستطيع مساعدتنا في التحقق من البيانات❗️</b>\n"
185
- " </div>\n"
186
- " <br> \n"
187
- " "
188
- msgstr ""
189
-
190
- #: src/text_content.py:32
191
- msgid ""
192
- "\n"
193
- " <div style=\"text-align: left;\">\n"
194
- " Nt3awnou نتعاونو est une plateforme collaborative à but non-lucratif "
195
- "dédiée à l'aide aux personnes touchées par le récent tremblement de terre au "
196
- "Maroc. Notre mission principale est de rationaliser et de coordonner une "
197
- "assistance rapide pour toutes les personnes touchées. Comment y parvenons-"
198
- "nous ? Nous aidons les personnes dans le besoin en leur permettant de "
199
- "communiquer leur localisation et l'aide spécifique dont elles ont besoin, "
200
- "soit en remplissant un formulaire, soit en envoyant un message vocal via "
201
- "WhatsApp à un numéro <b>0602838166</b>. Une fois reçues et traitées, ces "
202
- "informations peuvent être consultées dans notre tableau de bord, qui permet "
203
- "aux associations d'organiser et de cibler précisément leurs interventions, "
204
- "afin que l'aide parvienne rapidement à ceux qui en ont besoin. Toute "
205
- "organisation ayant pris une initiative dans une zone particulière peut nous "
206
- "en informer en remplissant un formulaire prévu à cet effet. Ces données sont "
207
- "également intégrées au tableau de bord afin que d'autres associations "
208
- "puissent aider les zones touchées qui n'ont pas encore reçu d'aide.\n"
209
- " <br> ⚠️ Avertissement : Il y a encore des chutes de pierres dans les "
210
- "montagnes, ce qui rend les routes vers les zones touchées très dangereuses. "
211
- "Nous conseillons aux volontaires de faire des dons directement aux "
212
- "associations spécialisées.\n"
213
- " <br> \n"
214
- " <br> \n"
215
- " <b>✉️ Vous pouvez nous contacter par courrier électronique à l'adresse "
216
- "suivante </b><a href=\"mailto:nt3awnoumorocco@gmail."
217
- "com\">nt3awnoumorocco@gmail.com</a> ou via Instagram <a href=\"https://www."
218
- "instagram.com/nt3awnou_morocco/\">@nt3awnou_morocco</a> <br>\n"
219
- " <b>📝 Aidez-nous à signaler plus de personnes dans le besoin en "
220
- "remplissant ce formulaire : </b><a href=\"https://forms.gle/"
221
- "nZNCUVog9ka2Vdqu6\">https://forms.gle/nZNCUVog9ka2Vdqu6</a> <br>\n"
222
- " <b>📝 Les associations peuvent signaler leurs interventions en "
223
- "remplissant ce formulaire : </b><a href=\"https://forms.gle/"
224
- "PsNSuHHjTTgwQMmVA\">https://forms.gle/PsNSuHHjTTgwQMmVA</a> <br> \n"
225
- " <b>❗️Notre équipe travaille jour et nuit pour vérifier les données. "
226
- "Veuillez nous contacter si vous pouvez nous aider à vérifier les données. </"
227
- "b>\n"
228
- " </div>\n"
229
- " <br> \n"
230
- " "
231
- msgstr ""
232
-
233
- #: src/text_content.py:46
234
- msgid ""
235
- "\n"
236
- " <div style=\"text-align: center;\">\n"
237
- " <h4>وَمَنْ أَحْيَاهَا فَكَأَنَّمَا أَحْيَا النَّاسَ جَمِيعاً</h4>\n"
238
- " </div>\n"
239
- " "
240
- msgstr ""
241
-
242
- #: src/text_content.py:53
243
- msgid ""
244
- "\n"
245
- " <hr>\n"
246
- " <div style=\"text-align: center;\">\n"
247
- " <p>By <b>Moroccans</b> for <b>Moroccans</b> 🤝</p>\n"
248
- " <p>Reach out to us at <a href=\"mailto:nt3awnoumorocco@gmail."
249
- "com\">nt3awnoumorocco@gmail.com</a></p>\n"
250
- " "
251
- msgstr ""
252
-
253
- #: src/text_content.py:60
254
- msgid ""
255
- "\n"
256
- " <style>\n"
257
- " .block-container {\n"
258
- " padding-top: 1rem;\n"
259
- " padding-bottom: 0rem;\n"
260
- " }\n"
261
- " '''\n"
262
- " [data-testid=\"metric-container\"] {\n"
263
- " width: fit-content;\n"
264
- " margin: auto;\n"
265
- " }\n"
266
- "\n"
267
- " [data-testid=\"metric-container\"] > div {\n"
268
- " width: fit-content;\n"
269
- " margin: auto;\n"
270
- " }\n"
271
- "\n"
272
- " [data-testid=\"metric-container\"] label {\n"
273
- " width: fit-content;\n"
274
- " margin: auto;\n"
275
- " }\n"
276
- " '''\n"
277
- " </style>\n"
278
- " <div class=\"block-container\">\n"
279
- " <div style=\"text-align: center; margin-bottom: 0.5rem; width: fit-"
280
- "content; margin: auto;\">\n"
281
- " <img src=\"https://i.imgur.com/ngJZ4Gh.png\" alt=\"Nt3awnou "
282
- "logo\" width=\"fit-content\" height=\"150\" style=\"margin-top: 1rem; margin-"
283
- "bottom: 1rem;\">\n"
284
- " </div>\n"
285
- " <div style=\"text-align: center\">\n"
286
- " <a href=\"https://www.instagram.com/nt3awnou_morocco/\" "
287
- "style=\"margin-right: 0.5rem; text-decoration: none;\">\n"
288
- " <img src=\"https://upload.wikimedia.org/wikipedia/commons/"
289
- "thumb/a/a5/Instagram_icon.png/2048px-Instagram_icon.png\" alt=\"Instagram "
290
- "logo\" width=\"30\" height=\"30\">\n"
291
- " </a>\n"
292
- " <a href=\"https://www.facebook.com/nt3awnou.morocco\" "
293
- "style=\"margin-right: 0.5rem; text-decoration: none;\">\n"
294
- " <img src=\"https://i0.wp.com/www.lestudioled.com/wp-content/"
295
- "uploads/2016/05/facebook-logo-png-transparent-background.png\" "
296
- "alt=\"Instagram logo\" width=\"30\" height=\"30\">\n"
297
- " </a>\n"
298
- " <a href=\"https://www.linkedin.com/in/nt3awnou-"
299
- "morocco-01062a290\" style=\"margin-right: 0.5rem; text-decoration: none;\">\n"
300
- " <img src=\"https://upload.wikimedia.org/wikipedia/commons/"
301
- "thumb/c/ca/LinkedIn_logo_initials.png/600px-LinkedIn_logo_initials.png?"
302
- "20140125013055\" alt=\"LinkedIn logo\" width=\"30\" height=\"30\">\n"
303
- " </a>\n"
304
- " <a href=\"https://linktr.ee/nt3awnou\">\n"
305
- " <img src=\"https://seeklogo.com/images/L/linktree-"
306
- "logo-6FC3ADB679-seeklogo.com.png\" alt=\"Linktree logo\" width=\"30\" "
307
- "height=\"30\">\n"
308
- " </a>\n"
309
- " </div>\n"
310
- " </div>\n"
311
- "\n"
312
- " # "
313
- msgstr ""
314
-
315
- #: src/text_content.py:105
316
- msgid ""
317
- "**If a request should be reviewed or dropped submit its id here/ إذا كان يجب "
318
- "مراجعة أو حذف طلب، أدخل رقمه هنا:**"
319
- msgstr ""
320
- "**Si une demande doit être réexaminée ou supprimée, veuillez indiquer son "
321
- "numéro d’identification ici.**"
322
-
323
- #: src/utils.py:9
324
- msgid "black"
325
- msgstr ""
326
-
327
- #: src/utils.py:13
328
- msgid "Parsing Google Sheet:"
329
- msgstr ""
330
-
331
- #: src/utils.py:14
332
- msgid "edit#gid="
333
- msgstr ""
334
-
335
- #: src/utils.py:14
336
- msgid "export?format=csv&gid="
337
- msgstr ""
338
-
339
- #: src/utils.py:15
340
- msgid "warn"
341
- msgstr ""
342
-
343
- #: src/utils.py:28 src/utils.py:29 src/utils.py:57 src/utils.py:58
344
- #: src/utils.py:67 src/markers.py:27 src/components.py:130
345
- #: src/components.py:137
346
- msgid ","
347
- msgstr ""
348
-
349
- #: src/utils.py:42
350
- msgid "Add a latlng column to the dataframe"
351
- msgstr ""
352
-
353
- #: src/utils.py:44 src/utils.py:46 src/markers.py:112 src/markers.py:118
354
- #: src/markers.py:129 src/markers.py:164 src/markers.py:178 src/markers.py:224
355
- #: src/markers.py:240
356
- msgid "latlng"
357
- msgstr ""
358
-
359
- #: src/utils.py:48
360
- msgid ""
361
- "process_column should be a string or an integer, got {type(process_column)}"
362
- msgstr ""
363
-
364
- #: src/utils.py:59 src/utils.py:62 src/utils.py:63 src/utils.py:64
365
- msgid "."
366
- msgstr ""
367
-
368
- #: src/utils.py:69 src/utils.py:70
369
- msgid "[^\\d\\.\\-]"
370
- msgstr ""
371
-
372
- #: src/utils.py:74
373
- #, python-brace-format
374
- msgid "Error parsing latlng: {latlng} Reason: {e}"
375
- msgstr ""
376
-
377
- #: src/utils.py:80
378
- msgid "star"
379
- msgstr ""
380
-
381
- #: src/utils.py:81 src/utils.py:82
382
- msgid "#b3334f"
383
- msgstr ""
384
-
385
- #: src/utils.py:83
386
- msgid "white"
387
- msgstr ""
388
-
389
- #: src/utils.py:88
390
- msgid "Epicenter مركز الزلزال"
391
- msgstr ""
392
-
393
- #: src/utils.py:94
394
- msgid ""
395
- "Danger distances - earthquake magnitude 7 | مسافات الخطر - قوة الزلازل 7"
396
- msgstr ""
397
-
398
- #: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
399
- #: src/utils.py:106
400
- msgid "radius"
401
- msgstr ""
402
-
403
- #: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
404
- #: src/utils.py:109 src/utils.py:110
405
- msgid "fill_opacity"
406
- msgstr ""
407
-
408
- #: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
409
- #: src/utils.py:108
410
- msgid "weight"
411
- msgstr ""
412
-
413
- #: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
414
- #: src/utils.py:111
415
- msgid "fill_color"
416
- msgstr ""
417
-
418
- #: src/utils.py:97
419
- msgid "yellow"
420
- msgstr ""
421
-
422
- #: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
423
- msgid "tooltip"
424
- msgstr ""
425
-
426
- #: src/utils.py:97
427
- msgid "50 to 100 km - Moderate risk area | منطقة خطر معتدلة"
428
- msgstr ""
429
-
430
- #: src/utils.py:98 src/markers.py:8 src/markers.py:219
431
- msgid "orange"
432
- msgstr ""
433
-
434
- #: src/utils.py:98
435
- msgid "30 to 50 km - High risk zone | منطقة عالية المخاطر"
436
- msgstr ""
437
-
438
- #: src/utils.py:99
439
- msgid "#FF0000"
440
- msgstr ""
441
-
442
- #: src/utils.py:99
443
- msgid "10 to 30 km - Very high risk zone | منطقة شديدة الخطورة"
444
- msgstr ""
445
-
446
- #: src/utils.py:100
447
- msgid "#8B0000"
448
- msgstr ""
449
-
450
- #: src/utils.py:100
451
- msgid "0 to 10km - direct impact zone | منطقة التأثير المباشر"
452
- msgstr ""
453
-
454
- #: src/utils.py:117
455
- msgid "🔵 All the Villages / جميع القرى"
456
- msgstr ""
457
-
458
- #: src/utils.py:120
459
- msgid "lat"
460
- msgstr ""
461
-
462
- #: src/utils.py:121
463
- msgid "lng"
464
- msgstr ""
465
-
466
- #: src/utils.py:123
467
- msgid "name"
468
- msgstr ""
469
-
470
- #: src/utils.py:124
471
- #, python-brace-format
472
- msgid "https://maps.google.com/?q={lat_lng}"
473
- msgstr ""
474
-
475
- #: src/utils.py:125
476
- #, python-brace-format
477
- msgid ""
478
- "<br><b>⛰️ Douar:</b> {dour_name}<br><a href=\"{maps_url}\" target=\"_blank\" "
479
- "rel=\"noopener noreferrer\"><b>🧭 Google Maps</b></a>"
480
- msgstr ""
481
-
482
- #: src/utils.py:132
483
- msgid "#0046C8"
484
- msgstr ""
485
-
486
- #: src/utils.py:140 src/utils.py:144 src/markers.py:55 src/markers.py:140
487
- msgid "Done ✅"
488
- msgstr "Terminé ✅"
489
-
490
- #: src/utils.py:141
491
- msgid "Planned ⏳"
492
- msgstr "Prévu ⏳"
493
-
494
- #: src/utils.py:142 src/utils.py:146 src/markers.py:59
495
- msgid "Partial 📝"
496
- msgstr "Partiel 📝"
497
-
498
- #: src/utils.py:145 src/markers.py:51 src/markers.py:137
499
- msgid "Planned ⌛"
500
- msgstr "Prévu ⌛"
501
-
502
- #: src/utils.py:154
503
- msgid "High Emergency 🔴"
504
- msgstr "Urgence élevée 🔴"
505
-
506
- #: src/utils.py:155
507
- msgid "Medium Emergency 🟠"
508
- msgstr "Urgence moyenne 🟠"
509
-
510
- #: src/utils.py:156
511
- msgid "Low Emergency 🟡"
512
- msgstr "Urgence faible 🟡"
513
-
514
- #: src/utils.py:158 src/markers.py:220
515
- msgid "High"
516
- msgstr ""
517
-
518
- #: src/utils.py:159 src/markers.py:219
519
- msgid "Medium"
520
- msgstr ""
521
-
522
- #: src/utils.py:160 src/markers.py:218 src/markers.py:251
523
- msgid "Low"
524
- msgstr ""
525
-
526
- #: src/utils.py:179 src/utils.py:186
527
- msgid "topright"
528
- msgstr ""
529
-
530
- #: src/utils.py:180
531
- msgid "Search | البحث"
532
- msgstr ""
533
-
534
- #: src/utils.py:187
535
- msgid "Expand me | تكبير الخريطة"
536
- msgstr ""
537
-
538
- #: src/utils.py:188
539
- msgid "Exit me | تصغير الخريطة"
540
- msgstr ""
541
-
542
- #: src/utils.py:194
543
- #, python-brace-format
544
- msgid "https://marocmap.ikiker.com/maroc/{z}/{x}/{y}.png"
545
- msgstr ""
546
-
547
- #: src/utils.py:197 src/utils.py:198
548
- msgid "Maroc Map"
549
- msgstr ""
550
-
551
- #: src/utils.py:214
552
- msgid "topleft"
553
- msgstr ""
554
-
555
- #: src/utils.py:217
556
- msgid "title"
557
- msgstr ""
558
-
559
- #: src/utils.py:217
560
- msgid "My location | موقعي"
561
- msgstr ""
562
-
563
- #: src/utils.py:217
564
- msgid "popup"
565
- msgstr ""
566
-
567
- #: src/map_utils.py:5
568
- msgid ""
569
- "\n"
570
- " <li><span style='background:#CE3C28;opacity:0.7;'></span>Rescue</li>\n"
571
- " <li><span style='background:#ED922E;opacity:0.7;'></span>Medical "
572
- "Assistance</li>\n"
573
- " <li><span style='background:#FFCA92;opacity:0.7;'></span>Shelter</li>\n"
574
- " <li><span style='background:#37A8DA;opacity:0.7;'></span>Food & Water</"
575
- "li>\n"
576
- " <li><span style='background:#575757;opacity:0.7;'></span>Dangers</li>\n"
577
- " <li><span style='background:#6EAA25;opacity:0.7;'></span>Done</li>\n"
578
- " <li><span style='background:#023020;opacity:0.7;'></span>Partial</li>\n"
579
- " <li><span style='background:#FF91E8;opacity:0.7;'></span>Planned</li>\n"
580
- " "
581
- msgstr ""
582
-
583
- #: src/map_utils.py:15
584
- msgid ""
585
- "\n"
586
- " <li><span style='background:#CE3C28;opacity:0.7;'></span>High "
587
- "Emergency</li>\n"
588
- " <li><span style='background:#ED922E;opacity:0.7;'></span>Medium "
589
- "Emergency</li>\n"
590
- " <li><span style='background:#FFCA92;opacity:0.7;'></span>Low "
591
- "Emergency</li>\n"
592
- " <li><span style='background:#6EAA25;opacity:0.7;'></span>Done</li>\n"
593
- " <li><span style='background:#023020;opacity:0.7;'></span>Partial</li>\n"
594
- " <li><span style='background:#FF91E8;opacity:0.7;'></span>Planned</li>\n"
595
- " "
596
- msgstr ""
597
- "\n"
598
- " <li><span style='background:#CE3C28;opacity:0.7;'></span>Urgence "
599
- "élevée</li>\n"
600
- " <li><span style='background:#ED922E;opacity:0.7;'></span>Urgence "
601
- "moyenne</li>\n"
602
- " <li><span style='background:#FFCA92;opacity:0.7;'></span>Urgence "
603
- "faible</li>\n"
604
- " <li><span style='background:#6EAA25;opacity:0.7;'></span>Fait</li>\n"
605
- " <li><span style='background:#023020;opacity:0.7;'></span>Partiel</li>\n"
606
- " <li><span style='background:#FF91E8;opacity:0.7;'></span>Planifié</"
607
- "li>\n"
608
- " "
609
-
610
- #: src/map_utils.py:24
611
- msgid ""
612
- "\n"
613
- " {% macro html(this, kwargs) %}\n"
614
- "\n"
615
- " <!doctype html>\n"
616
- " <html lang=\"en\">\n"
617
- " <head>\n"
618
- " <meta charset=\"utf-8\">\n"
619
- " <meta name=\"viewport\" content=\"width=device-width, initial-"
620
- "scale=1\">\n"
621
- " <title>jQuery UI Draggable - Default functionality</title>\n"
622
- " <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.12.1/themes/base/"
623
- "jquery-ui.css\">\n"
624
- "\n"
625
- " <script src=\"https://code.jquery.com/jquery-1.12.4.js\"></script>\n"
626
- " <script src=\"https://code.jquery.com/ui/1.12.1/jquery-ui.js\"></"
627
- "script>\n"
628
- " \n"
629
- " <script>\n"
630
- " $( function() {\n"
631
- " $( \"#maplegend\" ).draggable({\n"
632
- " start: function (event, ui) {\n"
633
- " $(this).css({\n"
634
- " right: \"auto\",\n"
635
- " top: \"auto\",\n"
636
- " bottom: \"auto\"\n"
637
- " });\n"
638
- " }\n"
639
- " });\n"
640
- " });\n"
641
- "\n"
642
- " </script>\n"
643
- " </head>\n"
644
- " <body>\n"
645
- "\n"
646
- " \n"
647
- " <div id='maplegend' class='maplegend' \n"
648
- " style='position: absolute; z-index:9999; border:2px solid grey; "
649
- "background-color:rgba(255, 255, 255, 0.8);\n"
650
- " border-radius:6px; padding: 10px; font-size:14px; right: 20px; bottom: "
651
- "20px;'>\n"
652
- " \n"
653
- " <div class='legend-title'>Legend / مفتاح الخريطة</div>\n"
654
- " <div class='legend-scale'>\n"
655
- " <ul class='legend-labels'>\n"
656
- "\n"
657
- " "
658
- msgstr ""
659
-
660
- #: src/map_utils.py:65
661
- msgid ""
662
- "\n"
663
- " </ul>\n"
664
- " </div>\n"
665
- " </div>\n"
666
- " \n"
667
- " </body>\n"
668
- " </html>\n"
669
- "\n"
670
- " <style type='text/css'>\n"
671
- " .maplegend .legend-title {\n"
672
- " text-align: left;\n"
673
- " margin-bottom: 5px;\n"
674
- " font-weight: bold;\n"
675
- " font-size: 90%;\n"
676
- " color: #333;\n"
677
- " }\n"
678
- " .maplegend .legend-scale ul {\n"
679
- " margin: 0;\n"
680
- " margin-bottom: 5px;\n"
681
- " padding: 0;\n"
682
- " float: left;\n"
683
- " list-style: none;\n"
684
- " }\n"
685
- " .maplegend .legend-scale ul li {\n"
686
- " font-size: 80%;\n"
687
- " list-style: none;\n"
688
- " margin-left: 0;\n"
689
- " line-height: 18px;\n"
690
- " margin-bottom: 2px;\n"
691
- " color: #111;\n"
692
- " }\n"
693
- " .maplegend ul.legend-labels li span {\n"
694
- " display: block;\n"
695
- " float: left;\n"
696
- " height: 16px;\n"
697
- " width: 30px;\n"
698
- " margin-right: 5px;\n"
699
- " margin-left: 0;\n"
700
- " border: 1px solid #999;\n"
701
- " }\n"
702
- " .maplegend .legend-source {\n"
703
- " font-size: 80%;\n"
704
- " color: #777;\n"
705
- " clear: both;\n"
706
- " }\n"
707
- " .maplegend a {\n"
708
- " color: #777;\n"
709
- " }\n"
710
- "\n"
711
- " .leaflet-control-geocoder-form input {\n"
712
- " color: black;\n"
713
- " }\n"
714
- " \n"
715
- " </style>\n"
716
- " {% endmacro %}"
717
- msgstr ""
718
-
719
- #: src/map_utils.py:125
720
- msgid "get_legend_macro"
721
- msgstr ""
722
-
723
- #: src/markers.py:7 src/markers.py:15 src/filters.py:6 src/filters.py:14
724
- msgid "إغاثة"
725
- msgstr ""
726
-
727
- #: src/markers.py:7 src/markers.py:138 src/markers.py:141 src/markers.py:220
728
- msgid "red"
729
- msgstr ""
730
-
731
- #: src/markers.py:8 src/markers.py:16 src/filters.py:7 src/filters.py:15
732
- msgid "مساعدة طبية"
733
- msgstr ""
734
-
735
- #: src/markers.py:9 src/markers.py:17 src/filters.py:8 src/filters.py:16
736
- msgid "مأوى"
737
- msgstr ""
738
-
739
- #: src/markers.py:9 src/markers.py:208 src/markers.py:218 src/markers.py:265
740
- msgid "beige"
741
- msgstr ""
742
-
743
- #: src/markers.py:10 src/markers.py:18 src/filters.py:9 src/filters.py:17
744
- msgid "طعام وماء"
745
- msgstr ""
746
-
747
- #: src/markers.py:10
748
- msgid "blue"
749
- msgstr ""
750
-
751
- #: src/markers.py:11 src/markers.py:19 src/filters.py:10 src/filters.py:18
752
- msgid "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)"
753
- msgstr ""
754
-
755
- #: src/markers.py:11
756
- msgid "gray"
757
- msgstr ""
758
-
759
- #: src/markers.py:15
760
- msgid "bell"
761
- msgstr ""
762
-
763
- #: src/markers.py:16 src/markers.py:138 src/markers.py:141
764
- msgid "heart"
765
- msgstr ""
766
-
767
- #: src/markers.py:17
768
- msgid "home"
769
- msgstr ""
770
-
771
- #: src/markers.py:18
772
- msgid "cutlery"
773
- msgstr ""
774
-
775
- #: src/markers.py:19
776
- msgid "Warning"
777
- msgstr ""
778
-
779
- #: src/markers.py:21
780
- msgid "A"
781
- msgstr ""
782
-
783
- #: src/markers.py:35
784
- msgid "Display NGO interventions on the map"
785
- msgstr ""
786
-
787
- #: src/markers.py:38 src/markers.py:80
788
- msgid "K"
789
- msgstr ""
790
-
791
- #: src/markers.py:40 src/markers.py:77
792
- msgid "H"
793
- msgstr ""
794
-
795
- #: src/markers.py:40
796
- msgid "Intervention prévue dans le futur / Planned future intervention"
797
- msgstr ""
798
-
799
- #: src/markers.py:44 src/filters.py:52
800
- msgid "Partiellement satisfait / Partially Served"
801
- msgstr ""
802
-
803
- #: src/markers.py:50 src/markers.py:138
804
- msgid "pink"
805
- msgstr ""
806
-
807
- #: src/markers.py:52 src/filters.py:51
808
- msgid "Critique, Besoin d'aide en urgence / Critical, in urgent need of help"
809
- msgstr ""
810
-
811
- #: src/markers.py:54 src/markers.py:141
812
- msgid "green"
813
- msgstr ""
814
-
815
- #: src/markers.py:58
816
- msgid "darkgreen"
817
- msgstr ""
818
-
819
- #: src/markers.py:71
820
- msgid "B"
821
- msgstr ""
822
-
823
- #: src/markers.py:72
824
- msgid "C"
825
- msgstr ""
826
-
827
- #: src/markers.py:73
828
- msgid "D"
829
- msgstr ""
830
-
831
- #: src/markers.py:74
832
- msgid "E"
833
- msgstr ""
834
-
835
- #: src/markers.py:75
836
- msgid "F"
837
- msgstr ""
838
-
839
- #: src/markers.py:76
840
- msgid "G"
841
- msgstr ""
842
-
843
- #: src/markers.py:78
844
- msgid "I"
845
- msgstr ""
846
-
847
- #: src/markers.py:79
848
- msgid "J"
849
- msgstr ""
850
-
851
- #: src/markers.py:81
852
- msgid "L"
853
- msgstr ""
854
-
855
- #: src/markers.py:82
856
- msgid "M"
857
- msgstr ""
858
-
859
- #: src/markers.py:83
860
- msgid "N"
861
- msgstr ""
862
-
863
- #: src/markers.py:84
864
- msgid "O"
865
- msgstr ""
866
-
867
- #: src/markers.py:85
868
- msgid "P"
869
- msgstr ""
870
-
871
- #: src/markers.py:86
872
- msgid "Q"
873
- msgstr ""
874
-
875
- #: src/markers.py:87
876
- msgid "R"
877
- msgstr ""
878
-
879
- #: src/markers.py:88
880
- msgid "S"
881
- msgstr ""
882
-
883
- #: src/markers.py:89
884
- msgid "T"
885
- msgstr ""
886
-
887
- #: src/markers.py:90
888
- msgid "U"
889
- msgstr ""
890
-
891
- #: src/markers.py:92
892
- msgid ", "
893
- msgstr ""
894
-
895
- #: src/markers.py:93
896
- #, python-brace-format
897
- msgid ""
898
- "\n"
899
- " <b>Org:</b> {org}<br>\n"
900
- " <b>Association ID:</b> {association_id}<br>\n"
901
- " <b>Speciality:</b> {speciality}<br>\n"
902
- " <b>Phone 1:</b> {phone_1}<br>\n"
903
- " <b>Phone 2:</b> {phone_2}<br>\n"
904
- " <b>Email:</b> {email}<br>\n"
905
- " <b>Intervention Date:</b> {intervention_date}<br>\n"
906
- " <b>Intervention Status:</b> {intervention_status}<br>\n"
907
- " <b>Help Type:</b> {help_type}<br>\n"
908
- " <b>Current Situation:</b> {current_situation}<br>\n"
909
- " <b>Future Help Type:</b> {future_help_type}<br>\n"
910
- " <b>Douar Name:</b> {full_douar_name}<br>\n"
911
- " <b>Accessibility to Douar:</b> {accessibility_to_douar}<br>\n"
912
- " <b>Type of Accessibility:</b> {type_of_accessibility}<br>\n"
913
- " <b>Population:</b> {population}<br>\n"
914
- " <b>Intervention Additional Info:</b> {intervention_additional_info}"
915
- "<br>\n"
916
- " <b>Any Additional Info:</b> {any_additional_info}<br>\n"
917
- " "
918
- msgstr ""
919
-
920
- #: src/markers.py:133
921
- msgid "Planned"
922
- msgstr "Prévu"
923
-
924
- #: src/markers.py:138 src/markers.py:141 src/markers.py:208 src/markers.py:265
925
- msgid "glyphicon"
926
- msgstr ""
927
-
928
- #: src/markers.py:151
929
- #, python-brace-format
930
- msgid ""
931
- "\n"
932
- " <b>Intervention Date:</b> {intervention_date}<br>\n"
933
- " <b>Org:</b> {org}<br>\n"
934
- " <b>Intervention:</b> {intervention_type}<br>\n"
935
- " <b>Invervention Status:</b> {status}<br>\n"
936
- " <b>Details:</b> {details}<br>\n"
937
- " <b>Location:</b> {location}<br>\n"
938
- " <b>Remarks:</b> {remarks}<br>\n"
939
- " <b>Contact:</b> {contact}<br>\n"
940
- " "
941
- msgstr ""
942
-
943
- #: src/markers.py:174
944
- msgid "Display victim requests on the map"
945
- msgstr ""
946
-
947
- #: src/markers.py:176 src/dataframes.py:35
948
- msgid "ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"
949
- msgstr ""
950
-
951
- #: src/markers.py:179
952
- #, python-brace-format
953
- msgid "https://maps.google.com/?q={long_lat}"
954
- msgstr ""
955
-
956
- #: src/markers.py:186
957
- msgid ""
958
- "\n"
959
- " <b>Request Type:</b> {request_type}<br>\n"
960
- " <b>Id:</b> {row[\"id\"]}<br>\n"
961
- " <b>Source:</b> {source}<br>\n"
962
- " <b>Person in place:</b> {person_in_place}<br>\n"
963
- " <b>Douar:</b> {douar}<br>\n"
964
- " <b>Douar Info:</b> {douar_info}<br>\n"
965
- " <a href=\"{maps_url}\" target=\"_blank\" rel=\"noopener "
966
- "noreferrer\"><b>Google Maps</b></a>\n"
967
- " "
968
- msgstr ""
969
-
970
- #: src/markers.py:196 src/markers.py:250
971
- msgid "list"
972
- msgstr ""
973
-
974
- #: src/markers.py:203 src/markers.py:204
975
- msgid " لأي جماعة / قيادة / دوار تنتمون ؟"
976
- msgstr ""
977
-
978
- #: src/markers.py:214
979
- msgid "Display verified victim requests on the map"
980
- msgstr ""
981
-
982
- #: src/markers.py:228 src/markers.py:229 src/dataframes.py:38
983
- msgid "Help Details"
984
- msgstr ""
985
-
986
- #: src/markers.py:231
987
- #, python-brace-format
988
- msgid "<b>Request Type:</b> {request_type}<br>"
989
- msgstr ""
990
-
991
- #: src/markers.py:232 src/markers.py:254
992
- msgid "Location Details"
993
- msgstr ""
994
-
995
- #: src/markers.py:233
996
- #, python-brace-format
997
- msgid "<b>Location:</b> {val}<br>"
998
- msgstr ""
999
-
1000
- #: src/markers.py:234 src/markers.py:251
1001
- msgid "Emergency Degree"
1002
- msgstr ""
1003
-
1004
- #: src/markers.py:235
1005
- #, python-brace-format
1006
- msgid "<b>Emergency Degree:</b> {val}<br>"
1007
- msgstr ""
1008
-
1009
- #: src/markers.py:236
1010
- msgid "Verification Date"
1011
- msgstr ""
1012
-
1013
- #: src/markers.py:237
1014
- #, python-brace-format
1015
- msgid "<b>Verification Date:</b> {val}<br>"
1016
- msgstr ""
1017
-
1018
- #: src/markers.py:238 src/markers.py:247 src/dataframes.py:31
1019
- #: src/dataframes.py:32 src/dataframes.py:87
1020
- msgid "id"
1021
- msgstr ""
1022
-
1023
- #: src/markers.py:239
1024
- #, python-brace-format
1025
- msgid "<b>Id:</b> {val}<br>"
1026
- msgstr ""
1027
-
1028
- #: src/markers.py:241
1029
- #, python-brace-format
1030
- msgid "https://maps.google.com/?q={val}"
1031
- msgstr ""
1032
-
1033
- #: src/markers.py:243
1034
- #, python-brace-format
1035
- msgid ""
1036
- "<a href=\"{maps_url}\" target=\"_blank\" rel=\"noopener "
1037
- "noreferrer\"><b>Google Maps</b></a><br>"
1038
- msgstr ""
1039
-
1040
- #: src/markers.py:248
1041
- msgid ""
1042
- "<a href='https://docs.google.com/forms/d/"
1043
- "e/1FAIpQLSdyAcOAULumk4A1DsfrwUsGdZ-9G5xOUuD3vHdQOp3nGNAZXw/viewform?"
1044
- "usp=pp_url&entry.1499427789={id_in_sheet}&entry.1666684596={datetime.now()."
1045
- "strftime('%Y-%m-%d')}' target='_blank' rel='noopener noreferrer'><b>Mark as "
1046
- "solved</b></a><br>"
1047
- msgstr ""
1048
-
1049
- #: src/components.py:11
1050
- msgid "Id review submission form"
1051
- msgstr ""
1052
-
1053
- #: src/components.py:13
1054
- msgid "🔍 Review of requests | مراجعة طلب مساعدة"
1055
- msgstr ""
1056
-
1057
- #: src/components.py:16
1058
- msgid "Enter id / أدخل الرقم"
1059
- msgstr ""
1060
-
1061
- #: src/components.py:17
1062
- msgid "Explain why / أدخل سبب المراجعة"
1063
- msgstr ""
1064
-
1065
- #: src/components.py:18
1066
- msgid "Submit / أرسل"
1067
- msgstr ""
1068
-
1069
- #: src/components.py:20
1070
- msgid "Please enter a reason / الرجاء إدخال سبب"
1071
- msgstr ""
1072
-
1073
- #: src/components.py:22
1074
- msgid ""
1075
- "review_id_{id_to_review}_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.txt"
1076
- msgstr ""
1077
-
1078
- #: src/components.py:23
1079
- msgid "w"
1080
- msgstr ""
1081
-
1082
- #: src/components.py:24
1083
- #, python-brace-format
1084
- msgid "id: {id_to_review}, explanation: {reason_for_review}\n"
1085
- msgstr ""
1086
-
1087
- #: src/components.py:28
1088
- msgid "nt3awnou/review_requests"
1089
- msgstr ""
1090
-
1091
- #: src/components.py:29
1092
- msgid "dataset"
1093
- msgstr ""
1094
-
1095
- #: src/components.py:31
1096
- msgid ""
1097
- "Submitted at https://huggingface.co/datasets/nt3awnou/review_requests/ تم "
1098
- "الإرسال"
1099
- msgstr ""
1100
-
1101
- #: src/components.py:35
1102
- msgid "💻 For Developers only, embed code for the map"
1103
- msgstr "💻 Pour les développeurs uniquement, code d'intégration de la carte"
1104
-
1105
- #: src/components.py:37
1106
- msgid ""
1107
- "\n"
1108
- " <iframe id=\"nt3awnou-map\"\n"
1109
- " src=\"https://nt3awnou-embed-rescue-map.hf.space/?embed=true\" "
1110
- "width=\"1200\" height=\"720\"\n"
1111
- " frameborder=\"0\"\n"
1112
- " width=\"850\"\n"
1113
- " height=\"450\"\n"
1114
- " title=\"Nt3awno Rescue Map\">\n"
1115
- " </iframe>\n"
1116
- " <script src=\"https://cdn.jsdelivr.net/npm/iframe-resizer@4.3.4/js/"
1117
- "iframeResizer.min.js\"></script>\n"
1118
- " <script>\n"
1119
- " iFrameResize({}, \"#nt3awnou-map\");\n"
1120
- " </script>\n"
1121
- " "
1122
- msgstr ""
1123
-
1124
- #: src/components.py:50
1125
- msgid "html"
1126
- msgstr ""
1127
-
1128
- #: src/components.py:64
1129
- msgid "# Number of help requests"
1130
- msgstr ""
1131
-
1132
- #: src/components.py:69
1133
- msgid "# Number of interventions"
1134
- msgstr ""
1135
-
1136
- #: src/components.py:75
1137
- msgid "# Number of solved requests"
1138
- msgstr ""
1139
-
1140
- #: src/components.py:87
1141
- msgid "# عدد طلبات المساعدة"
1142
- msgstr ""
1143
-
1144
- #: src/components.py:92
1145
- msgid "# عدد التدخلات"
1146
- msgstr ""
1147
-
1148
- #: src/components.py:98
1149
- msgid "# عدد الطلبات المستجاب لها"
1150
- msgstr ""
1151
-
1152
- #: src/components.py:110
1153
- msgid "# Nombre de demandes d'aide"
1154
- msgstr ""
1155
-
1156
- #: src/components.py:115
1157
- msgid "# Nombre d'interventions"
1158
- msgstr ""
1159
-
1160
- #: src/components.py:121
1161
- msgid "# Nombre de demandes résolues"
1162
- msgstr ""
1163
-
1164
- #: src/components.py:125
1165
- msgid "📊 **Charts**"
1166
- msgstr "📊 **Graphiques**"
1167
-
1168
- #: src/components.py:130 src/components.py:131
1169
- msgid "supplies_category"
1170
- msgstr ""
1171
-
1172
- #: src/components.py:130 src/components.py:137
1173
- msgid "[] '"
1174
- msgstr ""
1175
-
1176
- #: src/components.py:130 src/components.py:137
1177
- msgid "category"
1178
- msgstr ""
1179
-
1180
- #: src/components.py:131
1181
- msgid "Supplies Categories"
1182
- msgstr "Catégories d'aides fournies"
1183
-
1184
- #: src/components.py:137 src/components.py:138
1185
- msgid "need_category"
1186
- msgstr ""
1187
-
1188
- #: src/components.py:138
1189
- msgid "Needs Categories"
1190
- msgstr "Catégories de besoins"
1191
-
1192
- #: src/components.py:145
1193
- msgid "📝 **Donations**"
1194
- msgstr "📝 **Donations**"
1195
-
1196
- #: src/components.py:148
1197
- msgid ""
1198
- "\n"
1199
- " <div style=\"text-align: center;\">\n"
1200
- " <h4>The official bank account dedicated to tackle the "
1201
- "consequences of the earthquake is:</h4>\n"
1202
- " <b>Account number:</b>\n"
1203
- " <h2>126</h2>\n"
1204
- " <b>RIB:</b> 001-810-0078000201106203-18\n"
1205
- " <br>\n"
1206
- " <b>For the money transfers coming from outside Morocco</b>\n"
1207
- " <br>\n"
1208
- " <b>IBAN:</b> MA64001810007800020110620318\n"
1209
- " <br>\n"
1210
- " "
1211
- msgstr ""
1212
-
1213
- #: src/components.py:164
1214
- msgid ""
1215
- "\n"
1216
- " <div style=\"text-align: center;\">\n"
1217
- " <h4>الحساب البنكي الرسمي المخصص لمواجهة عواقب الزلزال</h4>\n"
1218
- " <b>رقم الحساب</b>\n"
1219
- " <h2>126</h2>\n"
1220
- " <b>RIB:</b> 001-810-0078000201106203-18\n"
1221
- " <br>\n"
1222
- " <b>للتحويلات القادمة من خارج المغرب</b>\n"
1223
- " <br>\n"
1224
- " <b>IBAN:</b> MA64001810007800020110620318\n"
1225
- " <br>\n"
1226
- " </div>\n"
1227
- " "
1228
- msgstr ""
1229
-
1230
- #: src/components.py:181
1231
- msgid ""
1232
- "\n"
1233
- " <div style=\"text-align: center;\">\n"
1234
- " <h4>Le compte bancaire officiel dédié à la lutte contre les "
1235
- "conséquences du séisme est le suivant:</h4>\n"
1236
- " <b>Numéro de compte:</b>\n"
1237
- " <h2>126</h2>\n"
1238
- " <b>RIB:</b> 001-810-0078000201106203-18\n"
1239
- " <br>\n"
1240
- " <b>Pour les transferts d'argent en provenance de l'étranger</b>\n"
1241
- " <br>\n"
1242
- " <b>IBAN:</b> MA64001810007800020110620318\n"
1243
- " <br>\n"
1244
- " "
1245
- msgstr ""
1246
-
1247
- #: src/filters.py:6
1248
- msgid "Rescue"
1249
- msgstr "Sauvetage"
1250
-
1251
- #: src/filters.py:7
1252
- msgid "Medical Assistance"
1253
- msgstr "Assistance médicale"
1254
-
1255
- #: src/filters.py:8
1256
- msgid "Shelter"
1257
- msgstr "Abri"
1258
-
1259
- #: src/filters.py:9
1260
- msgid "Food & Water"
1261
- msgstr "Nourriture et eau"
1262
-
1263
- #: src/filters.py:10
1264
- msgid "Danger"
1265
- msgstr "Danger"
1266
-
1267
- #: src/filters.py:25
1268
- msgid "Display unverified requests"
1269
- msgstr "Montrer les demandes non vérifiées"
1270
-
1271
- #: src/filters.py:30
1272
- msgid "Display Interventions"
1273
- msgstr "Montrer les interventions"
1274
-
1275
- #: src/filters.py:34
1276
- msgid "👉 **Choose request type**"
1277
- msgstr "👉 **Choisir le type de demande**"
1278
-
1279
- #: src/filters.py:36
1280
- msgid "Choose request type"
1281
- msgstr ""
1282
-
1283
- #: src/filters.py:47
1284
- msgid "👉 **State of villages visited by NGOs**"
1285
- msgstr "👉 **État des villages visités par les ONG**"
1286
-
1287
- #: src/filters.py:51
1288
- msgid "🚨 Critical"
1289
- msgstr "🚨 Critique"
1290
-
1291
- #: src/filters.py:52
1292
- msgid "⚠️ Partially served"
1293
- msgstr "⚠️ Partiellement servi"
1294
-
1295
- #: src/filters.py:53
1296
- msgid "Entièrement satisfait / Fully served"
1297
- msgstr "Entièrement satisfait"
1298
-
1299
- #: src/filters.py:53
1300
- msgid "✅ Fully served"
1301
- msgstr "✅ Entièrement servi"
1302
-
1303
- #: src/filters.py:58
1304
- msgid "Choose status"
1305
- msgstr ""
1306
-
1307
- #: src/dataframes.py:6
1308
- msgid "VERIFIED_REQUESTS_URL"
1309
- msgstr ""
1310
-
1311
- #: src/dataframes.py:7
1312
- msgid "REQUESTS_URL"
1313
- msgstr ""
1314
-
1315
- #: src/dataframes.py:8
1316
- msgid "INTERVENTIONS_URL"
1317
- msgstr ""
1318
-
1319
- #: src/dataframes.py:9
1320
- msgid "INTERVENTIONS_PROCESSED_URL"
1321
- msgstr ""
1322
-
1323
- #: src/dataframes.py:10
1324
- msgid "VERIFIED_REQUESTS_PROCESSED_URL"
1325
- msgstr ""
1326
-
1327
- #: src/dataframes.py:11
1328
- msgid "data/regions.json"
1329
- msgstr ""
1330
-
1331
- #: src/dataframes.py:18 src/dataframes.py:20
1332
- msgid "Automatic Extracted Coordinates"
1333
- msgstr ""
1334
-
1335
- #: src/dataframes.py:24 src/dataframes.py:25
1336
- msgid "Status"
1337
- msgstr ""
1338
-
1339
- #: src/dataframes.py:56
1340
- msgid "Display the dataframe in a table"
1341
- msgstr ""
1342
-
1343
- #: src/dataframes.py:63
1344
- msgid "🔍 Search for information / بحث عن المعلومات"
1345
- msgstr ""
1346
-
1347
- #: src/dataframes.py:63
1348
- #, python-brace-format
1349
- msgid "query_{df_hash}"
1350
- msgstr ""
1351
-
1352
- #: src/dataframes.py:67
1353
- msgid "🔍 Search for an id / بحث عن رقم"
1354
- msgstr ""
1355
-
1356
- #: src/dataframes.py:72
1357
- #, python-brace-format
1358
- msgid "id_{df_hash}"
1359
- msgstr ""
1360
-
1361
- #: src/dataframes.py:76
1362
- msgid "🗓️ Status / حالة"
1363
- msgstr ""
1364
-
1365
- #: src/dataframes.py:76
1366
- msgid "all / الكل"
1367
- msgstr ""
1368
-
1369
- #: src/dataframes.py:76 src/dataframes.py:93
1370
- msgid "Done / تم"
1371
- msgstr ""
1372
-
1373
- #: src/dataframes.py:76 src/dataframes.py:96
1374
- msgid "Planned / مخطط لها"
1375
- msgstr ""
1376
-
1377
- #: src/dataframes.py:76
1378
- #, python-brace-format
1379
- msgid "status_{df_hash}"
1380
- msgstr ""
1381
-
1382
- #: src/dataframes.py:92
1383
- msgid "Intervention status"
1384
- msgstr ""
1385
-
1386
- #: src/dataframes.py:94 src/dataframes.py:97
1387
- msgid "Intervention déjà passée / Past intevention"
1388
- msgstr ""
1389
-
1390
- #: src/dataframes.py:103
1391
- #, python-brace-format
1392
- msgid ""
1393
- "To view the full Google Sheet for advanced filtering go to: {data_url} "
1394
- "**لعرض الورقة كاملة، اذهب إلى**"
1395
- msgstr ""
1396
-
1397
- #: src/dataframes.py:108
1398
- msgid ""
1399
- "We are hiding contact information to protect the privacy of the victims. If "
1400
- "you are an NGO and want to contact the victims, please contact us at "
1401
- "nt3awnoumorocco@gmail.com"
1402
- msgstr ""
1403
-
1404
- #: src/dataframes.py:111
1405
- msgid ""
1406
- "\n"
1407
- " <div style=\"text-align: left;\">\n"
1408
- " <a href=\"mailto:nt3awnoumorocco@gmail."
1409
- "com\">nt3awnoumorocco@gmail.com</a> نحن نخفي معلومات الاتصال لحماية خصوصية "
1410
- "الضحايا. إذا كنت جمعية وتريد الاتصال بالضحايا، يرجى الاتصال بنا على\n"
1411
- " </div>\n"
1412
- " "
1413
- msgstr ""
1414
-
1415
- #~ msgid "📝 **Table of verified requests**"
1416
- #~ msgstr "📝 **Tableau des demandes vérifiées**"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
messages.pot DELETED
@@ -1,1399 +0,0 @@
1
- # SOME DESCRIPTIVE TITLE.
2
- # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
- # This file is distributed under the same license as the PACKAGE package.
4
- # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
- #
6
- #: src/utils.py:69 src/utils.py:70 src/markers.py:226 src/components.py:19
7
- #, fuzzy
8
- msgid ""
9
- msgstr ""
10
- "Project-Id-Version: PACKAGE VERSION\n"
11
- "Report-Msgid-Bugs-To: \n"
12
- "POT-Creation-Date: 2023-09-26 20:34+0200\n"
13
- "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
15
- "Language-Team: LANGUAGE <LL@li.org>\n"
16
- "Language: \n"
17
- "MIME-Version: 1.0\n"
18
- "Content-Type: text/plain; charset=UTF-8\n"
19
- "Content-Transfer-Encoding: 8bit\n"
20
-
21
- #: app.py:21
22
- msgid "myapplication"
23
- msgstr ""
24
-
25
- #: app.py:23
26
- msgid "HF_TOKEN"
27
- msgstr ""
28
-
29
- #: app.py:30
30
- msgid "wide"
31
- msgstr ""
32
-
33
- #: app.py:31 src/filters.py:40 src/filters.py:62
34
- msgid "collapsed"
35
- msgstr ""
36
-
37
- #: app.py:32
38
- msgid "🤝"
39
- msgstr ""
40
-
41
- #: app.py:33
42
- msgid "Nt3awnou نتعاونو"
43
- msgstr ""
44
-
45
- #: app.py:37
46
- msgid "sleep_time"
47
- msgstr ""
48
-
49
- #: app.py:39
50
- msgid "auto_refresh"
51
- msgstr ""
52
-
53
- #: app.py:42
54
- msgid "Auto Refresh?"
55
- msgstr ""
56
-
57
- #: app.py:44
58
- msgid "Refresh rate in seconds"
59
- msgstr ""
60
-
61
- #: app.py:54 app.py:184 src/components.py:78 src/components.py:162
62
- msgid "ar"
63
- msgstr ""
64
-
65
- #: app.py:54
66
- msgid "العربية"
67
- msgstr ""
68
-
69
- #: app.py:55 src/components.py:101 src/components.py:179
70
- msgid "fr"
71
- msgstr ""
72
-
73
- #: app.py:55
74
- msgid "Français"
75
- msgstr ""
76
-
77
- #: app.py:56 app.py:61 src/components.py:55 src/components.py:146
78
- msgid "en"
79
- msgstr ""
80
-
81
- #: app.py:56
82
- msgid "English"
83
- msgstr ""
84
-
85
- #: app.py:59
86
- msgid "Choose language / اختر اللغة"
87
- msgstr ""
88
-
89
- #: app.py:64
90
- msgid "messages"
91
- msgstr ""
92
-
93
- #: app.py:64
94
- msgid "locales"
95
- msgstr ""
96
-
97
- #: app.py:69
98
- msgid "Markers"
99
- msgstr ""
100
-
101
- #: app.py:112
102
- msgid "map"
103
- msgstr ""
104
-
105
- #: app.py:186
106
- msgid ""
107
- "\n"
108
- " <style>\n"
109
- " body {\n"
110
- " text-align: right;\n"
111
- " }\n"
112
- " </style>\n"
113
- " "
114
- msgstr ""
115
-
116
- #: src/text_content.py:2
117
- msgid ""
118
- "\n"
119
- " <div style=\"text-align: left;\">\n"
120
- " Nt3awnou نتعاونو is a non-profit organization and a collaborative "
121
- "platform dedicated to aiding individuals impacted by the recent earthquake "
122
- "in Morocco. Our core mission is to streamline and coordinate timely "
123
- "assistance for everyone affected. How do we achieve this? We assist those in "
124
- "need by allowing them to communicate their location and the specific aid "
125
- "they require, either by completing a form or sending a voice message via "
126
- "WhatsApp to the number <b>0602838166</b>. Once we receive and process this "
127
- "information, it can be viewed in our dashboard, which allows NGOs to "
128
- "organize and precisely target their interventions, ensuring swift assistance "
129
- "reaches those in need. Any organization that has taken initiative in a "
130
- "particular area can notify us by completing a dedicated form. This data is "
131
- "also incorporated into the dashboard so that other NGOs can help affected "
132
- "areas that still haven't received help.\n"
133
- " <br>⚠️ Warning : There are still rocks falling down the mountains, making "
134
- "the roads to the affected areas very dangerous. We advise volunteers to "
135
- "donate directly to specialized NGOs.<br>\n"
136
- " <br> \n"
137
- " <b>✉️ You can contact us via email at </b><a href=\"mailto:"
138
- "nt3awnoumorocco@gmail.com\">nt3awnoumorocco@gmail.com</a> or via Instagram "
139
- "<a href=\"https://www.instagram.com/nt3awnou_morocco/\">@nt3awnou_morocco</"
140
- "a> <br>\n"
141
- " <b>📝 Help us report more people in need by filling this form </b><a "
142
- "href=\"https://forms.gle/nZNCUVog9ka2Vdqu6\">https://forms.gle/"
143
- "nZNCUVog9ka2Vdqu6</a> <br>\n"
144
- " <b>📝 NGOs can report their interventions by filling this form </b><a "
145
- "href=\"https://forms.gle/PsNSuHHjTTgwQMmVA\">https://forms.gle/"
146
- "PsNSuHHjTTgwQMmVA</a> <br>\n"
147
- " <b>❗️ Our team is working day and night to verify the data. Please reach "
148
- "out to us if you can help us verify the data. </b>\n"
149
- " </div>\n"
150
- " <br> \n"
151
- " "
152
- msgstr ""
153
-
154
- #: src/text_content.py:15
155
- msgid ""
156
- "\n"
157
- " <div style=\"text-align: right;-webkit-rtl-ordering: logical;\">\n"
158
- "\n"
159
- " نتعاونو هي منصة تعاونية غير ربحية لمساعدة الأفراد المتضررين من الزلزال "
160
- "الأخير في المغرب. مهمتنا هي تسهيل تقديم المساعدة في الوقت المناسب و بفاعلية "
161
- "و تنظيم لجميع المتضررين. كيفاش؟ كنعاونو الناس لي محتاجين للمساعدة إعلمونا "
162
- "بمكانهم و نوع المساعدة لي محتاجين ليها سواء عن طريق ملأ الاستمارة أو عن طريق "
163
- "إرسال تسجيل صوتي عبر واتساب إلى رقم مخصص<b>0602838166</b>. بعد معالجة هاد "
164
- "المعلومات، كنجمعوهم فخريطة كتمكن الجمعيات من تنظيم و استهداف تدخلاتهم بدقة "
165
- "باش توصل المساعدة للناس لي محتاجين في وقت أسرع. و كل جمعية قامت باللازم في "
166
- "منطقة معينة تقدر تعلمنا عن طريق ملأ استمارة مخصصة لهاد الأمر. هاد المعلومات "
167
- "كذلك كتضاف للخريطة باش باقي الجمعيات يتاجهو لمناطق أخرى مازال ماوصلاتهم "
168
- "مساعدة.\n"
169
- " <br> تحذير : نظرا لخطورة الطرقان بسبب الحجر اللي كيطيح من الجبال، ننصح "
170
- "المتطوعين اللي بغاو يساعدو المناطق المتضررة يتبرعو عن طريق الجمعيات "
171
- "المختصة⚠️ \n"
172
- " <br> \n"
173
- " <br> \n"
174
- " nt3awnoumorocco@gmail.com <b>المتطوعين ليبغاو يعاونوا يقدرو يتصلوا معنا "
175
- "عبر البريد ✉️ </b>\n"
176
- " <br>\n"
177
- " <b> <a href=\"https://www.instagram.com/nt3awnou_morocco/"
178
- "\">@nt3awnou_morocco</a> أو عبر الانستغرام </b> \n"
179
- " https://forms.gle/nZNCUVog9ka2Vdqu6 <b>: ساعدونا نبلغو الناس ليمحتاجين "
180
- "فهاد الاستمارة 📝 </b><br>\n"
181
- " https://forms.gle/PsNSuHHjTTgwQMmVA <b>: الجمعيات لي عندهم تدخلات يقدرو "
182
- "يبلغونا عبر هاد الاستمار ة📝</b><br>\n"
183
- " <b> فريقنا يعمل ليلا نهارا للتحقق من البيانات. يرجى التواصل معنا إذا كنت "
184
- "تستطيع مساعدتنا في التحقق من البيانات❗️</b>\n"
185
- " </div>\n"
186
- " <br> \n"
187
- " "
188
- msgstr ""
189
-
190
- #: src/text_content.py:32
191
- msgid ""
192
- "\n"
193
- " <div style=\"text-align: left;\">\n"
194
- " Nt3awnou نتعاونو est une plateforme collaborative à but non-lucratif "
195
- "dédiée à l'aide aux personnes touchées par le récent tremblement de terre au "
196
- "Maroc. Notre mission principale est de rationaliser et de coordonner une "
197
- "assistance rapide pour toutes les personnes touchées. Comment y parvenons-"
198
- "nous ? Nous aidons les personnes dans le besoin en leur permettant de "
199
- "communiquer leur localisation et l'aide spécifique dont elles ont besoin, "
200
- "soit en remplissant un formulaire, soit en envoyant un message vocal via "
201
- "WhatsApp à un numéro <b>0602838166</b>. Une fois reçues et traitées, ces "
202
- "informations peuvent être consultées dans notre tableau de bord, qui permet "
203
- "aux associations d'organiser et de cibler précisément leurs interventions, "
204
- "afin que l'aide parvienne rapidement à ceux qui en ont besoin. Toute "
205
- "organisation ayant pris une initiative dans une zone particulière peut nous "
206
- "en informer en remplissant un formulaire prévu à cet effet. Ces données sont "
207
- "également intégrées au tableau de bord afin que d'autres associations "
208
- "puissent aider les zones touchées qui n'ont pas encore reçu d'aide.\n"
209
- " <br> ⚠️ Avertissement : Il y a encore des chutes de pierres dans les "
210
- "montagnes, ce qui rend les routes vers les zones touchées très dangereuses. "
211
- "Nous conseillons aux volontaires de faire des dons directement aux "
212
- "associations spécialisées.\n"
213
- " <br> \n"
214
- " <br> \n"
215
- " <b>✉️ Vous pouvez nous contacter par courrier électronique à l'adresse "
216
- "suivante </b><a href=\"mailto:nt3awnoumorocco@gmail."
217
- "com\">nt3awnoumorocco@gmail.com</a> ou via Instagram <a href=\"https://www."
218
- "instagram.com/nt3awnou_morocco/\">@nt3awnou_morocco</a> <br>\n"
219
- " <b>📝 Aidez-nous à signaler plus de personnes dans le besoin en "
220
- "remplissant ce formulaire : </b><a href=\"https://forms.gle/"
221
- "nZNCUVog9ka2Vdqu6\">https://forms.gle/nZNCUVog9ka2Vdqu6</a> <br>\n"
222
- " <b>📝 Les associations peuvent signaler leurs interventions en "
223
- "remplissant ce formulaire : </b><a href=\"https://forms.gle/"
224
- "PsNSuHHjTTgwQMmVA\">https://forms.gle/PsNSuHHjTTgwQMmVA</a> <br> \n"
225
- " <b>❗️Notre équipe travaille jour et nuit pour vérifier les données. "
226
- "Veuillez nous contacter si vous pouvez nous aider à vérifier les données. </"
227
- "b>\n"
228
- " </div>\n"
229
- " <br> \n"
230
- " "
231
- msgstr ""
232
-
233
- #: src/text_content.py:46
234
- msgid ""
235
- "\n"
236
- " <div style=\"text-align: center;\">\n"
237
- " <h4>وَمَنْ أَحْيَاهَا فَكَأَنَّمَا أَحْيَا النَّاسَ جَمِيعاً</h4>\n"
238
- " </div>\n"
239
- " "
240
- msgstr ""
241
-
242
- #: src/text_content.py:53
243
- msgid ""
244
- "\n"
245
- " <hr>\n"
246
- " <div style=\"text-align: center;\">\n"
247
- " <p>By <b>Moroccans</b> for <b>Moroccans</b> 🤝</p>\n"
248
- " <p>Reach out to us at <a href=\"mailto:nt3awnoumorocco@gmail."
249
- "com\">nt3awnoumorocco@gmail.com</a></p>\n"
250
- " "
251
- msgstr ""
252
-
253
- #: src/text_content.py:60
254
- msgid ""
255
- "\n"
256
- " <style>\n"
257
- " .block-container {\n"
258
- " padding-top: 1rem;\n"
259
- " padding-bottom: 0rem;\n"
260
- " }\n"
261
- " '''\n"
262
- " [data-testid=\"metric-container\"] {\n"
263
- " width: fit-content;\n"
264
- " margin: auto;\n"
265
- " }\n"
266
- "\n"
267
- " [data-testid=\"metric-container\"] > div {\n"
268
- " width: fit-content;\n"
269
- " margin: auto;\n"
270
- " }\n"
271
- "\n"
272
- " [data-testid=\"metric-container\"] label {\n"
273
- " width: fit-content;\n"
274
- " margin: auto;\n"
275
- " }\n"
276
- " '''\n"
277
- " </style>\n"
278
- " <div class=\"block-container\">\n"
279
- " <div style=\"text-align: center; margin-bottom: 0.5rem; width: fit-"
280
- "content; margin: auto;\">\n"
281
- " <img src=\"https://i.imgur.com/ngJZ4Gh.png\" alt=\"Nt3awnou "
282
- "logo\" width=\"fit-content\" height=\"150\" style=\"margin-top: 1rem; margin-"
283
- "bottom: 1rem;\">\n"
284
- " </div>\n"
285
- " <div style=\"text-align: center\">\n"
286
- " <a href=\"https://www.instagram.com/nt3awnou_morocco/\" "
287
- "style=\"margin-right: 0.5rem; text-decoration: none;\">\n"
288
- " <img src=\"https://upload.wikimedia.org/wikipedia/commons/"
289
- "thumb/a/a5/Instagram_icon.png/2048px-Instagram_icon.png\" alt=\"Instagram "
290
- "logo\" width=\"30\" height=\"30\">\n"
291
- " </a>\n"
292
- " <a href=\"https://www.facebook.com/nt3awnou.morocco\" "
293
- "style=\"margin-right: 0.5rem; text-decoration: none;\">\n"
294
- " <img src=\"https://i0.wp.com/www.lestudioled.com/wp-content/"
295
- "uploads/2016/05/facebook-logo-png-transparent-background.png\" "
296
- "alt=\"Instagram logo\" width=\"30\" height=\"30\">\n"
297
- " </a>\n"
298
- " <a href=\"https://www.linkedin.com/in/nt3awnou-"
299
- "morocco-01062a290\" style=\"margin-right: 0.5rem; text-decoration: none;\">\n"
300
- " <img src=\"https://upload.wikimedia.org/wikipedia/commons/"
301
- "thumb/c/ca/LinkedIn_logo_initials.png/600px-LinkedIn_logo_initials.png?"
302
- "20140125013055\" alt=\"LinkedIn logo\" width=\"30\" height=\"30\">\n"
303
- " </a>\n"
304
- " <a href=\"https://linktr.ee/nt3awnou\">\n"
305
- " <img src=\"https://seeklogo.com/images/L/linktree-"
306
- "logo-6FC3ADB679-seeklogo.com.png\" alt=\"Linktree logo\" width=\"30\" "
307
- "height=\"30\">\n"
308
- " </a>\n"
309
- " </div>\n"
310
- " </div>\n"
311
- "\n"
312
- " # "
313
- msgstr ""
314
-
315
- #: src/text_content.py:105
316
- msgid ""
317
- "**If a request should be reviewed or dropped submit its id here/ إذا كان يجب "
318
- "مراجعة أو حذف طلب، أدخل رقمه هنا:**"
319
- msgstr ""
320
-
321
- #: src/utils.py:9
322
- msgid "black"
323
- msgstr ""
324
-
325
- #: src/utils.py:13
326
- msgid "Parsing Google Sheet:"
327
- msgstr ""
328
-
329
- #: src/utils.py:14
330
- msgid "edit#gid="
331
- msgstr ""
332
-
333
- #: src/utils.py:14
334
- msgid "export?format=csv&gid="
335
- msgstr ""
336
-
337
- #: src/utils.py:15
338
- msgid "warn"
339
- msgstr ""
340
-
341
- #: src/utils.py:28 src/utils.py:29 src/utils.py:57 src/utils.py:58
342
- #: src/utils.py:67 src/markers.py:27 src/components.py:130
343
- #: src/components.py:137
344
- msgid ","
345
- msgstr ""
346
-
347
- #: src/utils.py:42
348
- msgid "Add a latlng column to the dataframe"
349
- msgstr ""
350
-
351
- #: src/utils.py:44 src/utils.py:46 src/markers.py:112 src/markers.py:118
352
- #: src/markers.py:129 src/markers.py:164 src/markers.py:178 src/markers.py:224
353
- #: src/markers.py:240
354
- msgid "latlng"
355
- msgstr ""
356
-
357
- #: src/utils.py:48
358
- msgid ""
359
- "process_column should be a string or an integer, got {type(process_column)}"
360
- msgstr ""
361
-
362
- #: src/utils.py:59 src/utils.py:62 src/utils.py:63 src/utils.py:64
363
- msgid "."
364
- msgstr ""
365
-
366
- #: src/utils.py:69 src/utils.py:70
367
- msgid "[^\\d\\.\\-]"
368
- msgstr ""
369
-
370
- #: src/utils.py:74
371
- #, python-brace-format
372
- msgid "Error parsing latlng: {latlng} Reason: {e}"
373
- msgstr ""
374
-
375
- #: src/utils.py:80
376
- msgid "star"
377
- msgstr ""
378
-
379
- #: src/utils.py:81 src/utils.py:82
380
- msgid "#b3334f"
381
- msgstr ""
382
-
383
- #: src/utils.py:83
384
- msgid "white"
385
- msgstr ""
386
-
387
- #: src/utils.py:88
388
- msgid "Epicenter مركز الزلزال"
389
- msgstr ""
390
-
391
- #: src/utils.py:94
392
- msgid ""
393
- "Danger distances - earthquake magnitude 7 | مسافات الخطر - قوة الزلازل 7"
394
- msgstr ""
395
-
396
- #: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
397
- #: src/utils.py:106
398
- msgid "radius"
399
- msgstr ""
400
-
401
- #: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
402
- #: src/utils.py:109 src/utils.py:110
403
- msgid "fill_opacity"
404
- msgstr ""
405
-
406
- #: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
407
- #: src/utils.py:108
408
- msgid "weight"
409
- msgstr ""
410
-
411
- #: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
412
- #: src/utils.py:111
413
- msgid "fill_color"
414
- msgstr ""
415
-
416
- #: src/utils.py:97
417
- msgid "yellow"
418
- msgstr ""
419
-
420
- #: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
421
- msgid "tooltip"
422
- msgstr ""
423
-
424
- #: src/utils.py:97
425
- msgid "50 to 100 km - Moderate risk area | منطقة خطر معتدلة"
426
- msgstr ""
427
-
428
- #: src/utils.py:98 src/markers.py:8 src/markers.py:219
429
- msgid "orange"
430
- msgstr ""
431
-
432
- #: src/utils.py:98
433
- msgid "30 to 50 km - High risk zone | منطقة عالية المخاطر"
434
- msgstr ""
435
-
436
- #: src/utils.py:99
437
- msgid "#FF0000"
438
- msgstr ""
439
-
440
- #: src/utils.py:99
441
- msgid "10 to 30 km - Very high risk zone | منطقة شديدة الخطورة"
442
- msgstr ""
443
-
444
- #: src/utils.py:100
445
- msgid "#8B0000"
446
- msgstr ""
447
-
448
- #: src/utils.py:100
449
- msgid "0 to 10km - direct impact zone | منطقة التأثير المباشر"
450
- msgstr ""
451
-
452
- #: src/utils.py:117
453
- msgid "🔵 All the Villages / جميع القرى"
454
- msgstr ""
455
-
456
- #: src/utils.py:120
457
- msgid "lat"
458
- msgstr ""
459
-
460
- #: src/utils.py:121
461
- msgid "lng"
462
- msgstr ""
463
-
464
- #: src/utils.py:123
465
- msgid "name"
466
- msgstr ""
467
-
468
- #: src/utils.py:124
469
- #, python-brace-format
470
- msgid "https://maps.google.com/?q={lat_lng}"
471
- msgstr ""
472
-
473
- #: src/utils.py:125
474
- #, python-brace-format
475
- msgid ""
476
- "<br><b>⛰️ Douar:</b> {dour_name}<br><a href=\"{maps_url}\" target=\"_blank\" "
477
- "rel=\"noopener noreferrer\"><b>🧭 Google Maps</b></a>"
478
- msgstr ""
479
-
480
- #: src/utils.py:132
481
- msgid "#0046C8"
482
- msgstr ""
483
-
484
- #: src/utils.py:140 src/utils.py:144 src/markers.py:55 src/markers.py:140
485
- msgid "Done ✅"
486
- msgstr ""
487
-
488
- #: src/utils.py:141
489
- msgid "Planned ⏳"
490
- msgstr ""
491
-
492
- #: src/utils.py:142 src/utils.py:146 src/markers.py:59
493
- msgid "Partial 📝"
494
- msgstr ""
495
-
496
- #: src/utils.py:145 src/markers.py:51 src/markers.py:137
497
- msgid "Planned ⌛"
498
- msgstr ""
499
-
500
- #: src/utils.py:154
501
- msgid "High Emergency 🔴"
502
- msgstr ""
503
-
504
- #: src/utils.py:155
505
- msgid "Medium Emergency 🟠"
506
- msgstr ""
507
-
508
- #: src/utils.py:156
509
- msgid "Low Emergency 🟡"
510
- msgstr ""
511
-
512
- #: src/utils.py:158 src/markers.py:220
513
- msgid "High"
514
- msgstr ""
515
-
516
- #: src/utils.py:159 src/markers.py:219
517
- msgid "Medium"
518
- msgstr ""
519
-
520
- #: src/utils.py:160 src/markers.py:218 src/markers.py:251
521
- msgid "Low"
522
- msgstr ""
523
-
524
- #: src/utils.py:179 src/utils.py:186
525
- msgid "topright"
526
- msgstr ""
527
-
528
- #: src/utils.py:180
529
- msgid "Search | البحث"
530
- msgstr ""
531
-
532
- #: src/utils.py:187
533
- msgid "Expand me | تكبير الخريطة"
534
- msgstr ""
535
-
536
- #: src/utils.py:188
537
- msgid "Exit me | تصغير الخريطة"
538
- msgstr ""
539
-
540
- #: src/utils.py:194
541
- #, python-brace-format
542
- msgid "https://marocmap.ikiker.com/maroc/{z}/{x}/{y}.png"
543
- msgstr ""
544
-
545
- #: src/utils.py:197 src/utils.py:198
546
- msgid "Maroc Map"
547
- msgstr ""
548
-
549
- #: src/utils.py:214
550
- msgid "topleft"
551
- msgstr ""
552
-
553
- #: src/utils.py:217
554
- msgid "title"
555
- msgstr ""
556
-
557
- #: src/utils.py:217
558
- msgid "My location | موقعي"
559
- msgstr ""
560
-
561
- #: src/utils.py:217
562
- msgid "popup"
563
- msgstr ""
564
-
565
- #: src/map_utils.py:5
566
- msgid ""
567
- "\n"
568
- " <li><span style='background:#CE3C28;opacity:0.7;'></span>Rescue</li>\n"
569
- " <li><span style='background:#ED922E;opacity:0.7;'></span>Medical "
570
- "Assistance</li>\n"
571
- " <li><span style='background:#FFCA92;opacity:0.7;'></span>Shelter</li>\n"
572
- " <li><span style='background:#37A8DA;opacity:0.7;'></span>Food & Water</"
573
- "li>\n"
574
- " <li><span style='background:#575757;opacity:0.7;'></span>Dangers</li>\n"
575
- " <li><span style='background:#6EAA25;opacity:0.7;'></span>Done</li>\n"
576
- " <li><span style='background:#023020;opacity:0.7;'></span>Partial</li>\n"
577
- " <li><span style='background:#FF91E8;opacity:0.7;'></span>Planned</li>\n"
578
- " "
579
- msgstr ""
580
-
581
- #: src/map_utils.py:15
582
- msgid ""
583
- "\n"
584
- " <li><span style='background:#CE3C28;opacity:0.7;'></span>High "
585
- "Emergency</li>\n"
586
- " <li><span style='background:#ED922E;opacity:0.7;'></span>Medium "
587
- "Emergency</li>\n"
588
- " <li><span style='background:#FFCA92;opacity:0.7;'></span>Low "
589
- "Emergency</li>\n"
590
- " <li><span style='background:#6EAA25;opacity:0.7;'></span>Done</li>\n"
591
- " <li><span style='background:#023020;opacity:0.7;'></span>Partial</li>\n"
592
- " <li><span style='background:#FF91E8;opacity:0.7;'></span>Planned</li>\n"
593
- " "
594
- msgstr ""
595
-
596
- #: src/map_utils.py:24
597
- msgid ""
598
- "\n"
599
- " {% macro html(this, kwargs) %}\n"
600
- "\n"
601
- " <!doctype html>\n"
602
- " <html lang=\"en\">\n"
603
- " <head>\n"
604
- " <meta charset=\"utf-8\">\n"
605
- " <meta name=\"viewport\" content=\"width=device-width, initial-"
606
- "scale=1\">\n"
607
- " <title>jQuery UI Draggable - Default functionality</title>\n"
608
- " <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.12.1/themes/base/"
609
- "jquery-ui.css\">\n"
610
- "\n"
611
- " <script src=\"https://code.jquery.com/jquery-1.12.4.js\"></script>\n"
612
- " <script src=\"https://code.jquery.com/ui/1.12.1/jquery-ui.js\"></"
613
- "script>\n"
614
- " \n"
615
- " <script>\n"
616
- " $( function() {\n"
617
- " $( \"#maplegend\" ).draggable({\n"
618
- " start: function (event, ui) {\n"
619
- " $(this).css({\n"
620
- " right: \"auto\",\n"
621
- " top: \"auto\",\n"
622
- " bottom: \"auto\"\n"
623
- " });\n"
624
- " }\n"
625
- " });\n"
626
- " });\n"
627
- "\n"
628
- " </script>\n"
629
- " </head>\n"
630
- " <body>\n"
631
- "\n"
632
- " \n"
633
- " <div id='maplegend' class='maplegend' \n"
634
- " style='position: absolute; z-index:9999; border:2px solid grey; "
635
- "background-color:rgba(255, 255, 255, 0.8);\n"
636
- " border-radius:6px; padding: 10px; font-size:14px; right: 20px; bottom: "
637
- "20px;'>\n"
638
- " \n"
639
- " <div class='legend-title'>Legend / مفتاح الخريطة</div>\n"
640
- " <div class='legend-scale'>\n"
641
- " <ul class='legend-labels'>\n"
642
- "\n"
643
- " "
644
- msgstr ""
645
-
646
- #: src/map_utils.py:65
647
- msgid ""
648
- "\n"
649
- " </ul>\n"
650
- " </div>\n"
651
- " </div>\n"
652
- " \n"
653
- " </body>\n"
654
- " </html>\n"
655
- "\n"
656
- " <style type='text/css'>\n"
657
- " .maplegend .legend-title {\n"
658
- " text-align: left;\n"
659
- " margin-bottom: 5px;\n"
660
- " font-weight: bold;\n"
661
- " font-size: 90%;\n"
662
- " color: #333;\n"
663
- " }\n"
664
- " .maplegend .legend-scale ul {\n"
665
- " margin: 0;\n"
666
- " margin-bottom: 5px;\n"
667
- " padding: 0;\n"
668
- " float: left;\n"
669
- " list-style: none;\n"
670
- " }\n"
671
- " .maplegend .legend-scale ul li {\n"
672
- " font-size: 80%;\n"
673
- " list-style: none;\n"
674
- " margin-left: 0;\n"
675
- " line-height: 18px;\n"
676
- " margin-bottom: 2px;\n"
677
- " color: #111;\n"
678
- " }\n"
679
- " .maplegend ul.legend-labels li span {\n"
680
- " display: block;\n"
681
- " float: left;\n"
682
- " height: 16px;\n"
683
- " width: 30px;\n"
684
- " margin-right: 5px;\n"
685
- " margin-left: 0;\n"
686
- " border: 1px solid #999;\n"
687
- " }\n"
688
- " .maplegend .legend-source {\n"
689
- " font-size: 80%;\n"
690
- " color: #777;\n"
691
- " clear: both;\n"
692
- " }\n"
693
- " .maplegend a {\n"
694
- " color: #777;\n"
695
- " }\n"
696
- "\n"
697
- " .leaflet-control-geocoder-form input {\n"
698
- " color: black;\n"
699
- " }\n"
700
- " \n"
701
- " </style>\n"
702
- " {% endmacro %}"
703
- msgstr ""
704
-
705
- #: src/map_utils.py:125
706
- msgid "get_legend_macro"
707
- msgstr ""
708
-
709
- #: src/markers.py:7 src/markers.py:15 src/filters.py:6 src/filters.py:14
710
- msgid "إغاثة"
711
- msgstr ""
712
-
713
- #: src/markers.py:7 src/markers.py:138 src/markers.py:141 src/markers.py:220
714
- msgid "red"
715
- msgstr ""
716
-
717
- #: src/markers.py:8 src/markers.py:16 src/filters.py:7 src/filters.py:15
718
- msgid "مساعدة طبية"
719
- msgstr ""
720
-
721
- #: src/markers.py:9 src/markers.py:17 src/filters.py:8 src/filters.py:16
722
- msgid "مأوى"
723
- msgstr ""
724
-
725
- #: src/markers.py:9 src/markers.py:208 src/markers.py:218 src/markers.py:265
726
- msgid "beige"
727
- msgstr ""
728
-
729
- #: src/markers.py:10 src/markers.py:18 src/filters.py:9 src/filters.py:17
730
- msgid "طعام وماء"
731
- msgstr ""
732
-
733
- #: src/markers.py:10
734
- msgid "blue"
735
- msgstr ""
736
-
737
- #: src/markers.py:11 src/markers.py:19 src/filters.py:10 src/filters.py:18
738
- msgid "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)"
739
- msgstr ""
740
-
741
- #: src/markers.py:11
742
- msgid "gray"
743
- msgstr ""
744
-
745
- #: src/markers.py:15
746
- msgid "bell"
747
- msgstr ""
748
-
749
- #: src/markers.py:16 src/markers.py:138 src/markers.py:141
750
- msgid "heart"
751
- msgstr ""
752
-
753
- #: src/markers.py:17
754
- msgid "home"
755
- msgstr ""
756
-
757
- #: src/markers.py:18
758
- msgid "cutlery"
759
- msgstr ""
760
-
761
- #: src/markers.py:19
762
- msgid "Warning"
763
- msgstr ""
764
-
765
- #: src/markers.py:21
766
- msgid "A"
767
- msgstr ""
768
-
769
- #: src/markers.py:35
770
- msgid "Display NGO interventions on the map"
771
- msgstr ""
772
-
773
- #: src/markers.py:38 src/markers.py:80
774
- msgid "K"
775
- msgstr ""
776
-
777
- #: src/markers.py:40 src/markers.py:77
778
- msgid "H"
779
- msgstr ""
780
-
781
- #: src/markers.py:40
782
- msgid "Intervention prévue dans le futur / Planned future intervention"
783
- msgstr ""
784
-
785
- #: src/markers.py:44 src/filters.py:52
786
- msgid "Partiellement satisfait / Partially Served"
787
- msgstr ""
788
-
789
- #: src/markers.py:50 src/markers.py:138
790
- msgid "pink"
791
- msgstr ""
792
-
793
- #: src/markers.py:52 src/filters.py:51
794
- msgid "Critique, Besoin d'aide en urgence / Critical, in urgent need of help"
795
- msgstr ""
796
-
797
- #: src/markers.py:54 src/markers.py:141
798
- msgid "green"
799
- msgstr ""
800
-
801
- #: src/markers.py:58
802
- msgid "darkgreen"
803
- msgstr ""
804
-
805
- #: src/markers.py:71
806
- msgid "B"
807
- msgstr ""
808
-
809
- #: src/markers.py:72
810
- msgid "C"
811
- msgstr ""
812
-
813
- #: src/markers.py:73
814
- msgid "D"
815
- msgstr ""
816
-
817
- #: src/markers.py:74
818
- msgid "E"
819
- msgstr ""
820
-
821
- #: src/markers.py:75
822
- msgid "F"
823
- msgstr ""
824
-
825
- #: src/markers.py:76
826
- msgid "G"
827
- msgstr ""
828
-
829
- #: src/markers.py:78
830
- msgid "I"
831
- msgstr ""
832
-
833
- #: src/markers.py:79
834
- msgid "J"
835
- msgstr ""
836
-
837
- #: src/markers.py:81
838
- msgid "L"
839
- msgstr ""
840
-
841
- #: src/markers.py:82
842
- msgid "M"
843
- msgstr ""
844
-
845
- #: src/markers.py:83
846
- msgid "N"
847
- msgstr ""
848
-
849
- #: src/markers.py:84
850
- msgid "O"
851
- msgstr ""
852
-
853
- #: src/markers.py:85
854
- msgid "P"
855
- msgstr ""
856
-
857
- #: src/markers.py:86
858
- msgid "Q"
859
- msgstr ""
860
-
861
- #: src/markers.py:87
862
- msgid "R"
863
- msgstr ""
864
-
865
- #: src/markers.py:88
866
- msgid "S"
867
- msgstr ""
868
-
869
- #: src/markers.py:89
870
- msgid "T"
871
- msgstr ""
872
-
873
- #: src/markers.py:90
874
- msgid "U"
875
- msgstr ""
876
-
877
- #: src/markers.py:92
878
- msgid ", "
879
- msgstr ""
880
-
881
- #: src/markers.py:93
882
- #, python-brace-format
883
- msgid ""
884
- "\n"
885
- " <b>Org:</b> {org}<br>\n"
886
- " <b>Association ID:</b> {association_id}<br>\n"
887
- " <b>Speciality:</b> {speciality}<br>\n"
888
- " <b>Phone 1:</b> {phone_1}<br>\n"
889
- " <b>Phone 2:</b> {phone_2}<br>\n"
890
- " <b>Email:</b> {email}<br>\n"
891
- " <b>Intervention Date:</b> {intervention_date}<br>\n"
892
- " <b>Intervention Status:</b> {intervention_status}<br>\n"
893
- " <b>Help Type:</b> {help_type}<br>\n"
894
- " <b>Current Situation:</b> {current_situation}<br>\n"
895
- " <b>Future Help Type:</b> {future_help_type}<br>\n"
896
- " <b>Douar Name:</b> {full_douar_name}<br>\n"
897
- " <b>Accessibility to Douar:</b> {accessibility_to_douar}<br>\n"
898
- " <b>Type of Accessibility:</b> {type_of_accessibility}<br>\n"
899
- " <b>Population:</b> {population}<br>\n"
900
- " <b>Intervention Additional Info:</b> {intervention_additional_info}"
901
- "<br>\n"
902
- " <b>Any Additional Info:</b> {any_additional_info}<br>\n"
903
- " "
904
- msgstr ""
905
-
906
- #: src/markers.py:133
907
- msgid "Planned"
908
- msgstr ""
909
-
910
- #: src/markers.py:138 src/markers.py:141 src/markers.py:208 src/markers.py:265
911
- msgid "glyphicon"
912
- msgstr ""
913
-
914
- #: src/markers.py:151
915
- #, python-brace-format
916
- msgid ""
917
- "\n"
918
- " <b>Intervention Date:</b> {intervention_date}<br>\n"
919
- " <b>Org:</b> {org}<br>\n"
920
- " <b>Intervention:</b> {intervention_type}<br>\n"
921
- " <b>Invervention Status:</b> {status}<br>\n"
922
- " <b>Details:</b> {details}<br>\n"
923
- " <b>Location:</b> {location}<br>\n"
924
- " <b>Remarks:</b> {remarks}<br>\n"
925
- " <b>Contact:</b> {contact}<br>\n"
926
- " "
927
- msgstr ""
928
-
929
- #: src/markers.py:174
930
- msgid "Display victim requests on the map"
931
- msgstr ""
932
-
933
- #: src/markers.py:176 src/dataframes.py:35
934
- msgid "ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"
935
- msgstr ""
936
-
937
- #: src/markers.py:179
938
- #, python-brace-format
939
- msgid "https://maps.google.com/?q={long_lat}"
940
- msgstr ""
941
-
942
- #: src/markers.py:186
943
- msgid ""
944
- "\n"
945
- " <b>Request Type:</b> {request_type}<br>\n"
946
- " <b>Id:</b> {row[\"id\"]}<br>\n"
947
- " <b>Source:</b> {source}<br>\n"
948
- " <b>Person in place:</b> {person_in_place}<br>\n"
949
- " <b>Douar:</b> {douar}<br>\n"
950
- " <b>Douar Info:</b> {douar_info}<br>\n"
951
- " <a href=\"{maps_url}\" target=\"_blank\" rel=\"noopener "
952
- "noreferrer\"><b>Google Maps</b></a>\n"
953
- " "
954
- msgstr ""
955
-
956
- #: src/markers.py:196 src/markers.py:250
957
- msgid "list"
958
- msgstr ""
959
-
960
- #: src/markers.py:203 src/markers.py:204
961
- msgid " لأي جماعة / قيادة / دوار تنتمون ؟"
962
- msgstr ""
963
-
964
- #: src/markers.py:214
965
- msgid "Display verified victim requests on the map"
966
- msgstr ""
967
-
968
- #: src/markers.py:228 src/markers.py:229 src/dataframes.py:38
969
- msgid "Help Details"
970
- msgstr ""
971
-
972
- #: src/markers.py:231
973
- #, python-brace-format
974
- msgid "<b>Request Type:</b> {request_type}<br>"
975
- msgstr ""
976
-
977
- #: src/markers.py:232 src/markers.py:254
978
- msgid "Location Details"
979
- msgstr ""
980
-
981
- #: src/markers.py:233
982
- #, python-brace-format
983
- msgid "<b>Location:</b> {val}<br>"
984
- msgstr ""
985
-
986
- #: src/markers.py:234 src/markers.py:251
987
- msgid "Emergency Degree"
988
- msgstr ""
989
-
990
- #: src/markers.py:235
991
- #, python-brace-format
992
- msgid "<b>Emergency Degree:</b> {val}<br>"
993
- msgstr ""
994
-
995
- #: src/markers.py:236
996
- msgid "Verification Date"
997
- msgstr ""
998
-
999
- #: src/markers.py:237
1000
- #, python-brace-format
1001
- msgid "<b>Verification Date:</b> {val}<br>"
1002
- msgstr ""
1003
-
1004
- #: src/markers.py:238 src/markers.py:247 src/dataframes.py:31
1005
- #: src/dataframes.py:32 src/dataframes.py:87
1006
- msgid "id"
1007
- msgstr ""
1008
-
1009
- #: src/markers.py:239
1010
- #, python-brace-format
1011
- msgid "<b>Id:</b> {val}<br>"
1012
- msgstr ""
1013
-
1014
- #: src/markers.py:241
1015
- #, python-brace-format
1016
- msgid "https://maps.google.com/?q={val}"
1017
- msgstr ""
1018
-
1019
- #: src/markers.py:243
1020
- #, python-brace-format
1021
- msgid ""
1022
- "<a href=\"{maps_url}\" target=\"_blank\" rel=\"noopener "
1023
- "noreferrer\"><b>Google Maps</b></a><br>"
1024
- msgstr ""
1025
-
1026
- #: src/markers.py:248
1027
- msgid ""
1028
- "<a href='https://docs.google.com/forms/d/"
1029
- "e/1FAIpQLSdyAcOAULumk4A1DsfrwUsGdZ-9G5xOUuD3vHdQOp3nGNAZXw/viewform?"
1030
- "usp=pp_url&entry.1499427789={id_in_sheet}&entry.1666684596={datetime.now()."
1031
- "strftime('%Y-%m-%d')}' target='_blank' rel='noopener noreferrer'><b>Mark as "
1032
- "solved</b></a><br>"
1033
- msgstr ""
1034
-
1035
- #: src/components.py:11
1036
- msgid "Id review submission form"
1037
- msgstr ""
1038
-
1039
- #: src/components.py:13
1040
- msgid "🔍 Review of requests | مراجعة طلب مساعدة"
1041
- msgstr ""
1042
-
1043
- #: src/components.py:16
1044
- msgid "Enter id / أدخل الرقم"
1045
- msgstr ""
1046
-
1047
- #: src/components.py:17
1048
- msgid "Explain why / أدخل سبب المراجعة"
1049
- msgstr ""
1050
-
1051
- #: src/components.py:18
1052
- msgid "Submit / أرسل"
1053
- msgstr ""
1054
-
1055
- #: src/components.py:20
1056
- msgid "Please enter a reason / الرجاء إدخال سبب"
1057
- msgstr ""
1058
-
1059
- #: src/components.py:22
1060
- msgid ""
1061
- "review_id_{id_to_review}_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.txt"
1062
- msgstr ""
1063
-
1064
- #: src/components.py:23
1065
- msgid "w"
1066
- msgstr ""
1067
-
1068
- #: src/components.py:24
1069
- #, python-brace-format
1070
- msgid "id: {id_to_review}, explanation: {reason_for_review}\n"
1071
- msgstr ""
1072
-
1073
- #: src/components.py:28
1074
- msgid "nt3awnou/review_requests"
1075
- msgstr ""
1076
-
1077
- #: src/components.py:29
1078
- msgid "dataset"
1079
- msgstr ""
1080
-
1081
- #: src/components.py:31
1082
- msgid ""
1083
- "Submitted at https://huggingface.co/datasets/nt3awnou/review_requests/ تم "
1084
- "الإرسال"
1085
- msgstr ""
1086
-
1087
- #: src/components.py:35
1088
- msgid "💻 For Developers only, embed code for the map"
1089
- msgstr ""
1090
-
1091
- #: src/components.py:37
1092
- msgid ""
1093
- "\n"
1094
- " <iframe id=\"nt3awnou-map\"\n"
1095
- " src=\"https://nt3awnou-embed-rescue-map.hf.space/?embed=true\" "
1096
- "width=\"1200\" height=\"720\"\n"
1097
- " frameborder=\"0\"\n"
1098
- " width=\"850\"\n"
1099
- " height=\"450\"\n"
1100
- " title=\"Nt3awno Rescue Map\">\n"
1101
- " </iframe>\n"
1102
- " <script src=\"https://cdn.jsdelivr.net/npm/iframe-resizer@4.3.4/js/"
1103
- "iframeResizer.min.js\"></script>\n"
1104
- " <script>\n"
1105
- " iFrameResize({}, \"#nt3awnou-map\");\n"
1106
- " </script>\n"
1107
- " "
1108
- msgstr ""
1109
-
1110
- #: src/components.py:50
1111
- msgid "html"
1112
- msgstr ""
1113
-
1114
- #: src/components.py:64
1115
- msgid "# Number of help requests"
1116
- msgstr ""
1117
-
1118
- #: src/components.py:69
1119
- msgid "# Number of interventions"
1120
- msgstr ""
1121
-
1122
- #: src/components.py:75
1123
- msgid "# Number of solved requests"
1124
- msgstr ""
1125
-
1126
- #: src/components.py:87
1127
- msgid "# عدد طلبات المساعدة"
1128
- msgstr ""
1129
-
1130
- #: src/components.py:92
1131
- msgid "# عدد التدخلات"
1132
- msgstr ""
1133
-
1134
- #: src/components.py:98
1135
- msgid "# عدد الطلبات المستجاب لها"
1136
- msgstr ""
1137
-
1138
- #: src/components.py:110
1139
- msgid "# Nombre de demandes d'aide"
1140
- msgstr ""
1141
-
1142
- #: src/components.py:115
1143
- msgid "# Nombre d'interventions"
1144
- msgstr ""
1145
-
1146
- #: src/components.py:121
1147
- msgid "# Nombre de demandes résolues"
1148
- msgstr ""
1149
-
1150
- #: src/components.py:125
1151
- msgid "📊 **Charts**"
1152
- msgstr ""
1153
-
1154
- #: src/components.py:130 src/components.py:131
1155
- msgid "supplies_category"
1156
- msgstr ""
1157
-
1158
- #: src/components.py:130 src/components.py:137
1159
- msgid "[] '"
1160
- msgstr ""
1161
-
1162
- #: src/components.py:130 src/components.py:137
1163
- msgid "category"
1164
- msgstr ""
1165
-
1166
- #: src/components.py:131
1167
- msgid "Supplies Categories"
1168
- msgstr ""
1169
-
1170
- #: src/components.py:137 src/components.py:138
1171
- msgid "need_category"
1172
- msgstr ""
1173
-
1174
- #: src/components.py:138
1175
- msgid "Needs Categories"
1176
- msgstr ""
1177
-
1178
- #: src/components.py:145
1179
- msgid "📝 **Donations**"
1180
- msgstr ""
1181
-
1182
- #: src/components.py:148
1183
- msgid ""
1184
- "\n"
1185
- " <div style=\"text-align: center;\">\n"
1186
- " <h4>The official bank account dedicated to tackle the "
1187
- "consequences of the earthquake is:</h4>\n"
1188
- " <b>Account number:</b>\n"
1189
- " <h2>126</h2>\n"
1190
- " <b>RIB:</b> 001-810-0078000201106203-18\n"
1191
- " <br>\n"
1192
- " <b>For the money transfers coming from outside Morocco</b>\n"
1193
- " <br>\n"
1194
- " <b>IBAN:</b> MA64001810007800020110620318\n"
1195
- " <br>\n"
1196
- " "
1197
- msgstr ""
1198
-
1199
- #: src/components.py:164
1200
- msgid ""
1201
- "\n"
1202
- " <div style=\"text-align: center;\">\n"
1203
- " <h4>الحساب البنكي الرسمي المخصص لمواجهة عواقب الزلزال</h4>\n"
1204
- " <b>رقم الحساب</b>\n"
1205
- " <h2>126</h2>\n"
1206
- " <b>RIB:</b> 001-810-0078000201106203-18\n"
1207
- " <br>\n"
1208
- " <b>للتحويلات القادمة من خارج المغرب</b>\n"
1209
- " <br>\n"
1210
- " <b>IBAN:</b> MA64001810007800020110620318\n"
1211
- " <br>\n"
1212
- " </div>\n"
1213
- " "
1214
- msgstr ""
1215
-
1216
- #: src/components.py:181
1217
- msgid ""
1218
- "\n"
1219
- " <div style=\"text-align: center;\">\n"
1220
- " <h4>Le compte bancaire officiel dédié à la lutte contre les "
1221
- "conséquences du séisme est le suivant:</h4>\n"
1222
- " <b>Numéro de compte:</b>\n"
1223
- " <h2>126</h2>\n"
1224
- " <b>RIB:</b> 001-810-0078000201106203-18\n"
1225
- " <br>\n"
1226
- " <b>Pour les transferts d'argent en provenance de l'étranger</b>\n"
1227
- " <br>\n"
1228
- " <b>IBAN:</b> MA64001810007800020110620318\n"
1229
- " <br>\n"
1230
- " "
1231
- msgstr ""
1232
-
1233
- #: src/filters.py:6
1234
- msgid "Rescue"
1235
- msgstr ""
1236
-
1237
- #: src/filters.py:7
1238
- msgid "Medical Assistance"
1239
- msgstr ""
1240
-
1241
- #: src/filters.py:8
1242
- msgid "Shelter"
1243
- msgstr ""
1244
-
1245
- #: src/filters.py:9
1246
- msgid "Food & Water"
1247
- msgstr ""
1248
-
1249
- #: src/filters.py:10
1250
- msgid "Danger"
1251
- msgstr ""
1252
-
1253
- #: src/filters.py:25
1254
- msgid "Display unverified requests"
1255
- msgstr ""
1256
-
1257
- #: src/filters.py:30
1258
- msgid "Display Interventions"
1259
- msgstr ""
1260
-
1261
- #: src/filters.py:34
1262
- msgid "👉 **Choose request type**"
1263
- msgstr ""
1264
-
1265
- #: src/filters.py:36
1266
- msgid "Choose request type"
1267
- msgstr ""
1268
-
1269
- #: src/filters.py:47
1270
- msgid "👉 **State of villages visited by NGOs**"
1271
- msgstr ""
1272
-
1273
- #: src/filters.py:51
1274
- msgid "🚨 Critical"
1275
- msgstr ""
1276
-
1277
- #: src/filters.py:52
1278
- msgid "⚠️ Partially served"
1279
- msgstr ""
1280
-
1281
- #: src/filters.py:53
1282
- msgid "Entièrement satisfait / Fully served"
1283
- msgstr ""
1284
-
1285
- #: src/filters.py:53
1286
- msgid "✅ Fully served"
1287
- msgstr ""
1288
-
1289
- #: src/filters.py:58
1290
- msgid "Choose status"
1291
- msgstr ""
1292
-
1293
- #: src/dataframes.py:6
1294
- msgid "VERIFIED_REQUESTS_URL"
1295
- msgstr ""
1296
-
1297
- #: src/dataframes.py:7
1298
- msgid "REQUESTS_URL"
1299
- msgstr ""
1300
-
1301
- #: src/dataframes.py:8
1302
- msgid "INTERVENTIONS_URL"
1303
- msgstr ""
1304
-
1305
- #: src/dataframes.py:9
1306
- msgid "INTERVENTIONS_PROCESSED_URL"
1307
- msgstr ""
1308
-
1309
- #: src/dataframes.py:10
1310
- msgid "VERIFIED_REQUESTS_PROCESSED_URL"
1311
- msgstr ""
1312
-
1313
- #: src/dataframes.py:11
1314
- msgid "data/regions.json"
1315
- msgstr ""
1316
-
1317
- #: src/dataframes.py:18 src/dataframes.py:20
1318
- msgid "Automatic Extracted Coordinates"
1319
- msgstr ""
1320
-
1321
- #: src/dataframes.py:24 src/dataframes.py:25
1322
- msgid "Status"
1323
- msgstr ""
1324
-
1325
- #: src/dataframes.py:56
1326
- msgid "Display the dataframe in a table"
1327
- msgstr ""
1328
-
1329
- #: src/dataframes.py:63
1330
- msgid "🔍 Search for information / بحث عن المعلومات"
1331
- msgstr ""
1332
-
1333
- #: src/dataframes.py:63
1334
- #, python-brace-format
1335
- msgid "query_{df_hash}"
1336
- msgstr ""
1337
-
1338
- #: src/dataframes.py:67
1339
- msgid "🔍 Search for an id / بحث عن رقم"
1340
- msgstr ""
1341
-
1342
- #: src/dataframes.py:72
1343
- #, python-brace-format
1344
- msgid "id_{df_hash}"
1345
- msgstr ""
1346
-
1347
- #: src/dataframes.py:76
1348
- msgid "🗓️ Status / حالة"
1349
- msgstr ""
1350
-
1351
- #: src/dataframes.py:76
1352
- msgid "all / الكل"
1353
- msgstr ""
1354
-
1355
- #: src/dataframes.py:76 src/dataframes.py:93
1356
- msgid "Done / تم"
1357
- msgstr ""
1358
-
1359
- #: src/dataframes.py:76 src/dataframes.py:96
1360
- msgid "Planned / مخطط لها"
1361
- msgstr ""
1362
-
1363
- #: src/dataframes.py:76
1364
- #, python-brace-format
1365
- msgid "status_{df_hash}"
1366
- msgstr ""
1367
-
1368
- #: src/dataframes.py:92
1369
- msgid "Intervention status"
1370
- msgstr ""
1371
-
1372
- #: src/dataframes.py:94 src/dataframes.py:97
1373
- msgid "Intervention déjà passée / Past intevention"
1374
- msgstr ""
1375
-
1376
- #: src/dataframes.py:103
1377
- #, python-brace-format
1378
- msgid ""
1379
- "To view the full Google Sheet for advanced filtering go to: {data_url} "
1380
- "**لعرض الورقة كاملة، اذهب إلى**"
1381
- msgstr ""
1382
-
1383
- #: src/dataframes.py:108
1384
- msgid ""
1385
- "We are hiding contact information to protect the privacy of the victims. If "
1386
- "you are an NGO and want to contact the victims, please contact us at "
1387
- "nt3awnoumorocco@gmail.com"
1388
- msgstr ""
1389
-
1390
- #: src/dataframes.py:111
1391
- msgid ""
1392
- "\n"
1393
- " <div style=\"text-align: left;\">\n"
1394
- " <a href=\"mailto:nt3awnoumorocco@gmail."
1395
- "com\">nt3awnoumorocco@gmail.com</a> نحن نخفي معلومات الاتصال لحماية خصوصية "
1396
- "الضحايا. إذا كنت جمعية وتريد الاتصال بالضحايا، يرجى الاتصال بنا على\n"
1397
- " </div>\n"
1398
- " "
1399
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
parse_xgettext.bash DELETED
@@ -1,15 +0,0 @@
1
- # To update locales files you can just run
2
- # bash parse_xgettext.bash
3
-
4
- # Find python files and phtml files and put them in a list
5
- find . -type f \( -name '*.py' -or -name '*.phtml' \) -print > list
6
- # Parse the list and generate a pot file
7
- xgettext --files-from=list --language=Python -a -o ./messages.pot
8
- # Update locales files
9
- msgmerge --update --no-fuzzy-matching --backup=off ./locales/fr/LC_MESSAGES/messages.po ./messages.pot
10
- msgmerge --update --no-fuzzy-matching --backup=off ./locales/ar/LC_MESSAGES/messages.po ./messages.pot
11
- # Compile locales files
12
- msgfmt -o ./locales/fr/LC_MESSAGES/messages.mo ./locales/fr/LC_MESSAGES/messages.po
13
- msgfmt -o ./locales/ar/LC_MESSAGES/messages.mo ./locales/ar/LC_MESSAGES/messages.po
14
- # Remove the list
15
- rm list
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
requirements.txt CHANGED
@@ -1,3 +1,2 @@
1
- folium==0.14.0
2
- streamlit_folium
3
- plotly
 
1
+ folium
2
+ streamlit_folium
 
src/components.py DELETED
@@ -1,274 +0,0 @@
1
- import streamlit as st
2
- from datetime import datetime
3
- from huggingface_hub import HfApi
4
- from src.text_content import REVIEW_TEXT, INTRO_TEXT_AR, INTRO_TEXT_EN, INTRO_TEXT_FR
5
- from src.dataframes import INTERVENTIONS_PROCESSED_URL, VERIFIED_REQUESTS_PROCESSED_URL
6
- from src.utils import parse_gg_sheet
7
-
8
- import plotly.express as px
9
-
10
- PIE_CHART_COLOR_MAP = {
11
- "REFUGE / SHELTER": "#83C9FD",
12
- "COUVERTURES / COVERS": "#FFABAB",
13
- "OTHER": "#7FEFA5",
14
- "SECOURS / RESCUE": "#FFD171",
15
- "KITCHEN TOOLS / USTENSILES DE CUISINE": "#FF8718",
16
- "ALIMENTATION ET EAU / FOOD AND WATER": "#0068C7",
17
- "ASSISTANCE MÉDICALE / MEDICAL ASSISTANCE": "#2CB09E",
18
- "VÊTEMENTS / CLOTHES": "#FF2B2B",
19
- "PHARMACEUTICALS / MEDICAMENTS": "#6D40BD"
20
- }
21
-
22
- def id_review_submission(api: HfApi):
23
- """Id review submission form"""
24
- # collapse the text
25
- with st.expander("🔍 Review of requests | مراجعة طلب مساعدة"):
26
- st.markdown(REVIEW_TEXT)
27
-
28
- id_to_review = st.number_input("Enter id / أدخل الرقم", min_value=0, value=0, step=1)
29
- reason_for_review = st.text_area("Explain why / أدخل سبب المراجعة")
30
- if st.button("Submit / أرسل"):
31
- if reason_for_review == "":
32
- st.error("Please enter a reason / الرجاء إدخال سبب")
33
- else:
34
- filename = f"review_id_{id_to_review}_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.txt"
35
- with open(filename, "w") as f:
36
- f.write(f"id: {id_to_review}, explanation: {reason_for_review}\n")
37
- api.upload_file(
38
- path_or_fileobj=filename,
39
- path_in_repo=filename,
40
- repo_id="nt3awnou/review_requests",
41
- repo_type="dataset",
42
- )
43
- st.success("Submitted at https://huggingface.co/datasets/nt3awnou/review_requests/ تم الإرسال")
44
-
45
-
46
- def show_embed_code():
47
- with st.expander(_("💻 For Developers only, embed code for the map")):
48
- st.code(
49
- """
50
- <iframe id="nt3awnou-map"
51
- src="https://nt3awnou-embed-rescue-map.hf.space/?embed=true" width="1200" height="720"
52
- frameborder="0"
53
- width="850"
54
- height="450"
55
- title="Nt3awno Rescue Map">
56
- </iframe>
57
- <script src="https://cdn.jsdelivr.net/npm/iframe-resizer@4.3.4/js/iframeResizer.min.js"></script>
58
- <script>
59
- iFrameResize({}, "#nt3awnou-map");
60
- </script>
61
- """,
62
- language="html",
63
- )
64
-
65
-
66
- def show_dataframes_metrics(len_requests, len_interventions, len_solved_verified_requests, lang, show_col_3=False):
67
- if lang == "en":
68
- # with st.expander("📝 Nt3awnou Platform Description"):
69
- st.markdown(INTRO_TEXT_EN, unsafe_allow_html=True)
70
- if show_col_3:
71
- col1, col2, col3 = st.columns([1, 1, 1])
72
- else:
73
- col1, col2 = st.columns([1, 1])
74
- with col1:
75
- st.metric(
76
- "# Number of help requests",
77
- len_requests,
78
- )
79
- with col2:
80
- st.metric(
81
- "# Number of interventions",
82
- len_interventions + len_solved_verified_requests,
83
- )
84
- if show_col_3:
85
- with col3:
86
- st.metric(
87
- "# Number of solved requests",
88
- len_solved_verified_requests,
89
- )
90
- elif lang == "ar":
91
- # with st.expander("📝 شرح منصة نتعاونو"):
92
- st.markdown(INTRO_TEXT_AR, unsafe_allow_html=True)
93
- if show_col_3:
94
- col1, col2, col3 = st.columns([1, 1, 1])
95
- else:
96
- col1, col2 = st.columns([1, 1])
97
- with col1:
98
- st.metric(
99
- "# عدد طلبات المساعدة",
100
- len_requests,
101
- )
102
- with col2:
103
- st.metric(
104
- "# عدد التدخلات",
105
- len_interventions + len_solved_verified_requests,
106
- )
107
- if show_col_3:
108
- with col3:
109
- st.metric(
110
- "# عدد الطلبات المستجاب لها",
111
- len_solved_verified_requests,
112
- )
113
- elif lang == "fr":
114
- # with st.expander("📝 Description de la plateforme Nt3awnou"):
115
- st.markdown(INTRO_TEXT_FR, unsafe_allow_html=True)
116
- if show_col_3:
117
- col1, col2, col3 = st.columns([1, 1, 1])
118
- else:
119
- col1, col2 = st.columns([1, 1])
120
- with col1:
121
- st.metric(
122
- "# Nombre de demandes d'aide",
123
- len_requests,
124
- )
125
- with col2:
126
- st.metric(
127
- "# Nombre d'interventions",
128
- len_interventions + len_solved_verified_requests,
129
- )
130
- if show_col_3:
131
- with col3:
132
- st.metric(
133
- "# Nombre de demandes résolues",
134
- len_solved_verified_requests,
135
- )
136
-
137
-
138
- @st.cache_data(ttl=60 * 60 * 24)
139
- def cached_parse_gg_sheet(url):
140
- return parse_gg_sheet(url)
141
-
142
-
143
- def show_charts():
144
- st.subheader(_("📊 **Charts**"))
145
- col1, col2 = st.columns([1, 1])
146
-
147
- # interventions_categories
148
- interventions_processed_df = cached_parse_gg_sheet(INTERVENTIONS_PROCESSED_URL)
149
- supply_data = (
150
- interventions_processed_df["supplies_category"]
151
- .str.split(",")
152
- .explode()
153
- .str.strip("[] '")
154
- .dropna()
155
- .astype("category")
156
- )
157
- interv_fig = px.pie(supply_data, names="supplies_category", color='supplies_category', color_discrete_map=PIE_CHART_COLOR_MAP)
158
- interv_fig.update_layout(
159
- autosize=True,
160
- legend=dict(
161
- orientation="h",
162
- # entrywidth=40,
163
- yanchor="bottom",
164
- y=1.02,
165
- xanchor="right",
166
- x=1,
167
- font=dict(
168
- # family="Courier",
169
- # size=10,
170
- # color="black"
171
- ),
172
- itemwidth=100,
173
- ),
174
- )
175
- with col1:
176
- st.subheader(_("Supplies Categories"))
177
- st.plotly_chart(interv_fig, use_container_width=True)
178
-
179
- # requests_categories
180
- requests_processed_df = cached_parse_gg_sheet(VERIFIED_REQUESTS_PROCESSED_URL)
181
- need_data = (
182
- requests_processed_df["need_category"].str.split(",").explode().str.strip("[] '").dropna().astype("category")
183
- )
184
- req_fig = px.pie(need_data, names="need_category", color='need_category', color_discrete_map=PIE_CHART_COLOR_MAP)
185
- req_fig.update_layout(
186
- autosize=True,
187
- legend=dict(
188
- orientation="h",
189
- # entrywidth=40,
190
- yanchor="bottom",
191
- y=1.02,
192
- xanchor="right",
193
- x=1,
194
- font=dict(
195
- # family="Courier",
196
- # size=10,
197
- # color="black"
198
- ),
199
- itemwidth=100,
200
- ),
201
- )
202
- with col2:
203
- st.subheader(_("Needs Categories"))
204
- st.plotly_chart(req_fig, use_container_width=True)
205
-
206
-
207
- def show_donations(lang):
208
- st.subheader(_("📝 **Donations**"))
209
- if lang == "en":
210
- st.markdown(
211
- """
212
- <b>Notice:</b> We are not responsible for the donations collection. This is the official bank account dedicated to tackle the consequences of the earthquake.""",
213
- unsafe_allow_html=True,
214
- )
215
- st.markdown(
216
- """
217
- <div style="text-align: center;">
218
- <h4>The official bank account dedicated to tackle the consequences of the earthquake is:</h4>
219
- <b>Account number:</b>
220
- <h2>126</h2>
221
- <b>RIB:</b> 001-810-0078000201106203-18
222
- <br>
223
- <b>For the money transfers coming from outside Morocco</b>
224
- <br>
225
- <b>IBAN:</b> MA64001810007800020110620318
226
- <br>
227
- """,
228
- unsafe_allow_html=True,
229
- )
230
- elif lang == "ar":
231
- st.markdown(
232
- """
233
- <b>ملاحظة:</b> نحن لسنا مسؤولين عن جمع التبرعات. هذا هو الحساب البنكي الرسمي المخصص لمواجهة عواقب الزلزال.
234
- """,
235
- unsafe_allow_html=True,
236
- )
237
- st.markdown(
238
- """
239
- <div style="text-align: center;">
240
- <h4>الحساب البنكي الرسمي المخصص لمواجهة عواقب الزلزال</h4>
241
- <b>رقم الحساب</b>
242
- <h2>126</h2>
243
- <b>RIB:</b> 001-810-0078000201106203-18
244
- <br>
245
- <b>للتحويلات القادمة من خارج المغرب</b>
246
- <br>
247
- <b>IBAN:</b> MA64001810007800020110620318
248
- <br>
249
- </div>
250
- """,
251
- unsafe_allow_html=True,
252
- )
253
- elif lang == "fr":
254
- st.markdown(
255
- """
256
- <b>Remarque:</b> Nous ne sommes pas responsables de la collecte des dons. Ceci est le compte bancaire officiel dédié à la lutte contre les conséquences du séisme.
257
- """,
258
- unsafe_allow_html=True,
259
- )
260
- st.markdown(
261
- """
262
- <div style="text-align: center;">
263
- <h4>Le compte bancaire officiel dédié à la lutte contre les conséquences du séisme est le suivant:</h4>
264
- <b>Numéro de compte:</b>
265
- <h2>126</h2>
266
- <b>RIB:</b> 001-810-0078000201106203-18
267
- <br>
268
- <b>Pour les transferts d'argent en provenance de l'étranger</b>
269
- <br>
270
- <b>IBAN:</b> MA64001810007800020110620318
271
- <br>
272
- """,
273
- unsafe_allow_html=True,
274
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/data_analysis.py DELETED
@@ -1,242 +0,0 @@
1
- """
2
- This file contains some functions used to analyze the data from requests and interventions.
3
- """
4
-
5
- import re
6
- import datetime as dt
7
- import pandas as pd
8
- import plotly.express as px
9
- import plotly.graph_objects as go
10
- from torch import Tensor
11
- from transformers import AutoModel, AutoTokenizer
12
- import torch.nn.functional as F
13
-
14
-
15
- SUPPLIES_TAGS = {
16
- 'alimentation': 'ALIMENTATION ET EAU / FOOD AND WATER / الغذاء والماء',
17
- 'eau': 'ALIMENTATION ET EAU / FOOD AND WATER / الغذاء والماء',
18
- 'food': 'ALIMENTATION ET EAU / FOOD AND WATER / الغذاء والماء',
19
- 'water': 'ALIMENTATION ET EAU / FOOD AND WATER / الغذاء والماء',
20
- 'nourriture': 'ALIMENTATION ET EAU / FOOD AND WATER / الغذاء والماء',
21
- 'medical': 'ASSISTANCE MÉDICALE / MEDICAL ASSISTANCE / المساعدة الطبية',
22
- 'médical': 'ASSISTANCE MÉDICALE / MEDICAL ASSISTANCE / المساعدة الطبية',
23
- 'doctor': 'ASSISTANCE MÉDICALE / MEDICAL ASSISTANCE / المساعدة الطبية',
24
- 'vêtements': 'VÊTEMENTS / CLOTHES / الملابس',
25
- 'clothes': 'VÊTEMENTS / CLOTHES / الملابس',
26
- 'secours': 'SECOURS / RESCUE / الإنقاذ',
27
- 'rescue': 'SECOURS / RESCUE / الإنقاذ',
28
- 'refuge': 'REFUGE / SHELTER / المأوى',
29
- 'shelter': 'REFUGE / SHELTER / المأوى',
30
- 'couvertures': 'COUVERTURES / COVERS / البطانيات',
31
- 'covers': 'COUVERTURES / COVERS / البطانيات',
32
- 'pharmaceuticals': 'PHARMACEUTICALS / MEDICAMENTS / الأدوية',
33
- 'medicaments': 'PHARMACEUTICALS / MEDICAMENTS / الأدوية',
34
- 'pharmacy': 'PHARMACEUTICALS / MEDICAMENTS / الأدوية',
35
- 'medicine': 'PHARMACEUTICALS / MEDICAMENTS / الأدوية',
36
- 'blankets': 'COUVERTURES / COVERS / البطانيات',
37
- 'tents': 'REFUGE / SHELTER / المأوى',
38
- 'couches': 'PHARMACEUTICALS / MEDICAMENTS / الأدوية'
39
- }
40
-
41
- SUPPLIES_NEEDS_CATEGORIES = ['ALIMENTATION ET EAU / FOOD AND WATER / الغذاء والماء',
42
- 'ASSISTANCE MÉDICALE / MEDICAL ASSISTANCE / المساعدة الطبية',
43
- 'VÊTEMENTS / CLOTHES / الملابس',
44
- 'SECOURS / RESCUE / الإنقاذ',
45
- 'REFUGE / SHELTER / المأوى',
46
- 'COUVERTURES / COVERS / البطانيات',
47
- # 'KITCHEN TOOLS / USTENSILES DE CUISINE / أدوات المطبخ',
48
- 'PHARMACEUTICALS / MEDICAMENTS / الأدوية',
49
- 'OTHER']
50
-
51
- TRANSLATION_DICT = {
52
- 'أغطية': 'covers',
53
- 'أسرة': 'beds',
54
- 'وسادات': 'pillows',
55
- 'مصابح': 'lamps',
56
- 'خيام': 'tents',
57
- 'ألعاب أطفال': 'toys',
58
- 'قليل من المواد الغذائية': 'food',
59
- 'افرشة': 'covers',
60
- 'جلباب': 'clothes',
61
- 'ملابس': 'clothes',
62
- 'لديهم كل شيء': 'unknown'
63
- }
64
-
65
-
66
- def clean_text(text):
67
- """
68
- remove special characters from text
69
- """
70
- pattern = re.compile(r'[\u200e\xa0()\u200f]')
71
- cleaned_text = pattern.sub('', text)
72
- return cleaned_text
73
-
74
-
75
- def contains_arabic(text):
76
- """
77
- check if the text contains arabic characters
78
- """
79
- arabic_pattern = re.compile(r'[\u0600-\u06FF]+')
80
- if type(text)!=str:
81
- return False
82
- return arabic_pattern.search(text) is not None
83
-
84
-
85
- def arabic_to_latin_punctuation(text):
86
- """
87
- replace arabic punctuation with latin punctuation
88
- """
89
- punctuation_mapping = {
90
- '،': ',',
91
- '؛': ';',
92
- 'ـ': '_',
93
- '؟': '?',
94
- '٪': '%',
95
- '٫': '.',
96
- }
97
-
98
- for arabic_punct, latin_punct in punctuation_mapping.items():
99
- text = text.replace(arabic_punct, latin_punct)
100
-
101
- return text
102
-
103
-
104
- def plot_timeline(df: pd.DataFrame, today: dt.datetime, date_col: str):
105
- """Plot the timeline of requests and interventions.
106
- """
107
- df_past = df[df[date_col]<=today.date()]
108
- df_future = df[df[date_col]>today.date()]
109
-
110
- count_past = (df_past
111
- .groupby(date_col)
112
- .size()
113
- .rename('count')
114
- .reset_index())
115
- past_date_range = pd.date_range(start=min(count_past[date_col]),
116
- end=today.date(),
117
- freq='D')
118
- count_past = (count_past
119
- .set_index(date_col)
120
- .reindex(past_date_range, fill_value=0)
121
- .reset_index())
122
-
123
- if len(df_future)>0:
124
- count_future = df_future.groupby(date_col).size().rename('count').reset_index()
125
- future_date_range = pd.date_range(start=today.date()+dt.timedelta(days=1),
126
- end=max(count_future[date_col]),
127
- freq='D')
128
- count_future = (count_future
129
- .set_index(date_col)
130
- .reindex(future_date_range, fill_value=0)
131
- .reset_index())
132
- else:
133
- count_future = pd.DataFrame()
134
-
135
- bridge_date = today.date()
136
- bridge_data = pd.DataFrame(
137
- {'index': bridge_date, 'form_date':count_past.iloc[-1]['count']}, index=[0])
138
- count_future = pd.concat([bridge_data, count_future], ignore_index=True)
139
-
140
- # Plot
141
- fig = go.Figure()
142
- # past
143
- fig.add_trace(go.Scatter(x=count_past['index'],
144
- y=count_past['count'],
145
- mode='lines',
146
- name='Past Interventions',
147
- line=dict(color='blue')))
148
- # future
149
- fig.add_trace(go.Scatter(x=count_future['index'],
150
- y=count_future['count'],
151
- mode='lines',
152
- name='Future Interventions',
153
- line=dict(color='orange')))
154
-
155
- fig.add_vline(x=today.date(), line_dash="dash", line_color="black")
156
-
157
- fig.update_layout(yaxis_title="#", xaxis_title='date')
158
- return fig
159
-
160
-
161
- def classify_supplies_rule_based(text: pd.DataFrame, keep_raw: bool = False):
162
- """ Classifies text into supplies categories from SUPPLIES_TAGS
163
- using a rule-based approach."""
164
- classes = []
165
- lowercase_text = text.lower() # case-insensitive matching
166
-
167
- for keyword, category in SUPPLIES_TAGS.items():
168
- if keyword in lowercase_text:
169
- classes.append(category)
170
-
171
- if keep_raw:
172
- classes.append(lowercase_text)
173
-
174
- elif not classes:
175
- classes.append('OTHER')
176
-
177
- return list(set(classes))
178
-
179
-
180
- def classify_multilingual_field_e5(df: pd.DataFrame,
181
- field_to_tag: str = 'supplies',
182
- categories: list = SUPPLIES_NEEDS_CATEGORIES):
183
- """
184
- Tag supplies/requests into categories using multilingual-e5-large model.
185
- Returns a dataframe with a new column containing the list of predicted categories.
186
- Requires CUDA
187
- """
188
- def average_pool(last_hidden_states: Tensor, attention_mask: Tensor) -> Tensor:
189
- last_hidden = last_hidden_states.masked_fill(
190
- ~attention_mask[..., None].bool(), 0.0)
191
- return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]
192
-
193
- tokenizer = AutoTokenizer.from_pretrained('intfloat/multilingual-e5-large')
194
- model = AutoModel.from_pretrained('intfloat/multilingual-e5-large')
195
- model.cuda()
196
-
197
- # classify ar supplies
198
- processed_df = df.copy()
199
- values_to_classify = processed_df[field_to_tag]
200
-
201
- mapped_inputs = dict()
202
-
203
- for text in values_to_classify:
204
- gt = [f"{s}" for s in categories]
205
- qr = [f"{v}" for v in re.split("\.|,| و", text)]
206
- input_texts = qr + gt
207
-
208
- # Tokenize the input texts
209
- batch_dict = tokenizer(
210
- input_texts, max_length=512, padding=True, truncation=True, return_tensors='pt')
211
- batch_dict = {k: v.cuda() for k, v in batch_dict.items()}
212
-
213
- outputs = model(**batch_dict)
214
- embeddings = average_pool(outputs.last_hidden_state, batch_dict['attention_mask'])
215
-
216
- # normalize embeddings
217
- embeddings = F.normalize(embeddings, p=2, dim=1)
218
- scores = (embeddings[:len(qr)] @ embeddings[len(qr):].T) * 100
219
-
220
- mapped_inputs[text] = list(
221
- set([categories[int(scores[i,:].argmax())] for i in range(len(qr))]))
222
-
223
- processed_df.loc[values_to_classify.index, f'{field_to_tag}_category'] = list(
224
- mapped_inputs.values())
225
-
226
- return processed_df
227
-
228
-
229
- def plot_categories_share(raw_df: pd.DataFrame,
230
- today: dt.datetime,
231
- field: str = 'supplies'):
232
- """
233
- Plot the share of each category of requests/supplies.
234
- """
235
- df = raw_df[[field, f'{field}_category']].explode(f'{field}_category')
236
- pie_data = df.groupby(f'{field}_category', as_index=False).size().rename('n')
237
- fig = px.pie(pie_data,
238
- names=f'{field}_category',
239
- values='n',
240
- title=f'# per {field} category up till {today.date()}',
241
- labels={f'{field}_category': f'{field}', 'n': '%'})
242
- return fig
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/dataframes.py DELETED
@@ -1,118 +0,0 @@
1
- import streamlit as st
2
- from src.utils import add_latlng_col, parse_gg_sheet, parse_json_file, is_request_in_list
3
- import pandas as pd
4
-
5
- VERIFIED_REQUESTS_URL = st.secrets["VERIFIED_REQUESTS_URL"]
6
- REQUESTS_URL = st.secrets["REQUESTS_URL"]
7
- INTERVENTIONS_URL = st.secrets["INTERVENTIONS_URL"]
8
- INTERVENTIONS_PROCESSED_URL = st.secrets["INTERVENTIONS_PROCESSED_URL"]
9
- VERIFIED_REQUESTS_PROCESSED_URL = st.secrets["VERIFIED_REQUESTS_PROCESSED_URL"]
10
- DOUARS_URL = "data/regions.json"
11
-
12
-
13
- def load_data(show_unverified, selected_options, options):
14
- df = parse_gg_sheet(REQUESTS_URL)
15
- if show_unverified:
16
- df = add_latlng_col(df, process_column=15)
17
- interventions_df = parse_gg_sheet(INTERVENTIONS_URL)
18
- interventions_df = add_latlng_col(interventions_df, process_column="Automatic Extracted Coordinates")
19
- verified_df = parse_gg_sheet(VERIFIED_REQUESTS_URL)
20
- verified_df = add_latlng_col(verified_df, process_column="Automatic Extracted Coordinates")
21
- douar_df = parse_json_file(DOUARS_URL)
22
-
23
- # check if verified requests have been solved
24
- solved_verified_requests = verified_df[~pd.isnull(verified_df["Status"])]
25
- verified_df = verified_df[pd.isnull(verified_df["Status"])]
26
-
27
- len_requests = len(df)
28
- len_interventions = len(interventions_df)
29
- len_solved_verified_requests = len(solved_verified_requests)
30
-
31
- df["id"] = df.index # Needed to display request id
32
- verified_df["id"] = verified_df.index # Needed to display request id
33
- # keep rows with at least one request in selected_options
34
- filtered_df = df[
35
- df["ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"].apply(
36
- lambda x: is_request_in_list(x, selected_options, options)
37
- )
38
- ]
39
- filtered_verified_df = verified_df[
40
- verified_df["Help Details"].apply(lambda x: is_request_in_list(x, selected_options, options))
41
- ]
42
- return (
43
- df,
44
- filtered_df,
45
- interventions_df,
46
- verified_df,
47
- filtered_verified_df,
48
- solved_verified_requests,
49
- douar_df,
50
- len_requests,
51
- len_interventions,
52
- len_solved_verified_requests,
53
- )
54
-
55
-
56
- def display_dataframe(df, drop_cols, data_url, search_id=True, status=False, for_help_requests=False, show_link=True):
57
- """Display the dataframe in a table"""
58
- col_1, col_2 = st.columns([1, 1])
59
-
60
- # has df's first row
61
- df_hash = hash(df.iloc[0].to_string())
62
-
63
- with col_1:
64
- query = st.text_input("🔍 Search for information / بحث عن المعلومات", key=f"query_{df_hash}")
65
- with col_2:
66
- if search_id:
67
- id_number = st.number_input(
68
- "🔍 Search for an id / بحث عن رقم",
69
- min_value=0,
70
- # max_value=len(df),
71
- value=0,
72
- step=1,
73
- key=f"id_{df_hash}",
74
- )
75
- if status:
76
- selected_status = st.selectbox(
77
- "🗓️ Status / حالة", ["all / الكل", "Done / تم", "Planned / مخطط لها"], key=f"status_{df_hash}"
78
- )
79
-
80
- if query:
81
- # Filtering the dataframe based on the query
82
- mask = df.apply(lambda row: row.astype(str).str.contains(query.lower(), case=False).any(), axis=1)
83
- display_df = df[mask]
84
- else:
85
- display_df = df
86
-
87
- if search_id and id_number:
88
- display_df = display_df[display_df["id"] == id_number]
89
-
90
- display_df = display_df.drop(drop_cols, axis=1)
91
-
92
- if status:
93
- target = "Intervention status"
94
- if selected_status == "Done / تم":
95
- display_df = display_df[display_df[target] == "Intervention déjà passée / Past intevention"]
96
-
97
- elif selected_status == "Planned / مخطط لها":
98
- display_df = display_df[display_df[target] != "Intervention déjà passée / Past intevention"]
99
-
100
- st.dataframe(display_df, height=500)
101
- # Original link to the Google Sheet
102
- if show_link:
103
- st.markdown(
104
- f"To view the full Google Sheet for advanced filtering go to: {data_url} **لعرض الورقة كاملة، اذهب إلى**"
105
- )
106
- # if we want to check hidden contact information
107
- if for_help_requests:
108
- st.markdown(
109
- "We are hiding contact information to protect the privacy of the victims. If you are an NGO and want to contact the victims, please contact us at nt3awnoumorocco@gmail.com",
110
- )
111
- st.markdown(
112
- """
113
- <div style="text-align: left;">
114
- <a href="mailto:nt3awnoumorocco@gmail.com">nt3awnoumorocco@gmail.com</a> نحن نخفي معلومات الاتصال لحماية خصوصية الضحايا. إذا كنت جمعية وتريد الاتصال بالضحايا، يرجى الاتصال بنا على
115
- </div>
116
- """,
117
- unsafe_allow_html=True,
118
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/filters.py DELETED
@@ -1,65 +0,0 @@
1
- import streamlit as st
2
-
3
-
4
- def show_requests_filters():
5
- HEADERS_MAPPING = {
6
- "إغاثة": _("Rescue"),
7
- "مساعدة طبية": _("Medical Assistance"),
8
- "مأوى": _("Shelter"),
9
- "طعام وماء": _("Food & Water"),
10
- "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)": _("Danger"),
11
- }
12
-
13
- options = [
14
- "إغاثة",
15
- "مساعدة طبية",
16
- "مأوى",
17
- "طعام وماء",
18
- "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)",
19
- ]
20
- selected_options = []
21
-
22
- col1, col2 = st.columns([1, 1])
23
- with col1:
24
- show_unverified = st.checkbox(
25
- _("Display unverified requests"),
26
- value=False,
27
- )
28
- with col2:
29
- show_interventions = st.checkbox(
30
- _("Display Interventions"),
31
- value=True,
32
- )
33
-
34
- st.markdown(_("👉 **Choose request type**"))
35
- selected_options = st.multiselect(
36
- "Choose request type",
37
- options=options,
38
- default=options,
39
- format_func=lambda x: HEADERS_MAPPING[x],
40
- label_visibility="collapsed",
41
- )
42
-
43
- return selected_options, options, show_unverified, show_interventions
44
-
45
-
46
- def show_interventions_filters():
47
- st.markdown(
48
- _("👉 **State of villages visited by NGOs**"),
49
- unsafe_allow_html=True,
50
- )
51
- status_mapping = {
52
- "Critique, Besoin d'aide en urgence / Critical, in urgent need of help": _("🚨 Critical"),
53
- "Partiellement satisfait / Partially Served": _("⚠️ Partially served"),
54
- "Entièrement satisfait / Fully served": _("✅ Fully served"),
55
- }
56
-
57
- # Let's use multiselect instead
58
- selected_statuses = st.multiselect(
59
- "Choose status",
60
- options=status_mapping.keys(),
61
- default=status_mapping.keys(),
62
- format_func=lambda x: status_mapping[x],
63
- label_visibility="collapsed",
64
- )
65
- return selected_statuses
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/fuzzy_matching.py DELETED
@@ -1,258 +0,0 @@
1
- """
2
- Problem:
3
- Nt3awnou's platform collects raw data filled manually by users (people in need).
4
- Among this data is the user's localisation.
5
- The localisation is a text input that is not standardized:
6
- i.e. a user can input a single or multiple locations
7
- (either douars/provinces/communes/regions or all combined),
8
- in arabic or latin, with misspellings etc.
9
- This doesn't help in visualization or in statistics
10
- where localisations can be redundant because they were written in different manners.
11
-
12
- Examples
13
- ```
14
- دوار تجكَالت
15
- ابرداتن ازكور
16
- خزامة
17
- Tansgharte
18
- دوار امندار
19
- Douar Essour Tidrara Aghwatim Tahnaouet Al Haouz
20
- دوار تكاديرت
21
- Douar Essour tidrara- aghouatine- Tahanaout-El Haouz
22
- ```
23
- Solution:
24
- We collected a reference dataset that contains all douar names (arabic and latin)
25
- with their corresponding regions, communes and provinces.
26
- We developed methods using fuzzy matching and phonetics
27
- to map the user's localisation to the closest match in the reference dataset
28
-
29
- """
30
-
31
- from typing import Tuple
32
- from pyphonetics import RefinedSoundex, Metaphone
33
- import math
34
- import difflib
35
- import re
36
-
37
-
38
- EPICENTER_LOCATION = [31.12210171476489, -8.42945837915193]
39
- certainty_threshold = 1
40
-
41
-
42
- def extract_ngrams(text, n):
43
- """
44
- A function that returns a list of n-grams from a text
45
- """
46
- ngrams = []
47
-
48
- if n < 1 or n > len(text):
49
- return ngrams # Return an empty list if n is invalid
50
-
51
- # Iterate through the text and extract n-grams
52
- for i in range(len(text) - n + 1):
53
- ngram = text[i:i + n]
54
- ngrams.append(' '.join(ngram))
55
-
56
- return ngrams
57
-
58
-
59
- def get_phonetics_distance(w1, w2):
60
- """
61
- A function that calculates levenhstein distance between phonetics
62
- representation of two words: add error term to the score
63
- """
64
- rs = RefinedSoundex()
65
- mt = Metaphone()
66
- d1 = mt.distance(w1, w2, metric='levenshtein')
67
- d2 = rs.distance(w1, w2, metric='levenshtein')
68
- res = (d1 + d2) / 2 + 0.05
69
- return res
70
-
71
-
72
- def get_top_n_phonetics_matches(
73
- w: str, ref_words: list, threshold=1, top_n=1) -> list[Tuple]:
74
- """
75
- A function that returns the top_n closest words to w from ref_words
76
- for which distance <= threshold
77
- using phonetical representation
78
- """
79
- if not w:
80
- return list()
81
- distances = {x: get_phonetics_distance(w, x) for x in ref_words}
82
- selected_words = {x: d for x, d in distances.items() if d<=threshold}
83
- sorted_d = dict(sorted(selected_words.items(), key=lambda item: item[1]))
84
-
85
- return list(sorted_d.items())[:top_n]
86
-
87
-
88
- def get_geometric_distance(lat1: float, lon1: float, lat2: float, lon2: float) -> float:
89
- """
90
- A function that returns the distance between two points on earth
91
- using the haversine formula
92
- """
93
- dlon = math.radians(lon2 - lon1)
94
- dlat = math.radians(lat2 - lat1)
95
- a0 = (math.sin(dlat / 2)) ** 2 + math.cos(math.radians(lat1))
96
- a = a0 * math.cos(math.radians(lat2)) * (math.sin(dlon / 2)) ** 2
97
- c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))
98
- distance = 6371 * c
99
- return distance
100
-
101
-
102
- def are_village_names_similar(village_a: str, village_b: str) -> float:
103
- """
104
- A function that returns True if the two villages
105
- are similar using strict fuzzy matching
106
- """
107
- if difflib.SequenceMatcher(None, village_a, village_b).ratio() >= 0.90:
108
- return True
109
- return False
110
-
111
-
112
- def get_uncertainty_range(input_dict: dict, threshold: float) -> list:
113
- """
114
- A function that returns a list of tuples of the closest matches
115
- """
116
- if len(input_dict)<=1:
117
- return input_dict
118
-
119
- # sort by distance
120
- sorted_items = sorted(input_dict.items(), key=lambda item: item[1][1])
121
- data = {key: value for key, value in sorted_items}
122
-
123
- # Iterate through the keys in the dictionary
124
- keys = list(data.keys())
125
- min_key = keys[0]
126
- min_value = data[min_key][1]
127
-
128
- # Initialize a list to store the result tuples
129
- result = {f"{min_key}":data[min_key]}
130
-
131
- for j in range(1, len(keys)):
132
- key2 = keys[j]
133
- value2 = data[key2][1]
134
-
135
- # Calculate the absolute difference between the float values
136
- difference = abs(min_value - value2)
137
-
138
- # If the difference is less than the threshold, add the tuple to the result
139
- if difference <= threshold:
140
- result[key2] = data[key2]
141
- else:
142
- break
143
-
144
- return result
145
-
146
-
147
- def match_word(w, ref_dict, select_one_match=False):
148
- """
149
- A function that returns the closest match of w from ref_dict
150
- using phonetical representation and fuzzy matching
151
- """
152
- w = w.strip().upper()
153
-
154
- if len(w)==0:
155
- return {}
156
-
157
- else:
158
- closest_ref_w = dict()
159
- use_phonetics = True
160
-
161
- for category, names in ref_dict.items():
162
- # check exact matching
163
- if w in names:
164
- use_phonetics = False
165
- closest_ref_w[category] = (w, 0)
166
- break
167
-
168
- # check textual similarity (fuzzy matching)
169
- sim = list(map(lambda x:are_village_names_similar(w,x), names))
170
- similar_names = [names[i] for i in range(len(names)) if sim[i]==True]
171
- if similar_names:
172
- use_phonetics = False
173
- closest_ref_w[category] = (similar_names[0], 0.01) if select_one_match else list(map(lambda x:(x, 0.01), similar_names))
174
-
175
- # if no similar name was found check phonetical similarity
176
- else:
177
- res = get_top_n_phonetics_matches(w, names, threshold=2, top_n=1)
178
- if res:
179
- closest_ref_w[category] = res[0] # get closest match
180
-
181
- if closest_ref_w and use_phonetics:
182
- if not select_one_match:
183
- closest_ref_w = get_uncertainty_range(closest_ref_w, certainty_threshold)
184
- else:
185
- k, v = min(closest_ref_w.items(), key=lambda x: x[1][1])
186
- closest_ref_w = {k: v}
187
-
188
- return closest_ref_w
189
-
190
-
191
- def parse_and_map_localisation(text: str, ref_dict: dict, select_one_match: bool=True):
192
- """
193
- A function that parses text containing users localisation
194
- and returns the closest matches per categoty from ref_dict
195
- Example:
196
- input = COMMUNE MZODA : DOUARS : TOUKHRIBIN –TLAKEMT - COMMUNE IMINDOUNITE : DOUAR AZARZO
197
- output = {'commune_fr': ('IMINDOUNIT', 0.01), 'nom_fr': ('TOUKHRIBINE', 0.01)}
198
- """
199
- toxic = r"\bدوار|مصلى|\(|\)|douars?|communes?|cercles?|provinces?|villes?|regions?|caidate?|and|جماعة|\b|:|-|\d"
200
- text = re.sub(toxic, '', text.lower())
201
- regex_pattern = r"\|| |\.|,|/|et |و "
202
- tokens = re.split(regex_pattern, text.replace('-', ' '))
203
- filtered_tokens = [s for s in tokens if s.strip() != '']
204
-
205
- ngrams_mapping = {}
206
-
207
- for n in range(1, len(filtered_tokens)+1):
208
-
209
- # generate ngrams
210
- ngrams = extract_ngrams(filtered_tokens, n)
211
-
212
- # init dict with ngram mapping
213
- mapping_ngram = {}
214
-
215
- # generate a mapping for the ngram with argmin matches
216
- for tok in ngrams:
217
- res = match_word(tok, ref_dict, select_one_match=select_one_match)
218
- if not res:
219
- continue
220
-
221
- min_k, min_v = min(res.items(), key=lambda x:x[1][1])
222
-
223
- # if min_k in previous tokens, then choose the min, else add it to mapping
224
- if min_k in mapping_ngram:
225
- saved_match, saved_distance = mapping_ngram[min_k]
226
-
227
- if saved_distance > min_v[1]:
228
- mapping_ngram[min_k] = min_v
229
-
230
- else:
231
- continue
232
-
233
- else:
234
- mapping_ngram[min_k] = min_v
235
-
236
- ngrams_mapping[n] = mapping_ngram
237
-
238
-
239
- # first squeeze dict s.t. one match remains per category
240
- categories = ref_dict.keys()
241
- result = {}
242
- for _, inner_dict in ngrams_mapping.items():
243
- for k in categories:
244
- # Check if the key exists in the inner dictionary
245
- if k in inner_dict:
246
- current_match, current_val = inner_dict[k]
247
- if k in result:
248
- previous_match, previous_val = result[k]
249
- if current_val < previous_val:
250
- result[k] = (current_match, current_val)
251
- else:
252
- result[k] = (current_match, current_val)
253
-
254
- # then, discard matches with a high distance from min (set 0.5+min_d as threshold)
255
- thresh = min(result.values(), key=lambda x:x[1])[1] + 0.5
256
- output = {k: v_d for k, v_d in result.items() if v_d[1]<=thresh}
257
-
258
- return output
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/map_utils.py CHANGED
@@ -1,132 +1,103 @@
1
  from branca.element import Template, MacroElement
2
 
3
 
4
- def get_legend_macro(show_unverified):
5
- labels_unverified_requests = _(
6
- """
7
- <li><span style='background:#CE3C28;opacity:0.7;'></span>Rescue</li>
8
- <li><span style='background:#ED922E;opacity:0.7;'></span>Medical Assistance</li>
9
- <li><span style='background:#FFCA92;opacity:0.7;'></span>Shelter</li>
10
- <li><span style='background:#37A8DA;opacity:0.7;'></span>Food & Water</li>
11
- <li><span style='background:#575757;opacity:0.7;'></span>Dangers</li>
12
- <li><span style='background:#6EAA25;opacity:0.7;'></span>Done</li>
13
- <li><span style='background:#023020;opacity:0.7;'></span>Partial</li>
14
- <li><span style='background:#FF91E8;opacity:0.7;'></span>Planned</li>
15
- """
16
- )
17
- labels_verified = _(
18
- """
19
- <li><span style='background:#CE3C28;opacity:0.7;'></span>High Emergency</li>
20
- <li><span style='background:#ED922E;opacity:0.7;'></span>Medium Emergency</li>
21
- <li><span style='background:#FFCA92;opacity:0.7;'></span>Low Emergency</li>
22
- <li><span style='background:#6EAA25;opacity:0.7;'></span>Done</li>
23
- <li><span style='background:#023020;opacity:0.7;'></span>Partial</li>
24
- <li><span style='background:#FF91E8;opacity:0.7;'></span>Planned</li>
25
- """
26
- )
27
 
28
- template_1 = """
29
- {% macro html(this, kwargs) %}
30
-
31
- <!doctype html>
32
- <html lang="en">
33
- <head>
34
- <meta charset="utf-8">
35
- <meta name="viewport" content="width=device-width, initial-scale=1">
36
- <title>jQuery UI Draggable - Default functionality</title>
37
- <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
38
-
39
- <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
40
- <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
41
-
42
- <script>
43
- $( function() {
44
- $( "#maplegend" ).draggable({
45
- start: function (event, ui) {
46
- $(this).css({
47
- right: "auto",
48
- top: "auto",
49
- bottom: "auto"
50
- });
51
- }
52
- });
53
- });
54
-
55
- </script>
56
- </head>
57
- <body>
58
 
 
 
59
 
60
- <div id='maplegend' class='maplegend'
61
- style='position: absolute; z-index:9999; border:2px solid grey; background-color:rgba(255, 255, 255, 0.8);
62
- border-radius:6px; padding: 10px; font-size:14px; right: 20px; bottom: 20px;'>
63
-
64
- <div class='legend-title'>Legend / مفتاح الخريطة</div>
65
- <div class='legend-scale'>
66
- <ul class='legend-labels'>
67
-
68
- """
69
- template_2 = """
70
- </ul>
71
- </div>
72
- </div>
73
-
74
- </body>
75
- </html>
76
-
77
- <style type='text/css'>
78
- .maplegend .legend-title {
79
- text-align: left;
80
- margin-bottom: 5px;
81
- font-weight: bold;
82
- font-size: 90%;
83
- color: #333;
84
- }
85
- .maplegend .legend-scale ul {
86
- margin: 0;
87
- margin-bottom: 5px;
88
- padding: 0;
89
- float: left;
90
- list-style: none;
91
- }
92
- .maplegend .legend-scale ul li {
93
- font-size: 80%;
94
- list-style: none;
95
- margin-left: 0;
96
- line-height: 18px;
97
- margin-bottom: 2px;
98
- color: #111;
99
- }
100
- .maplegend ul.legend-labels li span {
101
- display: block;
102
- float: left;
103
- height: 16px;
104
- width: 30px;
105
- margin-right: 5px;
106
- margin-left: 0;
107
- border: 1px solid #999;
108
- }
109
- .maplegend .legend-source {
110
- font-size: 80%;
111
- color: #777;
112
- clear: both;
113
- }
114
- .maplegend a {
115
- color: #777;
116
- }
117
 
118
- .leaflet-control-geocoder-form input {
119
- color: black;
120
- }
121
-
122
- </style>
123
- {% endmacro %}"""
124
 
125
- legend_macro = MacroElement()
126
- legend_macro._template = Template(
127
- template_1 + (labels_unverified_requests if show_unverified else labels_verified) + template_2
128
- )
129
- return legend_macro
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
 
132
- __all__ = ["get_legend_macro"]
 
1
  from branca.element import Template, MacroElement
2
 
3
 
4
+ template = """
5
+ {% macro html(this, kwargs) %}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
 
7
+ <!doctype html>
8
+ <html lang="en">
9
+ <head>
10
+ <meta charset="utf-8">
11
+ <meta name="viewport" content="width=device-width, initial-scale=1">
12
+ <title>jQuery UI Draggable - Default functionality</title>
13
+ <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
 
15
+ <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
16
+ <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
17
 
18
+ <script>
19
+ $( function() {
20
+ $( "#maplegend" ).draggable({
21
+ start: function (event, ui) {
22
+ $(this).css({
23
+ right: "auto",
24
+ top: "auto",
25
+ bottom: "auto"
26
+ });
27
+ }
28
+ });
29
+ });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
 
31
+ </script>
32
+ </head>
33
+ <body>
 
 
 
34
 
35
+
36
+ <div id='maplegend' class='maplegend'
37
+ style='position: absolute; z-index:9999; border:2px solid grey; background-color:rgba(255, 255, 255, 0.8);
38
+ border-radius:6px; padding: 10px; font-size:14px; right: 20px; bottom: 20px;'>
39
+
40
+ <div class='legend-title'>Legend / مفتاح الخريطة</div>
41
+ <div class='legend-scale'>
42
+ <ul class='legend-labels'>
43
+ <li><span style='background:#CE3C28;opacity:0.7;'></span>Rescue / إغاثة</li>
44
+ <li><span style='background:#ED922E;opacity:0.7;'></span>Medical Assistance / مساعدة طبية</li>
45
+ <li><span style='background:#FFCA92;opacity:0.7;'></span>Shelter / مأوى</li>
46
+ <li><span style='background:#37A8DA;opacity:0.7;'></span>Food & Water / طعام وماء</li>
47
+ <li><span style='background:#575757;opacity:0.7;'></span>Danger / مخاطر (تسرب الغاز، تلف في الخدمات العامة...)</li>
48
+ <li><span style='background:#6EAA25;opacity:0.7;'></span>Done / تم</li>
49
+ <li><span style='background:#023020;opacity:0.7;'></span>Partial / تم جزئيا</li>
50
+ <li><span style='background:#FF91E8;opacity:0.7;'></span>Planned / مخطط لها</li>
51
+ </ul>
52
+ </div>
53
+ </div>
54
+
55
+ </body>
56
+ </html>
57
 
58
+ <style type='text/css'>
59
+ .maplegend .legend-title {
60
+ text-align: left;
61
+ margin-bottom: 5px;
62
+ font-weight: bold;
63
+ font-size: 90%;
64
+ color: #333;
65
+ }
66
+ .maplegend .legend-scale ul {
67
+ margin: 0;
68
+ margin-bottom: 5px;
69
+ padding: 0;
70
+ float: left;
71
+ list-style: none;
72
+ }
73
+ .maplegend .legend-scale ul li {
74
+ font-size: 80%;
75
+ list-style: none;
76
+ margin-left: 0;
77
+ line-height: 18px;
78
+ margin-bottom: 2px;
79
+ color: #111;
80
+ }
81
+ .maplegend ul.legend-labels li span {
82
+ display: block;
83
+ float: left;
84
+ height: 16px;
85
+ width: 30px;
86
+ margin-right: 5px;
87
+ margin-left: 0;
88
+ border: 1px solid #999;
89
+ }
90
+ .maplegend .legend-source {
91
+ font-size: 80%;
92
+ color: #777;
93
+ clear: both;
94
+ }
95
+ .maplegend a {
96
+ color: #777;
97
+ }
98
+ </style>
99
+ {% endmacro %}"""
100
+ legend_macro = MacroElement()
101
+ legend_macro._template = Template(template)
102
 
103
+ __all__ = ["legend_macro"]
src/markers.py DELETED
@@ -1,269 +0,0 @@
1
- from datetime import datetime
2
- import folium
3
- import pandas as pd
4
-
5
-
6
- COLOR_MAPPING = {
7
- "إغاثة": "red",
8
- "مساعدة طبية": "orange",
9
- "مأوى": "beige",
10
- "طعام وماء": "blue",
11
- "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)": "gray",
12
- }
13
-
14
- ICON_MAPPING = {
15
- "إغاثة": "bell", # life ring icon for rescue
16
- "مساعدة طبية": "heart", # medical kit for medical assistance
17
- "مأوى": "home", # home icon for shelter
18
- "طعام وماء": "cutlery", # cutlery (fork and knife) for food & water
19
- "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)": "Warning" # warning triangle for dangers
20
- }
21
- def numcol(x):
22
- return ord(x) - ord("A")
23
-
24
- def marker_request(request):
25
- # in case of multiple requests we use the first one for the marker's icon
26
- # requests are already sorted by priority from the form
27
- try:
28
- displayed_request = request.split(',')[0]
29
- except:
30
- displayed_request = request
31
- return displayed_request
32
-
33
-
34
- ## Interventions
35
- def display_interventions(interventions_df, selected_statuses, map_obj, intervention_fgs):
36
- """Display NGO interventions on the map"""
37
-
38
- for index, row in interventions_df.iterrows():
39
- village_status = row[interventions_df.columns[numcol("K")]]
40
- is_future_intervention = (
41
- row[interventions_df.columns[numcol("H")]] == "Intervention prévue dans le futur / Planned future intervention"
42
- )
43
-
44
- if pd.isna(village_status) and not is_future_intervention:
45
- village_status = "Partiellement satisfait / Partially Served"
46
-
47
- if village_status not in selected_statuses:
48
- continue
49
-
50
- if is_future_intervention:
51
- color_mk = "pink"
52
- status = "Planned ⌛"
53
- elif village_status != "Critique, Besoin d'aide en urgence / Critical, in urgent need of help":
54
- # past intervention and village not in a critical condition
55
- color_mk = "green"
56
- status = "Done ✅"
57
-
58
- else:
59
- color_mk = "darkgreen"
60
- status = "Partial 📝"
61
-
62
- # ['Horodateur', 'Organization Name', 'Association ID', 'Speciality',
63
- # 'Phone 1', 'Phone 2', 'Email', 'Intervention status',
64
- # 'Intervention date', 'Types of Help Provided',
65
- # 'Current situation of the area', 'Future help type', 'Douar name',
66
- # 'Commune', 'Caidat', ' Google Maps Link',
67
- # 'Accessibility to the targeted douar', 'Type of accessibility',
68
- # 'Population of the douar if available', 'Intervention Additional Info',
69
- # 'Any Additional info is welcome', 'Automatic Extracted Coordinates',
70
- # 'Unnamed: 22'],
71
-
72
- org = row[interventions_df.columns[numcol("B")]]
73
- association_id = row[interventions_df.columns[numcol("C")]]
74
- speciality = row[interventions_df.columns[numcol("D")]]
75
- phone_1 = row[interventions_df.columns[numcol("E")]]
76
- phone_2 = row[interventions_df.columns[numcol("F")]]
77
- email = row[interventions_df.columns[numcol("G")]]
78
- intervention_status = row[interventions_df.columns[numcol("H")]]
79
- intervention_date = row[interventions_df.columns[numcol("I")]]
80
- help_type = row[interventions_df.columns[numcol("J")]]
81
- current_situation = row[interventions_df.columns[numcol("K")]]
82
- future_help_type = row[interventions_df.columns[numcol("L")]]
83
- douar_name = row[interventions_df.columns[numcol("M")]]
84
- commune = row[interventions_df.columns[numcol("N")]]
85
- caidat = row[interventions_df.columns[numcol("O")]]
86
- row[interventions_df.columns[numcol("P")]]
87
- accessibility_to_douar = row[interventions_df.columns[numcol("Q")]]
88
- type_of_accessibility = row[interventions_df.columns[numcol("R")]]
89
- population = row[interventions_df.columns[numcol("S")]]
90
- intervention_additional_info = row[interventions_df.columns[numcol("T")]]
91
- any_additional_info = row[interventions_df.columns[numcol("U")]]
92
-
93
- full_douar_name = ", ".join([x for x in [douar_name, commune, caidat] if not pd.isna(x)])
94
- intervention_info = f"""
95
- <b>Org:</b> {org}<br>
96
- <b>Association ID:</b> {association_id}<br>
97
- <b>Speciality:</b> {speciality}<br>
98
- <b>Phone 1:</b> {phone_1}<br>
99
- <b>Phone 2:</b> {phone_2}<br>
100
- <b>Email:</b> {email}<br>
101
- <b>Intervention Date:</b> {intervention_date}<br>
102
- <b>Intervention Status:</b> {intervention_status}<br>
103
- <b>Help Type:</b> {help_type}<br>
104
- <b>Current Situation:</b> {current_situation}<br>
105
- <b>Future Help Type:</b> {future_help_type}<br>
106
- <b>Douar Name:</b> {full_douar_name}<br>
107
- <b>Accessibility to Douar:</b> {accessibility_to_douar}<br>
108
- <b>Type of Accessibility:</b> {type_of_accessibility}<br>
109
- <b>Population:</b> {population}<br>
110
- <b>Intervention Additional Info:</b> {intervention_additional_info}<br>
111
- <b>Any Additional Info:</b> {any_additional_info}<br>
112
- """ #TODO: filter nans
113
- if row["latlng"] is None:
114
- continue
115
-
116
- fg = intervention_fgs[status]
117
- fg.add_child(
118
- folium.Marker(
119
- location=row["latlng"],
120
- tooltip=full_douar_name,
121
- popup=folium.Popup(intervention_info, max_width=300),
122
- icon=folium.Icon(color=color_mk),
123
- )
124
- )
125
-
126
-
127
-
128
- def display_solved(solved_verified_requests, selected_statuses, feature_group):
129
- for index, row in solved_verified_requests.iterrows():
130
- if row["latlng"] is None:
131
- continue
132
- intervention_status = row[solved_verified_requests.columns[8]]
133
- is_future_intervention = (
134
- intervention_status == "Planned"
135
- )
136
-
137
- if is_future_intervention:
138
- status = "Planned ⌛"
139
- icon = folium.Icon(icon="heart", prefix="glyphicon", color="pink", icon_color="red")
140
- else:
141
- status = "Done ✅"
142
- icon = folium.Icon(icon="heart", prefix="glyphicon", color="green", icon_color="red")
143
- # if village_status not in selected_statuses:
144
- # continue # TODO: enable filters
145
- intervention_type = row[solved_verified_requests.columns[2]]
146
- details = row[solved_verified_requests.columns[3]]
147
- contact = row[solved_verified_requests.columns[4]]
148
- location = row[solved_verified_requests.columns[5]]
149
- org = row[solved_verified_requests.columns[9]]
150
- intervention_date = row[solved_verified_requests.columns[10]]
151
- remarks = row[solved_verified_requests.columns[11]]
152
- intervention_info = f"""
153
- <b>Intervention Date:</b> {intervention_date}<br>
154
- <b>Org:</b> {org}<br>
155
- <b>Intervention:</b> {intervention_type}<br>
156
- <b>Invervention Status:</b> {status}<br>
157
- <b>Details:</b> {details}<br>
158
- <b>Location:</b> {location}<br>
159
- <b>Remarks:</b> {remarks}<br>
160
- <b>Contact:</b> {contact}<br>
161
- """
162
- # golden color
163
- feature_group.add_child(
164
- folium.Marker(
165
- location=row["latlng"],
166
- tooltip=location,
167
- popup=folium.Popup(intervention_info, max_width=300),
168
- icon=icon
169
- )
170
- )
171
-
172
-
173
- ## Requests
174
- def show_requests(filtered_df, feature_group):
175
- """Display victim requests on the map"""
176
- for index, row in filtered_df.iterrows():
177
- request_type = row["ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"]
178
- displayed_request = marker_request(request_type) # TODO: the marker should depend on selected_options
179
- long_lat = row["latlng"]
180
- maps_url = f"https://maps.google.com/?q={long_lat}"
181
-
182
- douar = row[filtered_df.columns[3]]
183
- person_in_place = row[filtered_df.columns[6]]
184
- douar_info = row[filtered_df.columns[9]]
185
- source = row[filtered_df.columns[10]]
186
- # we display all requests in popup text and use the first one for the icon/color
187
- display_text = f"""
188
- <b>Request Type:</b> {request_type}<br>
189
- <b>Id:</b> {row["id"]}<br>
190
- <b>Source:</b> {source}<br>
191
- <b>Person in place:</b> {person_in_place}<br>
192
- <b>Douar:</b> {douar}<br>
193
- <b>Douar Info:</b> {douar_info}<br>
194
- <a href="{maps_url}" target="_blank" rel="noopener noreferrer"><b>Google Maps</b></a>
195
- """
196
-
197
- icon_name = ICON_MAPPING.get(request_type, "list")
198
- if long_lat is None:
199
- continue
200
-
201
- feature_group.add_child(
202
- folium.Marker(
203
- location=long_lat,
204
- tooltip=row[" لأي جماعة / قيادة / دوار تنتمون ؟"]
205
- if not pd.isna(row[" لأي جماعة / قيادة / دوار تنتمون ؟"])
206
- else None,
207
- popup=folium.Popup(display_text, max_width=300),
208
- icon=folium.Icon(
209
- color=COLOR_MAPPING.get(displayed_request, "beige"), icon=icon_name, prefix="glyphicon"
210
- ),
211
- )
212
- )
213
-
214
- def show_verified_requests(filtered_verified_df, emergency_fgs):
215
- """Display verified victim requests on the map"""
216
- global fg
217
-
218
- verified_color_mapping = {
219
- "Low": "beige",
220
- "Medium": "orange",
221
- "High": "red",
222
- }
223
-
224
- for index, row in filtered_verified_df.iterrows():
225
- long_lat = row["latlng"]
226
- # we display all requests in popup text and use the first one for the icon/color
227
- display_text = ""
228
- for col, val in zip(filtered_verified_df.columns, row):
229
- if col == "Help Details":
230
- request_type = row["Help Details"]
231
- marker_request(request_type) # TODO: the marker should depend on selected_options
232
- display_text += f"<b>Request Type:</b> {request_type}<br>"
233
- elif col == "Location Details":
234
- display_text += f"<b>Location:</b> {val}<br>"
235
- elif col == "Emergency Degree":
236
- display_text += f"<b>Emergency Degree:</b> {val}<br>"
237
- elif col == "Verification Date":
238
- display_text += f"<b>Verification Date:</b> {val}<br>"
239
- elif col == "id":
240
- display_text = f"<b>Id:</b> {val}<br>" + display_text
241
- elif col == "latlng":
242
- maps_url = f"https://maps.google.com/?q={val}"
243
- display_text += (
244
- f'<a href="{maps_url}" target="_blank" rel="noopener noreferrer"><b>Google Maps</b></a><br>'
245
- )
246
-
247
- # mark as solved button
248
- id_in_sheet = row["id"] + 2
249
- display_text += f"<a href='https://docs.google.com/forms/d/e/1FAIpQLSdyAcOAULumk4A1DsfrwUsGdZ-9G5xOUuD3vHdQOp3nGNAZXw/viewform?usp=pp_url&entry.1499427789={id_in_sheet}&entry.1666684596={datetime.now().strftime('%Y-%m-%d')}' target='_blank' rel='noopener noreferrer'><b>Mark as solved</b></a><br>"
250
-
251
- icon_name = ICON_MAPPING.get(request_type, "list")
252
- emergency = row.get("Emergency Degree", "Low")
253
- if long_lat is None:
254
- continue
255
- location = row["Location Details"]
256
-
257
- # Select the correct feature group
258
- fg_emergency_group = emergency_fgs[emergency]
259
-
260
- fg_emergency_group.add_child(
261
- folium.Marker(
262
- location=long_lat,
263
- tooltip=location if not pd.isna(location) else None,
264
- popup=folium.Popup(display_text, max_width=300),
265
- icon=folium.Icon(
266
- color=verified_color_mapping.get(emergency, "beige"), icon=icon_name, prefix="glyphicon"
267
- ),
268
- )
269
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/text_content.py CHANGED
@@ -1,6 +1,6 @@
1
  INTRO_TEXT_EN = """
2
  <div style="text-align: left;">
3
- Nt3awnou نتعاونو is a non-profit organization and a collaborative platform dedicated to aiding individuals impacted by the recent earthquake in Morocco. Our core mission is to streamline and coordinate timely assistance for everyone affected. How do we achieve this? We assist those in need by allowing them to communicate their location and the specific aid they require, either by completing a form or sending a voice message via WhatsApp to the number <b>0602838166</b>. Once we receive and process this information, it can be viewed in our dashboard, which allows NGOs to organize and precisely target their interventions, ensuring swift assistance reaches those in need. Any organization that has taken initiative in a particular area can notify us by completing a dedicated form. This data is also incorporated into the dashboard so that other NGOs can help affected areas that still haven't received help.
4
  <br>⚠️ Warning : There are still rocks falling down the mountains, making the roads to the affected areas very dangerous. We advise volunteers to donate directly to specialized NGOs.<br>
5
  <br>
6
  <b>✉️ You can contact us via email at </b><a href="mailto:nt3awnoumorocco@gmail.com">nt3awnoumorocco@gmail.com</a> or via Instagram <a href="https://www.instagram.com/nt3awnou_morocco/">@nt3awnou_morocco</a> <br>
@@ -12,9 +12,9 @@ INTRO_TEXT_EN = """
12
  """
13
 
14
  INTRO_TEXT_AR = """
15
- <div style="text-align: right;-webkit-rtl-ordering: logical;">
16
 
17
- نتعاونو هي منصة تعاونية غير ربحية لمساعدة الأفراد المتضررين من الزلزال الأخير في المغرب. مهمتنا هي تسهيل تقديم المساعدة في الوقت المناسب و بفاعلية و تنظيم لجميع المتضررين. كيفاش؟ كنعاونو الناس لي محتاجين للمساعدة إعلمونا بمكانهم و نوع المساعدة لي محتاجين ليها سواء عن طريق ملأ الاستمارة أو عن طريق إرسال تسجيل صوتي عبر واتساب إلى رقم مخصص<b>0602838166</b>. بعد معالجة هاد المعلومات، كنجمعوهم فخريطة كتمكن الجمعيات من تنظيم و استهداف تدخلاتهم بدقة باش توصل المساعدة للناس لي محتاجين في وقت أسرع. و كل جمعية قامت باللازم في منطقة معينة تقدر تعلمنا عن طريق ملأ استمارة مخصصة لهاد الأمر. هاد المعلومات كذلك كتضاف للخريطة باش باقي الجمعيات يتاجهو لمناطق أخرى مازال ماوصلاتهم مساعدة.
18
  <br> تحذير : نظرا لخطورة الطرقان بسبب الحجر اللي كيطيح من الجبال، ننصح المتطوعين اللي بغاو يساعدو ��لمناطق المتضررة يتبرعو عن طريق الجمعيات المختصة⚠️
19
  <br>
20
  <br>
@@ -27,10 +27,10 @@ INTRO_TEXT_AR = """
27
  </div>
28
  <br>
29
  """
30
-
31
  INTRO_TEXT_FR = """
32
  <div style="text-align: left;">
33
- Nt3awnou نتعاونو est une plateforme collaborative à but non-lucratif dédiée à l'aide aux personnes touchées par le récent tremblement de terre au Maroc. Notre mission principale est de rationaliser et de coordonner une assistance rapide pour toutes les personnes touchées. Comment y parvenons-nous ? Nous aidons les personnes dans le besoin en leur permettant de communiquer leur localisation et l'aide spécifique dont elles ont besoin, soit en remplissant un formulaire, soit en envoyant un message vocal via WhatsApp à un numéro <b>0602838166</b>. Une fois reçues et traitées, ces informations peuvent être consultées dans notre tableau de bord, qui permet aux associations d'organiser et de cibler précisément leurs interventions, afin que l'aide parvienne rapidement à ceux qui en ont besoin. Toute organisation ayant pris une initiative dans une zone particulière peut nous en informer en remplissant un formulaire prévu à cet effet. Ces données sont également intégrées au tableau de bord afin que d'autres associations puissent aider les zones touchées qui n'ont pas encore reçu d'aide.
34
  <br> ⚠️ Avertissement : Il y a encore des chutes de pierres dans les montagnes, ce qui rend les routes vers les zones touchées très dangereuses. Nous conseillons aux volontaires de faire des dons directement aux associations spécialisées.
35
  <br>
36
  <br>
@@ -48,12 +48,36 @@ SLOGAN = """
48
  </div>
49
  """
50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
 
52
  CREDITS_TEXT = """
53
  <hr>
54
  <div style="text-align: center;">
55
  <p>By <b>Moroccans</b> for <b>Moroccans</b> 🤝</p>
56
- <p>Reach out to us at <a href="mailto:nt3awnoumorocco@gmail.com">nt3awnoumorocco@gmail.com</a></p>
 
57
  """
58
 
59
  LOGO = """
@@ -62,43 +86,10 @@ LOGO = """
62
  padding-top: 1rem;
63
  padding-bottom: 0rem;
64
  }
65
- '''
66
- [data-testid="metric-container"] {
67
- width: fit-content;
68
- margin: auto;
69
- }
70
-
71
- [data-testid="metric-container"] > div {
72
- width: fit-content;
73
- margin: auto;
74
- }
75
-
76
- [data-testid="metric-container"] label {
77
- width: fit-content;
78
- margin: auto;
79
- }
80
- '''
81
  </style>
82
- <div class="block-container">
83
- <div style="text-align: center; margin-bottom: 0.5rem; width: fit-content; margin: auto;">
84
- <img src="https://i.imgur.com/ngJZ4Gh.png" alt="Nt3awnou logo" width="fit-content" height="150" style="margin-top: 1rem; margin-bottom: 1rem;">
85
- </div>
86
- <div style="text-align: center">
87
- <a href="https://www.instagram.com/nt3awnou_morocco/" style="margin-right: 0.5rem; text-decoration: none;">
88
- <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Instagram_icon.png/2048px-Instagram_icon.png" alt="Instagram logo" width="30" height="30">
89
- </a>
90
- <a href="https://www.facebook.com/nt3awnou.morocco" style="margin-right: 0.5rem; text-decoration: none;">
91
- <img src="https://i0.wp.com/www.lestudioled.com/wp-content/uploads/2016/05/facebook-logo-png-transparent-background.png" alt="Instagram logo" width="30" height="30">
92
- </a>
93
- <a href="https://www.linkedin.com/in/nt3awnou-morocco-01062a290" style="margin-right: 0.5rem; text-decoration: none;">
94
- <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/c/ca/LinkedIn_logo_initials.png/600px-LinkedIn_logo_initials.png?20140125013055" alt="LinkedIn logo" width="30" height="30">
95
- </a>
96
- <a href="https://linktr.ee/nt3awnou">
97
- <img src="https://seeklogo.com/images/L/linktree-logo-6FC3ADB679-seeklogo.com.png" alt="Linktree logo" width="30" height="30">
98
- </a>
99
- </div>
100
  </div>
101
-
102
- # """
103
 
104
  REVIEW_TEXT = """**If a request should be reviewed or dropped submit its id here/ إذا كان يجب مراجعة أو حذف طلب، أدخل رقمه هنا:**"""
 
1
  INTRO_TEXT_EN = """
2
  <div style="text-align: left;">
3
+ Nt3awnou نتعاونو is a collaborative platform dedicated to aiding individuals impacted by the recent earthquake in Morocco. Our core mission is to streamline and coordinate timely assistance for everyone affected. How do we achieve this? We assist those in need by allowing them to communicate their location and the specific aid they require, either by completing a form or sending a voice message via WhatsApp to a designated number. Once we receive and process this information, it can be viewed in our dashboard, which allows NGOs to organize and precisely target their interventions, ensuring swift assistance reaches those in need. Any organization that has taken initiative in a particular area can notify us by completing a dedicated form. This data is also incorporated into the dashboard so that other NGOs can help affected areas that still haven't received help.
4
  <br>⚠️ Warning : There are still rocks falling down the mountains, making the roads to the affected areas very dangerous. We advise volunteers to donate directly to specialized NGOs.<br>
5
  <br>
6
  <b>✉️ You can contact us via email at </b><a href="mailto:nt3awnoumorocco@gmail.com">nt3awnoumorocco@gmail.com</a> or via Instagram <a href="https://www.instagram.com/nt3awnou_morocco/">@nt3awnou_morocco</a> <br>
 
12
  """
13
 
14
  INTRO_TEXT_AR = """
15
+ <div style="text-align: right;">
16
 
17
+ نتعاونو هي منصة تعاونية لمساعدة الأفراد المتضررين من الزلزال الأخير في المغرب. مهمتنا هي تسهيل تقديم المساعدة في الوقت المناسب و بفاعلية و تنظيم لجميع المتضررين. كيفاش؟ كنعاونو الناس لي محتاجين للمساعدة إعلمونا بمكانهم و نوع المساعدة لي محتاجين ليها سواء عن طريق ملأ الاستمارة أو عن طريق إرسال تسجيل صوتي عبر واتساب إلى رقم مخصص. بعد معالجة هاد المعلومات، كنجمعوهم فخريطة كتمكن الجمعيات من تنظيم و استهداف تدخلاتهم بدقة باش توصل المساعدة للناس لي محتاجين في وقت أسرع. و كل جمعية قامت باللازم في منطقة معينة تقدر تعلمنا عن طريق ملأ استمارة مخصصة لهاد الأمر. هاد المعلومات كذلك كتضاف للخريطة باش باقي الجمعيات يتاجهو لمناطق أخرى مازال ماوصلاتهم مساعدة.
18
  <br> تحذير : نظرا لخطورة الطرقان بسبب الحجر اللي كيطيح من الجبال، ننصح المتطوعين اللي بغاو يساعدو ��لمناطق المتضررة يتبرعو عن طريق الجمعيات المختصة⚠️
19
  <br>
20
  <br>
 
27
  </div>
28
  <br>
29
  """
30
+
31
  INTRO_TEXT_FR = """
32
  <div style="text-align: left;">
33
+ Nt3awnou نتعاونو est une plateforme collaborative dédiée à l'aide aux personnes touchées par le récent tremblement de terre au Maroc. Notre mission principale est de rationaliser et de coordonner une assistance rapide pour toutes les personnes touchées. Comment y parvenons-nous ? Nous aidons les personnes dans le besoin en leur permettant de communiquer leur localisation et l'aide spécifique dont elles ont besoin, soit en remplissant un formulaire, soit en envoyant un message vocal via WhatsApp à un numéro désigné. Une fois reçues et traitées, ces informations peuvent être consultées dans notre tableau de bord, qui permet aux associations d'organiser et de cibler précisément leurs interventions, afin que l'aide parvienne rapidement à ceux qui en ont besoin. Toute organisation ayant pris une initiative dans une zone particulière peut nous en informer en remplissant un formulaire prévu à cet effet. Ces données sont également intégrées au tableau de bord afin que d'autres associations puissent aider les zones touchées qui n'ont pas encore reçu d'aide.
34
  <br> ⚠️ Avertissement : Il y a encore des chutes de pierres dans les montagnes, ce qui rend les routes vers les zones touchées très dangereuses. Nous conseillons aux volontaires de faire des dons directement aux associations spécialisées.
35
  <br>
36
  <br>
 
48
  </div>
49
  """
50
 
51
+ HEADERS_MAPPING = {
52
+ "إغاثة" : "Rescue | إغاثة | Secours",
53
+ "مساعدة طبية": "Medical Assistance | مساعدة طبية | Assistance médicale",
54
+ "مأوى": "Shelter | مأوى | Abri",
55
+ "طعام وماء": "Food & Water | طعام وماء | Nourriture et eau",
56
+ "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)": "Danger | مخاطر (تسرب الغاز، تلف في الخدمات العامة...) | Danger",
57
+ }
58
+
59
+ COLOR_MAPPING = {
60
+ "إغاثة": "red",
61
+ "مساعدة طبية": "orange",
62
+ "مأوى": "beige",
63
+ "طعام وماء": "blue",
64
+ "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)": "gray",
65
+ }
66
+
67
+ ICON_MAPPING = {
68
+ "إغاثة": "bell", # life ring icon for rescue
69
+ "مساعدة طبية": "heart", # medical kit for medical assistance
70
+ "مأوى": "home", # home icon for shelter
71
+ "طعام وماء": "cutlery", # cutlery (fork and knife) for food & water
72
+ "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)": "Warning" # warning triangle for dangers
73
+ }
74
 
75
  CREDITS_TEXT = """
76
  <hr>
77
  <div style="text-align: center;">
78
  <p>By <b>Moroccans</b> for <b>Moroccans</b> 🤝</p>
79
+ <p>Bot powered by <a href="https://www.annarabic.com/">Annarabic</a></p>
80
+ <p>Collaboration made possible thanks to <a href="https://summerschool.morocco.ai/">AI Summer School</a></p>
81
  """
82
 
83
  LOGO = """
 
86
  padding-top: 1rem;
87
  padding-bottom: 0rem;
88
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  </style>
90
+ <div style="text-align: center;">
91
+ <img src="https://storage.googleapis.com/storage-annarabic/Nt3awnou(1).png" width="200" height="200">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  </div>
93
+ """
 
94
 
95
  REVIEW_TEXT = """**If a request should be reviewed or dropped submit its id here/ إذا كان يجب مراجعة أو حذف طلب، أدخل رقمه هنا:**"""
src/utils.py CHANGED
@@ -1,78 +1,69 @@
1
- import re
2
- from typing import Union
3
  import folium
4
  import pandas as pd
5
  from folium import plugins
6
- import streamlit as st
 
7
 
8
  EPICENTER_LOCATION = [31.12210171476489, -8.42945837915193]
9
  BORDER_COLOR = "black"
10
 
11
- # @st.cache_resource
12
  def parse_gg_sheet(url):
13
- print("Parsing Google Sheet:", url)
14
  url = url.replace("edit#gid=", "export?format=csv&gid=")
15
  df = pd.read_csv(url, on_bad_lines="warn")
16
  return df
17
 
18
- @st.cache_resource
19
- def parse_json_file(url):
20
- df = pd.read_json(url)
21
- df = pd.json_normalize(df.douars)
22
- return df
23
 
24
- def is_request_in_list(request, selection_list, options):
25
  if isinstance(request, float): # Check if the input is a float (like NaN)
26
  return False
27
-
28
  if "," in request:
29
  all_requests = [r.strip() for r in request.split(",")]
30
  else:
31
  all_requests = [request]
 
32
 
33
- # If at least one of the requests is not in the options or in the selection list, return True
34
- for r in all_requests:
35
- if r not in options:
36
- return True
37
- if r in selection_list:
38
- return True
39
- return False
40
 
41
- def add_latlng_col(df, process_column: Union[str, int]):
 
 
 
 
 
 
 
 
 
 
42
  """Add a latlng column to the dataframe"""
43
- if isinstance(process_column, str):
44
- df["latlng"] = df[process_column].apply(parse_latlng)
45
- elif isinstance(process_column, int):
46
- df["latlng"] = df.iloc[:, process_column].apply(parse_latlng)
47
- else:
48
- raise ValueError(f"process_column should be a string or an integer, got {type(process_column)}")
49
  return df
50
 
51
  # parse latlng (column 4) to [lat, lng]
 
52
  def parse_latlng(latlng):
53
  if pd.isna(latlng):
54
  return None
55
- try:
56
- # case where there more than one comma 30,98 , -7,10
57
- if latlng.count(',') > 2:
58
- d1, d2, d3, d4 = latlng.split(",")[:4]
59
- return [float(".".join([d1, d2])), float(".".join([d3, d4]))]
60
 
61
- # case of more than one dot 30.98. -7.10
62
- if latlng.count('.') > 2:
63
- d1, d2, d3, d4 = latlng.split(".")[:4]
 
 
 
 
 
 
 
 
 
64
  return [float(".".join([d1, d2])), float(".".join([d3, d4]))]
65
-
66
- # case where there is only one comma 30,98 , -7,10
67
- lat, lng = latlng.split(",")[:2]
68
- # remove anything that is not a digit or a dot or a minus sign
69
- lat = re.sub(r"[^\d\.\-]", "", lat)
70
- lng = re.sub(r"[^\d\.\-]", "", lng)
71
- return [float(lat), float(lng)]
72
-
73
  except Exception as e:
74
  print(f"Error parsing latlng: {latlng} Reason: {e}")
75
  return None
 
 
76
 
77
  def add_epicentre_to_map(fg):
78
  # Removed the spinner to not confuse the users as the map is already loaded
@@ -83,16 +74,16 @@ def add_epicentre_to_map(fg):
83
  text_color='white'
84
  )
85
 
86
- fg.add_child(folium.Marker(location=EPICENTER_LOCATION,
87
- # popup="Epicenter مركز الزلزال",
88
  tooltip="Epicenter مركز الزلزال",
89
  icon=icon_epicentre))
90
-
91
 
92
 
93
  def add_danger_distances_to_map(map_obj):
94
  Danger_Distances_group = folium.FeatureGroup(name='Danger distances - earthquake magnitude 7 | مسافات الخطر - قوة الزلازل 7').add_to(map_obj)
95
-
96
  zones = [
97
  {"radius": 100000, "fill_opacity": 0.1, "weight": 1, "fill_color": "yellow", "tooltip": "50 to 100 km - Moderate risk area | منطقة خطر معتدلة"},
98
  {"radius": 50000, "fill_opacity": 0.1, "weight": 1, "fill_color": "orange", "tooltip": "30 to 50 km - High risk zone | منطقة عالية المخاطر"},
@@ -113,55 +104,6 @@ def add_danger_distances_to_map(map_obj):
113
  ).add_to(Danger_Distances_group)
114
 
115
 
116
- def add_village_names(douar_df, map_obj):
117
- village_fgroup = folium.FeatureGroup(name='🔵 All the Villages / جميع القرى', show=False).add_to(map_obj)
118
-
119
- for _, row in douar_df.iterrows():
120
- lat = row['lat']
121
- lng = row['lng']
122
- lat_lng = (lat, lng)
123
- dour_name = row['name'].capitalize()
124
- maps_url = f"https://maps.google.com/?q={lat_lng}"
125
- display_text = f'<br><b>⛰️ Douar:</b> {dour_name}<br><a href="{maps_url}" target="_blank" rel="noopener noreferrer"><b>🧭 Google Maps</b></a>'
126
-
127
- folium.CircleMarker(
128
- location=[lat, lng],
129
- radius=0.1,
130
- tooltip = dour_name, # we might remove the tooltip to avoid crowding the map
131
- popup=folium.Popup(display_text, max_width=200),
132
- color= "#0046C8",
133
- opacity = 0.7
134
- ).add_to(village_fgroup)
135
-
136
-
137
- def init_intervention_fgs(m):
138
- intervention_fgs = {}
139
-
140
- fg_done = folium.FeatureGroup(name="Done ✅", show=True).add_to(m)
141
- fg_planned = folium.FeatureGroup(name="Planned ⏳", show=True).add_to(m)
142
- fg_partial = folium.FeatureGroup(name="Partial 📝", show=True).add_to(m)
143
-
144
- intervention_fgs["Done ✅"] = fg_done
145
- intervention_fgs["Planned ⌛"] = fg_planned
146
- intervention_fgs["Partial 📝"] = fg_partial
147
-
148
- return intervention_fgs
149
-
150
-
151
- def init_emergency_fgs(m):
152
- emergency_fgs = {}
153
-
154
- fg_high = folium.FeatureGroup(name=_("High Emergency 🔴"), show=True).add_to(m)
155
- fg_medium = folium.FeatureGroup(name=_("Medium Emergency 🟠"), show=True).add_to(m)
156
- fg_low = folium.FeatureGroup(name=_("Low Emergency 🟡"), show=True).add_to(m)
157
-
158
- emergency_fgs["High"] = fg_high
159
- emergency_fgs["Medium"] = fg_medium
160
- emergency_fgs["Low"] = fg_low
161
-
162
- return emergency_fgs
163
-
164
-
165
  def init_map():
166
  m = folium.Map(
167
  location=[31.228674, -7.992047],
@@ -203,8 +145,6 @@ def init_map():
203
  # Add danger zones
204
  add_epicentre_to_map(m)
205
  add_danger_distances_to_map(m)
206
- emergency_fgs = init_emergency_fgs(m)
207
- intervention_fgs = init_intervention_fgs(m)
208
 
209
  # Add a LayerControl to the map to toggle between layers (Satellite View and Default One)
210
  folium.LayerControl().add_to(m)
@@ -217,4 +157,6 @@ def init_map():
217
  strings={"title": "My location | موقعي", "popup": "My location | موقعي"},
218
  ).add_to(m)
219
 
220
- return m, emergency_fgs, intervention_fgs
 
 
 
 
 
1
  import folium
2
  import pandas as pd
3
  from folium import plugins
4
+ from src.map_utils import legend_macro
5
+
6
 
7
  EPICENTER_LOCATION = [31.12210171476489, -8.42945837915193]
8
  BORDER_COLOR = "black"
9
 
 
10
  def parse_gg_sheet(url):
 
11
  url = url.replace("edit#gid=", "export?format=csv&gid=")
12
  df = pd.read_csv(url, on_bad_lines="warn")
13
  return df
14
 
 
 
 
 
 
15
 
16
+ def is_request_in_list(request, selection_list):
17
  if isinstance(request, float): # Check if the input is a float (like NaN)
18
  return False
 
19
  if "," in request:
20
  all_requests = [r.strip() for r in request.split(",")]
21
  else:
22
  all_requests = [request]
23
+ return any([r in selection_list for r in all_requests])
24
 
 
 
 
 
 
 
 
25
 
26
+ def marker_request(request):
27
+ # in case of multiple requests we use the first one for the marker's icon
28
+ # requests are already sorted by priority from the form
29
+ try:
30
+ displayed_request = request.split(',')[0]
31
+ except:
32
+ displayed_request = request
33
+ return displayed_request
34
+
35
+
36
+ def add_latlng_col(df, process_column):
37
  """Add a latlng column to the dataframe"""
38
+ df = df.assign(latlng=df.iloc[:, process_column].apply(parse_latlng))
 
 
 
 
 
39
  return df
40
 
41
  # parse latlng (column 4) to [lat, lng]
42
+ import re
43
  def parse_latlng(latlng):
44
  if pd.isna(latlng):
45
  return None
46
+ # lat, lng = latlng.split(",")
47
+ # return [float(lat), float(lng)]
 
 
 
48
 
49
+ try:
50
+ # check if it matches (30.9529832, -7.1010705) or (30.9529832,-7.1010705)
51
+ if re.match(r"\(\d+\.\d+,\s?-\d+\.\d+\)", latlng):
52
+ lat, lng = latlng[1:-1].split(",")
53
+ return [float(lat), float(lng)]
54
+ # check of it matches 30.9529832, -7.1010705 or 30.9529832,-7.1010705
55
+ elif re.match(r"\d+\.\d+,\s?-\d+\.\d+", latlng):
56
+ lat, lng = latlng.split(",")
57
+ return [float(lat), float(lng)]
58
+ # check if it matches 30,9529832, -7,1010705 or 30,9529832,-7,1010705, match1=30,9529832 and match2=-7,1010705
59
+ elif re.match(r"\d+,\d+,\s?-\d+,\d+", latlng):
60
+ d1, d2, d3, d4 = latlng.split(",")
61
  return [float(".".join([d1, d2])), float(".".join([d3, d4]))]
 
 
 
 
 
 
 
 
62
  except Exception as e:
63
  print(f"Error parsing latlng: {latlng} Reason: {e}")
64
  return None
65
+ print(f"Error parsing latlng: {latlng}")
66
+ return None
67
 
68
  def add_epicentre_to_map(fg):
69
  # Removed the spinner to not confuse the users as the map is already loaded
 
74
  text_color='white'
75
  )
76
 
77
+ fg.add_child(folium.Marker(location=EPICENTER_LOCATION,
78
+ # popup="Epicenter مركز الزلزال",
79
  tooltip="Epicenter مركز الزلزال",
80
  icon=icon_epicentre))
81
+
82
 
83
 
84
  def add_danger_distances_to_map(map_obj):
85
  Danger_Distances_group = folium.FeatureGroup(name='Danger distances - earthquake magnitude 7 | مسافات الخطر - قوة الزلازل 7').add_to(map_obj)
86
+
87
  zones = [
88
  {"radius": 100000, "fill_opacity": 0.1, "weight": 1, "fill_color": "yellow", "tooltip": "50 to 100 km - Moderate risk area | منطقة خطر معتدلة"},
89
  {"radius": 50000, "fill_opacity": 0.1, "weight": 1, "fill_color": "orange", "tooltip": "30 to 50 km - High risk zone | منطقة عالية المخاطر"},
 
104
  ).add_to(Danger_Distances_group)
105
 
106
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  def init_map():
108
  m = folium.Map(
109
  location=[31.228674, -7.992047],
 
145
  # Add danger zones
146
  add_epicentre_to_map(m)
147
  add_danger_distances_to_map(m)
 
 
148
 
149
  # Add a LayerControl to the map to toggle between layers (Satellite View and Default One)
150
  folium.LayerControl().add_to(m)
 
157
  strings={"title": "My location | موقعي", "popup": "My location | موقعي"},
158
  ).add_to(m)
159
 
160
+ # Macro to add legend
161
+ m.get_root().add_child(legend_macro)
162
+ return m