code: func (daemon *Daemon) ShutdownTimeout() int {
  	shutdownTimeout := daemon.configStore.ShutdownTimeout
  	if shutdownTimeout < 0 {
  		return -1
  	}
  	if daemon.containers == nil {
  		return shutdownTimeout
  	}
  
  	graceTimeout := 5
  	for _, c := range daemon.containers.List() {
  		stopTimeout := c.StopTimeout()
  		if stopTimeout < 0 {
  			return -1
  		}
  		if stopTimeout+graceTimeout > shutdownTimeout {
  			shutdownTimeout = stopTimeout + graceTimeout
  		}
  	}
  	return shutdownTimeout
  }
docs: // ShutdownTimeout returns the timeout (in seconds) before containers are forcibly
  // killed during shutdown. The default timeout can be configured both on the daemon
  // and per container, and the longest timeout will be used. A grace-period of
  // 5 seconds is added to the configured timeout.
  //
  // A negative (-1) timeout means "indefinitely", which means that containers
  // are not forcibly killed, and the daemon shuts down after all containers exit.