From 2b1490c00fc7c8505931510d31aac12c68bae513 Mon Sep 17 00:00:00 2001 From: 4RK4N <4rk4nus@googlemail.com> Date: Fri, 2 Feb 2024 23:35:37 +0100 Subject: [PATCH 01/14] NL sends braodcasts onPosted don't initialize readReciever and keepAliveReciever when patched_es = false time_interval = 5_min * 1.00 --- app/src/main/java/esel/esel/esel/Esel.java | 10 ++++++++-- .../esel/esel/datareader/EsNotificationListener.java | 8 +++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/esel/esel/esel/Esel.java b/app/src/main/java/esel/esel/esel/Esel.java index 639059e..6983122 100644 --- a/app/src/main/java/esel/esel/esel/Esel.java +++ b/app/src/main/java/esel/esel/esel/Esel.java @@ -6,6 +6,8 @@ import esel.esel.esel.receivers.KeepAliveReceiver; import esel.esel.esel.receivers.ReadReceiver; +import esel.esel.esel.util.SP; + /** * Created by adrian on 04/08/17. */ @@ -23,8 +25,12 @@ public void onCreate() { super.onCreate(); sInstance = this; sResources = getResources(); - startReadReceiver(); - startKeepAliveService(); + + boolean use_patched_es = SP.getBoolean("use_patched_es", true); + if (!use_patched_es) { + startReadReceiver(); + startKeepAliveService(); + } } public static Esel getsInstance() { diff --git a/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java b/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java index 18af204..823a2db 100644 --- a/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java +++ b/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java @@ -9,6 +9,7 @@ import java.util.List; import esel.esel.esel.util.SP; +import esel.esel.esel.receivers.ReadReceiver; /** * Created by bernhard on 24-01-18. @@ -16,6 +17,7 @@ public class EsNotificationListener extends NotificationListenerService { private static List lastReadings = new ArrayList(); + private static final ReadReceiver rr = new ReadReceiver(); @Override public void onNotificationPosted(StatusBarNotification sbn) { @@ -37,6 +39,10 @@ public void onNotificationPosted(StatusBarNotification sbn) { } catch (NumberFormatException err) { err.printStackTrace(); } + + long lastReadingTime = SP.getLong("lastReadingTime", System.currentTimeMillis()); + rr.broadcastData(null, lastReadingTime, true); + } } @@ -80,7 +86,7 @@ public static SGV generateSGV(Notification notification ,int record){ SGV oldSgv = lastReadings.get(lastReadings.size() - 1); long lastreadingtime = oldSgv.timestamp; // SP.getLong("lastreadingtime_nl",timestamp); int lastreadingvalue = oldSgv.raw; //SP.getInt("lastreadingvalue_nl",value); - if (value == lastreadingvalue && (lastreadingtime + (five_min * 1.05)) > timestamp ) { // no new value + if (value == lastreadingvalue && (lastreadingtime + (five_min * 1.00)) > timestamp ) { // no new value return null; } } From 138786d221027ee82e41411c1c6b9795c2808ada Mon Sep 17 00:00:00 2001 From: 4RK4N <4rk4nus@googlemail.com> Date: Fri, 2 Feb 2024 23:42:21 +0100 Subject: [PATCH 02/14] wrong condition --- .idea/modules.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.idea/modules.xml b/.idea/modules.xml index 25bb056..1e8560f 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,7 @@ - + From 9f72059fc01c6085a7f6eca2a5d355082ab56e12 Mon Sep 17 00:00:00 2001 From: 4RK4N <4rk4nus@googlemail.com> Date: Fri, 2 Feb 2024 23:42:40 +0100 Subject: [PATCH 03/14] wrong condition --- app/src/main/java/esel/esel/esel/Esel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/esel/esel/esel/Esel.java b/app/src/main/java/esel/esel/esel/Esel.java index 6983122..85ebc8f 100644 --- a/app/src/main/java/esel/esel/esel/Esel.java +++ b/app/src/main/java/esel/esel/esel/Esel.java @@ -27,7 +27,7 @@ public void onCreate() { sResources = getResources(); boolean use_patched_es = SP.getBoolean("use_patched_es", true); - if (!use_patched_es) { + if (use_patched_es) { startReadReceiver(); startKeepAliveService(); } From 3205d36f47cf32fd8bdae568b049bb3f18068c34 Mon Sep 17 00:00:00 2001 From: 4RK4N <4rk4nus@googlemail.com> Date: Fri, 2 Feb 2024 23:42:40 +0100 Subject: [PATCH 04/14] wrong condition --- app/src/main/java/esel/esel/esel/Esel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/esel/esel/esel/Esel.java b/app/src/main/java/esel/esel/esel/Esel.java index 6983122..85ebc8f 100644 --- a/app/src/main/java/esel/esel/esel/Esel.java +++ b/app/src/main/java/esel/esel/esel/Esel.java @@ -27,7 +27,7 @@ public void onCreate() { sResources = getResources(); boolean use_patched_es = SP.getBoolean("use_patched_es", true); - if (!use_patched_es) { + if (use_patched_es) { startReadReceiver(); startKeepAliveService(); } From fe3f8307f05d32c7a8f5fc0e6fd77b5e1306fd3c Mon Sep 17 00:00:00 2001 From: 4RK4N <4rk4nus@googlemail.com> Date: Sat, 3 Feb 2024 11:28:26 +0100 Subject: [PATCH 05/14] five_min *1.02 test (5 min 6 secs) --- .../java/esel/esel/esel/datareader/EsNotificationListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java b/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java index 823a2db..8a95f72 100644 --- a/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java +++ b/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java @@ -86,7 +86,7 @@ public static SGV generateSGV(Notification notification ,int record){ SGV oldSgv = lastReadings.get(lastReadings.size() - 1); long lastreadingtime = oldSgv.timestamp; // SP.getLong("lastreadingtime_nl",timestamp); int lastreadingvalue = oldSgv.raw; //SP.getInt("lastreadingvalue_nl",value); - if (value == lastreadingvalue && (lastreadingtime + (five_min * 1.00)) > timestamp ) { // no new value + if (value == lastreadingvalue && (lastreadingtime + (five_min * 1.02)) > timestamp ) { // no new value return null; } } From 37ccbdd05b59ba7b22a658d7a53b03eebe5f92d6 Mon Sep 17 00:00:00 2001 From: 4RK4N <4rk4nus@googlemail.com> Date: Sat, 3 Feb 2024 11:35:54 +0100 Subject: [PATCH 06/14] five_min *1.05 again (5 min 15 secs) --- .../java/esel/esel/esel/datareader/EsNotificationListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java b/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java index 8a95f72..c274164 100644 --- a/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java +++ b/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java @@ -86,7 +86,7 @@ public static SGV generateSGV(Notification notification ,int record){ SGV oldSgv = lastReadings.get(lastReadings.size() - 1); long lastreadingtime = oldSgv.timestamp; // SP.getLong("lastreadingtime_nl",timestamp); int lastreadingvalue = oldSgv.raw; //SP.getInt("lastreadingvalue_nl",value); - if (value == lastreadingvalue && (lastreadingtime + (five_min * 1.02)) > timestamp ) { // no new value + if (value == lastreadingvalue && (lastreadingtime + (five_min * 1.05)) > timestamp ) { // no new value return null; } } From 05ac090f910a140ebc8e532aec3f74a4d9e9ddde Mon Sep 17 00:00:00 2001 From: 4RK4N <4rk4nus@googlemail.com> Date: Sun, 4 Feb 2024 01:52:38 +0100 Subject: [PATCH 07/14] watch use_patched_es setting start and stop recievers on change --- app/src/main/java/esel/esel/esel/Esel.java | 2 +- .../java/esel/esel/esel/MainActivity.java | 21 +++++++++++++++++++ app/src/main/java/esel/esel/esel/util/SP.java | 2 +- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/esel/esel/esel/Esel.java b/app/src/main/java/esel/esel/esel/Esel.java index 85ebc8f..5343d87 100644 --- a/app/src/main/java/esel/esel/esel/Esel.java +++ b/app/src/main/java/esel/esel/esel/Esel.java @@ -60,7 +60,7 @@ public synchronized void stopReadReceiver() { } - private void startKeepAliveService() { + public void startKeepAliveService() { if (keepAliveReceiver == null) { keepAliveReceiver = new KeepAliveReceiver(); keepAliveReceiver.setAlarm(this); diff --git a/app/src/main/java/esel/esel/esel/MainActivity.java b/app/src/main/java/esel/esel/esel/MainActivity.java index 23d5593..1110d33 100644 --- a/app/src/main/java/esel/esel/esel/MainActivity.java +++ b/app/src/main/java/esel/esel/esel/MainActivity.java @@ -4,6 +4,7 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.SharedPreferences; import android.net.Uri; import android.os.Build; import android.os.Bundle; @@ -19,6 +20,7 @@ import java.io.File; import java.util.List; +import java.util.Objects; import esel.esel.esel.datareader.Datareader; import esel.esel.esel.datareader.EsNowDatareader; @@ -56,6 +58,25 @@ public void onClick(View view) { .setAction("Action", null).show(); } });*/ + + SharedPreferences.OnSharedPreferenceChangeListener settingsListener = new SharedPreferences.OnSharedPreferenceChangeListener() { + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + if (key.equals("use_patched_es")){ + if (SP.getBoolean("use_patched_es", false)){ + Esel.getsInstance().startKeepAliveService(); + Esel.getsInstance().startReadReceiver(); + EselLog.LogI(TAG, "started recievers for patched_es mode"); + } else { + Esel.getsInstance().stopKeepAliveService(); + Esel.getsInstance().stopReadReceiver(); + EselLog.LogI(TAG, "stopped recievers for patched_es mode"); + } + } + } + }; + SP.sharedPreferences.registerOnSharedPreferenceChangeListener(settingsListener); + buttonReadValue.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { diff --git a/app/src/main/java/esel/esel/esel/util/SP.java b/app/src/main/java/esel/esel/esel/util/SP.java index cf8b4f3..2042855 100644 --- a/app/src/main/java/esel/esel/esel/util/SP.java +++ b/app/src/main/java/esel/esel/esel/util/SP.java @@ -11,7 +11,7 @@ */ public class SP { - static SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(Esel.getsInstance().getApplicationContext()); + static public SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(Esel.getsInstance().getApplicationContext()); static public boolean contains(String key) { return sharedPreferences.contains(key); From be9bb41c8858daf0686df30d87210e858cbe1373 Mon Sep 17 00:00:00 2001 From: 4RK4N <4rk4nus@googlemail.com> Date: Sun, 4 Feb 2024 01:52:38 +0100 Subject: [PATCH 08/14] watch use_patched_es setting start and stop recievers on change --- app/src/main/java/esel/esel/esel/Esel.java | 2 +- .../java/esel/esel/esel/MainActivity.java | 20 +++++++++++++++++++ app/src/main/java/esel/esel/esel/util/SP.java | 2 +- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/esel/esel/esel/Esel.java b/app/src/main/java/esel/esel/esel/Esel.java index 85ebc8f..5343d87 100644 --- a/app/src/main/java/esel/esel/esel/Esel.java +++ b/app/src/main/java/esel/esel/esel/Esel.java @@ -60,7 +60,7 @@ public synchronized void stopReadReceiver() { } - private void startKeepAliveService() { + public void startKeepAliveService() { if (keepAliveReceiver == null) { keepAliveReceiver = new KeepAliveReceiver(); keepAliveReceiver.setAlarm(this); diff --git a/app/src/main/java/esel/esel/esel/MainActivity.java b/app/src/main/java/esel/esel/esel/MainActivity.java index 23d5593..3bb5d8a 100644 --- a/app/src/main/java/esel/esel/esel/MainActivity.java +++ b/app/src/main/java/esel/esel/esel/MainActivity.java @@ -4,6 +4,7 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.SharedPreferences; import android.net.Uri; import android.os.Build; import android.os.Bundle; @@ -56,6 +57,25 @@ public void onClick(View view) { .setAction("Action", null).show(); } });*/ + + SharedPreferences.OnSharedPreferenceChangeListener settingsListener = new SharedPreferences.OnSharedPreferenceChangeListener() { + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + if (key.equals("use_patched_es")){ + if (SP.getBoolean("use_patched_es", false)){ + Esel.getsInstance().startKeepAliveService(); + Esel.getsInstance().startReadReceiver(); + EselLog.LogI(TAG, "started recievers for patched_es mode"); + } else { + Esel.getsInstance().stopKeepAliveService(); + Esel.getsInstance().stopReadReceiver(); + EselLog.LogI(TAG, "stopped recievers for patched_es mode"); + } + } + } + }; + SP.sharedPreferences.registerOnSharedPreferenceChangeListener(settingsListener); + buttonReadValue.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { diff --git a/app/src/main/java/esel/esel/esel/util/SP.java b/app/src/main/java/esel/esel/esel/util/SP.java index cf8b4f3..2042855 100644 --- a/app/src/main/java/esel/esel/esel/util/SP.java +++ b/app/src/main/java/esel/esel/esel/util/SP.java @@ -11,7 +11,7 @@ */ public class SP { - static SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(Esel.getsInstance().getApplicationContext()); + static public SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(Esel.getsInstance().getApplicationContext()); static public boolean contains(String key) { return sharedPreferences.contains(key); From 2a8e5fc3f0ab95102827e8b9a049c6a4bddf536d Mon Sep 17 00:00:00 2001 From: 4RK4N <4rk4nus@googlemail.com> Date: Sun, 4 Feb 2024 02:12:37 +0100 Subject: [PATCH 09/14] minor code cleanup --- app/src/main/java/esel/esel/esel/Esel.java | 9 +++++---- app/src/main/java/esel/esel/esel/MainActivity.java | 1 - 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/esel/esel/esel/Esel.java b/app/src/main/java/esel/esel/esel/Esel.java index 5343d87..d47d81d 100644 --- a/app/src/main/java/esel/esel/esel/Esel.java +++ b/app/src/main/java/esel/esel/esel/Esel.java @@ -26,7 +26,7 @@ public void onCreate() { sInstance = this; sResources = getResources(); - boolean use_patched_es = SP.getBoolean("use_patched_es", true); + boolean use_patched_es = SP.getBoolean("use_patched_es", false); if (use_patched_es) { startReadReceiver(); startKeepAliveService(); @@ -54,9 +54,10 @@ public synchronized void startReadReceiver() { public synchronized void stopReadReceiver() { - if (readReceiver != null) + if (readReceiver != null) { readReceiver.cancelAlarm(this); readReceiver = null; + } } @@ -69,8 +70,8 @@ public void startKeepAliveService() { public void stopKeepAliveService() { - if (keepAliveReceiver != null) + if (keepAliveReceiver != null) { keepAliveReceiver.cancelAlarm(this); + } } - } diff --git a/app/src/main/java/esel/esel/esel/MainActivity.java b/app/src/main/java/esel/esel/esel/MainActivity.java index 1110d33..3bb5d8a 100644 --- a/app/src/main/java/esel/esel/esel/MainActivity.java +++ b/app/src/main/java/esel/esel/esel/MainActivity.java @@ -20,7 +20,6 @@ import java.io.File; import java.util.List; -import java.util.Objects; import esel.esel.esel.datareader.Datareader; import esel.esel.esel.datareader.EsNowDatareader; From 501b2f673b0f840d40b3af64e2d8e312c7525294 Mon Sep 17 00:00:00 2001 From: 4RK4N <4rk4nus@googlemail.com> Date: Sun, 4 Feb 2024 02:37:41 +0100 Subject: [PATCH 10/14] minor code cleanup --- app/src/main/java/esel/esel/esel/Esel.java | 6 +++--- app/src/main/java/esel/esel/esel/MainActivity.java | 4 +--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/esel/esel/esel/Esel.java b/app/src/main/java/esel/esel/esel/Esel.java index d47d81d..b4a37da 100644 --- a/app/src/main/java/esel/esel/esel/Esel.java +++ b/app/src/main/java/esel/esel/esel/Esel.java @@ -28,8 +28,8 @@ public void onCreate() { boolean use_patched_es = SP.getBoolean("use_patched_es", false); if (use_patched_es) { - startReadReceiver(); startKeepAliveService(); + startReadReceiver(); } } @@ -61,7 +61,7 @@ public synchronized void stopReadReceiver() { } - public void startKeepAliveService() { + public synchronized void startKeepAliveService() { if (keepAliveReceiver == null) { keepAliveReceiver = new KeepAliveReceiver(); keepAliveReceiver.setAlarm(this); @@ -69,7 +69,7 @@ public void startKeepAliveService() { } - public void stopKeepAliveService() { + public synchronized void stopKeepAliveService() { if (keepAliveReceiver != null) { keepAliveReceiver.cancelAlarm(this); } diff --git a/app/src/main/java/esel/esel/esel/MainActivity.java b/app/src/main/java/esel/esel/esel/MainActivity.java index 3bb5d8a..517d7ca 100644 --- a/app/src/main/java/esel/esel/esel/MainActivity.java +++ b/app/src/main/java/esel/esel/esel/MainActivity.java @@ -65,11 +65,9 @@ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, Strin if (SP.getBoolean("use_patched_es", false)){ Esel.getsInstance().startKeepAliveService(); Esel.getsInstance().startReadReceiver(); - EselLog.LogI(TAG, "started recievers for patched_es mode"); } else { - Esel.getsInstance().stopKeepAliveService(); Esel.getsInstance().stopReadReceiver(); - EselLog.LogI(TAG, "stopped recievers for patched_es mode"); + Esel.getsInstance().stopKeepAliveService(); } } } From f14451e64c86827a2c212c339a0bb67b3e0b7b41 Mon Sep 17 00:00:00 2001 From: 4RK4N <4rk4nus@googlemail.com> Date: Sun, 4 Feb 2024 21:49:42 +0100 Subject: [PATCH 11/14] more logs, try fix recievers shutdown crash --- app/src/main/java/esel/esel/esel/Esel.java | 3 +++ app/src/main/java/esel/esel/esel/MainActivity.java | 4 ++++ .../esel/esel/esel/datareader/EsNotificationListener.java | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/esel/esel/esel/Esel.java b/app/src/main/java/esel/esel/esel/Esel.java index b4a37da..15c9b95 100644 --- a/app/src/main/java/esel/esel/esel/Esel.java +++ b/app/src/main/java/esel/esel/esel/Esel.java @@ -65,6 +65,8 @@ public synchronized void startKeepAliveService() { if (keepAliveReceiver == null) { keepAliveReceiver = new KeepAliveReceiver(); keepAliveReceiver.setAlarm(this); + } else { + keepAliveReceiver.setAlarm(this); } } @@ -72,6 +74,7 @@ public synchronized void startKeepAliveService() { public synchronized void stopKeepAliveService() { if (keepAliveReceiver != null) { keepAliveReceiver.cancelAlarm(this); + keepAliveReceiver = null; } } } diff --git a/app/src/main/java/esel/esel/esel/MainActivity.java b/app/src/main/java/esel/esel/esel/MainActivity.java index 517d7ca..ed0a230 100644 --- a/app/src/main/java/esel/esel/esel/MainActivity.java +++ b/app/src/main/java/esel/esel/esel/MainActivity.java @@ -64,10 +64,14 @@ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, Strin if (key.equals("use_patched_es")){ if (SP.getBoolean("use_patched_es", false)){ Esel.getsInstance().startKeepAliveService(); + EselLog.LogV(TAG, "START patches_es keepAlive recievers"); Esel.getsInstance().startReadReceiver(); + EselLog.LogV(TAG, "START patches_es Read recievers"); } else { Esel.getsInstance().stopReadReceiver(); + EselLog.LogV(TAG, "STOP patches_es Read recievers"); Esel.getsInstance().stopKeepAliveService(); + EselLog.LogV(TAG, "STOP patches_es keepAlive recievers"); } } } diff --git a/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java b/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java index c274164..f9bb855 100644 --- a/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java +++ b/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java @@ -86,7 +86,7 @@ public static SGV generateSGV(Notification notification ,int record){ SGV oldSgv = lastReadings.get(lastReadings.size() - 1); long lastreadingtime = oldSgv.timestamp; // SP.getLong("lastreadingtime_nl",timestamp); int lastreadingvalue = oldSgv.raw; //SP.getInt("lastreadingvalue_nl",value); - if (value == lastreadingvalue && (lastreadingtime + (five_min * 1.05)) > timestamp ) { // no new value + if (value == lastreadingvalue && (lastreadingtime + (five_min * 1.0835)) > timestamp ) { // no new value // 5 min 25 secs grace time return null; } } From 38ee36f1a7a750189f15c30804632d8939ed50e2 Mon Sep 17 00:00:00 2001 From: 4RK4N <4rk4nus@googlemail.com> Date: Sun, 4 Feb 2024 21:49:42 +0100 Subject: [PATCH 12/14] more logs, try fix recievers shutdown crash --- app/src/main/java/esel/esel/esel/Esel.java | 3 +++ app/src/main/java/esel/esel/esel/MainActivity.java | 4 ++++ .../esel/esel/esel/datareader/EsNotificationListener.java | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/esel/esel/esel/Esel.java b/app/src/main/java/esel/esel/esel/Esel.java index b4a37da..15c9b95 100644 --- a/app/src/main/java/esel/esel/esel/Esel.java +++ b/app/src/main/java/esel/esel/esel/Esel.java @@ -65,6 +65,8 @@ public synchronized void startKeepAliveService() { if (keepAliveReceiver == null) { keepAliveReceiver = new KeepAliveReceiver(); keepAliveReceiver.setAlarm(this); + } else { + keepAliveReceiver.setAlarm(this); } } @@ -72,6 +74,7 @@ public synchronized void startKeepAliveService() { public synchronized void stopKeepAliveService() { if (keepAliveReceiver != null) { keepAliveReceiver.cancelAlarm(this); + keepAliveReceiver = null; } } } diff --git a/app/src/main/java/esel/esel/esel/MainActivity.java b/app/src/main/java/esel/esel/esel/MainActivity.java index 517d7ca..5a24fed 100644 --- a/app/src/main/java/esel/esel/esel/MainActivity.java +++ b/app/src/main/java/esel/esel/esel/MainActivity.java @@ -64,10 +64,14 @@ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, Strin if (key.equals("use_patched_es")){ if (SP.getBoolean("use_patched_es", false)){ Esel.getsInstance().startKeepAliveService(); + EselLog.LogV(TAG, "START patches_ed keepAlive recievers"); Esel.getsInstance().startReadReceiver(); + EselLog.LogV(TAG, "START patches_ed Read recievers"); } else { Esel.getsInstance().stopReadReceiver(); + EselLog.LogV(TAG, "STOP patches_ed Read recievers"); Esel.getsInstance().stopKeepAliveService(); + EselLog.LogV(TAG, "STOP patches_ed keepAlive recievers"); } } } diff --git a/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java b/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java index c274164..f9bb855 100644 --- a/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java +++ b/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java @@ -86,7 +86,7 @@ public static SGV generateSGV(Notification notification ,int record){ SGV oldSgv = lastReadings.get(lastReadings.size() - 1); long lastreadingtime = oldSgv.timestamp; // SP.getLong("lastreadingtime_nl",timestamp); int lastreadingvalue = oldSgv.raw; //SP.getInt("lastreadingvalue_nl",value); - if (value == lastreadingvalue && (lastreadingtime + (five_min * 1.05)) > timestamp ) { // no new value + if (value == lastreadingvalue && (lastreadingtime + (five_min * 1.0835)) > timestamp ) { // no new value // 5 min 25 secs grace time return null; } } From 1fc7439d80b2a4db1098eb0ce47c0acb04698c3e Mon Sep 17 00:00:00 2001 From: 4RK4N <4rk4nus@googlemail.com> Date: Sun, 4 Feb 2024 22:13:38 +0100 Subject: [PATCH 13/14] 30 secs grace time for new value --- .../java/esel/esel/esel/datareader/EsNotificationListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java b/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java index f9bb855..53bdbd4 100644 --- a/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java +++ b/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java @@ -86,7 +86,7 @@ public static SGV generateSGV(Notification notification ,int record){ SGV oldSgv = lastReadings.get(lastReadings.size() - 1); long lastreadingtime = oldSgv.timestamp; // SP.getLong("lastreadingtime_nl",timestamp); int lastreadingvalue = oldSgv.raw; //SP.getInt("lastreadingvalue_nl",value); - if (value == lastreadingvalue && (lastreadingtime + (five_min * 1.0835)) > timestamp ) { // no new value // 5 min 25 secs grace time + if (value == lastreadingvalue && (lastreadingtime + (five_min * 1.1)) > timestamp ) { // no new value // 5 min 30 secs grace time return null; } } From fa5cf3aa586a423e23d80224a47bcdc678925b46 Mon Sep 17 00:00:00 2001 From: BernhardRo <35614076+BernhardRo@users.noreply.github.com> Date: Fri, 9 Feb 2024 19:56:38 +0100 Subject: [PATCH 14/14] added backfill from eversensedms --- app/debug/app-debug.apk | Bin 4391806 -> 4392379 bytes .../main/java/esel/esel/esel/LogActivity.java | 2 +- .../datareader/EsNotificationListener.java | 4 +- .../esel/esel/datareader/EsNowDatareader.java | 4 -- .../esel/esel/receivers/ReadReceiver.java | 35 +++++++++--------- .../esel/esel/esel/util/LocalBroadcaster.java | 17 +++++---- app/src/main/res/values/strings.xml | 2 +- 7 files changed, 32 insertions(+), 32 deletions(-) diff --git a/app/debug/app-debug.apk b/app/debug/app-debug.apk index 2c9fcad87a9c8fd4f4ea9bda90ca778ea0eff1cb..a4d125df444b750994876c8051759d959d0bff87 100644 GIT binary patch delta 54590 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

