From c12e24d0f8d3582e11550c9d334118db4db707bf Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Fri, 21 Aug 2015 23:35:44 +0200 Subject: [PATCH 01/10] Added stacktraces to find out what's the problem -_- --- src/main/java/fr/xephi/authme/cache/backup/FileCache.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/fr/xephi/authme/cache/backup/FileCache.java b/src/main/java/fr/xephi/authme/cache/backup/FileCache.java index 2a4b09eb6..08eecab97 100644 --- a/src/main/java/fr/xephi/authme/cache/backup/FileCache.java +++ b/src/main/java/fr/xephi/authme/cache/backup/FileCache.java @@ -505,8 +505,10 @@ public class FileCache { else armours[i] = item; } } catch (final RuntimeException e) { + e.printStackTrace(); ConsoleLogger.showError("Error while reading file for " + player.getName() + ", some wipe inventory incoming..."); } catch (final Exception e) { + e.printStackTrace(); ConsoleLogger.showError("Error while reading file for " + player.getName() + ", some wipe inventory incoming..."); } finally { if (reader != null) @@ -515,9 +517,11 @@ public class FileCache { return new DataFileCache(inv, armours, group, op, flying); } } catch (RuntimeException e) { + e.printStackTrace(); ConsoleLogger.showError("Error while reading file for " + player.getName() + ", some wipe inventory incoming..."); return null; } catch (Exception e) { + e.printStackTrace(); ConsoleLogger.showError("Error while reading file for " + player.getName() + ", some wipe inventory incoming..."); return null; } From 217c217d13031f56f3ada74fcc508de4bcbd0ab3 Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Sat, 22 Aug 2015 16:34:06 +0200 Subject: [PATCH 02/10] Stuff --- pom.xml | 2 +- .../xephi/authme/cache/backup/FileCache.java | 4 ++++ .../java/fr/xephi/authme/datasource/MySQL.java | 18 ++++++++++++------ 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 2eab19595..c5f2e8f62 100644 --- a/pom.xml +++ b/pom.xml @@ -180,7 +180,7 @@ com.zaxxer HikariCP - 2.4.0 + 2.4.1 compile diff --git a/src/main/java/fr/xephi/authme/cache/backup/FileCache.java b/src/main/java/fr/xephi/authme/cache/backup/FileCache.java index 08eecab97..f06b63f03 100644 --- a/src/main/java/fr/xephi/authme/cache/backup/FileCache.java +++ b/src/main/java/fr/xephi/authme/cache/backup/FileCache.java @@ -505,9 +505,11 @@ public class FileCache { else armours[i] = item; } } catch (final RuntimeException e) { + //verbose e.printStackTrace(); ConsoleLogger.showError("Error while reading file for " + player.getName() + ", some wipe inventory incoming..."); } catch (final Exception e) { + //verbose e.printStackTrace(); ConsoleLogger.showError("Error while reading file for " + player.getName() + ", some wipe inventory incoming..."); } finally { @@ -517,10 +519,12 @@ public class FileCache { return new DataFileCache(inv, armours, group, op, flying); } } catch (RuntimeException e) { + // Verbose e.printStackTrace(); ConsoleLogger.showError("Error while reading file for " + player.getName() + ", some wipe inventory incoming..."); return null; } catch (Exception e) { + // Verbose e.printStackTrace(); ConsoleLogger.showError("Error while reading file for " + player.getName() + ", some wipe inventory incoming..."); return null; diff --git a/src/main/java/fr/xephi/authme/datasource/MySQL.java b/src/main/java/fr/xephi/authme/datasource/MySQL.java index 45c9c651f..b6cfd5a66 100644 --- a/src/main/java/fr/xephi/authme/datasource/MySQL.java +++ b/src/main/java/fr/xephi/authme/datasource/MySQL.java @@ -113,16 +113,19 @@ public class MySQL implements DataSource { throws ClassNotFoundException, SQLException, TimeoutException, NumberFormatException, PoolInitializationException { HikariConfig config = new HikariConfig(); + config.setPoolName("AuthMeMYSQLPool"); + config.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource"); config.setJdbcUrl("jdbc:mysql://" + this.host + ":" + this.port + "/" + this.database); config.setUsername(this.username); config.setPassword(this.password); - config.setPoolName("AuthMeMYSQLPool"); config.addDataSourceProperty("cachePrepStmts", "true"); config.addDataSourceProperty("prepStmtCacheSize", "250"); config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); config.addDataSourceProperty("autoReconnect", true); - config.setMaxLifetime(12000); - config.setInitializationFailFast(false); + config.setInitializationFailFast(true); // Don't start the plugin if the database is unavariable + config.setMaxLifetime(12000); // 12 Sec + config.setIdleTimeout(120000); // 2 Min + config.setMaximumPoolSize(50); // 50 Connections (including idle connections) ds = new HikariDataSource(config); ConsoleLogger.info("Connection pool ready"); } @@ -907,6 +910,8 @@ public class MySQL implements DataSource { if (ds != null) ds.close(); HikariConfig config = new HikariConfig(); + config.setPoolName("AuthMeMYSQLPool"); + config.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource"); config.setJdbcUrl("jdbc:mysql://" + this.host + ":" + this.port + "/" + this.database); config.setUsername(this.username); config.setPassword(this.password); @@ -914,9 +919,10 @@ public class MySQL implements DataSource { config.addDataSourceProperty("prepStmtCacheSize", "250"); config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); config.addDataSourceProperty("autoReconnect", true); - config.setInitializationFailFast(false); - config.setMaxLifetime(12000); - config.setPoolName("AuthMeMYSQLPool"); + config.setInitializationFailFast(true); // Don't start the plugin if the database is unavariable + config.setMaxLifetime(12000); // 12 Sec + config.setIdleTimeout(120000); // 2 Min + config.setMaximumPoolSize(50); // 50 Connections (including idle connections) ds = new HikariDataSource(config); if (!reload) ConsoleLogger.info("ConnectionPool was unavailable... Reconnected!"); From 568784a8e19566ea4c2f91600a6e9cab59a85794 Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Wed, 26 Aug 2015 22:52:23 +0100 Subject: [PATCH 03/10] test new mysql (not working yet) --- .../fr/xephi/authme/datasource/MySQL.java | 270 ++++++++---------- 1 file changed, 117 insertions(+), 153 deletions(-) diff --git a/src/main/java/fr/xephi/authme/datasource/MySQL.java b/src/main/java/fr/xephi/authme/datasource/MySQL.java index ac11a6022..61cf015db 100644 --- a/src/main/java/fr/xephi/authme/datasource/MySQL.java +++ b/src/main/java/fr/xephi/authme/datasource/MySQL.java @@ -8,7 +8,6 @@ import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; -import java.util.concurrent.TimeoutException; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; @@ -45,7 +44,7 @@ public class MySQL implements DataSource { private HikariDataSource ds; private String columnRealName; - public MySQL() { + public MySQL() throws ClassNotFoundException, SQLException, PoolInitializationException { this.host = Settings.getMySQLHost; this.port = Settings.getMySQLPort; this.username = Settings.getMySQLUsername; @@ -67,76 +66,112 @@ public class MySQL implements DataSource { this.columnID = Settings.getMySQLColumnId; this.columnLogged = Settings.getMySQLColumnLogged; this.columnRealName = Settings.getMySQLColumnRealName; + + // Set the connection arguments (and check if connection is ok) try { - this.connect(); - this.setup(); - } catch (ClassNotFoundException e) { - ConsoleLogger.showError(e.getMessage()); + this.setConnectionArguments(); + } catch (ClassNotFoundException ne) { + ConsoleLogger.showError(ne.getMessage()); + ConsoleLogger.showError("Can't use the Hikari Connection Pool! Please, report this error to the developer! SHUTDOWN..."); + this.close(); if (Settings.isStopEnabled) { - ConsoleLogger.showError("Can't use MySQL... Please input correct MySQL informations ! SHUTDOWN..."); AuthMe.getInstance().getServer().shutdown(); - } - if (!Settings.isStopEnabled) AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); - return; + } else { + AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); + } + throw new ClassNotFoundException(ne.getMessage()); + } catch (IllegalArgumentException ae) { // This means that there are problems with the hikaricp pool arguments! + ConsoleLogger.showError(ae.getMessage()); + ConsoleLogger.showError("Invalid database arguments! Please check your configuration!"); + ConsoleLogger.showError("If this error persists, please report it to the developer! SHUTDOWN..."); + this.close(); + if (Settings.isStopEnabled) { + AuthMe.getInstance().getServer().shutdown(); + AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); + } else { + AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); + } + throw new IllegalArgumentException(ae); + } catch (PoolInitializationException ie) { // Can't initialize the connection pool! + ConsoleLogger.showError(ie.getMessage()); + ConsoleLogger.showError("Can't connect to the MySql database! Please check your configuration!"); + ConsoleLogger.showError("If this error persists, please report it to the developer! SHUTDOWN..."); + this.close(); + if (Settings.isStopEnabled) { + AuthMe.getInstance().getServer().shutdown(); + AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); + } else { + AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); + } + throw new PoolInitializationException(ie); + } + + // Initialize the database + try { + this.setupConnection(); } catch (SQLException e) { ConsoleLogger.showError(e.getMessage()); + ConsoleLogger.showError("Can't initialize the MySQL database... Please check your database settings in the config.yml file! SHUTDOWN..."); + ConsoleLogger.showError("If this error persists, please report it to the developer! SHUTDOWN..."); + this.close(); if (Settings.isStopEnabled) { - ConsoleLogger.showError("Can't use MySQL... Please input correct MySQL informations ! SHUTDOWN..."); AuthMe.getInstance().getServer().shutdown(); - } - if (!Settings.isStopEnabled) AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); - return; - } catch (TimeoutException e) { - ConsoleLogger.showError(e.getMessage()); - if (Settings.isStopEnabled) { - ConsoleLogger.showError("Can't use MySQL... Please input correct MySQL informations ! SHUTDOWN..."); - AuthMe.getInstance().getServer().shutdown(); - } - if (!Settings.isStopEnabled) + } else { AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); - return; - } catch (PoolInitializationException e) { - ConsoleLogger.showError(e.getMessage()); - if (Settings.isStopEnabled) { - ConsoleLogger.showError("Can't use MySQL... Please input correct MySQL informations ! SHUTDOWN..."); - AuthMe.getInstance().getServer().shutdown(); } - if (!Settings.isStopEnabled) - AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); - return; + throw new SQLException(e); } } - private synchronized void connect() - throws ClassNotFoundException, SQLException, TimeoutException, - NumberFormatException, PoolInitializationException { - HikariConfig config = new HikariConfig(); + private synchronized void setConnectionArguments() + throws ClassNotFoundException, IllegalArgumentException { + HikariConfig config = new HikariConfig(); config.setPoolName("AuthMeMYSQLPool"); - config.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource"); - config.setDriverClassName("com.mysql.jdbc.Driver"); + config.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource"); config.setJdbcUrl("jdbc:mysql://" + this.host + ":" + this.port + "/" + this.database); config.setUsername(this.username); config.setPassword(this.password); config.addDataSourceProperty("cachePrepStmts", "true"); config.addDataSourceProperty("prepStmtCacheSize", "250"); config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); - config.addDataSourceProperty("autoReconnect", true); + config.addDataSourceProperty("autoReconnect", false); config.setInitializationFailFast(true); // Don't start the plugin if the database is unavariable - config.setMaxLifetime(12000); // 12 Sec - config.setIdleTimeout(120000); // 2 Min + config.setMaxLifetime(60000); // 60 Sec + config.setIdleTimeout(45000); // 45 Sec config.setMaximumPoolSize(50); // 50 Connections (including idle connections) ds = new HikariDataSource(config); - ConsoleLogger.info("Connection pool ready"); + ConsoleLogger.info("Connection arguments loaded, Hikari ConnectionPool ready!"); } - private synchronized void setup() throws SQLException { + private synchronized void reloadArguments() + throws ClassNotFoundException, IllegalArgumentException { + if (ds != null){ + ds.close(); + } + setConnectionArguments(); + ConsoleLogger.info("Hikari ConnectionPool arguments reloaded!"); + } + + private synchronized Connection getConnection() { + Connection con = null; + while(con == null){ + try { + con = ds.getConnection(); + } catch (SQLException ce) { + return null; + } + } + return con; + } + + private synchronized void setupConnection() throws SQLException { Connection con = null; Statement st = null; ResultSet rs = null; try { - con = makeSureConnectionIsReady(); + con = getConnection(); st = con.createStatement(); st.executeUpdate("CREATE TABLE IF NOT EXISTS " + tableName + " (" + columnID + " INTEGER AUTO_INCREMENT," + columnName + " VARCHAR(255) NOT NULL UNIQUE," + columnPassword + " VARCHAR(255) NOT NULL," + columnIp + " VARCHAR(40) NOT NULL DEFAULT '127.0.0.1'," + columnLastLogin + " BIGINT NOT NULL DEFAULT '" + System.currentTimeMillis() + "'," + lastlocX + " DOUBLE NOT NULL DEFAULT '0.0'," + lastlocY + " DOUBLE NOT NULL DEFAULT '0.0'," + lastlocZ + " DOUBLE NOT NULL DEFAULT '0.0'," + lastlocWorld + " VARCHAR(255) NOT NULL DEFAULT '" + Settings.defaultWorld + "'," + columnEmail + " VARCHAR(255) DEFAULT 'your@email.com'," + columnLogged + " SMALLINT NOT NULL DEFAULT '0'," + "CONSTRAINT table_const_prim PRIMARY KEY (" + columnID + "));"); rs = con.getMetaData().getColumns(null, null, tableName, columnPassword); @@ -188,6 +223,7 @@ public class MySQL implements DataSource { close(st); close(con); } + ConsoleLogger.info("MySQL Setup finished"); } @Override @@ -196,7 +232,7 @@ public class MySQL implements DataSource { PreparedStatement pst = null; ResultSet rs = null; try { - con = makeSureConnectionIsReady(); + con = getConnection(); pst = con.prepareStatement("SELECT * FROM " + tableName + " WHERE LOWER(" + columnName + ")=LOWER(?);"); pst.setString(1, user); rs = pst.executeQuery(); @@ -220,7 +256,7 @@ public class MySQL implements DataSource { PlayerAuth pAuth = null; int id = -1; try { - con = makeSureConnectionIsReady(); + con = getConnection(); pst = con.prepareStatement("SELECT * FROM " + tableName + " WHERE LOWER(" + columnName + ")=LOWER(?);"); pst.setString(1, user); rs = pst.executeQuery(); @@ -267,7 +303,7 @@ public class MySQL implements DataSource { Connection con = null; PreparedStatement pst = null; try { - con = makeSureConnectionIsReady(); + con = getConnection(); if ((columnSalt == null || columnSalt.isEmpty()) || (auth.getSalt() == null || auth.getSalt().isEmpty())) { pst = con.prepareStatement("INSERT INTO " + tableName + "(" + columnName + "," + columnPassword + "," + columnIp + "," + columnLastLogin + "," + columnRealName + ") VALUES (?,?,?,?,?);"); pst.setString(1, auth.getNickname()); @@ -476,7 +512,7 @@ public class MySQL implements DataSource { Connection con = null; PreparedStatement pst = null; try { - con = makeSureConnectionIsReady(); + con = getConnection(); pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnPassword + "=? WHERE LOWER(" + columnName + ")=?;"); pst.setString(1, auth.getHash()); pst.setString(2, auth.getNickname()); @@ -521,7 +557,7 @@ public class MySQL implements DataSource { Connection con = null; PreparedStatement pst = null; try { - con = makeSureConnectionIsReady(); + con = getConnection(); pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnIp + "=?, " + columnLastLogin + "=?, " + columnRealName + "=? WHERE LOWER(" + columnName + ")=?;"); pst.setString(1, auth.getIp()); pst.setLong(2, auth.getLastLogin()); @@ -543,7 +579,7 @@ public class MySQL implements DataSource { Connection con = null; PreparedStatement pst = null; try { - con = makeSureConnectionIsReady(); + con = getConnection(); pst = con.prepareStatement("DELETE FROM " + tableName + " WHERE " + columnLastLogin + " list = new ArrayList(); try { - con = makeSureConnectionIsReady(); + con = getConnection(); pst = con.prepareStatement("SELECT * FROM " + tableName + " WHERE " + columnLastLogin + " countIp = new ArrayList(); try { - con = makeSureConnectionIsReady(); + con = getConnection(); pst = con.prepareStatement("SELECT * FROM " + tableName + " WHERE " + columnIp + "=?;"); pst.setString(1, auth.getIp()); rs = pst.executeQuery(); @@ -798,7 +834,7 @@ public class MySQL implements DataSource { ResultSet rs = null; List countIp = new ArrayList(); try { - con = makeSureConnectionIsReady(); + con = getConnection(); pst = con.prepareStatement("SELECT * FROM " + tableName + " WHERE " + columnIp + "=?;"); pst.setString(1, ip); rs = pst.executeQuery(); @@ -823,7 +859,7 @@ public class MySQL implements DataSource { ResultSet rs = null; List countEmail = new ArrayList(); try { - con = makeSureConnectionIsReady(); + con = getConnection(); pst = con.prepareStatement("SELECT * FROM " + tableName + " WHERE " + columnEmail + "=?;"); pst.setString(1, email); rs = pst.executeQuery(); @@ -847,7 +883,7 @@ public class MySQL implements DataSource { PreparedStatement pst = null; try { for (String name : banned) { - con = makeSureConnectionIsReady(); + con = getConnection(); pst = con.prepareStatement("DELETE FROM " + tableName + " WHERE LOWER(" + columnName + ")=?;"); pst.setString(1, name); pst.executeUpdate(); @@ -860,78 +896,6 @@ public class MySQL implements DataSource { } } - private synchronized Connection makeSureConnectionIsReady() { - Connection con = null; - try { - con = ds.getConnection(); - } catch (Exception te) { - try { - con = null; - reconnect(false); - } catch (Exception e) { - ConsoleLogger.showError(e.getMessage()); - if (Settings.isStopEnabled) { - ConsoleLogger.showError("Can't reconnect to MySQL database... Please check your MySQL informations ! SHUTDOWN..."); - AuthMe.getInstance().getServer().shutdown(); - } - if (!Settings.isStopEnabled) - AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); - } - } catch (AssertionError ae) { - // Make sure assertionerror is caused by the connectionpoolmanager, - // else re-throw it - if (!ae.getMessage().equalsIgnoreCase("AuthMeDatabaseError")) - throw new AssertionError(ae.getMessage()); - try { - con = null; - reconnect(false); - } catch (Exception e) { - ConsoleLogger.showError(e.getMessage()); - if (Settings.isStopEnabled) { - ConsoleLogger.showError("Can't reconnect to MySQL database... Please check your MySQL informations ! SHUTDOWN..."); - AuthMe.getInstance().getServer().shutdown(); - } - if (!Settings.isStopEnabled) - AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); - } - } - while (con == null) - try { - con = ds.getConnection(); - } catch (Exception e) { - try { - reconnect(false); - con = ds.getConnection(); - } catch (Exception ex) { - } - } - return con; - } - - private synchronized void reconnect(boolean reload) - throws ClassNotFoundException, SQLException, TimeoutException, - PoolInitializationException { - if (ds != null) - ds.close(); - HikariConfig config = new HikariConfig(); - config.setPoolName("AuthMeMYSQLPool"); - config.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource"); - config.setJdbcUrl("jdbc:mysql://" + this.host + ":" + this.port + "/" + this.database); - config.setUsername(this.username); - config.setPassword(this.password); - config.addDataSourceProperty("cachePrepStmts", "true"); - config.addDataSourceProperty("prepStmtCacheSize", "250"); - config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); - config.addDataSourceProperty("autoReconnect", true); - config.setInitializationFailFast(true); // Don't start the plugin if the database is unavariable - config.setMaxLifetime(12000); // 12 Sec - config.setIdleTimeout(120000); // 2 Min - config.setMaximumPoolSize(50); // 50 Connections (including idle connections) - ds = new HikariDataSource(config); - if (!reload) - ConsoleLogger.info("ConnectionPool was unavailable... Reconnected!"); - } - @Override public DataSourceType getType() { return DataSourceType.MYSQL; @@ -943,7 +907,7 @@ public class MySQL implements DataSource { PreparedStatement pst = null; ResultSet rs = null; try { - con = makeSureConnectionIsReady(); + con = getConnection(); pst = con.prepareStatement("SELECT * FROM " + tableName + " WHERE LOWER(" + columnName + ")=?;"); pst.setString(1, user); rs = pst.executeQuery(); @@ -965,7 +929,7 @@ public class MySQL implements DataSource { Connection con = null; PreparedStatement pst = null; try { - con = makeSureConnectionIsReady(); + con = getConnection(); pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnLogged + "=? WHERE LOWER(" + columnName + ")=?;"); pst.setInt(1, 1); pst.setString(2, user); @@ -986,7 +950,7 @@ public class MySQL implements DataSource { PreparedStatement pst = null; if (user != null) try { - con = makeSureConnectionIsReady(); + con = getConnection(); pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnLogged + "=? WHERE LOWER(" + columnName + ")=?;"); pst.setInt(1, 0); pst.setString(2, user); @@ -1006,7 +970,7 @@ public class MySQL implements DataSource { Connection con = null; PreparedStatement pst = null; try { - con = makeSureConnectionIsReady(); + con = getConnection(); pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnLogged + "=? WHERE " + columnLogged + "=?;"); pst.setInt(1, 0); pst.setInt(2, 1); @@ -1028,7 +992,7 @@ public class MySQL implements DataSource { PreparedStatement pst = null; ResultSet rs = null; try { - con = makeSureConnectionIsReady(); + con = getConnection(); pst = con.prepareStatement("SELECT COUNT(*) FROM " + tableName + ";"); rs = pst.executeQuery(); if (rs != null && rs.next()) { @@ -1049,7 +1013,7 @@ public class MySQL implements DataSource { Connection con = null; PreparedStatement pst = null; try { - con = makeSureConnectionIsReady(); + con = getConnection(); pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnName + "=? WHERE LOWER(" + columnName + ")=?;"); pst.setString(1, newone); pst.setString(2, oldone); @@ -1071,7 +1035,7 @@ public class MySQL implements DataSource { PreparedStatement pst = null; ResultSet rs = null; try { - con = makeSureConnectionIsReady(); + con = getConnection(); pst = con.prepareStatement("SELECT * FROM " + tableName + ";"); rs = pst.executeQuery(); while (rs.next()) { @@ -1122,7 +1086,7 @@ public class MySQL implements DataSource { PreparedStatement pst = null; ResultSet rs = null; try { - con = makeSureConnectionIsReady(); + con = getConnection(); pst = con.prepareStatement("SELECT * FROM " + tableName + " WHERE " + columnLogged + "=1;"); rs = pst.executeQuery(); while (rs.next()) { From 7c9298f096c31b20f370c07c8eac76f3775acca7 Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Thu, 27 Aug 2015 00:21:53 +0100 Subject: [PATCH 04/10] More unstuble stuff! (Now it compiles) --- src/main/java/fr/xephi/authme/AuthMe.java | 17 +- .../xephi/authme/commands/AdminCommand.java | 36 +- .../authme/datasource/SQLite_HIKARI.java | 342 ++++++++++-------- .../xephi/authme/modules/ModuleManager.java | 6 +- 4 files changed, 248 insertions(+), 153 deletions(-) diff --git a/src/main/java/fr/xephi/authme/AuthMe.java b/src/main/java/fr/xephi/authme/AuthMe.java index 7ed3dd9f4..131991dcf 100644 --- a/src/main/java/fr/xephi/authme/AuthMe.java +++ b/src/main/java/fr/xephi/authme/AuthMe.java @@ -10,6 +10,7 @@ import java.io.OutputStream; import java.lang.reflect.InvocationTargetException; import java.net.URL; import java.net.URLConnection; +import java.sql.SQLException; import java.util.Calendar; import java.util.Collection; import java.util.Date; @@ -34,6 +35,7 @@ import org.mcstats.Metrics; import com.earth2me.essentials.Essentials; import com.maxmind.geoip.LookupService; import com.onarandombox.MultiverseCore.MultiverseCore; +import com.zaxxer.hikari.pool.PoolInitializationException; import fr.xephi.authme.api.API; import fr.xephi.authme.api.NewAPI; @@ -214,7 +216,18 @@ public class AuthMe extends JavaPlugin { else ConsoleLogger.showError("Error while performing the backup!"); } - setupDatabase(); + try { + setupDatabase(); + } catch (ClassNotFoundException nfe) { + ConsoleLogger.showError("Fatal error occurred! Authme initialization ABORTED!"); + return; + } catch (SQLException sqle) { + ConsoleLogger.showError("Fatal error occurred! Authme initialization ABORTED!"); + return; + } catch (PoolInitializationException pie) { + ConsoleLogger.showError("Fatal error occurred! Authme initialization ABORTED!"); + return; + } dataManager = new DataManager(this); @@ -800,7 +813,7 @@ public class AuthMe extends JavaPlugin { return realIP; } - public void setupDatabase() { + public void setupDatabase() throws ClassNotFoundException, PoolInitializationException, SQLException { /* * Backend MYSQL - FILE - SQLITE */ diff --git a/src/main/java/fr/xephi/authme/commands/AdminCommand.java b/src/main/java/fr/xephi/authme/commands/AdminCommand.java index 28f4519b9..25e77322d 100644 --- a/src/main/java/fr/xephi/authme/commands/AdminCommand.java +++ b/src/main/java/fr/xephi/authme/commands/AdminCommand.java @@ -4,6 +4,7 @@ import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.security.NoSuchAlgorithmException; +import java.sql.SQLException; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -22,6 +23,8 @@ import org.bukkit.potion.PotionEffectType; import org.bukkit.scheduler.BukkitScheduler; import org.bukkit.scheduler.BukkitTask; +import com.zaxxer.hikari.pool.PoolInitializationException; + import fr.xephi.authme.AuthMe; import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.Utils; @@ -143,7 +146,38 @@ public class AdminCommand implements CommandExecutor { Settings.reloadConfigOptions(newConfig); m.reloadMessages(); plugin.database.close(); - plugin.setupDatabase(); + + try { + plugin.setupDatabase(); + } catch (ClassNotFoundException nfe) { + ConsoleLogger.showError("Fatal error occurred! Authme instance ABORTED!"); + if (Settings.isStopEnabled) { + AuthMe.getInstance().getServer().shutdown(); + AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); + } else { + AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); + } + return false; + } catch (SQLException sqle) { + ConsoleLogger.showError("Fatal error occurred! Authme instance ABORTED!"); + if (Settings.isStopEnabled) { + AuthMe.getInstance().getServer().shutdown(); + AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); + } else { + AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); + } + return false; + } catch (PoolInitializationException pie) { + ConsoleLogger.showError("Fatal error occurred! Authme instance ABORTED!"); + if (Settings.isStopEnabled) { + AuthMe.getInstance().getServer().shutdown(); + AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); + } else { + AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); + } + return false; + } + m.send(sender, "reload"); } else if (args[0].equalsIgnoreCase("lastlogin")) { if (args.length != 2) { diff --git a/src/main/java/fr/xephi/authme/datasource/SQLite_HIKARI.java b/src/main/java/fr/xephi/authme/datasource/SQLite_HIKARI.java index 6f1350e31..767a5da7d 100644 --- a/src/main/java/fr/xephi/authme/datasource/SQLite_HIKARI.java +++ b/src/main/java/fr/xephi/authme/datasource/SQLite_HIKARI.java @@ -1,6 +1,5 @@ package fr.xephi.authme.datasource; -import java.io.EOFException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -8,10 +7,10 @@ import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; -import java.util.Properties; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; +import com.zaxxer.hikari.pool.PoolInitializationException; import fr.xephi.authme.AuthMe; import fr.xephi.authme.ConsoleLogger; @@ -38,7 +37,7 @@ public class SQLite_HIKARI implements DataSource { private String columnLogged; private String columnRealName; - public SQLite_HIKARI() { + public SQLite_HIKARI() throws ClassNotFoundException, SQLException, PoolInitializationException { this.database = Settings.getMySQLDatabase; this.tableName = Settings.getMySQLTablename; this.columnName = Settings.getMySQLColumnName; @@ -56,65 +55,127 @@ public class SQLite_HIKARI implements DataSource { this.columnLogged = Settings.getMySQLColumnLogged; this.columnRealName = Settings.getMySQLColumnRealName; + // Set the connection arguments (and check if connection is ok) try { - this.connect(); - this.setup(); - } catch (ClassNotFoundException e) { - ConsoleLogger.showError(e.getMessage()); + this.setConnectionArguments(); + } catch (ClassNotFoundException ne) { + ConsoleLogger.showError(ne.getMessage()); + ConsoleLogger.showError("Can't use the Hikari Connection Pool! Please, report this error to the developer! SHUTDOWN..."); + this.close(); if (Settings.isStopEnabled) { - ConsoleLogger.showError("Can't use SQLITE... ! SHUTDOWN..."); AuthMe.getInstance().getServer().shutdown(); - } - if (!Settings.isStopEnabled) AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); - return; + } else { + AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); + } + throw new ClassNotFoundException(ne.getMessage()); + } catch (IllegalArgumentException ae) { // This means that there are problems with the hikaricp pool arguments! + ConsoleLogger.showError(ae.getMessage()); + ConsoleLogger.showError("Invalid database arguments! Please check your configuration!"); + ConsoleLogger.showError("If this error persists, please report it to the developer! SHUTDOWN..."); + this.close(); + if (Settings.isStopEnabled) { + AuthMe.getInstance().getServer().shutdown(); + AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); + } else { + AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); + } + throw new IllegalArgumentException(ae); + } catch (PoolInitializationException ie) { // Can't initialize the connection pool! + ConsoleLogger.showError(ie.getMessage()); + ConsoleLogger.showError("Can't connect to the SQLite database! Please check your configuration!"); + ConsoleLogger.showError("If this error persists, please report it to the developer! SHUTDOWN..."); + this.close(); + if (Settings.isStopEnabled) { + AuthMe.getInstance().getServer().shutdown(); + AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); + } else { + AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); + } + throw new PoolInitializationException(ie); + } + + // Initialize the database + try { + this.setupConnection(); } catch (SQLException e) { ConsoleLogger.showError(e.getMessage()); + ConsoleLogger.showError("Can't initialize the MySQL database... Please check your database settings in the config.yml file! SHUTDOWN..."); + ConsoleLogger.showError("If this error persists, please report it to the developer! SHUTDOWN..."); + this.close(); if (Settings.isStopEnabled) { - ConsoleLogger.showError("Can't use SQLITE... ! SHUTDOWN..."); AuthMe.getInstance().getServer().shutdown(); - } - if (!Settings.isStopEnabled) AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); - return; - } catch (EOFException e) { - ConsoleLogger.showError(e.getMessage()); - if (Settings.isStopEnabled) { - ConsoleLogger.showError("Can't use SQLITE... ! SHUTDOWN..."); - AuthMe.getInstance().getServer().shutdown(); - } - if (!Settings.isStopEnabled) + } else { AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); - return; + } + throw new SQLException(e); } } - private Connection getConnection() throws SQLException, EOFException { - return this.ds.getConnection(); + @Override + public DataSourceType getType() { + return DataSourceType.SQLITE; } - private synchronized void connect() - throws ClassNotFoundException, SQLException, EOFException { - /* - * Class.forName("org.sqlite.JDBC"); ConsoleLogger.info( - * "SQLite driver loaded"); this.con = - * DriverManager.getConnection("jdbc:sqlite:plugins/AuthMe/" + database - * + ".db"); - */ - Properties props = new Properties(); - props.setProperty("dataSourceClassName", "org.sqlite.SQLiteDataSource"); - HikariConfig config = new HikariConfig(props); - config.setPoolName("AuthMeSQLiteLPool"); + private synchronized void setConnectionArguments() + throws ClassNotFoundException, IllegalArgumentException { + HikariConfig config = new HikariConfig(); + config.setPoolName("AuthMeSQLitePool"); + config.setDataSourceClassName("org.sqlite.SQLiteDataSource"); + config.setJdbcUrl("jdbc:sqlite:plugins/AuthMe/" + database + ".db"); + config.setInitializationFailFast(true); // Don't start the plugin if the database is unavariable + config.setConnectionTestQuery("SELECT 1"); + config.setMaxLifetime(60000); // 60 Sec + config.setIdleTimeout(45000); // 45 Sec + config.setMaximumPoolSize(50); // 50 Connections (including idle connections) ds = new HikariDataSource(config); - ConsoleLogger.info("Connection pool ready"); + ConsoleLogger.info("Connection arguments loaded, Hikari ConnectionPool ready!"); } - private synchronized void setup() throws SQLException, EOFException { + private synchronized Connection getRawConnection() { + Connection con = null; + while(con == null){ + try { + con = ds.getConnection(); + } catch (SQLException ce) { + return null; + } + } + return con; + } + + private synchronized Connection getConnection() { + Connection con; + con = getRawConnection(); + if(con == null){ + ds.close(); + ConsoleLogger.showError("Database connection is LOST! SHUTDOWN..."); + if (Settings.isStopEnabled) { + AuthMe.getInstance().getServer().shutdown(); + } else { + AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); + } + } + return con; + } + + private synchronized void setupConnection() throws SQLException { Connection con = null; Statement st = null; ResultSet rs = null; try { - con = getConnection(); + con = getRawConnection(); + if(con == null){ + ds.close(); + if (Settings.isStopEnabled) { + ConsoleLogger.showError("Can't connect to the SQLite database... Please check your database settings in the config.yml file! SHUTDOWN..."); + AuthMe.getInstance().getServer().shutdown(); + } else { + AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); + } + return; + } st = con.createStatement(); st.executeUpdate("CREATE TABLE IF NOT EXISTS " + tableName + " (" + columnID + " INTEGER AUTO_INCREMENT," + columnName + " VARCHAR(255) NOT NULL UNIQUE," + columnPassword + " VARCHAR(255) NOT NULL," + columnIp + " VARCHAR(40) NOT NULL," + columnLastLogin + " BIGINT," + lastlocX + " DOUBLE NOT NULL DEFAULT '0.0'," + lastlocY + " DOUBLE NOT NULL DEFAULT '0.0'," + lastlocZ + " DOUBLE NOT NULL DEFAULT '0.0'," + lastlocWorld + " VARCHAR(255) NOT NULL DEFAULT '" + Settings.defaultWorld + "'," + columnEmail + " VARCHAR(255) DEFAULT 'your@email.com'," + "CONSTRAINT table_const_prim PRIMARY KEY (" + columnID + "));"); rs = con.getMetaData().getColumns(null, null, tableName, columnPassword); @@ -166,14 +227,6 @@ public class SQLite_HIKARI implements DataSource { ConsoleLogger.info("SQLite Setup finished"); } - private void close(Connection con) { - try { - if (con != null) - con.close(); - } catch (Exception e) { - } - } - @Override public synchronized boolean isAuthAvailable(String user) { Connection con = null; @@ -185,7 +238,7 @@ public class SQLite_HIKARI implements DataSource { pst.setString(1, user); rs = pst.executeQuery(); return rs.next(); - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return false; } finally { @@ -218,7 +271,7 @@ public class SQLite_HIKARI implements DataSource { } else { return null; } - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return null; } finally { @@ -230,8 +283,8 @@ public class SQLite_HIKARI implements DataSource { @Override public synchronized boolean saveAuth(PlayerAuth auth) { - PreparedStatement pst = null; Connection con = null; + PreparedStatement pst = null; try { con = getConnection(); if (columnSalt.isEmpty() && auth.getSalt().isEmpty()) { @@ -252,7 +305,7 @@ public class SQLite_HIKARI implements DataSource { pst.setString(6, auth.getRealName()); pst.executeUpdate(); } - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return false; } finally { @@ -272,7 +325,7 @@ public class SQLite_HIKARI implements DataSource { pst.setString(1, auth.getHash()); pst.setString(2, auth.getNickname()); pst.executeUpdate(); - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return false; } finally { @@ -294,7 +347,7 @@ public class SQLite_HIKARI implements DataSource { pst.setString(3, auth.getRealName()); pst.setString(4, auth.getNickname()); pst.executeUpdate(); - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return false; } finally { @@ -313,7 +366,7 @@ public class SQLite_HIKARI implements DataSource { pst = con.prepareStatement("DELETE FROM " + tableName + " WHERE " + columnLastLogin + "(); } finally { @@ -349,14 +402,14 @@ public class SQLite_HIKARI implements DataSource { @Override public synchronized boolean removeAuth(String user) { - PreparedStatement pst = null; Connection con = null; + PreparedStatement pst = null; try { con = getConnection(); pst = con.prepareStatement("DELETE FROM " + tableName + " WHERE " + columnName + "=?;"); pst.setString(1, user); pst.executeUpdate(); - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return false; } finally { @@ -368,8 +421,8 @@ public class SQLite_HIKARI implements DataSource { @Override public boolean updateQuitLoc(PlayerAuth auth) { - PreparedStatement pst = null; Connection con = null; + PreparedStatement pst = null; try { con = getConnection(); pst = con.prepareStatement("UPDATE " + tableName + " SET " + lastlocX + "=?, " + lastlocY + "=?, " + lastlocZ + "=?, " + lastlocWorld + "=? WHERE " + columnName + "=?;"); @@ -379,7 +432,7 @@ public class SQLite_HIKARI implements DataSource { pst.setString(4, auth.getWorld()); pst.setString(5, auth.getNickname()); pst.executeUpdate(); - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return false; } finally { @@ -391,9 +444,9 @@ public class SQLite_HIKARI implements DataSource { @Override public int getIps(String ip) { + Connection con = null; PreparedStatement pst = null; ResultSet rs = null; - Connection con = null; int countIp = 0; try { con = getConnection(); @@ -404,7 +457,7 @@ public class SQLite_HIKARI implements DataSource { countIp++; } return countIp; - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return 0; } finally { @@ -416,15 +469,15 @@ public class SQLite_HIKARI implements DataSource { @Override public boolean updateEmail(PlayerAuth auth) { - PreparedStatement pst = null; Connection con = null; + PreparedStatement pst = null; try { con = getConnection(); pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnEmail + "=? WHERE " + columnName + "=?;"); pst.setString(1, auth.getEmail()); pst.setString(2, auth.getNickname()); pst.executeUpdate(); - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return false; } finally { @@ -447,7 +500,7 @@ public class SQLite_HIKARI implements DataSource { pst.setString(1, auth.getSalt()); pst.setString(2, auth.getNickname()); pst.executeUpdate(); - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return false; } finally { @@ -457,56 +510,11 @@ public class SQLite_HIKARI implements DataSource { return true; } - @Override - public synchronized void close() { - try { - if (ds != null) - ds.close(); - } catch (Exception e) { - } - } - - @Override - public void reload() { - try { - connect(); - setup(); - } catch (Exception e) { - ConsoleLogger.showError(e.getMessage()); - if (Settings.isStopEnabled) { - ConsoleLogger.showError("Can't reconnect to SQLite database... SHUTDOWN..."); - AuthMe.getInstance().getServer().shutdown(); - } - if (!Settings.isStopEnabled) - AuthMe.getInstance().getServer().getPluginManager().disablePlugin(AuthMe.getInstance()); - } - } - - private void close(Statement st) { - if (st != null) { - try { - st.close(); - } catch (SQLException ex) { - ConsoleLogger.showError(ex.getMessage()); - } - } - } - - private void close(ResultSet rs) { - if (rs != null) { - try { - rs.close(); - } catch (SQLException ex) { - ConsoleLogger.showError(ex.getMessage()); - } - } - } - @Override public List getAllAuthsByName(PlayerAuth auth) { + Connection con = null; PreparedStatement pst = null; ResultSet rs = null; - Connection con = null; List countIp = new ArrayList(); try { con = getConnection(); @@ -517,11 +525,11 @@ public class SQLite_HIKARI implements DataSource { countIp.add(rs.getString(columnName)); } return countIp; - } catch (NullPointerException ex) { - return new ArrayList(); - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return new ArrayList(); + } catch (NullPointerException npe) { + return new ArrayList(); } finally { close(rs); close(pst); @@ -531,9 +539,9 @@ public class SQLite_HIKARI implements DataSource { @Override public List getAllAuthsByIp(String ip) { + Connection con = null; PreparedStatement pst = null; ResultSet rs = null; - Connection con = null; List countIp = new ArrayList(); try { con = getConnection(); @@ -544,11 +552,11 @@ public class SQLite_HIKARI implements DataSource { countIp.add(rs.getString(columnName)); } return countIp; - } catch (NullPointerException ex) { - return new ArrayList(); - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return new ArrayList(); + } catch (NullPointerException npe) { + return new ArrayList(); } finally { close(rs); close(pst); @@ -558,9 +566,9 @@ public class SQLite_HIKARI implements DataSource { @Override public List getAllAuthsByEmail(String email) { + Connection con = null; PreparedStatement pst = null; ResultSet rs = null; - Connection con = null; List countEmail = new ArrayList(); try { con = getConnection(); @@ -571,11 +579,11 @@ public class SQLite_HIKARI implements DataSource { countEmail.add(rs.getString(columnName)); } return countEmail; - } catch (NullPointerException ex) { - return new ArrayList(); - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return new ArrayList(); + } catch (NullPointerException npe) { + return new ArrayList(); } finally { close(rs); close(pst); @@ -585,8 +593,8 @@ public class SQLite_HIKARI implements DataSource { @Override public void purgeBanned(List banned) { - PreparedStatement pst = null; Connection con = null; + PreparedStatement pst = null; try { con = getConnection(); for (String name : banned) { @@ -594,7 +602,7 @@ public class SQLite_HIKARI implements DataSource { pst.setString(1, name); pst.executeUpdate(); } - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); } finally { close(pst); @@ -602,16 +610,11 @@ public class SQLite_HIKARI implements DataSource { } } - @Override - public DataSourceType getType() { - return DataSourceType.SQLITE; - } - @Override public boolean isLogged(String user) { + Connection con = null; PreparedStatement pst = null; ResultSet rs = null; - Connection con = null; try { con = getConnection(); pst = con.prepareStatement("SELECT * FROM " + tableName + " WHERE LOWER(" + columnName + ")=?;"); @@ -619,7 +622,7 @@ public class SQLite_HIKARI implements DataSource { rs = pst.executeQuery(); if (rs.next()) return (rs.getInt(columnLogged) == 1); - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return false; } finally { @@ -632,15 +635,15 @@ public class SQLite_HIKARI implements DataSource { @Override public void setLogged(String user) { - PreparedStatement pst = null; Connection con = null; + PreparedStatement pst = null; try { con = getConnection(); pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnLogged + "=? WHERE LOWER(" + columnName + ")=?;"); pst.setInt(1, 1); pst.setString(2, user); pst.executeUpdate(); - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return; } finally { @@ -652,8 +655,8 @@ public class SQLite_HIKARI implements DataSource { @Override public void setUnlogged(String user) { - PreparedStatement pst = null; Connection con = null; + PreparedStatement pst = null; if (user != null) try { con = getConnection(); @@ -661,7 +664,7 @@ public class SQLite_HIKARI implements DataSource { pst.setInt(1, 0); pst.setString(2, user); pst.executeUpdate(); - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return; } finally { @@ -673,15 +676,15 @@ public class SQLite_HIKARI implements DataSource { @Override public void purgeLogged() { - PreparedStatement pst = null; Connection con = null; + PreparedStatement pst = null; try { con = getConnection(); pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnLogged + "=? WHERE " + columnLogged + "=?;"); pst.setInt(1, 0); pst.setInt(2, 1); pst.executeUpdate(); - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return; } finally { @@ -693,10 +696,10 @@ public class SQLite_HIKARI implements DataSource { @Override public int getAccountsRegistered() { - int result = 0; + Connection con = null; PreparedStatement pst = null; ResultSet rs = null; - Connection con = null; + int result = 0; try { con = getConnection(); pst = con.prepareStatement("SELECT COUNT(*) FROM " + tableName + ";"); @@ -704,7 +707,7 @@ public class SQLite_HIKARI implements DataSource { if (rs != null && rs.next()) { result = rs.getInt(1); } - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return result; } finally { @@ -716,15 +719,15 @@ public class SQLite_HIKARI implements DataSource { @Override public void updateName(String oldone, String newone) { - PreparedStatement pst = null; Connection con = null; + PreparedStatement pst = null; try { con = getConnection(); pst = con.prepareStatement("UPDATE " + tableName + " SET " + columnName + "=? WHERE " + columnName + "=?;"); pst.setString(1, newone); pst.setString(2, oldone); pst.executeUpdate(); - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return; } finally { @@ -736,10 +739,10 @@ public class SQLite_HIKARI implements DataSource { @Override public List getAllAuths() { - List auths = new ArrayList(); + Connection con = null; PreparedStatement pst = null; ResultSet rs = null; - Connection con = null; + List auths = new ArrayList(); try { con = getConnection(); pst = con.prepareStatement("SELECT * FROM " + tableName + ";"); @@ -758,7 +761,7 @@ public class SQLite_HIKARI implements DataSource { if (pAuth != null) auths.add(pAuth); } - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return auths; } finally { @@ -770,10 +773,10 @@ public class SQLite_HIKARI implements DataSource { @Override public List getLoggedPlayers() { - List auths = new ArrayList(); + Connection con = null; PreparedStatement pst = null; ResultSet rs = null; - Connection con = null; + List auths = new ArrayList(); try { con = getConnection(); pst = con.prepareStatement("SELECT * FROM " + tableName + " WHERE " + columnLogged + "=1;"); @@ -792,7 +795,7 @@ public class SQLite_HIKARI implements DataSource { if (pAuth != null) auths.add(pAuth); } - } catch (Exception ex) { + } catch (SQLException ex) { ConsoleLogger.showError(ex.getMessage()); return auths; } finally { @@ -801,4 +804,47 @@ public class SQLite_HIKARI implements DataSource { } return auths; } + + @Override + public void reload() { + } + + @Override + public synchronized void close() { + try { + if (ds != null) + ds.close(); + } catch (Exception e) { + } + } + + private void close(Statement st) { + if (st != null) { + try { + st.close(); + } catch (Exception ex) { + ConsoleLogger.showError(ex.getMessage()); + } + } + } + + private void close(ResultSet rs) { + if (rs != null) { + try { + rs.close(); + } catch (Exception ex) { + ConsoleLogger.showError(ex.getMessage()); + } + } + } + + private void close(Connection con) { + if (con != null) { + try { + con.close(); + } catch (Exception ex) { + ConsoleLogger.showError(ex.getMessage()); + } + } + } } diff --git a/src/main/java/fr/xephi/authme/modules/ModuleManager.java b/src/main/java/fr/xephi/authme/modules/ModuleManager.java index fc1d07f62..25c750b38 100644 --- a/src/main/java/fr/xephi/authme/modules/ModuleManager.java +++ b/src/main/java/fr/xephi/authme/modules/ModuleManager.java @@ -48,9 +48,11 @@ public class ModuleManager implements Module { @Override public boolean load() { File dir = new File(plugin.getDataFolder() + File.separator + "modules"); - if (dir == null || !dir.exists() || !dir.isDirectory() || dir.listFiles() == null || dir.listFiles().length <= 0) + String[] files = dir.list(); + if (files == null || files.length == 0){ return false; - for (File pathToJar : dir.listFiles()) { + } + for (File pathToJar : dir.listFiles()) { // FindBugs: "possible null pointers" O_o ? JarFile jarFile = null; try { jarFile = new JarFile(pathToJar); From 1e52cd0c30e23c63bd8c683828686f17127896d9 Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Thu, 27 Aug 2015 00:39:54 +0100 Subject: [PATCH 05/10] Changed to HikariCP-Log4j --- .../HikariCP-Log4J-2.4.2-SNAPSHOT.jar | Bin 0 -> 125868 bytes .../HikariCP-Log4J-2.4.2-SNAPSHOT.pom | 443 ++++++++++++++++++ pom.xml | 30 +- 3 files changed, 454 insertions(+), 19 deletions(-) create mode 100644 localrepo/com/zaxxer/HikariCP-Log4j/2.4.2-SNAPSHOT/HikariCP-Log4J-2.4.2-SNAPSHOT.jar create mode 100644 localrepo/com/zaxxer/HikariCP-Log4j/2.4.2-SNAPSHOT/HikariCP-Log4J-2.4.2-SNAPSHOT.pom diff --git a/localrepo/com/zaxxer/HikariCP-Log4j/2.4.2-SNAPSHOT/HikariCP-Log4J-2.4.2-SNAPSHOT.jar b/localrepo/com/zaxxer/HikariCP-Log4j/2.4.2-SNAPSHOT/HikariCP-Log4J-2.4.2-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..4d9c1be988b81e0dacbb271ec60a81e13dd1714a GIT binary patch literal 125868 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

