/**
  * @param HttpRequest $request
  *
  * @return bool
  */
 public function resolve(HttpRequest $request)
 {
     /**
      * pre-filter to match request
      */
     if (KENDO_PROFILER) {
         $profilerKey = app()->profiler()->start('request', 'routing.resolve', $request->getPath());
     }
     $path = $request->getPath();
     $host = null;
     $result = new RoutingResult([]);
     $matched = false;
     // ensure it's not children
     foreach ($this->masters as $name => $route) {
         if (!$route->resolve($path, $host, $result)) {
             continue;
         }
         $vars = $result->getVars();
         $request->setControllerName($vars[HttpRequest::CONTROLLER_KEY]);
         $request->setActionName($vars[HttpRequest::ACTION_KEY]);
         unset($vars[HttpRequest::CONTROLLER_KEY], $vars[HttpRequest::ACTION_KEY]);
         $request->setParams($vars);
         $matched = true;
         break;
     }
     if (!$matched) {
         $request->setControllerName('Platform\\Core\\Controller\\ErrorController');
         $request->setActionName('404');
     }
     if (KENDO_PROFILER and !empty($profilerKey)) {
         app()->profiler()->stop($profilerKey);
     }
     return true;
 }