diff --git a/apps/admin_audit/composer/composer/ClassLoader.php b/apps/admin_audit/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/apps/admin_audit/composer/composer/ClassLoader.php
+++ b/apps/admin_audit/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/apps/admin_audit/composer/composer/autoload_static.php b/apps/admin_audit/composer/composer/autoload_static.php
index ea5988b59ff908342b13aa0947c908fd74127d19..b5f055de44e21dad93214ee492e9c4c9391c653e 100644
--- a/apps/admin_audit/composer/composer/autoload_static.php
+++ b/apps/admin_audit/composer/composer/autoload_static.php
@@ -6,8 +6,11 @@ namespace Composer\Autoload;
 
 class ComposerStaticInitAdminAudit
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OCA\\AdminAudit\\' => 15,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -34,7 +37,7 @@ class ComposerStaticInitAdminAudit
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInitAdminAudit::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitAdminAudit::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInitAdminAudit::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInitAdminAudit::$classMap;
 
diff --git a/apps/comments/composer/composer/ClassLoader.php b/apps/comments/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/apps/comments/composer/composer/ClassLoader.php
+++ b/apps/comments/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/apps/comments/composer/composer/autoload_static.php b/apps/comments/composer/composer/autoload_static.php
index 1c9e6be405a41a3bb4d1226cb92d280f8d030628..662f77f89dc4ffc6d27f377dbe72fea0ac89347f 100644
--- a/apps/comments/composer/composer/autoload_static.php
+++ b/apps/comments/composer/composer/autoload_static.php
@@ -6,8 +6,11 @@ namespace Composer\Autoload;
 
 class ComposerStaticInitComments
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OCA\\Comments\\' => 13,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -34,7 +37,7 @@ class ComposerStaticInitComments
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInitComments::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitComments::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInitComments::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInitComments::$classMap;
 
diff --git a/apps/dav/composer/composer/ClassLoader.php b/apps/dav/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/apps/dav/composer/composer/ClassLoader.php
+++ b/apps/dav/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/apps/dav/composer/composer/autoload_static.php b/apps/dav/composer/composer/autoload_static.php
index 41fea367ee5f5cfdab0be62b45b0f48cf007001c..4be9b7596951234432ea1d6dc02c5b2ad49372b4 100644
--- a/apps/dav/composer/composer/autoload_static.php
+++ b/apps/dav/composer/composer/autoload_static.php
@@ -6,8 +6,11 @@ namespace Composer\Autoload;
 
 class ComposerStaticInitDAV
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OCA\\DAV\\' => 8,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -166,7 +169,7 @@ class ComposerStaticInitDAV
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInitDAV::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitDAV::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInitDAV::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInitDAV::$classMap;
 
diff --git a/apps/encryption/composer/composer/ClassLoader.php b/apps/encryption/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/apps/encryption/composer/composer/ClassLoader.php
+++ b/apps/encryption/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/apps/encryption/composer/composer/autoload_static.php b/apps/encryption/composer/composer/autoload_static.php
index 27e18b0eac3f7e4e8a032ac84c60f17e3371af83..b3ec7c52fe8e834ba5eaa7fa4c41703fd5c50a95 100644
--- a/apps/encryption/composer/composer/autoload_static.php
+++ b/apps/encryption/composer/composer/autoload_static.php
@@ -6,8 +6,11 @@ namespace Composer\Autoload;
 
 class ComposerStaticInitEncryption
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OCA\\Encryption\\' => 15,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -50,7 +53,7 @@ class ComposerStaticInitEncryption
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInitEncryption::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitEncryption::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInitEncryption::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInitEncryption::$classMap;
 
