diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 22fe68de2869f4866d0b7e930f9b524e42f1f65e..a5f7c4fe9de49a0e6fc2b0cc8f4081b97f8395e6 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -193,7 +193,6 @@ development:
       - $INCREMENTAL_ROLLOUT_ENABLED
       - $INCREMENTAL_ROLLOUT_MODE
 
-
 production:
   variables:
     ADDITIONAL_HOSTS: "www.metager.de,metager.org,www.metager.org,metager.es,www.metager.es,klassik.metager.org"
diff --git a/app/Http/Controllers/HumanVerification.php b/app/Http/Controllers/HumanVerification.php
index 81f9d71ac8a4599148884ad3b8d7842ec2de45c3..fcf6e183d9d38bce7bc72426605c1efd39090bf2 100644
--- a/app/Http/Controllers/HumanVerification.php
+++ b/app/Http/Controllers/HumanVerification.php
@@ -105,12 +105,13 @@ class HumanVerification extends Controller
     private static function saveUser($user)
     {
         $userList = Cache::get(HumanVerification::PREFIX . "." . $user["id"], []);
-        $userList[$user["uid"]] = $user;
+        
         if ($user["whitelist"]) {
             $user["expiration"] = now()->addWeeks(2);
         } else {
             $user["expiration"] = now()->addHours(72);
         }
+        $userList[$user["uid"]] = $user;
         Cache::put(HumanVerification::PREFIX . "." . $user["id"], $userList, now()->addWeeks(2));
     }
 
@@ -208,4 +209,53 @@ class HumanVerification extends Controller
         return $possibleSpammer;
 
     }
+
+    public function botOverview(Request $request){
+        $id = "";
+        $uid = "";
+        $ip = $request->ip();
+        if (\App\Http\Controllers\HumanVerification::couldBeSpammer($ip)) {
+            $id = hash("sha512", "999.999.999.999");
+            $uid = hash("sha512", "999.999.999.999" . $ip . $_SERVER["AGENT"] . "uid");
+        } else {
+            $id = hash("sha512", $ip);
+            $uid = hash("sha512", $ip . $_SERVER["AGENT"] . "uid");
+        }
+
+        $userList = Cache::get(HumanVerification::PREFIX . "." . $id);
+        $user = $userList[$uid];
+
+        return view('humanverification.botOverview')
+            ->with('title', "Bot Overview")
+            ->with('ip', $ip)
+            ->with('userList', $userList)
+            ->with('user', $user);
+    }
+
+    public function botOverviewChange(Request $request) {
+        $id = "";
+        $uid = "";
+        $ip = $request->ip();
+        if (\App\Http\Controllers\HumanVerification::couldBeSpammer($ip)) {
+            $id = hash("sha512", "999.999.999.999");
+            $uid = hash("sha512", "999.999.999.999" . $ip . $_SERVER["AGENT"] . "uid");
+        } else {
+            $id = hash("sha512", $ip);
+            $uid = hash("sha512", $ip . $_SERVER["AGENT"] . "uid");
+        }
+
+        $userList = Cache::get(HumanVerification::PREFIX . "." . $id);
+        $user = $userList[$uid];
+
+        if($request->filled("locked")){
+            $user["locked"] = boolval($request->input('locked'));
+        }elseif($request->filled("whitelist")) {
+            $user["whitelist"] = boolval($request->input('whitelist'));
+        }elseif($request->filled("unusedResultPages")) {
+            $user["unusedResultPages"] = intval($request->input('unusedResultPages'));
+        }
+
+        HumanVerification::saveUser($user);
+        return redirect('admin/bot');
+    }
 }
diff --git a/app/Http/Middleware/HumanVerification.php b/app/Http/Middleware/HumanVerification.php
index cf2a4e7033653e465b1591657230396c1b1454d2..1ce6b38a2a8ab00f0f7d0db9e3fdbca1352f81d2 100644
--- a/app/Http/Middleware/HumanVerification.php
+++ b/app/Http/Middleware/HumanVerification.php
@@ -66,20 +66,21 @@ class HumanVerification
             } else {
                 $user = $users[$uid];
             }
+
             # Lock out everyone in a Bot network
             # Find out how many requests this IP has made
             $sum = 0;
             // Defines if this is the only user using that IP Adress
             $alone = true;