bQAgg9@JTNAD_- z#uw)0y9jj36M7Kb7qQPKCxc~mzcj1}QU^0~8rAvq4BVCi9<0imtovTLdOz^rUWdku zPB@=-U)IeH`}B@#AFm7gFOYQ4$&(Utfk~P533*tQOcjyNULD!9h#E=-j)sK#DQ`A& zLWS?pm)Ep1VH-bzx1-BwP2*h?iy>?2t%zA2(pomqyMT)Osb=7sgkFM~0$m21usT}U zO~KEPYq2sxbb=T@6z6cYh>j_Ots|gBF{bF=&l-?yjR?1fpO#^|Qz?|=4!K#JtE@CjmNX+}N;bmPE1#WTyaveWmy!7aY^)5*d?5bh|J$;r1K25hoyvjiF>B-;xQVKh zM%zcyhtqR`x}|{_LY1FkZ1@ajf2cTA^&3z3tTP^u>Y*&drAO_{*&Ln^!rhKCb=ALn zQOa~FcyDHN3q642a8EK{d$GFopfJFE)G(m&+KURDh;ljQEo<8tjc&X1rK|Q z$iQPy%Em6Sb=a`hw9M#K@um(w@d+DkCd$Vdpqva>Y9=|t@lJQ#4o?wqcQ)H7LR}p< zKGb&qyXBb*_A-%HvNH2%jMWeebHUH3INbS6Mm%H!jZkJ%pG;}^wS+5GQxFd9-st-ZC zeN_-V`wzZY!TMoY*gDSu%2fc?K~ynzk=7Ksw^0A_s)th*NYQ`P#Jm5kW036stUURj zulm1qCqIx}t)JXE9df8NQdmTVy8L89OCg{Fej6~!3QSbop7^i;O)lveB8G{9QDFfq zE4!z=jgl|_t|qGd#|pk&zH+^14hiuVC|=_!o9o8quFS0aYd^p4Uo(MvLXbi*yO03F z$)N!=?OtIZHNn!}V?!P+VPr}oCl#8KfR>Q+#?+xG^)1Al3}{=ZLi(UN8!)|)Tq9K) zScgpbzsq~@OpU2RtU(?$6bwS_pfbJrz>xxYbu?G7X`Z~(_prV;dwYWeq(TLzTxsrG z9rIiS%NNoiT%WLGF9SBT4p&S<6{ahZw-9f0$ZmU1t6-a>LrzULLw~C23m-m!CD?Ar zY*Dq>B^-}+mv&$sY;?OzhGA@%qHvl_P;o=GY`HBaZk>A%P6s@}`plW2u7TZJcTH`m z{~X_ZWZD#Ctx#Z%q@abu*!B{Ekh?O-Cz5RFGiB60Vbd88) z7S@+(rMb_!)T@f--jf9$2O;)C~A(O{Lah zhuw-MccP(#(mN`+KUh@kAB9|%U zs|7vsvK^fjDzCTIQ`YVT`VJxw*sv-bA_IJdnqh4fA1^Vtj7m%{xTQ)k*IbFDXYm*& z6!U`OU3(c{>{X2c)if@OvC0n6K2$NgEfFX$e+{nDMZ}t)w5wAa#fzdy_CiGFm{_=J z|5~GwBdNtIIbg&@aBHJwohZu7J0Lux(UhqVfuJb>D%c}fLz3~lky^}@xd+r>L${Ds z!Tu?GN82fL4>eN}o10+bt;JWW&jq7Yg_n@HS(mJph5q9tVM;?vBjse3dH2=rb))JU zMu7HJj_W}I<12f?>XtWml?E4T5%e~6&8C^Psj!wor>SsXe-dM31B-iV(n;hfYTX;s zd>+~Uv!6r}R&Rev%+TLu{;tY%GLpN}0TY?H38?w#z>6K~`Q){N%EAbzjO@{}Q z{wW1`!^NP;)+>TlLo4CJM!N1TZ>xvPrC?e2{cdWP{P#8?EWUP;TkEC{53yYQb(tRF z=?se;1NPdu{#sjk;L%S)Fo5*A`yYZ=+1vqZPn_JOY#cFu9Te#F!OkKx*@hE17EfWL zc#_B89E$sdtEri8GymEmGnKaU7{$Al*kzD6Su#Q}c(HK|D{cnbRCl5qD|?<(luz>P z3b?O|u0snw!5?43R0)xF^F-SNf>NRGrKdoN=uef@sM0)OyA!XIO?3-Q+h)6=O~Cxs zkDWmE2mt|W>cdV4C$j~T>W9)9H^J6 zKOGuomx2tC(F>PBh~BFdtu4cZoQ2FJ0XZfs)kM_yN%4C00}iCD&(AA($$?1AIqriu7;>{~N&t-Z`YRC)f6mx7T6j75F_T zzw8!>)^c!&y5m@A(2>~yBmr{foFfXgl|f|DJ$kBIjV!-;fRw+{4PR)0P+G*n-xNQc ze2M*W^p8k7&7zmyZZ5LSq;nx(c^;ACkaBBJvm&(BO(#xuCLyDIDD% zaux)Gq6!ASM^iK72lC|f%ma34v6{mR7B(nFLhj>Se?j4jNXkA-S(Id8$}BO*yk0FR z)W?4kTK@JLs8#+DTK@e%2rd6_GYR$o`S<@H=21ZdGZ9;7N00xx+x`c&9Yp}qw~4m1 z3AYJ#`vy#lat8gNM-B7=1WwdY!3gfRC?CzRBu2GYODF3I-z~<=Dk#H$0kPF)ieiH`pfZo_SYq!}m@xQ{q82k1CeC9D4GJ#y0fMnY zlvBKlc($K0ht8|F9k=d3ee$x3Hx4y9j|Mz2$K)im4aLD_R_P`gr9UP&*{g3ZRnSh{ ze(P&cVf|zbD94~8`HPqY5-Hp_g9u|zPhTu@5Fa4-gN^|u#A+BWTL4MFi*$3tMk0N~d=9Yy%YdM&+VDFUS>TYI1b>r-0Cyr|F~AZh zkEaoVnwNwZrjUy2!S_3-lb4BlW5Gnpv#z0Vfv)WB=ML#JE#s`utC8b#^?S zoBNMZMeJu$|DRD1|9b+$e|n<-?+f~WoN3fxytP!YzH?Y7W#-n0>sfp>JEEd&a&PgGn#??4Vw z5&F?fi7QiWF;gkBS^_ zeL+@wW5ST5aGwkO(-Iw7({iIy-F-xqR-*mFspOL`*0tNm%>5#B#jO=?x647-HK{+{ zeuH=PzA5RAux*CTx3fz?^%4hhyg!T|bc2H7d)7Ct{n854ZNHlW?R(f;bBhB;-*Tgs z{E`*04O5z@EII9rsmWSl29~+IMXMFy1H4t67T#_Xc5QlwaC3Ql za%p~sp@F(ye6pZT=Cy7VMji#^xmhM}nV80>i}Wp;YRZYwU`w7+M%Lo=DKM`(2D5Tk znrS|fh5)4V$;`;2lIduzf>AVd4`N97C@05Eoc$lkf2iZ+v7H;{X=^2o(em6Dv_hA7 z#TJm26u%OR(~_&|Cj|k*(WcImlBs21!tqb&>yTuY@wWNg6!LtXYQqZ*b|UEwYXu5C zQsm05^HRf8fyyWE$O@4?bj4-DO+034c&1Egxp`-awwG+oLNw+_>c2_l%}fBwstGfB zl@{i&RY|3$79m*2QgNiPv}h$LX2@mi%;LuH&a_JzOrqk+a_B7JVBQUQUShfds;b5s zR=`$wwTjKoN9J_>YgV%~%xPgwfN`qC`iBmrmPh4EH-=2i!lVkxnkeDtle)~j;WkI_ zBtWT!Y(NIEx7UMM^ckGqr?(J23b09;7 zy&@(?cMDh2b{0bCIo|`BQ(`1MQcRBA3Q*oNB(dB?78n{xHFzlcp&?Q`>=qO9 zC28#&=0>X%EQ+TAZzWImHWAoO79PZ=bSR7M$llNQ(DcvF;3{!_i&S(&WK^zujnH3} zd-U!KgXawVZY9JqJjM%7t~g+RXe$g-?B}VPQn=VcH7Ami!1q#7OvC5Oq_t|j+sYq! z-}1L|NA8s1pvgI;uJJe%u-UM$^k_a|6feyY-#gt@x_#r&F%`h>3P^%zCi&WE@Ctd* zCGsN%M?3VDSqJde9|?(M2#x$>As%`~BIC=OW2Gn>0HnQTAI@3r6kr9!_gj#Q}=rcoJWV(r9h ziLLZq>sh&b^{iGLblfE&fPTDaqd+bsd4Bi-i_R*%1#EV51!g%{cIlI@kY`9zG|Dj} zGkQWF+iOIa%MV%@2KVHz=D6K0UtQVi(JWo8w>@qc-)&ewJ&2R`f!1J@W_1;AZF&`r zPtzlfP?E4)kdlk#u+GEuE5%)-WeAJb8+RWJH-+9jI+Mc&f^Y_tdXC{7?|A~3O#U`a zoz3$eAe;>GB>ueQ!7IEPT4hQM0Lx@WyZMRnW4g6Ws`Ff}=w3F4yHkkW^j5xkKYq|; zY)OE%Wk90OLO)pCBqGz4LZ(b4Bu2e$hau=vAp^l~3|@MMJrEsZ0E zYg)`HNfB0AOq?}7kT#Z!XNvQ=tJd|4>_L!RTYaK95}7x_C@4cchp@%b^uQwhH7%6+ zREr5#Gr~iCpoYK)lztB){LCX0cSf79aois1k&-8VKM_lTmfbA=v8aAKW_kS)r&cOP z@3+;B5&e0o&U^y>xd6xYA*|F=;7l-f%}Ov{G09+k*ory^VJOjX=6efb8m6K*d1VqJ5mK zdX|rbihgaEmpFBauq8A7tMK=uaexz8vG47pRD+%jNspOX1GtCfY+hya9X=weCu?nyq z9=pDhvL-5+-5OXwWRGu=706I0WDWd=01n89z%Y50n49vL?=_Bt1x1KA#qR^>j=H~r z3?31qbmvy(uU!AlO1vBn2YGWGJ84g%^GDBN(g1+h{|Ykx+rF25O)S!OCmgr~yF(BB zp6N@m-k`ePMnB62y`Td(%BEnuIb)SRY(V096qB+)kpfRek_en`=@^)GrD5&OnAqvz>; z)>RxiJw_W306=kpoO7^^3vEk69dgqVW#ssF+TVXEod4wekDlK}2jlf5G!Re#`hRyu z{{7z-2b z5sZcMGGyCgnX6O8YgM|y)x1!{lLIleh;nwC>`cif{G3TWD%L;OArp~dcten2Mg-hs zxgrKc&Oq@AvTd+iBQqVKi0`xg$GBltU4sgLMz#F&{GV%s|9yJt|EdlCW86v}wnpZT zcD6r8b`f_IBNt~o$Ny0(C~L|6;FG?J0h>)UiZG~l`c)!Y{K*;E0k^>mLBI%~C`mS&{XoCeoPiC)u{M8*==7K0x)s5S&JG zGlkF(4K_qY`laFB?AZd(7%Wp48A=Rv`*{T4;z+V~7!67_*NI5kl%)_wWyB&%c72uH z*Hz~a#e0>T4zJX+Q7+$mjb|LZ`_%Uv0bJSfR1fDo2BH3UkUzApzIA)rZH!ES<(lO- zJHV4?7YonqUtAPOk@h|Zy^C8j6OeIMZurWvX@W|FRVM&;Io@Vpgu-ONfQMM-m%-k| zE^B{Bgj{QO`;}I`2quBDET#o$a%Zy%-T-r*A~rfC^J3%)-Cz|;r-wNZfx{g6Zu98F8txmt{96XQQNDn(Lr49@8c3L;svDZ;>Jj3U;W%78v&F*_r zkqEkbhbD8C_sY3858shracl6BAFlQK z;2()0v0=RM*P`xbwPa0YtIy)NbqPIWy7LOLUHXYWpQOJ$qUubJQco}lh)3;v4mKD= zAg^P$-~K8S@v!;9(uNnbFid6@03e%27;iYk;Oa{{b&(HY3mTr;ek7IOkk?(l&?sozNR6-C#Y)>tA zJtDtw_+LRtOle@#Ux6^P@nV>%6Fn0_A~3{@mW@kofQY3wZ&h#EP~H?@j54*{=>k zpFK}mxAN~*=~Wy$r`Dafu8PvMuXm-2x~0?QMuzbMdSor=QcP1=)WjRK(&Z$bil)>& zUX{EXQ)+hQ&b_NrrjE`J#?3(U&Wm0vS=dfKI1si^ii&_DUu6Q$Cg(PYCy$F>16Z2J zcGr!^@$>FniLT&ZZ$vDv5)t&q4%=UBEm%D*ptnf~t{(4FUU?C=>DjmmrPnh0^>&ly zycZ*n(6RoEpO|7*CC_3QFOcHCrAyl-owhQ)wE?Xh@7j&HY(LyIgO=HOdGPU--V5RT zuJl860K(neTj)~|?uabjcs{~1xh{6aiu|O}37&6|kakfx{f4EuUfY>ovqQV-Q>nTA z2!n7RZxRHDl;*fEcg+g@minim9H+frz-HSqL_+u$UdiY;d-#wOeJk(fxIdKWHwWmw zUd=w7TKCW_eDm%rBn9XQFfnWY4Bm>-f5-bJNx{7QLHO2W@Yw9P3+vcUJYv)RqWzXV z-u8My!2c=;-M&Lad{3D2Gi5p>L1I?Lfgjp8%`D3`@hWukp}`J+8ai)E%jyg_j~d;q zHC(N4GySb6#ImG=hftHzkk>}EwrMjo1sZnLmfW_~NLv-Dd9Dex7Z3v1OWS*9&oHO6 z86Or*yt%@XUscvs*45~%AoQ8uMkcNOuW`+sG#gSBxgua!cm7udcxqT%F?4WdY zQ6#qJLQtxx=)}O%|3%n0MrRgm+jeZ59kXNGwrv|7vt!%#7u&XN+jhsv%Q^SqzVq%q zZ~v-aHTD>*R;{X7+7x4b_8m*(h`AoIEsMAwq22zib%+9;c`2y%to<^)H#G1&xQ&Ca9 zGSJ8!Ra3qO*qyCx#$K{;efdB`eAb{feKhv?K@E>dDch<`G z;3=`{2y6gOqyX(}>ps%m1QwQl# zno}Do$j8fDa&Y$d%$@hWSHX6Onhi@HcN2N-HnpUkY$le1d|q(YXbbaF(JUpd)3;4H z_iowe3p|JGN4zP$gC-XU-ZCeO7{m@KyArYBoYDJ-nah>bd&HfkPdbyS3iLRsyTIcb z^6;@ zPaCUi?Me*L#J#ABATeA|x*mx$VKGU6t(D!4Y;$&?Af#Ot?OM8fe6^q`rpp=`Fdcll2dw!+K*_M|~5jGY&9_z?2xjtf?Zv6Iii}WQ zl7Tk@u6MM}Xw;ta-f+%idN_2w3Db)5tpms^w!jEd3KMA-1Bx4baE9rmf89m)gInrq z|6%BWN6)op_zW^yXJ-5+wic7C#GVm=KGi25MRGr(HEHTvol)QuOY;1E#Xwv>SsqcX zg*HmWGkrc-RaupfN2}{F)QJ$ClWT#DW{ZLSht@j!Q*fUSKp(`hvv*3C2|tI?>PUKp z#NQ;DWR<-}YiA-B2lkcBdpsAzEnQ%{=o;$*k|(fYXvg=y9UQOd zC*}i5cSvwHxLCi7e5wMLlSu2QSpQej z{xsx`8Q60@@Hedc##?n{^p2ma(?l$f7JC7$4OwVpx>JY8^6X~<&@fr$?nvqVc_+q+ zfQfBkZJvHa-;(}mWGB#jc%O;H1nG=9OzjL{7P-^5C1X{n*SuGyV$QJL4u z!UN@46LgY3Jmbh*U3G|^o)<;m5cfbfU-)qOxLdP|2TK?3{1h%yEOhf#;0DWsP9VGO#CA!&)=83D1)e5wbI% zhrL9toR|T?FpUYYPakLms}f2oK^4uGHDCp+R!%avWKzcxV6Od=VQW}jD-C81DJImT zZTTNmy%}^+fFOPKRy4Cuq%gs zaMQv}vc)lhDI7;q^p?idEXo6(`OPpaWUy*A4ciHagY%+Lp%3tfa$SHPaJY6=5-AHA z+LRe=*lWN4%v8{tARl(>5nShIi##uPqUdd4)zD=Pn~>F+PbQqJJJZN@{4y8ebYZWMONi-mtK{dGfSax zdbv8G7o`0eqR3>1IaNBw<``C1yLy3>LM#Fk6qnJ!22f`}Z=3;LGH*!!)Vq{)NXLi^ zV@{R*Gn|c80)9hxU66IP3+JJ1skgN8D3TcKTMq&7kuM~;SxGEjro8Se`0nPVV+UNk zBA}07LP>`10SRabJN+}(Mk6ShhkCL8iJ25pa^QU^N7g&|ck62hzm*L%{=Sz=qbY7` zSfO}nM~~HV)el()(Wy2Cj}@#_+5d7q5%8nAW{+(uAHO)cR1I2jP&3U_t?Qb*00l~D z3N;VfQdDctw~!dGxpp6|jPD}NkIJ)G&n_!$1BRk?-vx?p4KvT+?p**kISOizB;6}V zQV(`tjteL1EXx-Bfp1LLi0@fehsW6qB7aMtle+OklTMQjGKM7JY>`Xmmu(r%6@huE zSL8WFad$X_#QC`76_u1(GI>szaF0!C3K8kmf>E5g$Qp)m2lC57|4ebgonV4VjNUO14da<}wUAEhzpKD=# z!PJ}5Ik}W-9cTJMFyN{@q_d21)x5&ayhJX|4gO&v(8krztSt*&{bqoG2Fi^6Y*qpd z`}G8{Uc?Rw?NX|Chbh@TK^{mrE$LrPjt&>X<)4L9gwGaIFTSpf4TJ!XJz@hl#9zO@ zv4I0S9Kz8c+PV9^EYyqr%N~QbGre$6YjS+%$eBKTEmIwD3V&>m@8fH)xywBC~@n&QyP48lb;6x}5M~ zwHp~<7=6jD=<#W^47Uwx$2sW6{uW+{JmdY;F?U>*@Ifl77~HhT$b`^B?u|X^Z;^(! zT81#9nW3S{P4ihy) z3US2WmlN;Q|H;t21kSabp>x{jS89OS1lQ$?c@RG%axS#QNBn|T?)GR2J z{AZI-m4&ThH+HN_+{#_T0ruG;tBkFYJR_8toIMU|t97d+&xQfh9L+e#9js|gLkg|pkomZmmHysBaM9GLQw)da#%iUCv0}OP|lW)lh zN`y;pM@6{9882)Jn30%8N+)!c`Bilt;bVCkmN{fg0H>ymlm!S)fo{cBzQ=1Eks^`^ zA0Vfs8??pW2l|MiGxFAW4%{5ig7ZVVI0vQRCnE3q?^7%-y*#}Y?lD5PSi-YXc1ckY zz9^G5p{Wl9K zEM=T^DP*ire@cgeO6q=GK(JBu1PwxeAuWKuip{l_H9s>4ILPtX z(8%gUc4n>M6{0N&7@R43Q9=+>mn7;I>BYZ4^2>z_@!SDG{7oLLD3SqgEb$w}6jk%* z*@NbigfVOc68O)V&+dX?HX?8Zr?G4FgwSlrPhfb8j zwSJETdE36ieW1UO09|bRF-0=LoIcUZ!nF_krTBhJu8R07gHw9ph*cRe3luj;&tgr0 z6h@?Xl1}Cf?cV2{(y^lSKa)(fEY=0K!m0Xt6fEY<8b97!W-jFdhD_k5Djc)|URc_; z-4n@P9?44=t{-UZ`3vA@`^e3Kx=wta2sy3jlK5SRN0R;fom@PFwhvv^RPhQ$>JBMh z#y{G?Y;Fb01_!Py*u|yZUz?RwTT}05ec(s7LT6=|gKYs}PB6@8_puw5HS_EGA)e-F zo3bf07?i@Ub1rQ-9UUQ61)jC{K7;e75!zbU+)f}LD!0rzRe)~FP8^|>`E3TrAD`$R zIKE#-?L_92s+FWHjpW*+OtG)0Y#TxCJ?8Y#D|AyegVn|uIhd~TRxgqagp2~PPC#Q z3q8zgtz#W@@x_pzGO4NLvWPly_q5oA>-Vpv3dFD*VwGU7d@KfeeS6Q)e%`UFWv%yA zZV?UC6@Ea-+5-575kDDB827}{_C`)a@yrNq8wgCbLrZGm8S)_%45)4ajmjqo`i%UScB{DmK8$DF+bssL;ZY8%=g;~j@S zYNrC0_ut6Hid;Ff=A|oMQN;UB?)LRr@#3CzMsB-p_mXbg>_L1|+^p zoc8cF=>qNQAFG%Ie7)EQmp?WjR`N)`xU&SS>kcQjB~HhN}ZI{mHd3_1ug$6N9j$&`)qIv?MZ9$@8Sbcx1?zG5E|rq zNbZ9Q=hY$92>0esbPm9;1!lL3CG0)tPcTtWg$Al(a_vDHaKmT7(N6xHu+>BmAzI*$ zPCf3tTxLo=`Ja0BUO;f)h7%W;=xX>NrE(v49l`Zx#%|wkFakJ zfQ@BD)Mbio88JtZ%kheW*-z?zB?3{^XTo5VA)d~)if6LM4EYMn;y*0%oKTC30)Flp z=9ceK`F8*mdrl?b#3hL+FG=PT;y0@mFH;f?+JMRexwR!d}}48BaN=T6e*rU6Oj0voRk|KZ1yJiJON2r`nu?;LW7 zNZd^P#4S8K)ZajvgkqDN3CZa{g&}n$dJCAK39Hbu%uG`GSSTm7Oi>;KOSN&BIU9rS zp2xl{QpgY0I<)4q`P~zS&OA2eqEUKLER`kCt9%y9y$n#SY9(pXl+n$WXyp#MbEBOU z9cu}n&Xsb*4{8l=x(9Ac$Cz*QV$~Ur$aQKAr-bPZ=3W~jMf?+NzA&^;2n?YZp@G{o z5*A1#SESR|!KFCS9zcFa!Zk`qrgkN^P;hUYRlM`{#te*gk#iULw$nMd%JAb*d2pIw ziZwH{K8pOY`nMocW*b^&bIrG z9+TUwpjB(qk^|1;4ffi=@w};Rh;KJRQr*$)V7MzRg&EaW?@Znh(BR-C>ot1;KXUY8 zJkt{hG+C>YWW3Z!w1y2WSQl5Uh~yLA8dNoT0lB%^Pn|B#OCQnjy?agU!4!EYSBi>? z5`}b!4544r3ERc%%^PNFD8GL=Eng}t>?)4}FW6}taf}Ul8LXm79=@8p@_8dm5K2z! zsE=+#U~-P!6E1a+LbJn@k(6XME3)X7A;ReU0ws!^5z5rkl}i7< zxOu7@Q^cEuR2`Jn*PcRS9YR=N`^_nTbD6h_M*87Y1gN>YEE>;q@`|6I*BNjuQ>G)GFjRf?Yrm)k&U0pwJ*-j%FF$gn2u3I1xIgE$7%gQ~W4FxiL!Ec%KQ~=%w zXFD`OW>q$N+r9bOyBPyO1%Xg%MlZ6Z8EZk))J{eE!~9YX+upHKLM58NnIvYBl6Az{ zI&|o&s)=P&nq=;S{Zg#tsFhM!I;CuTo{T&>Ws_C9v2^JQ68ILXaxa7DW!_-i;S-a! zu30`3@Dxy*RFZKd_{$wpE?~16sGXp)I4YHG#*$@Pd7yY?R8Gixy2mm*fRaxx;aOyX zTdp6fQ(WyviZTvsp*&I6t&?l8Zj&5;A+9$kx8WB6%?2zO2i@Fd+aTcPV!fAU`%y&5^BmT`)=9Qz6Fk2E%uKF4Ga z=#B6)hA{tqy^ZB{{o`^`M5=1uf>e~jvqnw2Cv(}Akp*#@j9t9#9{Oz(2wB^r53P68 z4sFpFz}$sE+PMveX~9!pv1@X&GOa(&7xK4T@ct#miSP^h^POd2KyO~vC(Gp~qmk1$@+tKd`W3`Oo;S`SITCrBJmVN zeI`UXpP>XNH;msT`AFQoJdEPDXw1IsBzeHs1^R2%MZ{9;Ueoxa;LnX02^4zY+aedj zisA64=y2a0#Oc-Wbx{wy*(ob1i5}@u(H-wWJH+G}HC~77PNO7fq^FLK_k#)SQK265 z&_4E@Xq?!6uL8!5dSxuYNV_sB&pn+ls0E|SGLI@vm_%X#<4)s@V;LmHi!~kt<`(JT zIktn7?&$W5RIMw-$~`Q~CoCV?1KI@|xgyrSeDQWiTZd|AiIOo+{Z$k%|II$^n4ztE zbJz0++8;Z*I-hMd&9%+0>ZXSCuIff^Vb^OpKcyGa%#@G;6iJJ!TgEl9JKT!dWiZRG zj@HP0yV$3%Z=@IkvWcMx6$|Ibk2ALaj2!=~k>&pfIhL@saI!G4w(u};vaquiaWgWp z|Ht5eBFBo8w)6bo$g#x!PMf5JuLMjBP2&5H zcD)7m5~Q&$_UB>Ee~S4dv%=9?2prP3vtGK=vi5Uwx_-1oWS~p3LYBK%kiOPMQMaV4 zS4F|7H`f>#B+z4w%0qRN_KTnH99|Iv^N>zloe(e*(bMb>JFdNa?w&UjCSejmXxzx15exL_o!R}Sf;A0O^-!X**S8pZD06D9-o)EhR? z;#Gi(e2d|2PVnfvv&is9Da&ogqwXdaf&kMdw*K(BcG)AjBzxC>6q|ml3OHY>v+ozc zLW5WoMwKVtc=-Z?DpHcA+v_Rm;!c=IOmIFP&?g9h-(6az!;+J)&VQwx3c7m%*G^;eutq6E;s0{PQWwj%L+}bDT}d_ge&q_%XnNMAAHE|JOCPaE zRWJ7e@8s-LW?&L*V(nutM{;cZZdINiBa-6sZue8MHq5Rpa-c!4fh=4?PF4y`YB-vs z`^Ta=km%f*{-#xt{##c%`u`rERdW7qZ(?h#X!6_H#zflA=s(ffWTg7}5xv)|7qBZ; zE5ix=iEPjc+>~w=Q3KCwPu=dm z{`up0g_ba)EJy}M3pR)vYwRSQQ0;t)>w#HCjy_R~5f#DV=GOy??_WwK3(Ax?yebp_ z;Zf}aiGKazIqXyXl-m}=rUZRk1@sOC;?=(PE)wIr^qOX`ByOJZVnj*uOB~>*= zIadnRs3_7oUlD&wzNkqAmudz^{SQ56oiSd1o$t_1{9BKW|Js=HpPeHAPw4(5%cBy` zWxxAFzFkH!nyfKeLql^z{T0jV9FaBG!8*J2lM`1^(M7`QD(aE%xli`;)r zwlJe$lR2NH#zV<5OEY1DEu;Bt?FtY82QLl2G(J}DIex+kHJQ7s+%s)&V|29|T{~>E zT4f)n7EzQyxq6C#DyX3HSY2}nd06;(pKp#Q74=z$`JrL1-DTqhZorLigbCwfp6Z_* zErpE0U(Ed7h%dQYi#~=4?%kvP8kwYMz?;9*roQvu4K`&80M#_LS%yExL{6KWWo+$e zmLXq{XrkT{T@1fbb05qj*HK1t9aFB9y-XtZiyxg z_KVm~C;Yt%CBCBsvOHs?4=w~AT$CmtE6S06Xd=+RkGyD=i^p6Auaeup`E=xHqNYwL z#Hb|yac$9HHrco-|Lmg-a~XawF;z^jIYi)XVDsQSG)t|3`k05Jqu(Ow0K18*)QH+V zBNN{6J0PDov9vxF?CwP=)d}VI7qIlX z#su|U^>l9`{oDX-IY4O$=^@Gu@AR4;K2bRbyO^7ezai2vW-gW_%Lmq(>hYhPAaxP8 zti11q-~4~|mHewa9p-<%Z#mkzx&K>xx_>R2%>QN{Ap>h`14C<*f7nr)*qGQl$^T>e z|45}QMHwkz1ymk2G4jc}3mB@`6_X&82Ie(b;a)`l-A@kQn??5NY$NrrGL@P9pEEJx zSM!zzl#53`4%ZyVj@SRR>oux4j1wIljE^wEpboqU3s-TJWZ#An+`PsAE+A3Ms%(7} z)m9HXTldbmA$zNe?<5HG{F69ME;wK^v}o&S=;?KG5&T=wly*O$KmCFwE#vbYbnjkBYwie$!G#6 zp&#tQfi(^awuDLE0;7S_u#G!`dvnSd;Xrc4f(w6zeF1y_!OEO<^-b7skth#BH+2(t z{L9t8-P~^W+vkJh1xO#)u0M1~08;{%5))piUmUUkQ;8nG4-}s&HSv}ra@dW?NK$|* z5?y-SjcPwF@))+)VxD!=4A#$$Xqcc#q*p)GSbAN3Ykdl5igQ{kP?$;ZST&jpV5TN8 zN|R;+?mXKBM{aZLxJtm3Hapn#H|-}bX0$3}Gll57!$2=NjZIjcf;f!hvX0UUNCD+o zPs7t7dacQRnoQR;OT@Z}4QaOoZ>dtKkyj1mTrzAk33TaG)Kr*gXx?hdUubqSrk2YD zh6mkW!X}Qz;?9FpamJ8p6v;154yq*QoB$n?n5ByG$4b(!eOH+w80d7anJBz!FcT~$ zW3$2R0-Srm^5WDhE1YMc6UFZ)SuSDCQR%^7b5v_cNw)X z%WnMy8Hc#d6aJBr;iSKqD5^?~M-aO&+(*?FYR^ucUY(O&X=vJ$U-V#w#3oy(e?6V@ z`lak+_wO7I`|nD6mt(!+#F)p4iXH1t05`)V?`A^1tLasMSEk_J)-ra~=I<_1GdT^G zD;+GVuICzEbeRj5vp+6UZui{C$2#LS8$!9pT(dNnO%Fs)5$9sT()#u|ptyIOeN85ZbIT4_9ckd;KM1+?nkC|a6 z6#?OyLn@?;?aq6l$F9)0Gf*zo%rifM-0ig1=72RNA(z%;1URfM@}A) zfkmpCwFEVCQt^0^R%R}LaVxiKxjJT#!a_V$ zT}2kzB(8q**>sqDtUd> zgOZHh_r1V7qs75enom*i*%G87h{OwXz)y&Z77z+aU7A>?IGDG_zCJXl6L6W_Q=KoE zj|MrA_A@B8Q3%*ilEcmH-R19OM)Tj8oSbeTw?I$uDFcP!c)!SS6A%vVWrzMAnO`{c zHH>)-$416Y@?j?ul(h?7YU|OV*+~ z`IoR9t+F5X$YEC{og)P51FG~>ow+H~Lm=>wZ11Aw#CxH%uk3DTl&(SKBRugR%Q;t;F#Za2!!spPEi!?g@zAz+L1L-SL+6b1P@}f< zCaJ@@3%4ns-Zw0>Qp(!n+MAj<|lj!+EMP+`o7+-udvZnRwKk*l;jt+W_T-rh}ZhZ>9!Q~S5 z)z$oGaK+gZaB|%6KH=}|XWBS+c^4Ck^2{6HSIWDe4Bna2^vJ4Y`Q=cTEJO+ezw*f9 z|7kIa6V(g?`Mt&#|Lui>=HC_6|Gjblr%GC>4&|n_oWwgEPov@U$EIWb&x(JC0SF<< z4kC_GPjoF12ci(LdosSLdNQsAxR50B90{CE8yieR;d-HyDI;F;j=s1M=V+|#{An!n zyvtt+v+;_oMy3QZo3Hz=`TK-l25V{4IoIvut;c-pJWtx*Z)O;JWcg_C6(N=I`58ZQ~(=vQX z*Kc!PJ9(n7X&F9O28Q4$Q!H?!R~UtI<&JiEyjUutU6( zGVY!R$!=uSA@B4!Wr4IP2uX2FfXyhco0H~z13Ros=eeYZey6q2ZMa{Y%=S9neopAJwc22isX{U(*sfyRC3_FZ- zr*^mc5YHC2pXjT5dzJW#CJq@ZEq#+dY)`E(@N9Oj_wX3oqlwF#?G8r6tbn~MbL$#P z{4LM@Pr%j5PAkCS)ys`bH<^=_0V1XZ@uM;zRPqxUW---RafwQ%A1j{81Txo4=Z?1Pd zbjF4NO$A&T)CC30%Fs2K3^Vd9aF{$Z5s85e-kH+Akn}whJzkh-zsx3C7$hwUUYzg+ z;{2ZVgVs!i5`;5jtq3;|QgEXw#^;QqWgV{!J^*Bb8bBD=@4$lmLI zk4jl4YJ$Ia>r=Q!d?7d6l&Y|J!74}ehi6W-9I*J~7r8F`#v_vQ%jU)Okrw)Wo4lNUA1D+{*K{FJbn>Ai1y)u76 zsVIgr8>J~6VL%7j983z!9+m54m1kmY|Pl+ zIlsD$$;Mb_Q2&@@m4W*!+7|-4dX{XIM+XqyE6cv%+MlhlJkTnxR$4g-ZUoU(zfz}} zts+~nM}6sHR&w%NK@(R*_3IFm!i^jXeiiK3bV3#U^{@(!bZ$?U&N_Lpyt_5sR zpMHZWvKkyqav$ID=2?0pe?pO^d_oXK$t($h`ih9>a7!C>ogXOZ!0g3_r+R{j7d&(d zugiuF4bhlN@2<4F*)cr$L{Txf4~<~YpPn1R67+PJ3;S1qs9N0=)U%TjMe(FSurmjL zIM1pJi>WA(*?AkuuE13hg>J}^!BU_a`w4y^Ur2L+ zD;I2Gw&f`5>T%EI>8bJ2`T2@Vaee19bTFTRGTb;6H_cWf==w0V&q21uO?el@Yi7_0 z`sZFh^!D&i#gqL9D2$&9&pvTyKyhcf;jPaCK{0ni(3>$>pY%&7r~#|}?~rFfrOOe5 z-Lm8khKx%D(0r2QI`2q9KZ!#fq<3S&L%N6(VyGY5E;cH(dPCjKv!$_hSBPT`(|1aa zWQ02fO3^w*<8RN3f@P^Ns;XT|`{ZuE<;dj&zu0S@QRckj`HE(iPn*#^lDl^Hy)1@d_+fd>Hs;O)0z^`@BS$u^VWHHLQ8V}x8z0Kbk(@{?oSKN@9lL&+T=Tja39Sfk0&@|vu{mOIT+R9cfxKo@_aC@td_;vIVw z=^od&q`U^L>;@5&qV5Sj3vQgekRpv4s-`W&B|pUv#TeX*(9fy(VjpxqoLgdHM=L>o zYMwI@H#0^b=fo*-L7WA|`6>`gH|6t9YB2ZkFlp#ouU9*i5?uH)hJhHn^mwXLn5*|b zfl~A#mP!kHvXgE+di4&Cbv0N6$4+PY=$uH%?DaM$44DtrTQMMOAk9 zB_&@+KU@JDebls_WLWrADp%8(#2tp9`RrGa;DxFDJ@{vg3B*hh1~?RlN%-rBQ$F!u zW2Rs{&Nlp=SV@UWB;80Ok(al7)6f0lL))Z2VJUVd$QEOlgQ(9ch{e2v0QX`IWa(CT zUlAxkmjJ*$*G=$N_I^kxEXBu(ruaZ;=D=b~ecAL`U~Y3Y;HJDyE}VNpWOh0aDN;c??>ey!W!tb+{E==<=_7(_A-@~pi$e90_l)-AE%!4E0bcBs zP~Hc#AY@da^_jNJGp?oTllyRiC6ioi^ZovyqTJWdaat+cOXqmhTlDyjey#ODa2-lk zCsD3>Uiu8Mx*)W;AO&Lq!{fimS>aE|Bl(kX&ND_pcFB{-J$j1^91BmG#JP$xF1S{n zMJNCLvu_DwREbR%Y`-vaKC*AgAzj1O&ooNOzyXQuOgFc~feOEPwU}l%+|zw&2s{3M*( ziM)`*DSJ{@u7+7@hk-wp;|Y6fX7R|WI@d9KB?{uPdl|Qs%HZOaoxDu95I{GV^X7C5EM2(-x7_7Bep0{qG`~ZC-#I@y{1ZPP z8?$zIQ0Yb>ount;W(G&QIX9`UqFISmYF|KQBHNHB>9QLvJfIrdp~Md59*d#b0gu0 zQtT&I#sgUL0~p{zuc62INNP#ogE6tXsN~QH4p? zxmw;^ZXa#TE;AQgRM^eq44d=^{?x7#-&bC(!zmVhrcC1ke-x#FL;S{!w4ZG~;Q)6J z9jF(LH(a6~*d?W=U!&FuTWONdICQu>00lR9q(D#T2fO{z`6^X7^>^zRC- zy3jk`+_VXmbM1%5jwcE>gl`HWmg(VJUg^M+m1F3%;{5LiWRGYEOHo?Q;H&ukhOvih zC`;5bs6LdQD{~GZ>WO(H#ElaYCsq7n#x(rmjEe*CQK~Gl1Y_3Nou9|YM@kJ%>-x&> z{&(j)M_?&T3M$swoa^>4k=X-#kTs$oZ_Yd`(dT;o@9hpmp|O)Ez!bC!l%2wCGi+U{`7uxF2e# zHq?Kk74ohK!Wx#X4Rpla`HEH_2ylG#fknLmj#cHF!j(4qzSGaDHI)eaeU6z2V zV;Y&rhUej?eI@h$(W1<>%FI68Y2yU<2zTp<^D|hrjXwI(GnfW4p7SmvBR%UnxkLB0 zgI2g$WKmM^>9cewO9$iK*Q%*Ss~Ih^hQO&42I|gw58+~>ET*_Ca14&jB8fr{6sK|~ zn1vXd6#Y^#6-$Anbon_?ARaO36ZhxEAD8igBwZ~0=j7%#(fnP4%{sYDP766Jj`C?i zn!#{#$i;-(^hj3>i)Hjk!j-IME|Cb<=_=}&Xk@_;Q>p1HC!7E)R)f7@g>Q#U4U^qu zPI7Y{TUBEhO(==60uslhAZ-&uwX~5rlygocH64+S&UjLWV?D9w z*S7YHB)U++-8UU3FGbqw#Eyu#80U5ILSJY3hZZNziq%8Ag}z!m2B{58y=h|{lil#+ zA-{uB_X=4#W#`OpQsOk*?v;*+idQ{NlB$__QMDO}rVk#!6_69oA5EYIR+^b+>D=}o zBwdvZ2s*A)58^nZ{Tb%yu8J(KtMG{iC%=FjHWA50|uG=+kJ!m>;ux?-dno-=^|G285ckre9 zyP_@ons!v8Z#6}_f%L%qpo8S5f!We}H8B}}!N)rFhpOhEqz9o_VjgX3 zh3P`TBGHQg?gOy*it?hGT?dYJMVF54r^CMxp@HajOI=dn?<$mW)O6&#RYaHb&#^hT$3+1Xqht~|3O&Hres+}2pR+n(p z$6c9EoD14^(DLujTPL5mt1fE^Z8FNVpMID4MS?!C!>^b$N95Mn4Vu^uva|fApJNL@ z;?a_&c5bRkDgar)Kx03I#{}ek(_lJ2~k4`*So1wXGSu zUK_jG*R|W#;V`x#qgRxxhU{gWs6y7DSEr~BXyNGcotslO?r+xN`{FG~;h2-#3`Bps zd49C({S&0`X4TFfK>YDToZ>&fZVPr`i+#U{{O^zRdt_v1L+4@O=4RqZXKrC-;AlZ- z|Ia75|1c^4cc?>=Hk22t%3QSvXmA1HMhHPOGBN>vt~es8A3p&UA}tbXhy>0MER%sL z(T?}_llL}6TgeVkba-R+4k{O@p*0a>*K?N^wWeg!qHR0l&8v9 znVL$qZs${5{bTd7F6f{BLEXSwzmf2}`S)_Q^Vz$@UQ=IY^)2M63SA}M&F7-ApU^KU zK@Y7CzS??uA^Y{E^AMr*WH@H5*{qP8a<@5WbTO5%Nm^OF<`MRP7O(XG`XS`S%>KL! z$rvMV9wJuB6PG5Z`su`fV#z=k`KqP)P=dg@N@ynbi0-Rw*C5~`I`gpTk;_swZLwHj zg(xX$sl<3RRM2a$G&rIOQy>u27`*rU(G5&+xU?L^Ly8*{Y8cU@NR+vF>Fh?pH88(S zydZi;V+@XY`9>tX>Py>0u=gtHUMu^CV)1v_>0&Sqm5up0d;#&1RXiQYQc; zmoE=4mNP9NXM2vqWK5wYs!KG$k3N(goEVku^p^AM>?{}GG82be=B|MfOCw;WO9A0j z23&kvv)Hw0Vb@+BBFv%Yn?;LBhrO)dA;>Fv znz*Hww?j_U0Q1}r#A6Jr2`uYxRI;xgD2r^L$A_J~XH5S1E}63F54L}$kQy$zRQvj{DjF1o=C^1S zu6jYQqXg0IRFY3vg@C#S833B(5mL;L6CL zBVZseX~Lz<$tWRDNFDAMF@+-D+(Nkl+-)Wxf4gQIi{wDM=#rVILagW!$L!3?I5!gx zZowV?W$N?-J3Uf|DZ|^IS7z^Cd?KhYJi);sD*XflWs>wN%-*5t!XAr3CtHS?__K;6 zzPxUX)x3%@-Rh+d4safJ8Vq|Z7ZZs6G47wIug&>IcDS8U2_=^pDBQJg+Ywo&Nz3jzS#3u%J?FZomw3>)&L!c8{!&7NViyj$)lAy;|K=>PB z8g7Ay57G;TB$!qdMB47%lN6Rm7^8*cc*%oSMEoF!`WWDgc~a zP<32120F;cbUb_(Ltw zhqP7n15Lp@ioT;z6sd72AkR_5Nx7v*G6OLCyrUKW0B7*7)Y>eNV$rCzMqr$P`pEOn zZ~SEiE=N)KYo2+549Yjq7iqT}%^(TJAc^Q5%7?7)iy}oPTJ)n1_dHJ2f?0A-Zt;eg5L`-s-(n0 zZ+`FwsGwJx4ZDEb)=hFURU8!Jy*GkL? ze5^4;f^}*{tP^Wk49E??Aua{603&u7EJS%PtO8h8TKWcr94Rh*|E{oaY@a;GcvMS# zsF*$!QcNNeT76wA&ZBldZNGvrk7ktA5ewXSl1m7M1yx?_?KHt>|BXEnetBUU!2^^U{}J-Cvzcu0@wzo$CO*U|67FF8XcfZ*nBmY0Oe_Zf zBz2K@r3He?jovsIrLU!W5-{Ju#)hb-9#y)0daTf_EJ{b3UgjbloLh6A;T6e zKQQ70_ZO237%~5fEtlBBrId7`B<94I3%Pt;T67K}uCvr{hWNmx>`4UT*vrAvsvCzF zm7vUzx`PZFD{_yAiJ@<7T5#2CCvyU6oRY}6+0&x1o_vb(lvON~cFu;(u}@+WS!<-n zO#hUsf?5l$P69=qgfJ9VVU6{OL=mU%o1K^$3tsqB4r#$sBuosKb7V{M1dLD`-_KME zC@(IqufG5-ZRr0Uw%73sRe5I@OxS@C%_-pIbnjP#^73wxu!9CVblKGnbbbpX3|Nwz z8;gSWe)gyGVDK{1=;M`Cl+TE|~0boXb9*)Kvm@4BV_ z;m}Wqr^GAO+g%UCl|S~zwlKytK$H~bIDv8)fd*h>qJ6QRfUqEgLVt1r{^>)f(9RPN zzY(_by%xf{G5|w8J1aKnsnj!LTvz;Z6J_vn=&o}kAY%pMaKbD+>23+#D0Y(6^v$Ex6&U|0&7w(ef)+iz8q}-j-{Q7LiYp1(e0AMF_~pS~V6N z-&251c`d9Ra#yL3t%g@kmmx{&DO^#spXV7Y&L?e|ni72N=U&dFq>b#QgL7l+g(*IZ zB$d(0TP$njv)X-NkMVUHAVZ>RSM8Yv>1%Vd?h1Dsd6;h@&j0Z5bz}ngyDo1jsl*k6 zCvz(p|Cl6Yh}ARkoGH>**1Y5?EFV(;blrrxV(5qZGPlb49G38RY(^cp5~ zTud)?6JCBO=9;2`7!Z+{@(`9BUWsX*JW|#MQ@2$O(h2Zv+De-^#p42t+C%X#p^iy^ zR=@m^OyRRq3`z^`$GlrCw+~~~@}|!wni?P-w7X%$t7Gs%EM;B>`6>qgzpjS%RqyFI zsr13fL-ZPL5JpEVvd$!uap$1yx+oA~0bG7$q6aO(j@oY}R%i_IRVvt=;fe~PVyXQn z77f3;Pe7|8DA=MS7P6IaC22yiXe^B=hZM)z3q)-22jdnPb+53{zCa7)Y+wh4EjiZA z6*Bl7U>k9*8cII0N(z&y_SLD^|H^3gRt}Sw9S+G#lm0nX7H+-1u2q~Mh))|@CAyqO z9N3f0DM@)_RuI#vk8(d}5+}MT4e>uHd#4~#g04%u zZQFg?wtd>RZQD9++qP}nwr$(i^gA;bUrc=eO#BgQu zYkQ$#m3gTuSWPAM*K<2TImjg4NEQnWH4!duyW;wTNDz<4S)e1-hgu{F3ao+q*mmh^ zHlHnlQn5%8X#csqWkX#)Gb)wdHAE(}GKgi5WuKk4hrpD#hASY=YY%ti+Yolt36o4o zCYjXdKtK`;9eQNYgqKm`#B;S-ZX|iNRmqyus)d{qJ`wsO;cTo@GV;Zk{|N!CeUlge zg__=~p(Pl(GEd6PB-C(yH~2K@C?rOKMV$d1oVu!`ErSGVH zjzfLM*)T+Qy=>>(8i8@0l$^ zLpi~cgtgo@TvR?Vcp!8q6zuCkrP5y5@-~>zSa0>GxP-zA<~eH3w1%>3ut6yKk4nIv zdxnTPs*D4y1k3wiMExaVM%b0HX80I4R$kg0C1RJzT7T>d7zxP1nRL2e@L@|-!7~o@ z1DDVftv#0P%^G#WZ*uT2$i`Uc@Peoj{DC<*?3&(BV6au=RlK5)0X%*Qb$q82eo+sy`0@i*%x-pyB%PZoz$CA6q zCEkM;KYDVu(OBm<{@{Lk@KLoj!owaO$(&$BI>8T+NFg; z!fH7_t4q{d#SP9Cewc8b1&otw$-e8GCW*cc(!HFeGdu;ROeT*wW_G@jjG|>pHvaDB z$re;TRv3z?!~axjX^cQO>}x~)no@(B0?}K^&=6WB)dim$7PW>I8|na9oRia~saaAQ zYGw5GSsH3pYHRyD-Iw~aRjJgG`G&J!?aih*hEy1eS1r^MkPn=|hVAWwfe$bi zU6OqpJLiPIiTm1tzG;1=LDQ`GHb?^4z1(T3PT&F`aMVy0`UvL>8m)RsTg|k+&di{P zzg*E^DUO7;C*Qo+b2+cuBT?nr2zuwK`zlo6$31WhPS;-V=URQkR%>}J5&=8O_r@Vm4PGytwbJFi?i0HEB78@9???OuOuoZU0VJq0WaxM5u zZT6~5@MZ{(`c!5+ZzccOH~XwqRD`TnvfHCDr3)|4xI;Ova>yVg)Ex6kY0VeJWkOr_ zNoq-PxwyBqwAOPQF>x#$%F_b_Q2g%(ga?PvB8QL|(bE`NzHB>0M%pQ=natqJ3)%i@8Wkm4cmKQ(kjmjo53!%9=R!|Z z(GRiHwdR(|g3+^8xzGtiH}<{~s{xCQA;EGj;%|V6W`K)bhi6)ca8iqiZAS}j&x>sj zNIRMHBsvykT-Q>0Ga$S?FK~1C5SZDDFOa-14oA=sHKFS3M?ugPjqPFD@ z3T{=IV>(koZ{yYiZncR+CS5^~>y{I46}FOnBZ$qR*T%%}YFLw9ucfZ{dH)KhmP=jl zTmCiXUD}20dKdWbSb3DN!#b5{tqY%MEkM`KWI`vV!5E&?R#3}C zvU($S(P}MZnhT-j&l@(ESa*L7N5S{-L1|CF?eBoha&f1wI_(ZThSPgw1NN|8RQ&9f z$iYT-_TUQA%VK!$j*lAGXYcGaLloCX|BT#0d#KQ9lOhwHo)(dI{dOUj+<>6@!R~fo z!ae`X`>>NlivagUP>hMG4$7Jj>EbtFJMuMX22Q3&eAvWTi*XBlh#!TmBkM8KBYb{F z808-9wi?Wm;==0{*_>Xq2SAVGy*=Et4ky^`kY*TdFF+UMDC)qNrr0{Gkdwip*2hgm zIq^o-jx^{z;G8`|72+CBb#`a4qrcH+vlj!rX`f@OroJ732E->AuJ4T@2kDezuPNK? zeb7>D3rJzI){%#J)i=nW0M&elRr~3KWT4oAO~u`I@gd86(S_RzArs2}pyO)2dX`Z- zUg;txD0Z9Ma&aXqKJM}?luGy&M7pq$CrmL*en{;7W7~o4UIy-TZ?@h%5937pmyO-v zbY-f3%M{2&(AGzH3&c0$UxPkvNz3*+q_c~zehX^=3H?n>cT1*m3mv!vc;hB+vgiki zczYio`4t}BO?VQ<-X@3m=*}rSc<(QYc-Xm2lipV2ynuekoiwnm)T~Pu4ngIl;sJrH zWzv=hS%q+56f>=Uf4xu#-`R&rn2zMi41*pl_=3aqBWGcgg!J&+#DHMBoPyk9$Hy@@@!Di#<9i zhna=I=F!?*l+s^AXf5&H09U!& zHY0hvX$U&=)$fjZ43izA*4H4+Uemv+H1$9r-CiD}*5E|duu;IiwmFn?W=i&T zc4_3*-H;GTZO-+AhOI{AHXPxXU0=j-48e-Z?Vq);o*jD98CI(cXD50m&{wcZ#@g_C z8;;J`Y4oOFX6Jpbm~;28>~ru$b?4E&QsYsg)6@T$QiEovU00;1O1&5ER-uPDrDbbN zv$_F2$VF{y`=D@F^h_w3dV7NownNRU*XMHz%4;>@!Trj;lDM|(O25ZP3*$|;@XQ6> z@a0ncoP(C{h4{sSE6$(GLrk7U^?vGURA&l2>qFih`-8qe@dNZ9#V5;WVFmavLDkUw zzowi2PsJzG|2y6M-)Zu)QX+hClu<`~*w&05Qjgc<)*A)*&rA}Sz4-Gef=COk$4RZl ztt{o8>eFmW)-DShGU9#x;Zfw||Ml#|anowv_tg1nW_Jh#Z=<7ahXw9)%Mm+G(C`;G=X{M zZ+;X#VTL22zhOa%+P?&aJ$-@x)Lof9@ravAqZXh}WqXROP85w5gmz;5Ezo?EST!?= z;euly^gM5di6Po0;JD8E=+B_C+hb0oD%VOdmqaO^GW>yx6?{BD9BFop$~jI*rci`# z&rC50RwXW|kL$dkNc2A0x>}rvr~zzXrf4RS!!)l*LK1`Ks_732~!i~i8Sav zQ-_`oi&=ZGd5QmJ{@5$@~IGER+Iwfnx zu9xKv&m=RA4j$i$26vZ!2z+c*1M{7Hw5IWg7Y6bOVTg(M?kNnQ#FE`#-w*%jnDF1` zvZMRf-Lu{H__zv2Y}k?eRaYM7 zfm?-HrcvX(x?oELCzgz1NvC^8e^l7sUN0`C<|RMF)fH3+P-neVl>*~h}o@;Sj2lFcF5fuW&jC)Uejs7nt$5W0fO)hA(18biAXE)da@b;g*ZRzXLmQ%+R>`axsN6j7sH>K|gDl6l9MaYMjzgtiLb?;~;u5H*Q za{f;r`FmfUm%?L?!YXDVKIcb>@CQ+!`;%VlJ5&BQLr~wJrwev~Y}9SC)PL7;qxY