diff --git a/apps/federatedfilesharing/composer/composer/ClassLoader.php b/apps/federatedfilesharing/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/apps/federatedfilesharing/composer/composer/ClassLoader.php
+++ b/apps/federatedfilesharing/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/apps/federatedfilesharing/composer/composer/autoload_static.php b/apps/federatedfilesharing/composer/composer/autoload_static.php
index 27aef5ca19e0cfc233f35974492b504ac1ae1957..95b8775384c5413509c80e2945f280238ae9ceb4 100644
--- a/apps/federatedfilesharing/composer/composer/autoload_static.php
+++ b/apps/federatedfilesharing/composer/composer/autoload_static.php
@@ -6,8 +6,11 @@ namespace Composer\Autoload;
 
 class ComposerStaticInitFederatedFileSharing
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OCA\\FederatedFileSharing\\' => 25,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -35,7 +38,7 @@ class ComposerStaticInitFederatedFileSharing
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInitFederatedFileSharing::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitFederatedFileSharing::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInitFederatedFileSharing::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInitFederatedFileSharing::$classMap;
 
diff --git a/apps/federation/composer/composer/ClassLoader.php b/apps/federation/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/apps/federation/composer/composer/ClassLoader.php
+++ b/apps/federation/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/apps/federation/composer/composer/autoload_static.php b/apps/federation/composer/composer/autoload_static.php
index 5edfe1c5e908120fe3f7229bb23efb0564eabe9a..e005986b9f90175751bbb9907254e2579ca4047b 100644
--- a/apps/federation/composer/composer/autoload_static.php
+++ b/apps/federation/composer/composer/autoload_static.php
@@ -6,8 +6,11 @@ namespace Composer\Autoload;
 
 class ComposerStaticInitFederation
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OCA\\Federation\\' => 15,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -37,7 +40,7 @@ class ComposerStaticInitFederation
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInitFederation::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitFederation::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInitFederation::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInitFederation::$classMap;
 
diff --git a/apps/files/composer/composer/ClassLoader.php b/apps/files/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/apps/files/composer/composer/ClassLoader.php
+++ b/apps/files/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/apps/files/composer/composer/autoload_static.php b/apps/files/composer/composer/autoload_static.php
index 13e302199c26f229d0c40357f55c568bd7588c3b..44094c6a34c285fc72ee2d895e3470bd7a983b10 100644
--- a/apps/files/composer/composer/autoload_static.php
+++ b/apps/files/composer/composer/autoload_static.php
@@ -6,8 +6,11 @@ namespace Composer\Autoload;
 
 class ComposerStaticInitFiles
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OCA\\Files\\' => 10,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -50,7 +53,7 @@ class ComposerStaticInitFiles
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInitFiles::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitFiles::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInitFiles::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInitFiles::$classMap;
 
diff --git a/apps/files_sharing/composer/composer/ClassLoader.php b/apps/files_sharing/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/apps/files_sharing/composer/composer/ClassLoader.php
+++ b/apps/files_sharing/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/apps/files_sharing/composer/composer/autoload_static.php b/apps/files_sharing/composer/composer/autoload_static.php
index 499a903c1042d78d0938f09bcde477f4ca5583ed..328d6aca01d57be99bb30623db39cf6e470f285f 100644
--- a/apps/files_sharing/composer/composer/autoload_static.php
+++ b/apps/files_sharing/composer/composer/autoload_static.php
@@ -6,8 +6,11 @@ namespace Composer\Autoload;
 
 class ComposerStaticInitFiles_Sharing
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OCA\\Files_Sharing\\' => 18,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -71,7 +74,7 @@ class ComposerStaticInitFiles_Sharing
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInitFiles_Sharing::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitFiles_Sharing::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInitFiles_Sharing::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInitFiles_Sharing::$classMap;
 
diff --git a/apps/files_trashbin/composer/composer/ClassLoader.php b/apps/files_trashbin/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/apps/files_trashbin/composer/composer/ClassLoader.php
+++ b/apps/files_trashbin/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/apps/files_trashbin/composer/composer/autoload_static.php b/apps/files_trashbin/composer/composer/autoload_static.php
index b9d341f4e418efffd4e98f1117933242424f438a..01520e2d14d36ddc0cb68bcd6f191f435661cb00 100644
--- a/apps/files_trashbin/composer/composer/autoload_static.php
+++ b/apps/files_trashbin/composer/composer/autoload_static.php
@@ -6,8 +6,11 @@ namespace Composer\Autoload;
 
 class ComposerStaticInitFiles_Trashbin
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OCA\\Files_Trashbin\\' => 19,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -37,7 +40,7 @@ class ComposerStaticInitFiles_Trashbin
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInitFiles_Trashbin::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitFiles_Trashbin::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInitFiles_Trashbin::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInitFiles_Trashbin::$classMap;
 
