code: func DefaultConfig() *Config {
  	hostname, err := os.Hostname()
  	if err != nil {
  		panic(err)
  	}
  
  	return &Config{
  		NodeName:                     hostname,
  		BroadcastTimeout:             5 * time.Second,
  		LeavePropagateDelay:          1 * time.Second,
  		EventBuffer:                  512,
  		QueryBuffer:                  512,
  		LogOutput:                    os.Stderr,
  		ProtocolVersion:              4,
  		ReapInterval:                 15 * time.Second,
  		RecentIntentTimeout:          5 * time.Minute,
  		ReconnectInterval:            30 * time.Second,
  		ReconnectTimeout:             24 * time.Hour,
  		QueueCheckInterval:           30 * time.Second,
  		QueueDepthWarning:            128,
  		MaxQueueDepth:                4096,
  		TombstoneTimeout:             24 * time.Hour,
  		FlapTimeout:                  60 * time.Second,
  		MemberlistConfig:             memberlist.DefaultLANConfig(),
  		QueryTimeoutMult:             16,
  		QueryResponseSizeLimit:       1024,
  		QuerySizeLimit:               1024,
  		EnableNameConflictResolution: true,
  		DisableCoordinates:           false,
  		UserEventSizeLimit:           512,
  	}
  }
docs: // DefaultConfig returns a Config struct that contains reasonable defaults
  // for most of the configurations.