diff --git a/Yuba.php b/Yuba.php
index bfe8713..cbe019c 100755
--- a/Yuba.php
+++ b/Yuba.php
@@ -7,6 +7,7 @@ $version = file_get_contents(__DIR__."/version.txt");
ini_set('memory_limit', '10240M');
date_default_timezone_set("America/Los_Angeles");
+$mytime = time();
// Includes & Prefs
//////////////////////////////////////////
@@ -25,7 +26,7 @@ $p['phpbin'] = "/usr/bin/php";
require("functions.php");
require("filetypes.php");
-$wopt_steps = 10;
+$wopt_steps = 12;
$wopt_currstep = 1;
$parser = new plistParser();
@@ -74,6 +75,7 @@ if (is_writable($zpath)) { echo "Warning: source is writeable\n"; }
$bpath = chop($bdest,"/")."/".substr(crc32($zpath),0,3)."_".$blabel.".bundle";
if (!is_dir($bpath)) { mkdir($bpath); }
if (!is_dir($bpath."/thumbs")) { mkdir($bpath."/thumbs"); }
+if (!is_dir($bpath."/icons")) { mkdir($bpath."/icons"); }
if (!is_dir($bpath."/contents")) { mkdir($bpath."/contents"); }
// Metadata tools
@@ -86,6 +88,7 @@ $bin_qltool = __DIR__."/bin/qltool";
$bin_magick = __DIR__."/bin/magick";
$bin_sox = __DIR__."/bin/sox";
$bin_pngcrush = __DIR__."/bin/pngcrush";
+$bin_parallel = __DIR__."/bin/parallel";
$bin_vips = "vipsthumbnail";
// Logfile
@@ -387,17 +390,19 @@ $dbp = new PDO("sqlite:".$bpath."/pool.sqlite3");
$dbp->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
-$dbp->query("PRAGMA page_size = 4096");
-$dbp->query("PRAGMA cache_size = 10000");
-$dbp->query("PRAGMA locking_mode = EXCLUSIVE");
-$dbp->query("PRAGMA synchronous = NORMAL");
-$dbp->query("PRAGMA journal_mode = WAL");
+//$dbp->query("PRAGMA page_size = 4096");
+//$dbp->query("PRAGMA cache_size = 10000");
+//$dbp->query("PRAGMA locking_mode = EXCLUSIVE");
+//$dbp->query("PRAGMA synchronous = NORMAL");
+//$dbp->query("PRAGMA journal_mode = WAL");
$dbp->exec("CREATE TABLE IF NOT EXISTS md5 (fid TEXT, hash TEXT)");
$dbp->exec("CREATE TABLE IF NOT EXISTS exiftool (fid TEXT, tags TEXT)");
$dbp->exec("CREATE TABLE IF NOT EXISTS mediainfo (fid TEXT, info TEXT)");
$dbp->exec("CREATE TABLE IF NOT EXISTS thumbs (fid TEXT, created INTEGER, relative_path TEXT, width INTEGER, height INTEGER, tool TEXT)");
+$dbp->exec("CREATE TABLE IF NOT EXISTS icons (fid TEXT, hash TEXT, created INTEGER, relative_path TEXT, tool TEXT)");
$dbp->exec("CREATE TABLE IF NOT EXISTS contents (fid TEXT, created INTEGER, relative_path TEXT)");
+$dbp->exec("CREATE TABLE IF NOT EXISTS counter (time INTEGER, pass TEXT, count INTEGER)");
// Prescan
//////////////////////////////////////////
@@ -465,6 +470,9 @@ foreach ($files as $splFileInfo) {
}
+// Convert $fx to splFixedArray for performance (?)
+//$fx = SplFixedArray::fromArray($fx);
+
echo ProgressBar::finish();
// Thow permissions error
@@ -540,13 +548,55 @@ $wopt_currstep++;
//////////////////////////////////////////
echo ProgressBar::start(count($fx),"Searching for directory previews (".stepString().")");
-
foreach ($fx as $array) {
$fid = $array[0];
$pathname = $array[1];
if (in_array(basename($pathname),$p['p_files'])) {
$dpreview[dirname($pathname)] = $fid;
}
+ echo ProgressBar::next();
+ }
+echo ProgressBar::finish();
+
+// Icons Test
+//////////////////////////////////////////
+
+$p['icons'] = 1;
+
+if ($p['icons']) {
+
+ $stmt = $dbp->prepare("INSERT INTO counter VALUES (:time, :pass, :count)");
+ $stmt->BindValue(":time",$mytime);
+ $stmt->BindValue(":pass","icons");
+ $stmt->BindValue(":count",0);
+ $stmt->execute();
+
+ echo ProgressBar::start(count($fx),"Creating icon batch (".stepString().")");
+
+ if (!is_dir("/tmp/Yuba/")) { mkdir("/tmp/Yuba/"); }
+ if (!is_dir("/tmp/Yuba/".$mytime)) { mkdir("/tmp/Yuba/".$mytime); }
+ $batchfile = "/tmp/Yuba/".$mytime."/batch.sh";
+ $helper = realpath("helper.php");
+
+ foreach ($fx as $array) {
+ $fid = $array[0];
+ $pathname = $array[1];
+ $icmd = $p['phpbin']." ".$helper." icons ".$fid." ".escapeshellarg($pathname)." ".escapeshellarg($bpath)." ".$mytime;
+ msg($icmd);
+ $line[] = $icmd;
+ echo ProgressBar::next();
+ }
+ file_put_contents($batchfile,implode("\n", $line));
+
+ echo ProgressBar::finish();
+
+ echo ProgressBar::start(count($fx),"Running icon batch (".stepString().")");
+ echo ProgressBar::next();
+
+ passthru($bin_parallel." < ".$batchfile);
+
+ echo ProgressBar::finish();
+
}
// Thumbnails
@@ -825,6 +875,7 @@ $dbp->exec("CREATE INDEX IF NOT EXISTS exiftool_index ON exiftool (fid)");
$dbp->exec("CREATE INDEX IF NOT EXISTS md5_index ON md5 (fid)");
$dbp->exec("CREATE INDEX IF NOT EXISTS mediainfo_index ON mediainfo (fid)");
$dbp->exec("CREATE INDEX IF NOT EXISTS thumbs_index ON thumbs (fid)");
+$dbp->exec("CREATE INDEX IF NOT EXISTS icons_index ON icons (fid)");
// Spotlight
//////////////////////////////////////////
@@ -1090,7 +1141,7 @@ foreach ($files as $splFileInfo) {
} elseif ($type == "dir") {
- if (is_array($dpreview) && $dpreview[$pathname]) {
+ if (@is_array($dpreview) && $dpreview[$pathname]) {
$fetch_thumb = $dbp->query("SELECT * FROM thumbs WHERE fid='".$dpreview[$pathname]."'")->fetch();
if (@$fetch_thumb['relative_path']) {
$stmt->BindValue(":thumb_filename",$fetch_thumb['relative_path']);
@@ -1238,7 +1289,7 @@ while ($row_a = $loop->fetch()) {
$m['m']['SkimTrackCount'] = @count($m_base);
foreach (@$m_base as $track) {
if (!@$m['m']['SkimDims'] && @$track['Width'] && @$track['Height']) {
- $m['m']['SkimDims'] = sanitize($track['Width'],"i").$display_delimiter.sanitize($track['Height'],"i");
+ $m['m']['SkimDims'] = @sanitize($track['Width'],"i").$display_delimiter.@sanitize($track['Height'],"i");
}
}
@@ -1279,7 +1330,7 @@ while ($row_a = $loop->fetch()) {
// find a single value
list($kind,$item) = explode("^",$dindex);
if (@$m[$kind][$item]) {
- $stmt->BindValue(":".$name,sanitize($m[$kind][$item],$type));
+ $stmt->BindValue(":".$name,@sanitize($m[$kind][$item],$type));
$found = 1;
}
@@ -1322,7 +1373,8 @@ if ($p['postflight'] == 2 && $p['rsync_dest']) {
}
$done = "Finished ".$zpath." in ".$seconds." seconds";
-echo msg($done); notification($done);
+$done_m = "Memory usage: ".prettysize(memory_get_usage(true));
+echo msg($done."\n".$done_m); notification($done);
unset($dbo, $dbp, $files, $family, $fx);
diff --git a/functions.php b/functions.php
index 709bc8d..3bcee20 100755
--- a/functions.php
+++ b/functions.php
@@ -67,6 +67,11 @@ class ProgressBar {
// Functions
//////////////////////////////////////////
+function prettysize($size) {
+ $unit=array('b','kb','mb','gb','tb','pb');
+ return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i];
+ }
+
function alert($string, $title = "Warning") {
echo "\nALERT:".$title."|".$string."\n";
}
diff --git a/helper.php b/helper.php
new file mode 100755
index 0000000..8a3ac86
--- /dev/null
+++ b/helper.php
@@ -0,0 +1,64 @@
+
+
+// Yuba batch helper
+// //
+//////////////////////////////////////////
+
+$prefs_file = "/Users/".get_current_user()."/Library/Preferences/yuba_prefs.php";
+$p = unserialize(file_get_contents($prefs_file));
+
+$bin_mediainfo = __DIR__."/bin/mediainfo";
+$bin_exiftool = __DIR__."/bin/exiftool";
+$bin_ffmpeg = __DIR__."/bin/ffmpeg";
+$bin_qlthumb = __DIR__."/bin/ql-thumbnail";
+$bin_qltool = __DIR__."/bin/qltool";
+$bin_magick = __DIR__."/bin/magick";
+$bin_sox = __DIR__."/bin/sox";
+
+$mode = $argv[1];
+$fid = $argv[2];
+$pathname = $argv[3];
+$bpath = $argv[4];
+$mytime = $argv[5];
+
+$tfile = "/tmp/Yuba/".$mytime."/".$fid.".png";
+
+$shellpath = escapeshellarg($pathname);
+
+$dbp = new PDO("sqlite:".$bpath."/pool.sqlite3");
+$dbp->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+$dbp->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
+
+if (@!$dbp->query("SELECT EXISTS(SELECT 1 FROM icons WHERE fid='".$fid."')")->fetch()[0]) {
+
+ $stmt = $dbp->prepare("INSERT INTO icons VALUES (:fid, :hash, :created, :relative_path, :tool)");
+
+ $cmd = $bin_qltool." di ".$shellpath." ".$p['thumb_size']." ".$p['thumb_size']." | base64 --decode | ".$bin_magick." convert - -scale 50% -strip -define png:compression-level=9 ".$tfile;
+ shell_exec($cmd);
+
+ $stmt->BindValue(":fid",$fid);
+ if (@filesize($tfile)) {
+ $hash = md5_file($tfile);
+ $stmt->BindValue(":hash",$hash);
+ if ($row = @$dbp->query("SELECT * FROM icons WHERE hash='".$hash."'")->fetchAll()[0]) {
+ $stmt->BindValue(":created",$row['created']);
+ $stmt->BindValue(":relative_path",$row['relative_path']);
+ $stmt->BindValue(":tool",$row['tool']);
+ } else {
+ $dfile = $bpath."/icons/".substr($hash, 0, 2)."/".$hash.".png";
+ if (!is_dir(dirname($dfile))) { mkdir(dirname($dfile)); }
+ rename($tfile,$dfile);
+ $stmt->BindValue(":created",time());
+ $stmt->BindValue(":relative_path",substr($dfile,strlen($bpath)));
+ $stmt->BindValue(":tool","qltool");
+ }
+ }
+ $stmt->execute();
+
+ }
+
+$stmt = $dbp->prepare("UPDATE counter SET count = count + 1 WHERE time='".$mytime."'");
+$stmt->execute();
+echo "\nPROGRESS: ".$dbp->query("SELECT count FROM counter WHERE time='".$mytime."'")->fetch()['count'];
+
+?>
\ No newline at end of file
diff --git a/utils/polyfill.php b/utils/polyfill.php
index be86fd0..625821e 100755
--- a/utils/polyfill.php
+++ b/utils/polyfill.php
@@ -4,8 +4,16 @@
// Polyfill
// Fill a volume with many small files
+$dmg = "/Users/".get_current_user()."/Desktop/Polyfill.sparsebundle";
+if (file_exists($dmg)) {
+ exec("trash ".$dmg."; umount -f /Volumes/Polyfill");
+ }
+exec("hdiutil create -size 5g -fs HFS+ -type SPARSEBUNDLE -volname Polyfill -attach ".$dmg);
+
$base = "/Volumes/Polyfill";
-$total = 10000;
+//$total = 10000;
+$total = 2000;
+$sample_files = glob("sample_files/*.*");
for ($i = 0; $i < $total; $i++) {
@@ -35,8 +43,13 @@ for ($i = 0; $i < $total; $i++) {
}
echo $dest."\n";
- copy("test.jpg",$dest.".jpg");
+
+ $use = $sample_files[rand(0,count($sample_files))];
+ $ext = pathinfo($use, PATHINFO_EXTENSION);
+ copy($use,$dest.".".$ext);
//file_put_contents($dest,serialize($levels));
}
+exec("open /Volumes/Polyfill");
+
?>
\ No newline at end of file
diff --git a/sample_files/alert.js b/utils/sample_files/alert.js
similarity index 100%
rename from sample_files/alert.js
rename to utils/sample_files/alert.js
diff --git a/sample_files/animated.gif b/utils/sample_files/animated.gif
similarity index 100%
rename from sample_files/animated.gif
rename to utils/sample_files/animated.gif
diff --git a/sample_files/apple-touch-icon-114-precomposed.png b/utils/sample_files/apple-touch-icon-114-precomposed.png
similarity index 100%
rename from sample_files/apple-touch-icon-114-precomposed.png
rename to utils/sample_files/apple-touch-icon-114-precomposed.png
diff --git a/sample_files/apple-touch-icon-57-precomposed.png b/utils/sample_files/apple-touch-icon-57-precomposed.png
similarity index 100%
rename from sample_files/apple-touch-icon-57-precomposed.png
rename to utils/sample_files/apple-touch-icon-57-precomposed.png
diff --git a/sample_files/apple-touch-icon-72-precomposed.png b/utils/sample_files/apple-touch-icon-72-precomposed.png
similarity index 100%
rename from sample_files/apple-touch-icon-72-precomposed.png
rename to utils/sample_files/apple-touch-icon-72-precomposed.png
diff --git a/sample_files/favicon.ico b/utils/sample_files/favicon.ico
similarity index 100%
rename from sample_files/favicon.ico
rename to utils/sample_files/favicon.ico
diff --git a/sample_files/geojson.json b/utils/sample_files/geojson.json
similarity index 100%
rename from sample_files/geojson.json
rename to utils/sample_files/geojson.json
diff --git a/sample_files/har.json b/utils/sample_files/har.json
similarity index 100%
rename from sample_files/har.json
rename to utils/sample_files/har.json
diff --git a/sample_files/htaccess.txt b/utils/sample_files/htaccess.txt
similarity index 100%
rename from sample_files/htaccess.txt
rename to utils/sample_files/htaccess.txt
diff --git a/sample_files/humans.txt b/utils/sample_files/humans.txt
similarity index 100%
rename from sample_files/humans.txt
rename to utils/sample_files/humans.txt
diff --git a/sample_files/image.svg b/utils/sample_files/image.svg
similarity index 100%
rename from sample_files/image.svg
rename to utils/sample_files/image.svg
diff --git a/sample_files/kosovo.svg b/utils/sample_files/kosovo.svg
similarity index 100%
rename from sample_files/kosovo.svg
rename to utils/sample_files/kosovo.svg
diff --git a/utils/sample_files/large.mp4 b/utils/sample_files/large.mp4
new file mode 100644
index 0000000..2f84576
Binary files /dev/null and b/utils/sample_files/large.mp4 differ
diff --git a/utils/sample_files/mlk.flac b/utils/sample_files/mlk.flac
new file mode 100644
index 0000000..0a3a811
Binary files /dev/null and b/utils/sample_files/mlk.flac differ
diff --git a/sample_files/placemark.gfs b/utils/sample_files/placemark.gfs
similarity index 100%
rename from sample_files/placemark.gfs
rename to utils/sample_files/placemark.gfs
diff --git a/sample_files/placemark.gml b/utils/sample_files/placemark.gml
similarity index 100%
rename from sample_files/placemark.gml
rename to utils/sample_files/placemark.gml
diff --git a/sample_files/placemark.kml b/utils/sample_files/placemark.kml
similarity index 100%
rename from sample_files/placemark.kml
rename to utils/sample_files/placemark.kml
diff --git a/sample_files/progressive.jpg b/utils/sample_files/progressive.jpg
similarity index 100%
rename from sample_files/progressive.jpg
rename to utils/sample_files/progressive.jpg
diff --git a/sample_files/reset.css b/utils/sample_files/reset.css
similarity index 100%
rename from sample_files/reset.css
rename to utils/sample_files/reset.css
diff --git a/sample_files/robots.txt b/utils/sample_files/robots.txt
similarity index 100%
rename from sample_files/robots.txt
rename to utils/sample_files/robots.txt
diff --git a/sample_files/rss.xml.rss b/utils/sample_files/rss.xml.rss
similarity index 100%
rename from sample_files/rss.xml.rss
rename to utils/sample_files/rss.xml.rss
diff --git a/sample_files/sample.aac b/utils/sample_files/sample.aac
similarity index 100%
rename from sample_files/sample.aac
rename to utils/sample_files/sample.aac
diff --git a/sample_files/sample.ac3 b/utils/sample_files/sample.ac3
similarity index 100%
rename from sample_files/sample.ac3
rename to utils/sample_files/sample.ac3
diff --git a/sample_files/sample.ai.ps b/utils/sample_files/sample.ai.ps
similarity index 100%
rename from sample_files/sample.ai.ps
rename to utils/sample_files/sample.ai.ps
diff --git a/sample_files/sample.aiff b/utils/sample_files/sample.aiff
similarity index 100%
rename from sample_files/sample.aiff
rename to utils/sample_files/sample.aiff
diff --git a/sample_files/sample.amr b/utils/sample_files/sample.amr
similarity index 100%
rename from sample_files/sample.amr
rename to utils/sample_files/sample.amr
diff --git a/sample_files/sample.au b/utils/sample_files/sample.au
similarity index 100%
rename from sample_files/sample.au
rename to utils/sample_files/sample.au
diff --git a/sample_files/sample.avi b/utils/sample_files/sample.avi
similarity index 100%
rename from sample_files/sample.avi
rename to utils/sample_files/sample.avi
diff --git a/sample_files/sample.dat b/utils/sample_files/sample.dat
similarity index 100%
rename from sample_files/sample.dat
rename to utils/sample_files/sample.dat
diff --git a/sample_files/sample.doc b/utils/sample_files/sample.doc
similarity index 100%
rename from sample_files/sample.doc
rename to utils/sample_files/sample.doc
diff --git a/sample_files/sample.docx b/utils/sample_files/sample.docx
similarity index 100%
rename from sample_files/sample.docx
rename to utils/sample_files/sample.docx
diff --git a/sample_files/sample.epub b/utils/sample_files/sample.epub
similarity index 100%
rename from sample_files/sample.epub
rename to utils/sample_files/sample.epub
diff --git a/sample_files/sample.flac b/utils/sample_files/sample.flac
similarity index 100%
rename from sample_files/sample.flac
rename to utils/sample_files/sample.flac
diff --git a/sample_files/sample.flv b/utils/sample_files/sample.flv
similarity index 100%
rename from sample_files/sample.flv
rename to utils/sample_files/sample.flv
diff --git a/sample_files/sample.gif b/utils/sample_files/sample.gif
similarity index 100%
rename from sample_files/sample.gif
rename to utils/sample_files/sample.gif
diff --git a/sample_files/sample.html b/utils/sample_files/sample.html
similarity index 100%
rename from sample_files/sample.html
rename to utils/sample_files/sample.html
diff --git a/sample_files/sample.jpg b/utils/sample_files/sample.jpg
similarity index 100%
rename from sample_files/sample.jpg
rename to utils/sample_files/sample.jpg
diff --git a/sample_files/sample.json b/utils/sample_files/sample.json
similarity index 100%
rename from sample_files/sample.json
rename to utils/sample_files/sample.json
diff --git a/sample_files/sample.m4a.mp3 b/utils/sample_files/sample.m4a.mp3
similarity index 100%
rename from sample_files/sample.m4a.mp3
rename to utils/sample_files/sample.m4a.mp3
diff --git a/sample_files/sample.mid b/utils/sample_files/sample.mid
similarity index 100%
rename from sample_files/sample.mid
rename to utils/sample_files/sample.mid
diff --git a/sample_files/sample.mka b/utils/sample_files/sample.mka
similarity index 100%
rename from sample_files/sample.mka
rename to utils/sample_files/sample.mka
diff --git a/sample_files/sample.mkv b/utils/sample_files/sample.mkv
similarity index 100%
rename from sample_files/sample.mkv
rename to utils/sample_files/sample.mkv
diff --git a/sample_files/sample.mov b/utils/sample_files/sample.mov
similarity index 100%
rename from sample_files/sample.mov
rename to utils/sample_files/sample.mov
diff --git a/sample_files/sample.mp3 b/utils/sample_files/sample.mp3
similarity index 100%
rename from sample_files/sample.mp3
rename to utils/sample_files/sample.mp3
diff --git a/sample_files/sample.mp4 b/utils/sample_files/sample.mp4
similarity index 100%
rename from sample_files/sample.mp4
rename to utils/sample_files/sample.mp4
diff --git a/sample_files/sample.mpg b/utils/sample_files/sample.mpg
similarity index 100%
rename from sample_files/sample.mpg
rename to utils/sample_files/sample.mpg
diff --git a/sample_files/sample.ogg b/utils/sample_files/sample.ogg
similarity index 100%
rename from sample_files/sample.ogg
rename to utils/sample_files/sample.ogg
diff --git a/sample_files/sample.otf b/utils/sample_files/sample.otf
similarity index 100%
rename from sample_files/sample.otf
rename to utils/sample_files/sample.otf
diff --git a/sample_files/sample.pdf b/utils/sample_files/sample.pdf
similarity index 100%
rename from sample_files/sample.pdf
rename to utils/sample_files/sample.pdf
diff --git a/sample_files/sample.phps b/utils/sample_files/sample.phps
similarity index 100%
rename from sample_files/sample.phps
rename to utils/sample_files/sample.phps
diff --git a/sample_files/sample.png b/utils/sample_files/sample.png
similarity index 100%
rename from sample_files/sample.png
rename to utils/sample_files/sample.png
diff --git a/sample_files/sample.ppt b/utils/sample_files/sample.ppt
similarity index 100%
rename from sample_files/sample.ppt
rename to utils/sample_files/sample.ppt
diff --git a/sample_files/sample.pptx b/utils/sample_files/sample.pptx
similarity index 100%
rename from sample_files/sample.pptx
rename to utils/sample_files/sample.pptx
diff --git a/sample_files/sample.ra b/utils/sample_files/sample.ra
similarity index 100%
rename from sample_files/sample.ra
rename to utils/sample_files/sample.ra
diff --git a/sample_files/sample.rar b/utils/sample_files/sample.rar
similarity index 100%
rename from sample_files/sample.rar
rename to utils/sample_files/sample.rar
diff --git a/sample_files/sample.rtfd/TXT.rtf b/utils/sample_files/sample.rtfd/TXT.rtf
similarity index 100%
rename from sample_files/sample.rtfd/TXT.rtf
rename to utils/sample_files/sample.rtfd/TXT.rtf
diff --git a/sample_files/sample.rtfd/sample.jpg b/utils/sample_files/sample.rtfd/sample.jpg
similarity index 100%
rename from sample_files/sample.rtfd/sample.jpg
rename to utils/sample_files/sample.rtfd/sample.jpg
diff --git a/sample_files/sample.swf b/utils/sample_files/sample.swf
similarity index 100%
rename from sample_files/sample.swf
rename to utils/sample_files/sample.swf
diff --git a/sample_files/sample.tar b/utils/sample_files/sample.tar
similarity index 100%
rename from sample_files/sample.tar
rename to utils/sample_files/sample.tar
diff --git a/sample_files/sample.tiff b/utils/sample_files/sample.tiff
similarity index 100%
rename from sample_files/sample.tiff
rename to utils/sample_files/sample.tiff
diff --git a/sample_files/sample.ttf b/utils/sample_files/sample.ttf
similarity index 100%
rename from sample_files/sample.ttf
rename to utils/sample_files/sample.ttf
diff --git a/sample_files/sample.txt b/utils/sample_files/sample.txt
similarity index 100%
rename from sample_files/sample.txt
rename to utils/sample_files/sample.txt
diff --git a/sample_files/sample.voc b/utils/sample_files/sample.voc
similarity index 100%
rename from sample_files/sample.voc
rename to utils/sample_files/sample.voc
diff --git a/sample_files/sample.wav b/utils/sample_files/sample.wav
similarity index 100%
rename from sample_files/sample.wav
rename to utils/sample_files/sample.wav
diff --git a/sample_files/sample.webm b/utils/sample_files/sample.webm
similarity index 100%
rename from sample_files/sample.webm
rename to utils/sample_files/sample.webm
diff --git a/sample_files/sample.webp b/utils/sample_files/sample.webp
similarity index 100%
rename from sample_files/sample.webp
rename to utils/sample_files/sample.webp
diff --git a/sample_files/sample.wma b/utils/sample_files/sample.wma
similarity index 100%
rename from sample_files/sample.wma
rename to utils/sample_files/sample.wma
diff --git a/sample_files/sample.wmv b/utils/sample_files/sample.wmv
similarity index 100%
rename from sample_files/sample.wmv
rename to utils/sample_files/sample.wmv
diff --git a/sample_files/sample.woff b/utils/sample_files/sample.woff
similarity index 100%
rename from sample_files/sample.woff
rename to utils/sample_files/sample.woff
diff --git a/sample_files/sample.xml b/utils/sample_files/sample.xml
similarity index 100%
rename from sample_files/sample.xml
rename to utils/sample_files/sample.xml
diff --git a/sample_files/sample.xsd b/utils/sample_files/sample.xsd
similarity index 100%
rename from sample_files/sample.xsd
rename to utils/sample_files/sample.xsd
diff --git a/sample_files/sample.xsl.html b/utils/sample_files/sample.xsl.html
similarity index 100%
rename from sample_files/sample.xsl.html
rename to utils/sample_files/sample.xsl.html
diff --git a/sample_files/sample.xslt.html b/utils/sample_files/sample.xslt.html
similarity index 100%
rename from sample_files/sample.xslt.html
rename to utils/sample_files/sample.xslt.html
diff --git a/sample_files/sample.zip b/utils/sample_files/sample.zip
similarity index 100%
rename from sample_files/sample.zip
rename to utils/sample_files/sample.zip
diff --git a/utils/sample_files/test.ai b/utils/sample_files/test.ai
new file mode 100644
index 0000000..7fdba1c
--- /dev/null
+++ b/utils/sample_files/test.ai
@@ -0,0 +1,6256 @@
+%PDF-1.5
%
+1 0 obj
<>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<>stream
+
+
+
+
+ application/pdf
+
+
+ test
+
+
+ 2019-06-10T16:10:35-07:00
+ 2019-06-10T16:10:35-07:00
+ 2019-06-10T16:10:35-07:00
+ Adobe Illustrator CC 22.0 (Macintosh)
+
+
+
+ 248
+ 256
+ JPEG
+ /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAD4AwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FUNY6np9/G0llcx
3CoeLmNg3FhsVYDoduhyUokc0kUicih2KuxV2KuxV2KqV3d2tnbSXN1KkFvEOUkshCqo8SThAJNB
QHknnT86Wb1LHyyOK7q+pONz/wAYkPT/AFm+7vmfh0nWTfDF3su/KQ3Enkq3u7iRpZruaeaSV2LM
x9QpUk7/ALGY+q+umGXmzLMdrdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf
Onn6O/8ALvn7UZLC4ktXlk+sxSwsYzScc2HwnpzJGbfBU8Yty4bxTvy9+eGt2nGHWYE1CEbGdKRT
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
NMlhyQaZP//Z
+
+
+
+ uuid:a02f86cf-59c8-764a-af09-5de085a33276
+ xmp.did:bb091e9d-5abf-4fc8-8dd6-8b13f1165161
+ uuid:5D20892493BFDB11914A8590D31508C8
+ proof:pdf
+
+ uuid:d1c078a0-2746-42b2-b0d1-25aedff8fb1e
+ xmp.did:1b6690ed-28a8-c141-9479-b6a9cf6be651
+ uuid:5D20892493BFDB11914A8590D31508C8
+ proof:pdf
+
+
+
+
+ saved
+ xmp.iid:bb091e9d-5abf-4fc8-8dd6-8b13f1165161
+ 2019-06-10T16:10:34-07:00
+ Adobe Illustrator CC 22.0 (Macintosh)
+ /
+
+
+
+ Document
+ Print
+ False
+ False
+ 1
+
+ 8.500000
+ 11.000000
+ Inches
+
+
+
+ Cyan
+ Magenta
+ Yellow
+ Black
+
+
+
+
+
+ Default Swatch Group
+ 0
+
+
+
+ White
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 0.000000
+
+
+ Black
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 100.000000
+
+
+ CMYK Red
+ CMYK
+ PROCESS
+ 0.000000
+ 100.000000
+ 100.000000
+ 0.000000
+
+
+ CMYK Yellow
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 100.000000
+ 0.000000
+
+
+ CMYK Green
+ CMYK
+ PROCESS
+ 100.000000
+ 0.000000
+ 100.000000
+ 0.000000
+
+
+ CMYK Cyan
+ CMYK
+ PROCESS
+ 100.000000
+ 0.000000
+ 0.000000
+ 0.000000
+
+
+ CMYK Blue
+ CMYK
+ PROCESS
+ 100.000000
+ 100.000000
+ 0.000000
+ 0.000000
+
+
+ CMYK Magenta
+ CMYK
+ PROCESS
+ 0.000000
+ 100.000000
+ 0.000000
+ 0.000000
+
+
+ C=15 M=100 Y=90 K=10
+ CMYK
+ PROCESS
+ 15.000000
+ 100.000000
+ 90.000000
+ 10.000000
+
+
+ C=0 M=90 Y=85 K=0
+ CMYK
+ PROCESS
+ 0.000000
+ 90.000000
+ 85.000000
+ 0.000000
+
+
+ C=0 M=80 Y=95 K=0
+ CMYK
+ PROCESS
+ 0.000000
+ 80.000000
+ 95.000000
+ 0.000000
+
+
+ C=0 M=50 Y=100 K=0
+ CMYK
+ PROCESS
+ 0.000000
+ 50.000000
+ 100.000000
+ 0.000000
+
+
+ C=0 M=35 Y=85 K=0
+ CMYK
+ PROCESS
+ 0.000000
+ 35.000000
+ 85.000000
+ 0.000000
+
+
+ C=5 M=0 Y=90 K=0
+ CMYK
+ PROCESS
+ 5.000000
+ 0.000000
+ 90.000000
+ 0.000000
+
+
+ C=20 M=0 Y=100 K=0
+ CMYK
+ PROCESS
+ 20.000000
+ 0.000000
+ 100.000000
+ 0.000000
+
+
+ C=50 M=0 Y=100 K=0
+ CMYK
+ PROCESS
+ 50.000000
+ 0.000000
+ 100.000000
+ 0.000000
+
+
+ C=75 M=0 Y=100 K=0
+ CMYK
+ PROCESS
+ 75.000000
+ 0.000000
+ 100.000000
+ 0.000000
+
+
+ C=85 M=10 Y=100 K=10
+ CMYK
+ PROCESS
+ 85.000000
+ 10.000000
+ 100.000000
+ 10.000000
+
+
+ C=90 M=30 Y=95 K=30
+ CMYK
+ PROCESS
+ 90.000000
+ 30.000000
+ 95.000000
+ 30.000000
+
+
+ C=75 M=0 Y=75 K=0
+ CMYK
+ PROCESS
+ 75.000000
+ 0.000000
+ 75.000000
+ 0.000000
+
+
+ C=80 M=10 Y=45 K=0
+ CMYK
+ PROCESS
+ 80.000000
+ 10.000000
+ 45.000000
+ 0.000000
+
+
+ C=70 M=15 Y=0 K=0
+ CMYK
+ PROCESS
+ 70.000000
+ 15.000000
+ 0.000000
+ 0.000000
+
+
+ C=85 M=50 Y=0 K=0
+ CMYK
+ PROCESS
+ 85.000000
+ 50.000000
+ 0.000000
+ 0.000000
+
+
+ C=100 M=95 Y=5 K=0
+ CMYK
+ PROCESS
+ 100.000000
+ 95.000000
+ 5.000000
+ 0.000000
+
+
+ C=100 M=100 Y=25 K=25
+ CMYK
+ PROCESS
+ 100.000000
+ 100.000000
+ 25.000000
+ 25.000000
+
+
+ C=75 M=100 Y=0 K=0
+ CMYK
+ PROCESS
+ 75.000000
+ 100.000000
+ 0.000000
+ 0.000000
+
+
+ C=50 M=100 Y=0 K=0
+ CMYK
+ PROCESS
+ 50.000000
+ 100.000000
+ 0.000000
+ 0.000000
+
+
+ C=35 M=100 Y=35 K=10
+ CMYK
+ PROCESS
+ 35.000000
+ 100.000000
+ 35.000000
+ 10.000000
+
+
+ C=10 M=100 Y=50 K=0
+ CMYK
+ PROCESS
+ 10.000000
+ 100.000000
+ 50.000000
+ 0.000000
+
+
+ C=0 M=95 Y=20 K=0
+ CMYK
+ PROCESS
+ 0.000000
+ 95.000000
+ 20.000000
+ 0.000000
+
+
+ C=25 M=25 Y=40 K=0
+ CMYK
+ PROCESS
+ 25.000000
+ 25.000000
+ 40.000000
+ 0.000000
+
+
+ C=40 M=45 Y=50 K=5
+ CMYK
+ PROCESS
+ 40.000000
+ 45.000000
+ 50.000000
+ 5.000000
+
+
+ C=50 M=50 Y=60 K=25
+ CMYK
+ PROCESS
+ 50.000000
+ 50.000000
+ 60.000000
+ 25.000000
+
+
+ C=55 M=60 Y=65 K=40
+ CMYK
+ PROCESS
+ 55.000000
+ 60.000000
+ 65.000000
+ 40.000000
+
+
+ C=25 M=40 Y=65 K=0
+ CMYK
+ PROCESS
+ 25.000000
+ 40.000000
+ 65.000000
+ 0.000000
+
+
+ C=30 M=50 Y=75 K=10
+ CMYK
+ PROCESS
+ 30.000000
+ 50.000000
+ 75.000000
+ 10.000000
+
+
+ C=35 M=60 Y=80 K=25
+ CMYK
+ PROCESS
+ 35.000000
+ 60.000000
+ 80.000000
+ 25.000000
+
+
+ C=40 M=65 Y=90 K=35
+ CMYK
+ PROCESS
+ 40.000000
+ 65.000000
+ 90.000000
+ 35.000000
+
+
+ C=40 M=70 Y=100 K=50
+ CMYK
+ PROCESS
+ 40.000000
+ 70.000000
+ 100.000000
+ 50.000000
+
+
+ C=50 M=70 Y=80 K=70
+ CMYK
+ PROCESS
+ 50.000000
+ 70.000000
+ 80.000000
+ 70.000000
+
+
+
+
+
+ Grays
+ 1
+
+
+
+ C=0 M=0 Y=0 K=100
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 100.000000
+
+
+ C=0 M=0 Y=0 K=90
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 89.999400
+
+
+ C=0 M=0 Y=0 K=80
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 79.998800
+
+
+ C=0 M=0 Y=0 K=70
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 69.999700
+
+
+ C=0 M=0 Y=0 K=60
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 59.999100
+
+
+ C=0 M=0 Y=0 K=50
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 50.000000
+
+
+ C=0 M=0 Y=0 K=40
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 39.999400
+
+
+ C=0 M=0 Y=0 K=30
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 29.998800
+
+
+ C=0 M=0 Y=0 K=20
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 19.999700
+
+
+ C=0 M=0 Y=0 K=10
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 9.999100
+
+
+ C=0 M=0 Y=0 K=5
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 4.998800
+
+
+
+
+
+ Brights
+ 1
+
+
+
+ C=0 M=100 Y=100 K=0
+ CMYK
+ PROCESS
+ 0.000000
+ 100.000000
+ 100.000000
+ 0.000000
+
+
+ C=0 M=75 Y=100 K=0
+ CMYK
+ PROCESS
+ 0.000000
+ 75.000000
+ 100.000000
+ 0.000000
+
+
+ C=0 M=10 Y=95 K=0
+ CMYK
+ PROCESS
+ 0.000000
+ 10.000000
+ 95.000000
+ 0.000000
+
+
+ C=85 M=10 Y=100 K=0
+ CMYK
+ PROCESS
+ 85.000000
+ 10.000000
+ 100.000000
+ 0.000000
+
+
+ C=100 M=90 Y=0 K=0
+ CMYK
+ PROCESS
+ 100.000000
+ 90.000000
+ 0.000000
+ 0.000000
+
+
+ C=60 M=90 Y=0 K=0
+ CMYK
+ PROCESS
+ 60.000000
+ 90.000000
+ 0.003100
+ 0.003100
+
+
+
+
+
+
+ Adobe PDF library 15.00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
endstream
endobj
3 0 obj
<>
endobj
7 0 obj
<>/Resources<>/ExtGState<>/Properties<>/Shading<>>>/Thumb 14 0 R/TrimBox[0.0 0.0 612.0 792.0]/Type/Page>>
endobj
8 0 obj
<>stream
+HLTA7+戔HWO `1H?UtK]dU_w}7]S5JFv]K][&_^1KV;]jevqLJr{4y}xB&\\N>&ǮD?o;x>ajY%^+8c*9Mx(Woarմq=kh[ƌ}j(^秾t\(qVKl`72,l- ] 2{H鴉:) uyNv'a:F `|#i`5 `Y dZ{ltza[Rv\%;١Hߝӛݝ=Lˆ:ÂV$`'9H
G胂(5Z crx qo|:T:@F6f?y!' FйvWi&s"K/
v!%K#/~uI9<;'+x߹~
1VH:~Z
+o:R_1{g
ݼ6)8,d:;3Ea뺂K&
++}HSg7JͦT\vdz9i+d_ϯ@W.(y}eLɣى~+.Ԕwh:3
0L8/@rj_:5>Q5q.
>
iKA/VF8BO
endstream
endobj
14 0 obj
<>stream
+8;Z]!4a*VT&;3'fA=UZe,bA\1JHHU+$V,)Va[#R]q70^
+b&$\JjcJ\N9$6\E>,,is)Mn'U9TWnR7cs=Op:.&5Q`:
+N*<"PHFedKOqX4e3&XpE==pROFG!Rg<%I6CSj?*ej8usr62
+pRG26P1`a`B1mYbeOk5M]G:>q!m<\dn@cQ551KuTEMq329<;7l>gMGE)n;&/,:gdc
+oIt9e:p#;,\@n"TnePLqOpmOeR$c\lR@3jaa*lbE
+QRO_ZJjFj&b"T,pMWTg49e;Ul!me8D>dKk6m7bLboq(>m0GjWj0\6;U^E1IM4*)h_
+fC&=#4dVTrV.fU<.Ap4$bG`6lR:Q^*O[X#E-Rqbim3?>Q_JD(cHVLUnf>DX&@]7]Z
+Ah$u!A(BXF_]F!LE$,`@QoA&_Oo&p9r`V6gV#[`PXBIkhmj"Di=>N4;JQcA7]!(6LoK7DUrH0N3iZc]KI8A],aD<4=/eojJ*EUK=D:>(3X6)()C%[u]
+Y(LO=q9/d2._i?;$h4PIq28&3AUZWln8FuP?Tp1so1O/)P.uTm,P$Nfl\k?"Et:F+
+UmIRfr:4RJreg7S=-=8!reg9iB36e$Y5KZl04>qKq'GX!/AGAu0(Q'Z?W['Rk-&NK
+[JR"l?bQG"kLZoPIZD0la%mfW"ou7Z/@#~>
endstream
endobj
15 0 obj
[/Indexed/DeviceRGB 255 16 0 R]
endobj
16 0 obj
<>stream
+8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
+b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
+E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn
+6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O(
+l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~>
endstream
endobj
13 0 obj
<>
endobj
10 0 obj
[/DeviceN[/Cyan/Magenta/Yellow]11 0 R 18 0 R 19 0 R]
endobj
17 0 obj
<>
endobj
20 0 obj
<>
endobj
11 0 obj
[/ICCBased 21 0 R]
endobj
18 0 obj
<>stream
+{2 index 1.000000 cvr exch sub 4 1 roll 1 index 1.000000 cvr exch sub
+4 1 roll 0 index 1.000000 cvr exch sub 4 1 roll 1.000000 4 1
+roll 7 -1 roll 1.000000 cvr exch sub 7 1 roll 6 -1 roll 1.000000
+cvr exch sub 6 1 roll 5 -1 roll 1.000000 cvr exch sub 5 1
+roll 4 -1 roll 1.000000 cvr exch sub 4 1 roll pop pop pop }
endstream
endobj
19 0 obj
<>
endobj
22 0 obj
<>
endobj
21 0 obj
<>stream
+HuTKtKKJI,t(4K%ҹH4J#Ғ(H
+wqyy~3̙g<3 Y9El
+ @ ]!O-@ \+BVKK
:OX~WCaiHKL 0qY `5 ck
+ X] x=8 X Ŀ>.f#aPn D^{y8 dpH st:Yc xc
IV?S!:_9[YbQP~+rA
+ShHht^
'0߅kYXY9Yqqpl'WzEE$%D>,^|t*K)%/`\ҫ:&D[7dplDa5|mb4,yy{e5
3⚅,t+whlA
mk
+xYUH&%Ȥ
+qO'Mz3KT@v[NUnn^\o]abTrtlmE]e~U+jאZ:zaqi5};CS[\_ۆwCaQ1;>L$Lz}4:%8M7l̎Χ/}XT^]X>\Ym[n!ycskkƶʷ;v{pIs0Xݯ3s&$WWW*)!$$%!e$cHNOAKIMEqƕ;KLw@YX;ؚ8^+DspfKOTCPpJ%D=++O%$*8IZ\Z^UK_wL"dx]} >9=;s_G8/̹N!Gz[<=2|B}PQzlH0Wc(Een|Pds::5&89yFT"od䳔i/ZK^&gd:fgQl
kJХeJ*+篍kj5U[ZUh0|em6]B@`PpH?QM1Msψ*iϛ.Z[JYZ)X-]RѺپw?@?5 ǖ'vNg
+W3gLC#u!MMMEvAms˔FVNA̝GLwA̬,llؿsݛnͽ+!B²" 'R&k?3?4+:6oT\ұڿ6VʝoF?LT;:>::>:;eqvx^sawݥʕ'_ EFO\DKLtAnFF)F|ԭ6\`@z?m+F;LwiA hy͖)Mgw~_
@ZH_XA,"F)%/*9aZ:Q,\B^_AU2
+*'[jo5[uR1uh`fm$1xJgBdrltlyyEe$feg-g#`dGbwj0TOC9; ܨݿxz6zx8IP=A!.aAxۑ ϊ}bG-ޒēx`G/Ԝq_O?0"۬խЮ˯ǰı²µŶȷӹۺ 0@RfzƏǦȾ*GcЀџҿ'LsٛFsM6+1MZ:{ T?~ò~i~L}~cbA~Dad~ty~W~O>~\/~|~`C x}%H}1X}%z}K}
{N}<_~7A~-ψ||Dz|+E|[s|z}^}wO@}-~ċ {Gu{Dz{]Ĭ{f{Zx|[]|ϕM?}R<}Ǝz]YzHħz|z={LNw{\|=>|v|ېI8z/r
z;bz'sMzd6zɬqv{D[{0>|;|yyaIy?yazYvzݮ[{^=c{ФI{R*y߄yfUy`VyyuKzZi{<{z%zȎ~+~ }͇}W0}3}HtЄ}Zk}=~zɇ }!~Єd*s}Y<9wpSwuuVrUW؈|;,뇔{RsѲ;:8q)PCV:4.8Ȅ2?UpVu9ScbփR.ՁNn U388A/ͬδz6߆өn1T\e7݀tXT)$̯̕6;eCʷˆ imw3SƀV7M
+\lGNػځNāa5tNzlߴS<H6*