diff --git a/apps/files_versions/composer/composer/ClassLoader.php b/apps/files_versions/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/apps/files_versions/composer/composer/ClassLoader.php
+++ b/apps/files_versions/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/apps/files_versions/composer/composer/autoload_static.php b/apps/files_versions/composer/composer/autoload_static.php
index ce28b7653effd6c28b2ed12f7bff8c7b88b3b827..9ac3b049030c94df976dec6c32fb408b8b153cfc 100644
--- a/apps/files_versions/composer/composer/autoload_static.php
+++ b/apps/files_versions/composer/composer/autoload_static.php
@@ -6,8 +6,11 @@ namespace Composer\Autoload;
 
 class ComposerStaticInitFiles_Versions
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OCA\\Files_Versions\\' => 19,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -34,7 +37,7 @@ class ComposerStaticInitFiles_Versions
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInitFiles_Versions::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitFiles_Versions::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInitFiles_Versions::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInitFiles_Versions::$classMap;
 
diff --git a/apps/lookup_server_connector/composer/composer/ClassLoader.php b/apps/lookup_server_connector/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/apps/lookup_server_connector/composer/composer/ClassLoader.php
+++ b/apps/lookup_server_connector/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/apps/lookup_server_connector/composer/composer/autoload_static.php b/apps/lookup_server_connector/composer/composer/autoload_static.php
index 19896da2b8450fa7e944ab7632033639c4f19513..07aca539b3f47bfb56c50168d8182bbe0bbecbc5 100644
--- a/apps/lookup_server_connector/composer/composer/autoload_static.php
+++ b/apps/lookup_server_connector/composer/composer/autoload_static.php
@@ -6,8 +6,11 @@ namespace Composer\Autoload;
 
 class ComposerStaticInitLookupServerConnector
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OCA\\LookupServerConnector\\' => 26,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -25,7 +28,7 @@ class ComposerStaticInitLookupServerConnector
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInitLookupServerConnector::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitLookupServerConnector::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInitLookupServerConnector::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInitLookupServerConnector::$classMap;
 
diff --git a/apps/oauth2/composer/composer/ClassLoader.php b/apps/oauth2/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/apps/oauth2/composer/composer/ClassLoader.php
+++ b/apps/oauth2/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/apps/oauth2/composer/composer/autoload_static.php b/apps/oauth2/composer/composer/autoload_static.php
index bc196bad81aa997e4ea5f978b3125588c2bbe8af..ec48d6d0ce097bdad513652484c28425ee6b6846 100644
--- a/apps/oauth2/composer/composer/autoload_static.php
+++ b/apps/oauth2/composer/composer/autoload_static.php
@@ -6,8 +6,11 @@ namespace Composer\Autoload;
 
 class ComposerStaticInitOAuth2
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OCA\\OAuth2\\' => 11,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -33,7 +36,7 @@ class ComposerStaticInitOAuth2
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInitOAuth2::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitOAuth2::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInitOAuth2::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInitOAuth2::$classMap;
 
diff --git a/apps/provisioning_api/composer/composer/ClassLoader.php b/apps/provisioning_api/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/apps/provisioning_api/composer/composer/ClassLoader.php
+++ b/apps/provisioning_api/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/apps/provisioning_api/composer/composer/autoload_static.php b/apps/provisioning_api/composer/composer/autoload_static.php
index a0cf651df8eb34462663a9e8c2b74e31da4686be..950a851eae97b1a231f01bb634ef844dea328c7e 100644
--- a/apps/provisioning_api/composer/composer/autoload_static.php
+++ b/apps/provisioning_api/composer/composer/autoload_static.php
@@ -6,8 +6,11 @@ namespace Composer\Autoload;
 
 class ComposerStaticInitProvisioning_API
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OCA\\Provisioning_API\\' => 21,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -30,7 +33,7 @@ class ComposerStaticInitProvisioning_API
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInitProvisioning_API::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitProvisioning_API::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInitProvisioning_API::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInitProvisioning_API::$classMap;
 
