diff --git a/test/pdo_sqlsrv/MsCommon.inc b/test/pdo_sqlsrv/MsCommon.inc
new file mode 100644
index 00000000..fa421d57
--- /dev/null
+++ b/test/pdo_sqlsrv/MsCommon.inc
@@ -0,0 +1,1628 @@
+setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
+ create_and_insert_table1($conn);
+ create_and_insert_table2($conn);
+ return $conn;
+ }
+
+ catch( PDOException $e )
+ {
+ var_dump( $e );
+ exit;
+ }
+
+ catch(Exception $e)
+ {
+ var_dump( $e );
+ exit;
+ }
+}
+
+// Create and insert
+function create_and_insert_table1( $conn )
+{
+ global $string_col, $date_col, $large_string_col, $xml_col, $binary_col, $int_col, $decimal_col, $guid_col, $null_col, $comma, $closing_brace, $table1;
+
+ try
+ {
+ $create_query =
+
+ "IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'" . $table1 . "') AND type in (N'U'))
+ DROP TABLE " . $table1 .
+
+ " CREATE TABLE [dbo].[" . $table1 . "](
+ [IntCol] [int] NULL,
+ [CharCol] [char](10) NULL,
+ [NCharCol] [nchar](10) NULL,
+ [DateTimeCol] [datetime] NULL,
+ [VarcharCol] [varchar](50) NULL,
+ [NVarCharCol] [nvarchar](50) NULL,
+ [FloatCol] [float] NULL,
+ [XmlCol] [xml] NULL
+ ) ON [PRIMARY]
+ ";
+
+ $conn->query( $create_query );
+
+ for ($i = 0 ; $i <= 1; ++ $i)
+ {
+ $insert_query =
+ "INSERT INTO PDO_Types_1 VALUES (".
+ $int_col[$i] . $comma .
+ $string_col[$i] . $comma .
+ $string_col[$i] . $comma .
+ "Convert(datetime, ". $date_col[$i] . ")" . $comma .
+ $string_col[$i] . $comma .
+ $string_col[$i] . $comma .
+ $decimal_col[$i] . $comma .
+ $xml_col[$i] .
+ ")";
+
+ $conn->query ( $insert_query );
+ }
+ }
+ catch(Exception $e)
+ {
+ var_dump( $e);
+ exit;
+ }
+}
+
+function create_and_insert_table2( $conn )
+{
+ try
+ {
+ //Timestamp is not present.
+ //VARIANT is not supported.
+ global $string_col, $date_col, $large_string_col, $xml_col, $binary_col, $int_col, $decimal_col, $guid_col, $null_col, $comma, $closing_brace, $table1, $table2;
+
+ $create_query =
+ "IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'".$table2."') AND type in (N'U')) DROP TABLE " . $table2 .
+
+ " CREATE TABLE " .$table2 . " (
+ [BigIntCol] [bigint] NULL,
+ [BinaryCol] [binary](5) NULL,
+ [BitCol] [bit] NULL,
+ [CharCol] [char](10) NULL,
+ [DateCol] [date] NULL,
+ [DateTimeCol] [datetime] NULL,
+ [DateTime2Col] [datetime2](7) NULL,
+ [DTOffsetCol] [datetimeoffset](7) NULL,
+ [DecimalCol] [decimal](18, 0) NULL,
+ [FloatCol] [float] NULL,
+ [ImageCol] [image] NULL,
+ [IntCol] [int] NULL,
+ [MoneyCol] [money] NULL,
+ [NCharCol] [nchar](10) NULL,
+ [NTextCol] [ntext] NULL,
+ [NumCol] [numeric](18, 0) NULL,
+ [NVarCharCol] [nvarchar](50) NULL,
+ [NVarCharMaxCol] [nvarchar](max) NULL,
+ [RealCol] [real] NULL,
+ [SmallDTCol] [smalldatetime] NULL,
+ [SmallIntCol] [smallint] NULL,
+ [SmallMoneyCol] [smallmoney] NULL,
+ [TextCol] [text] NULL,
+ [TimeCol] [time](7) NULL,
+ [TinyIntCol] [tinyint] NULL,
+ [Guidcol] [uniqueidentifier] NULL,
+ [VarbinaryCol] [varbinary](50) NULL,
+ [VarbinaryMaxCol] [varbinary](max) NULL,
+ [VarcharCol] [varchar](50) NULL,
+ [VarcharMaxCol] [varchar](max) NULL,
+ [XmlCol] [xml] NULL
+ ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
+
+ ";
+
+ $stmt = $conn->query( $create_query );
+
+ for ($i =0; $i<= 0 ; ++ $i)
+ {
+ $insert_query =
+
+ " INSERT INTO " .$table2 . " VALUES (".
+ $int_col[$i] . $comma .
+ $binary_col[$i] . $comma .
+ "0" . $comma .
+ $string_col[$i] . $comma .
+ "Convert(date, ". $date_col[$i] . $closing_brace .
+ "Convert(datetime, ". $date_col[$i] . $closing_brace .
+ "Convert(datetime2(7),". $date_col[$i] . $closing_brace .
+ "Convert(datetimeoffset(7)," . $date_col[$i] . $closing_brace .
+ $decimal_col[$i] . $comma .
+ $decimal_col[$i] .$comma .
+ $binary_col[$i] . $comma .
+ $int_col[$i] . $comma .
+ $decimal_col[$i] . $comma .
+ $string_col[$i]. $comma .
+ $large_string_col[$i]. $comma.
+ $int_col[$i]. $comma .
+ $string_col[$i]. $comma .
+ $large_string_col[$i]. $comma .
+ $decimal_col[$i]. $comma .
+ "Convert(smalldatetime, ". $date_col[$i]. $closing_brace .
+ $int_col[$i]. $comma .
+ $decimal_col[$i]. $comma .
+ $large_string_col[$i]. $comma .
+ "Convert(time(7), ". $date_col[$i] . $closing_brace .
+ $int_col[$i] . $comma .
+ $guid_col[$i] . $comma .
+ $binary_col[$i] . $comma .
+ $binary_col[$i] . $comma .
+ $string_col[$i] . $comma .
+ $large_string_col[$i] . $comma .
+ $xml_col[$i] .
+ ")";
+
+ $stmt = $conn->query ($insert_query );
+ }
+
+ }
+ catch(Exception $e)
+ {
+ var_dump( $e);
+ exit;
+ }
+}
+
+function teardown()
+{
+ // TBD
+}
+
+
+function my_print_r( $to_print )
+{
+ global $verbose;
+ if($verbose)
+ print_r($to_print);
+}
+
+
+function TestMode()
+{
+ $testMode = getenv('PHPT_EXEC');
+ return ($testMode ? true : false);
+}
+
+function IsPdoMode()
+{
+ require 'MsSetup.inc';
+ return (($driverType === true) ? true : false);
+}
+
+
+function TraceMode()
+{
+ require 'MsSetup.inc';
+ return ((!TestMode() && $traceEnabled) ? true : false);
+}
+
+function IsMarsSupported()
+{
+ require 'MsSetup.inc';
+ return ($marsMode ? true : false);
+}
+
+function IsDaasMode()
+{
+ require 'MsSetup.inc';
+ return ($daasMode ? true : false);
+}
+
+function FatalError($errorMsg)
+{
+ if (!IsPdoMode())
+ {
+ handle_errors();
+ }
+ die("$errorMsg\n");
+}
+
+function Trace($msg)
+{
+ if (TraceMode())
+ {
+ echo $msg;
+ }
+}
+
+function TraceEx($msg, $exitMode)
+{
+ if ($exitMode)
+ {
+ FatalError($msg);
+ }
+ else
+ {
+ Trace("$msg\n");
+ }
+}
+
+function TraceData($sqlType, $data)
+{
+ if (TraceMode())
+ {
+ $msg = strtoupper(" $sqlType:");
+ echo "$msg\t";
+ if (strlen($msg) <= 7)
+ {
+ echo "\t";
+ }
+ if (strlen($msg) <= 15)
+ {
+ echo "\t";
+ }
+ echo "$data\n"
+;
+ }
+}
+
+function StartTest($testName)
+{
+ require 'MsSetup.inc';
+
+ if (TraceMode())
+ {
+ echo "$PhpDriver: starting \"$testName\" test...\n\n";
+ }
+
+ if (!extension_loaded(IsPdoMode() ? "pdo" : "sqlsrv"))
+ {
+ die("$PhpDriver cannot be loaded.");
+ }
+
+ // Set timezone
+ $tz = ini_get('date.timezone');
+ if (strcmp($tz, "") == 0)
+ {
+ date_default_timezone_set('America/Los_Angeles');
+ $tz = date_default_timezone_get();
+ }
+ Trace("Timezone: $tz.\n");
+}
+
+function EndTest($testName)
+{
+ require 'MsSetup.inc';
+
+ if (TraceMode())
+ {
+ echo "\n$PhpDriver: "
+;
+ }
+ echo "Test \"$testName\" completed successfully.\n"
+;
+}
+
+
+function Setup()
+{
+ set_time_limit(0);
+
+ if (IsPdoMode())
+ { // PDO setup
+ }
+ else
+ { // PHP setup
+ sqlsrv_configure('LogSubsystems', SQLSRV_LOG_SYSTEM_ALL);
+ sqlsrv_configure('LogSeverity', SQLSRV_LOG_SEVERITY_ALL);
+ sqlsrv_configure('WarningsReturnAsErrors', 1);
+ }
+}
+
+function Configure($param, $expected)
+{
+ if (!IsPdoMode())
+ {
+ sqlsrv_configure($param, $expected);
+ $actual = sqlsrv_get_config($param);
+
+ if ($actual == $expected)
+ {
+ Trace("Set configuration parameter $param = $actual.\n");
+ }
+ else
+ {
+ die("Failed to set configuration parameter $param = $expected.");
+ }
+ }
+}
+
+function GetTempTableName($table = '', $temporary = true)
+{
+ // A temporary table name with the '#' prefix will be automatically
+ // dropped once the connection is closed. Otherwise, the caller
+ // should take care of dropping the temp table afterwards.
+
+ $timestamp = round(microtime(true)*1000);
+
+ $prefix = '';
+ if ($temporary)
+ $prefix = '#';
+
+ if (strlen($table) == 0)
+ $table = 'php_test_table';
+
+ return $prefix . $table . '_' . $timestamp;
+}
+
+function GetTempProcName($proc = '', $temporary = true)
+{
+ // A temporary stored procedure name with the '#' prefix will be
+ // automatically dropped once the connection is closed. Otherwise,
+ // the caller should take care of dropping the temp procedure afterwards.
+
+ $timestamp = round(microtime(true)*1000);
+
+ $prefix = '';
+ if ($temporary)
+ $prefix = '#';
+
+ if (strlen($proc) == 0)
+ $proc = 'php_test_proc';
+
+ return $prefix . $proc . '_' . $timestamp;
+}
+
+function PDOConnect($className, $serverName, $user, $pwd, $exitMode)
+{
+ require 'MsSetup.inc';
+ $conn = null;
+
+ try
+ {
+ // simply use $databaseName from MsSetup.inc to facilitate testing in Azure,
+ // which does not support switching databases
+ $conn = new $className("sqlsrv:Server=$serverName;Database=$databaseName", $user, $pwd, $connectionOptions);
+ $conn->setAttribute(PDO::SQLSRV_ATTR_ENCODING, PDO::SQLSRV_ENCODING_SYSTEM);
+ }
+ catch (PDOException $e)
+ {
+ $conn = null;
+ TraceEx("\nFailed to connect to $serverName: ".$e->getMessage(), $exitMode);
+ }
+
+ return ($conn);
+}
+
+
+function ExecuteQuery($conn, $tsql)
+{
+ $stmt = null;
+
+ if (IsPdoMode())
+ { // PDO
+ try
+ {
+ $stmt = $conn->query($tsql);
+ }
+ catch (PDOException $e)
+ {
+ $stmt = null;
+ FatalError("Query execution failed for $tsql: ".$e->getMessage());
+ }
+ }
+ else
+ { // PHP
+ $stmt = sqlsrv_query($conn, $tsql);
+ if ($stmt === false)
+ {
+ FatalError("Query execution failed for $tsql");
+ }
+ }
+ return ($stmt);
+}
+
+
+function PrepareQuery($conn, $tsql)
+{
+ $stmt = null;
+
+ if (IsPdoMode())
+ { // PDO
+ try
+ {
+ $stmt = $conn->prepare($tsql);
+ }
+ catch (PDOException $e)
+ {
+ $stmt = null;
+ FatalError("Query preparation failed for $tsql: ".$e->getMessage());
+ }
+ }
+ else
+ { // PHP
+ $stmt = sqlsrv_prepare($conn, $tsql);
+ if ($stmt === false)
+ {
+ FatalError("Query preparation failed for $tsql");
+ }
+ }
+
+ return ($stmt);
+}
+
+
+function ExecuteQueryEx($conn, $tsql, $modeDirect)
+{
+ $stmt = null;
+
+ if ($modeDirect)
+ { // direct execution
+ if (IsPdoMode())
+ { // PDO
+ try
+ {
+ $stmt = $conn->query($tsql);
+ }
+ catch (PDOException $e)
+ {
+ $stmt = null;
+ }
+ }
+ else
+ { // PHP
+ $stmt = sqlsrv_query($conn, $tsql);
+ }
+ }
+ else
+ {
+ $stmt = PrepareQuery($conn, $tsql);
+ if (IsPdoMode())
+ {
+ $stmt->execute();
+ }
+ else
+ {
+ sqlsrv_execute($stmt);
+ }
+ }
+
+ return ($stmt);
+}
+
+
+function GetSqlType($k)
+{
+ switch ($k)
+ {
+ case 1: return ("int");
+ case 2: return ("tinyint");
+ case 3: return ("smallint");
+ case 4: return ("bigint");
+ case 5: return ("bit");
+ case 6: return ("float");
+ case 7: return ("real");
+ case 8: return ("decimal(28,4)");
+ case 9: return ("numeric(32,4)");
+ case 10: return ("money");
+ case 11: return ("smallmoney");
+ case 12: return ("char(512)");
+ case 13: return ("varchar(512)");
+ case 14: return ("varchar(max)");
+ case 15: return ("nchar(512)");
+ case 16: return ("nvarchar(512)");
+ case 17: return ("nvarchar(max)");
+ case 18: return ("text");
+ case 19: return ("ntext");
+ case 20: return ("binary(512)");
+ case 21: return ("varbinary(512)");
+ case 22: return ("varbinary(max)");
+ case 23: return ("image");
+ case 24: return ("uniqueidentifier");
+ case 25: return ("datetime");
+ case 26: return ("smalldatetime");
+ case 27: return ("timestamp");
+ case 28: return ("xml");
+ default: break;
+ }
+ return ("udt");
+}
+
+function GetDriverType($k, $dataSize)
+{
+ switch ($k)
+ {
+ case 1: return (SQLSRV_SQLTYPE_INT);
+ case 2: return (SQLSRV_SQLTYPE_TINYINT);
+ case 3: return (SQLSRV_SQLTYPE_SMALLINT);
+ case 4: return (SQLSRV_SQLTYPE_BIGINT);
+ case 5: return (SQLSRV_SQLTYPE_BIT);
+ case 6: return (SQLSRV_SQLTYPE_FLOAT);
+ case 7: return (SQLSRV_SQLTYPE_REAL);
+ case 8: return (SQLSRV_SQLTYPE_DECIMAL(28, 4));
+ case 9: return (SQLSRV_SQLTYPE_NUMERIC(32, 4));
+ case 10: return (SQLSRV_SQLTYPE_MONEY);
+ case 11: return (SQLSRV_SQLTYPE_SMALLMONEY);
+ case 12: return (SQLSRV_SQLTYPE_CHAR($dataSize));
+ case 13: return (SQLSRV_SQLTYPE_VARCHAR($dataSize));
+ case 14: return (SQLSRV_SQLTYPE_VARCHAR('max'));
+ case 15: return (SQLSRV_SQLTYPE_NCHAR($dataSize));
+ case 16: return (SQLSRV_SQLTYPE_NVARCHAR($dataSize));
+ case 17: return (SQLSRV_SQLTYPE_NVARCHAR('max'));
+ case 18: return (SQLSRV_SQLTYPE_TEXT);
+ case 19: return (SQLSRV_SQLTYPE_NTEXT);
+ case 20: return (SQLSRV_SQLTYPE_BINARY($dataSize));
+ case 21: return (SQLSRV_SQLTYPE_VARBINARY($dataSize));
+ case 22: return (SQLSRV_SQLTYPE_VARBINARY('max'));
+ case 23: return (SQLSRV_SQLTYPE_IMAGE);
+ case 24: return (SQLSRV_SQLTYPE_UNIQUEIDENTIFIER);
+ case 25: return (SQLSRV_SQLTYPE_DATETIME);
+ case 26: return (SQLSRV_SQLTYPE_SMALLDATETIME);
+ case 27: return (SQLSRV_SQLTYPE_TIMESTAMP);
+ case 28: return (SQLSRV_SQLTYPE_XML);
+ default: break;
+ }
+ return (SQLSRV_SQLTYPE_UDT);
+}
+
+function IsStreamable($k)
+{
+ switch ($k)
+ {
+ case 12: return (true); // nchar(512)
+ case 13: return (true); // varchar(512)
+ case 14: return (true); // varchar(max)
+ case 15: return (true); // nchar(512)
+ case 16: return (true); // nvarchar(512)
+ case 17: return (true); // nvarchar(max)
+ case 18: return (true); // text
+ case 19: return (true); // ntext
+ case 20: return (true); // binary
+ case 21: return (true); // varbinary(512)
+ case 22: return (true); // varbinary(max)
+ case 23: return (true); // image
+ case 28: return (true); // xml
+ default: break;
+ }
+ return (false);
+}
+
+function IsNumeric($k)
+{
+ switch ($k)
+ {
+ case 1: return (true); // int
+ case 2: return (true); // tinyint
+ case 3: return (true); // smallint
+ case 4: return (true); // bigint
+ case 5: return (true); // bit
+ case 6: return (true); // float
+ case 7: return (true); // real
+ case 8: return (true); // decimal(28,4)
+ case 9: return (true); // numeric(32,4)
+ case 10: return (true); // money
+ case 11: return (true); // smallmoney
+ default: break;
+ }
+ return (false);
+}
+
+function IsChar($k)
+{
+ switch ($k)
+ {
+ case 12: return (true); // nchar(512)
+ case 13: return (true); // varchar(512)
+ case 14: return (true); // varchar(max)
+ case 15: return (true); // nchar(512)
+ case 16: return (true); // nvarchar(512)
+ case 17: return (true); // nvarchar(max)
+ case 18: return (true); // text
+ case 19: return (true); // ntext
+ case 28: return (true); // xml
+ default: break;
+ }
+ return (false);
+}
+
+function IsBinary($k)
+{
+ switch ($k)
+ {
+ case 20: return (true); // binary
+ case 21: return (true); // varbinary(512)
+ case 22: return (true); // varbinary(max)
+ case 23: return (true); // image
+ default: break;
+ }
+ return (false);
+}
+
+function IsDateTime($k)
+{
+ switch ($k)
+ {
+ case 25: return (true); // datetime
+ case 26: return (true); // smalldatetime
+ case 27: return (true); // timestamp
+ default: break;
+ }
+ return (false);
+}
+
+function IsUnicode($k)
+{
+ switch ($k)
+ {
+ case 15: return (true); // nchar(512)
+ case 16: return (true); // nvarchar(512)
+ case 17: return (true); // nvarchar(max)
+ case 19: return (true); // ntext
+ default: break;
+ }
+ return (false);
+}
+
+function IsUpdatable($k)
+{
+ switch ($k)
+ {
+ case 27: return (false); // timestamp
+ default: break;
+ }
+ return (true);
+}
+
+function IsLiteral($k)
+{
+ switch ($k)
+ {
+ case 12: return (true); // nchar(512)
+ case 13: return (true); // varchar(512)
+ case 14: return (true); // varchar(max)
+ case 15: return (true); // nchar(512)
+ case 16: return (true); // nvarchar(512)
+ case 17: return (true); // nvarchar(max)
+ case 18: return (true); // text
+ case 19: return (true); // ntext
+ case 24: return (true); // uniqueidentifier
+ case 25: return (true); // datetime
+ case 26: return (true); // smalldatetime
+ case 28: return (true); // xml
+ default: break;
+ }
+ return (false);
+}
+
+function GetMetadata($k, $info)
+{
+ if (strcasecmp($info, 'Name') == 0)
+ {
+ return (getColName($k));
+ }
+ if (strcasecmp($info, 'Size') == 0)
+ {
+ return (getColSize($k));
+ }
+ if (strcasecmp($info, 'Precision') == 0)
+ {
+ return (getColPrecision($k));
+ }
+ if (strcasecmp($info, 'Scale') == 0)
+ {
+ return (getColScale($k));
+ }
+ if (strcasecmp($info, 'Nullable') == 0)
+ {
+ return (getColNullable($k));
+ }
+ return ("");
+}
+
+function GetColName($k)
+{
+ switch ($k)
+ {
+ case 1: return ("c1_int");
+ case 2: return ("c2_tinyint");
+ case 3: return ("c3_smallint");
+ case 4: return ("c4_bigint");
+ case 5: return ("c5_bit");
+ case 6: return ("c6_float");
+ case 7: return ("c7_real");
+ case 8: return ("c8_decimal");
+ case 9: return ("c9_numeric");
+ case 10: return ("c10_money");
+ case 11: return ("c11_smallmoney");
+ case 12: return ("c12_char");
+ case 13: return ("c13_varchar");
+ case 14: return ("c14_varchar_max");
+ case 15: return ("c15_nchar");
+ case 16: return ("c16_nvarchar");
+ case 17: return ("c17_nvarchar_max");
+ case 18: return ("c18_text");
+ case 19: return ("c19_ntext");
+ case 20: return ("c20_binary");
+ case 21: return ("c21_varbinary");
+ case 22: return ("c22_varbinary_max");
+ case 23: return ("c23_image");
+ case 24: return ("c24_uniqueidentifier");
+ case 25: return ("c25_datetime");
+ case 26: return ("c26_smalldatetime");
+ case 27: return ("c27_timestamp");
+ case 28: return ("c28_xml");
+ default: break;
+ }
+ return ("");
+}
+
+
+function GetColSize($k)
+{
+ switch ($k)
+ {
+ case 12: return ("512");
+ case 13: return ("512");
+ case 14: return ("0");
+ case 15: return ("512");
+ case 16: return ("512");
+ case 17: return ("0");
+ case 18: return ("2147483647");
+ case 19: return ("1073741823");
+ case 20: return ("512");
+ case 21: return ("512");
+ case 22: return ("0)");
+ case 23: return ("2147483647");
+ case 24: return ("36");
+ //case 25: return ("23");
+ //case 26: return ("16");
+ case 27: return ("8");
+ case 28: return ("0");
+ default: break;
+ }
+ return ("");
+}
+
+function GetColPrecision($k)
+{
+ switch ($k)
+ {
+ case 1: return ("10");
+ case 2: return ("3");
+ case 3: return ("5");
+ case 4: return ("19");
+ case 5: return ("1");
+ case 6: return ("53");
+ case 7: return ("24");
+ case 8: return ("28");
+ case 9: return ("32");
+ case 10: return ("19");
+ case 11: return ("10");
+ case 25: return ("23");
+ case 26: return ("16");
+ default: break;
+ }
+ return ("");
+}
+
+function GetColScale($k)
+{
+ switch ($k)
+ {
+ case 8: return ("4");
+ case 9: return ("4");
+ case 10: return ("4");
+ case 11: return ("4");
+ case 25: return ("3");
+ case 26: return ("0");
+ default: break;
+ }
+ return ("");
+}
+
+function GetColNullable($k)
+{
+ return (IsUpdatable($k) ? "1" : "0");
+}
+
+function GetSampleData($k)
+{
+ switch ($k)
+ {
+ case 1: // int
+ return ("123456789");
+
+ case 2: // tinyint
+ return ("234");
+
+ case 3: // smallint
+ return ("5678");
+
+ case 4: // bigint
+ return ("123456789987654321");
+
+
+ case 5: // bit
+ return ("1");
+
+ case 6: // float
+ return ("123.456");
+
+ case 7: // real
+ return ("789.012");
+
+ case 8: // decimal
+ return ("12.34");
+
+ case 9: // numeric
+ return ("567.89");
+
+ case 10:// money
+ return ("321.54");
+
+ case 11:// smallmoney
+ return ("67.89");
+
+ case 12:// char
+ case 15:// nchar
+ return ("The quick brown fox jumps over the lazy dog");
+
+ case 13:// varchar
+ case 16:// nvarchar
+ return ("The quick brown fox jumps over the lazy dog 9876543210");
+
+ case 14:// varchar(max)
+ case 17:// nvarchar(max)
+ return ("The quick brown fox jumps over the lazy dog 0123456789");
+
+ case 18:// text
+ case 19:// ntext
+ return ("0123456789 The quick brown fox jumps over the lazy dog");
+
+ case 20:// binary
+ return ("0123456789");
+
+ case 21:// varbinary
+ return ("01234567899876543210");
+
+ case 22:// varbinary(max)
+ return ("98765432100123456789");
+
+ case 23:// image
+ return ("01234567899876543210");
+
+ case 24:// uniqueidentifier
+ return ("12345678-9012-3456-7890-123456789012");
+
+ case 25:// datetime
+ case 26:// smalldatetime
+ return (date("Y-m-d"));
+
+ case 27:// timestamp
+ return (null);
+
+ case 28:// xml
+ return ("The quick brown fox jumps over the lazy dog0123456789");
+
+ default:
+ break;
+ }
+
+ return (null);
+}
+
+
+function CreateDB($conn, $dbName)
+{
+ Trace("Creating database $dbName ...");
+ $tsql = "CREATE DATABASE [$dbName]";
+ DropDB($conn, $dbName);
+
+ if (IsPdoMode())
+ {
+ $outcome = $conn->exec($tsql);
+ if ($outcome === false)
+ {
+ FatalError("Failed to create test database: $dbName");
+ }
+ }
+ else
+ {
+ $stmt = sqlsrv_query($conn, $tsql);
+ if ($stmt === false)
+ {
+ FatalError("Failed to create test database: $dbName");
+ }
+ sqlsrv_free_stmt($stmt);
+ }
+ Trace(" completed successfully.\n");
+}
+
+function DropDB($conn, $dbName)
+{
+ $tsql = "DROP DATABASE [$dbName]";
+ if (IsPdoMode())
+ {
+ $mode = $conn->getAttribute(PDO::ATTR_ERRMODE);
+
+ $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
+
+ $outcome = $conn->exec($tsql);
+ $conn->setAttribute(PDO::ATTR_ERRMODE, $mode);
+
+ }
+ else
+ {
+ $stmt = sqlsrv_query($conn, $tsql);
+ if ($stmt === false)
+ {
+ }
+ else
+ {
+ sqlsrv_free_stmt($stmt);
+ }
+ }
+}
+
+
+function CreateTable($conn, $tableName)
+{
+ $dataType = "[c1_int] int, [c2_tinyint] tinyint, [c3_smallint] smallint, [c4_bigint] bigint, [c5_bit] bit, [c6_float] float, [c7_real] real, [c8_decimal] decimal(28,4), [c9_numeric] numeric(32,4), [c10_money] money, [c11_smallmoney] smallmoney, [c12_char] char(512), [c13_varchar] varchar(512), [c14_varchar_max] varchar(max), [c15_nchar] nchar(512), [c16_nvarchar] nvarchar(512), [c17_nvarchar_max] nvarchar(max), [c18_text] text, [c19_ntext] ntext, [c20_binary] binary(512), [c21_varbinary] varbinary(512), [c22_varbinary_max] varbinary(max), [c23_image] image, [c24_uniqueidentifier] uniqueidentifier, [c25_datetime] datetime, [c26_smalldatetime] smalldatetime, [c27_timestamp] timestamp, [c28_xml] xml";
+ CreateTableEx($conn, $tableName, $dataType);
+ if (IsDaasMode())
+ {
+ $colIndex = "[c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric]";
+ CreateTableIndex($conn, $tableName, $colIndex);
+ }
+}
+
+function CreateTableEx($conn, $tableName, $dataType)
+{
+ Trace("Creating table $tableName ...");
+ $tsql = "CREATE TABLE [$tableName] ($dataType)";
+ DropTable($conn,$tableName);
+
+ if (IsPdoMode())
+ {
+ $outcome = $conn->exec($tsql);
+ if ($outcome === false)
+ {
+ FatalError("Failed to create test table: $tsql");
+ }
+ }
+ else
+ {
+ $stmt = sqlsrv_query($conn, $tsql);
+ if ($stmt === false)
+ {
+ FatalError("Failed to create test table: $tsql");
+ }
+ sqlsrv_free_stmt($stmt);
+ }
+ Trace(" completed successfully.\n");
+}
+
+
+function CreateTableIndex($conn, $tableName, $colIndex)
+{
+ require 'MsSetup.inc';
+ CreateTableIndexEx($conn, $tableName, $tableIndex, $colIndex);
+}
+
+
+function CreateTableIndexEx($conn, $tableName, $tableIndex, $colIndex)
+{
+ Trace("Creating table index for $tableName ...");
+ $sqlIndex = "CREATE CLUSTERED INDEX [$tableIndex] ON [$tableName]($colIndex)";
+ if (IsPdoMode())
+ {
+ $outcome = $conn->exec($sqlIndex);
+ if ($outcome === false)
+ {
+ FatalError("Failed to create clustered index for test table: $sqlIndex");
+ }
+ }
+ else
+ {
+ $stmt = sqlsrv_query($conn, $sqlIndex);
+ if ($stmt === false)
+ {
+ FatalError("Failed to create clustered index for test table: $sqlIndex");
+ }
+ sqlsrv_free_stmt($stmt);
+ }
+ Trace(" completed successfully.\n");
+}
+
+function CreateUniqueIndex($conn, $tableName, $colIndex)
+{
+ require 'MsSetup.inc';
+ CreateUniqueIndexEx($conn, $tableName, $tableIndex, $colIndex);
+}
+
+function CreateUniqueIndexEx($conn, $tableName, $tableIndex, $colIndex)
+{
+ Trace("Creating unique table index for $tableName ...");
+ $sqlIndex = "CREATE UNIQUE INDEX [$tableIndex] ON [$tableName]($colIndex)";
+ if (IsPdoMode())
+ {
+ $outcome = $conn->exec($sqlIndex);
+ if ($outcome === false)
+ {
+ FatalError("Failed to create unique index for test table: $sqlIndex");
+ }
+ }
+ else
+ {
+ $stmt = sqlsrv_query($conn, $sqlIndex);
+ if ($stmt === false)
+ {
+ FatalError("Failed to create unique index for test table: $sqlIndex");
+ }
+ sqlsrv_free_stmt($stmt);
+ }
+ Trace(" completed successfully.\n");
+}
+
+function DropTable($conn, $tableName)
+{
+ $tsql = "DROP TABLE [$tableName]";
+ if (IsPdoMode())
+ {
+ $mode = $conn->getAttribute(PDO::ATTR_ERRMODE);
+
+ $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
+
+ $outcome = $conn->exec($tsql);
+ $conn->setAttribute(PDO::ATTR_ERRMODE, $mode);
+
+ }
+ else
+ {
+ $stmt = sqlsrv_query($conn, $tsql);
+ if ($stmt === false)
+ {
+ }
+ else
+ {
+ sqlsrv_free_stmt($stmt);
+ }
+ }
+}
+
+
+function SelectFromTable($conn, $tableName)
+{
+ return (SelectFromTableEx($conn, $tableName, null));
+}
+
+function SelectFromTableEx($conn, $tableName, $cond)
+{
+ if (($cond != null) && (strlen($cond) > 0))
+ {
+ return (SelectQuery($conn, "SELECT * FROM [$tableName] WHERE $cond"));
+ }
+ else
+ {
+ return (SelectQuery($conn, "SELECT * FROM [$tableName]"));
+ }
+}
+
+function SelectQuery($conn, $query)
+{
+ return (SelectQueryEx($conn, $query, null));
+}
+
+function SelectQueryEx($conn, $query, $options)
+{
+ $numFields = 0;
+ if (IsPDOMode())
+ {
+ $stmt = ExecuteQuery($conn, $query);
+ $numFields = $stmt->columnCount();
+ }
+ else
+ {
+ if ($options != null)
+ {
+ $stmt = sqlsrv_query($conn, $query, null, $options);
+ }
+ else
+ {
+ $stmt = sqlsrv_query($conn, $query);
+ }
+ if ($stmt === false)
+ {
+ FatalError("Failed to query test table");
+ }
+
+ $numFields = sqlsrv_num_fields($stmt);
+ }
+ if ($numFields <= 0)
+ {
+ die("Unexpected number of fields: .$numFields");
+ }
+ return ($stmt);
+}
+
+function RowCount($stmt)
+{
+ $rowCount = 0;
+ if (IsPdoMode())
+ {
+ while ($stmt->fetchColumn())
+ {
+ $rowCount++;
+ }
+ }
+ else
+ {
+ while (sqlsrv_fetch($stmt))
+ {
+ $rowCount++;
+ }
+ }
+ return ($rowCount);
+}
+
+
+function NumRows($conn, $tableName)
+{
+ $stmt = SelectFromTable($conn, $tableName);
+ $rowCount = RowCount($stmt);
+ if (IsPdoMode())
+ {
+ $stmt = null;
+ }
+ else
+ {
+ sqlsrv_free_stmt($stmt);
+ }
+
+ return ($rowCount);
+}
+
+
+function InsertQuery($tableName)
+{
+ return (InsertQueryEx($tableName, rand(1, 20)));
+}
+
+function InsertRows($conn, $tableName, $rowCount)
+{
+ Trace("Inserting $rowCount rows into $tableName ...");
+ $count = 0;
+ for($i = 0; $i < $rowCount; $i++)
+ {
+ if (InsertRow($conn, $tableName))
+ {
+ $count++;
+ }
+ }
+ Trace(" completed successfully.\n");
+ if ($count != $rowCount)
+ {
+ die("$count rows inserted instead of $rowCount\n");
+ }
+ return ($count);
+}
+
+function InsertRowsByRange($conn, $tableName, $minIndex, $maxIndex)
+{
+ $rowCount = $maxIndex - $minIndex + 1;
+ if ($rowCount > 0)
+ {
+ Trace("Inserting $rowCount rows into $tableName ...");
+ for($i = $minIndex; $i <= $maxIndex; $i++)
+ {
+ InsertRowByIndex($conn, $tableName, $i);
+ }
+ Trace(" completed successfully.\n");
+ }
+}
+
+function InsertRow($conn, $tableName)
+{
+ $tsql = InsertQuery($tableName);
+ $stmt = null;
+
+ if (IsPdoMode())
+ {
+ $stmt = $conn->exec($tsql);
+ }
+ else
+ {
+ $stmt = sqlsrv_query($conn, $tsql);
+ }
+ return (InsertCheck($stmt));
+}
+
+function InsertRowEx($conn, $tableName, $dataCols, $dataValues, $dataOptions)
+{
+ $tsql = "INSERT INTO [$tableName] ($dataCols) VALUES ($dataValues)";
+ $stmt = null;
+
+ if (IsPdoMode())
+ {
+ $stmt = $conn->exec($tsql);
+ }
+ else
+ {
+ $stmt = sqlsrv_query($conn, $tsql, $dataOptions);
+ }
+ return (InsertCheck($stmt));
+}
+
+function InsertRowByIndex($conn, $tableName, $index)
+{
+ $tsql = InsertQueryEx($tableName, $index);
+ $stmt = null;
+
+ if (IsPdoMode())
+ {
+ $stmt = $conn->exec($tsql);
+ }
+ else
+ {
+ $stmt = sqlsrv_query($conn, $tsql);
+ }
+ return (InsertCheck($stmt));
+}
+
+function InsertStream($conn, $tableName, $dataCols, $dataValues, $dataOptions, $atExec)
+{
+ $tsql = "INSERT INTO [$tableName] ($dataCols) VALUES ($dataValues)";
+ $stmt = null;
+
+ if (IsPdoMode())
+ {
+ $stmt = $conn->exec($tsql);
+ }
+ else
+ {
+ if ($atExec)
+ {
+ $stmt = sqlsrv_query($conn, $tsql, $dataOptions, array('SendStreamParamsAtExec' => 1));
+ }
+ else
+ {
+ $stmt = sqlsrv_query($conn, $tsql, $dataOptions);
+ if ($stmt)
+ {
+ while (sqlsrv_send_stream_data($stmt))
+ {
+ }
+ }
+ }
+ }
+
+ return (InsertCheck($stmt));
+}
+
+
+function InsertCheck($stmt)
+{
+ $numRows = 0;
+
+ if ($stmt === false)
+ {
+ FatalError("Failed to insert row into test table");
+ }
+ if (IsPdoMode())
+ {
+ $numRows = $stmt;
+ }
+ else
+ {
+ $numRows = sqlsrv_rows_affected($stmt);
+ sqlsrv_free_stmt($stmt);
+ }
+ if ($numRows != 1)
+ {
+ die("Unexpected row count at insert: ".$numRows);
+ }
+ return (true);
+}
+
+function GetInsertData($rowIndex, $colIndex, $skip)
+{
+ $query = InsertQueryEx("TestTable", $rowIndex);
+ $data = strstr($query, "((");
+ $pos = 1;
+ if ($data === false)
+ {
+ die("Failed to retrieve data on row $rowIndex");
+ }
+ $data = substr($data, 2);
+
+ while ($pos < ($colIndex - $skip))
+ {
+ $data = strstr($data, ", (");
+ $pos++;
+ if ($data === false)
+ {
+ die("Failed to retrieve data on row $rowIndex, column $pos");
+ }
+ $data = substr($data, 3);
+ }
+ $pos = strpos($data, ")");
+ if ($pos === false)
+ {
+ die("Failed to isolate data on row $rowIndex, column $pos");
+ }
+ $data = substr($data, 0, $pos);
+ if (strcasecmp($data, "null") == 0)
+ {
+ $data = "";
+ }
+ if (IsUnicode($colIndex))
+ { // N'data'
+ $data = substr($data, 2, strlen($data) - 3);
+ }
+ else if (IsLiteral($colIndex))
+ { // 'data'
+ $data = substr($data, 1, strlen($data) - 2);
+ }
+ else if (IsBinary($colIndex))
+ { // 0xdata
+ $data = substr($data, 2);
+ }
+ return (trim($data));
+}
+
+function CreateProc($conn, $procName, $procArgs, $procCode)
+{
+ DropProc($conn,$procName);
+
+ if (!IsPdoMode())
+ {
+ $stmt = sqlsrv_query($conn, "CREATE PROC [$procName] ($procArgs) AS BEGIN $procCode END");
+ if ($stmt === false)
+ FatalError("Failed to create test procedure");
+ sqlsrv_free_stmt($stmt);
+ }
+ else
+ {
+ $stmt = $conn->query("CREATE PROC [$procName] ($procArgs) AS BEGIN $procCode END");
+ }
+}
+
+function DropProc($conn, $procName)
+{
+ if (!IsPdoMode())
+ {
+ $stmt = sqlsrv_query($conn, "DROP PROC [$procName]");
+ sqlsrv_free_stmt($stmt);
+ }
+ else
+ {
+
+ $query = "IF OBJECT_ID('[$procName]', 'P') IS NOT NULL DROP PROCEDURE [$procName]";
+ $stmt = $conn->query($query);
+ }
+}
+
+function CallProc($conn, $procName, $procArgs, $procValues)
+{
+ $stmt = CallProcEx($conn, $procName, "", $procArgs, $procValues);
+ sqlsrv_free_stmt($stmt);
+}
+
+function CallProcEx($conn, $procName, $procPrefix, $procArgs, $procValues)
+{
+ $stmt = sqlsrv_query($conn, "{ $procPrefix CALL [$procName] ($procArgs)}", $procValues);
+ if ($stmt === false)
+ {
+ FatalError("Failed to call test procedure");
+ }
+ return ($stmt);
+}
+
+
+function CreateFunc($conn, $funcName, $funcArgs, $retType, $funcCode)
+{
+ DropFunc($conn,$funcName);
+ $stmt = sqlsrv_query($conn, "CREATE FUNCTION [$funcName] ($funcArgs) RETURNS $retType AS BEGIN $funcCode END");
+ if ($stmt === false)
+ {
+ FatalError("Failed to create test function");
+ }
+ sqlsrv_free_stmt($stmt);
+}
+
+function DropFunc($conn, $funcName)
+{
+ $stmt = sqlsrv_query($conn, "DROP FUNCTION [$funcName]");
+ if ($stmt === false)
+ {
+ }
+ else
+ {
+ sqlsrv_free_stmt($stmt);
+ }
+}
+
+
+function CallFunc($conn, $funcName, $funcArgs, $funcValues)
+{
+ $stmt = sqlsrv_query($conn, "{ ? = CALL [$funcName]($funcArgs)}", $funcValues);
+ if ($stmt === false)
+ {
+ FatalError("Failed to call test function");
+ }
+ sqlsrv_free_stmt($stmt);
+}
+
+function handle_errors()
+{
+ $errors = sqlsrv_errors(SQLSRV_ERR_ERRORS);
+ $count = count($errors);
+ if($count == 0)
+ {
+ $errors = sqlsrv_errors(SQLSRV_ERR_ALL);
+ $count = count($errors);
+ }
+ if($count > 0)
+ {
+ for($i = 0; $i < $count; $i++)
+ {
+ Trace($errors[$i]['message']."\n");
+ }
+ }
+}
+
+function str2hex($dataIn)
+{
+ $dataOut = "";
+ $len = strlen($dataIn);
+ for ($i = 0; $i < $len; $i++)
+ {
+ $ch = strtoupper(substr($dataIn, $i, 1));
+ if ($ch == "A")
+ {
+ $dataOut = $dataOut."41";
+ }
+ else if ($ch == "B")
+ {
+ $dataOut = $dataOut."42";
+ }
+ else if ($ch == "C")
+ {
+ $dataOut = $dataOut."43";
+ }
+ else if ($ch == "D")
+ {
+ $dataOut = $dataOut."44";
+ }
+ else if ($ch == "E")
+ {
+ $dataOut = $dataOut."45";
+ }
+ else if ($ch == "F")
+ {
+ $dataOut = $dataOut."46";
+ }
+ else
+ {
+ $dataOut = $dataOut."3".$ch;
+ }
+
+ }
+ return ($dataOut);
+}
+
+function PhpVersionComponents( &$major, &$minor, &$sub )
+{
+ $str_version = phpversion();
+
+ $major = strtok( $str_version, "." );
+ $minor = strtok( "." );
+ $sub = strtok( "." );
+}
+
+function InsertQueryEx($tableName, $index)
+{
+ $query = "";
+ switch ($index)
+ {
+ case 1:
+ $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((0), (113), (-1), (-293433712), (0), (0), (-3.4E+38), (100000000000000000000000), (null), (0.4204), (0.5017), (' bzbo>o~bh~Bߩ+~AZ>~C_<@:O/v~bA|/o :+~*CuzrBU/@_zb/UrboZo.Cv,bAuZhbZ֢bbZaZ>Uz+ĪObOau_Ah>BoCvv./:OoZ*_.B>haovhv:|v~֢hvz+*+b*b bO>/.'), ('.C+.~a<ã+ba_ b|:|.~@ *Zz @+_>~âao|./AZ//bboU**У>_bb,@o@:O_+U>/|bAUߣ_u|Z,<ãУ>,ZuZbu* :Щ,uCo+r.|Bb@Bh>OB|._vZoC+UB/+__|*'), ('oZ+C>,|:u r.@C@_,ab>,~bC:,+|Z>rТbA* B Z<.aBB~.ub>_uU>@z:AB|Bbb:vrzbB |*OZZbO@ <:uCvB/a~ :_>.zr.A zOb+@v|bzU*O_h_/U/Aa_U| Z._CA+@_bh uCOZ@aovb>~Bb@ĩU~zBh~|,b_.>UUo:b+ZCAb.ZvBa*@:b+++~ZU,Uâo @bU<,uurZ>rz.,O.vOhvAU//_v,C*U::,Bu| @OUU:b|/O@voUu@..*b_䣢~+/b~b/u_~vrb~~@aU>OZua,oB,O vhur_vaZ*Oz|Uzv* *zr<~~Ub*~rAuCߣܢb~hz>|b@h.AZoUC_,C@r*r|>v>u_>:o@b.B>b:|/O,*C++>>ߢ:o֣,>uABC,_CB zC+/b,/ OOaBboUarv,Oau<,u+,aU*/|bbu@:*Z.+oh zhzCBhC:,:a_oU b*B.buOoBu+ubBAz:~b:hobZB@, A>ob||+hAaU|@v U@OC_vA@|uЩB,O r>bz_+_~ܣ|OArr~Z>arubv@BC>>*OZ|,av*zu.zAau+ _@C/h@AU:,~ur+CuAܢ+,+@+:bģ /U@A.~ah|.:hrb_.+ + z.>Ob_U.bBߣA/Z.vU,:,@v>/Bã||/C֢Chz|~㣣bUBb+a.>OubOrrzab*+bz,~._| /ro,:<:| :+Bh.ZbCBߢu,vv:~@u@o>|~Z/.hb,B*ZB*Cߩ,|vzoТub>>O+/~:*ur h~:B@>:BuZ>.,@>*<@B:B@ObZCo@AbOz_Z~oa@+b_A:v_u~u~u.aU<>O.vz~:ܩCu~CobCba ֪@C|z+bO:_U|:arh B:~r+B|uo,*|/UZ@_/zvo:_ | h: /~h,rzv|ub*Zb,a,+hbCr <,o *,v:BAhAC|aZo,::a~zrB_b+A,aB>z*~֩a_r>h**_av::,+vU@+.>@o|*o*Z zA|b|ov*/:b.oB| b>C|bbbBUOAZ, v_hZ bZU*u,@_rU>.hu@|@COZbUru:|oOU*rU B@,~oТv|_o*CZ~uB~OA@:|B oo|Uar~,A+Cbr:rCauߩߪ+bBv*U ubbOUbU:BCb*<~@uU_Z/C h+rCoߢO+oovz*aZ_//v.h@~oavubZ:oZvzZOa*O>C,/r+ZobZZOܪChuBaz*buBo~_bAC/u o b|éAb,+OU*,ZUģ*Z|r+b/|o.,.>v~z+/~:,Ou+ߩaA.U Zbr*֩>Z C|Zhb+b_Uo*bz,+:+/zo|o_hb~Oh.,UBoa u++hor,>Bu ,_uu*BAU@a~_z,ܪUhOao+>zA.U:BaavB~vZ<|.~+uvb~Z uobUbBb:uhab/B>Aé|.|*b/zCuo@+o .zZ,*uOZ rO O*oZ>z@U@h*C~>+:|oZ.bAbBh@bo Au䢩|a:aA:C*ܩ+v,bOo@.,r+Cbuu|bh|,b<+ZAu䢢 /~UbZ>hAB>ЪzaZ|/CoУv.~@+h:v+ * ~hA ,zUC@uoab.*ZBrbCZu_~ܣ֪b:|.h~BUb:ߪ CzU.:U+o,++|rz|hoz.CUbC vC uaabAz.|aa<@>/Au/|u*bo::+r>zB*o_zo<|~@|ooC>b|AhzO@ âz*vb:U:b rZCzbao+<++|h:O<*Т|*vzA@z@B*Abrba.+|/v@o b,AUvur:Uv,~Bb|b|:zAB@oh_<|bBbU||~BЩ/rBO<*UbhC|,b*Ah<ߢZU|Bu+|/rOAr@:bo@B>.azB|CCo֩U Bb.u/oroZAbAzbhZ:b,*,>/Uz@b _~Ba+,A|A~@>,@@O~_vaUhr@ߩ~, ~hz*_|.:+@:avzOB@~â@BaO| o.OrhC*_@ur |@ObOoCb_*r/A<.Z: u>aߪv.~*b,U@+U<<.uhz:B<_@O >:ZAU hv@.bauO<*/bC::a .uuUh:o_U|A,O/ ||_>vrZ~|:C<~|.._ģZZ@BbC__CZB,zAhߪ+@aro@,b, vb<>CUabߪC~b_:CUua+.ArBU.r>h@B.vU/zZ+rb+u,h*aU@.BA>aZ:bAU:ha*>v~ *b_~vA,/zr~<>O@UhUZr>B~Or*>ra:zZ B@hߩ.CCz|bvuzz~U,brAzUz* u_:o,,/@bU,uOZuzBbaur AB*Z*+*+a|h* hb :>||+U/*@*_:B| ,Ar@rhbUUzZ*/>AouoBh@>Z::zO _v.b,O.O|bC|rr.<+<,:<,~Ub~ZC:~Z>Uv~~ABvraBuBU@ZuCAuh>@aO.ߪbUA*B~:vAb֪_ao.ba|UbCbA>vhvb@U/rvaUOUr<~_z*@/_~vCbbUhbb A<~Bv~:oObhaC Z@o:*._+CrB Zv,B~,U/U<+ Aa ,A+ub,>.rvbB/uhZ>U,:OA|*u,: _|hOb/ru*Ģu֣.zh@r,@b.|bvz||rOvh@/ߢ.zUZov|.,|hua+B+~*Z~Z~_<_~,zbbrAv.v*U.<_:.a+<@UA>b|>.<.BO+,aCb*A,~CZZ:/@/O>_zC~,:Z,h/|>z>_+_Уb@,U+O.><_A*~~a< ,:+Chh<+b+bb>ZĩoU|BaZAuB|@zCA//bAo/O~:a~,/~C+u>C*>*u>~bzb~O_rrAU|oa/v,|CC/*azBA,UZABA+ Ub_,vbvrUhbb~Ua+B@_~B@ZzbߢAoZhBu:zvUAZhh>+zv><.r>*||z+hvhUb,>u+,Aha~>CbOCao, //ZZo,*v/@o:aAU| >ģ,>,>u,|U@㣩_v|bohZ:>a<|C:b@< ZrAv*U/uZ:ubv_ߪa+uU@/avChAbbBA*ru Uz.ua*>U o/ C|oUo@,Baa_u@:~BߢhbAbzBOCh~.OhU.baA@rC,A>r+oChbo,/Ourh<,b+h:. |_U ,.>Uĩ֪@>~..éB:b| b/zOZO|Uru|~:B:haCvZO,ߪo bh@Ch_vb.U::/v,B_.U,r,|OZ,oobo,>C za>AU@b+vAu>U*~*v Z:vr+Ba+rbzz@:*b .Ao./b/~~va>o Zzh:_Zbzv~@| /,/b/z|B**@v>b~,֪|.~*_bC/>r*,z_bZz+oz/* C|aB|+Ohb.v.rB~B/@<,o~vU|_@Bb*_֢Bo.ߣuU:.buho@z|* >zU /Aa֪Zu@b.AZ AC/Br~raOUrzvvh~rubCbbC@,AzCB*z |rb/@zAr vbhU*r+A:,au墣z_v:vh@U:v ho*._*b.ߢha~@:v+vo,/.*bO/obB+b'), (N'C hB|,AbB_+rh@+Ob_
BboZC+֢oO* rrbBB+:>o*/bzvohZ,ܩܪ>C +Cv,*~zO ~ob_U:Au*:Cã+:rOhUhOBvzv.~.Ca_~ uߣC*éCv>rZ,b*ABb~>BO/>+A~,*/uz~u@䪩o ACA B@:A_aavãu>_++U+Oa|A,_+Ab*Zhr,~@uAa<.>B*:.zOh*UOܣ *r+b:ab|Uhbvz.éO|Oa|*ZU+|.~O~bA*>B>+Z/>h>|+CТ/:zb>,z+ĩZ,a_Z*vhAz v/ ~U,:.:|.r@C~*uru:*|o/zbz::b:,*C*C+O.Ov>vbb/<.BU_BzAa,Z.uaO aBAZr>+U@~@uU<*u@b<|Cvba U+rzaUa_ Oa*u:*/>+hCO/aZz:B Z,~ab@vBrab_zh֣Щb~rrbbr:A/*vb uo uh_:uobA+~ ~*Ub BvZZB>~ߩ>zUUv> bAAU <ߣ~AbO|.ZAUA@o>CauoA:abU:/A~ZuZ@vOh+ܣuv. *U+v u<,bvv@U_U_+:v >*u.b/vurbbz~rhO,BCCbC+UC+~:.hvChU h Z,zr|b:/zO.@a brB.,a>vU|B voТhauOubhZbz>b.+u<:~C@b:ߩUabZ >rCa.*o_o*z.*/C~O.AbO<>oC,@+>_Z@/a,__A: bb>h@A ЪA@ arUBAr*_+/uaA|Au|zz+ z<:>zO*Orzo.*A@CzA+b| v_CbboA<֩a @::Z UZbBCOAUZ:b U::rh*B, :~o*~:._|UZvrhZB~/Ъ|**.uBO,UraZO~*bvo>CA@/r|aOB|+aCzZuCu@~z>ZC@@OCh@|UOr>A_UUv>hr.v>O~:A:CZ ܣOUZhr:_u_AuC+zzU*_b@/hBbba@* :U*b~B~>֢oUbOvv< *+r+UAv~,*r:_bz:|vbOB@@,h@ Za,b+.a>Ba|BO.ZObu~ _><,>h+z.,OuBBBUbarA*ܣ+O_~o*_>>A:|@ZbZߪ_Bh,>_+~oz/CbOuva>@|:ubU|b<,h:|*:rB::~.b.CZuZa,oOh uߢO_+ob.+ |UabbA.<>vB~ hCvBz@v.~ĩz.>B/a.*@,b:_a|/+_ܣo>U:.obZ>:bbOU,b:arCb<,~~AzaoZobz@Z_*A:uZrBBB.Z~*>@boaB@O.U*hh+b/zO/,v~rb<,CAh>:A/:|:++<~r+>:O, ,OhA:a._b|Zz Z_~a_+>rv@BbZ*rvZ+<|+|bUr~|hb_v|Ob,ܢ:/:baUA:UBa _>u+:Bub|.11/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/0111/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/00'))";
+ break;
+
+ case 2:
+ $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((1), (null), (-32768), (192263244), (null), (0), (1), (-1), (0.0782), (0.3209), (0), ('o+/>z,h/+@ /b/v,va<>A@ *>a|uOv*.zOB.>*CUz .ģrozUo. *b/B.rC>ovCZ.bZ|~ã~|O*.rU@Br_,vAa.zrC+,:<:Ъba/:,/:+bov~o+C~,>ozUb.|֩: >C/baBr~Uba_u>_vAuh,vA>bb|uAaBOO|u:voUC_*br a>< Z:|*<䢩o:U@|C*,>h o/vbAb/r*/> ov_CuUBabZaOb~aAB,U B+Oub.hzb,_b,A+O'), ('zC@ *zCUUoB:ЪA_|bOܢuUb_.bz+@b:zv_C~vbC|zh,:OhOh |r >OBZ: z brb:~U:b~>@bv+O~/+<_v*.Z.ho.b.AvuZ B:b.>OO_o:<+䣢+ra:aazr/hAhߣUa:+r/:b+|O:B|OBZoO@*|Z oO/,uzO/Zrvu*a|@z:ZbzvbUuz.:h: *_ߣ/rOAr,, >h*zZA,>a_O@/ B.b.ubv.CU:*AAaa | +_>Uozz C+rC|b* /|:>.uuC~U CoAb>.au>OZZr::ߣh@@ua~>v_~Zv CAua,.orr >U~u*O>>v>rz+_avZ *:ĩz+֪@>UoUOb>ߣ_/ /o,*Zb,u~ZZU*AauOUb@>Uub~hU.*ar|~<:+~bOhC O+|Z@:h+O@_o_rbOO|OCa_vA/U@B*|ArzAha|v/:u~|vAb,AhUh+: |:>_z/r*:.hh+,ooUz<,:C /Bu,r~bA/A~r:~hh+OvzzobC:/CbhZu_O|*bbouBv_or/bbb*aZh/@z| @u>:b|vba oUaCZza,@o~vzB~:*/U,>h,abU/._..Czu/zZ*Z_Za>~ra@o.r: ObO+v+ U,_,ܢĩ:hvb/r br:C Z>AvbhuZz+ bb:: >,~bb,a_a*Ubߢu:UOZ.u<_Uab//<+v_+CbZ֪Cr@h.azra@,>UZ.,_,B.v<.Bߩ|Z@|b+B.:/>:.|>bUu*o>OB.Z+u/b~Ao/avZAhZoU>a+rB|/Our /A~,>Ob|h.:Ob b_Zuo*b.B~@*,BC+u*Zr*O:ov+>A.AZ_|+râ_u@Ubbãb*BA/:rvr..,@Ah+hhvu*rub<~Z@hbb+o.hz*|UuOa㢣++Z+_ovur_v_|rv~hB/ _@*||OAAC,uOObBoZU*.zaov_Cohro<~h_azU,@r ~Zhra<_U/b@hb+.z+Ua~Ub*Ab+v~*vbC|,**֩CO+h+~:/C>ܩ*>rB::z */+CB*ubbB*bbZ,h<:Av@uB.a:UUA+_@_~.>~ê:/|vvZoBoBbUB@+/,bU+@B>+/+O @|Z_<<.UBC+a:>bOhߣ+U*>~bCUua.r媪Bvv>Oor+>CCUb|z| >~~/>uB_vo.,bã/bZ+ߢ<|:bAovb~*~zaA+U~zuu>Uh@+h.u.uvU:u.|ub.,vaUrr.UbuAu_|bub>~*C~rU,uu|zuaCU|>ur:zbzu:bB.oBhЪav@Z~,A_:bO@ *zbo h> ~Bv/ao+bA_|+vbUU rvb+zUv>z:@,B êAvOr*~Cb@|oߢCrz.B/:b_*v|O+OC,ߪ,B,:ouhb>oCu+h@uhߣ>C>U,z<:o@ haТ/oUz~~bhC,r:>ob>@>> . .bzrvv_zo~hb_ovz_U:|O<@~UvêAoo֣ubo|~: @b@r B/>z|*v>:/ h~ . z*A:<_,.zC|B@<,A,++~aozavZ_ZraAZuܢ|O/.bBOA>Zuu:BUaoêUu h~Ob>.UzoC_BhhZЩ~o/ZZb_@vU.~z /brUa:az*AhZvߩvCb.zBuh>*b~auUC...vzbrO,_rbo,,:U+h: Ov~/*rCUv@C_|. _AA b,rv++.zaoC> b/U+**uvOoC>U.uZO/bb zZ.< .zCb*zu++bOaUO._@o. _v*A>@|zģ~UbhZ/ o>A:*zb ZuO:o~,v_Cb>r.O/rhrߩbvCr*aBBuo Ar.>.U>ZB,,a@>a+,ܪ|_~z :bo bh OO.h/@BC>u,>u,h_ |b*Zr|b||:+O~:uZ~|@zC:arbUhbvaZUBbģO_.C_vuh/é:<,:~v_h~h>,.,>vbzUz_|BC/C*< hb>uOOhZ@hOzb@zv>~@Au< +_:vU>/Z,OU<>u.bbb,A/+**hzvU||UC/B.a,rOC**v U~oB*,o>bvh>aC oO rZzCz@C<_*:.o:Z>/h>AO,,ĪU/ߪ+OAbh/+C,|+hB>@.:br.A|Zvaoo@Zu/_|@b/a~,/>u+:Ch @Ob>hUa*a*~,bUAo.AO.@o,ob>vA ZZ.~bOAr@BrvU:hb_~v~h| C*||zr,/C|BhZbz+/Za>>@+,v~A>uOBУ..ZB|h uv<.bo>,b.Aov_Z~bu.AUCbA~/A|A_* a.br:O_bO@Ahab|_:C:~h*_b:_Ao/<_A,vvC*Ua~C.C_obrB:z.УZa~BC /_~.bBC@Z*|u**,rBU@C|a_B::/oaobrO:rC@u hb+zO@UCU:ha_*r b//v~C<+~:+B,| @:ܪZBvOv+<,v/~Zb.CAO_~vĪv.+.>/.CAbhBOr@B_>Ou@ߪOUZA+o>uvb+ Bva:r.bUUubZ>aoa||B/a|U|vrO.>bCĩCBh@oA>r<<*B_,Oo/+Zba<+ ,: .rZ+ܩZ+b| aU/>UoCbb@ObUU.+@ZOz uu_ЩZ|h*uoO*.zB@|媢U,/hzb,+/ OU:@r+>ArzC>av**:|U~bU+o ,rz/rurZCBv~OB|>C|,b/Т.A*C_~*~r/zz:,/uO /~Bub+:Ah<<_/zzCZ+vߢbuO u<~zhhB@ĩ.>|vzUܪ@o.:UO>|++ <.@b/r@@ <|z,~*Z/b:<@aBbO*~oozOb>ܪraB*@zv*b~r.Ovuv_|CUCUzU|*+OAUZv,+:O@@B~vbz*>Z@b +O,o bA>CoCOB/ubhO~ur_@h <+@ZCv o*,*o_z_ ,z*@ vC*oOU/uoܣO/~+/.>_:bOooh_h*r<*z_ |aC~abZ/,_:_vA~Bz v A>b/*bCC:OCb |hߪUv*.hr@Z@A+oo>/*AĢ,+_Ou:oB.hC~ACAo.+B*b|hb~v UabB|rZA+U_hC/:BBzA>+|<<, CCb/Za/.AC@:azr>rUh:Bߣ B*B~@*@uAz/B~o>Or~..O|.AUC:_.O~ovb>+~~,O_a*O>bv A>*o/o.CZOZabO@.u/v~b>//voo,< +z~bbzh_rv>oТ+bZOzb~oubaܣ|u o raA>bz|U>B>|*b/@_+<.obo~v@U@ub>~au*:v|v><.bЪ~ uUZBo,|UbZO.|.AO+h@rrO*@~__rAbzC@Ob ohߣ++hUChĢraB<ߣ*>~Z~/,|COЪb*u, zAv_@@AvU*,*+o>hobu>A|uC_>/uCCv*.+/oAb./u<~azzĢ/ahh/a/UUv COb/r+U: _:u|:~ <<<*C+ao*>b@.v_o/r@*>UoZrb|U.B*ߪĪv.h@/vh~ob||*z_uAUZU/>:|/*_+/v:*<<~|~+.ZBu<|ro,'), (N'abzUUBoAo_/:Aba+/|ab*/uZ+@.,_O+Azha>/|<@o.@u>@/UrbbAr>.*+héo|<>haUzb~_BA_/a_oh|~*:a +.aB|Z_:_B_.a @u~hb*Aa/b oU<>*o>aabr.._,:Au_/ +BaU,uBb>~av z@v:+@b|/ r/@U,u/ hhzz@z.UO~_CC.~|a__<|z|,r+z:U@Aab/.+bBZ|*_/@/Z.â'), (N'<:b>/:C+~uBzv>:aB <>|Oߣ<.BUu/uv|ouaOazr>/>***:z|>~|>UCa.BobU:*:>UbvbZC:r+, a><*bO Bhv|Z r*: |>*bBu>@Av_|bߣhOCCvOrAA,C_~zz,~_o~U|h,ro>*h+au*|@:<~ aAarar,Bb:Au+zO|*Z*oĪhOaUa//|a+u+| Cbzr >vCoOU@boh@brb>o*++<>|.b*@uh.r㩣BZA*vA*uvZvb O_Car.:Uvbܢ,ZorCva>>__Uuv_@|>:ZzUܢrbh>BU<,or h/OAZܢA<<<,>vuAߢbC<,: o_@|oABߣr+BBBOC,oAaAoUzB/@zCov+u:*u+U<>U.:uCA|: ,+U_/~Braura>a~BB *.z>@bu~oUܩu.B/rC>/>, |uAvBbzbv~b/__:C.:B~.|,|*~ooUOa/:*@./hAz+~u@a@b+:>Z*ahobZvBrA**,o>b/Co@|b/O+O<~>C>or uUb,CU|>~hor./~Bz@ar**bo,:*.:Br@b>,v*o:|>ur>bb* /<.@_hUUz:>/+CABv ,Aé~zAa,:O.,,h._b@+v,bbrBu:ߩCC֣o*rabb>rub~| O.h*:*>_>z֣a,.avhCЪ+or/~.brU+h>Zb+z/bZorr |rC+r< bU+rB_hOoz+Ub,bU+|zU+,//:b,CBz|oz֪O@|+b Z~C@Z:b:<|hr+b,r/ h/>o o:@CUbB:oa| ~/*C@_CAУ/bbo@/Ohb>,r*/,ruz: <@O>uZ|oU~/~|UC<.aZ.v@A,>Ī>@*O.+O<+,~bzo v/u/hU/Aab*bbb>*B.uu:~|B+.zAbЩ@_u.Z++*b/ .|+|bC/B>/bOCzr|ĪZu>hU*::@./ +~+~Bo|/B,+r~avr|z>z@CCZBru,U>bB~Z/|uhUbCbC:h~b+huaZ>u|.u|uUB@|>hO+ub_ u_//uAC,C.h>*ģZ:v +h+hZrbZzBCob@|a+|u+vzhzr. O|,>v:CUuzhO<:*b@|Ur~|a>hbo~>.CCAߪ~|+@O_,ChBb|<,UBb.bC+z__>*oUr:/.u@/ozh@Bz|o~uUv.@Bur>U aubObB@abvvro<.a |OZ<,U~@A|,Or*h.uAC<@a.U@h/u,v~*~:/,AC:,u +A,u@uC,*+v*/Cbao~aA U/AO:h+B,/*B_r_z_,,/Uu_|@Cbaz~>:bhu,,~vv|B@u~~.oz._bb >vr,zz__.vba_C, +Cv,Cu.>vovZ/OaABz>C/_>br_Za+>.֪rbr/*h/~_ A><~,.o*bAZuv/ohbZ.>vzru>Ah.B/.ߩbZ*ACb* ֩CB /buuuO:b+.<:,Z/,Brbb>ã.OaC/UZB@_:+~z@bzb+brbb|uv:u//a< ,obrhr|AZCBZ~ uBu,<@+ZA*o+<>b/UrOvh>h~Avob+ܪ@:.r~_+>zoBvz:/ oabOC:rC:>r bou._z>Īߩrz_:U>bb_ @v.O.AA/rߣZU>'), (''), (N' br,@ /ab_O+v:_UbzuO@aA~ܪoou.bz@B~: AA/.Uu>< A_ArubbO_ A*Oz.B:Zv |v@z< bo:_h,,oB*Uvb,rZbAv_Cvh>ߢ֢>b|b,,_ohr|:ZZ>@B@o+~O:|,.h~ߣ*O/br.bB+./ /z>ub>r/,Uv,b*O_,Urh:v~Щ:@> *b:h>+,z:ar>_U|aAr+|bACUCA+Z@@z.C.Zz|C v Bor+br>A*:O,rB.BCvhb,ob zz:Brbvh/r+A_BUavOuOu >|rO,v<+<_:r|~bB~,hAb/b.hZbUbBUvU Cz,+|@ _:>r.ha B@+u~|bO@Ab Z|.vAU.v.@B>:CU~::ABaB/_ rZor*zO AZb<@,oC@@_,|hhzvZvbvO|v|zv>bCUB ,+>U_+v h|v~|r+o:_: >v~ rz>u@ub~*BC@z+_>bߣ|ub@>v*u~<>bob//.azbv|z_h,AC,B.|vvb+@*<.Ov/A @bv~/v.u_.bܪ>br,.~*aB|CobBAbb:UACrubBhb.@b.<@ܩo>>УO * o:OvB:~b_~o Zvorâ_vUao*A:zuBA+B~ |Bo>CZ>*/|Zuh~_vO _zhu_>:ߩUb~_Cob~h.zo|b|*|êUhu.,AUbbabOC@ZBhU r.bAau<<,aurv@>:b_/.Bo__/Ī>Cr,~<>z.h>|vZuC11/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/0111/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/00'))";
+ break;
+
+ case 3:
+ $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((-1761264475), (255), (20544), (1826608718), (0), (null), (0), (0.7414), (0.5117), (0.3842), (null), ('~/.Z///bOrb*Avh*b:/OAaߩBbu.|z*: :rzâBvZ_|CbrvzBz+Uhbr.rZCv.C z/,b/B,o|>hbr+rzbO*azaBУuܢ,C_+Ou:u*o*/+v '), (null), ('*~. ~uoarbbu@z|.:__/~/ bb/O v vOvOuCr/o~_h+@OohOBa~CorvrC.b@>u@~ v<:+.@@>ho,*>ZCaZz*z+zUb,:>@:z|u+@*b|brZ:h:AvC,,CbO~.A+A|+C/zazo/||.|ua_o :Bߢ.* '), (N'*/z_B~|A@@uC+OoZ>uߪA<>uu*b*_U*Z@A~A+hr>ub *@֣a_b+v@ߪЩ>o/._,bb@bB*>:Z.zbB|,O/ZOOCra+â* Oz+ZaB>_bU _b +|֩Z>vC@A~+Zh,v,BOz|+|ZhAu B,./Ca@ߣ/ob|*_..+baorhozvao|_/C*_or/<<,Z@rbbbA_ **.~OUb_BAv_ro/ va~|_,vrCa+AB:/o+,.vz<:.hob/:Aܣ bo. hOba/Уau+,O<>C_:*Oa_v+_r*|<<~Z~C,:CUu.h~@*Cb,Ah bU.Zv|@o+BbhC*âbUAA~_.@C.b>oU.v |>r*hߣz|v.Bzh,v|Zb*OavAU:b<,uA|CbUbA:,ruuz//~z~z,, hZ,h@_COZvCb~A_êBUr,OvCB|Zo |UZbr_>:oa<*UUZh,:.< Zbr/uuo|+uZ/O_*v~bBo +|v+BBCa:.bhu@v_|buoov*>bboOUAA:_zzb_Aab/h~ar+:*z+CЩ:bZ+b .AvoZbr,:oo~>~AOb:b@zuB b_@,,*C|bBA,/B**,aa/|<*Z.zzBb O:_< >|@*./vZhoZ|B@~b.~zb_/U*@,:b,*:AAAOU,oo:h@ZuZO:o O>>CACu~~_Z:+ C:+@:OabZ~Zhuvv|.u~><ܩAoUOz,oĩ_OBĩbA~>|/C~BuBz,_|~C_<|B~Oo~U_b+A~|vzZuO|, CbB>C.vzOBbovZoB.orva>Arh+,o:_,Ahz.r.buB>,>b|CbC o@>_B>zu_Bvob|*a@bz_ab<@h:AB_:A+>C>BurOr|b|Cb<@+U.bb/AO_ *+,: au/~+*hvrzC,_u|,~/AZ,~AzU/rOz,>ozUC.ZAz*| bé:a,hBAĢB< OA+<:v..:r _Zabģb A+zBrbģ+, ZaA*O_.Ob.@|_hoBu a/ABAhh/hO|au ,_֩bB<Coahvo_B_+bb:/:ߢz>@:+v,>:..uuUhC+BB:<_z+arZ@*|AU+OAA,b<|._*Zovbo~>b,u*~Zbh:>:UZ~BU_Z~|éoZ*.+b֢zu~|<*ZroAb *+|o@ :~UCh :+C.uCz.B:~~@|*~@@ABCh*+ZAA@UZ/,B|rb,|_r>~U*>bb_baU*. U@C*/rbUz|Zb+o//_B@ZzB.b_vC:ߩu|vrr|UA,B+>A>zau_aUZC|o:u:>>aaav.bvU|O|O//,h>:~Z~azzOrOuA*b@+rA~b u|@@@<>rvU*Ba.bܩu~bb+U.vC<@,| |vaCa+::bh/z+zh:*vaAuaaah+b@<_Zr|+O|C+a_@/bbhz C bbCz/Ubrv*>aabhr@zu.~/Co vhuz_ZAu+_+ߣ+,oAߢ/|zvZ*ZrUburuz>/_O>:*.:uZ@+Z_ouAZܩ Bu Ubhz+r h:uvh<*aba,|u /r/+::v,h :_<+oZ:a+bAb*>:|U'), ('b@.Uv_+h/U,~A@,u*_Bo+_+B/uAh|*aAaU/v/ o+Bzoârbz_.A<:>*Bb<><>:*+v:|bb/h+OvU.,_ vza:b:br@.bBo|ߪO+B||r@Z|Zzu*u|Cb@aCr<, oa.abAbߢ~rrZ<*/*ģ<>oC>OoB>baU@O@|vh+Oo+B|Uߩ>vUAzA:h::_,<_z*v,ozzAB+bO.A,ZAZ,< b~+:_a~U|_ .|+vahArubO|AAo,@'), (N'/+@|B ArC>hC. >ТC_+rߪߢbvBCr__|C.媩U,brZObou,_|AAb.*,a+<:|h+ _B_ zU+/Zb:+*z v>/zvv>,o~v.+ v*Azz :Z_b~>bz,:Cv+>Crb,:bo:>UAB.z,vUvoo_:h@/_h//o~> uZ_bBA.z|z~O|zz_+<,:|~ @U.:|.bCoC.>_ߣO.Cb@|_/Ab|OC֢|>vB oBA>b,+AC>vhCB_U,OBC::v+*,h@aU .@b*_hhĪB**,:<:~o.|.u+r<~>~AzOAo,Zh+~rbU|>@*ror*oz>.>a@b|z/b*aB,|:Bu:/AЪ|zCbaUoC>/v@r@zUCbvh~o~U::@OC>u< b_zvO+*BvabuZbC*>CĢUO_*|~У |b*CAv_r@Cb_rB:bv~>ar:Oab~aO.U_CZ_U:ߢ.oaģO*b/: ~oz>@b >|~ba Ba:bOb>uߣbZCA>rCzo.z@>z_U_/br<@_v+hahaah:B_hv|UUBBb,CBAC@uBZ.vv.:hO.urb*Oo|COAOzo_.U,*a_OUu~aZhU+A_z*Zu/>/ba_r,b~@b@B:z/v~O/bhav<~o :O>UߣA>~zu< */v,ahCu.r*A.ģ//C@B,>zC|AAo@ Z*_uC@rZ.oZr+/rbo~bACC++@ZAA/h*CoC__OBavO@|~AA:u~uBb@zrZ*B+bb֩b+hbvCb>,|ouA/|@ bbv+ub.:@uoz:~ A+.ouz_UB vbC+<~hbC~BOUaB~z/v|êvb_U@r:vO+ */.vBC/v+r,hC*v*|+h~rCOv.BzoA<~,z.o:hhzu :AA_h@A+C/bzC_>AC:~~bh*/vܪa+aBraCAbB>uߩavA+<|/a,Cb.Z,/ChOУ|://,vOu|@|Ob|bâaaO/+u|:UA_@ ..bOvBBCO䪩C.,ba|>@hvêO,*r_+,.u~Aa*r@,Bz.:oa>|֢~z+>@+<@B+Abb,+A|ChobhvhhuUBr+zrbbA+aAĢ>b>.zAhhB|hZ >oAz>hhao@,|b~.hrAA@@_h@b@>/OhAr~COzhb,Z, ~+Aa*A|:bb+aé:,~BZ<*|.A_+>b_zA_aO+:@.uh*< +@*A.>r.hu.UU+uUBA:O|>+_ > vZ@+,:hBAAoC|aߢ >Z֪~obߢ+huC_. _o_v,ar<@::BZ~/h~obb.ܩZ~B/|U z ~A>..A:@AZ>AbOz*@Z aB~|A@bĪA.U:*/Z./_UZ_U:z/h>*Ab.UZvo.Uv:OCUOh|*+vA |.h+O*vU@ h /< .:v,_zZou>B~z++AAU_@C.a*Ub|C*~C+_ooz/z@,rb:barA/u.uo_zO,:vr,*|h@+./u b*@@+v:r.z~A@ur,~vo*Uh_/*,:ObhU.orrZaBv >é+*O,@*BvoBr/ЪAhaabo//oߩAb*ZBCb.BOa~o+OboCBCu._aour'), (0xFBB2B8D1429F4CF743301F5AEC311F7C7F1F62D59F958AF667506C36D2FDC59F34F4973B8E17045382F4769C1ED8B2126F4FF2A8F564B86528C26AF2321625466A7F25F89AE4EE681B0E52AA1FEDD88F9E59C7830A1DA9CF3B3112CBAC12216BCF30319EB2BA778A608A8CE7110E453AEADB53D94FA23B4DD556BC69D122BB09EDE6DAEFBC39DCE4E13C228090C2BD2CECD7E1D1BE471C2CF4E4C85BFD0EB83ECF83F92A33567EB0FE6FF71280BABC1398907CF941E94AA5CAADFAD77180E6D283E3B10CC992F8955930D34E5009AC3A28B5C36D91BEFDE5395360855BA73F7D89248E9C09AF490597E7A01016FC55C101C0AFBBBD7941C5E6CBD37532733AB1F155C52B7A1030786BBDD5AA1EECCF3DFD9E849BF884C00FE3C9B53DDBD3D323ACEE1FC1362A47F18F364FFFA396A6F9FC967894EE9FB96D94B647B05AF29C97EAB1FE2FCD0E06D257930BC134C06B4D22BC41455B3E350D35B12C80E297979D99B715F198772CEE90A53D5B93F738D34AFA8D9EB1573CAB7CF0FA1BE186F0C0FB6E287CAA79B5AB8F53B5B601D9793D795835E809F9EB427B6A74A77C100C09B57D6025CFBC29D145E10E5DA285A9A376BDA2885007B60282E50040040D2E7F46AB008479546DBC2F64A327EA8E9FF5C1D131BF6D84B9ADC65DA3E9BBE9CC37B38E16F684242A2250E559EC648E18F3450A7E33DC6F11C2F252BE1BB1830146), (0x745B77A9709CA60E6F872ACC493745AFA4B06A995B437D530432660E71CCE41255F81ABC7C9C9AE28CCD008997250986D601DF50DCFE1030DE23A43E35979DA2A31877511C88320716870C8E43F3BBDE28E0386FED933656E8EADD58F75BACF42F5DE67FAEB7694DCFD73A54F182ECEA67C615555F2EB410E2206932ABDA0FBBDB175EE50D3C307176EAA01558E16566FDF2F03145569401A9D69D8D4E36A2F4C87F79D92306DD2B96A4DF758E9FB700BA0335B8E9DE7684825D3C379EA2233F47AB4DD9688C42F615C59AA0771F72091E9CD24B01EA0BEA09F456C5C9A68CF4819F2DE251DD982EC03EA32343D50D63EA321802CFD73E5DA063D073357C2C6F38A61ED8F28FB84104A48AC246E7A633E7F3DB968D8A24A960CF42EE0C25F8431134EA9CB634715A7AD7FD2B4C7B17B8BC9D8B42A196E1AE827577224DCA34DFAB47B012FC0A7CB282801CB68CF95DE4B88A316F99B6A17B523C1A41BD4E0DB0A21E8005CB04BCB220D9C0217A2A228918926AC398C545F5A535C0C0EF3AF533736B146D795719B3CD7F4EBFF58001271A91292AE34A18DCD98B5F9544FCC2E5E48CAE0E16B40FC079B6F5197785FF253398A65E11CA5028533794EEF8836FD1BC68DB68D2F311658169B02D55FE65538B3A62AC5563D4193C85BADF2021C8F646235C0EAA9652408640DDA81922D354D14162BE21C37B5893C22C4D3832455F), (0xE632A257A9F4E7222515862CFF19B2660DDFBF09D583A7037AE76A050854FB7D065F3CA1B27A976DD6FE9D66D267C2129AD12566A097E5628A9EDCC18AE11AD11A0825A0DD10B492475133D6E540311324586A362F95DD6F79D916139ED5E3F4E4CC4CC9412234891D921E4E630F7D496DC89C3177E3A2852BB62603FAA0F4716E3FF119F467D20223E0189C768E0B695CCCA6D538B17D0029C79D8AFB308F7D9DACE0241E635505F69A0D96CB050E9DAABCA72DFA1F38BCC1F0EF2DCA4706F3519BFFC9ADE64BF977A0DF9EA3E63524B800DF3F8961827E7424622E73273BAE941A45300544EFC371AEB6593F9A18DABACB74C967C669EF18815589831D854F65300989A1041E73101BCDDBAB293ED90B8773A7B27146CDB1551884EF6640542866F40E918F39B6AD00B84BF98E43EF427C7EFBA9DD9CF3EA3BD74CEC9984AADB79B245342F487B4EBDFAB1B9FBD42212284172E844AA4BC9012455B8EDC9137C0E6F7FDBFEBA133402ADECE2EB3AEE66B439C35711C297CF677B330AF2C361F3E635AA8B5447136E2E3EE597BD68DEC635EE03B305BB6A4BD8B074828708413F4BF8FBB58F63126D265529D2DD0011FF9D6CD403C0AEEE2BCB5FB3A4D391E625FCA64BC46C2937D2DC958CAF92976ED79E74E51A343E7E9C0AD0EA30B06D99946F04D636B44C92743502262A213E9833F0DB055EACCBF1BE27AFBA9B3E06216FFBF8408EC1372251E270E53118547ACC37B63FD5673BE8A312180F0592F7352EE1B72E29FD0A72B9B8B47C3BE6BFA5D334EE6388C74C07C00F9D7BA9271DBFEA3BB750612551CE2D43861CB3BEACBC53723CD0A493AC6795AF6D195F8FC9919BF591002F6F44ADE31F3645412F530162E02736EB4C1A578E50BBB1B8376E9D7AF481BE2DAC8DE32E8FED845C6725655B6CB67F6792A64EDA3971DFB492F4ACB199CA4CAE95D4B65343085B5F96FA272A55564C80EF35E74E33E4F33BAE2F9C9A40D3C39CD9B7C697002B248A4AEE443F4AB55E3CA82BC264E3FD7AB0E07BA5146CC11EC3378A509E8FB480C3115D0445A0B4F1F9D160F115115FB9DC3C16B685860F1D88CF8007BF64BFACF4ABFE5285F835102C89AB430CCF09B2D8D0736279FDFA3C013F7B751FAC319411B3FD6A120C34E306058AFBDACC11B9C5CE2FEFF15D33F6B0C151457CC0F07F58173158D29E9FCB9C8F5B7373FF61352EC2AF507D41A3B38007BA50BBEE6746140BA2C39AB8E7272F63536101BF82B05F1C17B910A00117747DD8CBE44E0FAD28155F685D9E9A75DB882119EE42B2C1840AF19FD6AD3574098B4E1CE01C42E054A538EB601A53C181A2DE877FE82932CB1746DA5D70D77BDFEA5FD14F7D94BF4540C54809C66069B62F1D34CFAEF521621C51C9D56882E3CEBC0C75BB8171040D1E413E22E02805B6DD232D52A2AC31F53E6F332CCBEADCBEE17A4CBAEBAE34BE1926B06CB7FE81F34B12F74554902B10DA807D113DD84133657F4066DB4ACB2FEE6F397CFBC53E3FEE3FE0B9F29769514E3CDF6B30228040E57D0737BD1B170047C856E557AF1415423D23FEF78840CD16EF179F6A60FECBEEF8967EBE0682D227DF722A4183F99F27CA28F3FE82495D3C3920CD037896E7C98AF75E1896573BBA51D61815158B93F57877A0370BCD6BAF394184E6B4CEAF498B60B78B9B869173ED38ADAC304726AD8DD78B00F5AFBEBD8CAEDF54D254068226CF8AB5D4075AF2E62C49D21FBE7EF21BD658DC43AF53DBA2F9FEECA73CA098322A8561BC71D9857D9819C966EB9DCE2FEC39FCFC293F777BAF12DA086D4BA98BB0A0F4381D35A9FDD25FAA958A75B65C30BCBA03A49C08EB0EE50D5EFE7D0F4D703DB54BA99512B68FFE29C994E2F1395C7ED7B190A6E71397092A37284AFF554F5C254CBF6BB39BAA0374A5733E562BF4D3027FA55EBDC956A1B39F6ADB8E44FFD37A38BDA47AF0CB3B068C3241A058B2FE4355487FB0F09F5BF61EB71330CF752FA6A0C41E6E4F5912B36957309714015AED6C9739FC7F23899861AE5C38B80B3716029BFF94938FF3FB35CB46986EC3E11C5D25C4373C33267C3A860CA0FDD9FB5E1F19957901C659DCA33DC6B3DDF02A9ECD3FDB924700DACF7482590D8353FE5CD0E779542E671B96CBE793FF6C729F495C6ED3BDFE69171F3FC5047E6C4C59503E6AE3F577D56F652444C65F6DDB6202E30FB1147F415D66D0591568629C2A7F8D42C0028EAAD286FF6D99B9A2B7B16363029B5C9A45D0FC0C7C241EBF0602871A47D22A1A6073383D2A1512A8A3C419A7B2056001CDE54871C3F51186B3C7F86A119F5BE48749028E631E6F2FBE5468B80B760D01A2864C618AB9566B61B189621DA797046934206802D19DAE7518B26F8C597B3DBAF6C88A53F95ACDF2972DB1940C1217BD644FD655A4FED1E89DEC7106E7DE08364CA826DF0CB16FD952766BA4EC1968059BB1270AA4E816F8F7A1B50CE9C70AB8257A4864EC37B0B3DFFC022D932CFC84846B6A36B7FD9164922EE86BFC62F08B6CB27F71D003196300742AA7E5E864CAA530887D5CD40127E8E4D2BE4F45B77D0C77C1E0AD8AB38052073542D3EA7EA9C91EC5CBDA732F97B15788EC315A13BABDAD9B6E27831C1A7D072A559EBE53FE6628F5317FEBA29847292F5501C64EF7F37A84264E0F824502AB4DD248DAF9F2048A850965E23AD10A0326FD54C618B6B8326123392DB056A5AF2FD49ED04F6D303C51774145921040B21B4BE985F03B9296191678D5B8D6D92F64B6B366333AB3B8CD1874A17573A050E38612656C20BEF34107B639F55A837B9D11E0DB5DD97FE19730B7D8C7F120A67527F131C474C244F7BF242B8479C37395F9036492C4F2090731CD3C68E62C4FE70FC3CD6851B7284E9CE49EB4535C1D6D4442CEEDBC13B034E72A92A786DB1092D44474B6F50A4341DB15F5E05455B3D4AFCE24A45E622AFB129980272480C8C1D40CE00FE7677839FF8C12A61DD0E09276BEF8B7B66C34721978A35C891C1C5A4C340B4774A4ED4756EBA4D24F83DE42B8EDB06688110B67D86DF56EC41CAFE36FB759E9C4991DD2D0B161CBC76123969A61A39B6BB6D23B28A36F07AF7E82393BC1629729F47D1FD0DE95D6AF40A076495ED363781377B9E51EC021291623522E278F06FF8B6CA6E484CB8D20FB8CE803F9BD50AA1FC12749A9B20B345CF5B9BA42A888B09976BEF22D7FF348EA98E991D71D2F58D3A80E6567BD56D96171888E11D2DD5203376A82FF5D7CA0CDDF5F10C8795C3EC661E79A9A2248DC20E591BBF7643617BB968EA0B3AC58752B6D97885D4610E71549C8B0EB42B8E0EF8D621ACCC0A968A9485531EBBC8B1908716F2C8AC07EDAD4AAA6AD9C852B78DEADB1254A3EA96BC42FDE15F0DEFC59BEAFA77AD38C552E0E8845221AFBCC231CDC533D0B65CFCAC703675BE169E9F5AD4DEFEDDEB0A451578216C1F88750C862BBF8148BBE4E58DFDDB2CF24F94CA59E5074CD0CDF456C3802E5884E0DD140B39EF92670D56AEFFE970D00FED42C5E357122A81283BC83758CDB89D8C50AD20C711C86002635C9E584CE74D1446D63D58753DDEA282D2FE176B0E3F9E116398C3BF48CB7A65D0F3B59C28EB547B1301E78B351722CE7E344ECA48A7551D0046E94E79650E1AB2E2A43A191659F7A9AC480C4812DC5C760541048CB02D299E989BE1F205F1AE03DCC84272E8B557EA4720AC5F58D4ED6A8CD87423F99E02C57A9B708A7805A3AA99F87B4A89E99D4FE92A359F80DA45C3AE77652D8D8A0A3EB58D084D34CD72417CF1C55059A2D0A34B343ADF587344A045BCEBF090762D1FFE4C850CE1401B1BA7F4128F14F56A0B96C1E2494F3AD6423867F787E171B106D4A5621D1DC3C1FB192F276460B59B5042E059CE83D3D0B36642D48958833A36431BAA6F935CFDC2FFE720200371E172CCA7450117E27300D4AEB6CAFF48A295E4F121451B2BCCF5F296DEACA3A0BFF46151BCB14E391E60A8A99AF4A622C3A7449A3B12509C67A0DA4F1E8103D66D23EEB269AD9BF147BBD2C0AC7190D84FCFC3275809759DA3D4EA0BD6FF1A9D5CC23C6705E3B9261B43527F3F8FEFF610020F4ECDEC7E53BE511E94C3902A48914563DA3529D26C069D1C14B6F66E13E4E3FBC4FFDBDF7053D8B8A4D524627B1909DDFA2C05C0E63F933820C059ACC7F2FAAFDFA46558C575F3865C712D86E23A90FBBD1863F7EF2305855CA3BEA00A3BF0B1DA8492D6B3B11884288F6475121C45E62F5DFFAF8F02C0ACAEDFFC21C7437C20806BBC6DA7CA47FBFFEFCF6FCE8073405DC870AC4C4132C7C3E637E3B4F6BCD50343F4B65FE84E6515F3AF9F4350EE1E6CBBC3FED2DFE43F28E4A9B18264470922EA6C7A8BBCE0658A1B8648919384630819770922CE02236FB58D7B4E8CD2B1BCA67C58F46382AFCB5E74B7499BAD856036A968ED3DD664E8391AD62F7526FD38D49BEB273B6EA486C74DC4494AE9C417F81B07E369D47ED00760CB48BC804637778E750FB26E24D7F4E215F0021B9D4F56BE276A2F19CF001D1B2FCAA36BDA46F79CD1CC74C45599E62FEE87BE7ECDEBD37BE20E58EC085DBF64E2974E5A349917CF086549C0DA92589D73FF3B37419E5D33F72779CBFE0B94740D0FD1CE5B8BFB457FFF7658A202A15FA5BB6809228823444A1A630D2F4BD0FCD0D5C3DAB09A41F803E5B75227F491E4861A2632A38B4184DC8D843118EE26342E8987CC4ED6AF0B7960053CC0D12C45788E8705159E4945844EFE231600DF15CF73339E7CC595AF7B1AC9338614B40B613EC89A67212E803032480FD87BF57890FF7D4DAD8DD8B2E8D789FAD515CF7F8AF2C1D74844AEAE54A35E3A7D95D70F2540A28697666DD36605A18F9723BB2A72D874E5AA1E204C40CEF8FA2F9E3553008AC5846338D81484FE7132A32F1720F833C7A510E15517205635C87D63A3C7C05E7F0C6E26B739F05050BB9CFDA921B7C801FBD690322F25BE640D030FA7214AA97244A00AC2C17C8DB4B080A97A32BD0410B561A7F1301C5FD6AFC2BA36E0B93F60F37B5481BD05308F48DB719E8C34315FFEFEF1CFA2B832384024130EC256C3F7513886B7588253A02128A8549AB15A6B815A37F1C76FCE3B492C4188E221BCF2178A4D53BD89F77C9B419E7A0FDD9D8ED9A77D681EC23FE17A4B6E3C30DACDFF6BB64D106406BE0762CB6675C1442B6B9EB2BF3AA454D3454A6BD9621BBB3BC083AF0E59907D1AD2E975F5536BBA10262FF2AD8E1B835B16D2F7D6082D5BEBA78F95F22235C1DB1197EC413E5F8FE9805BA342191DBDA4F043F78698A712A59D8A5DC3C5B7EDF05E278BE63F321CB7431E45AC7A19D299D1F101DE4E4B327A7536B3A401CC13C87DB2E3F191C775BE3730438A51662B83B7C3E1D4B60FB202E50160F88E78B586FA7D3EC725D0F81A7B43A70DF7B8291F0B2FEC3DDA4F126E00E10C80567D3FCE7ACC8FD437646DD6CBD7597258A41B2CD851FD5E8C77ACBB6AC0C644D467B40E03E8833B2854D7A6C2157202E590155CC5DFA7F48FD131F31FD46966AE190254135B6E6010DFF4837A568C670599C5DABB697EF4BFCF7E32A6901B53EB70F8A9132DFF8A31A53BF5DB247A2944DAFD760E9EBB34AA0D9443DD3BC980B4A098095DE353D7AA3BA9162D79199B4554EDDB9295455CC5B40F0589ABBCF5EBBB413A8C70DB617715DBD2F5951720E3F90E885DEDFE1F5B4B4399D45E5DFE8EA32A7237EF1ED4797C647CC9726720ACDE1190AD24A80DBD21DF412D318D28C7DD44427AA4F904EA2A0ED1797155E8D422FD063CCD5159FB2CB5161FCDB747EF4BB4FC2E14B607D51CA67325C6844BDBE66D0A4486EC0A7BEA574DEFE2F51C72C6F23DCC69BACF7CF5212016EE3434A8693A2960ACF3685FAA7033CD6817F21789F05ED4468F722BAD9D5F55BBE39DB6129586A8CBBBC5D389DE11E976F204ED2F189CEDE55061E9C7FDB31FA402A3B6D28DAAC291594BCE3A8B4A786D88A4BB887226A356BFC0C2339CE0DE08B62F873A5B16F947325BD5CCCEB36A15E98C3F49079731EBF06012BCE88EF4787DC5745BC33E1261BB64462650E6980C66AC4A10A185011EFD9B39FAF43C6EA3575D4F093F0E52BB69CD8D93410B8B19C816563C44E3D6E8C4555E2804277D8F0592CEF3979EDD58599EA6D4076DDDE2102022EDD6226E63866644D9B03AA742500E9DBE3C97723938FDE2A64CF2E156876C17D4048FA8D3246B6D3149F3A82EE76473F8C01FA578ADE9B4D84FC8269384EE424412D34DD055CA89D12A40EF3555C3BED87EE88677B69F361ACAC0936C34D9BC6BB1540C1416A3A30595D44E6CFA7F827C094E149C57DA9D839D230585272D9C5094838401B7AAC1DB4580D1E240D9205B4E1762F6B51003D6C67876F39E1DDE7837FDD876FB70C46E8C4956D6F8AB42C402BA471FBAA5AB748FAD4B3F23DE3D37A269BA5300A95FDD53046A6BC92CEE1B35B2E0E3C6CEBD824253F75E35853ABE1C1F349EF0EFC3595A79CCB63B3FAB52CF300960ED4960D3BC2800ACB20197CDC9BC4FA9F85F1A55FF87995D01F74702A8948EF58BC9C0D2BE50D2D8EF169748D1FEFC8EF0016A7025B37155A003D1C4D0FDF42D82A241FFEB7CEB977C3166D8F0508B12FAC812A73A1EDFD8587B22BA7F1DF7E12279C63FACFC937315C2F3E44C98655F88CECA18EB4CF363C27997705A31186E4985B6869A5B660E24AF91672AFB8BB005C321B053EF05D576526D23652318D4BA95AAB6E1EEC52D58CBE43BBB9C38D6EDD76A870F681A5A7FD10037EE32990186BCBC9550D4DE270E045797FACA29EA2996458DB891C5427B404710DE9D3F1622D2B4FEEFA386190943890B10826FB5B7161E57FD1B58E4F76A1A108DBD4860C5316518152B0A76102C747518BA31F8E08159C88EE7290789C0077599758B4BFB1845DF1D47908C1B9847C0A6D3DC3D3811200C638FE1DE185D9E552384ECAAA1288A007452EB98F0CDACE6AF5860B5E3CA3D78458EE86B2667C6BFA94B6886BBAD2F7E59DBC8D525970B95E2FB3EBFFCE8615957646512301EDA0C8C3BFFB565163AF228E25C17F15842BE7352882B2916B2C0DA0F3F57481D4E4AF1CC58F9975620CCC03C970A8C4967FF11B69EDD86BED375792EDB55D6E3BA1BA41126350F59172D21CB6AFC8FB84490A74035917E60B432E8D380788ADAE5EC827B666B1322EFC89F71ABCB53E6F5B0DA3ABE96AE289D336CE34C3BC89EA256D57E6A0441E97D74607CF20CC4F8EF01DDCFAE401C5F3E59EE230E3FE6A3F000DF44F5D57CF17EF0CD3A263136907E64043A6DF8F0523A764010261EDB4D9DBC7CE13D7FF31994EC50AD82E2390D135DB49A2BAC4607107D0A8F856CDB50157FAC69B455530E70EAA581A842DF584D32FCD86A4111E17675C0B0657384280100980335CF48CDFAA62940F6C46EDDADB242426002E5D46DCAF34E8492A8FD567D7097BACC227DFA2EDDB427D0EAA216F302B33131B80E1AB3A57ACBFA49580D2BEA7953C712E18FC458412521BC9CD04137818FF5CC24C5628CF716B7A1FFE585B6FBE6615E4FD021237CD976E8F907189A8AC2B7C8176FC5B3E13A2BCAD812685BAF7AB0A67EE2E7B16ED25F4B4E8993F00E1D272D2DBDAF9C10AD7D15B4564B5A711B398E46621B97DB066945008A7567A62BCCBAFB3B3DF1DB1495C175D1FD0886F4CA235005A99BF18F5227545A8B9638156F8899806F35ED47A321DC5A21F90950BE1BB05207907230B96BE9069D7098FF996072747EF6959436086287BFA76D591DF39C7FD5D60DCF0658C6F35CD6AA3298DCB0C18694D1B7862C1C0F3DFA71120E9FF899D41929B352A36E163F92475F5E2FEED2E6ABC27921D4F9A9CA0E811BE7B4F4CCEE005E7FB2FD6EE336CB87F3E4BCA11E0B9E2B62CD7F77FF2F7FF95412422E7A9D8A715DC17F2FE93CEF42565CF5C51D5D7300498981FF6E986F4033040AC0E49D0D566A3B534C9C6E3225EE3D21A229BADC06AF41E4F10B8B12B5622EFCD5322E5DC94FAF5AD20A2673EB576C112176CD1678380421A2B81C4ADF289DEA6D715CF3CFEF68528A5009FC78CDF999AF79E14EA50874AD3E0CAB0133648BB96C4C1679FA7851421E6A9C283E07A8E4BE729B65374F4554FCAFC5C334572F15D450802CB78FAF3728AF303A6C5C7F2653C642B0C916721D06B17D4AB29E0DB74B8643DD777C2D3ED3644C981F0AF8A0309F6F6E046E5CBDDE6325F61254849A9178FEE60891AED79913ED54D9DA0DFBC8DD1A132EAFB2DD29960F0456371C7EEFB206960C02A79EE097C4E080F7E404652A3D453A616BE1C621BC72929A8162076E7527D367EFB6258B2296DAC25C31A20AAF2BF9D7347E4614DFEA4624FC461652E91272BC210D3A771FBF4ED516F3C58AC097FB5578203A06E1CE87F570008EDC7077E939BEE5D9A1E172C7853F610DEC14CB64545AB0EAC8E87BDA527545071F2062549F0A9BDBDACE4963F558A4C770C0ABD0A49C3A81CF9D2051331B773CAC7BB854DD0C7ED188EF8996014CF56033A45991C9645272F5D094F1EA4A98CF471CC779A05FFA7451CA57C51294707297B01D8EB1E5634819355EFC677CE74E56BA5EF4858BBFE3A9E5400F0C9D606160226A2A2D0A0D51B97F606AF10E0CE4D3197E58458BFD1BF039E4DCA5643B7BD4FD8C4502CD114CBCFD4B061B54E2ABD85B2BF32F081BE4355E29F32530BC4533E485F371C7D215F821AB4840E6F0AB4739044A48484CDCE1A81FB4932E177C40F5C236CEFF2A0089060AFD6CD3934E6D8EABFC3C620CFB97B911D9B82D82CA1A2F075B24C9DC581EF3C1324D5F600E04C15704822B4FDEE8C69F05DD40485B7330E33DCC4829A3A243DD38A0CABE484903C4F6D67E37FEEF38625E2AD68ACEAB75CF0C6C3241BCA7B3624E4E072E1E1856CCC98B5174F4F8E44E93E5CB78DBC90E9D3B0BB1DC16C2084F231BF9A0E80A4445D409B14349F0CA0387E3ADD6DC3A96754F69F312567AA607731251E8FF3366899185A4C217CB433A31BE5423143172F88584617E0731EF5963A9C037AEE104548D14355695C46D7426C8D0A82682E3419F69537AC1E8826F964B6E6DFB0B9B50AA0FA5FFFC1C52B116ED574E514732E0C68E98358D8982A491D5C05A660F891B2D7FFE26ECF34583069253D491440E4F088DA76C7355D3207D016E165C085B17643C10E1491C03D339153EEB35AE035DD77141E8581CA7C7ACDDA9EB852F26FE473C7055232CF5FC89D4335E26E7FADEFE004EEAC672CF479459347B62184E09FE30A3F92DBE2AAA7B556E83E949A0C4E2DAED84E03C37D47D38B0D9E88A8A6196296FE633F1A13FD5947F61043B6E4AA86F98973AC929B208DF7BF4FD50C1E0DB0CFDBFE9CA80E129BDAF4BCCC6C031DA662178E1E326DD0FADDD6485BC3284D28E96074DAE60EDEEB76D7D19EDF5420F3A2A972F490EE7D610A04BED1C5B7D7B2A693E20B8F42C05439A3A75A9B321B89B654B91AB55998FBE312CFE24F0C25BF001FF74B7114645FE81EBAED4622C6D8E8351B70FEBCFC4CFBE7287C72DE042C7DE85A7B3AD017A1F05931969FABB5C14CF7F91AF1B4C14322AB508AECE8EC0A198D6F5DC74A9D181D7A80A48B66AD503167307BE4EA3BC82716588F808DB4076C277C113B57F90159E1FD76341CB8BCFD005885B770252F51A736B0F10E9890C5783863E99B14DA6D2E2203ECC5940B5E9C9180342F4FFB024CC09320480F4A486DB0BBE455D362EB7E17894E21438C132B52557C185B96283C619CDB80B9251FD8BA7F14D92709C92F94B617C6ADE0093380F5F5BACD30111A92A7F336876AC4F26A7667C3773904498C4D83A57E628E8092A7FFC32F640A896DFA477F1592A82AF1255C377946BB47F1AC2D80AD6C9B301972A4DF6A01C2056CDD557DF28533FAA559B3590556074CEBB8D2823789DC015E1765A2EDC8BFF06257CB9BF03E546C7833DA53B8422AC26B58F3B22E3FCDE200531FDB1F910CDC9AC3F6AD8B6C5BAD63660A03AE89481BECA23795D50DC12289E99A9D1E794CE727FEB9F54C7C37FEFC464EC835CA33770B03EE7C5976078D01D323A1D1BE8EEA1922DCB0D053CF6F6B38998EBEF9EDBFB523921B8AD08DB0F62CF37958952D3EB763AE12ED82A7B7347F1021DD78CE08E564ECAD2C736049952CBAA35F5516D60A5AD75B4ADAD2337CDAE60BBF6CD37D5DEB93F4A980124403657DC1C80358DE683A1682A173BD0B91B831518D548A28583C4673C2212C8A479357E45C116A788207A2845650DCEA2E8763F04EC0B6AEDB55688CBDE41C460E8B3B0E1BD8AE804EB8CF85B105D108605B453ABE3C3B87DCA80907A9DEBB9DEB5B76CB15CDCE55D9E2A296F131FDD6835F2C619FE188D14FB43272CFA6D66FFC3299558F06F3928CEF61DB9AA596AAAB328449B25AFD0AD3A47B619B5B85320B3299BE97A7467C6C99D4B080AC37A91E87C79C228DBDA2358F82EA8B92F630692ECF670BD71204EC08DD18864D8A276DD1431494E8107E75F78908255BF1DAA3A34651DCCF9E4674C2B01AB0A41BE7055A7DB94EE29C811D51F2134E0ADF90170274E207384B9D33FC9FD138F6CED0DBA103CADE378BC107C4348BDD8AF86AE32003AD2F39E0CD0FE0865243CA4927832138AC0714B2DF77B3DB4203BFBFA90434EE18F220A1A2C135BBFEB1397E3C7B0C08BC524C63CE6E23357C5E9EC94F20DC4D0EDC3134628095EBD159B32E3E359EC6F7B70357B8D01FA9CFEA2444226C6BDDD4EB6F5F4AD7A53BBC609275BAF5F746BFD8D1971C85953EBD8765775B51C864EED65953C53E7B2011C79B573EAAEFD9F3DD854A9AD3C04F5531A2C3712EE06A982D87E39CA481805CB18554EA3EFF13978C837DCC7EC91A1509FD939CB7AEE3E730BF10220C3D4F5C05EDE94D6B6517318F2CE5AA629E19636CCE92A6EDE3A503A26DBA7EEFF08A4F3420C790E0CCA9A4E5620C8BC8388491A5ACB63EAAA86E2148E6ABFEAB98429FA1967641D78983A024EDC08BD61A3A6AE828D9423A4CA48CB2A548FA21ABF94D206DE932C242BA1C291519BDE7E34A2EAB401582BFFF6555F2EA8F3140887F79F3736B683008A8A56EBC182432E6A4CE5B194EE095778D2008943FD7B288DBA196A0CA7378E1FDA398701403E640220B45C1D626399EE37CE64A609CC8D0F2E6E0778D911C3056791CAB4725628A3AC8723392F1B1B567F8BD4D8D2D8160DBC87D2E226EB290EF156B5D0A8E56BE195C10982A943E01342B1095D4CEA328F8BBCF7FA83467CB15E1447C8653AA), (0xFE34311DE936468A7BF9F65E1DBB207243654EBED716E4F44482484FC17BE08037F4D69A710A0F8589F42C3B706DF826240A42EE5C19CAE8503DD966EDF7C90018762629E586003856C935E2E9A883D78A222AB638F2241E29ED493431A897922B2B23FA46CF409E0A099892E3E7FEA7B901DBCBCC12C7265108FFF73CCB07AD32A3B6BD858891BBE18CAB2E59923A42EFA27B2FCDCCC51864FDA83ECF49623E02EA5F40304022307020E9406699CCBFCEBD089A50D7E066DD9E5988E053EB98296D2C6E32FA11AE7F4ABFADE285B1CA30E8701240C8EE2A0AF96292E699501D345116F96C5D8DD3AC5A1A0617338457EC8F57F7E3D858617E026438977EC7E6FAA278916FB85DD35B9C66E5ADE812D7750AA65741583A5BF8B47B6AF9543C2D92340B75BAF2E83431849B467172B496EF8CC38DD770A4A1681C98BB3CF3D90660385379DC9D1C82227226BDBDF3E98600E47B6C90AE5622906A0C9E5A2CF73EAA94E6391F3AB9526F416B654AE6E4753212BB58786D76B1E230E971907E27F57BE812280CB066C52B28FD4F43F1D8A986976B48719FC53D1E3556EE5048C1F01976E961D3BC6881ABF52C4F6F266EF15840EBF913DE83DC22D509D75A7774E2670C35CD0776D5CA2EE99D7C7276CDF8C66496105CC7DD3AF20D3FFEB2912733804AE863F1A0EAE16A20CB29410669AB071010F5E164869F2FFADAF936D6179DC269FC288E6A07267AB4A53CFCB3F9ECA393F7A18031521BC34833F6C6F0AB94082D67D80A411D9C09EA7B2CBE49A27C01EE56A2DE751C9117E0644537115F8A091033CE4B20E162765B9896B6265C79A6B7F4D89A08B59311D6C029DDD865F88AF022AD16D330E00CF42C83DD86DBF083EA9E7F1C87F0015AA0BD7560B8849EF59F0BC504AE63D28713CBA6DB32B58AFBCFA6F239E5DC020020537616BA80546F8E8D3D7A15ECD487CBF808BC4A2528EA327A901292640FC308C4E35BECBCCC9377364DA57710E5E3D16B6DEDD346B6FA2A8BE340F042DD297D7A725109789A0F2B754413D883732294AC4026F722F0C20EE83161D98CA235592427FD9D94DA58D15EC15D01A322A718C0AB4301B6325B8AAF43204738359FD30FB9B35B758400D2E855986092C06AC5894818E05E33A3F1CC73EE50B9119828228AF2E96E4BA23CAA70196199FBF7EFD85ABDF01DBE74DC16C28F0296B019D7BC703D08CE81563DA6DC36ED1A4257D17BFE785E53A80B641615D3ACBC9FA5FA5742A429BDEF2157037F49408886C1D36ABE879837BA831464D9F2B8ADAA8106373B96D89D2E138CDC205BD35ECBDB8F54FF41FE180CC29DBE8FC5E3FD69AA59FE42094CF0E9363CAAFABB175FB0B599FD6263AD6883EE2A79F9190D68308F727601D41CC28F9F6AC905541D50AB3D0DDA2BE59A05FCF07B54DED3F6CF28D3796B49A05DDB99), ('90487073-abdb-475d-b891-7e3a184665d6'), ('9999-12-31 23:59:59.997'), ('2079-06-06 23:59:00'), ('11/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/0111/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/00'))";
+ break;
+
+ case 4:
+ $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((0), (238), (-1), (null), (0), (0), (1), (-100000000000000000000000), (100000000000000000000000), (0.6392), (0.3463), (null), ('Brbv C@**ZA>oC~*v:|~~bzhuah u,:_r@OZ>,@>u@OC/aAbCb_bC/o>.@rZ*>ZbAaA,~v:@:/:aAb.h oU_a@u|>Auzr.>,/|CAhB@B/z|UvZ~z|Z~UvUC>.ZCO,|+CU ~B~@rA:Z_o~rCov~C|A>+.B.z~+.BUzUhrbaaĩZb~Ohz.:+_Ou v|_Ob+Z>ZZ_>BoaCUZ<@rz/B__:_,vbhrB/|b+C*O,@b,.a_uzuh*:b. ,. O*/h+ ,uh|*,Ubr_>.,ܪ@~|z*obvbbCbhb@:AA_u@_: >@aUa.@*<:Z baZO*UoA +u/CrCbv oA rb@+B~O~/*|.B,,oOv> >bCAv*+:.Uu+Or@BrZ@+*>hZrv|ZZ:u_+/ߪ.Bvb/b,<*,ߢa,.bAhC+aZ.> /C@:rz+r,b|rC |rBCr|:>>B_o+rߩa:Cu,h> +>A.b.bOC*+h@z@_.O_z*Ah/|vvoC,UOU.Ouâ|.ߣ @hC,vh֪vUOubOuO,u z.bb:BZbO:hZv>uA|z/Zh |_+ bZC*|o/|bb,+*Oh>A~hZ|.a_< >z.Z_vC< ZzZZ~~@>B/h++A+./*|zvaC/h:o,b䢩|, ZarZ֣Z+zr|>U~/Uv@bz@hv+aBr+*~>b*A|hOz@u|~h/+BA@z*,bCbU+r*hߢ:C|ao~_>.z~a*z,U>u/@Oz,ouhO:|+Bvhz~_uva<>/:v~vBr<,_Z+ߢu A/ CZCB@baoA/vߩ>A*_horrv/O,/bz~֪bZo+OZvho* z<~b|u|@*v@:_A:ob.vZ/uUA/Azb+h+*uZhv.o/~uA,C.C+:ZubC~o~C,bĢb/vUh_Zo|Z@@rA.a*z|>|<@vv*C*Abbohu@v~Z@z:hbUabaAO~Urbzv._UhU<|B,UBaa hbBb+ u_rz+@b_BZZOb*Zv/rr *_B:+zBhuvozU|vABUߩЩ,BbZ/:|*uB.bZbzv,B,:ArO/+*bubvO|ZOab/ bZu+>Cvovb_C*A>*bu/+ bZvBvr<>ubrrC.uahh/,vrr:~_A/CZ*~B __ao+vB>Zau>Ubohz|h|bu_>,CA+,b:ߪCv _Ba./B~bBv,BoCz<_/*:CuhzhvZ>*,/h,_oZbbUAU*Z.Br>bba,O/_+ĩ|~B~rܣuCrb:b._vOabo,Ub/:b_AvAܩêoz/aU@UOo:OO<|Uzoz|bo/ߩ/uZBbA+@ߪA<@.*ru~z@,ZO:b* Uhbv_,vz|/bA>:@/~,b_oubovrAu/hvzrB: a@oaC_:/|_~r~zU /@v/hrC*.BUbU~+>UB| OCAo~|C,|,U+v*zbê:>Aa*/Aaz_>a.b.~C ra:A _.㪪,h|U/ĩA+AAu|CCbvBA._ ,vb_~*ê+Au*b~~OU,r<_b@UߢZ>Т.o:uO_:~u@vobO<âUZZ+@UuZCO<+~+u@_b|b_Ouv|bAb|z :Aub h+C/OC+bzЪrâu>+u|r:bU>r,r,, h+bbhBuC<,ubuZuB|ubr,,:hZoB ..Aaov/@ZZ+/vCzA+,~@o|BCz+/@b*o,BBuo@hr~@> ,<~brb,Ua*A_U*UB hva@:,ozbo.v*CboU_| B+a+C+uuoA>rzb<+@OobbbU+h_va:rBߩ O@z><:roZ,ZUO:/.+>OUUb,A@bv:,oZ,ܪ~|Ubbb<|B_r,*>v:UC~azv|oba, b@|:vzBbv*Czbuv~.ao,OZrA_:aZ/u@<~U~AU, >CBb+Bvb:|@a_O>bO:~~/>r*>Z*Oo֢Bah,uvA :><>hOUCuaOa*zUU@/:<,.:Z,hãa +>..Au++uAA.ur@ o**zéu_CU|AU>abrh,uo>_*:_>OU~ ZbO |r_||AB~:|uģa>h:Z:+bZa|Cߩr,_< ,ZB+@+|>Av>bCOCr*~~ hC: A~obz:vAh|+arZvrߢU*:Zb_avC@_,*>ߩ~bu<+Arr~buACbZBoU|A..+*,ZubAUC~C@:*_.>>v>v>o|ov_bCCbvu~b+ _@b_|ߩB:Ch,uUuB@ AO+~U.:OU,h,+bAhb*CCUB<_Uzh>>CZu+C.C|,Z O~ou CZoz@C~ZhbUv Cah|:<.uUouhbr/U:bh+z:/zabobbbCZ,r|vu/+v~Ab.ZC/bABub.bhzzrh|_/h@b+>@.:z O,:,vhvCoZa.b/+UBU:u..Zz_Zh~>*:_/+|+rA_@O+~@,r ~~~Zzߩ~vA+C>ur_bbvA> z>,v:.*C/A@+h~ZUC>b֪v,r:/+Z@*~h*U>a~oAUZ,bBAbCu/oz.+BU:.OBvB,zbA@,:Uĩuo+aUo@hab*rA+CCC:|r>,:ZBbU~C:Ъuz..~/,@v~+|r _,+U>. .v>+.B.,U,~urrbzubOBrC,@rh*+O,|b.>rC_A,,O:,o,rBBߢ+.,O,~arߢ/UBu+ߣ.+_bUb:..|o.b,:zbCZBZa.@uOb|,zr+|ߪobOC:ozhb|/O.*O.u*:o,vCo_B_|*<|C/Ab.:U/oO>oObbAaa:A| Z_A:+bu*~:~zvb*Cb,., r:UC|uvhuC Z|aC*ZB|<|.b@>_Ģ*UAZa_r /UC++C|+â|uuvrAB_/:AuOaUv/*v**hh+֣,r,>Ubvr*+*u,_a./ru,z.*~+vЪ_*hU_ ACbhObaZ.ubr.ZU@@|_|A+u:C@|Car//hC++uh@bZ~/*h b,v~_bOauz Bb>/O/a*/u,uUbhz|*A@ u+@ur: |r h:b*C*Cb>,bvrUbU >@@*ubo a b@婪h>h~Z|~hv zz@Zovv~ܢZbb@:C~uh+b.h@Zhu >|*Ar/ua@~壣ܩh_b._CZrAA+bz,a~/B<>Z@/ r.+hZ@Ooh,ܣAvZUO֣b|z>b/./abr<.Z>@bC|ZhoCߢ|_|u+~|~z+u~~>ZCBaUBob*vZuZ,vCU>Z uĪOC+.Oub@~vA~_,arC+ _*֪:C>U+b:,:u,.r:Aߩ,,h**a:/@a*a+v*+~C_,>b|U |*A _zAo_b UvB,B*vBh+o:>zUozUOACZ.Zvo,|,CuZ::.Bhv:|>b~ZzO*:b+ |O,ĢhbrCaߪa zߢ/>~u ab/ZC*C:֩h,Z~zo>u: /abza..AbBZuhBߣC b_~Bra>.h|*a,*U+CBo.,h+CzvZbBU.bBob ãC,brAaA,bo,Zz /|A.u~hbaC@:A.ozBb~h,/:/zroZ./h< h*B/_ZCova@+_ZO_*:z@<:CC:>ܪ.*aUh b, >b+b>Ob_UBu,bC>Aa/B~aBoohv*.b@CvuBO.o.~@Z@@zb:C>.@OCaU@_ZC :O:r.OuO <ã>u*/A~>C>uv@zo_O_.@Ar,a*a@~U*UZ**ZCuU~<|*~êaaAA.rZ:oArzߩOr+_vr+h,|bvz|>/<.:+b@,UAâ|+u~bz~.|z._vAbCbO*Z|,,hvܢbAh|hz*uCAb_UOarZ@,AzZubv:oohu+BC:.B,rvh+arz~,UhU:h<_|v/_o>.h>*v'), (N'|_ߣ
,Z*u,z.//Ah@o .U <*>|o rU|,| |Ģ+ܪ>@arbЩr> U:CObo>AoA, r+|vZ> bab ֣/ > ahb_ZO+|Oubu~.uBO/*/ZUh Z@>b|Ov:oo h.>U*A@uhO~b//ObO@b a>/:o_/v||.*,*/@O~C ,'), (N'.Z/A< +v>rC|:OUu@U.A@ *bb@~Ovb~:.+:rv|ܢ/~o>UoCb,hr*bv*@:UZz b@ba|a֪u,h/b hrb/ãvZ.+Zh|'), (N'*â|~~.*Oh|u**/_/~|rZ*/<<@|Ob|A +>zCb|Abbu>_av,Z.A,u~.a>uhO|<:b,:haZu|_Z:v:o__|*C,@ b~_|Ubz~~:r/,/ߢ:o|urz/AU_:bro_u>r:a|vv__+,<@O_bhv,,UA>Z_CbB C,oh.@/,UvA/UO+|zB>.U+A+U>a<>ZBhb>ror>BbCZb++:_/,~z@obb>.za.o_rOU:BA A/bu|>:o@@*_uZ,CBbb,B:uu|z/Uu :ooouBO,b*<<_/O.~Cb_b媢*AU>~@O+ Zzb~rABz|_@/U>>>~a~BC|*BZ*bZrOAvzУh+OBz,bZar_.o+Oz@ _v/B+ro::uAB_~v@Ub@~>ohz,rU+a@O:*@Ou_vohh>@.b/rv@v_abrboB@+>U,@~bBv+ âbbbU__CCB_|C z _b~ru+>r/ *bOh*r+bB:CU/v~A._AuobrA|>a:C:UuC+o<~@C~.>_|UU@@~+>hOB<_*Bo<./orO, _..+.b+*var~_a+~h>+OC*rb.Zah_.Ur|u:v>ê||ZbO+z_ *,+<ߪB|/..h,_o/+bbOCUB.,_baa:zBhoU|oUu*.o.zaa*v>@o~Z_B U~<*hC@vZ/>zaB/CAObrv:B/BA<_,~.֩.|@oChOߣ<::: *+a Uz/|v/U.UA:zz brhb/rbCCrba@C<,*ZabC*.rrZ|hAO@v_C|z|BO~,b@BhZ@B>A obhzBOAz@|>AbZ<>U*vov,hOO.+boOCa*|*__ozab@|_v|bz@_bhzBzA:~@ OO< vubAUAaboB>a֣A@ z+:Uh+zv ~Cu@+.+uvbZh,a,/ ZO._>o.za,,|a_OrB@:@@ub<>.:@a|zaAAC~ *uA+U,zrU@:v,b|uu,:>Cb ~a:O_b|+*,CzuA*@b+ܣ~o+/h|Cr.u:ZA.aO_boBZ:Z.rrh@oA.h ~+_+oB_o/+|uO**u+vU:b<+b_o.UaZ>u+UB, *@baU@Ourz,b_A++bOao~|aZ*+av|b:bu~ZU:+<>zOubb.@/,*hObz.*@r@b<+_bA|> âoz|hz~AO,@u:abArboUv:rbbhu+ܪ:UrBu@a_< _rvr/~|Zz</Z+O@,A,UZu@~ZouO||CA:Ģ>:A@֣,UOvazAOo +,z__.v:,UA:,B@B*A/_>Z,*b,>:~+h:~.+hBOĪ.>OzaB~A@h:r>z/C,bBb:U+,Z_+__r,*.Ab|av>Bv~B+b/o,@uCZbBOub/Z@ZhZ>bzbbuoB*~ aUh@.uUOZb bC+uAC,/oh:/֪h,|o.C|AZb+>*â o.,Ub,aAO*+.@u:bC<.hvߣa|+ @*/UУvo,@~~B>.oA_ ,*hrOAaZ+||zvbr,>ua@vhUzUz_*ߪ *+~h,Ob+z>aBar_Z* b+>b:/A>UߩbB*BOo.<|<*uh|/ zvroЪUZ_Z:u*rhvCrUЪazv_ģAO_vob@b.:zo:,@r~>_OC,hB+<_z>ĢAuB:@Zr_:@|UCB@|o*_CzUU@uA.hA~r oAuOzrbbAor||oZ COzhU~@vzz|ah*B o|u<@UA@AA@@CoOrzbo:hB_h|Abo~OZv:b>O>a*Z.rObOv*֢oaC+O_:a BozOh+vvzoC_C*abb~o_:z.O::,*ubaC.CbCB ||@U/_B* ܩ|+|'), ('_|z:.Cb֢. _hzB<*+C:Z_U ZA@boU@:vbz.r>*zvzub:|z@+*UACC@O.+~*UbUr*+aB~h_>UO~ãvhb媣@>,zo+.|v.O:/a:O*rbhobz,o_*bhz>,A_v~֩*v ,C*zv,>rrr~/.@|ZAO_||~Zu+b~h_bB@֣a U.ObuoCUBvozA/>AUZ+|.<~a*a*:|֩ozZCCZvohuba*za+uZ_r+_zAaU B>O~:,ru>CbvBZuA |@ .Z Z b.>hhZ>r|zv'), (N'baBovBZbzܢ/BZZba:.z*:Z>u@vha<,C~|>+bbBbC>zZ>.Ub+_ ~_Z:u_C bCO+r~|bC>>b._Ъ>b_v~ߩ.OBaC *|ar*.+rU|,uCB> <,UzbB |bZr,.ZZbC_u|A+a:o/haBv@/ߣrO U_hU,uvh*vCzu:u~><:O_,Cb._r:Т_:A<*:a:A_z*U/@./@A|*@roAhArb~r+bߢBA*r,*v:Aaovuu::bub_b<:+zrv|A~ACOC|**hoZ/>>~>::ê.:r֪ܣ@h~a.b< O__ z ~v//CU<: :bBh.|ubu䣣o *u.< _AbhC:@Ub.C:hOU~BܢabUh+U,O|b~u,. hZ*ou ,z|@+uU+ZCArZurOv|,b*z|<:bZzAuģ|o~A|aOa,rZ.U.@hz *ZOUBĪv@>oZ >/@++ߩuvo/UU>oZr>UBh~A @,+Zh@::ߩ_:b|+h~~_~BC,|buobuauC*_><@z,B|/ b.B zr>ߪ:bOA.OU_bBb:: /.A|_r*Zb:Ģo|_ah|CUC/U Z>_/b bC_u/Cza..CO@,/OOCU/ O *.@b:u,obBvv>r B֩~_@: r<:Z,bozAaOu _+*r~A<~֣v*Zzb> Cߪ,C*~v*.z~|bou.O@~rzC*oB:+/b<|B.>*h.o,hAz|b__Zb,o ТB>,r@ZC/:U b>hz~>*_uv |/U|>|u/b@~<<~Ub*ZrbavaOo|uܩC@bz@@hbCAU~BТ/zOߪv>|UZ/bh.oZAb/A z>zuB Cb:b*z>,:v, >|BC a<__/ o>~a*h:ZAuA OAu+ah@C,O_<:~vuvUo:| Ob*vub| oC*vAhzzv__֣~:|uZ:v@r@@hzbUA+:,|+Oܣ zUZ*bbObv:h>A>U.Aor:ZZ.,o@,@z<@OCuU CvAu~ h,_B*v~@bA,.@ rb:A*Z,z.*b~Av|o>:O__@~Z:@U>,AOrvr_* o@abo@:bU~@az,bav~r.@>Z@bhBb@r~U_֣rB,>uu>oz< +aUhob.|Ua+ b.A<++_+ , |aТ uAOU.C_<>/<, ߩ/@ _bЩZ>ТUv,b|+:.,â/,uA*OO/v:uZb*BUUu_UaauB.a>BOu+~O:zbz//|:*oU._zC|Z,@Z*u/_C+@_,O<|>h>h,B<*,uA@rzb~C*~:~_:>.:a /ģB,*o_vb ~_Z/hCߩCߩBA.|<~*+a*C/ :.uboZ@<:uhUCo>Cu/<,Z<:z/rbA*<@CZ,o<,*rBoaovaubo@b,UCbOuOrbh<_Za/OC/v~|b*UZ,:ohOu>Bhrh>O//B.+ubba@*bbUu|BC~/_U._:>@huBbOoa,v+@CrhO:Z|b>r Oa~h+,:h+,O@AZA<,bA:o+/O~ ZzrhA~A/< B za|vu~O:z*::aArAU@U<_~:@+:|,>>v/ CZo,bz+~_+*vh_h/||bOC:*~ߩ.a _uAhhZoO_ovah/bbZ r>.UCA,>*~~~zrZCub:u,@..|A:hAZO*>h>/*_+.zbr+_+@Zb<< + Ab+o@O |_~.rbz.CO@b_ A+b~>O~@b/~uuo.~,A_zb:v<> @Ooaba.~Bua*_hz|rzu>_<~B>O>Oov>bB<'), (0x70BA23A819E1BEADC92E0840F382D7A5DD89EDA9FA12486DCD843FA57FAEC5439F0DE3836E6804ABD214C35672F9552A2CE003709ABB9C5E72B6DA94A2192E1B68C5A0E69F5336758441D7E54EF1FAD32E14799EAA55A9E3708411B88D6F09B8E6A7EDAD586F8BD8A98EEB58E4B61080BC06658DA09070131BBC751A427EE715381EFFA6044C7BBF89A0F41C6A50FFBA7490FB86097B185536DA929BFA70952BA7D520C6B6697C6F8BA604FF9B54A9CABDBBA6B282600CBC06A96F29BADFC4190BC974943038030B138CFB627718BAE130C7DE3EC9E2A846C964C00DF952B5ACE1EBF4D2E0159A84B89B9EF665A945EDEF8EF9F201854F28202ECACC78F611C0D64E818B24E7011B2C59862E43B1E0201ED21D6B59C2AA5C9CCBB1B14ACE0CC289DD1F1628B9C9088CDDC6A8FF20E46F4DAAADA5D8A66714A424EF583550D15E4CC4A56691C9F8650815DF7CFC025D7BE64263A02166E9E2760B7203C971D23B0C685B3A7A7EDD84B1479DC3C7EA18A1C77472F2EC303CE6DBC2EF8657F59C9742A37093A722016765DFEED9C9251B8BF2D13B55FFE04FDB2B755FB88F562CBBAB0581237A84FAA5720A8D0D42621DB5A7639386BA46986154946832C348D80EB2332EC3A4F7116ED696E2F4524199C857A9112CC3A601656D1FCFE51CC7E12A327E5A0F345910AF5225AF2364A30E12FB9FDA1937AB4B0B31C85584282B510E), (null), (0xD4E78A93FE9861D99DF7DD00C910BDEA7CEDC7F286334EDD6C038C8627D3A06EABE03A2B710CDC80D5D1AE1453C78B746B41D521EDC63CA098AC27FA0CDAB2C9576F55E9D691787011461CB4853A8AA477181BE5FE7E81E5A49992C5E4E273FB1FE4BCE472A29ED9C8650FA6AA881B5E218382F4BFCDCBD8ED6F453CFFB28B2FD32195A07EA631D57A421C996EDB3B1B7E34A3615F7E3B5119E3F6025D61D916D9E0D388F37AE07B51AD7A7CB0326A123429BDCB0F29CF54E543879AAF2E77186806BF8D08B2280354270FB204BFA1E679E4CE34A40E06AF117FA3AFF345CC22356214A973DC098200BA77E71A1C5026A1A020CA60437359000F7C890E780F0E5BEC7DA1ABF8739DDA4C33E9971F95F42F7D0E522401C2F2EEBAA9645F807387AA688C2D9FAE7AA92C83EF140F8AC2E179875A916ABDE9592A8AB2F14F0F3D5AD8AC3F2E92685580026525A111ADE364F7C7EAD826E21DED7F320314FC89591D45953B624B934E1131D98E059747487CA74EF987256533F68F51AF60654184790B085C7C7180186379D9A64D54175637EA866DAD90D2F8DF6245D3F9E4EDABF05515F98EEBCB0A2635950D4BBFE6A277FB7776DED3D6E839107C192CAC1F7F8C2DB5F73E1DC74B1E7B4678FAC4AC1F7CA35CFE6D76CD1C7F2CC07E6FB2DE7A1516811D0AEE6359342B58638D5DEE74635C9D8950201215609878125C49DC6B9CCC62E4428E158D4002CA411E698F213E4C1A12145529F4046CBD717650FCEA4EECC6C1FA0A31D44610494D56D0F7F60956D4102EC95747A26DDFD6D1A416EF06DFF231A3CE26331A45CC040CDC9E3375C6681F7CECBC84957F1F8C2A5B03A2F9594777DDC5533B2FA0F5E8FD533AC5CFAC610A3BF77319226D9C23AF9A09BF42290AB2952655AF722DEFDBF6D387424459BD7DFAF86602E62D557029308C959736A6D4488830A956B1970E0797234FE659DF55DC8BC549C207CC67D1E58642A15944BF2CB2F9BC291327496058FA4F0A0589CF5036B90B715D1141BCC8D8712A556DAE5363223360232CC9647BE86A0D7C5DCB5CB6F26AA0384ECEA1B800603BB51E0BEA4CFCA6E2556F2D09EFA6F575A6333F6A0C157463020D1A155392A822CB8DAE5DDC7FC080B7E80647C460B0925859FA84C1F62FA0A9A8E73FE1918EC2C60A3E62F797982773BEB3230E2C9EA25C88BCFA982361D55E0EB43498819E25594380B9224E9AC1C1D31102420B917D0945E259D5942AA2A96804E9E3638EF11F8DCACBABE47F0EEDFA38C5125E93537C372A529F4450C418DD10BA4AB0DD5D441FE3B441C6D124C5D36CDA5C65904AD5B06CAC393C52DA3D05B2CDD4C5C43D1DDA80F37BDE12B665058CCCD87668B34DC5E59944312408CD08773B130350000E2EBD81E49DCFF69EB54633AF8601C69CFF800EE02BF9EBB678257266D6A362B58BBDAAB9E7CEB0F6EEFA8EEBF0584707B09F14834120E235D1CA6B775C90C812E37E23C8570DB430CF18F1316A00C620DE6AB5368EDF736BDB74E71D6239995E327B0771347FAFA2EAE3B3292EB1CAD0044B98F1DA9183030BB8ECE32697CD957E93FEEFF954EB5FBA124CAB2B4A3C2AA9161917A1A783A0F803667C92CC7C53161EAA9BB2DBD7AF5F3837C745D8D8C17BC2390F7EB6F4D70F5EF6F5EE6FCDEE96F9950D9FA177CD3F69B76870BC5B1F2BA400CF936CD45F29D38B54E4E1C0EF6B48314C43CA21DA4B6BD014FE8C665302D7CA496FFD5A292435E3CB1523E85DA8C7FC278B0FDC60822684279CC0609D6D38510D1777806EEE07270DE656C42782736B368F3EC8F2FA69C64978338D64D4465EDDD1DB4531478E3983E7CE7A2C615DA428542A0D2E6F5E12ADB037F6BA7AC339A0F7E756A72D3AEF0105440B2CEF99E71B8E640FAA38306D72C898800F987E092395DA357906FDFB1A3A0C292A53E6BD164FDA2B15B38E67C779E4DE95B9DF69863BE79615646E149169F56F2C07431EE2DA69C0BD52F46F06726D00221E66605AA2A2EF6C4FA8B2E1C59AACBE1E3BC036C5FBBA4F1FAC3347778FA3F66DF272039414896453B29332B7DEF7B848B1E737ADC95C23AB113BF66EA7F4BF05BB73D327A8290AB25BE21268889740B47BFFC5A86C49A4954F5783D992F5ACBED32DFC6A24909F88DD8452E649BA2379FA42F3A82E179871CF3DD751A5301F653654955B9AD590EA603DCAE7F7BD4B953409DE5002038FBB948A9BE6B94DE2AD64ECB0F525C8DE24B10948F04DB17A12F1421D9C51CF6332C4D9C6103AA931125B1D820A0C56706B2AB99EF8BB9E6EE21088F47630465B95887D304B01CEEA08D83595302F6F059BD2B17197316B76256AE3FFB1B5BAE214C1ED818E26246A5CCF962086093EB3A08359A47ED4C3631D070AE11DCE38521D52806E41ED7674AE4715C89B4BF01C2B305F2E5B16643FFD8964871B424C8D9643023388CF71B20CE4F636BFFBC8D216EDB5ED6F0AF707EE4171B889EF586BFB88315848BC945BBEAC2276202D8002C191702E8D5E1D8C4BFA45475EB9281D8B8A3B37C970895A58592FC2E880E6C1C06EF7F77E2ADD9D6AA50C4D774DFD048305EB95F24838500816D5332E5AA4CB148486F0C1309E61AD9DCD23643BE30B5C2A3EE29551CE7835A6EF6755A96E0F014139F3C70C43526689E8547B15ECCC33CAD7041BC135C2B50DBA1B41360C032FBD212301F0444FE7EB7C0B6879FD20BA23348AD26AF3400B773DB95227112F7DE525BDF3C9CA4285871C3044295A3B0F9A611D018130C4C9E1178AB28AFDBFDA4C8E8354402CF059F2054A4EC3FBE21D02A9B8C6F42DFCB460F312B23F90FB895C56F89BD6E7CF6D70C40F7CE67606E5356DB0E045F9E51E91CFF34C1A3E196109C0F16D0346461BD94A55301D80CEEAED2C7CD1E01A446370D90906F3835232AAAE72258498E2EE269506FAA3B5011101085EEEC14781EE7C8EFD293D3F2756F823856F0DA866554A8EAA4A1449BFBAD8F805EB256370622D83A8F59BB8B1E76DB0027F2F910358A208A4329C36DA33CF4251453A3C3094B32242890070BA91DDC3DD6347408B46F4AC481CBF3DC6F6A9752659676BAC317F6DCC0D4F7958324E1255D85976EB8EB70A518EF314D4755C4BE08A49612A7117ABE4D9737DF77A5316CDADE8ED9D328997A15C1A1E3D6A9857B10398CEE8EDE8E3C1AD92121B3912D63ADD47278C6EADAE00B2BFCE56F96D79401CCCF4E1852EDFC4042CEFA0777C684944E4602370CA4255EACD362E198CC74018D1FE6D1EF5B4AF67628742BE0E8835568412150C56CF528A9EF6B7F8B1AB7864AE87A67EFB2A4F2FB1BB0E420097DC4500D79579B234C101ACE380FEFCB6B6B70FDD0F86E1B65B59C3E55B9AC10F89061A72F7D915FEB17AC6A5D218AA5033FA05563222885563497B3BB6CDD9273F9C5979E389BFDCA2112C94C03CE443AF72B260956BDC677EC40FAD5DDA48E4A19E6535BF306DA93B28B321F6F3952765388C431B7891D3BFF1FA1E7A127FC8C947F221D6AE847E0508256CB7BB718B2FE848254D04C8290D9176CD364E2F28A9EB58AE017450B6B30D3D1253241C037F6FEF92C9597AC47EC9144438B648B6D9FCC3CB63C389BB9791723FC6B6D5E875724DC65F9C5E4F71932F37600B7EFCC58738576150A0BCE533FA37E73AFDC8F32BCEC56881573C9D735ACF93525B8B13757A3F7D7D8725D291E02BA2276836956643343DB893432FFCBAEDF5D02893D86E2471C0BD4B76A4A9F3D7A02B9A760A23392C0E264E5BE2361081C3992F01684D523402F776D71BCD9093C5BBA3036144E2D196FB84B11FC88F89ADC9B20A79F16F53D9667312AC62114096BA9526930C1F7FB65D6A6CC8A0143A68ED29521B851AD34C4F2AFBD0CF2534EA431B643368F6A1AA32531B86038A385139AABF38BF2511A0C1D943E123AEE63835818585AF06FFF688A8E831FF4D48C5F2AA972565FC2B1E0AC4718EB3BF86846CE2518105B2A132AAC9AF173DDFA174917EEF7917C1D33856667BEB957043C82164C41CFBC6BF3F08657A9C4D14E12A22FCFD35D00C6CAB0E182B9E37B69C3A85E6F5D81A8478CABEB071B14637EB418550C898720EF815F7190DE39B210751C84016661F08109E843376209BBB64D72CEA18E6ED04C777EEDFE00176952F9CA81FE9062185227C402A143F97D77A3CB436B7B0082064C3789E773F270F27EF04DA777BD15EB6A7C89BA6C3F088DF1665A44C40DD7E9487BB258E820DE2553102253ABD60FE6B568010E86C7AA1D3F0BE60D983C2E7118645F0C0ABCF3399E54674C0CA4D22B66638F5C0CD95270C19529EC3AD08D16E1B14B4776F3EBF864C77032505E108A29CA9734BCD2643F01DE3A6593170EBDC7505A4B699AA4628796E74569202073849FB27039585A1F5D0C4598C976655DB8B27AF003C5208F1624BD25EB2ED5E1BDC6D103549E746EF64AEE6D550BA90121998CA6A5206FBF7F235A04AB34343E2653EB029551F92A3E0BF9B8E6B33A1A8BABF441922F3C9D57219421447FC3C206B036F120966BCFA06268A926B6D8BBF94F88FF4FE29BF7275DBB73CDC7E5CE3837B2267C38E9E54024A13FC68366A048D837F4F6C47224244FD9D2EAE801E87CAA60EEF4A23FB05593BF2B416C3093E70B2AE58FE0D773B58E023C6F170A5812B8B31C2277AB969887AF530556E2B80F45EBDFBD1C689BD2FD3976A003513E99670888A914716F6F945D0831746E6EAB4A2D192B2A9B06502749254E24F6952660C9AE4E5A1EEAD48C7028CF505A6E8ECADB65D638137EDBF23881DB4C213A9DB7D1C0AAC010413B3244AEAA6246FFCCEAA6835990BEFE5D5AD24C219D1F886B358B078E89B3BEAA8A2AA3E364C469BB38B4F0959DD10D08E3634FFDD42F9E22CC4374D73F714326E7D8DF661B0AF8966890F8E81EE2CD548E0E9B1663C0D66A9C7127215F828BB771C9BDB501A6EDD87AB9853326B613D976105920D62CB3270264C9A9E3D746E615317645350852D720C2ABAA3B9333D66D4DAB3F295AD1451686B29CDD43E4A372AF2DF54FCEA47DCD7200138118FB6F30F34C962C07BCBA50213EBE45B609DCDDF8378C753E969EA93D71B74ACDC3FD9B536BEA075E877AF263A51E9FF6281778334588D16EF9F25CADFCFE96057F926D3122F24A1FD58F70CC9A019977FEB3056A3F17783B2C2C59799D595188D4ECF412B15EC325CD686DC61814C4F858D4AF39E92BD6681A2214F6A8D0827C2DE7E7BD0D86C6AFEFEF9CD6B9B22307676110B8AA27AFB9169BF88F49DC8CFCD5E1A8203D17EAD21E0F5A098EFFAE580F0D9F47CFD9C1F6383E96718E37660352AFF0C819F2DA4F763E9AAADDA62A16ED90703C4D452D0C1FA1E80E716943D6A946A6EF0ED64E1C334FC1813F272892047F93EDC729C61D72F4B8780ADBCE1CEAC3F1870F3B1807526408FD73ABCCE87955FA01D5661F8F70896C0A2DD6015781B4A67B35A192C9578C9B5310D899D737CFFEB4E1CC3784B4721675DF1DE98C62B17BCF0551B2D7C320AA58CABC6E97EF84D25DD75C65B57D11C6B38B1CFA49931EF06F6CDAD1D61D26E1C121DEB9F8137E865A4B9BA5064BB641E39AFF4CA62650B5BBCBFF3B14B2FC30A06AA4939E67CEA00C96A00E0769EA23B688EE4B1DDA3B9AC1290E2C144361975F5AF4AB9712B38BCC4F401F8652BE41E1CB749BC4A112D62F09D27559929BB92508AEBC753E9C93D5628EDE9A2C146E7ABC4A48CED5D2AE382E7C8D403E2229B386FA8DB3F1DCA33EE0C66212444C02F5740AAD5842EA4F25F08456C20F539730651B032196BA78EFA709EE0F709BE3E26987CC3384C160ACAB57B37D75D13F9D3F21BD3938E16EC991CDB1490C4FB564907458778763BB93AA66863EF6FB69C5CA50D04EDEAAA988290291B71027A06B924EDD0188C815CB66299ED26B2FC29653FB7EBB6F6695F5CAC05E74C1F47372B61AACB82E584D023B04E8A51BC72CF9300B5324B8F50C2BA8E746B869910961A61C1C40830A780BBE6C705A8DE0D9F3A35534C6A15EC9C11E711F37118498AA0B770F0FBAEC66358357764C74B1ADB80D4315145C42C057424B3211FB30FA29C3C64F16E1DA48C6EF0F3349E87D5C6CD35739CE7F845DC8A6A7BD6FAA543A525D4C88BE6286C632FA5E254D0F867EC4FED54EA3F72BAA4F7886704A1CE91C9AD4D0EC9BF49DFA4C8106D4216F00B92038F860D515865B31A24945EC168C2601318A682E99D2D060DB0212F04778D067CD5001148837754E85BAF9BB581E2604E0C2EFD4988A8656280FFA13735AEA2968DE1EC67B0188FA0529A8DEE91508BCDC1E1F84890BCF32C9AAFC783D61DB2AC0C05289FF6F89DF49E5CF7EE1A77D02F73D37553B65905D0EEBFCD00500BCA34E8E1E18C28EBD7C94303A933C5051123DE980F02A85EF5B3FF57B1362B9DA39391C3063995440788FCAC10B2AFD20BE8ADA921B8FCC78C89EB2E8CD03AA09EA66016A101FFD88E9A908705FC4E43032D4CC888817CEA96CA377C4D66B8374D5B0D6952983009E9D51B872874C1903AA82A5F8371181C2A767FD7CA828A27E2593AAAEEE4F16BFC43DEB366F4C22208A641A53B58B3DC43F03FDB18583E674AF3A5CE3917A156B7BF62409265B635B35DCF2340E5EC89A65E66FDA51552A4047768734FF3E9F004EBED7BF67249DE3A0A27BB891A2764061B28DBB1A4B0A26CBE3C1BFC43E5C073DF1E54F77092341488C29AED971BE94F036C33CB0D3E603B4B0E38352EE1F7256747A9FCD26C9689F3C729E116B5D5A253CBF9D6B1F466A0BE19AC615AFEE6A6CB75854F71ED7D96D6AAD746157E24963995E262E8207373E1093DB9C0342EF5E08316A02F8531654E6200061C208B40F41628C41C83BDAA02126E67AFC3D6A17CE26592678466B3647C1486206D56C07EFDC4AA0C69D95CC56B9E1D17C9B68A8B5E8A3ABAF9D86FAF74609F6F368A94BBADE9B2FE2C95120909CCFCE6499B9AC689FAC2E31C06852554FA970939EC8EE1096169DF048B5FC87730B12CDB8966D9C5D8E63CC8B19FA7648DA931FE09CF1C3D1BDCE732BBC2FD9BF96BEB555849CB94BE436106521857C2C27B77E12DCA6E6195EFC0AC7EA60A16E8A0CE46B4510B43DE9D40C56E15EB0285256F3F4B1B6E2FFD89C069881E1517394A1DB149110D707033038F8AA8F37F03BE275937CACBCD329F482A91A1BBBF88288C23F739B87418FECF1718DEA454964065C9F7BBE06E7E507FA9C8E2DECE774306611CCF87CA06B34138FBB3B453FBF394503CF1C8CD481DA4A6BA0EAB352001A0D4D74338C7B99BC3447AA773CB9C2BAED44D8D92867B3918FF2AE010F7070B18FA13E07CB7BBCD97A02D8353A0AAD90A8E5FD7E7926E19599E2A399CD88ACC3D6E8F78B7BBAFF61880F6F158F7E6775450D581973024868BF987DD8D8230BE166146E51131214EDF68BE679B7DC161B7B2E44B0209340C4908EDBE34D169964F37DBF6B00166222E87A12F71BCEA0D372525DB9DE4BC0C2D399B084463190EFF271864A2CBB0B64CC11D7B67059A8D1EDF860FAB8EF86A7BCEC876665DDECA6D922F4AA4866B6C746F8EDBC740A5289F0EEA65DD0A63712EADE9D4033A50EEE3520ED4D550E89773199B3CFF1CA23A299FD7577378ED622FBD1BF69D96693A1EA0F87532D0534E2552F1C46F2672110BAEAB6362F87B6B64ABA41835F1FADDB0611D5F242D08584C8932208629F3084B09EBEEEB05D725248D10862B3B19335714140E0912EDDEA65217D9C65AE43BB89BCC2B060CF1AA89F73A971C822D1170FEC97114E5FF381C0D4898EEFE5FC9A8D4CD8F6EED2D4B23698511D755C124250668C8917226D39C930EF8C359BB8A9871EF47B49DA282D07D4EAB60EE60C74B2472E895963735ADFAF3DADF3488C9ADFA786666796F8863E6F714247B72AD3347AC9FE6D3F40139BA9AB9A9C7A39BF585FD6575FA61D2B4EA84AF9F2311328745A79788E8E2D906762CACDFB6DE9C435C1E9F7D0D3838E6DAEAFC4F456215A86831641F0B130CA2235FFECDB4F2FE0BE86B420472B47A0D6EB0ADFEE68AC014170377847A7C374812FC5AAD396B31E8ECF166DA1F1136B4B656B05B660EBC999EEAB6B17A79916C33FAF27559CCD4037EC412F423E6F405CCC3CD23CBDCE20440C10F4EB57F6D735FFAA6251EC15AEA82ADDCA1FBC775B8F6B0E5B7AB6DA15617EE3498BD854EFF579F95293FCEE70A69E3A11D004108794B5658049AB6C7F259500E308CC12CFC5FDD4A5C324B7827C9DA4EC7CC8355D6E6BB4C662D4964A0D7A2D0EFC0B77EA7B6A4BD23F6AB4700DD303BBF680025D5FA3749D174C5CF1678A9858F7B8967115CA61028C532DF3B744C89FD0DA538D77DFBF4886DAC33F1D4A7AA4D25B78454C92A62C1EFFC0FC7580E5D273CD209D370AE118095DEA4B0731F531E879115BCC83434E24277E780EB2C305E4F0BB4029ED7DD76A604BFEA85B24ED0A9F140C6F9A05F079E2691F9C7919468AD4660676B5080B0B49E16C475495D8F2817D7FAEC6A65AFABAC647746E3AF146F563D3F52E66458708F115A8A9B9254C901D0AFBA9A7C42E0B1BBBEEB086AD0EE01541E0B1D3C41B27E895C580A25101A0FAE4413FF5AD5DAFA5EA12BA56C6825406C88467349ABC48EFD3B101FEAD68CABA4DC5925BDEEA77F4411BF9B160C112137179E9CC9A6C6037F84021EC5BB1088157F01900EFF837DE1C72E37EC2978F02AEEE8D238EFE1FE1556A639EC88BA88003686960B8013379420BB02778E17560C12F3D6D23E4F259E027BB7594A91580CA637B5A2E1E4AADAB03D1734DE86863F4F2DDA94E3B5C2E761F808045BDE4A8F62F5D15761B42A2D49FC220038F1C07CF478091DB7C329F074CE41E9DCA57ED2F387D1E8B42FDD9B02AC4BE793C1AE6F388B0FE3D42CD89ECCE1E293724150A37D4F0DB020D7C8C59A6D1A0A78425CB31FD1B050959AFDC6AE321CD24C4928C05BA76A44B4FE4F60C349496611CE268A852F74A190000DE2514601EDBAF57950455AAED0D717FE2081508C4B5197B4E00B924D1CD5872F5B9987F26EFC61A6CED0F821B72055B26D31531F4074C190BA9121E128A85D7BBD2A533750258F2420A9BE7B5875FDBFB6E0DFEA8167EFE6D7F738DDDA807D25737D638DCD1E6248A12FFF96B546374494622B48C972F9553B6C5F59ECB249A02C9808DB126FF2977D96495168583191BFF3487854355C00830D5260BF095CEEE55F6A1C3D5C32246F93CA3228A7EDE23BCD99F86AD14BF63C0757041D91D8743A5A6C09ED145462C12408C16B29D7DB206F25F26F6384131373E035042E07DDBA55F8CE3BE3F52779373646C88A8B13307CE3AE6CE605D6D658F57A341E5E931D2B06163109A03C7AFE78372C3E4B89E8CC05884A5870D44F21F7E2ED7BF25AD8A3289D8375E226DCA6346E6DCDA9970D6C916718D649C4BA31C60F11BD4FFF0B1E5F8915AE0573EADFACA324026781775FD580E98B42025A64E252AED2141E5734624F6E20825F671E7C392AA69FB7CA4497B1E8CE157FDC5C2FB1CBB3C417CA8D4BEF9F171357DD7519CB0F08D8B3C42A87693B6336891FE37312F1D193B459646F9C5AB018B23140D472B44A70D3837BECA12B5ADC6757C2D0BCA400650CE26571AA983C581412D538FB8EC3D4D4729F8E75E4F288FF87084498DF5B0D30DAC8904ED9C63A4722D78F5522E1D894EDFC4A0572EF27F0DC722290F7C035B6C70720C63385FAAC6446530C6333DCA630B0AAE31108BEEAA09F7167A3AA5061A2D88E1BC1116068019DA02B9C1A8DA9957C60461652A5BF48362693139308BAF6F16A8BA4C1E51E5042E17367934D8512C7D12749094B5032CED28AEBCC546D94E634ABB00204D49642F6D3703257B5E8A0814BC2E170EDA51958D6EE5A3283EE74DE805EA2D510C2FD90071377DFFF761CA24B4B08ABB376470596A92EE53C0F72E5FC54D75646CB7089C45168D92D39595FD1B7E738E5C82A0A179C3E67941753F8A191E3AB9FC65C7FDA7FE6620E6ED85C4FCF1384273A003329CC3FA98C09F4ADFD6F389B56ADBF0B5B675D66E2C8FCA9C4E117C404CFD16691B082D286B2F3D18A39659E353C06A2100829BFDD995060D096E5AAF230A92D9ED10AA52BEC85A9748BDCA8635D7387DB75B4FCA61189F85F2101EFCC48DF599037FF6432607623827F4A51BDA7FD73235ECF7C7CAC878C47124609EA95DC2CAC82182B5D0E557AFE907926C7383BB7238ECC6E7962DDE3B0731D201A6C38EDA31EA43A8FD2151508557EEB3360C50ED68EE65CC86DB24AA5357AEAF1355F91588B83A89400285179B76623E4F1AF4FAD0E498C86DC24356B5A945A572B23D2F5EC93A8DD1D7AD56694E311078F66B4852B3CE2ECD30B7B674D3C3A6CCDFA4E93932EF75D077190947326F2F8122DDCF4E0D42BEE40E522E1174190E04069989A957E73606E567DBAAC4E79AD1883541F5F468CF9CE5F52AD0B1545C6E1AF53098D576394B97B8589567142F26C75C894EC7081F9DD9FCC352BC5545810B7D9FCFA6F1FC11FBF66E3C002A25C1D6041964DB1D9702E5A2BEE8B2E68F4262C789F9845F7FC5507752D0A9D39DAFD6F18CB84BE0B5FDD68CEA0443136F15671BC948A02C4D7684541463BAC66902050F11B159D6F682018C1307756B824D084D698E0A450FAAB40623F7CC52331013D7FF3401BDBB802537371409360128C1D75B7D5CEAF7C00F66FD53B30EB5BF4902E39D6C5E4B5A81D968C31DFBA18DF50B25F506C5B338D03F24AAB057DD167187CB065263BC739BF0FB737224A203B57F5EB7E8C0B8834FAABD2D2990AA2A0C52419630AB2B914EA26905CA4FB6AB9D20E53109252DB0DF37B6A7A68F49FB56C1772FD31BD31A43CD693657A2B90FE4119008BB6920D72490C6F8E483EABF687DBF08C896D8814DCAFD3BCBF7692C7EA6B394FF413FED90900B4244EA25CFD2A9DDE9E3B0375D391EBAE07BE51B2D379A7A3DC045C0173DC168288B863C63A52D5912298F38CE6F565BD0965F71BB84DE1ABA6FE7FF9CD9C6AC22481ED1B2D2574B4E8C0903B851BBDE79F9EF80EE5FBCA3AD6B81F3BD3DCC3862D316765084A90E3F04332F7BDA6258B41985A2EA35CDC29B6B244750538E00CFC0A0D54B357DE540E141DA2C9D27D309394F93B8294E2D1543EAF56051ADEB86226FBB399D1D7EAB905208F3E3A5FE33514E2703EA58967283CFF74A7884FF435653FA3D7CA97C2BC0F817D74529219DECC20F0386D79BC9C938A5CD1634231B52B5AD9FBBC0B6B), (0x2F230BF3D5A9E595DB675FBBC7EC8206443F3AF059CC50C848F8B91E22C0B57218B9499990A0B4B3ECCD67C9557092EC78B5C72C43305A62D243AADDF0C6731AB1EDA30EA2E976A48A86038C658672D866CCA66CF9892EE85EE7C64CF5D7C325594D1768CD834A8E3F22A1BC2CCEFC4BD1D2772320062028BEBAAFBA2229AFB3C3DD32186E0A0AE282172DD7E771BB90EA7A7B225F9F05522CEFA912D48F6C1673EEF94F9BE4DDC6C795A108D949404CFE1ED0A7AD8C5323D7DFEB7F60F80DF2AB1663F9786CF5059DB55BC9FEFD79E3AE5D14B5BFC469E79AD577BBF95D66CF88AE5CC3E547D391), ('d8e6ab40-06b7-4b36-b51b-f174ada6bd2f'), ('9999-12-31 23:59:59.997'), (null), ('11/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/0111/19/2008 1:26:51 PMThe quick brown fox jumps over the lazy dog0123456789,.;:?[]{}()-+*\%^=~!@#_|/01'))";
+ break;
+
+ case 5:
+ $query = "INSERT INTO [$tableName] ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_varchar_max], [c15_nchar], [c16_nvarchar], [c17_nvarchar_max], [c18_text], [c19_ntext], [c20_binary], [c21_varbinary], [c22_varbinary_max], [c23_image], [c24_uniqueidentifier], [c25_datetime], [c26_smalldatetime], [c28_xml]) VALUES ((-1768876553), (7), (-17727), (-1), (0), (0), (1), (0.7719), (0.9405), (0.2463), (0.6339), ('O|_/A+>|a_@_bO@ U~ܢz|<,|_/UZzb'), (',.Bu,uЪBUurZ_*zߢz:bZ/bO,~Z/Zr@u<|_*bvo/oAbaCO~ACUA.bvBo|U +,ZbruA@zbU>v>:.r/azbZv*:@abA|Z,B.~/>bO+h'), ('h,bZv~*ubzrUO z|Bb..OhA/:~:Co*+r|/@zBB_zOOb/:.r/b~:Z,AOB< rOU*<<,vO~h*Zu~a**u_auvoCBb:Z~,*ģ_h|o.U</:+AB/+@bZA_.Uv,oߢ_O<.*|uAobB,_ ~rrUBz_Ub𪪩C:o+>Z_@aCb...b,r.b+ZB/vv +.vU<*bZb:UObzr,>+OzUv+>vbb+.U+Uܣz/zrBaCuBC*a,bbovC:baB~@bb+>/~+zoA<֪@u,/Orhܢ_ ,:/CBUhAB,|o@/CubO+.>u Cbvb*<~|@~uOaz<|* h*b.ZZ/BuZou֣ZzAU/B:bZzz/,ov.<>bA_a@Z~|<,zb*u@AU*B>.bb>:Av,a>b/u:,v,~a,Z+.ovuO< C*Ozor:|Cu baC| ro:uUaau:Cvh/a*A*/ O+UhUbb>Uo/bb>vo@,b..bb,h~b@ubv@__:|oA.+Z U*<_b@,,BhOZ㢢vaavo|~vO ob_, vB+Zbr|+b>.<*_Ba~b,u_b*hOA>/,+rAbBhOb*/@/> hv.Z: AߢO𣪪o~vOO au>bBb,ߩC+A~C~_+BU z+~UA_UB~Oz@> O, bbaU/|@>arU+/*vBߩ|_/.:Orh.b /v|r>_ .a~>_zvv_o,O,Bbu@U+|U .o>@+oOAU _bv