| 123456789101112131415161718192021222324252627282930313233343536 | package coreimport (	"io"	"io/ioutil"	"v2ray.com/core/common"	"github.com/golang/protobuf/proto")type ConfigLoader func(input io.Reader) (*Config, error)var configLoaderCache map[ConfigFormat]ConfigLoaderfunc RegisterConfigLoader(format ConfigFormat, loader ConfigLoader) error {	configLoaderCache[format] = loader	return nil}func LoadConfig(format ConfigFormat, input io.Reader) (*Config, error) {	loader, found := configLoaderCache[format]	if !found {		return nil, common.ErrBadConfiguration	}	return loader(input)}func LoadProtobufConfig(input io.Reader) (*Config, error) {	config := new(Config)	data, _ := ioutil.ReadAll(input)	if err := proto.Unmarshal(data, config); err != nil {		return nil, err	}	return config, nil}
 |