diff --git a/apps/sharebymail/composer/composer/ClassLoader.php b/apps/sharebymail/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/apps/sharebymail/composer/composer/ClassLoader.php
+++ b/apps/sharebymail/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/apps/sharebymail/composer/composer/autoload_static.php b/apps/sharebymail/composer/composer/autoload_static.php
index 8e95b91fb034628a203a0a0414388537ec000712..273da60be644be710dc4b51accc509d88ca19efe 100644
--- a/apps/sharebymail/composer/composer/autoload_static.php
+++ b/apps/sharebymail/composer/composer/autoload_static.php
@@ -6,8 +6,11 @@ namespace Composer\Autoload;
 
 class ComposerStaticInitShareByMail
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OCA\\ShareByMail\\' => 16,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -30,7 +33,7 @@ class ComposerStaticInitShareByMail
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInitShareByMail::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitShareByMail::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInitShareByMail::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInitShareByMail::$classMap;
 
diff --git a/apps/systemtags/composer/composer/ClassLoader.php b/apps/systemtags/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/apps/systemtags/composer/composer/ClassLoader.php
+++ b/apps/systemtags/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/apps/systemtags/composer/composer/autoload_static.php b/apps/systemtags/composer/composer/autoload_static.php
index 19a7b6a6e102ab478a16dfaf8895d9975dc91269..40615430f93e4054d6853867c8eb212aab3c08e3 100644
--- a/apps/systemtags/composer/composer/autoload_static.php
+++ b/apps/systemtags/composer/composer/autoload_static.php
@@ -6,8 +6,11 @@ namespace Composer\Autoload;
 
 class ComposerStaticInitSystemTags
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OCA\\SystemTags\\' => 15,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -28,7 +31,7 @@ class ComposerStaticInitSystemTags
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInitSystemTags::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitSystemTags::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInitSystemTags::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInitSystemTags::$classMap;
 
diff --git a/apps/testing/composer/composer/ClassLoader.php b/apps/testing/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/apps/testing/composer/composer/ClassLoader.php
+++ b/apps/testing/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/apps/testing/composer/composer/autoload_static.php b/apps/testing/composer/composer/autoload_static.php
index 07546f58613c3b7e3417ee2a6e0cf7161dfe7618..0a6c8665f4ecfce21576a2c8fa681db56d21b13e 100644
--- a/apps/testing/composer/composer/autoload_static.php
+++ b/apps/testing/composer/composer/autoload_static.php
@@ -6,8 +6,11 @@ namespace Composer\Autoload;
 
 class ComposerStaticInitTesting
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OCA\\Testing\\' => 12,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -29,7 +32,7 @@ class ComposerStaticInitTesting
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInitTesting::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitTesting::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInitTesting::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInitTesting::$classMap;
 
diff --git a/apps/twofactor_backupcodes/composer/composer/ClassLoader.php b/apps/twofactor_backupcodes/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/apps/twofactor_backupcodes/composer/composer/ClassLoader.php
+++ b/apps/twofactor_backupcodes/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/apps/twofactor_backupcodes/composer/composer/autoload_static.php b/apps/twofactor_backupcodes/composer/composer/autoload_static.php
index 6dd04fc047ce7b87170fe42cba9fa40c37648825..abde37697eee3bc504d0883ce32573de2efb27ea 100644
--- a/apps/twofactor_backupcodes/composer/composer/autoload_static.php
+++ b/apps/twofactor_backupcodes/composer/composer/autoload_static.php
@@ -6,8 +6,11 @@ namespace Composer\Autoload;
 
 class ComposerStaticInitTwoFactorBackupCodes
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OCA\\TwoFactorBackupCodes\\' => 25,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -35,7 +38,7 @@ class ComposerStaticInitTwoFactorBackupCodes
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInitTwoFactorBackupCodes::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitTwoFactorBackupCodes::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInitTwoFactorBackupCodes::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInitTwoFactorBackupCodes::$classMap;
 