wV={~MT4Q>y(>Em;F(}u!SWcI)bCY1fg*lm6 z#w1yt+E6*#wD^03FOX@+k?#`-ZH3ASC=1WjJ;^*QZ+4@w&3$LH39<0hHuxYqwMiZ=3(tQ#|3Lv?amuny*>dH2;J1gFJ-h4t@k_fS$DGvX zzsq%&2+e3}h?|RePKYE63$aSh7ZbV|n5o?!CwvyeiS^biOZW_~91|PKvy5jYM9UBn zz?O}piogTwTa>|`-{&zO`Y|{`wcb*eguk#~%J7|ISJ<=S&cl=M@)=KrSiT77l=gTIv4#+e#8GIr4XAV*J^HmpFUyC)eC-tlq<>d)O8PNON0)4GH(8|hg^)KT`NMozTn26QReHz;F zs0nc*qKA{4{q?{nGQpn;(b!XDg6+TKx&k!Km{8HqDWn|psWDu3Q;j(DB{-_P*Ac7d z9RkxXNf>G!+8UeMbc*KqCw~@Zgkfdd;I(VTugCYYHRCEs(Z?k>-QpVr*2W-trUL1m zw_lDXOzu~4`I+-WjB;{XqrhO0F0Fmrb5J;|+hs{}-HAvz^*lpWl2TqPa@pTf z!knJtgW!tJ*{mCuV>FkaIU{z^S9IXl4grH(#CghMC%AwEQ$L;L$h=zO_fZ%PN^{t+ z;$oAINE<~*)}y2xRrbaS{1=C)2UQ04Ue}?l^_f$2EOP;z?AGD98YA@y=@_mfeS&<4 z-|G|S>-az1u?V|}c|u5xgFj_3-6w-5CG(blKAuyXN=%DKdf$vGq@2JkVZ#8X@1f?Q zRAETl=Lil883$B)j8$6p5?O^dz>m|`u0Dq;S2^o|?<-S&VScZ%0NaNQ%ap6p{1Y^N z70XKLw_kUn3h~uH#RaV{UO7tAqS)|tcer!;lz=vE3bc`xW`M09zc zh~zu%34*}FG`BG;#^UCKv9=cz6Y>IL_z3AW0rNI$Grk5Jv+9dEJ28oy)=^i8s@42n zNs(Oon?82miHb3nbg)u!+Rp>0&2S>=!KP)o&om3u_v@WuI=X7KD2^5NQ^gAjfTZ+s+2ih>kwkzQRL08ITV*jc=@PugLrNR)=oHQG$nY(G^CWjr5OB!8~6U%1e0ie0-mt{{)Xq8<$+2*=SGd5O}pkxM_YDh^)>i=l1_g*487#2 zq=C_3Cay$JE&nbD118?VNGJ4#A&ao0)JsFnQmtm_RQpX-_mV;w|B}6? z;Gt3LK~d>WDbP}K&{QyjY#T3~tdyoQpvYZvGQ#7LcTiJuCdL{}OQdm2m)BNS;zJoJ zRg@`u=?0# ziu89;?fJlRMy0g0l&Q4za<0!UTTRnzLmO(1QFd4XT%~JUyzBU8{!Y*-TkUov*k`7} zM_kM=fAef{g6?$S5Y_W6O>KWTyS6ISx`oGW}QCR%LtmrKpAtFDjXbm#%` z6Up?X))}TNGd5a^fhtU#lpgGSsbLS=R^^@c)n#*CHyT!A>w|l`lqXtXh?h;hX*;^U zE(mi5m=~W>=K}WfPbmvqii&!#7ZPoQ247h7+8{R57a4nX3StI&kV7%lN|i$oz1D!a zcoLt90nXc>o|Z?_Y8{FO?v_VX_bv8RmHn5l5L*4%(u>-AFS)CXiMdKn4`sCsP4k6V zyP6}Sga)1K+Emhq1n$x^_f-Be<5ZTzfYA-0F$w`uqI+be`=BxI-Tf*?Fo5a@)r3$0A%;xZE@v31_I_yH@c1bK9+AkI>QJOLs1GI1<2m#!@6-J=g(H_EN&+{$creyqaUfI*vlvP0;1N*FluWlkFgy36Zd(C?v74Ujm#oJyej!M8n=HNM;7fu7yp9B@00%D&i3QnWp@Dm}@r&5TLh_v2KW zdS!GtNa>(eKB@Spb=yAcXJq=5kUhQ7{QrpJ3==*;{hI_14(ZeXFp6CNF^bXJ7(Qug z2|_omP-8Q8j%2x%xjOldf=WwESWax6GzEja<>I9XNLf07J=sS-RKbjvBc2=C1cRO> z!bTkFcTNtnxUh)Q7HS#&t!99lrYaHvf!M5pW1J~4d=i`Rl=xF)l89REs1dn zbBv=f!zUt^`qy`PWf9Gzq@hN^&mrQ#LE!q~y-^ksTKy3mIL^SYsGWiTfkX~g*GyMq zfH}M^trA8R=nMMe8;^Hy{?a=8Uv+)>iHePAfOLXLj;as0ic|+Iya)ZkaY5XL=UtO| z)i%*}@pnPte6f|_!r+|!X}Wm3#D%eM>0gCO7+o5#Nme4>AmG5o!U-YyVG6(tU_GLH zz~6$;=+>~-Sk?gelt^B9p-(uPm@cnYDfka)NAUmrhy4}d=HPh{3{c4tI&fa)SIjDc82%!LY*iGu^bRZzhz=kJ zp)>q7hBe+boUY7(7o=6hK#VoWYrCl9SeNkp0Y)EC2?AsTV&OvrtOKZo-!dw|TLtX< z7qVwZ5F*IK{YCod^Np#?aYN1!x9a_xM>T;3Y9jn_0CpC>CVUx^I(%sWt09&H;cH(| zfLVBR#KQn`L&PfFJ!Ee9)Bu()^)*sMP!-uc8YaBBp-|VoH5_mNw{w~q(tdd>+1)Sj zJShEGyLN6+58z@h2_rm;G$}up{_Fv(VhUiBOU5H~@vq@B(j%OOdZrTlyd?~aCBWGu zW4Q=0=WS&jb`&6>fQR^cVn1^twBghP`rbRT$H}|bZ)mIln==9OQ#De7r5`tuLfBo8 zlmqVGK6JN6u?9GPvHdpzik^?+Yp>uQIR2LOwmrj#)aT#kE2ru8xGsGGqOBJ~7d)-! z<(Bs2xvit?q!56Lm%(z^WcdWpIymQQY;c?Ay?f!g(_$O9aaOb>!P1Xq{a7vbm^{m=$tgo(`J11iOtwUy6S+?P9G}B-iBN=H*{(kE9$aog21c~{8QXzmrOc(3 zMVK(9A>up!YuImq0ujq!e+QVL6CVBs`(W{w3P9luBs5T|OUXbj?;7$$AQ7)?!g7h= zc_#2UjBUT55H76}%_u}?dI`=^+2^VlXyQOH!@{^i5>M7pi*@g-IT z!@lWl9d=>Nu&X}r&Q)wSK)m&NzEXR_D{9m<$c=%dFffNCnu#wIn;uw{NTO%ltIDY$ z|EwrPo^18uA*OtBx;*i!PFW{5))rMc7TFp-eXSAua2@JaRa4GOfTID z&vY!!QP+sE!p$shfuneG@Wup$L0iJ$Z0|VZkw1&$t)54kgxEem zLG<{kh`F(OEW^QlHz{y*o2ir$85L`}Tx(5w-1H<6J9e`LTSwCn6{N^mo0N%dIfnS} z>c!q8>puiHu?R+7h@wxGM^K`|+g==`ww-&PA{in)qBZ?6i61`8P^f5Zzek^jqB}h9 zDv~yVc75JniVr}}?&ln71mh2(;wy}mf*~z~o6awmZ^WL8gaDK`S2#C>w3A9nk!SAj z3snO*o&(b!LIXPIX1iE=+8c6M4wu4Ic;%03R_7zgwXR32s-X2Jp=VIdM1ew!sNXPx!O=ZC~G`|`@n zqW5X^BB%?w{txiTkSFU%m0-zrpX>Z|IbNpZ+L)MJ-eTvr=O;G&VF&FXS?W!SIi+9J z`w%&m4%hcyBd;@g_lXQ(7b^nIq@9XG!O;>|4eomGz1;-T?4q4fDr?M)IlNhUaak2( z82Unt!M}OI@pREb7$@TOYMAnSm{mz%dXWLPbQGSZI~3qf&vB|V#ja0=FIO6qd>FML znkqHScK+#zWcqJ4q8`OmE(yQJ))(cryhN}d63vsg2CF^jeRZ<7*fM&zHqp3+EWS+J zu8*WqQr{7W>wNH)FUfrs7W#~_FU+leR)A?4|Til?3 z7Q?!H!)uEY?Pw%^NcX3@suIk^^_!|_AnV)yO!q9d$}1n-JSXNFa+-SnFLE48*Wtx^ zmQ!n~`A<S<28WsW-9B#tdG%!cN5_T&qy-a(ym-Iyr#IsdkA&;rgladtRBP@?#0fh{Vs zIPhZ3IT`e>7P1^kF8g*E@z*X`+Z4sh3cCa3|4)sJNx?#Q?5VEglUm5`WKL4#bWFDK zB`6|9^0@Dky=*eZS5uvpL7Po~tWGssmrRL?XK7F!wmO%iCR@X8Kx55&^pV)l_zJ8% zYf&$9G4o^3VjNTV$wY4@we$oH<*)-c4iNb&K~L`BouFN9qs9B!YKoq51c^q9%Y>1$ ziDE{j`o^)JnNNy%jeQbp6BLUUnRA;@_|{po6iI+-MrmH#F6tApe8H{B_Wm;1Y8?0o z7C*1ShyC00A&EX~CbiX)V2CU?YG=1>NzWowuHUP&?JO;vioZ3g2enQ#);}5Y;a7qJ1qxB`C-Y)2_eg`{s z6xnL3tl0uT#v;$taL*2ts>EKbsK_&%;snbW2=6-@W$nLxm?lrb8l2ILzJNPg#ry7Q z+!W#Dn{dfrSiQWh&-c3#lJ6cq3``_9A17S?+LZCpG!|Gr$y6ALu8`RJLV&5ownN4L z$>2jBGeHlj(R@jG#_VRo$BW<`0)zDl){}SXtK>D~Ii#g;LdrMuJ8VBnZ<936{hb*S zwMRnSzUg?!w2NO4-z@oUcdsLOh*IK%Xt`IHcE|vc!S*7fpIX?)ls~OIcLoqC86m02 z(8J-8s0`L&!Plx}2H4aNHvg29DY~6AoX*8?{QMK+tj@JKDWNw%;`D>CW3#jx%58z4 z^Vpo_T-~Y>kVsWK&Gi!7d-U*Qr&DF518Zwzp_S`}sP9O}v0+|u+zy-k=(b|p`#oL4 zSSY~roioNF?C;shr?Ey9gNfJi$Koo2CCyGm_`^)b-$Jg{DPn@Rlz2R%O>A?mlpzn`BBEgEU*vkzB)MaRw#U8dQ^>R6pu z1-v%iejkbY*=If|dMMH9J^4t0p;{6jq8ZkDPTCT}KuKWdB9uv0cSZ+H^R|ZM$Sx2~ zKqKxd0&UPP7W}W;OkLS4=3fRTb0@1xo&w3AF}>lSo}Zs|ESd=%OXbuba7`Z*f#A-l zn0qWVaQQpG7#xm$v=JDiIHC{VN$$IzflP=5``O@ zMnCfnl~)v^0!fy|S*d@|)rP!$;bD)cLDM%`-jUU|PAs+i$UrW1#a`%GY{jIs<)+Ab zrre_f>)sgthMZ;aS$=StUv*HRv>&00$8H>=^BJR|M?t6Q99Y0sF2AxYO8_7BYJV+! zr31c46IMD>Adk4g^0@A;9JLE4ZbaMuea-ezF+&x|V>9Hs*RAxAz1MrP52ik9 zUb9%+!7W*sAHcZLLS~*q5?Wg=IB3Uh*9frh4IdI~@vup*o!hW1QsVwLcGC5jJV1MG z05-1lcQ>O<|LORcoK`75?P&-d6`M8Ew>#dk|E!m)I(IxP?zJ97x0p7tlu{&r4C+)# zMu)!3sZOmW8Z*DuSK<|Dqt6Lei(0!NoJV1ZO-kyo0u(7&*&3&t0+shV;hqW)^G8UD zlZHl&DP<<;&378U#3j?UjkF=(H6>Y6o$C0v2^mAO1U188$6jP{BSmw&B#bBL+78Yr zsy0;jk|PUYyvAEQYkpkD45;pNXO>vRH&)UxGY7(vQx1XCnNoRg*w?Sg$AL#3RbKy! zCSt-`0i$MaN3kFMG%GBRh{}(;e?s%zfm5Szo`Ic##Li@m3v2$O)#!jd5oB(;ri=B}?*{5@y$K-ZAPY{bnl}Q!R zYZ=e>@nB9V5_%aJ>qiwH8E9?Jy(6)Q)L!H8Sx`>B$YgoWmE%WD6_klQm6T4rdw=E^ zqHHt)&jI?9U{fir!5+2W#=S+-i}_R0SxR=QDJKJHTQrlOMze^yn7mV|!OUCk<2r%d z(f}+;^hHDK*)=K;WTX}B=}ja^wQn}jGMN?3ev$ST6dW#HGNF$YomCdhD)gx&T3aPW zBm?>;WyZ|57T!Di>aQBe8)BcV&4z}8KSe3v3+B<_$O%kd5SGFo#3t~Cn+HX|gTtgBw+#M>Eq(rLoToH@#VJ%< zuH=riDOgQ|jiqjZ-uH}8NzX6ah*>2W-t#Y*Cnho(cfX&2h~zo_cONgm zX_Oh)zb4LR=lnTh>qZ`#NCoyIntChIN64nRS&9xtBwx=WYM>CO6Fz z*ZOfOe`qONC(P-=LH6~3Wn{yf_TNA9r^>}_r+?&E(v4{>yzUV58ew=HB`)B4AEyWl zq|+1F;yM00_k7ChLmfDhGgaB~BZEf?L&IxlEg`<=^(3T@~?ua?yTTZ|g;A!|!xG zJqvx{7(IG3Sh$f~svKW%V7l`KRk7&Dgwgrd&u;GB(mWHYw8O6i`!C+a%uk|PHy)FN z?UW8Yu>-kF#x1&>e+R5tvWNA*L|#i_Z`isV-mx+zvvKy1t}5-rpzN zLylyt4%k8oW8~&js9=g_p_iARDGXm8#cj{Ksz5w*Sy~EuZU-|jz!~o86B6G_xRwzS zj+m=_9Szs5Xl6+J&S&T8qt2wy z?lId5#5~s*ssRZScBw_{(ImaJT$#wRV>{mLU&n3}t2Yu?tZR&uv;Y36=Pz>1QEV7* z<7$NtdYAsGN5q~_l|M-@8)2~JqvxCO#bljdP9@tx#-^EkQ1(v6CvL)CW=yp_8Ka(B zKq#vkWH=ebcK!DBzToQ4Jz>>Yf^!Qvt3tUr#P4V z!RpR9-AY|J)N2S@6wK0dH*#+HvzRW!IO?r}Yy+}CxOgdqJmce!ET%v%q~~`C{!R8} zVDoME+#F|x;8?Uh9X(@fJ6Hv^5gDS77WSp#*!V7f+{+RNfTKZkcXg)9Sqw^w4vi)0 z_8q^bW?-IJ!KQBGckOv1Qz*af9N0jPR-spGwR`b~%{YHcc*(~D{Jzdf$h~gy#=d7;drvn;hP>BS)E610X%QLreB-F91ELy* zSPg%_Cop~g?1sJnyF7Q~;KjXvE}gvmX0pS9t>g7=8s0g(>d-~|-hnIkbT#vKe+Vb9C(+wJ>|EFWKG z{PXfX>WTcXJFXsd!(qBp@j(}FtlHel_d`O_v8Q(q?*Hob^VBQXwyljDXPjx*qQ2j* zYtvu82#7Nu81rk#iqD_>K6TgLb&j|am6qqloBY)amPr~gXp~o;YfY^YVDV-C+Du ze(xIJ$kg@qicQjW^O(K7>)O4+rAw8aux{znS4Y0@E_3XMS!u^n1)Da``KGFSiBhuX z>yTTMoEo@Q2yK1v)jofV^Jj}3SvGK9c(vGWty*frBj%49e`HVdZ#92SwqKoMp3w5f zkfu4k>KOuF*_DX6bBN-t0PO?cZ&w zyYZp*g(kMSS1yzuEA*Q`W4oE3lww#B_ZZn`=R1XSqz=mDH!g zyF=|?Hht(C^nBU43KMHPKG+z)_Tl1bv-SnAt$b?MVgF|f%y*s<13v9pK5wj#N0n}2 zmx6l_am|-_C;sd(n*udGTc5vuGI>Vs$gVYQyXW-%^#00b-Rp!$O%Gb2UDQFdVA!Oz(2iyfj~2Iy=rdrQanVk% z;h%>UZnGlfNy!lE^?1K znOJhx;*|}%#_Y-!>0Erqp;x(^R4`b#nR0h)-1eWnN?-nEJZ4^O?DhebQ)eVv*jdi+OVr}kJtCj(TC=jmuFGv6kLuK@e4SI% z8=iaVf4I|&`zt3OJM}Qy_1+5K97TLPEULfV&ad96r#S;so+XE!xoND|wrzoGA)&j5 zwNJBhH%vP7wA_dW9UIi1-cc7+C~ob<9rXt9J-OCvsKxY^-BCc5nIjAj61|D!>1m^1^xV2>r)2I@|h zvN_{7u-2$w=F%wP6Ryi|uS}ZpS82>77iofM60U1zh|oyV7Q8`utt5@cL3}_F{)A04 zOh7#L;0Y`(B&jHxVF>17H&XEfE|!v16`ipVr|<Xp1RG#C>}M z-x)ecQW>T*@DatF*l`0NbCC>-+>%rg{jnNpD4a)`KNK$XC!UGg7NF~H04FwBv*zg}xQNUG_+G7!J z!Oe{$f~81BE_XHpw&Fh{sjfd(Z_Kj?H)q zcTY*`idA?Bw_=ji5zFxeMT;|!c{mRnFG&i)G@M5+Z;lw|iTCjG=LlgDu0dZ)lImidfsZ}- ziVCG!DH8DxUS;TeEJG?B%1TlY24OuO!lj%fwZs%0#&?t}FG<6&7vE8_0`u4hO+`tn zj#1bS!)rdgDoIiwY{WZM2;gkSe*8w&KuMZ}Wc)1vczyC z;WH{$V;(#33f|S}>gx3WGA6FVHi#8rC^q96ippFzn2lsu1#@B{7AbJ3AxVue7pW*v zld~PMI0LI%^gU+a67tuktFa6ZQM8VM>$?tz0*~QRmj*B!XJH*8Np%o|WB7&2^(1K| zcH#xx>a+KliBr%vV5OLaGq7qXNi`6Ivv6!guEA6sHt_Kl&W$-C5Q&wz4s8=js)Q~u z;waw1vnd;i$v6k6W|9<)NUX*Mm^GKAlIV7p-;IF8To4wa+^7>jM8^#3g;a243R}e!)JR%Mry<4}B4f^+?1~q#+$YVcm~Ij`FCEo|uRP z9KscRg0?@mb`(LW{`7x!CK{kEx?(VlSc82?#ueN_I=;dpf;~l5bVNUl$4VTf(pqC>d~5QA;F4##1V0l=&|^6LKbVQJn2gzo!*Z;{HtfSO+(wQOG=xC3#|X^FYFxl; zn2qGVfI8@oNQ}p9Y{g!j!DZYSN&i1*A|1bBJ&KzIN}w`oqZN8!5GEiNi?IefaTfRS z0-s?ynl|8zDu}^Fyhq+K5eUNw z%*O%ThHVTRj>2exiI{^GIDp&u2>oQb03IlbT9Y}{&6sG9J{XK>%tr!t;xumHB|gDy z3YiW?&w2$%61Utv3!%Mc|{5p~cJ5g3bUm^YXHU&q8r+`?P@g55kWK~z96 z!Y~o@k%a5`ggk=LFxp@`Heesl;3mGpVLm4>8lo2#;vjD0r-2Wz1srxv#Y!aM7+xUf zLi!axD2JM8gYJmJBCNm`oWWJ3;Vr(xB95~j`B4L7upf_*e-TH#Djx#Nu^x|M{vU-X zg<$ljnT*G~QgzYjO z65)2H)mHMGM(#K4H<*o2+fZ{XuLek0!sPB_#+ zV{}A6jK?zU!9Dy!p_SA{V{}9xjKC!9!eh9s;^_$Ekc6|ifk&`eO`d_FIUjvtL;|iL z9bRkbGxS0NzM|w>5))?Q1a9F4zM=R!ay+^q8e4G`pYa>|1jYgIMn%*@XafD;lZi-7 z#saLwE}X_?+{G(=M9KB^C2C_NlJEc}HgIlWF;bCxBbO|qa1?j(0d||Xk`RQ>n7E1l zU&_Q*oJ1Pl!*VmD7nDaAL|`;xune1V3>R?=kHA0CBw1|X%0XfHApnih6_FT)X_$-E z*lytC1X7TObbN))RyF{xsD;jm#6qmXRs4kAHZC#9=!ywQz&_l=SLEDI4uL#M z2}2AYv#<>(a1HnI9Zow~5PqnQM(Bia3`GoPVHq|e3CD36Phqi>3<)2ULnE}oKp3!i zC;gwm#4%jNOXw2WN;E+zx+4-%h{kdx;uId@3vwi}u_%hNXpU|ei&llFr*n+Eg1grg=^=O6uh{htkg7yIC2ZGTIV=)`saS@+kdyq_s3TT9O z7=-ay0mCsqt|ARTk@FCF8=k0y+GvB$7>aS2fp~1hP8>rD9^ezK4wKAK2!5!5Drknb z=!W4Kdzk*8!o+;6!(OD|4xZvQe#7<%dx2VLjE?Ay!5E9Fn2iP4i+j)<<>)|0cMQNp zEW&mi!L_3Xu6HKPjxl0EPefogR^lwaKzE$iY?y>N?1t_HdxgH3iWS(5gGj+M=uXlu zY9R(&aTFKu9={EIddj-eQb>G%)ZaR?`of;)JI zclZv66s`<-p%nPj6`aioM-=8@F}CA2-ox<%nGK~;6)n&S0}zeH*p4%}hG+Ny%|$L} zxWNxWXpD~NkI^tp;bRdt;5csJH9kXoi6a0Pc%lqyqZPVh7{+2M=3+ZeA_X_`2stma zJnCXFwjd2QS2z+^=>M`zgrFt*!+@pOjT?B1Z*aNFiHYXu1p_8vCe~ml_Tw7TQRo_1 z1nQtOhGIU};2=)o(lz@34io0rImD=i=IDem*oo`-fTB0(Gc-duMqws4U^fooB5vV1 ze#7}DM-G0df=1|sUKoh+20mtE753mT?%_MkQ@J<51*H*!aE!t<%)v;Z6Nm25|JRs!2J^ezcu*GA&)}8X5g;H#Bb>Dkp&TirWlB^Sc)A;!3Q|pCn=#aS|bcGScOC! z#sxgXC**lRm!KA!VLak-43`ajq$B4;`WYbz!yxQL8s5R{5rYp1yhn@2>=kBUJ-);5 z3C{soiLE$+6x_mFNKeVAa6?(tg`ou>y)Zn@DL=drg68Okff$VmFk(5jAQ5|U z4409H=lBe(+-6c9c%U?b&;XsG(|MFC+Rd$`n@3`o8Muz``i`uB4yJ zx?{h-Qq`(r`Yc`E=sU5x#5=KeZyckOm)pS}4vERjb9_4yU3ZQ?vF@ClF1^JkS4YRh zcCL@(}HbzJimN;`t0+4i}9m!``^oR za^^JsxNjHYwwEl_IAm(#cQ3h));nZ#y!*QNi?>(IimSDwXW?^Y56rr!ajIAQOl7x; z--dRpIq&l&r#A1B$453u3@;%!v=bKE-~x8!A*pNM&XJK}krl+fO0tv7wyF<$Zg(Ts z)!=znDbDzB#aL&p$QdB#63;8iI?qqrbZtTklhXdL+SekPO_nt^>G|*9t;uRKyjEu2 zGV1F2AISgu|HrfH9_S~oRgw#d<9+mc`>gQj$&$GHL9Ql>2FM;7>nWmMfLu)zKFfGk zE+AS}mGxq0fLuT`a<(xw*jc;^ki9k2jK-HWd_?{#6gCf}u-;q|5h&NuM9))x<`F4@ zaw)OCk!&ptMqP1JMdS4ly~Cfik`ot@{d3OITDqqR)uY_T`Xo*kwY}D@ygG9;$s!Ll%~uQqfIj}(WI*EuUWg4X@Al4 zIvaVUDjVs#+!)cqS$tCp^(&YzEE-m$C26IxQ_G6Nt0xr?SEFK%)kd?>0>;U$oy7Sd zf-cnwE?q;=PYnzqU|xD1+tX;S&P%u|mCh=$)b(mCk7$0%u7Ge3lKnLOHyF=%@Kq~C z2hmd1O~&(G^NBq{a#hXc&C0Z~ewU0@RgkIBe=EVN;;Ss{jn3Wm*-j$D+ONi&P zTuDQ5j*GyjZf+O00}kI8@H z7RG*K9F&toFVgGCc4A3g*+JuVF0)wJ&e!Qo<;H7K*^lbP^I3ID&e!RMR|u!Y!xYgX zM6RVVyJ+k@zNAQ2V$PS0BPWy+W9qSvO7+;x@s|m>7=KT+SAyP}XIG47Q*w&~^|*xc zUNcQc#L?pUhAdI8K1(dUE}GPrTWj{*FqIyxF9&NHr7F`#|EU(jwSin&W4L9!JKbB{ zsLw*80SjHcO(2hGu!!sBRs+^Enm-Xkpio0OKx1>yG#$}UuBh?9Z;Um1D68|Va<49r*uO`YLoC^&vkK93r_t^_^#XI>KX8vomnPrW{#Z_0jP=KnG+qT5_RjA|i!Yx_uMVo7t--hmc! zW$j!uGx4j19IB1em?qqf1-I+fwimTzTLptK5w%}eR*89Q=bM`uXC&q^=Ga+CG-^el zgrySjRhLL=B^S`vur?EK+sL`abN&x>t+j2&T=mv+U2QEpb8kEaap`CVGZqr1r z*(Y3tA(STb=2ZjYV4AL=IMEu86XnUL>`p zlAUu_+*#<`$z`-JaeAB{aVpDs$wf1-sGvkG;&cdUE9H@=(P-gtq1{1>)HyeVdBCEh3%k1G`i4#`%QqX##DQNz?o#~z$xZAMs% zd%l*r#91H9yyAQh&dsQircepx2Jfx8G)lDSN!RJdSc<+SEz7D0^L0-SW|=5Uk)xcY zv)EM1(o*>LV%hMq8KM4T361C_`)L!#WrV6dAsL&x;#n`2-Z2xqfK)jqCg+Y{9`P|tV)&vN>jFCY9HB6Q+=}7GEjCF zdje>{Z3IW{Qy-4n@+oRKwlAs1Endg^!YOOhm$GwHGs|je!ltV;X;oPzb-Xn{W@JY4 zh^iA<-cq*Ap3=6*W>zp4{s*~;*H57B=i#*d%b2Y!B~C6On)V|+OQ>PHx|T)Mt=y}G zkIq-Zg+zlWD>t#}B#n6XCwz8+8t&9zuBlnOFk@y5iN;jtrBdf}TxQrp{G22g69Ek^ z9Ym)H*-rCxQMR%>hjjVW<#t7|+?oHfl{IW+>7clVb=C9qaH{k4A3DtYsmh2Fvv{Yd8KK$t$XNvNSF1 zt+}^JEo;}=vandPg60ys{?%NYt!jk>L*x*VJXOvq{D;f-B4r1In@%g)8B;g58Oj!K z+bP_K%WUipZofY^)7D8PyfV=go;OTxqB)h6S;bm(+DUJkPV@L-)O)ilTbbKIE6#Q0 z60jIfne85>tdnN>UbRmAa0Y1O_lqr~Szq-;PFw1FYi1u%BCaCsgf71@9H2WEjbQ0L z2Q$NkMbtVPwHZnH!67xQU(3jLs1g}@#1xsA#7H52wwzx)R-%r_)OwwaJQ#Ia!;PuK zEZS%`iZVvCrZrMlM$8|^S$lpIXKk$$O4vheu4z?3-3{N-)NXT94R^ZwXU~&H{B^Xu zpHeDBXhxh?e)@{^%!)(Du>6cON@wI14!c=CJcW(8sDyK#Rl`+x>s-WnC0xot_`o?e zynnora);(WHUjT>Zl@kI%{UdRlSFYa;axNc;T1>^s@MrvQotXEV- z399UmVsXPIH9WMrm4`@Imh>D;iVV1HDT1CTm*+%FAF<>p@m`ZSR7=LncG|pGvI_Hv zPV0GIF`ZK1lqJKjW)<3tH_;?%f91q#J^7yvvb-+bCv(N6EY@YD&XeQVpuRWM@b7V) zFUxOc&g2nk*T|z|#&gn4yQPNX7IMJfj%TUOchrbaEP0eVdNFzSKkKV-Pp#s6Q0K0s zOmEHgM`|QFjz{346KO{GLXBi4${9*HVQfN3@?rq~Ghzh^2_# zP9N=8!p+mwaO_g@3E478GvjS$q@a56rbbioz`M+_rD)WMo1^K#zE;W>d{D}=r^k9R zgx`G33}>XrHA=YF7d4!f5-lbZ_W!PgJ8A0vP=5M}*p`;oYEnI=6hHi_hO_eGliy0j zSu|e3rguvDa}mrWXKEivR$|L`OV?~E@|6-Vu2JKE(xbPwvDOqRuVh8NIKIO&`*3HF zxv9`MTY`MP)6yYF)*A@EKe5PI73r~*7(b1*++wg{T05bv{HPail|pxGE0HtSvVf?v zM=mWwrxWU+%Lw&7rgKvhXY)gUZHPvnQDezr%beL#rOyl&_sE%5SX|AO3zc{s$E;-_7+#|;(ibBg%2Jo(#R`e#d%+_Ne+(z+JOnky(a9AY)sul%#b zq@o#h;^*)-A}jCyB57+Edt@)n%D%SO|7j)3Gpk~A?YUxEbG%!~%*A!*(&qi*R^rfH z*;~ZUWprriW14HHZC1i`RP%_R^XRv%tlNDa%Z&2NUT8|YrC3Pn1IT`QG0@B%lfXql%vefhEM*q5B4Xd14%Ur}Slx0n;YS|(sV=eQk z3DhT!gs@M}R+cr`oTHRE)Xi4LV6(Qyr?DEzN}oL!Q8B!U8eX!9mr3iJsxuK*R@S0% zJxdOka(Aip9~E~t%T|^?&MIT55~q}XXpvdwsxG2gOt@OB%&@h{8f^Af${MxKR+cr` zJg1aR2sM?>vt!T_eufS3jVJ2f?oZS~#KtffnW990bjXUP#Ph6lq>I|H+Y&~|+HRRM zxia&qx8`S9w(y^PY9|UVzK@NR-W|MSVd)qZL*CoyRBjo z|FPN1va;kErL5sNwd~b#Mt-IdhTm$!-6p7EE+x|lQ!j>9w95YYAKu;Z(; zT-6vg9C3>Gp;?2`?rSJ}Ir;Chj1lQ&r7Ui0wlapL4K%?svLac-(rs(0{3h!KJZU$K$(|6Z0^W+75G$|2hO%Soyata6LZ zt*z`uwM~2@^lnA=(98>D)~lPyvjMBK;>DG-#9LEttvIxmSKuU3Ke2iedIQZ&z=*9cJd}J>mmJ#61GcG!=|xk z!|g=+T*!==#-4#@lf-~S+=<+_^W~1|89o0Fxqw+^aW6BPl`zLqq*;7TZGv%X_TlFf zrEK#}rOZctFt4?f$eCMe#FQvkDv|eTN~FD}(PQPOhe+GXdlyr7^;z)G;kof7vx+V= zYwAUEBFzlo?RCcDI$=tk{z-&yzY;;a<-*yr<~${Q_q7_%%9=x${am-$&F_`6aE;SP+ty}YW)dN!}Im-u08Q@o!x(bhCkE!*JIa~~D@*qh=W zYSxU}#}IF!Lq;eoS$($E)i0D8c2ytK zpD5v_?itIv9g-VsR~5;cE2NAW%V;-xWP}=Dx5}RR${c3tOP*PU8L4lv68};xE1o^~ z^}4CN9Xg^sz*`vI-wOD$DZwa23Fir5je?1qke3W%g6-&3IRZ6k7=cj4Vlay@iphP^?j8ps+kt?0lNLIF)t%N&w zQNvjyvoA_Gu)7j=7yi?%GLlE@(}W-NRKrW`37cL6j&!yDdvN5{FSCkn-WhIAc7xSG z^+YoC=rgo(Yls?gJ3_8EwQ^qx`;N#A>y?aC+Pv!+b;qlTC3|^kzbl!8(IZNY)ez2S z`3fL-ygHk4RYfVWS`+`ovaYDld^>M`HbyPTeo1vaN5Q+ve+nW3tv$s4bF|W8TDDk0 z^(n3Dc`EOk@u#5rZN7R~e4fe$XJw0-uABVAHHFG!jcP$Yakj3tlk(8xBt|O*&E{t- zFui{A*0%Z2bc*u(01d5u)$w)13!J(?7iY!uW;?HUDTVizWfeMPp4_&=^&+pvKdul# z7v*-E&{fJ$KXLXVJyK|`FuO#s+B)T@hp7IPccL>du^XKe*r>5j8AaS?R`WbTso)}d zKIIiF74)LsWjac?K^(lo#b>z8cdu7Asxu8bv3t)hvsB*AN+iFC?QES(xbn@4XmW+6 zo^Qzvn~Nz|`0AteHYL(fvvRx8U*(I_|8|Oqt8#Nq#a+rzPqDwZwS)L}l_n4E5x1`? zchTp(05^R-)aM#a4%x4U{a$8#hb5dMt+S6a4yqDD~{O&_4%}lr^(o;ErKVmpSUmtRWCZ)1F zAFeCmLgHX5zXq}YrZUq>8*|HAJezLqDTd!7xwX7&EfQm`%Zi)Knb*8ev%6k%cUX9p zM#|sjyt?q1*v;2}zDAo)OjG!oSbLi{c@1BPx3_t4sP{_wnMX9c!`V>ljflR(H=`Ba zT8sJ1ta*;TL(|3H)6CL0yde&_%WT(=%pQ8fDBtuOF2=jGn*3RGzQ^fYeXVr?ahqD2 z!Qa$~TRPoj`o#i^jeqsWwjW9bXW_Ten%_52c3h;?dT9Bd@fWh0`GTDz)8vBe{{^>%I> zQT2p%F|qD3D_E<9tn!&cMMUN1_O{~vBetb~0UJ^3F*|wZ9q*$XJZ9$~I%kABoVCuY zEbXmbUC96ls{@RJPMYC#PS`&u^e7->ne-35$_szVf)Pr*a^aqw3yw97$6edC!vCM!_~h|5EOt-B80u40tKG(-x^^n#d>KJk{l! z_lnibt8F7nypnrrPt-L{6cg1Wt<~Qk5OaV2wZ7o`HsaSSxxV&A0~^ucH94|eBXR3B zSta%hd$aj9S4y5%N+eXXu)FfpU8H>CJLGM=6kdEeB(8IoAR@WXrLUJ{9V}K zpbspzWV=q7b!XTxxiY5zZfIZKFKaQz5i4&{ajeoQFL^5^bxL~I1!#Rx5?G9 zy!iHwjY|K-FHSA~#OtJ59%ADsPMw7w)OK_9S8BV6HlJk&?Q23T;x49s=2s|cc{&Q6 zyJIQw?K3CB5>GMq3uBwWFLDjdJJU?KCbXCmbQ0!Y`DLed88hv_$}P+s<_-wXElz%w z1I=2RCjE*yk|(~&-ey}(^P|4;3eeI^UH(oHR?2pIYdT~^0>1Ob=FW_n8AToQiv<*m zt!BY_#GRtlw*4i$%uNY)&~)$?K|kcKn%$fj# zTA+kl_gyg#|ES*-kI9Ja{VliB+|QWVUEHytY1{PG|5|T(KXq{jFGoL9xoOW9W>L4Pg!DWlRkFUOLma*^i?yWOFr+TuyG;F_APB}EQRaA&QfzoXdb*}s_D4z1l_Aam*1|Tqifl> zt@RiWE%rxs*Ng5)P1`B%{|3-B43|4y4{>t&u8I&Vkf#$OAnW-(b!*}l%Wb7=UECGh zp$e8ye3XO>>>}`#BFEg=P3YlURv$i6X}r8^NrM}GWX%}(An&u6*3qct} z{0O|r3mupa{PGLV=w8GdZ_KZVlL$)Qd9BQ81ZwDLa6E9jh@{9*FDK<`e!tdwfrbFR zUPKT?X@ukK4!rXr@^0|Khw~&}P8#c)7qYE@l*rH5~W zd&00f(R$bly;+4@74a59pp@H$Gxug_{h|j~idOr!7N-{eGd$kc7u`Pl-UzKMAp5_q zKU=X|?Ll?ed{*Eg_=~v{I6c~TWNNRNk*8ttaO!#@C+e%Lt6r;bR@GNsSE)}JZC>3_ zoqTH*3dqGufa8QCX~ojxD<#}PM)Kx7d9#YKD!d9Uv^x8c!9?J^UNs^$B0eCFZW}!N zNRVR;BICgcwMytAze77f{sH#`IUIHk588$>0;BWc@ex5NcAe#DePIH(4VT=isE1n$ zw}ZfnSPduKzUZx?$L_t0^@YkoJU5#bw&sJ$O%GQIPfRt8@DBkM7LL1(aM+62N|}bR z^8&&{z=xOd&ia5~il&B92&?yrZDm}gOhZ;fFNAaRscPld6Doz9eQ60_4Uh1F^ey77 z7vicsN$Z1E!q>^Q2=5Z-n+@X!l#^)UTf^1URAp}wCD^}If6QVU!xj5gTgyJwMlfd3 z5gy)?ydy)f@!fH(Y%8N7hI7Lf9H?W9vxkJvA)C9ks_ob9;fp_=ldl@dvaSa0@4u%t z@(_k@HYZ;H+~!(qS|1^A^&r`d>-e+k%=aL8B8IVo;Z@U70!y{KS!Qp3{SX`OL3E=Z zK=vZl_QoO6qpm*Cqnm(HBMN7|E6S~LrT0~5h2u3sKbP)Tkp|N0zR9|%tg*+ti zDEO^7gxjO%^mh{TglALX(4W=0oY|RMr56d$2%Crj5Wa_0@frpP#kPH0s=3QxK@{T! z(WpjDjST-Er~jtgs36+Bk1a?=&i$7=TaN10TMCkF!PtFn3Q6q&G_s>IX@r88(NPk+ z$WhZ1EkE}*vmqE)uD@0q>#H$^uRKs=@BnEq8N%g%I$NVTqMo^~n3EAHA_#;MAtj$R z#OOqs-c{s$pi&lpeyOo_p^F&dHO}x1UrETZX`BE4{8)xR$O}zlqp~Dj!tLdjMvhj9 z(iMX`YhTW21^vugjID^{Y|((|zHM-=)^W_=a4(#FRdm-FLUR553EZge@1GPQzbk3} z=qsst3B#yY^*V~~54nclaIQ{nqHQv&KhFz_ve|CN^Ix#%r0g2G^l?SW{gwBY6Lom_ zFO$(zK@oq6W>?EiYuxqXg&Bg}o$aW^0mn$mn~GYgalQ-9uh=P$f5ohwb||Dg9cI&Y zoi?A*_;JU)?}I4V$s#$wh#)8XKqQY*nO9FEopPxkUGdljvu#aFA~CN?MU4;$ymOVir(MMS_IL4^^$=`=_a;yCTZQUV1t#*Ul^pX6eW`3_WOw9suzP#yuQg>fQoE^%~xZuFI>iLQ) zvuqjtlJtgqCmt>1xn`@kjfl3~hhx>Eb=Y?bZpzi?dasETi1Gp%16xtp{BT=(eV0n9 z^EtmNKjMWY2rtfX^}8R3B|t)}57NqyteL2`KW}0*4$IU@-CXVh8Vm`Dp)x_gdegc-n}D;~HmmDKJXB+BNWySvaLGi2~? z|+&+iN{mk|06i#_agOd5WV-4h-cuRcIT274K3)!3s7iz83oZFwl>~#f5%af z#Nx;uI$?b8h%sLx-jJ*6hdb}h+)-jOc$rY38)m-eYpIlq;nh?aVQ%m-1;yI8noNjW z>0_rhT;Vh~p%iC&r~9xovXlBCuY5;+X_I^#>D8QMq2EkTE|9L{?MO#by1vqsw)m6+3oU3uu^9`n&ObhKA4J^|c!B#2Rm*{UN zd3G{{Q7;V0u8tHxeQFVoN{||GEDrlVRCxO=6VTv`AQTykFs&#%5 z^}j+kWZIZ~5`XOegD6|bP;@s7civa(!dgxl1^3p>Q*)}Fo*Q)3G_@OUDyu}N3ph>2 z9!UO93g_W@-BOB&zOfg6m8R zuE_04*%ND9JUZzw|30IRdQp$b(LFR0{>VbwNQy`_=q}yM)M0VR!s6*aej*&d!FV}q zy2B+b^812iQ4D(7$=_es$@x3qtxSoS={;SgnfMYBy(Hp;R-SUt?80|!YGEPiKojm` z10uVlz`Tx)jFcI@E)S2?6Ss_IU4_n`EbGXb0_~2=`D=qVS6<{lYu96=RON?%H_@vC zOwt}~2lpt|{sm0Kf6^>r!^_Xs(xnkH?^6EbzWQPLpu-s=VwKFcUqXmuvE2~t`LiH| z-nrPT_$eI0Yp9BqZ27;j#(BiwK`(LBda1*iwVPeEy%#lTy4dW@*!IQq=bQNdAxUOA z4f)|>=sS6(?h9mj&0~&zd}YBX99}=MLnLawb94MR-Th^;H{azb-0m%ESxWP(C0)4Z z%Ldlg!S#VT2>Y-q^u}c3#vRTeHIQe4yA*NJLeNgNZf%gg#F(~G`e^ul{$$VQvUR4* z)P2>)Aa(vdgCa+iSyou>h1g3zk861!`9XNAj~B=BoS#yWiauoLF{I#kh0^)0yQ&Sk zz>JK#OV{gk2W#b92X3atoB8^hf8Kg^OJ!S~JiRSPhr%5Khff~Kr$0msbE8-VP&hvL z>!|*h%*G_W?N~;57;|@M9KfYWDUs>4z{97}<}7$1P!l<`bcCTasN$#7!K?IMUT7)X6z3W2-zxT{U9iQSx(gr4divB%sH*Mo`e^xT>7 zXXn2(J`6|@sUu#wXbh%@4SzPsq*(RVM;4w~lbJShCI6o|q@mo=~ro9-o#OHO&4}1Ojwx!59_`%(DA%z;QC#UM523pNV_zqu;q4iOY8iqbT=_?YN$b~u$Hj8pAKJnGs0s) z`Y|4E;QX84iVFSAkt)4|<5?26@Kh>Eng-#U?T4%Ww5GZWKPv|CY~-o~=Z5{ZVvz*@ zJBojUQ}C)q;{#t|-Me)+SV3>ux-mPyt^_;eo?OuV6Wh6$FQ~cPj8sq8i}fwdFrM2E z!5K2Ig=e^jkAN85Hzq$161CV4xKySI{G2@Nt{l7Lv!ihXxCI^r9CV3I)<#6n<;1El zYwmDIuX*q_Uc5tCw6f5@bi_#vg9&vvY&LA2aU7PG|TF}92%#z6KS}Mw>Hz(TD6FWgy?jW za@L#@AND_If?*8{F8{itwYEVMQ4`&-kk?4A$`3ry|mNWUg936+r;ak<6E>6OG08k z5_^Z5_mLl3Xr562EoafQ*)@Q#Z$HYUpJ^v`RQTvQ)AusX>GSWFKFTiT*L%^Mrzi^1 z`8p}13({*4snjb~3Qy(TrQpx2a@~Y}ebH>6`{uKs%(qGDqby3_aLUh1#VHy07il`* z>HqM~u~SMITUSWGM!D2Y%k<_hXeNVD4qdr!$x;7*UMeN3+C9G6Zo1e-`DAC^UM#&9UKbqgnAlWX!F0s^g6rilFbru|%VFK2&>8T?MLN{ymn{_7mmV$1tybFJ|}Ri$f9 zFm3P5MrSI6Py~06hi(_Qnn*tvAs=-@C+Dv8g|nA9x}J;@%fQ74&!3_e%IH^tzejQ3 zh6?GTdwel_E^=!Qr)thrQWt{czm*~SJFt>9#Op{|OGO|2jL7x=3HjxpwTT4JcGjuW zv|cBmj`(&+ww*E&A|`~@pl~O%FwD$usRx=A1{{BY4d7J%6HYYke`Mc!+h3{NV~u+7 zKCxnpJjxVh-+skOz$K-_UaP7{s<*jz(9`Z;zg=}#c2c^{oWneai1r!O+mnUS62Dok zAXvwuggyCh2<4A@_n}(5p{#v>BO!AtI{I{C7}V&sm|f{K9~7k+7DZ?NOD=T!QVCF4YM z9v2j@w7WT6$ranaBN)x{+m(sWOvZyLs%ulcZ%}W(U&+x~ICba`0+h>Y*VCZ*9kpVS zyelM=rm%@El~Lm#InJLU^zTeTK1FEGrg+YpCg}-7bOG-UTD?{16Zn`!k{EFm=R)gH zJ)Q9j9XMnS%FVC~>4%`Pau04kUhgR?-RoKJSf-B%h9R-aO?I5g+&mGcNP}&bNJwQV zQaX6f5nJWAly!;Qco21Ir%+QtP1O9v!ob0_PN_@aRA#Y%u0fdbR{glz`S_@^eR%I& zn2w^`H+Z4UtE&$!H32jQa1KiYlqB-XlI~^y-CCNL(j*R4Ib=oOu2uD+sZy+nMi1vM z=ourGRSG3$#4ggL)3D9$=N3&E~_8wK74Kru!!XqCHVH_~<{43-p!Abl| z=7(B+VG`i--_O2_<;j#dBcx)4ntl_FdJcqLOSpp4X~v^r45zOh_ndouMuiV{#5o_4 zWnEM6hVs(Clm|k8XGN!)@D}s7E`Bx@{4_~n`RAuMQgg;~aLK(OYDG3$+)&D@`Q=a= z{qumk5~3xM^ZpZgSz@Vy}6e73&U_HxRpIkQYAKU=GsA0GXExz=p}nesM`MMV#HYqF9YC22c* z*perv@M<*vbUa=d`iD+p)NC!Qi&wU5aKrUbRviD=QHF7$+|pr&6?LYKh8Szi!Y0Fn z#=sO=C0T*BDnI4dRUw;z*BXj#p1vQ86di{c%donQLsssWn({)L02qN=5{B`@vL#Z_ zd&OzX$6=--2(I&&-P}I|((Neux}@~UO5*_urSC~e6~7}kKA@eW#0+gII&Yo#*$Oj| zY=&ANx86(h=T&`)t>Pcid29>%JKv50=_6B=C)NEK5|D`x_#S%{?pnKf)0!9}+qrk} zwZ>!J3DzPm%+_{fbS}p74G%L~)mo=TP9t1MtEPG60AlBHbS~OauQ6wwDjA4l-KuRnt^rYQ=Lq5P_x=6MwKTak#G`?($e-sV+Jn zmog=kxlu>>4gKYhG8Q3Cg&wpY#OSa4)-~qaXWo!1?wx4%Q6&eCyhWiu6RNFpX5zX? zEvxGD5rRB#H@&BltNpjaHmi;gcY{9tC+%TDuo7oRmAYhN%+IGx{>@I$h%>h4vn&Qi zhPjQ+`RMY|m-ixaZc)}B&t%rMXfmk-`dYbyLVi(7ZHmewYAwn#@LG}1;rOXlyLxyx zslAFx7Ta9rtJKcc*i4+Yc=e^!F3!pnC$cDWVtN%46u@4OdG&pwSfTm-VDg3u)J9ml zn7KO4f$^>`(yGsq3SrSZmNr#(D_M?TR|~Ih(^yC~)B8(oq2si$@R6Co?-4`Xd&Les zl^ERV?D1V?pHA}c2gB6NiiOEIr4!kQeruN1wSSbEQt3JfI~eGHb@$=B-hP)vIGdZ6 zS)p`yQHDr^KG)VUO?=r$To$1Rq`lnQS{ zio6py_7iO%izP&t2+t2~MXhg0S1-QwH}pgyi0At@(iy&Q>Fb}yP-J^!8gu2R9vMg||an zdX8(As1{ek=jW79+(=?=(oCW2N6Pwc{|R=XJljwO_6~%4{N)S%@4}HjHa$?g6`q#w zb^LtF*nd?^j5Z%$v;UF7Lw3^qi5cl`%`T*!(h0NA>6um__8X9)WW%tN@_J-dyvmY- z;*UPC(()o^hSGSeriFzw&FHuvPL)-#)xVZrGzc*`Y?#;BW}BVE`*RKVdz;pFG%3}L zh?AUN4CvFEo*t?LQ#) z`ISZd!oq5Kb5j)XgF~Z8wV}>Qp-2+t14J6eAZo1D!IU|GfRUEJgdB@iE!j>)AEs+B5aqD>adtnD4iy%0e3Jtw{Wcm&**) zuIs9EyV(~TpE9p{l|`px-MG_(E?>#Sl@Y^VZy^i!QKY1r0k@nO`fsX%G>cWdz9N=U z@@Pb9kAG7tRncp6*IUttFpHGdFP}ZjJPku5orFIfwYmdi7U9iXe+6E6p4Q|Oa=};f zt4cK^bspXiGTcL>nJ!eRjd4%$5o1W z)plv~S`bP1XN~?pY0EVH@K%x&@f+?3cstdxW=ubURm~I9q#BJp$I;i{+B{D#Xo*6=Y;5n?MCQjnW`8YTE|;0M4mS769SMkO3HuRtGG5(LlOe4yF_CMr1w(0Y*R_|B|Z-LT|Jj3bK-{>&k_sJB;uXXY2yI$mrfd+aT1183y((6^2oqgVfgr)tRdS}B<%^Df!UDM9E zKX-2jd&y!ki@z7V_FWs|S?QqpqxyroL>239DW~}(4*x*n zwC)Gf?+QPlUjccAf+vhmXx2q7vFS4W2C0Z=fnhuABfqBVCl&k?ZbbfT9^Q$vjvmVz z+$MVbwi6}C-5A2U>n=(%K zx!aqk{V>u`@%1w9S^KQ@vlYHO)tXl0kxn=e!=K8(kYI+)^4Vwp3>kh!q_G*yZ)dno zbD30b?*1*6K`~0}A&`drHq8&$OslM-hEQ}RyG5P(dVHwt&EuPK9EPNi@$7-kGo83K znQT`XAx)WdZg2mfOOT1SAZ!1t6}9I2&7cM{xIn$pJS}%_h|vKGCzxuMnH(7?+U1=j=#p0){P=-xuQ2 z^_1}z;3p&7k?mcsfXj}j+-JsW)^#?~u4?cbT_y9^f|u91>gH7JA&Do%D(PE-DtTMPDglEgGk2t?H4A^x=G$AT^F?l6F(@<5Tj9 zYv`}*O0;|t^STdBC0iy{a191dn%<_(r$SKvjzw zPdRZGQ_mA;l#are^juezUComhk_>dHy8()FIN{6+En`QDRPltn(~rv1BQhefDG-Tjffiji`CjB&uziRigbA%6+T68xJ&KhQ!tm+I0$;|8X z39MqV@Z?5Nd@IHFLS?vLkEpCvM!70*(azj5a3m;Ca(&`n+v;xlkHBC`=b_Mj;4eUlt6|53PwbBoXNEgyb7kIn?Id@OS&aO>6LeyBSMUU)-WuLR3> zw1jZx^*#K>wI-iTx#+*j-bP-I#hS?TX3I1|RDJUYF5eaN_AL)yt_PF$=RRNL9261J z8=fyW2JJ9&Kazx;EuIM5TTM%j{dI$* z`apN=r}Aw43e-@f5cLX3vOrq7HO@guZML_eEb{%zDr-iOd7iVhf!et;vrB?dXO3}f zZ|j?n9_E~-_axcWp(1(TvpHL&t8_B8(HFM@~qwK%V7>wbgqnr6vda)j~9Cv z%+8DRlVz`j6p`hpg#Ey^xW!DZxY86oBt-9~4;u+bEYb75DKxl8B;hdY6O5_G{HG*A zP(xGrw`*FsU`3}0lE@E_G*?FC=r+J?$TJ+H)nRyICzC`73l$(xfy53UZ={H3^W#n; zFm(#Uqr3uC^dgX0@nzgOXGQDmiY`?@JkC}Jds!|FwV#K`H@IQ_a6CMq;Im9c_ zn>IV~FpsvtZ-6og4?I*1c*e75evO-zrYt~Z+fph?m)cy=e7T(C1^z;jD!;@}p`V;O zlQe^>!r$I6QK=HSOIw=i%$iG%i@8MMoz@w7eQv;QU|w3uxTf7j*kC*FVt{B^DjUuG zxgzDt_OHO_d;;UIE3z848J4}pXBjgxb?k-6xGJ|{I+~jU z_-}>zA8>0uoG5LoZfdc7nEHffmR5^ZgIZO_F^x2O)@t41$*qEGz`&VvTh)KI7HM%AgmZS4CTZbcOlIiZ-eyp5;HXEIlurA$U z`}aMSqJ6G+DJHFPBqsQA!b>@FWK5TI>oTbV#t_l3NXb9j1!-J!%QDjAL#{GOBNO9S zp=?$w$@*ldzMWCRDDRukv{d4@%*(YH-KjaK1Aa+=oR;aeB{1D(XQ7R7NMye^FY9A! z4Qf>vOMY}gyxQ1ED3{Tu5nPg(@=XoU>`zKenULsEn%}`rTuY@B1VkG$F$<9jdM#bC+p$bJ6jVe1pK=R5fU zdgJ)If!^^e?OD?!%N}qzB6hv=h|6f!+h`Qkk^?3B~2GKAUlX^sph zwy3JP603(@-2Z8v<(6GMyO^lLEaY0*ba<$=d7}8y$tLujF+?5?9 z2fJ1N{4Xs@MlC+RpFsBPx2%p`4Fmb|)@MGtNNfgaxh&SyhJ=JDB?cykpR#h{$-}$k zp78=l(N?=j%yoYfJ)|cb8UHBf%<@f3E$k-we@P}z-QAB#`GdZ>m5sJ5@JrUZpV+!v zcX-CVFzWQ3`ZqJ_Dd~hl*WKF{P3;U`s6ZvTr}x*?=Oe7db7&$)aQv|u5vtRSe-|yO z^5*vlA-i8F;@tMTym_#+c>zL&(neNLAZJJcirGov+ zfZFnBUdJUvmNnt3sQXFwBPFI<`BPT~@GrFGz!a%4QaIw3KGS6{ZFObe`}F}0NT~l- zd3s^_$=L0%N+m^T#&iC%DolRf^HCKWG z=l7qLL0AfLQv4fYGgaBdwtW>V35Y&&fJ02meRp#eZ(n_3Wm}PFR#q}Xf^EgV@;En^ zY?b4U$m2TQ;Y`=+N2}2R1jnf&e+!8 zIa@TDiQ^%w3Wg`G>8bd-rO9Jgp=~Dey~XGjY8uV@tQkAU6MUX)tMiYSjAuA3{5{P( zQcc=`c!4$IRR>1v+DZA^t3t<+eY|_a>XlPhlQE8vNn%5Rkunv0g6rZwsk`qv1U7+s zZtwRLOVsBgcnV&cZ2Zu8f()l|B8Z9@-U|y(t?w})NoHr-+)v^hCH`*Dy)=@D6gHN% z`=>@0_2J&P>F#d-dXW!`{LLclFpSbLe)FQoDnB&B<6nE?=!nsEOB<>DW6|;KlYrKq z$pXYd#&|!KPn`JHnS+Z|Ptl|Q$-%8QKK>i$Ib2H1K$e$YUFz6*DfD}e?z{}i=s2%! z>+@}=;sax-rYZ-De1pXom#kA~VYb}0N|xQAqR)Imyr=V(3t^hmLOd(I*;Y2@OaCgq z^f<-pNLtto$c#twVwotxM>4qvwRo`7{@^QC{?nkcUdn`BNd zKDdz6krTFyuvNsYF@$KWXm+z6C#+1*tzu(D+duWY(K$QxsR-LjwPd1yDuM4CICb8m zcO&wWBO$D`oUAJUkFln*(q2>EdcV3F!!WC6THTL(_o`*$EMMRqJ{F9;6Ws^{w3#FSlJ#JW!@>Ta| z`ZrQ9Vq1zFC3}S5&&@2&H>ev|X^#?-gxmO2Hqu4$5|acfYmxF3D=t^xoP4IIEqk;w z4EjVJSFdMgNuGjZ*we(s$%!XbowMF={>{lf-p={L!6EM;{1au08oqLKxRFsVldu`q z0q+;W!*u0Ow^j2H$MlN3CH44R@mb{pZ=q~|Rh~?XBg1jF8D-);UPj=P>}h)XP2^_- zQ}!tGsOSGa_vfivKYXRm_Q-Z=!r>|`lrwfN{#rad%o@WQQ!MAYuc)3}hF~jgYNb%j zf>rM~%A&naIobXjsbvJ($CL%fGUGf- zt)ewN{KtB2jQ2k z(kLq-l!o3Z8v4!k15;l02XTmB0Hv(CQ}(urhUI6wKSuMo5fOo=bG5s@E*8pioP#b3 zsNIL%ieu^0-Fnf#1&*Al2}wgU8QnM1sf8jZ{6?uP9cMmx)Y`oxB_j@2#-QCO>;KA( zC%?-OQ)uM$Nla{viBkXl4@Da7wb9YFopiLn{o%8%Uj-q8F!XA4zo<#)KHZ8rLj7R> zKa=g>L-`HMKDSesyZk;Wid^$DBtNXzBaBYj(PNGwl=(Wj{{27q*R<=Bf&4j4?aW0< zF40m8ng8T3v(YCEv!z&m6B1%%z5SbRL#;4p-&RapWuEVI6c8$&?cm}1U6G5-QqZ`K zFCHz4*1*vmQp6=o@F`>%zN5ZU**0294kQc25O=@`5ux|L82dzIAbM_i?;%!Qkt1YL(0*2esR-LY<|pL44NpnPC0Oi6y1qkHY#h1z3;hRHrhOC z`Xk{lw@-#&u;)HWyHl1KQIm#XP+y)EYJR`tmkVQbgko57?dWlc3M~y!_k%*i``TwR zU$K9j-!ObE_ZsXw+2`fQB#2}wk=inKu_g=-NZ6}jZ#1f#8qgr`s9+*B%<3I9a(~{6 zgv%HnE}egm7vkqIofs#S_X4{mNF2&I318_h+ri{8v}+gY*%{GKG@I9Q^6O98IeCc? z%wne`2)$>f;hx(|Immn#bDQH4pKjJxQ18sX1XE(Q4w8NZ8}G zHQF4j_sJ9cb(O+SpZvHad+l6G(2Xo`dC&Uj^aFiko3eSP9i+s`-pOCTg9Z`Wni>R(^O1(@y>riR zLnLXE&9})vHfai%dXuv`(bR-|&r#lD#vGL}5{+n(%Jh@^C?7xh!2RQI^vj(ZNMvv=nF@<>o2tm-k1%C0C31nb-SRw5K&iG}#(Gi6YL#)JYJuQ6g`2SD2}l{?62PIq62-49#^M zCBPl&wR5LpkYPU&VUQ|DDTQjj>jq=bl+?C~N*uu^@sGS9&JwhrE|i{&tb>&UW}Z+i zE+Ii=MKLm;L#Q3?jIH=;LLD1ncNaQLh@YJ9hc)E(T0wpIdnoRY6sM6Q;De-$&7*N=TdY6Xc?xg z_pV*^>u*Y->VGy4R#`1sy1RJx>0j$ytV4SOC@F-;Kcxyz4tL}%eQ)Am#qMYFsozq@ z$X{lff*-r^vzULMDE>|$w_l<^JI^G|GHWI|y1u`M@AfIJ;yuY89j86{y$zj!VV`oK ztPWi)aSJE?N}Bzl!;xd%&mc?$L8z-s!I%t7AqL4-ShEv4-EH+d+IV&6FHqr`L=sb+ zj+(v1$Dq+t&U~IC75Ur;EzUztf%M|{`A6`IRB#iW&1lHF;QzWCc;OBefxaq}sDd9+ z7KhZ|ns8E-jNMkvB^8ysZ3M-JO%epf<~dW)b#<1VVxNciexP>ajnb?5;u}u?+WPTl z|3I*Qqp3~AW|Z5zrhjyl9j6_kqLSGmYxYUB5eJ`)jOaT*4^f%iT@~1MQCw>|jWIi@ zGP08x2Jd_F(4_JWVmdb3Fn$xb^e^C%&g4EMt+gOw%jm6$a^z^S*hJAbXfxMR*jHhCbT#=s-ee8ooybLTU4XhwY zTUN|)s_xSwgKUm7ZE-VOzRkYpjN{>>uRHx=Nl9249G4Erpgg*=~uz zAJ>4oaRb6vGhEX%B?P>Gb|?S%Qm=jW@^E4a6Po8*$is%+El3J)ogFGar@vKJMXkg8Q=Q`l91 zl#`Vx*Qs!_;$75*v~}B$!%fsn=EOq|`L0?tj$CWz{VEFKJzkj#WK6yxOMRKTal`D? z$u0SiO!dR|Q!|zDZlD0&`ts^c(stl&xY}wUl=!Z}@MF^gYbNJ;1**2+X?uCQ1!~W$ z`&XXRNDS*r)3=llss({qJ?!5!S-bdkcE+yUC$8iL{GH7eAjoHnH;6y-C-%m;L#Xw< zJDO zOUj7rCVH3RCJ2~l^PjI1W1|?e3UC<)E2fzW{2KS&nF|QiZ%idUdfq(Cgxm?!m3rlE zO?EMAu zLv`QXfMLbja{t^svFr_u`QU7-A`;t_$JksXV#`P)GS=d^6BU{QFx^q_X$~!|DG@| zRt=vCqxSrvXGrp2_|0Hj;h|6!og|kme{h+JQDVIskEYtk(zetS(XhhbGQz)1xiWJQ z319Wg1wxhm&KB7n`6Di#C?XP^gT=5r4Cb=@nKH-fuG-s%@k9?iP@U-mOv^~ z@0rH0WKjik{ z_HC%(!^5~dY4B{HbK&9VTlDzZf$MPX&$rrAY>Hk3)%Xl8H7}`9e~I;~_u`!C|8mPD zyS>~;XBj^3`yo2q<%zH8b$m*GX8Wr?i|n>4Xp^l)E!tztnK$a#^|KTttax^=;Ov@N z-2TcXU%Yu>>-f#DGagQlpGA-IO;!XJF=EH zzqn;ZWWMH~Fo|=M8*iD5_OB>fO7tK9Y=~5BmieU^{`i@pM|5+8Ji>T3qVbhTq%}pB z=T@YR>nDE~B2nqN1<@zxfXcQk^5+(@`4-}Oqn)9#J*&Q*y&*gd?f;Izfg^A*VwiV4dLyb5WCag{6$1wV2LcS{ z1~dVu06BPu_$%N8BmuR+CV+qlgHZrq0ec`Cr~zhyTYvxw1`_~ufOw!AxCAJWVK6no z4=4v#kYNyv^d$_Y2_yjhz&${V0)xo_wm>4#4D0}JU%_DNz#m`;fT6-*f`BWK3(Nu! z01J4^Sr_mCih)@G0UZWo0Mvj0pb}U?hhQ)i&{yvO6~G4sRH3ZD{ux-;?GJz$43=ak~0MdX(fCwM74EPJI0z_|NFhw8)=mL-kV6e|X2rvS?0grtv12Moj zKtKe-0)zwY0CWcu4q_P06!;6Q0u&_RBp?Y`0tiV#w*kL_Spc652Gal%fjNK#+=`;dFdp!HNB{_$XA1c0Lk6#p!~lay0ztqafXN7Y42T7$7$F!8n+dcA zNCid!1ZFUL0S6!#*aRq8U@$qr9moZy0C-jyj1Bk!qyUouJR4{Ppau8=UBC%I`wsLF zkO)iy=^mXQVU!Goa~@bpb|I+XgNUafmC1?K;?wNgaKP14_E^TxL`0PAOL6q zZUA;}7|ao<18x8=9_(4_5ivMAk-f~{8Pck1b{3G z3IZH}BH$lD@excLAOh$EUWkE#1%v@Z0O}_g>mB&0Y(8l zNf2rv6<7l(K0{!Be+FFvYybpOAOj!*=m!v`VK8yP4`>JO0X`WR%mt_bb^wwup!Gl~ z&<((3L7_l6&2IB^FfnPuy za12l>f=UAZzyR<@2?qNB*Z`TpFz^I0D}!kagaUoQ6+o>5mTkZX$ONDvklX|Ks-TvD zA>a$-06oAifbtD2sel|{52OR5z$3t*2G$0^2gn2lfO~*S9ZX%|JMatW04@MJ4H!%s z@B&ITK>X*x2AU=e_7QLa(tuTfNDK4`U=O4Ly}%(rsSSD<_z$QBHUJzQ80-^Z4I~2H zz%f9m3*HBufxo~Aa0W2wfnEi?^&l9m5Nz}TdjN_)I0#4rrhp$%39JGy4PY={Ko1B6 zs)1zy-4Lw*fGv;+bOYA_i4ph^11y1fpbxkM*p0!M1M+}H2qY*bU`_&#KsGP|Ae(|I z1lR#_Kt3=Iz|6pO1-=14|A(aej;H$l{|9bMR;5ye-pa}fMcJiNA*JkDNXW?E$7l=5 zN@gKDSt(oDvRAgU_ulLG_KcIYq$qKi@19D*zgl&*Mu!7eFghuf#)E&nF9uS9T& zfjK0=2=IDgGJz?0LoAfRHt>6+lkf?eU=c)pP=LS?oS+bXK@BuOI}rL1#$grqJ;l`! zaKKr(0J3lk^uQeKzzg0$5JW>7f2~&!6UGNrw{^3kPTJP0TZwUyKwL|3JBZ=EBFKjunOG1I37HOAjp7j7zL6y_+8)! zWq3e9cmui60Hl6+5Og5~@}LHmfzuyF3f$onR|%bfi4&q4sZc(fHqjdGk6baPz=p51*Ld#gN_3uoCRr+2V-!8=kNwXVvzrjXnchl7=UqD1=3j5d*B5rxCSa<1a9yYf*~17 zpbe&h=p%9uOu!DjZ~+X!7Q7$?Vj%q^0ka&9HW+|Kp!|e4iNFe?APowj17_e2uOSc; zAPZ`s8)ktl4*3QFkOWPzf@km+Vj&H(p@4wU4cl-e9up2OffDF|Ie0=0e20G60_Frf z7nDE;9)TnHz&99zF2ndi1wa@|ofFcof1_*Z$OyMmgK?}?PXA*J-4S;yM7h;5^8IdMfg7jD|Hlhfw$g-=GSbp%*4$ z5%|)OOSl3~kPCxwCLMDFBH#}k`hq13?obB3umDsUSVLmhgG1MP!4S{ z0PAot7rzL+a0L`W7tFv8o`FBaKq}7@k5nOaf5}<_E~aZSa5q$b?2%2Fg-YLO2JCpb1aF z6FvgrCqgUq!6wj^p>D$|5QQtC26|uz1n`AONQG?p3H2}tOF;G$#SEB%7tVn=+y)J} z4-Vk*6ZwCEMhGOr52%M87=bC+2FhPJ3y=dP&;b*$0S|Zy0T2p5pda?&L^)ClhF}Ta z5DuA83T@>Ctamha;dBLdD6oJ4_yo1E0{bfQXEyMG_mBtss&H0d3NPU!q(c$Z!zk>l z#&JOooO(3a9$AAMQK><|27~J43L_!i2z%QtSKQIH^ zaI^uP0zr@f4X^}PcnTp6$bSkNKcNkJU0wFAV`1;=z=9Yg$T%mYG{K| zSb#mCYr(b)ydVuqpaYM=1qd$?!XX8IK?h91G7z<51mHNFg0pZ1?tuZ=g9p5XcaRAc zP!FB(59r$P`*00x;0yEtMLR~K9r+hRLmuwJV{n6L$b$|Tfi*bZfr$xs;32qy7rcQ4 z$c6%FgBf7%#EO8cpa*sk0trwA70}d){P&p?>Uc4YkfF78F7rccuD1tVa2FgC<{}2Kz@PHWH08O|Lmf!-<;XNe5cc_3? z=!Owk1hRh26<`M;kbH;>F<@oCXn)gM8dCWjM5BVU=GV|9vxc1rnQI@SjIA3!Ijo3 zMraM4T1WnMHc@uBkh5*ffn97gdzdUl#6&-diHV3wiHW4ih>4uZiHW{b5ECs@5)%nf z5fhp1CniduCMNnzLripvj+jW7o|woKJRtzyLn3^G5~zc27=lG0K0r)#08S7PctI9! zfC}6POK<^S2!=RFgIp+wdgy|2SOB7f#6CA_yCzu2o=!CKujR& zMB^{a0@Yz+qNBhG@^A<4gB7@d7rcd7_yRfb1Aam?^uZV`1KAN`A_iawL6C-^omgau6K;i2SfP4EFl751Gwa6RbU zEmqUkpLJ?2Pt}>OU;f5e9YP)HnBL|iq z7hf4B4dtD?yr|)Ion&*!^E%6N&D-j#k7X)>mmfKOs8&e5%9QB4?dnr)KIk||U)sri zh^Qj=Fd^9I=2=P|GN#g-O~j&J>4S&9GM*qYwU%0Eux4H-S|?klSwFPSx_;4#<+s%# zO)>!zKLheVWDZ^)2PmoDl9^f`)}j4EF6JFHsAf(1ouQX@mVC{Nvh3Gj>!4tn;oy_` z^Yd$iY-RMNR&CE6>U7kNZF`?2y&hR{Zt!tFA|(UbKl=qppS-2$^wuux8zi3BoHw37 z?Q~R<-h)bywAem} zZ(pC%b-Em;bmbU^U~+^1(JSJOAslD zVefqeC&owQ+NG@4MCF$bz44(eT`Q$WcIpQ62JLTuy1Q%a{Ltl{9_u!Bz7^QjoLFf5H z>-=9uTa{yJuE_E~BB_sMc}yWS*k^F8mq?m~l_J0^!_&%}&6_}+;Vnb-;_4@w-=uRS zsiopyk57}hUOI8Q?4UL61!7BLHj*{Z0IvX_s!|36&R+(s8vBltehy3{rMZ9q`ztYm z;!}YG9~6_KZy)|I`7yEfC9yvg-!R3vzLQOpNX0TvQ@EBU3<`f`T=sG|kokV1kog3W zy63TRN>YOZF(+ah55>A2y|_o4vC1sDJBi0lHblj_1|tUDW!Xk{p8ukkBOO$; z)5t%)?_B!iQ%~vIuwxDF;lvpmS#CGTdZ`;*4A&_KH63X7xC^`QMO7^>$5aQI6ZBHz zEK)?<{TG#gnin$?xoiAW(l+nY{7JKSu25jXUbZJPp)Y4E;IDeAc|pm(42PVV8sJ4PY3FjU_DPd?$j{0uja`uM{`@l{p%q2)U%x1&zT^t9gBzR#Nb zabnEX_^yYLr1pVRRt-U8-B;{8oE>uJR_<(dD}M;{XBZKSi`(EXVbH6JUfhz3V444s z#UnG_b#EX(pu3kStJ;1x>qPjNbbqZ$&D0Pp;k@{o>o(82vQy!=zoe`LCTD*_3G;5F z)P}pWO}gPN`MTBE#HHKO#T`@sDer2ozmU?as!WvJ6&en3+U^{*6)lNM+Zu9+&k`)-K2alns$f&XLg|Z_KBp?yK=5Y{=Ld|kN?w=O?St;R{jaG zW%lH=cCt)T-DI@2G@7LRMk{>(xgShdyY_vb@{#99f9;4Y9uh2mdX!N1ly_wRKi;>g z%4#VSyhdL%uJ!*XL8EImeok3Ac~U9vs;bq8v>?xqQY~~*4QJ99S~XwwD6a311| zNETIgX6MpB6Bic|siN?IllA4rld1%lg%CZ-g!2w(iq_8v7T5Y_EdEO^TsKSVP)H6< z{Gd7~D7EP>yFiP%ePfDecbxOcA?uLAD4zRX#Hx#Xm$ArhU14e zwB-~=p2*b=Q^~DW6U6L%+$x&<7FFe_hs~c;3{UB8ixsYyh@4|rX3E#yt!e5ad@f2o zF4R4%mEm~2n^&8*kH7CZUA2(lu2j>$0-kij)4=n;npkW~s|5ou$qjJG$J&P1lRvi% zeIO@c%w)$}kUA6}QFUwTjNDqCYwR6|yL1b8)LJjgvG54z+`jxgRN>Xf--dF6VM@>S zIHR7=hWOIX1l2#E4H9@nJLEvTYMw+G&~4Ikc)dsJLVU_uVuAWEf&AzpTZX?^$HOj9 zy_Ywqjj|eM6c*_?SbV@drRwopIyuG<^H(3#9Qw)FEU-nxFJvdQVR^E!oLNladh*QO zMoX2R%;>)102;r#J<;X2GzSL;C&a$WsTNU44&Qw)ure+jAnMwd+f&W$ez1ts;WJ_6 zk7kMl-?*?^|H+)=3QU%jbsfz4m(^s$vL|zy@>S^M)Cbku>C;O4FXTK^wNChGK7901 zs(NwAbV{yU>YwB4r}VED#d%C@b2*3x3c;153vi+mxq5}6YtzdvNk4x3W^fjtNOE^Sx5vF;SWeK- zlpC8ea`D@HTkO>Rs+G&rUS^r>g*Vfqr$L0)9~-F@x$6jTE$tORQ{w= zd(WQuz#~!FjcM^lU`7X9U~@lzR^jIphSJOKfAZNPE4?uCsR}9m!18UW$w0QLZNJzo({=>)`X|dBCS5Pg>N3UCzfz81TxKzGw`I##y8Mi$qKF5 zrqeuf>zRxJCF{Q4kOYm;r>}W0r&nCM@xnrvDm_H)$MD4Fne9Mt?9p5~CW*hK&zYxF zydvEG+&nI1cDHV%=h6Dnn_7S49Bj&+d&z{~iuj~B~ zcBeJ;wGWQ_W10@LP{CQaKmyj-O5i_*FW3X9~m_r^^CU_W|tX#qtsZZ9P1y< zZg_h!z+FaMyy4m}!$O7dx^KtpQUmq9PFHJ8eUx`)>0n8W7A8xwI6829SbKt+p(FIk zuXJhoNy7fZ=9yGpCTjXX?SrS>c%2UiDwPbFOwNR{@0smgRhb~{`mBE?+LteMiD$nw zBTaFje}9>?^x^l6FRwRdCQav?ec^MBy=<93^0_XxHhS}$bVi!{N{=PWxa!u$9#Q+I4Y9`8 zFPR-bWF7P0O+PCwza_hHwKj3dEz524$jw)_TN4?an>?OsJhlU)F&qS6H_~@6bxc%) z1FkyW&0;4^CKW}}Ft&vK=T=5P5%=U_KtsOU20iC+x*GrHrMLmJ`cS<{k5t`}ke)a9 zT=~RFng7$`Ik`h;pKz4%dQ=J7fY41-I~{(C5v_;j3ru-W*-K*IOop#&?!J2RdFLl? z!1#*Shx1pbS%1^H|F$1Gmq+s(`W0wwv{~-6i0OE*aD*Ub!tsl(x$9|0gp$SDjX6`9 ztb#z(#`d#}p$cu+tA5sVx~KLEaYWKoy*1D8r(X|Gt=CZ3cX;;Eu=%K7FXzrTN7=zMPtkdXr1^jpe2z(~i_1f9uO_3u>j?rnzc2=EU7t z4gFT4e)L_d%P{O9C^hu<`;$!Q>dSU@e(-1ysak7&69Jm$G%k>cymhP~4C9Pn1hPyM2DIEKOcoYv`N$weu{#v&finrLACPFH5@c zj``n}zf>cA($nrSghkrPh#kYo@9%$2ds@cU%kB0@ocnS|{-GBmW7GFjPg`9bYFqU3 z=B$2CZQYst+t4@|vAN6rWK2Xx`IF4$SA{<&(#gY`)|_PX=E9$d%k;E|onoQRGo{rK za#8&5Sj2m`F-AsVtolp$vv_ThK+E$J8Wz)gzRNb1iu@**`jkZoi_gU1(s&BnB(1WT zD{E0e+q}%F&P=K9?}R&MC#2ewqFtzFC2XHG(@yd$>AXGGPVoD#^=NLKe7c}^+{=|` zZtG?H%82qCM;6~`qvEL)yZ!YK%s(%^TM|<$5YAPp+s%JaIX=tZqH}ka`dwUi+Tgr; zoM^^-La`|2(PI&DVfjbx`Na$RMU*!BKK!t6-JHvQ8|U(E_ltEdA)L}=YA*L}j9iJ> ziG}HysJWcHw*@oK-*()OF4}g-EF5+Cd2M#I)}6*8X=O5TxjW3HGgVAywkG$*QV;RQ z#ieu?YWLx>wwRTpo7K&o=XGOxou*%@317SSB_WzmIp*03)pj+$1ii^Hb{mPU_Yr?D zN5<72+Y)o$ek{Vc{QC>xy!j;p!@V^&x~=UZzxMcq5@xwiiR;CmZ@RTxE$nlT->13t zf&J;86yr53rp=5SRzWU)(jxxnEtCy8{@!Qs*O(TFbG@O@=U(j?Sf#Ok^KSG@yqNI6 z*NXk(%3TNN8`BG1`?Zy?cN*pWjtbUne4VROal@6^`SdUQYrkgX(+Qm%4C1ZL$-?3; zopGzSOAa#P6;Ibx6{|WFmq(8kB_)RS`0Bpumozebm^e`^XS2gmQ_0Nno9D6q5RKri zjjz+@YOW!FQva$69FLysYK?AnDPnZZ{+Qca>HqxVy?H7kvHuRcn)-b?7ZErN6Er$Hg+_F;NO~HTQ=d(6=(Q2{zmeWKwiw|S#h0$+r?APQ~sU0)O?m) zYB!aY4+l8#O2il~i{Do*<pzg2O0oMraBBa@A=#>==u&*pYw?kHzTqP) zTfb?GXkPcaxU4*5)*{_se)E?tWwx{OUgaA42mZ0ol4LT-%X;Y{uSNKKQ{P7GQ?%a4 zh{c@tpM9@Cw-qnB4(-u6>s`LUo@mUrqsIS{i|Lhl7*UqlsZ{Mo3(e?dR`qTb{tQX! zWLGa<-8XhK@i`qK9R~ON;_Zrgqi$F_w*-7|`DfNOeuJ7@uKarL@AhDYu^us=rN(`f z3kl!qCHHk!`!)DcvwKme5w3r&($Z8lGs-ukq;Vv*HI$jrIg>Ygf|`vzy&+2>@NiB2 zu6V(fl>K4hW8t}m%@<-;h0Md5SoL*STq>#wzx!0;`7Hg?drldbG=)4opk0yB{&%dC zHFxM?=x7V~)snL+%Y{iE&GKB!)F%JDZ8ll?SC{1i-{~LQd1s|G&S*}cwH47darU$s zI9V_{9=>L?QLISK_ikh&b~+_3konq*`_Ova{i?kQ>+j2fUuC8&qr$=B;$ zS3^fVB-YOJb5YkwRG3&-5WE=V*WMXgltvwV6A|lblHho;Af;C*qtJhY=-eT@xpe<# zwn+u=Wge3-^0t7#XP+#LvMTnYl{YAA+$dxjG#o$)G%Kzjw>$fPe(7>yuY|D%{iYzAoj0Lg%nW;*D z{nb#$uu*F$Z;WG=tKT|pYev(3YeOT;`}eQdmdzN42_g9}j^bfgN;XyZFJA2-jQIE~ z{SDKZ%`>UDpVrq_=-A*d;qTNc$x;{*stXO9QHhz;G_POjpkBQ6Q-v_eD||_R!PcQF zMuV#{vT!P7F7jflm|K`3p(?th{YkO8uA)?QR^+O5;^30QFCTYpXFRc4O5m+ zwjcEwZ0zT5;6KdOd9t;ZaAL~6A#F8?ZFOm4x-etRc*{4hdX>YxpP93jIj!9$(L&f= zQm~b|X8Hcl9IuBiaS;>g&f!}AD~aEhR8v3w&a81u7|@%_yVXAv#D%JS*KsN`jJ<^4mI&H@D^W zhC4(a^o<5DUM#g}*ox{2$qwNi$zBUfQ%Qffo!b7dA>V~%$v=KNjE`dF;t>0r9~&wz z?*hth&aCC6_vh~nCsXRLhfjZ;^)ED1&09(kHfGB-$;lqu$=A&43=ZZ4_+#57D55G6GU$0%Wqu8kC-DW{U zuf58LG{!rM%Og8eq4ldftGq{ph~3SjhxXzv4(cz}Xx@qHNU*Z@$oQ!&IoI+}U#o-h z#Ku#Lxt{J~p^2w^HQ)Gp^e6AduD_9)4nBFIeWy}Y?eyc0M>`(WKIH_-{D+;Sw4F;- zNzZMY8pH1C)%W<7G{vo4OKfd@=HxOPWiJ&oHqmvuT1V1RJfn z$D~|{`m5Btzr>S`wI1yz-?}B1=cqMUv+R1DX@Dg7%QCk@+6|GIVg1BJKaBPIcRS)Ua!Q=31`Br&hEc zDkdtxIPki%QjIG8LS&cow0B*`MVFeaz6TkvZ+>+*xDco~pFZjB5Y|mF?=H{#?6+L_ zmwH(#$;e&4@iQq)fvXtXpQ2Q4Z_Xs0n&rYVKbBtQOV@Ze;qQvAEVS2Wjb zZ`7V!9FPAm+#|F!x6pv$q6y(&jiQ_N>FhJzBGP9MG#b(Q)6=sB&?P>9{?DiR$~(2h z1@VH4iRsy+`eW97yc|)WD2ueQV;P~-syi#PVUwM_eFJaxe;81N_ zy3J`x6@%+}SMm*O%IwYv{W-wQVo`0CBAOijlG%FeQ`uCI?t-G(dr{M%N!!#Db))jM zEq8Y^6$|hGauN?>SKYXhVkFt~RU+z9kSfC`MM?M5LItx|m)G@7T} z6Xa)HB{F3=k(`_Q{`&c7B^oh1LgMpoqlas0Orji=&+mp`v3c~%nlH#S=*L*o#7*JDMe84I%dLC^ zmRhvpO$?QDd8R=&vAwa8kOY+0pYscCdr+2H7VV_vQ7A)U}) zA6u`CTXi(%D~%TU*)&$THZljKM4NNrDoqS9vw9{ZXa}8;W35!mu{)apu08Y zvX$$%@1}{>d)sna1X<^OVWNF?@0URK%bXh_yvO}HUNDKCc%9(-&v0mAm`Eg5Ql>Jh z;fOQ4W2R})apx?hDvEz``TrD^`YuMk{>z*=V(O6jn|9*d!cC*axmz4h>;PbC01t z>}F-bda`S{KA)AIY#>%Ya)=bdyEg8hf|={d6$m_^H%4NEtf$cfQqzZ>HyoXky_ ziWWOAvLoGmdQ5cpn{@3ospAfzC+c6-oBIB}!x7HK4H{7%q3yeWO7F9ry(@7!Vdg@y zWOBh1zr-=eN{VB*mi0V7>6AokcMC`?DvsDS_Whar%C*&CIxmwbwj^I;bic84HNtf{ zYcE(hwJ+P%e)VwOZ14w}zxxs$f|+|bX$j7z6gEW?KXi>YCvT80Lu%9*>HEa#CtV=u1nTllN7JjTX=Lv$*8JS)=VwSJ)lpOJ` zPp=U=@4D)cxH$Djv4-9*xp3~UiE@AEJj41Dw09xQX}9_jj1 zZg}b++cD0B!#2EL?WC_R@htpNbR$ydZ;#xXtUoyLm}{y?PN*XAhsjmiiXbJ0rGGx( zJ^6x!Px;l}C#cH(>PbvyV`62yZv3xh+yAanYbL?y;pxDN^y{VZ;-Lwzc~*Bw^Xr2b zZ|s&{8gh#FOflUGq5EFt<6ETTTl6*j(}=T|#jC%6uUxZP5N|L4WMMzWes$A9?De%n zV(-2eOuTC;b9yM-(^1#MD#`uKXPqR^uEJ;3rc!70`VGnCh$_2Ey_{~F zE)vDGFv{(-aosyrN^?;(@Q$v{KOf&XQ(Mg=x-20is_OLV!O@|I0u~6@h!?(_c8G=L zb2%v`6medn2^WdJxxA~uG5h)M-D7K4%%-=(#rT38KI=y+5>)p8P+5?);P$b4KVNY5 zY5vd+-Ib|f&HSD^p%91VKue=SuYNSZ%lJ(RMOklr=R+IyGk0j!fZ3nBxP1f zz8`1)N!VTZa2?H+f`V`ME7y!iq?-8liYm zV9G6GWXm@+d#`KXF|WM$M%+2G{2HWH@{~_TMXdb2z&GZ#m($PIZ>e z$>_2pHDy^w#sQr_i+jsMYyc9aM}P zWQ|JYnhX%#uCVPr(D@}rH~+!>U>0GdPRpFJME679cYaRy)|Rregmj-wndsdaOMjuZ ztaBY%HpYc}+cZj2aXF^XwCDuPO?AKh+n!duSez6-+Tpc3Qb$SA*z>#1FyMok*2QB1 zVrwNnoDEi=`rfeFtMvEfckmUbCCE5i8JmY^1P1fp`*T&i&u+pa>-oah&}oxy;omT>!QwtBR?7EmBg3a zL#-mtbBLW`&&)?Z|(-cVOPcw$5CcUtsjZPlHm#; zYbuUJvyVjAF4pi#PjfCu@V#lcrw~Snu6wt?y(M8IbT-K8BES3N z6b?HbFVV4tA8Jjd*oCCXes-(wrW{voO-)I8sHQp@_H5>I>euBq`(mz8jZXbB*C(%3 z*So}1=gXg|{Uv2wBvq(WKj-&HU({?mT}kclT=TkvT*8Vh!@y;m?Zi0ME0RBQ2;DAE zl8yU*(2Og4q;+*tI&0r5n;1WFxFP3vZnR})+LRXmR80ue!3!+u|NZ-+n%j|~uGv9q z5o$kW=C?1}U*P1wuJhFC>Kz&#?&kbcv;GE;qIETlRTmWa-5D>cUcLHXkBRm-+RwWM zZx^Gx(?;AMXWO4~8Q|0ln3$?rDU|LZ)J%!H_oZiWt*jI}n@%$@J4+>IB%ZHO*mRkF zpqDW|)g_>pk-TVn>Tc29l*P9cF-@Iwo!YB{1$x8nJ3ym^flgj zPk-OSgl-_wI)?x7(psO|-;6v5?Tp89EDpE(W@YOhry7T;D{pP=Y%fh3RUj73VRt})3?+D8KQ%76FTgZ3KY{#pbr zF#Z%Hey> zZ@P{#G*L=M>A38$)^r?IE^$zyF~NOtexCy%P9g7-g^L_E66Lt3~ybA{4_YFqpj zbq&|FhuBrZDa%uxh09jFn}fNE;>BcoGvijBJM&tfd6Tl`v@9HFVn~L6TP-m=7OR-p zEze2p%DiyOKal5?fAEaifqg{(?fZ}9+i(&^!Abm&t8CE0(+mVxY6ETgkkxS4l`Oux zMc!M%ow-Atwh75lg|Ged&KgHLLA`ZH;&obGzEdGluLXMWv%3K5}wmlbXl zB-rH{i^=YhD0s~(Gj@+O>y9_-e|u*9k$PHX|K3sV;GKrwA$$^+zX(CfCZoT@MMO** zen!9#;ZrBS8&Bmt!QM9T!fE5!IYhFIN_UD%84 zEr~yICs8M<7>O8Z9x)ryEEy|#@&0Wl?k^mZCz?Mne-1yZDYsEf zQ;vGklPZ%8P!jsdI>Zjl;FegH6vbrQjJJEQw~;H7n&1owWF8cS#Or4TwLNEK_q`

W7egtfSAkam5gVm6xg@O{qZ94ARqS{2O|O&I$1d#u zO^$0P_o;pDEg-E#6zSMM(b@2Y6NNJeom=_yS21yBt9%T~g5V0B&i>%mL z8Xe-NUZy7rbUM_LB+^8^l#=@-NhIkc$=z6-j;}iostyKtn)BY_`ARiT+)t%QL}fsC zfxMTlknKCQ)4uh?7)sJX#?mRz@zXX$M?8t!hzmTWN{I)hWDi}S>m}|bb)#FSn3o&0 z_soCUD@#5|Nn>#8Hhm7Ud+7yytu|RN`TxBjog{(E?ch4sphRg2Nyh*BNWQ!8PhOdz zrR>61Z+H&Nlq?De#o{l8yBtxZ_26anSOAEZ@N?kqAo+VZ!Iao^e z+0%6J>;dvG6#hg)1{5zzsZNp?GGc1|=Q$JR-l6%biNg5qiQ|hx^QP)IE+72i>G)ru zlKk7VrMyJz_dWhAb-NWtEX1q(%8tVH@m~4F)LT)4tUAf|u~Md6gUKXLmdcv;7YQ#o z8kgz=i06Cfe~q{k)!E_;3$?>qd)Y{X$6m9A{ykS`O}OCB)v_+wy2f56ESbS~*CL@& zQ}{RGoM2RY<5DC2>v*=aB^0KsFP1_jx5#^*j(P9+#6%F^venMhm`HppZISS!PbRyi z@uYid2;rerp5_GOTaTC!kK+?P>C25vMjn24-)85QT14%H>*z-pq@1@G3+=R{e}9nl zP}0j65bO&LD<-wicAuhqX$0gLs$B+8znKg?~+vw<7 zjWFBTd3JaYyo?H{i{SHM*vw?|08Q?QOAP4+^c9A7m(2 z-UUe0YrP5CvA@lhHhbs-LuPi#E4Sn4+_hR(mM=E#|1&l8ZZD9ePq&8 zT~8S%)8el#JHFF9Gt=N<=%d5`@coFHkeryOW#y}?jr#egVX}D|8~kd!D!hc`kPIKL zuWl^euCzIX{xcbQi?kP{eiRZjY3iT4rP?5-HKMf7|H6RLNCf}JLxt#_H+9-)TODtj zHR)?C3v#FqnR&_Y2!;zLCZ6Vx%ebCW+2d`$%p0ygWLZ|->)q&-P;w+SaHjQj$mZ1> z?QY-LZ#rp?IyTdvp83e86+HIih{JYNJniXt>4cK@mI1=GsqvEA{r7WQy^buzR9jUD z+@{(P@Est>eP`T0myq{8T*$jmpy2(`aXZ? z_rGN;fBj(BlHgm?qm@_iwYeg()`h6}GUY1Jb+a#;qNLIblF=lJT zy5Tr;W!oyms)2XR_D!7#H{sWrfyJXEtU2|K39qm3Y^-z=v_|ZmN8I!>ckeb07=&~R z-u2+Bb<`T6bspJK+p*PG^`pIP&Ds8QP@4Dw!xViIkJ9(_i_v#c{{e*Wy2~XGa$PWK@=ubT&P#!=dtJ; zC%tMd_CTGP;6N%chJP==TuJd^IrC`7@PC)|N%bkCWLZ{^gpQ2G*ld&dW-Pl&B)&)} zoL8*aqgziHJna@4@S5cHmcXT2pX=Rz%SYpbitE?!*`KQ}ek$JkuzIZg!|K0tM=;x9ojsP`_~DJ4?>&s-(wHboCSm;ZK$ zPv(bGUv)R(@I}GhiAQWxN48yMcW4$QS6DyeY}uxe+PUhv`KOB0X26$bBp$L@XoYl~2~^ z_$JR?i|mf}j(@_^?byHQ-O6L8|KJO0I$Ofs@qnsX$H!0Q`+iHx=iZ$d(fmQR#u4Ca zAH^BaI`{9}y$=&69Ln0|TLMmLeN?qY!+O~}w;rhSDn$)9UnFFRJUh*u7Wni$=av8L z_b0|biQ9id&`mRFwP62h>NS0aO5#Yu$h_ZAh9_~yjYs0C8C(3WyINDGc=PYSKQ?yX zq%c6}(EE#x>``ffV`dcMEU}c&D0l8nB@h`G-fH14U~N;bN@@-H7(92b^6$}}tC5%G zr4FCr`4m^&C;8%M02N_$SM5&n*WsMi6kZQNgT{A#W*DxgNN_f`F zu}4YQCf-RJJMJVsA=6v)KJaN(C%skh%g2_MI3@KU<-6v0x+e7gTqblSbN|1#&IFu_ z_6y*-S6uG3XWz4veaTLvMY6UaYf(fLZItS25!t`Qi$qGREG?oWNhOk{g)G^nl9EI! z`JcHX)bszI=ly2h-#O>q=gfI$rps4B@<%}BJ4tils*?x%CVPaM(fCcQ?D@UH*Zw0$ z%~7kH9lTj2`u6NG4BpZ6%kBqfwrx>v%8BLFvcth;k+utKCZr-flnyT&yWb??Wcwvh$bHhan@L|$gq8Evj{sr@RGTAN(C!>ul5%5a^avPp!_ zk4x9@DjOZwvXgG^Zo(3j-A_dRsP%qIkM>YhpS`KWtP!bo6H8Nbz8Q z>sVV?TcP>A@-Je+qcuN`KR*&W^6s0@&(73AdT{>KHp}Z-yU)aWcbMf(`8zUC6w#|T zOI|6oQZ0X|zwM0jX(!dsK?<7kT#paPv<^r4+q`;Ns6Dc>!f5UCp|yzt6{!llESgsP z^$TYBaMZ{fDYl$E%W<~#!qqM38lF9R9=*q-zx0A)j&@|;lZ=S6H=jpWzS;RYqW7Lo zam?f|=HQOcF9mC22m5V@LX@d0dvBjJdi{VdzvynpfnI~3KX#1u^Q&n*U!Pl>@cQee z&x-n2E%K(e?)+x8UqJZ$NO%1mvekOd8YWY`QE%@%5TS&*&bK- zmvQ#Db@2pyzaAm4eYDTZtdRe`kmh*5*sklHk_+^Mi>}|*d$s#pv%%FAoM74uHIr!{+SE?#VZ@8vdnYTA|LEx|%^)IEGcRIe0& ze(huXw+cQwCZ^qLpE-J2s4C*%a4r9mgMv;+i&+gw;U)*!--LCqk+|lufnO*hapzWd z7xKETHqJ_Ap-)}%oV<4NN5xFu8kD+mVw{$7q+LDM^FqOS{}tMOKm9mWgv#~|E0tJ{ zooia3^E0sd=|nGmOQ_twLXXx9#WCYTpW38;JocEBIAeYFf}W@K81KbMw^L`L!u37g zzS+Q4W!>uFsky)X-1%77CAXW;z1wQ?qcv{4;+3B6px#K^=jC?d@BE6~pWQkAi&J+n zDyy$rt=V*pa>2M)D?xa`(0?=}J6^=(!-le-{qJ72R=soQ5Srwq-&rxxSbsY-(pj!d zd@Dx+GjZKJ+L|yYcg)H~l5wzFdv3Ff`767iV9lRAF3FWcy4y>{#hZ z)oxb~C3UX_Hv7=dBR{q&Y>Sn-qg)lndH#6wvwfq++r%EatQY#M9NWD9cE@p(r$vWr zhKBk~96oKSy!dtbK$g)9+qR5zw8l7LH`~&SDI(@F*`sSi!6*D~cI>zK- zj7R7fi5D?V-#hx3scsKBaI;j@wIHPa*OH}iTgPiX0|i-&dUuCP_q@@Lj~Q(>>D|-l z9%H-DFZp1>o{M9e&%#_*Tq-T~XwDQ|c%|*0>he2wgJav-HS>+?wjj1_qjKe?WzMej zo0XqvtwVdNB;Nc^EHS=fWU4wAwJLh|K=H$E4i0w@)Gs;uqky_SWc2Q8L)#-g+nAqO zMBNO?k6fnlt*bcO&fHVy%GTm7r_WX>(2Cvp?zq2nvtbGr=qY_@@GPu2-%R%A(49$( zbiD#2v$Gsq&+qOvoLn7H_Qv*GeVZHCmWr3}>0jZ|(dg~mJJFkbya~r2d!6KR+*k9&x}kvZKf{klqu^@o{}5p zt6RCQ*URRM>*cV@6TdAo?|kc#PW>VG(zAHQMah^q7k7VI(;ef_@ARQ{#iOp0{7wbO zOjEP#7L?L>o)MS?|VJ$Mx;)LAl& z;s^IQj{04G;!|vq%yFgT^t#Q(jRO6;Z{7^lXH6Xz(7(7Y<3&@(IhBVY5#vi*Wi$CY z&e+!9mmAp4RP<)gm#({H?d^htbqj;j+}CEkdgK|y@6cNDJWO!q;s<9p7y2aL_1%5= zWlPtdyDpO~#{Be&@&?Bcvr9%5zt5|gUR}3myIJnmPQJ}=UaNe6xV`wDVGO79NpA(U zfe`(>1vIazZsT&5&4ybX?xCQAg7bAZv3JvLvoTy!M{exV3&$lO93N_A>Rf*OUrE(Yg1vZ;xtPrBhD3y2i8JGKRYGp3G zCvdlU-7foEx>5g)INx@+{UTgB61J!&SYx1>Pt~m!{wKGc0aPtA_81wBB`}vST%c<3-bkd0wR2h@>5DY&YeL6RkR% zR=M0?Pp#BU!}r2-ALBp~lj8OsdwFS%gkt-liK5c3Y-BzEGKFtyPwHt?{~Fu2e zc|Ps9)Tp%!MVM?Pwb#TwQx#Xub05k(CGx~XUo?iJ_N#1S%nR?T-Xz&$mXho&E8T1t zTDovEZRXx6rGINf(7PSak67kY-oBJiiZe+{d*`OJ)7U&$;A>KKs;(T<9UZ5KtDeOA z?s&B!zT#nkv6hCJ-vd_OFZ)f_Z~RU__&B4U`O*Z*WU?`6k*3Mfk(X;jpI;S@AJ1-) zSrVEcym$@Ml{?PK^YZSRAN}^IvEv8TN`oWroR3JZn1{fbl#F?$kCy5O>WytATjm_= z;n{gG6uSTFY2~VcxB^)xg>60};}_2|jSM&+-*wLIlP)XE@~T2%=1T#=!s>ay)Xvc# znD19hw|eNi2?_cz$;q%;|Lh1dHhy-&Sx6!Jq|w+T-lP>Ios6xOJI+3iN{hFx5=~ep z^Wt6Ky%st}?e`9{=k1;#ium zZ(Y|!Z8aCqt(?59v0Q>CX;$<{aRv||}+dby>3pgG2thRfptodLHk4Ut)%DYOQIR4T-X(O5? z`}DO>J)q^YrN90xDrh>w**S0BBGvxNjcHaD4@V#5yj0D*DX6*hR>_6i7Yshv_Nn@2 z2d23!I-q$dC5G+hNXqv;HaB1Ccv`P$d&JzT-egIydL;V3#9795uU4mz>{I^A<{K$o z4Uf+k?d2NKXI&vzf82^?OIzC$j+}A1cvVVsY!0v3!LF#(xXs7D_qjf=ysMY;(%t9o z-Ur^LT+EmDT)wrbCPQnDJc&PGjOy2MJmuyoErn-_D-OhkS!=iOS?qi1HGj(s*HsA* zB&df4h4u^3|MTvh=g8!iX_qROSJQLtzj?w>Q;zadPK{g47r3za$+bXloksnrODV-l zX$cX%FXGBxm)2@{9ZB9>d#|$lW$NBtDJvw;ocP6C^ipNSdGEmXdtRpR`dggS6^x97 zb>nZ$OCI>LoJW7>chNKZt2K{q3XTn1mzmSkuQ#!*M~k`kI9;YsSML42Drele{ z+DqbH1geE}D)SYoJp1dO1R0o{%E{$DjrNU0(!rs#s1?P)1Dc9v{`B>#q zMbn}W1*Q%#Ej?c8(_{L#jSynpd<#zq!!OtJ_*dNt_#_eu(3| z>pgYf`CUW9rvsJe;N^B0md)hWe{2P25f=Hlf7veDv!2HS2@S`Beo)#AoZd7Y`>M8e zZ_)ojHF)jMBj9AO4gk*H0Mcy9E?qt&Ys5_U1Bu)6ouv{>1*+3)&R0j0cE1wRUh_*Y+_)yI_Sop5he+vA2eII=N=GT6bKG+{7 zalN}vchwK;edz%^Y|FkZTP&v>^>tHkdz8JfS5vzyJN&!hea6AD?7VAIZ8ABOdsaQ_ z;}PqBuk%5l?}OngHCgWXP1ed!FN8jl?eWVLa7hb|5fxr1+mo{4_p&&*mHq7Bb2q8T zU2M#x^%imOm8~{Bp<11PLC*I{X5UX)I={lkiCSkCWlYKK&gFT(1D}Pk)%Cs%Za=j5 zz~xuBMZ^=jxT)~3!p~oPto=G|;4J)&nT>k)q*w9Z{&<3BJ9bl#_$# znES%KFqzvGtucEmyt0*ZI)8IopXY|JQ80h;irw=ItgUx*m7>7N!`wux0=d)pw?Y>z{+>^4qy86ufLiug_|Xpxo4bgyOPOfw}z+uR=25& zUC<`Z6)$vca<*vS)?#}aC?>r3h`jIeH>;~tR&Mkz-W;!>Iofh_?-T2tyX+&z^L4k= z)34rInquM*eLLvCsv{K&QL-kN*M8SG*t{<^I$-BV-aX8sNyAeU^2$c>7Y}~!_+k05 z>(|r zV#3HZg{Pu1i{p&*_49J=295k4w(AdmFB;u;JiWW_ZBX0NpISDH@}J}doc8z2+7jrQ zZx(aZweP#U%rp0A?%gqd+ctLxh3y>JR1)~X>%o40dPJzxnj~R88NuX~>ub7GES;Jk zK04ZVUc+b8jt^(aeNUC!&Ut&C-Fjv6>=h&D*BS3Vw6?x%+;{C@z~=5-Y@_FLi@q*= zut+5BLwdlrESEhWzCH*L2u%CXF2YuP)6vt;C9cHN)jRj5le`L-V^96P#Bar0MQ@fK zHV-=0>$fz?dy1hRc_nJaEIJ-QT!T`leI(n$tf6F5YTUk<8s6 zT4uBM&QiIl2uZqRktqFQedh}Cd1WR6cdsZZ@|pQ_RTk68c-F5|?7#EMHC}$+G%^0$ z@cFMcmfxlO4;fFzpWQ|d;4m%TeTBvFzqjSGeFjoF>$#@XD&uv=kI=KS&#BR!s>gPQ z*ZcjRoc~+jVr**Ma*E4-6`2{0$ngpk-<0KDm~o9$lpNV~pBEAzqy>=pAqhYdgd_w> z7?KDiQAlEt#34yQl7u7$NgC2ZNHUOQA<03Khok^W5t0%lWk@QJ7C};lqy|YHk_IGA zNLrAzA?ZNUg`@{*F(iFR29OLP89_3JWCF<)k{KlP;->pcu&q)b4)yh1;e8T*q+~Sn zyV~;Kn#%7V-V~5iGd$W9Z{xK(w^)A>W=U4|wUFA|&>+4@D?w$Nyd_^6zrHL)qm3G=80^g0O6F)%(ze2_MFXs^aO7JgZ zOhVbSjz!{_6#Qb|(tkBFz;5~{tMu@ntU|#im@>)Q2%R>;%t+TT)M0`xC6!wsSyOBo za|76;#%`(-+G>t*C#_HB=A5nz4hhRaIN41VLtUm&#?uvuW`?aGv93(&L~4Y=$uw^K zH?pSxtFb}_W|%eU<0||pg!s)dO%lxp&+w!29x5kpq)bw?CCF8COqbc#4l4Q5LzO`C zHW)YJTY`y@yzPZ1xG zuBBim>G20JBl|vR6;N(;XesF4V2F~k@`MQ3g2TfbKwk)PEW=DmLSAsbh$#K|GTg$O zA>{0*%A>u@V0@cz&K)iepFd)LWV{?RVBWX|#zJ#|YKqiXL9JEGF%jmoegxA)qAM_M zQonx^&$9(dVx=?`v;tdB(g?uwsCETR%=SQr%=NAq>R1o8MV8I2t!x_#w!~aX+(GzJ z330rmvZbtqE^i7>>Z%k+LGP#n$a5v8MatU20EH`I3fgwUxjZU#MhU;|e1*4*eMp4Z!h3av03()JKEWrewr&V=Ge#iTP;cop0zV-+Yp-wVwXMk;TqJV>Au z+BaG~w|&ZCxHw6)hKk<42I+;TbEWP38PaD@X$&b!vW5~34gyp_P1ewhKsua@Bze}c z;|ocdR2`m_U9W_~@N>n(CmO|2h#j=#g$>v(JAyvjVCzYqN0YK%ilKt{RDKj@3yM_{ z0F+PzoHMIN;tTUVRgo~%vxCWSjUpHyQvX2ZM&S-nVk9o;KmJEhVux8UPensE_yctj zp<-kYDoL>f6GA_oIXF?nY8cEU5RfY4P=P(RmL!mX9|aI?kjjVD9H2QBi3AC9zzj(? zCy0#uAY4ZcxOi6*`sIMxk$#^<8`oe0NgsQKi27nyL$OII42sHDV@pVtXePslBwRQs zNa`b%8R@QpVt%ILG7pk^I;vQM*^~G)l7>EL61`r#7D}=@je^!f19xTO$Au|FjD^FU z1=ECD$i^lq^XD)kO2Rd4NArdWx7t zn3kd+9?)R>T0CQnBs6GjNNNK<;-1j5&}TT7MqEcY<|A7T+H@7Ka2bF7jEo(LZNSt> z*BcO%G?O^mc7%f$h2cc$IZl)i9WSwO16ZZJAaukxV#Xx)SB$o0$uY5^-!e=*L@!e} zg5J%hKOzZ&e#7Zl^B>BFRJ|}G(z_N0IN$}7|GJHF-tUE3kXYU@&ZV?yB1GlB-eA7C zgF$VzXhHc*rQ=6c+*S&Z~F=aCdEc=m^ z4wD(u2*3wxGhFs&Z(-q-Y0=~fRu7D1G=OV~AXPmkZiXvFaz3Ei3ctgO-fGcQa8-5` z>Vrv<=Y5!mPWiyJ!#H&NK!1e!Q~WSNv|XFVj+}g1HU3aibSTT*HF;kNW%^@|q|+*B z%pY4vdbkMLY{i_(f@&;ict48*s^1DV*r}tRTQN^^h$aiN4`-1^2Lqs*Yg&vP+@P{p znNe*3rbhm(%|N2)w=Rv37+0e}OoTk5GtJfXXjF7C5X$V)MOOl`mCWjkS>_=(J(>&> z*#^$tL7&KqqSJb?wgZ5XcNwrCn-P2rC*UArfeaf{s~khanm; zA~1bBTrs>RGZ_Ii+zMmaa10bVgFx}JDIxoH6I+DX6IeJAJqV+b%*_d$5yv8c5+lLq zzr?k_FCnn?16EnxY&ch_GEAf4DI6le|k0KIb*4Sq%J~%!F$0{ZXv94QK{B18w)9|F<6uo;mYfva)+d_UfI zLG+9QcboDT&@b7;fY%))@FayMhAayKAHgv>oWK$dEDO+?LKvor`hVK2erQHT8qw0h z(&`9UdLN#_+{iN>EHC3Y=Exju77cOeR5mM1%28O-l}8B?|0zrtg&qavgApkamyrAk%=J%ykInVLB>ita13+?VrFDw zxN}q{HN+8Q=rs66i%8HJO_(7Jm#9GsJ3$bxw=C1%kTVJt#n23%_J+cP{|t#;2BDG{ z1)eefG?Dq4$|A#9{8q=Il%!08x}SkHR)CZ1Su=zU4L`-C5qC7;)a>c96u}M6y1_lT z?D^SgSu|!vBIghpj@!^B^B54nIZu#=QMf3|>tJS1<5>IR4CciBoe=tgxg4yw)ee&iEo{#?VcFYNw2y)$r@u02ZdIIpThXnr2$0|)+pMwin|Gs5PKc2B2{Mc@W~32Kk;Yw{GAaMr-&mM%ZK}y& zvatSd85f#$a;IWBIvjCYF z!g^kp20EyNz{B6EQs^q~1f$hh{|X~JXA~BosWfac>08$fVYoRxl2FeaGS|a#BT+3@ zPBfejcSeU^LdjfMI1zbA)oor1X1sDG~T_jODe zNn`+*9hl{-$t~|#khB3STsRr<)X(w*Be$6FgAS)by=ahuH0MN#$BbFIIsQC8gFk3F z#L$pTDS`nO&IFrN!vsNR;#hczSn&YPnMS9%{R38hB3OKj^VL6Qxi}szLaf4s8c)Lw z0NkNA3UgrPMm1R&JLwt;Eja@>xtWmh&gy^G|1cTX*hKolj34C)uQ+rDW=fwGC$e)K z;@WJ$M<@iQJFyBeeC=JFCb1DTahSRQai4`2J)z=65`}+fp`!5HF#iY7g5qWl0!#T( z_=q^J9mnR}GunJaBxraJFzW&WCw_q^F$|}88pkX6XRr`nh%#x3;0)nLe>|fY+Ma`P zl1hY$u^IL!+#^OR7GaQ-^YGN|2H4Gw8?n|(u6BiM(Ab!}+ z{1xm4UINo`)xX7aqrEq{g17qL3XE`1nY2oC4wjt%=aRm48BBI*&B!E)D_#5w;1k*e zK5&F0ih{1d1YFW3$gF$p#})nc5mPQKufqoD+Eq+_Ce-6WKaaC={Iz+}Fq%=B4*M?0 z{Igg)jd2wtBKk|d3gt(d;ba?06GPH@5Y^RN;73Cg{utun@aN!O^iSdrArFRc+cI2N ziir4Z^TGP~a)Qi8e10kaRGGDcQ29IhQz-!JyOuMe>F6&5FjEs^%7U1+p#YrVZfks0 zz(*FqgFtYCS|k%Yf(#b|foM;U6l_03R*@b$%w(oRy3%ZDf5J6r|CiNsWPf|T_t&63 z7HenZ^O49Y2y0hg2X7(2jurQM{3zfeETmblSB?wy9Onwb>n$Z8be=_u_~de<6E{G0 zuL~>69)Vl?w#%&3@$m%CKe*uq;oQw{nrqyG!G?{r7TIa%ELuf=d~iC)aEZ@u z!2t1uqu~-*05jfDq~V|0wm*bx$jxk?l}QDMrwP7iCYL}dH4y}v4HUQHI6M-^@+jPi zRgmEqU*fbU3a8$r(HQ(FHRBDnNL=v*nRSHYx4~fXi5bOdN9cG5a1tW$tRuXGWAU^Z z%y5LkYZl;1DdO#8Qk#md;`fjx@SoieY4#Gt;@*eX-?T7-PTeY5r$V z%#E(%{PbA{SDUjR<|zaI#sYy3!84XiIQsB%7QxMS#`g(50^vv#D?0QTRwg6RV?=8aI2U~V zhvSjnFpi8{7)W(?o4e^TVAoa#-cH`v#+Vr)B(4Tg6!&3pVPmTQ4D6!LS)J)^?#U`B zWVDABU8};jlAZe){>6kbg#k}Mw0nR-WRQd&L{s?^zMkGfW)W%EOMCvDY-I z2EJl&md|}0x7_%jw(K98R-BT@ABN3%7PcBFrGI!l43GxBpHsC~6?bqezmcqW4C!|8cGg5nVr zV`!|N0i_G#RC>m52%#%DRuCcZtn*;60~{zhqdo0B{BdkAPvBYSQIBIO#Th*9JPh|y z{@xu0sm!R%btGx^V17{@mr0=da!eml8-V0$&JY>m+6!!e&>&KWz<+`TZq$QoN9z$d zJmSxWsx9iD>Uj(a6^}@`<8(cO{pa;YOqir+MBs#2uso9s_gAUsP+*$L3!B0dOy0j7_Z;#dSxtKd?o#|c_VkgdwF(iz(q-_w-2Vf<-Z z3VvG^KpI)_+?278IP(&g$rAfnuE>~3>MOuX@^V4fn&5`yd6~k2zMH_kIJpUQkGSI4h55W2WgaqL3_ED`X6T)oJC5Nk zXftL`vhzS(uOVY=K;uLyreOND8BB#Y;MkGmx)GJXhHJ~dkiv!Tw87X;T%&N!dC{-t zjVm}XXKaExx((ooWOX1Evb+V}V!Yo>Fi}Kr!Im(0`x03`RCfykjgKwx^nJho9L9r8 zTQPm+`GLS14dG%A+Q`9*?itd!iMKIjtx)Kl?SvF&pbIMEYlGIZ>_qBq@UppKH;QS) z)|2}}DX6T9qJ+5HA;eG!qomYO6!GSBquuSGzivPJuN`_8(tuU4^r4sY!B47e(0~xBxK?W zmZa!2sHGcT=!cy}vOU-e^41&*3jYQR_;3%VL%w){k%Nb8c!OKV|0;s}GGgk5PbhBZ z;zv<*^#_F;9qWbK$MbLko95rJP!bnIjMsu=?}8aDN({l$K9~T@>ob@YC1k@(=p%iw zp7-3CgX{Vr>@B=WkPI@LF!5%}q95#wiU=(A7UP1)P;AUdy%$=Wg3FYOXJp){sUIdT zxMYT`Al8 zs_Iz|@6F$X&5frN#3aThiE>5Q*ijaa6rVAW2Kt5P2J09(VU(!J20NK^9BgRq2Y4-Z zr|}=oja-MIqNg9AqM=v+2-#6S22Bwe1k0w^|4+z+N_WUX0BZQ3$-u}tqP2|#LV@nwVCAW8TvE2}6NLKnd7Zv1iaHD%e z(4_F8zqkd=gv2K(;`t{Eaxh~PL9Z=n)31h)eS!vt4l}qG^29IrejG)NOsk50#w^H5 zqZAZi!KQ;!K0`5IzEP0*ayB8<_8ImyzT=FX2EKgZ_1X%yx!%0>I|b2)u`OikPsWJ? zk~E<4;$DUuX@7xwA}1-x{tHB>>QfYy^#xvG@12L#M!?0`t$-j?Vhj{{M_>WDP;l%* z>JY?_5Mh6V`^qC+G9rt*N8nSACz|+C3f&K9<3=7MV7TKeh#%SzxGS8UitdjBt_I9} zeG}U}B)Oa>OVlAc3al@LV3Kpn2*m{p&i)bnDMgulzk&^!e}k6HHuRPz``^*<#~y}` zE7MzK`VF4>K%;fY(Z1}+!3&;K{4s>rr)dl%10NExa}jNi8^b4tkBY0R;_YTfI^!5G zuiV@%-nO3^KlqQYj$1yeLvQ0!*1+n`=N0Y{(|9zWL!8oQQ*0I!ULFjMhd3gHk z0l~ZlfoOCblY+nC$c>auFm`guR_>(qN=>c(W zrOK;&6q8gkzJH|QN22^9x7wDP$u7joVo^dn`=Jg{!?M(B$4ZU3u*M- i2ovEBD&_sNToyAvlines_limit){ int limit_to = (int)(lines_limit * 0.7); diff --git a/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java b/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java index 53bdbd4..4c9e275 100644 --- a/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java +++ b/app/src/main/java/esel/esel/esel/datareader/EsNotificationListener.java @@ -35,13 +35,13 @@ public void onNotificationPosted(StatusBarNotification sbn) { SGV sgv = generateSGV(notification,lastReadings.size()); if(sgv != null) { lastReadings.add(sgv); + rr.CallBroadcast(null); } } catch (NumberFormatException err) { err.printStackTrace(); } - long lastReadingTime = SP.getLong("lastReadingTime", System.currentTimeMillis()); - rr.broadcastData(null, lastReadingTime, true); + } } diff --git a/app/src/main/java/esel/esel/esel/datareader/EsNowDatareader.java b/app/src/main/java/esel/esel/esel/datareader/EsNowDatareader.java index c965203..de85b8e 100644 --- a/app/src/main/java/esel/esel/esel/datareader/EsNowDatareader.java +++ b/app/src/main/java/esel/esel/esel/datareader/EsNowDatareader.java @@ -63,13 +63,9 @@ public EsNowDatareader() { static public void updateLogin(){ EsNowDatareader reader = new EsNowDatareader(); - if(reader.bearer_token == "" || reader.tokenHasExpired() ) { reader.login(); } - if(reader.userId == 0 ){ - reader.currentUser(); - } } private void login() { diff --git a/app/src/main/java/esel/esel/esel/receivers/ReadReceiver.java b/app/src/main/java/esel/esel/esel/receivers/ReadReceiver.java index bf824bd..66454ad 100644 --- a/app/src/main/java/esel/esel/esel/receivers/ReadReceiver.java +++ b/app/src/main/java/esel/esel/esel/receivers/ReadReceiver.java @@ -26,6 +26,7 @@ import esel.esel.esel.util.LocalBroadcaster; import esel.esel.esel.util.SP; import esel.esel.esel.util.ToastUtils; +import retrofit2.Call; /** * Created by adrian on 04/08/17. @@ -46,10 +47,16 @@ public synchronized void onReceive(Context context, Intent intent) { PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Esel:ReadReceiver:Broadcast");//Boradcast wl.acquire(); - EselLog.LogV(TAG,"onReceive called"); + EselLog.LogV(TAG, "onReceive called"); setAlarm(Esel.getsInstance()); + CallBroadcast(context); + wl.release(); + + } + + public void CallBroadcast(Context context){ int sync = 8; try { @@ -93,8 +100,11 @@ public synchronized void onReceive(Context context, Intent intent) { FullSync(context,sync); } + boolean use_esdms = SP.getBoolean("use_esdms",false); + if(use_esdms){ + EsNowDatareader.updateLogin(); + } - wl.release(); } public void FullSync(Context context, int syncHours){ @@ -216,7 +226,7 @@ private void WriteData(File file,String data){ } - public int broadcastData(Context context, long lastReadingTime, boolean smoothEnabled) { + public int broadcastData(Context context, long lastReadingTime, boolean is_continuous_run) { int result = 0; try { @@ -227,7 +237,7 @@ public int broadcastData(Context context, long lastReadingTime, boolean smoothEn long updatedReadingTime = lastReadingTime; boolean use_patched_es = SP.getBoolean("use_patched_es", true); - boolean use_esdms = SP.getBoolean("use_esdms",false); + do { lastReadingTime = updatedReadingTime; @@ -254,9 +264,6 @@ public int broadcastData(Context context, long lastReadingTime, boolean smoothEn } }else { boolean read_from_nl = true; - if(use_esdms){ - EsNowDatareader.updateLogin(); - } if(read_from_nl){ valueArray = EsNotificationListener.getData(size,lastReadingTime); } @@ -266,7 +273,7 @@ public int broadcastData(Context context, long lastReadingTime, boolean smoothEn return result; } - result += ProcesssValues(smoothEnabled,valueArray); + result += ProcesssValues(is_continuous_run,valueArray); updatedReadingTime = SP.getLong("lastReadingTime", lastReadingTime); } while (updatedReadingTime != lastReadingTime); @@ -285,7 +292,7 @@ public int broadcastData(Context context, long lastReadingTime, boolean smoothEn return result; } - private int ProcesssValues( boolean smoothEnabled, List valueArray) { + private int ProcesssValues( boolean is_continuous_run, List valueArray) { int result = 0; long currentTime = System.currentTimeMillis(); @@ -317,17 +324,11 @@ private int ProcesssValues( boolean smoothEnabled, List valueArray) { if (sgv.value >= 39 /*&& oldValue >= 39*/) { //check for old value to ignore first 5 min //ToastUtils.makeToast(sgv.toString()); - if(smoothEnabled) { + if(is_continuous_run) { boolean enable_smooth = SP.getBoolean("smooth_data", false) && !hasTimeGap; sgv.smooth(oldValue, enable_smooth); } -// if(SP.getBoolean("smooth_data",false) && smoothEnabled){ -// sgv.smooth(oldValue,hasTimeGap); -// }else { -// sgv.smooth(oldValue,true); // -// } - double slopeByMinute = 0d; if (oldTime != sgvTime) { slopeByMinute = (sgv.value - oldValue ) * 60000.0d / (( sgvTime - oldTime) * 1.0d); @@ -338,7 +339,7 @@ private int ProcesssValues( boolean smoothEnabled, List valueArray) { try { if (!suppressBroadcast) { - LocalBroadcaster.broadcast(sgv); + LocalBroadcaster.broadcast(sgv,is_continuous_run); } else { LocalBroadcaster.addSgvEntry(output, sgv); } diff --git a/app/src/main/java/esel/esel/esel/util/LocalBroadcaster.java b/app/src/main/java/esel/esel/esel/util/LocalBroadcaster.java index a649fef..d714de6 100644 --- a/app/src/main/java/esel/esel/esel/util/LocalBroadcaster.java +++ b/app/src/main/java/esel/esel/esel/util/LocalBroadcaster.java @@ -28,7 +28,7 @@ public class LocalBroadcaster { private static final String TAG = "LocalBroadcaster"; private static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.US); - public static void broadcast(SGV sgv) { + public static void broadcast(SGV sgv, boolean log) { try { int timeShift = SP.getInt("shift_days",0); @@ -40,15 +40,16 @@ public static void broadcast(SGV sgv) { if (SP.getBoolean("send_to_AAPS", true)) { final JSONArray entriesBody = new JSONArray(); addSgvEntry(entriesBody, sgv); - sendBundle("add", "entries", entriesBody, XDRIP_PLUS_NS_EMULATOR); + sendBundle("add", "entries", entriesBody, XDRIP_PLUS_NS_EMULATOR, log); } if (SP.getBoolean("send_to_NS", true)) { - sendBundle("dbAdd", "entries", generateSgvEntry(sgv), ACTION_DATABASE); + sendBundle("dbAdd", "entries", generateSgvEntry(sgv), ACTION_DATABASE, log); } - EselLog.LogI(TAG, String.valueOf(sgv.value) + " " + sgv.direction ); - + if(log) { + EselLog.LogI(TAG, String.valueOf(sgv.value) + " " + sgv.direction); + } } catch (Exception e) { String msg = "Unable to send bundle: " + e; EselLog.LogE(TAG,msg); @@ -77,7 +78,7 @@ private static JSONObject generateSgvEntry(SGV sgv) throws Exception { return json; } - private static void sendBundle(String action, String collection, Object json, String intentIdAction) { + private static void sendBundle(String action, String collection, Object json, String intentIdAction,boolean log) { final Bundle bundle = new Bundle(); bundle.putString("action", action); bundle.putString("collection", collection); @@ -94,7 +95,9 @@ private static void sendBundle(String action, String collection, Object json, St if (packageName != null) { intent.setPackage(packageName); Esel.getsInstance().sendBroadcast(intent); - EselLog.LogI(TAG,"send to: " + packageName); + if(log) { + EselLog.LogI(TAG, "send to: " + packageName); + } } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b05ccb8..ce511eb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,6 @@ Esel - Version 3.0.1 + Version 3.0.2_nl Open navigation drawer Close navigation drawer Settings