| 12345678910111213141516171819202122232425262728293031323334353637383940 | package coreimport (	"io"	"io/ioutil"	"v2ray.com/core/common"	"github.com/golang/protobuf/proto")type ConfigLoader func(input io.Reader) (*Config, error)var configLoaderCache = make(map[ConfigFormat]ConfigLoader)func 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}func init() {	RegisterConfigLoader(ConfigFormat_Protobuf, LoadProtobufConfig)}
 |