From dbf3ccc86375a88d37accd41bccec816c65d37ab Mon Sep 17 00:00:00 2001 From: tonikelope Date: Tue, 29 Dec 2020 16:58:51 +0100 Subject: [PATCH] 7.32 -MEGA API KEY --- README.md | 2 + pom.xml | 2 +- .../megabasterd/LabelTranslatorSingleton.java | 2 + .../com/tonikelope/megabasterd/MainPanel.java | 17 +- .../com/tonikelope/megabasterd/MegaAPI.java | 3 +- .../megabasterd/SettingsDialog.form | 274 +++---- .../megabasterd/SettingsDialog.java | 689 +++++++++--------- src/main/resources/images/apikey.png | Bin 0 -> 100755 bytes 8 files changed, 510 insertions(+), 479 deletions(-) create mode 100644 src/main/resources/images/apikey.png diff --git a/README.md b/README.md index 3a472e469..58c9f3400 100644 --- a/README.md +++ b/README.md @@ -10,3 +10,5 @@

Watch demo

+ +

\ No newline at end of file diff --git a/pom.xml b/pom.xml index f38d87e0f..39b729119 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.tonikelope MegaBasterd - 7.31 + 7.32 jar diff --git a/src/main/java/com/tonikelope/megabasterd/LabelTranslatorSingleton.java b/src/main/java/com/tonikelope/megabasterd/LabelTranslatorSingleton.java index 6749366a3..2006fddc6 100644 --- a/src/main/java/com/tonikelope/megabasterd/LabelTranslatorSingleton.java +++ b/src/main/java/com/tonikelope/megabasterd/LabelTranslatorSingleton.java @@ -38,6 +38,8 @@ public class LabelTranslatorSingleton { private void Spanish() { + _addTranslation("WARNING: USING MEGA API WITHOUT API KEY MAY VIOLATE ITS TERM OF USE. YOU SHOULD GET A KEY -> https://mega.nz/sdk", "AVISO: USAR LA API D EMEGA SI UNA API KEY PUEDE VIOLAR SUS TÉRMINOS DE USO. DEBES CONSEGUIR UNA API KEY -> https://mega.nz/sdk"); + _addTranslation("WARNING: USING MEGA API WITHOUT API KEY MAY VIOLATE ITS TERM OF USE. YOU SHOULD GET A KEY -> https://mega.nz/sdk (and set it in MegaBasterd ADVANCED SETTINGS)", "AVISO: USAR LA API DE MEGA SIN UNA API KEY PUEDE VIOLAR SUS TÉRMINOS DE USO. DEBES CONSEGUIR UNA API KEY -> https://mega.nz/sdk (e introducirla en AJUSTES AVANZADOS de MegaBasterd)"); _addTranslation("WARNING: Using proxies or VPN to bypass MEGA's daily download limitation may violate its Terms of Use. USE THIS OPTION AT YOUR OWN RISK.", "AVISO: El uso de proxies o VPN para saltar el límite diario de descarga de MEGA podría violar sus Términos de Uso. UTILIZA ESTA OPCIÓN BAJO TU RESPONSABILIDAD."); _addTranslation("Using proxies or VPN to bypass MEGA's daily download limitation may violate its Terms of Use.\n\nUSE THIS OPTION AT YOUR OWN RISK.", "El uso de proxies o VPN para saltar el límite diario de descarga de MEGA podría violar sus Términos de Uso.\n\nUTILIZA ESTA OPCIÓN BAJO TU RESPONSABILIDAD."); _addTranslation("Execute this command when MEGA download limit is reached:", "Ejecutar este comando cuando se alcance el límite de descarga de MEGA:"); diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanel.java b/src/main/java/com/tonikelope/megabasterd/MainPanel.java index 417aa5855..b6b0244d7 100644 --- a/src/main/java/com/tonikelope/megabasterd/MainPanel.java +++ b/src/main/java/com/tonikelope/megabasterd/MainPanel.java @@ -60,7 +60,7 @@ import javax.swing.UIManager; */ public final class MainPanel { - public static final String VERSION = "7.31"; + public static final String VERSION = "7.32"; public static final boolean FORCE_SMART_PROXY = false; //TRUE FOR DEBUGING SMART PROXY public static final int THROTTLE_SLICE_SIZE = 16 * 1024; public static final int DEFAULT_BYTE_BUFFER_SIZE = 16 * 1024; @@ -416,6 +416,11 @@ public final class MainPanel { resumeUploads(); + if (MegaAPI.API_KEY == null) { + JOptionPane.showMessageDialog(this._view, LabelTranslatorSingleton.getInstance().translate("WARNING: USING MEGA API WITHOUT API KEY MAY VIOLATE ITS TERM OF USE. YOU SHOULD GET A KEY -> https://mega.nz/sdk (and set it in MegaBasterd ADVANCED SETTINGS)"), "MEGA API KEY ERROR", JOptionPane.ERROR_MESSAGE); + openBrowserURL("https://mega.nz/sdk"); + } + } public static Boolean getResume_uploads() { @@ -869,6 +874,16 @@ public final class MainPanel { _debug_file = false; } + String api_key = DBTools.selectSettingValue("mega_api_key"); + + if (api_key != null && !"".equals(api_key)) { + + MegaAPI.API_KEY = api_key.trim(); + + } else { + MegaAPI.API_KEY = null; + } + } public static synchronized void run_external_command() { diff --git a/src/main/java/com/tonikelope/megabasterd/MegaAPI.java b/src/main/java/com/tonikelope/megabasterd/MegaAPI.java index f0775d665..2a5ba79f1 100644 --- a/src/main/java/com/tonikelope/megabasterd/MegaAPI.java +++ b/src/main/java/com/tonikelope/megabasterd/MegaAPI.java @@ -30,7 +30,7 @@ import javax.net.ssl.HttpsURLConnection; public class MegaAPI implements Serializable { public static final String API_URL = "https://g.api.mega.co.nz"; - public static final String API_KEY = null; + public static String API_KEY = null; public static final int REQ_ID_LENGTH = 10; public static final Integer[] MEGA_ERROR_NO_EXCEPTION_CODES = {-1, -3}; public static final int PBKDF2_ITERATIONS = 100000; @@ -89,7 +89,6 @@ public class MegaAPI implements Serializable { Random randomno = new Random(); _seqno = randomno.nextLong() & 0xffffffffL; - } public int getAccount_version() { diff --git a/src/main/java/com/tonikelope/megabasterd/SettingsDialog.form b/src/main/java/com/tonikelope/megabasterd/SettingsDialog.form index 96e31dc2f..03f4e8592 100644 --- a/src/main/java/com/tonikelope/megabasterd/SettingsDialog.form +++ b/src/main/java/com/tonikelope/megabasterd/SettingsDialog.form @@ -31,7 +31,7 @@ - + @@ -48,7 +48,7 @@ - + @@ -134,79 +134,67 @@ - - - - - - - - + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + - - - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + @@ -219,16 +207,12 @@ - - - + - - @@ -238,8 +222,6 @@ - - @@ -247,20 +229,14 @@ - - - - - - @@ -271,8 +247,6 @@ - - @@ -502,20 +476,6 @@ - - - - - - - - - - - - - - @@ -589,9 +549,7 @@ - - - + @@ -624,8 +582,6 @@ - - @@ -633,8 +589,6 @@ - - @@ -718,10 +672,6 @@ - - - - @@ -799,7 +749,7 @@ - + @@ -808,7 +758,7 @@ - + @@ -1047,12 +997,10 @@ - + - - - + @@ -1064,7 +1012,7 @@ - + @@ -1086,8 +1034,8 @@ + - @@ -1103,7 +1051,6 @@ - @@ -1130,33 +1077,27 @@ - - - + - - + + - - - + - - - + - + @@ -1305,11 +1246,11 @@ - + - + @@ -1448,8 +1389,6 @@ - - @@ -1524,8 +1463,6 @@ - - @@ -1534,8 +1471,6 @@ - - @@ -1579,8 +1514,79 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/tonikelope/megabasterd/SettingsDialog.java b/src/main/java/com/tonikelope/megabasterd/SettingsDialog.java index a4499b65d..1425f40ab 100644 --- a/src/main/java/com/tonikelope/megabasterd/SettingsDialog.java +++ b/src/main/java/com/tonikelope/megabasterd/SettingsDialog.java @@ -3,6 +3,7 @@ package com.tonikelope.megabasterd; import static com.tonikelope.megabasterd.DBTools.*; import static com.tonikelope.megabasterd.MainPanel.*; import static com.tonikelope.megabasterd.MiscTools.*; +import java.awt.Color; import java.awt.Dialog; import java.awt.Frame; import java.io.BufferedInputStream; @@ -591,6 +592,22 @@ public class SettingsDialog extends javax.swing.JDialog { custom_proxy_textarea.setText(custom_proxy_list); } + String mega_api_key_sql = DBTools.selectSettingValue("mega_api_key"); + + if (mega_api_key_sql != null && !"".equals(mega_api_key_sql)) { + mega_api_key.setText(mega_api_key_sql); + mega_api_key_panel.setBackground(new Color(153, 255, 153)); + mega_api_key_warning.setVisible(false); + mega_api_key_label.setVisible(modal); + MegaAPI.API_KEY = mega_api_key_sql.trim(); + } else { + mega_api_key_panel.setBackground(Color.red); + mega_api_key_warning.setForeground(Color.white); + mega_api_key_label.setForeground(Color.WHITE); + mega_api_key_warning.setVisible(true); + MegaAPI.API_KEY = null; + } + pack(); }); @@ -633,13 +650,6 @@ public class SettingsDialog extends javax.swing.JDialog { megacrypter_reverse_port_spinner = new javax.swing.JSpinner(); down_dir_label = new javax.swing.JLabel(); rec_smart_proxy_label = new javax.swing.JLabel(); - jSeparator5 = new javax.swing.JSeparator(); - jSeparator6 = new javax.swing.JSeparator(); - jSeparator7 = new javax.swing.JSeparator(); - jSeparator8 = new javax.swing.JSeparator(); - jSeparator9 = new javax.swing.JSeparator(); - jSeparator10 = new javax.swing.JSeparator(); - jSeparator11 = new javax.swing.JSeparator(); jScrollPane1 = new javax.swing.JScrollPane(); custom_proxy_textarea = new javax.swing.JTextArea(); custom_proxy_list_label = new javax.swing.JLabel(); @@ -654,8 +664,6 @@ public class SettingsDialog extends javax.swing.JDialog { max_up_speed_spinner = new javax.swing.JSpinner(); limit_upload_speed_checkbox = new javax.swing.JCheckBox(); rec_upload_slots_label = new javax.swing.JLabel(); - jSeparator3 = new javax.swing.JSeparator(); - jSeparator4 = new javax.swing.JSeparator(); accounts_panel = new javax.swing.JPanel(); mega_accounts_scrollpane = new javax.swing.JScrollPane(); mega_accounts_table = new javax.swing.JTable(); @@ -691,7 +699,6 @@ public class SettingsDialog extends javax.swing.JDialog { zoom_spinner = new javax.swing.JSpinner(); rec_zoom_label = new javax.swing.JLabel(); jButton1 = new javax.swing.JButton(); - jSeparator1 = new javax.swing.JSeparator(); jLabel2 = new javax.swing.JLabel(); language_combo = new javax.swing.JComboBox<>(); font_label = new javax.swing.JLabel(); @@ -699,15 +706,17 @@ public class SettingsDialog extends javax.swing.JDialog { custom_chunks_dir_button = new javax.swing.JButton(); custom_chunks_dir_current_label = new javax.swing.JLabel(); custom_chunks_dir_checkbox = new javax.swing.JCheckBox(); - jSeparator12 = new javax.swing.JSeparator(); start_frozen_checkbox = new javax.swing.JCheckBox(); - jSeparator15 = new javax.swing.JSeparator(); run_command_checkbox = new javax.swing.JCheckBox(); run_command_textbox = new javax.swing.JTextField(); run_command_textbox.addMouseListener(new ContextMenuMouseListener()); run_command_test_button = new javax.swing.JButton(); debug_file_checkbox = new javax.swing.JCheckBox(); - jSeparator2 = new javax.swing.JSeparator(); + mega_api_key_panel = new javax.swing.JPanel(); + mega_api_key_label = new javax.swing.JLabel(); + mega_api_key = new javax.swing.JTextField(); + mega_api_key.addMouseListener(new ContextMenuMouseListener()); + mega_api_key_warning = new javax.swing.JLabel(); status = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); @@ -866,64 +875,54 @@ public class SettingsDialog extends javax.swing.JDialog { .addGroup(downloads_panelLayout.createSequentialGroup() .addContainerGap() .addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jSeparator11) - .addComponent(jSeparator9) - .addComponent(jSeparator8) - .addComponent(jSeparator7) - .addComponent(jSeparator6) - .addComponent(jSeparator5) - .addComponent(jSeparator10) + .addComponent(smart_proxy_checkbox) .addGroup(downloads_panelLayout.createSequentialGroup() + .addComponent(max_downloads_label) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(max_downloads_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(multi_slot_down_checkbox) + .addComponent(limit_download_speed_checkbox) + .addGroup(downloads_panelLayout.createSequentialGroup() + .addGap(21, 21, 21) .addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(smart_proxy_checkbox) + .addComponent(rec_download_slots_label) .addGroup(downloads_panelLayout.createSequentialGroup() - .addComponent(max_downloads_label) + .addComponent(default_slots_down_label) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(max_downloads_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(multi_slot_down_checkbox) - .addComponent(limit_download_speed_checkbox) + .addComponent(default_slots_down_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(downloads_panelLayout.createSequentialGroup() - .addGap(21, 21, 21) - .addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(rec_download_slots_label) - .addGroup(downloads_panelLayout.createSequentialGroup() - .addComponent(default_slots_down_label) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(default_slots_down_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(downloads_panelLayout.createSequentialGroup() - .addComponent(max_down_speed_label) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(max_down_speed_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(downloads_panelLayout.createSequentialGroup() - .addComponent(use_mega_label) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(use_mega_account_down_combobox, javax.swing.GroupLayout.PREFERRED_SIZE, 700, javax.swing.GroupLayout.PREFERRED_SIZE)))) - .addGroup(downloads_panelLayout.createSequentialGroup() - .addGap(26, 26, 26) - .addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(rec_smart_proxy_label, javax.swing.GroupLayout.PREFERRED_SIZE, 542, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(custom_proxy_list_label, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jScrollPane1) - .addComponent(rec_smart_proxy_label1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - .addGroup(downloads_panelLayout.createSequentialGroup() - .addComponent(change_download_dir_button) + .addComponent(max_down_speed_label) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(down_dir_label) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(default_dir_label)) - .addComponent(megacrypter_reverse_checkbox) - .addComponent(use_mega_account_down_checkbox) - .addComponent(verify_file_down_checkbox) + .addComponent(max_down_speed_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(downloads_panelLayout.createSequentialGroup() - .addGap(21, 21, 21) - .addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(megacrypter_reverse_warning_label) - .addGroup(downloads_panelLayout.createSequentialGroup() - .addComponent(megacrypter_reverse_port_label) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(megacrypter_reverse_port_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))) - .addGap(0, 42, Short.MAX_VALUE))) - .addContainerGap()) + .addComponent(use_mega_label) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(use_mega_account_down_combobox, javax.swing.GroupLayout.PREFERRED_SIZE, 700, javax.swing.GroupLayout.PREFERRED_SIZE)))) + .addGroup(downloads_panelLayout.createSequentialGroup() + .addGap(26, 26, 26) + .addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(rec_smart_proxy_label, javax.swing.GroupLayout.PREFERRED_SIZE, 542, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(custom_proxy_list_label, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jScrollPane1) + .addComponent(rec_smart_proxy_label1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addGroup(downloads_panelLayout.createSequentialGroup() + .addComponent(change_download_dir_button) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(down_dir_label) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(default_dir_label)) + .addComponent(megacrypter_reverse_checkbox) + .addComponent(use_mega_account_down_checkbox) + .addComponent(verify_file_down_checkbox) + .addGroup(downloads_panelLayout.createSequentialGroup() + .addGap(21, 21, 21) + .addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(megacrypter_reverse_warning_label) + .addGroup(downloads_panelLayout.createSequentialGroup() + .addComponent(megacrypter_reverse_port_label) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(megacrypter_reverse_port_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))) + .addContainerGap(54, Short.MAX_VALUE)) ); downloads_panelLayout.setVerticalGroup( downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -933,15 +932,11 @@ public class SettingsDialog extends javax.swing.JDialog { .addComponent(down_dir_label) .addComponent(default_dir_label) .addComponent(change_download_dir_button)) - .addGap(18, 18, 18) - .addComponent(jSeparator5, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) + .addGap(38, 38, 38) .addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(max_downloads_label) .addComponent(max_downloads_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) - .addComponent(jSeparator6, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) .addComponent(multi_slot_down_checkbox) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) @@ -950,27 +945,19 @@ public class SettingsDialog extends javax.swing.JDialog { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(rec_download_slots_label) .addGap(18, 18, 18) - .addComponent(jSeparator7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) .addComponent(limit_download_speed_checkbox) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(max_down_speed_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(max_down_speed_label)) .addGap(18, 18, 18) - .addComponent(jSeparator8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) .addComponent(verify_file_down_checkbox) .addGap(18, 18, 18) - .addComponent(jSeparator9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(12, 12, 12) .addComponent(use_mega_account_down_checkbox) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(use_mega_account_down_combobox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(use_mega_label)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(jSeparator10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(megacrypter_reverse_checkbox) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) @@ -980,8 +967,6 @@ public class SettingsDialog extends javax.swing.JDialog { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(megacrypter_reverse_warning_label) .addGap(18, 18, 18) - .addComponent(jSeparator11, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) .addComponent(smart_proxy_checkbox) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(rec_smart_proxy_label) @@ -1038,9 +1023,7 @@ public class SettingsDialog extends javax.swing.JDialog { .addGroup(uploads_panelLayout.createSequentialGroup() .addContainerGap() .addGroup(uploads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jSeparator3, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(rec_upload_slots_label, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jSeparator4) + .addComponent(rec_upload_slots_label, javax.swing.GroupLayout.DEFAULT_SIZE, 1093, Short.MAX_VALUE) .addGroup(uploads_panelLayout.createSequentialGroup() .addGap(20, 20, 20) .addComponent(max_up_speed_label) @@ -1065,16 +1048,12 @@ public class SettingsDialog extends javax.swing.JDialog { .addComponent(max_uploads_label) .addComponent(max_uploads_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) - .addComponent(jSeparator3, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) .addGroup(uploads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(default_slots_up_label) .addComponent(default_slots_up_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(rec_upload_slots_label) .addGap(18, 18, 18) - .addComponent(jSeparator4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) .addComponent(limit_upload_speed_checkbox) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(uploads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) @@ -1263,7 +1242,7 @@ public class SettingsDialog extends javax.swing.JDialog { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(mega_accounts_scrollpane, javax.swing.GroupLayout.DEFAULT_SIZE, 322, Short.MAX_VALUE) + .addComponent(mega_accounts_scrollpane, javax.swing.GroupLayout.DEFAULT_SIZE, 145, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(accounts_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(remove_mega_account_button) @@ -1271,7 +1250,7 @@ public class SettingsDialog extends javax.swing.JDialog { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(elc_accounts_label) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(elc_accounts_scrollpane, javax.swing.GroupLayout.DEFAULT_SIZE, 322, Short.MAX_VALUE) + .addComponent(elc_accounts_scrollpane, javax.swing.GroupLayout.DEFAULT_SIZE, 144, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(accounts_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(remove_elc_account_button) @@ -1348,11 +1327,11 @@ public class SettingsDialog extends javax.swing.JDialog { .addContainerGap() .addComponent(proxy_user_label) .addGap(6, 6, 6) - .addComponent(proxy_user_textfield, javax.swing.GroupLayout.DEFAULT_SIZE, 297, Short.MAX_VALUE) + .addComponent(proxy_user_textfield, javax.swing.GroupLayout.DEFAULT_SIZE, 310, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(proxy_pass_label) .addGap(6, 6, 6) - .addComponent(proxy_pass_textfield, javax.swing.GroupLayout.DEFAULT_SIZE, 461, Short.MAX_VALUE) + .addComponent(proxy_pass_textfield, javax.swing.GroupLayout.DEFAULT_SIZE, 474, Short.MAX_VALUE) .addContainerGap()) ); proxy_auth_panelLayout.setVerticalGroup( @@ -1506,6 +1485,50 @@ public class SettingsDialog extends javax.swing.JDialog { debug_file_checkbox.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N debug_file_checkbox.setText("Save debug info to file"); + mega_api_key_label.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N + mega_api_key_label.setText("MEGA API KEY:"); + mega_api_key_label.setDoubleBuffered(true); + + mega_api_key.setFont(new java.awt.Font("Dialog", 0, 18)); // NOI18N + mega_api_key.setDoubleBuffered(true); + + mega_api_key_warning.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N + mega_api_key_warning.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + mega_api_key_warning.setText("WARNING: USING MEGA API WITHOUT API KEY MAY VIOLATE ITS TERM OF USE. YOU SHOULD GET A KEY -> https://mega.nz/sdk"); + mega_api_key_warning.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + mega_api_key_warning.setDoubleBuffered(true); + mega_api_key_warning.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + mega_api_key_warningMouseClicked(evt); + } + }); + + javax.swing.GroupLayout mega_api_key_panelLayout = new javax.swing.GroupLayout(mega_api_key_panel); + mega_api_key_panel.setLayout(mega_api_key_panelLayout); + mega_api_key_panelLayout.setHorizontalGroup( + mega_api_key_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(mega_api_key_panelLayout.createSequentialGroup() + .addContainerGap() + .addGroup(mega_api_key_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(mega_api_key_warning, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(mega_api_key_panelLayout.createSequentialGroup() + .addComponent(mega_api_key_label) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(mega_api_key))) + .addContainerGap()) + ); + mega_api_key_panelLayout.setVerticalGroup( + mega_api_key_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(mega_api_key_panelLayout.createSequentialGroup() + .addContainerGap() + .addGroup(mega_api_key_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(mega_api_key_label) + .addComponent(mega_api_key, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(mega_api_key_warning) + .addContainerGap(15, Short.MAX_VALUE)) + ); + javax.swing.GroupLayout advanced_panelLayout = new javax.swing.GroupLayout(advanced_panel); advanced_panel.setLayout(advanced_panelLayout); advanced_panelLayout.setHorizontalGroup( @@ -1513,9 +1536,7 @@ public class SettingsDialog extends javax.swing.JDialog { .addGroup(advanced_panelLayout.createSequentialGroup() .addContainerGap() .addGroup(advanced_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jSeparator15, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jSeparator12, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jSeparator1) + .addComponent(mega_api_key_panel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(advanced_panelLayout.createSequentialGroup() .addGroup(advanced_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(advanced_panelLayout.createSequentialGroup() @@ -1526,7 +1547,7 @@ public class SettingsDialog extends javax.swing.JDialog { .addComponent(zoom_label) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(zoom_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 237, Short.MAX_VALUE)) + .addGap(0, 263, Short.MAX_VALUE)) .addGroup(advanced_panelLayout.createSequentialGroup() .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -1542,8 +1563,8 @@ public class SettingsDialog extends javax.swing.JDialog { .addComponent(proxy_panel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(advanced_panelLayout.createSequentialGroup() .addGroup(advanced_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(debug_file_checkbox) .addComponent(start_frozen_checkbox) + .addComponent(debug_file_checkbox) .addComponent(custom_chunks_dir_checkbox) .addGroup(advanced_panelLayout.createSequentialGroup() .addComponent(custom_chunks_dir_button) @@ -1554,8 +1575,7 @@ public class SettingsDialog extends javax.swing.JDialog { .addComponent(run_command_checkbox) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(run_command_test_button))) - .addGap(0, 0, Short.MAX_VALUE)) - .addComponent(jSeparator2)) + .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); advanced_panelLayout.setVerticalGroup( @@ -1576,31 +1596,25 @@ public class SettingsDialog extends javax.swing.JDialog { .addComponent(jLabel2) .addComponent(language_combo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButton1)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 8, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGap(18, 18, 18) .addComponent(custom_chunks_dir_checkbox) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(advanced_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(custom_chunks_dir_button) .addComponent(custom_chunks_dir_current_label)) - .addGap(18, 18, 18) - .addComponent(jSeparator12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(mega_api_key_panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(start_frozen_checkbox) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(jSeparator15, javax.swing.GroupLayout.PREFERRED_SIZE, 8, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGap(18, 18, 18) .addComponent(debug_file_checkbox) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGap(18, 18, 18) .addGroup(advanced_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(run_command_checkbox) .addComponent(run_command_test_button)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(run_command_textbox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGap(18, 18, 18) .addComponent(proxy_panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(rec_zoom_label) @@ -1621,7 +1635,7 @@ public class SettingsDialog extends javax.swing.JDialog { .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(panel_tabs, javax.swing.GroupLayout.DEFAULT_SIZE, 1071, Short.MAX_VALUE) + .addComponent(panel_tabs, javax.swing.GroupLayout.DEFAULT_SIZE, 1124, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(status, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(6, 6, 6) @@ -1634,7 +1648,7 @@ public class SettingsDialog extends javax.swing.JDialog { layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() - .addComponent(panel_tabs, javax.swing.GroupLayout.DEFAULT_SIZE, 940, Short.MAX_VALUE) + .addComponent(panel_tabs, javax.swing.GroupLayout.DEFAULT_SIZE, 585, Short.MAX_VALUE) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) @@ -1687,6 +1701,7 @@ public class SettingsDialog extends javax.swing.JDialog { settings.put("custom_chunks_dir", _custom_chunks_dir); settings.put("run_command", run_command_checkbox.isSelected() ? "yes" : "no"); settings.put("run_command_path", run_command_textbox.getText()); + settings.put("mega_api_key", mega_api_key.getText().trim()); if (custom_proxy_textarea.getText().trim().length() == 0) { smart_proxy_checkbox.setSelected(false); @@ -2160,135 +2175,6 @@ public class SettingsDialog extends javax.swing.JDialog { } }//GEN-LAST:event_save_buttonActionPerformed - private void use_proxy_checkboxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_use_proxy_checkboxStateChanged - - proxy_host_label.setEnabled(use_proxy_checkbox.isSelected()); - proxy_host_textfield.setEnabled(use_proxy_checkbox.isSelected()); - proxy_port_label.setEnabled(use_proxy_checkbox.isSelected()); - proxy_port_textfield.setEnabled(use_proxy_checkbox.isSelected()); - proxy_user_label.setEnabled(use_proxy_checkbox.isSelected()); - proxy_user_textfield.setEnabled(use_proxy_checkbox.isSelected()); - proxy_pass_label.setEnabled(use_proxy_checkbox.isSelected()); - proxy_pass_textfield.setEnabled(use_proxy_checkbox.isSelected()); - proxy_warning_label.setEnabled(use_proxy_checkbox.isSelected()); - - if (use_proxy_checkbox.isSelected()) { - smart_proxy_checkbox.setSelected(false); - } - }//GEN-LAST:event_use_proxy_checkboxStateChanged - - private void import_settings_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_import_settings_buttonActionPerformed - - Object[] options = {"No", - LabelTranslatorSingleton.getInstance().translate("Yes")}; - - int n = showOptionDialog(this, - LabelTranslatorSingleton.getInstance().translate("All your current settings and accounts will be deleted after import. (It is recommended to export your current settings before importing). \n\nDo you want to continue?"), - LabelTranslatorSingleton.getInstance().translate("IMPORT SETTINGS"), YES_NO_CANCEL_OPTION, javax.swing.JOptionPane.WARNING_MESSAGE, - null, - options, - options[0]); - - if (n == 1) { - JFileChooser filechooser = new JFileChooser(); - updateFonts(filechooser, GUI_FONT, (float) (_main_panel.getZoom_factor() * 1.25)); - filechooser.setCurrentDirectory(new File(_download_path)); - filechooser.setDialogTitle("Select settings file"); - - if (filechooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { - - File file = filechooser.getSelectedFile(); - - try { - - try (InputStream fis = new BufferedInputStream(new FileInputStream(file)); ObjectInputStream ois = new ObjectInputStream(fis)) { - - HashMap settings = (HashMap) ois.readObject(); - - insertSettingsValues((HashMap) settings.get("settings")); - - insertMegaAccounts((HashMap) settings.get("mega_accounts")); - - insertELCAccounts((HashMap) settings.get("elc_accounts")); - - _main_panel.loadUserSettings(); - - JOptionPane.showMessageDialog(this, LabelTranslatorSingleton.getInstance().translate("Settings successfully imported!"), LabelTranslatorSingleton.getInstance().translate("Settings imported"), JOptionPane.INFORMATION_MESSAGE); - - _settings_ok = true; - - setVisible(false); - - } catch (SQLException | ClassNotFoundException ex) { - LOG.log(Level.SEVERE, ex.getMessage()); - } - - } catch (IOException ex) { - LOG.log(Level.SEVERE, ex.getMessage()); - } - } - } - - }//GEN-LAST:event_import_settings_buttonActionPerformed - - private void export_settings_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_export_settings_buttonActionPerformed - - Object[] options = {"No", - LabelTranslatorSingleton.getInstance().translate("Yes")}; - - int n = showOptionDialog(this, - LabelTranslatorSingleton.getInstance().translate("Only SAVED settings and accounts will be exported. (If you are unsure, it is better to save your current settings and then export them).\n\nDo you want to continue?"), - LabelTranslatorSingleton.getInstance().translate("EXPORT SETTINGS"), YES_NO_CANCEL_OPTION, javax.swing.JOptionPane.WARNING_MESSAGE, - null, - options, - options[0]); - - if (n == 1) { - JFileChooser filechooser = new JFileChooser(); - updateFonts(filechooser, GUI_FONT, (float) (_main_panel.getZoom_factor() * 1.25)); - filechooser.setCurrentDirectory(new File(_download_path)); - filechooser.setDialogTitle("Save as"); - - if (filechooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { - - File file = filechooser.getSelectedFile(); - - try { - - if (file.exists()) { - file.delete(); - } - - file.createNewFile(); - - try (BufferedOutputStream fos = new BufferedOutputStream(new FileOutputStream(file)); ObjectOutputStream oos = new ObjectOutputStream(fos)) { - - HashMap settings = new HashMap<>(); - - settings.put("settings", selectSettingsValues()); - - settings.put("mega_accounts", selectMegaAccounts()); - - settings.put("elc_accounts", selectELCAccounts()); - - oos.writeObject(settings); - - JOptionPane.showMessageDialog(this, LabelTranslatorSingleton.getInstance().translate("Settings successfully exported!"), LabelTranslatorSingleton.getInstance().translate("Settings exported"), JOptionPane.INFORMATION_MESSAGE); - - setVisible(false); - - } catch (SQLException ex) { - LOG.log(Level.SEVERE, ex.getMessage()); - } - - } catch (IOException ex) { - LOG.log(Level.SEVERE, ex.getMessage()); - } - } - } - - }//GEN-LAST:event_export_settings_buttonActionPerformed - private void add_elc_account_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_add_elc_account_buttonActionPerformed DefaultTableModel model = (DefaultTableModel) elc_accounts_table.getModel(); @@ -2677,6 +2563,214 @@ public class SettingsDialog extends javax.swing.JDialog { }//GEN-LAST:event_remove_mega_account_buttonActionPerformed + private void limit_upload_speed_checkboxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_limit_upload_speed_checkboxStateChanged + + max_up_speed_label.setEnabled(limit_upload_speed_checkbox.isSelected()); + max_up_speed_spinner.setEnabled(limit_upload_speed_checkbox.isSelected()); + }//GEN-LAST:event_limit_upload_speed_checkboxStateChanged + + private void run_command_test_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_run_command_test_buttonActionPerformed + // TODO add your handling code here: + + if (run_command_textbox.getText() != null && !"".equals(run_command_textbox.getText().trim())) { + + try { + Runtime.getRuntime().exec(run_command_textbox.getText().trim()); + } catch (IOException ex) { + Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, ex.getMessage()); + JOptionPane.showMessageDialog(this, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); + } + } + }//GEN-LAST:event_run_command_test_buttonActionPerformed + + private void run_command_checkboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_run_command_checkboxActionPerformed + // TODO add your handling code here: + + run_command_textbox.setEnabled(run_command_checkbox.isSelected()); + }//GEN-LAST:event_run_command_checkboxActionPerformed + + private void custom_chunks_dir_checkboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_custom_chunks_dir_checkboxActionPerformed + + if (custom_chunks_dir_checkbox.isSelected()) { + + custom_chunks_dir_button.setEnabled(true); + custom_chunks_dir_current_label.setEnabled(true); + + } else { + + custom_chunks_dir_button.setEnabled(false); + custom_chunks_dir_current_label.setEnabled(false); + + } + }//GEN-LAST:event_custom_chunks_dir_checkboxActionPerformed + + private void custom_chunks_dir_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_custom_chunks_dir_buttonActionPerformed + javax.swing.JFileChooser filechooser = new javax.swing.JFileChooser(); + updateFonts(filechooser, GUI_FONT, (float) (_main_panel.getZoom_factor() * 1.25)); + + filechooser.setCurrentDirectory(new java.io.File(_download_path)); + filechooser.setDialogTitle("Temporary chunks directory"); + filechooser.setFileSelectionMode(javax.swing.JFileChooser.DIRECTORIES_ONLY); + filechooser.setAcceptAllFileFilterUsed(false); + + if (filechooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { + + File file = filechooser.getSelectedFile(); + + _custom_chunks_dir = file.getAbsolutePath(); + + this.custom_chunks_dir_current_label.setText(truncateText(_custom_chunks_dir, 80)); + } + }//GEN-LAST:event_custom_chunks_dir_buttonActionPerformed + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + // TODO add your handling code here: + + Object[] options = {"No", + LabelTranslatorSingleton.getInstance().translate("Yes")}; + + int n = showOptionDialog(this, + LabelTranslatorSingleton.getInstance().translate("ALL YOUR SETTINGS, ACCOUNTS AND TRANSFERENCES WILL BE REMOVED. (THIS CAN'T BE UNDONE)\n\nDo you want to continue?"), + LabelTranslatorSingleton.getInstance().translate("RESET MEGABASTERD"), YES_NO_CANCEL_OPTION, javax.swing.JOptionPane.WARNING_MESSAGE, + null, + options, + options[0]); + + if (n == 1) { + + setVisible(false); + _main_panel.byebyenow(true, true); + + } + }//GEN-LAST:event_jButton1ActionPerformed + + private void export_settings_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_export_settings_buttonActionPerformed + + Object[] options = {"No", + LabelTranslatorSingleton.getInstance().translate("Yes")}; + + int n = showOptionDialog(this, + LabelTranslatorSingleton.getInstance().translate("Only SAVED settings and accounts will be exported. (If you are unsure, it is better to save your current settings and then export them).\n\nDo you want to continue?"), + LabelTranslatorSingleton.getInstance().translate("EXPORT SETTINGS"), YES_NO_CANCEL_OPTION, javax.swing.JOptionPane.WARNING_MESSAGE, + null, + options, + options[0]); + + if (n == 1) { + JFileChooser filechooser = new JFileChooser(); + updateFonts(filechooser, GUI_FONT, (float) (_main_panel.getZoom_factor() * 1.25)); + filechooser.setCurrentDirectory(new File(_download_path)); + filechooser.setDialogTitle("Save as"); + + if (filechooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { + + File file = filechooser.getSelectedFile(); + + try { + + if (file.exists()) { + file.delete(); + } + + file.createNewFile(); + + try (BufferedOutputStream fos = new BufferedOutputStream(new FileOutputStream(file)); ObjectOutputStream oos = new ObjectOutputStream(fos)) { + + HashMap settings = new HashMap<>(); + + settings.put("settings", selectSettingsValues()); + + settings.put("mega_accounts", selectMegaAccounts()); + + settings.put("elc_accounts", selectELCAccounts()); + + oos.writeObject(settings); + + JOptionPane.showMessageDialog(this, LabelTranslatorSingleton.getInstance().translate("Settings successfully exported!"), LabelTranslatorSingleton.getInstance().translate("Settings exported"), JOptionPane.INFORMATION_MESSAGE); + + setVisible(false); + + } catch (SQLException ex) { + LOG.log(Level.SEVERE, ex.getMessage()); + } + + } catch (IOException ex) { + LOG.log(Level.SEVERE, ex.getMessage()); + } + } + } + }//GEN-LAST:event_export_settings_buttonActionPerformed + + private void import_settings_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_import_settings_buttonActionPerformed + + Object[] options = {"No", + LabelTranslatorSingleton.getInstance().translate("Yes")}; + + int n = showOptionDialog(this, + LabelTranslatorSingleton.getInstance().translate("All your current settings and accounts will be deleted after import. (It is recommended to export your current settings before importing). \n\nDo you want to continue?"), + LabelTranslatorSingleton.getInstance().translate("IMPORT SETTINGS"), YES_NO_CANCEL_OPTION, javax.swing.JOptionPane.WARNING_MESSAGE, + null, + options, + options[0]); + + if (n == 1) { + JFileChooser filechooser = new JFileChooser(); + updateFonts(filechooser, GUI_FONT, (float) (_main_panel.getZoom_factor() * 1.25)); + filechooser.setCurrentDirectory(new File(_download_path)); + filechooser.setDialogTitle("Select settings file"); + + if (filechooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { + + File file = filechooser.getSelectedFile(); + + try { + + try (InputStream fis = new BufferedInputStream(new FileInputStream(file)); ObjectInputStream ois = new ObjectInputStream(fis)) { + + HashMap settings = (HashMap) ois.readObject(); + + insertSettingsValues((HashMap) settings.get("settings")); + + insertMegaAccounts((HashMap) settings.get("mega_accounts")); + + insertELCAccounts((HashMap) settings.get("elc_accounts")); + + _main_panel.loadUserSettings(); + + JOptionPane.showMessageDialog(this, LabelTranslatorSingleton.getInstance().translate("Settings successfully imported!"), LabelTranslatorSingleton.getInstance().translate("Settings imported"), JOptionPane.INFORMATION_MESSAGE); + + _settings_ok = true; + + setVisible(false); + + } catch (SQLException | ClassNotFoundException ex) { + LOG.log(Level.SEVERE, ex.getMessage()); + } + + } catch (IOException ex) { + LOG.log(Level.SEVERE, ex.getMessage()); + } + } + } + }//GEN-LAST:event_import_settings_buttonActionPerformed + + private void use_proxy_checkboxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_use_proxy_checkboxStateChanged + + proxy_host_label.setEnabled(use_proxy_checkbox.isSelected()); + proxy_host_textfield.setEnabled(use_proxy_checkbox.isSelected()); + proxy_port_label.setEnabled(use_proxy_checkbox.isSelected()); + proxy_port_textfield.setEnabled(use_proxy_checkbox.isSelected()); + proxy_user_label.setEnabled(use_proxy_checkbox.isSelected()); + proxy_user_textfield.setEnabled(use_proxy_checkbox.isSelected()); + proxy_pass_label.setEnabled(use_proxy_checkbox.isSelected()); + proxy_pass_textfield.setEnabled(use_proxy_checkbox.isSelected()); + proxy_warning_label.setEnabled(use_proxy_checkbox.isSelected()); + + if (use_proxy_checkbox.isSelected()) { + smart_proxy_checkbox.setSelected(false); + } + }//GEN-LAST:event_use_proxy_checkboxStateChanged + private void multi_slot_down_checkboxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_multi_slot_down_checkboxStateChanged if (!multi_slot_down_checkbox.isSelected() && !smart_proxy_checkbox.isSelected()) { @@ -2754,6 +2848,13 @@ public class SettingsDialog extends javax.swing.JDialog { } }//GEN-LAST:event_use_mega_account_down_checkboxStateChanged + private void smart_proxy_checkboxMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_smart_proxy_checkboxMouseClicked + // TODO add your handling code here: + if (this.smart_proxy_checkbox.isSelected()) { + JOptionPane.showMessageDialog(this, LabelTranslatorSingleton.getInstance().translate("Using proxies or VPN to bypass MEGA's daily download limitation may violate its Terms of Use.\n\nUSE THIS OPTION AT YOUR OWN RISK."), LabelTranslatorSingleton.getInstance().translate("WARNING"), JOptionPane.WARNING_MESSAGE); + } + }//GEN-LAST:event_smart_proxy_checkboxMouseClicked + private void smart_proxy_checkboxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_smart_proxy_checkboxStateChanged if (smart_proxy_checkbox.isSelected()) { @@ -2793,95 +2894,10 @@ public class SettingsDialog extends javax.swing.JDialog { megacrypter_reverse_warning_label.setEnabled(megacrypter_reverse_checkbox.isSelected()); }//GEN-LAST:event_megacrypter_reverse_checkboxStateChanged - private void limit_upload_speed_checkboxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_limit_upload_speed_checkboxStateChanged - - max_up_speed_label.setEnabled(limit_upload_speed_checkbox.isSelected()); - max_up_speed_spinner.setEnabled(limit_upload_speed_checkbox.isSelected()); - }//GEN-LAST:event_limit_upload_speed_checkboxStateChanged - - private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + private void mega_api_key_warningMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_mega_api_key_warningMouseClicked // TODO add your handling code here: - - Object[] options = {"No", - LabelTranslatorSingleton.getInstance().translate("Yes")}; - - int n = showOptionDialog(this, - LabelTranslatorSingleton.getInstance().translate("ALL YOUR SETTINGS, ACCOUNTS AND TRANSFERENCES WILL BE REMOVED. (THIS CAN'T BE UNDONE)\n\nDo you want to continue?"), - LabelTranslatorSingleton.getInstance().translate("RESET MEGABASTERD"), YES_NO_CANCEL_OPTION, javax.swing.JOptionPane.WARNING_MESSAGE, - null, - options, - options[0]); - - if (n == 1) { - - setVisible(false); - _main_panel.byebyenow(true, true); - - } - }//GEN-LAST:event_jButton1ActionPerformed - - private void custom_chunks_dir_checkboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_custom_chunks_dir_checkboxActionPerformed - - if (custom_chunks_dir_checkbox.isSelected()) { - - custom_chunks_dir_button.setEnabled(true); - custom_chunks_dir_current_label.setEnabled(true); - - } else { - - custom_chunks_dir_button.setEnabled(false); - custom_chunks_dir_current_label.setEnabled(false); - - } - }//GEN-LAST:event_custom_chunks_dir_checkboxActionPerformed - - private void custom_chunks_dir_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_custom_chunks_dir_buttonActionPerformed - javax.swing.JFileChooser filechooser = new javax.swing.JFileChooser(); - updateFonts(filechooser, GUI_FONT, (float) (_main_panel.getZoom_factor() * 1.25)); - - filechooser.setCurrentDirectory(new java.io.File(_download_path)); - filechooser.setDialogTitle("Temporary chunks directory"); - filechooser.setFileSelectionMode(javax.swing.JFileChooser.DIRECTORIES_ONLY); - filechooser.setAcceptAllFileFilterUsed(false); - - if (filechooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { - - File file = filechooser.getSelectedFile(); - - _custom_chunks_dir = file.getAbsolutePath(); - - this.custom_chunks_dir_current_label.setText(truncateText(_custom_chunks_dir, 80)); - } - }//GEN-LAST:event_custom_chunks_dir_buttonActionPerformed - - private void run_command_checkboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_run_command_checkboxActionPerformed - // TODO add your handling code here: - - run_command_textbox.setEnabled(run_command_checkbox.isSelected()); - - }//GEN-LAST:event_run_command_checkboxActionPerformed - - private void run_command_test_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_run_command_test_buttonActionPerformed - // TODO add your handling code here: - - if (run_command_textbox.getText() != null && !"".equals(run_command_textbox.getText().trim())) { - - try { - Runtime.getRuntime().exec(run_command_textbox.getText().trim()); - } catch (IOException ex) { - Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, ex.getMessage()); - JOptionPane.showMessageDialog(this, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); - } - } - }//GEN-LAST:event_run_command_test_buttonActionPerformed - - private void smart_proxy_checkboxMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_smart_proxy_checkboxMouseClicked - // TODO add your handling code here: - if (this.smart_proxy_checkbox.isSelected()) { - JOptionPane.showMessageDialog(this, LabelTranslatorSingleton.getInstance().translate("Using proxies or VPN to bypass MEGA's daily download limitation may violate its Terms of Use.\n\nUSE THIS OPTION AT YOUR OWN RISK."), LabelTranslatorSingleton.getInstance().translate("WARNING"), JOptionPane.WARNING_MESSAGE); - } - - }//GEN-LAST:event_smart_proxy_checkboxMouseClicked + openBrowserURL("https://mega.nz/sdk"); + }//GEN-LAST:event_mega_api_key_warningMouseClicked // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel accounts_panel; @@ -2919,19 +2935,6 @@ public class SettingsDialog extends javax.swing.JDialog { private javax.swing.JLabel jLabel2; private javax.swing.JProgressBar jProgressBar1; private javax.swing.JScrollPane jScrollPane1; - private javax.swing.JSeparator jSeparator1; - private javax.swing.JSeparator jSeparator10; - private javax.swing.JSeparator jSeparator11; - private javax.swing.JSeparator jSeparator12; - private javax.swing.JSeparator jSeparator15; - private javax.swing.JSeparator jSeparator2; - private javax.swing.JSeparator jSeparator3; - private javax.swing.JSeparator jSeparator4; - private javax.swing.JSeparator jSeparator5; - private javax.swing.JSeparator jSeparator6; - private javax.swing.JSeparator jSeparator7; - private javax.swing.JSeparator jSeparator8; - private javax.swing.JSeparator jSeparator9; private javax.swing.JComboBox language_combo; private javax.swing.JCheckBox limit_download_speed_checkbox; private javax.swing.JCheckBox limit_upload_speed_checkbox; @@ -2946,6 +2949,10 @@ public class SettingsDialog extends javax.swing.JDialog { private javax.swing.JLabel mega_accounts_label; private javax.swing.JScrollPane mega_accounts_scrollpane; private javax.swing.JTable mega_accounts_table; + private javax.swing.JTextField mega_api_key; + private javax.swing.JLabel mega_api_key_label; + private javax.swing.JPanel mega_api_key_panel; + private javax.swing.JLabel mega_api_key_warning; private javax.swing.JCheckBox megacrypter_reverse_checkbox; private javax.swing.JLabel megacrypter_reverse_port_label; private javax.swing.JSpinner megacrypter_reverse_port_spinner; diff --git a/src/main/resources/images/apikey.png b/src/main/resources/images/apikey.png new file mode 100644 index 0000000000000000000000000000000000000000..959d2a7ca792559fb5511e7de5b1274f63eda830 GIT binary patch literal 100755 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 ?`g}B?PVN z@cZk7h{@8#ppk&u|Pbu5Mj0Eyy_73`} z{7`4BbgSNYv^Yt{=)(+0?KT@gpu>_9L&@MFKUeje{-^VZ*KBTwI^w|-8@4bZX$o-< zkpNg?0*s?n`TU86sxV(wjGCoQtY)h5UlRF0R88TTpVCVN7(%3GNOwR)J2kQbn?uxL4JHgIkkQMs$ zkptZ#G<0aePEvz~IF|*)-2+iIp7lfLop0{!$HgoT!9eQx!Gp;qeI?k78!BF5ai`6lrSIANP4mTh=A@s)4wqT-G`MtAll zB`8iUEt_|~$P<|XQbYlMkJQFp%(@iE7A&DV&MsTkZ+Igk;$Cgn(Jaq{Aglx#9DpGc z>Bo-?EkDX*Wp#>WQfB0D--0}*7N{RrPeAlqeYH9|`7!Ih_>B(Ol70r+G!8rr%ZIDH zmv3E=`IFEvAZ=x3lE1L(>gG0#V{~*Y<`wqq8Je;1QyRb;jyiF-PHOyIYOU!;TH*3ZLye=Y^lum~^=j8ywlZoj^s!{?Rdy?eb;k{}+>VSXf~ zmkU+LW(xg-Pk@m_?5!NB(P^0IZuWu60K+Y+UtBLxByug_-PF&w*9~~5;@nRSgMrB5 zEtVGHJowyjtOp%Wxur6F|1%mW?l_>AJ`j^-WnCO7qe53~FlSRt<}f30m22R< zF{OBv{l0|@oU_LcPM@SkcsjL3-FJlT_0x;3S?Xhj#|}RqxA+SXYme_Ds4ttFw~2%D znjA?PK2uFUPNxL<8`p>JTwMie$0d+Q>X&1_e|H}!jIsyJcN?!R(T-dYzZInV0B@c< zKX{W>Uh1GabkO#NXq1aD_xI-$h>7LPFD=!$ma>=)LZ$w;S1DdMFix%3r9@aPl9Om* zN(Hwp;N$$)ogr+j3hmcn`C$_UL#;ihG2)=Q`t`sO9!8zV%w z{c;gPmi6p?Y4Zb)m4scbVFiHC;_(0&999y4;?GJL+}-<#y0t5#V)*m(jf_(*&wxq5 z&Y;9f=QEr4ZQ~TSb~B= zhN^;9uLDbv^OT9>p28H?ASbtVWzI?@CkIl#TQn72b!pyo_m$dxx!(~Dx_k)Ic6)o- zHdGN`&v`(o(4+kjyKSOfCk_iNIsQAv8IB#l;h*y?j^nSd-viOO6l84wGlKf549@S) zeS6rAhao%lXM_Ai8w(!jvdt>aW4g_w)`QHBBm6uhI7r3gIFW^r z+5l71k%0H63=F7RkF*qKvT#j z^Ro6;C7t6`Bc88qsZp#PAKo6T^A&twU4V@57;gB4m_3obq{r94#KWi+lKWrtSe&27vN4F2#q}{Sp0l4-W~K zfYt=xO&6JfMU-Mv^{*c$Be+5(CG-PDoL1+`6YBL|w}{34y#LgjFzoGyHpWP9bv|Po zk1^|zUE$DP)jl&>%@Z@~zoJVY(rEp%de-rV&XK7*tW4plsE zHB`WN>*$xkA^mUp5@cEK8P1t7bNox`~gyQI5?rk^-Du< z50k@hGj9x$KfD62oK;e`jE$wU1?jW1?`}eie_=Dj1=bguO@I2U?5n-V@Z<^_AXIG? zQiLZMA{6M=CZ!-iI;CGvkA0DWIWO`!$6{g$LI~mEK>>>k+(!wUXFowsc3csz#J<|z z?m$mhDCJ;%A87O3zCG56Gaw@s;wR|AVWdU9WzPV0x4M?12o9ut!@vr^ijEG~p|+d| zEq?O!6lEEjz#7ED{3x<{V;%QZE5+lgs!a3)Ed$1p(0%T`02dX)AryR{WrhOIegsz7 zpVo7sspNx6c=ELq%rmdOaF1|d0fuC8GqX@3oIAPgJNQ7I1&Iv3X0qe_ll;mkNtJzZ z(Kf$xL6uh+VvK=~ajqk|!hF$Ctb&4sQCV48@y}n~!o1rJR1PM+B_l&Fd8n1b(>@{# zQVc{?MRY{=_u0MwR!XEe)xw;KjzwCxO(3qjq9r``x?WFzW{8rysSm1qo7z zc&C77sG~0(A56mGvUpCHuC%@&O|Pv11icA}|Ct_nZcq6KwvAa2K*g&cPehLnq2v!P zE>d@VEb<_Au=o#19oq039+M8q0;WH>4-_RLoFpa9R%HGQU@78P$b1a`g$w_jOq&^F zycC6zSlEjP7`v`Mil-=${Odx-x>j|$^1J-s-bo^Jk7fg>b7;1IlWmQu{}1L^?aRFO zWX;SNbu`F6#RUo&7F__O`QH*UT^E;#qga6jUpgQ1oC8NA7Mhz|eN%u&9kuqIvKF?sk=h*LM|UcoYrghany2SJa0 zeE}tB{4mAR(vn{5*C@|xSsX&#t;O0-%gbIl8XB6-=^{DpO3l~DO~Xr=@`c!)AyWPo zNdY1ls2lb0RRQYe=H?(KeG?C})Zf3EoC$a_uqVljij_5zMpMLGU#?P~4e?)b>X#U# zYX0>HKw}hoT*eigAW%p?4EhNTGxJYg9gSe3vzNNLisqrnFb;QZLR@-eRxr@}dELVR zOm5K7rVP5S!f%hv)U`{5i)UZs(EzD$DrL53otn7XdImi0KATrLcmTN9JTWAyUbJ{dWCf-dsLaPWd&&9ZtiXqrq%S?Tu}># z`zC=&U2pJ}ib*YvkB?8PJQYJ4RwOiJ8gAO|9&fY97BKs>AWg*?et^lIDXpxoKGqL^ zFg!BSQ&<+%tA$I5OW9k&R$Uk*hs_+DmL~J{E7t=QNDoe5Tw@%lDcKgwWj86XnFuzH z6jcgFzAU^fy$S213oiy4HFe6^n7q6sdRnqPh6E`$H%!WCe~}#a@Wh0LEyM745PTB= z;g^=UBqb$bJKlu0E-;~?VJ?_-Im#)i|F0UytJjAz_+>o2VdcOe`3R_jDQQ1HV(7qkcCHwc&ro`8 zjzkhF${OrCOG|w_VgON19H4T*sG@}x&6o3{uBLmwx!+8VO>BSaZoQK?Xczm{TkW-k!CBMRYnLwk>((dluLODuYfF=Xx z>FUnlij?i3!Z5JAs{m83%B97DC6p5F`hXdN#4EgBF=Z6$lZZ$+pX$Y`eR=dUu}2rFSipNFh6oZkG=)=;zm&iV&GcS4_IDZ*ET5jOh$B&rtBiiR5=+ z*EhdEzXjyWo;t2y4j6uD-RiC>xI?a0Acji9HhlW59c2seNk+hHMb)?+CX*Q#kB@%f zxl0|fZ;?M{c4}7TR!vCBU27SiOO3uXkz_KgS}_-ID>H=lUe5m$NwR%%@Oo>@pS?_% zw-WHXTG#+HxW|`oL_{s+6AxKx8+`g22Wp)g=LFS|5Pv^vA`-rC4miQ7)9?QIEse={ z0QJvNms1e-KL@$_s0RNW_=kU80$~rpWFqV&?lC)(MIqOX?~LNfFTdL)^Gy8vmss@x zfX3Dn4;NRHj<-tPSud=XHA$9IMwN^eT={wZ*WzM{z+}dAaf0t3#TI#)T5WX)hZsE| zml7fWa&c|#)bN>yr8aYd41JQU;(GF^`47`4E=)Mku({rX233}jomX$K*thG0&zyXG z`TG1D$tNwvtH=DN!0yZ{N=5~ zr>v@UYH=|Y$Qodd7YyWhz<`BLlBJq!-nA*3v3~JB!N>LY!m8aMA zm0!}+1Ttb2#TQJ)q3${B=+~d>5}uxEY)p~Eg^>L%vU{Bf5eaFC1!2#bmr<`lI!s(t z`0?l9ZJ5$}eu30egHgAr1ewaqN$*>Z=vGZ#bH)1egQiYnkvd%w2)s+4AHKwj`MDl+PefX?qNqja!l#o=_| znZ~@9`#!I-he}-v)eVlA?*f1DRT>|I4?n0eyv}#Eq5zn7g zzsM(>TLbMevRCJfbDLfMzR#!i-z*mtf%-cZzH92z68}38FnMgnM-HyzjYksl z;&+DJ^qZ^7v$J1xYmD*+2GN&)d?_v~E5{6z+`EHmFxn#P-*Fnx;x^op7LT)12l|*z zL2U-i`Q`BjH+&GELqMQVnt`sDjrx0NP5f{n+fpQjSTMyXhlYlJ(WkEJPb9h83}DsL z5;JE#-y9`Cos-RJH8qO5yG20c#<;)QSZHQgFrtGrG}J1=U<;sj(Hwu}gkVzc zN5rpXkZaZx@wz)p5g5MK|3c?nrPAZ!}^GGRDB3rT|>We@^yp{Bx*e8 z_caR+lus5HTGdjf1|;Ggr;`LUWo9$m0g<7<4Kt*D5R9>1QGIDr+r7T|IcqT27ahmnWRG9RKdn={8bE zL_|E+W~p5hHQ?m@L0}Cb#8SMg`~eU<7p)h*mxaT0;D&u2J4_riOq^0?%W=2isl5CP zl^>Uanu3BtF{7G>zTkrkgC^zV^-c4npGdMf(0y{#GJ=$fH>n;D=V8k&d@`yWSp3#c zdyS9*5K>tF5nOzH;M|-Abl@Rf*~d^o{s?122)gJKK0Kjs>YP)sT8!_3D~Xn>?;%PE z!pu~QOhnqfHZ%lwQzj1zXn?y?uV9%Waz#C|ixrq1RPFCWEx5%os;d(aj)5B?Pz)eG zL6t^8%`IzJTT%3ws{&@n|07^<mDFQPvoNzxb;yB|@ZR*mBX&xbD>pAL>B>$s50m z=GDm0Q`NA{1STxUZc~6aSFm5MtS9s7I1s?Prp*ME&K#eISqivi+L4pj`oDCP$ zyA`%+ zk0emfG*F58dkayo{26v4zzxoWe7d72Kq|G?tq1C3xAN`jj4)iX;ICS`Rlf#B69^SL zQj{GZ9}lBntCn&sSumv}Y@BP=YR8^@15~Ziu3VjN*lleX-M*JaodIJP`95h9+bli! z`PCnwVgB*uV5P;lU$(i5-ZNW%bb6}5=lF;>H;KN*Og9-0^xa!1=jtKTTd4EdxAW`i zB3PcUpekmqWYG5_6reum;NvUPskazqL2PfejM=_yvVZL>zPaf1R_bi{!w!u0l#>?O z$fzS~VNa2tl`oO9lv2s&iUM3xRVO8xOCBTUE_}|rHGEhMi3iPB56^VF*H;fOR{~1y zf-pe($HJ4UP7z`6Qy3e2>nXPd17@Z8$wtcFU!NUb^b|`At;ZSDg?xg6tdGUV$1N(+ zJ2WV;^1%{~b^r+!RABe;24b&rt@iBiwN{L%f!XzSA^{e8U(A;F zdgojO_pU(0d)c0UbO;wa4a!oyh z|LshYwkF5ygW*QoBm$)?0Z+P^w?6_(J3BIrEyr}c(FGyIuh^U%9EXdw1;7wXpA-5V zC>EH`Y6=GIqqDwN2r{vHTb{~`R7_dX4~;MOFO+Aiwfb(CO$Lug5qussT5>5&Gwbc= zHh28zhv46Hx=n|4?e{$~fM+b5pFiUJS^*eBL*R9lD*-K_y61PJ2iITB%(R1zOR5?b zulL;#9}aS6!ZG!in_WWQ2jqe$Q}X~eKw7l0At%}8n-O|G*AlJqaYjJ44na`6^M- zkv4$Y-EFQSdQCYWz7}v>Ym!xZJ^TnH-T_kT{AhIWQiI3Rr<4KwHDGvV*e3;w#9+M4 zpKKMr(7}iSXdN)O>Wqw)c!%c;`wNCM<<%YehHu*rbQ$A^wZsDXWyg5tY}SnWE%IJ} z+6v0bj)xt|Glu^%tX}hD*#KYU=B%EqHFV-iGwxErcmYxkvr2NIF=v z;y$%*DRbF!d|vovMpz~uP=nx*5KN>Hb-Lt+CYLb4CUq#s9-Cz!|iN>@HFQFL&AY)_}~rzj*`q*05;#{#{rA8)n>7*dm1b-RtE=`~%4&yj(ic`gqQ37+M!O9v}_nFlf_x?LDm2TKKGAW3n!uY3Q+C<<;- zU(Z%cMMomja^{EW z3KwvpVtJX5QO_gk+4pT%2qR*muQML-{+aOwTU)460dH8vWsuUHH_ z31CJ;B+P+d}B8ergiRD67@N7gBv>qx^enXo^RR-T@21K=KBjk)xt zd9d_f#8fx{mh3lSO#_$WYx(F2`~JpN$e3rC;h39VF5BP70)~bOq%<}0T5Im>pzI^}5&hfc0IItZii5X*d&8Hr)py~VL=gJBS zmG*kKPJaz&vz{iorc>)tLA_Ihp!wkz}b5?Ztb(N;z^hH=vB0C=%U zpRWiMgqhv&lh`@omQ}z=0RUirjC=Kbd4_?Co5GK;wj1DRDEPe`oC#;|Dl{23Mme`zr@7hL zGM{-{Ty#<;wzS#rQ1Cz8&s!73!lGf!{&u?mXb8ZR&9s!Z8i*`Z;#epvm!e+`0MuG- z`CwxkZ*RRKRnH#984iqyelwkUTI#G|6_1 zi62?@XA4UHDK5-9}4<_i&VUU=K` z(2^p9lCX~8?Vr0>VW;YKuMS@@$(B5I&%w_Mr)A%^jYsNvflHEghX0 zNtYLIp%vZ@pH~t)oZviLCi(^1q-ut%cK~e6%S*J)p#ShsK(qyQfofxGJKY@^qRxOR zyqO-{vsGhKizD$@v;0S4x1gB#!PaF$M8yF2HUtEVgu0nW_Z$g?JY}$Prb{U9-*a;s zW*%G3(F`lwy#oI9*(cwe^`(*}qbj>lgs_NdphFf7lG)Z>a+E`hxxz zHxc0a_X`3-oudc-p9AG70Nnole3Bq<`{w`xv+}A3K8E@~L35@u5QMTK40ABb#2>_& zK{QR{vLVVbRl5WK?b2CFYEr8@DOIMqJpIqT`~NK?DeB@cIR5`XsC?)nzu=@AS)6jI zdc3jTh#)JEs6Xx2wEj`=!8JWr#4w9T``_Sw0!-E$AqIn7rp!Qt7j~!$#tuffg5Q)q zkXfgMV+MQzfNR40zaO9M2>cT;>!|B_Y_(MBP0mH)vhQ6#cmzY}O#wvq9NE&!ut0g6 z1avhApgdr5HfJ)~nvD|1pFU&qfV|{yP1mKMz>wKEa?MGd<%6kRKh0005L-T76yv#OYO?zM#hT+vIovl8~wN<8RAS z3^dqi{A4?7$o9V40Qljlb0&)c)KuPBrI;mGHQ)Gi9YCq+?Cu@Vk1?eH&U*TDHV3HO z-nS}?$?O7;wg7UZzasn7v$oM-MZkf`>+C)Ulcs@bC$D#TC@~`>k~05+00%i7{-T|Poq_N5XY;7}Nu>@GWA8u|VW^A&>YQRi~Lub3# z54RtD-iNtBK4K0Ri;VTP1TDIxL<*3o$lSu0pS##zPzmKn&E&VvZAxX8Ms) zyGa^Itq4SBy1r*_BL~jMXGba=Sd7TRmxbacdfm#>3;KS6K-`fi9a&aeD^uz!TdFP# zwx&%OrXfHYrRCN2xu)i<2SNog-G8L(dTM2uC_(J~HPs+fqfcp;s0VwoD&2kZpxVh7DiZlzjmp zoVgCTs{Qrbc($Mv040yl1W8uvlEy7&YaR2xcC?GtTa3q%9xb0#EdX|(lY<9{g@nP< z9CV``N%B-~r&c+9d{_V~DJ^T!4HSbctFG4K%Gi?z3>xD@(BQv&0RWwmMPdemvP4D8 z#GFGXR=ec}XJojU*+GZnypGXANvtS7j?Xs1i2^Ce)T*BT-q{Z(ct#e68&5UmQA2ubRhw z27&><;8{bP;13t$inui`YdzvF0ek@CdDCy)q#Pw%fe$X{f$a9I$Fq%#wVJAQUT<5f z`fxVish~3-pE-Q1cX>*lZRCHC69*_`OVaEb!=r`=GKW67wtFO6va{eaXqH0RH4ZwI z?4Wm43dkgduv7@+p@6ct0e~GQ;+gRdX8{@JW19rTgu_$QEFyWXzEm622d(*Fb_ETp zLs_6SW<4!{n1*t7(Jg6^N6|I>O{i5zk|S_?35K#PFXKJ25u zZVwk}CDz&j;1e?goOj&`mffE-u`1}!jbVs!n8M^Z4jn>&4yaPp?Tgp+UgUx6-|uLU zjCiv}6*QIQ2Ng&W#pdx2R{R3oUOS(81nq49I+cEhTFHiCc6LX*~f5KA=D4k~%;)@v-?<4Y!Xp4FB{12$~LkP|oMK zz#k&V?W4Xt1h~xe@~3b&`4V%Jq~nnK$2~aXsV!oW zEOItNvft<}E{ec6b-G!Gdw-ZkccSdQ5Kk0HP1Z65;|8(0tSSxE6(F&?1X+h`*k&zt ztnEmocjAD;QjG-q*;uulOi$UpOE_<3OwbkV!`vLOx0c6((sMu)0Gy`FF|pGDjE0HW zsYm+1fGSRg3*OoQGtz>5JxAJZvaVvTJI{G30W=$sB}z=7)HQx-Z3PD>wikd0#w2AP zdYmi#Rg0(*~Ds&b<{zg1g zyJKxrBJK=A=FGtS$e-XDI6h-Px8D;Pa%oP8?@mB)XCIJy!P5;iL&mc(p!Na?k)#{b znQ=zwMC2XOz?9c9uiIog%;3>?Oq8eW9(EhYj^RjNgu|1-KTk{$>A_kErpl!%6Y$nDRzv2ptR3tpO z*LzPF3oAZs?DRB|jCi6-b#ZxlO^%F=>E&K4&=|CqygmU9VS zy3`@7_xYj8HC)FBYG|pM&2cO?_=Z74{w%7;>mnR!{-!Z`1#MV_vwZ0rvZSQH{SZa|y;3p@Ee;9hniL6%QuQxvL96bu9J# zufM#AF91gYQ-RnmxSZEJ0z=*ofLs}dkPeu5_OqRe>+{5(Rd}y z?rkb^g}#MlkskH@2Kx8At?}=}QrR!hiNh}~*fjrwUOSnh_?w@!hel_tHb{_PnmNMR z`9b;ydYZpE>8lFUk{od21RW)QN~b(11fT+ObZ4=#c%;}da4v++=a;9!)TDajf*uO5 zOC&hHRS1*FCI?Wy74{Vu+yFI}pO&LXMjmUZ5n?Zb(YfDIlCpl0k4xu5)=#7g@xbYz zs*bhD`2SS?Ak9jtKO-mr0+#Ct+4j)>!Gjq`RR0riHWZxjO(r+yEOCY*fONrmpjvV> zzspP&_RUQ{B=lZ&@b|f%%^MCCXE_h5rT)MKya8}0y;FiON=BW1#ll7%VcYdofo7OM ztDz#F0m6O;TE-h5k9GSPH`}&;>1@2SWz-?*Rfn%W)*l+y!dzTj;9N&wzeV)=c}Kf6=BP1EuO?X2hpFa&Eopp2PL?Z6!Jp-=iZfO zC&yW6L(?VZNqxE`>V|KZdyLHhL#cGBiF^tkvy@fN8!zhRru)o^sW+6KF4Af0JlNGS zIU*%3K)bhSAg(09js9)e$06|{d_wQnYI%n~XJBeup*vYJ-1&|0x<&vf7MGTMcGoY!jDUXz zULHgS^cxM6wXf-=AI$p%h&b?fTKR@i9FXRd0AO#bsSmb9&j|nEn7ZvT)&4Z2-S%*n zC=VtYr7*K-=JJWZEfy9b6`qD!&l!(&c-4AmYrKM31f;<%@T73C}FqJMjh|po|z5)iwu3|_3ACMtewd~&stQ!_AsAVf7eJ3 zx#UXY5tm#Zn7U7pM~)WM*DJUGH8Ij?fkYy?4r!wNh(c24l?DJe=Le~kfpR;@$tJz_ z+1e-O?~UA>XkJncj&+MOJlL0tA^qQTiabEkDE>2N3={HZ>kV&LLPLG>1&9V>P95@kb)}-%S@9`eT&Y^A zQF{`RJWQ-%T2~`od-FbzzPE4KUK=Y3*gQSoHr;}YRltENOIao%`y1A4+|!>UgJrDE z9M?G7q3z$^>wQ#b0xV#>$}8X2=H#%o)0x^}kpG9hW#zhfSISj(^k$T{J=WpqWjX$> z*l*&SNUM)*&*V>WY5AKMh(KD6eh92NbU0!*`9_j<_pH1~J5-4>?{Bz~*INWu6AFbI z0CCNm=g(&o?>+!>&uf6==Qaa)xVeh}*T^;aGf$Vc{^?R9!~^AFpseP0+eq^(R(;`h zXW!p4M>VfW5t>E7Hx!dbzN87*k1}ejDB{p7P`>Rg@V`L($6+ug zF-slP#>fYMI31DB@bte3*Ei9l`M554DmD1E7vbW+4N8$yg*$$Wn5!*iOY$qD80#z8 z;gD(o4Bsp+spO@NTH@=d{q!19q2Y|W&8^jjKx6SF@7=ZsRW(GTy|)%XR2|;+H_G+6 z4PsCef6siH%LN5{rajCxH8p`N;rj(Jn44mJMqXamKXOiMDK*OQ)Q=ocOj@d^TrT}S z4J+q{^2^LAPi!n}Fmps)FEX}nn1KKm&;!9kxM*E&jF-a4KX~lnaZ}-~IiSM@fZXgK z-Y%}Gxhp7mz7rgtrZQZ#95`FgC4Xu^elSwI2{-7e=lbe0W1JGe*fF3n^| z1b~kRSg&V1U~@KL;%wl{oO1Q4uPIkwXaGxT4NL&glFkToPjQ#=gb)Y&s)Va z3PU|pbwBots(hyp2xLF!u!?x__$fKQe-wwutIq8t4-H*+>s2JH-HTVr*K4N|N=E!x zwvKkOk5a^|h{GVm3~>ih5hGpa|C9_}`TOBj&^K-IP!(wypj)DA*=qaCq7BtuL2Py& zX3Q}iuI0}$r5aSdmbeBw< zz9XmF7uCg6lePOTA00YCFH$~E-{&~W_AsCTT;n@rdKR#o57G(&snq`5xEu-NP0x?8 z%-e=u2+#G5<%X|nA>Dy0|MC8M<=FLwN&&1`r*hTKi*rXiGv&y$R%-Fe{-s!Nag4di z$-`{S51b0W?d^-l+TS@?4W*)x2a6ztU5Nu0xY$;oU5{*S{f$2+EoF}*?Co2MrC(QL zfL#$>R=w0JWfNbYURVrJ73T|%08oIX?kf9ilmJ++LG7dKpFsFsa4m}`=bB*l0Od4m zaqGwp3-$hR5vPEYwS;pX3W zP*)+)qpTZ2IKQ{o5U3eHt@?RBE~rqf1Rs~-Yp(lzT%57jAd2UJjW`yz^Ar@u0rnrv zzxeOJuKOK?G&_`!gW$Kfe@2vAK6=$UzE(Db?-b`NU- zMe$J7y#RjK;5@+bqY?*UCwW*er$axm8$G;=HVF@!$YZN(Ajlm5Ux^=g{DGfxC}M@P zFz&(b=|=His-Fz($FA)`T+x-A(}aN?-ydR^z!@Y#fETiUWMFT1a{h3GbWtE7@% zpBiOk1f)355dd<+>=NSv@yXzw;b|<^)JZD>QR5VTpsP(?OAbZ7FjcQL;#K#?T6TM| zlJ|z@n?@A2c2zU`Ru5OMu9{W(&S+XrhHT5jEe;FgNU^LpLZk#VYHfHQ-Zg|I>{<9E z(yOTLqSQs^gQPsYG{T~Mu#4dvwWXWXn62$5WArc>7DeuJ9AP@*#jR^i zro+BIpcc1|jSb1ti+qU0dYDZS-Y&F!(ra^W)yQuX6HuUfZf&57v@^eun;^`bsc&$7 zAq3Zd#)Jm*RZ6PpI(EHgP2MGGsO+AWvRJ)wtG*Er?d$4wwgjIY5`9pl1w|>QSf3-0 zse!dJ%?YvIW>|(0d8?fJFC#~{Dw!LdU8A0BX4HGcSBC(`if>yfrD8f6VmV0t#xRxTm(|K3U3$AGADGBcfIH7#2F8m)P#--3rL^^7R}OF2aEC;41#7cx zVId)HiyXMM8@yCi2qxH7VLq26YN`7q^xjUXU5T9Q(Bl>Q-j+9b-FDBFP}nL=fG-W> z2kCFHL~V=EPLxzAH6+++$Krc*t`us%siEqL9=g7MXudm8*o?Swm${|7*hIdd8q7L` zx2rKFxehHc^;AchJs;}#x~nWJe&~~SzQah$5%LSqc>G*e(w^Wg0&7+$WkFJwmNwL+ zgkE5wP_k5#q%G==y8Qsoy?sN+|LS_Y5Glg|8rQSY#9RD6@k_NT&OLN*Y%Y{2n7G^* zXn9W}?kKKa+5e%=pd44>t0c94U+}gYCd0FC6DbTdtnXJrzL;@hfv@_0j;*fmVkwPW zr%gPyLSqbXtzcF7MmEFb-F9(I6mv#-C-J1!R%V%dFTOpdjnzPM0Y8)4gMMtC~;$Kr@Tc2vZ9 z_c!D?MJ{+RZjVpB#q`MHfQ=ur*F9+e7=Fw@B0!l7#%UU2!OM7xwdAtes-o`9Kf^Zo zu+mZro^zF{PQAosD1F6Xlle*ytkV`2LT^`bJ94Vj^D>qh+CmAdEEm0~_Fwy=_%YBrd_EjCfdD44#)AvZ~JK+d}up8tKg!|Iey@Lf5{Vshk~ z3z5Q8k1c8R+E^vJ&aJ~M9m)|cK_uGTlT76B5zbb0Qg)o(q; zDFrw8ke0)BccoWr2M(G(kNO4qhRTDUc`@Z?b3M?!tm&PVy$E!eRc|}$?Alvi%{%US zpD8ZoitCLZj7~%?aISR1^mLRRkb$?#cF=nd6Ti^qWP7Dr;_*hXco*4Fi-efQt@v$> zwm1ew?bA7I^5IeM?56qRSTRWxoVN@w?S^n>UaR^>e!^a^Ew_nBAhoj{UbaDjq*uKn z=L`KM3ysUy)jEA1x6}{{?>21;B5P+t1}DAIO#c>3pTE03jFx%Z$_gm)M!_xGPwMUb zN&}|~=0!?lK1HtVP5SA-@x?cgPpNvY*}3*pk|^0h!#$^v43KnrdGPJ$XtWLop`b!F zIgGJ(_WVrtulFb|!TdrKxqCxMWvJ3d$xPw%0v*MLS8iPvbw=sJ6GeM9RSW%g^o-;n z`cX`FkSU9S7ws@RM;lPayVU0tcDgU>NmSL(tx?BI_Fb$<7?me_OOdZwcckYE?(e(d z>sKnG4kP8do*1zz;4YJSM3?UPF`vLisOsL%WLoWL8?t_eeqxyW{lUI0Y!hCTu7k_^ zVB{B6k9=t5_`$2q5C9XIe6je03@BTHh6s{6cak$ zlN(kbWfy2rW_xdNammCkG+{Mx*4AW{({5$xO7OIVjVP%P=a6kv=HTQXZR_1C?9yuy zQf5(YyCbQx?*uJU%HFpTB!s!>wPLrzW8j%XsIGG9j7oiDq>bNvO?`Jcks4hINYC{N zzv^wEyr}82eQ(szTN)LH40zfQPb)xWG3$lKnORy9p?OZ#+|aTDln|?4e%sr{W(QUQ z%Wy8Z?HMfu(dN;kOZ&>%I$@QQ<@$nFLW)nJ!$H~AYfXPe%GfW`Dd<7Q*E`76 zMtsgRc%2jbs#+a<%>F~OYmskhfBgvDn|07iHW6J=fU4dRYv=H}l@bP0>#SYa8E?Io zmD`<5e1Sin;BA9J{ao^?-~i+%OjC+MA=*i@X6yz9Nv=LSei)w}mLEQ|?aB{7X|w6b zy{%?v#QocIYqV1Nph7DWunf#;tF2bQ%)7$j$v*Ti3PaGU4TVbJf=Jmkoct3d)Pvlc zL2u-Pnry-oA~MFohhR-uUrCmv{j>WMew+1k$+XkvHAnHR5_J`2aA?U=!yDD1f~cJ!Ydy zu>F%d>=9=@i~$iv>)fc%7qyE1ft)V^?bE%i`4fr)whYW8*V9Ng-t;);;_3?If}3j~ zu2_1rbjbx^Vjw8+%^a_Qf(xC#!v6*!tQ)Ik4>vc5fm{HP zGc492;`pDSTmMtoWciqp!U}Kw>t^1?*m*M5He6@z&d|90M9yKoAN1wMGiHi zV??DNlbFnq=h4t*lHcTDb2B6y61I7pO{uibeB0%TlKISIci+FteNrt-;qx(Dj%FI0 zqfT9%oeW60=)r9b3QgR8{$1~>z(I%ylf71Je|-{_z#H@Ih{_>t%<<3Z-xUu*rWpUi z*4T6KKU<+w6uvafITnd0?FoVlWHM|R0nDubnC2kIXtyg`tmnM8soFuH=<$e5Y=R2IJ%m#j$XY0kA7Wp?LK5)VPvk6mCVI-D3a-cy$s_q_k%C_Y46E3`p_ zz}SnDEHd3r`ep9fC8!KCRjo-D2a>Lq!tJ3-&n&xA#&SlRb7JCvSx~#kwkh{D8V=x< z=9t^ilkowth9ugnNy8tzB&tI3_RboD`bJ_l`c3gVLwI3c_(qY&o-l4D+wAe|5K%l; zQrcyI@3idF4?;h4lGZd%my2T2?224&HN0k|^RwKu`==!K6ZguE^XtsyT!LDUj7})T z89#dEbANAr_HHLGxh_rJFXFplcA~He5oFVKd%%p6PI*fwRn?d^oxN^+;%Iw^KwopCh~{S4p}gF#s!Pw_Bw0~1#&Uk@0biCRyvJjOCy?#Vlwih!<`)m z8>pPBoB7x+if!=+uTtFQHN2@#NhPZaP5mBgHx%MpeX9FcJpsG^sz%qQ@5$3&07eah59yaExg!UNz;dG;DD&80NL0fG*=2MLyTHSnL5{I*p7N==zSW?Dt zk)iN|lRhw5-jqeDu5@uU>6; z@R>7?{QH40XgK?6ol1n{Z*|moFDJP>=j@veu7@HAUMEwP*AK_G;|VYy)?9kjXH??Y zcAjw?j4K&#kv&=T39W{G$GYkOii9%8nEDF^j|OTwqsn?Jg(pxCPcSnm#KR(mevRC` zv3XIB<{VaiXAg2CdXq~Alxj>@ci%-I;{VtjOL7l@Kz>Pr-M(eKJPDQ;LtILLt0+Y; z)7SVH4GtQASzl|zY267&XxY=I=LbP=+2NK9T4OnRkAL^aO4L3L&ovJ{8@j9d`RF+A z#bl69RzXiTBkp4B>D55v$b&mjUz_x=R%r1}Y3Yunf@yot2%*9EL`IBf;uZz1TsR%n z;HZ0Ketr7-OL*@$OJ9?lfuVE+bxwqHbU=nM*O=Drv`LY>eX?gA%5g_69j)^2t~v>& zi|z6}_8rO*R{Z=ckl+%lShQspc~0UE4{x zee*7u#Et}YM1^br6+!XpqucS-`Qqj(hFLr?Xca+ z;+$>>-y++JQk&xLLssPnDS9CtuU$sR&*IdG$%wlsIZIWu%>I%`I_3HO14hCIi}%Wo zQ;&ELRvOT1uWI6o)6QJ~ULTaf83uh0R8L6GTXOm$D|8LPVEG&SRE#>z1}28iNqg@S zg6&ERW+$0(IA&{f+TNO%cq8RBf54(1Cp>MSKOi8VE41A3BiY@g-h(kzBTE@u!mucM zRfKmp3uB-xMzHdB_mh)ci44!gwJ{u;M5}jU^3eaLF6BufZLb!WphKIU^ny1$S&4S$&u@b%;8<5(PFepJ_2 zW$w=K9kp!mmC^!!=BBy|+ZO=1`M;;G{aX~!sfQEy@(1~z*-t$msz9dyfho_vP}g!z9gEk zvY8bZOVomIEy>Hvds39cyV4cl0Qm78fOIGPD=yWfe7h^Vy-zUtQ6-Fc4Lu*!B5J%@ zLdYM%4%v8Hu@hF{@Yslm2(e|p-(y<`CnieS5h)IcFi@|;ye|IC#q%h>>h_QN`QPUJ z{aXf(JuCl