{O+` 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υuH<9|^0jzN~S*|u<{ZQFKM+O}=mHY#n~wr$(C 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 literal 0 HcmV?d00001 diff --git a/localrepo/com/zaxxer/HikariCP-Log4j/2.4.2-SNAPSHOT/HikariCP-Log4J-2.4.2-SNAPSHOT.pom b/localrepo/com/zaxxer/HikariCP-Log4j/2.4.2-SNAPSHOT/HikariCP-Log4J-2.4.2-SNAPSHOT.pom new file mode 100644 index 000000000..4479ed0f2 --- /dev/null +++ b/localrepo/com/zaxxer/HikariCP-Log4j/2.4.2-SNAPSHOT/HikariCP-Log4J-2.4.2-SNAPSHOT.pom @@ -0,0 +1,443 @@ + + 4.0.0 + + com.zaxxer + HikariCP-Log4j + 2.4.2-SNAPSHOT + bundle + + HikariCP-Log4J + Ultimate JDBC Connection Pool [Log4j Version] + https://github.com/brettwooldridge/HikariCP + + + Zaxxer.com + https://github.com/brettwooldridge + + + + scm:git:git@github.com:brettwooldridge/HikariCP.git + scm:git:git@github.com:brettwooldridge/HikariCP.git + git@github.com:brettwooldridge/HikariCP.git + HEAD + + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + + Brett Wooldridge + brett.wooldridge@gmail.com + + + + + UTF-8 + 4.3.9.Final + 3.18.2-GA + 0.11.4.1 + 3.1.2 + 1.10.19 + 4.5.0 + 2.4.1 + 1.7.12 + 2.5.3 + 5.0.0 + 2.3 + + + + org.sonatype.oss + oss-parent + 7 + + + + + org.slf4j + slf4j-api + ${slf4j.version} + compile + + + org.apache.logging.log4j + log4j-slf4j-impl + ${log4j.version} + compile + true + + + + org.apache.logging.log4j + log4j-core + ${log4j.version} + compile + true + + + org.mockito + mockito-all + ${mockito.version} + test + + + org.javassist + javassist + ${javassist.version} + true + + + org.hibernate + hibernate-core + ${hibernate.version} + provided + true + + + io.dropwizard.metrics + metrics-core + ${metrics.version} + provided + true + + + io.dropwizard.metrics + metrics-healthchecks + ${metrics.version} + provided + true + + + simple-jndi + simple-jndi + ${jndi.version} + test + + + + + javax.inject + javax.inject + 1 + test + + + org.apache.felix + org.apache.felix.framework + ${felix.version} + test + + + org.ops4j.pax.exam + pax-exam-container-native + ${pax.exam.version} + test + + + org.ops4j.pax.exam + pax-exam-junit4 + ${pax.exam.version} + test + + + org.ops4j.pax.exam + pax-exam-link-mvn + ${pax.exam.version} + test + + + org.ops4j.pax.url + pax-url-aether + ${pax.url.version} + test + + + org.ops4j.pax.url + pax-url-reference + ${pax.url.version} + test + + + + + ${project.name}-${project.version} + + + + org.codehaus.mojo + exec-maven-plugin + 1.4.0 + + + compile + + + java + + + + + com.zaxxer.hikari.proxy.JavassistProxyFactory + + + + + org.jacoco + jacoco-maven-plugin + 0.7.4.201502262128 + + + + pre-unit-test + + prepare-agent + + + + ${project.build.directory}/coverage-reports/jacoco.exec + + surefireArgLine + + **/com/zaxxer/hikari/proxy/** + **/com/zaxxer/hikari/metrics/** + + + + + + post-unit-test + test + + report + + + + ${project.build.directory}/coverage-reports/jacoco.exec + + ${project.reporting.outputDirectory}/jacoco + + **/com/zaxxer/hikari/proxy/** + **/com/zaxxer/hikari/metrics/** + + + + + + + + org.apache.felix + maven-bundle-plugin + ${felix.bundle.plugin.version} + true + + + HikariCP + + com.zaxxer.hikari, + com.zaxxer.hikari.hibernate, + com.zaxxer.hikari.metrics + + com.zaxxer.hikari.* + <_exportcontents> + com.zaxxer.hikari.pool, + com.zaxxer.hikari.util, + com.zaxxer.hikari.proxy + + + javax.management, + javax.naming, + javax.naming.spi, + javax.sql, + javax.sql.rowset, + javax.sql.rowset.serial, + javax.sql.rowset.spi, + com.codahale.metrics;resolution:=optional, + com.codahale.metrics.health;resolution:=optional, + org.slf4j;version="[1.6,2)", + org.hibernate;resolution:=optional, + org.hibernate.cfg;resolution:=optional, + org.hibernate.engine.jdbc.connections.spi;resolution:=optional, + org.hibernate.service;resolution:=optional, + org.hibernate.service.spi;resolution:=optional + + ${project.groupId}.${project.artifactId} + * + + + + + + + manifest + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.3 + true + + 1.7 + 1.7 + + + + + org.apache.maven.plugins + maven-release-plugin + 2.5 + + true + HikariCP-@{project.version} + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.18.1 + + + ${surefireArgLine} + + ${skip.unit.tests} + + + + + org.apache.maven.plugins + maven-source-plugin + 2.4 + + + true + + + + attach-sources + + jar + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.10.3 + + public + + true + 1024m + + + + bundle-sources + package + + jar + + + + + + + + + + + coverage + + + + org.eluder.coveralls + coveralls-maven-plugin + 3.1.0 + + + coveralls + verify + + jacoco + + false + + + + + + + + + release-sign-artifacts + + + performRelease + true + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.6 + + + sign-artifacts + verify + + sign + + + + + + + + + + felix + + true + + pax.exam.framework + felix + + + + felix + none + + + + org.apache.felix + org.apache.felix.framework + ${felix.version} + test + + + + + diff --git a/pom.xml b/pom.xml index e02a3baeb..f3b276c17 100644 --- a/pom.xml +++ b/pom.xml @@ -80,7 +80,6 @@ com.comphenix.attribute:* org.mcstats.*:* com.zaxxer:* - org.slf4j:* @@ -164,6 +163,12 @@ http://repo.mcstats.org/content/repositories/snapshots/ + + + local-repo + file://${basedir}/localrepo + + @@ -171,21 +176,10 @@ - - mysql - mysql-connector-java - 5.1.36 - - - org.slf4j - slf4j-simple - 1.7.12 - compile - com.zaxxer - HikariCP - 2.4.1 + HikariCP-Log4j + 2.4.2-SNAPSHOT compile @@ -193,8 +187,8 @@ slf4j-api - org.slf4j - slf4j-simple + org.apache.logging.log4j + log4j-core @@ -557,9 +551,7 @@ simplechestlock - - com.webkonsept.bukkit.simplechestlock - + com.webkonsept.bukkit.simplechestlock commandbook From 6545ad3aea4b3b9a35a3af33817852189d76bcac Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Fri, 4 Sep 2015 19:49:33 +0200 Subject: [PATCH 06/10] slf4j log4j implementation enhancement --- pom.xml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/pom.xml b/pom.xml index f3b276c17..390d04eeb 100644 --- a/pom.xml +++ b/pom.xml @@ -176,6 +176,32 @@ + + org.slf4j + slf4j-api + 1.7.12 + compile + + + org.apache.logging.log4j + log4j-slf4j-impl + 2.0.3 + compile + + + org.apache.logging.log4j + log4j-api + ${log4j.version} + compile + true + + com.zaxxer HikariCP-Log4j From 1f66a7474d5cf5f83295bfe98415329bc873dcf6 Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Sat, 5 Sep 2015 00:45:48 +0200 Subject: [PATCH 07/10] Stuff! + HikariCP Log4J --- .../HikariCP-Log4J-2.4.2-SNAPSHOT.jar | Bin 125868 -> 0 bytes .../HikariCP-Log4J-2.4.2-SNAPSHOT.pom | 443 ------------------ pom.xml | 69 ++- .../java/fr/xephi/authme/DataManager.java | 11 +- .../fr/xephi/authme/settings/Messages.java | 13 +- .../fr/xephi/authme/settings/Settings.java | 2 +- .../resources/{ => messages}/messages_bg.yml | 0 .../resources/{ => messages}/messages_br.yml | 0 .../resources/{ => messages}/messages_cz.yml | 0 .../resources/{ => messages}/messages_de.yml | 0 .../resources/{ => messages}/messages_en.yml | 0 .../resources/{ => messages}/messages_es.yml | 0 .../resources/{ => messages}/messages_eu.yml | 0 .../resources/{ => messages}/messages_fi.yml | 0 .../resources/{ => messages}/messages_fr.yml | 0 .../resources/{ => messages}/messages_gl.yml | 0 .../resources/{ => messages}/messages_hu.yml | 0 .../resources/{ => messages}/messages_it.yml | 0 .../resources/{ => messages}/messages_ko.yml | 0 .../resources/{ => messages}/messages_lt.yml | 0 .../resources/{ => messages}/messages_nl.yml | 0 .../resources/{ => messages}/messages_pl.yml | 0 .../resources/{ => messages}/messages_pt.yml | 0 .../resources/{ => messages}/messages_ru.yml | 116 ++--- .../resources/{ => messages}/messages_sk.yml | 0 .../resources/{ => messages}/messages_tr.yml | 0 .../resources/{ => messages}/messages_uk.yml | 0 .../resources/{ => messages}/messages_vn.yml | 116 ++--- .../{ => messages}/messages_zhcn.yml | Bin .../{ => messages}/messages_zhhk.yml | 122 ++--- .../{ => messages}/messages_zhtw.yml | 122 ++--- 31 files changed, 279 insertions(+), 735 deletions(-) delete mode 100644 localrepo/com/zaxxer/HikariCP-Log4j/2.4.2-SNAPSHOT/HikariCP-Log4J-2.4.2-SNAPSHOT.jar delete mode 100644 localrepo/com/zaxxer/HikariCP-Log4j/2.4.2-SNAPSHOT/HikariCP-Log4J-2.4.2-SNAPSHOT.pom rename src/main/resources/{ => messages}/messages_bg.yml (100%) rename src/main/resources/{ => messages}/messages_br.yml (100%) rename src/main/resources/{ => messages}/messages_cz.yml (100%) rename src/main/resources/{ => messages}/messages_de.yml (100%) rename src/main/resources/{ => messages}/messages_en.yml (100%) rename src/main/resources/{ => messages}/messages_es.yml (100%) rename src/main/resources/{ => messages}/messages_eu.yml (100%) rename src/main/resources/{ => messages}/messages_fi.yml (100%) rename src/main/resources/{ => messages}/messages_fr.yml (100%) rename src/main/resources/{ => messages}/messages_gl.yml (100%) rename src/main/resources/{ => messages}/messages_hu.yml (100%) rename src/main/resources/{ => messages}/messages_it.yml (100%) rename src/main/resources/{ => messages}/messages_ko.yml (100%) rename src/main/resources/{ => messages}/messages_lt.yml (100%) rename src/main/resources/{ => messages}/messages_nl.yml (100%) rename src/main/resources/{ => messages}/messages_pl.yml (100%) rename src/main/resources/{ => messages}/messages_pt.yml (100%) rename src/main/resources/{ => messages}/messages_ru.yml (98%) rename src/main/resources/{ => messages}/messages_sk.yml (100%) rename src/main/resources/{ => messages}/messages_tr.yml (100%) rename src/main/resources/{ => messages}/messages_uk.yml (100%) rename src/main/resources/{ => messages}/messages_vn.yml (98%) rename src/main/resources/{ => messages}/messages_zhcn.yml (100%) rename src/main/resources/{ => messages}/messages_zhhk.yml (98%) rename src/main/resources/{ => messages}/messages_zhtw.yml (98%) diff --git a/localrepo/com/zaxxer/HikariCP-Log4j/2.4.2-SNAPSHOT/HikariCP-Log4J-2.4.2-SNAPSHOT.jar b/localrepo/com/zaxxer/HikariCP-Log4j/2.4.2-SNAPSHOT/HikariCP-Log4J-2.4.2-SNAPSHOT.jar deleted file mode 100644 index 4d9c1be988b81e0dacbb271ec60a81e13dd1714a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125868 zcmbSy1CVCHmS)+u?JnEuvTglk+y2Y8x@^0u%eHM>UG6fvw%^Re&g|RW*?4;+ZrqH> zJm=nwb5BNo=lfDg790Wt1O^5MM63%>66C*J7$6WJ^5SYD4AKe`O!6WM(h}mTYK-y{ ze}PMNxVmjH?9D<3 zOR25z9)5ny^|`)t;?K{H6|s7UEjA8nt>$%-JB)&M&!ZDS0mWy7VZQ8`@oL&{Gt9z1 z4+{|o`r&sKLmEc>o@5Bx=+XIEJtW(vumFQhR$nLbnl$aYvd6MOUy4_~`KzjS88bUL z&%C+-CGl|!yMXT}9Ip@;%0NKZO>1@J3fpq!vS=xFq@*wEDnG0aQ$2SAJxl@pIU8|X zP#2UeRy1S*+l68v4DL!He~tBLmi>+WQWO3VsdvTXn@E8?t$dN(_B@VLZv!@+wue@j zWYrpaL{?cM{;PbtY=UX`;!NqcXCYAJ5L<1bdws3?R2?o#MyrJR?PJG>tM_0lSIT@( z5vt#2oUt7FE_)gVmWV|Zrd#Z_n%N^$y^$88);?07*mz_Wv!(O8*I_N53aq(TUOQc? zB8=0vEpv|0F$Qz zc=L*bwU@I7XFs{an&ID!EXQq8z+Wack)KsJgl4)yXv#^S-MnP)(epK^d0E8zZu6onfPsJ%LW6)P{a^C}_HT~-&%6NtI}jS?A6fI)?%%HeyCL%5{{Lxc2XHsD zXZlyn@&0#n69+p+Z-A$#ne)HoiT1zsBxPj-aJKrc#31Kj!EXI8Ip+FT96SE~ct>Xk zM>A(vD>E0w2@&`pW(<(McmLtOromE3SfZitP|86Pr)561%Ns|>18_+Qa6CQqmNCG3oJiblze zwF#ul>l*Twj)$L@NA>p(A*Vq`f=-)<01SR|Dw3#j+>QUb?EmwRXzKcjwS@njN!;K2 zKch+aPs=0ozdBb>JKHOKD~GMNM<0Jk{0G_Kh#SDTS zp{jD@sP0Se^IZ~6B=1OV_jn;Og4WUDVdw54IrZAnIxQl6v;09yZ(A>8)U?a4;uw!S z%X)&Nyi;1;$01YR2Y6Tb^Yyo}Q{5T5v*>7e-#e*+tDCFokKTYcPcV4&gN77r3PjrK zgG-+DVB)3(40>5=+pss17JilB+>pUrzW{$^QVa@hu|q@489;b@Hp0iqngDFeM3eJx z!OU>&paAkshH3EK7-^6sY+LC8u%6upwxp&(lN*y3UT#ER8=0V7o2mB~kQ*QBJVT^^J5THVe@Gb0=`GdeQsyEMi zYxbSH9|Zkn#XFd_@RWUqlU=Bb)E=8m7ln_M4GlFKzA>|x&-<14b~r#rL51diHzSn& zI7M^MyU$ls=dGjkti+YVHHje_K1uaKxnGc-D)=dMb&a=qxtwt4UZSb}>+W-Z{xq2! zdF9Y}(^OdI#~qnPw2BO6Sr)>P88YsHU)I}2w2i?x)ZevlydOPiU=jgMQ`OVhArx4% zC1j2@k$D=%TG~xPUwOSfcex_M zI6*8CE4CuPF?@;hG)1ma|A6)aXd}UU`RuTAlUxRPq&hRbLM&!UjJo}BU$)1swecFP z9g%0vQI5>(`-nK}VIkGSwst^nzQ5QZYVK)!jzm@CtbT8o=wgLFW~cO+s$R$y?>J-|)aCE%!+#cN{FXdrMnKm%+4Ic@Sma~m$4 zX*qRfl3JG;oGKYzZhr;J#~z--u`yD{rl_!3C~DG3z|FXZlQD4&)s^wv{LlAk44B`! z1B=oDV-tajy3(^;J~qAEbL@pymV6Q%o>s4>(J}>rNM3emlqr&&Q{sT&38AmDf`uxo zd8o{A5=muZ+l;Z5i^V8VyT&rdLKCWT`6EAqDsSTu7T9CjC#}Xv>f6=&Xq#JVP*!c` z1W$t_N)WZY@2oG$r`wGLrL-?Ikb7PprqF=2MF(Y&;4Q9<)%oq=y6IY|-%?u^cUYY@ zG5e-kzjc)i^fq(wW7MQwVld$yV-gj}+?$;FGAp9OS;FZ0NL`xSF4QQ$!v#UO&yeA{ zG2COVnd8Qh01Wy7D%~j+r|Jx}V(T>kl7$DFp<7zY@-5DzooCn7 zeuhWlvBlwrb;_nkGH)Yd_=D{XgUJ+VHuWCKUNIzqc3J?Y^wL-K)`~c`$LdL8G6fSl zfVtE-E!S(@>+PxuQu2US4>Uv4vH^=>k(OSY`pO}rD4UTsTYWH6@KMNg0Fyi zzf=aVBqcsw+ic5Upsx6M+Genkn4G8~almM|Qasg3(h)PH0MUd0eeb#6LcUoevgI|Y zW+IzA6pbQ58_9&*Pb;0wkpkt@lD>K$Er2;Z+2rmOsyXdA9caj8tGv)kIwrTdn<32^ zuM5CZXkdkGtIE0BFFW{S?(pR45b!nr$M$R8Ek;3W(n&#lH<~;mQL6Qjah}S=3bf2m z&D8k-oM#G&EhU{fQ%S6^1J1R@Y`j*~W+I9Ao#w_+a6_uCK3OG*D7;%j^j9IrSXS5Z&dj zic^Zh1jaj&CZ9E5EL#P1Qh*1D5HK`tSqXjrz$s?saJ1uL`n@b!PF+=dcYJzsECmj} z9p;2PFF37B@*5i2*J-#cD55SXf+;xSYYzyc40o9s@!;ePR%yLsXVQ&YX|R3Dtl}eC zfl{nQLR%arCMq^Um(U1T!LYA(e>)PI9>x>O4|d&6Z)swW*b|F|@qz!~txr5d!WYZe zFkuB(Ec71R*-nq)F+qpMa)L6wa?l*{QcXHa zQ^*UqLzV*cR_5;ay8j*8%Tu|{^1Q}ciwFJg^uxMvnY$l1YVEbZqCo+}qLt0z5Y#9S zAND9L_~JGQeGlT1=mQfS7rF>aRG?tIo7$r`mZCY=SW(ph5+oG*_&j7qO;3v8uId5FR6lNdR1Ug5ksFbcFrs=fOS z_JEKJifFSl?>__VQyyCJ>Uja!?8~vA@w^jVZC}3-guL3m(%-?q(VcF(RlQl$>ebfv zW|X3k(hA06k=EvgJCR=hB8QyLZMub`w}R+a;})>p@{#)xXqUs%o*K|_kftvAriZ+Y zds-Q_7`t4nZ(sPM!*F`aXJeR7 zLMM?5lP^bRZU;=e4Ec8dq+~R?>9S<}&>^h_YKVJ9@LUSHTs~gt0gv|HuP=Qg$Z^eP zC8M{mT9xqX9p$(}J{3^~6FBOz9M}4IV&pR;z3O6m)=z`SVm%6NwUH&7DS^|pH<_V2 zF74ceLVv%{qs&JH(w52;yl@HgriVzJ(VJjN@wkF+a*(PBn_k1^4*uK%x6XDGDHYZgAI5{N& z{^12jTEBVA$=`Bi(c2Q3W?SvZc?jHb%GSts7o@6xdD@kfjXCvN`;LjkcVXp|fY z;a$q;zN#LVf3_CoT+di^dCk4kE_Pw27v%&OEs?nu!;Ov$neh<6^Or( z;V)$Smmt+&r~hX2{{i#R{#R4Wf5UbE?aPJ#3FA=wA3gjBKyrz(I@38W}q zLqUUy`~xc5C*H!+A7ac5oRcnq1S<$ZA%P`j|Ju#k-rUrk#=U*EGWVFs+U*i-dVbxX zz3##XG5;;=>-eox%`E*juu0a%2>P8DGhNjQ5_32IAWO|RI?6%Si4s#&*@**lx8R^t z%{M;Ert9)u@Cp3sJ8{oPM3k(bE%m0j->QleA*PVV`lB`ss5=3lyBt3VjYIh*wZW4r zaY_?@*QEsBGaH>fnX6D)nc>_biNGf@=~qeo_LTiygYJ6W**RzGr;b@`)g=<~Qlo6Q zE!VP7`P#2wyq4L?Fw1LyIwU2hgebo5OC`q6=+7{N>(YbziR-(@-8Ul^&~{C;=ZZ^z z;-y24dQV|9Nwp`Ee&4alxP_2#^(Q_ipO85LnVa6S0~R`>=SJ$TOKET4sHn0E&#)+q ziWhLq01C#>@yS1OOtY_h=1=?p|NcpXhkli(r1a0>Ndu~gI?r{(?n`whpXt#*BL-!q zT$T%2V*3nC?>%ConuoW%$Ivx@UtW`wR6#<@RHs9laoyq(vQwe z_93Sv4A-h&waB&RTt@vIsi&`dKK#VPBa$SWp1^c$Z?DAo_@iMurn`PdgUWkl1HsI& zl-Cy=!Ija`JM^=2F}jJ0Tc1}?V!2avUthAklr34TMxdg`E5^Zb30+?0Jsi|J!&O<% zN?VeMvMl|Ms*PC3scp4g>Ku6wn?!opTP zMfZ0bdrK?Vt`f# zfifc!)QBPP2z{^s3Y4pgE2*Ku`P@*ewoFvVQ7=>|azZU9@NZBLFPygG#lW~VVgB+} zNwBbato)K_m72-Ig8FrCG7MygmBTo|#fXxoqdGyP&wGQDEIm=7TvKaAg%+;`(J^L`DF`I$i>0=d4}?ABJ3Z7P~16Y+p(> z@I_HSs8r!VL#F2nko3=p5o+=!4N%qfEg`zE%|u zMdn@ZR7E6~JA^xxq)}I z3gd!2*w?YKw5zg(TbSU2&Oo3fQ;4;>*@&PEEs}V;07@0M_Glv8%OEm1HS^-8chkhE z=uZh(WVB=g%LK8=AZ=hJA6tMui~>8jXJj0bhA0SP8su``t#|^FJIo8WvQN$(k)9Q9X+l!6c3g+{{Z01@@9mTlZ zHdl+NFOr|M^;qQ13j_yQN>ixDs+*R^=9IHJ2V3rpzwcx#2%U!~yiRVpTq-CIvu^B+ z0f=gsnPF>*u1_LTioK4QV~rA|JxDKx^tKANwgXLVbw)I+zhx8e785S)cdqUh(I5d7pXd>}^k zSxpVwi$>F7GY!e1@&M;Da{z3+jvPlkg>+UJ>)VZ{Vr1Y=hDwX8S=L7}?72~oq9*0q zSojl`{Rs1;n|4A`09>*}JWf6_5HfC;g=t(T&a+P^!ol{qh9=u%;gq1Si+WUvC;CVU z6W9hvx-}Suk`sFNyGd!27(31ok-`=dmtw};ep|I-CSq&}d|cR>ikF24DU?voAvFkT zk39D_TJ|tx`QLL$(Q33SOVll_-2Kk@86Nqdt2&M1EtC&6Vvj=)e>jy(mT=-RO9OcH zv3^M*EX2*9vn|N2jjgFilKa|>dxN>Qrqw0&yP@GdM;Tyo+oVWYas zhKZ%B399Z|db!I&$xv-y$T^J{FXG)3;5t?v=Q#?uIpi~?!WD6FWf@p&rI!`{aA(94 zZ7|9E!4w^ujo8j@+@8~f7Ej=?WI^3fIO~re?MHY`U-LcQ0V%mDH~A!~*Rg|hg_~$T znXZRl-Z)6JHCYOdEGJ2CD+c2}_rvkNU3|A%Qm&=CvB}+7_M#>bOKR4u%=93X?-v7e z*mO=NVDembn5t$gh?#|7{os1CUint6SEtpg6s>O3PaW{;Gb% z@;1Wjxjhoh&Wg6=C;>Hs!UJXQ{C*R)E%0!Twydb`r8|6K^LQ36tjjuB-V*r)HG`@< zT;I|W%nYSWIBgIZ|C8qqEC_qVo zUg!xL9HZq^zeA`HKTK#IKjO_|CWEDDmPDf~*d^?Ea5U#P27gUII818Z(5ba!Nbbqq zD;~d;BD`nL1h%y=s*v_^G>1Q&kouwQ8ogX6Wd%+n-Lf?$e%y?*{j>ouN?b?;F6Ltc zP-;w(M7rUV%;IUZUXYn*~=6(=NP#n zW?vvi0a)u0b0z`x`2362hwB5}5qeOAQa%^Ty#5buIwxF@F58IWXyq3*Qm=sBK+@tU zYy3F8NMZK!Wam9rj&U>VYBTGF^!Yu?1HT%KL@z(3Z}L?-Js%TP?Rc;}u}p^+mbX4C zebnV`(OVOqqlnpCV#?j`DpsLt-SJ7@LUO}-d$V{Sak)eV2gtXQv5@0jCz%S#X_>YC zf;bDF@O;7a6`1krZg>udR|wWg*f!&4N;T*}$0ebk_LTv$bwreQaIdW)=-q$JYHa4s zYku*trnUL+2y^FNy5rW2q$eBdoGHn)YA1`z)WQ*Fa!VpF2AiY^VWrPF^#Pb&`hv`-DBeEj%r$W1*h876AurI4vjcV-qWCp$4>BZ^hDLIyx_%MR=6NZ z%F#B=Isem45`E!C#ZthGxyN_d5f_PuH+tuS9Gf>hOC{-yRH}$4ln%`tzTk-+l?uI1 zAGJvu`>RX$P@pS4DXu55K^hsbz*2M~`)AQJ!@(59R6PrYmA30du8^Gwa6FD;`I9G! zEoi;$jwar!D=#mcR_k8sln36ol^bLgZZCrKf(Gukq@96o}0 zpGQtvK}4j6f9QlEB(9Src0r_4U2+FO+($2Wn6-{ew_A8uLm;sBYTGr!v}ZW~66(u$ zvdbwTbQ~-;I_}de(olnR_=x1Gc#LiJQT1Vi*PCI&%Y6kOfF=zueDWi!zxYtL+wDq) z-`4mbCr$kj$oRMuBSVZroeuUqN-Ov4w~Hc3xD65HGb=$0Wwu%ix?r#(tZ9J)(SdTPwJ2%C|M}{ zPMW4&*-y3!^VP`^_{U!$Dk$eq=#lwxt81IgP!g=#@tuQ~Ejm{9y)EpJ@{cC+hP6`Q zpV?JxU9h5WtP2>LNG(t^U&h#ijT{pBN@-%>r{|6I%2IH^#l?R+wHqB{jD0oCnEmnr zze9>y_fDx@Up=%^qDH2CyiF-xirR!(@I3cOHh1ct%lANhV3)Akq^UH|jHOiiKq?8cV7#{ZZ;j(&RrIszvit8j5 zwb-$xSL`LtP-2lo%+Vw~DG}KSFL~3VFdi{j>>6kZ_$J>;Dg7ppUH1eP!#TC)1g)&> z7l%i%x~A+5jCd#4aE6j$%OeX}#9uajqfa}J{vO9NXQuU}sxwco+!)H3l>*{!W8%J6 zZ;wg0aKks0UP08+!!BmuHY61WwE8jaux1t=-X%YQqW^hdAVy(=Qwdg}G%75V%Yhi| zs_r{Ie}@o5TMa`2rM=R87)labOJP#r__u(DZ#8;*G-g`&Vm*fu2Ss+`XMR5^&Kyw{ zKCFpe5)O8fG7BhU2pG=aSMAkm*0S@LvKk%+6LJ6%34nz6`(b`4wi12PzziGJW)`+zrfAd42{M2G9c_&lewOS6Z zeq*fq6RW<97%uJ?U(Tcd74arm)w5ekTz^5X@tLnK^tT*V^9HE;lcO$Vyc`dwmyMKE z=s#6S+{U%-I50{Je$aY&@ekVs`%}*Eg_IDXyV(N=7^dGPMA{%KX`!WdAtpE7d zBY+I|1Y%phg51V;2W~Gzm zw(vo<@WHvz#R@(h0C$V96Z%Y_`SXA<;l>BBbj8_jJOA=sM1l=k%M_=}0bIuxbfUI; z1G-4X$hYtjD%+(9T&e|;LYIb%;e&}bVcwpkRSNi_i)7l2KL(oZ!VI49&Oq{&2uAAy z-mVCD1kRJd%9SwcICF>_xMczQ%H(SazR!vBsL4n&D+ByM7Hp*Yg5dzN8!LOwaCFYu zMgiz`mPul0nZnR(+mY^(L|!|{zWi|l+8VPj?U;^I3|$0{4qtxFr_?i0o5`T}MIXbr zJw+=8rU~HvbOw8p8+JP_l%@}9CD_z4b+AG8joF!IPq)3r!0?th*rZ-yIB9ErsdbIc z+tA&zw`<_FlSNO`ogmE|;@wiTrxYl*vqGo^8?$2yq7}_3+GERr8O@Jk8P%w~s!=lu zaQ;TLCth^-iUS_GAm>VpIGJh(@#Xa6-`d|o={f0w7ZMysLVu7g??~H|n3M?fJ747- zK^;hv93Bg6rB!s(XH{U;XdJOgQ)2@?D=Wi|?(w+#$M;NBAw+t4mZ&l&yMjmrj`L?o z%Q6%@Mrp4FG-RGLzU>}ja24xp9mXK|EL97fH2A`z#N&?<&?ca|hiDmtj-w*r1y$J7 z!}m>I5NJ8u((_dJAs|&NO{Bnar46gli*u@8x5!x;9HYqLgGDi@*U&Uwa1511iQKjl z1!cO0=VKK;#1#Jc&I}(ug%`BG{0^Ae=Y!Z+p$R^hibxYcRnsc~WnX~_t%j9ZXQeSI z8^l>ba9PI%Q=p7nR)UmhG=|`V8fic?zjn>-Ui2dC23Uen`MP{q5{SE(8?WRyHac+| z#VnN_b@;;Rl9~-^ZI)%5uoPl!8!Z%Nr##TK)7~hD90t~i*JwdQ+JdLlvk@lI{k%(W zbZS{u0vR4zgH=hKc8k8$qg_Bh_U2!$;p4q<@_;J4OTe@uGCM{i*{ES8VWCA4>Hy^lmSlt{SCF?OoIr<__-3QP{x*V1Np5$z2x91W)V%(F~-Dr z68?7NktZ0MIVp6VpPyKn?_x+_oQ`_h*`#n&lbyQau$@wi}cOxP* z6Cz3l=@xvNp=I+%ZM1Ug&H_QoP+t6^Xr9+Pjf|^eKdJ&o(sEBS9koYYtqyc5!XWR5 zO~jgI_2<3?Qp+yrOdTlFy3{Rv-rGgw!?sfWv`!nWYouo{R-RfXW^nUCs}=uKQ6k1K zut((cSCj*hzPdYi{x_*QwswwljL4qf!?5UkFs3&AglN%9epI!IoWM-1=p_2oo zQzMjbfZq^#ymo?aQL4q`WdyevP->h);n^o(w5@6F?T-y9x^A4UaXMR-LX0jmI3w9? zNmEwRtQNQ|)Yua&hzhJ_P`f}2V7SG1#^(X4T<~LlWU5=ej4_V#6G-MP?1Awvh_ri^ zELw8AQaM-Vk{xrIZf=ztlH}wo66qD_LtF<%Px_qw$(i>#; zV>32n-=nLLT-lQ}l?bOz0Gm63Q<5a`tRNMw+0Mc2tJ>ESZZEVdB(d(bO>0SNoX4D# z+rpVBV^+9rkNLlkoQM-@4$PAOR4o1sQy*HE8&Tk!_1j-G5;8s^sC=cM;ji zAUEv61t!6C_&I+R*UBACc^tCOky4W6IY@*z4+ERlMzra#3GA}Z)YqJ?k~a3A82F00 zHOG>dkXlWdB#{gfNh$fP30pK|fUX@tJxa(0Qs{+qs7838UKZ%sAXb7xiwu})D*l+f z3Q5&E9&UpA-({UN!O&vv@#n1tsA*0LdDXV?lN7Kz-Np1L{ultlSrLi^pFS>|7P4^! z@u(bQOxu}c(0EuC=I9)u&}#_HnUhZv%(Mo73|@ugv@sB2OouCB6?F_BH*hYM8}wYp zz_qC^i4?Hwlll%Iq`eGQGWfwSST|bq+kTB1!UCyZ+cRv3y0LYpuqk{mJ4Z=Q#H`G0 zFx4Fk0amz|%`?B9 ze%G@+=G0zfw-3X)KB2(Wk6uTrFO-f~$%H-PLH9qfdNV@7H*^U8m5y!N%0_ibkk529 zW|YvmD!#YbNze}8UT)*)n~0Fm`Cla2Wr2^=LA6xQj)2UBZ&X8s=xCk&rx_%Iff^{#jgu4|+A^+QXv5AxB`Rxb`9_fiP|$8`@Ry!Wf#&>G+{An%AS(4u#9&Nc5E0Eq+7pD{;#$ zoGeA|U-cNk=}6!MNnbTfHN(_ben6A~Og3KdFGkm*KwU7rjgXk8dR_3hWtuH&ghH5O z`Ym?hs=|GIzh&@c{7nGr@B{i3!_Nn%cBnSk5i?xmcEt-Sei%A_m?n}3)*iTd`ObEC zB~uaXYepKQj@2(cVXRf04Hi35F;_|t{5he*t!fomz5vroGwqn=jJH*rjpUPJ#$257 zY!jVGX_qkTIyK*9ggP{&UI}dvExy(4_>G!ed>+}g5QJu3)duozf$qf3b;#eT3h>tGvqe}7KrG%8{Ql$& zW90)gsd0#=P)M0YrkiX;5_5wR2o%WbSC zZF5IC$&zP_G$-UFs+}B}KaQIx|D{Gy6E#oAk!nUv6oP8!8msegcz#l2#VMAM2jx9i zff6!V{YJO7%h*O_-*?aY66ZM!?4~LBm2JqG>OQ8NHmGI>sYd$^5Vrv8CPSTFSsmnU zh6s`B=7{@b82V^%EVouyE%|E`@wDcwWait%kTL$)Pxm?795FwZxe9vJMi zpXr-T7WrqDBA$@*w_SY1MybDe3;7ETz1bs2RZi-?>UR zl7L?orIJl@ll7rpx!RuiG&xg_x7*I-)$W=Hq+RK)4cjbX1uUk-Gn!{#x5s2rx z@n^POxlY4f;ye&XSPNY4@jhChb6*lZEyOQMy(nrT79MFB+cpDm@t+#5TVbm?t?pK1 z@2=9z@-}Du9lt&k7+@a5%L|Ie&tB3f-S?Qyt!V}YtuF%PsawyQ$D!%_tG(`73kdaY zEz!;+PrTiJz0332>l;?HBQN>tPSg)tl&3D?v4)#w(LFMn=oKGuNg`20mSTo=u^e=>e{x&g#SM32 zoigkM2UUpE{OE9ST0ejz$k6%uh+^Fa3nb@Pb^HMTN4z}SS1GhWK|o6XilP5gIs4D? zqWN#)B?fQ>s5-bgo0$E3v~o1Pj4+mQzvLUoZ8^V_07F1PISZ3afecVgK~hp}6v8C5 zX=--i+vDa&O-(a1&Qez;-F7y1RR_v-I?W4sYFLRH{B#D7wpHr7x;|FRD=RzJb^#9N zjeP6d5Sv0z-CVmqH}C$tuRVT8+nv`?b99hkTCoDG_Hg+SK6LePT+#cRLB7#APf@cs zFL(NPPBxTb^@<~Qpfqjzms_ZN^@b7>BS4VKhS7MwVP7Q#k5?zDsa<#@upXxCErz&V zvM^mU0;GIUABfjn8P|OSmM!YA_u<=M5TZWR2JgA}@S%_Tw&#exyYd*~w>vG6>7XlX z5w+X$HGe%{!Tr%>V}HGbJd~rdq0>eG52-0d*!x9RfBKWWh<#iZ{%>-(stw)>BftH- zNK!t3#NV%TRS$6B1?gas8?W=m)(9C-=}QCh`v%feI8_2wsFK}&45vWERutuvBO z1lzi~s4^H~V;!WK>d#^3R<$C`C5>k8CLYs&>va)Fn2Ad?*IHRhq~J{5wO|naz3WJJ zBYYD39CllWzM#3ni@btRLM@rOM^@3&W-&O6qe*j{VAXaCm7^!|dAL>fK^xp#W}rbF zg13=ZUG|D)!Cb6pNL#)r_ZKtTr+2kH2@ZC{s+HZELR1VD6T&9Hy&xA4)`5C`Vl}yLnS94P zTPl%V<3Q)FmeIH*rMkRP`2Nr^D5>~x5uE9_u-Yu6m#m8Chf?xqfsQEpnAoJa?ZI9> zqy&8c4KGZ26M#>h>U{#%#hQ%FWT80`XZ>hRsw+qBgNx4lK}+=K0u}PK;ZkS4(!l|k-psan9D8RjZ}M$&X8Trt zV{#PDyreT|G#06^GpWtOaHzF6Aa*1n!gkKsdxF(t!9+fEFT|u0>NnB~1{*%GWmH~1 z_WE-Ej3H9=qDfSxo9Zx^w;Xj6g&qq-Rz^~RPVXTOvBbTeyYuynjjJQ(OvBoG3-1hP zj!f6(LY{y|g0RkRk(~VAj~nuyRcQ}FjQ`YHQhI4ZjW=}(O}We$N-P#SoFm*J%%ds^00p$XKj@f4k>*((Zp3 zVdLmMJ(UpQTKTpXNCX+sCjl8Sqz$)XO!(bv^|ilUL;zDxyV44Enjg|(4+=Lx<<_E$ zw&1S(CMoc{dw0;gdRu0B6VWg2-PE7#=yZm^ORNNlFxAU>4QKO%diUy#U+_JG!L8}q zv=`AtHk*`N#J&J7{{V$ zYyzNNt_7Qn+Q{p_rT%tQ7z>cm3UDdj0bN|XCdk$*&M{hFFCBTLsp(JWG^X&_aGF@4 z>wuto(&vm=tHE)Dk+yYFE)h-R_u6^YG8u$2ql$zS})> z%`z}q>2%}Xohlrj@Oijm3`otoE$aGRNF9Os1VLWq_ta1qAN$tWdOz}YhchbS6{8!? z0cS$lWLFK>Xrm~0r7*O*MBV(`PE-EGW^#>a7Akvjd;}tR{B=Kh`R9O@%2fp2h5^>c zz9{)uRn19WD`PbfS#=nFB%p`mz^lok$1yuSsx`uekm63onLpXEN_hfPY10`*Ws)?- zmN#(W^Y*9IyK+lBKIKc`^w6ji>1aDnJg3|MnJt;P6JrrF@ew^v-Z5(ridh$YcG4(! ziilS^CHO1niw)fiCU?YyO7m?*W2D9Cqw=l4+Og?u;8eq6YBvIU1Hq$Kur$T$%92xJ{}Fh( z(3UgwL|nd#9IhPhf!;EvHwwHiXHC1qiwPE!{7;U3mK$hf zU?1Ug!jp1B*>2z4uP)jc7|ycCGdJTw&z^dSb=&B0`*Z9y+(iv+k5DorTV#xEQgaqD;bpxU4^Floc%f zG%N+aljorGdW9&to7K+QuVyYbin>4vjBr|>@9+m39I>3S$BX=^QcaU0Kf3Hw(42wI zE@3e~s3IyIWMP@A01CClL6C9_NM$PhR8$Mp?o?i3J!-S`9}~Av{aAbP!b0o zO)zs=T1oJvqX?k{2vzr8&>sH~U9V~1ZMkbaHmn7};paoh@tu6hb^H~M$S|n8<*>^e z!D&lU;5wh^y+Sff{fk7j4ZiHaKAy-=uiphhmVZX9v;p{I5`2^q1{C`BEZS>gi*a^EtjNzV0N$Q<5@nmurVV2Km|^ZNx12s;J(LYFReV^oQ;NA&(h#(WwZh&vPhDu_Jw zikqE){2MpQH;p-ueCibTH{^hCBC{bL9c`zAEQeNaANAznoxQAD;I(fw8hItnf0DE99Ssfei+m`mQjV9W z((${M&8SX|^`s3=?%=<-_&%YJ^<-XB$4&par+?p+Mw@U?Dws|0FWkPpaxrcG%ieDW z-{}|1bLYHvhX@2EUp^Q5c{~-gL0{q0Z%gK)uMf(P8e^-$3qV@o(Um~aEXc{F;GH)e zGV5oC;x05;rkNj7RKOCd(Ad1-mYcTe1HRup2-gKFo~JpP9b?$*hgRuBDmY#pV#Arv zHF%f;)3GpUZnxiJGOtz2eh5lp?qfAwQgjlDok>wKzoNu$^?HKp4||-{3+oR&RL=DMm^I; z_{XnhZmS9Fz_V!jLH7&tAGknaXYY34uaZ^%?-|Db#04V%q&EG>vBZDKWB)_y`X74L ze^;BzD2Pc*08CsRoW1@X7}RLKdf+c({>g1omMB_tItbJnKuK3K7+z4J>n!b;J>26a zRUpVtV>hv~jc3dKJ7%fW2j1>nL6aF^V@0d~9UJ~|Q8WPP@<#laE&AR)Z~v_iSwJxN zxaTh(xc0d5^LVK9F#LiJ^r^2gMv;X}JFHg=sV_W0vxTgJBfx}9I~tBHBDqOdAKIg( zsk~KIaTFI1UxL|pfvpDU8xX1AdSOD}hI04N`1#QSnGV0H+^e@Qn_1m+V1mDR6U2|F zj~-8QVfdia78KVyCfi{r`Oe}=34mWC8kxix_lLXC*k ziaU;n3t8-T0ZU}za)5J{(~aX%)zN3}W*Z5TmtJkoV!PxSY&!B$$GJ+)=HcG}$Z~(}aHy;@nODtTZk?(se({P}X~*tlZz(MuNmx0`r&wBHKdevn&`3N;OVR?XGT;PCs=A4U#WUVznR?%iXCW#dRUS$1&` zm%UJVj@xt03&zD>A1YtE$>6tT=X{0)~Jrdw~his7Ta%i zr?y2>u!mD)JFD3Gis{suj19k{)o<}~N5jOvg8B-cOBMQ~@%({?8b#|rR1ul>HR)v# zdq*bm{DU>E0XH<(h`qy5J}idRK{Wp1yG_*`AE25XAE7=67~=snWwS6M0b6t@0CJ@m&wLC)MUy-D7M%aX)30;N!ylmttq{N`V}1gYT+lQ zlhcr8%kMSa{0{f06!4cDd#K@{baa8IRV7eL18C|B58AY;4q_RcdfkJbAZ6KGkh8`! z;A6mRxRux^+wzoqGPVjN>G*2O#3kpGS{EuDUg9S|YFJf)pYOQ4P?;Mr;&RTOUUOQg z+<4L9ga(}-K|(EdUU_s@a|YU4?bd)^+FS6hwy0#nd-@HWz+9LTZ~zfPwUD{q;f``cbz)e@T(n8`=HnTT%lfH>GCKm?2Z)o*$-MR5cmY7RQ3M%!4Q3_q10;iM| z-#%yTE0(>BW0p@ut68ykh-CzVEN9%K|8lG{nVU^;POJ21IfGXpB!nS-D7^{fUB9PJ z9~pbhJh8hZ-zQM&?ny&By<#B;*oDeKYYGG7_x^5N`$k4l(ngG zR4fcRbE6yzWF1$wnDUsSj2`uX(>x&LYJuQ zH-@H94gTEhzN<_a;kN3*i>5ck-lG#1llAWc&;6EmzsHg{c{fF3ZH=O5{u2I#y0Vbh* z_3OhCd1FIkW@|84?M?Bu>Go@Pd~orKa%Ee<3D1&_}awRXmH;h%nQpcB1xC&gC#{xF$xezx+)>J2n#qT^QH>0>wTvf z`{5hRex@JXOl%WREQ2z=X;$m)>C-`Yu#BwpNzo??>{N$!E5Q5aV|lSVThyBM-TEcZ z;kYNekRWb6$I5JE1-;nH4nU*{mY}_Z|IWDjG%V!UA7>1X;r=<}{%@Q(1$%p&fA&pv zV|nF(84*G^L*he2a>H|DBcZT#9D)J_iUbG(5vo>j+2CShY%Y)-S)ky0@)6ujAW4-c zN)-WjTp);)c$xzLruVvf{GlnIv!Oe+_3|GJ!snlU}F8*s4to+MD zVUZlp_*fiY5!BeiyWiUWnRTm`DyAAdFCtj?)rC!kw>4}2#WFkdRDZCo&gha9^Y*1! zmt<+8^RrLyT$ZdUHRNz{c7!}!vv0JM`P8Zi{kj*Sm7~S4rKkUoK=? zMGN44M>xGNe%*quIw|ZdsGN}4 zoP8=`tU${a*s|$9tTM?NX<}WSrr{a~aV)H%PRVXV#FDV;rCjnU$C=JnlM9uBSL4yN zdL(e5(wr_Alla+OsfS~OpPEH;;!|1OF+4>aZ7B49DH$C{o1N968Y2^*J_uo9;aW}E9eE?X z*xRbcD?Ks-<`_tua?3ggdsOpz!iZu@Yg|%!RGDtmPmiI&f+33`szLOHZz zO5+mI9&{VW>Ivrzyw799w^=NsPRF*nZxkmfZsK|uGr)Rwz3sY^54$sUP*|Oe;GO87LoSrI@rs0 z1$dwdDe0^V?J~kRHXVP0F%I$Op36th7UeH!1m^D+8Sh6A-$Sk{7g?R5XFxKen#F^v zQz62GQlpwhgnCwrc+GbpNZ}|8T>wJ@!sZ}x@b&=C29jr#%9l29+H-f&55E^f=AE8> zMtK!>t-IiiE%GYF=J)|blvDWrCjb6+g#-*Arnj{`y@vvM!x08oP0TR*MBw?b?W;FL z`O^u@{8y=e`U#C<977~&^fou2<>szZntS95?@p6t9EBp~Q?{ATPw8p+*38Giw*wFC z!i9U{Yj!&<3}%P77yZtWG(UXy3r$9mSMML(2o7P^3i`?OW2^D!#|51K zc~(b$5x3_Rj43KvTR9iSpdmATBkmuVsFP`lKfK-utz?D_0jbp_ycMjrY_Wg#Cf0D7um zzXVLX#*HHeMv7wiE**+#8q?5@#h?caDPe{N7<6-V{iUB6067d=UQBez1m}d2H2IXH z#8GXC6O(?-L$VKQ$w8)y#e}2UQakw7n^XdvwDI;w>WO74dr=CN*zU>m+r%cn&oeuu z>U@sJ%C>c}TM@s-B|N{@EK8tX6OJX2;W zpAA)T0@EjAEt9lLcG8Psn%Y5yBk{Q#;f!AH)By#5NfQH z3X2UqoRdi^CEY;S&eN65&Vxs|AvIM;KyytyX?9V8j!9QpKL&uvPq4xv7TZ&tR@`{p z<@2{Ns;%X)hNBbn+W`8ZhV9Jjg4ScRW2OmTc=tM}G?AU`C7svp@-aSUeA^mKe>Br6 z8F~VPLTaCIlqKL`ViF5uHBQzrB~48*yGh{^k8Y&3Y|Gb&!0;yfAYf!C3`uQqMKz1V2;;lm!DV>`Q6>GX z7n*)Hsp%f-=@9Z72^1YMZN7Oobw8EEgvrn~v6om4;K*#PK3x;1IVkS3E~NUM+1kXX zU`zRy*_dd^(qDUOkbb-O*91o!x$OD~jMi={uPLmW`$}gXf6`T35d9^o`D z`mTHzyca10a}BX&LbIafmy=a!HM{L}kmM?TEyopP?QILwR$we20R?9GcmOh7?^sfh zvIcqu*q!75j0Pj~bHe4}vU01exPfmtr_7%M!DO=U^xm@FoZDOzTg{(s+Z8@U^c{D3 zV6!+Tya1Le7rPcNvkvs7YwJP{MEloN{xQEZ*faGo!;;yt1Ita$_9~}We5;$=l)!Pa zpODB}0sAaM%({Sa!4cRVz<%bM*C^trcDT4h_76p#k!LQJt2dN7?;}_G_s07KMf|I$ zD}-+pf#y6Pah^vV|I$C57%l!d^p4CUr57~pev7o1qle zF}>GG=^2eS%&ze6u^E%Z5A_GN@7W38G8y0-QBeyf20kV^A#(+_4X}2^DEyJUh1M{NzRgfEPd4;)b>1_5|9pu| zSew-z`aMxUI~*SEVUW&x?|Z<=_pLpIqD5Q$`!L_Sn6DBRBwkI&b)#Rhs>*FiZppSk zS>tK&iI)pl$u}0;8BD4xAf5SWc!$Q^(yks`vEl}PTe4biQeSD>CCGtOo(ZuadMesV z8q8-n9ls@{QHoN);;tcG1dU@<47P5md-JdYbALYu=UQq#Ae=e|p))|GGXkF8n`~7P zCQ~I%f*QrC2BRYp7xIcJB5&F%%Z)Rq;89!Gy3Nl-+t>x0MgVJBxV@4AiVoVTT|2xNl61zwFfPMO82m8-C?(g-$@8fL$r*~;< z>f&T+?EJr~1~~rZlZ5R}3?&S0OlALkvWkFM?-vZ#gyBT2XbgURt6BE8po^JPY-EpokvyR2Qy2vc&H0ntRb;8)Jr z%L=v!U%{P?g{%D*%HBrOAhZ_mfsO+78I%T*)B+Asl$gBAR)zb(6JRFL_=(+O2h>UUW8+hZnQZge z2*&w{BEJel8A~M49iYU;fN*nG)Y*aTF?67vJ>5s*%_wGQCU(e4m|$h*nb@+ zHWT}p;z0!cXVm|_a{afk%Jd&tUH!l+0&ixf@{;Y`9GFELN=8spDi=v8dW94P5Ei9^ zNCnSj5ZlyFtE-I(x8n9!fdbI09`H-W@GG*sM6l$M>+`9V^akdJ;kT=sRrgP*rxOCb zS}bcy2}8E1CnH~%dvH@~JD^-ZK|w_UZG7(67d+FJAv`b`Y{w-_tbCVA$lKVs&uP!i zv#9y@nSmd0T_pynEY}75MC8BZ22?Eld|pGG2EWgro;2PTpY3S24)cboxjX77AFG`) zkw6GE7+J7Y?>uzX?&II14T~RaH+L$POi17bK~@xn(VBD()pzwkfM9YjnWEP(0h&*R z$Xq)@yr|bJ!@uHV$2r#$n}iJ|^{%}|_nYBDGLyKJ>2KD-yZ3>r(sPMFN^@}tgL_LF zW!`8QI8QUa4_CDH;N3)#KPwyiekExyp1)8*UVY>dc&633e)R*2jdj9UIvBtSOJzoU zlM`eM3nm41ZcR~GKo~Yo5_+UP7>`SvV7R}@%9LEf8?qhaSIrFj!?|iygr$20_({F5 zK6u8TJ_T*5(9su24hdhfaM4ZVJ8^z`{#jcfNf{%JPOAV|G5+Y`7Ok*cO^hS)0JAQ}E7Z>I6tQrJrj{yVl0-?XCzRS6muTf9=#@OkV6A|0Bu?S`Fi{L= z-w5iLT9^@4kjXJ4xxL6L`&e7&zkp)iaMA|7{ZYzS1{$X zTVriodkje+)lxO6m1DoKs-+QhXFQQ|D8ctKs*QT-TxcnyS$jsmI3n*Vn7;?# zl;^CZmvJ(+r6N%FuCKRLeEhy4cQ0*fnLyj+(r@yfOjv zv=e9U_bJyivmW4F!$QM$-CbaQUeuh~1oE{cF?Em}7T?`{`vxdsszV8WeWT@Hal(_l zJJYSSIqRsTuf?fD0{+Wg6_SpVQwIL}owle+DUHM<1!GWcGRG{j&v zcbx6-Hs{Yl3+v^(<6r)hTXiVdVm))Q+1zOg&q4Ykt^NQjADWrKrHrx`9K07^+aevd z$ab2GV;J2V@~H9$SU1wFD+bEg)^p4w$(bgcTzzI%^Qlvg>x_R?)8j_Pa-Syz$->?& z&*d4)1xKzZ_~sdC2L~nwg<-iVEXMb%Vuc<_e}Gl?H&{78z}gkEExRpbn&I;E{~%Wn zLY*b@t)lLEi_^@&)2IyTLb1dTauv<~AXn($Ri) zHDd0uTQT!n9I&NH%1x?75O@DL7K94c_f`A@tVsX&!OHR*Gp>{69rHppWO_>p3u5?MhKSjxoH{opj~gIkT?AAg;32k0i7=NZVt zxvLa8st(z!MjAEVMlS@jQ!wZ5;|3Is&?zTD(9!Su{^@kD|Pd500WSGRw zJEyw{-DJFR0O;2pFKf@QEx@9A4aIMc4aG#_QEs9A62_ZbmNE{f$U%m?mLL2savl9Z zQ^)=@%~wg~L~ojXFp#!E2N(agxk#xzr@dqswAp&rZP=Q6d4VC078dI#OIcdVPhikh zESO{zo`u?AU06DCHP}ubg3>g@#m}(%W2+&oC8kz zY2LHA+|6#_<(@Mf7Zj(~NKs&{R3`=nmfC1kTvA-rpd*hQm}VdO(VRKQ>^yR~i?adm zY6xLWq)69Qd+p|L^jdu>YT6Y&b;4h_8%-5t1XzRIrmt{Zb88j2fEB1O5Sg^!x=Es! zaOL@qnlqU!!b`>zBHHbt-Q_{#_Q-pqtvG3R?Ixb&ZoQalwWdCk!!kpU5VSkq#ZZK$t6**f*g-W%ig;i@o?RT9)HhBu?=~PGRoKcgbrg4t!@{ zSRT~gx&v`og4q#rTsXhA_23)f3?1Ra+67p%&z^{G8t*S$b^VB?z5$97*ENPZsPO>^ z8DwRR`8vBDvY)Ot2M4=!s&HaW3;0I9WJh8SFUnm6AJh+p$b1%U?A8k8wvnKFEG z=RfBV&JI@Glbr1aSQp=#tV8B%tNOV7Gr0U~LT+Z$uc#&;D26zgroQ49J?=>CQk3GmA(6%)+0)wr`ty|k9Z+N-k6ysY!fqvUKAJad6mh8 z-oM$90neDdA}@0Y@r5xd-p2U~M!QOjL*$;LU) z{~?lSaR$U*S4{T!pSdu(-!OYg@MW%gR}p2T(-LMwH2HqXfm}#=$cw==Ag(1|c1Npi zsFIqPp5CcjA~`X^2^=8cizE!MxnZ=@8snA7IEPZe(n2o5)*XCfP?awoGN#&C?|*JqO`D6l8~%w zt8|-Jy$SK7(AkdM_Hx@$gkD1vpPrv-8+Rb_xnrH(fJjY{+RZb>+yDh=Us;_9V`zY8 z5Y)`)9Jc{y{wOm~%;z&b7>WC-*grQM8CrR6vQSCs(ZKpWi^PKuj_jn1Gk9uG1Qr`Y zzDp?c$-50x{QFN(&)HDb6Saut5l8?Sm(Q2`swijeRUF-hY@G@h2=-fU(e>gq%;*Q3 zm7;Tk9S;r_An;P`xUf7Y_K*bh?=Q7YW5y)d(S6xp)r>5rPxL&;3D4wa9bh+LgX)MK ztkxY)HGmz;56e1f2l4v1?-0hWD7WE+m3w3;!NIMrHG6lpO!2OQGcZAFPfPbqgT3BdzX{Zhd6(i9cZJ_uD5`*|~ zh~uNr%FWV=@jA3)lXlmdJD|?DiKUVgvdX^^Y(WBag^Ri$3k1k1WyxKr#ZNm4<|sk& zcaZ@N)0v`Kh4QGKL9HRrP<;IdNO%;FK>AXTQoT!$V!Z@<%9pe|Ft6I{04K+Ws}YBv zoWfu7t&vTWfM$@`$J^p}c(i%HBfEWO_3(>*2s5yWzng7y3d;S_`P863C!?XenipVS zVH72Gxaq#uQFm8e<4U17eJ>z|URa2JD!S9nI&p;wnDU^#ZuQj7q?o#e$Ug{U@6L4?t;;Nvw3&Q&^_911Rq3WR31Bic5i+jN2S z$qV~U;MGO9l8{#y-&*D!$`UleRD_zOo_?hp##J@1Nr+istl_>0}^u)QI+tO9!=Cf|iekdZ;I$pd2yG0f&xI>4({aoI?A&a{9QFIl}?+cyFSG8h6S&jEeUdt3n*B{HSEf z){yQCNaq!#Hsz!?+Nh}!$9ePML$k4vPA6O?hof3s!%%UkRw<)c zHBSL#m-mlc#lY6R*ce12VqqCj@kvH9>AkdHS*YKmHDO5`=nOeTG|N@kzNWatA=0Z? zB&%O46<@!_XA`4@eP#SkNfK}i5#}%WENrNu`AQI|iyCjQXb>FKmhdL(s+f0C_)YDt zhSkDYa22KT3nl4>$gTfx5>_|jX(jy72j_or$aw!Y-S_+30RO#1_S@I8`0%wPObu;Z zEQBpg|7vUfDGunUPs&h#;zS-ItSxj=mnsT^S*;R2Wxf~{ zSjgP|p$**UWh}%j=Dg2&d8eIooTnxIU*F!4d!QD{7y?0Iv8pXb3iEcXpq7+ctMkJX z!9Yz>QBm1d)=VTW97_#WI@VfFa-M&jGfc3{)>!*&JwNxcKjlUbDTu@ndQQ8YUGfQc zd+0b=1`C#ZuLc=bSauk7E!jf9gW7ZNjk542abu(4W`oO-Hl79u`k%J<)o}AbfZ(bd zA-VpciV=8QT8XiOxbsz8LfWWbgi=B(bn!COLiFj_+#m5i90Ip!wCy!HS)~l%Oa5l^ zxkafOiOBH|rJslt>w^3_gzSj`L2J(sQy}iNtaU}BDhiQbcSd;0r8D3W(#CU@3e6Qm zV=jNUF;-GVmF8q&SJi6GP_pPg=77^g&xu>bQF<80?xZ!i1Lixj{)RthPP2OmCKF9` zS@JP-=(Ir=1FG;MIxaWCWqdBzJ)K>10TMXyeROlv?ht)9d#a2H%)U1r>Ep$ICt2hy z7kfs=wu*R2Lbxj@$%+xBoy;|H^{KrQpegNWjq5maG9Ja=do3S26OZhuCAtJd`j&r2 zz^Qlc$RhEOol)$9q+}$sWSuITI8LqF=QFkc;4(R;GhmTq@DqG|zUmimSaU|%)NPz8 zc#LKWIzcvdN`EkJ0izf2lwH(IJyjhcZyndMWw;(Y!2)F&9<(&<<~Z(GGuyt>nJ}+Ye>?k5(opr-JFn zE}PvyRBn~3w(`6J!ke5nM9eJJh9U`-M7dO_wdj@7Wl*tbBv-V2*sTPS<(#CFsCg&P z5&q?ObN%m#CRwxiTlP*k4>+|{!O>iNjlAX$tM=d4PfK#Y`8|ScQP>@h5M&N<-Hz7i zU_Cnu3=7_#)H+BE8{*84x~UA);aK-O!jijW4N!VcTVu>P00@0^JFY^skqP^!3UC)_ zxXYZvy!$F5I9$#~lr}yCXpNfbPBm0+el24n=hMC{-+=&Q8(Q%0KH2e%7?`OWV;*&k z##4c)LXD&7>L+70Q6kD+Qc5o9!PuOy@8wfpNDrx;wj%Zq32i+mZ@|9z_)&5PJElY% z_U5H;es1JW{pprj+KAwT%!e^LmYkZ+t1Vi5g6;5PE?SX48zn~uJ2r&1uD4Kue@{6a+pyCBkq#6q!^*ymnZ z*7;8NZ5Y<3j}!Q$u2+DY&5FZ*3y98&0t2J379b5qw;Kug3MS?-DS%iACdGhBC#`AL zRX*OBna!{-lg7x)z}#wluVS4*DUn+yMwTL+s~{q`rJ53D*rj6Rxt7~JrtBUeB)rmt zQH_luF4_+wyv@&p2H4=Y;TL}202Nhct}+ZRhoYI`09tS(il$7SEC#p;q`D~cFrAg$fXWC1A(-AjabwN zz*u~x@Jb$ri}A%^d7-M(aVv{+Yo~=1)16LQ{W2CS5!Jlh2mWmU4cI?J=b?28VV`?J zx)06YHEF`7-yUpp>}{_m-au%Ljt;*t(0`fzgdQB0tc#2JmQQx(Z3b($T-PqKKA_o} z`EXFYRFWj2U{mItSHtcd2Z_@eZj>FWRW(%df%wVqz+ zL6S^LL4-UXiE5I$k?LhjyU6JxK23a_M+-e~vhd6YT{DqhkEko)mfEHHgciTfjA^Cm zQy~-Owxp+4&yS^nc$Eql)gfl8y*8x=(RJ`I3pPS<9g@KPIijcNr?RqE%Tadir6U`{ zkG>T{dZ!AiWM%d9hXF6>qj}Ir_P=uv@(!cC9Pp=42_GGr|11Fh9>lW$KZ4lJ(#7+i zveKV*L6z#JH?rtQqs0z0(XO0!5K0KUNFp)Sjy6&XT2=T6o_${&Dz2}7YKi6}N;6^6 z^k2w5u0qxIXWGw{Bvz3~}EB{fMq1W#VH|$h;{RWH$ zDWG04a7gH*Zy8q2eJTbe3M{U#*-+VutVuH~N$x)0@bl1f*p3$-?!2XKm|Wk#p7*8J zU|AxF>rDRQZrzdCnz7Sp+s#SQAb`QE7$CJfJhhXeang&?j;Nsn)fyt!ZIeH$WZM`_ zj3LB9!C)~JqStayEmW!cDq^%U1l8TVU0`I45k?UdqpH*F2ucpwJETg3XrxZWR-I2( zM^^ioIu%-V|MB*4-ZxWG(!9EykvW$4DfGNzoUEHj-t0QOA3V4dA#PD_c{$7$wJZ_p zefC-sMMTRBFP2>OC_iiJQt0b-X`o^_zcVLK*7L_u3t}8+8lkF1cBZ|aP_0K@@V0lb zAwt_Gb(Ly!M`wm)+lu0D8ugwD+1|rGt$R+w3FOEx6W}+(WG0!~ zed?;^K$HF^luU+4tUP9Z!QUg`_rVDGgg5-XZ=lZr!d!x9jJ90NwcviT{EbK0Z|n(! zv?yEK5WJq%%!C`mWuD4WU;zxNfcRdFv!szmM-*Np&xl<#kQlc63oa%W8nSnRFssVw z!$7~XgHUZRk-WHg?;ySh%G0rd+z~k*;cq>A{bPH|FqP+Ca{N5zXH#(6{tV@*rYPVO z9Fxg~80@<&W)rQG4p6=?)yz}|r?^9G6zgP#!cJw*^1+qtZH0jiIQsSYg}3-S$q8P5 z;$bjT%*_(GEYF;`e8Y+ni31{;-O+}+b2#L=#sQoDbXk7++YTgj@xUEHnx(SmaSjt% z5`f`1P}A@Js=)(aUa^12y}dBEkncy_zx~U&XZ_#D{Xgs|wG(x0QIvOCNv=^dY3Trz zS~UbK;AFcxE9k~XwmBd`7>J@)C7mGwv?QAy8_MzXYlVEpqF1bcz@`^ZSQxL@(fS_suQOG2bd3L>?j@xv>!^ZCp-v4 ztoT$kmJy!?Ur$K^@P%^-HF>u_h&t_Z8x_CWsk0&vsbDo-rT@Cgo@u<3wIspuNpgp2raZS4+`EpwSKNh6UYZzifHAoxV; z2GF%keOr_rP9owHn?HucEVhWImXOS*11-L5Ce=|*PXi$>jp5vGYJoW~W7Rd~lUAZj zNA*ipD3i_X`oz&$O8!tXzc|De^Qtn{A)t|{6LA>Sy6&rIbT2YvDMTuFE? z6JJvVms;2xY8{AgOy~3tAkg6N4G)DujY~T|tVIq*VkUXcpG&4OTb!TU6}w6AWGF8+ zZ^YOxY55xOv)DeG?aQbgH$AI2Oedb&|8vA~Vt%%;F^6#uus*4P<|Z{Phq2-ckiMz2 z<5KFO+F7AQAT|3*Q5_|x;aaUVT>KDHvx9}ELbJp5eH>1M)cdMn9-WdcOm1qe7gt=h?`r+-UK;_+L#mkmD zT%pG9nh zZL~WEm(AUtgx#Xw%(?lLGC6Z5HUxLl*Jg{ot{_cEU%pQcCkD-KVg4wn4#}$ERQc62 z)4F+1REE^R#9Ik7U56@S93?Nll$)$fj7kbBUgTPd0x`Z_FuvUu2|pj{t~)5}9;8Le zba5a^*J#>tSbR2iw4ms#Z>GTwJBlgrnMK}G+RIrWzWf#iM&GB7&#|8*)wRF$f>|y* z!<%O3H0Oo=+)zE$1=A0`NPfV0eeiw{VA4Z_85rUfWNnW0bywuuK)S9rcxQrZ1f>q@ z4dSc0djUnVXiuFw>HEazY44@(GGJxpi_hOsV75T@0!}?<+R{#1lEICfMT0{qV1T80bL}@rbyM)^O=qxf;0I?BtU*K2)zTN$4 zaXXB()suJl-*oIIqpnKxVFA#?{Id-EyAR9zKceHmj<)<|=`UMZ+ZtIA#h z6sOM@W^*&Yx2JpH9^^Gg#X%`tXAM_}bx}-qoHdsjCxnf75qu&PwSrK6vtcPr=L1bc{1xAyeWF)sRqvtg^}eD}f_h#&C`XlmR6X zZlN&CEOKfy6tWO=wYNeJE~Ov%q0cZ>JZw($6Vxk*716^n|_9)pv& zlONphdk3w?!8fUNG1%_^SPFpOd~nuM}t7WgRm16H!ILc}txGTme(x{21h!hK=>2xcam<#aPzxhFUz0 zlj0D2KxQ0hs#4oGp&A=Fj)?`W0dh*EN{V-|LO6eG3p3%`op)Ov|MiE-_!tY50G)7a zKolqEmW|cwOYHUP9eDWwBh`DwS_4%Tj3&zb04ZJk=`mC_Q?SD%(-;3gj>llkKa{L| zEM4gR%X<7@W9YBgA^FG8zjm4uwCRBbQHI}3t5T_4zn(xtN+v9W!-s1Z5K8DG?fABn zoz-Srnt|_YdnS7PJ^|$D))8_^z_#N2Yx?cYd+PjT^#(e?RAxV6$O3McQwE_PTZ+0x zRN~74Jw$qBTXKkzs->sTe5Ir}oz-V*Vb$HJEg=omyNEPLSX88^xT1zJcxo~36}OPS zz{NQ=AVfgo^ioB)r5Aj`dg`KenKj#02JV3Lj5GC%wWawt?y4JVA#<$|B?{aqttUB5 zUDSMTOG()@`uCl6CbCO8&eQOxYPWm8SB4)|9jT2WZTyNaij8f=GlYcxW_FeI4=Rlh zmk;G%st2kl2!g9|$RMfT*HRe}Fg*ijTrY~;20M_({8{^9lwOPrsbM1l+iCk#yE0iF zXgLCLIz{ojX)%MUF3vPAcmnY1TkRLfdePo5Ane})ZXxdr(*jm~%>95Lj2*b}?tr5! zKEsfi31gTMg(jrY>AI+tCld<-ae}=>8=?{Po@bqd%jp z`R%nr=U**1e~AAEwqnzM%N}>GG2`Tx40YVh=C&1MZ$;U7d~b;1E^+t#taK zz(98-5~l>l8oDA$6aFT3*@HL=cQtS zkd!ky_(^pZlqh^ZF8@;|3W(P1KX*r$4|uuW@I$4)XS&n>)Sc6)(i8NmP&w=>*vGs$ z7mIk)kdLBwtw-)35+MKtL8!`TN^uiSU>$WT`qJ**5S-1#jMuls{Q^Jl8)QX?E5X2f zHSSeeDv|)KuzW?oE<0)B8eYI{4~1Tu_bYg5jJ%br69U!*36{N3sz?Ad39w0)xc-Qy zD-7#wa;{}&a!Skpo{y^m5JhP)Y3nD@8OAwVfLxn^Xl4dFfp*Fje=NANjW(=8bi;$j zyw8sq_Shk;H4A|5kHchWLUSB1(#AU4WO}2f=&W1wr;uvp1**n$GC1bGwx2fi6+NE_ z(Nj>N*o)2YimJDSdevA6K^pt^`FEbVRmg2T{lL+$59$A(IQsj-!M~RMf5p*X@=J_d z2UMQ`LRJi;BDM850qmMunOv#@1b+kGSPxHJ9k~d+AfsK*bL?fPwHxZ(vu4GE)uGyjyEGexHt5no*?FL^(i@7A(jI3qSx!hzM zA03ljda}-8tggEj-q+#pRqu$E|ywi7+!BTPn}711qeJ2!+iQa z`AsvN&In(E{Qe^nW`9DLe1r?kU$)f#{zv@R8}+vTm`eS<;iv3k=;HimEXAnkIwPB+ z_-&Z=vyC?20xKprC)3a8(L`D#L>A>+%(E<5mOyb$b*`T_O0##QPXY{Ia5o$Zziix! z4X1uKfBF0r)%nSHDl=TzLCfx=&AD>Jcfg5%@pg4Odhv;FH;RYsN)QgY)o8b$hv`uQ z?uJumaM(z9T$v{PQ6zRr)Q4&Z5bhM{80Az&v?yDbYO_{TZ8I6AeeV9$ z3(W7>5{#P-V#f|E)Izkmv}?EXYY7E_%pdLAkVS=J{c!8M4t>2dazYk?UtBG>tG3l< zT4?3iIH=vmV)4t7UH6QltfEf?tCXv9KylCe!(G_XQ{%v55q<}~Xf1Jl7u~d2jmr>h z{Jt#bvtG12B7^{XVp@du-les7Zg0(9>&Q(Y z-uYeGe_TGP=cLuz5vRJ8>#R0;l$PJNbAV4di})Q8%#-_T`>Q?Q5FLD~OZ3$BxN6LN z7n_Dg%lbmO{g$SBcLT0_zgf&Hdv%9UPK;{p^Q5_qy;2L%DF0K|qbO!dFlOh;7HpOR z$GcTS5_KsK&hQBvpL=ce5)KZsBVu*1JIJ|g=l)hvI3?mdQH6%10&-nsd+@4;GRF%JL=UVd!z+G^&*GH&R67(Lm8Q(N~2#S*nNRHz>->^#0n!k928E-L+HBXIS2;W>H2*H?a(t4 zIrR?xGs*^gGX47>c~8uFUQ^+NtCap?Q~Z5+9R0t{dk!Dr`7bBO|7X$u$7B9nA^jcj z|1l~aqcX09tcbviE+z&@P(axM21QvQ;R73Z07e9nl|hNwaduAENlftEG8q!$?~U>P z((YiJLbTu4w2%Hssis-%CSTwvXjwv)eV#M#EbqQ~PS4Nh2gDE<#ue*gL`?(yim@8< zbkl|mvfJh4k7hrtn{T$yd=IMkz=WqkH>G1D9iy?LAwD5*2USiD;hYZ(|@ zcDx`q3?c^Qwxv0}cU%EgRnb5rJgfx?wA7w>cvF-^`p7x#ULYCxdW3eF4*J=ajDk8) zrT6N4)3Ub8Hf`HsVrdJ)@|-RK%_?l^kPFB}*2Pzcp_HZ!BInKbX)IiFw==`jB$=Bw zvq@DeQ>`E4y>p2HBhW6MA{$X%I_YspocANDv2>i%BMrqUh@BMbSSHa*2w}|`&dU<4 z(_GgQd>X3=a%os~|>m#T~(nlIvBZDG{ zs*hUjjBp>I`<^&W~HoclhuW4zws@1>lpKb&k|4Pomj%VMAj3VWPwPK>U< z+z_iO5*DXfV#pB8`TP)(7^>TV(@AQOBS|!OkJgWTo#2#NPE^3>+ zG!HI|{SgoR_{B|ZlONusvir>&im6I*v_%gHTk*{=8NB|+o+nF4+u*~aZR~09a6fKF zfeqav*~CdaV(&}dANBY%Z*0A%WGjLg;Z$If7d3?pA-plTL;8h~LweCH-FGQO9;>QP zd9tRP`DeIXi+S>IitM>F8v5b~(mEB^Ls;$2Ry7V;ldNeS`o!A)4f~{ku*F&37A4=q zD?rXezWc91uBVcX7ajA0Gss!NLy?70GM=K4xX*|L1LTXIH za@am%n)5F){qF_iKW5=$l&$4|%h-9{4j0`cC8$Vv3WY|RxVtOamZuFm#M>n&vcPO?!?pj$`xC2 zz?eny7;MRU{Kf+` z`tNW&f!QgKZ-1CuT7DOuI)MIjMwp|9KLhTgSR(vOG5qg=>>m^CF-p49*dHKk&}=Yk zuwBF`Y{DNRlZu|9eY8-FRMC>)w-AZvlUV7j8lcc#XZlaY9t&w{K zCI6Wnn}R8|{!TF$$a#OsB!HXp3H0%EWEn$<8Wv^svm&{y#F&E5sqJt7_7(R4D)0*3*^R>$Ew-BHND$sya8D?g5psi z)4-ge&pC0ppd%tYhtI$bre0}h^7m>jIaD)E8gtzg1u6?gIJi~{g)_wyo(vskh@0*- zMPX(Jwk^UlJfO7|>a3i-^i3?xwXn%y<}>H6fbE7v*up`l*GGzawKvwwAL7;v{i>vS z`(vrWDbO6E+;r`@Ms%&#z~FZlWWKU-{hLSdrJ z*D6Tu!kt?>ODb#5*OxqJP-RqPSV=ATbAOPmJX^Lr z_QR-5J&4FVx@JHzq07~;?36q!PR4=quXLjXoGEndCiJ5g%c{6iAI0*+dF?bUq}0zZ z-^IPeCz-FFwE0nVy;Um!e;iEy-iNhFt22}pN@D|!?P0J@h=s<+$~$+fF^?=O&&n$t zJmeV&m{x%eg)*UUY$_^jEug2&&Wr+EL_hu(FV*BWG$OZOl92xWFd2=qn;Qbey{~Fo zhYCw*zLfcp^2mGkMGMB6c$>2k8QOAaZ$jB*+;LDv4qMZ6j=2WRj(>k2%&CV@i!LKCTXxu3@| zA%vtK2ueVN3peTzt6DiE;$yv_^en0BVe$CR-e5B!ttZ;iENBHI30WtSkyX%3t2F?# z&wT{rLXm-s0#mmV3%@|D(m!HX45<}Wly--$ifnzoqg5)IOqI+E#s7~A`zJOzJKhK2 zfd3`&F#q?8^`E4sguSb?skEu7!+-4Zr>H;c<9tVb-x#lN=#cq@XsJjXMMNi}QQ#@5 zWK~ZHR!^vAj+piF2UO6REEZ-skDgQ?EG(UC-0fyoz3H*uwPZQQLkz3Sl)n zfCAT=o=UhG0gR1zaTSWq?uS%p!MeNeIe5xV>T5vxN*;igYP#S z+Yc+v!{}v60$+KQfq8Z;g9~#Esp9QhnB~IhFMRQk>18iC9N4wFheYGW>rJYBnS|&r z-l7C0NAb}nP;$7n?5Ar7GSVP8mBp|V&+UOdiq4kDTQoCsA?Gxdv5ZZiS#C~WJDYb$ zYD*bt!A#wTg>WIOh`-<>K#*F|)XgKb)p(L%IT^hwh(lK{59j=F++8m6S5hvZI>nAd zlUrS|j^*0R|A(=6e(x*@w>{IbZL?#iW81cE+v(Wp*tYqNZQHhOCzEr|z4w`!=iW2( z!~O$mSM6Q(zO~k8)u&{s-01kzj>Ek&im$2`pRl(b#x>vxNhKEr>9hi?4T4)MJHXhQ zSn~HiD|1I4qk8KNBG@a65G+-^5cwAFc%acU9E*IY4@$j+M<}tE?EoTj_ROeshp4G^ zO{S(*J_0zpjZc|hk|Ol>*{FOYmqDNKIIyq7w{6fi^G$~~g{n)A_p#=uqz9Q%(v#-* zH8$s&v$H!nuGaQ-5nQx}m@Bopjg+uZEVOLBH|p*kV)SYvmT$Shy47yMr^?+?K&ZC* zM9bN_xuu!Xa367*_-{Az{;kKzuAio>&t>tUz_v_UITSJEF*$2Dowf0sBb}M_q`J$8W_Su-vf@bm0 z{;rTpd1<$^j(;jZs_SX1FxL>+UZA(hs85{6B!)~k&DVGORYFO35C-f^F@?&m3LZWPFZBNUuuD z<0jH6ZDivIwie06L$f3oIcm&?o`Tai_az9!xsK-MVmsh3pEk3 z`r0V0+~OD$JS!OAMMP@P|L|yaB|Z4`@Y(UWJi4{z__dt5Dov!zPCE_rOw;!%RD0ik zCR#|~?rCn4LT|ze{xsP@`L}|UVV$doU>ulTrrVO1rZu$^)o0)|e*>ni zUce9{XMo>`BxlhXrkV&JZ}Y(wrONfqD!0gM(__I|kH6FlzVRLsCNtDA*=}-0dKyz| zG!!w(XhqN}=|KXf*#O5U;Tsc@W(+m|!GC4ZCkA%zn?u+XDNE>LOJ7CJpu9o7KayiX z%^j}6oQ9;Ov#--o3}<$1G-YN<)Gp0dR4I4edSbs^Gm|@d09P};3(>xt{ofL{b8{TV zMC#z;ukZ8*-WndsyOK0CPmJX)wRwQ6Gx{>vdt;n)M|V>aKLAFVK|5y?)pQFk5vNEc zO)NB*dXhnj4O&~+%FXywwybl`GBN_;@_T-2Q0y;*lnFR?053NNYB?Gb?SeSLEeg$33B1O9)hqV zC4;%%L(_LaeJ^39^!u*DBZEdOvX9D<2#n#Vi?XTr+U5Rf`gaAeftCxtqgoHi6aBDnB&?@0ygqU#EYu2A2?M-(%=)8o8c0y~Jl+3)|{ zUO`9Wmj6Su68Yb9*~tI@Y_I>-wXM>E@>U-F{GRNP*)qK+{0T(J+=Z7Q)Q0{|7(&V~ z2rteL8{xdl9UnYtyRm8S-mF=Jzf@3F+PGD=s49@~S7CO^vQe`N-D_RbsxegcCpjVD zqr2O~?jI?A?Z>wtF9S2zea8035nH#@(d~!XKVAW0n8w$(mSG``h-z5W?cF_Ix~}oT zPi^j=!Dq~a_YKe3$WU(QjFn^bcjkfqJtTw(+kYoWo!Yqie*JjxDWRo?lX5yWRAOe zvO5vTVC2T9(v`0S2EA8ls>K`Da!t!%h4yzQ1j6|q2EOJ9g&&#kq?7MHdiUbsH8)^D z@Y4(YJ&o{+5 zk6^Ftzq*-0W>C|t)mU|CWka*e2BzJ{!L;cQR7}mr zMD9?Vxm8jkU0Mf(*hc2vWi5(n5~N&OVfhVn=;WS94)0)p=Wo!eoz(ZyQuEYHRvYiA zXjdNPrxRH^w~D4T;^_A zQjS{=O%Zr#rcGRJclVs|YyDUeyogF1E41F6SNHOU2Y7WC7Yk8WBg zt}YS5S_32bi>*@x=maPH;fLJujbPhNg5rcX>*s0R?sn*g8Zyi-Z%6JA!8$r&Ts-1J z;f=IXog9iggmur7bIeldZ|vn$QanzY?@;L$h;|vK5>n3ZBJn+ibo0ikc^-;8#z<TDTN+7` zSDMVdBy36>7hzKj%IOjBF3q7`LVSvIPaC`By+&WRHrprdB{KX%*)Hf$quxNs(4Z)! z$7pM+cpEIoBaRvmWn{EiRhQLRtv3{xNyQiR?Opmqip&3~s905;tJ!F1Evj$Imw_`c zv$8DMmf4wCQrCc)H|83k<>`~2!HG^kfOE=3lPS#DgDnB_ENoPKOjO98q5o=jR&nl%E)(t>~gEuF9iV2o_5LGXLK)Oxi*$lp@Qm%{$e$M%m0$M55`b3 zg&$3kpIOF&&*-JtVPGs6-Nt?pH>Fo?-+3e-!Sq0{O3nrQFZDT5B)?=-)jn3Lh8-e$voQsPDC(`L3@nT9u zCo<*UF)QD`t)^IAex|!sPDU?+{{ zh}O4B7IzO!mUQdOZz9G?f@fM=G#lmIl+ic?BM>ZPV22Gk&K+nfin6YA`UsKOF(Ki9 zAAQ7%(issumf)|KK0uHuXrAI`)uU|qr(+Ye+dJ;jpvDej9ie1$g@MfFQ=gG*oWO#` zC(k~T2Y7G`R7dL!;jN$qCSBE@*d)WJm{3im6byEx{1IaEZR)AY)SV}xL^^pIhaF|+ zWBm#jT}2TvcODpfVNl?LtI?3hUq-!l1mQ6s!bufLl`O*w6wA3C!)X_)iNdR#vP>K_ zd$`Q7WceG9;GnrD*%du$00>5T(Kct*fO=^qAU$tqL(7H-gN205iBKFS#I+Yl)TkVh zOJpZHy}h8V1K!8w^9?jB`EFG9nhy;II)TWSQD%U()bfLVXD zU*RiU#&Dfc2R`_->gy-qI|r)D9##GV#6J-_^bQf+z;Y!>kvs!N08CbpHPwQ~;!0f0 z3_u2eX#fCUi7TP@A@^zR)$onJO*ki4{7S|k)kT>7GkZmj27?z49qM{bSr$Y67p^n8 z9nD7rniy-kBSFLn%G@NL62}Urw1APhU`c^3z3M9rxpx*!LTt9yg)5eN%^FDx=m<7M z$UO9MPuyq^b$L-lR@(u+H}&Xlu3$ZDc9PG+x~=0^6CP+aYp1`tmPp3wdfdwF2y2Nh z38JM=#*J_*m>GgAtF(!y*viJyPe36&P}@r7IF8G!3#0*yu?sXdS_9rEUJ8UQnxhup zpLH-9I?TR|>Wc&ZK%oqqEY%UlL-)T;DdU%RO3%&%7iVSU>6sTos(%TJ*-E)b^7m2L z7XS)~^Nx^LvJHAbz@5V8se!#`$^74WaVOe*6ozR%ontFvV{RUw3bhOxKf$|#>-j35 zi_H1sc0H=A*_qSm+z8aJb9=b+!WmySWiQ8+f(a?K^?*T0cfm(R`3nn=k&JwXB=|9WvE_l?X}AK*Y=K ze^6aH<5$7T(gcgjFJ3>l{(gV_Vh;fr1;VAWxRGE4?ClyGML?i7Kxf7dJn+DmJ`5i- zlf<3gA5RA25!@ZbYx9n0Zt&1Ey8M#U$(UP6h)6Yh!6=qpD;}s6DVr{rnBW{tKOEo* zy`ZaG0zUG9wpzR~bbS68*iiBqOe%Ar5AN9*YIE0}`$fA;5Gl9!7d%}ZX3`=mWU^Mt zF%z*Madk>yNKvmR#*YVGP3>*9$CPa6h)E}Amk0v6!6gSKV1W$r|Cd}|LbvJda^9^|B3xvi6 z5m-(^F)$fU-=V3*XtooSw}n`@2u>m6a3sh+IFFQ-h*Unbp$%e>m=khioR%YA z2Y4faa>T7n1LBNhvCk1Oh*8DqP)sg5As;a#jKZwY9y$EKIZSg)t4|&vG}&o0tR>`p z`)rRJMA-UY!8-W6h`On-Lv3KOWLf1Q`lx#u%ZT3@fmB!5pDBu9J{?SkC_HW)za5H zviwipzFG~kWz4h@Q7(Yr2?X4I>YIOa*Q_HdnulEMf?Oo&jBLu8V-=Hc&N9Y;gm90H zJ(OO6aLMU|z`bHFz&7Bs9iZIB{=^S^3h`3rFbQ{>GaMkaxS%)tQe4d(&WC&;!TP@t zV}Rw4#7>7n>+o8Q5HP3L5lBZ7(n(hcA#Sr;LoZgY8BEQyu zq!GD>Z-#h_bVcx25=!7I3mP{ag!aAC>Jt?*5$A_|v~pXIET>jWzQX8y&Bb=dce5VY ztw8_GjcfP{F+RzkstTDi`l+0R92S!9qJ%%>8tk22_neLq4*+@t&55c>Ww*uVSK+CIowvVBQLa#nS`!66t;wh5LK^k@8_i92vFo z^*~16_aAv=nUbbYhx4RD7SLG!T7{4fA$rUo!aL+tF0|u^qJEbrJaucl>e+Q&xs*pANx_{WIjqcXY@1Ln&Lt!hgb=KN|W^dp`zgGCZC&nTz9f@S99?TxRN|*XwmK8j? zu>NbsBU4d=Q5MJ4yq_pa6CHzurGKV=wK17;SJjpH1nzHOm%LdlR`NB1VLuY?ugur% zy$}DCJ$-Y&&wnTe<{T3(s4Mkc|V zst^18tc(U!b#TU?aGDzU$C&{RYwn`Vy)(b-1^=nM3mkz5i_gWu(Div(CJ_2qcJ$#W z{|cwZ5 zW<_bkB9xa#NP+0*Yq&xg6-k(D+yTAmoD0Eha%Egr!KcAD+3A`){{+K*s^Vo>DOcfr z;NzU{(741oZ^2$2XipukLma%zwBc8lZb+}r^!ve&j6tfGE~LZ+IG~`*^R{$d{J7?J zMMY+W&2)PY#xBxi=WD1-@jEJ%&7DIm zSTxc(b`HUMju*EGwY}U+VSWz}FWl;Db9-SG1_*5};D4vFFYi7i0$E2n?0ma*_i*zW zidOx4@fN2_u4Dn(;>ktK6BiDSl4-IEJB&7BD4DfJxMaZzu=nC+M#Rxb7+ahS7bu=q z17NuMP4S^WJiObFnXI%dn47^kNo>$`tud6Gxn8h59YyZM7}8jqE6v6k4IVqP7-FJT zLx#}VT#8|Rj44ShvW61aRb%kublGoD*pRigAzWiJe|rJY zcr=as{cVohA3zw^7EA?aj$StfH3`Lz3$uXgC102=xvLa8NoP#6C+Wf9p zB4c}#g@4Csau`s_s#FU zwlCX%Vp%h7v7h5bWG}`$wcF^_?T`F%bkpshF20dj)kek0IEQGt6~1ggz-pCyhbn~&TW)kFCdN+J?CleL5X>`Je4>ZzR&n) z6%S0q!>(>FKJ#yPZxK}Kf*5l)q^CBXp+ht5zSF-2Kj}I{IYad_R6hO7hiCatg^(ZU zzkX-(_Femte|{nOezToE53>YpC(h#cPS2EoMaA5bADv}5wix)X8-09;SD!iORjgH= zp?%m^>+_)FeJoU;85p*dHw-|km__2M{6j6+dl578t;Q@^GZMi+OT)w=A1cWFJM}J3 zUP<=`?KMgny>ntO*{9v2jtHb;}ck>g} zb#Yb{Kqt8^*U(-T3lZ^FifQlUc=RL>rRtD3mKK^HdSv7-KtMZilMmu7$(E&AI-HAv z0M-fGUqX4J=$yzSb!`95e6U*{Y5FufcZ3;l5*YWlYyO=7{mxXauG5)5YgXp)FZHsg zIoNWl{H#ctv~L>Ef>_dIaDGbp4N3I(Wl0hbz>-A1$`)Mv56GjU3|rCua=Mv0`?T)7 zP$O%88-Dq5TVCiAQv-~b`Q|T6(7=qRUHLzZNQZ+gSSDPp=5U~`$q|&|_ho^}vmStS zVnA}fGrWr;^<^RAW&XVd+veXpi#8xZAEcm1Lj~cKutVoEb&(tlxCgLV@svmz=b{w} zwaAK7sXeO)69*U_>Z|q{*Um~`m z2#p7)JjO?@jO08BUR%i-4u3VJm}%SA@0bY2WX4-=wT3UE0WPy2a{%5o{Dk9FitAco z4*IGT;84lv73Y2VymJRjyCuf}86H&RqKUFH)Q9Jcfc8 zSYbSo-Uot0*=SF5v#IJ8O^?$~z&m15?+0G4+Nc~~?y>S@H(y`xja{`~Fw`dn-K+ri zzdHfkS)sq)siJcvEI6rBWhu!sX-nzgm3ltDM^Lt&+u>b z5{A;W$lY;el%oMv38mDdK`zNf07gx5&S6Khw_eK_Fa)qv&Qm1!SeF8o4GKyhI>k22J6Ow|WOu_pBn) zxL^lF#>MV?pN!E2;fU03z#y7t`tuintGeP{T%fCW0UdagpWP$rYlrOYNyfpSUlzY3 zN^(;$oid6a5CL*T-Z5rEmqpM!gZ1}>DkTkB1{l>~F^o{rUSD`%x{pbsYA?BUM43g% z4zvQkc=9DHjh(2`f7-u?##Ftob{vxP&UIstP?IY_w|GubvP$SVk@MukMXLxFy0qms z7S;7dSbJWv)k5*EJjU*N8)IIHPHBQa@Cee%{=Gg<>4mUA{OPooB3aS(pxvtkwFWqR zJqBUSN)!x#y|_Z7g%3&;Vhl^rqgxGfYE9pbs8o5Atn$_=EE;lS4iT8F4s05t zG!OW*3mYewOY_&>L{Q97v#tH1}y8A9GCg9tkB+jw6Xn>TZI-a+su!rH(Cex~u@O6p;aUnoT^8ID8 zDMm(F@exZC8pO#{@sTs&N}d+4ic4iYdP!%4Q{2spB~~Xokutqh*gE&IG-GgxG@orS ze2a7nDZ?gTN`edguvXoLuISV-vi>rsU(f%7kT-tI4zx<7X9rCSPk8N*d?6cG1V9e3 zBA^TrW`<1uILmW$@a)*Kb;!xTeOmNxxk}Nm=G}af_hRZqXhOP1h?5ojvtk7QZFlS3q)YBN-0voX!x!(Z#h&`_yk`lmCjD;0Lcei+jo z4Rq)l zEs0EE^Tb1ifW<8mUIBaB zS1BK>g1z>?#@eA(GCU>_I&SmcUMUw^rtAmkd|`MW2wo=^%OLqn>8}Nx6~4t?FB)Xf z`v}A*gsy_-7}Ff$d`n>l_YsxeR~)9+1X=UiK~CO3cc_NP#B$7fdOM4`u=H&skNi4J zBJ!an8ql`IxZod@An4Tm!Cc2h_?{YGKs1zM$@b)T;E{{b3<{)M0qh@Gz&EU^ukf@O zeg%%Vbn2h@RVdd=?Jq!#Q=uaPKa{3>B&NULGg*5^r0F>`pL

bQAgg9@JTNAD_- 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

{O+` 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υuH<9|^0jzN~S*|u<{ZQFKM+O}=mHY#n~wr$(C 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 diff --git a/localrepo/com/zaxxer/HikariCP-Log4j/2.4.2-SNAPSHOT/HikariCP-Log4J-2.4.2-SNAPSHOT.pom b/localrepo/com/zaxxer/HikariCP-Log4j/2.4.2-SNAPSHOT/HikariCP-Log4J-2.4.2-SNAPSHOT.pom deleted file mode 100644 index 4479ed0f2..000000000 --- a/localrepo/com/zaxxer/HikariCP-Log4j/2.4.2-SNAPSHOT/HikariCP-Log4J-2.4.2-SNAPSHOT.pom +++ /dev/null @@ -1,443 +0,0 @@ - - 4.0.0 - - com.zaxxer - HikariCP-Log4j - 2.4.2-SNAPSHOT - bundle - - HikariCP-Log4J - Ultimate JDBC Connection Pool [Log4j Version] - https://github.com/brettwooldridge/HikariCP - - - Zaxxer.com - https://github.com/brettwooldridge - - - - scm:git:git@github.com:brettwooldridge/HikariCP.git - scm:git:git@github.com:brettwooldridge/HikariCP.git - git@github.com:brettwooldridge/HikariCP.git - HEAD - - - - - The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - repo - - - - - - Brett Wooldridge - brett.wooldridge@gmail.com - - - - - UTF-8 - 4.3.9.Final - 3.18.2-GA - 0.11.4.1 - 3.1.2 - 1.10.19 - 4.5.0 - 2.4.1 - 1.7.12 - 2.5.3 - 5.0.0 - 2.3 - - - - org.sonatype.oss - oss-parent - 7 - - - - - org.slf4j - slf4j-api - ${slf4j.version} - compile - - - org.apache.logging.log4j - log4j-slf4j-impl - ${log4j.version} - compile - true - - - - org.apache.logging.log4j - log4j-core - ${log4j.version} - compile - true - - - org.mockito - mockito-all - ${mockito.version} - test - - - org.javassist - javassist - ${javassist.version} - true - - - org.hibernate - hibernate-core - ${hibernate.version} - provided - true - - - io.dropwizard.metrics - metrics-core - ${metrics.version} - provided - true - - - io.dropwizard.metrics - metrics-healthchecks - ${metrics.version} - provided - true - - - simple-jndi - simple-jndi - ${jndi.version} - test - - - - - javax.inject - javax.inject - 1 - test - - - org.apache.felix - org.apache.felix.framework - ${felix.version} - test - - - org.ops4j.pax.exam - pax-exam-container-native - ${pax.exam.version} - test - - - org.ops4j.pax.exam - pax-exam-junit4 - ${pax.exam.version} - test - - - org.ops4j.pax.exam - pax-exam-link-mvn - ${pax.exam.version} - test - - - org.ops4j.pax.url - pax-url-aether - ${pax.url.version} - test - - - org.ops4j.pax.url - pax-url-reference - ${pax.url.version} - test - - - - - ${project.name}-${project.version} - - - - org.codehaus.mojo - exec-maven-plugin - 1.4.0 - - - compile - - - java - - - - - com.zaxxer.hikari.proxy.JavassistProxyFactory - - - - - org.jacoco - jacoco-maven-plugin - 0.7.4.201502262128 - - - - pre-unit-test - - prepare-agent - - - - ${project.build.directory}/coverage-reports/jacoco.exec - - surefireArgLine - - **/com/zaxxer/hikari/proxy/** - **/com/zaxxer/hikari/metrics/** - - - - - - post-unit-test - test - - report - - - - ${project.build.directory}/coverage-reports/jacoco.exec - - ${project.reporting.outputDirectory}/jacoco - - **/com/zaxxer/hikari/proxy/** - **/com/zaxxer/hikari/metrics/** - - - - - - - - org.apache.felix - maven-bundle-plugin - ${felix.bundle.plugin.version} - true - - - HikariCP - - com.zaxxer.hikari, - com.zaxxer.hikari.hibernate, - com.zaxxer.hikari.metrics - - com.zaxxer.hikari.* - <_exportcontents> - com.zaxxer.hikari.pool, - com.zaxxer.hikari.util, - com.zaxxer.hikari.proxy - - - javax.management, - javax.naming, - javax.naming.spi, - javax.sql, - javax.sql.rowset, - javax.sql.rowset.serial, - javax.sql.rowset.spi, - com.codahale.metrics;resolution:=optional, - com.codahale.metrics.health;resolution:=optional, - org.slf4j;version="[1.6,2)", - org.hibernate;resolution:=optional, - org.hibernate.cfg;resolution:=optional, - org.hibernate.engine.jdbc.connections.spi;resolution:=optional, - org.hibernate.service;resolution:=optional, - org.hibernate.service.spi;resolution:=optional - - ${project.groupId}.${project.artifactId} - * - - - - - - - manifest - - - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.3 - true - - 1.7 - 1.7 - - - - - org.apache.maven.plugins - maven-release-plugin - 2.5 - - true - HikariCP-@{project.version} - - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.18.1 - - - ${surefireArgLine} - - ${skip.unit.tests} - - - - - org.apache.maven.plugins - maven-source-plugin - 2.4 - - - true - - - - attach-sources - - jar - - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.10.3 - - public - - true - 1024m - - - - bundle-sources - package - - jar - - - - - - - - - - - coverage - - - - org.eluder.coveralls - coveralls-maven-plugin - 3.1.0 - - - coveralls - verify - - jacoco - - false - - - - - - - - - release-sign-artifacts - - - performRelease - true - - - - - - org.apache.maven.plugins - maven-gpg-plugin - 1.6 - - - sign-artifacts - verify - - sign - - - - - - - - - - felix - - true - - pax.exam.framework - felix - - - - felix - none - - - - org.apache.felix - org.apache.felix.framework - ${felix.version} - test - - - - - diff --git a/pom.xml b/pom.xml index 390d04eeb..a924c7f50 100644 --- a/pom.xml +++ b/pom.xml @@ -56,6 +56,14 @@ *.yml + + ./messages/ + false + ${basedir}/src/main/resources/messages/ + + *.yml + + @@ -74,12 +82,13 @@ - com.maxmind.geoip:* - javax.mail:* - com.sun.mail:* - com.comphenix.attribute:* - org.mcstats.*:* - com.zaxxer:* + org.slf4j:slf4j-api + org.apache.logging.log4j:log4j-slf4j-impl + com.zaxxer:HikariCP + com.maxmind.geoip:geoip-api + com.sun.mail:javax.mail + com.comphenix.attribute:AttributeStorage + org.mcstats.bukkit:metrics @@ -163,10 +172,10 @@ http://repo.mcstats.org/content/repositories/snapshots/ - + - local-repo - file://${basedir}/localrepo + hikaricp-log4j-releases + http://nexus-sgdc3.rhcloud.com/nexus/content/repositories/hikaricp-log4j-releases/ @@ -175,37 +184,11 @@ - - - org.slf4j - slf4j-api - 1.7.12 - compile - - - org.apache.logging.log4j - log4j-slf4j-impl - 2.0.3 - compile - - - org.apache.logging.log4j - log4j-api - ${log4j.version} - compile - true - - + com.zaxxer - HikariCP-Log4j - 2.4.2-SNAPSHOT + HikariCP-Log4J + 2.4.1 compile @@ -219,7 +202,7 @@ - + org.xerial sqlite-jdbc @@ -227,7 +210,13 @@ compile - + + + javax.mail + javax.mail-api + 1.5.4 + compile + com.sun.mail javax.mail diff --git a/src/main/java/fr/xephi/authme/DataManager.java b/src/main/java/fr/xephi/authme/DataManager.java index 8f9db6d85..472a29e89 100644 --- a/src/main/java/fr/xephi/authme/DataManager.java +++ b/src/main/java/fr/xephi/authme/DataManager.java @@ -134,10 +134,13 @@ public class DataManager { playerFile.delete(); i++; } else { - playerFile = new File(plugin.ess.getDataFolder() + File.separator + "userdata" + File.separator + Bukkit.getOfflinePlayer(name).getUniqueId() + ".yml"); - if (playerFile.exists()) { - playerFile.delete(); - i++; + try { + playerFile = new File(plugin.ess.getDataFolder() + File.separator + "userdata" + File.separator + Bukkit.getOfflinePlayer(name).getUniqueId() + ".yml"); + if (playerFile.exists()) { + playerFile.delete(); + i++; + } + } catch (Exception e) { // Don't do nothing if the method getUniqueId() isn't avariable ( MC version < 1.7.5 ) } } } catch (Exception e) { diff --git a/src/main/java/fr/xephi/authme/settings/Messages.java b/src/main/java/fr/xephi/authme/settings/Messages.java index 75db7b7ce..1845d739d 100644 --- a/src/main/java/fr/xephi/authme/settings/Messages.java +++ b/src/main/java/fr/xephi/authme/settings/Messages.java @@ -1,12 +1,9 @@ package fr.xephi.authme.settings; import java.io.File; -import java.io.InputStream; - import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.YamlConfiguration; -import fr.xephi.authme.AuthMe; import fr.xephi.authme.ConsoleLogger; public class Messages extends CustomConfiguration { @@ -29,13 +26,11 @@ public class Messages extends CustomConfiguration { * @param filename * The filename to open */ - @SuppressWarnings("deprecation") public final void loadDefaults(File file) { - InputStream stream = AuthMe.getInstance().getResource(file.getName()); - if (stream == null) - return; - - setDefaults(YamlConfiguration.loadConfiguration(stream)); + if(file.isFile()){ + setDefaults(YamlConfiguration.loadConfiguration(file)); + } + return; } /** diff --git a/src/main/java/fr/xephi/authme/settings/Settings.java b/src/main/java/fr/xephi/authme/settings/Settings.java index 54dcf2c10..41fbaff71 100644 --- a/src/main/java/fr/xephi/authme/settings/Settings.java +++ b/src/main/java/fr/xephi/authme/settings/Settings.java @@ -28,7 +28,7 @@ public final class Settings extends YamlConfiguration { public static String PLUGIN_FOLDER = "." + File.separator + "plugins" + File.separator + "AuthMe"; public static final String CACHE_FOLDER = Settings.PLUGIN_FOLDER + File.separator + "cache"; public static final String AUTH_FILE = Settings.PLUGIN_FOLDER + File.separator + "auths.db"; - public static final String MESSAGE_FILE = Settings.PLUGIN_FOLDER + File.separator + "messages"; + public static final String MESSAGE_FILE = Settings.PLUGIN_FOLDER + File.separator + "messages" + File.separator + "messages"; public static final String SETTINGS_FILE = Settings.PLUGIN_FOLDER + File.separator + "config.yml"; public static List allowCommands = null; public static List getJoinPermissions = null; diff --git a/src/main/resources/messages_bg.yml b/src/main/resources/messages/messages_bg.yml similarity index 100% rename from src/main/resources/messages_bg.yml rename to src/main/resources/messages/messages_bg.yml diff --git a/src/main/resources/messages_br.yml b/src/main/resources/messages/messages_br.yml similarity index 100% rename from src/main/resources/messages_br.yml rename to src/main/resources/messages/messages_br.yml diff --git a/src/main/resources/messages_cz.yml b/src/main/resources/messages/messages_cz.yml similarity index 100% rename from src/main/resources/messages_cz.yml rename to src/main/resources/messages/messages_cz.yml diff --git a/src/main/resources/messages_de.yml b/src/main/resources/messages/messages_de.yml similarity index 100% rename from src/main/resources/messages_de.yml rename to src/main/resources/messages/messages_de.yml diff --git a/src/main/resources/messages_en.yml b/src/main/resources/messages/messages_en.yml similarity index 100% rename from src/main/resources/messages_en.yml rename to src/main/resources/messages/messages_en.yml diff --git a/src/main/resources/messages_es.yml b/src/main/resources/messages/messages_es.yml similarity index 100% rename from src/main/resources/messages_es.yml rename to src/main/resources/messages/messages_es.yml diff --git a/src/main/resources/messages_eu.yml b/src/main/resources/messages/messages_eu.yml similarity index 100% rename from src/main/resources/messages_eu.yml rename to src/main/resources/messages/messages_eu.yml diff --git a/src/main/resources/messages_fi.yml b/src/main/resources/messages/messages_fi.yml similarity index 100% rename from src/main/resources/messages_fi.yml rename to src/main/resources/messages/messages_fi.yml diff --git a/src/main/resources/messages_fr.yml b/src/main/resources/messages/messages_fr.yml similarity index 100% rename from src/main/resources/messages_fr.yml rename to src/main/resources/messages/messages_fr.yml diff --git a/src/main/resources/messages_gl.yml b/src/main/resources/messages/messages_gl.yml similarity index 100% rename from src/main/resources/messages_gl.yml rename to src/main/resources/messages/messages_gl.yml diff --git a/src/main/resources/messages_hu.yml b/src/main/resources/messages/messages_hu.yml similarity index 100% rename from src/main/resources/messages_hu.yml rename to src/main/resources/messages/messages_hu.yml diff --git a/src/main/resources/messages_it.yml b/src/main/resources/messages/messages_it.yml similarity index 100% rename from src/main/resources/messages_it.yml rename to src/main/resources/messages/messages_it.yml diff --git a/src/main/resources/messages_ko.yml b/src/main/resources/messages/messages_ko.yml similarity index 100% rename from src/main/resources/messages_ko.yml rename to src/main/resources/messages/messages_ko.yml diff --git a/src/main/resources/messages_lt.yml b/src/main/resources/messages/messages_lt.yml similarity index 100% rename from src/main/resources/messages_lt.yml rename to src/main/resources/messages/messages_lt.yml diff --git a/src/main/resources/messages_nl.yml b/src/main/resources/messages/messages_nl.yml similarity index 100% rename from src/main/resources/messages_nl.yml rename to src/main/resources/messages/messages_nl.yml diff --git a/src/main/resources/messages_pl.yml b/src/main/resources/messages/messages_pl.yml similarity index 100% rename from src/main/resources/messages_pl.yml rename to src/main/resources/messages/messages_pl.yml diff --git a/src/main/resources/messages_pt.yml b/src/main/resources/messages/messages_pt.yml similarity index 100% rename from src/main/resources/messages_pt.yml rename to src/main/resources/messages/messages_pt.yml diff --git a/src/main/resources/messages_ru.yml b/src/main/resources/messages/messages_ru.yml similarity index 98% rename from src/main/resources/messages_ru.yml rename to src/main/resources/messages/messages_ru.yml index 536dc4797..4a6a2bf16 100644 --- a/src/main/resources/messages_ru.yml +++ b/src/main/resources/messages/messages_ru.yml @@ -1,58 +1,58 @@ -unknown_user: '&fПользователь не найден в Базе Данных' -unsafe_spawn: '&eВаше расположение перед выходом было опасным - вы перенесены на спавн' -not_logged_in: '&cВы еще не вошли!' -reg_voluntarily: '&aЧтобы зарегистрироваться введите: &5/reg ПАРОЛЬ ПОВТОР_ПАРОЛЯ' -usage_log: '&eСинтаксис: &d/l ПАРОЛЬ &eили &d/login ПАРОЛЬ' -wrong_pwd: '&4Неправильный пароль!' -unregistered: '&6Вы успешно удалили свой аккаунт!' -reg_disabled: '&4Регистрация отключена' -valid_session: '&aСессия открыта' -login: '&2Вы успешно вошли!' -vb_nonActiv: '&6Ваш аккаунт еще не активирован! Проверьте вашу почту!' -user_regged: '&4Такой игрок уже зарегистрирован' -usage_reg: '&4Использование: &5/reg ПАРОЛЬ ПОВТОР_ПАРОЛЯ' -max_reg: '&4Вы превысили макс количество регистраций на ваш IP' -no_perm: '&4Недостаточно прав' -error: '&4Произошла ошибка. Свяжитесь с администратором' -login_msg: '&4Авторизация: &5/l ПАРОЛЬ' -reg_msg: '&4Регистрация: &5/reg ПАРОЛЬ ПОВТОР_ПАРОЛЯ' -password_error_nick: '&fВы не можете использовать ваш ник в роли пароля' -password_error_unsafe: '&fВы не можете использовать небезопасный пароль' -reg_email_msg: '&4Регистрация: &5/reg EMAIL ПОВТОР_EMAIL' -usage_unreg: '&4Использование: &5/unregister ПАРОЛЬ' -pwd_changed: '&2Пароль изменен!' -user_unknown: '&4Такой игрок не зарегистрирован' -password_error: '&4Пароль не совпадает' -invalid_session: '&4Сессия некорректна. Дождитесь, пока она закончится' -reg_only: '&4Только для зарегистрированных! Посетите http://сайт_сервера.com/register/ для регистрации' -logged_in: '&4Вы уже авторизированы!' -logout: '&2Вы успешно вышли' -same_nick: '&4Такой игрок уже играет на сервере' -registered: '&2Успешная регистрация!' -pass_len: '&4Твой пароль либо слишком длинный, либо слишком короткий' -reload: '&6Конфигурация и база данных перезагружены' -timeout: '&4Время для авторизации истекло' -usage_changepassword: '&4Использование: &5/changepassword СТАРЫЙ_ПАРОЛЬ НОВЫЙ_ПАРОЛЬ' -name_len: '&4Ваш логин слишком длинный или слишком короткий' -regex: '&4Ваш логин содержит запрещенные символы. Разрешенные символы: REG_EX' -add_email: '&4Добавьте свой email: &5/email add ВАШ_EMAIL ВАШ_EMAIL' -bad_database_email: '&4[AuthMe] Команда &5/email&4 доступна только при работе с MySQL или SQLite. Обратититесь к администрации сервера' -recovery_email: '&4Забыли пароль? Используйте &5/email recovery ВАШ_EMAIL' -usage_captcha: '&4Вы должны ввести код, используйте: &5/captcha ' -wrong_captcha: '&4Неверный код, используйте: &5/captcha THE_CAPTCHA' -valid_captcha: '&2Вы успешно ввели код!' -kick_forvip: '&6VIP игрок зашел на переполненный сервер!' -kick_fullserver: '&4Сервер переполнен!' -usage_email_add: '&4Использование: &5/email add ВАШ_EMAIL ПОВТОР_EMAIL' -usage_email_change: '&4Использование: &5/email change СТАРЫЙ_EMAIL НОВЫЙ_EMAIL' -usage_email_recovery: '&4Использование: /email recovery EMAIL' -new_email_invalid: '[AuthMe] Недействительный новый email!' -old_email_invalid: '[AuthMe] Недействительный старый email!' -email_invalid: '[AuthMe] Недействительный email' -email_added: '[AuthMe] Email добавлен!' -email_confirm: '[AuthMe] Подтвердите ваш Email!' -email_changed: '[AuthMe] Email изменен!' -email_send: '[AuthMe] Письмо с инструкциями для восстановления было отправлено на ваш Email!' -country_banned: 'Вход с IP-адресов вашей страны воспрещен на этом сервере' -antibot_auto_enabled: '[AuthMe] AntiBot-режим автоматически включен из-за большого количества входов!' -antibot_auto_disabled: '[AuthMe] AntiBot-режим автоматичски отключен после %m мин. Надеюсь атака закончилась' +unknown_user: '&fПользователь не найден в Базе Данных' +unsafe_spawn: '&eВаше расположение перед выходом было опасным - вы перенесены на спавн' +not_logged_in: '&cВы еще не вошли!' +reg_voluntarily: '&aЧтобы зарегистрироваться введите: &5/reg ПАРОЛЬ ПОВТОР_ПАРОЛЯ' +usage_log: '&eСинтаксис: &d/l ПАРОЛЬ &eили &d/login ПАРОЛЬ' +wrong_pwd: '&4Неправильный пароль!' +unregistered: '&6Вы успешно удалили свой аккаунт!' +reg_disabled: '&4Регистрация отключена' +valid_session: '&aСессия открыта' +login: '&2Вы успешно вошли!' +vb_nonActiv: '&6Ваш аккаунт еще не активирован! Проверьте вашу почту!' +user_regged: '&4Такой игрок уже зарегистрирован' +usage_reg: '&4Использование: &5/reg ПАРОЛЬ ПОВТОР_ПАРОЛЯ' +max_reg: '&4Вы превысили макс количество регистраций на ваш IP' +no_perm: '&4Недостаточно прав' +error: '&4Произошла ошибка. Свяжитесь с администратором' +login_msg: '&4Авторизация: &5/l ПАРОЛЬ' +reg_msg: '&4Регистрация: &5/reg ПАРОЛЬ ПОВТОР_ПАРОЛЯ' +password_error_nick: '&fВы не можете использовать ваш ник в роли пароля' +password_error_unsafe: '&fВы не можете использовать небезопасный пароль' +reg_email_msg: '&4Регистрация: &5/reg EMAIL ПОВТОР_EMAIL' +usage_unreg: '&4Использование: &5/unregister ПАРОЛЬ' +pwd_changed: '&2Пароль изменен!' +user_unknown: '&4Такой игрок не зарегистрирован' +password_error: '&4Пароль не совпадает' +invalid_session: '&4Сессия некорректна. Дождитесь, пока она закончится' +reg_only: '&4Только для зарегистрированных! Посетите http://сайт_сервера.com/register/ для регистрации' +logged_in: '&4Вы уже авторизированы!' +logout: '&2Вы успешно вышли' +same_nick: '&4Такой игрок уже играет на сервере' +registered: '&2Успешная регистрация!' +pass_len: '&4Твой пароль либо слишком длинный, либо слишком короткий' +reload: '&6Конфигурация и база данных перезагружены' +timeout: '&4Время для авторизации истекло' +usage_changepassword: '&4Использование: &5/changepassword СТАРЫЙ_ПАРОЛЬ НОВЫЙ_ПАРОЛЬ' +name_len: '&4Ваш логин слишком длинный или слишком короткий' +regex: '&4Ваш логин содержит запрещенные символы. Разрешенные символы: REG_EX' +add_email: '&4Добавьте свой email: &5/email add ВАШ_EMAIL ВАШ_EMAIL' +bad_database_email: '&4[AuthMe] Команда &5/email&4 доступна только при работе с MySQL или SQLite. Обратититесь к администрации сервера' +recovery_email: '&4Забыли пароль? Используйте &5/email recovery ВАШ_EMAIL' +usage_captcha: '&4Вы должны ввести код, используйте: &5/captcha ' +wrong_captcha: '&4Неверный код, используйте: &5/captcha THE_CAPTCHA' +valid_captcha: '&2Вы успешно ввели код!' +kick_forvip: '&6VIP игрок зашел на переполненный сервер!' +kick_fullserver: '&4Сервер переполнен!' +usage_email_add: '&4Использование: &5/email add ВАШ_EMAIL ПОВТОР_EMAIL' +usage_email_change: '&4Использование: &5/email change СТАРЫЙ_EMAIL НОВЫЙ_EMAIL' +usage_email_recovery: '&4Использование: /email recovery EMAIL' +new_email_invalid: '[AuthMe] Недействительный новый email!' +old_email_invalid: '[AuthMe] Недействительный старый email!' +email_invalid: '[AuthMe] Недействительный email' +email_added: '[AuthMe] Email добавлен!' +email_confirm: '[AuthMe] Подтвердите ваш Email!' +email_changed: '[AuthMe] Email изменен!' +email_send: '[AuthMe] Письмо с инструкциями для восстановления было отправлено на ваш Email!' +country_banned: 'Вход с IP-адресов вашей страны воспрещен на этом сервере' +antibot_auto_enabled: '[AuthMe] AntiBot-режим автоматически включен из-за большого количества входов!' +antibot_auto_disabled: '[AuthMe] AntiBot-режим автоматичски отключен после %m мин. Надеюсь атака закончилась' diff --git a/src/main/resources/messages_sk.yml b/src/main/resources/messages/messages_sk.yml similarity index 100% rename from src/main/resources/messages_sk.yml rename to src/main/resources/messages/messages_sk.yml diff --git a/src/main/resources/messages_tr.yml b/src/main/resources/messages/messages_tr.yml similarity index 100% rename from src/main/resources/messages_tr.yml rename to src/main/resources/messages/messages_tr.yml diff --git a/src/main/resources/messages_uk.yml b/src/main/resources/messages/messages_uk.yml similarity index 100% rename from src/main/resources/messages_uk.yml rename to src/main/resources/messages/messages_uk.yml diff --git a/src/main/resources/messages_vn.yml b/src/main/resources/messages/messages_vn.yml similarity index 98% rename from src/main/resources/messages_vn.yml rename to src/main/resources/messages/messages_vn.yml index 56efede94..1722385a1 100644 --- a/src/main/resources/messages_vn.yml +++ b/src/main/resources/messages/messages_vn.yml @@ -1,59 +1,59 @@ -unknown_user: '&fNgười chơi không tồn tại trong cơ sở dữ liệu' -unsafe_spawn: '&fNơi thoát server của bạn không an toàn, đang dịch chuyển bạn tới điểm spawn của server' -not_logged_in: '&cChưa đăng nhập!' -reg_voluntarily: '&fBạn có thể đăng kí tài khoản với lệnh - "/register mật-khẩu nhập-lại-mật-khẩu"' -usage_log: '&eSử dụng: /login password' -wrong_pwd: '&cSai mật khẩu' -unregistered: '&cHuỷ đăng kí thành công!' -reg_disabled: '&cHệ thống đăng kí đã bị vô hiệu' -valid_session: '&cPhiên đăng nhập còn tồn tại, bạn không cần nhập mật khẩu' -login: '&cĐăng nhập thành công!' -vb_nonActiv: '&fTài khoản của bạn chưa được kích hoạt, kiểm tra email!' -user_regged: '&cTên đăng nhập này đã được đăng kí' -usage_reg: '&eSử dụng: /register mật-khẩu nhập-lại-mật-khẩu' -max_reg: '&fSố lượng tài khoản ở IP của bạn trong server này đã quá giới hạn cho phép' -no_perm: '&cKhông có quyền' -error: '&fCó lỗi xảy ra; Báo lại cho người điều hành server' -login_msg: '&cĐăng nhập với lệnh "/login mật-khẩu"' -reg_msg: '&cĐăng kí tài khoản với lệnh "/register mật-khẩu nhập-lại-mật-khẩu"' -reg_email_msg: '&cĐăng kí email cho tài khoản với lệnh "/register "' -usage_unreg: '&eSử dụng: /unregister mật-khẩu' -pwd_changed: '&cĐã đổi mật khẩu!' -user_unknown: '&cTài khoản này chưa được đăng kí' -password_error: '&fMật khẩu không khớp' -unvalid_session: '&fPhiên đăng nhập không hồi đáp, vui lòng chờ phiên đăng nhập kết thúc' -reg_only: '&fChỉ cho phép người đã đăng kí! Hãy vào trang http://web-của.bạn/ để đăng kí' -logged_in: '&cĐã đăng nhập!' -logout: '&cThoát đăng nhập thành công' -same_nick: '&fTài khoản đang được người khác sử dụng trong server' -registered: '&cĐăng kí thành công!' -pass_len: '&fMật khẩu của bạn quá ngắn hoặc quá dài' -reload: '&fThiết lập và dữ liệu đã được nạp lại' -timeout: '&fQuá thời gian đăng nhập' -usage_changepassword: '&eSử dụng: /changepassword mật-khẩu-cũ mật-khẩu-mới' -name_len: '&cTên đăng nhập của bạn quá ngắn hoặc quá dài' -regex: '&cTên đăng nhập của bạn có chứa kí tự đặc biệt không được cho phép. Các kí tự hợp lệ: REG_EX' -add_email: '&cVui lòng thêm địa chỉ email cho tài khoản với lệnh: /email add email-của-bạn nhập-lại-email-của-bạn' -bad_database_email: '[AuthMe] Lệnh /email chỉ hoạt động với cơ sở dữ liệu MySQL và SQLite, - hãy liên hệ điều hành viên của server' -recovery_email: '&cQuên mật khẩu? Hãy dùng lệnh /email recovery ' -usage_captcha: '&cBạn cần nhập mã xác nhận: /captcha ' -wrong_captcha: '&cSai mã xác nhận, nhập lại: /captcha ' -valid_captcha: '&aMã xác nhận hợp lệ!' -kick_forvip: '&cNgười chơi VIP đã vào server hiện đang full!' -kick_fullserver: '&cXin lỗi, hiện tại server không còn trống slot để bạn có thể vào!' -usage_email_add: '&eSử dụng: /email add ' -usage_email_change: '&eSử dụng: /email change ' -usage_email_recovery: '&eSử dụng: /email recovery ' -new_email_invalid: '[AuthMe] Địa chỉ email mới không hợp lệ!' -old_email_invalid: '[AuthMe] Địa chỉ email cũ không hợp lệ!' -email_invalid: '[AuthMe] Sai địa chỉ email' -email_added: '[AuthMe] Đã thêm địa chỉ email !' -email_confirm: '[AuthMe] Xác nhận email !' -email_changed: '[AuthMe] Đã thay đổi email !' -email_send: '[AuthMe] Đã gửi email khôi phục mật khẩu tới bạn !' -country_banned: 'Rất tiếc, quốc gia của bạn không được phép gia nhập server' -antibot_auto_enabled: '[AuthMe] AntiBot đã được kích hoạt vì lượng người chơi kết nối vượt quá giới hạn!' -antibot_auto_disabled: '[AuthMe] AntiBot tự huỷ kích hoạt sau %m phút, +unknown_user: '&fNgười chơi không tồn tại trong cơ sở dữ liệu' +unsafe_spawn: '&fNơi thoát server của bạn không an toàn, đang dịch chuyển bạn tới điểm spawn của server' +not_logged_in: '&cChưa đăng nhập!' +reg_voluntarily: '&fBạn có thể đăng kí tài khoản với lệnh + "/register mật-khẩu nhập-lại-mật-khẩu"' +usage_log: '&eSử dụng: /login password' +wrong_pwd: '&cSai mật khẩu' +unregistered: '&cHuỷ đăng kí thành công!' +reg_disabled: '&cHệ thống đăng kí đã bị vô hiệu' +valid_session: '&cPhiên đăng nhập còn tồn tại, bạn không cần nhập mật khẩu' +login: '&cĐăng nhập thành công!' +vb_nonActiv: '&fTài khoản của bạn chưa được kích hoạt, kiểm tra email!' +user_regged: '&cTên đăng nhập này đã được đăng kí' +usage_reg: '&eSử dụng: /register mật-khẩu nhập-lại-mật-khẩu' +max_reg: '&fSố lượng tài khoản ở IP của bạn trong server này đã quá giới hạn cho phép' +no_perm: '&cKhông có quyền' +error: '&fCó lỗi xảy ra; Báo lại cho người điều hành server' +login_msg: '&cĐăng nhập với lệnh "/login mật-khẩu"' +reg_msg: '&cĐăng kí tài khoản với lệnh "/register mật-khẩu nhập-lại-mật-khẩu"' +reg_email_msg: '&cĐăng kí email cho tài khoản với lệnh "/register "' +usage_unreg: '&eSử dụng: /unregister mật-khẩu' +pwd_changed: '&cĐã đổi mật khẩu!' +user_unknown: '&cTài khoản này chưa được đăng kí' +password_error: '&fMật khẩu không khớp' +unvalid_session: '&fPhiên đăng nhập không hồi đáp, vui lòng chờ phiên đăng nhập kết thúc' +reg_only: '&fChỉ cho phép người đã đăng kí! Hãy vào trang http://web-của.bạn/ để đăng kí' +logged_in: '&cĐã đăng nhập!' +logout: '&cThoát đăng nhập thành công' +same_nick: '&fTài khoản đang được người khác sử dụng trong server' +registered: '&cĐăng kí thành công!' +pass_len: '&fMật khẩu của bạn quá ngắn hoặc quá dài' +reload: '&fThiết lập và dữ liệu đã được nạp lại' +timeout: '&fQuá thời gian đăng nhập' +usage_changepassword: '&eSử dụng: /changepassword mật-khẩu-cũ mật-khẩu-mới' +name_len: '&cTên đăng nhập của bạn quá ngắn hoặc quá dài' +regex: '&cTên đăng nhập của bạn có chứa kí tự đặc biệt không được cho phép. Các kí tự hợp lệ: REG_EX' +add_email: '&cVui lòng thêm địa chỉ email cho tài khoản với lệnh: /email add email-của-bạn nhập-lại-email-của-bạn' +bad_database_email: '[AuthMe] Lệnh /email chỉ hoạt động với cơ sở dữ liệu MySQL và SQLite, + hãy liên hệ điều hành viên của server' +recovery_email: '&cQuên mật khẩu? Hãy dùng lệnh /email recovery ' +usage_captcha: '&cBạn cần nhập mã xác nhận: /captcha ' +wrong_captcha: '&cSai mã xác nhận, nhập lại: /captcha ' +valid_captcha: '&aMã xác nhận hợp lệ!' +kick_forvip: '&cNgười chơi VIP đã vào server hiện đang full!' +kick_fullserver: '&cXin lỗi, hiện tại server không còn trống slot để bạn có thể vào!' +usage_email_add: '&eSử dụng: /email add ' +usage_email_change: '&eSử dụng: /email change ' +usage_email_recovery: '&eSử dụng: /email recovery ' +new_email_invalid: '[AuthMe] Địa chỉ email mới không hợp lệ!' +old_email_invalid: '[AuthMe] Địa chỉ email cũ không hợp lệ!' +email_invalid: '[AuthMe] Sai địa chỉ email' +email_added: '[AuthMe] Đã thêm địa chỉ email !' +email_confirm: '[AuthMe] Xác nhận email !' +email_changed: '[AuthMe] Đã thay đổi email !' +email_send: '[AuthMe] Đã gửi email khôi phục mật khẩu tới bạn !' +country_banned: 'Rất tiếc, quốc gia của bạn không được phép gia nhập server' +antibot_auto_enabled: '[AuthMe] AntiBot đã được kích hoạt vì lượng người chơi kết nối vượt quá giới hạn!' +antibot_auto_disabled: '[AuthMe] AntiBot tự huỷ kích hoạt sau %m phút, hi vọng lượng kết nối sẽ giảm bớt' \ No newline at end of file diff --git a/src/main/resources/messages_zhcn.yml b/src/main/resources/messages/messages_zhcn.yml similarity index 100% rename from src/main/resources/messages_zhcn.yml rename to src/main/resources/messages/messages_zhcn.yml diff --git a/src/main/resources/messages_zhhk.yml b/src/main/resources/messages/messages_zhhk.yml similarity index 98% rename from src/main/resources/messages_zhhk.yml rename to src/main/resources/messages/messages_zhhk.yml index 173fb46cc..d66f1003c 100644 --- a/src/main/resources/messages_zhhk.yml +++ b/src/main/resources/messages/messages_zhhk.yml @@ -1,61 +1,61 @@ -# Translator: uSoc_lifehome (http://lifeho.me) # -# Translator: WaterXCubic # -# -------------------------------------------- # -unknown_user: '&8[&6Τt&8] &fΤƨäsbƮwC' -unsafe_spawn: '&8[&6Τt&8] &fAnXmwA{bNǰeA쭫IC' -not_logged_in: '&8[&6Τt&8] &cA٨SnJ I' -reg_voluntarily: '&8[&6Τt&8] &fAiHϥγoӪOӵUG m /register <бKX> n' -usage_log: '&8[&6Τt&8] &cΪkG m /login n' -wrong_pwd: '&8[&6Τt&8] &cAJF~KXC' -unregistered: '&8[&6Τt&8] &cAw\|UOC' -reg_disabled: '&8[&6Τt&8] &cAwsaUC' -valid_session: '&8[&6Τt&8] &b I ڰOoAAw^ӡ' -login: '&8[&6Τt&8] &cA\nJFC' -password_error_nick: '&fAiHϥΧAWrKX!' -password_error_unsafe: '&fAiHϥΤwKX' -vb_nonActiv: '&8[&6Τt&8] &fAb٨SgLql I' -user_regged: '&8[&6Τt&8] &cΤWwgULFC' -usage_reg: '&8[&6Τt&8] &cΪkG m /register <бKX> n' -max_reg: '&8[&6Τt&8] &fAIPa}wFUƤWC' -no_perm: '&8[&6Τt&8] &bAiH CraftingHK aʬ줤dݻC' -error: '&8[&6Τt&8] &foͿ~AлP޲zpC' -login_msg: '&8[&6Τt&8] &cШϥγoӫOӵnJG m /login n' -reg_msg: '&8[&6Τt&8] &cШϥγoӪOӵUG m /register <бKX> n' -reg_email_msg: '&8[&6Τt&8] &cШϥγoӪOӵUG m /register <йql> n' -usage_unreg: '&8[&6Τt&8] &cΪkG m /unregister n' -pwd_changed: '&8[&6Τt&8] &cA\󴫤FAKX I' -user_unknown: '&8[&6Τt&8] &cΤWSwnOơC' -password_error: '&8[&6Τt&8] &fKXŦXC' -invalid_session: '&8[&6Τt&8] &fnJqƤwlaAеݵnJqC' -reg_only: '&8[&6Τt&8] &fwU|AХ https://www.example.com/ UC' -logged_in: '&8[&6Τt&8] &cAwgnJLFC' -logout: '&8[&6Τt&8] &bA\nXFC' -same_nick: '&8[&6Τt&8] &fPWawbCC' -registered: '&8[&6Τt&8] &bA\UFC' -pass_len: '&8[&6Τt&8] &fAKXäŦXWwסC' -reload: '&8[&6Τt&8] &bnJtγ]wθƮwsJC' -timeout: '&8[&6Τt&8] &fnJOɡC' -usage_changepassword: '&8[&6Τt&8] &fΪkG m /changepassword <±KX> n' -name_len: '&8[&6Τt&8] &cAΤWŦXWwסC' -regex: '&8[&6Τt&8] &cAΤWte\ršCHU\rG REG_EX' -add_email: '&8[&6Τt&8] &bЬAbߧYK[qla}G m /email add <йqla}> n' -bad_database_email: '&8[&6Τt&8] OuAΩϥMySQLSQLiteAC' -recovery_email: '&8[&6Τt&8] &cѰOKX H ШϥγoӪOӧsKXG m /email recovery n' -usage_captcha: '&8[&6Τt&8] &cΪkG m /captcha n' -wrong_captcha: '&8[&6Τt&8] &cAJF~ҽXAШϥ m /captcha <ҽX> n AJC' -valid_captcha: '&8[&6Τt&8] &cAҿJҽXOLĪ I' -kick_forvip: '&c]VIPanJFAC' -kick_fullserver: '&cpI ]AHFAҥHAثenJAC' -usage_email_add: '&8[&6Τt&8] &fΪkG m /email add <йql> n' -usage_email_change: '&8[&6Τt&8] &fΪkG m /email change <¹ql> n' -usage_email_recovery: '&8[&6Τt&8] &fΪkG m /email recovery n' -new_email_invalid: '&8[&6Τt&8] AҶgsqla}äTC' -old_email_invalid: '&8[&6Τt&8] AҶg¹qla}äTC' -email_invalid: '&8[&6Τt&8] AҶgqla}äTC' -email_added: '&8[&6Τt&8] w[JAqla}OC' -email_confirm: '&8[&6Τt&8] ЭпJAqla}C' -email_changed: '&8[&6Τt&8] Aqla}OwC' -email_send: '&8[&6Τt&8] ѰOKXHwHXAЬdC' -country_banned: '&8[&6Τt&8] AwAaѹCAȡC' -antibot_auto_enabled: '&8[&6Τt&8] H{Ǥw]{ɤjqM`suӱҥΡC' -antibot_auto_disabled: '&8[&6Τt&8] H{ˬd줣`sƤw֡Aé %m ᰱB@C' +# Translator: uSoc_lifehome (http://lifeho.me) # +# Translator: WaterXCubic # +# -------------------------------------------- # +unknown_user: '&8[&6Τt&8] &fΤƨäsbƮwC' +unsafe_spawn: '&8[&6Τt&8] &fAnXmwA{bNǰeA쭫IC' +not_logged_in: '&8[&6Τt&8] &cA٨SnJ I' +reg_voluntarily: '&8[&6Τt&8] &fAiHϥγoӪOӵUG m /register <бKX> n' +usage_log: '&8[&6Τt&8] &cΪkG m /login n' +wrong_pwd: '&8[&6Τt&8] &cAJF~KXC' +unregistered: '&8[&6Τt&8] &cAw\|UOC' +reg_disabled: '&8[&6Τt&8] &cAwsaUC' +valid_session: '&8[&6Τt&8] &b I ڰOoAAw^ӡ' +login: '&8[&6Τt&8] &cA\nJFC' +password_error_nick: '&fAiHϥΧAWrKX!' +password_error_unsafe: '&fAiHϥΤwKX' +vb_nonActiv: '&8[&6Τt&8] &fAb٨SgLql I' +user_regged: '&8[&6Τt&8] &cΤWwgULFC' +usage_reg: '&8[&6Τt&8] &cΪkG m /register <бKX> n' +max_reg: '&8[&6Τt&8] &fAIPa}wFUƤWC' +no_perm: '&8[&6Τt&8] &bAiH CraftingHK aʬ줤dݻC' +error: '&8[&6Τt&8] &foͿ~AлP޲zpC' +login_msg: '&8[&6Τt&8] &cШϥγoӫOӵnJG m /login n' +reg_msg: '&8[&6Τt&8] &cШϥγoӪOӵUG m /register <бKX> n' +reg_email_msg: '&8[&6Τt&8] &cШϥγoӪOӵUG m /register <йql> n' +usage_unreg: '&8[&6Τt&8] &cΪkG m /unregister n' +pwd_changed: '&8[&6Τt&8] &cA\󴫤FAKX I' +user_unknown: '&8[&6Τt&8] &cΤWSwnOơC' +password_error: '&8[&6Τt&8] &fKXŦXC' +invalid_session: '&8[&6Τt&8] &fnJqƤwlaAеݵnJqC' +reg_only: '&8[&6Τt&8] &fwU|AХ https://www.example.com/ UC' +logged_in: '&8[&6Τt&8] &cAwgnJLFC' +logout: '&8[&6Τt&8] &bA\nXFC' +same_nick: '&8[&6Τt&8] &fPWawbCC' +registered: '&8[&6Τt&8] &bA\UFC' +pass_len: '&8[&6Τt&8] &fAKXäŦXWwסC' +reload: '&8[&6Τt&8] &bnJtγ]wθƮwsJC' +timeout: '&8[&6Τt&8] &fnJOɡC' +usage_changepassword: '&8[&6Τt&8] &fΪkG m /changepassword <±KX> n' +name_len: '&8[&6Τt&8] &cAΤWŦXWwסC' +regex: '&8[&6Τt&8] &cAΤWte\ršCHU\rG REG_EX' +add_email: '&8[&6Τt&8] &bЬAbߧYK[qla}G m /email add <йqla}> n' +bad_database_email: '&8[&6Τt&8] OuAΩϥMySQLSQLiteAC' +recovery_email: '&8[&6Τt&8] &cѰOKX H ШϥγoӪOӧsKXG m /email recovery n' +usage_captcha: '&8[&6Τt&8] &cΪkG m /captcha n' +wrong_captcha: '&8[&6Τt&8] &cAJF~ҽXAШϥ m /captcha <ҽX> n AJC' +valid_captcha: '&8[&6Τt&8] &cAҿJҽXOLĪ I' +kick_forvip: '&c]VIPanJFAC' +kick_fullserver: '&cpI ]AHFAҥHAثenJAC' +usage_email_add: '&8[&6Τt&8] &fΪkG m /email add <йql> n' +usage_email_change: '&8[&6Τt&8] &fΪkG m /email change <¹ql> n' +usage_email_recovery: '&8[&6Τt&8] &fΪkG m /email recovery n' +new_email_invalid: '&8[&6Τt&8] AҶgsqla}äTC' +old_email_invalid: '&8[&6Τt&8] AҶg¹qla}äTC' +email_invalid: '&8[&6Τt&8] AҶgqla}äTC' +email_added: '&8[&6Τt&8] w[JAqla}OC' +email_confirm: '&8[&6Τt&8] ЭпJAqla}C' +email_changed: '&8[&6Τt&8] Aqla}OwC' +email_send: '&8[&6Τt&8] ѰOKXHwHXAЬdC' +country_banned: '&8[&6Τt&8] AwAaѹCAȡC' +antibot_auto_enabled: '&8[&6Τt&8] H{Ǥw]{ɤjqM`suӱҥΡC' +antibot_auto_disabled: '&8[&6Τt&8] H{ˬd줣`sƤw֡Aé %m ᰱB@C' diff --git a/src/main/resources/messages_zhtw.yml b/src/main/resources/messages/messages_zhtw.yml similarity index 98% rename from src/main/resources/messages_zhtw.yml rename to src/main/resources/messages/messages_zhtw.yml index 6668976e2..5091f8414 100644 --- a/src/main/resources/messages_zhtw.yml +++ b/src/main/resources/messages/messages_zhtw.yml @@ -1,62 +1,62 @@ -# Translator: MineWolf50 -# Last Time Edit : 2015 / 7 / 14 , A.M.10:14 -# = = = = = = = = = = = = = = = = = = = = = = = # -unknown_user: "&b【AuthMe】&6沒有在資料庫內找到該玩家。" -unsafe_spawn: '&b【AuthMe】&6你登出的地點不安全,已傳送你到安全的地點。' -not_logged_in: '&b【AuthMe】&6你還沒有登入!' -reg_voluntarily: '&b【AuthMe】&6使用 &c"/register <密碼> <確認密碼>" &6來註冊你的暱稱' -usage_log: '&b【AuthMe】&6用法: &c"/login <密碼>"' -wrong_pwd: '&b【AuthMe】&6密碼錯誤!' -unregistered: '&b【AuthMe】&6你已經成功取消註冊。' -reg_disabled: '&b【AuthMe】&6已關閉註冊功能' -password_error_nick: '&b【AuthMe】&6你不可以用你的 ID ( 名稱 ) 來當作密碼 !' -password_error_unsafe: '&b【AuthMe】&6你不可以使用這個不安全的密碼' -valid_session: '&b【AuthMe】&6你已經成功登入!' -login: '&b【AuthMe】&6密碼正確,你已成功登入!' -vb_nonActiv: '&b【AuthMe】&6你的帳號還沒有經過驗證! 檢查看看你的電子信箱 (Email) 吧!' -user_regged: '&b【AuthMe】&6這個帳號已經被註冊過了!' -usage_reg: '&b【AuthMe】&6用法: &c"/register <密碼> <確認密碼>"' -max_reg: '&b【AuthMe】&6你的 IP 位置所註冊的帳號數量已經達到最大。' -no_perm: '&b【AuthMe】&6你沒有使用該指令的權限。' -error: '&b【AuthMe】&6發生錯誤,請聯繫管理員' -login_msg: '&b【AuthMe】&6請使用 &c"/login <密碼>" &6來登入。' -reg_msg: '&b【AuthMe】&6請使用 "&c/register <密碼> <確認密碼>" 來註冊。' -reg_email_msg: '&b【AuthMe】&6請使用 &c"/register <重複Email>" 來註冊' -usage_unreg: '&b【AuthMe】&6用法: &c"/unregister <密碼>"' -pwd_changed: '&b【AuthMe】&6密碼變更成功!' -user_unknown: '&b【AuthMe】&6這個帳號還沒有註冊過' -password_error: '&b【AuthMe】&6兩次輸入的密碼不一致!' -invalid_session: '&b【AuthMe】&6憑證日期不相符!' -reg_only: '&b【AuthMe】&6請到下列網站 :「 http://example.com 」 進行註冊' -logged_in: '&b【AuthMe】&6你已經登入了!' -logout: '&b【AuthMe】&6你已成功登出' -same_nick: '&b【AuthMe】&6有同樣帳號的玩家在線上!' -registered: '&b【AuthMe】&6你已成功註冊' -pass_len: '&b【AuthMe】&6你的密碼 超過最大字數 / 小於最小字數' -reload: '&b【AuthMe】&6已重新讀取設定檔及資料庫' -timeout: '&b【AuthMe】&6超過登入時間,請稍後再試一次' -usage_changepassword: '&b【AuthMe】&6用法: &c"/changepassword <舊密碼> <新密碼>"' -name_len: '&b【AuthMe】&6你的暱稱 太長 / 太短 了!' -regex: '&b【AuthMe】&6暱稱裡包含不能使用的字符' -add_email: '&b【AuthMe】&6請使用 &c"/email add <你的Email> <再次輸入你的Email>" &6來添加 Email' -bad_database_email: '&b【AuthMe】&6此指令只適用於有使用MySQL和SQLite的伺服器。' -recovery_email: '&b【AuthMe】&6忘記密碼了嗎? 使用 &c"/email recovery <你的Email>"' -usage_captcha: '&b【AuthMe】&6請用 &c"/captcha " &6來輸入你的驗證碼' -wrong_captcha: '&b【AuthMe】&6錯誤的驗證碼' -valid_captcha: '&b【AuthMe】&6驗證碼無效!' -kick_forvip: '&b【AuthMe】&6你已經被請出。&c原因 : 有 VIP 玩家登入伺服器' -kick_fullserver: '&b【AuthMe】&6伺服器已經滿了,請等等再試一次' -usage_email_add: '&b【AuthMe】&6用法: &c"/email add <你的Email> <重複Email>"' -usage_email_change: '&b【AuthMe】&6用法: &c"/email change <舊的Email> <新的Email>"' -usage_email_recovery: '&b【AuthMe】&6用法: &c"/email recovery <你的Email>"' -new_email_invalid: '&b【AuthMe】&6新的Email無效!' -old_email_invalid: '&b【AuthMe】&6舊的Email無效!' -email_invalid: '&b【AuthMe】&6無效的Email!' -email_added: '&b【AuthMe】&6已添加Email!' -email_confirm: '&b【AuthMe】&6請驗證你的Email!' -email_changed: '&b【AuthMe】&6Email已變更!' -email_send: '&b【AuthMe】&6已經送出重設密碼要求至你的Email , 請查收。' -email_exists: '&b【AuthMe】&6這個帳戶已經有設定電子郵件了' -country_banned: '&b【AuthMe】&6你所在的地區無法進入此伺服器' -antibot_auto_enabled: '&b【AuthMe】&6AntiBotMod已自動啟用!' +# Translator: MineWolf50 +# Last Time Edit : 2015 / 7 / 14 , A.M.10:14 +# = = = = = = = = = = = = = = = = = = = = = = = # +unknown_user: "&b【AuthMe】&6沒有在資料庫內找到該玩家。" +unsafe_spawn: '&b【AuthMe】&6你登出的地點不安全,已傳送你到安全的地點。' +not_logged_in: '&b【AuthMe】&6你還沒有登入!' +reg_voluntarily: '&b【AuthMe】&6使用 &c"/register <密碼> <確認密碼>" &6來註冊你的暱稱' +usage_log: '&b【AuthMe】&6用法: &c"/login <密碼>"' +wrong_pwd: '&b【AuthMe】&6密碼錯誤!' +unregistered: '&b【AuthMe】&6你已經成功取消註冊。' +reg_disabled: '&b【AuthMe】&6已關閉註冊功能' +password_error_nick: '&b【AuthMe】&6你不可以用你的 ID ( 名稱 ) 來當作密碼 !' +password_error_unsafe: '&b【AuthMe】&6你不可以使用這個不安全的密碼' +valid_session: '&b【AuthMe】&6你已經成功登入!' +login: '&b【AuthMe】&6密碼正確,你已成功登入!' +vb_nonActiv: '&b【AuthMe】&6你的帳號還沒有經過驗證! 檢查看看你的電子信箱 (Email) 吧!' +user_regged: '&b【AuthMe】&6這個帳號已經被註冊過了!' +usage_reg: '&b【AuthMe】&6用法: &c"/register <密碼> <確認密碼>"' +max_reg: '&b【AuthMe】&6你的 IP 位置所註冊的帳號數量已經達到最大。' +no_perm: '&b【AuthMe】&6你沒有使用該指令的權限。' +error: '&b【AuthMe】&6發生錯誤,請聯繫管理員' +login_msg: '&b【AuthMe】&6請使用 &c"/login <密碼>" &6來登入。' +reg_msg: '&b【AuthMe】&6請使用 "&c/register <密碼> <確認密碼>" 來註冊。' +reg_email_msg: '&b【AuthMe】&6請使用 &c"/register <重複Email>" 來註冊' +usage_unreg: '&b【AuthMe】&6用法: &c"/unregister <密碼>"' +pwd_changed: '&b【AuthMe】&6密碼變更成功!' +user_unknown: '&b【AuthMe】&6這個帳號還沒有註冊過' +password_error: '&b【AuthMe】&6兩次輸入的密碼不一致!' +invalid_session: '&b【AuthMe】&6憑證日期不相符!' +reg_only: '&b【AuthMe】&6請到下列網站 :「 http://example.com 」 進行註冊' +logged_in: '&b【AuthMe】&6你已經登入了!' +logout: '&b【AuthMe】&6你已成功登出' +same_nick: '&b【AuthMe】&6有同樣帳號的玩家在線上!' +registered: '&b【AuthMe】&6你已成功註冊' +pass_len: '&b【AuthMe】&6你的密碼 超過最大字數 / 小於最小字數' +reload: '&b【AuthMe】&6已重新讀取設定檔及資料庫' +timeout: '&b【AuthMe】&6超過登入時間,請稍後再試一次' +usage_changepassword: '&b【AuthMe】&6用法: &c"/changepassword <舊密碼> <新密碼>"' +name_len: '&b【AuthMe】&6你的暱稱 太長 / 太短 了!' +regex: '&b【AuthMe】&6暱稱裡包含不能使用的字符' +add_email: '&b【AuthMe】&6請使用 &c"/email add <你的Email> <再次輸入你的Email>" &6來添加 Email' +bad_database_email: '&b【AuthMe】&6此指令只適用於有使用MySQL和SQLite的伺服器。' +recovery_email: '&b【AuthMe】&6忘記密碼了嗎? 使用 &c"/email recovery <你的Email>"' +usage_captcha: '&b【AuthMe】&6請用 &c"/captcha " &6來輸入你的驗證碼' +wrong_captcha: '&b【AuthMe】&6錯誤的驗證碼' +valid_captcha: '&b【AuthMe】&6驗證碼無效!' +kick_forvip: '&b【AuthMe】&6你已經被請出。&c原因 : 有 VIP 玩家登入伺服器' +kick_fullserver: '&b【AuthMe】&6伺服器已經滿了,請等等再試一次' +usage_email_add: '&b【AuthMe】&6用法: &c"/email add <你的Email> <重複Email>"' +usage_email_change: '&b【AuthMe】&6用法: &c"/email change <舊的Email> <新的Email>"' +usage_email_recovery: '&b【AuthMe】&6用法: &c"/email recovery <你的Email>"' +new_email_invalid: '&b【AuthMe】&6新的Email無效!' +old_email_invalid: '&b【AuthMe】&6舊的Email無效!' +email_invalid: '&b【AuthMe】&6無效的Email!' +email_added: '&b【AuthMe】&6已添加Email!' +email_confirm: '&b【AuthMe】&6請驗證你的Email!' +email_changed: '&b【AuthMe】&6Email已變更!' +email_send: '&b【AuthMe】&6已經送出重設密碼要求至你的Email , 請查收。' +email_exists: '&b【AuthMe】&6這個帳戶已經有設定電子郵件了' +country_banned: '&b【AuthMe】&6你所在的地區無法進入此伺服器' +antibot_auto_enabled: '&b【AuthMe】&6AntiBotMod已自動啟用!' antibot_auto_disabled: '&b【AuthMe】&6AntiBotMod將會於 &c%m &6分鐘後自動關閉' \ No newline at end of file From d13f8fc512245c674cf9d3445c47b2577ef83195 Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Sat, 5 Sep 2015 00:50:08 +0200 Subject: [PATCH 08/10] Fix build xD --- pom.xml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index a924c7f50..e13f330ef 100644 --- a/pom.xml +++ b/pom.xml @@ -82,9 +82,7 @@ - org.slf4j:slf4j-api - org.apache.logging.log4j:log4j-slf4j-impl - com.zaxxer:HikariCP + com.zaxxer:HikariCP-Log4J com.maxmind.geoip:geoip-api com.sun.mail:javax.mail com.comphenix.attribute:AttributeStorage From 78d6b9cc6baa1631ebc58e3cc9f359b12b6116b7 Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Sat, 5 Sep 2015 12:40:36 +0200 Subject: [PATCH 09/10] Ok, it's too complex to use the log4j implementation xD --- pom.xml | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/pom.xml b/pom.xml index e13f330ef..cecb3117f 100644 --- a/pom.xml +++ b/pom.xml @@ -82,7 +82,8 @@ - com.zaxxer:HikariCP-Log4J + com.zaxxer:HikariCP + org.slf4j:slf4j-simple com.maxmind.geoip:geoip-api com.sun.mail:javax.mail com.comphenix.attribute:AttributeStorage @@ -172,8 +173,8 @@ - hikaricp-log4j-releases - http://nexus-sgdc3.rhcloud.com/nexus/content/repositories/hikaricp-log4j-releases/ + hikaricp-log4j-releases + http://nexus-sgdc3.rhcloud.com/nexus/content/repositories/hikaricp-log4j-releases/ @@ -185,19 +186,9 @@ com.zaxxer - HikariCP-Log4J + HikariCP 2.4.1 compile - - - org.slf4j - slf4j-api - - - org.apache.logging.log4j - log4j-core - - From 3926faeb35c4379591bdf17a4b682720b547f6c1 Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Sun, 6 Sep 2015 13:51:35 +0200 Subject: [PATCH 10/10] Fix Hikari timeouts --- pom.xml | 5 +++++ src/main/java/fr/xephi/authme/datasource/MySQL.java | 6 +++--- src/main/java/fr/xephi/authme/datasource/SQLite_HIKARI.java | 6 +++--- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index cecb3117f..7182eff48 100644 --- a/pom.xml +++ b/pom.xml @@ -13,6 +13,11 @@ http://dev.bukkit.org/bukkit-plugins/authme-reloaded/ + + AuthMe-Team + https://github.com/AuthMe-Team + + scm:git:https://github.com/Xephi/AuthMeReloaded.git scm:git:git@github.com:Xephi/AuthMeReloaded.git diff --git a/src/main/java/fr/xephi/authme/datasource/MySQL.java b/src/main/java/fr/xephi/authme/datasource/MySQL.java index 73f730ad6..24e37dbcd 100644 --- a/src/main/java/fr/xephi/authme/datasource/MySQL.java +++ b/src/main/java/fr/xephi/authme/datasource/MySQL.java @@ -138,9 +138,9 @@ public class MySQL implements DataSource { config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); config.addDataSourceProperty("autoReconnect", false); config.setInitializationFailFast(true); // Don't start the plugin if the database is unavariable - config.setMaxLifetime(60000); // 60 Sec - config.setIdleTimeout(45000); // 45 Sec - config.setMaximumPoolSize(50); // 50 Connections (including idle connections) + config.setMaxLifetime(180000); // 3 Min + config.setIdleTimeout(60000); // 1 Min + config.setMaximumPoolSize(50); // 50 (including idle connections) ds = new HikariDataSource(config); ConsoleLogger.info("Connection arguments loaded, Hikari ConnectionPool ready!"); } diff --git a/src/main/java/fr/xephi/authme/datasource/SQLite_HIKARI.java b/src/main/java/fr/xephi/authme/datasource/SQLite_HIKARI.java index 767a5da7d..2b6ea3869 100644 --- a/src/main/java/fr/xephi/authme/datasource/SQLite_HIKARI.java +++ b/src/main/java/fr/xephi/authme/datasource/SQLite_HIKARI.java @@ -126,9 +126,9 @@ public class SQLite_HIKARI implements DataSource { config.setJdbcUrl("jdbc:sqlite:plugins/AuthMe/" + database + ".db"); config.setInitializationFailFast(true); // Don't start the plugin if the database is unavariable config.setConnectionTestQuery("SELECT 1"); - config.setMaxLifetime(60000); // 60 Sec - config.setIdleTimeout(45000); // 45 Sec - config.setMaximumPoolSize(50); // 50 Connections (including idle connections) + config.setMaxLifetime(180000); // 3 Min + config.setIdleTimeout(60000); // 1 Min + config.setMaximumPoolSize(50); // 50 (including idle connections) ds = new HikariDataSource(config); ConsoleLogger.info("Connection arguments loaded, Hikari ConnectionPool ready!"); }