Hello community,

here is the log from the commit of package adminer for openSUSE:Factory checked 
in at 2019-08-29 17:29:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/adminer (Old)
 and      /work/SRC/openSUSE:Factory/.adminer.new.7948 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "adminer"

Thu Aug 29 17:29:18 2019 rev:20 rq:727019 version:4.7.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/adminer/adminer.changes  2019-07-21 
11:33:52.508782055 +0200
+++ /work/SRC/openSUSE:Factory/.adminer.new.7948/adminer.changes        
2019-08-29 17:29:20.467250877 +0200
@@ -1,0 +2,33 @@
+Thu Aug 29 13:18:42 UTC 2019 - [email protected]
+
+- Update to version 4.7.3:
+  * Release 4.7.3
+  * Fix blocking of concurrent instances in PHP >7.2 (bug #703)
+  * setup Mongo authSource by ENV
+  * Reset table after changing DB
+  * Move <p> after a possible error
+  * Allow editing foreign keys pointing to tables in other database/schema 
(bug #694)
+  * MS SQL: Support foreign keys to other DB
+  * Do not display error for foreign keys to other databases
+  * Save bytes
+  * MSSQL: use textarea in edit form for Memo type (#357)
+  * MySQL: Support STORED GENERATED
+  * SQLite: Skip renaming when recreating table if not necessary
+  * SQLite: Preserve auto increment when recreating table
+  * SQLite: Allow setting auto increment for empty tables
+  * Remove extra space in alter table command
+  * SQLite: Handle error in altering table (bug #697)
+  * init mancave-hever design
+  * MySQL: Allow editing rows identified by negative floats (bug #695)
+  * added floating footer css for adminer-theme-mancave2-2.1.alpha
+  * Add a comment (bug #691)
+  * Use is_numeric()
+  * Support MariaDB virtual columns
+  * MySQL: Speed up displaying tables in large databases (bug #700)
+  * Support unquoted floats in export
+  * SQLite: Quote strings stored in integer columns in export (bug #696)
+  * MySQL: Skip editing generated columns
+  * Add AdminerLoginIp
+  * Close </ul> of logins
+
+-------------------------------------------------------------------

Old:
----
  adminer-4.7.2.tar.xz

New:
----
  adminer-4.7.3.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ adminer.spec ++++++
--- /var/tmp/diff_new_pack.IOrcv4/_old  2019-08-29 17:29:21.007250793 +0200
+++ /var/tmp/diff_new_pack.IOrcv4/_new  2019-08-29 17:29:21.011250792 +0200
@@ -22,7 +22,7 @@
 %bcond_with mongodb
 %bcond_with mssql
 Name:           adminer
-Version:        4.7.2
+Version:        4.7.3
 Release:        0
 Summary:        Database management in a single PHP file
 License:        GPL-2.0-only OR Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.IOrcv4/_old  2019-08-29 17:29:21.035250789 +0200
+++ /var/tmp/diff_new_pack.IOrcv4/_new  2019-08-29 17:29:21.035250789 +0200
@@ -2,7 +2,7 @@
   <service name="tar_scm" mode="disabled">
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
-    <param name="revision">refs/tags/v4.7.2</param>
+    <param name="revision">refs/tags/v4.7.3</param>
     <param name="url">https://github.com/vrana/adminer.git</param>
     <param name="scm">git</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.IOrcv4/_old  2019-08-29 17:29:21.059250785 +0200
+++ /var/tmp/diff_new_pack.IOrcv4/_new  2019-08-29 17:29:21.059250785 +0200
@@ -1,6 +1,6 @@
 <servicedata>
   <service name="tar_scm">
     <param name="url">https://github.com/vrana/adminer.git</param>
-    <param 
name="changesrevision">fd1691cb1d875cc23a7a51a0f890a6e932b6b304</param>
+    <param 
name="changesrevision">32955f780271467572024b1dc91728d959efc1b6</param>
   </service>
 </servicedata>

++++++ adminer-4.7.2.tar.xz -> adminer-4.7.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.7.2/adminer/drivers/mongo.inc.php 
new/adminer-4.7.3/adminer/drivers/mongo.inc.php
--- old/adminer-4.7.2/adminer/drivers/mongo.inc.php     2019-07-18 
08:56:37.000000000 +0200
+++ new/adminer-4.7.3/adminer/drivers/mongo.inc.php     2019-08-27 
17:58:21.000000000 +0200
@@ -618,6 +618,9 @@
                if ($db != "") {
                        $options["db"] = $db;
                }
+               if (($auth_source = getenv("MONGO_AUTH_SOURCE"))) {
+                       $options["authSource"] = $auth_source;
+               }
                try {
                        $connection->_link = 
$connection->connect("mongodb://$server", $options);
                        if ($password != "") {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.7.2/adminer/drivers/mssql.inc.php 
new/adminer-4.7.3/adminer/drivers/mssql.inc.php
--- old/adminer-4.7.2/adminer/drivers/mssql.inc.php     2019-07-18 
08:56:37.000000000 +0200
+++ new/adminer-4.7.3/adminer/drivers/mssql.inc.php     2019-08-27 
17:58:21.000000000 +0200
@@ -542,6 +542,7 @@
                $return = array();
                foreach (get_rows("EXEC sp_fkeys @fktable_name = " . q($table)) 
as $row) {
                        $foreign_key = &$return[$row["FK_NAME"]];
+                       $foreign_key["db"] = $row["PKTABLE_QUALIFIER"];
                        $foreign_key["table"] = $row["PKTABLE_NAME"];
                        $foreign_key["source"][] = $row["FKCOLUMN_NAME"];
                        $foreign_key["target"][] = $row["PKCOLUMN_NAME"];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.7.2/adminer/drivers/mysql.inc.php 
new/adminer-4.7.3/adminer/drivers/mysql.inc.php
--- old/adminer-4.7.2/adminer/drivers/mysql.inc.php     2019-07-18 
08:56:37.000000000 +0200
+++ new/adminer-4.7.3/adminer/drivers/mysql.inc.php     2019-08-27 
17:58:21.000000000 +0200
@@ -555,6 +555,8 @@
                                "privileges" => array_flip(preg_split('~, *~', 
$row["Privileges"])),
                                "comment" => $row["Comment"],
                                "primary" => ($row["Key"] == "PRI"),
+                               // 
https://mariadb.com/kb/en/library/show-columns/, 
https://github.com/vrana/adminer/pull/359#pullrequestreview-276677186
+                               "generated" => 
preg_match('~^(VIRTUAL|PERSISTENT|STORED)~', $row["Extra"]),
                        );
                }
                return $return;
@@ -582,18 +584,24 @@
        * @return array array($name => array("db" => , "ns" => , "table" => , 
"source" => array(), "target" => array(), "on_delete" => , "on_update" => ))
        */
        function foreign_keys($table) {
+               global $connection, $on_actions;
+               static $pattern = '(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';
                $return = array();
-               foreach (get_rows("SELECT * FROM 
information_schema.REFERENTIAL_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = DATABASE() 
AND TABLE_NAME = " . q($table)) as $row) {
-                       $columns = get_key_vals("SELECT COLUMN_NAME, 
REFERENCED_COLUMN_NAME FROM information_schema.KEY_COLUMN_USAGE WHERE 
CONSTRAINT_SCHEMA = DATABASE() AND CONSTRAINT_NAME = " . 
q($row["CONSTRAINT_NAME"]) . " ORDER BY ORDINAL_POSITION");
-                       $db = $row["UNIQUE_CONSTRAINT_SCHEMA"];
-                       $return[$row["CONSTRAINT_NAME"]] = array(
-                               "db" => ($db == DB ? "" : $db),
-                               "table" => $row["REFERENCED_TABLE_NAME"],
-                               "source" => array_keys($columns),
-                               "target" => array_values($columns),
-                               "on_delete" => $row["DELETE_RULE"],
-                               "on_update" => $row["UPDATE_RULE"],
-                       );
+               $create_table = $connection->result("SHOW CREATE TABLE " . 
table($table), 1);
+               if ($create_table) {
+                       preg_match_all("~CONSTRAINT ($pattern) FOREIGN KEY 
?\\(((?:$pattern,? ?)+)\\) REFERENCES ($pattern)(?:\\.($pattern))? 
\\(((?:$pattern,? ?)+)\\)(?: ON DELETE ($on_actions))?(?: ON UPDATE 
($on_actions))?~", $create_table, $matches, PREG_SET_ORDER);
+                       foreach ($matches as $match) {
+                               preg_match_all("~$pattern~", $match[2], 
$source);
+                               preg_match_all("~$pattern~", $match[5], 
$target);
+                               $return[idf_unescape($match[1])] = array(
+                                       "db" => idf_unescape($match[4] != "" ? 
$match[3] : $match[4]),
+                                       "table" => idf_unescape($match[4] != "" 
? $match[4] : $match[3]),
+                                       "source" => array_map('idf_unescape', 
$source[0]),
+                                       "target" => array_map('idf_unescape', 
$target[0]),
+                                       "on_delete" => ($match[6] ? $match[6] : 
"RESTRICT"),
+                                       "on_update" => ($match[7] ? $match[7] : 
"RESTRICT"),
+                               );
+                       }
                }
                return $return;
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.7.2/adminer/drivers/sqlite.inc.php 
new/adminer-4.7.3/adminer/drivers/sqlite.inc.php
--- old/adminer-4.7.2/adminer/drivers/sqlite.inc.php    2019-07-18 
08:56:37.000000000 +0200
+++ new/adminer-4.7.3/adminer/drivers/sqlite.inc.php    2019-08-27 
17:58:21.000000000 +0200
@@ -482,6 +482,7 @@
        }
 
        function alter_table($table, $name, $fields, $foreign, $comment, 
$engine, $collation, $auto_increment, $partitioning) {
+               global $connection;
                $use_all_fields = ($table == "" || $foreign);
                foreach ($fields as $field) {
                        if ($field[0] != "" || !$field[1] || $field[2]) {
@@ -508,16 +509,22 @@
                        if ($table != $name && !queries("ALTER TABLE " . 
table($table) . " RENAME TO " . table($name))) {
                                return false;
                        }
-               } elseif (!recreate_table($table, $name, $alter, $originals, 
$foreign)) {
+               } elseif (!recreate_table($table, $name, $alter, $originals, 
$foreign, $auto_increment)) {
                        return false;
                }
                if ($auto_increment) {
+                       queries("BEGIN");
                        queries("UPDATE sqlite_sequence SET seq = 
$auto_increment WHERE name = " . q($name)); // ignores error
+                       if (!$connection->affected_rows) {
+                               queries("INSERT INTO sqlite_sequence (name, 
seq) VALUES (" . q($name) . ", $auto_increment)");
+                       }
+                       queries("COMMIT");
                }
                return true;
        }
 
-       function recreate_table($table, $name, $fields, $originals, $foreign, 
$indexes = array()) {
+       function recreate_table($table, $name, $fields, $originals, $foreign, 
$auto_increment, $indexes = array()) {
+               global $connection;
                if ($table != "") {
                        if (!$fields) {
                                foreach (fields($table) as $key => $field) {
@@ -578,12 +585,13 @@
                        $fields[$key] = "  " . implode($field);
                }
                $fields = array_merge($fields, array_filter($foreign));
-               if (!queries("CREATE TABLE " . table($table != "" ? 
"adminer_$name" : $name) . " (\n" . implode(",\n", $fields) . "\n)")) {
+               $temp_name = ($table == $name ? "adminer_$name" : $name);
+               if (!queries("CREATE TABLE " . table($temp_name) . " (\n" . 
implode(",\n", $fields) . "\n)")) {
                        // implicit ROLLBACK to not overwrite $connection->error
                        return false;
                }
                if ($table != "") {
-                       if ($originals && !queries("INSERT INTO " . 
table("adminer_$name") . " (" . implode(", ", $originals) . ") SELECT " . 
implode(", ", array_map('idf_escape', array_keys($originals))) . " FROM " . 
table($table))) {
+                       if ($originals && !queries("INSERT INTO " . 
table($temp_name) . " (" . implode(", ", $originals) . ") SELECT " . implode(", 
", array_map('idf_escape', array_keys($originals))) . " FROM " . 
table($table))) {
                                return false;
                        }
                        $triggers = array();
@@ -591,12 +599,15 @@
                                $trigger = trigger($trigger_name);
                                $triggers[] = "CREATE TRIGGER " . 
idf_escape($trigger_name) . " " . implode(" ", $timing_event) . " ON " . 
table($name) . "\n$trigger[Statement]";
                        }
-                       if (!queries("DROP TABLE " . table($table))) { // drop 
before creating indexes and triggers to allow using old names
+                       $auto_increment = $auto_increment ? 0 : 
$connection->result("SELECT seq FROM sqlite_sequence WHERE name = " . 
q($table)); // if $auto_increment is set then it will be updated later
+                       if (!queries("DROP TABLE " . table($table)) // drop 
before creating indexes and triggers to allow using old names
+                               || ($table == $name && !queries("ALTER TABLE " 
. table($temp_name) . " RENAME TO " . table($name)))
+                               || !alter_indexes($name, $indexes)
+                       ) {
                                return false;
                        }
-                       queries("ALTER TABLE " . table("adminer_$name") . " 
RENAME TO " . table($name));
-                       if (!alter_indexes($name, $indexes)) {
-                               return false;
+                       if ($auto_increment) {
+                               queries("UPDATE sqlite_sequence SET seq = 
$auto_increment WHERE name = " . q($name)); // ignores error
                        }
                        foreach ($triggers as $trigger) {
                                if (!queries($trigger)) {
@@ -619,7 +630,7 @@
        function alter_indexes($table, $alter) {
                foreach ($alter as $primary) {
                        if ($primary[0] == "PRIMARY") {
-                               return recreate_table($table, $table, array(), 
array(), array(), $alter);
+                               return recreate_table($table, $table, array(), 
array(), array(), 0, $alter);
                        }
                }
                foreach (array_reverse($alter) as $val) {
@@ -675,7 +686,7 @@
                $return = array();
                $trigger_options = trigger_options();
                foreach (get_rows("SELECT * FROM sqlite_master WHERE type = 
'trigger' AND tbl_name = " . q($table)) as $row) {
-                       
preg_match('~^CREATE\s+TRIGGER\s*(?:[^`"\s]+|`[^`]*`|"[^"]*")+\s*(' . 
implode("|", $trigger_options["Timing"]) . ')\s*(.*)\s+ON\b~iU', $row["sql"], 
$match);
+                       
preg_match('~^CREATE\s+TRIGGER\s*(?:[^`"\s]+|`[^`]*`|"[^"]*")+\s*(' . 
implode("|", $trigger_options["Timing"]) . ')\s*(.*?)\s+ON\b~i', $row["sql"], 
$match);
                        $return[$row["name"]] = array($match[1], $match[2]);
                }
                return $return;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.7.2/adminer/edit.inc.php 
new/adminer-4.7.3/adminer/edit.inc.php
--- old/adminer-4.7.2/adminer/edit.inc.php      2019-07-18 08:56:37.000000000 
+0200
+++ new/adminer-4.7.3/adminer/edit.inc.php      2019-08-27 17:58:21.000000000 
+0200
@@ -4,7 +4,7 @@
 $where = (isset($_GET["select"]) ? ($_POST["check"] && count($_POST["check"]) 
== 1 ? where_check($_POST["check"][0], $fields) : "") : where($_GET, $fields));
 $update = (isset($_GET["select"]) ? $_POST["edit"] : $where);
 foreach ($fields as $name => $field) {
-       if (!isset($field["privileges"][$update ? "update" : "insert"]) || 
$adminer->fieldName($field) == "") {
+       if (!isset($field["privileges"][$update ? "update" : "insert"]) || 
$adminer->fieldName($field) == "" || $field["generated"]) {
                unset($fields[$name]);
        }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.7.2/adminer/foreign.inc.php 
new/adminer-4.7.3/adminer/foreign.inc.php
--- old/adminer-4.7.2/adminer/foreign.inc.php   2019-07-18 08:56:37.000000000 
+0200
+++ new/adminer-4.7.3/adminer/foreign.inc.php   2019-08-27 17:58:21.000000000 
+0200
@@ -48,17 +48,33 @@
        $row["table"] = $TABLE;
        $row["source"] = array("");
 }
+?>
 
+<form action="" method="post">
+<?php
 $source = array_keys(fields($TABLE)); //! no text and blob
-$target = ($TABLE === $row["table"] ? $source : 
array_keys(fields($row["table"])));
+if ($row["db"] != "") {
+       $connection->select_db($row["db"]);
+}
+if ($row["ns"] != "") {
+       set_schema($row["ns"]);
+}
 $referencable = array_keys(array_filter(table_status('', true), 'fk_support'));
+$target = ($TABLE === $row["table"] ? $source : 
array_keys(fields(in_array($row["table"], $referencable) ? $row["table"] : 
reset($referencable))));
+$onchange = "this.form['change-js'].value = '1'; this.form.submit();";
+echo "<p>" . lang('Target table') . ": " . html_select("table", $referencable, 
$row["table"], $onchange) . "\n";
+if ($jush == "pgsql") {
+       echo lang('Schema') . ": " . html_select("ns", $adminer->schemas(), 
$row["ns"] != "" ? $row["ns"] : $_GET["ns"], $onchange);
+} elseif ($jush != "sqlite") {
+       $dbs = array();
+       foreach ($adminer->databases() as $db) {
+               if (!information_schema($db)) {
+                       $dbs[] = $db;
+               }
+       }
+       echo lang('DB') . ": " . html_select("db", $dbs, $row["db"] != "" ? 
$row["db"] : $_GET["db"], $onchange);
+}
 ?>
-
-<form action="" method="post">
-<p>
-<?php if ($row["db"] == "" && $row["ns"] == "") { ?>
-<?php echo lang('Target table'); ?>:
-<?php echo html_select("table", $referencable, $row["table"], 
"this.form['change-js'].value = '1'; this.form.submit();"); ?>
 <input type="hidden" name="change-js" value="">
 <noscript><p><input type="submit" name="change" value="<?php echo 
lang('Change'); ?>"></noscript>
 <table cellspacing="0">
@@ -86,7 +102,6 @@
 <p>
 <input type="submit" value="<?php echo lang('Save'); ?>">
 <noscript><p><input type="submit" name="add" value="<?php echo lang('Add 
column'); ?>"></noscript>
-<?php } ?>
 <?php if ($name != "") { ?><input type="submit" name="drop" value="<?php echo 
lang('Drop'); ?>"><?php echo confirm(lang('Drop %s?', $name)); ?><?php } ?>
 <input type="hidden" name="token" value="<?php echo $token; ?>">
 </form>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.7.2/adminer/include/adminer.inc.php 
new/adminer-4.7.3/adminer/include/adminer.inc.php
--- old/adminer-4.7.2/adminer/include/adminer.inc.php   2019-07-18 
08:56:37.000000000 +0200
+++ new/adminer-4.7.3/adminer/include/adminer.inc.php   2019-08-27 
17:58:21.000000000 +0200
@@ -845,7 +845,7 @@
                                                foreach ($row as $key => $val) {
                                                        $field = $fields[$key];
                                                        $row[$key] = ($val !== 
null
-                                                               ? 
unconvert_field($field, preg_match(number_type(), $field["type"]) && $val != '' 
&& !preg_match('~\[~', $field["full_type"]) ? $val : q(($val === false ? 0 : 
$val)))
+                                                               ? 
unconvert_field($field, preg_match(number_type(), $field["type"]) && 
!preg_match('~\[~', $field["full_type"]) && is_numeric($val) ? $val : q(($val 
=== false ? 0 : $val)))
                                                                : "NULL"
                                                        );
                                                }
@@ -927,23 +927,22 @@
 </h1>
 <?php
                if ($missing == "auth") {
-                       $first = true;
+                       $output = "";
                        foreach ((array) $_SESSION["pwds"] as $vendor => 
$servers) {
                                foreach ($servers as $server => $usernames) {
                                        foreach ($usernames as $username => 
$password) {
                                                if ($password !== null) {
-                                                       if ($first) {
-                                                               echo "<ul 
id='logins'>" . script("mixin(qs('#logins'), {onmouseover: menuOver, 
onmouseout: menuOut});");
-                                                               $first = false;
-                                                       }
                                                        $dbs = 
$_SESSION["db"][$vendor][$server][$username];
                                                        foreach (($dbs ? 
array_keys($dbs) : array("")) as $db) {
-                                                               echo "<li><a 
href='" . h(auth_url($vendor, $server, $username, $db)) . 
"'>($drivers[$vendor]) " . h($username . ($server != "" ? "@" . 
$this->serverName($server) : "") . ($db != "" ? " - $db" : "")) . "</a>\n";
+                                                               $output .= 
"<li><a href='" . h(auth_url($vendor, $server, $username, $db)) . 
"'>($drivers[$vendor]) " . h($username . ($server != "" ? "@" . 
$this->serverName($server) : "") . ($db != "" ? " - $db" : "")) . "</a>\n";
                                                        }
                                                }
                                        }
                                }
                        }
+                       if ($output) {
+                               echo "<ul id='logins'>\n$output</ul>\n" . 
script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");
+                       }
                } else {
                        if ($_GET["ns"] !== "" && !$missing && DB != "") {
                                $connection->select_db(DB);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.7.2/adminer/include/editing.inc.php 
new/adminer-4.7.3/adminer/include/editing.inc.php
--- old/adminer-4.7.2/adminer/include/editing.inc.php   2019-07-18 
08:56:37.000000000 +0200
+++ new/adminer-4.7.3/adminer/include/editing.inc.php   2019-08-27 
17:58:21.000000000 +0200
@@ -470,12 +470,17 @@
 }
 
 /** Format foreign key to use in SQL query
-* @param array ("table" => string, "source" => array, "target" => array, 
"on_delete" => one of $on_actions, "on_update" => one of $on_actions)
+* @param array ("db" => string, "ns" => string, "table" => string, "source" => 
array, "target" => array, "on_delete" => one of $on_actions, "on_update" => one 
of $on_actions)
 * @return string
 */
 function format_foreign_key($foreign_key) {
        global $on_actions;
-       return " FOREIGN KEY (" . implode(", ", array_map('idf_escape', 
$foreign_key["source"])) . ") REFERENCES " . table($foreign_key["table"])
+       $db = $foreign_key["db"];
+       $ns = $foreign_key["ns"];
+       return " FOREIGN KEY (" . implode(", ", array_map('idf_escape', 
$foreign_key["source"])) . ") REFERENCES "
+               . ($db != "" && $db != $_GET["db"] ? idf_escape($db) . "." : "")
+               . ($ns != "" && $ns != $_GET["ns"] ? idf_escape($ns) . "." : "")
+               . table($foreign_key["table"])
                . " (" . implode(", ", array_map('idf_escape', 
$foreign_key["target"])) . ")" //! reuse $name - check in older MySQL versions
                . (preg_match("~^($on_actions)\$~", $foreign_key["on_delete"]) 
? " ON DELETE $foreign_key[on_delete]" : "")
                . (preg_match("~^($on_actions)\$~", $foreign_key["on_update"]) 
? " ON UPDATE $foreign_key[on_update]" : "")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.7.2/adminer/include/functions.inc.php 
new/adminer-4.7.3/adminer/include/functions.inc.php
--- old/adminer-4.7.2/adminer/include/functions.inc.php 2019-07-18 
08:56:37.000000000 +0200
+++ new/adminer-4.7.3/adminer/include/functions.inc.php 2019-08-27 
17:58:21.000000000 +0200
@@ -479,10 +479,10 @@
                $key = bracket_escape($key, 1); // 1 - back
                $column = escape_key($key);
                $return[] = $column
-                       . ($jush == "sql" && preg_match('~^[0-9]*\.[0-9]*$~', 
$val) ? " LIKE " . q(addcslashes($val, "%_\\"))
-                               : ($jush == "mssql" ? " LIKE " . 
q(preg_replace('~[_%[]~', '[\0]', $val))
+                       . ($jush == "sql" && is_numeric($val) && 
preg_match('~\.~', $val) ? " LIKE " . q($val) // LIKE because of floats but 
slow with ints
+                               : ($jush == "mssql" ? " LIKE " . 
q(preg_replace('~[_%[]~', '[\0]', $val)) // LIKE because of text
                                : " = " . unconvert_field($fields[$key], 
q($val))
-                       )) // LIKE because of floats but slow with ints, in MS 
SQL because of text
+                       ))
                ; //! enum and set
                if ($jush == "sql" && preg_match('~char|text~', 
$fields[$key]["type"]) && preg_match("~[^ -@]~", $val)) { // not just [a-z] to 
catch non-ASCII characters
                        $return[] = "$column = " . q($val) . " COLLATE " . 
charset($connection) . "_bin";
@@ -566,8 +566,12 @@
 * @return null
 */
 function stop_session($force = false) {
-       if (!ini_bool("session.use_cookies") || ($force && 
@ini_set("session.use_cookies", false) !== false)) { // @ - may be disabled
+       $use_cookies = ini_bool("session.use_cookies");
+       if (!$use_cookies || $force) {
                session_write_close(); // improves concurrency if a user opens 
several pages at once, may be restarted later
+               if ($use_cookies && @ini_set("session.use_cookies", false) === 
false) { // @ - may be disabled
+                       session_start();
+               }
        }
 }
 
@@ -960,7 +964,7 @@
                        }
                } elseif (preg_match('~blob|bytea|raw|file~', $field["type"]) 
&& ini_bool("file_uploads")) {
                        echo "<input type='file' name='fields-$name'>";
-               } elseif (($text = preg_match('~text|lob~', $field["type"])) || 
preg_match("~\n~", $value)) {
+               } elseif (($text = preg_match('~text|lob|memo~i', 
$field["type"])) || preg_match("~\n~", $value)) {
                        if ($text && $jush != "sqlite") {
                                $attrs .= " cols='50' rows='12'";
                        } else {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.7.2/adminer/include/version.inc.php 
new/adminer-4.7.3/adminer/include/version.inc.php
--- old/adminer-4.7.2/adminer/include/version.inc.php   2019-07-18 
08:56:37.000000000 +0200
+++ new/adminer-4.7.3/adminer/include/version.inc.php   2019-08-27 
17:58:21.000000000 +0200
@@ -1,2 +1,2 @@
 <?php
-$VERSION = "4.7.2";
+$VERSION = "4.7.3";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.7.2/changes.txt 
new/adminer-4.7.3/changes.txt
--- old/adminer-4.7.2/changes.txt       2019-07-18 08:56:37.000000000 +0200
+++ new/adminer-4.7.3/changes.txt       2019-08-27 17:58:21.000000000 +0200
@@ -1,10 +1,23 @@
+Adminer 4.7.3 (released 2019-08-27):
+Allow editing foreign keys pointing to tables in other database/schema (bug 
#694)
+Fix blocking of concurrent instances in PHP >7.2 (bug #703)
+MySQL: Speed up displaying tables in large databases (bug #700, regression 
from 4.7.2)
+MySQL: Allow editing rows identified by negative floats (bug #695)
+MySQL: Skip editing generated columns
+SQLite: Quote strings stored in integer columns in export (bug #696)
+SQLite: Handle error in altering table (bug #697)
+SQLite: Allow setting auto increment for empty tables
+SQLite: Preserve auto increment when recreating table
+MS SQL: Support foreign keys to other DB
+MongoDB: Allow setting authSource from environment variable 
+
 Adminer 4.7.2 (released 2019-07-18):
 Do not attempt logging in without password (bug #676)
 Stretch footer over the whole table width (bug #624)
 Allow overwriting tables when copying them
 Fix displaying SQL command after Save and continue edit
 Cache busting for adminer.css
-MySQL: Fix displaying multi-columns foreign keys (bug #675)
+MySQL: Fix displaying multi-columns foreign keys (bug #675, regression from 
4.7.0)
 MySQL: Fix creating users and changing password in MySQL 8 (bug #663)
 MySQL: Pass SRID to GeomFromText
 PostgreSQL: Fix setting column comments on new table
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.7.2/designs/mancave/adminer.css 
new/adminer-4.7.3/designs/mancave/adminer.css
--- old/adminer-4.7.2/designs/mancave/adminer.css       2019-07-18 
08:56:37.000000000 +0200
+++ new/adminer-4.7.3/designs/mancave/adminer.css       2019-08-27 
17:58:21.000000000 +0200
@@ -1,6 +1,6 @@
 /*
   
-  VERSION: adminer-theme-mancave2-2.0.alpha
+  VERSION: adminer-theme-mancave2-2.1.alpha
   
   AUTHORS: [email protected], [email protected] //NOTE: CREDITS below 
that we stole from ;-)
   
@@ -244,6 +244,8 @@
        line-height: 70px;
        color: #555;
        background: none;
+       position: relative;
+       top: 12px;
 }
 
 h2{
@@ -717,6 +719,10 @@
        color: #999;
 }
 
+.footer legend {
+       background-color: #49526D;
+}
+
 /* menu
    ----------------------------------------------------------------------- */
 
@@ -751,7 +757,7 @@
 
 .version {
   color: #555;
-  font-size: inherit;
+  font-size: 18px;
 }
 
 /* db select */
@@ -1196,3 +1202,13 @@
 
 .pages {background:#817F5A;}
 
+.footer, .footer>div {
+       background-color: #49526D;
+       opacity: .9;
+}
+.footer {
+       border-image: none;
+       padding: 20px 12px 0px;
+       border: 1px #BBB dashed;
+       margin: 12px;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.7.2/designs/mancave-hever/adminer.css 
new/adminer-4.7.3/designs/mancave-hever/adminer.css
--- old/adminer-4.7.2/designs/mancave-hever/adminer.css 1970-01-01 
01:00:00.000000000 +0100
+++ new/adminer-4.7.3/designs/mancave-hever/adminer.css 2019-08-27 
17:58:21.000000000 +0200
@@ -0,0 +1,202 @@
+/*
+  VERSION: mancave-hever1-27.1.alpha
+*/ 
+
+/* Merged and fixed version of Hever's and Frank Bueltge's skins by Oguz 
KONYA. I liked Bueltge's skin but I wanted the icons, too.
+  So I merged them into one file, fixed a couple of problems, added some 
paddings here and there, voila! */
+
+/* Redesigned (iconized) by Hever [hev.cz] - June 2009, ver 0.1.3 */
+/** 
+ *  * Alternative style for Adminer by Frank Bueltge
+ *   * @link http://bueltge.de/
+ *    */
+ 
+/* Added icons */
+/* IE doesn't support inline images - using some hack that eliminate IE*/
+
+html/*\*/>/*/*/body .error {background:#FFEEEE 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIsSURBVDjLpVNLSJQBEP7+h6uu62vLVAJDW1KQTMrINQ1vPQzq1GOpa9EppGOHLh0kCEKL7JBEhVCHihAsESyJiE4FWShGRmauu7KYiv6Pma+DGoFrBQ7MzGFmPr5vmDFIYj1mr1WYfrHPovA9VVOqbC7e/1rS9ZlrAVDYHig5WB0oPtBI0TNrUiC5yhP9jeF4X8NPcWfopoY48XT39PjjXeF0vWkZqOjd7LJYrmGasHPCCJbHwhS9/F8M4s8baid764Xi0Ilfp5voorpJfn2wwx/r3l77TwZUvR+qajXVn8PnvocYfXYH6k2ioOaCpaIdf11ivDcayyiMVudsOYqFb60gARJYHG9DbqQFmSVNjaO3K2NpAeK90ZCqtgcrjkP9aUCXp0moetDFEeRXnYCKXhm+uTW0CkBFu4JlxzZkFlbASz4CQGQVBFeEwZm8geyiMuRVntzsL3oXV+YMkvjRsydC1U+lhwZsWXgHb+oWVAEzIwvzyVlk5igsi7DymmHlHsFQR50rjl+981Jy1Fw6Gu0ObTtnU+cgs28AKgDiy+Awpj5OACBAhZ/qh2HOo6i+NeA73jUAML4/qWux8mt6NjW1w599CS9xb0mSEqQBEDAtwqALUmBaG5FV3oYPnTHMjAwetlWksyByaukxQg2wQ9FlccaK/OXA3/uAEUDp3rNIDQ1ctSk6kHh1/jRFoaL4M4snEMeD73gQx4M4PsT1IZ5AfYH68tZY7zv/ApRMY9mnuVMvAAAAAElFTkSuQmCC")
 no-repeat scroll 0.8em center; padding-left:38px;}
+html/*\*/>/*/*/body .message, #menu p.message {background:#49526D 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKfSURBVDjLpZPrS1NhHMf9O3bOdmwDCWREIYKEUHsVJBI7mg3FvCxL09290jZj2EyLMnJexkgpLbPUanNOberU5taUMnHZUULMvelCtWF0sW/n7MVMEiN64AsPD8/n83uucQDi/id/DBT4Dolypw/qsz0pTMbj/WHpiDgsdSUyUmeiPt2+V7SrIM+bSss8ySGdR4abQQv6lrui6VxsRonrGCS9VEjSQ9E7CtiqdOZ4UuTqnBHO1X7YXl6Daa4yGq7vWO1D40wVDtj4kWQbn94myPGkCDPdSesczE2sCZShwl8CzcwZ6NiUs6n2nYX99T1cnKqA2EKui6+TwphA5k4yqMayopU5mANV3lNQTBdCMVUA9VQh3GuDMHiVcLCS3J4jSLhCGmKCjBEx0xlshjXYhApfMZRP5CyYD+UkG08+xt+4wLVQZA1tzxthm2tEfD3JxARH7QkbD1ZuozaggdZbxK5kAIsf5qGaKMTY2lAU/rH5HW3PLsEwUYy+YCcERmIjJpDcpzb6l7th9KtQ69fi09ePUej9l7cx2DJbD7UrG3r3afQHOyCo+V3QQzE35pvQvnAZukk5zL5qRL59jsKbPzdheXoBZc4saFhBS6AO7V4zqCpiawuptwQG+UAa7Ct3UT0hh9p9EnXT5Vh6t4C22QaUDh6HwnECOmcO7K+6kW49DKqS2DrEZCtfuI+9GrNHg4fMHVSO5kE7nAPVkAxKBxcOzsajpS4Yh4ohUPPWKTUh3PaQEptIOr6BiJjcZXCwktaAGfrRIpwblqOV3YKdhfXOIvBLeREWpnd8ynsaSJoyESFphwTtfjN6X1jRO2+FxWtCWksqBApeiFIR9K6fiTpPiigDoadqCEag5YUFKl6Yrciw0VOlhOivv/Ff8wtn0KzlebrUYwAAAABJRU5ErkJggg==")
 no-repeat scroll 0.8em center; padding-left:38px;}
+
+html/*\*/>/*/*/body a[href$="sql="] 
{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHGSURBVHjaxFPNLkNREP5aB6WhaKLSVtKFiIUqK1sLT2DhTXgDL2FlxSOw8FOLRiyQWhDRiKSEhKQJou49P9fMnFsLsevCJCcz594z3/m+mTmJKIrQjSXRpXUNoGqbm39qcMbAkbyIvbVwYQhD3tIeWsOQ1+QVH86Xyz+JXJPIOb9iAI4ZpOMd/yN/vb/vAdiC93cP0El2dNA6z4RjYyW2MaPU0BB0u+0BOGGsVML49LSA3J+cYDCblb0l6jeHBwg/26isrOB0a8uzYBlBgKShgD8M53J4aTTQqFaRSCYl+WxnG83zcxTmKpKg+vtFu9W8NDQDMCXW+VivYyAzjKmlJahUSpiYUKPVbCKTz0sCGzOyOpBLzdcXlCMdDDIxO4vboyoyhQIKlYocLi0uIjczIyBcA98dYqx9NywxUEyDi/P29IyF1VU5dFeroS+dRnF+Xvajk5N0ayjx8tq6+FuSyiwUF4LRHi/reLg4o9ijs6xG9RjWGowUi/h4fcXexoa0L4oc0mNZuVgFzID09VKBnFXoUb7Pnb5zQrvVovpkZC4QzwfiN6QM1eBqdxcmnq6IAA395Mlz8eTxTZwg/pcl/v01fgswAESqYZbsIsnLAAAAAElFTkSuQmCC")
 no-repeat scroll left bottom; padding-left:22px;}
+html/*\*/>/*/*/body a[href*="dump="] 
{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJrSURBVHjajFPPaxNREP72V8ymTbGQbRB/IT0otdV6CcWTgqCoUFQQEXoSEQ/+AypK755E1KsULIpGgw1F9KC22lgstFgQLdoWhSab2PRHTNrs7nvObGhSsRa/ZXjv7c6b+eabWUVKiX9AJQuRRci2k+260N91VwgJIQSEV1mVnjf5axTjvCfFFn7hCcBlBzJNVRA0gAZTQ1ODgXC4gDtjV9AW2QNFUTA0/Q66kPLSqVg4shYF8vEdKQ7mln+i+/VVRM0oFpbmETLq/SS6J4R/OfHtHmV24XouHFo94REDAyE9hMZgBMkvT2GZFqxQE6by0/g4P74SoKLB2ZZzWA8ffqRQLBcxNTuFjRTwxpmbfad7Oo/rHhdN6B20/6JvaKyBCnODhqNbL+PRxHXUGXWINV5kl9TDrkQct/pnZKHkyPsDGcl4MJiWq5Ecsf84LxTL8nbyK2+Pke3XHWJAQkLXgMdDNjRNRTxlQ6UmakRD0vN8NEd7EBsFO6Impu1fzGCCrOSXwCro5HEiZiExnEVnrKlaypNhG4fba02aTC8ik1/ibZrM9RlIkkGnjH0jWWJQWRn8TpLI8fcZ6MSA1WrZFERx2eHPTEPqjksBqASDLh7ZZ+HlWA6H9tYyvhjNomNnI8Km7p8/f5+HGdB46/lJeOoYPHV8mbGy8gA59HngU74asNkKYKVzlQCuW9GA6B5si+DVeA4HWmsM4qksTnZY1TMz0NRauysaUAmt2+oxM1tCM6k8mS74WXjIdm8O+JdWg36oKgXqgnzb3TvRXvZEneN6YPNIFw7MY70W5haXnlUHbp3f+b/wW4ABAAtWTLcKdqLcAAAAAElFTkSuQmCC")
 no-repeat scroll 2px bottom; padding-left:22px;}
+html/*\*/>/*/*/body a[href$="dump="] 
{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHzSURBVHjajJPPS+NQEMcnaaxpdWsp6Q8vtWtdkIo9+B948SjIgruCUg8F/wGP/glePe5JcBehwl4qePGm0J6KQj30UBHEzaFLUromTfPizJMnrxhhB4bJvDfzme97SZQgCOB/be98J2AsAMYYMP81KjKg0WhMYljHtS30RSz4gjkGdot559F7OLt8vvi1bJRBURS4vr8CTTQ3m80SFv1MpVJlwzBA13XuNGUwGKyY1p+Vk9aPzWw8C7ZjQXximu+9ATA5KhQK5Uwmw+nCIpEIJBIJOLjah3Q8w7379x5urFsOUEUhTl/C6R+ef35mARzPhW6vC+q/iHvyvaYwXwIQje6j1+tBv98H13VhNBpxxyPA5tw2TI50MPQsrMbXbOo53fmtaJIC7iSZAMPhkOe+73MA5Ruz3yCfz9NlvykLBUSjUR41TQPP8zhE7JNSyj8E0CbJpkiXKRoIRFABeQcQd0DFwlVV5evUTFBZRSiATEwnp4lCAa0LI2AoQC4WimRl4qgyYOw12rYNyWSSX6L4mKiBnukDK5VKYJrmmBpZwW6r1TotFotTuVyOQwQgnU7zV9npdKDdbj+hgnXRN/Yz1ev1zwg6QP+KU2disRiXblkWOI7zhJOPce+wWq2aoQDZarXaJ2xYQGfod5VKxQ2rexFgAI4OiAKxKkWeAAAAAElFTkSuQmCC")
 no-repeat scroll 2px bottom; padding-left:22px;}
+
+html/*\*/>/*/*/body select[name="db"] {background:white 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEYSURBVBgZBcHPio5hGAfg6/2+R980k6wmJgsJ5U/ZOAqbSc2GnXOwUg7BESgLUeIQ1GSjLFnMwsKGGg1qxJRmPM97/1zXFAAAAEADdlfZzr26miup2svnelq7d2aYgt3rebl585wN6+K3I1/9fJe7O/uIePP2SypJkiRJ0vMhr55FLCA3zgIAOK9uQ4MS361ZOSX+OrTvkgINSjS/HIvhjxNNFGgQsbSmabohKDNoUGLohsls6BaiQIMSs2FYmnXdUsygQYmumy3Nhi6igwalDEOJEjPKP7CA2aFNK8Bkyy3fdNCg7r9/fW3jgpVJbDmy5+PB2IYp4MXFelQ7izPrhkPHB+P5/PjhD5gCgCenx+VR/dODEwD+A3T7nqbxwf1HAAAAAElFTkSuQmCC")
 no-repeat scroll left bottom; padding-left:16px; background: #49526D;}
+html/*\*/>/*/*/body select[name="db"] option {padding-left:18px;}
+
+html/*\*/>/*/*/body #menu li a[href*="&select="] 
{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHISURBVDjLpVPNK0RRFP+9D98syMwUspHkm9I0YkFZWBFKkZ0s7a3Ewh+ilChK7FgoZCJFKYlYKB8zk2+Z5t0P577He29kQU7dd+6575zf+d1zztWklPiPmOozt/U4SThjXIoyIQS4AJjSXO0lGGlvcXAm6Vzsz4xUhm0AIeX4QLig+C+ZpxbOG1wGhGYHr1zMUmZGWRgs0ha3PE1nX/8mWmdgWTzLB+DUYbhm9FfZ35IEyrhXA3VXJfPbsV8B9LQUIeUHYJ8ASobag1jcucNgW8g9W4reYSDi2YnnZDoDiwCokDANct6NwTB0LEdj0HRA/wxa2SN25JNBEdWluUhZ366gqmAaGvrCAXKOozccTGPgt8+vn8GYSGcgyTYp3dpBnBg42nbQPRBTo5bTvqYkmxL6AQhNTWQGBXY3B7BxlEBXozcW64dxRKoKUZBju+P06gl5WaaviMJBM3TNDlbypemIZgHYOnlwASsCmW7nHADGnBoQ3c76YmweJ9BR5zFYjsbRHwm4tmJg6PhWA7pCXXk+bu7fURHKweXtq/sWaksz7SC/CCGFrwtyZ3r+rCnFRZ7qr1qc6mLZj4f9OEyPL8lVpbX/PucPv5QPKHB1TdEAAAAASUVORK5CYII=")
 no-repeat scroll left bottom; clear:left; display:block; float:left; 
height:16px; margin-right:8px; padding-top:1px; overflow:hidden; 
padding-left:16px; width:0; text-decoration:none;}
+
+html/*\*/>/*/*/body #menu li a[href*="&table="], html/*\*/>/*/*/body #menu li 
a[href*="&view="] {clear:right; margin-left:24px; display:block; height:17px; 
padding-bottom:1px; text-decoration:none;}
+
+html/*\*/>/*/*/body #menu p#tables br {display:none;}
+
+html/*\*/>/*/*/body a[href*="&create="] 
{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJ6SURBVDjLpZNZSNRRGMV//2XGsjFrMg2z0so2K21xIFpepYUiAsGIICLffI8eWiBBeg3qQV+KwBYKLB8qpHUmrahcKLc0QsxldNSxdPz/79LD1ChBUXTh8sG93POdc75zDa01/7NsgGvPR09rzQmpVZZSCqlAKIWUCqk0QqoZWyKFRir1uvxIbsAGUFqXHQqkpP1L57M3Pm5MMJBKpQHUdF9BKIGQAlcJXOlOVykSdye3leO6MmkGQNyHw+uO/1X3bzGBK+S0B1IqAKqDg3986HeCZPffwvJtoNT7lOZLvUdtAPEDAKBkRzo3QwMUb89InN1uGGD3spdE214xe8MRUnM2MfppNW0Pqy7YAK5UKK2xLbhdP4hlmdxpGMQwwQT8ziNiI534c7cT6WrFazikzF2Eb8HS1IQEDdiWwcHAQmpehTkQSAcgNvSMiYFW5uUUMdV3HW+ywefGNqITJsbUUL75k4FWYJtQ+yaMZcXrk1ANk/33mbdiD7EvlRieETy+FJLkMFcjRRSW3emIAwiF1hqPBfu2LGSWbbA1uZ41SfWkrtxPrPcypsfFiWYzFGzGKTjFV28WEJeIUHETLdOgrmkI1VdHpCdEet5enP4qLK9mKrqMgedv6cyrAP+qxOTiUxAi7oEJi8frELoFoTLpa7nI/HQvscgSRt+0kV1SSW7qYtp7xrBMphm4Mi5h/VIfTcEq1u0oJaknSEdNiMYHET7UvcMpPEN31Ed7zxgASmk1I0g6dK66s8CRak5mVxjnfS05+TsZCw/T9baTx1nnGb47DrQksjE6HrsHYPz6nYt3+Sc3L8+wA2tz0J6pF5OD4WP7Kpq7f5fO79DfSxjdtCtDAAAAAElFTkSuQmCC")
 no-repeat scroll 2px bottom; padding-left:22px;}
+html/*\*/>/*/*/body a[href$="&create="] 
{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIpSURBVDjLpZNPSFRRFMZ/749/Kt3IqFTSRoSMmrGIYTTbpEJtjBCCok1Em9JVG1dRC8FFEES5aGFEgRRZWq1iLKKxBiNqLDcltQgmHR9hY6LOu+feFm+YGVsZXbh8nHO53/nud8+xjDH8z3IB7r5avGgMZ8XoBq01okFpjYhGtEGJLtmCKINo/XbgVFPUBdDG9PVEq0P/UvnSvdlwQYFoHQIY/3obpRVKFL5W+OIXUVThrL91AN+XihKCwIeTu85sqPryqsJXUvRARAMwkshsiKB7fw25UgKVJwA40V7H/cl5jh+oL+RGk/P0xIqxl11dr8AXjTYG14HRNxkcx+ZhMoNlg52/ND6VAWMoc6F5+2Zy/l9PMIDrWByL1jI+tcDRaN06BaXxbDqLUnq9AqPBteHpuwUcJ0AIcgBXH93h+/wEyyuLrPk5cmv7gNY8gdIYYyhz4PDeWuIpj85IsS2ujQ2zJAk6DkZpqGnixcwYyU+PifUOX7Eh6DoAx7aIpzwA4imPeMrj+bTH+88PaNkZQWwhsrULsXxie9oAzgcESgUe2NAZCeE6AXZGQhwKh/Cyc5RZVXQ39wFwoeMmjXVhgMqiB8awe0cVP36u0Fi/iW9zvwuzkF3+xUz6Nal0gv6uWww+O02lUwGwmv8FM3l55EtLTvQWXwm+EkRpfNEoUZRXHCE5PUFbuJ0nH4cot1wSH14C3LA2Os6x3m2DwDmgGlgChpLX0/1/AIu8MA7WsWBMAAAAAElFTkSuQmCC")
 no-repeat scroll left bottom; padding-left:22px;}
+
+html/*\*/>/*/*/body #content p a {padding-left:2px;}
+html/*\*/>/*/*/body #content p a[href*="&create="] {padding-left:22px;}
+html/*\*/>/*/*/body #content p a[href*="&select="] 
{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHISURBVDjLpVPNK0RRFP+9D98syMwUspHkm9I0YkFZWBFKkZ0s7a3Ewh+ilChK7FgoZCJFKYlYKB8zk2+Z5t0P577He29kQU7dd+6575zf+d1zztWklPiPmOozt/U4SThjXIoyIQS4AJjSXO0lGGlvcXAm6Vzsz4xUhm0AIeX4QLig+C+ZpxbOG1wGhGYHr1zMUmZGWRgs0ha3PE1nX/8mWmdgWTzLB+DUYbhm9FfZ35IEyrhXA3VXJfPbsV8B9LQUIeUHYJ8ASobag1jcucNgW8g9W4reYSDi2YnnZDoDiwCokDANct6NwTB0LEdj0HRA/wxa2SN25JNBEdWluUhZ366gqmAaGvrCAXKOozccTGPgt8+vn8GYSGcgyTYp3dpBnBg42nbQPRBTo5bTvqYkmxL6AQhNTWQGBXY3B7BxlEBXozcW64dxRKoKUZBju+P06gl5WaaviMJBM3TNDlbypemIZgHYOnlwASsCmW7nHADGnBoQ3c76YmweJ9BR5zFYjsbRHwm4tmJg6PhWA7pCXXk+bu7fURHKweXtq/sWaksz7SC/CCGFrwtyZ3r+rCnFRZ7qr1qc6mLZj4f9OEyPL8lVpbX/PucPv5QPKHB1TdEAAAAASUVORK5CYII=")
 no-repeat scroll 2px bottom; padding-left:22px;}
+html/*\*/>/*/*/body #content p a[href*="&page="] {background-image:none; 
padding-left:0;}
+html/*\*/>/*/*/body #content p a[href$="?database="] 
{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIkSURBVDjLpVNNiFJRFP7eU1E0KSLTMpAwYSxyaidDtChm0WYQ3NSutv2s2kwwm2igNgMtooUQEQhhA9GqhSDTQsZZFDbNDBgVg5bSw9J8rzFF33udc+HGg0ladOHj3nPe+b7zc99VbNvG/yy30yiVSl4SnCNcsixrivYEgY7WJu0faX9EKGUyGVNyFFkBkY/T+WkoFEpFIhEEAgH4/X7w916vB8Mw0Gg00G63y+S7mM1mm4LIAYxisbhSr9c5nT1pjUYju1qt2oVC4YnkqbIUMk6Ew+F/9hyNRkFJLuyaATmFoqZp8Pl88Hq98Hg8wtfv99HpdNBsNhGPx0XsRAG3241ut4vBYCDs8XgMXdcxHA7FN/b9VUD25HK5RAUczKC+hYgcNpNN05xcAQdLkqIoIlj6VFWdXIEUkAQGV8M2k2vaG3z6sYGfVR39XzsHlm/dX3h5d31xlwAHM5goBd5+LuO75z3OnU3jyP4EVrZeKGub2p309cP7VKcAQ2Znoiz3deMVTk1Nw1RNTB+ahamMkD45w7RrfwSYwFdFf6K4Quf6pmvwKHswl7wh7Jvnc4gfTPHR52zhcqVSeZZMJgOxWEyI8BC5CmOnh63WKtZbZczPPsa94hX4XCLJQHG+xnw+f5SEFghZmvhefgvcTqn2HN3gBmZSZ5CInMaHr1Wsvivjy3ZvSZn0nHO5XJDIxwgWDbW2vL10m9xXCUGCQXi49qA1/xvyq6BCh7yZeQAAAABJRU5ErkJggg==")
 no-repeat scroll 2px bottom; padding-left:22px;}
+html/*\*/>/*/*/body #content p a[href*="&edit="] 
{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJvSURBVDjLpZPrS5NhGIf9W7YvBYOkhlkoqCklWChv2WyKik7blnNris72bi6dus0DLZ0TDxW1odtopDs4D8MDZuLU0kXq61CijSIIasOvv94VTUfLiB74fXngup7nvrnvJABJ/5PfLnTTdcwOj4RsdYmo5glBWP6iOtzwvIKSWstI0Wgx80SBblpKtE9KQs/We7EaWoT/8wbWP61gMmCH0lMDvokT4j25TiQU/ITFkek9Ow6+7WH2gwsmahCPdwyw75uw9HEO2gUZSkfyI9zBPCJOoJ2SMmg46N61YO/rNoa39Xi41oFuXysMfh36/Fp0b7bAfWAH6RGi0HglWNCbzYgJaFjRv6zGuy+b9It96N3SQvNKiV9HvSaDfFEIxXItnPs23BzJQd6DDEVM0OKsoVwBG/1VMzpXVWhbkUM2K4oJBDYuGmbKIJ0qxsAbHfRLzbjcnUbFBIpx/qH3vQv9b3U03IQ/HfFkERTzfFj8w8jSpR7GBE123uFEYAzaDRIqX/2JAtJbDat/COkd7CNBva2cMvq0MGxp0PRSCPF8BXjWG3FgNHc9XPT71Ojy3sMFdfJRCeKxEsVtKwFHwALZfCUk3tIfNR8XiJwc1LmL4dg141JPKtj3WUdNFJqLGFVPC4OkR4BxajTWsChY64wmCnMxsWPCHcutKBxMVp5mxA1S+aMComToaqTRUQknLTH62kHOVEE+VQnjahscNCy0cMBWsSI0TCQcZc5ALkEYckL5A5noWSBhfm2AecMAjbcRWV0pUTh0HE64TNf0mczcnnQyu/MilaFJCae1nw2fbz1DnVOxyGTlKeZft/Ff8x1BRssfACjTwQAAAABJRU5ErkJggg==")
 no-repeat scroll 2px bottom; padding-left:22px;}
+html/*\*/>/*/*/body #content p a[href*="&table="] 
{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJcSURBVDjLpZPtT5JhFMafrW997I9rscA+FFu2QRurtlw5cQ4InLpwBogIPNFSiNJ4C+JVkj0QTBHQKFPQlJfwlanY1tXz3ARkn2jd27Wz++yc33XOvd0UAOp/RNGR/X5zeH9rOlTDVKAK3fsqJrxlqN27GHPuYHh+G4rXRQzZNjEws47Hli/oo/PxNsAU3qvWT3/gX3TPuHrWBhiC30nSktXDtKLB1NI4NKkxqBMqjDByPFkcxNBCPwbCfXgUeEBq705m0AZM+qsk2e3hau88W+4ANOy+XPLFQrkrcbW31KkOYJx9rBaAOzPR0gVHW6x593q9cDgcqB6e4sZoogMYdXzD0ck5ZhfLsHGKVfAqVoadKcMdzcLr82PuwwZCoRACgQCWVzdhoK2gaVpDAMNzWzhkAXamQpze/I4t13w+j2AwiFwuh7W1NXg8HmQyGSgUCshkssuU3F7AQf0c84kK3n68KFc4hXQ6DavVCqlUCqVSSdaIx+NQq9UGMsHg7Ab2jxtwp5rOvqUqia3CUqnEObWn0mp1KBaLcLlckMvloPpfrhOAl230/SGLxQK3241CoQC9Xg9nskKk1emQzWZZkBZCoRBU3/NP2GMBgXTTObjSjI1GA8lkEgzDwO/3E4iObXY6nYhEIhCJRHoWcIW6b1pF7egMlYNT7NROUKzU8XX3GJ+3D2E0GgmAm4Zbh2s0mUyIRqMcAGKx+BIlMeSiYu1K/fbEMm4+TaFnJIHrSgZX5TFIZNPo7e1Fj9QOs9kMlUqFaw9pCASCnzwe7x15xG6/rUQiAZ/Px9/5XyhZOMVGKlOdAAAAAElFTkSuQmCC")
 no-repeat scroll 2px bottom; padding-left:22px;}
+
+html/*\*/>/*/*/body #content a[href*="&database="] 
{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKRSURBVDjLhVNLTBNRFD3TTju1FCcBaxuaQEr94ydiZIHGpcFISBOi0YREZWHCVoyRxKUxxq0LXcACQyLsjO6KjSEiDfHDz0S0CLSxlFKd2g7MTDudGd+bMAQCxJucuXfuu+fcO/PeYwzDALVoNMqRuI3guq7rR4g/SEBC/Svxc8T3EUTD4bCGTcZQAUI+RvxLr9d70u/3o6KiAm63G3Qtn89DFEUkk0lks9lRkrvW3t6e2lCgRZFI5F0ikaDtjN1MVVVjYmLCGBoa6qccC7Z1kQafz4f/WSAQAGlyaXOOpQ+SNNUymQxcLhc4joPD4TBzkiRBEASkUimEQiGzdlcBlmWRy+WgKIr5Xi6XUSgUUCwWzTVN+IAzeOOde71orP0eAaOkbrDWf6Cw2+3mBLSYgny3KULXPOUY2BUB/hMd4IOn8XfhMGYjvU+2TECLLRLDMNA0zYw5JYa6Ghke/hyEn9/gZEqo3OuHp7qW3yJgESjoNPSdlb8gWCOCr29BMT0Ip5tBYnIWqlL6o8irzVsEaHcKSqQCen4cweok+FAblNRz2JxlODx1cEkzGWmVbTl7Z/jHhgCF1Z3GYjIKf+U8+ANhQn4Gm6OMUiGI9MhHg5Gl1sbu8UnKNc8B7Ui3ipxEcwvlpVFw6hz2N1xGabkXdqeBYqEOmfefEZWac4e6xz9Z22hbn+BmLBZbi8fjEBdG4NF/QdUDSM88hQ4FawKJR6cxLDZl86qzZdtdoDYwMBAkQg/2LL/ovNLVh++Dd7G0OAau9hTkrKgnnE39GW3f/Z6enpUdBSx7ePu4eq+zi4VNw+TbV0gsxFd5b9X5i4+mpnY63tsErl6okhvrfWzT0SAMR3FMXsnean08Pb/b/fgHqpjCspi90kkAAAAASUVORK5CYII=")
 no-repeat scroll 2px bottom; padding-left:22px;}
+html/*\*/>/*/*/body #content p a[href*="&schema="] 
{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFOSURBVDjLtVK7SgNRED0b9iuM2lr4QK1DQIyk0FZsJAj+gH+ilRZb2NjaRHTLmA9QFKz9huzm7t37Hu+u7IJgQjR6YLjDzOXMmcMERIR5EE5qXA4z4sqACYWEC5wfLQXf/WtMIuDSoL0A7DZDjBj/uYI0l8jzEEJYJMkvCEZM4PqZIxlzpGk+kSCY18TGtGYcx9Tv96dOqBUMBgNyzsFaC621312Ac+59yJFlGRhj5VvVoigKvniglEK32w1mkd3r9ejPPAjOhqdknYX18p1/rzo3pYqTh0OSRkJI5UMgPn4s61sX66SkhtEGcISGsQad5gH2FvehfV5BaIF2cwet5RZyKeu68pe5ubKG7dUNP5AQGltMN57Mosgr5EIiVQmYGvtc1PVicqHY+dXpk8Dg7v22XKFo1ARe9v1bDOlXKKKCs4Sn1xdU1v3vIc2CD3bN4xJjfJWvAAAAAElFTkSuQmCC")
 no-repeat scroll 2px bottom; padding-left:22px;}
+
+html/*\*/>/*/*/body #content p a[href*="&sql="] 
{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJ5SURBVHjapFNLaxNRFP4mnZmQZtKYpJ2I8ZE0NSbSWKpgBYNUhIJQUDddCaILwb34C0RcCi60vpa14sZFoSjxUWxTFEubFkxf9kFS+7Jp0yQmM5mH905SF9pSwQt3vnPnnvPNd86cA13Xsds+23XKsdMdQx//s0z/6hi54he3e8/0d3ZuK0FTFGhUJkVVhSbLUAiq5IxSCQrBEkGWOu8Lh38HGrlpWnlXCKhNSbZQo3cEE9FomYAuKZstE2wFa8RR1cpKqK2o4JhxmLVJVAlh5Df6IFj5MgENcHq9EAMBg2RucBDVLpdxVon0iXdvIf8sQHRIsNReht3XjI3ZI8iuPAOrkDyorBq3G6vT08ikUuAsFiN46HkXXL56eI41QV1/BMF+GulvCfCMDFvNXtSIHrC0KDTPhXgc7lAQdQ2thk2XIpewnkzCJvTA4T8PabEbfDWD+ZFxyEUdX94sw6QVCkZlxWAQU+8/YGZgALV+v0HgbWmBNzQMR0M7it8fg+HWwQk2cLkkcvJh5NNFsCVJMgq1ubiE5o4OI5CS8FYrya8b9saLKC48gIlTIG/6sBaLw3PpHrTEMrSXr4kPIaAKFkbjSA0PEVuFlB+DO8Ah2HoB8tITVPE6iplDWOn7jLn0CSQevoDV6TI+zEpUASkkZzaTYrLIrH3C/qMCFEbE4th9OEQexfQBrPYP44d+DuY91eBp+1dGgFVIDb729kKpdJfQtIy2yFNMdN/E5McYzAebUEhOYjZuQXaj5+9W/nOYbl9vLN26doOFScVI9BXmZ6dy9jpnpO1O5dfsRtBxxlk4Xu9mT4Z80DkpVlhZvdp+d3RmpyH7JcAAnHiAVYWMsdkAAAAASUVORK5CYII=")
 no-repeat scroll 2px bottom; padding-left:24px;}
+
+html/*\*/>/*/*/body table tbody input[name*="check"] {display:block; 
float:left;}
+
+html/*\*/>/*/*/body table a[href*="&edit="][href*="&where"] 
{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFUSURBVDjLrZM/SAJxGIZdWwuDlnCplkAEm1zkaIiGFFpyMIwGK5KGoK2lphDKkMDg3LLUSIJsSKhIi+684CokOtTiMizCGuzEU5K3vOEgKvtBDe/2Pc8H3x8NAM1fQlx4H9M3pcOWp6TXWmM8A7j0629v1nraiAVC0IrrwATKIgs5xyG5QiE+Z4iQdoeU2oAsnqCSO1NSTu+D9VhqRLD8nIB8F0Q2MgmJDyipCzjvYJkIfpN2UBLG8MpP4dxvQ3ZzGuyyBQ2H+AnOOCBd9aL6soh81A5hyYSGWyCFvxUcerqI4S+CvYVOFPMHxLAq8I3qdHVY5LbBhJzEsCrwutpRFBlUHy6wO2tEYtWAzLELPN2P03kjfj3luqDycV2F8AgefWbEnVqEHa2IznSD6BdsVDNStB0lfh0FPoQjdx8RrAqGzC0YprSgxzsUMOY2bf37N/6Ud1Vc9yYcH50CAAAAAElFTkSuQmCC")
 no-repeat scroll right bottom; padding-right:18px;}
+
+html/*\*/>/*/*/body table input + a[href*="&edit="][href*="&where"] {width:0; 
float:left; display:block; height:16px; overflow:hidden; text-decoration:none; 
padding:0 0 0 18px; background-position:2px bottom; margin-left:5px;}
+html/*\*/>/*/*/body table tbody td:first-child {white-space:normal;}
+html/*\*/>/*/*/body table thead input {margin-right: 5px;}
+
+html/*\*/>/*/*/body input[name="delete"], html/*\*/>/*/*/body 
input[name="drop"] {background:transparent 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHSSURBVHjapFM5bsJQEB2zSIDFJrHYpEtyAyoKJAp6CrqIkBPkNDlBAKXjBEgUpKOBCyQNijFiEZvZl8z7wsjESYpkpNFfPO/Nmz9j6Xg80n/M9fWi3W7fMOnd4XAo8qogAbvO5xKvL6lU6s0aL1kVMDjP5ye/36+Gw2FyOp3EQFqtVtTr9WixWHT5/JhOp6s2ghP4ORaLyaFQiGazGa3Xa0HgdrvJ6/WSpmk0Go0MjnvIZDLVM0Gr1brm/WskEkkA3O/3abvdQjq5XC6xgoiVka7rNB6PNT6ns9nsu+OkpODxeBLBYJAGgwHt9/uzQ8Vms6Hdbie+KYqC+ASTFrARBMx2HwgEaDKZiHqn0yktl0uxtzrMMAyKx+MCc+4Cs13hwQCC1GQy+W3Lms2mUIUygbEqEBLNun8z8zswVgUfLO0WD4Z6kekn8/l8okNM8GFVUMYDoVWQ6HA4bEAzoyzL1O12kbRsJajwhYZhiUajJEnShWSAQaqqKnU6HahEGysXg9RoNPJ8+cwZZLSKp47m8/k5Kxzg4XBocNxDLper2ka5Xq+LUeatilahJLN1mEJ+ZDHKJthGAKvVauJnYi9ysHIqQee1xOsLg3/+mf5inwIMAJMhb74NwG5wAAAAAElFTkSuQmCC")
 no-repeat scroll left center; padding:1px 5px 1px 18px; border:0; 
cursor:pointer; font-size:.9em;}
+html/*\*/>/*/*/body input[name="delete"]:hover, html/*\*/>/*/*/body 
input[name="drop"]:hover {color:red; 
background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJdSURBVDjLpZP7S1NhGMf9W7YfogSJboSEUVCY8zJ31trcps6zTI9bLGJpjp1hmkGNxVz4Q6ildtXKXzJNbJRaRmrXoeWx8tJOTWptnrNryre5YCYuI3rh+8vL+/m8PA/PkwIg5X+y5mJWrxfOUBXm91QZM6UluUmthntHqplxUml2lciF6wrmdHriI0Wx3xw2hAediLwZRWRkCPzdDswaSvGqkGCfq8VEUsEyPF1O8Qu3O7A09RbRvjuIttsRbT6HHzebsDjcB4/JgFFlNv9MnkmsEszodIIY7Oaut2OJcSF68Qx8dgv8tmqEL1gQaaARtp5A+N4NzB0lMXxon/uxbI8gIYjB9HytGYuusfiPIQcN71kjgnW6VeFOkgh3XcHLvAwMSDPohOADdYQJdF1FtLMZPmslvhZJk2ahkgRvq4HHUoWHRDqTEDDl2mDkfheiDgt8pw340/EocuClCuFvboQzb0cwIZgki4KhzlaE6w0InipbVzBfqoK/qRH94i0rgokSFeO11iBkp8EdV8cfJo0yD75aE2ZNRvSJ0lZKcBXLaUYmQrCzDT6tDN5SyRqYlWeDLZAg0H4JQ+Jt6M3atNLE10VSwQsN4Z6r0CBwqzXesHmV+BeoyAUri8EyMfi2FowXS5dhd7doo2DVII0V5BAjigP89GEVAtda8b2ehodU4rNaAW+dGfzlFkyo89GTlcrHYCLpKD+V7yeeHNzLjkp24Uu1Ed6G8/F8qjqGRzlbl2H2dzjpMg1KdwsHxOlmJ7GTeZC/nesXbeZ6c9OYnuxUc3fmBuFft/Ff8xMd0s65SXIb/gAAAABJRU5ErkJggg==")}
+
+.logout {font-size: 8pt !important;}
+#logout{ height:17px; border: none; background: transparent 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJHSURBVDjLlZPNi81hFMc/z7137p1mTCFvNZfGSzLIWNjZKRvFRoqNhRCSYm8xS3+AxRRZ2JAFJWJHSQqTQkbEzYwIM+6Yid/znJfH4prLXShOnb6r8/nWOd8Tcs78bz0/f+KMu50y05nK/wy+uHDylbutqS5extvGcxaWqtoGDA8PZ3dnrs2srQc2Zko41UXLmLdyDW5OfvsUkUgbYGbU63UAQggdmvMzFmzZCgTi7CQmkZwdEaX0JwDgTnGbTCaE0G4zw80omhPI92lcEtkNkdgJCCHwJX7mZvNaB0A14SaYJlwTrpHsTkoFlV1nt2c3x5YYo1/vM9A/gKpxdfwyu/v3teCayKq4JEwT5EB2R6WgYmrs2bYbcUNNUVfEhIfFYy69uci+1fuRX84mkawFSxd/4nVWUopUVIykwlQxRTJBTIDA4Pp1jBZPuNW4wUAPmCqWIn29X1k4f5Ku8g9mpKCkakRLVEs1auVuauVuyqHMo8ejNCe+sWPVTkQKXCMmkeZUmUZjETF1tc6ooly+fgUVw9So1/tRN6YnZji46QghBFKKuAouERNhMlbAHZFE6e7pB+He8MMw+GGI4xtOMf1+lsl3TQ4NHf19BSlaO1DB9BfMHdX0O0iqSgiBbJkjm491hClJbA1LxCURgpPzXwAHhg63necAIi3XngXLcRU0fof8ETMljIyM5LGxMcbHxzvy/6fuXdWgt6+PWncv1e4euqo1ZmabvHs5+jn8yzufO7hiiZmuNpNBM13rbvVSpbrXJE7/BMkHtU9jFIC/AAAAAElFTkSuQmCC")
 no-repeat center left; overflow: hidden; text-indent: 18px; line-height: 0px; 
cursor:pointer; margin-left:6px; color: #21759B;  text-decoration: underline;}
+#logout:hover {text-decoration: none; color: #D54E21;}
+#logins a, #tables a {background: none repeat scroll 0 0 transparent;}
+/*body {margin: 0; line-height: 1.25em; font-size: 13px; background: 
#F9F9F9;}*/
+body {margin: 0; line-height: 1.25em; font-size: 13px; background: #110236; 
color: #fff;}
+body, select, option, optgroup, button {font-family: "Lucida 
Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;} /* IE6 */
+input[type='submit'], input[type='reset'], input[type='button'], 
input[type='file'] {font-family: "Lucida Grande",Verdana,Arial,"Bitstream Vera 
Sans",sans-serif;}
+input, textarea, pre, code, samp, kbd, var {font-family: "Lucida 
Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif; font-size: 12px;}
+/*a {color: #21759B;}
+a:visited {color: #21759B;}
+a:hover {text-decoration: none; color: #D54E21;}*/
+a {color: #F1E5B3;}
+a:visited {color: #F1E5B3;}
+a:hover {text-decoration: none; color: #D68D20;}
+form {margin: 0;}
+table {margin: 10px 12px 12px 0; border: 1px #BBB solid; font-size: 90%;}
+th {text-align: left;}
+/*td, th {background-color: #fff; padding: 4px 6px; border: 1px #DfDfDf solid; 
border-width: 1px 0 0 1px;}*/
+td, th {background-color: #1D294D; padding: 4px 6px; border: 1px #DfDfDf 
solid; border-width: 1px 0 0 1px;}
+tr:first-child td, tr:first-child th {border-top-width: 0;}
+tr:first-child th {padding-right: 30px;}
+td:first-child, th:first-child {border-left-width: 0;}
+/*thead td, thead th {background-color: #DFDFDF; border: none; border-bottom: 
1px #BBB solid;}*/
+thead td, thead th {background-color: #110236; border: none; border-bottom: 
1px #BBB solid;}
+thead tr:hover td, thead tr:hover th {background-color: #110236 !important;}
+/*tr:nth-child(2n) td, tr:nth-child(2n) th, .odd td, .odd th, tr.odd 
{background-color: #F1F1F1;}*/
+tr:nth-child(2n) td, tr:nth-child(2n) th, .odd td, .odd th, tr.odd 
{background-color: #49526D;}
+/*tr:hover td, tr:hover th {background-color: #BCD;}*/
+tr:hover td, tr:hover th {background-color: red; /* #3D4E80;*/}
+/*fieldset {display: inline; vertical-align: top; padding: 2px 12px; margin: 
25px 12px 12px 0; border: none; background-color: #F1F1F1; border: 1px solid 
#E3E3E3; position: relative; padding-top: 14px;}*/
+fieldset {display: inline; vertical-align: top; padding: 2px 12px; margin: 
25px 12px 12px 0; border: none; background-color: #1D294D; border: 1px solid 
#E3E3E3; position: relative; padding-top: 14px;}
+fieldset, x:-moz-any-link {padding-top: 4px;}
+fieldset {%padding-top: 14px;}
+legend {font-weight: 900; color: #fff; position: absolute; top: -1.666em; 
left: -1em; padding: 0 4px;}
+input[name='limit'], input[name*='length'] {width: 3em; xtext-align: right;}
+input[name='text_length'] {width: 5em;}
+select + input, select + select {margin-left: 2px;}
+/*textarea, input, select {border-width: 1px; border-style: solid; 
-moz-border-radius: 4px; -khtml-border-radius: 4px; -webkit-border-radius: 4px; 
border-radius: 4px; border-color: #DFDFDF;}*/
+textarea, input, select {border-width: 1px; border-style: solid; 
-moz-border-radius: 4px; -khtml-border-radius: 4px; -webkit-border-radius: 4px; 
border-radius: 4px; border-color: #5C5C5C; background-color: #49526D; color: 
#ccc}
+input[type="checkbox"], input[type="radio"], input[type="image"] {border: 0 
none;}
+/*input[type=button], input[type=submit] {border-color: #bbb; color: 
#464646;}*/
+input[type=button], input[type=submit] {border-color: #999; color: #fff;}
+/*input[type=button]:hover, input[type=submit]:hover {color: #fff; 
border-color: #666;}*/
+input[type=button]:hover, input[type=submit]:hover {color: #fff; border-color: 
#fff; background-color:#49526D;}
+input[type=button], input[type=submit] {text-decoration: none; font-size: 11px 
!important; line-height: 14px; padding: 2px 8px; cursor: pointer; border-width: 
1px; border-style: solid; -moz-border-radius: 11px; -khtml-border-radius: 11px; 
-webkit-border-radius: 11px; border-radius: 11px; -moz-box-sizing: content-box; 
-webkit-box-sizing: content-box; -khtml-box-sizing: content-box; box-sizing: 
content-box;background-color:#49526D;}
+input + label input, select + label input {margin-left: 4px;}
+td input[type='checkbox']:first-child, td input[type='radio']:first-child 
{margin-left: 2px;}
+label:hover {text-decoration: underline;}
+fieldset div {margin-bottom: 2px;}
+input[name='Comment'] { /* !!! */ width: 24em;}
+input[name='Auto_increment'] { /* !!! */width: 6em;}
+img {vertical-align: middle; margin: 0; padding: 0;}
+.error {padding: 8px; color: red; background-color: #FEE;}
+/*.message {padding: 8px; background-color: #DDD;}*/
+.message {padding: 8px; background-color: #49526D;}
+.char {color: #070;}
+.date {color: #707;}
+.enum {color: #077;}
+.binary {color: red;}
+/*.jush-sql {padding: 2px 4px; margin-right: 4px; outline: 1px #BBB dashed; 
font-size: 9pt;}*/
+.jush-sql {padding: 2px 4px; margin-right: 4px; font-size: 
9pt;background-color:#49526D;}
+.jush a {
+  color: #B4D5FF !important;
+}
+.jush, .jush-bac {
+  color: #fff;
+}
+#content {margin: 2px 0 0 300px; padding: 10px 20px 20px 0;}
+#lang {height: 23px; width: 250px; display: block; padding: 1px 10px; 
position: absolute; top: 0; left: 0; text-align: center; background-color: 
#f1f1f1; border: 1px solid #E3E3E3; line-height: 1.25em;}
+#lang select {font-size: 8pt;}
+/*#breadcrumb {margin: 0; height: 21px; display: block; position: absolute; 
top: 0; left: 300px; background-color: #f1f1f1; border: 1px solid #E3E3E3; 
padding: 2px 12px; line-height: 1.25em }
+#menu {position: absolute; padding: 10px; margin: 0; top: 28px; left: 0; 
width: 250px; background-color: #f1f1f1; border: 1px solid #E3E3E3;}*/
+#breadcrumb {margin: 0; height: 21px; display: block; position: absolute; top: 
0; left: 300px; background-color: #000; border: 1px solid #E3E3E3; padding: 2px 
12px; line-height: 1.25em; color:#ccc; }
+#breadcrumb a {
+    color:red;
+}
+#menu {position: absolute; padding: 10px; margin: 0; top: 28px; left: 0; 
width: 250px; background-color: #110236; border: 1px solid #E3E3E3;}
+#menu form {margin: 0;}
+#menu p {padding-left: 8px; font-size: 10pt; border-bottom: none;}
+#menu form p {padding-left: 0; text-align: left;}
+h1 .h1:hover {text-decoration: underline;} 
+/*h1, h2 {font: italic normal normal 24px/29px Georgia, "Times New Roman", 
"Bitstream Charter", Times, serif; margin: 0; padding: 14px 15px 3px 10px; 
line-height: 35px; text-shadow: rgba(255,255,255,1) 0 1px 0px; background: 
none;}*/
+h1, h2 {font: italic normal normal 24px/29px Georgia, "Times New Roman", 
"Bitstream Charter", Times, serif; margin: 0; padding: 14px 15px 3px 10px; 
line-height: 35px; /*text-shadow: rgba(185,185,185,1) 0 1px 0px;*/ background: 
none;color:#A3A3A3}
+h1 {font-size: 12px;}
+h1 .h1 {font-size: 12px;}
+h2 {padding: 22px 0 0 10px;}
+h3 {margin: 40px 0 0; font-weight: 400; font-size: 130%;}
+#schema {margin: 1.5em 0 0 220px; position: relative;}
+/*#schema .table {border: 1px solid #E3E3E3; background-color: #F1F1F1; 
padding: 0 2px; cursor: move; position: absolute;}*/
+#schema .table {border: 1px solid #E3E3E3; background-color: #110236; padding: 
0 2px; cursor: move; position: absolute;}
+#schema .references {position: absolute;}
+.js .hidden {display: inline;}
+.js td.hidden, .js input.hidden {display: none;}
+legend a {color: #F1E5B3; text-decoration: none; cursor: default;}
+legend a:hover {color: #333;}
+code {background: transparent;}
+fieldset, legend, h2, table, .error, .message {-moz-border-radius: 5px; 
-khtml-border-radius: 5px; -webkit-border-radius: 5px;border-radius: 5px;}
+#breadcrumb, #lang, #menu {-moz-border-radius-bottomright: 5px; 
-khtml-border-bottom-right-radius: 5px; -webkit-border-bottom-right-radius: 
5px; border-bottom-right-radius: 5px;}
+#breadcrumb {-moz-border-radius-bottomleft: 5px; 
-khtml-border-bottom-left-radius: 5px; -webkit-border-bottom-left-radius: 5px; 
border-bottom-left-radius: 5px;}
+#menu {-moz-border-radius-topright: 5px; -khtml-border-top-right-radius: 5px; 
-webkit-border-top-right-radius: 5px; border-bottom-top-radius: 5px;}
+#loader {margin-left: 35px;}
+
+/*custom*/
+.js .checked td,.js .checked th, .js .checkable .checked td, .js .checkable 
.checked th{
+       background:#5A3901;
+}
+tbody tr:hover td,tbody tr:hover th{
+       background:#333333;
+}
+.js .column {
+    background: none repeat scroll 0 0 #110236;
+    margin-top: -0.3em;
+    padding: 0.3em 1ex 0.3em 0;
+    position: absolute;
+}
+.js:hover .column:hover {
+    background: none repeat scroll 0 0 #110236;
+}
+
+#content pre {background-color:#49526D}
+
+#lang{background:#110236;}
+
+.pages {background:#43486F;}
+.pages {background:#999671;}
+.pages {background:#817F5A;}
+
+#logins a:hover, #tables a[title]:hover, #tables a.active, #tables 
a.select:hover + a, #tables a.select.active + a {
+    color: red;
+}
+
+.footer, .footer>div {
+  background-color: #49526D;
+  opacity: .9;
+}
+.footer {
+  border-image: none;
+  padding: 30px 12px 0px;
+  border: 1px #BBB solid;
+  margin: 12px -20px 12px -1px;
+  margin-right: none;
+}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.7.2/plugins/login-ip.php 
new/adminer-4.7.3/plugins/login-ip.php
--- old/adminer-4.7.2/plugins/login-ip.php      1970-01-01 01:00:00.000000000 
+0100
+++ new/adminer-4.7.3/plugins/login-ip.php      2019-08-27 17:58:21.000000000 
+0200
@@ -0,0 +1,42 @@
+<?php
+
+/** Check IP address and allow empty password
+* @link https://www.adminer.org/plugins/#use
+* @author Jakub Vrana, https://www.vrana.cz/
+* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 
2.0
+* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public 
License, version 2 (one or other)
+*/
+class AdminerLoginIp {
+       /** @access protected */
+       var $ips;
+       /** @access protected */
+       var $forwarded_for;
+       
+       /** Set allowed IP addresses
+       * @param array IP address prefixes
+       * @param array X-Forwarded-For prefixes if IP address matches, empty 
array means anything
+       */
+       function __construct($ips, $forwarded_for = array()) {
+               $this->ips = $ips;
+               $this->forwarded_for= $forwarded_for;
+       }
+
+       function login($login, $password) {
+               foreach ($this->ips as $ip) {
+                       if (strncasecmp($_SERVER["REMOTE_ADDR"], $ip, 
strlen($ip))) {
+                               if (!$this->forwarded_for) {
+                                       return true;
+                               }
+                               if ($_SERVER["HTTP_X_FORWARDED_FOR"]) {
+                                       foreach ($this->forwarded_for as 
$forwarded_for) {
+                                               if 
(strncasecmp(preg_replace('~.*, *~', '', $_SERVER["HTTP_X_FORWARDED_FOR"]), 
$forwarded_for, strlen($forwarded_for))) {
+                                                       return true;
+                                               }
+                                       }
+                               }
+                       }
+               }
+               return false;
+       }
+
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.7.2/plugins/translation.php 
new/adminer-4.7.3/plugins/translation.php
--- old/adminer-4.7.2/plugins/translation.php   2019-07-18 08:56:37.000000000 
+0200
+++ new/adminer-4.7.3/plugins/translation.php   2019-08-27 17:58:21.000000000 
+0200
@@ -10,7 +10,7 @@
 );
 */
 
-/** Translate all table and field comments, enum and set values from the 
translation table (inserts new translations)
+/** Translate all table and field comments, enum and set values in Editor from 
the translation table (inserts new translations)
 * @link https://www.adminer.org/plugins/#use
 * @author Jakub Vrana, https://www.vrana.cz/
 * @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 
2.0


Reply via email to