From e30fc38bd9602c2f39b393c7c5404a2a781e93c0 Mon Sep 17 00:00:00 2001
From: Florian Jenett
Date: Sun, 16 Dec 2012 12:40:56 +0100
Subject: [PATCH 1/9] initial commit to gh-pages
---
documentation/DeBezierDataSQL.html | 279 +++
documentation/allclasses-frame.html | 43 +
documentation/allclasses-noframe.html | 43 +
documentation/constant-values.html | 144 ++
documentation/de/bezier/data/sql/MySQL.html | 333 ++++
.../de/bezier/data/sql/PostgreSQL.html | 343 ++++
documentation/de/bezier/data/sql/SQL.html | 1518 +++++++++++++++++
documentation/de/bezier/data/sql/SQLite.html | 339 ++++
.../de/bezier/data/sql/mapper/NameMapper.html | 243 +++
.../mapper/UnderScoreToCamelCaseMapper.html | 314 ++++
.../bezier/data/sql/mapper/package-frame.html | 43 +
.../data/sql/mapper/package-summary.html | 170 ++
.../bezier/data/sql/mapper/package-tree.html | 157 ++
.../de/bezier/data/sql/package-frame.html | 38 +
.../de/bezier/data/sql/package-summary.html | 167 ++
.../de/bezier/data/sql/package-tree.html | 153 ++
documentation/deprecated-list.html | 144 ++
documentation/help-doc.html | 217 +++
documentation/index-all.html | 448 +++++
documentation/index.html | 39 +
documentation/overview-frame.html | 46 +
documentation/overview-summary.html | 158 ++
documentation/overview-tree.html | 158 ++
documentation/package-frame.html | 32 +
documentation/package-list | 3 +
documentation/package-summary.html | 156 ++
documentation/package-tree.html | 151 ++
documentation/resources/inherit.gif | Bin 0 -> 57 bytes
documentation/stylesheet.css | 269 +++
download/BezierSQLib-0.2.0.zip | Bin 0 -> 2124579 bytes
examples/MySQL_example1.zip | Bin 0 -> 670 bytes
examples/MySQL_example1/MySQL_example1.pde | 49 +
examples/MySQL_example2.zip | Bin 0 -> 669 bytes
examples/MySQL_example2/MySQL_example2.pde | 57 +
examples/MySQL_example3.zip | Bin 0 -> 935 bytes
examples/MySQL_example3/MySQL_example3.pde | 54 +
examples/MySQL_example3/data/test.db | Bin 0 -> 2048 bytes
examples/MySQL_timestamp.zip | Bin 0 -> 562 bytes
examples/MySQL_timestamp/MySQL_timestamp.pde | 41 +
examples/PostgreSQL_example1.zip | Bin 0 -> 711 bytes
.../PostgreSQL_example1.pde | 57 +
examples/SQLite_example1.zip | Bin 0 -> 800 bytes
examples/SQLite_example1/SQLite_example1.pde | 33 +
examples/SQLite_example1/data/test.db | Bin 0 -> 2048 bytes
examples/SQLite_example2.zip | Bin 0 -> 824 bytes
examples/SQLite_example2/SQLite_example2.pde | 38 +
examples/SQLite_example2/data/test.db | Bin 0 -> 2048 bytes
index.html | 164 ++
stylesheet.css | 222 +++
49 files changed, 6863 insertions(+)
create mode 100644 documentation/DeBezierDataSQL.html
create mode 100644 documentation/allclasses-frame.html
create mode 100644 documentation/allclasses-noframe.html
create mode 100644 documentation/constant-values.html
create mode 100644 documentation/de/bezier/data/sql/MySQL.html
create mode 100644 documentation/de/bezier/data/sql/PostgreSQL.html
create mode 100644 documentation/de/bezier/data/sql/SQL.html
create mode 100644 documentation/de/bezier/data/sql/SQLite.html
create mode 100644 documentation/de/bezier/data/sql/mapper/NameMapper.html
create mode 100644 documentation/de/bezier/data/sql/mapper/UnderScoreToCamelCaseMapper.html
create mode 100644 documentation/de/bezier/data/sql/mapper/package-frame.html
create mode 100644 documentation/de/bezier/data/sql/mapper/package-summary.html
create mode 100644 documentation/de/bezier/data/sql/mapper/package-tree.html
create mode 100644 documentation/de/bezier/data/sql/package-frame.html
create mode 100644 documentation/de/bezier/data/sql/package-summary.html
create mode 100644 documentation/de/bezier/data/sql/package-tree.html
create mode 100644 documentation/deprecated-list.html
create mode 100644 documentation/help-doc.html
create mode 100644 documentation/index-all.html
create mode 100644 documentation/index.html
create mode 100644 documentation/overview-frame.html
create mode 100644 documentation/overview-summary.html
create mode 100644 documentation/overview-tree.html
create mode 100644 documentation/package-frame.html
create mode 100644 documentation/package-list
create mode 100644 documentation/package-summary.html
create mode 100644 documentation/package-tree.html
create mode 100644 documentation/resources/inherit.gif
create mode 100644 documentation/stylesheet.css
create mode 100644 download/BezierSQLib-0.2.0.zip
create mode 100644 examples/MySQL_example1.zip
create mode 100644 examples/MySQL_example1/MySQL_example1.pde
create mode 100644 examples/MySQL_example2.zip
create mode 100644 examples/MySQL_example2/MySQL_example2.pde
create mode 100644 examples/MySQL_example3.zip
create mode 100644 examples/MySQL_example3/MySQL_example3.pde
create mode 100644 examples/MySQL_example3/data/test.db
create mode 100644 examples/MySQL_timestamp.zip
create mode 100644 examples/MySQL_timestamp/MySQL_timestamp.pde
create mode 100644 examples/PostgreSQL_example1.zip
create mode 100644 examples/PostgreSQL_example1/PostgreSQL_example1.pde
create mode 100644 examples/SQLite_example1.zip
create mode 100644 examples/SQLite_example1/SQLite_example1.pde
create mode 100644 examples/SQLite_example1/data/test.db
create mode 100644 examples/SQLite_example2.zip
create mode 100644 examples/SQLite_example2/SQLite_example2.pde
create mode 100644 examples/SQLite_example2/data/test.db
create mode 100644 index.html
create mode 100644 stylesheet.css
diff --git a/documentation/DeBezierDataSQL.html b/documentation/DeBezierDataSQL.html
new file mode 100644
index 0000000..c906215
--- /dev/null
+++ b/documentation/DeBezierDataSQL.html
@@ -0,0 +1,279 @@
+
+
+
+
+
+
+DeBezierDataSQL (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class DeBezierDataSQL
+
+java.lang.Object
+ DeBezierDataSQL
+
+
+
+public class DeBezierDataSQL extends java.lang.Object
+
+
+
+In Java classes in a package can not gain access to
+ classes outside any package through reflection.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+static java.lang.Object[]
+getValuesFromObject (SQL db,
+ java.lang.reflect.Field[] fields,
+ java.lang.reflect.Method[] getters,
+ java.lang.Object object)
+
+
+
+
+
+
+static void
+setFromRow (SQL db,
+ java.lang.Object object)
+
+
+
+
+
+
+
+
+Methods inherited from class java.lang.Object
+
+
+equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+DeBezierDataSQL
+
+public DeBezierDataSQL ()
+
+
+
+
+
+
+
+
+
+setFromRow
+
+public static void setFromRow (SQL db,
+ java.lang.Object object)
+
+
+
+
+
+
+
+
+getValuesFromObject
+
+public static java.lang.Object[] getValuesFromObject (SQL db,
+ java.lang.reflect.Field[] fields,
+ java.lang.reflect.Method[] getters,
+ java.lang.Object object)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Processing library BezierSQLib (formerly SQLibrary) by Florian Jenett. (c) 2005 - 2012
+
+
diff --git a/documentation/allclasses-frame.html b/documentation/allclasses-frame.html
new file mode 100644
index 0000000..455c820
--- /dev/null
+++ b/documentation/allclasses-frame.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+All Classes (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+All Classes
+
+
+
+
+
+
diff --git a/documentation/allclasses-noframe.html b/documentation/allclasses-noframe.html
new file mode 100644
index 0000000..b4f62a6
--- /dev/null
+++ b/documentation/allclasses-noframe.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+All Classes (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+All Classes
+
+
+
+
+
+
diff --git a/documentation/constant-values.html b/documentation/constant-values.html
new file mode 100644
index 0000000..320dafc
--- /dev/null
+++ b/documentation/constant-values.html
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+Constant Field Values (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constant Field Values
+
+
+Contents
+
+
+
+
+
+
+
+
+
+
+
+
+Processing library BezierSQLib (formerly SQLibrary) by Florian Jenett. (c) 2005 - 2012
+
+
diff --git a/documentation/de/bezier/data/sql/MySQL.html b/documentation/de/bezier/data/sql/MySQL.html
new file mode 100644
index 0000000..d0bf766
--- /dev/null
+++ b/documentation/de/bezier/data/sql/MySQL.html
@@ -0,0 +1,333 @@
+
+
+
+
+
+
+MySQL (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+de.bezier.data.sql
+
+Class MySQL
+
+java.lang.Object
+ de.bezier.data.sql.SQL
+ de.bezier.data.sql.MySQL
+
+
+
+public class MySQL extends SQL
+
+
+
+MySQL wrapper for SQL library for Processing 1+
+
+ A wrapper around some of sun's java.sql.* classes
+ and the "com.mysql.jdbc.Driver" driver by mysql.com (GPL).
+
+ see:
+ - http://www.mysql.com/products/connector/j/
+ - http://java.sun.com/products/jdbc/
+
+
+
+
+Author:
+ Florian Jenett - mail@florianjenett.de
+
+ created: 07.05.2005 - 12:46 Uhr
+ modified: 2012-02
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+MySQL (processing.core.PApplet _papplet,
+ java.lang.String _database)
+
+
+
+
+
+MySQL (processing.core.PApplet _papplet,
+ java.lang.String _server,
+ java.lang.String _database,
+ java.lang.String _user,
+ java.lang.String _pass)
+
+
+ Creates a new MySQL connection.
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+ java.lang.String[]
+getTableNames ()
+
+
+ Get names of available tables in active database,
+ needs to be implemented per db adapter.
+
+
+
+
+
+Methods inherited from class de.bezier.data.sql.SQL
+
+
+close , connect , dispose , escape , execute , execute , getBigDecimal , getBigDecimal , getBoolean , getBoolean , getColumnNames , getConnection , getDate , getDate , getDebug , getDouble , getDouble , getFloat , getFloat , getInt , getInt , getLong , getLong , getNameMapper , getObject , getObject , getString , getString , getTime , getTime , getTimestamp , getTimestamp , insertUpdateInDatabase , nameToGetter , nameToSetter , next , query , query , registerTableNameForClass , saveToDatabase , saveToDatabase , setDebug , setFromRow , setNameMapper
+
+
+
+
+
+Methods inherited from class java.lang.Object
+
+
+equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+MySQL
+
+public MySQL (processing.core.PApplet _papplet,
+ java.lang.String _database)
+
+
+
+
+
+MySQL
+
+public MySQL (processing.core.PApplet _papplet,
+ java.lang.String _server,
+ java.lang.String _database,
+ java.lang.String _user,
+ java.lang.String _pass)
+
+Creates a new MySQL connection.
+
+
+Parameters: _papplet - Normally you'd pass "this" in for your sketch_server - The server running the database, try "localhost"_database - Name of the database_user - Username for that database_pass - Password for user
+
+
+
+
+
+
+
+
+getTableNames
+
+public java.lang.String[] getTableNames ()
+
+Description copied from class: SQL
+Get names of available tables in active database,
+ needs to be implemented per db adapter.
+
+
+Specified by: getTableNames in class SQL
+
+
+
+Returns: String[] The table names
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Processing library BezierSQLib (formerly SQLibrary) by Florian Jenett. (c) 2005 - 2012
+
+
diff --git a/documentation/de/bezier/data/sql/PostgreSQL.html b/documentation/de/bezier/data/sql/PostgreSQL.html
new file mode 100644
index 0000000..877236c
--- /dev/null
+++ b/documentation/de/bezier/data/sql/PostgreSQL.html
@@ -0,0 +1,343 @@
+
+
+
+
+
+
+PostgreSQL (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+de.bezier.data.sql
+
+Class PostgreSQL
+
+java.lang.Object
+ de.bezier.data.sql.SQL
+ de.bezier.data.sql.PostgreSQL
+
+
+
+public class PostgreSQL extends SQL
+
+
+
+PostgreSQL wrapper for SQL library for Processing 1+
+
+ This is a wrapper around some of sun's java.sql.* classes
+ and the "org.postgresql.Driver" driver by postgresql.org (BSD).
+
+ see:
+ http://jdbc.postgresql.org/download.html
+ http://java.sun.com/products/jdbc/
+
+
+ PostgreSQL on OS-X (i used a mix of these on 10.5.x):
+ http://developer.apple.com/internet/opensource/postgres.html
+ http://shifteleven.com/articles/2008/03/21/installing-postgresql-on-leopard-using-macports
+ http://systems.takizo.com/2008/03/10/installing-postgresql-82-on-leopard-with-macports/
+
+ PostgreSQL documentation is at:
+ http://www.postgresql.org/docs/8.3/interactive/index.html
+
+
+
+
+
+Author:
+ Florian Jenett - mail@florianjenett.de
+
+ created: 2008-11-29 17:49:23 - fjenett
+ modified: fjenett 2012-02
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+PostgreSQL (processing.core.PApplet _papplet,
+ java.lang.String _database)
+
+
+
+
+
+PostgreSQL (processing.core.PApplet _papplet,
+ java.lang.String _server,
+ java.lang.String _database,
+ java.lang.String _user,
+ java.lang.String _pass)
+
+
+ Creates a new PostgreSQL connection.
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+ java.lang.String[]
+getTableNames ()
+
+
+ Get names of available tables in active database,
+ needs to be implemented per db adapter.
+
+
+
+
+
+Methods inherited from class de.bezier.data.sql.SQL
+
+
+close , connect , dispose , escape , execute , execute , getBigDecimal , getBigDecimal , getBoolean , getBoolean , getColumnNames , getConnection , getDate , getDate , getDebug , getDouble , getDouble , getFloat , getFloat , getInt , getInt , getLong , getLong , getNameMapper , getObject , getObject , getString , getString , getTime , getTime , getTimestamp , getTimestamp , insertUpdateInDatabase , nameToGetter , nameToSetter , next , query , query , registerTableNameForClass , saveToDatabase , saveToDatabase , setDebug , setFromRow , setNameMapper
+
+
+
+
+
+Methods inherited from class java.lang.Object
+
+
+equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+PostgreSQL
+
+public PostgreSQL (processing.core.PApplet _papplet,
+ java.lang.String _database)
+
+
+
+
+
+PostgreSQL
+
+public PostgreSQL (processing.core.PApplet _papplet,
+ java.lang.String _server,
+ java.lang.String _database,
+ java.lang.String _user,
+ java.lang.String _pass)
+
+Creates a new PostgreSQL connection.
+
+
+Parameters: _papplet - Normally you'd pass "this" in for your sketch_server - The server running the database, try "localhost"_database - Name of the database_user - Username for that database_pass - Password for user
+
+
+
+
+
+
+
+
+getTableNames
+
+public java.lang.String[] getTableNames ()
+
+Description copied from class: SQL
+Get names of available tables in active database,
+ needs to be implemented per db adapter.
+
+
+Specified by: getTableNames in class SQL
+
+
+
+Returns: String[] The table names
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Processing library BezierSQLib (formerly SQLibrary) by Florian Jenett. (c) 2005 - 2012
+
+
diff --git a/documentation/de/bezier/data/sql/SQL.html b/documentation/de/bezier/data/sql/SQL.html
new file mode 100644
index 0000000..f0c2590
--- /dev/null
+++ b/documentation/de/bezier/data/sql/SQL.html
@@ -0,0 +1,1518 @@
+
+
+
+
+
+
+SQL (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+de.bezier.data.sql
+
+Class SQL
+
+java.lang.Object
+ de.bezier.data.sql.SQL
+
+
+Direct Known Subclasses: MySQL , PostgreSQL , SQLite
+
+
+
+public abstract class SQL extends java.lang.Object
+
+
+
+
SQL library for Processing 1+
+
+ Since v 0.2.0 it has some ORM like features, see
+
+
+ Links:
+ http://www.mysql.com/products/connector/j/
+ http://java.sun.com/products/jdbc/
+ http://www.toxi.co.uk/blog/2007/07/using-javadb-and-db4o-in-processing.htm
+ http://www.tom-carden.co.uk/2007/07/30/a-quick-note-on-using-sqlite-in-processing/
+
+
+
+
+
+Author:
+ Florian Jenett - mail@florianjenett.de
+
+ created: 07.05.2005 - 12:46 Uhr
+ modified: fjenett 2012-02
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+
+
+ java.sql.Connection
+connection
+
+
+
+
+
+
+ java.lang.String
+database
+
+
+
+
+
+
+ java.lang.String
+driver
+
+
+
+
+
+
+ java.lang.String
+previousQuery
+
+
+
+
+
+
+ java.sql.ResultSet
+result
+
+
+
+
+
+
+ java.lang.String
+server
+
+
+
+
+
+
+ java.sql.Statement
+statement
+
+
+
+
+
+
+ java.lang.String
+type
+
+
+
+
+
+
+ java.lang.String
+url
+
+
+
+
+
+
+ java.lang.String
+user
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+SQL ()
+
+
+ Do not use this contructor.
+
+
+SQL (processing.core.PApplet _pa,
+ java.lang.String _db)
+
+
+ You should not directly use the SQL.class instead use the classes for your database type.
+
+
+SQL (processing.core.PApplet _pa,
+ java.lang.String _serv,
+ java.lang.String _db,
+ java.lang.String _u,
+ java.lang.String _p)
+
+
+ You should not directly use the SQL.class instead use the classes for your database type.
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+ void
+close ()
+
+
+ Close the database connection
+
+
+
+ boolean
+connect ()
+
+
+ Open the database connection with the parameters given in the contructor.
+
+
+
+ void
+dispose ()
+
+
+ Callback function for PApplet.registerDispose()
+
+
+
+ java.lang.String
+escape (java.lang.Object o)
+
+
+ Escape ...
+
+
+
+ void
+execute (java.lang.String _sql)
+
+
+ Execute a SQL command on the open database connection.
+
+
+
+ void
+execute (java.lang.String _sql,
+ java.lang.Object... args)
+
+
+ Execute a SQL command on the open database connection.
+
+
+
+ java.math.BigDecimal
+getBigDecimal (int _column)
+
+
+
+
+
+
+ java.math.BigDecimal
+getBigDecimal (java.lang.String _field)
+
+
+ Read a java.math.BigDecimal value from the specified field.
+
+
+
+ boolean
+getBoolean (int _column)
+
+
+
+
+
+
+ boolean
+getBoolean (java.lang.String _field)
+
+
+ Read a boolean value from the specified field.
+
+
+
+ java.lang.String[]
+getColumnNames ()
+
+
+ Returns an array with the column names of the last request.
+
+
+
+ java.sql.Connection
+getConnection ()
+
+
+ Get connection.
+
+
+
+ java.sql.Date
+getDate (int _column)
+
+
+
+
+
+
+ java.sql.Date
+getDate (java.lang.String _field)
+
+
+ Read a java.sql.Date value from the specified field.
+
+
+
+ boolean
+getDebug ()
+
+
+
+
+
+
+ double
+getDouble (int _column)
+
+
+
+
+
+
+ double
+getDouble (java.lang.String _field)
+
+
+ Read a double value from the specified field.
+
+
+
+ float
+getFloat (int _column)
+
+
+
+
+
+
+ float
+getFloat (java.lang.String _field)
+
+
+ Read a float value from the specified field.
+
+
+
+ int
+getInt (int _column)
+
+
+
+
+
+
+ int
+getInt (java.lang.String _field)
+
+
+ Read an integer value from the specified field.
+
+
+
+ long
+getLong (int _column)
+
+
+
+
+
+
+ long
+getLong (java.lang.String _field)
+
+
+ Read a long value from the specified field.
+
+
+
+ NameMapper
+getNameMapper ()
+
+
+ Get the current NameMapper
+
+
+
+ java.lang.Object
+getObject (int _column)
+
+
+
+
+
+
+ java.lang.Object
+getObject (java.lang.String _field)
+
+
+ Read a value from the specified field to hav it returned as an object.
+
+
+
+ java.lang.String
+getString (int _column)
+
+
+
+
+
+
+ java.lang.String
+getString (java.lang.String _field)
+
+
+ Read a String value from the specified field.
+
+
+
+abstract java.lang.String[]
+getTableNames ()
+
+
+ Get names of available tables in active database,
+ needs to be implemented per db adapter.
+
+
+
+ java.sql.Time
+getTime (int _column)
+
+
+
+
+
+
+ java.sql.Time
+getTime (java.lang.String _field)
+
+
+ Read a java.sql.Time value from the specified field.
+
+
+
+ java.sql.Timestamp
+getTimestamp (int _column)
+
+
+
+
+
+
+ java.sql.Timestamp
+getTimestamp (java.lang.String _field)
+
+
+ Read a java.sql.Timestamp value from the specified field.
+
+
+
+ void
+insertUpdateInDatabase (java.lang.String tableName,
+ java.lang.String[] columnNames,
+ java.lang.Object[] values)
+
+
+ Insert or update a bunch of values in the database.
+
+
+
+ java.lang.String
+nameToGetter (java.lang.String name)
+
+
+ Convert a field name to a getter name: fieldName -> getFieldName().
+
+
+
+ java.lang.String
+nameToSetter (java.lang.String name)
+
+
+ Convert a field name to a setter name: fieldName -> setFieldName().
+
+
+
+ boolean
+next ()
+
+
+ Check if more results (rows) are available.
+
+
+
+ void
+query (java.lang.String _sql)
+
+
+ Issue a query on the open database connection
+
+
+
+ void
+query (java.lang.String _sql,
+ java.lang.Object... args)
+
+
+ Issue a query on the open database connection.
+
+
+
+ void
+registerTableNameForClass (java.lang.String name,
+ java.lang.Object classOrObject)
+
+
+ Set a table name for a class.
+
+
+
+ void
+saveToDatabase (java.lang.Object object)
+
+
+ Take an object, try to find table name from object name (or look it up),
+ get fields and getters from object and pass that on to
+ insertUpdateIntoDatabase(table, columns, values).
+
+
+
+ void
+saveToDatabase (java.lang.String tableName,
+ java.lang.Object object)
+
+
+ Takes a table name and an object and tries to construct a set of
+ columns names from fields and getters found in the object.
+
+
+
+ void
+setDebug (boolean yesNo)
+
+
+ Turn some debugging on/off.
+
+
+
+ void
+setFromRow (java.lang.Object object)
+
+
+ Highly experimental ...
+ tries to map column names to public fields or setter methods
+ in the given object.
+
+
+
+ void
+setNameMapper (NameMapper mapper)
+
+
+ Set the current NameMapper
+
+
+
+
+
+Methods inherited from class java.lang.Object
+
+
+equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+
+
+
+
+
+
+
+
+
+
+
+server
+
+public java.lang.String server
+
+
+
+
+
+
+
+database
+
+public java.lang.String database
+
+
+
+
+
+
+
+url
+
+public java.lang.String url
+
+
+
+
+
+
+
+user
+
+public java.lang.String user
+
+
+
+
+
+
+
+driver
+
+public java.lang.String driver
+
+
+
+
+
+
+
+type
+
+public java.lang.String type
+
+
+
+
+
+
+
+connection
+
+public java.sql.Connection connection
+
+
+
+
+
+
+
+previousQuery
+
+public java.lang.String previousQuery
+
+
+
+
+
+
+
+statement
+
+public java.sql.Statement statement
+
+
+
+
+
+
+
+result
+
+public java.sql.ResultSet result
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+SQL
+
+public SQL ()
+
+Do not use this contructor.
+
+
+
+
+
+SQL
+
+public SQL (processing.core.PApplet _pa,
+ java.lang.String _db)
+
+You should not directly use the SQL.class instead use the classes for your database type.
+
+
+
+
+
+SQL
+
+public SQL (processing.core.PApplet _pa,
+ java.lang.String _serv,
+ java.lang.String _db,
+ java.lang.String _u,
+ java.lang.String _p)
+
+You should not directly use the SQL.class instead use the classes for your database type.
+
+
+
+
+
+
+
+
+
+setDebug
+
+public void setDebug (boolean yesNo)
+
+Turn some debugging on/off.
+
+
+Parameters: yesNo - Turn it on or off
+
+
+
+
+
+getDebug
+
+public boolean getDebug ()
+
+
+
+
+
+
+
+
+connect
+
+public boolean connect ()
+
+Open the database connection with the parameters given in the contructor.
+
+
+
+
+
+
+
+
+execute
+
+public void execute (java.lang.String _sql)
+
+Execute a SQL command on the open database connection.
+
+
+Parameters: _sql - The SQL command to execute
+
+
+
+
+
+execute
+
+public void execute (java.lang.String _sql,
+ java.lang.Object... args)
+
+Execute a SQL command on the open database connection.
+ Arguments are passed to String.format() first.
+
+
+Parameters: _sql - SQL command as pattern for String.format()args - Zero or more objects to be passed to String.format()See Also: Format syntax ,
+String.format(java.lang.String,java.lang.Object...)
+
+
+
+
+
+query
+
+public void query (java.lang.String _sql)
+
+Issue a query on the open database connection
+
+
+Parameters: _sql - SQL command to execute for the query
+
+
+
+
+
+query
+
+public void query (java.lang.String _sql,
+ java.lang.Object... args)
+
+Issue a query on the open database connection.
+ Arguments are passed to String.format() first.
+
+
+Parameters: _sql - SQL command as pattern for String.format()args - Zero or more objects to be passed to String.format()See Also: Format syntax ,
+String.format(java.lang.String,java.lang.Object...)
+
+
+
+
+
+next
+
+public boolean next ()
+
+Check if more results (rows) are available. This needs to be called before any results can be retrieved.
+
+
+
+Returns: boolean true if more results are available, false otherwise
+
+
+
+
+
+getTableNames
+
+public abstract java.lang.String[] getTableNames ()
+
+Get names of available tables in active database,
+ needs to be implemented per db adapter.
+
+
+
+Returns: String[] The table names
+
+
+
+
+
+getColumnNames
+
+public java.lang.String[] getColumnNames ()
+
+Returns an array with the column names of the last request.
+
+
+
+Returns: String[] the column names of last result or null
+
+
+
+
+
+getConnection
+
+public java.sql.Connection getConnection ()
+
+Get connection. ... in case you want to do JDBC stuff directly.
+
+
+
+Returns: java.sql.Connection The connection
+
+
+
+
+
+getInt
+
+public int getInt (java.lang.String _field)
+
+Read an integer value from the specified field.
+ Represents an INT / INTEGER type:
+ http://java.sun.com/j2se/1.3/docs/guide/jdbc/getstart/mapping.html
+ "8.9.6 Conversions by ResultSet.getXXX Methods"
+
+
+Parameters: _field - The name of the field
+Returns: int Value of the field or 0
+
+
+
+
+
+getInt
+
+public int getInt (int _column)
+
+
+
+
+
+
+
+
+getLong
+
+public long getLong (java.lang.String _field)
+
+Read a long value from the specified field.
+ Represents a BIGINT type:
+ http://java.sun.com/j2se/1.3/docs/guide/jdbc/getstart/mapping.html
+ "8.9.6 Conversions by ResultSet.getXXX Methods"
+
+
+Parameters: _field - The name of the field
+Returns: long Value of the field or 0
+
+
+
+
+
+getLong
+
+public long getLong (int _column)
+
+
+
+
+
+
+
+
+getFloat
+
+public float getFloat (java.lang.String _field)
+
+Read a float value from the specified field.
+ Represents a REAL type:
+ http://java.sun.com/j2se/1.3/docs/guide/jdbc/getstart/mapping.html
+ "8.9.6 Conversions by ResultSet.getXXX Methods"
+
+
+Parameters: _field - The name of the field
+Returns: float Value of the field or 0
+
+
+
+
+
+getFloat
+
+public float getFloat (int _column)
+
+
+
+
+
+
+
+
+getDouble
+
+public double getDouble (java.lang.String _field)
+
+Read a double value from the specified field.
+ Represents FLOAT and DOUBLE types:
+ http://java.sun.com/j2se/1.3/docs/guide/jdbc/getstart/mapping.html
+ "8.9.6 Conversions by ResultSet.getXXX Methods"
+
+
+Parameters: _field - The name of the field
+Returns: double Value of the field or 0
+
+
+
+
+
+getDouble
+
+public double getDouble (int _column)
+
+
+
+
+
+
+
+
+getBigDecimal
+
+public java.math.BigDecimal getBigDecimal (java.lang.String _field)
+
+Read a java.math.BigDecimal value from the specified field.
+ Represents DECIMAL and NUMERIC types:
+ http://java.sun.com/j2se/1.3/docs/guide/jdbc/getstart/mapping.html
+ "8.9.6 Conversions by ResultSet.getXXX Methods"
+
+
+Parameters: _field - The name of the field
+Returns: java.math.BigDecimal Value of the field or null
+
+
+
+
+
+getBigDecimal
+
+public java.math.BigDecimal getBigDecimal (int _column)
+
+
+
+
+
+
+
+
+getBoolean
+
+public boolean getBoolean (java.lang.String _field)
+
+Read a boolean value from the specified field.
+ Represents BIT type:
+ http://java.sun.com/j2se/1.3/docs/guide/jdbc/getstart/mapping.html
+ "8.9.6 Conversions by ResultSet.getXXX Methods"
+
+
+Parameters: _field - The name of the field
+Returns: boolean Value of the field or 0
+
+
+
+
+
+getBoolean
+
+public boolean getBoolean (int _column)
+
+
+
+
+
+
+
+
+getString
+
+public java.lang.String getString (java.lang.String _field)
+
+Read a String value from the specified field.
+ Represents VARCHAR and CHAR types:
+ http://java.sun.com/j2se/1.3/docs/guide/jdbc/getstart/mapping.html
+ "8.9.6 Conversions by ResultSet.getXXX Methods"
+
+
+Parameters: _field - The name of the field
+Returns: String Value of the field or null
+
+
+
+
+
+getString
+
+public java.lang.String getString (int _column)
+
+
+
+
+
+
+
+
+getDate
+
+public java.sql.Date getDate (java.lang.String _field)
+
+Read a java.sql.Date value from the specified field.
+ Represents DATE type:
+ http://java.sun.com/j2se/1.3/docs/guide/jdbc/getstart/mapping.html
+ "8.9.6 Conversions by ResultSet.getXXX Methods"
+
+
+Parameters: _field - The name of the field
+Returns: java.sql.Date Value of the field or null
+
+
+
+
+
+getDate
+
+public java.sql.Date getDate (int _column)
+
+
+
+
+
+
+
+
+getTime
+
+public java.sql.Time getTime (java.lang.String _field)
+
+Read a java.sql.Time value from the specified field.
+ Represents TIME type:
+ http://java.sun.com/j2se/1.3/docs/guide/jdbc/getstart/mapping.html
+ "8.9.6 Conversions by ResultSet.getXXX Methods"
+
+
+Parameters: _field - The name of the field
+Returns: java.sql.Time Value of the field or null
+
+
+
+
+
+getTime
+
+public java.sql.Time getTime (int _column)
+
+
+
+
+
+
+
+
+getTimestamp
+
+public java.sql.Timestamp getTimestamp (java.lang.String _field)
+
+Read a java.sql.Timestamp value from the specified field.
+ Represents TIMESTAMP type:
+ http://java.sun.com/j2se/1.3/docs/guide/jdbc/getstart/mapping.html
+ "8.9.6 Conversions by ResultSet.getXXX Methods"
+
+
+Parameters: _field - The name of the field
+Returns: java.sql.Timestamp Value of the field or null
+
+
+
+
+
+getTimestamp
+
+public java.sql.Timestamp getTimestamp (int _column)
+
+
+
+
+
+
+
+
+getObject
+
+public java.lang.Object getObject (java.lang.String _field)
+
+Read a value from the specified field to hav it returned as an object.
+
+
+Parameters: _field - The name of the field
+Returns: Object Value of the field or null
+
+
+
+
+
+getObject
+
+public java.lang.Object getObject (int _column)
+
+
+
+
+
+
+
+
+close
+
+public void close ()
+
+Close the database connection
+
+
+
+
+
+
+
+
+dispose
+
+public void dispose ()
+
+Callback function for PApplet.registerDispose()
+
+
+
+
+
+
+
+
+escape
+
+public java.lang.String escape (java.lang.Object o)
+
+Escape ...
+
+
+
+
+
+
+
+
+setNameMapper
+
+public void setNameMapper (NameMapper mapper)
+
+Set the current NameMapper
+
+
+Parameters: mapper - the name mapperSee Also: NameMapper
+
+
+
+
+
+getNameMapper
+
+public NameMapper getNameMapper ()
+
+Get the current NameMapper
+
+
+See Also: NameMapper
+
+
+
+
+
+setFromRow
+
+public void setFromRow (java.lang.Object object)
+
+Highly experimental ...
+ tries to map column names to public fields or setter methods
+ in the given object.
+
+ Use like so:
+
+ db.query("SELECT name, id, sometime FROM table");
+
+ while ( db.next() ) {
+ SomeObject obj = new SomeObject();
+ db.setFromRow(obj);
+ // obj.name is now same as db.getString("name"), etc.
+ }
+
+
+ SomeObject might look like:
+
+ class SomeObject {
+ public String name;
+ public int id;
+ Date sometime;
+ }
+
+
+
+Parameters: object - The object to populate from the currently selected row
+
+
+
+
+
+nameToSetter
+
+public java.lang.String nameToSetter (java.lang.String name)
+
+Convert a field name to a setter name: fieldName -> setFieldName().
+
+
+
+
+
+
+
+
+nameToGetter
+
+public java.lang.String nameToGetter (java.lang.String name)
+
+Convert a field name to a getter name: fieldName -> getFieldName().
+
+
+
+
+
+
+
+
+registerTableNameForClass
+
+public void registerTableNameForClass (java.lang.String name,
+ java.lang.Object classOrObject)
+
+Set a table name for a class.
+
+
+
+
+
+
+
+
+saveToDatabase
+
+public void saveToDatabase (java.lang.Object object)
+
+Take an object, try to find table name from object name (or look it up),
+ get fields and getters from object and pass that on to
+ insertUpdateIntoDatabase(table, columns, values).
+
+
+Parameters: object - Object The object to save to dbSee Also: insertUpdateInDatabase(java.lang.String, java.lang.String[], java.lang.Object[])
+
+
+
+
+
+saveToDatabase
+
+public void saveToDatabase (java.lang.String tableName,
+ java.lang.Object object)
+
+Takes a table name and an object and tries to construct a set of
+ columns names from fields and getters found in the object. After
+ the values are fetched from the object all is passed to
+ insertUpdateIntoDatabase().
+
+
+Parameters: tableName - String The name of the tableobject - Object The object to look atSee Also: insertUpdateInDatabase(java.lang.String, java.lang.String[], java.lang.Object[])
+
+
+
+
+
+insertUpdateInDatabase
+
+public void insertUpdateInDatabase (java.lang.String tableName,
+ java.lang.String[] columnNames,
+ java.lang.Object[] values)
+
+Insert or update a bunch of values in the database. If the given table has a
+ primary key the entry will be updated if it already existed.
+
+
+Parameters: tableName - String The name of the tablecolumnNames - String[] The names of the columns to fill or updatevalues - Object[] The values to instert or update
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Processing library BezierSQLib (formerly SQLibrary) by Florian Jenett. (c) 2005 - 2012
+
+
diff --git a/documentation/de/bezier/data/sql/SQLite.html b/documentation/de/bezier/data/sql/SQLite.html
new file mode 100644
index 0000000..600bb1f
--- /dev/null
+++ b/documentation/de/bezier/data/sql/SQLite.html
@@ -0,0 +1,339 @@
+
+
+
+
+
+
+SQLite (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+de.bezier.data.sql
+
+Class SQLite
+
+java.lang.Object
+ de.bezier.data.sql.SQL
+ de.bezier.data.sql.SQLite
+
+
+
+public class SQLite extends SQL
+
+
+
+SQLite wrapper for SQL library for Processing 1+
+
+ A wrapper around some of sun's java.sql.* classes
+ and the pure java "org.sqlite.JDBC" driver by zentus.com (BSD).
+
+ see:
+ http://www.zentus.com/sqlitejdbc/
+ http://files.zentus.com/sqlitejdbc/
+ http://java.sun.com/products/jdbc/
+
+
+
+
+
+Author:
+ Florian Jenett - mail@florianjenett.de
+
+ created: 2008-11-29 12:15:15 - fjenett
+ modified: 2012-02
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+SQLite (processing.core.PApplet _papplet,
+ java.lang.String _database)
+
+
+ Creates a new SQLite connection.
+
+
+SQLite (processing.core.PApplet _papplet,
+ java.lang.String _server,
+ java.lang.String _database,
+ java.lang.String _user,
+ java.lang.String _pass)
+
+
+ Creates a new SQLite connection, same as SQLite( PApplet, String )
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+ java.lang.String[]
+getTableNames ()
+
+
+ Get names of available tables in active database,
+ needs to be implemented per db adapter.
+
+
+
+
+
+Methods inherited from class de.bezier.data.sql.SQL
+
+
+close , connect , dispose , escape , execute , execute , getBigDecimal , getBigDecimal , getBoolean , getBoolean , getColumnNames , getConnection , getDate , getDate , getDebug , getDouble , getDouble , getFloat , getFloat , getInt , getInt , getLong , getLong , getNameMapper , getObject , getObject , getString , getString , getTime , getTime , getTimestamp , getTimestamp , insertUpdateInDatabase , nameToGetter , nameToSetter , next , query , query , registerTableNameForClass , saveToDatabase , saveToDatabase , setDebug , setFromRow , setNameMapper
+
+
+
+
+
+Methods inherited from class java.lang.Object
+
+
+equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+SQLite
+
+public SQLite (processing.core.PApplet _papplet,
+ java.lang.String _database)
+
+Creates a new SQLite connection.
+
+
+Parameters: _papplet - Your sketch, pass "this" in here_database - Path to the database file, if this is just a name the data and sketch folders are searched for the file
+
+
+
+
+SQLite
+
+public SQLite (processing.core.PApplet _papplet,
+ java.lang.String _server,
+ java.lang.String _database,
+ java.lang.String _user,
+ java.lang.String _pass)
+
+Creates a new SQLite connection, same as SQLite( PApplet, String )
+
+
+Parameters: _papplet - Your sketch, pass "this" in here_server - Ignored_database - Path to the database file, if this is just a name the data and sketch folders are searched for the file_user - Ignored_pass - Ignored
+
+
+
+
+
+
+
+
+getTableNames
+
+public java.lang.String[] getTableNames ()
+
+Description copied from class: SQL
+Get names of available tables in active database,
+ needs to be implemented per db adapter.
+
+
+Specified by: getTableNames in class SQL
+
+
+
+Returns: String[] The table names
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Processing library BezierSQLib (formerly SQLibrary) by Florian Jenett. (c) 2005 - 2012
+
+
diff --git a/documentation/de/bezier/data/sql/mapper/NameMapper.html b/documentation/de/bezier/data/sql/mapper/NameMapper.html
new file mode 100644
index 0000000..d47c4ca
--- /dev/null
+++ b/documentation/de/bezier/data/sql/mapper/NameMapper.html
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+NameMapper (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+de.bezier.data.sql.mapper
+
+Interface NameMapper
+
+All Known Implementing Classes: UnderScoreToCamelCaseMapper
+
+
+
+public interface NameMapper
+
+
+
+NameMapper is used to map database names to instance names
+ When setting objects from objects with SQL.setFromRow().
+
+ This is just an interface and only one implementation is
+ provided in form of the default UnderScoreToCamelCaseMapper
+ which does: field_name -> fieldName and vv.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+ java.lang.String
+backward (java.lang.String name)
+
+
+ Reverse of forward, maps object names to database
+ names like: fieldName -> field_name.
+
+
+
+ java.lang.String
+forward (java.lang.String name)
+
+
+ Maps a database name to an object name, typically
+ this might look like: field_name -> fieldName.
+
+
+
+
+
+
+
+
+
+
+
+forward
+
+java.lang.String forward (java.lang.String name)
+
+Maps a database name to an object name, typically
+ this might look like: field_name -> fieldName.
+
+
+
+
+
+
+
+
+backward
+
+java.lang.String backward (java.lang.String name)
+
+Reverse of forward, maps object names to database
+ names like: fieldName -> field_name.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Processing library BezierSQLib (formerly SQLibrary) by Florian Jenett. (c) 2005 - 2012
+
+
diff --git a/documentation/de/bezier/data/sql/mapper/UnderScoreToCamelCaseMapper.html b/documentation/de/bezier/data/sql/mapper/UnderScoreToCamelCaseMapper.html
new file mode 100644
index 0000000..68a7c15
--- /dev/null
+++ b/documentation/de/bezier/data/sql/mapper/UnderScoreToCamelCaseMapper.html
@@ -0,0 +1,314 @@
+
+
+
+
+
+
+UnderScoreToCamelCaseMapper (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+de.bezier.data.sql.mapper
+
+Class UnderScoreToCamelCaseMapper
+
+java.lang.Object
+ de.bezier.data.sql.mapper.UnderScoreToCamelCaseMapper
+
+
+All Implemented Interfaces: NameMapper
+
+
+
+public class UnderScoreToCamelCaseMapper extends java.lang.Objectimplements NameMapper
+
+
+
+UnderScoreToCamelCaseMapper, does as it says.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+ java.lang.String
+backward (java.lang.String name)
+
+
+ Reverse of forward, maps object names to database
+ names like: fieldName -> field_name.
+
+
+
+ java.lang.String
+forward (java.lang.String name)
+
+
+ Maps a database name to an object name, typically
+ this might look like: field_name -> fieldName.
+
+
+
+static void
+main (java.lang.String... args)
+
+
+
+
+
+
+
+
+Methods inherited from class java.lang.Object
+
+
+equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+UnderScoreToCamelCaseMapper
+
+public UnderScoreToCamelCaseMapper ()
+
+
+
+
+
+
+
+
+
+backward
+
+public java.lang.String backward (java.lang.String name)
+
+Description copied from interface: NameMapper
+Reverse of forward, maps object names to database
+ names like: fieldName -> field_name.
+
+
+Specified by: backward in interface NameMapper
+
+
+
+
+
+
+
+
+forward
+
+public java.lang.String forward (java.lang.String name)
+
+Description copied from interface: NameMapper
+Maps a database name to an object name, typically
+ this might look like: field_name -> fieldName.
+
+
+Specified by: forward in interface NameMapper
+
+
+
+
+
+
+
+
+main
+
+public static void main (java.lang.String... args)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Processing library BezierSQLib (formerly SQLibrary) by Florian Jenett. (c) 2005 - 2012
+
+
diff --git a/documentation/de/bezier/data/sql/mapper/package-frame.html b/documentation/de/bezier/data/sql/mapper/package-frame.html
new file mode 100644
index 0000000..2b55178
--- /dev/null
+++ b/documentation/de/bezier/data/sql/mapper/package-frame.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+de.bezier.data.sql.mapper (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+de.bezier.data.sql.mapper
+
+
+
+
+
+
+
+
diff --git a/documentation/de/bezier/data/sql/mapper/package-summary.html b/documentation/de/bezier/data/sql/mapper/package-summary.html
new file mode 100644
index 0000000..41db92e
--- /dev/null
+++ b/documentation/de/bezier/data/sql/mapper/package-summary.html
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+de.bezier.data.sql.mapper (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Package de.bezier.data.sql.mapper
+
+
+
+
+
+Interface Summary
+
+
+NameMapper
+NameMapper is used to map database names to instance names
+ When setting objects from objects with SQL.setFromRow().
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Processing library BezierSQLib (formerly SQLibrary) by Florian Jenett. (c) 2005 - 2012
+
+
diff --git a/documentation/de/bezier/data/sql/mapper/package-tree.html b/documentation/de/bezier/data/sql/mapper/package-tree.html
new file mode 100644
index 0000000..8f47f63
--- /dev/null
+++ b/documentation/de/bezier/data/sql/mapper/package-tree.html
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+de.bezier.data.sql.mapper Class Hierarchy (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hierarchy For Package de.bezier.data.sql.mapper
+
+
+
+Package Hierarchies: All Packages
+
+
+Class Hierarchy
+
+
+
+Interface Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+Processing library BezierSQLib (formerly SQLibrary) by Florian Jenett. (c) 2005 - 2012
+
+
diff --git a/documentation/de/bezier/data/sql/package-frame.html b/documentation/de/bezier/data/sql/package-frame.html
new file mode 100644
index 0000000..187ca52
--- /dev/null
+++ b/documentation/de/bezier/data/sql/package-frame.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+de.bezier.data.sql (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+de.bezier.data.sql
+
+
+
+
+
diff --git a/documentation/de/bezier/data/sql/package-summary.html b/documentation/de/bezier/data/sql/package-summary.html
new file mode 100644
index 0000000..0f04a3f
--- /dev/null
+++ b/documentation/de/bezier/data/sql/package-summary.html
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+de.bezier.data.sql (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Package de.bezier.data.sql
+
+
+
+
+
+Class Summary
+
+
+MySQL
+MySQL wrapper for SQL library for Processing 1+
+
+
+PostgreSQL
+PostgreSQL wrapper for SQL library for Processing 1+
+
+
+SQL
+SQL library for Processing 1+
+
+
+SQLite
+SQLite wrapper for SQL library for Processing 1+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Processing library BezierSQLib (formerly SQLibrary) by Florian Jenett. (c) 2005 - 2012
+
+
diff --git a/documentation/de/bezier/data/sql/package-tree.html b/documentation/de/bezier/data/sql/package-tree.html
new file mode 100644
index 0000000..c42ead9
--- /dev/null
+++ b/documentation/de/bezier/data/sql/package-tree.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+de.bezier.data.sql Class Hierarchy (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hierarchy For Package de.bezier.data.sql
+
+
+
+Package Hierarchies: All Packages
+
+
+Class Hierarchy
+
+
+java.lang.Object
+de.bezier.data.sql.SQL
+
+
+
+
+
+
+
+
+
+
+
+
+
+Processing library BezierSQLib (formerly SQLibrary) by Florian Jenett. (c) 2005 - 2012
+
+
diff --git a/documentation/deprecated-list.html b/documentation/deprecated-list.html
new file mode 100644
index 0000000..44c283d
--- /dev/null
+++ b/documentation/deprecated-list.html
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+Deprecated List (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Deprecated API
+
+
+Contents
+
+
+
+
+
+
+
+
+
+
+
+
+Processing library BezierSQLib (formerly SQLibrary) by Florian Jenett. (c) 2005 - 2012
+
+
diff --git a/documentation/help-doc.html b/documentation/help-doc.html
new file mode 100644
index 0000000..1876503
--- /dev/null
+++ b/documentation/help-doc.html
@@ -0,0 +1,217 @@
+
+
+
+
+
+
+API Help (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+How This API Document Is Organized
+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+Overview
+
+
+
+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.
+
+Package
+
+
+
+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:
+Interfaces (italic) Classes Enums Exceptions Errors Annotation Types
+
+
+Class/Interface
+
+
+
+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:
+Class inheritance diagram Direct Subclasses All Known Subinterfaces All Known Implementing Classes Class/interface declaration Class/interface description
+
+
Nested Class Summary Field Summary Constructor Summary Method Summary
+
+
Field Detail Constructor Detail Method Detail
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+
+
+Annotation Type
+
+
+
+Each annotation type has its own separate page with the following sections:
+Annotation Type declaration Annotation Type description Required Element Summary Optional Element Summary Element Detail
+
+
+
+Enum
+
+
+
+Each enum has its own separate page with the following sections:
+Enum declaration Enum description Enum Constant Summary Enum Constant Detail
+
+
+Tree (Class Hierarchy)
+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
+When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages. When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+
+Deprecated API
+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+
+Index
+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+
+Prev/Next
+These links take you to the next or previous class, interface, package, or related page.
+Frames/No Frames
+These links show and hide the HTML frames. All pages are available with or without frames.
+
+
+Serialized Form
+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.
+
+
+Constant Field Values
+The Constant Field Values page lists the static final fields and their values.
+
+
+
+This help file applies to API documentation generated using the standard doclet.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Processing library BezierSQLib (formerly SQLibrary) by Florian Jenett. (c) 2005 - 2012
+
+
diff --git a/documentation/index-all.html b/documentation/index-all.html
new file mode 100644
index 0000000..4089859
--- /dev/null
+++ b/documentation/index-all.html
@@ -0,0 +1,448 @@
+
+
+
+
+
+
+Index (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+B C D E F G I M N P Q R S T U
+
+B
+
+backward(String) -
+Method in interface de.bezier.data.sql.mapper.NameMapper
+Reverse of forward, maps object names to database
+ names like: fieldName -> field_name.
+ backward(String) -
+Method in class de.bezier.data.sql.mapper.UnderScoreToCamelCaseMapper
+
+
+
+
+C
+
+close() -
+Method in class de.bezier.data.sql.SQL
+Close the database connection
+ connect() -
+Method in class de.bezier.data.sql.SQL
+Open the database connection with the parameters given in the contructor.
+ connection -
+Variable in class de.bezier.data.sql.SQL
+
+
+
+
+D
+
+database -
+Variable in class de.bezier.data.sql.SQL
+
+ de.bezier.data.sql - package de.bezier.data.sql de.bezier.data.sql.mapper - package de.bezier.data.sql.mapper DeBezierDataSQL - Class in <Unnamed> In Java classes in a package can not gain access to
+ classes outside any package through reflection. DeBezierDataSQL() -
+Constructor for class DeBezierDataSQL
+
+ dispose() -
+Method in class de.bezier.data.sql.SQL
+Callback function for PApplet.registerDispose()
+ driver -
+Variable in class de.bezier.data.sql.SQL
+
+
+
+
+E
+
+escape(Object) -
+Method in class de.bezier.data.sql.SQL
+Escape ...
+ execute(String) -
+Method in class de.bezier.data.sql.SQL
+Execute a SQL command on the open database connection.
+ execute(String, Object...) -
+Method in class de.bezier.data.sql.SQL
+Execute a SQL command on the open database connection.
+
+
+
+F
+
+forward(String) -
+Method in interface de.bezier.data.sql.mapper.NameMapper
+Maps a database name to an object name, typically
+ this might look like: field_name -> fieldName.
+ forward(String) -
+Method in class de.bezier.data.sql.mapper.UnderScoreToCamelCaseMapper
+
+
+
+
+G
+
+getBigDecimal(String) -
+Method in class de.bezier.data.sql.SQL
+Read a java.math.BigDecimal value from the specified field.
+ getBigDecimal(int) -
+Method in class de.bezier.data.sql.SQL
+
+ getBoolean(String) -
+Method in class de.bezier.data.sql.SQL
+Read a boolean value from the specified field.
+ getBoolean(int) -
+Method in class de.bezier.data.sql.SQL
+
+ getColumnNames() -
+Method in class de.bezier.data.sql.SQL
+Returns an array with the column names of the last request.
+ getConnection() -
+Method in class de.bezier.data.sql.SQL
+Get connection.
+ getDate(String) -
+Method in class de.bezier.data.sql.SQL
+Read a java.sql.Date value from the specified field.
+ getDate(int) -
+Method in class de.bezier.data.sql.SQL
+
+ getDebug() -
+Method in class de.bezier.data.sql.SQL
+
+ getDouble(String) -
+Method in class de.bezier.data.sql.SQL
+Read a double value from the specified field.
+ getDouble(int) -
+Method in class de.bezier.data.sql.SQL
+
+ getFloat(String) -
+Method in class de.bezier.data.sql.SQL
+Read a float value from the specified field.
+ getFloat(int) -
+Method in class de.bezier.data.sql.SQL
+
+ getInt(String) -
+Method in class de.bezier.data.sql.SQL
+Read an integer value from the specified field.
+ getInt(int) -
+Method in class de.bezier.data.sql.SQL
+
+ getLong(String) -
+Method in class de.bezier.data.sql.SQL
+Read a long value from the specified field.
+ getLong(int) -
+Method in class de.bezier.data.sql.SQL
+
+ getNameMapper() -
+Method in class de.bezier.data.sql.SQL
+Get the current NameMapper
+ getObject(String) -
+Method in class de.bezier.data.sql.SQL
+Read a value from the specified field to hav it returned as an object.
+ getObject(int) -
+Method in class de.bezier.data.sql.SQL
+
+ getString(String) -
+Method in class de.bezier.data.sql.SQL
+Read a String value from the specified field.
+ getString(int) -
+Method in class de.bezier.data.sql.SQL
+
+ getTableNames() -
+Method in class de.bezier.data.sql.MySQL
+
+ getTableNames() -
+Method in class de.bezier.data.sql.PostgreSQL
+
+ getTableNames() -
+Method in class de.bezier.data.sql.SQL
+Get names of available tables in active database,
+ needs to be implemented per db adapter.
+ getTableNames() -
+Method in class de.bezier.data.sql.SQLite
+
+ getTime(String) -
+Method in class de.bezier.data.sql.SQL
+Read a java.sql.Time value from the specified field.
+ getTime(int) -
+Method in class de.bezier.data.sql.SQL
+
+ getTimestamp(String) -
+Method in class de.bezier.data.sql.SQL
+Read a java.sql.Timestamp value from the specified field.
+ getTimestamp(int) -
+Method in class de.bezier.data.sql.SQL
+
+ getValuesFromObject(SQL, Field[], Method[], Object) -
+Static method in class DeBezierDataSQL
+
+
+
+
+I
+
+insertUpdateInDatabase(String, String[], Object[]) -
+Method in class de.bezier.data.sql.SQL
+Insert or update a bunch of values in the database.
+
+
+
+M
+
+main(String...) -
+Static method in class de.bezier.data.sql.mapper.UnderScoreToCamelCaseMapper
+
+ MySQL - Class in de.bezier.data.sql MySQL wrapper for SQL library for Processing 1+ MySQL(PApplet, String) -
+Constructor for class de.bezier.data.sql.MySQL
+
+ MySQL(PApplet, String, String, String, String) -
+Constructor for class de.bezier.data.sql.MySQL
+Creates a new MySQL connection.
+
+
+
+N
+
+NameMapper - Interface in de.bezier.data.sql.mapper NameMapper is used to map database names to instance names
+ When setting objects from objects with SQL.setFromRow(). nameToGetter(String) -
+Method in class de.bezier.data.sql.SQL
+Convert a field name to a getter name: fieldName -> getFieldName().
+ nameToSetter(String) -
+Method in class de.bezier.data.sql.SQL
+Convert a field name to a setter name: fieldName -> setFieldName().
+ next() -
+Method in class de.bezier.data.sql.SQL
+Check if more results (rows) are available.
+
+
+
+P
+
+PostgreSQL - Class in de.bezier.data.sql PostgreSQL wrapper for SQL library for Processing 1+ PostgreSQL(PApplet, String) -
+Constructor for class de.bezier.data.sql.PostgreSQL
+
+ PostgreSQL(PApplet, String, String, String, String) -
+Constructor for class de.bezier.data.sql.PostgreSQL
+Creates a new PostgreSQL connection.
+ previousQuery -
+Variable in class de.bezier.data.sql.SQL
+
+
+
+
+Q
+
+query(String) -
+Method in class de.bezier.data.sql.SQL
+Issue a query on the open database connection
+ query(String, Object...) -
+Method in class de.bezier.data.sql.SQL
+Issue a query on the open database connection.
+
+
+
+R
+
+registerTableNameForClass(String, Object) -
+Method in class de.bezier.data.sql.SQL
+Set a table name for a class.
+ result -
+Variable in class de.bezier.data.sql.SQL
+
+
+
+
+S
+
+saveToDatabase(Object) -
+Method in class de.bezier.data.sql.SQL
+Take an object, try to find table name from object name (or look it up),
+ get fields and getters from object and pass that on to
+ insertUpdateIntoDatabase(table, columns, values).
+ saveToDatabase(String, Object) -
+Method in class de.bezier.data.sql.SQL
+Takes a table name and an object and tries to construct a set of
+ columns names from fields and getters found in the object.
+ server -
+Variable in class de.bezier.data.sql.SQL
+
+ setDebug(boolean) -
+Method in class de.bezier.data.sql.SQL
+Turn some debugging on/off.
+ setFromRow(Object) -
+Method in class de.bezier.data.sql.SQL
+Highly experimental ...
+ tries to map column names to public fields or setter methods
+ in the given object.
+ setFromRow(SQL, Object) -
+Static method in class DeBezierDataSQL
+
+ setNameMapper(NameMapper) -
+Method in class de.bezier.data.sql.SQL
+Set the current NameMapper
+ SQL - Class in de.bezier.data.sql SQL library for Processing 1+ SQL() -
+Constructor for class de.bezier.data.sql.SQL
+Do not use this contructor.
+ SQL(PApplet, String) -
+Constructor for class de.bezier.data.sql.SQL
+You should not directly use the SQL.class instead use the classes for your database type.
+ SQL(PApplet, String, String, String, String) -
+Constructor for class de.bezier.data.sql.SQL
+You should not directly use the SQL.class instead use the classes for your database type.
+ SQLite - Class in de.bezier.data.sql SQLite wrapper for SQL library for Processing 1+ SQLite(PApplet, String) -
+Constructor for class de.bezier.data.sql.SQLite
+Creates a new SQLite connection.
+ SQLite(PApplet, String, String, String, String) -
+Constructor for class de.bezier.data.sql.SQLite
+Creates a new SQLite connection, same as SQLite( PApplet, String )
+ statement -
+Variable in class de.bezier.data.sql.SQL
+
+
+
+
+T
+
+type -
+Variable in class de.bezier.data.sql.SQL
+
+
+
+
+U
+
+UnderScoreToCamelCaseMapper - Class in de.bezier.data.sql.mapper UnderScoreToCamelCaseMapper, does as it says. UnderScoreToCamelCaseMapper() -
+Constructor for class de.bezier.data.sql.mapper.UnderScoreToCamelCaseMapper
+
+ url -
+Variable in class de.bezier.data.sql.SQL
+
+ user -
+Variable in class de.bezier.data.sql.SQL
+
+
+
+B C D E F G I M N P Q R S T U
+
+
+
+
+
+
+
+
+
+Processing library BezierSQLib (formerly SQLibrary) by Florian Jenett. (c) 2005 - 2012
+
+
diff --git a/documentation/index.html b/documentation/index.html
new file mode 100644
index 0000000..a9748b8
--- /dev/null
+++ b/documentation/index.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+Javadocs: BezierSQLib (formerly SQLibrary)
+
+
+
+
+
+
+
+
+
+
+
+
+
+Frame Alert
+
+
+This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
+
+Link toNon-frame version.
+
+
+
diff --git a/documentation/overview-frame.html b/documentation/overview-frame.html
new file mode 100644
index 0000000..e292ef1
--- /dev/null
+++ b/documentation/overview-frame.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+Overview List (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/documentation/overview-summary.html b/documentation/overview-summary.html
new file mode 100644
index 0000000..9e31c85
--- /dev/null
+++ b/documentation/overview-summary.html
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+Overview (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Javadocs: BezierSQLib
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Processing library BezierSQLib (formerly SQLibrary) by Florian Jenett. (c) 2005 - 2012
+
+
diff --git a/documentation/overview-tree.html b/documentation/overview-tree.html
new file mode 100644
index 0000000..f761d41
--- /dev/null
+++ b/documentation/overview-tree.html
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+Class Hierarchy (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hierarchy For All Packages
+
+
+Package Hierarchies: de.bezier.data.sql , de.bezier.data.sql.mapper
+
+
+Class Hierarchy
+
+
+
+Interface Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+Processing library BezierSQLib (formerly SQLibrary) by Florian Jenett. (c) 2005 - 2012
+
+
diff --git a/documentation/package-frame.html b/documentation/package-frame.html
new file mode 100644
index 0000000..eda06e4
--- /dev/null
+++ b/documentation/package-frame.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+<Unnamed> (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+<Unnamed>
+
+
+
+
+
diff --git a/documentation/package-list b/documentation/package-list
new file mode 100644
index 0000000..1afec4e
--- /dev/null
+++ b/documentation/package-list
@@ -0,0 +1,3 @@
+
+de.bezier.data.sql
+de.bezier.data.sql.mapper
diff --git a/documentation/package-summary.html b/documentation/package-summary.html
new file mode 100644
index 0000000..14690ed
--- /dev/null
+++ b/documentation/package-summary.html
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+ (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Package <Unnamed>
+
+
+
+
+
+Class Summary
+
+
+DeBezierDataSQL
+In Java classes in a package can not gain access to
+ classes outside any package through reflection.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Processing library BezierSQLib (formerly SQLibrary) by Florian Jenett. (c) 2005 - 2012
+
+
diff --git a/documentation/package-tree.html b/documentation/package-tree.html
new file mode 100644
index 0000000..816a363
--- /dev/null
+++ b/documentation/package-tree.html
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+ Class Hierarchy (Javadocs: BezierSQLib (formerly SQLibrary))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hierarchy For Package <Unnamed>
+
+
+
+Package Hierarchies: All Packages
+
+
+Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+Processing library BezierSQLib (formerly SQLibrary) by Florian Jenett. (c) 2005 - 2012
+
+
diff --git a/documentation/resources/inherit.gif b/documentation/resources/inherit.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c814867a13deb0ca7ea2156c6ca1d5a03372af7e
GIT binary patch
literal 57
zcmZ?wbhEHbIIT!9-C*e{wE9>Kx3D)-;0v)C;
KYxQGgum%9JOA&7X
literal 0
HcmV?d00001
diff --git a/documentation/stylesheet.css b/documentation/stylesheet.css
new file mode 100644
index 0000000..5fc02ca
--- /dev/null
+++ b/documentation/stylesheet.css
@@ -0,0 +1,269 @@
+/* Javadoc style sheet */
+/* Define colors, fonts and other style attributes here to override the defaults */
+/* processingLibs style by andreas schlegel, sojamo */
+
+
+body {
+ margin : 0;
+ padding : 0;
+ padding-left : 10px;
+ padding-right : 8px;
+ background-color : #FFFFFF;
+ font-family : Verdana, Geneva, Arial, Helvetica, sans-serif;
+ font-size : 100%;
+ font-size : 0.7em;
+ font-weight : normal;
+ line-height : normal;
+ margin-bottom:30px;
+}
+
+
+
+
+/* Headings */
+h1, h2, h3, h4, h5, th {
+ font-family :Arial, Helvetica, sans-serif;
+ font-size:1.2em;
+}
+
+
+p {
+ font-size : 1em;
+ width:80%;
+}
+
+pre, code {
+ font-family : "Courier New", Courier, monospace;
+ font-size : 12px;
+ line-height : normal;
+}
+
+
+
+table {
+ border:0;
+ margin-bottom:10px;
+ margin-top:10px;
+}
+
+
+tr, td {
+ border-top: 0px solid;
+ border-left: 0px solid;
+ padding-top:8px;
+ padding-bottom:8px;
+}
+
+
+
+hr {
+ border:0;
+ height:1px;
+ padding:0;
+ margin:0;
+
+}
+
+
+
+dd, th, td, font {
+ font-size:1.0em;
+ line-height:1.0em;
+}
+
+
+
+dt {
+ margin-bottom:4px;
+}
+
+
+
+dd {
+ margin-bottom:20px;
+}
+
+
+
+a {
+ text-decoration: underline;
+ font-weight: normal;
+}
+
+a:hover,
+a:active {
+ text-decoration: underline;
+ font-weight: normal;
+}
+
+a:visited,
+a:link:visited {
+ text-decoration: underline;
+ font-weight: normal;
+}
+
+
+img {
+ border: 0px solid #000000;
+}
+
+
+
+/* Navigation bar fonts */
+.NavBarCell1 {
+ border:0;
+}
+
+.NavBarCell1Rev {
+ border:0;
+}
+
+.NavBarFont1 {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size:1.1em;
+}
+
+
+.NavBarFont1 b {
+ font-weight:normal;
+}
+
+
+
+.NavBarFont1:after, .NavBarFont1Rev:after {
+ font-weight:normal;
+ content: " \\";
+}
+
+
+.NavBarFont1Rev {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size:1.1em;
+}
+
+.NavBarFont1Rev b {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size:1.1em;
+ font-weight:normal;
+}
+
+.NavBarCell2 {
+ font-family: Arial, Helvetica, sans-serif;
+}
+
+.NavBarCell3 {
+ font-family: Arial, Helvetica, sans-serif;
+}
+
+
+
+font.FrameItemFont {
+ font-family: Helvetica, Arial, sans-serif;
+}
+
+font.FrameHeadingFont {
+ font-family: Helvetica, Arial, sans-serif;
+ line-height:32px;
+}
+
+/* Font used in left-hand frame lists */
+.FrameTitleFont {
+ font-family: Helvetica, Arial, sans-serif
+}
+
+
+
+
+/* COLORS */
+
+pre, code {
+ color: #000000;
+}
+
+
+body {
+ color : #333333;
+ background-color :#FFFFFF;
+}
+
+
+h1, h2, h3, h4, h5, h6 {
+ color:#5A5A46;
+}
+
+a {
+ color: #3399CC;
+}
+
+a:hover,
+a:active {
+ color: #3399CC;
+}
+
+a:visited,
+a:link:visited {
+ color: #3399CC;
+}
+
+td,tr {
+ border-color: #999999;
+}
+
+hr {
+ color:#999999;
+ background:#999999;
+}
+
+
+.TableHeadingColor {
+ background: #CCCCBE;
+ color: #5A5A46;
+}
+
+
+.TableSubHeadingColor {
+ background: #EEEEFF
+}
+
+.TableRowColor {
+ background: #FFFFFF
+}
+
+
+.NavBarCell1 {
+ background-color:#CCCCBE;
+ color:#000;
+}
+
+.NavBarCell1 a {
+ color:#5A5A46;
+}
+
+
+.NavBarCell1Rev {
+ background-color:transparent;
+}
+
+.NavBarFont1 {
+ color:#5A5A46;
+}
+
+
+.NavBarFont1Rev {
+ color:#fff;
+}
+
+.NavBarCell2 {
+ background-color:#999983;
+}
+
+.NavBarCell2 a {
+ color:#fff;
+}
+
+
+
+.NavBarCell3 {
+ background-color:#DCDCC3;
+}
+
diff --git a/download/BezierSQLib-0.2.0.zip b/download/BezierSQLib-0.2.0.zip
new file mode 100644
index 0000000000000000000000000000000000000000..b5375ddc2ddb558d0c48df3fb6972a903e7a4a7f
GIT binary patch
literal 2124579
zcmbTc1DI@0miJq>dCIn3b;`DF+qPY&Y}>{u+qP}nuKG@Q&z-qF-QPQNZ$9~C?96BV
zcf?+?VrBdyLQWDG1Pb79FEHa+{=Z-R#|PY>(#Y1(+1l8~N#Dub)`m{*|7wf)FSbU;
ze_{UP-@Wc;7}3h}48R^|o{`VQ`Y;YRR3R{x08zcBh+4*3tGza091%M|}*_dkw#
zw0~#*KR6Qe|El@xQU13i@h?sLdtHCi{kP!_@%MZwwvF?J^T&%e6aWB(f8_t1FNKT+
z{+`o>{v@YA9ZGBFWNme+@tu$^hW5SLy+>2lX|@UR^T)CS?7V2ce%p^gpJVfG$*_LOA?dMjBc?PeU$nqQgY@TgY2)+9{23#Ay
zGU}msK?QkwQ8;+bfd)?H2%JHThrZr>M1BlOY;t0C4T^F5=Gb}&wg~hfV-kt>YYhr7
zj3HtBLXt+&5&Ys=sukH&fKr9qxKTZ?hbA)oZaN5YJ%zo#3wZZha}(B2xom5$?clZ#
zjp|M2FAaZszf)3xD0Vqt*vIh-)y4`BoVGU5l*Ts_yWOQ8%(JR^k)H?KxZ%thYxBM^
zc^?U}n7aOMet}ysWB2qLaUT$l;MdAj)j`mKbl3`C|gT&L9`96P7NiK
zR;Vg2wk^XE;lTI11Iys~lMFnL6WqihlKk9NlgMAQC}prEXV@Nfk_C_YfLnvoni%mh5Q!ZVi!dF|ZYa&9D!|-lYuY(>7s+d#6rtI9E<4xkp
zvkW%>QC3&iuJp9*Mub$baPeae{6xz&Do?+B&gGQhJJcUsaT(7J_d$WJF2#rfH=bdYQC^hMPokE$mklLQ`YnYDD*AG-UoEjco4
z+CDJ@^UVeF>mRui6MW-FWUz{{vyqGAosK#uZVw*hdMnv7%H~$vE*GVeUfr}fEO#bX
z!VFP;*0XEC-j0+@P?W59lt8)hGq`Zo!{rBhPqAVFuA|(pG-R_fN|_{+Q=hvu;Wpg$
zRYMtzQ1cQd!C;NoyFn9<&wYM`t_|~yNZG}6{P#adn(t(Lsdc)0)vLMra~dzbj8HFO
zoJj)?VXQqq*o&jYZRGQUp0iUNFuiP-oA=r8mv|R^FcBRhZqeqv!`WMma1cXTV#==v
zA5fHkg#Jb2?!^Hnv299-eQHX9(PEa4$uvdC2TA`=|A{-Y?fn6s4(3JdF|wnH=*
zSR>%EYd}vx{XtGyc$ETZrSa1`XzMocZaga>brz0_n7A5jm#bd2-F(};(HpOAPrrP5
z9P0cn=cYUVM#i)9-t@zx_=U@i{IH*TjzzjgO9MBk-JW?vT(wG~oL%3q(|Lb}zD;~Ba6w>)y>a4mVPAaZa^|gm2DKFlBsxJYluOUIw_sn;IwFJ`z6Jjc&9#{8!5_K1-tHX$F?}lqw`y
zYH}%Fp}d#U@WUcygL~1ZOFaUt2HkK$^(8owWqOwOa$+jP@P6roShd>#l3sHnx{lVM
zB1CjZ7;D4Mo%8g_LE_$Qy^6Ay8#X{8wkE~0StC>-06KDn}e(&-edi{nW-lXE)R7PMqz~_Lw
zFHmFc-d^}&FZnf7=?0Nol>JgSL;DgD2hLO6lItww7twfltQ&tp&RU{~jHo}!xxO9S
zf*wpo&~Sm|K15-RE`IpJrYrLHOG;mIEOO&M?E33tyiT+)>eW<$=jbi2`Rb0lp-?Ue
z6G~B#pCu875c!vnd_tWZ?iqDsygD)0@f58Ko@)JYrwC*dM|-%ev2+w#hZzZNC!R6d
z6Lhki+sQAPSKGw4=DcGb26aOL^}gH?vV#-a)h8`oj^QrtuzTfBxx)Pn5CX(!lj!Ky
zU9c^b#!n5Fj@slS4))CnT#EfF?IM#r@d-c^nSgmXd9~wH@2roey3ZFNI}^ta4?syy
z9T&kAE&7S0$?Li97L_)>71km|OnX4h^@7!V8$zy`2>2Tf+}iNQ0SY%7Z3HiH?$$4M
zt@##~=f}f^a8Frme+_j}=J%*TZzwGn<~d_gps$#IAF!!`a(+H97g~c-?g&bu3m%xq
z&rm9Vxnq&D`>}U^`i93Z{OEilKuZzoV)eC}7;YIG)HLk*TC~dq*y*(^4eEOZTOTYV
zSA?hnx$CZ4>^@Dj!UDoBLEqZ=@3V^{B}>~3dX>U3*J&
zE#Iue0xbDQKBN)%Ad>}z0#==PAl5UUvH}jRjY~0WrPGb`!AXMo~_GV_lhxG
zQb0cv*aJoOJz
zkYebBJG)1Xw;f513rAmMyDwdnSuy2FE?tk8?J4E-+_p=%7@}I1>Tygo-(-Cix_A2h
zdUcdP(lcXA|FXV0MLL5jo<@DK0vv+Onq&N9ssWh>>S7)>J=JD@DZIByX}D0ZKo*5O!w}x?x6Cuq`6&bPYKJt8J?-x!Xty#+WCST38&1P(}?T1cxU^zbYgeabW>$o
z&e43EA7$L)3Lc4g6Yp3iTNAHXK%OG)0m<5uj|v+q6gJ};i)<=5LRC&Q&usr3wr)&rT!JCCW56K-$oDAd
z{@;GTf1@Q;rl&hZ7Qg^%NV@a(xwUU%t~(Z(tEQs3(Xf30-4`QHkQ;|@_ZqRbnJS
zIGNxOuiA#E2;irp%(~&}J5^+52AX)NH&B3kn}9Xtgf{Q!g1g6~!>v_Ql_5TuOH{$9k`ha<1K?_ziITK@7x8*Cz&<3SqMs
zD}`;8c0>l!;GXU=SQW^OO7TDyMBPo%QMR73k`hg_{?OL+{82%0evhLdt{e^P&5ST2
z;b81trp>S1&yb>e-=>0ccq^ep@SH=Br-)&s3QU4T8ySlC*f>%9<)Lw(a8oe1)CW}R&O2c_^trN&Y
z>hR;8;P=@C?ocHV9OZZit+FUxMsggf-0LAAs_oJ#&Ta~3r(lz5xhkO-YnFez
z${csF^YU5JSNc2fKL=|IYxi0m2mk;O%D)3RLtC3aYYa9{G%os9&c=@a064Wx$30dA
z-{YE
zcvsc#&zY;}^lR$n2U{>!rw<=^uoRIROCWir$F~(F-e_c(O$e94|Ct^??FrNCV|Y
z93Z2i*F7oa<#T6eZ!PInrAKb(q2t?d%o1~v3PT>!Duw&3e0C>ph+-vqJ4&MnJk932
z7(0ICF(8>?`nJ%RUdkUO1c{>KKKKfWJcIc!NFmFA7~$Y68vQ
zXG#~b@PpsAyG@%VOwx_G#MplmMF>;}xQR27`;Hi!n(EDT6OD!VKI9`Nl2K$RqHPCe
zHu!C-QWh0!j8L+?H`N3dJX=RaB9a2mJA19)vJkSW3~W;%26a~7bGo^}GsoY)rMq))%0T(jUn2c`|OJowH?${gp$m4G+f(c*td-?s@p+y6o49-EjRV!7#OuiwVK
zJU`-r21!>ao(X1{$+P&aC8RYhSj^S*dlFbs_u0#CeWxAx;V3E3Go!}+!pbWXq(Z*O
z#=Q-nh61>oRasl%pxQHMQyBUX5(fngbMNPl2Xj(#D7(ZJqk`Rg+iXLx9rw5hi3Lb?
zd-C?ISf|Q6q~X}rBUqcUa~8DL*m1wV%@_v~Jl(tZX8UZI+|2X9cpo1MbM%rM^OPr6
zjtds(!^5r|kxVTkkjWf-bpm=)N0t!vKDG9>~x0^;Mv|uF%h7{
zU-R2%b^fo?SQqU|8h6dL<3Pn3g~P5qH_QHC0-TPD%!be)MzoCd)XDQwG4r=})RZr05cM&l9zkZ(x~yvVZ{qh!q6@p!%18=RZq#|FIPI7q*ZKVL(50qu
zrh8fteLLRrt2!zJ5VPAF{tc&4iTU#QS9I}d2rZshg^J}!Zt?m01ZnlDnTBgAzVTqH
zYnge*q{yaLX%H=oVSd%h+N+8q#BH4ggQR)#nXWRWU9&xg7_}U8|Yq6Z!w46Kt38vyPZn&q#+)DZ!m)*LW;Sd{tNQ_
zQCCgwxp?!koRadd@A$RyQi3)caz!2L*pe)9Un_i<>s^HK@xdI$bwfFQ#1=;$G&93?
zwACN1j&`q=57S5iF`azIp%cThYd)a0^uhdA^q4y-rlqrdNoyGK
z(yzlz6fS8{4$w;<0roc`4jp1iY(V$VbJzG~Rb||_QqbwU@!Q_kUM4#vjU1yPC
z1>%CMl~z1J1I}UQz1Hd5Y+CKrWHVxC@2TQJ{>V4k5-ai(;7_teyjFf~ulaJZFS2XN9hT
zkd;9{HnPfNkhvat+UiZ6gPPq>yn@>-M&p}OXJGS7%X;0FrtNUzlUucy
zD9VGsU9uNnmw0$9d|?c}ARNJ#K64BaR1u*)k!L%aD%e});0Pq+vb}B$Kyqp^;2a~=
zzjfRl7n=p+)BrtwAOuwBUG+bh^{JTmrG`Okr&rIQ$a%IJsE_-R7UTpgx0@}svvov$
zpwWP882~hU_rVn$BLdHVZTDU%?{pDUV9T~$8+p6qpLe8fbvlJaOO
zz;sEEQ8)lP@>IlL5<*whM~$tQ&WMOvt$b>dOH(wf5VngklQBHTdO$*b$M*->?I3=V
zY8x!c2@EgWJdy5D7*HaPq0a{*^doxwIE+gLO9e_%+PjrhZ+jI1t}U1$juvG_0Xb|r
zOlf8G8zm6|eMe29E^UpbQEXpzz+Q-hC&JXtzQsRueJL>~q#uD+dJ20Vsjk13p{Rg#
zI1)Gr8J<^l{B4Q}h9Ml+l8q4&WeqV0{RcK;AnlV{p%1#B4yViw8q+*Nu7D2zTg^a)Q`@
z50t|X_yRU-rf0G~wwo(>dney!43`&c!chvrjE^#C7v$y*fh|zO_%OjFiK{_CoYRaQ
zGs0Y~nck(Mp~9uQg7X{!8`z%-l`|$T<^?&!2B5ZR7&xvuOTALSncUjv*k>y8bqp>}
zkZ~!OyGZbxs;dc>D51R!2J!)Ppv;c-+eI418`X3C9h>&
z1|Xp4(EB;<>nw+;a|FsXoJ}Oo(=%Z02D=*GO}9Wno+Jn2ER8@+5fm3ScMQwI4X+5&
ziX(fD--{TY)qTk8g8*YP-gg0<~f;FuM%mhfYgF^H;PGA&*!t#^&q@PXY^!>
zg1LwTf{a;*Dl(Q?x%kLk^RbmashqXu%C%oRK!*qaicp?+x9Db9e1%kcD0gD$)vBn*
zU$%_RP<aDbq;`LfeJZ3Gj{R=bV=^=Xx>+e(KS1
zj9`&L`v%ya%Fv@5c>8)TklckHTpldR88kt0bbEQ|;{NE__?G3NQ{@A$_K`GZ`QRe#
znqCub95}yXPNx&9H0>{-e+KeNh=+b*6p5jRryoGXo8(RyrEY{3>?z^ZCm3#VnK$sZ
zH#_hXmD_bEAtD>r@o2}=N+Wj{2j~tJwz@!UsTaC<0Hd`YwZOZ-6CS>toyd$5V^nBr
z=rP(d>{C(#LiFwAJF>9p4u+u2oZeGNZBh((12dS5U`o;K)xqs;LZl`OCzLs6RZYu|
zoggEKrBnSn^5JTB>P*;-#%hmp@*sWw{>%*PJ0N933NO$Tx<&>x9_%-TuPlf^_S+Px
z|F@#wYvtrdHU#7qn;oC?!F4!3PjLXpt0yG{@cn25d`~#7Y|!3m%-q2?84w7{?;l+<
z)>n?^H?|zGg@nhT75Y!fQFO*yA5Dglq@2ZGxoSAgT+_W5s1iUA6a_agQsH}&=77(QiGsf8X-H%+5KXgv8gY*t&`D*)
zj$p69N1jz|K6EMP=OuW?#l)~&ckH+oqBO%q%iVTNa_nX}3B?}c!nHc$MoA?y3q5M1
zfCPyfZh;LZFVPWntKHiWGr7u)Jx)5UiNkA}bvnX=$?^~#%$k&sm$wa461;mA&BkaM
zkRRYDS)Rt}n;AiGu{{NhJNsZ-u`^3*dkQXZt`PRO37?qxEwAa=t&Aky`X
zYV=j^^?(BOvoST9j5Lae@eREBHk*Gx`%+8BMtpo{k+KgAYefwXhWqQ7{REBd;9}vf
z^`)=9!cz2xdKfG)X@uSMggnEaZ22LJ|(zbdz3HP7h(yGrbx7gk4F>1Uliavf?
za~f+JFT{`>%LZW+6_Z_rB!FYxL^-U_W#7Y1|JBzo1iNIjW?U!{(IY}28L2@(3l4)r
zSRhpYQH`(CB?S$%uU-q2hPDivD+aK{JXqI47ug(o9Uh*5?X1@BrH+ZfM5mCJ_R!PZ+f1nLBCe-7DP#mylOJgl0XUG_#4`5=>5ZcT@)PiL&!7k#Nbm=rp%nNhW?pB8o{m6<$=RotVXLT;t0O>_oZ@}*
z_>57AjD0ldlU#Rr2RE^3$0Af-ZXBM&1V|;~|;s>j*7Z$HiIQV|NC#dbw&GEr~S;sYdH%m#$g9NslC2^RTiXGD{>
z-##YLn0E&1lSc2--3SZA(<66n1WQTM#eNIDyRw=NN}6ac*=+}`rr1LDKh_&o?Mz9`
zPepENc&w$ZwzneWTxeDu7%01hgcVRav~%&=vXW(I*)OJ?3>=2wWbX~e%(O;GhqV>%
zHPCqlGvT~QPd=4}9veUtrf=F#KJQ%|QKOBigKPx7JIJ1$jwBV!t?W`SDhh-Z()Uv5
z+8EpzfbJ!WNBUu>!-REAZK`KCh;pqFcR7|buBvb0Vho*-wv%u_D;-ACi!6cTRKisF
z)R|I|d`=Hj<;1A+;MI8X=wN(v|Gj+m>bQG#JG{RgF{Iq?qhUb
zq4^2?yyENAC!1#sZ&_B##VfcgPvv6=HFEU52uY^UxW|t4&6^`|Ue-y_90)slK?S`5NQ(RfVbt3Yv%V&QLDa)EbT{IV
zda>#AY$@(zKnBR^*w_l41Spy8b7s@1vFRao&g4DE=F^Iq3%&0URK4{i($AxCmi{zv
zt~>7}m_nyh5k<;adiuuN5N`SN&webGm^#x@mid}XyK-|0WggXJs)c2fy^bXu0gnp0
zRi0C{M$Y27VMiyUYKu-N@gHsptftk?XImLuFmm%hYCg$wH>3>C4
zG=81{FHe$zDC~9bYbt%~f^{rdIa|g>@E##SeqLDT{roCstf*=JGO&VKW!2@-eYRMV
z`GyJ`-NL+^i_1e}*EdPcT^LNoucAQGJI4Jdal%Y=;FruC;GR;>jK-uo_jx9BJWd%!
z3Zpv@bHyC_`prXD(LeAq1Q%ZN4|s89_F}T3LL-MOhI(U=`U5Y7Z`uEV7u=r*VDng5
zw&y;ztA2mr}R7KolU<1!x7mtm8Eb|%Vvnl7vz4oqX1IlS+7ZMz$s
z8=C6tZrWrys@Kw@qgd5~)~UY#StXD|m36aiQkp+)*r2&P}29D)BE_cz@ielhi(E4Xu&?=o~F8n#__hGii>
zr-C2ys4KyK8=D)PQj++vBp@twC9oJ%ve3@#QPoh{Aewaj!!K^1Ga+)ui7NnMknB)u
zD^rMg1LcNoRL+dPp)^CG<2QG(>C*43w*qytKoLYerH
zvIgnDlr^dFMj|K@)0GEOxU+T*PS+iXvwSdj&(g}SYx2j$
zOJk@O7vG_cm1X@AM{)=JTtt_QA4L8gArP1$$e4$uX;_HRrob&uSCgms9x}`YeLLPx
z@rX2*uVGt^SK)5a2;|@$Ij!NJ;ETBIa3RwIb#KGaykMn?DP>NmhUPstmwTfl7VzGq
zOjAG0C4r__>g8X9YWVv%A*LfnnNIKzcgBkENDEdduNf0$>x&qzFMI{O`{l`yx1zUO
zH`^!l7cfo`52auq=i1!Oqur8UX<)C_*oqp&dHq6rHJ2nW05c(p5#njq9P|RRm{GRB
zhss>$f|k6%n3&BBxlcoW+MmObW{aag`dM0d8*1R@O>B2xYUb=l)iB<7esUsCidL~=
zx&D5e6mQ$Dnq0DP2Y=KrA18DbtG2sg7!>rFZ}Grf}R2mvZ)xaiCF0xhKD|
zV#|^2+Ok@b?Gm1>nbz_3ba8;nl?+c5T#XHe?UIEfrKU@!IgdidSDV-fz^Mx(X&IlG
zq)&s2A#`YGv_06smVWG8m(a?5S8+{$t`f=OX~9f_;&{Ii56%qXaJ>O#MbAz32HHbI
zrOm&Y?v*Sa7*`vUxw!>(Eq2T8!Qf{a6(ikXrgg}cxu7iyvdbNR-Huz3v7;qsfj)wV
zs6ZYKoGvDi4ZBB?*#_nE-V<+6x%?ZK;Vas)ldS*YviURFhu&Trbk|I6>ZOh(nY)Qo
zcjwxeyMW^fX}rJ!G@c~Tct;=6uVj#0@~%4Zoo@s^9t)`n*stsZpPr1RP_%ogDE6LAJo}35MtGe*WX(2Vn{oZdX2`R
zi?qx6!)0U_Tt@SftMOY~M@FXRr^4~o?)GAU(P)Eb$|;@+f4D4Q3ZvlWO>Hztat?n>
zS=*wo(Nv=LcTVjuEVL-hF)!LoM24
z4fjN6!n!SOT%<0yte3ZB$dzr)-oQkp=*3SrimuCh+12LlD4AU4%I&rV#PI{ioR+Z$
zC90*t7wOucuaC`cZDZBWDtK#D6ClWjj)9+;Fx^rjTtIm8*4ug^T5wY-uzvFEyORV%
z-NE;ih7yT*{Lw&~tV<=>Nckjc5
zzNA*vxsjhzgghzsj11S`248v-aPJz5<6meNhg!BnpZHO2CkB6pRrwX!@2j(WJ&yF8
zLhAmF$qtu#j2!0f3mC_&qb2B#{_8N7YGs!Lr(T
zjENm8`A2;u|7hHk0Mt9#AtH%CEQ?SZWUPXSJnp45(%@3{BLq~NM;Rv6#<+&7rV7a6
z958~cB2-7MN}Y?C5o8lSs(ru|3saIZAX!1QSA`7bQbw#u9kS@z;L(b>Y?oV3h`h^n
zz!i5(IUREw{7?l=QG={w)W)buT`AuQ=@iF6$}SI6mNIeH%SpqclPnwYfLUlaubvCK
zd`qow#^ufBaeAa*XkFHg5a{iIe>}J4Q(`a>zjO04K?qyG&!&v$d-EDezd`1i1%$
z`^~q$kJdnf+n(mB=A9WrBx^&osVck|nB+*oy}=f2&J?i*u`@lh=4!^KRt-cO-Mi`gFnh2a;9&
z4as=0^!7SLo(lCnu%vJ^HcZi}f4;wfs6=GI+XkElWQ0z!5XY0ZN++SIobNGvw^bM2
z{^nA~zy+JY0j93Atbblg=1L`({Vsy*R?=^I@R`k#mIC#ZB56v8+pu4=+^1NyY};Bj
zeJ6L-I3GJGS?(pdISi-au9u9<6=(=JGm|~?nk_NAQ;mLQkaOdY
z`^IIm%mRv-q7q^s!X!!yHQQqV{j4S~~$$^W6Y&^D~Zyuxs
z>i!d-@?+^(l_n2}EV)WrMQITEN>1qzNN?dskhg$oWCb^>7BbZ|2>)Rm?XI<3QVZh|IeXSlu;ZNoAr)HVM!q@hv6
zvhqpoNkS(q&8cq}!lxI(+pECCeelW4^*_pE=-FxX{2V%=l%!F`Rs@{)wpPyBxCZS5
z){<+XlInaBHYL0_*|?X@nTtne)Wu3epTP@BC3M$*KdUcYeEYjY-}Fbke+Dw&K&20O
zEC2xN832Gk2cQ4jspo&QhxDI^pS3+*_t=yFMq+|ls}fTnQt>_)#mFX*u~6KQMtMiu>heAu=HwENGY9Zp6-qH9Ju1?ouFm61u)^lf5{1mpo3Ca0)G6a*cZCM4
z$i_2@#a9zAG7Qw?c}a1cl#5SOUrMyDCwD4YGY%L&25B!P%C>i*2f!?4Rc%f}Au$K8
zkNi05n5%fSPKH9!l)Osiu4KHp2;;<`!Q$ykM54U01^e^YeNE4G@Ac<^vfQz&tc*B8Ysr3o^h
z#m+jIfbt}BCoW)BQ#&0&i;1_}@FY@hn^zxE4;sq{9S1EjV9v#fZ6pEM+;puEzbee4
z6$w>4mk!;_6y!gA`Olyvd&_y~9&cHxTDMOcZNUe;GZp2L90q5tysrcTZu=JGkc`SQ
zh%7l~v;(j3Erq~y}poV5If9wc2mzI9y3|l9Y7%#H4oie)P
ze!)jwIXAoNXvjDpbQ@zP{|w04UHS@2cU}yX(h8mGgg=Ep>jXU2iRXVtJ9s(G-@4Cs
zz_~57EQc3d>~gGfFB=;3D>0SGD%uh7Jl;6JcOb{PUHLPK-&iJ#oF15&^eiEEfImZD
zrg50PWYL@nvk3o~vw^Fgk`!G$%i+(^SYB>^G-=p;1!#V`{<7}u^%30r8qUb@xNg2j
zVzry;uOThPFFwu01D|kT4wyb9L9x@mex8=ZdE6Cf#9E+_mY5USigI4Jx3zc2w>XgG&R>(aa?Y
zXF*pjqLQqLW^s~7v1V?;z28Rt=
zU7A;Nc7TCSO9hq)THRVoi&I=N)h7Y3#;RR*qa1)p+EM9`wyk*`5b$
ztm?1@IYWSK2xITn19md>gcM^IYFe?E3w5M_vTgZo;B*(}jy<8l&wRg*SP8yt
zb#unBSo5pPv0m2>4@cLi>AW>646>JgJ?zz$%SD>mZJaS5=G8$&yG!AWqJS(!dKapP
z-pUituP!op1;2(7n9Z4noA9N=JJZ7s5daH)r{ZjwS;I#)8I&Fs&f$E?u%J&Cc;EX!
zct(|auPoG|HHqNZNhm_8Xr`U)BRR3sOZ79rxlyvF8-XPh7WSQW^0C%?OsBIGTf?b|
zW7x3W@oZwG*;q%9x>?Z_RST{z|Hq%Y(A*-7kecgUgf!gRrg32
zw?FY+U?u9w{Z
zmZG(hMh;Ds?ay&yI#Z~^mHW_+t&*AyOcMA)4UTH1@T>T;Glb!E`MJwYKJ(|q$g(q9
zzGt{_K??CiyC!;z@Qg1(!J4cxkkAA6`ogOs>q(C#2i~pxKn0oyr43F+r5!?)xJIu>
zf4EB05rfj7N*bcfgCUP6#e&w)``9HCYsH0KU6#Ph@Zuj+yx-2Lv4_0hpiaV)PQXyY
z;yMc72B4Fs5mJQVSj+5Qyh#%9npo*4>D>9xGnHwK%~gmmuA+ddwhB%UW7iT;sQeg}
zgHwHxXt(cXrB&0v9^04Daqd*mp2uctNyqFP-wJ@f(Ms2hSzTGFD~?LJFnvsuoEx~F
zQSo5e3~?Iji`R%OBGNk~WXdBnzB*Pbf;y%nx6UiX0jgOuHtPL~g
zaW2J`d$%36{ncC&jyBOHwyyb)dPx=5pb0o+?W7%^>we|fRAH6vyqDH>zvNpHS{D~#lIqD1*oAdit{>_66
ztw!PQ_^1NV?I(xSkO0h7z(E1=v{5=AMunhENvFtVo=!=#Wz=gcN}gt
zM0ItYKC)!TI)Y%}$LDVq{I$<|RNmIu8UzlOR0CJNm%|Ik)u1aB2JBOLSN#k)z^{s?
zDju)`J{!YMBHF)^j#^Pfb5t`&_qob
zc=cI=XM%DMEVx3qq2iZl@|2t<&l{0$t7ZmP>PEjq^`19LYL1y_NuAksx##>=O4TRw
zUpXqv>c4cG%Fl%>1wopcCu7r_C)o-Pgzprqcl3{V$~^Wpg;QioKkHdGY9rjvK_k0E
z0)TP4O%^*~N$8S`99Uv*p3OJeS)Yy1-Bfg@7hbV__O%vZ+as?cL_C{@%S8@33#hm}
z%g_#vktq0(11JX&sC166$gEcqSNlY;8IY1U_Ez|
zYQ*~UV7O589_`ULcNrQrl>~ws(Goq1G0&6=ll98Wf%?&aMm%(38mT|Q1zj_-9(7Kk8u1lc#eOb$u9c?bqK?!{+bW)S&n&@izy950zFVv{
zM3%O5`yJd?$nBG*@4TCQm!quDQ78TeN;AP=j?U^CUvE^c5p6-l*w@119f*S<`kcx}k?BM7h((acCV;WX&g|66tO)tYpnH
zK{B#tuC!w_{tITV$e1bU5T>4+Z>1{n0^_Z4Ay+;hfN*ahzP%}iy`751&juyYPq?px
zv;VV@a(nihvM3wb$&!nNQzB&$NVwGGcs9Q>FK3i
zpNa>92{uaYj4FJaYH%YlmBmgO6n!<5v|ZP7Luli8=IH3VVvO6$+dnwFzXoAP2o1P#^K?wO<47)-2Mz
zACrH=NTZs^=izG!7PyaV9GWD#{3@i|yI&kNogEWDBk
zWJgUB+IO{aWZLGNL|0~qOR_zj@A~}beo*bYEv568P?sC0~h3|Hgm4*ZMnHq>w
z%kl&W=q-x3!_QRAbL<0~Gws7W91#6krIMZ5;cqKJ-q{}`0@S%BjIvVB9yh
zxO%}%4vTX9Y<1f(zy%g$kAy^%Q`o#Ahyt`nx;sRcj(Mp!KLVlOP#mmZ5q^U_YPNzw
zYAMBjuF(jDz&I;`=RmJK`hjw;V<3vvjiIB*!_r|GTKlFkvYD=%Vu_gZ1j~{9wAVt<
zI;P80?Rnh+Jq7NV=KD;KB$|ArM6J09GZx(}
zM8U4aQSPN%Rv#Mib9q(Uc=s&CVRX!OaA2SFc-Co=t_ZVR`bCy&?LIaPa)n$Qaxf4^)zc=bnL`cZ=QZ#;c}i6cl}80Ev2He5P$IGc?J`eNzrZq*fSgh
z_ZOZ^|7Zis!_!0nx`)BTI2c4kX#~`~qu5Ag;KWU!&*qf2hOT?r3#|mu!rdw>$dI@7
z%XrH<;X=$Q+I^Q@&(-?6)e=m@GQC#+gy2vHKS>N^qOcT8QzY*r;rh{*X3zy=nXZvB
zl*2sQd{;*Fkhmya{TFeL_B&aS;rgOe4fY#g)j-T*eRM!zpL!)}bW{tYxSR}h*u9ot
zw<|gPBO?qL?t$h`ucsckMY-!Esf)=nQ0HD~E1q3GvhrGW4uESfBC7?Cau8cp>4lpZ
z2%z1XcpBWSzZ}j=60-`v-Wkr_W!$=%)K7@UVw6Hn*sCqtFSOa7NLQX;gpo;$%Lzi%pk<_{j
zi6Eb>ri8bvMH-YlS%IA14vE;oi&LgZoQdG#M358N@}y3M&nGEM!o3yMBuu}!4c*J8
zx#`c3QYR#}ojB4F6tz49B(=gdIl+eA=rN^-|HIikMQ0Xm+rmjIcEzrwV%xTzRBYR}
zZQHhO+eyW??d1RV-uJY2_P+naIrnL;wjNiTZOq=s7`^wqc8y=PNexq1qMk;6<7b`B
zR;VBAA{vCIJ)H7^n`Reh1tNxn!83SqqL;T0{A{ngp4ex1BqhovEH+xiQYDxfX!o9?{+vRo_$P02Id~qo~hXt
zgH<#dPWSwo>VqCmBWVcugt@cJO^nBB!I-2WZ|#uqxOFJmO*ryR;PFk)k{ke
zdUWser7EQ}27L+6BLQ53(kZs74@Gp=1c5%W(__WSqn^le08inqu-B}6LN@Don-w#g
z|A|W`8l>phT%9y5MqW*n=RB
z%*ab_+T)L%iLSBDN0(-p17>gy0A*rDjm|tvSk421Lm=hjzFHHX>sG41gv#E*Y)Fk-
zZbcuj;qrBXUnPSV@0@#Utg0w$4L9%A2mrwM0QK_-teBiUBc7{b#OCnV;t}D%QF?aS
zmu+gjn@XFA-~}1%={)Fusq~{11qcdgMOjI_
z{7}oqN5B~9kA#ln5QId5uMeu^gkxly%(zF*w
z==vebr!1w9v
zoo-`j@qD%AzQJMt+RHv|2XN+dxd=tJI|5!&o{Ln%w7Lifdqc@kk+JSKrODw%JYC`J
zD0;ks981@jF??FoCVCsPE;K~?Rfpl+%XyC()&5TI6BUHu)~sXHP0>YQLfO^%)7@qQ
z4L{e9PVNpGRu#HdU_%4`@a*eJKgXQfez9!K_PE878>&!~l0{B8py#Pbg2{CESPg!f
zd@S%_v%c=~N9W{~d{5_)r_kGOI-c`kg(D{6BYmak4BYD40gyG6mifj3UWF=V>Vf1x
z8I4;XCBc<E^5KA
zXb!8nIKaa$BkFchihy3enH$`vD_kVqWuOtFx7dbtT!d9nk5zC-BtZX{Av{1G
z53w%|=TJEs
zWtLH~*2R(MHrjTmW-sS3#=~Il{s0V#E{Zq-9a`$3|$h!J;zHA@-x1YT{s(tb~BOxTgKJc3AXZ+e_)#$&o!FLy1I
z${?7;j-+KS33koadn&uA_rT{XkK`4w8vLt~>m(cqzgWQn8#pcLGWkt-W{J>F_}@FZ
zb2blaEuN_CWayuJ_B)VM%f~b}h>mVIqQ9&DO|(n_)wg_kg4D`Wqy71(P!`+@rxI(Q7xx;J?tex8XL$>^CpRI
zYx|wzTXoN9+sIk=b!qH%m
z)Z@e#LudO9C=ziS-U??^lP*A%mzn52G)KT{KdyHBhbG*i!x1ilfWk
zFzR=XtX&27sel2IL5bNp5H-GPg1#+ZhGRy;KA|qqCA2tY)Fg*hx5xG5Nthuv5$9C%
zkt=^p+V+OW@wC^ZK}L@vDfi{3(=VE)il3T2m(ju8v1j3T18%bNO46vb-SM*6xoz!-
zn2WX4n@Wjasvu^9We#~{9h)*+Srg42e;Ui`^EB=$hZ?P7MkU)5*OHE|&mQSlwazUR
zYWArI40%7JDYW~s^?$0A7(xM5p*7oQk{-ZIZ8oWrrlUF&C9KCj<$hLulP!G2Fs7bx
zQ4J9_GPGE5Cy&f*oK~5@5G%oJrQ6k$-Po9ke2*HyM_PO-AC`zI+&O|yMjaY^=`Ow3
zTAN)JOBB+?rJ82ik4^BAoGPEmjY922C(^^}K9x;G%L-YaUetB|1-mcTbeA!?#BLAM
zL|eg#6u`*llKBV7%4pf7eTR*_rsDOLLOyn8X(>C>ErpmKlW`_pr#I?9+>c{{!k~sV
zT7w1addFMPDj9W6R3$x1Fc*oI)DLw~dt>VS%gtyV|L|?K8WI~2+?myvce8YI=>J6b
zs1w%8>8$3j0DBaH6H2s4AyM4_J(AW0P8dGaBd%-6iCw4k1*LdtrRc@)HufM
zeE7UM&E!eRM0}wu*^_mC1=oaIHbsA9rFeRSl)tU*_6xQon+zgP=!SjA!C*=lu2|3O
zrZBg8`84`%HcM)Whry1b4?$45!%{qIVS!dI@2z0YNmLoI-1s84F;mUS?Hv3JEyqy5;X
zrBt7Rk#%$oXv74|OjiRXE`9TfsB}T8eUyT7jQy*N`8m_ZcD91p)Zt+W!gwVb|5#m#
z-9H`p`#_$NxJ67(?m1h;4b!s46j!Md#~L(JtUUdFeoP@AC5kYW9?oLvVE`~VWGfQqsZ2vpH@k)9Yk>l>l{v6
z13Xp6d*{z(=jMe@9mihA%7JYi@WwL~rpSx{xbc8b{%Xa(7jZ5fUKMC@$E0F|Gj1Jl68szeN;Wo)tlV
z^;D6DesiLS(N&$DYm)D@?rjQpwj0%GdSPQ0S$7zu&mz+bV(F}?dfvf&DWc#Z9}JN_
zLw<}F&*#YySHbAd21;aO;b3O5%`AoWqU!{5ur9onw|+fqvv#Xv4r;oy1~(B%B~N4|
zS=iXH(Xy(crqrz$J?Z}aRaR$iLWkZQL?6_X+w6hdDo_?he=n86BWEFbGORs}N_Wc_|S2{GGEq{KQoAdWDxE&7_x3|mn5>B=x0>j<>|tKxOn0-n}i9?@|{lp?tBEYoMmEQZ+U8^2rwtcBl@ndK`b47yJ|!I7+*tAH3G`Y*{^f
zaytRcNYKdj5!`q|+r6@Nu))iPpNn{w!_BIa=m9EKuFewF3SIV74sk}m=zb|3M$3?^
zXzXfh0X#)DteO7?r&lP^_TL-
z^So)~-kYYGmrqxf5t8FiJ~l}7HIg+JD`!K
z6w_(0L*U5bel|m`sUH0#q2t2>GY8theTASON=r|@jaq^&I~w{wCGy}k8a;h9!b+}R
z1>M9c(vs0=^z0sozU~_q7I;^%quy3^{wm4r$Gn8(Qu-zGudYe{z*PYcmL18=Cdk{^
zuxEL31UjZLlA8muXGMG)U&Pjv6MUc4GQ3E^8&AMSID9;gIeHA+=?cjax~V>ONYF&`
z3L~sEDM)n-nxKni84H(~3-oP7C-)xX!jHJXAf!W%ECg}6WZ2LC{VN5rKhCbdhOn%Q
zDMZrzXy(_?Kb(mWj3L0Xy{^yzCnwn%OQ()gZ?U`7X-KvZMGy3b;^vI5ur=N_oqE%e
z-=0Tu<|8YS*$D+%lax<})gGYSmbS_$q1aY|yFFn1bU{7LmfP>sq?U`t)-VG4pgS3*
z9D6PJp`x18nJ?7P0(0T@u#k5B6aI2kUZa7hUxT&9?o2>)UTdZZnVb7^cmWt$&NAfq`R8Ely+K9`L2ioh$*8hxFhsX
z+RXM0h>Bp6vO-qpgCy
zA`FTsZcS|YG$7GF9i+X9tM&<6Yl|1umuwm7P0Bb7DZ#Y^{wC%zrpB0|#P-IpM2H`eL!{vfy4Ivp#w5AcvC
zGtrGyKTx(qEXETuxP?M}gUi#Uw@r>9Ob8xJ|1sX}hFDRczl}5+DUJgKT3}{Akm*||
zOl%?#C9*^{qBG5}a|S;&`wZ;0t+@SN=O}1;_wCZHw}z)@K1mBL66xo3NVivSnyu$5
z!zXL2h8XG!vq`Y@i77XTY7^e?{Tn8S#Ewu0r_)`3r*IveYP4Rnota5Z%b+SgsBUSh
zTu)wac+W)EKZCHa#C)(>I$r~7d??^9^m$ej4G*HcrzxI>@U{@v5@SiIl-L9oQE=#l
zJejJ4GAxO9A->n}s^&-Ws}mI2x~N6^PU?2ba7V~_{LYVsWiu(t9_ol>Su^pIyd-=F
zRaY7!zH!nzl#9{kW%{6tY9fGo>(DpNt98$U!LND*Av^$@7wMknO7b7-Ei_Htp~3L?
zd4PH=8Ehresz0{2BOajMN``nU?RJ_^yc3o6bLX8hN~fcWX?>^~Xnu#MW)^e8i%jWf
zqQe&ad_hJ^icyW_O3pE3F*Z+?Jru`(?N&l=5KT`_GWYk~H8O`JopOtGn9%YDSs2x%>Gp9AQt(cYOv*9*`Vh_l<%AXL55g9pT{
zX?|Mi05Iuob!^SHS=HsaU&I&2?FJy
z6$QLj!r`P_`ZhY^h)KSB^7j%H!#`yOTg-E3O8o_Jpo6k^Wh`*4gBvbgN60w>74*0
zStTMMAlCm0x%oeKt1M4-tX2zV5D4c@RHrAMIigrAJq(x4?|O#(E4UAO
z56w&0P5kmspPxn=E7B{8xU`MtaGGbr;=TTCcLG{1!O&z5!^tY`-TyEP%2e|Q=C7$V&oyA&;Y{AJZTiU08^&%)=v8Ox@@cwYiiw_%)uO
zj3|>=+_hM~lCrIWAFbON-b=)@s4Z~0cP9K;{wJXMuwS^z8Q8yd-QoRD0n-DT;SP05
zpulSsQK}|?#0MH8$CnLnDxVwL0$AQIZYay+3BWqF{G8lR!ArMI8iNHQIZrB%6>RNk
zwkfze?`BEq%cJbZ?{n)$)V7ibL!$pmAbt``588GJ3!1QpVN(_ftUY>(9z}Y=#pe}N
z8WyPndpxxVZE(b@gw@_}lUiIN@|^V6tk#fCw>jL?8u>5i9Me`SFpPMc!dn-pD;OhL
zNZs`<@LFbkT5!N<%~RzEmzYwaFd5c@uA^|aN-rH>l`@~q;mUjgkv>+rb<++)BrAgIhU&9ghz>zu?rlx^DxmGwN520fAFW}$6^eEsb{J-
zxa6~GHnAp#;b-6L0PH+#$bb_T`T14rhNYHVBhKO=0VPz|ZN|;&yv6dRnz@=vZ=Xe`
zsjVC4?)b~w(p5Ao94>E845loE;C?ViTyMrX%-7UByEw|@v>=s|0MNIo+f;1x%{$YK
zKs{-8vV%veT&RLuW1TgR4>Z-vt2$RT!=FHDfyO=0?xtis9PoM2os#PUP5Pm)V#93<
zmPO2aNpVCa?$u)Ez
zQ@p)f^Y=Dx$sQn_gzSe<8;$^L4(yQ1xID+JIN>1-%@$mD@%o0d917loKrRti^pQ_g
z=f4gKZ{QYD0|U@ypOYLERl^qG$@JG8xvnSqk14(|r8XM2Aas7`;|
zoc^v0g-|T6W1^njF`f=r1HpOk8nsP{YG>YYIMA9zIk+=y)%kTb<{k${cl8-bE;r;X
zZqH_4>0;k$SyB_z5zq58Nk&v^=X8uVuN$#R&L_e-&w#ghFlt@(_ds(>p_4*6T?GnH
z3>W0@R3z#7c{XY|Gqd>Q+0)rK@+E*YhjGQaxN`>S9heoR^UGFqvh&SE!R;ZKPEfqU
zxMI$(cG5BpoUL*tf2E(H$u?#xD_?KRsAPx5`ak+&_u)wIBwo2
zO$2nuqdifU-Q_VmQ!Da(%YL0dRC?dS^&ixoqi7%AnDPJR%GNFcQ!v9Hy;?iszxL+n
zAo=~I{e2cg$3i>_)4%U|c~}Rlcv;ZD$Rvzm4mUM`&lHr0)P+WJIIBzsG)ZzL4xMne
z3DbFL?jO)qP)3{tZpTcswEx%g=oR$NROny|D%~^0xIJy*6Jsa?(mldR%yklUPWmWB
zW#ea_b$V0}yHPei$&@KT-`*FP-SS%>%9Khaf$qjGOp1^T_>wFLA|o~Te$KR9UM~id
zs8+)EeO#Z<+n15G@6b-L79Yw7TL|j@H?LR2rhZpW0whv@pveB1=w1V;F_X3>c82fN
zD~rT{Jnn_=@i+0wS}wYMjYojuONW`0XDKYQR{SCPS64$MhW>RS=z^DmW8
zeR}*9aq;SH)*g+fICqL4!cWsRknc~T{d)Eh8E<~3Zdy%ExUOm0UJ7E2v~&b_=Kwba
z>=1x8gv{$^LlPJI0iNI*U%+a$&I~Z=0Xw3o8`
zMn0Su1hgn93K)7U-HEhg(BrqsgM_DDkkt8TOo^nc3l!rc+|r^xRvcb(j1apo
zz`9uk=N=|w>^L^7)fNchY+pNScSOci+FWOB?6_|+-15mEIS5HJA>+q_hxd7RuX3-R
zrJg)WJijOapT8po52+(NU8*y8{|bgWK5M!O8RQT_iQeRWknH!_u)M6W;cm=;wT8F}
z{_al&H|haFUpn*QL;bahzy1LOH{JbFdHntFfB4UOy-
z4Q%XhC_8B8qQ%FNCm)wOg=nOc`B<5)~!uA`3R
z0Sigv#S&d|@70=ku>hw^$#J93Lx($Fq~N{TsF0~EtK*z
zjV61C+ZH6bU&EBYVE6bQsg-7Ex0PrrlugsnGF8ft@kv_R|IAdPZ@nubMdD&1Ml@f5
z-Ksl_y*=5BgOGiZsX)@^iGLmLwdQzSfrc|;QHkwv`?exn?Bpp?EH;`B3sl*t!(lMJ
z6<15ese!2v_!+@dY3)v=yv}F@AzU~?@b-;f_*Dm9^bzi6A{GO!G*;8yVJ~FTDdjRU
ztheWvuN}!sJ85Cw#|$0pFPC~)0eh&%n=(|_&O&Vv4*)kLUE31&tv!}FTD46Q
z4k_$zgY~9x2IPz4W+2EN1E-a-g?_MPqUv<$VIKbmR#!3U3-6@ys}^ii2N56Fk>teZ
zQIvP80P`7mIcUFAYX7qpmc)b3Q?Oi=YC79T=T=d4eJk=No41UEm6PkXg!L3msHHZe
zWsP;_v6#JgS&X)2XL1o4E7qQc*Q0C6EP@8Rt_xQ)H~1?(O8!HsUD?ugyF2G^A6$WC
z5zSF=33C;Jh?qw=^!0|3n*olHIoAHMZ%#*x!1qqumsY9J;-7+5#yoZ$OcH2$`5l9m
zT8?&wDy42wQAUrh^I$zk2$h$(&R;sL>U($)G274YQFEkPyCCX>-t@Dauc?0C*%Ze~
zVKvU!q$kY723nYZpQSlXf6i1;cm#E(wegRFv`FD0!nH+K1nuMZaS?kG75_QvKMwfmV9jh|TIxi;Ly@;qzNM#cGB#sDb9!2dvao
zSPPYbHE&P}eDsuwII^20a+q)@y&+b_yui-Z^r~~R@7ztns4e;5UZB3$9y2X4=_|Pr~acdxX}9%g323>f^~lGBJMtTABf?@OJxfW63VO#
z(Gqwnp~Rl?_yj2_{Trt@*%gYh$6&7y@$Q%hBv%eq^%NS13YFM>)+v*7m>=pz4Wd+g
zhPIohkUjEGNQoR$vKI$T>^qxW`eX1hza&rOs;Ac8%`xMbdAcvoJN~R5C%1i*6`k_m
zr{9?2b|;oW8_}#<7mvlIYdXVQ9L-XK-QO`E3s>n~m$C{#hjPE@N5=J-TEor?6+|n!
zn?=m!Wh8XsC#Rk?4i)aZ|kfTxp75TBAL!GaFj6<8zzDIYbs~=IwKNu|um*shV?A3`@0@QL_L=n8;!zG3Ck5lhJsdQ)Khn()r83L(pOp+h=y>3XYpxa@Ln+D#0Jyy1n|z^5j3Qoi>Y0gaefk7cGqh8jHH*B=TE&B1b~ka
z#M@aW4;)vjr~O9R5=zaKvM~nM+JMY;O9+adQ7&M>*6BAIt{97BP?n|m**~C)v$H4E
z>IMN7A@CT4ANtW=-*p3P4TW5_fH`?-yOpm9OP<5v@`U(3!~$9nDKU}Lx8}Th#C*Gs
zQ(E`Kx@E5FB3Kr<#ZK}aPB;3@&e8(X41PCSHLQ#znr~9NXpsZG4HwFJ0NsuihuLgo
zoe^G+wOwfr*vQT>oQUxccOYSpSAq!LUET6zfGTIP6#Yu{X8plN?CFicp}WIMU+lKv
zXqDtwQodk{b!J37%PUfT{6i70E6wPn^SXSz*)S)(>uYBnkYOIY)p$EF`;2`>SxR7%=Qea(K{}jRkTmcilJ>rQB7g6j(p{A){^;uO2FOWoV2
z9v#w6P3Wbk3^37#m}$c=e6%4f5CJ(Ib4f?WKI?5x-7~EKJBeZ3RWB!$Y{X>yAB!rk
z;lXKIg8C5g=t%|TEBfC{972#q_&D-4zoxkWP?k#gH^{%ktSwR?TNQvA_ZPt9nB#u|
zvuyPYEc8r_{+qRYSEANGtmT8R?fA@^onh(iPlepsi@*y!s9YZfL#)f-+&S(A4RH
zpjO5eQLG0m2L?icG|HQE5*W6u?{0!w52epWS}JL2#g|(Vj|5S~GSAG$6^*Yei^m65B
zVj(Yp@)p`!rykEnEQAi{F;cK;--g7)XwnVUe#q~pTeWERo|f?I$n>5QChP3kgO#{c
zm9~{W&CY-!11vw|gyG!@E$|f3kzDZBN)rwsKbZ3L1gr`ZVjf!sIOw9|XJUis|B97+
z4IKtM1o1gE$L;l?j1>vdP4t&V(UFYop8{P4yj`%UpBYhaVPe%rQPIL#_r0H#*rl(U
zwvZ=9*A{0{#vcA?nd59=#O#l^EhGPN$;7Xi06oVdGg
z54h{D=44ZS#`M$IpGu0l3m0EC;h&DUpx)y^n}c^M(4>X$lWf4h_`rs=&i9?RG{hRl
z2Aw#6-I%hrD(sq<;sp_#&zRI=t65^(uO!QO%o{J2*W9SfoDf`VnUb*P#UaDZi9o6O
zHRrneGpBGp^ZDu*5l)xUa$YF0LDVu%1HklKC*=4gT~ww|Cq31x|F+Gjg#RsCF~K8dt}
zm9f4VcqH?A%?hv$f`KwqR<1&cK&)|bcHVl%TyQ;rz1-Ox4YH;?890&d*lyrokiP#|
zWRWJdtq&^^X#xi(go+VLBq3svURmJFfT{D;ORrcOSIxpA@1Xm!of#qgu^73KsAxb@
ztlqHbT6m796*UUBv1G8W~YabRESm8qF
zmc}~I%G4OE9#&{ROQsq}~tDs^b0R4tM`$Dft?hUwM*VuOvE4Ya8K5<17;KIOz;{O5?sj@RHP+B0NoH3R7el+HHo@9_PDw
zYbAqWuV~f9Y5V{R#)S+fbi7%2o}e{uh^5%bj;(;wyB2O=Ob>^cW|>URAMJci^@&V=
zL&H4~!PP~qskd{8N+tc
zoTUfvYJ;u1r{+5A*mqZ}yJ`ijtMNAEUO-9*fKraT5*sSPdTET*5Mm2=kc_snn&QEL(sMGv%NfwVgM%(m9y
zEAlG@x1R1nNJkbntIBgb!-PoQgCK29*IFKU%wts?YxKJx8W(aHUTIL(Fe0a3R5(bt4(vPeDGBRxBHSnh9PNN#UEtgO@6w*zL1rASd7NbiD`FajJITr5hq)e1gSOM?`XBdUDjD`X_(NT_tIR?HM)Ya>!oykDo{Q|
zsfm_8II{$t(FheF{=Aueg1Tr3`r7#9>3IVf~m;F^e0v28|^nKH-a#PnWe;=C2IaP%VcQE)liB_oepdsW?$3p{-C%QMwJ;v
zXGBuCz){M*QmV}DXufVH>R>NBxLH^d0XM0-Z6F;l(vg$B(|n*K0zYdW&4eWtv2ZIm
za8@y$nsPsVk}B(Lww&T0+>JL-Ay(*3!e5nwED04tPn;-`?*|j_{}{tM%b76)$%OW6
z4spEm3-%v~EQ)y4MGb2kyarcrvIT)ts>Xm2WRZPQFnDMXj*(dSMP@#a|YRlV<%SG=P74%J%BgGUZ;l%zn1E?Cr%)qw79P
zAHWj>?0#`ymz7_gz6PL6bOGZ%?o%1+A-%_yVsb5soKH7daO_N+na*W4$~4o?tuRdgU!BI7Zlw9}Ikpl+v?@`1PUTlMX7EwGlXn
zf;BE#^!4>|j73D>%1VDiavwOgyIZD8Rqmnq`b~Hj+q$dZi>%N_(4B
zsplm$IxQj3n~nIO3IOK0GplV4I6L?3x&Ud{4}QBvYx?==GJu~Cr`C|Gy;ZG31F&
ztO>F$FP=@}gB-ra=`Nh}thZ0RP15`jxO&BotM+|o)qv?G!+L}~=ZHq7o&RE6#`7(k
zxNH%P>&8s-5;AO`e>+ucY#5ve3nzNm!k>>UfkMl@YHU?px2Q!varc3%D*aMFD{G1AVR1q`lxSRFP
z+%@5khW++*!`BwAoF_39=E4Ah?wlYd117agNe=`-+`}8*;Qc@29ypF}=I0B6KEvgp
zwonZ6)cNyye*)S?O>fWslx@ThEJT#-9cnal6DZm3a;ZGvcQg&&NQ{QdXU&)TGLo11
zjhTQ!lL6P*yhiry)C%x(2P$gUgziJ+x@^#H({1k@A3~QhJrF5zkJnW$&%>J
zc)=Ec%zgzIh6fggM-tFHaPgwv$_%{vUk3BCJ!!><6Q3hu
zdG^>r0CzCZ@%kHZcjfvOXX?YI0=zG-_!V(=2%8!U*W^W<1bEPpba8)0
zvU#_i1=bx6OuQ3neST>#S#>t<0^G1-FC*sI0b829Pn%Jr49cN0^q54d3A47FXFsnp
zYR6~Z*?ucAk3-WYM{)f*sYjo})#y93aGz;QC_UAuEtDb(z1!u&nI5pkO$2{~)~b^E
zXP`jcQt#Ybbc&WVyzP|Gu~GMxm6g)@87|t?ekltbjn;4_YB^p$Y~#sK|EbDRnDS0O5yjq
zHQ|VlIhzdJNZBqMGfqkH{-SLrR`hkjt|~ggvwL*?A)C^SjpU48IxG-hgSk!eX#aw4zC6
z?WBBNsz|8VDuwr-1|b7}c;JoYtdS*_70yGksLI4~#uSA6*w6K{
zHB*4Z30zDIhA>eP?U2$V7+fLZF3q0Dn~s>G`S>$M_7W)I!X#=43G=~RAO`iI
zXh@3drUxU3$c=whirTEXH|F8iFOH;d7%qe@HFOcRf?bcx<`X%M>Sa(~>dB@j@*O>&
z#Jc=R&^w?>flpi158+Y)lPOm)<9!Y~!K{~|C@#{EQnI97-gas^*tA|b;dhdSB9pg~
zV>i@-B-dcU@)`9U|Q%D|8Max=}@0kTZt~l9pC~?J`iQ@J)C$)RU4^HcqKlJgJ=_^l&dbvzs
zRMJ&@Yl5K>R_j&gLYR1|cz6ZE6|@WS@bSgRKI7G$yWNi~E&Ry*)MI8XxWQSV9do6j
zDyIE=z~6*WqB+ODGNIOJXc8Iuq{jt76
zLGetV@jq>S%?aifRtGN+dR(rFZYkE;tT@JCv8c{vJUrenE-$%Znn;5;?Rnv)PFg?l
zV7Hh(Hqj7;7kDyTn5Jx_4u)WwG=Wn9O+p7==q|nmsR*DnhwjeV#wGKj>glD>DW;XV
zBhR0mv;Jh^WgNT63bc#aWZ}XpKWs!$!7>C&UQAdb4~RAAV;N!=pdzhz5w3?bgbc`{
zt3P!?P#=@jzZ}0Dpz;xeR|qg1VUtwk%CtMlbd)G&8MI21DV1Z#H>=kf&x4?pMIUH$
z7@YR(WTU=eb6-g0adh|;yRp93?nUJ?MJ)N%Y+>rBxSTa8P|elLOXbcptbbIBY%fBc
z<%6m>AEqZ)Ak$a;=BWuqyl|>&*-7P|6`!>Efi**Z2pSmR)PHJH9krjzH$uP8A+K!p
zxhhtnARtqfkav=t9ztEhY3sL5V^%KCMvlkmGbXR=jvGDH-#d;#Iye64#uri44;V^K
zjhSCX9ESGe-;w;?
z0RL7W)EepI7Y{sL1ru!9ZPjh*Yl3L4yv~3l^~eyCYyO+(!g%+W6pvb5>#Vm0Fp?sU
zXZFO>d6hJhgjcwRt@~BGog>~NxD%p6FD}{l(H#MV{y|
zbFUN*$Q7{X_fCJKI-*j)Ea0wn85z9G4m<830m+R6jH76&vm)tz$p~+FtRz^@!!waxlB?R+3xwVcJ~{$GGBW+@SMbO(l>+9Mt?_OGQ`j#51>wy
zaSspBjC1#Q=rr9Sw;MWA!6Ojg7M}4uU4Lc
z*7Djl+TxGjW}X&kl|deGdH_
zTWtn^NGR)dx5?j_fee_3cfr8)Ul7m`2YdZrHJY7NyG0Pfc`Us$f}Rn%WAA!JEoJxV
z&F5>Mn~5nJr%}JB3x?!}v?<;OmOa8gOX9DU?y@Ah6~|mCUS){4%MRZCB)gd%*h}B)
z^J!y1tyH`;7AXx35xl}^y(`QJdmg$Fw`ODQ0Y=iA{^o5TNGPufu<6v@_2@^Wyl)@>
z5e-;E84+p;sPwM@YRT}wsr3KGDgUd?7c+atg0e}Q;0Qs)(iIBi3y7zCk3rh`A`!$b
ztOh#YZFjiDyVC#dt72T3&h1kr1#rsE^-T{ntQpvn{jOi>v-jX=u-lD*z?9H@vuhg8
zbYoYMr#_e_^&c^>c35|GVV`0PQW^g&^Yi~K^E69=Q%o~UfHL1Tn@=SEk1{_`#hgtZ
zF0CTy11R$$|0wg#kr#rk#q>rzCCC^xy9GYyvhhIU`x$iUe9~TJe|R;&H2sKz=cHl5
z;c}ml%pWVzmnziZIEo=2&8y%Q+E$*a8r0I|oTR>C$rVX?o|hgRK(j_=6;E~F&lC^gfWl4~q0rM3Rn;!?+1eB+cs(_flpGuuFjGK$bd)
zlu$s=(M~sd{w#(*%ZGJQJ-!ImR^nUXFH^?Ppr|gIF`ZO?Sf3Kuu+78azHR&>sX6f1
zk<^*HPityzX>Mp+YJO%L6)0OY~jciow8Y{Zh2vfsMWtW_;$W%K;Tk~FJAP^VQEZG9DRCldn4DR;IxnR
zun3$1&Iw^`gF_6uElE6R==!tHkayV{944X!)p?GsElb*D{s;lfvQQsPJ#ezV@OIQ*d)Kr8{fCeJ+G?(zZ9%3yI3mti8=~+!m(N5&>PgY+8uC-edJ%DOgY{5{>n$
zhgF~0VCb~6_M_7SvBCvk`$`a$FLt*6ZKYWT1eRf0EJR47Qbk$vKjpVSnXv&)9DI;i6P$rLZX63BKnk
zpHFvK!nXcb>J_h}2S(s*QTl?M*2&EU~D%qOHAu=T~$|E#o*IJN94p2)9sxb&pFO$TE~NP
zD>2%s!za*1x&7VHL)AqUiDil>buKI=DaXZOrC}n`QTe61_i~EG8EhjnH}*e7X_{v2
zB;M`pNXx<(-e|T*Q7@5k7FePeGBS4zJ4@&IB`m@-w7b;S>RYY*@p;2`VjrMr{-BSt
zG{Esc!r2@Ht;_Yt7OTvw518_JnqC)1+$dF(P2CAs&r-&2>1BcCvI>lz9UpK)s^OP5
zLXt7x?WdhZ^3MBi6FQrgxSMYgmQW+%7kD#(;z!1?$%=r;{7v*H6=hWA#fr(S=YL4l
z4Hh3aiR8hWbKY|CBW_2O`PF5{W}?x5IDFat%Nc8(r{K~xoAK|=P(ju(+b)+{=Az|6
z{`a~!;ed}d`!w}P+aX&E&T;bohJB_+^tbm!9RV4Hmgt-#&OS$n)<`Tdu=E05Hi2l|
zHki+ShyHB>KdXf5$;eImaH0e1I6v6g(wS`Ts17({^NX=+?~J#{3--UG^p^(&^hN+#
z>_`6pi*+?Lvb8rd&~r30q_#A3aQxS_NY%<_@1Kx7bzKqrMHiMxx(HP9HL7>%?;@M{
z0&Schm?u4pI<2i)()ZSC6G5!4OPd8nlfs{{)s(bV6Jrw-k#$cKH)Gp{mOSJKoD&@^
znHA9d(zD09vhqK=hcN$$bp=5q`Dd)FfpU}9f5y7PdH&zAuC0!n2ql16SF(S_x(c`E
zLKzX17+`D-jM$<^FZ@gl`ERkVnt)i>K0vH%bgnn_%9fE0G}&A5RHQ8_+!L6
ziK<=Kkw}V4`3
zSG`%o#3*C}Dmejb#xfJKDi7;XB!I}S{-Atq2F4tF^_FVDD9-Y$trlVX99)wB@pFB3
z@k}kCFg#{LNZ0UU&d}hn5L2*N`TV9#XA03%8kOKX8o0Bl}B1mtq9fe
zz6Np*G{wA0xU-FI7H$gFEmsw>-q?pR@)npm&cMULXY4sO@lRAp&$5YZup?}nOMkW8
z)JH^1Hgg-L1Nrkl0Nt!1I(c#qlJh?@mo{}-N;88h^+*4gpQ~zS1r7PV;D7nK8i&F`
zEx_2}+VNyaWC~&vyJC>H0&m$_(Q)n6%ZFq7UsV5WcU7oa^5L_s$0@DRR9WfjE%)L&
zy(qyZyxXl`S@^_?h5!ZD^`dg(=RdHB7Cq=}scYIG>zxA!j&9u>he#JcXqADZaOVtH
z8&+@kskmbN$;Xzmc(^zJoeT}-Gq)|sHw_P)O>0h6JNV6ovCKCAfH#e02SzssY?=5>zU#0+S6xAb&Y|$!jlmPW#X*;B@@aSCzB^$<9vNnoIDTZpJz;?<
zsY`rrqqEb*ESrt|w>4k^TC9*)UV1_i@~`O@v~{yHdl-}M);?z?MDsVmZ)N3@e!+70
zk?I{XAKuE;=h(OKNSphG1sF|;b=k9KOB|U~VTl<^|B`U!3~G*SFdr8~h|^D-7zLX0
z*d(7l1yT?MPtg{uF^l~p!Nija?TB?{)EzD
z+RANaY-LAnWNY}pF`C%_h-Ay2&S|2UcHPI0ia?GBEkj^|so2Jjx`m?6d$A6lo3S7~
z$9;P$EH=yL|+
zi{`H8Y&V^*RuI`pGDxXB0>pM3(_Oy?CK8{s_KmCN_O5D*F1xO}4yMZ6HY|$d(eug4
ztW1TgPzhta7Q(u?WTtx#v?)ZcDQ~FEfrlQS{|M6
zPZ%YTL}w7|vwMmoFX5%|R
z<)pkXf#gXi5;a9|KMMmiPPf+7%a2PYB%3;7R{Z!6suf*L$kKtU_IfX1I@<+3l}~%n
z;1HiZ16k>=AM>w?Owh)S$cyd$^r|>Td|0Y;iQqP4IJXFdlSSP-+8Oipk6Fy4Jqh6_
zX;RKC0toM%5wM8TY6x?s058Wu@kV
zii5g~M>khub*0Qq=jnuwA7QK(KO#d@6DkV-S*G-$8|=LHLQa^bH2Elg1f_4{$hQU?
z_&c}7dl2aytWd>nIo
z8NiC254gjObzrsZA!f2HW>q5K%S7Q~lLkJ$ya}eLX8D=s1+_2X52qkS!Uo5NONDOr
z1JNk%7gctNH0<~v+ihOwA)&!_-ZXV>v^%=n-=R4b%JlGBG;VbDSz_1UB+3^K-H36y
zd%CWm`<8JQ<*}CNT0e3ZU@X==@BUrw%e6tnc*IH+-@*u!Ry<9C8IU|FO89-^FB7G*
zVQ76b=83mI6d$${N&u7>H+%Y`1AiV9YeU!sd^7JFk|MsYOU}kF4cD_S)&+UkobX4L
z(y5Z7_*YVQWV~BzdnG|&rR7wnetXF=i#&IM5%o8wbmA*&i0cQ|p}SpA{4KA(g5=Aa
zXf%sP#&UL;;W0Ed#d8m^wQC2!0BZlRf;&M$8zd^T1l1umD3_@6gv2f7dO4vN%
z{tmuys;`VVeF_!|k@iP#id0~S0s)QH&*A9ATmO;YacHyjZ*#VDy*j4QImm-O&uOX^
z)~0Eks=6L`;)V^<{DV#}*~Chidhr|GG!KeboqD90;cVAuavXH0ud}0GV*{TBu#soO
zjZedHHsx9sb;$rk4}9q@@kH;363*dEwmLDES!lSR2@IYgW4fRb3~u=;d6&sS;)+dU
z&8>6i!)(-}P9$6AeMFHX(>9~iA|7I}bR`1j6@z3^hldixklFggbgh}`GF;!jZ|zje
z-SP}AzI)etUaFH~!2w)$W0kZRNz3um+7wr?tA%8)s-tGmvZh+vi`jvzBk400>po2|
zNV$V~8T=p}Ai*vK`CF_bxPr>Iwfd~~&9DQyT3D2*Mvc7VN<0m|*zIDIkUCJtBq)Ic9MiGB?3BJfGBnSc@@<}w_cPFZ6gL%{jz59CKpd{#q||h
zk4ol`f#uBH9XRf5aZ#d5uX?^~_dL;rFu(VBbjRqn!I(1km?Dc4if}WqI+aX-BVfR!
zobX8X#UL4*qGvVS1cK7J%QSc7sT^L<^1pBC`9WSHPLX40S%t;Wh5sEd&mXyx-1AtCp
zK%lyl(int=qJa7Jr4p|IGQk5)N6ULyfr=Yg5y?XiJbBr&&a3w26vE>Ef1XQr1;H<5uK`%ZBP0GocuS`AJDRVqw0L@V@3g)xO#TFue>+upar-2;
zna8F7V}U(|i94mInx4jFwhmY4u}a^H_a!T1A|#^wfk-0h4mVhYpwBlF+}Z&~fWsw^
zJ=R_;jBp8#1Xn%|CI6?iwtn3PQ#)wv+04$CL(0~5B>okfI~1dK70CvwScj4;h+Q4N
z#ZWjEsVtIMa>DITt@{FPP>23&+$aam`tn#QLxA?GgiIp>a-}4_sf0A2-LQVm0ws!d
z@moa@k-B2wjMl6@V`3oX+lTj39AJyZ&}w1w0NdfCM|T_oLiu_)&UzWX?)julc-MDd
z0L5SM*s)fO$ezrFg%!JBU8vI|miq~#tguJKbYgURL88JbKLFSI^Rb%(%9X{{q}gj0
z^rh6m;zXunTXE#t5I21RQM@0oXbO`#ifUQGib#q$pzcI1SY$8Sd~R-k2RV!5~
z#AJCwu1!SKW-Bn4vW7eNb?>Vpk&8?&(d8lsXS9%*FkCpFHBgg`jFW%c3qg7c{=gVD
z?#)uMpx!*}%R?J~22QRbY@m69Z
z(ZNj1DWXXF_u6HTtK$}CdxsO<}tL;S~kCNcX~zvmvO2<-v;-M~Gg#X=
zK7DNNsPxLiWlO4CB1J{tEoew8UpKBuJ2yn#JK|nFiLXAScb_u*zLzotHA64e#Pyot
zipE`T)b#UEo}SkP0w1o3vR_*uO^#b~`mw+IWLLw{6@%-2!Bo-Ed;_7rlc8|{La*S7
zx<5HHzW+6~?fPshLxKkY0CNNY!2TZvsre7c!8Wuv~>rv=6Wj*KA~o7EH(7R)XE
zU?r6-+ifPypQ^OmTe~IOSTLJO#mo9@mCibI?mcUU5>52Pw|ptYiE}xnQ6*6G68ZbA
z8AV-;rd${&dVxKCD`BS*%i89mh{F-qQD*v_cS)AF=WB$%j+()lxF>r-f2r|a$R
zacT|Y%t`tF{P7YMF}u?HslwBKvE}%Yviytc!@yQ7^J^t<`tdWFo^UDn>QA}hHj@2~
z+4R-j-JJV?rKc0mX$3Wd6>R&|IQD8q+_YJlOQ=Od0PxanPcDVpT?Ox7v~;H$v4;NF
zD)F@l1s(h_^M?L2)$Lh~$~f0Vn;P|U)_x9Wel%bfN=2f`uaazW-#nni>oVGWT<%kL4m)0I6N0(XcsfRqlb+-6`My9-PAaDM5jFV8jGWh`7PB
z&cnn^Zx9|Ko9nuWs1}Mh)N5meby%l2vxIJxb=uCAY)j|GH|CUlhe|Ci3lSIM%8MG#
z?u5En?x#vz+%{R5vocP-OTyI$QW
zYIJ>#u5-)KyK~MG7Vs0FZ$Htw{7I-`$K;Cw=bh^N;7Ro0x*VQ1k3Ur&CYzA
zEtXMaWD%Wn5Q4nbA#~oGPdR@Z9}reOeIZ)V`SF8!LC@>ANm8CTT#CoOET$x~2e6jA
zHRCX_4NL;B@p==M!PAy(uv~0reTiwAj`-QfJS?6HMZwzuvRDxQ2(`
z;9q;@5TFg#fp7*GPXO+gKFO+ggY4fglpKnmI3j4Tw(=9YYds}BjgG!HzqH!SpoN9P
zaPV9bgh0b25>`PCSj8^^>r#nyfbJN?FM;cRx;8&HF{DsFY?5$8yqLtn7e23CA{jq6
zaimhdERt{vge9Uo%&?V&us)?cI6z${DK_61sE7>+atifLa`ZmRytOh`+esm-RlhWK
z%i5i(VT}!|T^|S)MugOU7oADHqfLwH&WMFP8;j+7o}(Cj>eyg)&>>v
znQ;9+Uj$n!rtAdvstNxKHanajBWeE&;Z|s%E;|5pYDbt^y;+_0ssgRv1b!Tm@Gd+A
z{6Z>HkP1eF8J|Lq&|7sRL+l!Czp^C##(0+M}5>YFazLUoGvl
zrEbhK5?~@u&bdjn27L8i|_v$8e!}ZzGgo=K^L&Va$$k1MBG$
z#V<>*BB&Do*>;v;dciXLoz*MY*#qTwipLsMW2P4^)IuE@k!?bQXiTXq_FYY65W})K
zo`Cec;6)6jj|TG$gq#~+Y%e%B1;Mcx9NjQ&ZJK+Q8Uzv&W&qS8FUMmRlRqW(F0Hr5
z44V{Xo`;eP#`6jU_g&(ow@Eo8a{Za$sfchk4S~4VsX}fQ6nJyB;aI!-Hq^y-cVR+b
zBh
zC!*aDX6#tM829HQX>T5yvRZe;g`M#@$!ytrHmnAFL%TXm5UnJu?upyaEgsLK`WBAa
z;udGaAjhuaEIPl+XwKx|0QWT0PLZe~7Y`GFkiu
zcN#VKLMwo?7KBZ~!d{(2H2Jux14E}nbJJ3>#1ab=5=oRGCK+rG)uSjuO<0vq`20z0
zg85UzIdvh*Y?YS!7YuJkQ39o%8(%OR=w>nVh$%68^D6pd5eOGJ|4|STEYPk@;CWEc
z&(NY
z4Cv|y=_K^lACgWxRL$dk!|rao-VcCG_a__7x+ar>6Z_CJ3HQx)N@X^Gm>Geu+_D|m
zPav0$_0|LKnub-M;uIYU(`ksIM|7Y|2Uz&P4YMU9r;hRu5PFrQ1i{9L{fT{HA_`WU
z#hEQbQQc4_%z+rkHuIaV!?6|JgH(`Upw2oBGq2YLW~M6q?S9M4U+Y}M5m$DmOg
zwvQVEo^ix?c1i#bO3;%t3!!v6rV*5Uw#jW0YUX5gRj;9yZe
zAS*i0F}LK>T&QnNiqOHc1Yd4IVXZihQ$RX{HgB`Nnx+4hB0u2J(Ni?-pB!~BqI|iN
zD)cG<)m>j@+#Dioj-f0iwR_onj@mEsgoPkM;DHYs3NE8xgjk#`#1fT0l+x!+2cH>4
zb)2M%+hmg2sH!7TxNSY-M$$TO6XyRxy6M30KiqHF-}!uvkJ$7IQBE|9Qtw{AX@zw=
zE@=*&P!8O|BD-5wL0FUkP}@=g-Xg!I`N1@I3=yM2zc6%an>6`RpHjuH9yDi|Zs@=+#&-e*CL4=Yzk5kM?NIDYtBCh!3DPoFqJama
zl(pLBsFz4%Tl1dNju2(wf^A3^@ALL9e<1jJNZq!5C!U1l*;3#Dz0qCow6++I^A%t|
z5jx5;)4{q&gXUJf#G5nCs~5t1Zr4
z4(fCblD`r9qsxc^;X$&UtVfim41kMu^b2S$38uaiO~pv5OVYF5F=oqMLGv9AA8bh-
zm`W1ru?r7g6YYSMF{1S2a3~F5)W6$tLIX$#wOAr;!W-v28^A*`zHHs{F8ekyJlI@_
z#A$n5e_Mb1siL@a=HijMvT@L(+hd@T`pS{!5RkdV)%rM0&2vlC4*YE`_@$rZnDu?{
z6gO78(1Xa1S!Puhd^bI~trDBa{?*YBh%MKoj|@|06m(igaRfD|-@Uo}Uga)Y$v;i3
z4&?%he+Natv-ofWSjknFC}iNltF~|g`fCCtk{f{PeaSamMkfU{1a+xrcV_aBJ|G^P
zaWy1z`T44*ixd+cXeb{>wN2LE`EZ-IcK!o9Ho1e)%PPGD+cG|I^5K}7TP~|nc%xT9
z>(Q935`JAChl^e#*wU2#M
zn4ZF04Co>%%9Zg|)5)Q#p53eN6;oWe!5G$-4G`K#vj1l-?cZf{A<3Z0Vzic<~sy7$3^z(J@8RV&P_BQ!=
zDxNOHlUredPT=XIHUH~SH3ve`OW`~~c>S9!{!?n{+-A$EPs3{#*Yii>Sg9$AOwhhD*K
zzN3X*R>P8yPnk*N3hBC`nbX$&k$xDJN76c|EG6zaL}hz3o;4bM%8j80eLpiBwq2Xv
zuJCO8prh(^~cUWB%|wgD^m=o%L#D8}Pdof#2|}p;=bm2ZU9ol_g$l0Z3-?bgv-W
z(8KJ9FbajwMI`YXx
zM#ODC2vPjAWC_W}Sw}m`HXA7}_k|`|f6InseP&-EiEj7R{eJqy{wG7?%p-|y0TGuY
z+aqmo+?0^Iz+_~G7W;X6t~Y~q>J37BgPqGx9MsNPH`8bVp7WXbYP3nomH0d0znbmp
z>4H$lQ;?lx+1T_q1fuU>0}t-LZaiOrxwjA8SMe1wV0S<6sGoi_lgFDns?TpBv8qpN
zKEtB--=C5^J3WVv;43$}_itasx&P}+!F!BUEdy&T_U(1&UR?9&GxkkS50%~VKDOYn
zFxmWg1pMwJo_itWb(VlvG15VYRQWTllY{${GbrZuNkk8empSZm0$%>>_rC_($6`?}
zKMLr7SeG9?(!Yi~|J6(XS07!hByYP;hu||))2d+ss(}n#)f^5=1m$F0(2KXwD4M9%
zt7#W^#bmtj^+5w!+^GG#Sw|cmchc5M@2F-gK
zye|(*%OjdZ%d(C?Fy&z{2vAeA!`db7dkq&|fQHe=4H
zN}xaoJU!l$kt`c3-_Db9k-Ki1?Px!E;2zd}JSkKMaA_HWYjCr5
zk6#PYu%Rvodsoj_HG|%p1svXmJyZ}jza};(`y-WXDtBu4ng3T~SdLR5D=Dsl(aj~L
z9Kx`i&fp2@nPBcd9}%kj
z(uM|(56QDZ)+~CE
zxdF$YB{pu~9X4aVV(GHvC=yetoU-zy(^VW!unQ*ATTuUi@6r~@_7g>sAN5cMXr_Ac6w+={n2HbgmCQB;h1IK(E<+3`Qy>LmBpFD^>rP%(
zAF3Hs&cTnKJna~N>-4BpUmyBIlG#MK_MdcFWWdM7V)a&%-ogL(U_Sr`B2xMZ_PZYi
z2mb#Ec3T%?2N!c=*Z+e}ulkR;->>IHRg1dHg4sX6oa1LVy^Q{$_L48r)R7x?#dW^yaA
z@z#Rq$ZQRljHdyK#%#pF;Z9$10?Q8WRH~E~b
zjcd6%aM)g9^mZonclb}Hb&*iPp?H%DNTq|q9QpY*&_%F`=I?;_Y=CHxZ6{Jz=!p#i#8H#>THAX3FrY-
zu?EB~2%A!b4EFKX>b3|})uxQRJ%26q;ao&N4Oc&7Ie=_h(0!mCL2(xM)^R)Bm0FG~L8J>mTCA=%iJYex8!d;3rU
z0Dk7{|H{ArZ%F<(k^hgPXoKY+qR`&BZfF>9%%vSpj2hm<@p3waOWk_Ko7^ZfrfEDu
zl-|A}|Jz$s!hvc;y1oFA1y4vv?A*=k+O6}X_nL8}W#9!F4Q$U1B$0L5%nbNvSLIfD
z)rHI{%5NRBDwZHBiHEcibxh*+YY&joh=-~4YTFh~YtIVfO96Ob@1d13XzsE4EDPvv
zJnrHTDP`{VY#}ryWqUHG2;b^6l;3+J@`eT%E;RfP26#r6=R~xhk4_^pq`+)uWq%5&|
zzaY!uH%zZ%HXdUhrH@>7ZYXzpa%h{!>Bxu7VRwP8=Q9Ga+JV-lWeQuBMCGLoN5F>d
z(#5kA)r-s0C1ui;ABTi!!3+ze}&Gb^I_rU__uhlDB45*y^#Y~WO$kMMa&i$!W*T|hH_
zdkHg5b0&@q1H9;h98p|gO(3FJonJ$*EhQDA~!pkH^Y#7@7t>Y2UY^xXIi3z
zvzZ1V8Wpdd7E^)n?$#_MIGA~h#*RLETjAWGQ&zrfjN*_R2fa1B$lh7z-73sBmJm8R
z*nVta9jOslq2oc;2~D%lZ`7#Cvqd}|Cu8Bs67hKw(dfUmQR>s`&D@R8zqT<4mjMSC
zID`N|Adk)5t}%>a^aU~eTaMJ)RU+6tdq3)NfN^Ij=L2sR)Vtl6t`58_CmtJ;&=|BU
zRfCOHTV~<#H!0E1^Bp}GIy#97o+LNow}~=*2PdD(JXgh&PIe4JDI6N+IVnt&EC`4T
z7rI-y+Zl!0xK$%YUrG3WISrg@6}d2nJANUMP1}qa0wj>jM<*QO%Y_KM(#!oZtCy!w
z0V&c7JG&e{%p^fucMmpw|lrOw4Zv*7$1
zh>Q3`DG}#c*B;aMBDCyXWT5RV%cj+*Fzeh$W=#YZ(anDH;kfg