middleware; } public function lazyMiddleware(string $middleware): MiddlewareAwareInterface { $this->middleware[] = $middleware; return $this; } public function lazyMiddlewares(array $middlewares): MiddlewareAwareInterface { foreach ($middlewares as $middleware) { $this->lazyMiddleware($middleware); } return $this; } public function lazyPrependMiddleware(string $middleware): MiddlewareAwareInterface { array_unshift($this->middleware, $middleware); return $this; } public function middleware(MiddlewareInterface $middleware): MiddlewareAwareInterface { $this->middleware[] = $middleware; return $this; } public function middlewares(array $middlewares): MiddlewareAwareInterface { foreach ($middlewares as $middleware) { $this->middleware($middleware); } return $this; } public function prependMiddleware(MiddlewareInterface $middleware): MiddlewareAwareInterface { array_unshift($this->middleware, $middleware); return $this; } public function shiftMiddleware(): MiddlewareInterface { $middleware = array_shift($this->middleware); if ($middleware === null) { throw new OutOfBoundsException('Reached end of middleware stack. Does your controller return a response?'); } return $middleware; } protected function resolveMiddleware($middleware, ?ContainerInterface $container = null): MiddlewareInterface { if ($container === null && is_string($middleware) && class_exists($middleware)) { $middleware = new $middleware(); } if ($container !== null && is_string($middleware) && $container->has($middleware)) { $middleware = $container->get($middleware); } if ($middleware instanceof MiddlewareInterface) { return $middleware; } throw new InvalidArgumentException(sprintf('Could not resolve middleware class: %s', $middleware)); } } __halt_compiler();----SIGNATURE:----jNCf6EcAPlSggJtYZtX3YQSJU6CvIKZVbkRwRqDNIALBSncRZPjSPZMWCSLLRK287B3q9AhqjMI4GkiGvRzEGD+ISffpESE13S05YoBmRxpHpWFh2Zey/JiyD7XwkTObTa0XA00QjQjoJ7MMrEa0SswZJolGVjDeYbMFc/+8cbd+pC/Gr5/Kh70m0F/BnHxCVSMRWG93Fz4vPB0M9+EJRq2o0X5nfytWBXYpYoVmSsRTyhCusHVuDwccpmn+fCCaD8OjWICrvt7NujtcWhkUJtcmzTwI73GfYQR/sM/Mnreb02wio3NTmM+1OqnX+i8EnPLTSVMEC69z9eCPAYjAXmMktAiqz+vk2QyRUktZZjMWCWcPNBzJb8TDzJ6WnZeBoavAK1HTLVegfBZGowNnCu/EjulkjUSWPDN4/EF5bqBlHO2iOjxZ3Flt0D1IYqxqs2QyloUZ7u4Uq54MKuvXHMzpx9CiKMlv2O7rkL7vblq2X2SXatscz7ZrmrRixlhWNV1pj/M11BMdpxMty2ydZEnC7LKcTmLGz9PhPQaTKTbMZFbQBvzx75KKeChrQz6GwH/c693XMSQJVFgQa+vjxNfIuO1J6g0MlLlQslEHxDHz76J4tAlIjH5HWeEkA9nvURK0+/OgZOEwTQyUTfumb+YqExTiXP2BivpMcwHXe/c=----ATTACHMENT:----NjM3NDM0MDU2NjEzMjc0MyA0NjU2OTg2MzE3OTM3NzA4IDMwODQzMjk1NDAzNDI4NDU=