diff --git a/.gitattributes b/.gitattributes
index 1012087d4713eeeed96628ad8638ad419115f81a..6beb1fb7a7b4a9e58415a5d82f6ab073654e51a3 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -9,6 +9,8 @@
 .gitignore export-ignore
 .editorconfig export-ignore
 .travis.yml export-ignore
+composer.json export-ignore
+composer.lock export-ignore
 _test export-ignore
 _cs export-ignore
 lib/plugins/testing export-ignore
diff --git a/.gitignore b/.gitignore
index bb39ba7cf6b011a3875a25b80594da199a27b92a..acb26dd9060b7b39e188ec706608d4c3440afc3d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -56,3 +56,15 @@
 !/lib/plugins/remote.php
 !/lib/plugins/syntax.php
 lib/images/*/local/*
+
+# composer default ignores
+composer.phar
+vendor/bin/*
+vendor/*/*/phpunit.xml
+vendor/*/*/.travis.yml
+vendor/*/*/bin/*
+vendor/*/*/tests/*
+vendor/*/*/test/*
+vendor/*/*/doc/*
+vendor/*/*/docs/*
+vendor/*/*/contrib/*
diff --git a/_test/tests/inc/tar.test.php b/_test/tests/inc/tar.test.php
deleted file mode 100644
index 15453b16db94295bc31b5ff2ba4231b17b478b35..0000000000000000000000000000000000000000
--- a/_test/tests/inc/tar.test.php
+++ /dev/null
@@ -1,454 +0,0 @@
-<?php
-
-class Tar_TestCase extends DokuWikiTest {
-    /**
-     * file extensions that several tests use
-     */
-    protected $extensions = array('tar');
-
-    public function setUp() {
-        parent::setUp();
-        if (extension_loaded('zlib')) {
-            $this->extensions[] = 'tgz';
-        }
-        if (extension_loaded('bz2')) {
-            $this->extensions[] = 'tbz';
-        }
-    }
-
-    /*
-     * dependency for tests needing zlib extension to pass
-     */
-    public function test_ext_zlib() {
-        if (!extension_loaded('zlib')) {
-            $this->markTestSkipped('skipping all zlib tests.  Need zlib extension');
-        }
-    }
-
-    /*
-     * dependency for tests needing zlib extension to pass
-     */
-    public function test_ext_bz2() {
-        if (!extension_loaded('bz2')) {
-            $this->markTestSkipped('skipping all bzip2 tests.  Need bz2 extension');
-        }
-    }
-
-    /**
-     * simple test that checks that the given filenames and contents can be grepped from
-     * the uncompressed tar stream
-     *
-     * No check for format correctness
-     */
-    public function test_createdynamic() {
-        $tar = new Tar();
-
-        $dir  = dirname(__FILE__).'/tar';
-        $tdir = ltrim($dir,'/');
-
-        $tar->create();
-        $tar->AddFile("$dir/testdata1.txt");
-        $tar->AddFile("$dir/foobar/testdata2.txt", 'noway/testdata2.txt');
-        $tar->addData('another/testdata3.txt', 'testcontent3');
-
-        $data = $tar->getArchive();
-
-        $this->assertTrue(strpos($data, 'testcontent1') !== false, 'Content in TAR');
-        $this->assertTrue(strpos($data, 'testcontent2') !== false, 'Content in TAR');
-        $this->assertTrue(strpos($data, 'testcontent3') !== false, 'Content in TAR');
-
-        // fullpath might be too long to be stored as full path FS#2802
-        $this->assertTrue(strpos($data, "$tdir") !== false, 'Path in TAR');
-        $this->assertTrue(strpos($data, "testdata1.txt") !== false, 'File in TAR');
-
-        $this->assertTrue(strpos($data, 'noway/testdata2.txt') !== false, 'Path in TAR');
-        $this->assertTrue(strpos($data, 'another/testdata3.txt') !== false, 'Path in TAR');
-
-        // fullpath might be too long to be stored as full path FS#2802
-        $this->assertTrue(strpos($data, "$tdir/foobar") === false, 'Path not in TAR');
-        $this->assertTrue(strpos($data, "foobar.txt") === false, 'File not in TAR');
-
-        $this->assertTrue(strpos($data, "foobar") === false, 'Path not in TAR');
-    }
-
-    /**
-     * simple test that checks that the given filenames and contents can be grepped from the
-     * uncompressed tar file
-     *
-     * No check for format correctness
-     */
-    public function test_createfile() {
-        $tar = new Tar();
-
-        $dir = dirname(__FILE__).'/tar';
-        $tdir = ltrim($dir,'/');
-        $tmp = tempnam(sys_get_temp_dir(), 'dwtartest');
-
-        $tar->create($tmp, Tar::COMPRESS_NONE);
-        $tar->AddFile("$dir/testdata1.txt");
-        $tar->AddFile("$dir/foobar/testdata2.txt", 'noway/testdata2.txt');
-        $tar->addData('another/testdata3.txt', 'testcontent3');
-        $tar->close();
-
-        $this->assertTrue(filesize($tmp) > 30); //arbitrary non-zero number
-        $data = file_get_contents($tmp);
-
-        $this->assertTrue(strpos($data, 'testcontent1') !== false, 'Content in TAR');
-        $this->assertTrue(strpos($data, 'testcontent2') !== false, 'Content in TAR');
-        $this->assertTrue(strpos($data, 'testcontent3') !== false, 'Content in TAR');
-
-        // fullpath might be too long to be stored as full path FS#2802
-        $this->assertTrue(strpos($data, "$tdir") !== false, "Path in TAR '$tdir'");
-        $this->assertTrue(strpos($data, "testdata1.txt") !== false, 'File in TAR');
-
-        $this->assertTrue(strpos($data, 'noway/testdata2.txt') !== false, 'Path in TAR');
-        $this->assertTrue(strpos($data, 'another/testdata3.txt') !== false, 'Path in TAR');
-
-        // fullpath might be too long to be stored as full path FS#2802
-        $this->assertTrue(strpos($data, "$tdir/foobar") === false, 'Path not in TAR');
-        $this->assertTrue(strpos($data, "foobar.txt") === false, 'File not in TAR');
-
-        $this->assertTrue(strpos($data, "foobar") === false, 'Path not in TAR');
-
-        @unlink($tmp);
-    }
-
-    /**
-     * List the contents of the prebuilt TAR files
-     */
-    public function test_tarcontent() {
-        $dir = dirname(__FILE__).'/tar';
-
-        foreach($this->extensions as $ext) {
-            $tar  = new Tar();
-            $file = "$dir/test.$ext";
-
-            $tar->open($file);
-            $content = $tar->contents();
-
-            $this->assertCount(4, $content, "Contents of $file");
-            $this->assertEquals('tar/testdata1.txt', $content[1]['filename'], "Contents of $file");
-            $this->assertEquals(13, $content[1]['size'], "Contents of $file");
-
-            $this->assertEquals('tar/foobar/testdata2.txt', $content[3]['filename'], "Contents of $file");
-            $this->assertEquals(13, $content[1]['size'], "Contents of $file");
-        }
-    }
-
-    /**
-     * Extract the prebuilt tar files
-     */
-    public function test_tarextract() {
-        $dir = dirname(__FILE__).'/tar';
-        $out = sys_get_temp_dir().'/dwtartest'.md5(time());
-
-        foreach($this->extensions as $ext) {
-            $tar  = new Tar();
-            $file = "$dir/test.$ext";
-
-            $tar->open($file);
-            $tar->extract($out);
-
-            clearstatcache();
-
-            $this->assertFileExists($out.'/tar/testdata1.txt', "Extracted $file");
-            $this->assertEquals(13, filesize($out.'/tar/testdata1.txt'), "Extracted $file");
-
-            $this->assertFileExists($out.'/tar/foobar/testdata2.txt', "Extracted $file");
-            $this->assertEquals(13, filesize($out.'/tar/foobar/testdata2.txt'), "Extracted $file");
-
-            TestUtils::rdelete($out);
-        }
-    }
-
-    /**
-     * Extract the prebuilt tar files with component stripping
-     */
-    public function test_compstripextract() {
-        $dir = dirname(__FILE__).'/tar';
-        $out = sys_get_temp_dir().'/dwtartest'.md5(time());
-
-        foreach($this->extensions as $ext) {
-            $tar  = new Tar();
-            $file = "$dir/test.$ext";
-
-            $tar->open($file);
-            $tar->extract($out, 1);
-
-            clearstatcache();
-
-            $this->assertFileExists($out.'/testdata1.txt', "Extracted $file");
-            $this->assertEquals(13, filesize($out.'/testdata1.txt'), "Extracted $file");
-
-            $this->assertFileExists($out.'/foobar/testdata2.txt', "Extracted $file");
-            $this->assertEquals(13, filesize($out.'/foobar/testdata2.txt'), "Extracted $file");
-
-            TestUtils::rdelete($out);
-        }
-    }
-
-    /**
-     * Extract the prebuilt tar files with prefix stripping
-     */
-    public function test_prefixstripextract() {
-        $dir = dirname(__FILE__).'/tar';
-        $out = sys_get_temp_dir().'/dwtartest'.md5(time());
-
-        foreach($this->extensions as $ext) {
-            $tar  = new Tar();
-            $file = "$dir/test.$ext";
-
-            $tar->open($file);
-            $tar->extract($out, 'tar/foobar/');
-
-            clearstatcache();
-
-            $this->assertFileExists($out.'/tar/testdata1.txt', "Extracted $file");
-            $this->assertEquals(13, filesize($out.'/tar/testdata1.txt'), "Extracted $file");
-
-            $this->assertFileExists($out.'/testdata2.txt', "Extracted $file");
-            $this->assertEquals(13, filesize($out.'/testdata2.txt'), "Extracted $file");
-
-            TestUtils::rdelete($out);
-        }
-    }
-
-    /**
-     * Extract the prebuilt tar files with include regex
-     */
-    public function test_includeextract() {
-        $dir = dirname(__FILE__).'/tar';
-        $out = sys_get_temp_dir().'/dwtartest'.md5(time());
-
-        foreach($this->extensions as $ext) {
-            $tar  = new Tar();
-            $file = "$dir/test.$ext";
-
-            $tar->open($file);
-            $tar->extract($out, '', '', '/\/foobar\//');
-
-            clearstatcache();
-
-            $this->assertFileNotExists($out.'/tar/testdata1.txt', "Extracted $file");
-
-            $this->assertFileExists($out.'/tar/foobar/testdata2.txt', "Extracted $file");
-            $this->assertEquals(13, filesize($out.'/tar/foobar/testdata2.txt'), "Extracted $file");
-
-            TestUtils::rdelete($out);
-        }
-    }
-
-    /**
-     * Extract the prebuilt tar files with exclude regex
-     */
-    public function test_excludeextract() {
-        $dir = dirname(__FILE__).'/tar';
-        $out = sys_get_temp_dir().'/dwtartest'.md5(time());
-
-        foreach($this->extensions as $ext) {
-            $tar  = new Tar();
-            $file = "$dir/test.$ext";
-
-            $tar->open($file);
-            $tar->extract($out, '', '/\/foobar\//');
-
-            clearstatcache();
-
-            $this->assertFileExists($out.'/tar/testdata1.txt', "Extracted $file");
-            $this->assertEquals(13, filesize($out.'/tar/testdata1.txt'), "Extracted $file");
-
-            $this->assertFileNotExists($out.'/tar/foobar/testdata2.txt', "Extracted $file");
-
-            TestUtils::rdelete($out);
-        }
-    }
-
-    /**
-     * Check the extension to compression guesser
-     */
-    public function test_filetype() {
-        $tar = new Tar();
-        $this->assertEquals(Tar::COMPRESS_NONE, $tar->filetype('foo'));
-        $this->assertEquals(Tar::COMPRESS_GZIP, $tar->filetype('foo.tgz'));
-        $this->assertEquals(Tar::COMPRESS_GZIP, $tar->filetype('foo.tGZ'));
-        $this->assertEquals(Tar::COMPRESS_GZIP, $tar->filetype('foo.tar.GZ'));
-        $this->assertEquals(Tar::COMPRESS_GZIP, $tar->filetype('foo.tar.gz'));
-        $this->assertEquals(Tar::COMPRESS_BZIP, $tar->filetype('foo.tbz'));
-        $this->assertEquals(Tar::COMPRESS_BZIP, $tar->filetype('foo.tBZ'));
-        $this->assertEquals(Tar::COMPRESS_BZIP, $tar->filetype('foo.tar.BZ2'));
-        $this->assertEquals(Tar::COMPRESS_BZIP, $tar->filetype('foo.tar.bz2'));
-    }
-
-    /**
-     * @depends test_ext_zlib
-     */
-    public function test_longpathextract() {
-        $dir = dirname(__FILE__).'/tar';
-        $out = sys_get_temp_dir().'/dwtartest'.md5(time());
-
-        foreach(array('ustar', 'gnu') as $format) {
-            $tar = new Tar();
-            $tar->open("$dir/longpath-$format.tgz");
-            $tar->extract($out);
-
-            $this->assertFileExists($out.'/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/test.txt');
-
-            TestUtils::rdelete($out);
-        }
-    }
-
-    // FS#1442
-    public function test_createlongfile() {
-        $tar = new Tar();
-        $tmp = tempnam(sys_get_temp_dir(), 'dwtartest');
-
-        $path = '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789.txt';
-
-        $tar->create($tmp, Tar::COMPRESS_NONE);
-        $tar->addData($path, 'testcontent1');
-        $tar->close();
-
-        $this->assertTrue(filesize($tmp) > 30); //arbitrary non-zero number
-        $data = file_get_contents($tmp);
-
-        // We should find the complete path and a longlink entry
-        $this->assertTrue(strpos($data, 'testcontent1') !== false, 'content in TAR');
-        $this->assertTrue(strpos($data, $path) !== false, 'path in TAR');
-        $this->assertTrue(strpos($data, '@LongLink') !== false, '@LongLink in TAR');
-
-        @unlink($tmp);
-    }
-
-    public function test_createlongpathustar() {
-        $tar = new Tar();
-        $tmp = tempnam(sys_get_temp_dir(), 'dwtartest');
-
-        $path = '';
-        for($i=0; $i<11; $i++) $path .= '1234567890/';
-        $path = rtrim($path,'/');
-
-        $tar->create($tmp, Tar::COMPRESS_NONE);
-        $tar->addData("$path/test.txt", 'testcontent1');
-        $tar->close();
-
-        $this->assertTrue(filesize($tmp) > 30); //arbitrary non-zero number
-        $data = file_get_contents($tmp);
-
-        // We should find the path and filename separated, no longlink entry
-        $this->assertTrue(strpos($data, 'testcontent1') !== false, 'content in TAR');
-        $this->assertTrue(strpos($data, 'test.txt') !== false, 'filename in TAR');
-        $this->assertTrue(strpos($data, $path) !== false, 'path in TAR');
-        $this->assertFalse(strpos($data, "$path/test.txt") !== false, 'full filename in TAR');
-        $this->assertFalse(strpos($data, '@LongLink') !== false, '@LongLink in TAR');
-
-        @unlink($tmp);
-    }
-
-    public function test_createlongpathgnu() {
-        $tar = new Tar();
-        $tmp = tempnam(sys_get_temp_dir(), 'dwtartest');
-
-        $path = '';
-        for($i=0; $i<20; $i++) $path .= '1234567890/';
-        $path = rtrim($path,'/');
-
-        $tar->create($tmp, Tar::COMPRESS_NONE);
-        $tar->addData("$path/test.txt", 'testcontent1');
-        $tar->close();
-
-        $this->assertTrue(filesize($tmp) > 30); //arbitrary non-zero number
-        $data = file_get_contents($tmp);
-
-        // We should find the complete path/filename and a longlink entry
-        $this->assertTrue(strpos($data, 'testcontent1') !== false, 'content in TAR');
-        $this->assertTrue(strpos($data, 'test.txt') !== false, 'filename in TAR');
-        $this->assertTrue(strpos($data, $path) !== false, 'path in TAR');
-        $this->assertTrue(strpos($data, "$path/test.txt") !== false, 'full filename in TAR');
-        $this->assertTrue(strpos($data, '@LongLink') !== false, '@LongLink in TAR');
-
-        @unlink($tmp);
-    }
-
-    /**
-     * Extract a tarbomomb
-     * @depends test_ext_zlib
-     */
-    public function test_tarbomb() {
-        $dir = dirname(__FILE__).'/tar';
-        $out = sys_get_temp_dir().'/dwtartest'.md5(time());
-
-        $tar  = new Tar();
-
-        $tar->open("$dir/tarbomb.tgz");
-        $tar->extract($out);
-
-        clearstatcache();
-
-        $this->assertFileExists($out.'/AAAAAAAAAAAAAAAAA/BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB.txt');
-
-        TestUtils::rdelete($out);
-    }
-
-    /**
-     * A single zero file should be just a header block + the footer
-     */
-    public function test_zerofile(){
-        $dir = dirname(__FILE__).'/tar';
-        $tar = new Tar();
-        $tar->create();
-        $tar->addFile("$dir/zero.txt", 'zero.txt');
-        $file = $tar->getArchive(Tar::COMPRESS_NONE);
-
-        $this->assertEquals(512*3, strlen($file)); // 1 header block + 2 footer blocks
-    }
-
-    public function test_zerodata(){
-        $tar = new Tar();
-        $tar->create();
-        $tar->addData('zero.txt','');
-        $file = $tar->getArchive(Tar::COMPRESS_NONE);
-
-        $this->assertEquals(512*3, strlen($file)); // 1 header block + 2 footer blocks
-    }
-
-    /**
-     * A file of exactly one block should be just a header block + data block + the footer
-     */
-    public function test_blockfile(){
-        $dir = dirname(__FILE__).'/tar';
-        $tar = new Tar();
-        $tar->create();
-        $tar->addFile("$dir/block.txt", 'block.txt');
-        $file = $tar->getArchive(Tar::COMPRESS_NONE);
-
-        $this->assertEquals(512*4, strlen($file)); // 1 header block + data block + 2 footer blocks
-    }
-
-    public function test_blockdata(){
-        $tar = new Tar();
-        $tar->create();
-        $tar->addData('block.txt', str_pad('', 512, 'x'));
-        $file = $tar->getArchive(Tar::COMPRESS_NONE);
-
-        $this->assertEquals(512*4, strlen($file)); // 1 header block + data block + 2 footer blocks
-    }
-
-
-    public function test_cleanPath(){
-        $tar = new Tar();
-        $tests = array (
-            '/foo/bar' => 'foo/bar',
-            '/foo/bar/' => 'foo/bar',
-            'foo//bar' => 'foo/bar',
-            'foo/0/bar' => 'foo/0/bar',
-            'foo/../bar' => 'bar',
-            'foo/bang/bang/../../bar' => 'foo/bar',
-            'foo/../../bar' => 'bar',
-            'foo/.././../bar' => 'bar',
-        );
-
-        foreach($tests as $in => $out){
-            $this->assertEquals($out, $tar->cleanPath($in), "Input: $in");
-        }
-    }
-}
diff --git a/_test/tests/inc/tar/block.txt b/_test/tests/inc/tar/block.txt
deleted file mode 100644
index 9b2f53080c2a7b5fdf1c5629aaf513fdd2056528..0000000000000000000000000000000000000000
--- a/_test/tests/inc/tar/block.txt
+++ /dev/null
@@ -1 +0,0 @@
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
\ No newline at end of file
diff --git a/_test/tests/inc/tar/foobar/testdata2.txt b/_test/tests/inc/tar/foobar/testdata2.txt
deleted file mode 100644
index a7db15771f7f75aca5f8dc62beaebab28bb9ef8b..0000000000000000000000000000000000000000
--- a/_test/tests/inc/tar/foobar/testdata2.txt
+++ /dev/null
@@ -1 +0,0 @@
-testcontent2
diff --git a/_test/tests/inc/tar/longpath-gnu.tgz b/_test/tests/inc/tar/longpath-gnu.tgz
deleted file mode 100644
index 6c937c8fe055c33eb842419c2321a15eededc191..0000000000000000000000000000000000000000
Binary files a/_test/tests/inc/tar/longpath-gnu.tgz and /dev/null differ
diff --git a/_test/tests/inc/tar/longpath-ustar.tgz b/_test/tests/inc/tar/longpath-ustar.tgz
deleted file mode 100644
index 59efbff6689a78bc9ff3dc08afb95b4a19eaaa67..0000000000000000000000000000000000000000
Binary files a/_test/tests/inc/tar/longpath-ustar.tgz and /dev/null differ
diff --git a/_test/tests/inc/tar/tarbomb.tgz b/_test/tests/inc/tar/tarbomb.tgz
deleted file mode 100644
index 8418d4073e9afc339cd05c222063733305bd5d2d..0000000000000000000000000000000000000000
Binary files a/_test/tests/inc/tar/tarbomb.tgz and /dev/null differ
diff --git a/_test/tests/inc/tar/test.tar b/_test/tests/inc/tar/test.tar
deleted file mode 100644
index 931866b0ba0f279fab0b68e6a27e988860e41dc4..0000000000000000000000000000000000000000
Binary files a/_test/tests/inc/tar/test.tar and /dev/null differ
diff --git a/_test/tests/inc/tar/test.tbz b/_test/tests/inc/tar/test.tbz
deleted file mode 100644
index 5a737401907117fc2bfda39d27f73aed5892adac..0000000000000000000000000000000000000000
Binary files a/_test/tests/inc/tar/test.tbz and /dev/null differ
diff --git a/_test/tests/inc/tar/test.tgz b/_test/tests/inc/tar/test.tgz
deleted file mode 100644
index b0031964934865544c7c8537740a7995f99c882f..0000000000000000000000000000000000000000
Binary files a/_test/tests/inc/tar/test.tgz and /dev/null differ
diff --git a/_test/tests/inc/tar/testdata1.txt b/_test/tests/inc/tar/testdata1.txt
deleted file mode 100644
index ac65bb32efdef558a1eb2f9a986d55838db2efbb..0000000000000000000000000000000000000000
--- a/_test/tests/inc/tar/testdata1.txt
+++ /dev/null
@@ -1 +0,0 @@
-testcontent1
diff --git a/_test/tests/inc/tar/zero.txt b/_test/tests/inc/tar/zero.txt
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..3fe00cc92325258317005bbaed6f62b66abdc365
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,6 @@
+{
+    "require": {
+        "splitbrain/php-archive": "~1.0",
+        "easybook/geshi": "~1.0"
+    }
+}
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 0000000000000000000000000000000000000000..8b64242446b58864cb54e032e20331da1370cce7
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,111 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+        "This file is @generated automatically"
+    ],
+    "hash": "23ee0dd06136e2301c930e75055300d5",
+    "packages": [
+        {
+            "name": "easybook/geshi",
+            "version": "v1.0.8.14",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/easybook/geshi.git",
+                "reference": "af589a67bf308791bb13e54bddd9aa3544b7dff8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/easybook/geshi/zipball/af589a67bf308791bb13e54bddd9aa3544b7dff8",
+                "reference": "af589a67bf308791bb13e54bddd9aa3544b7dff8",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">4.3.0"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "./"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0"
+            ],
+            "authors": [
+                {
+                    "name": "Nigel McNie",
+                    "email": "nigel@geshi.org"
+                },
+                {
+                    "name": "Benny Baumann",
+                    "email": "BenBE@geshi.org"
+                }
+            ],
+            "description": "GeSHi - Generic Syntax Highlighter. This is an unmodified port of GeSHi project code found on SourceForge.",
+            "homepage": "http://qbnz.com/highlighter",
+            "keywords": [
+                "highlight",
+                "highlighter",
+                "syntax"
+            ],
+            "time": "2015-04-15 13:21:45"
+        },
+        {
+            "name": "splitbrain/php-archive",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/splitbrain/php-archive.git",
+                "reference": "a0fbfc2f85ed491f3d2af42cff48a9cb783a8549"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/splitbrain/php-archive/zipball/a0fbfc2f85ed491f3d2af42cff48a9cb783a8549",
+                "reference": "a0fbfc2f85ed491f3d2af42cff48a9cb783a8549",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "4.5.*"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "splitbrain\\PHPArchive\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Andreas Gohr",
+                    "email": "andi@splitbrain.org"
+                }
+            ],
+            "description": "Pure-PHP implementation to read and write TAR and ZIP archives",
+            "keywords": [
+                "archive",
+                "extract",
+                "tar",
+                "unpack",
+                "unzip",
+                "zip"
+            ],
+            "time": "2015-02-25 20:15:02"
+        }
+    ],
+    "packages-dev": [],
+    "aliases": [],
+    "minimum-stability": "stable",
+    "stability-flags": [],
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": [],
+    "platform-dev": []
+}
diff --git a/inc/geshi/actionscript-french.php b/inc/geshi/actionscript-french.php
deleted file mode 100644
index e816050980298a1b6910f7fd5cdb9405276f88cd..0000000000000000000000000000000000000000
--- a/inc/geshi/actionscript-french.php
+++ /dev/null
@@ -1,957 +0,0 @@
-<?php
-/*************************************************************************************
- * actionscript.php
- * ----------------
- * Author: Steffen Krause (Steffen.krause@muse.de)
- * Copyright: (c) 2004 Steffen Krause, Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.9
- * CVS Revision Version: $Revision: 1.9 $
- * Date Started: 2004/06/20
- * Last Modified: $Date: 2006/04/23 01:14:41 $
- *
- * Actionscript language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/08/25 (1.0.2)
- * Author [ NikO ] - http://niko.informatif.org
- * - add full link for myInstance.methods to http://wiki.media-box.net/documentation/flash
- * 2004/11/27 (1.0.1)
- *  -  Added support for multiple object splitters
- * 2004/10/27 (1.0.0)
- *  -  First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- *     This file is part of GeSHi.
- *
- *   GeSHi is free software; you can redistribute it and/or modify
- *   it under the terms of the GNU General Public License as published by
- *   the Free Software Foundation; either version 2 of the License, or
- *   (at your option) any later version.
- *
- *   GeSHi is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with GeSHi; if not, write to the Free Software
- *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- ************************************************************************************/
-
-$language_data = array (
-	'LANG_NAME' => 'Actionscript',
-	'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
-	'COMMENT_MULTI' => array('/*' => '*/'),
-	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
-	'QUOTEMARKS' => array("'", '"'),
-	'ESCAPE_CHAR' => '\\',
-	'KEYWORDS' => array(
-		1 => array(
-			'#include', 
-			'for', 
-			'foreach', 
-			'if', 
-			'elseif', 
-			'else', 
-			'while', 
-			'do', 
-			'dowhile',
-			'endwhile', 
-			'endif', 
-			'switch', 
-			'case', 
-			'endswitch', 
-			'break', 
-			'continue', 
-			'in',
-			'null', 
-			'false', 
-			'true', 
-			'var',
-			'default',
-			'new', 
-			'_global',
-			'undefined',
-			'super'	
-			),
-		2 => array(
-			'static',
-			'private',
-			'public',
-			'class',
-			'extends',
-			'implements',
-			'import',
-			'return',
-			'trace',
-			'_quality',
-			'_root',
-			'set',
-			'setInterval',
-			'setProperty',
-			'stopAllSounds',
-			'targetPath',
-			'this',
-			'typeof',
-			'unescape',
-			'updateAfterEvent'
-			),
-		3 => array (
-			'Accessibility',
-			'Array',
-			'Boolean',
-			'Button',
-			'Camera',
-			'Color',
-			'ContextMenuItem',
-			'ContextMenu',
-			'Cookie',
-			'Date',
-			'Error',
-			'function',
-			'FWEndCommand',
-			'FWJavascript',
-			'Key',
-			'LoadMovieNum',
-			'LoadMovie',
-			'LoadVariablesNum',
-			'LoadVariables',
-			'LoadVars',
-			'LocalConnection',
-			'Math',
-			'Microphone',
-			'MMExecute',
-			'MMEndCommand',
-			'MMSave',
-			'Mouse',
-			'MovieClipLoader',
-			'MovieClip',
-			'NetConnexion',
-			'NetStream',
-			'Number',
-			'Object',
-			'printAsBitmapNum',
-			'printNum',
-			'printAsBitmap',
-			'printJob',
-			'print',
-			'Selection',
-			'SharedObject',
-			'Sound',
-			'Stage',
-			'String',
-			'System',
-			'TextField',
-			'TextFormat',
-			'Tween',
-			'Video',
-			'XMLUI',
-			'XMLNode',
-			'XMLSocket',
-			'XML'
-			),
-		4 => array (	
-			'isactive',
-			'updateProperties'
-			),
-		5 => array (	
-			'callee',
-			'caller',
-			),
-		6 => array (	
-			'concat',
-			'join',
-			'pop',
-			'push',
-			'reverse',
-			'shift',
-			'slice',
-			'sort',
-			'sortOn',
-			'splice',
-			'toString',
-			'unshift'
-			),
-		7 => array (
-			'valueOf'
-			),
-		8 => array (	
-			'onDragOut',
-			'onDragOver',
-			'onKeyUp',
-			'onKillFocus',
-			'onPress',
-			'onRelease',
-			'onReleaseOutside',
-			'onRollOut',
-			'onRollOver',
-			'onSetFocus'
-			),
-		9 => array (	
-			'setMode',
-			'setMotionLevel',
-			'setQuality',
-			'activityLevel',
-			'bandwidth',
-			'currentFps',
-			'fps',
-			'index',
-			'motionLevel',
-			'motionTimeOut',
-			'muted',
-			'names',
-			'quality',
-			'onActivity',
-			'onStatus'
-			),
-		10 => array (	
-			'getRGB',
-			'setRGB',
-			'getTransform',
-			'setTransform'
-			),
-		11 => array (	
-			'caption',
-			'enabled',
-			'separatorBefore',
-			'visible',
-			'onSelect'
-			),
-		12 => array (	
-			'setCookie',
-			'getcookie'
-			),	
-		13 => array (	
-			'hideBuiltInItems',
-			'builtInItems',
-			'customItems',
-			'onSelect'
-			),
-		14 => array (	
-			'CustomActions.get',
-			'CustomActions.install',
-			'CustomActions.list',
-			'CustomActions.uninstall',
-			),		
-		15 => array (	
-			'getDate',
-			'getDay',
-			'getFullYear',
-			'getHours',
-			'getMilliseconds',
-			'getMinutes',
-			'getMonth',
-			'getSeconds',
-			'getTime',
-			'getTimezoneOffset',
-			'getUTCDate',
-			'getUTCDay',
-			'getUTCFullYear',
-			'getUTCHours',
-			'getUTCMinutes',
-			'getUTCMilliseconds',
-			'getUTCMonth',
-			'getUTCSeconds',
-			'getYear',
-			'setDate',
-			'setFullYear',
-			'setHours',
-			'setMilliseconds',
-			'setMinutes',
-			'setMonth',
-			'setSeconds',
-			'setTime',
-			'setUTCDate',
-			'setUTCDay',
-			'setUTCFullYear',
-			'setUTCHours',
-			'setUTCMinutes',
-			'setUTCMilliseconds',
-			'setUTCMonth',
-			'setUTCSeconds',
-			'setYear',
-			'UTC'
-			),	
-		16 => array (	
-			'message',
-			'name',
-			'throw',
-			'try',
-			'catch',
-			'finally'
-			),
-		17 => array (	
-			'apply',
-			'call'
-			),
-		18 => array (	
-			'BACKSPACE',
-			'CAPSLOCK',
-			'CONTROL',
-			'DELETEKEY',
-			'DOWN',
-			'END',
-			'ENTER',
-			'ESCAPE',
-			'getAscii',
-			'getCode',
-			'HOME',
-			'INSERT',
-			'isDown',
-			'isToggled',
-			'LEFT',
-			'onKeyDown',
-			'onKeyUp',
-			'PGDN',
-			'PGUP',
-			'RIGHT',
-			'SPACE',
-			'TAB',
-			'UP'
-			),
-		19 => array (
-			'addRequestHeader',
-			'contentType',
-			'decode'
-			),
-		20 => array (
-			'allowDomain',
-			'allowInsecureDomain',
-			'close',
-			'domain'
-			),
-		21 => array (
-			'abs',
-			'acos',
-			'asin',
-			'atan',
-			'atan2',
-			'ceil',
-			'cos',
-			'exp',
-			'floor',
-			'log',
-			'LN2',
-			'LN10',
-			'LOG2E',
-			'LOG10E',
-			'max',
-			'min',
-			'PI',
-			'pow',
-			'random',
-			'sin',
-			'SQRT1_2',
-			'sqrt',
-			'tan',
-			'round',
-			'SQRT2'
-			),
-		22 => array (
-			'activityLevel',
-			'muted',
-			'names',
-			'onActivity',
-			'onStatus',
-			'setRate',
-			'setGain',
-			'gain',
-			'rate',
-			'setSilenceLevel',
-			'setUseEchoSuppression',
-			'silenceLevel',
-			'silenceTimeOut',
-			'useEchoSuppression'
-			),
-		23 => array (
-			'hide',
-			'onMouseDown',
-			'onMouseMove',
-			'onMouseUp',
-			'onMouseWeel',
-			'show'
-			),
-		24 => array (
-			'_alpha',
-			'attachAudio',
-			'attachMovie',
-			'beginFill',
-			'beginGradientFill',
-			'clear',
-			'createEmptyMovieClip',
-			'createTextField',
-			'_current',
-			'curveTo',
-			'_dropTarget',
-			'duplicateMovieClip',
-			'endFill',
-			'focusEnabled',
-			'enabled',
-			'_focusrec',
-			'_framesLoaded',
-			'getBounds',
-			'getBytesLoaded',
-			'getBytesTotal',
-			'getDepth',
-			'getInstanceAtDepth',
-			'getNextHighestDepth',
-			'getSWFVersion',
-			'getTextSnapshot',
-			'getURL',
-			'globalToLocal',
-			'gotoAndPlay',
-			'gotoAndStop',
-			'_height',
-			'hitArea',
-			'hitTest',
-			'lineStyle',
-			'lineTo',
-			'localToGlobal',
-			'_lockroot',
-			'menu',
-			'onUnload',
-			'_parent',
-			'play',
-			'prevFrame',
-			'_quality',
-			'removeMovieClip',
-			'_rotation',
-			'setMask',
-			'_soundbuftime',
-			'startDrag',
-			'stopDrag',
-			'stop',
-			'swapDepths',
-			'tabChildren',
-			'_target',
-			'_totalFrames',
-			'trackAsMenu',
-			'unloadMovie',
-			'useHandCursor',
-			'_visible',
-			'_width',
-			'_xmouse',
-			'_xscale',
-			'_x',
-			'_ymouse',
-			'_yscale',
-			'_y'
-			),
-		25 => array (
-			'getProgress',
-			'loadClip',
-			'onLoadComplete',
-			'onLoadError',
-			'onLoadInit',
-			'onLoadProgress',
-			'onLoadStart'
-			),
-		26 => array (
-			'bufferLength',
-			'currentFps',
-			'seek',
-			'setBufferTime',
-			'bufferTime',
-			'time',
-			'pause'
-			),
-		27 => array (
-			'MAX_VALUE',
-			'MIN_VALUE',
-			'NEGATIVE_INFINITY',
-			'POSITIVE_INFINITY'
-			),
-		28 => array (
-			'addProperty',
-			'constructor',
-			'__proto__',
-			'registerClass',
-			'__resolve',
-			'unwatch',
-			'watch',
-			'onUpDate'
-			),
-		29 => array (
-			'addPage'
-			),
-		30 => array (
-			'getBeginIndex',
-			'getCaretIndex',
-			'getEndIndex',
-			'setSelection'
-			),
-		31 => array (
-			'flush',
-			'getLocal',
-			'getSize'
-			),
-		32 => array (
-			'attachSound',
-			'duration',
-			'getPan',
-			'getVolume',
-			'onID3',
-			'loadSound',
-			'id3',
-			'onSoundComplete',
-			'position',
-			'setPan',
-			'setVolume'
-			),
-		33 => array (
-			'getBeginIndex',
-			'getCaretIndex',
-			'getEndIndex',
-			'setSelection'
-			),
-		34 => array (
-			'getEndIndex',
-			),
-		35 => array (
-			'align',
-			'height',
-			'width',
-			'onResize',
-			'scaleMode',
-			'showMenu'
-			),
-		36 => array (
-			'charAt',
-			'charCodeAt',
-			'concat',
-			'fromCharCode',
-			'indexOf',
-			'lastIndexOf',
-			'substr',
-			'substring',
-			'toLowerCase',
-			'toUpperCase'
-			),
-		37 => array (
-			'avHardwareDisable',
-			'hasAccessibility',
-			'hasAudioEncoder',
-			'hasAudio',
-			'hasEmbeddedVideo',
-			'hasMP3',
-			'hasPrinting',
-			'hasScreenBroadcast',
-			'hasScreenPlayback',
-			'hasStreamingAudio',
-			'hasStreamingVideo',
-			'hasVideoEncoder',
-			'isDebugger',
-			'language',
-			'localFileReadDisable',
-			'manufacturer',
-			'os',
-			'pixelAspectRatio',
-			'playerType',
-			'screenColor',
-			'screenDPI',
-			'screenResolutionX',
-			'screenResolutionY',
-			'serverString',
-			'version'
-			),
-		38 => array (
-			'allowDomain',
-			'allowInsecureDomain',
-			'loadPolicyFile'
-			),
-		39 => array (
-			'exactSettings',
-			'setClipboard',
-			'showSettings',
-			'useCodepage'
-			),
-		40 => array (
-			'getStyle',
-			'getStyleNames',
-			'parseCSS',
-			'setStyle',
-			'transform'
-			),
-		41 => array (
-			'autoSize',
-			'background',
-			'backgroundColor',
-			'border',
-			'borderColor',
-			'bottomScroll',
-			'condenseWhite',
-			'embedFonts',
-			'getFontList',
-			'getNewTextFormat',
-			'getTextFormat',
-			'hscroll',
-			'htmlText',
-			'html',
-			'maxChars',
-			'maxhscroll',
-			'maxscroll',
-			'mouseWheelEnabled',
-			'multiline',
-			'onScroller',
-			'password',
-			'removeTextField',
-			'replaceSel',
-			'replaceText',
-			'restrict',
-			'scroll',
-			'selectable',
-			'setNewTextFormat',
-			'setTextFormat',
-			'styleSheet',
-			'tabEnabled',
-			'tabIndex',
-			'textColor',
-			'textHeight',
-			'textWidth',
-			'text',
-			'type',
-			'_url',
-			'variable',
-			'wordWrap'
-			),
-		42 => array (	
-			'blockIndent',
-			'bold',
-			'bullet',
-			'font',
-			'getTextExtent',
-			'indent',
-			'italic',
-			'leading',
-			'leftMargin',
-			'rightMargin',
-			'size',
-			'tabStops',
-			'underline'
-			),
-		43 => array (	
-			'findText',
-			'getCount',
-			'getSelected',
-			'getSelectedText',
-			'getText',
-			'hitTestTextNearPos',
-			'setSelectColor',
-			'setSelected'
-			),
-		44 => array (	
-			'begin',
-			'change',
-			'continueTo',
-			'fforward',
-			'finish',
-			'func',
-			'FPS',
-			'getPosition',
-			'isPlaying',
-			'looping',
-			'obj',
-			'onMotionChanged',
-			'onMotionFinished',
-			'onMotionLooped',
-			'onMotionStarted',
-			'onMotionResumed',
-			'onMotionStopped',
-			'prop',
-			'rewind',
-			'resume',
-			'setPosition',
-			'time',
-			'userSeconds',
-			'yoyo'
-			),
-		45 => array (	
-			'attachVideo',
-			'deblocking',
-			'smoothing'
-			),
-		46 => array (	
-			'addRequestHeader',
-			'appendChild',
-			'attributes',
-			'childNodes',
-			'cloneNode',
-			'contentType',
-			'createElement',
-			'createTextNode',
-			'docTypeDecl',
-			'firstChild',
-			'hasChildNodes',
-			'ignoreWhite',
-			'insertBefore',
-			'lastChild',
-			'nextSibling',
-			'nodeName',
-			'nodeType',
-			'nodeValue',
-			'parentNode',
-			'parseXML',
-			'previousSibling',
-			'removeNode',
-			'xmlDecl'
-			),
-		47 => array (	
-			'onClose',
-			'onXML'
-			),
-		48 => array (	
-			'add',
-			'and',
-			'_highquality',
-			'chr',
-			'eq',
-			'ge',
-			'ifFrameLoaded',
-			'int',
-			'le',
-			'it',
-			'mbchr',
-			'mblength',
-			'mbord',
-			'ne',
-			'not',
-			'or',
-			'ord',
-			'tellTarget',
-			'toggleHighQuality'
-			),
-		49 => array (
-			'ASSetPropFlags',
-			'ASnative',
-			'ASconstructor',
-			'AsSetupError',
-			'FWEndCommand',
-			'FWJavascript',
-			'MMEndCommand',
-			'MMSave',
-			'XMLUI'
-		), 
-		50 => array (
-			'System.capabilities'
-		),
-		51 => array (
-			'System.security'
-		),
-		52 => array (
-			'TextField.StyleSheet'
-		)
-		),
-	'SYMBOLS' => array(
-		'(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>','='
-		),
-	'CASE_SENSITIVE' => array(
-		GESHI_COMMENTS => false,
-		1 => true,
-		2 => true,
-		3 => true,
-		4 => true,
-		5 => true,
-		6 => true,
-		7 => true,
-		8 => true,
-		9 => true,
-		10 => true,
-		11 => true,
-		12 => true,
-		13 => true,
-		14 => true,
-		15 => true,
-		16 => true,
-		17 => true,
-		18 => true,
-		19 => true,
-		20 => true,
-		21 => true,
-		22 => true,
-		23 => true,
-		24 => true,
-		25 => true,
-		26 => true,
-		27 => true,
-		28 => true,
-		29 => true,
-		30 => true,
-		31 => true,
-		32 => true,
-		33 => true,
-		34 => true,
-		35 => true,
-		36 => true,
-		37 => true,
-		38 => true,
-		39 => true,
-		40 => true,
-		41 => true,
-		42 => true,
-		43 => true,
-		44 => true,
-		45 => true,
-		46 => true,
-		47 => true,
-		48 => true,
-		49 => true,
-		50 => true,
-		51 => true,
-		52 => true
-		),
-	'STYLES' => array(
-		'KEYWORDS' => array(
-			1 => 'color: #0000ff;',
-			2 => 'color: #006600;',
-			3 => 'color: #000080;',
-			4 => 'color: #006600;',
-			5 => 'color: #006600;',
-			6 => 'color: #006600;',
-			7 => 'color: #006600;',
-			8 => 'color: #006600;',
-			9 => 'color: #006600;',
-			10 => 'color: #006600;',
-			11 => 'color: #006600;',
-			12 => 'color: #006600;',
-			13 => 'color: #006600;',
-			14 => 'color: #006600;',
-			15 => 'color: #006600;',
-			16 => 'color: #006600;',
-			17 => 'color: #006600;',
-			18 => 'color: #006600;',
-			19 => 'color: #006600;',
-			20 => 'color: #006600;',
-			21 => 'color: #006600;',
-			22 => 'color: #006600;',
-			23 => 'color: #006600;',
-			24 => 'color: #006600;',
-			25 => 'color: #006600;',
-			26 => 'color: #006600;',
-			27 => 'color: #006600;',
-			28 => 'color: #006600;',
-			29 => 'color: #006600;',
-			30 => 'color: #006600;',
-			31 => 'color: #006600;',
-			32 => 'color: #006600;',
-			33 => 'color: #006600;',
-			34 => 'color: #006600;',
-			35 => 'color: #006600;',
-			36 => 'color: #006600;',
-			37 => 'color: #006600;',
-			38 => 'color: #006600;',
-			39 => 'color: #006600;',
-			40 => 'color: #006600;',
-			41 => 'color: #006600;',
-			42 => 'color: #006600;',
-			43 => 'color: #006600;',
-			44 => 'color: #006600;',
-			45 => 'color: #006600;',
-			46 => 'color: #006600;',
-			47 => 'color: #006600;',
-			48 => 'color: #CC0000;',
-			49 => 'color: #5700d1;',
-			50 => 'color: #006600;',
-			51 => 'color: #006600;',
-			52 => 'color: #CC0000;'
-			),
-		'COMMENTS' => array(
-			1 => 'color: #ff8000; font-style: italic;',
-			2 => 'color: #ff8000; font-style: italic;',
-			'MULTI' => 'color: #ff8000; font-style: italic;'
-			),
-		'ESCAPE_CHAR' => array(
-			0 => 'color: #000099; font-weight: bold;'
-			),
-		'BRACKETS' => array(
-			0 => 'color: #333333;'
-			),
-		'STRINGS' => array(
-			0 => 'color: #333333; background-color: #eeeeee;'
-			),
-		'NUMBERS' => array(
-			0 => 'color: #c50000;'
-			),
-
-		'SYMBOLS' => array(
-			0 => 'color: #000000;'
-			),
-		'METHODS' => array(
-			1 => 'color: #006600;'
-			),
-		'REGEXPS' => array(
-			),
-		'SCRIPT' => array(
-			)
-		),
-	'URLS' => array(
-		1 => 'http://wiki.media-box.net/documentation/flash/{FNAME}',
-		2 => 'http://wiki.media-box.net/documentation/flash/{FNAME}',
-		3 => 'http://wiki.media-box.net/documentation/flash/{FNAME}',
-		4 => 'http://wiki.media-box.net/documentation/flash/accessibility/{FNAME}',
-		5 => 'http://wiki.media-box.net/documentation/flash/arguments/{FNAME}',
-		6 => 'http://wiki.media-box.net/documentation/flash/array/{FNAME}',
-		7 => 'http://wiki.media-box.net/documentation/flash/boolean/{FNAME}',
-		8 => 'http://wiki.media-box.net/documentation/flash/button/{FNAME}',
-		9 => 'http://wiki.media-box.net/documentation/flash/camera/{FNAME}',
-		10 => 'http://wiki.media-box.net/documentation/flash/color/{FNAME}',
-		11 => 'http://wiki.media-box.net/documentation/flash/contextmenuitem/{FNAME}',
-		12 => 'http://wiki.media-box.net/documentation/flash/contextmenu/{FNAME}',
-		13 => 'http://wiki.media-box.net/documentation/flash/cookie/{FNAME}',
-		14 => 'http://wiki.media-box.net/documentation/flash/customactions/{FNAME}',
-		15 => 'http://wiki.media-box.net/documentation/flash/date/{FNAME}',
-		16 => 'http://wiki.media-box.net/documentation/flash/error/{FNAME}',
-		17 => 'http://wiki.media-box.net/documentation/flash/function/{FNAME}',
-		18 => 'http://wiki.media-box.net/documentation/flash/key/{FNAME}',
-		19 => 'http://wiki.media-box.net/documentation/flash/loadvars/{FNAME}',
-		20 => 'http://wiki.media-box.net/documentation/flash/localconnection/{FNAME}',
-		21 => 'http://wiki.media-box.net/documentation/flash/math/{FNAME}',
-		22 => 'http://wiki.media-box.net/documentation/flash/microphone/{FNAME}',
-		23 => 'http://wiki.media-box.net/documentation/flash/mouse/{FNAME}',
-		24 => 'http://wiki.media-box.net/documentation/flash/movieclip/{FNAME}',
-		25 => 'http://wiki.media-box.net/documentation/flash/moviecliploader/{FNAME}',
-		26 => 'http://wiki.media-box.net/documentation/flash/netstream/{FNAME}',
-		27 => 'http://wiki.media-box.net/documentation/flash/number/{FNAME}',
-		28 => 'http://wiki.media-box.net/documentation/flash/object/{FNAME}',
-		29 => 'http://wiki.media-box.net/documentation/flash/printJob/{FNAME}',
-		30 => 'http://wiki.media-box.net/documentation/flash/selection/{FNAME}',
-		31 => 'http://wiki.media-box.net/documentation/flash/sharedobject/{FNAME}',
-		32 => 'http://wiki.media-box.net/documentation/flash/sound/{FNAME}',
-		33 => 'http://wiki.media-box.net/documentation/flash/selection/{FNAME}',
-		34 => 'http://wiki.media-box.net/documentation/flash/sharedobject/{FNAME}',
-		35 => 'http://wiki.media-box.net/documentation/flash/stage/{FNAME}',
-		36 => 'http://wiki.media-box.net/documentation/flash/string/{FNAME}',
-		37 => 'http://wiki.media-box.net/documentation/flash/system/capabilities/{FNAME}',
-		38 => 'http://wiki.media-box.net/documentation/flash/system/security/{FNAME}',
-		39 => 'http://wiki.media-box.net/documentation/flash/system/{FNAME}',
-		40 => 'http://wiki.media-box.net/documentation/flash/textfield/stylesheet/{FNAME}',
-		41 => 'http://wiki.media-box.net/documentation/flash/textfield/{FNAME}',
-		42 => 'http://wiki.media-box.net/documentation/flash/textformat/{FNAME}',
-		43 => 'http://wiki.media-box.net/documentation/flash/textsnapshot/{FNAME}',
-		44 => 'http://wiki.media-box.net/documentation/flash/tween/{FNAME}',
-		45 => 'http://wiki.media-box.net/documentation/flash/video/{FNAME}',
-		46 => 'http://wiki.media-box.net/documentation/flash/xml/{FNAME}',
-		47 => 'http://wiki.media-box.net/documentation/flash/xmlsocket/{FNAME}',
-		48 => 'http://wiki.media-box.net/documentation/flash/{FNAME}',
-		49 => 'http://wiki.media-box.net/documentation/flash/{FNAME}',
-		50 => 'http://wiki.media-box.net/documentation/flash/system/capabilities',
-		51 => 'http://wiki.media-box.net/documentation/flash/system/security',
-		52 => 'http://wiki.media-box.net/documentation/flash/textfield/stylesheet'
-		),
-	'OOLANG' => true,
-	'OBJECT_SPLITTERS' => array(
-		1 => '.'
-		),
-	'REGEXPS' => array(
-		),
-	'STRICT_MODE_APPLIES' => GESHI_NEVER,
-	'SCRIPT_DELIMITERS' => array(),
-	'HIGHLIGHT_STRICT_BLOCK' => array()
-);
-
-?>
diff --git a/inc/geshi/cobol.php b/inc/geshi/cobol.php
deleted file mode 100644
index b07be48a135efd1e7066e4842a2fc02f870d287c..0000000000000000000000000000000000000000
--- a/inc/geshi/cobol.php
+++ /dev/null
@@ -1,244 +0,0 @@
-<?php
-/*************************************************************************************
- * cobol.php
- * ----------
- * Author: BenBE (BenBE@omorphia.org)
- * Copyright: (c) 2007-2008 BenBE (http://www.omorphia.de/)
- * Release Version: 1.0.8.11
- * Date Started: 2007/07/02
- *
- * COBOL language file for GeSHi.
- *
- * CHANGES
- * -------
- *
- * TODO (updated 2007/07/02)
- * -------------------------
- *
- *************************************************************************************
- *
- *     This file is part of GeSHi.
- *
- *   GeSHi is free software; you can redistribute it and/or modify
- *   it under the terms of the GNU General Public License as published by
- *   the Free Software Foundation; either version 2 of the License, or
- *   (at your option) any later version.
- *
- *   GeSHi is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with GeSHi; if not, write to the Free Software
- *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- ************************************************************************************/
-
-$language_data = array (
-    'LANG_NAME' => 'COBOL',
-    'COMMENT_SINGLE' => array(),
-    'COMMENT_MULTI' => array(),
-    'COMMENT_REGEXP' => array(1 => '/^\*.*?$/m'),
-    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
-    'QUOTEMARKS' => array('"', "'"),
-    'ESCAPE_CHAR' => '\\',
-    'NUMBERS' =>
-        GESHI_NUMBER_INT_BASIC |
-        GESHI_NUMBER_FLT_NONSCI |
-        GESHI_NUMBER_FLT_SCI_SHORT |
-        GESHI_NUMBER_FLT_SCI_ZERO,
-    'KEYWORDS' => array(
-        1 => array( //Compiler Directives
-            'ANSI', 'BLANK', 'NOBLANK', 'CALL-SHARED', 'CANCEL', 'NOCANCEL',
-            'CHECK', 'CODE', 'NOCODE', 'COLUMNS', 'COMPACT', 'NOCOMPACT',
-            'COMPILE', 'CONSULT', 'NOCONSULT', 'CROSSREF', 'NOCROSSREF',
-            'DIAGNOSE-74', 'NODIAGNOSE-74', 'DIAGNOSE-85', 'NODIAGNOSE-85',
-            'DIAGNOSEALL', 'NODIAGNOSEALL', 'ENDIF', 'ENDUNIT', 'ENV',
-            'ERRORFILE', 'ERRORS', 'FIPS', 'NOFIPS', 'FMAP', 'HEADING', 'HEAP',
-            'HIGHPIN', 'HIGHREQUESTERS', 'ICODE', 'NOICODE', 'IF', 'IFNOT',
-            'INNERLIST', 'NOINNERLIST', 'INSPECT', 'NOINSPECT', 'LARGEDATA',
-            'LD', 'LESS-CODE', 'LIBRARY', 'LINES', 'LIST', 'NOLIST', 'LMAP',
-            'NOLMAP', 'MAIN', 'MAP', 'NOMAP', 'NLD', 'NONSTOP', 'NON-SHARED',
-            'OPTIMIZE', 'PERFORM-TRACE', 'PORT', 'NOPORT', 'RESETTOG',
-            'RUNNABLE', 'RUNNAMED', 'SAVE', 'SAVEABEND', 'NOSAVEABEND',
-            'SEARCH', 'NOSEARCH', 'SECTION', 'SETTOG', 'SHARED', 'SHOWCOPY',
-            'NOSHOWCOPY', 'SHOWFILE', 'NOSHOWFILE', 'SOURCE', 'SQL', 'NOSQL',
-            'SQLMEM', 'SUBSET', 'SUBTYPE', 'SUPPRESS', 'NOSUPPRESS', 'SYMBOLS',
-            'NOSYMBOLS', 'SYNTAX', 'TANDEM', 'TRAP2', 'NOTRAP2', 'TRAP2-74',
-            'NOTRAP2-74', 'UL', 'WARN', 'NOWARN'
-            ),
-        2 => array( //Statement Keywords
-            'ACCEPT', 'ADD', 'TO', 'GIVING', 'CORRESPONDING', 'ALTER', 'CALL',
-            'CHECKPOINT', 'CLOSE', 'COMPUTE', 'CONTINUE', 'COPY',
-            'DELETE', 'DISPLAY', 'DIVIDE', 'INTO', 'REMAINDER', 'ENTER',
-            'COBOL', 'EVALUATE', 'EXIT', 'GO', 'INITIALIZE',
-            'TALLYING', 'REPLACING', 'CONVERTING', 'LOCKFILE', 'MERGE', 'MOVE',
-            'MULTIPLY', 'OPEN', 'PERFORM', 'TIMES',
-            'UNTIL', 'VARYING', 'RETURN',
-            ),
-        3 => array( //Reserved in some contexts
-            'ACCESS', 'ADDRESS', 'ADVANCING', 'AFTER', 'ALL',
-            'ALPHABET', 'ALPHABETIC', 'ALPHABETIC-LOWER', 'ALPHABETIC-UPPER',
-            'ALPHANUMERIC', 'ALPHANUMERIC-EDITED', 'ALSO', 'ALTERNATE',
-            'AND', 'ANY', 'APPROXIMATE', 'AREA', 'AREAS', 'ASCENDING', 'ASSIGN',
-            'AT', 'AUTHOR', 'BEFORE', 'BINARY', 'BLOCK', 'BOTTOM', 'BY',
-            'CD', 'CF', 'CH', 'CHARACTER', 'CHARACTERS',
-            'CHARACTER-SET', 'CLASS', 'CLOCK-UNITS',
-            'CODE-SET', 'COLLATING', 'COLUMN', 'COMMA',
-            'COMMON', 'COMMUNICATION', 'COMP', 'COMP-3', 'COMP-5',
-            'COMPUTATIONAL', 'COMPUTATIONAL-3', 'COMPUTATIONAL-5',
-            'CONFIGURATION', 'CONTAINS', 'CONTENT', 'CONTROL',
-            'CONTROLS', 'CORR', 'COUNT',
-            'CURRENCY', 'DATA', 'DATE', 'DATE-COMPILED', 'DATE-WRITTEN', 'DAY',
-            'DAY-OF-WEEK', 'DE', 'DEBUG-CONTENTS', 'DEBUG-ITEM', 'DEBUG-LINE',
-            'DEBUG-SUB-2', 'DEBUG-SUB-3', 'DEBUGGING', 'DECIMAL-POINT',
-            'DECLARATIVES', 'DEBUG-NAME', 'DEBUG-SUB-1', 'DELIMITED',
-            'DELIMITER', 'DEPENDING', 'DESCENDING', 'DESTINATION', 'DETAIL',
-            'DISABLE', 'DIVISION', 'DOWN', 'DUPLICATES',
-            'DYNAMIC', 'EGI', 'ELSE', 'EMI', 'ENABLE', 'END', 'END-ADD',
-            'END-COMPUTE', 'END-DELETE', 'END-DIVIDE', 'END-EVALUATE', 'END-IF',
-            'END-MULTIPLY', 'END-OF-PAGE', 'END-PERFORM', 'END-READ',
-            'END-RECEIVE', 'END-RETURN', 'END-REWRITE', 'END-SEARCH',
-            'END-START', 'END-STRING', 'END-SUBTRACT', 'END-UNSTRING',
-            'END-WRITE', 'EOP', 'EQUAL', 'ERROR', 'ESI',
-            'EVERY', 'EXCEPTION', 'EXCLUSIVE', 'EXTEND',
-            'EXTENDED-STORAGE', 'EXTERNAL', 'FALSE', 'FD', 'FILE',
-            'FILE-CONTROL', 'FILLER', 'FINAL', 'FIRST', 'FOOTING', 'FOR',
-            'FROM', 'FUNCTION', 'GENERATE', 'GENERIC', 'GLOBAL',
-            'GREATER', 'GROUP', 'GUARDIAN-ERR', 'HIGH-VALUE',
-            'HIGH-VALUES', 'I-O', 'I-O-CONTROL', 'IDENTIFICATION', 'IN',
-            'INDEX', 'INDEXED', 'INDICATE', 'INITIAL', 'INITIATE',
-            'INPUT', 'INPUT-OUTPUT', 'INSTALLATION',
-            'INVALID', 'IS', 'JUST', 'JUSTIFIED', 'KEY', 'LABEL', 'LAST',
-            'LEADING', 'LEFT', 'LESS', 'LIMIT', 'LIMITS', 'LINAGE',
-            'LINAGE-COUNTER', 'LINE', 'LINE-COUNTER', 'LINKAGE', 'LOCK',
-            'LOW-VALUE', 'LOW-VALUES', 'MEMORY', 'MESSAGE',
-            'MODE', 'MODULES', 'MULTIPLE', 'NATIVE',
-            'NEGATIVE', 'NEXT', 'NO', 'NOT', 'NULL', 'NULLS', 'NUMBER',
-            'NUMERIC', 'NUMERIC-EDITED', 'OBJECT-COMPUTER', 'OCCURS', 'OF',
-            'OFF', 'OMITTED', 'ON', 'OPTIONAL', 'OR', 'ORDER',
-            'ORGANIZATION', 'OTHER', 'OUTPUT', 'OVERFLOW', 'PACKED-DECIMAL',
-            'PADDING', 'PAGE', 'PAGE-COUNTER', 'PF', 'PH', 'PIC',
-            'PICTURE', 'PLUS', 'POINTER', 'POSITION', 'POSITIVE', 'PRINTING',
-            'PROCEDURE', 'PROCEDURES', 'PROCEED', 'PROGRAM', 'PROGRAM-ID',
-            'PROGRAM-STATUS', 'PROGRAM-STATUS-1', 'PROGRAM-STATUS-2', 'PROMPT',
-            'PROTECTED', 'PURGE', 'QUEUE', 'QUOTE', 'QUOTES', 'RD',
-            'RECEIVE', 'RECEIVE-CONTROL', 'RECORD', 'RECORDS',
-            'REDEFINES', 'REEL', 'REFERENCE', 'REFERENCES', 'RELATIVE',
-            'REMOVAL', 'RENAMES', 'REPLACE',
-            'REPLY', 'REPORT', 'REPORTING', 'REPORTS', 'RERUN',
-            'RESERVE', 'RESET', 'REVERSED', 'REWIND', 'REWRITE', 'RF',
-            'RH', 'RIGHT', 'ROUNDED', 'RUN', 'SAME', 'SD',
-            'SECURITY', 'SEGMENT', 'SEGMENT-LIMIT', 'SELECT', 'SEND',
-            'SENTENCE', 'SEPARATE', 'SEQUENCE', 'SEQUENTIAL', 'SET',
-            'SIGN', 'SIZE', 'SORT', 'SORT-MERGE', 'SOURCE-COMPUTER',
-            'SPACE', 'SPACES', 'SPECIAL-NAMES', 'STANDARD', 'STANDARD-1',
-            'STANDARD-2', 'START', 'STARTBACKUP', 'STATUS', 'STOP', 'STRING',
-            'SUB-QUEUE-1', 'SUB-QUEUE-2', 'SUB-QUEUE-3', 'SUBTRACT',
-            'SYMBOLIC', 'SYNC', 'SYNCDEPTH', 'SYNCHRONIZED',
-            'TABLE', 'TAL', 'TAPE', 'TERMINAL', 'TERMINATE', 'TEST',
-            'TEXT', 'THAN', 'THEN', 'THROUGH', 'THRU', 'TIME',
-            'TOP', 'TRAILING', 'TRUE', 'TYPE', 'UNIT', 'UNLOCK', 'UNLOCKFILE',
-            'UNLOCKRECORD', 'UNSTRING', 'UP', 'UPON', 'USAGE', 'USE',
-            'USING', 'VALUE', 'VALUES', 'WHEN', 'WITH', 'WORDS',
-            'WORKING-STORAGE', 'WRITE', 'ZERO', 'ZEROES'
-            ),
-        4 => array( //Standard functions
-            'ACOS', 'ANNUITY', 'ASIN', 'ATAN', 'CHAR', 'COS', 'CURRENT-DATE',
-            'DATE-OF-INTEGER', 'DAY-OF-INTEGER', 'FACTORIAL', 'INTEGER',
-            'INTEGER-OF-DATE', 'INTEGER-OF-DAY', 'INTEGER-PART', 'LENGTH',
-            'LOG', 'LOG10', 'LOWER-CASE', 'MAX', 'MEAN', 'MEDIAN', 'MIDRANGE',
-            'MIN', 'MOD', 'NUMVAL', 'NUMVAL-C', 'ORD', 'ORD-MAX', 'ORD-MIN',
-            'PRESENT-VALUE', 'RANDOM', 'RANGE', 'REM', 'REVERSE', 'SIN', 'SQRT',
-            'STANDARD-DEVIATION', 'SUM', 'TAN', 'UPPER-CASE', 'VARIANCE',
-            'WHEN-COMPILED'
-            ),
-        5 => array( //Privileged Built-in Functions
-            '#IN', '#OUT', '#TERM', '#TEMP', '#DYNAMIC', 'COBOL85^ARMTRAP',
-            'COBOL85^COMPLETION', 'COBOL_COMPLETION_', 'COBOL_CONTROL_',
-            'COBOL_GETENV_', 'COBOL_PUTENV_', 'COBOL85^RETURN^SORT^ERRORS',
-            'COBOL_RETURN_SORT_ERRORS_', 'COBOL85^REWIND^SEQUENTIAL',
-            'COBOL_REWIND_SEQUENTIAL_', 'COBOL85^SET^SORT^PARAM^TEXT',
-            'COBOL_SET_SORT_PARAM_TEXT_', 'COBOL85^SET^SORT^PARAM^VALUE',
-            'COBOL_SET_SORT_PARAM_VALUE_', 'COBOL_SET_MAX_RECORD_',
-            'COBOL_SETMODE_', 'COBOL85^SPECIAL^OPEN', 'COBOL_SPECIAL_OPEN_',
-            'COBOLASSIGN', 'COBOL_ASSIGN_', 'COBOLFILEINFO', 'COBOL_FILE_INFO_',
-            'COBOLSPOOLOPEN', 'CREATEPROCESS', 'ALTERPARAMTEXT',
-            'CHECKLOGICALNAME', 'CHECKMESSAGE', 'DELETEASSIGN', 'DELETEPARAM',
-            'DELETESTARTUP', 'GETASSIGNTEXT', 'GETASSIGNVALUE', 'GETBACKUPCPU',
-            'GETPARAMTEXT', 'GETSTARTUPTEXT', 'PUTASSIGNTEXT', 'PUTASSIGNVALUE',
-            'PUTPARAMTEXT', 'PUTSTARTUPTEXT'
-            )
-        ),
-    'SYMBOLS' => array(
-        //Avoid having - in identifiers marked as symbols
-        ' + ', ' - ', ' * ', ' / ', ' ** ',
-        '.', ',',
-        '=',
-        '(', ')', '[', ']'
-        ),
-    'CASE_SENSITIVE' => array(
-        GESHI_COMMENTS => false,
-        1 => false,
-        2 => false,
-        3 => false,
-        4 => false,
-        5 => false
-        ),
-    'STYLES' => array(
-        'KEYWORDS' => array(
-            1 => 'color: #000080; font-weight: bold;',
-            2 => 'color: #000000; font-weight: bold;',
-            3 => 'color: #008000; font-weight: bold;',
-            4 => 'color: #000080;',
-            5 => 'color: #008000;',
-            ),
-        'COMMENTS' => array(
-            1 => 'color: #a0a0a0; font-style: italic;',
-            'MULTI' => 'color: #a0a0a0; font-style: italic;'
-            ),
-        'ESCAPE_CHAR' => array(
-            0 => 'color: #000099; font-weight: bold;'
-            ),
-        'BRACKETS' => array(
-            0 => 'color: #339933;'
-            ),
-        'STRINGS' => array(
-            0 => 'color: #ff0000;'
-            ),
-        'NUMBERS' => array(
-            0 => 'color: #993399;'
-            ),
-        'METHODS' => array(
-            1 => 'color: #202020;'
-            ),
-        'SYMBOLS' => array(
-            0 => 'color: #000066;'
-            ),
-        'REGEXPS' => array(
-            ),
-        'SCRIPT' => array(
-            )
-        ),
-    'URLS' => array(
-        1 => '',
-        2 => '',
-        3 => '',
-        4 => '',
-        5 => ''
-        ),
-    'OOLANG' => false,
-    'OBJECT_SPLITTERS' => array(
-        ),
-    'REGEXPS' => array(
-        ),
-    'STRICT_MODE_APPLIES' => GESHI_NEVER,
-    'SCRIPT_DELIMITERS' => array(
-        ),
-    'HIGHLIGHT_STRICT_BLOCK' => array(
-        ),
-    'TAB_WIDTH' => 4
-    );
-
-?>
diff --git a/inc/geshi/parigp.php b/inc/geshi/parigp.php
deleted file mode 100644
index c9c73095bdcf0c3adc7d10aa2536e9b04d593519..0000000000000000000000000000000000000000
--- a/inc/geshi/parigp.php
+++ /dev/null
@@ -1,277 +0,0 @@
-<?php
-/*************************************************************************************
- * parigp.php
- * --------
- * Author: Charles R Greathouse IV (charles@crg4.com)
- * Copyright: 2011 Charles R Greathouse IV (http://math.crg4.com/)
- * Release Version: 1.0.8.11
- * Date Started: 2011/05/11
- *
- * PARI/GP language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2011/07/09 (1.0.8.11)
- *  -  First Release
- *
- * TODO (updated 2011/07/09)
- * -------------------------
- *
- *
- *************************************************************************************
- *
- *     This file is part of GeSHi.
- *
- *   GeSHi is free software; you can redistribute it and/or modify
- *   it under the terms of the GNU General Public License as published by
- *   the Free Software Foundation; either version 2 of the License, or
- *   (at your option) any later version.
- *
- *   GeSHi is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with GeSHi; if not, write to the Free Software
- *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- ************************************************************************************/
-
-$language_data = array(
-    'LANG_NAME' => 'PARI/GP',
-    'COMMENT_SINGLE' => array(1 => '\\\\'),
-    'COMMENT_MULTI' => array('/*' => '*/'),
-    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
-    'QUOTEMARKS' => array('"'),
-    'ESCAPE_CHAR' => '\\',
-    'NUMBERS' => array(
-        # Integers
-        1 => GESHI_NUMBER_INT_BASIC,
-        # Reals
-        2 => GESHI_NUMBER_FLT_SCI_ZERO
-        ),
-    'KEYWORDS' => array(
-        1 => array(
-            'addprimes','bestappr','bezout','bezoutres','bigomega','binomial',
-            'chinese','content','contfrac','contfracpnqn','core','coredisc',
-            'dirdiv','direuler','dirmul','divisors','eulerphi','factor',
-            'factorback','factorcantor','factorff','factorial','factorint',
-            'factormod','ffgen','ffinit','fflog','fforder','ffprimroot',
-            'fibonacci','gcd','hilbert','isfundamental','ispower','isprime',
-            'ispseudoprime','issquare','issquarefree','kronecker','lcm',
-            'moebius','nextprime','numbpart','numdiv','omega','partitions',
-            'polrootsff','precprime','prime','primepi','primes','qfbclassno',
-            'qfbcompraw','qfbhclassno','qfbnucomp','qfbnupow','qfbpowraw',
-            'qfbprimeform','qfbred','qfbsolve','quadclassunit','quaddisc',
-            'quadgen','quadhilbert','quadpoly','quadray','quadregulator',
-            'quadunit','removeprimes','sigma','sqrtint','stirling',
-            'sumdedekind','zncoppersmith','znlog','znorder','znprimroot',
-            'znstar','Col','List','Mat','Mod','Pol','Polrev','Qfb','Ser','Set',
-            'Str','Strchr','Strexpand','Strtex','Vec','Vecrev','Vecsmall',
-            'binary','bitand','bitneg','bitnegimply','bitor','bittest','bitxor',
-            'ceil','centerlift','component','conj','conjvec','denominator',
-            'floor','frac','imag','length','lift','norm','norml2','numerator',
-            'numtoperm','padicprec','permtonum','precision','random','real',
-            'round','simplify','sizebyte','sizedigit','truncate','valuation',
-            'variable','ellL1','elladd','ellak','ellan','ellanalyticrank',
-            'ellap','ellbil','ellchangecurve','ellchangepoint','ellconvertname',
-            'elldivpol','elleisnum','elleta','ellgenerators','ellglobalred',
-            'ellgroup','ellheight','ellheightmatrix','ellidentify','ellinit',
-            'ellisoncurve','ellj','elllocalred','elllog','elllseries',
-            'ellminimalmodel','ellmodulareqn','ellorder','ellordinate',
-            'ellpointtoz','ellpow','ellrootno','ellsearch','ellsigma','ellsub',
-            'elltaniyama','elltatepairing','elltors','ellweilpairing','ellwp',
-            'ellzeta','ellztopoint','bnfcertify','bnfcompress',
-            'bnfdecodemodule','bnfinit','bnfisintnorm','bnfisnorm',
-            'bnfisprincipal','bnfissunit','bnfisunit','bnfnarrow','bnfsignunit',
-            'bnfsunit','bnrL1','bnrclassno','bnrclassnolist','bnrconductor',
-            'bnrconductorofchar','bnrdisc','bnrdisclist','bnrinit',
-            'bnrisconductor','bnrisprincipal','bnrrootnumber','bnrstark',
-            'dirzetak','factornf','galoisexport','galoisfixedfield',
-            'galoisgetpol','galoisidentify','galoisinit','galoisisabelian',
-            'galoisisnormal','galoispermtopol','galoissubcyclo',
-            'galoissubfields','galoissubgroups','idealadd','idealaddtoone',
-            'idealappr','idealchinese','idealcoprime','idealdiv','idealfactor',
-            'idealfactorback','idealfrobenius','idealhnf','idealintersect',
-            'idealinv','ideallist','ideallistarch','ideallog','idealmin',
-            'idealmul','idealnorm','idealpow','idealprimedec','idealramgroups',
-            'idealred','idealstar','idealtwoelt','idealval','matalgtobasis',
-            'matbasistoalg','modreverse','newtonpoly','nfalgtobasis','nfbasis',
-            'nfbasistoalg','nfdetint','nfdisc','nfeltadd','nfeltdiv',
-            'nfeltdiveuc','nfeltdivmodpr','nfeltdivrem','nfeltmod','nfeltmul',
-            'nfeltmulmodpr','nfeltnorm','nfeltpow','nfeltpowmodpr',
-            'nfeltreduce','nfeltreducemodpr','nfelttrace','nfeltval','nffactor',
-            'nffactorback','nffactormod','nfgaloisapply','nfgaloisconj',
-            'nfhilbert','nfhnf','nfhnfmod','nfinit','nfisideal','nfisincl',
-            'nfisisom','nfkermodpr','nfmodprinit','nfnewprec','nfroots',
-            'nfrootsof1','nfsnf','nfsolvemodpr','nfsubfields','polcompositum',
-            'polgalois','polred','polredabs','polredord','poltschirnhaus',
-            'rnfalgtobasis','rnfbasis','rnfbasistoalg','rnfcharpoly',
-            'rnfconductor','rnfdedekind','rnfdet','rnfdisc','rnfeltabstorel',
-            'rnfeltdown','rnfeltreltoabs','rnfeltup','rnfequation',
-            'rnfhnfbasis','rnfidealabstorel','rnfidealdown','rnfidealhnf',
-            'rnfidealmul','rnfidealnormabs','rnfidealnormrel',
-            'rnfidealreltoabs','rnfidealtwoelt','rnfidealup','rnfinit',
-            'rnfisabelian','rnfisfree','rnfisnorm','rnfisnorminit','rnfkummer',
-            'rnflllgram','rnfnormgroup','rnfpolred','rnfpolredabs',
-            'rnfpseudobasis','rnfsteinitz','subgrouplist','zetak','zetakinit',
-            'plot','plotbox','plotclip','plotcolor','plotcopy','plotcursor',
-            'plotdraw','ploth','plothraw','plothsizes','plotinit','plotkill',
-            'plotlines','plotlinetype','plotmove','plotpoints','plotpointsize',
-            'plotpointtype','plotrbox','plotrecth','plotrecthraw','plotrline',
-            'plotrmove','plotrpoint','plotscale','plotstring','psdraw',
-            'psploth','psplothraw','O','deriv','diffop','eval','factorpadic',
-            'intformal','padicappr','padicfields','polchebyshev','polcoeff',
-            'polcyclo','poldegree','poldisc','poldiscreduced','polhensellift',
-            'polhermite','polinterpolate','polisirreducible','pollead',
-            'pollegendre','polrecip','polresultant','polroots','polrootsmod',
-            'polrootspadic','polsturm','polsubcyclo','polsylvestermatrix',
-            'polsym','poltchebi','polzagier','serconvol','serlaplace',
-            'serreverse','subst','substpol','substvec','taylor','thue',
-            'thueinit','break','for','fordiv','forell','forprime','forstep',
-            'forsubgroup','forvec','if','next','return','until','while',
-            'Strprintf','addhelp','alarm','alias','allocatemem','apply',
-            'default','error','extern','externstr','getheap','getrand',
-            'getstack','gettime','global','input','install','kill','print1',
-            'print','printf','printtex','quit','read','readvec','select',
-            'setrand','system','trap','type','version','warning','whatnow',
-            'write1','write','writebin','writetex','divrem','lex','max','min',
-            'shift','shiftmul','sign','vecmax','vecmin','derivnum','intcirc',
-            'intfouriercos','intfourierexp','intfouriersin','intfuncinit',
-            'intlaplaceinv','intmellininv','intmellininvshort','intnum',
-            'intnuminit','intnuminitgen','intnumromb','intnumstep','prod',
-            'prodeuler','prodinf','solve','sum','sumalt','sumdiv','suminf',
-            'sumnum','sumnumalt','sumnuminit','sumpos','Euler','I','Pi','abs',
-            'acos','acosh','agm','arg','asin','asinh','atan','atanh','bernfrac',
-            'bernreal','bernvec','besselh1','besselh2','besseli','besselj',
-            'besseljh','besselk','besseln','cos','cosh','cotan','dilog','eint1',
-            'erfc','eta','exp','gamma','gammah','hyperu','incgam','incgamc',
-            'lngamma','log','polylog','psi','sin','sinh','sqr','sqrt','sqrtn',
-            'tan','tanh','teichmuller','theta','thetanullk','weber','zeta',
-            'algdep','charpoly','concat','lindep','listcreate','listinsert',
-            'listkill','listpop','listput','listsort','matadjoint',
-            'matcompanion','matdet','matdetint','matdiagonal','mateigen',
-            'matfrobenius','mathess','mathilbert','mathnf','mathnfmod',
-            'mathnfmodid','matid','matimage','matimagecompl','matindexrank',
-            'matintersect','matinverseimage','matisdiagonal','matker',
-            'matkerint','matmuldiagonal','matmultodiagonal','matpascal',
-            'matrank','matrix','matrixqz','matsize','matsnf','matsolve',
-            'matsolvemod','matsupplement','mattranspose','minpoly','qfgaussred',
-            'qfjacobi','qflll','qflllgram','qfminim','qfperfection','qfrep',
-            'qfsign','setintersect','setisset','setminus','setsearch','cmp',
-            'setunion','trace','vecextract','vecsort','vector','vectorsmall',
-            'vectorv','ellheegner'
-            ),
-
-        2 => array(
-            'void','bool','negbool','small','int',/*'real',*/'mp','var','lg','pol',
-            'vecsmall','vec','list','str','genstr','gen','typ'
-            ),
-
-        3 => array(
-            'TeXstyle','breakloop','colors','compatible','datadir','debug',
-            'debugfiles','debugmem','echo','factor_add_primes','factor_proven',
-            'format','graphcolormap','graphcolors','help','histfile','histsize',
-            'lines','linewrap',/*'log',*/'logfile','new_galois_format','output',
-            'parisize','path','prettyprinter','primelimit','prompt_cont',
-            'prompt','psfile','readline','realprecision','recover','secure',
-            'seriesprecision',/*'simplify',*/'strictmatch','timer'
-            ),
-
-        4 => array(
-            'alarmer','archer','errpile','gdiver','impl','syntaxer','invmoder',
-            'overflower','talker','typeer','user'
-            )
-        ),
-    'SYMBOLS' => array(
-        1 => array(
-            '(',')','{','}','[',']','+','-','*','/','%','=','<','>','!','^','&','|','?',';',':',',','\\','\''
-            )
-        ),
-    'CASE_SENSITIVE' => array(
-        GESHI_COMMENTS => false,
-        1 => true,
-        2 => true,
-        3 => true,
-        4 => true
-        ),
-    'STYLES' => array(
-        'KEYWORDS' => array(
-            1 => 'color: #0000ff;',
-            2 => 'color: #e07022;',
-            3 => 'color: #00d2d2;',
-            4 => 'color: #00d2d2;'
-            ),
-        'COMMENTS' => array(
-            1 => 'color: #008000;',
-            'MULTI' => 'color: #008000;'
-            ),
-        'ESCAPE_CHAR' => array(
-            0 => 'color: #111111; font-weight: bold;'
-            ),
-        'BRACKETS' => array(
-            0 => 'color: #002222;'
-            ),
-        'STRINGS' => array(
-            0 => 'color: #800080;'
-            ),
-        'NUMBERS' => array(
-            0 => 'color: #666666;',
-            1 => 'color: #666666;',
-            2 => 'color: #666666;'
-            ),
-        'METHODS' => array(
-            0 => 'color: #004000;'
-            ),
-        'SYMBOLS' => array(
-            1 => 'color: #339933;'
-            ),
-        'REGEXPS' => array(
-            0 => 'color: #e07022',    # Should be the same as keyword group 2
-            1 => 'color: #555555'
-            ),
-        'SCRIPT' => array()
-        ),
-    'URLS' => array(
-        1 => '',
-        2 => '',
-        3 => '',
-        4 => ''
-        ),
-    'OOLANG' => true,
-    'OBJECT_SPLITTERS' => array(
-        1 => '.'
-        ),
-    'REGEXPS' => array(
-        0 => array( # types marked on variables
-            GESHI_SEARCH => '(?<!\\\\ )"(t_(?:INT|REAL|INTMOD|FRAC|FFELT|COMPLEX|PADIC|QUAD|POLMOD|POL|SER|RFRAC|QFR|QFI|VEC|COL|MAT|LIST|STR|VECSMALL|CLOSURE))"',
-            GESHI_REPLACE => '\\1',
-            GESHI_MODIFIERS => '',
-            GESHI_BEFORE => '"',
-            GESHI_AFTER => '"'
-            ),
-        1 => array( # literal variables
-            GESHI_SEARCH => '(?<!\\\\)(\'[a-zA-Z][a-zA-Z0-9_]*)',
-            GESHI_REPLACE => '\\1',
-            GESHI_MODIFIERS => '',
-            GESHI_BEFORE => '',
-            GESHI_AFTER => ''
-            )
-        ),
-    'STRICT_MODE_APPLIES' => GESHI_NEVER,
-    'SCRIPT_DELIMITERS' => array(
-        2 => array(
-            '[a-zA-Z][a-zA-Z0-9_]*:' => ''
-            ),
-        3 => array(
-            'default(' => ''
-            ),
-        4 => array(
-            'trap(' => ''
-            ),
-        ),
-    'HIGHLIGHT_STRICT_BLOCK' => array()
-);
-
-?>
diff --git a/inc/init.php b/inc/init.php
index bc9ab6d70f17edbe5a1719676b17057d21dcf58d..6d271dfb0f0ae40be798d24577bb718dd2f39c49 100644
--- a/inc/init.php
+++ b/inc/init.php
@@ -191,6 +191,7 @@ global $plugin_controller_class, $plugin_controller;
 if (empty($plugin_controller_class)) $plugin_controller_class = 'Doku_Plugin_Controller';
 
 // load libraries
+require_once(DOKU_INC.'vendor/autoload.php');
 require_once(DOKU_INC.'inc/load.php');
 
 // disable gzip if not available
diff --git a/inc/load.php b/inc/load.php
index 18786dc79c56805cd69827c4382c84e11fc62d35..daf85618868a1b3d0efe5c9ab1ccdcae3d96d22b 100644
--- a/inc/load.php
+++ b/inc/load.php
@@ -70,7 +70,6 @@ function load_autoload($name){
         'IXR_Client'            => DOKU_INC.'inc/IXR_Library.php',
         'IXR_IntrospectionServer' => DOKU_INC.'inc/IXR_Library.php',
         'Doku_Plugin_Controller'=> DOKU_INC.'inc/plugincontroller.class.php',
-        'GeSHi'                 => DOKU_INC.'inc/geshi.php',
         'Tar'                   => DOKU_INC.'inc/Tar.class.php',
         'TarLib'                => DOKU_INC.'inc/TarLib.class.php',
         'ZipLib'                => DOKU_INC.'inc/ZipLib.class.php',
diff --git a/inc/parserutils.php b/inc/parserutils.php
index 17c331ef5a9dc6b57901736f04695ef95b004047..8650f974f80a1442d914a4ee8b9422a77acf5519 100644
--- a/inc/parserutils.php
+++ b/inc/parserutils.php
@@ -746,14 +746,13 @@ function p_xhtml_cached_geshi($code, $language, $wrapper='pre') {
     $cache = getCacheName($language.$code,".code");
     $ctime = @filemtime($cache);
     if($ctime && !$INPUT->bool('purge') &&
-            $ctime > filemtime(DOKU_INC.'inc/geshi.php') &&                 // geshi changed
-            $ctime > @filemtime(DOKU_INC.'inc/geshi/'.$language.'.php') &&  // language syntax definition changed
+            $ctime > filemtime(DOKU_INC.'vendor/composer/installed.json') &&  // libraries changed
             $ctime > filemtime(reset($config_cascade['main']['default']))){ // dokuwiki changed
         $highlighted_code = io_readFile($cache, false);
 
     } else {
 
-        $geshi = new GeSHi($code, $language, DOKU_INC . 'inc/geshi');
+        $geshi = new GeSHi($code, $language);
         $geshi->set_encoding('utf-8');
         $geshi->enable_classes();
         $geshi->set_header_type(GESHI_HEADER_PRE);
diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php
index 6c0946b09acf185d206e8294bea7d6be8da72993..d089245b500e97200db88e49961dad194517478b 100644
--- a/lib/plugins/extension/helper/extension.php
+++ b/lib/plugins/extension/helper/extension.php
@@ -1035,33 +1035,24 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
 
         $ext = $this->guess_archive($file);
         if(in_array($ext, array('tar', 'bz', 'gz'))) {
-            switch($ext) {
-                case 'bz':
-                    $compress_type = Tar::COMPRESS_BZIP;
-                    break;
-                case 'gz':
-                    $compress_type = Tar::COMPRESS_GZIP;
-                    break;
-                default:
-                    $compress_type = Tar::COMPRESS_NONE;
-            }
 
-            $tar = new Tar();
             try {
-                $tar->open($file, $compress_type);
+                $tar = new \splitbrain\PHPArchive\Tar();
+                $tar->open($file);
                 $tar->extract($target);
-            } catch (Exception $e) {
+            } catch (\splitbrain\PHPArchive\ArchiveIOException $e) {
                 throw new Exception($this->getLang('error_decompress').' '.$e->getMessage());
             }
 
             return true;
         } elseif($ext == 'zip') {
 
-            $zip = new ZipLib();
-            $ok  = $zip->Extract($file, $target);
-
-            if($ok == -1){
-                throw new Exception($this->getLang('error_decompress').' Error extracting the zip archive');
+            try {
+                $zip = new \splitbrain\PHPArchive\Zip();
+                $zip->open($file);
+                $zip->extract($target);
+            } catch (\splitbrain\PHPArchive\ArchiveIOException $e) {
+                throw new Exception($this->getLang('error_decompress').' '.$e->getMessage());
             }
 
             return true;
diff --git a/vendor/README b/vendor/README
new file mode 100644
index 0000000000000000000000000000000000000000..e4027f419560c19f98684c6b2a52ed8a1289f905
--- /dev/null
+++ b/vendor/README
@@ -0,0 +1,6 @@
+====== composer managed libraries ======
+
+All file within here are manged through composer and should not be
+edited directly. Instead provide upstream patches.
+
+Learn more about Composer at http://getcomposer.org
diff --git a/vendor/autoload.php b/vendor/autoload.php
new file mode 100644
index 0000000000000000000000000000000000000000..88c7fd93b4f81107eb73d97d9ab635e3e3db33d4
--- /dev/null
+++ b/vendor/autoload.php
@@ -0,0 +1,7 @@
+<?php
+
+// autoload.php @generated by Composer
+
+require_once __DIR__ . '/composer' . '/autoload_real.php';
+
+return ComposerAutoloaderInita19a915ee98347a0c787119619d2ff9b::getLoader();
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
new file mode 100644
index 0000000000000000000000000000000000000000..5e1469e8307d9c644831f694ed8eccdd4afccc28
--- /dev/null
+++ b/vendor/composer/ClassLoader.php
@@ -0,0 +1,413 @@
+<?php
+
+/*
+ * This file is part of Composer.
+ *
+ * (c) Nils Adermann <naderman@naderman.de>
+ *     Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer\Autoload;
+
+/**
+ * ClassLoader implements a PSR-0 class loader
+ *
+ * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
+ *
+ *     $loader = new \Composer\Autoload\ClassLoader();
+ *
+ *     // register classes with namespaces
+ *     $loader->add('Symfony\Component', __DIR__.'/component');
+ *     $loader->add('Symfony',           __DIR__.'/framework');
+ *
+ *     // activate the autoloader
+ *     $loader->register();
+ *
+ *     // to enable searching the include path (eg. for PEAR packages)
+ *     $loader->setUseIncludePath(true);
+ *
+ * In this example, if you try to use a class in the Symfony\Component
+ * namespace or one of its children (Symfony\Component\Console for instance),
+ * the autoloader will first look for the class under the component/
+ * directory, and it will then fallback to the framework/ directory if not
+ * found before giving up.
+ *
+ * This class is loosely based on the Symfony UniversalClassLoader.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+class ClassLoader
+{
+    // PSR-4
+    private $prefixLengthsPsr4 = array();
+    private $prefixDirsPsr4 = array();
+    private $fallbackDirsPsr4 = array();
+
+    // PSR-0
+    private $prefixesPsr0 = array();
+    private $fallbackDirsPsr0 = array();
+
+    private $useIncludePath = false;
+    private $classMap = array();
+
+    private $classMapAuthoritative = false;
+
+    public function getPrefixes()
+    {
+        if (!empty($this->prefixesPsr0)) {
+            return call_user_func_array('array_merge', $this->prefixesPsr0);
+        }
+
+        return array();
+    }
+
+    public function getPrefixesPsr4()
+    {
+        return $this->prefixDirsPsr4;
+    }
+
+    public function getFallbackDirs()
+    {
+        return $this->fallbackDirsPsr0;
+    }
+
+    public function getFallbackDirsPsr4()
+    {
+        return $this->fallbackDirsPsr4;
+    }
+
+    public function getClassMap()
+    {
+        return $this->classMap;
+    }
+
+    /**
+     * @param array $classMap Class to filename map
+     */
+    public function addClassMap(array $classMap)
+    {
+        if ($this->classMap) {
+            $this->classMap = array_merge($this->classMap, $classMap);
+        } else {
+            $this->classMap = $classMap;
+        }
+    }
+
+    /**
+     * Registers a set of PSR-0 directories for a given prefix, either
+     * appending or prepending to the ones previously set for this prefix.
+     *
+     * @param string       $prefix  The prefix
+     * @param array|string $paths   The PSR-0 root directories
+     * @param bool         $prepend Whether to prepend the directories
+     */
+    public function add($prefix, $paths, $prepend = false)
+    {
+        if (!$prefix) {
+            if ($prepend) {
+                $this->fallbackDirsPsr0 = array_merge(
+                    (array) $paths,
+                    $this->fallbackDirsPsr0
+                );
+            } else {
+                $this->fallbackDirsPsr0 = array_merge(
+                    $this->fallbackDirsPsr0,
+                    (array) $paths
+                );
+            }
+
+            return;
+        }
+
+        $first = $prefix[0];
+        if (!isset($this->prefixesPsr0[$first][$prefix])) {
+            $this->prefixesPsr0[$first][$prefix] = (array) $paths;
+
+            return;
+        }
+        if ($prepend) {
+            $this->prefixesPsr0[$first][$prefix] = array_merge(
+                (array) $paths,
+                $this->prefixesPsr0[$first][$prefix]
+            );
+        } else {
+            $this->prefixesPsr0[$first][$prefix] = array_merge(
+                $this->prefixesPsr0[$first][$prefix],
+                (array) $paths
+            );
+        }
+    }
+
+    /**
+     * Registers a set of PSR-4 directories for a given namespace, either
+     * appending or prepending to the ones previously set for this namespace.
+     *
+     * @param string       $prefix  The prefix/namespace, with trailing '\\'
+     * @param array|string $paths   The PSR-0 base directories
+     * @param bool         $prepend Whether to prepend the directories
+     *
+     * @throws \InvalidArgumentException
+     */
+    public function addPsr4($prefix, $paths, $prepend = false)
+    {
+        if (!$prefix) {
+            // Register directories for the root namespace.
+            if ($prepend) {
+                $this->fallbackDirsPsr4 = array_merge(
+                    (array) $paths,
+                    $this->fallbackDirsPsr4
+                );
+            } else {
+                $this->fallbackDirsPsr4 = array_merge(
+                    $this->fallbackDirsPsr4,
+                    (array) $paths
+                );
+            }
+        } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
+            // Register directories for a new namespace.
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
+                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+            }
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+            $this->prefixDirsPsr4[$prefix] = (array) $paths;
+        } elseif ($prepend) {
+            // Prepend directories for an already registered namespace.
+            $this->prefixDirsPsr4[$prefix] = array_merge(
+                (array) $paths,
+                $this->prefixDirsPsr4[$prefix]
+            );
+        } else {
+            // Append directories for an already registered namespace.
+            $this->prefixDirsPsr4[$prefix] = array_merge(
+                $this->prefixDirsPsr4[$prefix],
+                (array) $paths
+            );
+        }
+    }
+
+    /**
+     * Registers a set of PSR-0 directories for a given prefix,
+     * replacing any others previously set for this prefix.
+     *
+     * @param string       $prefix The prefix
+     * @param array|string $paths  The PSR-0 base directories
+     */
+    public function set($prefix, $paths)
+    {
+        if (!$prefix) {
+            $this->fallbackDirsPsr0 = (array) $paths;
+        } else {
+            $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
+        }
+    }
+
+    /**
+     * Registers a set of PSR-4 directories for a given namespace,
+     * replacing any others previously set for this namespace.
+     *
+     * @param string       $prefix The prefix/namespace, with trailing '\\'
+     * @param array|string $paths  The PSR-4 base directories
+     *
+     * @throws \InvalidArgumentException
+     */
+    public function setPsr4($prefix, $paths)
+    {
+        if (!$prefix) {
+            $this->fallbackDirsPsr4 = (array) $paths;
+        } else {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
+                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+            }
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+            $this->prefixDirsPsr4[$prefix] = (array) $paths;
+        }
+    }
+
+    /**
+     * Turns on searching the include path for class files.
+     *
+     * @param bool $useIncludePath
+     */
+    public function setUseIncludePath($useIncludePath)
+    {
+        $this->useIncludePath = $useIncludePath;
+    }
+
+    /**
+     * Can be used to check if the autoloader uses the include path to check
+     * for classes.
+     *
+     * @return bool
+     */
+    public function getUseIncludePath()
+    {
+        return $this->useIncludePath;
+    }
+
+    /**
+     * Turns off searching the prefix and fallback directories for classes
+     * that have not been registered with the class map.
+     *
+     * @param bool $classMapAuthoritative
+     */
+    public function setClassMapAuthoritative($classMapAuthoritative)
+    {
+        $this->classMapAuthoritative = $classMapAuthoritative;
+    }
+
+    /**
+     * Should class lookup fail if not found in the current class map?
+     *
+     * @return bool
+     */
+    public function isClassMapAuthoritative()
+    {
+        return $this->classMapAuthoritative;
+    }
+
+    /**
+     * Registers this instance as an autoloader.
+     *
+     * @param bool $prepend Whether to prepend the autoloader or not
+     */
+    public function register($prepend = false)
+    {
+        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+    }
+
+    /**
+     * Unregisters this instance as an autoloader.
+     */
+    public function unregister()
+    {
+        spl_autoload_unregister(array($this, 'loadClass'));
+    }
+
+    /**
+     * Loads the given class or interface.
+     *
+     * @param  string    $class The name of the class
+     * @return bool|null True if loaded, null otherwise
+     */
+    public function loadClass($class)
+    {
+        if ($file = $this->findFile($class)) {
+            includeFile($file);
+
+            return true;
+        }
+    }
+
+    /**
+     * Finds the path to the file where the class is defined.
+     *
+     * @param string $class The name of the class
+     *
+     * @return string|false The path if found, false otherwise
+     */
+    public function findFile($class)
+    {
+        // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
+        if ('\\' == $class[0]) {
+            $class = substr($class, 1);
+        }
+
+        // class map lookup
+        if (isset($this->classMap[$class])) {
+            return $this->classMap[$class];
+        }
+        if ($this->classMapAuthoritative) {
+            return false;
+        }
+
+        $file = $this->findFileWithExtension($class, '.php');
+
+        // Search for Hack files if we are running on HHVM
+        if ($file === null && defined('HHVM_VERSION')) {
+            $file = $this->findFileWithExtension($class, '.hh');
+        }
+
+        if ($file === null) {
+            // Remember that this class does not exist.
+            return $this->classMap[$class] = false;
+        }
+
+        return $file;
+    }
+
+    private function findFileWithExtension($class, $ext)
+    {
+        // PSR-4 lookup
+        $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
+
+        $first = $class[0];
+        if (isset($this->prefixLengthsPsr4[$first])) {
+            foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
+                if (0 === strpos($class, $prefix)) {
+                    foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
+                        if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
+                            return $file;
+                        }
+                    }
+                }
+            }
+        }
+
+        // PSR-4 fallback dirs
+        foreach ($this->fallbackDirsPsr4 as $dir) {
+            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
+                return $file;
+            }
+        }
+
+        // PSR-0 lookup
+        if (false !== $pos = strrpos($class, '\\')) {
+            // namespaced class name
+            $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
+                . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
+        } else {
+            // PEAR-like class name
+            $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
+        }
+
+        if (isset($this->prefixesPsr0[$first])) {
+            foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
+                if (0 === strpos($class, $prefix)) {
+                    foreach ($dirs as $dir) {
+                        if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+                            return $file;
+                        }
+                    }
+                }
+            }
+        }
+
+        // PSR-0 fallback dirs
+        foreach ($this->fallbackDirsPsr0 as $dir) {
+            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+                return $file;
+            }
+        }
+
+        // PSR-0 include paths.
+        if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
+            return $file;
+        }
+    }
+}
+
+/**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ */
+function includeFile($file)
+{
+    include $file;
+}
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
new file mode 100644
index 0000000000000000000000000000000000000000..63b550c324fd93a756ab232540213b8ad94777d3
--- /dev/null
+++ b/vendor/composer/autoload_classmap.php
@@ -0,0 +1,10 @@
+<?php
+
+// autoload_classmap.php @generated by Composer
+
+$vendorDir = dirname(dirname(__FILE__));
+$baseDir = dirname($vendorDir);
+
+return array(
+    'GeSHi' => $vendorDir . '/easybook/geshi/geshi.php',
+);
diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php
new file mode 100644
index 0000000000000000000000000000000000000000..b7fc0125dbca56fd7565ad62097672a59473e64e
--- /dev/null
+++ b/vendor/composer/autoload_namespaces.php
@@ -0,0 +1,9 @@
+<?php
+
+// autoload_namespaces.php @generated by Composer
+
+$vendorDir = dirname(dirname(__FILE__));
+$baseDir = dirname($vendorDir);
+
+return array(
+);
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
new file mode 100644
index 0000000000000000000000000000000000000000..e4d7132708607447bfb335873639567047650451
--- /dev/null
+++ b/vendor/composer/autoload_psr4.php
@@ -0,0 +1,10 @@
+<?php
+
+// autoload_psr4.php @generated by Composer
+
+$vendorDir = dirname(dirname(__FILE__));
+$baseDir = dirname($vendorDir);
+
+return array(
+    'splitbrain\\PHPArchive\\' => array($vendorDir . '/splitbrain/php-archive/src'),
+);
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
new file mode 100644
index 0000000000000000000000000000000000000000..fee79daed35482810260f06b10635f3ab8cc0ed5
--- /dev/null
+++ b/vendor/composer/autoload_real.php
@@ -0,0 +1,50 @@
+<?php
+
+// autoload_real.php @generated by Composer
+
+class ComposerAutoloaderInita19a915ee98347a0c787119619d2ff9b
+{
+    private static $loader;
+
+    public static function loadClassLoader($class)
+    {
+        if ('Composer\Autoload\ClassLoader' === $class) {
+            require __DIR__ . '/ClassLoader.php';
+        }
+    }
+
+    public static function getLoader()
+    {
+        if (null !== self::$loader) {
+            return self::$loader;
+        }
+
+        spl_autoload_register(array('ComposerAutoloaderInita19a915ee98347a0c787119619d2ff9b', 'loadClassLoader'), true, true);
+        self::$loader = $loader = new \Composer\Autoload\ClassLoader();
+        spl_autoload_unregister(array('ComposerAutoloaderInita19a915ee98347a0c787119619d2ff9b', 'loadClassLoader'));
+
+        $map = require __DIR__ . '/autoload_namespaces.php';
+        foreach ($map as $namespace => $path) {
+            $loader->set($namespace, $path);
+        }
+
+        $map = require __DIR__ . '/autoload_psr4.php';
+        foreach ($map as $namespace => $path) {
+            $loader->setPsr4($namespace, $path);
+        }
+
+        $classMap = require __DIR__ . '/autoload_classmap.php';
+        if ($classMap) {
+            $loader->addClassMap($classMap);
+        }
+
+        $loader->register(true);
+
+        return $loader;
+    }
+}
+
+function composerRequirea19a915ee98347a0c787119619d2ff9b($file)
+{
+    require $file;
+}
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
new file mode 100644
index 0000000000000000000000000000000000000000..a9eb3f9ee78dce1e5f79ea1284b967fcffb2df6b
--- /dev/null
+++ b/vendor/composer/installed.json
@@ -0,0 +1,99 @@
+[
+    {
+        "name": "splitbrain/php-archive",
+        "version": "1.0.0",
+        "version_normalized": "1.0.0.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/splitbrain/php-archive.git",
+            "reference": "a0fbfc2f85ed491f3d2af42cff48a9cb783a8549"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/splitbrain/php-archive/zipball/a0fbfc2f85ed491f3d2af42cff48a9cb783a8549",
+            "reference": "a0fbfc2f85ed491f3d2af42cff48a9cb783a8549",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">=5.3.0"
+        },
+        "require-dev": {
+            "phpunit/phpunit": "4.5.*"
+        },
+        "time": "2015-02-25 20:15:02",
+        "type": "library",
+        "installation-source": "dist",
+        "autoload": {
+            "psr-4": {
+                "splitbrain\\PHPArchive\\": "src"
+            }
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "MIT"
+        ],
+        "authors": [
+            {
+                "name": "Andreas Gohr",
+                "email": "andi@splitbrain.org"
+            }
+        ],
+        "description": "Pure-PHP implementation to read and write TAR and ZIP archives",
+        "keywords": [
+            "archive",
+            "extract",
+            "tar",
+            "unpack",
+            "unzip",
+            "zip"
+        ]
+    },
+    {
+        "name": "easybook/geshi",
+        "version": "v1.0.8.14",
+        "version_normalized": "1.0.8.14",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/easybook/geshi.git",
+            "reference": "af589a67bf308791bb13e54bddd9aa3544b7dff8"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/easybook/geshi/zipball/af589a67bf308791bb13e54bddd9aa3544b7dff8",
+            "reference": "af589a67bf308791bb13e54bddd9aa3544b7dff8",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">4.3.0"
+        },
+        "time": "2015-04-15 13:21:45",
+        "type": "library",
+        "installation-source": "dist",
+        "autoload": {
+            "classmap": [
+                "./"
+            ]
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "GPL-2.0"
+        ],
+        "authors": [
+            {
+                "name": "Nigel McNie",
+                "email": "nigel@geshi.org"
+            },
+            {
+                "name": "Benny Baumann",
+                "email": "BenBE@geshi.org"
+            }
+        ],
+        "description": "GeSHi - Generic Syntax Highlighter. This is an unmodified port of GeSHi project code found on SourceForge.",
+        "homepage": "http://qbnz.com/highlighter",
+        "keywords": [
+            "highlight",
+            "highlighter",
+            "syntax"
+        ]
+    }
+]
diff --git a/vendor/easybook/geshi/README.md b/vendor/easybook/geshi/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..0a12d08bbb43574eef288e0442b59b7a77c3d4e8
--- /dev/null
+++ b/vendor/easybook/geshi/README.md
@@ -0,0 +1,10 @@
+# GeSHi - Generic Syntax Highlighter #
+
+This repository has been created just to be able to install GeSHi as a Composer
+package. Technically it's a port of the GeSHi project code found on SourceForge:
+http://sourceforge.net/projects/geshi/
+
+Differences from the official SourceForge repository:
+
+  * 11/may/2014: added `sass.php` file to highlight Sass stylesheets.
+  * 28/sep/2012: added `twig.php` file to highlight Twig templates.
diff --git a/vendor/easybook/geshi/composer.json b/vendor/easybook/geshi/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..33494664cb5c8d23eb2c04d34587694999aa8606
--- /dev/null
+++ b/vendor/easybook/geshi/composer.json
@@ -0,0 +1,24 @@
+{
+    "name": "easybook/geshi",
+    "type": "library",
+    "description": "GeSHi - Generic Syntax Highlighter. This is an unmodified port of GeSHi project code found on SourceForge.",
+    "homepage": "http://qbnz.com/highlighter",
+    "keywords": ["highlighter", "highlight", "syntax"],
+    "license": "GPL-2.0",
+    "authors": [
+        {
+            "name": "Benny Baumann",
+            "email": "BenBE@geshi.org"
+        },
+        {
+            "name": "Nigel McNie",
+            "email": "nigel@geshi.org"
+        }
+    ],
+    "require": {
+        "php": ">4.3.0"
+    }, 
+    "autoload": {
+        "classmap": ["./"]
+    }
+}
\ No newline at end of file
diff --git a/inc/geshi.php b/vendor/easybook/geshi/geshi.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi.php
rename to vendor/easybook/geshi/geshi.php
index c6ff9ef7773b95a40c2d6171a38abeb2f165af54..bd265af97925a12d8e132cf4d631b45577415324
--- a/inc/geshi.php
+++ b/vendor/easybook/geshi/geshi.php
@@ -41,7 +41,7 @@
 //
 
 /** The version of this GeSHi file */
-define('GESHI_VERSION', '1.0.8.11');
+define('GESHI_VERSION', '1.0.8.12');
 
 // Define the root directory for the GeSHi code tree
 if (!defined('GESHI_ROOT')) {
diff --git a/inc/geshi/4cs.php b/vendor/easybook/geshi/geshi/4cs.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/4cs.php
rename to vendor/easybook/geshi/geshi/4cs.php
index 5209c51e8026ea3b0ef107a1f50e92e19cbd9228..e5a00645c1e4934c05c6cb004f84df11e6c34f91
--- a/inc/geshi/4cs.php
+++ b/vendor/easybook/geshi/geshi/4cs.php
@@ -135,5 +135,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
\ No newline at end of file
diff --git a/inc/geshi/6502acme.php b/vendor/easybook/geshi/geshi/6502acme.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/6502acme.php
rename to vendor/easybook/geshi/geshi/6502acme.php
diff --git a/inc/geshi/6502kickass.php b/vendor/easybook/geshi/geshi/6502kickass.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/6502kickass.php
rename to vendor/easybook/geshi/geshi/6502kickass.php
diff --git a/inc/geshi/6502tasm.php b/vendor/easybook/geshi/geshi/6502tasm.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/6502tasm.php
rename to vendor/easybook/geshi/geshi/6502tasm.php
diff --git a/inc/geshi/68000devpac.php b/vendor/easybook/geshi/geshi/68000devpac.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/68000devpac.php
rename to vendor/easybook/geshi/geshi/68000devpac.php
diff --git a/inc/geshi/abap.php b/vendor/easybook/geshi/geshi/abap.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/abap.php
rename to vendor/easybook/geshi/geshi/abap.php
diff --git a/inc/geshi/actionscript.php b/vendor/easybook/geshi/geshi/actionscript.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/actionscript.php
rename to vendor/easybook/geshi/geshi/actionscript.php
diff --git a/inc/geshi/actionscript3.php b/vendor/easybook/geshi/geshi/actionscript3.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/actionscript3.php
rename to vendor/easybook/geshi/geshi/actionscript3.php
diff --git a/inc/geshi/ada.php b/vendor/easybook/geshi/geshi/ada.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/ada.php
rename to vendor/easybook/geshi/geshi/ada.php
diff --git a/vendor/easybook/geshi/geshi/aimms.php b/vendor/easybook/geshi/geshi/aimms.php
new file mode 100644
index 0000000000000000000000000000000000000000..f46bdd0bcd7a3ab71a538bcf49570fa6aed0dde1
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/aimms.php
@@ -0,0 +1,316 @@
+<?php
+/*************************************************************************************
+ * aimms.php
+ * --------
+ * Author: Guido Diepen (guido.diepen@aimms.com)
+ * Copyright: (c) 2011 Guido Diepen (http://www.aimms.com)
+ * Release Version: 1.0.8.12
+ * Date Started: 2011/05/05
+ *
+ * AIMMS language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/07/14 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/07/14)
+ * -------------------------
+ * * Make sure the last few function I may have missed
+ *   (like eval()) are included for highlighting
+ * * Split to several files - php4, php5 etc
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array(
+    'LANG_NAME' => 'AIMMS3',
+    'COMMENT_SINGLE' => array(1 => '!'),
+    'COMMENT_MULTI' => array('/*' => '*/'),
+    'HARDQUOTE' => array("'", "'"),
+    'HARDESCAPE' => array("'", "\\"),
+    'HARDCHAR' => "\\",
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array('"'),
+    'OBJECT_SPLITTERS' => array(),
+    'REGEXPS' => array(),
+    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+    'SCRIPT_DELIMITERS' => array(),
+    'HIGHLIGHT_STRICT_BLOCK' => array(),
+    'ESCAPE_CHAR' => '',
+    'KEYWORDS' => array(
+        1 => array(
+            'if', 'then', 'else', 'endif', 'elseif', 'for', 'do', 'while' , 'endfor' , 'endwhile', 'break', 'switch', 'endswitch',
+            'display', 'return', 'in', 'apply'
+
+            ),
+        2 => array(
+            'main model' , 'declaration section', 'procedure', 'endprocedure', 'endmodel', 'endsection' , 'set', 'parameter',
+            'string parameter', 'element parameter', 'quantity'
+            ),
+        3 => array(
+            'identifier', 'index', 'index domain', 'body'
+            ),
+        4 => array(
+            'ActiveCard','Card','ConvertUnit','DistributionCumulative','DistributionDensity','DistributionDeviation',
+            'DistributionInverseCumulative','DistributionInverseDensity','DistributionKurtosis','DistributionMean',
+            'DistributionSkewness','DistributionVariance','Element','EvaluateUnit','First','FormatString','Last',
+            'Ord','Unit','Val','Aggregate','AttributeToString','CaseCompareIdentifier','CaseCreateDifferenceFile',
+            'CloseDataSource','CreateTimeTable','ConstraintVariables','ConvertReferenceDate','CloneElement',
+            'FindNthString','FindReplaceNthString','FindReplaceStrings','FindString','StringOccurrences',
+            'CurrentToMoment','CurrentToString','CurrentToTimeSlot','DaylightsavingEndDate','DaylightsavingStartDate',
+            'DeclaredSubset','DomainIndex','IndexRange','IsRunningAsViewer','ListingFileCopy','ListingFileDelete',
+            'DirectoryGetFiles','DirectoryGetSubdirectories','DirectSQL','Disaggregate','ElementCast','ElementRange',
+            'EnvironmentGetString','EnvironmentSetString','errh::Adapt','errh::Attribute','errh::Category',
+            'errh::Code','errh::Column','errh::CreationTime','errh::Filename','errh::InsideCategory',
+            'errh::IsMarkedAsHandled','errh::Line','errh::MarkAsHandled','errh::Message','errh::Multiplicity',
+            'errh::Node','errh::NumberOfLocations','errh::Severity','ExcelAddNewSheet','ExcelAssignParameter',
+            'ExcelAssignSet','ExcelAssignTable','ExcelAssignValue','ExcelClearRange','ExcelCloseWorkbook',
+            'ExcelColumnName','ExcelColumnNumber','ExcelCopyRange','ExcelCreateWorkbook','ExcelDeleteSheet',
+            'ExcelPrint','ExcelRetrieveParameter','ExcelRetrieveSet','ExcelRetrieveTable','ExcelRetrieveValue',
+            'ExcelRunMacro','ExcelSaveWorkbook','ExcelSetActiveSheet','ExcelSetUpdateLinksBehavior',
+            'ExcelSetVisibility','FindUsedElements','GenerateCUT','GMP::Coefficient::Get',
+            'GMP::Coefficient::GetQuadratic','GMP::Coefficient::Set','GMP::Coefficient::SetQuadratic',
+            'GMP::Column::Add','GMP::Column::Delete','GMP::Column::Freeze','GMP::Column::GetLowerbound',
+            'GMP::Column::GetScale','GMP::Column::GetStatus','GMP::Column::GetType','GMP::Column::GetUpperbound',
+            'GMP::Column::SetAsObjective','GMP::Column::SetLowerbound','GMP::Column::SetType',
+            'GMP::Column::SetUpperbound','GMP::Column::Unfreeze','GMP::Instance::AddIntegerEliminationRows',
+            'GMP::Instance::CalculateSubGradient','GMP::Instance::Copy','GMP::Instance::CreateDual',
+            'GMP::Instance::CreateMasterMip','GMP::Instance::CreatePresolved',
+            'GMP::SolverSession::CreateProgressCategory','GMP::Instance::CreateProgressCategory',
+            'GMP::Instance::CreateSolverSession','GMP::Stochastic::CreateBendersRootproblem',
+            'GMP::Instance::Delete','GMP::Instance::DeleteIntegerEliminationRows',
+            'GMP::Instance::DeleteSolverSession','GMP::Instance::FindApproximatelyFeasibleSolution',
+            'GMP::Instance::FixColumns','GMP::Instance::Generate','GMP::Instance::GenerateRobustCounterpart',
+            'GMP::Instance::GenerateStochasticProgram','GMP::SolverSession::GetCallbackInterruptStatus',
+            'GMP::SolverSession::WaitForCompletion','GMP::SolverSession::WaitForSingleCompletion',
+            'GMP::SolverSession::ExecutionStatus','GMP::Instance::GetDirection','GMP::Instance::GetLinearObjective',
+            'GMP::Instance::GetMathematicalProgrammingType','GMP::Instance::GetMemoryUsed',
+            'GMP::Instance::GetNumberOfColumns','GMP::Instance::GetNumberOfIndicatorRows',
+            'GMP::Instance::GetNumberOfIntegerColumns','GMP::Instance::GetNumberOfNonlinearColumns',
+            'GMP::Instance::GetNumberOfNonlinearNonzeros','GMP::Instance::GetNumberOfNonlinearRows',
+            'GMP::Instance::GetNumberOfNonzeros','GMP::Instance::GetNumberOfRows',
+            'GMP::Instance::GetNumberOfSOS1Rows','GMP::Instance::GetNumberOfSOS2Rows',
+            'GMP::Instance::GetObjective','GMP::Instance::GetOptionValue','GMP::Instance::GetSolver',
+            'GMP::Instance::GetSymbolicMathematicalProgram','GMP::Instance::MemoryStatistics',
+            'GMP::Instance::Rename','GMP::Instance::SetCallbackAddCut','GMP::Instance::SetCallbackBranch',
+            'GMP::Instance::SetCallbackHeuristic','GMP::Instance::SetCallbackIncumbent',
+            'GMP::Instance::SetCallbackIterations','GMP::Instance::SetCallbackNewIncumbent',
+            'GMP::Instance::SetCallbackStatusChange','GMP::Instance::SetCutoff','GMP::Instance::SetDirection',
+            'GMP::Instance::SetMathematicalProgrammingType','GMP::Instance::SetSolver','GMP::Instance::Solve',
+            'GMP::Stochastic::GetObjectiveBound','GMP::Stochastic::GetRelativeWeight',
+            'GMP::Stochastic::GetRepresentativeScenario','GMP::Stochastic::UpdateBendersSubproblem',
+            'GMP::Linearization::Add','GMP::Linearization::AddSingle','GMP::Linearization::Delete',
+            'GMP::Linearization::GetDeviation','GMP::Linearization::GetDeviationBound',
+            'GMP::Linearization::GetLagrangeMultiplier','GMP::Linearization::GetType',
+            'GMP::Linearization::GetWeight','GMP::Linearization::RemoveDeviation',
+            'GMP::Linearization::SetDeviationBound','GMP::Linearization::SetType',
+            'GMP::Linearization::SetWeight','GMP::ProgressWindow::DeleteCategory',
+            'GMP::ProgressWindow::DisplayLine','GMP::ProgressWindow::DisplayProgramStatus',
+            'GMP::ProgressWindow::DisplaySolver','GMP::ProgressWindow::DisplaySolverStatus',
+            'GMP::ProgressWindow::FreezeLine','GMP::ProgressWindow::UnfreezeLine',
+            'GMP::QuadraticCoefficient::Get','GMP::QuadraticCoefficient::Set','GMP::Row::Activate',
+            'GMP::Stochastic::AddBendersFeasibilityCut','GMP::Stochastic::AddBendersOptimalityCut',
+            'GMP::Stochastic::BendersFindFeasibilityReference','GMP::Stochastic::MergeSolution',
+            'GMP::Row::Add','GMP::Row::Deactivate','GMP::Row::Delete','GMP::Row::DeleteIndicatorCondition',
+            'GMP::Row::Generate','GMP::Row::GetConvex','GMP::Row::GetIndicatorColumn',
+            'GMP::Row::GetIndicatorCondition','GMP::Row::GetLeftHandSide','GMP::Row::GetRelaxationOnly',
+            'GMP::Row::GetRightHandSide','GMP::Row::GetScale','GMP::Row::GetStatus','GMP::Row::GetType',
+            'GMP::Row::SetConvex','GMP::Row::SetIndicatorCondition','GMP::Row::SetLeftHandSide',
+            'GMP::Row::SetRelaxationOnly','GMP::Row::SetRightHandSide','GMP::Row::SetType',
+            'GMP::Solution::Check','GMP::Solution::Copy','GMP::Solution::Count','GMP::Solution::Delete',
+            'GMP::Solution::DeleteAll','GMP::Solution::GetColumnValue','GMP::Solution::GetCPUSecondsUsed',
+            'GMP::Solution::GetDistance','GMP::Solution::GetFirstOrderDerivative',
+            'GMP::Solution::GetIterationsUsed','GMP::Solution::GetNodesUsed','GMP::Solution::GetLinearObjective',
+            'GMP::Solution::GetMemoryUsed','GMP::Solution::GetObjective','GMP::Solution::GetPenalizedObjective',
+            'GMP::Solution::GetProgramStatus','GMP::Solution::GetRowValue','GMP::Solution::GetSolutionsSet',
+            'GMP::Solution::GetSolverStatus','GMP::Solution::IsDualDegenerated','GMP::Solution::IsInteger',
+            'GMP::Solution::IsPrimalDegenerated','GMP::Solution::SetMIPStartFlag','GMP::Solution::Move',
+            'GMP::Solution::RandomlyGenerate','GMP::Solution::RetrieveFromModel',
+            'GMP::Solution::RetrieveFromSolverSession','GMP::Solution::SendToModel',
+            'GMP::Solution::SendToModelSelection','GMP::Solution::SendToSolverSession',
+            'GMP::Solution::SetIterationCount','GMP::Solution::SetProgramStatus','GMP::Solution::SetSolverStatus',
+            'GMP::Solution::UpdatePenaltyWeights','GMP::Solution::ConstructMean',
+            'GMP::SolverSession::AsynchronousExecute','GMP::SolverSession::Execute',
+            'GMP::SolverSession::Interrupt','GMP::SolverSession::AddLinearization',
+            'GMP::SolverSession::GenerateBranchLowerBound','GMP::SolverSession::GenerateBranchUpperBound',
+            'GMP::SolverSession::GenerateBranchRow','GMP::SolverSession::GenerateCut',
+            'GMP::SolverSession::GenerateBinaryEliminationRow','GMP::SolverSession::GetCPUSecondsUsed',
+            'GMP::SolverSession::GetHost','GMP::SolverSession::GetInstance',
+            'GMP::SolverSession::GetIterationsUsed','GMP::SolverSession::GetNodesLeft',
+            'GMP::SolverSession::GetNodesUsed','GMP::SolverSession::GetNodeNumber',
+            'GMP::SolverSession::GetNodeObjective','GMP::SolverSession::GetNumberOfBranchNodes',
+            'GMP::SolverSession::GetLinearObjective','GMP::SolverSession::GetMemoryUsed',
+            'GMP::SolverSession::GetObjective','GMP::SolverSession::GetOptionValue',
+            'GMP::SolverSession::GetProgramStatus','GMP::SolverSession::GetSolver',
+            'GMP::SolverSession::GetSolverStatus','GMP::SolverSession::RejectIncumbent',
+            'GMP::Event::Create','GMP::Event::Delete','GMP::Event::Reset','GMP::Event::Set',
+            'GMP::SolverSession::SetObjective','GMP::SolverSession::SetOptionValue',
+            'GMP::Instance::SetCPUSecondsLimit','GMP::Instance::SetIterationLimit',
+            'GMP::Instance::SetMemoryLimit','GMP::Instance::SetOptionValue','GMP::Tuning::SolveSingleMPS',
+            'GMP::Tuning::TuneMultipleMPS','GMP::Tuning::TuneSingleGMP',
+            'GMP::Solver::GetAsynchronousSessionsLimit','GMP::Robust::EvaluateAdjustableVariables',
+            'GenerateXML','GetDatasourceProperty','ReadGeneratedXML','ReadXML','ReferencedIdentifiers',
+            'WriteXML','IdentifierAttributes','IdentifierDimension','IsRuntimeIdentifier','IdentifierMemory',
+            'IdentifierMemoryStatistics','IdentifierText','IdentifierType','IdentifierUnit','ScalarValue',
+            'SectionIdentifiers','SubRange','MemoryInUse','CommitTransaction','RollbackTransaction',
+            'MemoryStatistics','me::AllowedAttribute','me::ChangeType','me::ChangeTypeAllowed','me::Children',
+            'me::ChildTypeAllowed','me::Compile','me::Create','me::CreateLibrary','me::Delete','me::ExportNode',
+            'me::GetAttribute','me::ImportLibrary','me::ImportNode','me::IsRunnable','me::Move','me::Parent',
+            'me::Rename','me::SetAttribute','MomentToString','MomentToTimeSlot','OptionGetValue',
+            'OptionGetKeywords','OptionGetString','OptionSetString','OptionSetValue','PeriodToString',
+            'ProfilerContinue','ProfilerPause','ProfilerRestart','RestoreInactiveElements',
+            'RetrieveCurrentVariableValues','SetAddRecursive','SetElementAdd','SetElementRename',
+            'SQLColumnData','SQLCreateConnectionString','SQLDriverName','SQLNumberOfColumns',
+            'SQLNumberOfDrivers','SQLNumberOfTables','SQLNumberOfViews','SQLTableName','SQLViewName',
+            'StartTransaction','StringToElement','StringToMoment','StringToTimeSlot','TestDatabaseColumn',
+            'TestDatabaseTable','TestDataSource','TestDate','TimeslotCharacteristic','TimeslotToMoment',
+            'TimeslotToString','TimeZoneOffset','VariableConstraints','PageOpen','PageOpenSingle','PageClose',
+            'PageGetActive','PageSetFocus','PageGetFocus','PageSetCursor','PageRefreshAll','PageGetChild',
+            'PageGetParent','PageGetNext','PageGetPrevious','PageGetNextInTreeWalk','PageGetUsedIdentifiers',
+            'PageGetTitle','PageGetAll','PageCopyTableToClipboard','PageCopyTableToExcel','PrintPage',
+            'PrintPageCount','PrintStartReport','PrintEndReport','PivotTableReloadState','PivotTableSaveState',
+            'PivotTableDeleteState','FileSelect','FileSelectNew','FileDelete','FileExists','FileCopy',
+            'FileMove','FileView','FileEdit','FilePrint','FileTime','FileTouch','FileAppend','FileGetSize',
+            'DirectorySelect','DirectoryCreate','DirectoryDelete','DirectoryExists','DirectoryCopy',
+            'DirectoryMove','DirectoryGetCurrent','DialogProgress','DialogMessage','DialogError',
+            'StatusMessage','DialogAsk','DialogGetString','DialogGetDate','DialogGetNumber','DialogGetElement',
+            'DialogGetElementByText','DialogGetElementByData','DialogGetPassword','DialogGetColor','CaseNew',
+            'CaseFind','CaseCreate','CaseLoadCurrent','CaseMerge','CaseLoadIntoCurrent','CaseSelect',
+            'CaseSelectNew','CaseSetCurrent','CaseSave','CaseSaveAll','CaseSaveAs','CaseSelectMultiple',
+            'CaseGetChangedStatus','CaseSetChangedStatus','CaseDelete','CaseGetType','CaseGetDatasetReference',
+            'CaseWriteToSingleFile','CaseReadFromSingleFile','DatasetNew','DatasetFind','DatasetCreate',
+            'DatasetLoadCurrent','DatasetMerge','DatasetLoadIntoCurrent','DatasetSelect','DatasetSelectNew',
+            'DatasetSetCurrent','DatasetSave','DatasetSaveAll','DatasetSaveAs','DatasetGetChangedStatus',
+            'DatasetSetChangedStatus','DatasetDelete','DatasetGetCategory','DataFileGetName',
+            'DataFileGetAcronym','DataFileSetAcronym','DataFileGetComment','DataFileSetComment',
+            'DataFileGetPath','DataFileGetTime','DataFileGetOwner','DataFileGetGroup','DataFileReadPermitted',
+            'DataFileWritePermitted','DataFileExists','DataFileCopy','DataCategoryContents','CaseTypeContents',
+            'CaseTypeCategories','Execute','OpenDocument','TestInternetConnection','GeoFindCoordinates',
+            'ShowHelpTopic','Delay','ScheduleAt','ExitAimms','SessionArgument','SessionHasVisibleGUI',
+            'ProjectDeveloperMode','DebuggerBreakpoint','ShowProgressWindow','ShowMessageWindow',
+            'SolverGetControl','SolverReleaseControl','ProfilerStart','DataManagerImport','DataManagerExport',
+            'DataManagerFileNew','DataManagerFileOpen','DataManagerFileGetCurrent','DataImport220',
+            'SecurityGetUsers','SecurityGetGroups','UserColorAdd','UserColorDelete','UserColorGetRGB',
+            'UserColorModify','LicenseNumber','LicenseType','LicenseStartDate','LicenseExpirationDate',
+            'LicenseMaintenanceExpirationDate','VARLicenseExpirationDate','AimmsRevisionString',
+            'VARLicenseCreate','HistogramCreate','HistogramDelete','HistogramSetDomain',
+            'HistogramAddObservation','HistogramGetFrequencies','HistogramGetBounds',
+            'HistogramGetObservationCount','HistogramGetAverage','HistogramGetDeviation',
+            'HistogramGetSkewness','HistogramGetKurtosis','DateDifferenceDays','DateDifferenceYearFraction',
+            'PriceFractional','PriceDecimal','RateEffective','RateNominal','DepreciationLinearLife',
+            'DepreciationLinearRate','DepreciationNonLinearSumOfYear','DepreciationNonLinearLife',
+            'DepreciationNonLinearFactor','DepreciationNonLinearRate','DepreciationSum',
+            'InvestmentConstantPresentValue','InvestmentConstantFutureValue',
+            'InvestmentConstantPeriodicPayment','InvestmentConstantInterestPayment',
+            'InvestmentConstantPrincipalPayment','InvestmentConstantCumulativePrincipalPayment',
+            'InvestmentConstantCumulativeInterestPayment','InvestmentConstantNumberPeriods',
+            'InvestmentConstantRateAll','InvestmentConstantRate','InvestmentVariablePresentValue',
+            'InvestmentVariablePresentValueInperiodic','InvestmentSingleFutureValue',
+            'InvestmentVariableInternalRateReturnAll','InvestmentVariableInternalRateReturn',
+            'InvestmentVariableInternalRateReturnInperiodicAll','InvestmentVariableInternalRateReturnInperiodic',
+            'InvestmentVariableInternalRateReturnModified','SecurityDiscountedPrice',
+            'SecurityDiscountedRedemption','SecurityDiscountedYield','SecurityDiscountedRate',
+            'TreasuryBillPrice','TreasuryBillYield','TreasuryBillBondEquivalent','SecurityMaturityPrice',
+            'SecurityMaturityCouponRate','SecurityMaturityYield','SecurityMaturityAccruedInterest',
+            'SecurityCouponNumber','SecurityCouponPreviousDate','SecurityCouponNextDate','SecurityCouponDays',
+            'SecurityCouponDaysPreSettlement','SecurityCouponDaysPostSettlement','SecurityPeriodicPrice',
+            'SecurityPeriodicRedemption','SecurityPeriodicCouponRate','SecurityPeriodicYieldAll',
+            'SecurityPeriodicYield','SecurityPeriodicAccruedInterest','SecurityPeriodicDuration',
+            'SecurityPeriodicDurationModified','Abs','AtomicUnit','Ceil','Character','CharacterNumber','Cube',
+            'Degrees','Div','Exp','FileRead','Floor','Log','Log10','Mapval','Max','Min','Mod','Power',
+            'Radians','Round','Sign','Sqr','Sqrt','StringCapitalize','StringLength','StringToLower',
+            'StringToUnit','StringToUpper','SubString','Trunc','Binomial','NegativeBinomial','Poisson',
+            'Geometric','HyperGeometric','Uniform','Normal','LogNormal','Triangular','Exponential','Weibull',
+            'Beta','Gamma','Logistic','Pareto','ExtremeValue','Precision','Factorial','Combination',
+            'Permutation','Errorf','Cos','Sin','Tan','ArcCos','ArcSin','ArcTan','Cosh','Sinh','Tanh',
+            'ArcCosh','ArcSinh','ArcTanh'
+            )
+        ),
+    'SYMBOLS' => array(
+        0 => array(
+            '(', ')', '[', ']', '{', '}',
+            '%', '&', '|', '/',
+            '<', '>', '>=' , '<=', ':=',
+            '=', '-', '+', '*',
+            '.', ','
+            )
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false,
+        4 => false
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #0000FF;',
+            2 => 'color: #000000; font-weight: bold;',
+            3 => 'color: #404040;',
+            4 => 'color: #990000; font-weight: bold;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #009900;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #808080; font-style: italic ',
+            'HARD' => 'color: #808080; font-style: italic'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #cc66cc;',
+            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
+            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
+            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #008000; font-style: italic;',
+            'MULTI' => 'color: #008000; font-style: italic;'
+            ),
+
+        'METHODS' => array(
+            1 => 'color: #004000;',
+            2 => 'color: #004000;'
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #339933;',
+            1 => 'color: #000000; font-weight: bold;'
+            ),
+        'REGEXPS' => array(
+            ),
+        'SCRIPT' => array(
+            0 => '',
+            1 => '',
+            2 => '',
+            3 => '',
+            4 => '',
+            5 => ''
+            ),
+        'ESCAPE_CHAR' => array()
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => ''
+        ),
+    'OOLANG' => false,
+    'TAB_WIDTH' => 4
+);
diff --git a/inc/geshi/algol68.php b/vendor/easybook/geshi/geshi/algol68.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/algol68.php
rename to vendor/easybook/geshi/geshi/algol68.php
diff --git a/inc/geshi/apache.php b/vendor/easybook/geshi/geshi/apache.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/apache.php
rename to vendor/easybook/geshi/geshi/apache.php
diff --git a/inc/geshi/applescript.php b/vendor/easybook/geshi/geshi/applescript.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/applescript.php
rename to vendor/easybook/geshi/geshi/applescript.php
diff --git a/inc/geshi/apt_sources.php b/vendor/easybook/geshi/geshi/apt_sources.php
old mode 100644
new mode 100755
similarity index 86%
rename from inc/geshi/apt_sources.php
rename to vendor/easybook/geshi/geshi/apt_sources.php
index 9f1ed045e15a54ebf8fc2a79b03c8b81d8b4322a..979d10ce9ccb8b66502d094ae464820564e09520
--- a/inc/geshi/apt_sources.php
+++ b/vendor/easybook/geshi/geshi/apt_sources.php
@@ -55,7 +55,7 @@ $language_data = array (
             'stable/updates',
             //Debian
             'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato', 'woody', 'sarge',
-            'etch', 'lenny', 'wheezy', 'sid',
+            'etch', 'lenny', 'wheezy', 'jessie', 'sid',
             //Ubuntu
             'warty', 'warty-updates', 'warty-security', 'warty-proposed', 'warty-backports',
             'hoary', 'hoary-updates', 'hoary-security', 'hoary-proposed', 'hoary-backports',
@@ -69,7 +69,14 @@ $language_data = array (
             'jaunty', 'jaunty-updates', 'jaunty-security', 'jaunty-proposed', 'jaunty-backports',
             'karmic', 'karmic-updates', 'karmic-security', 'karmic-proposed', 'karmic-backports',
             'lucid', 'lucid-updates', 'lucid-security', 'lucid-proposed', 'lucid-backports',
-            'maverick', 'maverick-updates', 'maverick-security', 'maverick-proposed', 'maverick-backports'
+            'maverick', 'maverick-updates', 'maverick-security', 'maverick-proposed', 'maverick-backports',
+            'natty', 'natty-updates', 'natty-security', 'natty-proposed', 'natty-backports',
+            'oneiric', 'oneiric-updates', 'oneiric-security', 'oneiric-proposed', 'oneiric-backports',
+            'precise', 'precise-updates', 'precise-security', 'precise-proposed', 'precise-backports',
+            'quantal', 'quantal-updates', 'quantal-security', 'quantal-proposed', 'quantal-backports',
+            'raring', 'raring-updates', 'raring-security', 'raring-proposed', 'raring-backports',
+            'saucy', 'saucy-updates', 'saucy-security', 'saucy-proposed', 'saucy-backports',
+            'trusty', 'trusty-updates', 'trusty-security', 'trusty-proposed', 'trusty-backports'
             ),
         3 => array(
             'main', 'restricted', 'preview', 'contrib', 'non-free',
diff --git a/inc/geshi/arm.php b/vendor/easybook/geshi/geshi/arm.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/arm.php
rename to vendor/easybook/geshi/geshi/arm.php
diff --git a/inc/geshi/asm.php b/vendor/easybook/geshi/geshi/asm.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/asm.php
rename to vendor/easybook/geshi/geshi/asm.php
diff --git a/inc/geshi/asp.php b/vendor/easybook/geshi/geshi/asp.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/asp.php
rename to vendor/easybook/geshi/geshi/asp.php
diff --git a/inc/geshi/asymptote.php b/vendor/easybook/geshi/geshi/asymptote.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/asymptote.php
rename to vendor/easybook/geshi/geshi/asymptote.php
index 8683588e5f22949b8057245a20cded70510fea81..295cb0a568ec18a17c605d00349388e404dd2269
--- a/inc/geshi/asymptote.php
+++ b/vendor/easybook/geshi/geshi/asymptote.php
@@ -190,5 +190,3 @@ $language_data = array(
             )
         )
 );
-
-?>
diff --git a/inc/geshi/autoconf.php b/vendor/easybook/geshi/geshi/autoconf.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/autoconf.php
rename to vendor/easybook/geshi/geshi/autoconf.php
diff --git a/inc/geshi/autohotkey.php b/vendor/easybook/geshi/geshi/autohotkey.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/autohotkey.php
rename to vendor/easybook/geshi/geshi/autohotkey.php
diff --git a/inc/geshi/autoit.php b/vendor/easybook/geshi/geshi/autoit.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/autoit.php
rename to vendor/easybook/geshi/geshi/autoit.php
diff --git a/inc/geshi/avisynth.php b/vendor/easybook/geshi/geshi/avisynth.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/avisynth.php
rename to vendor/easybook/geshi/geshi/avisynth.php
diff --git a/inc/geshi/awk.php b/vendor/easybook/geshi/geshi/awk.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/awk.php
rename to vendor/easybook/geshi/geshi/awk.php
index 1ec239b70c853e991cbfe30801a728f64b46dbd9..46fe49f8780f4b18c0b4b7357d660fad7edae714
--- a/inc/geshi/awk.php
+++ b/vendor/easybook/geshi/geshi/awk.php
@@ -154,5 +154,3 @@ $language_data = array (
     'SCRIPT_DELIMITERS' => array (),
     'HIGHLIGHT_STRICT_BLOCK' => array()
 );
-
-?>
diff --git a/inc/geshi/bascomavr.php b/vendor/easybook/geshi/geshi/bascomavr.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/bascomavr.php
rename to vendor/easybook/geshi/geshi/bascomavr.php
diff --git a/inc/geshi/bash.php b/vendor/easybook/geshi/geshi/bash.php
old mode 100644
new mode 100755
similarity index 88%
rename from inc/geshi/bash.php
rename to vendor/easybook/geshi/geshi/bash.php
index c69f0054fc6e7991be83bba5b0ea788ab0bef780..eba70028b0bc025511a0d50c6f2d7027151857ab
--- a/inc/geshi/bash.php
+++ b/vendor/easybook/geshi/geshi/bash.php
@@ -132,7 +132,16 @@ $language_data = array (
             'apt-src remove', 'apt-src update', 'apt-src upgrade',
             'apt-src version',
 
-            'basename', 'bash', 'bc', 'bison', 'bunzip2', 'bzcat',
+            'aptitude autoclean', 'aptitude build-dep', 'aptitude changelog',
+            'aptitude clean', 'aptitude download', 'aptitude forbid-version',
+            'aptitude forget-new', 'aptitude full-upgrade', 'aptitude hold',
+            'aptitude install', 'aptitude markauto', 'aptitude purge',
+            'aptitude reinstall', 'aptitude remove', 'aptitude safe-upgrade',
+            'aptitude search', 'aptitude show', 'aptitude unhold',
+            'aptitude unmarkauto', 'aptitude update', 'aptitude versions',
+            'aptitude why', 'aptitude why-not',
+
+            'basename', 'bash', 'batctl', 'bc', 'bison', 'bunzip2', 'bzcat',
             'bzcmp', 'bzdiff', 'bzegrep', 'bzfgrep', 'bzgrep',
             'bzip2', 'bzip2recover', 'bzless', 'bzmore',
 
@@ -247,14 +256,14 @@ $language_data = array (
             'git-web--browse', 'git-whatchanged', 'gitwhich', 'gitwipe',
             'git-write-tree', 'gitxgrep',
 
-            'head', 'hexdump', 'hostname',
+            'head', 'hexdump', 'hostname', 'htop',
 
             'id', 'ifconfig', 'ifdown', 'ifup', 'igawk', 'install',
 
             'ip', 'ip addr', 'ip addrlabel', 'ip link', 'ip maddr', 'ip mroute',
             'ip neigh', 'ip route', 'ip rule', 'ip tunnel', 'ip xfrm',
 
-            'join',
+            'jar', 'java', 'javac', 'join',
 
             'kbd_mode','kbdrate', 'kdialog', 'kfile', 'kill', 'killall',
 
@@ -271,10 +280,11 @@ $language_data = array (
 
             'od', 'openvt',
 
-            'passwd', 'patch', 'pcregrep', 'pcretest', 'perl', 'perror',
-            'pgawk', 'pidof', 'ping', 'pr', 'procmail', 'prune', 'ps', 'pstree',
-            'ps2ascii', 'ps2epsi', 'ps2frag', 'ps2pdf', 'ps2ps', 'psbook',
-            'psmerge', 'psnup', 'psresize', 'psselect', 'pstops',
+            'passwd', 'patch', 'pbzip2', 'pcregrep', 'pcretest', 'perl',
+            'perror', 'pgawk', 'pidof', 'pigz', 'ping', 'pr', 'procmail',
+            'prune', 'ps', 'pstree', 'ps2ascii', 'ps2epsi', 'ps2frag',
+            'ps2pdf', 'ps2ps', 'psbook', 'psmerge', 'psnup', 'psresize',
+            'psselect', 'pstops',
 
             'rbash', 'rcs', 'rcs2log', 'read', 'readlink', 'red', 'resizecons',
             'rev', 'rm', 'rmdir', 'rsh', 'run-parts',
@@ -283,7 +293,7 @@ $language_data = array (
             'setkeycodes', 'setleds', 'setmetamode', 'setserial', 'setterm',
             'sh', 'showkey', 'shred', 'size', 'size86', 'skill', 'sleep',
             'slogin', 'snice', 'sort', 'sox', 'split', 'ssed', 'ssh', 'ssh-add',
-            'ssh-agent', 'ssh-keygen', 'ssh-keyscan', 'stat', 'strace',
+            'ssh-agent', 'ssh-keygen', 'ssh-keyscan', 'sshfs', 'stat', 'strace',
             'strings', 'strip', 'stty', 'su', 'sudo', 'suidperl', 'sum', 'svn',
             'svnadmin', 'svndumpfilter', 'svnlook', 'svnmerge', 'svnmucc',
             'svnserve', 'svnshell', 'svnsync', 'svnversion', 'svnwrap', 'sync',
@@ -291,16 +301,40 @@ $language_data = array (
             'svn add', 'svn ann', 'svn annotate', 'svn blame', 'svn cat',
             'svn changelist', 'svn checkout', 'svn ci', 'svn cl', 'svn cleanup',
             'svn co', 'svn commit', 'svn copy', 'svn cp', 'svn del',
-            'svn delete', 'svn di', 'svn diff', 'svn export', 'svn h',
-            'svn help', 'svn import', 'svn info', 'svn list', 'svn lock',
-            'svn log', 'svn ls', 'svn merge', 'svn mergeinfo', 'svn mkdir',
-            'svn move', 'svn mv', 'svn pd', 'svn pdel', 'svn pe', 'svn pedit',
+            'svn delete', 'svn di', 'svn diff', 'svn export', 'svn help',
+            'svn import', 'svn info', 'svn list', 'svn lock', 'svn log',
+            'svn ls', 'svn merge', 'svn mergeinfo', 'svn mkdir', 'svn move',
+            'svn mv', 'svn patch', 'svn pd', 'svn pdel', 'svn pe', 'svn pedit',
             'svn pg', 'svn pget', 'svn pl', 'svn plist', 'svn praise',
             'svn propdel', 'svn propedit', 'svn propget', 'svn proplist',
-            'svn propset', 'svn ps', 'svn pset', 'svn remove', 'svn ren',
+            'svn propset', 'svn ps', 'svn pset', 'svn relocate', 'svn remove',
             'svn rename', 'svn resolve', 'svn resolved', 'svn revert', 'svn rm',
             'svn st', 'svn stat', 'svn status', 'svn sw', 'svn switch',
-            'svn unlock', 'svn up', 'svn update',
+            'svn unlock', 'svn up', 'svn update', 'svn upgrade',
+
+            'svnadmin crashtest', 'svnadmin create', 'svnadmin deltify',
+            'svnadmin dump', 'svnadmin help', 'svnadmin hotcopy',
+            'svnadmin list-dblogs', 'svnadmin list-unused-dblogs',
+            'svnadmin load', 'svnadmin lslocks', 'svnadmin lstxns',
+            'svnadmin pack', 'svnadmin recover', 'svnadmin rmlocks',
+            'svnadmin rmtxns', 'svnadmin setlog', 'svnadmin setrevprop',
+            'svnadmin setuuid', 'svnadmin upgrade', 'svnadmin verify',
+
+            'svndumpfilter exclude', 'svndumpfilter help',
+            'svndumpfilter include',
+
+            'svnlook author', 'svnlook cat', 'svnlook changed', 'svnlook date',
+            'svnlook diff', 'svnlook dirs-changed', 'svnlook filesize',
+            'svnlook help', 'svnlook history', 'svnlook info', 'svnlook lock',
+            'svnlook log', 'svnlook pg', 'svnlook pget', 'svnlook pl',
+            'svnlook plist', 'svnlook propget', 'svnlook proplist',
+            'svnlook tree', 'svnlook uuid', 'svnlook youngest',
+
+            'svnrdump dump', 'svnrdump help', 'svnrdump load',
+
+            'svnsync copy-revprops', 'svnsync help', 'svnsync info',
+            'svnsync init', 'svnsync initialize', 'svnsync sync',
+            'svnsync synchronize',
 
             'tac', 'tail', 'tar', 'tee', 'tempfile', 'touch', 'tr', 'tree',
             'true',
diff --git a/inc/geshi/basic4gl.php b/vendor/easybook/geshi/geshi/basic4gl.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/basic4gl.php
rename to vendor/easybook/geshi/geshi/basic4gl.php
index 35c927406de0339c18d36742444c337883c3ff24..112fb6967ca61a24e83511825a497a6da14ec4e8
--- a/inc/geshi/basic4gl.php
+++ b/vendor/easybook/geshi/geshi/basic4gl.php
@@ -337,5 +337,3 @@ $language_data = array (
         ),
     'TAB_WIDTH' => 4
 );
-
-?>
diff --git a/vendor/easybook/geshi/geshi/batch.php b/vendor/easybook/geshi/geshi/batch.php
new file mode 100644
index 0000000000000000000000000000000000000000..7d1ca635ba7d744bdaaa161bde4f3c7b195a118c
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/batch.php
@@ -0,0 +1,138 @@
+<?php
+/*************************************************************************************
+ * batch.php
+ * ------------
+ * Author: FraidZZ ( fraidzz [@] bk.ru )
+ * Copyright: (c) 2015 FraidZZ ( http://vk.com/fraidzz , http://www.cyberforum.ru/members/340557.html )
+ * Release Version: 1.0.8.11
+ * Date Started: 2015/03/28
+ *
+ * Windows batch file language file for GeSHi.
+ *
+ *************************************************************************************
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'Windows Batch file',
+    'COMMENT_SINGLE' => array(),
+    'COMMENT_MULTI' => array(),
+	'COMMENT_REGEXP' => array(
+		100 => '/(?:^|[&|])\\s*(?:rem|::)[^\\n]*/msi',
+		101 => '/[\\/-]\\S*/si',
+		102 => '/^\s*:[^:]\\S*/msi',
+		103 => '/(?:([%!])[^"\'~ ][^"\' ]*\\1|%%?(?:~[dpnxsatz]*)?[^"\'])/si'
+	),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '',
+	'ESCAPE_REGEXP' => array(
+		100 => '/(?:([%!])\\S+\\1|%%(?:~[dpnxsatz]*)?[^"\'])/si'
+	),
+    'KEYWORDS' => array(
+        1 => array(
+            'echo', 'set', 'for', 'if', 'exit', 'else', 'do', 'not', 'defined', 'exist'
+            ),
+        2 => array(
+            "ASSOC", "ATTRIB", "BREAK", "BCDEDIT", "CACLS", "CD",
+			"CHCP", "CHDIR", "CHKDSK", "CHKNTFS", "CLS", "CMD", "COLOR",
+			"COMP", "COMPACT", "CONVERT", "COPY", "DATE", "DEL", "DIR",
+			"DISKCOMP", "DISKCOPY", "DISKPART", "DOSKEY", "DRIVERQUERY", "ECHO", "ENDLOCAL",
+			"ERASE", "EXIT", "FC", "FIND", "FINDSTR", "FOR", "FORMAT",
+			"FSUTIL", "FTYPE", "GPRESULT", "GRAFTABL", "HELP", "ICACLS",
+			"IF", "LABEL", "MD", "MKDIR", "MKLINK", "MODE", "MORE",
+			"MOVE", "OPENFILES", "PATH", "PAUSE", "POPD", "PRINT", "PROMPT",
+			"PUSHD", "RD", "RECOVER", "REN", "RENAME", "REPLACE", "RMDIR",
+			"ROBOCOPY", "SET", "SETLOCAL", "SC", "SCHTASKS", "SHIFT", "SHUTDOWN",
+			"SORT", "START", "SUBST", "SYSTEMINFO", "TASKLIST", "TASKKILL", "TIME",
+			"TITLE", "TREE", "TYPE", "VER", "VERIFY", "VOL", "XCOPY",
+			"WMIC", "CSCRIPT"
+            ),
+        3 => array(
+            "enabledelayedexpansion", "enableextensions"
+            )
+        ),
+    'SYMBOLS' => array(
+        '(', ')', '+', '-', '~', '^', '@', '&', '*', '|', '/', '<', '>'
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false,
+        4 => false,
+        5 => false
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #800080; font-weight: bold;',
+            2 => 'color: #0080FF; font-weight: bold;',
+            3 => 'color: #0000FF; font-weight: bold;'
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #888888;',
+            2 => 'color: #FF1010; font-weight: bold;',
+			101 => 'color: #44aa44; font-weight: bold;',
+			100 => 'color: #888888;',
+			102 => 'color: #990000; font-weight: bold;',
+			103 => 'color: #000099; font-weight: bold;',
+            'MULTI' => 'color: #808080; font-style: italic;'
+            ),
+        'ESCAPE_CHAR' => array(
+            100 => 'color: #000099; font-weight: bold;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #66cc66; font-weight: bold;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #ff0000;', 
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #cc66cc;'
+            ),
+        'METHODS' => array(
+            0 => 'color: #006600;'
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #44aa44; font-weight: bold;'
+            ),
+        'REGEXPS' => array(
+            0 => 'color: #990000; font-weight: bold',
+			1 => 'color: #800080; font-weight: bold;'
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(),
+    'REGEXPS' => array(
+        0 => array(
+				GESHI_SEARCH => "((?:goto|call)\\s*)(\\S+)",
+				GESHI_REPLACE => "\\2",
+				GESHI_BEFORE => "\\1",
+				GESHI_MODIFIERS => "si",
+				GESHI_AFTER => ""
+			) ,
+		1 => "goto|call"
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        )
+);
diff --git a/inc/geshi/bf.php b/vendor/easybook/geshi/geshi/bf.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/bf.php
rename to vendor/easybook/geshi/geshi/bf.php
diff --git a/inc/geshi/bibtex.php b/vendor/easybook/geshi/geshi/bibtex.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/bibtex.php
rename to vendor/easybook/geshi/geshi/bibtex.php
diff --git a/inc/geshi/blitzbasic.php b/vendor/easybook/geshi/geshi/blitzbasic.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/blitzbasic.php
rename to vendor/easybook/geshi/geshi/blitzbasic.php
index 1d3c08d05e8d44d362173cd338ef31e533656927..c90f45bfa958ac5fc92fde27cd532098a013cc7b
--- a/inc/geshi/blitzbasic.php
+++ b/vendor/easybook/geshi/geshi/blitzbasic.php
@@ -181,5 +181,3 @@ $language_data = array (
         1 => false
         )
 );
-
-?>
diff --git a/inc/geshi/bnf.php b/vendor/easybook/geshi/geshi/bnf.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/bnf.php
rename to vendor/easybook/geshi/geshi/bnf.php
diff --git a/inc/geshi/boo.php b/vendor/easybook/geshi/geshi/boo.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/boo.php
rename to vendor/easybook/geshi/geshi/boo.php
index b68d442f7bed6935a96f279089ee2c107f5b4b97..15944f42a0a3faa153856922d27596400fb92d83
--- a/inc/geshi/boo.php
+++ b/vendor/easybook/geshi/geshi/boo.php
@@ -213,5 +213,3 @@ $language_data = array (
         ),
     'TAB_WIDTH' => 4
 );
-
-?>
diff --git a/inc/geshi/c.php b/vendor/easybook/geshi/geshi/c.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/c.php
rename to vendor/easybook/geshi/geshi/c.php
diff --git a/inc/geshi/c_loadrunner.php b/vendor/easybook/geshi/geshi/c_loadrunner.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/c_loadrunner.php
rename to vendor/easybook/geshi/geshi/c_loadrunner.php
diff --git a/inc/geshi/c_mac.php b/vendor/easybook/geshi/geshi/c_mac.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/c_mac.php
rename to vendor/easybook/geshi/geshi/c_mac.php
diff --git a/vendor/easybook/geshi/geshi/c_winapi.php b/vendor/easybook/geshi/geshi/c_winapi.php
new file mode 100644
index 0000000000000000000000000000000000000000..1252e7b92bbaff2272325967133ff8f9ed9f613a
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/c_winapi.php
@@ -0,0 +1,870 @@
+<?php
+/*************************************************************************************
+ * c_winapi.php
+ * -----
+ * Author: Benny Baumann (BenBE@geshi.org)
+ * Contributors:
+ *  - Jack Lloyd (lloyd@randombit.net)
+ *  - Michael Mol (mikemol@gmail.com)
+ * Copyright: (c) 2012 Benny Baumann (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.8.11
+ * Date Started: 2012/08/12
+ *
+ * C (WinAPI) language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2009/01/22 (1.0.8.3)
+ *   -  Made keywords case-sensitive.
+ * 2008/05/23 (1.0.7.22)
+ *   -  Added description of extra language features (SF#1970248)
+ * 2004/XX/XX (1.0.4)
+ *   -  Added a couple of new keywords (Jack Lloyd)
+ * 2004/11/27 (1.0.3)
+ *   -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.2)
+ *   -  Added support for URLs
+ * 2004/08/05 (1.0.1)
+ *   -  Added support for symbols
+ * 2004/07/14 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2009/02/08)
+ * -------------------------
+ *  -  Get a list of inbuilt functions to add (and explore C more
+ *     to complete this rather bare language file
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'C (WinAPI)',
+    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+    'COMMENT_MULTI' => array('/*' => '*/'),
+    'COMMENT_REGEXP' => array(
+        //Multiline-continued single-line comments
+        1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m',
+        //Multiline-continued preprocessor define
+        2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m'
+        ),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '',
+    'ESCAPE_REGEXP' => array(
+        //Simple Single Char Escapes
+        1 => "#\\\\[\\\\abfnrtv\'\"?\n]#i",
+        //Hexadecimal Char Specs
+        2 => "#\\\\x[\da-fA-F]{2}#",
+        //Hexadecimal Char Specs
+        3 => "#\\\\u[\da-fA-F]{4}#",
+        //Hexadecimal Char Specs
+        4 => "#\\\\U[\da-fA-F]{8}#",
+        //Octal Char Specs
+        5 => "#\\\\[0-7]{1,3}#"
+        ),
+    'NUMBERS' =>
+        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
+        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
+        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
+    'KEYWORDS' => array(
+        1 => array(
+            'if', 'return', 'while', 'case', 'continue', 'default',
+            'do', 'else', 'for', 'switch', 'goto'
+            ),
+        2 => array(
+            'null', 'false', 'break', 'true', 'function', 'enum', 'extern', 'inline'
+            ),
+        3 => array(
+            // assert.h
+            'assert',
+
+            //complex.h
+            'cabs', 'cacos', 'cacosh', 'carg', 'casin', 'casinh', 'catan',
+            'catanh', 'ccos', 'ccosh', 'cexp', 'cimag', 'cis', 'clog', 'conj',
+            'cpow', 'cproj', 'creal', 'csin', 'csinh', 'csqrt', 'ctan', 'ctanh',
+
+            //ctype.h
+            'digittoint', 'isalnum', 'isalpha', 'isascii', 'isblank', 'iscntrl',
+            'isdigit', 'isgraph', 'islower', 'isprint', 'ispunct', 'isspace',
+            'isupper', 'isxdigit', 'toascii', 'tolower', 'toupper',
+
+            //inttypes.h
+            'imaxabs', 'imaxdiv', 'strtoimax', 'strtoumax', 'wcstoimax',
+            'wcstoumax',
+
+            //locale.h
+            'localeconv', 'setlocale',
+
+            //math.h
+            'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'exp',
+            'fabs', 'floor', 'frexp', 'ldexp', 'log', 'log10', 'modf', 'pow',
+            'sin', 'sinh', 'sqrt', 'tan', 'tanh',
+
+            //setjmp.h
+            'longjmp', 'setjmp',
+
+            //signal.h
+            'raise',
+
+            //stdarg.h
+            'va_arg', 'va_copy', 'va_end', 'va_start',
+
+            //stddef.h
+            'offsetof',
+
+            //stdio.h
+            'clearerr', 'fclose', 'fdopen', 'feof', 'ferror', 'fflush', 'fgetc',
+            'fgetpos', 'fgets', 'fopen', 'fprintf', 'fputc', 'fputchar',
+            'fputs', 'fread', 'freopen', 'fscanf', 'fseek', 'fsetpos', 'ftell',
+            'fwrite', 'getc', 'getch', 'getchar', 'gets', 'perror', 'printf',
+            'putc', 'putchar', 'puts', 'remove', 'rename', 'rewind', 'scanf',
+            'setbuf', 'setvbuf', 'snprintf', 'sprintf', 'sscanf', 'tmpfile',
+            'tmpnam', 'ungetc', 'vfprintf', 'vfscanf', 'vprintf', 'vscanf',
+            'vsprintf', 'vsscanf',
+
+            //stdlib.h
+            'abort', 'abs', 'atexit', 'atof', 'atoi', 'atol', 'bsearch',
+            'calloc', 'div', 'exit', 'free', 'getenv', 'itoa', 'labs', 'ldiv',
+            'ltoa', 'malloc', 'qsort', 'rand', 'realloc', 'srand', 'strtod',
+            'strtol', 'strtoul', 'system',
+
+            //string.h
+            'memchr', 'memcmp', 'memcpy', 'memmove', 'memset', 'strcat',
+            'strchr', 'strcmp', 'strcoll', 'strcpy', 'strcspn', 'strerror',
+            'strlen', 'strncat', 'strncmp', 'strncpy', 'strpbrk', 'strrchr',
+            'strspn', 'strstr', 'strtok', 'strxfrm',
+
+            //time.h
+            'asctime', 'clock', 'ctime', 'difftime', 'gmtime', 'localtime',
+            'mktime', 'strftime', 'time',
+
+            //wchar.h
+            'btowc', 'fgetwc', 'fgetws', 'fputwc', 'fputws', 'fwide',
+            'fwprintf', 'fwscanf', 'getwc', 'getwchar', 'mbrlen', 'mbrtowc',
+            'mbsinit', 'mbsrtowcs', 'putwc', 'putwchar', 'swprintf', 'swscanf',
+            'ungetwc', 'vfwprintf', 'vswprintf', 'vwprintf', 'wcrtomb',
+            'wcscat', 'wcschr', 'wcscmp', 'wcscoll', 'wcscpy', 'wcscspn',
+            'wcsftime', 'wcslen', 'wcsncat', 'wcsncmp', 'wcsncpy', 'wcspbrk',
+            'wcsrchr', 'wcsrtombs', 'wcsspn', 'wcsstr', 'wcstod', 'wcstok',
+            'wcstol', 'wcstoul', 'wcsxfrm', 'wctob', 'wmemchr', 'wmemcmp',
+            'wmemcpy', 'wmemmove', 'wmemset', 'wprintf', 'wscanf',
+
+            //wctype.h
+            'iswalnum', 'iswalpha', 'iswcntrl', 'iswctype', 'iswdigit',
+            'iswgraph', 'iswlower', 'iswprint', 'iswpunct', 'iswspace',
+            'iswupper', 'iswxdigit', 'towctrans', 'towlower', 'towupper',
+            'wctrans', 'wctype'
+            ),
+        4 => array(
+            'auto', 'char', 'const', 'double',  'float', 'int', 'long',
+            'register', 'short', 'signed', 'sizeof', 'static', 'struct',
+            'typedef', 'union', 'unsigned', 'void', 'volatile', 'wchar_t',
+
+            'int8', 'int16', 'int32', 'int64',
+            'uint8', 'uint16', 'uint32', 'uint64',
+
+            'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t',
+            'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',
+
+            'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t',
+            'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t',
+
+            'int8_t', 'int16_t', 'int32_t', 'int64_t',
+            'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t',
+
+            'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t',
+            'size_t', 'off_t'
+            ),
+        // Public API
+        5 => array(
+            'AssignProcessToJobObject', 'CommandLineToArgvW', 'ConvertThreadToFiber',
+            'CreateFiber', 'CreateJobObjectA', 'CreateJobObjectW', 'CreateProcessA',
+            'CreateProcessAsUserA', 'CreateProcessAsUserW', 'CreateProcessW',
+            'CreateRemoteThread', 'CreateThread', 'DeleteFiber', 'ExitProcess',
+            'ExitThread', 'FreeEnvironmentStringsA', 'FreeEnvironmentStringsW',
+            'GetCommandLineA', 'GetCommandLineW', 'GetCurrentProcess',
+            'GetCurrentProcessId', 'GetCurrentThread', 'GetCurrentThreadId',
+            'GetEnvironmentStringsA', 'GetEnvironmentStringsW',
+            'GetEnvironmentVariableA', 'GetEnvironmentVariableW', 'GetExitCodeProcess',
+            'GetExitCodeThread', 'GetGuiResources', 'GetPriorityClass',
+            'GetProcessAffinityMask', 'GetProcessPriorityBoost',
+            'GetProcessShutdownParameters', 'GetProcessTimes', 'GetProcessVersion',
+            'GetProcessWorkingSetSize', 'GetStartupInfoA', 'GetStartupInfoW',
+            'GetThreadPriority', 'GetThreadPriorityBoost', 'GetThreadTimes',
+            'OpenJobObjectA', 'OpenJobObjectW', 'OpenProcess',
+            'QueryInformationJobObject', 'ResumeThread', 'SetEnvironmentVariableA',
+            'SetEnvironmentVariableW', 'SetInformationJobObject', 'SetPriorityClass',
+            'SetProcessAffinityMask', 'SetProcessPriorityBoost',
+            'SetProcessShutdownParameters', 'SetProcessWorkingSetSize',
+            'SetThreadAffinityMask', 'SetThreadIdealProcessor', 'SetThreadPriority',
+            'SetThreadPriorityBoost', 'Sleep', 'SleepEx', 'SuspendThread',
+            'SwitchToFiber', 'SwitchToThread', 'TerminateJobObject', 'TerminateProcess',
+            'TerminateThread', 'WaitForInputIdle', 'WinExec',
+
+            '_hread', '_hwrite', '_lclose', '_lcreat', '_llseek', '_lopen', '_lread',
+            '_lwrite', 'AreFileApisANSI', 'CancelIo', 'CopyFileA', 'CopyFileW',
+            'CreateDirectoryA', 'CreateDirectoryExA', 'CreateDirectoryExW',
+            'CreateDirectoryW', 'CreateFileA', 'CreateFileW', 'DeleteFileA',
+            'DeleteFileW', 'FindClose', 'FindCloseChangeNotification',
+            'FindFirstChangeNotificationA', 'FindFirstChangeNotificationW',
+            'FindFirstFileA', 'FindFirstFileW', 'FindNextFileA', 'FindNextFileW',
+            'FlushFileBuffers', 'GetCurrentDirectoryA', 'GetCurrentDirectoryW',
+            'GetDiskFreeSpaceA', 'GetDiskFreeSpaceExA', 'GetDiskFreeSpaceExW',
+            'GetDiskFreeSpaceW', 'GetDriveTypeA', 'GetDriveTypeW', 'GetFileAttributesA',
+            'GetFileAttributesExA', 'GetFileAttributesExW', 'GetFileAttributesW',
+            'GetFileInformationByHandle', 'GetFileSize', 'GetFileType',
+            'GetFullPathNameA', 'GetFullPathNameW', 'GetLogicalDrives',
+            'GetLogicalDriveStringsA', 'GetLogicalDriveStringsW', 'GetLongPathNameA',
+            'GetLongPathNameW', 'GetShortPathNameA', 'GetShortPathNameW',
+            'GetTempFileNameA', 'GetTempFileNameW', 'GetTempPathA', 'GetTempPathW',
+            'LockFile', 'MoveFileA', 'MoveFileW', 'MulDiv', 'OpenFile',
+            'QueryDosDeviceA', 'QueryDosDeviceW', 'ReadFile', 'ReadFileEx',
+            'RemoveDirectoryA', 'RemoveDirectoryW', 'SearchPathA', 'SearchPathW',
+            'SetCurrentDirectoryA', 'SetCurrentDirectoryW', 'SetEndOfFile',
+            'SetFileApisToANSI', 'SetFileApisToOEM', 'SetFileAttributesA',
+            'SetFileAttributesW', 'SetFilePointer', 'SetHandleCount',
+            'SetVolumeLabelA', 'SetVolumeLabelW', 'UnlockFile', 'WriteFile',
+            'WriteFileEx',
+
+            'DeviceIoControl',
+
+            'GetModuleFileNameA', 'GetModuleFileNameW', 'GetProcAddress',
+            'LoadLibraryA', 'LoadLibraryExA', 'LoadLibraryExW', 'LoadLibraryW',
+            'LoadModule',
+
+            'GetPrivateProfileIntA', 'GetPrivateProfileIntW',
+            'GetPrivateProfileSectionA', 'GetPrivateProfileSectionNamesA',
+            'GetPrivateProfileSectionNamesW', 'GetPrivateProfileSectionW',
+            'GetPrivateProfileStringA', 'GetPrivateProfileStringW',
+            'GetPrivateProfileStructA', 'GetPrivateProfileStructW',
+            'GetProfileIntA', 'GetProfileIntW', 'GetProfileSectionA',
+            'GetProfileSectionW', 'GetProfileStringA', 'GetProfileStringW',
+            'RegCloseKey', 'RegConnectRegistryA', 'RegConnectRegistryW',
+            'RegCreateKeyA', 'RegCreateKeyExA', 'RegCreateKeyExW',
+            'RegCreateKeyW', 'RegDeleteKeyA', 'RegDeleteKeyW', 'RegDeleteValueA',
+            'RegDeleteValueW', 'RegEnumKeyA', 'RegEnumKeyExA', 'RegEnumKeyExW',
+            'RegEnumKeyW', 'RegEnumValueA', 'RegEnumValueW', 'RegFlushKey',
+            'RegGetKeySecurity', 'RegLoadKeyA', 'RegLoadKeyW',
+            'RegNotifyChangeKeyValue', 'RegOpenKeyA', 'RegOpenKeyExA', 'RegOpenKeyExW',
+            'RegOpenKeyW', 'RegOverridePredefKey', 'RegQueryInfoKeyA',
+            'RegQueryInfoKeyW', 'RegQueryMultipleValuesA', 'RegQueryMultipleValuesW',
+            'RegQueryValueA', 'RegQueryValueExA', 'RegQueryValueExW', 'RegQueryValueW',
+            'RegReplaceKeyA', 'RegReplaceKeyW', 'RegRestoreKeyA', 'RegRestoreKeyW',
+            'RegSaveKeyA', 'RegSaveKeyW', 'RegSetKeySecurity', 'RegSetValueA',
+            'RegSetValueExA', 'RegSetValueExW', 'RegSetValueW', 'RegUnLoadKeyA',
+            'RegUnLoadKeyW', 'WritePrivateProfileSectionA', 'WritePrivateProfileSectionW',
+            'WritePrivateProfileStringA', 'WritePrivateProfileStringW',
+            'WritePrivateProfileStructA', 'WritePrivateProfileStructW',
+            'WriteProfileSectionA', 'WriteProfileSectionW', 'WriteProfileStringA',
+            'WriteProfileStringW',
+
+            'AccessCheck', 'AccessCheckAndAuditAlarmA', 'AccessCheckAndAuditAlarmW',
+            'AccessCheckByType', 'AccessCheckByTypeAndAuditAlarmA',
+            'AccessCheckByTypeAndAuditAlarmW', 'AccessCheckByTypeResultList',
+            'AccessCheckByTypeResultListAndAuditAlarmA', 'AccessCheckByTypeResultListAndAuditAlarmW',
+            'AddAccessAllowedAce', 'AddAccessAllowedAceEx', 'AddAccessAllowedObjectAce',
+            'AddAccessDeniedAce', 'AddAccessDeniedAceEx', 'AddAccessDeniedObjectAce',
+            'AddAce', 'AddAuditAccessAce', 'AddAuditAccessAceEx', 'AddAuditAccessObjectAce',
+            'AdjustTokenGroups', 'AdjustTokenPrivileges', 'AllocateAndInitializeSid',
+            'AllocateLocallyUniqueId', 'AreAllAccessesGranted', 'AreAnyAccessesGranted',
+            'BuildExplicitAccessWithNameA', 'BuildExplicitAccessWithNameW',
+            'BuildImpersonateExplicitAccessWithNameA', 'BuildImpersonateExplicitAccessWithNameW',
+            'BuildImpersonateTrusteeA', 'BuildImpersonateTrusteeW', 'BuildSecurityDescriptorA',
+            'BuildSecurityDescriptorW', 'BuildTrusteeWithNameA', 'BuildTrusteeWithNameW',
+            'BuildTrusteeWithSidA', 'BuildTrusteeWithSidW',
+            'ConvertToAutoInheritPrivateObjectSecurity', 'CopySid', 'CreatePrivateObjectSecurity',
+            'CreatePrivateObjectSecurityEx', 'CreateRestrictedToken', 'DeleteAce',
+            'DestroyPrivateObjectSecurity', 'DuplicateToken', 'DuplicateTokenEx',
+            'EqualPrefixSid', 'EqualSid', 'FindFirstFreeAce', 'FreeSid', 'GetAce',
+            'GetAclInformation', 'GetAuditedPermissionsFromAclA', 'GetAuditedPermissionsFromAclW',
+            'GetEffectiveRightsFromAclA', 'GetEffectiveRightsFromAclW',
+            'GetExplicitEntriesFromAclA', 'GetExplicitEntriesFromAclW', 'GetFileSecurityA',
+            'GetFileSecurityW', 'GetKernelObjectSecurity', 'GetLengthSid', 'GetMultipleTrusteeA',
+            'GetMultipleTrusteeOperationA', 'GetMultipleTrusteeOperationW', 'GetMultipleTrusteeW',
+            'GetNamedSecurityInfoA', 'GetNamedSecurityInfoW', 'GetPrivateObjectSecurity',
+            'GetSecurityDescriptorControl', 'GetSecurityDescriptorDacl',
+            'GetSecurityDescriptorGroup', 'GetSecurityDescriptorLength',
+            'GetSecurityDescriptorOwner', 'GetSecurityDescriptorSacl', 'GetSecurityInfo',
+            'GetSidIdentifierAuthority', 'GetSidLengthRequired', 'GetSidSubAuthority',
+            'GetSidSubAuthorityCount', 'GetTokenInformation', 'GetTrusteeFormA',
+            'GetTrusteeFormW', 'GetTrusteeNameA', 'GetTrusteeNameW', 'GetTrusteeTypeA',
+            'GetTrusteeTypeW', 'GetUserObjectSecurity', 'ImpersonateLoggedOnUser',
+            'ImpersonateNamedPipeClient', 'ImpersonateSelf', 'InitializeAcl',
+            'InitializeSecurityDescriptor', 'InitializeSid', 'IsTokenRestricted', 'IsValidAcl',
+            'IsValidSecurityDescriptor', 'IsValidSid', 'LogonUserA', 'LogonUserW',
+            'LookupAccountNameA', 'LookupAccountNameW', 'LookupAccountSidA', 'LookupAccountSidW',
+            'LookupPrivilegeDisplayNameA', 'LookupPrivilegeDisplayNameW', 'LookupPrivilegeNameA',
+            'LookupPrivilegeNameW', 'LookupPrivilegeValueA', 'LookupPrivilegeValueW',
+            'LookupSecurityDescriptorPartsA', 'LookupSecurityDescriptorPartsW', 'MakeAbsoluteSD',
+            'MakeSelfRelativeSD', 'MapGenericMask', 'ObjectCloseAuditAlarmA',
+            'ObjectCloseAuditAlarmW', 'ObjectDeleteAuditAlarmA', 'ObjectDeleteAuditAlarmW',
+            'ObjectOpenAuditAlarmA', 'ObjectOpenAuditAlarmW', 'ObjectPrivilegeAuditAlarmA',
+            'ObjectPrivilegeAuditAlarmW', 'OpenProcessToken', 'OpenThreadToken', 'PrivilegeCheck',
+            'PrivilegedServiceAuditAlarmA', 'PrivilegedServiceAuditAlarmW', 'RevertToSelf',
+            'SetAclInformation', 'SetEntriesInAclA', 'SetEntriesInAclW', 'SetFileSecurityA',
+            'SetFileSecurityW', 'SetKernelObjectSecurity', 'SetNamedSecurityInfoA',
+            'SetNamedSecurityInfoW', 'SetPrivateObjectSecurity', 'SetPrivateObjectSecurityEx',
+            'SetSecurityDescriptorControl', 'SetSecurityDescriptorDacl',
+            'SetSecurityDescriptorGroup', 'SetSecurityDescriptorOwner',
+            'SetSecurityDescriptorSacl', 'SetSecurityInfo', 'SetThreadToken',
+            'SetTokenInformation', 'SetUserObjectSecurity', 'ChangeServiceConfig2A',
+            'ChangeServiceConfig2W', 'ChangeServiceConfigA', 'ChangeServiceConfigW',
+            'CloseServiceHandle', 'ControlService', 'CreateServiceA', 'CreateServiceW',
+            'DeleteService', 'EnumDependentServicesA', 'EnumDependentServicesW',
+            'EnumServicesStatusA', 'EnumServicesStatusW', 'GetServiceDisplayNameA',
+            'GetServiceDisplayNameW', 'GetServiceKeyNameA', 'GetServiceKeyNameW',
+            'LockServiceDatabase', 'NotifyBootConfigStatus', 'OpenSCManagerA', 'OpenSCManagerW',
+            'OpenServiceA', 'OpenServiceW', 'QueryServiceConfig2A', 'QueryServiceConfig2W',
+            'QueryServiceConfigA', 'QueryServiceConfigW', 'QueryServiceLockStatusA',
+            'QueryServiceLockStatusW', 'QueryServiceObjectSecurity', 'QueryServiceStatus',
+            'RegisterServiceCtrlHandlerA', 'RegisterServiceCtrlHandlerW',
+            'SetServiceObjectSecurity', 'SetServiceStatus', 'StartServiceA',
+            'StartServiceCtrlDispatcherA', 'StartServiceCtrlDispatcherW', 'StartServiceW',
+            'UnlockServiceDatabase',
+
+            'MultinetGetConnectionPerformanceA', 'MultinetGetConnectionPerformanceW',
+            'NetAlertRaise', 'NetAlertRaiseEx', 'NetApiBufferAllocate', 'NetApiBufferFree',
+            'NetApiBufferReallocate', 'NetApiBufferSize', 'NetConnectionEnum', 'NetFileClose',
+            'NetFileGetInfo', 'NetGetAnyDCName', 'NetGetDCName', 'NetGetDisplayInformationIndex',
+            'NetGroupAdd', 'NetGroupAddUser', 'NetGroupDel', 'NetGroupDelUser', 'NetGroupEnum',
+            'NetGroupGetInfo', 'NetGroupGetUsers', 'NetGroupSetInfo', 'NetGroupSetUsers',
+            'NetLocalGroupAdd', 'NetLocalGroupAddMember', 'NetLocalGroupAddMembers',
+            'NetLocalGroupDel', 'NetLocalGroupDelMember', 'NetLocalGroupDelMembers',
+            'NetLocalGroupEnum', 'NetLocalGroupGetInfo', 'NetLocalGroupGetMembers',
+            'NetLocalGroupSetInfo', 'NetLocalGroupSetMembers', 'NetMessageBufferSend',
+            'NetMessageNameAdd', 'NetMessageNameDel', 'NetMessageNameEnum',
+            'NetMessageNameGetInfo', 'NetQueryDisplayInformation', 'NetRemoteComputerSupports',
+            'NetRemoteTOd', 'NetReplExportDirAdd', 'NetReplExportDirDel', 'NetReplExportDirEnum',
+            'NetReplExportDirGetInfo', 'NetReplExportDirLock', 'NetReplExportDirSetInfo',
+            'NetReplExportDirUnlock', 'NetReplGetInfo', 'NetReplImportDirAdd',
+            'NetReplImportDirDel', 'NetReplImportDirEnum', 'NetReplImportDirGetInfo',
+            'NetReplImportDirLock', 'NetReplImportDirUnlock', 'NetReplSetInfo',
+            'NetScheduleJobAdd', 'NetScheduleJobDel', 'NetScheduleJobEnum',
+            'NetScheduleJobGetInfo', 'NetServerComputerNameAdd', 'NetServerComputerNameDel',
+            'NetServerDiskEnum', 'NetServerEnum', 'NetServerEnumEx', 'NetServerGetInfo',
+            'NetServerSetInfo', 'NetServerTransportAdd', 'NetServerTransportAddEx',
+            'NetServerTransportDel', 'NetServerTransportEnum', 'NetSessionDel', 'NetSessionEnum',
+            'NetSessionGetInfo', 'NetShareAdd', 'NetShareCheck', 'NetShareDel', 'NetShareEnum',
+            'NetShareGetInfo', 'NetShareSetInfo', 'NetStatisticsGet', 'NetUseAdd', 'NetUseDel',
+            'NetUseEnum', 'NetUseGetInfo', 'NetUserAdd', 'NetUserChangePassword', 'NetUserDel',
+            'NetUserEnum', 'NetUserGetGroups', 'NetUserGetInfo', 'NetUserGetLocalGroups',
+            'NetUserModalsGet', 'NetUserModalsSet', 'NetUserSetGroups', 'NetUserSetInfo',
+            'NetWkstaGetInfo', 'NetWkstaSetInfo', 'NetWkstaTransportAdd', 'NetWkstaTransportDel',
+            'NetWkstaTransportEnum', 'NetWkstaUserEnum', 'NetWkstaUserGetInfo',
+            'NetWkstaUserSetInfo', 'WNetAddConnection2A', 'WNetAddConnection2W',
+            'WNetAddConnection3A', 'WNetAddConnection3W', 'WNetAddConnectionA',
+            'WNetAddConnectionW', 'WNetCancelConnection2A', 'WNetCancelConnection2W',
+            'WNetCancelConnectionA', 'WNetCancelConnectionW', 'WNetCloseEnum',
+            'WNetConnectionDialog', 'WNetConnectionDialog1A', 'WNetConnectionDialog1W',
+            'WNetDisconnectDialog', 'WNetDisconnectDialog1A', 'WNetDisconnectDialog1W',
+            'WNetEnumResourceA', 'WNetEnumResourceW', 'WNetGetConnectionA', 'WNetGetConnectionW',
+            'WNetGetLastErrorA', 'WNetGetLastErrorW', 'WNetGetNetworkInformationA',
+            'WNetGetNetworkInformationW', 'WNetGetProviderNameA', 'WNetGetProviderNameW',
+            'WNetGetResourceInformationA', 'WNetGetResourceInformationW',
+            'WNetGetResourceParentA', 'WNetGetResourceParentW', 'WNetGetUniversalNameA',
+            'WNetGetUniversalNameW', 'WNetGetUserA', 'WNetGetUserW', 'WNetOpenEnumA',
+            'WNetOpenEnumW', 'WNetUseConnectionA', 'WnetUseConnectionW',
+
+            'accept', 'bind', 'closesocket', 'connect', 'gethostbyaddr', 'gethostbyname',
+            'gethostname', 'getpeername', 'getprotobyname', 'getprotobynumber', 'getservbyname',
+            'getservbyport', 'getsockname', 'getsockopt', 'htonl', 'htons', 'inet_addr',
+            'inet_ntoa', 'ioctlsocket', 'listen', 'ntohl', 'ntohs', 'recv', 'recvfrom', 'select',
+            'send', 'sendto', 'setsockopt', 'shutdown', 'socket', 'WSAAccept',
+            'WSAAddressToStringA', 'WSAAddressToStringW', 'WSAAsyncGetHostByAddr',
+            'WSAAsyncGetHostByName', 'WSAAsyncGetProtoByName', 'WSAAsyncGetProtoByNumber',
+            'WSAAsyncGetServByName', 'WSAAsyncGetServByPort', 'WSAAsyncSelect',
+            'WSACancelAsyncRequest', 'WSACancelBlockingCall', 'WSACleanup', 'WSACloseEvent',
+            'WSAConnect', 'WSACreateEvent', 'WSADuplicateSocketA', 'WSADuplicateSocketW',
+            'WSAEnumNameSpaceProvidersA', 'WSAEnumNameSpaceProvidersW', 'WSAEnumNetworkEvents',
+            'WSAEnumProtocolsA', 'WSAEnumProtocolsW', 'WSAEventSelect', 'WSAGetLastError',
+            'WSAGetOverlappedResult', 'WSAGetQOSByName', 'WSAGetServiceClassInfoA',
+            'WSAGetServiceClassInfoW', 'WSAGetServiceClassNameByClassIdA',
+            'WSAGetServiceClassNameByClassIdW', 'WSAHtonl', 'WSAHtons', 'WSAInstallServiceClassA',
+            'WSAInstallServiceClassW', 'WSAIoctl', 'WSAIsBlocking', 'WSAJoinLeaf',
+            'WSALookupServiceBeginA', 'WSALookupServiceBeginW', 'WSALookupServiceEnd',
+            'WSALookupServiceNextA', 'WSALookupServiceNextW', 'WSANtohl', 'WSANtohs',
+            'WSAProviderConfigChange', 'WSARecv', 'WSARecvDisconnect', 'WSARecvFrom',
+            'WSARemoveServiceClass', 'WSAResetEvent', 'WSASend', 'WSASendDisconnect', 'WSASendTo',
+            'WSASetBlockingHook', 'WSASetEvent', 'WSASetLastError', 'WSASetServiceA',
+            'WSASetServiceW', 'WSASocketA', 'WSASocketW', 'WSAStartup', 'WSAStringToAddressA',
+            'WSAStringToAddressW', 'WSAUnhookBlockingHook', 'WSAWaitForMultipleEvents',
+            'WSCDeinstallProvider', 'WSCEnableNSProvider', 'WSCEnumProtocols',
+            'WSCGetProviderPath', 'WSCInstallNameSpace', 'WSCInstallProvider',
+            'WSCUnInstallNameSpace',
+
+            'ContinueDebugEvent', 'DebugActiveProcess', 'DebugBreak', 'FatalExit',
+            'FlushInstructionCache', 'GetThreadContext', 'GetThreadSelectorEntry',
+            'IsDebuggerPresent', 'OutputDebugStringA', 'OutputDebugStringW', 'ReadProcessMemory',
+            'SetDebugErrorLevel', 'SetThreadContext', 'WaitForDebugEvent', 'WriteProcessMemory',
+
+            'CloseHandle', 'DuplicateHandle', 'GetHandleInformation', 'SetHandleInformation',
+
+            'AdjustWindowRect', 'AdjustWindowRectEx', 'AllowSetForegroundWindow',
+            'AnimateWindow', 'AnyPopup', 'ArrangeIconicWindows', 'BeginDeferWindowPos',
+            'BringWindowToTop', 'CascadeWindows', 'ChildWindowFromPoint',
+            'ChildWindowFromPointEx', 'CloseWindow', 'CreateWindowExA', 'CreateWindowExW',
+            'DeferWindowPos', 'DestroyWindow', 'EndDeferWindowPos', 'EnumChildWindows',
+            'EnumThreadWindows', 'EnumWindows', 'FindWindowA', 'FindWindowExA', 'FindWindowExW',
+            'FindWindowW', 'GetAltTabInfoA', 'GetAltTabInfoW', 'GetAncestor', 'GetClientRect',
+            'GetDesktopWindow', 'GetForegroundWindow', 'GetGUIThreadInfo', 'GetLastActivePopup',
+            'GetLayout', 'GetParent', 'GetProcessDefaultLayout', 'GetTitleBarInf', 'GetTopWindow',
+            'GetWindow', 'GetWindowInfo', 'GetWindowModuleFileNameA', 'GetWindowModuleFileNameW',
+            'GetWindowPlacement', 'GetWindowRect', 'GetWindowTextA', 'GetWindowTextLengthA',
+            'GetWindowTextLengthW', 'GetWindowTextW', 'GetWindowThreadProcessId', 'IsChild',
+            'IsIconic', 'IsWindow', 'IsWindowUnicode', 'IsWindowVisible', 'IsZoomed',
+            'LockSetForegroundWindow', 'MoveWindow', 'OpenIcon', 'RealChildWindowFromPoint',
+            'RealGetWindowClassA', 'RealGetWindowClassW', 'SetForegroundWindow',
+            'SetLayeredWindowAttributes', 'SetLayout', 'SetParent', 'SetProcessDefaultLayout',
+            'SetWindowPlacement', 'SetWindowPos', 'SetWindowTextA', 'SetWindowTextW',
+            'ShowOwnedPopups', 'ShowWindow', 'ShowWindowAsync', 'TileWindows',
+            'UpdateLayeredWindow', 'WindowFromPoint',
+
+            'CreateDialogIndirectParamA', 'CreateDialogIndirectParamW', 'CreateDialogParamA',
+            'CreateDialogParamW', 'DefDlgProcA', 'DefDlgProcW', 'DialogBoxIndirectParamA',
+            'DialogBoxIndirectParamW', 'DialogBoxParamA', 'DialogBoxParamW', 'EndDialog',
+            'GetDialogBaseUnits', 'GetDlgCtrlID', 'GetDlgItem', 'GetDlgItemInt',
+            'GetDlgItemTextA', 'GetDlgItemTextW', 'GetNextDlgGroupItem', 'GetNextDlgTabItem',
+            'IsDialogMessageA', 'IsDialogMessageW', 'MapDialogRect', 'MessageBoxA',
+            'MessageBoxExA', 'MessageBoxExW', 'MessageBoxIndirectA', 'MessageBoxIndirectW',
+            'MessageBoxW', 'SendDlgItemMessageA', 'SendDlgItemMessageW', 'SetDlgItemInt',
+            'SetDlgItemTextA', 'SetDlgItemTextW',
+
+            'GetWriteWatch', 'GlobalMemoryStatus', 'GlobalMemoryStatusEx', 'IsBadCodePtr',
+            'IsBadReadPtr', 'IsBadStringPtrA', 'IsBadStringPtrW', 'IsBadWritePtr',
+            'ResetWriteWatch', 'AllocateUserPhysicalPages', 'FreeUserPhysicalPages',
+            'MapUserPhysicalPages', 'MapUserPhysicalPagesScatter', 'GlobalAlloc', 'GlobalFlags',
+            'GlobalFree', 'GlobalHandle', 'GlobalLock', 'GlobalReAlloc', 'GlobalSize',
+            'GlobalUnlock', 'LocalAlloc', 'LocalFlags', 'LocalFree', 'LocalHandle', 'LocalLock',
+            'LocalReAlloc', 'LocalSize', 'LocalUnlock', 'GetProcessHeap', 'GetProcessHeaps',
+            'HeapAlloc', 'HeapCompact', 'HeapCreate', 'HeapDestroy', 'HeapFree', 'HeapLock',
+            'HeapReAlloc', 'HeapSize', 'HeapUnlock', 'HeapValidate', 'HeapWalk', 'VirtualAlloc',
+            'VirtualAllocEx', 'VirtualFree', 'VirtualFreeEx', 'VirtualLock', 'VirtualProtect',
+            'VirtualProtectEx', 'VirtualQuery', 'VirtualQueryEx', 'VirtualUnlock',
+            'GetFreeSpace', 'GlobalCompact', 'GlobalFix', 'GlobalUnfix', 'GlobalUnWire',
+            'GlobalWire', 'IsBadHugeReadPtr', 'IsBadHugeWritePtr', 'LocalCompact', 'LocalShrink',
+
+            'GetClassInfoA', 'GetClassInfoW', 'GetClassInfoExA', 'GetClassInfoExW',
+            'GetClassLongA', 'GetClassLongW', 'GetClassLongPtrA', 'GetClassLongPtrW',
+            'RegisterClassA', 'RegisterClassW', 'RegisterClassExA', 'RegisterClassExW',
+            'SetClassLongA', 'SetClassLongW', 'SetClassLongPtrA', 'SetClassLongPtrW',
+            'SetWindowLongA', 'SetWindowLongW', 'SetWindowLongPtrA', 'SetWindowLongPtrW',
+            'UnregisterClassA', 'UnregisterClassW', 'GetClassWord', 'GetWindowWord',
+            'SetClassWord', 'SetWindowWord'
+            ),
+        // Native API
+        6 => array(
+            'CsrAllocateCaptureBuffer', 'CsrAllocateCapturePointer', 'CsrAllocateMessagePointer',
+            'CsrCaptureMessageBuffer', 'CsrCaptureMessageString', 'CsrCaptureTimeout',
+            'CsrClientCallServer', 'CsrClientConnectToServer', 'CsrFreeCaptureBuffer',
+            'CsrIdentifyAlertableThread', 'CsrNewThread', 'CsrProbeForRead', 'CsrProbeForWrite',
+            'CsrSetPriorityClass',
+
+            'LdrAccessResource', 'LdrDisableThreadCalloutsForDll', 'LdrEnumResources',
+            'LdrFindEntryForAddress', 'LdrFindResource_U', 'LdrFindResourceDirectory_U',
+            'LdrGetDllHandle', 'LdrGetProcedureAddress', 'LdrInitializeThunk', 'LdrLoadDll',
+            'LdrProcessRelocationBlock', 'LdrQueryImageFileExecutionOptions',
+            'LdrQueryProcessModuleInformation', 'LdrShutdownProcess', 'LdrShutdownThread',
+            'LdrUnloadDll', 'LdrVerifyImageMatchesChecksum',
+
+            'NtAcceptConnectPort', 'ZwAcceptConnectPort', 'NtCompleteConnectPort',
+            'ZwCompleteConnectPort', 'NtConnectPort', 'ZwConnectPort', 'NtCreatePort',
+            'ZwCreatePort', 'NtImpersonateClientOfPort', 'ZwImpersonateClientOfPort',
+            'NtListenPort', 'ZwListenPort', 'NtQueryInformationPort', 'ZwQueryInformationPort',
+            'NtReadRequestData', 'ZwReadRequestData', 'NtReplyPort', 'ZwReplyPort',
+            'NtReplyWaitReceivePort', 'ZwReplyWaitReceivePort', 'NtReplyWaitReplyPort',
+            'ZwReplyWaitReplyPort', 'NtRequestPort', 'ZwRequestPort', 'NtRequestWaitReplyPort',
+            'ZwRequestWaitReplyPort', 'NtSecureConnectPort', 'ZwSecureConnectPort',
+            'NtWriteRequestData', 'ZwWriteRequestData',
+
+            'NtAccessCheck', 'ZwAccessCheck', 'NtAccessCheckAndAuditAlarm',
+            'ZwAccessCheckAndAuditAlarm', 'NtAccessCheckByType', 'ZwAccessCheckByType',
+            'NtAccessCheckByTypeAndAuditAlarm', 'ZwAccessCheckByTypeAndAuditAlarm',
+            'NtAccessCheckByTypeResultList', 'ZwAccessCheckByTypeResultList',
+            'NtAdjustGroupsToken', 'ZwAdjustGroupsToken', 'NtAdjustPrivilegesToken',
+            'ZwAdjustPrivilegesToken', 'NtCloseObjectAuditAlarm', 'ZwCloseObjectAuditAlarm',
+            'NtCreateToken', 'ZwCreateToken', 'NtDeleteObjectAuditAlarm',
+            'ZwDeleteObjectAuditAlarm', 'NtDuplicateToken', 'ZwDuplicateToken',
+            'NtFilterToken', 'ZwFilterToken', 'NtImpersonateThread', 'ZwImpersonateThread',
+            'NtOpenObjectAuditAlarm', 'ZwOpenObjectAuditAlarm', 'NtOpenProcessToken',
+            'ZwOpenProcessToken', 'NtOpenThreadToken', 'ZwOpenThreadToken', 'NtPrivilegeCheck',
+            'ZwPrivilegeCheck', 'NtPrivilegedServiceAuditAlarm', 'ZwPrivilegedServiceAuditAlarm',
+            'NtPrivilegeObjectAuditAlarm', 'ZwPrivilegeObjectAuditAlarm',
+            'NtQueryInformationToken', 'ZwQueryInformationToken', 'NtQuerySecurityObject',
+            'ZwQuerySecurityObject', 'NtSetInformationToken', 'ZwSetInformationToken',
+            'NtSetSecurityObject', 'ZwSetSecurityObject',
+
+            'NtAddAtom', 'ZwAddAtom', 'NtDeleteAtom', 'ZwDeleteAtom', 'NtFindAtom', 'ZwFindAtom',
+            'NtQueryInformationAtom', 'ZwQueryInformationAtom',
+
+            'NtAlertResumeThread', 'ZwAlertResumeThread', 'NtAlertThread', 'ZwAlertThread',
+            'NtCreateProcess', 'ZwCreateProcess', 'NtCreateThread', 'ZwCreateThread',
+            'NtCurrentTeb', 'NtDelayExecution', 'ZwDelayExecution', 'NtGetContextThread',
+            'ZwGetContextThread', 'NtOpenProcess', 'ZwOpenProcess', 'NtOpenThread',
+            'ZwOpenThread', 'NtQueryInformationProcess', 'ZwQueryInformationProcess',
+            'NtQueryInformationThread', 'ZwQueryInformationThread', 'NtQueueApcThread',
+            'ZwQueueApcThread', 'NtResumeThread', 'ZwResumeThread', 'NtSetContextThread',
+            'ZwSetContextThread', 'NtSetHighWaitLowThread', 'ZwSetHighWaitLowThread',
+            'NtSetInformationProcess', 'ZwSetInformationProcess', 'NtSetInformationThread',
+            'ZwSetInformationThread', 'NtSetLowWaitHighThread', 'ZwSetLowWaitHighThread',
+            'NtSuspendThread', 'ZwSuspendThread', 'NtTerminateProcess', 'ZwTerminateProcess',
+            'NtTerminateThread', 'ZwTerminateThread', 'NtTestAlert', 'ZwTestAlert',
+            'NtYieldExecution', 'ZwYieldExecution',
+
+            'NtAllocateVirtualMemory', 'ZwAllocateVirtualMemory', 'NtAllocateVirtualMemory64',
+            'ZwAllocateVirtualMemory64', 'NtAreMappedFilesTheSame', 'ZwAreMappedFilesTheSame',
+            'NtCreateSection', 'ZwCreateSection', 'NtExtendSection', 'ZwExtendSection',
+            'NtFlushVirtualMemory', 'ZwFlushVirtualMemory', 'NtFreeVirtualMemory',
+            'ZwFreeVirtualMemory', 'NtFreeVirtualMemory64', 'ZwFreeVirtualMemory64',
+            'NtLockVirtualMemory', 'ZwLockVirtualMemory', 'NtMapViewOfSection',
+            'ZwMapViewOfSection', 'NtMapViewOfVlmSection', 'ZwMapViewOfVlmSection',
+            'NtOpenSection', 'ZwOpenSection', 'NtProtectVirtualMemory', 'ZwProtectVirtualMemory',
+            'NtProtectVirtualMemory64', 'ZwProtectVirtualMemory64', 'NtQueryVirtualMemory',
+            'ZwQueryVirtualMemory', 'NtQueryVirtualMemory64', 'ZwQueryVirtualMemory64',
+            'NtReadVirtualMemory', 'ZwReadVirtualMemory', 'NtReadVirtualMemory64',
+            'ZwReadVirtualMemory64', 'NtUnlockVirtualMemory', 'ZwUnlockVirtualMemory',
+            'NtUnmapViewOfSection', 'ZwUnmapViewOfSection', 'NtUnmapViewOfVlmSection',
+            'ZwUnmapViewOfVlmSection', 'NtWriteVirtualMemory', 'ZwWriteVirtualMemory',
+            'NtWriteVirtualMemory64', 'ZwWriteVirtualMemory64',
+
+            'NtAssignProcessToJobObject', 'ZwAssignProcessToJobObject', 'NtCreateJobObject',
+            'ZwCreateJobObject', 'NtOpenJobObject', 'ZwOpenJobObject',
+            'NtQueryInformationJobObject', 'ZwQueryInformationJobObject',
+            'NtSetInformationJobObject', 'ZwSetInformationJobObject', 'NtTerminateJobObject',
+            'ZwTerminateJobObject',
+
+            'NtCancelIoFile', 'ZwCancelIoFile', 'NtCreateFile', 'ZwCreateFile',
+            'NtCreateIoCompletion', 'ZwCreateIoCompletion', 'NtDeleteFile', 'ZwDeleteFile',
+            'NtDeviceIoControlFile', 'ZwDeviceIoControlFile', 'NtFlushBuffersFile',
+            'ZwFlushBuffersFile', 'NtFsControlFile', 'ZwFsControlFile', 'NtLockFile', 'ZwLockFile',
+            'NtNotifyChangeDirectoryFile', 'ZwNotifyChangeDirectoryFile', 'NtOpenFile',
+            'ZwOpenFile', 'NtOpenIoCompletion', 'ZwOpenIoCompletion', 'NtQueryAttributesFile',
+            'ZwQueryAttributesFile', 'NtQueryDirectoryFile', 'ZwQueryDirectoryFile',
+            'NtQueryEaFile', 'ZwQueryEaFile', 'NtQueryIoCompletion', 'ZwQueryIoCompletion',
+            'NtQueryQuotaInformationFile', 'ZwQueryQuotaInformationFile',
+            'NtQueryVolumeInformationFile', 'ZwQueryVolumeInformationFile', 'NtReadFile',
+            'ZwReadFile', 'NtReadFile64', 'ZwReadFile64', 'NtReadFileScatter', 'ZwReadFileScatter',
+            'NtRemoveIoCompletion', 'ZwRemoveIoCompletion', 'NtSetEaFile', 'ZwSetEaFile',
+            'NtSetInformationFile', 'ZwSetInformationFile', 'NtSetIoCompletion',
+            'ZwSetIoCompletion', 'NtSetQuotaInformationFile', 'ZwSetQuotaInformationFile',
+            'NtSetVolumeInformationFile', 'ZwSetVolumeInformationFile', 'NtUnlockFile',
+            'ZwUnlockFile', 'NtWriteFile', 'ZwWriteFile', 'NtWriteFile64','ZwWriteFile64',
+            'NtWriteFileGather', 'ZwWriteFileGather', 'NtQueryFullAttributesFile',
+            'ZwQueryFullAttributesFile', 'NtQueryInformationFile', 'ZwQueryInformationFile',
+
+            'RtlAbortRXact', 'RtlAbsoluteToSelfRelativeSD', 'RtlAcquirePebLock',
+            'RtlAcquireResourceExclusive', 'RtlAcquireResourceShared', 'RtlAddAccessAllowedAce',
+            'RtlAddAccessDeniedAce', 'RtlAddAce', 'RtlAddActionToRXact', 'RtlAddAtomToAtomTable',
+            'RtlAddAttributeActionToRXact', 'RtlAddAuditAccessAce', 'RtlAddCompoundAce',
+            'RtlAdjustPrivilege', 'RtlAllocateAndInitializeSid', 'RtlAllocateHandle',
+            'RtlAllocateHeap', 'RtlAnsiCharToUnicodeChar', 'RtlAnsiStringToUnicodeSize',
+            'RtlAnsiStringToUnicodeString', 'RtlAppendAsciizToString', 'RtlAppendStringToString',
+            'RtlAppendUnicodeStringToString', 'RtlAppendUnicodeToString', 'RtlApplyRXact',
+            'RtlApplyRXactNoFlush', 'RtlAreAllAccessesGranted', 'RtlAreAnyAccessesGranted',
+            'RtlAreBitsClear', 'RtlAreBitsSet', 'RtlAssert', 'RtlCaptureStackBackTrace',
+            'RtlCharToInteger', 'RtlCheckRegistryKey', 'RtlClearAllBits', 'RtlClearBits',
+            'RtlClosePropertySet', 'RtlCompactHeap', 'RtlCompareMemory', 'RtlCompareMemoryUlong',
+            'RtlCompareString', 'RtlCompareUnicodeString', 'RtlCompareVariants',
+            'RtlCompressBuffer', 'RtlConsoleMultiByteToUnicodeN', 'RtlConvertExclusiveToShared',
+            'RtlConvertLongToLargeInteger', 'RtlConvertPropertyToVariant',
+            'RtlConvertSharedToExclusive', 'RtlConvertSidToUnicodeString',
+            'RtlConvertUiListToApiList', 'RtlConvertUlongToLargeInteger',
+            'RtlConvertVariantToProperty', 'RtlCopyLuid', 'RtlCopyLuidAndAttributesArray',
+            'RtlCopySecurityDescriptor', 'RtlCopySid', 'RtlCopySidAndAttributesArray',
+            'RtlCopyString', 'RtlCopyUnicodeString', 'RtlCreateAcl', 'RtlCreateAndSetSD',
+            'RtlCreateAtomTable', 'RtlCreateEnvironment', 'RtlCreateHeap',
+            'RtlCreateProcessParameters', 'RtlCreatePropertySet', 'RtlCreateQueryDebugBuffer',
+            'RtlCreateRegistryKey', 'RtlCreateSecurityDescriptor', 'RtlCreateTagHeap',
+            'RtlCreateUnicodeString', 'RtlCreateUnicodeStringFromAsciiz', 'RtlCreateUserProcess',
+            'RtlCreateUserSecurityObject', 'RtlCreateUserThread', 'RtlCustomCPToUnicodeN',
+            'RtlCutoverTimeToSystemTime', 'RtlDecompressBuffer', 'RtlDecompressFragment',
+            'RtlDelete', 'RtlDeleteAce', 'RtlDeleteAtomFromAtomTable', 'RtlDeleteCriticalSection',
+            'RtlDeleteElementGenericTable', 'RtlDeleteNoSplay', 'RtlDeleteRegistryValue',
+            'RtlDeleteResource', 'RtlDeleteSecurityObject', 'RtlDeNormalizeProcessParams',
+            'RtlDestroyAtomTable', 'RtlDestroyEnvironment', 'RtlDestroyHandleTable',
+            'RtlDestroyHeap', 'RtlDestroyProcessParameters', 'RtlDestroyQueryDebugBuffer',
+            'RtlDetermineDosPathNameType_U', 'RtlDoesFileExists_U', 'RtlDosPathNameToNtPathName_U',
+            'RtlDosSearchPath_U', 'RtlDowncaseUnicodeString', 'RtlDumpResource',
+            'RtlEmptyAtomTable', 'RtlEnlargedIntegerMultiply', 'RtlEnlargedUnsignedDivide',
+            'RtlEnlargedUnsignedMultiply', 'RtlEnterCriticalSection', 'RtlEnumerateGenericTable',
+            'RtlEnumerateGenericTableWithoutSplaying', 'RtlEnumerateProperties',
+            'RtlEnumProcessHeaps', 'RtlEqualComputerName', 'RtlEqualDomainName', 'RtlEqualLuid',
+            'RtlEqualPrefixSid', 'RtlEqualSid', 'RtlEqualString', 'RtlEqualUnicodeString',
+            'RtlEraseUnicodeString', 'RtlExpandEnvironmentStrings_U', 'RtlExtendedIntegerMultiply',
+            'RtlExtendedLargeIntegerDivide', 'RtlExtendedMagicDivide', 'RtlExtendHeap',
+            'RtlFillMemory', 'RtlFillMemoryUlong', 'RtlFindClearBits', 'RtlFindClearBitsAndSet',
+            'RtlFindLongestRunClear', 'RtlFindLongestRunSet', 'RtlFindMessage', 'RtlFindSetBits',
+            'RtlFindSetBitsAndClear', 'RtlFirstFreeAce', 'RtlFlushPropertySet',
+            'RtlFormatCurrentUserKeyPath', 'RtlFormatMessage', 'RtlFreeAnsiString',
+            'RtlFreeHandle', 'RtlFreeHeap', 'RtlFreeOemString', 'RtlFreeSid',
+            'RtlFreeUnicodeString', 'RtlFreeUserThreadStack', 'RtlGenerate8dot3Name', 'RtlGetAce',
+            'RtlGetCallersAddress', 'RtlGetCompressionWorkSpaceSize',
+            'RtlGetControlSecurityDescriptor', 'RtlGetCurrentDirectory_U',
+            'RtlGetDaclSecurityDescriptor', 'RtlGetElementGenericTable', 'RtlGetFullPathName_U',
+            'RtlGetGroupSecurityDescriptor', 'RtlGetLongestNtPathLength', 'RtlGetNtGlobalFlags',
+            'RtlGetNtProductType', 'RtlGetOwnerSecurityDescriptor', 'RtlGetProcessHeaps',
+            'RtlGetSaclSecurityDescriptor', 'RtlGetUserInfoHeap', 'RtlGuidToPropertySetName',
+            'RtlIdentifierAuthoritySid', 'RtlImageDirectoryEntryToData', 'RtlImageNtHeader',
+            'RtlImageRvaToSection', 'RtlImageRvaToVa', 'RtlImpersonateSelf', 'RtlInitAnsiString',
+            'RtlInitCodePageTable', 'RtlInitializeAtomPackage', 'RtlInitializeBitMap',
+            'RtlInitializeContext', 'RtlInitializeCriticalSection',
+            'RtlInitializeCriticalSectionAndSpinCount', 'RtlInitializeGenericTable',
+            'RtlInitializeHandleTable', 'RtlInitializeResource', 'RtlInitializeRXact',
+            'RtlInitializeSid', 'RtlInitNlsTables', 'RtlInitString', 'RtlInitUnicodeString',
+            'RtlInsertElementGenericTable', 'RtlIntegerToChar', 'RtlIntegerToUnicodeString',
+            'RtlIsDosDeviceName_U', 'RtlIsGenericTableEmpty', 'RtlIsNameLegalDOS8Dot3',
+            'RtlIsTextUnicode', 'RtlIsValidHandle', 'RtlIsValidIndexHandle', 'RtlLargeIntegerAdd',
+            'RtlLargeIntegerArithmeticShift', 'RtlLargeIntegerDivide', 'RtlLargeIntegerNegate',
+            'RtlLargeIntegerShiftLeft', 'RtlLargeIntegerShiftRight', 'RtlLargeIntegerSubtract',
+            'RtlLargeIntegerToChar', 'RtlLeaveCriticalSection', 'RtlLengthRequiredSid',
+            'RtlLengthSecurityDescriptor', 'RtlLengthSid', 'RtlLocalTimeToSystemTime',
+            'RtlLockHeap', 'RtlLookupAtomInAtomTable', 'RtlLookupElementGenericTable',
+            'RtlMakeSelfRelativeSD', 'RtlMapGenericMask', 'RtlMoveMemory',
+            'RtlMultiByteToUnicodeN', 'RtlMultiByteToUnicodeSize', 'RtlNewInstanceSecurityObject',
+            'RtlNewSecurityGrantedAccess', 'RtlNewSecurityObject', 'RtlNormalizeProcessParams',
+            'RtlNtStatusToDosError', 'RtlNumberGenericTableElements', 'RtlNumberOfClearBits',
+            'RtlNumberOfSetBits', 'RtlOemStringToUnicodeSize', 'RtlOemStringToUnicodeString',
+            'RtlOemToUnicodeN', 'RtlOnMappedStreamEvent', 'RtlOpenCurrentUser',
+            'RtlPcToFileHeader', 'RtlPinAtomInAtomTable', 'RtlpNtCreateKey',
+            'RtlpNtEnumerateSubKey', 'RtlpNtMakeTemporaryKey', 'RtlpNtOpenKey',
+            'RtlpNtQueryValueKey', 'RtlpNtSetValueKey', 'RtlPrefixString',
+            'RtlPrefixUnicodeString', 'RtlPropertySetNameToGuid', 'RtlProtectHeap',
+            'RtlpUnWaitCriticalSection', 'RtlpWaitForCriticalSection', 'RtlQueryAtomInAtomTable',
+            'RtlQueryEnvironmentVariable_U', 'RtlQueryInformationAcl',
+            'RtlQueryProcessBackTraceInformation', 'RtlQueryProcessDebugInformation',
+            'RtlQueryProcessHeapInformation', 'RtlQueryProcessLockInformation',
+            'RtlQueryProperties', 'RtlQueryPropertyNames', 'RtlQueryPropertySet',
+            'RtlQueryRegistryValues', 'RtlQuerySecurityObject', 'RtlQueryTagHeap',
+            'RtlQueryTimeZoneInformation', 'RtlRaiseException', 'RtlRaiseStatus', 'RtlRandom',
+            'RtlReAllocateHeap', 'RtlRealPredecessor', 'RtlRealSuccessor', 'RtlReleasePebLock',
+            'RtlReleaseResource', 'RtlRemoteCall', 'RtlResetRtlTranslations',
+            'RtlRunDecodeUnicodeString', 'RtlRunEncodeUnicodeString', 'RtlSecondsSince1970ToTime',
+            'RtlSecondsSince1980ToTime', 'RtlSelfRelativeToAbsoluteSD', 'RtlSetAllBits',
+            'RtlSetAttributesSecurityDescriptor', 'RtlSetBits', 'RtlSetCriticalSectionSpinCount',
+            'RtlSetCurrentDirectory_U', 'RtlSetCurrentEnvironment', 'RtlSetDaclSecurityDescriptor',
+            'RtlSetEnvironmentVariable', 'RtlSetGroupSecurityDescriptor', 'RtlSetInformationAcl',
+            'RtlSetOwnerSecurityDescriptor', 'RtlSetProperties', 'RtlSetPropertyNames',
+            'RtlSetPropertySetClassId', 'RtlSetSaclSecurityDescriptor', 'RtlSetSecurityObject',
+            'RtlSetTimeZoneInformation', 'RtlSetUnicodeCallouts', 'RtlSetUserFlagsHeap',
+            'RtlSetUserValueHeap', 'RtlSizeHeap', 'RtlSplay', 'RtlStartRXact',
+            'RtlSubAuthorityCountSid', 'RtlSubAuthoritySid', 'RtlSubtreePredecessor',
+            'RtlSubtreeSuccessor', 'RtlSystemTimeToLocalTime', 'RtlTimeFieldsToTime',
+            'RtlTimeToElapsedTimeFields', 'RtlTimeToSecondsSince1970', 'RtlTimeToSecondsSince1980',
+            'RtlTimeToTimeFields', 'RtlTryEnterCriticalSection', 'RtlUnicodeStringToAnsiSize',
+            'RtlUnicodeStringToAnsiString', 'RtlUnicodeStringToCountedOemString',
+            'RtlUnicodeStringToInteger', 'RtlUnicodeStringToOemSize',
+            'RtlUnicodeStringToOemString', 'RtlUnicodeToCustomCPN', 'RtlUnicodeToMultiByteN',
+            'RtlUnicodeToMultiByteSize', 'RtlUnicodeToOemN', 'RtlUniform', 'RtlUnlockHeap',
+            'RtlUnwind', 'RtlUpcaseUnicodeChar', 'RtlUpcaseUnicodeString',
+            'RtlUpcaseUnicodeStringToAnsiString', 'RtlUpcaseUnicodeStringToCountedOemString',
+            'RtlUpcaseUnicodeStringToOemString', 'RtlUpcaseUnicodeToCustomCPN',
+            'RtlUpcaseUnicodeToMultiByteN', 'RtlUpcaseUnicodeToOemN', 'RtlUpperChar',
+            'RtlUpperString', 'RtlUsageHeap', 'RtlValidAcl', 'RtlValidateHeap',
+            'RtlValidateProcessHeaps', 'RtlValidSecurityDescriptor', 'RtlValidSid', 'RtlWalkHeap',
+            'RtlWriteRegistryValue', 'RtlxAnsiStringToUnicodeSize', 'RtlxOemStringToUnicodeSize',
+            'RtlxUnicodeStringToAnsiSize', 'RtlxUnicodeStringToOemSize', 'RtlZeroHeap',
+            'RtlZeroMemory',
+
+            'NtCancelTimer', 'ZwCancelTimer', 'NtCreateTimer', 'ZwCreateTimer', 'NtGetTickCount',
+            'ZwGetTickCount', 'NtOpenTimer', 'ZwOpenTimer', 'NtQueryPerformanceCounter',
+            'ZwQueryPerformanceCounter', 'NtQuerySystemTime', 'ZwQuerySystemTime', 'NtQueryTimer',
+            'ZwQueryTimer', 'NtQueryTimerResolution', 'ZwQueryTimerResolution', 'NtSetSystemTime',
+            'ZwSetSystemTime', 'NtSetTimer', 'ZwSetTimer', 'NtSetTimerResolution',
+            'ZwSetTimerResolution',
+
+            'NtClearEvent', 'ZwClearEvent', 'NtCreateEvent', 'ZwCreateEvent', 'NtCreateEventPair',
+            'ZwCreateEventPair', 'NtCreateMutant', 'ZwCreateMutant', 'NtCreateSemaphore',
+            'ZwCreateSemaphore', 'NtOpenEvent', 'ZwOpenEvent', 'NtOpenEventPair',
+            'ZwOpenEventPair', 'NtOpenMutant', 'ZwOpenMutant', 'NtOpenSemaphore',
+            'ZwOpenSemaphore', 'NtPulseEvent', 'ZwPulseEvent', 'NtQueryEvent', 'ZwQueryEvent',
+            'NtQueryMutant', 'ZwQueryMutant', 'NtQuerySemaphore', 'ZwQuerySemaphore',
+            'NtReleaseMutant', 'ZwReleaseMutant', 'NtReleaseProcessMutant',
+            'ZwReleaseProcessMutant', 'NtReleaseSemaphore', 'ZwReleaseSemaphore',
+            'NtReleaseThreadMutant', 'ZwReleaseThreadMutant', 'NtResetEvent', 'ZwResetEvent',
+            'NtSetEvent', 'ZwSetEvent', 'NtSetHighEventPair', 'ZwSetHighEventPair',
+            'NtSetHighWaitLowEventPair', 'ZwSetHighWaitLowEventPair', 'NtSetLowEventPair',
+            'ZwSetLowEventPair', 'NtSetLowWaitHighEventPair', 'ZwSetLowWaitHighEventPair',
+            'NtSignalAndWaitForSingleObject', 'ZwSignalAndWaitForSingleObject',
+            'NtWaitForMultipleObjects', 'ZwWaitForMultipleObjects', 'NtWaitForSingleObject',
+            'ZwWaitForSingleObject', 'NtWaitHighEventPair', 'ZwWaitHighEventPair',
+            'NtWaitLowEventPair', 'ZwWaitLowEventPair',
+
+            'NtClose', 'ZwClose', 'NtCreateDirectoryObject', 'ZwCreateDirectoryObject',
+            'NtCreateSymbolicLinkObject', 'ZwCreateSymbolicLinkObject',
+            'NtDuplicateObject', 'ZwDuplicateObject', 'NtMakeTemporaryObject',
+            'ZwMakeTemporaryObject', 'NtOpenDirectoryObject', 'ZwOpenDirectoryObject',
+            'NtOpenSymbolicLinkObject', 'ZwOpenSymbolicLinkObject', 'NtQueryDirectoryObject',
+            'ZwQueryDirectoryObject', 'NtQueryObject', 'ZwQueryObject',
+            'NtQuerySymbolicLinkObject', 'ZwQuerySymbolicLinkObject', 'NtSetInformationObject',
+            'ZwSetInformationObject',
+
+            'NtContinue', 'ZwContinue', 'NtRaiseException', 'ZwRaiseException',
+            'NtRaiseHardError', 'ZwRaiseHardError', 'NtSetDefaultHardErrorPort',
+            'ZwSetDefaultHardErrorPort',
+
+            'NtCreateChannel', 'ZwCreateChannel', 'NtListenChannel', 'ZwListenChannel',
+            'NtOpenChannel', 'ZwOpenChannel', 'NtReplyWaitSendChannel', 'ZwReplyWaitSendChannel',
+            'NtSendWaitReplyChannel', 'ZwSendWaitReplyChannel', 'NtSetContextChannel',
+            'ZwSetContextChannel',
+
+            'NtCreateKey', 'ZwCreateKey', 'NtDeleteKey', 'ZwDeleteKey', 'NtDeleteValueKey',
+            'ZwDeleteValueKey', 'NtEnumerateKey', 'ZwEnumerateKey', 'NtEnumerateValueKey',
+            'ZwEnumerateValueKey', 'NtFlushKey', 'ZwFlushKey', 'NtInitializeRegistry',
+            'ZwInitializeRegistry', 'NtLoadKey', 'ZwLoadKey', 'NtLoadKey2', 'ZwLoadKey2',
+            'NtNotifyChangeKey', 'ZwNotifyChangeKey', 'NtOpenKey', 'ZwOpenKey', 'NtQueryKey',
+            'ZwQueryKey', 'NtQueryMultipleValueKey', 'ZwQueryMultipleValueKey',
+            'NtQueryMultiplValueKey', 'ZwQueryMultiplValueKey', 'NtQueryValueKey',
+            'ZwQueryValueKey', 'NtReplaceKey', 'ZwReplaceKey', 'NtRestoreKey', 'ZwRestoreKey',
+            'NtSaveKey', 'ZwSaveKey', 'NtSetInformationKey', 'ZwSetInformationKey',
+            'NtSetValueKey', 'ZwSetValueKey', 'NtUnloadKey', 'ZwUnloadKey',
+
+            'NtCreateMailslotFile', 'ZwCreateMailslotFile', 'NtCreateNamedPipeFile',
+            'ZwCreateNamedPipeFile', 'NtCreatePagingFile', 'ZwCreatePagingFile',
+
+            'NtCreateProfile', 'ZwCreateProfile', 'NtQueryIntervalProfile',
+            'ZwQueryIntervalProfile', 'NtRegisterThreadTerminatePort',
+            'ZwRegisterThreadTerminatePort', 'NtSetIntervalProfile', 'ZwSetIntervalProfile',
+            'NtStartProfile', 'ZwStartProfile', 'NtStopProfile', 'ZwStopProfile',
+            'NtSystemDebugControl', 'ZwSystemDebugControl',
+
+            'NtEnumerateBus', 'ZwEnumerateBus', 'NtFlushInstructionCache',
+            'ZwFlushInstructionCache', 'NtFlushWriteBuffer', 'ZwFlushWriteBuffer',
+            'NtSetLdtEntries', 'ZwSetLdtEntries',
+
+            'NtGetPlugPlayEvent', 'ZwGetPlugPlayEvent', 'NtPlugPlayControl', 'ZwPlugPlayControl',
+
+            'NtInitiatePowerAction', 'ZwInitiatePowerAction', 'NtPowerInformation',
+            'ZwPowerInformation', 'NtRequestWakeupLatency', 'ZwRequestWakeupLatency',
+            'NtSetSystemPowerState', 'ZwSetSystemPowerState', 'NtSetThreadExecutionState',
+            'ZwSetThreadExecutionState',
+
+            'NtLoadDriver', 'ZwLoadDriver', 'NtRegisterNewDevice', 'ZwRegisterNewDevice',
+            'NtUnloadDriver', 'ZwUnloadDriver',
+
+            'NtQueryDefaultLocale', 'ZwQueryDefaultLocale', 'NtQueryDefaultUILanguage',
+            'ZwQueryDefaultUILanguage', 'NtQuerySystemEnvironmentValue',
+            'ZwQuerySystemEnvironmentValue', 'NtSetDefaultLocale', 'ZwSetDefaultLocale',
+            'NtSetDefaultUILanguage', 'ZwSetDefaultUILanguage', 'NtSetSystemEnvironmentValue',
+            'ZwSetSystemEnvironmentValue',
+
+            'DbgBreakPoint', 'DbgPrint', 'DbgPrompt', 'DbgSsHandleKmApiMsg', 'DbgSsInitialize',
+            'DbgUiConnectToDbg', 'DbgUiContinue', 'DbgUiWaitStateChange', 'DbgUserBreakPoint',
+            'KiRaiseUserExceptionDispatcher', 'KiUserApcDispatcher', 'KiUserCallbackDispatcher',
+            'KiUserExceptionDispatcher', 'NlsAnsiCodePage', 'NlsMbCodePageTag',
+            'NlsMbOemCodePageTag', 'NtAllocateLocallyUniqueId', 'ZwAllocateLocallyUniqueId',
+            'NtAllocateUuids', 'ZwAllocateUuids', 'NtCallbackReturn', 'ZwCallbackReturn',
+            'NtDisplayString', 'ZwDisplayString', 'NtQueryOleDirectoryFile',
+            'ZwQueryOleDirectoryFile', 'NtQuerySection', 'ZwQuerySection',
+            'NtQuerySystemInformation', 'ZwQuerySystemInformation', 'NtSetSystemInformation',
+            'ZwSetSystemInformation', 'NtShutdownSystem', 'ZwShutdownSystem', 'NtVdmControl',
+            'ZwVdmControl', 'NtW32Call', 'ZwW32Call', 'PfxFindPrefix', 'PfxInitialize',
+            'PfxInsertPrefix', 'PfxRemovePrefix', 'PropertyLengthAsVariant', 'RestoreEm87Context',
+            'SaveEm87Context'
+            )
+        ),
+    'SYMBOLS' => array(
+        '(', ')', '{', '}', '[', ']',
+        '+', '-', '*', '/', '%',
+        '=', '<', '>',
+        '!', '^', '&', '|',
+        '?', ':',
+        ';', ','
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => true,
+        2 => true,
+        3 => true,
+        4 => true,
+        5 => true,
+        6 => true
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #b1b100;',
+            2 => 'color: #000000; font-weight: bold;',
+            3 => 'color: #000066;',
+            4 => 'color: #993333;',
+            5 => 'color: #4000dd;',
+            6 => 'color: #4000dd;'
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #666666; font-style: italic;',
+            2 => 'color: #339933;',
+            'MULTI' => 'color: #808080; font-style: italic;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #000099; font-weight: bold;',
+            1 => 'color: #000099; font-weight: bold;',
+            2 => 'color: #660099; font-weight: bold;',
+            3 => 'color: #660099; font-weight: bold;',
+            4 => 'color: #660099; font-weight: bold;',
+            5 => 'color: #006699; font-weight: bold;',
+            'HARD' => '',
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #009900;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #ff0000;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #0000dd;',
+            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
+            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
+            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
+            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
+            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
+            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
+            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
+            ),
+        'METHODS' => array(
+            1 => 'color: #202020;',
+            2 => 'color: #202020;'
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #339933;'
+            ),
+        'REGEXPS' => array(
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAMEL}.html',
+        4 => '',
+        5 => 'http://www.google.com/search?q={FNAMEL}+msdn.microsoft.com',
+        6 => 'http://www.google.com/search?q={FNAMEL}+msdn.microsoft.com'
+        ),
+    'OOLANG' => true,
+    'OBJECT_SPLITTERS' => array(
+        1 => '.',
+        2 => '::'
+        ),
+    'REGEXPS' => array(
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'TAB_WIDTH' => 4
+);
diff --git a/inc/geshi/caddcl.php b/vendor/easybook/geshi/geshi/caddcl.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/caddcl.php
rename to vendor/easybook/geshi/geshi/caddcl.php
index 8b8b2f248e930e6f60ddfd5d76e6eedd261882cd..0135a7aec99a5c2c5706e3a84569ad155dbbd422
--- a/inc/geshi/caddcl.php
+++ b/vendor/easybook/geshi/geshi/caddcl.php
@@ -122,5 +122,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/cadlisp.php b/vendor/easybook/geshi/geshi/cadlisp.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/cadlisp.php
rename to vendor/easybook/geshi/geshi/cadlisp.php
index 3fa7ead0977d84a446f802715ed8fb3c2936d743..41d72ca278c5b8337afb54f005f803bb6772c026
--- a/inc/geshi/cadlisp.php
+++ b/vendor/easybook/geshi/geshi/cadlisp.php
@@ -182,5 +182,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/cfdg.php b/vendor/easybook/geshi/geshi/cfdg.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/cfdg.php
rename to vendor/easybook/geshi/geshi/cfdg.php
index e40963f060ab065e1cda89d6c5d7d45f3abe4ae0..eeb7c2f3d4ed5ae1dde11878a70f0bf7483fbf0f
--- a/inc/geshi/cfdg.php
+++ b/vendor/easybook/geshi/geshi/cfdg.php
@@ -120,5 +120,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/cfm.php b/vendor/easybook/geshi/geshi/cfm.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/cfm.php
rename to vendor/easybook/geshi/geshi/cfm.php
diff --git a/inc/geshi/chaiscript.php b/vendor/easybook/geshi/geshi/chaiscript.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/chaiscript.php
rename to vendor/easybook/geshi/geshi/chaiscript.php
diff --git a/vendor/easybook/geshi/geshi/chapel.php b/vendor/easybook/geshi/geshi/chapel.php
new file mode 100644
index 0000000000000000000000000000000000000000..d0e50e6149ee8de4fce484e687081f757875dd85
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/chapel.php
@@ -0,0 +1,169 @@
+<?php
+/*************************************************************************************
+ * chapel.php
+ * -----
+ * Author: Richard Molitor (richard.molitor@student.kit.edu)
+ * Copyright: (c) 2013 Richard Molitor
+ * Release Version: 1.0.8.12
+ * Date Started: 2013/06/22
+ *
+ * Chapel language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2013/06/22 (1.0.8.12)
+ *   -  First Release
+ *
+ * TODO (updated 2013/06/22)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'Chapel',
+    'COMMENT_SINGLE' => array(1 => '//'),
+    'COMMENT_MULTI' => array('/*' => '*/'),
+    'COMMENT_REGEXP' => array(
+        ),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '',
+    'ESCAPE_REGEXP' => array(
+        ),
+    'NUMBERS' =>
+        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
+        GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI | GESHI_NUMBER_FLT_NONSCI_F |
+        GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
+    'KEYWORDS' => array(
+        // statements
+        1 => array(
+            'atomic', 'begin', 'break', 'class', 'cobegin', 'coforall',
+            'continue', 'do', 'else', 'export', 'extern', 'for', 'forall', 'if',
+            'iter', 'inline', 'label', 'let', 'local', 'module',
+            'otherwise', 'proc', 'record', 'return', 'select', 'serial',
+            'then', 'use', 'var', 'when', 'where', 'while', 'yield'
+            ),
+        // literals
+        2 => array(
+            'nil', 'true', 'false'
+            ),
+        // built-in functions
+        3 => array(
+            'by', 'delete', 'dmapped', 'domain', 'enum', 'index', 'min',
+            'minloc', 'max', 'maxloc', 'new', 'range', 'reduce', 'scan',
+            'sparse', 'subdomain', 'sync', 'union', 'zip'
+            ),
+        // built-in types
+        4 => array(
+            'config', 'const', 'in', 'inout', 'opaque', 'on', 'out', 'param',
+            'ref', 'single', 'type'
+            ),
+        // library types
+        5 => array(
+            'void', 'bool', 'int', 'uint', 'real', 'imag', 'complex', 'string',
+            'locale'
+            ),
+        ),
+    'SYMBOLS' => array(
+        '(', ')', '{', '}', '[', ']',
+        '+', '-', '*', '/', '%',
+        '=', '<', '>',
+        '!', '^', '&', '|',
+        '?', ':',
+        ';', ','
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => true,
+        2 => true,
+        3 => true,
+        4 => true,
+        5 => true
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #b1b100;',
+            2 => 'color: #000000; font-weight: bold;',
+            3 => 'color: #000066;',
+            4 => 'color: #993333;'
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #666666; font-style: italic;',
+            //2 => 'color: #339933;',
+            'MULTI' => 'color: #808080; font-style: italic;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #000099; font-weight: bold;',
+            1 => 'color: #000099; font-weight: bold;',
+            2 => 'color: #660099; font-weight: bold;',
+            3 => 'color: #660099; font-weight: bold;',
+            4 => 'color: #660099; font-weight: bold;',
+            5 => 'color: #006699; font-weight: bold;',
+            'HARD' => '',
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #009900;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #ff0000;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #0000dd;',
+            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
+            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
+            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
+            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
+            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
+            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
+            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
+            ),
+        'METHODS' => array(
+            1 => 'color: #202020;',
+            2 => 'color: #202020;'
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #339933;'
+            ),
+        'REGEXPS' => array(
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => '',
+        5 => ''
+        ),
+    'OOLANG' => true,
+    'OBJECT_SPLITTERS' => array(
+        1 => '.',
+        ),
+    'REGEXPS' => array(
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'TAB_WIDTH' => 4
+);
diff --git a/inc/geshi/cil.php b/vendor/easybook/geshi/geshi/cil.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/cil.php
rename to vendor/easybook/geshi/geshi/cil.php
index 9872e755fc4dbc15ae9dd5bddbb11e8d8531c443..a108f2498c6293728fd90b3b5b8b86f718e33bfc
--- a/inc/geshi/cil.php
+++ b/vendor/easybook/geshi/geshi/cil.php
@@ -192,5 +192,3 @@ $language_data = array (
         ),
     'TAB_WIDTH' => 4
 );
-
-?>
diff --git a/inc/geshi/clojure.php b/vendor/easybook/geshi/geshi/clojure.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/clojure.php
rename to vendor/easybook/geshi/geshi/clojure.php
diff --git a/inc/geshi/cmake.php b/vendor/easybook/geshi/geshi/cmake.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/cmake.php
rename to vendor/easybook/geshi/geshi/cmake.php
diff --git a/vendor/easybook/geshi/geshi/cobol.php b/vendor/easybook/geshi/geshi/cobol.php
new file mode 100755
index 0000000000000000000000000000000000000000..1280a4c7e9962c50c7d82deece311614c042272d
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/cobol.php
@@ -0,0 +1,457 @@
+<?php
+/*************************************************************************************
+ * cobol.php
+ * ----------
+ * Author: BenBE (BenBE@omorphia.org)
+ * Copyright: (c) 2007-2008 BenBE (http://www.omorphia.de/)
+ * Release Version: 1.0.8.12
+ * Date Started: 2007/07/02
+ *
+ * COBOL language file for GeSHi.
+ *
+ * Most of the compiler directives, reserved words and intrinsic functions are
+ * from the 2009 COBOL Draft Standard, Micro Focus, and GNU Cobol. The lists of
+ * these were found in the draft standard (Sections 8.9, 8.10, 8.11 and 8.12),
+ * Micro Focus' COBOL Language Reference and the GNU Cobol FAQ.
+ *
+ * CHANGES
+ * -------
+ * 2013/11/17 (1.0.8.12)
+ *  -  Changed compiler directives to be handled like comments.
+ *  -  Fixed bug where keywords in identifiers were highlighted.
+ * 2013/08/19 (1.0.8.12)
+ *  -  Added more intrinsic functions, reserved words, and compiler directives
+ *     from the (upcoming) standard.
+ * 2013/07/07 (1.0.8.12)
+ *  -  Added more reserved words, compiler directives and intrinsic functions.
+ *  -  Added modern comment syntax and corrected the other one.
+ *  -  Set OOLANG to true and added an object splitter.
+ *  -  Added extra symbols.
+ *  -  Fixed bug where scope terminators were only the statement in
+ *     end-statement was highlighted.
+ *
+ * TODO (updated 2013/11/17)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'COBOL',
+    'COMMENT_SINGLE' => array(
+        1 => '*>', // COBOL 2002 inline comment
+        2 => '>>'  // COBOL compiler directive indicator
+        ),
+    'COMMENT_MULTI' => array(),
+    'COMMENT_REGEXP' => array(
+        1 => '/^......(\*.*?$)/m', // Fixed-form comment
+        2 => '/\$SET.*/i'          // MF compiler directive indicator
+        ),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array('"', "'"),
+    'ESCAPE_CHAR' => '',
+    'NUMBERS' =>
+        GESHI_NUMBER_INT_BASIC |
+        GESHI_NUMBER_FLT_NONSCI |
+        GESHI_NUMBER_FLT_SCI_SHORT |
+        GESHI_NUMBER_FLT_SCI_ZERO,
+    'KEYWORDS' => array(
+        // Statements containing spaces. These are separate to other statements
+        // so that they are highlighted correctly.
+        1 => array(
+            'DELETE FILE', 'GO TO', 'NEXT SENTENCE', 'XML GENERATE',
+            'XML PARSE'
+            ),
+
+        2 => array( // Other Reserved Words
+            '3-D', 'ABSENT', 'ABSTRACT', 'ACCESS', 'ACQUIRE',
+            'ACTION', 'ACTIVE-CLASS', 'ACTIVE-X', 'ACTUAL', 'ADDRESS',
+            'ADDRESS-ARRAY', 'ADDRESS-OFFSET', 'ADJUSTABLE-COLUMNS',
+            'ADVANCING', 'AFP-5A', 'AFTER', 'ALIGNED', 'ALIGNMENT', 'ALL',
+            'ALLOW', 'ALLOWING', 'ALPHABET', 'ALPHABETIC',
+            'ALPHABETIC-LOWER', 'ALPHABETIC-UPPER', 'ALPHANUMERIC',
+            'ALPHANUMERIC-EDITED', 'ALSO', 'ALTERNATE', 'AND', 'ANY',
+            'ANYCASE',
+            'APPLY', 'ARE', 'AREA', 'AREAS', 'ARGUMENT-NUMBER',
+            'ARGUMENT-VALUE',
+            'ARITHMETIC', 'AS', 'ASCENDING',
+            'ASSEMBLY-ATTRIBUTES', 'ASSIGN', 'AT', 'ATTRIBUTE', 'AUTHOR',
+            'AUTO', 'AUTO-DECIMAL', 'AUTO-HYPHEN-SKIP', 'AUTO-MINIMIZE',
+            'AUTO-RESIZE', 'AUTO-SKIP', 'AUTO-SPIN', 'AUTOMATIC',
+            'AUTOTERMINATE', 'AWAY-FROM-ZERO',
+            'AX-EVENT-LIST', 'B-AND', 'B-EXOR', 'B-LEFT',
+            'B-NOT', 'B-OR', 'B-RIGHT', 'B-XOR', 'BACKGROUND-COLOR',
+            'BACKGROUND-COLOUR', 'BACKGROUND-HIGH', 'BACKGROUND-LOW',
+            'BACKGROUND-STANDARD', 'BACKWARD', 'BAR', 'BASED', 'BASIS', 'BEEP',
+            'BEFORE', 'BEGINNING', 'BELL', 'BINARY', 'BINARY-CHAR',
+            'BINARY-DOUBLE', 'BINARY-LONG', 'BINARY-SHORT', 'BIND', 'BIT',
+            'BITMAP', 'BITMAP-END', 'BITMAP-HANDLE', 'BITMAP-NUMBER',
+            'BITMAP-RAW-HEIGHT', 'BITMAP-RAW-WIDTH', 'BITMAP-SCALE',
+            'BITMAP-START', 'BITMAP-TIMER', 'BITMAP-TRAILING', 'BITMAP-WIDTH',
+            'BLANK', 'BLINK', 'BLINKING', 'BLOB', 'BLOB-FILE', 'BLOB-LOCATOR',
+            'BLOCK', 'BOLD', 'BOOLEAN', 'BOTTOM', 'BOX', 'BOXED', 'BROWSING',
+            'BUSY', 'BUTTONS', 'BY', 'C01', 'C02', 'C03', 'C04',
+            'C05',
+            'C06', 'C07', 'C08', 'C09', 'C10', 'C11', 'C12', 'CALENDAR-FONT',
+            'CALLED', 'CANCEL-BUTTON', 'CAPACITY', 'CATCH', 'CBL',
+            'CBL-CTR', 'CCOL', 'CD', 'CELL', 'CELL-COLOR', 'CELL-DATA',
+            'CELL-FONT', 'CELL-PROTECTION', 'CELLS', 'CENTER', 'CENTERED',
+            'CENTERED-HEADINGS', 'CENTURY-DATE', 'CENTURY-DAY', 'CF', 'CH',
+            'CHAINING', 'CHANGED', 'CHAR-VARYING',
+            'CHARACTER',
+            'CHARACTERS', 'CHART', 'CHECK-BOX', 'CHECKING', 'CLASS',
+            'CLASS-ATTRIBUTES', 'CLASS-CONTROL', 'CLASS-ID', 'CLASS-OBJECT',
+            'CLASSIFICATION',
+            'CLEAR-SELECTION', 'CLINE', 'CLINES', 'CLOB', 'CLOB-FILE',
+            'CLOB-LOCATOR', 'CLOCK-UNITS', 'COBOL', 'CODE', 'CODE-SET',
+            'COERCION', 'COL', 'COLLATING', 'COLORS', 'COLOUR',
+            'COLOURS', 'COLS', 'COLUMN', 'COLUMN-COLOR', 'COLUMN-DIVIDERS',
+            'COLUMN-FONT', 'COLUMN-HEADINGS', 'COLUMN-PROTECTION', 'COLUMNS',
+            'COM-REG', 'COMBO-BOX', 'COMMA', 'COMMITMENT', 'COMMON',
+            'COMMUNICATION', 'COMP', 'COMP-0', 'COMP-1', 'COMP-2', 'COMP-3',
+            'COMP-4', 'COMP-5', 'COMP-6', 'COMP-X', 'COMPRESSION',
+            'COMPUTATIONAL', 'COMPUTATIONAL-0', 'COMPUTATIONAL-1',
+            'COMPUTATIONAL-2', 'COMPUTATIONAL-3', 'COMPUTATIONAL-4',
+            'COMPUTATIONAL-5', 'COMPUTATIONAL-6', 'COMPUTATIONAL-X',
+            'CONDITION-VALUE', 'CONFIGURATION', 'CONSOLE', 'CONSTANT',
+            'CONSTRAIN', 'CONSTRAINTS', 'CONTAINS', 'CONTENT',
+            'CONTROL', 'CONTROL-AREA', 'CONTROLS', 'CONTROLS-UNCROPPED',
+            'CONVERSION', 'CONVERT', 'CONVERTING', 'COPY-SELECTION',
+            'CORE-INDEX', 'CORR', 'CORRESPONDING', 'COUNT',
+            'CREATING', 'CRT', 'CRT-UNDER', 'CSIZE', 'CSP', 'CURRENCY',
+            'CURSOR', 'CURSOR-COL', 'CURSOR-COLOR',
+            'CURSOR-FRAME-WIDTH', 'CURSOR-ROW', 'CURSOR-X', 'CURSOR-Y',
+            'CUSTOM-ATTRIBUTE', 'CUSTOM-PRINT-TEMPLATE', 'CYCLE', 'CYL-INDEX',
+            'CYL-OVERFLOW', 'DASHED', 'DATA', 'DATA-COLUMNS',
+            'DATA-POINTER', 'DATA-TYPES', 'DATABASE-KEY', 'DATABASE-KEY-LONG',
+            'DATE', 'DATE-COMPILED', 'DATE-ENTRY', 'DATE-RECORD',
+            'DATE-WRITTEN', 'DAY', 'DAY-OF-WEEK', 'DBCLOB', 'DBCLOB-FILE',
+            'DBCLOB-LOCATOR', 'DBCS', 'DE', 'DEBUG', 'DEBUG-CONTENTS',
+            'DEBUG-ITEM', 'DEBUG-LINE', 'DEBUG-NAME', 'DEBUG-SUB-1',
+            'DEBUG-SUB-2', 'DEBUG-SUB-3', 'DEBUGGING', 'DECIMAL',
+            'DECIMAL-POINT', 'DECLARATIVES', 'DEFAULT',
+            'DEFAULT-BUTTON', 'DEFAULT-FONT', 'DEFINITION',
+            'DELEGATE-ID', 'DELIMITED', 'DELIMITER', 'DEPENDING',
+            'DESCENDING', 'DESTINATION', 'DESTROY', 'DETAIL', 'DICTIONARY',
+            'DISABLE', 'DISC', 'DISJOINING', 'DISK', 'DISP',
+            'DISPLAY-1', 'DISPLAY-COLUMNS', 'DISPLAY-FORMAT', 'DISPLAY-ST',
+            'DIVIDER-COLOR', 'DIVIDERS', 'DIVISION', 'DOT-DASH',
+            'DOTTED', 'DOWN', 'DRAG-COLOR', 'DRAW', 'DROP', 'DROP-DOWN',
+            'DROP-LIST', 'DUPLICATES', 'DYNAMIC', 'EBCDIC', 'EC', 'ECHO', 'EGCS',
+            'EGI', 'EJECT', 'ELEMENTARY', 'ELSE', 'EMI', 'EMPTY-CHECK',
+            'ENABLE', 'ENABLED', 'END', 'END-ACCEPT', 'END-ADD', 'END-CALL',
+            'END-CHAIN', 'END-COLOR', 'END-COMPUTE', 'END-DELEGATE',
+            'END-DELETE', 'END-DISPLAY', 'END-DIVIDE', 'END-EVALUATE',
+            'END-IF', 'END-INVOKE', 'END-MODIFY', 'END-MOVE', 'END-MULTIPLY',
+            'END-OF-PAGE', 'END-PERFORM', 'END-READ', 'END-RECEIVE',
+            'END-RETURN', 'END-REWRITE', 'END-SEARCH', 'END-START',
+            'END-STRING', 'END-SUBTRACT', 'END-SYNC', 'END-TRY',
+            'END-UNSTRING', 'END-WAIT', 'END-WRITE', 'END-XML', 'ENDING',
+            'ENGRAVED', 'ENSURE-VISIBLE', 'ENTRY-CONVENTION',
+            'ENTRY-FIELD',
+            'ENTRY-REASON', 'ENUM', 'ENUM-ID', 'ENVIRONMENT',
+            'ENVIRONMENT-NAME', 'ENVIRONMENT-VALUE', 'EOL', 'EOP',
+            'EOS', 'EQUAL', 'EQUALS', 'ERASE', 'ERROR', 'ESCAPE',
+            'ESCAPE-BUTTON', 'ESI', 'EVENT', 'EVENT-LIST',
+            'EVENT-POINTER', 'EVERY', 'EXCEEDS', 'EXCEPTION',
+            'EXCEPTION-OBJECT', 'EXCEPTION-VALUE', 'EXCESS-3',
+            'EXCLUDE-EVENT-LIST', 'EXCLUSIVE',
+            'EXPAND', 'EXPANDS', 'EXTEND', 'EXTENDED',
+            'EXTENDED-SEARCH', 'EXTENSION', 'EXTERNAL', 'EXTERNAL-FORM',
+            'EXTERNALLY-DESCRIBED-KEY', 'FACTORY', 'FALSE', 'FD',
+            'FH--FCD', 'FH--KEYDEF', 'FILE', 'FILE-CONTROL', 'FILE-ID',
+            'FILE-LIMIT', 'FILE-LIMITS', 'FILE-NAME', 'FILE-POS', 'FILL-COLOR',
+            'FILL-COLOR2', 'FILL-PERCENT', 'FILLER', 'FINAL', 'FINALLY',
+            'FINISH-REASON', 'FIRST', 'FIXED', 'FIXED-FONT', 'FIXED-WIDTH',
+            'FLAT', 'FLAT-BUTTONS', 'FLOAT-BINARY-7', 'FLOAT-BINARY-16',
+            'FLOAT-BINARY-34', 'FLOAT-DECIMAL-16', 'FLOAT-DECIMAL-34',
+            'FLOAT-EXTENDED', 'FLOAT-LONG',
+            'FLOAT-SHORT', 'FLOATING', 'FONT', 'FOOTING', 'FOR',
+            'FOREGROUND-COLOR', 'FOREGROUND-COLOUR', 'FOREVER', 'FORMAT',
+            'FRAME', 'FRAMED', 'FROM', 'FULL', 'FULL-HEIGHT',
+            'FUNCTION', 'FUNCTION-ID', 'FUNCTION-POINTER', 'GENERATE',
+            'GET', 'GETTER', 'GIVING', 'GLOBAL', 'GO-BACK', 'GO-FORWARD',
+            'GO-HOME', 'GO-SEARCH', 'GRAPHICAL', 'GREATER', 'GRID',
+            'GRIP', 'GROUP', 'GROUP-USAGE', 'GROUP-VALUE', 'HANDLE',
+            'HAS-CHILDREN', 'HEADING', 'HEADING-COLOR', 'HEADING-DIVIDER-COLOR',
+            'HEADING-FONT', 'HEAVY', 'HEIGHT', 'HEIGHT-IN-CELLS', 'HELP-ID',
+            'HIDDEN-DATA', 'HIGH', 'HIGH-COLOR', 'HIGH-VALUE', 'HIGH-VALUES',
+            'HIGHLIGHT', 'HORIZONTAL', 'HOT-TRACK', 'HSCROLL', 'HSCROLL-POS',
+            'I-O', 'I-O-CONTROL', 'ICON', 'ID', 'IDENTIFICATION',
+            'IDENTIFIED', 'IFINITY', 'IGNORE', 'IGNORING', 'IMPLEMENTS', 'IN',
+            'INDEPENDENT', 'INDEX', 'INDEXED', 'INDEXER', 'INDEXER-ID', 'INDIC',
+            'INDICATE', 'INDICATOR', 'INDICATORS', 'INDIRECT',
+            'INHERITING', 'INHERITS',
+            'INITIAL', 'INITIALIZED', 'INPUT',
+            'INPUT-OUTPUT', 'INQUIRE', 'INSERT', 'INSERT-ROWS',
+            'INSERTION-INDEX', 'INSTALLATION', 'INSTANCE',
+            'INTERFACE', 'INTERFACE-ID', 'INTERMEDIATE',
+            'INTERNAL', 'INTO', 'INTRINSIC',
+            'INVALID', 'INVOKED', 'IS', 'ITEM', 'ITEM-BOLD',
+            'ITEM-ID', 'ITEM-TEXT', 'ITEM-TO-ADD', 'ITEM-TO-DELETE',
+            'ITEM-TO-EMPTY', 'ITEM-VALUE', 'ITERATOR', 'ITERATOR-ID', 'J',
+            'JOINED', 'JOINING', 'JUST', 'JUSTIFIED', 'KANJI',
+            'KEPT', 'KEY', 'KEY-YY', 'KEYBOARD', 'LABEL', 'LABEL-OFFSET',
+            'LARGE-FONT', 'LAST', 'LAST-ROW', 'LAYOUT-DATA', 'LAYOUT-MANAGER',
+            'LC_ALL', 'LC_COLLATE', 'LC_CTYPE', 'LC_CURRENCY', 'LC_MESSAGES',
+            'LC_MONETARY', 'LC_NUMERIC', 'LC_TIME', 'LEADING', 'LEADING-SHIFT',
+            'LEAVE', 'LEFT', 'LEFT-JUSTIFY', 'LEFT-TEXT', 'LEFTLINE',
+            'LENGTH-CHECK', 'LESS', 'LIMIT', 'LIMITS', 'LIN', 'LINAGE',
+            'LINAGE-COUNTER', 'LINE', 'LINE-COUNTER', 'LINES', 'LINES-AT-ROOT',
+            'LINK', 'LINKAGE', 'LIST', 'LIST-BOX', 'LM-RESIZE', 'LOCAL-STORAGE',
+            'LOCALE', 'LOCK', 'LOCKING', 'LONG-DATE', 'LONG-VARBINARY',
+            'LONG-VARCHAR', 'LOW', 'LOW-COLOR', 'LOW-VALUE', 'LOW-VALUES',
+            'LOWER', 'LOWERED', 'LOWLIGHT', 'MANUAL', 'MASS-UPDATE',
+            'MASTER-INDEX', 'MAX-HEIGHT', 'MAX-LINES', 'MAX-PROGRESS',
+            'MAX-SIZE', 'MAX-TEXT', 'MAX-VAL', 'MAX-WIDTH', 'MDI-CHILD',
+            'MDI-FRAME', 'MEDIUM-FONT', 'MEMORY', 'MENU', 'MESSAGE',
+            'MESSAGES', 'METACLASS', 'METHOD', 'METHOD-ID', 'MIN-HEIGHT',
+            'MIN-LINES', 'MIN-SIZE', 'MIN-VAL', 'MIN-WIDTH', 'MODAL', 'MODE',
+            'MODELESS', 'MODIFIED', 'MODULES', 'MONITOR-POINTER',
+            'MORE-LABELS', 'MULTILINE',
+            'MUTEX-POINTER', 'NAME', 'NAMED', 'NATIONAL',
+            'NATIONAL-EDITED', 'NATIVE', 'NAVIGATE-URL', 'NCHAR',
+            'NEAREST-AWAY-FROM-ZERO', 'NEAREST-EVEN', 'NEAREST-TOWARD-ZERO',
+            'NEGATIVE', 'NEGATIVE-INFINITY',
+            'NESTED', 'NET-EVENT-LIST', 'NEW', 'NEWABLE', 'NEXT ', 'NEXT-ITEM',
+            'NO', 'NO-AUTO-DEFAULT', 'NO-AUTOSEL', 'NO-BOX', 'NO-CELL-DRAG',
+            'NO-CLOSE', 'NO-DIVIDERS', 'NO-ECHO', 'NO-F4', 'NO-FOCUS',
+            'NO-GROUP-TAB', 'NO-KEY-LETTER', 'NO-SEARCH', 'NO-TAB', 'NO-UPDOWN',
+            'NOMINAL', 'NONE', 'NORMAL', 'NOT', 'NOT-A-NUMBER', 'NOTIFY',
+            'NOTIFY-CHANGE', 'NOTIFY-DBLCLICK', 'NOTIFY-SELCHANGE',
+            'NSTD-REELS', 'NULL', 'NULLS', 'NUM-COL-HEADINGS',
+            'NUM-ROW-HEADINGS', 'NUM-ROWS', 'NUMBER', 'NUMBERS', 'NUMERIC',
+            'NUMERIC-EDITED', 'NUMERIC-FILL', 'O-FILL', 'OBJECT',
+            'OBJECT-COMPUTER', 'OBJECT-ID', 'OBJECT-REFERENCE',
+            'OBJECT-STORAGE', 'OCCURS', 'OF', 'OFF', 'OK-BUTTON', 'OMITTED',
+            'ONLY', 'OOSTACKPTR', 'OPERATOR', 'OPERATOR-ID',
+            'OPTIONAL', 'OPTIONS', 'OR', 'ORDER', 'ORGANIZATION', 'OTHER',
+            'OTHERWISE', 'OUTPUT', 'OVERFLOW', 'OVERLAP-LEFT', 'OVERLAP-TOP',
+            'OVERLAPPED', 'OVERLINE', 'OVERRIDE', 'PACKED-DECIMAL',
+            'PADDING', 'PAGE', 'PAGE-COUNTER', 'PAGE-SETUP', 'PAGE-SIZE',
+            'PAGED', 'PANEL-INDEX', 'PANEL-STYLE', 'PANEL-TEXT', 'PANEL-WIDTHS',
+            'PARAGRAPH', 'PARAMS', 'PARENT', 'PARSE', 'PARTIAL', 'PASSWORD',
+            'PERMANENT', 'PF', 'PH', 'PIC', 'PICTURE', 'PIXEL',
+            'PIXELS', 'PLACEMENT', 'PLUS', 'POINTER', 'POP-UP', 'POSITION',
+            'POSITION-SHIFT', 'POSITIONING', 'POSITIVE', 'POSITIVE-INFINITY',
+            'PREFIXED', 'PREFIXING', 'PRESENT',
+            'PREVIOUS', 'PRINT', 'PRINT-CONTROL', 'PRINT-NO-PROMPT',
+            'PRINT-PREVIEW', 'PRINT-SWITCH', 'PRINTER', 'PRINTER-1', 'PRINTING',
+            'PRIOR', 'PRIORITY', 'PRIVATE', 'PROCEDURE', 'PROCEDURE-POINTER',
+            'PROCEDURES', 'PROCEED', 'PROCESS', 'PROCESSING', 'PROGRAM',
+            'PROGRAM-ID', 'PROGRAM-POINTER', 'PROGRESS', 'PROHIBITED',
+            'PROMPT', 'PROPERTIES',
+            'PROPERTY', 'PROPERTY-ID', 'PROPERTY-VALUE', 'PROTECTED',
+            'PROTOTYPE', 'PUBLIC', 'PURGE', 'PUSH-BUTTON', 'QUERY-INDEX',
+            'QUEUE', 'QUOTE', 'QUOTES', 'RADIO-BUTTON', 'RAISED',
+            'RAISING', 'RD', 'READ-ONLY', 'READING',
+            'READY', 'RECORD', 'RECORD-DATA', 'RECORD-OVERFLOW',
+            'RECORD-TO-ADD', 'RECORD-TO-DELETE', 'RECORDING', 'RECORDS',
+            'RECURSIVE', 'REDEFINE', 'REDEFINES', 'REDEFINITION', 'REEL',
+            'REFERENCE', 'REFERENCES', 'REFRESH', 'REGION-COLOR', 'RELATION',
+            'RELATIVE', 'RELOAD', 'REMAINDER', 'REMARKS', 'REMOVAL',
+            'RENAMES', 'REORG-CRITERIA', 'REPEATED', 'REPLACE', 'REPLACING',
+            'REPORT', 'REPORTING', 'REPORTS', 'REPOSITORY', 'REQUIRED',
+            'REPRESENTS-NOT-A-NUMBER',
+            'REREAD', 'RERUN', 'RESERVE', 'RESET-GRID', 'RESET-LIST',
+            'RESET-TABS', 'RESIZABLE', 'RESTRICTED', 'RESULT-SET-LOCATOR',
+            'RETRY', 'RETURN-CODE', 'RETURNING',
+            'REVERSE-VIDEO', 'REVERSED', 'REWIND', 'RF', 'RH',
+            'RIGHT', 'RIGHT-ALIGN', 'RIGHT-JUSTIFY', 'RIMMED',
+            'ROLLING', 'ROUNDED', 'ROUNDING', 'ROW-COLOR', 'ROW-COLOR-PATTERN',
+            'ROW-DIVIDERS', 'ROW-FONT', 'ROW-HEADINGS', 'ROW-PROTECTION',
+            'ROWID', 'RUN', 'S01', 'S02', 'S03', 'S04', 'S05', 'SAME',
+            'SAVE-AS', 'SAVE-AS-NO-PROMPT', 'SCREEN', 'SCROLL', 'SCROLL-BAR',
+            'SD', 'SEARCH-OPTIONS', 'SEARCH-TEXT', 'SECONDS',
+            'SECTION', 'SECURE', 'SECURITY', 'SEEK', 'SEGMENT', 'SEGMENT-LIMIT',
+            'SELECT-ALL', 'SELECTION-INDEX', 'SELECTION-TEXT',
+            'SELECTIVE', 'SELF', 'SELF-ACT', 'SELFCLASS', 'SEMAPHORE-POINTER',
+            'SEND', 'SENTENCE', 'SEPARATE', 'SEPARATION', 'SEQUENCE',
+            'SEQUENTIAL', 'SETTER', 'SHADING', 'SHADOW',
+            'SHARING', 'SHIFT-IN', 'SHIFT-OUT', 'SHORT-DATE', 'SHOW-LINES',
+            'SHOW-NONE', 'SHOW-SEL-ALWAYS', 'SIGNED', 'SIGNED-INT',
+            'SIGNED-LONG', 'SIGNED-SHORT', 'SIZE', 'SKIP1',
+            'SKIP2', 'SKIP3', 'SMALL-FONT', 'SORT-CONTROL',
+            'SORT-CORE-SIZE', 'SORT-FILE-SIZE', 'SORT-MERGE', 'SORT-MESSAGE',
+            'SORT-MODE-SIZE', 'SORT-OPTION', 'SORT-ORDER', 'SORT-RETURN',
+            'SORT-TAPE', 'SORT-TAPES', 'SOURCE', 'SOURCE-COMPUTER', 'SOURCES',
+            'SPACE', 'SPACE-FILL', 'SPACES', 'SPECIAL-NAMES', 'SPINNER', 'SQL',
+            'SQUARE', 'STANDARD', 'STANDARD-1', 'STANDARD-2', 'STANDARD-3',
+            'STANDARD-BINARY', 'STANDARD-DECIMAL',
+            'START-X', 'START-Y', 'STARTING', 'STATEMENT', 'STATIC',
+            'STATIC-LIST',
+            'STATUS', 'STATUS-BAR', 'STATUS-TEXT', 'STEP',
+            'STOP-BROWSER', 'STRONG', 'STYLE', 'SUB-QUEUE-1',
+            'SUB-QUEUE-2', 'SUB-QUEUE-3', 'SUBFILE', 'SUBWINDOW',
+            'SUFFIXING', 'SUPER', 'SYMBOL', 'SYMBOLIC',
+            'SYNCHRONIZED', 'SYSIN', 'SYSIPT', 'SYSLST', 'SYSOUT',
+            'SYSPCH', 'SYSPUNCH', 'SYSTEM', 'SYSTEM-DEFAULT', 'SYSTEM-INFO',
+            'TAB', 'TAB-CONTROL', 'TAB-TO-ADD', 'TAB-TO-DELETE', 'TABLE',
+            'TALLY', 'TALLYING', 'TAPE', 'TAPES', 'TEMPORARY', 'TERMINAL',
+            'TERMINAL-INFO', 'TERMINATION-VALUE', 'TEST', 'TEXT',
+            'THAN', 'THEN', 'THREAD', 'THREAD-LOCAL', 'THREAD-LOCAL-STORAGE',
+            'THREAD-POINTER', 'THROUGH', 'THRU', 'THUMB-POSITION',
+            'TILED-HEADINGS', 'TIME', 'TIME-OF-DAY', 'TIME-OUT', 'TIME-RECORD',
+            'TIMEOUT', 'TIMES', 'TIMESTAMP', 'TIMESTAMP-OFFSET',
+            'TIMESTAMP-OFFSET-RECORD', 'TIMESTAMP-RECORD', 'TITLE', 'TITLE-BAR',
+            'TITLE-POSITION', 'TO', 'TOOL-BAR', 'TOP', 'TOTALED', 'TOTALING',
+            'TOWARD-GREATER', 'TOWARD-LESSER',
+            'TRACE', 'TRACK-AREA', 'TRACK-LIMIT', 'TRACK-THUMB', 'TRACKS',
+            'TRADITIONAL-FONT', 'TRAILING', 'TRAILING-SHIFT', 'TRAILING-SIGN',
+            'TRANSACTION', 'TRANSPARENT', 'TRANSPARENT-COLOR',
+            'TREE-VIEW', 'TRUE', 'TRUNCATION', 'TYPE', 'TYPEDEF', 'UCS-4',
+            'UNDERLINE', 'UNDERLINED', 'UNEQUAL', 'UNFRAMED', 'UNIT', 'UNITS',
+            'UNIVERSAL', 'UNSIGNED', 'UNSIGNED-INT', 'UNSIGNED-LONG',
+            'UNSIGNED-SHORT',
+            'UNSORTED', 'UP', 'UPDATE', 'UNTIL', 'UPON', 'UPPER',
+            'UPSI-0', 'UPSI-1', 'UPSI-2', 'UPSI-3', 'UPSI-4', 'UPSI-5',
+            'UPSI-6', 'UPSI-7', 'USAGE', 'USE-ALT', 'USE-RETURN',
+            'USE-TAB', 'USER', 'USER-COLORS', 'USER-DEFAULT', 'USER-GRAY',
+            'USER-WHITE', 'USING', 'UTF-16', 'UTF-8', 'VALID',
+            'VAL-STATUS', 'VALIDATE-STATUS',
+            'VALUE', 'VALUE-FORMAT', 'VALUES', 'VALUETYPE', 'VALUETYPE-ID',
+            'VARBINARY', 'VARIABLE', 'VARIANT', 'VARYING', 'VERTICAL',
+            'VERY-HEAVY', 'VIRTUAL-WIDTH', 'VISIBLE', 'VPADDING', 'VSCROLL',
+            'VSCROLL-BAR', 'VSCROLL-POS', 'VTOP', 'WEB-BROWSER', 'WHEN',
+            'WHERE', 'WIDTH', 'WIDTH-IN-CELLS', 'WINDOW',
+            'WITH', 'WORDS', 'WORKING-STORAGE', 'WRAP', 'WRITE-ONLY',
+            'WRITE-VERIFY', 'WRITING', ' XML', 'XML ', 'XML-CODE', 'XML-EVENT',
+            'XML-NTEXT', 'XML-TEXT', 'YIELDING', 'YYYYDDD', 'YYYYMMDD', 'ZERO',
+            'ZERO-FILL', 'ZEROES', 'ZEROS'
+            ),
+        3 => array( // Statement Keywords containing no spaces.
+            'ACCEPT', 'ADD', 'ALTER', 'ALLOCATE', 'ATTACH', 'CALL', 'CANCEL',
+            'CHAIN', 'CREATE',
+            'CLOSE', 'COLOR', 'COMPUTE', 'COMMIT', 'CONTINUE',
+            'COPY', 'DECLARE', 'DELEGATE', 'DELETE', 'DETACH', 'DISPLAY',
+            'DIVIDE',
+            'ENTER', 'ENTRY', 'EVALUATE', 'EXAMINE',
+            'EXEC', 'EXECUTE', 'EXHIBIT', 'EXIT', 'FREE', 'GOBACK',
+            'IF',  'INITIALIZE', 'INITIATE', 'INSPECT', 'INVOKE', 'MERGE',
+            'MODIFY', 'MOVE', 'MULTIPLY', 'NOTE', 'ON', 'OPEN',
+            'PERFORM', 'RAISE', 'READ', 'RECEIVE', 'RELEASE', 'RETURN',
+            'RESET', 'RESUME',
+            'REWRITE', 'ROLLBACK', 'SEARCH', 'SELECT', 'SERVICE', 'SET', 'SORT',
+            'START', 'STOP', 'STRING', 'SUBTRACT', 'SYNC',
+            'SUPPRESS', 'TERMINATE',
+            'TRANSFORM', 'TRY', 'UNLOCKFILE', 'UNLOCK', 'UNSTRING', 'USE',
+            'VALIDATE', 'WAIT', 'WRITE'
+            ),
+        4 => array( // Intrinsic functions
+            'ABS', 'ACOS', 'ANNUITY', 'ASIN', 'ATAN', 'BOOLEAN-OF-INTEGER',
+            'BYTE-LENGTH', 'CHAR', 'CHAR-NATIONAL',
+            'COS', 'COMBINED-DATETIME', 'CONCATENATE', 'CURRENT-DATE',
+            'DATE-OF-INTEGER', 'DATE-TO-YYYYMMDD', 'DAY-TO-YYYYDDD',
+            'DAY-OF-INTEGER', 'DISPLAY-OF', 'E', 'EXCEPTION-FILE',
+            'EXCEPTION-FILE-N', 'EXCEPTION-LOCATION',
+            'EXCEPTION-LOCATION-N', 'EXCEPTION-STATEMENT', 'EXCEPTION-STATUS',
+            'EXP', 'EXP10', 'FACTORIAL', 'FORMATTED-CURRENT-DATE',
+            'FORMATTED-DATE', 'FORMATTED-DATETIME', 'FORMATTED-TIME',
+            'FRACTION-PART', 'HIGHEST-ALGEBRAIC', 'INTEGER',
+            'INTEGER-OF-BOOLEAN', 'INTEGER-OF-DATE', 'INTEGER-OF-DAY',
+            'INTEGER-OF-FORMATTED-DATE', 'INTEGER-PART', 'LENGTH',
+            'LOCALE-COMPARE',
+            'LOCALE-DATE', 'LOCALE-TIME', 'LOCALE-TIME-FROM-SECONDS',
+            'LOCALE-TIME-FROM-SECS', 'LOG',
+            'LOG10', 'LOWER-CASE', 'LOWEST-ALGEBRAIC',
+            'MAX', 'MEAN', 'MEDIAN', 'MIDRANGE',
+            'MIN', 'MOD', 'NATIONAL-OF', 'NUMVAL', 'NUMVAL-C', 'NUMVAL-F',
+            'ORD', 'ORD-MAX', 'ORD-MIN',
+            'PI', 'PRESENT-VALUE', 'RANDOM', 'RANGE', 'REM', 'REVERSE',
+            'SECONDS-FROM-FORMATTED-TIME', 'SIGN', 'SIN', 'SQRT',
+            'SECONDS-PAST-MIDNIGHT', 'STANDARD-DEVIATION', 'STANDARD-COMPARE',
+            'STORED-CHAR-LENGTH',
+            'SUBSTITUTE', 'SUBSTITUE-CASE', 'SUM', 'TAN', 'TEST-DATE-YYYYMMDD',
+            'TEST-DAY-YYYYDDD', 'TEST-FORMATTED-TIME', 'TEST-NUMVAL',
+            'TEST-NUMVAL-C', 'TEST-NUMVAL-F',
+            'TRIM', 'UPPER-CASE', 'VARIANCE', 'YEAR-TO-YYYY', 'WHEN-COMPILED'
+            ),
+        ),
+    'SYMBOLS' => array(
+        //  Arithmetic and comparison operators must be surrounded by spaces.
+        ' + ', ' - ', ' * ', ' / ', ' ** ', ' ^ ',
+        '.', ',',
+        ' = ', ' < ', ' > ', ' >= ', ' <= ', ' <> ',
+        '(', ')', '[', ']'
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false,
+        4 => false,
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #000000; font-weight: bold;',
+            2 => 'color: #008000; font-weight: bold;',
+            3 => 'color: #000000; font-weight: bold;',
+            4 => 'color: #9d7700;',
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #a0a0a0; font-style: italic;',
+            2 => 'color: #000080; font-weight: bold;',
+            ),
+        'ESCAPE_CHAR' => array(
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #339933;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #ff0000;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #993399;'
+            ),
+        'METHODS' => array(
+            1 => 'color: #800080;'
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #000066;'
+            ),
+        'REGEXPS' => array(
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => ''
+        ),
+    'OOLANG' => true,
+    'OBJECT_SPLITTERS' => array(
+        1 => '::'
+        ),
+    'REGEXPS' => array(
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'TAB_WIDTH' => 4,
+    'PARSER_CONTROL' => array(
+        'KEYWORDS' => array(
+            'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9-\$_\|\#|^&])',
+        ),
+    ),
+);
diff --git a/inc/geshi/coffeescript.php b/vendor/easybook/geshi/geshi/coffeescript.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/coffeescript.php
rename to vendor/easybook/geshi/geshi/coffeescript.php
diff --git a/inc/geshi/cpp-qt.php b/vendor/easybook/geshi/geshi/cpp-qt.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/cpp-qt.php
rename to vendor/easybook/geshi/geshi/cpp-qt.php
index 36626c90d4cb50066851d584280ba0b9934bc7c2..5a23f58546c07f404d9c17b7332021020d53b389
--- a/inc/geshi/cpp-qt.php
+++ b/vendor/easybook/geshi/geshi/cpp-qt.php
@@ -48,7 +48,11 @@ $language_data = array (
         //Multiline-continued single-line comments
         1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m',
         //Multiline-continued preprocessor define
-        2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m'
+        2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m',
+        //C++ 11 string literal extensions
+        3 => '/(?:L|u8?|U)(?=")/',
+        //C++ 11 string literal extensions (raw)
+        4 => '/R"([^()\s\\\\]*)\((?:(?!\)\\1").)*\)\\1"/ms'
         ),
     'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
     'QUOTEMARKS' => array("'", '"'),
@@ -489,6 +493,8 @@ $language_data = array (
         'COMMENTS' => array(
             1 => 'color: #888888;',
             2 => 'color: #006E28;',
+            3 => 'color: #BF0303;',
+            4 => 'color: #BF0303;',
             'MULTI' => 'color: #888888; font-style: italic;'
             ),
         'ESCAPE_CHAR' => array(
diff --git a/vendor/easybook/geshi/geshi/cpp-winapi.php b/vendor/easybook/geshi/geshi/cpp-winapi.php
new file mode 100644
index 0000000000000000000000000000000000000000..ddc70b688267d38efdd936570a4faed717ea0ffe
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/cpp-winapi.php
@@ -0,0 +1,836 @@
+<?php
+/*************************************************************************************
+ * cpp-winapi.php
+ * -------
+ * Author: Dennis Bayer (Dennis.Bayer@mnifh-giessen.de)
+ * Contributors:
+ *  - M. Uli Kusterer (witness.of.teachtext@gmx.net)
+ *  - Jack Lloyd (lloyd@randombit.net)
+ *  - Benny Baumann (BenBE@geshi.org)
+ * Copyright: (c) 2004 Dennis Bayer, Nigel McNie, 2012 Benny Baumann (http://qbnz.com/highlighter)
+ * Release Version: 1.0.8.11
+ * Date Started: 2004/09/27
+ *
+ * C++ language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2008/05/23 (1.0.7.22)
+ *  -  Added description of extra language features (SF#1970248)
+ * 2004/XX/XX (1.0.2)
+ *  -  Added several new keywords (Jack Lloyd)
+ * 2004/11/27 (1.0.1)
+ *  -  Added StdCLib function and constant names, changed color scheme to
+ *     a cleaner one. (M. Uli Kusterer)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'C++ (WinAPI)',
+    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+    'COMMENT_MULTI' => array('/*' => '*/'),
+    'COMMENT_REGEXP' => array(
+        //Multiline-continued single-line comments
+        1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m',
+        //Multiline-continued preprocessor define
+        2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m',
+        //C++ 11 string literal extensions
+        3 => '/(?:L|u8?|U)(?=")/',
+        //C++ 11 string literal extensions (raw)
+        4 => '/R"([^()\s\\\\]*)\((?:(?!\)\\1").)*\)\\1"/ms'
+        ),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '',
+    'ESCAPE_REGEXP' => array(
+        //Simple Single Char Escapes
+        1 => "#\\\\[abfnrtv\\\'\"?\n]#i",
+        //Hexadecimal Char Specs
+        2 => "#\\\\x[\da-fA-F]{2}#",
+        //Hexadecimal Char Specs
+        3 => "#\\\\u[\da-fA-F]{4}#",
+        //Hexadecimal Char Specs
+        4 => "#\\\\U[\da-fA-F]{8}#",
+        //Octal Char Specs
+        5 => "#\\\\[0-7]{1,3}#"
+        ),
+    'NUMBERS' =>
+        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
+        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
+        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
+    'KEYWORDS' => array(
+        1 => array(
+            'break', 'case', 'continue', 'default', 'do', 'else', 'for', 'goto', 'if', 'return',
+            'switch', 'throw', 'while'
+            ),
+        2 => array(
+            'NULL', 'false', 'true', 'enum', 'errno', 'EDOM',
+            'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',
+            'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',
+            'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',
+            'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',
+            'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',
+            'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',
+            'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',
+            'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',
+            'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam',
+            'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',
+            'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC',
+            'virtual', 'public', 'private', 'protected', 'template', 'using', 'namespace',
+            'try', 'catch', 'inline', 'dynamic_cast', 'const_cast', 'reinterpret_cast',
+            'static_cast', 'explicit', 'friend', 'typename', 'typeid', 'class'
+            ),
+        3 => array(
+            'cin', 'cerr', 'clog', 'cout', 'delete', 'new', 'this',
+            'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
+            'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',
+            'ispunct', 'isspace', 'isupper', 'isxdigit', 'tolower', 'toupper',
+            'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',
+            'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
+            'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp',
+            'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',
+            'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',
+            'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',
+            'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',
+            'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',
+            'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',
+            'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',
+            'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',
+            'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',
+            'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',
+            'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',
+            'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',
+            'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
+            ),
+        4 => array(
+            'auto', 'bool', 'char', 'const', 'double', 'float', 'int', 'long', 'longint',
+            'register', 'short', 'shortint', 'signed', 'static', 'struct',
+            'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',
+            'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',
+            'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm', 'wchar_t',
+
+            'int8', 'int16', 'int32', 'int64',
+            'uint8', 'uint16', 'uint32', 'uint64',
+
+            'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t',
+            'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',
+
+            'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t',
+            'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t',
+
+            'int8_t', 'int16_t', 'int32_t', 'int64_t',
+            'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t',
+
+            'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t'
+            ),
+        // Public API
+        5 => array(
+            'AssignProcessToJobObject', 'CommandLineToArgvW', 'ConvertThreadToFiber',
+            'CreateFiber', 'CreateJobObjectA', 'CreateJobObjectW', 'CreateProcessA',
+            'CreateProcessAsUserA', 'CreateProcessAsUserW', 'CreateProcessW',
+            'CreateRemoteThread', 'CreateThread', 'DeleteFiber', 'ExitProcess',
+            'ExitThread', 'FreeEnvironmentStringsA', 'FreeEnvironmentStringsW',
+            'GetCommandLineA', 'GetCommandLineW', 'GetCurrentProcess',
+            'GetCurrentProcessId', 'GetCurrentThread', 'GetCurrentThreadId',
+            'GetEnvironmentStringsA', 'GetEnvironmentStringsW',
+            'GetEnvironmentVariableA', 'GetEnvironmentVariableW', 'GetExitCodeProcess',
+            'GetExitCodeThread', 'GetGuiResources', 'GetPriorityClass',
+            'GetProcessAffinityMask', 'GetProcessPriorityBoost',
+            'GetProcessShutdownParameters', 'GetProcessTimes', 'GetProcessVersion',
+            'GetProcessWorkingSetSize', 'GetStartupInfoA', 'GetStartupInfoW',
+            'GetThreadPriority', 'GetThreadPriorityBoost', 'GetThreadTimes',
+            'OpenJobObjectA', 'OpenJobObjectW', 'OpenProcess',
+            'QueryInformationJobObject', 'ResumeThread', 'SetEnvironmentVariableA',
+            'SetEnvironmentVariableW', 'SetInformationJobObject', 'SetPriorityClass',
+            'SetProcessAffinityMask', 'SetProcessPriorityBoost',
+            'SetProcessShutdownParameters', 'SetProcessWorkingSetSize',
+            'SetThreadAffinityMask', 'SetThreadIdealProcessor', 'SetThreadPriority',
+            'SetThreadPriorityBoost', 'Sleep', 'SleepEx', 'SuspendThread',
+            'SwitchToFiber', 'SwitchToThread', 'TerminateJobObject', 'TerminateProcess',
+            'TerminateThread', 'WaitForInputIdle', 'WinExec',
+
+            '_hread', '_hwrite', '_lclose', '_lcreat', '_llseek', '_lopen', '_lread',
+            '_lwrite', 'AreFileApisANSI', 'CancelIo', 'CopyFileA', 'CopyFileW',
+            'CreateDirectoryA', 'CreateDirectoryExA', 'CreateDirectoryExW',
+            'CreateDirectoryW', 'CreateFileA', 'CreateFileW', 'DeleteFileA',
+            'DeleteFileW', 'FindClose', 'FindCloseChangeNotification',
+            'FindFirstChangeNotificationA', 'FindFirstChangeNotificationW',
+            'FindFirstFileA', 'FindFirstFileW', 'FindNextFileA', 'FindNextFileW',
+            'FlushFileBuffers', 'GetCurrentDirectoryA', 'GetCurrentDirectoryW',
+            'GetDiskFreeSpaceA', 'GetDiskFreeSpaceExA', 'GetDiskFreeSpaceExW',
+            'GetDiskFreeSpaceW', 'GetDriveTypeA', 'GetDriveTypeW', 'GetFileAttributesA',
+            'GetFileAttributesExA', 'GetFileAttributesExW', 'GetFileAttributesW',
+            'GetFileInformationByHandle', 'GetFileSize', 'GetFileType',
+            'GetFullPathNameA', 'GetFullPathNameW', 'GetLogicalDrives',
+            'GetLogicalDriveStringsA', 'GetLogicalDriveStringsW', 'GetLongPathNameA',
+            'GetLongPathNameW', 'GetShortPathNameA', 'GetShortPathNameW',
+            'GetTempFileNameA', 'GetTempFileNameW', 'GetTempPathA', 'GetTempPathW',
+            'LockFile', 'MoveFileA', 'MoveFileW', 'MulDiv', 'OpenFile',
+            'QueryDosDeviceA', 'QueryDosDeviceW', 'ReadFile', 'ReadFileEx',
+            'RemoveDirectoryA', 'RemoveDirectoryW', 'SearchPathA', 'SearchPathW',
+            'SetCurrentDirectoryA', 'SetCurrentDirectoryW', 'SetEndOfFile',
+            'SetFileApisToANSI', 'SetFileApisToOEM', 'SetFileAttributesA',
+            'SetFileAttributesW', 'SetFilePointer', 'SetHandleCount',
+            'SetVolumeLabelA', 'SetVolumeLabelW', 'UnlockFile', 'WriteFile',
+            'WriteFileEx',
+
+            'DeviceIoControl',
+
+            'GetModuleFileNameA', 'GetModuleFileNameW', 'GetProcAddress',
+            'LoadLibraryA', 'LoadLibraryExA', 'LoadLibraryExW', 'LoadLibraryW',
+            'LoadModule',
+
+            'GetPrivateProfileIntA', 'GetPrivateProfileIntW',
+            'GetPrivateProfileSectionA', 'GetPrivateProfileSectionNamesA',
+            'GetPrivateProfileSectionNamesW', 'GetPrivateProfileSectionW',
+            'GetPrivateProfileStringA', 'GetPrivateProfileStringW',
+            'GetPrivateProfileStructA', 'GetPrivateProfileStructW',
+            'GetProfileIntA', 'GetProfileIntW', 'GetProfileSectionA',
+            'GetProfileSectionW', 'GetProfileStringA', 'GetProfileStringW',
+            'RegCloseKey', 'RegConnectRegistryA', 'RegConnectRegistryW',
+            'RegCreateKeyA', 'RegCreateKeyExA', 'RegCreateKeyExW',
+            'RegCreateKeyW', 'RegDeleteKeyA', 'RegDeleteKeyW', 'RegDeleteValueA',
+            'RegDeleteValueW', 'RegEnumKeyA', 'RegEnumKeyExA', 'RegEnumKeyExW',
+            'RegEnumKeyW', 'RegEnumValueA', 'RegEnumValueW', 'RegFlushKey',
+            'RegGetKeySecurity', 'RegLoadKeyA', 'RegLoadKeyW',
+            'RegNotifyChangeKeyValue', 'RegOpenKeyA', 'RegOpenKeyExA', 'RegOpenKeyExW',
+            'RegOpenKeyW', 'RegOverridePredefKey', 'RegQueryInfoKeyA',
+            'RegQueryInfoKeyW', 'RegQueryMultipleValuesA', 'RegQueryMultipleValuesW',
+            'RegQueryValueA', 'RegQueryValueExA', 'RegQueryValueExW', 'RegQueryValueW',
+            'RegReplaceKeyA', 'RegReplaceKeyW', 'RegRestoreKeyA', 'RegRestoreKeyW',
+            'RegSaveKeyA', 'RegSaveKeyW', 'RegSetKeySecurity', 'RegSetValueA',
+            'RegSetValueExA', 'RegSetValueExW', 'RegSetValueW', 'RegUnLoadKeyA',
+            'RegUnLoadKeyW', 'WritePrivateProfileSectionA', 'WritePrivateProfileSectionW',
+            'WritePrivateProfileStringA', 'WritePrivateProfileStringW',
+            'WritePrivateProfileStructA', 'WritePrivateProfileStructW',
+            'WriteProfileSectionA', 'WriteProfileSectionW', 'WriteProfileStringA',
+            'WriteProfileStringW',
+
+            'AccessCheck', 'AccessCheckAndAuditAlarmA', 'AccessCheckAndAuditAlarmW',
+            'AccessCheckByType', 'AccessCheckByTypeAndAuditAlarmA',
+            'AccessCheckByTypeAndAuditAlarmW', 'AccessCheckByTypeResultList',
+            'AccessCheckByTypeResultListAndAuditAlarmA', 'AccessCheckByTypeResultListAndAuditAlarmW',
+            'AddAccessAllowedAce', 'AddAccessAllowedAceEx', 'AddAccessAllowedObjectAce',
+            'AddAccessDeniedAce', 'AddAccessDeniedAceEx', 'AddAccessDeniedObjectAce',
+            'AddAce', 'AddAuditAccessAce', 'AddAuditAccessAceEx', 'AddAuditAccessObjectAce',
+            'AdjustTokenGroups', 'AdjustTokenPrivileges', 'AllocateAndInitializeSid',
+            'AllocateLocallyUniqueId', 'AreAllAccessesGranted', 'AreAnyAccessesGranted',
+            'BuildExplicitAccessWithNameA', 'BuildExplicitAccessWithNameW',
+            'BuildImpersonateExplicitAccessWithNameA', 'BuildImpersonateExplicitAccessWithNameW',
+            'BuildImpersonateTrusteeA', 'BuildImpersonateTrusteeW', 'BuildSecurityDescriptorA',
+            'BuildSecurityDescriptorW', 'BuildTrusteeWithNameA', 'BuildTrusteeWithNameW',
+            'BuildTrusteeWithSidA', 'BuildTrusteeWithSidW',
+            'ConvertToAutoInheritPrivateObjectSecurity', 'CopySid', 'CreatePrivateObjectSecurity',
+            'CreatePrivateObjectSecurityEx', 'CreateRestrictedToken', 'DeleteAce',
+            'DestroyPrivateObjectSecurity', 'DuplicateToken', 'DuplicateTokenEx',
+            'EqualPrefixSid', 'EqualSid', 'FindFirstFreeAce', 'FreeSid', 'GetAce',
+            'GetAclInformation', 'GetAuditedPermissionsFromAclA', 'GetAuditedPermissionsFromAclW',
+            'GetEffectiveRightsFromAclA', 'GetEffectiveRightsFromAclW',
+            'GetExplicitEntriesFromAclA', 'GetExplicitEntriesFromAclW', 'GetFileSecurityA',
+            'GetFileSecurityW', 'GetKernelObjectSecurity', 'GetLengthSid', 'GetMultipleTrusteeA',
+            'GetMultipleTrusteeOperationA', 'GetMultipleTrusteeOperationW', 'GetMultipleTrusteeW',
+            'GetNamedSecurityInfoA', 'GetNamedSecurityInfoW', 'GetPrivateObjectSecurity',
+            'GetSecurityDescriptorControl', 'GetSecurityDescriptorDacl',
+            'GetSecurityDescriptorGroup', 'GetSecurityDescriptorLength',
+            'GetSecurityDescriptorOwner', 'GetSecurityDescriptorSacl', 'GetSecurityInfo',
+            'GetSidIdentifierAuthority', 'GetSidLengthRequired', 'GetSidSubAuthority',
+            'GetSidSubAuthorityCount', 'GetTokenInformation', 'GetTrusteeFormA',
+            'GetTrusteeFormW', 'GetTrusteeNameA', 'GetTrusteeNameW', 'GetTrusteeTypeA',
+            'GetTrusteeTypeW', 'GetUserObjectSecurity', 'ImpersonateLoggedOnUser',
+            'ImpersonateNamedPipeClient', 'ImpersonateSelf', 'InitializeAcl',
+            'InitializeSecurityDescriptor', 'InitializeSid', 'IsTokenRestricted', 'IsValidAcl',
+            'IsValidSecurityDescriptor', 'IsValidSid', 'LogonUserA', 'LogonUserW',
+            'LookupAccountNameA', 'LookupAccountNameW', 'LookupAccountSidA', 'LookupAccountSidW',
+            'LookupPrivilegeDisplayNameA', 'LookupPrivilegeDisplayNameW', 'LookupPrivilegeNameA',
+            'LookupPrivilegeNameW', 'LookupPrivilegeValueA', 'LookupPrivilegeValueW',
+            'LookupSecurityDescriptorPartsA', 'LookupSecurityDescriptorPartsW', 'MakeAbsoluteSD',
+            'MakeSelfRelativeSD', 'MapGenericMask', 'ObjectCloseAuditAlarmA',
+            'ObjectCloseAuditAlarmW', 'ObjectDeleteAuditAlarmA', 'ObjectDeleteAuditAlarmW',
+            'ObjectOpenAuditAlarmA', 'ObjectOpenAuditAlarmW', 'ObjectPrivilegeAuditAlarmA',
+            'ObjectPrivilegeAuditAlarmW', 'OpenProcessToken', 'OpenThreadToken', 'PrivilegeCheck',
+            'PrivilegedServiceAuditAlarmA', 'PrivilegedServiceAuditAlarmW', 'RevertToSelf',
+            'SetAclInformation', 'SetEntriesInAclA', 'SetEntriesInAclW', 'SetFileSecurityA',
+            'SetFileSecurityW', 'SetKernelObjectSecurity', 'SetNamedSecurityInfoA',
+            'SetNamedSecurityInfoW', 'SetPrivateObjectSecurity', 'SetPrivateObjectSecurityEx',
+            'SetSecurityDescriptorControl', 'SetSecurityDescriptorDacl',
+            'SetSecurityDescriptorGroup', 'SetSecurityDescriptorOwner',
+            'SetSecurityDescriptorSacl', 'SetSecurityInfo', 'SetThreadToken',
+            'SetTokenInformation', 'SetUserObjectSecurity', 'ChangeServiceConfig2A',
+            'ChangeServiceConfig2W', 'ChangeServiceConfigA', 'ChangeServiceConfigW',
+            'CloseServiceHandle', 'ControlService', 'CreateServiceA', 'CreateServiceW',
+            'DeleteService', 'EnumDependentServicesA', 'EnumDependentServicesW',
+            'EnumServicesStatusA', 'EnumServicesStatusW', 'GetServiceDisplayNameA',
+            'GetServiceDisplayNameW', 'GetServiceKeyNameA', 'GetServiceKeyNameW',
+            'LockServiceDatabase', 'NotifyBootConfigStatus', 'OpenSCManagerA', 'OpenSCManagerW',
+            'OpenServiceA', 'OpenServiceW', 'QueryServiceConfig2A', 'QueryServiceConfig2W',
+            'QueryServiceConfigA', 'QueryServiceConfigW', 'QueryServiceLockStatusA',
+            'QueryServiceLockStatusW', 'QueryServiceObjectSecurity', 'QueryServiceStatus',
+            'RegisterServiceCtrlHandlerA', 'RegisterServiceCtrlHandlerW',
+            'SetServiceObjectSecurity', 'SetServiceStatus', 'StartServiceA',
+            'StartServiceCtrlDispatcherA', 'StartServiceCtrlDispatcherW', 'StartServiceW',
+            'UnlockServiceDatabase',
+
+            'MultinetGetConnectionPerformanceA', 'MultinetGetConnectionPerformanceW',
+            'NetAlertRaise', 'NetAlertRaiseEx', 'NetApiBufferAllocate', 'NetApiBufferFree',
+            'NetApiBufferReallocate', 'NetApiBufferSize', 'NetConnectionEnum', 'NetFileClose',
+            'NetFileGetInfo', 'NetGetAnyDCName', 'NetGetDCName', 'NetGetDisplayInformationIndex',
+            'NetGroupAdd', 'NetGroupAddUser', 'NetGroupDel', 'NetGroupDelUser', 'NetGroupEnum',
+            'NetGroupGetInfo', 'NetGroupGetUsers', 'NetGroupSetInfo', 'NetGroupSetUsers',
+            'NetLocalGroupAdd', 'NetLocalGroupAddMember', 'NetLocalGroupAddMembers',
+            'NetLocalGroupDel', 'NetLocalGroupDelMember', 'NetLocalGroupDelMembers',
+            'NetLocalGroupEnum', 'NetLocalGroupGetInfo', 'NetLocalGroupGetMembers',
+            'NetLocalGroupSetInfo', 'NetLocalGroupSetMembers', 'NetMessageBufferSend',
+            'NetMessageNameAdd', 'NetMessageNameDel', 'NetMessageNameEnum',
+            'NetMessageNameGetInfo', 'NetQueryDisplayInformation', 'NetRemoteComputerSupports',
+            'NetRemoteTOd', 'NetReplExportDirAdd', 'NetReplExportDirDel', 'NetReplExportDirEnum',
+            'NetReplExportDirGetInfo', 'NetReplExportDirLock', 'NetReplExportDirSetInfo',
+            'NetReplExportDirUnlock', 'NetReplGetInfo', 'NetReplImportDirAdd',
+            'NetReplImportDirDel', 'NetReplImportDirEnum', 'NetReplImportDirGetInfo',
+            'NetReplImportDirLock', 'NetReplImportDirUnlock', 'NetReplSetInfo',
+            'NetScheduleJobAdd', 'NetScheduleJobDel', 'NetScheduleJobEnum',
+            'NetScheduleJobGetInfo', 'NetServerComputerNameAdd', 'NetServerComputerNameDel',
+            'NetServerDiskEnum', 'NetServerEnum', 'NetServerEnumEx', 'NetServerGetInfo',
+            'NetServerSetInfo', 'NetServerTransportAdd', 'NetServerTransportAddEx',
+            'NetServerTransportDel', 'NetServerTransportEnum', 'NetSessionDel', 'NetSessionEnum',
+            'NetSessionGetInfo', 'NetShareAdd', 'NetShareCheck', 'NetShareDel', 'NetShareEnum',
+            'NetShareGetInfo', 'NetShareSetInfo', 'NetStatisticsGet', 'NetUseAdd', 'NetUseDel',
+            'NetUseEnum', 'NetUseGetInfo', 'NetUserAdd', 'NetUserChangePassword', 'NetUserDel',
+            'NetUserEnum', 'NetUserGetGroups', 'NetUserGetInfo', 'NetUserGetLocalGroups',
+            'NetUserModalsGet', 'NetUserModalsSet', 'NetUserSetGroups', 'NetUserSetInfo',
+            'NetWkstaGetInfo', 'NetWkstaSetInfo', 'NetWkstaTransportAdd', 'NetWkstaTransportDel',
+            'NetWkstaTransportEnum', 'NetWkstaUserEnum', 'NetWkstaUserGetInfo',
+            'NetWkstaUserSetInfo', 'WNetAddConnection2A', 'WNetAddConnection2W',
+            'WNetAddConnection3A', 'WNetAddConnection3W', 'WNetAddConnectionA',
+            'WNetAddConnectionW', 'WNetCancelConnection2A', 'WNetCancelConnection2W',
+            'WNetCancelConnectionA', 'WNetCancelConnectionW', 'WNetCloseEnum',
+            'WNetConnectionDialog', 'WNetConnectionDialog1A', 'WNetConnectionDialog1W',
+            'WNetDisconnectDialog', 'WNetDisconnectDialog1A', 'WNetDisconnectDialog1W',
+            'WNetEnumResourceA', 'WNetEnumResourceW', 'WNetGetConnectionA', 'WNetGetConnectionW',
+            'WNetGetLastErrorA', 'WNetGetLastErrorW', 'WNetGetNetworkInformationA',
+            'WNetGetNetworkInformationW', 'WNetGetProviderNameA', 'WNetGetProviderNameW',
+            'WNetGetResourceInformationA', 'WNetGetResourceInformationW',
+            'WNetGetResourceParentA', 'WNetGetResourceParentW', 'WNetGetUniversalNameA',
+            'WNetGetUniversalNameW', 'WNetGetUserA', 'WNetGetUserW', 'WNetOpenEnumA',
+            'WNetOpenEnumW', 'WNetUseConnectionA', 'WnetUseConnectionW',
+
+            'accept', 'bind', 'closesocket', 'connect', 'gethostbyaddr', 'gethostbyname',
+            'gethostname', 'getpeername', 'getprotobyname', 'getprotobynumber', 'getservbyname',
+            'getservbyport', 'getsockname', 'getsockopt', 'htonl', 'htons', 'inet_addr',
+            'inet_ntoa', 'ioctlsocket', 'listen', 'ntohl', 'ntohs', 'recv', 'recvfrom', 'select',
+            'send', 'sendto', 'setsockopt', 'shutdown', 'socket', 'WSAAccept',
+            'WSAAddressToStringA', 'WSAAddressToStringW', 'WSAAsyncGetHostByAddr',
+            'WSAAsyncGetHostByName', 'WSAAsyncGetProtoByName', 'WSAAsyncGetProtoByNumber',
+            'WSAAsyncGetServByName', 'WSAAsyncGetServByPort', 'WSAAsyncSelect',
+            'WSACancelAsyncRequest', 'WSACancelBlockingCall', 'WSACleanup', 'WSACloseEvent',
+            'WSAConnect', 'WSACreateEvent', 'WSADuplicateSocketA', 'WSADuplicateSocketW',
+            'WSAEnumNameSpaceProvidersA', 'WSAEnumNameSpaceProvidersW', 'WSAEnumNetworkEvents',
+            'WSAEnumProtocolsA', 'WSAEnumProtocolsW', 'WSAEventSelect', 'WSAGetLastError',
+            'WSAGetOverlappedResult', 'WSAGetQOSByName', 'WSAGetServiceClassInfoA',
+            'WSAGetServiceClassInfoW', 'WSAGetServiceClassNameByClassIdA',
+            'WSAGetServiceClassNameByClassIdW', 'WSAHtonl', 'WSAHtons', 'WSAInstallServiceClassA',
+            'WSAInstallServiceClassW', 'WSAIoctl', 'WSAIsBlocking', 'WSAJoinLeaf',
+            'WSALookupServiceBeginA', 'WSALookupServiceBeginW', 'WSALookupServiceEnd',
+            'WSALookupServiceNextA', 'WSALookupServiceNextW', 'WSANtohl', 'WSANtohs',
+            'WSAProviderConfigChange', 'WSARecv', 'WSARecvDisconnect', 'WSARecvFrom',
+            'WSARemoveServiceClass', 'WSAResetEvent', 'WSASend', 'WSASendDisconnect', 'WSASendTo',
+            'WSASetBlockingHook', 'WSASetEvent', 'WSASetLastError', 'WSASetServiceA',
+            'WSASetServiceW', 'WSASocketA', 'WSASocketW', 'WSAStartup', 'WSAStringToAddressA',
+            'WSAStringToAddressW', 'WSAUnhookBlockingHook', 'WSAWaitForMultipleEvents',
+            'WSCDeinstallProvider', 'WSCEnableNSProvider', 'WSCEnumProtocols',
+            'WSCGetProviderPath', 'WSCInstallNameSpace', 'WSCInstallProvider',
+            'WSCUnInstallNameSpace',
+
+            'ContinueDebugEvent', 'DebugActiveProcess', 'DebugBreak', 'FatalExit',
+            'FlushInstructionCache', 'GetThreadContext', 'GetThreadSelectorEntry',
+            'IsDebuggerPresent', 'OutputDebugStringA', 'OutputDebugStringW', 'ReadProcessMemory',
+            'SetDebugErrorLevel', 'SetThreadContext', 'WaitForDebugEvent', 'WriteProcessMemory',
+
+            'CloseHandle', 'DuplicateHandle', 'GetHandleInformation', 'SetHandleInformation',
+
+            'AdjustWindowRect', 'AdjustWindowRectEx', 'AllowSetForegroundWindow',
+            'AnimateWindow', 'AnyPopup', 'ArrangeIconicWindows', 'BeginDeferWindowPos',
+            'BringWindowToTop', 'CascadeWindows', 'ChildWindowFromPoint',
+            'ChildWindowFromPointEx', 'CloseWindow', 'CreateWindowExA', 'CreateWindowExW',
+            'DeferWindowPos', 'DestroyWindow', 'EndDeferWindowPos', 'EnumChildWindows',
+            'EnumThreadWindows', 'EnumWindows', 'FindWindowA', 'FindWindowExA', 'FindWindowExW',
+            'FindWindowW', 'GetAltTabInfoA', 'GetAltTabInfoW', 'GetAncestor', 'GetClientRect',
+            'GetDesktopWindow', 'GetForegroundWindow', 'GetGUIThreadInfo', 'GetLastActivePopup',
+            'GetLayout', 'GetParent', 'GetProcessDefaultLayout', 'GetTitleBarInf', 'GetTopWindow',
+            'GetWindow', 'GetWindowInfo', 'GetWindowModuleFileNameA', 'GetWindowModuleFileNameW',
+            'GetWindowPlacement', 'GetWindowRect', 'GetWindowTextA', 'GetWindowTextLengthA',
+            'GetWindowTextLengthW', 'GetWindowTextW', 'GetWindowThreadProcessId', 'IsChild',
+            'IsIconic', 'IsWindow', 'IsWindowUnicode', 'IsWindowVisible', 'IsZoomed',
+            'LockSetForegroundWindow', 'MoveWindow', 'OpenIcon', 'RealChildWindowFromPoint',
+            'RealGetWindowClassA', 'RealGetWindowClassW', 'SetForegroundWindow',
+            'SetLayeredWindowAttributes', 'SetLayout', 'SetParent', 'SetProcessDefaultLayout',
+            'SetWindowPlacement', 'SetWindowPos', 'SetWindowTextA', 'SetWindowTextW',
+            'ShowOwnedPopups', 'ShowWindow', 'ShowWindowAsync', 'TileWindows',
+            'UpdateLayeredWindow', 'WindowFromPoint',
+
+            'CreateDialogIndirectParamA', 'CreateDialogIndirectParamW', 'CreateDialogParamA',
+            'CreateDialogParamW', 'DefDlgProcA', 'DefDlgProcW', 'DialogBoxIndirectParamA',
+            'DialogBoxIndirectParamW', 'DialogBoxParamA', 'DialogBoxParamW', 'EndDialog',
+            'GetDialogBaseUnits', 'GetDlgCtrlID', 'GetDlgItem', 'GetDlgItemInt',
+            'GetDlgItemTextA', 'GetDlgItemTextW', 'GetNextDlgGroupItem', 'GetNextDlgTabItem',
+            'IsDialogMessageA', 'IsDialogMessageW', 'MapDialogRect', 'MessageBoxA',
+            'MessageBoxExA', 'MessageBoxExW', 'MessageBoxIndirectA', 'MessageBoxIndirectW',
+            'MessageBoxW', 'SendDlgItemMessageA', 'SendDlgItemMessageW', 'SetDlgItemInt',
+            'SetDlgItemTextA', 'SetDlgItemTextW',
+
+            'GetWriteWatch', 'GlobalMemoryStatus', 'GlobalMemoryStatusEx', 'IsBadCodePtr',
+            'IsBadReadPtr', 'IsBadStringPtrA', 'IsBadStringPtrW', 'IsBadWritePtr',
+            'ResetWriteWatch', 'AllocateUserPhysicalPages', 'FreeUserPhysicalPages',
+            'MapUserPhysicalPages', 'MapUserPhysicalPagesScatter', 'GlobalAlloc', 'GlobalFlags',
+            'GlobalFree', 'GlobalHandle', 'GlobalLock', 'GlobalReAlloc', 'GlobalSize',
+            'GlobalUnlock', 'LocalAlloc', 'LocalFlags', 'LocalFree', 'LocalHandle', 'LocalLock',
+            'LocalReAlloc', 'LocalSize', 'LocalUnlock', 'GetProcessHeap', 'GetProcessHeaps',
+            'HeapAlloc', 'HeapCompact', 'HeapCreate', 'HeapDestroy', 'HeapFree', 'HeapLock',
+            'HeapReAlloc', 'HeapSize', 'HeapUnlock', 'HeapValidate', 'HeapWalk', 'VirtualAlloc',
+            'VirtualAllocEx', 'VirtualFree', 'VirtualFreeEx', 'VirtualLock', 'VirtualProtect',
+            'VirtualProtectEx', 'VirtualQuery', 'VirtualQueryEx', 'VirtualUnlock',
+            'GetFreeSpace', 'GlobalCompact', 'GlobalFix', 'GlobalUnfix', 'GlobalUnWire',
+            'GlobalWire', 'IsBadHugeReadPtr', 'IsBadHugeWritePtr', 'LocalCompact', 'LocalShrink',
+
+            'GetClassInfoA', 'GetClassInfoW', 'GetClassInfoExA', 'GetClassInfoExW',
+            'GetClassLongA', 'GetClassLongW', 'GetClassLongPtrA', 'GetClassLongPtrW',
+            'RegisterClassA', 'RegisterClassW', 'RegisterClassExA', 'RegisterClassExW',
+            'SetClassLongA', 'SetClassLongW', 'SetClassLongPtrA', 'SetClassLongPtrW',
+            'SetWindowLongA', 'SetWindowLongW', 'SetWindowLongPtrA', 'SetWindowLongPtrW',
+            'UnregisterClassA', 'UnregisterClassW', 'GetClassWord', 'GetWindowWord',
+            'SetClassWord', 'SetWindowWord'
+            ),
+        // Native API
+        6 => array(
+            'CsrAllocateCaptureBuffer', 'CsrAllocateCapturePointer', 'CsrAllocateMessagePointer',
+            'CsrCaptureMessageBuffer', 'CsrCaptureMessageString', 'CsrCaptureTimeout',
+            'CsrClientCallServer', 'CsrClientConnectToServer', 'CsrFreeCaptureBuffer',
+            'CsrIdentifyAlertableThread', 'CsrNewThread', 'CsrProbeForRead', 'CsrProbeForWrite',
+            'CsrSetPriorityClass',
+
+            'LdrAccessResource', 'LdrDisableThreadCalloutsForDll', 'LdrEnumResources',
+            'LdrFindEntryForAddress', 'LdrFindResource_U', 'LdrFindResourceDirectory_U',
+            'LdrGetDllHandle', 'LdrGetProcedureAddress', 'LdrInitializeThunk', 'LdrLoadDll',
+            'LdrProcessRelocationBlock', 'LdrQueryImageFileExecutionOptions',
+            'LdrQueryProcessModuleInformation', 'LdrShutdownProcess', 'LdrShutdownThread',
+            'LdrUnloadDll', 'LdrVerifyImageMatchesChecksum',
+
+            'NtAcceptConnectPort', 'ZwAcceptConnectPort', 'NtCompleteConnectPort',
+            'ZwCompleteConnectPort', 'NtConnectPort', 'ZwConnectPort', 'NtCreatePort',
+            'ZwCreatePort', 'NtImpersonateClientOfPort', 'ZwImpersonateClientOfPort',
+            'NtListenPort', 'ZwListenPort', 'NtQueryInformationPort', 'ZwQueryInformationPort',
+            'NtReadRequestData', 'ZwReadRequestData', 'NtReplyPort', 'ZwReplyPort',
+            'NtReplyWaitReceivePort', 'ZwReplyWaitReceivePort', 'NtReplyWaitReplyPort',
+            'ZwReplyWaitReplyPort', 'NtRequestPort', 'ZwRequestPort', 'NtRequestWaitReplyPort',
+            'ZwRequestWaitReplyPort', 'NtSecureConnectPort', 'ZwSecureConnectPort',
+            'NtWriteRequestData', 'ZwWriteRequestData',
+
+            'NtAccessCheck', 'ZwAccessCheck', 'NtAccessCheckAndAuditAlarm',
+            'ZwAccessCheckAndAuditAlarm', 'NtAccessCheckByType', 'ZwAccessCheckByType',
+            'NtAccessCheckByTypeAndAuditAlarm', 'ZwAccessCheckByTypeAndAuditAlarm',
+            'NtAccessCheckByTypeResultList', 'ZwAccessCheckByTypeResultList',
+            'NtAdjustGroupsToken', 'ZwAdjustGroupsToken', 'NtAdjustPrivilegesToken',
+            'ZwAdjustPrivilegesToken', 'NtCloseObjectAuditAlarm', 'ZwCloseObjectAuditAlarm',
+            'NtCreateToken', 'ZwCreateToken', 'NtDeleteObjectAuditAlarm',
+            'ZwDeleteObjectAuditAlarm', 'NtDuplicateToken', 'ZwDuplicateToken',
+            'NtFilterToken', 'ZwFilterToken', 'NtImpersonateThread', 'ZwImpersonateThread',
+            'NtOpenObjectAuditAlarm', 'ZwOpenObjectAuditAlarm', 'NtOpenProcessToken',
+            'ZwOpenProcessToken', 'NtOpenThreadToken', 'ZwOpenThreadToken', 'NtPrivilegeCheck',
+            'ZwPrivilegeCheck', 'NtPrivilegedServiceAuditAlarm', 'ZwPrivilegedServiceAuditAlarm',
+            'NtPrivilegeObjectAuditAlarm', 'ZwPrivilegeObjectAuditAlarm',
+            'NtQueryInformationToken', 'ZwQueryInformationToken', 'NtQuerySecurityObject',
+            'ZwQuerySecurityObject', 'NtSetInformationToken', 'ZwSetInformationToken',
+            'NtSetSecurityObject', 'ZwSetSecurityObject',
+
+            'NtAddAtom', 'ZwAddAtom', 'NtDeleteAtom', 'ZwDeleteAtom', 'NtFindAtom', 'ZwFindAtom',
+            'NtQueryInformationAtom', 'ZwQueryInformationAtom',
+
+            'NtAlertResumeThread', 'ZwAlertResumeThread', 'NtAlertThread', 'ZwAlertThread',
+            'NtCreateProcess', 'ZwCreateProcess', 'NtCreateThread', 'ZwCreateThread',
+            'NtCurrentTeb', 'NtDelayExecution', 'ZwDelayExecution', 'NtGetContextThread',
+            'ZwGetContextThread', 'NtOpenProcess', 'ZwOpenProcess', 'NtOpenThread',
+            'ZwOpenThread', 'NtQueryInformationProcess', 'ZwQueryInformationProcess',
+            'NtQueryInformationThread', 'ZwQueryInformationThread', 'NtQueueApcThread',
+            'ZwQueueApcThread', 'NtResumeThread', 'ZwResumeThread', 'NtSetContextThread',
+            'ZwSetContextThread', 'NtSetHighWaitLowThread', 'ZwSetHighWaitLowThread',
+            'NtSetInformationProcess', 'ZwSetInformationProcess', 'NtSetInformationThread',
+            'ZwSetInformationThread', 'NtSetLowWaitHighThread', 'ZwSetLowWaitHighThread',
+            'NtSuspendThread', 'ZwSuspendThread', 'NtTerminateProcess', 'ZwTerminateProcess',
+            'NtTerminateThread', 'ZwTerminateThread', 'NtTestAlert', 'ZwTestAlert',
+            'NtYieldExecution', 'ZwYieldExecution',
+
+            'NtAllocateVirtualMemory', 'ZwAllocateVirtualMemory', 'NtAllocateVirtualMemory64',
+            'ZwAllocateVirtualMemory64', 'NtAreMappedFilesTheSame', 'ZwAreMappedFilesTheSame',
+            'NtCreateSection', 'ZwCreateSection', 'NtExtendSection', 'ZwExtendSection',
+            'NtFlushVirtualMemory', 'ZwFlushVirtualMemory', 'NtFreeVirtualMemory',
+            'ZwFreeVirtualMemory', 'NtFreeVirtualMemory64', 'ZwFreeVirtualMemory64',
+            'NtLockVirtualMemory', 'ZwLockVirtualMemory', 'NtMapViewOfSection',
+            'ZwMapViewOfSection', 'NtMapViewOfVlmSection', 'ZwMapViewOfVlmSection',
+            'NtOpenSection', 'ZwOpenSection', 'NtProtectVirtualMemory', 'ZwProtectVirtualMemory',
+            'NtProtectVirtualMemory64', 'ZwProtectVirtualMemory64', 'NtQueryVirtualMemory',
+            'ZwQueryVirtualMemory', 'NtQueryVirtualMemory64', 'ZwQueryVirtualMemory64',
+            'NtReadVirtualMemory', 'ZwReadVirtualMemory', 'NtReadVirtualMemory64',
+            'ZwReadVirtualMemory64', 'NtUnlockVirtualMemory', 'ZwUnlockVirtualMemory',
+            'NtUnmapViewOfSection', 'ZwUnmapViewOfSection', 'NtUnmapViewOfVlmSection',
+            'ZwUnmapViewOfVlmSection', 'NtWriteVirtualMemory', 'ZwWriteVirtualMemory',
+            'NtWriteVirtualMemory64', 'ZwWriteVirtualMemory64',
+
+            'NtAssignProcessToJobObject', 'ZwAssignProcessToJobObject', 'NtCreateJobObject',
+            'ZwCreateJobObject', 'NtOpenJobObject', 'ZwOpenJobObject',
+            'NtQueryInformationJobObject', 'ZwQueryInformationJobObject',
+            'NtSetInformationJobObject', 'ZwSetInformationJobObject', 'NtTerminateJobObject',
+            'ZwTerminateJobObject',
+
+            'NtCancelIoFile', 'ZwCancelIoFile', 'NtCreateFile', 'ZwCreateFile',
+            'NtCreateIoCompletion', 'ZwCreateIoCompletion', 'NtDeleteFile', 'ZwDeleteFile',
+            'NtDeviceIoControlFile', 'ZwDeviceIoControlFile', 'NtFlushBuffersFile',
+            'ZwFlushBuffersFile', 'NtFsControlFile', 'ZwFsControlFile', 'NtLockFile', 'ZwLockFile',
+            'NtNotifyChangeDirectoryFile', 'ZwNotifyChangeDirectoryFile', 'NtOpenFile',
+            'ZwOpenFile', 'NtOpenIoCompletion', 'ZwOpenIoCompletion', 'NtQueryAttributesFile',
+            'ZwQueryAttributesFile', 'NtQueryDirectoryFile', 'ZwQueryDirectoryFile',
+            'NtQueryEaFile', 'ZwQueryEaFile', 'NtQueryIoCompletion', 'ZwQueryIoCompletion',
+            'NtQueryQuotaInformationFile', 'ZwQueryQuotaInformationFile',
+            'NtQueryVolumeInformationFile', 'ZwQueryVolumeInformationFile', 'NtReadFile',
+            'ZwReadFile', 'NtReadFile64', 'ZwReadFile64', 'NtReadFileScatter', 'ZwReadFileScatter',
+            'NtRemoveIoCompletion', 'ZwRemoveIoCompletion', 'NtSetEaFile', 'ZwSetEaFile',
+            'NtSetInformationFile', 'ZwSetInformationFile', 'NtSetIoCompletion',
+            'ZwSetIoCompletion', 'NtSetQuotaInformationFile', 'ZwSetQuotaInformationFile',
+            'NtSetVolumeInformationFile', 'ZwSetVolumeInformationFile', 'NtUnlockFile',
+            'ZwUnlockFile', 'NtWriteFile', 'ZwWriteFile', 'NtWriteFile64','ZwWriteFile64',
+            'NtWriteFileGather', 'ZwWriteFileGather', 'NtQueryFullAttributesFile',
+            'ZwQueryFullAttributesFile', 'NtQueryInformationFile', 'ZwQueryInformationFile',
+
+            'RtlAbortRXact', 'RtlAbsoluteToSelfRelativeSD', 'RtlAcquirePebLock',
+            'RtlAcquireResourceExclusive', 'RtlAcquireResourceShared', 'RtlAddAccessAllowedAce',
+            'RtlAddAccessDeniedAce', 'RtlAddAce', 'RtlAddActionToRXact', 'RtlAddAtomToAtomTable',
+            'RtlAddAttributeActionToRXact', 'RtlAddAuditAccessAce', 'RtlAddCompoundAce',
+            'RtlAdjustPrivilege', 'RtlAllocateAndInitializeSid', 'RtlAllocateHandle',
+            'RtlAllocateHeap', 'RtlAnsiCharToUnicodeChar', 'RtlAnsiStringToUnicodeSize',
+            'RtlAnsiStringToUnicodeString', 'RtlAppendAsciizToString', 'RtlAppendStringToString',
+            'RtlAppendUnicodeStringToString', 'RtlAppendUnicodeToString', 'RtlApplyRXact',
+            'RtlApplyRXactNoFlush', 'RtlAreAllAccessesGranted', 'RtlAreAnyAccessesGranted',
+            'RtlAreBitsClear', 'RtlAreBitsSet', 'RtlAssert', 'RtlCaptureStackBackTrace',
+            'RtlCharToInteger', 'RtlCheckRegistryKey', 'RtlClearAllBits', 'RtlClearBits',
+            'RtlClosePropertySet', 'RtlCompactHeap', 'RtlCompareMemory', 'RtlCompareMemoryUlong',
+            'RtlCompareString', 'RtlCompareUnicodeString', 'RtlCompareVariants',
+            'RtlCompressBuffer', 'RtlConsoleMultiByteToUnicodeN', 'RtlConvertExclusiveToShared',
+            'RtlConvertLongToLargeInteger', 'RtlConvertPropertyToVariant',
+            'RtlConvertSharedToExclusive', 'RtlConvertSidToUnicodeString',
+            'RtlConvertUiListToApiList', 'RtlConvertUlongToLargeInteger',
+            'RtlConvertVariantToProperty', 'RtlCopyLuid', 'RtlCopyLuidAndAttributesArray',
+            'RtlCopySecurityDescriptor', 'RtlCopySid', 'RtlCopySidAndAttributesArray',
+            'RtlCopyString', 'RtlCopyUnicodeString', 'RtlCreateAcl', 'RtlCreateAndSetSD',
+            'RtlCreateAtomTable', 'RtlCreateEnvironment', 'RtlCreateHeap',
+            'RtlCreateProcessParameters', 'RtlCreatePropertySet', 'RtlCreateQueryDebugBuffer',
+            'RtlCreateRegistryKey', 'RtlCreateSecurityDescriptor', 'RtlCreateTagHeap',
+            'RtlCreateUnicodeString', 'RtlCreateUnicodeStringFromAsciiz', 'RtlCreateUserProcess',
+            'RtlCreateUserSecurityObject', 'RtlCreateUserThread', 'RtlCustomCPToUnicodeN',
+            'RtlCutoverTimeToSystemTime', 'RtlDecompressBuffer', 'RtlDecompressFragment',
+            'RtlDelete', 'RtlDeleteAce', 'RtlDeleteAtomFromAtomTable', 'RtlDeleteCriticalSection',
+            'RtlDeleteElementGenericTable', 'RtlDeleteNoSplay', 'RtlDeleteRegistryValue',
+            'RtlDeleteResource', 'RtlDeleteSecurityObject', 'RtlDeNormalizeProcessParams',
+            'RtlDestroyAtomTable', 'RtlDestroyEnvironment', 'RtlDestroyHandleTable',
+            'RtlDestroyHeap', 'RtlDestroyProcessParameters', 'RtlDestroyQueryDebugBuffer',
+            'RtlDetermineDosPathNameType_U', 'RtlDoesFileExists_U', 'RtlDosPathNameToNtPathName_U',
+            'RtlDosSearchPath_U', 'RtlDowncaseUnicodeString', 'RtlDumpResource',
+            'RtlEmptyAtomTable', 'RtlEnlargedIntegerMultiply', 'RtlEnlargedUnsignedDivide',
+            'RtlEnlargedUnsignedMultiply', 'RtlEnterCriticalSection', 'RtlEnumerateGenericTable',
+            'RtlEnumerateGenericTableWithoutSplaying', 'RtlEnumerateProperties',
+            'RtlEnumProcessHeaps', 'RtlEqualComputerName', 'RtlEqualDomainName', 'RtlEqualLuid',
+            'RtlEqualPrefixSid', 'RtlEqualSid', 'RtlEqualString', 'RtlEqualUnicodeString',
+            'RtlEraseUnicodeString', 'RtlExpandEnvironmentStrings_U', 'RtlExtendedIntegerMultiply',
+            'RtlExtendedLargeIntegerDivide', 'RtlExtendedMagicDivide', 'RtlExtendHeap',
+            'RtlFillMemory', 'RtlFillMemoryUlong', 'RtlFindClearBits', 'RtlFindClearBitsAndSet',
+            'RtlFindLongestRunClear', 'RtlFindLongestRunSet', 'RtlFindMessage', 'RtlFindSetBits',
+            'RtlFindSetBitsAndClear', 'RtlFirstFreeAce', 'RtlFlushPropertySet',
+            'RtlFormatCurrentUserKeyPath', 'RtlFormatMessage', 'RtlFreeAnsiString',
+            'RtlFreeHandle', 'RtlFreeHeap', 'RtlFreeOemString', 'RtlFreeSid',
+            'RtlFreeUnicodeString', 'RtlFreeUserThreadStack', 'RtlGenerate8dot3Name', 'RtlGetAce',
+            'RtlGetCallersAddress', 'RtlGetCompressionWorkSpaceSize',
+            'RtlGetControlSecurityDescriptor', 'RtlGetCurrentDirectory_U',
+            'RtlGetDaclSecurityDescriptor', 'RtlGetElementGenericTable', 'RtlGetFullPathName_U',
+            'RtlGetGroupSecurityDescriptor', 'RtlGetLongestNtPathLength', 'RtlGetNtGlobalFlags',
+            'RtlGetNtProductType', 'RtlGetOwnerSecurityDescriptor', 'RtlGetProcessHeaps',
+            'RtlGetSaclSecurityDescriptor', 'RtlGetUserInfoHeap', 'RtlGuidToPropertySetName',
+            'RtlIdentifierAuthoritySid', 'RtlImageDirectoryEntryToData', 'RtlImageNtHeader',
+            'RtlImageRvaToSection', 'RtlImageRvaToVa', 'RtlImpersonateSelf', 'RtlInitAnsiString',
+            'RtlInitCodePageTable', 'RtlInitializeAtomPackage', 'RtlInitializeBitMap',
+            'RtlInitializeContext', 'RtlInitializeCriticalSection',
+            'RtlInitializeCriticalSectionAndSpinCount', 'RtlInitializeGenericTable',
+            'RtlInitializeHandleTable', 'RtlInitializeResource', 'RtlInitializeRXact',
+            'RtlInitializeSid', 'RtlInitNlsTables', 'RtlInitString', 'RtlInitUnicodeString',
+            'RtlInsertElementGenericTable', 'RtlIntegerToChar', 'RtlIntegerToUnicodeString',
+            'RtlIsDosDeviceName_U', 'RtlIsGenericTableEmpty', 'RtlIsNameLegalDOS8Dot3',
+            'RtlIsTextUnicode', 'RtlIsValidHandle', 'RtlIsValidIndexHandle', 'RtlLargeIntegerAdd',
+            'RtlLargeIntegerArithmeticShift', 'RtlLargeIntegerDivide', 'RtlLargeIntegerNegate',
+            'RtlLargeIntegerShiftLeft', 'RtlLargeIntegerShiftRight', 'RtlLargeIntegerSubtract',
+            'RtlLargeIntegerToChar', 'RtlLeaveCriticalSection', 'RtlLengthRequiredSid',
+            'RtlLengthSecurityDescriptor', 'RtlLengthSid', 'RtlLocalTimeToSystemTime',
+            'RtlLockHeap', 'RtlLookupAtomInAtomTable', 'RtlLookupElementGenericTable',
+            'RtlMakeSelfRelativeSD', 'RtlMapGenericMask', 'RtlMoveMemory',
+            'RtlMultiByteToUnicodeN', 'RtlMultiByteToUnicodeSize', 'RtlNewInstanceSecurityObject',
+            'RtlNewSecurityGrantedAccess', 'RtlNewSecurityObject', 'RtlNormalizeProcessParams',
+            'RtlNtStatusToDosError', 'RtlNumberGenericTableElements', 'RtlNumberOfClearBits',
+            'RtlNumberOfSetBits', 'RtlOemStringToUnicodeSize', 'RtlOemStringToUnicodeString',
+            'RtlOemToUnicodeN', 'RtlOnMappedStreamEvent', 'RtlOpenCurrentUser',
+            'RtlPcToFileHeader', 'RtlPinAtomInAtomTable', 'RtlpNtCreateKey',
+            'RtlpNtEnumerateSubKey', 'RtlpNtMakeTemporaryKey', 'RtlpNtOpenKey',
+            'RtlpNtQueryValueKey', 'RtlpNtSetValueKey', 'RtlPrefixString',
+            'RtlPrefixUnicodeString', 'RtlPropertySetNameToGuid', 'RtlProtectHeap',
+            'RtlpUnWaitCriticalSection', 'RtlpWaitForCriticalSection', 'RtlQueryAtomInAtomTable',
+            'RtlQueryEnvironmentVariable_U', 'RtlQueryInformationAcl',
+            'RtlQueryProcessBackTraceInformation', 'RtlQueryProcessDebugInformation',
+            'RtlQueryProcessHeapInformation', 'RtlQueryProcessLockInformation',
+            'RtlQueryProperties', 'RtlQueryPropertyNames', 'RtlQueryPropertySet',
+            'RtlQueryRegistryValues', 'RtlQuerySecurityObject', 'RtlQueryTagHeap',
+            'RtlQueryTimeZoneInformation', 'RtlRaiseException', 'RtlRaiseStatus', 'RtlRandom',
+            'RtlReAllocateHeap', 'RtlRealPredecessor', 'RtlRealSuccessor', 'RtlReleasePebLock',
+            'RtlReleaseResource', 'RtlRemoteCall', 'RtlResetRtlTranslations',
+            'RtlRunDecodeUnicodeString', 'RtlRunEncodeUnicodeString', 'RtlSecondsSince1970ToTime',
+            'RtlSecondsSince1980ToTime', 'RtlSelfRelativeToAbsoluteSD', 'RtlSetAllBits',
+            'RtlSetAttributesSecurityDescriptor', 'RtlSetBits', 'RtlSetCriticalSectionSpinCount',
+            'RtlSetCurrentDirectory_U', 'RtlSetCurrentEnvironment', 'RtlSetDaclSecurityDescriptor',
+            'RtlSetEnvironmentVariable', 'RtlSetGroupSecurityDescriptor', 'RtlSetInformationAcl',
+            'RtlSetOwnerSecurityDescriptor', 'RtlSetProperties', 'RtlSetPropertyNames',
+            'RtlSetPropertySetClassId', 'RtlSetSaclSecurityDescriptor', 'RtlSetSecurityObject',
+            'RtlSetTimeZoneInformation', 'RtlSetUnicodeCallouts', 'RtlSetUserFlagsHeap',
+            'RtlSetUserValueHeap', 'RtlSizeHeap', 'RtlSplay', 'RtlStartRXact',
+            'RtlSubAuthorityCountSid', 'RtlSubAuthoritySid', 'RtlSubtreePredecessor',
+            'RtlSubtreeSuccessor', 'RtlSystemTimeToLocalTime', 'RtlTimeFieldsToTime',
+            'RtlTimeToElapsedTimeFields', 'RtlTimeToSecondsSince1970', 'RtlTimeToSecondsSince1980',
+            'RtlTimeToTimeFields', 'RtlTryEnterCriticalSection', 'RtlUnicodeStringToAnsiSize',
+            'RtlUnicodeStringToAnsiString', 'RtlUnicodeStringToCountedOemString',
+            'RtlUnicodeStringToInteger', 'RtlUnicodeStringToOemSize',
+            'RtlUnicodeStringToOemString', 'RtlUnicodeToCustomCPN', 'RtlUnicodeToMultiByteN',
+            'RtlUnicodeToMultiByteSize', 'RtlUnicodeToOemN', 'RtlUniform', 'RtlUnlockHeap',
+            'RtlUnwind', 'RtlUpcaseUnicodeChar', 'RtlUpcaseUnicodeString',
+            'RtlUpcaseUnicodeStringToAnsiString', 'RtlUpcaseUnicodeStringToCountedOemString',
+            'RtlUpcaseUnicodeStringToOemString', 'RtlUpcaseUnicodeToCustomCPN',
+            'RtlUpcaseUnicodeToMultiByteN', 'RtlUpcaseUnicodeToOemN', 'RtlUpperChar',
+            'RtlUpperString', 'RtlUsageHeap', 'RtlValidAcl', 'RtlValidateHeap',
+            'RtlValidateProcessHeaps', 'RtlValidSecurityDescriptor', 'RtlValidSid', 'RtlWalkHeap',
+            'RtlWriteRegistryValue', 'RtlxAnsiStringToUnicodeSize', 'RtlxOemStringToUnicodeSize',
+            'RtlxUnicodeStringToAnsiSize', 'RtlxUnicodeStringToOemSize', 'RtlZeroHeap',
+            'RtlZeroMemory',
+
+            'NtCancelTimer', 'ZwCancelTimer', 'NtCreateTimer', 'ZwCreateTimer', 'NtGetTickCount',
+            'ZwGetTickCount', 'NtOpenTimer', 'ZwOpenTimer', 'NtQueryPerformanceCounter',
+            'ZwQueryPerformanceCounter', 'NtQuerySystemTime', 'ZwQuerySystemTime', 'NtQueryTimer',
+            'ZwQueryTimer', 'NtQueryTimerResolution', 'ZwQueryTimerResolution', 'NtSetSystemTime',
+            'ZwSetSystemTime', 'NtSetTimer', 'ZwSetTimer', 'NtSetTimerResolution',
+            'ZwSetTimerResolution',
+
+            'NtClearEvent', 'ZwClearEvent', 'NtCreateEvent', 'ZwCreateEvent', 'NtCreateEventPair',
+            'ZwCreateEventPair', 'NtCreateMutant', 'ZwCreateMutant', 'NtCreateSemaphore',
+            'ZwCreateSemaphore', 'NtOpenEvent', 'ZwOpenEvent', 'NtOpenEventPair',
+            'ZwOpenEventPair', 'NtOpenMutant', 'ZwOpenMutant', 'NtOpenSemaphore',
+            'ZwOpenSemaphore', 'NtPulseEvent', 'ZwPulseEvent', 'NtQueryEvent', 'ZwQueryEvent',
+            'NtQueryMutant', 'ZwQueryMutant', 'NtQuerySemaphore', 'ZwQuerySemaphore',
+            'NtReleaseMutant', 'ZwReleaseMutant', 'NtReleaseProcessMutant',
+            'ZwReleaseProcessMutant', 'NtReleaseSemaphore', 'ZwReleaseSemaphore',
+            'NtReleaseThreadMutant', 'ZwReleaseThreadMutant', 'NtResetEvent', 'ZwResetEvent',
+            'NtSetEvent', 'ZwSetEvent', 'NtSetHighEventPair', 'ZwSetHighEventPair',
+            'NtSetHighWaitLowEventPair', 'ZwSetHighWaitLowEventPair', 'NtSetLowEventPair',
+            'ZwSetLowEventPair', 'NtSetLowWaitHighEventPair', 'ZwSetLowWaitHighEventPair',
+            'NtSignalAndWaitForSingleObject', 'ZwSignalAndWaitForSingleObject',
+            'NtWaitForMultipleObjects', 'ZwWaitForMultipleObjects', 'NtWaitForSingleObject',
+            'ZwWaitForSingleObject', 'NtWaitHighEventPair', 'ZwWaitHighEventPair',
+            'NtWaitLowEventPair', 'ZwWaitLowEventPair',
+
+            'NtClose', 'ZwClose', 'NtCreateDirectoryObject', 'ZwCreateDirectoryObject',
+            'NtCreateSymbolicLinkObject', 'ZwCreateSymbolicLinkObject',
+            'NtDuplicateObject', 'ZwDuplicateObject', 'NtMakeTemporaryObject',
+            'ZwMakeTemporaryObject', 'NtOpenDirectoryObject', 'ZwOpenDirectoryObject',
+            'NtOpenSymbolicLinkObject', 'ZwOpenSymbolicLinkObject', 'NtQueryDirectoryObject',
+            'ZwQueryDirectoryObject', 'NtQueryObject', 'ZwQueryObject',
+            'NtQuerySymbolicLinkObject', 'ZwQuerySymbolicLinkObject', 'NtSetInformationObject',
+            'ZwSetInformationObject',
+
+            'NtContinue', 'ZwContinue', 'NtRaiseException', 'ZwRaiseException',
+            'NtRaiseHardError', 'ZwRaiseHardError', 'NtSetDefaultHardErrorPort',
+            'ZwSetDefaultHardErrorPort',
+
+            'NtCreateChannel', 'ZwCreateChannel', 'NtListenChannel', 'ZwListenChannel',
+            'NtOpenChannel', 'ZwOpenChannel', 'NtReplyWaitSendChannel', 'ZwReplyWaitSendChannel',
+            'NtSendWaitReplyChannel', 'ZwSendWaitReplyChannel', 'NtSetContextChannel',
+            'ZwSetContextChannel',
+
+            'NtCreateKey', 'ZwCreateKey', 'NtDeleteKey', 'ZwDeleteKey', 'NtDeleteValueKey',
+            'ZwDeleteValueKey', 'NtEnumerateKey', 'ZwEnumerateKey', 'NtEnumerateValueKey',
+            'ZwEnumerateValueKey', 'NtFlushKey', 'ZwFlushKey', 'NtInitializeRegistry',
+            'ZwInitializeRegistry', 'NtLoadKey', 'ZwLoadKey', 'NtLoadKey2', 'ZwLoadKey2',
+            'NtNotifyChangeKey', 'ZwNotifyChangeKey', 'NtOpenKey', 'ZwOpenKey', 'NtQueryKey',
+            'ZwQueryKey', 'NtQueryMultipleValueKey', 'ZwQueryMultipleValueKey',
+            'NtQueryMultiplValueKey', 'ZwQueryMultiplValueKey', 'NtQueryValueKey',
+            'ZwQueryValueKey', 'NtReplaceKey', 'ZwReplaceKey', 'NtRestoreKey', 'ZwRestoreKey',
+            'NtSaveKey', 'ZwSaveKey', 'NtSetInformationKey', 'ZwSetInformationKey',
+            'NtSetValueKey', 'ZwSetValueKey', 'NtUnloadKey', 'ZwUnloadKey',
+
+            'NtCreateMailslotFile', 'ZwCreateMailslotFile', 'NtCreateNamedPipeFile',
+            'ZwCreateNamedPipeFile', 'NtCreatePagingFile', 'ZwCreatePagingFile',
+
+            'NtCreateProfile', 'ZwCreateProfile', 'NtQueryIntervalProfile',
+            'ZwQueryIntervalProfile', 'NtRegisterThreadTerminatePort',
+            'ZwRegisterThreadTerminatePort', 'NtSetIntervalProfile', 'ZwSetIntervalProfile',
+            'NtStartProfile', 'ZwStartProfile', 'NtStopProfile', 'ZwStopProfile',
+            'NtSystemDebugControl', 'ZwSystemDebugControl',
+
+            'NtEnumerateBus', 'ZwEnumerateBus', 'NtFlushInstructionCache',
+            'ZwFlushInstructionCache', 'NtFlushWriteBuffer', 'ZwFlushWriteBuffer',
+            'NtSetLdtEntries', 'ZwSetLdtEntries',
+
+            'NtGetPlugPlayEvent', 'ZwGetPlugPlayEvent', 'NtPlugPlayControl', 'ZwPlugPlayControl',
+
+            'NtInitiatePowerAction', 'ZwInitiatePowerAction', 'NtPowerInformation',
+            'ZwPowerInformation', 'NtRequestWakeupLatency', 'ZwRequestWakeupLatency',
+            'NtSetSystemPowerState', 'ZwSetSystemPowerState', 'NtSetThreadExecutionState',
+            'ZwSetThreadExecutionState',
+
+            'NtLoadDriver', 'ZwLoadDriver', 'NtRegisterNewDevice', 'ZwRegisterNewDevice',
+            'NtUnloadDriver', 'ZwUnloadDriver',
+
+            'NtQueryDefaultLocale', 'ZwQueryDefaultLocale', 'NtQueryDefaultUILanguage',
+            'ZwQueryDefaultUILanguage', 'NtQuerySystemEnvironmentValue',
+            'ZwQuerySystemEnvironmentValue', 'NtSetDefaultLocale', 'ZwSetDefaultLocale',
+            'NtSetDefaultUILanguage', 'ZwSetDefaultUILanguage', 'NtSetSystemEnvironmentValue',
+            'ZwSetSystemEnvironmentValue',
+
+            'DbgBreakPoint', 'DbgPrint', 'DbgPrompt', 'DbgSsHandleKmApiMsg', 'DbgSsInitialize',
+            'DbgUiConnectToDbg', 'DbgUiContinue', 'DbgUiWaitStateChange', 'DbgUserBreakPoint',
+            'KiRaiseUserExceptionDispatcher', 'KiUserApcDispatcher', 'KiUserCallbackDispatcher',
+            'KiUserExceptionDispatcher', 'NlsAnsiCodePage', 'NlsMbCodePageTag',
+            'NlsMbOemCodePageTag', 'NtAllocateLocallyUniqueId', 'ZwAllocateLocallyUniqueId',
+            'NtAllocateUuids', 'ZwAllocateUuids', 'NtCallbackReturn', 'ZwCallbackReturn',
+            'NtDisplayString', 'ZwDisplayString', 'NtQueryOleDirectoryFile',
+            'ZwQueryOleDirectoryFile', 'NtQuerySection', 'ZwQuerySection',
+            'NtQuerySystemInformation', 'ZwQuerySystemInformation', 'NtSetSystemInformation',
+            'ZwSetSystemInformation', 'NtShutdownSystem', 'ZwShutdownSystem', 'NtVdmControl',
+            'ZwVdmControl', 'NtW32Call', 'ZwW32Call', 'PfxFindPrefix', 'PfxInitialize',
+            'PfxInsertPrefix', 'PfxRemovePrefix', 'PropertyLengthAsVariant', 'RestoreEm87Context',
+            'SaveEm87Context'
+            )
+        ),
+    'SYMBOLS' => array(
+        0 => array('(', ')', '{', '}', '[', ']'),
+        1 => array('<', '>','='),
+        2 => array('+', '-', '*', '/', '%'),
+        3 => array('!', '^', '&', '|'),
+        4 => array('?', ':', ';')
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => true,
+        2 => true,
+        3 => true,
+        4 => true,
+        5 => true,
+        6 => true
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #0000ff;',
+            2 => 'color: #0000ff;',
+            3 => 'color: #0000dd;',
+            4 => 'color: #0000ff;',
+            5 => 'color: #4000dd;',
+            6 => 'color: #4000dd;'
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #666666;',
+            2 => 'color: #339900;',
+            3 => 'color: #FF0000;',
+            4 => 'color: #FF0000;',
+            'MULTI' => 'color: #ff0000; font-style: italic;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #000099; font-weight: bold;',
+            1 => 'color: #000099; font-weight: bold;',
+            2 => 'color: #660099; font-weight: bold;',
+            3 => 'color: #660099; font-weight: bold;',
+            4 => 'color: #660099; font-weight: bold;',
+            5 => 'color: #006699; font-weight: bold;',
+            'HARD' => '',
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #008000;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #FF0000;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #0000dd;',
+            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
+            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
+            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
+            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
+            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
+            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
+            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
+            ),
+        'METHODS' => array(
+            1 => 'color: #007788;',
+            2 => 'color: #007788;'
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #008000;',
+            1 => 'color: #000080;',
+            2 => 'color: #000040;',
+            3 => 'color: #000040;',
+            4 => 'color: #008080;'
+            ),
+        'REGEXPS' => array(
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => '',
+        5 => 'http://www.google.com/search?q={FNAMEL}+msdn.microsoft.com',
+        6 => 'http://www.google.com/search?q={FNAMEL}+msdn.microsoft.com'
+        ),
+    'OOLANG' => true,
+    'OBJECT_SPLITTERS' => array(
+        1 => '.',
+        2 => '::'
+        ),
+    'REGEXPS' => array(
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'TAB_WIDTH' => 4,
+    'PARSER_CONTROL' => array(
+        'KEYWORDS' => array(
+            'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\#])",
+            'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_\|%\\-])"
+        )
+    )
+);
diff --git a/inc/geshi/cpp.php b/vendor/easybook/geshi/geshi/cpp.php
old mode 100644
new mode 100755
similarity index 96%
rename from inc/geshi/cpp.php
rename to vendor/easybook/geshi/geshi/cpp.php
index 42ab311cc534202e3e2d56a98d7630cb320b68da..52e4be6ea1619334e1a7ada135b02eb5cfd8fa82
--- a/inc/geshi/cpp.php
+++ b/vendor/easybook/geshi/geshi/cpp.php
@@ -56,14 +56,18 @@ $language_data = array (
         //Multiline-continued single-line comments
         1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m',
         //Multiline-continued preprocessor define
-        2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m'
+        2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m',
+        //C++ 11 string literal extensions
+        3 => '/(?:L|u8?|U)(?=")/',
+        //C++ 11 string literal extensions (raw)
+        4 => '/R"([^()\s\\\\]*)\((?:(?!\)\\1").)*\)\\1"/ms'
         ),
     'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
     'QUOTEMARKS' => array("'", '"'),
     'ESCAPE_CHAR' => '',
     'ESCAPE_REGEXP' => array(
         //Simple Single Char Escapes
-        1 => "#\\\\[abfnrtv\\\'\"?\n]#i",
+        1 => "#\\\\[abfnrtv\\\'\"?\n]#",
         //Hexadecimal Char Specs
         2 => "#\\\\x[\da-fA-F]{2}#",
         //Hexadecimal Char Specs
@@ -167,6 +171,8 @@ $language_data = array (
         'COMMENTS' => array(
             1 => 'color: #666666;',
             2 => 'color: #339900;',
+            3 => 'color: #FF0000;',
+            4 => 'color: #FF0000;',
             'MULTI' => 'color: #ff0000; font-style: italic;'
             ),
         'ESCAPE_CHAR' => array(
diff --git a/inc/geshi/csharp.php b/vendor/easybook/geshi/geshi/csharp.php
old mode 100644
new mode 100755
similarity index 96%
rename from inc/geshi/csharp.php
rename to vendor/easybook/geshi/geshi/csharp.php
index 26024e91ab12ed89df7beaf35a3097c465f85db1..a73d01d6b435efa263b5607dfc8e19f4b9e73fa0
--- a/inc/geshi/csharp.php
+++ b/vendor/easybook/geshi/geshi/csharp.php
@@ -12,6 +12,8 @@
  *
  * CHANGES
  * -------
+ * 2015/04/14
+ *  -  Added C# 5.0 and 6.0 missing keywords and #pragma directive
  * 2012/06/18 (1.0.8.11)
  *  -  Added missing keywords (Christian Stelzmann)
  * 2009/04/03 (1.0.8.6)
@@ -62,7 +64,8 @@ $language_data = array (
     'ESCAPE_CHAR' => '\\',
     'KEYWORDS' => array(
         1 => array(
-            'abstract', 'add', 'as', 'base', 'break', 'by', 'case', 'catch', 'const', 'continue',
+            'abstract', 'add', 'as', 'async', 'await', 'base',
+            'break', 'by', 'case', 'catch', 'const', 'continue',
             'default', 'do', 'else', 'event', 'explicit', 'extern', 'false',
             'finally', 'fixed', 'for', 'foreach', 'from', 'get', 'goto', 'group', 'if',
             'implicit', 'in', 'into', 'internal', 'join', 'lock', 'namespace', 'null',
@@ -74,10 +77,10 @@ $language_data = array (
             ),
         2 => array(
             '#elif', '#endif', '#endregion', '#else', '#error', '#define', '#if',
-            '#line', '#region', '#undef', '#warning'
+            '#line', '#pragma', '#region', '#undef', '#warning'
             ),
         3 => array(
-            'checked', 'is', 'new', 'sizeof', 'typeof', 'unchecked'
+            'checked', 'is', 'new', 'nameof', 'sizeof', 'typeof', 'unchecked'
             ),
         4 => array(
             'bool', 'byte', 'char', 'class', 'decimal', 'delegate', 'double',
@@ -253,4 +256,4 @@ $language_data = array (
     )
 );
 
-?>
\ No newline at end of file
+?>
diff --git a/inc/geshi/css.php b/vendor/easybook/geshi/geshi/css.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/css.php
rename to vendor/easybook/geshi/geshi/css.php
diff --git a/inc/geshi/cuesheet.php b/vendor/easybook/geshi/geshi/cuesheet.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/cuesheet.php
rename to vendor/easybook/geshi/geshi/cuesheet.php
diff --git a/inc/geshi/d.php b/vendor/easybook/geshi/geshi/d.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/d.php
rename to vendor/easybook/geshi/geshi/d.php
diff --git a/vendor/easybook/geshi/geshi/dart.php b/vendor/easybook/geshi/geshi/dart.php
new file mode 100644
index 0000000000000000000000000000000000000000..932e13e874a72411026dbb1bb8022a3f0b1180bd
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/dart.php
@@ -0,0 +1,159 @@
+<?php
+/*************************************************************************************
+ * dart.php
+ * --------
+ * Author: Edward Hart (edward.dan.hart@gmail.com)
+ * Copyright: (c) 2013 Edward Hart
+ * Release Version: 1.0.8.12
+ * Date Started: 2013/10/25
+ *
+ * Dart language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2013/10/25
+ *   -  First Release
+ *
+ * TODO (updated 2013/10/25)
+ * -------------------------
+ *   -  Highlight standard library types.
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array(
+    'LANG_NAME' => 'Dart',
+
+    'COMMENT_SINGLE' => array('//'),
+    'COMMENT_MULTI' => array('/*' => '*/'),
+    'COMMENT_REGEXP' => array(),
+
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '',
+    'ESCAPE_REGEXP' => array(
+        //Simple Single Char Escapes
+        1 => "#\\\\[\\\\nrfbtv\'\"?\n]#i",
+        //Hexadecimal Char Specs
+        2 => "#\\\\x[\da-fA-F]{2}#",
+        //Hexadecimal Char Specs
+        3 => "#\\\\u[\da-fA-F]{4}#",
+        4 => "#\\\\u\\{[\da-fA-F]*\\}#"
+        ),
+    'NUMBERS' =>
+        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE |
+        GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
+        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
+
+    'KEYWORDS' => array(
+        1 => array(
+            'abstract', 'as', 'assert', 'break', 'case', 'catch', 'class',
+            'const', 'continue', 'default', 'do', 'dynamic', 'else', 'export',
+            'extends', 'external', 'factory', 'false', 'final', 'finally',
+            'for', 'get', 'if', 'implements', 'import', 'in', 'is', 'library',
+            'new', 'null', 'operator', 'part', 'return', 'set', 'static',
+            'super', 'switch', 'this', 'throw', 'true', 'try', 'typedef', 'var',
+            'while', 'with'
+            ),
+        2 => array(
+            'double', 'bool', 'int', 'num', 'void'
+            ),
+        ),
+
+    'SYMBOLS' => array(
+        0 => array('(', ')', '{', '}', '[', ']'),
+        1 => array('+', '-', '*', '/', '%', '~'),
+        2 => array('&', '|', '^'),
+        3 => array('=', '!', '<', '>'),
+        4 => array('?', ':'),
+        5 => array('..'),
+        6 => array(';', ',')
+        ),
+
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => true,
+        2 => true,
+        ),
+
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'font-weight: bold;',
+            2 => 'color: #445588; font-weight: bold;'
+            ),
+        'COMMENTS' => array(
+            0 => 'color: #999988; font-style: italic;',
+            'MULTI' => 'color: #999988; font-style: italic;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #000099; font-weight: bold;',
+            1 => 'color: #000099; font-weight: bold;',
+            2 => 'color: #660099; font-weight: bold;',
+            3 => 'color: #660099; font-weight: bold;',
+            4 => 'color: #660099; font-weight: bold;',
+            5 => 'color: #006699; font-weight: bold;',
+            'HARD' => ''
+            ),
+        'STRINGS' => array(
+            0 => 'color: #d14;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #009999;',
+            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
+            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
+            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
+            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
+            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
+            ),
+        'BRACKETS' => array(''),
+        'METHODS' => array(
+            1 => 'color: #006633;'
+            ),
+        'SYMBOLS' => array(
+            0 => 'font-weight: bold;',
+            1 => 'font-weight: bold;',
+            2 => 'font-weight: bold;',
+            3 => 'font-weight: bold;',
+            4 => 'font-weight: bold;',
+            5 => 'font-weight: bold;',
+            6 => 'font-weight: bold;'
+            ),
+        'REGEXPS' => array(
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => ''
+        ),
+    'OOLANG' => true,
+    'OBJECT_SPLITTERS' => array(
+        1 => '.'
+        ),
+    'REGEXPS' => array(
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'TAB_WIDTH' => 4
+);
diff --git a/inc/geshi/dcl.php b/vendor/easybook/geshi/geshi/dcl.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/dcl.php
rename to vendor/easybook/geshi/geshi/dcl.php
diff --git a/inc/geshi/dcpu16.php b/vendor/easybook/geshi/geshi/dcpu16.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/dcpu16.php
rename to vendor/easybook/geshi/geshi/dcpu16.php
diff --git a/inc/geshi/dcs.php b/vendor/easybook/geshi/geshi/dcs.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/dcs.php
rename to vendor/easybook/geshi/geshi/dcs.php
diff --git a/inc/geshi/delphi.php b/vendor/easybook/geshi/geshi/delphi.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/delphi.php
rename to vendor/easybook/geshi/geshi/delphi.php
index d5596e0cd047f738cd7d508a9aeed79f8a70867d..34d0fd7bffbfae98662fc4069ed420fafc767863
--- a/inc/geshi/delphi.php
+++ b/vendor/easybook/geshi/geshi/delphi.php
@@ -297,5 +297,3 @@ $language_data = array (
             )
         )
 );
-
-?>
diff --git a/inc/geshi/diff.php b/vendor/easybook/geshi/geshi/diff.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/diff.php
rename to vendor/easybook/geshi/geshi/diff.php
diff --git a/inc/geshi/div.php b/vendor/easybook/geshi/geshi/div.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/div.php
rename to vendor/easybook/geshi/geshi/div.php
index aa11795ac8313e743b2835b179a64e99891b1b23..fb8a72a16e26a259a180962b789accc1e8fadc18
--- a/inc/geshi/div.php
+++ b/vendor/easybook/geshi/geshi/div.php
@@ -122,5 +122,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/dos.php b/vendor/easybook/geshi/geshi/dos.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/dos.php
rename to vendor/easybook/geshi/geshi/dos.php
diff --git a/inc/geshi/dot.php b/vendor/easybook/geshi/geshi/dot.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/dot.php
rename to vendor/easybook/geshi/geshi/dot.php
diff --git a/inc/geshi/e.php b/vendor/easybook/geshi/geshi/e.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/e.php
rename to vendor/easybook/geshi/geshi/e.php
diff --git a/inc/geshi/ecmascript.php b/vendor/easybook/geshi/geshi/ecmascript.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/ecmascript.php
rename to vendor/easybook/geshi/geshi/ecmascript.php
diff --git a/inc/geshi/eiffel.php b/vendor/easybook/geshi/geshi/eiffel.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/eiffel.php
rename to vendor/easybook/geshi/geshi/eiffel.php
index baa13c31900553906951eb3db9941d19c5bace27..807d23f944e7acab772ab701873eb4713d08882e
--- a/inc/geshi/eiffel.php
+++ b/vendor/easybook/geshi/geshi/eiffel.php
@@ -391,5 +391,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/email.php b/vendor/easybook/geshi/geshi/email.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/email.php
rename to vendor/easybook/geshi/geshi/email.php
diff --git a/inc/geshi/epc.php b/vendor/easybook/geshi/geshi/epc.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/epc.php
rename to vendor/easybook/geshi/geshi/epc.php
diff --git a/inc/geshi/erlang.php b/vendor/easybook/geshi/geshi/erlang.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/erlang.php
rename to vendor/easybook/geshi/geshi/erlang.php
diff --git a/inc/geshi/euphoria.php b/vendor/easybook/geshi/geshi/euphoria.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/euphoria.php
rename to vendor/easybook/geshi/geshi/euphoria.php
diff --git a/vendor/easybook/geshi/geshi/ezt.php b/vendor/easybook/geshi/geshi/ezt.php
new file mode 100644
index 0000000000000000000000000000000000000000..74d8d520456c6bae99416ae4a597982281aa1f81
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/ezt.php
@@ -0,0 +1,134 @@
+<?php
+/*************************************************************************************
+ * ezt.php
+ * -----------
+ * Author: Ramesh Vishveshwar (ramesh.vishveshwar@gmail.com)
+ * Copyright: (c) 2012 Ramesh Vishveshwar (http://thecodeisclear.in)
+ * Release Version: 1.0.8.11
+ * Date Started: 2012/09/01
+ *
+ * Easytrieve language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2012/09/22 (1.0.0)
+ *   - First Release
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'EZT',
+    'COMMENT_SINGLE' => array(),
+    'COMMENT_MULTI' => array(),
+    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
+    'COMMENT_REGEXP' => array(
+        // First character of the line is an asterisk. Rest of the line is spaces/null
+        0 => '/\*(\s|\D)?(\n)/',
+        // Asterisk followed by any character & then a non numeric character.
+        // This is to prevent expressions such as 25 * 4 from being marked as a comment
+        // Note: 25*4 - 100 will mark *4 - 100 as a comment. Pls. space out expressions
+        // In any case, 25*4 will result in an Easytrieve error
+        1 => '/\*.([^0-9\n])+.*(\n)/'
+        ),
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '',
+    'KEYWORDS' => array(
+        1 => array(
+            'CONTROL','DEFINE','DISPLAY','DO','ELSE','END-DO','END-IF',
+            'END-PROC','FILE','GET','GOTO','HEADING','IF','JOB','LINE',
+            'PARM','PERFORM','POINT','PRINT','PROC','PUT','READ','RECORD',
+            'REPORT','RETRIEVE','SEARCH','SELECT','SEQUENCE','SORT','STOP',
+            'TITLE','WRITE'
+            ),
+        // Procedure Keywords (Names of specific procedures)
+        2 => array (
+            'AFTER-BREAK','AFTER-LINE','BEFORE-BREAK','BEFORE-LINE',
+            'ENDPAGE','REPORT-INPUT','TERMINATION',
+            ),
+        // Macro names, Parameters
+        3 => array (
+            'COMPILE','CONCAT','DESC','GETDATE','MASK','PUNCH',
+            'VALUE','SYNTAX','NEWPAGE','SKIP','COL','TALLY',
+            'WITH'
+            )
+        ),
+    'SYMBOLS' => array(
+        '(',')','=','&',',','*','>','<','%'
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false
+        //4 => false,
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #FF0000;',
+            2 => 'color: #21A502;',
+            3 => 'color: #FF00FF;'
+            ),
+        'COMMENTS' => array(
+            0 => 'color: #0000FF; font-style: italic;',
+            1 => 'color: #0000FF; font-style: italic;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => ''
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #FF7400;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #66CC66;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #736205;'
+            ),
+        'METHODS' => array(
+            1 => '',
+            2 => ''
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #FF7400;'
+            ),
+        'REGEXPS' => array(
+            0 => 'color: #E01B6A;'
+            ),
+        'SCRIPT' => array(
+            0 => ''
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => ''
+        ),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(),
+    'REGEXPS' => array(
+        // We are trying to highlight Macro names here which preceded by %
+        0 => '(%)([a-zA-Z0-9])+(\s|\n)'
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array()
+);
diff --git a/inc/geshi/f1.php b/vendor/easybook/geshi/geshi/f1.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/f1.php
rename to vendor/easybook/geshi/geshi/f1.php
diff --git a/inc/geshi/falcon.php b/vendor/easybook/geshi/geshi/falcon.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/falcon.php
rename to vendor/easybook/geshi/geshi/falcon.php
diff --git a/inc/geshi/fo.php b/vendor/easybook/geshi/geshi/fo.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/fo.php
rename to vendor/easybook/geshi/geshi/fo.php
diff --git a/inc/geshi/fortran.php b/vendor/easybook/geshi/geshi/fortran.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/fortran.php
rename to vendor/easybook/geshi/geshi/fortran.php
index c21ccd19274e740c8fd2a20df69eb69523742ad7..a77b6e7faebcef7ee84361035c4b44eb6440efa0
--- a/inc/geshi/fortran.php
+++ b/vendor/easybook/geshi/geshi/fortran.php
@@ -156,5 +156,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK'=> array(
         )
 );
-
-?>
diff --git a/inc/geshi/freebasic.php b/vendor/easybook/geshi/geshi/freebasic.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/freebasic.php
rename to vendor/easybook/geshi/geshi/freebasic.php
index b23f39bc7686f1bde75e5a20db4af4ffc83b50bd..c5426449664b9fa706647ca20e066c0deaebb980
--- a/inc/geshi/freebasic.php
+++ b/vendor/easybook/geshi/geshi/freebasic.php
@@ -137,5 +137,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/freeswitch.php b/vendor/easybook/geshi/geshi/freeswitch.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/freeswitch.php
rename to vendor/easybook/geshi/geshi/freeswitch.php
index c6fff2767e1d359437453d560a7fd589b5a74cae..5412e6d69fec2ebdafaf7f74f739fccf2bf37cec
--- a/inc/geshi/freeswitch.php
+++ b/vendor/easybook/geshi/geshi/freeswitch.php
@@ -164,5 +164,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/fsharp.php b/vendor/easybook/geshi/geshi/fsharp.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/fsharp.php
rename to vendor/easybook/geshi/geshi/fsharp.php
diff --git a/inc/geshi/gambas.php b/vendor/easybook/geshi/geshi/gambas.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/gambas.php
rename to vendor/easybook/geshi/geshi/gambas.php
diff --git a/inc/geshi/gdb.php b/vendor/easybook/geshi/geshi/gdb.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/gdb.php
rename to vendor/easybook/geshi/geshi/gdb.php
index 0a5e32c303e30ef3ba076d0849b22e397a3afcfa..9f63d25b0951c999dc318d6c801dcce53b22420d
--- a/inc/geshi/gdb.php
+++ b/vendor/easybook/geshi/geshi/gdb.php
@@ -194,5 +194,3 @@ $language_data = array (
 );
 
 // kate: replace-tabs on; indent-width 4;
-
-?>
diff --git a/inc/geshi/genero.php b/vendor/easybook/geshi/geshi/genero.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/genero.php
rename to vendor/easybook/geshi/geshi/genero.php
index e1b20b3e8007224b84e6ff69202fb1ef13337c4b..2ab24855f469f4e00725d29be7066d08ef923f72
--- a/inc/geshi/genero.php
+++ b/vendor/easybook/geshi/geshi/genero.php
@@ -459,5 +459,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/genie.php b/vendor/easybook/geshi/geshi/genie.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/genie.php
rename to vendor/easybook/geshi/geshi/genie.php
index db05ec062647a43c92f615d716d05fa070326da4..3bab1b7b773cb8e0aac6b1882d1ab233c14ef931
--- a/inc/geshi/genie.php
+++ b/vendor/easybook/geshi/geshi/genie.php
@@ -153,5 +153,3 @@ $language_data = array (
         )
     )
 );
-
-?>
diff --git a/inc/geshi/gettext.php b/vendor/easybook/geshi/geshi/gettext.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/gettext.php
rename to vendor/easybook/geshi/geshi/gettext.php
index 80b531c109bc2b3416b19efd68b9d4f3294a846d..eb928bf6cbae57d2213e9ea62fbfe510a3d414fc
--- a/inc/geshi/gettext.php
+++ b/vendor/easybook/geshi/geshi/gettext.php
@@ -93,5 +93,3 @@ $language_data = array (
         ),
     'TAB_WIDTH' => 4,
 );
-
-?>
diff --git a/inc/geshi/glsl.php b/vendor/easybook/geshi/geshi/glsl.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/glsl.php
rename to vendor/easybook/geshi/geshi/glsl.php
diff --git a/inc/geshi/gml.php b/vendor/easybook/geshi/geshi/gml.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/gml.php
rename to vendor/easybook/geshi/geshi/gml.php
index 999251b223bf850940a96c002a4179e67a8ac00f..58387b38af3068f6195fdc7c1be252e438cce722
--- a/inc/geshi/gml.php
+++ b/vendor/easybook/geshi/geshi/gml.php
@@ -502,5 +502,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/gnuplot.php b/vendor/easybook/geshi/geshi/gnuplot.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/gnuplot.php
rename to vendor/easybook/geshi/geshi/gnuplot.php
diff --git a/inc/geshi/go.php b/vendor/easybook/geshi/geshi/go.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/go.php
rename to vendor/easybook/geshi/geshi/go.php
diff --git a/inc/geshi/groovy.php b/vendor/easybook/geshi/geshi/groovy.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/groovy.php
rename to vendor/easybook/geshi/geshi/groovy.php
diff --git a/inc/geshi/gwbasic.php b/vendor/easybook/geshi/geshi/gwbasic.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/gwbasic.php
rename to vendor/easybook/geshi/geshi/gwbasic.php
diff --git a/inc/geshi/haskell.php b/vendor/easybook/geshi/geshi/haskell.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/haskell.php
rename to vendor/easybook/geshi/geshi/haskell.php
diff --git a/inc/geshi/haxe.php b/vendor/easybook/geshi/geshi/haxe.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/haxe.php
rename to vendor/easybook/geshi/geshi/haxe.php
diff --git a/inc/geshi/hicest.php b/vendor/easybook/geshi/geshi/hicest.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/hicest.php
rename to vendor/easybook/geshi/geshi/hicest.php
diff --git a/inc/geshi/hq9plus.php b/vendor/easybook/geshi/geshi/hq9plus.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/hq9plus.php
rename to vendor/easybook/geshi/geshi/hq9plus.php
index 7ba1a73c1c25f788b98ebc9ec345f47139d000a7..5b62589cc47f9f204e9a8ff707bcd0b6d9744700
--- a/inc/geshi/hq9plus.php
+++ b/vendor/easybook/geshi/geshi/hq9plus.php
@@ -100,5 +100,3 @@ $language_data = array (
             )
         )
 );
-
-?>
diff --git a/inc/geshi/html4strict.php b/vendor/easybook/geshi/geshi/html4strict.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/html4strict.php
rename to vendor/easybook/geshi/geshi/html4strict.php
diff --git a/inc/geshi/html5.php b/vendor/easybook/geshi/geshi/html5.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/html5.php
rename to vendor/easybook/geshi/geshi/html5.php
diff --git a/inc/geshi/icon.php b/vendor/easybook/geshi/geshi/icon.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/icon.php
rename to vendor/easybook/geshi/geshi/icon.php
diff --git a/inc/geshi/idl.php b/vendor/easybook/geshi/geshi/idl.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/idl.php
rename to vendor/easybook/geshi/geshi/idl.php
index 69bd14ff4fedb4694ba25e3e14ad908ec684f451..a2b6f57e1c5f68b775033adc7728e46f33a58a5f
--- a/inc/geshi/idl.php
+++ b/vendor/easybook/geshi/geshi/idl.php
@@ -119,5 +119,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/ini.php b/vendor/easybook/geshi/geshi/ini.php
old mode 100644
new mode 100755
similarity index 97%
rename from inc/geshi/ini.php
rename to vendor/easybook/geshi/geshi/ini.php
index 8e6ca76dbd08bbb1bd13d8bfd880bb9dc49905fb..f0a8edeaa7020fd805517b682d35253b3fddf0a5
--- a/inc/geshi/ini.php
+++ b/vendor/easybook/geshi/geshi/ini.php
@@ -44,8 +44,9 @@
 
 $language_data = array (
     'LANG_NAME' => 'INI',
-    'COMMENT_SINGLE' => array(0 => ';'),
+    'COMMENT_SINGLE' => array(),
     'COMMENT_MULTI' => array(),
+    'COMMENT_REGEXP' => array(0 => '/^\s*;.*?$/m'),
     'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
     'QUOTEMARKS' => array('"'),
     'ESCAPE_CHAR' => '',
@@ -124,5 +125,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/inno.php b/vendor/easybook/geshi/geshi/inno.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/inno.php
rename to vendor/easybook/geshi/geshi/inno.php
index 1e2ee8befbdb890e7d348c6e1205da47294508bb..192054cf1b1d611e904621ad699cdf4851322357
--- a/inc/geshi/inno.php
+++ b/vendor/easybook/geshi/geshi/inno.php
@@ -208,5 +208,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/intercal.php b/vendor/easybook/geshi/geshi/intercal.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/intercal.php
rename to vendor/easybook/geshi/geshi/intercal.php
diff --git a/inc/geshi/io.php b/vendor/easybook/geshi/geshi/io.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/io.php
rename to vendor/easybook/geshi/geshi/io.php
index 51fad43a715ee17d058ea5fb1b441d45b0642777..d23984e8f518bee01990ada35aac8ce99d420878
--- a/inc/geshi/io.php
+++ b/vendor/easybook/geshi/geshi/io.php
@@ -134,5 +134,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/vendor/easybook/geshi/geshi/ispfpanel.php b/vendor/easybook/geshi/geshi/ispfpanel.php
new file mode 100644
index 0000000000000000000000000000000000000000..c02897850112c2eb5d4c559e844beb16a8ce21f9
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/ispfpanel.php
@@ -0,0 +1,165 @@
+<?php
+/*************************************************************************************
+ * ispfpanel.php
+ * -------------
+ * Author: Ramesh Vishveshwar (ramesh.vishveshwar@gmail.com)
+ * Copyright: (c) 2012 Ramesh Vishveshwar (http://thecodeisclear.in)
+ * Release Version: 1.0.8.11
+ * Date Started: 2012/09/18
+ *
+ * ISPF Panel Definition (MVS) language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2011/09/22 (1.0.0)
+ *   -  First Release
+ *
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'ISPF Panel',
+    'COMMENT_SINGLE' => array(),
+    'COMMENT_MULTI' => array('/*' => '*/'),
+    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '',
+    'KEYWORDS' => array(
+        // Panel Definition Statements
+        1 => array(
+            ')CCSID',')PANEL',')ATTR',')ABC',')ABCINIT',')ABCPROC',')BODY',')MODEL',
+            ')AREA',')INIT',')REINIT',')PROC',')FIELD',')HELP',')LIST',')PNTS',')END'
+            ),
+        // File-Tailoring Skeletons
+        2 => array (
+            ')DEFAULT',')BLANK', ')CM', ')DO', ')DOT', ')ELSE', ')ENDSEL',
+            ')ENDDO', ')ENDDOT', ')IF', ')IM', ')ITERATE', ')LEAVE', ')NOP', ')SEL',
+            ')SET', ')TB', ')TBA'
+            ),
+        // Control Variables
+        3 => array (
+            '.ALARM','.ATTR','.ATTRCHAR','.AUTOSEL','.CSRPOS','.CSRROW','.CURSOR','.HELP',
+            '.HHELP','.KANA','.MSG','.NRET','.PFKEY','.RESP','.TRAIL','.ZVARS'
+            ),
+        // Keywords
+        4 => array (
+            'WINDOW','ALARM','ATTN','BARRIER','HILITE','CAPS',
+            'CKBOX','CLEAR','CMD','COLOR','COMBO','CSRGRP','CUADYN',
+            'SKIP','INTENS','AREA','EXTEND',
+            'DESC','ASIS','VGET','VPUT','JUST','BATSCRD','BATSCRW',
+            'BDBCS','BDISPMAX','BIT','BKGRND','BREDIMAX','PAD','PADC',
+            'PAS','CHINESES','CHINESET','DANISH','DATAMOD','DDLIST',
+            'DEPTH','DUMP','ENGLISH','ERROR','EXIT','EXPAND','FIELD',
+            'FORMAT','FRENCH','GE','GERMAN','IMAGE','IND','TYPE',
+            'ITALIAN','JAPANESE','KOREAN','LCOL','LEN','LIND','LISTBOX',
+            'MODE','NEST','NOJUMP','NOKANA','NUMERIC','OUTLINE','PARM',
+            'PGM','PORTUGESE','RADIO','RCOL','REP','RIND','ROWS',
+            'SCALE','SCROLL','SFIHDR','SGERMAN','SIND','SPANISH',
+            'UPPERENG','WIDTH'
+            ),
+        // Parameters
+        5 => array (
+            'ADDPOP','ALPHA','ALPHAB','DYNAMIC','SCRL',
+            'CCSID','COMMAND','DSNAME','DSNAMEF','DSNAMEFM',
+            'DSNAMEPQ','DSNAMEQ','EBCDIC','ENBLDUMP','ENUM',// 'EXTEND',
+            'FI','FILEID','FRAME','GUI','GUISCRD','GUISCRW','HEX',
+            'HIGH','IDATE','IN','INCLUDE','INPUT','ITIME','JDATE',
+            'JSTD','KEYLIST','LANG','LEFT','LIST','LISTV','LISTVX',
+            'LISTX','LMSG','LOGO','LOW','MIX','NAME','NAMEF','NB',
+            'NEWAPPL','NEWPOOL','NOCHECK','NOLOGO','NON','NONBLANK',
+            'NULLS','NUM','OFF','ON','OPT','OUT','OUTPUT','PANEL',
+            /* 'PGM',*/'PICT','PICTN','POSITION','TBDISPL','PROFILE',
+            'QUERY','RANGE','REVERSE','RIGHT','SHARED','SMSG',
+            'STDDATE','STDTIME','TERMSTAT','TERMTRAC','TEST',
+            'TESTX','TEXT','TRACE','TRACEX','USCORE','USER',
+            'USERMOD','WSCMD','WSCMDV'
+            ),
+        ),
+    'SYMBOLS' => array(
+        '(',')','=','&',',','*','#','+','&','%','_','-','@','!'
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false,
+        4 => false,
+        5 => false
+        ),
+    'STYLES' => array(
+        'BKGROUND' => 'background-color: #000000; color: #00FFFF;',
+        'KEYWORDS' => array(
+            1 => 'color: #FF0000;',
+            2 => 'color: #21A502;',
+            3 => 'color: #FF00FF;',
+            4 => 'color: #876C00;',
+            5 => 'color: #00FF00;'
+            ),
+        'COMMENTS' => array(
+            0 => 'color: #002EB8; font-style: italic;',
+            //1 => 'color: #002EB8; font-style: italic;',
+            //2 => 'color: #002EB8; font-style: italic;',
+            'MULTI' => 'color: #002EB8; font-style: italic;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => ''
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #FF7400;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #700000;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #FF6633;'
+            ),
+        'METHODS' => array(
+            1 => '',
+            2 => ''
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #FF7400;'
+            ),
+        'REGEXPS' => array(
+            0 => 'color: #6B1F6B;'
+            ),
+        'SCRIPT' => array(
+            0 => ''
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => '',
+        5 => ''
+        ),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(),
+    'REGEXPS' => array(
+        // Variables Defined in the Panel
+        0 => '&amp;[a-zA-Z]{1,8}[0-9]{0,}',
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array()
+);
diff --git a/inc/geshi/j.php b/vendor/easybook/geshi/geshi/j.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/j.php
rename to vendor/easybook/geshi/geshi/j.php
index 5565bb499de70b298b134fd695de6f2977dfcd7b..fe8cb11a63876eb8274f6ba48d40db93158d2da3
--- a/inc/geshi/j.php
+++ b/vendor/easybook/geshi/geshi/j.php
@@ -186,5 +186,3 @@ $language_data = array(
             )
         )
 );
-
-?>
diff --git a/inc/geshi/java.php b/vendor/easybook/geshi/geshi/java.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/java.php
rename to vendor/easybook/geshi/geshi/java.php
index 652b8ddd382c1001e7a8f79a8d6b5fb00bcb1525..f384c4d841af8331fe5ae04c5ff6dedd3e373c8a
--- a/inc/geshi/java.php
+++ b/vendor/easybook/geshi/geshi/java.php
@@ -979,5 +979,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/java5.php b/vendor/easybook/geshi/geshi/java5.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/java5.php
rename to vendor/easybook/geshi/geshi/java5.php
index af16bd1e63760d779e449959a0e2c8746a6746a0..5d74d988b4632275467f4b43a70acbf288660ac2
--- a/inc/geshi/java5.php
+++ b/vendor/easybook/geshi/geshi/java5.php
@@ -1033,5 +1033,3 @@ $language_data = array (
             )
         )
 );
-
-?>
diff --git a/inc/geshi/javascript.php b/vendor/easybook/geshi/geshi/javascript.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/javascript.php
rename to vendor/easybook/geshi/geshi/javascript.php
diff --git a/vendor/easybook/geshi/geshi/jcl.php b/vendor/easybook/geshi/geshi/jcl.php
new file mode 100644
index 0000000000000000000000000000000000000000..7d9c548257d43cf1a947cf06044a97e9b2ef91e2
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/jcl.php
@@ -0,0 +1,155 @@
+<?php
+/*************************************************************************************
+ * jcl.php
+ * -----------
+ * Author: Ramesh Vishveshwar (ramesh.vishveshwar@gmail.com)
+ * Copyright: (c) 2012 Ramesh Vishveshwar (http://thecodeisclear.in)
+ * Release Version: 1.0.8.11
+ * Date Started: 2011/09/16
+ *
+ * JCL (MVS), DFSORT, IDCAMS language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2011/09/16 (1.0.0)
+ *   -  Internal Release (for own blog/testing)
+ * 2012/09/22 (1.0.1)
+ *   - Released with support for DFSORT, ICETOOL, IDCAMS
+ *   - Added support for Symbolic variables in JCL
+ *   - Added support for TWS OPC variables
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'JCL',
+    'COMMENT_SINGLE' => array(),
+    'COMMENT_MULTI' => array(),
+    'COMMENT_REGEXP' => array(
+        // Comments identified using REGEX
+        // Comments start with //* but should not be followed by % (TWS) or + (some JES3 stmts)
+        3 => "\/\/\*[^%](.*?)(\n)"
+        ),
+    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '',
+    'KEYWORDS' => array(
+        1 => array(
+            'COMMAND', 'CNTL', 'DD', 'ENDCNTL', 'EXEC', 'IF', 'THEN', 'ELSE',
+            'ENDIF', 'JCLLIB', 'JOB', 'OUTPUT', 'PEND',
+            'PROC', 'SET', 'XMIT'
+            ),
+        2 => array (
+            'PGM','CLASS','NOTIFY','MSGCLASS','DSN','KEYLEN','LABEL','LIKE',
+            'RECFM','LRECL','DCB','DSORG','BLKSIZE','SPACE','STORCLAS',
+            'DUMMY','DYNAM','AVGREC','BURST','DISP','UNIT','VOLUME',
+            'MSGLEVEL','REGION'
+            ),
+        // Keywords set 3: DFSORT, ICETOOL
+        3 => array (
+            'ALTSEQ','DEBUG','END','INCLUDE','INREC','MERGE','MODS','OMIT',
+            'OPTION','OUTFIL','OUTREC','RECORD','SORT','SUM',
+            'COPY','COUNT','DEFAULTS','DISPLAY','MODE','OCCUR','RANGE',
+            'SELECT','STATS','UNIQUE','VERIFY'
+            ),
+        // Keywords set 4: IDCAMS
+        4 => array (
+            'ALTER','BLDINDEX','CNVTCAT','DEFINE','ALIAS','ALTERNATEINDEX',
+            'CLUSTER','GENERATIONDATAGROUP','GDG','NONVSAM','PAGESPACE','PATH',
+            /* 'SPACE',*/'USERCATALOG','DELETE','EXAMINE','EXPORT','DISCONNECT',
+            'EXPORTRA','IMPORT','CONNECT','IMPORTRA','LISTCAT','LISTCRA',
+            'PRINT','REPRO','RESETCAT'//,'VERIFY'
+            )
+        ),
+    'SYMBOLS' => array(
+        '(',')','=',',','>','<'
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false,
+        4 => false
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #FF0000;',
+            2 => 'color: #21A502;',
+            3 => 'color: #FF00FF;',
+            4 => 'color: #876C00;'
+            ),
+        'COMMENTS' => array(
+            0 => 'color: #0000FF;',
+            //1 => 'color: #0000FF;',
+            //2 => 'color: #0000FF;',
+            3 => 'color: #0000FF;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => ''
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #FF7400;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #66CC66;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #336633;'
+            ),
+        'METHODS' => array(
+            1 => '',
+            2 => ''
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #FF7400;'
+            ),
+        'REGEXPS' => array(
+            0 => 'color: #6B1F6B;',
+            1 => 'color: #6B1F6B;',
+            2 => 'color: #6B1F6B;'
+            ),
+        'SCRIPT' => array(
+            0 => ''
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        // JCL book at IBM Bookshelf is http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/handheld/Connected/BOOKS/IEA2B680/CONTENTS?SHELF=&DT=20080604022956#3.1
+        2 => '',
+        3 => '',
+        4 => ''
+        ),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(),
+    'REGEXPS' => array(
+        // The following regular expressions solves three purposes
+        // - Identify Temp Variables in JCL (e.g. &&TEMP)
+        // - Symbolic variables in JCL (e.g. &SYSUID)
+        // - TWS OPC Variables (e.g. %OPC)
+        // Thanks to Simon for pointing me to this
+        0 => '&amp;&amp;[a-zA-Z]{1,8}[0-9]{0,}',
+        1 => '&amp;[a-zA-Z]{1,8}[0-9]{0,}',
+        2 => '&amp;|\?|%[a-zA-Z]{1,8}[0-9]{0,}'
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array()
+);
diff --git a/inc/geshi/jquery.php b/vendor/easybook/geshi/geshi/jquery.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/jquery.php
rename to vendor/easybook/geshi/geshi/jquery.php
diff --git a/inc/geshi/kixtart.php b/vendor/easybook/geshi/geshi/kixtart.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/kixtart.php
rename to vendor/easybook/geshi/geshi/kixtart.php
index 5b90919892e391a2c31504c322c784042133d3b7..42ffa42ecd5923a9148fc47d6aa1dbe5b6755787
--- a/inc/geshi/kixtart.php
+++ b/vendor/easybook/geshi/geshi/kixtart.php
@@ -325,5 +325,3 @@ $language_data = array (
         ),
     'TAB_WIDTH' => 4
 );
-
-?>
diff --git a/inc/geshi/klonec.php b/vendor/easybook/geshi/geshi/klonec.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/klonec.php
rename to vendor/easybook/geshi/geshi/klonec.php
index 5f86e78dca32c0344848825c1bce1def2e0e155d..4831b13b7bc6599ad249a4d29cbc3d1182ba2181
--- a/inc/geshi/klonec.php
+++ b/vendor/easybook/geshi/geshi/klonec.php
@@ -278,5 +278,3 @@ $language_data = array (
         )
     )
 );
-
-?>
diff --git a/inc/geshi/klonecpp.php b/vendor/easybook/geshi/geshi/klonecpp.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/klonecpp.php
rename to vendor/easybook/geshi/geshi/klonecpp.php
index 6564c6b7b805d32de3d28325295b47ee4be140c1..d0368202ddecaeefc0aba2f79c3e871e924d3b93
--- a/inc/geshi/klonecpp.php
+++ b/vendor/easybook/geshi/geshi/klonecpp.php
@@ -306,5 +306,3 @@ $language_data = array (
         )
     )
 );
-
-?>
diff --git a/inc/geshi/latex.php b/vendor/easybook/geshi/geshi/latex.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/latex.php
rename to vendor/easybook/geshi/geshi/latex.php
diff --git a/inc/geshi/lb.php b/vendor/easybook/geshi/geshi/lb.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/lb.php
rename to vendor/easybook/geshi/geshi/lb.php
diff --git a/inc/geshi/ldif.php b/vendor/easybook/geshi/geshi/ldif.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/ldif.php
rename to vendor/easybook/geshi/geshi/ldif.php
diff --git a/inc/geshi/lisp.php b/vendor/easybook/geshi/geshi/lisp.php
old mode 100644
new mode 100755
similarity index 94%
rename from inc/geshi/lisp.php
rename to vendor/easybook/geshi/geshi/lisp.php
index be823a4052006482e1db83da986a764c27fea0b2..a2301914e0968eea90f6967a7a3a291b9c1d6b7e
--- a/inc/geshi/lisp.php
+++ b/vendor/easybook/geshi/geshi/lisp.php
@@ -3,14 +3,16 @@
  * lisp.php
  * --------
  * Author: Roberto Rossi (rsoftware@altervista.org)
- * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter
- * Release Version: 1.0.8.11
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.8.12
  * Date Started: 2004/08/30
  *
  * Generic Lisp language file for GeSHi.
  *
  * CHANGES
  * -------
+ * 2013/11/13 (1.0.8.12)
+ *  -  Fixed bug where a keyword was highlighted in identifiers (Edward Hart)
  * 2005/12/9  (1.0.2)
  *  -  Added support for :keywords and ::access (Denis Mashkevich)
  * 2004/11/27 (1.0.1)
@@ -135,10 +137,11 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         ),
     'PARSER_CONTROL' => array(
+        'KEYWORDS' => array(
+            'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9-\$_\|\#|^&])',
+            ),
         'OOLANG' => array(
             'MATCH_AFTER' => '[a-zA-Z][a-zA-Z0-9_\-]*'
             )
         )
 );
-
-?>
\ No newline at end of file
diff --git a/inc/geshi/llvm.php b/vendor/easybook/geshi/geshi/llvm.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/llvm.php
rename to vendor/easybook/geshi/geshi/llvm.php
diff --git a/inc/geshi/locobasic.php b/vendor/easybook/geshi/geshi/locobasic.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/locobasic.php
rename to vendor/easybook/geshi/geshi/locobasic.php
diff --git a/inc/geshi/logtalk.php b/vendor/easybook/geshi/geshi/logtalk.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/logtalk.php
rename to vendor/easybook/geshi/geshi/logtalk.php
diff --git a/inc/geshi/lolcode.php b/vendor/easybook/geshi/geshi/lolcode.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/lolcode.php
rename to vendor/easybook/geshi/geshi/lolcode.php
diff --git a/inc/geshi/lotusformulas.php b/vendor/easybook/geshi/geshi/lotusformulas.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/lotusformulas.php
rename to vendor/easybook/geshi/geshi/lotusformulas.php
index 12257d74882079b37a0f14cbacd7a01d92b4a5ec..18d6f7822b563cce5fa63761af204a39ce75d12d
--- a/inc/geshi/lotusformulas.php
+++ b/vendor/easybook/geshi/geshi/lotusformulas.php
@@ -314,5 +314,3 @@ $language_data = array (
         ),
     'TAB_WIDTH' => 2
     );
-
-?>
diff --git a/inc/geshi/lotusscript.php b/vendor/easybook/geshi/geshi/lotusscript.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/lotusscript.php
rename to vendor/easybook/geshi/geshi/lotusscript.php
index b8b65f206e9d209908e7a043134d9c4ea32e9877..5d8b6d596af09801c3e91627fe5cfbf6924e3cc8
--- a/inc/geshi/lotusscript.php
+++ b/vendor/easybook/geshi/geshi/lotusscript.php
@@ -187,5 +187,3 @@ $language_data = array (
         ),
     'TAB_WIDTH' => 2
 );
-
-?>
diff --git a/inc/geshi/lscript.php b/vendor/easybook/geshi/geshi/lscript.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/lscript.php
rename to vendor/easybook/geshi/geshi/lscript.php
diff --git a/inc/geshi/lsl2.php b/vendor/easybook/geshi/geshi/lsl2.php
old mode 100644
new mode 100755
similarity index 67%
rename from inc/geshi/lsl2.php
rename to vendor/easybook/geshi/geshi/lsl2.php
index f80cf4f29f4c74c9137368a71a21b7cc956969bd..dd0bcce8bf2e30397b52c7becd0900760411fb98
--- a/inc/geshi/lsl2.php
+++ b/vendor/easybook/geshi/geshi/lsl2.php
@@ -9,15 +9,14 @@
  *
  * Linden Scripting Language (LSL2) language file for GeSHi.
  *
- *   Data derived and validated against the following:
- *      http://wiki.secondlife.com/wiki/LSL_Portal
- *      http://www.lslwiki.net/lslwiki/wakka.php?wakka=HomePage
- *      http://rpgstats.com/wiki/index.php?title=Main_Page
- *
  * CHANGES
  * -------
- * 2009/02/05 (1.0.0)
+ * 2009-02-05 (1.0.0)
  *   -  First Release
+ * 2013-01-01
+ *   -  Modified by Sei Lisa for compatibility with the geshi.py output module
+ *      which is part of the LSL2 Derived Files Generator, available at:
+ *      http://code.google.com/p/lsl-keywords
  *
  * TODO (updated 2009/02/05)
  * -------------------------
@@ -50,6 +49,7 @@ $language_data = array (
     'QUOTEMARKS' => array('"'),
     'ESCAPE_CHAR' => '\\',
     'KEYWORDS' => array(
+// Generated by LSL2 Derived Files Generator. Database version: 0.0.20130627001; output module version: 0.0.20130619000
         1 => array( // flow control
             'do',
             'else',
@@ -65,11 +65,17 @@ $language_data = array (
             'AGENT',
             'AGENT_ALWAYS_RUN',
             'AGENT_ATTACHMENTS',
+            'AGENT_AUTOPILOT',
             'AGENT_AWAY',
             'AGENT_BUSY',
+            'AGENT_BY_LEGACY_NAME',
+            'AGENT_BY_USERNAME',
             'AGENT_CROUCHING',
             'AGENT_FLYING',
             'AGENT_IN_AIR',
+            'AGENT_LIST_PARCEL',
+            'AGENT_LIST_PARCEL_OWNER',
+            'AGENT_LIST_REGION',
             'AGENT_MOUSELOOK',
             'AGENT_ON_OBJECT',
             'AGENT_SCRIPTED',
@@ -78,6 +84,7 @@ $language_data = array (
             'AGENT_WALKING',
             'ALL_SIDES',
             'ANIM_ON',
+            'ATTACH_AVATAR_CENTER',
             'ATTACH_BACK',
             'ATTACH_BELLY',
             'ATTACH_CHEST',
@@ -92,17 +99,18 @@ $language_data = array (
             'ATTACH_HUD_TOP_LEFT',
             'ATTACH_HUD_TOP_RIGHT',
             'ATTACH_LEAR',
+            'ATTACH_LEFT_PEC',
             'ATTACH_LEYE',
             'ATTACH_LFOOT',
             'ATTACH_LHAND',
             'ATTACH_LHIP',
             'ATTACH_LLARM',
             'ATTACH_LLLEG',
-            'ATTACH_LPEC',
             'ATTACH_LSHOULDER',
             'ATTACH_LUARM',
             'ATTACH_LULEG',
             'ATTACH_MOUTH',
+            'ATTACH_NECK',
             'ATTACH_NOSE',
             'ATTACH_PELVIS',
             'ATTACH_REAR',
@@ -110,12 +118,15 @@ $language_data = array (
             'ATTACH_RFOOT',
             'ATTACH_RHAND',
             'ATTACH_RHIP',
+            'ATTACH_RIGHT_PEC',
             'ATTACH_RLARM',
             'ATTACH_RLLEG',
-            'ATTACH_RPEC',
             'ATTACH_RSHOULDER',
             'ATTACH_RUARM',
             'ATTACH_RULEG',
+            'AVOID_CHARACTERS',
+            'AVOID_DYNAMIC_OBSTACLES',
+            'AVOID_NONE',
             'CAMERA_ACTIVE',
             'CAMERA_BEHINDNESS_ANGLE',
             'CAMERA_BEHINDNESS_LAG',
@@ -134,18 +145,52 @@ $language_data = array (
             'CHANGED_COLOR',
             'CHANGED_INVENTORY',
             'CHANGED_LINK',
+            'CHANGED_MEDIA',
             'CHANGED_OWNER',
             'CHANGED_REGION',
+            'CHANGED_REGION_START',
             'CHANGED_SCALE',
             'CHANGED_SHAPE',
             'CHANGED_TELEPORT',
             'CHANGED_TEXTURE',
+            'CHARACTER_ACCOUNT_FOR_SKIPPED_FRAMES',
+            'CHARACTER_AVOIDANCE_MODE',
+            'CHARACTER_CMD_JUMP',
+            'CHARACTER_CMD_SMOOTH_STOP',
+            'CHARACTER_CMD_STOP',
+            'CHARACTER_DESIRED_SPEED',
+            'CHARACTER_DESIRED_TURN_SPEED',
+            'CHARACTER_LENGTH',
+            'CHARACTER_MAX_ACCEL',
+            'CHARACTER_MAX_DECEL',
+            'CHARACTER_MAX_SPEED',
+            'CHARACTER_MAX_TURN_RADIUS',
+            'CHARACTER_ORIENTATION',
+            'CHARACTER_RADIUS',
+            'CHARACTER_STAY_WITHIN_PARCEL',
+            'CHARACTER_TYPE',
+            'CHARACTER_TYPE_A',
+            'CHARACTER_TYPE_B',
+            'CHARACTER_TYPE_C',
+            'CHARACTER_TYPE_D',
+            'CHARACTER_TYPE_NONE',
+            'CLICK_ACTION_BUY',
             'CLICK_ACTION_NONE',
             'CLICK_ACTION_OPEN',
             'CLICK_ACTION_OPEN_MEDIA',
             'CLICK_ACTION_PAY',
+            'CLICK_ACTION_PLAY',
             'CLICK_ACTION_SIT',
             'CLICK_ACTION_TOUCH',
+            'CONTENT_TYPE_ATOM',
+            'CONTENT_TYPE_FORM',
+            'CONTENT_TYPE_HTML',
+            'CONTENT_TYPE_JSON',
+            'CONTENT_TYPE_LLSD',
+            'CONTENT_TYPE_RSS',
+            'CONTENT_TYPE_TEXT',
+            'CONTENT_TYPE_XHTML',
+            'CONTENT_TYPE_XML',
             'CONTROL_BACK',
             'CONTROL_DOWN',
             'CONTROL_FWD',
@@ -160,18 +205,38 @@ $language_data = array (
             'DATA_NAME',
             'DATA_ONLINE',
             'DATA_PAYINFO',
-            'DATA_RATING',
             'DATA_SIM_POS',
             'DATA_SIM_RATING',
             'DATA_SIM_STATUS',
             'DEBUG_CHANNEL',
             'DEG_TO_RAD',
+            'DENSITY',
             'EOF',
+            'ERR_GENERIC',
+            'ERR_MALFORMED_PARAMS',
+            'ERR_PARCEL_PERMISSIONS',
+            'ERR_RUNTIME_PERMISSIONS',
+            'ERR_THROTTLED',
+            'ESTATE_ACCESS_ALLOWED_AGENT_ADD',
+            'ESTATE_ACCESS_ALLOWED_AGENT_REMOVE',
+            'ESTATE_ACCESS_ALLOWED_GROUP_ADD',
+            'ESTATE_ACCESS_ALLOWED_GROUP_REMOVE',
+            'ESTATE_ACCESS_BANNED_AGENT_ADD',
+            'ESTATE_ACCESS_BANNED_AGENT_REMOVE',
             'FALSE',
+            'FORCE_DIRECT_PATH',
+            'FRICTION',
+            'GCNP_RADIUS',
+            'GCNP_STATIC',
+            'GRAVITY_MULTIPLIER',
+            'HORIZONTAL',
             'HTTP_BODY_MAXLENGTH',
             'HTTP_BODY_TRUNCATED',
+            'HTTP_CUSTOM_HEADER',
             'HTTP_METHOD',
             'HTTP_MIMETYPE',
+            'HTTP_PRAGMA_NO_CACHE',
+            'HTTP_VERBOSE_THROTTLE',
             'HTTP_VERIFY_CERT',
             'INVENTORY_ALL',
             'INVENTORY_ANIMATION',
@@ -185,11 +250,36 @@ $language_data = array (
             'INVENTORY_SCRIPT',
             'INVENTORY_SOUND',
             'INVENTORY_TEXTURE',
+            'JSON_APPEND',
+            'JSON_ARRAY',
+            'JSON_FALSE',
+            'JSON_INVALID',
+            'JSON_NULL',
+            'JSON_NUMBER',
+            'JSON_OBJECT',
+            'JSON_STRING',
+            'JSON_TRUE',
+            'KFM_CMD_PAUSE',
+            'KFM_CMD_PLAY',
+            'KFM_CMD_SET_MODE',
+            'KFM_CMD_STOP',
+            'KFM_COMMAND',
+            'KFM_DATA',
+            'KFM_FORWARD',
+            'KFM_LOOP',
+            'KFM_MODE',
+            'KFM_PING_PONG',
+            'KFM_REVERSE',
+            'KFM_ROTATION',
+            'KFM_TRANSLATION',
+            'LAND_LARGE_BRUSH',
             'LAND_LEVEL',
             'LAND_LOWER',
+            'LAND_MEDIUM_BRUSH',
             'LAND_NOISE',
             'LAND_RAISE',
             'LAND_REVERT',
+            'LAND_SMALL_BRUSH',
             'LAND_SMOOTH',
             'LINK_ALL_CHILDREN',
             'LINK_ALL_OTHERS',
@@ -213,20 +303,54 @@ $language_data = array (
             'MASK_NEXT',
             'MASK_OWNER',
             'NULL_KEY',
+            'OBJECT_ATTACHED_POINT',
+            'OBJECT_CHARACTER_TIME',
             'OBJECT_CREATOR',
             'OBJECT_DESC',
             'OBJECT_GROUP',
             'OBJECT_NAME',
             'OBJECT_OWNER',
+            'OBJECT_PATHFINDING_TYPE',
+            'OBJECT_PHANTOM',
+            'OBJECT_PHYSICS',
+            'OBJECT_PHYSICS_COST',
             'OBJECT_POS',
+            'OBJECT_PRIM_EQUIVALENCE',
+            'OBJECT_RETURN_PARCEL',
+            'OBJECT_RETURN_PARCEL_OWNER',
+            'OBJECT_RETURN_REGION',
+            'OBJECT_ROOT',
             'OBJECT_ROT',
+            'OBJECT_RUNNING_SCRIPT_COUNT',
+            'OBJECT_SCRIPT_MEMORY',
+            'OBJECT_SCRIPT_TIME',
+            'OBJECT_SERVER_COST',
+            'OBJECT_STREAMING_COST',
+            'OBJECT_TEMP_ON_REZ',
+            'OBJECT_TOTAL_SCRIPT_COUNT',
             'OBJECT_UNKNOWN_DETAIL',
             'OBJECT_VELOCITY',
+            'OPT_AVATAR',
+            'OPT_CHARACTER',
+            'OPT_EXCLUSION_VOLUME',
+            'OPT_LEGACY_LINKSET',
+            'OPT_MATERIAL_VOLUME',
+            'OPT_OTHER',
+            'OPT_STATIC_OBSTACLE',
+            'OPT_WALKABLE',
+            'PARCEL_COUNT_GROUP',
+            'PARCEL_COUNT_OTHER',
+            'PARCEL_COUNT_OWNER',
+            'PARCEL_COUNT_SELECTED',
+            'PARCEL_COUNT_TEMP',
+            'PARCEL_COUNT_TOTAL',
             'PARCEL_DETAILS_AREA',
             'PARCEL_DETAILS_DESC',
             'PARCEL_DETAILS_GROUP',
+            'PARCEL_DETAILS_ID',
             'PARCEL_DETAILS_NAME',
             'PARCEL_DETAILS_OWNER',
+            'PARCEL_DETAILS_SEE_AVATARS',
             'PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY',
             'PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS',
             'PARCEL_FLAG_ALLOW_CREATE_OBJECTS',
@@ -246,6 +370,7 @@ $language_data = array (
             'PARCEL_MEDIA_COMMAND_AGENT',
             'PARCEL_MEDIA_COMMAND_AUTO_ALIGN',
             'PARCEL_MEDIA_COMMAND_DESC',
+            'PARCEL_MEDIA_COMMAND_LOOP',
             'PARCEL_MEDIA_COMMAND_LOOP_SET',
             'PARCEL_MEDIA_COMMAND_PAUSE',
             'PARCEL_MEDIA_COMMAND_PLAY',
@@ -254,8 +379,10 @@ $language_data = array (
             'PARCEL_MEDIA_COMMAND_TEXTURE',
             'PARCEL_MEDIA_COMMAND_TIME',
             'PARCEL_MEDIA_COMMAND_TYPE',
+            'PARCEL_MEDIA_COMMAND_UNLOAD',
             'PARCEL_MEDIA_COMMAND_URL',
             'PASSIVE',
+            'PATROL_PAUSE_AT_WAYPOINTS',
             'PAYMENT_INFO_ON_FILE',
             'PAYMENT_INFO_USED',
             'PAY_DEFAULT',
@@ -264,7 +391,11 @@ $language_data = array (
             'PERMISSION_CHANGE_LINKS',
             'PERMISSION_CONTROL_CAMERA',
             'PERMISSION_DEBIT',
+            'PERMISSION_OVERRIDE_ANIMATIONS',
+            'PERMISSION_RETURN_OBJECTS',
+            'PERMISSION_SILENT_ESTATE_MANAGEMENT',
             'PERMISSION_TAKE_CONTROLS',
+            'PERMISSION_TELEPORT',
             'PERMISSION_TRACK_CAMERA',
             'PERMISSION_TRIGGER_ANIMATION',
             'PERM_ALL',
@@ -273,6 +404,7 @@ $language_data = array (
             'PERM_MOVE',
             'PERM_TRANSFER',
             'PI',
+            'PING_PONG',
             'PI_BY_TWO',
             'PRIM_BUMP_BARK',
             'PRIM_BUMP_BLOBS',
@@ -294,39 +426,93 @@ $language_data = array (
             'PRIM_BUMP_WEAVE',
             'PRIM_BUMP_WOOD',
             'PRIM_COLOR',
+            'PRIM_DESC',
+            'PRIM_FLEXIBLE',
             'PRIM_FULLBRIGHT',
+            'PRIM_GLOW',
             'PRIM_HOLE_CIRCLE',
             'PRIM_HOLE_DEFAULT',
             'PRIM_HOLE_SQUARE',
             'PRIM_HOLE_TRIANGLE',
+            'PRIM_LINK_TARGET',
             'PRIM_MATERIAL',
             'PRIM_MATERIAL_FLESH',
             'PRIM_MATERIAL_GLASS',
-            'PRIM_MATERIAL_LIGHT',
             'PRIM_MATERIAL_METAL',
             'PRIM_MATERIAL_PLASTIC',
             'PRIM_MATERIAL_RUBBER',
             'PRIM_MATERIAL_STONE',
             'PRIM_MATERIAL_WOOD',
+            'PRIM_MEDIA_ALT_IMAGE_ENABLE',
+            'PRIM_MEDIA_AUTO_LOOP',
+            'PRIM_MEDIA_AUTO_PLAY',
+            'PRIM_MEDIA_AUTO_SCALE',
+            'PRIM_MEDIA_AUTO_ZOOM',
+            'PRIM_MEDIA_CONTROLS',
+            'PRIM_MEDIA_CONTROLS_MINI',
+            'PRIM_MEDIA_CONTROLS_STANDARD',
+            'PRIM_MEDIA_CURRENT_URL',
+            'PRIM_MEDIA_FIRST_CLICK_INTERACT',
+            'PRIM_MEDIA_HEIGHT_PIXELS',
+            'PRIM_MEDIA_HOME_URL',
+            'PRIM_MEDIA_MAX_HEIGHT_PIXELS',
+            'PRIM_MEDIA_MAX_URL_LENGTH',
+            'PRIM_MEDIA_MAX_WHITELIST_COUNT',
+            'PRIM_MEDIA_MAX_WHITELIST_SIZE',
+            'PRIM_MEDIA_MAX_WIDTH_PIXELS',
+            'PRIM_MEDIA_PARAM_MAX',
+            'PRIM_MEDIA_PERMS_CONTROL',
+            'PRIM_MEDIA_PERMS_INTERACT',
+            'PRIM_MEDIA_PERM_ANYONE',
+            'PRIM_MEDIA_PERM_GROUP',
+            'PRIM_MEDIA_PERM_NONE',
+            'PRIM_MEDIA_PERM_OWNER',
+            'PRIM_MEDIA_WHITELIST',
+            'PRIM_MEDIA_WHITELIST_ENABLE',
+            'PRIM_MEDIA_WIDTH_PIXELS',
+            'PRIM_NAME',
+            'PRIM_OMEGA',
             'PRIM_PHANTOM',
             'PRIM_PHYSICS',
+            'PRIM_PHYSICS_SHAPE_CONVEX',
+            'PRIM_PHYSICS_SHAPE_NONE',
+            'PRIM_PHYSICS_SHAPE_PRIM',
+            'PRIM_PHYSICS_SHAPE_TYPE',
+            'PRIM_POINT_LIGHT',
             'PRIM_POSITION',
+            'PRIM_POS_LOCAL',
             'PRIM_ROTATION',
+            'PRIM_ROT_LOCAL',
+            'PRIM_SCULPT_FLAG_INVERT',
+            'PRIM_SCULPT_FLAG_MIRROR',
+            'PRIM_SCULPT_TYPE_CYLINDER',
+            'PRIM_SCULPT_TYPE_MASK',
+            'PRIM_SCULPT_TYPE_PLANE',
+            'PRIM_SCULPT_TYPE_SPHERE',
+            'PRIM_SCULPT_TYPE_TORUS',
             'PRIM_SHINY_HIGH',
             'PRIM_SHINY_LOW',
             'PRIM_SHINY_MEDIUM',
             'PRIM_SHINY_NONE',
             'PRIM_SIZE',
+            'PRIM_SLICE',
             'PRIM_TEMP_ON_REZ',
+            'PRIM_TEXGEN',
+            'PRIM_TEXGEN_DEFAULT',
+            'PRIM_TEXGEN_PLANAR',
+            'PRIM_TEXT',
             'PRIM_TEXTURE',
             'PRIM_TYPE',
             'PRIM_TYPE_BOX',
             'PRIM_TYPE_CYLINDER',
             'PRIM_TYPE_PRISM',
             'PRIM_TYPE_RING',
+            'PRIM_TYPE_SCULPT',
             'PRIM_TYPE_SPHERE',
             'PRIM_TYPE_TORUS',
             'PRIM_TYPE_TUBE',
+            'PROFILE_NONE',
+            'PROFILE_SCRIPT_MEMORY',
             'PSYS_PART_BOUNCE_MASK',
             'PSYS_PART_EMISSIVE_MASK',
             'PSYS_PART_END_ALPHA',
@@ -352,10 +538,8 @@ $language_data = array (
             'PSYS_SRC_BURST_RATE',
             'PSYS_SRC_BURST_SPEED_MAX',
             'PSYS_SRC_BURST_SPEED_MIN',
-            'PSYS_SRC_INNERANGLE',
             'PSYS_SRC_MAX_AGE',
             'PSYS_SRC_OMEGA',
-            'PSYS_SRC_OUTERANGLE',
             'PSYS_SRC_PATTERN',
             'PSYS_SRC_PATTERN_ANGLE',
             'PSYS_SRC_PATTERN_ANGLE_CONE',
@@ -364,13 +548,70 @@ $language_data = array (
             'PSYS_SRC_PATTERN_EXPLODE',
             'PSYS_SRC_TARGET_KEY',
             'PSYS_SRC_TEXTURE',
+            'PUBLIC_CHANNEL',
+            'PURSUIT_FUZZ_FACTOR',
+            'PURSUIT_GOAL_TOLERANCE',
+            'PURSUIT_INTERCEPT',
+            'PURSUIT_OFFSET',
+            'PU_EVADE_HIDDEN',
+            'PU_EVADE_SPOTTED',
+            'PU_FAILURE_DYNAMIC_PATHFINDING_DISABLED',
+            'PU_FAILURE_INVALID_GOAL',
+            'PU_FAILURE_INVALID_START',
+            'PU_FAILURE_NO_NAVMESH',
+            'PU_FAILURE_NO_VALID_DESTINATION',
+            'PU_FAILURE_OTHER',
+            'PU_FAILURE_PARCEL_UNREACHABLE',
+            'PU_FAILURE_TARGET_GONE',
+            'PU_FAILURE_UNREACHABLE',
+            'PU_GOAL_REACHED',
+            'PU_SLOWDOWN_DISTANCE_REACHED',
             'RAD_TO_DEG',
+            'RCERR_CAST_TIME_EXCEEDED',
+            'RCERR_SIM_PERF_LOW',
+            'RCERR_UNKNOWN',
+            'RC_DATA_FLAGS',
+            'RC_DETECT_PHANTOM',
+            'RC_GET_LINK_NUM',
+            'RC_GET_NORMAL',
+            'RC_GET_ROOT_KEY',
+            'RC_MAX_HITS',
+            'RC_REJECT_AGENTS',
+            'RC_REJECT_LAND',
+            'RC_REJECT_NONPHYSICAL',
+            'RC_REJECT_PHYSICAL',
+            'RC_REJECT_TYPES',
+            'REGION_FLAG_ALLOW_DAMAGE',
+            'REGION_FLAG_ALLOW_DIRECT_TELEPORT',
+            'REGION_FLAG_BLOCK_FLY',
+            'REGION_FLAG_BLOCK_TERRAFORM',
+            'REGION_FLAG_DISABLE_COLLISIONS',
+            'REGION_FLAG_DISABLE_PHYSICS',
+            'REGION_FLAG_FIXED_SUN',
+            'REGION_FLAG_RESTRICT_PUSHOBJECT',
+            'REGION_FLAG_SANDBOX',
             'REMOTE_DATA_CHANNEL',
+            'REMOTE_DATA_REPLY',
             'REMOTE_DATA_REQUEST',
+            'REQUIRE_LINE_OF_SIGHT',
+            'RESTITUTION',
+            'REVERSE',
+            'ROTATE',
+            'SCALE',
             'SCRIPTED',
+            'SIM_STAT_PCT_CHARS_STEPPED',
+            'SMOOTH',
             'SQRT2',
             'STATUS_BLOCK_GRAB',
+            'STATUS_BLOCK_GRAB_OBJECT',
+            'STATUS_BOUNDS_ERROR',
+            'STATUS_CAST_SHADOWS',
             'STATUS_DIE_AT_EDGE',
+            'STATUS_INTERNAL_ERROR',
+            'STATUS_MALFORMED_PARAMS',
+            'STATUS_NOT_FOUND',
+            'STATUS_NOT_SUPPORTED',
+            'STATUS_OK',
             'STATUS_PHANTOM',
             'STATUS_PHYSICS',
             'STATUS_RETURN_AT_EDGE',
@@ -378,8 +619,34 @@ $language_data = array (
             'STATUS_ROTATE_Y',
             'STATUS_ROTATE_Z',
             'STATUS_SANDBOX',
+            'STATUS_TYPE_MISMATCH',
+            'STATUS_WHITELIST_FAILED',
+            'STRING_TRIM',
+            'STRING_TRIM_HEAD',
+            'STRING_TRIM_TAIL',
+            'TEXTURE_BLANK',
+            'TEXTURE_DEFAULT',
+            'TEXTURE_MEDIA',
+            'TEXTURE_PLYWOOD',
+            'TEXTURE_TRANSPARENT',
+            'TOUCH_INVALID_FACE',
+            'TOUCH_INVALID_TEXCOORD',
+            'TOUCH_INVALID_VECTOR',
+            'TRAVERSAL_TYPE',
+            'TRAVERSAL_TYPE_FAST',
+            'TRAVERSAL_TYPE_NONE',
+            'TRAVERSAL_TYPE_SLOW',
             'TRUE',
             'TWO_PI',
+            'TYPE_FLOAT',
+            'TYPE_INTEGER',
+            'TYPE_INVALID',
+            'TYPE_KEY',
+            'TYPE_ROTATION',
+            'TYPE_STRING',
+            'TYPE_VECTOR',
+            'URL_REQUEST_DENIED',
+            'URL_REQUEST_GRANTED',
             'VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY',
             'VEHICLE_ANGULAR_DEFLECTION_TIMESCALE',
             'VEHICLE_ANGULAR_FRICTION_TIMESCALE',
@@ -419,13 +686,15 @@ $language_data = array (
             'VEHICLE_TYPE_SLED',
             'VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY',
             'VEHICLE_VERTICAL_ATTRACTION_TIMESCALE',
+            'VERTICAL',
+            'WANDER_PAUSE_AT_WAYPOINTS',
             'ZERO_ROTATION',
             'ZERO_VECTOR',
             ),
         3 => array( // handlers
             'at_rot_target',
             'at_target',
-            'attached',
+            'attach',
             'changed',
             'collision',
             'collision_end',
@@ -433,6 +702,7 @@ $language_data = array (
             'control',
             'dataserver',
             'email',
+            'http_request',
             'http_response',
             'land_collision',
             'land_collision_end',
@@ -447,6 +717,7 @@ $language_data = array (
             'not_at_target',
             'object_rez',
             'on_rez',
+            'path_update',
             'remote_data',
             'run_time_permissions',
             'sensor',
@@ -456,12 +727,14 @@ $language_data = array (
             'touch',
             'touch_end',
             'touch_start',
+            'transaction_result',
             ),
         4 => array( // data types
             'float',
             'integer',
             'key',
             'list',
+            'quaternion',
             'rotation',
             'string',
             'vector',
@@ -480,6 +753,8 @@ $language_data = array (
             'llAsin',
             'llAtan2',
             'llAttachToAvatar',
+            'llAttachToAvatarTemp',
+            'llAvatarOnLinkSitTarget',
             'llAvatarOnSitTarget',
             'llAxes2Rot',
             'llAxisAngle2Rot',
@@ -487,16 +762,19 @@ $language_data = array (
             'llBase64ToString',
             'llBreakAllLinks',
             'llBreakLink',
+            'llCastRay',
             'llCeil',
             'llClearCameraParams',
+            'llClearLinkMedia',
+            'llClearPrimMedia',
             'llCloseRemoteDataChannel',
-            'llCloud',
             'llCollisionFilter',
             'llCollisionSound',
-            'llCollisionSprite',
             'llCos',
+            'llCreateCharacter',
             'llCreateLink',
             'llCSV2List',
+            'llDeleteCharacter',
             'llDeleteSubList',
             'llDeleteSubString',
             'llDetachFromAvatar',
@@ -524,31 +802,42 @@ $language_data = array (
             'llEmail',
             'llEscapeURL',
             'llEuler2Rot',
+            'llEvade',
+            'llExecCharacterCmd',
             'llFabs',
+            'llFleeFrom',
             'llFloor',
             'llForceMouselook',
             'llFrand',
+            'llGenerateKey',
             'llGetAccel',
             'llGetAgentInfo',
             'llGetAgentLanguage',
+            'llGetAgentList',
             'llGetAgentSize',
             'llGetAlpha',
             'llGetAndResetTime',
             'llGetAnimation',
             'llGetAnimationList',
+            'llGetAnimationOverride',
             'llGetAttached',
             'llGetBoundingBox',
             'llGetCameraPos',
             'llGetCameraRot',
             'llGetCenterOfMass',
+            'llGetClosestNavPoint',
             'llGetColor',
             'llGetCreator',
             'llGetDate',
+            'llGetDisplayName',
             'llGetEnergy',
+            'llGetEnv',
             'llGetForce',
             'llGetFreeMemory',
+            'llGetFreeURLs',
             'llGetGeometricCenter',
             'llGetGMTclock',
+            'llGetHTTPHeader',
             'llGetInventoryCreator',
             'llGetInventoryKey',
             'llGetInventoryName',
@@ -558,13 +847,18 @@ $language_data = array (
             'llGetKey',
             'llGetLandOwnerAt',
             'llGetLinkKey',
+            'llGetLinkMedia',
             'llGetLinkName',
             'llGetLinkNumber',
+            'llGetLinkNumberOfSides',
+            'llGetLinkPrimitiveParams',
             'llGetListEntryType',
             'llGetListLength',
             'llGetLocalPos',
             'llGetLocalRot',
             'llGetMass',
+            'llGetMassMKS',
+            'llGetMemoryLimit',
             'llGetNextEmail',
             'llGetNotecardLine',
             'llGetNumberOfNotecardLines',
@@ -582,12 +876,15 @@ $language_data = array (
             'llGetParcelDetails',
             'llGetParcelFlags',
             'llGetParcelMaxPrims',
+            'llGetParcelMusicURL',
             'llGetParcelPrimCount',
             'llGetParcelPrimOwners',
             'llGetPermissions',
             'llGetPermissionsKey',
+            'llGetPhysicsMaterial',
             'llGetPos',
             'llGetPrimitiveParams',
+            'llGetPrimMediaParams',
             'llGetRegionAgentCount',
             'llGetRegionCorner',
             'llGetRegionFlags',
@@ -600,8 +897,11 @@ $language_data = array (
             'llGetScale',
             'llGetScriptName',
             'llGetScriptState',
+            'llGetSimStats',
             'llGetSimulatorHostname',
+            'llGetSPMaxMemory',
             'llGetStartParameter',
+            'llGetStaticPath',
             'llGetStatus',
             'llGetSubString',
             'llGetSunDirection',
@@ -614,6 +914,8 @@ $language_data = array (
             'llGetTimestamp',
             'llGetTorque',
             'llGetUnixTime',
+            'llGetUsedMemory',
+            'llGetUsername',
             'llGetVel',
             'llGetWallclock',
             'llGiveInventory',
@@ -625,13 +927,21 @@ $language_data = array (
             'llGroundRepel',
             'llGroundSlope',
             'llHTTPRequest',
+            'llHTTPResponse',
             'llInsertString',
             'llInstantMessage',
             'llIntegerToBase64',
+            'llJson2List',
+            'llJsonGetValue',
+            'llJsonSetValue',
+            'llJsonValueType',
             'llKey2Name',
+            'llLinkParticleSystem',
+            'llLinkSitTarget',
             'llList2CSV',
             'llList2Float',
             'llList2Integer',
+            'llList2Json',
             'llList2Key',
             'llList2List',
             'llList2ListStrided',
@@ -654,6 +964,7 @@ $language_data = array (
             'llLoopSound',
             'llLoopSoundMaster',
             'llLoopSoundSlave',
+            'llManageEstateAccess',
             'llMapDestination',
             'llMD5String',
             'llMessageLinked',
@@ -661,6 +972,7 @@ $language_data = array (
             'llModifyLand',
             'llModPow',
             'llMoveToTarget',
+            'llNavigateTo',
             'llOffsetTexture',
             'llOpenRemoteDataChannel',
             'llOverMyLand',
@@ -672,29 +984,39 @@ $language_data = array (
             'llParticleSystem',
             'llPassCollisions',
             'llPassTouches',
+            'llPatrolPoints',
             'llPlaySound',
             'llPlaySoundSlave',
             'llPow',
             'llPreloadSound',
+            'llPursue',
             'llPushObject',
             'llRegionSay',
+            'llRegionSayTo',
             'llReleaseControls',
+            'llReleaseURL',
             'llRemoteDataReply',
-            'llRemoteDataSetRegion',
             'llRemoteLoadScriptPin',
             'llRemoveFromLandBanList',
             'llRemoveFromLandPassList',
             'llRemoveInventory',
             'llRemoveVehicleFlags',
             'llRequestAgentData',
+            'llRequestDisplayName',
             'llRequestInventoryData',
             'llRequestPermissions',
+            'llRequestSecureURL',
             'llRequestSimulatorData',
+            'llRequestURL',
+            'llRequestUsername',
+            'llResetAnimationOverride',
             'llResetLandBanList',
             'llResetLandPassList',
             'llResetOtherScript',
             'llResetScript',
             'llResetTime',
+            'llReturnObjectsByID',
+            'llReturnObjectsByOwner',
             'llRezAtRoot',
             'llRezObject',
             'llRot2Angle',
@@ -713,32 +1035,45 @@ $language_data = array (
             'llSay',
             'llScaleTexture',
             'llScriptDanger',
+            'llScriptProfiler',
             'llSendRemoteData',
             'llSensor',
             'llSensorRemove',
             'llSensorRepeat',
             'llSetAlpha',
+            'llSetAngularVelocity',
+            'llSetAnimationOverride',
             'llSetBuoyancy',
             'llSetCameraAtOffset',
             'llSetCameraEyeOffset',
             'llSetCameraParams',
             'llSetClickAction',
             'llSetColor',
+            'llSetContentType',
             'llSetDamage',
             'llSetForce',
             'llSetForceAndTorque',
             'llSetHoverHeight',
+            'llSetKeyframedMotion',
             'llSetLinkAlpha',
+            'llSetLinkCamera',
             'llSetLinkColor',
+            'llSetLinkMedia',
             'llSetLinkPrimitiveParams',
+            'llSetLinkPrimitiveParamsFast',
             'llSetLinkTexture',
+            'llSetLinkTextureAnim',
             'llSetLocalRot',
+            'llSetMemoryLimit',
             'llSetObjectDesc',
             'llSetObjectName',
             'llSetParcelMusicURL',
             'llSetPayPrice',
+            'llSetPhysicsMaterial',
             'llSetPos',
             'llSetPrimitiveParams',
+            'llSetPrimMediaParams',
+            'llSetRegionPos',
             'llSetRemoteScriptAccessPin',
             'llSetRot',
             'llSetScale',
@@ -758,6 +1093,7 @@ $language_data = array (
             'llSetVehicleRotationParam',
             'llSetVehicleType',
             'llSetVehicleVectorParam',
+            'llSetVelocity',
             'llSHA1String',
             'llShout',
             'llSin',
@@ -779,32 +1115,57 @@ $language_data = array (
             'llTarget',
             'llTargetOmega',
             'llTargetRemove',
+            'llTeleportAgent',
+            'llTeleportAgentGlobalCoords',
             'llTeleportAgentHome',
+            'llTextBox',
             'llToLower',
             'llToUpper',
+            'llTransferLindenDollars',
             'llTriggerSound',
             'llTriggerSoundLimited',
             'llUnescapeURL',
             'llUnSit',
+            'llUpdateCharacter',
             'llVecDist',
             'llVecMag',
             'llVecNorm',
             'llVolumeDetect',
+            'llWanderWithin',
             'llWater',
             'llWhisper',
             'llWind',
-            'llXorBase64StringsCorrect',
+            'llXorBase64',
+            'print',
             ),
         6 => array( // deprecated
+            'ATTACH_LPEC',
+            'ATTACH_RPEC',
+            'DATA_RATING',
+            'PERMISSION_CHANGE_JOINTS',
+            'PERMISSION_CHANGE_PERMISSIONS',
+            'PERMISSION_RELEASE_OWNERSHIP',
+            'PERMISSION_REMAP_CONTROLS',
+            'PRIM_CAST_SHADOWS',
+            'PRIM_MATERIAL_LIGHT',
+            'PSYS_SRC_INNERANGLE',
+            'PSYS_SRC_OBJ_REL_MASK',
+            'PSYS_SRC_OUTERANGLE',
+            'VEHICLE_FLAG_NO_FLY_UP',
+            'llCloud',
             'llMakeExplosion',
             'llMakeFire',
             'llMakeFountain',
             'llMakeSmoke',
+            'llRemoteDataSetRegion',
             'llSound',
             'llSoundPreload',
             'llXorBase64Strings',
+            'llXorBase64StringsCorrect',
             ),
         7 => array( // unimplemented
+            'event',
+            'llCollisionSprite',
             'llPointAt',
             'llRefreshPrimURL',
             'llReleaseCamera',
@@ -812,7 +1173,6 @@ $language_data = array (
             'llSetPrimURL',
             'llStopPointAt',
             'llTakeCamera',
-            'llTextBox',
             ),
         8 => array( // God mode
             'llGodLikeRezObject',
@@ -824,9 +1184,9 @@ $language_data = array (
         '{', '}', '(', ')', '[', ']',
         '=', '+', '-', '*', '/',
         '+=', '-=', '*=', '/=', '++', '--',
-        '!', '%', '&amp;', '|', '&amp;&amp;', '||',
-        '==', '!=', '&lt;', '&gt;', '&lt;=', '&gt;=',
-        '~', '&lt;&lt;', '&gt;&gt;', '^', ':',
+        '!', '%', '&', '|', '&&', '||',
+        '==', '!=', '<', '>', '<=', '>=',
+        '~', '<<', '>>', '^', ':',
         ),
     'CASE_SENSITIVE' => array(
         GESHI_COMMENTS => true,
@@ -878,12 +1238,12 @@ $language_data = array (
     'URLS' => array(
         1 => '',
         2 => '',
-        3 => 'http://www.lslwiki.net/lslwiki/wakka.php?wakka={FNAME}', // http://wiki.secondlife.com/wiki/{FNAME}
-        4 => 'http://www.lslwiki.net/lslwiki/wakka.php?wakka={FNAME}', // http://wiki.secondlife.com/wiki/{FNAME}
-        5 => 'http://www.lslwiki.net/lslwiki/wakka.php?wakka={FNAME}', // http://wiki.secondlife.com/wiki/{FNAME}
-        6 => 'http://www.lslwiki.net/lslwiki/wakka.php?wakka={FNAME}', // http://wiki.secondlife.com/wiki/{FNAME}
-        7 => 'http://www.lslwiki.net/lslwiki/wakka.php?wakka={FNAME}', // http://wiki.secondlife.com/wiki/{FNAME}
-        8 => 'http://www.lslwiki.net/lslwiki/wakka.php?wakka={FNAME}', // http://wiki.secondlife.com/wiki/{FNAME}
+        3 => 'http://wiki.secondlife.com/wiki/{FNAME}',
+        4 => 'http://wiki.secondlife.com/wiki/{FNAME}',
+        5 => 'http://wiki.secondlife.com/wiki/{FNAME}',
+        6 => 'http://wiki.secondlife.com/wiki/{FNAME}',
+        7 => 'http://wiki.secondlife.com/wiki/{FNAME}',
+        8 => 'http://wiki.secondlife.com/wiki/{FNAME}',
         ),
     'OOLANG' => false,
     'OBJECT_SPLITTERS' => array(),
@@ -895,4 +1255,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-?>
\ No newline at end of file
diff --git a/inc/geshi/lua.php b/vendor/easybook/geshi/geshi/lua.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/lua.php
rename to vendor/easybook/geshi/geshi/lua.php
index 8a09ba20e8fc9ce1aaf09fbafae1a16fdfb5a15c..985cb8c272dad7ed7bafa12b1e19f8cbdc8a8a46
--- a/inc/geshi/lua.php
+++ b/vendor/easybook/geshi/geshi/lua.php
@@ -173,5 +173,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/m68k.php b/vendor/easybook/geshi/geshi/m68k.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/m68k.php
rename to vendor/easybook/geshi/geshi/m68k.php
index 98321577b3c927df37a0889b2bfd0ac83114df5f..983c288ecb2c8ea462c6365b1e242e3ba5e3ffd0
--- a/inc/geshi/m68k.php
+++ b/vendor/easybook/geshi/geshi/m68k.php
@@ -139,5 +139,3 @@ $language_data = array (
         ),
     'TAB_WIDTH' => 8
 );
-
-?>
diff --git a/inc/geshi/magiksf.php b/vendor/easybook/geshi/geshi/magiksf.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/magiksf.php
rename to vendor/easybook/geshi/geshi/magiksf.php
diff --git a/inc/geshi/make.php b/vendor/easybook/geshi/geshi/make.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/make.php
rename to vendor/easybook/geshi/geshi/make.php
diff --git a/inc/geshi/mapbasic.php b/vendor/easybook/geshi/geshi/mapbasic.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/mapbasic.php
rename to vendor/easybook/geshi/geshi/mapbasic.php
diff --git a/inc/geshi/matlab.php b/vendor/easybook/geshi/geshi/matlab.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/matlab.php
rename to vendor/easybook/geshi/geshi/matlab.php
diff --git a/inc/geshi/mirc.php b/vendor/easybook/geshi/geshi/mirc.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/mirc.php
rename to vendor/easybook/geshi/geshi/mirc.php
diff --git a/inc/geshi/mmix.php b/vendor/easybook/geshi/geshi/mmix.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/mmix.php
rename to vendor/easybook/geshi/geshi/mmix.php
diff --git a/inc/geshi/modula2.php b/vendor/easybook/geshi/geshi/modula2.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/modula2.php
rename to vendor/easybook/geshi/geshi/modula2.php
diff --git a/inc/geshi/modula3.php b/vendor/easybook/geshi/geshi/modula3.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/modula3.php
rename to vendor/easybook/geshi/geshi/modula3.php
diff --git a/inc/geshi/mpasm.php b/vendor/easybook/geshi/geshi/mpasm.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/mpasm.php
rename to vendor/easybook/geshi/geshi/mpasm.php
index f724a9414d1ea4bbd07699de3fcd00c9f4fe9f13..a0e1ef8fffe6d7151991b07acdef5fd1742ddb9e
--- a/inc/geshi/mpasm.php
+++ b/vendor/easybook/geshi/geshi/mpasm.php
@@ -160,5 +160,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/mxml.php b/vendor/easybook/geshi/geshi/mxml.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/mxml.php
rename to vendor/easybook/geshi/geshi/mxml.php
index 0cc8287a2b1bc67e0baf69e1789a3c09190258aa..60dfe5f32c3159b8dda1445e95f62feabfa6250f
--- a/inc/geshi/mxml.php
+++ b/vendor/easybook/geshi/geshi/mxml.php
@@ -141,5 +141,3 @@ $language_data = array (
         ),
     'TAB_WIDTH' => 4
 );
-
-?>
diff --git a/inc/geshi/mysql.php b/vendor/easybook/geshi/geshi/mysql.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/mysql.php
rename to vendor/easybook/geshi/geshi/mysql.php
diff --git a/inc/geshi/nagios.php b/vendor/easybook/geshi/geshi/nagios.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/nagios.php
rename to vendor/easybook/geshi/geshi/nagios.php
index 32cbaef9ecb3b7fe1130992fe3d2be55743820f5..47254311ce541c61cdc4173c604114087ed0b3a3
--- a/inc/geshi/nagios.php
+++ b/vendor/easybook/geshi/geshi/nagios.php
@@ -221,5 +221,3 @@ $language_data = array(
             )
         )
 );
-
-?>
diff --git a/inc/geshi/netrexx.php b/vendor/easybook/geshi/geshi/netrexx.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/netrexx.php
rename to vendor/easybook/geshi/geshi/netrexx.php
index 14a2d23fddcd4fdd13d0f2b35b5d92ed24084991..b038aa4d5198bc5e253ce91bdd31a83f29290255
--- a/inc/geshi/netrexx.php
+++ b/vendor/easybook/geshi/geshi/netrexx.php
@@ -159,5 +159,3 @@ $language_data = array (
         ),
     'TAB_WIDTH' => 4
 );
-
-?>
diff --git a/inc/geshi/newlisp.php b/vendor/easybook/geshi/geshi/newlisp.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/newlisp.php
rename to vendor/easybook/geshi/geshi/newlisp.php
diff --git a/vendor/easybook/geshi/geshi/nginx.php b/vendor/easybook/geshi/geshi/nginx.php
new file mode 100644
index 0000000000000000000000000000000000000000..0d4fe3b4f94b9aebbeb5d554c1bc0a11200bc8c0
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/nginx.php
@@ -0,0 +1,868 @@
+<?php
+/*************************************************************************************
+ * nginx.php
+ * ------
+ * Author: Cliff Wells (cliff@nginx.org)
+ * Copyright: (c) Cliff Wells (http://wiki.nginx.org/CliffWells)
+ * Contributors:
+ *  - Deoren Moor (http://www.whyaskwhy.org/blog/)
+ *  - Thomas Joiner
+ * Release Version: 1.0.8.12
+ * Date Started: 2010/08/24
+ *
+ * nginx language file for GeSHi.
+ *
+ * Original release found at http://forum.nginx.org/read.php?2,123194,123210
+ *
+ * CHANGES
+ * -------
+ * 2012/08/29
+ *   - Clean up the duplicate keywords
+ *
+ * 2012/08/26
+ *   - Synchronized with directives listed on wiki/doc pages
+ *   - Misc formatting tweaks and language fixes to pass langcheck
+ *
+ * 2010/08/24
+ *   - First Release
+ *
+ * TODO (updated 2012/08/26)
+ * -------------------------
+ *  - Verify PARSER_CONTROL items are correct
+ *  - Verify REGEXPS
+ *  - Verify ['STYLES']['REGEXPS'] entries
+ *
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'nginx',
+    'COMMENT_SINGLE' => array(1 => '#'),
+    'COMMENT_MULTI' => array(),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '\\',
+    'KEYWORDS' => array(
+        1 => array( // core module
+            // http://wiki.nginx.org/CoreModule
+            // http://nginx.org/en/docs/ngx_core_module.html
+            'daemon',
+            'debug_points',
+            'env',
+            'error_log',
+            'events',
+            'include',
+            'lock_file',
+            'master_process',
+            'pcre_jit',
+            'pid',
+            'ssl_engine',
+            'timer_resolution',
+            'user',
+            'worker_cpu_affinity',
+            'worker_priority',
+            'worker_processes',
+            'worker_rlimit_core',
+            'worker_rlimit_nofile',
+            'worker_rlimit_sigpending',
+            'working_directory',
+            // see EventsModule due to organization of wiki
+            //'accept_mutex',
+            //'accept_mutex_delay',
+            //'debug_connection',
+            //'multi_accept',
+            //'use',
+            //'worker_connections',
+            ),
+        2 => array( // events module
+            // http://wiki.nginx.org/EventsModule
+            // http://nginx.org/en/docs/ngx_core_module.html
+            'accept_mutex',
+            'accept_mutex_delay',
+            'debug_connection',
+            'devpoll_changes',
+            'devpoll_events',
+            'kqueue_changes',
+            'kqueue_events',
+            'epoll_events',
+            'multi_accept',
+            'rtsig_signo',
+            'rtsig_overflow_events',
+            'rtsig_overflow_test',
+            'rtsig_overflow_threshold',
+            'use',
+            'worker_connections',
+            ),
+        3 => array( // http module
+            // http://wiki.nginx.org/HttpCoreModule
+            // http://nginx.org/en/docs/http/ngx_http_core_module.html
+            'aio',
+            'alias',
+            'chunked_transfer_encoding',
+            'client_body_buffer_size',
+            'client_body_in_file_only',
+            'client_body_in_single_buffer',
+            'client_body_temp_path',
+            'client_body_timeout',
+            'client_header_buffer_size',
+            'client_header_timeout',
+            'client_max_body_size',
+            'connection_pool_size',
+            'default_type',
+            'directio',
+            'directio_alignment',
+            'disable_symlinks',
+            'error_page',
+            'etag',
+            'http',
+            'if_modified_since',
+            'ignore_invalid_headers',
+            'internal',
+            'keepalive_disable',
+            'keepalive_requests',
+            'keepalive_timeout',
+            'large_client_header_buffers',
+            'limit_except',
+            'limit_rate',
+            'limit_rate_after',
+            'lingering_close',
+            'lingering_time',
+            'lingering_timeout',
+            'listen',
+            'location',
+            'log_not_found',
+            'log_subrequest',
+            'max_ranges',
+            'merge_slashes',
+            'msie_padding',
+            'msie_refresh',
+            'open_file_cache',
+            'open_file_cache_errors',
+            'open_file_cache_min_uses',
+            'open_file_cache_valid',
+            'optimize_server_names',
+            'port_in_redirect',
+            'postpone_output',
+            'read_ahead',
+            'recursive_error_pages',
+            'request_pool_size',
+            'reset_timedout_connection',
+            'resolver',
+            'resolver_timeout',
+            'root',
+            'satisfy',
+            'satisfy_any',
+            'send_lowat',
+            'send_timeout',
+            'sendfile',
+            'sendfile_max_chunk',
+            'server',
+            'server_name',
+            'server_name_in_redirect',
+            'server_names_hash_bucket_size',
+            'server_names_hash_max_size',
+            'server_tokens',
+            'tcp_nodelay',
+            'tcp_nopush',
+            'try_files',
+            'types',
+            'types_hash_bucket_size',
+            'types_hash_max_size',
+            'underscores_in_headers',
+            'variables_hash_bucket_size',
+            'variables_hash_max_size',
+            ),
+        4 => array( // upstream module
+            // http://wiki.nginx.org/HttpUpstreamModule
+            // http://nginx.org/en/docs/http/ngx_http_upstream_module.html
+            'ip_hash',
+            'keepalive',
+            'least_conn',
+            // Use the documentation from the core module since every conf will have at least one of those.
+            //'server',
+            'upstream',
+            ),
+        5 => array( // access module
+            // http://wiki.nginx.org/HttpAccessModule
+            // http://nginx.org/en/docs/http/ngx_http_access_module.html
+            'deny',
+            'allow',
+            ),
+        6 => array( // auth basic module
+            // http://wiki.nginx.org/HttpAuthBasicModule
+            // http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html
+            'auth_basic',
+            'auth_basic_user_file'
+            ),
+        7 => array( // auto index module
+            // http://wiki.nginx.org/HttpAutoindexModule
+            // http://nginx.org/en/docs/http/ngx_http_autoindex_module.html
+            'autoindex',
+            'autoindex_exact_size',
+            'autoindex_localtime',
+            ),
+        8 => array( // browser module
+            // http://wiki.nginx.org/HttpBrowserModule
+            // http://nginx.org/en/docs/http/ngx_http_browser_module.html
+            'ancient_browser',
+            'ancient_browser_value',
+            'modern_browser',
+            'modern_browser_value',
+            ),
+        9 => array( // charset module
+            // http://wiki.nginx.org/HttpCharsetModule
+            // http://nginx.org/en/docs/http/ngx_http_charset_module.html
+            'charset',
+            'charset_map',
+            'charset_types',
+            'override_charset',
+            'source_charset',
+            ),
+        10 => array( // empty gif module
+            // http://wiki.nginx.org/HttpEmptyGifModule
+            // http://nginx.org/en/docs/http/ngx_http_empty_gif_module.html
+            'empty_gif',
+            ),
+        11 => array( // fastcgi module
+            // http://wiki.nginx.org/HttpFastcgiModule
+            // http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html
+            'fastcgi_bind',
+            'fastcgi_buffer_size',
+            'fastcgi_buffers',
+            'fastcgi_busy_buffers_size',
+            'fastcgi_cache',
+            'fastcgi_cache_bypass',
+            'fastcgi_cache_key',
+            'fastcgi_cache_lock',
+            'fastcgi_cache_lock_timeout',
+            'fastcgi_cache_methods',
+            'fastcgi_cache_min_uses',
+            'fastcgi_cache_path',
+            'fastcgi_cache_use_stale',
+            'fastcgi_cache_valid',
+            'fastcgi_connect_timeout',
+            'fastcgi_hide_header',
+            'fastcgi_ignore_client_abort',
+            'fastcgi_ignore_headers',
+            'fastcgi_index',
+            'fastcgi_intercept_errors',
+            'fastcgi_keep_conn',
+            'fastcgi_max_temp_file_size',
+            'fastcgi_next_upstream',
+            'fastcgi_no_cache',
+            'fastcgi_param',
+            'fastcgi_pass',
+            'fastcgi_pass_header',
+            'fastcgi_pass_request_body',
+            'fastcgi_pass_request_headers',
+            'fastcgi_read_timeout',
+            'fastcgi_redirect_errors',
+            'fastcgi_send_timeout',
+            'fastcgi_split_path_info',
+            'fastcgi_store',
+            'fastcgi_store_access',
+            'fastcgi_temp_file_write_size',
+            'fastcgi_temp_path',
+            ),
+        12 => array( // geo module
+            // http://wiki.nginx.org/HttpGeoModule
+            // http://nginx.org/en/docs/http/ngx_http_geo_module.html
+            'geo'
+            ),
+        13 => array( // gzip module
+            // http://wiki.nginx.org/HttpGzipModule
+            // http://nginx.org/en/docs/http/ngx_http_gzip_module.html
+            'gzip',
+            'gzip_buffers',
+            'gzip_comp_level',
+            'gzip_disable',
+            'gzip_min_length',
+            'gzip_http_version',
+            'gzip_proxied',
+            'gzip_types',
+            'gzip_vary',
+            ),
+        14 => array( // headers module
+            // http://wiki.nginx.org/HttpHeadersModule
+            // http://nginx.org/en/docs/http/ngx_http_headers_module.html
+            'add_header',
+            'expires',
+            ),
+        15 => array( // index module
+            // http://wiki.nginx.org/HttpIndexModule
+            // http://nginx.org/en/docs/http/ngx_http_index_module.html
+            'index',
+            ),
+        16 => array( // limit requests module
+            // http://wiki.nginx.org/HttpLimitReqModule
+            // http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
+            'limit_req',
+            'limit_req_log_level',
+            'limit_req_zone',
+            ),
+        17 => array( // referer module
+            // http://wiki.nginx.org/HttpRefererModule
+            // http://nginx.org/en/docs/http/ngx_http_referer_module.html
+            'referer_hash_bucket_size',
+            'referer_hash_max_size',
+            'valid_referers',
+            ),
+        18 => array( // limit zone module
+            // deprecated in 1.1.8
+            // http://wiki.nginx.org/HttpLimitZoneModule
+            'limit_zone',
+            // Covered by documentation for ngx_http_limit_conn_module
+            //'limit_conn',
+            ),
+        19 => array( // limit connection module
+            // http://wiki.nginx.org/HttpLimitConnModule
+            // http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html
+            'limit_conn',
+            'limit_conn_zone',
+            'limit_conn_log_level',
+            ),
+        20 => array( // log module
+            // http://wiki.nginx.org/HttpLogModule
+            // http://nginx.org/en/docs/http/ngx_http_log_module.html
+            'access_log',
+            'log_format',
+            // Appears to be deprecated
+            'log_format_combined',
+            'open_log_file_cache',
+            ),
+        21 => array( // map module
+            // http://wiki.nginx.org/HttpMapModule
+            // http://nginx.org/en/docs/http/ngx_http_map_module.html
+            'map',
+            'map_hash_max_size',
+            'map_hash_bucket_size',
+            ),
+        22 => array( // memcached module
+            // http://wiki.nginx.org/HttpMemcachedModule
+            // http://nginx.org/en/docs/http/ngx_http_memcached_module.html
+            'memcached_buffer_size',
+            'memcached_connect_timeout',
+            'memcached_next_upstream',
+            'memcached_pass',
+            'memcached_read_timeout',
+            'memcached_send_timeout',
+            ),
+        23 => array( // proxy module
+            // http://wiki.nginx.org/HttpProxyModule
+            // http://nginx.org/en/docs/http/ngx_http_proxy_module.html
+            'proxy_bind',
+            'proxy_buffer_size',
+            'proxy_buffering',
+            'proxy_buffers',
+            'proxy_busy_buffers_size',
+            'proxy_cache',
+            'proxy_cache_bypass',
+            'proxy_cache_key',
+            'proxy_cache_lock',
+            'proxy_cache_lock_timeout',
+            'proxy_cache_methods',
+            'proxy_cache_min_uses',
+            'proxy_cache_path',
+            'proxy_cache_use_stale',
+            'proxy_cache_valid',
+            'proxy_connect_timeout',
+            'proxy_cookie_domain',
+            'proxy_cookie_path',
+            'proxy_headers_hash_bucket_size',
+            'proxy_headers_hash_max_size',
+            'proxy_hide_header',
+            'proxy_http_version',
+            'proxy_ignore_client_abort',
+            'proxy_ignore_headers',
+            'proxy_intercept_errors',
+            'proxy_max_temp_file_size',
+            'proxy_method',
+            'proxy_next_upstream',
+            'proxy_no_cache',
+            'proxy_pass',
+            'proxy_pass_header',
+            'proxy_pass_request_body',
+            'proxy_pass_request_headers',
+            'proxy_redirect',
+            'proxy_read_timeout',
+            'proxy_redirect_errors',
+            'proxy_send_lowat',
+            'proxy_send_timeout',
+            'proxy_set_body',
+            'proxy_set_header',
+            'proxy_ssl_session_reuse',
+            'proxy_store',
+            'proxy_store_access',
+            'proxy_temp_file_write_size',
+            'proxy_temp_path',
+            'proxy_upstream_fail_timeout',
+            'proxy_upstream_max_fails',
+            ),
+        24 => array( // rewrite module
+            // http://wiki.nginx.org/HttpRewriteModule
+            // http://nginx.org/en/docs/http/ngx_http_rewrite_module.html
+            'break',
+            'if',
+            'return',
+            'rewrite',
+            'rewrite_log',
+            'set',
+            'uninitialized_variable_warn',
+            ),
+        25 => array( // ssi module
+            // http://wiki.nginx.org/HttpSsiModule
+            // http://nginx.org/en/docs/http/ngx_http_ssi_module.html
+            'ssi',
+            'ssi_silent_errors',
+            'ssi_types',
+            'ssi_value_length',
+            ),
+        26 => array( // user id module
+            // http://wiki.nginx.org/HttpUseridModule
+            // http://nginx.org/en/docs/http/ngx_http_userid_module.html
+            'userid',
+            'userid_domain',
+            'userid_expires',
+            'userid_name',
+            'userid_p3p',
+            'userid_path',
+            'userid_service',
+            ),
+        27 => array( // addition module
+            // http://wiki.nginx.org/HttpAdditionModule
+            // http://nginx.org/en/docs/http/ngx_http_addition_module.html
+            'add_before_body',
+            'add_after_body',
+            'addition_types',
+            ),
+        28 => array( // embedded Perl module
+            // http://wiki.nginx.org/HttpPerlModule
+            // http://nginx.org/en/docs/http/ngx_http_perl_module.html
+            'perl',
+            'perl_modules',
+            'perl_require',
+            'perl_set',
+            ),
+        29 => array( // flash video files module
+            // http://wiki.nginx.org/HttpFlvModule
+            // http://nginx.org/en/docs/http/ngx_http_flv_module.html
+            'flv',
+            ),
+        30 => array( // gzip precompression module
+            // http://wiki.nginx.org/HttpGzipStaticModule
+            // http://nginx.org/en/docs/http/ngx_http_gzip_static_module.html
+            'gzip_static',
+            // Removed to remove duplication with ngx_http_gzip_module
+            //'gzip_http_version',
+            //'gzip_proxied',
+            //'gzip_disable',
+            //'gzip_vary',
+            ),
+        31 => array( // random index module
+            // http://wiki.nginx.org/HttpRandomIndexModule
+            // http://nginx.org/en/docs/http/ngx_http_random_index_module.html
+            'random_index',
+            ),
+        32 => array( // real ip module
+            // http://wiki.nginx.org/HttpRealipModule
+            // http://nginx.org/en/docs/http/ngx_http_realip_module.html
+            'set_real_ip_from',
+            'real_ip_header',
+            'real_ip_recursive',
+            ),
+        33 => array( // https module
+            // http://wiki.nginx.org/HttpSslModule
+            // http://nginx.org/en/docs/http/ngx_http_ssl_module.html
+            'ssl',
+            'ssl_certificate',
+            'ssl_certificate_key',
+            'ssl_ciphers',
+            'ssl_client_certificate',
+            'ssl_crl',
+            'ssl_dhparam',
+            // Use the documentation for the core module since it links to the
+            // original properly
+            //'ssl_engine',
+            'ssl_prefer_server_ciphers',
+            'ssl_protocols',
+            'ssl_session_cache',
+            'ssl_session_timeout',
+            'ssl_verify_client',
+            'ssl_verify_depth',
+            ),
+        34 => array( // status module
+            // http://wiki.nginx.org/HttpStubStatusModule
+            'stub_status',
+            ),
+        35 => array( // substitution module
+            // http://wiki.nginx.org/HttpSubModule
+            // http://nginx.org/en/docs/http/ngx_http_sub_module.html
+            'sub_filter',
+            'sub_filter_once',
+            'sub_filter_types',
+            ),
+        36 => array( // NginxHttpDavModule
+            // http://wiki.nginx.org/HttpDavModule
+            // http://nginx.org/en/docs/http/ngx_http_dav_module.html
+            'dav_access',
+            'dav_methods',
+            'create_full_put_path',
+            'min_delete_depth',
+            ),
+        37 => array( // Google performance tools module
+            // http://wiki.nginx.org/GooglePerftoolsModule
+            'google_perftools_profiles',
+            ),
+        38 => array( // xslt module
+            // http://wiki.nginx.org/HttpXsltModule
+            // http://nginx.org/en/docs/http/ngx_http_xslt_module.html
+            'xslt_entities',
+            'xslt_param',
+            'xslt_string_param',
+            'xslt_stylesheet',
+            'xslt_types',
+            ),
+        39 => array( // uWSGI module
+            // http://wiki.nginx.org/HttpUwsgiModule
+            'uwsgi_bind',
+            'uwsgi_buffer_size',
+            'uwsgi_buffering',
+            'uwsgi_buffers',
+            'uwsgi_busy_buffers_size',
+            'uwsgi_cache',
+            'uwsgi_cache_bypass',
+            'uwsgi_cache_key',
+            'uwsgi_cache_lock',
+            'uwsgi_cache_lock_timeout',
+            'uwsgi_cache_methods',
+            'uwsgi_cache_min_uses',
+            'uwsgi_cache_path',
+            'uwsgi_cache_use_stale',
+            'uwsgi_cache_valid',
+            'uwsgi_connect_timeout',
+            'uwsgi_hide_header',
+            'uwsgi_ignore_client_abort',
+            'uwsgi_ignore_headers',
+            'uwsgi_intercept_errors',
+            'uwsgi_max_temp_file_size',
+            'uwsgi_modifier',
+            'uwsgi_next_upstream',
+            'uwsgi_no_cache',
+            'uwsgi_param',
+            'uwsgi_pass',
+            'uwsgi_pass_header',
+            'uwsgi_pass_request_body',
+            'uwsgi_pass_request_headers',
+            'uwsgi_read_timeout',
+            'uwsgi_send_timeout',
+            'uwsgi_store',
+            'uwsgi_store_access',
+            'uwsgi_string',
+            'uwsgi_temp_file_write_size',
+            'uwsgi_temp_path',
+            ),
+        40 => array( // SCGI module
+            // http://wiki.nginx.org/HttpScgiModule
+            // Note: These directives were pulled from nginx 1.2.3
+            //       ngx_http_scgi_module.c source file.
+            'scgi_bind',
+            'scgi_buffering',
+            'scgi_buffers',
+            'scgi_buffer_size',
+            'scgi_busy_buffers_size',
+            'scgi_cache',
+            'scgi_cache_bypass',
+            'scgi_cache_key',
+            'scgi_cache_lock',
+            'scgi_cache_lock_timeout',
+            'scgi_cache_methods',
+            'scgi_cache_min_uses',
+            'scgi_cache_path',
+            'scgi_cache_use_stale',
+            'scgi_cache_valid',
+            'scgi_connect_timeout',
+            'scgi_hide_header',
+            'scgi_ignore_client_abort',
+            'scgi_ignore_headers',
+            'scgi_intercept_errors',
+            'scgi_max_temp_file_size',
+            'scgi_next_upstream',
+            'scgi_no_cache',
+            'scgi_param',
+            'scgi_pass',
+            'scgi_pass_header',
+            'scgi_pass_request_body',
+            'scgi_pass_request_headers',
+            'scgi_read_timeout',
+            'scgi_send_timeout',
+            'scgi_store',
+            'scgi_store_access',
+            'scgi_temp_file_write_size',
+            'scgi_temp_path',
+            ),
+        41 => array( // split clients module
+            // http://wiki.nginx.org/HttpSplitClientsModule
+            // http://nginx.org/en/docs/http/ngx_http_split_clients_module.html
+            'split_clients',
+            ),
+        42 => array( // X-Accel module
+            // http://wiki.nginx.org/X-accel
+            'X-Accel-Redirect',
+            'X-Accel-Buffering',
+            'X-Accel-Charset',
+            'X-Accel-Expires',
+            'X-Accel-Limit-Rate',
+            ),
+        43 => array( // degradation module
+            // http://wiki.nginx.org/HttpDegradationModule
+            'degradation',
+            'degrade',
+            ),
+        44 => array( // GeoIP module
+            // http://wiki.nginx.org/HttpGeoipModule
+            // http://nginx.org/en/docs/http/ngx_http_geoip_module.html
+            'geoip_country',
+            'geoip_city',
+            'geoip_proxy',
+            'geoip_proxy_recursive',
+            ),
+        45 => array( // Image filter module
+            // http://wiki.nginx.org/HttpImageFilterModule
+            // http://nginx.org/en/docs/http/ngx_http_image_filter_module.html
+            'image_filter',
+            'image_filter_buffer',
+            'image_filter_jpeg_quality',
+            'image_filter_sharpen',
+            'image_filter_transparency',
+            ),
+        46 => array( // MP4 module
+            // http://wiki.nginx.org/HttpMp4Module
+            // http://nginx.org/en/docs/http/ngx_http_mp4_module.html
+            'mp4',
+            'mp4_buffer_size',
+            'mp4_max_buffer_size',
+            ),
+        47 => array( // Secure Link module
+            // http://wiki.nginx.org/HttpSecureLinkModule
+            // http://nginx.org/en/docs/http/ngx_http_secure_link_module.html
+            'secure_link',
+            'secure_link_md',
+            'secure_link_secret',
+            ),
+        48 => array( // Mail Core module
+            // http://wiki.nginx.org/MailCoreModule
+            'auth',
+            'imap_capabilities',
+            'imap_client_buffer',
+            'pop_auth',
+            'pop_capabilities',
+            'protocol',
+            'smtp_auth',
+            'smtp_capabilities',
+            'so_keepalive',
+            'timeout',
+            // Removed to prioritize documentation for core module
+            //'listen',
+            //'server',
+            //'server_name',
+            ),
+        49 => array( // Mail Auth module
+            // http://wiki.nginx.org/MailAuthModule
+            'auth_http',
+            'auth_http_header',
+            'auth_http_timeout',
+            ),
+        50 => array( // Mail Proxy module
+            // http://wiki.nginx.org/MailProxyModule
+            'proxy',
+            'proxy_buffer',
+            'proxy_pass_error_message',
+            'proxy_timeout',
+            'xclient',
+            ),
+        51 => array( // Mail SSL module
+            // http://wiki.nginx.org/MailSslModule
+            // Removed to prioritize documentation for http
+            //'ssl',
+            //'ssl_certificate',
+            //'ssl_certificate_key',
+            //'ssl_ciphers',
+            //'ssl_prefer_server_ciphers',
+            //'ssl_protocols',
+            //'ssl_session_cache',
+            //'ssl_session_timeout',
+            'starttls',
+            ),
+        ),
+    'SYMBOLS' => array(
+        '(', ')', '{', '}', '=', '~', ';'
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => true,
+        1 => true,
+        2 => true,
+        3 => true,
+        4 => true,
+        5 => true,
+        6 => true,
+        7 => true,
+        8 => true,
+        9 => true,
+        10 => true,
+        11 => true,
+        12 => true,
+        13 => true,
+        14 => true,
+        15 => true,
+        16 => true,
+        17 => true,
+        18 => true,
+        19 => true,
+        20 => true,
+        21 => true,
+        22 => true,
+        23 => true,
+        24 => true,
+        25 => true,
+        26 => true,
+        27 => true,
+        28 => true,
+        29 => true,
+        30 => true,
+        31 => true,
+        32 => true,
+        33 => true,
+        34 => true,
+        35 => true,
+        36 => true,
+        37 => true,
+        38 => true,
+        39 => true,
+        40 => true,
+        41 => true,
+        42 => true,
+        43 => true,
+        44 => true,
+        45 => true,
+        46 => true,
+        47 => true,
+        48 => true,
+        49 => true,
+        50 => true,
+        51 => true,
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #b1b100;',
+            2 => 'color: #000000; font-weight: bold;',
+            3 => 'color: #000066;',
+            4 => 'color: #993333;'
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #808080; font-style: italic;',
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #000099; font-weight: bold;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #66cc66;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #ff0000;'
+            ),
+        'NUMBERS' => array(
+            ),
+        'METHODS' => array(
+            1 => 'color: #202020;',
+            2 => 'color: #202020;'
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #66cc66;'
+            ),
+        'REGEXPS' => array(
+            0 => 'color: #000066;',
+            4 => 'color: #000000; font-weight: bold;',
+        ),
+        'SCRIPT' => array()
+        ),
+    'URLS' => array(
+        1 => 'http://wiki.nginx.org/CoreModule#{FNAME}',
+        2 => 'http://wiki.nginx.org/NginxHttpEventsModule#{FNAME}',
+        3 => 'http://wiki.nginx.org/NginxHttpCoreModule#{FNAME}',
+        4 => 'http://wiki.nginx.org/NginxHttpUpstreamModule#{FNAME}',
+        5 => 'http://wiki.nginx.org/NginxHttpAccessModule#{FNAME}',
+        6 => 'http://wiki.nginx.org/NginxHttpAuthBasicModule#{FNAME}',
+        7 => 'http://wiki.nginx.org/NginxHttpAutoIndexModule#{FNAME}',
+        8 => 'http://wiki.nginx.org/NginxHttpBrowserModule#{FNAME}',
+        9 => 'http://wiki.nginx.org/NginxHttpCharsetModule#{FNAME}',
+        10 => 'http://wiki.nginx.org/NginxHttpEmptyGifModule#{FNAME}',
+        11 => 'http://wiki.nginx.org/NginxHttpFcgiModule#{FNAME}',
+        12 => 'http://wiki.nginx.org/NginxHttpGeoModule#{FNAME}',
+        13 => 'http://wiki.nginx.org/NginxHttpGzipModule#{FNAME}',
+        14 => 'http://wiki.nginx.org/NginxHttpHeadersModule#{FNAME}',
+        15 => 'http://wiki.nginx.org/NginxHttpIndexModule#{FNAME}',
+        16 => 'http://wiki.nginx.org/HttpLimitReqModule#{FNAME}',
+        17 => 'http://wiki.nginx.org/NginxHttpRefererModule#{FNAME}',
+        18 => 'http://wiki.nginx.org/NginxHttpLimitZoneModule#{FNAME}',
+        19 => 'http://wiki.nginx.org/HttpLimitConnModule#{FNAME}',
+        20 => 'http://wiki.nginx.org/NginxHttpLogModule#{FNAME}',
+        21 => 'http://wiki.nginx.org/NginxHttpMapModule#{FNAME}',
+        22 => 'http://wiki.nginx.org/NginxHttpMemcachedModule#{FNAME}',
+        23 => 'http://wiki.nginx.org/NginxHttpProxyModule#{FNAME}',
+        24 => 'http://wiki.nginx.org/NginxHttpRewriteModule#{FNAME}',
+        25 => 'http://wiki.nginx.org/NginxHttpSsiModule#{FNAME}',
+        26 => 'http://wiki.nginx.org/NginxHttpUserIdModule#{FNAME}',
+        27 => 'http://wiki.nginx.org/NginxHttpAdditionModule#{FNAME}',
+        28 => 'http://wiki.nginx.org/NginxHttpEmbeddedPerlModule#{FNAME}',
+        29 => 'http://wiki.nginx.org/NginxHttpFlvStreamModule#{FNAME}',
+        30 => 'http://wiki.nginx.org/NginxHttpGzipStaticModule#{FNAME}',
+        31 => 'http://wiki.nginx.org/NginxHttpRandomIndexModule#{FNAME}',
+        32 => 'http://wiki.nginx.org/NginxHttpRealIpModule#{FNAME}',
+        33 => 'http://wiki.nginx.org/NginxHttpSslModule#{FNAME}',
+        34 => 'http://wiki.nginx.org/NginxHttpStubStatusModule#{FNAME}',
+        35 => 'http://wiki.nginx.org/NginxHttpSubModule#{FNAME}',
+        36 => 'http://wiki.nginx.org/NginxHttpDavModule#{FNAME}',
+        37 => 'http://wiki.nginx.org/NginxHttpGooglePerfToolsModule#{FNAME}',
+        38 => 'http://wiki.nginx.org/NginxHttpXsltModule#{FNAME}',
+        39 => 'http://wiki.nginx.org/NginxHttpUwsgiModule#{FNAME}',
+        40 => 'http://wiki.nginx.org/HttpScgiModule',
+        41 => 'http://wiki.nginx.org/HttpSplitClientsModule#{FNAME}',
+        42 => 'http://wiki.nginx.org/X-accel#{FNAME}',
+        43 => 'http://wiki.nginx.org/HttpDegradationModule#{FNAME}',
+        44 => 'http://wiki.nginx.org/HttpGeoipModule#{FNAME}',
+        45 => 'http://wiki.nginx.org/HttpImageFilterModule#{FNAME}',
+        46 => 'http://wiki.nginx.org/HttpMp4Module#{FNAME}',
+        47 => 'http://wiki.nginx.org/HttpSecureLinkModule#{FNAME}',
+        48 => 'http://wiki.nginx.org/MailCoreModule#{FNAME}',
+        49 => 'http://wiki.nginx.org/MailAuthModule#{FNAME}',
+        50 => 'http://wiki.nginx.org/MailProxyModule#{FNAME}',
+        51 => 'http://wiki.nginx.org/MailSslModule#{FNAME}',
+        ),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(),
+    'REGEXPS' => array(
+        0 => '[\\$%@]+[a-zA-Z_][a-zA-Z0-9_]*',
+        4 => '&lt;[a-zA-Z_][a-zA-Z0-9_]*&gt;',
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(),
+    'HIGHLIGHT_STRICT_BLOCK' => array()
+);
diff --git a/inc/geshi/nsis.php b/vendor/easybook/geshi/geshi/nsis.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/nsis.php
rename to vendor/easybook/geshi/geshi/nsis.php
index 35df9b4b8113daf38271420215b734daf7b2055e..29ba952b4aecdfa99772e11c9988d67004a4cbcd
--- a/inc/geshi/nsis.php
+++ b/vendor/easybook/geshi/geshi/nsis.php
@@ -347,5 +347,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/oberon2.php b/vendor/easybook/geshi/geshi/oberon2.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/oberon2.php
rename to vendor/easybook/geshi/geshi/oberon2.php
diff --git a/inc/geshi/objc.php b/vendor/easybook/geshi/geshi/objc.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/objc.php
rename to vendor/easybook/geshi/geshi/objc.php
index 2f5162d76f69e000404631905b3d6bf08a74546a..52576c16a547ca01d19ff42e4446c0eb2683458b
--- a/inc/geshi/objc.php
+++ b/vendor/easybook/geshi/geshi/objc.php
@@ -354,5 +354,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/objeck.php b/vendor/easybook/geshi/geshi/objeck.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/objeck.php
rename to vendor/easybook/geshi/geshi/objeck.php
diff --git a/inc/geshi/ocaml-brief.php b/vendor/easybook/geshi/geshi/ocaml-brief.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/ocaml-brief.php
rename to vendor/easybook/geshi/geshi/ocaml-brief.php
index b518adf8775016f46f92410fb5ad7f9284ac73bc..c5fee2feca83cb939a28e2ef595bd66a116fbe18
--- a/inc/geshi/ocaml-brief.php
+++ b/vendor/easybook/geshi/geshi/ocaml-brief.php
@@ -108,5 +108,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/ocaml.php b/vendor/easybook/geshi/geshi/ocaml.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/ocaml.php
rename to vendor/easybook/geshi/geshi/ocaml.php
diff --git a/inc/geshi/octave.php b/vendor/easybook/geshi/geshi/octave.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/octave.php
rename to vendor/easybook/geshi/geshi/octave.php
index ccffcd97aa466070464f06b225428b52d1193ac4..7bab9b1389c865a557d38ac1ac61d5ecfeb1054b
--- a/inc/geshi/octave.php
+++ b/vendor/easybook/geshi/geshi/octave.php
@@ -511,5 +511,3 @@ $language_data = array (
         'SCRIPT' => array(),
         )
 );
-
-?>
diff --git a/inc/geshi/oobas.php b/vendor/easybook/geshi/geshi/oobas.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/oobas.php
rename to vendor/easybook/geshi/geshi/oobas.php
index ff75af65f3b376be3c4b9b85e88c4d16816910bc..25c345bbb9601b7b5c952e261cc3d61d3b5e1873
--- a/inc/geshi/oobas.php
+++ b/vendor/easybook/geshi/geshi/oobas.php
@@ -131,5 +131,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/oorexx.php b/vendor/easybook/geshi/geshi/oorexx.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/oorexx.php
rename to vendor/easybook/geshi/geshi/oorexx.php
index 62c6cc46341c8333140956df66828037184fdb54..15cdd92e7cf14a8bc45a9a74a7e2d456d1967a13
--- a/inc/geshi/oorexx.php
+++ b/vendor/easybook/geshi/geshi/oorexx.php
@@ -167,5 +167,3 @@ $language_data = array (
         ),
     'TAB_WIDTH' => 4
 );
-
-?>
diff --git a/inc/geshi/oracle11.php b/vendor/easybook/geshi/geshi/oracle11.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/oracle11.php
rename to vendor/easybook/geshi/geshi/oracle11.php
index 16259e6953065675a0dd992371e644ff615e85b4..97b147f5d188192c2e4047ae395f0d173a1c5360
--- a/inc/geshi/oracle11.php
+++ b/vendor/easybook/geshi/geshi/oracle11.php
@@ -610,5 +610,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/oracle8.php b/vendor/easybook/geshi/geshi/oracle8.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/oracle8.php
rename to vendor/easybook/geshi/geshi/oracle8.php
index 145bda407751b48350cffaaded565459f4fbd8b6..b49390806c646451ad094dd7c989d409f8dfc132
--- a/inc/geshi/oracle8.php
+++ b/vendor/easybook/geshi/geshi/oracle8.php
@@ -492,5 +492,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/oxygene.php b/vendor/easybook/geshi/geshi/oxygene.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/oxygene.php
rename to vendor/easybook/geshi/geshi/oxygene.php
diff --git a/inc/geshi/oz.php b/vendor/easybook/geshi/geshi/oz.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/oz.php
rename to vendor/easybook/geshi/geshi/oz.php
diff --git a/inc/geshi/parasail.php b/vendor/easybook/geshi/geshi/parasail.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/parasail.php
rename to vendor/easybook/geshi/geshi/parasail.php
diff --git a/vendor/easybook/geshi/geshi/parigp.php b/vendor/easybook/geshi/geshi/parigp.php
new file mode 100755
index 0000000000000000000000000000000000000000..1a5d4a73ec5c5467293da2beebec5783dddc918d
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/parigp.php
@@ -0,0 +1,293 @@
+<?php
+/*************************************************************************************
+ * parigp.php
+ * --------
+ * Author: Charles R Greathouse IV (charles@crg4.com)
+ * Copyright: 2011-2013 Charles R Greathouse IV (http://math.crg4.com/)
+ * Release Version: 1.0.8.12
+ * Date Started: 2011/05/11
+ *
+ * PARI/GP language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2011/07/09 (1.0.8.11)
+ *  -  First Release
+ * 2013/02/05 (1.0.8.12)
+ *  -  Added 2.6.0 commands, default, member functions, and error-handling
+ *
+ * TODO (updated 2011/07/09)
+ * -------------------------
+ *
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array(
+    'LANG_NAME' => 'PARI/GP',
+    'COMMENT_SINGLE' => array(1 => '\\\\'),
+    'COMMENT_MULTI' => array('/*' => '*/'),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array('"'),
+    'ESCAPE_CHAR' => '\\',
+    'NUMBERS' => array(
+        # Integers
+        1 => GESHI_NUMBER_INT_BASIC,
+        # Reals
+        2 => GESHI_NUMBER_FLT_SCI_ZERO
+        ),
+    'KEYWORDS' => array(
+        1 => array(
+            'abs','acos','acosh','addhelp','addprimes','agm','alarm','algdep',
+            'alias','allocatemem','apply','arg','asin','asinh','atan','atanh',
+            'bernfrac','bernpol','bernreal','bernvec','besselh1','besselh2',
+            'besseli','besselj','besseljh','besselk','besseln','bestappr',
+            'bestapprPade','bezout','bezoutres','bigomega','binary','binomial',
+            'bitand','bitneg','bitnegimply','bitor','bittest','bitxor',
+            'bnfcertify','bnfcompress','bnfdecodemodule','bnfinit',
+            'bnfisintnorm','bnfisnorm','bnfisprincipal','bnfissunit',
+            'bnfisunit','bnfnarrow','bnfsignunit','bnfsunit','bnrclassno',
+            'bnrclassnolist','bnrconductor','bnrconductorofchar','bnrdisc',
+            'bnrdisclist','bnrinit','bnrisconductor','bnrisprincipal','bnrL1',
+            'bnrrootnumber','bnrstark','break','breakpoint','Catalan','ceil',
+            'centerlift','charpoly','chinese','cmp','Col','component','concat',
+            'conj','conjvec','content','contfrac','contfracpnqn','core',
+            'coredisc','cos','cosh','cotan','dbg_down','dbg_err','dbg_up',
+            'dbg_x','default','denominator','deriv','derivnum','diffop',
+            'digits','dilog','dirdiv','direuler','dirmul','dirzetak','divisors',
+            'divrem','eint1','elladd','ellak','ellan','ellanalyticrank','ellap',
+            'ellbil','ellcard','ellchangecurve','ellchangepoint',
+            'ellconvertname','elldivpol','elleisnum','elleta','ellffinit',
+            'ellfromj','ellgenerators','ellglobalred','ellgroup','ellheegner',
+            'ellheight','ellheightmatrix','ellidentify','ellinit',
+            'ellisoncurve','ellj','ellL1','elllocalred','elllog','elllseries',
+            'ellminimalmodel','ellmodulareqn','ellmul','ellneg','ellorder',
+            'ellordinate','ellpointtoz','ellrootno','ellsearch','ellsigma',
+            'ellsub','elltaniyama','elltatepairing','elltors','ellweilpairing',
+            'ellwp','ellzeta','ellztopoint','erfc','errname','error','eta','Euler',
+            'eulerphi','eval','exp','extern','externstr','factor','factorback',
+            'factorcantor','factorff','factorial','factorint','factormod',
+            'factornf','factorpadic','ffgen','ffinit','fflog','ffnbirred',
+            'fforder','ffprimroot','fibonacci','floor','for','forcomposite','fordiv','forell',
+            'forprime','forqfvec','forstep','forsubgroup','forvec','frac','galoisexport',
+            'galoisfixedfield','galoisgetpol','galoisidentify','galoisinit',
+            'galoisisabelian','galoisisnormal','galoispermtopol',
+            'galoissubcyclo','galoissubfields','galoissubgroups','gamma',
+            'gammah','gcd','getenv','getheap','getrand','getstack','gettime',
+            'global','hammingweight','hilbert','hyperu','I','idealadd',
+            'idealaddtoone','idealappr','idealchinese','idealcoprime',
+            'idealdiv','idealfactor','idealfactorback','idealfrobenius',
+            'idealhnf','idealintersect','idealinv','ideallist','ideallistarch',
+            'ideallog','idealmin','idealmul','idealnorm','idealnumden',
+            'idealpow','idealprimedec','idealramgroups','idealred','idealstar',
+            'idealtwoelt','idealval','if','iferr','iferrname','imag','incgam','incgamc','input',
+            'install','intcirc','intformal','intfouriercos','intfourierexp',
+            'intfouriersin','intfuncinit','intlaplaceinv','intmellininv',
+            'intmellininvshort','intnum','intnuminit','intnuminitgen',
+            'intnumromb','intnumstep','isfundamental','ispolygonal','ispower','ispowerful',
+            'isprime','isprimepower','ispseudoprime','issquare','issquarefree','istotient',
+            'kill','kronecker','lcm','length','lex','lift','lindep','List',
+            'listcreate','listinsert','listkill','listpop','listput','listsort',
+            'lngamma','local','log','Mat','matadjoint','matalgtobasis',
+            'matbasistoalg','matcompanion','matconcat','matcontent','matdet','matdetint',
+            'matdiagonal','mateigen','matfrobenius','mathess','mathilbert',
+            'mathnf','mathnfmod','mathnfmodid','matid','matimage',
+            'matimagecompl','matindexrank','matintersect','matinverseimage',
+            'matisdiagonal','matker','matkerint','matmuldiagonal',
+            'matmultodiagonal','matpascal','matrank','matrix','matrixqz',
+            'matsize','matsnf','matsolve','matsolvemod','matsupplement',
+            'mattranspose','max','min','minpoly','Mod','modreverse','moebius',
+            'my','newtonpoly','next','nextprime','nfalgtobasis','nfbasis',
+            'nfbasistoalg','nfdetint','nfdisc','nfeltadd','nfeltdiv',
+            'nfeltdiveuc','nfeltdivmodpr','nfeltdivrem','nfeltmod','nfeltmul',
+            'nfeltmulmodpr','nfeltnorm','nfeltpow','nfeltpowmodpr',
+            'nfeltreduce','nfeltreducemodpr','nfelttrace','nfeltval','nffactor',
+            'nffactorback','nffactormod','nfgaloisapply','nfgaloisconj',
+            'nfhilbert','nfhnf','nfhnfmod','nfinit','nfisideal','nfisincl',
+            'nfisisom','nfkermodpr','nfmodprinit','nfnewprec','nfroots',
+            'nfrootsof1','nfsnf','nfsolvemodpr','nfsubfields','norm','norml2',
+            'numbpart','numdiv','numerator','numtoperm','O','omega','padicappr',
+            'padicfields','padicprec','partitions','permtonum','Pi','plot',
+            'plotbox','plotclip','plotcolor','plotcopy','plotcursor','plotdraw',
+            'ploth','plothraw','plothsizes','plotinit','plotkill','plotlines',
+            'plotlinetype','plotmove','plotpoints','plotpointsize',
+            'plotpointtype','plotrbox','plotrecth','plotrecthraw','plotrline',
+            'plotrmove','plotrpoint','plotscale','plotstring','Pol',
+            'polchebyshev','polcoeff','polcompositum','polcyclo','polcyclofactors','poldegree',
+            'poldisc','poldiscreduced','polgalois','polgraeffe','polhensellift',
+            'polhermite','polinterpolate','poliscyclo','poliscycloprod',
+            'polisirreducible','pollead','pollegendre','polrecip','polred',
+            'polredabs','polredbest','polredord','polresultant','Polrev','polroots',
+            'polrootsff','polrootsmod','polrootspadic','polsturm','polsubcyclo',
+            'polsylvestermatrix','polsym','poltchebi','poltschirnhaus',
+            'polylog','polzagier','precision','precprime','prime','primepi',
+            'primes','print','print1','printf','printsep','printtex','prod','prodeuler',
+            'prodinf','psdraw','psi','psploth','psplothraw','Qfb','qfbclassno',
+            'qfbcompraw','qfbhclassno','qfbnucomp','qfbnupow','qfbpowraw',
+            'qfbprimeform','qfbred','qfbsolve','qfgaussred','qfjacobi','qflll',
+            'qflllgram','qfminim','qfperfection','qfrep','qfsign',
+            'quadclassunit','quaddisc','quadgen','quadhilbert','quadpoly',
+            'quadray','quadregulator','quadunit','quit','random','randomprime','read',
+            'readvec','real','removeprimes','return','rnfalgtobasis','rnfbasis',
+            'rnfbasistoalg','rnfcharpoly','rnfconductor','rnfdedekind','rnfdet',
+            'rnfdisc','rnfeltabstorel','rnfeltdown','rnfeltreltoabs','rnfeltup',
+            'rnfequation','rnfhnfbasis','rnfidealabstorel','rnfidealdown',
+            'rnfidealhnf','rnfidealmul','rnfidealnormabs','rnfidealnormrel',
+            'rnfidealreltoabs','rnfidealtwoelt','rnfidealup','rnfinit',
+            'rnfisabelian','rnfisfree','rnfisnorm','rnfisnorminit','rnfkummer',
+            'rnflllgram','rnfnormgroup','rnfpolred','rnfpolredabs',
+            'rnfpseudobasis','rnfsteinitz','round','select','Ser','serconvol',
+            'serlaplace','serreverse','Set','setbinop','setintersect',
+            'setisset','setminus','setrand','setsearch','setunion','shift',
+            'shiftmul','sigma','sign','simplify','sin','sinh','sizebyte',
+            'sizedigit','solve','sqr','sqrt','sqrtint','sqrtn','sqrtnint','stirling','Str',
+            'Strchr','Strexpand','Strprintf','Strtex','subgrouplist','subst',
+            'substpol','substvec','sum','sumalt','sumdedekind','sumdiv','sumdivmult','sumdigits',
+            'sumformal','suminf','sumnum','sumnumalt','sumnuminit','sumpos','system','tan',
+            'tanh','taylor','teichmuller','theta','thetanullk','thue',
+            'thueinit','trace','trap','truncate','type','until','valuation',
+            'variable','Vec','vecextract','vecmax','vecmin','Vecrev',
+            'vecsearch','Vecsmall','vecsort','vector','vectorsmall','vectorv',
+            'version','warning','weber','whatnow','while','write','write1',
+            'writebin','writetex','zeta','zetak','zetakinit','zncoppersmith',
+            'znlog','znorder','znprimroot','znstar'
+            ),
+
+        2 => array(
+            'void','bool','negbool','small','int',/*'real',*/'mp','var','lg','pol',
+            'vecsmall','vec','list','str','genstr','gen','typ'
+            ),
+
+        3 => array(
+            'TeXstyle','breakloop','colors','compatible','datadir','debug',
+            'debugfiles','debugmem','echo','factor_add_primes','factor_proven',
+            'format','graphcolormap','graphcolors','help','histfile','histsize',
+            'lines','linewrap',/*'log',*/'logfile','new_galois_format','output',
+            'parisize','path','prettyprinter','primelimit','prompt_cont',
+            'prompt','psfile','readline','realprecision','recover','secure',
+            'seriesprecision',/*'simplify',*/'sopath','strictmatch','timer'
+            ),
+
+        4 => array(
+            '"e_ARCH"','"e_BUG"','"e_FILE"','"e_IMPL"','"e_PACKAGE"','"e_DIM"',
+            '"e_FLAG"','"e_NOTFUNC"','"e_OP"','"e_TYPE"','"e_TYPE2"',
+            '"e_PRIORITY"','"e_VAR"','"e_DOMAIN"','"e_MAXPRIME"','"e_MEM"',
+            '"e_OVERFLOW"','"e_PREC"','"e_STACK"','"e_ALARM"','"e_USER"',
+            '"e_CONSTPOL"','"e_COPRIME"','"e_INV"','"e_IRREDPOL"','"e_MISC"',
+            '"e_MODULUS"','"e_NEGVAL"','"e_PRIME"','"e_ROOTS0"','"e_SQRTN"'
+            )
+        ),
+    'SYMBOLS' => array(
+        1 => array(
+            '(',')','{','}','[',']','+','-','*','/','%','=','<','>','!','^','&','|','?',';',':',',','\\','\''
+            )
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => true,
+        2 => true,
+        3 => true,
+        4 => true
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #0000ff;',
+            2 => 'color: #e07022;',
+            3 => 'color: #00d2d2;',
+            4 => 'color: #00d2d2;'
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #008000;',
+            'MULTI' => 'color: #008000;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #111111; font-weight: bold;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #002222;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #800080;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #666666;',
+            1 => 'color: #666666;',
+            2 => 'color: #666666;'
+            ),
+        'METHODS' => array(
+            0 => 'color: #004000;'
+            ),
+        'SYMBOLS' => array(
+            1 => 'color: #339933;'
+            ),
+        'REGEXPS' => array(
+            0 => 'color: #e07022',    # Should be the same as keyword group 2
+            1 => 'color: #555555',
+            2 => 'color: #0000ff'     # Should be the same as keyword group 1
+            ),
+        'SCRIPT' => array()
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => ''
+        ),
+    'OOLANG' => true,
+    'OBJECT_SPLITTERS' => array(
+        1 => '.'
+        ),
+    'REGEXPS' => array(
+        0 => array( # types marked on variables
+            GESHI_SEARCH => '(?<!\\\\ )"(t_(?:INT|REAL|INTMOD|FRAC|FFELT|COMPLEX|PADIC|QUAD|POLMOD|POL|SER|RFRAC|QFR|QFI|VEC|COL|MAT|LIST|STR|VECSMALL|CLOSURE|ERROR))"',
+            GESHI_REPLACE => '\\1',
+            GESHI_MODIFIERS => '',
+            GESHI_BEFORE => '"',
+            GESHI_AFTER => '"'
+            ),
+        1 => array( # literal variables
+            GESHI_SEARCH => '(?<!\\\\)(\'[a-zA-Z][a-zA-Z0-9_]*)',
+            GESHI_REPLACE => '\\1',
+            GESHI_MODIFIERS => '',
+            GESHI_BEFORE => '',
+            GESHI_AFTER => ''
+            ),
+        2 => array( # member functions
+            GESHI_SEARCH => '(?<=[.])(a[1-6]|b[2-8]|c[4-6]|area|bid|bnf|clgp|cyc|diff|disc|[efjp]|fu|gen|index|mod|nf|no|omega|pol|reg|roots|sign|r[12]|t2|tate|tu|zk|zkst)\b',
+            GESHI_REPLACE => '\\1',
+            GESHI_MODIFIERS => '',
+            GESHI_BEFORE => '',
+            GESHI_AFTER => ''
+            )
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        2 => array(
+            '[a-zA-Z][a-zA-Z0-9_]*:' => ''
+            ),
+        3 => array(
+            'default(' => ''
+            ),
+        4 => array(
+            'iferrname(' => ''
+            ),
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array()
+);
diff --git a/inc/geshi/pascal.php b/vendor/easybook/geshi/geshi/pascal.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/pascal.php
rename to vendor/easybook/geshi/geshi/pascal.php
diff --git a/inc/geshi/pcre.php b/vendor/easybook/geshi/geshi/pcre.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/pcre.php
rename to vendor/easybook/geshi/geshi/pcre.php
diff --git a/inc/geshi/per.php b/vendor/easybook/geshi/geshi/per.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/per.php
rename to vendor/easybook/geshi/geshi/per.php
index c42ddb58a76e6b28054e978cb8ca4581fa995bc1..c3b5d15082c814b0dcdb2ec25b295b89985d38ef
--- a/inc/geshi/per.php
+++ b/vendor/easybook/geshi/geshi/per.php
@@ -298,5 +298,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/perl.php b/vendor/easybook/geshi/geshi/perl.php
old mode 100644
new mode 100755
similarity index 89%
rename from inc/geshi/perl.php
rename to vendor/easybook/geshi/geshi/perl.php
index 309ebd86120fdccd1a3b1d6ec8199bc712e404e7..2c3dc92fe6423a144c7eb2cfbf47dd8e5a7e3e05
--- a/inc/geshi/perl.php
+++ b/vendor/easybook/geshi/geshi/perl.php
@@ -74,6 +74,12 @@ $language_data = array (
         //Predefined variables
         5 => '/\$(\^[a-zA-Z]?|[\*\$`\'&_\.,+\-~:;\\\\\/"\|%=\?!@#<>\(\)\[\]])(?!\w)|@[_+\-]|%[!]|\$(?=\{)/',
         ),
+    'NUMBERS' => array(
+        // Includes rules for decimal, octal (0777), hexidecimal (0xDEADBEEF),
+        // binary (0b101010) numbers, amended to work with underscores (since
+        // Perl allows you to use underscores in number literals)
+        0 => '(?:(?<![0-9a-z_\.%$@])|(?<=\.\.))(?<![\d\._]e[+\-])([1-9][\d_]*?|0)(?![0-9a-z_]|\.(?:[eE][+\-]?)?[\d_])|(?<![0-9a-z_\.%])(?<![\d\._]e[+\-])0b[01_]+?(?![0-9a-z_]|\.(?:[eE][+\-]?)?[\d_])|(?<![0-9a-z_\.])(?<![\d\._]e[+\-])0[0-7_]+?(?![0-9a-z_]|\.(?:[eE][+\-]?)?[\d_])|(?<![0-9a-z_\.])(?<![\d\._]e[+\-])0x[0-9a-fA-F_]+?(?![0-9a-z_]|\.(?:[eE][+\-]?)?[\d_])|(?<![0-9a-z_\.])(?<![\d\._]e[+\-])[\d_]+?\.[\d_]+?(?![0-9a-z_]|\.(?:[eE][+\-]?)?[\d_])',
+        ),
     'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
     'QUOTEMARKS' => array('"','`'),
     'HARDQUOTE' => array("'", "'"),            // An optional 2-element array defining the beginning and end of a hard-quoted string
@@ -106,7 +112,7 @@ $language_data = array (
             'getnetent', 'getpeername', 'getpgrp', 'getppid', 'getpriority',
             'getprotobyname', 'getprotobynumber', 'getprotoent', 'getpwent',
             'getpwnam', 'getpwuid', 'getservbyname', 'getservbyport', 'getservent',
-            'getsockname', 'getsockopt', 'glob', 'gmtime', 'goto', 'grep',
+            'getsockname', 'getsockopt', 'given', 'glob', 'gmtime', 'goto', 'grep',
             'hex', 'import', 'index', 'int', 'ioctl', 'join', 'keys', 'kill',
             'lc', 'lcfirst', 'length', 'link', 'listen', 'local',
             'localtime', 'log', 'lstat', 'm', 'map', 'mkdir', 'msgctl', 'msgget',
@@ -115,17 +121,17 @@ $language_data = array (
             'printf', 'prototype', 'push', 'qq', 'qr', 'quotemeta', 'qw',
             'qx', 'q', 'rand', 'read', 'readdir', 'readline', 'readlink', 'readpipe',
             'recv', 'ref', 'rename', 'require', 'return',
-            'reverse', 'rewinddir', 'rindex', 'rmdir', 's', 'scalar', 'seek',
+            'reverse', 'rewinddir', 'rindex', 'rmdir', 's', 'say', 'scalar', 'seek',
             'seekdir', 'select', 'semctl', 'semget', 'semop', 'send', 'setgrent',
             'sethostent', 'setnetent', 'setpgrp', 'setpriority', 'setprotoent',
             'setpwent', 'setservent', 'setsockopt', 'shift', 'shmctl', 'shmget',
             'shmread', 'shmwrite', 'shutdown', 'sin', 'sleep', 'socket', 'socketpair',
-            'sort', 'splice', 'split', 'sprintf', 'sqrt', 'srand', 'stat',
+            'sort', 'splice', 'split', 'sprintf', 'sqrt', 'srand', 'stat', 'state',
             'study', 'substr', 'symlink', 'syscall', 'sysopen', 'sysread',
             'sysseek', 'system', 'syswrite', 'tell', 'telldir', 'tie', 'tied',
             'time', 'times', 'tr', 'truncate', 'uc', 'ucfirst', 'umask', 'undef',
             'unlink', 'unpack', 'unshift', 'untie', 'utime', 'values',
-            'vec', 'wait', 'waitpid', 'wantarray', 'warn', 'write', 'y'
+            'vec', 'wait', 'waitpid', 'wantarray', 'warn', 'when', 'write', 'y'
             )
         ),
     'SYMBOLS' => array(
diff --git a/inc/geshi/perl6.php b/vendor/easybook/geshi/geshi/perl6.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/perl6.php
rename to vendor/easybook/geshi/geshi/perl6.php
diff --git a/inc/geshi/pf.php b/vendor/easybook/geshi/geshi/pf.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/pf.php
rename to vendor/easybook/geshi/geshi/pf.php
diff --git a/inc/geshi/php-brief.php b/vendor/easybook/geshi/geshi/php-brief.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/php-brief.php
rename to vendor/easybook/geshi/geshi/php-brief.php
diff --git a/inc/geshi/php.php b/vendor/easybook/geshi/geshi/php.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/php.php
rename to vendor/easybook/geshi/geshi/php.php
index 2827457b17db416b36ebf1f80a6e4da83e9de175..7b5c16e189763608f8cd379f589befa829172fac
--- a/inc/geshi/php.php
+++ b/vendor/easybook/geshi/geshi/php.php
@@ -1113,5 +1113,3 @@ $language_data = array(
         ),
     'TAB_WIDTH' => 4
 );
-
-?>
diff --git a/inc/geshi/pic16.php b/vendor/easybook/geshi/geshi/pic16.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/pic16.php
rename to vendor/easybook/geshi/geshi/pic16.php
index 46d7ac94db2f3c8a697375a88daae7b47e7c2867..2e28f17b62ab80df8367f0f4772ce55535342ae5
--- a/inc/geshi/pic16.php
+++ b/vendor/easybook/geshi/geshi/pic16.php
@@ -137,5 +137,3 @@ $language_data = array (
             )
         )
 );
-
-?>
diff --git a/inc/geshi/pike.php b/vendor/easybook/geshi/geshi/pike.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/pike.php
rename to vendor/easybook/geshi/geshi/pike.php
index 743f711b15b42e0b220dbc997ba039b478c9863e..dcc53092d37bd4fa86a27859109039f24ffb1fb8
--- a/inc/geshi/pike.php
+++ b/vendor/easybook/geshi/geshi/pike.php
@@ -99,5 +99,3 @@ $language_data = array(
     'SCRIPT_DELIMITERS' => array(),
     'HIGHLIGHT_STRICT_BLOCK' => array()
 );
-
-?>
diff --git a/inc/geshi/pixelbender.php b/vendor/easybook/geshi/geshi/pixelbender.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/pixelbender.php
rename to vendor/easybook/geshi/geshi/pixelbender.php
index 7b29ee6c3d82bd40d2ff433b166ae6e686ca15c0..6a2c8dea09670837d323910da286917ac7548672
--- a/inc/geshi/pixelbender.php
+++ b/vendor/easybook/geshi/geshi/pixelbender.php
@@ -172,5 +172,3 @@ $language_data = array(
     'HIGHLIGHT_STRICT_BLOCK' => array()
 );
 
-
-?>
diff --git a/inc/geshi/pli.php b/vendor/easybook/geshi/geshi/pli.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/pli.php
rename to vendor/easybook/geshi/geshi/pli.php
diff --git a/inc/geshi/plsql.php b/vendor/easybook/geshi/geshi/plsql.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/plsql.php
rename to vendor/easybook/geshi/geshi/plsql.php
index 09f90a225c6c1f147afd2fe7b999474f4b220c96..58f7c90f4b742b6f6328d48720b3094313b64f6b
--- a/inc/geshi/plsql.php
+++ b/vendor/easybook/geshi/geshi/plsql.php
@@ -252,5 +252,3 @@ $language_data = array (
     'SCRIPT_DELIMITERS' => array(),
     'HIGHLIGHT_STRICT_BLOCK' => array()
 );
-
-?>
diff --git a/inc/geshi/postgresql.php b/vendor/easybook/geshi/geshi/postgresql.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/postgresql.php
rename to vendor/easybook/geshi/geshi/postgresql.php
diff --git a/inc/geshi/povray.php b/vendor/easybook/geshi/geshi/povray.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/povray.php
rename to vendor/easybook/geshi/geshi/povray.php
diff --git a/inc/geshi/powerbuilder.php b/vendor/easybook/geshi/geshi/powerbuilder.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/powerbuilder.php
rename to vendor/easybook/geshi/geshi/powerbuilder.php
diff --git a/inc/geshi/powershell.php b/vendor/easybook/geshi/geshi/powershell.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/powershell.php
rename to vendor/easybook/geshi/geshi/powershell.php
diff --git a/inc/geshi/proftpd.php b/vendor/easybook/geshi/geshi/proftpd.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/proftpd.php
rename to vendor/easybook/geshi/geshi/proftpd.php
diff --git a/inc/geshi/progress.php b/vendor/easybook/geshi/geshi/progress.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/progress.php
rename to vendor/easybook/geshi/geshi/progress.php
diff --git a/inc/geshi/prolog.php b/vendor/easybook/geshi/geshi/prolog.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/prolog.php
rename to vendor/easybook/geshi/geshi/prolog.php
diff --git a/inc/geshi/properties.php b/vendor/easybook/geshi/geshi/properties.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/properties.php
rename to vendor/easybook/geshi/geshi/properties.php
diff --git a/inc/geshi/providex.php b/vendor/easybook/geshi/geshi/providex.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/providex.php
rename to vendor/easybook/geshi/geshi/providex.php
index 1e735bd0f47fcb8da88ddd438b2ba2597fb6e0b4..1a7b08bbee976ca693f5cb93629257aaab0e49d9
--- a/inc/geshi/providex.php
+++ b/vendor/easybook/geshi/geshi/providex.php
@@ -295,5 +295,3 @@ $language_data = array (
         ),
     'TAB_WIDTH' => 4
 );
-
-?>
diff --git a/inc/geshi/purebasic.php b/vendor/easybook/geshi/geshi/purebasic.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/purebasic.php
rename to vendor/easybook/geshi/geshi/purebasic.php
diff --git a/inc/geshi/pycon.php b/vendor/easybook/geshi/geshi/pycon.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/pycon.php
rename to vendor/easybook/geshi/geshi/pycon.php
diff --git a/inc/geshi/pys60.php b/vendor/easybook/geshi/geshi/pys60.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/pys60.php
rename to vendor/easybook/geshi/geshi/pys60.php
index 59c67fac73f62c5cdfff370d9ee863c7a084116f..865b59adbd0e5810a6225cc269671a6b34330f0b
--- a/inc/geshi/pys60.php
+++ b/vendor/easybook/geshi/geshi/pys60.php
@@ -269,5 +269,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/python.php b/vendor/easybook/geshi/geshi/python.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/python.php
rename to vendor/easybook/geshi/geshi/python.php
diff --git a/inc/geshi/q.php b/vendor/easybook/geshi/geshi/q.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/q.php
rename to vendor/easybook/geshi/geshi/q.php
diff --git a/inc/geshi/qbasic.php b/vendor/easybook/geshi/geshi/qbasic.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/qbasic.php
rename to vendor/easybook/geshi/geshi/qbasic.php
diff --git a/vendor/easybook/geshi/geshi/racket.php b/vendor/easybook/geshi/geshi/racket.php
new file mode 100644
index 0000000000000000000000000000000000000000..c0d931b41f8c0c4ead844cb7b32474d9fdd577ce
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/racket.php
@@ -0,0 +1,964 @@
+<?php
+/*************************************************************************************
+ * racket.php
+ * ----------
+ * Author:          Tim Brown (tim@timb.net)
+ * Copyright:   (c) 2013 Tim Brown ((https://github.com/tim-brown/geshi-racket))
+ * Release Version: 1.0.8.12
+ * Date Started:    2013-03-01
+ *
+ * Racket language file for GeSHi.
+ *
+ * This file was built automatically from the scripts in
+ * https://github.com/tim-brown/geshi-racket (you didn't think
+ * I typed those NUMBER regular expressions in myself, did you?).
+ * Use those scripts to regenerate the file.
+ *
+ * CHANGES
+ * -------
+ *   1.0 (2013-03-31)
+ *   - Initial Release1.1 (2013-03-31)
+ *   - Added URLs, "symbol"-like identifiers moved to SYMBOLS*
+ *
+ * TODO (updated 2013-04-25)
+ * -------------------------
+ *   * better handling of empty and short arrays
+ *   * care more about indentation and line lengths
+ *   * most compound regexps are possibly over-bracketed: (or ...)
+ *   * most compound regexps are possibly over-bracketed: (: ...)
+ *   * URLs should be formed more smartly by discovering which module they came from.
+ *   * '|...| identifiers
+ *   * #<<HERE strings
+ *   * #;(...) comments -- (note: requires balanced parenthesis regexp)
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array(
+    'LANG_NAME' => 'Racket',
+    'COMMENT_SINGLE' => array(
+        1 => ';',
+        ),
+    'COMMENT_MULTI' => array(
+        '#|' => '|#',
+        ),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array('"',
+        ),
+    'ESCAPE_CHAR' => '\\',
+    'KEYWORDS' => array(
+        1 => array(
+            'abort-current-continuation', 'abs', 'absolute-path?', 'acos', 'add1',
+            'alarm-evt', 'always-evt', 'andmap', 'angle', 'append',
+            'arithmetic-shift', 'arity-at-least-value', 'arity-at-least?',
+            'asin', 'assf', 'assoc', 'assq', 'assv', 'atan', 'banner',
+            'bitwise-and', 'bitwise-bit-field', 'bitwise-bit-set?',
+            'bitwise-ior', 'bitwise-not', 'bitwise-xor', 'boolean?',
+            'bound-identifier=?', 'box', 'box-cas!', 'box-immutable', 'box?',
+            'break-enabled', 'break-thread', 'build-list', 'build-path',
+            'build-path/convention-type', 'build-string', 'build-vector',
+            'byte-pregexp', 'byte-pregexp?', 'byte-ready?', 'byte-regexp',
+            'byte-regexp?', 'byte?', 'bytes', 'bytes&gt;?', 'bytes&lt;?',
+            'bytes-&gt;immutable-bytes', 'bytes-&gt;list', 'bytes-&gt;path',
+            'bytes-&gt;path-element', 'bytes-&gt;string/latin-1',
+            'bytes-&gt;string/locale', 'bytes-&gt;string/utf-8',
+            'bytes-append', 'bytes-close-converter', 'bytes-convert',
+            'bytes-convert-end', 'bytes-converter?', 'bytes-copy',
+            'bytes-copy!', 'bytes-fill!', 'bytes-length',
+            'bytes-open-converter', 'bytes-ref', 'bytes-set!',
+            'bytes-utf-8-index', 'bytes-utf-8-length', 'bytes-utf-8-ref',
+            'bytes=?', 'bytes?', 'caaaar', 'caaadr', 'caaar', 'caadar',
+            'caaddr', 'caadr', 'caar', 'cadaar', 'cadadr', 'cadar', 'caddar',
+            'cadddr', 'caddr', 'cadr', 'call-in-nested-thread',
+            'call-with-break-parameterization',
+            'call-with-composable-continuation',
+            'call-with-continuation-barrier', 'call-with-continuation-prompt',
+            'call-with-current-continuation', 'call-with-escape-continuation',
+            'call-with-exception-handler',
+            'call-with-immediate-continuation-mark',
+            'call-with-parameterization', 'call-with-semaphore',
+            'call-with-semaphore/enable-break', 'call-with-values', 'call/cc',
+            'call/ec', 'car', 'cdaaar', 'cdaadr', 'cdaar', 'cdadar', 'cdaddr',
+            'cdadr', 'cdar', 'cddaar', 'cddadr', 'cddar', 'cdddar', 'cddddr',
+            'cdddr', 'cddr', 'cdr', 'ceiling', 'channel-get', 'channel-put',
+            'channel-put-evt', 'channel-put-evt?', 'channel-try-get',
+            'channel?', 'chaperone-box', 'chaperone-continuation-mark-key',
+            'chaperone-evt', 'chaperone-hash', 'chaperone-of?',
+            'chaperone-procedure', 'chaperone-prompt-tag', 'chaperone-struct',
+            'chaperone-struct-type', 'chaperone-vector', 'chaperone?',
+            'char&gt;=?', 'char&gt;?', 'char&lt;=?', 'char&lt;?',
+            'char-&gt;integer', 'char-alphabetic?', 'char-blank?',
+            'char-ci&gt;=?', 'char-ci&gt;?', 'char-ci&lt;=?', 'char-ci&lt;?',
+            'char-ci=?', 'char-downcase', 'char-foldcase',
+            'char-general-category', 'char-graphic?', 'char-iso-control?',
+            'char-lower-case?', 'char-numeric?', 'char-punctuation?',
+            'char-ready?', 'char-symbolic?', 'char-title-case?',
+            'char-titlecase', 'char-upcase', 'char-upper-case?',
+            'char-utf-8-length', 'char-whitespace?', 'char=?', 'char?',
+            'check-duplicate-identifier',
+            'checked-procedure-check-and-extract', 'choice-evt',
+            'cleanse-path', 'close-input-port', 'close-output-port',
+            'collect-garbage', 'collection-file-path', 'collection-path',
+            'compile', 'compile-allow-set!-undefined',
+            'compile-context-preservation-enabled',
+            'compile-enforce-module-constants', 'compile-syntax',
+            'compiled-expression?', 'compiled-module-expression?',
+            'complete-path?', 'complex?', 'compose', 'compose1', 'cons',
+            'continuation-mark-key?', 'continuation-mark-set-&gt;context',
+            'continuation-mark-set-&gt;list',
+            'continuation-mark-set-&gt;list*', 'continuation-mark-set-first',
+            'continuation-mark-set?', 'continuation-marks',
+            'continuation-prompt-available?', 'continuation-prompt-tag?',
+            'continuation?', 'copy-file', 'cos',
+            'current-break-parameterization', 'current-code-inspector',
+            'current-command-line-arguments', 'current-compile',
+            'current-compiled-file-roots', 'current-continuation-marks',
+            'current-custodian', 'current-directory', 'current-drive',
+            'current-error-port', 'current-eval',
+            'current-evt-pseudo-random-generator', 'current-gc-milliseconds',
+            'current-get-interaction-input-port',
+            'current-inexact-milliseconds', 'current-input-port',
+            'current-inspector', 'current-library-collection-paths',
+            'current-load', 'current-load-extension',
+            'current-load-relative-directory', 'current-load/use-compiled',
+            'current-locale', 'current-logger', 'current-memory-use',
+            'current-milliseconds', 'current-module-declare-name',
+            'current-module-declare-source', 'current-module-name-resolver',
+            'current-namespace', 'current-output-port',
+            'current-parameterization', 'current-preserved-thread-cell-values',
+            'current-print', 'current-process-milliseconds',
+            'current-prompt-read', 'current-pseudo-random-generator',
+            'current-read-interaction', 'current-reader-guard',
+            'current-readtable', 'current-seconds', 'current-security-guard',
+            'current-subprocess-custodian-mode', 'current-thread',
+            'current-thread-group', 'current-thread-initial-stack-size',
+            'current-write-relative-directory', 'custodian-box-value',
+            'custodian-box?', 'custodian-limit-memory',
+            'custodian-managed-list', 'custodian-memory-accounting-available?',
+            'custodian-require-memory', 'custodian-shutdown-all', 'custodian?',
+            'custom-print-quotable-accessor', 'custom-print-quotable?',
+            'custom-write-accessor', 'custom-write?', 'date*-nanosecond',
+            'date*-time-zone-name', 'date*?', 'date-day', 'date-dst?',
+            'date-hour', 'date-minute', 'date-month', 'date-second',
+            'date-time-zone-offset', 'date-week-day', 'date-year',
+            'date-year-day', 'date?', 'datum-&gt;syntax',
+            'datum-intern-literal', 'default-continuation-prompt-tag',
+            'delete-directory', 'delete-file', 'denominator',
+            'directory-exists?', 'directory-list', 'display', 'displayln',
+            'double-flonum?', 'dump-memory-stats', 'dynamic-require',
+            'dynamic-require-for-syntax', 'dynamic-wind', 'eof', 'eof-object?',
+            'ephemeron-value', 'ephemeron?', 'eprintf', 'eq-hash-code', 'eq?',
+            'equal-hash-code', 'equal-secondary-hash-code', 'equal?',
+            'equal?/recur', 'eqv-hash-code', 'eqv?', 'error',
+            'error-display-handler', 'error-escape-handler',
+            'error-print-context-length', 'error-print-source-location',
+            'error-print-width', 'error-value-&gt;string-handler', 'eval',
+            'eval-jit-enabled', 'eval-syntax', 'even?', 'evt?',
+            'exact-&gt;inexact', 'exact-integer?',
+            'exact-nonnegative-integer?', 'exact-positive-integer?', 'exact?',
+            'executable-yield-handler', 'exit', 'exit-handler',
+            'exn-continuation-marks', 'exn-message', 'exn:break-continuation',
+            'exn:break:hang-up?', 'exn:break:terminate?', 'exn:break?',
+            'exn:fail:contract:arity?', 'exn:fail:contract:continuation?',
+            'exn:fail:contract:divide-by-zero?',
+            'exn:fail:contract:non-fixnum-result?',
+            'exn:fail:contract:variable-id', 'exn:fail:contract:variable?',
+            'exn:fail:contract?', 'exn:fail:filesystem:errno-errno',
+            'exn:fail:filesystem:errno?', 'exn:fail:filesystem:exists?',
+            'exn:fail:filesystem:version?', 'exn:fail:filesystem?',
+            'exn:fail:network:errno-errno', 'exn:fail:network:errno?',
+            'exn:fail:network?', 'exn:fail:out-of-memory?',
+            'exn:fail:read-srclocs', 'exn:fail:read:eof?',
+            'exn:fail:read:non-char?', 'exn:fail:read?',
+            'exn:fail:syntax-exprs', 'exn:fail:syntax:unbound?',
+            'exn:fail:syntax?', 'exn:fail:unsupported?', 'exn:fail:user?',
+            'exn:fail?', 'exn:srclocs-accessor', 'exn:srclocs?', 'exn?', 'exp',
+            'expand', 'expand-once', 'expand-syntax', 'expand-syntax-once',
+            'expand-syntax-to-top-form', 'expand-to-top-form',
+            'expand-user-path', 'expt', 'file-exists?',
+            'file-or-directory-identity', 'file-or-directory-modify-seconds',
+            'file-or-directory-permissions', 'file-position', 'file-position*',
+            'file-size', 'file-stream-buffer-mode', 'file-stream-port?',
+            'filesystem-root-list', 'filter', 'find-executable-path',
+            'find-library-collection-paths', 'find-system-path', 'findf',
+            'fixnum?', 'floating-point-bytes-&gt;real', 'flonum?', 'floor',
+            'flush-output', 'foldl', 'foldr', 'for-each', 'format', 'fprintf',
+            'free-identifier=?', 'free-label-identifier=?',
+            'free-template-identifier=?', 'free-transformer-identifier=?',
+            'gcd', 'generate-temporaries', 'gensym', 'get-output-bytes',
+            'get-output-string', 'getenv', 'global-port-print-handler',
+            'guard-evt', 'handle-evt', 'handle-evt?', 'hash', 'hash-&gt;list',
+            'hash-copy', 'hash-count', 'hash-eq?', 'hash-equal?', 'hash-eqv?',
+            'hash-for-each', 'hash-has-key?', 'hash-iterate-first',
+            'hash-iterate-key', 'hash-iterate-next', 'hash-iterate-value',
+            'hash-keys', 'hash-map', 'hash-placeholder?', 'hash-ref',
+            'hash-ref!', 'hash-remove', 'hash-remove!', 'hash-set',
+            'hash-set!', 'hash-set*', 'hash-set*!', 'hash-update',
+            'hash-update!', 'hash-values', 'hash-weak?', 'hash?', 'hasheq',
+            'hasheqv', 'identifier-binding', 'identifier-label-binding',
+            'identifier-prune-lexical-context',
+            'identifier-prune-to-source-module',
+            'identifier-remove-from-definition-context',
+            'identifier-template-binding', 'identifier-transformer-binding',
+            'identifier?', 'imag-part', 'immutable?', 'impersonate-box',
+            'impersonate-continuation-mark-key', 'impersonate-hash',
+            'impersonate-procedure', 'impersonate-prompt-tag',
+            'impersonate-struct', 'impersonate-vector', 'impersonator-of?',
+            'impersonator-prop:application-mark',
+            'impersonator-property-accessor-procedure?',
+            'impersonator-property?', 'impersonator?', 'in-cycle',
+            'in-directory', 'in-hash', 'in-hash-keys', 'in-hash-pairs',
+            'in-hash-values', 'in-parallel', 'in-sequences',
+            'in-values*-sequence', 'in-values-sequence', 'inexact-&gt;exact',
+            'inexact-real?', 'inexact?', 'input-port?', 'inspector?',
+            'integer-&gt;char', 'integer-&gt;integer-bytes',
+            'integer-bytes-&gt;integer', 'integer-length', 'integer-sqrt',
+            'integer-sqrt/remainder', 'integer?',
+            'internal-definition-context-seal', 'internal-definition-context?',
+            'keyword&lt;?', 'keyword-&gt;string', 'keyword-apply', 'keyword?',
+            'kill-thread', 'lcm', 'length', 'liberal-define-context?',
+            'link-exists?', 'list', 'list*', 'list-&gt;bytes',
+            'list-&gt;string', 'list-&gt;vector', 'list-ref', 'list-tail',
+            'list?', 'load', 'load-extension', 'load-on-demand-enabled',
+            'load-relative', 'load-relative-extension', 'load/cd',
+            'load/use-compiled', 'local-expand', 'local-expand/capture-lifts',
+            'local-transformer-expand',
+            'local-transformer-expand/capture-lifts', 'locale-string-encoding',
+            'log', 'log-level?', 'log-max-level', 'log-message',
+            'log-receiver?', 'logger-name', 'logger?', 'magnitude',
+            'make-arity-at-least', 'make-base-empty-namespace',
+            'make-base-namespace', 'make-bytes', 'make-channel',
+            'make-continuation-mark-key', 'make-continuation-prompt-tag',
+            'make-custodian', 'make-custodian-box', 'make-date', 'make-date*',
+            'make-derived-parameter', 'make-directory', 'make-do-sequence',
+            'make-empty-namespace', 'make-ephemeron', 'make-exn',
+            'make-exn:break', 'make-exn:break:hang-up',
+            'make-exn:break:terminate', 'make-exn:fail',
+            'make-exn:fail:contract', 'make-exn:fail:contract:arity',
+            'make-exn:fail:contract:continuation',
+            'make-exn:fail:contract:divide-by-zero',
+            'make-exn:fail:contract:non-fixnum-result',
+            'make-exn:fail:contract:variable', 'make-exn:fail:filesystem',
+            'make-exn:fail:filesystem:errno',
+            'make-exn:fail:filesystem:exists',
+            'make-exn:fail:filesystem:version', 'make-exn:fail:network',
+            'make-exn:fail:network:errno', 'make-exn:fail:out-of-memory',
+            'make-exn:fail:read', 'make-exn:fail:read:eof',
+            'make-exn:fail:read:non-char', 'make-exn:fail:syntax',
+            'make-exn:fail:syntax:unbound', 'make-exn:fail:unsupported',
+            'make-exn:fail:user', 'make-file-or-directory-link', 'make-hash',
+            'make-hash-placeholder', 'make-hasheq', 'make-hasheq-placeholder',
+            'make-hasheqv', 'make-hasheqv-placeholder', 'make-immutable-hash',
+            'make-immutable-hasheq', 'make-immutable-hasheqv',
+            'make-impersonator-property', 'make-input-port', 'make-inspector',
+            'make-keyword-procedure', 'make-known-char-range-list',
+            'make-log-receiver', 'make-logger', 'make-output-port',
+            'make-parameter', 'make-phantom-bytes', 'make-pipe',
+            'make-placeholder', 'make-polar', 'make-prefab-struct',
+            'make-pseudo-random-generator', 'make-reader-graph',
+            'make-readtable', 'make-rectangular', 'make-rename-transformer',
+            'make-resolved-module-path', 'make-security-guard',
+            'make-semaphore', 'make-set!-transformer', 'make-shared-bytes',
+            'make-sibling-inspector', 'make-special-comment', 'make-srcloc',
+            'make-string', 'make-struct-field-accessor',
+            'make-struct-field-mutator', 'make-struct-type',
+            'make-struct-type-property', 'make-syntax-delta-introducer',
+            'make-syntax-introducer', 'make-thread-cell', 'make-thread-group',
+            'make-vector', 'make-weak-box', 'make-weak-hash',
+            'make-weak-hasheq', 'make-weak-hasheqv', 'make-will-executor',
+            'map', 'max', 'mcar', 'mcdr', 'mcons', 'member', 'memf', 'memq',
+            'memv', 'min', 'module-&gt;exports', 'module-&gt;imports',
+            'module-&gt;language-info', 'module-&gt;namespace',
+            'module-compiled-exports', 'module-compiled-imports',
+            'module-compiled-language-info', 'module-compiled-name',
+            'module-compiled-submodules', 'module-declared?',
+            'module-path-index-join', 'module-path-index-resolve',
+            'module-path-index-split', 'module-path-index-submodule',
+            'module-path-index?', 'module-path?', 'module-predefined?',
+            'module-provide-protected?', 'modulo', 'mpair?', 'nack-guard-evt',
+            'namespace-anchor-&gt;empty-namespace',
+            'namespace-anchor-&gt;namespace', 'namespace-anchor?',
+            'namespace-attach-module', 'namespace-attach-module-declaration',
+            'namespace-base-phase', 'namespace-mapped-symbols',
+            'namespace-module-identifier', 'namespace-module-registry',
+            'namespace-require', 'namespace-require/constant',
+            'namespace-require/copy', 'namespace-require/expansion-time',
+            'namespace-set-variable-value!', 'namespace-symbol-&gt;identifier',
+            'namespace-syntax-introduce', 'namespace-undefine-variable!',
+            'namespace-unprotect-module', 'namespace-variable-value',
+            'namespace?', 'negative?', 'never-evt', 'newline',
+            'normal-case-path', 'not', 'null', 'null?', 'number-&gt;string',
+            'number?', 'numerator', 'object-name', 'odd?', 'open-input-bytes',
+            'open-input-string', 'open-output-bytes', 'open-output-string',
+            'ormap', 'output-port?', 'pair?', 'parameter-procedure=?',
+            'parameter?', 'parameterization?', 'path-&gt;bytes',
+            'path-&gt;complete-path', 'path-&gt;directory-path',
+            'path-&gt;string', 'path-add-suffix', 'path-convention-type',
+            'path-element-&gt;bytes', 'path-element-&gt;string',
+            'path-for-some-system?', 'path-list-string-&gt;path-list',
+            'path-replace-suffix', 'path-string?', 'path?', 'peek-byte',
+            'peek-byte-or-special', 'peek-bytes', 'peek-bytes!',
+            'peek-bytes-avail!', 'peek-bytes-avail!*',
+            'peek-bytes-avail!/enable-break', 'peek-char',
+            'peek-char-or-special', 'peek-string', 'peek-string!',
+            'phantom-bytes?', 'pipe-content-length', 'placeholder-get',
+            'placeholder-set!', 'placeholder?', 'poll-guard-evt',
+            'port-closed-evt', 'port-closed?', 'port-commit-peeked',
+            'port-count-lines!', 'port-count-lines-enabled',
+            'port-display-handler', 'port-file-identity', 'port-file-unlock',
+            'port-next-location', 'port-print-handler', 'port-progress-evt',
+            'port-provides-progress-evts?', 'port-read-handler',
+            'port-try-file-lock?', 'port-write-handler', 'port-writes-atomic?',
+            'port-writes-special?', 'port?', 'positive?',
+            'prefab-key-&gt;struct-type', 'prefab-key?', 'prefab-struct-key',
+            'pregexp', 'pregexp?', 'primitive-closure?',
+            'primitive-result-arity', 'primitive?', 'print',
+            'print-as-expression', 'print-boolean-long-form', 'print-box',
+            'print-graph', 'print-hash-table', 'print-mpair-curly-braces',
+            'print-pair-curly-braces', 'print-reader-abbreviations',
+            'print-struct', 'print-syntax-width', 'print-unreadable',
+            'print-vector-length', 'printf', 'procedure-&gt;method',
+            'procedure-arity', 'procedure-arity-includes?', 'procedure-arity?',
+            'procedure-closure-contents-eq?', 'procedure-extract-target',
+            'procedure-keywords', 'procedure-reduce-arity',
+            'procedure-reduce-keyword-arity', 'procedure-rename',
+            'procedure-struct-type?', 'procedure?', 'progress-evt?',
+            'prop:arity-string', 'prop:checked-procedure',
+            'prop:custom-print-quotable', 'prop:custom-write',
+            'prop:equal+hash', 'prop:evt', 'prop:exn:srclocs',
+            'prop:impersonator-of', 'prop:input-port',
+            'prop:liberal-define-context', 'prop:output-port',
+            'prop:procedure', 'prop:rename-transformer', 'prop:sequence',
+            'prop:set!-transformer', 'pseudo-random-generator-&gt;vector',
+            'pseudo-random-generator-vector?', 'pseudo-random-generator?',
+            'putenv', 'quotient', 'quotient/remainder', 'raise',
+            'raise-argument-error', 'raise-arguments-error',
+            'raise-arity-error', 'raise-mismatch-error', 'raise-range-error',
+            'raise-result-error', 'raise-syntax-error', 'raise-type-error',
+            'raise-user-error', 'random', 'random-seed', 'rational?',
+            'rationalize', 'read', 'read-accept-bar-quote', 'read-accept-box',
+            'read-accept-compiled', 'read-accept-dot', 'read-accept-graph',
+            'read-accept-infix-dot', 'read-accept-lang',
+            'read-accept-quasiquote', 'read-accept-reader', 'read-byte',
+            'read-byte-or-special', 'read-bytes', 'read-bytes!',
+            'read-bytes-avail!', 'read-bytes-avail!*',
+            'read-bytes-avail!/enable-break', 'read-bytes-line',
+            'read-case-sensitive', 'read-char', 'read-char-or-special',
+            'read-curly-brace-as-paren', 'read-decimal-as-inexact',
+            'read-eval-print-loop', 'read-language', 'read-line',
+            'read-on-demand-source', 'read-square-bracket-as-paren',
+            'read-string', 'read-string!', 'read-syntax',
+            'read-syntax/recursive', 'read/recursive', 'readtable-mapping',
+            'readtable?', 'real-&gt;decimal-string', 'real-&gt;double-flonum',
+            'real-&gt;floating-point-bytes', 'real-&gt;single-flonum',
+            'real-part', 'real?', 'regexp', 'regexp-match',
+            'regexp-match-exact?', 'regexp-match-peek',
+            'regexp-match-peek-immediate', 'regexp-match-peek-positions',
+            'regexp-match-peek-positions-immediate',
+            'regexp-match-peek-positions-immediate/end',
+            'regexp-match-peek-positions/end', 'regexp-match-positions',
+            'regexp-match-positions/end', 'regexp-match/end', 'regexp-match?',
+            'regexp-max-lookbehind', 'regexp-quote', 'regexp-replace',
+            'regexp-replace*', 'regexp-replace-quote', 'regexp-replaces',
+            'regexp-split', 'regexp-try-match', 'regexp?', 'relative-path?',
+            'remainder', 'remove', 'remove*', 'remq', 'remq*', 'remv', 'remv*',
+            'rename-file-or-directory', 'rename-transformer-target',
+            'rename-transformer?', 'reroot-path', 'resolve-path',
+            'resolved-module-path-name', 'resolved-module-path?', 'reverse',
+            'round', 'seconds-&gt;date', 'security-guard?',
+            'semaphore-peek-evt', 'semaphore-peek-evt?', 'semaphore-post',
+            'semaphore-try-wait?', 'semaphore-wait',
+            'semaphore-wait/enable-break', 'semaphore?', 'sequence-&gt;stream',
+            'sequence-generate', 'sequence-generate*', 'sequence?',
+            'set!-transformer-procedure', 'set!-transformer?', 'set-box!',
+            'set-mcar!', 'set-mcdr!', 'set-phantom-bytes!',
+            'set-port-next-location!', 'shared-bytes', 'shell-execute',
+            'simplify-path', 'sin', 'single-flonum?', 'sleep',
+            'special-comment-value', 'special-comment?', 'split-path', 'sqrt',
+            'srcloc-column', 'srcloc-line', 'srcloc-position', 'srcloc-source',
+            'srcloc-span', 'srcloc?', 'stop-after', 'stop-before', 'string',
+            'string&gt;=?', 'string&gt;?', 'string&lt;=?', 'string&lt;?',
+            'string-&gt;bytes/latin-1', 'string-&gt;bytes/locale',
+            'string-&gt;bytes/utf-8', 'string-&gt;immutable-string',
+            'string-&gt;keyword', 'string-&gt;list', 'string-&gt;number',
+            'string-&gt;path', 'string-&gt;path-element', 'string-&gt;symbol',
+            'string-&gt;uninterned-symbol', 'string-&gt;unreadable-symbol',
+            'string-append', 'string-ci&gt;=?', 'string-ci&gt;?',
+            'string-ci&lt;=?', 'string-ci&lt;?', 'string-ci=?', 'string-copy',
+            'string-copy!', 'string-downcase', 'string-fill!',
+            'string-foldcase', 'string-length', 'string-locale&gt;?',
+            'string-locale&lt;?', 'string-locale-ci&gt;?',
+            'string-locale-ci&lt;?', 'string-locale-ci=?',
+            'string-locale-downcase', 'string-locale-upcase',
+            'string-locale=?', 'string-normalize-nfc', 'string-normalize-nfd',
+            'string-normalize-nfkc', 'string-normalize-nfkd', 'string-ref',
+            'string-set!', 'string-titlecase', 'string-upcase',
+            'string-utf-8-length', 'string=?', 'string?', 'struct-&gt;vector',
+            'struct-accessor-procedure?', 'struct-constructor-procedure?',
+            'struct-info', 'struct-mutator-procedure?',
+            'struct-predicate-procedure?', 'struct-type-info',
+            'struct-type-make-constructor', 'struct-type-make-predicate',
+            'struct-type-property-accessor-procedure?',
+            'struct-type-property?', 'struct-type?', 'struct:arity-at-least',
+            'struct:date', 'struct:date*', 'struct:exn', 'struct:exn:break',
+            'struct:exn:break:hang-up', 'struct:exn:break:terminate',
+            'struct:exn:fail', 'struct:exn:fail:contract',
+            'struct:exn:fail:contract:arity',
+            'struct:exn:fail:contract:continuation',
+            'struct:exn:fail:contract:divide-by-zero',
+            'struct:exn:fail:contract:non-fixnum-result',
+            'struct:exn:fail:contract:variable', 'struct:exn:fail:filesystem',
+            'struct:exn:fail:filesystem:errno',
+            'struct:exn:fail:filesystem:exists',
+            'struct:exn:fail:filesystem:version', 'struct:exn:fail:network',
+            'struct:exn:fail:network:errno', 'struct:exn:fail:out-of-memory',
+            'struct:exn:fail:read', 'struct:exn:fail:read:eof',
+            'struct:exn:fail:read:non-char', 'struct:exn:fail:syntax',
+            'struct:exn:fail:syntax:unbound', 'struct:exn:fail:unsupported',
+            'struct:exn:fail:user', 'struct:srcloc', 'struct?', 'sub1',
+            'subbytes', 'subprocess', 'subprocess-group-enabled',
+            'subprocess-kill', 'subprocess-pid', 'subprocess-status',
+            'subprocess-wait', 'subprocess?', 'substring', 'symbol-&gt;string',
+            'symbol-interned?', 'symbol-unreadable?', 'symbol?', 'sync',
+            'sync/enable-break', 'sync/timeout', 'sync/timeout/enable-break',
+            'syntax-&gt;datum', 'syntax-&gt;list', 'syntax-arm',
+            'syntax-column', 'syntax-disarm', 'syntax-e', 'syntax-line',
+            'syntax-local-bind-syntaxes', 'syntax-local-certifier',
+            'syntax-local-context', 'syntax-local-expand-expression',
+            'syntax-local-get-shadower', 'syntax-local-introduce',
+            'syntax-local-lift-context', 'syntax-local-lift-expression',
+            'syntax-local-lift-module-end-declaration',
+            'syntax-local-lift-provide', 'syntax-local-lift-require',
+            'syntax-local-lift-values-expression',
+            'syntax-local-make-definition-context',
+            'syntax-local-make-delta-introducer',
+            'syntax-local-module-defined-identifiers',
+            'syntax-local-module-exports',
+            'syntax-local-module-required-identifiers', 'syntax-local-name',
+            'syntax-local-phase-level', 'syntax-local-submodules',
+            'syntax-local-transforming-module-provides?', 'syntax-local-value',
+            'syntax-local-value/immediate', 'syntax-original?',
+            'syntax-position', 'syntax-property',
+            'syntax-property-symbol-keys', 'syntax-protect', 'syntax-rearm',
+            'syntax-recertify', 'syntax-shift-phase-level', 'syntax-source',
+            'syntax-source-module', 'syntax-span', 'syntax-taint',
+            'syntax-tainted?', 'syntax-track-origin',
+            'syntax-transforming-module-expression?', 'syntax-transforming?',
+            'syntax?', 'system-big-endian?', 'system-idle-evt',
+            'system-language+country', 'system-library-subpath',
+            'system-path-convention-type', 'system-type', 'tan',
+            'terminal-port?', 'thread', 'thread-cell-ref', 'thread-cell-set!',
+            'thread-cell-values?', 'thread-cell?', 'thread-dead-evt',
+            'thread-dead?', 'thread-group?', 'thread-receive',
+            'thread-receive-evt', 'thread-resume', 'thread-resume-evt',
+            'thread-rewind-receive', 'thread-running?', 'thread-send',
+            'thread-suspend', 'thread-suspend-evt', 'thread-try-receive',
+            'thread-wait', 'thread/suspend-to-kill', 'thread?', 'time-apply',
+            'truncate', 'unbox', 'uncaught-exception-handler',
+            'use-collection-link-paths', 'use-compiled-file-paths',
+            'use-user-specific-search-paths', 'values',
+            'variable-reference-&gt;empty-namespace',
+            'variable-reference-&gt;module-base-phase',
+            'variable-reference-&gt;module-declaration-inspector',
+            'variable-reference-&gt;module-path-index',
+            'variable-reference-&gt;module-source',
+            'variable-reference-&gt;namespace', 'variable-reference-&gt;phase',
+            'variable-reference-&gt;resolved-module-path',
+            'variable-reference-constant?', 'variable-reference?', 'vector',
+            'vector-&gt;immutable-vector', 'vector-&gt;list',
+            'vector-&gt;pseudo-random-generator',
+            'vector-&gt;pseudo-random-generator!', 'vector-&gt;values',
+            'vector-copy!', 'vector-fill!', 'vector-immutable',
+            'vector-length', 'vector-ref', 'vector-set!',
+            'vector-set-performance-stats!', 'vector?', 'version', 'void',
+            'void?', 'weak-box-value', 'weak-box?', 'will-execute',
+            'will-executor?', 'will-register', 'will-try-execute', 'wrap-evt',
+            'write', 'write-byte', 'write-bytes', 'write-bytes-avail',
+            'write-bytes-avail*', 'write-bytes-avail-evt',
+            'write-bytes-avail/enable-break', 'write-char', 'write-special',
+            'write-special-avail*', 'write-special-evt', 'write-string',
+            'zero?',
+            ),
+
+        2 => array(
+            '#%app', '#%datum', '#%expression', '#%module-begin', '#%plain-app',
+            '#%plain-lambda', '#%plain-module-begin', '#%provide', '#%require',
+            '#%stratified-body', '#%top', '#%top-interaction',
+            '#%variable-reference', ':do-in', 'all-defined-out',
+            'all-from-out', 'and', 'apply', 'arity-at-least', 'begin',
+            'begin-for-syntax', 'begin0', 'call-with-input-file',
+            'call-with-input-file*', 'call-with-output-file',
+            'call-with-output-file*', 'case', 'case-lambda', 'combine-in',
+            'combine-out', 'cond', 'date', 'date*', 'define',
+            'define-for-syntax', 'define-logger', 'define-namespace-anchor',
+            'define-sequence-syntax', 'define-struct', 'define-struct/derived',
+            'define-syntax', 'define-syntax-rule', 'define-syntaxes',
+            'define-values', 'define-values-for-syntax', 'do', 'else',
+            'except-in', 'except-out', 'exn', 'exn:break', 'exn:break:hang-up',
+            'exn:break:terminate', 'exn:fail', 'exn:fail:contract',
+            'exn:fail:contract:arity', 'exn:fail:contract:continuation',
+            'exn:fail:contract:divide-by-zero',
+            'exn:fail:contract:non-fixnum-result',
+            'exn:fail:contract:variable', 'exn:fail:filesystem',
+            'exn:fail:filesystem:errno', 'exn:fail:filesystem:exists',
+            'exn:fail:filesystem:version', 'exn:fail:network',
+            'exn:fail:network:errno', 'exn:fail:out-of-memory',
+            'exn:fail:read', 'exn:fail:read:eof', 'exn:fail:read:non-char',
+            'exn:fail:syntax', 'exn:fail:syntax:unbound',
+            'exn:fail:unsupported', 'exn:fail:user', 'file', 'for', 'for*',
+            'for*/and', 'for*/first', 'for*/fold', 'for*/fold/derived',
+            'for*/hash', 'for*/hasheq', 'for*/hasheqv', 'for*/last',
+            'for*/list', 'for*/lists', 'for*/or', 'for*/product', 'for*/sum',
+            'for*/vector', 'for-label', 'for-meta', 'for-syntax',
+            'for-template', 'for/and', 'for/first', 'for/fold',
+            'for/fold/derived', 'for/hash', 'for/hasheq', 'for/hasheqv',
+            'for/last', 'for/list', 'for/lists', 'for/or', 'for/product',
+            'for/sum', 'for/vector', 'gen:custom-write', 'gen:equal+hash',
+            'if', 'in-bytes', 'in-bytes-lines', 'in-indexed',
+            'in-input-port-bytes', 'in-input-port-chars', 'in-lines',
+            'in-list', 'in-mlist', 'in-naturals', 'in-port', 'in-producer',
+            'in-range', 'in-string', 'in-value', 'in-vector', 'lambda', 'let',
+            'let*', 'let*-values', 'let-syntax', 'let-syntaxes', 'let-values',
+            'let/cc', 'let/ec', 'letrec', 'letrec-syntax', 'letrec-syntaxes',
+            'letrec-syntaxes+values', 'letrec-values', 'lib', 'local-require',
+            'log-debug', 'log-error', 'log-fatal', 'log-info', 'log-warning',
+            'module', 'module*', 'module+', 'only-in', 'only-meta-in',
+            'open-input-file', 'open-input-output-file', 'open-output-file',
+            'or', 'parameterize', 'parameterize*', 'parameterize-break',
+            'planet', 'prefix-in', 'prefix-out', 'protect-out', 'provide',
+            'quasiquote', 'quasisyntax', 'quasisyntax/loc', 'quote',
+            'quote-syntax', 'quote-syntax/prune', 'regexp-match*',
+            'regexp-match-peek-positions*', 'regexp-match-positions*',
+            'relative-in', 'rename-in', 'rename-out', 'require', 'set!',
+            'set!-values', 'sort', 'srcloc', 'struct', 'struct-copy',
+            'struct-field-index', 'struct-out', 'submod', 'syntax',
+            'syntax-case', 'syntax-case*', 'syntax-id-rules', 'syntax-rules',
+            'syntax/loc', 'time', 'unless', 'unquote', 'unquote-splicing',
+            'unsyntax', 'unsyntax-splicing', 'when', 'with-continuation-mark',
+            'with-handlers', 'with-handlers*', 'with-input-from-file',
+            'with-output-to-file', 'with-syntax', '?',
+            ),
+
+        3 => array(
+            '&gt;/c', '&lt;/c', 'append*', 'append-map', 'argmax', 'argmin',
+            'bad-number-of-results', 'base-&gt;-doms/c', 'base-&gt;-rngs/c',
+            'base-&gt;?', 'blame-add-unknown-context', 'blame-context',
+            'blame-contract', 'blame-fmt-&gt;-string', 'blame-negative',
+            'blame-original?', 'blame-positive', 'blame-replace-negative',
+            'blame-source', 'blame-swap', 'blame-swapped?', 'blame-value',
+            'blame?', 'boolean=?', 'build-chaperone-contract-property',
+            'build-compound-type-name', 'build-contract-property',
+            'build-flat-contract-property', 'bytes-append*', 'bytes-join',
+            'bytes-no-nuls?', 'call-with-input-bytes',
+            'call-with-input-string', 'call-with-output-bytes',
+            'call-with-output-string', 'chaperone-contract-property?',
+            'chaperone-contract?', 'class-&gt;interface', 'class-info',
+            'class?', 'coerce-chaperone-contract',
+            'coerce-chaperone-contracts', 'coerce-contract',
+            'coerce-contract/f', 'coerce-contracts', 'coerce-flat-contract',
+            'coerce-flat-contracts', 'conjugate', 'cons?', 'const',
+            'contract-first-order', 'contract-first-order-passes?',
+            'contract-name', 'contract-proc', 'contract-projection',
+            'contract-property?', 'contract-random-generate',
+            'contract-stronger?', 'contract-struct-exercise',
+            'contract-struct-generate', 'contract?', 'convert-stream',
+            'copy-directory/files', 'copy-port', 'cosh', 'count',
+            'current-blame-format', 'current-future', 'curry', 'curryr',
+            'degrees-&gt;radians', 'delete-directory/files',
+            'deserialize-info:set-v0', 'dict-iter-contract',
+            'dict-key-contract', 'dict-value-contract', 'drop', 'drop-right',
+            'dup-input-port', 'dup-output-port', 'dynamic-get-field',
+            'dynamic-send', 'dynamic-set-field!', 'eighth', 'empty',
+            'empty-sequence', 'empty-stream', 'empty?', 'env-stash',
+            'eq-contract-val', 'eq-contract?', 'equal&lt;%&gt;',
+            'equal-contract-val', 'equal-contract?', 'exact-ceiling',
+            'exact-floor', 'exact-round', 'exact-truncate',
+            'exn:fail:contract:blame-object', 'exn:fail:contract:blame?',
+            'exn:fail:object?', 'exn:misc:match?', 'explode-path',
+            'externalizable&lt;%&gt;', 'false', 'false/c', 'false?',
+            'field-names', 'fifth', 'file-name-from-path',
+            'filename-extension', 'filter-map', 'filter-not',
+            'filter-read-input-port', 'find-files', 'first', 'flat-contract',
+            'flat-contract-predicate', 'flat-contract-property?',
+            'flat-contract?', 'flat-named-contract', 'flatten', 'fold-files',
+            'force', 'fourth', 'fsemaphore-count', 'fsemaphore-post',
+            'fsemaphore-try-wait?', 'fsemaphore-wait', 'fsemaphore?', 'future',
+            'future?', 'futures-enabled?', 'generate-ctc-fail?',
+            'generate-env', 'generate-member-key', 'generate/choose',
+            'generate/direct', 'generic?', 'group-execute-bit',
+            'group-read-bit', 'group-write-bit', 'has-contract?', 'identity',
+            'impersonator-contract?', 'impersonator-prop:contracted',
+            'implementation?', 'implementation?/c', 'in-dict', 'in-dict-keys',
+            'in-dict-pairs', 'in-dict-values', 'infinite?',
+            'input-port-append', 'instanceof/c', 'interface-&gt;method-names',
+            'interface-extension?', 'interface?', 'is-a?', 'is-a?/c', 'last',
+            'last-pair', 'list-&gt;set', 'list-&gt;seteq', 'list-&gt;seteqv',
+            'make-chaperone-contract', 'make-contract', 'make-custom-hash',
+            'make-directory*', 'make-exn:fail:contract:blame',
+            'make-exn:fail:object', 'make-flat-contract', 'make-fsemaphore',
+            'make-generate-ctc-fail', 'make-generic',
+            'make-immutable-custom-hash', 'make-input-port/read-to-peek',
+            'make-limited-input-port', 'make-list', 'make-lock-file-name',
+            'make-mixin-contract', 'make-none/c', 'make-pipe-with-specials',
+            'make-primitive-class', 'make-proj-contract',
+            'make-tentative-pretty-print-output-port', 'make-weak-custom-hash',
+            'match-equality-test', 'matches-arity-exactly?',
+            'member-name-key-hash-code', 'member-name-key=?',
+            'member-name-key?', 'merge-input', 'method-in-interface?',
+            'mixin-contract', 'n-&gt;th', 'nan?', 'natural-number/c', 'negate',
+            'new-?/c', 'new-?/c', 'ninth', 'normalize-path', 'object%',
+            'object-&gt;vector', 'object-info', 'object-interface',
+            'object-method-arity-includes?', 'object=?', 'object?',
+            'open-output-nowhere', 'order-of-magnitude', 'other-execute-bit',
+            'other-read-bit', 'other-write-bit', 'parse-command-line',
+            'partition', 'path-element?', 'path-only', 'pathlist-closure',
+            'pi', 'pi.f', 'place-break', 'place-channel', 'place-channel-get',
+            'place-channel-put', 'place-channel-put/get', 'place-channel?',
+            'place-dead-evt', 'place-enabled?', 'place-kill',
+            'place-message-allowed?', 'place-sleep', 'place-wait', 'place?',
+            'port-&gt;bytes', 'port-&gt;list', 'port-&gt;string',
+            'predicate/c', 'preferences-lock-file-mode', 'pretty-display',
+            'pretty-format', 'pretty-print',
+            'pretty-print-.-symbol-without-bars',
+            'pretty-print-abbreviate-read-macros', 'pretty-print-columns',
+            'pretty-print-current-style-table', 'pretty-print-depth',
+            'pretty-print-exact-as-decimal', 'pretty-print-extend-style-table',
+            'pretty-print-handler', 'pretty-print-newline',
+            'pretty-print-post-print-hook', 'pretty-print-pre-print-hook',
+            'pretty-print-print-hook', 'pretty-print-print-line',
+            'pretty-print-remap-stylable', 'pretty-print-show-inexactness',
+            'pretty-print-size-hook', 'pretty-print-style-table?',
+            'pretty-printing', 'pretty-write', 'printable&lt;%&gt;',
+            'printable/c', 'process', 'process*', 'process*/ports',
+            'process/ports', 'processor-count', 'promise-forced?',
+            'promise-running?', 'promise?', 'prop:chaperone-contract',
+            'prop:contract', 'prop:contracted', 'prop:dict',
+            'prop:flat-contract', 'prop:opt-chaperone-contract',
+            'prop:opt-chaperone-contract-get-test',
+            'prop:opt-chaperone-contract?', 'prop:stream', 'proper-subset?',
+            'put-preferences', 'radians-&gt;degrees', 'raise-blame-error',
+            'raise-contract-error', 'range', 'reencode-input-port',
+            'reencode-output-port', 'relocate-input-port',
+            'relocate-output-port', 'rest', 'second', 'sequence-&gt;list',
+            'sequence-add-between', 'sequence-andmap', 'sequence-append',
+            'sequence-count', 'sequence-filter', 'sequence-fold',
+            'sequence-for-each', 'sequence-length', 'sequence-map',
+            'sequence-ormap', 'sequence-ref', 'sequence-tail', 'set',
+            'set-&gt;list', 'set-add', 'set-count', 'set-empty?', 'set-eq?',
+            'set-equal?', 'set-eqv?', 'set-first', 'set-for-each',
+            'set-intersect', 'set-map', 'set-member?', 'set-remove',
+            'set-rest', 'set-subtract', 'set-symmetric-difference',
+            'set-union', 'set/c', 'set=?', 'set?', 'seteq', 'seteqv',
+            'seventh', 'sgn', 'shuffle', 'simple-form-path', 'sinh', 'sixth',
+            'skip-projection-wrapper?', 'some-system-path-&gt;string',
+            'special-filter-input-port', 'split-at', 'split-at-right', 'sqr',
+            'stream-&gt;list', 'stream-add-between', 'stream-andmap',
+            'stream-append', 'stream-count', 'stream-empty?', 'stream-filter',
+            'stream-first', 'stream-fold', 'stream-for-each', 'stream-length',
+            'stream-map', 'stream-ormap', 'stream-ref', 'stream-rest',
+            'stream-tail', 'stream?', 'string-&gt;some-system-path',
+            'string-append*', 'string-no-nuls?', 'struct-type-property/c',
+            'struct:exn:fail:contract:blame', 'struct:exn:fail:object',
+            'subclass?', 'subclass?/c', 'subset?', 'symbol=?', 'system',
+            'system*', 'system*/exit-code', 'system/exit-code', 'take',
+            'take-right', 'tanh', 'tcp-abandon-port', 'tcp-accept',
+            'tcp-accept-evt', 'tcp-accept-ready?', 'tcp-accept/enable-break',
+            'tcp-addresses', 'tcp-close', 'tcp-connect',
+            'tcp-connect/enable-break', 'tcp-listen', 'tcp-listener?',
+            'tcp-port?', 'tentative-pretty-print-port-cancel',
+            'tentative-pretty-print-port-transfer', 'tenth',
+            'the-unsupplied-arg', 'third', 'touch', 'transplant-input-port',
+            'transplant-output-port', 'true', 'udp-addresses', 'udp-bind!',
+            'udp-bound?', 'udp-close', 'udp-connect!', 'udp-connected?',
+            'udp-open-socket', 'udp-receive!', 'udp-receive!*',
+            'udp-receive!-evt', 'udp-receive!/enable-break',
+            'udp-receive-ready-evt', 'udp-send', 'udp-send*', 'udp-send-evt',
+            'udp-send-ready-evt', 'udp-send-to', 'udp-send-to*',
+            'udp-send-to-evt', 'udp-send-to/enable-break',
+            'udp-send/enable-break', 'udp?', 'unit?', 'unsupplied-arg?',
+            'user-execute-bit', 'user-read-bit', 'user-write-bit',
+            'value-contract', 'vector-append', 'vector-argmax',
+            'vector-argmin', 'vector-copy', 'vector-count', 'vector-drop',
+            'vector-drop-right', 'vector-filter', 'vector-filter-not',
+            'vector-map', 'vector-map!', 'vector-member', 'vector-memq',
+            'vector-memv', 'vector-set*!', 'vector-split-at',
+            'vector-split-at-right', 'vector-take', 'vector-take-right',
+            'with-input-from-bytes', 'with-input-from-string',
+            'with-output-to-bytes', 'with-output-to-string', 'would-be-future',
+            'writable&lt;%&gt;', 'xor',
+            ),
+        4 => array(
+            '&gt;=/c', '&lt;=/c', '-&gt;*m', '-&gt;d', '-&gt;dm', '-&gt;i', '-&gt;m',
+            '=/c', 'absent', 'abstract', 'add-between', 'and/c', 'any',
+            'any/c', 'augment', 'augment*', 'augment-final', 'augment-final*',
+            'augride', 'augride*', 'between/c', 'blame-add-context',
+            'box-immutable/c', 'box/c', 'call-with-file-lock/timeout',
+            'case-&gt;', 'case-&gt;m', 'class', 'class*',
+            'class-field-accessor', 'class-field-mutator', 'class/c',
+            'class/derived', 'command-line', 'compound-unit',
+            'compound-unit/infer', 'cons/c', 'continuation-mark-key/c',
+            'contract', 'contract-out', 'contract-struct', 'contracted',
+            'current-contract-region', 'define-compound-unit',
+            'define-compound-unit/infer', 'define-contract-struct',
+            'define-local-member-name', 'define-match-expander',
+            'define-member-name', 'define-opt/c', 'define-serializable-class',
+            'define-serializable-class*', 'define-signature',
+            'define-signature-form', 'define-struct/contract', 'define-unit',
+            'define-unit-binding', 'define-unit-from-context',
+            'define-unit/contract', 'define-unit/new-import-export',
+            'define-unit/s', 'define-values-for-export',
+            'define-values/invoke-unit', 'define-values/invoke-unit/infer',
+            'define/augment', 'define/augment-final', 'define/augride',
+            'define/contract', 'define/final-prop', 'define/match',
+            'define/overment', 'define/override', 'define/override-final',
+            'define/private', 'define/public', 'define/public-final',
+            'define/pubment', 'define/subexpression-pos-prop', 'delay',
+            'delay/idle', 'delay/name', 'delay/strict', 'delay/sync',
+            'delay/thread', 'dict-&gt;list', 'dict-can-functional-set?',
+            'dict-can-remove-keys?', 'dict-count', 'dict-for-each',
+            'dict-has-key?', 'dict-iterate-first', 'dict-iterate-key',
+            'dict-iterate-next', 'dict-iterate-value', 'dict-keys', 'dict-map',
+            'dict-mutable?', 'dict-ref', 'dict-ref!', 'dict-remove',
+            'dict-remove!', 'dict-set', 'dict-set!', 'dict-set*', 'dict-set*!',
+            'dict-update', 'dict-update!', 'dict-values', 'dict?',
+            'display-lines', 'display-lines-to-file', 'display-to-file',
+            'dynamic-place', 'dynamic-place*', 'eof-evt', 'except',
+            'exn:fail:contract:blame', 'exn:fail:object', 'export', 'extends',
+            'field', 'field-bound?', 'file-&gt;bytes', 'file-&gt;bytes-lines',
+            'file-&gt;lines', 'file-&gt;list', 'file-&gt;string',
+            'file-&gt;value', 'find-relative-path', 'flat-murec-contract',
+            'flat-rec-contract', 'for*/set', 'for*/seteq', 'for*/seteqv',
+            'for/set', 'for/seteq', 'for/seteqv', 'gen:dict', 'gen:stream',
+            'generic', 'get-field', 'get-preference', 'hash/c', 'implies',
+            'import', 'in-set', 'in-stream', 'include',
+            'include-at/relative-to', 'include-at/relative-to/reader',
+            'include/reader', 'inherit', 'inherit-field', 'inherit/inner',
+            'inherit/super', 'init', 'init-depend', 'init-field', 'init-rest',
+            'inner', 'inspect', 'instantiate', 'integer-in', 'interface',
+            'interface*', 'invoke-unit', 'invoke-unit/infer', 'lazy', 'link',
+            'list/c', 'listof', 'local', 'make-handle-get-preference-locked',
+            'make-object', 'make-temporary-file', 'match', 'match*',
+            'match*/derived', 'match-define', 'match-define-values',
+            'match-lambda', 'match-lambda*', 'match-lambda**', 'match-let',
+            'match-let*', 'match-let*-values', 'match-let-values',
+            'match-letrec', 'match/derived', 'match/values', 'member-name-key',
+            'method-contract?', 'mixin', 'nand', 'new', 'non-empty-listof',
+            'none/c', 'nor', 'not/c', 'object-contract', 'object/c',
+            'one-of/c', 'only', 'open', 'opt/c', 'or/c', 'overment',
+            'overment*', 'override', 'override*', 'override-final',
+            'override-final*', 'parameter/c', 'parametric-&gt;/c',
+            'peek-bytes!-evt', 'peek-bytes-avail!-evt', 'peek-bytes-evt',
+            'peek-string!-evt', 'peek-string-evt', 'peeking-input-port',
+            'place', 'place*', 'port-&gt;bytes-lines', 'port-&gt;lines',
+            'prefix', 'private', 'private*', 'procedure-arity-includes/c',
+            'promise/c', 'prompt-tag/c', 'prop:dict/contract',
+            'provide-signature-elements', 'provide/contract', 'public',
+            'public*', 'public-final', 'public-final*', 'pubment', 'pubment*',
+            'read-bytes!-evt', 'read-bytes-avail!-evt', 'read-bytes-evt',
+            'read-bytes-line-evt', 'read-line-evt', 'read-string!-evt',
+            'read-string-evt', 'real-in', 'recursive-contract',
+            'regexp-match-evt', 'remove-duplicates', 'rename', 'rename-inner',
+            'rename-super', 'send', 'send*', 'send+', 'send-generic',
+            'send/apply', 'send/keyword-apply', 'set-field!', 'shared',
+            'stream', 'stream-cons', 'string-join', 'string-len/c',
+            'string-normalize-spaces', 'string-replace', 'string-split',
+            'string-trim', 'struct*', 'struct/c', 'struct/ctc', 'struct/dc',
+            'super', 'super-instantiate', 'super-make-object', 'super-new',
+            'symbols', 'syntax/c', 'tag', 'this', 'this%', 'thunk', 'thunk*',
+            'unconstrained-domain-&gt;', 'unit', 'unit-from-context', 'unit/c',
+            'unit/new-import-export', 'unit/s', 'vector-immutable/c',
+            'vector-immutableof', 'vector/c', 'vectorof', 'with-contract',
+            'with-method', 'write-to-file', '~.a', '~.s', '~.v', '~a', '~e',
+            '~r', '~s', '~v',
+            ),
+        ),
+    'SYMBOLS' => array(
+        0 => array(
+            '&gt;', '&gt;=', '&lt;', '&lt;=', '*', '+', '-', '-&gt;', '-&gt;*', '...', '/',
+            '=', '=&gt;', '==', '_', '#fl', '#fx', '#s', '#', '#f', '#F',
+            '#false', '#t', '#T', '#true', '#lang', '#reader', '.', '\'', '#`',
+            '#,@', '#,', '#\'', '`', '@', ',', '#%', '#$', '#&', '#~', '#rx',
+            '#px', '#<<', '#;', '#hash', '#',
+            ),
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false,
+        4 => false,
+        ),
+    'NUMBERS' => array(
+        1 => '(((#x#e)|(#e#x)|(#x#i)|(#i#x)|(#x))((((((((((((-)|(\+)))?(((('.
+            '(([0-9])+)?(\.)?(([0-9a-fA-F])+(#)*)))|(((([0-9a-fA-F])+(#)*)'.
+            '(\.)?(#)*))|(((([0-9a-fA-F])+(#)*)\\/(([0-9a-fA-F])+(#)*))))('.
+            '([sl]((((-)|(\+)))?([0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan'.
+            '\.))[0f])))))?((-)|(\+))(((((((([0-9])+)?(\.)?(([0-9a-fA-F])+'.
+            '(#)*)))|(((([0-9a-fA-F])+(#)*)(\.)?(#)*))|(((([0-9a-fA-F])+(#'.
+            ')*)\\/(([0-9a-fA-F])+(#)*))))(([sl]((((-)|(\+)))?([0-9])+)))?'.
+            '))|((((inf\.)|(nan\.))[0f])))i))|((((((((-)|(\+)))?(((((([0-9'.
+            '])+)?(\.)?(([0-9a-fA-F])+(#)*)))|(((([0-9a-fA-F])+(#)*)(\.)?('.
+            '#)*))|(((([0-9a-fA-F])+(#)*)\\/(([0-9a-fA-F])+(#)*))))(([sl]('.
+            '(((-)|(\+)))?([0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan\.))[0'.
+            'f]))))@((((((-)|(\+)))?(((((([0-9])+)?(\.)?(([0-9a-fA-F])+(#)'.
+            '*)))|(((([0-9a-fA-F])+(#)*)(\.)?(#)*))|(((([0-9a-fA-F])+(#)*)'.
+            '\\/(([0-9a-fA-F])+(#)*))))(([sl]((((-)|(\+)))?([0-9])+)))?)))'.
+            '|((((-)|(\+))(((inf\.)|(nan\.))[0f]))))))))|((((((-)|(\+)))?('.
+            '([0-9])+\\/([0-9])+))((-)|(\+))(([0-9])+\\/([0-9])+)i))|((((('.
+            '-)|(\+)))?(([0-9])+\\/([0-9])+)))|(((((((-)|(\+)))?(((((([0-9'.
+            '])+)?(\.)?(([0-9a-fA-F])+(#)*)))|(((([0-9a-fA-F])+(#)*)(\.)?('.
+            '#)*))|(((([0-9a-fA-F])+(#)*)\\/(([0-9a-fA-F])+(#)*))))(([sl]('.
+            '(((-)|(\+)))?([0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan\.))[0'.
+            'f])))))|(((((-)|(\+)))?([0-9])+))))',
+        2 => '(((#o#e)|(#e#o)|(#o#i)|(#i#o)|(#o))((((((((((((-)|(\+)))?(((('.
+            '(([0-9])+)?(\.)?(([0-7])+(#)*)))|(((([0-7])+(#)*)(\.)?(#)*))|'.
+            '(((([0-7])+(#)*)\\/(([0-7])+(#)*))))(((([sl])|([def]))((((-)|'.
+            '(\+)))?([0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan\.))[0f]))))'.
+            ')?((-)|(\+))(((((((([0-9])+)?(\.)?(([0-7])+(#)*)))|(((([0-7])'.
+            '+(#)*)(\.)?(#)*))|(((([0-7])+(#)*)\\/(([0-7])+(#)*))))(((([sl'.
+            '])|([def]))((((-)|(\+)))?([0-9])+)))?))|((((inf\.)|(nan\.))[0'.
+            'f])))i))|((((((((-)|(\+)))?(((((([0-9])+)?(\.)?(([0-7])+(#)*)'.
+            '))|(((([0-7])+(#)*)(\.)?(#)*))|(((([0-7])+(#)*)\\/(([0-7])+(#'.
+            ')*))))(((([sl])|([def]))((((-)|(\+)))?([0-9])+)))?)))|((((-)|'.
+            '(\+))(((inf\.)|(nan\.))[0f]))))@((((((-)|(\+)))?(((((([0-9])+'.
+            ')?(\.)?(([0-7])+(#)*)))|(((([0-7])+(#)*)(\.)?(#)*))|(((([0-7]'.
+            ')+(#)*)\\/(([0-7])+(#)*))))(((([sl])|([def]))((((-)|(\+)))?(['.
+            '0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan\.))[0f]))))))))|(((('.
+            '((-)|(\+)))?(([0-9])+\\/([0-9])+))((-)|(\+))(([0-9])+\\/([0-9'.
+            '])+)i))|(((((-)|(\+)))?(([0-9])+\\/([0-9])+)))|(((((((-)|(\+)'.
+            '))?(((((([0-9])+)?(\.)?(([0-7])+(#)*)))|(((([0-7])+(#)*)(\.)?'.
+            '(#)*))|(((([0-7])+(#)*)\\/(([0-7])+(#)*))))(((([sl])|([def]))'.
+            '((((-)|(\+)))?([0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan\.))['.
+            '0f])))))|(((((-)|(\+)))?([0-9])+))))',
+        3 => '(((#b#e)|(#e#b)|(#b#i)|(#i#b)|(#b))((((((((((((-)|(\+)))?(((('.
+            '(([0-9])+)?(\.)?(([0-1])+(#)*)))|(((([0-1])+(#)*)(\.)?(#)*))|'.
+            '(((([0-1])+(#)*)\\/(([0-1])+(#)*))))(((([sl])|([def]))((((-)|'.
+            '(\+)))?([0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan\.))[0f]))))'.
+            ')?((-)|(\+))(((((((([0-9])+)?(\.)?(([0-1])+(#)*)))|(((([0-1])'.
+            '+(#)*)(\.)?(#)*))|(((([0-1])+(#)*)\\/(([0-1])+(#)*))))(((([sl'.
+            '])|([def]))((((-)|(\+)))?([0-9])+)))?))|((((inf\.)|(nan\.))[0'.
+            'f])))i))|((((((((-)|(\+)))?(((((([0-9])+)?(\.)?(([0-1])+(#)*)'.
+            '))|(((([0-1])+(#)*)(\.)?(#)*))|(((([0-1])+(#)*)\\/(([0-1])+(#'.
+            ')*))))(((([sl])|([def]))((((-)|(\+)))?([0-9])+)))?)))|((((-)|'.
+            '(\+))(((inf\.)|(nan\.))[0f]))))@((((((-)|(\+)))?(((((([0-9])+'.
+            ')?(\.)?(([0-1])+(#)*)))|(((([0-1])+(#)*)(\.)?(#)*))|(((([0-1]'.
+            ')+(#)*)\\/(([0-1])+(#)*))))(((([sl])|([def]))((((-)|(\+)))?(['.
+            '0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan\.))[0f]))))))))|(((('.
+            '((-)|(\+)))?(([0-9])+\\/([0-9])+))((-)|(\+))(([0-9])+\\/([0-9'.
+            '])+)i))|(((((-)|(\+)))?(([0-9])+\\/([0-9])+)))|(((((((-)|(\+)'.
+            '))?(((((([0-9])+)?(\.)?(([0-1])+(#)*)))|(((([0-1])+(#)*)(\.)?'.
+            '(#)*))|(((([0-1])+(#)*)\\/(([0-1])+(#)*))))(((([sl])|([def]))'.
+            '((((-)|(\+)))?([0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan\.))['.
+            '0f])))))|(((((-)|(\+)))?([0-9])+))))',
+        4 => '((((#d#e)|(#e#d)|(#d#i)|(#i#d)|(#e)|(#i)|(#d)))?((((((((((((-'.
+            ')|(\+)))?(((((([0-9])+)?(\.)?(([0-9])+(#)*)))|(((([0-9])+(#)*'.
+            ')(\.)?(#)*))|(((([0-9])+(#)*)\\/(([0-9])+(#)*))))(((([sl])|(['.
+            'def]))((((-)|(\+)))?([0-9])+)))?)))|((((-)|(\+))(((inf\.)|(na'.
+            'n\.))[0f])))))?((-)|(\+))(((((((([0-9])+)?(\.)?(([0-9])+(#)*)'.
+            '))|(((([0-9])+(#)*)(\.)?(#)*))|(((([0-9])+(#)*)\\/(([0-9])+(#'.
+            ')*))))(((([sl])|([def]))((((-)|(\+)))?([0-9])+)))?))|((((inf'.
+            '\.)|(nan\.))[0f])))i))|((((((((-)|(\+)))?(((((([0-9])+)?(\.)?'.
+            '(([0-9])+(#)*)))|(((([0-9])+(#)*)(\.)?(#)*))|(((([0-9])+(#)*)'.
+            '\\/(([0-9])+(#)*))))(((([sl])|([def]))((((-)|(\+)))?([0-9])+)'.
+            '))?)))|((((-)|(\+))(((inf\.)|(nan\.))[0f]))))@((((((-)|(\+)))'.
+            '?(((((([0-9])+)?(\.)?(([0-9])+(#)*)))|(((([0-9])+(#)*)(\.)?(#'.
+            ')*))|(((([0-9])+(#)*)\\/(([0-9])+(#)*))))(((([sl])|([def]))(('.
+            '((-)|(\+)))?([0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan\.))[0f'.
+            ']))))))))|((((((-)|(\+)))?(([0-9])+\\/([0-9])+))((-)|(\+))((['.
+            '0-9])+\\/([0-9])+)i))|(((((-)|(\+)))?(([0-9])+\\/([0-9])+)))|'.
+            '(((((((-)|(\+)))?(((((([0-9])+)?(\.)?(([0-9])+(#)*)))|(((([0-'.
+            '9])+(#)*)(\.)?(#)*))|(((([0-9])+(#)*)\\/(([0-9])+(#)*))))(((('.
+            '[sl])|([def]))((((-)|(\+)))?([0-9])+)))?)))|((((-)|(\+))(((in'.
+            'f\.)|(nan\.))[0f])))))|(((((-)|(\+)))?([0-9])+))))',
+            ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: blue;',
+            2 => 'color: rgb(34, 34, 139);',
+            3 => 'color: blue;',
+            4 => 'color: rgb(34, 34, 139);',
+            ),
+        'COMMENTS' => array(
+            1 => 'color: rgb(194, 116, 31);',
+            'MULTI' => 'color: rgb(194, 116, 31);',
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => '',
+            ),
+        'BRACKETS' => array(
+            0 => 'color: rgb(132, 60,36);',
+            ),
+        'STRINGS' => array(
+            0 => 'color: rgb(34, 139, 34);',
+            ),
+        'NUMBERS' => array(
+            0 => 'color: rgb(34, 139, 34);',
+            1 => 'color: rgb(34, 139, 34);',
+            2 => 'color: rgb(34, 139, 34);',
+            3 => 'color: rgb(34, 139, 34);',
+            4 => 'color: rgb(34, 139, 34);',
+            ),
+        'METHODS' => array(
+            0 => 'color: #202020;',
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: rgb(132, 60,36);',
+            ),
+        'REGEXPS' => array(
+            1 => 'color: rgb(34, 139, 34);',
+            2 => 'color: rgb(132, 60,36);',
+            3 => 'color: rgb(34, 139, 34);',
+            ),
+        'SCRIPT' => array(
+            ),
+        ),
+    'URLS' => array(
+        1 => 'http://docs.racket-lang.org/reference/',
+        2 => 'http://docs.racket-lang.org/reference/',
+        3 => 'http://docs.racket-lang.org/reference/',
+        4 => 'http://docs.racket-lang.org/reference/',
+        ),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(
+        ),
+    'REGEXPS' => array(
+        1 => '#\\\\(nul|null|backspace|tab|newline|linefeed|vtab|page|retur'.
+            'n|space|rubout|([0-7]{1,3})|(u[[:xdigit:]]{1,4})|(U[[:xdigit:'.
+            ']]{1,6})|[a-z])',
+        2 => '#:[^[:space:]()[\\]{}",\']+',
+        3 => '\'((\\\\ )|([^[:space:]()[\\]{}",\']))+',
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'PARSER_CONTROL' => array(
+        'KEYWORDS' => array(
+            'DISALLOWED_BEFORE' => '[[:space:]()[\\]{}",\']',
+            ),
+        'ENABLE_FLAGS' => array(
+            'SYMBOLS' => GESHI_MAYBE,
+            'BRACKETS' => GESHI_MAYBE,
+            'REGEXPS' => GESHI_MAYBE,
+            'ESCAPE_CHAR' => GESHI_MAYBE,
+            )
+        )
+);
diff --git a/inc/geshi/rails.php b/vendor/easybook/geshi/geshi/rails.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/rails.php
rename to vendor/easybook/geshi/geshi/rails.php
index 65ddee884e4bacffefb7c28dda00b700228e53f9..d41bd9a6f837adf302e3e670064c85e3134e97bb
--- a/inc/geshi/rails.php
+++ b/vendor/easybook/geshi/geshi/rails.php
@@ -402,5 +402,3 @@ $language_data = array (
         0 => true,
         )
 );
-
-?>
diff --git a/vendor/easybook/geshi/geshi/rbs.php b/vendor/easybook/geshi/geshi/rbs.php
new file mode 100644
index 0000000000000000000000000000000000000000..02c2fcfa8ff1718e516009d1a9fa925bcc5b6f56
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/rbs.php
@@ -0,0 +1,224 @@
+<?php
+/*************************************************************************************
+ * rbs.php
+ * ------
+ * Author: Deng Wen Gang (deng@priity.com)
+ * Copyright: (c) 2013 Deng Wen Gang
+ * Release Version: 1.0.8.12
+ * Date Started: 2013/01/15
+ *
+ * RBScript language file for GeSHi.
+ *
+ * RBScript official website: http://docs.realsoftware.com/index.php/Rbscript
+ *
+ * CHANGES
+ * -------
+ * 2013/01/15 (1.0.0)
+ *  -  First Release
+ *
+ * TODO
+ * ----
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'RBScript',
+    'COMMENT_SINGLE' => array( 1 => '//', 2 => "'" ),
+    'COMMENT_MULTI' => array(),
+    'COMMENT_REGEXP' => array(
+        3 => '/REM\s.*$/im',
+        4 => '/&b[01]+/',
+        5 => '/&o[0-7]+/',
+        6 => '/&h[a-f0-9]+/i',
+        7 => '/&c[a-f0-9]+/i',
+        8 => '/&u[a-f0-9]+/i',
+        ),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array('"'),
+    'ESCAPE_CHAR' => '',
+    'KEYWORDS' => array(
+        1 => array(
+            'Int8', 'Int16', 'Int32', 'Int64', 'Uint8', 'Uint16', 'Uint32', 'Uint64', 'Byte', 'Integer',
+            'Single', 'Double', 'Boolean', 'String', 'Color', 'Object', 'Variant'
+            ),
+        2 => array(
+            'Private', 'Public', 'Protected',
+            'Sub', 'Function', 'Delegate', 'Exception',
+            ),
+        3 => array(
+            'IsA',
+            'And', 'Or', 'Not', 'Xor',
+            'If', 'Then', 'Else', 'ElseIf',
+            'Select', 'Case',
+            'For', 'Each', 'In', 'To', 'Step', 'Next',
+            'Do', 'Loop', 'Until',
+            'While', 'Wend',
+            'Continue', 'Exit', 'Goto', 'End',
+            ),
+        4 => array(
+            'Const', 'Static',
+            'Dim', 'As', 'Redim',
+            'Me', 'Self', 'Super', 'Extends', 'Implements',
+            'ByRef', 'ByVal', 'Assigns', 'ParamArray',
+            'Mod',
+            'Raise',
+            ),
+        5 => array(
+            'False', 'True', 'Nil'
+            ),
+        6 => array(
+            'Abs',
+            'Acos',
+            'Asc',
+            'AscB',
+            'Asin',
+            'Atan',
+            'Atan2',
+            'CDbl',
+            'Ceil',
+            'Chr',
+            'ChrB',
+            'CMY',
+            'Cos',
+            'CountFields',
+            'CStr',
+            'Exp',
+            'Floor',
+            'Format',
+            'Hex',
+            'HSV',
+            'InStr',
+            'InStrB',
+            'Left',
+            'LeftB',
+            'Len',
+            'LenB',
+            'Log',
+            'Lowercase',
+            'LTrim',
+            'Max',
+            'Microseconds',
+            'Mid',
+            'MidB',
+            'Min',
+            'NthField',
+            'Oct',
+            'Pow',
+            'Replace',
+            'ReplaceB',
+            'ReplaceAll',
+            'ReplaceAllB',
+            'RGB',
+            'Right',
+            'RightB',
+            'Rnd',
+            'Round',
+            'RTrim',
+            'Sin',
+            'Sqrt',
+            'Str',
+            'StrComp',
+            'Tan',
+            'Ticks',
+            'Titlecase',
+            'Trim',
+            'UBound',
+            'Uppercase',
+            'Val',
+            ),
+        ),
+    'SYMBOLS' => array(
+            '+', '-', '*', '/', '\\', '^', '<', '>', '=', '<>', '&'
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false,
+        4 => false,
+        5 => false,
+        6 => false
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #F660AB; font-weight: bold;',
+            2 => 'color: #E56717; font-weight: bold;',
+            3 => 'color: #8D38C9; font-weight: bold;',
+            4 => 'color: #151B8D; font-weight: bold;',
+            5 => 'color: #00C2FF; font-weight: bold;',
+            6 => 'color: #3EA99F; font-weight: bold;'
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #008000;',
+            2 => 'color: #008000;',
+            3 => 'color: #008000;',
+
+            4 => 'color: #800000;',
+            5 => 'color: #800000;',
+            6 => 'color: #800000;',
+            7 => 'color: #800000;',
+            8 => 'color: #800000;',
+            ),
+        'BRACKETS' => array(
+            ),
+        'STRINGS' => array(
+            0 => 'color: #800000;'
+            ),
+        'NUMBERS' => array(
+            ),
+        'METHODS' => array(
+            ),
+        'SYMBOLS' => array(
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #800000; font-weight: bold;'
+            ),
+        'SCRIPT' => array(
+            ),
+        'REGEXPS' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => '',
+        5 => '',
+        6 => ''
+        ),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(
+        ),
+    'REGEXPS' => array(
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'PARSER_CONTROL' => array(
+        'ENABLE_FLAGS' => array(
+            'BRACKETS' => GESHI_NEVER,
+            'SYMBOLS' => GESHI_NEVER,
+            'NUMBERS' => GESHI_NEVER
+            )
+        )
+);
diff --git a/inc/geshi/rebol.php b/vendor/easybook/geshi/geshi/rebol.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/rebol.php
rename to vendor/easybook/geshi/geshi/rebol.php
diff --git a/inc/geshi/reg.php b/vendor/easybook/geshi/geshi/reg.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/reg.php
rename to vendor/easybook/geshi/geshi/reg.php
index 157b2bd24b3a7ad072c400101985cf2316426378..2034d5adbe03484c0f0f29cab4b682d8a9f53510
--- a/inc/geshi/reg.php
+++ b/vendor/easybook/geshi/geshi/reg.php
@@ -229,5 +229,3 @@ $language_data = array (
         )
     )
 );
-
-?>
diff --git a/inc/geshi/rexx.php b/vendor/easybook/geshi/geshi/rexx.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/rexx.php
rename to vendor/easybook/geshi/geshi/rexx.php
index b3cb932297e92dec8387d599ef0c723eb3f3e674..1189ac5be20e831ec9786c282a24206de64bfbd1
--- a/inc/geshi/rexx.php
+++ b/vendor/easybook/geshi/geshi/rexx.php
@@ -158,5 +158,3 @@ $language_data = array (
         ),
     'TAB_WIDTH' => 4
 );
-
-?>
diff --git a/inc/geshi/robots.php b/vendor/easybook/geshi/geshi/robots.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/robots.php
rename to vendor/easybook/geshi/geshi/robots.php
diff --git a/inc/geshi/rpmspec.php b/vendor/easybook/geshi/geshi/rpmspec.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/rpmspec.php
rename to vendor/easybook/geshi/geshi/rpmspec.php
diff --git a/inc/geshi/rsplus.php b/vendor/easybook/geshi/geshi/rsplus.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/rsplus.php
rename to vendor/easybook/geshi/geshi/rsplus.php
diff --git a/inc/geshi/ruby.php b/vendor/easybook/geshi/geshi/ruby.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/ruby.php
rename to vendor/easybook/geshi/geshi/ruby.php
diff --git a/vendor/easybook/geshi/geshi/rust.php b/vendor/easybook/geshi/geshi/rust.php
new file mode 100644
index 0000000000000000000000000000000000000000..07ba51a02a1f1fd01d0029ff4e62ad98085662ac
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/rust.php
@@ -0,0 +1,228 @@
+<?php
+/*************************************************************************************
+ * rust.php
+ * --------
+ * Author: Edward Hart (edward.dan.hart@gmail.com)
+ * Copyright: (c) 2013 Edward Hart
+ * Release Version: 1.0.8.12
+ * Date Started: 2013/10/20
+ *
+ * Rust language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2013/10/20
+ *   -  First Release
+ *
+ * TODO (updated 2013/10/20)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array(
+    'LANG_NAME' => 'Rust',
+
+    'COMMENT_SINGLE' => array('//'),
+    'COMMENT_MULTI' => array('/*' => '*/'),
+    'COMMENT_REGEXP' => array(),
+
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '',
+    'ESCAPE_REGEXP' => array(
+        //Simple Single Char Escapes
+        1 => "#\\\\[\\\\nrt\'\"?\n]#i",
+        //Hexadecimal Char Specs
+        2 => "#\\\\x[\da-fA-F]{2}#",
+        //Hexadecimal Char Specs
+        3 => "#\\\\u[\da-fA-F]{4}#",
+        //Hexadecimal Char Specs
+        4 => "#\\\\U[\da-fA-F]{8}#",
+        //Octal Char Specs
+        5 => "#\\\\[0-7]{1,3}#"
+        ),
+    'NUMBERS' =>
+        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
+        GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
+        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
+
+    'KEYWORDS' => array(
+        // Keywords
+        1 => array(
+            'alt', 'as', 'assert', 'break', 'const', 'continue', 'copy', 'do',
+            'else', 'enum', 'extern', 'fn', 'for', 'if',
+            'impl', 'in', 'let', 'log', 'loop', 'match', 'mod', 'mut', 'of',
+            'priv', 'pub', 'ref', 'return', 'self', 'static', 'struct', 'super',
+            'to', 'trait', 'type', 'unsafe', 'use', 'with', 'while'
+            ),
+        // Boolean values
+        2 => array( 'true', 'false' ),
+        // Structs and built-in types
+        3 => array(
+            'u8', 'i8',
+            'u16', 'i16',
+            'u32', 'i32',
+            'u64', 'i64',
+            'f32', 'f64',
+            'int', 'uint',
+            'float',
+            'bool',
+            'str', 'char',
+            'Argument', 'AsyncWatcher', 'BorrowRecord', 'BufReader',
+            'BufWriter', 'BufferedReader', 'BufferedStream', 'BufferedWriter',
+            'ByRef', 'ByteIterator', 'CFile', 'CString', 'CStringIterator',
+            'Cell', 'Chain', 'Chan', 'ChanOne', 'CharIterator',
+            'CharOffsetIterator', 'CharRange', 'CharSplitIterator',
+            'CharSplitNIterator', 'ChunkIter', 'Condition', 'ConnectRequest',
+            'Coroutine', 'Counter', 'CrateMap', 'Cycle', 'DeflateWriter',
+            'Display', 'ElementSwaps', 'Enumerate', 'Exp', 'Exp1', 'FileDesc',
+            'FileReader', 'FileStat', 'FileStream', 'FileWriter', 'Filter',
+            'FilterMap', 'FlatMap', 'FormatSpec', 'Formatter', 'FsRequest',
+            'Fuse', 'GarbageCollector', 'GetAddrInfoRequest', 'Handle',
+            'HashMap', 'HashMapIterator', 'HashMapMoveIterator',
+            'HashMapMutIterator', 'HashSet', 'HashSetIterator',
+            'HashSetMoveIterator', 'Hint', 'IdleWatcher', 'InflateReader',
+            'Info', 'Inspect', 'Invert', 'IoError', 'Isaac64Rng', 'IsaacRng',
+            'LineBufferedWriter', 'Listener', 'LocalHeap', 'LocalStorage',
+            'Loop', 'Map', 'MatchesIndexIterator', 'MemReader', 'MemWriter',
+            'MemoryMap', 'ModEntry', 'MoveIterator', 'MovePtrAdaptor',
+            'MoveRevIterator', 'NoOpRunnable', 'NonCopyable', 'Normal',
+            'OSRng', 'OptionIterator', 'Parser', 'Path', 'Peekable',
+            'Permutations', 'Pipe', 'PipeStream', 'PluralArm', 'Port',
+            'PortOne', 'Process', 'ProcessConfig', 'ProcessOptions',
+            'ProcessOutput', 'RC', 'RSplitIterator', 'RandSample', 'Range',
+            'RangeInclusive', 'RangeStep', 'RangeStepInclusive', 'Rc', 'RcMut',
+            'ReaderRng', 'Repeat', 'ReprVisitor', 'RequestData',
+            'ReseedWithDefault', 'ReseedingRng', 'Scan', 'SchedOpts',
+            'SelectArm', 'SharedChan', 'SharedPort', 'SignalWatcher',
+            'SipState', 'Skip', 'SkipWhile', 'SocketAddr', 'SplitIterator',
+            'StackPool', 'StackSegment', 'StandardNormal', 'StdErrLogger',
+            'StdIn', 'StdOut', 'StdReader', 'StdRng', 'StdWriter',
+            'StrSplitIterator', 'StreamWatcher', 'TTY', 'Take', 'TakeWhile',
+            'Task', 'TaskBuilder', 'TaskOpts', 'TcpAcceptor', 'TcpListener',
+            'TcpStream', 'TcpWatcher', 'Timer', 'TimerWatcher', 'TrieMap',
+            'TrieMapIterator', 'TrieSet', 'TrieSetIterator', 'Tube',
+            'UdpSendRequest', 'UdpSocket', 'UdpStream', 'UdpWatcher', 'Unfold',
+            'UnixAcceptor', 'UnixListener', 'UnixStream', 'Unwinder',
+            'UvAddrInfo', 'UvError', 'UvEventLoop', 'UvFileStream',
+            'UvIoFactory', 'UvPausibleIdleCallback', 'UvPipeStream',
+            'UvProcess', 'UvRemoteCallback', 'UvSignal', 'UvTTY',
+            'UvTcpAcceptor', 'UvTcpListener', 'UvTcpStream', 'UvTimer',
+            'UvUdpSocket', 'UvUnboundPipe', 'UvUnixAcceptor', 'UvUnixListener',
+            'VecIterator', 'VecMutIterator', 'Weighted', 'WeightedChoice',
+            'WindowIter', 'WriteRequest', 'XorShiftRng', 'Zip', 'addrinfo',
+            'uv_buf_t', 'uv_err_data', 'uv_process_options_t', 'uv_stat_t',
+            'uv_stdio_container_t', 'uv_timespec_t'
+            ),
+        // Enums
+        4 => array(
+            'Alignment', 'Count', 'Either', 'ExponentFormat', 'FPCategory',
+            'FileAccess', 'FileMode', 'Flag', 'IoErrorKind', 'IpAddr',
+            'KeyValue', 'MapError', 'MapOption', 'MemoryMapKind', 'Method',
+            'NullByteResolution', 'Option', 'Ordering', 'PathPrefix', 'Piece',
+            'PluralKeyword', 'Position', 'Protocol', 'Result', 'SchedHome',
+            'SchedMode', 'SeekStyle', 'SendStr', 'SignFormat',
+            'SignificantDigits', 'Signum', 'SocketType', 'StdioContainer',
+            'TaskResult', 'TaskType', 'UvSocketAddr', 'Void', 'uv_handle_type',
+            'uv_membership', 'uv_req_type'
+            )
+        ),
+    'SYMBOLS' => array(
+        '(', ')', '{', '}', '[', ']',
+        '+', '-', '*', '/', '%',
+        '&', '|', '^', '!', '<', '>', '~', '@',
+        ':',
+        ';', ',',
+        '='
+        ),
+
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => true,
+        2 => true,
+        3 => true,
+        4 => true
+        ),
+
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #708;',
+            2 => 'color: #219;',
+            3 => 'color: #05a;',
+            4 => 'color: #800;'
+            ),
+        'COMMENTS' => array(
+            0 => 'color: #a50; font-style: italic;',
+            'MULTI' => 'color: #a50; font-style: italic;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #000099; font-weight: bold;',
+            1 => 'color: #000099; font-weight: bold;',
+            2 => 'color: #660099; font-weight: bold;',
+            3 => 'color: #660099; font-weight: bold;',
+            4 => 'color: #660099; font-weight: bold;',
+            5 => 'color: #006699; font-weight: bold;',
+            'HARD' => ''
+            ),
+        'STRINGS' => array(
+            0 => 'color: #a11;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #0000dd;',
+            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
+            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
+            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
+            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
+            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
+            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
+            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
+            ),
+        'BRACKETS' => array(''),
+        'METHODS' => array(
+            1 => 'color: #164;'
+            ),
+        'SYMBOLS' => array(
+            0 => ''
+            ),
+        'REGEXPS' => array(
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => ''
+        ),
+    'OOLANG' => true,
+    'OBJECT_SPLITTERS' => array(
+        1 => '::'
+        ),
+    'REGEXPS' => array(
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'TAB_WIDTH' => 4
+);
diff --git a/inc/geshi/sas.php b/vendor/easybook/geshi/geshi/sas.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/sas.php
rename to vendor/easybook/geshi/geshi/sas.php
diff --git a/vendor/easybook/geshi/geshi/sass.php b/vendor/easybook/geshi/geshi/sass.php
new file mode 100644
index 0000000000000000000000000000000000000000..286f4bfab88854cb27e0c98b38e03a6c704a4ea3
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/sass.php
@@ -0,0 +1,248 @@
+<?php
+/*************************************************************************************
+ * sass.php
+ * -------
+ * Author: Javier Eguiluz (javier.eguiluz@gmail.com)
+ * Release Version: 1.0.8.12
+ * Date Started: 2014/05/10
+ *
+ * SASS language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2014/05/10 (1.0.0)
+ *   -  First Release
+ *
+ *************************************************************************************
+ *
+ *   This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'Sass',
+    'COMMENT_SINGLE' => array(1 => '//'),
+    'COMMENT_MULTI' => array('/*' => '*/'),
+    'COMMENT_REGEXP' => array(),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array('"', "'"),
+    'ESCAPE_CHAR' => '',
+    'ESCAPE_REGEXP' => array(
+        ),
+    'NUMBERS' =>
+        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_FLT_SCI_ZERO,
+    'KEYWORDS' => array(
+        // properties
+        1 => array(
+            'azimuth', 'background-attachment', 'background-color',
+            'background-image', 'background-position', 'background-repeat',
+            'background', 'border-bottom-color', 'border-radius',
+            'border-top-left-radius', 'border-top-right-radius',
+            'border-bottom-right-radius', 'border-bottom-left-radius',
+            'border-bottom-style', 'border-bottom-width', 'border-left-color',
+            'border-left-style', 'border-left-width', 'border-right',
+            'border-right-color', 'border-right-style', 'border-right-width',
+            'border-top-color', 'border-top-style',
+            'border-top-width','border-bottom', 'border-collapse',
+            'border-left', 'border-width', 'border-color', 'border-spacing',
+            'border-style', 'border-top', 'border', 'box-shadow', 'caption-side', 'clear',
+            'clip', 'color', 'content', 'counter-increment', 'counter-reset',
+            'cue-after', 'cue-before', 'cue', 'cursor', 'direction', 'display',
+            'elevation', 'empty-cells', 'float', 'font-family', 'font-size',
+            'font-size-adjust', 'font-stretch', 'font-style', 'font-variant',
+            'font-weight', 'font', 'line-height', 'letter-spacing',
+            'list-style', 'list-style-image', 'list-style-position',
+            'list-style-type', 'margin-bottom', 'margin-left', 'margin-right',
+            'margin-top', 'margin', 'marker-offset', 'marks', 'max-height',
+            'max-width', 'min-height', 'min-width', 'orphans', 'outline',
+            'outline-color', 'outline-style', 'outline-width', 'overflow',
+            'padding-bottom', 'padding-left', 'padding-right', 'padding-top',
+            'padding', 'page', 'page-break-after', 'page-break-before',
+            'page-break-inside', 'pause-after', 'pause-before', 'pause',
+            'pitch', 'pitch-range', 'play-during', 'position', 'quotes',
+            'richness', 'right', 'size', 'speak-header', 'speak-numeral',
+            'speak-punctuation', 'speak', 'speech-rate', 'stress',
+            'table-layout', 'text-align', 'text-decoration', 'text-indent',
+            'text-shadow', 'text-transform', 'top', 'unicode-bidi',
+            'vertical-align', 'visibility', 'voice-family', 'volume',
+            'white-space', 'widows', 'width', 'word-spacing', 'z-index',
+            'bottom', 'left', 'height',
+            // media queries
+            'screen', 'orientation', 'min-device-width', 'max-device-width',
+            ),
+        // reserved words for values
+        2 => array(
+            // colors
+            'aqua', 'black', 'blue', 'fuchsia', 'gray', 'green', 'lime',
+            'maroon', 'navy', 'olive', 'orange', 'purple', 'red', 'silver',
+            'teal', 'white', 'yellow',
+            // media queries
+            'landscape', 'portrait', 
+            // other
+            'above', 'absolute', 'always', 'armenian', 'aural', 'auto',
+            'avoid', 'baseline', 'behind', 'below', 'bidi-override', 'blink',
+            'block', 'bold', 'bolder', 'both', 'capitalize', 'center-left',
+            'center-right', 'center', 'circle', 'cjk-ideographic',
+            'close-quote', 'collapse', 'condensed', 'continuous', 'crop',
+            'crosshair', 'cross', 'cursive', 'dashed', 'decimal-leading-zero',
+            'decimal', 'default', 'digits', 'disc', 'dotted', 'double',
+            'e-resize', 'embed', 'extra-condensed', 'extra-expanded',
+            'expanded', 'fantasy', 'far-left', 'far-right', 'faster', 'fast',
+            'fixed',  'georgian', 'groove', 'hebrew', 'help', 'hidden',
+            'hide', 'higher', 'high', 'hiragana-iroha', 'hiragana', 'icon',
+            'inherit', 'inline-table', 'inline', 'inline-block', 'inset', 'inside',
+            'invert', 'italic', 'justify', 'katakana-iroha', 'katakana', 'landscape',
+            'larger', 'large', 'left-side', 'leftwards', 'level', 'lighter', 
+            'line-through', 'list-item', 'loud', 'lower-alpha', 'lower-greek',
+            'lower-roman', 'lowercase', 'ltr', 'lower', 'low', 
+            'medium', 'message-box', 'middle', 'mix', 'monospace', 'n-resize',
+            'narrower', 'ne-resize', 'no-close-quote',
+            'no-open-quote', 'no-repeat', 'none', 'normal', 'nowrap',
+            'nw-resize', 'oblique', 'once', 'open-quote', 'outset',
+            'outside', 'overline', 'pointer', 'portrait', 'px',
+             'relative', 'repeat-x', 'repeat-y', 'repeat', 'rgb',
+            'ridge', 'right-side', 'rightwards', 's-resize', 'sans-serif',
+            'scroll', 'se-resize', 'semi-condensed', 'semi-expanded',
+            'separate', 'serif', 'show', 'silent',  'slow', 'slower',
+            'small-caps', 'small-caption', 'smaller', 'soft', 'solid',
+            'spell-out', 'square', 'static', 'status-bar', 'super',
+            'sw-resize', 'table-caption', 'table-cell', 'table-column',
+            'table-column-group', 'table-footer-group', 'table-header-group',
+            'table-row', 'table-row-group',  'text', 'text-bottom',
+            'text-top', 'thick', 'thin', 'transparent', 'ultra-condensed',
+            'ultra-expanded', 'underline', 'upper-alpha', 'upper-latin',
+            'upper-roman', 'uppercase', 'url', 'visible', 'w-resize', 'wait',
+             'wider', 'x-fast', 'x-high', 'x-large', 'x-loud', 'x-low',
+             'x-small', 'x-soft', 'xx-large', 'xx-small', 'yellow', 'yes'
+            ),
+        // directives
+        3 => array(
+            '@at-root', '@charset', '@content', '@debug', '@each', '@else', '@elseif',
+            '@else if', '@extend', '@font-face', '@for', '@function', '@if',
+            '@import', '@include', '@media', '@mixin', '@namespace', '@page',
+            '@return', '@warn', '@while', 
+            ),
+        // built-in Sass functions
+        4 => array(
+            'rgb', 'rgba', 'red', 'green', 'blue', 'mix',
+            'hsl', 'hsla', 'hue', 'saturation', 'lightness', 'adjust-hue',
+            'lighten', 'darken', 'saturate', 'desaturate', 'grayscale',
+            'complement', 'invert',
+            'alpha', 'rgba', 'opacify', 'transparentize',
+            'adjust-color', 'scale-color', 'change-color', 'ie-hex-str',
+            'unquote', 'quote', 'str-length', 'str-insert', 'str-index',
+            'str-slice', 'to-upper-case', 'to-lower-case',
+            'percentage', 'round', 'ceil', 'floor', 'abs', 'min', 'max', 'random',
+            'length', 'nth', 'join', 'append', 'zip', 'index', 'list-separator',
+            'map-get', 'map-merge', 'map-remove', 'map-keys', 'map-values',
+            'map-has-key', 'keywords',
+            'feature-exists', 'variable-exists', 'global-variable-exists',
+            'function-exists', 'mixin-exists', 'inspect', 'type-of', 'unit',
+            'unitless', 'comparable', 'call',
+            'if', 'unique-id',
+            ),
+        // reserved words
+        5 => array(
+            '!important', '!default', '!optional', 'true', 'false', 'with',
+            'without', 'null', 'from', 'through', 'to', 'in', 'and', 'or',
+            'only', 'not',
+            ),
+        ),
+    'SYMBOLS' => array(
+        '(', ')', '{', '}', ':', ';',
+        '>', '+', '*', ',', '^', '=',
+        '&', '~', '!', '%', '?', '...',
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false,
+        4 => false,
+        5 => false,
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #000000; font-weight: bold;',
+            2 => 'color: #993333;',
+            3 => 'color: #990000;',
+            4 => 'color: #000000; font-weight: bold;',
+            5 => 'color: #009900;',
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #006600; font-style: italic;',
+            'MULTI' => 'color: #006600; font-style: italic;'
+            ),
+        'ESCAPE_CHAR' => array(
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #00AA00;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #ff0000;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #cc66cc;'
+            ),
+        'METHODS' => array(
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #00AA00;'
+            ),
+        'SCRIPT' => array(
+            ),
+        'REGEXPS' => array(
+            0 => 'color: #cc00cc;',
+            1 => 'color: #6666ff;',
+            2 => 'color: #3333ff;',
+            3 => 'color: #933;',
+            4 => 'color: #ff6633;',
+            5 => 'color: #0066ff;',
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => '',
+        5 => '',
+        ),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(
+        ),
+    'REGEXPS' => array(
+        // Variables
+        0 => "[$][a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*",
+        // Hexadecimal colors
+        1 => "\#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})",
+        // CSS Pseudo classes
+        // note: & is needed for &gt; (i.e. > )
+        2 => "(?<!\\\\):(?!\d)[a-zA-Z0-9\-]+\b(?:\s*(?=[\{\.#a-zA-Z,:+*&](.|\n)|<\|))",
+        // Measurements
+        3 => "[+\-]?(\d+|(\d*\.\d+))(em|ex|pt|px|cm|in|%)",
+        // Interpolation
+        4 => "(\#\{.*\})",
+        // Browser prefixed properties
+        5 => "(\-(moz|ms|o|webkit)\-[a-z\-]*)",
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'TAB_WIDTH' => 2,
+);
diff --git a/inc/geshi/scala.php b/vendor/easybook/geshi/geshi/scala.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/scala.php
rename to vendor/easybook/geshi/geshi/scala.php
diff --git a/inc/geshi/scheme.php b/vendor/easybook/geshi/geshi/scheme.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/scheme.php
rename to vendor/easybook/geshi/geshi/scheme.php
index a84b90809a9dbfe22df126f7fd49bb468026eef3..59870846b3e23b08a7210aa26353b7c12d3d6f65
--- a/inc/geshi/scheme.php
+++ b/vendor/easybook/geshi/geshi/scheme.php
@@ -166,5 +166,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/scilab.php b/vendor/easybook/geshi/geshi/scilab.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/scilab.php
rename to vendor/easybook/geshi/geshi/scilab.php
diff --git a/vendor/easybook/geshi/geshi/scl.php b/vendor/easybook/geshi/geshi/scl.php
new file mode 100644
index 0000000000000000000000000000000000000000..6b0e494f2aca8698a7bed80528fb2e469c7ee1a8
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/scl.php
@@ -0,0 +1,148 @@
+<?php
+/*************************************************************************************
+ * <scl.php>
+ * ---------------------------------
+ * Author: Leonhard Hösch (leonhard.hoesch@siemens.com)
+ * Copyright: (c) 2008 by Leonhard Hösch (siemens.de)
+ * Release Version: 1.0.8.12
+ * Date Started: 2012/09/25
+ *
+ * SCL language file for GeSHi.
+ *
+ * A SCL langauge file.
+ *
+ * CHANGES
+ * -------
+ * <date-of-release> (<GeSHi release>)
+ *  -  First Release
+ *
+ * TODO (updated <date-of-release>)
+ * -------------------------
+ * <things-to-do>
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'SCL',
+    'COMMENT_SINGLE' => array(1 => '//'),
+    'COMMENT_MULTI' => array('(*' => '*)'),
+    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
+    'QUOTEMARKS' => array("'"),
+    'ESCAPE_CHAR' => '$',
+    'KEYWORDS' => array(
+        1 => array(
+            'AND','ANY','ARRAY','AT','BEGIN','BLOCK_DB','BLOCK_FB','BLOCK_FC','BLOCK_SDB',
+            'BLOCK_SFB','BLOCK_SFC','BOOL','BY','BYTE','CASE','CHAR','CONST','CONTINUE','COUNTER',
+            'DATA_BLOCK','DATE','DATE_AND_TIME','DINT','DIV','DO','DT','DWORD','ELSE','ELSIF',
+            'EN','END_CASE','END_CONST','END_DATA_BLOCK','END_FOR','END_FUNCTION',
+            'END_FUNCTION_BLOCK','END_IF','END_LABEL','END_TYPE','END_ORGANIZATION_BLOCK',
+            'END_REPEAT','END_STRUCT','END_VAR','END_WHILE','ENO','EXIT','FALSE','FOR','FUNCTION',
+            'FUNCTION_BLOCK','GOTO','IF','INT','LABEL','MOD','NIL','NOT','OF','OK','OR',
+            'ORGANIZATION_BLOCK','POINTER','PROGRAM','REAL','REPEAT','RETURN','S5TIME','STRING',
+            'STRUCT','THEN','TIME','TIMER','TIME_OF_DAY','TO','TOD','TRUE','TYPE','VAR',
+            'VAR_TEMP','UNTIL','VAR_INPUT','VAR_IN_OUT','VAR_OUTPUT','VOID','WHILE','WORD','XOR'
+            ),
+        2 =>array(
+            'UBLKMOV','FILL','CREAT_DB','DEL_DB','TEST_DB','COMPRESS','REPL_VAL','CREA_DBL','READ_DBL',
+            'WRIT_DBL','CREA_DB','RE_TRIGR','STP','WAIT','MP_ALM','CiR','PROTECT','SET_CLK','READ_CLK',
+            'SNC_RTCB','SET_CLKS','RTM','SET_RTM','CTRL_RTM','READ_RTM','TIME_TCK','RD_DPARM',
+            'RD_DPARA','WR_PARM','WR_DPARM','PARM_MOD','WR_REC','RD_REC','RD_DPAR','RDREC','WRREC','RALRM',
+            'SALRM','RCVREC','PRVREC','SET_TINT','CAN_TINT','ACT_TINT','QRY_TINT','SRT_DINT','QRY_DINT',
+            'CAN_DINT','MSK_FLT','DMSK_FLT','READ_ERR','DIS_IRT','EN_IRT','DIS_AIRT','EN_AIRT','RD_SINFO',
+            'RDSYSST','WR_USMSG','OB_RT','C_DIAG','DP_TOPOL','UPDAT_PI','UPDAT_PO','SYNC_PI','SYNC_PO',
+            'SET','RSET','DRUM','GADR_LGC','LGC_GADR','RD_LGADR','GEO_LOG','LOG_GEO','DP_PRAL','DPSYC_FR',
+            'D_ACT_DP','DPNRM_DG','DPRD_DAT','DPWR_DAT','PN_IN','PN_OUT','PN_DP','WWW','IP_CONF','GETIO',
+            'SETIO','GETIO_PART','SETIO_PART','GD_SND','GD_RCV','USEND','URCV','BSEND','BRCV','PUT','GET',
+            'PRINT','START','STOP','RESUME','STATUS','USTATUS','CONTROL','C_CNTRL','X_SEND','X_RCV',
+            'X_GET','X_PUT','X_ABORT','I_GET','I_PUT','I_ABORT','TCON','TDISCON','TSEND','TRCV','TUSEND',
+            'TURCV','NOTIFY','NOTIFY_8P','ALARM','ALARM_8P','ALARM_8','AR_SEND','DIS_MSG','EN_MSG',
+            'ALARM_SQ','ALARM_S','ALARM_SC','ALARM_DQ','LARM_D','READ_SI','DEL_SI','TP','TON','TOF','CTU',
+            'CTD','CTUD','CONT_C','CONT_S','PULSEGEN','Analog','DIGITAL','COUNT','FREQUENC','PULSE',
+            'SEND_PTP','RECV_PTP','RES_RECV','SEND_RK','FETCH_RK','SERVE_RK','H_CTRL','state'
+            ),
+        ),
+    'SYMBOLS' => array(
+        '.', '"', '|', ';', ',', '=>', '>=', '<=', ':=', '=', '<', '>'
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #0000ff;',
+            2 => 'color: #ff6f00;',
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #009600; font-style: italic;',
+            'MULTI' => 'color: #009600; font-style: italic;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #000099; font-weight: bold;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #66cc66;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #ff0000;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #cc66cc;'
+            ),
+        'METHODS' => array(
+            0 => 'color: #006600;'
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #66cc66;'
+            ),
+        'REGEXPS' => array(
+            ),
+        'SCRIPT' => array(
+            0 => '',
+            1 => '',
+            2 => '',
+            3 => ''
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => ''
+        ),
+    'NUMBERS' => GESHI_NUMBER_INT_BASIC,
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(
+        1 => '',
+        2 => ''
+        ),
+    'REGEXPS' => array(
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        0 => array(
+            '<?php11!!' => '!!11?>'
+            ),
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        0 => false,
+        ),
+    'TAB_WIDTH' => 4
+);
diff --git a/inc/geshi/sdlbasic.php b/vendor/easybook/geshi/geshi/sdlbasic.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/sdlbasic.php
rename to vendor/easybook/geshi/geshi/sdlbasic.php
index 381161fdf64746af1a15d417631b8490085d3add..b95003fccd95beb1db2537519188907dea9734ac
--- a/inc/geshi/sdlbasic.php
+++ b/vendor/easybook/geshi/geshi/sdlbasic.php
@@ -161,5 +161,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/smalltalk.php b/vendor/easybook/geshi/geshi/smalltalk.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/smalltalk.php
rename to vendor/easybook/geshi/geshi/smalltalk.php
diff --git a/inc/geshi/smarty.php b/vendor/easybook/geshi/geshi/smarty.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/smarty.php
rename to vendor/easybook/geshi/geshi/smarty.php
index 86e9d44c0155ffd96e8ddf11386bfaa7904fae26..883b3eb7c94296d087176d3b9fb091d7a0f0b4fd
--- a/inc/geshi/smarty.php
+++ b/vendor/easybook/geshi/geshi/smarty.php
@@ -188,5 +188,3 @@ $language_data = array (
         )
     )
 );
-
-?>
diff --git a/inc/geshi/spark.php b/vendor/easybook/geshi/geshi/spark.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/spark.php
rename to vendor/easybook/geshi/geshi/spark.php
diff --git a/inc/geshi/sparql.php b/vendor/easybook/geshi/geshi/sparql.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/sparql.php
rename to vendor/easybook/geshi/geshi/sparql.php
diff --git a/inc/geshi/sql.php b/vendor/easybook/geshi/geshi/sql.php
old mode 100644
new mode 100755
similarity index 97%
rename from inc/geshi/sql.php
rename to vendor/easybook/geshi/geshi/sql.php
index 4d08a51fe1de61f578b23189f82c6b71018c58ee..f4d130eb94ef0506f5d7f7b139383121321c779b
--- a/inc/geshi/sql.php
+++ b/vendor/easybook/geshi/geshi/sql.php
@@ -159,6 +159,11 @@ $language_data = array (
     'SCRIPT_DELIMITERS' => array(
         ),
     'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'PARSER_CONTROL' => array(
+        'KEYWORDS' => array( //'
+            'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\.\|\#|^&])"
+            )
         )
 );
 
diff --git a/inc/geshi/stonescript.php b/vendor/easybook/geshi/geshi/stonescript.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/stonescript.php
rename to vendor/easybook/geshi/geshi/stonescript.php
diff --git a/inc/geshi/systemverilog.php b/vendor/easybook/geshi/geshi/systemverilog.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/systemverilog.php
rename to vendor/easybook/geshi/geshi/systemverilog.php
diff --git a/inc/geshi/tcl.php b/vendor/easybook/geshi/geshi/tcl.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/tcl.php
rename to vendor/easybook/geshi/geshi/tcl.php
diff --git a/inc/geshi/teraterm.php b/vendor/easybook/geshi/geshi/teraterm.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/teraterm.php
rename to vendor/easybook/geshi/geshi/teraterm.php
diff --git a/inc/geshi/text.php b/vendor/easybook/geshi/geshi/text.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/text.php
rename to vendor/easybook/geshi/geshi/text.php
index 87fb7110c2b739b30e3b0097b2e1742e4e333498..3c7f17c62da306085102cebd511cdc0ad0430828
--- a/inc/geshi/text.php
+++ b/vendor/easybook/geshi/geshi/text.php
@@ -80,5 +80,3 @@ $language_data = array (
         ),
     )
 );
-
-?>
diff --git a/inc/geshi/thinbasic.php b/vendor/easybook/geshi/geshi/thinbasic.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/thinbasic.php
rename to vendor/easybook/geshi/geshi/thinbasic.php
index f54959e16abf0069d99fa004266e14b45a25d393..3d2034921ff65f0199b6dad630192cda5b24424f
--- a/inc/geshi/thinbasic.php
+++ b/vendor/easybook/geshi/geshi/thinbasic.php
@@ -864,5 +864,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/tsql.php b/vendor/easybook/geshi/geshi/tsql.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/tsql.php
rename to vendor/easybook/geshi/geshi/tsql.php
diff --git a/vendor/easybook/geshi/geshi/twig.php b/vendor/easybook/geshi/geshi/twig.php
new file mode 100644
index 0000000000000000000000000000000000000000..cc790532c1c51547cb878fac001b6ae50404660a
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/twig.php
@@ -0,0 +1,190 @@
+<?php
+/*************************************************************************************
+ * twig.php
+ * ----------
+ * Author: Keyvan Akbary (keyvan@kiwwito.com)
+ * Copyright: (c) 2011 Keyvan Akbary (http://www.kiwwito.com/)
+ * Release Version: 1.0.0
+ * Date Started: 2011/12/05
+ *
+ * Twig template language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2012/09/28 (1.9.0 by José Andrés Puertas y Javier Eguiluz)
+ *   - Added new tags, filters and functions
+ *   - Added regexps for variables, objects and properties
+ *   - Lots of other minor tweaks (delimites, comments, ...)
+ * 
+ * 2011/12/05 (1.0.0 by Keyvan Akbary)
+ *   -  Initial Release
+ *
+ * TODO
+ * ----
+ *
+ *************************************************************************************
+ *
+ *   This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array(
+    'LANG_NAME' => 'Twig',
+    'COMMENT_SINGLE' => array('{#' => '#}'),
+    'COMMENT_MULTI' => array('{#' => '#}'),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '',
+    'KEYWORDS' => array(
+        //TWIG
+        //Tags
+        1 => array(
+            'autoescape', 'endautoescape', 'block', 'endblock', 'do', 'embed', 'endembed',
+            'extends', 'filter', 'endfilter', 'for', 'endfor', 'from', 'if', 'else', 'elseif', 'endif',
+            'import', 'include', 'macro', 'endmacro', 'raw', 'endraw', 'sandbox', 'set', 'endset',
+            'spaceless', 'endspaceless', 'use', 'verbatim', 'endverbatim',
+            'trans', 'endtrans', 'transchoice', 'endtranschoice'
+        ),
+        //Filters
+        2 => array(
+            'abs', 'batch', 'capitalize', 'convert_encoding', 'date', 'date_modify', 'default',
+            'escape', 'first', 'format', 'join', 'json_encode', 'keys', 'last', 'length', 'lower',
+            'merge', 'nl2br', 'number_format', 'raw', 'replace', 'reverse', 'slice', 'sort', 'split',
+            'striptags', 'title', 'trans', 'trim', 'upper', 'url_encode'
+        ),
+        //Functions
+        3 => array(
+            'attribute', 'block', 'constant', 'cycle', 'date', 'dump', 'include',
+            'parent', 'random', 'range', 'source', 'template_from_string'
+        ),
+        //Tests
+        4 => array(
+            'constant', 'defined', 'divisibleby', 'empty', 'even', 'iterable', 'null',
+            'odd', 'sameas'
+        ),
+        //Operators
+        5 => array(
+            'in', 'is', 'and', 'b-and', 'or', 'b-or', 'b-xor', 'not', 'into',
+            'starts with', 'ends with', 'matches'
+        ),
+        6 => array(
+            '{{', '}}', '{%', '%}'
+        ),
+    ),
+    'SYMBOLS' => array(
+        '+', '-', '/', '/', '*', '**', //Math operators
+        '==', '!=', '<', '>', '>=', '<=', '===', //Logic operators
+        '..', '|', '~', '[', ']', '.', '?', ':', '(', ')', //Other
+        '=' //HTML (attributes)
+    ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        //Twig
+        1 => true,
+        2 => true,
+        3 => true,
+        4 => true,
+        5 => true,
+        6 => false
+    ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #0600FF;', //Tags
+            2 => 'color: #008000;', //Filters
+            3 => 'color: #0600FF;', //Functions
+            4 => 'color: #804040;', //Tests
+            5 => 'color: #008000;', //Operators
+            6 => 'color: #008000;'  // {{ and {%
+        ),
+        'COMMENTS' => array(
+            'MULTI' => 'color: #008080; font-style: italic;'
+        ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #000099; font-weight: bold;'
+        ),
+        'BRACKETS' => array(
+            0 => 'color: #D36900;'
+        ),
+        'STRINGS' => array(
+            0 => 'color: #ff0000;'
+        ),
+        'NUMBERS' => array(
+            0 => 'color: #cc66cc;'
+        ),
+        'METHODS' => array(
+            1 => 'color: #006600;'
+        ),
+        'SYMBOLS' => array(
+            0 => 'color: #D36900;'
+        ),
+        'SCRIPT' => array(
+            0 => '',
+            1 => 'color: #808080; font-style: italic;',
+            2 => 'color: #009000;'
+        ),
+        'REGEXPS' => array(
+            0 => 'color: #00aaff;',
+            1 => 'color: #00aaff;'
+        )
+    ),
+    'URLS' => array(
+        1 => 'http://twig.sensiolabs.org/doc/tags/{FNAMEL}.html',
+        2 => 'http://twig.sensiolabs.org/doc/filters/{FNAMEL}.html',
+        3 => 'http://twig.sensiolabs.org/doc/functions/{FNAMEL}.html',
+        4 => 'http://twig.sensiolabs.org/doc/tests/{FNAMEL}.html',
+        5 => '',
+    ),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(
+        1 => '.',
+        ),
+    'REGEXPS' => array(
+        0 => array(
+            GESHI_SEARCH => "([[:space:]])([a-zA-Z_][a-zA-Z0-9_]*)",
+            GESHI_REPLACE => '\\2',
+            GESHI_MODIFIERS => '',
+            GESHI_BEFORE => '\\1',
+            GESHI_AFTER => ''
+            ),
+        1 => array(
+            GESHI_SEARCH => "\.([a-zA-Z_][a-zA-Z0-9_]*)",
+            GESHI_REPLACE => '.\\1',
+            GESHI_MODIFIERS => '',
+            GESHI_BEFORE => '',
+            GESHI_AFTER => ''
+            ),
+    ),
+    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
+    'SCRIPT_DELIMITERS' => array(
+        0 => array(
+            '{{' => '}}',
+            '{%' => '%}'         
+        ),
+        1 => array(
+            '{#' => '#}',          
+        )
+    ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        0 => true,
+        1 => true,
+        2 => true
+    ),
+    'PARSER_CONTROL' => array(
+        'KEYWORDS' => array(
+        )
+    )
+);
diff --git a/inc/geshi/typoscript.php b/vendor/easybook/geshi/geshi/typoscript.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/typoscript.php
rename to vendor/easybook/geshi/geshi/typoscript.php
index 6751aaa8da39e30a98c51ebd13ba5d869dbbd883..25671d7288630c092b6de5922e5ca5a79a2968e7
--- a/inc/geshi/typoscript.php
+++ b/vendor/easybook/geshi/geshi/typoscript.php
@@ -296,5 +296,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         ),
 );
-
-?>
diff --git a/inc/geshi/unicon.php b/vendor/easybook/geshi/geshi/unicon.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/unicon.php
rename to vendor/easybook/geshi/geshi/unicon.php
diff --git a/inc/geshi/upc.php b/vendor/easybook/geshi/geshi/upc.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/upc.php
rename to vendor/easybook/geshi/geshi/upc.php
diff --git a/inc/geshi/urbi.php b/vendor/easybook/geshi/geshi/urbi.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/urbi.php
rename to vendor/easybook/geshi/geshi/urbi.php
index a7353ea8bba93c5dbab0a23f171d03a28b08ffe0..c73e44404f0ec9aa32ff2ab1f070756f3255f154
--- a/inc/geshi/urbi.php
+++ b/vendor/easybook/geshi/geshi/urbi.php
@@ -196,5 +196,3 @@ $language_data = array (
         ),
     'TAB_WIDTH' => 4,
 );
-
-?>
diff --git a/inc/geshi/uscript.php b/vendor/easybook/geshi/geshi/uscript.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/uscript.php
rename to vendor/easybook/geshi/geshi/uscript.php
index 58cdb8d9e51e0000071d0f0050cb8d49065eb255..03b1d48a6f1e488cf33e050916809837b8cc4c11
--- a/inc/geshi/uscript.php
+++ b/vendor/easybook/geshi/geshi/uscript.php
@@ -295,5 +295,3 @@ $language_data = array (
             )
         )
 );
-
-?>
diff --git a/inc/geshi/vala.php b/vendor/easybook/geshi/geshi/vala.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/vala.php
rename to vendor/easybook/geshi/geshi/vala.php
index acac57e2aef4b69b435f092a534267b44acdd25a..28f153427077b661b7484496c9b56cb57277f11b
--- a/inc/geshi/vala.php
+++ b/vendor/easybook/geshi/geshi/vala.php
@@ -147,5 +147,3 @@ $language_data = array (
         )
     )
 );
-
-?>
diff --git a/inc/geshi/vb.php b/vendor/easybook/geshi/geshi/vb.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/vb.php
rename to vendor/easybook/geshi/geshi/vb.php
diff --git a/inc/geshi/vbnet.php b/vendor/easybook/geshi/geshi/vbnet.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/vbnet.php
rename to vendor/easybook/geshi/geshi/vbnet.php
diff --git a/vendor/easybook/geshi/geshi/vbscript.php b/vendor/easybook/geshi/geshi/vbscript.php
new file mode 100644
index 0000000000000000000000000000000000000000..6db3bbd3f331f18203ab18fcedf5e4ffcd67c936
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/vbscript.php
@@ -0,0 +1,153 @@
+<?php
+/*************************************************************************************
+ * vbscript.php
+ * ------
+ * Author: Roberto Rossi (rsoftware@altervista.org)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org),
+ *                     Nigel McNie (http://qbnz.com/highlighter),
+ *                     Rory Prendergast (http://www.tanium.com)
+ * Release Version: 1.0.8.12
+ * Date Started: 2012/08/20
+ *
+ * VBScript language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2012/08/20 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'VBScript',
+    'COMMENT_SINGLE' => array(),
+    'COMMENT_MULTI' => array(),
+    'COMMENT_REGEXP' => array(
+        // Comments (either single or multiline with _
+        1 => '/\'.*(?<! _)\n/sU',
+        ),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array('"'),
+    'ESCAPE_CHAR' => '',
+    'KEYWORDS' => array(
+        1 => array(
+            'Empty', 'Nothing', 'Null', 'vbArray', 'vbBoolean', 'vbByte',
+            'vbCr', 'vbCrLf', 'vbCurrency', 'vbDate', 'vbDouble', 'vbEmpty',
+            'vbError', 'vbFirstFourDays', 'vbFirstFullWeek', 'vbFirstJan1',
+            'vbFormFeed', 'vbFriday', 'vbInteger', 'vbLf', 'vbLong', 'vbMonday',
+            'vbNewLine', 'vbNull', 'vbNullChar', 'vbNullString', 'vbObject',
+            'vbSaturday', 'vbSingle', 'vbString', 'vbSunday', 'vbTab',
+            'vbThursday', 'vbTuesday', 'vbUseSystem', 'vbUseSystemDayOfWeek',
+            'vbVariant', 'vbWednesday', 'FALSE', 'TRUE'
+            ),
+        2 => array(
+            'bs', 'Array', 'Asc', 'Atn', 'CBool', 'CByte', 'CDate', 'CDbl', 'Chr',
+            'CInt', 'CLng', 'Cos', 'CreateObject', 'CSng', 'CStr', 'Date', 'DateAdd',
+            'DateDiff', 'DatePart', 'DateSerial', 'DateValue', 'Day', 'Eval', 'Exp',
+            'Filter', 'Fix', 'FormatDateTime', 'FormatNumber', 'FormatPercent',
+            'GetObject', 'Hex', 'Hour', 'InputBox', 'InStr', 'InstrRev', 'Int',
+            'IsArray', 'IsDate', 'IsEmpty', 'IsNull', 'IsNumeric', 'IsObject', 'Join',
+            'LBound', 'LCase', 'Left', 'Len', 'Log', 'LTrim', 'Mid', 'Minute', 'Month',
+            'MonthName', 'MsgBox', 'Now', 'Oct', 'Replace', 'RGB', 'Right', 'Rnd',
+            'Round', 'RTrim', 'ScriptEngine', 'ScriptEngineBuildVersion',
+            'ScriptEngineMajorVersion', 'ScriptEngineMinorVersion', 'Second',
+            'Sgn', 'Sin', 'Space', 'Split', 'Sqr', 'StrComp', 'String', 'StrReverse',
+            'Tan', 'Time', 'TimeSerial', 'TimeValue', 'Trim', 'TypeName', 'UBound',
+            'UCase', 'VarType', 'Weekday', 'WeekdayName', 'Year'
+            ),
+        3 => array(
+            'Call', 'Case', 'Const', 'Dim', 'Do', 'Each', 'Else', 'End', 'Erase',
+            'Execute', 'Exit', 'For', 'Function', 'Gosub', 'Goto', 'If', 'Loop',
+            'Next', 'On Error', 'Option Explicit', 'Private', 'Public',
+            'Randomize', 'ReDim', 'Rem', 'Resume', 'Select', 'Set', 'Sub', 'Then',
+            'Wend', 'While', 'With', 'In', 'To', 'Step'
+            ),
+        4 => array(
+            'And', 'Eqv', 'Imp', 'Is', 'Mod', 'Not', 'Or', 'Xor'
+            ),
+        ),
+    'SYMBOLS' => array(
+        '-', '&', '*', '/', '\\', '^', '+', '<', '<=', '<>', '=', '>', '>='
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false,
+        4 => false
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #F660AB; font-weight: bold;',
+            2 => 'color: #E56717; font-weight: bold;',
+            3 => 'color: #8D38C9; font-weight: bold;',
+            4 => 'color: #151B8D; font-weight: bold;'
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #008000;'
+            ),
+        'BRACKETS' => array(
+            ),
+        'STRINGS' => array(
+            0 => 'color: #800000;'
+            ),
+        'NUMBERS' => array(
+            ),
+        'METHODS' => array(
+            ),
+        'SYMBOLS' => array(
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #800000; font-weight: bold;'
+            ),
+        'SCRIPT' => array(
+            ),
+        'REGEXPS' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => ''
+        ),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(
+        ),
+    'REGEXPS' => array(
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        ),
+    'PARSER_CONTROL' => array(
+        'KEYWORDS' => array(
+            'SPACE_AS_WHITESPACE' => true
+            ),
+        'ENABLE_FLAGS' => array(
+            'BRACKETS' => GESHI_NEVER
+            )
+        )
+);
diff --git a/inc/geshi/vedit.php b/vendor/easybook/geshi/geshi/vedit.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/vedit.php
rename to vendor/easybook/geshi/geshi/vedit.php
diff --git a/inc/geshi/verilog.php b/vendor/easybook/geshi/geshi/verilog.php
old mode 100644
new mode 100755
similarity index 61%
rename from inc/geshi/verilog.php
rename to vendor/easybook/geshi/geshi/verilog.php
index 2bf66d1c0034c66cd66dd666e87bf7fb1e8830c5..d6ec08615860a8b9e501222a47a2fb9dc6e54481
--- a/inc/geshi/verilog.php
+++ b/vendor/easybook/geshi/geshi/verilog.php
@@ -2,8 +2,8 @@
 /**
  * verilog.php
  * -----------
- * Author: G�nter Dannoritzer <dannoritzer@web.de>
- * Copyright: (C) 2008 Guenter Dannoritzer
+ * Author: Günter Dannoritzer <dannoritzer@web.de>
+ * Copyright: (C) 2008 Günter Dannoritzer
  * Release Version: 1.0.8.11
  * Date Started: 2008/05/28
  *
@@ -19,6 +19,9 @@
  * TODO (updated 2008/05/29)
  * -------------------------
  *
+ * 2013/01/08
+ *   -  extended keywords to include system keywords
+ *
  *************************************************************************************
  *
  *     This file is part of GeSHi.
@@ -49,22 +52,41 @@ $language_data = array (
     'ESCAPE_CHAR' => '\\',
     'KEYWORDS' => array(
         // keywords
-        1 => array('always', 'and', 'assign', 'begin', 'buf', 'bufif0', 'bufif1', 'case',
-            'casex', 'casez', 'cmos', 'deassign', 'default', 'defparam',
-            'disable', 'edge', 'else', 'end', 'endcase', 'endfunction',
-            'endmodule', 'endprimitive', 'endspecify', 'endtable', 'endtask',
-            'event', 'fork', 'for', 'force', 'forever', 'function', 'highz0',
-            'highz1', 'if', 'ifnone', 'initial', 'inout', 'input', 'integer',
-            'join', 'large', 'macromodule', 'medium', 'module', 'nand',
-            'negedge', 'nmos', 'nor', 'not', 'notif0', 'notif1', 'or',
-            'output', 'parameter', 'pmos', 'posedge', 'primitive', 'pull0',
-            'pull1', 'pulldown', 'pullup', 'rcmos', 'real', 'realtime', 'reg',
-            'release', 'repeat', 'rnmos', 'rpmos', 'rtran', 'rtranif0',
-            'rtranif1', 'scalared', 'small', 'specify', 'specparam',
-            'strong0', 'strong1', 'supply0', 'supply1', 'table', 'task',
-            'time', 'tran', 'tranif0', 'tranif1', 'tri', 'tri0', 'tri1',
-            'triand', 'trior', 'trireg', 'vectored', 'wait', 'wand', 'weak0',
-            'weak1', 'while', 'wire', 'wor', 'xnor', 'xor'
+        1 => array(
+            'accept_on','alias',
+            'always','always_comb','always_ff','always_latch','and','assert',
+            'assign','assume','automatic','before','begin','bind','bins','binsof',
+            'bit','break','buf','bufif0','bufif1','byte','case','casex','casez',
+            'cell','chandle','checker','class','clocking','cmos','config','const',
+            'constraint','context','continue','cover','covergroup','coverpoint','cross',
+            'deassign','default','defparam','design','disable','dist','do','edge','else',
+            'end','endcase','endchecker','endclass','endclocking','endconfig',
+            'endfunction','endgenerate','endgroup','endinterface','endmodule',
+            'endpackage','endprimitive','endprogram','endproperty','endspecify',
+            'endsequence','endtable','endtask','enum','event','eventually','expect',
+            'export','extends','extern','final','first_match','for','force','foreach',
+            'forever','fork','forkjoin','function','generate','genvar','global',
+            'highz0','highz1','if','iff','ifnone','ignore_bins','illegal_bins',
+            'implies','import','incdir','include','initial','inout','input','inside',
+            'instance','int','integer','interface','intersect','join','join_any',
+            'join_none','large','let','liblist','library','local','localparam',
+            'logic','longint','macromodule','matches','medium','modport','module','nand',
+            'negedge','new','nexttime','nmos','nor','noshowcancelled','not','notif0',
+            'notif1','null','or','output','package','packed','parameter','pmos','posedge',
+            'primitive','priority','program','property','protected','pull0','pull1',
+            'pulldown','pullup','pulsestyle_ondetect','pulsestyle_onevent','pure',
+            'rand','randc','randcase','randsequence','rcmos','real','realtime','ref',
+            'reg','reject_on','release','repeat','restrict','return','rnmos','rpmos',
+            'rtran','rtranif0','rtranif1','s_always','s_eventually','s_nexttime',
+            's_until','s_until_with','scalared','sequence','shortint','shortreal',
+            'showcancelled','signed','small','solve','specify','specparam','static',
+            'string','strong','strong0','strong1','struct','super','supply0','supply1',
+            'sync_accept_on','sync_reject_on','table','tagged','task','this','throughout',
+            'time','timeprecision','timeunit','tran','tranif0','tranif1','tri','tri0',
+            'tri1','triand','trior','trireg','type','typedef','union','unique','unique0',
+            'unsigned','until','until_with','untyped','use','uwire','var','vectored',
+            'virtual','void','wait','wait_order','wand','weak','weak0','weak1','while',
+            'wildcard','wire','with','within','wor','xnor','xor'
             ),
         // system tasks
         2 => array(
@@ -169,5 +191,3 @@ $language_data = array (
         ),
     'TAB_WIDTH' => 4
 );
-
-?>
diff --git a/inc/geshi/vhdl.php b/vendor/easybook/geshi/geshi/vhdl.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/vhdl.php
rename to vendor/easybook/geshi/geshi/vhdl.php
index a8f37e67664f8834d52a08df5f061a504b29c04e..cc8158fcf97d9244ed96485bea4f684516a7c168
--- a/inc/geshi/vhdl.php
+++ b/vendor/easybook/geshi/geshi/vhdl.php
@@ -179,5 +179,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/vim.php b/vendor/easybook/geshi/geshi/vim.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/vim.php
rename to vendor/easybook/geshi/geshi/vim.php
index fe7e5e006df0306fb637c717421b2fa2a7f8bb48..e2e363477bc7870beef20a6d94c397626aa69d72
--- a/inc/geshi/vim.php
+++ b/vendor/easybook/geshi/geshi/vim.php
@@ -416,5 +416,3 @@ $language_data = array(
     'SCRIPT_DELIMITERS' => array(),
     'HIGHLIGHT_STRICT_BLOCK' => array()
 );
-
-?>
diff --git a/inc/geshi/visualfoxpro.php b/vendor/easybook/geshi/geshi/visualfoxpro.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/visualfoxpro.php
rename to vendor/easybook/geshi/geshi/visualfoxpro.php
diff --git a/inc/geshi/visualprolog.php b/vendor/easybook/geshi/geshi/visualprolog.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/visualprolog.php
rename to vendor/easybook/geshi/geshi/visualprolog.php
index d36f1c67ad8dfaae08b4bb0a85c609e59b02b7b5..26c438d21d8135bf01a2b3159301272955f244cd
--- a/inc/geshi/visualprolog.php
+++ b/vendor/easybook/geshi/geshi/visualprolog.php
@@ -125,5 +125,3 @@ $language_data = array (
         ),
     'TAB_WIDTH' => 4
 );
-
-?>
diff --git a/inc/geshi/whitespace.php b/vendor/easybook/geshi/geshi/whitespace.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/whitespace.php
rename to vendor/easybook/geshi/geshi/whitespace.php
index 58f39637639323c06ee3659708ddd57e89a84d7c..eec0be3f675e4b18ef1af4eee712135040322fd5
--- a/inc/geshi/whitespace.php
+++ b/vendor/easybook/geshi/geshi/whitespace.php
@@ -117,5 +117,3 @@ $language_data = array (
             )
         )
 );
-
-?>
diff --git a/inc/geshi/whois.php b/vendor/easybook/geshi/geshi/whois.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/whois.php
rename to vendor/easybook/geshi/geshi/whois.php
diff --git a/inc/geshi/winbatch.php b/vendor/easybook/geshi/geshi/winbatch.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/winbatch.php
rename to vendor/easybook/geshi/geshi/winbatch.php
diff --git a/inc/geshi/xbasic.php b/vendor/easybook/geshi/geshi/xbasic.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/xbasic.php
rename to vendor/easybook/geshi/geshi/xbasic.php
diff --git a/inc/geshi/xml.php b/vendor/easybook/geshi/geshi/xml.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/xml.php
rename to vendor/easybook/geshi/geshi/xml.php
index 6354e457ba535d81fb30bab7515e94ec3b8635aa..88d17901e8e3192cc5b71aefe16222c6158e0f53
--- a/inc/geshi/xml.php
+++ b/vendor/easybook/geshi/geshi/xml.php
@@ -153,5 +153,3 @@ $language_data = array (
         )
     )
 );
-
-?>
diff --git a/vendor/easybook/geshi/geshi/xojo.php b/vendor/easybook/geshi/geshi/xojo.php
new file mode 100644
index 0000000000000000000000000000000000000000..58fcab1031f1801252f25f2198a857f45f65c42e
--- /dev/null
+++ b/vendor/easybook/geshi/geshi/xojo.php
@@ -0,0 +1,166 @@
+<?php
+/*************************************************************************************
+ * xojo.php
+ * --------
+ * Author: Dr Garry Pettet (contact@garrypettet.com)
+ * Copyright: (c) 2014 Dr Garry Pettet (http://garrypettet.com)
+ * Release Version: 1.0.0
+ * Date Started: 2014/10/19
+ *
+ * Xojo language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2014/10/19 (1.0.8.12)
+ *  -  First Release
+ *
+ * TODO (updated 2014/10/19)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   GeSHi is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'Xojo',
+    'COMMENT_SINGLE' => array(1 => "'", 2 => '//', 3 => 'rem'),
+    'COMMENT_MULTI' => array(),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array('"'),
+    'ESCAPE_CHAR' => '',
+	'NUMBERS' => array(
+	        1 => GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE, // integers
+	        2 => GESHI_NUMBER_FLT_NONSCI // floating point numbers
+	        ),    
+    'KEYWORDS' => array(
+        //Keywords
+        1 => array(
+	        'AddHandler', 'AddressOf', 'Aggregates', 'And', 'Array', 'As', 'Assigns', 'Attributes', 
+	        'Break', 'ByRef', 'ByVal', 'Call', 'Case', 'Catch', 'Class', 'Const', 'Continue',
+	        'CType', 'Declare', 'Delegate', 'Dim', 'Do', 'DownTo', 'Each', 'Else', 'Elseif', 'End', 
+	        'Enum', 'Event', 'Exception', 'Exit', 'Extends', 'False', 'Finally', 'For', 
+	        'Function', 'Global', 'GoTo', 'Handles', 'If', 'Implements', 'In', 'Inherits', 
+	        'Inline68K', 'Interface', 'Is', 'IsA', 'Lib', 'Loop', 'Me', 'Mod', 'Module', 
+	        'Namespace', 'New', 'Next', 'Nil', 'Not', 'Object', 'Of', 'Optional', 'Or', 
+	        'ParamArray', 'Private', 'Property', 'Protected', 'Public', 'Raise', 
+	        'RaiseEvent', 'Rect', 'Redim', 'RemoveHandler', 'Return', 'Select', 'Self', 'Shared', 
+	        'Soft', 'Static', 'Step', 'Sub', 'Super', 'Then', 'To', 'True', 'Try',
+	        'Until', 'Using', 'Wend', 'While', 'With', 'WeakAddressOf', 'Xor'
+            ),
+        //Data Types
+        2 => array(
+            'Boolean', 'CFStringRef', 'CString', 'Currency', 'Double', 'Int8', 'Int16', 'Int32',
+            'Int64', 'Integer', 'OSType', 'PString', 'Ptr', 'Short', 'Single', 'String', 
+            'Structure', 'UInt8', 'UInt16', 'UInt32', 'UInt64', 'UShort', 'WindowPtr', 
+            'WString', 'XMLNodeType'
+            ),
+        //Compiler Directives
+        3 => array(
+            '#Bad', '#Else', '#Endif', '#If', '#Pragma', '#Tag'
+            ),
+        ),
+    'SYMBOLS' => array(
+        '+', '-', '*', '=', '/', '>', '<', '^', '(', ')', '.'
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+        2 => false,
+        3 => false
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #0000FF;',  // keywords
+            2 => 'color: #0000FF;',  // primitive data types
+            3 => 'color: #0000FF;',  // compiler commands
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #7F0000;',
+            'MULTI' => 'color: #7F0000;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #008080;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #000000;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #6500FE;'
+            ),
+        'NUMBERS' => array(
+            1 => 'color: #326598;', // integers
+            2 => 'color: #006532;', // floating point numbers
+            ),
+        'METHODS' => array(
+            1 => 'color: #000000;'
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #000000;'
+            ),
+        'REGEXPS' => array(
+	        1 => 'color: #326598;', // &h hex numbers
+	        2 => 'color: #326598;', // &b hex numbers
+	        3 => 'color: #326598;', // &o hex numbers
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => 'http://docs.xojo.com/index.php/{FNAMEU}',
+        2 => 'http://docs.xojo.com/index.php/{FNAMEU}',
+        3 => ''
+        ),
+    'OOLANG' => true,
+    'OBJECT_SPLITTERS' => array(
+        1 =>'.'
+        ),
+    'REGEXPS' => array(
+		1 => array( // &h numbers
+		    // search for &h, then any number of letters a-f or numbers 0-9
+		    GESHI_SEARCH => '(&amp;h[0-9a-fA-F]*\b)',
+		    GESHI_REPLACE => '\\1',
+		    GESHI_MODIFIERS => '',
+		    GESHI_BEFORE => '',
+		    GESHI_AFTER => ''
+		    ),
+		2 => array( // &b numbers
+		    // search for &b, then any number of 0-1 digits
+		    GESHI_SEARCH => '(&amp;b[0-1]*\b)',
+		    GESHI_REPLACE => '\\1',
+		    GESHI_MODIFIERS => '',
+		    GESHI_BEFORE => '',
+		    GESHI_AFTER => ''
+		    ),
+		3 => array( // &o octal numbers
+		    // search for &o, then any number of 0-7 digits
+		    GESHI_SEARCH => '(&amp;o[0-7]*\b)',
+		    GESHI_REPLACE => '\\1',
+		    GESHI_MODIFIERS => '',
+		    GESHI_BEFORE => '',
+		    GESHI_AFTER => ''
+		    )
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        )
+);
+
+?>
\ No newline at end of file
diff --git a/inc/geshi/xorg_conf.php b/vendor/easybook/geshi/geshi/xorg_conf.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/xorg_conf.php
rename to vendor/easybook/geshi/geshi/xorg_conf.php
index 99edc66523e2ca7dbc6a195d7a2c66d5ecc63c21..41e4496eeb8217441789952b7719a958efb750dd
--- a/inc/geshi/xorg_conf.php
+++ b/vendor/easybook/geshi/geshi/xorg_conf.php
@@ -120,5 +120,3 @@ $language_data = array (
         ),
     'TAB_WIDTH' => 4
 );
-
-?>
diff --git a/inc/geshi/xpp.php b/vendor/easybook/geshi/geshi/xpp.php
old mode 100644
new mode 100755
similarity index 99%
rename from inc/geshi/xpp.php
rename to vendor/easybook/geshi/geshi/xpp.php
index a06e27794f031d270edf73f0e8456d19b431627b..52db2727b971714472a85c1f22750d09a3dcbbab
--- a/inc/geshi/xpp.php
+++ b/vendor/easybook/geshi/geshi/xpp.php
@@ -432,5 +432,3 @@ $language_data = array (
     'HIGHLIGHT_STRICT_BLOCK' => array(
         )
 );
-
-?>
diff --git a/inc/geshi/yaml.php b/vendor/easybook/geshi/geshi/yaml.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/yaml.php
rename to vendor/easybook/geshi/geshi/yaml.php
diff --git a/inc/geshi/z80.php b/vendor/easybook/geshi/geshi/z80.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/z80.php
rename to vendor/easybook/geshi/geshi/z80.php
diff --git a/inc/geshi/zxbasic.php b/vendor/easybook/geshi/geshi/zxbasic.php
old mode 100644
new mode 100755
similarity index 100%
rename from inc/geshi/zxbasic.php
rename to vendor/easybook/geshi/geshi/zxbasic.php
diff --git a/vendor/splitbrain/php-archive/.gitignore b/vendor/splitbrain/php-archive/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..39b851b56512853b8c06e8bb1b52b7ed2b830474
--- /dev/null
+++ b/vendor/splitbrain/php-archive/.gitignore
@@ -0,0 +1,7 @@
+*.iml
+.idea/
+composer.phar
+vendor/
+composer.lock
+
+
diff --git a/vendor/splitbrain/php-archive/.travis.yml b/vendor/splitbrain/php-archive/.travis.yml
new file mode 100644
index 0000000000000000000000000000000000000000..21124ce5d2b01d637b7bdc584c6ca517f9bf2ada
--- /dev/null
+++ b/vendor/splitbrain/php-archive/.travis.yml
@@ -0,0 +1,13 @@
+language: php
+
+php:
+  - 5.4
+  - 5.5
+  - 5.6
+  - hhvm
+
+before_script:
+  - composer self-update
+  - composer install --prefer-source --no-interaction --dev
+
+script: phpunit
\ No newline at end of file
diff --git a/vendor/splitbrain/php-archive/LICENSE b/vendor/splitbrain/php-archive/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..66d08e433795aeb3e1b47c273c857df90aec0efe
--- /dev/null
+++ b/vendor/splitbrain/php-archive/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2015 Andreas Gohr <gohr@cosmocode.de>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
\ No newline at end of file
diff --git a/vendor/splitbrain/php-archive/README.md b/vendor/splitbrain/php-archive/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..4fb67325911dcf76f030dbf064594c24ffe319f6
--- /dev/null
+++ b/vendor/splitbrain/php-archive/README.md
@@ -0,0 +1,61 @@
+PHPArchive - Pure PHP ZIP and TAR handling
+==========================================
+
+This library allows to handle new ZIP and TAR archives without the need for any special PHP extensions (gz and bzip are
+needed for compression). It can create new files or extract existing ones.
+
+To keep things simple, the modification (adding or removing files) of existing archives is not supported.
+
+[![Build Status](https://travis-ci.org/splitbrain/php-archive.svg)](https://travis-ci.org/splitbrain/php-archive)
+
+Install
+-------
+
+Use composer:
+
+```php composer.phar require splitbrain/php-archive```
+
+Usage
+-----
+
+The usage for the Zip and Tar classes are basically the same. Here are some examples for working with TARs to get
+you started. Check the source code comments for more info
+
+```php
+use splitbrain\PHPArchive\Tar;
+
+// To list the contents of an existing TAR archive, open() it and use contents() on it:
+$tar = new Tar();
+$tar->open('myfile.tgz');
+$toc = $tar->contents();
+print_r($toc); // array of FileInfo objects
+
+// To extract the contents of an existing TAR archive, open() it and use extract() on it:
+$tar = new Tar();
+$tar->open('myfile.tgz');
+$tar->extract('/tmp');
+
+// To create a new TAR archive directly on the filesystem (low memory requirements), create() it,
+$tar = new Tar();
+$tar->create('myfile.tgz');
+$tar->addFile(...);
+$tar->addData(...);
+...
+$tar->close();
+
+// To create a TAR archive directly in memory, create() it, add*() files and then either save()
+// or getData() it:
+$tar = new Tar();
+$tar->create();
+$tar->addFile(...);
+$tar->addData(...);
+...
+$tar->save('myfile.tgz'); // compresses and saves it
+echo $tar->getArchive(Archive::COMPRESS_GZIP); // compresses and returns it
+```
+
+Differences between Tar and Zip: Tars are compressed as a whole while Zips compress each file individually. Therefore
+you can call ```setCompression``` before each ```addFile()``` and ```addData()``` functions.
+
+The FileInfo class can be used to specify additional info like ownership or permissions when adding a file to
+an archive. 
\ No newline at end of file
diff --git a/vendor/splitbrain/php-archive/composer.json b/vendor/splitbrain/php-archive/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..5ad41a8c4544df3dbb7e8bd12ec0c9c8ae56ec01
--- /dev/null
+++ b/vendor/splitbrain/php-archive/composer.json
@@ -0,0 +1,26 @@
+{
+    "name": "splitbrain/php-archive",
+    "description": "Pure-PHP implementation to read and write TAR and ZIP archives",
+    "keywords": ["zip", "tar", "archive", "unpack", "extract", "unzip"],
+    "authors": [
+        {
+            "name": "Andreas Gohr",
+            "email": "andi@splitbrain.org"
+        }
+    ],
+    "license": "MIT",
+
+    "require": {
+        "php": ">=5.3.0"
+    },
+
+    "require-dev": {
+        "phpunit/phpunit": "4.5.*"
+    },
+
+    "autoload": {
+        "psr-4": {
+            "splitbrain\\PHPArchive\\": "src"
+        }
+    }
+}
diff --git a/vendor/splitbrain/php-archive/phpunit.xml b/vendor/splitbrain/php-archive/phpunit.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d7e1f24284934525fa42355c28ae3bc29fd448ef
--- /dev/null
+++ b/vendor/splitbrain/php-archive/phpunit.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<phpunit backupGlobals="false"
+         backupStaticAttributes="false"
+         bootstrap="vendor/autoload.php"
+         colors="true"
+         convertErrorsToExceptions="true"
+         convertNoticesToExceptions="true"
+         convertWarningsToExceptions="true"
+         processIsolation="false"
+         stopOnFailure="false"
+         syntaxCheck="false">
+    <testsuites>
+        <testsuite name="Test Suite">
+            <directory suffix=".php">./tests/</directory>
+        </testsuite>
+    </testsuites>
+</phpunit>
\ No newline at end of file
diff --git a/vendor/splitbrain/php-archive/src/Archive.php b/vendor/splitbrain/php-archive/src/Archive.php
new file mode 100644
index 0000000000000000000000000000000000000000..c60fea7775c263f6a860954486277aee3a186f01
--- /dev/null
+++ b/vendor/splitbrain/php-archive/src/Archive.php
@@ -0,0 +1,128 @@
+<?php
+
+namespace splitbrain\PHPArchive;
+
+abstract class Archive
+{
+
+    const COMPRESS_AUTO = -1;
+    const COMPRESS_NONE = 0;
+    const COMPRESS_GZIP = 1;
+    const COMPRESS_BZIP = 2;
+
+    /**
+     * Set the compression level and type
+     *
+     * @param int $level Compression level (0 to 9)
+     * @param int $type  Type of compression to use (use COMPRESS_* constants)
+     * @return mixed
+     */
+    abstract public function setCompression($level = 9, $type = Archive::COMPRESS_AUTO);
+
+    /**
+     * Open an existing archive file for reading
+     *
+     * @param string $file
+     * @throws ArchiveIOException
+     */
+    abstract public function open($file);
+
+    /**
+     * Read the contents of an archive
+     *
+     * This function lists the files stored in the archive, and returns an indexed array of FileInfo objects
+     *
+     * The archive is closed afer reading the contents, because rewinding is not possible in bzip2 streams.
+     * Reopen the file with open() again if you want to do additional operations
+     *
+     * @return FileInfo[]
+     */
+    abstract public function contents();
+
+    /**
+     * Extract an existing archive
+     *
+     * The $strip parameter allows you to strip a certain number of path components from the filenames
+     * found in the archive file, similar to the --strip-components feature of GNU tar. This is triggered when
+     * an integer is passed as $strip.
+     * Alternatively a fixed string prefix may be passed in $strip. If the filename matches this prefix,
+     * the prefix will be stripped. It is recommended to give prefixes with a trailing slash.
+     *
+     * By default this will extract all files found in the archive. You can restrict the output using the $include
+     * and $exclude parameter. Both expect a full regular expression (including delimiters and modifiers). If
+     * $include is set, only files that match this expression will be extracted. Files that match the $exclude
+     * expression will never be extracted. Both parameters can be used in combination. Expressions are matched against
+     * stripped filenames as described above.
+     *
+     * The archive is closed afterwards. Reopen the file with open() again if you want to do additional operations
+     *
+     * @param string     $outdir  the target directory for extracting
+     * @param int|string $strip   either the number of path components or a fixed prefix to strip
+     * @param string     $exclude a regular expression of files to exclude
+     * @param string     $include a regular expression of files to include
+     * @throws ArchiveIOException
+     * @return array
+     */
+    abstract public function extract($outdir, $strip = '', $exclude = '', $include = '');
+
+    /**
+     * Create a new archive file
+     *
+     * If $file is empty, the archive file will be created in memory
+     *
+     * @param string $file
+     */
+    abstract public function create($file = '');
+
+    /**
+     * Add a file to the current archive using an existing file in the filesystem
+     *
+     * @param string          $file     path to the original file
+     * @param string|FileInfo $fileinfo either the name to us in archive (string) or a FileInfo oject with all meta data, empty to take from original
+     * @throws ArchiveIOException
+     */
+    abstract public function addFile($file, $fileinfo = '');
+
+    /**
+     * Add a file to the current archive using the given $data as content
+     *
+     * @param string|FileInfo $fileinfo either the name to us in archive (string) or a FileInfo oject with all meta data
+     * @param string          $data     binary content of the file to add
+     * @throws ArchiveIOException
+     */
+    abstract public function addData($fileinfo, $data);
+
+    /**
+     * Close the archive, close all file handles
+     *
+     * After a call to this function no more data can be added to the archive, for
+     * read access no reading is allowed anymore
+     */
+    abstract public function close();
+
+    /**
+     * Returns the created in-memory archive data
+     *
+     * This implicitly calls close() on the Archive
+     */
+    abstract public function getArchive();
+
+    /**
+     * Save the created in-memory archive data
+     *
+     * Note: It is more memory effective to specify the filename in the create() function and
+     * let the library work on the new file directly.
+     *
+     * @param string $file
+     */
+    abstract public function save($file);
+
+}
+
+class ArchiveIOException extends \Exception
+{
+}
+
+class ArchiveIllegalCompressionException extends \Exception
+{
+}
diff --git a/vendor/splitbrain/php-archive/src/FileInfo.php b/vendor/splitbrain/php-archive/src/FileInfo.php
new file mode 100644
index 0000000000000000000000000000000000000000..c443aa977950e744babe550d3466c56bc1c0e8df
--- /dev/null
+++ b/vendor/splitbrain/php-archive/src/FileInfo.php
@@ -0,0 +1,342 @@
+<?php
+
+namespace splitbrain\PHPArchive;
+
+/**
+ * Class FileInfo
+ *
+ * stores meta data about a file in an Archive
+ *
+ * @author  Andreas Gohr <andi@splitbrain.org>
+ * @package splitbrain\PHPArchive
+ * @license MIT
+ */
+class FileInfo
+{
+
+    protected $isdir = false;
+    protected $path = '';
+    protected $size = 0;
+    protected $csize = 0;
+    protected $mtime = 0;
+    protected $mode = 0664;
+    protected $owner = '';
+    protected $group = '';
+    protected $uid = 0;
+    protected $gid = 0;
+    protected $comment = '';
+
+    /**
+     * initialize dynamic defaults
+     *
+     * @param string $path The path of the file, can also be set later through setPath()
+     */
+    public function __construct($path = '')
+    {
+        $this->mtime = time();
+        $this->setPath($path);
+    }
+
+    /**
+     * Factory to build FileInfo from existing file or directory
+     *
+     * @param string $path path to a file on the local file system
+     * @param string $as   optional path to use inside the archive
+     * @throws FileInfoException
+     * @return FileInfo
+     */
+    public static function fromPath($path, $as = '')
+    {
+        clearstatcache(false, $path);
+
+        if (!file_exists($path)) {
+            throw new FileInfoException("$path does not exist");
+        }
+
+        $stat = stat($path);
+        $file = new FileInfo();
+
+        $file->setPath($path);
+        $file->setIsdir(is_dir($path));
+        $file->setMode(fileperms($path));
+        $file->setOwner(fileowner($path));
+        $file->setGroup(filegroup($path));
+        $file->setUid($stat['uid']);
+        $file->setGid($stat['gid']);
+        $file->setMtime($stat['mtime']);
+
+        if ($as) {
+            $file->setPath($as);
+        }
+
+        return $file;
+    }
+
+    /**
+     * @return int
+     */
+    public function getSize()
+    {
+        return $this->size;
+    }
+
+    /**
+     * @param int $size
+     */
+    public function setSize($size)
+    {
+        $this->size = $size;
+    }
+
+    /**
+     * @return int
+     */
+    public function getCompressedSize()
+    {
+        return $this->csize;
+    }
+
+    /**
+     * @param int $csize
+     */
+    public function setCompressedSize($csize)
+    {
+        $this->csize = $csize;
+    }
+
+    /**
+     * @return int
+     */
+    public function getMtime()
+    {
+        return $this->mtime;
+    }
+
+    /**
+     * @param int $mtime
+     */
+    public function setMtime($mtime)
+    {
+        $this->mtime = $mtime;
+    }
+
+    /**
+     * @return int
+     */
+    public function getGid()
+    {
+        return $this->gid;
+    }
+
+    /**
+     * @param int $gid
+     */
+    public function setGid($gid)
+    {
+        $this->gid = $gid;
+    }
+
+    /**
+     * @return int
+     */
+    public function getUid()
+    {
+        return $this->uid;
+    }
+
+    /**
+     * @param int $uid
+     */
+    public function setUid($uid)
+    {
+        $this->uid = $uid;
+    }
+
+    /**
+     * @return string
+     */
+    public function getComment()
+    {
+        return $this->comment;
+    }
+
+    /**
+     * @param string $comment
+     */
+    public function setComment($comment)
+    {
+        $this->comment = $comment;
+    }
+
+    /**
+     * @return string
+     */
+    public function getGroup()
+    {
+        return $this->group;
+    }
+
+    /**
+     * @param string $group
+     */
+    public function setGroup($group)
+    {
+        $this->group = $group;
+    }
+
+    /**
+     * @return boolean
+     */
+    public function getIsdir()
+    {
+        return $this->isdir;
+    }
+
+    /**
+     * @param boolean $isdir
+     */
+    public function setIsdir($isdir)
+    {
+        // default mode for directories
+        if ($isdir && $this->mode === 0664) {
+            $this->mode = 0775;
+        }
+        $this->isdir = $isdir;
+    }
+
+    /**
+     * @return int
+     */
+    public function getMode()
+    {
+        return $this->mode;
+    }
+
+    /**
+     * @param int $mode
+     */
+    public function setMode($mode)
+    {
+        $this->mode = $mode;
+    }
+
+    /**
+     * @return string
+     */
+    public function getOwner()
+    {
+        return $this->owner;
+    }
+
+    /**
+     * @param string $owner
+     */
+    public function setOwner($owner)
+    {
+        $this->owner = $owner;
+    }
+
+    /**
+     * @return string
+     */
+    public function getPath()
+    {
+        return $this->path;
+    }
+
+    /**
+     * @param string $path
+     */
+    public function setPath($path)
+    {
+        $this->path = $this->cleanPath($path);
+    }
+
+    /**
+     * Cleans up a path and removes relative parts, also strips leading slashes
+     *
+     * @param string $path
+     * @return string
+     */
+    protected function cleanPath($path)
+    {
+        $path    = str_replace('\\', '/', $path);
+        $path    = explode('/', $path);
+        $newpath = array();
+        foreach ($path as $p) {
+            if ($p === '' || $p === '.') {
+                continue;
+            }
+            if ($p === '..') {
+                array_pop($newpath);
+                continue;
+            }
+            array_push($newpath, $p);
+        }
+        return trim(implode('/', $newpath), '/');
+    }
+
+    /**
+     * Strip given prefix or number of path segments from the filename
+     *
+     * The $strip parameter allows you to strip a certain number of path components from the filenames
+     * found in the tar file, similar to the --strip-components feature of GNU tar. This is triggered when
+     * an integer is passed as $strip.
+     * Alternatively a fixed string prefix may be passed in $strip. If the filename matches this prefix,
+     * the prefix will be stripped. It is recommended to give prefixes with a trailing slash.
+     *
+     * @param  int|string $strip
+     * @return FileInfo
+     */
+    public function strip($strip)
+    {
+        $filename = $this->getPath();
+        $striplen = strlen($strip);
+        if (is_int($strip)) {
+            // if $strip is an integer we strip this many path components
+            $parts = explode('/', $filename);
+            if (!$this->getIsdir()) {
+                $base = array_pop($parts); // keep filename itself
+            } else {
+                $base = '';
+            }
+            $filename = join('/', array_slice($parts, $strip));
+            if ($base) {
+                $filename .= "/$base";
+            }
+        } else {
+            // if strip is a string, we strip a prefix here
+            if (substr($filename, 0, $striplen) == $strip) {
+                $filename = substr($filename, $striplen);
+            }
+        }
+
+        $this->setPath($filename);
+    }
+
+    /**
+     * Does the file match the given include and exclude expressions?
+     *
+     * Exclude rules take precedence over include rules
+     *
+     * @param string $include Regular expression of files to include
+     * @param string $exclude Regular expression of files to exclude
+     * @return bool
+     */
+    public function match($include = '', $exclude = '')
+    {
+        $extract = true;
+        if ($include && !preg_match($include, $this->getPath())) {
+            $extract = false;
+        }
+        if ($exclude && preg_match($exclude, $this->getPath())) {
+            $extract = false;
+        }
+
+        return $extract;
+    }
+}
+
+class FileInfoException extends \Exception
+{
+}
\ No newline at end of file
diff --git a/vendor/splitbrain/php-archive/src/Tar.php b/vendor/splitbrain/php-archive/src/Tar.php
new file mode 100644
index 0000000000000000000000000000000000000000..bd78136da035b79b07fdec17689800f944590e13
--- /dev/null
+++ b/vendor/splitbrain/php-archive/src/Tar.php
@@ -0,0 +1,635 @@
+<?php
+
+namespace splitbrain\PHPArchive;
+
+/**
+ * Class Tar
+ *
+ * Creates or extracts Tar archives. Supports gz and bzip compression
+ *
+ * Long pathnames (>100 chars) are supported in POSIX ustar and GNU longlink formats.
+ *
+ * @author  Andreas Gohr <andi@splitbrain.org>
+ * @package splitbrain\PHPArchive
+ * @license MIT
+ */
+class Tar extends Archive
+{
+
+    protected $file = '';
+    protected $comptype = Archive::COMPRESS_AUTO;
+    protected $complevel = 9;
+    protected $fh;
+    protected $memory = '';
+    protected $closed = true;
+    protected $writeaccess = false;
+
+    /**
+     * Sets the compression to use
+     *
+     * @param int $level Compression level (0 to 9)
+     * @param int $type  Type of compression to use (use COMPRESS_* constants)
+     * @return mixed
+     */
+    public function setCompression($level = 9, $type = Archive::COMPRESS_AUTO)
+    {
+        $this->compressioncheck($type);
+        $this->comptype  = $type;
+        $this->complevel = $level;
+    }
+
+    /**
+     * Open an existing TAR file for reading
+     *
+     * @param string $file
+     * @throws ArchiveIOException
+     */
+    public function open($file)
+    {
+        $this->file = $file;
+
+        // update compression to mach file
+        if ($this->comptype == Tar::COMPRESS_AUTO) {
+            $this->setCompression($this->complevel, $this->filetype($file));
+        }
+
+        // open file handles
+        if ($this->comptype === Archive::COMPRESS_GZIP) {
+            $this->fh = @gzopen($this->file, 'rb');
+        } elseif ($this->comptype === Archive::COMPRESS_BZIP) {
+            $this->fh = @bzopen($this->file, 'r');
+        } else {
+            $this->fh = @fopen($this->file, 'rb');
+        }
+
+        if (!$this->fh) {
+            throw new ArchiveIOException('Could not open file for reading: '.$this->file);
+        }
+        $this->closed = false;
+    }
+
+    /**
+     * Read the contents of a TAR archive
+     *
+     * This function lists the files stored in the archive
+     *
+     * The archive is closed afer reading the contents, because rewinding is not possible in bzip2 streams.
+     * Reopen the file with open() again if you want to do additional operations
+     *
+     * @throws ArchiveIOException
+     * @returns FileInfo[]
+     */
+    public function contents()
+    {
+        if ($this->closed || !$this->file) {
+            throw new ArchiveIOException('Can not read from a closed archive');
+        }
+
+        $result = array();
+        while ($read = $this->readbytes(512)) {
+            $header = $this->parseHeader($read);
+            if (!is_array($header)) {
+                continue;
+            }
+
+            $this->skipbytes(ceil($header['size'] / 512) * 512);
+            $result[] = $this->header2fileinfo($header);
+        }
+
+        $this->close();
+        return $result;
+    }
+
+    /**
+     * Extract an existing TAR archive
+     *
+     * The $strip parameter allows you to strip a certain number of path components from the filenames
+     * found in the tar file, similar to the --strip-components feature of GNU tar. This is triggered when
+     * an integer is passed as $strip.
+     * Alternatively a fixed string prefix may be passed in $strip. If the filename matches this prefix,
+     * the prefix will be stripped. It is recommended to give prefixes with a trailing slash.
+     *
+     * By default this will extract all files found in the archive. You can restrict the output using the $include
+     * and $exclude parameter. Both expect a full regular expression (including delimiters and modifiers). If
+     * $include is set only files that match this expression will be extracted. Files that match the $exclude
+     * expression will never be extracted. Both parameters can be used in combination. Expressions are matched against
+     * stripped filenames as described above.
+     *
+     * The archive is closed afer reading the contents, because rewinding is not possible in bzip2 streams.
+     * Reopen the file with open() again if you want to do additional operations
+     *
+     * @param string     $outdir  the target directory for extracting
+     * @param int|string $strip   either the number of path components or a fixed prefix to strip
+     * @param string     $exclude a regular expression of files to exclude
+     * @param string     $include a regular expression of files to include
+     * @throws ArchiveIOException
+     * @return FileInfo[]
+     */
+    public function extract($outdir, $strip = '', $exclude = '', $include = '')
+    {
+        if ($this->closed || !$this->file) {
+            throw new ArchiveIOException('Can not read from a closed archive');
+        }
+
+        $outdir = rtrim($outdir, '/');
+        @mkdir($outdir, 0777, true);
+        if (!is_dir($outdir)) {
+            throw new ArchiveIOException("Could not create directory '$outdir'");
+        }
+
+        $extracted = array();
+        while ($dat = $this->readbytes(512)) {
+            // read the file header
+            $header = $this->parseHeader($dat);
+            if (!is_array($header)) {
+                continue;
+            }
+            $fileinfo = $this->header2fileinfo($header);
+
+            // apply strip rules
+            $fileinfo->strip($strip);
+
+            // skip unwanted files
+            if (!strlen($fileinfo->getPath()) || !$fileinfo->match($include, $exclude)) {
+                $this->skipbytes(ceil($header['size'] / 512) * 512);
+                continue;
+            }
+
+            // create output directory
+            $output    = $outdir.'/'.$fileinfo->getPath();
+            $directory = ($fileinfo->getIsdir()) ? $output : dirname($output);
+            @mkdir($directory, 0777, true);
+
+            // extract data
+            if (!$fileinfo->getIsdir()) {
+                $fp = fopen($output, "wb");
+                if (!$fp) {
+                    throw new ArchiveIOException('Could not open file for writing: '.$output);
+                }
+
+                $size = floor($header['size'] / 512);
+                for ($i = 0; $i < $size; $i++) {
+                    fwrite($fp, $this->readbytes(512), 512);
+                }
+                if (($header['size'] % 512) != 0) {
+                    fwrite($fp, $this->readbytes(512), $header['size'] % 512);
+                }
+
+                fclose($fp);
+                touch($output, $fileinfo->getMtime());
+                chmod($output, $fileinfo->getMode());
+            } else {
+                $this->skipbytes(ceil($header['size'] / 512) * 512); // the size is usually 0 for directories
+            }
+
+            $extracted[] = $fileinfo;
+        }
+
+        $this->close();
+        return $extracted;
+    }
+
+    /**
+     * Create a new TAR file
+     *
+     * If $file is empty, the tar file will be created in memory
+     *
+     * @param string $file
+     * @throws ArchiveIOException
+     */
+    public function create($file = '')
+    {
+        $this->file   = $file;
+        $this->memory = '';
+        $this->fh     = 0;
+
+        if ($this->file) {
+            // determine compression
+            if ($this->comptype == Archive::COMPRESS_AUTO) {
+                $this->setCompression($this->complevel, $this->filetype($file));
+            }
+
+            if ($this->comptype === Archive::COMPRESS_GZIP) {
+                $this->fh = @gzopen($this->file, 'wb'.$this->complevel);
+            } elseif ($this->comptype === Archive::COMPRESS_BZIP) {
+                $this->fh = @bzopen($this->file, 'w');
+            } else {
+                $this->fh = @fopen($this->file, 'wb');
+            }
+
+            if (!$this->fh) {
+                throw new ArchiveIOException('Could not open file for writing: '.$this->file);
+            }
+        }
+        $this->writeaccess = true;
+        $this->closed      = false;
+    }
+
+    /**
+     * Add a file to the current TAR archive using an existing file in the filesystem
+     *
+     * @param string          $file     path to the original file
+     * @param string|FileInfo $fileinfo either the name to us in archive (string) or a FileInfo oject with all meta data, empty to take from original
+     * @throws ArchiveIOException
+     */
+    public function addFile($file, $fileinfo = '')
+    {
+        if (is_string($fileinfo)) {
+            $fileinfo = FileInfo::fromPath($file, $fileinfo);
+        }
+
+        if ($this->closed) {
+            throw new ArchiveIOException('Archive has been closed, files can no longer be added');
+        }
+
+        $fp = fopen($file, 'rb');
+        if (!$fp) {
+            throw new ArchiveIOException('Could not open file for reading: '.$file);
+        }
+
+        // create file header
+        $this->writeFileHeader($fileinfo);
+
+        // write data
+        while (!feof($fp)) {
+            $data = fread($fp, 512);
+            if ($data === false) {
+                break;
+            }
+            if ($data === '') {
+                break;
+            }
+            $packed = pack("a512", $data);
+            $this->writebytes($packed);
+        }
+        fclose($fp);
+    }
+
+    /**
+     * Add a file to the current TAR archive using the given $data as content
+     *
+     * @param string|FileInfo $fileinfo either the name to us in archive (string) or a FileInfo oject with all meta data
+     * @param string          $data     binary content of the file to add
+     * @throws ArchiveIOException
+     */
+    public function addData($fileinfo, $data)
+    {
+        if (is_string($fileinfo)) {
+            $fileinfo = new FileInfo($fileinfo);
+        }
+
+        if ($this->closed) {
+            throw new ArchiveIOException('Archive has been closed, files can no longer be added');
+        }
+
+        $len = strlen($data);
+        $fileinfo->setSize($len);
+        $this->writeFileHeader($fileinfo);
+
+        for ($s = 0; $s < $len; $s += 512) {
+            $this->writebytes(pack("a512", substr($data, $s, 512)));
+        }
+    }
+
+    /**
+     * Add the closing footer to the archive if in write mode, close all file handles
+     *
+     * After a call to this function no more data can be added to the archive, for
+     * read access no reading is allowed anymore
+     *
+     * "Physically, an archive consists of a series of file entries terminated by an end-of-archive entry, which
+     * consists of two 512 blocks of zero bytes"
+     *
+     * @link http://www.gnu.org/software/tar/manual/html_chapter/tar_8.html#SEC134
+     */
+    public function close()
+    {
+        if ($this->closed) {
+            return;
+        } // we did this already
+
+        // write footer
+        if ($this->writeaccess) {
+            $this->writebytes(pack("a512", ""));
+            $this->writebytes(pack("a512", ""));
+        }
+
+        // close file handles
+        if ($this->file) {
+            if ($this->comptype === Archive::COMPRESS_GZIP) {
+                gzclose($this->fh);
+            } elseif ($this->comptype === Archive::COMPRESS_BZIP) {
+                bzclose($this->fh);
+            } else {
+                fclose($this->fh);
+            }
+
+            $this->file = '';
+            $this->fh   = 0;
+        }
+
+        $this->writeaccess = false;
+        $this->closed      = true;
+    }
+
+    /**
+     * Returns the created in-memory archive data
+     *
+     * This implicitly calls close() on the Archive
+     */
+    public function getArchive()
+    {
+        $this->close();
+
+        if ($this->comptype === Archive::COMPRESS_AUTO) {
+            $this->comptype = Archive::COMPRESS_NONE;
+        }
+
+        if ($this->comptype === Archive::COMPRESS_GZIP) {
+            return gzcompress($this->memory, $this->complevel);
+        }
+        if ($this->comptype === Archive::COMPRESS_BZIP) {
+            return bzcompress($this->memory);
+        }
+        return $this->memory;
+    }
+
+    /**
+     * Save the created in-memory archive data
+     *
+     * Note: It more memory effective to specify the filename in the create() function and
+     * let the library work on the new file directly.
+     *
+     * @param string $file
+     * @throws ArchiveIOException
+     */
+    public function save($file)
+    {
+        if ($this->comptype === Archive::COMPRESS_AUTO) {
+            $this->setCompression($this->filetype($this->complevel, $file));
+        }
+
+        if (!file_put_contents($file, $this->getArchive())) {
+            throw new ArchiveIOException('Could not write to file: '.$file);
+        }
+    }
+
+    /**
+     * Read from the open file pointer
+     *
+     * @param int $length bytes to read
+     * @return string
+     */
+    protected function readbytes($length)
+    {
+        if ($this->comptype === Archive::COMPRESS_GZIP) {
+            return @gzread($this->fh, $length);
+        } elseif ($this->comptype === Archive::COMPRESS_BZIP) {
+            return @bzread($this->fh, $length);
+        } else {
+            return @fread($this->fh, $length);
+        }
+    }
+
+    /**
+     * Write to the open filepointer or memory
+     *
+     * @param string $data
+     * @throws ArchiveIOException
+     * @return int number of bytes written
+     */
+    protected function writebytes($data)
+    {
+        if (!$this->file) {
+            $this->memory .= $data;
+            $written = strlen($data);
+        } elseif ($this->comptype === Archive::COMPRESS_GZIP) {
+            $written = @gzwrite($this->fh, $data);
+        } elseif ($this->comptype === Archive::COMPRESS_BZIP) {
+            $written = @bzwrite($this->fh, $data);
+        } else {
+            $written = @fwrite($this->fh, $data);
+        }
+        if ($written === false) {
+            throw new ArchiveIOException('Failed to write to archive stream');
+        }
+        return $written;
+    }
+
+    /**
+     * Skip forward in the open file pointer
+     *
+     * This is basically a wrapper around seek() (and a workaround for bzip2)
+     *
+     * @param int $bytes seek to this position
+     */
+    function skipbytes($bytes)
+    {
+        if ($this->comptype === Archive::COMPRESS_GZIP) {
+            @gzseek($this->fh, $bytes, SEEK_CUR);
+        } elseif ($this->comptype === Archive::COMPRESS_BZIP) {
+            // there is no seek in bzip2, we simply read on
+            @bzread($this->fh, $bytes);
+        } else {
+            @fseek($this->fh, $bytes, SEEK_CUR);
+        }
+    }
+
+    /**
+     * Write the given file metat data as header
+     *
+     * @param FileInfo $fileinfo
+     */
+    protected function writeFileHeader(FileInfo $fileinfo)
+    {
+        $this->writeRawFileHeader(
+            $fileinfo->getPath(),
+            $fileinfo->getUid(),
+            $fileinfo->getGid(),
+            $fileinfo->getMode(),
+            $fileinfo->getSize(),
+            $fileinfo->getMtime(),
+            $fileinfo->getIsdir() ? '5' : '0'
+        );
+    }
+
+    /**
+     * Write a file header to the stream
+     *
+     * @param string $name
+     * @param int    $uid
+     * @param int    $gid
+     * @param int    $perm
+     * @param int    $size
+     * @param int    $mtime
+     * @param string $typeflag Set to '5' for directories
+     */
+    protected function writeRawFileHeader($name, $uid, $gid, $perm, $size, $mtime, $typeflag = '')
+    {
+        // handle filename length restrictions
+        $prefix  = '';
+        $namelen = strlen($name);
+        if ($namelen > 100) {
+            $file = basename($name);
+            $dir  = dirname($name);
+            if (strlen($file) > 100 || strlen($dir) > 155) {
+                // we're still too large, let's use GNU longlink
+                $this->writeRawFileHeader('././@LongLink', 0, 0, 0, $namelen, 0, 'L');
+                for ($s = 0; $s < $namelen; $s += 512) {
+                    $this->writebytes(pack("a512", substr($name, $s, 512)));
+                }
+                $name = substr($name, 0, 100); // cut off name
+            } else {
+                // we're fine when splitting, use POSIX ustar
+                $prefix = $dir;
+                $name   = $file;
+            }
+        }
+
+        // values are needed in octal
+        $uid   = sprintf("%6s ", decoct($uid));
+        $gid   = sprintf("%6s ", decoct($gid));
+        $perm  = sprintf("%6s ", decoct($perm));
+        $size  = sprintf("%11s ", decoct($size));
+        $mtime = sprintf("%11s", decoct($mtime));
+
+        $data_first = pack("a100a8a8a8a12A12", $name, $perm, $uid, $gid, $size, $mtime);
+        $data_last  = pack("a1a100a6a2a32a32a8a8a155a12", $typeflag, '', 'ustar', '', '', '', '', '', $prefix, "");
+
+        for ($i = 0, $chks = 0; $i < 148; $i++) {
+            $chks += ord($data_first[$i]);
+        }
+
+        for ($i = 156, $chks += 256, $j = 0; $i < 512; $i++, $j++) {
+            $chks += ord($data_last[$j]);
+        }
+
+        $this->writebytes($data_first);
+
+        $chks = pack("a8", sprintf("%6s ", decoct($chks)));
+        $this->writebytes($chks.$data_last);
+    }
+
+    /**
+     * Decode the given tar file header
+     *
+     * @param string $block a 512 byte block containign the header data
+     * @return array|bool
+     */
+    protected function parseHeader($block)
+    {
+        if (!$block || strlen($block) != 512) {
+            return false;
+        }
+
+        for ($i = 0, $chks = 0; $i < 148; $i++) {
+            $chks += ord($block[$i]);
+        }
+
+        for ($i = 156, $chks += 256; $i < 512; $i++) {
+            $chks += ord($block[$i]);
+        }
+
+        $header = @unpack(
+            "a100filename/a8perm/a8uid/a8gid/a12size/a12mtime/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor/a155prefix",
+            $block
+        );
+        if (!$header) {
+            return false;
+        }
+
+        $return['checksum'] = OctDec(trim($header['checksum']));
+        if ($return['checksum'] != $chks) {
+            return false;
+        }
+
+        $return['filename'] = trim($header['filename']);
+        $return['perm']     = OctDec(trim($header['perm']));
+        $return['uid']      = OctDec(trim($header['uid']));
+        $return['gid']      = OctDec(trim($header['gid']));
+        $return['size']     = OctDec(trim($header['size']));
+        $return['mtime']    = OctDec(trim($header['mtime']));
+        $return['typeflag'] = $header['typeflag'];
+        $return['link']     = trim($header['link']);
+        $return['uname']    = trim($header['uname']);
+        $return['gname']    = trim($header['gname']);
+
+        // Handle ustar Posix compliant path prefixes
+        if (trim($header['prefix'])) {
+            $return['filename'] = trim($header['prefix']).'/'.$return['filename'];
+        }
+
+        // Handle Long-Link entries from GNU Tar
+        if ($return['typeflag'] == 'L') {
+            // following data block(s) is the filename
+            $filename = trim($this->readbytes(ceil($header['size'] / 512) * 512));
+            // next block is the real header
+            $block  = $this->readbytes(512);
+            $return = $this->parseHeader($block);
+            // overwrite the filename
+            $return['filename'] = $filename;
+        }
+
+        return $return;
+    }
+
+    /**
+     * Creates a FileInfo object from the given parsed header
+     *
+     * @param $header
+     * @return FileInfo
+     */
+    protected function header2fileinfo($header)
+    {
+        $fileinfo = new FileInfo();
+        $fileinfo->setPath($header['filename']);
+        $fileinfo->setMode($header['perm']);
+        $fileinfo->setUid($header['uid']);
+        $fileinfo->setGid($header['gid']);
+        $fileinfo->setSize($header['size']);
+        $fileinfo->setMtime($header['mtime']);
+        $fileinfo->setOwner($header['uname']);
+        $fileinfo->setGroup($header['gname']);
+        $fileinfo->setIsdir((bool) $header['typeflag']);
+
+        return $fileinfo;
+    }
+
+    /**
+     * Checks if the given compression type is available and throws an exception if not
+     *
+     * @param $comptype
+     * @throws ArchiveIllegalCompressionException
+     */
+    protected function compressioncheck($comptype)
+    {
+        if ($comptype === Archive::COMPRESS_GZIP && !function_exists('gzopen')) {
+            throw new ArchiveIllegalCompressionException('No gzip support available');
+        }
+
+        if ($comptype === Archive::COMPRESS_BZIP && !function_exists('bzopen')) {
+            throw new ArchiveIllegalCompressionException('No bzip2 support available');
+        }
+    }
+
+    /**
+     * Guesses the wanted compression from the given filename extension
+     *
+     * You don't need to call this yourself. It's used when you pass Archive::COMPRESS_AUTO somewhere
+     *
+     * @param string $file
+     * @return int
+     */
+    public function filetype($file)
+    {
+        $file = strtolower($file);
+        if (substr($file, -3) == '.gz' || substr($file, -4) == '.tgz') {
+            $comptype = Archive::COMPRESS_GZIP;
+        } elseif (substr($file, -4) == '.bz2' || substr($file, -4) == '.tbz') {
+            $comptype = Archive::COMPRESS_BZIP;
+        } else {
+            $comptype = Archive::COMPRESS_NONE;
+        }
+        return $comptype;
+    }
+}
diff --git a/vendor/splitbrain/php-archive/src/Zip.php b/vendor/splitbrain/php-archive/src/Zip.php
new file mode 100644
index 0000000000000000000000000000000000000000..c2ff3657536f27c5a0230e7dcea3ba4b726fc32d
--- /dev/null
+++ b/vendor/splitbrain/php-archive/src/Zip.php
@@ -0,0 +1,654 @@
+<?php
+
+namespace splitbrain\PHPArchive;
+
+/**
+ * Class Zip
+ *
+ * Creates or extracts Zip archives
+ *
+ * @author  Andreas Gohr <andi@splitbrain.org>
+ * @package splitbrain\PHPArchive
+ * @license MIT
+ */
+class Zip extends Archive
+{
+
+    protected $file = '';
+    protected $fh;
+    protected $memory = '';
+    protected $closed = true;
+    protected $writeaccess = false;
+    protected $ctrl_dir;
+    protected $complevel = 9;
+
+    /**
+     * Set the compression level.
+     *
+     * Compression Type is ignored for ZIP
+     *
+     * You can call this function before adding each file to set differen compression levels
+     * for each file.
+     *
+     * @param int $level Compression level (0 to 9)
+     * @param int $type  Type of compression to use ignored for ZIP
+     * @return mixed
+     */
+    public function setCompression($level = 9, $type = Archive::COMPRESS_AUTO)
+    {
+        $this->complevel = $level;
+    }
+
+    /**
+     * Open an existing ZIP file for reading
+     *
+     * @param string $file
+     * @throws ArchiveIOException
+     */
+    public function open($file)
+    {
+        $this->file = $file;
+        $this->fh   = @fopen($this->file, 'rb');
+        if (!$this->fh) {
+            throw new ArchiveIOException('Could not open file for reading: '.$this->file);
+        }
+        $this->closed = false;
+    }
+
+    /**
+     * Read the contents of a ZIP archive
+     *
+     * This function lists the files stored in the archive, and returns an indexed array of FileInfo objects
+     *
+     * The archive is closed afer reading the contents, for API compatibility with TAR files
+     * Reopen the file with open() again if you want to do additional operations
+     *
+     * @throws ArchiveIOException
+     * @return FileInfo[]
+     */
+    public function contents()
+    {
+        if ($this->closed || !$this->file) {
+            throw new ArchiveIOException('Can not read from a closed archive');
+        }
+
+        $result = array();
+
+        $centd = $this->readCentralDir();
+
+        @rewind($this->fh);
+        @fseek($this->fh, $centd['offset']);
+
+        for ($i = 0; $i < $centd['entries']; $i++) {
+            $result[] = $this->header2fileinfo($this->readCentralFileHeader());
+        }
+
+        $this->close();
+        return $result;
+    }
+
+    /**
+     * Extract an existing ZIP archive
+     *
+     * The $strip parameter allows you to strip a certain number of path components from the filenames
+     * found in the tar file, similar to the --strip-components feature of GNU tar. This is triggered when
+     * an integer is passed as $strip.
+     * Alternatively a fixed string prefix may be passed in $strip. If the filename matches this prefix,
+     * the prefix will be stripped. It is recommended to give prefixes with a trailing slash.
+     *
+     * By default this will extract all files found in the archive. You can restrict the output using the $include
+     * and $exclude parameter. Both expect a full regular expression (including delimiters and modifiers). If
+     * $include is set only files that match this expression will be extracted. Files that match the $exclude
+     * expression will never be extracted. Both parameters can be used in combination. Expressions are matched against
+     * stripped filenames as described above.
+     *
+     * @param string     $outdir  the target directory for extracting
+     * @param int|string $strip   either the number of path components or a fixed prefix to strip
+     * @param string     $exclude a regular expression of files to exclude
+     * @param string     $include a regular expression of files to include
+     * @throws ArchiveIOException
+     * @return FileInfo[]
+     */
+    function extract($outdir, $strip = '', $exclude = '', $include = '')
+    {
+        if ($this->closed || !$this->file) {
+            throw new ArchiveIOException('Can not read from a closed archive');
+        }
+
+        $outdir = rtrim($outdir, '/');
+        @mkdir($outdir, 0777, true);
+
+        $extracted = array();
+
+        $cdir      = $this->readCentralDir();
+        $pos_entry = $cdir['offset']; // begin of the central file directory
+
+        for ($i = 0; $i < $cdir['entries']; $i++) {
+            // read file header
+            @fseek($this->fh, $pos_entry);
+            $header          = $this->readCentralFileHeader();
+            $header['index'] = $i;
+            $pos_entry       = ftell($this->fh); // position of the next file in central file directory
+            fseek($this->fh, $header['offset']); // seek to beginning of file header
+            $header   = $this->readFileHeader($header);
+            $fileinfo = $this->header2fileinfo($header);
+
+            // apply strip rules
+            $fileinfo->strip($strip);
+
+            // skip unwanted files
+            if (!strlen($fileinfo->getPath()) || !$fileinfo->match($include, $exclude)) {
+                continue;
+            }
+
+            $extracted[] = $fileinfo;
+
+            // create output directory
+            $output    = $outdir.'/'.$fileinfo->getPath();
+            $directory = ($header['folder']) ? $output : dirname($output);
+            @mkdir($directory, 0777, true);
+
+            // nothing more to do for directories
+            if ($fileinfo->getIsdir()) {
+                continue;
+            }
+
+            // compressed files are written to temporary .gz file first
+            if ($header['compression'] == 0) {
+                $extractto = $output;
+            } else {
+                $extractto = $output.'.gz';
+            }
+
+            // open file for writing
+            $fp = fopen($extractto, "wb");
+            if (!$fp) {
+                throw new ArchiveIOException('Could not open file for writing: '.$extractto);
+            }
+
+            // prepend compression header
+            if ($header['compression'] != 0) {
+                $binary_data = pack(
+                    'va1a1Va1a1',
+                    0x8b1f,
+                    chr($header['compression']),
+                    chr(0x00),
+                    time(),
+                    chr(0x00),
+                    chr(3)
+                );
+                fwrite($fp, $binary_data, 10);
+            }
+
+            // read the file and store it on disk
+            $size = $header['compressed_size'];
+            while ($size != 0) {
+                $read_size   = ($size < 2048 ? $size : 2048);
+                $buffer      = fread($this->fh, $read_size);
+                $binary_data = pack('a'.$read_size, $buffer);
+                fwrite($fp, $binary_data, $read_size);
+                $size -= $read_size;
+            }
+
+            // finalize compressed file
+            if ($header['compression'] != 0) {
+                $binary_data = pack('VV', $header['crc'], $header['size']);
+                fwrite($fp, $binary_data, 8);
+            }
+
+            // close file
+            fclose($fp);
+
+            // unpack compressed file
+            if ($header['compression'] != 0) {
+                $gzp = @gzopen($extractto, 'rb');
+                if (!$gzp) {
+                    @unlink($extractto);
+                    throw new ArchiveIOException('Failed file extracting. gzip support missing?');
+                }
+                $fp = @fopen($output, 'wb');
+                if (!$fp) {
+                    throw new ArchiveIOException('Could not open file for writing: '.$extractto);
+                }
+
+                $size = $header['size'];
+                while ($size != 0) {
+                    $read_size   = ($size < 2048 ? $size : 2048);
+                    $buffer      = gzread($gzp, $read_size);
+                    $binary_data = pack('a'.$read_size, $buffer);
+                    @fwrite($fp, $binary_data, $read_size);
+                    $size -= $read_size;
+                }
+                fclose($fp);
+                gzclose($gzp);
+            }
+
+            touch($output, $fileinfo->getMtime());
+            //FIXME what about permissions?
+        }
+
+        $this->close();
+        return $extracted;
+    }
+
+    /**
+     * Create a new ZIP file
+     *
+     * If $file is empty, the zip file will be created in memory
+     *
+     * @param string $file
+     * @throws ArchiveIOException
+     */
+    public function create($file = '')
+    {
+        $this->file   = $file;
+        $this->memory = '';
+        $this->fh     = 0;
+
+        if ($this->file) {
+            $this->fh = @fopen($this->file, 'wb');
+
+            if (!$this->fh) {
+                throw new ArchiveIOException('Could not open file for writing: '.$this->file);
+            }
+        }
+        $this->writeaccess = true;
+        $this->closed      = false;
+        $this->ctrl_dir    = array();
+    }
+
+    /**
+     * Add a file to the current ZIP archive using an existing file in the filesystem
+     *
+     * @param string          $file     path to the original file
+     * @param string|FileInfo $fileinfo either the name to us in archive (string) or a FileInfo oject with all meta data, empty to take from original
+     * @throws ArchiveIOException
+     */
+
+    /**
+     * Add a file to the current archive using an existing file in the filesystem
+     *
+     * @param string          $file     path to the original file
+     * @param string|FileInfo $fileinfo either the name to us in archive (string) or a FileInfo oject with all meta data, empty to take from original
+     * @throws ArchiveIOException
+     */
+    public function addFile($file, $fileinfo = '')
+    {
+        if (is_string($fileinfo)) {
+            $fileinfo = FileInfo::fromPath($file, $fileinfo);
+        }
+
+        if ($this->closed) {
+            throw new ArchiveIOException('Archive has been closed, files can no longer be added');
+        }
+
+        $data = @file_get_contents($file);
+        if ($data === false) {
+            throw new ArchiveIOException('Could not open file for reading: '.$file);
+        }
+
+        // FIXME could we stream writing compressed data? gzwrite on a fopen handle?
+        $this->addData($fileinfo, $data);
+    }
+
+    /**
+     * Add a file to the current TAR archive using the given $data as content
+     *
+     * @param string|FileInfo $fileinfo either the name to us in archive (string) or a FileInfo oject with all meta data
+     * @param string          $data     binary content of the file to add
+     * @throws ArchiveIOException
+     */
+    public function addData($fileinfo, $data)
+    {
+        if (is_string($fileinfo)) {
+            $fileinfo = new FileInfo($fileinfo);
+        }
+
+        if ($this->closed) {
+            throw new ArchiveIOException('Archive has been closed, files can no longer be added');
+        }
+
+        // prepare the various header infos
+        $dtime    = dechex($this->makeDosTime($fileinfo->getMtime()));
+        $hexdtime = pack(
+            'H*',
+            $dtime[6].$dtime[7].
+            $dtime[4].$dtime[5].
+            $dtime[2].$dtime[3].
+            $dtime[0].$dtime[1]
+        );
+        $size     = strlen($data);
+        $crc      = crc32($data);
+        if ($this->complevel) {
+            $fmagic = "\x50\x4b\x03\x04\x14\x00\x00\x00\x08\x00";
+            $cmagic = "\x50\x4b\x01\x02\x00\x00\x14\x00\x00\x00\x08\x00";
+            $data   = gzcompress($data, $this->complevel);
+            $data   = substr($data, 2, -4); // strip compression headers
+        } else {
+            $fmagic = "\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00";
+            $cmagic = "\x50\x4b\x01\x02\x14\x00\x0a\x00\x00\x00\x00\x00";
+        }
+        $csize  = strlen($data);
+        $offset = $this->dataOffset();
+        $name   = $fileinfo->getPath();
+
+        // write data
+        $this->writebytes($fmagic);
+        $this->writebytes($hexdtime);
+        $this->writebytes(pack('V', $crc).pack('V', $csize).pack('V', $size)); //pre header
+        $this->writebytes(pack('v', strlen($name)).pack('v', 0).$name.$data); //file data
+        $this->writebytes(pack('V', $crc).pack('V', $csize).pack('V', $size)); //post header
+
+        // add info to central file directory
+        $cdrec = $cmagic;
+        $cdrec .= $hexdtime.pack('V', $crc).pack('V', $csize).pack('V', $size);
+        $cdrec .= pack('v', strlen($name)).pack('v', 0).pack('v', 0);
+        $cdrec .= pack('v', 0).pack('v', 0).pack('V', 32);
+        $cdrec .= pack('V', $offset);
+        $cdrec .= $name;
+        $this->ctrl_dir[] = $cdrec;
+    }
+
+    /**
+     * Add the closing footer to the archive if in write mode, close all file handles
+     *
+     * After a call to this function no more data can be added to the archive, for
+     * read access no reading is allowed anymore
+     */
+    public function close()
+    {
+        if ($this->closed) {
+            return;
+        } // we did this already
+
+        // write footer
+        if ($this->writeaccess) {
+            $offset  = $this->dataOffset();
+            $ctrldir = join('', $this->ctrl_dir);
+            $this->writebytes($ctrldir);
+            $this->writebytes("\x50\x4b\x05\x06\x00\x00\x00\x00"); // EOF CTRL DIR
+            $this->writebytes(pack('v', count($this->ctrl_dir)).pack('v', count($this->ctrl_dir)));
+            $this->writebytes(pack('V', strlen($ctrldir)).pack('V', strlen($offset))."\x00\x00");
+            $this->ctrl_dir = array();
+        }
+
+        // close file handles
+        if ($this->file) {
+            fclose($this->fh);
+            $this->file = '';
+            $this->fh   = 0;
+        }
+
+        $this->writeaccess = false;
+        $this->closed      = true;
+    }
+
+    /**
+     * Returns the created in-memory archive data
+     *
+     * This implicitly calls close() on the Archive
+     */
+    public function getArchive()
+    {
+        $this->close();
+
+        return $this->memory;
+    }
+
+    /**
+     * Save the created in-memory archive data
+     *
+     * Note: It's more memory effective to specify the filename in the create() function and
+     * let the library work on the new file directly.
+     *
+     * @param     $file
+     * @throws ArchiveIOException
+     */
+    public function save($file)
+    {
+        if (!file_put_contents($file, $this->getArchive())) {
+            throw new ArchiveIOException('Could not write to file: '.$file);
+        }
+    }
+
+    /**
+     * Read the central directory
+     *
+     * This key-value list contains general information about the ZIP file
+     *
+     * @return array
+     */
+    protected function readCentralDir()
+    {
+        $size = filesize($this->file);
+        if ($size < 277) {
+            $maximum_size = $size;
+        } else {
+            $maximum_size = 277;
+        }
+
+        @fseek($this->fh, $size - $maximum_size);
+        $pos   = ftell($this->fh);
+        $bytes = 0x00000000;
+
+        while ($pos < $size) {
+            $byte  = @fread($this->fh, 1);
+            $bytes = (($bytes << 8) & 0xFFFFFFFF) | ord($byte);
+            if ($bytes == 0x504b0506) {
+                break;
+            }
+            $pos++;
+        }
+
+        $data = unpack(
+            'vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size',
+            fread($this->fh, 18)
+        );
+
+        if ($data['comment_size'] != 0) {
+            $centd['comment'] = fread($this->fh, $data['comment_size']);
+        } else {
+            $centd['comment'] = '';
+        }
+        $centd['entries']      = $data['entries'];
+        $centd['disk_entries'] = $data['disk_entries'];
+        $centd['offset']       = $data['offset'];
+        $centd['disk_start']   = $data['disk_start'];
+        $centd['size']         = $data['size'];
+        $centd['disk']         = $data['disk'];
+        return $centd;
+    }
+
+    /**
+     * Read the next central file header
+     *
+     * Assumes the current file pointer is pointing at the right position
+     *
+     * @return array
+     */
+    protected function readCentralFileHeader()
+    {
+        $binary_data = fread($this->fh, 46);
+        $header      = unpack(
+            'vchkid/vid/vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset',
+            $binary_data
+        );
+
+        if ($header['filename_len'] != 0) {
+            $header['filename'] = fread($this->fh, $header['filename_len']);
+        } else {
+            $header['filename'] = '';
+        }
+
+        if ($header['extra_len'] != 0) {
+            $header['extra'] = fread($this->fh, $header['extra_len']);
+        } else {
+            $header['extra'] = '';
+        }
+
+        if ($header['comment_len'] != 0) {
+            $header['comment'] = fread($this->fh, $header['comment_len']);
+        } else {
+            $header['comment'] = '';
+        }
+
+        if ($header['mdate'] && $header['mtime']) {
+            $hour            = ($header['mtime'] & 0xF800) >> 11;
+            $minute          = ($header['mtime'] & 0x07E0) >> 5;
+            $seconde         = ($header['mtime'] & 0x001F) * 2;
+            $year            = (($header['mdate'] & 0xFE00) >> 9) + 1980;
+            $month           = ($header['mdate'] & 0x01E0) >> 5;
+            $day             = $header['mdate'] & 0x001F;
+            $header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year);
+        } else {
+            $header['mtime'] = time();
+        }
+
+        $header['stored_filename'] = $header['filename'];
+        $header['status']          = 'ok';
+        if (substr($header['filename'], -1) == '/') {
+            $header['external'] = 0x41FF0010;
+        }
+        $header['folder'] = ($header['external'] == 0x41FF0010 || $header['external'] == 16) ? 1 : 0;
+
+        return $header;
+    }
+
+    /**
+     * Reads the local file header
+     *
+     * This header precedes each individual file inside the zip file. Assumes the current file pointer is pointing at
+     * the right position already. Enhances this given central header with the data found at the local header.
+     *
+     * @param array $header the central file header read previously (see above)
+     * @return array
+     */
+    function readFileHeader($header)
+    {
+        $binary_data = fread($this->fh, 30);
+        $data        = unpack(
+            'vchk/vid/vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len',
+            $binary_data
+        );
+
+        $header['filename'] = fread($this->fh, $data['filename_len']);
+        if ($data['extra_len'] != 0) {
+            $header['extra'] = fread($this->fh, $data['extra_len']);
+        } else {
+            $header['extra'] = '';
+        }
+
+        $header['compression'] = $data['compression'];
+        foreach (array(
+                     'size',
+                     'compressed_size',
+                     'crc'
+                 ) as $hd) { // On ODT files, these headers are 0. Keep the previous value.
+            if ($data[$hd] != 0) {
+                $header[$hd] = $data[$hd];
+            }
+        }
+        $header['flag']  = $data['flag'];
+        $header['mdate'] = $data['mdate'];
+        $header['mtime'] = $data['mtime'];
+
+        if ($header['mdate'] && $header['mtime']) {
+            $hour            = ($header['mtime'] & 0xF800) >> 11;
+            $minute          = ($header['mtime'] & 0x07E0) >> 5;
+            $seconde         = ($header['mtime'] & 0x001F) * 2;
+            $year            = (($header['mdate'] & 0xFE00) >> 9) + 1980;
+            $month           = ($header['mdate'] & 0x01E0) >> 5;
+            $day             = $header['mdate'] & 0x001F;
+            $header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year);
+        } else {
+            $header['mtime'] = time();
+        }
+
+        $header['stored_filename'] = $header['filename'];
+        $header['status']          = "ok";
+        $header['folder']          = ($header['external'] == 0x41FF0010 || $header['external'] == 16) ? 1 : 0;
+        return $header;
+    }
+
+    /**
+     * Create fileinfo object from header data
+     *
+     * @param $header
+     * @return FileInfo
+     */
+    protected function header2fileinfo($header)
+    {
+        $fileinfo = new FileInfo();
+        $fileinfo->setPath($header['filename']);
+        $fileinfo->setSize($header['size']);
+        $fileinfo->setCompressedSize($header['compressed_size']);
+        $fileinfo->setMtime($header['mtime']);
+        $fileinfo->setComment($header['comment']);
+        $fileinfo->setIsdir($header['external'] == 0x41FF0010 || $header['external'] == 16);
+        return $fileinfo;
+    }
+
+    /**
+     * Write to the open filepointer or memory
+     *
+     * @param string $data
+     * @throws ArchiveIOException
+     * @return int number of bytes written
+     */
+    protected function writebytes($data)
+    {
+        if (!$this->file) {
+            $this->memory .= $data;
+            $written = strlen($data);
+        } else {
+            $written = @fwrite($this->fh, $data);
+        }
+        if ($written === false) {
+            throw new ArchiveIOException('Failed to write to archive stream');
+        }
+        return $written;
+    }
+
+    /**
+     * Current data pointer position
+     *
+     * @fixme might need a -1
+     * @return int
+     */
+    protected function dataOffset()
+    {
+        if ($this->file) {
+            return ftell($this->fh);
+        } else {
+            return strlen($this->memory);
+        }
+    }
+
+    /**
+     * Create a DOS timestamp from a UNIX timestamp
+     *
+     * DOS timestamps start at 1980-01-01, earlier UNIX stamps will be set to this date
+     *
+     * @param $time
+     * @return int
+     */
+    protected function makeDosTime($time)
+    {
+        $timearray = getdate($time);
+        if ($timearray['year'] < 1980) {
+            $timearray['year']    = 1980;
+            $timearray['mon']     = 1;
+            $timearray['mday']    = 1;
+            $timearray['hours']   = 0;
+            $timearray['minutes'] = 0;
+            $timearray['seconds'] = 0;
+        }
+        return (($timearray['year'] - 1980) << 25) |
+        ($timearray['mon'] << 21) |
+        ($timearray['mday'] << 16) |
+        ($timearray['hours'] << 11) |
+        ($timearray['minutes'] << 5) |
+        ($timearray['seconds'] >> 1);
+    }
+
+}