From 47d73c656b1a63a745af5e2a7b8377474f9c2bdb Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sun, 21 Jul 2013 17:09:21 +0200
Subject: [PATCH 01/83] Sets version to 0.23.0-dev

---
 README.md    | 5 +++++
 package.json | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 2faf2a74..d14e00e8 100644
--- a/README.md
+++ b/README.md
@@ -59,6 +59,11 @@ It profits from these great projects:
 ( **h5ai** uses [semantic versioning](http://semver.org/) )
 
 
+### develop branch
+
+* ...
+
+
 ### v0.23.0 - *2013-07-21*
 
 * removes `aai` mode!
diff --git a/package.json b/package.json
index 5bdc18ae..b848c08e 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "h5ai",
-  "version": "0.23.0",
+  "version": "0.23.0-dev",
   "description": "a modern HTTP web server index",
   "url": "http://larsjung.de/h5ai/",
   "author": "Lars Jung",

From ede9f4d3f8fd8ebaea8cce5a24b17766aa0dffa3 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sun, 21 Jul 2013 22:23:16 +0200
Subject: [PATCH 02/83] Fixes setParentFolderLabels=false.

---
 src/_h5ai/client/js/inc/ext/l10n.js | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/src/_h5ai/client/js/inc/ext/l10n.js b/src/_h5ai/client/js/inc/ext/l10n.js
index b27d145d..c2abc220 100644
--- a/src/_h5ai/client/js/inc/ext/l10n.js
+++ b/src/_h5ai/client/js/inc/ext/l10n.js
@@ -151,14 +151,11 @@ modulejs.define('ext/l10n', ['_', '$', 'core/settings', 'core/langs', 'core/form
 
 		init = function () {
 
-			if (!settings.enabled) {
-				event.sub('ready', function () { update(); });
-				return;
+			if (settings.enabled) {
+				initLangSelector(langs);
 			}
 
-			initLangSelector(langs);
-
-			event.sub('ready', function () {
+			event.sub('location.changed', function () {
 
 				localize(langs, settings.lang, settings.useBrowserLang);
 			});

From efb447ae789762595f48194e4ba66ccba7756aa0 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Tue, 23 Jul 2013 10:21:02 +0200
Subject: [PATCH 03/83] Minor refactoring.

---
 src/_h5ai/conf/options.json      | 4 ++--
 src/_h5ai/server/php/inc/Api.php | 2 ++
 src/_h5ai/server/php/index.php   | 2 --
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/_h5ai/conf/options.json b/src/_h5ai/conf/options.json
index 71405d05..c5079066 100644
--- a/src/_h5ai/conf/options.json
+++ b/src/_h5ai/conf/options.json
@@ -44,7 +44,7 @@ Options
 		"indexFiles": ["index.html", "index.htm", "index.php"],
 		"ignore": ["^\\.", "^_{{pkg.name}}"],
 		"smartBrowsing": true,
-		"extInNewWindow": true
+		"extInNewWindow": false
 	},
 
 
@@ -180,7 +180,7 @@ Options
 		2: mode, servername and -version
 	*/
 	"mode": {
-		"enabled": true,
+		"enabled": false,
 		"display": 2
 	},
 
diff --git a/src/_h5ai/server/php/inc/Api.php b/src/_h5ai/server/php/inc/Api.php
index 6968a14c..518a4702 100644
--- a/src/_h5ai/server/php/inc/Api.php
+++ b/src/_h5ai/server/php/inc/Api.php
@@ -207,6 +207,8 @@ class Api {
 
 			json_exit();
 		}
+
+		json_fail(100, "unsupported request");
 	}
 }
 
diff --git a/src/_h5ai/server/php/index.php b/src/_h5ai/server/php/index.php
index 50916f7d..967d49b1 100644
--- a/src/_h5ai/server/php/index.php
+++ b/src/_h5ai/server/php/index.php
@@ -53,8 +53,6 @@ if (array_key_exists("action", $_REQUEST)) {
 	$api = new Api($app);
 	$api->apply();
 
-	json_fail(100, "unsupported request");
-
 } else {
 
 	header("Content-type: text/html;charset=utf-8");

From d76e1194d1c544337beed6d6202f53d8881c77a3 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Tue, 23 Jul 2013 20:09:56 +0200
Subject: [PATCH 04/83] Adds EXIF and PHP version to info page.

---
 src/_h5ai/client/js/inc/info.js  | 1 +
 src/_h5ai/conf/options.json      | 6 +++---
 src/_h5ai/index.html.jade        | 6 +++++-
 src/_h5ai/server/php/inc/App.php | 3 +++
 4 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/_h5ai/client/js/inc/info.js b/src/_h5ai/client/js/inc/info.js
index 58197760..54bb59cc 100644
--- a/src/_h5ai/client/js/inc/info.js
+++ b/src/_h5ai/client/js/inc/info.js
@@ -22,6 +22,7 @@ modulejs.define('info', ['$'], function ($) {
 
 						setCheckResult(this, json.checks[$(this).data('id')]);
 					});
+					$('.test.php .test-result').text(json.checks['phpversion']);
 				}
 			});
 		};
diff --git a/src/_h5ai/conf/options.json b/src/_h5ai/conf/options.json
index c5079066..59d3f241 100644
--- a/src/_h5ai/conf/options.json
+++ b/src/_h5ai/conf/options.json
@@ -57,7 +57,7 @@ Options
 	- interval: number, update interval in milliseconds, at least 1000
 	*/
 	"autorefresh": {
-		"enabled": false,
+		"enabled": true,
 		"interval": 5000
 	},
 
@@ -84,7 +84,7 @@ Options
 	Allow file deletion.
 	*/
 	"delete": {
-		"enabled": false
+		"enabled": true
 	},
 
 	/* [EXPERIMENTAL]
@@ -95,7 +95,7 @@ Options
 	- maxfilesize: number, file size is in MB
 	*/
 	"dropbox": {
-		"enabled": false,
+		"enabled": true,
 		"maxfiles": 10,
 		"maxfilesize": 1000
 	},
diff --git a/src/_h5ai/index.html.jade b/src/_h5ai/index.html.jade
index 708aee0e..6f29d1ee 100644
--- a/src/_h5ai/index.html.jade
+++ b/src/_h5ai/index.html.jade
@@ -32,7 +32,7 @@ html.no-js( lang="en" )
 
 		h2 server supports
 		ul#tests
-			li.test( data-id="php" )
+			li.test.php( data-id="php" )
 				span.test-label php version
 				span.test-result ?
 				div.test-info PHP version >= 5.2.1
@@ -44,6 +44,10 @@ html.no-js( lang="en" )
 				span.test-label image thumbs
 				span.test-result ?
 				div.test-info PHP GD extension with JPEG support available
+			li.test( data-id="exif" )
+				span.test-label use exif thumbs
+				span.test-result ?
+				div.test-info PHP EXIF extension available
 			li.test( data-id="ffmpeg" )
 				span.test-label movie thumbs
 				span.test-result ?
diff --git a/src/_h5ai/server/php/inc/App.php b/src/_h5ai/server/php/inc/App.php
index 1617ad4c..77e97c06 100644
--- a/src/_h5ai/server/php/inc/App.php
+++ b/src/_h5ai/server/php/inc/App.php
@@ -278,6 +278,7 @@ class App {
 			$gdinfo = gd_info();
 			$gd = array_key_exists("JPG Support", $gdinfo) && $gdinfo["JPG Support"] || array_key_exists("JPEG Support", $gdinfo) && $gdinfo["JPEG Support"];
 		}
+		$exif = function_exists("exif_thumbnail");
 		$cache = @is_writable($this->get_cache_abs_path());
 		$tar = @preg_match("/tar(.exe)?$/i", `which tar`) > 0;
 		$zip = @preg_match("/zip(.exe)?$/i", `which zip`) > 0;
@@ -287,9 +288,11 @@ class App {
 
 		return array(
 			"idx" => $this->app_abs_href . "server/php/index.php",
+			"phpversion" => PHP_VERSION,
 			"php" => $php,
 			"cache" => $cache,
 			"thumbs" => $gd,
+			"exif" => $exif,
 			"tar" => $tar,
 			"zip" => $zip,
 			"convert" => $convert,

From a3a236d2e11b160b6d7631a32d73cf25046427f4 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Tue, 23 Jul 2013 20:39:24 +0200
Subject: [PATCH 05/83] Ignore warnings for unsupported images.

---
 src/_h5ai/server/php/inc/Thumb.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/_h5ai/server/php/inc/Thumb.php b/src/_h5ai/server/php/inc/Thumb.php
index d4b6dacd..4365040d 100644
--- a/src/_h5ai/server/php/inc/Thumb.php
+++ b/src/_h5ai/server/php/inc/Thumb.php
@@ -57,7 +57,7 @@ class Thumb {
 
 			$et = false;
 			if (function_exists("exif_thumbnail")) {
-				$et = exif_thumbnail($source_abs_path);
+				$et = @exif_thumbnail($source_abs_path);
 			}
 			if($et !== false) {
 				file_put_contents($thumb_abs_path, $et);

From 8a431fe95e414cfe9d3bfd1913c4fc9ce09717f5 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Thu, 25 Jul 2013 23:41:20 +0200
Subject: [PATCH 06/83] Adds .aiff extention to type audio.

---
 src/_h5ai/conf/types.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/_h5ai/conf/types.json b/src/_h5ai/conf/types.json
index 1e7105df..bf0f5f1a 100644
--- a/src/_h5ai/conf/types.json
+++ b/src/_h5ai/conf/types.json
@@ -7,7 +7,7 @@ File types mapped to file extensions
 
 {
 	"archive":			[".tar.bz2", ".tar.gz", ".tgz"],
-	"audio":			[".aif", ".flac", ".m4a", ".mid", ".mp3", ".mpa", ".ra", ".ogg", ".wav", ".wma"],
+	"audio":			[".aif", ".aiff", ".flac", ".m4a", ".mid", ".mp3", ".mpa", ".ra", ".ogg", ".wav", ".wma"],
 	"authors":			["authors"],
 	"bin":				[".class", ".o", ".so"],
 	"blank":			[],

From 696409e19c46789175daea927829eff0b25a4761 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 26 Jul 2013 14:44:31 +0200
Subject: [PATCH 07/83] Updates pl translation.

---
 src/_h5ai/conf/l10n/pl.json | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/_h5ai/conf/l10n/pl.json b/src/_h5ai/conf/l10n/pl.json
index de4b7c07..ab672614 100644
--- a/src/_h5ai/conf/l10n/pl.json
+++ b/src/_h5ai/conf/l10n/pl.json
@@ -9,10 +9,10 @@
 	"size": "Rozmiar",
 	"parentDirectory": "Katalog nadrzędny",
 	"empty": "pusty",
-	"folders": "foldery",
-	"files": "pliki",
+	"folders": "folderów",
+	"files": "plików",
 	"download": "pobierz",
-	"noMatch": "nie pasuje",
+	"noMatch": "nie znaleziono",
 	"dateFormat": "YYYY-MM-DD HH:mm",
 	"filter": "filtr",
 	"delete": "usuń"

From 3733d0c6d09189c264b761fa923ae7469d4fc8be Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sun, 28 Jul 2013 16:15:20 +0200
Subject: [PATCH 08/83] Replace 'which' with 'command -v' to be POSIX
 compatible here.

---
 src/_h5ai/server/php/inc/App.php | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/_h5ai/server/php/inc/App.php b/src/_h5ai/server/php/inc/App.php
index 77e97c06..f699a823 100644
--- a/src/_h5ai/server/php/inc/App.php
+++ b/src/_h5ai/server/php/inc/App.php
@@ -280,11 +280,11 @@ class App {
 		}
 		$exif = function_exists("exif_thumbnail");
 		$cache = @is_writable($this->get_cache_abs_path());
-		$tar = @preg_match("/tar(.exe)?$/i", `which tar`) > 0;
-		$zip = @preg_match("/zip(.exe)?$/i", `which zip`) > 0;
-		$convert = @preg_match("/convert(.exe)?$/i", `which convert`) > 0;
-		$ffmpeg = @preg_match("/ffmpeg(.exe)?$/i", `which ffmpeg`) > 0;
-		$du = @preg_match("/du(.exe)?$/i", `which du`) > 0;
+		$tar = @preg_match("/tar(.exe)?$/i", `command -v tar`) > 0;
+		$zip = @preg_match("/zip(.exe)?$/i", `command -v zip`) > 0;
+		$convert = @preg_match("/convert(.exe)?$/i", `command -v convert`) > 0;
+		$ffmpeg = @preg_match("/ffmpeg(.exe)?$/i", `command -v ffmpeg`) > 0;
+		$du = @preg_match("/du(.exe)?$/i", `command -v du`) > 0;
 
 		return array(
 			"idx" => $this->app_abs_href . "server/php/index.php",

From a296311b88eb888bf57b52bbc8d4237362d20584 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Tue, 13 Aug 2013 00:36:39 +0200
Subject: [PATCH 09/83] Updates build process.

---
 makefile.js  | 129 +++++++++++++++++++++++----------------------------
 package.json |   2 +-
 2 files changed, 59 insertions(+), 72 deletions(-)

diff --git a/makefile.js b/makefile.js
index cc43d53d..c24553da 100644
--- a/makefile.js
+++ b/makefile.js
@@ -2,82 +2,49 @@
 'use strict';
 
 
-var path = require('path'),
-
-	pkg = require('./package.json'),
-
-	root = path.resolve(__dirname),
-	src = path.join(root, 'src'),
-	build = path.join(root, 'build'),
-
-	jshint = {
-		// Enforcing Options
-		bitwise: true,
-		curly: true,
-		eqeqeq: true,
-		forin: true,
-		latedef: true,
-		newcap: true,
-		noempty: true,
-		plusplus: true,
-		trailing: true,
-		undef: true,
-
-		// Environments
-		browser: true,
-
-		// Globals
-		predef: [
-			'modulejs'
-		]
-	},
-
-	handlebarsEnv = {
-		pkg: pkg
-	},
-
-	mapSrc = function (blob) {
-
-		return blob.source.replace(src, build).replace(/\.less$/, '.css').replace(/\.jade$/, '');
-	},
-
-	mapRoot = function (blob) {
-
-		return blob.source.replace(root, path.join(build, '_h5ai'));
-	};
-
-
 module.exports = function (make) {
 
-	var Event = make.Event,
+	var path = require('path'),
+
+		pkg = require('./package.json'),
+
+		root = path.resolve(__dirname),
+		src = path.join(root, 'src'),
+		build = path.join(root, 'build'),
+
 		$ = make.fQuery,
-		moment = make.moment;
+		mapSrc = $.map.p(src, build).s('.less', '.css').s('.jade', ''),
+		mapRoot = $.map.p(root, build);
 
 
-	make.version('>=0.8.1');
+	make.version('>=0.10.0');
 	make.defaults('build');
 
 
 	make.before(function () {
 
-		handlebarsEnv.stamp = moment().format('YYYY-MM-DD HH:mm:ss');
+		var moment = make.moment();
+
+		make.env = {
+			pkg: pkg,
+			stamp: moment.format('YYYY-MM-DD HH:mm:ss')
+		};
+
+		$.info({ method: 'before', message: pkg.version + ' ' + make.env.stamp });
 	});
 
 
 	make.target('check-version', [], 'add git info to dev builds').async(function (done, fail) {
 
-		if (!/-dev$/.test(pkg.version)) {
+		if (!/\+$/.test(pkg.version)) {
 			done();
 			return;
 		}
 
 		$.git(root, function (err, result) {
 
-			pkg.version += '-' + result.revListOriginMasterHead.length + '-' + result.revParseHead.slice(0, 7);
-			Event.info({
-				method: 'check-version',
-				message: 'version set to ' + pkg.version
-			});
+			pkg.version += result.buildSuffix;
+			$.info({ method: 'check-version', message: 'version set to ' + pkg.version });
 			done();
 		});
 	});
@@ -85,14 +52,34 @@ module.exports = function (make) {
 
 	make.target('clean', [], 'delete build folder').sync(function () {
 
-		$.rmfr($.I_AM_SURE, build);
+		$.DELETE(build);
 	});
 
 
 	make.target('lint', [], 'lint all JavaScript files with JSHint').sync(function () {
 
+		var jshint = {
+				// Enforcing Options
+				bitwise: true,
+				curly: true,
+				eqeqeq: true,
+				forin: true,
+				latedef: true,
+				newcap: true,
+				noempty: true,
+				plusplus: true,
+				trailing: true,
+				undef: true,
+
+				// Environments
+				browser: true
+			},
+			globals = {
+				'modulejs': true
+			};
+
 		$(src + '/_h5ai/client/js: **/*.js, ! lib/**')
-			.jshint(jshint);
+			.jshint(jshint, globals);
 	});
 
 
@@ -102,28 +89,28 @@ module.exports = function (make) {
 			.modified(mapSrc, $(src + ': _h5ai/client/js/**'))
 			.includify()
 			.uglifyjs()
-			.write($.OVERWRITE, mapSrc);
+			.WRITE(mapSrc);
 
 		$(src + ': _h5ai/client/css/*.less')
 			.modified(mapSrc, $(src + ': _h5ai/client/css/**'))
 			.less()
 			.cssmin()
-			.write($.OVERWRITE, mapSrc);
+			.WRITE(mapSrc);
 
 		$(src + ': **/*.jade')
 			.modified(mapSrc)
-			.handlebars(handlebarsEnv)
+			.handlebars(make.env)
 			.jade()
-			.write($.OVERWRITE, mapSrc);
+			.WRITE(mapSrc);
 
 		$(src + ': **, ! _h5ai/client/js/**, ! _h5ai/client/css/**, ! **/*.jade')
 			.modified(mapSrc)
-			.handlebars(handlebarsEnv)
-			.write($.OVERWRITE, mapSrc);
+			.handlebars(make.env)
+			.WRITE(mapSrc);
 
 		$(root + ': README*, LICENSE*')
 			.modified(mapRoot)
-			.write($.OVERWRITE, mapRoot);
+			.WRITE(mapRoot);
 	});
 
 
@@ -133,28 +120,28 @@ module.exports = function (make) {
 			.modified(mapSrc, $(src + ': _h5ai/client/js/**'))
 			.includify()
 			// .uglifyjs()
-			.write($.OVERWRITE, mapSrc);
+			.WRITE(mapSrc);
 
 		$(src + ': _h5ai/client/css/*.less')
 			.modified(mapSrc, $(src + ': _h5ai/client/css/**'))
 			.less()
 			// .cssmin()
-			.write($.OVERWRITE, mapSrc);
+			.WRITE(mapSrc);
 
 		$(src + ': **/*.jade')
 			.modified(mapSrc)
-			.handlebars(handlebarsEnv)
+			.handlebars(make.env)
 			.jade()
-			.write($.OVERWRITE, mapSrc);
+			.WRITE(mapSrc);
 
 		$(src + ': **, ! _h5ai/client/js/**, ! _h5ai/client/css/**, ! **/*.jade')
 			.modified(mapSrc)
-			.handlebars(handlebarsEnv)
-			.write($.OVERWRITE, mapSrc);
+			.handlebars(make.env)
+			.WRITE(mapSrc);
 
 		$(root + ': README*, LICENSE*')
 			.modified(mapRoot)
-			.write($.OVERWRITE, mapRoot);
+			.WRITE(mapRoot);
 	});
 
 
diff --git a/package.json b/package.json
index b848c08e..028a1094 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "h5ai",
-  "version": "0.23.0-dev",
+  "version": "0.23.0+",
   "description": "a modern HTTP web server index",
   "url": "http://larsjung.de/h5ai/",
   "author": "Lars Jung",

From cec6ca2e6e04b19bf6a94fd56931e71fe77aa2e7 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 16 Aug 2013 16:22:23 +0200
Subject: [PATCH 10/83] Some updates on the info page.

---
 makefile.js                             |  6 ++-
 src/_h5ai/client/css/inc/h5ai-info.less | 22 +++++------
 src/_h5ai/index.html.jade               | 51 ++++++++++++++++---------
 3 files changed, 48 insertions(+), 31 deletions(-)

diff --git a/makefile.js b/makefile.js
index c24553da..dfaf43be 100644
--- a/makefile.js
+++ b/makefile.js
@@ -85,16 +85,18 @@ module.exports = function (make) {
 
 	make.target('build', ['check-version'], 'build all updated files').sync(function () {
 
+		var header = '/* ' + pkg.name + ' ' + pkg.version + ' - ' + pkg.url + ' */'
+
 		$(src + ': _h5ai/client/js/*.js')
 			.modified(mapSrc, $(src + ': _h5ai/client/js/**'))
 			.includify()
-			.uglifyjs()
+			.uglifyjs({header: header})
 			.WRITE(mapSrc);
 
 		$(src + ': _h5ai/client/css/*.less')
 			.modified(mapSrc, $(src + ': _h5ai/client/css/**'))
 			.less()
-			.cssmin()
+			.cssmin({header: header})
 			.WRITE(mapSrc);
 
 		$(src + ': **/*.jade')
diff --git a/src/_h5ai/client/css/inc/h5ai-info.less b/src/_h5ai/client/css/inc/h5ai-info.less
index c77f1d9b..f662d64e 100644
--- a/src/_h5ai/client/css/inc/h5ai-info.less
+++ b/src/_h5ai/client/css/inc/h5ai-info.less
@@ -32,15 +32,15 @@ body#h5ai-info {
 		display: block;
 		color: #aaa;
 
-		.value {
-			margin-left: 0.5em;
-			padding: 2px 4px;
-			.border-radius(4px);
-			font-family: @font-family-mono;
-			letter-spacing: 0.1em;
-			background-color: @col-widget-back;
-			border: @border-widget;
-		}
+	}
+	code {
+		margin: 0 0.2em;
+		padding: 2px 4px;
+		.border-radius(4px);
+		font-family: @font-family-mono;
+		letter-spacing: 0.1em;
+		background-color: @col-widget-back;
+		border: @border-widget;
 	}
 	h1 {
 		font-size: 3.6em;
@@ -70,7 +70,7 @@ body#h5ai-info {
 
 		.test-label {
 			display: inline-block;
-			width: 300px;
+			width: 350px;
 		}
 		.test-result {
 			display: inline-block;
@@ -90,7 +90,7 @@ body#h5ai-info {
 			margin: 4px 0 12px 12px;
 			font-size: 0.7em;
 			color: #aaa;
-			width: 310px;
+			width: 350px;
 			line-height: 1.2em;
 		}
 	}
diff --git a/src/_h5ai/index.html.jade b/src/_h5ai/index.html.jade
index 6f29d1ee..f9564184 100644
--- a/src/_h5ai/index.html.jade
+++ b/src/_h5ai/index.html.jade
@@ -28,46 +28,61 @@ html.no-js( lang="en" )
 		span.build-version version {{pkg.version}}
 		span.build-stamp {{stamp}}
 		span.idx-file Index File: 
-			span.value
+			code.value
 
-		h2 server supports
+		h2 Server Details
 		ul#tests
 			li.test.php( data-id="php" )
-				span.test-label php version
+				span.test-label PHP version
 				span.test-result ?
-				div.test-info PHP version >= 5.2.1
+				div.test-info PHP version &gt;= 5.2.1
 			li.test( data-id="cache" )
-				span.test-label cache directory
+				span.test-label Cache directory
 				span.test-result ?
-				div.test-info web server has write access
+				div.test-info Web server has write access
 			li.test( data-id="thumbs" )
-				span.test-label image thumbs
+				span.test-label Image thumbs
 				span.test-result ?
 				div.test-info PHP GD extension with JPEG support available
 			li.test( data-id="exif" )
-				span.test-label use exif thumbs
+				span.test-label Use EXIF thumbs
 				span.test-result ?
 				div.test-info PHP EXIF extension available
 			li.test( data-id="ffmpeg" )
-				span.test-label movie thumbs
+				span.test-label Movie thumbs
 				span.test-result ?
-				div.test-info command 'ffmpeg' available
+				div.test-info
+					| Command line program 
+					code ffmpeg
+					|  available
 			li.test( data-id="convert" )
-				span.test-label pdf thumbs
+				span.test-label PDF thumbs
 				span.test-result ?
-				div.test-info command 'convert' available
+				div.test-info
+					| Command line program 
+					code convert
+					|  available
 			li.test( data-id="tar" )
-				span.test-label shell tar
+				span.test-label Shell tar
 				span.test-result ?
-				div.test-info command 'tar' available
+				div.test-info
+					| Command line program 
+					code tar
+					|  available
 			li.test( data-id="zip" )
-				span.test-label shell zip
+				span.test-label Shell zip
 				span.test-result ?
-				div.test-info command 'zip' available
+				div.test-info
+					| Command line program 
+					code zip
+					|  available
 			li.test( data-id="du" )
-				span.test-label folder size
+				span.test-label Folder sizes
 				span.test-result ?
-				div.test-info command 'du' available
+				div.test-info
+					| Command line program 
+					code du
+					|  available
 
 		div#bottombar.clearfix
 			span.left

From 2c8940d062fcc463e31247a7f52a630dcca3f84b Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 16 Aug 2013 18:18:38 +0200
Subject: [PATCH 11/83] Updates readme.

---
 README.md | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/README.md b/README.md
index d14e00e8..d49e325d 100644
--- a/README.md
+++ b/README.md
@@ -7,25 +7,21 @@ create [a new issue](http://github.com/lrsjng/h5ai/issues/new) on GitHub!
 
 ## Install
 
-( **note:** please don't use files from the `src` folder for installation,
-they need to be preprocessed to work correctly )
-
+**Note:** please don't use files from the `src` folder for installation,
+they need to be preprocessed to work correctly!
 You'll find a preprocessed package, as well as detailed installation
 instructions on the [project page](http://larsjung.de/h5ai/).
 
 
 ## Build
 
-( there are repositories for the latest [releases](http://release.larsjung.de/h5ai/) and [dev builds](http://release.larsjung.de/h5ai/dev/) )
-
-If you want to build **h5ai** yourself you need to install the build tool [fQuery](http://larsjung.de/fquery/) first:
+There are repositories for the latest [releases](http://release.larsjung.de/h5ai/) and [dev builds](http://release.larsjung.de/h5ai/dev/).
+But if you want to build **h5ai** yourself you need to install the build tool [fQuery](http://larsjung.de/fquery/) first:
 
     > npm install -g fquery
 
 This will install fQuery and its command line tool `makejs`. Run `makejs --help` to see if everything
-worked fine.
-
-To clone and build the project run the following commands.
+worked fine. To clone and build the project run the following commands.
 You'll find a new directory `build` including a fresh zipball.
 
     > git clone git://github.com/lrsjng/h5ai.git
@@ -56,7 +52,7 @@ It profits from these great projects:
 
 
 ## Changelog
-( **h5ai** uses [semantic versioning](http://semver.org/) )
+**h5ai** uses [semantic versioning](http://semver.org/).
 
 
 ### develop branch

From 9331d38545bbf98b7e7eff6829f759e45545d2e3 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 16 Aug 2013 18:29:02 +0200
Subject: [PATCH 12/83] Updates readme.

---
 README.md | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/README.md b/README.md
index d49e325d..8ad8a00e 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,5 @@
 # h5ai
-**a modern HTTP web server index for Apache httpd, lighttpd, nginx and Cherokee**
-
+**h5ai** is a modern HTTP web server index for Apache httpd, lighttpd, nginx and Cherokee.
 The preferred way to report a bug or make a feature request is to
 create [a new issue](http://github.com/lrsjng/h5ai/issues/new) on GitHub!
 

From 448ad6a27e995c71774c3ab1e691a82824c08a10 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 16 Aug 2013 19:09:37 +0200
Subject: [PATCH 13/83] Fix.

---
 makefile.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/makefile.js b/makefile.js
index dfaf43be..bf3e5c25 100644
--- a/makefile.js
+++ b/makefile.js
@@ -85,7 +85,7 @@ module.exports = function (make) {
 
 	make.target('build', ['check-version'], 'build all updated files').sync(function () {
 
-		var header = '/* ' + pkg.name + ' ' + pkg.version + ' - ' + pkg.url + ' */'
+		var header = '/* ' + pkg.name + ' ' + pkg.version + ' - ' + pkg.url + ' */';
 
 		$(src + ': _h5ai/client/js/*.js')
 			.modified(mapSrc, $(src + ': _h5ai/client/js/**'))

From b42cd95e41764225798235ed635a299bfb057fbc Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sun, 18 Aug 2013 19:59:57 +0200
Subject: [PATCH 14/83] Adds alt attributes to fallback img elements.

---
 src/_h5ai/server/php/inc/App.php | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/_h5ai/server/php/inc/App.php b/src/_h5ai/server/php/inc/App.php
index f699a823..a7c8e2aa 100644
--- a/src/_h5ai/server/php/inc/App.php
+++ b/src/_h5ai/server/php/inc/App.php
@@ -209,11 +209,13 @@ class App {
 		$html = "<table>";
 		$html .= "<tr><th></th><th><span>Name</span></th><th><span>Last modified</span></th><th><span>Size</span></th></tr>";
 		if ($folder->get_parent($cache)) {
-			$html .= "<tr><td><img src=\"" . $this->app_abs_href . "client/icons/16x16/folder-parent.png\"/></td><td><a href=\"..\">Parent Directory</a></td><td></td><td></td></tr>";
+			$html .= "<tr><td><img src=\"" . $this->app_abs_href . "client/icons/16x16/folder-parent.png\" alt=\"folder-parent\"/></td><td><a href=\"..\">Parent Directory</a></td><td></td><td></td></tr>";
 		}
 		foreach ($items as $item) {
+			$type = $item->is_folder ? "folder" : "default";
+
 			$html .= "<tr>";
-			$html .= "<td><img src=\"" . $this->app_abs_href . "client/icons/16x16/" . ($item->is_folder ? "folder" : "default") . ".png\"/></td>";
+			$html .= "<td><img src=\"" . $this->app_abs_href . "client/icons/16x16/" . $type . ".png\" alt=\"" . $type . "\"/></td>";
 			$html .= "<td><a href=\"" . $item->abs_href . "\">" . basename($item->abs_path) . "</a></td>";
 			$html .= "<td>" . date("Y-m-d H:i", $item->date) . "</td>";
 			$html .= "<td>" . ($item->size !== null ? intval($item->size / 1000) . " KB" : "" ) . "</td>";

From bc7607340c07f14117d02d08963a92f4c3b21657 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sun, 18 Aug 2013 21:09:35 +0200
Subject: [PATCH 15/83] Cleans fallback code.

---
 src/_h5ai/client/css/inc/bottombar.less | 1 -
 src/_h5ai/client/css/inc/general.less   | 9 +++------
 src/_h5ai/index.html.jade               | 4 ++--
 src/_h5ai/server/php/inc/page.php.jade  | 4 ++--
 4 files changed, 7 insertions(+), 11 deletions(-)

diff --git a/src/_h5ai/client/css/inc/bottombar.less b/src/_h5ai/client/css/inc/bottombar.less
index 646a5e33..8603e04f 100644
--- a/src/_h5ai/client/css/inc/bottombar.less
+++ b/src/_h5ai/client/css/inc/bottombar.less
@@ -46,7 +46,6 @@
 		margin-left: 16px;
 	}
 	.noBrowserMsg {
-		display: none;
 		color: @col-error;
 		margin-left: 16px;
 		a, a:active, a:visited {
diff --git a/src/_h5ai/client/css/inc/general.less b/src/_h5ai/client/css/inc/general.less
index 47307d19..8d2e140a 100644
--- a/src/_h5ai/client/css/inc/general.less
+++ b/src/_h5ai/client/css/inc/general.less
@@ -28,9 +28,6 @@
 @border-widget-sep: 1px solid @col-widget-sep;
 
 
-
-
-
 @font-family: Ubuntu, sans-serif;
 @font-family-mono: "Ubuntu Mono", monospace;
 
@@ -48,9 +45,9 @@ body {
 	margin: 30px;
 }
 
-html.js .hideOnJs, html.no-js .hideOnNoJs {
+html.js .noJsMsg {
 	display: none;
 }
-html.no-browser .noBrowserMsg {
-	display: inline !important;
+html.browser .noBrowserMsg {
+	display: none;
 }
diff --git a/src/_h5ai/index.html.jade b/src/_h5ai/index.html.jade
index f9564184..b317940f 100644
--- a/src/_h5ai/index.html.jade
+++ b/src/_h5ai/index.html.jade
@@ -2,7 +2,7 @@ doctype 5
 //if lt IE 9
 	<html class="no-js no-browser" lang="en">
 //[if gt IE 8]><!
-html.no-js( lang="en" )
+html.no-js.browser( lang="en" )
 	//<![endif]
 
 	head
@@ -88,7 +88,7 @@ html.no-js( lang="en" )
 			span.left
 				a#h5ai-reference( href="{{pkg.url}}", title="{{pkg.name}} · {{pkg.description}}" )
 					| {{pkg.name}} {{pkg.version}}
-				span.hideOnJs.noJsMsg
+				span.noJsMsg
 					| ⚡ JavaScript disabled! ⚡
 				span.noBrowserMsg
 					| ⚡ Unsupported browser! Works best in 
diff --git a/src/_h5ai/server/php/inc/page.php.jade b/src/_h5ai/server/php/inc/page.php.jade
index 6b56d57d..06a6c61e 100644
--- a/src/_h5ai/server/php/inc/page.php.jade
+++ b/src/_h5ai/server/php/inc/page.php.jade
@@ -6,7 +6,7 @@ doctype 5
 //if lt IE 9
 	<html class="no-js no-browser" lang="en">
 //[if gt IE 8]><!
-html.no-js( lang="en" )
+html.no-js.browser( lang="en" )
 	//<![endif]
 
 	head
@@ -34,7 +34,7 @@ html.no-js( lang="en" )
 			span.left
 				a#h5ai-reference( href="{{pkg.url}}", title="{{pkg.name}} · {{pkg.description}}" )
 					| {{pkg.name}} {{pkg.version}}
-				span.hideOnJs.noJsMsg
+				span.noJsMsg
 					| ⚡ JavaScript disabled! ⚡
 				span.noBrowserMsg
 					| ⚡ Unsupported browser! Works best in 

From 21f04e36bcde0688f51bf7207471792909eccb8f Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sun, 18 Aug 2013 21:40:08 +0200
Subject: [PATCH 16/83] Cleans styles.

---
 src/_h5ai/client/css/inc/bottombar.less   |  2 -
 src/_h5ai/client/css/inc/dropbox.less     |  2 +-
 src/_h5ai/client/css/inc/general.less     |  4 --
 src/_h5ai/client/css/inc/h5ai-info.less   |  2 +-
 src/_h5ai/client/css/inc/notify.less      |  2 +-
 src/_h5ai/client/css/inc/preview-img.less |  5 +-
 src/_h5ai/client/css/inc/preview-txt.less |  4 +-
 src/_h5ai/client/css/inc/topbar.less      |  2 -
 src/_h5ai/client/css/inc/tree.less        |  6 +--
 src/_h5ai/client/css/inc/view.less        |  6 +--
 src/_h5ai/client/css/lib/mixins.less      | 57 +++--------------------
 11 files changed, 15 insertions(+), 77 deletions(-)

diff --git a/src/_h5ai/client/css/inc/bottombar.less b/src/_h5ai/client/css/inc/bottombar.less
index 8603e04f..53ca8340 100644
--- a/src/_h5ai/client/css/inc/bottombar.less
+++ b/src/_h5ai/client/css/inc/bottombar.less
@@ -7,10 +7,8 @@
 	left: 0;
 	bottom: 0;
 	padding: 6px 0 8px 0;
-	// .vert-gradient(rgb(241,241,241), rgb(228,228,228));
 	background-color: @col-widget-back;
 	border-top: @border-widget;
-	// .box-shadow(0 -2px 4px 0 rgba(0, 0, 0, 0.15);
 
 	color: #999;
 	text-align: center;
diff --git a/src/_h5ai/client/css/inc/dropbox.less b/src/_h5ai/client/css/inc/dropbox.less
index 785dc2b6..ed8dfefa 100644
--- a/src/_h5ai/client/css/inc/dropbox.less
+++ b/src/_h5ai/client/css/inc/dropbox.less
@@ -1,7 +1,7 @@
 
 #content {
 	border: 1px dashed #fff;
-	.border-radius(8px);
+	border-radius: 8px;
 	.transition(border-color 0.2s ease-in-out);
 
 	&.hint {
diff --git a/src/_h5ai/client/css/inc/general.less b/src/_h5ai/client/css/inc/general.less
index 8d2e140a..aa80c092 100644
--- a/src/_h5ai/client/css/inc/general.less
+++ b/src/_h5ai/client/css/inc/general.less
@@ -16,9 +16,6 @@
 @col-widget-back-sel: rgba(255,255,255,0.8);
 @col-widget-sep: @col-border;
 
-// @col-sb-back: rgb(210,210,210);
-// @col-sb-thumb: rgb(180,180,180);
-// @col-sb-thumb-active: rgb(150,150,150);
 @col-sb-back: rgba(0,0,0,0.08);
 @col-sb-thumb: rgba(0,0,0,0.15);
 @col-sb-thumb-active: rgba(0,0,0,0.25);
@@ -38,7 +35,6 @@ html { overflow-y: auto; }
 
 body {
 	font-family: @font-family;
-	// font-weight: 400;
 	font-size: 13px;
 	color: @col;
 	background-color: @col-back;
diff --git a/src/_h5ai/client/css/inc/h5ai-info.less b/src/_h5ai/client/css/inc/h5ai-info.less
index f662d64e..d231be17 100644
--- a/src/_h5ai/client/css/inc/h5ai-info.less
+++ b/src/_h5ai/client/css/inc/h5ai-info.less
@@ -36,7 +36,7 @@ body#h5ai-info {
 	code {
 		margin: 0 0.2em;
 		padding: 2px 4px;
-		.border-radius(4px);
+		border-radius: 4px;
 		font-family: @font-family-mono;
 		letter-spacing: 0.1em;
 		background-color: @col-widget-back;
diff --git a/src/_h5ai/client/css/inc/notify.less b/src/_h5ai/client/css/inc/notify.less
index 4ac6545e..8c1b7867 100644
--- a/src/_h5ai/client/css/inc/notify.less
+++ b/src/_h5ai/client/css/inc/notify.less
@@ -9,6 +9,6 @@
 	padding: 2px 6px 2px 6px;
 	color: #fff;
 	background-color: rgba(0, 0, 0, 0.2);
-	.border-radius(4px);
+	border-radius: 4px;
 	text-align: center;
 }
diff --git a/src/_h5ai/client/css/inc/preview-img.less b/src/_h5ai/client/css/inc/preview-img.less
index a4542c22..ce69d923 100644
--- a/src/_h5ai/client/css/inc/preview-img.less
+++ b/src/_h5ai/client/css/inc/preview-img.less
@@ -24,7 +24,7 @@
 	max-width: 100%;
 	max-height: 100%;
 	border: 2px solid #fff;
-	.border-radius(4px);
+	border-radius: 4px;
 
 	background-color: @check-white;
 	background-image:
@@ -39,7 +39,7 @@
 
 	#pv-img-image {
 		border: 0;
-		.border-radius(0);
+		border-radius: 0;
 	}
 }
 
@@ -124,7 +124,6 @@
 	height: 32px;
 	left: 0;
 	bottom: 0;
-	// .vert-gradient(rgb(27,27,27), rgb(14,14,14));
 	background-color: rgb(27,27,27);
 	border-top: 1px solid rgb(45,45,45);
 }
diff --git a/src/_h5ai/client/css/inc/preview-txt.less b/src/_h5ai/client/css/inc/preview-txt.less
index bbbb893a..a236ff0a 100644
--- a/src/_h5ai/client/css/inc/preview-txt.less
+++ b/src/_h5ai/client/css/inc/preview-txt.less
@@ -19,7 +19,7 @@
 	padding: 10px;
 	background-color: #fff;
 	border: 2px solid #fff;
-	.border-radius(4px);
+	border-radius: 4px;
 	text-align: left;
 	overflow: auto;
 	position: relative;
@@ -227,6 +227,6 @@
 	height: 32px;
 	left: 0;
 	bottom: 0;
-	.vert-gradient(rgb(27,27,27), rgb(14,14,14));
+	background-color: rgb(27,27,27);
 	border-top: 1px solid rgb(45,45,45);
 }
diff --git a/src/_h5ai/client/css/inc/topbar.less b/src/_h5ai/client/css/inc/topbar.less
index 04b52559..e0da03c6 100644
--- a/src/_h5ai/client/css/inc/topbar.less
+++ b/src/_h5ai/client/css/inc/topbar.less
@@ -6,10 +6,8 @@
 	min-height: 30px;
 	left: 0;
 	top: 0;
-	// .vert-gradient(rgb(241,241,241), rgb(228,228,228));
 	background-color: @col-widget-back;
 	border-bottom: @border-widget;
-	// .box-shadow(0 2px 4px 0 rgba(0, 0, 0, 0.15);
 }
 
 
diff --git a/src/_h5ai/client/css/inc/tree.less b/src/_h5ai/client/css/inc/tree.less
index 2f258b6f..be456672 100644
--- a/src/_h5ai/client/css/inc/tree.less
+++ b/src/_h5ai/client/css/inc/tree.less
@@ -12,15 +12,12 @@
 	border-right: @border-widget;
 
 	.sp-scrollbar {
-		// margin: 8px 8px 8px 0;
 		width: 6px;
 		background-color: @col-sb-back;
-		// .border-radius(3px);
 		cursor: pointer;
 
 		.sp-thumb {
 			background-color: @col-sb-thumb;
-			// .border-radius(3px);
 		}
 		&.active .sp-thumb {
 			background-color: @col-sb-thumb-active;
@@ -63,14 +60,13 @@
 		padding: 4px 6px;
 		color: #555;
 		border: 1px solid rgba(0,0,0,0);
-		.border-radius(3px);
+		border-radius: 3px;
 		text-decoration: none;
 		opacity: 0.7;
 
 		&:hover, &.hover {
 			color: @col-hover;
 			background-color: @col-widget-back-hover;
-			// border-color: rgba(0,0,0,0.05);
 			opacity: 1;
 		}
 	}
diff --git a/src/_h5ai/client/css/inc/view.less b/src/_h5ai/client/css/inc/view.less
index f75c44c7..14103a72 100644
--- a/src/_h5ai/client/css/inc/view.less
+++ b/src/_h5ai/client/css/inc/view.less
@@ -76,7 +76,6 @@
 				overflow: hidden;
 
 				&:hover, &.hover {
-					// color: #e80;
 					color: @col-hover;
 					background-color: @item-background-col-hover;
 					border-color: @item-border-col-hover;
@@ -86,8 +85,6 @@
 			&.selected:not(.selecting), &.selecting:not(.selected) {
 
 				a, a:active, a:visited {
-					// color: #000;
-					// color: @col-hover;
 					background-color: @item-background-col-sel;
 					border-color: @item-border-col-sel;
 
@@ -105,7 +102,6 @@
 				color: #aaa;
 
 				&:hover, &.hover {
-					// color: #e80;
 					color: @col-hover;
 				}
 			}
@@ -131,7 +127,7 @@
 			img {
 
 				&.thumb {
-					.box-shadow(0 0 0 1px #ddd);
+					box-shadow: 0 0 0 1px #ddd;
 				}
 			}
 
diff --git a/src/_h5ai/client/css/lib/mixins.less b/src/_h5ai/client/css/lib/mixins.less
index e1ecd862..82978299 100644
--- a/src/_h5ai/client/css/lib/mixins.less
+++ b/src/_h5ai/client/css/lib/mixins.less
@@ -1,57 +1,12 @@
 
-.border-radius (@radius) {
-    -webkit-border-radius: @radius; /* Saf3-4, iOS 1-3.2, Android <1.6 */
-       -moz-border-radius: @radius; /* FF1-3.6 */
-            border-radius: @radius; /* Opera 10.5, IE9, Saf5, Chrome, FF4, iOS 4, Android 2.1+ */
-}
-
-
-.background-clip () {
-    -webkit-background-clip: padding-box;
-       -moz-background-clip: padding;
-            background-clip: padding-box;
-}
-
-
-.box-shadow (@shadow) {
-    -webkit-box-shadow: @shadow; /* Saf3-4 */
-       -moz-box-shadow: @shadow; /* FF3.5 - 3.6 */
-            box-shadow: @shadow; /* Opera 10.5, IE9, FF4+, Chrome 10+ */
-}
-
-
 .transition (@transition) {
-    -webkit-transition: @transition; /* Saf3.2+, Chrome */
-       -moz-transition: @transition; /* FF4+ */
-        -ms-transition: @transition; /* IE10? */
-         -o-transition: @transition; /* Opera 10.5+ */
-            transition: @transition;
+	-webkit-transition: @transition;
+	transition: @transition;
 }
 
-
 .transform (@transform) {
-    -webkit-transform: @transform; /* Saf3.1+, Chrome */
-       -moz-transform: @transform; /* FF3.5+ */
-        -ms-transform: @transform; /* IE9 */
-         -o-transform: @transform; /* Opera 10.5 */
-            transform: @transform;
-                 zoom: 1;
-}
-
-
-.vert-gradient (@top, @bottom) {
-    background-color: @top;
-    background-image: -webkit-gradient(linear, left top, left bottom, from(@top), to(@bottom)); /* Saf4+, Chrome */
-    background-image: -webkit-linear-gradient(top, @top, @bottom); /* Chrome 10+, Saf5.1+, iOS 5+ */
-    background-image:    -moz-linear-gradient(top, @top, @bottom); /* FF3.6 */
-    background-image:     -ms-linear-gradient(top, @top, @bottom); /* IE10 */
-    background-image:      -o-linear-gradient(top, @top, @bottom); /* Opera 11.10+ */
-    background-image:         linear-gradient(top, @top, @bottom);
-}
-
-
-.background-size (@size) {
-    -webkit-background-size: @size; /* Saf3-4 */
-       -moz-background-size: @size; /* FF3.6 */
-            background-size: @size; /* Opera, IE9, Saf5, Chrome, FF4 */
+	-webkit-transform: @transform;
+	-ms-transform: @transform;
+	transform: @transform;
+	zoom: 1;
 }

From 0acd3efaadb8bfe8d6d269815b7664ace4d64264 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Mon, 19 Aug 2013 14:03:23 +0200
Subject: [PATCH 17/83] Styles.

---
 src/_h5ai/client/css/inc/preview-img.less |   6 +-
 src/_h5ai/client/css/inc/preview-txt.less |   4 +-
 src/_h5ai/client/css/inc/preview.less     | 110 ++++++++++++++++++++++
 src/_h5ai/client/css/styles.less          |   1 +
 4 files changed, 116 insertions(+), 5 deletions(-)
 create mode 100644 src/_h5ai/client/css/inc/preview.less

diff --git a/src/_h5ai/client/css/inc/preview-img.less b/src/_h5ai/client/css/inc/preview-img.less
index ce69d923..2ef51489 100644
--- a/src/_h5ai/client/css/inc/preview-img.less
+++ b/src/_h5ai/client/css/inc/preview-img.less
@@ -23,8 +23,7 @@
 #pv-img-image {
 	max-width: 100%;
 	max-height: 100%;
-	border: 2px solid #fff;
-	border-radius: 4px;
+	border: 1px solid #fff;
 
 	background-color: @check-white;
 	background-image:
@@ -39,12 +38,13 @@
 
 	#pv-img-image {
 		border: 0;
-		border-radius: 0;
 	}
 }
 
 #pv-img-close {
 	position: fixed;
+	left: 0;
+	top: 0;
 	width: 100%;
 	height: 100%;
 	cursor: pointer;
diff --git a/src/_h5ai/client/css/inc/preview-txt.less b/src/_h5ai/client/css/inc/preview-txt.less
index a236ff0a..bff27626 100644
--- a/src/_h5ai/client/css/inc/preview-txt.less
+++ b/src/_h5ai/client/css/inc/preview-txt.less
@@ -9,6 +9,7 @@
 	z-index: 100;
 
 	background-color: rgba(0,0,0,0.5);
+	.transition(background-color 0.3s ease-in-out);
 
 	text-align: center;
 }
@@ -18,8 +19,7 @@
 	margin: 0 auto;
 	padding: 10px;
 	background-color: #fff;
-	border: 2px solid #fff;
-	border-radius: 4px;
+	border: 1px solid #fff;
 	text-align: left;
 	overflow: auto;
 	position: relative;
diff --git a/src/_h5ai/client/css/inc/preview.less b/src/_h5ai/client/css/inc/preview.less
new file mode 100644
index 00000000..79789342
--- /dev/null
+++ b/src/_h5ai/client/css/inc/preview.less
@@ -0,0 +1,110 @@
+
+#pv-overlay {
+	display: none;
+	position: fixed;
+	left: 0;
+	top: 0;
+	right: 0;
+	bottom: 0;
+	z-index: 100;
+
+	background-color: rgba(0,0,0,0.5);
+	.transition(background-color 0.3s ease-in-out);
+
+	text-align: center;
+}
+
+#pv-overlay.fullscreen {
+	background-color: #111;
+}
+
+#pv-spinner {
+	position: fixed;
+}
+
+#pv-close {
+	position: fixed;
+	left: 0;
+	top: 0;
+	width: 100%;
+	height: 100%;
+	cursor: pointer;
+}
+
+#pv-prev {
+	position: fixed;
+	cursor: pointer;
+}
+
+#pv-next {
+	position: fixed;
+	cursor: pointer;
+}
+
+#pv-buttons {
+	list-style: none;
+	list-style-image: none;
+	margin: 0;
+	padding: 0;
+
+	img {
+		position: relative;
+		top: -2px;
+		width: 16px;
+		height: 16px;
+	}
+	img + span, img + input {
+		margin-left: 6px;
+	}
+	input {
+		background-color: rgba(255,255,255,0.1);
+		border: none;
+		color: #ccc;
+	}
+
+	.bar-label {
+		display: block;
+		color: #ccc;
+		height: 30px;
+		line-height: 30px;
+		padding: 0 10px;
+		opacity: 0.7;
+		.transition(all 0.2s ease-in-out);
+	}
+
+	.bar-highlight {
+		background-color: rgba(255,255,255,0.1);
+		opacity: 1.0;
+	}
+
+	@bar-sep-border: 1px solid rgba(255,255,255,0.08);
+
+	.bar-button {
+		.bar-label;
+		cursor: pointer;
+		&:hover, &.hover {
+			.bar-highlight;
+		}
+	}
+
+	.bar-left {
+		float: left;
+		border-right: @bar-sep-border;
+	}
+
+	.bar-right {
+		float: right;
+		border-left: @bar-sep-border;
+	}
+}
+
+#pv-bottombar {
+	position: fixed;
+	z-index: 5;
+	width: 100%;
+	height: 32px;
+	left: 0;
+	bottom: 0;
+	background-color: rgb(27,27,27);
+	border-top: 1px solid rgb(45,45,45);
+}
diff --git a/src/_h5ai/client/css/styles.less b/src/_h5ai/client/css/styles.less
index de6b62e8..2eeb4cb2 100644
--- a/src/_h5ai/client/css/styles.less
+++ b/src/_h5ai/client/css/styles.less
@@ -13,6 +13,7 @@
 @import "inc/l10n";
 @import "inc/tree";
 @import "inc/qrcode";
+@import "inc/preview";
 @import "inc/preview-img";
 @import "inc/preview-txt";
 @import "inc/notify";

From 8dbd7dd2a7f2d9cb24ea8042fa5f416621ecad0a Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Tue, 20 Aug 2013 19:21:42 +0200
Subject: [PATCH 18/83] Adds generic preview.

---
 src/_h5ai/client/js/inc/ext/preview.js | 247 +++++++++++++++++++++++++
 1 file changed, 247 insertions(+)
 create mode 100644 src/_h5ai/client/js/inc/ext/preview.js

diff --git a/src/_h5ai/client/js/inc/ext/preview.js b/src/_h5ai/client/js/inc/ext/preview.js
new file mode 100644
index 00000000..bcfef0ca
--- /dev/null
+++ b/src/_h5ai/client/js/inc/ext/preview.js
@@ -0,0 +1,247 @@
+
+modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'core/store', 'core/event', 'core/location'], function (_, $, allsettings, resource, store, event, location) {
+
+	var settings = _.extend({
+			enabled: true
+		}, allsettings['preview']),
+
+		template = '<div id="pv-overlay" class="noSelection">' +
+						'<div id="pv-content">' +
+							'<img id="pv-image"/>' +
+						'</div>' +
+						'<div id="pv-spinner">' +
+							'<img src="' + resource.image('spinner') + '"/>' +
+						'</div>' +
+						'<div id="pv-close"/>' +
+						'<div id="pv-prev"/>' +
+						'<div id="pv-next"/>' +
+						'<div id="pv-bottombar" class="clearfix">' +
+							'<ul id="pv-buttons">' +
+								'<li id="pv-bar-close" class="bar-right bar-button"><img src="' + resource.image('preview/close') + '"/></li>' +
+								'<li id="pv-bar-original" class="bar-right"><a class="bar-button" target="_blank"><img src="' + resource.image('preview/raw') + '"/></a></li>' +
+								'<li id="pv-bar-fullscreen" class="bar-right bar-button"><img src="' + resource.image('preview/fullscreen') + '"/></li>' +
+								'<li id="pv-bar-next" class="bar-right bar-button"><img src="' + resource.image('preview/next') + '"/></li>' +
+								'<li id="pv-bar-idx" class="bar-right bar-label"/>' +
+								'<li id="pv-bar-prev" class="bar-right bar-button"><img src="' + resource.image('preview/prev') + '"/></li>' +
+							'</ul>' +
+						'</div>' +
+					'</div>',
+
+		storekey = 'preview.isFullscreen',
+
+		currentEntries = [],
+		currentIdx = 0,
+		isFullscreen = store.get(storekey) || false,
+
+		adjustSize = function () {
+
+			var rect = $(window).fracs('viewport'),
+				$container = $('#pv-content'),
+				$spinner = $('#pv-spinner'),
+				$spinnerimg = $spinner.find('img').width(100).height(100),
+				$img = $('#pv-image'),
+				margin = isFullscreen ? 0 : 20,
+				barheight = isFullscreen ? 0 : 31;
+
+			$container.add($spinner).css({
+				width: rect.width - 2 * margin,
+				height: rect.height - 2 * margin - barheight,
+				left: margin,
+				top: margin
+			});
+
+			var lr = ($container.width() - $img.width()) / 2,
+				tb = ($container.height() - $img.height()) / 2;
+
+			$img.css({
+				margin: '' + tb + 'px ' + lr + 'px'
+			});
+			$spinnerimg.css({
+				margin: '' + (($spinner.height() - $spinnerimg.height()) / 2) + 'px ' + (($spinner.width() - $spinnerimg.height()) / 2) + 'px'
+			});
+
+			rect = $img.fracs('rect');
+			if (!rect) {
+				return;
+			}
+			rect = rect.relativeTo($('#pv-overlay').fracs('rect'));
+
+			$('#pv-prev').css({
+				left: rect.left,
+				top: rect.top,
+				width: rect.width / 2,
+				height: rect.height
+			});
+			$('#pv-next').css({
+				left: rect.left + rect.width / 2,
+				top: rect.top,
+				width: rect.width / 2,
+				height: rect.height
+			});
+
+			$('#pv-bar-percent').text('' + (100 * $img.width() / $img[0].naturalWidth).toFixed(0) + '%');
+			if (isFullscreen) {
+				$('#pv-overlay').addClass('fullscreen');
+				$('#pv-bar-fullscreen').find('img').attr('src', resource.image('preview/no-fullscreen'));
+				$('#pv-bottombar').fadeOut(400);
+			} else {
+				$('#pv-overlay').removeClass('fullscreen');
+				$('#pv-bar-fullscreen').find('img').attr('src', resource.image('preview/fullscreen'));
+				$('#pv-bottombar').fadeIn(200);
+			}
+		},
+
+		onEnter = function (items, idx) {
+
+			$(window).on('keydown', onKeydown);
+			$('#pv-image').hide();
+			$('#pv-overlay').stop(true, true).fadeIn(200);
+
+			currentEntries = items;
+			adjustSize();
+		},
+
+		onNext = function () {
+
+			if (_.isFunction(onIndexChange)) {
+				onIndexChange(1);
+			}
+		},
+
+		onPrevious = function () {
+
+			if (_.isFunction(onIndexChange)) {
+				onIndexChange(-1);
+			}
+		},
+
+		onExit = function () {
+
+			$(window).off('keydown', onKeydown);
+			$('#pv-overlay').stop(true, true).fadeOut(200);
+		},
+
+		onFullscreen = function () {
+
+			isFullscreen = !isFullscreen;
+			store.put(storekey, isFullscreen);
+
+			adjustSize();
+		},
+
+		onKeydown = function (event) {
+
+			var key = event.which;
+
+			if (key === 27) { // esc
+				event.preventDefault();
+				event.stopImmediatePropagation();
+				onExit();
+			} else if (key === 8 || key === 37 || key === 40) { // backspace, left, down
+				event.preventDefault();
+				event.stopImmediatePropagation();
+				onPrevious();
+			} else if (key === 13 || key === 32 || key === 38 || key === 39) { // enter, space, up, right
+				event.preventDefault();
+				event.stopImmediatePropagation();
+				onNext();
+			} else if (key === 70) { // f
+				event.preventDefault();
+				event.stopImmediatePropagation();
+				onFullscreen();
+			}
+		},
+
+		setIndex = function (idx, total) {
+
+			if (_.isNumber(idx)) {
+				$('#pv-bar-idx').show().text('' + idx + (_.isNumber(total) ? '/' + total : ''));
+			} else {
+				$('#pv-bar-idx').hide();
+			}
+		},
+
+		setLabels = function (labels) {
+
+			$('#pv-buttons .bar-left').remove();
+			_.each(labels, function (label) {
+
+				$('<li />')
+					.addClass('bar-left bar-label')
+					.text(label)
+					.appendTo('#pv-buttons');
+			});
+		},
+
+		onIndexChange = null,
+		setOnIndexChange = function (fn) {
+
+			onIndexChange = fn;
+		},
+
+		init = function () {
+
+			if (!settings.enabled) {
+				return;
+			}
+
+			$(template).appendTo('body');
+			$('#pv-bar-prev, #pv-prev').on('click', onPrevious);
+			$('#pv-bar-next, #pv-next').on('click', onNext);
+			$('#pv-bar-close, #pv-close').on('click', onExit);
+			$('#pv-bar-fullscreen').on('click', onFullscreen);
+
+			$('#pv-prev')
+				.on('mouseenter', function () {
+					$('#pv-bar-prev').addClass('hover');
+				})
+				.on('mouseleave', function () {
+					$('#pv-bar-prev').removeClass('hover');
+				});
+
+			$('#pv-next')
+				.on('mouseenter', function () {
+					$('#pv-bar-next').addClass('hover');
+				})
+				.on('mouseleave', function () {
+					$('#pv-bar-next').removeClass('hover');
+				});
+
+			$('#pv-close')
+				.on('mouseenter', function () {
+					$('#pv-bar-close').addClass('hover');
+				})
+				.on('mouseleave', function () {
+					$('#pv-bar-close').removeClass('hover');
+				});
+
+			$('#pv-overlay')
+				.on('keydown', onKeydown)
+				.on('mousemove', function (event) {
+
+					if (isFullscreen) {
+						var rect = $('#pv-overlay').fracs('rect');
+
+						if (rect.bottom - event.pageY < 64) {
+							$('#pv-bottombar').fadeIn(200);
+						} else {
+							$('#pv-bottombar').fadeOut(400);
+						}
+					}
+				})
+				.on('click mousedown mousemove keydown keypress', function (event) {
+
+					event.stopImmediatePropagation();
+				});
+
+			$(window).on('resize load', adjustSize);
+		};
+
+	init();
+
+	return {
+		setIndex: setIndex,
+		setLabels: setLabels,
+		setOnIndexChange: setOnIndexChange
+	};
+});

From 25c131f875fd6daf2a7279857a42fa3d56ce1c7b Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Wed, 21 Aug 2013 14:04:20 +0200
Subject: [PATCH 19/83] Updates image preview.

---
 src/_h5ai/client/css/inc/preview-img.less  | 117 +--------
 src/_h5ai/client/css/inc/preview.less      |  47 +++-
 src/_h5ai/client/js/inc/ext/preview-img.js | 263 ++++-----------------
 src/_h5ai/client/js/inc/ext/preview.js     | 161 +++++++------
 4 files changed, 180 insertions(+), 408 deletions(-)

diff --git a/src/_h5ai/client/css/inc/preview-img.less b/src/_h5ai/client/css/inc/preview-img.less
index 2ef51489..7ca5b28a 100644
--- a/src/_h5ai/client/css/inc/preview-img.less
+++ b/src/_h5ai/client/css/inc/preview-img.less
@@ -1,29 +1,11 @@
 
-#pv-img-overlay {
-	display: none;
-	position: fixed;
-	left: 0;
-	top: 0;
-	right: 0;
-	bottom: 0;
-	z-index: 100;
-
-	background-color: rgba(0,0,0,0.5);
-	.transition(background-color 0.3s ease-in-out);
-
-	text-align: center;
-}
-
-#pv-img-content, #pv-spinner {
-	position: fixed;
-}
-
 @check-white: #f8f8f8;
 @check-black: #e8e8e8;
 #pv-img-image {
+	position: absolute;
+
 	max-width: 100%;
 	max-height: 100%;
-	border: 1px solid #fff;
 
 	background-color: @check-white;
 	background-image:
@@ -32,98 +14,3 @@
 	background-size: 60px 60px;
 	background-position: 0 0, 30px 30px
 }
-
-#pv-img-overlay.fullscreen {
-	background-color: #111;
-
-	#pv-img-image {
-		border: 0;
-	}
-}
-
-#pv-img-close {
-	position: fixed;
-	left: 0;
-	top: 0;
-	width: 100%;
-	height: 100%;
-	cursor: pointer;
-}
-
-#pv-img-prev {
-	position: fixed;
-	cursor: pointer;
-}
-
-#pv-img-next {
-	position: fixed;
-	cursor: pointer;
-}
-
-#pv-img-buttons, #pv-img-topbuttons {
-	list-style: none;
-	list-style-image: none;
-	margin: 0;
-	padding: 0;
-
-	img {
-		position: relative;
-		top: -2px;
-		width: 16px;
-		height: 16px;
-	}
-	img + span, img + input {
-		margin-left: 6px;
-	}
-	input {
-		background-color: rgba(255,255,255,0.1);
-		border: none;
-		color: #ccc;
-	}
-
-	.bar-label {
-		display: block;
-		color: #ccc;
-		height: 30px;
-		line-height: 30px;
-		padding: 0 10px;
-		opacity: 0.7;
-		.transition(all 0.2s ease-in-out);
-	}
-
-	.bar-highlight {
-		background-color: rgba(255,255,255,0.1);
-		opacity: 1.0;
-	}
-
-	@bar-sep-border: 1px solid rgba(255,255,255,0.08);
-
-	.bar-button {
-		.bar-label;
-		cursor: pointer;
-		&:hover, &.hover {
-			.bar-highlight;
-		}
-	}
-
-	.bar-left {
-		float: left;
-		border-right: @bar-sep-border;
-	}
-
-	.bar-right {
-		float: right;
-		border-left: @bar-sep-border;
-	}
-}
-
-#pv-img-bottombar {
-	position: fixed;
-	z-index: 5;
-	width: 100%;
-	height: 32px;
-	left: 0;
-	bottom: 0;
-	background-color: rgb(27,27,27);
-	border-top: 1px solid rgb(45,45,45);
-}
diff --git a/src/_h5ai/client/css/inc/preview.less b/src/_h5ai/client/css/inc/preview.less
index 79789342..3ca1895f 100644
--- a/src/_h5ai/client/css/inc/preview.less
+++ b/src/_h5ai/client/css/inc/preview.less
@@ -18,12 +18,23 @@
 	background-color: #111;
 }
 
-#pv-spinner {
-	position: fixed;
+#pv-content {
+	position: absolute;
+	overflow: hidden;
 }
 
-#pv-close {
-	position: fixed;
+#pv-spinner {
+	position: absolute;
+
+	img {
+		width: 100px;
+		height: 100px;
+		margin: -50px -50px;
+	}
+}
+
+#pv-close-area {
+	position: absolute;
 	left: 0;
 	top: 0;
 	width: 100%;
@@ -31,14 +42,32 @@
 	cursor: pointer;
 }
 
-#pv-prev {
-	position: fixed;
+#pv-prev-area, #pv-next-area {
+	position: absolute;
+	top: 50%;
 	cursor: pointer;
+	opacity: 0.5;
+	.transition(all 0.2s ease-in-out);
+
+	img {
+		background-color: rgba(0,0,0,0.5);
+		border-radius: 8px;
+		width: 48px;
+		height: 48px;
+		margin: -24px 0;
+	}
+
+	&:hover {
+		opacity: 1;
+	}
 }
 
-#pv-next {
-	position: fixed;
-	cursor: pointer;
+#pv-prev-area {
+	left: 8px;
+}
+
+#pv-next-area {
+	right: 8px;
 }
 
 #pv-buttons {
diff --git a/src/_h5ai/client/js/inc/ext/preview-img.js b/src/_h5ai/client/js/inc/ext/preview-img.js
index bf693a9b..ead5a717 100644
--- a/src/_h5ai/client/js/inc/ext/preview-img.js
+++ b/src/_h5ai/client/js/inc/ext/preview-img.js
@@ -1,100 +1,11 @@
 
-modulejs.define('ext/preview-img', ['_', '$', 'core/settings', 'core/resource', 'core/store', 'core/event', 'core/location'], function (_, $, allsettings, resource, store, event, location) {
+modulejs.define('ext/preview-img', ['_', '$', 'core/settings', 'core/store', 'core/event', 'ext/preview'], function (_, $, allsettings, store, event, preview) {
 
 	var settings = _.extend({
 			enabled: false,
 			types: ['bmp', 'gif', 'ico', 'image', 'jpg', 'png', 'tiff']
 		}, allsettings['preview-img']),
 
-		template = '<div id="pv-img-overlay" class="noSelection">' +
-						'<div id="pv-img-content">' +
-							'<img id="pv-img-image"/>' +
-						'</div>' +
-						'<div id="pv-spinner">' +
-							'<img src="' + resource.image('spinner') + '"/>' +
-						'</div>' +
-						'<div id="pv-img-close"/>' +
-						'<div id="pv-img-prev"/>' +
-						'<div id="pv-img-next"/>' +
-						'<div id="pv-img-bottombar" class="clearfix">' +
-							'<ul id="pv-img-buttons">' +
-								'<li id="pv-img-bar-size" class="bar-left bar-label"/>' +
-								'<li id="pv-img-bar-percent" class="bar-left bar-label"/>' +
-								'<li id="pv-img-bar-label" class="bar-left bar-label"/>' +
-								'<li id="pv-img-bar-close" class="bar-right bar-button"><img src="' + resource.image('preview/close') + '"/></li>' +
-								'<li id="pv-img-bar-original" class="bar-right"><a class="bar-button" target="_blank"><img src="' + resource.image('preview/raw') + '"/></a></li>' +
-								'<li id="pv-img-bar-fullscreen" class="bar-right bar-button"><img src="' + resource.image('preview/fullscreen') + '"/></li>' +
-								'<li id="pv-img-bar-next" class="bar-right bar-button"><img src="' + resource.image('preview/next') + '"/></li>' +
-								'<li id="pv-img-bar-idx" class="bar-right bar-label"/>' +
-								'<li id="pv-img-bar-prev" class="bar-right bar-button"><img src="' + resource.image('preview/prev') + '"/></li>' +
-							'</ul>' +
-						'</div>' +
-					'</div>',
-
-		storekey = 'preview-img.isFullscreen',
-
-		currentEntries = [],
-		currentIdx = 0,
-		isFullscreen = store.get(storekey) || false,
-
-		adjustSize = function () {
-
-			var rect = $(window).fracs('viewport'),
-				$container = $('#pv-img-content'),
-				$spinner = $('#pv-spinner'),
-				$spinnerimg = $spinner.find('img').width(100).height(100),
-				$img = $('#pv-img-image'),
-				margin = isFullscreen ? 0 : 20,
-				barheight = isFullscreen ? 0 : 31;
-
-			$container.add($spinner).css({
-				width: rect.width - 2 * margin,
-				height: rect.height - 2 * margin - barheight,
-				left: margin,
-				top: margin
-			});
-
-			var lr = ($container.width() - $img.width()) / 2,
-				tb = ($container.height() - $img.height()) / 2;
-
-			$img.css({
-				margin: '' + tb + 'px ' + lr + 'px'
-			});
-			$spinnerimg.css({
-				margin: '' + (($spinner.height() - $spinnerimg.height()) / 2) + 'px ' + (($spinner.width() - $spinnerimg.height()) / 2) + 'px'
-			});
-
-			rect = $img.fracs('rect');
-			if (!rect) {
-				return;
-			}
-			rect = rect.relativeTo($('#pv-img-overlay').fracs('rect'));
-
-			$('#pv-img-prev').css({
-				left: rect.left,
-				top: rect.top,
-				width: rect.width / 2,
-				height: rect.height
-			});
-			$('#pv-img-next').css({
-				left: rect.left + rect.width / 2,
-				top: rect.top,
-				width: rect.width / 2,
-				height: rect.height
-			});
-
-			$('#pv-img-bar-percent').text('' + (100 * $img.width() / $img[0].naturalWidth).toFixed(0) + '%');
-			if (isFullscreen) {
-				$('#pv-img-overlay').addClass('fullscreen');
-				$('#pv-img-bar-fullscreen').find('img').attr('src', resource.image('preview/no-fullscreen'));
-				$('#pv-img-bottombar').fadeOut(400);
-			} else {
-				$('#pv-img-overlay').removeClass('fullscreen');
-				$('#pv-img-bar-fullscreen').find('img').attr('src', resource.image('preview/fullscreen'));
-				$('#pv-img-bottombar').fadeIn(200);
-			}
-		},
-
 		preloadImg = function (src, callback) {
 
 			var $img = $('<img/>')
@@ -106,94 +17,69 @@ modulejs.define('ext/preview-img', ['_', '$', 'core/settings', 'core/resource',
 				.attr('src', src);
 		},
 
-		onIndexChange = function (idx) {
-
-			currentIdx = (idx + currentEntries.length) % currentEntries.length;
-
-			var $container = $('#pv-img-content'),
-				$img = $('#pv-img-image'),
-				src = currentEntries[currentIdx].absHref,
-				spinnerTimeout = setTimeout(function () { $('#pv-spinner').show(); }, 200);
-
-			preloadImg(src, function ($preloaded_img) {
-
-				clearTimeout(spinnerTimeout);
-				$('#pv-spinner').hide();
-
-				$('#pv-img-image').fadeOut(100, function () {
-
-					$('#pv-img-image').replaceWith($preloaded_img.hide());
-					$preloaded_img.attr('id', 'pv-img-image').fadeIn(200);
-
-					// small timeout, so $preloaded_img is visible and therefore $preloaded_img.width is available
-					setTimeout(function () {
-
-						adjustSize();
-						$('#pv-img-bar-label').text(currentEntries[currentIdx].label);
-						$('#pv-img-bar-size').text('' + $preloaded_img[0].naturalWidth + 'x' + $preloaded_img[0].naturalHeight);
-						$('#pv-img-bar-idx').text('' + (currentIdx + 1) + ' / ' + currentEntries.length);
-						$('#pv-img-bar-original').find('a').attr('href', currentEntries[currentIdx].absHref);
-					}, 10);
-				});
-			});
-		},
-
 		onEnter = function (items, idx) {
 
-			$(window).on('keydown', onKeydown);
-			$('#pv-img-image').hide();
-			$('#pv-img-overlay').stop(true, true).fadeIn(200);
+			var currentItems = items,
+				currentIdx = idx,
+				currentItem = items[idx],
 
-			currentEntries = items;
-			adjustSize();
-			onIndexChange(idx);
-		},
+				onAdjustSize = function () {
 
-		onNext = function () {
+					var $content = $('#pv-content'),
+						$img = $('#pv-img-image');
 
-			onIndexChange(currentIdx + 1);
-		},
+					if ($img.length) {
 
-		onPrevious = function () {
+						$img.css({
+							'left': '' + (($content.width()-$img.width())*0.5) + 'px',
+							'top': '' + (($content.height()-$img.height())*0.5) + 'px'
+						});
 
-			onIndexChange(currentIdx - 1);
-		},
+						preview.setLabels([
+							currentItem.label,
+							'' + $img[0].naturalWidth + 'x' + $img[0].naturalHeight,
+							'' + (100 * $img.width() / $img[0].naturalWidth).toFixed(0) + '%'
+						]);
+					}
+				},
 
-		onExit = function () {
+				onIdxChange = function (rel) {
 
-			$(window).off('keydown', onKeydown);
-			$('#pv-img-overlay').stop(true, true).fadeOut(200);
-		},
+					currentIdx = (currentIdx + rel + currentItems.length) % currentItems.length;
+					currentItem = currentItems[currentIdx];
 
-		onFullscreen = function () {
+					var spinnerTimeout = setTimeout(function () { preview.showSpinner(true); }, 200);
 
-			isFullscreen = !isFullscreen;
-			store.put(storekey, isFullscreen);
+					preloadImg(currentItem.absHref, function ($preloaded_img) {
 
-			adjustSize();
-		},
+						clearTimeout(spinnerTimeout);
+						preview.showSpinner(false);
 
-		onKeydown = function (event) {
+						$('#pv-content').fadeOut(100, function () {
 
-			var key = event.which;
+							$('#pv-content').empty().append($preloaded_img.attr('id', 'pv-img-image')).fadeIn(200);
 
-			if (key === 27) { // esc
-				event.preventDefault();
-				event.stopImmediatePropagation();
-				onExit();
-			} else if (key === 8 || key === 37 || key === 40) { // backspace, left, down
-				event.preventDefault();
-				event.stopImmediatePropagation();
-				onPrevious();
-			} else if (key === 13 || key === 32 || key === 38 || key === 39) { // enter, space, up, right
-				event.preventDefault();
-				event.stopImmediatePropagation();
-				onNext();
-			} else if (key === 70) { // f
-				event.preventDefault();
-				event.stopImmediatePropagation();
-				onFullscreen();
-			}
+							// small timeout, so $preloaded_img is visible and therefore $preloaded_img.width is available
+							setTimeout(function () {
+
+								onAdjustSize();
+
+								preview.setIndex(currentIdx + 1, currentItems.length);
+								preview.setLabels([
+									currentItem.label,
+									'' + $preloaded_img[0].naturalWidth + 'x' + $preloaded_img[0].naturalHeight,
+									'' + (100 * $preloaded_img.width() / $preloaded_img[0].naturalWidth).toFixed(0) + '%'
+								]);
+								preview.setRawLink(currentItem.absHref);
+							}, 10);
+						});
+					});
+				};
+
+			onIdxChange(0);
+			preview.setOnIndexChange(onIdxChange);
+			preview.setOnAdjustSize(onAdjustSize);
+			preview.enter();
 		},
 
 		initItem = function (item) {
@@ -230,59 +116,8 @@ modulejs.define('ext/preview-img', ['_', '$', 'core/settings', 'core/resource',
 				return;
 			}
 
-			$(template).appendTo('body');
-			$('#pv-img-bar-prev, #pv-img-prev').on('click', onPrevious);
-			$('#pv-img-bar-next, #pv-img-next').on('click', onNext);
-			$('#pv-img-bar-close, #pv-img-close').on('click', onExit);
-			$('#pv-img-bar-fullscreen').on('click', onFullscreen);
-
-			$('#pv-img-prev')
-				.on('mouseenter', function () {
-					$('#pv-img-bar-prev').addClass('hover');
-				})
-				.on('mouseleave', function () {
-					$('#pv-img-bar-prev').removeClass('hover');
-				});
-
-			$('#pv-img-next')
-				.on('mouseenter', function () {
-					$('#pv-img-bar-next').addClass('hover');
-				})
-				.on('mouseleave', function () {
-					$('#pv-img-bar-next').removeClass('hover');
-				});
-
-			$('#pv-img-close')
-				.on('mouseenter', function () {
-					$('#pv-img-bar-close').addClass('hover');
-				})
-				.on('mouseleave', function () {
-					$('#pv-img-bar-close').removeClass('hover');
-				});
-
-			$('#pv-img-overlay')
-				.on('keydown', onKeydown)
-				.on('mousemove', function (event) {
-
-					if (isFullscreen) {
-						var rect = $('#pv-img-overlay').fracs('rect');
-
-						if (rect.bottom - event.pageY < 64) {
-							$('#pv-img-bottombar').fadeIn(200);
-						} else {
-							$('#pv-img-bottombar').fadeOut(400);
-						}
-					}
-				})
-				.on('click mousedown mousemove keydown keypress', function (event) {
-
-					event.stopImmediatePropagation();
-				});
-
 			event.sub('location.changed', onLocationChanged);
 			event.sub('location.refreshed', onLocationRefreshed);
-
-			$(window).on('resize load', adjustSize);
 		};
 
 	init();
diff --git a/src/_h5ai/client/js/inc/ext/preview.js b/src/_h5ai/client/js/inc/ext/preview.js
index bcfef0ca..7e2e4016 100644
--- a/src/_h5ai/client/js/inc/ext/preview.js
+++ b/src/_h5ai/client/js/inc/ext/preview.js
@@ -6,19 +6,15 @@ modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'cor
 		}, allsettings['preview']),
 
 		template = '<div id="pv-overlay" class="noSelection">' +
-						'<div id="pv-content">' +
-							'<img id="pv-image"/>' +
-						'</div>' +
-						'<div id="pv-spinner">' +
-							'<img src="' + resource.image('spinner') + '"/>' +
-						'</div>' +
-						'<div id="pv-close"/>' +
-						'<div id="pv-prev"/>' +
-						'<div id="pv-next"/>' +
+						'<div id="pv-close-area"/>' +
+						'<div id="pv-content"/>' +
+						'<div id="pv-spinner"><img src="' + resource.image('spinner') + '"/></div>' +
+						'<div id="pv-prev-area"><img src="' + resource.image('preview/prev') + '"/></div>' +
+						'<div id="pv-next-area"><img src="' + resource.image('preview/next') + '"/></div>' +
 						'<div id="pv-bottombar" class="clearfix">' +
 							'<ul id="pv-buttons">' +
 								'<li id="pv-bar-close" class="bar-right bar-button"><img src="' + resource.image('preview/close') + '"/></li>' +
-								'<li id="pv-bar-original" class="bar-right"><a class="bar-button" target="_blank"><img src="' + resource.image('preview/raw') + '"/></a></li>' +
+								'<li id="pv-bar-raw" class="bar-right"><a class="bar-button" target="_blank"><img src="' + resource.image('preview/raw') + '"/></a></li>' +
 								'<li id="pv-bar-fullscreen" class="bar-right bar-button"><img src="' + resource.image('preview/fullscreen') + '"/></li>' +
 								'<li id="pv-bar-next" class="bar-right bar-button"><img src="' + resource.image('preview/next') + '"/></li>' +
 								'<li id="pv-bar-idx" class="bar-right bar-label"/>' +
@@ -38,69 +34,49 @@ modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'cor
 			var rect = $(window).fracs('viewport'),
 				$container = $('#pv-content'),
 				$spinner = $('#pv-spinner'),
-				$spinnerimg = $spinner.find('img').width(100).height(100),
-				$img = $('#pv-image'),
 				margin = isFullscreen ? 0 : 20,
 				barheight = isFullscreen ? 0 : 31;
 
-			$container.add($spinner).css({
+			$container.css({
 				width: rect.width - 2 * margin,
 				height: rect.height - 2 * margin - barheight,
 				left: margin,
 				top: margin
 			});
 
-			var lr = ($container.width() - $img.width()) / 2,
-				tb = ($container.height() - $img.height()) / 2;
-
-			$img.css({
-				margin: '' + tb + 'px ' + lr + 'px'
-			});
-			$spinnerimg.css({
-				margin: '' + (($spinner.height() - $spinnerimg.height()) / 2) + 'px ' + (($spinner.width() - $spinnerimg.height()) / 2) + 'px'
+			$spinner.css({
+				left: rect.width * 0.5,
+				top: rect.height * 0.5
 			});
 
-			rect = $img.fracs('rect');
-			if (!rect) {
-				return;
-			}
-			rect = rect.relativeTo($('#pv-overlay').fracs('rect'));
-
-			$('#pv-prev').css({
-				left: rect.left,
-				top: rect.top,
-				width: rect.width / 2,
-				height: rect.height
-			});
-			$('#pv-next').css({
-				left: rect.left + rect.width / 2,
-				top: rect.top,
-				width: rect.width / 2,
-				height: rect.height
-			});
-
-			$('#pv-bar-percent').text('' + (100 * $img.width() / $img[0].naturalWidth).toFixed(0) + '%');
 			if (isFullscreen) {
 				$('#pv-overlay').addClass('fullscreen');
 				$('#pv-bar-fullscreen').find('img').attr('src', resource.image('preview/no-fullscreen'));
-				$('#pv-bottombar').fadeOut(400);
 			} else {
 				$('#pv-overlay').removeClass('fullscreen');
 				$('#pv-bar-fullscreen').find('img').attr('src', resource.image('preview/fullscreen'));
-				$('#pv-bottombar').fadeIn(200);
+			}
+
+			if (_.isFunction(onAdjustSize)) {
+				onAdjustSize(1);
 			}
 		},
 
-		onEnter = function (items, idx) {
+		onEnter = function () {
 
 			$(window).on('keydown', onKeydown);
-			$('#pv-image').hide();
+			$('#pv-content').empty();
 			$('#pv-overlay').stop(true, true).fadeIn(200);
 
-			currentEntries = items;
 			adjustSize();
 		},
 
+		onExit = function () {
+
+			$(window).off('keydown', onKeydown);
+			$('#pv-overlay').stop(true, true).fadeOut(200);
+		},
+
 		onNext = function () {
 
 			if (_.isFunction(onIndexChange)) {
@@ -115,10 +91,19 @@ modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'cor
 			}
 		},
 
-		onExit = function () {
+		fsTimer = null,
+		onMouseMove = function () {
 
-			$(window).off('keydown', onKeydown);
-			$('#pv-overlay').stop(true, true).fadeOut(200);
+			clearTimeout(fsTimer);
+			$('#pv-bottombar, #pv-prev-area, #pv-next-area').fadeIn(200);
+
+			if (isFullscreen) {
+
+				fsTimer = setTimeout(function () {
+
+					$('#pv-bottombar, #pv-prev-area, #pv-next-area').fadeOut(400);
+				}, 2000);
+			}
 		},
 
 		onFullscreen = function () {
@@ -126,6 +111,7 @@ modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'cor
 			isFullscreen = !isFullscreen;
 			store.put(storekey, isFullscreen);
 
+			onMouseMove();
 			adjustSize();
 		},
 
@@ -152,12 +138,31 @@ modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'cor
 			}
 		},
 
+		enter = function () {
+
+			onEnter();
+		},
+
+		exit = function () {
+
+			onExit();
+		},
+
 		setIndex = function (idx, total) {
 
 			if (_.isNumber(idx)) {
-				$('#pv-bar-idx').show().text('' + idx + (_.isNumber(total) ? '/' + total : ''));
+				$('#pv-bar-idx').text('' + idx + (_.isNumber(total) ? '/' + total : '')).show();
 			} else {
-				$('#pv-bar-idx').hide();
+				$('#pv-bar-idx').text('').hide();
+			}
+		},
+
+		setRawLink = function (href) {
+
+			if (href) {
+				$('#pv-bar-raw').find('a').attr('href', href).end().show();
+			} else {
+				$('#pv-bar-raw').find('a').attr('href', '#').end().hide();
 			}
 		},
 
@@ -179,6 +184,25 @@ modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'cor
 			onIndexChange = fn;
 		},
 
+		onAdjustSize = null,
+		setOnAdjustSize = function (fn) {
+
+			onAdjustSize = fn;
+		},
+
+		showSpinner = function (show, millis) {
+
+			if (!_.isNumber(millis)) {
+				millis = 400;
+			}
+
+			if (show) {
+				$('#pv-spinner').stop(true, true).fadeIn(millis);
+			} else {
+				$('#pv-spinner').stop(true, true).fadeOut(millis);
+			}
+		},
+
 		init = function () {
 
 			if (!settings.enabled) {
@@ -186,12 +210,14 @@ modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'cor
 			}
 
 			$(template).appendTo('body');
-			$('#pv-bar-prev, #pv-prev').on('click', onPrevious);
-			$('#pv-bar-next, #pv-next').on('click', onNext);
-			$('#pv-bar-close, #pv-close').on('click', onExit);
+
+			$('#pv-spinner').hide();
+			$('#pv-bar-prev, #pv-prev-area').on('click', onPrevious);
+			$('#pv-bar-next, #pv-next-area').on('click', onNext);
+			$('#pv-bar-close, #pv-close-area').on('click', onExit);
 			$('#pv-bar-fullscreen').on('click', onFullscreen);
 
-			$('#pv-prev')
+			$('#pv-prev-area')
 				.on('mouseenter', function () {
 					$('#pv-bar-prev').addClass('hover');
 				})
@@ -199,7 +225,7 @@ modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'cor
 					$('#pv-bar-prev').removeClass('hover');
 				});
 
-			$('#pv-next')
+			$('#pv-next-area')
 				.on('mouseenter', function () {
 					$('#pv-bar-next').addClass('hover');
 				})
@@ -207,7 +233,7 @@ modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'cor
 					$('#pv-bar-next').removeClass('hover');
 				});
 
-			$('#pv-close')
+			$('#pv-close-area')
 				.on('mouseenter', function () {
 					$('#pv-bar-close').addClass('hover');
 				})
@@ -215,20 +241,10 @@ modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'cor
 					$('#pv-bar-close').removeClass('hover');
 				});
 
+			var fsTimer = null;
 			$('#pv-overlay')
 				.on('keydown', onKeydown)
-				.on('mousemove', function (event) {
-
-					if (isFullscreen) {
-						var rect = $('#pv-overlay').fracs('rect');
-
-						if (rect.bottom - event.pageY < 64) {
-							$('#pv-bottombar').fadeIn(200);
-						} else {
-							$('#pv-bottombar').fadeOut(400);
-						}
-					}
-				})
+				.on('mousemove', onMouseMove)
 				.on('click mousedown mousemove keydown keypress', function (event) {
 
 					event.stopImmediatePropagation();
@@ -240,8 +256,13 @@ modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'cor
 	init();
 
 	return {
+		enter: enter,
+		exit: exit,
 		setIndex: setIndex,
+		setRawLink: setRawLink,
 		setLabels: setLabels,
-		setOnIndexChange: setOnIndexChange
+		setOnIndexChange: setOnIndexChange,
+		setOnAdjustSize: setOnAdjustSize,
+		showSpinner: showSpinner
 	};
 });

From cdbf2e21041f59c1ba84887621dc1be94d39bbc1 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Wed, 21 Aug 2013 15:56:18 +0200
Subject: [PATCH 20/83] Updates text preview.

---
 src/_h5ai/client/css/inc/preview-txt.less  | 126 +------------
 src/_h5ai/client/js/inc/ext/preview-txt.js | 194 ++++++---------------
 2 files changed, 66 insertions(+), 254 deletions(-)

diff --git a/src/_h5ai/client/css/inc/preview-txt.less b/src/_h5ai/client/css/inc/preview-txt.less
index bff27626..85c76ad3 100644
--- a/src/_h5ai/client/css/inc/preview-txt.less
+++ b/src/_h5ai/client/css/inc/preview-txt.less
@@ -1,35 +1,14 @@
 
-#pv-txt-overlay {
-	display: none;
-	position: fixed;
-	left: 0;
-	top: 0;
-	right: 0;
-	bottom: 0;
-	z-index: 100;
-
-	background-color: rgba(0,0,0,0.5);
-	.transition(background-color 0.3s ease-in-out);
-
-	text-align: center;
-}
-
-#pv-txt-content {
-	max-width: 960px;
-	margin: 0 auto;
-	padding: 10px;
-	background-color: #fff;
-	border: 1px solid #fff;
-	text-align: left;
-	overflow: auto;
-	position: relative;
-}
-
-#pv-txt-spinner {
-	position: fixed;
-}
-
 #pv-txt-text {
+	// position: absolute;
+	max-width: 800px;
+	max-height: 100%;
+	height: 100%;
+	text-align: left;
+	background-color: #fff;
+	margin: 0 auto;
+	padding: 8px;
+	overflow: auto;
 
 	&.highlighted {
 		word-break: break-all;
@@ -143,90 +122,3 @@
 		}
 	}
 }
-
-#pv-txt-close {
-	position: fixed;
-	left: 0;
-	top: 0;
-	width: 100%;
-	height: 100%;
-	cursor: pointer;
-}
-
-#pv-txt-prev {
-	position: fixed;
-	cursor: pointer;
-}
-
-#pv-txt-next {
-	position: fixed;
-	cursor: pointer;
-}
-
-#pv-txt-buttons, #pv-txt-topbuttons {
-	list-style: none;
-	list-style-image: none;
-	margin: 0;
-	padding: 0;
-
-	img {
-		position: relative;
-		top: -2px;
-		width: 16px;
-		height: 16px;
-	}
-	img + span, img + input {
-		margin-left: 6px;
-	}
-	input {
-		background-color: rgba(255,255,255,0.1);
-		border: none;
-		color: #ccc;
-	}
-
-	.bar-label {
-		display: block;
-		color: #ccc;
-		height: 30px;
-		line-height: 30px;
-		padding: 0 10px;
-		opacity: 0.7;
-		.transition(all 0.2s ease-in-out);
-	}
-
-	.bar-highlight {
-		background-color: rgba(255,255,255,0.1);
-		opacity: 1.0;
-	}
-
-	@bar-sep-border: 1px solid rgba(255,255,255,0.05);
-
-	.bar-button {
-		.bar-label;
-		cursor: pointer;
-		&:hover, &.hover {
-			.bar-highlight;
-		}
-	}
-
-	.bar-left {
-		float: left;
-		border-right: @bar-sep-border;
-	}
-
-	.bar-right {
-		float: right;
-		border-left: @bar-sep-border;
-	}
-}
-
-#pv-txt-bottombar {
-	position: fixed;
-	z-index: 5;
-	width: 100%;
-	height: 32px;
-	left: 0;
-	bottom: 0;
-	background-color: rgb(27,27,27);
-	border-top: 1px solid rgb(45,45,45);
-}
diff --git a/src/_h5ai/client/js/inc/ext/preview-txt.js b/src/_h5ai/client/js/inc/ext/preview-txt.js
index 508fd323..e93c77ed 100644
--- a/src/_h5ai/client/js/inc/ext/preview-txt.js
+++ b/src/_h5ai/client/js/inc/ext/preview-txt.js
@@ -1,5 +1,5 @@
 
-modulejs.define('ext/preview-txt', ['_', '$', 'core/settings', 'core/resource', 'core/store', 'core/event', 'core/location'], function (_, $, allsettings, resource, store, event, location) {
+modulejs.define('ext/preview-txt', ['_', '$', 'core/settings', 'core/store', 'core/event', 'ext/preview'], function (_, $, allsettings, store, event, preview) {
 
 	var settings = _.extend({
 			enabled: false,
@@ -28,33 +28,9 @@ modulejs.define('ext/preview-txt', ['_', '$', 'core/settings', 'core/resource',
 			}
 		}, allsettings['preview-txt']),
 
-		template = '<div id="pv-txt-overlay" class="noSelection">' +
-						'<div id="pv-txt-close"/>' +
-						'<div id="pv-txt-content">' +
-							'<div id="pv-txt-text"/>' +
-						'</div>' +
-						'<div id="pv-txt-spinner">' +
-							'<img src="' + resource.image('spinner') + '"/>' +
-						'</div>' +
-						'<div id="pv-txt-bottombar" class="clearfix">' +
-							'<ul id="pv-txt-buttons">' +
-								'<li id="pv-txt-bar-size" class="bar-left bar-label"/>' +
-								'<li id="pv-txt-bar-label" class="bar-left bar-label"/>' +
-								'<li id="pv-txt-bar-close" class="bar-right bar-button"><img src="' + resource.image('preview/close') + '"/></li>' +
-								'<li id="pv-txt-bar-original" class="bar-right"><a class="bar-button" target="_blank"><img src="' + resource.image('preview/raw') + '"/></a></li>' +
-								'<li id="pv-txt-bar-next" class="bar-right bar-button"><img src="' + resource.image('preview/next') + '"/></li>' +
-								'<li id="pv-txt-bar-idx" class="bar-right bar-label"/>' +
-								'<li id="pv-txt-bar-prev" class="bar-right bar-button"><img src="' + resource.image('preview/prev') + '"/></li>' +
-							'</ul>' +
-						'</div>' +
-					'</div>',
-
 		templateText = '<pre id="pv-txt-text" class="highlighted"/>',
 		templateMarkdown = '<div id="pv-txt-text" class="markdown"/>',
 
-		currentEntries = [],
-		currentIdx = 0,
-
 		// adapted from SyntaxHighlighter
 		getHighlightedLines = function (sh, alias, content) {
 
@@ -159,107 +135,74 @@ modulejs.define('ext/preview-txt', ['_', '$', 'core/settings', 'core/resource',
 			});
 		},
 
-		onIndexChange = function (idx) {
-
-			currentIdx = (idx + currentEntries.length) % currentEntries.length;
-
-			var $container = $('#pv-txt-content'),
-				$text = $('#pv-txt-text'),
-				current = currentEntries[currentIdx],
-				spinnerTimeout = setTimeout(function () { $('#pv-txt-spinner').show(); }, 200);
-
-			preloadText(current.absHref, function (content) {
-
-				clearTimeout(spinnerTimeout);
-				$('#pv-txt-spinner').hide();
-
-				$text.fadeOut(100, function () {
-
-					var $nText;
-
-					if (current.type === 'markdown') {
-						$nText = $(templateMarkdown).hide().text(content);
-						$text.replaceWith($nText);
-
-						loadMarkdown(function (md) {
-
-							if (md) {
-								$nText.html(md.toHTML(content));
-							}
-						});
-					} else {
-						$nText = $(templateText).hide().text(content);
-						$text.replaceWith($nText);
-
-						loadSyntaxhighlighter(function (sh) {
-
-							if (sh) {
-								var $table = $('<table/>');
-
-								getHighlightedLines(sh, settings.types[current.type], content).each(function (i) {
-									$('<tr/>')
-										.append($('<td/>').addClass('nr').append(i + 1))
-										.append($('<td/>').addClass('line').append(this))
-										.appendTo($table);
-								});
-
-								$nText.empty().append($table);
-							}
-						});
-					}
-					$nText.fadeIn(200);
-
-					adjustSize();
-					$('#pv-txt-bar-label').text(current.label);
-					$('#pv-txt-bar-size').text('' + current.size + ' bytes');
-					$('#pv-txt-bar-idx').text('' + (currentIdx + 1) + ' / ' + currentEntries.length);
-					$('#pv-txt-bar-original').find('a').attr('href', current.absHref);
-				});
-			});
-		},
-
 		onEnter = function (items, idx) {
 
-			$(window).on('keydown', onKeydown);
-			$('#pv-txt-overlay').stop(true, true).fadeIn(200);
+			var currentItems = items,
+				currentIdx = idx,
+				currentItem = items[idx],
 
-			currentEntries = items;
-			onIndexChange(idx);
-		},
+				onIdxChange = function (rel) {
 
-		onNext = function () {
+					currentIdx = (currentIdx + rel + currentItems.length) % currentItems.length;
+					currentItem = currentItems[currentIdx];
 
-			onIndexChange(currentIdx + 1);
-		},
+					var spinnerTimeout = setTimeout(function () { preview.showSpinner(true); }, 200);
 
-		onPrevious = function () {
+					preloadText(currentItem.absHref, function (textContent) {
 
-			onIndexChange(currentIdx - 1);
-		},
+						clearTimeout(spinnerTimeout);
+						preview.showSpinner(false);
 
-		onExit = function () {
+						$('#pv-content').fadeOut(100, function () {
 
-			$(window).off('keydown', onKeydown);
-			$('#pv-txt-overlay').stop(true, true).fadeOut(200);
-		},
+							var $text;
 
-		onKeydown = function (event) {
+							if (currentItem.type === 'markdown') {
+								$text = $(templateMarkdown).text(textContent);
+								$text.replaceWith($text);
 
-			var key = event.which;
+								loadMarkdown(function (md) {
 
-			if (key === 27) { // esc
-				event.preventDefault();
-				event.stopImmediatePropagation();
-				onExit();
-			} else if (key === 8 || key === 37 || key === 40) { // backspace, left, down
-				event.preventDefault();
-				event.stopImmediatePropagation();
-				onPrevious();
-			} else if (key === 13 || key === 32 || key === 38 || key === 39) { // enter, space, up, right
-				event.preventDefault();
-				event.stopImmediatePropagation();
-				onNext();
-			}
+									if (md) {
+										$text.html(md.toHTML(textContent));
+									}
+								});
+							} else {
+								$text = $(templateText).text(textContent);
+								$text.replaceWith($text);
+
+								loadSyntaxhighlighter(function (sh) {
+
+									if (sh) {
+										var $table = $('<table/>');
+
+										getHighlightedLines(sh, settings.types[currentItem.type], textContent).each(function (i) {
+											$('<tr/>')
+												.append($('<td/>').addClass('nr').append(i + 1))
+												.append($('<td/>').addClass('line').append(this))
+												.appendTo($table);
+										});
+
+										$text.empty().append($table);
+									}
+								});
+							}
+
+							$('#pv-content').empty().append($text).fadeIn(200);
+
+							preview.setIndex(currentIdx + 1, currentItems.length);
+							preview.setLabels([
+								currentItem.label,
+								'' + currentItem.size + ' bytes'
+							]);
+							preview.setRawLink(currentItem.absHref);
+						});
+					});
+				};
+
+			onIdxChange(0);
+			preview.setOnIndexChange(onIdxChange);
+			preview.enter();
 		},
 
 		initItem = function (item) {
@@ -296,31 +239,8 @@ modulejs.define('ext/preview-txt', ['_', '$', 'core/settings', 'core/resource',
 				return;
 			}
 
-			$(template).appendTo('body');
-			$('#pv-txt-bar-prev').on('click', onPrevious);
-			$('#pv-txt-bar-next').on('click', onNext);
-			$('#pv-txt-bar-close, #pv-txt-close').on('click', onExit);
-
-			$('#pv-txt-close')
-				.on('mouseenter', function () {
-					$('#pv-txt-bar-close').addClass('hover');
-				})
-				.on('mouseleave', function () {
-					$('#pv-txt-bar-close').removeClass('hover');
-				});
-
-
-			$('#pv-txt-overlay')
-				.on('keydown', onKeydown)
-				.on('click mousedown mousemove keydown keypress', function (event) {
-
-					event.stopImmediatePropagation();
-				});
-
 			event.sub('location.changed', onLocationChanged);
 			event.sub('location.refreshed', onLocationRefreshed);
-
-			$(window).on('resize load', adjustSize);
 		};
 
 	init();

From 11f6b3792d1ccabc6e533ee505d7ead3762387ff Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Wed, 21 Aug 2013 15:58:18 +0200
Subject: [PATCH 21/83] Minor updates.

---
 src/_h5ai/client/css/inc/preview-txt.less  | 1 -
 src/_h5ai/client/js/inc/ext/preview-img.js | 2 +-
 src/_h5ai/client/js/inc/ext/preview-txt.js | 2 +-
 3 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/_h5ai/client/css/inc/preview-txt.less b/src/_h5ai/client/css/inc/preview-txt.less
index 85c76ad3..0d3fcce4 100644
--- a/src/_h5ai/client/css/inc/preview-txt.less
+++ b/src/_h5ai/client/css/inc/preview-txt.less
@@ -1,6 +1,5 @@
 
 #pv-txt-text {
-	// position: absolute;
 	max-width: 800px;
 	max-height: 100%;
 	height: 100%;
diff --git a/src/_h5ai/client/js/inc/ext/preview-img.js b/src/_h5ai/client/js/inc/ext/preview-img.js
index ead5a717..a9dc5a4a 100644
--- a/src/_h5ai/client/js/inc/ext/preview-img.js
+++ b/src/_h5ai/client/js/inc/ext/preview-img.js
@@ -1,5 +1,5 @@
 
-modulejs.define('ext/preview-img', ['_', '$', 'core/settings', 'core/store', 'core/event', 'ext/preview'], function (_, $, allsettings, store, event, preview) {
+modulejs.define('ext/preview-img', ['_', '$', 'core/settings', 'core/event', 'ext/preview'], function (_, $, allsettings, event, preview) {
 
 	var settings = _.extend({
 			enabled: false,
diff --git a/src/_h5ai/client/js/inc/ext/preview-txt.js b/src/_h5ai/client/js/inc/ext/preview-txt.js
index e93c77ed..adc2b7ce 100644
--- a/src/_h5ai/client/js/inc/ext/preview-txt.js
+++ b/src/_h5ai/client/js/inc/ext/preview-txt.js
@@ -1,5 +1,5 @@
 
-modulejs.define('ext/preview-txt', ['_', '$', 'core/settings', 'core/store', 'core/event', 'ext/preview'], function (_, $, allsettings, store, event, preview) {
+modulejs.define('ext/preview-txt', ['_', '$', 'core/settings', 'core/event', 'ext/preview'], function (_, $, allsettings, event, preview) {
 
 	var settings = _.extend({
 			enabled: false,

From 72c7b32a941a7a52da70cf8e2b0eec89267f475d Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Wed, 21 Aug 2013 23:00:33 +0200
Subject: [PATCH 22/83] Preview updates.

---
 src/_h5ai/client/css/inc/preview-img.less  |  4 +-
 src/_h5ai/client/css/inc/preview-txt.less  |  6 +--
 src/_h5ai/client/css/inc/preview.less      |  1 -
 src/_h5ai/client/js/inc/ext/preview-txt.js | 44 ++++++++--------------
 src/_h5ai/client/js/inc/ext/preview.js     |  2 +-
 5 files changed, 22 insertions(+), 35 deletions(-)

diff --git a/src/_h5ai/client/css/inc/preview-img.less b/src/_h5ai/client/css/inc/preview-img.less
index 7ca5b28a..4a1fe130 100644
--- a/src/_h5ai/client/css/inc/preview-img.less
+++ b/src/_h5ai/client/css/inc/preview-img.less
@@ -12,5 +12,7 @@
 		-webkit-linear-gradient(45deg, @check-black 25%, transparent 25%, transparent 75%, @check-black 75%, @check-black),
 		-webkit-linear-gradient(45deg, @check-black 25%, transparent 25%, transparent 75%, @check-black 75%, @check-black);
 	background-size: 60px 60px;
-	background-position: 0 0, 30px 30px
+	background-position: 0 0, 30px 30px;
+
+	box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.3);
 }
diff --git a/src/_h5ai/client/css/inc/preview-txt.less b/src/_h5ai/client/css/inc/preview-txt.less
index 0d3fcce4..68bff18e 100644
--- a/src/_h5ai/client/css/inc/preview-txt.less
+++ b/src/_h5ai/client/css/inc/preview-txt.less
@@ -1,14 +1,14 @@
 
 #pv-txt-text {
-	max-width: 800px;
-	max-height: 100%;
-	height: 100%;
+	max-width: 960px;
 	text-align: left;
 	background-color: #fff;
 	margin: 0 auto;
 	padding: 8px;
 	overflow: auto;
 
+	box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.3);
+
 	&.highlighted {
 		word-break: break-all;
 
diff --git a/src/_h5ai/client/css/inc/preview.less b/src/_h5ai/client/css/inc/preview.less
index 3ca1895f..b3c29289 100644
--- a/src/_h5ai/client/css/inc/preview.less
+++ b/src/_h5ai/client/css/inc/preview.less
@@ -20,7 +20,6 @@
 
 #pv-content {
 	position: absolute;
-	overflow: hidden;
 }
 
 #pv-spinner {
diff --git a/src/_h5ai/client/js/inc/ext/preview-txt.js b/src/_h5ai/client/js/inc/ext/preview-txt.js
index adc2b7ce..ef5fcf12 100644
--- a/src/_h5ai/client/js/inc/ext/preview-txt.js
+++ b/src/_h5ai/client/js/inc/ext/preview-txt.js
@@ -92,32 +92,6 @@ modulejs.define('ext/preview-txt', ['_', '$', 'core/settings', 'core/event', 'ex
 			loadScript(allsettings.h5aiAbsHref + 'client/js/markdown.js', 'markdown', callback);
 		},
 
-		adjustSize = function () {
-
-			var $window = $(window),
-				$container = $('#pv-txt-content'),
-				$spinner = $('#pv-txt-spinner'),
-				$spinnerimg = $spinner.find('img').width(100).height(100),
-				margin = 20,
-				barheight = 31;
-
-			$container.css({
-				height: $window.height() - 2 * margin - barheight - 32,
-				top: margin
-			});
-
-			$spinner.css({
-				width: $window.width() - 2 * margin,
-				height: $window.height() - 2 * margin - barheight,
-				left: margin,
-				top: margin
-			});
-
-			$spinnerimg.css({
-				margin: '' + (($spinner.height() - $spinnerimg.height()) / 2) + 'px ' + (($spinner.width() - $spinnerimg.height()) / 2) + 'px'
-			});
-		},
-
 		preloadText = function (absHref, callback) {
 
 			$.ajax({
@@ -141,6 +115,17 @@ modulejs.define('ext/preview-txt', ['_', '$', 'core/settings', 'core/event', 'ex
 				currentIdx = idx,
 				currentItem = items[idx],
 
+				onAdjustSize = function () {
+
+					var $content = $('#pv-content'),
+						$text = $('#pv-txt-text');
+
+					if ($text.length) {
+
+						$text.height($content.height() - 16);
+					}
+				},
+
 				onIdxChange = function (rel) {
 
 					currentIdx = (currentIdx + rel + currentItems.length) % currentItems.length;
@@ -158,8 +143,8 @@ modulejs.define('ext/preview-txt', ['_', '$', 'core/settings', 'core/event', 'ex
 							var $text;
 
 							if (currentItem.type === 'markdown') {
+
 								$text = $(templateMarkdown).text(textContent);
-								$text.replaceWith($text);
 
 								loadMarkdown(function (md) {
 
@@ -168,8 +153,8 @@ modulejs.define('ext/preview-txt', ['_', '$', 'core/settings', 'core/event', 'ex
 									}
 								});
 							} else {
+
 								$text = $(templateText).text(textContent);
-								$text.replaceWith($text);
 
 								loadSyntaxhighlighter(function (sh) {
 
@@ -187,8 +172,8 @@ modulejs.define('ext/preview-txt', ['_', '$', 'core/settings', 'core/event', 'ex
 									}
 								});
 							}
-
 							$('#pv-content').empty().append($text).fadeIn(200);
+							onAdjustSize();
 
 							preview.setIndex(currentIdx + 1, currentItems.length);
 							preview.setLabels([
@@ -202,6 +187,7 @@ modulejs.define('ext/preview-txt', ['_', '$', 'core/settings', 'core/event', 'ex
 
 			onIdxChange(0);
 			preview.setOnIndexChange(onIdxChange);
+			preview.setOnAdjustSize(onAdjustSize);
 			preview.enter();
 		},
 
diff --git a/src/_h5ai/client/js/inc/ext/preview.js b/src/_h5ai/client/js/inc/ext/preview.js
index 7e2e4016..ec864176 100644
--- a/src/_h5ai/client/js/inc/ext/preview.js
+++ b/src/_h5ai/client/js/inc/ext/preview.js
@@ -244,7 +244,7 @@ modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'cor
 			var fsTimer = null;
 			$('#pv-overlay')
 				.on('keydown', onKeydown)
-				.on('mousemove', onMouseMove)
+				.on('mousemove click mousedown', onMouseMove)
 				.on('click mousedown mousemove keydown keypress', function (event) {
 
 					event.stopImmediatePropagation();

From 797d5bbc47785a25bac5fe1f60b361b5782e8c3c Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 23 Aug 2013 00:12:34 +0200
Subject: [PATCH 23/83] Updates preview.

---
 src/_h5ai/client/css/inc/preview.less  | 36 ++++++++++++++---
 src/_h5ai/client/js/inc/ext/preview.js | 53 +++++++-------------------
 2 files changed, 44 insertions(+), 45 deletions(-)

diff --git a/src/_h5ai/client/css/inc/preview.less b/src/_h5ai/client/css/inc/preview.less
index b3c29289..796936bb 100644
--- a/src/_h5ai/client/css/inc/preview.less
+++ b/src/_h5ai/client/css/inc/preview.less
@@ -34,11 +34,21 @@
 
 #pv-close-area {
 	position: absolute;
-	left: 0;
-	top: 0;
-	width: 100%;
-	height: 100%;
+	right: 8px;
+	top: 8px;
 	cursor: pointer;
+	opacity: 0.5;
+
+	img {
+		background-color: rgba(0,0,0,0.5);
+		border-radius: 8px;
+		width: 48px;
+		height: 48px;
+	}
+
+	&:hover {
+		opacity: 1;
+	}
 }
 
 #pv-prev-area, #pv-next-area {
@@ -46,14 +56,14 @@
 	top: 50%;
 	cursor: pointer;
 	opacity: 0.5;
-	.transition(all 0.2s ease-in-out);
 
 	img {
 		background-color: rgba(0,0,0,0.5);
 		border-radius: 8px;
 		width: 48px;
 		height: 48px;
-		margin: -24px 0;
+		margin: -72px 0;
+		padding: 48px 0;
 	}
 
 	&:hover {
@@ -135,4 +145,18 @@
 	bottom: 0;
 	background-color: rgb(27,27,27);
 	border-top: 1px solid rgb(45,45,45);
+
+}
+
+#pv-overlay.fullscreen {
+
+	#pv-bottombar {
+		opacity: 0.5;
+	}
+}
+
+@media only screen and (max-width: 700px) {
+#pv-prev-area, #pv-next-area, #pv-close-area {
+	display: none !important;
+}
 }
diff --git a/src/_h5ai/client/js/inc/ext/preview.js b/src/_h5ai/client/js/inc/ext/preview.js
index ec864176..e432bcf5 100644
--- a/src/_h5ai/client/js/inc/ext/preview.js
+++ b/src/_h5ai/client/js/inc/ext/preview.js
@@ -6,12 +6,12 @@ modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'cor
 		}, allsettings['preview']),
 
 		template = '<div id="pv-overlay" class="noSelection">' +
-						'<div id="pv-close-area"/>' +
 						'<div id="pv-content"/>' +
 						'<div id="pv-spinner"><img src="' + resource.image('spinner') + '"/></div>' +
-						'<div id="pv-prev-area"><img src="' + resource.image('preview/prev') + '"/></div>' +
-						'<div id="pv-next-area"><img src="' + resource.image('preview/next') + '"/></div>' +
-						'<div id="pv-bottombar" class="clearfix">' +
+						'<div id="pv-prev-area" class="hof"><img src="' + resource.image('preview/prev') + '"/></div>' +
+						'<div id="pv-next-area" class="hof"><img src="' + resource.image('preview/next') + '"/></div>' +
+						'<div id="pv-close-area" class="hof"><img src="' + resource.image('preview/close') + '"/></div>' +
+						'<div id="pv-bottombar" class="clearfix hof">' +
 							'<ul id="pv-buttons">' +
 								'<li id="pv-bar-close" class="bar-right bar-button"><img src="' + resource.image('preview/close') + '"/></li>' +
 								'<li id="pv-bar-raw" class="bar-right"><a class="bar-button" target="_blank"><img src="' + resource.image('preview/raw') + '"/></a></li>' +
@@ -91,17 +91,17 @@ modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'cor
 			}
 		},
 
-		fsTimer = null,
-		onMouseMove = function () {
+		userAliveTimeoutId = null,
+		userAlive = function () {
 
-			clearTimeout(fsTimer);
-			$('#pv-bottombar, #pv-prev-area, #pv-next-area').fadeIn(200);
+			clearTimeout(userAliveTimeoutId);
+			$('#pv-overlay .hof').stop(true, true).fadeIn(200);
 
 			if (isFullscreen) {
 
-				fsTimer = setTimeout(function () {
+				userAliveTimeoutId = setTimeout(function () {
 
-					$('#pv-bottombar, #pv-prev-area, #pv-next-area').fadeOut(400);
+					$('#pv-overlay .hof').stop(true, true).fadeOut(2000);
 				}, 2000);
 			}
 		},
@@ -111,7 +111,7 @@ modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'cor
 			isFullscreen = !isFullscreen;
 			store.put(storekey, isFullscreen);
 
-			onMouseMove();
+			userAlive();
 			adjustSize();
 		},
 
@@ -123,11 +123,11 @@ modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'cor
 				event.preventDefault();
 				event.stopImmediatePropagation();
 				onExit();
-			} else if (key === 8 || key === 37 || key === 40) { // backspace, left, down
+			} else if (key === 8 || key === 37) { // backspace, left
 				event.preventDefault();
 				event.stopImmediatePropagation();
 				onPrevious();
-			} else if (key === 13 || key === 32 || key === 38 || key === 39) { // enter, space, up, right
+			} else if (key === 13 || key === 32 || key === 39) { // enter, space, right
 				event.preventDefault();
 				event.stopImmediatePropagation();
 				onNext();
@@ -217,34 +217,9 @@ modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'cor
 			$('#pv-bar-close, #pv-close-area').on('click', onExit);
 			$('#pv-bar-fullscreen').on('click', onFullscreen);
 
-			$('#pv-prev-area')
-				.on('mouseenter', function () {
-					$('#pv-bar-prev').addClass('hover');
-				})
-				.on('mouseleave', function () {
-					$('#pv-bar-prev').removeClass('hover');
-				});
-
-			$('#pv-next-area')
-				.on('mouseenter', function () {
-					$('#pv-bar-next').addClass('hover');
-				})
-				.on('mouseleave', function () {
-					$('#pv-bar-next').removeClass('hover');
-				});
-
-			$('#pv-close-area')
-				.on('mouseenter', function () {
-					$('#pv-bar-close').addClass('hover');
-				})
-				.on('mouseleave', function () {
-					$('#pv-bar-close').removeClass('hover');
-				});
-
-			var fsTimer = null;
 			$('#pv-overlay')
 				.on('keydown', onKeydown)
-				.on('mousemove click mousedown', onMouseMove)
+				.on('mousemove mousedown', userAlive)
 				.on('click mousedown mousemove keydown keypress', function (event) {
 
 					event.stopImmediatePropagation();

From 2251b52f867bc1b8162d3e44ec1b1c73d14091ed Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 23 Aug 2013 01:59:11 +0200
Subject: [PATCH 24/83] Updates preview.

---
 src/_h5ai/client/css/inc/preview.less  | 16 ++++++++++------
 src/_h5ai/client/js/inc/ext/preview.js | 11 ++++++++++-
 2 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/src/_h5ai/client/css/inc/preview.less b/src/_h5ai/client/css/inc/preview.less
index 796936bb..49f03122 100644
--- a/src/_h5ai/client/css/inc/preview.less
+++ b/src/_h5ai/client/css/inc/preview.less
@@ -37,17 +37,19 @@
 	right: 8px;
 	top: 8px;
 	cursor: pointer;
-	opacity: 0.5;
 
 	img {
 		background-color: rgba(0,0,0,0.5);
 		border-radius: 8px;
 		width: 48px;
 		height: 48px;
+		opacity: 0.5;
 	}
 
-	&:hover {
-		opacity: 1;
+	&:hover, &.hover {
+		img {
+			opacity: 1;
+		}
 	}
 }
 
@@ -55,7 +57,6 @@
 	position: absolute;
 	top: 50%;
 	cursor: pointer;
-	opacity: 0.5;
 
 	img {
 		background-color: rgba(0,0,0,0.5);
@@ -64,10 +65,13 @@
 		height: 48px;
 		margin: -72px 0;
 		padding: 48px 0;
+		opacity: 0.5;
 	}
 
-	&:hover {
-		opacity: 1;
+	&:hover, &.hover {
+		img {
+			opacity: 1;
+		}
 	}
 }
 
diff --git a/src/_h5ai/client/js/inc/ext/preview.js b/src/_h5ai/client/js/inc/ext/preview.js
index e432bcf5..d33eafb8 100644
--- a/src/_h5ai/client/js/inc/ext/preview.js
+++ b/src/_h5ai/client/js/inc/ext/preview.js
@@ -117,23 +117,32 @@ modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'cor
 
 		onKeydown = function (event) {
 
-			var key = event.which;
+			var key = event.which,
+				delay = 300;
 
 			if (key === 27) { // esc
 				event.preventDefault();
 				event.stopImmediatePropagation();
+				$('#pv-bar-close, #pv-close-area').addClass('hover');
+				setTimeout(function () { $('#pv-bar-close, #pv-close-area').removeClass('hover'); }, delay);
 				onExit();
 			} else if (key === 8 || key === 37) { // backspace, left
 				event.preventDefault();
 				event.stopImmediatePropagation();
+				$('#pv-bar-prev, #pv-prev-area').addClass('hover');
+				setTimeout(function () { $('#pv-bar-prev, #pv-prev-area').removeClass('hover'); }, delay);
 				onPrevious();
 			} else if (key === 13 || key === 32 || key === 39) { // enter, space, right
 				event.preventDefault();
 				event.stopImmediatePropagation();
+				$('#pv-bar-next, #pv-next-area').addClass('hover');
+				setTimeout(function () { $('#pv-bar-next, #pv-next-area').removeClass('hover'); }, delay);
 				onNext();
 			} else if (key === 70) { // f
 				event.preventDefault();
 				event.stopImmediatePropagation();
+				$('#pv-bar-fullscreen').addClass('hover');
+				setTimeout(function () { $('#pv-bar-fullscreen').removeClass('hover'); }, delay);
 				onFullscreen();
 			}
 		},

From ff1088e53f84847e5d8a5bd97a2b7e92c165ff8f Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 23 Aug 2013 02:26:06 +0200
Subject: [PATCH 25/83] Removes unused dependencies.

---
 src/_h5ai/client/js/inc/ext/preview.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/_h5ai/client/js/inc/ext/preview.js b/src/_h5ai/client/js/inc/ext/preview.js
index d33eafb8..6e7d0624 100644
--- a/src/_h5ai/client/js/inc/ext/preview.js
+++ b/src/_h5ai/client/js/inc/ext/preview.js
@@ -1,5 +1,5 @@
 
-modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'core/store', 'core/event', 'core/location'], function (_, $, allsettings, resource, store, event, location) {
+modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'core/store'], function (_, $, allsettings, resource, store) {
 
 	var settings = _.extend({
 			enabled: true

From f5bef0072a3cc9dcb14eb4aa50e4fba9e3c3b8a9 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 23 Aug 2013 13:42:13 +0200
Subject: [PATCH 26/83] Improves sort extension.

---
 src/_h5ai/client/js/inc/ext/sort.js | 88 ++++++++++++++++++++++++-----
 src/_h5ai/conf/options.json         | 10 +++-
 2 files changed, 82 insertions(+), 16 deletions(-)

diff --git a/src/_h5ai/client/js/inc/ext/sort.js b/src/_h5ai/client/js/inc/ext/sort.js
index 268f6a43..45383176 100644
--- a/src/_h5ai/client/js/inc/ext/sort.js
+++ b/src/_h5ai/client/js/inc/ext/sort.js
@@ -3,7 +3,11 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 
 	var settings = _.extend({
 			enabled: false,
-			order: 'na'
+			order: 'na',
+			column: 0,
+			reverse: false,
+			ignorecase: true,
+			natural: true
 		}, allsettings.sort),
 
 		storekey = 'sort.order',
@@ -20,7 +24,50 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 			return 2;
 		},
 
-		cmpFn = function (rev, getVal) {
+		// Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license
+		// Author: Jim Palmer (based on chunking idea from Dave Koelle)
+		//
+		// Modified to make it work with h5ai
+		naturalCmpFn = function (val1, val2) {
+
+			var re = /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi,
+				sre = /(^[ ]*|[ ]*$)/g,
+				dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,
+				hre = /^0x[0-9a-f]+$/i,
+				ore = /^0/,
+				// convert all to strings strip whitespace
+				x = ('' + val1).replace(sre, '') || '',
+				y = ('' + val2).replace(sre, '') || '',
+				// chunk/tokenize
+				xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),
+				yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),
+				// numeric, hex or date detection
+				xD = parseInt(x.match(hre), 10) || (xN.length != 1 && x.match(dre) && Date.parse(x)),
+				yD = parseInt(y.match(hre), 10) || xD && y.match(dre) && Date.parse(y) || null,
+				oFxNcL, oFyNcL;
+			// first try and sort Hex codes or Dates
+			if (yD)
+				if ( xD < yD ) return -1;
+				else if ( xD > yD ) return 1;
+			// natural sorting through split numeric strings and default strings
+			for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {
+				// find floats not starting with '0', string or 0 if not defined (Clint Priest)
+				oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;
+				oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;
+				// handle numeric vs string comparison - number < string - (Kyle Adams)
+				if (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; }
+				// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'
+				else if (typeof oFxNcL !== typeof oFyNcL) {
+					oFxNcL += '';
+					oFyNcL += '';
+				}
+				if (oFxNcL < oFyNcL) return -1;
+				if (oFxNcL > oFyNcL) return 1;
+			}
+			return 0;
+		},
+
+		cmpFn = function (getVal, reverse, ignorecase, natural) {
 
 			return function (item1, item2) {
 
@@ -33,18 +80,25 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 
 				val1 = getVal(item1);
 				val2 = getVal(item2);
-				if (val1 < val2) {
-					return rev ? 1 : -1;
-				} else if (val1 > val2) {
-					return rev ? -1 : 1;
+
+				if (ignorecase) {
+					val1 = val1.toLowerCase();
+					val2 = val2.toLowerCase();
 				}
-				return 0;
+
+				if (natural) {
+					res = naturalCmpFn(val1, val2);
+				} else {
+					res = val1 < val2 ? -1 : (val1 > val2 ? 1 : 0);
+				}
+
+				return reverse ? -res : res;
 			};
 		},
 
 		getName = function (item) {
 
-			return $(item).find('.label').text().toLowerCase();
+			return $(item).find('.label').text();
 		},
 		getTime = function (item) {
 
@@ -91,39 +145,43 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 				$header = $('#items li.header'),
 				$label = $header.find('a.label'),
 				$date = $header.find('a.date'),
-				$size = $header.find('a.size');
+				$size = $header.find('a.size'),
+				column = settings.column,
+				reverse = settings.reverse,
+				ignorecase = settings.ignorecase,
+				natural = settings.natural;
 
 			$all = $header.find('a.label,a.date,a.size');
 			orders = {
 				na: {
 					head: $label,
 					clas: 'ascending',
-					fn: cmpFn(false, getName)
+					fn: cmpFn(getName, false, ignorecase, natural)
 				},
 				nd: {
 					head: $label,
 					clas: 'descending',
-					fn: cmpFn(true, getName)
+					fn: cmpFn(getName, true, ignorecase, natural)
 				},
 				da: {
 					head: $date,
 					clas: 'ascending',
-					fn: cmpFn(false, getTime)
+					fn: cmpFn(getTime, false, ignorecase, natural)
 				},
 				dd: {
 					head: $date,
 					clas: 'descending',
-					fn: cmpFn(true, getTime)
+					fn: cmpFn(getTime, true, ignorecase, natural)
 				},
 				sa: {
 					head: $size,
 					clas: 'ascending',
-					fn: cmpFn(false, getSize)
+					fn: cmpFn(getSize, false, ignorecase, natural)
 				},
 				sd: {
 					head: $size,
 					clas: 'descending',
-					fn: cmpFn(true, getSize)
+					fn: cmpFn(getSize, true, ignorecase, natural)
 				}
 			};
 
diff --git a/src/_h5ai/conf/options.json b/src/_h5ai/conf/options.json
index 59d3f241..c6b0b40a 100644
--- a/src/_h5ai/conf/options.json
+++ b/src/_h5ai/conf/options.json
@@ -276,10 +276,18 @@ Options
 	for "descending".
 
 	- order: "na", "nd", "da", "dd", "sa" or "sd"
+	- column: [NOT USED] 0 for "Name", 1 for "Date", 2 for "Size"
+	- reverse: [NOT USED] false for ascending, true for descending
+	- ignorecase: compare ignorecase
+	- natural: use natural sort order
 	*/
 	"sort": {
 		"enabled": true,
-		"order": "na"
+		"order": "na",
+		"column": 0,
+		"reverse": false,
+		"ignorecase": true,
+		"natural": true
 	},
 
 	/*

From aef4facdb38eb9a4d7d3b4f082d2f11571ae8470 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 23 Aug 2013 16:28:58 +0200
Subject: [PATCH 27/83] Improves sort extension.

---
 src/_h5ai/client/js/inc/ext/sort.js | 127 ++++++++++++----------------
 src/_h5ai/conf/options.json         |  16 ++--
 2 files changed, 60 insertions(+), 83 deletions(-)

diff --git a/src/_h5ai/client/js/inc/ext/sort.js b/src/_h5ai/client/js/inc/ext/sort.js
index 45383176..9dddb6a5 100644
--- a/src/_h5ai/client/js/inc/ext/sort.js
+++ b/src/_h5ai/client/js/inc/ext/sort.js
@@ -3,7 +3,6 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 
 	var settings = _.extend({
 			enabled: false,
-			order: 'na',
 			column: 0,
 			reverse: false,
 			ignorecase: true,
@@ -12,18 +11,46 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 
 		storekey = 'sort.order',
 
-		type = function (item) {
+		getType = function (item) {
 
 			var $item = $(item);
 
 			if ($item.hasClass('folder-parent')) {
 				return 0;
-			} else if ($item.hasClass('folder')) {
+			}
+			if ($item.hasClass('folder')) {
 				return 1;
 			}
 			return 2;
 		},
 
+		getName = function (item) {
+
+			return $(item).find('.label').text();
+		},
+
+		getTime = function (item) {
+
+			return $(item).find('.date').data('time');
+		},
+
+		getSize = function (item) {
+
+			return $(item).find('.size').data('bytes');
+		},
+
+		columnGetters = {
+			0: getName,
+			1: getTime,
+			2: getSize
+		},
+
+		columnClasses = {
+			0: 'label',
+			1: 'date',
+			2: 'size'
+		},
+
 		// Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license
 		// Author: Jim Palmer (based on chunking idea from Dave Koelle)
 		//
@@ -36,8 +63,8 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 				hre = /^0x[0-9a-f]+$/i,
 				ore = /^0/,
 				// convert all to strings strip whitespace
-				x = ('' + val1).replace(sre, '') || '',
-				y = ('' + val2).replace(sre, '') || '',
+				x = ('' + val1).replace(sre, ''),
+				y = ('' + val2).replace(sre, ''),
 				// chunk/tokenize
 				xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),
 				yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),
@@ -73,13 +100,13 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 
 				var res, val1, val2;
 
-				res = type(item1) - type(item2);
+				res = getType(item1) - getType(item2);
 				if (res !== 0) {
 					return res;
 				}
 
-				val1 = getVal(item1);
-				val2 = getVal(item2);
+				val1 = '' + getVal(item1);
+				val2 = '' + getVal(item2);
 
 				if (ignorecase) {
 					val1 = val1.toLowerCase();
@@ -96,34 +123,24 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 			};
 		},
 
-		getName = function (item) {
+		sortItems = function (column, reverse) {
 
-			return $(item).find('.label').text();
-		},
-		getTime = function (item) {
+			var headers = $('#items li.header a'),
+				header = $("#items li.header a." + columnClasses[column]),
 
-			return $(item).find('.date').data('time');
-		},
-		getSize = function (item) {
+				fn = cmpFn(columnGetters[column], reverse, settings.ignorecase, settings.natural),
 
-			return $(item).find('.size').data('bytes');
-		},
+				current = $('#items .item'),
+				sorted = $('#items .item').sort(fn);
 
-		$all, orders,
+			store.put(storekey, {column: column, reverse: reverse});
 
-		sortBy = function (id) {
+			headers.removeClass('ascending descending');
+			header.addClass(reverse ? 'descending' : 'ascending');
 
-			var order = orders[id];
-
-			store.put(storekey, id);
-
-			$all.removeClass('ascending').removeClass('descending');
-			order.head.addClass(order.clas);
-			var current = $('#items .item');
-			var sorted = $('#items .item').sort(order.fn);
 			for (var i = 0, l = current.length; i < l; i += 1) {
 				if (current[i] !== sorted[i]) {
-					sorted.detach().sort(order.fn).appendTo('#items');
+					sorted.detach().sort(fn).appendTo('#items');
 					break;
 				}
 			}
@@ -131,7 +148,11 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 
 		onContentChanged = function (item) {
 
-			sortBy(store.get(storekey) || settings.order);
+			var order = store.get(storekey),
+				column = order.column || settings.column,
+				reverse = order.reverse || settings.reverse;
+
+			sortItems(column, reverse);
 		},
 
 		init = function () {
@@ -145,66 +166,26 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 				$header = $('#items li.header'),
 				$label = $header.find('a.label'),
 				$date = $header.find('a.date'),
-				$size = $header.find('a.size'),
-				column = settings.column,
-				reverse = settings.reverse,
-				ignorecase = settings.ignorecase,
-				natural = settings.natural;
-
-			$all = $header.find('a.label,a.date,a.size');
-			orders = {
-				na: {
-					head: $label,
-					clas: 'ascending',
-					fn: cmpFn(getName, false, ignorecase, natural)
-				},
-				nd: {
-					head: $label,
-					clas: 'descending',
-					fn: cmpFn(getName, true, ignorecase, natural)
-				},
-				da: {
-					head: $date,
-					clas: 'ascending',
-					fn: cmpFn(getTime, false, ignorecase, natural)
-				},
-				dd: {
-					head: $date,
-					clas: 'descending',
-					fn: cmpFn(getTime, true, ignorecase, natural)
-				},
-				sa: {
-					head: $size,
-					clas: 'ascending',
-					fn: cmpFn(getSize, false, ignorecase, natural)
-				},
-				sd: {
-					head: $size,
-					clas: 'descending',
-					fn: cmpFn(getSize, true, ignorecase, natural)
-				}
-			};
-
-			sortBy(store.get(storekey) || settings.order);
+				$size = $header.find('a.size');
 
 			$label
 				.append($ascending.clone()).append($descending.clone())
 				.click(function (event) {
-					sortBy('n' + ($label.hasClass('ascending') ? 'd' : 'a'));
+					sortItems(0, $(this).hasClass('ascending'));
 					event.preventDefault();
 				});
 
 			$date
 				.prepend($ascending.clone()).prepend($descending.clone())
 				.click(function (event) {
-					sortBy('d' + ($date.hasClass('ascending') ? 'd' : 'a'));
+					sortItems(1, $(this).hasClass('ascending'));
 					event.preventDefault();
 				});
 
 			$size
 				.prepend($ascending.clone()).prepend($descending.clone())
 				.click(function (event) {
-					sortBy('s' + ($size.hasClass('ascending') ? 'd' : 'a'));
+					sortItems(2, $(this).hasClass('ascending'));
 					event.preventDefault();
 				});
 
diff --git a/src/_h5ai/conf/options.json b/src/_h5ai/conf/options.json
index c6b0b40a..a5caf6cb 100644
--- a/src/_h5ai/conf/options.json
+++ b/src/_h5ai/conf/options.json
@@ -270,20 +270,16 @@ Options
 	},
 
 	/*
-	Default sort order is a two letter code. The first letter specifies
-	the column: "n" for "Name", "d" for "Date" or "s" for "Size". The
-	second letter specifies the sort order: "a" for "ascending" or "d"
-	for "descending".
+	Default sort order.
+	"column" and "reverse" are locally stored.
 
-	- order: "na", "nd", "da", "dd", "sa" or "sd"
-	- column: [NOT USED] 0 for "Name", 1 for "Date", 2 for "Size"
-	- reverse: [NOT USED] false for ascending, true for descending
-	- ignorecase: compare ignorecase
-	- natural: use natural sort order
+	- column: int, 0 for "Name", 1 for "Date", 2 for "Size"
+	- reverse: boolean, false for ascending, true for descending
+	- ignorecase: boolean, compare ignorecase
+	- natural: boolean, use natural sort order
 	*/
 	"sort": {
 		"enabled": true,
-		"order": "na",
 		"column": 0,
 		"reverse": false,
 		"ignorecase": true,

From 1d24ab33e9b7fb33e181fa88dadad427ff289b11 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 23 Aug 2013 21:27:40 +0200
Subject: [PATCH 28/83] Updates sort extension.

---
 src/_h5ai/client/js/inc/ext/sort.js | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/src/_h5ai/client/js/inc/ext/sort.js b/src/_h5ai/client/js/inc/ext/sort.js
index 9dddb6a5..29ae0238 100644
--- a/src/_h5ai/client/js/inc/ext/sort.js
+++ b/src/_h5ai/client/js/inc/ext/sort.js
@@ -10,6 +10,8 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 		}, allsettings.sort),
 
 		storekey = 'sort.order',
+		template = '<img src="' + resource.image('ascending') + '" class="sort ascending" alt="ascending" />' +
+					'<img src="' + resource.image('descending') + '" class="sort descending" alt="descending" />',
 
 		getType = function (item) {
 
@@ -163,27 +165,24 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 
 			var $ascending = $('<img src="' + resource.image('ascending') + '" class="sort ascending" alt="ascending" />'),
 				$descending = $('<img src="' + resource.image('descending') + '" class="sort descending" alt="descending" />'),
-				$header = $('#items li.header'),
-				$label = $header.find('a.label'),
-				$date = $header.find('a.date'),
-				$size = $header.find('a.size');
+				$header = $('#items li.header');
 
-			$label
-				.append($ascending.clone()).append($descending.clone())
+			$header.find('a.label')
+				.append(template)
 				.click(function (event) {
 					sortItems(0, $(this).hasClass('ascending'));
 					event.preventDefault();
 				});
 
-			$date
-				.prepend($ascending.clone()).prepend($descending.clone())
+			$header.find('a.date')
+				.prepend(template)
 				.click(function (event) {
 					sortItems(1, $(this).hasClass('ascending'));
 					event.preventDefault();
 				});
 
-			$size
-				.prepend($ascending.clone()).prepend($descending.clone())
+			$header.find('a.size')
+				.prepend(template)
 				.click(function (event) {
 					sortItems(2, $(this).hasClass('ascending'));
 					event.preventDefault();

From bbdafb9def82d2267ac14ddb321e217e06dfba5b Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 23 Aug 2013 22:32:31 +0200
Subject: [PATCH 29/83] Updates sort extension.

---
 src/_h5ai/client/js/inc/ext/sort.js | 49 +++++++++++++++--------------
 1 file changed, 25 insertions(+), 24 deletions(-)

diff --git a/src/_h5ai/client/js/inc/ext/sort.js b/src/_h5ai/client/js/inc/ext/sort.js
index 29ae0238..6e79d1a4 100644
--- a/src/_h5ai/client/js/inc/ext/sort.js
+++ b/src/_h5ai/client/js/inc/ext/sort.js
@@ -96,7 +96,7 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 			return 0;
 		},
 
-		cmpFn = function (getVal, reverse, ignorecase, natural) {
+		cmpFn = function (getValue, reverse, ignorecase, natural) {
 
 			return function (item1, item2) {
 
@@ -107,8 +107,8 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 					return res;
 				}
 
-				val1 = '' + getVal(item1);
-				val2 = '' + getVal(item2);
+				val1 = '' + getValue(item1);
+				val2 = '' + getValue(item2);
 
 				if (ignorecase) {
 					val1 = val1.toLowerCase();
@@ -163,30 +163,31 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 				return;
 			}
 
-			var $ascending = $('<img src="' + resource.image('ascending') + '" class="sort ascending" alt="ascending" />'),
-				$descending = $('<img src="' + resource.image('descending') + '" class="sort descending" alt="descending" />'),
-				$header = $('#items li.header');
+			$('#items li.header')
 
-			$header.find('a.label')
-				.append(template)
-				.click(function (event) {
-					sortItems(0, $(this).hasClass('ascending'));
-					event.preventDefault();
-				});
+				.find('a.label')
+					.append(template)
+					.click(function (event) {
+						sortItems(0, $(this).hasClass('ascending'));
+						event.preventDefault();
+					})
+				.end()
 
-			$header.find('a.date')
-				.prepend(template)
-				.click(function (event) {
-					sortItems(1, $(this).hasClass('ascending'));
-					event.preventDefault();
-				});
+				.find('a.date')
+					.prepend(template)
+					.click(function (event) {
+						sortItems(1, $(this).hasClass('ascending'));
+						event.preventDefault();
+					})
+				.end()
 
-			$header.find('a.size')
-				.prepend(template)
-				.click(function (event) {
-					sortItems(2, $(this).hasClass('ascending'));
-					event.preventDefault();
-				});
+				.find('a.size')
+					.prepend(template)
+					.click(function (event) {
+						sortItems(2, $(this).hasClass('ascending'));
+						event.preventDefault();
+					})
+				.end();
 
 			event.sub('location.changed', onContentChanged);
 			event.sub('location.refreshed', onContentChanged);

From abd45c1eeb41de2acb089f8fb03c68fe666f2c5b Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 23 Aug 2013 22:56:28 +0200
Subject: [PATCH 30/83] Updates sort extension.

---
 src/_h5ai/client/js/inc/ext/sort.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/_h5ai/client/js/inc/ext/sort.js b/src/_h5ai/client/js/inc/ext/sort.js
index 6e79d1a4..565b84d2 100644
--- a/src/_h5ai/client/js/inc/ext/sort.js
+++ b/src/_h5ai/client/js/inc/ext/sort.js
@@ -128,7 +128,7 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 		sortItems = function (column, reverse) {
 
 			var headers = $('#items li.header a'),
-				header = $("#items li.header a." + columnClasses[column]),
+				header = $('#items li.header a.' + columnClasses[column]),
 
 				fn = cmpFn(columnGetters[column], reverse, settings.ignorecase, settings.natural),
 

From 7969e89bfbe2bddd525f7728fa391bad6c1de096 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 23 Aug 2013 23:15:47 +0200
Subject: [PATCH 31/83] Fixes deletion of multiple files at once.

---
 src/_h5ai/client/js/inc/ext/delete.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/_h5ai/client/js/inc/ext/delete.js b/src/_h5ai/client/js/inc/ext/delete.js
index 9fb54cca..afacfa7b 100644
--- a/src/_h5ai/client/js/inc/ext/delete.js
+++ b/src/_h5ai/client/js/inc/ext/delete.js
@@ -48,7 +48,7 @@ modulejs.define('ext/delete', ['_', '$', 'core/settings', 'core/event', 'core/re
 				selectedHrefsStr = _.map(items, function (item) {
 
 					return item.absHref;
-				}).join(':');
+				}).join('|:|');
 				$delete.appendTo('#navbar').show();
 			} else {
 				$delete.hide();

From 872be4ba1953d3fdd14f06b874eb0593f3606b49 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 23 Aug 2013 23:26:31 +0200
Subject: [PATCH 32/83] Removes unused method.

---
 src/_h5ai/server/php/inc/util.php | 13 -------------
 1 file changed, 13 deletions(-)

diff --git a/src/_h5ai/server/php/inc/util.php b/src/_h5ai/server/php/inc/util.php
index 28d04562..e952499b 100644
--- a/src/_h5ai/server/php/inc/util.php
+++ b/src/_h5ai/server/php/inc/util.php
@@ -77,17 +77,4 @@ function load_commented_json($file) {
 	return json_decode($str, true);
 }
 
-/* unused
-function merge_config($a, $b) {
-
-	$result = array_merge(array(), $a);
-
-	foreach ($b as $key => $value) {
-		$result[$key] = array_merge($result[$key], $b[$key]);
-	}
-
-	return $result;
-}
-*/
-
 ?>
\ No newline at end of file

From 7ee7d5eddb740113f7c3728b7b264e5d4660b945 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 23 Aug 2013 23:37:09 +0200
Subject: [PATCH 33/83] Updates readme.

---
 README.md | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 8ad8a00e..eb537d46 100644
--- a/README.md
+++ b/README.md
@@ -56,7 +56,14 @@ It profits from these great projects:
 
 ### develop branch
 
-* ...
+* updates image and text preview
+* adds optional natural sort of items
+* fixes file deletion of multiple files
+* fixes `setParentFolderLabels = false`
+* cleans code
+* updates info page `/_h5ai`
+* adds type `aiff` to type `audio`
+* updates `pl` translation
 
 
 ### v0.23.0 - *2013-07-21*

From 30b5266a3f0de7b3841cc4657852d2e8ef5c4b7a Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sat, 24 Aug 2013 00:57:39 +0200
Subject: [PATCH 34/83] Adds dk translation.

---
 README.md                   |  3 ++-
 src/_h5ai/conf/l10n/dk.json | 19 +++++++++++++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)
 create mode 100644 src/_h5ai/conf/l10n/dk.json

diff --git a/README.md b/README.md
index eb537d46..59e8f8bf 100644
--- a/README.md
+++ b/README.md
@@ -63,7 +63,8 @@ It profits from these great projects:
 * cleans code
 * updates info page `/_h5ai`
 * adds type `aiff` to type `audio`
-* updates `pl` translation
+* adds `dk` translation by Ronnie Milbo
+* updates to `pl` translation by Mark
 
 
 ### v0.23.0 - *2013-07-21*
diff --git a/src/_h5ai/conf/l10n/dk.json b/src/_h5ai/conf/l10n/dk.json
new file mode 100644
index 00000000..ba2344eb
--- /dev/null
+++ b/src/_h5ai/conf/l10n/dk.json
@@ -0,0 +1,19 @@
+{
+	"lang": "dansk",
+	"details": "detaljer",
+	"list": "list",
+	"grid": "grid",
+	"icons": "ikoner",
+	"name": "Navn",
+	"lastModified": "Sidst ændret",
+	"size": "Størrelse",
+	"parentDirectory": "Overordnet mappe",
+	"empty": "tom",
+	"folders": "mapper",
+	"files": "filer",
+	"download": "download",
+	"noMatch": "ingen match",
+	"dateFormat": "DD-MM-YYYY HH:mm",
+	"filter": "filter",
+	"delete": "slet"
+}
\ No newline at end of file

From 727f161b8a52b2ee9825d6fd3775ae3669ad98f9 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sat, 24 Aug 2013 01:17:01 +0200
Subject: [PATCH 35/83] It's actually the da translation.

---
 README.md                                | 2 +-
 src/_h5ai/conf/l10n/{dk.json => da.json} | 0
 2 files changed, 1 insertion(+), 1 deletion(-)
 rename src/_h5ai/conf/l10n/{dk.json => da.json} (100%)

diff --git a/README.md b/README.md
index 59e8f8bf..9ad2875b 100644
--- a/README.md
+++ b/README.md
@@ -63,7 +63,7 @@ It profits from these great projects:
 * cleans code
 * updates info page `/_h5ai`
 * adds type `aiff` to type `audio`
-* adds `dk` translation by Ronnie Milbo
+* adds `da` translation by Ronnie Milbo
 * updates to `pl` translation by Mark
 
 
diff --git a/src/_h5ai/conf/l10n/dk.json b/src/_h5ai/conf/l10n/da.json
similarity index 100%
rename from src/_h5ai/conf/l10n/dk.json
rename to src/_h5ai/conf/l10n/da.json

From 4357c0f1f055c7ba9190468e821bd977439e2fc8 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sat, 24 Aug 2013 15:14:25 +0200
Subject: [PATCH 36/83] Makes natural sorting opt-in.

---
 src/_h5ai/client/js/inc/ext/sort.js | 2 +-
 src/_h5ai/conf/options.json         | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/_h5ai/client/js/inc/ext/sort.js b/src/_h5ai/client/js/inc/ext/sort.js
index 565b84d2..fdfc2016 100644
--- a/src/_h5ai/client/js/inc/ext/sort.js
+++ b/src/_h5ai/client/js/inc/ext/sort.js
@@ -6,7 +6,7 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 			column: 0,
 			reverse: false,
 			ignorecase: true,
-			natural: true
+			natural: false
 		}, allsettings.sort),
 
 		storekey = 'sort.order',
diff --git a/src/_h5ai/conf/options.json b/src/_h5ai/conf/options.json
index a5caf6cb..9eb71d72 100644
--- a/src/_h5ai/conf/options.json
+++ b/src/_h5ai/conf/options.json
@@ -283,7 +283,7 @@ Options
 		"column": 0,
 		"reverse": false,
 		"ignorecase": true,
-		"natural": true
+		"natural": false
 	},
 
 	/*

From ad7c8d9bd8dec2b8bfb49289ad40625170c1bb0b Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sat, 24 Aug 2013 15:38:07 +0200
Subject: [PATCH 37/83] Updates readme.

---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 9ad2875b..ad0d277b 100644
--- a/README.md
+++ b/README.md
@@ -62,7 +62,7 @@ It profits from these great projects:
 * fixes `setParentFolderLabels = false`
 * cleans code
 * updates info page `/_h5ai`
-* adds type `aiff` to type `audio`
+* adds `aiff` to `audio` types
 * adds `da` translation by Ronnie Milbo
 * updates to `pl` translation by Mark
 

From a568308250eef7b8086b740b8eabf02c29579d95 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sat, 24 Aug 2013 19:38:28 +0200
Subject: [PATCH 38/83] Fixes issue #202.

---
 src/_h5ai/server/php/inc/Archive.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/_h5ai/server/php/inc/Archive.php b/src/_h5ai/server/php/inc/Archive.php
index 80482eb3..16829753 100644
--- a/src/_h5ai/server/php/inc/Archive.php
+++ b/src/_h5ai/server/php/inc/Archive.php
@@ -153,7 +153,7 @@ class Archive {
 			if ($code == App::$MAGIC_SEQUENCE && !$this->app->is_ignored($n)) {
 
 				$real_file = $this->app->get_abs_path($href);
-				$archived_file = preg_replace("!^" . normalize_path($this->app->get_abs_path(), true) . "!", "", $real_file);
+				$archived_file = preg_replace("!^" . preg_quote(normalize_path($this->app->get_abs_path(), true)) . "!", "", $real_file);
 
 				if (is_dir($real_file)) {
 					$this->add_dir($real_file, $archived_file);

From 4cf5b13d0630e4111c1ea13391a0ebcade2c068e Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sat, 24 Aug 2013 22:31:13 +0200
Subject: [PATCH 39/83] Adds select SVG image.

---
 src/_h5ai/client/images/select.svg | 54 ++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100644 src/_h5ai/client/images/select.svg

diff --git a/src/_h5ai/client/images/select.svg b/src/_h5ai/client/images/select.svg
new file mode 100644
index 00000000..84a8c603
--- /dev/null
+++ b/src/_h5ai/client/images/select.svg
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   height="16"
+   width="16"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="select.svg">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs8" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1871"
+     inkscape:window-height="1056"
+     id="namedview6"
+     showgrid="false"
+     inkscape:zoom="20.85965"
+     inkscape:cx="16.301202"
+     inkscape:cy="5.1092914"
+     inkscape:window-x="49"
+     inkscape:window-y="24"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2" />
+  <path
+     d="M 11.4375,3.40625 6.5000001,8.34375 4.5625,6.40625 l -2.125,2.125 3.0000001,3 1.0625,1.0625 1.0625,-1.0625 5.9999999,-6 -2.125,-2.125 z"
+     style="fill:#555555"
+     id="path4"
+     inkscape:connector-curvature="0" />
+</svg>

From 1f9365ae97b9f28a3cdc38c6f556268e3b7acad8 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sat, 24 Aug 2013 23:22:34 +0200
Subject: [PATCH 40/83] Escapes shell arguments. See issue #197.

---
 src/_h5ai/server/php/inc/Archive.php | 6 +++---
 src/_h5ai/server/php/inc/Item.php    | 4 ++--
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/_h5ai/server/php/inc/Archive.php b/src/_h5ai/server/php/inc/Archive.php
index 16829753..d441884b 100644
--- a/src/_h5ai/server/php/inc/Archive.php
+++ b/src/_h5ai/server/php/inc/Archive.php
@@ -44,9 +44,9 @@ class Archive {
 
 	private function shell_cmd($cmd) {
 
-		$cmd = str_replace("[ROOTDIR]", "\"" . $this->app->get_abs_path() . "\"", $cmd);
-		$cmd = str_replace("[DIRS]", count($this->dirs) ? "\"" . implode("\"  \"", array_values($this->dirs)) . "\"" : "", $cmd);
-		$cmd = str_replace("[FILES]", count($this->files) ? "\"" . implode("\"  \"", array_values($this->files)) . "\"" : "", $cmd);
+		$cmd = str_replace("[ROOTDIR]", escapeshellarg($this->app->get_abs_path()), $cmd);
+		$cmd = str_replace("[DIRS]", count($this->dirs) ? implode(" ", array_map("escapeshellarg", $this->dirs)) : "", $cmd);
+		$cmd = str_replace("[FILES]", count($this->files) ? implode(" ", array_map("escapeshellarg", $this->files)) : "", $cmd);
 		try {
 			passthru($cmd);
 		} catch (Exeption $err) {
diff --git a/src/_h5ai/server/php/inc/Item.php b/src/_h5ai/server/php/inc/Item.php
index 1a5c6135..2da5bffa 100644
--- a/src/_h5ai/server/php/inc/Item.php
+++ b/src/_h5ai/server/php/inc/Item.php
@@ -2,7 +2,7 @@
 
 class Item {
 
-	private static $FOLDER_SIZE_CMD = "du -sk \"[DIR]\"";
+	private static $FOLDER_SIZE_CMD = "du -sk [DIR]";
 
 	public static function cmp($item1, $item2) {
 
@@ -57,7 +57,7 @@ class Item {
 			$this->size = null;
 			$options = $app->get_options();
 			if ($options["foldersize"]["enabled"]) {
-				$cmd = str_replace("[DIR]", $this->abs_path, Item::$FOLDER_SIZE_CMD);
+				$cmd = str_replace("[DIR]", escapeshellarg($this->abs_path), Item::$FOLDER_SIZE_CMD);
 				$this->size = intval(preg_replace("/\s.*$/", "", `$cmd`), 10) * 1024;
 			}
 		} else {

From e2f3e420f179405075ed49a1b6ed4baa72125173 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sun, 25 Aug 2013 02:25:38 +0200
Subject: [PATCH 41/83] Fixes thumb position.

---
 src/_h5ai/client/css/inc/view.less | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/_h5ai/client/css/inc/view.less b/src/_h5ai/client/css/inc/view.less
index 14103a72..f835abbc 100644
--- a/src/_h5ai/client/css/inc/view.less
+++ b/src/_h5ai/client/css/inc/view.less
@@ -128,6 +128,7 @@
 
 				&.thumb {
 					box-shadow: 0 0 0 1px #ddd;
+					vertical-align: top;
 				}
 			}
 

From 4a35f2722472b7b37ce3688ae5e4674bc2bc2432 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sun, 25 Aug 2013 02:26:01 +0200
Subject: [PATCH 42/83] More escapings.

---
 src/_h5ai/server/php/inc/Thumb.php | 36 +++++++++++++++---------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/src/_h5ai/server/php/inc/Thumb.php b/src/_h5ai/server/php/inc/Thumb.php
index 4365040d..a98423d0 100644
--- a/src/_h5ai/server/php/inc/Thumb.php
+++ b/src/_h5ai/server/php/inc/Thumb.php
@@ -2,8 +2,8 @@
 
 class Thumb {
 
-	private static $FFMPEG_CMD = "ffmpeg -i \"[SOURCE]\" -an -ss 3 -vframes 1 \"[TARGET]\"";
-	private static $CONVERT_CMD = "convert -strip \"[SOURCE][0]\" \"[TARGET]\"";
+	private static $FFMPEG_CMD = "ffmpeg -i [SOURCE] -an -ss 3 -vframes 1 [TARGET]";
+	private static $CONVERT_CMD = "convert -strip [SOURCE][0] [TARGET]";
 
 	public static final function is_supported() {
 
@@ -84,8 +84,8 @@ class Thumb {
 		$capture_abs_path = $this->app->get_cache_abs_path() . "/capture-" . sha1($source_abs_path) . ".jpg";
 
 		if (!file_exists($capture_abs_path) || filemtime($source_abs_path) >= filemtime($capture_abs_path)) {
-			$cmd = str_replace("[SOURCE]", $source_abs_path, $cmd);
-			$cmd = str_replace("[TARGET]", $capture_abs_path, $cmd);
+			$cmd = str_replace("[SOURCE]", escapeshellarg($source_abs_path), $cmd);
+			$cmd = str_replace("[TARGET]", escapeshellarg($capture_abs_path), $cmd);
 			`$cmd`;
 		}
 
@@ -97,14 +97,14 @@ class Thumb {
 
 class Magic {
 
-	private static $GET_SIZE_CMD = "identify -format \"%w %h\" \"[SOURCE]\"";
-	private static $RESIZE_CMD = "convert -strip -transparent-color \"#ffffff\" -resize [WIDTH]x[HEIGHT] -quality 80 \"[SOURCE]\" \"[TARGET]\"";
-	private static $SQUARE_CMD = "convert -strip -transparent-color \"#ffffff\" -crop [CWIDTH]x[CWIDTH]+[CLEFT]+[CTOP] -resize [WIDTH]x[WIDTH] -quality 80 \"[SOURCE]\" \"[TARGET]\"";
+	private static $GET_SIZE_CMD = "identify -format \"%w %h\" [SOURCE]";
+	private static $RESIZE_CMD = "convert -strip -transparent-color \"#ffffff\" -resize [WIDTH]x[HEIGHT] -quality 80 [SOURCE] [TARGET]";
+	private static $SQUARE_CMD = "convert -strip -transparent-color \"#ffffff\" -crop [CWIDTH]x[CWIDTH]+[CLEFT]+[CTOP] -resize [WIDTH]x[WIDTH] -quality 80 [SOURCE] [TARGET]";
 
 
 	private static final function img_size($source) {
 
-		$cmd = str_replace("[SOURCE]", str_replace("\"", "\\\"", $source), Magic::$GET_SIZE_CMD);
+		$cmd = str_replace("[SOURCE]", escapeshellarg($source), Magic::$GET_SIZE_CMD);
 		$size = explode(" ", `$cmd`);
 		$size[0] = intval($size[0]);
 		$size[1] = intval($size[1]);
@@ -113,10 +113,10 @@ class Magic {
 
 	private static final function rational($source, $target, $width, $height) {
 
-		$cmd = str_replace("[SOURCE]", str_replace("\"", "\\\"", $source), Magic::$RESIZE_CMD);
-		$cmd = str_replace("[TARGET]", str_replace("\"", "\\\"", $target), $cmd);
-		$cmd = str_replace("[WIDTH]", $width, $cmd);
-		$cmd = str_replace("[HEIGHT]", $height, $cmd);
+		$cmd = str_replace("[SOURCE]", escapeshellarg($source), Magic::$RESIZE_CMD);
+		$cmd = str_replace("[TARGET]", escapeshellarg($target), $cmd);
+		$cmd = str_replace("[WIDTH]", escapeshellarg($width), $cmd);
+		$cmd = str_replace("[HEIGHT]", escapeshellarg($height), $cmd);
 		`$cmd`;
 	}
 
@@ -130,12 +130,12 @@ class Magic {
 		$cleft = ($w - $cwidth) / 2;
 		$ctop = ($h - $cwidth) / 2;
 
-		$cmd = str_replace("[SOURCE]", str_replace("\"", "\\\"", $source), Magic::$SQUARE_CMD);
-		$cmd = str_replace("[TARGET]", str_replace("\"", "\\\"", $target), $cmd);
-		$cmd = str_replace("[CWIDTH]", $cwidth, $cmd);
-		$cmd = str_replace("[CLEFT]", $cleft, $cmd);
-		$cmd = str_replace("[CTOP]", $ctop, $cmd);
-		$cmd = str_replace("[WIDTH]", $width, $cmd);
+		$cmd = str_replace("[SOURCE]", escapeshellarg($source), Magic::$SQUARE_CMD);
+		$cmd = str_replace("[TARGET]", escapeshellarg($target), $cmd);
+		$cmd = str_replace("[CWIDTH]", escapeshellarg($cwidth), $cmd);
+		$cmd = str_replace("[CLEFT]", escapeshellarg($cleft), $cmd);
+		$cmd = str_replace("[CTOP]", escapeshellarg($ctop), $cmd);
+		$cmd = str_replace("[WIDTH]", escapeshellarg($width), $cmd);
 		`$cmd`;
 	}
 

From ef969b582def427d1105a5deba68823ff9475342 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sun, 25 Aug 2013 02:38:47 +0200
Subject: [PATCH 43/83] Fixes thumb position.

---
 src/_h5ai/client/css/inc/view.less | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/_h5ai/client/css/inc/view.less b/src/_h5ai/client/css/inc/view.less
index f835abbc..68710d16 100644
--- a/src/_h5ai/client/css/inc/view.less
+++ b/src/_h5ai/client/css/inc/view.less
@@ -128,7 +128,6 @@
 
 				&.thumb {
 					box-shadow: 0 0 0 1px #ddd;
-					vertical-align: top;
 				}
 			}
 
@@ -145,6 +144,7 @@
 				img {
 					max-width: 100px;
 					max-height: 48px;
+					vertical-align: top;
 				}
 			}
 		}

From 3bbfc85877d9e629c879d5fe4722508f10cffe8f Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sun, 25 Aug 2013 02:48:24 +0200
Subject: [PATCH 44/83] Updates readme.

---
 README.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/README.md b/README.md
index ad0d277b..59c791d5 100644
--- a/README.md
+++ b/README.md
@@ -60,6 +60,7 @@ It profits from these great projects:
 * adds optional natural sort of items
 * fixes file deletion of multiple files
 * fixes `setParentFolderLabels = false`
+* fixes shell-arg and RegExp escape issues
 * cleans code
 * updates info page `/_h5ai`
 * adds `aiff` to `audio` types

From a6e79b537b5c2aed7ea632cbb2e99f83b84a2fde Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sun, 25 Aug 2013 14:36:15 +0200
Subject: [PATCH 45/83] Changes dropbox area to whole document.

---
 src/_h5ai/client/css/inc/dropbox.less  | 5 +++++
 src/_h5ai/client/js/inc/ext/dropbox.js | 3 ++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/_h5ai/client/css/inc/dropbox.less b/src/_h5ai/client/css/inc/dropbox.less
index ed8dfefa..0a534cc5 100644
--- a/src/_h5ai/client/css/inc/dropbox.less
+++ b/src/_h5ai/client/css/inc/dropbox.less
@@ -1,4 +1,9 @@
 
+html {
+	min-height: 100%;
+}
+
+
 #content {
 	border: 1px dashed #fff;
 	border-radius: 8px;
diff --git a/src/_h5ai/client/js/inc/ext/dropbox.js b/src/_h5ai/client/js/inc/ext/dropbox.js
index 5512cb34..d80f1ad9 100644
--- a/src/_h5ai/client/js/inc/ext/dropbox.js
+++ b/src/_h5ai/client/js/inc/ext/dropbox.js
@@ -48,7 +48,8 @@ modulejs.define('ext/dropbox', ['_', '$', 'core/settings', 'core/location', 'cor
 
 			event.sub('ready', function () {
 
-				$content.filedrop({
+				// $content.filedrop({
+				$('html').filedrop({
 
 					paramname: 'userfile',
 

From 1f2ad2ebff07db6c4e8069329958a8dcbf5a1d82 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sun, 25 Aug 2013 20:17:01 +0200
Subject: [PATCH 46/83] Updates styles.

---
 src/_h5ai/client/css/inc/dropbox.less |  5 -----
 src/_h5ai/client/css/inc/general.less | 22 ++++++++++++----------
 2 files changed, 12 insertions(+), 15 deletions(-)

diff --git a/src/_h5ai/client/css/inc/dropbox.less b/src/_h5ai/client/css/inc/dropbox.less
index 0a534cc5..ed8dfefa 100644
--- a/src/_h5ai/client/css/inc/dropbox.less
+++ b/src/_h5ai/client/css/inc/dropbox.less
@@ -1,9 +1,4 @@
 
-html {
-	min-height: 100%;
-}
-
-
 #content {
 	border: 1px dashed #fff;
 	border-radius: 8px;
diff --git a/src/_h5ai/client/css/inc/general.less b/src/_h5ai/client/css/inc/general.less
index aa80c092..92cdd2ce 100644
--- a/src/_h5ai/client/css/inc/general.less
+++ b/src/_h5ai/client/css/inc/general.less
@@ -20,19 +20,28 @@
 @col-sb-thumb: rgba(0,0,0,0.15);
 @col-sb-thumb-active: rgba(0,0,0,0.25);
 
-
 @border-widget: 1px solid @col-border;
 @border-widget-sep: 1px solid @col-widget-sep;
 
-
 @font-family: Ubuntu, sans-serif;
 @font-family-mono: "Ubuntu Mono", monospace;
 
 
-html { overflow-y: auto; }
 ::-moz-selection { background: #68A9FF; color: #fff; text-shadow: none; }
 ::selection { background: #68A9FF; color: #fff; text-shadow: none; }
 
+html {
+	min-height: 100%;
+	overflow: auto;
+
+	&.js .noJsMsg {
+		display: none;
+	}
+	&.browser .noBrowserMsg {
+		display: none;
+	}
+}
+
 body {
 	font-family: @font-family;
 	font-size: 13px;
@@ -40,10 +49,3 @@ body {
 	background-color: @col-back;
 	margin: 30px;
 }
-
-html.js .noJsMsg {
-	display: none;
-}
-html.browser .noBrowserMsg {
-	display: none;
-}

From aa41483af5aaa6012e727f1ac1ef12dfbe81565b Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sun, 25 Aug 2013 20:24:57 +0200
Subject: [PATCH 47/83] Updates styles.

---
 src/_h5ai/client/css/inc/general.less | 12 ++++++++++++
 src/_h5ai/client/css/lib/mixins.less  | 12 ------------
 src/_h5ai/client/css/styles.less      |  2 --
 3 files changed, 12 insertions(+), 14 deletions(-)
 delete mode 100644 src/_h5ai/client/css/lib/mixins.less

diff --git a/src/_h5ai/client/css/inc/general.less b/src/_h5ai/client/css/inc/general.less
index 92cdd2ce..88efdf55 100644
--- a/src/_h5ai/client/css/inc/general.less
+++ b/src/_h5ai/client/css/inc/general.less
@@ -30,6 +30,18 @@
 ::-moz-selection { background: #68A9FF; color: #fff; text-shadow: none; }
 ::selection { background: #68A9FF; color: #fff; text-shadow: none; }
 
+.transition (@transition) {
+	-webkit-transition: @transition;
+	transition: @transition;
+}
+
+.transform (@transform) {
+	-webkit-transform: @transform;
+	-ms-transform: @transform;
+	transform: @transform;
+	zoom: 1;
+}
+
 html {
 	min-height: 100%;
 	overflow: auto;
diff --git a/src/_h5ai/client/css/lib/mixins.less b/src/_h5ai/client/css/lib/mixins.less
deleted file mode 100644
index 82978299..00000000
--- a/src/_h5ai/client/css/lib/mixins.less
+++ /dev/null
@@ -1,12 +0,0 @@
-
-.transition (@transition) {
-	-webkit-transition: @transition;
-	transition: @transition;
-}
-
-.transform (@transform) {
-	-webkit-transform: @transform;
-	-ms-transform: @transform;
-	transform: @transform;
-	zoom: 1;
-}
diff --git a/src/_h5ai/client/css/styles.less b/src/_h5ai/client/css/styles.less
index 2eeb4cb2..057d3dc3 100644
--- a/src/_h5ai/client/css/styles.less
+++ b/src/_h5ai/client/css/styles.less
@@ -2,8 +2,6 @@
 @import "lib/h5bp-normalize";
 @import "lib/h5bp-main-header";
 
-@import "lib/mixins";
-
 @import "inc/general";
 @import "inc/topbar";
 @import "inc/bottombar";

From 39cb681bf9366fbd3465b1494f23d33c263df302 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sun, 25 Aug 2013 23:03:42 +0200
Subject: [PATCH 48/83] Updates jQuery.filedrop to 0.1.0~0a38cbc.

---
 .../client/js/lib/jquery.filedrop-0.1.0.js    | 424 -------------
 .../js/lib/jquery.filedrop-0.1.0~0a38cbc.js   | 555 ++++++++++++++++++
 2 files changed, 555 insertions(+), 424 deletions(-)
 delete mode 100755 src/_h5ai/client/js/lib/jquery.filedrop-0.1.0.js
 create mode 100644 src/_h5ai/client/js/lib/jquery.filedrop-0.1.0~0a38cbc.js

diff --git a/src/_h5ai/client/js/lib/jquery.filedrop-0.1.0.js b/src/_h5ai/client/js/lib/jquery.filedrop-0.1.0.js
deleted file mode 100755
index 2d87013b..00000000
--- a/src/_h5ai/client/js/lib/jquery.filedrop-0.1.0.js
+++ /dev/null
@@ -1,424 +0,0 @@
-/*
- * Default text - jQuery plugin for html5 dragging files from desktop to browser
- *
- * Author: Weixi Yen
- *
- * Email: [Firstname][Lastname]@gmail.com
- *
- * Copyright (c) 2010 Resopollution
- *
- * Licensed under the MIT license:
- *   http://www.opensource.org/licenses/mit-license.php
- *
- * Project home:
- *   http://www.github.com/weixiyen/jquery-filedrop
- *
- * Version:  0.1.0
- *
- * Features:
- *      Allows sending of extra parameters with file.
- *      Works with Firefox 3.6+
- *      Future-compliant with HTML5 spec (will work with Webkit browsers and IE9)
- * Usage:
- * 	See README at project homepage
- *
- */
-;(function($) {
-
-  jQuery.event.props.push("dataTransfer");
-
-  var default_opts = {
-      fallback_id: '',
-      url: '',
-      refresh: 1000,
-      paramname: 'userfile',
-      allowedfiletypes:[],
-      maxfiles: 25,           // Ignored if queuefiles is set > 0
-      maxfilesize: 1,         // MB file size limit
-      queuefiles: 0,          // Max files before queueing (for large volume uploads)
-      queuewait: 200,         // Queue wait time if full
-      data: {},
-      headers: {},
-      drop: empty,
-      dragEnter: empty,
-      dragOver: empty,
-      dragLeave: empty,
-      docEnter: empty,
-      docOver: empty,
-      docLeave: empty,
-      beforeEach: empty,
-      afterAll: empty,
-      rename: empty,
-      error: function(err, file, i) {
-        alert(err);
-      },
-      uploadStarted: empty,
-      uploadFinished: empty,
-      progressUpdated: empty,
-      speedUpdated: empty
-      },
-      errors = ["BrowserNotSupported", "TooManyFiles", "FileTooLarge", "FileTypeNotAllowed"],
-      doc_leave_timer, stop_loop = false,
-      files_count = 0,
-      files;
-
-  $.fn.filedrop = function(options) {
-    var opts = $.extend({}, default_opts, options);
-
-    this.on('drop', drop).on('dragenter', dragEnter).on('dragover', dragOver).on('dragleave', dragLeave);
-    $(document).on('drop', docDrop).on('dragenter', docEnter).on('dragover', docOver).on('dragleave', docLeave);
-
-    $('#' + opts.fallback_id).change(function(e) {
-      opts.drop(e);
-      files = e.target.files;
-      files_count = files.length;
-      upload();
-    });
-    
-    function drop(e) {
-        opts.drop(e);
-        files = e.dataTransfer.files;
-        if (files === null || files === undefined) {
-          opts.error(errors[0]);
-          return false;
-        }
-        files_count = files.length;
-        upload();
-        e.preventDefault();
-        return false;
-      }
-
-      function getBuilder(filename, filedata, mime, boundary) {
-        var dashdash = '--',
-            crlf = '\r\n',
-            builder = '';
-
-        if (opts.data) {
-          var params = $.param(opts.data).split(/&/);
-
-          $.each(params, function() {
-            var pair = this.split(/=/, 2);
-            var name = decodeURIComponent(pair[0]);
-            var val = decodeURIComponent(pair[1]);
-
-            builder += dashdash;
-            builder += boundary;
-            builder += crlf;
-            builder += 'Content-Disposition: form-data; name="' + name + '"';
-            builder += crlf;
-            builder += crlf;
-            builder += val;
-            builder += crlf;
-          });
-        }
-
-        builder += dashdash;
-        builder += boundary;
-        builder += crlf;
-        builder += 'Content-Disposition: form-data; name="' + opts.paramname + '"';
-        builder += '; filename="' + filename + '"';
-        builder += crlf;
-
-        builder += 'Content-Type: ' + mime;
-        builder += crlf;
-        builder += crlf;
-
-        builder += filedata;
-        builder += crlf;
-
-        builder += dashdash;
-        builder += boundary;
-        builder += dashdash;
-        builder += crlf;
-        return builder;
-      }
-
-      function progress(e) {
-        if (e.lengthComputable) {
-          var percentage = Math.round((e.loaded * 100) / e.total);
-          if (this.currentProgress != percentage) {
-
-            this.currentProgress = percentage;
-            opts.progressUpdated(this.index, this.file, this.currentProgress);
-
-            var elapsed = new Date().getTime();
-            var diffTime = elapsed - this.currentStart;
-            if (diffTime >= opts.refresh) {
-              var diffData = e.loaded - this.startData;
-              var speed = diffData / diffTime; // KB per second
-              opts.speedUpdated(this.index, this.file, speed);
-              this.startData = e.loaded;
-              this.currentStart = elapsed;
-            }
-          }
-        }
-      }
-
-      // Respond to an upload
-      function upload() {
-
-        stop_loop = false;
-
-        if (!files) {
-          opts.error(errors[0]);
-          return false;
-        }
-        if(opts.allowedfiletypes.push && opts.allowedfiletypes.length){
-          for(var fileIndex = files.length;fileIndex--;){
-            if(!files[fileIndex].type || $.inArray(files[fileIndex].type, opts.allowedfiletypes) < 0){
-              opts.error(errors[3]);
-              return false;
-            }
-          }
-        }
-
-        var filesDone = 0,
-            filesRejected = 0;
-
-        if (files_count > opts.maxfiles && opts.queuefiles === 0) {
-          opts.error(errors[1]);
-          return false;
-        }
-
-        // Define queues to manage upload process
-        var workQueue = [];
-        var processingQueue = [];
-        var doneQueue = [];
-
-        // Add everything to the workQueue
-        for (var i = 0; i < files_count; i++) {
-          workQueue.push(i);
-        }
-
-        // Helper function to enable pause of processing to wait
-        // for in process queue to complete
-        var pause = function(timeout) {
-            setTimeout(process, timeout);
-            return;
-        }
-
-        // Process an upload, recursive
-        var process = function() {
-
-    	        var fileIndex;
-
-    	        if (stop_loop) return false;
-
-    	        // Check to see if are in queue mode
-    	        if (opts.queuefiles > 0 && processingQueue.length >= opts.queuefiles) {
-
-    	          return pause(opts.queuewait);
-
-    	        } else {
-
-    	          // Take first thing off work queue
-    	          fileIndex = workQueue[0];
-    	          workQueue.splice(0, 1);
-
-    	          // Add to processing queue
-    	          processingQueue.push(fileIndex);
-
-    	        }
-
-    	        try {
-    	          if (beforeEach(files[fileIndex]) != false) {
-    	            if (fileIndex === files_count) return;
-    	            var reader = new FileReader(),
-    	                max_file_size = 1048576 * opts.maxfilesize;
-
-    	            reader.index = fileIndex;
-    	            if (files[fileIndex].size > max_file_size) {
-    	              opts.error(errors[2], files[fileIndex], fileIndex);
-    	              // Remove from queue
-    	              processingQueue.forEach(function(value, key) {
-    	                if (value === fileIndex) processingQueue.splice(key, 1);
-    	              });
-    	              filesRejected++;
-    	              return true;
-    	            }
-    	            reader.onloadend = send;
-    	            reader.readAsBinaryString(files[fileIndex]);
-
-    	          } else {
-    	            filesRejected++;
-    	          }
-    	        } catch (err) {
-    	          // Remove from queue
-    	          processingQueue.forEach(function(value, key) {
-    	            if (value === fileIndex) processingQueue.splice(key, 1);
-    	          });
-    	          opts.error(errors[0]);
-    	          return false;
-    	        }
-
-    	        // If we still have work to do,
-    	        if (workQueue.length > 0) {
-    	          process();
-    	        }
-
-            };
-
-        var send = function(e) {
-
-          var fileIndex = ((typeof(e.srcElement) === "undefined") ? e.target : e.srcElement).index
-
-          // Sometimes the index is not attached to the
-          // event object. Find it by size. Hack for sure.
-          if (e.target.index == undefined) {
-            e.target.index = getIndexBySize(e.total);
-          }
-
-          var xhr = new XMLHttpRequest(),
-              upload = xhr.upload,
-              file = files[e.target.index],
-              index = e.target.index,
-              start_time = new Date().getTime(),
-              boundary = '------multipartformboundary' + (new Date).getTime(),
-              builder;
-
-          newName = rename(file.name);
-          mime = file.type
-          if (typeof newName === "string") {
-            builder = getBuilder(newName, e.target.result, mime, boundary);
-          } else {
-            builder = getBuilder(file.name, e.target.result, mime, boundary);
-          }
-
-          upload.index = index;
-          upload.file = file;
-          upload.downloadStartTime = start_time;
-          upload.currentStart = start_time;
-          upload.currentProgress = 0;
-          upload.startData = 0;
-          upload.addEventListener("progress", progress, false);
-
-          xhr.open("POST", opts.url, true);
-          xhr.setRequestHeader('content-type', 'multipart/form-data; boundary=' + boundary);
-
-          // Add headers
-          $.each(opts.headers, function(k, v) {
-            xhr.setRequestHeader(k, v);
-          });
-
-          xhr.sendAsBinary(builder);
-
-          opts.uploadStarted(index, file, files_count);
-
-          xhr.onload = function() {
-            if (xhr.responseText) {
-              var now = new Date().getTime(),
-                  timeDiff = now - start_time,
-                  result = opts.uploadFinished(index, file, jQuery.parseJSON(xhr.responseText), timeDiff, xhr);
-              filesDone++;
-
-              // Remove from processing queue
-              processingQueue.forEach(function(value, key) {
-                if (value === fileIndex) processingQueue.splice(key, 1);
-              });
-
-              // Add to donequeue
-              doneQueue.push(fileIndex);
-
-              if (filesDone == files_count - filesRejected) {
-                afterAll();
-              }
-              if (result === false) stop_loop = true;
-            }
-            
-            //Pass any errors to the error option
-            if(xhr.status != 200){
-              opts.error(xhr.statusText);
-            }
-            
-          };
-
-        }
-
-        // Initiate the processing loop
-        process();
-
-      }
-
-      function getIndexBySize(size) {
-        for (var i = 0; i < files_count; i++) {
-          if (files[i].size == size) {
-            return i;
-          }
-        }
-
-        return undefined;
-      }
-
-      function rename(name) {
-        return opts.rename(name);
-      }
-
-      function beforeEach(file) {
-        return opts.beforeEach(file);
-      }
-
-      function afterAll() {
-        return opts.afterAll();
-      }
-
-      function dragEnter(e) {
-        clearTimeout(doc_leave_timer);
-        e.preventDefault();
-        opts.dragEnter(e);
-      }
-
-      function dragOver(e) {
-        clearTimeout(doc_leave_timer);
-        e.preventDefault();
-        opts.docOver(e);
-        opts.dragOver(e);
-      }
-
-      function dragLeave(e) {
-        clearTimeout(doc_leave_timer);
-        opts.dragLeave(e);
-        e.stopPropagation();
-      }
-
-      function docDrop(e) {
-        e.preventDefault();
-        opts.docLeave(e);
-        return false;
-      }
-
-      function docEnter(e) {
-        clearTimeout(doc_leave_timer);
-        e.preventDefault();
-        opts.docEnter(e);
-        return false;
-      }
-
-      function docOver(e) {
-        clearTimeout(doc_leave_timer);
-        e.preventDefault();
-        opts.docOver(e);
-        return false;
-      }
-
-      function docLeave(e) {
-        doc_leave_timer = setTimeout(function() {
-          opts.docLeave(e);
-        }, 200);
-      }
-    return this;
-  };
-  function empty() {}
-
-  try {
-    if (XMLHttpRequest.prototype.sendAsBinary) return;
-    XMLHttpRequest.prototype.sendAsBinary = function(datastr) {
-      function byteValue(x) {
-        return x.charCodeAt(0) & 0xff;
-      }
-      var ords = Array.prototype.map.call(datastr, byteValue);
-      var ui8a = new Uint8Array(ords);
-      this.send(ui8a.buffer);
-    }
-  } catch (e) {}
-
-})(jQuery);
diff --git a/src/_h5ai/client/js/lib/jquery.filedrop-0.1.0~0a38cbc.js b/src/_h5ai/client/js/lib/jquery.filedrop-0.1.0~0a38cbc.js
new file mode 100644
index 00000000..f1440142
--- /dev/null
+++ b/src/_h5ai/client/js/lib/jquery.filedrop-0.1.0~0a38cbc.js
@@ -0,0 +1,555 @@
+/*global jQuery:false, alert:false */
+
+/*
+ * Default text - jQuery plugin for html5 dragging files from desktop to browser
+ *
+ * Author: Weixi Yen
+ *
+ * Email: [Firstname][Lastname]@gmail.com
+ *
+ * Copyright (c) 2010 Resopollution
+ *
+ * Licensed under the MIT license:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *
+ * Project home:
+ *   http://www.github.com/weixiyen/jquery-filedrop
+ *
+ * Version:  0.1.0
+ *
+ * Features:
+ *      Allows sending of extra parameters with file.
+ *      Works with Firefox 3.6+
+ *      Future-compliant with HTML5 spec (will work with Webkit browsers and IE9)
+ * Usage:
+ *  See README at project homepage
+ *
+ */
+;(function($) {
+
+  jQuery.event.props.push("dataTransfer");
+
+  var default_opts = {
+      fallback_id: '',
+      url: '',
+      refresh: 1000,
+      paramname: 'userfile',
+      requestType: 'POST',    // just in case you want to use another HTTP verb
+      allowedfileextensions:[],
+      allowedfiletypes:[],
+      maxfiles: 25,           // Ignored if queuefiles is set > 0
+      maxfilesize: 1,         // MB file size limit
+      queuefiles: 0,          // Max files before queueing (for large volume uploads)
+      queuewait: 200,         // Queue wait time if full
+      data: {},
+      headers: {},
+      drop: empty,
+      dragStart: empty,
+      dragEnter: empty,
+      dragOver: empty,
+      dragLeave: empty,
+      docEnter: empty,
+      docOver: empty,
+      docLeave: empty,
+      beforeEach: empty,
+      afterAll: empty,
+      rename: empty,
+      error: function(err, file, i, status) {
+        alert(err);
+      },
+      uploadStarted: empty,
+      uploadFinished: empty,
+      progressUpdated: empty,
+      globalProgressUpdated: empty,
+      speedUpdated: empty
+      },
+      errors = ["BrowserNotSupported", "TooManyFiles", "FileTooLarge", "FileTypeNotAllowed", "NotFound", "NotReadable", "AbortError", "ReadError", "FileExtensionNotAllowed"];
+
+  $.fn.filedrop = function(options) {
+    var opts = $.extend({}, default_opts, options),
+        global_progress = [],
+        doc_leave_timer, stop_loop = false,
+        files_count = 0,
+        files;
+
+    $('#' + opts.fallback_id).css({
+      display: 'none',
+      width: 0,
+      height: 0
+    });
+
+    this.on('drop', drop).on('dragstart', opts.dragStart).on('dragenter', dragEnter).on('dragover', dragOver).on('dragleave', dragLeave);
+    $(document).on('drop', docDrop).on('dragenter', docEnter).on('dragover', docOver).on('dragleave', docLeave);
+
+    this.on('click', function(e){
+      $('#' + opts.fallback_id).trigger(e);
+    });
+
+    $('#' + opts.fallback_id).change(function(e) {
+      opts.drop(e);
+      files = e.target.files;
+      files_count = files.length;
+      upload();
+    });
+
+    function drop(e) {
+      if( opts.drop.call(this, e) === false ) return false;
+      if(!e.dataTransfer)
+        return;
+      files = e.dataTransfer.files;
+      if (files === null || files === undefined || files.length === 0) {
+        opts.error(errors[0]);
+        return false;
+      }
+      files_count = files.length;
+      upload();
+      e.preventDefault();
+      return false;
+    }
+
+    function getBuilder(filename, filedata, mime, boundary) {
+      var dashdash = '--',
+          crlf = '\r\n',
+          builder = '',
+          paramname = opts.paramname;
+
+      if (opts.data) {
+        var params = $.param(opts.data).replace(/\+/g, '%20').split(/&/);
+
+        $.each(params, function() {
+          var pair = this.split("=", 2),
+              name = decodeURIComponent(pair[0]),
+              val  = decodeURIComponent(pair[1]);
+
+          if (pair.length !== 2) {
+              return;
+          }
+
+          builder += dashdash;
+          builder += boundary;
+          builder += crlf;
+          builder += 'Content-Disposition: form-data; name="' + name + '"';
+          builder += crlf;
+          builder += crlf;
+          builder += val;
+          builder += crlf;
+        });
+      }
+
+      if (jQuery.isFunction(paramname)){
+        paramname = paramname(filename);
+      }
+
+      builder += dashdash;
+      builder += boundary;
+      builder += crlf;
+      builder += 'Content-Disposition: form-data; name="' + (paramname||"") + '"';
+      builder += '; filename="' + filename + '"';
+      builder += crlf;
+
+      builder += 'Content-Type: ' + mime;
+      builder += crlf;
+      builder += crlf;
+
+      builder += filedata;
+      builder += crlf;
+
+      builder += dashdash;
+      builder += boundary;
+      builder += dashdash;
+      builder += crlf;
+      return builder;
+    }
+
+    function progress(e) {
+      if (e.lengthComputable) {
+        var percentage = Math.round((e.loaded * 100) / e.total);
+        if (this.currentProgress !== percentage) {
+
+          this.currentProgress = percentage;
+          opts.progressUpdated(this.index, this.file, this.currentProgress);
+
+          global_progress[this.global_progress_index] = this.currentProgress;
+          globalProgress();
+
+          var elapsed = new Date().getTime();
+          var diffTime = elapsed - this.currentStart;
+          if (diffTime >= opts.refresh) {
+            var diffData = e.loaded - this.startData;
+            var speed = diffData / diffTime; // KB per second
+            opts.speedUpdated(this.index, this.file, speed);
+            this.startData = e.loaded;
+            this.currentStart = elapsed;
+          }
+        }
+      }
+    }
+
+    function globalProgress() {
+      if (global_progress.length === 0) {
+        return;
+      }
+
+      var total = 0, index;
+      for (index in global_progress) {
+        if(global_progress.hasOwnProperty(index)) {
+          total = total + global_progress[index];
+        }
+      }
+
+      opts.globalProgressUpdated(Math.round(total / global_progress.length));
+    }
+
+    // Respond to an upload
+    function upload() {
+      stop_loop = false;
+
+      if (!files) {
+        opts.error(errors[0]);
+        return false;
+      }
+
+      if (opts.allowedfiletypes.push && opts.allowedfiletypes.length) {
+        for(var fileIndex = files.length;fileIndex--;) {
+          if(!files[fileIndex].type || $.inArray(files[fileIndex].type, opts.allowedfiletypes) < 0) {
+            opts.error(errors[3], files[fileIndex]);
+            return false;
+          }
+        }
+      }
+
+      if (opts.allowedfileextensions.push && opts.allowedfileextensions.length) {
+        for(var fileIndex = files.length;fileIndex--;) {
+          var allowedextension = false;
+          for (i=0;i<opts.allowedfileextensions.length;i++){
+            if (files[fileIndex].name.substr(files[fileIndex].name.length-opts.allowedfileextensions[i].length) == opts.allowedfileextensions[i]) {
+              allowedextension = true;
+            }
+          }
+          if (!allowedextension){
+            opts.error(errors[8], files[fileIndex]);
+            return false;
+          }
+        }
+      }
+
+      var filesDone = 0,
+          filesRejected = 0;
+
+      if (files_count > opts.maxfiles && opts.queuefiles === 0) {
+        opts.error(errors[1]);
+        return false;
+      }
+
+      // Define queues to manage upload process
+      var workQueue = [];
+      var processingQueue = [];
+      var doneQueue = [];
+
+      // Add everything to the workQueue
+      for (var i = 0; i < files_count; i++) {
+        workQueue.push(i);
+      }
+
+      // Helper function to enable pause of processing to wait
+      // for in process queue to complete
+      var pause = function(timeout) {
+        setTimeout(process, timeout);
+        return;
+      };
+
+      // Process an upload, recursive
+      var process = function() {
+
+        var fileIndex;
+
+        if (stop_loop) {
+          return false;
+        }
+
+        // Check to see if are in queue mode
+        if (opts.queuefiles > 0 && processingQueue.length >= opts.queuefiles) {
+          return pause(opts.queuewait);
+        } else {
+          // Take first thing off work queue
+          fileIndex = workQueue[0];
+          workQueue.splice(0, 1);
+
+          // Add to processing queue
+          processingQueue.push(fileIndex);
+        }
+
+        try {
+          if (beforeEach(files[fileIndex]) !== false) {
+            if (fileIndex === files_count) {
+              return;
+            }
+            var reader = new FileReader(),
+                max_file_size = 1048576 * opts.maxfilesize;
+
+            reader.index = fileIndex;
+            if (files[fileIndex].size > max_file_size) {
+              opts.error(errors[2], files[fileIndex], fileIndex);
+              // Remove from queue
+              processingQueue.forEach(function(value, key) {
+                if (value === fileIndex) {
+                  processingQueue.splice(key, 1);
+                }
+              });
+              filesRejected++;
+              return true;
+            }
+
+            reader.onerror = function(e) {
+                switch(e.target.error.code) {
+                    case e.target.error.NOT_FOUND_ERR:
+                        opts.error(errors[4]);
+                        return false;
+                    case e.target.error.NOT_READABLE_ERR:
+                        opts.error(errors[5]);
+                        return false;
+                    case e.target.error.ABORT_ERR:
+                        opts.error(errors[6]);
+                        return false;
+                    default:
+                        opts.error(errors[7]);
+                        return false;
+                };
+            };
+
+            reader.onloadend = !opts.beforeSend ? send : function (e) {
+              opts.beforeSend(files[fileIndex], fileIndex, function () { send(e); });
+            };
+
+            reader.readAsDataURL(files[fileIndex]);
+
+          } else {
+            filesRejected++;
+          }
+        } catch (err) {
+          // Remove from queue
+          processingQueue.forEach(function(value, key) {
+            if (value === fileIndex) {
+              processingQueue.splice(key, 1);
+            }
+          });
+          opts.error(errors[0]);
+          return false;
+        }
+
+        // If we still have work to do,
+        if (workQueue.length > 0) {
+          process();
+        }
+      };
+
+      var send = function(e) {
+
+        var fileIndex = (e.srcElement || e.target).index;
+
+        // Sometimes the index is not attached to the
+        // event object. Find it by size. Hack for sure.
+        if (e.target.index === undefined) {
+          e.target.index = getIndexBySize(e.total);
+        }
+
+        var xhr = new XMLHttpRequest(),
+            upload = xhr.upload,
+            file = files[e.target.index],
+            index = e.target.index,
+            start_time = new Date().getTime(),
+            boundary = '------multipartformboundary' + (new Date()).getTime(),
+            global_progress_index = global_progress.length,
+            builder,
+            newName = rename(file.name),
+            mime = file.type;
+
+        if (opts.withCredentials) {
+          xhr.withCredentials = opts.withCredentials;
+        }
+
+        var data = atob(e.target.result.split(',')[1]);
+        if (typeof newName === "string") {
+          builder = getBuilder(newName, data, mime, boundary);
+        } else {
+          builder = getBuilder(file.name, data, mime, boundary);
+        }
+
+        upload.index = index;
+        upload.file = file;
+        upload.downloadStartTime = start_time;
+        upload.currentStart = start_time;
+        upload.currentProgress = 0;
+        upload.global_progress_index = global_progress_index;
+        upload.startData = 0;
+        upload.addEventListener("progress", progress, false);
+
+        // Allow url to be a method
+        if (jQuery.isFunction(opts.url)) {
+            xhr.open(opts.requestType, opts.url(), true);
+        } else {
+            xhr.open(opts.requestType, opts.url, true);
+        }
+
+        xhr.setRequestHeader('content-type', 'multipart/form-data; boundary=' + boundary);
+        xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+
+        // Add headers
+        $.each(opts.headers, function(k, v) {
+          xhr.setRequestHeader(k, v);
+        });
+
+        xhr.sendAsBinary(builder);
+
+        global_progress[global_progress_index] = 0;
+        globalProgress();
+
+        opts.uploadStarted(index, file, files_count);
+
+        xhr.onload = function() {
+            var serverResponse = null;
+
+            if (xhr.responseText) {
+              try {
+                serverResponse = jQuery.parseJSON(xhr.responseText);
+              }
+              catch (e) {
+                serverResponse = xhr.responseText;
+              }
+            }
+
+            var now = new Date().getTime(),
+                timeDiff = now - start_time,
+                result = opts.uploadFinished(index, file, serverResponse, timeDiff, xhr);
+            filesDone++;
+
+            // Remove from processing queue
+            processingQueue.forEach(function(value, key) {
+              if (value === fileIndex) {
+                processingQueue.splice(key, 1);
+              }
+            });
+
+            // Add to donequeue
+            doneQueue.push(fileIndex);
+
+            // Make sure the global progress is updated
+            global_progress[global_progress_index] = 100;
+            globalProgress();
+
+            if (filesDone === (files_count - filesRejected)) {
+              afterAll();
+            }
+            if (result === false) {
+              stop_loop = true;
+            }
+
+
+          // Pass any errors to the error option
+          if (xhr.status < 200 || xhr.status > 299) {
+            opts.error(xhr.statusText, file, fileIndex, xhr.status);
+          }
+        };
+      };
+
+      // Initiate the processing loop
+      process();
+    }
+
+    function getIndexBySize(size) {
+      for (var i = 0; i < files_count; i++) {
+        if (files[i].size === size) {
+          return i;
+        }
+      }
+
+      return undefined;
+    }
+
+    function rename(name) {
+      return opts.rename(name);
+    }
+
+    function beforeEach(file) {
+      return opts.beforeEach(file);
+    }
+
+    function afterAll() {
+      return opts.afterAll();
+    }
+
+    function dragEnter(e) {
+      clearTimeout(doc_leave_timer);
+      e.preventDefault();
+      opts.dragEnter.call(this, e);
+    }
+
+    function dragOver(e) {
+      clearTimeout(doc_leave_timer);
+      e.preventDefault();
+      opts.docOver.call(this, e);
+      opts.dragOver.call(this, e);
+    }
+
+    function dragLeave(e) {
+      clearTimeout(doc_leave_timer);
+      opts.dragLeave.call(this, e);
+      e.stopPropagation();
+    }
+
+    function docDrop(e) {
+      e.preventDefault();
+      opts.docLeave.call(this, e);
+      return false;
+    }
+
+    function docEnter(e) {
+      clearTimeout(doc_leave_timer);
+      e.preventDefault();
+      opts.docEnter.call(this, e);
+      return false;
+    }
+
+    function docOver(e) {
+      clearTimeout(doc_leave_timer);
+      e.preventDefault();
+      opts.docOver.call(this, e);
+      return false;
+    }
+
+    function docLeave(e) {
+      doc_leave_timer = setTimeout((function(_this) {
+        return function() {
+          opts.docLeave.call(_this, e);
+        };
+      })(this), 200);
+    }
+
+    return this;
+  };
+
+  function empty() {}
+
+  try {
+    if (XMLHttpRequest.prototype.sendAsBinary) {
+        return;
+    }
+    XMLHttpRequest.prototype.sendAsBinary = function(datastr) {
+      function byteValue(x) {
+        return x.charCodeAt(0) & 0xff;
+      }
+      var ords = Array.prototype.map.call(datastr, byteValue);
+      var ui8a = new Uint8Array(ords);
+
+      // Not pretty: Chrome 22 deprecated sending ArrayBuffer, moving instead
+      // to sending ArrayBufferView.  Sadly, no proper way to detect this
+      // functionality has been discovered.  Happily, Chrome 22 also introduced
+      // the base ArrayBufferView class, not present in Chrome 21.
+      if ('ArrayBufferView' in window)
+        this.send(ui8a);
+      else
+        this.send(ui8a.buffer);
+    };
+  } catch (e) {}
+
+})(jQuery);

From e62591bf1ca8a5461f4b9b01db62599a98a9c85a Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Mon, 26 Aug 2013 13:16:35 +0200
Subject: [PATCH 49/83] Adds a yet unstyled selector.

---
 src/_h5ai/client/css/inc/view.less    | 39 +++++++++++++++++++++++++++
 src/_h5ai/client/js/inc/ext/select.js | 35 ++++++++++++++++++++++--
 2 files changed, 72 insertions(+), 2 deletions(-)

diff --git a/src/_h5ai/client/css/inc/view.less b/src/_h5ai/client/css/inc/view.less
index 68710d16..dc5c1d03 100644
--- a/src/_h5ai/client/css/inc/view.less
+++ b/src/_h5ai/client/css/inc/view.less
@@ -9,6 +9,45 @@
 	background-color: rgba(0,0,0,0.01);
 }
 
+#selector {
+	position: absolute;
+	left: 8px;
+	top: 8px;
+	width: 16px;
+	height: 16px;
+	background-color: #fff;
+	border: 1px solid #555;
+	border-radius: 100px;
+	opacity: 0.7;
+	cursor: pointer;
+
+	.on-selected, .on-not-selected {
+		display: block;
+		width: 16px;
+		height: 16px;
+	}
+
+	&:hover {
+		opacity: 1;
+	}
+}
+
+.item.selected {
+	#selector {
+		.on-not-selected {
+			display: none;
+		}
+	}
+}
+.item:not(.selected) {
+	#selector {
+		.on-selected {
+			display: none;
+		}
+	}
+}
+
+
 @item-border-col-sep: @col-border;
 
 @item-background-col-hover: rgba(0,0,0,0.02);
diff --git a/src/_h5ai/client/js/inc/ext/select.js b/src/_h5ai/client/js/inc/ext/select.js
index 4d14a439..003e2da9 100644
--- a/src/_h5ai/client/js/inc/ext/select.js
+++ b/src/_h5ai/client/js/inc/ext/select.js
@@ -1,5 +1,5 @@
 
-modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/event'], function (_, $, allsettings, event) {
+modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/resource', 'core/event'], function (_, $, allsettings, resource, event) {
 
 	var settings = _.extend({
 			enabled: false
@@ -111,8 +111,38 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/event'], functio
 			}
 		},
 
-		onLocationChanged = function () {
+		initItem = function (item) {
 
+			if (item.$view) {
+				item.$view
+					.on('mouseenter', function () {
+
+						$('#selector').remove();
+						$('<div id="selector">' +
+							'<img src="' + resource.image('select') + '" class="on-selected" alt="selected" />' +
+							'<img src="' + resource.image('blank') + '" class="on-not-selected" alt="not-selected" />' +
+							'</div>')
+							.on('click', function (event) {
+
+								event.stopImmediatePropagation();
+								event.preventDefault();
+								console.log('icon', event);
+
+								item.$view.toggleClass('selected');
+								publish();
+							})
+							.appendTo(item.$view.find('a'));
+					})
+					.on('mouseleave', function () {
+
+						$('#selector').remove();
+					});
+			}
+		},
+
+		onLocationChanged = function (item) {
+
+			_.each(item.content, initItem);
 			publish();
 		},
 
@@ -120,6 +150,7 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/event'], functio
 
 			var selectionChanged = false;
 
+			_.each(added, initItem);
 			_.each(removed, function (item) {
 
 				if (item.$view && item.$view.hasClass('selected')) {

From 774742b98ca07bea848303f4f13596c148049c83 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Tue, 27 Aug 2013 11:26:05 +0200
Subject: [PATCH 50/83] Fixes order undefined error.

---
 src/_h5ai/client/js/inc/ext/sort.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/_h5ai/client/js/inc/ext/sort.js b/src/_h5ai/client/js/inc/ext/sort.js
index fdfc2016..32443c68 100644
--- a/src/_h5ai/client/js/inc/ext/sort.js
+++ b/src/_h5ai/client/js/inc/ext/sort.js
@@ -151,8 +151,8 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 		onContentChanged = function (item) {
 
 			var order = store.get(storekey),
-				column = order.column || settings.column,
-				reverse = order.reverse || settings.reverse;
+				column = order && order.column || settings.column,
+				reverse = order && order.reverse || settings.reverse;
 
 			sortItems(column, reverse);
 		},

From c186be6cb5fb653065693bd757afbeb93353c95f Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Tue, 27 Aug 2013 19:15:48 +0200
Subject: [PATCH 51/83] Testing some view changes. Smaller font, bigger icons.

---
 src/_h5ai/client/css/inc/view-details.less    |  21 +++++++---
 src/_h5ai/client/css/inc/view-grid.less       |  29 +++++++++-----
 src/_h5ai/client/css/inc/view-icons.less      |   8 ++--
 src/_h5ai/client/css/inc/view-list.less       |  19 +++++----
 src/_h5ai/client/css/inc/view.less            |  36 +++++++++++++++---
 src/_h5ai/client/icons/16x16/archive.png      | Bin 551 -> 0 bytes
 src/_h5ai/client/icons/16x16/audio.png        | Bin 554 -> 0 bytes
 src/_h5ai/client/icons/16x16/authors.png      | Bin 492 -> 0 bytes
 src/_h5ai/client/icons/16x16/bin.png          | Bin 551 -> 0 bytes
 src/_h5ai/client/icons/16x16/blank.png        | Bin 227 -> 0 bytes
 src/_h5ai/client/icons/16x16/bmp.png          | Bin 663 -> 0 bytes
 src/_h5ai/client/icons/16x16/c.png            | Bin 554 -> 0 bytes
 src/_h5ai/client/icons/16x16/calc.png         | Bin 506 -> 0 bytes
 src/_h5ai/client/icons/16x16/cd.png           | Bin 757 -> 0 bytes
 src/_h5ai/client/icons/16x16/copying.png      | Bin 699 -> 0 bytes
 src/_h5ai/client/icons/16x16/cpp.png          | Bin 599 -> 0 bytes
 src/_h5ai/client/icons/16x16/css.png          | Bin 592 -> 0 bytes
 src/_h5ai/client/icons/16x16/deb.png          | Bin 671 -> 0 bytes
 src/_h5ai/client/icons/16x16/default.png      | Bin 311 -> 0 bytes
 src/_h5ai/client/icons/16x16/diff.png         | Bin 586 -> 0 bytes
 src/_h5ai/client/icons/16x16/doc.png          | Bin 535 -> 0 bytes
 src/_h5ai/client/icons/16x16/draw.png         | Bin 679 -> 0 bytes
 src/_h5ai/client/icons/16x16/eps.png          | Bin 619 -> 0 bytes
 src/_h5ai/client/icons/16x16/exe.png          | Bin 846 -> 0 bytes
 src/_h5ai/client/icons/16x16/folder-0.png     | Bin 395 -> 0 bytes
 .../client/icons/16x16/folder-page-0.png      | Bin 591 -> 0 bytes
 src/_h5ai/client/icons/16x16/folder-page.png  | Bin 311 -> 0 bytes
 .../client/icons/16x16/folder-parent-0.png    | Bin 494 -> 0 bytes
 .../client/icons/16x16/folder-parent-1.png    | Bin 621 -> 0 bytes
 .../client/icons/16x16/folder-parent.png      | Bin 326 -> 0 bytes
 src/_h5ai/client/icons/16x16/folder.png       | Bin 255 -> 0 bytes
 src/_h5ai/client/icons/16x16/gif.png          | Bin 655 -> 0 bytes
 src/_h5ai/client/icons/16x16/gzip.png         | Bin 551 -> 0 bytes
 src/_h5ai/client/icons/16x16/h.png            | Bin 504 -> 0 bytes
 src/_h5ai/client/icons/16x16/hpp.png          | Bin 530 -> 0 bytes
 src/_h5ai/client/icons/16x16/html.png         | Bin 770 -> 0 bytes
 src/_h5ai/client/icons/16x16/ico.png          | Bin 792 -> 0 bytes
 src/_h5ai/client/icons/16x16/image.png        | Bin 671 -> 0 bytes
 src/_h5ai/client/icons/16x16/install.png      | Bin 788 -> 0 bytes
 src/_h5ai/client/icons/16x16/java.png         | Bin 658 -> 0 bytes
 src/_h5ai/client/icons/16x16/jpg.png          | Bin 675 -> 0 bytes
 src/_h5ai/client/icons/16x16/js.png           | Bin 540 -> 0 bytes
 src/_h5ai/client/icons/16x16/json.png         | Bin 540 -> 0 bytes
 src/_h5ai/client/icons/16x16/log.png          | Bin 423 -> 0 bytes
 src/_h5ai/client/icons/16x16/makefile.png     | Bin 614 -> 0 bytes
 src/_h5ai/client/icons/16x16/markdown.png     | Bin 627 -> 0 bytes
 src/_h5ai/client/icons/16x16/package.png      | Bin 614 -> 0 bytes
 src/_h5ai/client/icons/16x16/pdf.png          | Bin 799 -> 0 bytes
 src/_h5ai/client/icons/16x16/php.png          | Bin 757 -> 0 bytes
 src/_h5ai/client/icons/16x16/playlist.png     | Bin 610 -> 0 bytes
 src/_h5ai/client/icons/16x16/png.png          | Bin 679 -> 0 bytes
 src/_h5ai/client/icons/16x16/pres.png         | Bin 629 -> 0 bytes
 src/_h5ai/client/icons/16x16/ps.png           | Bin 817 -> 0 bytes
 src/_h5ai/client/icons/16x16/psd.png          | Bin 622 -> 0 bytes
 src/_h5ai/client/icons/16x16/py.png           | Bin 743 -> 0 bytes
 src/_h5ai/client/icons/16x16/rar.png          | Bin 621 -> 0 bytes
 src/_h5ai/client/icons/16x16/rb.png           | Bin 781 -> 0 bytes
 src/_h5ai/client/icons/16x16/readme.png       | Bin 384 -> 0 bytes
 src/_h5ai/client/icons/16x16/rpm.png          | Bin 660 -> 0 bytes
 src/_h5ai/client/icons/16x16/rss.png          | Bin 660 -> 0 bytes
 src/_h5ai/client/icons/16x16/rtf.png          | Bin 627 -> 0 bytes
 src/_h5ai/client/icons/16x16/script.png       | Bin 613 -> 0 bytes
 src/_h5ai/client/icons/16x16/source.png       | Bin 586 -> 0 bytes
 src/_h5ai/client/icons/16x16/sql.png          | Bin 510 -> 0 bytes
 src/_h5ai/client/icons/16x16/tar.png          | Bin 406 -> 0 bytes
 src/_h5ai/client/icons/16x16/tex.png          | Bin 677 -> 0 bytes
 src/_h5ai/client/icons/16x16/text.png         | Bin 463 -> 0 bytes
 src/_h5ai/client/icons/16x16/tiff.png         | Bin 654 -> 0 bytes
 src/_h5ai/client/icons/16x16/unknown.png      | Bin 556 -> 0 bytes
 src/_h5ai/client/icons/16x16/vcal.png         | Bin 556 -> 0 bytes
 src/_h5ai/client/icons/16x16/video.png        | Bin 739 -> 0 bytes
 src/_h5ai/client/icons/16x16/xml.png          | Bin 585 -> 0 bytes
 src/_h5ai/client/icons/16x16/zip.png          | Bin 617 -> 0 bytes
 src/_h5ai/client/icons/48x48/archive.png      | Bin 1433 -> 0 bytes
 src/_h5ai/client/icons/48x48/audio.png        | Bin 2062 -> 0 bytes
 src/_h5ai/client/icons/48x48/authors.png      | Bin 1508 -> 0 bytes
 src/_h5ai/client/icons/48x48/bin.png          | Bin 1767 -> 0 bytes
 src/_h5ai/client/icons/48x48/blank.png        | Bin 236 -> 0 bytes
 src/_h5ai/client/icons/48x48/bmp.png          | Bin 2899 -> 0 bytes
 src/_h5ai/client/icons/48x48/c.png            | Bin 2763 -> 0 bytes
 src/_h5ai/client/icons/48x48/calc.png         | Bin 2007 -> 0 bytes
 src/_h5ai/client/icons/48x48/cd.png           | Bin 3047 -> 0 bytes
 src/_h5ai/client/icons/48x48/copying.png      | Bin 1980 -> 0 bytes
 src/_h5ai/client/icons/48x48/cpp.png          | Bin 2685 -> 0 bytes
 src/_h5ai/client/icons/48x48/css.png          | Bin 1745 -> 0 bytes
 src/_h5ai/client/icons/48x48/deb.png          | Bin 2317 -> 0 bytes
 src/_h5ai/client/icons/48x48/default.png      | Bin 997 -> 0 bytes
 src/_h5ai/client/icons/48x48/diff.png         | Bin 2443 -> 0 bytes
 src/_h5ai/client/icons/48x48/doc.png          | Bin 3298 -> 0 bytes
 src/_h5ai/client/icons/48x48/draw.png         | Bin 1833 -> 0 bytes
 src/_h5ai/client/icons/48x48/eps.png          | Bin 2120 -> 0 bytes
 src/_h5ai/client/icons/48x48/exe.png          | Bin 2764 -> 0 bytes
 src/_h5ai/client/icons/48x48/folder-0.png     | Bin 1516 -> 0 bytes
 .../client/icons/48x48/folder-page-0.png      | Bin 2161 -> 0 bytes
 src/_h5ai/client/icons/48x48/folder-page.png  | Bin 443 -> 0 bytes
 .../client/icons/48x48/folder-parent-0.png    | Bin 1227 -> 0 bytes
 .../client/icons/48x48/folder-parent.png      | Bin 519 -> 0 bytes
 src/_h5ai/client/icons/48x48/folder.png       | Bin 353 -> 0 bytes
 src/_h5ai/client/icons/48x48/gif.png          | Bin 2690 -> 0 bytes
 src/_h5ai/client/icons/48x48/gzip.png         | Bin 1836 -> 0 bytes
 src/_h5ai/client/icons/48x48/h.png            | Bin 2513 -> 0 bytes
 src/_h5ai/client/icons/48x48/hpp.png          | Bin 2707 -> 0 bytes
 src/_h5ai/client/icons/48x48/html.png         | Bin 3352 -> 0 bytes
 src/_h5ai/client/icons/48x48/ico.png          | Bin 3408 -> 0 bytes
 src/_h5ai/client/icons/48x48/image.png        | Bin 2556 -> 0 bytes
 src/_h5ai/client/icons/48x48/install.png      | Bin 2159 -> 0 bytes
 src/_h5ai/client/icons/48x48/java.png         | Bin 2645 -> 0 bytes
 src/_h5ai/client/icons/48x48/jpg.png          | Bin 2996 -> 0 bytes
 src/_h5ai/client/icons/48x48/js.png           | Bin 3023 -> 0 bytes
 src/_h5ai/client/icons/48x48/json.png         | Bin 3023 -> 0 bytes
 src/_h5ai/client/icons/48x48/log.png          | Bin 1350 -> 0 bytes
 src/_h5ai/client/icons/48x48/makefile.png     | Bin 1713 -> 0 bytes
 src/_h5ai/client/icons/48x48/markdown.png     | Bin 2680 -> 0 bytes
 src/_h5ai/client/icons/48x48/package.png      | Bin 2686 -> 0 bytes
 src/_h5ai/client/icons/48x48/pdf.png          | Bin 2806 -> 0 bytes
 src/_h5ai/client/icons/48x48/php.png          | Bin 3358 -> 0 bytes
 src/_h5ai/client/icons/48x48/playlist.png     | Bin 2484 -> 0 bytes
 src/_h5ai/client/icons/48x48/png.png          | Bin 2998 -> 0 bytes
 src/_h5ai/client/icons/48x48/pres.png         | Bin 2586 -> 0 bytes
 src/_h5ai/client/icons/48x48/ps.png           | Bin 2975 -> 0 bytes
 src/_h5ai/client/icons/48x48/psd.png          | Bin 2195 -> 0 bytes
 src/_h5ai/client/icons/48x48/py.png           | Bin 3129 -> 0 bytes
 src/_h5ai/client/icons/48x48/rar.png          | Bin 2309 -> 0 bytes
 src/_h5ai/client/icons/48x48/rb.png           | Bin 3220 -> 0 bytes
 src/_h5ai/client/icons/48x48/readme.png       | Bin 1346 -> 0 bytes
 src/_h5ai/client/icons/48x48/rpm.png          | Bin 2020 -> 0 bytes
 src/_h5ai/client/icons/48x48/rss.png          | Bin 1839 -> 0 bytes
 src/_h5ai/client/icons/48x48/rtf.png          | Bin 2680 -> 0 bytes
 src/_h5ai/client/icons/48x48/script.png       | Bin 1881 -> 0 bytes
 src/_h5ai/client/icons/48x48/source.png       | Bin 2443 -> 0 bytes
 src/_h5ai/client/icons/48x48/sql.png          | Bin 1286 -> 0 bytes
 src/_h5ai/client/icons/48x48/tar.png          | Bin 1013 -> 0 bytes
 src/_h5ai/client/icons/48x48/tex.png          | Bin 2160 -> 0 bytes
 src/_h5ai/client/icons/48x48/text.png         | Bin 2754 -> 0 bytes
 src/_h5ai/client/icons/48x48/tiff.png         | Bin 2690 -> 0 bytes
 src/_h5ai/client/icons/48x48/unknown.png      | Bin 1420 -> 0 bytes
 src/_h5ai/client/icons/48x48/vcal.png         | Bin 2736 -> 0 bytes
 src/_h5ai/client/icons/48x48/video.png        | Bin 3265 -> 0 bytes
 src/_h5ai/client/icons/48x48/xml.png          | Bin 2954 -> 0 bytes
 src/_h5ai/client/icons/48x48/zip.png          | Bin 2232 -> 0 bytes
 src/_h5ai/client/icons/96/7zip.png            | Bin 0 -> 3559 bytes
 src/_h5ai/client/icons/96/ace.png             | Bin 0 -> 3370 bytes
 src/_h5ai/client/icons/96/archive.png         | Bin 0 -> 3051 bytes
 src/_h5ai/client/icons/96/audio.png           | Bin 0 -> 3263 bytes
 src/_h5ai/client/icons/96/authors.png         | Bin 0 -> 2656 bytes
 src/_h5ai/client/icons/96/bak.png             | Bin 0 -> 3764 bytes
 src/_h5ai/client/icons/96/bin.png             | Bin 0 -> 3189 bytes
 src/_h5ai/client/icons/96/blank.png           | Bin 0 -> 119 bytes
 src/_h5ai/client/icons/96/bmp.png             | Bin 0 -> 3499 bytes
 src/_h5ai/client/icons/96/c.png               | Bin 0 -> 3742 bytes
 src/_h5ai/client/icons/96/calc.png            | Bin 0 -> 3237 bytes
 src/_h5ai/client/icons/96/cd.png              | Bin 0 -> 4200 bytes
 src/_h5ai/client/icons/96/copying.png         | Bin 0 -> 3178 bytes
 src/_h5ai/client/icons/96/cpp.png             | Bin 0 -> 3666 bytes
 src/_h5ai/client/icons/96/css.png             | Bin 0 -> 2729 bytes
 src/_h5ai/client/icons/96/cue.png             | Bin 0 -> 4225 bytes
 src/_h5ai/client/icons/96/deb.png             | Bin 0 -> 3254 bytes
 src/_h5ai/client/icons/96/default.png         | Bin 0 -> 2008 bytes
 src/_h5ai/client/icons/96/dia.png             | Bin 0 -> 2690 bytes
 src/_h5ai/client/icons/96/diff.png            | Bin 0 -> 3434 bytes
 src/_h5ai/client/icons/96/doc.png             | Bin 0 -> 4607 bytes
 src/_h5ai/client/icons/96/draw.png            | Bin 0 -> 2889 bytes
 src/_h5ai/client/icons/96/encrypted.png       | Bin 0 -> 2944 bytes
 src/_h5ai/client/icons/96/eps.png             | Bin 0 -> 3280 bytes
 src/_h5ai/client/icons/96/exe.png             | Bin 0 -> 3271 bytes
 src/_h5ai/client/icons/96/flash.png           | Bin 0 -> 3017 bytes
 src/_h5ai/client/icons/96/folder-page.png     | Bin 0 -> 262 bytes
 src/_h5ai/client/icons/96/folder-parent.png   | Bin 0 -> 380 bytes
 src/_h5ai/client/icons/96/folder.png          | Bin 0 -> 206 bytes
 src/_h5ai/client/icons/96/font.png            | Bin 0 -> 3042 bytes
 src/_h5ai/client/icons/96/gif.png             | Bin 0 -> 3503 bytes
 src/_h5ai/client/icons/96/glade.png           | Bin 0 -> 5141 bytes
 src/_h5ai/client/icons/96/gzip.png            | Bin 0 -> 3429 bytes
 src/_h5ai/client/icons/96/h.png               | Bin 0 -> 3627 bytes
 src/_h5ai/client/icons/96/hpp.png             | Bin 0 -> 3676 bytes
 src/_h5ai/client/icons/96/html.png            | Bin 0 -> 4963 bytes
 src/_h5ai/client/icons/96/ico.png             | Bin 0 -> 3377 bytes
 src/_h5ai/client/icons/96/image.png           | Bin 0 -> 3365 bytes
 src/_h5ai/client/icons/96/install.png         | Bin 0 -> 3298 bytes
 src/_h5ai/client/icons/96/jar.png             | Bin 0 -> 3494 bytes
 src/_h5ai/client/icons/96/java.png            | Bin 0 -> 4151 bytes
 src/_h5ai/client/icons/96/jpg.png             | Bin 0 -> 3677 bytes
 src/_h5ai/client/icons/96/js.png              | Bin 0 -> 4277 bytes
 src/_h5ai/client/icons/96/json.png            | Bin 0 -> 4277 bytes
 src/_h5ai/client/icons/96/log.png             | Bin 0 -> 2374 bytes
 src/_h5ai/client/icons/96/makefile.png        | Bin 0 -> 2894 bytes
 src/_h5ai/client/icons/96/markdown.png        | Bin 0 -> 3781 bytes
 src/_h5ai/client/icons/96/message.png         | Bin 0 -> 2852 bytes
 src/_h5ai/client/icons/96/mp3.png             | Bin 0 -> 3498 bytes
 src/_h5ai/client/icons/96/ogg.png             | Bin 0 -> 3470 bytes
 src/_h5ai/client/icons/96/package.png         | Bin 0 -> 4167 bytes
 src/_h5ai/client/icons/96/pdf.png             | Bin 0 -> 3670 bytes
 src/_h5ai/client/icons/96/pgp.png             | Bin 0 -> 4899 bytes
 src/_h5ai/client/icons/96/php.png             | Bin 0 -> 4387 bytes
 src/_h5ai/client/icons/96/playlist.png        | Bin 0 -> 3552 bytes
 src/_h5ai/client/icons/96/png.png             | Bin 0 -> 3688 bytes
 src/_h5ai/client/icons/96/pres.png            | Bin 0 -> 3576 bytes
 src/_h5ai/client/icons/96/ps.png              | Bin 0 -> 3950 bytes
 src/_h5ai/client/icons/96/psd.png             | Bin 0 -> 3399 bytes
 src/_h5ai/client/icons/96/py.png              | Bin 0 -> 4203 bytes
 src/_h5ai/client/icons/96/rar.png             | Bin 0 -> 3058 bytes
 src/_h5ai/client/icons/96/rb.png              | Bin 0 -> 4253 bytes
 src/_h5ai/client/icons/96/readme.png          | Bin 0 -> 2541 bytes
 src/_h5ai/client/icons/96/rpm.png             | Bin 0 -> 2885 bytes
 src/_h5ai/client/icons/96/rss.png             | Bin 0 -> 2837 bytes
 src/_h5ai/client/icons/96/rtf.png             | Bin 0 -> 3781 bytes
 src/_h5ai/client/icons/96/script.png          | Bin 0 -> 3437 bytes
 src/_h5ai/client/icons/96/source.png          | Bin 0 -> 3434 bytes
 src/_h5ai/client/icons/96/sql.png             | Bin 0 -> 3218 bytes
 src/_h5ai/client/icons/96/svg.png             | Bin 0 -> 2889 bytes
 src/_h5ai/client/icons/96/tar.png             | Bin 0 -> 3051 bytes
 src/_h5ai/client/icons/96/tex-bib.png         | Bin 0 -> 3200 bytes
 src/_h5ai/client/icons/96/tex.png             | Bin 0 -> 4730 bytes
 src/_h5ai/client/icons/96/text.png            | Bin 0 -> 3902 bytes
 src/_h5ai/client/icons/96/theme.png           | Bin 0 -> 3707 bytes
 src/_h5ai/client/icons/96/tiff.png            | Bin 0 -> 3392 bytes
 src/_h5ai/client/icons/96/torrent.png         | Bin 0 -> 3496 bytes
 src/_h5ai/client/icons/96/unknown.png         | Bin 0 -> 2614 bytes
 src/_h5ai/client/icons/96/vcal.png            | Bin 0 -> 4229 bytes
 src/_h5ai/client/icons/96/video.png           | Bin 0 -> 4364 bytes
 src/_h5ai/client/icons/96/wav.png             | Bin 0 -> 4800 bytes
 src/_h5ai/client/icons/96/wma.png             | Bin 0 -> 3563 bytes
 src/_h5ai/client/icons/96/xcf.png             | Bin 0 -> 3680 bytes
 src/_h5ai/client/icons/96/xhtml.png           | Bin 0 -> 4693 bytes
 src/_h5ai/client/icons/96/xml.png             | Bin 0 -> 4004 bytes
 src/_h5ai/client/icons/96/zip.png             | Bin 0 -> 3061 bytes
 src/_h5ai/client/js/inc/core/resource.js      |   2 +-
 src/_h5ai/client/js/inc/ext/select.js         |   6 +--
 src/_h5ai/client/js/inc/ext/thumbnails.js     |  28 +++++++-------
 src/_h5ai/client/js/inc/view/items.js         |  20 +++++-----
 230 files changed, 109 insertions(+), 60 deletions(-)
 delete mode 100644 src/_h5ai/client/icons/16x16/archive.png
 delete mode 100644 src/_h5ai/client/icons/16x16/audio.png
 delete mode 100644 src/_h5ai/client/icons/16x16/authors.png
 delete mode 100644 src/_h5ai/client/icons/16x16/bin.png
 delete mode 100644 src/_h5ai/client/icons/16x16/blank.png
 delete mode 100644 src/_h5ai/client/icons/16x16/bmp.png
 delete mode 100644 src/_h5ai/client/icons/16x16/c.png
 delete mode 100644 src/_h5ai/client/icons/16x16/calc.png
 delete mode 100644 src/_h5ai/client/icons/16x16/cd.png
 delete mode 100644 src/_h5ai/client/icons/16x16/copying.png
 delete mode 100644 src/_h5ai/client/icons/16x16/cpp.png
 delete mode 100644 src/_h5ai/client/icons/16x16/css.png
 delete mode 100644 src/_h5ai/client/icons/16x16/deb.png
 delete mode 100644 src/_h5ai/client/icons/16x16/default.png
 delete mode 100644 src/_h5ai/client/icons/16x16/diff.png
 delete mode 100644 src/_h5ai/client/icons/16x16/doc.png
 delete mode 100644 src/_h5ai/client/icons/16x16/draw.png
 delete mode 100644 src/_h5ai/client/icons/16x16/eps.png
 delete mode 100644 src/_h5ai/client/icons/16x16/exe.png
 delete mode 100644 src/_h5ai/client/icons/16x16/folder-0.png
 delete mode 100644 src/_h5ai/client/icons/16x16/folder-page-0.png
 delete mode 100644 src/_h5ai/client/icons/16x16/folder-page.png
 delete mode 100644 src/_h5ai/client/icons/16x16/folder-parent-0.png
 delete mode 100644 src/_h5ai/client/icons/16x16/folder-parent-1.png
 delete mode 100644 src/_h5ai/client/icons/16x16/folder-parent.png
 delete mode 100644 src/_h5ai/client/icons/16x16/folder.png
 delete mode 100644 src/_h5ai/client/icons/16x16/gif.png
 delete mode 100644 src/_h5ai/client/icons/16x16/gzip.png
 delete mode 100644 src/_h5ai/client/icons/16x16/h.png
 delete mode 100644 src/_h5ai/client/icons/16x16/hpp.png
 delete mode 100644 src/_h5ai/client/icons/16x16/html.png
 delete mode 100644 src/_h5ai/client/icons/16x16/ico.png
 delete mode 100644 src/_h5ai/client/icons/16x16/image.png
 delete mode 100644 src/_h5ai/client/icons/16x16/install.png
 delete mode 100644 src/_h5ai/client/icons/16x16/java.png
 delete mode 100644 src/_h5ai/client/icons/16x16/jpg.png
 delete mode 100644 src/_h5ai/client/icons/16x16/js.png
 delete mode 100644 src/_h5ai/client/icons/16x16/json.png
 delete mode 100644 src/_h5ai/client/icons/16x16/log.png
 delete mode 100644 src/_h5ai/client/icons/16x16/makefile.png
 delete mode 100644 src/_h5ai/client/icons/16x16/markdown.png
 delete mode 100644 src/_h5ai/client/icons/16x16/package.png
 delete mode 100644 src/_h5ai/client/icons/16x16/pdf.png
 delete mode 100644 src/_h5ai/client/icons/16x16/php.png
 delete mode 100644 src/_h5ai/client/icons/16x16/playlist.png
 delete mode 100644 src/_h5ai/client/icons/16x16/png.png
 delete mode 100644 src/_h5ai/client/icons/16x16/pres.png
 delete mode 100644 src/_h5ai/client/icons/16x16/ps.png
 delete mode 100644 src/_h5ai/client/icons/16x16/psd.png
 delete mode 100644 src/_h5ai/client/icons/16x16/py.png
 delete mode 100644 src/_h5ai/client/icons/16x16/rar.png
 delete mode 100644 src/_h5ai/client/icons/16x16/rb.png
 delete mode 100644 src/_h5ai/client/icons/16x16/readme.png
 delete mode 100644 src/_h5ai/client/icons/16x16/rpm.png
 delete mode 100644 src/_h5ai/client/icons/16x16/rss.png
 delete mode 100644 src/_h5ai/client/icons/16x16/rtf.png
 delete mode 100644 src/_h5ai/client/icons/16x16/script.png
 delete mode 100644 src/_h5ai/client/icons/16x16/source.png
 delete mode 100644 src/_h5ai/client/icons/16x16/sql.png
 delete mode 100644 src/_h5ai/client/icons/16x16/tar.png
 delete mode 100644 src/_h5ai/client/icons/16x16/tex.png
 delete mode 100644 src/_h5ai/client/icons/16x16/text.png
 delete mode 100644 src/_h5ai/client/icons/16x16/tiff.png
 delete mode 100644 src/_h5ai/client/icons/16x16/unknown.png
 delete mode 100644 src/_h5ai/client/icons/16x16/vcal.png
 delete mode 100644 src/_h5ai/client/icons/16x16/video.png
 delete mode 100644 src/_h5ai/client/icons/16x16/xml.png
 delete mode 100644 src/_h5ai/client/icons/16x16/zip.png
 delete mode 100644 src/_h5ai/client/icons/48x48/archive.png
 delete mode 100644 src/_h5ai/client/icons/48x48/audio.png
 delete mode 100644 src/_h5ai/client/icons/48x48/authors.png
 delete mode 100644 src/_h5ai/client/icons/48x48/bin.png
 delete mode 100644 src/_h5ai/client/icons/48x48/blank.png
 delete mode 100644 src/_h5ai/client/icons/48x48/bmp.png
 delete mode 100644 src/_h5ai/client/icons/48x48/c.png
 delete mode 100644 src/_h5ai/client/icons/48x48/calc.png
 delete mode 100644 src/_h5ai/client/icons/48x48/cd.png
 delete mode 100644 src/_h5ai/client/icons/48x48/copying.png
 delete mode 100644 src/_h5ai/client/icons/48x48/cpp.png
 delete mode 100644 src/_h5ai/client/icons/48x48/css.png
 delete mode 100644 src/_h5ai/client/icons/48x48/deb.png
 delete mode 100644 src/_h5ai/client/icons/48x48/default.png
 delete mode 100644 src/_h5ai/client/icons/48x48/diff.png
 delete mode 100644 src/_h5ai/client/icons/48x48/doc.png
 delete mode 100644 src/_h5ai/client/icons/48x48/draw.png
 delete mode 100644 src/_h5ai/client/icons/48x48/eps.png
 delete mode 100644 src/_h5ai/client/icons/48x48/exe.png
 delete mode 100644 src/_h5ai/client/icons/48x48/folder-0.png
 delete mode 100644 src/_h5ai/client/icons/48x48/folder-page-0.png
 delete mode 100644 src/_h5ai/client/icons/48x48/folder-page.png
 delete mode 100644 src/_h5ai/client/icons/48x48/folder-parent-0.png
 delete mode 100644 src/_h5ai/client/icons/48x48/folder-parent.png
 delete mode 100644 src/_h5ai/client/icons/48x48/folder.png
 delete mode 100644 src/_h5ai/client/icons/48x48/gif.png
 delete mode 100644 src/_h5ai/client/icons/48x48/gzip.png
 delete mode 100644 src/_h5ai/client/icons/48x48/h.png
 delete mode 100644 src/_h5ai/client/icons/48x48/hpp.png
 delete mode 100644 src/_h5ai/client/icons/48x48/html.png
 delete mode 100644 src/_h5ai/client/icons/48x48/ico.png
 delete mode 100644 src/_h5ai/client/icons/48x48/image.png
 delete mode 100644 src/_h5ai/client/icons/48x48/install.png
 delete mode 100644 src/_h5ai/client/icons/48x48/java.png
 delete mode 100644 src/_h5ai/client/icons/48x48/jpg.png
 delete mode 100644 src/_h5ai/client/icons/48x48/js.png
 delete mode 100644 src/_h5ai/client/icons/48x48/json.png
 delete mode 100644 src/_h5ai/client/icons/48x48/log.png
 delete mode 100644 src/_h5ai/client/icons/48x48/makefile.png
 delete mode 100644 src/_h5ai/client/icons/48x48/markdown.png
 delete mode 100644 src/_h5ai/client/icons/48x48/package.png
 delete mode 100644 src/_h5ai/client/icons/48x48/pdf.png
 delete mode 100644 src/_h5ai/client/icons/48x48/php.png
 delete mode 100644 src/_h5ai/client/icons/48x48/playlist.png
 delete mode 100644 src/_h5ai/client/icons/48x48/png.png
 delete mode 100644 src/_h5ai/client/icons/48x48/pres.png
 delete mode 100644 src/_h5ai/client/icons/48x48/ps.png
 delete mode 100644 src/_h5ai/client/icons/48x48/psd.png
 delete mode 100644 src/_h5ai/client/icons/48x48/py.png
 delete mode 100644 src/_h5ai/client/icons/48x48/rar.png
 delete mode 100644 src/_h5ai/client/icons/48x48/rb.png
 delete mode 100644 src/_h5ai/client/icons/48x48/readme.png
 delete mode 100644 src/_h5ai/client/icons/48x48/rpm.png
 delete mode 100644 src/_h5ai/client/icons/48x48/rss.png
 delete mode 100644 src/_h5ai/client/icons/48x48/rtf.png
 delete mode 100644 src/_h5ai/client/icons/48x48/script.png
 delete mode 100644 src/_h5ai/client/icons/48x48/source.png
 delete mode 100644 src/_h5ai/client/icons/48x48/sql.png
 delete mode 100644 src/_h5ai/client/icons/48x48/tar.png
 delete mode 100644 src/_h5ai/client/icons/48x48/tex.png
 delete mode 100644 src/_h5ai/client/icons/48x48/text.png
 delete mode 100644 src/_h5ai/client/icons/48x48/tiff.png
 delete mode 100644 src/_h5ai/client/icons/48x48/unknown.png
 delete mode 100644 src/_h5ai/client/icons/48x48/vcal.png
 delete mode 100644 src/_h5ai/client/icons/48x48/video.png
 delete mode 100644 src/_h5ai/client/icons/48x48/xml.png
 delete mode 100644 src/_h5ai/client/icons/48x48/zip.png
 create mode 100644 src/_h5ai/client/icons/96/7zip.png
 create mode 100644 src/_h5ai/client/icons/96/ace.png
 create mode 100644 src/_h5ai/client/icons/96/archive.png
 create mode 100644 src/_h5ai/client/icons/96/audio.png
 create mode 100644 src/_h5ai/client/icons/96/authors.png
 create mode 100644 src/_h5ai/client/icons/96/bak.png
 create mode 100644 src/_h5ai/client/icons/96/bin.png
 create mode 100644 src/_h5ai/client/icons/96/blank.png
 create mode 100644 src/_h5ai/client/icons/96/bmp.png
 create mode 100644 src/_h5ai/client/icons/96/c.png
 create mode 100644 src/_h5ai/client/icons/96/calc.png
 create mode 100644 src/_h5ai/client/icons/96/cd.png
 create mode 100644 src/_h5ai/client/icons/96/copying.png
 create mode 100644 src/_h5ai/client/icons/96/cpp.png
 create mode 100644 src/_h5ai/client/icons/96/css.png
 create mode 100644 src/_h5ai/client/icons/96/cue.png
 create mode 100644 src/_h5ai/client/icons/96/deb.png
 create mode 100644 src/_h5ai/client/icons/96/default.png
 create mode 100644 src/_h5ai/client/icons/96/dia.png
 create mode 100644 src/_h5ai/client/icons/96/diff.png
 create mode 100644 src/_h5ai/client/icons/96/doc.png
 create mode 100644 src/_h5ai/client/icons/96/draw.png
 create mode 100644 src/_h5ai/client/icons/96/encrypted.png
 create mode 100644 src/_h5ai/client/icons/96/eps.png
 create mode 100644 src/_h5ai/client/icons/96/exe.png
 create mode 100644 src/_h5ai/client/icons/96/flash.png
 create mode 100644 src/_h5ai/client/icons/96/folder-page.png
 create mode 100644 src/_h5ai/client/icons/96/folder-parent.png
 create mode 100644 src/_h5ai/client/icons/96/folder.png
 create mode 100644 src/_h5ai/client/icons/96/font.png
 create mode 100644 src/_h5ai/client/icons/96/gif.png
 create mode 100644 src/_h5ai/client/icons/96/glade.png
 create mode 100644 src/_h5ai/client/icons/96/gzip.png
 create mode 100644 src/_h5ai/client/icons/96/h.png
 create mode 100644 src/_h5ai/client/icons/96/hpp.png
 create mode 100644 src/_h5ai/client/icons/96/html.png
 create mode 100644 src/_h5ai/client/icons/96/ico.png
 create mode 100644 src/_h5ai/client/icons/96/image.png
 create mode 100644 src/_h5ai/client/icons/96/install.png
 create mode 100644 src/_h5ai/client/icons/96/jar.png
 create mode 100644 src/_h5ai/client/icons/96/java.png
 create mode 100644 src/_h5ai/client/icons/96/jpg.png
 create mode 100644 src/_h5ai/client/icons/96/js.png
 create mode 100644 src/_h5ai/client/icons/96/json.png
 create mode 100644 src/_h5ai/client/icons/96/log.png
 create mode 100644 src/_h5ai/client/icons/96/makefile.png
 create mode 100644 src/_h5ai/client/icons/96/markdown.png
 create mode 100644 src/_h5ai/client/icons/96/message.png
 create mode 100644 src/_h5ai/client/icons/96/mp3.png
 create mode 100644 src/_h5ai/client/icons/96/ogg.png
 create mode 100644 src/_h5ai/client/icons/96/package.png
 create mode 100644 src/_h5ai/client/icons/96/pdf.png
 create mode 100644 src/_h5ai/client/icons/96/pgp.png
 create mode 100644 src/_h5ai/client/icons/96/php.png
 create mode 100644 src/_h5ai/client/icons/96/playlist.png
 create mode 100644 src/_h5ai/client/icons/96/png.png
 create mode 100644 src/_h5ai/client/icons/96/pres.png
 create mode 100644 src/_h5ai/client/icons/96/ps.png
 create mode 100644 src/_h5ai/client/icons/96/psd.png
 create mode 100644 src/_h5ai/client/icons/96/py.png
 create mode 100644 src/_h5ai/client/icons/96/rar.png
 create mode 100644 src/_h5ai/client/icons/96/rb.png
 create mode 100644 src/_h5ai/client/icons/96/readme.png
 create mode 100644 src/_h5ai/client/icons/96/rpm.png
 create mode 100644 src/_h5ai/client/icons/96/rss.png
 create mode 100644 src/_h5ai/client/icons/96/rtf.png
 create mode 100644 src/_h5ai/client/icons/96/script.png
 create mode 100644 src/_h5ai/client/icons/96/source.png
 create mode 100644 src/_h5ai/client/icons/96/sql.png
 create mode 100644 src/_h5ai/client/icons/96/svg.png
 create mode 100644 src/_h5ai/client/icons/96/tar.png
 create mode 100644 src/_h5ai/client/icons/96/tex-bib.png
 create mode 100644 src/_h5ai/client/icons/96/tex.png
 create mode 100644 src/_h5ai/client/icons/96/text.png
 create mode 100644 src/_h5ai/client/icons/96/theme.png
 create mode 100644 src/_h5ai/client/icons/96/tiff.png
 create mode 100644 src/_h5ai/client/icons/96/torrent.png
 create mode 100644 src/_h5ai/client/icons/96/unknown.png
 create mode 100644 src/_h5ai/client/icons/96/vcal.png
 create mode 100644 src/_h5ai/client/icons/96/video.png
 create mode 100644 src/_h5ai/client/icons/96/wav.png
 create mode 100644 src/_h5ai/client/icons/96/wma.png
 create mode 100644 src/_h5ai/client/icons/96/xcf.png
 create mode 100644 src/_h5ai/client/icons/96/xhtml.png
 create mode 100644 src/_h5ai/client/icons/96/xml.png
 create mode 100644 src/_h5ai/client/icons/96/zip.png

diff --git a/src/_h5ai/client/css/inc/view-details.less b/src/_h5ai/client/css/inc/view-details.less
index 5d1cdeff..e438d0eb 100644
--- a/src/_h5ai/client/css/inc/view-details.less
+++ b/src/_h5ai/client/css/inc/view-details.less
@@ -12,6 +12,7 @@
 			a, a:active, a:visited {
 				border-top: 1px solid @item-border-col-sep;
 				border-bottom: 1px solid @item-border-col-sep;
+				height: @small-icon-size + 6px;
 
 				&:hover, &.hover {
 					border-color: @item-border-col-hover;
@@ -19,8 +20,11 @@
 			}
 
 			// needs to be here, to not conflict with header fields
-			.icon, .label, .date, .size {
-				padding: 8px 6px;
+			.icon {
+				padding: 8px;
+			}
+			.label, .date, .size {
+				padding: ((@small-icon-size - 16px)/2) 8px;
 			}
 		}
 
@@ -31,16 +35,21 @@
 			}
 		}
 
-		.icon.small {
+		.icon.square {
 			display: inline-block;
 			position: absolute;
 			left: 0;
-			top: -2px;
-			width: 16px;
+			top: -5px;
+			width: @small-icon-size;
+
+			img {
+				width: @small-icon-size;
+				height: @small-icon-size;
+			}
 		}
 
 		.label {
-			margin: 0 270px 0 24px;
+			margin: 0 230px 0 (@small-icon-size + 8px);
 		}
 
 		.date {
diff --git a/src/_h5ai/client/css/inc/view-grid.less b/src/_h5ai/client/css/inc/view-grid.less
index 3576b298..1dca6349 100644
--- a/src/_h5ai/client/css/inc/view-grid.less
+++ b/src/_h5ai/client/css/inc/view-grid.less
@@ -9,29 +9,40 @@
 			a, a:active, a:visited {
 				float: left;
 				margin: 2px;
-				padding: 8px;
-				width: 164px;
-				height: 24px;
+				width: 218px;
+				height: @small-icon-size + 6px;
 				border: 1px solid rgba(0,0,0,0);
 
 				&:hover, &.hover {
 					border-color: @item-border-col-hover;
 				}
 			}
+
+			// needs to be here, to not conflict with header fields
+			.icon {
+				padding: 8px;
+			}
+			.label, .date, .size {
+				padding: ((@small-icon-size - 16px)/2) 8px;
+			}
 		}
 
-		.icon.small {
+		.icon.square {
 			display: inline-block;
 			position: absolute;
-			left: 11px;
-			top: 9px;
-			width: 16px;
+			left: 0;
+			top: -2px;
+			width: @small-icon-size;
+
+			img {
+				width: @small-icon-size;
+				height: @small-icon-size;
+			}
 		}
 
 		.label {
 			display: block;
-			max-width: 140px;
-			margin: 0 0 0 24px;
+			margin: 0 0 0 (@small-icon-size + 8px);
 		}
 
 		.date, .size {
diff --git a/src/_h5ai/client/css/inc/view-icons.less b/src/_h5ai/client/css/inc/view-icons.less
index 77415cc1..14148613 100644
--- a/src/_h5ai/client/css/inc/view-icons.less
+++ b/src/_h5ai/client/css/inc/view-icons.less
@@ -11,8 +11,8 @@
 				float: left;
 				margin: 8px;
 				padding: 8px;
-				width: 100px;
-				height: 120px;
+				width: @big-icon-size * 2;
+				height: @big-icon-size + 72px;
 				border: 1px solid rgba(0,0,0,0);
 
 				&:hover, &.hover {
@@ -21,9 +21,9 @@
 			}
 		}
 
-		.icon.big {
+		.icon.rational {
 			display: block;
-			height: 48px;
+			height: @big-icon-size;
 			margin-bottom: 6px;
 		}
 
diff --git a/src/_h5ai/client/css/inc/view-list.less b/src/_h5ai/client/css/inc/view-list.less
index 42b77c6a..e73a46b2 100644
--- a/src/_h5ai/client/css/inc/view-list.less
+++ b/src/_h5ai/client/css/inc/view-list.less
@@ -12,7 +12,7 @@
 			a, a:active, a:visited {
 				border-top: 1px solid @item-border-col-sep;
 				border-bottom: 1px solid @item-border-col-sep;
-				height: 60px;
+				height: @big-icon-size + 6px;
 
 				&:hover, &.hover {
 					border-color: @item-border-col-hover;
@@ -21,10 +21,10 @@
 
 			// needs to be here, to not conflict with header fields
 			.icon {
-				padding: 8px 6px;
+				padding: 8px;
 			}
 			.label, .date, .size {
-				padding: 18px 6px;
+				padding: ((@big-icon-size - 16px)/2) 8px;
 			}
 		}
 
@@ -35,16 +35,21 @@
 			}
 		}
 
-		.icon.big {
+		.icon.square {
 			display: inline-block;
 			position: absolute;
 			left: 0;
-			top: -2px;
-			width: 100px;
+			top: -5px;
+			width: @big-icon-size;
+
+			img {
+				width: @big-icon-size;
+				height: @big-icon-size;
+			}
 		}
 
 		.label {
-			margin: 0 270px 0 110px;
+			margin: 0 230px 0 (@big-icon-size + 8px);
 		}
 
 		.date {
diff --git a/src/_h5ai/client/css/inc/view.less b/src/_h5ai/client/css/inc/view.less
index dc5c1d03..88ed55f8 100644
--- a/src/_h5ai/client/css/inc/view.less
+++ b/src/_h5ai/client/css/inc/view.less
@@ -56,6 +56,12 @@
 @item-background-col-sel: rgba(0,0,0,0.02);
 @item-border-col-sel: @col-border-strong;
 
+@small-icon-size: 32px;
+// @small-icon-size: 16px;
+@big-icon-size: 48px;
+// @big-icon-size: 64px;
+// @big-icon-size: 80px;
+// @big-icon-size: 96px;
 
 
 #view {
@@ -109,6 +115,7 @@
 		}
 
 		&.item {
+			font-size: 15px;
 
 			a, a:active, a:visited {
 				display: block;
@@ -164,6 +171,7 @@
 			text-align: center;
 
 			img {
+				vertical-align: top;
 
 				&.thumb {
 					box-shadow: 0 0 0 1px #ddd;
@@ -173,17 +181,32 @@
 			&.small {
 
 				img {
-					max-width: 16px;
-					max-height: 16px;
+					max-width: @small-icon-size * 2;
+					max-height: @small-icon-size;
 				}
 			}
 
 			&.big {
 
 				img {
-					max-width: 100px;
-					max-height: 48px;
-					vertical-align: top;
+					max-width: @big-icon-size * 2;
+					max-height: @big-icon-size;
+				}
+			}
+
+			&.square {
+
+				img {
+					max-width: @big-icon-size;
+					max-height: @big-icon-size;
+				}
+			}
+
+			&.rational {
+
+				img {
+					max-width: @big-icon-size * 2;
+					max-height: @big-icon-size;
 				}
 			}
 		}
@@ -192,11 +215,12 @@
 			display: block;
 			overflow: hidden;
 			text-align: left;
+			text-overflow: ellipsis;
 		}
 
 		.date {
 			text-align: right;
-			width: 160px;
+			width: 130px;
 		}
 
 		.size {
diff --git a/src/_h5ai/client/icons/16x16/archive.png b/src/_h5ai/client/icons/16x16/archive.png
deleted file mode 100644
index 99ae6fc6677bb9c0b47e740778a315a56b1fc3c5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 551
zcmV+?0@(eDP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10i;PpK~y-6m5{ND;!qTZKjTfnLPfC%vc+OQ`vTf-Cn;?9MYh<|
za)fR5F)V^_AgP6rPQ(?aRuYjUHz&DU49YC4yE8u=xaY$8&UbHZv)O#rTK_c0eBn-N
zwHo8`n8{=Uz;d}{wORp$j^lhM2!e3C-I^@ROi>hnm57*rzi*-_GEo$ne!p+>JU83z
z)&xNisx(cXT-QZweNTXTy$(R9)4AP=2(IgLI2@joh)|a0-C+RBvH+OR=Y(MhfH8)$
zED;ebtu<v?J}hGl07@yQ)9D`otu-pob428!fl>+p&-3toAAqW=5E1e`$0~~Ap9a_X
zzK`d5x4tY(ilRV?2vt=*G`Qxi!CMP;Jv@qtFdB_++ef1jBEogCs;Uaxw#l;WF5q&x
zuvjc^e<31VE*EUueg(vFjN>@;dcFTX<C<o(Ns=VQag4Goi`{O=`Fwsi;0m!U3#GMY
zFc{EkwLSz$l7#ho{c5n^?}_91Lx6U>eKUADolc*I!y&e9ziYTC3W6X&YyDE2&1T<@
p$K!LFrk_7z&}cM%b-UdkzX4XSEHy8yRp<Z!002ovPDHLkV1h;6?ic_7

diff --git a/src/_h5ai/client/icons/16x16/audio.png b/src/_h5ai/client/icons/16x16/audio.png
deleted file mode 100644
index a67618d1410c138f07e96a67cdda3e4c8fbd427e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 554
zcmV+_0@eMAP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10jEhsK~y-6rI1f+6Hye!&x}_R8rskfCJj;yN;g94XJ|mA3qL|#
zSvPfQ=%(Pto!z+b8x*=L(rtIybP+1`8Bk}S2Cal(6+80+Gw;t_7bVg<)6mib4<46u
zfA`$$bUK}f#+Z#XO&4$lxvndS=!Mg6w?(~PZ&a&QxUPGt<}^()7!1(s^*)kPs^NJa
zlu}m-0MGN_`+kG0wXoJ^3}M1JI<ffrQz7Wb`1EZEaTsCm)qMcKsE>>>VCD?q+4djE
zFhLZ?kYNHDo&L{yjWHmtbuK`L3F?!K+qEL*rc1bYtAI!AAI^ET)*x$bE+7hHym>m8
zsh{<ZT|tIPZauTYg@EXqfYHGY4u^QY`2*ii4B$HB0iXK`*4`b%@5hi*ftk_TI>Hxc
z0+?}7%>lS005jv|&N1E(Z{Sz4h)Qh|%#6nmrZ5#s+=(ULKB@ilGIKV;;@z9r-~El*
zqJ!7VvtVYdE>*C)R2hE*tu=@UD@_k8O)uB{zl<@bD-e+{gn&}&T)c5lDFq<}h{&f>
ssniOBV58gZ&R;k#M}<NmD3{BvzYf7q^N<`I7XSbN07*qoM6N<$f{%gjivR!s

diff --git a/src/_h5ai/client/icons/16x16/authors.png b/src/_h5ai/client/icons/16x16/authors.png
deleted file mode 100644
index 78bf784dd71815aa3258c3e4f6da9a29a6a681f2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 492
zcmV<I0Tcd-P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10clA@K~y-6l~S>e;xG_>YYiYlK@m9)R5X<AU)&$v{>6S3EnN;#
z1PU5tB2l5lNcLp1713tnLw6&MWcj^$^PcRt-EQ}bnLkD39sf~Esho&@ziqeMe6?C_
zj4@D3{nN0Bpe#$A&*wknz278B0`Gl~<eY=G767nVEHIr;dw7y0D2igEnx;Y1G-%tl
z*VbCpb&a~NVXYnD&pBddv~4@E>70Xz00173N0h_Npb$b79F0Z@A#~>$CxieMv){HY
zj4==qhzPXSQO?T<MASw2n*(MZ3Wx|UmkVyUTX%mr9H6zva=Gk1byVPVI^ll554K&e
zS2*XeUawyZR8`ek|5;U4^|;Io^%Qt^mStU(?+pN1mi4$%2WgrD0LrrLe&={RhA{?d
znhqQgGb4lmBI*FGHMG`)2tS9J8H$LCJkR01kG^%Rz4yrT97I&mY&QEi9*>{<{eC@I
i`JyJ1$#FiPe|!NMI%}f|m=mP{0000<MNUMnLSTYuP|8#Q

diff --git a/src/_h5ai/client/icons/16x16/bin.png b/src/_h5ai/client/icons/16x16/bin.png
deleted file mode 100644
index ec2220bca3f04ab441c1931b9ce919e8cc5be2aa..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 551
zcmV+?0@(eDP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10i;PpK~y-6m6EZF>Od5R{~cx+!9p-W#mZ(c7Uqgp7FNOqTMOT0
z_bv8$1R;gkSZE=+K`=HpqKWB5l*~+KizQ-=#d^9kbI!*(|9{@*^Z7q1<yRcXfAK;P
zLL5rz$J=x|b!xSmRW6r72>DfW9LMl|AKUHrKaHZuG7JMz6afGhiv>96IGs+&<#K4Z
z+n7uyI3AA}4u?00VHof{&mu}GD5apahSnNE5TMa$fH4N&_o1~$x7!7PTaDHlNgt6?
zrak~*zu%)$sbt>obFDR`lpsQgOyO>~L$z8>H9Z3eAwcfO*IL6gO<b>6tX3<ON+l?z
zFdmN~rNn47O0BDu0!>y(qSb0;RPXousXVEdQf2|K#8bd*HpAg?z+f-{04$eFaL#c)
zpTQVIv)N1mGA?vFos?i<7@}UUgE59M46`mg0v;6yfFKB9n&xvGe*;MF;?c?*;QkhD
z+eRG6ux%SkDHMxETrL-^*Xz_2LWmy`DW#s{IDeA!?e%&or7g?KSSW;m>$;$ndNiNU
pe{MFLFV}V7U$KyLz9|$6pWlLsoc76c7nT43002ovPDHLkV1nz3;XwcZ

diff --git a/src/_h5ai/client/icons/16x16/blank.png b/src/_h5ai/client/icons/16x16/blank.png
deleted file mode 100644
index bef1f600664da97d487c7dc4abece6ed50b9e362..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 227
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~rvRT2*AE}w
zegFRB&!0cPfB*jb_wT!RZ$5r}|Mly)PoF;g`0?|{k00N^fB*UO=i9fhfByXS@87>)
zzkYrD_WkqcFJHcV{rvgk|NsAIFS7yJ$ygHP7tG-B>_!@hljQC0!qCAg>jC6&7I;J!
zGca%qgD@k*tT_@uLG}_)Usv|qZ0rKu<`1uiJOm2ydb&7<NL)@%kYGIlG(v!Z@y+zd
QRX_;_Pgg&ebxsLQ0NpxbN&o-=

diff --git a/src/_h5ai/client/icons/16x16/bmp.png b/src/_h5ai/client/icons/16x16/bmp.png
deleted file mode 100644
index c6f30443cbb452bc30573dfac8424504cf0e82c5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 663
zcmV;I0%-k-P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10u)I^K~y-6m6FS9Q&AL#zrD{sm)zCVw$wostst}oAHjjoA-;g4
zK7@mUb05KhFW|5s7E+KJbdW$BgwmqDBx#b9voFg*S~`<vjn-s+d~2;=wcG92MN#aC
z$QBEfQtBW{l5MrSyL-@TwKi8)R?u4CX*h(y>FFu`e*cFliej_bY*G}(A_6p<O}gFg
zrg6^k<>wx6KYxI1f{H9+Q)F6(B7<29Hbpsu3K1&IEkC_`gL4k!oa1CTqP(_@N@oz~
z_&h?U3Cd=uq69^G-Uox0IpFMSOvO2jwH9BBs5MuK;y}RRVv8wTGKo<kMQoKkub@aU
zi3X*xI$*7x8(>miJ%7pf@iA2$b3Qns9xTgQf|i8BH5lY2CXy0WAT<#-miY?adz3aD
zstdMSPdFM}u&N*OI8JHAIZNphdw;K}m8+Pj#9A}On}A#@y!Y1zfQV)iJW3*-RUXkh
z>(fXh&hiPh<N;G(CJ0Psf%EYce0qCC?G?j6Gp<H6#0p<0Bh*Y7C?Sm;xf>t^P#&TH
z8qCuDTR?0z<KrpHfCM4Tgiyo~1dRhxz{Pb01%UXTVtfNAJH_yDh>Ac0h!w=E{|3pw
zaJL4l^#-G(lZBGFT&r<;^M$RaEq;G|zYt(F8u6?B4WqU0?(grfZ)|K3$MKzpt+jMI
x9kkY6Q>|9Fd%fOHr_)(q#30MEZoOXL{s(i+8tc1-%r*c3002ovPDHLkV1lUl9MAv&

diff --git a/src/_h5ai/client/icons/16x16/c.png b/src/_h5ai/client/icons/16x16/c.png
deleted file mode 100644
index 12adaa37ec9ca45280c2121ec2d6cb568a740175..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 554
zcmV+_0@eMAP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10jEhsK~y-6l~OTF96=a;Gk$j~cbWq?a0F5u31=Z(OcT<EptU0S
z3xwnk#NIYwkxD{33$c(?DUu>-7E&#dWIQqMHfQG*7fw8kH}lO*sy$iPp!dOR-hA)z
zy~l_+ju)AE(>eD9V~mti5z!kFMUiSW8m)T04k_iG#LhW%yIpiTodeQZx56-l)_R-+
z5QZU=Bx#Yg7S`Ia!~l@#h?(KN&prN1hWHj=pxa}VNMP<!8OtxGP?^j}WM)WX47~Rv
z{5ZPA`;UDDC17=73X9Jx*#AAm)?Poi=e>t924t<xUGVw)0MiwL*DEz-oj$lffwO^y
za~?wEV-zBsoN7Fs4IqR^Mn8T?00_VpmqjQTFaz57LN7NBGec$u8R|0<DjmYG8*x96
zFR}Oa9NM_t?u`a3FRM818Eky$A=<ydr)Yq;+kX%r{>6ku!JrUfzFEe`s~PNkImf%*
zKFTG5XLAA8mhRoHgUn>U85S~M-y0biV?ac=mUdmt%#cKsD5apaE_{^#L2C`A6o@FH
sYPGtars-z8-ENL^K@bFKtyWwA2O0}XC=)O7{r~^~07*qoM6N<$f`47(ZU6uP

diff --git a/src/_h5ai/client/icons/16x16/calc.png b/src/_h5ai/client/icons/16x16/calc.png
deleted file mode 100644
index a03436733fad634f7c2128570898b06614c587b4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 506
zcmV<W0R{evP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10e4A6K~y-6ol(6?13?&^>@CEAaEOKZJwYu^nKmh`d<!2zK`RTf
zu+(SB69{(J*98mpEJOuKHXb=GL?VjZe&4P|$eBMAbYP45mYr{AHg$S&vZJ1Fk6u4I
z835Sy_F;^{EC?Y2DdleJ_-yNQej%MH6;|K~2OFhrSZk*~CL*-kZA4LYBVXR0GWpeY
zgzo{2W$3I%9LEqsOclxJ^H55aB@v^mBN)p70IfBA-=7(wR;z)TA(<G&I=SfEuU4zc
zOeqD=^Ahg+KCHDMB1j@mwhs!7_ArTSt$PlPVT?j4HI-Xydl86fqJv_wn9Ra3M4?bf
zc&pX=iNIur{{1fzk`CC8M+n1kDj#q#+(Ca+E|*JYQ4}GY&HfUB|NjdUJLsd)XbkaY
zvpHFSm_eE#WC{S_I1Vb6%9!9NwALUZh(&klE4=SQ#{^>-*4mjTj$;Ht04e3YTw5+5
w-aTF&T%LF40HA(d2NBJ5kWQx`T-V+E29xhKZnxnR+W-In07*qoM6N<$g3d?CyZ`_I

diff --git a/src/_h5ai/client/icons/16x16/cd.png b/src/_h5ai/client/icons/16x16/cd.png
deleted file mode 100644
index 3a3ffbb9a8df12b517ad5dcf110db463553980a5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 757
zcmV<R0t)?!P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10&+=2K~y-6m6Km?(^weAf3dIs#4dJPCv`$glTzpilvD!529Veh
z?1ELW23F9KK#&=Y6f#JpNTg78nuazBX&T4Z*O#Y;hw{LD&*%J(&L^EhyWM`8W!Z~7
z&-eHrXBb9D2=T12zrWvUG#afqjxh}5x6FB-GZ+l$_xtZfnx?HNib&IRDfskHo59%-
zEgVd{h!7U#a+&Sh+e=LpMf7^TmQYHelmZ}07Ia>}q+&Vj)&Ib%#F$<Q({%WDHlh9Q
zFPg0;uIq5+GqNm0YmL^LKmUG3-0+BN8DiQ;Cr1?YH-vRTtr~Fe-W@)4|6S^{EJH{s
z(OT2#edM!IL`sjU91$$0(C=ej%n8?Hg5oNcD6(1#>3=??-q=D)iBL+RwPtv-V6(Wx
zbT(r)mqZJTt@;BBz|qlHYUKpaF5&w&{~b@zb&XOAaaAGsu32Z5nGQLfN$&66Vl<i{
zft!^b&cD3DF2@+z3i5LLv%(dCKx4*|itS>1RebLTqtOI_Lct{&jw$2{BX@D;#&v-0
znWTA&ZCiwHk<s9o&CN{~GU4s}w+PQBvd38S9LK3$2bAN8^V1QfwGhuQ5|jeYhv%H0
zT%vW2foo!N#(Lq9)%ug`fJ$6uI=&!N3d^<ujqk6pvF5^w%OuhCk_D#O;%@c!FMa^r
z+TP&g_!MCon1*06PmwCaO%&!-u~G_n^!V{ozXV7r5kg=JlZ~w!<Fg6l(U952C25-C
z2$zSuRW^1i0L%0&%Me0{UZ>O9Z8n=&mIXk#77(rl*G6=eETyE|?IMKe3E%gh9~>OK
n=ytnze}By2IL<*BhR=Th5K3mOu?hx200000NkvXXu0mjfuwq{N

diff --git a/src/_h5ai/client/icons/16x16/copying.png b/src/_h5ai/client/icons/16x16/copying.png
deleted file mode 100644
index 83fa06e611927106220d68018e1a4962581bf9b4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 699
zcmV;s0!00ZP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10ys%TK~y-6m6Oj-+dvq^e^_g5u(1WU0R=~L4yllUzD3`tyai9i
zm0RiqN|X>KCm_LpunmgW-d-9PDVKImdzf#&nc3aFhlhtBQp&rwZNKv$&@^o%g!s94
ze}6xUqUh%A><mrQ{%N>vTb`evna}6H#AdU(@jQ>sX44UpBq7gpK0ZDGI5;@KaU711
zk2{X%d5p*78__fkP168S*EP%KlCmr@O%vO;0jR2q<#Nf}+Z+9UA6?hk&S_Fglu{_A
zSS%J)RYe$v^!t5G(?r*G&d<*Y!;q?~SS%JDUrLEq*ELEhR;v|xp402~kW%va_{e&_
zrYH)g(<$%o@AP^-@;qm?TA`Gpu4_coG$^G=(-gxnI668aj$=H}<Kp51fTAeKvJA&@
zFbsn<O*uI^p=lb#HbPmJxUS3R=O<E19LGT^1%PE)SeDflnq^rRp%d7avOTwL+X;Nd
zSDuveZ;7U9QWORI`}=5`*5y=6k!2a<@fay3MNwdy=B@+Rb(zoSBuPRThCDqzQI;jT
zu9IaMK@gCpDMe8bMbWMU-}kX?o7rrJQi`jqD}3L_vMh$fA(mw^o6WFo8{hYL9RLgl
z1E$j{lgWg`!^7?&y}rIuRTYloFc=IvekV}ZH9`n<UFY)hl9!hkk|bfhUISp;Hc=FD
zdU^`bZI@Cagb?G=X!Py+`Wju=0SJPCAP9DDV7s}lYvMRY2r(9xW!+9Dle;*MhyU~y
h|G+SeiR-$zzX2iqgr4AY-?ab$002ovPDHLkV1mmKHm3jp

diff --git a/src/_h5ai/client/icons/16x16/cpp.png b/src/_h5ai/client/icons/16x16/cpp.png
deleted file mode 100644
index 47e8b1e2836361ce5b6d4dbf453699c8f6e1ce91..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 599
zcmV-d0;v6oP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10n|xEK~y-6m61PaQ$ZZZKkssBf<c1>2@OSp)(-ko|A5u0g3!UC
zIAwDcO(z9Icb$Yfh!l*Xn_vgQNm~$019b_tnm!Q|g%FAm6+|5jclX}8G{N|iQV)K^
zm%Hzm-}iG)rBazP#>@plFwTD*Aw*S5dCe)8%hhZ)n@gwD2qAW44uXJIt3{*H*bqvo
zTq>19DMh>84$btfk&sqOvE|7L-}mu-A8T!B^7Eqr<mX32y5keZn7(FfEenMj01Jg$
zUu}#*YOS%>4($8*@`s-LzqQsH*;yapZF7m2?;q0o`H5&G&f&}?=TFSCYbe<_yr;tJ
z#v=Dut`LvzC4cfdQ%7ca(_E&sJTtJOF$UQQSn?jQJ3h?CGj|Y91c2e>7(af0BM5vP
zC;Y`d0h`|&jE_v>Ai9+f>^t6l+>cXFKwt&N54Hu`FQCgHz2_kBKChvD)$O>kxysY^
zyC~Bh$e<fAee@Dve|_QR^8&9vK4Z~)#O)VF)|;zDM09(IT5H_QX=cye<H=fy(#j2n
zWSnFB&vN0^Rj^>Oq4kY1NGWBlTCI+`u8W(Qz|BmAy8g>WYmMi5NGWSFkw_Hl_4=IW
ld53mP4~WHL^<*+x`~#+Yf@-qG!W94j002ovPDHLkV1j8j3{U_7

diff --git a/src/_h5ai/client/icons/16x16/css.png b/src/_h5ai/client/icons/16x16/css.png
deleted file mode 100644
index 15f76955743addaaa08ddc7b235ae51d4eeed69f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 592
zcmV-W0<ZmvP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10nJH7K~y-6m6E+~6G0S4k7sARYa81lYiWVXLLx#UPJ^JLrR4!=
zkaz$ZNF93o0K5jT;MP?ZSL?>DQM8hSu-7|(6a$H@gv8u#r1{R=bMG{!)9Gtt%-A`1
z%zu;+B9~HrYD^}Rd^jAAvMfUgu~*nR$8x!3u~>YUbzP6rG^H57$NVe-klh1@AHLoS
zNz;^~C`Qs+i?x=Au0(Yk0BBd@y}uRkHz$oTc<)ip;<sA>l#1^J02pJCT5G)bh{w+n
z^#%anY~l6*XswafTD<oZ(G<;j=pY(Uo_=F{u?8USwR!RR&5atD3R!!J{4)b%mvqbl
z&29!jZS;*w#+WOB5MWJE5K)430$bGp$YyjmKn-4j4J{M3X+2HxTMIxV-UD#@L$j)W
z0nkqrXKKZ{4qF+hn8WcItBY{%_hP<$Jl+LV57x9*0zjqLl;tC$dkTQkXg0J+?l%G0
z*c$KsF2F>VwFwH%C`KBns_<eW1<p%0o1hdcxeL%*^Q?2kmMUBzp_e7Bb?|Ph23aGf
z(!o7Z;SU&NkW$Jb&-25#NAFNdT}|lawV7R()|xz@A*C#2r_(u^&*$UWZ1&{ek?R%5
e@x0&fpZo^kWfm3frlC^+0000<MNUMnLSTaJVgT9z

diff --git a/src/_h5ai/client/icons/16x16/deb.png b/src/_h5ai/client/icons/16x16/deb.png
deleted file mode 100644
index 1b12d290486699dd437e0002d2533a328f10d4bb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 671
zcmV;Q0$}}#P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10vt(1K~y-6m6K0MltCEAe>*$wUvtZ?wm%2WiVn33Mqp49)E*)t
zNW!RYMK^DGvkpa_JVl3&dGU}PyF`az4^jw~UtZdc+@KOQDN$FQZ@%yCu<hqA8({+j
zGta!wZ=M%sLK71cIcx2(@B5wn$52W+TI*Y(d_M2Ax3_0AnG8y)O__b)XLfd$QmOPo
z8)LHRbQ)vKM!{m4rH9WckBy@{GU$C7VrRODpX~+}0wA4EQz#U&+Vea-&kM}<<2UBd
z->2zF8>t7^!1wVN%lx`M%F1Y-^pgS5VX8iDtwlrtkX6IN^+&Ya=_hfuw=Q-p*Tr1#
z5G!NjBrcz*TxKoGbzMXR5n*NI70DYp;#W>0B6tf+nD^6&?-Sb5LcFgB@w}kkbzPKK
zBdoogBzEaIB7(oVj(PVP-Pwi!B0|&A4!rL_gZhRR5P@h@1+csZiO9wo;Qd%4aylDm
z)>>2*AR?&kTY`0{wHf#Abg;Ky7x3p6D~YO_we<<q?rqrO4B-R20EnFHru_H?YG;a2
zbBx5`g}OuyfJk2t%XgpBGBQvB?rkM@GZz@7+GY))u7&WSJ*do9+{sd){cAP=M1;h>
ze%7D8#(tXFJfQY1hz=7Ux`_8>9`{WVf6e^W?7D6RptUYIj)O5Zg<*w0b(rw6{SeU&
zW@8MF<Dj)J=wvcESS%KYr>3S3Zt5%k8PRC8m`bGve*<pMvWS3%)BOMd002ovPDHLk
FV1g}vDg6Kd

diff --git a/src/_h5ai/client/icons/16x16/default.png b/src/_h5ai/client/icons/16x16/default.png
deleted file mode 100644
index 699722981920538a0f32d84972bf58e2dc36f935..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 311
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf<Z~8yL>2?p
zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4<ivthz5Jr|+3#$mfQq(wx;Tbd
z^uF!a?K^BB;j;Xi2O}dR+d@U|&D&q}-irPbvM}+ULVL?IuKWG5A#vfY)|U=^Hz|(1
z{xvJDKj@Ucl#r8$O8)fJ$V(=^pDp@06!)-B4=R|a-uL*&;*K+hZXF({8IDLyES~rB
zUBP!X35GbCvpid`r7<$hkX*4!o;yUe<a<Bs{hc55e@t=+b=)LrX3R3law&_T<Jzxl
zyEuZp6lUK1{<rr2_v71g?RB|#t-IZxxWk^2fB9~2n^RxT0Nu~v>FVdQ&MBb@02Nbo
AR{#J2

diff --git a/src/_h5ai/client/icons/16x16/diff.png b/src/_h5ai/client/icons/16x16/diff.png
deleted file mode 100644
index 5bef920766b333d4917efaf794b054b46632771c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 586
zcmV-Q0=4~#P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10mn&1K~y-6osltXT2T~$zxQ||M2N#1q@9!yiACcZGANi<T3Q5=
zkfFt;q(8x-wzNMX1~NI94AR&P5wd70MXcc9BKAS44%(>*9Rs1h``+!4`b3(7@xbNY
z%Q@%cJNGKxZuhYe;>dBFZEg{&s`fQad#SWqt$r{Vj0FM#R8?K7*>M~ulL_PT_^URZ
zPGh>R^XTM+UBlo@ug9)o@HP_R*ZVAY?>zuu8h^C_(RH1{U=ULpjfPAnlee*Vqtof2
z2_cYDl07{oWf-)3JyM3jo2@Op{SrUFwYU?x55Vv3;sQVjfl{m0WICN*$)MS6qS>~M
zlyW72ZQJt^a%X1%q~dX2hr?LUE!MN^T;;FGeav0wHdC~RZ7!Z%%txqHDl(JFtYlEH
z*XIU>LX|{f2Y`HjgF>MSKq9e2KEH7zKnO7h93MY(6F1%e2T*5#*|HC8>;s#%>Y96&
zQnL4HkHhidLhXXVER=T&0GC{%JXKtS^M~jE*tiCkWw}(}2OrK0XJMC8vj2IX(vOl`
zXIa+uFO<vW@1amA9F0ctcsxtJzGYdMrpahD8fZSBuQ(hIk4)3tT&nwTc)i}C-|sK}
Y0gYY+-^ZXOod5s;07*qoM6N<$f=^8ZdH?_b

diff --git a/src/_h5ai/client/icons/16x16/doc.png b/src/_h5ai/client/icons/16x16/doc.png
deleted file mode 100644
index 5732f9b24d0b619fc12a5a0afa1785ae01828998..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 535
zcmV+y0_gpTP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10hCEZK~y-6jgv8J+dvqG-^d4!0*zw0TLdOxIq4L-*(OVVM92J!
zLOYhwAwMB|m;Qt<{R6gF1)4NA8KgzT3Z#%0<NNNu49#66+evyL5TA7K^Smdt@$Gy1
zVUo{I%ey}z0307FSZndx3W6XNLVVo#eD>q-)|*zi+m6v_1bBa_z|1dhCL-i{j-n{e
zMN$3^-?jH~UCd#bq4f@k=v9L_j*(^AfgodWdv9PLsmu&!#&9?U04Sv}o6Y=2r4+i|
zE|?j{7zjfIGEbddz+f=&vm{AsbXSpxAczdAXXXN?)2Sy{Et~-WXsscPC9hu%Ns^>S
zuHHL?#|j44a_u2AV>BAo=t`-TDntZfjDe{LxPX4Y?`NG(r$$~1pqjzD7oS_+pn3+*
zU_2iCnUoR$P?ja6l)lPSz?!en>-AQM%T@jb(E19_KuYP!aU3HI!_^9!2th+UYv9Ps
zbRt3^Tif%S>?cTTSj#@(rE9TRAWc&UA+E&Rz4*(;ul(e4bg>BlUv>0fKU1^WoJ3Ld
Z=>bTwJbCQ{8OZ<u002ovPDHLkV1oZ$;#>d#

diff --git a/src/_h5ai/client/icons/16x16/draw.png b/src/_h5ai/client/icons/16x16/draw.png
deleted file mode 100644
index 8f1da5c333fd0e97559e809da86928bae710b4a5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 679
zcmV;Y0$BZtP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10whU9K~y-6m6Fd((_tLPU;FyZ&3z|pebcdoF|{8yH#0n#2oXUL
zME(iYy@Lny=&7rx@FX6Cpi76MkRZq%SC=^vwhS|j*~&w1V&CWaK2HbP7l%{o4WHBJ
z{eJU)f1W2$C=_lhrRKHPBm4&}%PI;X9tT!dR*LC#I+sW!uq^AJ#9C{1c6Qj@+*}o|
z>*gHC!F64q@T=P3!^;h%tLYE{MsM_SA$P9D#Bm(T<#JAVo`>goEz9NS>)gDPqstC)
zP<L7V^p&^I*0_6rnEs3dKvO4_QW#@e42&_@-C>l}SREZ)o9L(Saug?Nw{VqGSW-%i
zF+`@P5&1msAB9pL+B5!y&%n@FFVR>h#u$I3lnBrBFvifBo5R}MBeML4vHDL6?>b2g
zrih=l3CDuRQZ{S&6-+#ij>l1{6hpTTs6TzptB>1E=DJB{CTXKTtl%3Q866IB<<UK+
z9$ZCNYivDPB$&^`{ys))pLe2xF@|s?NNO;_z|<7)gTw5e@26{Ffv%;c7K660&_ul!
z!1D|}Jq{Z`6p@)3(3)nSQxmuia2p0sX})c3)02!I?gD|+6YSRZ__AIll^me@{Woi?
zWwO_k^!CM$CG`!Yln5aJ*!o=K#bTb!=r&FwN@k*$(TQ|hu~G^lgeVt_#Y@?2mS8Z*
z$atEO@rTEL=21u~DV0hHA<DwG?b%ADGG8i{F1Eeo2?&Kkl~^n``xob?ZA+kcOA`P9
N002ovPDHLkV1lAKF(m*1

diff --git a/src/_h5ai/client/icons/16x16/eps.png b/src/_h5ai/client/icons/16x16/eps.png
deleted file mode 100644
index 93736bb9783b73c8c373fe8945e6c6454eba25d2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 619
zcmV-x0+juUP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10q99YK~y-6m6A_uQ$ZBPfA3||XA(8&QvwxBHZBw*NZkr<3I)H0
zi!QnmEbhDNqF=z3xbY*DSg>GLVg%b~OeINe0(FsE7yfI_%-k6lX%k*WF#~sT=iYPX
zoI5wD*XwiE+EwS=O(r;D7$!=ohe54YOUmVPrBo^rhT(sKopbd2eY)N5JEgU*#Bq$)
zdJ+M|aZIb#swfdbL{i1z`!2!H9zKfk7b@fXZyiuMeEte2IAyKHd!P3Ac7<U7H9>R{
zdv6_rp|#A*`}ngnxVujQu-2lCF=+z*6}R^aKQl+rtKvUz!sS~-!0i?M)HyirH^vZ(
z2;Tc~^fr)R8h2v>acA(m>!X_6e2i~C8|5NGcw%AH)TtuTH2!=U7tbP{=VL&B8~L(3
z%B{7h2=ou^#~O}2viSrV43L8!ZvXv|KnqSwiXb&axAOuyJc7e5*xMS<rBx+!={jy8
zV1)3v{|^PGxrVg?YN1Ycu|amRf#jyq&9&i++9IbEj0wyUdV2#(vk(>WnJIi`is0%U
z?57XN!45JIoN<4#kcr4YY67IbH9Nmdc77Rv+=Dl%`iQ_7gHmduRkqd+Ehwd0Ns^$o
zPVd7%LTgQuBq*g?s!%8_wcG90Mx$|U5(QBdwTs2#(r>8_mTss2=MMk?002ovPDHLk
FV1nl{4xj)4

diff --git a/src/_h5ai/client/icons/16x16/exe.png b/src/_h5ai/client/icons/16x16/exe.png
deleted file mode 100644
index 31299b7f4a44636d7fe5eba427e629e0fa221c66..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 846
zcmV-U1F`&xP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10?SE6K~y-6U6aXf>Sz#!Ka4FK2$LZ(AS8w;S)insd4t~Gr@4=D
zrGAAxOLkFq=_o=$Az=o~7zmSx-~M|M2`ODtZR$v;>KvU)JUu=AErj?J$MIkMug2ps
zo6UxLy-q%#2jFlxFq_S|y1IH+RrPn`;o;%A*=*igmW84y0344;j>jWW6p>6Oky4_n
zDgeIk6Gai*?Uv<o`L7xT!ELEjA_#)h<}eIdEEd?dO{3AkvMl=jK91vHnkJs-kxHfL
z^?J8T6h%Z)gp~5snx>J@=ZWK(IF12GrBcLkjA0lkih}F96bc1YAp}y&AKE9A3B%zK
z0Nb{yR4M?(aeSIrt5rPDLk+|5M6lg%$!4?EYBem&Vl)~tolg1u{KR!#Zf<Va@As@$
zD>O|b3`3Ope2(KdY&IKSUtf_@((m_KEEddWGo+MECKE0%FUe#wTwGkxYPFb7r>xiO
z?+f1F-!Tk>APDGoyEu+RtJR`hE|X5D>G%6QKR;70mpMB-BZ?w~5PW=mpe~n7JkP`T
zeRN&Nw(XPl-EK#*SOlO}t1%vrPq?OO-zNIL&-L{+g+c+}_c08E(P+eEGC|jMN~IEo
zLIKON7z_q<IvsYq9j@zQnkH(kR%5r@(d+dPLXgR1Xf~TDio#$ppxf<IEEcI$Dzw{e
zOw%Nn%aKZ@7!HRhQ4}#43~0C8+}+)gPN(VhderN66h$GM&C=;~kWx~uR*_PYOeQIp
z%LpM*9LFJ-%W-~wj;3ien@tXf1FO}FbUMv?z2@=p5!ZEpgiT6`5CS!sO!D>hMI6T@
z5()PEJyJ>x!(hMPqw6}2MuTiN`y+5dh;M>Ysr3H#_I9ah8m4Jt+cu_Y5(ELB=b`I5
zilU$>%84KhLtb89P*wFUaesgR%XQs<=JR>m^SqNmqtOT<#OWuh)#{J9>$={{=kve+
Y1E?XCEuTb+KL7v#07*qoM6N<$f?)xG-~a#s

diff --git a/src/_h5ai/client/icons/16x16/folder-0.png b/src/_h5ai/client/icons/16x16/folder-0.png
deleted file mode 100644
index 7c613e054b15f36f1c63d3a9e68c29f95ccafbf2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 395
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf<Z~8yL>2?p
zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4<ivthz5Jr|+3#$m7#J8iJY5_^
zEPB^Y+~~y|DByaYoBz@qH;>fxrAZ4@_Z>LpB(P=EDgGHs@(H<#3lpZ>Z`kgozhr}u
z%ND^SH)bT1ai5(%GhLBQWyc2T{QCEEs*fL)cv-qlud%l7b=JzvYWCyXgSnn09r<cC
zd)u~sjm4%6Nj*IA^G<%&VK7T?idg^q-@}t<*X`bS!!mnKp1kSw@GicynO}Y#d9twn
zU2~MRr;y#f_N7ddR37@SecPNNW%oHKjbW;$qsiArZJrvk3<_C46uQEAI2Kh19$xYx
zxL)`Kf1{p*fQxp%!Rmn0=E&An(lx>_m{_v@Z)oh|J@z<o^~7aM&rH^FKFVen@#fxL
m`+05|Q#lI^7KFX7V+{YeC^&15#tdM<F?hQAxvX<aXaWHErJPRy

diff --git a/src/_h5ai/client/icons/16x16/folder-page-0.png b/src/_h5ai/client/icons/16x16/folder-page-0.png
deleted file mode 100644
index 604f9ad1c5699675c7d60af3a0b49da8e5714e10..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 591
zcmV-V0<iswP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10nAB6K~y-6m6E?}6hRcnKfA7X1a}h&7LrB?7?sl?Dv7-|DhPsB
zsZ!XQB7cCjg@uAvA&rGaT4SN<g+oL^5b*~Hnh2+N<n}`DcHVnqad&&SUWoXGVP?Mb
zec$=cV*>9zD@(I$z)gyHJ~3%GZry#Ku@3_8309WQ*vyGj1VIRZ_nxiI@3dN}18k%S
ze7PKLEZlo@J$Uu#>Vxs)m+wp-J+|LPBdGuUM)T9g!^o*E#&Jx0d+Wap;yC8F+G6BH
z6W3|w2L}$05k}>L*qb2P4tSq)Dj7~Ri9`((H!vv0JY9X9@53-)=46H0^Ych2EtrTJ
zkrPFS4MdopO1OCKHUMv5uCiVG%DdOb>9ZG*b~D#HQ9=>JBpVFvnsw3|owSA%W8zSW
zUz=aR`+`=apFjr*`Ua*B)r@nO79a>{zj)H)Tp>Z^L<>DIm3+=xb+T5Sa(pD`hP6(V
zNW=;~(4K*+<osS7FnEH=;J5moz^kJ)b~s=6&xW<#1p0S^?t1;%I>VTrN>Fvh1Ztx_
zkoFFh`72Zy#ct!rXb)7Z+Gy10#*?HgYS!3o*7hhbqM4?sST%Cymp^>`eBZ;|KdXii
dK$S3D{sRQuK3buqDUtvH002ovPDHLkV1kf>1jYaW

diff --git a/src/_h5ai/client/icons/16x16/folder-page.png b/src/_h5ai/client/icons/16x16/folder-page.png
deleted file mode 100644
index bd2f8b99dc311ab3053c728ce5bde799c121beaa..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 311
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf<Z~8yL>2?p
zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4<ivthz5Jr|+3#$mKn8*og=CiG
zq%yeY<>#g<1Xt!J<>zE3D|ja7=P86_q~@mfEzw*JRNCq3;uvDldw23h-a`gFF7FkZ
zH?}-3^f<n8s^Sf$$1~=KaV^qi`d=8|SyXo^R>+OTNQ+^?DqW>_?rM{|XKvlQ`L)F3
zl8UQqzxxSR?m6hHGWFpkNw#Zz3<vK1Jh|t3=uGpi*A82}^E1v~)g}3<l*Kq(W%_(Z
v>6GZ{!uPwMRTRg+jQ+vw@JrM9_uTn6sw~9cM;><sI*P&5)z4*}Q$iB}*dTH<

diff --git a/src/_h5ai/client/icons/16x16/folder-parent-0.png b/src/_h5ai/client/icons/16x16/folder-parent-0.png
deleted file mode 100644
index b82d7a992d61f84dd2b2a099b76e3b4bb4b2c7d0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 494
zcmV<K0TKR*P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10c%M_K~y-6rIWo%13?spzuAo=W@1PJ7C~)<72HBnS@{TCD)<&Y
zfyLqz*oyD4?_evWu(Pp<un>zaf)kBl_gc8hW;0R51DE+b_YC*U9VH_C2aO-j6tE2l
zke1^TydMO*K@gk-L2wFmSF%LJ6>CY743ttsrPMG<l7Wb<xwxwYc8oDMz#VXBjJXk!
z9T(SC!e$gjN7mW_@B+M8YX?yj9RZt5M%7-yn@lEqy<YDs&vU<Gobr7?&$8^i-EKbu
z#VQlG!Z185lV5?iGG6mM_rowe1GW}!tjss!I1bV@JqEH;pc+}4rpIv{2f&7_gk59I
z#dJDd2Xcou0DiOCoLOrxfhSmOr1$Z7JoG$I=JPq7PUo<iX|25nD2hS>?_c{>fpM$V
zx&|1HMhC!tRiM#m+-j{K%H_9-^;RwbM5N%;yl>2AvqEcK)cEedptTl0jr$c&fquVl
kMdZ1*J#}&Gjr3=H0E{cixm!I+_5c6?07*qoM6N<$g0bhzSO5S3

diff --git a/src/_h5ai/client/icons/16x16/folder-parent-1.png b/src/_h5ai/client/icons/16x16/folder-parent-1.png
deleted file mode 100644
index 3c964f195ff962b9c2bdfbedbda91f3e6505274c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 621
zcmV-z0+RiSP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp)
z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00!&;00!&<9(6c100007bV*G`2iyq{
z6d@o`g*sFK00HeuL_t(I%axL`ZWBQehQHa}3&NNvkqNPs6hTOc;*8R`HxhD+wDAkL
zrh*5s@&KSKXe{|TEJZ@1qe+J-QbwY{M4%MJ$>H1Gq2Lmok5DkuYFC>1XXfAk7XWMR
z9pEni7gr&KUm_y+fS0Pe323E2fCuIKdp##2-+*^cRa?L|uu_|Fe>56B12{Z9`~>{0
zCRKGCXt{DyJzTrpULOvJPXNZ_@t4_bb_MuaotVnH)mWQMCcCPdsA@8qOm=~_IvBv*
z0&WZjgRL}8+j*Xo=Q(Mbwg-d37SO0S5#SN<8b|=+oO^hDeEh;Ww^Z!CzwCCq@4feD
zKm-clO`XDOmSw4PuCZ7ws2=BBBg?WBSp64;l}@L#(d+eg=JPp4Q7oPLd`_>|+v#*V
z8x_SwfXBcqpnY_7^t{<@uE!W}b&fHHi;Ii%y}i8;zzlfnD*3R#zduveug<wRoles#
zxZm%828@UZ5N`A?DF|@xz5fVEk|di&Q7koxF`laGS?S1djdLO*sy8kT*Z;CuESA={
z){6H&mI~bX`MQDBrco3{P4K@AD<UFJRdZ{tSJj4yAR>70{lUS(Nv%3K=ZvZvRYgQD
zV~n`~))@2DTH7+lV6DX%Q*Lel@CpGS#25)7P~Jacj3>VVv7y(VM9=#Y00000NkvXX
Hu0mjfRbvyh

diff --git a/src/_h5ai/client/icons/16x16/folder-parent.png b/src/_h5ai/client/icons/16x16/folder-parent.png
deleted file mode 100644
index 183c3c8edaa25f6cf9b91d7e020249b45ebe9e12..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 326
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf<Z~8yL>2?p
zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4<ivthz5Jr|+3#$mKn8*og=CiG
zq%yeY<>#g<1Xt!J<>zE3D|ja7=P86_q~@mfEzw*JR64`c#WBR9_iXTK(ZdQnn=`&;
zO*7~bmN;%xma#2C=If=nL(6OXy-SW>nw-KsX;YK0i%N@tr`%#ihLdNK-oFjZo;%6@
zhPP(G)y;z8SC{hSwf+faaA2B{W_-KnkFH*e!s2<m_|~nR9Vug($>OFh-C3f%;uW95
zvpMC0g75!&8d+VJ%46}6V^~)?pCNAV>e#r)XZc^sCw#Tu&p4UiDJ^LA&Lp5489ZJ6
KT-G@yGywoBDRPbg

diff --git a/src/_h5ai/client/icons/16x16/folder.png b/src/_h5ai/client/icons/16x16/folder.png
deleted file mode 100644
index a8d601aeb3a269477b85a9e49c1d977c70bc6f53..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 255
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf<Z~8yL>2?p
zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4<ivthz5Jr|+3#$mKn8*og=CiG
zq%yeY<>#g<1Xt!J<>zE3D|ja7=P86_q~@mfEzw*JR2t~%;uvDloBZehe|u)thStW$
zMnxN&JrDo?|NnJ|h@p{@*}9mWn;2)yeE$0S`p2v`rgqcpYX)s?ZE^<;Y)nk1DA^kX
mE~>oJ5Xj8d&)731EuBGTqtrZWvp$el89ZJ6T-G@yGywoZT2sIP

diff --git a/src/_h5ai/client/icons/16x16/gif.png b/src/_h5ai/client/icons/16x16/gif.png
deleted file mode 100644
index 01a2f2a8f94ee7ec49e56175eed2207b05f16bc2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 655
zcmV;A0&x9_P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10t`t+K~y-6m6FR&Q(+W^zyEUnUT8|>h}ePF2??0inNxM*dzknJ
zhQ}a2hL2&QOd&yRjHb|}iV{>1IBn_quMTPg6BD|JJ6T`WUVDk{?d|8*+Rc>GBjy+(
z#GWx`Lu_qr?X}zO?#jvvQpy{NV~iXhA2S>dKWb}jH_vmdweuJt&vW|yeph?%8NPeV
z?yHw%0aQwODR2^;f}jLJ3ZjH~&EV75Z}8ruz4uH`j(E^E7zM&5%5kI&kZRzSz$HNx
zkkl1ma{dc18))YovgTP_tD%epn=qG-g{dRBNYs!_1#2CuCeU?-kOGmFxM^kPK-D7o
zlV`Y-4+z!3|NKE5MN$z+5=663)Cr+WRHK44H7+uTA9-{L0cC)4K>guk{7Ik8EF(je
zczA$byoW0e(D^NbGU(PiNEpdL2m$H6Cy@{$lEN6IK;Ky-Tzn;pk}x?!FSS6`k+K4p
z=Y-P%F>w`QNQ&w2Gej`~9~c$ih($>pfy^B7&v&8&wV;vJ3y^}atgiq*R5&{vBh8fL
z5`N;a=aEnXSW*!GvJVIy5dyM~!TWLsu+uuHpQlJ8NCDh9;HT+76`JjD+iNG(ms;!&
z=4;~prMvi}FS9SS*1NoTKbQ+p6a``L6Ix2y-`Uw&?Q}Y1S#~3_bB<oGhm^9f8;!=s
p{{H@Euh(0h$3eAP?KhjvjlcZwASNs37oGqB002ovPDHLkV1nHj9S8sb

diff --git a/src/_h5ai/client/icons/16x16/gzip.png b/src/_h5ai/client/icons/16x16/gzip.png
deleted file mode 100644
index 99ae6fc6677bb9c0b47e740778a315a56b1fc3c5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 551
zcmV+?0@(eDP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10i;PpK~y-6m5{ND;!qTZKjTfnLPfC%vc+OQ`vTf-Cn;?9MYh<|
za)fR5F)V^_AgP6rPQ(?aRuYjUHz&DU49YC4yE8u=xaY$8&UbHZv)O#rTK_c0eBn-N
zwHo8`n8{=Uz;d}{wORp$j^lhM2!e3C-I^@ROi>hnm57*rzi*-_GEo$ne!p+>JU83z
z)&xNisx(cXT-QZweNTXTy$(R9)4AP=2(IgLI2@joh)|a0-C+RBvH+OR=Y(MhfH8)$
zED;ebtu<v?J}hGl07@yQ)9D`otu-pob428!fl>+p&-3toAAqW=5E1e`$0~~Ap9a_X
zzK`d5x4tY(ilRV?2vt=*G`Qxi!CMP;Jv@qtFdB_++ef1jBEogCs;Uaxw#l;WF5q&x
zuvjc^e<31VE*EUueg(vFjN>@;dcFTX<C<o(Ns=VQag4Goi`{O=`Fwsi;0m!U3#GMY
zFc{EkwLSz$l7#ho{c5n^?}_91Lx6U>eKUADolc*I!y&e9ziYTC3W6X&YyDE2&1T<@
p$K!LFrk_7z&}cM%b-UdkzX4XSEHy8yRp<Z!002ovPDHLkV1h;6?ic_7

diff --git a/src/_h5ai/client/icons/16x16/h.png b/src/_h5ai/client/icons/16x16/h.png
deleted file mode 100644
index d3c7a9cc2378073cf2785f09356258e77ceb5fc9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 504
zcmV<U0SEqxP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10d+}4K~y-6l~S=v13?gdw~nSr5#+?QQ4nlmX>DVj&dMLK&`LkR
z-Vg8x#2>J>NNKb=gOLkJ3L^wXFj!o6XLc+uF?XD(_h4X$+4p#Fn4r_?>@xG2_kIf{
zV2p`~=s0M%+fk#@Xx8g>7-RlL_TFPO8euRP+>^Do8HOROwPg$-3`4|m+$0f!h?F7&
zz>H^@8LFBq#BW&Gy992Y3$tu7GsroYlCoeA{j^Y);w%H_9E^w*)x8HM42Xw10fysm
zv22M5Xci#{@1YY0Zik@LYan6h`ZD;u1uQMhjWYkd1NE9Zcp1Z9?L!W>5%gXW+zpF6
z_|bu+4rFHyY63`e6=uTFk0kfE-~f-W(8K}L9jL){hO`%7aF7#NY+V3P?@+JMEMdA6
z<)T0?Lh^7pPtiL{AF9yJ6(pHH8-bV^&N&d#AGenWGp7-VD2}2C*4kgME?d@GL{S7H
uim6(yp7i_uvu?M$QN}@~Qt8)fwUaMf+?Y_t!-v=a0000<MNUMnLSTYx`p+u>

diff --git a/src/_h5ai/client/icons/16x16/hpp.png b/src/_h5ai/client/icons/16x16/hpp.png
deleted file mode 100644
index e5e52e2506572c56302fb7c45bae8baa1ee01da0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 530
zcmV+t0`2{YP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10gp*UK~y-6m6EY;6G0G$zg^CD;le^L+#q42KxI?WQ&Fa%h=h28
zq)(oJHk8LJfLmSw$*l!NI0@pDunS0J1ql%-&bzZa6tSaNcLwuIQ~a9wrEg}}jK||A
zB61vKe8_*uT6>Zt$)OpIMkn2FchKo{u-0xBjxjQy&za3;AFXq4&~CSJ&QTOasdiu9
zDS77{%gn%r5C|cls-@aXcL3N+cS?Shvm#O%R#k=v699$>lS(flB;I>eb>qHo_D|RP
zH@){BTZK>lo!YY@X8d&{ovIQ-AX%-jCW+{8hx+hWIuWV90Wrct(4eRfaCV7GEX|2X
zHGu|27lL{JjrxmsPzZYOHty9f)NlQpK$irZ|Dt&N9KZhv^XUTf;cQES7}13g9^XZ+
zA@)1yLf~hyHd`VvpD)nDqd~83V9iyJrI%15up+|hFVvsD#(ep4O`suOue9b>@!lgM
zm^4jKd%fO+e!owxR@?YwH|4!2%QB|Z=_F}3n@4$`A7@#1f2;ITjYcDHwOU7i0Gj*9
UdQ9@X+yDRo07*qoM6N<$f_38LfdBvi

diff --git a/src/_h5ai/client/icons/16x16/html.png b/src/_h5ai/client/icons/16x16/html.png
deleted file mode 100644
index 2f94a7846c6e7061642b087fb4ba720df23d18c4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 770
zcmV+d1O5DoP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10)I(FK~y-6m6JVhR96s&pL_1Pch`IO1N*MMXffb`u;j#!kWeTP
zNtY-RO_V+zKLP#)6{1a%KAj~bh|*Y*QWzw(*`Q?Cg~17CZG$Y^?BaXQnW5O&6ixwC
z&-={GJ2TPh>gw0t`#U1?IUf<mn2xpfR<yFR(wUo^TWYmh7-K$2EFugB1J>8q|FA_-
zEaiDlQ4|0u@bK}!Jl`3z@#=u{Gd0fS8F@A3i%a=2B+qktz21@yArL|U;N|X!pMQHs
zty<=j_9<G;D($I^Aj<E54Y>d4IXAzVr#)5SNN2qFs461Dz2&FGNy4EMW}6ucvy;>(
z5;nH?F($%exV!u(&IeQ#?>)vjhpO`9!@rSe?7`Lf8B!aQSc9mdz+|;VeImugmY;s@
zqpCRPFd>X-8?T0(o2m2VXQydoDK<7Fv7zw7V0Va!awe}(E+wpQ9iXa&5U@uh#Kv%S
zeui>tF(x855jHkF-FQvmgw3~aP*w6;nPIH&M>qnUovyLH_m)R%TkH*sW4E(Xf{Di4
z@uG|hPwQ0WBw!*js0eE>_W0$=KRnyo#|Po^g(lx$yGWywA_9}ulq8N$0;cOJJG<jH
zM~9xrYdg3g1W|kts^tU`Wi&cux}Kf{TwiE%=p4;ziVsSAs)F-^^MVfoz~26lG=}R7
z&65CC<=e}rd9l6A=GJRwrz^N1xFGBg3l83lsFe*juC$Nyz4zlSIOnj|GMOdZ`tDO6
zJlUkv-=uKk%4uSlotof>ug;Fo{Xeny9&4@bbvm8-#l=OEB*DfJH?Fk*_lZ;$0OuUt
zZWn89&t_S6yWj8M>2|x9KJ1alQ7V=CjYi}4J5=3(H%{8rYXATM07*qoM6N<$g05?9
AwEzGB

diff --git a/src/_h5ai/client/icons/16x16/ico.png b/src/_h5ai/client/icons/16x16/ico.png
deleted file mode 100644
index 82227e85cc243f85a421bf75ac99107afbebfab1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 792
zcmV+z1LypSP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10+mTbK~y-6m6FR&6JY>_zxg|zDbtx@+G(jEQczF}6mKDc#F%K}
zLJd138{<>(0B%iO@fHwbj4>dX5F-n@CR`d7%0*;R>m4YiolENi6E`m4Y|iQ=-#Izb
z{QUfF$8nxktJN+}AW4#z6-614rlzKrlgVT{kw_qfI99k)sgTd-+1}n>ksZfL+qRA4
zI41$Xwr#T6Y+Cj_kBOxfewM4e+xbjSYctbpTl6+HG5vm%-qsdomNw`~on>Zmlb-ZB
zW|lX(f2$qO^N>ByBe%QDT2bP4?ib;BoEM*RD2mSLS`Muy!pp@SRMq6=%x6M17NgTU
z+`O73EIee_brG7zjq^=dktkiKq8I^<OLaC8EyCr7I9AxAqdr2d8ROc;dhFBnNUD!p
zbdLxEB1jp*+}9#8!({eL5kobY&6hF59!t3rrslJdbBQ+zR!a)0pnp`s_kDy2P^arW
zy3$H46eK8AI${Q<W^$=cN3E)KHP)gTQLeRFG@P;F+b4YAKO&$4t3L{??j4Y_biVAB
za7sRtt3Rop^~r4SVaP#dHwu`h%H&poyYcG35rto&MN=u49Fm&C-uD8{(J<YXOi~y8
zHY9At=Yr)E!J%C#QE|$6o=2dsukUd{v-prdWOROu8X@ug?MD>XXXMoqnk*O@Um+Y4
zjEpa%DT0xS6|SE*DD8hgB2ddNZDy20EKIARa=qRlRi|^1K1F+@N%3lej$|!|2MJP*
zItQImJlFkKAz_<5d$Y*!*c=b;bTd3QNAa(hi~sj~Pag6+=OGOa4p#g7`!NjTL|5M5
z-)CrO2w4b`U07IX>+I|#7z`dO?7A+QOa>uDR@QZWV10f4X(p3tI|)H36v~>WIq(OB
WS0oDDpwScn0000<MNUMnLSTZQSz9>(

diff --git a/src/_h5ai/client/icons/16x16/image.png b/src/_h5ai/client/icons/16x16/image.png
deleted file mode 100644
index add1c5915f43ce85974c751787073adbd23028b5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 671
zcmV;Q0$}}#P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10vt(1K~y-6m6A<PQ(+i|pZDwiZZ8F@a1D)7)1V<b0M_8dWf(WX
zB1~inuE4kg2TmC100uy#iN#1GTC4oDw7s|eejQ-K%+Pm!o}BZZBfGo1&x|qKF~&`1
zI1xEW({xLAc6JV$&E`g<(LgD6BXJ0UUav=|(>Y9xF&lZFV~m-_0C}F%ZnrlQ=N#|$
z4|)FjEwNT1YK2TaGImHAkV!x$5oJIuh!+6fyn2Cij>I`fcQ9c2eiND31T9Q23*yj_
zT7@bjVPv5Uh!vDqh`?EY%)D|W)>>4pM&nKcRn-InPCLSUfQd&8=xL-pFG(vIS*?ar
zf>cv%VXquil;-K<M|`>%v!E3hV?(S(aDrH&W&`fFCqzwcX^||`i1t?zy!R+o;pY(6
z@2zmsA9FXEr=DoeCy|v@b9_8tX}L;NDXWi`h-m`S#e0u(&Ov|}BNOXTQCO|d@#~_b
z7)<H)3i2!^L!kvmLqoSWMtr<}qVj>uvk~J_NpOJ=opb!u<A#nxDs&5vEgV^Wj^6Jo
zB0{*8T>}#5=%1WYNfUw(n6Y6pDDj0wp$Il!m45~mom>Gn9$o{gQ_G((KTx_t^Z`>$
zaHae2keq#R4QS+bPQQJfX^AWOBK_{a7B-(W`TqXpOn~8V$mji!Buc6F-rnBY`uaLr
z>l=x!wX|9-lv3?vVPRqG=;&y>)oQKH;vmbicD-KT`U{mXE~Mg5YP<jd002ovPDHLk
FV1gdlA;SOw

diff --git a/src/_h5ai/client/icons/16x16/install.png b/src/_h5ai/client/icons/16x16/install.png
deleted file mode 100644
index 0a9c03669882d54d153f584cd743824a5876b81c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 788
zcmV+v1MB>WP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10+C5XK~y-6m6J_KR8bg)pL^$w6OQv!*Bn76l~T-{=w~w<wI3p8
z5$&Q~?SgO-lnAbcHZCJqVz_9Xv=|Z0bYmo0Ot-%~W|A9cGL)Ke@Z59nX)!htZt7cp
z-}gSe-+MU5($dl;rPQeJ`zQI2GEFllgt%ucEG*>O+S*cyL;}+^|4HooK7~SowY9ak
zLQ0vkEDI^+-dHpD<{|Ibp0ly}1%T$pcDmcnasJe8zyQFqEF8y43D5KJJP&~HKfdxP
zJHQX+(3Gs>XnWOBY5OB{c8*scr@5JVfE7K$Z=Fy|p|u7y6WIZXu5vV4Pg6q*(-2k5
zQAOm?TZ-$eOk@YRd+iBepp?RNT^Fr2GcU&|=@sIMI;4c=aGI7#A1#qSn!{<Ngm|Kk
zl3rov<rrFPT-U|)JP)lkD;tYMtRQk%BX>0|(KM~`URvY5v_#Xje#8p0vayKP`tK78
zTc3$H80=Owz7I{2ZW=<3)eLqwsgyOQ35ID<*!qmtx_Uw_14AICre1e2e8sMb0UAP$
z3}3OS*BwY%-Q5RhJ$#y-lBW36VRB|@-`h{l3{m{)uv4n;?gMls``IokJRg=<r<h(G
zuZgD@$5~#T!t-IfsOU=e*8sH)(%n~i{plI`;ymGafXA~V9BJwS;PLDTu|$BaqDN=q
zJn8PMxUTveAf?NV%n0L8hk3U?Pkki7{qb7>1P^Mytt(C>`?--BK}r|k55RR@gb)bx
z0C%pB@#@1YFYGMN&N2X<)@9QD8O|QRNTpJ#*;h&-gb+?Hm+S25=^+>lQZAP{d905!
zT^9%h0swfPhf<1ixeS2oy4bdj5W*4RaCk7E&yU)+-SJOfaj!z5P(Bum4gLcB5O_GW
SBdl2f0000<MNUMnLSTaGoMgiQ

diff --git a/src/_h5ai/client/icons/16x16/java.png b/src/_h5ai/client/icons/16x16/java.png
deleted file mode 100644
index 63b86830fedf4a59f588cadd495a96e0317c4797..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 658
zcmV;D0&V??P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10uM<<K~y-6m6OkF6G0e;pPkHZn#Q!2r3S=c6s#htf+7K}f`Sx0
z^it3M1@$8K;$7&W>Ol|cKj6iS1rd6Y#)Co*+BDFbh?ZitDN_48>CEh`htNRVZNV4j
zFf;G_@O|GfPO(_LX^a`Q)}G@(B!nnQDepUlLZOt+W_#1=G(w1IbKx2G+E8n6t)*70
zF*`duC6!XWzVD-yiVQoezws8ovejtpIQM;@N~O{(f*>FW0>Uudv)EXo?cD?P#XE?f
zpLg7C=Y%mPI{bHz#MoVQCXe^w3C_y=9*;2wskLqfcB!rS5_RG_-t-vt{)YtVv#`sj
zwMOh$ei%z&4;>*)`H02oNY8;SZ1&wlew)Dfrx8ovn^kUY>}_Eiu&wx)S9mky=*%T_
zCXYM!37hQ3n|w`dp@djlV14ifKr}#S^2FvRAy7DtWz_M@5Ko~_UL`IBUUj_Xj|7;m
zEaun+yqUK+RuQ@hg49vi_ya+M)q$t2VMYSPdJXG!Al7Q&x;XV^!Z60xl^cYK!%fqE
zfQ~mq$X`>aGyT+agCJb67AM#w`F;dP)lu0#8s~5C1Zb_1QnGsM5wWEow10d~TXg~_
zw1iF!LQB}*MUd*o_}SJA7-Nu9%1WtJ>dEDDxUP%s?qOx%apb>f4O%J6<uX#ricBVx
s!_{hav|KKqIxw|M@p!!2+1WY#4=Y29uJEl9o&W#<07*qoM6N<$f}&(FRR910

diff --git a/src/_h5ai/client/icons/16x16/jpg.png b/src/_h5ai/client/icons/16x16/jpg.png
deleted file mode 100644
index a50c99bb98ff6dc16098d907515cee3310cf3608..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 675
zcmV;U0$lxxP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10w765K~y-6m6A<Q6Hyq2pL=^}rk@j~i6zm9#Gu5q82*79e~dd9
z`~$b_+`HnB7<L2}V%6w05dw)8i1cGRow;*AT%bbYhQ9mr<ec*!vA@6nQfs~Kz29Jg
z6G9w@VYnrBcXtn0R#tkQP6sLFt;EhbhQlGp$HyO)*1Fejx6xWJVt{tLO_C%%WsKqd
zhdo~Jyg{fsLWX#o<4uOQ8Q#tDzQFqeMEMW!?$r*)7?d%FU(*SXS7V~EfhA;;RVZ>x
z)t3lw$gRWR5W@e>&uDr<U>c~hENRp&&mTlYN>MsTmJ9UE;&Ow);sV9UmPEBWt*DL^
zf=F44vb=K83>+_>Y%)!cK-Re&pOA+hJv9g%w3-xQ6%k36q83r5MlJNrj6qpziIm6l
zla1wdE@r2+WDDPDkcv6=#(jR+Z$x*OAgb}OxsLJ@pL?veNMj6mhrr-$j=&PfkC^Ba
z=E00hcS<9^2dat?0cknre13%U{<=i#B*V!Wqil+{hEb7_W;4<}M^z+Qc1en$Rc+A>
z#z-O9yd$mw+D3dm8xpAq<1CXR<9s$DFA4xk58#0@K_x{B!P93q0BIg^@co=nRj|%6
zndfA>{BJyeb_jr8yAh!sFY_fCEwsd?xWkzlU45au+N1w=un=H6o$_h#GfGOC92^|1
zb-P`HAh?ydEKB<RK2pj=HJi<?!C<i6@AuahaZs&RlQ@pIeglHqF?hg*ym0^k002ov
JPDHLkV1fx+D<}W}

diff --git a/src/_h5ai/client/icons/16x16/js.png b/src/_h5ai/client/icons/16x16/js.png
deleted file mode 100644
index af1a475ead21e02a00da6079b97013b454f69dd4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 540
zcmV+%0^|LOP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10hvieK~y-6m6EY*Q&AMgfA?}BmJ}m>LXe^jf;dH|C^!n;qNC{G
zU*O_k|A9_|*>teD30ZX)M2H24P>^R_UIv3uA>yFo;(h0y<4~)8rbct%Y~S}g=ey^+
z;c&PvB0W_-#{%WO&qD}z++Z-sTdh{R*=*vy|1YzuGM!GDOeSwajIo_%88OC179h(q
zilS(TloBbWh0Fl^z91r)*}?z-5y6*biJATGukZ0&tMF+AyW6;@SMZNo`2Gd>_`0Gk
z%aV{%s%~Il(P3)1S3PX`B<cDV?(;jWwgLyVheuHR2>_N(;fiOtn6R@~u@jvNKt%BS
zfM2bKec#(4t=}VEzKfL(_v9ArJg#UD2N-Ddr~*5E^w??ArQ2vYj(z(w1DJ{6cHd%p
z1UtG4ANsiG4?qQ7>tN@v%|xgG{EPdzmk+Vd4Xn0|bvL2AS-ssnfVR8X#hb9ys0io%
zgCHV%_Y47BS(}+M&nzPN5JHjXIWfjR9`o-VV<gXWLI_2u*XtYO@whh{jn4dY?18G)
eYU4(uvGD@}Pf#CWxrx#M0000<MNUMnLSTX_0P|h|

diff --git a/src/_h5ai/client/icons/16x16/json.png b/src/_h5ai/client/icons/16x16/json.png
deleted file mode 100644
index af1a475ead21e02a00da6079b97013b454f69dd4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 540
zcmV+%0^|LOP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10hvieK~y-6m6EY*Q&AMgfA?}BmJ}m>LXe^jf;dH|C^!n;qNC{G
zU*O_k|A9_|*>teD30ZX)M2H24P>^R_UIv3uA>yFo;(h0y<4~)8rbct%Y~S}g=ey^+
z;c&PvB0W_-#{%WO&qD}z++Z-sTdh{R*=*vy|1YzuGM!GDOeSwajIo_%88OC179h(q
zilS(TloBbWh0Fl^z91r)*}?z-5y6*biJATGukZ0&tMF+AyW6;@SMZNo`2Gd>_`0Gk
z%aV{%s%~Il(P3)1S3PX`B<cDV?(;jWwgLyVheuHR2>_N(;fiOtn6R@~u@jvNKt%BS
zfM2bKec#(4t=}VEzKfL(_v9ArJg#UD2N-Ddr~*5E^w??ArQ2vYj(z(w1DJ{6cHd%p
z1UtG4ANsiG4?qQ7>tN@v%|xgG{EPdzmk+Vd4Xn0|bvL2AS-ssnfVR8X#hb9ys0io%
zgCHV%_Y47BS(}+M&nzPN5JHjXIWfjR9`o-VV<gXWLI_2u*XtYO@whh{jn4dY?18G)
eYU4(uvGD@}Pf#CWxrx#M0000<MNUMnLSTX_0P|h|

diff --git a/src/_h5ai/client/icons/16x16/log.png b/src/_h5ai/client/icons/16x16/log.png
deleted file mode 100644
index 02f1b9acda482052ba61d8f8ab15d298e3327203..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 423
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf<Z~8yL>2?p
zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4<ivthz5Jr|+3#$m7#J8;JY5_^
zEPAI-G@NuuL8Ptz<JpLaB_4^{f|DXr@;91C<v(1R^EM*A>B5q)Tpu{1TMd&p8J-DX
z`2YRmgWSCBx6O^?f9?B!s7tXWz~#&4opI}5RoIxdA7*sw=zp;9{l^-+i=}t<EuYV_
zIsb4@bTGpwn|8xx3k8^*I94YxNLVDL9gz@k+?LD8u>7*-TSMa$)%!IrL^)^Ay;d5_
z%&_PC0)ayw1}yCpu1WPDSDt%ZBKY51&fMFFqO5oQ6<xQAD>QVejd4Hg?YCt@EDf7<
z0;fG)am(B>P^81Kj>VrVPW6}sL&FrIpi?LN=ZWm`VmlZ!J&m=Q<-mSjKc@G#9T{d8
z?8e3{f|5%`<`l0y?tR&keW^&ti3@f6?W42xzyFS1w=!Y-?VCEM&(&XMWxRMcnp+bX
Os0^O2elF{r5}E+}wx@^y

diff --git a/src/_h5ai/client/icons/16x16/makefile.png b/src/_h5ai/client/icons/16x16/makefile.png
deleted file mode 100644
index f99ea4c0ab059e1df4ce00e2f92375b874763bca..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 614
zcmV-s0-61ZP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10pm$TK~y-6m6F|RB0&&Fk3*}YGvKI*B8WlVC4vU8e1m<X&0FND
zy!Fl%1V#Kq%@E>%NRXMH?!6G37$NKyG<0=Wo$jxy62sx}mz45FDfPsEm}OZbA;j;*
zU@#axJUn#E<uaCK{Zq113g7oxE|-5q7>3<qu}Bz(H$ms~nfZJUK(pDzw(XnyVzJ0{
zI_-)$j)~(KfG`Z%Y&PWcc}}O3Irn`Z*L4YkfLg6aDwX1zC!~~UtpQlAR(yPXa5|lC
zUJHVNAP7uMtJMNPN{NV~$N)UgyG#CRp68kPD2fnq9HX`7d_HqL9#KjGkW412R4M?x
zzP=Jg5dg>Ik!&`LZQHjJCX<OF1C+~U3WWjyT5HzpH2{ahfglLz^?DZxSHSfrpIdeH
zl~Sgl0Et8bt@SP7@$r$}ZfA<M-ENJX{eExu`Fx&gwR#V*Z5!8hd4GR5bFf$}?uzKT
zF1BqOfOQ3Et?_*yrPR0U?d{FP-vL^!7LMakuh;QB&m?)CN4;LhaU2?r#tlG7DKGsL
zf>bI+yWIxBaU3J3TCI}JW+|0QrYlm)3qS}l9gRjmJDm>6WYTEOWHR*oedB-bP!vUs
z$76&LQ{gzy^K3SI8IQ+5z8%3YmQJT<xm@n~FXI?xXQ8|d$^ZZW07*qoM6N<$g186_
AXaE2J

diff --git a/src/_h5ai/client/icons/16x16/markdown.png b/src/_h5ai/client/icons/16x16/markdown.png
deleted file mode 100644
index 25c8373c61a921752a7e6a7177817212e9e5bfcf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 627
zcmV-(0*w8MP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10q{vgK~y-6jgw7o(_j#WA4eat6UX_f6Oq!8wh|O|Q6!MK0bOta
zR;;)Jq6_ZOYp~)9h(%a-0df~ePDN7)399o`yJ`HJd@K@D5JL4Ujb<~Nd0x$oa&&aG
zpCrj)=JfPovbjkbiL*22+uN29;<eIhwXChJt-U*{id<Vu)j%1I=!GGjPUl!eQM6~8
zCNtY6%I8xx$o6`eJ3H96y(j!2qWg0U=N?gR$lDJ+YNadycWWBood5vGjd*;o$ZoSh
z_S}Qw7(a**8AVdB8mJcq!u1MoUQ})*P_KrBRf7{nBH}nkN(r#aX(Xj2j$?!$#`GN*
z9FH(J<jc1!x=ZYV7gH_XqEXZ6IsuKE#%@zbbv!7#_+gC5Fz2>ukaG?EdWB~FW(&FL
z7~eF=Fh?Xwf|PO<Y4N3$BuRqsgNVN4k{L`0v=Q$=jaP+@s><iDlZB0{N_P<Q^ic(E
zFkx=Ei!CTi3wcjxS}*hRS^2MN`%nHQ$opfarh)ROh2Lmtb!{Px={p|6xn!Ch@$RF8
zSrlxTDnEuH02`*tgU0oh=ABCt-CJxyku%JaM!8yGQZMuBdHH`sS1N=q7bOiv&d3NM
zY|FBUmIsw4qBzE~EQAoY&~^Qw-EJSA^!xXNl;5b0M#%N`cBxc4_yuKO75A(Q8La>S
N002ovPDHLkV1h8F5N7}Y

diff --git a/src/_h5ai/client/icons/16x16/package.png b/src/_h5ai/client/icons/16x16/package.png
deleted file mode 100644
index fb1343ea1cdcc53df214f3180022c51a8c0ddd7b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 614
zcmV-s0-61ZP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10pm$TK~y-6m65$})Ib!4Kigxky$d9)*a#tn6e&TJkq|BKM6nfh
zIv#=dprE2mfrLbZ5`j=eBFO#$YtPu8xib{mB$)7*+ueI~zkB9P^y2yWi8gk(X`4c9
zi?a=4Th=!p5+#a=h!6sc_j@F1hDv)RX+|&WnSPNzRi+NRw??;%(P&5zi?c1_T5fJW
zB1#f~Q^2|-Q5h=Dh?11aWM0gs(_PiLP>hB*XqG3q#$ekT*VYsp+eC?CMWCD>qOzPc
z%Tc|8(QwG|=SiW&d&C+DfuAb`3;t}@)d&Hx2Js#x;x8=&c&mxx<kGwY5sxyu`n_&7
z#POd2fYB9dJ~_sR2j^jh5bz<a99#hWN((EuKEQl(jH=2d-%G>M!5b>mQke#AS|0bW
zkt7#@z1Q#P=P83cW6;mIv$aE2E>YqHS8G%ZYlDonK?XpU7aa#%cZcWK0bH#SCn#$j
zZLJaKI`2z+{SH7x2;QIfZLP7^p_~(JWAGx~gj7oP?JMPCM!A?F)^=pu7@QN76QQX!
z@(bYYtCxTMfu`0tk<$!ptuH(HN7=IsoCvxqiNe(Yx++f{M1=hhpQiWkZCodbqyJhK
zA2>W&5E1rOFOA1Xv+CK$FU#$#I7n4|Fv!*T2QPmrngA-j0ssI207*qoM6N<$g0#v9
AH2?qr

diff --git a/src/_h5ai/client/icons/16x16/pdf.png b/src/_h5ai/client/icons/16x16/pdf.png
deleted file mode 100644
index 7408d8d65d6c4be3394ce605d719ddade3b6691f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 799
zcmV+)1K|9LP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10-Q-iK~y-6b(7C)lxGmfKkvKG?)zq6V_0G^zOWjktq@Fv9!gOf
z5DDU;^rnA-7omk}JXBBwK|P2GdPv)YQIV2T6p6GaPa7zuX~e84E$%4^LYgXT_UF6r
z`^@ur*d!WA2Ie%wXJ)=L<IK#=3~Q}#7-I(6#_XFF?A)KYM~)$v&XBrr6F1jgR7#CF
zg+ig&+uJ*k&*xD}Z3&3)jFCF{Dan&boNzCx(<3Y`EwQ}3{6fWXJP?K<T5Gh{TLM~B
zlcX{o=sybhzf7aGCJaLs7Z(SVh+vG_u6yjOMUofKk?2SK@rPK?2Wzp`A|fcQHP+f~
z0r9U75mI<pZbO*gl-q1JQAv_)4X~Evw?{O87zJ11_8;1m7ex`}av4`duxl-?dt7)*
z<>WBQ+$<6&=z0Siw>IL9MuT#>jMln6f{7xe^bhjy-?Se8j1%l2dwrZ#-+t;7--7{p
z`xbXs5A}MTYPAZ`)}VahTVBUCGKYuAd~uZQ)mx<U`v5SNRU~N(T$`UG>K{ZzHpUPU
zl>O)cPOFAQEsW#h?g_EhVvHeP`43rJQ0@0=_@sZ6OrGbVn#aFHPMpA4LvsHPtEaw#
z%h#~oJ+QC<YXIl@Gd$13^E{#`!uNd~$3X=_KrWYSSN-}d$&n#y-<@OUPmhowpt25_
z{fkb~7!?5E`#xH0T&*>Z<KVh3N+~)%`<%?-A!O<?{=Pm$Km>H7MfKhUQ52C*r?J+)
z2dv-1x_6%WhRTEcxZS%jDuWmh1C_fI#I-8vbebed+5n~0%VM!e9LE~~vRUZdiL9=|
z?r;MTul!H_;zhL96pKZaQZH2y1m{bo(vA7~`Hw$TxUMaku~8aMisZvrnVKRihTQOQ
dsjI8&{5#5Ng9j%04W0l1002ovPDHLkV1ll-ZH52<

diff --git a/src/_h5ai/client/icons/16x16/php.png b/src/_h5ai/client/icons/16x16/php.png
deleted file mode 100644
index 22c4df637f8429fb781e167889714665886b027b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 757
zcmV<R0t)?!P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10&+=2K~y-6m6K0MR8bVhf4;fHIF2UzQnQ3Cs1~6Rr4`j8C<fXD
zE~15-Hnophw5yh3ErK8-ArNZgxJZHqiD0JakEP6O)EYyEvTPh1|I9qcx$nMrTMQ-=
zg&jDH!^d|x=ljm77#<!zsg&yRJg=Sq2*WTeA;hJMSS)6>wzjr4H8o)v#)inA=aI=|
zNT<^ugp{()G)<(G|1$ulX_88%+Jx)6xUTyfn910rzbulsOW3v~Z<i=Z7sF?8X#ZCB
z?rs2Jl_!)^Xss#O4#|l*=5otSXKj4K$F3bF-*U6$3zE``!^neSs;m55yl|Mt%^{Rh
z2*+`-mmL!0SulJAYk~v|ik9XYPM_Sv=-3SLw_jN*lsI~D2c;EBU;hZ_&hE!?9Ee0B
zx_>aC9}j)ffCh9p9M-Q#r~g^s>3yyvk%%^wQcQneqPXG!Fq{2JG#aI4%O(JRWaih^
zt9URdP)cDarN}K7aXk${V}nUJ947s30RYD<TdP@*f1dhL)<7u*XdI~kcs)AJP<)F1
zC*$-DB)Io*gua0U@2r{M_+T`_a(*7ATq=5dd-dTXC%Aq8Eu9B;@_u}le4+G*?={r{
zI@+6wzxqh_`xkCpJ;Tcv&&m^Qt`Bm)dmlIN#<7=6_$#Y0gdfA_2Q;oDDJ;zKXl#^F
zD8ThAUDVfAt*xN7W?OR&x2~Nc_9o5KXA|UdS&GF1p65|n8KAzdn(nUS9O>9u)<o;I
z29Dz(gaF`J=XQ>DZvX2EYh4yoDOGks2$8ZZ3n?X9>kXxp63em>LZn0}6uLY)IoXp;
nCU<S@jmi-S1SV^1YcKx-9W{Iqc;d1M00000NkvXXu0mjfGe1r$

diff --git a/src/_h5ai/client/icons/16x16/playlist.png b/src/_h5ai/client/icons/16x16/playlist.png
deleted file mode 100644
index 8d6f281aa58d3b6d4dcc41cecdc10916e485aeea..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 610
zcmV-o0-gPdP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10pCePK~y-6jg!x76G0Tmznf0kO{EDnn0BMVp9c{o_$Szl^x&VM
z2eDr2rC{(P6hTj(M7#?Xyoq=fyosk4yGk`JRM?H(VC#?UZp!S;8=r@m(k7|ygMnfA
z%!luL%vg`#H0D>spAW*e%-3t9$XdBv&J#l1wyr;YyJHth`IE<7%wHVKbeV_{1OZyD
z)(7El#rgBqvsn2?kWyw&P^nbl`~C%?HDNPm7zUVm9~7mGX4~M)mcn`{@yYMN+lcY*
z{y8u+j4=>eX-NGWz@Xsfi(g2h6mcYxL@AQEyYF#C1VM_RH4haeQHm4ejH9lD>ck<O
zK4RnY-IZNVYYm~afuiApIFfjDqdL%kk2A(VkS6E@1WA+*obBbhEoco*!)K7h83g(t
z33>y2ztO?1XI~Mt3CLOf3Cuph=P<>cm)lqiC6YvenNfe<M8g^b4qKS)6Xb{piWrI*
z%#4Ls+gR?5;Jf3X?2dz(aivy3AxdyuCU|nq1#_4En}DGAyn{=pMzQqz2c{eg53f#v
znK3t0#@tN#pdk`es$q=?Ff(SSOPHN54Z!_HMBNr9Ckk>W_z0D%-Dv+?N-21r2O-3o
wsGV`|EjOAAn@g+C;$rsiY}@vFu~@AC0VdIO3`JCdIsgCw07*qoM6N<$f{kDgMF0Q*

diff --git a/src/_h5ai/client/icons/16x16/png.png b/src/_h5ai/client/icons/16x16/png.png
deleted file mode 100644
index 1fe1ec4ef1c8fd7ab601f5e00cfa02a39db0fca7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 679
zcmV;Y0$BZtP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10whU9K~y-6m6E|u6Hyd~zjNnKI|HQ^MkE*$P{Ei8#FblDK8bH&
zNPG#Nz!z}iOBmw91QLUd#<Yn7hS)+arPJxm+<WJ`(1e|#Xa9fs@}FN04h~+FWx40Q
z-(iLmk)v9zwk!Ml`$ubQYuhU;D=4LI6t1d@Ua!aT@$qL}mgRPmB$Q=2ivUTI(CKux
zwY8S_AKJWn{SKlUqBY)>P?Y%G;*G@{2NuK$cmd$e+m~2t(bigiUtY42tP{l%PAM*@
z6N>2-^|=g;qsRhW86Zv}UJwy32Pxs4MH^$7XP&3GR*C8%rt(bcA$cRmx(sC%&c%#|
zbHu(yE2^VJh`c5@=C8p5A<v&ZB>j;=q!^BKrY<Be1@C}p0n=JUXUi<bF|{}#mXOq1
zv~!NS1gLXi{qZV;vy?{CqKZAE-h_B*k=|)Vy}5`EZ*%WK1MP*%r?|?YthL}hRN#sV
z@j~<NBI92Lc^)%7cf_q_f^Z%}AxkZTvnd{bU7`ysdKV)`<BZZeh9@aw=NaVzS_{QA
zCC!9ZEu(RvQ6lWHa1AIz$G3i;NQaopag`VJCzh!Z1dp*LFyNE{VW0>^*x=DMVB!l7
zf1Xg+0j{bT<pmS-|6vvO{xu+3Y4Ww-oo$JC7U&QEec{RWI-kDp%>)>a$F#qEL@T8_
zhlhuoTU%R%VR)mkF@|=#jZ&(k8;!<px7*!ox7(Yu7(`LjX*Qd?e*m-dEr8H5R0041
N002ovPDHLkV1m-XDun<5

diff --git a/src/_h5ai/client/icons/16x16/pres.png b/src/_h5ai/client/icons/16x16/pres.png
deleted file mode 100644
index db195e923b3c81a018d698a75584e2ff0502f945..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 629
zcmV-*0*d{KP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10rE*iK~y-6jgw7lQ$ZAlpSgEp8mMH^-YRLkF#(|^RS_Ys6p9;N
z3f=n?1O*p@xTqj*#g&M^z@-Xq#D!ICE!wQoA~k7jAXaImTD<4XxTyCgmlo^5f%$yj
z=bV`_%TH#n{#dQg?tE((0L-PkIOjO11wru9T6@jByEpT5c+eJ(jvpfkE#ZZmc<=vt
zSVU;GT68*{CA-~SEliG1!j}b{Q(PP)A_o$bN+p`jX4R@F!B!ib0^q#Id(Yh58~{-i
z(d~BAgHaSwsZ{XZqpDcv6r;b>4gRk{tyW9t%H?v#JxNhSup*ke_Y177tfbEU6bS)9
z9LHFvit)O~p<FI!ocsF;fvOUSQ}De=2=<Ho`h85?O~)dFb)uMkQouQa#w)_5=lH|J
z_;WMl*PfF5`i8BEM_?=>vX>wcF^$*QXAdxIpKv1+*zQ}*<|g4r3;TV(N1*C5HAo1;
z#TR%rySa{6k)ct3ja}|9R3fndEvN(pu?4_Bys^6$jS*kDlkOD}f`lN6L_|+a<Hck`
zr=~MSO$j6xa-qo*96y7<=m-{GVnlGK&*P@fW*(7<U<Zee>@2o722Pa@kqb@l7K}lw
zHMH7$kxA}x98<5?vDP;1Naf`1&yDxDKFqHV0Bq+U|JP^A=kv?OV)6PP+-q|zm%SuV
P00000NkvXXu0mjfeHs}(

diff --git a/src/_h5ai/client/icons/16x16/ps.png b/src/_h5ai/client/icons/16x16/ps.png
deleted file mode 100644
index 05f3ed9304ce3fc8c17598ab5f328709335ec0d9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 817
zcmV-11J3-3P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10<K9!K~y-6b(29%6ImF?f9<^KPzT!vEU*~ZDI3%XEFO0E;*uan
zBa%Ipi?>Zkc9T7L^J0jJ2X1;aTsU|pUbuSPJ!~Q-CZs4^HlUy}Y9sA*>U7?F)3=94
z8dvy|cX`S8`@ir1zJFqUef^5o`d+Km`o19zq2k!ebR|expp;^HdAYH_zrP~FFud=1
z-b8<YKP>}WuWQEwTt`qCILXq|5?X7wSS<b`q?8lAy}d{&0q}zm6}OHAm~Mxytv7^W
zNTpI?a&mG+#Bod<#{j6f#Yex1IilINl6*6i<?fva?CtF_J3C7hMI^P>7-KNTP^mSk
zH6;H3PNS)q@Nzu)`!8l@X4u@^WPX00Fbok&DU4}r?!2v2ZA4!wUz!{sleSn}TO*xL
zGdDMf)*2}#B93E>F-X<o*}s)9=6AaU*MB%oKHJ6W>MDzii;Rtpv9hv)QVPqmIwL&a
zJK#etq#8t2g9t|?ng7}2RK~#=!}`;w6pKZsr>7|t3ZzmgfDYi@!6&Nqh-y7T>zEst
zMmU)k7-J}x%Y2)D2}l+e7O-ubo}M1G)`-u5gL*_YXaaEgLIKyY4!ub=UU2oi#rwb`
zm&-9cJdD;F-}gH&m>TaV2qg#gCds5Z{F#>eM8>=(nHl9;@ee%D!}onEl?qbI4xlgB
z#qZb8VI>nh`g4~sYTwtMucE>RRX=2KaFAN9hVT1_0$=RG)WiVGH!t$j**p&)modiR
zzj?+#FSdB+P7wqFmSxf1-Az89$F}XZ2TCb~5beO6u=(}sD2=A(<?arzc6M=pyv=t#
zy|}JRUtb>pTI;rnLWuIl#>ScP@o{Y1KHPy5j>XXF0fv5iL?V&s<iQw}Qj|(1gb-!n
vy6&y*?d^M|Qfc(q7#>lM<7{WM*<1esGdqMkk@_0b00000NkvXXu0mjf__%gE

diff --git a/src/_h5ai/client/icons/16x16/psd.png b/src/_h5ai/client/icons/16x16/psd.png
deleted file mode 100644
index 62718ee28131465e8562c8de6536015ceecdbe69..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 622
zcmV-!0+IcRP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10qaRbK~y-6m6E?}Q&AMhKkwx>!K5aQ&k_}_K`bH?6}qSh{s0H*
zAWp7|bQLPL;NU+X#Z7T=sJa*jM{yBiDmtW4c#VSz#h?g@p_Q~s>izMqgCw;vDdr1j
zI2_LBe$TnbDHIA9wAM305FDisxvuLAA#OSOeBMu|)0tE%h3mTi)f@x?wOWlzrLrib
zlo`+SkW%(z0MGL%l}Z_5jKLTKz>~MD0EC6Zu0)8F2e%O!aJm9oeL`!EwHAQc+%m~n
zh(y$-QdbPe1rM+9W+)o!3ej5QDy6X2Vy(q!#aMcPM-zLvc`-?KrOE5XwRXKTlu`&|
zOxuChidOCox@fIfmzwAAmdU>Vj?w{VkHncAPqoL`G=kBZ&-EscbKiKi(7>^V6QfbC
z-CyGLq3w*1C0SR&Uk~a|fa2qqH5xyDvCoTe`|=3;cZS)U4Dsf}3OfcJuAWP64LEbm
z<Ia_Idr{U}9!wnIX|Bq%xf%;g4Q6i~?hepeVS<euzyy|;^L5T=hWJ$dNuj*Dg#)v(
z#Fm1<lAZg?-4{)U<6$N*jr0c0-#gW|-BQSf?DX+X|Njp_DTNTC>#_8b*80yO2_Z_p
z?<1w`c`%(JrNsArgb*bWi^ZnO<?>9iSRC!gK_n6>ClZON-;8W$u&VD`_y7O^07*qo
IM6N<$g325ja{vGU

diff --git a/src/_h5ai/client/icons/16x16/py.png b/src/_h5ai/client/icons/16x16/py.png
deleted file mode 100644
index 0aaffd184f9232cfc840f813b64853a1357930e3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 743
zcmV<D0vP>?P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10%S=<K~y-6m6N?|Q&Aj-pL_1Px%p_?*q|v`F;cA{ZABbJL^pBp
z3mn}9E3SeaT-;p5$=QFvf56GXRw_cJmNZnGDAtM}t<{(&y~#c2+<P1}7p057^YcFZ
z-r?uW&CQ)Q#@vhJc!K|k5TYWbyy?u$%v8$d@_4CKLJ09s<v5O6TU%pgWo1z+rN)cJ
zB1)+Qc=Y@g&lca}3V~7@trgcUo@8|IP{I_8MQXL$xQL>ND2lMwVy&go3Yf2d=G2jc
zWby?ZzmN3*?mv8-FxFanJ!y==S_?q4-C=I&9h*VObY+!Rr;Co@N1(AzC*gWA#vrxU
zSZjIm@(r`EztHSNY<6RUMw3oAL^&R<uAx5_627<&xQNjk$ovReYeet->BUtl8xBhw
z5g%HDugarE78MDy=?odRC=~XvGh867-c4pC6N1p7;ta0z@LWsO_=Jzbb0F)6TpE3k
z7iAz)5H+yY{+iGeXr;h$Ncldc#yq#qykjWW#_BF9*Cp=@Xe>h%5XWp6q=m+}7Q#&~
zPrT>QNFLhjpgW-2u+;+H1>q5DkIZj@=n1Z#JI;RRBRjeu*wxntvy64NXtp-^vDKoX
zeZGk@tE!A0I=lUX;nE<tCoce?mu4Z;2Qr1HBVr?Hd{+d6SLmNOLB{XjF8DJ#&O<JX
zV*;}20&C5q#KBYgb|1q{<r6*;XswY_CIWYOl3L{f(zC=?V$=d+$9dA}!e3=$3{py2
zt5hnZV`F1@o(F);@1y_loo!FlD{HN(R;x%UYciM1P1Wo5d(~?7z(2j>@A$r79~c;z
Z`Uxh$hCuM3=j;Fg002ovPDHLkV1h=!S8@OV

diff --git a/src/_h5ai/client/icons/16x16/rar.png b/src/_h5ai/client/icons/16x16/rar.png
deleted file mode 100644
index 8a0ff54f4eb81cd34ea804e3388abe1b7352046a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 621
zcmV-z0+RiSP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10qRLaK~y-6m61PdQ&AX)pL=qWLaH<gw#JHRGQ>Y6r3(E9x@HK7
zpsr35a8PjUC}_ugf#M=ahr}=8q(m)6B}s=S=?yeZ@#da$?#YcqBtw%*`@-Rc1Hb3@
z!0T+i`1ruu(L0=Ql^G+X!>jktDHe+WY;SM#_Gy_gaB5OIFQw=Co9Qc;^VhT2h)6jN
zhzX(}qLfM{0IJn0ch}db?>1LE?SoA@@cn!up5kElh*3D20z~6uXfm0c{B?i#NyJms
z{bpVor8(|+Gs6H*biB*uGPPO_fItU$hXF=ugi;FSX|!)<z96swNGaLa*cbx>i}Ex|
zDWp~kqx8&nfLIU#pin4KsZ;<M2IF?E6hiCS%_j{il?sJIVPc?tgVqMAwZSNJs)4n3
z%D`HSQU3s;7^43JPy<bFab?n;TU<d6G+G%#F+_$D3lY$NW<z@WeIDO_M)cnJoPlrY
z?e`H<5JoJrJ8<3gn{!Lc$)!^*PR_#BiyZg*bicT+Y^9t0__<RzM>czA0uW2cdMn+$
zAYJRR_wZXbwU9bbo_7B*>wfZFDZJe1``32E8-3242Qcqs8^X)Qr7|(K+`pf>mAQiu
zku!zEa7d@IlWCb>d(Ne`Cyz$PdlQEG#(4~cm}@$*`PY8|;3*p*@h`O500000NkvXX
Hu0mjf^CuH?

diff --git a/src/_h5ai/client/icons/16x16/rb.png b/src/_h5ai/client/icons/16x16/rb.png
deleted file mode 100644
index c7db42fcb4a9d0004072bd3c84d53a62f5373868..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 781
zcmV+o1M>WdP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10*XmQK~y-6m6J<rlUo#qpS`nl(S*j3+E^?aFRh@~i6AP1qIftQ
zCxURMB2;kXrC2DU0}(~A>Ok=a2u>Xcf;dpfL^KG;7}O>OTMmt;)oN@m&9}e(EeF*?
z>7=gl`#h|7!BY8r{;==+BS8@C;15P?T`<O+SGioSkj-ZMGnoup>t(?~5KygF86O{i
zYdp{EPp8v(p0_BZM5sM{fP4Fzjst%&cJD5q#>#wdS$1B#!IoqHQYw}DjdKp?+#=Yo
z{Li~H1GN8p$;yys?n9B(iPO9vJdNLM@#6Lfn~xsDIfwCm9}!uAXP!Ob&DjBH)Cmb7
z0i7HAm>n5r<N6Gvb)jJlB7*PxXlpGZf{0+N74qi>XgBNlfKy--Nmd>_LS>@Lm(da(
zwJBCaWAk}yG0wU94MfPDJ4LHeCk&tffvwl?P<ry1uU2SV$E;T)WXBN^oO9^k6=t44
z<wGvVtPd7&K=$}aRQ?h1ph3g>cqjs`>0Y~jp~Auq5*oI2rWpP5jo9ig_FlNm=Ns23
zfB%l8(s)YKRv{u7V(Ii!K{S<Q_r)vpPEV8ExtsjZSxjpVX*Q8&lW_N1Q~+*jl2mtQ
zso>4cTWs31jr8;cllP0vj+L+qycKa`ot=cdfac66lvb?DtX?Xp6pPGFRaxiHP}OU&
z2!g`3TKt%-uuejV(bTX+I}%F;Dv_Y_aRL$@)V{taKxm_hiDILPkcfuqi-mbN*PtzK
zvA|kO@8B@6u3n<ilSL~<q#h<531gxWexz2RySj+<^ssAlFQI+=vDVHDj4`D`q0qPe
z&|!}L{m-(V$y!UHP{0^dGVyqPs9Y|O6pO{)WzoMT8jY5d$>h*a2>*Vc6V*ch00000
LNkvXXu0mjfEw5?t

diff --git a/src/_h5ai/client/icons/16x16/readme.png b/src/_h5ai/client/icons/16x16/readme.png
deleted file mode 100644
index 3ae48cd0f2bc062c5a7440855f857300a6a3016a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 384
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf<Z~8yL>2?p
zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4<ivthz5Jr|+3#$mfQtTlx;Tbd
z^qvh^-PhtEux4&alY@d=f}y%4f1R*MeDQDb-=-Wqe2oXsE<BL%vvuaYheuk^zH3u#
z-|eUM^2_3&(CPc$uRl{$ey;YB3#X!pU~TNJZK0l%mK4f3b9`K${#<5S>Oq_H_m^z-
zTRP=J)O<k(P1R$CJ}0BNv)`^vXSngNW9G(nuiph;FJ)-3IbZ($43E*V3eIgi^YeQc
zBeVCiM^2L!l8IWe>ea>RsV}!Gm^GD)xPDAZ<v;T#{DaNs$RF}7_jqP4tCYD`T05uF
zkj>@Gp?@-u=5eL{3w3Z=9K;osoqy~7g(zoDRwXG-p2N3Ie7`43*p>BGX>l}Zb}hQi
Zuj(nc_WMVsJYYaDc)I$ztaD0e0s!<Gn5h5&

diff --git a/src/_h5ai/client/icons/16x16/rpm.png b/src/_h5ai/client/icons/16x16/rpm.png
deleted file mode 100644
index 64699ac0c7120a604b6483d9ad619b7b5c55c2c3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 660
zcmV;F0&D$=P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10uf0>K~y-6m61P4TTv9oe|f#{CLzTKP5p;fBGOT(PPUtAJ2>bN
z3hkEBRqEv6ltqMgNmt2|cCd5{S^E$&1QlMK5(q+Yu)LvANa%a_<#Z@{G+Imj;BXI|
zd%o{G=OmiV=5u4r!EiWS;SR7Y%Tr3dO}MV><#M^@>FH@K%lfb8;c&>+)fE>P7cCV8
z!E!d6B?yAM7$BR?(r&kxRTM=;Q8ZTUcDuN)OTXV|<m}1H3XhhS;y<H4WsE^Y05~~0
zp;Ri7&*v!?i=@+O00x5r{jV<HKYk+f<~3?@5ddQhDhxwJgjTD?#>NJRhlk|zd4QNW
zl}eF%`GTMKGkhz&;=%iOB%eJc3`49aiVzXDwzf#8)2ywnAtHYby}HW1xjBB6KOiFG
zBUGzZ=I7^Q)!Xp!%V%UTKtz6zFe2F7+XG;Gdz=0JeR8=R>+9>x%*;?Km6)BK<?`~9
zg@pwYi3Gd5yBK4jQmKgV`vOS4UXSxyttMJ)IXXI$$;nA+G#a9{mebQy0mS!xsZ=Ur
z{dt9{si`<WK0ao1bCZdQiLr%_aASmCuZPwe5us2hP%IX490w8M?CcENw&`}e*tSit
z*SkrewT_v~<?@)SZQEn-NGK)<!w{v^KevA!#u$t-SW2n3=XnG{aO?fAM-T*fo`+JZ
utumR+PN&m3I6pssd>04FWU}Kp&dx7k_+PkE38Rt#0000<MNUMnLSTZpjVLGp

diff --git a/src/_h5ai/client/icons/16x16/rss.png b/src/_h5ai/client/icons/16x16/rss.png
deleted file mode 100644
index a1130a1035d5a1915ad0ad36270b427c43905208..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 660
zcmV;F0&D$=P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10uf0>K~y-6m6Fd(R8bViKli=+9K~p$CrwGBiz2B;A=<RCERc|>
zD2rO=-%z@!MO2Fn%&=9f7PjdJQuKomLdc4sp&z_)H3MeaqFL6W8Q;C{o))Gsj6!qZ
zY!2sq&i8xnRk>WQ&ssa`oa>^F@H{WlT3=K%Gc!>~M@Kf3$>4e3e+@h5D3wag&(G&|
z9LL!(42k2o9sz`5NTE>3>Lf`>k^}(z_%JHmjcVD0YRRHn_XBE8z{;Gq)*>Ry#a|`(
zRf4%`0MwR!=$`ASjcsc}thIQ?7(@gSL7#n%-#dodbsh;ekt}{>>Cp*nG=Yd)?ORD>
z3|^8Xs|A~XfZ*eG528;$fo+Fy<udV`8`!V+YXCJC;tzM1wFONCJ;Mb3cd(!CVcy+h
z>FsSA+Yh4BZPgZ503w1ua2ap=QCy|M($p0yFD~Hk9YnSF;>v%hyt-6nr3T=4pCjlW
zA$4W~Y21v-zr=ibNYHl;X$Z03a@e`|>jO+-n)1_Oq+tUM$H#DqM`daRaf07@3}*!U
zBdP*a-JtyZD)Rd$k_e3_Z{qLl$3)Mt3!hP2vpD0hixI)U{@NRKor0zee&-QH1l8KT
zymcYMYwf}r!F<nGDNy6%<1#QXfY!RMuWYSla&i(+Yh8$<h&YaG-g&)@<CrLl&{`LC
ub93`hu~;0Pot@oLkAhSxRZOSTLw^Bf<Awv^Wvcf80000<MNUMnLSTY_XeqS-

diff --git a/src/_h5ai/client/icons/16x16/rtf.png b/src/_h5ai/client/icons/16x16/rtf.png
deleted file mode 100644
index 25c8373c61a921752a7e6a7177817212e9e5bfcf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 627
zcmV-(0*w8MP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10q{vgK~y-6jgw7o(_j#WA4eat6UX_f6Oq!8wh|O|Q6!MK0bOta
zR;;)Jq6_ZOYp~)9h(%a-0df~ePDN7)399o`yJ`HJd@K@D5JL4Ujb<~Nd0x$oa&&aG
zpCrj)=JfPovbjkbiL*22+uN29;<eIhwXChJt-U*{id<Vu)j%1I=!GGjPUl!eQM6~8
zCNtY6%I8xx$o6`eJ3H96y(j!2qWg0U=N?gR$lDJ+YNadycWWBood5vGjd*;o$ZoSh
z_S}Qw7(a**8AVdB8mJcq!u1MoUQ})*P_KrBRf7{nBH}nkN(r#aX(Xj2j$?!$#`GN*
z9FH(J<jc1!x=ZYV7gH_XqEXZ6IsuKE#%@zbbv!7#_+gC5Fz2>ukaG?EdWB~FW(&FL
z7~eF=Fh?Xwf|PO<Y4N3$BuRqsgNVN4k{L`0v=Q$=jaP+@s><iDlZB0{N_P<Q^ic(E
zFkx=Ei!CTi3wcjxS}*hRS^2MN`%nHQ$opfarh)ROh2Lmtb!{Px={p|6xn!Ch@$RF8
zSrlxTDnEuH02`*tgU0oh=ABCt-CJxyku%JaM!8yGQZMuBdHH`sS1N=q7bOiv&d3NM
zY|FBUmIsw4qBzE~EQAoY&~^Qw-EJSA^!xXNl;5b0M#%N`cBxc4_yuKO75A(Q8La>S
N002ovPDHLkV1h8F5N7}Y

diff --git a/src/_h5ai/client/icons/16x16/script.png b/src/_h5ai/client/icons/16x16/script.png
deleted file mode 100644
index 1099b5fe5b173d0c312ad7022c892e7773784a18..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 613
zcmV-r0-F7aP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10pdwSK~y-6m6E+{Q(+XwfA@XQ{Rk=PaK(}>i!L@rbgBeekXZkP
zVE%(r6#J2GBCegKgsKz~ahFa)xm_HhOOh!8>Doo@PzlNVzSkjN9eWR)<-qx!=R7=K
ztJSI+V-B2iD`Y68R9i%LytA{jcBxb<FD)&hl)BNfbB>FP3(n8aJ2D&&%W)ht91gPx
zAdX{ty<S<YwbW`gk|fClSX*0Tb8{1AjLEzVkR%Dl7}RJqnhgtuLMF&)G(uTxXM;|s
zL!;54P$=Me3avC+3!;5Q`)Dm_rSZJ6+1A?e3)8AUtFyZLh<3Zfeq*0o@ol0YM-)yv
z$PorPq97s+B8)MJF$SeHqJ<x=pVVu0ww`a%*x#dAEb{u*8$3J!Qc}`1#W{yd?Hu4s
zfM}sosj$8ClJZKKqvku_9~~0~IhX(-#iecxaMu8$1reX)k01E_=?mL0_PG3WiBdus
z<nX+Sg6VZ<u-5?qqJ+om8~pu!iHP9)A<6e|EG*<_9<4rDA78c_Gq{=qsvA{KzMk;!
z*A;5wyjGg~_a35@o<)2r-8##Yr`0*&@bE2B6lKc5U@)NBY$77kJ3T$UyS%)N@B23n
zP`BGfM0%3X=Xd-4{z13fy^}>j7>51D#l_wKj`-jB7Uotb00000NkvXXu0mjf53dke

diff --git a/src/_h5ai/client/icons/16x16/source.png b/src/_h5ai/client/icons/16x16/source.png
deleted file mode 100644
index 5bef920766b333d4917efaf794b054b46632771c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 586
zcmV-Q0=4~#P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10mn&1K~y-6osltXT2T~$zxQ||M2N#1q@9!yiACcZGANi<T3Q5=
zkfFt;q(8x-wzNMX1~NI94AR&P5wd70MXcc9BKAS44%(>*9Rs1h``+!4`b3(7@xbNY
z%Q@%cJNGKxZuhYe;>dBFZEg{&s`fQad#SWqt$r{Vj0FM#R8?K7*>M~ulL_PT_^URZ
zPGh>R^XTM+UBlo@ug9)o@HP_R*ZVAY?>zuu8h^C_(RH1{U=ULpjfPAnlee*Vqtof2
z2_cYDl07{oWf-)3JyM3jo2@Op{SrUFwYU?x55Vv3;sQVjfl{m0WICN*$)MS6qS>~M
zlyW72ZQJt^a%X1%q~dX2hr?LUE!MN^T;;FGeav0wHdC~RZ7!Z%%txqHDl(JFtYlEH
z*XIU>LX|{f2Y`HjgF>MSKq9e2KEH7zKnO7h93MY(6F1%e2T*5#*|HC8>;s#%>Y96&
zQnL4HkHhidLhXXVER=T&0GC{%JXKtS^M~jE*tiCkWw}(}2OrK0XJMC8vj2IX(vOl`
zXIa+uFO<vW@1amA9F0ctcsxtJzGYdMrpahD8fZSBuQ(hIk4)3tT&nwTc)i}C-|sK}
Y0gYY+-^ZXOod5s;07*qoM6N<$f=^8ZdH?_b

diff --git a/src/_h5ai/client/icons/16x16/sql.png b/src/_h5ai/client/icons/16x16/sql.png
deleted file mode 100644
index b3b1467bf98bd154dc51b007806acb26795f3110..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 510
zcmV<a0RjGrP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10eeYAK~y-6oszwd;y@6DYsT%djgyfhJ0K)MVqbvx-spnMPMhzu
zkRy?RL`1gx1js_R69|xhrag=|0`2K`b?d9VO7&H@I2;Z?oO3VExhIT}l=4+d`BUt6
zyVo>L7t`q!MD#7QwHA4vqb$oeGR7>@GzBw*nZMm2O;a3?#|1GnthE@1VGIF;5MX8y
zGo$bOQRcgt8RVRUwf4UPoO2)m@H}r6KL9AD002}~6|~j}f?!mDF$Pstf$F-(>2yMt
zWiZA(aHN!f)dc_|LJ$NfiUM_AgOVh{^?F5FmbhQ!Uja%f#Bq!yNkEs&1@rkFzVDAh
z==&a<%?8xAE%H1^mSyO=?r~Bf#2<$HpZLCyFbq)?1=_X+X{{d!A2;|)_YLAWhSnO?
zG!166877m-D1@eIuwJi0Q51FC?KWI4m$24?nK2B*rwBp_D5XF|*zfm<qNo$A)#}&z
zeE!{aUC7M1-EMHseHtL8gy(rsN+ArxE=iK-chAYpe1jS0@c;k-07*qoM6N<$f+lg*
AtpET3

diff --git a/src/_h5ai/client/icons/16x16/tar.png b/src/_h5ai/client/icons/16x16/tar.png
deleted file mode 100644
index bab3b6ad861ad869683a74723f11c37a07820ec3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 406
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf<Z~8yL>2?p
zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4<ivthz5Jr|+3#$m7#J9ZJzX3_
zEPCfoGR!*cAmF<H+UlcPIn9Djt}F-l7BOD8bk>`s<ldpUT_~D+&Ml2Y>tar<i9In(
zc5P6{l5elRzyHXlrg8ey)Q){^i4~2<n-p$nFTKaS_N$%eB%9MlXVNyeKiK!a&_=G%
zZvOt%+uJH<EmKgM&#)x3YuCEslV@K1zQ_Gf+Spm>VhW?6V_7VF+B}sPyZA0eS?@d$
z#eMQj!8u<c1LGydd7n7X?F<xXQ+)S*x46yx^X`p?Y+jm23g4*ih+A)P%z;a>z(S^A
z_uV}#-A9?6IzIB7&E}nUdTF_1ph&V~XsE%l3eK?ASL+YHEZS+4yFI!k@rOXp+SY4Q
yE+t%LyYEI{HkqG$+wQlBOW>EyaqI2t7#)vK+t0cw<25i089ZJ6T-G@yGywqaxuc5!

diff --git a/src/_h5ai/client/icons/16x16/tex.png b/src/_h5ai/client/icons/16x16/tex.png
deleted file mode 100644
index 1487b253863859568538f1edba54dcb97e424039..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 677
zcmV;W0$TlvP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10wPI7K~y-6m6I_`BT*EEznQrciv%r#Mo5!{S<{%s^rlFW;2%h(
z!CtUXR>&_93$f8ou+raPpEihLl!RnVkbp=UZGytgo4hS{6E_Hp9=OHh-E-c#ocoMM
zqft^y9goN3pL_$RX}Tiv%c$4uZYq_^B@zit)BF;7JRUO~4tachyc6H|bMbf_-}k>`
zfOtGkx7*E07>0yl_$@NPgeOWVE-o&3dwU}cLn4s~@9*zyZEdl*xClVKUgzfKhH|+~
zI-TbH{G4nyODq<{41$2+aLCTi4xLViN~MD1I6OZ;qqRnBO`%Z0vMgGy7O$_b*tSiv
zSR@DnBn(3~Ha5^&1E95LWo3o4vokW83?f3i-DYoZkHf=5dc7X|`}>H<#|XJxZu*+m
z8pm-+CX<v(C6<<!@H~%~mlq0!0=Kuf7>0q?8l@DbQff+^IG9wc)#CK@lzcvqX_~}h
zF;-VsxxBob3dls@;o*VNXhgHwq*yEhAR<_nh3mRpU0rc>bcEKLYPCutk(d<#*xlWo
zapO1+>+9=uIvrA}6oz47Sr)Zg4Z|=P3<e(pnM`Jy@zc{2y<U&&>ucuc=V>$=Y;SL4
zSr!0mYij`X`~6u56D%(;b8>PrJ#TJqV%zqozUc@-5FjEmm$q$x+P;4Ulv00E5RtCy
zy7<07lfeJV_kCQ~MMSz1jYbbV&pW=qzyI;2Pw*FWb93Ip!otCC_u5Q_pbG<S00000
LNkvXXu0mjfP|YdO

diff --git a/src/_h5ai/client/icons/16x16/text.png b/src/_h5ai/client/icons/16x16/text.png
deleted file mode 100644
index 1d48677c65ee9c3c3237780ad1dc32fcde4f0ad9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 463
zcmV;=0WkiFP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10Zd6mK~y-6m5@D(!ax+qe})GZ78X$?Q)n!<bZfQWO3=%!x9~6u
zp1?v2yR22xSSf-hn2%(eP1tPWq7Q}{hX3bl9FNBjYwapc(|2AN&+{S?`E2ZVyC@99
zQLop-^Sr0XX_|7o-8i4mU!t`h`M!_V`jr6qzE2#-BXQ2*oO_83kn_Y^OO|B-tk-M0
z-EIL=N^!YdN^hkU!{HDBYb|1oDFhaaMa3x$!^%6y8)FdXT=B8lYygTBN-2QCIZrd4
zPKz3)3iJ8Aw(nptDBU^UT3Z&_@AoCAN4v<YR0JlINy(`$#lHy-heL^Uzuy7qbUFY8
zK>+YL!FW8b-ND~^m|(lzR@|=FD?t#{)+z*yF^CAW*{lNU_xmN+-(+hoo`}Rz6rr^y
z%d)4A)|x1a5Rq6~t=2M0lGW*SdV6XCKhtbBlXknk{07ed_tgh+a3uf$002ovPDHLk
FV1o4Y#MS@+

diff --git a/src/_h5ai/client/icons/16x16/tiff.png b/src/_h5ai/client/icons/16x16/tiff.png
deleted file mode 100644
index 819e64cdf7aa0880edaddfdcae40cbecb88bf435..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 654
zcmV;90&)F`P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10t-n*K~y-6m6AVCQ(+Xwf9HMgd+#mOBHTbt#59^<VnTIx*U>NH
zX2R|l;8VCb8dq0Vhz1)6OG2v&wNWZiNZa?XLx(yUd#1BIzdYwWj~pHzKDXBHr<5ME
z#E8gop67dVaBy(kYPH(UW)r2<e~Dv^42MJd{r>07THCIw3Ty2$2B@lvZnxXcy!RY`
z_{95{Z%DcX(MWViun?yxEGjv)SQH*D0e}~8U*o+e^WJkY_|10X4rB!hjdL@IQ%XHS
zVTnE<DPWXGs|di&XpFCUGUpt(q+n}v9c>IDB!bsy379;fMFTm0BIqO(g#i&%5S(*!
z2f3-S^Xw5frz51uus??=HN(^bN*T1dO_&tKi6LJtP^BS?nV%3sKr4kBPuYIj;<|T1
zDA&jvtH|t(VzXk}n<3>o)K@4TY#>?~i4a0SdG8ScNsz1ugxb9=?AbNp%HW2Ud~Jh#
zWd$)AVLWB}{SruvCnky9{5WTNc}1`R_jQ8!87d3pS2L0u5`0OD3N_Fmpwj9B5VOd5
zFhFM+F-E*~cxw^m&<awLMFW}dmE8XeP&$4MdnnPw6bZqRlK*Fs8s07d_2xR?&U;HW
z@yX^Ie$=0*aJT)CSEuim0*uFF!k3R^N~!MA(b3NC?k>id{}Mar=yW<LrMg+YUf(-8
oIoa=YIy=iaD9f_jXf*cz0MpbK@1RhUA^-pY07*qoM6N<$g0`U<uK)l5

diff --git a/src/_h5ai/client/icons/16x16/unknown.png b/src/_h5ai/client/icons/16x16/unknown.png
deleted file mode 100644
index b1dcc3f6eabf24311b4e1033e798326e43073797..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 556
zcmV+{0@MA8P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10jWtuK~y-6l~T=$;y@Uz#Ev-#Mv171AuY0t2NfT{lQM6#^A__^
z;!$te93*1=J+vZ-q9Ex`dJjv&xMSSig74B*Us3hZ%5*w?6GD7MQPjnMKvh+T5b{GA
zkH-$Bv{R{6psMOWEk{v={eF+tYW0%@LC`Tx6G0Fpg6(z-#u$#rBeK~ns?{ni%R)Y%
zPc)`!!t=b28ipalFocv6QcC!~kI7^LMNu#q44`QmX0sVaqY<vxYod$yR3Sw2D5b>V
zZ~y@8b~`AFf_l9U0N|X1G4`MpLV$42A*D>BQA%+>pHV0jkjZ3lxm*&iSS&thIp-j8
z{1~ND3B%zK03f9VV+;ULE|*~##)CEtLy)+_Gn`H*+-^72YBltFy)QZ;#A}1iW&_){
z(d~AVM1LB5IpXJGjG@(PrSgAG(C_y_2ubB%8m!lAEEWscwvA@9nQD+)VYyu5e!s)_
z{g)L~Aq3*T@Odbu&~+V+M&s!+=lpjCLWt)$&i8h^4NcRMc$Q_svaF}q=bXcJT@XS%
ulFQ}Z=kxi8>$=~b7EOV!>vO{}-hTnuq;A%qk8}k90000<MNUMnLSTX_Lhl0r

diff --git a/src/_h5ai/client/icons/16x16/vcal.png b/src/_h5ai/client/icons/16x16/vcal.png
deleted file mode 100644
index 3d8145584d9b5499e73d17a8cf779727508997e9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 556
zcmV+{0@MA8P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10jWtuK~y-6osvOo8bKI_pU9M;Y@<-60UKx!IeEx!e?$cR1HvNs
z19}m}o^t4|cMp5eKOn`udiLPn1oaX~Hw01(TOwO)*_mXfhvK4GXw3%$-#6d9&&<3t
zN27N8{rAb_<Ld4%!vSHPovmM8TzokCe0jNkeSDmLd2(`yo*z-fw>bVK9&T^bZ%$A7
zd4GQp;Du%Juvny1kH+w{S{)<?cv`J^GzOuJ;cFZp3;<BZAPQGkygfgE9^m>KA*G~P
zEItb`o6Sf`DbZS^wI&QhT-T*mtKqsXVHhU8$z(#a*-UD!HBw51QVL@X0G&<;-}fn%
zN_d{fVzHpzZqsVDm`<kv$yxxV6e5mewAMsX#CSZWUawQBRPa2HZnw*FxlF_WTI(c_
z<CxUu1RL@u->wIPK_c4jE2aLJsI|tjENt7R*X!Z?KJ)n;+qSVRYiHN(e9wbMqd}oi
zU^E(0E|;lRt2=l8s|QlbWHOh_;W!SC<Ln9g{r(<6N=ZrxaT5f=&hz}w2!a41#Er;i
uv(4df_-Vafzx&t6*^W#m^Ch3pH-7_N=q}?@-w>7n0000<MNUMnLSTZU-}27@

diff --git a/src/_h5ai/client/icons/16x16/video.png b/src/_h5ai/client/icons/16x16/video.png
deleted file mode 100644
index f92f7e1eb247a75de4ed66bd5b7faec131c7759d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 739
zcmV<90v!E`P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10$@o*K~y-6m6N@08%Gp{znPt#-4$0POErWO7zqnSh88K+2odrQ
zd<nU--@<OJmk9C@ftsxe#6>_G$Pd)0ltf5e&YhnWvk7c>zU^S{oO8Z2>f++!XYc(R
zrPPa;-~2_<ROrf5*b-G50Frou6XM<xc6;9a{Vge_-;FV^%x<@P+xPv+<>e(mK0l<e
z7G0I-(x3{R7lcR@PuvT^IeuuLadma|;_U3~t?}NUtX3=T?(TR9@3FO|sPgMdj|*bV
zD)xdK93TI5tX3<$_b2M~^fay4YtGNl`I@=DzNYIs)ba6gn$2baT%G(wU6*KU(WQpb
z0wEG55}jihgv<BO0Jy)uM|<z-`yLVDa8gpYHO;i9nN2vDw;aq{n%RVAT2r?*hm#T!
zq3?UV_ZaUzUDpAitCFI&6iuCJj1;1H!frq25fBl&uETqe77^C#H6ns43Y00(rJ<-S
zWqUx`9#B*^Q!xdqDERb_@!qpsF0<F9NHLL8BE^jEe+ns)VuF+q5thqkR^Yv7v)Ldb
znY9RUaQLSI**+rMNBq-399%vVkBG3@Y;p!61Qv@$4tr3b6vTucE#)GGoWtG`28T#u
zu~-m7$QEvHZa6wRV*iw|qjYVG&x#a%AUeSff{5bw_Llj4j%wRBS!=(lME{L*E-Tn>
zw@jx~ep^kbn+k19bXk1y7qWt3x96u{9(j0pplKRR2;oCjRo`o^nH|=-1GPol5@p5=
zM)_fIR7N3kM^#m%ls=dk<LemX8>Q5Dzy9%rwjNy?bXk6(V5H<6&N)&_AGOx6{{@fk
VbEjPP6gB_=002ovPDHLkV1im-P$mEX

diff --git a/src/_h5ai/client/icons/16x16/xml.png b/src/_h5ai/client/icons/16x16/xml.png
deleted file mode 100644
index 83a83df91a6742767efeb2be12dcefdb9e5c8d6b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 585
zcmV-P0=E5$P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10mey0K~y-6m6Fd&TVW8zfA`CGbA!QLn_EaBAlVcoG~M_NE?l_i
z3-}cEEqnl9q<abICPm>kv~VLT#6P4fg9gd>=S~+fH;pZ&8JNWkXU?2COwjA~cARsE
zd7gh{g-}YRTI<h2x7$rytyZVeXrPq(ui-q;8I49<UtfRI#+Xi$Bp72>5kQh8WLehH
z-g~_FD-8q8=d^PU5qYIiKm`B<6GLD<d970P=HZ+}S!)rIBFiUNsJn4dSH65l_wP}6
zW6CF2OIT|y%6nflqV6T(`7OS_HdFO%(LY9*b^~8uBRsz)>RuLj?>%aMLUepVcsAs5
zf15liAtHqRd;HrfKCX~QB_8*;3D1T^#}|kQ&bfsL!P680q!bjMgkOi4&bx(2r2v5$
z_JyEOFxlP0Zf>xCbP7{PFn&g7Kbg)6rjGTaQ|#sjlijU92}Fd+UK`ttQ8y2idqZri
zj<1#x5!B5Cwiz?oYZv&X6Xx;s=>viFh*pd3fNR#UtvB!+_OAp0q7`|w_EJdE;}xzT
zu-2lrUg;B^b2AUL)>)dS7-N>6<X>rwAx%@X)|swWs|SO@;IQBCzh6Z`6h(tLjt_nT
XjRR+gDFH-y00000NkvXXu0mjfvlaK*

diff --git a/src/_h5ai/client/icons/16x16/zip.png b/src/_h5ai/client/icons/16x16/zip.png
deleted file mode 100644
index cc196c1eeeecf71a4ad125c1e8ce6414aa2e7112..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 617
zcmV-v0+#)WP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10p>|WK~y-6m5;wq6j2mL&n$NrSwmn&HYkx&LLdPfEhM&9J2w6S
zCMIeutf;K0tfa)m%Fc?IIIEqlg_3AkF%(;9ASfY77G{^3H}99l7!t#70$=iqcawX*
zbA#rG2e&h0pF8ho=$4?w-G^_f)oK9L>vdLM-l2eAFG=5mbUN*&3)L&rV-u4Uq<9ig
zI7h4_?mc<}!0R{fn4G=E&d;@({oSo4QJr*pbfk<s{DSlLq(HF(K&4VSp83uOqa$U0
z|466BWGOz`#CKT+2p9xld3l*eqXB@+6kh+rWGMx$6jrsdS<>}6YXA@t78e(DfHhdv
zMk|FFmEy9auI>2=IUo!}qA1EwFb0<$VN^=NDAlt)H*f$%QA8Mq{|p>9OE5|yI#akT
z>1p7sJz?Oi#bpUPQ;4;KRlNa08Z$pvJ#L?$t76j_s}iggB-I1>Ai$~pt^nU^@?v3%
zpm;t1>loc?LNGw8J<@K)nEo3Kj*s`W_&=8@4qYYQ+os+6galGzbL}HX2dz^A@|1^$
z38aizt(lm;$>7D)8sv%hwpri&jCd)r^?jAjpZ8}1oFA#;rG$8OxYH?3ja>_Ci1eLm
z*%-^$)o*yUu@k&{eEELsz&%S8)w383^s_rWRCxLqgntx*WUqE=00000NkvXXu0mjf
D(KZJc

diff --git a/src/_h5ai/client/icons/48x48/archive.png b/src/_h5ai/client/icons/48x48/archive.png
deleted file mode 100644
index b3c07d56cd597311f40738d9f70c606b52e4c64f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1433
zcmV;K1!nq*P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000K;000K;0UmWYH2?qr8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H11r|v}K~!jg?V3-B6IUF^KW}C-nTf1P)@imYD>PV7y|h?S@L)j^
zMFcNiq|mzuZ{9@lpq@SJ!IKve3cd9t6a){e-9x~|KXf-j(ykC<)@3u9H?N1}O=t3d
zTQ`Z&FFbbUy_cEqZ{GL!eQ(~ZP)hMR!<aUK{|YO9B7`sj2e6sF;6lI$wv|#cs#QwS
zkx}~M#fx9Rd-v|Q?d|QBlu}74RS*P2ORLoyT72IhTAn|Dt}>a7%49NX|Ni~=i^bx7
zeg5IY2i0sgRkPVt^?H4~R4V;^`t<1{kk-6~Qc6GhFJ8TR^-Hl>{9a1Qq;jKFDsk%6
zDNdd|iR-#}p2v$9FIZVwVQp;<+qM(^S5{VjJ$m%$Pr!y!N@|(7z~X@e2fhn}fG`ZB
zk(opZf`BVmuHd>Zb8~atxpSvSA-Wtobm#|QvBNpaffTUMvMkg0{oQ@!1K>Cg2M-=3
zm&>td&mM#j06j`@9LEOs0e`?h0hmC#-w$>h`hG$Pjvqgc=XtbRt)BKSq-k@G0uY@t
z@c=Z!FyzUTCkP=pckWzNKY&lf*XnMW)(9x2c=+%k^YinZIddke8^tFcfDymoBq4-g
zb90ji4<29`2J7qVgki`KKG7UC6C+^THn(owBAd<f?AbG#%_f#*jm0NE+eSGs$)e%9
zE{ltcT)TFSTrQUgu+MLVZjUGNR3tR&enTWQ8%eBj`0!y)oH)Ua8#i{u$LKzuw1hOl
z<>h4_KYq-mOP6{A=+l38l6VxxwNZm9=RiLR^_vGeON@x`%(&1FCDh|Wi2!B^LzWUi
z?;F|7yO3U`YW(j)yNz*OXlgUD#<(sN8-d7<G=$E9S#}}KRUdqI66!vm`WspIM0WG$
z&4kkovC*EzoS3GKE-x>$y1I(%x<dmPG?7jHo!Iw%&YwR|KA-36)vIVOI~jqgy3imD
zaUoy^lGrp&GMNl--@fJg_3J=;ww;@si#FJXp=Sek(l(mU=ed0OGEzz!jRuWI1EmzV
zZ{KEfb912WYD|4GXIT~(E?nU3*|S)dg>Bo|wvCjMAP9Q;k4)lez_P4p7XnD^%ypyV
zP!Zq6Vs2||i*!1@J1jo|48!2#$Bz)>omfh|e*GHH^JX##!!WRIn{v4f10=-DmoHgb
zTB1-W^z6&WlW5fOZuOH=vazwDDfQ08d-v|8TrRV;w1f}>-}mu-pCAYr=et4oO~<Lz
z$NH}jB9Y9l>*BgDrfE{GR>@|w14qCRLg0BG@87?tUa!+?wP>|kNGXw05{6;Io5vwJ
zs;&DvLI_OLB$Y~G+cxQR8pm;%pP$F`JgU_y4BFVL)oQq|%fiCKST~O2Q`PGrbTJGA
z!)T{!qtT#Nt0np-B$UhLA_+lzeWFJ}OK6yk`UO31A6+kmNIZSlb;)Ehn5IdkQqlXS
z{dXk>Nhk<{NJgWG_G^pR4Qtm(rBXdXbV;ah0AZz4kw=akF?S-Nok(QdzTNVPOK5Fv
zP162moCu%^)Ze^$vtBNji*X6XT}UVLzm>^2#W0M%5=x~~R4Nr#S6A18dWUlqz!vbw
z-Me=m6$*tPj~zQ!P)b>YB=jle(_OD^G?hw44&*ovLWtn$)2DykyLayq?JtyDK=h$o
z01Lo3z_-9xK(_CAPY-q4#D51$z@JJfC1U<-0D0g`+T`v2*O?l8+Cfx-no=r+&IrUI
ngs^B!YZm|6BTz~u*4Tdo3%glH0qGNo00000NkvXXu0mjfiN~Xe

diff --git a/src/_h5ai/client/icons/48x48/audio.png b/src/_h5ai/client/icons/48x48/audio.png
deleted file mode 100644
index 20c14897c231f863dcdfe6227a8ab46ec733734c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2062
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

diff --git a/src/_h5ai/client/icons/48x48/authors.png b/src/_h5ai/client/icons/48x48/authors.png
deleted file mode 100644
index 90ff6b3a1282397820cabae3c9bac9c1380e746e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1508
zcmV<A1snQ_P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000K;000K;0UmWYH2?qr8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H11z|}<K~!jg)mlAo>oycUlwwPcKkCLv@?PK|4+szsUAkq+lKG7t
zvh^2aFZvUT&dHFuTZY2_;APF$rFfG82N{yKfnz(dY*{AR!KNNfk(A{)&FcXK%M!(V
zE_rzGrEJ1E$Nw45TN8LG*5ogQ5Ep<CAdj!lIR;=1V8l76;$rLoA;dd6I(m10e*W{`
z-rf(zVsYy&Seh^x4F0~kx%vI{^z;`($UWyg1OUQ07bCxUb#?XY;o;$rj4_zj1|j5C
ziQ4Qsj)Uv#>)(!#kADL259gc;nG^uLZ!{VoDW!={2qE$D+A!JToP$z|Mx*f&!222J
zSVB1fwQ99mqm(8(w0&PS<iR6^BnGout=0h40JMQG4!8h3&bhXO|6=5I5L{$VvvUtq
z&andov-Kb#NUNXf`Kk$vzQwuxDLFu9$9xz~BmY`*669>;b#hW2a8wDclH{_GIZ5Yn
zj!Mix+GsE0kg3fgp;<TDwzVibkhq&Abjs}pg8`nNo-mnArbgD*P%f8IEEZFp(e<fm
z8yk}su~tH&BbyH8cAZWKVHhHx&m))1#rOLCKEg1>#>NIrc2ws?J575>II(cOW19&v
zQ$Y|QiX!B4xrFgtE{7<J5ClQ$%w}14j^R8rIOm9>2(IfI+qkZaD2f)6PYU#lSd7*p
zQc<5HgkUn6fH7vZEY^jte>GvL^3grxNS_POfXTTu^2_vTK+Jb83d!E8p)GD?hzyJ|
zP)bwvD<othY#MFlnM4$tySNM-$ARa07>!2Oc5*0v0b;IJ+2}^fHr1t4Db;eJP_Wud
zv#-KhO6cTbTi~wi!uNdyL0}~Bx^89(X>x&+I8h(U3Spp9sU(cb_ZAt|G&?ec0|Xjp
zOcF{Xpp#OmRD$D}6>GDlu@`6JL==j@WQ;=c{V0kOAysTuvy>4Q2Nzq!HUlbYaSVq;
z1VNCHPY?tM!_d0FUPfATJ2F#erpzl}e|~<(!@~n8rSLp2VTe+So0}W>zK^Y~EqI=%
z+i4~27-menBg-Tqfyc*3bUGaXKt7+3ql^x|?*l;W$mZrI3Wb7h&zm`sC1yZ=P`A0^
zoTJ@tgE1DD&5KGvIC6V?3*Yy#ySu9m&zAnQGvLT%btQ$2e!mZ38vB>6f%5r0D5dCj
zyQo&H+BT|$tXs-OqYWVh;{DMIO5=C{)XFm@nI#>NVVeO_`>%pL0Bc`qVb{2bb&#DI
zjYcmjpJk{8pe~Ec*P+P+#zm|H=iHiAv%+y4YdF<Fzlddmy4WwHUa#Zs?hb>&U@6i9
z<#HL@+uL)qnYLSlVG*ZFNCsmJ^?DtQG2GwZqu1+Y;f->+jGdhwIF2*726U29ufdQ9
zw2&9G>fm@h1|bBcQVHE|H<JUEN(GeC#2(ocg)~TJViR%k-Lw}d7K=DIH~^&-<M9|_
z7-BdaVmKTEnC=4#g#tX!i?g)|#isgSJ~xySkR6zNv88*}r@r2k9g+?BzK`|wb<}FL
zxwee4_>gmmDf?<<qi$%DZ>QA}wvD>nq3W>uBZ=-A^<3wGu8kU8v=TCnw8@z?BR0ae
zb{1##Zza@eTSWh_g_N1nZfIDm)#|IA*h1Q>30pF6j2Xu`X$S{G0KI0j`Po$anCkOY
z9clJ}sWh9-=4SxC8Ru9+0f6?|+1aNkii#&ECm;6r_e<g-xr4N8x_de~*mSPD)@rq$
zFE20K7Z(?wF#Uxx0KWXtO#o~I_zuAL06qZtCNTtWiyo%L{{ZkOfWJ8BJT4yyAr63V
z0ldSMeEw~C8ZpMyiF*K#oO1?f>K{VL8m7|v8vpDu;haz8i~j-}UCNuH6_Kd`0000<
KMNUMnLSTYQ(76Ku

diff --git a/src/_h5ai/client/icons/48x48/bin.png b/src/_h5ai/client/icons/48x48/bin.png
deleted file mode 100644
index f623dceb7cfc2bb1121689f8f8568ef4966807d2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1767
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
JPDHLkV1hDZRLcMW

diff --git a/src/_h5ai/client/icons/48x48/blank.png b/src/_h5ai/client/icons/48x48/blank.png
deleted file mode 100644
index 78363b0fa9bdf9c2cee469b23446f8fab17af6ba..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 236
zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sjKx9jP7LeL$-D$|>;rs4T)%(+
z@#oK<-@kwV{rmUbyEh*{zW@65+ow+-e*F0P<HwKh-@pI-`Sb1D*FS&$`uFeOuV25u
zef$3T^OrAQzJC7v@&Et-!G|sPgUl@n@(X5gcy=QV#7XjYcVXyYmGuB}I14-?iy0WW
zg+Z8+Vb&Z8pdfpRr>`sfZFW|EeWqh`ON4+zlAbP(As)xy9&7}17!EJ^8GQc%ODH45
Z2OdrX2F6Qkg>QkxJzf1=);T3K0RRgwW}N^4

diff --git a/src/_h5ai/client/icons/48x48/bmp.png b/src/_h5ai/client/icons/48x48/bmp.png
deleted file mode 100644
index 675cbf66755c34f459458f70596e3432917ecf35..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2899
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

diff --git a/src/_h5ai/client/icons/48x48/c.png b/src/_h5ai/client/icons/48x48/c.png
deleted file mode 100644
index 87ade51ccc9b1c8c569b662d7b12ff1100023657..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2763
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
R+$jJ6002ovPDHLkV1j(0HBkTn

diff --git a/src/_h5ai/client/icons/48x48/calc.png b/src/_h5ai/client/icons/48x48/calc.png
deleted file mode 100644
index af88f8350dd374b10cb587b9537c203610357abf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2007
zcmV;|2PpW7P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000K;000K;0UmWYH2?qr8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H12UJN!K~!jg)tXChTuBwjf2X?bcBh-c4;;rR12gi71Vxcp1hI)k
zB-p@$1q*g;kXS_mR(yb2p!o`6I}4;NP`&_+SY)CovV@Y5Nsz4AA&T98Fme0dwB7No
z!{XkmzK`mM6OS?+tK7HlE!RE&Q~y)voN9}z^8YO6T`TamQqOlpqz23Y(|rBFS)dOb
zs%qkHdH^EQSh@7=r9XV~%io{>@Z7K3?K9^=3Ns|fmY;n0cf1SQ#c{m7v9a;j>({S;
zA|hL=dITV<>MXzbr%!+L@%MkU{M&>6F0buj3JgF}AW7fy>q~zoNs=M2d3zaV91+17
z!`-`gKfQMC+8==(RZSdCn!xgRE-e0H@9;nLZ4X5O^~$GEBsBM_iir4@7gZ%m5-wc0
z@N-}})7evK3RswaFInmxsh<c0RWM=z@#>c+KTXN6fQVF9WOjCT0ayUm^8ji<!|E|$
zGg})3K_s)i2r5;-zJ2?4p?`FAM5ECdt7x~|WqNvgBmjV^sVS~ry;^?W$aMAq1Q4qh
zR6$JoA(8>9VK7+H%JRN`{hG^{FZ+I{(_v|8X)J(8j~=nGurPMqvuDo=E0KMAJ{L@?
znlWEBC5#HF$$_XBIO>3?>d@BhcDZxs&d4#U%9AHgxOeYf<-U_)w9Ur>GuU1QCGSuM
zks2Z=-#!ly4<}lYxw$#coH-MGmbZR(?G0Zq4^&kUMbuf?t$+cl0HP>jYirB*<2bJH
zxY=wL#sKtsJ@)qYeBT&Dv)L@%bMrY0g;pUCK#+9nOr6#dEn5Y`n`pb;E?78<B34#b
z0war}@9na*JlqGI5svTnLXW*FCU?VFwWy|kj5>R(_YJhlcYuDs&*R6B{fj4QBf;ez
zHvG4SkP}<AK7grLKR0n;2~-tpE%kbRBIPELlf;>l6K9AW3>|<`Y*4u<ig@|*CGB>b
zPN##avbniA_QkK_9-Ymdq0bdX6{08(Jq|mu)nu@hdg>JWWoftDoIQKC0BCu6c`SgP
z{$rMw7mG^g=69>PyKz*G0YM}tZ5jCs4bn_D-!Dq9*JE{cb*$2(<b>4A^eyc|s&-&?
zNiATp2qs$r8{~Pv-)C`gabhQh;VU}K+HT&=KfIF^05~W1%F4h8><}N=-`}U%Yyz;p
zz7F+cc>ZcEfcww?Mq{^{3*|Hh;N_m-$NaSXGzcKwh4NNci$wv8p_&;2%*@ObB52S4
zmv5XMU(EGi?D65s#gfidt4G`M$T6mH?SeqC*|bsJ>kkhPdGO%D#4*6rbVO_jIdmwM
zC?<2{DCB#^dm%}Zgt@u7;Iq?~GSGZFZLD=X&soTW5Nx&rd5PngMx(*Z%uJfcG!E%(
z?T%GsfB#FK{QL1(MY{)6A?o@_Ty$cJk+`rL&cRE|JwHFs#ft+jM^VH_?|(EFz_;q(
z3&xA`F7)})=f0nNZzUJX1|`{6nWRC@y8fVrB#vWNS6AOUjd+v4FH~fX?^&6W{kEu2
zt*dds?ai~Zv%Wu395`uGR}`Nd7Xz8i1v1BdYfzKM1v?}c>UO)dS}i)A4!}gYP#nj>
zab=~WDDwSLfy~#$MF3euwu%)EQmC8@#c@1QF0{G1>BkL=$f}wK$11>JO>Ass8?{+5
zvl*4b^}zP_HV+>@ti1fRYJ)Om8Cp_WOIi;Xe+GBL(r&lu^?Il3#398)fQtaU16#;y
zU>5^~%Fzapa`fQffSH*Ywzszdc=6)JSY_il9y?A|iK1wvVM<P%fYfrq%arI;ov77n
zvA8(M>)*r&oU&!*Rh6etpB4<4^8uh(6KA=nEqQ_UzA!9*+1=gc{{8!vmyhH9Nz(6<
z1h-M6S><lAevCoVGy=&o)2g&uEoNtD-`WS9jH(lyuI{3EtfDFF(QNz7niY$YEFmpf
z%*BC5qv3sEk~lDm+xZo8<4XP)i~}GkZJ=6IssmS&R;yKs1Lw}28w+4-Yb!XeOs|cN
zjbT$%;(!b|X|efc)7;4BO3J)ddcEGs>wz)8kq0y+l>kcVbUqJt$DoR0q=u>`ara6u
zXfzsysQNa!P+-Ri0Sl(n09b2%;${I+MI}9AOaeaOWPW~rRPyyk077$>550n?5|9No
z)%0Xq6@~zqnwl!)EB$_-ot@zaR{3!w_+3%H1SEVa;i9lhpZ$)M9q{_1-wu+xD_5?J
zRrXCJuW<f-PFHu4cVfHu{HUv0@$QP5^tA36YmZU;)qXoUEYRg;ZEdX!ctj4s5wL&%
z?>k>i*P4i!LG)FZi&~#fd=)JOrYs`Dty{Og0QNJTJ%wHY>;L%6#%K1mwto1t^B*j}
zKi96AIyI?dq>hmqBsGjN)a&)aq@mCJb%@Kuw#;Go*4Eadn>TN+-?(w(GtzG;U%}vu
zZUL5nOTZ6+4}fo0Oz>`HpH%UG0{;R!s;c4;iiiQ`fODkEk2v>xC(<Vcu?2joS$QaB
pu8ByUlv-cMfA%<5)#Lol{{c}pI3`*l61M;V002ovPDHLkV1m%f)SCbR

diff --git a/src/_h5ai/client/icons/48x48/cd.png b/src/_h5ai/client/icons/48x48/cd.png
deleted file mode 100644
index 7c73c4871869a62f6176e0657a49b960cdc638c0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3047
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

diff --git a/src/_h5ai/client/icons/48x48/copying.png b/src/_h5ai/client/icons/48x48/copying.png
deleted file mode 100644
index 199d436ca04dc67ccf601d520315469b39f0ad85..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1980
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
O0000<MNUMnLSTaaLCkLe

diff --git a/src/_h5ai/client/icons/48x48/cpp.png b/src/_h5ai/client/icons/48x48/cpp.png
deleted file mode 100644
index 29b438730b04f118949decff839bd6940c3263b0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2685
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

diff --git a/src/_h5ai/client/icons/48x48/css.png b/src/_h5ai/client/icons/48x48/css.png
deleted file mode 100644
index b0d09ee24c066ec8fa94b77cf7e10cf2b16c2640..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1745
zcmV;?1}^!DP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000K;000K;0UmWYH2?qr8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H122M#tK~!jg)tb+b9K{vKKh--w*&iNj$+E@>uYX7@1d4J9awG>Z
zTx<*ogph3n<^ZR}xuKx^2Z?gF4?aYS6eSQVLMwr=H~@>VEct-&0gDSG)<{^BfMoA_
zXLo0+x*ms_?&;~S>YnwkW#>t)t*)xB`hM%ZSM^@aDiPuTS%SL_V5?F}z9^-}fErNY
z-Xmv$F0dgYVN@9tP)bz~9Xd37_Uzd|?b);E<?-?HnY)3~C+&9of7h;Ed;j$5(|=J)
zwM3)?phP5E`Clw9F8=l4!Gou)wfKBPDRoDI=FJ-f0hcdd{>S0Nhu;By6p=78lRB_#
zet!N~7>1calv43?r^Ppyh!BP$^Yin^fL(peu?dxd=|-b59fo0Mz`XbEmgM3or80}z
zXf&pQX<!Kk1jc}>hzx!3;}`#-^W_Dk+i^~&DphK~KE?x29p6R@1BtLCG4;#UKIWK!
zqVEqeIHef7a)F2H0`-b-3T|AvfI56)+W<!zj>^fu2?DDB3~!@J@Bn4AhKxD8#8T2`
z%VrgU%LDH+r!;{eZ9*8+S5%G|vnB9FlEjoK$7fV#d81WON+F>}!u(J}!mSfXYS6XX
zNiC!$Ng&fI))W)4VQ%|YBxzFVrl^o~;*1IPG+=Wl5y!c)RY{vn#<Y7T<agp&jDes4
zoY{U2_#D<HLr$D-lu8{5+xa6@CpLp^yCldIAnWnfBfsMoRc@_!oX@JNQ9JtkZ9|nd
znY8&hOexktkR}5#{`m7u{pQ8oILO+3AK47}O-PJ)XctN{jO;Lqjgs5zofKF25WOer
zGP}@FWhAYy|IV$Ye}ma@&sM52wf7_s{_;%#u6_J9H!gmM)$Y{{%8H%8-OHXMkBvyj
zD^3C#vDe?@p`8Z*ajdy{{XOUt=v->Ct9*Yiw)M#Jr51Py6s)>aazlv{ZN%os5@XVd
zzZvUTq>{g_j&=RXQUp5rH!7#FxkHKcz}ALXo4*1{Cl)P;DmeH&<~6GLb|HmpOSJ~E
z`MJF$34|6gMJKnr-K7=JDGZ*IIFk>E4Uqy3NFsk0Z4rtzuz3?ol8N9&g<L1zv<8eV
zHlZ91-A+t3l#!(ev({h>2-t1bKpKO`gq#^!#)MR960ys<lc>^;LAe?r-TYlhRSPtF
zn<kXe0KnuUe`MwApONlOH<(I;9gn>ezfYfdgrEL(6}zgP{ey`z_n&yw3wqRgJQ@hn
zN%h3sOEeC=;*EuRW;QU1olop#`l<cia3kG+6v^Z$c`2nUjni6Z2;>1w-z#lKT!&Zs
z-FFT+2m5&GBQE~5h{m1wmMQV%%rhL_`y2p&`}PO^*}91*a-s&jHrwE>1G@qEaPc~y
zTwcNFHkC1W`tb>lJvr-x>33p)OYJWx&6X(T?6wz|Kj$bt0`D$&Ff+Tny$$g0@=f0A
zzkm9rA*k=B<{cdtzq-M*Ph|3e(VTcASfgxnA~Qe-I#z3&fS|yH+5~a`bzP!dkg{s+
zzPiHY#8Dw~W^E1F{P<tnfqB_5gaQIK(QZOPnS25!bZ)CoC(f9V7EQsqgqDE@MkNsS
zH%1CC4UEaAm3T}j3(jgNh=r0G2yIw+Ph=DAI;8O4Dd*B7dlDyGMFcYf0b|W=Yd{-8
zM$~`{e3HP>#a6V>Yip1K6B;I9M<8Ht%Y<Oa58M}9=?kTrs<Cd@awn*(`{HjV16U~_
zFcl1d)a$U;%_neQefT|nh$bVexFwq4<b$tMTCcFay5W3E>lI$zeJXacx94V<?5q*4
z-f}*Zoi*N`n~D3sade7G&}L(O)%jF{Hm8nE4q-}Tjeg{N7<i%8YMn`T41$1ixttpd
zX+7A5lu~hjmu#kgL{e)#l(s6Rn4O*d1Mq=}e4jKS+iW&h_U+p@6<1hGr_*sx;G4AD
z?K;8x2u1yUDP>xk&E^V;%{?-q4zRqiu<%XZYPjmQ>nWNKdW*KOu<#AA+{YX{@fxsn
z=FFMTwASOtj~}1gzkmNk^igtvqB>WbBOLZ#pZMyU&F1R)^XHe&ojdm#y<aHTVBiA^
zcmQ}5_!Te*3{tIoLzd|QzXDtZ{wpF9hYw1r0N4r4(gW}NY4UDKmmY~0a6_bbLS^C~
nrBsQYY2Aze>|sP?C^`8VyQtN#$@YF100000NkvXXu0mjf9&AGq

diff --git a/src/_h5ai/client/icons/48x48/deb.png b/src/_h5ai/client/icons/48x48/deb.png
deleted file mode 100644
index a28064340fdb13bc56c42ed8695e395dd5d4b054..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2317
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

diff --git a/src/_h5ai/client/icons/48x48/default.png b/src/_h5ai/client/icons/48x48/default.png
deleted file mode 100644
index ec5c158d0b71565e472ff64eaa809580b88d9e3f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 997
zcmV<B0~-8^P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000K;000K;0UmWYH2?qr8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H117b-;K~!jg)mc4H95E1mvk*vhk#f-~2~;3aT#+Un1r0SN1zmmt
zeUzUNrM@eu(@{kC51^$>6H%Q69Z8CaD2Kww?xfhYG2R*P9jy0`C#}}&yB)u=pJ!|@
zF*6=Bl4%ooDCXS<BANs66u<&z&$$f16@Y)toSI7O01+*2Y-}v``~8nAD=XWrR_paN
zSZWxJMn6waPrvT&?tUVoGiJU70Agm-^REsM4?nN3ufNZ-4BFfvqNqee?IuZrqoboQ
zo12>-0Q_R+)X3x+faPwtyOpMC$p{hID>k&Ym>FrBqTB6m0az|LTM0b@&}p~Zoit5L
z21Czv!|gmGDs^VN-R=PB05}0|9hd{K$jqXFCVF0i;o@>C%8ST3TL%cmd@wMi{kvbT
zo3OEM%I@89fQsvG7_A~7OHPJdh`b~x-+{!JP@N?23zw5qwmGUa0#&^o!y(tE)Z3xC
z=w{o}uT6zc4T1J;r8|j52^m8n9o7wBG6Jup;5`0%r^%6+q^(3L&pPBuY=){zDlzkb
z&&7{IJ`(3X_6Wq72NT+~eBBWs*IPfd**`hSCI+<L_9n6=7Yw5_4AFrSq_7$@j8^oz
zh~QE}l1uDdpsheXZb_-&zcj1xIo`>{+8?C}U3VyzI#0>MfRl+!QOG_#!YDLR12J$P
z+jn+knlWjE-2?&>5_e=1NhlU3m5@3D?u)UV(MB{d(&7jt{-(N$WK(+s;Z#CjjT(fa
zO_Qrp|5?iesxgUdlL@bCIiXJCD#T7?+J3+}7XmQGBp$cHhGF@NTS_ghH-$0U7bo#V
z5{ik?se~^f<B2Mtsy%7l5cIC0oQWkv(s^ZUgu-co@WGaJ)YsHeyEFoV0>tHXsfU~F
zb+=9F?s9Y?O2}VQO!H{buk*R8$10i=O(8%YP&PE#a5((q8wrK9x(Np|uSLNz^BuSZ
za6T9ej<vN<RjPmJRn;Dl>whp990NEnI9mx_066LOdI#6n*R7qMoz=Cqwddv~*FaUB
z^qVAykj|yL;c)nOe}DgEZ*T7a`4`Fy;Pyi|0eA!8Er53bRsp;yb-{FTj-2>60N(-p
zU}m<<2O>%Uyacd>oczLcc&fNU?!*~@-^`o=!up4Z=8;Ql*1i{H0B)H1#;yDhY<w@o
TDM-|D00000NkvXXu0mjf$aT61

diff --git a/src/_h5ai/client/icons/48x48/diff.png b/src/_h5ai/client/icons/48x48/diff.png
deleted file mode 100644
index c7bf4344add881dbc398c15a2b4c13446a1a05b6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2443
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
JPDHLkV1n+ynA-pV

diff --git a/src/_h5ai/client/icons/48x48/doc.png b/src/_h5ai/client/icons/48x48/doc.png
deleted file mode 100644
index da78212372170494e2a78502c14c1d8d6ea448cd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3298
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

diff --git a/src/_h5ai/client/icons/48x48/draw.png b/src/_h5ai/client/icons/48x48/draw.png
deleted file mode 100644
index 60c4836c32b8c92d242472328214a458f47e5c84..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1833
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
X#P`09H^i%C00000NkvXXu0mjf=JAFF

diff --git a/src/_h5ai/client/icons/48x48/eps.png b/src/_h5ai/client/icons/48x48/eps.png
deleted file mode 100644
index f5ebfe61cc23673991943812f564116cd9b2868d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2120
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

diff --git a/src/_h5ai/client/icons/48x48/exe.png b/src/_h5ai/client/icons/48x48/exe.png
deleted file mode 100644
index 0860f77cf811a111cdcda353f989731bc8b75fcd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2764
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
Sc0l?70000<MNUMnLSTXx=@+yB

diff --git a/src/_h5ai/client/icons/48x48/folder-0.png b/src/_h5ai/client/icons/48x48/folder-0.png
deleted file mode 100644
index f47e7e13caf09c921cab286694c6d9e5cdb82f7b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1516
zcmV<I1rz#-P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000K;000K;0UmWYH2?qr8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H11!+k{K~!jg)tXO;RaG3vKfn7%$MOHjn2CX<Np6yaimXMOf?DVz
z2v-q7(W;dZMbz~MY0Fj-1ho)y;ie#%g@n<<Tm&tY5+ZTR5dSoP9Os|&?)kMif9|>G
zJ!htL?yDbM&VBdZckcIle*e#VQWORMXUTdE;7+A4y^!a*0IS@wRDuf319L@D+`4=4
z7MB_U2Y&F)SD)K+;F-tXxo2?T=~hen7n@{$zP$10wW;9)uOEFY&-1HAQOqtI;zUvn
z3;>&+dSvI3wT$hX9vfZiJnJ_PtUUPjCx;$5boBVkd7fXtix?GX1JgjeC<={lrUd$d
zE%$EV(V3g$|M*R7v%beaKm5Wk{}yRCG0NPv@%it+`R?pTpPo4VBXA?WpAu*R>&Hh&
zSIpl0>u%z>6X{3f*}c2BtOZ`m^L(x-iaCEX5Xkd<#hyJ6t$Xi{g9mp%{2;5>4fX`>
z?PPj#?1`^-?tT04$6tP!=lP|gDB1v06a{&nw}8zjK70SjzP-C%xivkCX*cGFOOmW_
z6)RV7;)kDp{o=*fK6n?nS`<a;!(>0Ob=Qt<`)4LDQMPC7RS|b&Jv!X`fwDcr%)}*j
z?bx;-*y1n;6Y2+sHm=Er=BES@6g%3l3)LXYyw+;tPW7oK8`oq*z-C|snDzwvfB{Sy
zCXfJDqVpz1+^ZB-K~Q&YM~jgGhdF4#ExV!)ydrM>y*8+8W7$OAstbPo)ty@oTH#Fy
zWNM6KD*h{oWn(95N(r$EskI1Id#=WSEpciD05I;!um&PHK2EDmFz`!<BO(^KWneKz
z5);TU#!?jpjGaI-`%(Oi4LC6tf})_tV)1IIG|)i+Rck^Lw4jhMUVhOqsJ95MMpaXL
zy6yvx02+f&2{c4#VFF!!Kr8{1V031q(p)5U4p0#=;IKIY0ZEMjr2*qsUHsuGG;2ye
zfTGc16w2EZz^FmBM2*elc7n{2XetXtX9{4d@Tnzc0UwYm4;btCl7Sd!KAOB>nZ?IZ
zXF}GDLLTTyWB{UC*1TL%#78Wj0~%9-TQCni_(54ik(3f9ia-X)Y#f#<tvBil9*f7N
zJ}-3FfGZ_j(jdd?z$db%LQn<Xu2rmoS}6gfPHYUu7(}vQ^N1l7Rt?ueK8*TmRMjA+
zyAuP5mTk*WK*beuaWxtW!R19?k3?}IGiceafvD$!-~-P7-5kCcYBmn}FdEr@-3Nd)
zjD}3-Oh#Qx7gwRpC4vAxE-7>&CpN)}vkHGY>#~>Bbq&Y0nX2_sx;U{dmR%lD*N@p+
z+;wIR2cb~Rb!egVPjogkRV_pXSTs0s^OE>M$WN8joY;g+9MCsgg{BhPGS?5In1wR2
zF{SNz#F>uo!Ws#msYJn4V^gZ|LYGYJsDj_t2wN&mcV->~)w>sIDW!_HgwjEqD&kT}
zin?lHvl^PDA1Fax1o9h1y(r>RQJ+FPTim3S@P%BOxOyFh{HK8JcIC9ocCL^U-%s{*
z`J?JcgJpN!nX76c-^WKcdm$Zr3qYiSZXH>)?-Dt0PuD+n<^`Nsl+KN#-sFJV%j+WD
zeLw;8`<2Ow`-TQKENP-1$sboHCkT6uRYI5pCQhEYcs|QoRT%vb9fFW$El!@fcpjK=
zn1cqUfRW=Te?HYVX3g_Y?%ck8>&A8Be&!L}=zeahjR@hn^nNJDZGu#dM{lm0T#xQY
z{qV@;@yX%Szm1&u_WUXAuQO9AfeW*@+NX{UpSyl+_}u+K7gOq~OaK>wv%m!$0rCG<
z$@4q|27#?u@GE+OasipglDG_v6-8lNv-Iyad7k%SHPdPu;UZFE|7y^VFa8Z<uab7~
S#)aqr0000<MNUMnLSTZGIK+ei

diff --git a/src/_h5ai/client/icons/48x48/folder-page-0.png b/src/_h5ai/client/icons/48x48/folder-page-0.png
deleted file mode 100644
index cd2175a9ed958bce9c8850e259dcd6585aec0839..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2161
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

diff --git a/src/_h5ai/client/icons/48x48/folder-page.png b/src/_h5ai/client/icons/48x48/folder-page.png
deleted file mode 100644
index 6a3ca2be7d8f8520fbf7a28ea6508525619044a2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 443
zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmSQK*5Dp-y;YjHK@;M7UB8wRq
zG}}O!QR&V79-yFPiEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0xWAVndW
zB{``K?s@sSsS3fBxk>psnaK*C$@zH-AsMN;seMZ{S2Hj$@_M>BhGaCpofWvQ$$`f;
z|7z=AU!K^$$3<QdExQvezaCC7;V(VV=r?(uKgZK~TRhbngF-8wCCEMqzr#J}nVwN`
z*wx~<(*-ZOx)hzA_1|hkXaz&SRb%7lvrOYzw(-~pMn6*A;Qpg?mJoZw{SU%hRr(%V
zyp#Laxj#`tV`)ijbVHEWI`f&oZ3URFwKSM+PFG}j@q6Aku8*hXvKBEbP3nBH>Df&+
zmWHoF`R*@fu6w;ofA>y7(TQiyL>T#<ElEhqRG%fxFwN6MlVOUti8jL&PZM2+n&}yF
z3_HB{?0)X_K=>VNm)K3QDLTg|eV*}~4`_vAf-gseFxWQ5gx>1L9|sb9s~NlI+x8Ud
a7ci%>6-7qhJNEz>h76vrelF{r5}E+d$Ed~t

diff --git a/src/_h5ai/client/icons/48x48/folder-parent-0.png b/src/_h5ai/client/icons/48x48/folder-parent-0.png
deleted file mode 100644
index 0ae73de193c3df277c7f040bd12e04792e240661..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1227
zcmV;+1T_1JP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000K;000K;0UmWYH2?qr8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H11V~9lK~!jg-CECU8&?qi=Dn4@wt^x@wo|Mi6bMO)bFfuJoTyMt
zLA?p2yRJr{^Imn44!TQ!hyMXnD5dn)QVPB2Qd3h(YD42{^WIJmyV|TIJJxDfKhh5d
zNvpRz-@JJ<@6AZW%=nZcmQ5fkjNk_%k^oEqYgj$w8~`?ef0<biFVb)c5z#t;jFj>V
zA}TO*b~!w61`++v%s*?be**9qGY<gI1K!MUNhyz*`5Ub@0IXVY><J<Eq?8G*^^ZjK
zCo}8eGT8vI!^{Vc<1CZpN8vaQnE3#}4qVRuI!^%D2Jmo6+``}?T&@Y=g8>r2=CT;g
zfK9lZeFMmoPX#{TRZEqjA#Qme7o;a~LrlDx17y41K5DnyN0^Th07eanH3ste{7$`I
ze_F5CpXT%Voj9M30M}p;$LWpre!qWYnr6Z@%|yT7KLW5G<MRdP7{sE{XzUjXg<Y*R
zwALsT3cHO)V}Bm{Vh`d}DwS$Bn=h177#g6ILbKU?kxHdfap=GtgE-Oa^<F2FNmD6>
zpd^z?v)AjrhPQ*p1rd0SY7A8>l_#ZADLb6`aVeEb*-EAI1kn?Q&vzsXMLEbBhOuc`
z)}d00ZZkkBMV4h98iq0RvBl#!k%dMs&ceUj?Y_)pGWTvHKa@-+bFbU&zQkBD6%scZ
zFf)q9;-hl8{5Tl6AMpap<?`cVvG^zs-Em~0jaI8w)LP5C$OlBWTCF0yGkp}^Q9U3n
z%R0<vvs>d?=Pt=+vs;#B9U|f}BhpTs%jLGK)#@|bwx^wWUu@e(wOW0a%jLFb<UO$y
zhYjMjPN(yVnG<2j4~3Z%olfT!+%8BM_*`er1fo`}Jx{0856;ie{T9dW?ye-ddmb(>
zF8q7a>GXqIt@ix%^z>J_t&>n7W(E=M0r(ogms8%CfLogegOJY7&b~4X<4y~XkB`5@
zXxHN!zy*N!Q|kW#z_-kN9`rz%CG_4?7`*4c)*91z0Ki)Smx0d?02M<2#1fjNCLW(H
zRw@h!*dg@=;qwi8Ao8Xb!UIv^bB(f{Phf!t`1oHL5LxpA4TvR(CvbIj1u5s&fCyqP
zLF}BIoP0m+*oeAr3}O;OAVN{|H-LYp7{>tgouh7n$MMD`6crADK@88C7L$iLT67AT
z0UpP>H@4=Dxi+>IijgHG#OmAQag4nyv1r_AfFp#M_B_5ccpUv)KQv$f;8JUSZJMT#
zQm&jgq?BZurqEhn!>uJg{7wwu9e_7Vsn3aMYhz<Wt*xyYL_~&RfQU#+NkRxnDM?C6
zM1<fqZ;U^7_&oq<t(lpJuk6*sthHvxaYnu$yT(c>Ff-e>tp<aER7$-A@W$ipmy`sz
zMBE2(03Z+G{sJd>8eGC9{tJNL09-IL2mfjy0BiyH3@-Vwoq~D8hHJzh0NygQ+aw+T
pyA2T;aF^Dq<x~fNV&;*$^*@%#Uv&dBtSA5g002ovPDHLkV1hyhEM))y

diff --git a/src/_h5ai/client/icons/48x48/folder-parent.png b/src/_h5ai/client/icons/48x48/folder-parent.png
deleted file mode 100644
index 6a8ec84b2bee41e6e007fb3ad98945f13497d3f0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 519
zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmSQK*5Dp-y;YjHK@;M7UB8wRq
zG}}O!QR&V79-yFPiEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0xWAVndW
zB{``K?s@sSsS3fBxk>psnaK*C$@zH-AsMN;seMZ{S2Hj$MtZt9hGaCpy%m^uSb>Kv
z;s48bQ)3Pl%$e|5;VIuqzlpbx)Jg_#U;36wjidAb#?XWFD-O7|b_AS#=_Nj4)+<JN
zcloI7xg9;XW;4#%^WCrbtiAe#)fGxgf|6^u0(tTcbB?xWDDPto7m;7o`J!W;uAK{a
z;q7g2KRuE+I`f$)EiPG{!8p8ja%erjiNi}EN?~P~!Qf;0-6H3i$)_7TBC|EG$4-9A
zQdd6rUiI|XDpwfKM?H(-2tBa7&Ys<g_rv`}SLuaJ7S@@WN|P8jCNC0G;+$ahI7?v>
zV-$0hmJ-*3zq=+hS@53tXyPQ&AF!8wMy0{AHRt!4A6s+ACgWYDRDnrP`yoahmn-{!
zRPrZSHXX6kaWO59=eYH~mh}O{9<5&*jGr`>*1g`Pxb0^5J2%%9mI=2KzcEakBL2zj
z!W2K|DSlrYzHN!H;thbJtIQYvy$Q6q%KYx^q&+F0AI(|{j1LA+S3j3^P6<r_f&<Tp

diff --git a/src/_h5ai/client/icons/48x48/folder.png b/src/_h5ai/client/icons/48x48/folder.png
deleted file mode 100644
index bf477170418a9320f06780ee139d54f66ca1773f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 353
zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmSQK*5Dp-y;YjHK@;M7UB8wRq
zG}}O!QR&V79-yFPiEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0xWAVndW
zB{``K?s@sSsS3fBxk>psnaK*C$@zH-AsMN;seMZ{R|A!9_H=O!$!L6gYa{O=1A*3u
zyALGj6z(caI=1nN;*CR(W3-e7LJB@kUiy8i=A7@^t+O*+PMk9P(onA}U-0+ag}dG^
zZ*J-bU#(udHD%t<kF4jU^p%7JckiBl#`r$dIT`yDcN^xk9(f~Wvxz$&x3B5&eqa0R
zhxqnuvu53Ve4Y8qnQ8k@PTS8e(Qu5xgl&N#LoZ_nk3%wp6!QhFLd*W#WX}27!2F@W
W=~;cm<Y_?XGkCiCxvX<aXaWF=JA~^1

diff --git a/src/_h5ai/client/icons/48x48/gif.png b/src/_h5ai/client/icons/48x48/gif.png
deleted file mode 100644
index 0c525a1d7a005bd08110df572cc73aa136a799b8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2690
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

diff --git a/src/_h5ai/client/icons/48x48/gzip.png b/src/_h5ai/client/icons/48x48/gzip.png
deleted file mode 100644
index 6048579edbe894f7276038a93907e8646f91425e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1836
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
a=YIh^e%wUk`9O^T0000<MNUMnLSTZNt8L!^

diff --git a/src/_h5ai/client/icons/48x48/h.png b/src/_h5ai/client/icons/48x48/h.png
deleted file mode 100644
index 7999fc64b4c83f3cdc4d342d1541025dbaa1d1c4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2513
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
bix&PHuIS@bf7l$J00000NkvXXu0mjfk*%`~

diff --git a/src/_h5ai/client/icons/48x48/hpp.png b/src/_h5ai/client/icons/48x48/hpp.png
deleted file mode 100644
index a1f607563ed26df9fcfbbac09d616d53f1f72261..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2707
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
N002ovPDHLkV1j;d6xRR%

diff --git a/src/_h5ai/client/icons/48x48/html.png b/src/_h5ai/client/icons/48x48/html.png
deleted file mode 100644
index 36a1338c6a3f5997d7ada44b146bec6b745648bb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3352
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

diff --git a/src/_h5ai/client/icons/48x48/ico.png b/src/_h5ai/client/icons/48x48/ico.png
deleted file mode 100644
index 3c32c9857c3e7b775ee6ec72fbdb29e06a7f4cb7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3408
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

diff --git a/src/_h5ai/client/icons/48x48/image.png b/src/_h5ai/client/icons/48x48/image.png
deleted file mode 100644
index 69bd44e7d07d2a4d49509bc5db192a883f796c8f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2556
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
Sc_jt_0000<MNUMnLSTZXr^K58

diff --git a/src/_h5ai/client/icons/48x48/install.png b/src/_h5ai/client/icons/48x48/install.png
deleted file mode 100644
index 0eb4fe1c41616cbe67f408b1eb291fe5f7ebf139..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2159
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

diff --git a/src/_h5ai/client/icons/48x48/java.png b/src/_h5ai/client/icons/48x48/java.png
deleted file mode 100644
index b52c20ab1793aef77488cc10aeef9fa0690e77bc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2645
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
Dvy%4Z

diff --git a/src/_h5ai/client/icons/48x48/jpg.png b/src/_h5ai/client/icons/48x48/jpg.png
deleted file mode 100644
index f1d14cbedda6fb7900803252baf24ae682ab2ad7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2996
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

diff --git a/src/_h5ai/client/icons/48x48/js.png b/src/_h5ai/client/icons/48x48/js.png
deleted file mode 100644
index dbe9da6549f82f6c124597afb10e541efa95cbe8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3023
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
R>8$_&002ovPDHLkV1j14zVrY9

diff --git a/src/_h5ai/client/icons/48x48/json.png b/src/_h5ai/client/icons/48x48/json.png
deleted file mode 100644
index dbe9da6549f82f6c124597afb10e541efa95cbe8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3023
zcmV;=3o!JFP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000K;000K;0UmWYH2?qr8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H13rtBwK~!jg)tXCeT-SNWf9KryV>lcRNl}z3iq^xjtQyL~t!u$R
z5wuO*MbM%!V4w}U39`+iK$cx~lK?FWFRE>UZj2%o+M?+rSr~<p#0c72mK_<XELbwd
zP$DIAIPbal+<Us1xySRkL(3@wyB{#PbI<etJ<s{R8KJf2|1-(Y8^HgS?C}>Nga!D3
z%NLKi97uq^);cq-T5CpT<Xydbb@S%Uo7bAn=0l~F{vv&v&E~_KH*a3MdiCli;1#%q
z*1C}V%3E)}_1za=eDUjJOnqTU2!RlSx8HvIZ(n}-<!=M~TI;M}AO_Cw?d|=rTCLVU
zZJ}Q!eVX8oj*cF$uCD$La9eBLE_}cN>Whnu^<sgYogLckHenbNMG?(rlXkn!<;$1Z
z+1WuUMXS}qaU9|}Mk$4ql3uTe@B4&dh*FAnyN%WwDJ4P(9LGUQNw?d@_kBFiBS{iA
zHa37s0hKYcxVTsc>cCz2#EC7&><VCgeVu;4Z#K`ejJ35j0G5}RQA$y%REVMo-}lj4
z)9rR~90#Qop6AhSx2aaEIF3V-Bv_V(l#(P#@O_^+j`4l}SPjh4h&RG)7!ae+<S5VM
z{{8zbEG%H#HqB-er4&L4k|d#CuXA{KXr%1AE?Jh*>-A7dp|wUSg;EOFb?Nu}q-lzj
zl3J}sr_(_xW!hZV#j-52EF;fzY}>}NEMxy;WboS4pv{QUB;WVx^?C>)uq?}fa2y9A
z1kGj>%d&7?m%(5_nx;nD?RJ|eiVVX^lF)9qjV6>*bUGcvFr?LL;rl*O6fyEk0Bn0M
zM5Y;#CNv3QRJXdiY8aZPBuUuZ+??2OoC@<P`uqJp>+9<iV^&sHCiW?)*nixF#=e^~
z>Uj1>^!V{(c6WENEQ@EJd4~7jf1fyx>2x}V*)R+dLU3?!fa5q^x^#&fH*Vm0o{{3|
z)2G?l+2P!|b2EGVvSGUjqbtBm{eJ%+#-%y^oc{h<sn_cnJD*2o5+8q#%=-6%A8W1m
z$DLT}k^@W#VH`CG0ve45)oPV)x69_{Cim{$BhPaz%R(t-OePFN6NY=e9$ITW&m)Q=
z27>`dM@LkvRT_;3aU2`Js#GfUdOaM+!Eqcc%fhzp3A1KsLgh|eCSl+Ajnh>sm5KNr
z$1#rMkfx~#xrKylwHkSzqqR2iUkHIxifXk=5Cju@6sA_GR7!D_wM{tjOz((1&okf)
zMl8!B&vRVYH4+5O({){>ltw#Al9=^YR#vcWo5RCHmX?-iG#b=uH4{FkO}4~8%AI(8
z;P}K&r^EgG_pxmor4-$6moN+gSXfw~*KX43w8`_FR;$Hgtxj){P^nbNvJB64>2}*R
z8x367!F4^(Y;94ABX)OpSzB8pO;fhFw{cw;+qRKXBBdk<0zA)~>*NIk@;D7dQN+cI
z7t1?!j{f+^EdI;ahKxHg*4J+!q9xFpyx$;y=dW4%=wA`tUqISHJ2Cm&ONja<*4AG_
zuKo$a@!8tinh|DMI3343t^qO4WuE8k@9%T+<VmwYnH_4CptE7S78<Kqr}vob@4f=f
zkA{841a%0#Lv-T~`OZ&}7hVO&p8+}^RHm>Q5O!JP_yUzmWu~n(lolyQ(UqmBxBeX6
zxI1hV7NU9{9X$nEANu=n^daQJO!*9FK`8?>WLXwb6wS0xYeQ>+&PQvGp1B&JcmLZk
zCeMBi`J3McH$vnYI_;4+w$Zyk{jA_8Xyz(0PSX)!TJl<JDAYWr0j)KpDS59ABh$)r
zg;hNXP5@FumLY2!@YI*kPWg>={8{1yGYrg-)|!65Zz4_+)5lLzr4&MAe1JkLLO^^P
zjy@i~|Ia^@-2D&4Q!l~#3s}GQDl%FDr)K7igP!+3O%o^abZ4ID+`W4j%d$w*6d{B;
zDFM!(KhJyby+^IF&B=T;C(F5Y>lQMo5U%_lCwAXOr0rp6uZ_O_1GxPI^pE}masI2=
zFMJcR{w0v}uNNg$dJ@k>At@ynFJ3IY6BTsj$`!KPN2rkogp@q{?6ZitjyQV;b@meZ
zt$!lF{e9@}n|V4L!2AD5cI*4NfAl@X>EHN7d!KGXPv*o0b-P^}jfP1wiqo>&?IHz)
z`}-`KFbaEnd+2sbk_?E$rx=`jm2m47^6mdbKD>#${|>UdH(WeZG=BJ(bbt3dEY?@a
zvWz&6pZL;vY(`du%p$P?2*Z#xO&JUZ)M_;>DG*1&uxbO452KgmIs~3WjwD)NKxZl5
z`b7q<L;9V^1pof0(6|SH)7>WyeS#q1=;&w$LkX2;WHTmIL?O$v&{~^pDF_0?kV+Gz
z>x~^`f@-x&E(QGCpP`m7kUjSY1l47F{Q=S18Dz4IN(Lr!+3^W%*CkC;!Z0MuGLj@Q
zMSzm~(2NO*f`NINSF_n<X=#ZE4<68Nx3O)TBuTI>N$}_qOL-v$!T$a}{Zvu^=mzdP
z*AZ|270J>T18*72_mB^MhG;!BI9mQDAAj(3{Ahs_Cr;ovj=7yGr6$tK5hJA<IQA}7
z9B6B6Ym=pqOp)FGd(y&*7nWH&c@kmS^lcY15Lq8<_X8>=Ym4>E)PMV%tkgF_S~FLP
zBEOiTPrr?p(f#}P0fuKo;G=bp-#ftn>G!Zl8c4$v{Nmm=N6jYn%YV$;*?Y8q{u7+u
zV`S1ossRL5i0UM#f1QJkm*H^0;PGvI-#1l>AP9(}2+#8-Fic~7q9|0*>gp=pZkLs%
zMeP521NEc7fx~SWThzMvWlo(w!%1Nwv&+~b!@cq<{njC#B|vDru!8ggyr70F9I%HV
ziwIYka$!2hl{$}g;)05TRhp(`Sw@=XsC(~WAACG9PCoNn*f0DcB8WhIVv#{mB}9)H
z)o26=i53!X%IAuJQ2?K2V9W<57$^;+1r=9{cDp^Stn~)?NrG*;<Utj?wvN2~3i7$H
zAmaK2cmOeV%8IGyFF{Y{#Dyvg2R6BCmXN>lE%@>`!0`}nI80#t7^FS3hEmF;i$#82
zMr9T-$0|ylc&-T*w7tE}-rgRb>$1F5W&fZ>w|9tbw^>}uNRl0sxE~xG;CUVk3k$??
z%wRA;YfZ1$GgSwzHP1i)Jnz2yt~nrsAYfx-!;~u>$HDWwv8(%h6EXvegJXP>5Q2@3
z4O2x1SUYukIC(U#D2)_Uyid1}?^Q4{O;HpXe>g5HJ2oSmW~k9<&}y~V*x2CU;D97a
zOgSYCLsS1$O0l}SO26Ny-|w5`zF?}=YH{w|ISvmG&8Z8+N=BNdxUNeO1g5xKXtfOM
zOkrytcp(H*N|u+G0ZhTkbzOuIgkfl+)p#|*aU8NNGvf=>$@AgC;d!1Z&r2!In#H<>
zzf6VF`Gu`<;L}VL`EimY1VLbaHz=g<I1W)1nUcC~+a>@M@m)%Z=Xs=Q%F@!3sUsBt
z3*ZI#EX(FP{WJp;I-17>3{T`F8P<K0B;nDcM+hN|t-G$vsZ*!8bLS2)%-V`e+QGpA
zK@hODwMD1XVS9VqlqKUhHa~y_K|rlmGmK5uQ|DJDrtczC-j5K1&CSiZ5*e4~(@#G=
z(>Fc$!i5VnbIabR3JHdRaoyw}e)wUt3``lg<33M1Zr<E^djpIx7TJekU;rFlzkdCL
z(!$j-cadKO&D&21!S(CcKLCyxVm2n!1@6B7`s;6|X&Sxu+G}Udo;@4S`(0p~$$2^R
zwE2w#Jg&X$`<**?+Hbt^#@%bzuD!|d7s@VtlEet$1n?Yi1vmp#XGHM%(h)=8H-Mi3
z54G0XTpxrG5~u-d48gmf56-!iFl6EZaHzG;p*#<^8JgA?@y{MgYpuo`{}*#m3INNt
R>8$_&002ovPDHLkV1j14zVrY9

diff --git a/src/_h5ai/client/icons/48x48/log.png b/src/_h5ai/client/icons/48x48/log.png
deleted file mode 100644
index 23ac5af9bd3f24aabd9b1505ad8551a06ff8ad7d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1350
zcmV-M1-bf(P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000K;000K;0UmWYH2?qr8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H11j9*0K~!jg)mpu7>oyoYq;6ydy+P6>cIBVoULd$rmyQ99jD3eJ
zeT_au$1Hw;E}8rS9qy1NV_~4ULlYo_W5;%a!p22m(X!aVA}>XelI++{dH_N)@rgX&
z$McaCWx_ef{~7eP3A_~V)E|Tp2Y?5_#oKc(0>A)FIp=d(%Q;6Zqf)ck{LtxiT9e6S
z5QZUtOJy>d3_6`otJ!RR08kRV3FllyzI=Us{oC2u*)NJyZw7=A5JGTsbMyQ8`T4H^
zMx67xaNs?FPs8ExkNy4qqr8STiM+s#$K&TprSda?zd7e$h0b>X9331S7|9FoH%-1s
zUopocEI7*~cA)4=Z&0n<_6S%;q=W@$In$81B%qSr_6V3bsAh3VPNRB5wnjGPh(6Nd
zx2^&essmI`O@@b6(%YD!L?3Ej%Dr5ptRs+zb&tZTK~Yy*YYuE97i`+k$N>P~Mu0$(
zklwH=p>@m077SHF2077~b9%qCjhRO8Ycv|+`T4o9y$Wi%-#7%B;c$pB48a(~)6-MY
z$IVG>o5t1&Rf?n02=n<IlrH!LL4eU{gmSqoZA`O~3aVT;J_4!)MC3)FIOlL22aGWc
zhr^V;2FX_)0b=t~Ul&$|m<$GkfsDM~C#4j7dwZ$KYj&wwC{bC2#3~?!;PLShVHm=3
z9OJ&{`1lyE>mrJxED0MOC`>{n0|377=jMyBpUq}Q@&F|HWpXbu3kfai$zw{UUatqn
z7#L&d_xmYZ{keX>55}03jb8M~+c?B^l6Pj}nj%36LBHR}Y&HX>6qHiwgh^V$z9@OU
z-@MUKx6_%<2y(q%4?z$l$WTfV1Oa-zUgCv>5Ms1fOSxROlF#9tT8T*!2^}6Df>Meo
ziV{UQ(d~AneYe|{<aPTficqOkq~`NvtJSTR#GG?@o(JFerS219iRJY0@Bjc{j9C-b
z_x(iVS4HL<nMsRL6v1^}RI62^Bq*hrPN$eor&ihczK>F=WF%kkl~VFuN<yMUQG}hH
z9jg<L<H*RH$m^PaiG&g(P;~wkPPnd%TCHZ(x2aUCRT+7e;4)AgNR2@5UP$jyI8m?H
zbII3gHLGm0`mn&f4%il=tl<?-G#U--bM<;XL4KJ&Y&J#*mW7%VrBcc0M5EDw=Xo!Z
zO%^hfxM%@jbV4PsI{eZC%RBMP`()0)9mRN_hm(^N0Ko3<?y@UvQ5X-lQgRZ+Y`=9|
zarHb805G4=jkZ}RxDFU!DGN`dd02(GfXYEnY~^Z{kTftIrDPqetonkJ6)@cqgMCUu
zMiwTAmLakVEQD3q54QA%RPtF)tP2*&==X9vZQPBT<fC3UjU4g`SS4h0LdCj9!$dBJ
zy!}){e^5`}O&_!8O`~!Dsof|5M7OuMlOhdnvSjrQ05M0oBNPq<0LJZh`-@2yo7lr-
z!PXxk1nqYF3xF{eoTY^R1#o|PdHH!Zn|*h2aq;o=^z^;$Gn4I;ldaws*{q1`_jh-9
zU$3sN?pv+aX8`vxXZfL<0QdpGj{trG@Dad%Dg>{KF&4!C1n?Jt0q2~{?E@i%0{9+)
zj|F-6b$D9AuyEoLz(1Vx2r%q_2qEvVkk(uLvq#7|57o;50CmzD3G*#7&;S4c07*qo
IM6N<$f<vNo2LJ#7

diff --git a/src/_h5ai/client/icons/48x48/makefile.png b/src/_h5ai/client/icons/48x48/makefile.png
deleted file mode 100644
index 93187aa4f9a0ae9c6431d6bea8bc5d202352ac2c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1713
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
Hu0mjfqXiYZ

diff --git a/src/_h5ai/client/icons/48x48/markdown.png b/src/_h5ai/client/icons/48x48/markdown.png
deleted file mode 100644
index 62ed33c904707f4fbdca3f97b897dc1c3266a6bf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2680
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

diff --git a/src/_h5ai/client/icons/48x48/package.png b/src/_h5ai/client/icons/48x48/package.png
deleted file mode 100644
index f9b43e9af6ff22483e0a7a7f9599a973dc24aac8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2686
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

diff --git a/src/_h5ai/client/icons/48x48/pdf.png b/src/_h5ai/client/icons/48x48/pdf.png
deleted file mode 100644
index 6bb7ab285c58a6498c3c74ea1fc62b29a8aba6ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2806
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
IM6N<$f=|as+5i9m

diff --git a/src/_h5ai/client/icons/48x48/php.png b/src/_h5ai/client/icons/48x48/php.png
deleted file mode 100644
index 1bac2ec1b555014024caf83df9c9f8321e56cc21..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3358
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

diff --git a/src/_h5ai/client/icons/48x48/playlist.png b/src/_h5ai/client/icons/48x48/playlist.png
deleted file mode 100644
index 19ffe58c91c99fd6a9893b287eb0e94b139e87e0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2484
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

diff --git a/src/_h5ai/client/icons/48x48/png.png b/src/_h5ai/client/icons/48x48/png.png
deleted file mode 100644
index 90b70598ea080d62459fad039a92ea6422595696..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2998
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

diff --git a/src/_h5ai/client/icons/48x48/pres.png b/src/_h5ai/client/icons/48x48/pres.png
deleted file mode 100644
index d08d1b172fad0dec688a2ecca5b5c7bc67b7b0d4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2586
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

diff --git a/src/_h5ai/client/icons/48x48/ps.png b/src/_h5ai/client/icons/48x48/ps.png
deleted file mode 100644
index 52c3049296f04f35fc2a63d0c7a26c51f9e06845..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2975
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
V3vJSipojnf002ovPDHLkV1i&J$L9b5

diff --git a/src/_h5ai/client/icons/48x48/psd.png b/src/_h5ai/client/icons/48x48/psd.png
deleted file mode 100644
index caae25896382e49d5be32854d2e69f365e49f8f3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2195
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
VIZ%>^<hK9-002ovPDHLkV1h&}4SN6p

diff --git a/src/_h5ai/client/icons/48x48/py.png b/src/_h5ai/client/icons/48x48/py.png
deleted file mode 100644
index adc5570583f0b1debf3b9ff3fa13f2770f0a7056..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3129
zcmV-9494?`P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000K;000K;0UmWYH2?qr8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H13${r_K~!jg)tX&wT*r0Ce=~DG_LJOQek>`HqP}HIv6Y}nT*nRU
zG-xV2Es7MVke9XrioDc7-x36U$!pP<B7hB4XkUT?ZJ_|J(xMgGw6>hIL1e?VT*Y=`
ziP5)Aks`TE?$`a8nLaG{`tEX<RO<##4{&ks+`D(?|3Bx<IWy<3u-5YbS>#6z;KPcO
zZU`Y1kO4e?@yHn<1UlAQ-Mg6(5JLD*J@wSgi!Z+Tjm5>q-_Gar(;o%OQPONSS8m?C
z`O@>xKmR8}h-GVS03fWjJ<U&Dym;|XpLpVl-!;ZCYHkQ2ey%`w8&^unrAwFo>X~Pr
z`8u#_t<^m@$pW*-j~{<dYrUfrAw+Wgyk*o_)>^dI96x^iIbe1hbK*iSFi|R%CbaIl
z*M$ogs8lM1VThEHBS(&~zP?TvhDm3qPMu<PbrmTkVHmQwxcH$7q?IRx*rCi)sWbsh
z05{SE6yRHHlNU~(KAmVm2tgQzOioVXx^7>Gb8~Ya8uTdXVM&wNzV^2<Cj<oB^PwlT
zT8%i4iQ^d0^B5l==lb>Q6bc1$xg5qA*4EaTnwlaEL!v0c_kE<4v|25cQuw|PKomt}
zG8v39l*{FjuDCrP`>xaH6ale)3=fsP7qr%Ro`;l@D2kY#o+gfCj4?<lDHe+uV{jaY
zd_Irsx(Ff2X0wE0i0iuatm-&UpMMYY^>lmGc~H`MK&D-&r>VhC%jI(4fTLt;YHH-O
z|B0kArLGgjJA*F_W4yGqM6=lh!1Fv#oH()Tpk{j@t-F?zLV%!q9wO<n23@B2Jndd-
zNfX%dw5R=p2M?l@+A&yKtc6A=;BWrrb^iVGd#u+QXst0ulW`qpr%L?cna^|b&^$^$
zTsTh8hrvgK1Ox*vboJ_0ve_)g7$znrSX)~Ipja$Yuh(&17bzvyT8yz=c;gx`UA)3{
zxyaniB%eBUf+*I6VZ>Ie&Fy<D{J}T>f{#D4pKpEb_sIJ0AgGiw`ducCYg=TG#10qg
z$;`|QN+~j#3;@+?l_-i3LQt(%lZk1q<;U0W@!eOiaOR6ob8>DBB_%(2cbPDZ=|nM+
z?#`*H`9<FR$qin9{cTP^`8Y}qUv3SH|D!~XxTaVvlF#RH9ETtX0BAHCL{UVsSj1XO
zE|((+LSB34Ci~}R&{i;2sZc4EXooSaFs2=J&&@E#0>;hr?ej0QUa!+^HmTR^Y;A2(
zuh$8~FgZUg?mi3jOf{&1D2mwH+9H$5AZ5SSVy#(S+rU_h)|P*I<7Wh61VVz4bRt7L
z)C8d>)E41*Y&II)z570;Vh+#qu+}1_L<m8v)xve%#JYn~Xi$0t<e&x8GCn>|p-@P&
zaI7`!&4`O{T_y}8>aB?N+9p?i`ZKiA#IYfYV}w*xDivCxrqhXO1{xs+zUOk}@L@a!
z-gdInTBEh5SS*eNJ757hXaSLCn~pX&Zrs3e99pdwM~@!kFaPcp{{BDSW@@s6QV!Na
zE}v&}t4XXik=E!q2I&x~EJ3KLH3JY5DI{_00r&px_sRJ#PPUA*@MSiFGUMe5;y9*S
zt?ocPFp+mep}w1ga^S#$gwWb%i<e&gFP?k$*N8OSS=*u$L`ZFjV~x-;BG!aaOccj#
zGy>XTgfSqc!bpinlPPbNvDqhxZ~p^pKl~1bsn6qAzm+7=JuEPkz);rkfi;Y={O$K%
zXMX<zORFue-K!C6jWq^q4Op98CueH_fshIiI0A%;@C!5Ki*qnG%ed<Ble^!eIrSQa
znNN_<=aV3@S2XI2LZjktuic3ve)!f^#;4}FcE5o^BBVkpg_H^*yKNyA(owjMgYS7{
zGd_h}hRRrm&iWmmJ@!7CObNmb*j7%p=n^meIT_!<ahxQ_q{rWLDX|yZFw(59*OB`K
z2!)UWVFlK97l&h69}#yjVMH89XdM&B5wVVmgMeV`0V=5Rt8?#=&3p{PTGDqR>mydL
z;d@RJnTBB+Z1-j2Q9tatP!PsMQOssL>@G8u!Ww}<FrIT+zI`3DxlF6RhBX>#Ef$NE
zAdKd*eF0zj<f|+m`V1o81QT|x0JusLwrZ>_-(_y`_zukv$k0qIhJj9#G1el`nDp<Y
zq>%A=|JqyVm7ns(qc{1|XRna=Ekam~?g4Np6sM@pJc%PkSNm}zWd(uOF;kPJk(%Et
z3hgPLqsaLlCh8!ZOwv=c(ImWom9xM8kDUDUm&lJj4Y~t50NsYT191RxyW5Teh+ELU
z3v7cD3S*q4`LNQrBO7F#(A~C%qZ9|{r}^>nEhY{;N+;4tDQIoH&u13aIdtrC@}+6e
z4Tx5|1mXa6*gfKQ7kIb{Q4@?#hHq;JnVCkqnLZ37Tqwai(uHcZT9Ujfl?v8cHfwcG
zKXr;X&VGk@YL-f=Ol$=~)Z*ymGR5h~AiM?5YhB>RbU_;3e=RgPE*RNudz0L~eha_)
z8wlYJ1-+LG?XW<tRwJ9uQY;o}wOVX$Zlbm3=)MUK&Q7p&<@>A_CqO#LP7O0*z-&Oc
z3QB_T1_)@-s=IM09q%I+ZQbVPYQ&?T`wBvRu*}{iDh{=POz(Pn*|*m&7K^y9OAy6;
z{i|oV{N8OY{pS@rL4dGj7E1wEZ$QTD1HE$R0YR&cHMV=;V9jfUvBDZl7+F?UHz_~z
zWipjR2-!a^hvg(5CJ&@{L$_|-!f_m$%_hf=9YeG?c=pMY>@O*@*(^C<;9vP`kQ!Vc
zjM~<?#?9us6IAOi0j;@xx5;{Y5^@XVizOyM`8e|*`%RQr7`FfIYmdqUJ0!h~SX^A}
z3#%s{eFT8de)<ytn5e~_cU-LFg1hZHT7%S-_sw?6WR8MWuz8t!djl{3Gz-7{M}$#C
zu24cqk8Xu?Cyw0`?8r&Ho2;#^5d;Cg?<0gD;|appAq*kw=DHC_rhMNh!s<6rUIDfA
zRocNCZ5iQa#@TGwDL7eHR#uX_QlU^7x}8j2C)(`!(vC^Io4Br<6s?31bUGoO{I78R
z%`4!}f<Fh|Sl69g58OOg|Mib~_rlkRbi}=z%VefcVTDL`cRhd)DZ?jm?_yX9BYiKI
z%i%a5ylPC0|4V1M`|2frbne?6`P3;&`;OxHGu`KLhy91{aQ&^<`R8-XR8Rg6`yc%r
zLMS}1>o(~+(l8=JHuVe=cxV^8ckdpK<Ird{s8*|tjg65lA7bw5KV#$i%e?pIcL{%R
zo;Yk_5LoNrWXj|wALGPteUtq3Nt|qDq{ervN({PCIuGpHS-QBiu&@Ahw}DB$Ncm(d
zNAQZXln;La-Ki6G>VU!Via34|l`Z3D%1Fl>IpnA)G(>i0;!(hR?ZKUrl#*t%nM~?J
zp@33~2M;=o6(<O7fqXvCMx%)nyO>6sg@s90mhaPOG!pUv*=!caahRBx7#co@flm|Y
zD{Kub^^Gd;WwTjIr4qgG3PK3>?VH1OU5qgR<nm(}V^B)b>2y#^Q7V;^K+vmnbc<wW
z2k;@2e0X7NP{YHtJ}6pin$0Gz>!OrGDMb`TXsrpu5a0KSq6no_Qsq`k;kqty949+3
z&+}+Do5{zL-o0J{tw(ZDfkRy=t?4w0VPuRkv|26Z=jYkj*kEI0BdO>~DY<|DKEChc
z`#wPsu)e;Yd~?WVvsi0!UANC->90V(?_-P^1U|efF=)2k{J$qs%4AYkDitb~O5gMG
z@$tTPsZ`q0$KY>ErP5yWU`HYYFiT5Io9SN-%YqLP9sXCcN9Ijr8>1N{5CHY_=g+@8
ztbD%P`uzXu*lRrK`v3X!=ideD+n5s<Y5_N1c;SUtqA1FrIdkT~;lqauy_eD*>~(M0
zvmwjjq05Ke?kz1XHO`$ocjN5Yv#-$oLfL{3K6DG93Y-K!4jcgbo%f@cI$hwGfwzJC
z)>@k^AA}GRC<8Ne!FwMK&XE$*C9w=_*lx*h=lVwo;m~!hU&KFq#Mat4ee=HoBylkE
TX@XK200000NkvXXu0mjfV|(#f

diff --git a/src/_h5ai/client/icons/48x48/rar.png b/src/_h5ai/client/icons/48x48/rar.png
deleted file mode 100644
index a9b49d1f2a20b3ae0c484d263a473eba9385310d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2309
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

diff --git a/src/_h5ai/client/icons/48x48/rb.png b/src/_h5ai/client/icons/48x48/rb.png
deleted file mode 100644
index 69e0da5284436a8d6ac536801d863292222c513e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3220
zcmV;F3~Td=P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000K;000K;0UmWYH2?qr8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H13=v60K~!jg)tYOJB-d5Pf2VHMt?Kv8bkA;PcfB*S8+(mFvcU+G
zIH2YAAyI^dK^774fh3=>K{n!HFb*Lf5DF3!!j5ndLIk0Jg~&uoA|e@i9VLDw-pxby
zI?j4_cjEQz>^!!oyQiO3buS;fyQaIRW_BaTayX;Xbl2n7|9_tMoEfp!^8Z<!cN)N3
z6?gQDh$tWcG(URe4A28Q*4lV@G9e%${yq2H^R6eJc;b=y`T6^Dx!j?50_A?vY&O?d
zR#yJ|fd?M=8xdKv)^-8JT07MI?3puXK6&@ucmIwthW%ngMBY}Q2ff#E9A13!#eX|}
z`t+Xw8`j!*=q4Fp?$oJMABf|4&mtm{9B;Sm_bzKKaU65%)Ts{ua|6tY3wc0!YHF$+
z$9?y@a^(u0P6ul(p64+=J<aOsD!pD0r4%zWGjuu~I-L%l=TWIt5D~K3Ea%UkC!5Vu
zDwSw9n}lIVrBY#bcJ_t@MwKTbdz3jfHB|=6z~xZ_3h=G9$pf>qvqVvZ<2Wd#a9x+h
z#YL1-bh}*~$HDh~!Z1WBmD~ex=bd*F$1zGN!Z7S>$n$Q>0%>GMNen*w1I!5lVGs{P
z@qHhyHS6o^7-J|Fi^OqE6h(NRN4wol7H+j#xUS1k0j*YxAP5M8fO@@7p-><Q0$QzB
zV%0DV@qM4^>1nLBY;JDid0yf=uInZWQA$k`kijvYMu#$7Bn(4(y&kUXQYaMI+S($H
zW5O^b2m+eTCf#lqtu>8CgCGbH5z6H<+uPeTn@x-{hzP##Cw^S7*HKE*>-7>vRjbv6
zjMf@s3{ey%B+}docC*kd@SdHWozD+nIDBX{phg2LiXy@=B%95SE!gRF2!dejTo{H2
zy3i!BQP&xDYiliz<B-qi?**Q>)^6;vKpNPstu3~<x2f0bL{Y@CW5>{1(`vQY-ri2E
za^%Pnlv31cHNr5Y)o74aigK~Yp+kqp*A>Bv;J7ZLHR5@Q<1kQYYA~l|!BGNxt`4<d
zE|;lPDvAF?-vYC<v&_%WC-=v3j04Qg%n<GDU>XhLmDiER1_VC!XP>6_?9(*9d5*|B
zY?_E#v(3@>|0;Jq@)zj2ImC6x-k)ZnQLLju?2MXgR5ms?s8*{Ki^arkhGd$}CdFbA
zUu#UWNo!*RXLFtUfBrK&XTFRIyJ$xUW@b42cmGQJ_1CDLJxg!%O`29{S;e<L_g|d*
zpD*ycU;JOPCr`qF#Hb5R;Btl}Zfd_11OfSco*)P)l}dP?M?Rm&bzQRAEV*nJx7S0i
zzDfP5f8qRxe~q;-Ezxba35}&^EbZ&p>7M;6`aP$qbwe6>ba64Fu#V7*W4`dG4-+>U
zKTyFOb)i%;?RFdA_fblb&*%4Cx5g0H>oi~a4lh6U5X}p(;Q-c={)%Sz-p;i(=05xf
z{L(*uimyESmvmQF2mr@|7sfO$UZl6Nfhv{2IZ(IB#jzkBnrav{jYfmDwKWQb0$OWw
zxg0POh{h0IzfSe5&+zTX9wOSV;s_WEp|OB~?3&(NxRo~_yq8|1#jVAd@1I!Yjf<D)
zB6J1lbcow+Y#jH4JS7WF%8-DQW`RPXK(Scdvp2EUCg8Wec7|{K;YW}tN+N5NgmnaK
zEQk;pxcZIr7-NWyC1)&07LN1Ul~p=%jEQ2*pmN_p61-zsXq2sp(CKuzaNz<X!s6m0
zwOWlhj+sAxoaJ-pIAlW3e(WL40Q?a6D2d2eaD=&E|1CD2eVSIMM{F#{SYm6DH(uvN
z`3UECI_TISgNjZ{Z5Xk@o-8zWawtI%aO%{lq>>IRZM#;Z97nwH=mT_W)!mdZK|%zu
zU_77WzxPLc<@8-+;Egdv#$wm6a!V#pJ+wHkJ9zLwNhPpHhGktuXf~SwG-@?ewaTTX
z|6t>Lub~I%9lIN^LlO>P1b*zVKFPJSXW0-R;x00<OlTdtBJ?8YHk#ZrHH&y&LSVnN
zJ}P5bX!3#4LK21{jYfm!<|e`Fn|$Z9pFzca4QsVOiFbeWL5}~%hp2x0ET-AO5kb=r
z@EB)cJ&S9hI5jg?14b1&fo=aRw4Y?NS&I2Qkuf~~nNQPdcl+A!bHGor#F1ZqKMU{u
zDYicSactNlGhL=xy-rX1!0pJ9>BM;XJmNS9y3i!Xu}VC7W24dF(xpq3N+q<`%#}(I
zMc9|WiRZd>qiAfgQ4+V@_nRC&Hp|+-{}aR(YYc_Mhp2B?i4Y>`?}!axtq_DUUZDU(
z7uvrH!$>9GlZBEmA`}V*?zrQQ;YGS{yn%KVm3EzlsXQy&I|+&5lfDvu;^9BTyKtVX
zpZh%47;J37SahaDgb<4mBgEnmiI8vg0PqThBnzeOP;Zol_DHYSV|8_vAPCT|OQze!
z@m!{U?ib-}X8`zqtx0E)yNe4ac;BCYf{jo8JsYpSvitHr0!+}|172C1m_C@ALPnaG
zn~|}OERFHh)D({6;5rUb7{YU3X7;`hVWS9n={W>p%_@HK!H0SGdw-snfB&PjRxXVJ
zPd@K7@JrLw>osBo&-D<~#kxYqx@5~UV+0Oxq129Sj|*w7>2x~%{uUsP*<SiAb3gq)
z79Ra;>My;(iEJK!;RK$7b07OS%NJh9%Vh8~8FaHgR#~mJWD5nV^#*>vfNj^XSRB_O
zCyHQZ1_nLB59&gDECBuPYISuL-}gB&KhLH0b>eD+mmc|Je&!R8;Y*A7+7-GNo~Ko>
zvi|%FxJHPZJM1)@L?TEgN07;oX*IB&Hf|Imp2oK7*nX^H9LTvY?)3E7ChmZ&m}&uM
zwCl0f;`=_g-+p`lToiG5c9!pUVm2<n!ty`-EtN_J+l#PaNVgTyTwezS1%pfvQM*mG
z-C+a4@v`V^>uA6z%kZZskkcM|ro3ktI%$o;=Ns37$!=(EZH>mt3fJ*4*0B8b?^3#L
z8XJb#Fy?AEi@{<sgjgIT$?-$!MG-R*WR%02vP8CjJ;b7YkIinE#?`C%xg4J7CF7dm
zKp@Sv_RT`0n>v8$sVRa=h4a<xD4<i{VQb6B4MU7E)It}F!C;B$Zy^l3g-Wbt(JJzu
zLc0#rj_|#>L)-T6GJ(g;;ll*wGHwtg4g92HCuQFto)qo-m|~H_+%Xy#FJiG=uEkV(
z9Sjc5<|eyN0g(knhymZiQO6^29kf#Tu7h?JKkI1DwRWgRJ$jyt4g&lj7^?-7{lLgv
z2-x+d)F2)eQ3|(Mq_}W`NQ6*1RCgNGwmUT30&x^#>@I<!B`Tsg;rSGNmz?&<4S#Ew
zY2W8pDiw}qGVCb9(fVd~qGNbdTgtQ%h6Q?BGylPRx%~C#=tUvM5t`*PdF?0uZ?Fgs
zu5yW#Vhc-^2-gT6A=)_jO31{DtoA5oa@=+6Nos}uMsB|WR!URPB!L56Xk}%EUaJK&
zWfp(?BV2p>i&VEZXu6<xcCfC(h(@UlL6AXfAJ^CYdXUYcb2)UONKh!DN>lhVW!%y<
z;(0h)b2yttwC-;NQwCcTZDnd5NR{D(!}*Urd6H;xky}sy0@1Z=#I06;0ngh#w8qgI
z$MbM}AFCANx;UPPxNd*;qtxy&%W)8;P$N^mo9G4hR^l|^qv=#c5Uuf!9%WmEaApP*
zhQwh=tKDX%QXy9;kjZ8dr4XgCBK?I$V9;CJ!T0^fCuzMv8u(EHV}q^927cJoC)Y%%
z96d_CUdNdJ?!Th-o;m3rtuS5}4)XQ1X~aZBvv)c@89<{WmM{#7<Cr*(llf4gP)L3G
zTag1mCm2U1)rBUv6e7ab))t*khhDG8ZMWU_mVq85Y2YV_q)#O#%{EG6I9&!3w|P6|
z0Pv7f$N<dp@^XE0k+fO;55rZ`03T3!6B%GkG&m&C1!_x6ORuJ7hJ*I!Kdj?M?}NVo
zFD)&-3e*Oe6BlX$mmh!p@n^y?%-w(g{R<~gp3Dy)8eQN<=hCjFxx+zzo_20|d3ool
zr=Gg}<daW6L;o+7E!h1NlK_W-9|!IP7J$+o6}+=jqYwOBz$?HtYpqST4<h0K)4;pv
zgV*m2&V8jvpTrtawbmL)+5d=$OW(DA6#v;Hveu3bqy7)eDjiw~+=_4j0000<MNUMn
GLSTZR_aTe`

diff --git a/src/_h5ai/client/icons/48x48/readme.png b/src/_h5ai/client/icons/48x48/readme.png
deleted file mode 100644
index 84d994d834709c560b24d592b5c0da298505a15e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1346
zcmV-I1-<%-P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000K;000K;0UmWYH2?qr8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H11iwi{K~!jg)mpu7BR3HKW>;ECmTf5(>;x`+2iU37q%<J7%saTr
zYvdtPy72>~aiteXafKU~fq>wO$bj7WFOIZ6Nm=c3nL;8#?UK8cwDLJ0KpeF@JN$+-
zoFVBW&N=?iaK1Kybx~4(5RnU@3c$nrGcE=&1@JHDoXMx0bIil2(r&jubi3V4-}fJ)
zDB|y_`M&?q?RGEQ?e+%%6~UW0=VIpfudlCvJv}}BSuyI}fQUduxVgFc?d<IA7XVM3
zb0!Sf2Jrpk<Kyp*Mx&LdXp_jBxZ!a4_rbxzPXPYnoPQB<UIx%=Hk(@V!um~<w;5~B
zv4t6DxrkjTag|i4K6`5q7(7zJjI+!%G;a$~$-cD*bR1N%d0R}QNkt|ln=&NnY4JN5
z1u9en9GRLlAFHI7%}`kcOc3(wcS>K@D5D2#NEIo+YT8x}Fs=cMnABo48sYWz6=4{n
zR;!`eY@$@s&zaDx^Ss75NkU!3GKAEoDi!^_1^`hM!S{W*u8V553eGtOgF&ty^}R`M
z&YM&NQZunGCX-2Owi#oXPNysD)NykR{k2i4R8lkNx-LA=D?+_~5u4K3D)2lH<#HK8
z5Xfh{ySv)3)FCOCmqr~F>;cX>_V)G=$1xaVGMoz9C`!HyS;(X~Sr_skWaBsn0JyFz
z`?lYTzQF^ML}nT_4UlDo?w#$7FX0)j0oKrYgNP6W0fxgNf*?Q`hHzaM^?DtxR^|?U
zt&mD>B~;|?MAdiwejki6RI61Gk<2#Z@fbl6;PCKpX-_0;fyz~9fL2j*52Onb#u$!{
zj^H>BqA0@s{k?ogL^A)E%Vlfwrr${{RN`Fi29!!AIL_?za=8r8^HSB-b`e`bR^rSo
zqzfUNFkp<O<XqPUU>ENeA++8iHVr8HK@g-Cc&Sv{$VEZsiEP<;BqB^E6Dcd&*4CCa
zA<HqfC$hCdNW7a&CMlU(t!BN2P-T`0Arc0xx*HYWjz*)@f)y#Xh!C3VkRDiSH=0Kv
z3`0z((}nQyJa4J^x0K7@jp~pWLgVo`rKeV_Nskm!$dWn=$wC5R_EmVE2O=uE4oFz-
zM)M#%!x&2uWsEJz2xN_A;Q{TLc<r;KIQy#Y>FEiB!2qMt2+z;YMIBk~7O`y|5YHQp
z1{}v(Fdz&=+}+)w*XyNj9<p@hjHzA3D~FI6h=_1<a)Ota7x=yp#u&D@x3ROcgL=IV
zB0>~J)&}SnZ!(0`I<P=QtqI9~66(7+j?rqhu)n`A7cXN>yFXgS5RH7g5}Oq1t{1b2
zL{VfVXM#o5)_Ndyph=RqsnqLMTSLes``Ybvin!WW|J^il$S=ScLM9_r6m^TIBbP(o
zd@GUsP<QE?HSoH~Tj=xgQ-urw;$E-k+bG;*%NiR1<{V|Y7X}0XhMi95v*}*vEn+`!
zJR(A;)A<Zwh#6-YLSq2^i;Ig-VHnoW&(A*|A0Ka<{w`qplauMWX=bx#JlVg!z5Q}^
zb=AMTy!-^9Kj$nDF$CaS06zfu5x_?Pjnou;T?{cJ{s(|R0X%Tdx!gVwkptix0N-Io
zzL0zH0x`wRh<gD4aL!{ue-18T7FzG|KYK)+^Mx}1A40Cc+X?Y;M*si-07*qoM6N<$
Ef(#&OrT_o{

diff --git a/src/_h5ai/client/icons/48x48/rpm.png b/src/_h5ai/client/icons/48x48/rpm.png
deleted file mode 100644
index 1264e621a9e0cc5c8816d50083baab0dc2f1a0ff..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2020
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
Ccfs@k

diff --git a/src/_h5ai/client/icons/48x48/rss.png b/src/_h5ai/client/icons/48x48/rss.png
deleted file mode 100644
index ccf5882cae543799185ab062fdc469c5460d98ad..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1839
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

diff --git a/src/_h5ai/client/icons/48x48/rtf.png b/src/_h5ai/client/icons/48x48/rtf.png
deleted file mode 100644
index 62ed33c904707f4fbdca3f97b897dc1c3266a6bf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2680
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

diff --git a/src/_h5ai/client/icons/48x48/script.png b/src/_h5ai/client/icons/48x48/script.png
deleted file mode 100644
index cbae3e1c25d2e00d8b0d7d4555fab0b32fb32119..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1881
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
TP)On~00000NkvXXu0mjf-b<G`

diff --git a/src/_h5ai/client/icons/48x48/source.png b/src/_h5ai/client/icons/48x48/source.png
deleted file mode 100644
index c7bf4344add881dbc398c15a2b4c13446a1a05b6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2443
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
JPDHLkV1n+ynA-pV

diff --git a/src/_h5ai/client/icons/48x48/sql.png b/src/_h5ai/client/icons/48x48/sql.png
deleted file mode 100644
index ca3fa0e5f1290fac3175fa2db78338055871ad2c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1286
zcmV+h1^N1kP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000K;000K;0UmWYH2?qr8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H11cOOLK~!jg-I~u%TSpYef9LxCGpR(Z7^qMdtwdJYG%I)lo}yCo
zN?GR-vgx|&nq8}kh!u(wB1Nw2pb7)A@89Xdo}0PXbA4?C!SqNYxMO?xzB%W7=gb&U
zO7W1*xo-eBHP?I)krogFKI=y=2V!8Xl*)=(r4-XJ3SPc^`K;gX|Cy#~t}K@4xpib&
zHZ#&RwT>i7tRs$N>xiOAMNy<KE-uC=Cnvui9v=P(1RA#}rS#5kot>Ti{`Be7=Sh-~
z=lQ*CbCbP&`}Vi}{rz8nfl?~d1ik~FB}wu}k|eUO-~q<taop{84}epp)RoQw4|w9b
zu8c;bdxY0)zVG|M6W{}UP2v_10BajM6$_YPE(pkUkY!oTXV%IJyl(ZC2jYRkOacx(
z7y?C&n(@H8hmeSro=pM*>+gXnfr5pZ#1A5brUV>pNjw^ja9x)uitYhgvxx}T*Vm=F
zQWC#=_l~{2J<iY1*N%ja{ZF4hL0u9bA0M;3yUW(r7L$TEYr2WL>j9H+*3Ye03#AnO
ze!qlA6L0`0%QD8}F~09}b#+A?$E0aWnx@5K-@-%$$8m677tizXeIMWV84iaUgEJka
zo?mQ>t*I4Q|5pS^lH}V%S<<Q)O#)84-Tt;{R<J3?0(Z#+olb|rV6b))3J^sRgTa7K
zr&F3QRbtQc=ytn&{`{HYa7dCQq-jc)Wp}DV)pfNBwOTDa&%<?HHa9m5Y}8a@>GgWN
zc=3Xrot<J~z4%>AsJXr_S|U;mfZ=dRuh#=hFH|g|>p&dGw^9ep&)7D@_PgGFvkrt|
z$ap-S!7y_oyA7)XU512yHob2#>xoQmDx)U2RY{15wXM)L#b|A(WmOri16)U9UI^)U
zcO1t`WQx)10Y}Sd5Ck(PpGAPr1H3GW>dseW)ZUFQDx-DbFb{AOcr%1d3H3aWAP9K;
z_^~OYg_Q^_Bcn}<bd%Rj`P77zQe0kMY8kZ>ka;qiWtlZ5>z?a2pvgM`uIu8uF23&*
z1OZ_f(r&j+8MP<z+%2nsZ6dHL2@xqBWNOsNp2Rj8t^R>|faiH(Q4)1)YMWxTCULEd
z*6qe3^L2#kNL1ysO3;we5&?m)-Dp)tR|UUnp4doOy3yH6Y?IMAj>)pDB&EybKohB|
zr$wYBp<x&jh9R9!$COd~#a5k++5p+?w&qRw)IR}JM(r0{N_~~lD2j;Vm?TMxf|lob
zadT%2q1(t4^EN{7{>H`zj~+dm+l|5!-RL~PP48=(Z>soJtc~61BB8Sku_jXU-UGAU
zsCg#NfyTS_MRtDK&n)UufH;n`Db^B!2)KCv{{6>Q4)x0tS`@T7uVwV~^z<WeF~wYj
z&==stt5>hyY;SM>d~k5Et(0=j1lCfzY|@%@b->Me5h;>b_d#J8A|mP0(a}GzU%!6C
z<QvK_K=DPl06V~Q;3wb*U~?%q+`U~e0sa?o0`!$qO7sqhhy!$h@0ozNUr*nk#Y{;2
w4g9N=%3<mO(?rB&5?br{&mO5#Dm5qn0}aNL;nT4k)c^nh07*qoM6N<$f(Nx>uK)l5

diff --git a/src/_h5ai/client/icons/48x48/tar.png b/src/_h5ai/client/icons/48x48/tar.png
deleted file mode 100644
index ba2a7738328f7fb6cab46131cc26063c85c6bfc1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1013
zcmV<R0}A|!P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000K;000K;0UmWYH2?qr8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H119C}3K~!jg?V8U{<5m>Lf9Lu?svwhbLl>!37F~7IMG<)sc9r@J
zJPBgWq7N|3*^K%CY`Q6nN+3WQCaBH~NKr%y!Lfb2NbGTp1D?)QiKBj!73bWm>+kdV
z&b^LrL~Bi*p%zWxb7AJch=>8WfX(uWOMnm<X|3Zlm<bROXLon^+x`9hUwz;2Se9i1
zJZG`bZLivAG#WizU0uD|+uPd{k-xOo4*;UIPVfBJXJ==xx3;!^isQJ_po_rq@$qjv
zJ3GGs*IMg174Q}C{b)4$9Wa)aJiz_^eb{U^JHVON`tQ_27Vy$EO(P7$1=4#SuIt*s
zOW-YhtN{aXpqd|-01gw*nE;s{brF#9HH$4Z5s)D-KtXK;WNXw)WuR^~0L&I~-7NHf
z5ib&}SHy~%WI#k9$9H9Bp)6Qu0f@-b3z%9cL+xgvDZka5g=(`B=Q8kUC6+qWz!c?0
z47JHXhL!q7RtpPF`ISCS*FFPvn}vWH7I6_PC7>2HP%PrqOOg*RGo}x78Q=UKfEo^m
zIF7RjUX`Gf;_mJaa=h~b<ox^`-}jeNgi;FIw&`}eFlQa$<m7~QyG^Ur!nW<10kqax
zeLQ#mU-gUQnCt87l+xpsczu1HZnsOj-9|(R!;mlxiK2)oib#@VX3*kMyl9nJdY*oY
z2&QRb+cvgs<9QyQ=V2HIy<U%vjg7e(P$Giw``p~zFc=INkH?J1W8yd_j$@J}$wWML
zx5|jkYb%Z;A{d5&Wm(v^jpI1Du1mAo#P@xAy&lYavDNSQ@jQ>s&CN;|&f`nPQxWN*
zltQUVsovh+((m_Y`p#IW(P(5A0tmw}%R*|Qr)*Rvx@w;^E+R8`-}5}y*48i#gCGcK
zG#W7Pt;9SFMNyR5=sBWgZTZ+!?I|qFdL*J?p;7@!5Crk|_O|gU7Wx#6RP9@|Pu@b8
zmzOb<J>wYx55VB!;^JMm+uh1rC_f9Oh5T=AQsq!em0HNMEP^25^z`%{Fqm@A1Pp<<
z2L}hQTCLX4old8vwKnHj=u6tC7*D5B%d)Z=$aP&rBsw}e`fzx7_=?F6<q$q@bPKQv
z`~dt2d<Sfl=6i7%Fd_a2@F(zIYpo?W|0>`G@C_64cKJ99L&!u#59n*H6PRWo4-qk$
jSZf*o>=9|LqkQlmEopF4<ycqt00000NkvXXu0mjff=Sj6

diff --git a/src/_h5ai/client/icons/48x48/tex.png b/src/_h5ai/client/icons/48x48/tex.png
deleted file mode 100644
index 66e57411296d0ae4e5ec9d3c47dc9b1df3cbbb01..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2160
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

diff --git a/src/_h5ai/client/icons/48x48/text.png b/src/_h5ai/client/icons/48x48/text.png
deleted file mode 100644
index fefa360d0e18e5a0ea2b7a8ef3e375b02767af58..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2754
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
IM6N<$f?91m%K!iX

diff --git a/src/_h5ai/client/icons/48x48/tiff.png b/src/_h5ai/client/icons/48x48/tiff.png
deleted file mode 100644
index 6bf950b7f5e8f280e0152fa8b5a40f951f442eac..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2690
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

diff --git a/src/_h5ai/client/icons/48x48/unknown.png b/src/_h5ai/client/icons/48x48/unknown.png
deleted file mode 100644
index 41c53cdfcfe88f4ba4b5df56ec77eea30985042e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1420
zcmV;71#|j|P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000K;000K;0UmWYH2?qr8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H11qn$+K~!jg)mpu7>oyerC`ys-II&|pcDH*0qf?iT0gQ}&hb(=K
zK19bXet<5S`~n^BkR@YbptwU5AVU!32Zb$Lw)`WB9c&7eOiEO2C+P<Wq5jVK4*4A(
zQVwB^;r|TdqX}#aQ#>JrPyhu02l#x!g#Z=+W{j~Qy2=>CT1IxK)A`cx_q(If=-Kyu
z_L+{+X!P9g_q&}==L-Ov^CpZj-t(u|*Vn(Fot^zE1ode^2mv7kH#awboS&cn2H=%3
z7VrSd0DgRVdHJ(asnoL!?GsrY=Qz&4&1Ul#0RJ$?T&{BqK)qV6O3Cx+_f1~M*P3G;
zE6!08QwX|B8WgX+_XsFP#KwwqG}Dmv5ratfy+=UCL40g|#HZ1uA(fGR1(F<Tex6i;
z2r&R7nwlgpi=?v>O%`C@S&ct0z9+P!8l@b8EM$!Wzb|$~8s0i>ivcKeKtq!e#^W)j
z(<y==fbaV&C#DHXDN3ahj*gC`@5usAszJup6fPKPvry7O((z<6!C)|eWm%w<qF5|q
zu~@{OpG+oj90&D!9mQf%YL7#dkVH-fR7w1n1m(nR+Xeufo}NZ_=JPp*!yy2GQVL2b
z27>`i(}ZPNx%|ku8H#o;gRbksG|i~Do}Qi%h9SZ*gk@PU3?sV77=vk=7z_qVQW`Ke
z8USKWlIN;pxm<2s3xWXS@i?+uC={g6gkh-VL&lAROUOtDqYFyuMxq&p5%oGhm*tM{
z`?+P5<SUXUIz1qQCwIAA-gurTDFAq$C$-CEm$aFs07zz`*u^x+idv~uf^FMyT^E*R
zp;#=&W-ZV2HneWr_QuHNs0Gphw2>@Mj4@D3QLR>EJw*tC=XnUj5QY&~=<)HfwA$vy
z#!^B=)=E^T_gvTAu+wNXV45bvFqFQN3``<ly`_XqE_tTC#bN=^^FS$Gc{L2QS}jmY
zGs&yYlZaJfZDtxEgkU%vMl(>MP(Y*6001TV9FSIGq9Y+4y%It&pU*L!PGJ}ZN~IDS
zjfS@7H6*lM66;_#n}HA#^}K8v-UU*3WO?-{f>-Fn!^2$UHGN8VWIK^iav3ZZtGq$v
zkr3elY`b0LHcn1XP_NgOYnW~9Ll}WvtI<3pbQAuKKIC;kR~~8ifmQK(eSO7rIz^>Y
zL9^M67Hv8N(<GF9f2VUlV+_9U<Kf`}K@h;UZOmpfJU%{Zlh2FPB+dig`;Oy)QW_(>
zSS&D`&0yR1u0}wf#BXLV;NajuO42lUT5|M~I8Pnm_sZom2qDpyG7Ll1YBlNFKg~{t
zPiYcwB_ZyN5Q28QjnQZX$8peVwP4$Jw0+dEA+}|5f<i(u5@JnAwv&*3wX0MrsMTul
zeP2mlXGA6BBe!Azu^^I$WS<wahy+1^AP7>QQ9+|}t3Pa|k=L!%+elF%nPgl2VM`<~
zw#C2uMh5v9loC<}A!1jb*|YLPa$o&bBKcz4SLS_;M%FaC_8*ZD=l<~a_I9LWaGyt-
zZva?xjP|5FfH?rC*Xw;({W$R++RySw2tlvc`wqatigP5PDS-RS%gb-e<?`_2;^J$&
z-7c$s7f}7=q`I!^*|Z){w(sul+^egr`);@U4Z!`HbF_&e09pWk0`N0{uK+3=UGTAR
zup<5!fWHAeGsal7d?17v08Rk>fED?JkKw7r0;?dN01OyoAt2uen^;NfGyb!O&lvN?
ai~j*7Y8IT}<AhEC0000<MNUMnLSTYzl7pZC

diff --git a/src/_h5ai/client/icons/48x48/vcal.png b/src/_h5ai/client/icons/48x48/vcal.png
deleted file mode 100644
index d026cbf6620e285944e82ba725a0c21adc20d606..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2736
zcmV;h3QzTkP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000K;000K;0UmWYH2?qr8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H13N1-QK~!jg)tX(1990&_fA>~ZS9ec$rqh!st}GiTCOa}?mLW=n
zAd*Rlph;j^FiQqOHa_U1_>v9igIU=J5g!yai3$_K62Z+%#3xyZEchZgrn6=;`Cw)q
zf-#fMd~{DwPghsneW<=QRn^s#4~Jd%z-4Y#-8%RGKj+;4t*#oOl;Z!{<o_DL&owiA
zAcT;B-D)e5b6bCnRl?B(L}*TtFvbHKKwT;2>5~BgA%yk&?c0C-mwo$=cf0PBqF%RH
zz8LZJ+qd5y02qJu)qk%B`i}lW<*hOqx7yV;dg#=tKMEnHlv2%rKr8Y+ho5=oMCQVU
z?ekZ!;?B-Sfw%gyudi+xh7B+~Hda>`FQ$`7-qu>+WPksX_BVIwQp5e>hg2LqN?{ZV
zMtbAM$KH7Exqp2A%{RM+5YtL2SEnokJg}}-+g2SNr8zf;k`g5ZN=lH@2Ph>US1L#I
z`FyijEV`dmtH+dSqD&KI7<boN_nll?`lMJay7_#*`8UV;I6PMvLvwD9>gXtIZr<z%
z9>6d2poA=-=v=;RD)0ffqACC-MBw!CzCLqY%Ccb?^6`fsHkqEjyU54vvA(|4m{R4%
z#YMLE_1S825<Jh(fKvY4O8N6EMdQ*X2^3odYMOuqY|nB08^Yj284yCSwb3~E=(ErM
zgi@r&#{N_{%>-C?ZjV;0&;NDr-W!0BqodE)TTw?TpNQv0NO+C|A(06akc#DKhrx?b
zO6#MeX>)4o4TPXRGXuuY6QafMzDt=C6Msf28n<qtOfw2xhzJR_jF&J005kz1gnxsS
z2q{s9u}ne;oJz&lxt|GMTXTNi2WFZ<q?MH5x&%wP1wOv*h6zYd*Bk^TqgokIEizhd
zf^n;5p*mOKM_tOuI#5F3`RWv8Kt_G2VAU%r>Ds!LzEh{j4i180(EH9ibnn=KG7L6-
z_#uT|yAbI#zj^(2KO6VZL`cD~ER<;?EDI$iMo$mM+O+{5B?R$DpYYBnR49E)N-F2h
zQT_gVgkg{!7@&6fGTl3O`q?o}ihK7WySp)p#UQ<R+hnnbQ79m78`<5BwSGOM(}-*q
zY1@cwHo(I&fne8;lu&pP8(m!p)AVlw);|3-R!<MvO`9;*uSY4x^^p;N_2P?u_U^Hy
zWLFo>xj95WkCDkBOcPPB`wQ7LgR<4Q;)}Swgj$iw_V=^tt+&W--pt~)Yh-$RnK*KU
zYsZgM92x?kQYzs&&OJw8?>Qos0@GYp9m~R4vj&k)BWyb|-iwuxP)Z?$SPwk;-JU&v
zcW&GW)JJx8`H=vGWr6GZ<zpDWA~}vf)-e43YM4@fnRp&b%W1P2^v(P4XX_VV`~mov
zQffL}LP9TMTFq-TmZj8neJKT$>-uD1d7{-aT_)kO3H9|T-7!NaM0gEoM<QI?t1X=!
zOe>8_BIEBpqSYb<<lvbzs|q0AkAO=!AHLRUoZ~p~`RB<yaopzT=K&~}%jENUYPA}M
zVesIC4<>>VEt$I;&|$zy_X2pK5^Xk{k!z7P5Wn%tl`CX287h?u*REZoP$*EV)dB+X
z$-)zL%0g0<^?i3ipsj>JZ)71G92{(Ow$el`MZ0YlI<+LiaT1M2LldBlKqA@>1Uemi
zF-5u);42Xh-wUlZ&{2gtykgN&4Lb}ZwdFi%%<aH?o_E_)i_fvRxESCK6QC0TAw*kL
zwbO6E{g%%@`;4inDICY)p@$w~-@bip-@d&g_!~EFaOB7lCMG5T*uQ^2`}gmUfKDRf
zc^*<qmX?+@0on*8f$yXsr%#{e`0?YBNS8__N~IFR!^0dnaG(wR#fukt^UXJzot<q9
zMwo28ua7;?3ugd`J`1%G=mfq}sc_=N2|Ujum&@_;%P;fFE3eSg(*wY%Q>U1op2qV$
zJkP^*T_z_dIehpqv$L~pWu(XGk_sP(`>yM@t$_%EJ6UK-DZc#jOC1Rg9z4jNJ$u--
zYZouQ^b$%bn$0F>&YX!%J~K0e<2dy7^|5>R?qE_4G7eT>)5pzb6Qxv}3bp?pfVK$5
zQ+wgUh2Y%a;9xMWzrQ~?KQ=ZNiJVf3p`jsOd+jyWtXUJ8BRnonMEAj0Afv;h1b|FZ
zlCbH>l*?rR48x#UEC%PZ*({k%hFYygxm*q=_B@Z?-d;9u-W&-~JXlHRfQaHr|CNtS
zB9OR~hBqdyNH=fZ#PdAT>2xGR`rN|80_Ac!xaPVpQp&^~S6^RAfwV0yF6s;f7TyQi
zoCqO;C~ELZso)vOvaB`&mSv%oqF%34uh%gQqs?zv|8<!p5o<*|=r1fRVB2<tK-(e?
zXCWM!a82g(`2eKrx<T_ik4B?`QVQF)g8;;pBuO5_KEkCJ9y>ojkLkZiOJ2m`NW{U1
zC9ha4qLgBBaj^~H!omVdDGG%`L>9yMCn--He0*&fhQZ9t43=dDc;gw6da;DF5KpgC
ziej-CT)%$(dH}FoE>o-3P)f0O?b<}}@eL|`-t)ZZ52%po?50ww2=2rZic4tx@0KlF
zf{9C|QV_Xw=gtM-1_lQ1XouCN>s+*6r~yG=m!e@9Z6##JophQgytxbw4RP}1NvhQ<
zBO@c!>ve<>eER99D5XfJ)9l>2GvcROt@7iKKL(l7zRTq@SFT(^2*JjU8v_zy0;yDr
z`T2RIl)8ihOMIA1(q#=^E6ocpyukbKzfYx7;iHc}3dTq&86F;{tE(&G<NW#ay!-CE
zZIM5F_AFn2{WSo`jvXVH%SFIjmPIC$p;Rhi+xChZnb07UvJfw$r=EI>VzJ2S)2Er3
zm_RATh7B9oyLT@G0|RY-I%$3U2aw)x08G=wvMemiVrpuN-rn9Yfk*}d73%aj5hvlg
zE{{C&2!{?GT2be<k0+jZf^FNj1;91XPR+6`QmGWSZ8JAFM=F&flgWhFK${A!_$(Bb
zQr%CAYNvG+_j#w_v)L?@laoQewYjbQG}=kGUDpks3hxEH?uXST-b~XZlgW_F<!CmW
zT)K3L^XJcF+cxQRT9;R133=DAUthfMzWXw|4B~ZvuaS?JO%O35FbpGTQc4<)2IJ%7
zjE|4gXf#Nt(-aB?a=9G2T#ku}i8=gl#-1i1fhAz>tFOMgIy^i)uv*|XNDW$p1pn>A
z!omX8YL!Z*!tCrUOG`^gDY0#vb?erV%jL*qGGsCt^7%ZuT#gSu_+Si}!~Zyr38ar6
zJt{{=Ms6KFdi0;ER4Tt?$BqZ``Fu)mAn^?@33PaDv)QECY~nZ$j^nVjv_zxPz;PVv
z^?CqO*Lrt%H$6Q)n5G%jzHQr>rip2q7>2>st5@gWd+)ueW5<r21twc0g16HGSP%RT
z*aB<-y7^_<96s<8a1NMON~u73S|keiACU|A-;Vz~Z*zT1ey6i+4loP+1l&?B;BBu`
qgb)UPX$4yQ3o!*WROlZ)0R97bPA>PO^S;jj0000<MNUMnLSTZ})fl`0

diff --git a/src/_h5ai/client/icons/48x48/video.png b/src/_h5ai/client/icons/48x48/video.png
deleted file mode 100644
index 6b8f79c05ebe2c5e0b58cc77cb595d7e36d0afea..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3265
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

diff --git a/src/_h5ai/client/icons/48x48/xml.png b/src/_h5ai/client/icons/48x48/xml.png
deleted file mode 100644
index 5cda3e624fdac0f56ddd2cb690b50db0f56675d6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2954
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
APyhe`

diff --git a/src/_h5ai/client/icons/48x48/zip.png b/src/_h5ai/client/icons/48x48/zip.png
deleted file mode 100644
index 4d2c42ba2732c598104b4c4a54d08601ce5b10d6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2232
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
GLSTXdODb*v

diff --git a/src/_h5ai/client/icons/96/7zip.png b/src/_h5ai/client/icons/96/7zip.png
new file mode 100644
index 0000000000000000000000000000000000000000..fc84a3e786141b4bd4a212eead110743d5b05dcf
GIT binary patch
literal 3559
zcmb`Kc{G&o`^RTxjHSU?vy8#meQZ&Y%vcH^Q<h2yStlZiQuaYaWJyJ`WhX|~5RI9N
z>}$$4B>OV9EQ#;)Ilpth=XZX;f4+ZwpL6c#zMkj0x97TE=YHPzql?6IoJe6L2n6CZ
zK5t+F)Q<lY1QfUr8Abo&fVtz%@E}m-6ZV7aa1aOzy7;%1p{lB?l9JNn$B+H}{WCK&
z)zs8HJUnV@YCeAan4X?qUS9tG{d;9)<)oyft*tEvgHcdWFgG{%>({T|-ro87`L(q*
zz{O-TM@L5iduL~do0}U7{b$zyeeLe<g2CW_zln~H{<r-<#{ci~e;WMPA0ZIPe?DeV
zP>{E`cVc3qqobpzrzh~S1Og!-AV5b)M_pb0+O=!I`YkOjpFVwh>Cz=*V`D=@!>d=X
znwpvd;q~+LGcz-bi;HV$Xpone2cmuY^yzQkzSY*&vaqmdX=y!s_N=k7F(Dy=hlj_-
z#l_Cf&dbZ|`Sa&>b#=+f$v!?lC=?3FLReVXyLa!*&CNA6H7hDA6ciMUjEpieGSbr0
z*xA|h^73+Wa_Z~rX*618W#!1oNPmBSRaMpS@Gu&U{_C&51_lO7OG~L#YJPsch=|DH
z;h~(IoQjGHkn85=W@%|@U0q!uxrK#=B_$<;gM-Dz#S{wV?c2AaqM{!@e0cNbO<7sl
z_wU~Y1qENfew~|}TU}j^!{Pe+`Va^NzzG(MZEbCpkdOc<>gebwDk}Q?`LmRi6hA*d
z27_sDZ*OU75f>K+u-V_=|MBC;#Kgp(KYymDr>CZ-=ydwb%uHKb+vMcr@87?>y1D?;
z#>dAyJ3D{={3$FfytueHJ3IU3%a?_P1pq$)yicD#A(6=A$B*yr?E$Rz^z<AZ9UUAT
zEG;c{cXtCQE-x>yudf4S0_?4<tgNoCZftA-d~R=V10(|gZ*Fdmjg76_+qwfBIQdx+
zE$8MAr+>Fh|K6Mbz1K3o+i6GNdbhE8af7n_r#quQKEwLjUb(Im<nSK9#RXFpp|dc}
zaPvUl>!J>%06)(&5+W>OArapCY-TQaX(P1pX&etXuQ(@{92WIHM&Xh$J0BS2wR8Fb
z2!xa}Ho#kvCRWn#+wr;!e{S3fo*ZqoQL4EJ3k=|ovY}Wg5ghMH&wG2mUkt}w#@`JW
z3jiZy$M_$Kn7^Zq>k;%5^`#IJdTsdgn7=8$`i_&Q)HaEP$oPfO-+yFMcBFfD)Ymqh
z)y`#({88GZAHn1JN3^}%9@wzWy2%7eQq>BcM906XNTpP*Gp{R0z=@e5+98{^k75W~
z$CB@pZWJG!)Y$rw3fiivfd8xr-P`0kdqKv8G2^<kB+zM<St#}DOK(ifqD;#sJ!OcS
zJ0~~-7P|lX)$<fQrE{SB7d)xlwHGUY;vSX&{nlUB8>20J>eK<Nt#*%VWY|L8$`$PR
zizq7(tS&?Rx~a3mlXIk*!QHjmJ=NRc?|VL_wxDaQ6^oktdt%*8p|HZ9OZw!=im`d;
zCu|wDYGcy5m2&KOcq;zpLSIhgogv!bZke`oDKBp1rt^|4kJ*_7#&mRa!pcGcdx40T
zm!>o1!enaCg5LvEJp7bd{K6S|E0CE^UH?~Jfu`+=&0!v$NL*&<nvw;xfT-mq=LgnU
zFE|13pdE9t*HdwpdyzesbtPCF@hOL`6zNg*mUza5*+A6t1RM>!ZmPI2oV^VEmQF1u
zR+1>!$a<I}Ln3QAQuFeyE@x?v3ALuyMz262q*f0|*DD21?w?l(`aR=)Is_Fbxm4kA
z@%5pzVqe5ai8q?Vab+@sq+N!Cs;c|Jah6$u057|>l7V;|Bx>;M#QqlHn|qfY$gIA6
za^BUST6CYP^^C0CmsWL@uy;YxI@g@kYC}eL>8T%ie4DHDSQ3|eK|!ZG!qT&0+Rt<g
z!fdeVjtg87jG>{^<MsJ;nweNQ?sCh%5(3x7E@oq*(`1k`!`#(ZKo;TjAs)wqH0!}s
zN<PJrs(9*vIptBusmnq=O~{rvZE3_TxXMd{YYZrkqSr92vi16L<kCb-3Io@Z4D3A`
z;RxPH4y9z&d7nUTa$R`#u@AwN^Yy{#x+&>&iRkE`OB0&h*;%d*yUdYF$#V%Ju?Y!W
zNF?H<aP?YKakz4J`b{DO%d-vbePSQO*;&9X*wkaydm+h`H<9N1uH%5*18LE~YTuOr
zRxmINm)8?u^cGtdc8B17`J2WkUCFUn0q+fsQ)6G<jZnc0{rQB*JX8~BNM5#gNO%TM
z(^@<d4GOoC=TzgPpO5F3m0e^=_ovY2#R6JxNnIrOuw>}m_r0Y-6d*4{Z$ZsqCJkX8
zZ-uCh%4xawVHf34bho5sJPN#@t^^7SPQwr}7m<N-ND{=izGd>~H4~<=axWzO=n9L|
zLvCYG!)-RcjHlch(C}x<+0RHwo+cw+m%E@{r~D0mIaz$-$(xd<Y;E2~@4zsV{1=mW
zbCA~kSdrB$U6KqC_3$OEFRg7E9AtSTJ5nZP1q|VmYEzd~nTQAs!(kBRG9-gUb$UTg
z$N)G^5p)n=zaVBP)@0y3Ly4_r^}J2J&zuqz>n=p7?Mqjh4GOTfyRfGB#&7z8hg?j0
zD{M>=cXJ?8Rh%f?&6_$G<6avjBAu#gx##Yrl{Lf0Q4ed(?POqwTIS$WWv#Hr^I$R;
z4uro8HS)ocMQ&g|EJb&?XmL5)w!#`fihUtR7%LT$y^pw$jRJpGYk$8;0w(sM8${Iv
zOk&=?X<BwBI17SUd>OH`I^LlVpP>-&$l8{9BBCS=Qz|G4$NR={W*gEVu5b072p8dO
zCMTdxuRp&&IYrg6&bBD?553)pXY!E!pt0YhT3>3Z;7~JkPAK7ndD?O*?Y3;t^+0ni
zI7&m@A#+SLl!IO!C30ET9t*eSAh#OiBx;5E@`}uLa|!Cf)sm&IJ55c)Y#s43*^w2O
z1)L4N!Bo|^dBS>Z$f1K|Vk}R58NWlWO<Dmk##Sr&M13|I!Scn-{5bWmDEQD%9kKKi
zViip`1U9tiJo&Po{X?7apwE$R&Uhnx1w(UYjgweKbLMA-W`1oWuAN`ql0{H*L;*Ph
zM?QW2gKm&?uAQa|M&U_)tC(~&ABDk(nFmu&+IaO-r#&@dkKt~_Gbj&alX;cbDuzKN
ze`s!v?bj)+6)zCT-0C=NNj9ry5${m{)0yFf=H_lOb@C;I8f#m-rvv)_sXOfbqm^GU
z%#mMQ5^WVlaW`!e+ZtjI3=t2myszq_omYA8V70zYwn8iAHdpGA{kpHFW=;^(9U%*K
z<=K|hD42q#zeMuorPZ+MtpdJ82Au=DQ1@MaJ4}Ckj4d6L@urX{0EnG+8NS^gF@TOx
z-5P#pUy%j;?g0hz>eZ`^3=ttAQNvqiVV)0s%sI*xs8MNlT;&`eifc@U`1y#ucFJ8@
zY5iT!Br1oq22IgTFzqu&hGXN=L4St^-aNyqLOf0I^7h2iYK8*4G11htgEbFOBY8gW
z7~g$K2s?g1{~Y&bh>sJvIgNVd_--aB8pmuIpD5>xg&(WmYZv#wyJglnpMTp>gBp=s
zvO0C!t~Zvwb5H=az3_9CcXY_f_3QY-j2b3!$Nx&I4hC*3l)zPtRC+!tjq=<RGMl66
zK8n?Om0}r{oNi-f_4KKgb-?=cM`1lc&)rzqUi!MZ0Vs||72i8|Zb26}OgxiIuxGDt
z){q<R-e8BQNtLPSjQR?3Z!-xv8w<5{dwoN3cx8;dbRw$w1q0thIXncSsN(@yDT!R1
zM{h}in!j;P))q`cfcRw&Ux<&dsXlLz`>4prn!#bAA)6!!vz&#`F7c9!EAbiu7{hK#
z*x%;oZ144m%&QJhp_^!=h(;z0@47@ooTgS%&z!r9&q<+2HX24ZB+l&Yf38I1$<JT4
zqy4M>e+8kF-B66}Xbv!TLx1>!!IFFS_Nff|-5j17G~d>BIo}W=9)_F+8FyzSAcn$K
zD16#3;+~+F$~T9y_llPR@e4;P)MZx}$jV44>X*_j40suGYTS%%c1|`d)L@3S#NjHn
z;To%NEE^Nu2b=t8Ar+q9q!*nt%cC{gr+Hy%o0L+CR?<S;z2#muQY~WI2O*yuj)q&u
zD&MrBjwDQ0K?~O=X%-qp4IxhM2`4rEhloe({69o-!efJUw=DNNdXMw;_io(rl2<f5
z3oBgPJ)=F#Qs;jmSlq0ye$3kOsl;o<6xeWS0R9JK=%7>6?FHoxwO;gW9GGG~OR$up
zzsx{A5|iz8iy3w*qorP{uzv$O_d30`q)jEE_IAwgfh_Ii>g|u>&sKk}+pq0+CTAU3
z@1I4)NTL)SlOWqYA(b;iU$-Z8=}^zWvkx0fX;r3~hc8nD9<*0+m9KJ~4Wy|D7l=A9
z5TBpu4z1(q_O!dJ>^h=a>>#b;)#NokCVJ0??c6;r+grzR2aU);@kvfw!6ORKW2NIk
y!OQU>LeuoE4Q3UOnEl^{_d`eDc9?uPam2on=zhYP^eO$HQ;M-6(V(2*Nd6ageNr0$

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/ace.png b/src/_h5ai/client/icons/96/ace.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b24492218cdb4aafb3e4364c78be3508d6b8236
GIT binary patch
literal 3370
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/archive.png b/src/_h5ai/client/icons/96/archive.png
new file mode 100644
index 0000000000000000000000000000000000000000..e8f8587752eb39cde41af4ed2befbf04a66f7732
GIT binary patch
literal 3051
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
RbNrQ}80eU27i&6({0A@)fI<KO

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/audio.png b/src/_h5ai/client/icons/96/audio.png
new file mode 100644
index 0000000000000000000000000000000000000000..a59842ae544576a19ec45d47ee49f83570781927
GIT binary patch
literal 3263
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
P`TBLWj5I6M9b^9kK5F&w

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/authors.png b/src/_h5ai/client/icons/96/authors.png
new file mode 100644
index 0000000000000000000000000000000000000000..02663d26114877426634133fdcf247aec352c685
GIT binary patch
literal 2656
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/bak.png b/src/_h5ai/client/icons/96/bak.png
new file mode 100644
index 0000000000000000000000000000000000000000..916f486c935eb0f5295b9a843b6b50bae60696d4
GIT binary patch
literal 3764
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/bin.png b/src/_h5ai/client/icons/96/bin.png
new file mode 100644
index 0000000000000000000000000000000000000000..d6a19fa8127c6bcd1f8e7ad11ec41577dec93cad
GIT binary patch
literal 3189
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/blank.png b/src/_h5ai/client/icons/96/blank.png
new file mode 100644
index 0000000000000000000000000000000000000000..3418e3e242cfd92f3a7cbd47cad9ca410dd863b6
GIT binary patch
literal 119
zcmeAS@N?(olHy`uVBq!ia0vp^2_VeK3?y%aJ*@^(Ea{HEjtmSN`?>!lvI6<c0X`wF
zKzezV?JXe1SQ6wH%;50sMjDVK<muuVVsSb-L4tL0f=Ex(Lrw;k2MmmtzP~F0$})Jm
L`njxgN@xNA7*rm6

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/bmp.png b/src/_h5ai/client/icons/96/bmp.png
new file mode 100644
index 0000000000000000000000000000000000000000..325022cc484b67571b84b283bd7ee9689bfc8599
GIT binary patch
literal 3499
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/c.png b/src/_h5ai/client/icons/96/c.png
new file mode 100644
index 0000000000000000000000000000000000000000..2b9a8ea9a0b6dcbf7cbdbaac3358f7ef653cb4f2
GIT binary patch
literal 3742
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/calc.png b/src/_h5ai/client/icons/96/calc.png
new file mode 100644
index 0000000000000000000000000000000000000000..b73524acac6414c7569e17cf3876621d0d009899
GIT binary patch
literal 3237
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
Nzp0UxVWmDM^nY9V`Sbt)

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/cd.png b/src/_h5ai/client/icons/96/cd.png
new file mode 100644
index 0000000000000000000000000000000000000000..402e2136f609938e4f423fb04101b30377eb2a99
GIT binary patch
literal 4200
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
JtCelT{|7_pJk|gJ

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/copying.png b/src/_h5ai/client/icons/96/copying.png
new file mode 100644
index 0000000000000000000000000000000000000000..f0baf60bd9e4ded7abb24eb4081295c6fda7087b
GIT binary patch
literal 3178
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
A^8f$<

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/cpp.png b/src/_h5ai/client/icons/96/cpp.png
new file mode 100644
index 0000000000000000000000000000000000000000..41fda1e8fb93aca4a42de89e232c4c06777e1477
GIT binary patch
literal 3666
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
AGXMYp

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/css.png b/src/_h5ai/client/icons/96/css.png
new file mode 100644
index 0000000000000000000000000000000000000000..3aa68ea3e8023406aca7421763c458766d7e7759
GIT binary patch
literal 2729
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
XGNpm57mn@y`R}mCIHS)74iWzbPR9s6

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/cue.png b/src/_h5ai/client/icons/96/cue.png
new file mode 100644
index 0000000000000000000000000000000000000000..e2aa2000a8a2ed107697a583838a210bde7a32d8
GIT binary patch
literal 4225
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/deb.png b/src/_h5ai/client/icons/96/deb.png
new file mode 100644
index 0000000000000000000000000000000000000000..74ffc7e7e5bb74f350deb15f5b3537028bddad44
GIT binary patch
literal 3254
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
M$<EET$vQamKa@WJIsgCw

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/default.png b/src/_h5ai/client/icons/96/default.png
new file mode 100644
index 0000000000000000000000000000000000000000..485456062c3b46564a5005a3f859cad4f952ad1a
GIT binary patch
literal 2008
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
WhverrY4fX}zCC~MVCn-;M&Yl1ult(-

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/dia.png b/src/_h5ai/client/icons/96/dia.png
new file mode 100644
index 0000000000000000000000000000000000000000..ea41ca8b1866fa6429026b258a70f0d127384f0a
GIT binary patch
literal 2690
zcmeHJ`8(8W8~@H?W~|NFQWVCL!r`P{G8m*Ym<%Ba*^(?FStiC9YbD|sl`^(LW2tC_
zVjQX|J6RKreQaYVs(GjDyx03zy!Un8pXc-3_vfeQ{yfk1B;l>h#YOgt001CvaTaSM
zSY3Z70wTa(vxMIbsJD@&5dgfnFZ#nx2ml}e9%pO%>eVY16_wD?P!I?t&<qR=2v87$
zZBS5<fCvNv92^`J;L6I10RIgRhr?#G5eUS>!a`hJ+|tsLpe`mR_HTD+Xo$z-ZEkM<
zR}BDf-n{uA|3CTn1adR(=4U**OOL!m4{w;xPpJ-xt#-{B4Pi{i5nnnq4ZnQYe4E-6
zki_zwUK~rP@yZ{+mDe9N!yAucUVQS7{Gci5^$hjhNL6@Q8#}={r7n<7vA<c`MyzOO
zlL=)*_dkqOKYkyb`ypv|X_6gf6~t)el1sU9<!qvbe@P2B`Wcs4%nhgKPlWjvx3EJE
zxuFHz;CyyC*1PCa=I85iEN9l2^5!LaT3XuQJ-(C%r)cKI<*}Li#V3u!6;lfwYIFGa
z@82^rGPpr`><|Ml`lsrJ^cQo<E8|?oY)sodcYY&v?rtT&<r}~D4*%US|7A44VX&FI
z8e7%<c6x<5v0TC76^|}H?BnJRFYp<`KMUFXn%?b90>8kUU)jYkYv(_4;*AYGc<^9)
zX*Hm<Jv}|08&T8}VLCN6Rm>$m{W8yg*2;fqH$6SQy}dm<J3BWwx3#s!<#Lyomj#}j
znVDH!TohPzetuqHNP&S@S6A28)&$O6UtizY*jNBv@)8UqI>g3`Fk9W0eQ&Gmb;UsT
z{DtjPn>r3hIk|su%tpNwZ{sri*1Ua!dG3Ew&S;2w9QSh(R>y<SlC2}cRc{%`Vl3bi
zSKMST-}Jl=i?SsCbv4Au*B={zwuw2p2O1q_Xkr#5qQB4Ty!kmr1BLxc%4!Fscd1CC
z4oZn56E)x3iOK8*0YW#*1lI+YXMr`cy*jcm<b6rX8-N84NAe5+kZGoTpb|OK9h{;;
zL!hA$9|rB~P2Sth5htH6fEmhrTlh-e7_6L1DWE#>aJVa_F5AR0>aYPna<oNT^1h7q
ziT!+t1f+WgXz=t;cEMChL&%<=S`ij0kI_kN+fQUSrBj-9?$q+H=Y})<o$Eqc+mm6K
zklF(09m#6?ZGDS~D!~I{F;t~}-m%p|OCrI6VAsvOr>dC+_ZW;Rv+Gqq;kBDAZOga_
z_i8zTd4^l;Ik%d%K*{y#J>YoIGbYz3In~SS)>;#}#xW7?ry&Z(9@%A+wk}&_EcuK!
zg#u|k*DCT9mFWw(p`1m#)^*r>kEn-s_MbNH6JX7DYOwFB-J>);SuYMyeCq~~ih(po
zMLoF&hoCSRQvKe%hM|v0GF?aJ+YZASq52I&kVV3jHheKrxzGrCS&H)2?PD^e@L+RW
zd9fdtX&s&Q)=BgE9jFGlSo|z1cp3%hLq$Ci`i9Cc(+>lp`hbY;B`ED6nU1O4)I&!e
z-BM^YaV2q7mBfIG{;MgsttRAZDH?$$ERg776V<?3QFPHf*euo*8n1R>oypR}ZuquG
zTTHx(S0|l(xn^~4Ka6x3VrVhrrc`=+(id&t=`03gS*7NR0o;!k`K`wQqt~0e(;~wR
zVOi#CYDI>7znMU05>^Nx*{u*=c?Xt<)K+q$C94?>3x?+ifpshEO704q<2z&;Y_6>0
z8n2&`B5Xbc<gCF=tK#pWe+X;n{_=sydINV1Fb^gBVqu+0#4l8w*bFK&Zz3iseFo6}
zzEQD*)b&9_<yszMD1NG=zbu991N`*Rq{g2l5O60Rt4wlM9{uHvf?~xTJ$BPX;Vvhy
zZnmdLw5}9^q{rAC6CK4<#OA&yIwD&gVAjOTL+VJQhJ?`<JFI*1$0g=R+~(Syi>sM`
zTQWuQls2bozv!k%3tyQ2bi+NTWuHeh(T~SnA9_9{?E10lAOS^EFLkN(pL9~v>@Rb)
zo=b=+A<(s7z#ZZej4xk$wc&Tf*Z!?){SNZ<o&oTugMi6t>0`P&n|(P~{U@iA9=mwt
z0h2&#$5Vn`BNQE$f0j5_8@#z;Rvb0HP<M+3aY?gy<2Ern$UIp&849StvT)%}EG2)x
zkFko$cW`6c72_lnyfpU2hrS$>V>wQ(GhzS~>IzGX{F~eG=y5`QtCsrO7eF$y8;EBC
zUdaB-b@6`nGP>QQr%4LWvq9>eAony>$GUxmRK*@H3kq}i1CWVOM>eXcVk}Yi60?KH
zpq)(sQUSgdh3LG4c~46{E8?oAAhaceS32y0hwY;DfMPlH#@yio2nU>cDtaj$fOS|4
zVG56;moe<sF_&FS-8=ZpucP@leVZeg60k8Ojo7b`4dt+sHWRZo%t<HYG)zebJjp>q
z{N&aSHbn(fvd@(d$8L<XxVw_FnZkGF6T#+&=pbo$I}tY_CL*R_4wvIh9LHLXu?BgG
z*`5_gY+XsU8A)d^{fc2v25Ie%Rt-8|TFoqhBQRdB-g2%KQA4R35`-Fs4oWg;0nvh8
z)!|zE^)5gMl%;=}6d>UuztnA5iteX%LtC#P@RgWCebPBuJiiD-JWzI_P5wgOQY1Rg
z&OxMJ%|>YvpyL<|(z{4qS~S_vCSJxjRzL<qAJYcT_aQycAGBr=N{RvfEO4<f>m=C;
z0{V>XG`vt&h%nyYs|nplI>l@dr`cE|Q?M0qMJ4I8tK!LBvmvL-GWlA|yW!LSls895
zRb6++r3UPUYe?c*LgWhb7^sj4lALa|bDoxiK-B%?m|ta^O$5!D1DJ1!4{|roAML&m
z^qAE2D}j&_X7|?Ts&adjG4`!OLD<<YROWP_>@!yyb?J~!B1NxD`RBXZ%ewd?IjL+c
z>*AI3`#=t99C^jL+<Zhi^mADA`yH=9eqH7Pv%b&d>g2C@m(rfTySR*CL9LKt+PmU0
z@)J@p5XWN7g*<(g_m7RoFtzaH$Y1W)!n*Gtc^fvx7<<}VQ#5~Q`3Jp7(fjGqE140~
zfi9Wl_)qC?uJs3W77IsY*Fc{er<;k-_HUefp!r>=v~Vyvup%q|=A6Ma{WIf>?t9Hk
zY1%UNJyZ+nGxvUu8|U007?1yu-_cM#yu^SyQik=lPP>&net_IRrF}oOv4N3#DA>kE
zrla;?^5+bNLg^h(Hojr4_4;u&y{`cp>($yVU!`BKx>#;7B5E$2k^KFOu`sp5mK(d0
F{{uo+gB$<=

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/diff.png b/src/_h5ai/client/icons/96/diff.png
new file mode 100644
index 0000000000000000000000000000000000000000..b779bfb14841b1a074d84054ad288a1d68bb57d1
GIT binary patch
literal 3434
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
YJ@8@HiH+&{|CSr0Yvu-Jdd_eD2k2MyX8-^I

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/doc.png b/src/_h5ai/client/icons/96/doc.png
new file mode 100644
index 0000000000000000000000000000000000000000..f7a0e36ddcd8fd1064d684e7786677f02bb1d07a
GIT binary patch
literal 4607
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/draw.png b/src/_h5ai/client/icons/96/draw.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a615600d4877b92b285883473bc7dc3690dcca2
GIT binary patch
literal 2889
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
Q{2dcb49yM7^^q_B2gLk`(*OVf

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/encrypted.png b/src/_h5ai/client/icons/96/encrypted.png
new file mode 100644
index 0000000000000000000000000000000000000000..7325b5d4603aefe079aa1c755b12c630b1f199d3
GIT binary patch
literal 2944
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/eps.png b/src/_h5ai/client/icons/96/eps.png
new file mode 100644
index 0000000000000000000000000000000000000000..170594db8bcc285a972803cd775d25c45401ace4
GIT binary patch
literal 3280
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
B0;K=|

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/exe.png b/src/_h5ai/client/icons/96/exe.png
new file mode 100644
index 0000000000000000000000000000000000000000..2fb16639f38c54b7e17be5c65664993098fb9a27
GIT binary patch
literal 3271
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
CsV4FO

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/flash.png b/src/_h5ai/client/icons/96/flash.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a3de67dd358707ac920814b9d76f56da14a66db
GIT binary patch
literal 3017
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
P_eM4`#2EaehmHCV9_mYy

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/folder-page.png b/src/_h5ai/client/icons/96/folder-page.png
new file mode 100644
index 0000000000000000000000000000000000000000..5af90f7b88e09ead97eac86132b75057f9c3a154
GIT binary patch
literal 262
zcmeAS@N?(olHy`uVBq!ia0vp^2_VeG3?%1&o4*=Jv7|ftIx;Y9?C1WI$O`0h2Ka=y
zhK7a$nLskp+^h=7Vk!yp3vOWW6$mW`@@9FuIEHu}e|yc4>#%`<%f+27`VSZ9>|8VZ
zjyk(%qJdSaN7K@q5y9>(zQ4QlCm0-4Ym;}Lvdf(*zd&UJTWVqi=R1}u4>&9i3NB%B
zoggIQ=oP>+Z=u@+Vcn*$+~+vDZnWqvX@AD$bg=SjxB=@r1&+M8Q%o;020s7_sb69S
v)7F<*!L*swo^Ad!K5RF5u)X$#{Y>>Q&TNs4!PQrRu4M3Z^>bP0l+XkKVfk6w

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/folder-parent.png b/src/_h5ai/client/icons/96/folder-parent.png
new file mode 100644
index 0000000000000000000000000000000000000000..f47cc6e0ea78d67d5f3da93970e07279fe6ce220
GIT binary patch
literal 380
zcmeAS@N?(olHy`uVBq!ia0vp^2_VeE3?v1%WpM*3mUKs7M+SzC{oH>NS%G~10G|-o
zP#6FTfS9g9Ss<k)L4Lsp92yw<j?WcmU|{6%ba4!cIQ;g;X~AX#9+rTMjJ6B7rtsOk
z+rLbJ=g5IqkG=IK>c{*^o2e32?X>=&>woSgi?+UKP}I;mz-ZC*g+a#AjiE<DnZa#>
zXoJ!TE(gIBwgwI(W(Ss=jORI$*zYK>;9JMS$>#Xbal;7-jaN@5S(zCzb;ac`IluJC
zLAz-(Y`-6Pi_9rL?^s~geZ(PLM}{f3)RQG<RyXs5OTCYpqfIw)=RMVytGHrq{h+X+
zgZF^u2{nf2Ya$rp#BMNruu`(p_;Kv8R)m3o_?fqcI}_@c?%b9>cTaehV6m-(@S~bF
zum1_>G`-b-xA{MJnBq78<lFZftqPZ%uoB4L$HMvP*JOo*`HugJg(C9J=H;Au(QWkr
P7)A`9u6{1-oD!M<EnbZ9

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/folder.png b/src/_h5ai/client/icons/96/folder.png
new file mode 100644
index 0000000000000000000000000000000000000000..a7bf93340d58254503718eeddfc26d167f505ce5
GIT binary patch
literal 206
zcmeAS@N?(olHy`uVBq!ia0vp^2_VeG3?%1&o4*=Jv7|ftIx;Y9?C1WI$O`0h2Ka=y
zhK7a$nLskp+^h=7Vk!yp3vOWW6$mW`@{&AV978;gzrD7Rx4}TbIZ*$gkfdrVi*l-f
zRY`Er#LW|f*g1FC9?kDfHqvRcJ?7Uqt$_1N%MA%GNA(3P?gu#g9E3y~RWz7916X_$
vT^4lqEZFm)Q$fvGf`_g7A^(Sy>cz}F)wwsTdgk*1ZDa6s^>bP0l+XkKb*DUM

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/font.png b/src/_h5ai/client/icons/96/font.png
new file mode 100644
index 0000000000000000000000000000000000000000..97d192bdd4192c95a2d08594fd02d4f91cab05c5
GIT binary patch
literal 3042
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/gif.png b/src/_h5ai/client/icons/96/gif.png
new file mode 100644
index 0000000000000000000000000000000000000000..eee13d670666e451fd520de094e739832ee81cb4
GIT binary patch
literal 3503
zcmb_f`8N~{)Se}>C&ZYs3`%yACA+bVogpFAAZyu)WNDCPLS=ZPsE}<?cCrsr_OVM1
z#=e`uAYSo#zwcl8o^$SV?>YB8zdiS!d$A~U16C#|6952UH8Rw*I?qo31q1k;$B_yD
zH7<A{%n$%T<tyeBXF31?3_zJ$>x+np)c!B#=jVHSd$+f@6A}`rRO;{FzbO<-b8~ZW
zaPYbI98*(M`}_O<SO0%;U-b0>taqiE^i*easRs(LeXZ8Ta*a^X6XE!0{aYhO_@kRu
zt}6727*}N=e}oj*W~%gTUGZ{BXn_kKF*S<vR(LkuIMafgHk`Ls6ThCJME>YET$Wei
zqgH6Eu$6;e#=9kJa%~e*{;afgxxt5AG&fVA)CxTsF>Ck7o7H?ola0U+q*9lc5Vg#Q
z+7i)Wuh#oWi(2YLt+XJ;>C=WvR?59<qL7WYYKK#0Yk7C}#&GKmug9JnwB1(iH&rfE
z7pK&O{8{+1|1)nD@3`?^f;Le-5`-A=5%}S*Nwiiapy5OhtqxcC-eB_Ld)u`vQ*z4H
z*+k)PZ{Z?MiJdwp>Tu(DAhgpSHk~TnY^s>2EB)O^d(2I1rz?6P2D*ra&wo%H2^Juw
zn|(J|8N%p~II33~^EW#P9+K-v!}TVxM#DbZ8=r2>zOx`_$n6X~-^{n%sPkUQFek;r
zr(PO&+o<)THR|kDw@Z{as?mFsO-mUP3ptjHFO8SdO(!Ga%?3(SNs^m2uCr0l#jM+_
zC3cgcd>bE7!#>c3RMGi2R*lJ~9bQ_a&#pIH!6xFweqoUHR{YdfPfB;#R*Qd~sq#RW
z-h?lLT5h+LZ`<tx+w5<gjy2jTuqK5=Db@Ga%I{G+{D#7=^#_Vj@psm`zs@F^)T5M|
z@2RiELARQ`DP6%0=CIyC#CAt;p9hTm+M??|?7fln;o;%(w}v(w*f)KJ$;Z002}auu
z?o|e`sc?OQi)Oo_Vyy|RTleO<S8MMmm+QhdH#ei?I4e=g%gf8>Ha<E!T3cHyR)dvl
z!3vaN8yg#Ydwa*n$Gf|`D=RCjtE=Z`rqO6TzdgOq-7FDoWq!MUeRKZPya735k}{h8
z<>)|}&M79+J;WI0tFI|0a!HUQu|@I@l#3Y%V0R}f002x^jr0)Ko-<qT7_B)y1PEKx
zPelU%0W|XE`h^#N4k?|Gu%)w<%;}I}=+13Q?YozLJI@9x-pKR;7*Luc9QeXmrIxSD
z|M?YN9@MC`r<=aBij;ls-?KJ9cMct=(2r}ak$!)>BHp^XN3|WfcZ561Z>OL$1Bjrr
z5N(sBazssyHRw&m0x$P6w9_U2#;lb}PFKBL*nX|}E5&c=llK)X$&bWA_TQIf+ji|f
zHSbn6RC2>A7PGQiX<tJPV`-XEJ!9F~*I201Ph<~fpd(`SPtl8asb1QBKV8?Ep$EEi
zad^=uI60^G(JcA=fWp-sDNl@_bIEM!k#>2j_y-Y|Obf+-uYufe4>S;JW<DyIQ))b-
z&x$bExf+L8ufs#C>n@+lCHt^6agq4m*KciKp8D(+FIoa@^5G4o%=}f`y~MUllfmtX
zFTINyObwo`xy=Kwe)kVTuk$3|-&Vz+w;_a=Ha$K4gks&$X6CvMYLb_iM`j`DJKf%F
z_f3ED4=Mw^Z--)-%W`iz(RhtdErm;f4>)!CMXBP62f}S0cXe}$JVk=&l;l^=>{p%!
zPFNI^GBGc6v6aHwU;4hJgdd*L9dR;aHw(O7@3sYK^kMg}BLma!FFHpHLA8%~2)&V#
zhn9wP`&UmKUVi`neLv-sHdyzedj;3DWWD#)F0b3Hhl0*xK1&2~n4#X;G4GPect3^_
z^DjH~3bT!kaPmo#mP7y+A{+V42y4gpoq<o4i-TjAzt47-wbWba<fV`jH!N9E>A;V#
zveLw$h2F$6%7AwS$i|-+^Z+jEiE=u6A#XD72!{TFr0eVJqk~A|E|Nm*jLr?9(AV+_
z$%9&w0ZR+RV7-|G+xR-AWbM??>}>vW7g+{b2?!>sl*{m48#;*Bg7A}LHm6MjzdqfT
znC4(0l?(w2x8-1vo^g6FAWB^PHMMmb-FzyZhhn$Bh&pM5XFQ4Y9gGzO{a>rrt@nSp
zY)~kEO)t{~=YCfI$f9S7r;E~SwiFb&-`;^7ad03GVapypsEo%b{^Y4X7)|`NuqI;A
zj5YOvtC8A=bA?|Q<aM<7MT?F&5VKWum)o1c+&WHkF3--olCuSH)j?frqaq+=d3Ch^
zhFO-9%7omLhA>9bh3Hnflm|aXMn{QaLC(2n9n4Am{MFTXjf8@{7}jQA1!2@>mgsL|
zW2P~8D*nkbWVf5!$oiaaXgd%21#aO(_48ekx@XM;pImZ*GrIP=R)qjSJv}|qDk$ne
zQsS-nlm~MM2M2!`_^^N$Kl7@r9C{j_%hS<SrYewpoudV^$^cwhULIMNPfW+UzQw;a
zH&;BDUistFF*7qhKBW?a%g9Ji=gQo)d1D`29sfY$(VK#aA>NaG8C04CxW!P4J7Z#E
zVqRTdzg^Q;MWq#FVPRp5`qjjA!DcXwJScLUpPk*m7=lgX?Cz>{%agMVUx!3n-+EDH
zRrwK}`L%|Tb8Aapvb6slAD;6<b~_em8;X{&Fg8tp1Lj~!<lyA&gu|08S^H5J2(qQp
ztmoT}*^tKgNI0(F+Q_V7tS5mLuq{?@jx*-u#A}Hbwp;~(Gz$s_wv3~BOMujju{SSr
zsoT3teE}TTwzh6?7=<-t6}>9Tf%;#hR@zHkGq9jt12B$t==^IJjl=!=RcKXt3jmIS
zVE7FY^UE@y3zyf|AuEveL#iF!^P~0$M%voiJtb*`aE<O3=V*gYkpGpLxEP46F2*A0
zt{QhQ;_d)|;+B>33X|r4NtKtIK02+m_;hjZPynv64z9vrL^EU1^SgR&BZY;(L<I#?
zvrJ>?#JP8cy_bn+-#pTY*9mi(nVFsJ)I{t~PT-KBz)koAFfeM~ia`PU&DlAx$`srE
z*^y~`BmL;h-VJ!%9{SYsbyC7rB!?(cnL{BYr>u^bXbIU_AYNd+daY^YN7uc!R+ujn
zj&zN~E9%sl2cOX2YoxP}K(z7l4!MDP*u@@w2Z2rjf~nooqf6GBs|)iXA^{)--)LoY
zXu6r>sW^;>hbNU`x`<sgr|*K)4MKAgE=>qSrxO%(7jxST*SAu%D<Xo|l9ZI}7{1}6
zteedmB9yBa)oMk+v8vC5YP7{n9v|`DddhW@YH2B6OzeHZ!H`$Qm7lM7KJ3V4k)m!0
zUWO_HLvhJ#6#rcvjL5Sv>S-*|kzuQdQG(><X<m)KXbjX)A}`TlUB#}he62WsuZGuL
zl7fiamb*KIKRqt*n|?`*i4E|P14~r_TP_3rWMy$VA;@Rjqz0Xej~dKhww{w5Hx%@K
zK0Q@eH#6yrtMy{3xP>GDnTuY@Z@SXr;`9XDBL59@A^A#YPutsiNYauMcm|nA=NE#4
zMn{+iIRb;m>9>Vu*x1;T5DjT_e8W714-GpzdPp($r`*}Iq>(BVWCp|#N41Zzx4);}
zi392>Vi+mZ1^=&cE4P>|(Wrzb-x*Sei)4+D7rv~F<??Z-oj6y=qpY}&;{ld+kSpj=
zv#b=1MhF=IhbI@l=o!70E-No<2722?Ke#i_io+Hj^%_GVkjtyQc2;P#t%1mM)e6qY
zU}k9O=2wJg@vmIdJ6HH^hia8Wq;3m7k&~;qs@f=k|1>r^m$tfEE9o@LKU?+OX5iH3
zZHa`c5<It}SZOF$R{Cybi1cW2k*~`v6v}igdlwE^;G1_~HMw&KjZ1wENO}kwy?FfE
zEjQPpUgtt$JgmY+@~18*;WQ;Co*p6xcxYEravYyb675SY^Hb#^ubELcV3^-k<BW{t
zSSGp*P7a%L8JTUAJ3?3F-fLy@i}-jp`9PSoE{y(3FHk=A{30J`x5Nbg+&PfrRy=tp
z(+%@C)9v(;4|I53d6SGE%-J|Nefe_UIXHN;EfO7P-f(h3vsFBUl5nx%M3eWhdZP*X
zzWw4Q!I`#a;cXo7XSZ<ryL3USYAaFzMfJ2kL0szZ-Pp@FhdjW40aNsso=ee6-BPoG
zlYL8nT^H-zz{esW${AtklJbc%^lvq{v|YvOfPTo=6vtCAZ^PE?*<|!tV(5%zm@|z)
z3i}Innju+&L+<SfXe#bCZX#J(nicCe@NfT}z!(!^ipr;z4Oe*^_s3ZFQMMoJG>JNj
zIYuAoPA5UJ77BypXUcMS_o92e$*d<vQRWM`ArWlPa8qrx$Jc3IU*&!(BQpM)eDrhi
zlnXc^lhd9(Ouil)yKo&^an@4q=KHWv!&kkv+HO@ggHMBRQCXX<i`(_0Zzw87u*k>#
zp}Ce+T##$=&7hIzE7u=M$Q>Oqrn#>}=6QvIC(X77;q&=uuVf?6+Q+L!Ewr1Ftt!N!
zer?<E!uX*HMY)@cb48w;^&Ee=k%jS3kKLg<XyVXVVgz|GvRtR{C+S<FM~ToAq-cLA
vM|vA?40?Kq{bur!{lm83E_k8z_gY}0qS@Ev(nQjKKa-KZx!xBYr<nf%W(%3x

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/glade.png b/src/_h5ai/client/icons/96/glade.png
new file mode 100644
index 0000000000000000000000000000000000000000..b5f2467e833dcd167fd2087287a8d2013037de93
GIT binary patch
literal 5141
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
R4*vT*Q&rSbsFAY{{~rqz=VSl?

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/gzip.png b/src/_h5ai/client/icons/96/gzip.png
new file mode 100644
index 0000000000000000000000000000000000000000..282943a4edc5c790ef72bd3b9780692d94d34746
GIT binary patch
literal 3429
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
A@Bjb+

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/h.png b/src/_h5ai/client/icons/96/h.png
new file mode 100644
index 0000000000000000000000000000000000000000..45fdc7cdebdb0c08c905342d7aa79571f9ed1701
GIT binary patch
literal 3627
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/hpp.png b/src/_h5ai/client/icons/96/hpp.png
new file mode 100644
index 0000000000000000000000000000000000000000..a1f91ce3da8c6096b2b88bff2b331c826901924c
GIT binary patch
literal 3676
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
Aod5s;

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/html.png b/src/_h5ai/client/icons/96/html.png
new file mode 100644
index 0000000000000000000000000000000000000000..89b5d567f3ca0f53cdef059332377baaf1744bda
GIT binary patch
literal 4963
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/ico.png b/src/_h5ai/client/icons/96/ico.png
new file mode 100644
index 0000000000000000000000000000000000000000..f5eb99c4b012cb596f5b5b402721e430b1a82eb9
GIT binary patch
literal 3377
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
GtN#M4zEuMN

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/image.png b/src/_h5ai/client/icons/96/image.png
new file mode 100644
index 0000000000000000000000000000000000000000..bdf05c6e614db52fdc9dd73041d4c97b7a282975
GIT binary patch
literal 3365
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
J3ROhd{{S8mEf@d*

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/install.png b/src/_h5ai/client/icons/96/install.png
new file mode 100644
index 0000000000000000000000000000000000000000..174858d8ee5eed8ee5324fc2f9f7f6300faa174d
GIT binary patch
literal 3298
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/jar.png b/src/_h5ai/client/icons/96/jar.png
new file mode 100644
index 0000000000000000000000000000000000000000..f41814a086065dc732a0ed89fe74e05106ace0be
GIT binary patch
literal 3494
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/java.png b/src/_h5ai/client/icons/96/java.png
new file mode 100644
index 0000000000000000000000000000000000000000..06658cac4bf7ed24cd3523ff57780b5fc2a21fa5
GIT binary patch
literal 4151
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
A)c^nh

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/jpg.png b/src/_h5ai/client/icons/96/jpg.png
new file mode 100644
index 0000000000000000000000000000000000000000..63af404cdf437e5490e7cdf4289aab25ff3f35c3
GIT binary patch
literal 3677
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
CyuIZB

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/js.png b/src/_h5ai/client/icons/96/js.png
new file mode 100644
index 0000000000000000000000000000000000000000..35e58fa5bfac16ab694e504da5f1106891ac6aa4
GIT binary patch
literal 4277
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
CkZ<Pz

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/json.png b/src/_h5ai/client/icons/96/json.png
new file mode 100644
index 0000000000000000000000000000000000000000..35e58fa5bfac16ab694e504da5f1106891ac6aa4
GIT binary patch
literal 4277
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
CkZ<Pz

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/log.png b/src/_h5ai/client/icons/96/log.png
new file mode 100644
index 0000000000000000000000000000000000000000..4a686016945bc4932730330b090de3ce0a207f04
GIT binary patch
literal 2374
zcmeH|_fykb8pgj#fP@}es6wRcT?9diAc4>XL_$ZdNL!@bOUKZQ389EyMa6)wQKKlh
z>Qa;vQ6K^eUJ;Ol9=bq4S|BD60&W~<@67!l_RO63edcqXnRDiSemF%QSSM)-H3<L!
zq+OgHyo5dE$A&?Kb>Kwdj{}iNTQ^$(s4bQhgo*+HSj*#-k0X^zO;1k;gTXpFI<2j(
zG#X9l93LMCfj~GMPN;<jVg0#;{L7aw-@bkOANX7U`0*nQ23ucW|49o93WQ=~V?#<x
z>Tf;(U^1D15urh-`F#Fg<p1L51m@@GdwP0$dwUla7W(@7=H}*v!~gvGGo4PKot^FP
z@1K~M`1<wh%*@Q-;NZ~E(Dd~5$jHdl)YRzcD1*V6oSYmO7!XD#oc8eW@YvYc^767k
zAXr;lTU}jcv)RI=R#sMcJl^K!=FZNJFo><KEiRYK;c$czZ*Ol4LwVTG`|+3}oEO%6
z=@YqeZSBfd^|0SE`9D<tG|$*y`6%jG;DbZcmLVrnCbdpwWS);G#Yg@&n9WIW3_F~c
zY;71TiE!2r@(4W#&K1`UPEB{Wi+8}d5TP;`V*V+H3wL$Pii(T2&C&KEh^VGn*qlhR
zmvHjL9^ZFT3yIdy+^=V#D61nccR)cJe({%PUnwOu5YSILW(NRbXcq@tpQwqIQC=`T
zO`|iBnYq@?1CLzPj#JI08W>f9W#Dp`@+bCrp_LTbk8YZddP&66NdiI{+ihbzf>ifv
za&`C4+c)=O=?KlfKYG8jP4}P?Qn!9TxoM+TC+Jrz5izVCJ}%iULyS1YstY)Y^q>#C
z{7SnXmP1Tg?ji)D1CMHZ(Bmdr=<%$SI8@`%I>x0eeG}1opCY9`&5Iw2Sv_cre_R<=
za$j3|-`u1RBWxNdX%62#X}1@Qb4#(TP0GGJ-T@}XHnjQrSSITc&-g|~KRZY0uYY!V
z_qT=cyw<dDqh5$DmVe{>cubJp*3k3wS?35<jq2v|o;e3xrgZl^#4y(zBth<2x&E9b
zR1kngdjkC#HxodR9tAOu9yl>b2_AgSjO=g?63{5OVf`RFi7?zif(A8Px#hEpoYjiq
z>Y=|g7R#y`cw801G~uq-awSeWjnH&Y%9$;%3+;c?l{9t6byHQ-WaifnNaVi)s>A`+
z%lUoDgXts!eksNfp(9FZe!Q&@=Ga_;S->4>pXN)sI8YUu<0ea4$S>e)4xvCu5*}r-
z;|-?n)l^pZ?x1X^l?h_pg*VfL%EE_5DrO<w-4AwJtTTG7_bmQ=zo_@H@ZKd_U^r$6
zs=)Z(6IbId#&na#Wb;z%YS+jiiZrxcdDVSEPO-oTvg{UKXm1H(@HUb&>~~uaBXQK{
zAFkq|ykzj%?`1sHa9;u(x@rSp{&A0D05|hswRrzQSHH?1iSF)Ld>7_|k9x63Jr7eK
zJ1sU5Smg)g@uWz5$cwVFvW0?~lADmH#;x9Bb~S5kLvarKZ79{VqFUxnR|zC5vJcWy
zjGvXrmTz`JBG>X^OxL_wP6E-o9c6B5IZw1nywo{uCn9bP&?O93^+30JVCT88L$FRI
zzL^;HYUUT^*K(*mIJ<MZC_8+rz5Lnfn*fh?>`ben$?jfa%wcd&r6S>%(^}acQ0M-m
zNOLjfj9C|&GI1J$)#wDxmp0|3(Q>F;);Y}Cw|tcZfrzaCeRQ!?8^<3qUf4zLg^C*U
z;OXJJhG}WHtQ0Dhi)=1L_=?DDV6JIuovki=wL1~COetP0><B21YXQUG16<D=;@BHF
z{Y87^bLpDgUTNOIqTtfLg!UGFk5+dua{p4w+wAS!UAo>{7_B8kX3GJBdIT7!9WD5#
zgjYYZUIf+lmdkj49f;4oS#XVlQF(V;crQxH6SBqgEu}ofl0NX6nNQ^V601xC<U(Kv
zk32b6q1A36`a-fd8A-`1RK&O4YV+Z%)RdE<XM%%0AS(OK%Ud+4>rK8Q6&01N+7o0{
zTK=Ug&WK8kx5f^lgK>M1qbRaek%$TCV?jciu%h@>TR8u%51%E&5`o+4iRIPq=CvKc
z2Pi+rH&I49@s}IxfLH6pyD7m+!)6v1=ug^Y0^Iq!I0I^t75bp3PTzpHj*0xd+I$Ac
z2=!o3Ow^nR7F!+<WPAXv#ZO)bhc1rbND?o1seiV4P4%qs)bKYjH;Qz#jWGI#axNSG
zTHq^A5CTp2azY*+R#Ja1%sp)LRFRBktRkThjD%gUsdDVFmbLN`y$1h$$Eo*%5%5})
zZ@|@~J$?%0C|7uOw;zW;X%fM^2o62crdi)nz&9{wh=dRm6(E)9jf+)drkSVK9BaG+
ziIJ}FmOI-QnGi|KG4U7+@do25sdm9K<ZxL~sA;_w3kr#x0~9%`EXBS~e5Vo%d5ERC
z4238agWzOLJ2Kn8QbG?#R+QPy#X4BIO5M$)<%)~$Cl%clwOW6r(^z{Dk`>-|QQ%-w
z{`7Doac8`~-Z~S(eOFYsi3{~hX(kED<9|QT;GX4A*(4}f8lclxmzQ4XOY%CsocvN(
z$mtsk2eLYWN$sgSV~Sa-w6ExRY;0;NaVKms@^!t%`MowrS3g}*-N|MKUda_<M7}=~
zQ(tc5e<vem?smOvnbG%;6r<pVI`fyz!LXU{74e71k`N06zJk!cgG(ETh2d@l+grR8
z9PRgOx_zT<w4w3G7YP5Ug@dP3oV=f{xDz9yW0Qv6Znzit%r~ZTRqA@Uf|Kuh8?sEJ
bYPO9{yW^s|s!vP)_}*L`u?|&sA-Vqr8Vu`Q

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/makefile.png b/src/_h5ai/client/icons/96/makefile.png
new file mode 100644
index 0000000000000000000000000000000000000000..b385d0c065f135d2d237265abf1f53a62a83ceec
GIT binary patch
literal 2894
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/markdown.png b/src/_h5ai/client/icons/96/markdown.png
new file mode 100644
index 0000000000000000000000000000000000000000..1500792495a9171e21e05c761a8d4a2d8130f3ba
GIT binary patch
literal 3781
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
S@3a1YY1Daas8OnJ7xI55Q$~vb

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/message.png b/src/_h5ai/client/icons/96/message.png
new file mode 100644
index 0000000000000000000000000000000000000000..5ee14d953f025cda2ae189de4318664f5594b91b
GIT binary patch
literal 2852
zcmd^>`8(8m8^^yhV-Q(lL|GbzXtR{PY>}lf2O&$w7Lw(NlyyXODjHid2_<wYjC~o)
zh-_mB4Pzf6V;^RWv7b55b6w{;KRo}z^SQ3ieczw=`~K;E-9LQ(Kv)>_@f_y?0D#Zb
z#L$YJk$+!q2s@IlCH!r0c<Gz#13>9Z-d$HH0D!#^H*AbFH8r!dv%z3+cXv0LOlG&S
z4+eu_N47{H5dI?oLqkLVE&gZR+}vdAYinzhlaqXWd<+KTpSFU6f{l$0VPRpmGB-EJ
zwpc9IKkmPao}Qk6KmX6`?d@&$RO{;MN=i!DXs}ppb#--FSy@9vLt9%L4u`9)t*xr6
zYHn_>tgI|8Ep2UWZE9-j=;-L`>S}LqZ)s^67#Qg6?CkCB#pChp*%FDw@87@w`0<0y
zl#QUjzrU}qZ+(58$z-yj(CKtGrlqAN5{blSy|}nIK0dy@ygWQSJT^AAy1KfxwY9Rc
z!rqXHiHWJHslma)g@pw+ZVH7mGBPqcIyyZ){qyI~`T6<T+1Z(ynP0ztv2jzWR2q%O
zUJR(e_zs)s(_kwL>&B@p)_!6ZwWegtwrC%z<&4s>R~1#<SKsVZWZm)dabQVDwlMY|
z+&2om5f;9q>>lUpB7a*a#Lx0E!h`py$sswgfnk75=p#M1=vY%O{(DiL-kkcr{=p~B
zuSdjKX>uHUsC)HVkhbJ+7Cgo$%p|VBrKC^G!URqU9Z?YG6MWim_U2)c;~*din6d@{
zt{<j``ZnGZ%Oi84qc#vuTG{4Acz`!=S`|Vo^PRbZpjym_?m=jZ-W%9y&XEtE0o1PB
z6J?%`W+w?4yMg_@8V6?jsRZ)i&T?eqOsn1I*6`p4NwdmUV(*04w}Ti@h@_vRniNw(
zyt*R91~dwOw{QOTs!slW>u7l_A9RG1GoXoHjGK$>8V?<Rv_sKzgnBP7*Kbrka=AZR
z^tQo|AM2M(j~AbtF16|_Omkb?5)YtCknccZnu~@KgpFKMxm}t<l#n3FciFxr&qX6G
zcI$k@4J75TbiF{js&Z2dS@lgU*8>dx)#u^~!3$e_X<x;Q8}B|pBq3F|{tP=L9n$I^
z#(H)(f&UF2KbPTh-2Z(&r%)qfy_f4ArJ?;Ranp`>s(s=rYV}P?iCm*`jByh^e^NGL
zQ=X^Wy^(PWto9PfaC#xD<g!fwpQ~pHaj|Bmjj>s$SP<kN63mYF92=D3nbg)@YBk5X
zOjB6|1<I|Y+^q;aR~CHu?l?LZu`Z2uS?8<}`o)Dxzobrcvm8q8yb<50T1kyXiQF{z
zQpuc2b-tqb9)Q{8Zw;Z+VI-<CY9hNh!(6Z56Y)ZQ=!7EpR>lp=Y;pF4iXcG@oOhPt
zWNi?UWE<Q@?QI<c+^^YzaNpwuU67!N*lsw!&^O>r=F8>*cx*(mt8_M@MV)(4Okuo&
zY0dTU;EuQw2j+&Ve5<vLA7d0xT(v{lNx)mYRgBe`$A4<3q^g#;a@^LBdC%dlbHT?g
z+r)LlWwsQSEUJp*D6og1a@5iJDj~e~@m*k|PP0G!$9NFI35u3Ums<;io{LSbaF|Db
zsC9IxyQ)T8@a0DG7&w@9lak}oj-J^&N*npijm>Q_u?WsQb#3v8P``Y0rwORrzz<kC
z#&g|h!;|;W6|+*FG3mR2%jHS}A3pyBmQ{gqvbRlHxYTo|4IBi*WpBTiLte0r2zq2-
z^|o~x>cGoFMi%oZJz=EPAC^|I%zrBY@XQQGBS5z;eU$1X7sW)-7t6b%c}zVY#K&nn
z)smm~y$Xx;!3)N9D9C0ys+i8&7zS=HLUQ%!eW^cF46H66oAtSw@e14+MxXbp2drO9
zah8tkDJxx0WZ+`FvZLsqRnWh=UeXTR(s+_5XIz6Zcp;woK?9nJZ1*O>@sXPsvr*Ep
z_?J`pX<lZm(kbxBD){xz>U~tBfbJ&{6=NcKu*OAENW%;0N);LoP07>x5+Vse4Yl>5
zM;u+yY|O+X;$+u(0knr0Dakgei+DIyWn+NDvCAgE)neDMbB1;}K`Nl#JJkuba_FN|
z*bAbMglhOn7umG+({~gs2&L{mhI$}L5OaL-(8u6y7!Gfu;wZL5JfF7Slqh0<%k3!H
z+Q(soV`bb6WDKXpi{|z}xkc_3GuWOv;gPIRXtMviiXY=5;`RA7s3?t-BS`~QfbV#)
z6stkbxu~m)Ny*vT>wSihIoOSq6Hxa)r70g6l+T`OK`jt+1lTDgr!{EVD2r?EXCQfv
zrb?!hzkD2tRd~>K1fh2x!j&^#?|%e7z>>*0Q=%(xXuLl~yuK-M&}&lBF97uyDx5XK
z*AaWADq;r1KY=m}<Z5qt?)j()798xSqrOV4Elv)A(aFt+)lD-W^VSrSK+I@n7BAXW
zSJ@(OuRuxX_ZOHqc}eCka69kxUJ4`7&iMN|%O$`w?mTkxl$3gp@+WN`qUBpwCOk?<
z`P+aQ3Eq;};%xcgc()piybMN0rxmXxfZHw2ch?E6uwI4doX50yprTmZQFy;$+?|<k
zM{c==-MfcD8oktyPZF%K7Z&_h2JhdMr!8cNBn!)%Q4GKNrh)S6&)fTP)0lMp(=8?B
zAKYlz>eEZ@eQt^RhYYy~FDS3?j@||+6nY7%q{fou=9)H#I!%LPp=4c1aA`9Y*#`Sk
z#U+^=y$BH)1}Jgh@A`Q_mV;m}vhoT8KN!W!S}zLqzKEI~(2I>0KWy#`Czj*yhR+o#
zeg;i%`37GEU=-hvP^=8U4S&49Qk#<qMaGeDsi9>_R6e)tS`DYWg)K<-^;gO8v-s<Q
zmlP2dq{)v+OIshaj+SVbAjqSX-1K_Ms&^XYA{aRRCJ=G(DA$8d<eu%k1*Oq0!|~Ij
zwO;_kl<rrlCEDq=G74a6f?u=*=*#{cj*3a4E_{rt_yqzOE+(DqvB<5}dkzc_AC6b$
zItQ;QbS~W<H*ha~j_PkbZ4UwhjJ>rig!N)hcL~s=Ht1i4<?+I^G;`>@J}NX64j~E_
zzmi;i4?KzYRw@<}r76YWuBxIx@%(g!X_SZ6ShTt`Gx-A<6imZtFP>M2OV@p8LY1p%
zwRneFq@B2a3;*Z9;PPU5BaT0~dPyr%Hc7O<F&{O3)^d{6FNuvhC+QIKG4h+4*Oo?(
znwNH&dH};}!O3~)O3yGn>&e|qMNWND-X!#f`+Oh5WoV(iM|*Df`6rN<oijL)Lo~2&
zYc4BvaG|&ny%!tOj>Lw9><o)$?<87kZhkEvwX5dj($1P>K;AZ2ihh}FnD)&nbKl(N
z9pu!8q~nCZZ?<hKD^@gTteF*6UlvATdaIwQ+<YOc0#S?Bk9Tkh29h^J<Cn(Bqq<b<
m?Qr!KMt$|{Q%imA18DpHpPqXY$l$+!k)}o#hQ$WR$A1AbtNi8w

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/mp3.png b/src/_h5ai/client/icons/96/mp3.png
new file mode 100644
index 0000000000000000000000000000000000000000..b26a96670788241e9d39fa40668ed677f7219965
GIT binary patch
literal 3498
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
I)N_gZ4|NTCsQ>@~

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/ogg.png b/src/_h5ai/client/icons/96/ogg.png
new file mode 100644
index 0000000000000000000000000000000000000000..34a7185c93924b236bc3f164696e0ac3ad7d4705
GIT binary patch
literal 3470
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
b3+YfE{9PZu`nx^&pC-mwAEQ^MV;}Kv5OIxy

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/package.png b/src/_h5ai/client/icons/96/package.png
new file mode 100644
index 0000000000000000000000000000000000000000..d75909d3e1cdd315005ea7b66dfd61e71eb7abcd
GIT binary patch
literal 4167
zcmX|^c{mi@_rS+6j46zLOHD*$lJqK4vJ1(+mTkg!jCB|ynJ~jxvKwzR_K|h6k9`>o
zS(BwKZ5Sd_3UAiXSHJi7`<>@G%YDx0p7Y%M+&|8ZH#arlfk;3A0057Xp`PWjNB&VT
z`>~z875gW_;h}A!4FJ@poH)1-0sz<n=69_1iOyGEHf9btk|#TI$6GSrv{EM9DB~@Z
zzS6L8Z}Y*@u=Xq;Mvf1&2-lJ0J5(9X&v(*9^^6FV+fez`NE0P7*r6l|Gf)=RU4(1P
z4eX;u)RIFc7}*(-?maYOUwO=N-+v|cfg>#qGtph#od3A9DB?0gikIiaakWreB_I&U
z&d$zz5+VqNzG_H*SreD$rTKsR05F*FaV#th<=|lF1aTb0$4j<9^2h#*ad93W2moYb
z<KW=<6Z}uX<6Lrb%>Oh0lK;#9p#T)DQH-zIk1roO%ZN_;3hjBpjaebN0h%#3a80;i
zMY?}B{(e$`X->EuE&49$p$*PKEy4M(><31=3ZjLNElTj#1k|k(yjdqTbnC|g6@Ra<
zI_XVIMt5P@Xno9NM@D|A2|X3{Jkf1&tYNq=(cku35z*->MsK>me0reDSXt_IQ(A9n
zWPf>d3kB0aLYKxNpL*VW+mT)U#3{vHZEmo9qAPonK^~%o3|HbtY6<VVsmweK<0*2o
zyP&@?aH_Yon;P_Kw0^K5lQqelXiw|R@p;pdG+YreKU~w1<=vI*SD%bz<_EP?yk0)X
zwfyZtPjqh0aBn8L(UXvG>J!>CF->XrE21nJ*?!FYfR^<8<#_Y@B&RB(btlEGBNN^B
z6vd!;ylzOSdE&sx@z3?w{P3c%mF(4!=3e^PWSU87&Oq11-5q}Zc(^>gD%PHcw`5X-
z8dII8TGDBe=6P6cdV*tDe&Bd*Y!eC9^3<!9?9)xf7Khz#%k&*A2^p!xGqX|U(KhcG
z<j&lH{6L+aJnvT(k+18XyrhK{1nWNwzLn{7qpuJ<P#jztV>eEZ%Ma2WtBIio={BUe
zmf(!D{cgT(%P0ypnrup$Xh@oDP8%wFl;wA`JJ++nC}^-Wbfk)qgV87pH!XZ<kQ<;i
zS{?m@>eu_spI|QYc8K0qo#t}<6s&_RO|5?Jzn)~ide_ir{w*?vnp5*=xM{lRtnT}U
zx{^CzZV=ORs_rQ|uDb^bhRA<Y!ag=VJUkK)xh4!cA7KVVS)BGI+&{&uV|Y_W5DtW1
zh-28C5M~238d%u^04LLp^t7$fvrAc_)>a`R{ma80qd{{Hm6O2`U;Q9+8e|Bu27Vh{
zv4-}Yd|v!SSx5T=eaI3e_ZD;!q6hZwHic;+<Id?%!QgB{_hAYFC!a+^IXu1}G8UH@
zWYFlT&((Vwa?6W1JM!lkJ7iJUO-AK!w~n2N^KaYtI)$%Ydzd{>jD4zp@PfXaAF-d=
zA5j<dWja4Rcyq!dU(soQ(XI1n=~AA{_D4api=iu^z|Lh>7ys^~u+ZJN7{|>C!Iw|9
z-$(HsEyil@Z;;ITdUG{3MX-exr5^sxdvgPWR*O{;epQ_juC7Sd!s6oM=$X*P(iDxO
za*sUDr9eK-2KPcnN-VkQk`=3Fuz!QA*2u`H)=;+V)5f!B&$N^v8$BV4xoYG-p%*TB
zxw*RRU_WP*at8LxcJBOVX5Kf+Lbn>ZHUp{0Dr#aNUgz!6`#1rk*hN!B^WMmsF}Z4@
z#EB6ah()H$LlaX3d+h|-Pq9f<g#;`9&Sa3Iv{`L~vm%?J7P-08)lm^Y`;xxV^O&FK
zZ@`)@!+1GJqFizmLL%?&v6QPH+lPdy%&BlvwKHq2ZvPjz5!8&st*}s)UKhs66&rim
z#igs4`zefc@fugmjgT0wupv4RVWi*o*F!5HSM^r8s~}=)&zkL~9O&mx9f#~E@}<%4
zB6+qDFuca0;dFL1@Qm4XQ8fH|M8-R+vVGS%h@uk6M(Q7)f`8h}OZjBi8=IWSsYrCH
z5t|*2y9U&q9uS-|;@I+PZTz}J7>0qItkXmKbvIZ?amsz(q!3yc0!XI=K%-T!PpJ4_
zfz)WL`ggzTNxTRF;jT)KiUd)SQ}3a9P7MJhZPtMiVe8`can0-jq4flD-DWfjjPyrw
zYp^jxA0?<LH?EwMkCZVi1@$EjNdfJU!3oY+g~rb04-4e1tWYq8bP%^l(~AB_ox?z~
zl?lhEm=gkaN?zJZsN%>Lq03fdXd#^bZ6#%nLL@^HQsHAUkZ+>!AIP~|_}+42-G@hw
zUETWN^Xgo{%MRx1KcLru-VQ<#iiwaC2rFF^-hkv55UB9AfFpy|N%H2)qJd%7##JJT
zXDJW`vxmXk*w|DVcpe6Phgr_eJtdb&5U^sZ+a=iDB@|sY7Cnpjjg60yH@5(m>rz3^
zdPv^{0<t~hw>U7O5vG7AmV?0UXl={%hU0rlOgN#bZ<;3^^1OAy)mU<p(Dhz~cn}b<
zKRr-jHZXJ4DwrrR%*TZLp9A)Z6uX?~5k!Fn2673qN)dzMldsY)*0k%N?Ud2ol*PjF
zA8SFMRS^cq{gMTlqI#*(O)e9K$h>lp9r8a3IvSAFnseA4iy7`I=&%!A4fuvzvI)Kz
zviR~-983iB=^9X({H^wKOc#h_su2!;^3UW^fR??&?7kJy+wKH9Ey1E@{^eVr3l8;B
zV4V(-j@yRHVqv%7KPT@i_^?~~!?&;Rn5p%N5OL5P6^LmeD|)iLcO^KPiXHnV(z~?v
zDJ*F>lKw^uEj#;E|A}C~ykhomcFfP#d<)ih`n*y#9a|yJr^3g({WIh588F+y;i0b1
z&=6rvO5$j$ze~P-Z@02b5f>8mLjyVExlVd&>);T!G$c!51JiY%J^W=)$SAulaeC`J
z=j^Ojhf~?ywp7{;&4)j<)`{F%?W`HD*<Z-%@vg}AlEM1G29FWP)*wl8>>7Tle*+PE
zSwY(sJb1LZSfJ@QSL?Ps!Z)i9J=N~}VfoJIqua_mXM6Kg`80pyJ~Xme?9`9qEpB0D
zntX-b+hQEq@hla^LzF8`E0s3yp>ObVE+XRh(c@pqr{1;gB&jA#In+v{cA_nmYQxO#
z3`1CNYu&<jzTd>U&l&u(LA0D>m{a6U^Iil;*Ih6)jXD@yw63KV-|jK<04IMV;-tlP
zC0_v`iJaHG=Q<7%SH*Ub@Z3lV;7Op1G+dmuK@bqM60lmpt1otgb}zp^ea%zo&MkzM
zrKNx%i6lrehTk?8`#8Tbs|r#7=;VSJ{Inq_$V`1Uy8NP$^?A<I?-t_I7N@|-lH}<h
zVDLwpNCEYV8Uk@CQ?|KFxJVr2Sp*akTj(uz<xCAu6!DQGyl!q@bZ6j)et+){=~CtF
zW*<Gsl=}v^)~d`ex)4O1ZvBc8o>>qT<{pQNh8*k~S8+1Ersv{~4-c)ZNTfh3%huM`
z%`C+nU&8tiv1qPY#X>f1QT`&=c6;^8HSe#24Z>37c*yEsk<f@3)(#vR8(l;=t6Hqy
zQC==zO^ZiFo{g*T@qXb+kb+<XNmf>8HFR?>SK6#RYVf^h;S%B?De*McpF@0s3bWLf
zwqf2K_#HD2L-X_Jlz`;rTg<f(+cGjT%9=7R6h83R)zx(kc$|n&35R%auxkZORh9Uh
zr4YM5K*e|x;B14jTc162<c`eTJo=&S0K#x$jZ$rf7?mKm`0cJ~0^vwUFi1&SwMi<E
z?8>H~sq6w5nw^w67flR6Kv6M7ZVno4t>p#P?#g9wisKPq){-6o1m;N1mv;xRf(r^V
zy2t|Un+^p^R}|Q9qcND#i|1pi<W%Mj-Vt)Px2<Vn{|u(@IWj99e6&$$bc`0PPmLt7
z^4H0FEXP_A!0Ry89t{-|xWn;4M;dBaYqYeqR06aGX>+k74=wRj&@|r$@f35ur^&A}
z=)n#Zgfl^-Q70glfq`gt!KHCn3{q4Uwuc+WTmegP`!Ex#+Z_iqarR(N`Q)=?A!Zt!
z?>&f_U;*2@SARhZVUv#I>8x4bbrR{9lsr5rDY0#>LV>Ap6PtwDRFbYZMeo!}Ufx;8
zuP(gmT$Jd`0YI^3WVIB<1^%vQcut07cyNG1*%SJ7I(sDU3#%9*K-#8N1t;%8TfVZG
zg$6P*$MZHj5Lk5E67acHRYip1Jse?ojx?B+)lBHC3&)uVi$@7<Bd*6q%bk~oNlWX{
ze0+T|zL<W_$;imjeq4OTdw4VF9(@y=to3@g@l1a8czyi@IKxuDXhrta`uw(S9C@mq
zm2jaGx*(hS7CC@Pm5~ExF0M7bVFKLBECkpsD4<3@-sWP63xkGhag@?s>KEe2VkIPO
zJGzCmERu-0aA7fXZS+<4_w(i^JcF@E<{PWh{Ng`P^UH$ymcbMB94xokl_E~OKwuGS
zvp9}^>z!rPUJ*dNk9|vNC8ShesIqcq<|OkyIbm^LO~B~U^<=yd9&Uo?ng@9Di36(6
zEa>Y)pSOkCm5z$a|2;F~J+%tbxK!m-h_GxNa!>kl7uhBK6B5YMPR}PErjc+u%n55e
zJ`ODO@EP&~f1LHz+iL3Cuj|Y$i1n27KweLnX2OtNxea3Av!%_|D=!4#di?xeYVc=o
zwruP<lhb$6!<Q`Mg;HHc&%z=t*oKiN_%eh}u`Nlu27)uSCyb5~whdRdg^)*A4wS~w
zV!~8vhnAJBCC!jOy)P&=vQJ2(Lj6SYs%iv(eQZT|ma(mffs#}H-^J!-aX?AgG(CgD
z(ln#%8qkaQGu#>ull!}#1JzYk9k#Dv*R%Z6E@iS^|N2#)c+Vtn?XP%86j1o$`8pyF
zR3$|>L2|3BPggQySs(X-3owzFsmekC<&Gqx<A@kNcKQ8P-|0oV*A=8VB+c+Y!f86%
z5AuRyAk%aXuLcX&S9alg&q*(P&I7`%jvk6ux_$2N@JgQ74JBpPF#F{%y4=nV%h7!E
z5^(Nu`-0XiuakFMY&|&teqO+gmmm8g1j$VvFpAF@a1Y*hf6jAHH#pyP`a}P%0v7nu
zuhpHNc>m|7<!?q(l83(cu$+}Arj<c?u$9WZ@4av0KRI_j*v{fHcwVkXNK0E?O-tin
zh3_?J7>{`*vLZy9gMCpkvMb-GykcWo4Q|E6-1^Rct+p);yrL3i>n%O@<>z_68JT@$
z$>Akk34<EflBN(8ssyj3JC5X?sufT8xouma1a4eVeplj(E+edu+)&<maYJ}YOd^ZU
z^!RHFGyT2l!jEh(H07QaY)xbL6M4VM8)HD`N$^1+jv6AZt=}rVXDt{$7Fa=I+Iqi)
zXVV-`3}n1IG<EP<qwyIxJ!)xF>+INN%cevqLNBZEDTL3w<C$X@U<;r9`mG+laYiJu
zHz6m7W)?;p{mEFnIn(H4|K;aCaK0YfBcf_{pfI&w$$>c&;vhQxz(FMLL6u_T_eJ)Q
z{V?I<89BN9ri%ki-R{O}C#mZI1rC4UhF@Rb3|9IzBQggfWbU0gK<Q=hVf)Aa{Dh74
LP4%jDkc9sN@&K*S

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/pdf.png b/src/_h5ai/client/icons/96/pdf.png
new file mode 100644
index 0000000000000000000000000000000000000000..551c133c55a7f676aa9b9af827d8ae6c9bc93748
GIT binary patch
literal 3670
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
DF>lq1

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/pgp.png b/src/_h5ai/client/icons/96/pgp.png
new file mode 100644
index 0000000000000000000000000000000000000000..8a4b2554ae339451331456f5d38e33d75f049dc8
GIT binary patch
literal 4899
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
G!u|t}lpR$7

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/php.png b/src/_h5ai/client/icons/96/php.png
new file mode 100644
index 0000000000000000000000000000000000000000..6cfd766e620569f98daa44a41c48a588fe059e8a
GIT binary patch
literal 4387
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/playlist.png b/src/_h5ai/client/icons/96/playlist.png
new file mode 100644
index 0000000000000000000000000000000000000000..3fa9edfbbdad3a37b4351a1a611b64ab52a517ab
GIT binary patch
literal 3552
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
R_1`a&xv{lTm4SQoe*gz3c}@TT

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/png.png b/src/_h5ai/client/icons/96/png.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce7f88a1d017fe2bc03a49412355e8cf2bf9d157
GIT binary patch
literal 3688
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
Oe^1r*)#_E?VgCb5(B>-u

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/pres.png b/src/_h5ai/client/icons/96/pres.png
new file mode 100644
index 0000000000000000000000000000000000000000..e2a1f2c152c693e9347d4c5325d770061f12462b
GIT binary patch
literal 3576
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
bq0!84)N0AY6(7$3KCEk3txal;P_h35d?~5n

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/ps.png b/src/_h5ai/client/icons/96/ps.png
new file mode 100644
index 0000000000000000000000000000000000000000..cbc672416bd6d780cd3795157b639b9cf02df221
GIT binary patch
literal 3950
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
Jvr^qA{D01{xz7Lq

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/psd.png b/src/_h5ai/client/icons/96/psd.png
new file mode 100644
index 0000000000000000000000000000000000000000..91b43f46addf00ab5127397b589c6387fcca1dcc
GIT binary patch
literal 3399
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
L3~5?z>>2YPG=4m#

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/py.png b/src/_h5ai/client/icons/96/py.png
new file mode 100644
index 0000000000000000000000000000000000000000..d0e410efe520b790c5880abab0f5bc1df53b4774
GIT binary patch
literal 4203
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/rar.png b/src/_h5ai/client/icons/96/rar.png
new file mode 100644
index 0000000000000000000000000000000000000000..0d0faa58544223fa7bfe4c60b78e0f53b8a472ad
GIT binary patch
literal 3058
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
CihX1N

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/rb.png b/src/_h5ai/client/icons/96/rb.png
new file mode 100644
index 0000000000000000000000000000000000000000..9fcc9953a90f0ef9b828c2af32579e719a769252
GIT binary patch
literal 4253
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/readme.png b/src/_h5ai/client/icons/96/readme.png
new file mode 100644
index 0000000000000000000000000000000000000000..82ff8f9a2a61754b11af1b4aaf093d03b0dd9369
GIT binary patch
literal 2541
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/rpm.png b/src/_h5ai/client/icons/96/rpm.png
new file mode 100644
index 0000000000000000000000000000000000000000..a5bf2f14db741547fdad85e1a31787851004e785
GIT binary patch
literal 2885
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
Q@aMN_XH6kKu%xB^4+S3DO#lD@

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/rss.png b/src/_h5ai/client/icons/96/rss.png
new file mode 100644
index 0000000000000000000000000000000000000000..6720f0845c11779ab8121e9ec4b5f763fd3d71dc
GIT binary patch
literal 2837
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
U%JYBy`|bh;*Nt^5v@vo2189*eTmS$7

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/rtf.png b/src/_h5ai/client/icons/96/rtf.png
new file mode 100644
index 0000000000000000000000000000000000000000..1500792495a9171e21e05c761a8d4a2d8130f3ba
GIT binary patch
literal 3781
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
S@3a1YY1Daas8OnJ7xI55Q$~vb

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/script.png b/src/_h5ai/client/icons/96/script.png
new file mode 100644
index 0000000000000000000000000000000000000000..b53f0a6af86f5d7ed0acae90b8d057b5b4bb967a
GIT binary patch
literal 3437
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/source.png b/src/_h5ai/client/icons/96/source.png
new file mode 100644
index 0000000000000000000000000000000000000000..b779bfb14841b1a074d84054ad288a1d68bb57d1
GIT binary patch
literal 3434
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
YJ@8@HiH+&{|CSr0Yvu-Jdd_eD2k2MyX8-^I

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/sql.png b/src/_h5ai/client/icons/96/sql.png
new file mode 100644
index 0000000000000000000000000000000000000000..e897b24206efd4941c8d595a32533a755ebb633a
GIT binary patch
literal 3218
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
Sn)-j2sJhw)S_K-m*#7`(R>BMb

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/svg.png b/src/_h5ai/client/icons/96/svg.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a615600d4877b92b285883473bc7dc3690dcca2
GIT binary patch
literal 2889
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
Q{2dcb49yM7^^q_B2gLk`(*OVf

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/tar.png b/src/_h5ai/client/icons/96/tar.png
new file mode 100644
index 0000000000000000000000000000000000000000..e8f8587752eb39cde41af4ed2befbf04a66f7732
GIT binary patch
literal 3051
zcmbW3XH-+!7RPTw4>eMiP7p*zs)nKry@W1RRN4eY1VksGpg;gY5D`%v7*KleD7^;h
zy+lHQ(3KjHUPE}-_hG)xthe4?_ndpyKIPtX{=aqhjx;mTV}+fA0RX^ips#%sd^`Rs
zj5J_9qWkh!2kku#V+{Z(i(#fX(E$JrU}j{g!_Lmm$;s*C<CC1692^|%?(UwDkWf)k
z(bm?Mn3z~xT-?ym5E~o2v$HcZGn1X2y|=fwxVX5qv@|$42>K@`CVu|>xxc?JBO?<T
z87V6(3x4QtJ2*Jl*w}#l*Zy|?9}OCsU)%WK4GM++)8K#U`ll)X?)UQYLZMJ>Y;4ZX
z&Pqy3{{H@Qa&mETab{*_#>U151_t2qa&d84T3Vhzf8Nf{E<8M3Q&Uq)N(wwWK|#Uj
z=x7xcmC?~r9v&WWn>so=7!0Pat}Z4f27y3;5=2EsiHV7gjg3`SRwgAS5eS6Z+FB$M
z3F-oe!<(9#s;a8cXfzg!y>sV|x3~9)4<ANGMy_4E=IQAP3RF{5qpPb6s(kkBSq26M
zB9T~DR#s9{Qe9o$($d1r%-r1ETv}R+$K%t|(gp?wGBYz<TU$YKhlhu=va-6mx;i>K
z`uh65eEE`}pa1RKH!771;!#jg(9_eCmzUSr*oed7K7amPR8*v<rq<rxo|BW)-Q5kM
zA}T7Hk&)5g-{0BUIX*sKSXd}5EG#ZA-rL(dG&J<}>(}z~auE>`CMKrz^mLFk5V_pk
z+|$$3qobpflau4)V}5>q7z}oJcu1j8=I7_9rl#iR=4NMSzkmNeJv|MA2Qo<}lR?Hd
zH#a9ICx86-v9hwVu&@B~39`4gwzj;yyuQA^wY9anx(ZSXqPx4h3&IRyyuH0mB9Z2^
zdw=Qs0CUsCqQ8Ic_;Bv{_;3k)4tnqGv~Jaym6A^uDNWVUws#M=KNkP)iAHKNL9hC#
zdl)i^@jTF=H#L^UJU;6}8)~ADa#9s^P<9gze17Ahny7$~NU#>{skttf<eBquDNY0{
z8%IOLB^Il5+z@~j#+?iRjKT)m8kTNTYvX>F7B)f*-uI@fDi!bzR)tp0AS!mRP{_6{
z?$<NJ9G$(TOCFv%_;KsiSJ=5>DJ2EzN;mbfIB7Bzf>ywat80odiH2le7G(}5_XZeF
z)y0U)Z*P5US~zB3q^v9N|1ouPV#4<DR{8#wdqbzer+kb%w}tv_|2(Gahgg?Z!y6%G
zEa!2^kRCe-O<?RJ(WZl%n;N<|Oyjn-ufz-WbShPzp*?)?4sp0!5?CX8WjKbGk`4{r
zOGx^(IQH(`eO(l)9l72V1m7A}j9A<}hNe^Q;9hkCryX4GhayG#R(cllQ}75jbf$pS
za>Uj=6%u>N8_Qj_odc_gb<NC=Yb6Chhv=3!xjwupoUT)N69x$;74-zBzs1vwE7MaQ
zXw&!IO>*=_W|CcQ*92cE^=EkY>84ZpAPZ1<6QF1$_?SCOtoHkm1q;j_Yf6F=G@UkS
zt0_4F!U4)Cy30<~#vXGK72h8S_li(2ju|`mF76_3NNSj#b-Qkc`uC(BAr}~5D38$H
zJy&tIdTOGbX9oX8K)QZUB^1~3a_UAI;F!bDHPa?(;6>vIvvcHfyWu^9`-F`jahIG-
zRc~)*XHN&pH{>DpN3ULDMQ>CXlLA+Fbh;E->bEYk^bST_KHj|Bmp7OA^+go~kj7!-
zC9x}RCZ;eM$$6r1Oui#73T6b3YU5Yh_Qf|oq4$59Uy??*fDKM=olg1f)av;Fj-vjJ
zU~HN@GLNCb_7hfvPW6s|dk6*Wo;u?R7utg#A#sN8yQ7#;fgzie(=`e&FAg59#VjL7
zOEP06k!#1PKXwWIs!%*e3nGz9cZOKnriHyO1}k-;ffU*l<Sb<aUR$)~rBp9KVLe!`
zRtg*A7Jk7rT8{CpaX7FAs}@xQWbv%R^dGhTJUkjq8F?9!1KJh9CHS5$+=8WM@T-x~
zlIGWvq_81sgP&zL+TRy&xpPjI<Mhyy-L8}QlGBbbkt8xbvC=Y4cF>rUPNZ99a@g}V
z<U4$fL}OihKP1Tm(JjGgp*~H)zM-A+_n&YL(=<f}Y`~QxK6jP-P2eBO(Y`hIrFrqN
z_@>dYu{5{>eanJ3FODf_=+}=h)7JC#2V?W$wRvGl9-`g!mn_u7_#M}|N$E+jgNWDK
zW2l-C-s?1-67R9iM^HAh29}!dRGZfxe83LJUbt=U$PU?g2E`(3g-(T_EVT??cve8=
zq0m%QP|z7Dhf6~;;QNT+_YA<~(!V?PzuvGuIE&^hU1=D7<U6a*0q8E%1IU=5kIHr%
za6SuVbHZvv=pEd8>e>?;qEI<My&?vmI#=PW_pRHaEAn&TJ2~~Qh9)Zz1Jr^+oVe^h
zEPN@OIv^}yWU@jwLa7}z(;>{0KcZnA&ttdMVvw@9`Gyn(pJaC&!XF0M)pqr&JhDxP
z#<of-=|##{hvXzc%KwTUi%y^GO@qHT$natBmH*fUhei+&DeZNDk=OIUd#$HzW_u43
zCLL7s(g6Gky(=Wzo(1v%`RDGXmkABP$#V1q1CfKw28a8O<hb&g9IrjJEQ>fy;6xj|
z{7aGC#MOxAW(~yF5^2_(=y9!Xavh^`&(&2zqP-(lk8>tjh{P3ojPm|H8y~Dnvr$qp
zqVh3WA7X;B9G714qgB4hCl$iUEwKQ{RHr5tla(Nl0lLu?xUv8z-gWhRk$IoTabEA2
zdjr{7R@U}4kF%<6FJHNMv3r0Q7Utq27Mq)$4Tdu?LV>Xcj2&fV<`VC@dAd;(?l0!L
zdrcJ)+4t+TFxhGc%8VS>FfoZavS9v0B0GfsG@Wdett%}nswvEs{~`#e;N6~tz6E?s
zTQqxi<;$uIvyBNKl8$bD%~@VFai}9iXV%v@Hd2SP>g#*rW%ff96%{cUOB)*-%Wnk2
zUfO*yOM)yHEG;#B3s|?%h%e06zl@K68D92;1J^adwrwT{LDyiz_B$#Uw{Iu97d+eU
zHdoKRs_K=J2}CaA^=&?&^`r-rfCDF03Ni7Bk?2)5Ccu+ne#Pb@7k)XC3osf=y}1m%
zybjqvp2xN+MX(4Zh{4p2hB`NLeR+2H*1Y8iPMOUvwxOGw&2>?V$hv}pOUSC?E6Cg7
zuZPAg#&3s9VO}{pvdZZoTF$LW=Deu}JWijF0<+s%<dkS~N)*|_CjPGN_+_pfQ7qG^
z^sBO1V{-+!$DaUxvGSH5#ccb|g1YC7c6dEyQXI_8ylI%4@+vc`sCL$x#f4`-iNUbO
zLroAO)vuUIjGi$?*ez(8HPBEv!Ga5y9RU^4%+Y7M>KDwW)z>CmiSVpc7SMk`B;}8z
zBTu&3^HTs79cJJONtk|6>d1G)Ztn{DFF{Gtancf(@vL$G^>=@US0p5ejxts_Nw=%K
zMk-yk5;-t3V`$fpbMQm^5?`4NJ*jU|CMu{}M-1e*O>1Vmp^&@@3R-{YGV+_DgDyG(
z7CVz|1<y5Yi9N%%rwM}$O)rhir3l{(|L9~7n>d?Z&bL;&vocbE#FdyowBN6Jp>oTh
z@!%zUc>6(zvy9>XW96iJA^WY+pHWn1;FK-|q6Sf<E_E0R?Txq2&dC(g%o8>2)1u<9
z@9>9j4Zdqjv)3S3tB<M%SOd=tdxzH^1ooH_JRHt_2@}MLHK802A5#KCzB==vY~RNG
z))7w^WCQPvW*zIJ3Tiq1WQ+Vk-+w5N_Q6<c3ur|~yt2RXvr76IAFO_{2|zHv(QU}`
RbNrQ}80eU27i&6({0A@)fI<KO

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/tex-bib.png b/src/_h5ai/client/icons/96/tex-bib.png
new file mode 100644
index 0000000000000000000000000000000000000000..22ca5e7b23db5069f92b44151e8254c4eb86f731
GIT binary patch
literal 3200
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
B|Fr-B

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/tex.png b/src/_h5ai/client/icons/96/tex.png
new file mode 100644
index 0000000000000000000000000000000000000000..3347e9d7a12043462a58212d705711b4e7aac3ef
GIT binary patch
literal 4730
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/text.png b/src/_h5ai/client/icons/96/text.png
new file mode 100644
index 0000000000000000000000000000000000000000..e0b6abce54a26d04a90e0c00fcf96699bc237b5c
GIT binary patch
literal 3902
zcmcJSc{r49`^RrHV@b9_2r-sW^kiQeYAo5FED0%<t%&UV(qxis$v*UC7egUyWE&G1
zYsfm*CS>ennX&ub&(ZOF|9t;@@8h_y`@GKUJkI01zu(V4SG1|I9xF3HGXMar2KqW?
z;MexwmkA24!@80G9>AP5jWhwEBL4KD9X$X*0n;1i*A*2NdwYB5=jW4>l2}++tgNiK
zxw&yTTxMqG)YKFPgQ=^lv$wZzX=#DO;b4=6g@uuk5n*9rBO{~b<z;<+{oUQ&&!0bo
z$;HJ*3WXviCAGP^>FVmbva*tqk@4flkByBDNl8gCNu$vQ2M5>I*1({vs|)P*=P4^I
z8yXq{%l>TT<>fUrG}P7AArQ#_mjEaficBUeC@5UHas})R=GWKP$H&LPA^+6;`t=K(
z?dsL5f3`Y0I$$t6JFBFm1pcF{swxtR1T&hNn&8+fDk^`<{>wT%Jp7;2(b3WW#Q)PE
zG&I!D&(Gc6{mz{`4<9~sc6N@8j0E*JGcz+WF^P?hjfshIb91|W`?iaVi;s^_L_|bN
zN{Xqesf~?|g@r|GYHCnWP(eY#-rnAe7cUYL65hOdlboE~*Vk8DTT3Jojg5^10s=s@
zK*4i!b0;S!K}U*;iqL2@7K_c#&!3*2uCA^Ibt92T{r&x*O`V;c?d|PZSy^6QUg_!S
z0|Nt~8YLwqpz?Wnd7w(5%VT3>Jv}`Y6&0YBb8~Y90s%w_WTvXB>h0UN9UUF5t*woX
zjZIBWU%q^4YisN7?w**K`1tW7$Q~Y#fB*hHXl_kSO-@cuWo2c3eLaZHhYuf`o0~yf
z%gf74OG}H3iyImme*XM9GcyD7_UY3nkj%ouLJ(aL#r^&L)zwuHKaj?yr6tf}5Hk=+
z5EYOLkUfx=-@ku@jBRagf%t82Z}05vP^r{+JJ%dQM_>Ay8Q*H$IVNSdR#ATLPp%F9
zj<#AIGI3mWJC3WS4l1sw51ZwViBf1WgTJ?5hkstC(UdZhpFJykA@L}1Cn=m3LZec>
zA5*CzvOL}%)Y$ll=YIawXtQTFu(Q`3p6ds?()0{<sYq2p2GmXCQ#UlUMYtu!#5slG
z=Pq!uvT;N;Nn4!ZKTQX4vO3QKz-cQ39ZmDc)2nX-Py(ap+6S9xH)!qy`3B=xsuztT
zGl#|9IHQbKzDB<|H$##zCcIH*NXCt|PLLcOaB|u#4!ExjaxcUCr#XYKF8U^|`3^)+
zj~H|)7v&!n+R)L~0%-W`kagPH6xV>#Wqf!2{0Zg^G-+^v-LWi@4Oe)+9oQW7p}OgJ
zT8kC9lG2j1F2nL4Q5>J0FkWk{*4>}3ZQjY8T&ZS4xP^9&HhVc6?M!*#R!nAry|D|I
zpZ*&7r@%8d)w1M~Qs2G(@!Pj5x9*^V-3QWo!<lkhPDynkeCN9j>K0iLYLY$^PLn6O
z2l5dITNCm=NzSP8wUQx|$k7%XeWuXgRd*T&AEWjoc98CO-J7c~Uee3ho7`tzR74=x
z=S`-#XPZ+n_DoKAPoD?M&_M4A?PgYaPBTl7-XX`*$pF_7@3RQ|Y+EQSJP?@9F6FwL
z3yWeBVMBCXt2VqOc8`Iu?=x)Jmnr?TYttu%`R`zzMroI)2OFKOdK6WdUKG9h@BT7+
zR`Su5JM9U8VNiK@ov?^Cl(6696$lKuphbR5#?PK&OE7?#rhL;fXaCYJ9fx6~dK(Z@
zbVS#Yeu9FPrq91<lfSvZpH^^SAozF^OU~nkV@dfmx&;ZH!>Rk^f(xFaJ+%ZAUSEL4
zbVANlPKR+x^SY#-EmDf1{CAlks{i`KZ>=cZMwWazOo0jtUiUi_R`^EjYqXd`*kASP
zm?yxKbv)DbcKs`q9ScwfXv{f60D*L&p4Itef}))of{)P@)>}8l=_we;u>D-+ZO3Z}
z=8j4kAByAt4Bdf3z$Q>1sTz7HE}N`m0&p=VjJY12UdL$94n3m-%8{uYi|+~!0vy*U
zbfXNWHOa8nYIp`qKkuQ-wk$gOY=NF;8z)7OQxUU<P~@QB4Z265-{2YMlmjeea*A?t
zj+MMOvMc*(`q!-%grQ6)GcLdY$+2LYS;~GL%8Sl9IJa?yoB6fZK{SMU7s)Hw@)DCE
zglRMFU_xzm0ey);3IkIld|y8B2qFdu-o*4T=g4v=L2Mt=kO#R%nmTof7>X*PHT1JG
zDn`@Or%fENuQ`T$Dl>DavMp(g%)kO8HGXE3!)$Sg%h}w&DUtM;YnPxhnKQ+a<~jBc
zm=*vOZ{ERU%yb$Z!bZs!4|$`CS!XRL82Kl`$KXIOLx-$CAErXBs0xOuO|@jT0z7ny
z`XZ_o+%Y#s+vDwh`K0G?%VaE|)=<+<*NCpUx@rDIEyPk#KD)re3bC~{OMJT0(s?_+
zS10QqEduqvnxO5La2f?s@$wb0F(?HX8)B?9!ta~QQd6uqrWkS{1cmQ_==TCKIQ{OJ
z0)%kCn=ZO^#S&_zrd7Vt#6s?EkTrwA5=mW|RfUrf+5<RBe7lz%3Jc6)jAev87%Gdr
z7d5CCo;#2ubb1#K@eVd%47|vsNt6xKGFB8M9_`);%!pY&RVeLxzUycu8O0QMl|h#O
zjq8)Os_h|mmh@9CPNT&u#7>bO(;*?Yh6t8<`4+(%HQ(7l)e@`&&NEFxkXZeQ^2+>f
zP}(swrZiw$7dl>${HSUv$9vp$1Rnmm?DkKNot_1jVVoz)L%3Xka!~*JNSiNcsz768
z#$C@tRsBi-#o}Qx9_!NLi_DlG4Or+y*QO)oaBeJpMi(TFu{o;oqG(6+DsyG?JvC0m
zNe-67!=&NJ<%zB!knDK;ZK$j5ub|s(OcLZ!3(Vllg9-`Z8J4?YvL*kVz5-2>kXm>l
zliy~`aclNcI2SdVNit5gv$FdY5(<01i@yKmqEjtXlOXx~M5sw*Y-zIFEJH)5OzACw
z^P-u!zM-=3BJ)}NVFYgFgP<N1i-0ZiuFV)J=AWpnWBJH8h!4wNex?_*5{ZD&BVbRQ
ze3c=G@2zP~EYh&p3CCY;R(xa73OO*6=Tp=<62LCCg5EkeL$B@A-q`D|(#JbW8s^gV
zl6{=*zEG4nCa@28mO*4QqVkJmY|VL!c!%E&dFGw;A9cIt_rU#cmqd`XhlaPP)z(h|
ztfLFIy&$+CuNW2%L@}<Qm6e2Sm6&R@6v>z0_pSY+Yko&J4)1wsr6Hv8K}3XvxH@zF
zX0{MDgkStkA9T@xOT$b|gnd7wi2htI#K@|OZ8+ysuu)`N%x4)ASw{x3SfR&<YIe<Q
z{3d%BedED+Y~H1|k5_nO#+O~sqeX*gpWk)g*gwnTG$)>OWHlV-NQ%i*LQ4$Ey?>LS
z{A$GlJ-#K8nIB7cxLP4jN6=%wc(Z7=)J?ge+OJX`!@m^F_*H5t0U4{nGuCKnS&xG7
zj5oYyiitB+imM^Ml5#m$iuKhmR3sADy#98;c1dKKX{DrJW&`qcd5<>o6*QYj_(xrI
z!9}t+?SSj=w>n|At_&XmTZu;4%UK9Ul6hk{lo9a>#cy?Op*GNyv|O-Eve5oULWEmG
zEb|BH(jl@pQlZZcuH6yRQGbh>wrg5Q)RKlsDdPOy+A&%<f3@*;XF{0en7o};#sX*j
zFug7`4&&fkdHNJ=$^7A14p!~1<fqh|f#2Kr+8Gb$z1T0<y!%>`T<qE!qx{J`7%nXG
zBz7jbyfpJ^4VG$?ae*T~Ix-}9dEV=3MYCf`UDK2Ve{H%W^HU9@&;426FV^RQgQP4+
zI#+%iN3bfnQFe)uD@Dx9E}F^<WEqdQ1Jn)R8S!s@SEwjP15V(v>JNjRvJ$6D2~{W9
zaw$e_+hQF}q}RNIoDxLRMqe%e`m`lGwz^AZi4D5{paK>km&#m4#Pm6opYb3x@y8FV
z%*C<?E`7Q5fG<J=E#~5k<<#tI)a@BsT8Rv1u&99>IMj8RjzrsSeK<uLxjB7BsjTW|
z+N*QRE#?~=MRw!rD@8meqsYi~#7L&#e89Ccr!kSnNL@<I`Acn?ZCJlsO>J8^Lx&%`
z`m>lG3C_fb8s#c)9g);;{H{hmb9m<BOMEJ9?4&NgDdn%ELFc86s@=z-oSuE&z!(#I
z@?!}uzA!m!-B~enAUayK$JzW`2ji!5)+qL<SaG2WEjgvna2+U_4<!gGEZ*~u*^ED3
ze)s2{v`1O$6$}+ixeVFHCL_zbheDxH`{zxTUzfb=Y+reF84v|JRENgjKM$5n;MZ9X
z7llgkmxuJl8Cf4bYaT@^7c5xItZnYiQLs26w}VM%X;`OIu*C<uM;6gVWe?5r%&5ul
ze))32hHLubF0NAR1~2Nr7xMSLF}PM;JNoz7RFy-YJ3~SnoiD|W%dvE7_CogK2lq_7
zGw(NXD3*R4=EwRdEZuB1t-I%kzw2Lrd*YO4mEn7Pf}MQ2aqSs)qnN@7^c53savHKS
zkM7xJ`dlteoYs|JTf6Gp)g5j{1L5tp>b)r%H;=z#tj_}Hl}ER~Rxk&tKc(0Rafrx9
zVeNKr{ggV9B0yzOs3?S`lq&JZ`cWqoLWsW~3lkLb^Yfx8d{UDZA?pcZ&Tm8wcL@Iy
zhVF(-N0b}t=ks`MPn%R?cxg!in~_IeOwm&IK2tADR>!&z`{M55LkR+Eb9bR3X+I9|
z2SVR$kDb!+PY&j-uj&Z->CPFVT9%%jgiJRF9sD)_j#%Be!>EkjAnpe6!@QEEi5kUX
zTT*D*W3>O2QaW2npTkudw49^^g}6M5J|tfHPP?N8yxmBQNBd6g2n0CJl?z)*QXC81
zCw;r?1&%9p>+Pm4r7Pnce@XacFBTR)TvadMOSC@0>(=iieq;1^EXdcxV-xTq4oB3X
zbBrVUNVD3qK2pM8hYzlM8&7}CFX0{0zhls_>7C?&Kbz$5d4iu*8o(bh4$eHQJs<j7
ceEU!(|9ilXw>r~2|6bz^t{dxo)UplxKValuVgLXD

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/theme.png b/src/_h5ai/client/icons/96/theme.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd0d6386442cc1d3848efe7a7f4f4ceb827f8cc5
GIT binary patch
literal 3707
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/tiff.png b/src/_h5ai/client/icons/96/tiff.png
new file mode 100644
index 0000000000000000000000000000000000000000..a1474df7697acd891e5b8085878954e6f4c32651
GIT binary patch
literal 3392
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/torrent.png b/src/_h5ai/client/icons/96/torrent.png
new file mode 100644
index 0000000000000000000000000000000000000000..134b233845b43aa366b4f291f08f1f035d6b7fcc
GIT binary patch
literal 3496
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
Q*58i>rlF@^qh=NQ9|!w-<p2Nx

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/unknown.png b/src/_h5ai/client/icons/96/unknown.png
new file mode 100644
index 0000000000000000000000000000000000000000..2accf9347d0b351d3da6c51aaa68e3bec0aa8018
GIT binary patch
literal 2614
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
GW&90}aA1Z2

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/vcal.png b/src/_h5ai/client/icons/96/vcal.png
new file mode 100644
index 0000000000000000000000000000000000000000..0b6ed0632d3cf236e1cd0d9cf4698ade4cb93ebe
GIT binary patch
literal 4229
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/video.png b/src/_h5ai/client/icons/96/video.png
new file mode 100644
index 0000000000000000000000000000000000000000..79d44630d8d56087fd32d245c4fbf68ae3e15b09
GIT binary patch
literal 4364
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
VE-Io3_4?1xfVr`iQKJD8_a7)aoxT77

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/wav.png b/src/_h5ai/client/icons/96/wav.png
new file mode 100644
index 0000000000000000000000000000000000000000..60a843dc9563299d9f79e84307ce5559afc0bb93
GIT binary patch
literal 4800
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/wma.png b/src/_h5ai/client/icons/96/wma.png
new file mode 100644
index 0000000000000000000000000000000000000000..c2e17911ee03a7a2d4e653dc8f282deb4e55ac33
GIT binary patch
literal 3563
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
D;Mk;y

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/xcf.png b/src/_h5ai/client/icons/96/xcf.png
new file mode 100644
index 0000000000000000000000000000000000000000..41335b872c937820e12d182ccbc92fda73ce344d
GIT binary patch
literal 3680
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/xhtml.png b/src/_h5ai/client/icons/96/xhtml.png
new file mode 100644
index 0000000000000000000000000000000000000000..27cc3369db103717a04731d11d258d4a6d13b75a
GIT binary patch
literal 4693
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/xml.png b/src/_h5ai/client/icons/96/xml.png
new file mode 100644
index 0000000000000000000000000000000000000000..b566c54e3b8b347ddcf046525516cd653d364633
GIT binary patch
literal 4004
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

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/icons/96/zip.png b/src/_h5ai/client/icons/96/zip.png
new file mode 100644
index 0000000000000000000000000000000000000000..ff94ba80c2d1ea5341d3d52bd4218f27c975eaa1
GIT binary patch
literal 3061
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
E1HSQ`A^-pY

literal 0
HcmV?d00001

diff --git a/src/_h5ai/client/js/inc/core/resource.js b/src/_h5ai/client/js/inc/core/resource.js
index db012abe..c448465a 100644
--- a/src/_h5ai/client/js/inc/core/resource.js
+++ b/src/_h5ai/client/js/inc/core/resource.js
@@ -8,7 +8,7 @@ modulejs.define('core/resource', ['core/settings'], function (settings) {
 
 		icon = function (id, big) {
 
-			return settings.h5aiAbsHref + 'client/icons/' + (big ? '48x48' : '16x16') + '/' + id + '.png';
+			return settings.h5aiAbsHref + 'client/icons/96/' + id + '.png';
 		};
 
 	return {
diff --git a/src/_h5ai/client/js/inc/ext/select.js b/src/_h5ai/client/js/inc/ext/select.js
index 003e2da9..f07e3906 100644
--- a/src/_h5ai/client/js/inc/ext/select.js
+++ b/src/_h5ai/client/js/inc/ext/select.js
@@ -114,7 +114,7 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/resource', 'core
 		initItem = function (item) {
 
 			if (item.$view) {
-				item.$view
+				item.$view.find('a')
 					.on('mouseenter', function () {
 
 						$('#selector').remove();
@@ -142,7 +142,7 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/resource', 'core
 
 		onLocationChanged = function (item) {
 
-			_.each(item.content, initItem);
+			// _.each(item.content, initItem);
 			publish();
 		},
 
@@ -150,7 +150,7 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/resource', 'core
 
 			var selectionChanged = false;
 
-			_.each(added, initItem);
+			// _.each(added, initItem);
 			_.each(removed, function (item) {
 
 				if (item.$view && item.$view.hasClass('selected')) {
diff --git a/src/_h5ai/client/js/inc/ext/thumbnails.js b/src/_h5ai/client/js/inc/ext/thumbnails.js
index fd4849f7..c5c65547 100644
--- a/src/_h5ai/client/js/inc/ext/thumbnails.js
+++ b/src/_h5ai/client/js/inc/ext/thumbnails.js
@@ -9,17 +9,17 @@ modulejs.define('ext/thumbnails', ['_', 'core/settings', 'core/event', 'core/ser
 			delay: 1000
 		}, allsettings.thumbnails),
 
-		requestThumbSmall = function (type, href, callback) {
+		requestThumbSquare = function (type, href, callback) {
 
-			server.request({action: 'getThumbHref', type: type, href: href, mode: 'square', width: 16, height: 16}, function (json) {
+			server.request({action: 'getThumbHref', type: type, href: href, mode: 'square', width: 96, height: 96}, function (json) {
 
 				callback(json && json.code === 0 ? json.absHref : null);
 			});
 		},
 
-		requestThumbBig = function (type, href, callback) {
+		requestThumbRational = function (type, href, callback) {
 
-			server.request({action: 'getThumbHref', type: type, href: href, mode: 'rational', width: 100, height: 48}, function (json) {
+			server.request({action: 'getThumbHref', type: type, href: href, mode: 'rational', width: 96 * 2, height: 96}, function (json) {
 
 				callback(json && json.code === 0 ? json.absHref : null);
 			});
@@ -38,25 +38,25 @@ modulejs.define('ext/thumbnails', ['_', 'core/settings', 'core/event', 'core/ser
 			}
 
 			if (type) {
-				if (item.thumbSmall) {
-					item.$view.find('.icon.small img').addClass('thumb').attr('src', item.thumbSmall);
+				if (item.thumbSquare) {
+					item.$view.find('.icon.square img').addClass('thumb').attr('src', item.thumbSquare);
 				} else {
-					requestThumbSmall(type, item.absHref, function (src) {
+					requestThumbSquare(type, item.absHref, function (src) {
 
 						if (src && item.$view) {
-							item.thumbSmall = src;
-							item.$view.find('.icon.small img').addClass('thumb').attr('src', src);
+							item.thumbSquare = src;
+							item.$view.find('.icon.square img').addClass('thumb').attr('src', src);
 						}
 					});
 				}
-				if (item.thumbBig) {
-					item.$view.find('.icon.big img').addClass('thumb').attr('src', item.thumbBig);
+				if (item.thumbRational) {
+					item.$view.find('.icon.rational img').addClass('thumb').attr('src', item.thumbRational);
 				} else {
-					requestThumbBig(type, item.absHref, function (src) {
+					requestThumbRational(type, item.absHref, function (src) {
 
 						if (src && item.$view) {
-							item.thumbBig = src;
-							item.$view.find('.icon.big img').addClass('thumb').attr('src', src);
+							item.thumbRational = src;
+							item.$view.find('.icon.rational img').addClass('thumb').attr('src', src);
 						}
 					});
 				}
diff --git a/src/_h5ai/client/js/inc/view/items.js b/src/_h5ai/client/js/inc/view/items.js
index 1629f434..a5dd4430 100644
--- a/src/_h5ai/client/js/inc/view/items.js
+++ b/src/_h5ai/client/js/inc/view/items.js
@@ -9,8 +9,8 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
 
 		itemTemplate = '<li class="item">' +
 						'<a>' +
-							'<span class="icon small"><img/></span>' +
-							'<span class="icon big"><img/></span>' +
+							'<span class="icon square"><img/></span>' +
+							'<span class="icon rational"><img/></span>' +
 							'<span class="label"/>' +
 							'<span class="date"/>' +
 							'<span class="size"/>' +
@@ -39,8 +39,8 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
 
 			var $html = $(itemTemplate),
 				$a = $html.find('a'),
-				$imgSmall = $html.find('.icon.small img'),
-				$imgBig = $html.find('.icon.big img'),
+				$imgSquare = $html.find('.icon.square img'),
+				$imgRational = $html.find('.icon.rational img'),
 				$label = $html.find('.label'),
 				$date = $html.find('.date'),
 				$size = $html.find('.size');
@@ -51,8 +51,8 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
 
 			location.setLink($a, item);
 
-			$imgSmall.attr('src', resource.icon(item.type)).attr('alt', item.type);
-			$imgBig.attr('src', resource.icon(item.type, true)).attr('alt', item.type);
+			$imgSquare.attr('src', resource.icon(item.type)).attr('alt', item.type);
+			$imgRational.attr('src', resource.icon(item.type)).attr('alt', item.type);
 			$label.text(item.label);
 			$date.data('time', item.time).text(format.formatDate(item.time));
 			$size.data('bytes', item.size).text(format.formatSize(item.size));
@@ -60,8 +60,8 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
 			if (item.isFolder() && _.isNumber(item.status)) {
 				if (item.status === 200) {
 					$html.addClass('page');
-					$imgSmall.attr('src', resource.icon('folder-page'));
-					$imgBig.attr('src', resource.icon('folder-page', true));
+					$imgSquare.attr('src', resource.icon('folder-page'));
+					$imgRational.attr('src', resource.icon('folder-page'));
 				} else {
 					$html.addClass('error');
 					$label.append($(hintTemplate).text(' ' + item.status + ' '));
@@ -69,8 +69,8 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
 			}
 
 			if (item.isCurrentParentFolder()) {
-				$imgSmall.attr('src', resource.icon('folder-parent'));
-				$imgBig.attr('src', resource.icon('folder-parent', true));
+				$imgSquare.attr('src', resource.icon('folder-parent'));
+				$imgRational.attr('src', resource.icon('folder-parent'));
 				if (!settings.setParentFolderLabels) {
 					$label.addClass('l10n-parentDirectory');
 				}

From 21528dc50bcf638f62b94c35ab38d73a89c7e731 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Tue, 27 Aug 2013 21:27:31 +0200
Subject: [PATCH 52/83] Updates thumbs.

---
 src/_h5ai/client/css/inc/view-details.less |  2 +-
 src/_h5ai/client/css/inc/view-list.less    |  2 +-
 src/_h5ai/client/css/inc/view.less         |  3 ++-
 src/_h5ai/client/js/inc/ext/thumbnails.js  | 26 +++++++++++-----------
 src/_h5ai/conf/options.json                |  4 +++-
 5 files changed, 20 insertions(+), 17 deletions(-)

diff --git a/src/_h5ai/client/css/inc/view-details.less b/src/_h5ai/client/css/inc/view-details.less
index e438d0eb..ae81517b 100644
--- a/src/_h5ai/client/css/inc/view-details.less
+++ b/src/_h5ai/client/css/inc/view-details.less
@@ -49,7 +49,7 @@
 		}
 
 		.label {
-			margin: 0 230px 0 (@small-icon-size + 8px);
+			margin: 0 230px 0 (@small-icon-size + 16px);
 		}
 
 		.date {
diff --git a/src/_h5ai/client/css/inc/view-list.less b/src/_h5ai/client/css/inc/view-list.less
index e73a46b2..4c2cd539 100644
--- a/src/_h5ai/client/css/inc/view-list.less
+++ b/src/_h5ai/client/css/inc/view-list.less
@@ -49,7 +49,7 @@
 		}
 
 		.label {
-			margin: 0 230px 0 (@big-icon-size + 8px);
+			margin: 0 230px 0 (@big-icon-size + 16px);
 		}
 
 		.date {
diff --git a/src/_h5ai/client/css/inc/view.less b/src/_h5ai/client/css/inc/view.less
index 88ed55f8..44ee1f15 100644
--- a/src/_h5ai/client/css/inc/view.less
+++ b/src/_h5ai/client/css/inc/view.less
@@ -56,9 +56,10 @@
 @item-background-col-sel: rgba(0,0,0,0.02);
 @item-border-col-sel: @col-border-strong;
 
-@small-icon-size: 32px;
 // @small-icon-size: 16px;
+@small-icon-size: 32px;
 @big-icon-size: 48px;
+// @big-icon-size: 56px;
 // @big-icon-size: 64px;
 // @big-icon-size: 80px;
 // @big-icon-size: 96px;
diff --git a/src/_h5ai/client/js/inc/ext/thumbnails.js b/src/_h5ai/client/js/inc/ext/thumbnails.js
index c5c65547..22379989 100644
--- a/src/_h5ai/client/js/inc/ext/thumbnails.js
+++ b/src/_h5ai/client/js/inc/ext/thumbnails.js
@@ -6,20 +6,20 @@ modulejs.define('ext/thumbnails', ['_', 'core/settings', 'core/event', 'core/ser
 			img: ['bmp', 'gif', 'ico', 'image', 'jpg', 'png', 'tiff'],
 			mov: ['video'],
 			doc: ['pdf', 'ps'],
-			delay: 1000
+			delay: 1000,
+			size: 96
 		}, allsettings.thumbnails),
 
-		requestThumbSquare = function (type, href, callback) {
+		requestThumb = function (type, href, mode, ratio, callback) {
 
-			server.request({action: 'getThumbHref', type: type, href: href, mode: 'square', width: 96, height: 96}, function (json) {
-
-				callback(json && json.code === 0 ? json.absHref : null);
-			});
-		},
-
-		requestThumbRational = function (type, href, callback) {
-
-			server.request({action: 'getThumbHref', type: type, href: href, mode: 'rational', width: 96 * 2, height: 96}, function (json) {
+			server.request({
+				action: 'getThumbHref',
+				type: type,
+				href: href,
+				mode: mode,
+				width: settings.size * ratio,
+				height: settings.size
+			}, function (json) {
 
 				callback(json && json.code === 0 ? json.absHref : null);
 			});
@@ -41,7 +41,7 @@ modulejs.define('ext/thumbnails', ['_', 'core/settings', 'core/event', 'core/ser
 				if (item.thumbSquare) {
 					item.$view.find('.icon.square img').addClass('thumb').attr('src', item.thumbSquare);
 				} else {
-					requestThumbSquare(type, item.absHref, function (src) {
+					requestThumb(type, item.absHref, 'square', 1, function (src) {
 
 						if (src && item.$view) {
 							item.thumbSquare = src;
@@ -52,7 +52,7 @@ modulejs.define('ext/thumbnails', ['_', 'core/settings', 'core/event', 'core/ser
 				if (item.thumbRational) {
 					item.$view.find('.icon.rational img').addClass('thumb').attr('src', item.thumbRational);
 				} else {
-					requestThumbRational(type, item.absHref, function (src) {
+					requestThumb(type, item.absHref, 'rational', 2, function (src) {
 
 						if (src && item.$view) {
 							item.thumbRational = src;
diff --git a/src/_h5ai/conf/options.json b/src/_h5ai/conf/options.json
index 9eb71d72..ba881e15 100644
--- a/src/_h5ai/conf/options.json
+++ b/src/_h5ai/conf/options.json
@@ -301,13 +301,15 @@ Options
 	- mov: array of types
 	- doc: array of types
 	- delay: delay in milliseconds after "dom-ready" before thumb-requesting starts
+	- size: number, size in pixel of the generated thumbnails
 	*/
 	"thumbnails": {
 		"enabled": true,
 		"img": ["bmp", "gif", "ico", "image", "jpg", "png"],
 		"mov": ["video"],
 		"doc": ["pdf", "ps"],
-		"delay": 1
+		"delay": 1,
+		"size": 96
 	},
 
 	/*

From 7b3daeb17ba1dac15f0a1f61c021857e9ce83653 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Tue, 27 Aug 2013 21:29:29 +0200
Subject: [PATCH 53/83] Updates thumbs.

---
 src/_h5ai/client/js/inc/ext/thumbnails.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/_h5ai/client/js/inc/ext/thumbnails.js b/src/_h5ai/client/js/inc/ext/thumbnails.js
index 22379989..d1a2f9ad 100644
--- a/src/_h5ai/client/js/inc/ext/thumbnails.js
+++ b/src/_h5ai/client/js/inc/ext/thumbnails.js
@@ -3,7 +3,7 @@ modulejs.define('ext/thumbnails', ['_', 'core/settings', 'core/event', 'core/ser
 
 	var settings = _.extend({
 			enabled: false,
-			img: ['bmp', 'gif', 'ico', 'image', 'jpg', 'png', 'tiff'],
+			img: ['bmp', 'gif', 'ico', 'image', 'jpg', 'png'],
 			mov: ['video'],
 			doc: ['pdf', 'ps'],
 			delay: 1000,

From 4d4e41a637e08f923bd5b1180e42e7c9f84281b7 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Tue, 27 Aug 2013 22:38:44 +0200
Subject: [PATCH 54/83] Refactors.

---
 src/_h5ai/client/js/inc/core/resource.js  |  6 +++---
 src/_h5ai/client/js/inc/ext/delete.js     |  2 +-
 src/_h5ai/client/js/inc/ext/thumbnails.js |  6 +++---
 src/_h5ai/client/js/inc/ext/tree.js       |  2 --
 src/_h5ai/client/js/inc/view/items.js     | 12 ++++--------
 5 files changed, 11 insertions(+), 17 deletions(-)

diff --git a/src/_h5ai/client/js/inc/core/resource.js b/src/_h5ai/client/js/inc/core/resource.js
index c448465a..152dc6de 100644
--- a/src/_h5ai/client/js/inc/core/resource.js
+++ b/src/_h5ai/client/js/inc/core/resource.js
@@ -1,12 +1,12 @@
 
 modulejs.define('core/resource', ['core/settings'], function (settings) {
 
-	var image = function (id, customExt) {
+	var image = function (id) {
 
-			return settings.h5aiAbsHref + 'client/images/' + id + (customExt ? '' : '.svg');
+			return settings.h5aiAbsHref + 'client/images/' + id + '.svg';
 		},
 
-		icon = function (id, big) {
+		icon = function (id) {
 
 			return settings.h5aiAbsHref + 'client/icons/96/' + id + '.png';
 		};
diff --git a/src/_h5ai/client/js/inc/ext/delete.js b/src/_h5ai/client/js/inc/ext/delete.js
index afacfa7b..5158e2ed 100644
--- a/src/_h5ai/client/js/inc/ext/delete.js
+++ b/src/_h5ai/client/js/inc/ext/delete.js
@@ -37,7 +37,7 @@ modulejs.define('ext/delete', ['_', '$', 'core/settings', 'core/event', 'core/re
 		requestDeletion = function (hrefsStr) {
 
 			$delete.addClass('current');
-			$img.attr('src', resource.image('loading.gif', true));
+			$img.attr('src', resource.image('loading'));
 			server.request({action: 'delete', hrefs: hrefsStr}, handleResponse);
 		},
 
diff --git a/src/_h5ai/client/js/inc/ext/thumbnails.js b/src/_h5ai/client/js/inc/ext/thumbnails.js
index d1a2f9ad..28d4d566 100644
--- a/src/_h5ai/client/js/inc/ext/thumbnails.js
+++ b/src/_h5ai/client/js/inc/ext/thumbnails.js
@@ -29,11 +29,11 @@ modulejs.define('ext/thumbnails', ['_', 'core/settings', 'core/event', 'core/ser
 
 			var type = null;
 
-			if (_.indexOf(settings.img, item.type) >= 0) {
+			if (_.contains(settings.img, item.type)) {
 				type = 'img';
-			} else if (_.indexOf(settings.mov, item.type) >= 0) {
+			} else if (_.contains(settings.mov, item.type)) {
 				type = 'mov';
-			} else if (_.indexOf(settings.doc, item.type) >= 0) {
+			} else if (_.contains(settings.doc, item.type)) {
 				type = 'doc';
 			}
 
diff --git a/src/_h5ai/client/js/inc/ext/tree.js b/src/_h5ai/client/js/inc/ext/tree.js
index e07645b3..5ab8c6bc 100644
--- a/src/_h5ai/client/js/inc/ext/tree.js
+++ b/src/_h5ai/client/js/inc/ext/tree.js
@@ -34,7 +34,6 @@ modulejs.define('ext/tree', ['_', '$', 'core/settings', 'core/resource', 'core/e
 				.data('status', item.status);
 
 			location.setLink($a, item);
-			// $img.attr('src', resource.icon(item.type));
 			$img.attr('src', resource.image('folder'));
 			$label.text(item.label);
 
@@ -95,7 +94,6 @@ modulejs.define('ext/tree', ['_', '$', 'core/settings', 'core/resource', 'core/e
 				// reflect folder status
 				if (_.isNumber(item.status)) {
 					if (item.status === 200) {
-						// $img.attr('src', resource.icon('folder-page'));
 						$img.attr('src', resource.image('folder-page'));
 					} else {
 						$html.addClass('error');
diff --git a/src/_h5ai/client/js/inc/view/items.js b/src/_h5ai/client/js/inc/view/items.js
index a5dd4430..80400724 100644
--- a/src/_h5ai/client/js/inc/view/items.js
+++ b/src/_h5ai/client/js/inc/view/items.js
@@ -39,8 +39,7 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
 
 			var $html = $(itemTemplate),
 				$a = $html.find('a'),
-				$imgSquare = $html.find('.icon.square img'),
-				$imgRational = $html.find('.icon.rational img'),
+				$iconImg = $html.find('.icon img'),
 				$label = $html.find('.label'),
 				$date = $html.find('.date'),
 				$size = $html.find('.size');
@@ -51,8 +50,7 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
 
 			location.setLink($a, item);
 
-			$imgSquare.attr('src', resource.icon(item.type)).attr('alt', item.type);
-			$imgRational.attr('src', resource.icon(item.type)).attr('alt', item.type);
+			$iconImg.attr('src', resource.icon(item.type)).attr('alt', item.type);
 			$label.text(item.label);
 			$date.data('time', item.time).text(format.formatDate(item.time));
 			$size.data('bytes', item.size).text(format.formatSize(item.size));
@@ -60,8 +58,7 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
 			if (item.isFolder() && _.isNumber(item.status)) {
 				if (item.status === 200) {
 					$html.addClass('page');
-					$imgSquare.attr('src', resource.icon('folder-page'));
-					$imgRational.attr('src', resource.icon('folder-page'));
+					$iconImg.attr('src', resource.icon('folder-page'));
 				} else {
 					$html.addClass('error');
 					$label.append($(hintTemplate).text(' ' + item.status + ' '));
@@ -69,8 +66,7 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
 			}
 
 			if (item.isCurrentParentFolder()) {
-				$imgSquare.attr('src', resource.icon('folder-parent'));
-				$imgRational.attr('src', resource.icon('folder-parent'));
+				$iconImg.attr('src', resource.icon('folder-parent'));
 				if (!settings.setParentFolderLabels) {
 					$label.addClass('l10n-parentDirectory');
 				}

From c2f5c46451545eafb6e58eae835e866a96bd340f Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Wed, 28 Aug 2013 00:36:05 +0200
Subject: [PATCH 55/83] Remove gif.

---
 src/_h5ai/client/images/loading.gif | Bin 847 -> 0 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 src/_h5ai/client/images/loading.gif

diff --git a/src/_h5ai/client/images/loading.gif b/src/_h5ai/client/images/loading.gif
deleted file mode 100644
index 1b3280ef98d672fb8c8e80e41dd92fe664d6e0e8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 847
zcmZ?wbhEHb6krfw_`<;O|NnnuW8<Gcf5ykh&zUpF+}u1cF!0{JdpmdTba8Q+IB{Z2
zOUuibFW0PDbMfNEoSdBU@^S`JfZ~5{Ki808XU70nBRvCVMxb8Be^Smxsfi`2DGKG8
zB^e5dS&0=n`H3ldnR#jX42nNlIJtnTbU?O%9Lc~MprFu~k~wdwfk=*`R!hRFwKGJH
zO_VZi_`r6vqanJN#fB-fHDIDZD`RKtqP{hnIt`vtKNhJZec0tOX@W(|3R5-NicZsP
z1sh?JPnEJq-}gIVvm`@7q09YJPllG%(FZG5IH<VR9yoCD+EFHso+%Bf86rYF2M;JX
z2y*!xX!wvE=-$lawB_lx0Mi)?HmgiSQv$bXzfjt@IDLx23bA#I7WO-43!GPWWZ<?5
zFgIYg;bdtr;EQCl(BkE6S60Mkc>>Uf%AY4_+!FE7;yMx_!l}EY-SE9}BbSx)X+!TV
z9xY7|**x@SsNCFG$-p77@8TKO8(G|Xjo~g1claV178!VOinZz(^f_JO>dO}JdiItl
z)ZVn5nWaW0n>R+2pQjtEr9qHjZBUrPWGHgfVMVjE9NQZ4W7*wJa~Kt!o+Q{aG;U|w
zH$mC8$)d_BFrp!OckZGxZXu<G3NH^WPH0SM;|+CNCRubxl5c6jYt7GT{~NGc1M(X%
z_EtFXxEcx^Iw_GGD{*|Mgh$VXwi_Dk0$nU7ObX96bR?F!DJFU_L<G;^Xv{TTvXwE(
z#bXN_!>XN$NjhA8stpCkV#!C8H>m&MeWS!~VrCworWK*zpwZK-g4NP^sHGl2k8vz>
zFkv{f>6oLE=R}STvlb?B*yXjddK##7Nc75in{VRv&|yE=saw*l)zs`NB_goou<pf#
q6&(o&n0^Wvc5+B;nC{Te=WL$Ap>N2N#u}s9-J_<+U=2#1U;qF@#0NM4


From aa725f11f80f6430fa3c40c7dff3761efa8e6dbf Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Wed, 28 Aug 2013 17:12:30 +0200
Subject: [PATCH 56/83] Adds variable icon sizes.

---
 src/_h5ai/client/css/inc/view-details.less |  58 ++++++
 src/_h5ai/client/css/inc/view-grid.less    |  61 ++++++-
 src/_h5ai/client/css/inc/view-icons.less   |  56 ++++++
 src/_h5ai/client/css/inc/view-list.less    |  67 -------
 src/_h5ai/client/css/inc/view.less         |  37 ----
 src/_h5ai/client/css/styles.less           |   1 -
 src/_h5ai/client/images/size.svg           | 194 +++++++++++++++++++++
 src/_h5ai/client/js/inc/view/viewmode.js   | 101 +++++++++--
 src/_h5ai/conf/options.json                |   7 +-
 9 files changed, 458 insertions(+), 124 deletions(-)
 delete mode 100644 src/_h5ai/client/css/inc/view-list.less
 create mode 100644 src/_h5ai/client/images/size.svg

diff --git a/src/_h5ai/client/css/inc/view-details.less b/src/_h5ai/client/css/inc/view-details.less
index ae81517b..2348cf3c 100644
--- a/src/_h5ai/client/css/inc/view-details.less
+++ b/src/_h5ai/client/css/inc/view-details.less
@@ -65,3 +65,61 @@
 		}
 	}
 }
+
+
+.view-details-sized(@size) {
+
+	li {
+
+		&.item {
+
+			a, a:active, a:visited {
+				height: @size + 6px;
+			}
+
+			.label, .date, .size {
+				padding: ((@size - 16px)/2) 8px;
+			}
+		}
+
+		.icon.square {
+			width: @size;
+
+			img {
+				width: @size;
+				height: @size;
+			}
+		}
+
+		.label {
+			margin: 0 230px 0 (@size + 16px);
+		}
+	}
+}
+
+
+#view.view-details {
+	&.size-16 {
+		.view-details-sized(16px)
+	}
+
+	&.size-24 {
+		.view-details-sized(24px)
+	}
+
+	&.size-32 {
+		.view-details-sized(32px)
+	}
+
+	&.size-48 {
+		.view-details-sized(48px)
+	}
+
+	&.size-64 {
+		.view-details-sized(64px)
+	}
+
+	&.size-96 {
+		.view-details-sized(96px)
+	}
+}
diff --git a/src/_h5ai/client/css/inc/view-grid.less b/src/_h5ai/client/css/inc/view-grid.less
index 1dca6349..225edad0 100644
--- a/src/_h5ai/client/css/inc/view-grid.less
+++ b/src/_h5ai/client/css/inc/view-grid.less
@@ -9,7 +9,7 @@
 			a, a:active, a:visited {
 				float: left;
 				margin: 2px;
-				width: 218px;
+				width: @small-icon-size + 186px;
 				height: @small-icon-size + 6px;
 				border: 1px solid rgba(0,0,0,0);
 
@@ -50,3 +50,62 @@
 		}
 	}
 }
+
+
+.view-grid-sized(@size) {
+
+	li {
+
+		&.item {
+
+			a, a:active, a:visited {
+				width: @size + 186px;
+				height: @size + 6px;
+			}
+
+			.label, .date, .size {
+				padding: ((@size - 16px)/2) 8px;
+			}
+		}
+
+		.icon.square {
+			width: @size;
+
+			img {
+				width: @size;
+				height: @size;
+			}
+		}
+
+		.label {
+			margin: 0 0 0 (@size + 8px);
+		}
+	}
+}
+
+
+#view.view-grid {
+	&.size-16 {
+		.view-grid-sized(16px)
+	}
+
+	&.size-24 {
+		.view-grid-sized(24px)
+	}
+
+	&.size-32 {
+		.view-grid-sized(32px)
+	}
+
+	&.size-48 {
+		.view-grid-sized(48px)
+	}
+
+	&.size-64 {
+		.view-grid-sized(64px)
+	}
+
+	&.size-96 {
+		.view-grid-sized(96px)
+	}
+}
diff --git a/src/_h5ai/client/css/inc/view-icons.less b/src/_h5ai/client/css/inc/view-icons.less
index 14148613..a5f48cea 100644
--- a/src/_h5ai/client/css/inc/view-icons.less
+++ b/src/_h5ai/client/css/inc/view-icons.less
@@ -25,6 +25,11 @@
 			display: block;
 			height: @big-icon-size;
 			margin-bottom: 6px;
+
+			img {
+				max-width: @big-icon-size * 2;
+				max-height: @big-icon-size;
+			}
 		}
 
 		.label {
@@ -44,3 +49,54 @@
 		height: 120px;
 	}
 }
+
+
+.view-icons-sized(@size) {
+
+	li {
+
+		&.item {
+
+			a, a:active, a:visited {
+				width: @size * 2;
+				height: @size + 72px;
+			}
+		}
+
+		.icon.rational {
+			height: @size;
+
+			img {
+				max-width: @size * 2;
+				max-height: @size;
+			}
+		}
+	}
+}
+
+
+#view.view-icons {
+	&.size-16 {
+		.view-icons-sized(16px)
+	}
+
+	&.size-24 {
+		.view-icons-sized(24px)
+	}
+
+	&.size-32 {
+		.view-icons-sized(32px)
+	}
+
+	&.size-48 {
+		.view-icons-sized(48px)
+	}
+
+	&.size-64 {
+		.view-icons-sized(64px)
+	}
+
+	&.size-96 {
+		.view-icons-sized(96px)
+	}
+}
diff --git a/src/_h5ai/client/css/inc/view-list.less b/src/_h5ai/client/css/inc/view-list.less
deleted file mode 100644
index 4c2cd539..00000000
--- a/src/_h5ai/client/css/inc/view-list.less
+++ /dev/null
@@ -1,67 +0,0 @@
-
-#view.view-list {
-
-	li {
-
-		&.header {
-			display: list-item;
-		}
-
-		&.item {
-
-			a, a:active, a:visited {
-				border-top: 1px solid @item-border-col-sep;
-				border-bottom: 1px solid @item-border-col-sep;
-				height: @big-icon-size + 6px;
-
-				&:hover, &.hover {
-					border-color: @item-border-col-hover;
-				}
-			}
-
-			// needs to be here, to not conflict with header fields
-			.icon {
-				padding: 8px;
-			}
-			.label, .date, .size {
-				padding: ((@big-icon-size - 16px)/2) 8px;
-			}
-		}
-
-		&.item + .item {
-
-			a, a:active, a:visited {
-				border-top: none;
-			}
-		}
-
-		.icon.square {
-			display: inline-block;
-			position: absolute;
-			left: 0;
-			top: -5px;
-			width: @big-icon-size;
-
-			img {
-				width: @big-icon-size;
-				height: @big-icon-size;
-			}
-		}
-
-		.label {
-			margin: 0 230px 0 (@big-icon-size + 16px);
-		}
-
-		.date {
-			position: absolute;
-			right: 100px;
-			top: 0;
-		}
-
-		.size {
-			position: absolute;
-			right: 0;
-			top: 0;
-		}
-	}
-}
diff --git a/src/_h5ai/client/css/inc/view.less b/src/_h5ai/client/css/inc/view.less
index 44ee1f15..c26bd130 100644
--- a/src/_h5ai/client/css/inc/view.less
+++ b/src/_h5ai/client/css/inc/view.less
@@ -56,13 +56,8 @@
 @item-background-col-sel: rgba(0,0,0,0.02);
 @item-border-col-sel: @col-border-strong;
 
-// @small-icon-size: 16px;
 @small-icon-size: 32px;
 @big-icon-size: 48px;
-// @big-icon-size: 56px;
-// @big-icon-size: 64px;
-// @big-icon-size: 80px;
-// @big-icon-size: 96px;
 
 
 #view {
@@ -178,38 +173,6 @@
 					box-shadow: 0 0 0 1px #ddd;
 				}
 			}
-
-			&.small {
-
-				img {
-					max-width: @small-icon-size * 2;
-					max-height: @small-icon-size;
-				}
-			}
-
-			&.big {
-
-				img {
-					max-width: @big-icon-size * 2;
-					max-height: @big-icon-size;
-				}
-			}
-
-			&.square {
-
-				img {
-					max-width: @big-icon-size;
-					max-height: @big-icon-size;
-				}
-			}
-
-			&.rational {
-
-				img {
-					max-width: @big-icon-size * 2;
-					max-height: @big-icon-size;
-				}
-			}
 		}
 
 		.label {
diff --git a/src/_h5ai/client/css/styles.less b/src/_h5ai/client/css/styles.less
index 057d3dc3..b2fba482 100644
--- a/src/_h5ai/client/css/styles.less
+++ b/src/_h5ai/client/css/styles.less
@@ -20,7 +20,6 @@
 @import "inc/view";
 @import "inc/view-details";
 @import "inc/view-icons";
-@import "inc/view-list";
 @import "inc/view-grid";
 // @import "inc/context-menu";
 @import "inc/dropbox";
diff --git a/src/_h5ai/client/images/size.svg b/src/_h5ai/client/images/size.svg
new file mode 100644
index 00000000..4d2b849b
--- /dev/null
+++ b/src/_h5ai/client/images/size.svg
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   sodipodi:docname="size.svg"
+   height="16"
+   id="svg7384"
+   inkscape:version="0.48.4 r9939"
+   version="1.1"
+   width="16">
+  <metadata
+     id="metadata90">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>Gnome Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:bbox-nodes="true"
+     inkscape:bbox-paths="true"
+     bordercolor="#666666"
+     borderopacity="1"
+     inkscape:current-layer="layer12"
+     inkscape:cx="0.26014369"
+     inkscape:cy="4.4087936"
+     gridtolerance="10"
+     inkscape:guide-bbox="true"
+     guidetolerance="10"
+     id="namedview88"
+     inkscape:object-nodes="false"
+     inkscape:object-paths="false"
+     objecttolerance="10"
+     pagecolor="#3a3b39"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     showborder="true"
+     showgrid="false"
+     showguides="true"
+     inkscape:snap-bbox="true"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-global="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-nodes="false"
+     inkscape:snap-others="false"
+     inkscape:snap-to-guides="true"
+     inkscape:window-height="1056"
+     inkscape:window-maximized="1"
+     inkscape:window-width="1871"
+     inkscape:window-x="49"
+     inkscape:window-y="24"
+     inkscape:zoom="22.627417"
+     borderlayer="true">
+    <inkscape:grid
+       empspacing="2"
+       enabled="true"
+       id="grid4866"
+       originx="200px"
+       originy="550px"
+       snapvisiblegridlinesonly="true"
+       spacingx="1px"
+       spacingy="1px"
+       type="xygrid"
+       visible="true" />
+  </sodipodi:namedview>
+  <title
+     id="title9167">Gnome Symbolic Icon Theme</title>
+  <defs
+     id="defs7386" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer9"
+     inkscape:label="status"
+     style="display:inline"
+     transform="translate(-41.0002,-767)" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer10"
+     inkscape:label="devices"
+     transform="translate(-41.0002,-767)" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer11"
+     inkscape:label="apps"
+     transform="translate(-41.0002,-767)" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer13"
+     inkscape:label="places"
+     transform="translate(-41.0002,-767)" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer14"
+     inkscape:label="mimetypes"
+     transform="translate(-41.0002,-767)" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer15"
+     inkscape:label="emblems"
+     style="display:inline"
+     transform="translate(-41.0002,-767)" />
+  <g
+     inkscape:groupmode="layer"
+     id="g71291"
+     inkscape:label="emotes"
+     style="display:inline"
+     transform="translate(-41.0002,-767)" />
+  <g
+     inkscape:groupmode="layer"
+     id="g4953"
+     inkscape:label="categories"
+     style="display:inline"
+     transform="translate(-41.0002,-767)" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer12"
+     inkscape:label="actions"
+     style="display:inline"
+     transform="translate(-41.0002,-767)">
+    <path
+       inkscape:connector-curvature="0"
+       d="M 42.78125,776 A 1.0001,1.0001 0 0 0 42,777 l 0,4 a 1.0001,1.0001 0 0 0 1,1 l 4,0 a 1.0001,1.0001 0 1 0 0,-2 l -3,0 0,-3 a 1.0001,1.0001 0 0 0 -1.21875,-1 z"
+       id="path12113"
+       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#555555;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Sans;-inkscape-font-specification:Sans" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 47.375,775.5 a 1.0001,1.0001 0 0 0 -0.59375,0.28125 l -4.5,4.5 a 1.016466,1.016466 0 1 0 1.4375,1.4375 l 4.5,-4.5 A 1.0001,1.0001 0 0 0 47.375,775.5 z"
+       id="path12147"
+       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#555555;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Sans;-inkscape-font-specification:Sans" />
+    <rect
+       height="1"
+       id="rect12919"
+       style="color:#000000;fill:#555555;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
+       width="1"
+       x="42.000198"
+       y="781" />
+    <path
+       inkscape:connector-curvature="0"
+       d="M 50.90625,768 A 1.001098,1.001098 0 1 0 51,770 l 3,0 0,3 a 1.0001,1.0001 0 1 0 2,0 l 0,-4 a 1.0001,1.0001 0 0 0 -1,-1 l -4,0 a 1.0001,1.0001 0 0 0 -0.09375,0 z"
+       id="path12111"
+       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#555555;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Sans;-inkscape-font-specification:Sans" />
+    <rect
+       height="1"
+       id="rect12923"
+       style="color:#000000;fill:#555555;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
+       width="1"
+       x="55.000198"
+       y="768" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 54.78125,768 a 1.0001,1.0001 0 0 0 -0.5,0.28125 l -4.5,4.46875 a 1.016466,1.016466 0 1 0 1.4375,1.4375 l 4.5,-4.46875 A 1.0001,1.0001 0 0 0 54.78125,768 z"
+       id="path12925"
+       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#555555;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Sans;-inkscape-font-specification:Sans" />
+    <rect
+       height="1"
+       id="rect4479-2"
+       style="color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       width="1"
+       x="42.000198"
+       y="776" />
+    <rect
+       height="1"
+       id="rect4479-2-9"
+       style="color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       width="1"
+       x="47.000198"
+       y="781" />
+    <rect
+       height="1"
+       id="rect4479-2-9-9-0-8"
+       style="color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       width="1"
+       x="55.000198"
+       y="773" />
+    <rect
+       height="1"
+       id="rect4479-2-9-9-0-8-1"
+       style="color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       width="1"
+       x="50.000198"
+       y="768" />
+  </g>
+</svg>
diff --git a/src/_h5ai/client/js/inc/view/viewmode.js b/src/_h5ai/client/js/inc/view/viewmode.js
index 045f8bf9..35048745 100644
--- a/src/_h5ai/client/js/inc/view/viewmode.js
+++ b/src/_h5ai/client/js/inc/view/viewmode.js
@@ -1,10 +1,12 @@
 
 modulejs.define('view/viewmode', ['_', '$', 'core/settings', 'core/resource', 'core/store', 'core/event'], function (_, $, allsettings, resource, store, event) {
 
-	var modes = ['details', 'list', 'grid', 'icons'],
+	var modes = ['details', 'grid', 'icons'],
+		sizes = [16, 24, 32, 48, 64, 96],
 
 		settings = _.extend({}, {
-			modes: modes
+			modes: modes,
+			sizes: sizes
 		}, allsettings.view),
 
 		storekey = 'viewmode',
@@ -16,6 +18,32 @@ modulejs.define('view/viewmode', ['_', '$', 'core/settings', 'core/resource', 'c
 						'</a>' +
 					'</li>',
 
+		sizeTemplate = '<li id="view-[SIZE]" class="view">' +
+							'<a href="#">' +
+								'<img src="' + resource.image('size') + '" alt="size"/>' +
+								'<span>[SIZE]</span>' +
+							'</a>' +
+						'</li>',
+
+		// sizeSelectorTemplate = '<li id="sizeSelector" class="view">' +
+		// 							'<span class="element">' +
+		// 								'<img src="' + resource.image('size') + '" alt="size"/>' +
+		// 								'<span class="size-current">small</span>' +
+		// 							'</span>' +
+		// 							'<span class="sizeOptions hidden"><ul/></span>' +
+		// 						'</li>',
+		// sizeOptionTemplate = '<li class="sizeOption"/>',
+
+		// viewSelectorTemplate = '<li id="viewSelector" class="view">' +
+		// 							'<span class="element">' +
+		// 								'<img src="' + resource.image('view-details') + '" alt="view-details"/>' +
+		// 								'<span class="view-current">details</span>' +
+		// 							'</span>' +
+		// 							'<span class="viewOptions hidden"><ul/></span>' +
+		// 						'</li>',
+		// viewOptionTemplate = '<li class="viewOption"/>',
+
+
 		adjustSpacing = function () {
 
 			var contentWidth = $('#content').width(),
@@ -25,20 +53,40 @@ modulejs.define('view/viewmode', ['_', '$', 'core/settings', 'core/resource', 'c
 			$view.width(Math.floor(contentWidth / itemWidth) * itemWidth);
 		},
 
-		update = function (viewmode) {
+		updateMode = function (mode) {
 
 			var $view = $('#view');
 
-			viewmode = _.indexOf(settings.modes, viewmode) >= 0 ? viewmode : settings.modes[0];
-			store.put(storekey, viewmode);
+			mode = _.contains(settings.modes, mode) ? mode : settings.modes[0];
+			store.put(storekey, mode);
 
-			_.each(modes, function (mode) {
-				if (mode === viewmode) {
-					$('#view-' + mode).addClass('current');
-					$view.addClass('view-' + mode).show();
+			_.each(modes, function (m) {
+				if (m === mode) {
+					$('#view-' + m).addClass('current');
+					$view.addClass('view-' + m).show();
 				} else {
-					$('#view-' + mode).removeClass('current');
-					$view.removeClass('view-' + mode);
+					$('#view-' + m).removeClass('current');
+					$view.removeClass('view-' + m);
+				}
+			});
+
+			adjustSpacing();
+		},
+
+		updateSize = function (size) {
+
+			var $view = $('#view');
+
+			size = _.contains(settings.sizes, size) ? size : settings.sizes[0];
+			// store.put(storekey, viewmode);
+
+			_.each(sizes, function (s) {
+				if (s === size) {
+					$('#view-' + s).addClass('current');
+					$view.addClass('size-' + s).show();
+				} else {
+					$('#view-' + s).removeClass('current');
+					$view.removeClass('size-' + s);
 				}
 			});
 
@@ -51,20 +99,41 @@ modulejs.define('view/viewmode', ['_', '$', 'core/settings', 'core/resource', 'c
 
 			settings.modes = _.intersection(settings.modes, modes);
 
-			if (settings.modes.length > 1) {
-				_.each(modes.reverse(), function (mode) {
-					if (_.indexOf(settings.modes, mode) >= 0) {
+			if (settings.modes.length) {
+				_.each(modes.slice(0).reverse(), function (mode) {
+					if (_.contains(settings.modes, mode)) {
 						$(template.replace(/\[MODE\]/g, mode))
 							.appendTo($navbar)
 							.on('click', 'a', function (event) {
-								update(mode);
+								updateMode(mode);
 								event.preventDefault();
 							});
 					}
 				});
 			}
 
-			update(store.get(storekey));
+
+			if (settings.sizes.length) {
+				_.each(sizes.slice(0).reverse(), function (size) {
+					if (_.contains(settings.sizes, size)) {
+						$(sizeTemplate.replace(/\[SIZE\]/g, size))
+							.appendTo($navbar)
+							.on('click', 'a', function (event) {
+								updateSize(size);
+								event.preventDefault();
+							});
+					}
+				});
+			}
+
+			// $(sizeSelectorTemplate)
+			// 	.appendTo($navbar);
+
+			// $(viewSelectorTemplate)
+			// 	.appendTo($navbar);
+
+			updateMode(store.get(storekey));
+			updateSize(sizes[0]);
 
 			event.sub('location.changed', adjustSpacing);
 			$(window).on('resize', adjustSpacing);
diff --git a/src/_h5ai/conf/options.json b/src/_h5ai/conf/options.json
index ba881e15..e91dbd30 100644
--- a/src/_h5ai/conf/options.json
+++ b/src/_h5ai/conf/options.json
@@ -23,11 +23,13 @@ Options
 	/*
 	General view options.
 
-	- modes: array of "details", "icons", "grid" and/or "list"
+	- modes: array of "details", "grid" and/or "icons"
 		the first value indicates the default view mode. If only one value
 		is given the view mode is fixed and the selector buttons are hidden.
 		The user selected view mode is also stored local in modern browsers
 		so that it will be persistent.
+	- sizes: array of numbers
+		the numbers seen below are the only accepted values, you may only remove some
 	- setParentFolderLabels: set parent folder labels to real folder names
 	- hideParentFolderLinks: hide parent folder links
 	- binaryPrefix: set to true uses 1024B=1KiB when formatting file sizes (see http://en.wikipedia.org/wiki/Binary_prefix)
@@ -37,7 +39,8 @@ Options
 	- extInNewWindow: open non-h5ai links in new window/tab
 	*/
 	"view": {
-		"modes": ["details", "icons", "grid", "list"],
+		"modes": ["details", "grid", "icons"],
+		"sizes": [16, 24, 32, 48, 64, 96],
 		"setParentFolderLabels": true,
 		"hideParentFolderLinks": false,
 		"binaryPrefix": false,

From 24b4f4ce8a2a6a3254764021432fd7362cd1e24c Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Wed, 28 Aug 2013 23:56:09 +0200
Subject: [PATCH 57/83] Cleans and refactors.

---
 src/_h5ai/client/js/inc/ext/l10n.js      |  2 +-
 src/_h5ai/client/js/inc/ext/preview.js   |  2 +-
 src/_h5ai/client/js/inc/ext/sort.js      |  2 +-
 src/_h5ai/client/js/inc/view/viewmode.js | 57 +++++-------------------
 src/_h5ai/conf/options.json              | 11 +++--
 5 files changed, 22 insertions(+), 52 deletions(-)

diff --git a/src/_h5ai/client/js/inc/ext/l10n.js b/src/_h5ai/client/js/inc/ext/l10n.js
index c2abc220..dd9bb961 100644
--- a/src/_h5ai/client/js/inc/ext/l10n.js
+++ b/src/_h5ai/client/js/inc/ext/l10n.js
@@ -34,7 +34,7 @@ modulejs.define('ext/l10n', ['_', '$', 'core/settings', 'core/langs', 'core/form
 					'</span>',
 		langOptionTemplate = '<li class="langOption"/>',
 
-		storekey = 'l10n.lang',
+		storekey = 'ext/l10n',
 
 		loaded = {
 			en: _.extend({}, defaultTranslations)
diff --git a/src/_h5ai/client/js/inc/ext/preview.js b/src/_h5ai/client/js/inc/ext/preview.js
index 6e7d0624..6a1feab5 100644
--- a/src/_h5ai/client/js/inc/ext/preview.js
+++ b/src/_h5ai/client/js/inc/ext/preview.js
@@ -23,7 +23,7 @@ modulejs.define('ext/preview', ['_', '$', 'core/settings', 'core/resource', 'cor
 						'</div>' +
 					'</div>',
 
-		storekey = 'preview.isFullscreen',
+		storekey = 'ext/preview',
 
 		currentEntries = [],
 		currentIdx = 0,
diff --git a/src/_h5ai/client/js/inc/ext/sort.js b/src/_h5ai/client/js/inc/ext/sort.js
index 32443c68..862d8086 100644
--- a/src/_h5ai/client/js/inc/ext/sort.js
+++ b/src/_h5ai/client/js/inc/ext/sort.js
@@ -9,7 +9,7 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 			natural: false
 		}, allsettings.sort),
 
-		storekey = 'sort.order',
+		storekey = 'ext/sort',
 		template = '<img src="' + resource.image('ascending') + '" class="sort ascending" alt="ascending" />' +
 					'<img src="' + resource.image('descending') + '" class="sort descending" alt="descending" />',
 
diff --git a/src/_h5ai/client/js/inc/view/viewmode.js b/src/_h5ai/client/js/inc/view/viewmode.js
index 35048745..e0714c17 100644
--- a/src/_h5ai/client/js/inc/view/viewmode.js
+++ b/src/_h5ai/client/js/inc/view/viewmode.js
@@ -25,25 +25,6 @@ modulejs.define('view/viewmode', ['_', '$', 'core/settings', 'core/resource', 'c
 							'</a>' +
 						'</li>',
 
-		// sizeSelectorTemplate = '<li id="sizeSelector" class="view">' +
-		// 							'<span class="element">' +
-		// 								'<img src="' + resource.image('size') + '" alt="size"/>' +
-		// 								'<span class="size-current">small</span>' +
-		// 							'</span>' +
-		// 							'<span class="sizeOptions hidden"><ul/></span>' +
-		// 						'</li>',
-		// sizeOptionTemplate = '<li class="sizeOption"/>',
-
-		// viewSelectorTemplate = '<li id="viewSelector" class="view">' +
-		// 							'<span class="element">' +
-		// 								'<img src="' + resource.image('view-details') + '" alt="view-details"/>' +
-		// 								'<span class="view-current">details</span>' +
-		// 							'</span>' +
-		// 							'<span class="viewOptions hidden"><ul/></span>' +
-		// 						'</li>',
-		// viewOptionTemplate = '<li class="viewOption"/>',
-
-
 		adjustSpacing = function () {
 
 			var contentWidth = $('#content').width(),
@@ -53,12 +34,16 @@ modulejs.define('view/viewmode', ['_', '$', 'core/settings', 'core/resource', 'c
 			$view.width(Math.floor(contentWidth / itemWidth) * itemWidth);
 		},
 
-		updateMode = function (mode) {
+		update = function (mode, size) {
 
-			var $view = $('#view');
+			var $view = $('#view'),
+				stored = store.get(storekey);
 
+			mode = mode || stored && stored.mode;
+			size = size || stored && stored.size;
 			mode = _.contains(settings.modes, mode) ? mode : settings.modes[0];
-			store.put(storekey, mode);
+			size = _.contains(settings.sizes, size) ? size : settings.sizes[0];
+			store.put(storekey, {mode: mode, size: size});
 
 			_.each(modes, function (m) {
 				if (m === mode) {
@@ -70,16 +55,6 @@ modulejs.define('view/viewmode', ['_', '$', 'core/settings', 'core/resource', 'c
 				}
 			});
 
-			adjustSpacing();
-		},
-
-		updateSize = function (size) {
-
-			var $view = $('#view');
-
-			size = _.contains(settings.sizes, size) ? size : settings.sizes[0];
-			// store.put(storekey, viewmode);
-
 			_.each(sizes, function (s) {
 				if (s === size) {
 					$('#view-' + s).addClass('current');
@@ -99,41 +74,33 @@ modulejs.define('view/viewmode', ['_', '$', 'core/settings', 'core/resource', 'c
 
 			settings.modes = _.intersection(settings.modes, modes);
 
-			if (settings.modes.length) {
+			if (settings.modes.length > 1) {
 				_.each(modes.slice(0).reverse(), function (mode) {
 					if (_.contains(settings.modes, mode)) {
 						$(template.replace(/\[MODE\]/g, mode))
 							.appendTo($navbar)
 							.on('click', 'a', function (event) {
-								updateMode(mode);
+								update(mode);
 								event.preventDefault();
 							});
 					}
 				});
 			}
 
-
-			if (settings.sizes.length) {
+			if (settings.sizes.length > 1) {
 				_.each(sizes.slice(0).reverse(), function (size) {
 					if (_.contains(settings.sizes, size)) {
 						$(sizeTemplate.replace(/\[SIZE\]/g, size))
 							.appendTo($navbar)
 							.on('click', 'a', function (event) {
-								updateSize(size);
+								update(null, size);
 								event.preventDefault();
 							});
 					}
 				});
 			}
 
-			// $(sizeSelectorTemplate)
-			// 	.appendTo($navbar);
-
-			// $(viewSelectorTemplate)
-			// 	.appendTo($navbar);
-
-			updateMode(store.get(storekey));
-			updateSize(sizes[0]);
+			update();
 
 			event.sub('location.changed', adjustSpacing);
 			$(window).on('resize', adjustSpacing);
diff --git a/src/_h5ai/conf/options.json b/src/_h5ai/conf/options.json
index e91dbd30..3f43a398 100644
--- a/src/_h5ai/conf/options.json
+++ b/src/_h5ai/conf/options.json
@@ -23,13 +23,16 @@ Options
 	/*
 	General view options.
 
-	- modes: array of "details", "grid" and/or "icons"
+	- modes: array, subset of ["details", "grid", "icons"]
+		the first value indicates the default view mode. If only one value
+		is given the view mode is fixed and the selector buttons are hidden.
+		The user selected view mode is also stored local in modern browsers
+		so that it will be persistent.
+	- sizes: array, subset of [16, 24, 32, 48, 64, 96]
 		the first value indicates the default view mode. If only one value
 		is given the view mode is fixed and the selector buttons are hidden.
 		The user selected view mode is also stored local in modern browsers
 		so that it will be persistent.
-	- sizes: array of numbers
-		the numbers seen below are the only accepted values, you may only remove some
 	- setParentFolderLabels: set parent folder labels to real folder names
 	- hideParentFolderLinks: hide parent folder links
 	- binaryPrefix: set to true uses 1024B=1KiB when formatting file sizes (see http://en.wikipedia.org/wiki/Binary_prefix)
@@ -40,7 +43,7 @@ Options
 	*/
 	"view": {
 		"modes": ["details", "grid", "icons"],
-		"sizes": [16, 24, 32, 48, 64, 96],
+		"sizes": [48, 24, 96],
 		"setParentFolderLabels": true,
 		"hideParentFolderLinks": false,
 		"binaryPrefix": false,

From e3d19a9175aa204b3091647dc4229d4971b1bd62 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Thu, 29 Aug 2013 03:15:31 +0200
Subject: [PATCH 58/83] Updates.

---
 src/_h5ai/client/css/inc/view-details.less | 12 ++++++------
 src/_h5ai/client/css/inc/view-grid.less    | 14 +++++++-------
 src/_h5ai/client/css/inc/view-icons.less   | 11 ++++++-----
 src/_h5ai/client/css/inc/view.less         |  3 +--
 src/_h5ai/client/images/view-list.svg      | 11 -----------
 src/_h5ai/client/js/inc/view/spacing.js    |  4 ++--
 6 files changed, 22 insertions(+), 33 deletions(-)
 delete mode 100644 src/_h5ai/client/images/view-list.svg

diff --git a/src/_h5ai/client/css/inc/view-details.less b/src/_h5ai/client/css/inc/view-details.less
index 2348cf3c..97dbe45c 100644
--- a/src/_h5ai/client/css/inc/view-details.less
+++ b/src/_h5ai/client/css/inc/view-details.less
@@ -12,7 +12,7 @@
 			a, a:active, a:visited {
 				border-top: 1px solid @item-border-col-sep;
 				border-bottom: 1px solid @item-border-col-sep;
-				height: @small-icon-size + 6px;
+				height: @icon-size + 6px;
 
 				&:hover, &.hover {
 					border-color: @item-border-col-hover;
@@ -24,7 +24,7 @@
 				padding: 8px;
 			}
 			.label, .date, .size {
-				padding: ((@small-icon-size - 16px)/2) 8px;
+				padding: ((@icon-size - 16px)/2) 8px;
 			}
 		}
 
@@ -40,16 +40,16 @@
 			position: absolute;
 			left: 0;
 			top: -5px;
-			width: @small-icon-size;
+			width: @icon-size;
 
 			img {
-				width: @small-icon-size;
-				height: @small-icon-size;
+				width: @icon-size;
+				height: @icon-size;
 			}
 		}
 
 		.label {
-			margin: 0 230px 0 (@small-icon-size + 16px);
+			margin: 0 230px 0 (@icon-size + 16px);
 		}
 
 		.date {
diff --git a/src/_h5ai/client/css/inc/view-grid.less b/src/_h5ai/client/css/inc/view-grid.less
index 225edad0..4a67e115 100644
--- a/src/_h5ai/client/css/inc/view-grid.less
+++ b/src/_h5ai/client/css/inc/view-grid.less
@@ -9,8 +9,8 @@
 			a, a:active, a:visited {
 				float: left;
 				margin: 2px;
-				width: @small-icon-size + 186px;
-				height: @small-icon-size + 6px;
+				width: @icon-size + 186px;
+				height: @icon-size + 6px;
 				border: 1px solid rgba(0,0,0,0);
 
 				&:hover, &.hover {
@@ -23,7 +23,7 @@
 				padding: 8px;
 			}
 			.label, .date, .size {
-				padding: ((@small-icon-size - 16px)/2) 8px;
+				padding: ((@icon-size - 16px)/2) 8px;
 			}
 		}
 
@@ -32,17 +32,17 @@
 			position: absolute;
 			left: 0;
 			top: -2px;
-			width: @small-icon-size;
+			width: @icon-size;
 
 			img {
-				width: @small-icon-size;
-				height: @small-icon-size;
+				width: @icon-size;
+				height: @icon-size;
 			}
 		}
 
 		.label {
 			display: block;
-			margin: 0 0 0 (@small-icon-size + 8px);
+			margin: 0 0 0 (@icon-size + 8px);
 		}
 
 		.date, .size {
diff --git a/src/_h5ai/client/css/inc/view-icons.less b/src/_h5ai/client/css/inc/view-icons.less
index a5f48cea..44b104dd 100644
--- a/src/_h5ai/client/css/inc/view-icons.less
+++ b/src/_h5ai/client/css/inc/view-icons.less
@@ -11,8 +11,9 @@
 				float: left;
 				margin: 8px;
 				padding: 8px;
-				width: @big-icon-size * 2;
-				height: @big-icon-size + 72px;
+				min-width: 96px;
+				width: @icon-size * 2;
+				height: @icon-size + 72px;
 				border: 1px solid rgba(0,0,0,0);
 
 				&:hover, &.hover {
@@ -23,12 +24,12 @@
 
 		.icon.rational {
 			display: block;
-			height: @big-icon-size;
+			height: @icon-size;
 			margin-bottom: 6px;
 
 			img {
-				max-width: @big-icon-size * 2;
-				max-height: @big-icon-size;
+				max-width: @icon-size * 2;
+				max-height: @icon-size;
 			}
 		}
 
diff --git a/src/_h5ai/client/css/inc/view.less b/src/_h5ai/client/css/inc/view.less
index c26bd130..ee71d8ea 100644
--- a/src/_h5ai/client/css/inc/view.less
+++ b/src/_h5ai/client/css/inc/view.less
@@ -56,8 +56,7 @@
 @item-background-col-sel: rgba(0,0,0,0.02);
 @item-border-col-sel: @col-border-strong;
 
-@small-icon-size: 32px;
-@big-icon-size: 48px;
+@icon-size: 48px;
 
 
 #view {
diff --git a/src/_h5ai/client/images/view-list.svg b/src/_h5ai/client/images/view-list.svg
deleted file mode 100644
index 4079bd01..00000000
--- a/src/_h5ai/client/images/view-list.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-
-<svg
-	xmlns="http://www.w3.org/2000/svg"
-	version="1.1"
-	width="16"
-	height="16"
->
-	<rect x="3" y="4" width="10" height="3" style="fill:#555555" />
-	<rect x="3" y="10" width="10" height="3" style="fill:#555555" />
-</svg>
diff --git a/src/_h5ai/client/js/inc/view/spacing.js b/src/_h5ai/client/js/inc/view/spacing.js
index 98fd353f..805752ce 100644
--- a/src/_h5ai/client/js/inc/view/spacing.js
+++ b/src/_h5ai/client/js/inc/view/spacing.js
@@ -4,9 +4,9 @@ modulejs.define('view/spacing', ['_', '$', 'core/settings', 'core/event'], funct
 	var settings = _.extend({
 			maxWidth: 960,
 			top: 50,
-			right: "auto",
+			right: 'auto',
 			bottom: 50,
-			left: "auto"
+			left: 'auto'
 		}, allsettings.spacing),
 
 		adjustSpacing = function () {

From aeab3670d03f9c3971277a8973bdac8fcc7efc8f Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Thu, 29 Aug 2013 10:53:34 +0200
Subject: [PATCH 59/83] Updates fallback.

---
 src/_h5ai/client/css/inc/fallback.less | 9 +++------
 src/_h5ai/server/php/inc/App.php       | 4 ++--
 2 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/src/_h5ai/client/css/inc/fallback.less b/src/_h5ai/client/css/inc/fallback.less
index 9c0c50e0..f73ef3eb 100644
--- a/src/_h5ai/client/css/inc/fallback.less
+++ b/src/_h5ai/client/css/inc/fallback.less
@@ -54,14 +54,11 @@
 			}
 		}
 		td:nth-child(1), th:nth-child(1) {
-			text-align: center;
-			width: 16px;
-			color: #ccc;
-			font-size: 0.9em;
+			width: 24px;
 
 			img {
-				width: 16px;
-				height: 16px;
+				width: 24px;
+				height: 24px;
 			}
 		}
 		td:nth-child(2), th:nth-child(2) {
diff --git a/src/_h5ai/server/php/inc/App.php b/src/_h5ai/server/php/inc/App.php
index a7c8e2aa..c353f3c9 100644
--- a/src/_h5ai/server/php/inc/App.php
+++ b/src/_h5ai/server/php/inc/App.php
@@ -209,13 +209,13 @@ class App {
 		$html = "<table>";
 		$html .= "<tr><th></th><th><span>Name</span></th><th><span>Last modified</span></th><th><span>Size</span></th></tr>";
 		if ($folder->get_parent($cache)) {
-			$html .= "<tr><td><img src=\"" . $this->app_abs_href . "client/icons/16x16/folder-parent.png\" alt=\"folder-parent\"/></td><td><a href=\"..\">Parent Directory</a></td><td></td><td></td></tr>";
+			$html .= "<tr><td><img src=\"" . $this->app_abs_href . "client/icons/96/folder-parent.png\" alt=\"folder-parent\"/></td><td><a href=\"..\">Parent Directory</a></td><td></td><td></td></tr>";
 		}
 		foreach ($items as $item) {
 			$type = $item->is_folder ? "folder" : "default";
 
 			$html .= "<tr>";
-			$html .= "<td><img src=\"" . $this->app_abs_href . "client/icons/16x16/" . $type . ".png\" alt=\"" . $type . "\"/></td>";
+			$html .= "<td><img src=\"" . $this->app_abs_href . "client/icons/96/" . $type . ".png\" alt=\"" . $type . "\"/></td>";
 			$html .= "<td><a href=\"" . $item->abs_href . "\">" . basename($item->abs_path) . "</a></td>";
 			$html .= "<td>" . date("Y-m-d H:i", $item->date) . "</td>";
 			$html .= "<td>" . ($item->size !== null ? intval($item->size / 1000) . " KB" : "" ) . "</td>";

From 593c828b6703598f41dca235496f936dcea675e9 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Thu, 29 Aug 2013 23:16:42 +0200
Subject: [PATCH 60/83] Minor changes.

---
 src/_h5ai/client/css/inc/responsive.less | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/_h5ai/client/css/inc/responsive.less b/src/_h5ai/client/css/inc/responsive.less
index 2002a07a..d83d01d2 100644
--- a/src/_h5ai/client/css/inc/responsive.less
+++ b/src/_h5ai/client/css/inc/responsive.less
@@ -11,9 +11,9 @@
 		display: none;
 	}
 }
-#view.view-details, #view.view-list {
+#view.view-details {
 	.header .label, .item .label {
-		margin-right: 110px;
+		margin-right: 80px !important;
 	}
 	.header .date, .item .date {
 		display: none;

From 9c6fe572790f01e6e6313fa21dfa16b82f4ac858 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 30 Aug 2013 12:59:39 +0200
Subject: [PATCH 61/83] Removes unused code.

---
 src/_h5ai/server/php/inc/Thumb.php | 60 ------------------------------
 1 file changed, 60 deletions(-)

diff --git a/src/_h5ai/server/php/inc/Thumb.php b/src/_h5ai/server/php/inc/Thumb.php
index a98423d0..d227279c 100644
--- a/src/_h5ai/server/php/inc/Thumb.php
+++ b/src/_h5ai/server/php/inc/Thumb.php
@@ -94,66 +94,6 @@ class Thumb {
 }
 
 
-
-class Magic {
-
-	private static $GET_SIZE_CMD = "identify -format \"%w %h\" [SOURCE]";
-	private static $RESIZE_CMD = "convert -strip -transparent-color \"#ffffff\" -resize [WIDTH]x[HEIGHT] -quality 80 [SOURCE] [TARGET]";
-	private static $SQUARE_CMD = "convert -strip -transparent-color \"#ffffff\" -crop [CWIDTH]x[CWIDTH]+[CLEFT]+[CTOP] -resize [WIDTH]x[WIDTH] -quality 80 [SOURCE] [TARGET]";
-
-
-	private static final function img_size($source) {
-
-		$cmd = str_replace("[SOURCE]", escapeshellarg($source), Magic::$GET_SIZE_CMD);
-		$size = explode(" ", `$cmd`);
-		$size[0] = intval($size[0]);
-		$size[1] = intval($size[1]);
-		return $size;
-	}
-
-	private static final function rational($source, $target, $width, $height) {
-
-		$cmd = str_replace("[SOURCE]", escapeshellarg($source), Magic::$RESIZE_CMD);
-		$cmd = str_replace("[TARGET]", escapeshellarg($target), $cmd);
-		$cmd = str_replace("[WIDTH]", escapeshellarg($width), $cmd);
-		$cmd = str_replace("[HEIGHT]", escapeshellarg($height), $cmd);
-		`$cmd`;
-	}
-
-	private static final function square($source, $target, $width) {
-
-		$size = Magic::img_size($source);
-		$w = $size[0];
-		$h = $size[1];
-
-		$cwidth = min($w, $h);
-		$cleft = ($w - $cwidth) / 2;
-		$ctop = ($h - $cwidth) / 2;
-
-		$cmd = str_replace("[SOURCE]", escapeshellarg($source), Magic::$SQUARE_CMD);
-		$cmd = str_replace("[TARGET]", escapeshellarg($target), $cmd);
-		$cmd = str_replace("[CWIDTH]", escapeshellarg($cwidth), $cmd);
-		$cmd = str_replace("[CLEFT]", escapeshellarg($cleft), $cmd);
-		$cmd = str_replace("[CTOP]", escapeshellarg($ctop), $cmd);
-		$cmd = str_replace("[WIDTH]", escapeshellarg($width), $cmd);
-		`$cmd`;
-	}
-
-	public static final function thumb($mode, $source, $target, $width, $height = null, $color = null) {
-
-		if ($height === null) {
-			$height = $width;
-		}
-		if ($mode === "square") {
-			Magic::square($source, $target, $width);
-		} elseif ($mode === "rational") {
-			Magic::rational($source, $target, $width, $height);
-		}
-	}
-}
-
-
-
 class Image {
 
 	private $source_file, $source, $width, $height, $type, $dest;

From a62d9311e16b9ac5b0f44fbbad6d9ffeb460333a Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 30 Aug 2013 13:36:16 +0200
Subject: [PATCH 62/83] Removes unused code.

---
 src/_h5ai/server/php/inc/util.php | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/src/_h5ai/server/php/inc/util.php b/src/_h5ai/server/php/inc/util.php
index e952499b..db5294dc 100644
--- a/src/_h5ai/server/php/inc/util.php
+++ b/src/_h5ai/server/php/inc/util.php
@@ -48,11 +48,6 @@ function use_optional_request_params($keys) {
 	return $values;
 }
 
-function delete_tempfile($file) {
-
-	@unlink($file);
-}
-
 function starts_with($sequence, $head) {
 
 	return substr($sequence, 0, strlen($head)) === $head;

From da297f03f7695ad52aee362f78473cc6c6b4183d Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 30 Aug 2013 17:56:24 +0200
Subject: [PATCH 63/83] Updates select.

---
 src/_h5ai/client/css/inc/view.less    | 17 +++++++++--------
 src/_h5ai/client/js/inc/ext/select.js |  8 +++++---
 src/_h5ai/server/php/inc/Archive.php  |  2 +-
 3 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/src/_h5ai/client/css/inc/view.less b/src/_h5ai/client/css/inc/view.less
index ee71d8ea..85cde7ba 100644
--- a/src/_h5ai/client/css/inc/view.less
+++ b/src/_h5ai/client/css/inc/view.less
@@ -11,20 +11,21 @@
 
 #selector {
 	position: absolute;
-	left: 8px;
-	top: 8px;
-	width: 16px;
-	height: 16px;
+	left: 0;
+	top: 0;
+	margin-top: -3px;
+	margin-left: -3px;
 	background-color: #fff;
 	border: 1px solid #555;
-	border-radius: 100px;
-	opacity: 0.7;
+	border-radius: 3px;
+	opacity: 0.6;
 	cursor: pointer;
+	.transition(all 0.2s ease-in-out);
 
 	.on-selected, .on-not-selected {
 		display: block;
-		width: 16px;
-		height: 16px;
+		width: 24px;
+		height: 24px;
 	}
 
 	&:hover {
diff --git a/src/_h5ai/client/js/inc/ext/select.js b/src/_h5ai/client/js/inc/ext/select.js
index f07e3906..c979df19 100644
--- a/src/_h5ai/client/js/inc/ext/select.js
+++ b/src/_h5ai/client/js/inc/ext/select.js
@@ -117,6 +117,8 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/resource', 'core
 				item.$view.find('a')
 					.on('mouseenter', function () {
 
+						var $icon = item.$view.find('.icon');
+
 						$('#selector').remove();
 						$('<div id="selector">' +
 							'<img src="' + resource.image('select') + '" class="on-selected" alt="selected" />' +
@@ -126,7 +128,6 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/resource', 'core
 
 								event.stopImmediatePropagation();
 								event.preventDefault();
-								console.log('icon', event);
 
 								item.$view.toggleClass('selected');
 								publish();
@@ -135,6 +136,7 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/resource', 'core
 					})
 					.on('mouseleave', function () {
 
+						item.$view.find('a').removeClass('hover');
 						$('#selector').remove();
 					});
 			}
@@ -142,7 +144,7 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/resource', 'core
 
 		onLocationChanged = function (item) {
 
-			// _.each(item.content, initItem);
+			_.each(item.content, initItem);
 			publish();
 		},
 
@@ -150,7 +152,7 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/resource', 'core
 
 			var selectionChanged = false;
 
-			// _.each(added, initItem);
+			_.each(added, initItem);
 			_.each(removed, function (item) {
 
 				if (item.$view && item.$view.hasClass('selected')) {
diff --git a/src/_h5ai/server/php/inc/Archive.php b/src/_h5ai/server/php/inc/Archive.php
index d441884b..92fd30f0 100644
--- a/src/_h5ai/server/php/inc/Archive.php
+++ b/src/_h5ai/server/php/inc/Archive.php
@@ -113,7 +113,7 @@ class Archive {
 			. str_repeat("\0", 100)  // linkname [100]
 			. "ustar\0"  // magic [6]
 			. "00"  // version [2]
-			. str_repeat("\0", 80)  // uname, gname, defmajor, devminor [32 + 32 + 8 + 8]  ?92?
+			. str_repeat("\0", 80)  // uname, gname, defmajor, devminor [32 + 32 + 8 + 8]
 			. str_pad($prefix, 155, "\0")  // filename [155]
 			. str_repeat("\0", 12);  // fill [12]
 		assert(strlen($header) === 512);

From 3d3d5ba883f067f9b4c2bda8940b1aba0bc70c3b Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 30 Aug 2013 19:06:50 +0200
Subject: [PATCH 64/83] Border collapse for list view.

---
 src/_h5ai/client/css/inc/view-details.less | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/_h5ai/client/css/inc/view-details.less b/src/_h5ai/client/css/inc/view-details.less
index 97dbe45c..ec2c8694 100644
--- a/src/_h5ai/client/css/inc/view-details.less
+++ b/src/_h5ai/client/css/inc/view-details.less
@@ -31,7 +31,7 @@
 		&.item + .item {
 
 			a, a:active, a:visited {
-				border-top: none;
+				margin-top: -1px;
 			}
 		}
 

From f72a09fde05c96b7412767c11c3ebb553b635edf Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 30 Aug 2013 20:06:39 +0200
Subject: [PATCH 65/83] Adds optional checkboxes for selecting item.

---
 src/_h5ai/client/css/inc/view.less    | 33 +++++++++++++++------------
 src/_h5ai/client/js/inc/ext/select.js | 11 ++++++---
 src/_h5ai/conf/options.json           |  8 +++++--
 3 files changed, 32 insertions(+), 20 deletions(-)

diff --git a/src/_h5ai/client/css/inc/view.less b/src/_h5ai/client/css/inc/view.less
index 85cde7ba..6147427b 100644
--- a/src/_h5ai/client/css/inc/view.less
+++ b/src/_h5ai/client/css/inc/view.less
@@ -1,4 +1,16 @@
 
+
+@item-border-col-sep: @col-border;
+
+@item-background-col-hover: rgba(0,0,0,0.02);
+@item-border-col-hover: @col-border;
+
+@item-background-col-sel: rgba(0,0,0,0.02);
+@item-border-col-sel: @col-border-strong;
+
+@icon-size: 48px;
+
+
 #selection-rect {
 	display: none;
 	position: absolute;
@@ -13,10 +25,12 @@
 	position: absolute;
 	left: 0;
 	top: 0;
+	width: 24px;
+	height: 24px;
 	margin-top: -3px;
 	margin-left: -3px;
-	background-color: #fff;
-	border: 1px solid #555;
+	background-color: #f8f8f8;
+	border: 1px solid rgba(0,0,0,0.3);
 	border-radius: 3px;
 	opacity: 0.6;
 	cursor: pointer;
@@ -24,8 +38,8 @@
 
 	.on-selected, .on-not-selected {
 		display: block;
-		width: 24px;
-		height: 24px;
+		width: 100%;
+		height: 100%;
 	}
 
 	&:hover {
@@ -49,17 +63,6 @@
 }
 
 
-@item-border-col-sep: @col-border;
-
-@item-background-col-hover: rgba(0,0,0,0.02);
-@item-border-col-hover: @col-border;
-
-@item-background-col-sel: rgba(0,0,0,0.02);
-@item-border-col-sel: @col-border-strong;
-
-@icon-size: 48px;
-
-
 #view {
 	display: none;
 	margin: 0 auto;
diff --git a/src/_h5ai/client/js/inc/ext/select.js b/src/_h5ai/client/js/inc/ext/select.js
index c979df19..07297a6a 100644
--- a/src/_h5ai/client/js/inc/ext/select.js
+++ b/src/_h5ai/client/js/inc/ext/select.js
@@ -2,7 +2,8 @@
 modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/resource', 'core/event'], function (_, $, allsettings, resource, event) {
 
 	var settings = _.extend({
-			enabled: false
+			enabled: false,
+			checkboxes: false
 		}, allsettings.select),
 
 		x = 0, y = 0,
@@ -144,7 +145,9 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/resource', 'core
 
 		onLocationChanged = function (item) {
 
-			_.each(item.content, initItem);
+			if (settings.checkboxes) {
+				_.each(item.content, initItem);
+			}
 			publish();
 		},
 
@@ -152,7 +155,9 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/resource', 'core
 
 			var selectionChanged = false;
 
-			_.each(added, initItem);
+			if (settings.checkboxes) {
+				_.each(added, initItem);
+			}
 			_.each(removed, function (item) {
 
 				if (item.$view && item.$view.hasClass('selected')) {
diff --git a/src/_h5ai/conf/options.json b/src/_h5ai/conf/options.json
index 3f43a398..cb05ee63 100644
--- a/src/_h5ai/conf/options.json
+++ b/src/_h5ai/conf/options.json
@@ -269,10 +269,14 @@ Options
 	},
 
 	/*
-	Make entries selectable. At the moment only needed for packaged download and delete.
+	Make entries selectable (first mouse button + drag).
+	At the moment only needed for packaged download and delete.
+
+	- checkboxes: boolean, show a checkbox on mouse over item
 	*/
 	"select": {
-		"enabled": true
+		"enabled": true,
+		"checkboxes": true
 	},
 
 	/*

From 8639e40631ffd8ea3c27a2a82c936afdcbde4243 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Fri, 30 Aug 2013 20:10:38 +0200
Subject: [PATCH 66/83] Updates readme.

---
 README.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/README.md b/README.md
index 59c791d5..13af57a4 100644
--- a/README.md
+++ b/README.md
@@ -58,6 +58,7 @@ It profits from these great projects:
 
 * updates image and text preview
 * adds optional natural sort of items
+* adds optional checkboxes to select items
 * fixes file deletion of multiple files
 * fixes `setParentFolderLabels = false`
 * fixes shell-arg and RegExp escape issues

From 00cc9fb713f719aaa5a23ad2b922ef3a5192b8e1 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sat, 31 Aug 2013 14:19:45 +0200
Subject: [PATCH 67/83] Minor fix.

---
 src/_h5ai/client/js/inc/ext/select.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/_h5ai/client/js/inc/ext/select.js b/src/_h5ai/client/js/inc/ext/select.js
index 07297a6a..1fed50dc 100644
--- a/src/_h5ai/client/js/inc/ext/select.js
+++ b/src/_h5ai/client/js/inc/ext/select.js
@@ -137,7 +137,7 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/resource', 'core
 					})
 					.on('mouseleave', function () {
 
-						item.$view.find('a').removeClass('hover');
+						$('.hover').removeClass('hover');
 						$('#selector').remove();
 					});
 			}

From 8b2852ec9d457cf113da4db82dc2c1e776060890 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sat, 31 Aug 2013 14:34:42 +0200
Subject: [PATCH 68/83] Use of EXIF thumbnails optional (opt-out).

---
 src/_h5ai/conf/options.json        | 4 +++-
 src/_h5ai/server/php/inc/Thumb.php | 3 ++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/_h5ai/conf/options.json b/src/_h5ai/conf/options.json
index cb05ee63..06562ed7 100644
--- a/src/_h5ai/conf/options.json
+++ b/src/_h5ai/conf/options.json
@@ -312,6 +312,7 @@ Options
 	- doc: array of types
 	- delay: delay in milliseconds after "dom-ready" before thumb-requesting starts
 	- size: number, size in pixel of the generated thumbnails
+	- exif: boolean, use included EXIF thumbs if possible
 	*/
 	"thumbnails": {
 		"enabled": true,
@@ -319,7 +320,8 @@ Options
 		"mov": ["video"],
 		"doc": ["pdf", "ps"],
 		"delay": 1,
-		"size": 96
+		"size": 96,
+		"exif": true
 	},
 
 	/*
diff --git a/src/_h5ai/server/php/inc/Thumb.php b/src/_h5ai/server/php/inc/Thumb.php
index d227279c..7476575e 100644
--- a/src/_h5ai/server/php/inc/Thumb.php
+++ b/src/_h5ai/server/php/inc/Thumb.php
@@ -56,7 +56,8 @@ class Thumb {
 			$image = new Image();
 
 			$et = false;
-			if (function_exists("exif_thumbnail")) {
+			$opts = $this->app->get_options();
+			if ($opts["thumbnails"]["exif"] === true && function_exists("exif_thumbnail")) {
 				$et = @exif_thumbnail($source_abs_path);
 			}
 			if($et !== false) {

From c8d0f5500e7924d79030b3b6879f715c984429d4 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sat, 31 Aug 2013 15:27:46 +0200
Subject: [PATCH 69/83] Additional text preview modes: none, fixed, markdown.

---
 src/_h5ai/client/js/inc/ext/preview-img.js |  2 +-
 src/_h5ai/client/js/inc/ext/preview-txt.js | 34 +++++++---------------
 src/_h5ai/conf/options.json                | 25 +++++++++-------
 3 files changed, 25 insertions(+), 36 deletions(-)

diff --git a/src/_h5ai/client/js/inc/ext/preview-img.js b/src/_h5ai/client/js/inc/ext/preview-img.js
index a9dc5a4a..d118a95e 100644
--- a/src/_h5ai/client/js/inc/ext/preview-img.js
+++ b/src/_h5ai/client/js/inc/ext/preview-img.js
@@ -3,7 +3,7 @@ modulejs.define('ext/preview-img', ['_', '$', 'core/settings', 'core/event', 'ex
 
 	var settings = _.extend({
 			enabled: false,
-			types: ['bmp', 'gif', 'ico', 'image', 'jpg', 'png', 'tiff']
+			types: []
 		}, allsettings['preview-img']),
 
 		preloadImg = function (src, callback) {
diff --git a/src/_h5ai/client/js/inc/ext/preview-txt.js b/src/_h5ai/client/js/inc/ext/preview-txt.js
index ef5fcf12..a6a85a2c 100644
--- a/src/_h5ai/client/js/inc/ext/preview-txt.js
+++ b/src/_h5ai/client/js/inc/ext/preview-txt.js
@@ -3,29 +3,7 @@ modulejs.define('ext/preview-txt', ['_', '$', 'core/settings', 'core/event', 'ex
 
 	var settings = _.extend({
 			enabled: false,
-			types: {
-				authors: 'plain',
-				copying: 'plain',
-				c: 'c',
-				cpp: 'cpp',
-				css: 'css',
-				h: 'c',
-				hpp: 'cpp',
-				install: 'plain',
-				log: 'plain',
-				java: 'java',
-				makefile: 'xml',
-				markdown: 'plain',
-				// php: 'php',
-				python: 'python',
-				readme: 'plain',
-				rb: 'ruby',
-				rtf: 'plain',
-				script: 'shell',
-				text: 'plain',
-				js: 'js',
-				xml: 'xml'
-			}
+			types: {}
 		}, allsettings['preview-txt']),
 
 		templateText = '<pre id="pv-txt-text" class="highlighted"/>',
@@ -142,7 +120,15 @@ modulejs.define('ext/preview-txt', ['_', '$', 'core/settings', 'core/event', 'ex
 
 							var $text;
 
-							if (currentItem.type === 'markdown') {
+							if (settings.types[currentItem.type] === 'none') {
+
+								$text = $(templateMarkdown).text(textContent);
+
+							} else if (settings.types[currentItem.type] === 'fixed') {
+
+								$text = $(templateText).text(textContent);
+
+							} else if (settings.types[currentItem.type] === 'markdown') {
 
 								$text = $(templateMarkdown).text(textContent);
 
diff --git a/src/_h5ai/conf/options.json b/src/_h5ai/conf/options.json
index 06562ed7..3f037a41 100644
--- a/src/_h5ai/conf/options.json
+++ b/src/_h5ai/conf/options.json
@@ -214,38 +214,41 @@ Options
 
 	/*
 	Show text file preview on click.
-	"types" maps file types to SyntaxHighligher brushes. Special case: "markdown" will
-	be rendered as HTML.
-
+	"types" maps file types to SyntaxHighligher brushes.
 	For available brushes see http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/
 
+	Additional type are:
+	 - "markdown" to render Markdown text
+	 - "none" for floating text
+	 - "fixed" for fixed width text
+
 	- types: maps types to brushes
 	*/
 	"preview-txt": {
 		"enabled": true,
 		"types": {
-			"authors": "plain",
-			"copying": "plain",
+			"authors": "fixed",
+			"copying": "fixed",
 			"c": "c",
 			"cpp": "cpp",
 			"css": "css",
 			"diff": "diff",
 			"h": "c",
 			"hpp": "cpp",
-			"install": "plain",
-			"log": "plain",
+			"install": "fixed",
+			"log": "fixed",
 			"java": "java",
 			"js": "js",
 			"json": "js",
 			"makefile": "xml",
-			"markdown": "plain",
+			"markdown": "markdown",
 			// "php": "php",
 			"python": "python",
-			"readme": "plain",
+			"readme": "fixed",
 			"rb": "ruby",
-			"rtf": "plain",
+			"rtf": "fixed",
 			"script": "shell",
-			"text": "plain",
+			"text": "fixed",
 			"xml": "xml"
 		}
 	},

From fef8e2a2542195484e7758e50738e47c1b7ea6e6 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sat, 31 Aug 2013 17:17:27 +0200
Subject: [PATCH 70/83] Updates readme.

---
 README.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/README.md b/README.md
index 13af57a4..583d5fba 100644
--- a/README.md
+++ b/README.md
@@ -59,6 +59,8 @@ It profits from these great projects:
 * updates image and text preview
 * adds optional natural sort of items
 * adds optional checkboxes to select items
+* adds text preview modes: none, fixed, markdown
+* makes use of EXIF thumbnails optional
 * fixes file deletion of multiple files
 * fixes `setParentFolderLabels = false`
 * fixes shell-arg and RegExp escape issues

From 5c5d050218b9b171497d85e5c740a5fde6961ca8 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sat, 31 Aug 2013 17:47:35 +0200
Subject: [PATCH 71/83] Optionally hide folders in the main view.

---
 src/_h5ai/client/js/inc/view/items.js | 9 +++++++--
 src/_h5ai/conf/options.json           | 4 +++-
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/_h5ai/client/js/inc/view/items.js b/src/_h5ai/client/js/inc/view/items.js
index 80400724..58008e33 100644
--- a/src/_h5ai/client/js/inc/view/items.js
+++ b/src/_h5ai/client/js/inc/view/items.js
@@ -4,6 +4,7 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
 	var settings = _.extend({
 			setParentFolderLabels: false,
 			hideParentFolderLinks: false,
+			hideFolders: false,
 			binaryPrefix: false
 		}, allsettings.view),
 
@@ -106,7 +107,9 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
 
 			_.each(item.content, function (e) {
 
-				$items.append(update(e, true));
+				if (!(e.isFolder() && settings.hideFolders)) {
+					$items.append(update(e, true));
+				}
 			});
 
 			if (item.isEmpty()) {
@@ -123,7 +126,9 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
 
 			_.each(added, function (item) {
 
-				update(item, true).hide().appendTo($items).fadeIn(400);
+				if (!(item.isFolder() && settings.hideFolders)) {
+					update(item, true).hide().appendTo($items).fadeIn(400);
+				}
 			});
 
 			_.each(removed, function (item) {
diff --git a/src/_h5ai/conf/options.json b/src/_h5ai/conf/options.json
index 3f037a41..7058782e 100644
--- a/src/_h5ai/conf/options.json
+++ b/src/_h5ai/conf/options.json
@@ -34,7 +34,8 @@ Options
 		The user selected view mode is also stored local in modern browsers
 		so that it will be persistent.
 	- setParentFolderLabels: set parent folder labels to real folder names
-	- hideParentFolderLinks: hide parent folder links
+	- hideParentFolderLinks: hide parent folder links in the main view
+	- hideFolders: hide all folders in the main view
 	- binaryPrefix: set to true uses 1024B=1KiB when formatting file sizes (see http://en.wikipedia.org/wiki/Binary_prefix)
 	- indexFiles: consider folder with those files as non {{pkg.name}} folders
 	- ignore: don't list items matching these regular expressions
@@ -46,6 +47,7 @@ Options
 		"sizes": [48, 24, 96],
 		"setParentFolderLabels": true,
 		"hideParentFolderLinks": false,
+		"hideFolders": false,
 		"binaryPrefix": false,
 		"indexFiles": ["index.html", "index.htm", "index.php"],
 		"ignore": ["^\\.", "^_{{pkg.name}}"],

From cadc1f49983e63b724a47d7ea91e63c1504880e9 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sat, 31 Aug 2013 23:08:09 +0200
Subject: [PATCH 72/83] Place thumbs in subfolder.

---
 src/_h5ai/server/php/inc/Thumb.php | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/_h5ai/server/php/inc/Thumb.php b/src/_h5ai/server/php/inc/Thumb.php
index 7476575e..5912f376 100644
--- a/src/_h5ai/server/php/inc/Thumb.php
+++ b/src/_h5ai/server/php/inc/Thumb.php
@@ -4,6 +4,7 @@ class Thumb {
 
 	private static $FFMPEG_CMD = "ffmpeg -i [SOURCE] -an -ss 3 -vframes 1 [TARGET]";
 	private static $CONVERT_CMD = "convert -strip [SOURCE][0] [TARGET]";
+	private static $THUMB_CACHE = "thumbs";
 
 	public static final function is_supported() {
 
@@ -22,6 +23,8 @@ class Thumb {
 	public function __construct($app) {
 
 		$this->app = $app;
+		$this->thumbs_path = $this->app->get_cache_abs_path() . "/" . Thumb::$THUMB_CACHE;
+		$this->thumbs_href = $this->app->get_cache_abs_href() . Thumb::$THUMB_CACHE;
 	}
 
 
@@ -47,9 +50,13 @@ class Thumb {
 			return null;
 		}
 
+		if (!is_dir($this->thumbs_path)) {
+			@mkdir($this->thumbs_path, 0755, true);
+		}
+
 		$name = "thumb-" . sha1("$source_abs_path-$width-$height-$mode") . ".jpg";
-		$thumb_abs_path = $this->app->get_cache_abs_path() . "/" . $name;
-		$thumb_abs_href = $this->app->get_cache_abs_href() . $name;
+		$thumb_abs_path = $this->thumbs_path . "/" . $name;
+		$thumb_abs_href = $this->thumbs_href . "/" . $name;
 
 		if (!file_exists($thumb_abs_path) || filemtime($source_abs_path) >= filemtime($thumb_abs_path)) {
 

From 131d94563809aca3cc2d19455bdfc830e7740d8d Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Sun, 1 Sep 2013 12:44:40 +0200
Subject: [PATCH 73/83] Missing semicolon.

---
 src/_h5ai/client/js/inc/ext/download.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/_h5ai/client/js/inc/ext/download.js b/src/_h5ai/client/js/inc/ext/download.js
index 01400677..4b1278d7 100644
--- a/src/_h5ai/client/js/inc/ext/download.js
+++ b/src/_h5ai/client/js/inc/ext/download.js
@@ -54,7 +54,7 @@ modulejs.define('ext/download', ['_', '$', 'core/settings', 'core/resource', 'co
 				$form = $('<form action="#" method="post" style="display:none;" />');
 
 			for (var key in query) {
-				$form.append('<input type="hidden" name="' + key + '" value="' + query[key] + '" />')
+				$form.append('<input type="hidden" name="' + key + '" value="' + query[key] + '" />');
 			}
 			$form.appendTo('body').submit().remove();
 		},

From 19d53b4c147beabba2ada4484597cba828c077ca Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Mon, 2 Sep 2013 21:46:47 +0200
Subject: [PATCH 74/83] Lighter font.

---
 src/_h5ai/client/css/inc/general.less  | 2 ++
 src/_h5ai/index.html.jade              | 2 +-
 src/_h5ai/server/php/inc/page.php.jade | 2 +-
 3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/_h5ai/client/css/inc/general.less b/src/_h5ai/client/css/inc/general.less
index 88efdf55..ae557f20 100644
--- a/src/_h5ai/client/css/inc/general.less
+++ b/src/_h5ai/client/css/inc/general.less
@@ -24,6 +24,7 @@
 @border-widget-sep: 1px solid @col-widget-sep;
 
 @font-family: Ubuntu, sans-serif;
+@font-weight: 300;
 @font-family-mono: "Ubuntu Mono", monospace;
 
 
@@ -57,6 +58,7 @@ html {
 body {
 	font-family: @font-family;
 	font-size: 13px;
+	font-weight: @font-weight;
 	color: @col;
 	background-color: @col-back;
 	margin: 30px;
diff --git a/src/_h5ai/index.html.jade b/src/_h5ai/index.html.jade
index b317940f..eea96a56 100644
--- a/src/_h5ai/index.html.jade
+++ b/src/_h5ai/index.html.jade
@@ -17,7 +17,7 @@ html.no-js.browser( lang="en" )
 		link( rel="apple-touch-icon-precomposed", sizes="72x72", type="image/png", href="client/images/app-72x72.png" )
 		link( rel="apple-touch-icon-precomposed", sizes="114x114", type="image/png", href="client/images/app-114x114.png" )
 		link( rel="apple-touch-icon-precomposed", sizes="144x144", type="image/png", href="client/images/app-144x144.png" )
-		link( rel="stylesheet", href="//fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic,700italic|Ubuntu:400,700,400italic,700italic" )
+		link( rel="stylesheet", href="//fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic,700italic|Ubuntu:300italic,700italic,300,700" )
 		link( rel="stylesheet", href="client/css/styles.css" )
 		script( src="client/js/scripts.js", data-mode="info" )
 
diff --git a/src/_h5ai/server/php/inc/page.php.jade b/src/_h5ai/server/php/inc/page.php.jade
index 06a6c61e..f49aec7e 100644
--- a/src/_h5ai/server/php/inc/page.php.jade
+++ b/src/_h5ai/server/php/inc/page.php.jade
@@ -21,7 +21,7 @@ html.no-js.browser( lang="en" )
 		link( rel="apple-touch-icon-precomposed", sizes="72x72", type="image/png", href!="#{href}client/images/app-72x72.png" )
 		link( rel="apple-touch-icon-precomposed", sizes="114x114", type="image/png", href!="#{href}client/images/app-114x114.png" )
 		link( rel="apple-touch-icon-precomposed", sizes="144x144", type="image/png", href!="#{href}client/images/app-144x144.png" )
-		link( rel="stylesheet", href="//fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic,700italic|Ubuntu:400,700,400italic,700italic" )
+		link( rel="stylesheet", href="//fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic,700italic|Ubuntu:300italic,700italic,300,700" )
 		link( rel="stylesheet", href!="#{href}client/css/styles.css" )
 		script( src!="#{href}client/js/scripts.js" )
 

From f0d7ec72cf16373011d23b6f14bb633620be295c Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Tue, 3 Sep 2013 12:33:46 +0200
Subject: [PATCH 75/83] Fix natural sort for file size.

---
 src/_h5ai/client/js/inc/ext/sort.js | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/_h5ai/client/js/inc/ext/sort.js b/src/_h5ai/client/js/inc/ext/sort.js
index 862d8086..4d99a698 100644
--- a/src/_h5ai/client/js/inc/ext/sort.js
+++ b/src/_h5ai/client/js/inc/ext/sort.js
@@ -107,12 +107,17 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 					return res;
 				}
 
-				val1 = '' + getValue(item1);
-				val2 = '' + getValue(item2);
+				val1 = getValue(item1);
+				val2 = getValue(item2);
 
-				if (ignorecase) {
-					val1 = val1.toLowerCase();
-					val2 = val2.toLowerCase();
+				if (isNaN(val1) || isNaN(val2)) {
+					val1 = '' + val1;
+					val2 = '' + val2;
+
+					if (ignorecase) {
+						val1 = val1.toLowerCase();
+						val2 = val2.toLowerCase();
+					}
 				}
 
 				if (natural) {
@@ -130,7 +135,7 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
 			var headers = $('#items li.header a'),
 				header = $('#items li.header a.' + columnClasses[column]),
 
-				fn = cmpFn(columnGetters[column], reverse, settings.ignorecase, settings.natural),
+				fn = cmpFn(columnGetters[column], reverse, settings.ignorecase, column === 0 && settings.natural),
 
 				current = $('#items .item'),
 				sorted = $('#items .item').sort(fn);

From ad845dbe6667dabed24eb7fc3e47846dd65a294c Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Tue, 3 Sep 2013 13:40:07 +0200
Subject: [PATCH 76/83] Cleans view styles.

---
 src/_h5ai/client/css/inc/view-details.less | 7 ++-----
 src/_h5ai/client/css/inc/view-grid.less    | 5 ++---
 src/_h5ai/client/css/inc/view-icons.less   | 3 +--
 3 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/src/_h5ai/client/css/inc/view-details.less b/src/_h5ai/client/css/inc/view-details.less
index ec2c8694..22cd0072 100644
--- a/src/_h5ai/client/css/inc/view-details.less
+++ b/src/_h5ai/client/css/inc/view-details.less
@@ -29,17 +29,14 @@
 		}
 
 		&.item + .item {
-
-			a, a:active, a:visited {
-				margin-top: -1px;
-			}
+			margin-top: -1px;
 		}
 
 		.icon.square {
 			display: inline-block;
 			position: absolute;
 			left: 0;
-			top: -5px;
+			top: -4px;
 			width: @icon-size;
 
 			img {
diff --git a/src/_h5ai/client/css/inc/view-grid.less b/src/_h5ai/client/css/inc/view-grid.less
index 4a67e115..e532ebd8 100644
--- a/src/_h5ai/client/css/inc/view-grid.less
+++ b/src/_h5ai/client/css/inc/view-grid.less
@@ -5,10 +5,9 @@
 
 		&.item {
 			float: left;
+			margin: 2px;
 
 			a, a:active, a:visited {
-				float: left;
-				margin: 2px;
 				width: @icon-size + 186px;
 				height: @icon-size + 6px;
 				border: 1px solid rgba(0,0,0,0);
@@ -31,7 +30,7 @@
 			display: inline-block;
 			position: absolute;
 			left: 0;
-			top: -2px;
+			top: -4px;
 			width: @icon-size;
 
 			img {
diff --git a/src/_h5ai/client/css/inc/view-icons.less b/src/_h5ai/client/css/inc/view-icons.less
index 44b104dd..ecbab927 100644
--- a/src/_h5ai/client/css/inc/view-icons.less
+++ b/src/_h5ai/client/css/inc/view-icons.less
@@ -6,10 +6,9 @@
 
 		&.item {
 			float: left;
+			margin: 8px;
 
 			a, a:active, a:visited {
-				float: left;
-				margin: 8px;
 				padding: 8px;
 				min-width: 96px;
 				width: @icon-size * 2;

From 66e9dafaa51016a1a46d4fa81959cf2e4ae26000 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Tue, 3 Sep 2013 16:12:31 +0200
Subject: [PATCH 77/83] Improves selectors.

---
 src/_h5ai/client/css/inc/general.less    |  1 +
 src/_h5ai/client/css/inc/view-grid.less  |  4 +-
 src/_h5ai/client/css/inc/view.less       | 77 +++++++++++-------------
 src/_h5ai/client/js/inc/ext/select.js    | 29 ++-------
 src/_h5ai/client/js/inc/view/items.js    |  4 ++
 src/_h5ai/client/js/inc/view/viewmode.js |  2 +-
 6 files changed, 50 insertions(+), 67 deletions(-)

diff --git a/src/_h5ai/client/css/inc/general.less b/src/_h5ai/client/css/inc/general.less
index ae557f20..5b34da55 100644
--- a/src/_h5ai/client/css/inc/general.less
+++ b/src/_h5ai/client/css/inc/general.less
@@ -4,6 +4,7 @@
 @col-hover: rgb(29,119,194);
 @col-border: rgba(0,0,0,0.05);
 @col-border-strong: rgba(0,0,0,0.15);
+@col-border-stronger: rgba(0,0,0,0.3);
 
 @col-error: rgb(204,51,51);
 
diff --git a/src/_h5ai/client/css/inc/view-grid.less b/src/_h5ai/client/css/inc/view-grid.less
index e532ebd8..9cb71c0b 100644
--- a/src/_h5ai/client/css/inc/view-grid.less
+++ b/src/_h5ai/client/css/inc/view-grid.less
@@ -8,7 +8,7 @@
 			margin: 2px;
 
 			a, a:active, a:visited {
-				width: @icon-size + 186px;
+				width: @icon-size + 182px;
 				height: @icon-size + 6px;
 				border: 1px solid rgba(0,0,0,0);
 
@@ -58,7 +58,7 @@
 		&.item {
 
 			a, a:active, a:visited {
-				width: @size + 186px;
+				width: @size + 182px;
 				height: @size + 6px;
 			}
 
diff --git a/src/_h5ai/client/css/inc/view.less b/src/_h5ai/client/css/inc/view.less
index 6147427b..6e008f63 100644
--- a/src/_h5ai/client/css/inc/view.less
+++ b/src/_h5ai/client/css/inc/view.less
@@ -21,47 +21,6 @@
 	background-color: rgba(0,0,0,0.01);
 }
 
-#selector {
-	position: absolute;
-	left: 0;
-	top: 0;
-	width: 24px;
-	height: 24px;
-	margin-top: -3px;
-	margin-left: -3px;
-	background-color: #f8f8f8;
-	border: 1px solid rgba(0,0,0,0.3);
-	border-radius: 3px;
-	opacity: 0.6;
-	cursor: pointer;
-	.transition(all 0.2s ease-in-out);
-
-	.on-selected, .on-not-selected {
-		display: block;
-		width: 100%;
-		height: 100%;
-	}
-
-	&:hover {
-		opacity: 1;
-	}
-}
-
-.item.selected {
-	#selector {
-		.on-not-selected {
-			display: none;
-		}
-	}
-}
-.item:not(.selected) {
-	#selector {
-		.on-selected {
-			display: none;
-		}
-	}
-}
-
 
 #view {
 	display: none;
@@ -124,6 +83,10 @@
 					color: @col-hover;
 					background-color: @item-background-col-hover;
 					border-color: @item-border-col-hover;
+
+					.selector {
+						display: block;
+					}
 				}
 			}
 
@@ -138,6 +101,15 @@
 						border-color: @item-border-col-sel;
 					}
 				}
+
+				.selector {
+					display: block;
+					// border-color: @col-border-stronger;
+
+					img {
+						display: block;
+					}
+				}
 			}
 		}
 
@@ -194,6 +166,29 @@
 			text-align: right;
 			width: 80px;
 		}
+
+		.selector {
+			display: none;
+			position: absolute;
+			left: 0;
+			top: 0;
+			width: 18px;
+			height: 18px;
+			background-color: #fff;
+			border: 1px solid @col-border-strong;
+			cursor: pointer;
+			.transition(all 0.2s ease-in-out);
+
+			&:hover {
+				border-color: @col-border-stronger;
+			}
+
+			img {
+				display: none;
+				width: 100%;
+				height: 100%;
+			}
+		}
 	}
 
 	.empty, .no-match {
diff --git a/src/_h5ai/client/js/inc/ext/select.js b/src/_h5ai/client/js/inc/ext/select.js
index 1fed50dc..5bf66993 100644
--- a/src/_h5ai/client/js/inc/ext/select.js
+++ b/src/_h5ai/client/js/inc/ext/select.js
@@ -115,31 +115,14 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/resource', 'core
 		initItem = function (item) {
 
 			if (item.$view) {
-				item.$view.find('a')
-					.on('mouseenter', function () {
+				item.$view.find('.selector').on('click', function (event) {
 
-						var $icon = item.$view.find('.icon');
+					event.stopImmediatePropagation();
+					event.preventDefault();
 
-						$('#selector').remove();
-						$('<div id="selector">' +
-							'<img src="' + resource.image('select') + '" class="on-selected" alt="selected" />' +
-							'<img src="' + resource.image('blank') + '" class="on-not-selected" alt="not-selected" />' +
-							'</div>')
-							.on('click', function (event) {
-
-								event.stopImmediatePropagation();
-								event.preventDefault();
-
-								item.$view.toggleClass('selected');
-								publish();
-							})
-							.appendTo(item.$view.find('a'));
-					})
-					.on('mouseleave', function () {
-
-						$('.hover').removeClass('hover');
-						$('#selector').remove();
-					});
+					item.$view.toggleClass('selected');
+					publish();
+				});
 			}
 		},
 
diff --git a/src/_h5ai/client/js/inc/view/items.js b/src/_h5ai/client/js/inc/view/items.js
index 58008e33..5334516a 100644
--- a/src/_h5ai/client/js/inc/view/items.js
+++ b/src/_h5ai/client/js/inc/view/items.js
@@ -15,6 +15,9 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
 							'<span class="label"/>' +
 							'<span class="date"/>' +
 							'<span class="size"/>' +
+							'<span class="selector">' +
+								'<img src="' + resource.image('select') + '" alt="selected"/>' +
+							'</span>' +
 						'</a>' +
 					'</li>',
 		hintTemplate = '<span class="hint"/>',
@@ -72,6 +75,7 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
 					$label.addClass('l10n-parentDirectory');
 				}
 				$html.addClass('folder-parent');
+				$html.find('.selector').remove();
 			}
 
 			if (item.$view) {
diff --git a/src/_h5ai/client/js/inc/view/viewmode.js b/src/_h5ai/client/js/inc/view/viewmode.js
index e0714c17..16189501 100644
--- a/src/_h5ai/client/js/inc/view/viewmode.js
+++ b/src/_h5ai/client/js/inc/view/viewmode.js
@@ -29,7 +29,7 @@ modulejs.define('view/viewmode', ['_', '$', 'core/settings', 'core/resource', 'c
 
 			var contentWidth = $('#content').width(),
 				$view = $('#view'),
-				itemWidth = ($view.hasClass('view-icons') || $view.hasClass('view-grid')) ? ($view.find('.item').eq(0).width() || 1) : 1;
+				itemWidth = ($view.hasClass('view-icons') || $view.hasClass('view-grid')) ? ($view.find('.item').eq(0).outerWidth(true) || 1) : 1;
 
 			$view.width(Math.floor(contentWidth / itemWidth) * itemWidth);
 		},

From c3ea2480da7c5f76d73e245857b90180f6c2864a Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Tue, 3 Sep 2013 17:59:10 +0200
Subject: [PATCH 78/83] Refactors.

---
 README.md                                       |  1 +
 .../client/images/{select.svg => selected.svg}  |  0
 src/_h5ai/client/js/inc/ext/select.js           | 17 +++++++++++------
 src/_h5ai/client/js/inc/view/items.js           |  4 ----
 4 files changed, 12 insertions(+), 10 deletions(-)
 rename src/_h5ai/client/images/{select.svg => selected.svg} (100%)

diff --git a/README.md b/README.md
index 583d5fba..d3318467 100644
--- a/README.md
+++ b/README.md
@@ -60,6 +60,7 @@ It profits from these great projects:
 * adds optional natural sort of items
 * adds optional checkboxes to select items
 * adds text preview modes: none, fixed, markdown
+* optionally hide folders in main view
 * makes use of EXIF thumbnails optional
 * fixes file deletion of multiple files
 * fixes `setParentFolderLabels = false`
diff --git a/src/_h5ai/client/images/select.svg b/src/_h5ai/client/images/selected.svg
similarity index 100%
rename from src/_h5ai/client/images/select.svg
rename to src/_h5ai/client/images/selected.svg
diff --git a/src/_h5ai/client/js/inc/ext/select.js b/src/_h5ai/client/js/inc/ext/select.js
index 5bf66993..b1287a1d 100644
--- a/src/_h5ai/client/js/inc/ext/select.js
+++ b/src/_h5ai/client/js/inc/ext/select.js
@@ -6,6 +6,8 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/resource', 'core
 			checkboxes: false
 		}, allsettings.select),
 
+		template = '<span class="selector"><img src="' + resource.image('selected') + '" alt="selected"/></span>',
+
 		x = 0, y = 0,
 		l = 0, t = 0, w = 0, h = 0,
 		shrink = 1/3,
@@ -115,14 +117,17 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/resource', 'core
 		initItem = function (item) {
 
 			if (item.$view) {
-				item.$view.find('.selector').on('click', function (event) {
 
-					event.stopImmediatePropagation();
-					event.preventDefault();
+				$(template)
+					.appendTo(item.$view.find('a'))
+					.on('click', function (event) {
 
-					item.$view.toggleClass('selected');
-					publish();
-				});
+						event.stopImmediatePropagation();
+						event.preventDefault();
+
+						item.$view.toggleClass('selected');
+						publish();
+					});
 			}
 		},
 
diff --git a/src/_h5ai/client/js/inc/view/items.js b/src/_h5ai/client/js/inc/view/items.js
index 5334516a..58008e33 100644
--- a/src/_h5ai/client/js/inc/view/items.js
+++ b/src/_h5ai/client/js/inc/view/items.js
@@ -15,9 +15,6 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
 							'<span class="label"/>' +
 							'<span class="date"/>' +
 							'<span class="size"/>' +
-							'<span class="selector">' +
-								'<img src="' + resource.image('select') + '" alt="selected"/>' +
-							'</span>' +
 						'</a>' +
 					'</li>',
 		hintTemplate = '<span class="hint"/>',
@@ -75,7 +72,6 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
 					$label.addClass('l10n-parentDirectory');
 				}
 				$html.addClass('folder-parent');
-				$html.find('.selector').remove();
 			}
 
 			if (item.$view) {

From f2d28d6970af865d0e99367a796b3b77353311a8 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Tue, 3 Sep 2013 23:07:30 +0200
Subject: [PATCH 79/83] Smaller font for costum content.

---
 src/_h5ai/client/css/inc/content.less | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/_h5ai/client/css/inc/content.less b/src/_h5ai/client/css/inc/content.less
index 1059d0f0..ddda9b97 100644
--- a/src/_h5ai/client/css/inc/content.less
+++ b/src/_h5ai/client/css/inc/content.less
@@ -2,7 +2,7 @@
 #content {
 	max-width: 960px;
 	margin: 50px auto;
-	font-size: 16px;
+	font-size: 15px;
 }
 
 #content-header, #content-footer {

From 94595597d570f06b0a1697a094023ccae9a4e0b5 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Wed, 4 Sep 2013 14:17:29 +0200
Subject: [PATCH 80/83] Fixes hover states.

---
 src/_h5ai/client/css/inc/view.less | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/_h5ai/client/css/inc/view.less b/src/_h5ai/client/css/inc/view.less
index 6e008f63..39edaa8a 100644
--- a/src/_h5ai/client/css/inc/view.less
+++ b/src/_h5ai/client/css/inc/view.less
@@ -83,7 +83,9 @@
 					color: @col-hover;
 					background-color: @item-background-col-hover;
 					border-color: @item-border-col-hover;
+				}
 
+				&:hover {
 					.selector {
 						display: block;
 					}

From 32d9d59a4ee5078b3945ba635f515b57ddccec65 Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Wed, 4 Sep 2013 15:30:16 +0200
Subject: [PATCH 81/83] Styles.

---
 src/_h5ai/client/css/inc/view-details.less | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/_h5ai/client/css/inc/view-details.less b/src/_h5ai/client/css/inc/view-details.less
index 22cd0072..c4c636a3 100644
--- a/src/_h5ai/client/css/inc/view-details.less
+++ b/src/_h5ai/client/css/inc/view-details.less
@@ -10,7 +10,6 @@
 		&.item {
 
 			a, a:active, a:visited {
-				border-top: 1px solid @item-border-col-sep;
 				border-bottom: 1px solid @item-border-col-sep;
 				height: @icon-size + 6px;
 
@@ -28,10 +27,6 @@
 			}
 		}
 
-		&.item + .item {
-			margin-top: -1px;
-		}
-
 		.icon.square {
 			display: inline-block;
 			position: absolute;
@@ -60,6 +55,10 @@
 			right: 0;
 			top: 0;
 		}
+
+		.selector {
+			margin-top: -1px;
+		}
 	}
 }
 

From b5367d999a04922d423ca079f400b4eb6aceceab Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Wed, 4 Sep 2013 15:57:48 +0200
Subject: [PATCH 82/83] Updates readme.

---
 README.md | 47 ++++++++++++++++++++++++-----------------------
 1 file changed, 24 insertions(+), 23 deletions(-)

diff --git a/README.md b/README.md
index d3318467..2b638b23 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
 # h5ai
 **h5ai** is a modern HTTP web server index for Apache httpd, lighttpd, nginx and Cherokee.
 The preferred way to report a bug or make a feature request is to
-create [a new issue](http://github.com/lrsjng/h5ai/issues/new) on GitHub!
+create [a new issue](https://github.com/lrsjng/h5ai/issues/new) on GitHub!
 
 
 ## Install
@@ -30,7 +30,7 @@ You'll find a new directory `build` including a fresh zipball.
 
 ## License
 
-**h5ai** is provided under the terms of the [MIT License](http://github.com/lrsjng/h5ai/blob/develop/LICENSE.md).
+**h5ai** is provided under the terms of the [MIT License](https://github.com/lrsjng/h5ai/blob/develop/LICENSE.md).
 
 It profits from these great projects:
 [Faenza icon set](http://tiheum.deviantart.com/art/Faenza-Icons-173323228)&nbsp;(GPL),
@@ -39,10 +39,10 @@ It profits from these great projects:
 [jQuery](http://jquery.com)&nbsp;(MIT),
 [jQuery.filedrop](http://www.github.com/weixiyen/jquery-filedrop)&nbsp;(MIT),
 [jQuery.fracs](http://larsjung.de/fracs/)&nbsp;(MIT),
-[jQuery.mousewheel](http://github.com/brandonaaron/jquery-mousewheel)&nbsp;(MIT),
+[jQuery.mousewheel](https://github.com/brandonaaron/jquery-mousewheel)&nbsp;(MIT),
 [jQuery.qrcode](http://larsjung.de/qrcode/)&nbsp;(MIT),
 [jQuery.scrollpanel](http://larsjung.de/scrollpanel/)&nbsp;(MIT),
-[markdown-js](http://github.com/evilstreak/markdown-js)&nbsp;(MIT),
+[markdown-js](https://github.com/evilstreak/markdown-js)&nbsp;(MIT),
 [Modernizr](http://www.modernizr.com)&nbsp;(MIT/BSD),
 [modulejs](http://larsjung.de/modulejs/)&nbsp;(MIT),
 [Moment.js](http://momentjs.com)&nbsp;(MIT),
@@ -57,6 +57,7 @@ It profits from these great projects:
 ### develop branch
 
 * updates image and text preview
+* adds variable icon sizes
 * adds optional natural sort of items
 * adds optional checkboxes to select items
 * adds text preview modes: none, fixed, markdown
@@ -140,11 +141,11 @@ It profits from these great projects:
 * improves filter (now ignorecase, now only checks if chars in right order)
 * adds keyboard support to image preview (space, enter, backspace, left, right, up, down, f, esc)
 * adds text file preview and highlighting with [SyntaxHighlighter](http://alexgorbatchev.com/SyntaxHighlighter/) (same keys as img preview)
-* adds Markdown preview with [markdown-js](http://github.com/evilstreak/markdown-js)
+* adds Markdown preview with [markdown-js](https://github.com/evilstreak/markdown-js)
 * adds new type `markdown`
 * changes language code `gr` to `el`
 * adds localization for filter placeholder
-* adds `hu` translation by [Rodolffo](http://github.com/Rodolffo)
+* adds `hu` translation by [Rodolffo](https://github.com/Rodolffo)
 * updates to [jQuery.qrcode](http://larsjung.de/qrcode/) 0.2
 * updates to [jQuery.scrollpanel](http://larsjung.de/scrollpanel/) 0.1
 * updates to [modulejs](http://larsjung.de/modulejs/) 0.2
@@ -181,13 +182,13 @@ It profits from these great projects:
 * adds `index.php` to use h5ai in non-Apache environments
 * switches from [Datejs](http://www.datejs.com) to [Moment.js](http://momentjs.com)
 * adds [underscore.js](http://underscorejs.org)
-* fixes mousewheel problems, updates [jQuery.mousewheel](http://github.com/brandonaaron/jquery-mousewheel) to 3.0.6
+* fixes mousewheel problems, updates [jQuery.mousewheel](https://github.com/brandonaaron/jquery-mousewheel) to 3.0.6
 * updates `lv` translation
-* adds `ro` translation by [Jakob Cosoroabă](http://github.com/midday)
-* adds `ja` translation by [metasta](http://github.com/metasta)
-* adds `nb` translation by [Sindre Sorhus](http://github.com/sindresorhus)
-* adds `sr` translation by [vBm](http://github.com/vBm)
-* adds `gr` translation by [xhmikosr](http://github.com/xhmikosr)
+* adds `ro` translation by [Jakob Cosoroabă](https://github.com/midday)
+* adds `ja` translation by [metasta](https://github.com/metasta)
+* adds `nb` translation by [Sindre Sorhus](https://github.com/sindresorhus)
+* adds `sr` translation by [vBm](https://github.com/vBm)
+* adds `gr` translation by [xhmikosr](https://github.com/xhmikosr)
 
 
 ### v0.18 - *2012-02-24*
@@ -207,7 +208,7 @@ It profits from these great projects:
 * improves url hashes
 * updates year in `LICENSE.TXT`
 * updates es translation
-* adds `zh-tw` translation by [Yao Wei](http://github.com/medicalwei)
+* adds `zh-tw` translation by [Yao Wei](https://github.com/medicalwei)
 * updates `zh-cn` translation
 
 
@@ -243,7 +244,7 @@ It profits from these great projects:
 
 ### v0.15.2 - *2011-09-18*
 
-* adds `it` translation by [Salvo Gentile](http://github.com/SalvoGentile) and [Marco Patriarca](http://github.com/Fexys)
+* adds `it` translation by [Salvo Gentile](https://github.com/SalvoGentile) and [Marco Patriarca](https://github.com/Fexys)
 * switches build process from scripp to wepp
 
 
@@ -262,7 +263,7 @@ It profits from these great projects:
 ### v0.14.1 - *2011-09-01*
 
 * display meta information in bottom bar (icon view)
-* adds `zh-cn` translation by [Dongsheng Cai](http://github.com/dongsheng)
+* adds `zh-cn` translation by [Dongsheng Cai](https://github.com/dongsheng)
 * adds `pl` translation by Radosław Zając
 * adds `ru` translation by Богдан Илюхин
 
@@ -296,13 +297,13 @@ It profits from these great projects:
 * changes value of option `lang` from `undefined` to `null`
 * adds some new keys to `h5aiLangs`
 * adds browser caching rules for css and js
-* adds `pt` translation by [Jonnathan](http://github.com/jonnsl)
+* adds `pt` translation by [Jonnathan](https://github.com/jonnsl)
 * adds `bg` translation by George Andonov
 
 
 ### v0.12.3 - *2011-07-30*
 
-* adds `tr` translation by [Batuhan Icoz](http://github.com/batuhanicoz)
+* adds `tr` translation by [Batuhan Icoz](https://github.com/batuhanicoz)
 
 
 ### v0.12.2 - *2011-07-30*
@@ -338,9 +339,9 @@ It profits from these great projects:
 ### v0.10 - *2011-07-24*
 
 * fixes problems with XAMPP on Windows (see `dot.htaccess` comments for instructions)
-* fixes tree fade-in-fade-out effect for small displays ([issue #6](http://github.com/lrsjng/h5ai/issues/6))
-* adds custom scrollbar to tree ([issue #6](http://github.com/lrsjng/h5ai/issues/6))
-* fixes broken links caused by URI encoding/decoding ([issue #9](http://github.com/lrsjng/h5ai/issues/9))
+* fixes tree fade-in-fade-out effect for small displays ([issue #6](https://github.com/lrsjng/h5ai/issues/6))
+* adds custom scrollbar to tree ([issue #6](https://github.com/lrsjng/h5ai/issues/6))
+* fixes broken links caused by URI encoding/decoding ([issue #9](https://github.com/lrsjng/h5ai/issues/9))
 * adds "empty" to localization (hope Google Translate did a good job here)
 
 
@@ -350,8 +351,8 @@ It profits from these great projects:
 * fixes size of tree view (now there's a ugly scrollbar, hopefully will be fixed)
 * refactores js to improve performance and cleaned code
 * adds caching for folder status codes and content
-* adds `fr` translation by [Nicolas](http://github.com/Nicosmos)
-* adds `nl` translation by [Stefan de Konink](http://github.com/skinkie)
+* adds `fr` translation by [Nicolas](https://github.com/Nicosmos)
+* adds `nl` translation by [Stefan de Konink](https://github.com/skinkie)
 * adds `sv` translation by Oscar Carlsson
 
 
@@ -439,7 +440,7 @@ It profits from these great projects:
 ### v0.2.2 - *2011-06-16*
 
 * refactores a lot, adds some comments
-* includes fixes from [NumEricR](http://github.com/NumEricR)
+* includes fixes from [NumEricR](https://github.com/NumEricR)
 * adds top/bottom message support, only basicly styled
 
 

From 571089cda48e34e89e86681960aee6d61fd8789d Mon Sep 17 00:00:00 2001
From: Lars Jung <lrsjng@gmail.com>
Date: Wed, 4 Sep 2013 16:12:46 +0200
Subject: [PATCH 83/83] Prepares release.

---
 README.md                   |  2 +-
 package.json                |  2 +-
 src/_h5ai/conf/options.json | 10 +++++-----
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/README.md b/README.md
index 2b638b23..99aa3ffc 100644
--- a/README.md
+++ b/README.md
@@ -54,7 +54,7 @@ It profits from these great projects:
 **h5ai** uses [semantic versioning](http://semver.org/).
 
 
-### develop branch
+### v0.24.0 - *2013-09-04*
 
 * updates image and text preview
 * adds variable icon sizes
diff --git a/package.json b/package.json
index 028a1094..b2c56528 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "h5ai",
-  "version": "0.23.0+",
+  "version": "0.24.0",
   "description": "a modern HTTP web server index",
   "url": "http://larsjung.de/h5ai/",
   "author": "Lars Jung",
diff --git a/src/_h5ai/conf/options.json b/src/_h5ai/conf/options.json
index 7058782e..12f3f40c 100644
--- a/src/_h5ai/conf/options.json
+++ b/src/_h5ai/conf/options.json
@@ -65,7 +65,7 @@ Options
 	- interval: number, update interval in milliseconds, at least 1000
 	*/
 	"autorefresh": {
-		"enabled": true,
+		"enabled": false,
 		"interval": 5000
 	},
 
@@ -92,7 +92,7 @@ Options
 	Allow file deletion.
 	*/
 	"delete": {
-		"enabled": true
+		"enabled": false
 	},
 
 	/* [EXPERIMENTAL]
@@ -103,7 +103,7 @@ Options
 	- maxfilesize: number, file size is in MB
 	*/
 	"dropbox": {
-		"enabled": true,
+		"enabled": false,
 		"maxfiles": 10,
 		"maxfilesize": 1000
 	},
@@ -115,7 +115,7 @@ Options
 	- packageName: basename of the download package, null for current foldername
 	*/
 	"download": {
-		"enabled": true,
+		"enabled": false,
 		"type": "php-tar",
 		"packageName": null
 	},
@@ -137,7 +137,7 @@ Options
 	Calc the size of folders.
 	*/
 	"foldersize": {
-		"enabled": true
+		"enabled": false
 	},
 
 	/*