diff --git a/apps/updatenotification/composer/composer/ClassLoader.php b/apps/updatenotification/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/apps/updatenotification/composer/composer/ClassLoader.php
+++ b/apps/updatenotification/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/apps/updatenotification/composer/composer/autoload_static.php b/apps/updatenotification/composer/composer/autoload_static.php
index 0a542efad87bd3ffc0ac8438f0ea1e70432806d0..1c63a2d234b4d2c0bd2c9d6e917f87ea93263f1d 100644
--- a/apps/updatenotification/composer/composer/autoload_static.php
+++ b/apps/updatenotification/composer/composer/autoload_static.php
@@ -6,8 +6,11 @@ namespace Composer\Autoload;
 
 class ComposerStaticInitUpdateNotification
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OCA\\UpdateNotification\\' => 23,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -29,7 +32,7 @@ class ComposerStaticInitUpdateNotification
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInitUpdateNotification::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitUpdateNotification::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInitUpdateNotification::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInitUpdateNotification::$classMap;
 
diff --git a/apps/user_ldap/composer/composer/ClassLoader.php b/apps/user_ldap/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/apps/user_ldap/composer/composer/ClassLoader.php
+++ b/apps/user_ldap/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/apps/user_ldap/composer/composer/autoload_static.php b/apps/user_ldap/composer/composer/autoload_static.php
index 6c97237d62d2a07d7f656e5dfa3040154e5e2dd5..83e49daf0f3b96ef00b452f95c7517543aab0578 100644
--- a/apps/user_ldap/composer/composer/autoload_static.php
+++ b/apps/user_ldap/composer/composer/autoload_static.php
@@ -6,8 +6,11 @@ namespace Composer\Autoload;
 
 class ComposerStaticInitUser_LDAP
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OCA\\User_LDAP\\' => 14,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -81,7 +84,7 @@ class ComposerStaticInitUser_LDAP
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInitUser_LDAP::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitUser_LDAP::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInitUser_LDAP::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInitUser_LDAP::$classMap;
 
diff --git a/lib/composer/composer/ClassLoader.php b/lib/composer/composer/ClassLoader.php
index c6f6d2322bb369d95560b4ef0799ce0b30b6fdf0..dc02dfb114fb6af2eacf89407a529c37ab8e7eb8 100644
--- a/lib/composer/composer/ClassLoader.php
+++ b/lib/composer/composer/ClassLoader.php
@@ -43,8 +43,7 @@ namespace Composer\Autoload;
 class ClassLoader
 {
     // PSR-4
-    private $firstCharsPsr4 = array();
-    private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
+    private $prefixLengthsPsr4 = array();
     private $prefixDirsPsr4 = array();
     private $fallbackDirsPsr4 = array();
 
@@ -171,10 +170,11 @@ class ClassLoader
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
             // Register directories for a new namespace.
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
@@ -221,10 +221,11 @@ class ClassLoader
         if (!$prefix) {
             $this->fallbackDirsPsr4 = (array) $paths;
         } else {
-            if ('\\' !== substr($prefix, -1)) {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
             }
-            $this->firstCharsPsr4[$prefix[0]] = true;
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
             $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
     }
@@ -372,7 +373,7 @@ class ClassLoader
         $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 
         $first = $class[0];
-        if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
+        if (isset($this->prefixLengthsPsr4[$first])) {
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index c656412fb90bce856927cd2de885e76f17efffae..6828f70674acc9e38c90e0810742f38e4a16bbd5 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -6,8 +6,14 @@ namespace Composer\Autoload;
 
 class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
 {
-    public static $firstCharsPsr4 = array (
-        'O' => true,
+    public static $prefixLengthsPsr4 = array (
+        'O' => 
+        array (
+            'OC\\Settings\\' => 12,
+            'OC\\Core\\' => 8,
+            'OC\\' => 3,
+            'OCP\\' => 4,
+        ),
     );
 
     public static $prefixDirsPsr4 = array (
@@ -984,7 +990,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->firstCharsPsr4 = ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::$firstCharsPsr4;
+            $loader->prefixLengthsPsr4 = ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::$prefixLengthsPsr4;
             $loader->prefixDirsPsr4 = ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::$prefixDirsPsr4;
             $loader->classMap = ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::$classMap;