-            foreach ($users as $uid => $userTmp) {
+            foreach ($users as $uidTmp => $userTmp) {
                 if (!$userTmp["whitelist"]) {
                     $sum += $userTmp["unusedResultPages"];
-                    if ($userTmp["uid"] != $uid) {
+                    if ($userTmp["uid"] !== $uid) {
                         $alone = false;
                     }
                 }
             }
-
+            
             # A lot of automated requests are from websites that redirect users to our result page.
             # We will detect those requests and put a captcha
             $referer = URL::previous();
@@ -97,7 +98,7 @@ class HumanVerification
             if ((!$alone && $sum >= 50 && !$user["whitelist"]) || $refererLock) {
                 $user["locked"] = true;
             }
-
+            
             # If the user is locked we will force a Captcha validation
             if ($user["locked"]) {
                 $captcha = Captcha::create("default", true);
diff --git a/resources/views/humanverification/botOverview.blade.php b/resources/views/humanverification/botOverview.blade.php
new file mode 100644
index 0000000000000000000000000000000000000000..32fe52c2df3d7223d89a434c525829a64b0aa3f7
--- /dev/null
+++ b/resources/views/humanverification/botOverview.blade.php
@@ -0,0 +1,70 @@
+@extends('layouts.subPages')
+
+@section('title', $title )
+
+@section('content')
+    <style>
+        table form {
+            padding-top: 8px;
+            padding-bottom: 8px;
+        }
+        td:nth-child(1) {
+            padding-right: 8px;
+        }
+    </style>
+    <table>
+        <tbody>
+            <tr>
+                <td>IP-Adresse</td>
+                <td><pre>{{$ip}}</pre></td>
+            </tr>
+            <tr>
+                <td>ID</td>
+                <td><pre>{{$user["id"]}}</pre></td>
+            </tr>
+            <tr>
+                <td>User-ID</td>
+                <td><pre>{{$user["uid"]}}</pre></td>
+            </tr>
+            <tr>
+                <td>Unused Resultpages</td>
+                <td>
+                    <form action="" method="post">
+                        <input onchange="this.form.submit()" type="number" name="unusedResultPages" id="unusedResultPages" value="{{$user["unusedResultPages"]}}">
+                    </form>
+                </td>
+            </tr>
+            <tr>
+                <td>Whitelist</td>
+                <td>
+                    <form action="" method="post">
+                        <select name="whitelist" id="locked" onchange="this.form.submit()">
+                            <option value="1" @if($user["whitelist"]) selected @endif>True</option>
+                            <option value="0" @if(!$user["whitelist"]) selected @endif>False</option>
+                        </select>
+                    </form>
+                </td>
+            </tr>
+            <tr>
+                <td>Locked</td>
+                <td>
+                    <form action="" method="post">
+                        <select name="locked" id="locked" onchange="this.form.submit()">
+                            <option value="1" @if($user["locked"]) selected @endif>True</option>
+                            <option value="0" @if(!$user["locked"]) selected @endif>False</option>
+                        </select>
+                    </form>
+                </td>
+            </tr>
+            <tr>
+                <td>Locked Key</td>
+                <td><pre>{{$user["lockedKey"]}}</pre></td>
+            </tr>
+            <tr>
+                <td>Expiration</td>
+                <td><pre>{{$user["expiration"]}}</pre></td>
+            </tr>
+        </tbody>
+    </table>
+    {{ dd($userList) }}
+@endsection
diff --git a/routes/web.php b/routes/web.php
index 3c9b095cc861986066c025efe4ae534cd24ab6de..9d1825cdd0a3511c9912426cfc6de9777906c906 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -179,6 +179,8 @@ Route::group(
             Route::get('ip', function () {
                 dd(Request::ip(), $_SERVER["AGENT"]);
             });
+            Route::get('bot', 'HumanVerification@botOverview');
+            Route::post('bot', 'HumanVerification@botOverviewChange');
         });
 
         Route::get('settings', function () {
diff --git a/storage/app/public/aufnahmeantrag-de.pdf b/storage/app/public/aufnahmeantrag-de.pdf
index e8f87582b79707e01e46d84d66dddda1a9988263..ff8f662179edb92ef13f82e74ff6604cb8ac71d2 100755
Binary files a/storage/app/public/aufnahmeantrag-de.pdf and b/storage/app/public/aufnahmeantrag-de.pdf differ
diff --git a/storage/app/public/aufnahmeantrag-en.pdf b/storage/app/public/aufnahmeantrag-en.pdf
index c35707b886402275b4a6f772ae072fb176c039df..96f174ec2ef0b5839757a98b7caf0f57459d4774 100755
Binary files a/storage/app/public/aufnahmeantrag-en.pdf and b/storage/app/public/aufnahmeantrag-en.pdf differ